<?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>226433</bug_id>
          
          <creation_ts>2021-05-29 22:36:56 -0700</creation_ts>
          <short_desc>Remove WTF::Optional synonym for std::optional, using that class template directly instead</short_desc>
          <delta_ts>2021-06-01 20:56:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226437</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765185</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-29 22:36:56 -0700</bug_when>
    <thetext>Remove WTF::Optional synonym for std::optional, using that class template directly instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765190</commentid>
    <comment_count>1</comment_count>
      <attachid>430130</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-29 23:02:49 -0700</bug_when>
    <thetext>Created attachment 430130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765191</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-29 23:05:10 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API

This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765196</commentid>
    <comment_count>3</comment_count>
      <attachid>430131</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-29 23:31:09 -0700</bug_when>
    <thetext>Created attachment 430131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765197</commentid>
    <comment_count>4</comment_count>
      <attachid>430131</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 23:37:49 -0700</bug_when>
    <thetext>Comment on attachment 430131
Patch

R=me once the bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765200</commentid>
    <comment_count>5</comment_count>
      <attachid>430132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-30 00:02:43 -0700</bug_when>
    <thetext>Created attachment 430132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765213</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-30 09:12:09 -0700</bug_when>
    <thetext>Committed r278253 (238290@main): &lt;https://commits.webkit.org/238290@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430132.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765214</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-30 09:13:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78664888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765229</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-30 12:02:53 -0700</bug_when>
    <thetext>Seems to have broken the Windows build:
https://build.webkit.org/#/builders/67/builds/3216/steps/8/logs/errors

The issue is not super obvious to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765232</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-30 12:10:15 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Seems to have broken the Windows build:
&gt; https://build.webkit.org/#/builders/67/builds/3216/steps/8/logs/errors
&gt; 
&gt; The issue is not super obvious to me.

The include is there so I am wondering if there is a `#define optional` somewhere that is polluting us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765236</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-30 12:37:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; Seems to have broken the Windows build:
&gt; &gt; https://build.webkit.org/#/builders/67/builds/3216/steps/8/logs/errors
&gt; &gt; 
&gt; &gt; The issue is not super obvious to me.
&gt; 
&gt; The include is there so I am wondering if there is a `#define optional`
&gt; somewhere that is polluting us?

Or maybe that bot just needs a clean build. Some of the build output still refers to &quot;Optional&quot;:
&apos;Inspector::Protocol::Helpers::Optional&apos;: definition of dllimport data not allowed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765253</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-30 13:51:38 -0700</bug_when>
    <thetext>Maybe Windows uses a different &quot;erb&quot; file? The EWS Windows build didn’t fail, though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765255</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-30 13:57:26 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Maybe Windows uses a different &quot;erb&quot; file? The EWS Windows build didn’t
&gt; fail, though!

And the boy recovered on its own on the next build. It was an incremental build issue I believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765703</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 12:04:43 -0700</bug_when>
    <thetext>Follow-up build fix in &lt;https://commits.webkit.org/r278319&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765704</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-01 12:09:48 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Follow-up build fix in &lt;https://commits.webkit.org/r278319&gt;.

And &lt;https://commits.webkit.org/r278320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765841</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-01 18:09:01 -0700</bug_when>
    <thetext>Very nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765860</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-01 20:43:49 -0700</bug_when>
    <thetext>Will the style checker tell me if I use the old thing? A webkit-dev email is probably justified too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765861</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 20:45:37 -0700</bug_when>
    <thetext>We can add it to the style checker, but also it won’t compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765862</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-01 20:47:58 -0700</bug_when>
    <thetext>Not compiling seems sufficient. But a webkit-dev heads-up would be welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765864</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-01 20:56:17 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #18)
&gt; Not compiling seems sufficient. But a webkit-dev heads-up would be welcome.

https://lists.webkit.org/pipermail/webkit-dev/2021-June/031875.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430130</attachid>
            <date>2021-05-29 23:02:49 -0700</date>
            <delta_ts>2021-05-29 23:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226433-20210529230246.patch</filename>
            <type>text/plain</type>
            <size>5038284</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZDQ4MDk3YTY4NGU4NWEwM2RmZTFhNmU0MjBhNDhhYjgxZWM3Y2E1Li5lZDA2OTFjMTk5NGE5ZTM2
YzgwYWI3OGQwYzk0ODQ1YzU3NmRmZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwg
dXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRo
ZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRp
b25hbDw+LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9y
X3BheWxvYWQpOiBVc2UgYXV0byBpbnN0ZWFkCisgICAgICAgIG9mIE9wdGlvbmFsPD4uIEFsc28g
dXNlICogaW5zdGVhZCBvZiB2YWx1ZSgpIGFuZCBuZXN0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBs
b2NhbCBpbnNpZGUgYW4gaWYKKyAgICAgICAgc3RhdGVtZW50IGluIHRoZSBjYXNlIHdoZXJlIGl0
J3MgYW4gb3B0aW9uYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC8qOiBSZWdlbmVyYXRlZCB0aGVzZSByZXN1bHRzLgorCiAyMDIxLTA1LTI4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGllbnRzIG9mIG9wdGlvbmFsIHNo
b3VsZCB1c2UgaGFzX3ZhbHVlIGluc3RlYWQgb2YgcmVseWluZyBvbiBoYXNWYWx1ZSBtYWNybwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCA4MmRkNmRmNzkyY2JiYTExOTlhMWQzYTJlMDM3OGMxYjk2MGEzMmMxLi5mNGY5MjhmYzI3
OTM0ZmQzMmM1NDM3OTE0MWY0YjJjMzI4MzJmMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIx
LTA1LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
V1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBzdGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNz
IHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMworCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBMZXQg
dGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUgT3B0aW9uYWw8PiB0byBzdGQ6Om9w
dGlvbmFsPD4uCisKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDogUmVtb3ZlIFdURjo6T3B0aW9u
YWwuCisKIDIwMjEtMDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENsaWVudHMgb2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIGhhc1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFlZDA0OGYyMWFmY2EwYWUz
MzE5ZmIwZTQwNjJmZjI3NGE3NWE2MC4uNzNmMmQ4NWE5YTc2OGNkZmIzMDlmMjA4NzcyNDAxMDEw
NGQxMjM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBz
eW5vbnltIGZvciBzdGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVj
dGx5IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogPG1hbnkgZmlsZXM+OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5h
bWUgT3B0aW9uYWw8PiB0byBzdGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEtMDUtMjkgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IGNhbGMoKSByZWxhdGVkIGZp
bGVzIGludG8gMS1jbGFzcyBwZXIgZmlsZSBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4
IDQ2M2YwNTFhNGViOTUwOTk0MTZhMWE1YTBlNGZmMmMxYTgyZDAyMzkuLmY3M2YyMmFiZTRjZmQ2
NTU5YjU0ZGU0YTdlN2E3MjdhNmJhMDAzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDIxLTA1LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBzdGQ6Om9wdGlvbmFsLCB1c2lu
ZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBMZXQgdGhlIGRv
LXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUgT3B0aW9uYWw8PiB0byBzdGQ6Om9wdGlvbmFs
PD4uCisKIDIwMjEtMDUtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBTaG93IGNvbnRleHQgbWVudSB3aGVuIGNsaWNraW5nIG9uIGRh
dGEgZGV0ZWN0aW9uIHJlc3VsdHMgaW4gaW1hZ2Ugb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXgg
YjZjMzcyNTcwZWMxMmU0MWNlZTA2OGE1YjA0M2E0ZDE5ODE3ODcwNS4uZWNiZDNlNjI3MzkzMTBh
NWViNGZjM2E1ODk1MDI2ZjI2ZDFjODVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhh
dCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBkby13ZWJj
b3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25hbDw+Lgor
CiAyMDIxLTA1LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBD
bGllbnRzIG9mIG9wdGlvbmFsIHNob3VsZCB1c2UgaGFzX3ZhbHVlIGluc3RlYWQgb2YgcmVseWlu
ZyBvbiBoYXNWYWx1ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0M2E2ZGU0ZjNmNWMwMjJjOWI2OTkxYmE4
MWUxMDQ3YTAyNWQ5MzQzLi5lODJlNjQzZjUyYzY0OTcyYjM2NzJmMzE2YmIwZDA1MTdmYWRhODc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZv
ciBzdGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3Rl
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1h
bnkgZmlsZXM+OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUgT3B0aW9u
YWw8PiB0byBzdGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEtMDUtMjggIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMgb2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBo
YXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGhhc1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggZTE4NmYzY2M4MzBhMzBkODhhNGYzY2RlNDVkYmU0MmI2NDIw
ZGVlOS4uZjRmNDliMzU3MjgyYTc5NjgzZTNlZTQyNjU5OTZmYjVhMDg0ZjI1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTI5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBz
eW5vbnltIGZvciBzdGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVj
dGx5IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6IExldCB0aGUgZG8td2Vi
Y29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZQorICAgICAgICBPcHRpb25hbDw+IHRvIHN0ZDo6b3B0
aW9uYWw8Pi4KKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0b3AgdXNpbmcgaG9sZExvY2soKSBpbiBXZWJLaXQvV2ViS2l0TGVnYWN5L1Rv
b2xzIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBhbmFs
eXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ZWMyMjg0MTY3N2FlZWNmNDc4
MWMzZmZhNTdiY2MwMDFiZjMwNGUuLmUwMDUzOWQ2MGY5NGZkMTUzYjI0NjUwNDU0MjQwYmNiZTUy
MTM5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhhdCBjbGFz
cyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBkby13ZWJjb3JlLXJl
bmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25hbDw+LgorCiAyMDIx
LTA1LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXh0IHN0
ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdo
IFdURjo6T3B0aW9uYWwgdHlwZWRlZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDYz
ZGI5YTIxNTk1NTBiODU0N2NhNDkwYWZhZmE2YzU2NGQ5N2I5ZmMuLmNmMGZkNmMwNjllNDIyOTRk
ZGFkZWFiM2QwZjVmZmZiYzAzNzZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25h
bCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0
IHRoZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpv
cHRpb25hbDw+LgorCiAyMDIxLTA1LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkg
aW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwgdHlwZWRlZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA0
NDhhYmViYWNlNzhiMTNhNTcwMDc1YzI1OGYwNGY4ZjNlYjVkZjhmLi40NzMxYTRkMTcyZjY5MWM5
YzcwMGExNTJhZmM2MjcxMzAyNTc1ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNDM0LDcgKzQzNCw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ZpbmFsX3Y8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+PiwgIkVuc3VyZSBubyBkZXJpdmVk
IGNsYXNzZXMgaGF2ZSBjdXN0b20gZGVsZXRlUHJvcGVydHlCeUluZGV4IGltcGxlbWVudGF0aW9u
Iik7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgUGFy
ZW50OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRl
eC52YWx1ZSgpKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBQYXJlbnQ6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJh
Y2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJh
Y2tGdW5jdGlvbi5jcHAKaW5kZXggMTgwNGJmZTlmM2U4NmY4N2Y5MjVmYTk2NWYwODk0NWYxYjcx
ZjAxNS4uZmJjMjE3NjRiYzcyMTExMjNjMDUzM2Y5YTYzOGE4YWUzNGY0ZTViMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9u
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0
SlNDQ2FsbGJhY2tGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVy
biBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3RJbXBsPEpTQ0NhbGxiYWNrRnVuY3Rpb24+
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKIH0KIAotSlNDQ2FsbGJhY2tGdW5jdGlvbiogSlND
Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIEpTQ0NsYXNzKiBqc2NDbGFzcywg
R1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJlLCBHVHlwZSByZXR1cm5UeXBlLCBPcHRpb25hbDxW
ZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCitKU0NDYWxsYmFja0Z1bmN0aW9uKiBKU0NDYWxs
YmFja0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFR5cGUgdHlwZSwgSlNDQ2xhc3MqIGpzY0NsYXNzLCBHUmVm
UHRyPEdDbG9zdXJlPiYmIGNsb3N1cmUsIEdUeXBlIHJldHVyblR5cGUsIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5nbGliQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpT
Q0NhbGxiYWNrRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNDQ2FsbGJhY2tGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ0NhbGxiYWNrRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSwgdHlwZSwganNjQ2xhc3MsIFdURk1vdmUoY2xvc3VyZSksIHJldHVyblR5cGUsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwpAQCAtNzMsNyArNzMsNyBAQCBKU0NDYWxsYmFja0Z1bmN0aW9u
KiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotSlNDQ2FsbGJhY2tGdW5jdGlvbjo6SlND
Q2FsbGJhY2tGdW5jdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUeXBlIHR5cGUs
IEpTQ0NsYXNzKiBqc2NDbGFzcywgR1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJlLCBHVHlwZSBy
ZXR1cm5UeXBlLCBPcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCitKU0NDYWxs
YmFja0Z1bmN0aW9uOjpKU0NDYWxsYmFja0Z1bmN0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFR5cGUgdHlwZSwgSlNDQ2xhc3MqIGpzY0NsYXNzLCBHUmVmUHRyPEdDbG9zdXJlPiYm
IGNsb3N1cmUsIEdUeXBlIHJldHVyblR5cGUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4m
JiBwYXJhbWV0ZXJzKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxs
SlNDQ2FsbGJhY2tGdW5jdGlvbiwgdHlwZSA9PSBUeXBlOjpDb25zdHJ1Y3RvciA/IGNvbnN0cnVj
dEpTQ0NhbGxiYWNrRnVuY3Rpb24gOiBudWxscHRyKQogICAgICwgbV9mdW5jdGlvbkNhbGxiYWNr
KGNhbGxBc0Z1bmN0aW9uKQogICAgICwgbV9jb25zdHJ1Y3RDYWxsYmFjayhjYWxsQXNDb25zdHJ1
Y3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJh
Y2tGdW5jdGlvbi5oCmluZGV4IGU1YTVlZTUzZDIwYWE1ODg0OWQ3MDQzYmJkNmRjYzNhMThlYzhk
MjEuLjg4M2JjMDcxYTMwODkwMzkzMDZhZjEwMGE3ZmRmYmMwNzIxOTIzYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnN0cnVjdG9yCiAgICAgfTsKIAot
ICAgIHN0YXRpYyBKU0NDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgVHlwZSwgSlNDQ2xhc3MqLCBHUmVmUHRyPEdDbG9zdXJl
PiYmLCBHVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJik7CisgICAgc3RhdGljIEpTQ0Nh
bGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBUeXBlLCBKU0NDbGFzcyosIEdSZWZQdHI8R0Nsb3N1cmU+JiYsIEdUeXBlLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Qo
SlNDb250ZXh0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBKU0NDYWxs
YmFja0Z1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHlwZSwgSlNDQ2xhc3MqLCBHUmVmUHRyPEdD
bG9zdXJlPiYmLCBHVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJik7CisgICAgSlNDQ2Fs
bGJhY2tGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxH
Q2xvc3VyZT4mJiwgR1R5cGUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJik7CiAKICAg
ICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0
dXJuIG1fZnVuY3Rpb25DYWxsYmFjazsgfQogICAgIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JD
YWxsYmFjayBjb25zdHJ1Y3RDYWxsYmFjaygpIHsgcmV0dXJuIG1fY29uc3RydWN0Q2FsbGJhY2s7
IH0KQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEpTQ0NsYXNzPiBtX2Ns
YXNzOwogICAgIEdSZWZQdHI8R0Nsb3N1cmU+IG1fY2xvc3VyZTsKICAgICBHVHlwZSBtX3JldHVy
blR5cGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4gbV9wYXJhbWV0ZXJzOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4gbV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlND
Q2xhc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcApp
bmRleCBhNGUxYjU0MmJmZmM0OTY3ZWFlNzlkOTQ4OWQyYzg0MDcwZDM5NmVhLi4zZjZlODNhY2Zj
YzZkNGI0Mzc2NDNmYThmNzM4YzRmYjljNzg2ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCBKU0NDbGFzcyoganNj
X2NsYXNzX2dldF9wYXJlbnQoSlNDQ2xhc3MqIGpzY0NsYXNzKQogICAgIHJldHVybiBqc2NDbGFz
cy0+cHJpdi0+cGFyZW50Q2xhc3M7CiB9CiAKLXN0YXRpYyBHUmVmUHRyPEpTQ1ZhbHVlPiBqc2ND
bGFzc0NyZWF0ZUNvbnN0cnVjdG9yKEpTQ0NsYXNzKiBqc2NDbGFzcywgY29uc3QgY2hhciogbmFt
ZSwgR0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSwgR0Rlc3Ryb3lOb3RpZnkg
ZGVzdHJveU5vdGlmeSwgR1R5cGUgcmV0dXJuVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4m
JiBwYXJhbWV0ZXJzKQorc3RhdGljIEdSZWZQdHI8SlNDVmFsdWU+IGpzY0NsYXNzQ3JlYXRlQ29u
c3RydWN0b3IoSlNDQ2xhc3MqIGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhY2sg
Y2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5
LCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1l
dGVycykKIHsKICAgICAvLyBJZiB0aGUgY29uc3RydWN0b3IgZG9lc24ndCBoYXZlIGFyZ3VtZW50
cywgd2UgbmVlZCB0byBzd2FwIHRoZSBmYWtlIGluc3RhbmNlIGFuZCB1c2VyIGRhdGEgdG8gZW5z
dXJlCiAgICAgLy8gdXNlciBkYXRhIGlzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgYW5kIGZha2UgaW5z
dGFuY2UgaWdub3JlZC4KQEAgLTcwMSw3ICs3MDEsNyBAQCBKU0NWYWx1ZSoganNjX2NsYXNzX2Fk
ZF9jb25zdHJ1Y3Rvcl92YXJpYWRpYyhKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5h
bQogICAgIHJldHVybiBqc2NDbGFzc0NyZWF0ZUNvbnN0cnVjdG9yKGpzY0NsYXNzLCBuYW1lID8g
bmFtZSA6IHByaXYtPm5hbWUuZGF0YSgpLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3Rp
ZnksIHJldHVyblR5cGUsIHN0ZDo6bnVsbG9wdCkubGVha1JlZigpOwogfQogCi1zdGF0aWMgdm9p
ZCBqc2NDbGFzc0FkZE1ldGhvZChKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5hbWUs
IEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRl
c3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYg
cGFyYW1ldGVycykKK3N0YXRpYyB2b2lkIGpzY0NsYXNzQWRkTWV0aG9kKEpTQ0NsYXNzKiBqc2ND
bGFzcywgY29uc3QgY2hhciogbmFtZSwgR0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2Vy
RGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeSwgR1R5cGUgcmV0dXJuVHlwZSwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCiB7CiAgICAgSlNDQ2xhc3NQ
cml2YXRlKiBwcml2ID0ganNjQ2xhc3MtPnByaXY7CiAgICAgR1JlZlB0cjxHQ2xvc3VyZT4gY2xv
c3VyZSA9IGFkb3B0R1JlZihnX2NjbG9zdXJlX25ldyhjYWxsYmFjaywgdXNlckRhdGEsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Nsb3N1cmVOb3RpZnk+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihk
ZXN0cm95Tm90aWZ5KSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFs
dWUuY3BwCmluZGV4IDM1OTFiYjc5MjQ0NDUyNTFjNTkyN2VhY2IyZmUyODg5MmFmYzUwNmMuLmRh
OWE5ZjZmZTNiYTBlNDYwODljNWE5YTRkNTliNmQ1ZmE5NGI0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgdm9p
ZCBqc2NfdmFsdWVfb2JqZWN0X2RlZmluZV9wcm9wZXJ0eV9hY2Nlc3NvcihKU0NWYWx1ZSogdmFs
dWUsIGNvbnN0IGNoYXIqIHByb3AKICAgICB9CiB9CiAKLXN0YXRpYyBHUmVmUHRyPEpTQ1ZhbHVl
PiBqc2NWYWx1ZUZ1bmN0aW9uQ3JlYXRlKEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIq
IG5hbWUsIEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90
aWZ5IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlw
ZT4+JiYgcGFyYW1ldGVycykKK3N0YXRpYyBHUmVmUHRyPEpTQ1ZhbHVlPiBqc2NWYWx1ZUZ1bmN0
aW9uQ3JlYXRlKEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIG5hbWUsIEdDYWxsYmFj
ayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3Rp
ZnksIEdUeXBlIHJldHVyblR5cGUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJh
bWV0ZXJzKQogewogICAgIEdSZWZQdHI8R0Nsb3N1cmU+IGNsb3N1cmU7CiAgICAgLy8gSWYgdGhl
IGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhcmd1bWVudHMsIHdlIG5lZWQgdG8gc3dhcCB0aGUgZmFr
ZSBpbnN0YW5jZSBhbmQgdXNlciBkYXRhIHRvIGVuc3VyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggMDhmZmQxMTI1YThmMjQ3YWYwNWQ2
MTQ2NzgwNmMyMjgzYzZlMGQyNy4uYTUwOGQ4ZGVkMWViMzc0YjdhNjM3ODZmN2E3N2JjZWJmMDU3
ZGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpjbGVhclByb2ZpbGVTdGF0
aXN0aWNzKCkKICAgICB9CiB9CiAKLXZvaWQgTGlua0J1ZmZlcjo6ZHVtcFByb2ZpbGVTdGF0aXN0
aWNzKE9wdGlvbmFsPFByaW50U3RyZWFtKj4gb3V0U3RyZWFtKQordm9pZCBMaW5rQnVmZmVyOjpk
dW1wUHJvZmlsZVN0YXRpc3RpY3Moc3RkOjpvcHRpb25hbDxQcmludFN0cmVhbSo+IG91dFN0cmVh
bSkKIHsKICAgICBzdHJ1Y3QgU3RhdCB7CiAgICAgICAgIFByb2ZpbGUgcHJvZmlsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggODE1ZGNmODcz
NzRhYTNiMzU3OTg5ZGY2N2ZlNzJiYTk0MGIzM2E1OS4uYTE0Mzk0ODVmZGM2MTVhNDY1MmYwMTU0
MjMwYTE1ZjI0N2QwMDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRBbHJl
YWR5RGlzYXNzZW1ibGUoKSB7IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUHJvZmlsZVN0YXRpc3RpY3MoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3RpY3Mo
T3B0aW9uYWw8UHJpbnRTdHJlYW0qPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGVTdGF0aXN0aWNzKHN0ZDo6b3B0aW9uYWw8UHJp
bnRTdHJlYW0qPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgYWRkTWFpblRocmVhZEZpbmFsaXphdGlvblRhc2soY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNTdkNWI5NGY3Yjg1MjRkMTkxMjM2YzFlZGVlOWQ5
Zjg1ZGUwYTdkMC4uODkzMDAxMzcyOTBkOTZlOGZkN2NhYTU2YWNiMmE0NDkwMjM5NWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKQEAgLTQwNDQsNyArNDA0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbGF0aW9uYWxDb25kaXRpb24+KEFzc2VtYmxlcjo6aW52ZXJ0KHN0YXRpY19j
YXN0PEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBP
cHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdENv
bmRpdGlvbj4gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICAgICAgY2FzZSBFcXVh
bDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAppbmRleCA0OGU5NTBlOWM4ZTQxY2RjYmQ2ZjU0NzNkZjYzZjQ1
OGE1YTkxODVjLi45MzMzNzg5NGQwN2YwMjNmNGViMDU0M2Q0ZjUzYjE1ODE0OTE4ZGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCkBAIC0zMTA4LDcgKzMxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29t
cGFyZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rl
c3QoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25k
KSB7CiAgICAgICAgIGNhc2UgRXF1YWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hl
Y2tTcGVjaWFsLmNwcAppbmRleCBjMjdmYjRjMTM0YTE0NmVlOGJlODE5OTRkMmMxMmE5ZTMyNjM0
Njc0Li5jMmRmNjIyYjUxYWM1NDk5M2EzYWMxOWEwNDA1MTIzYWUyYTZiYTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBJbnN0IENoZWNrU3BlY2lhbDo6aGlkZGVuQnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0
CiB2b2lkIENoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRM
YW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CiAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKLSAgICBPcHRpb25hbDxXaWR0aD4gb3B0aW9uYWxEZWZBcmdXaWR0aDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoOwogICAgIEluc3QgaGlk
ZGVuID0gaGlkZGVuQnJhbmNoKGluc3QpOwogICAgIGhpZGRlbi5mb3JFYWNoQXJnKAogICAgICAg
ICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkg
ewpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQ2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3Qm
IGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhCiAgICAgICAgICAg
ICBjYWxsYmFjayhpbnN0LmFyZ3NbMSArIGluZGV4XSwgcm9sZSwgYmFuaywgd2lkdGgpOwogICAg
ICAgICB9KTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXg7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4OwogICAg
IGlmIChtX2NoZWNrS2luZC5vcGNvZGUgPT0gQnJhbmNoQWRkMzIgfHwgbV9jaGVja0tpbmQub3Bj
b2RlID09IEJyYW5jaEFkZDY0KQogICAgICAgICBmaXJzdFJlY292ZXJhYmxlSW5kZXggPSAxOwog
ICAgIGZvckVhY2hBcmdJbXBsKG51bUIzQXJncyhpbnN0KSwgbV9udW1DaGVja0FyZ3MgKyAxLCBp
bnN0LCBtX3N0YWNrbWFwUm9sZSwgZmlyc3RSZWNvdmVyYWJsZUluZGV4LCBjYWxsYmFjaywgb3B0
aW9uYWxEZWZBcmdXaWR0aCk7CkBAIC0xNTAsOSArMTUwLDkgQEAgYm9vbCBDaGVja1NwZWNpYWw6
OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkK
ICAgICByZXR1cm4gYWRtaXRzU3RhY2soaW5zdCwgYXJnSW5kZXgpOwogfQogCi1PcHRpb25hbDx1
bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQor
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0Rl
ZihJbnN0JiBpbnN0KQogewotICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnJhbmNoRGVmID0g
aGlkZGVuQnJhbmNoKGluc3QpLnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGJyYW5jaERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91bGRU
cnlBbGlhc2luZ0RlZigpKQogICAgICAgICByZXR1cm4gKmJyYW5jaERlZiArIDE7CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVj
aWFsLmgKaW5kZXggNzU5YTliN2RhMTI2YTY5N2UwZTg0YWQ4OGM4NzcwYWIxYjAxZDI1NC4uODBk
ZjAwNDM1M2E2YWI0OWI0YWJhYjFhNjdlMWY5ZjE3MDY5ZjU1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNWYWxpZChBaXI6Okluc3QmKSBmaW5hbDsKICAgICBib29sIGFkbWl0c1N0YWNr
KEFpcjo6SW5zdCYsIHVuc2lnbmVkIGFyZ0luZGV4KSBmaW5hbDsKICAgICBib29sIGFkbWl0c0V4
dGVuZGVkT2Zmc2V0QWRkcihBaXI6Okluc3QmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5zdCYpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5zdCYp
IGZpbmFsOwogCiAgICAgLy8gTk9URTogdGhlIGdlbmVyYXRlIG1ldGhvZCB3aWxsIGdlbmVyYXRl
IHRoZSBoaWRkZW4gYnJhbmNoIGFuZCB0aGVuIHJlZ2lzdGVyIGEgTGF0ZVBhdGggdGhhdAogICAg
IC8vIGdlbmVyYXRlcyB0aGUgc3RhY2ttYXAuIFN1cGVyIGNyYXp5IGR1ZGUhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29tbW9uLmNwcAppbmRleCBiMGViYTVhNDEzMjBkZTg3NjgzODdjNDg5MTg3
YmY3M2RhZTNlMmJlLi41OGMxNWYwNGJkNzkyNWMzOTJlZjg0YWUwNmM3MjE3NmU4MTJlNTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9v
bCBzaG91bGRTYXZlSVJCZWZvcmVQaGFzZSgpCiAgICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VW
YWxpZGF0aW9uRmFpbHVyZSgpOwogfQogCi1PcHRpb25hbDxHUFJSZWc+IHBpbm5lZEV4dGVuZGVk
T2Zmc2V0QWRkclJlZ2lzdGVyKCkKK3N0ZDo6b3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRFeHRlbmRl
ZE9mZnNldEFkZHJSZWdpc3RlcigpCiB7CiAjaWYgQ1BVKEFSTTY0KQogICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9u
LmgKaW5kZXggNjJlOTcxZTkxNjk1MjUwMTQyZTFmMzI1Njg0YTA1ZTNhYTA0ZDVkMC4uNjQ4ZGVi
OWYxZGZhY2Q2ZjEwYzBkZmFjMTk0YTcxZTMwNGY5MGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29tbW9uLmgKQEAgLTE4Myw3ICsxODMsNyBAQCBpbmxpbmUgdW5zaWduZWQgZGVmYXVsdE9w
dExldmVsKCkKICAgICByZXR1cm4gT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKTsKIH0KIAot
T3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRFeHRlbmRlZE9mZnNldEFkZHJSZWdpc3RlcigpOworc3Rk
OjpvcHRpb25hbDxHUFJSZWc+IHBpbm5lZEV4dGVuZGVkT2Zmc2V0QWRkclJlZ2lzdGVyKCk7CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCmluZGV4IGI5N2IyODUwNzJmNTNlN2E1ZDQ5NWVkMDE2NDI3NjNjNDRiMGYy
YmIuLmViMmVmZDA2YTZiY2NkMDVlNWM5MThmNmE4OGZlYzM2YzU5MDczZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFs
dWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2NhbGVGb3JT
aGwoVmFsdWUqIHNobCwgSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBz
aGwsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0
KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2RlKCkgIT0gU2hsKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU0NSw3ICs1NDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgVmFsdWUqIHJpZ2h0ID0gYWRkcmVzcy0+Y2hpbGQoMSk7CiAKICAgICAgICAgICAgIGF1
dG8gdHJ5SW5kZXggPSBbJl0gKFZhbHVlKiBpbmRleCwgVmFsdWUqIGJhc2UpIC0+IEFyZyB7Ci0g
ICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoaW5k
ZXgsIG9mZnNldCwgd2lkdGgpOworICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoaW5kZXgsIG9mZnNldCwgd2lkdGgpOwogICAgICAgICAg
ICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoaW5kZXgtPmNoaWxkKDApKSB8fCBt
X2xvY2tlZC5jb250YWlucyhiYXNlKSkKQEAgLTIxMDQsNyArMjEwNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5U2hsID0gWyZdIChWYWx1ZSogc2hs
LCBWYWx1ZSogb3RoZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHNjYWxlID0gc2NhbGVGb3JTaGwoc2hsLCBvZmZzZXQpOworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChzaGwsIG9mZnNldCk7CiAgICAgICAg
ICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGlmICghY2FuQmVJbnRlcm5hbChzaGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5jcHAKaW5kZXggN2MyZmEwYzA5MjQ4Y2E3ZmNhNGY0NzY1ZTAyNmU0YjJlZjQ5MjE2MS4uYjg5
MzRmM2ZmNDUxNTY4ZTkyNmJmMDY4ZjdiNTU4MmRjOWJiNGVhZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIElHTk9SRV9SRVRVUk5fVFlQRV9X
QVJOSU5HU19CRUdJTgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotT3B0aW9u
YWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQorc3Rk
OjpvcHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICBjYXNlIEVxdWFsOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCA4ZTZhMjRhNTc2NjQ4NTlkYTZmNWNjM2RlYzgwYjgw
YmRjMDk2N2Q3Li4xZGNjODZhM2FlYTQ1MzBlOWQxZmFmZDg3MTMwMTJmY2NiNzVhNmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMzgxLDcgKzM4MSw3IEBAIGlubGluZSBi
b29sIGlzQ2hlY2tNYXRoKE9wY29kZSBvcGNvZGUpCiAgICAgfQogfQogCi1PcHRpb25hbDxPcGNv
ZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOworc3RkOjpvcHRpb25hbDxPcGNvZGU+
IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOwogCiBpbmxpbmUgT3Bjb2RlIGNvbnN0UHRy
T3Bjb2RlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZUxvb3BTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29w
U3RyZW5ndGguY3BwCmluZGV4IDRhNzQ4YTc2NDM1NTc5NmYyNzMyZGU5M2QyOWUwMzM2MGU5YTlj
OGEuLmM1YWVkNDRiZDdlMDYzYTJlOTk5N2NkNDhlYjM2NGQyZmRkYTQyMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcApAQCAtOTMs
MTAgKzkzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nTG4oIkZvdW5kIHN0b3JlL2xvYWQ6IiwgKnN0b3JlKTsKIAotICAgICAgICBhdXRvIGV4
dHJhY3RBcnJheUluZm8gPSBbJl0gKFZhbHVlKiB2YWx1ZSkgLT4gT3B0aW9uYWw8QWRkckluZm8+
IHsKKyAgICAgICAgYXV0byBleHRyYWN0QXJyYXlJbmZvID0gWyZdIChWYWx1ZSogdmFsdWUpIC0+
IHN0ZDo6b3B0aW9uYWw8QWRkckluZm8+IHsKICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVkVmFs
dWVzLmFkZCh2YWx1ZSk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPEFkZHJJbmZvPiBhZGRyID0g
eyBBZGRySW5mbygpIH07CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEFkZHJJbmZvPiBhZGRy
ID0geyBBZGRySW5mbygpIH07CiAKICAgICAgICAgICAgIFZhbHVlKiBzdW0gPSB2YWx1ZTsKICAg
ICAgICAgICAgIGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gWkV4dDMyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggN2NjYzNiMjZiOTUzY2Fh
NTQ1Y2M5OGI5MDI4NWMyOGYxZDdjZGEwOC4uM2NkMjQyNzZmMzQzY2UwMzlhYTY3NzlkYTIxNDVi
ZTFmM2EwYmY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tt
YXBTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNw
ZWNpYWwuY3BwCkBAIC03NSw4ICs3NSw4IEBAIFJlZ2lzdGVyU2V0IFN0YWNrbWFwU3BlY2lhbDo6
ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoSW5zdCYgaW5zdCkKIAogdm9pZCBTdGFja21hcFNwZWNp
YWw6OmZvckVhY2hBcmdJbXBsKAogICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2ln
bmVkIG51bUlnbm9yZWRBaXJBcmdzLAotICAgIEluc3QmIGluc3QsIFJvbGVNb2RlIHJvbGVNb2Rl
LCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAotICAgIGNvbnN0IFNj
b3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaywgT3B0aW9uYWw8V2lk
dGg+IG9wdGlvbmFsRGVmQXJnV2lkdGgpCisgICAgSW5zdCYgaW5zdCwgUm9sZU1vZGUgcm9sZU1v
ZGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKKyAgICBj
b25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2ssIHN0ZDo6
b3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGgpCiB7CiAgICAgU3RhY2ttYXBWYWx1
ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKICAgICBBU1NFUlQo
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBT
cGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaApp
bmRleCBjOGZmOTBkMjYwNjUzNDQ5N2RkYTk0ZjNmNTdjZWNmMTQ2M2Q0MTkzLi5lNmM5MmNiZWFi
NzU5ZGRlY2M0ZWNjMTdiMmU2MDgyM2M1OGUzN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaApAQCAtNTksOCArNTksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gc3ViY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGF0LgogICAgIHZvaWQgZm9yRWFjaEFy
Z0ltcGwoCiAgICAgICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2lnbmVkIG51bUln
bm9yZWRBaXJBcmdzLAotICAgICAgICBBaXI6Okluc3QmLCBSb2xlTW9kZSwgT3B0aW9uYWw8dW5z
aWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKLSAgICAgICAgY29uc3QgU2NvcGVkTGFtYmRh
PEFpcjo6SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYsIE9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERl
ZkFyZ1dpZHRoKTsKKyAgICAgICAgQWlyOjpJbnN0JiwgUm9sZU1vZGUsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKKyAgICAgICAgY29uc3QgU2NvcGVkTGFt
YmRhPEFpcjo6SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IG9w
dGlvbmFsRGVmQXJnV2lkdGgpOwogCiAgICAgYm9vbCBpc1ZhbGlkSW1wbCgKICAgICAgICAgdW5z
aWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggYWY1MGY1NTcyZTRlZjY0YmI1
YzYzZGNkOTY0ZTU3NjBhNTdhNGZkMi4uNGVlN2VjODhmZmFhMmY4OGE3YmNjYjdjYjQzMWJhNjA1
Y2M5YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8VmFsdWUqLCB1bnNpZ25lZD4gdmFs
dWVJbkJsb2NrOwogICAgICAgICBIYXNoTWFwPFZhbHVlKiwgQmFzaWNCbG9jayo+IHZhbHVlT3du
ZXI7CiAgICAgICAgIEhhc2hNYXA8VmFsdWUqLCB1bnNpZ25lZD4gdmFsdWVJbmRleDsKLSAgICAg
ICAgSGFzaE1hcDxWYWx1ZSosIFZlY3RvcjxPcHRpb25hbDxUeXBlPj4+IGV4dHJhY3Rpb25zOwor
ICAgICAgICBIYXNoTWFwPFZhbHVlKiwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8VHlwZT4+PiBleHRy
YWN0aW9uczsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIHR1cGxlID0gMDsgdHVwbGUgPCBtX3By
b2NlZHVyZS50dXBsZXMoKS5zaXplKCk7ICsrdHVwbGUpIHsKICAgICAgICAgICAgIFZBTElEQVRF
KG1fcHJvY2VkdXJlLnR1cGxlcygpW3R1cGxlXS5zaXplKCksICgiSW4gdHVwbGUgIiwgdHVwbGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCBjZTEzNzEyMWJkOGM0ZTAy
NmI4ZmM3MDc4YmFmYjhlY2Y4MTIyYjhkLi44NjA4ZDc4N2VjYzFlNDIwYzU1ZTJlMDZiNmY0MDcz
OGY4NTY5NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC00MzQsNyAr
NDM0LDcgQEAgVmFsdWUqIFZhbHVlOjppbnZlcnRlZENvbXBhcmUoUHJvY2VkdXJlJiBwcm9jKSBj
b25zdAogewogICAgIGlmIChudW1DaGlsZHJlbigpICE9IDIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmIChPcHRpb25hbDxPcGNvZGU+IGludmVydGVkT3Bjb2RlID0gQjM6OmludmVy
dGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5cGUoKSkpIHsKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDxPcGNvZGU+IGludmVydGVkT3Bjb2RlID0gQjM6OmludmVydGVkQ29tcGFyZShvcGNv
ZGUoKSwgY2hpbGQoMCktPnR5cGUoKSkpIHsKICAgICAgICAgQVNTRVJUKCFraW5kKCkuaGFzRXh0
cmFCaXRzKCkpOwogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KCppbnZlcnRlZE9wY29k
ZSwgdHlwZSgpLCBvcmlnaW4oKSwgY2hpbGQoMCksIGNoaWxkKDEpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5k
U3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAppbmRleCAyOTBj
NDk0YzE1MjRmMTUyZGViODUzNTc4NDZkMWUyYjFhNzFjYzM2Li5lM2M2Mzg0M2YwZWJkYjcxY2I2
ZjZhY2RlMjVmMTNhYTNjZWE4YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRT
dGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIEdlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKENDYWxsSGVscGVycyYgaml0KQogICAgICAg
ICBpZiAoZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAgZGlzYXNzZW1ibGVyLT5zdGFydEJsb2Nr
KGJsb2NrLCAqbV9qaXQpOwogCi0gICAgICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gZW50cnlw
b2ludEluZGV4ID0gbV9jb2RlLmVudHJ5cG9pbnRJbmRleChibG9jaykpIHsKKyAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVudHJ5cG9pbnRJbmRleCA9IG1fY29kZS5lbnRyeXBv
aW50SW5kZXgoYmxvY2spKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jb2RlLmlzRW50cnlwb2lu
dChibG9jaykpOwogICAgICAgICAgICAgaWYgKGRpc2Fzc2VtYmxlcikKICAgICAgICAgICAgICAg
ICBkaXNhc3NlbWJsZXItPnN0YXJ0RW50cnlwb2ludCgqbV9qaXQpOyAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29s
b3JpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggMDIyZDI5OTkzNTExZDEyY2RhMzlkZDlkNWE4
YTI1NGE2MDQ5YzdlNS4uZmIyMTU3Zjk1ZjhmMWQ0NmViNzA5YTY1ZTllYjc0MmM3MDczZjNhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTE2NDAsNyArMTY0
MCw3IEBAIElHTk9SRV9HQ0NfV0FSTklOR1NfRU5ECiAgICAgICAgIG1fd29ya2xpc3RNb3Zlcy5z
dGFydEFkZGluZ0xvd1ByaW9yaXR5TW92ZXMoKTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fY29kZSkgewogICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBkZWZBcmdJbmRleCA9IGlu
c3Quc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBkZWZBcmdJbmRleCA9IGluc3Quc2hvdWxkVHJ5QWxpYXNpbmdEZWYo
KSkgewogICAgICAgICAgICAgICAgICAgICBBcmcgb3AxID0gaW5zdC5hcmdzWypkZWZBcmdJbmRl
eCAtIDJdOwogICAgICAgICAgICAgICAgICAgICBBcmcgb3AyID0gaW5zdC5hcmdzWypkZWZBcmdJ
bmRleCAtIDFdOwogICAgICAgICAgICAgICAgICAgICBBcmcgZGVzdCA9IGluc3QuYXJnc1sqZGVm
QXJnSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggNWYwYTNh
NDlkNGFiZTMzOWQ3Nzk5MzIxZWVkM2ViOGQ3NzMwMmFjNS4uNGU2ODcxNGY0YTJhYTIyZTE5NDBm
MTBhYmZjMmQwZTFmNWZjMWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CkBAIC01ODYsNyArNTg2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIElmIHlvdSBkb24n
dCBwYXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1
c2luZyB0aGUgcmlnaHQgd2lkdGguCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2ln
bmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCisgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2lnbmVkIHNjYWxlLCBzdGQ6Om9wdGlvbmFsPFdpZHRo
PiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoc2NhbGUpIHsK
ICAgICAgICAgY2FzZSAxOgpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNl
dDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRBZGRyRm9ybShJbnQgb2Zmc2V0LCBPcHRp
b25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEFkZHJGb3JtKEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKGlzWDg2KCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0
LCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIGJvb2wg
aXNWYWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgc3RkOjpvcHRpb25h
bDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoIWlzVmFs
aWRTY2FsZShzY2FsZSwgd2lkdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIy
Miw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIC8vIElmIHlvdSBkb24ndCBwYXNzIGEgd2lkdGgg
dGhlbiB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJp
Z2h0IHdpZHRoLiBCdXQKICAgICAvLyB0aGUgd2lkdGggaXMgcmVsZXZhbnQgdG8gdmFsaWRpdHks
IHNvIHBhc3NpbmcgYSBudWxsIHdpZHRoIGlzIG9ubHkgdXNlZnVsIGZvciBhc3NlcnRpb25zLiBE
b24ndAogICAgIC8vIHBhc3MgbnVsbCB3aWR0aHMgd2hlbiBjYXNjYWRpbmcgdGhyb3VnaCBBcmdz
IGluIHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciEKLSAgICBib29sIGlzVmFsaWRGb3JtKE9wdGlv
bmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKKyAgICBib29sIGlzVmFsaWRG
b3JtKHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAg
IHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnZhbGlkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggYzA0ZjA5NWNkZDYzN2Fj
ZTM2NjI3YjJlNDE4YThiYjQ0NTY2ODM2NC4uYWNjYWUyZGEyOWY5NzhkYzZlMzMxMWM5NjM2MDcy
OTRhMzkxOTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBA
IC0yMTAsNyArMjEwLDcgQEAgYm9vbCBDb2RlOjppc0VudHJ5cG9pbnQoQmFzaWNCbG9jayogYmxv
Y2spIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gQ29k
ZTo6ZW50cnlwb2ludEluZGV4KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAorc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gQ29kZTo6ZW50cnlwb2ludEluZGV4KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25z
dAogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZW50cnlwb2ludHMuc2l6ZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyeXBvaW50cy5zaXplKCk7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCBkOGVlNDEyN2I1NzMzNTQ0YjJhMTQy
MTlmN2FmMWZjOTY4NzFkNTk0Li4zZWM3YzU3ZGE2NDM0NWM0M2E2YjI3OTk3MTg4MTYxMzFkMmY0
NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMTgwLDcgKzE4
MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBGcmVxdWVudGVkQmxvY2smIGVudHJ5cG9pbnQodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlwb2ludHNbaW5kZXhdOyB9CiAgICAg
Ym9vbCBpc0VudHJ5cG9pbnQoQmFzaWNCbG9jayopIGNvbnN0OwogICAgIC8vIE5vdGU6IEl0IGlz
IG9ubHkgdmFsaWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIExvd2VyRW50cnlTd2l0Y2gu
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGVudHJ5cG9pbnRJbmRleChCYXNpY0Jsb2NrKikgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW50cnlwb2ludEluZGV4KEJhc2ljQmxv
Y2sqKSBjb25zdDsKIAogICAgIC8vIE5vdGU6IFdlIGFsbG93IHRoaXMgdG8gYmUgY2FsbGVkIGV2
ZW4gYmVmb3JlIHdlIHNldCBtX2VudHJ5cG9pbnRzIGp1c3QgZm9yIGNvbnZlbmllbmNlIHRvIHVz
ZXJzIG9mIHRoaXMgQVBJLgogICAgIC8vIEhvd2V2ZXIsIGlmIHlvdSBjYWxsIHRoaXMgYmVmb3Jl
IHNldE51bUVudHJ5cG9pbnRzLCBzZXROdW1FbnRyeXBvaW50cyB3aWxsIG92ZXJ3cml0ZSB0aGlz
IHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0
b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXggNTJi
ZWFkYWJkNDA0NzQ2YTg3Yzk3MzFhN2RlNzg1NWM1Y2ZmNDI5Zi4uMmZlMjdlMGUyZmU0MmQ1MmFj
Y2E1MjVkMjczM2MxOWYxMTkwMTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckN1c3RvbS5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBQYXRjaEN1c3RvbSB7CiAgICAgICAg
IHJldHVybiBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5hZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIo
aW5zdCwgYXJnSW5kZXgpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4g
c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5zaG91bGRUcnlBbGlhc2luZ0RlZihp
bnN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJG
aXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA5NzUwYWRmN2Y0OTBmMDkxNzc1OTMxZTUxMzFkYTQ3
M2FmMDZmOGM4Li42MjU2MTNlMzU5MDRmOTM5ZDQ1M2Q3NjQ2MjY1ZTBhMTg5N2U3NTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAKQEAgLTEyMSwxMSArMTIxLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkKICAgICAgICAgICAgICAgICAgICAgZnVu
YyhTbG90Q29uc3QoaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBpbnN0LmFyZ3NbMF0udmFsdWUo
KSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0pICYm
IGluc3QuYXJnc1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGlu
dDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAg
ICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0
ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBmdW5jKFJl
Z0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgKmNvbnN0YW50KSk7CiAgICAgICAgICAgICAgICAg
ZnVuYyhSZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5zdC5hcmdzWzBdLnN0YWNrU2xvdCgp
LCBSZWdTbG90OjpBbGxCaXRzKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc3QuYXJnc1sw
XS5pc1JlZygpICYmIGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uYWw8aW50NjRfdD4gY29uc3RhbnQgPSBtX3N0YXRlLmNvbnN0YW50Rm9yKGlu
c3QuYXJnc1swXSkpCisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
Y29uc3RhbnQgPSBtX3N0YXRlLmNvbnN0YW50Rm9yKGluc3QuYXJnc1swXSkpCiAgICAgICAgICAg
ICAgICAgICAgIGZ1bmMoU2xvdENvbnN0KGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgKmNvbnN0
YW50KSk7CiAgICAgICAgICAgICAgICAgZnVuYyhSZWdTbG90KGluc3QuYXJnc1swXS5yZWcoKSwg
aW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpBbGxCaXRzKSk7CiAgICAgICAgICAg
ICB9CkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMo
U2xvdENvbnN0KGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGluc3QuYXJnc1swXS52YWx1ZSgpKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxs
U2xvdChpbnN0LmFyZ3NbMF0pICYmIGluc3QuYXJnc1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZv
cihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAg
ICAgICAgICAgICAgICBmdW5jKFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCpjb25zdGFudCkpKTsKICAgICAgICAgICAgICAgICBmdW5jKFJlZ1Nsb3Qo
aW5zdC5hcmdzWzFdLnJlZygpLCBpbnN0LmFyZ3NbMF0uc3RhY2tTbG90KCksIFJlZ1Nsb3Q6OlpF
eHQzMikpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpbnN0LmFyZ3NbMF0uaXNSZWcoKSAmJiBp
c1NwaWxsU2xvdChpbnN0LmFyZ3NbMV0pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQor
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9z
dGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBmdW5j
KFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIHN0YXRpY19jYXN0PGludDMyX3Q+
KCpjb25zdGFudCkpKTsKICAgICAgICAgICAgICAgICBmdW5jKFJlZ1Nsb3QoaW5zdC5hcmdzWzBd
LnJlZygpLCBpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIFJlZ1Nsb3Q6Ok1hdGNoMzIpKTsKICAg
ICAgICAgICAgIH0KQEAgLTUwNCw3ICs1MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBjb25z
dGFudEZvcihjb25zdCBBcmcmIGFyZykKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBj
b25zdGFudEZvcihjb25zdCBBcmcmIGFyZykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGFy
Zy5pc1JlZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IFJlZ0NvbnN0KiBhbGlhcyA9
IGdldFJlZ0NvbnN0KGFyZy5yZWcoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyR2VuZXJhdGUuY3BwCmluZGV4IGE4YWE2YzExYmRmMTJmM2E2MjgyZDQ4MzY4MDZjMjQyY2Y2
OTE1YTkuLjRmNWM3NDA4MDBiZjYxZGU3MjU1ODQ1NTAwM2RjMDc4OTk1ZTYyZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lzdGVycyhD
b2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgaWYgKGRpc2Fzc2VtYmxlcikK
ICAgICAgICAgICAgIGRpc2Fzc2VtYmxlci0+c3RhcnRCbG9jayhibG9jaywgaml0KTsgCiAKLSAg
ICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBlbnRyeXBvaW50SW5kZXggPSBjb2RlLmVudHJ5
cG9pbnRJbmRleChibG9jaykpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGVudHJ5cG9pbnRJbmRleCA9IGNvZGUuZW50cnlwb2ludEluZGV4KGJsb2NrKSkgewogICAgICAg
ICAgICAgQVNTRVJUKGNvZGUuaXNFbnRyeXBvaW50KGJsb2NrKSk7CiAKICAgICAgICAgICAgIGlm
IChkaXNhc3NlbWJsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckluc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCmluZGV4
IGRjY2FlZTJiM2M4NDY2MmYzMmE2MDI4YjU4ZDQ2ZjIxNzE1NDJlYWUuLmU4MjU4MmJiNWVkMDIy
MmZmNzQ0M2VlYTI2MjM4MzQxNTk4YTU1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlySW5zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdC5oCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RydWN0IEluc3QgewogICAgIC8vIEZvciBl
eGFtcGxlLAogICAgIC8vICAgICBBZGQgVG1wMSwgVG1wMiwgVG1wMwogICAgIC8vIHJldHVybnMg
MiBpZiAwIGFuZCAxIGJlbmVmaXQgZnJvbSBhbGlhc2luZyB0byBUbXAzLgotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKCk7CiAgICAgCiAgICAgLy8gVGhpcyBjb21wdXRl
cyBhIGhhc2ggZm9yIGNvbXBhcmluZyB0aGlzIHRvIEpTQWlyJ3MgSW5zdC4KICAgICB1bnNpZ25l
ZCBqc0hhc2goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5z
dElubGluZXMuaAppbmRleCBkYWE4OTUzMDRhNGNjODMyYjcxZTRjNDdiZTFjM2E1OWUwZTIzMzlk
Li44MzViMTA1NGMxYWRmMjdjNmYwMWI2NDRmZmU3NDljNGI3NTNmZWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0xMTYsNyArMTE2LDcg
QEAgaW5saW5lIGJvb2wgSW5zdDo6YWRtaXRzRXh0ZW5kZWRPZmZzZXRBZGRyKEFyZyYgYXJnKQog
ICAgIHJldHVybiBhZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoJmFyZyAtICZhcmdzWzBdKTsKIH0K
IAotaW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZigp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdE
ZWYoKQogewogICAgIGlmICghaXNYODYoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCmluZGV4IDk1NWU4
YTk3MDE1MmM3YjAyNjM2ZDM4YWMxMTkwMGQ1ZTM3NDI1OWQuLmU4MjU3NjdiMDRkOGFiM2I5Y2Vj
NzVhZjRlOTE5ODBhODkyOTA1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJTcGVjaWFsLmNwcApAQCAtNTAsNyArNTAsNyBAQCBDU3RyaW5nIFNwZWNpYWw6Om5hbWUoKSBj
b25zdAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVk
PiBTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JikKK3N0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IFNwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmKQogewogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lh
bC5oCmluZGV4IDA1NmZkNTE4OTdjNWE1YmY3NGIyNmFmYmY0OTk2MjlhOGU5NmEzMWEuLmE2YWMz
YzZhYWM0ZGNlZTY3YmU4ZjAwYzQzNjQ0NjAyNjhiOTY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZChJbnN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhZG1pdHNT
dGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWRt
aXRzRXh0ZW5kZWRPZmZzZXRBZGRyKEluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgPSAwOwotICAg
IHZpcnR1YWwgT3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmKTsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVm
KEluc3QmKTsKIAogICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgb24gZm9yIGVhY2ggSW5zdCB0aGF0
IHVzZXMgdGhpcyBTcGVjaWFsLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvCiAgICAgLy8g
Z3VhcmFudGVlIHRoYXQgYSBTcGVjaWFsIGdldHMgdXNlZCBmcm9tIGp1c3Qgb25lIEluc3QsIGJl
Y2F1c2UgQWlyIG1pZ2h0IHRhaWxkdXAgbGF0ZS4gU28sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGU4ZTc1ZjZk
MTY5NDhmZjM1ODM4MDY5ZDk1Mjk0MTJhYTFhNGZmM2UuLmJhNmI5OTkzNzBlZjI5ZThmOTI4ZTRi
ODBkMGIzYzUzYTM1ZDU1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFMKICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSAwOwogICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IDA7CiAgICAgdW5zaWduZWQgb2Zmc2V0T2ZMYXN0TmV3bGluZSA9IDA7
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG9mZnNldE9mU2Vjb25kVG9MYXN0TmV3bGluZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBvZmZzZXRPZlNlY29uZFRvTGFzdE5ld2xpbmU7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXcubGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBpZiAoY2hhcmFjdGVyc1tpXSA9PSAnXG4nKSB7CiAgICAgICAgICAgICBpZiAobGluZUNvdW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4
IGM1ZmY3ODIyNjJlNzE4NWI4NzUwNDg3MGQ0YjRjOWJjNDkyYTRhYTQuLjEyYTk3YTJkMjVkNWVi
ZDFlOTlhNWU1YWMyOWMyMjg5M2JhODM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAg
ICAgICAgIC8vIEdldCB0aGUgYWNjZXNzb3I7IGlmIHRoZXJlIGFpbid0IG9uZSB0aGVuIHRoZSBy
ZXN1bHQgaXMganNVbmRlZmluZWQoKS4KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBHZXR0ZXJT
ZXR0ZXIgYWx3YXlzIGhhcyBjZWxscyBmb3IgYm90aC4gSWYgaXQgaXMgbm90IHNldCAobGlrZSwg
Z2V0dGVyIGV4aXRzLCBidXQgc2V0dGVyIGlzIG5vdCBzZXQpLCBOdWxse0dldHRlcixTZXR0ZXJ9
RnVuY3Rpb24gaXMgc3RvcmVkLgotICAgICAgICAgICAgT3B0aW9uYWw8Q0NhbGxIZWxwZXJzOjpK
dW1wPiByZXR1cm5VbmRlZmluZWQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPENDYWxsSGVs
cGVyczo6SnVtcD4gcmV0dXJuVW5kZWZpbmVkOwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBT
ZXR0ZXIpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cigKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGxvYWRlZFZhbHVlR1BSLCBHZXR0ZXJTZXR0ZXI6Om9m
ZnNldE9mU2V0dGVyKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggMTVhNjZhOTQ3
OGRkOGM2MGExMjI2ZjlmOWVjZTU3MDNlZjIyN2Q5YS4uY2Y5NTYyNmM2YjA2ZTE5NzU2Y2VlM2Jm
YzY2OTFhNDU2MzBkMTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuYXQobV9lbnRl
clBvaW50KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxHZW5lcmF0b3JGcmFtZURhdGE+IGdlbmVy
YXRvckZyYW1lRGF0YSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxHZW5lcmF0b3JGcmFtZURh
dGE+IGdlbmVyYXRvckZyYW1lRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9n
ZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICAgICAgbV9z
dG9yYWdlcy5yZXNpemUoaW5kZXggKyAxKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+
IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQogICAgICAgICAgICAgcmV0dXJu
ICpzdG9yYWdlOwogCiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTsKQEAgLTE2OSwxMSArMTY5LDExIEBAIHByaXZhdGU6CiAKICAgICBC
eXRlY29kZUdlbmVyYXRvciYgbV9ieXRlY29kZUdlbmVyYXRvcjsKICAgICBJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0IG1fZW50ZXJQb2ludDsKLSAgICBPcHRpb25hbDxHZW5lcmF0b3JGcmFtZURh
dGE+IG1fZ2VuZXJhdG9yRnJhbWVEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8R2VuZXJhdG9yRnJh
bWVEYXRhPiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKICAgICBVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvciogbV9jb2RlQmxvY2s7CiAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1faW5zdHJ1
Y3Rpb25zOwogICAgIEJ5dGVjb2RlR3JhcGggbV9ncmFwaDsKLSAgICBWZWN0b3I8T3B0aW9uYWw8
U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RvcmFnZT4+
IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwogICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOwogICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHcmFwaC5oCmluZGV4IDBmNTk1ZDQxODlmOTU0MDc1NWE3M2EwMDg0ZTcxNzg5ZWFhOTAz
N2YuLmM4ZDRhNTE2MThjNzhjODRhMzNiMWFhM2JmYzI5YWFmNDk4MmE5ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMTAyLDcgKzEw
Miw3IEBAIHB1YmxpYzoKIAogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+
Ci0gICAgdm9pZCBkdW1wKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rp
b25TdHJlYW0mIGluc3RydWN0aW9ucywgT3B0aW9uYWw8VmVjdG9yPE9wZXJhbmRzPFNwZWN1bGF0
ZWRUeXBlPj4+IHNwZWN1bGF0aW9uQXRIZWFkLCBQcmludFN0cmVhbSYgcHJpbnRlciA9IFdURjo6
ZGF0YUZpbGUoKSkKKyAgICB2b2lkIGR1bXAoQ29kZUJsb2NrVHlwZSogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxP
cGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVhZCwgUHJpbnRTdHJlYW0m
IHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCiAgICAgewogICAgICAgICBDb2RlQmxvY2tCeXRl
Y29kZUR1bXBlcjxDb2RlQmxvY2tUeXBlPjo6ZHVtcEdyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zLCAqdGhpcywgc3BlY3VsYXRpb25BdEhlYWQsIHByaW50ZXIpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmNwcAppbmRleCAzMzljYWE5NGEzNDM0OTdjMjdlMmQ5NzMzY2VkNmI3NGY4YzA0
ZjU3Li41NDY4MTQyODJiMWMwNWNmMmIzZWI2ZmY2ZGU2YjQyNjQzNzEwMzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9hYnN0cmFjdE1v
ZHVsZVJlY29yZEZpZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpKSk7CiB9CiAKLU9wdGlvbmFs
PEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFp
ZGVudC5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAppbmRleCA3ODU3ZGJhMDExNThhNzZmN2UwMTZhMjM3OTM1MDVkNmRhNWIz
MGMzLi5jZDdlMTUzMGFhYWVjNTM5YjkwZTg4MDhmZDRiNzI4MGU0NDZhNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGUgbV90
eXBlOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEVudHJ5PiBsb29rdXAoY29uc3QgSWRlbnRp
ZmllciYpIGNvbnN0OwogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19D
T05TVEFOVF9HRU5FUkFUT1JTKG5hbWUpIEpTVmFsdWUgbmFtZSMjVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImKTsKICAgICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFD
SF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAx
Y2Y5MzJiNjVmNTk1ZTFiZTAxNWU4YmI5Zjg2Yjg5M2U1ZTEyNzgzLi5hODU0NDUyYjllODE5NGVl
YWJiM2RjM2M0MzMxYWI5Y2EyNDMxYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMjA1OCw3ICsyMDU4LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4LCBpbnQKICAgICBsaW5lICs9IG93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKIH0K
IAotYm9vbCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxp
bmUsIE9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1bW4pCitib29sIENvZGVCbG9jazo6aGFzT3BEZWJ1
Z0ZvckxpbmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Y29sdW1uKQogewogICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVh
bSA9IGluc3RydWN0aW9ucygpOwogICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBpbnN0cnVjdGlv
blN0cmVhbSkgewpAQCAtMzQ0NSwzMyArMzQ0NSwzMyBAQCB2b2lkIENvZGVCbG9jazo6c2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiYmIG1hcCkK
ICAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9wY1RvQ29kZU9yaWdpbk1hcCA9IFdURk1vdmUo
bWFwKTsKIH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEModm9pZCog
cGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBj
KQogewogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewogICAgICAgICAg
ICAgaWYgKGppdERhdGEtPm1fcGNUb0NvZGVPcmlnaW5NYXApIHsKLSAgICAgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IGppdERhdGEtPm1fcGNUb0NvZGVP
cmlnaW5NYXAtPmZpbmRQQyhwYykpCisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IGppdERhdGEtPm1fcGNUb0NvZGVPcmlnaW5NYXAtPmZp
bmRQQyhwYykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlT3JpZ2luOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6
IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b250YWluc1BDKHBjKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVP
cmlnaW4+KHN0dWJJbmZvLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4oc3R1YkluZm8tPmNvZGVPcmlnaW4pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+
IGNvZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYykpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1faml0Q29kZS0+ZmluZFBDKHRoaXMs
IHBjKSkKICAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW47CiAKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLU9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+
IENvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCkKK3N0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4gQ29kZUJsb2NrOjpi
eXRlY29kZUluZGV4RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
KQogewotICAgIE9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXg7CisgICAgc3Rk
OjpvcHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4OwogICAgIEpJVFR5cGUgaml0
VHlwZSA9IHRoaXMtPmppdFR5cGUoKTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRl
cnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpCiAgICAgICAg
IGJ5dGVjb2RlSW5kZXggPSBjYWxsU2l0ZUluZGV4LmJ5dGVjb2RlSW5kZXgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA3NzMyOWYzYTQxZTA0YTFj
NzJkYjYyYzFkNThmNGY1YzM2Mzk3MjUxLi5hMzY5ZTExMDA5MTBhNzZiM2UyZGNiODhjNzkyNTA2
ZmMwMDc0ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC0yNTYsNyArMjU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9y
Qnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBpbnQmIGRpdm90LAogICAgICAgICBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1
bW4pIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4gYnl0ZWNvZGVJbmRleEZy
b21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOworICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZWNv
ZGVJbmRleD4gYnl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwog
CiAgICAgLy8gQmVjYXVzZSB3ZSBtaWdodCB0aHJvdyBvdXQgYmFzZWxpbmUgSklUIGNvZGUgYW5k
IGFsbCBpdHMgYmFzZWxpbmUgSklUIGRhdGEgKG1faml0RGF0YSksCiAgICAgLy8geW91IG5lZWQg
dG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlmZXRpbWUgb2Ygd2hlbiB5b3UgdXNlIHRoZSByZXR1
cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4KQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6OnVuaXF1ZV9wdHI8UENU
b0NvZGVPcmlnaW5NYXA+JiYpOwotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lk
KiBwYyk7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMpOwog
CiAgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0KTsKICAgICB2b2lk
IHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJBdE9mZnNldExpc3QmJik7CkBAIC03OTQs
NyArNzk0LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudCgpOwog
ICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQoKTsKIAotICAgIGJvb2wgaGFzT3BEZWJ1Z0Zvckxp
bmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbik7Cisg
ICAgYm9vbCBoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBjb2x1bW4pOwogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlclJlcXVlc3Rz
KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclJlcXVlc3RzOyB9CiAgICAgdm9pZCogZGVidWdn
ZXJSZXF1ZXN0c0FkZHJlc3MoKSB7IHJldHVybiAmbV9kZWJ1Z2dlclJlcXVlc3RzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHAKaW5kZXggMjAyZWZjNTQ2NjYxOTg1NGRhYWE2MjBjNjk3ZmYxY2ZmN2NmMzgz
Ni4uMGMzYzQxMjFkNTg2NjI3ZWE5NTA0MWJmNzE3MGRjN2M5ZDUwYWJiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAg
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRy
PEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90
QmFzZSwKLSAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUs
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAg
ICBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgR2V0dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggODcz
ZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uYTg0ODg0NThmNGFiZDJhYWQy
ZWJhZjYyYjI4YTMzYzQxODYwNDA4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICAvLyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgaXMgZGVzdHJveWVkLgogICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsTGlua0lu
Zm87IH0KICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UoKSBjb25zdCB7IHJldHVybiBtX2N1
c3RvbVNsb3RCYXNlLmdldCgpOyB9Ci0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGU7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9tQXR0cmlidXRlOyB9CiAKICAgICBib29sIGhhc0FsdGVybmF0ZUJhc2Uo
KSBjb25zdCBmaW5hbDsKICAgICBKU09iamVjdCogYWx0ZXJuYXRlQmFzZSgpIGNvbnN0IGZpbmFs
OwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAgICAg
ICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0
Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+IGN1c3RvbUdldHRlciwKLSAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBPcHRp
b25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKKyAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBzdGQ6Om9wdGlvbmFsPERP
TUF0dHJpYnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwog
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwK
QEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1f
Y3VzdG9tU2xvdEJhc2U7CiAgICAgQ2FsbExpbmtJbmZvKiBtX2NhbGxMaW5rSW5mbyB7IG51bGxw
dHIgfTsKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gbV9jdXN0b21BY2Nl
c3NvcjsKLSAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IG1fZG9tQXR0cmli
dXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApp
bmRleCAxOWEzNTU2Y2RlMWE0Mjc3ODFjMTNlMDZlMGM1NTI1ZWE2ZGY0ZWU5Li5kMDQ0MDVkOWQ0
MmZkMWY0OGM0Yjg5ZDVmMzY4MjYzNjFhZmRkZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5j
cHAKQEAgLTUxNSw3ICs1MTUsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNv
bmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZSgKIH0KIAogLy8gQ3VycmVudCBtaWdodCBiZSBudWxs
LiBTdHJ1Y3R1cmUgY2FuJ3QgYmUgbnVsbC4KLXN0YXRpYyBPcHRpb25hbDxQcm90b3R5cGVDaGFp
bkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIHRhcmdldCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0
YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIGN1cnJlbnQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0
KQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTU3NywxOCArNTc3LDE4IEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b3R5cGVDaGFp
bkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVz
PiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hh
aW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKIHsKICAgICByZXR1
cm4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIGJhc2UtPnN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPnZtKCkpLCB0YXJnZXQpOwogfQogCi1PcHRpb25hbDxQcm90b3R5
cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CitzdGQ6Om9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWlu
Rm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gc2xvdC5p
c1Vuc2V0KCkgPyBudWxscHRyIDogc2xvdC5zbG90QmFzZSgpOwogICAgIHJldHVybiBwcmVwYXJl
Q2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZSwgdGFyZ2V0KTsKIH0KIAotT3B0aW9u
YWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgSlNP
YmplY3QqIHRhcmdldCkKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVz
PiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKIHsKICAgICByZXR1cm4g
cHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIG51bGxwdHIsIGJhc2VTdHJ1Y3R1
cmUsIHRhcmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDVkOTA1NDU5NzRmMWVk
MzdmMjhjYWYzYTJhZWIzNDZhNDkxMGEyODMuLjNkMjMzZmFkMTMzOTJkZTAyYmYzYjNjOTdmZDA2
NDdmMGQxYWFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0xOTUsOCArMTk1LDggQEAg
c3RydWN0IFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cyB7CiAgICAgYm9vbCBmbGF0dGVuZWRE
aWN0aW9uYXJ5OwogfTsKIAotT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBw
cmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBjb25z
dCBQcm9wZXJ0eVNsb3QmKTsKLU9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4g
cHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNP
YmplY3QqIHRhcmdldCk7Ci1PcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHBy
ZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIGJhc2UsIEpT
T2JqZWN0KiB0YXJnZXQpOworc3RkOjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0
dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2Us
IGNvbnN0IFByb3BlcnR5U2xvdCYpOworc3RkOjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hp
bmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOworc3RkOjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNh
Y2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmlu
ZGV4IDg1Mjc5NDBiZjA1NDY3YTNkMWRjNjRjYjkxMzIxMzg1NjFhZDhhMDguLmQ4MTFkOTEzYzhm
ZTEyZGU2YzQ3OTNkNDkzY2Y2N2IyZWQxNTM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIFR5
cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHR5cGUpCiAgICAgcmV0dXJuIE5vdFR5cGVkQXJyYXk7CiB9CiAKLU9wdGlvbmFsPFNwZWN1bGF0
ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCitzdGQ6Om9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCBkNTkwNmY1NzllMWJl
YzNmZDRiMTNiMzYxNjc4N2E1YzdlYzFhYWU4Li4wZWJmOWFjYjQ3Zjk5NzIwMTFmODYzMGIzMDVi
ZjU1NTc1OWQ0ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaApAQCAtNTA4LDcgKzUwOCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOwogLy8gSWYgaXQncyBhbiBh
bnlJbnQoKSwgaXQnbGwgcmV0dXJuIHNwZWN1bGF0ZWQgdHlwZXMgZnJvbSB0aGUgSW50NTIgbGF0
dGljZS4KIC8vIE90aGVyd2lzZSwgaXQnbGwgcmV0dXJuIHR5cGVzIGZyb20gdGhlIEpTVmFsdWUg
bGF0dGljZS4KIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIGludDUyQXdhcmVTcGVj
dWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKLU9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVj
dWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKK3N0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+
IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUpOwogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21UeXBlZEFycmF5VHlwZShUeXBlZEFycmF5VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9y
IHR5cGVkIHZpZXdzLgogVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVR5cGVGcm9tU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggODI2YmQ1
NjliYjQzOWQzMzYxZmFkMjFlYTA0OGUwYmZjODZhYTQ3OC4uY2Y5YTc0YzJkZDUzYjRhNzMzYzcx
YTM4NzlkMWExMWNkZjM4ZDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUs
IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBPcHRp
b25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29k
ZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBw
YXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmlj
dENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTE4MSw3ICsxODEsNyBAQCBT
b3VyY2VDb2RlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rZWRTb3VyY2VDb2RlKGNv
bnN0IFNvdXJjZUNvZGUmIHBhc3NlZAogICAgIHJldHVybiBTb3VyY2VDb2RlKHBhcmVudFNvdXJj
ZS5wcm92aWRlcigpLCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBtX3NvdXJjZUxlbmd0aCwg
Zmlyc3RMaW5lLCBzdGFydENvbHVtbik7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhc3NlZFBhcmVudFNvdXJjZSwgT3B0
aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQorRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVs
RXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgcGFzc2VkUGFyZW50U291cmNlLCBzdGQ6Om9w
dGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyLCBJbnRyaW5zaWMgaW50cmluc2ljLCBib29s
IGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbikKIHsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IGxp
bmtlZFNvdXJjZUNvZGUocGFzc2VkUGFyZW50U291cmNlKTsKICAgICBGdW5jdGlvbk92ZXJyaWRl
czo6T3ZlcnJpZGVJbmZvIG92ZXJyaWRlSW5mbzsKQEAgLTIwMSw3ICsyMDEsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogdAogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgCi0gICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIs
IE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikK
KyAgICBKU09iamVjdComIGV4Y2VwdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgc3RkOjpv
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBkMTY5MmUxNzZlMTBlODFhYjA1OWEyZGJlZWIx
NmNmNzYzOTdkNjdhLi4zZDU0N2VjNGY2ODYzYTI4OGE1YWZiMmY1ZDJmYTIxMDJkMjE0ODUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9
CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVj
dG9yID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9k
ZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCiAgICAgICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFi
aWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZN
b3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwpAQCAtMTIzLDEwICsxMjMsMTAgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29k
ZSgKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291
cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCAKLSAgICAgICAgaW50IG92ZXJyaWRlTGlu
ZU51bWJlciwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uKTsKKyAgICAgICAgaW50IG92ZXJyaWRlTGluZU51bWJlciwgc3RkOjpvcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogCiAgICAgU291
cmNlQ29kZSBsaW5rZWRTb3VyY2VDb2RlKGNvbnN0IFNvdXJjZUNvZGUmKSBjb25zdDsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBTY3JpcHRFeGVj
dXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJj
ZSwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBzdGQ6Om51bGxvcHQsIEludHJp
bnNpYyA9IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBT
Y3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBh
cmVudFNvdXJjZSwgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IHN0ZDo6
bnVsbG9wdCwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uID0gZmFsc2UpOwogCiAgICAgdm9pZCBjbGVhckNvZGUoVk0mIHZtKQogICAgIHsKQEAg
LTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxp
dHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4sIE9wdGlv
bmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlND
OjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJv
b2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4sIHN0ZDo6b3B0aW9u
YWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4sIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBKU0M6
Ok5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9v
bCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwog
CiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNWRhNjUy
NzhkN2YwZjcwY2EyYTQyMjA2OTgzYmU1YzUzMmMxNjJiYy4uMmQ2OWY2OTkyMTM2OTAxZGFkN2U4
NjI3MWYwMDIyNWE5Y2QwMDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMwMTEsNyArMzAxMSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsCiAgICAgbV9URFpTdGFjay5hcHBlbmQoVERaU3Rh
Y2tFbnRyeSB7IFdURk1vdmUobWFwKSwgbnVsbHB0ciB9KTsKIH0KIAotT3B0aW9uYWw8UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVB
Y2Nlc3NOYW1lcygpCitzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKQogewogICAgIFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgcmVzdWx0OwogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0lt
cGwqPiBleGNsdWRlZE5hbWVzOwpAQCAtMzI2Niw3ICszMjY2LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdp
c3RlcklEKgogICAgIH0KIAogICAgIGF1dG8gdmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJs
ZXNVbmRlclREWigpOwotICAgIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVu
dFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJNb2RlOwogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKIApAQCAtNDY5OCw3ICs0Njk4LDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250
ZXh0U2NvcGUoKQogICAgIH0KIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVj
dHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5k
ZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51
bWVyYXRvclJlZ2lzdGVyLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9j
YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVy
dHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBzdGQ6Om9wdGlvbmFs
PFZhcmlhYmxlPiBiYXNlVmFyaWFibGUpCiB7CiAgICAgaWYgKCFsb2NhbFJlZ2lzdGVyKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggY2FmYTU3OWUzN2NmMDdlMmFhZTg4MjBhNDcz
NDdkNzY4NzAzZTY5OC4uY2I5NjkzNDJhZGQ4ZGY2MmM2NTZkNDA0Yjg1ZDRmYTdmMzM5NzhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB1c2luZyBJbkluc3QgPSBHZXRJbnN0OwogICAgICAgICB1c2luZyBIYXNPd25Qcm9wZXJ0eUp1
bXBJbnN0ID0gc3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+OwogCi0gICAgICAgIFN0cnVj
dHVyZUZvckluQ29udGV4dChSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBp
bmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBl
bnVtZXJhdG9yUmVnaXN0ZXIsIE9wdGlvbmFsPFZhcmlhYmxlPiBiYXNlVmFyaWFibGUsIHVuc2ln
bmVkIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQorICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lz
dGVyLCBzdGQ6Om9wdGlvbmFsPFZhcmlhYmxlPiBiYXNlVmFyaWFibGUsIHVuc2lnbmVkIGJvZHlC
eXRlY29kZVN0YXJ0T2Zmc2V0KQogICAgICAgICAgICAgOiBGb3JJbkNvbnRleHQobG9jYWxSZWdp
c3RlciwgVHlwZTo6U3RydWN0dXJlRm9ySW4sIGJvZHlCeXRlY29kZVN0YXJ0T2Zmc2V0KQogICAg
ICAgICAgICAgLCBtX2luZGV4UmVnaXN0ZXIoaW5kZXhSZWdpc3RlcikKICAgICAgICAgICAgICwg
bV9wcm9wZXJ0eVJlZ2lzdGVyKHByb3BlcnR5UmVnaXN0ZXIpCkBAIC0zMjIsNyArMzIyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9pbmRleFJlZ2lzdGVyLmdldCgpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHByb3BlcnR5
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdGVyLmdldCgpOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVudW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2VudW1lcmF0b3JSZWdpc3Rl
ci5nZXQoKTsgfQotICAgICAgICBjb25zdCBPcHRpb25hbDxWYXJpYWJsZT4mIGJhc2VWYXJpYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVZhcmlhYmxlOyB9CisgICAgICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8VmFyaWFibGU+JiBiYXNlVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VW
YXJpYWJsZTsgfQogCiAgICAgICAgIHZvaWQgYWRkR2V0SW5zdCh1bnNpZ25lZCBpbnN0SW5kZXgs
IGludCBwcm9wZXJ0eVJlZ0luZGV4KQogICAgICAgICB7CkBAIC0zNDUsNyArMzQ1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX2luZGV4UmVnaXN0ZXI7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBtX3Byb3BlcnR5UmVnaXN0ZXI7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBtX2VudW1lcmF0b3JSZWdpc3RlcjsKLSAgICAgICAgT3B0aW9u
YWw8VmFyaWFibGU+IG1fYmFzZVZhcmlhYmxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhcmlh
YmxlPiBtX2Jhc2VWYXJpYWJsZTsKICAgICAgICAgVmVjdG9yPEdldEluc3Q+IG1fZ2V0SW5zdHM7
CiAgICAgICAgIFZlY3RvcjxJbkluc3Q+IG1faW5JbnN0czsKICAgICAgICAgVmVjdG9yPEhhc093
blByb3BlcnR5SnVtcEluc3Q+IG1faGFzT3duUHJvcGVydHlKdW1wSW5zdHM7CkBAIC01OTcsNyAr
NTk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlRm9y
UHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbm9kZSkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4obm9kZSktPnZhbHVlKCkpKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+
KG5vZGUpLT52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRMb2FkKGRz
dCwganNOdW1iZXIoaW5kZXgudmFsdWUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIGVtaXROb2RlKGRzdCwgbm9kZSk7CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIHB1c2hJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklE
KiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgpOwogICAgICAgICB2b2lkIHBvcEluZGV4ZWRGb3JJ
blNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsKTsKLSAgICAgICAgdm9pZCBwdXNoU3RydWN0dXJlRm9y
SW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiBlbnVtZXJhdG9yLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFz
ZSk7CisgICAgICAgIHZvaWQgcHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9j
YWwsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
ZW51bWVyYXRvciwgc3RkOjpvcHRpb25hbDxWYXJpYWJsZT4gYmFzZSk7CiAgICAgICAgIHZvaWQg
cG9wU3RydWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7CiAKICAgICAgICAgTGFi
ZWxTY29wZSogYnJlYWtUYXJnZXQoY29uc3QgSWRlbnRpZmllciYpOwpAQCAtMTIwOSw3ICsxMjA5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8g
b3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7Ci0gICAg
ICAgICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKIAogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRp
b24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CkBAIC0xMjIy
LDcgKzEyMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7Ci0gICAgICAgIE9w
dGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcygpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IGdl
dEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVn
aXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQq
IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IG1fY2FjaGVkUGFyZW50VERa
OwogICAgICAgICBWZWN0b3I8VERaU3RhY2tFbnRyeT4gbV9URFpTdGFjazsKICAgICAgICAgVmVj
dG9yPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IG1fcHJpdmF0ZU5hbWVzU3RhY2s7Ci0gICAgICAg
IE9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZUxleGljYWxTY29wZVN0YWNrSW5kZXg7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNhbFNjb3BlU3RhY2tJbmRl
eDsKICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmLCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQpOwogCiAgICAgICAgIFNj
b3BlTm9kZSogY29uc3QgbV9zY29wZU5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggOWM0MDNjMmEwYzU3YmUwZmNk
MWFlY2U3MjUyODI4ODliNzg1YTFkOC4uYWRhZWFhMTRiYWVlZWZkZDkxMjI5NjY4NDhmYTM1MTEw
M2U4MTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnCiAKICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRpZmllciA9IG5vZGUubmFtZSgpKSB7CiAg
ICAgICAgIEFTU0VSVCghcHJvcGVydHlOYW1lKTsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoKmlkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChuZXdPYmosICppZGVudGlmaWVyLCB2YWx1ZS5nZXQoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zMDE4LDcgKzMwMTgsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlP
cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKgogICAgIE9wY29kZUlEIG9wY29kZUlEID0gdGhpcy0+b3Bjb2RlSUQoKTsKIAogICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9sZXNzIHx8IG9wY29kZUlEID09IG9wX2xlc3NlcSB8fCBvcGNvZGVJ
RCA9PSBvcF9ncmVhdGVyIHx8IG9wY29kZUlEID09IG9wX2dyZWF0ZXJlcSkgewotICAgICAgICBh
dXRvIGlzVUludDMyID0gWyZdIChFeHByZXNzaW9uTm9kZSogbm9kZSkgLT4gT3B0aW9uYWw8VUlu
dDMyUmVzdWx0PiB7CisgICAgICAgIGF1dG8gaXNVSW50MzIgPSBbJl0gKEV4cHJlc3Npb25Ob2Rl
KiBub2RlKSAtPiBzdGQ6Om9wdGlvbmFsPFVJbnQzMlJlc3VsdD4gewogICAgICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5T3BOb2RlKCkgJiYgc3RhdGljX2Nhc3Q8QmluYXJ5T3BOb2RlKj4obm9k
ZSktPm9wY29kZUlEKCkgPT0gb3BfdXJzaGlmdCkKICAgICAgICAgICAgICAgICByZXR1cm4gVUlu
dDMyUmVzdWx0OjpVSW50MzI7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNOdW1iZXIoKSAmJiBz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4obm9kZSktPmlzSW50ZWdlck5vZGUoKSkgewpAQCAtNDE5
NCw3ICs0MTk0LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGxvY2FsID0gdGhpcy0+dHJ5R2V0Qm91bmRMb2NhbChnZW5lcmF0b3IpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBlbnVtZXJhdG9ySW5kZXg7CiAKLSAgICBPcHRpb25hbDxWYXJpYWJsZT4gYmFz
ZVZhcmlhYmxlOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZTsKICAg
ICBpZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkpCiAgICAgICAgIGJhc2VWYXJpYWJsZSA9IGdl
bmVyYXRvci52YXJpYWJsZShzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fZXhwciktPmlkZW50
aWZpZXIoKSk7CiAgICAgZWxzZSBpZiAobV9leHByLT5pc1RoaXNOb2RlKCkpIHsKQEAgLTQ3Mzgs
NyArNDczOCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoRW5k
TGFiZWw7CiAgICAgUmVmUHRyPExhYmVsPiBmaW5hbGx5TGFiZWw7CiAgICAgUmVmUHRyPExhYmVs
PiBmaW5hbGx5RW5kTGFiZWw7Ci0gICAgT3B0aW9uYWw8RmluYWxseUNvbnRleHQ+IGZpbmFsbHlD
b250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8RmluYWxseUNvbnRleHQ+IGZpbmFsbHlDb250ZXh0
OwogCiAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgIGZpbmFsbHlMYWJlbCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtNTU0Miw3ICs1NTQyLDcgQEAgdm9pZCBPYmplY3RQYXR0
ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIHJocykKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3Q7CiAg
ICAgICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7Ci0gICAgICAgIE9wdGlvbmFsPENhbGxB
cmd1bWVudHM+IGFyZ3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2FsbEFyZ3VtZW50cz4gYXJn
czsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb21wdXRlZFByb3BlcnRpZXMgPSAwOwogICAg
ICAgICB1bnNpZ25lZCBpbmRleEluQXJndW1lbnRzID0gMjsKICAgICAgICAgaWYgKG1fY29udGFp
bnNSZXN0RWxlbWVudCkgewpAQCAtNTU5NSw3ICs1NTk1LDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJu
Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IHJocykKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKIAogICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0LnByb3BlcnR5RXhwcmVzc2lvbikgewot
ICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBh
cnNlSW5kZXgodGFyZ2V0LnByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodGVtcC5nZXQoKSwgcmhz
LCB0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBlMjkxZTRkOTNi
YTk3MTlkMmMyNTEyZWUzNjgyMmY5MDI4ZDQyNDRjLi41MjUzMTViZTcwYzM2MTliOWZlMzUxOTAz
MTg1NjFmZDFkYmY3MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIERlYnVnZ2VyOjp0b2dnbGVCcmVha3Bv
aW50KENvZGVCbG9jayogY29kZUJsb2NrLCBCcmVha3BvaW50JiBicmVha3BvaW50LCBCcgogICAg
IC8vIEluc3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMgYXJlIHplcm8t
YmFzZWQgYnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENvZGVCbG9jayBsaW5lIGFuZCBj
b2x1bW4gdmFsdWVzIGFyZSBvbmUtYmFzZWQuCiAgICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9p
bnQubGluZU51bWJlcigpICsgMTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uOworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbjsKICAgICBpZiAoYnJlYWtwb2ludC5jb2x1
bW5OdW1iZXIoKSkKICAgICAgICAgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSAr
IDE7CiAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBib29sIERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2lu
dChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3VyY2VQcm92aWRlciogc291cmNlUAogICAgIH0K
IAogICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShi
cmVha3BvaW50LnNvdXJjZUlEKCksIHNvdXJjZVByb3ZpZGVyKTsKLSAgICBPcHRpb25hbDxKU1Rl
eHRQb3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0aW9ucy5i
cmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGxpbmUsIGNvbHVtbik7CisgICAgc3RkOjpv
cHRpb25hbDxKU1RleHRQb3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVz
ZVBvc2l0aW9ucy5icmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGxpbmUsIGNvbHVtbik7
CiAgICAgaWYgKCFyZXNvbHZlZFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTEyMDMsNyArMTIwMyw3IEBAIERlYnVnZ2VyQ2FsbEZyYW1lJiBEZWJ1Z2dlcjo6Y3VycmVudERl
YnVnZ2VyQ2FsbEZyYW1lKCkKICAgICByZXR1cm4gKm1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
OwogfQogCi12b2lkIERlYnVnZ2VyOjpzZXRCbGFja2JveFR5cGUoU291cmNlSUQgc291cmNlSUQs
IE9wdGlvbmFsPEJsYWNrYm94VHlwZT4gdHlwZSkKK3ZvaWQgRGVidWdnZXI6OnNldEJsYWNrYm94
VHlwZShTb3VyY2VJRCBzb3VyY2VJRCwgc3RkOjpvcHRpb25hbDxCbGFja2JveFR5cGU+IHR5cGUp
CiB7CiAgICAgaWYgKHR5cGUpCiAgICAgICAgIG1fYmxhY2tib3hlZFNjcmlwdHMuc2V0KHNvdXJj
ZUlELCB0eXBlLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuaAppbmRleCAzM2VjOGY2ODcyMzUxNDRkYjhiYzY0YmRiODViZmM5MDEzZjk4OTI0Li45Mzg4
MDIzYTY0MTZhM2YwNGMwYjBhMjRiMWEzNzc0MzhlMjUyZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uKCk7CiAKICAgICBlbnVtIGNsYXNzIEJsYWNrYm94VHlw
ZSB7IERlZmVycmVkLCBJZ25vcmVkIH07Ci0gICAgdm9pZCBzZXRCbGFja2JveFR5cGUoU291cmNl
SUQsIE9wdGlvbmFsPEJsYWNrYm94VHlwZT4pOworICAgIHZvaWQgc2V0QmxhY2tib3hUeXBlKFNv
dXJjZUlELCBzdGQ6Om9wdGlvbmFsPEJsYWNrYm94VHlwZT4pOwogICAgIHZvaWQgY2xlYXJCbGFj
a2JveCgpOwogCiAgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYXVzZWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCmluZGV4IDc0MGFkODJjNzk1NGEwZjk4MjgyMjgzNTY4YjEzZTE5Zjg0MWJmZjMu
LmEzMWZjMWYxNWQ0YjgzODk0OGY0MmI0Y2YxYzA5YzQ3ZDM5OTUwN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAt
MzA4LDcgKzMwOCw3IEBAIFRleHRQb3NpdGlvbiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y3VycmVudFBv
c2l0aW9uKFZNJiB2bSkKIAogICAgIGlmIChpc1RhaWxEZWxldGVkKCkpIHsKICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2s7Ci0gICAg
ICAgIGlmIChPcHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4ID0gY29kZUJsb2Nr
LT5ieXRlY29kZUluZGV4RnJvbUNhbGxTaXRlSW5kZXgobV9zaGFkb3dDaGlja2VuRnJhbWUuY2Fs
bFNpdGVJbmRleCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4g
Ynl0ZWNvZGVJbmRleCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4
KG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNhbGxTaXRlSW5kZXgpKSB7CiAgICAgICAgICAgICByZXR1
cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZUluZGV4KCpieXRlY29kZUluZGV4KSksCiAgICAgICAgICAg
ICAgICAgT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvZGVCbG9jay0+Y29sdW1uTnVt
YmVyRm9yQnl0ZWNvZGVJbmRleCgqYnl0ZWNvZGVJbmRleCkpKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAK
aW5kZXggNTY4ZmUzMzhhYTA2NzUxZjI3NmQzNTRlMmI4ZTAwMWRhM2FlMzUzMC4uNmM4OGZkOTBj
MzAwOTE0MTNiODk1MTY1ODAyODQxNzc4MzllNDE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1PcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdn
ZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihpbnQgbGlu
ZSwgaW50IGNvbHVtbikKK3N0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1
c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxpbmUsIGlu
dCBjb2x1bW4pCiB7CiAgICAgRGVidWdnZXJQYXVzZVBvc2l0aW9uIHBvc2l0aW9uID0geyBEZWJ1
Z2dlclBhdXNlUG9zaXRpb25UeXBlOjpJbnZhbGlkLCBKU1RleHRQb3NpdGlvbihsaW5lLCBjb2x1
bW4sIDApIH07CiAgICAgYXV0byBpdCA9IHN0ZDo6bG93ZXJfYm91bmQobV9wb3NpdGlvbnMuYmVn
aW4oKSwgbV9wb3NpdGlvbnMuZW5kKCksIHBvc2l0aW9uLCBbXSAoY29uc3QgRGVidWdnZXJQYXVz
ZVBvc2l0aW9uJiBhLCBjb25zdCBEZWJ1Z2dlclBhdXNlUG9zaXRpb24mIGIpIHsKQEAgLTY4LDcg
KzY4LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6
OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4KICAgICAvLyBWYWxpZCBwYXVzZSBsb2Nh
dGlvbi4gVXNlIGl0LgogICAgIGF1dG8mIGZpcnN0U2xpZGVQb3NpdGlvbiA9ICppdDsKICAgICBp
ZiAoZmlyc3RTbGlkZVBvc2l0aW9uLnR5cGUgIT0gRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6
RW50ZXIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4oZmlyc3RTbGlk
ZVBvc2l0aW9uLnBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SlNUZXh0
UG9zaXRpb24+KGZpcnN0U2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CiAKICAgICAvLyBEZXRlcm1p
bmUgaWYgd2Ugc2hvdWxkIGVudGVyIHRoaXMgZnVuY3Rpb24gb3Igc2tpcCBwYXN0IGl0LgogICAg
IC8vIElmIGVudHJ5U3RhY2tTaXplIGlzID4gMCB3ZSBhcmUgc2tpcHBpbmcgZnVuY3Rpb25zLgpA
QCAtOTUsNyArOTUsNyBAQCBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdnZXJQYXVzZVBv
c2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbgogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRm91bmQgcGF1c2UgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxK
U1RleHRQb3NpdGlvbj4oc2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihzbGlkZVBvc2l0aW9uLnBvc2l0aW9uKTsKICAg
ICB9CiAKICAgICAvLyBObyBwYXVzZSBwb3NpdGlvbnMgZm91bmQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5oCmluZGV4IDNiMDdjOTIz
YzY4YTZmNzJhZGY4M2QzNmM3MjM2Nzc1ZDU1YTBjNzAuLjc3YmVhZTg1ZGQyMjNjM2UzYzYxNDcw
OTc4Mjc3ZDhlMTFkZjBjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9wb3NpdGlvbnMuYXBwZW5kKHsgRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6TGVhdmUs
IHBvc2l0aW9uIH0pOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBicmVh
a3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29sdW1uKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29s
dW1uKGludCBsaW5lLCBpbnQgY29sdW1uKTsKIAogICAgIHZvaWQgc29ydCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5o
CmluZGV4IGMzNDBhOGI1NWYyMjM5MGJjNzRjNDgzNjY0Zjc1ZTRhNjM4NmMzNzIuLmM0YmVlNGQx
NjIwYTg2ZTA3MGE4OGIyOGRlMDFjNDI2YjRhYzJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5oCkBAIC04Myw3ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2Jq
ZWN0IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fc3RhcnRUaW1lOworICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9zdGFydFRpbWU7CiAgICAgUHJvZmlsaW5nUmVhc29u
IG1fcmVhc29uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQ5M2YzNjhlNWVlZTBkY2Rh
MzZlZWJjNjcxMzE5NmZiMWIwZjRlMTEuLjFiMmE1ZTA3YTBiMmUwZjU0YWE4Nzc3YTlhMzllNjAz
YmFjNmNlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTcwMiw3ICs3MDIsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICAKICAgICBjYXNlIERvdWJsZVJlcDogewogICAgICAg
ICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAg
ICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGls
ZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNEb3VibGVOdW1iZXIoKm51bWJlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTgzNyw3ICs4MzcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2Fz
ZSBBcml0aENsejMyOiB7CiAgICAgICAgIEpTVmFsdWUgb3BlcmFuZCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9
IG9wZXJhbmQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7
CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAg
ICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAg
LTEyMzIsNyArMTIzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpTVmFs
dWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBzd2l0
Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgot
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJG
cm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGZhYnMoKm51bWJlcikpOwogICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIHJlc3VsdCk7CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQz
Mk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgot
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJG
cm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihmYWJzKCpudW1iZXIpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMjg1LDcgKzEyODUsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgQXJpdGhDZWlsOgogICAgIGNhc2UgQXJp
dGhUcnVuYzogewogICAgICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVy
YW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBEb3VibGVSZXBVc2UpCiAg
ICAgICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgCkBAIC0x
MzY1LDcgKzEzNjUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBNYXBI
YXNoOiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGtleSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
LnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaGFzaCA9IGNv
bmN1cnJlbnRKU01hcEhhc2goa2V5KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGhhc2ggPSBjb25jdXJyZW50SlNNYXBIYXNoKGtleSkpIHsKICAgICAgICAgICAg
ICAgICAvLyBBbHRob3VnaCBDKysgY29kZSB1c2VzIHVpbnQzMl90IGZvciB0aGUgaGFzaCwgdGhl
IGNsb3Nlc3QgdHlwZSBpbiBERkcgSVIgaXMgSW50MzIKICAgICAgICAgICAgICAgICAvLyBhbmQg
dGhhdCdzIHdoYXQgTWFwSGFzaCByZXR1cm5zLiBTbywgd2UgaGF2ZSB0byBjYXN0IHRvIGludDMy
X3QgdG8gYXZvaWQgbGFyZ2UKICAgICAgICAgICAgICAgICAvLyB1bnNpZ25lZCB2YWx1ZXMgYmVj
b21pbmcgZG91Ymxlcy4gVGhpcyBjYXN0aW5nIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZApA
QCAtMTU0OSw3ICsxNTQ5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIElzQ2VsbFdp
dGhUeXBlOiB7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBPcHRpb25hbDxib29sPiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICBjaGlsZC5tX3N0
cnVjdHVyZS5mb3JFYWNoKAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
bWF0Y2hlZCA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbm9kZS0+cXVlcmllZFR5
cGUoKTsKQEAgLTE3NDUsNyArMTc0NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOiB7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gZmlsdGVyID0gbm9kZS0+c3BlY3VsYXRlZFR5
cGVGb3JRdWVyeSgpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4g
ZmlsdGVyID0gbm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpOwogICAgICAgICAgICAgaWYg
KCFmaWx0ZXIpIHsKICAgICAgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVjQ2Vs
bCkpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZh
bHNlKSk7CkBAIC0zNzg2LDcgKzM3ODYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
IGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6IHsKICAgICAgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3ZhbHVlKTsKICAgICAgICAgaWYgKHZpZXcpIHsKLSAgICAgICAgICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBieXRlT2Zmc2V0ID0gdmlldy0+Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5
dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKICAgICAgICAgICAgIGlmIChieXRlT2Zmc2V0KSB7CiAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoKmJ5dGVPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ4NzIsNyArNDg3Miw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZURvdWJsZVVuYXJ5T3BFZmZlY3RzKE5vZGUqIG5vZGUsIGRv
dWJsZSgqZXF1aXZhbGVudEZ1bmN0aW9uKShkb3VibGUpKQogewogICAgIEpTVmFsdWUgY2hpbGQg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgIGlmIChPcHRpb25hbDxkb3Vi
bGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUo
KSkgewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IERvdWJsZVJlcFVz
ZSkKICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNEb3VibGVOdW1iZXIoZXF1aXZhbGVudEZ1bmN0aW9uKCpudW1iZXIpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGNjZTc4MmMxZTNjNzgwOTVhYTRmNTc1ZjAxZDJmNjU1YjQzMWJmMjIuLjcwNzllNTJhZGE4YjJm
OWNjMDNkZDM0NDYzNTYwMjM0ZThjNWRkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDQ1LDcgKzI0NDUsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCBy
ZXN1bHQsIEludHJpbnNpYwogICAgICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOiB7CiAg
ICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8SXRlcmF0
aW9uS2luZD4ga2luZCA9IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKGludHJpbnNpYyk7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0aW9u
S2luZEZvckludHJpbnNpYyhpbnRyaW5zaWMpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ISFraW5kKTsKIAogICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBi
ZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkg
Y2hlY2tzIG9uIGl0IGluIEZpeHVwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkFQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBo
YXNlLmNwcAppbmRleCA0NjA4MDVmNzZjMmI1ODYwZjk1MTg0YjM3MmYyNmU5NDdlZDY0MGUwLi5j
YzBkMDE0ZGEyOTMxZmYzZWNkY2U5NDI5Y2MyNjI1NjFlMmY3Zjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcApAQCAtMTY4LDEwICsxNjgsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gdHlwZSB3aWRlbmluZyBpcyBjcml0aWNhbCB0byBuYXZpZXItc3Rva2Vz
LiBXaXRob3V0IGl0LCBuYXZpZXItc3Rva2VzIGhhcyBtb3JlIHN0cmljdCBjb25zdHJhaW50IG9u
IE9TUiBlbnRyeSBhbmQKICAgICAgICAgLy8gZmFpbHMgT1NSIGVudHJ5IHJlcGVhdGVkbHkuCiAg
ICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBjb25zdCBPcGVyYW5kczxPcHRp
b25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMgPSBtX2dyYXBoLm1fcGxhbi5tdXN0SGFu
ZGxlVmFsdWVzKCk7CisgICAgICAgIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1
ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZhbHVlcygp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG11c3RIYW5kbGVWYWx1ZXMub3BlcmFu
ZEZvckluZGV4KGkpOwotICAgICAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtdXN0
SGFuZGxlVmFsdWVzW2ldOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiB2YWx1
ZSA9IG11c3RIYW5kbGVWYWx1ZXNbaV07CiAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgTm90IGxpdmUgaW4gYnl0ZWNvZGU6ICIsIG9wZXJhbmQsICJcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCmluZGV4IDZkNWE0NDA5ODIyN2I1OTU1ZDgyNThkMjRl
ZWJkYThjMjg1MWQ4ZGUuLjY1MDc5ZmNmMWU1NzM1MTY5N2E5OWY1ZDljYjM0NWI5ZjZlM2E2Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgc3RhdGljIEZ1bmN0aW9uQWxsb3dsaXN0JiBlbnN1cmVHbG9iYWxERkdBbGxvd2xpc3QoKQog
CiBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25Nb2RlIG1vZGUsCi0gICAgQnl0ZWNvZGVJbmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcywK
KyAgICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8
c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMsCiAgICAgUmVmPERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIU9wdGlvbnM6
OmJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnNTaXplKCkpCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBj
b21waWxlSW1wbCgKIH0KICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQogc3RhdGljIENvbXBpbGF0
aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAotICAgIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwg
SklUQ29tcGlsYXRpb25Nb2RlLCBCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxPcHRpb25h
bDxKU1ZhbHVlPj4mLAorICAgIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwgSklUQ29tcGls
YXRpb25Nb2RlLCBCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpT
VmFsdWU+PiYsCiAgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJikKIHsKICAg
ICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIENv
bXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogCiBDb21waWxhdGlvblJlc3VsdCBjb21waWxl
KAogICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRE
RkdDb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlLAotICAgIEJ5dGVjb2RlSW5kZXgg
b3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4m
IG11c3RIYW5kbGVWYWx1ZXMsCisgICAgQnl0ZWNvZGVJbmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFs
dWVzLAogICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7
CiAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29tcGlsZUltcGwoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuaAppbmRleCAyYTFjOWMxMDE3ZTJjNTNlMjkyYzBjM2Y5OTli
ZmYwNDE3ZTJkODhhLi5lZWIxYTRjNzE5ZmE3NWMwOWI5NDVlNDA3MmUwOWVmYWE3ZTk1MTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgSlNf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZ2V0TnVtQ29tcGlsYXRpb25zKCk7CiAvLyBjb21waWxl
LiBFdmVuIGlmIHdlIGRvIGEgc3luY2hyb25vdXMgY29tcGlsZSwgd2UgY2FsbCB0aGUgY2FsbGJh
Y2sgd2l0aCB0aGUgcmVzdWx0LgogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYs
IENvZGVCbG9jayosIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uTW9kZSwKLSAgICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3Qg
T3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzLAorICAgIEJ5dGVj
b2RlSW5kZXggb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlv
bmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcywKICAgICBSZWY8RGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrPiYmKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZjY1ZjliNTc5MGU2NmUx
ZDkyZTIxMmM3YTFlNTU0ZTg5ZDhhOGJlYS4uOGEwOWZiNDUxODg3NTRhYjIyYWE5MWM5MTllMTNm
OWY4YjhhYjZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDMyOiB7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8QXJyYXk6
OlNwZWN1bGF0aW9uPiBzYW5lQ2hhaW5TcGVjdWxhdGlvbjsKKyAgICAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPEFycmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWluU3BlY3VsYXRpb247CiAgICAg
ICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXlXaXRoT3JpZ2luYWxTdHJ1Y3R1cmUo
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBJbkJvdW5kc1NhbmVDaGFpbiB3
aWxsIHdvcmsgb24gYSBwZXItdHlwZSBiYXNpcy4gTm90ZSB0aGF0OgogICAgICAgICAgICAgICAg
ICAgICAvLwpAQCAtMzAxNCw3ICszMDE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4dXBJ
c0NlbGxXaXRoVHlwZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3BlY3Vs
YXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gZmlsdGVyID0gbm9kZS0+c3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSgpOwogICAgICAgICBpZiAoZmlsdGVyKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGZpbHRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggOWI2ODRlZTMwZTRkYzVkMmI5OGRhOThj
NmMyOTgxZTY3YWUyMWFhMC4uNzZmOWRiODJmOTExODkxZGM5MzM2NTA1Yzc2ZGQ2MTM2M2ZlNDZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTE5MSw3ICsxMTkxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNWYWxp
ZGF0aW5nIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4
aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1f
YWJzdHJhY3RWYWx1ZXNDYWNoZTsKICAgICBCYWc8RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dp
dGNoRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmluZGV4IDI0
NDk4MDFmZjBiNGUxMTZiZDRiZTQ5OWI1M2NkNjRlMzhkYTMxMjYuLjVlMmYwYTBkMDgxOWQ2NDM4
Nzk4MmYxOTVjZDAyOGQ4NGY3MDkxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgSklUQ29kZTo6cmVjb25zdHJ1Y3Qo
CiAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgbWluaWZpZWRERkcsIHN0cmVhbUluZGV4
LCByZXN1bHQpOwogfQogCi12b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNp
Z25lZCBzdHJlYW1JbmRleCwgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiByZXN1bHQpCit2
b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwg
T3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIHJlc3VsdCkKIHsKICAgICBPcGVyYW5k
czxWYWx1ZVJlY292ZXJ5PiByZWNvdmVyaWVzOwogICAgIHJlY29uc3RydWN0KGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgc3RyZWFtSW5kZXgsIHJlY292ZXJpZXMpOwogICAgIAotICAgIHJlc3VsdCA9
IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PihPcGVyYW5kc0xpa2UsIHJlY292ZXJpZXMpOwor
ICAgIHJlc3VsdCA9IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+KE9wZXJhbmRzTGlr
ZSwgcmVjb3Zlcmllcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IHJlc3VsdC5zaXplKCk7IGktLTsp
CiAgICAgICAgIHJlc3VsdFtpXSA9IHJlY292ZXJpZXNbaV0ucmVjb3ZlcihjYWxsRnJhbWUpOwog
fQpAQCAtMjI0LDEyICsyMjQsMTIgQEAgdm9pZCBKSVRDb2RlOjp2YWxpZGF0ZVJlZmVyZW5jZXMo
Y29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKQogICAgIG1pbmlmaWVk
REZHLnZhbGlkYXRlUmVmZXJlbmNlcyh0cmFja2VkUmVmZXJlbmNlcyk7CiB9CiAKLU9wdGlvbmFs
PENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykKK3N0ZDo6
b3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBj
KQogewogICAgIGZvciAoT1NSRXhpdCYgZXhpdCA6IG1fb3NyRXhpdCkgewogICAgICAgICBpZiAo
RXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogaGFuZGxlID0gZXhpdC5tX2NvZGUuZXhlY3V0YWJsZU1l
bW9yeSgpKSB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlLT5zdGFydCgpLnVudGFnZ2VkUHRyKCkg
PD0gcGMgJiYgcGMgPCBoYW5kbGUtPmVuZCgpLnVudGFnZ2VkUHRyKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFBy
b2ZpbGUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+
KGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IGIxNTgyM2MzNjFiYWQ4MjUw
ZmVkOTM4MGJiMzIxZGU3MjQzMGNlNzYuLmVjMmI0ODMzMjhlMzg5NGQxNmY0MWU4NjA0OGIwZmJi
MzY0ZDk3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICAvLyBzdGFjay4gQ3VycmVudGx5LCBpdCBhbHNvIGhhcyB0
aGUgcmVzdHJpY3Rpb24gdGhhdCB0aGUgdmFsdWVzIG11c3QgYmUgaW4gdGhlaXIKICAgICAvLyBi
eXRlY29kZS1kZXNpZ25hdGVkIHN0YWNrIHNsb3RzLgogICAgIHZvaWQgcmVjb25zdHJ1Y3QoCi0g
ICAgICAgIENhbGxGcmFtZSosIENvZGVCbG9jayosIENvZGVPcmlnaW4sIHVuc2lnbmVkIHN0cmVh
bUluZGV4LCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4mIHJlc3VsdCk7CisgICAgICAgIENh
bGxGcmFtZSosIENvZGVCbG9jayosIENvZGVPcmlnaW4sIHVuc2lnbmVkIHN0cmVhbUluZGV4LCBP
cGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiYgcmVzdWx0KTsKIAogI2lmIEVOQUJMRShG
VExfSklUKQogICAgIC8vIE5CLiBBbGwgb2YgdGhlc2UgbWV0aG9kcyB0YWtlIENvZGVCbG9jayog
YmVjYXVzZSB0aGV5IG1heSB3YW50IHRvIHVzZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgcHRyZGlmZl90IGNvbW1vbkRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSklUQ29kZSwgY29tbW9uKTsgfQogCi0gICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4g
ZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
ZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgZmluYWw7CiAKICAgICB1c2lu
ZyBEaXJlY3RKSVRDb2RlOjppbml0aWFsaXplQ29kZVJlZkZvckRGRzsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNTg5M2JlODA2NjAxNjk5YjY3MDE0MGIyMWNlOWI3
NGVhZjkzZDExYS4uMTY5NjE3YmVhYWZmNmUyMjlkMjIyYTY1NjIyNGY0OTVkYTBiNjJiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE0NDcsNyArMTQ0Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gSXNDZWxsV2l0aFR5cGU7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQorICAgIHN0
ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShxdWVyaWVkVHlwZSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCA3NTEzYjRkNGJlMGQwOWZhMTAzZjU4YjE3N2UzYWZiZWM5ODBhMzVjLi5mY2IwNDQ2MGEzZmQw
NzE1ZDk0NzVmYmFhZjAzODEzNzBmNzhkMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyB2b2lkIHB1dEJ5VmFsSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLAogICAgIEpTVmFsdWUgcHJvcGVydHkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFBy
b3BlcnR5KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0
QXNVaW50MzJJbmRleCgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcHJvcGVydHkudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICAgICAgcHV0QnlWYWw8c3RyaWN0LCBkaXJlY3Q+KGdsb2JhbE9iamVjdCwgdm0s
IGJhc2VWYWx1ZSwgKmluZGV4LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzMSw3ICsx
MzEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dEJ5VmFsSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLAogICAgIGlmIChkaXJlY3QpIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAw
LCBzdHJpY3QgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTEsNyArMTUxLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbENlbGxJbnRlcm5hbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYKICAgICBpZiAoZGlyZWN0KSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2UtPmlzT2JqZWN0KCkpOwogICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2UpOwotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAg
YmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgMCwgc3RyaWN0ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02
NjIsNyArNjYyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFs
Q2VsbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIEpTVmFsdWUgcHJv
cGVydHkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKIAotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQzMkluZGV4KCkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0QXNV
aW50MzJJbmRleCgpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFs
V2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgKmluZGV4KSk7CiAKICAgICBpZiAocHJvcGVy
dHkuaXNTdHJpbmcoKSkgewpAQCAtMTU1OSw3ICsxNTU5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmoKICAgICB9CiAgICAgCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgUHJvcGVy
dHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgo
KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50
cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5j
YW5HZXRJbmRleChpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CkBAIC0zNzMxLDcgKzM3
MzEsNyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqCiAgICAgLy8gV2UgbmVlZCB0byBjb21waWxl
IHRoZSBjb2RlLgogICAgIGNvbXBpbGUoCiAgICAgICAgIHZtLCBjb2RlQmxvY2stPm5ld1JlcGxh
Y2VtZW50KCksIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25Nb2RlOjpGVEwsIEJ5dGVjb2RlSW5k
ZXgoKSwKLSAgICAgICAgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+KCksIFRvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUoKSk7CisgICAgICAgIE9wZXJhbmRzPHN0ZDo6
b3B0aW9uYWw8SlNWYWx1ZT4+KCksIFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpj
cmVhdGUoKSk7CiAKICAgICAvLyBJZiB3ZSByZWFjaGVkIGhlcmUsIHRoZSBjb3VudGVyIGhhcyBu
b3QgYmUgcmVzZXQuIERvIHRoYXQgbm93LgogICAgIGppdENvZGUtPnNldE9wdGltaXphdGlvblRo
cmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKQEAgLTM5NzAsNyArMzk3MCw3IEBAIHN0
YXRpYyBjaGFyKiB0aWVyVXBDb21tb24oVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQnl0
ZWNvZGVJbmRleCBvcmlnaW5CeXRlCiAKICAgICBKSVRDb2RlOjpUcmlnZ2VyUmVhc29uKiB0cmln
Z2VyQWRkcmVzcyA9ICYodHJpZ2dlckl0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBPcGVyYW5kczxP
cHRpb25hbDxKU1ZhbHVlPj4gbXVzdEhhbmRsZVZhbHVlczsKKyAgICBPcGVyYW5kczxzdGQ6Om9w
dGlvbmFsPEpTVmFsdWU+PiBtdXN0SGFuZGxlVmFsdWVzOwogICAgIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4ID0gaml0Q29kZS0+Ynl0ZWNvZGVJbmRleFRvU3RyZWFtSW5kZXguZ2V0KG9yaWdpbkJ5dGVj
b2RlSW5kZXgpOwogICAgIGppdENvZGUtPnJlY29uc3RydWN0KGNhbGxGcmFtZSwgY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG9yaWdpbkJ5dGVjb2RlSW5kZXgpLCBzdHJlYW1JbmRleCwgbXVzdEhhbmRs
ZVZhbHVlcyk7CiAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudENvZGVCbG9jayA9IGNvZGVCbG9j
ay0+bmV3UmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmlu
ZGV4IGQyOTNlYzc0ODFmOTIzODI0ZjdmOGNjN2UxN2RmYmZmYTAyOWUwMzAuLjJkMmEyMjFiNTRi
MzIzMjg1OWVjM2RmYzUxZTRjOTVlNTk1NTkyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFByb2ZpbGVyOjpDb21waWxhdGlvbktpbmQg
cHJvZmlsZXJDb21waWxhdGlvbktpbmRGb3JNb2RlKEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlCiAK
IFBsYW46OlBsYW4oQ29kZUJsb2NrKiBwYXNzZWRDb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmls
ZWRERkdDb2RlQmxvY2ssCiAgICAgSklUQ29tcGlsYXRpb25Nb2RlIG1vZGUsIEJ5dGVjb2RlSW5k
ZXggb3NyRW50cnlCeXRlY29kZUluZGV4LAotICAgIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpT
VmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcykKKyAgICBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlv
bmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcykKICAgICAgICAgOiBCYXNlKG1vZGUsIHBh
c3NlZENvZGVCbG9jaykKICAgICAgICAgLCBtX3Byb2ZpbGVkREZHQ29kZUJsb2NrKHByb2ZpbGVk
REZHQ29kZUJsb2NrKQogICAgICAgICAsIG1fbXVzdEhhbmRsZVZhbHVlcyhtdXN0SGFuZGxlVmFs
dWVzKQpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0
Q2hpbGRyZW4oQWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIGNsZWFuTXVzdEhh
bmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9tdXN0SGFu
ZGxlVmFsdWVzLnNpemUoKTsgaS0tOykgewotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlPiB2YWx1
ZSA9IG1fbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
PiB2YWx1ZSA9IG1fbXVzdEhhbmRsZVZhbHVlc1tpXTsKICAgICAgICAgaWYgKHZhbHVlKQogICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh2YWx1ZS52YWx1ZSgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCmluZGV4IGE1Njg3YjY2MmEzOThkMTAwODE4
MWMyZDdjMDAyYWIwOGY3MGY0ZDYuLjQwODAzMjk2YTZkYmUwZTQ3ZWEzODMzZGJiZjI0YTZjMjkw
M2I2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCkBAIC01OCw3ICs1OCw3IEBA
IHB1YmxpYzoKICAgICBQbGFuKAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RvQ29tcGls
ZSwgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywKICAgICAgICAgSklUQ29tcGlsYXRp
b25Nb2RlLCBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwKLSAgICAgICAgY29u
c3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzKTsKKyAgICAg
ICAgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1
ZXMpOwogICAgIH5QbGFuKCk7CiAKICAgICBzaXplX3QgY29kZVNpemUoKSBjb25zdCBmaW5hbDsK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYW5NdXN0SGFuZGxlVmFsdWVz
SWZOZWNlc3NhcnkoKTsKIAogICAgIEJ5dGVjb2RlSW5kZXggb3NyRW50cnlCeXRlY29kZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9vc3JFbnRyeUJ5dGVjb2RlSW5kZXg7IH0KLSAgICBjb25zdCBP
cGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMoKSBjb25zdCB7IHJl
dHVybiBtX211c3RIYW5kbGVWYWx1ZXM7IH0KKyAgICBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlv
bmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fbXVzdEhh
bmRsZVZhbHVlczsgfQogICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbXBpbGF0aW9uLmdldCgpOyB9CiAKICAgICBGaW5hbGl6ZXIqIGZp
bmFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxpemVyLmdldCgpOyB9CkBAIC0xMTEsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGVzZSBjYW4gYmUgcmF3IHBvaW50ZXJzIGJlY2F1
c2Ugd2UgdmlzaXQgdGhlbSBkdXJpbmcgZXZlcnkgR0MgaW4gY2hlY2tMaXZlbmVzc0FuZFZpc2l0
Q2hpbGRyZW4uCiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkREZHQ29kZUJsb2NrOwogCi0gICAg
T3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IG1fbXVzdEhhbmRsZVZhbHVlczsKKyAgICBPcGVy
YW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiBtX211c3RIYW5kbGVWYWx1ZXM7CiAgICAgYm9v
bCBtX211c3RIYW5kbGVWYWx1ZXNNYXlJbmNsdWRlR2FyYmFnZSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbXVzdEhhbmRsZVZhbHVlQ2xlYW5pbmdMb2NrKSB7IHRydWUgfTsKICAgICBMb2NrIG1fbXVz
dEhhbmRsZVZhbHVlQ2xlYW5pbmdMb2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggNjAzMDUw
ZTE5OGM2NmNiMmU3OTJiNDkwNjk4MDY3ODZmZTU1OTIwNi4uOTg2NjJmYTU5YmE5MGQyYTkyNzUx
NzJmZDc0OGI2ZjNmNzgwNDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcApAQCAtNjksMTAgKzY5LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChi
bG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IE9wZXJh
bmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyA9IG1fZ3JhcGgubV9wbGFu
Lm11c3RIYW5kbGVWYWx1ZXMoKTsKKyAgICAgICAgICAgIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0
aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4ubXVzdEhh
bmRsZVZhbHVlcygpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXN0SGFu
ZGxlVmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5k
ID0gbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7Ci0gICAgICAgICAgICAgICAg
T3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtdXN0SGFuZGxlVmFsdWVzW2ldOworICAgICAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtdXN0SGFuZGxlVmFsdWVzW2ld
OwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+dmFyaWFibGVzQXRIZWFk
Lm9wZXJhbmQob3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDdjZTIxMGQxM2JhOGU1NWE4MGE5NmNlOTM1MmUwZmZkMDcy
ODRiMWQuLjBhZjVkZDk4MzljODAyMTZlZjhiY2YwZGU2M2RlM2JjODk1YjNhOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00MTAs
NyArNDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YWRkU2xvd1BhdGhHZW5lcmF0b3JMYW1i
ZGEoRnVuY3Rpb248dm9pZCgpPiYmIGxhbWJkYSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnJ1blNs
b3dQYXRoR2VuZXJhdG9ycyhQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImIHBjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcikKIHsKICAgICBhdXRvIG1hcmtTbG93UGF0aElmTmVlZGVkID0gWyZdIChOb2Rl
KiBub2RlKSB7Ci0gICAgICAgIE9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNp
emVNYXJrZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtl
cj4gc2l6ZU1hcmtlcjsKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBERkdKSVRT
aXplU3RhdGlzdGljcygpKSkgewogICAgICAgICAgICAgU3RyaW5nIGlkID0gbWFrZVN0cmluZygi
REZHX3Nsb3dfIiwgbV9ncmFwaC5vcE5hbWUobm9kZS0+b3AoKSkpOwogICAgICAgICAgICAgc2l6
ZU1hcmtlciA9IHZtKCkuaml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgbV9qaXQpOwpA
QCAtODYyLDggKzg2Miw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSog
bm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gdGVtcDsKLSAgICBPcHRpb25hbDxHUFJSZWc+IHRlbXBHUFI7CisgICAgc3RkOjpvcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IHRlbXA7CisgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IHRlbXBHUFI7
CiAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheTo6SW50MzI6
CiAgICAgY2FzZSBBcnJheTo6RG91YmxlOgpAQCAtMTczMCw4ICsxNzMwLDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRl
SW50MzJPcGVyYW5kIHN0YXJ0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgc3Rh
cnRHUFIgPSBzdGFydC5ncHIoKTsKIAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFu
ZD4gZW5kOwotICAgIE9wdGlvbmFsPEdQUlJlZz4gZW5kR1BSOworICAgIHN0ZDo6b3B0aW9uYWw8
U3BlY3VsYXRlSW50MzJPcGVyYW5kPiBlbmQ7CisgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGVu
ZEdQUjsKICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpIHsKICAgICAgICAgZW5kLmVtcGxhY2UodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBlbmRHUFIuZW1wbGFjZShlbmQtPmdwcigpKTsK
QEAgLTIxMDcsNyArMjEwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50
QmxvY2soKQogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoMCksICZ2
bSgpLmRpZEVudGVyVk0pOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8SklUU2l6ZVN0
YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKSVRT
aXplU3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOwogICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6ZHVtcERGR0pJVFNpemVTdGF0aXN0aWNzKCkpKSB7CiAgICAgICAgICAgICBTdHJp
bmcgaWQgPSBtYWtlU3RyaW5nKCJERkdfZmFzdF8iLCBtX2dyYXBoLm9wTmFtZShtX2N1cnJlbnRO
b2RlLT5vcCgpKSk7CiAgICAgICAgICAgICBzaXplTWFya2VyID0gdm0oKS5qaXRTaXplU3RhdGlz
dGljcy0+bWFya1N0YXJ0KGlkLCBtX2ppdCk7CkBAIC00MTIxLDggKzQxMjEsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0
OwotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiBsZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHJpZ2h0OwogCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzOwpAQCAtNDMzOSw4ICs0MzM5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVu
dHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0gICAgT3B0aW9u
YWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKICAg
ICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3M7CkBAIC00
NzA2LDggKzQ3MDYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUq
IG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgIEVkZ2UmIGxlZnRD
aGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGls
ZDIoKTsKIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAgIE9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5k
PiBsZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCiAgICAg
SlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzOwpAQCAtNDcy
MCwxNCArNDcyMCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUq
IG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IEludmFsaWRG
UFJSZWc7CiAKLSAgICBPcHRpb25hbDxGUFJUZW1wb3Jhcnk+IGZwclNjcmF0Y2g7CisgICAgc3Rk
OjpvcHRpb25hbDxGUFJUZW1wb3Jhcnk+IGZwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRj
aEZQUlJlZykgewogICAgICAgICBmcHJTY3JhdGNoLmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNj
cmF0Y2hGUFIgPSBmcHJTY3JhdGNoLT5mcHIoKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKICAgICBpZiAobmVlZHNTY3JhdGNoR1BSUmVn
KSB7CiAgICAgICAgIGdwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgc2NyYXRjaEdQ
UiA9IGdwclNjcmF0Y2gtPmdwcigpOwpAQCAtNTM3Niw3ICs1Mzc2LDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUmVwYXRjaGluZ0Z1bmN0aW9uLCB0eXBlbmFtZSBO
b25SZXBhdGNoaW4KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9k
ZSwgSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBib29sIG5lZWRzU2NyYXRjaEdQ
UlJlZywgUmVwYXRjaGluZ0Z1bmN0aW9uIHJlcGF0Y2hpbmdGdW5jdGlvbiwgTm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKIHsKICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IEludmFsaWRHUFJSZWc7Ci0gICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBncHJTY3JhdGNo
OworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBncHJTY3JhdGNoOwogICAgIGlmIChu
ZWVkc1NjcmF0Y2hHUFJSZWcpIHsKICAgICAgICAgZ3ByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwog
ICAgICAgICBzY3JhdGNoR1BSID0gZ3ByU2NyYXRjaC0+Z3ByKCk7CkBAIC01NzQxLDggKzU3NDEs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKIAog
ICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOwogCi0gICAgT3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0
UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3M7CkBAIC05MDg2LDcgKzkwODYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UmVzdExlbmd0aChOb2RlKiBub2RlKQogICAg
IHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgoRWRnZSYgdGFyZ2V0LCBPcHRpb25hbDxHUFJS
ZWc+IGluZGV4R1BSLCBHUFJSZWcgbGVuZ3RoR1BSLCBHUFJSZWcgcmVzdWx0R1BSKQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFBvcHVsYXRlU2xpY2VJbmRleChFZGdlJiB0YXJnZXQsIHN0ZDo6
b3B0aW9uYWw8R1BSUmVnPiBpbmRleEdQUiwgR1BSUmVnIGxlbmd0aEdQUiwgR1BSUmVnIHJlc3Vs
dEdQUikKIHsKICAgICBpZiAodGFyZ2V0LT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICBp
bnQzMl90IHZhbHVlID0gdGFyZ2V0LT5hc0ludDMyKCk7CkBAIC05MTEwLDcgKzkxMTAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0UG9wdWxhdGVTbGljZUluZGV4KEVkZ2UmIHRhcmdldCwg
T3B0aW9uYWw8R1BSUmVnPiBpbmRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8U3BlY3VsYXRlSW50MzJPcGVyYW5kPiBpbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNw
ZWN1bGF0ZUludDMyT3BlcmFuZD4gaW5kZXg7CiAgICAgaWYgKCFpbmRleEdQUikgewogICAgICAg
ICBpbmRleC5lbXBsYWNlKHRoaXMsIHRhcmdldCk7CiAgICAgICAgIGluZGV4R1BSID0gaW5kZXgt
PmdwcigpOwpAQCAtMTAzMDYsNyArMTAzMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgYmFzZUVkZ2UpOwogICAgIHJlZ3MuYXBwZW5kKFNuaXBwZXRQYXJhbXM6OlZhbHVl
KGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCi0gICAg
T3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CiAgICAgaWYgKHNuaXBw
ZXQtPnJlcXVpcmVHbG9iYWxPYmplY3QpIHsKICAgICAgICAgRWRnZSYgZ2xvYmFsT2JqZWN0RWRn
ZSA9IG5vZGUtPmNoaWxkMigpOwogICAgICAgICBnbG9iYWxPYmplY3QuZW1wbGFjZSh0aGlzLCBn
bG9iYWxPYmplY3RFZGdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUyYTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYz
Li43NGMxNWU2OTdlMmNjMzJmNmU5YjJlN2MyNWE2ZTE4YzEzZDQwZDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTcwLDcgKzE1NzAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBs
ZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAgdm9pZCBlbWl0R2V0Q2Fs
bGVlKENvZGVPcmlnaW4sIEdQUlJlZyBjYWxsZWVHUFIpOwogICAgIHZvaWQgZW1pdEdldEFyZ3Vt
ZW50U3RhcnQoQ29kZU9yaWdpbiwgR1BSUmVnIHN0YXJ0R1BSKTsKLSAgICB2b2lkIGVtaXRQb3B1
bGF0ZVNsaWNlSW5kZXgoRWRnZSYsIE9wdGlvbmFsPEdQUlJlZz4gaW5kZXhHUFIsIEdQUlJlZyBs
ZW5ndGhHUFIsIEdQUlJlZyByZXN1bHRHUFIpOworICAgIHZvaWQgZW1pdFBvcHVsYXRlU2xpY2VJ
bmRleChFZGdlJiwgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGluZGV4R1BSLCBHUFJSZWcgbGVuZ3Ro
R1BSLCBHUFJSZWcgcmVzdWx0R1BSKTsKICAgICAKICAgICAvLyBHZW5lcmF0ZSBhbiBPU1IgZXhp
dCBmdXp6IGNoZWNrLiBSZXR1cm5zIEp1bXAoKSBpZiBPU1IgZXhpdCBmdXp6IGlzIG5vdCBlbmFi
bGVkLCBvciBpZgogICAgIC8vIGl0J3MgaW4gdHJhaW5pbmcgbW9kZS4KQEAgLTE3NjYsNyArMTc2
Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFZlY3RvcjxTbG93UGF0aExhbWJkYT4gbV9zbG93
UGF0aExhbWJkYXM7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4+IG1fcGxhbnM7
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXg7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRPZkxpbmVTdHJlYW1JbmRleDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggYjU3YzM3YWEwNWRkNDkwOTFjN2ZhMzY1MGY4YmJmZjc1MjM3ZjYzOS4uZjEyZjg2
ZjBkNjg5YzU0NjAzZWYwZGYzYzA3N2EyMTRiZTFmOTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MDAxLDgg
KzQwMDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmVJRCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4g
a2V5QXNDZWxsOwotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVlOwogICAgICAg
ICBKU1ZhbHVlUmVncyBrZXlSZWdzOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgICAgIGtleUFzVmFsdWUuZW1wbGFjZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiOTExOGI2MmU4N2Q5NzBhYzU0NjFmNjNiZDNjMzgw
ZmI4YjAxMjYwLi5lZjhiYTM4NjhlODU4N2MxNGMzNzQwMmI4YmMzODQzMDljODEyMGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTE5MzIsNyArMTkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xl
YW4oTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAKICAgICAgICAgYm9vbCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJ
c1N0aWxsVmFsaWQoKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkgewogICAgICAgICAgICAgc2NyYXRjaC5lbXBsYWNlKHRoaXMpOwpAQCAtMjA4Nyw3ICsyMDg3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSBmcHJWYWx1ZSh0aGlzKTsKICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBmcHJUZW1wKHRoaXMp
OwotICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNoOworICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CiAKICAgICAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgIGJvb2wgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKCk7CkBAIC0yODMwLDggKzI4MzAsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHJlc3VsdDsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlJl
Zz4gcmVzdWx0UmVnOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHJl
c3VsdDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiByZXN1bHRSZWc7CiAgICAg
ICAgICAgICBpZiAoIXJlc3VsdElzVW5ib3hlZCkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5l
bXBsYWNlKHRoaXMpOwogICAgICAgICAgICAgICAgIHJlc3VsdFJlZyA9IHJlc3VsdC0+Z3ByKCk7
CkBAIC0zMjk2LDcgKzMyOTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAvLyBXZSBhcmUgaW4gZ2VuZXJpYyBtb2RlIQogICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBpbmRleCh0aGlzLCBpbmRleEVkZ2UpOwotICAgICAgICAgICAgT3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGFyZ3NbMl07CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFs
dWVPcGVyYW5kPiBhcmdzWzJdOwogICAgICAgICAgICAgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbnVtRXh0cmFBcmdzOyBpLS07KSB7CkBAIC00MDcxLDcgKzQwNzEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyBjZWxs
R1BSID0gY2VsbC5ncHIoKTsKIAogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gdGVtcDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXA7CiAgICAgICAgIGlmIChub2RlLT5zdHJ1Y3R1cmVT
ZXQoKS5zaXplKCkgPiAxKSB7CiAgICAgICAgICAgICB0ZW1wLmVtcGxhY2UodGhpcyk7CiAgICAg
ICAgICAgICB0ZW1wR1BSID0gdGVtcC0+Z3ByKCk7CkBAIC00NTA5LDcgKzQ1MDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgU3RyaW5n
VXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBpbnB1dCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAg
ICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXA7CiAKICAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSkgewpAQCAtNDk2OCw4ICs0OTY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQo
dGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAgICAgT3B0
aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKLSAgICAgICAgT3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3Vs
YXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgR1BSUmVnIGtleUdQUjsKICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CiAgICAgICAgICAgICBr
ZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtNTI1OCw3ICs1MjU4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgICAgIEdQUlJlZyB0MiA9IHRlbXAyLmdwcigp
OwogCi0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiBpc0xpdHRsZUVu
ZGlhbk9wZXJhbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJh
bmQ+IGlzTGl0dGxlRW5kaWFuT3BlcmFuZDsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQog
ICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hp
bGQzKCkpOwogICAgICAgICBHUFJSZWcgaXNMaXR0bGVFbmRpYW5HUFIgPSBpc0xpdHRsZUVuZGlh
bk9wZXJhbmQgPyBpc0xpdHRsZUVuZGlhbk9wZXJhbmQtPmdwcigpIDogSW52YWxpZEdQUlJlZzsK
QEAgLTU0MjIsMTAgKzU0MjIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4
LmdwcigpOwogCi0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZD4g
aW50NTJWYWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlRG91YmxlT3BlcmFuZD4gZG91
YmxlVmFsdWU7Ci0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4gaW50MzJW
YWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wb3Jhcnk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kPiBpbnQ1MlZhbHVl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ+IGRvdWJsZVZh
bHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4gaW50MzJW
YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGUFJUZW1wb3Jhcnk+IGZwclRlbXBvcmFyeTsK
ICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgRlBSUmVn
IHZhbHVlRlBSID0gSW52YWxpZEZQUlJlZzsKICAgICAgICAgRlBSUmVnIHRlbXBGUFIgPSBJbnZh
bGlkRlBSUmVnOwpAQCAtNTQ2MSw3ICs1NDYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDModGhpcyk7CiAgICAg
ICAgIEdQUlJlZyB0MyA9IHRlbXAzLmdwcigpOwogCi0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0
ZUJvb2xlYW5PcGVyYW5kPiBpc0xpdHRsZUVuZGlhbk9wZXJhbmQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ+IGlzTGl0dGxlRW5kaWFuT3BlcmFuZDsKICAg
ICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpCiAgICAgICAgICAgICBpc0xp
dHRsZUVuZGlhbk9wZXJhbmQuZW1wbGFjZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDMpKTsKICAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0bGVFbmRpYW5P
cGVyYW5kID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRHUFJSZWc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4NWY5Mjc0NDBmYzkxMTA3
Li40N2RkMTcxODRhMWU3ZTFhMzI2YWM1ODgzZTQyOGU4MjI5MjlkYThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgICAgICAmJiBtX25vZGUt
PmNoaWxkMigpLT5pc051bWJlckNvbnN0YW50KCkpIHsKIAotICAgICAgICAgICAgICAgIGlmIChP
cHRpb25hbDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3Qo
bV9ub2RlLT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29u
c3QobV9ub2RlLT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcmVjaXByb2NhbE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25v
ZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpzRG91YmxlTnVtYmVyKCpyZWNpcHJvY2FsKSwgRG91
YmxlQ29uc3RhbnQpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnNldE9wKEFyaXRoTXVs
KTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSA9IEVkZ2UocmVjaXByb2Nh
bE5vZGUsIERvdWJsZVJlcFVzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA0MzdjZTU4YWQyNTZkMmY0
Yzg3YmUxMDk0MjdhNzg5MjhmMzEwOTVhLi4xMTc2ZDNlN2FmMjgzMzJiMDMwNzQxYjRkOWM0MGYw
YmVmMWQwMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29k
ZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8
SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZh
bHVlcygpOworICAgICAgICAgICAgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVl
Pj4mIG11c3RIYW5kbGVWYWx1ZXMgPSBtX2dyYXBoLm1fcGxhbi5tdXN0SGFuZGxlVmFsdWVzKCk7
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11c3RIYW5kbGVWYWx1ZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBPcGVyYW5kIG9wZXJhbmQgPSBtdXN0SGFuZGxl
VmFsdWVzLm9wZXJhbmRGb3JJbmRleChpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNDY4LDcgKzQ2OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIGlmICghVHlwZUNoZWNrOjppc1ZhbGlkVG9Ib2lzdChpdGVyLT52YWx1ZSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWU+
IHZhbHVlID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWU+IHZhbHVlID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKICAgICAgICAgICAgICAg
ICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS52YWx1ZSgpIHx8ICF2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgp
IHx8IFR5cGVDaGVjazo6aXNDb250cmF2ZW5lZEJ5VmFsdWUoaXRlci0+dmFsdWUsIHZhbHVlLnZh
bHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFR5cGVDaGVjazo6ZGlzYWJsZUhvaXN0aW5n
KGl0ZXItPnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAppbmRleCAwYzY1Yjk2MDdkMjkzNWFkMDFlMWNh
MDE0NzhhNzQ1YjdhYThhMjI3Li5iZGE2OTU5YzgwM2UxZjg3ZjljYzY3ZGU5MzEwZDg1OTEyMjFh
M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKQEAgLTE2Mywx
OSArMTYzLDE5IEBAIFJlZ2lzdGVyU2V0IEpJVENvZGU6OmxpdmVSZWdpc3RlcnNUb1ByZXNlcnZl
QXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJs
b2NrLCB2b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBD
KENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQmIGV4
aXQgOiBtX29zckV4aXQpIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhh
bmRsZSA9IGV4aXQubV9jb2RlLmV4ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYg
KGhhbmRsZS0+c3RhcnQoKS51bnRhZ2dlZFB0cigpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5lbmQo
KS51bnRhZ2dlZFB0cigpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3Jp
Z2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQ
cm9maWxlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPExh
enlTbG93UGF0aD4mIGxhenlTbG93UGF0aCA6IGxhenlTbG93UGF0aHMpIHsKICAgICAgICAgaWYg
KEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGxhenlTbG93UGF0aC0+c3R1YigpLmV4
ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKS51bnRh
Z2dlZFB0cigpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5lbmQoKS51bnRhZ2dlZFB0cigpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihjb2RlQmxvY2stPmNvZGVP
cmlnaW4obGF6eVNsb3dQYXRoLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihjb2RlQmxvY2stPmNvZGVPcmlnaW4obGF6
eVNsb3dQYXRoLT5jYWxsU2l0ZUluZGV4KCkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAppbmRleCBlN2I4ZThiM2NlNGI0NmVjMzI1ZjM3
MDRlM2RlZWNhMDhlZWRhYjIzLi4xOGI4YWMzM2RmY2QwNDUzMGI3MzhmNzdjYjdmZGM2OTlkMTg1
NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0
RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVy
cmlkZTsKIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lk
KiBwYykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29k
ZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwogCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBiM0NvZGUoKSBjb25zdCB7IHJldHVybiBtX2IzQ29kZTsgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDgxNjdmYTNkMDUyYzEw
YmRmMWI2ZjY0OTBjZTM1OTA3ZGFkOGJmMzUuLjgzMGZiYjgzZWRhMGY1ODVjY2Q2MDU3NmZiY2Zk
NjIzY2E1YzVjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTE1ODcyLDggKzE1ODcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKGZh
c3RDYXNlKTsKIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhdGljVmVjdG9yTGVuZ3Ro
OwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhdGljVmVjdG9yTGVuZ3RoRnJvbVB1Ymxp
Y0xlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhdGljVmVjdG9yTGVu
Z3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGF0aWNWZWN0b3JMZW5ndGhG
cm9tUHVibGljTGVuZ3RoOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNJbnRQdHIoKSkgewog
ICAgICAgICAgICAgaWYgKHB1YmxpY0xlbmd0aC0+aGFzSW50MzIoKSkgewogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0aENvbnN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHB1
YmxpY0xlbmd0aC0+YXNJbnQzMigpKTsKQEAgLTE4MzAxLDcgKzE4MzAxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAganNWYWx1ZVRvU3RyaWN0SW50NTIoZWRnZSwgbG93SlNWYWx1ZShlZGdlLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNDZWxsV2l0aFR5
cGUoTFZhbHVlIGNlbGwsIEpTVHlwZVJhbmdlIHF1ZXJpZWRUeXBlUmFuZ2UsIE9wdGlvbmFsPFNw
ZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5LCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBK
U1R5cGVSYW5nZSBxdWVyaWVkVHlwZVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBl
PiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCiAgICAgewogICAgICAgICBpZiAoc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkgewogICAgICAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwg
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeS52YWx1ZSgpKSkKQEAgLTE4MzIwLDcgKzE4MzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93T3JFcXVhbChmaXJzdCwgbV9vdXQu
Y29uc3RJbnQzMihxdWVyaWVkVHlwZVJhbmdlLmxhc3QgLSBxdWVyaWVkVHlwZVJhbmdlLmZpcnN0
KSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBKU1R5
cGUgcXVlcmllZFR5cGUsIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZv
clF1ZXJ5LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlz
Q2VsbFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBKU1R5cGUgcXVlcmllZFR5cGUsIHN0ZDo6b3B0aW9u
YWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnksIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0NlbGxXaXRoVHlw
ZShjZWxsLCBKU1R5cGVSYW5nZSB7IHF1ZXJpZWRUeXBlLCBxdWVyaWVkVHlwZSB9LCBzcGVjdWxh
dGVkVHlwZUZvclF1ZXJ5LCB0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRW50cnkuY3BwCmluZGV4IDA0MWFjZGZmNzQxOTAzODEyNjYzODMxZTk5ZWE1ZmY0ODQ4
MGNjNDAuLjY3NDhlNmI3NDE0NTI3MThlYmQwY2FkNGU0N2Y5Y2IzNjA1M2JiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCkBAIC02NSwxNSArNjUsMTUgQEAg
dm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgCi0gICAgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IHZhbHVlczsKKyAgICBPcGVyYW5k
czxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiB2YWx1ZXM7CiAgICAgZGZnQ29kZS0+cmVjb25zdHJ1
Y3QoY2FsbEZyYW1lLCBkZmdDb2RlQmxvY2ssIENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCksIHN0
cmVhbUluZGV4LCB2YWx1ZXMpOwogICAgIAogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSwgIiAgICBWYWx1ZXMgYXQgZW50cnk6ICIsIHZhbHVlcyk7CiAgICAgCi0gICAgT3B0
aW9uYWw8SlNWYWx1ZT4gcmVjb25zdHJ1Y3RlZFRoaXM7CisgICAgc3RkOjpvcHRpb25hbDxKU1Zh
bHVlPiByZWNvbnN0cnVjdGVkVGhpczsKICAgICBmb3IgKGludCBhcmd1bWVudCA9IHZhbHVlcy5u
dW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgewogICAgICAgICBKU1ZhbHVlIHZhbHVl
T25TdGFjayA9IGNhbGxGcmFtZS0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoYXJndW1lbnQpKS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwotICAgICAgICBPcHRpb25hbDxK
U1ZhbHVlPiByZWNvbnN0cnVjdGVkVmFsdWUgPSB2YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IHJlY29uc3RydWN0ZWRWYWx1ZSA9IHZhbHVl
cy5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWVUb1ZhbGlkYXRlID0gcmVjb25zdHJ1Y3RlZFZhbHVlID8gKnJlY29uc3RydWN0ZWRWYWx1ZSA6
IHZhbHVlT25TdGFjazsKICAgICAgICAgICAgIGF1dG8gZmx1c2hGb3JtYXQgPSBlbnRyeUNvZGUt
PmFyZ3VtZW50Rmx1c2hGb3JtYXRzKClbYXJndW1lbnRdOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICAgICAgZW50cnlDb2RlLT5lbnRyeUJ1ZmZlcigpLT5k
YXRhQnVmZmVyKCkpOwogICAgIAogICAgIGZvciAoaW50IGxvY2FsID0gdmFsdWVzLm51bWJlck9m
TG9jYWxzKCk7IGxvY2FsLS07KSB7Ci0gICAgICAgIE9wdGlvbmFsPEpTVmFsdWU+IHZhbHVlID0g
dmFsdWVzLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiB2YWx1
ZSA9IHZhbHVlcy5sb2NhbChsb2NhbCk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAg
IHNjcmF0Y2hbbG9jYWxdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlLnZhbHVlKCkpOwogICAgICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1JlcXVlc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDUmVxdWVzdC5oCmluZGV4IGE4YTVjZDYx
ZjA2NDRmMWM0N2JmYjFlY2VhMTZjMGNkZmQ4MWQ0ODguLjJlODFjMDJhYWY1MDRmNWEyZTg3Zjdm
MTlmN2M1OTk3ZTk4YTRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDUmVxdWVzdC5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBHQ1JlcXVlc3QgewogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgR0NSZXF1ZXN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCisgICAgR0NS
ZXF1ZXN0KHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAgICAgICAgOiBz
Y29wZShzY29wZSkKICAgICB7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgR0NSZXF1
ZXN0IHsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKLSAg
ICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29s
bGVjdGlvblNjb3BlPiBzY29wZTsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiBkaWRG
aW5pc2hFbmRQaGFzZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXgg
MWM4ZmJkOTdhYTc3MWNiYzczZmYzZjY0YmFlY2QwZjU5MmI3N2UxOS4uY2IwNzliZjc1YTFkNzQ4
NGM4YjI4NzdiNDI0ODM1ZDQ2NzJjMDk4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBTaW1wbGVTdGF0cyYgdGltaW5nU3RhdHMoY29uc3QgY2hh
ciogbmFtZSwgQ29sbGVjdGlvblNjb3BlIHNjb3BlKQogCiBjbGFzcyBUaW1pbmdTY29wZSB7CiBw
dWJsaWM6Ci0gICAgVGltaW5nU2NvcGUoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwg
Y29uc3QgY2hhciogbmFtZSkKKyAgICBUaW1pbmdTY29wZShzdGQ6Om9wdGlvbmFsPENvbGxlY3Rp
b25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIDogbV9zY29wZShzY29w
ZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CkBAIC0yMDAsNyArMjAwLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRTY29wZShPcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+IHNjb3BlKQorICAgIHZvaWQgc2V0U2NvcGUoc3RkOjpvcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+IHNjb3BlKQogICAgIHsKICAgICAgICAgbV9zY29wZSA9IHNjb3BlOwogICAg
IH0KQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9zY29wZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gbV9zY29wZTsKICAgICBNb25vdG9uaWNUaW1lIG1fYmVmb3Jl
OwogICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgK
aW5kZXggM2FkNzgxYWNjODE5MDA1OGI0MDJhNzIwODM4MGRlYzUwMWRiMjNjMS4uZTMwZGNkZTY3
NTgyZjZmNDFiMjA5MmNmOGE1MTA3NjMzZjI0NGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3Qob2JzZXJ2
ZXIpOyB9CiAKICAgICBNdXRhdG9yU3RhdGUgbXV0YXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRhdG9yU3RhdGU7IH0KLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rp
b25TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGVjdGlvblNjb3BlOyB9CisgICAgc3RkOjpv
cHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rpb25TY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sbGVjdGlvblNjb3BlOyB9CiAgICAgYm9vbCBoYXNIZWFwQWNjZXNzKCkgY29uc3Q7CiAg
ICAgYm9vbCB3b3JsZElzU3RvcHBlZCgpIGNvbnN0OwogICAgIGJvb2wgd29ybGRJc1J1bm5pbmco
KSBjb25zdCB7IHJldHVybiAhd29ybGRJc1N0b3BwZWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKaW5kZXggZmU0NDdkZjc3YTIxYTY5YzQ4YTM2ZDQ4
NmFjMjUyMjE4MDE4Y2MxNi4uMWMyYzg1NmU5NzI4MjQ1MWRhYWRjZDA3NzBjM2RiYmVhZGQ5Njlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwCkBAIC0x
MzEsNyArMTMxLDcgQEAgdm9pZCBIZWFwU25hcHNob3Q6OmZpbmFsaXplKCkKICNlbmRpZgogfQog
Ci1PcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpT
Q2VsbCogY2VsbCkKK3N0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90
Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKG1fZmluYWxpemVkKTsK
IApAQCAtMTQzLDcgKzE0Myw3IEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFw
c2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogICAgICAgICAgICAgdW5zaWduZWQgbWlk
ZGxlID0gc3RhcnQgKyAoKGVuZCAtIHN0YXJ0KSAvIDIpOwogICAgICAgICAgICAgSGVhcFNuYXBz
aG90Tm9kZSYgbm9kZSA9IG1fbm9kZXNbbWlkZGxlXTsKICAgICAgICAgICAgIGlmIChjZWxsID09
IG5vZGUuY2VsbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8SGVhcFNuYXBzaG90
Tm9kZT4obm9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4obm9kZSk7CiAgICAgICAgICAgICBpZiAoY2VsbCA8IG5vZGUuY2VsbCkKICAg
ICAgICAgICAgICAgICBlbmQgPSBtaWRkbGU7CiAgICAgICAgICAgICBlbHNlCkBAIC0xNTcsNyAr
MTU3LDcgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9y
Q2VsbChKU0NlbGwqIGNlbGwpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9u
YWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmll
cih1bnNpZ25lZCBvYmplY3RJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3RO
b2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVj
dElkZW50aWZpZXIpCiB7CiAgICAgaWYgKGlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9wcmV2
aW91cykKQEAgLTE3Niw3ICsxNzYsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFw
U25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdAogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbV9ub2RlcykgewogICAgICAgICBpZiAobm9kZS5pZGVudGlmaWVy
ID09IG9iamVjdElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4obm9kZSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxIZWFw
U25hcHNob3ROb2RlPihub2RlKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaAppbmRleCA0NTE3MWE0M2Rl
MTljMTkyZmMwZDBiMWVlODg4ZDM4ZDZmMWFiNTY0Li4zYTIzMWM3OWQ3MjBkMzMxOTQxZmJlMjk2
ZmUyY2JmOTU3MGM0NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU25hcHNob3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3QuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5hbGl6ZSgpOwogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlcy5pc0VtcHR5KCk7IH0KLSAg
ICBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBub2RlRm9yQ2VsbChKU0NlbGwqKTsKLSAgICBP
cHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25l
ZCBvYmplY3RJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+
IG5vZGVGb3JDZWxsKEpTQ2VsbCopOworICAgIHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9k
ZT4gbm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcik7CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBTbmFwc2hvdEJ1aWxkZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5j
cHAKaW5kZXggNmM3ZmE2YzA4ZmUwOWMwZDg1OTc5OGRhYjVlY2I0YjAyMjVlNjlkYS4uMDY5MGM2
NjA1YTAzZDRkNTdjOWVlODA0YzY3M2I0MmQwYjMwODYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcApAQCAtNTUs
NyArNTUsNyBAQCBib29sIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpkaWRWaXNpdFNvbWV0aGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50
U29sdmVyOjpleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVkTGFt
YmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCkKK3ZvaWQgTWFya2luZ0NvbnN0cmFp
bnRTb2x2ZXI6OmV4ZWN1dGUoU2NoZWR1bGVyUHJlZmVyZW5jZSBwcmVmZXJlbmNlLCBTY29wZWRM
YW1iZGE8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKT4gcGlja05leHQpCiB7CiAgICAgbV9waWNr
TmV4dElzU3RpbGxBY3RpdmUgPSB0cnVlOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX251bVRocmVh
ZHNUaGF0TWF5UHJvZHVjZVdvcmspOwpAQCAtODgsOCArODgsOCBAQCB2b2lkIE1hcmtpbmdDb25z
dHJhaW50U29sdmVyOjpkcmFpbihCaXRWZWN0b3ImIHVuZXhlY3V0ZWQpCiAgICAgYXV0byBlbmQg
PSB1bmV4ZWN1dGVkLmVuZCgpOwogICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgcmV0dXJu
OwotICAgIGF1dG8gcGlja05leHQgPSBzY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+
KAotICAgICAgICBbJl0gKCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKKyAgICBhdXRvIHBpY2tO
ZXh0ID0gc2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCk+KAorICAgICAgICBb
Jl0gKCkgLT4gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICAgICAgaWYgKGl0ZXIg
PT0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICByZXR1cm4gKml0ZXIrKzsKQEAgLTEyNSw4ICsxMjUsOCBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U29sdmVyOjpjb252ZXJnZShjb25zdCBWZWN0b3I8TWFya2luZ0NvbnN0cmFpbnQqPiYgb3Jk
ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGF1dG8gcGlja05leHQg
PSBzY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+KAotICAgICAgICBbJl0gKCkgLT4g
T3B0aW9uYWw8dW5zaWduZWQ+IHsKKyAgICBhdXRvIHBpY2tOZXh0ID0gc2NvcGVkTGFtYmRhPHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCk+KAorICAgICAgICBbJl0gKCkgLT4gc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gewogICAgICAgICAgICAgaWYgKGRpZFZpc2l0U29tZXRoaW5nKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIApAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXI6OmFkZFBhcmFsbGVsVGFzayhS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yCiAgICAgbV90b0V4ZWN1dGVJblBhcmFs
bGVsLmFwcGVuZChUYXNrV2l0aENvbnN0cmFpbnQoV1RGTW92ZSh0YXNrKSwgJmNvbnN0cmFpbnQp
KTsKIH0KIAotdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6cnVuRXhlY3V0aW9uVGhyZWFk
KFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBTY2hlZHVsZXJQcmVmZXJlbmNlIHByZWZlcmVuY2UsIFNj
b3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25lZD4oKT4gcGlja05leHQpCit2b2lkIE1hcmtpbmdD
b25zdHJhaW50U29sdmVyOjpydW5FeGVjdXRpb25UaHJlYWQoU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+KCk+IHBpY2tOZXh0KQogewogICAgIGZvciAoOzspIHsKICAgICAgICAgYm9v
bCBkb1BhcmFsbGVsV29ya01vZGU7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBNYXJraW5nQ29u
c3RyYWludFNvbHZlcjo6cnVuRXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBT
Y2hlZHVsZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwaWNrUmVzdWx0ID0gcGlja05leHQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHBpY2tSZXN1
bHQgPSBwaWNrTmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaWNrUmVzdWx0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9waWNrTmV4dElzU3RpbGxBY3RpdmUg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIu
aAppbmRleCA4ZTRmMmY0ZGRmMzFjZmM4MDcxY2YzYmVjYjZlNWUyNzhhZWNiMDFlLi5mNjNmNWM2
N2EwMjgyZTFkOTUxMDI2YmMzYWFjYTllODFiZDg3OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmgKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgICAgICBOZXh0Q29uc3RyYWludEZpcnN0CiAgICAgfTsKIAotICAg
IHZvaWQgZXhlY3V0ZShTY2hlZHVsZXJQcmVmZXJlbmNlLCBTY29wZWRMYW1iZGE8T3B0aW9uYWw8
dW5zaWduZWQ+KCk+IHBpY2tOZXh0KTsKKyAgICB2b2lkIGV4ZWN1dGUoU2NoZWR1bGVyUHJlZmVy
ZW5jZSwgU2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCk+IHBpY2tOZXh0KTsK
ICAgICAKICAgICB2b2lkIGRyYWluKEJpdFZlY3RvciYgdW5leGVjdXRlZCk7CiAgICAgCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBhcmFsbGVsVGFzayhSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiwgTWFya2luZ0NvbnN0cmFpbnQmKTsKICAgICAK
IHByaXZhdGU6Ci0gICAgdm9pZCBydW5FeGVjdXRpb25UaHJlYWQoU2xvdFZpc2l0b3ImLCBTY2hl
ZHVsZXJQcmVmZXJlbmNlLCBTY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+IHBpY2tO
ZXh0KTsKKyAgICB2b2lkIHJ1bkV4ZWN1dGlvblRocmVhZChTbG90VmlzaXRvciYsIFNjaGVkdWxl
clByZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNr
TmV4dCk7CiAgICAgCiAgICAgc3RydWN0IFRhc2tXaXRoQ29uc3RyYWludCB7CiAgICAgICAgIFRh
c2tXaXRoQ29uc3RyYWludCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA2NWY4ZDZiZjE3YWYyN2I1NTlkNWJlZjMw
ODk3NTdmZmE4NWM1NGRlLi44YjI5MGZhZWJjMTg2NTUxOWIwZTdjNTE0ZjQ5NzU4NWRmYzBiYmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcApAQCAtNTYsNyArNTYsNyBAQCBJbmplY3RlZFNjcmlwdDo6fkluamVjdGVkU2NyaXB0
KCkKIHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXhlY3V0ZShQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uU3RyaW5nLCBFeGVjdXRl
T3B0aW9ucyYmIG9wdGlvbnMsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZl
ZFJlc3VsdEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXhlY3V0ZShQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uU3RyaW5nLCBFeGVj
dXRlT3B0aW9ucyYmIG9wdGlvbnMsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9u
YWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV4ZWN1dGUiX3MsIGlu
c3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25TdHJpbmcpOwpAQCAtNjksNyArNjksNyBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZgogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rp
b24sIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAotdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29s
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRl
UHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJv
b2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhw
cmVzc2lvbik7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmF3YWl0UHJv
bWlzZShjb25zdCBTdHJpbmcmIHByb21pc2VPYmplY3RJZCwgYm9vbCByZXR1cm5CeVZhCiAgICAg
bWFrZUFzeW5jQ2FsbChmdW5jdGlvbiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIElu
amVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1
bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiB3YXNUaHJvd24pCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25PbiJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdAogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJldHVybkJ5VmFsdWUp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7CiAKLSAgICBP
cHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNh
dmVkUmVzdWx0SW5kZXg7CiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwg
cmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogICAgIEFTU0VSVCghc2F2ZWRS
ZXN1bHRJbmRleCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJh
bWUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIGNhbGxG
cmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3Vs
dCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlv
bmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2
b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcm
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNU
aHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImV2YWx1YXRlT25DYWxsRnJhbWUiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1l
cyk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlv
bkVudHJpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KICAgICBlbnRy
aWVzID0gUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6Q29sbGVjdGlvbkVudHJ5Pj46OnJ1bnRpbWVDYXN0KHJlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2ZVJlc3VsdChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIE9w
dGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2NyaXB0OjpzYXZl
UmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
Y2FsbEFyZ3VtZW50SlNPTiwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQog
ewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAic2F2ZVJlc3VsdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsQXJn
dW1lbnRKU09OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuaAppbmRleCA1OWMwN2EzNDFlYWEyNzg4ZjMxODlmYjZjMzllMmY2YjYzMzg1OWM0
Li5lNmIyNDk2NzI3MzA5NWFlNDI0YWM5YjNmZTVlMDgxZWU4OTk5YWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC01OSwxMiAr
NTksMTIgQEAgcHVibGljOgogICAgICAgICBib29sIHNhdmVSZXN1bHQgeyBmYWxzZSB9OwogICAg
ICAgICBWZWN0b3I8SlNDOjpKU1ZhbHVlPiBhcmdzOwogICAgIH07Ci0gICAgdm9pZCBleGVjdXRl
KFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJpbmcsIEV4
ZWN1dGVPcHRpb25zJiYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJl
c3VsdEluZGV4KTsKKyAgICB2b2lkIGV4ZWN1dGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvblN0cmluZywgRXhlY3V0ZU9wdGlvbnMmJiwgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
IHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKIAotICAg
IHZvaWQgZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZl
UmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
T3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRl
eCk7CisgICAgdm9pZCBldmFsdWF0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBi
b29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCk7CiAgICAgdm9pZCBhd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcsIGJvb2wgc2F2ZVJlc3VsdCwgQXN5bmNDYWxsQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBldmFs
dWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYsIEpTQzo6SlNWYWx1ZSBjYWxs
RnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1
bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRp
b25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsK
LSAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29s
PiYgd2FzVGhyb3duKTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZy
YW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBn
ZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwg
c3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICB2b2lkIGNhbGxGdW5j
dGlvbk9uKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24p
OwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rp
b25EZXRhaWxzPiYgcmVzdWx0KTsKICAgICB2b2lkIGZ1bmN0aW9uRGV0YWlscyhQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1
bmN0aW9uRGV0YWlscz4mIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQcmV2aWV3KFByb3RvY29sOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6T2JqZWN0UHJldmlldz4mIHJlc3VsdCk7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQgZmV0Y2hTdGFydCwgaW50IGZldGNoQ291bnQs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRJbnRlcm5h
bFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpS
dW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQpOwogICAgIHZvaWQg
Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgaW50IGZldGNoU3RhcnQsIGlu
dCBmZXRjaENvdW50LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29s
bGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpOwotICAgIHZvaWQgc2F2ZVJlc3VsdChQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIE9wdGlvbmFsPGlu
dD4mIHNhdmVkUmVzdWx0SW5kZXgpOworICAgIHZvaWQgc2F2ZVJlc3VsdChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6b3B0aW9uYWw8
aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CiAKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSkgY29u
c3Q7CiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBPYmpl
Y3QoSlNDOjpKU1ZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggMTViMDE2ZmNkYjUwMmRlZDEz
M2U1MDdmMTMwM2MzNzQ0ZTY3ZTgzNC4uZGE3ZTA5Y2Q3OTE5YjBiYmY2MjA1NmM0N2VhMTk2NThk
OWI4ODUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIFJlZjxKU09OOjpWYWx1
ZT4gSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwmIGZ1CiAgICAgcmV0dXJuIHJlc3VsdEpTT05WYWx1ZS5yZWxlYXNlTm9uTnVsbCgpOwog
fQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVu
Y3Rpb24sIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgb3V0X3Jlc3Vs
dE9iamVjdCwgT3B0aW9uYWw8Ym9vbD4mIG91dF93YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIG91
dF9zYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2Fs
bChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6
Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7Ci0gICAgY2hlY2tDYWxsUmVzdWx0
KGVycm9yU3RyaW5nLCBtYWtlQ2FsbChmdW5jdGlvbiksIG91dF9yZXN1bHRPYmplY3QsIG91dF93
YXNUaHJvd24sIG91dF9zYXZlZFJlc3VsdEluZGV4KTsKKyAgICBjaGVja0NhbGxSZXN1bHQoZXJy
b3JTdHJpbmcsIG1ha2VDYWxsKGZ1bmN0aW9uKSwgcmVzdWx0T2JqZWN0LCB3YXNUaHJvd24sIHNh
dmVkUmVzdWx0SW5kZXgpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5j
Q2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBBc3luY0NhbGxD
YWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVu
Y3Rpb24sCiAgICAgfQogfQogCi12b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVz
dWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIG91dF9y
ZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+JiBvdXRfd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+
JiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjaGVja0Nh
bGxSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTT046
OlZhbHVlPiByZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9u
YWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAg
ICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5Il9z
OwpAQCAtMTYxLDI4ICsxNjEsMjkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmNoZWNrQ2Fs
bFJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdl
dE9iamVjdCgicmVzdWx0Il9zKTsKLSAgICBpZiAoIXJlc3VsdE9iamVjdCkgeworICAgIGF1dG8g
dHlwZWxlc3NSZXN1bHRPYmplY3QgPSByZXN1bHRUdXBsZS0+Z2V0T2JqZWN0KCJyZXN1bHQiX3Mp
OworICAgIGlmICghdHlwZWxlc3NSZXN1bHRPYmplY3QpIHsKKyAgICAgICAgLy8gRklYTUU6IFdo
eSBkbyB3ZSBib3RoZXIgY2hlY2tpbmcgZm9yIG51bGwgaGVyZSwgYnV0IG5vdCBjaGVja2luZyB0
aGF0IHRoZSB0eXBlIGlzIFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q/IFN1cmVseSB0
aGUgdHdvIHBvc3NpYmxlIGVycm9ycyBnbyBoYW5kIGluIGhhbmQuCiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQg
d2FzVGhyb3duIGZsYWciX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvdXRfd2Fz
VGhyb3duID0gcmVzdWx0VHVwbGUtPmdldEJvb2xlYW4oIndhc1Rocm93biJfcyk7Ci0gICAgaWYg
KCFvdXRfd2FzVGhyb3duKSB7CisgICAgd2FzVGhyb3duID0gcmVzdWx0VHVwbGUtPmdldEJvb2xl
YW4oIndhc1Rocm93biJfcyk7CisgICAgaWYgKCF3YXNUaHJvd24pIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFu
ZCB3YXNUaHJvd24gZmxhZyJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG91dF9y
ZXN1bHRPYmplY3QgPSBQcm90b2NvbDo6QmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqZWN0LnJlbGVhc2VOb25OdWxsKCkp
OwotICAgIG91dF9zYXZlZFJlc3VsdEluZGV4ID0gcmVzdWx0VHVwbGUtPmdldEludGVnZXIoInNh
dmVkUmVzdWx0SW5kZXgiX3MpOworICAgIHJlc3VsdE9iamVjdCA9IFByb3RvY29sOjpCaW5kaW5n
VHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdCh0eXBl
bGVzc1Jlc3VsdE9iamVjdC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBzYXZlZFJlc3VsdEluZGV4
ID0gcmVzdWx0VHVwbGUtPmdldEludGVnZXIoInNhdmVkUmVzdWx0SW5kZXgiX3MpOwogfQogCiB2
b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tBc3luY0NhbGxSZXN1bHQoUmVmUHRyPEpTT046
OlZhbHVlPiByZXN1bHQsIGNvbnN0IEFzeW5jQ2FsbENhbGxiYWNrJiBjYWxsYmFjaykKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdE9iamVjdDsKLSAgICBPcHRpb25hbDxib29s
PiB3YXNUaHJvd247Ci0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gd2FzVGhyb3duOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZl
ZFJlc3VsdEluZGV4OwogCiAgICAgY2hlY2tDYWxsUmVzdWx0KGVycm9yU3RyaW5nLCByZXN1bHQs
IHJlc3VsdE9iamVjdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKaW5k
ZXggZjRlNmEwZmVlYTQxMWNkMDU4NTk4NGJkNzRhY2M0YjI0YWE4ZWQwZi4uNjM3NmJmMTM2Y2U3
Y2QzMmM0YjIzOTg2NjRiMDc2NGM1MTRhNjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC00Nyw3ICs0Nyw3IEBA
IGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXVz
aW5nIEFzeW5jQ2FsbENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFByb3RvY29sOjpFcnJv
clN0cmluZyYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYmLCBPcHRp
b25hbDxib29sPiYmLCBPcHRpb25hbDxpbnQ+JiYpPjsKK3VzaW5nIEFzeW5jQ2FsbENhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKFByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYsIHN0
ZDo6b3B0aW9uYWw8aW50PiYmKT47CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluamVjdGVk
U2NyaXB0QmFzZSB7CiBwdWJsaWM6CkBAIC02OCwxMSArNjgsMTEgQEAgcHJvdGVjdGVkOgogICAg
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBj
b25zdDsKICAgICBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
Pj4gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCYpIGNvbnN0OwogICAgIFJlZjxKU09OOjpWYWx1ZT4gbWFrZUNhbGwoRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJik7Ci0gICAgdm9pZCBtYWtlRXZhbENhbGwoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+
JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOworICAgIHZvaWQg
bWFrZUV2YWxDYWxsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8
aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CiAgICAgdm9pZCBtYWtlQXN5bmNDYWxsKERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIEFzeW5jQ2FsbENhbGxiYWNrJiYpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgY2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdE9iamVjdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8
aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgdm9pZCBjaGVja0NhbGxSZXN1bHQoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0T2JqZWN0LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7
CiAgICAgdm9pZCBjaGVja0FzeW5jQ2FsbFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3Vs
dCwgY29uc3QgQXN5bmNDYWxsQ2FsbGJhY2smKTsKIAogICAgIFN0cmluZyBtX25hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aAppbmRleCAyYmEwNTNkYjU4NDBmMGE3OWY1ZGNkZDg2NzM4MDFjMmU2NmUxMDQzLi40ZjNhZDNi
NmIwYWFkZjJiN2YwYjNjOWQ4N2I2ZDQyZjM4ZmJkMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ0LDEyICs0
NCwxMiBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIHdyYXBwZXIoSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHZvaWQgY2xlYXJBbGxXcmFwcGVycygpOwogCi0gICAgdm9pZCBzZXRTYXZl
ZFJlc3VsdEFsaWFzKGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGFsaWFzKSB7IG1fc2F2ZWRSZXN1
bHRBbGlhcyA9IGFsaWFzOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgc2F2ZWRSZXN1
bHRBbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRSZXN1bHRBbGlhczsgfQorICAgIHZvaWQg
c2V0U2F2ZWRSZXN1bHRBbGlhcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGFsaWFzKSB7
IG1fc2F2ZWRSZXN1bHRBbGlhcyA9IGFsaWFzOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxT
dHJpbmc+JiBzYXZlZFJlc3VsdEFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zYXZlZFJlc3VsdEFs
aWFzOyB9CiAKIHByaXZhdGU6CiAgICAgUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkIG1fd3Jh
cHBlcnM7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtX3NhdmVkUmVzdWx0QWxpYXM7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1fc2F2ZWRSZXN1bHRBbGlhczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCA0NjA0NmVkYjAx
M2I0NzAwMjAxZTI1MzEyNzdjMTVhZjY4NDAxNGVlLi40ODk1YzVhNzBkNmE0NzQ1NTk3Zjc3MTYz
YmM5MmUwNzQ1NTk0ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTEzLDcg
KzExMyw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIEluIGNhc2UgdGhpcyBpcyBhIHJlLWVudHJhbnQg
Y2FsbCBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCB3ZSBkb24ndCB3YW50IHRvIGxvc2UKICAgICAg
ICAgLy8gdGhlIG91dGVyIHJlcXVlc3QncyBpZCBqdXN0IGJlY2F1c2UgdGhlIGlubmVyIHJlcXVl
c3QgaXMgYm9ndXMuCi0gICAgICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRS
ZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBTZXRG
b3JTY29wZTxzdGQ6Om9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVx
dWVzdElkLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpT
T046OlZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2Fn
ZSkgewpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIHsKICAgICAgICAgLy8gV2UgY291bGQgYmUg
Y2FsbGVkIHJlLWVudHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRo
ZSBwcmV2aW91cyBpZC4KLSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8bG9uZz4+IHNjb3Bl
ZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJZCk7CisgICAgICAgIFNldEZv
clNjb3BlPHN0ZDo6b3B0aW9uYWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1
ZXN0SWQsIHJlcXVlc3RJZCk7CiAKICAgICAgICAgYXV0byBtZXRob2RWYWx1ZSA9IG1lc3NhZ2VP
YmplY3QtPmdldFZhbHVlKCJtZXRob2QiX3MpOwogICAgICAgICBpZiAoIW1ldGhvZFZhbHVlKSB7
CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcihDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHIKICAgICByZXBvcnRQ
cm90b2NvbEVycm9yKG1fY3VycmVudFJlcXVlc3RJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
OwogfQogCi12b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKE9wdGlv
bmFsPGxvbmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0
UHJvdG9jb2xFcnJvcihzdGQ6Om9wdGlvbmFsPGxvbmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1v
bkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAg
IEFTU0VSVF9BUkcoZXJyb3JDb2RlLCBlcnJvckNvZGUgPj0gMCk7CiAKQEAgLTMxMywyMyArMzEz
LDIzIEBAIFQgQmFja2VuZERpc3BhdGNoZXI6OmdldFByb3BlcnR5VmFsdWUoSlNPTjo6T2JqZWN0
KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1P
cHRpb25hbDxib29sPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9vbGVhbihKU09OOjpPYmplY3Qq
IHBhcmFtcywgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKQorc3RkOjpvcHRpb25h
bDxib29sPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9vbGVhbihKU09OOjpPYmplY3QqIHBhcmFt
cywgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKQogewotICAgIHJldHVybiBnZXRQ
cm9wZXJ0eVZhbHVlPE9wdGlvbmFsPGJvb2w+PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCAmSlNP
Tjo6VmFsdWU6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlW
YWx1ZTxzdGQ6Om9wdGlvbmFsPGJvb2w+PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCAmSlNPTjo6
VmFsdWU6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAotT3B0aW9uYWw8aW50PiBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihKU09OOjpPYmplY3QqIHBhcmFtcywgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIHJlcXVpcmVkKQorc3RkOjpvcHRpb25hbDxpbnQ+IEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRJbnRlZ2VyKEpTT046Ok9iamVjdCogcGFyYW1zLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgcmVxdWlyZWQpCiB7CiAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE3
OTg0Nz4gc2ltcGxpZnkgdGhpcyB3aGVuIGxlZ2FjeSBJbnNwZWN0b3JPYmplY3Qgc3ltYm9scyBh
cmUgbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICBPcHRpb25hbDxpbnQ+IChKU09OOjpWYWx1ZTo6KmFz
SW50ZWdlcikoKSBjb25zdCA9ICZKU09OOjpWYWx1ZTo6YXNJbnRlZ2VyOwotICAgIHJldHVybiBn
ZXRQcm9wZXJ0eVZhbHVlPE9wdGlvbmFsPGludD4+KHBhcmFtcywgbmFtZSwgcmVxdWlyZWQsIGFz
SW50ZWdlciwgIkludGVnZXIiKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gKEpTT046OlZhbHVl
OjoqYXNJbnRlZ2VyKSgpIGNvbnN0ID0gJkpTT046OlZhbHVlOjphc0ludGVnZXI7CisgICAgcmV0
dXJuIGdldFByb3BlcnR5VmFsdWU8c3RkOjpvcHRpb25hbDxpbnQ+PihwYXJhbXMsIG5hbWUsIHJl
cXVpcmVkLCBhc0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQmFj
a2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShKU09OOjpPYmplY3QqIHBhcmFtcywgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKQorc3RkOjpvcHRpb25hbDxkb3VibGU+IEJhY2tlbmRE
aXNwYXRjaGVyOjpnZXREb3VibGUoSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCByZXF1aXJlZCkKIHsKICAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTc5ODQ3PiBzaW1wbGlmeSB0aGlzIHdoZW4gbGVnYWN5IEluc3BlY3Rvck9iamVjdCBzeW1i
b2xzIGFyZSBubyBsb25nZXIgbmVlZGVkLgotICAgIE9wdGlvbmFsPGRvdWJsZT4gKEpTT046OlZh
bHVlOjoqYXNEb3VibGUpKCkgY29uc3QgPSAmSlNPTjo6VmFsdWU6OmFzRG91YmxlOwotICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVZhbHVlPE9wdGlvbmFsPGRvdWJsZT4+KHBhcmFtcywgbmFtZSwgcmVx
dWlyZWQsIGFzRG91YmxlLCAiTnVtYmVyIik7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IChK
U09OOjpWYWx1ZTo6KmFzRG91YmxlKSgpIGNvbnN0ID0gJkpTT046OlZhbHVlOjphc0RvdWJsZTsK
KyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+KHBhcmFt
cywgbmFtZSwgcmVxdWlyZWQsIGFzRG91YmxlLCAiTnVtYmVyIik7CiB9CiAKIFN0cmluZyBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKEpTT046Ok9iamVjdCogcGFyYW1zLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggMjE3
YjMxOTNlNThmM2YxMWNkYTZlNjhhODI5YTliOGE5YzEwMWY2MC4uMjM4MjAzNDBlYWQwNTYxNjg4
YWEwMjhkYmE4OTJiNTQzMTE4OWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtOTYs
MTEgKzk2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAKICAg
ICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKE9wdGlvbmFsPGxv
bmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOworICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihzdGQ6Om9wdGlvbmFsPGxv
bmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gZ2V0Qm9vbGVhbihKU09OOjpPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpOwotICAgIE9wdGlvbmFsPGludD4g
Z2V0SW50ZWdlcihKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWly
ZWQpOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2V0RG91YmxlKEpTT046Ok9iamVjdCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBn
ZXRCb29sZWFuKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJl
ZCk7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGdldEludGVnZXIoSlNPTjo6T2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZ2V0RG91YmxlKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1
aXJlZCk7CiAgICAgU3RyaW5nIGdldFN0cmluZyhKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wgcmVxdWlyZWQpOwogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gZ2V0VmFsdWUo
SlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsKICAgICBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBnZXRPYmplY3QoSlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIHJlcXVpcmVkKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gRm9yIHN5bmNocm9ub3VzbHkgaGFuZGxlZCByZXF1ZXN0cywgYXZvaWQgcGx1bWJpbmcg
cmVxdWVzdElkIHRocm91Z2ggZXZlcnkKICAgICAvLyBjYWxsIHRoYXQgY291bGQgcG90ZW50aWFs
bHkgZmFpbCB3aXRoIGEgcHJvdG9jb2wgZXJyb3IuCi0gICAgT3B0aW9uYWw8bG9uZz4gbV9jdXJy
ZW50UmVxdWVzdElkIHsgc3RkOjpudWxsb3B0IH07CisgICAgc3RkOjpvcHRpb25hbDxsb25nPiBt
X2N1cnJlbnRSZXF1ZXN0SWQgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRleCBjNzZmMWYyMDYzY2I1
ZTkwMGNkYjMyNDc5NTAwMTNmZDA5Y2U2NjBiLi4zMGFjYWYzMzQ1ODA1Mzc0ZDgxZGJiMGIxYzVk
NDlmZjdhZjBhNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcApAQCAtNTYsNyArNTYs
NyBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1l
OjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6c2V0dXAoc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTg0
LDcgKzg0LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRB
Z2VudDo6c2V0dXAoT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnQKICAgICByZXR1cm4geyB9OwogfQog
Ci1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gSW5zcGVj
dG9yQXVkaXRBZ2VudDo6cnVuKGNvbnN0IFN0cmluZyYgdGVzdCwgT3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBJbnNwZWN0
b3JBdWRpdEFnZW50OjpydW4oY29uc3QgU3RyaW5nJiB0ZXN0LCBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQog
ewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtMTAwLDggKzEw
MCw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hCiAgICAgICAgIG9wdGlvbnMuYXJncyA9IHsg
bV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWUuZ2V0KCkgfTsKIAogICAgIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXN1bHQ7Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gd2FzVGhyb3duOwotICAgIE9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2
ZWRSZXN1bHRJbmRleDsKIAogICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4
Y2VwdGlvbkJyZWFrcG9pbnRzIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRz
KG1fZGVidWdnZXIpOwogICAgIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRz
LnJlcGxhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaAppbmRleCBiZjUwNmMzNmQyZGZmM2Y2
ZmNhNTk5ZjY3ZTU4NTRhMjY4YTdiMWQ1Li5kODI4YjliY2YzZDQxZGRkNjQxODVjNDUzYjZmMjFl
ZWFkNTc3MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCkBAIC01Miw4ICs1Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RS
ZWFzb24pIGZpbmFsOwogCiAgICAgLy8gQXVkaXRCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKLSAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXR1cChPcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKLSAgICBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gcnVuKGNvbnN0IFN0cmluZyYgdGVz
dCwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmlu
YWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0dXAoc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKKyAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBydW4o
Y29uc3QgU3RyaW5nJiB0ZXN0LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IHRlYXJkb3duKCkgZmluYWw7CiAKICAgICBib29sIGhhc0FjdGl2ZUF1ZGl0KCkgY29uc3Q7
CkBAIC02Myw3ICs2Myw3IEBAIHByb3RlY3RlZDoKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7IH0KIAotICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KFByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYpID0gMDsKKyAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBwb3B1bGF0ZUF1ZGl0T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYgYXVkaXRPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IGYyZDk0NDNkNWNhYjlkNDUyZjNiMGYxZmQ0MWM1N2FhMGVkOTI5
ZTQuLmJlOTEwZWIyODJlZTUzZTdmMzVmNmIwM2E2NjljNTkzOTdjMWQ4ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGlz
V2ViS2l0SW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAgICAgcmV0dXJu
IHNvdXJjZVVSTC5zdGFydHNXaXRoKCJfX0luamVjdGVkU2NyaXB0XyIpICYmIHNvdXJjZVVSTC5l
bmRzV2l0aCgiLmpzIik7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFj
dGlvbjo6VHlwZT4gYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU+IGJyZWFrcG9pbnRBY3Rp
b25UeXBlRm9yU3RyaW5nKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdHlwZVN0cmluZykKIHsKICAgICBhdXRvIHR5cGUgPSBQcm90b2NvbDo6SGVscGVy
czo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dEFjdGlvbjo6VHlwZT4odHlwZVN0cmluZyk7CiAgICAgaWYgKCF0eXBlKSB7CkBAIC0xNDQsMTYg
KzE0NCwxNiBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgIHJldHVybiBjYWxsYmFjayhj
b25kaXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwog
fQogCi1PcHRpb25hbDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpTb3VyY2VJRCBzb3VyY2VJ
RCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmIG9wdGlvbnMpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xC
cmVha3BvaW50Ojpmcm9tUGF5bG9hZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykKIHsKLSAgICByZXR1
cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+Pihl
cnJvclN0cmluZywgV1RGTW92ZShvcHRpb25zKSwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRpdGlv
biwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29u
dGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50
PiB7CisgICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8c3RkOjpvcHRpb25hbDxQcm90
b2NvbEJyZWFrcG9pbnQ+PihlcnJvclN0cmluZywgV1RGTW92ZShvcHRpb25zKSwgWyZdIChjb25z
dCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0
aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gc3RkOjpvcHRp
b25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IHsKICAgICAgICAgcmV0dXJuIFByb3RvY29sQnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIFdURk1v
dmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwogICAgIH0pOwogfQogCi1P
cHRpb25hbDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNS
ZWdleCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9j
b2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykK
IHsKLSAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJy
ZWFrcG9pbnQ+PihlcnJvclN0cmluZywgV1RGTW92ZShvcHRpb25zKSwgWyZdIChjb25zdCBTdHJp
bmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywg
Ym9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9j
b2xCcmVha3BvaW50PiB7CisgICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8c3RkOjpv
cHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+PihlcnJvclN0cmluZywgV1RGTW92ZShvcHRpb25z
KSwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25z
VmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkg
LT4gc3RkOjpvcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IHsKICAgICAgICAgcmV0dXJuIFBy
b3RvY29sQnJlYWtwb2ludCh1cmwsIGlzUmVnZXgsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
Y29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsK
ICAgICB9KTsKIH0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmludGVybmFsRW5hYmxlKCkKICAgICAgICAgbGlzdGVuZXItPmRlYnVnZ2VyV2FzRW5hYmxl
ZCgpOwogCiAgICAgZm9yIChhdXRvJiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsK
LSAgICAgICAgT3B0aW9uYWw8SlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlPiBibGFja2JveFR5
cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlPiBi
bGFja2JveFR5cGU7CiAgICAgICAgIGlmIChpc1dlYktpdEluamVjdGVkU2NyaXB0KHNjcmlwdC5z
b3VyY2VVUkwpKSB7CiAgICAgICAgICAgICBpZiAoIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMp
CiAgICAgICAgICAgICAgICAgYmxhY2tib3hUeXBlID0gSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hU
eXBlOjpJZ25vcmVkOwpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRp
b24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQsIFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+Pj4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dEJyZWFrcG9pbnRCeVVybChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXJsUmVnZXgsIE9wdGlvbmFsPGludD4mJiBjb2x1bW5OdW1iZXIsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3B0aW9ucykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQsIFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+Pj4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dEJyZWFrcG9pbnRCeVVybChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXJsUmVnZXgsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGNvbHVtbk51bWJlciwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKQogewogICAgIGlmICghdXJsID09ICF1cmxSZWdl
eCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4
IG11c3QgYmUgc3BlY2lmaWVkIl9zKTsKQEAgLTcyOCw3ICs3MjgsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRp
b24oUmVmPEpTTwogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChjb25zdCBQcm90b2NvbDo6
RGVidWdnZXI6OlNjcmlwdElkJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgT3B0aW9u
YWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpCitQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5
cGVzOjpTZWFyY2hNYXRjaD4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRl
bnQoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpTY3JpcHRJZCYgc2NyaXB0SWQsIGNvbnN0IFN0
cmluZyYgcXVlcnksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQo
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SWQp
LnZhbHVlX29yKDApKTsKICAgICBpZiAoaXQgPT0gbV9zY3JpcHRzLmVuZCgpKQpAQCAtOTkyLDcg
Kzk5Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldFBhdXNlT25NaWNyb3Rhc2tzKGJvb2wKICAgICByZXR1cm4geyB9OwogfQogCi1Q
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBPcHRpb25hbDxp
bnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmIGNh
bGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBPcHRpb25hbDxi
b29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgT3B0aW9uYWw8Ym9v
bD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgT3B0
aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBPcHRpb25hbDxib29sPiYmICAvKiBlbXVsYXRlVXNl
ckdlc3R1cmUgKi8pCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNU
aHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1
ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAgLyogZW11bGF0ZVVzZXJH
ZXN0dXJlICovKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApA
QCAtMTAxMiw4ICsxMDEyLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKICAgICB9CiAKICAg
ICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzdWx0OwotICAgIE9w
dGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKLSAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5k
ZXg7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNUaHJvd247CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9u
Q2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCksIGNhbGxGcmFt
ZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVl
X29yKGZhbHNlKSwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmll
dy52YWx1ZV9vcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdh
c1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKQEAgLTEwMjYsNyArMTAyNiw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+LCBPcHRpb25hCiAgICAgcmV0dXJuIHsgeyByZXN1bHQucmVsZWFzZU5vbk51bGwo
KSwgV1RGTW92ZSh3YXNUaHJvd24pLCBXVEZNb3ZlKHNhdmVkUmVzdWx0SW5kZXgpIH0gfTsKIH0K
IAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0U2hvdWxkQmxhY2tib3hVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQmxhY2ti
b3gsIE9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29s
PiYmIG9wdGlvbmFsSXNSZWdleCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNob3VsZEJsYWNrYm94VVJMKGNvbnN0IFN0cmluZyYgdXJs
LCBib29sIHNob3VsZEJsYWNrYm94LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxJc1JlZ2V4KQogewogICAg
IGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVSTCBt
dXN0IG5vdCBiZSBlbXB0eSJfcyk7CkBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTaG91bGRCbGFja2Jv
eFVSTChjb25zdAogICAgICAgICBpZiAoaXNXZWJLaXRJbmplY3RlZFNjcmlwdChzY3JpcHQuc291
cmNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE9wdGlvbmFsPEpTQzo6
RGVidWdnZXI6OkJsYWNrYm94VHlwZT4gYmxhY2tib3hUeXBlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4gYmxhY2tib3hUeXBlOwogICAgICAgICBp
ZiAoc2hvdWxkQmxhY2tib3hVUkwoc2NyaXB0LnNvdXJjZVVSTCkgfHwgc2hvdWxkQmxhY2tib3hV
Ukwoc2NyaXB0LnVybCkpCiAgICAgICAgICAgICBibGFja2JveFR5cGUgPSBKU0M6OkRlYnVnZ2Vy
OjpCbGFja2JveFR5cGU6OkRlZmVycmVkOwogICAgICAgICBtX2RlYnVnZ2VyLnNldEJsYWNrYm94
VHlwZShzb3VyY2VJRCwgYmxhY2tib3hUeXBlKTsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzCiAKICAgICBtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzID0gc2hv
dWxkUGF1c2U7CiAKLSAgICBhdXRvIGJsYWNrYm94VHlwZSA9ICFtX3BhdXNlRm9ySW50ZXJuYWxT
Y3JpcHRzID8gT3B0aW9uYWw8SlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlPihKU0M6OkRlYnVn
Z2VyOjpCbGFja2JveFR5cGU6Oklnbm9yZWQpIDogc3RkOjpudWxsb3B0OworICAgIGF1dG8gYmxh
Y2tib3hUeXBlID0gIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPyBzdGQ6Om9wdGlvbmFsPEpT
Qzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4oSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJ
Z25vcmVkKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKGF1dG8mIFtzb3VyY2VJRCwgc2NyaXB0
XSA6IG1fc2NyaXB0cykgewogICAgICAgICBpZiAoIWlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoc2Ny
aXB0LnNvdXJjZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAppbmRleCBmZjZmMTQ0YjUzOGZlYjNlMGJhYTlhZGZhZTcwZmVkYjU1NzRhNTE0
Li40MzhkYTM2MTI0NDlkNzQxNDEyM2E1NzdjYjY0YzkwZGQ3MjJmODFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNhYmxlKCkgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgoaW50KSBmaW5hbDsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRCcmVha3BvaW50c0FjdGl2ZShib29s
KSBmaW5hbDsKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVi
dWdnZXI6OkxvY2F0aW9uPj4+PiBzZXRCcmVha3BvaW50QnlVcmwoaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBPcHRpb25hbDxpbnQ+JiYg
Y29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZpbmFsOworICAg
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OkRlYnVnZ2VyOjpC
cmVha3BvaW50SWQsIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+Pj4+IHNldEJyZWFrcG9pbnRCeVVybChpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXJsUmVnZXgsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGNvbHVtbk51
bWJlciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKICAgICBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dElkLCBSZWY8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+PiBzZXRCcmVha3BvaW50KFJl
ZjxKU09OOjpPYmplY3Q+JiYgbG9jYXRpb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9u
cykgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVtb3ZlQnJlYWtw
b2ludChjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYpIGZpbmFsOwogICAg
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGNvbnRpbnVlVW50aWxOZXh0UnVuTG9vcCgp
IGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gc3RlcE91dCgpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IHBhdXNlKCkgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
cmVzdW1lKCkgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gc2VhcmNoSW5Db250
ZW50KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNS
ZWdleCkgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gc2VhcmNoSW5Db250ZW50
KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGlzUmVnZXgpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4g
Z2V0U2NyaXB0U291cmNlKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmKSBmaW5h
bDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkRlYnVnZ2VyOjpG
dW5jdGlvbkRldGFpbHM+PiBnZXRGdW5jdGlvbkRldGFpbHMoY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRQYXVzZU9u
RGVidWdnZXJTdGF0ZW1lbnRzKGJvb2wgZW5hYmxlZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBv
cHRpb25zKSBmaW5hbDsKQEAgLTkyLDggKzkyLDggQEAgcHVibGljOgogICAgIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IHNldFBhdXNlT25Bc3NlcnRpb25zKGJvb2wgZW5hYmxlZCwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBzZXRQYXVzZU9uTWljcm90YXNrcyhib29sIGVuYWJsZWQsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3B0aW9ucykgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoYm9vbCBzaG91bGRQYXVzZSkgZmlu
YWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywg
T3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFt
ZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9u
YWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwg
T3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpIG92ZXJyaWRlOwotICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNob3VsZEJsYWNrYm94VVJMKGNvbnN0IFN0cmlu
ZyYgdXJsLCBib29sIHNob3VsZEJsYWNrYm94LCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRp
dmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4g
Lyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBz
YXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVy
cmlkZTsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRTaG91bGRCbGFja2Jv
eFVSTChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KSBm
aW5hbDsKIAogICAgIC8vIEpTQzo6RGVidWdnZXI6OkNsaWVudAogICAgIEpTQzo6SlNPYmplY3Qq
IGRlYnVnZ2VyU2NvcGVFeHRlbnNpb25PYmplY3QoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJikgZmluYWw7CkBAIC0xNTIsNyArMTUy
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbnRlcm5hbERpc2FibGUoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0K
LSAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29u
dGV4dElkPiYmKSA9IDA7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7CiAKICAgICBKU0M6OkRlYnVnZ2Vy
JiBkZWJ1Z2dlcigpIHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KIApAQCAtMTcyLDggKzE3Miw4IEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgUHJvdG9jb2xCcmVha3BvaW50IHsKICAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8
UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBK
U0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucyA9IG51bGxwdHIpOwotICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0
aW9ucyA9IG51bGxwdHIpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm90b2NvbEJy
ZWFrcG9pbnQ+IGZyb21QYXlsb2FkKFByb3RvY29sOjpFcnJvclN0cmluZyYsIEpTQzo6U291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEpT
T046Ok9iamVjdD4mJiBvcHRpb25zID0gbnVsbHB0cik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gZnJvbVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMg
PSBudWxscHRyKTsKIAogICAgICAgICBQcm90b2NvbEJyZWFrcG9pbnQoKTsKICAgICAgICAgUHJv
dG9jb2xCcmVha3BvaW50KEpTQzo6U291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCks
IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMgPSB7IH0sIGJvb2wgYXV0
b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBpZ25vcmVDb3VudCA9IDApOwpAQCAtMjY5LDcgKzI2
OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbV9wcmVCbGFja2JveFBh
dXNlRGF0YTsKIAogICAgIEhhc2hNYXA8QXN5bmNDYWxsSWRlbnRpZmllciwgUmVmUHRyPEFzeW5j
U3RhY2tUcmFjZT4+IG1fcGVuZGluZ0FzeW5jQ2FsbHM7Ci0gICAgT3B0aW9uYWw8QXN5bmNDYWxs
SWRlbnRpZmllcj4gbV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEFzeW5jQ2FsbElkZW50aWZpZXI+IG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXI7CiAg
ICAgaW50IG1fYXN5bmNTdGFja1RyYWNlRGVwdGggeyAwIH07CiAKICAgICBSZWZQdHI8SlNDOjpC
cmVha3BvaW50PiBtX3BhdXNlT25Bc3NlcnRpb25zQnJlYWtwb2ludDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCmluZGV4IGNmMmNkOGZmYzllODkxNWE4NGIxNjg5MzgzN2QyZTliZTllNzQ5Nzgu
Ljc2MDMwNDEwMjIzZTcyMjg1ODdhOWZlMjhhNWU5Y2I1NGU2NWQwMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckhlYXBBZ2VudDo6c3RvcFRyYWNraW5nKCkKICAgICByZXR1cm4geyB9
OwogfQogCi1PcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBJbnNwZWN0b3JIZWFwQWdlbnQ6Om5v
ZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZp
ZXIoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgdW5zaWduZWQgaGVhcE9iamVj
dElkZW50aWZpZXIpCiB7CiAgICAgSGVhcFByb2ZpbGVyKiBoZWFwUHJvZmlsZXIgPSBtX2Vudmly
b25tZW50LnZtKCkuaGVhcFByb2ZpbGVyKCk7CiAgICAgaWYgKCFoZWFwUHJvZmlsZXIpIHsKQEAg
LTE2Niw3ICsxNjYsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBJbnNwZWN0b3JIZWFw
QWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihQcm90bwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5v
ZGU+IG9wdGlvbmFsTm9kZSA9IHNuYXBzaG90LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihoZWFw
T2JqZWN0SWRlbnRpZmllcik7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3RO
b2RlPiBvcHRpb25hbE5vZGUgPSBzbmFwc2hvdC0+bm9kZUZvck9iamVjdElkZW50aWZpZXIoaGVh
cE9iamVjdElkZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2RlKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vIG9iamVjdCBmb3IgaWRlbnRpZmllciwgaXQgbWF5IGhhdmUgYmVlbiBj
b2xsZWN0ZWQiX3M7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODUsNyArMTg1
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFJlZlB0cjxQ
cm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGUKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAKICAgICB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihoZWFwT2JqZWN0SWQpOwotICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5v
ZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmlu
ZywgaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKGVy
cm9yU3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFvcHRpb25hbE5vZGUp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKQEAgLTIzNSw3
ICsyMzUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4+IEluc3BlY3RvckhlYXBBZ2VudAogICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKIAogICAgIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGhlYXBPYmplY3RJZCk7Ci0gICAgY29uc3QgT3B0aW9uYWw8SGVhcFNuYXBz
aG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKGVycm9y
U3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxI
ZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9iamVjdElkZW50aWZp
ZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAgICBpZiAoIW9wdGlvbmFs
Tm9kZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuaAppbmRleCBjYWE1MTJkMGFiMmUxMGE4OGUwZWU2MGMyZTMyZDc0Mzk0
MjIyN2FkLi5hNTQ3MTM1ZDc4MWQzYzYyYTQ0YTYwYmIwNDkxOWMyMDgyYTE5YjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuaApAQCAtNzIsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoR2FyYmFnZUNvbGxlY3RlZEV2ZW50KFByb3RvY29sOjpIZWFwOjpHYXJi
YWdlQ29sbGVjdGlvbjo6VHlwZSwgU2Vjb25kcyBzdGFydFRpbWUsIFNlY29uZHMgZW5kVGltZSk7
CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8SlNDOjpIZWFwU25hcHNob3ROb2RlPiBub2RlRm9y
SGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgdW5zaWduZWQgaGVh
cE9iamVjdElkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpIZWFwU25hcHNob3RO
b2RlPiBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwg
dW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcEZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcAppbmRleCAwNGQyZjMxZjkzMTZhYzQ4MjYxNTcyYWRjNjlkMDFhN2I2NjQ4
ZDlhLi43NmQ3MmM3MjczZjFiYjIxNzA0ODUwMTVkOTMxYjFmYmE5MmQzYjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlLCBT
dHJpbmcgLyoKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBjaGVja1N5bnRheChtX3ZtLCBK
U0M6Om1ha2VTb3VyY2UoZXhwcmVzc2lvbiwgeyB9KSwgZXJyb3IpOwogCi0gICAgT3B0aW9uYWw8
UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZT4gcmVzdWx0OworICAgIHN0ZDo6b3B0
aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZT4gcmVzdWx0OwogICAgIFN0
cmluZyBtZXNzYWdlOwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4g
cmFuZ2U7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUsIFN0cmluZyAvKgogICAg
IHJldHVybiB7IHsgKnJlc3VsdCwgbWVzc2FnZSwgV1RGTW92ZShyYW5nZSkgfSB9OwogfQogCi1Q
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBPcHRpb25hbDxp
bnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1
YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwg
T3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgT3B0aW9u
YWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmll
dywgT3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBPcHRpb25hbDxib29sPiYmIC8qIGVtdWxh
dGVVc2VyR2VzdHVyZSAqLykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8q
IHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+
PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhl
Y3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
LyogZW11bGF0ZVVzZXJHZXN0dXJlICovKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBl
cnJvclN0cmluZzsKIApAQCAtMTMwLDggKzEzMCw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25h
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKICAgICBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzdWx0OwotICAgIE9wdGlvbmFs
PGJvb2w+IHdhc1Rocm93bjsKLSAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNUaHJvd247CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+
IHNhdmVkUmVzdWx0SW5kZXg7CiAKICAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2Fi
bGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3Bv
aW50cyhtX2RlYnVnZ2VyKTsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBP
cHRpb25hCiAgICAgcmV0dXJuIHsge3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHdh
c1Rocm93biksIFdURk1vdmUoc2F2ZWRSZXN1bHRJbmRleCkgfSB9OwogfQogCi12b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6YXdhaXRQcm9taXNlKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3RJZCYgcHJvbWlzZU9iamVjdElkLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5
VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYm
IHNhdmVSZXN1bHQsIFJlZjxBd2FpdFByb21pc2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFByb21pc2UoY29uc3QgUHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdElkJiBwcm9taXNlT2JqZWN0SWQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgUmVmPEF3YWl0UHJvbWlzZUNhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChwcm9taXNlT2Jq
ZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE2MCw3
ICsxNjAsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6YXdhaXRQcm9taXNlKGNvbnN0
IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuYXdhaXRQcm9taXNlKHByb21pc2VPYmplY3RJZCwgcmV0
dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxz
ZSksIHNhdmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYmIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiB3YXNU
aHJvd24sIE9wdGlvbmFsPGludD4mJiBzYXZlZFJlc3VsdEluZGV4KSB7CisgICAgaW5qZWN0ZWRT
Y3JpcHQuYXdhaXRQcm9taXNlKHByb21pc2VPYmplY3RJZCwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9v
cihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHNhdmVSZXN1bHQudmFs
dWVfb3IoZmFsc2UpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIHdhc1Rocm93biwgc3RkOjpv
cHRpb25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJbmRleCkgewogICAgICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvclN0cmluZyk7CiAgICAgICAg
IGVsc2UKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6YXdh
aXRQcm9taXNlKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZAogICAgIH0p
OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4g
SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbihjb25zdCBQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uRGVj
bGFyYXRpb24sIFJlZlB0cjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMsIE9wdGlvbmFsPGJvb2w+
JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYm
IHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25h
bDxib29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykKK1Byb3RvY29sOjpFcnJvclN0cmlu
Z09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBSZWZQdHI8SlNPTjo6
QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1
ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxi
b29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
T3B0aW9uYQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQg
c2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJfcyk7CiAKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzdWx0OwotICAgIE9wdGlvbmFsPGJvb2w+IHdhc1Rocm93
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKIAogICAgIEpTQzo6RGVidWdn
ZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzIHRlbXBvcmFyaWx5RGlz
YWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzKG1fZGVidWdnZXIpOwogCkBAIC0yMjMsNyArMjIzLDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQ
cmV2aWV3Pj4gSW5zcGVjdG9yUnVudGltZUEKICAgICByZXR1cm4gcHJldmlldy5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPj4+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoY29uc3QgUHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgT3B0aW9uYWw8Ym9vbD4mJiBv
d25Qcm9wZXJ0aWVzLCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgT3B0aW9uYWw8aW50PiYm
IGZldGNoQ291bnQsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3KQorUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpnZXRQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3RJZCYgb2JqZWN0SWQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBvd25Qcm9wZXJ0aWVzLCBzdGQ6
Om9wdGlvbmFsPGludD4mJiBmZXRjaFN0YXJ0LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmZXRjaENv
dW50LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3KQogewogICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlJ1bnRpbWU6OlByb3BlcnR5CiAgICAgcmV0dXJuIHsgeyBwcm9wZXJ0aWVzLnJlbGVhc2VOb25O
dWxsKCksIFdURk1vdmUoaW50ZXJuYWxQcm9wZXJ0aWVzKSB9IH07CiB9CiAKLVByb3RvY29sOjpF
cnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRp
bWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pj4+IEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIE9wdGlvbmFsPGludD4mJiBmZXRjaFN0YXJ0LCBPcHRp
b25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcp
CitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhjb25zdCBQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBzdGQ6Om9wdGlvbmFsPGludD4m
JiBmZXRjaFN0YXJ0LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3KQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmlu
ZyBlcnJvclN0cmluZzsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3Bl
cnR5CiAgICAgcmV0dXJuIHsgeyBwcm9wZXJ0aWVzLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUo
aW50ZXJuYWxQcm9wZXJ0aWVzKSB9IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPFJl
ZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pj4gSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhjb25zdCBQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdy
b3VwLCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgT3B0aW9uYWw8aW50PiYmIGZldGNoQ291
bnQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29s
bGVjdGlvbkVudHJpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYg
ZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCkKIHsKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTMyNSw3ICszMjUsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6
Q29sbGVjdGlvbkVudHJ5Pj4+CiAgICAgcmV0dXJuIGVudHJpZXMucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8T3B0aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0
SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3VsdChSZWY8SlNPTjo6T2Jq
ZWN0PiYmIGNhbGxBcmd1bWVudCwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZVJlc3VsdEluZGV4ICovPiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnNhdmVSZXN1bHQoUmVmPEpTT046Ok9iamVjdD4mJiBjYWxsQXJndW1lbnQsIHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVj
dXRpb25Db250ZXh0SWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5n
OwogCkBAIC0zNDIsNyArMzQyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8T3B0aW9uYWw8
aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpbWVBZ2UKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdp
dmVuIG9iamVjdElkIl9zKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0
SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKICAgICBp
bmplY3RlZFNjcmlwdC5zYXZlUmVzdWx0KGVycm9yU3RyaW5nLCBjYWxsQXJndW1lbnQtPnRvSlNP
TlN0cmluZygpLCBzYXZlZFJlc3VsdEluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aAppbmRleCBmNDAyOTQ2ZmY2ZGFhODhjNDg1ZDA5N2FhYzYxYzFkOWViZmMwOWFhLi5jNGY2ZmE1
YjlkZTU0MzE3ZGEwN2MyMzcxYTcxMjZhYWUxYzk2N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaApAQCAtNjAsMTUgKzYwLDE1IEBAIHB1YmxpYzoKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBlbmFibGUoKSBvdmVycmlkZTsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBkaXNhYmxlKCkgb3ZlcnJpZGU7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlLCBTdHJpbmcg
LyogbWVzc2FnZSAqLywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlPj4+IHBh
cnNlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJl
c3VsdEluZGV4ICovPj4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYsIE9wdGlv
bmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZp
ZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRl
VXNlckdlc3R1cmUpIG92ZXJyaWRlOwotICAgIHZvaWQgYXdhaXRQcm9taXNlKGNvbnN0IFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlW
YWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYg
c2F2ZVJlc3VsdCwgUmVmPEF3YWl0UHJvbWlzZUNhbGxiYWNrPiYmKSBmaW5hbDsKLSAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gY2FsbEZ1bmN0aW9u
T24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBP
cHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgT3B0
aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJl
dmlldywgT3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpIG92ZXJyaWRlOworICAg
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3Rk
OjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBldmFsdWF0ZShjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8UHJvdG9j
b2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiwgc3RkOjpvcHRpb25hbDxib29sPiYm
IHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11
bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsKKyAgICB2b2lkIGF3YWl0UHJvbWlzZShjb25zdCBQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
cmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3Rk
OjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIFJlZjxBd2FpdFByb21pc2VDYWxsYmFjaz4m
JikgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2Fz
VGhyb3duICovPj4gY2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdElkJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBSZWZQdHI8SlNP
Tjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlW
YWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25h
bDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkgb3ZlcnJpZGU7CiAgICAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gcmVsZWFzZU9iamVjdChjb25zdCBQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0SWQmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8
UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+PiBnZXRQcmV2aWV3KGNvbnN0IFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYpIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pj4+IGdldFByb3BlcnRpZXMoY29uc3Qg
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgT3B0aW9uYWw8Ym9vbD4mJiBvd25Q
cm9wZXJ0aWVzLCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgT3B0aW9uYWw8aW50PiYmIGZl
dGNoQ291bnQsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3KSBmaW5hbDsKLSAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBnZXREaXNw
bGF5YWJsZVByb3BlcnRpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElk
JiwgT3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50
LCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykgZmluYWw7Ci0gICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxl
Y3Rpb25FbnRyeT4+PiBnZXRDb2xsZWN0aW9uRW50cmllcyhjb25zdCBQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0SWQmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxp
bnQ+JiYgZmV0Y2hTdGFydCwgT3B0aW9uYWw8aW50PiYmIGZldGNoQ291bnQpIGZpbmFsOwotICAg
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPE9wdGlvbmFsPGludD4gLyogc2F2ZVJlc3VsdEluZGV4
ICovPiBzYXZlUmVzdWx0KFJlZjxKU09OOjpPYmplY3Q+JiYgY2FsbEFyZ3VtZW50LCBPcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKKyAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBnZXRQcm9w
ZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBvd25Qcm9wZXJ0aWVzLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmZXRjaFN0
YXJ0LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgZ2VuZXJhdGVQcmV2aWV3KSBmaW5hbDsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxz
dGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVy
bmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoY29uc3Qg
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgc3RkOjpvcHRpb25hbDxpbnQ+JiYg
ZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGdlbmVyYXRlUHJldmlldykgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+PiBnZXRDb2xsZWN0aW9uRW50cmllcyhjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0SWQmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGludD4m
JiBmZXRjaFN0YXJ0LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50KSBmaW5hbDsKKyAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZVJlc3Vs
dEluZGV4ICovPiBzYXZlUmVzdWx0KFJlZjxKU09OOjpPYmplY3Q+JiYgY2FsbEFyZ3VtZW50LCBz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpIGZp
bmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNhdmVkUmVzdWx0QWxp
YXMoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpUeXBl
RGVzY3JpcHRpb24+Pj4gZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKFJlZjxK
U09OOjpBcnJheT4mJiBsb2NhdGlvbnMpIGZpbmFsOwpAQCAtODMsNyArODMsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigp
IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFsIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBP
cHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dElkPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGI3OGUzYTUwZDY3YWUwZjRmODJjNmY0
NGU1ZDhiMWY3Y2RlMTU3MjEuLjcxNGFjYTQ3NzIyYjdkOWE0ZDVhOGY5MTRlNzJmNTllNmM0ODky
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvCiAgICAgfQogfQogCi1Qcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFy
dFRyYWNraW5nKE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZVNhbXBsZXMpCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFydFRyYWNr
aW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlU2FtcGxlcykKIHsKICAgICBpZiAobV90
cmFja2luZykKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuaAppbmRleCAzMzYxNWYyZDc3YjI1MGI4MDNmNWNiN2JkNTg2MGRjZWNjMTYw
ZWQ0Li5lOTcwZmU2NmY0MjVmNzg2YTFiZTRmZjkwMzliZTk4NjdiZWRmZTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24pIGZpbmFsOwogCiAgICAgLy8gU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFRyYWNraW5nKE9wdGlv
bmFsPGJvb2w+JiYgaW5jbHVkZVNhbXBsZXMpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IHN0YXJ0VHJhY2tpbmcoc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVT
YW1wbGVzKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdG9wVHJh
Y2tpbmcoKSBmaW5hbDsKIAogICAgIC8vIEpTQzo6RGVidWdnZXI6OlByb2ZpbGluZ0NsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAKaW5kZXggMjlmY2VjOTdiYjhlN2Y0
NzcyZDRkN2NjOGZhZDZjOTIzMTcxZjg5Ny4uYWEzN2Y4NDI1MzdmMWI2NmM2MTE2YWEwY2Y2NGQx
NzBiODA5M2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudDo6SlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdl
bnQ6On5KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQoKSA9IGRlZmF1bHQ7CiAKLUluamVjdGVkU2Ny
aXB0IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1l
OjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3Jp
cHQgSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVu
dGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBp
ZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gImV4ZWN1dGlv
bkNvbnRleHRJZCBpcyBub3Qgc3VwcG9ydGVkIGZvciBKU0NvbnRleHRzIGFzIHRoZXJlIGlzIG9u
bHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdl
bnQuaAppbmRleCBiODRjYjEyZTYxMDhiMTQ5OWE0NGMxYmY2NzVlZWJmNDk2ZDhlMGEwLi43YmFk
ZmI1N2U0OThjNjY3OTQ0YTIwNTNlMzVkYTM5NTVmMzllMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdEF1ZGl0QWdlbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfkpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudCgpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxQ
cm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwg
c3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBm
aW5hbDsKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDNiNzAyODc4YTFj
YTUxNjI0NDA5OTlmNGU2NGI1M2ZjMzRmOTUzMmYuLjc2NTM0N2IyOTI2Y2ZjZmYyODM3YTk0ZDRj
ODBhNDY2NzM0OGZkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
LmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dAogCiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6On5KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoKSA9IGRl
ZmF1bHQ7CiAKLUluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9u
Q29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Ojpp
bmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
c3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4
ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gImV4ZWN1dGlvbkNvbnRleHRJZCBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBKU0NvbnRleHRzIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0Il9zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAppbmRleCA5NjliYjQwZTY5ODA3
M2I3OWFkY2MyOTJlMDVjN2E1MTdmMjg2N2M2Li44M2RjNTQ3M2VjNDYyYWRjZGUxNDYzMTQ2YTMy
YmQ3ODRhNDQ4MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwogCiBwcml2YXRl
OgotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElk
PiYmKSBmaW5hbDsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhl
Y3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKIAogICAgIC8vIE5PVEU6IEphdmFTY3JpcHQgaW5z
cGVjdG9yIGRvZXMgbm90IHlldCBuZWVkIHRvIG11dGUgYSBjb25zb2xlIGJlY2F1c2Ugbm8gbWVz
c2FnZXMKICAgICAvLyBhcmUgc2VudCB0byB0aGUgY29uc29sZSBvdXRzaWRlIG9mIHRoZSBBUEkg
Ym91bmRhcnkgb3IgY29uc29sZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5jcHAKaW5kZXggZTI1NDQ4NzQ4ZjE0ZTUwYTJmYzVjZGU3NmIwNjg5MDJiMDM4M2Ix
ZS4uZjU3NGY1NDliMTMxMzAzMGE1MjIxZmU1ZWVlZmI3YmYyNDdlMzU2NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp+SlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQoKSA9IGRlZmF1bHQ7CiAKLUluamVjdGVkU2NyaXB0IEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1
dGlvbkNvbnRleHRJZCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0
SWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBl
eGVjdXRpb24gY29udGV4dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
CmluZGV4IGRmZGFiZWU0OTg5OWE1OGUxNmUxNGU5Mzg2MTQxODRiMjAxMTYxNzEuLjllNWJkNGZi
YmZmZTM2NTc2OGVhOTZjZGU2NmViZDhjOTNlMWIxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfkpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50KCkgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFs
PFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpIGZpbmFsOworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYp
IGZpbmFsOwogCiAgICAgLy8gTk9URTogSmF2YVNjcmlwdCBpbnNwZWN0b3IgZG9lcyBub3QgeWV0
IG5lZWQgdG8gbXV0ZSBhIGNvbnNvbGUgYmVjYXVzZSBubyBtZXNzYWdlcwogICAgIC8vIGFyZSBz
ZW50IHRvIHRoZSBjb25zb2xlIG91dHNpZGUgb2YgdGhlIEFQSSBib3VuZGFyeSBvciBjb25zb2xl
IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCmluZGV4IGM1NGZm
ZTBhNjZkODQzZTgyYzY3YjkzMzNlZjkzMmI5OGQ4NzllNDEuLjRhMGE2ZTVjNGZkYjAxZDkzMDEy
MDIzNGZjMmU5YjlhZjAxYzBjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmNwcApAQCAtMTA5LDkgKzEwOSw5IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0
YXJnZXRDbG9zZWQoKQogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8VGFy
Z2V0SUQ+IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdl
dElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPFRh
cmdldElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gbV90YXJnZXQgPyBzdGQ6Om9wdGlvbmFsPFRhcmdldElEPihtX3RhcmdldC0+dGFy
Z2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCmluZGV4IDcwMjFkYzczYzkxZDkzMWVh
N2Y2YjYxYjViMDE1MGVhYjYyZDdhNDkuLmRmYjc5NjI4OTA5YzEwYzQ3YWM2YTU1N2ZhZDc1M2Ni
MDI0ZWIwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQo
KTsKIAotICAgIE9wdGlvbmFsPFRhcmdldElEPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0OwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0OwogICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApp
bmRleCBhMDcxZGIxM2ViYjI1ZDIyZGRmMDAxMjllZGEwMTUxNmFiNmE3ZjIyLi4wZTVjNjgyNmQ2
ZDNmODg4NTZiMjRjNzE4MzY1ZDg3OTNlMmM5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtOTMs
MTcgKzkzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiBjZXJ0aWZpY2F0ZXM7CiAgICAgICAgICAgICBzdHJ1Y3QgUHJveHkgewogICAg
ICAgICAgICAgICAgIFN0cmluZyB0eXBlOwotICAgICAgICAgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4gZnRwVVJMOwotICAgICAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaHR0cFVSTDsKLSAg
ICAgICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGh0dHBzVVJMOwotICAgICAgICAgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gc29ja3NVUkw7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGZ0cFVSTDsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aHR0cFVSTDsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaHR0cHNVUkw7
CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNvY2tzVVJMOwogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlnbm9yZUFkZHJlc3NMaXN0OwogICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIE9wdGlvbmFsPFByb3h5PiBwcm94eTsKKyAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UHJveHk+IHByb3h5OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgICAgICBPcHRpb25hbDxib29sPiBhbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlOwotICAgICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcHJlc3NJQ0VDYW5kaWRhdGVGaWx0ZXJpbmc7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93SW5zZWN1cmVNZWRpYUNhcHR1cmU7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN1cHByZXNzSUNFQ2FuZGlkYXRlRmlsdGVy
aW5nOwogI2VuZGlmCiAgICAgICAgIH07CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAg
ICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqKTsKICAg
ICB2b2lkIGNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpOwotICAgIE9wdGlvbmFsPFJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IGNsaWVudENhcGFiaWxpdGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50Q2FwYWJpbGl0aWVzOyB9CisgICAgc3RkOjpvcHRpb25hbDxS
ZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBjbGllbnRDYXBhYmlsaXRpZXMo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudENhcGFiaWxpdGllczsgfQogCiAgICAgdm9pZCBzZXR1
cEZhaWxlZChUYXJnZXRJRCk7CiAgICAgdm9pZCBzZXR1cENvbXBsZXRlZChUYXJnZXRJRCk7CkBA
IC0yNjgsMTQgKzI2OCwxNCBAQCBwcml2YXRlOgogCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRf
U0VSVkVSKQogICAgIC8vIENvbm5lY3Rpb24gZnJvbSBSZW1vdGVJbnNwZWN0b3JDbGllbnQgb3Ig
V2ViRHJpdmVyLgotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gbV9jbGllbnRDb25uZWN0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudENvbm5lY3Rpb247CiAg
ICAgYm9vbCBtX3JlYWR5VG9QdXNoTGlzdGluZ3MgeyBmYWxzZSB9OwogCiAgICAgU3RyaW5nIG1f
YmFja2VuZENvbW1hbmRzUGF0aDsKICNlbmRpZgogCiAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGll
bnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6
Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gbV9jbGllbnRDYXBh
YmlsaXRpZXM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
eHBjUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tCmluZGV4IGU4MjQ1ZTFlNzkxY2M1OGZiODAzMzRiYWI3ZGMxZWNmYmU3NmZkZDcu
LjJiZmRhMWQzMGNiN2U4Y2FmY2NjZGMxYTYxNTVmMWY4NGQxMzMzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xMjEsOSAr
MTIxLDkgQEAgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp+UmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0KCkKICAgICB0ZWFyZG93blJ1bkxvb3AoKTsKIH0KIAotT3B0aW9uYWw8VGFyZ2V0SUQ+IFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPFRhcmdldElEPiht
X3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
bV90YXJnZXQgPyBzdGQ6Om9wdGlvbmFsPFRhcmdldElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRp
ZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IDdlOWRm
ZjM4M2ExN2JkNjg3ZjVkZmVmZDYwZDZkMTA5YTQxOTNmNzAuLjBlNmI3MzM1Mjk5M2EzM2M5OWNk
NDc2NTI5M2YzMDQ0YjBiZDYzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBSZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Ojp+UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudCgpCiAgICAgZW5kcG9pbnQuaW52YWxpZGF0ZUNsaWVudCgqdGhpcyk7CiB9CiAKLU9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Y29ubmVj
dEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCkKK3N0ZDo6
b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Ojpj
b25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQog
ewogICAgIGF1dG8mIGVuZHBvaW50ID0gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6c2luZ2xldG9uKCk7CiAgICAgcmV0dXJuIGVuZHBvaW50LmNvbm5lY3RJbmV0KHNl
cnZlckFkZHIsIHNlcnZlclBvcnQsICp0aGlzKTsKIH0KIAotT3B0aW9uYWw8Q29ubmVjdGlvbklE
PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1T
b2NrZXRUeXBlIHNvY2tldCkKK3N0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNw
ZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNv
Y2tldCkKIHsKICAgICBhdXRvJiBlbmRwb2ludCA9IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnNpbmdsZXRvbigpOwogICAgIHJldHVybiBlbmRwb2ludC5jcmVhdGVD
bGllbnQoc29ja2V0LCAqdGhpcyk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludCYsCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5wdXNoUmVjZWl2ZWREYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLU9wdGlvbmFsPFJlbW90ZUluc3BlY3RvckNvbm5l
Y3Rpb25DbGllbnQ6OkV2ZW50PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpleHRy
YWN0RXZlbnQoQ29ubmVjdGlvbklEIGNsaWVudElELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQor
c3RkOjpvcHRpb25hbDxSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpFdmVudD4gUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZXh0cmFjdEV2ZW50KENvbm5lY3Rpb25JRCBj
bGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBpZiAoZGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTksNyArMTE5LDcgQEAgT3B0
aW9uYWw8UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZlbnQ+IFJlbW90ZUluc3Bl
Y3RvckNvbm5lY3Rpb25DbGllbnQKICAgICByZXR1cm4gZXZlbnQ7CiB9CiAKLU9wdGlvbmFsPFZl
Y3RvcjxSZWY8SlNPTjo6T2JqZWN0Pj4+IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6
OnBhcnNlVGFyZ2V0TGlzdEpTT04oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50OjpwYXJzZVRhcmdldExpc3RKU09OKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBh
dXRvIG1lc3NhZ2VWYWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAg
aWYgKCFtZXNzYWdlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvckNvbm5lY3Rpb25DbGllbnQuaAppbmRleCAyNWYxZjhjY2U3NTZjMDU0ODJmNDliZDBmNTFj
MzZmYzY4ZWQwZTc5Li5mZDQ1MWE1MDM4MDZiMGRlNjdlNjQ4MDYxZjM2MjNkMDU3M2NlNzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50LmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5z
cGVjdG9yQ29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3IKIHB1YmxpYzoK
ICAgICB+UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCgpIG92ZXJyaWRlOwogCi0gICAg
T3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRy
LCB1aW50MTZfdCBzZXJ2ZXJQb3J0KTsKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNyZWF0
ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlv
bklEPiBjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyLCB1aW50MTZfdCBzZXJ2ZXJQ
b3J0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY3JlYXRlQ2xpZW50KFBsYXRm
b3JtU29ja2V0VHlwZSk7CiAgICAgdm9pZCBzZW5kKENvbm5lY3Rpb25JRCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYpIGZpbmFsOwpA
QCAtNTIsMTggKzUyLDE4IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgRXZlbnQgewogICAgICAgICBT
dHJpbmcgbWV0aG9kTmFtZTsKICAgICAgICAgQ29ubmVjdGlvbklEIGNsaWVudElEIHsgfTsKLSAg
ICAgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjb25uZWN0aW9uSUQ7Ci0gICAgICAgIE9wdGlv
bmFsPFRhcmdldElEPiB0YXJnZXRJRDsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdGlvbklEOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFRhcmdldElEPiB0YXJnZXRJRDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG1lc3NhZ2U7CiAgICAgfTsKIAogICAgIHVzaW5nIENhbGxIYW5kbGVyID0g
dm9pZCAoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6KikoY29uc3QgRXZlbnQmKTsK
ICAgICB2aXJ0dWFsIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4mIGRpc3BhdGNoTWFwKCkg
PSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+
Pj4gcGFyc2VUYXJnZXRMaXN0SlNPTihjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8SlNPTjo6T2JqZWN0Pj4+IHBhcnNlVGFyZ2V0TGlzdEpTT04oY29uc3QgU3Ry
aW5nJik7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8RXZlbnQ+IGV4dHJhY3RFdmVudChDb25uZWN0
aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFdmVu
dD4gZXh0cmFjdEV2ZW50KENvbm5lY3Rpb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCiAgICAg
SGFzaE1hcDxDb25uZWN0aW9uSUQsIE1lc3NhZ2VQYXJzZXI+IG1fcGFyc2VycyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fcGFyc2Vyc0xvY2spOwogICAgIExvY2sgbV9wYXJzZXJzTG9jazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggNjIwNGQ0MWQzOGQ0
NmExOTcyOWZjODI4MDI0ZmQ1Mjg0NjY0Mjc0Yi4uMDJlN2RhMmI2OTk1ZmQ2MGYwY2I5ZTg3YjQ1
NjU5YTA2OGY1NGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZl
ci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnN0YXJ0
KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQpCiAgICAgcmV0dXJuIGlzUnVubmlu
ZygpOwogfQogCi1PcHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpnZXRQ
b3J0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNlcnZl
cjo6Z2V0UG9ydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1J1bm5pbmcoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY4LDcgKzY4LDcgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFJl
bW90ZUluc3BlY3RvclNlcnZlcjo6Z2V0UG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGVuZHBvaW50
LmdldFBvcnQobV9zZXJ2ZXIudmFsdWUoKSk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25JRD4g
UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludCYgZW5kcG9pbnQsIFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCitzdGQ6Om9wdGlvbmFs
PENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkb0FjY2VwdChSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludCYgZW5kcG9pbnQsIFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZjliOTdlNGFhY2U1ZjQyNTY4NjhlZmRmOTg1Zjk5
NzgzYjIzYzdiLi5iZDBlMWVjZDA0MDQ0ZjQwNmFmZTI4ZjFiMTNmYWQ3ODU3ZTk3ZWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCkBAIC0zOSwxNyArMzksMTcg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXImIHNpbmdsZXRvbigpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydChj
b25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydCgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoKSBjb25zdDsKICAgICBib29sIGlz
UnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2ZXI7IH0KIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3RvclNlcnZlcj47CiAg
ICAgUmVtb3RlSW5zcGVjdG9yU2VydmVyKCkgeyBTb2NrZXQ6OmluaXQoKTsgfQogCi0gICAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dCYsIFBsYXRmb3JtU29ja2V0VHlwZSkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0
aW9uSUQ+IGRvQWNjZXB0KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgUGxhdGZvcm1T
b2NrZXRUeXBlKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVN0YXR1cyhSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCwgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6Okxpc3RlbmVyOjpTdGF0dXMpIGZpbmFsIHsgfTsKIAotICAgIE9wdGlvbmFsPENvbm5l
Y3Rpb25JRD4gbV9zZXJ2ZXI7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fc2Vy
dmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0LmgKaW5kZXggYWQ4Y2ZiMzk1ODY4NTQ2OTQwMDUzODJlYzE1YjRl
ODhhMmI0MGExNC4uNTMyZjk3NTIyNzc5NmRhZmY5M2Q5YTc3MmNiMjgzOTY0ZmRhZWFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaApAQCAtNjUsMTggKzY1LDE4
IEBAIGVudW0gY2xhc3MgRG9tYWluIHsKIAogdm9pZCBpbml0KCk7CiAKLUpTX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBzZXJ2
ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KTsKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQx
Nl90IHBvcnQpOwotSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBl
PiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpOworSlNfRVhQ
T1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29u
c3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCk7CitKU19FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNo
YXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQpOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUpOworSlNf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlw
ZSwgMj4+IGNyZWF0ZVBhaXIoKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXR1cChQbGF0
Zm9ybVNvY2tldFR5cGUpOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkKFBsYXRmb3Jt
U29ja2V0VHlwZSk7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzTGlzdGVuaW5nKFBsYXRmb3Jt
U29ja2V0VHlwZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9y
dChQbGF0Zm9ybVNvY2tldFR5cGUpOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUpOwogCi1KU19FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlLCB2b2lkKiBidWZmZXIs
IGludCBidWZmZXJTaXplKTsKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHNpemVfdD4gd3Jp
dGUoUGxhdGZvcm1Tb2NrZXRUeXBlLCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSk7CitKU19F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5
cGUsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpOworSlNfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSwgY29uc3Qgdm9pZCog
ZGF0YSwgaW50IHNpemUpOwogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlKFBsYXRmb3Jt
U29ja2V0VHlwZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50LmNwcAppbmRleCBlNDUwMWRmNWRiNzgwNTIxMWQxZWM1YTQxZjI5MDkw
YTk2YmVmYzA4Li4zZWRlNmY0NmM0MzljNDAzZThlZTY3MzdlNmE2ZjRkYWQ0NjlmMGVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
Ojp3YWtldXBXb3JrZXJUaHJlYWQoKQogICAgICAgICBTb2NrZXQ6OndyaXRlKG1fd2FrZXVwU2Vu
ZFNvY2tldCwgIjEiLCAxKTsKIH0KIAotT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkcmVz
cywgdWludDE2X3Qgc2VydmVyUG9ydCwgQ2xpZW50JiBjbGllbnQpCitzdGQ6Om9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KGNv
bnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQsIENsaWVudCYgY2xp
ZW50KQogewogICAgIGlmIChhdXRvIHNvY2tldCA9IFNvY2tldDo6Y29ubmVjdChzZXJ2ZXJBZGRy
ZXNzLCBzZXJ2ZXJQb3J0KSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNsaWVudCgqc29ja2V0LCBj
bGllbnQpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hh
ciogYWRkcmVzcywgdWludDE2X3QgcG9ydCwgTGlzdGVuZXImIGxpc3RlbmVyKQorc3RkOjpvcHRp
b25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5J
bmV0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQsIExpc3RlbmVyJiBsaXN0ZW5l
cikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBhdXRv
IGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFJl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojppc0xpc3RlbmluZyhDb25uZWN0aW9uSUQgaWQp
CiAKIGludCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cG9sbGluZ1RpbWVvdXQoKQog
ewotICAgIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG1vc3RSZWNlbnRXYWtldXA7CisgICAgc3Rk
OjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBtb3N0UmVjZW50V2FrZXVwOwogICAgIGZvciAoY29u
c3QgYXV0byYgY29ubmVjdGlvbiA6IG1fbGlzdGVuZXJzKSB7CiAgICAgICAgIGlmIChjb25uZWN0
aW9uLnZhbHVlLT5uZXh0UmV0cnlUaW1lKSB7CiAgICAgICAgICAgICBpZiAobW9zdFJlY2VudFdh
a2V1cCkKQEAgLTE5OSw3ICsxOTksNyBAQCBDb25uZWN0aW9uSUQgUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OmdlbmVyYXRlQ29ubmVjdGlvbklEKCkKICAgICByZXR1cm4gaWQ7CiB9CiAK
LU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNy
ZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBDbGllbnQmIGNsaWVudCkKK3N0
ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIENsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChTb2NrZXQ6OmlzVmFsaWQoc29ja2V0KSk7CiAKQEAgLTI2Myw3ICsyNjMs
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlTGlzdGVu
ZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogICAgIH0pOwogfQogCi1PcHRpb25hbDx1aW50MTZfdD4g
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVjdGlvbklEIGlkKSBj
b25zdAorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OmdldFBvcnQoQ29ubmVjdGlvbklEIGlkKSBjb25zdAogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0g
bV9saXN0ZW5lcnMuZ2V0KGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggOTdlNGUwOWExOTMwZDU1ZjJiNmJjY2Y0N2VkMGU1
N2ZjYjhiMzE3YS4uNzcwNDRjYWRlYzBiZTE2Y2EwODdmZTYzYjQ2ZWZkMWEzZjBhZjE4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5MaXN0ZW5lcigpIHsg
fQogCiAgICAgICAgIC8vIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUg
Y2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICB2aXJ0dWFsIE9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBQbGF0
Zm9ybVNvY2tldFR5cGUpID0gMDsKKyAgICAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENvbm5l
Y3Rpb25JRD4gZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBQbGF0Zm9y
bVNvY2tldFR5cGUpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVN0YXR1cyhS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCwgU3RhdHVzKSA9IDA7
CiAgICAgfTsKIApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQoKTsKICAgICB+UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoKTsK
IAotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hhciogc2Vy
dmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCwgQ2xpZW50Jik7Ci0gICAgT3B0aW9uYWw8Q29u
bmVjdGlvbklEPiBsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQs
IExpc3RlbmVyJik7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNvbm5lY3RJbmV0
KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQsIENsaWVudCYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFk
ZHJlc3MsIHVpbnQxNl90IHBvcnQsIExpc3RlbmVyJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xp
ZW50KENsaWVudCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZUxpc3RlbmVyKExpc3RlbmVyJik7CiAK
QEAgLTc4LDkgKzc4LDkgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIHNlbmQoQ29ubmVjdGlv
bklEIGlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsgc2VuZChpZCwgZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsgfQogICAgIGlubGluZSB2b2lkIHNlbmQoQ29ubmVjdGlvbklEIGlk
LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IHNlbmQoaWQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CiAKLSAgICBPcHRpb25hbDxD
b25uZWN0aW9uSUQ+IGNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUsIENsaWVudCYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2Nr
ZXRUeXBlLCBDbGllbnQmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KENvbm5l
Y3Rpb25JRCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChDb25u
ZWN0aW9uSUQpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNjb25uZWN0KENvbm5lY3Rpb25JRCk7CiAK
QEAgLTE2OCw3ICsxNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cmluZyBhZGRyZXNzOwog
ICAgICAgICB1aW50MTZfdCBwb3J0OwogICAgICAgICBMaXN0ZW5lciYgbGlzdGVuZXI7Ci0gICAg
ICAgIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG5leHRSZXRyeVRpbWU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbmV4dFJldHJ5VGltZTsKICAgICAgICAgU2Vjb25kcyBy
ZXRyeUludGVydmFsIHsgaW5pdGlhbFJldHJ5SW50ZXJ2YWwgfTsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgv
UmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBPU0lYLmNw
cAppbmRleCBkYTY4NTE4OWQ1MmYwNjY0YzU0MWQzNWE2NDI5YWE0MGIwMTcxNGIwLi44YTk4NTg3
NmVhZGJkZGU4ZWU0YzM3ZGRhMDk4MzViMWI2ZjBmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgvUmVtb3RlSW5zcGVjdG9y
U29ja2V0UE9TSVguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQT1NJWC5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgdm9pZCBpbml0KCkKIHsKIH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBl
PiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQp
CitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBz
ZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQogewogICAgIHN0cnVjdCBzb2NrYWRk
cl9pbiBhZGRyZXNzID0geyB9OwogCkBAIC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPFBsYXRmb3Jt
U29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBz
ZXJ2ZXJQCiAgICAgcmV0dXJuIGZkOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+
IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0KQorc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1
aW50MTZfdCBwb3J0KQogewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzID0geyB9Owog
CkBAIC0xMjUsNyArMTI1LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4o
Y29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKICAgICByZXR1cm4gZmRMaXN0
ZW47CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29j
a2V0VHlwZSBzb2NrZXQpCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gYWNjZXB0
KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiB7CiAgICAgc3RydWN0IHNvY2thZGRyX2luIGFk
ZHJlc3MgPSB7IH07CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tl
dFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAy
Pj4gY3JlYXRlUGFpcigpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRU
eXBlLCAyPj4gY3JlYXRlUGFpcigpCiB7CiAgICAgc3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5
cGUsIDI+IHNvY2tldHM7CiAKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIGlzTGlzdGVuaW5nKFBs
YXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25h
bDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogewogICAg
IEFTU0VSVChpc1ZhbGlkKHNvY2tldCkpOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgT3B0aW9uYWw8
dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1cm4g
YWRkcmVzcy5zaW5fcG9ydDsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29j
a2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCitzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIs
IGludCBidWZmZXJTaXplKQogewogICAgIEFTU0VSVChpc1ZhbGlkKHNvY2tldCkpOwogCkBAIC0y
MTQsNyArMjE0LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBz
b2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiB3
cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6
ZSkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRXaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwCmluZGV4IDZlZDgwZWJiN2Jh
ZDQ2MTZkNmNiMjNkMWFjMmQ5ZjhmZThiZjY1NTguLjQ0ODlhNDUxMTk4N2M2MDQwMWZiMTM1ZmVk
NzkzMjAzYWFlZTg1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvd2luL1JlbW90ZUlu
c3BlY3RvclNvY2tldFdpbi5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgUGxhdGZvcm1T
b2NrZXRUeXBlIGJpbmRBbmRMaXN0ZW4oc3RydWN0IHNvY2thZGRyX2luJiBhZGRyZXNzKQogICAg
IHJldHVybiBzb2NrZXQubGVhaygpOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+
IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCkK
K3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNl
cnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQpCiB7CiAgICAgc3RydWN0IHNvY2thZGRy
X2luIGFkZHJlc3MgPSB7IH07CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBPcHRpb25hbDxQbGF0Zm9y
bVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qg
c2VydmVyUAogICAgIHJldHVybiBzb2NrZXQ7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtU29ja2V0
VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCitzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NT
dHIsIHVpbnQxNl90IHBvcnQpCiB7CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgQUZfSU5FVDYgY29u
bmVjdGlvbnMuCiAgICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHJlc3MgPSB7IH07CkBAIC0xOTIs
NyArMTkyLDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hh
ciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKICAgICByZXR1cm4gc29ja2V0OwogfQogCi1P
cHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNv
Y2tldFR5cGUgc29ja2V0KQogewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzID0geyB9
OwogCkBAIC0yMDUsNyArMjA1LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2Nl
cHQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1PcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBh
aXIoKQorc3RkOjpvcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNy
ZWF0ZVBhaXIoKQogewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzOwogICAgIGFkZHJl
c3Muc2luX2ZhbWlseSA9IEFGX0lORVQ7CkBAIC0yMTYsNyArMjE2LDcgQEAgT3B0aW9uYWw8c3Rk
OjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKICAgICBpZiAoIXNl
cnZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQx
Nl90PiBzZXJ2ZXJQb3J0ID0gZ2V0UG9ydChzZXJ2ZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHNlcnZlclBvcnQgPSBnZXRQb3J0KHNlcnZlcik7CiAgICAgaWYgKCFzZXJ2ZXJQb3J0
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9v
bCBpc0xpc3RlbmluZyhQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNv
Y2tldCkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBl
IHNvY2tldCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsKIApAQCAtMjc3LDcgKzI3
Nyw3IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2Nr
ZXQpCiAgICAgcmV0dXJuIG50b2hzKGFkZHJlc3Muc2luX3BvcnQpOwogfQogCi1PcHRpb25hbDxz
aXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgdm9pZCogYnVmZmVyLCBpbnQg
YnVmZmVyU2l6ZSkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlw
ZSBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCiB7CiAgICAgQVNTRVJUKGlz
VmFsaWQoc29ja2V0KSk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBPcHRpb25hbDxzaXplX3Q+IHJl
YWQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgdm9pZCogYnVmZmVyLCBpbnQgYnVmZmVyU2l6
ZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxzaXplX3Q+IHdyaXRl
KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQor
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIGNv
bnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQogewogICAgIEFTU0VSVChpc1ZhbGlkKHNvY2tldCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQppbmRleCAzNTk4OGRiZDg5MTlmZDgw
ODcwMzcxMWViZDZmN2RkZjcyNGFkY2Q1Li40YjBlMDY2NDc4ODQ5MDhiZjJjZmYyNzBlNzhlNmZi
NzE1MjU0ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKQEAgLTIwMCw3ICsy
MDAsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoInVua25vd24gdHlwZSIpCiAKICAgICAgICAgaWYgaXNfb3B0aW9uYWw6Ci0g
ICAgICAgICAgICBjcHBfbmFtZSA9ICdPcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQorICAgICAg
ICAgICAgY3BwX25hbWUgPSAnc3RkOjpvcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQogICAgICAg
ICByZXR1cm4gY3BwX25hbWUKIAogICAgIEBzdGF0aWNtZXRob2QKQEAgLTI0NCw3ICsyNDQsNyBA
QCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoInVua25vd24gdHlwZSIpCiAKICAgICAgICAgaWYgaXNfb3B0aW9uYWw6Ci0gICAgICAg
ICAgICBjcHBfbmFtZSA9ICdPcHRpb25hbDwlcz4nICUgY3BwX25hbWUKKyAgICAgICAgICAgIGNw
cF9uYW1lID0gJ3N0ZDo6b3B0aW9uYWw8JXM+JyAlIGNwcF9uYW1lCiAgICAgICAgIHJldHVybiBj
cHBfbmFtZQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMjg4LDcgKzI4OCw3IEBAIGNsYXNzIENw
cEdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5r
bm93biB0eXBlIikKIAogICAgICAgICBpZiBpc19vcHRpb25hbDoKLSAgICAgICAgICAgIGNwcF9u
YW1lID0gJ09wdGlvbmFsPCVzPiYmJyAlIGNwcF9uYW1lCisgICAgICAgICAgICBjcHBfbmFtZSA9
ICdzdGQ6Om9wdGlvbmFsPCVzPiYmJyAlIGNwcF9uYW1lCiAgICAgICAgIHJldHVybiBjcHBfbmFt
ZQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMzMyLDcgKzMzMiw3IEBAIGNsYXNzIENwcEdlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biB0
eXBlIikKIAogICAgICAgICBpZiBpc19vcHRpb25hbDoKLSAgICAgICAgICAgIGNwcF9uYW1lID0g
J09wdGlvbmFsPCVzPiYmJyAlIGNwcF9uYW1lCisgICAgICAgICAgICBjcHBfbmFtZSA9ICdzdGQ6
Om9wdGlvbmFsPCVzPiYmJyAlIGNwcF9uYW1lCiAgICAgICAgIHJldHVybiBjcHBfbmFtZQogCiAg
ICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggOTUzYmZiODc1NTcxYTYxMjJh
Y2M2MGEwZDk1Yjk4Mzk2MTMyMDE0Zi4uMzA0ZDBmNmMyYTI4MWYxMTY5MjQyMzI4YzYyYWM1NWE3
YzM3NjA5MCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC00MTgsMTEgKzQxOCwxMSBAQCBjbGFzcyBD
cHBQcm90b2NvbFR5cGVzSGVhZGVyR2VuZXJhdG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgICAg
ICAnbmFtZXNwYWNlICVzIHsnICUgc2VsZi5oZWxwZXJzX25hbWVzcGFjZSgpLAogICAgICAgICAg
ICAgJycsCiAgICAgICAgICAgICAndGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4n
LAotICAgICAgICAgICAgJ09wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsnLAorICAgICAgICAgICAgJ3N0ZDo6b3B0aW9uYWw8
UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYp
OycsCiAgICAgICAgIF0pKQogCiAgICAgICAgIGRlZiByZXR1cm5fdHlwZV93aXRoX2V4cG9ydF9t
YWNybyhjcHBfcHJvdG9jb2xfdHlwZSk6Ci0gICAgICAgICAgICBlbnVtX3JldHVybl90eXBlID0g
J09wdGlvbmFsPCVzPicgJSBjcHBfcHJvdG9jb2xfdHlwZQorICAgICAgICAgICAgZW51bV9yZXR1
cm5fdHlwZSA9ICdzdGQ6Om9wdGlvbmFsPCVzPicgJSBjcHBfcHJvdG9jb2xfdHlwZQogICAgICAg
ICAgICAgcmVzdWx0X3Rlcm1zID0gW2VudW1fcmV0dXJuX3R5cGVdCiAgICAgICAgICAgICBleHBv
cnRfbWFjcm8gPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNybycs
IE5vbmUpCiAgICAgICAgICAgICBpZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xf
dHlwZXNfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggY2Q4OTM5NjVjYjdjY2EwN2JjYjJkNmM4MmFi
OTcwZWIyNWYzZGM1Mi4uMjA0OTYyNjU3MGY1ZmFjZWY2Y2MxNDRmYTU5YWQyZTFiNjdlMDFjOSAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMTA4LDggKzEwOCw3IEBAIGNs
YXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3Ip
OgogICAgICAgICBkZWYgZ2VuZXJhdGVfY29udmVyc2lvbl9tZXRob2RfYm9keShlbnVtX3R5cGUs
IGNwcF9wcm90b2NvbF90eXBlKToKICAgICAgICAgICAgIGJvZHlfbGluZXMgPSBbXQogICAgICAg
ICAgICAgYm9keV9saW5lcy5leHRlbmQoWwotICAgICAgICAgICAgICAgICd0ZW1wbGF0ZTw+JywK
LSAgICAgICAgICAgICAgICAnT3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwl
cz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90b2NvbF90eXBlLCBj
cHBfcHJvdG9jb2xfdHlwZSksCisgICAgICAgICAgICAgICAgJ3RlbXBsYXRlPD4gc3RkOjpvcHRp
b25hbDwlcz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPCVzPihjb25zdCBTdHJpbmcmIHByb3Rv
Y29sU3RyaW5nKScgJSAoY3BwX3Byb3RvY29sX3R5cGUsIGNwcF9wcm90b2NvbF90eXBlKSwKICAg
ICAgICAgICAgICAgICAneycsCiAgICAgICAgICAgICAgICAgJyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7JywKICAgICAgICAgICAgIF0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGMwZmU3YTc4ZTM3ZmE1MTI0MzUyNDM4
ZmI5ZDQ1YWU5ODhhNzQ1NTMuLmZlNjdlNDNmZjc1OGVlYWFlM2UyOTg3Mzk1ZThjYzI4M2M3NjIy
NjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0yMTAs
NyArMjEwLDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5l
cmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgICAgICBvYmpjX2luX3BhcmFtX25hbWUgPSAn
b18lcycgJSBpbl9wYXJhbV9uYW1lCiAgICAgICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNf
dHlwZV9mb3JfcGFyYW0oZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVyLCBG
YWxzZSkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBl
KToKLSAgICAgICAgICAgICAgICBvYmpjX3R5cGUgPSAnT3B0aW9uYWw8JXM+JyAlIG9iamNfdHlw
ZQorICAgICAgICAgICAgICAgIG9iamNfdHlwZSA9ICdzdGQ6Om9wdGlvbmFsPCVzPicgJSBvYmpj
X3R5cGUKICAgICAgICAgICAgIHBhcmFtX2V4cHJlc3Npb24gPSBpbl9wYXJhbV9leHByZXNzaW9u
KGluX3BhcmFtX25hbWUsIHBhcmFtZXRlcikKICAgICAgICAgICAgIGltcG9ydF9leHByZXNzaW9u
ID0gc2VsZi5vYmpjX3Byb3RvY29sX2ltcG9ydF9leHByZXNzaW9uX2Zvcl9wYXJhbWV0ZXIocGFy
YW1fZXhwcmVzc2lvbiwgZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKQog
ICAgICAgICAgICAgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5
cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CmluZGV4IGE2YTY0M2ZjODg1MzMyZjFiMGJkZDhiNzU4
ZTI4NDA4ZmVmNWY1MTYuLmMwYWZlNTVmYmQxZTA4NWEyNWJkY2ZlYWU0YmRjYzAyMDBlNzZmNzcg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQpAQCAtMTYzLDcgKzE2
Myw3IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0hlYWRlckdlbmVyYXRvcihP
YmpDR2VuZXJhdG9yKToKICAgICBkZWYgX2dlbmVyYXRlX2VudW1fZnJvbV9wcm90b2NvbF9zdHJp
bmcoc2VsZiwgb2JqY19lbnVtX25hbWUsIGVudW1fdmFsdWVzKToKICAgICAgICAgbGluZXMgPSBb
XQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3RlbXBsYXRlPD4nKQotICAgICAgICBsaW5lcy5hcHBl
bmQoJ2lubGluZSBPcHRpb25hbDwlcz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpJyAlIG9iamNfZW51bV9uYW1lKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ2lubGluZSBz
dGQ6Om9wdGlvbmFsPCVzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkn
ICUgb2JqY19lbnVtX25hbWUpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCiAgICAgICAgIGZv
ciBlbnVtX3ZhbHVlIGluIGVudW1fdmFsdWVzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgaWYgKHZhbHVlID09ICIlcyIpJyAlIGVudW1fdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3By
b3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggYjEyMmM1NTg0Mjc0NzM3
YmNlNGJlN2Q0NDUxOGM5ZTg0YmQ2MjE0Mi4uYTZjMGY3MjA4ZmRiZDYxZGU4YTkwMzliNWU0MTE2
MjU2ZjI2M2Y1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2lt
cGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBs
ZW1lbnRhdGlvbi5weQpAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVD
b252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAg
ICBsaW5lcy5hcHBlbmQoJ3snKQogICAgICAgICBpZiBpc2luc3RhbmNlKHJlc29sdmVkX3R5cGUs
IEVudW1UeXBlKToKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7JykKLSAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIE9wdGlvbmFsPCUodHlwZSlzPiByZXN1bHQgPSBJbnNwZWN0b3I6
OmZyb21Qcm90b2NvbFN0cmluZzwlKHR5cGUpcz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxv
YWQpOycgJSB7J3R5cGUnOiBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShyZXNvbHZlZF90eXBlKX0p
CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6
ZnJvbVByb3RvY29sU3RyaW5nPCUodHlwZSlzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9h
ZCk7JyAlIHsndHlwZSc6IHNlbGYub2JqY19uYW1lX2Zvcl90eXBlKHJlc29sdmVkX3R5cGUpfSkK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VO
VU1fVkFMVUUocmVzdWx0LCBAIiVzIik7JyAlIGRlY2xhcmF0aW9uLnR5cGUucmF3X25hbWUoKSkK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVl
KCkpOycpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCAoQXJyYXlUeXBl
LCBQcmltaXRpdmVUeXBlKSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxl
bWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRl
eCBhMGU3YjkwMDQ0NTViYmU3ZTExZThhMGJjNWVkNTExMGZlMWExYTQ0Li5kMzc1YTEyMTk0MDU1
NjdiY2M2NDkwYWI2MTMwYjY2ZjU2ODcwMWZmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50
YXRpb24ucHkKQEAgLTE0MywxMyArMTQzLDEzIEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgICAgICB2YXJfbmFt
ZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyX25h
bWUpCiAgICAgICAgICAgICBjb252ZXJzaW9uX2V4cHJlc3Npb24gPSBzZWxmLnBheWxvYWRfdG9f
b2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKICAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UobWVtYmVyLnR5cGUsIEVudW1UeXBlKToKLSAgICAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXMgPSAlczsnICUgKG9iamNfdHlwZSwg
dmFyX25hbWUsIGNvbnZlcnNpb25fZXhwcmVzc2lvbikpCiAgICAgICAgICAgICAgICAgaWYgbm90
IG1lbWJlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgYXV0byAlcyA9ICVzOycgJSAodmFyX25hbWUsIGNvbnZlcnNpb25fZXhwcmVzc2lvbikpCiAg
ICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX0VOVU1fVkFMVUUoJXMsIEAiJXMiKTsnICUgKHZhcl9uYW1lLCBtZW1iZXJfbmFtZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAlcy52YWx1ZSgp
OycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgc2VsZi4lcyA9IColczsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCiAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYg
KCVzKScgJSB2YXJfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgIHNlbGYuJXMgPSAlcy52YWx1ZSgpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAgICAg
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKGF1dG8gJXMgPSAlcyknICUgKHZh
cl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQorICAgICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICAgICAgc2VsZi4lcyA9IColczsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkp
CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHNl
bGYuJXMgPSAlczsnICUgKHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggZjg2
ZmJlOTUxNWE5ZDJjN2VjOGI1OWUwZWFiOWQyMWQ0OTdkOTVmZi4uNGU4MDJjZGIwOTQ2MzQxYTIw
NmFlZDMxNDM1NDk2YWZhODRkOTQyYiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsiIiIpCiAKICAgICBUeXBlQ29udmVyc2lvbnNIZWFkZXJTdGFuZGFyZCA9ICgKICAgICAi
IiJ0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsiIiIpCitzdGQ6Om9wdGlv
bmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
OyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyUHJlbHVkZSA9ICgKICAgICAiIiIk
e2luY2x1ZGVzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4t
ZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRUeXBlLW1hdGNoaW5nLWRv
bWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAppbmRleCA0N2I3MTY4Njc4ZGJjYTc1NmMx
ZjYyM2E5OWE2YmJmYzgzODFlNDY4Li41NjhmZTAzMGJiMWQ0OTE5NWU1ZDI5MDcyNzQ4NGM5ODU2
ZDg3Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1
Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRUeXBlLW1hdGNoaW5nLWRv
bWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkxMiw3IEBAIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlw
ZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25h
bDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsK
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5q
c29uLXJlc3VsdAppbmRleCA0NWNlY2YyODQxYjNiMWUyNGZkNWVhMDIxNzY2NTRiYzE4ZThkOWM5
Li42MzE5NTllYjIxNDg4MGU3NzFiYzJhNDUzZWRlNTQ3NTBjMWQxNTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBjbGFzcyBB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOwogCiBjbGFzcyBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IC8qIG9w
dF9jb2x1bW5OYW1lcyAqLywgU3RyaW5nIC8qIG9wdF9ub3RlcyAqLywgT3B0aW9uYWw8ZG91Ymxl
PiAvKiBvcHRfdGltZXN0YW1wICovLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiAvKiBvcHRfdmFsdWVz
ICovLCBSZWZQdHI8SlNPTjo6VmFsdWU+IC8qIG9wdF9wYXlsb2FkICovLCBPcHRpb25hbDxpbnQ+
IC8qIG9wdF9kYXRhYmFzZUlkICovLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4g
Lyogb3B0X3NxbEVycm9yICovLCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnM+IC8qIG9wdF9zY3JlZW5Db2xvciAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiAvKiBvcHRfYWx0ZXJuYXRlQ29sb3JzICovLCBTdHJpbmcgLyogb3B0X3ByaW50
Q29sb3IgKi8+PiBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGludCBkYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5KSA9IDA7CisgICAgdmlydHVhbCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IC8qIG9w
dF9jb2x1bW5OYW1lcyAqLywgU3RyaW5nIC8qIG9wdF9ub3RlcyAqLywgc3RkOjpvcHRpb25hbDxk
b3VibGU+IC8qIG9wdF90aW1lc3RhbXAgKi8sIFJlZlB0cjxKU09OOjpPYmplY3Q+IC8qIG9wdF92
YWx1ZXMgKi8sIFJlZlB0cjxKU09OOjpWYWx1ZT4gLyogb3B0X3BheWxvYWQgKi8sIHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJZCAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAqLywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnM+IC8qIG9wdF9zY3JlZW5Db2xvciAqLywgUmVmUHRyPFByb3Rv
Y29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiAvKiBvcHRfYWx0ZXJuYXRlQ29sb3JzICovLCBTdHJp
bmcgLyogb3B0X3ByaW50Q29sb3IgKi8+PiBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzKGludCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5KSA9IDA7CiAgICAgY2xhc3Mg
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayA6IHB1YmxpYyBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRj
aGVyPiYmLCBpbnQgaWQpOwotICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rl
cywgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBPcHRpb25h
bDxpbnQ+JiYgb3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYmIG9wdF9zcWxFcnJvciwgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPiYmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JM
aXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3Ip
OworICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+
JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRpb25h
bDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFs
dWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50
PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBv
cHRfc3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPiYmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JM
aXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3Ip
OwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKGludCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWY8RXhlY3V0ZVNR
TEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4mJikgPSAwOwogICAgIHZpcnR1YWwg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiAvKiBjb2x1bW5OYW1lcyAqLywgU3RyaW5nIC8qIG5vdGVzICovLCBkb3VibGUgLyogdGlt
ZXN0YW1wICovLCBSZWY8SlNPTjo6T2JqZWN0PiAvKiB2YWx1ZXMgKi8sIFJlZjxKU09OOjpWYWx1
ZT4gLyogcGF5bG9hZCAqLywgaW50IC8qIGRhdGFiYXNlSWQgKi8sIFJlZjxQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiAvKiBzcWxFcnJvciAqLywgUmVmPFByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiAvKiBhbHRlcm5hdGVDb2xvcnMgKi8sIFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyAvKiBzY3JlZW5Db2xvciAqLywgU3RyaW5nIC8qIHByaW50Q29sb3IgKi8+PiBleGVj
dXRlU1FMU3luYyhpbnQgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSkgPSAwOwpAQCAt
MzI1LDcgKzMyNSw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNR
TFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHByb3RvY29sCiAKIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0Nh
bGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGTW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7
IH0KIAotdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4mJiBvcHRfY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25v
dGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIE9wdGlv
bmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiYgb3B0X3NxbEVycm9yLCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnM+JiYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xv
cikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rl
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0
ZDo6b3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiYmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYg
b3B0X3ByaW50Q29sb3IpCiB7CiAgICAgYXV0byBwcm90b2NvbF9qc29uTWVzc2FnZSA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgaWYgKCEhb3B0X2NvbHVtbk5hbWVzKQpAQCAtNjg4LDEx
ICs2ODgsMTEgQEAgcHVibGljOgogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJv
dG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwog
CiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFs
PFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3QgU3RyaW5nJik7Citz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3Qg
U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTc2OCw4ICs3Njgs
NyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMg
aW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiAKLXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29s
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmlu
ZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29s
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9yczo6UmVkLApAQCAtMTM5Niw3ICsxMzk1LDcgQEAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1U
eXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlv
bmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
OwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VQ
cmltYXJ5Q29sb3JzIHZhbHVlKQogewpAQCAtMTQxMSw3ICsxNDEwLDcgQEAgaW5saW5lIFN0cmlu
ZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1
ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9
PSAicmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
c1JlZDsKQEAgLTE0MzcsNyArMTQzNiw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmlu
ZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WCiB9CiAK
IHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAi
Y3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjsKQEAgLTE0NjUsNyArMTQ2NCw3IEBA
IGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25h
bDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
UHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmlu
dENvbG9yQ3lhbjsKQEAgLTE0OTMsNyArMTQ5Miw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciB2YWx1
CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxTeW5jUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxTeW5jUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yQ3lhbjsKQEAgLTE1MjEsNyArMTUyMCw3
IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgdmFsCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3I+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4i
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmlu
dENvbG9yQ3lhbjsKQEAgLTE1OTYsNyArMTU5NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiArICh2b2lkKV9wYXJzZVByaW1hcnlDb2xvcnM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZy
b21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQ
RShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xT
dHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPigoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpcGF5bG9hZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShy
ZXN1bHQsIEAiUHJpbWFyeUNvbG9ycyIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZGQ3NzY1ZTViN2IyNTgyYzdlOGRiZTk1MzU5MzE3
ODViYWZjMjc1MS4uYjY3MzdlMThkZjYwZTZjZGEyOTlhNjc0MGIzNzI0NTE4MTg0MmZjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiBjbGFzcyBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25vdGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0
X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNP
Tjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIE9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElkLCBSZWZQdHI8SlNP
Tjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0ZDo6b3B0
aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF9z
cWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxKU09OOjpBcnJh
eT4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHBy
b3RvY29sX3JlcXVlc3RJZCwgUmVmPEpTT046OkFycmF5PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHZhbHVl
cywgUmVmPEpTT046OlZhbHVlPiYmIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWY8SlNPTjo6
T2JqZWN0PiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWY8SlNPTjo6
QXJyYXk+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpID0gMDsK
IH07CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOwogCiBjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJl
ZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+IC8qIG9wdF9jb2x1bW5OYW1lcyAqLywgU3RyaW5n
IC8qIG9wdF9ub3RlcyAqLywgT3B0aW9uYWw8ZG91YmxlPiAvKiBvcHRfdGltZXN0YW1wICovLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiAvKiBvcHRfdmFsdWVzICovLCBSZWZQdHI8SlNPTjo6VmFsdWU+
IC8qIG9wdF9wYXlsb2FkICovLCBPcHRpb25hbDxpbnQ+IC8qIG9wdF9kYXRhYmFzZUlkICovLCBS
ZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gLyogb3B0X3NxbEVycm9yICovLCBPcHRp
b25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IC8qIG9wdF9zY3JlZW5Db2xv
ciAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiAvKiBvcHRfYWx0ZXJu
YXRlQ29sb3JzICovLCBTdHJpbmcgLyogb3B0X3ByaW50Q29sb3IgKi8+PiBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgb3B0X25vdGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYg
b3B0X3BheWxvYWQsIE9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBvcHRfc3FsRXJyb3IsIE9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRf
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKSA9IDA7CisgICAg
dmlydHVhbCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpB
cnJheU9mPFN0cmluZz4+IC8qIG9wdF9jb2x1bW5OYW1lcyAqLywgU3RyaW5nIC8qIG9wdF9ub3Rl
cyAqLywgc3RkOjpvcHRpb25hbDxkb3VibGU+IC8qIG9wdF90aW1lc3RhbXAgKi8sIFJlZlB0cjxK
U09OOjpPYmplY3Q+IC8qIG9wdF92YWx1ZXMgKi8sIFJlZlB0cjxKU09OOjpWYWx1ZT4gLyogb3B0
X3BheWxvYWQgKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJZCAqLywgUmVm
UHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAqLywgc3RkOjpv
cHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IC8qIG9wdF9zY3JlZW5D
b2xvciAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiAvKiBvcHRfYWx0
ZXJuYXRlQ29sb3JzICovLCBTdHJpbmcgLyogb3B0X3ByaW50Q29sb3IgKi8+PiBleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyYgb3B0X25vdGVzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBvcHRfdGlt
ZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpW
YWx1ZT4mJiBvcHRfcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFiYXNlSWQs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3NxbEVycm9yLCBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxK
U09OOjpBcnJheT4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmlu
dENvbG9yKSA9IDA7CiAgICAgdmlydHVhbCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1
cGxlPFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+IC8qIGNvbHVtbk5hbWVzICovLCBTdHJpbmcg
Lyogbm90ZXMgKi8sIGRvdWJsZSAvKiB0aW1lc3RhbXAgKi8sIFJlZjxKU09OOjpPYmplY3Q+IC8q
IHZhbHVlcyAqLywgUmVmPEpTT046OlZhbHVlPiAvKiBwYXlsb2FkICovLCBpbnQgLyogZGF0YWJh
c2VJZCAqLywgUmVmPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IC8qIHNxbEVycm9yICovLCBQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgLyogc2NyZWVuQ29sb3IgKi8sIFJlZjxQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogYWx0ZXJuYXRlQ29sb3JzICovLCBTdHJp
bmcgLyogcHJpbnRDb2xvciAqLz4+IGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWY8SlNP
Tjo6QXJyYXk+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1l
c3RhbXAsIFJlZjxKU09OOjpPYmplY3Q+JiYgdmFsdWVzLCBSZWY8SlNPTjo6VmFsdWU+JiYgcGF5
bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZjxKU09OOjpPYmplY3Q+JiYgc3FsRXJyb3IsIFByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgUmVmPEpTT046OkFycmF5
PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKSA9IDA7CiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsK
QEAgLTYwMSwxMSArNjAxLDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVu
dW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9w
dGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+
Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0
cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC02
ODEsOCArNjgxLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAK
IC8vIEVudW1zIGluIHRoZSAnRGF0YWJhc2UnIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25h
bDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJv
dG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNl
OjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVf
dClQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM6OlJlZCwKQEAgLTc0OCw3ICs3NDcs
NyBAQCBjbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6
IHB1YmxpYyBBbHRlcm5hdGVEYXRhYmFzZUJhYwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlk
PFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRl
ID0gaGFuZGxlcjsgfQotICAgIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25n
IHByb3RvY29sX3JlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdF9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRfdGltZXN0
YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1
ZT4mJiBvcHRfcGF5bG9hZCwgT3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcmIG9wdF9wcmludENvbG9yKSBmaW5hbDsKKyAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBv
cHRfY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25vdGVzLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4mJiBvcHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMs
IFJlZlB0cjxKU09OOjpWYWx1ZT4mJiBvcHRfcGF5bG9hZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYg
b3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3NxbEVycm9yLCBjb25z
dCBTdHJpbmcmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdF9hbHRl
cm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3IpIGZpbmFsOwogICAgIHZv
aWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElkLCBS
ZWY8SlNPTjo6QXJyYXk+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJs
ZSB0aW1lc3RhbXAsIFJlZjxKU09OOjpPYmplY3Q+JiYgdmFsdWVzLCBSZWY8SlNPTjo6VmFsdWU+
JiYgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZjxKU09OOjpPYmplY3Q+JiYgc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZjxKU09OOjpBcnJheT4mJiBhbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikgZmluYWw7CiBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+PiBtX2RlbGVnYXRl
OwpAQCAtNzk3LDcgKzc5Niw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci12b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6
QXJyYXk+JiYgaW5fb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX29wdF9ub3Rlcywg
T3B0aW9uYWw8ZG91YmxlPiYmIGluX29wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgaW5fb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIGluX29wdF9wYXlsb2FkLCBP
cHRpb25hbDxpbnQ+JiYgaW5fb3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
aW5fb3B0X3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX29wdF9zY3JlZW5Db2xvciwgUmVmUHRy
PEpTT046OkFycmF5PiYmIGluX29wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5f
b3B0X3ByaW50Q29sb3IpCit2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElk
LCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgaW5fb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcm
IGluX29wdF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgaW5fb3B0X3RpbWVzdGFtcCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBpbl9vcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+
JiYgaW5fb3B0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGluX29wdF9kYXRhYmFzZUlk
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGluX29wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBp
bl9vcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBpbl9vcHRfYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcmIGluX29wdF9wcmludENvbG9yKQogewogICAgIGlmICghW21f
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrOmNvbHVtbk5hbWVzOm5v
dGVzOnRpbWVzdGFtcDp2YWx1ZXM6cGF5bG9hZDpkYXRhYmFzZUlkOnNxbEVycm9yOnNjcmVlbkNv
bG9yOmFsdGVybmF0ZUNvbG9yczpwcmludENvbG9yOildKSB7CiAgICAgICAgIGJhY2tlbmREaXNw
YXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IocHJvdG9jb2xfcmVxdWVzdElkLCBCYWNrZW5k
RGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsICInRGF0YWJhc2UuZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycycgd2FzIG5vdCBmb3VuZCJfcyk7CkBAIC04NjIsMTMgKzg2MSwxMyBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgcAogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5f
b3B0X3NxbEVycm9yOwogICAgIGlmICghIWluX29wdF9zcWxFcnJvcikKICAgICAgICAgb19pbl9v
cHRfc3FsRXJyb3IgPSBhZG9wdE5TKFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBhbGxvY10g
aW5pdFdpdGhKU09OT2JqZWN0OmluX29wdF9zcWxFcnJvci5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0
b3JlbGVhc2UoKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnM+IG9faW5fb3B0X3NjcmVlbkNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBvX2luX29wdF9zY3JlZW5Db2xvcjsKICAgICBpZiAoISFp
bl9vcHRfc2NyZWVuQ29sb3IpCiAgICAgICAgIG9faW5fb3B0X3NjcmVlbkNvbG9yID0gZnJvbVBy
b3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5fb3B0X3Nj
cmVlbkNvbG9yKTsKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fb3B0X2FsdGVybmF0
ZUNvbG9yczsKICAgICBpZiAoISFpbl9vcHRfYWx0ZXJuYXRlQ29sb3JzKQogICAgICAgICBvX2lu
X29wdF9hbHRlcm5hdGVDb2xvcnMgPSB0b09iakNTdHJpbmdBcnJheShpbl9vcHRfYWx0ZXJuYXRl
Q29sb3JzLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFi
YXNlKGFub255bW91cyk+IG9faW5fb3B0X3ByaW50Q29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZShhbm9ueW1vdXMpPiBvX2luX29wdF9wcmludENvbG9yOwogICAg
IGlmICghIWluX29wdF9wcmludENvbG9yKQogICAgICAgICBvX2luX29wdF9wcmludENvbG9yID0g
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlKGFub255bW91cyk+KGluX29w
dF9wcmludENvbG9yKTsKICAgICBbbV9kZWxlZ2F0ZSBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6c3VjY2Vz
c0NhbGxiYWNrIGNvbHVtbk5hbWVzOighIWluX29wdF9jb2x1bW5OYW1lcyA/ICZvX2luX29wdF9j
b2x1bW5OYW1lcyA6IG5pbCkgbm90ZXM6KCEhaW5fb3B0X25vdGVzID8gJm9faW5fb3B0X25vdGVz
IDogbmlsKSB0aW1lc3RhbXA6KCEhaW5fb3B0X3RpbWVzdGFtcCA/ICZvX2luX29wdF90aW1lc3Rh
bXAgOiBuaWwpIHZhbHVlczooISFpbl9vcHRfdmFsdWVzID8gJm9faW5fb3B0X3ZhbHVlcyA6IG5p
bCkgcGF5bG9hZDooISFpbl9vcHRfcGF5bG9hZCA/ICZvX2luX29wdF9wYXlsb2FkIDogbmlsKSBk
YXRhYmFzZUlkOighIWluX29wdF9kYXRhYmFzZUlkID8gJm9faW5fb3B0X2RhdGFiYXNlSWQgOiBu
aWwpIHNxbEVycm9yOighIWluX29wdF9zcWxFcnJvciA/ICZvX2luX29wdF9zcWxFcnJvciA6IG5p
bCkgc2NyZWVuQ29sb3I6KCEhaW5fb3B0X3NjcmVlbkNvbG9yID8gJm9faW5fb3B0X3NjcmVlbkNv
bG9yLnZhbHVlKCkgOiBuaWwpIGFsdGVybmF0ZUNvbG9yczooISFpbl9vcHRfYWx0ZXJuYXRlQ29s
b3JzID8gJm9faW5fb3B0X2FsdGVybmF0ZUNvbG9ycyA6IG5pbCkgcHJpbnRDb2xvcjooISFpbl9v
cHRfcHJpbnRDb2xvciA/ICZvX2luX29wdF9wcmludENvbG9yLnZhbHVlKCkgOiBuaWwpXTsKQEAg
LTkxNSwxMyArOTE0LDEzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHByCiAgICAgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQgPSBhZG9wdE5TKFtbUldJUHJvdG9jb2xKU09OT2Jq
ZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6V1RGTW92ZShpbl9wYXlsb2FkKV0pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgaW50IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7CiAgICAg
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvciA9IGFkb3B0TlMoW1tUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6V1RGTW92ZShp
bl9zcWxFcnJvcildKS5hdXRvcmVsZWFzZSgpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycz4gb19pbl9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gb19pbl9z
Y3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKICAgICBpZiAoIW9faW5fc2NyZWVuQ29sb3IpIHsK
ICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgIlBhcmFtZXRlciAnc2NyZWVuQ29sb3InIG9mIG1l
dGhvZCAnRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzJyBjYW5ub3QgYmUgcHJv
Y2Vzc2VkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzID0gdG9PYmpDU3RyaW5nQXJyYXkoV1RGTW92ZShp
bl9hbHRlcm5hdGVDb2xvcnMpKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZShh
bm9ueW1vdXMpPiBvX2luX3ByaW50Q29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sRGF0YWJhc2UoYW5vbnltb3VzKT4oaW5fcHJpbnRDb2xvcik7CisgICAgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xEYXRhYmFzZShhbm9ueW1vdXMpPiBvX2luX3ByaW50Q29sb3IgPSBmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2UoYW5vbnltb3VzKT4oaW5fcHJpbnRD
b2xvcik7CiAgICAgaWYgKCFvX2luX3ByaW50Q29sb3IpIHsKICAgICAgICAgYmFja2VuZERpc3Bh
dGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBh
cmFtcywgIlBhcmFtZXRlciAncHJpbnRDb2xvcicgb2YgbWV0aG9kICdEYXRhYmFzZS5leGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMnIGNhbm5vdCBiZSBwcm9jZXNzZWQiX3MpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMjY1LDcgKzEyNjQsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
YmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgdmFsdWUpCiB7CkBA
IC0xMjgwLDcgKzEyNzksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxp
bmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJyZWQiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOwpAQCAtMTMwNiw3ICsxMzA1LDcg
QEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1AKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlv
bmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAtMTMz
Niw3ICsxMzM1LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1AKIH0KIAogdGVtcGxhdGU8Pgot
aW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JD
eWFuOwpAQCAtMTM2NCw3ICsxMzYzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHIKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1By
aW50Q29sb3JDeWFuOwpAQCAtMTM5NCw3ICsxMzkzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
UHIKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIp
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAtMTQ2OSw3ICsxNDY4LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUHJpbWFyeUNvbG9yczooTlNOdW1iZXIgKiop
b3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPigoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7CisgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9F
TlVNX1ZBTFVFKHJlc3VsdCwgQCJQcmltYXJ5Q29sb3JzIik7CiAgICAgKm91dFZhbHVlID0gQChy
ZXN1bHQudmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
aW5kZXggMWZlNTliMzQwZjAwOTI1NjVmMWRmYmM0ZTAxZjZlOTJiZTk1NGM2YS4uOGNjNjQyOGU3
NGZjM2U5YTVkOTlmNzM2NmRmNzEyYTgxM2EzOTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdApAQCAtMTA3NSw3ICsxMDc1LDcgQEAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlw
ZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2RvbWFpbi1kZWJ1Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLWRlYnVnZ2FibGVU
eXBlcy5qc29uLXJlc3VsdAppbmRleCBiOWRlY2EyYmNlN2ExYmNmMDMzMGQ4YjkxOGFiNWM2Y2Iz
MTA5OGUxLi5kNGVlMzk5ZTgxNTI4MTM5NjExZmEwYzUxM2M0OWQyNzFhOTI4NzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWluLWRlYnVnZ2FibGVUeXBlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLWRlYnVnZ2Fi
bGVUeXBlcy5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkxMiw3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1tYXRjaGluZy1k
b21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGUtbWF0Y2hp
bmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0CmluZGV4IDQ3ZWQyMzlmZDRmYzgz
MjFhZjdkNjAyMDQ0MjU3ZDgzYjg4Y2JjZWUuLjdiMDRmODk0Yjk2MTdmMmUwZGFmYmIzOGZmNzk0
MzAxY2MxNWFjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4t
ZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBlLW1hdGNoaW5n
LWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkxMiw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRp
b25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0
VHlwZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGVzLmpzb24tcmVzdWx0CmluZGV4IDQ3
ZTUyNzkxNTEyNmM0ZjU2OWQ5Mjk1N2QxOGJjODBiNzFjNmNiYmIuLmFhMmQ2MWE4NzgyNGMwNWVi
ZWY5NTFlZjExYjYyNTQzNDg1MTFmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBlcy5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkx
Miw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFs
PE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
c3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21h
aW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12
YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggMjk2M2U5OTEzNTkwOWM1NTkw
YzYxYzA3Y2I2ZDdkMThhY2JjOGYwZS4uM2Y5ZTAwNGRkNzM5MzBlZjQ1OGFkMGY4N2RkZjQxZTRh
ZTFkYzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1
bHQKQEAgLTEyOTEsNyArMTI5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IGYyNjIzNzE4N2U2N2MzOGFmNDEyNzI5NmU1
MDUxNDY5NzNmN2U4Y2IuLjQ5MjYzYmFjOTQzODAxZmZkZDk2YjhmMzc1YTU1ZDhkZTZlNzVhMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI7CiAKIGNsYXNzIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3Rk
Ojp0dXBsZTxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSAvKiBlbnVtUmVxdWlyZWQgKi8sIE9w
dGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiAvKiBvcHRfZW51bU9wdGlvbmFsICov
LCBTdHJpbmcgLyogcmV0dXJuUmVxdWlyZWQgKi8sIFN0cmluZyAvKiBvcHRfcmV0dXJuT3B0aW9u
YWwgKi8+PiBjb21tYW5kKFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtIGVudW1SZXF1aXJlZCwg
T3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwg
Y29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1l
dGVyT3B0aW9uYWwpID0gMDsKKyAgICB2aXJ0dWFsIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0
ZDo6dHVwbGU8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0gLyogZW51bVJlcXVpcmVkICovLCBz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiAvKiBvcHRfZW51bU9wdGlv
bmFsICovLCBTdHJpbmcgLyogcmV0dXJuUmVxdWlyZWQgKi8sIFN0cmluZyAvKiBvcHRfcmV0dXJu
T3B0aW9uYWwgKi8+PiBjb21tYW5kKFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtIGVudW1SZXF1
aXJlZCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4mJiBvcHRfZW51
bU9wdGlvbmFsLCBjb25zdCBTdHJpbmcmIHBhcmFtZXRlclJlcXVpcmVkLCBjb25zdCBTdHJpbmcm
IG9wdF9wYXJhbWV0ZXJPcHRpb25hbCkgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CkBAIC0zNTcsNyArMzU3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgU2hhcmVkT3B0aW9uYWwgPSA1LAogICAgICAgICAg
ICAgR3JlZW4gPSA2LAogICAgICAgICB9OyAvLyBlbnVtIGNsYXNzIFBhcmFtZXRlck9wdGlvbmFs
Ci0gICAgdm9pZCBldmVudChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVxdWlyZWQs
IE9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiYmIG9wdF9lbnVtT3B0aW9uYWws
IGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyUmVxdWlyZWQsIGNvbnN0IFN0cmluZyYgb3B0X3BhcmFt
ZXRlck9wdGlvbmFsKTsKKyAgICB2b2lkIGV2ZW50KFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVt
IGVudW1SZXF1aXJlZCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4m
JiBvcHRfZW51bU9wdGlvbmFsLCBjb25zdCBTdHJpbmcmIHBhcmFtZXRlclJlcXVpcmVkLCBjb25z
dCBTdHJpbmcmIG9wdF9wYXJhbWV0ZXJPcHRpb25hbCk7CiBwcml2YXRlOgogICAgIEZyb250ZW5k
Um91dGVyJiBtX2Zyb250ZW5kUm91dGVyOwogfTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBwcml2YXRl
OgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBFdmVudERvbWFpbkZyb250ZW5kRGlz
cGF0Y2hlcjo6ZXZlbnQoUHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0gZW51bVJlcXVpcmVkLCBP
cHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4mJiBvcHRfZW51bU9wdGlvbmFsLCBj
b25zdCBTdHJpbmcmIHBhcmFtZXRlclJlcXVpcmVkLCBjb25zdCBTdHJpbmcmIG9wdF9wYXJhbWV0
ZXJPcHRpb25hbCkKK3ZvaWQgRXZlbnREb21haW5Gcm9udGVuZERpc3BhdGNoZXI6OmV2ZW50KFBy
b3RvY29sOjpUeXBlRG9tYWluOjpFbnVtIGVudW1SZXF1aXJlZCwgc3RkOjpvcHRpb25hbDxQcm90
b2NvbDo6VHlwZURvbWFpbjo6RW51bT4mJiBvcHRfZW51bU9wdGlvbmFsLCBjb25zdCBTdHJpbmcm
IHBhcmFtZXRlclJlcXVpcmVkLCBjb25zdCBTdHJpbmcmIG9wdF9wYXJhbWV0ZXJPcHRpb25hbCkK
IHsKICAgICBhdXRvIHByb3RvY29sX2pzb25NZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBwcm90b2NvbF9qc29uTWVzc2FnZS0+c2V0U3RyaW5nKCJtZXRob2QiX3MsICJFdmVu
dERvbWFpbi5ldmVudCJfcyk7CkBAIC01MDIsMTEgKzUwMiwxMSBAQCBlbnVtIGNsYXNzIEVudW0g
ewogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xF
bnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUg
J1R5cGVEb21haW4nIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVE
b21haW46OkVudW0+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VHlwZURvbWFp
bjo6RW51bT4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9t
YWluOjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlR5cGVEb21haW46
OkVudW0+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBA
IC01ODYsOCArNTg2LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7
CiAKIC8vIEVudW1zIGluIHRoZSAnVHlwZURvbWFpbicgRG9tYWluCiAKLXRlbXBsYXRlPD4KLU9w
dGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4oY29u
c3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNv
bnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OlR5cGVEb21haW46
OkVudW06OlNoYXJlZCwKQEAgLTcyNSwyMCArNzI0LDIwIEBAIHZvaWQgT2JqQ0luc3BlY3RvckNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZChsb25nIHByb3RvY29sX3JlcXVl
c3RJCiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShwcm90b2NvbF9y
ZXF1ZXN0SWQsIFdURk1vdmUocHJvdG9jb2xfanNvbk1lc3NhZ2UpLCBmYWxzZSk7CiAgICAgfTsK
IAotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtPiBvX2luX2VudW1SZXF1
aXJlZCA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4oaW5f
ZW51bVJlcXVpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVEb21haW5F
bnVtPiBvX2luX2VudW1SZXF1aXJlZCA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xU
eXBlRG9tYWluRW51bT4oaW5fZW51bVJlcXVpcmVkKTsKICAgICBpZiAoIW9faW5fZW51bVJlcXVp
cmVkKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3Io
QmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsICJQYXJhbWV0ZXIgJ2VudW1SZXF1aXJl
ZCcgb2YgbWV0aG9kICdDb21tYW5kRG9tYWluLmNvbW1hbmQnIGNhbm5vdCBiZSBwcm9jZXNzZWQi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFR5
cGVEb21haW5FbnVtPiBvX2luX29wdF9lbnVtT3B0aW9uYWw7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9vcHRfZW51bU9wdGlvbmFsOwogICAgIGlm
ICghIWluX29wdF9lbnVtT3B0aW9uYWwpCiAgICAgICAgIG9faW5fb3B0X2VudW1PcHRpb25hbCA9
IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4oaW5fb3B0X2Vu
dW1PcHRpb25hbCk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbihhbm9u
eW1vdXMpPiBvX2luX3BhcmFtZXRlclJlcXVpcmVkID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbENvbW1hbmREb21haW4oYW5vbnltb3VzKT4oaW5fcGFyYW1ldGVyUmVxdWlyZWQpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbihhbm9ueW1vdXMpPiBv
X2luX3BhcmFtZXRlclJlcXVpcmVkID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbENv
bW1hbmREb21haW4oYW5vbnltb3VzKT4oaW5fcGFyYW1ldGVyUmVxdWlyZWQpOwogICAgIGlmICgh
b19pbl9wYXJhbWV0ZXJSZXF1aXJlZCkgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5y
ZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCAiUGFy
YW1ldGVyICdwYXJhbWV0ZXJSZXF1aXJlZCcgb2YgbWV0aG9kICdDb21tYW5kRG9tYWluLmNvbW1h
bmQnIGNhbm5vdCBiZSBwcm9jZXNzZWQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IE9wdGlvbmFsPFRlc3RQcm90b2NvbENvbW1hbmREb21haW4oYW5vbnltb3VzKT4gb19pbl9vcHRf
cGFyYW1ldGVyT3B0aW9uYWw7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xDb21tYW5k
RG9tYWluKGFub255bW91cyk+IG9faW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsOwogICAgIGlmICgh
IWluX29wdF9wYXJhbWV0ZXJPcHRpb25hbCkKICAgICAgICAgb19pbl9vcHRfcGFyYW1ldGVyT3B0
aW9uYWwgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbihhbm9u
eW1vdXMpPihpbl9vcHRfcGFyYW1ldGVyT3B0aW9uYWwpOwogICAgIFttX2RlbGVnYXRlIGNvbW1h
bmRXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpzdWNjZXNz
Q2FsbGJhY2sgZW51bVJlcXVpcmVkOm9faW5fZW51bVJlcXVpcmVkLnZhbHVlKCkgZW51bU9wdGlv
bmFsOighIWluX29wdF9lbnVtT3B0aW9uYWwgPyAmb19pbl9vcHRfZW51bU9wdGlvbmFsLnZhbHVl
KCkgOiBuaWwpIHBhcmFtZXRlclJlcXVpcmVkOm9faW5fcGFyYW1ldGVyUmVxdWlyZWQudmFsdWUo
KSBwYXJhbWV0ZXJPcHRpb25hbDooISFpbl9vcHRfcGFyYW1ldGVyT3B0aW9uYWwgPyAmb19pbl9v
cHRfcGFyYW1ldGVyT3B0aW9uYWwudmFsdWUoKSA6IG5pbCldOwpAQCAtMTA4OCw3ICsxMDg3LDcg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6
Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVHlw
ZURvbWFpbkVudW0gdmFsdWUpCiB7CkBAIC0xMTAzLDcgKzExMDIsNyBAQCBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0gdmFsdWUpCiB9CiAK
IHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJzaGFyZWQiKQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1TaGFyZWQ7CkBAIC0xMTY3LDcgKzExNjYs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VFbnVtOihOU051
bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgT3B0
aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtPigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpcGF5bG9hZCk7CisgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90
b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVz
dWx0LCBAIkVudW0iKTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9ldmVudC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9ldmVudC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlw
ZS5qc29uLXJlc3VsdAppbmRleCA5MjJmMjZlNDY3M2Q5ODc5ZjA5MjhhNTIxMTJmZTMyMGM1NjM2
ZThmLi4xZGFjNmZhM2JjMTQyMTI0MTQyNmQxMTAyOWI2OGRlMGRkZDUxNzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZXZlbnQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2V2ZW50LXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpz
b24tcmVzdWx0CkBAIC05MTIsNyArOTEyLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAo
ImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
T2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCAz
NTQyZmVlZmQxYjlkMzE0ZGVlODA3NGFlMzY4NDc0MTFhMzJiMDE1Li44MzU3YTRhNTk3ZjcxZWMx
NDAzODM1N2NlN2Y2M2VjYWY0MzdlN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVy
cy5qc29uLXJlc3VsdApAQCAtMjMzLDcgKzIzMyw3IEBAIGNsYXNzIERhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIp
IDogbV9mcm9udGVuZFJvdXRlcihmcm9udGVuZFJvdXRlcikgeyB9Ci0gICAgdm9pZCBkaWRFeGVj
dXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgb3B0
X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91YmxlPiYm
IG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRy
PEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQ
dHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcik7CisgICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9u
YWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgb3B0X2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0
X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNP
Tjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25z
dCBTdHJpbmcmIG9wdF9wcmludENvbG9yKTsKICAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHZh
bHVlcywgUmVmPEpTT046OlZhbHVlPiYmIHBheWxvYWQsIFJlZjxQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWY8UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcm
IHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJv
dXRlcjsKQEAgLTI3OSw3ICsyNzksNyBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotdm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFs
UGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRfdGltZXN0
YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1
ZT4mJiBvcHRfcGF5bG9hZCwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgb3B0
X3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyYgb3B0X3ByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRF
eGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYg
b3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRpb25hbDxk
b3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVz
LCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0
YWJhc2U6OkVycm9yPiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKQogewogICAgIGF1dG8gcHJvdG9j
b2xfanNvbk1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHByb3RvY29sX2pz
b25NZXNzYWdlLT5zZXRTdHJpbmcoIm1ldGhvZCJfcywgIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRp
b25hbFBhcmFtZXRlcnMiX3MpOwpAQCAtOTcyLDcgKzk3Miw3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDFkNDVj
NmYyNzg2ODllYTBhMjAyNzkxZGZkNzE0NGVmYmZkYjFiNWIuLjgzZGVlMDUwODkwMzI0MWMxMGFm
ZDEyMmUzNzFiZTVmN2M0NTk5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVh
dHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtOTk3LDcgKzk5Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUt
aWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRleCBkNTU1YTczNDQwZmYwOWNiZGJk
MzI2ZDA2NzVmZjc5M2U3OTc0NjBjLi44YzE2MWE1YTliNmNmMGI3YmQ1YmJjNDlhYzNlN2IzOGQw
YmZmNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC03MzAs
NyArNzMwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51
bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCA5
YzNiMDJjMTMxZDU5YzlmZTA2YzVlNTNlYWRiNmRkNDA5OGFiZWFhLi41NWY0YjI5ZmZkMTAyYzJk
NDgzZjE0OWZlMWIzY2RiZjgwOGNkNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlw
ZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMu
anNvbi1yZXN1bHQKQEAgLTQxNCwxMSArNDE0LDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0
SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25h
bDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4K
IHRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+
KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0
aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpLZXlQ
YXRoOjpUeXBlPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMK
IApAQCAtNDgwLDggKzQ4MCw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29k
ZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1J1bnRpbWUnIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1P
cHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcm
IHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50
aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1
bnRpbWU6OktleVBhdGg6OlR5cGU+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6
ZV90KVByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlOjpOdWxsLApAQCAtODY4LDcgKzg2
Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFs
PE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
c3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bFJ1bnRpbWVLZXlQYXRoVHlwZSB2YWx1ZSkKIHsKQEAgLTg4Myw3ICs4ODIsNyBAQCBpbmxpbmUg
U3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIHZh
bHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGlt
ZUtleVBhdGhUeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJu
dWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZU51bGw7
CkBAIC0xMDAyLDkgKzEwMDEsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJU
WShwYXlsb2FkW0AidHlwZSJdLCBAInR5cGUiKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xS
dW50aW1lS2V5UGF0aFR5cGU+IHR5cGUgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29s
UnVudGltZUtleVBhdGhUeXBlPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtAInR5cGUi
XSk7CisgICAgYXV0byB0eXBlID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRp
bWVLZXlQYXRoVHlwZT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJ0eXBlIl0pOwog
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUodHlwZSwgQCJ0eXBlIik7Ci0g
ICAgc2VsZi50eXBlID0gdHlwZS52YWx1ZSgpOworICAgIHNlbGYudHlwZSA9ICp0eXBlOwogCiAg
ICAgc2VsZi5zdHJpbmcgPSBwYXlsb2FkW0Aic3RyaW5nIl07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaG91bGQt
c3RyaXAtY29tbWVudHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVz
dWx0CmluZGV4IDNkMTI2ZjMzOTY2ZTM5NGRjNzQ4ODcwZmU5OWRmMzk0OTYwNTY4ZDYuLjU5Mjg3
YWFiMzQyMjJlNTVhNTBmZDJmYzcxM2ZlNmQ5ODkyMDFlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaG91bGQtc3Ry
aXAtY29tbWVudHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Nob3VsZC1zdHJpcC1jb21tZW50cy5qc29uLXJl
c3VsdApAQCAtNzIwLDcgKzcyMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggMjg4
MDRkMDZkNGMzYTU4MGU3Y2FkODA0MWNhYmU5OTFkODllNjg3Yy4uOTU4MmRlZjc3ZTI3NjJjZDVl
NDU0NGI0NmIxY2Q0YjJhYjliYzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNl
ZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2Vk
LXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC03MjUsNyArNzI1LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRleCA1MzRhYjY0YjU2OWI0NjE5MTQwNzQ4OWEyYjgw
N2E3MmY5NGRhM2VhLi5mZTE0MjhjMTI2MGY1MzExYTQ1Y2UxZmE0ZmMyMWMyNDM2NzdlYzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM2NCwxMSArMzY0LDExIEBA
IGVudW0gY2xhc3MgUmVhc29uIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
IAogLy8gRW51bXMgaW4gdGhlICdEZWJ1Z2dlcicgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25h
bDxQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90
b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RIZWxwZXJzCiAKQEAgLTQ0MCw4ICs0NDAsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50
VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdEZWJ1Z2dlcicgRG9tYWluCiAK
LXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdn
ZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9j
b2w6OkRlYnVnZ2VyOjpSZWFzb246OkRpZWQsCkBAIC04MjAsNyArODE5LDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25h
bDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsK
K3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9j
b2xEZWJ1Z2dlclJlYXNvbiB2YWx1ZSkKIHsKQEAgLTgzNSw3ICs4MzQsNyBAQCBpbmxpbmUgU3Ry
aW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24gdmFsdWUpCiB9
CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNv
bj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJEaWVkIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uRGllZDsKQEAgLTkxOCw3ICs5MTcsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VSZWFzb246KE5TTnVt
YmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+KChfX2JyaWRnZSBDRlN0
cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3Rv
Y29sU3RyaW5nPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPigoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpcGF5bG9hZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1
bHQsIEAiUmVhc29uIik7CiAgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggODQ1ZmY4ZDk1MTNlZWVlYjI4NTM4
NmEyY2YwOGQxMDY5ODQ1YzhkYy4uNzU2NDBmNWJlZTk0NGNkNDYzNWUxOTIxZTgyNWNlZDU1YTZh
MzljZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtMzYxLDEzICszNjEs
MTMgQEAgZW51bSBjbGFzcyBUd29MZWdnZWRBbmltYWxzIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVy
cyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90
b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Citz
dGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4KIHRlbXBs
YXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4oY29uc3QgU3Ry
aW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4oY29u
c3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6VHdv
TGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1l
OjpUd29MZWdnZWRBbmltYWxzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9j
b2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQ
cm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTQ0NSw4ICs0NDUsNyBAQCBTdHJpbmcgZ2V0
RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1l
JyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1B
bmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1B
bmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90
b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10g
PSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzOjpQaWdz
LApAQCAtNDYxLDggKzQ2MCw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50CiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6
UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpUd29MZWdn
ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQcm90b2Nv
bDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFsczo6RHVja3MsCkBAIC04NTAsNyArODQ4LDcgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFu
aW1hbHMpIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpD
RW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgdmFsdWUpCiB7CkBAIC04Njcs
NyArODY1LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1
bnRpbWVGYXJtQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFs
PFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1l
RmFybUFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZSA9PSAiUGlncyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50
aW1lRmFybUFuaW1hbHNQaWdzOwpAQCAtODk1LDcgKzg5Myw3IEBAIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29M
ZWdnZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUg
PT0gIkR1Y2tzIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRB
bmltYWxzRHVja3M7CkBAIC05NjIsNyArOTYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICsgKHZvaWQpX3BhcnNlRmFybUFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21Q
YXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShw
YXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50
aW1lRmFybUFuaW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxv
YWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9h
ZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiRmFy
bUFuaW1hbHMiKTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KQEAgLTk3
MCw3ICs5NjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VU
d29MZWdnZWRBbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5
bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3Ry
aW5nIGNsYXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFu
aW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2Nv
bFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7
CisgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxv
YWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlR3
b0xlZ2dlZEFuaW1hbHMiKTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNmJiOWY1MjI5ODQ1NzBh
OTVlYTFiM2Q2N2UwMjBmMzMwZGNiM2YzYy4uYmQ0MjAyMWI5NjMyODYyYzk3MjA5NWY5YTY4ZDE2
NTY3MmQxMGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTkz
NiwxOSArOTM2LDE5IEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBl
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFs
PFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRp
b25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4oY29uc3QgU3RyaW5nJik7Citz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPihjb25zdCBTdHJp
bmcmKTsKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQ
YXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
UHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxp
dHk+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVj
dGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmKTsKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29s
OjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rp
b25hbGl0eT4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFz
ZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4o
Y29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnVGVzdCcgRG9tYWluCiB0ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25h
bGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJC
dW5kbGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJv
dG9jb2w6OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25h
bGl0eT4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAg
LTEwMjMsOCArMTAyMyw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkg
ewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0
aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+KGNvbnN0IFN0cmluZyYgcHJv
dG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNl
OjpNb3VzZUJ1dHRvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFz
ZTo6TW91c2VCdXR0b24+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVBy
b3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b246Ok5vbmUsCkBAIC0xMDM5LDggKzEwMzgsNyBA
QCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0
ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9j
b2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNv
bnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJv
dG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFsUGFy
YW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmlu
ZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAg
ICAgIChzaXplX3QpUHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6
RGlyZWN0aW9uYWxpdHk6OkxUUiwKQEAgLTEwNTMsOCArMTA1MSw3IEBAIE9wdGlvbmFsPFByb3Rv
Y29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBw
YXJzZUVudW1WCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8PgotT3B0
aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQYXJhbWV0ZXJC
dW5kbGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVt
cGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxl
OjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRh
YmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJiBwcm90
b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10g
PSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OkRhdGFiYXNlOjpQYXJhbWV0ZXJCdW5kbGU6
OkRpcmVjdGlvbmFsaXR5OjpMVFIsCkBAIC0xMDY5LDggKzEwNjYsNyBAQCBPcHRpb25hbDxQcm90
b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51
bVZhbHVlRnJvbQogCiAvLyBFbnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgogCi10ZW1wbGF0ZTw+
Ci1PcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0
eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5k
bGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVj
dGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OlBhcmFt
ZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcp
CiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAg
ICAoc2l6ZV90KVByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5
OjpMVFIsCkBAIC0xNTM4LDcgKzE1MzQsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
YmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uIHZhbHVlKQogewpAQCAt
MTU1NSw3ICsxNTUxLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbERhdGFiYXNlTW91c2VCdXR0b24gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBP
cHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2Nv
bERhdGFiYXNlTW91c2VCdXR0b24+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiTm9uZSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uTm9uZTsKQEAgLTE1NzksNyArMTU3NSw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFy
YW1ldGVyQnVuZGxlRGlyZWN0CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0
UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFs
aXR5PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gIkxUUiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlv
bmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHlMVFI7CkBAIC0xNTk5LDcgKzE1OTUsNyBA
QCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VQYXJh
bWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
IkxUUiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRs
ZURpcmVjdGlvbmFsaXR5TFRSOwpAQCAtMTYxOSw3ICsxNjE1LDcgQEAgaW5saW5lIFN0cmluZyB0
b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25h
bGl0eSB2YWwKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRl
c3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0UGFy
YW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiTFRSIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eUxUUjsKQEAgLTE3MDQs
NyArMTcwMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZU1v
dXNlQnV0dG9uOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAog
ewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNs
YXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRvbj4gcmVz
dWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VN
b3VzZUJ1dHRvbj4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VN
b3VzZUJ1dHRvbj4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIk1vdXNlQnV0dG9uIik7CiAgICAg
Km91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CkBAIC0xODU1LDkgKzE4NTEsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgc2VsZi5idXR0b25zID0gcGF5bG9hZFtA
ImJ1dHRvbnMiXTsKIAotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQ
YXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZGlyZWN0aW9uYWxpdHkgPSBmcm9tUHJvdG9j
b2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVj
dGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtAImRpcmVjdGlvbmFsaXR5
Il0pOwotICAgIGlmIChkaXJlY3Rpb25hbGl0eSkKLSAgICAgICAgc2VsZi5kaXJlY3Rpb25hbGl0
eSA9IGRpcmVjdGlvbmFsaXR5LnZhbHVlKCk7CisgICAgaWYgKGF1dG8gZGlyZWN0aW9uYWxpdHkg
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRl
ckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtAImRp
cmVjdGlvbmFsaXR5Il0pKQorICAgICAgICBzZWxmLmRpcmVjdGlvbmFsaXR5ID0gKmRpcmVjdGlv
bmFsaXR5OwogCiAgICAgc2VsZi5ub3RlcyA9IHBheWxvYWRbQCJub3RlcyJdOwogCkBAIC0xOTk3
LDkgKzE5OTIsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHNlbGYuYnV0dG9u
cyA9IHBheWxvYWRbQCJidXR0b25zIl07CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJ
UkVEX1BST1BFUlRZKHBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdLCBAImRpcmVjdGlvbmFsaXR5
Iik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eT4gZGlyZWN0aW9uYWxpdHkgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKKyAgICBhdXRvIGRpcmVjdGlvbmFs
aXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVu
ZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0
aW9uYWxpdHkiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShkaXJl
Y3Rpb25hbGl0eSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkg
PSBkaXJlY3Rpb25hbGl0eS52YWx1ZSgpOworICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSAqZGly
ZWN0aW9uYWxpdHk7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZ
KHBheWxvYWRbQCJub3RlcyJdLCBAIm5vdGVzIik7CiAgICAgc2VsZi5ub3RlcyA9IHBheWxvYWRb
QCJub3RlcyJdOwpAQCAtMjI4OSw5ICsyMjg0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlS
RURfUFJPUEVSVFkocGF5bG9hZFtAImRpcmVjdGlvbmFsaXR5Il0sIEAiZGlyZWN0aW9uYWxpdHki
KTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRl
c3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBh
eWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKKyAgICBhdXRvIGRpcmVjdGlvbmFsaXR5ID0gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25h
bGl0eT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsK
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKGRpcmVjdGlvbmFsaXR5LCBA
ImRpcmVjdGlvbmFsaXR5Iik7Ci0gICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9IGRpcmVjdGlvbmFs
aXR5LnZhbHVlKCk7CisgICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9ICpkaXJlY3Rpb25hbGl0eTsK
IAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImJ1
dHRvbnMiXSwgQCJidXR0b25zIik7CiAgICAgc2VsZi5idXR0b25zID0gcGF5bG9hZFtAImJ1dHRv
bnMiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggZTZjNTU0YWFl
NzI1Nzg3YzFhNzhkYjg2MWQxMWEyNzA3YTA3MmE2Ny4uOWZmOGY1ZjQ2NmU2ZmZlYWFhYTFhODAz
ZDAwZDlhMGViNWY4YzYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQK
QEAgLTU3OCwxMyArNTc4LDEzIEBAIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRU
eXBlKEpTT046OlZhbHVlKik7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90
b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
IC8vIEVudW1zIGluIHRoZSAnVGVzdCcgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90
b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJv
dG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmKTsKIHRl
bXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0
cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihjb25z
dCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNjYyLDggKzY2
Miw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVt
cyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6
VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6
OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3Rl
bXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4o
Y29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OlRlc3Q6OlVu
Y2FzdGVkQW5pbWFsczo6UGlncywKQEAgLTY3OCw4ICs2NzcsNyBAQCBPcHRpb25hbDxQcm90b2Nv
bDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9j
b2w6OlRlcwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPD4KLU9wdGlv
bmFsPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xT
dHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFu
aW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5p
bWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OlRl
c3Q6OkNhc3RlZEFuaW1hbHM6OkR1Y2tzLApAQCAtMTE5MCw3ICsxMTg4LDcgQEAgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9i
akNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBp
bmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5p
bWFscyB2YWx1ZSkKIHsKQEAgLTEyMDcsNyArMTIwNSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzIHZhbHVlKQogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFs
cz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M7CkBAIC0xMjM1
LDcgKzEyMzMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
VGVzdENhc3RlZEFuaW1hbHMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25h
bDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2Fz
dGVkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJEdWNrcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0
Q2FzdGVkQW5pbWFsc0R1Y2tzOwpAQCAtMTMyNSw3ICsxMzIzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlVW5jYXN0ZWRBbmltYWxzOihOU051bWJlciAqKilv
dXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVz
dFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJv
dG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJv
dG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFM
VUUocmVzdWx0LCBAIlVuY2FzdGVkQW5pbWFscyIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0
LnZhbHVlKCkpOwogfQpAQCAtMTMzMyw3ICsxMzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICsgKHZvaWQpX3BhcnNlQ2FzdGVkQW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUg
ZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9U
WVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2Nv
bFRlc3RDYXN0ZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBh
eWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXls
b2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJD
YXN0ZWRBbmltYWxzIik7CiAgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CkBA
IC0xNDA4LDkgKzE0MDYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHNlbGYu
bnVtYmVyID0gW3BheWxvYWRbQCJudW1iZXIiXSBpbnRlZ2VyVmFsdWVdOwogCiAgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiYW5pbWFscyJdLCBAImFu
aW1hbHMiKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gYW5p
bWFscyA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJhbmltYWxzIl0pOworICAgIGF1dG8gYW5p
bWFscyA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJhbmltYWxzIl0pOwogICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoYW5pbWFscywgQCJhbmltYWxzIik7Ci0gICAgc2Vs
Zi5hbmltYWxzID0gYW5pbWFscy52YWx1ZSgpOworICAgIHNlbGYuYW5pbWFscyA9ICphbmltYWxz
OwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Ai
aWQiXSwgQCJpZCIpOwogICAgIHNlbGYuaWRlbnRpZmllciA9IFtwYXlsb2FkW0AiaWQiXSBpbnRl
Z2VyVmFsdWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBkZTk2NGU0NTQ3
MGRlN2JiOGZiYmYwYjY4MWQ5OTNlZDQzYWE0MWIyLi5mNzc3NmY1YjBlZmQzYWRhZWJjYjJlN2Y1
MGI3ODZkMjRkMGViNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtODgw
LDcgKzg4MCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9w
dGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Zl
cnNpb24uanNvbi1yZXN1bHQKaW5kZXggNWFlMjBlZTQ5MmZhNjIwNGMwMDUyYWNkZmMyYzcxMDRl
OGUyZjdhMS4uMmE2MDk1OWExMmU1ZThlODZiMTJhZWY2MTI0MDEzMzdmMDQwZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3ZlcnNpb24uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3ZlcnNpb24uanNvbi1yZXN1bHQKQEAgLTczMCw3
ICs3MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRp
b25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGUwM2NhOTIwNDVkMjY1ZjQ3
NTI5MzZlNGVkODZiODRjY2RjMDIzNzkuLjgzZmYyOGYyMzExOTcwMjUzZDBiMjBiZmQ2ZDc3YzVk
ZjkyNTlmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb3B5
Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihTdGFja1Zpc2l0b3ImIHZp
c2l0b3IpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0gICAgICAgIE9wdGlv
bmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSB2aXNpdG9yLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGN1cnJlbnRDYWxsZWVTYXZlcyA9IHZpc2l0b3ItPmNhbGxl
ZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKTsKIAogICAgICAgICBpZiAoIWN1cnJlbnRDYWxs
ZWVTYXZlcykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggMmQ0OTI4NmMxN2I3ZDdkMzBh
YWM0YzMxZWMxZDE1NDI3YWJlYTc4Yi4uNTdhMWJkYjZkYmQ1YjE2MDY5MWM2NTY1MGZjMGQ0NWRi
ZTgwOWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpD
b2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoQVNTRU1CTEVSKQotT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IFN0YWNrVmlz
aXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKQorc3RkOjpvcHRp
b25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2
ZVJlZ2lzdGVyc0ZvclVud2luZGluZygpCiB7CiAgICAgaWYgKCFOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQwNSw3ICs0
MDUsNyBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVu
c2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQogICAgIGxpbmUgPSBkaXZvdExpbmUgKyBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKICAgICBjb2x1bW4gPSBk
aXZvdENvbHVtbiArIChkaXZvdExpbmUgPyAxIDogY29kZUJsb2NrLT5maXJzdExpbmVDb2x1bW5P
ZmZzZXQoKSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5vdmVycmlkZUxpbmVOdW1iZXIoY29kZUJsb2Nr
LT52bSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm92ZXJyaWRlTGluZU51bWJlcihjb2RlQmxv
Y2stPnZtKCkpKQogICAgICAgICBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyLnZhbHVlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAppbmRleCBlMGQ5OTFjZWJmMWU3YWMxMGVkNzE5YzE1MzdkODA3MDEyNzJkN2U3Li4wYmI5YWY1
ODE1YTUxMDYzYTAzYjMyMDAwNDEzNjE4ODRjZTZkZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRlTGluZUFuZENvbHVt
bih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikgY29uc3Q7CiAKICNpZiBFTkFCTEUo
QVNTRU1CTEVSKQotICAgICAgICBPcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gY2FsbGVl
U2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZygpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PiBjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKCk7CiAjZW5k
aWYKIAogICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50cyhWTSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZDI1NjIzMTcw
YWRhMWQwMjlmZGQ4ZTcwMGE1ZWVjZTkyMTU2ODVmMC4uNjA2ZDBkMWFmMjE0MzgyNWNhMDI2ZmIw
MzBhMjQ5Yzc2NWMzYjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIGRl
c3QgPSBiYXNlICsgaW5kZXggPDwgc2hpZnQuCi0gICAgdm9pZCBzaGlmdEFuZEFkZChSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIHVpbnQ4X3Qgc2hpZnQsIFJlZ2lzdGVySUQgZGVz
dCwgT3B0aW9uYWw8UmVnaXN0ZXJJRD4gb3B0aW9uYWxTY3JhdGNoID0geyB9KQorICAgIHZvaWQg
c2hpZnRBbmRBZGQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCB1aW50OF90IHNo
aWZ0LCBSZWdpc3RlcklEIGRlc3QsIHN0ZDo6b3B0aW9uYWw8UmVnaXN0ZXJJRD4gb3B0aW9uYWxT
Y3JhdGNoID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJUKHNoaWZ0IDwgMzIpOwogICAgICAg
ICBpZiAoc2hpZnQgPD0gMykgewpAQCAtNjM3LDcgKzYzNyw3IEBAIHB1YmxpYzoKIAogI2lmIENQ
VShBUk02NCkKICAgICAvLyBkZXN0ID0gYmFzZSArIGluZGV4IDw8IHNoaWZ0LgotICAgIHZvaWQg
c2hpZnRBbmRBZGQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCB1aW50OF90IHNo
aWZ0LCBSZWdpc3RlcklEIGRlc3QsIE9wdGlvbmFsPFJlZ2lzdGVySUQ+ID0geyB9KQorICAgIHZv
aWQgc2hpZnRBbmRBZGQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCB1aW50OF90
IHNoaWZ0LCBSZWdpc3RlcklEIGRlc3QsIHN0ZDo6b3B0aW9uYWw8UmVnaXN0ZXJJRD4gPSB7IH0p
CiAgICAgewogICAgICAgICBBU1NFUlQoc2hpZnQgPCAzMik7CiAgICAgICAgIEFTU0VSVChiYXNl
ICE9IGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCmluZGV4IDBiZmFjYzc2MzBiYmRjNmM4NTQxYmE2NTAyOTc4YWQwZjRmOGM0
MDYuLmY5YTc1NTQyNmJjZDlmNzY4MGEzYjI3M2UzZTQyMDYxYjQ1MjE0MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtNzg0
LDcgKzc4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBpc2xhbmRCaXQodWludHB0cl90IGlzbGFuZCkKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlzbGFuZEJpdCh1aW50cHRyX3QgaXNsYW5kKQog
ICAgICAgICB7CiAgICAgICAgICAgICB1aW50cHRyX3QgZW5kID0gdGhpcy0+ZW5kKCk7CiAgICAg
ICAgICAgICBpZiAoaXNsYW5kQmVnaW4oKSA8PSBpc2xhbmQgJiYgaXNsYW5kIDwgZW5kKQpAQCAt
ODA0LDcgKzgwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChCYXNl
Ojppc0luQWxsb2NhdGVkTWVtb3J5KGxvY2tlciwgYWRkcmVzcykpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8c2l6ZV90PiBiaXQgPSBpc2xh
bmRCaXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcykpKSB7CisgICAgICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJpdCA9IGlzbGFuZEJpdChiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihhZGRyZXNzKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYml0LnZhbHVlKCkgPCBp
c2xhbmRCaXRzLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhaXNsYW5kQml0
c1tiaXQudmFsdWUoKV07CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYjczOTU4YmMyNWFlYTkxNDQyNzRmZTQxYWVhZDI1OGY1NTZjM2FlOS4uZWUxYTRlMzdm
ZmMyNzdkY2Q5NmQ0YjAyMmI3NzI3YzViYmY3NDIzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bj
b2RlSUQoKTsKIAotICAgICAgICBPcHRpb25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFya2VyPiBz
aXplTWFya2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJr
ZXI+IHNpemVNYXJrZXI7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2J5dGVjb2RlSW5kZXggPj0g
c3RhcnRCeXRlY29kZUluZGV4ICYmIE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0
aWNzKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcgaWQgPSBtYWtlU3RyaW5nKCJCYXNlbGluZV9m
YXN0XyIsIG9wY29kZU5hbWVzW29wY29kZUlEXSk7CiAgICAgICAgICAgICBzaXplTWFya2VyID0g
bV92bS0+aml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgKnRoaXMpOwpAQCAtNTQzLDcg
KzU0Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKICAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKLSAg
ICAgICAgT3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2Vy
OwogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJhc2VsaW5lSklUU2l6ZVN0YXRp
c3RpY3MoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5l
X3Nsb3dfIiwgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICAgICAgICAgIHNpemVNYXJrZXIg
PSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7CkBAIC03MzMs
NyArNzMzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklU
Q29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIAogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7
CiAKLSAgICBPcHRpb25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsK
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJhc2VsaW5lSklUU2l6ZVN0YXRpc3RpY3Mo
KSkpIHsKICAgICAgICAgU3RyaW5nIGlkID0gbWFrZVN0cmluZygiQmFzZWxpbmVfcHJvbG9ndWUi
KTsKICAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3Rh
cnQoaWQsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggODU1N2Qw
ZWU1ZDhhZDhiMTQ0MmQ4MzBlNGQ2NzcxZmYwY2E4YjM3MS4uNGNlNzdmNWIwY2U4OTk1MGFmYzFl
NTJmNDM1NjUxNDU2NTFjN2I5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAg
LTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZpcnR1YWwg
UmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2Fs
bFNpdGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCk7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxD
b2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BBUkFNKHBj
KTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BBUkFNKHBjKTsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogI2VuZGlmCiAKICAgICBJbnRyaW5zaWMgaW50cmluc2lj
KCkgeyByZXR1cm4gbV9pbnRyaW5zaWM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGl2R2VuZXJhdG9yLmNwcAppbmRleCBiZTZkNGQ0MGM0MTE3ODgzMTA2MTA0OGI3YjUxYjk0
ZmFkNTY0YmE5Li4xMjlmMDY1YWMzNTRjOGNkOWZjMTQyZTJiYWQ2N2MxNTI3ZmI0NmE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgSklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVs
cGVycyYgaml0KQogICAgIGxvYWRPcGVyYW5kKGppdCwgbV9sZWZ0T3BlcmFuZCwgbV9sZWZ0LCBt
X2xlZnRGUFIpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBPcHRpb25hbDxkb3VibGU+IHNh
ZmVSZWNpcHJvY2FsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbDsK
ICAgICBpZiAobV9yaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7CiAgICAgICAgIGRvdWJsZSBjb25z
dGFudCA9IG1fcmlnaHRPcGVyYW5kLmFzQ29uc3ROdW1iZXIoKTsKICAgICAgICAgc2FmZVJlY2lw
cm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoY29uc3RhbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjFhZjM2NTMwOWQyNzkz
MzcxZGU2ZWI0MDBiNDQ2OGFhODM3MGIyNS4uMDYwM2Y5M2E5YWZmMjFkOWRkNGIxYmI0OTc5OWM5
YzJhM2FjZmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC04MjAsNyArODIwLDcgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3UKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3Jp
cHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewpAQCAtODYzLDcgKzg2Myw3
IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gbWF5YmVJbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQz
MkluZGV4KCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF5YmVJbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICB1aW50MzJfdCBpbmRleCA9ICptYXliZUluZGV4
OwogCkBAIC04ODksNyArODg5LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEoKICAgICBhdXRv
IHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CisgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CkBAIC0xOTc4LDcgKzE5
NzgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQ
YXRoUmV0dXJuVHlwZSwgKFZNKiB2bVBvaW50ZXIsCiAgICAgICAgIGlmIChieXRlY29kZUluZGV4
KQogICAgICAgICAgICAgbnVtVmFyc1dpdGhWYWx1ZXMgPSBjb2RlQmxvY2stPm51bUNhbGxlZUxv
Y2FscygpOwogCi0gICAgICAgIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiBtdXN0SGFuZGxl
VmFsdWVzKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBudW1WYXJzV2l0aFZhbHVlcywgMCk7
CisgICAgICAgIE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+IG11c3RIYW5kbGVWYWx1
ZXMoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIG51bVZhcnNXaXRoVmFsdWVzLCAwKTsKICAg
ICAgICAgaW50IGxvY2Fsc1VzZWRGb3JDYWxsZWVTYXZlcyA9IHN0YXRpY19jYXN0PGludD4oQ29k
ZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG11c3RIYW5kbGVWYWx1ZXMu
b3BlcmFuZEZvckluZGV4KGkpOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChPcHRpb25hbDxpbnQzMl90PiBp
bmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc0ludDMyKCkpIHsKICAgICAgICAg
aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7
CiAgICAgICAgICAgICBpZiAoaSA+PSAwICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKQpAQCAtMjM0OSw3ICsyMzQ5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgSlNDZWxsKiBiYXNl
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogCi0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQzMkluZGV4KCkpCisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgo
KSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRoSW5k
ZXgoZ2xvYmFsT2JqZWN0LCBiYXNlLCAqaW5kZXgpKTsKIAogICAgICAgICBpZiAocHJvcGVydHku
aXNTdHJpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1Rv
Q29kZU9yaWdpbk1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3Jp
Z2luTWFwLmNwcAppbmRleCAwYjM3YTQxOTU5N2QzMzU2MzI2ZmE2NDVmOWVjMjc2NDI1N2U1MjVk
Li5hZjVmYWZhYTU4ZjY3M2Q1M2E3NTc3ZDFmMDk3YmYwOTAwY2VmMjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcApAQCAtMjQ3LDcgKzI0
Nyw3IEBAIGRvdWJsZSBQQ1RvQ29kZU9yaWdpbk1hcDo6bWVtb3J5U2l6ZSgpCiAgICAgcmV0dXJu
IHNpemU7CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5k
UEModm9pZCogcGMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3Jp
Z2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CiB7CiAgICAgdWludHB0cl90IHBjQXNJbnQg
PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYyk7CiAgICAgaWYgKCEobV9wY1JhbmdlU3RhcnQg
PD0gcGNBc0ludCAmJiBwY0FzSW50IDw9IG1fcGNSYW5nZUVuZCkpCkBAIC0yOTUsNyArMjk1LDcg
QEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gUENUb0NvZGVPcmlnaW5NYXA6OmZpbmRQQyh2b2lkKiBw
YykgY29uc3QKICAgICAgICAgICAgIC8vIFdlIHN1YnRyYWN0IDEgYmVjYXVzZSB3ZSBnZW5lcmF0
ZSBlbmQgcG9pbnRzIGluY2x1c2l2ZWx5IGluIHRoaXMgdGFibGUsIGV2ZW4gdGhvdWdoIHdlIGFy
ZSBpbnRlcmVzdGVkIGluIHJhbmdlcyBvZiB0aGUgZm9ybTogW3ByZXZpb3VzUEMsIGN1cnJlbnRQ
QykKICAgICAgICAgICAgIHVpbnRwdHJfdCBlbmRPZlJhbmdlID0gY3VycmVudFBDIC0gMTsKICAg
ICAgICAgICAgIGlmIChzdGFydE9mUmFuZ2UgPD0gcGNBc0ludCAmJiBwY0FzSW50IDw9IGVuZE9m
UmFuZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmlnaW4+KHByZXZp
b3VzT3JpZ2luKTsgLy8gV2UgcmV0dXJuIHByZXZpb3VzT3JpZ2luIGhlcmUgYmVjYXVzZSBDb2Rl
T3JpZ2luJ3MgYXJlIG1hcHBlZCB0byB0aGUgc3RhcnRWYWx1ZSBvZiB0aGUgcmFuZ2UuCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4ocHJldmlvdXNPcmln
aW4pOyAvLyBXZSByZXR1cm4gcHJldmlvdXNPcmlnaW4gaGVyZSBiZWNhdXNlIENvZGVPcmlnaW4n
cyBhcmUgbWFwcGVkIHRvIHRoZSBzdGFydFZhbHVlIG9mIHRoZSByYW5nZS4KICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9y
aWdpbk1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5o
CmluZGV4IGIwZDU2MWZjNTZkNWYwODEwYzhjMGVjZmFmZjcyMmQyZDNiMzNmMjUuLjMzNWNkODk3
YTQyN2Q1ODkwNjg3NzUwODMwMDJhZTJjNDk5ODU1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIFBDVG9Db2RlT3JpZ2luTWFwKFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYmLCBMaW5rQnVm
ZmVyJik7CiAgICAgflBDVG9Db2RlT3JpZ2luTWFwKCk7CiAKLSAgICBPcHRpb25hbDxDb2RlT3Jp
Z2luPiBmaW5kUEModm9pZCogcGMpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdp
bj4gZmluZFBDKHZvaWQqIHBjKSBjb25zdDsKIAogICAgIGRvdWJsZSBtZW1vcnlTaXplKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDM1OTNjY2U4ODYwODgwMTgz
NDZhODA4ZTVmODY0Nzg3MWE0NDFiMjkuLjkwNWY4ZDdmMmFmYmY1YjAwNjFlZjNkNzVmN2Y2NjZl
YmQxZGNhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMzY3LDcg
KzM2Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIGlmIChzbG90Lmlz
Q2FjaGVhYmxlR2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgZ2V0dGVyID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIHNsb3QuZ2V0dGVyU2V0dGVyKCktPmdldHRlcigpKTsKIAotICAg
ICAgICAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRy
aWJ1dGU7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmIHNsb3Qu
ZG9tQXR0cmlidXRlKCkpCiAgICAgICAgICAgICAgICAgZG9tQXR0cmlidXRlID0gc2xvdC5kb21B
dHRyaWJ1dGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggZTQ0MDU1NzQ2MmUwNDZhMmI1MDg3MGM1ZjNlOTU2ZjIyZDMzZGRjMy4u
ZmIwZGRmNjFmNDUzNDYwN2EzMjYwMzA2M2IyMDkyY2YzYjFjMzdjNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDIxLDcgKzEwMjEs
NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2Ny
aXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4
OwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7
CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1f
ZWNtYU1vZGUuaXNTdHJpY3QoKTsKICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKQEAgLTExOTAsNyArMTE5MCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgp
OwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNV
aW50MzJJbmRleCgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
c3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9k
ZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRo
cm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIGlm
IChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7
CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNjczMDM5NDI2M2YzMmYx
YjUzNTRjMjBkNTRkZTI0MzA0NzI5OWJiZi4uMTljODE1Zjg1YjM5NGE3MjA5YmJhNTYzN2NiZDY0
MGVkZjdlY2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTE1
MjgsNyArMTUyOCw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhl
cjxUPjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUhleCgpIC0+IE9w
dGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgorQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+Ojpw
YXJzZUhleCgpIC0+IHN0ZDo6b3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiB7CiAgICAgQVNT
RVJUKGlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpKTsKIApAQCAtMTU4Miw3ICsxNTgyLDcgQEAg
QUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUhleCgpIC0+IE9wdGlvbmFsPE51bWJl
clBhcnNlUmVzdWx0PgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUg
YXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4KK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBzdGQ6Om9w
dGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogewogICAgIEFTU0VSVChpc0FTQ0lJQmluYXJ5RGln
aXQobV9jdXJyZW50KSk7CiAKQEAgLTE2MzYsNyArMTYzNiw3IEBAIEFMV0FZU19JTkxJTkUgYXV0
byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4K
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46
OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KK0FMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VPY3RhbCgpIC0+IHN0ZDo6b3B0aW9uYWw8TnVtYmVyUGFy
c2VSZXN1bHQ+CiB7CiAgICAgQVNTRVJUKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpOwog
ICAgIEFTU0VSVCghbV9idWZmZXI4LnNpemUoKSB8fCAobV9idWZmZXI4LnNpemUoKSA9PSAxICYm
IG1fYnVmZmVyOFswXSA9PSAnMCcpKTsKQEAgLTE2OTIsNyArMTY5Miw3IEBAIEFMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VPY3RhbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVz
dWx0PgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBMZXhl
cjxUPjo6cGFyc2VEZWNpbWFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CitBTFdB
WVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlRGVjaW1hbCgpIC0+IHN0ZDo6b3B0aW9uYWw8
TnVtYmVyUGFyc2VSZXN1bHQ+CiB7CiAgICAgQVNTRVJUKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
IHx8IG1fYnVmZmVyOC5zaXplKCkpOwogICAgIGJvb2wgaXNMZWdhY3lMaXRlcmFsID0gbV9idWZm
ZXI4LnNpemUoKSAmJiBpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDE2NzQ4ZGQ5MzBlNGIxZjJkYmE3NTZmODc5
ZWY3Mzc0NWQxNjhiY2IuLjlkMzVmN2IyNDNlNzhjY2JjMGMxMzdkMTUxZTI4MTJmMTk4NDBkMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTE4MSwxMCArMTgxLDEwIEBA
IHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSBTdHJpbmdQYXJzZVJlc3VsdCBwYXJzZVRlbXBs
YXRlTGl0ZXJhbChKU1Rva2VuRGF0YSosIFJhd1N0cmluZ3NCdWlsZE1vZGUpOwogICAgIAogICAg
IHVzaW5nIE51bWJlclBhcnNlUmVzdWx0ID0gVmFyaWFudDxkb3VibGUsIGNvbnN0IElkZW50aWZp
ZXIqPjsKLSAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJz
ZUhleCgpOwotICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+IHBh
cnNlQmluYXJ5KCk7Ci0gICAgQUxXQVlTX0lOTElORSBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4gcGFyc2VPY3RhbCgpOwotICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8TnVtYmVyUGFyc2VS
ZXN1bHQ+IHBhcnNlRGVjaW1hbCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxO
dW1iZXJQYXJzZVJlc3VsdD4gcGFyc2VIZXgoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0
aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+IHBhcnNlQmluYXJ5KCk7CisgICAgQUxXQVlTX0lOTElO
RSBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJzZU9jdGFsKCk7CisgICAgQUxX
QVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJzZURlY2ltYWwo
KTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgp
OwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0
b3IoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VNdWx0aWxpbmVDb21tZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4
IGQwMDgwM2Q5Y2Y5YzM5NjQ1Zjk2Y2NkN2I4ODhkMjkzNDFjYzU0ZWEuLjllMDI0MjE4ZGFiOGVm
NGM3Njc1NGI1OTk4ZTkxNzg0ODliZGVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgTW9kdWxl
QW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFt
Tm9kZSwgY29uc3QKICAgICAvLyBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcuCiAgICAgLy8g
aW1wb3J0IGEgZnJvbSAibW9kIgogICAgIC8vIGV4cG9ydCB7IGEgfQotICAgIE9wdGlvbmFsPEpT
TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJl
Y29yZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIHN0ZDo6b3B0
aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0g
bW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQoKSk7CiAgICAg
QVNTRVJUKG9wdGlvbmFsSW1wb3J0RW50cnkpOwogICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJ
bXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKICAgICBmb3Ig
KGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5tb2R1bGVTY29wZURhdGEoKS5l
eHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggODc1NjAwYTA3NGZkMzdiMDA3MzFhY2M2NTcwNmE2
NzgxYjkyMTYxNC4uN2NkZjFjOTA3M2YwZDVlOThlZTY1MGJlZDhlYzQzODVkN2IwMzBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBA
IHZvaWQgSlNUb2tlbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlw
ZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRp
b25zLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cykKK0V4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0
LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBzdGQ6Om9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgRml4
ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKIHsKICAgICBBU1RC
dWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25z
dF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJjZSkpOwogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBc3luY0dlbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlU2luZ2xlRnVuY3Rpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKIHsKICAgICBUcmVl
U291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1l
bnRzKCk7CiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSAwOwpAQCAtMjM2OSw3ICsyMzY5
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFt
ZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1
cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rp
b25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVu
Y3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5p
bmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4
cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSBmdW5jdGlvbkRlZmluaXRpb25UeXBlLCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKIHsKICAgICBhdXRvIG1vZGUgPSBzb3VyY2VQ
YXJzZU1vZGUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUp
KTsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBnZXRNZXRhZGF0YShQYXJzZXJGdW5jdGlvbkluCiBzdGF0aWMg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIGdldE1ldGFkYXRhKFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgaW5mbykgeyByZXR1cm4gaW5mby5ib2R5OyB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYg
Y29udGV4dCwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgZGVjbGFyYXRpb25UeXBlLCBFeHBvcnRU
eXBlIGV4cG9ydFR5cGUsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgZGVjbGFyYXRpb25EZWZh
dWx0Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlIGRlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlw
ZSBleHBvcnRUeXBlLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0aW9uRGVmYXVs
dENvbnRleHQsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uKQogewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpAQCAtMjc3Niw3ICsyNzc2LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEV4cG9ydFR5cGUgZXhwb3J0VHlwZSwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCBk
ZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0
aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUsIERlY2xhcmF0
aW9uRGVmYXVsdENvbnRleHQgZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCwgc3RkOjpvcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7CiAgICAg
QVNTRVJUKG1hdGNoKEZVTkNUSU9OKSk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CkBAIC00MzkzLDcgKzQzOTMsNyBAQCBuYW1lZFByb3BlcnR5OgogICAg
ICAgICBpZiAobWF0Y2goRVFVQUwpKSAvLyBDb3ZlckluaXRpYWxpemVkTmFtZSBpcyBleGNsdXNp
dmUgdG8gQmluZGluZ1BhdHRlcm4gYW5kIEFzc2lnbm1lbnRQYXR0ZXJuCiAgICAgICAgICAgICBj
bGFzc2lmeUV4cHJlc3Npb25FcnJvcihFcnJvckluZGljYXRlc1BhdHRlcm4pOwogCi0gICAgICAg
IE9wdGlvbmFsPFByb3BlcnR5Tm9kZTo6VHlwZT4gdHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxQcm9wZXJ0eU5vZGU6OlR5cGU+IHR5cGU7CiAgICAgICAgIGlmICh3YXNVbmVzY2FwZWRJZGVu
dCkgewogICAgICAgICAgICAgaWYgKCppZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmdldCkK
ICAgICAgICAgICAgICAgICB0eXBlID0gUHJvcGVydHlOb2RlOjpHZXR0ZXI7CkBAIC01MDMzLDcg
KzUwMzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUFyZ3VtZW50KFRyZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHJlZUJ1aWxkZXIsIHR5cGVuYW1lIFBhcnNlclR5cGUsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFRyZWVCdWlsZGVyLCBBU1RCdWlsZGVyPjo6dmFs
dWU+Ojp0eXBlPgotc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFy
c2VyVHlwZSogcGFyc2VyLCBWTSYgdm0sIE9wdGlvbmFsPHR5cGVuYW1lIFBhcnNlclR5cGU6OkNh
bGxPckFwcGx5RGVwdGhTY29wZT4mIGNhbGxPckFwcGx5RGVwdGhTY29wZSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHJlc3Npb24pCitzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0
aChQYXJzZXJUeXBlKiBwYXJzZXIsIFZNJiB2bSwgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBQYXJz
ZXJUeXBlOjpDYWxsT3JBcHBseURlcHRoU2NvcGU+JiBjYWxsT3JBcHBseURlcHRoU2NvcGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uKQogewogICAgIGlmIChleHByZXNzaW9uLT5pc0RvdEFj
Y2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcmVzc2lvbik7CkBAIC01MDQ0LDcgKzUwNDQsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0aChQYXJzZXJUeXBlKiBwYXJz
ZXIsIFZNJiB2bSwgT3B0aW9uYWw8dAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxk
ZXIsIHR5cGVuYW1lIFBhcnNlclR5cGUsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFRyZWVCdWlsZGVyLCBTeW50YXhDaGVja2VyPjo6dmFsdWU+Ojp0eXBl
Pgotc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSos
IFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGFyc2VyVHlwZTo6Q2FsbE9yQXBwbHlEZXB0aFNjb3Bl
PiYsIFN5bnRheENoZWNrZXI6OkV4cHJlc3Npb24pCitzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3Jk
Q2FsbE9yQXBwbHlEZXB0aChQYXJzZXJUeXBlKiwgVk0mLCBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1l
IFBhcnNlclR5cGU6OkNhbGxPckFwcGx5RGVwdGhTY29wZT4mLCBTeW50YXhDaGVja2VyOjpFeHBy
ZXNzaW9uKQogewogfQogCkBAIC01MjIxLDcgKzUyMjEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4
cHJlcwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB1c2VkVmFyaWFibGVzU2l6ZSA9IGN1cnJlbnRTY29wZSgpLT5jdXJyZW50VXNlZFZhcmlhYmxl
c1NpemUoKTsKICAgICAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVu
ZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFs
PENhbGxPckFwcGx5RGVwdGhTY29wZT4gY2FsbE9yQXBwbHlEZXB0aFNjb3BlOworICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPENhbGxPckFwcGx5RGVwdGhTY29wZT4gY2FsbE9yQXBw
bHlEZXB0aFNjb3BlOwogICAgICAgICAgICAgICAgICAgICByZWNvcmRDYWxsT3JBcHBseURlcHRo
PFRyZWVCdWlsZGVyPih0aGlzLCBtX3ZtLCBjYWxsT3JBcHBseURlcHRoU2NvcGUsIGJhc2UpOwog
CiAgICAgICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRzID0gcGFyc2VBcmd1
bWVudHMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAz
ZjVkM2M5YTU2MzEzMDQyYTBmNzM3NTU1ZjVjZjljMmJhZDdiODUzLi45NmFmYjRhYTRhMWNkNjZk
NDcyNmE1YTRhNzJlZGQ2YzRjMmI2YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTk5Miw3ICs5OTIsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24g
PSBzdGQ6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqID0gbnVsbHB0ciwg
Y29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZp
ZXImLCBQYXJzaW5nQ29udGV4dCwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0
IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTEyNjYsNyArMTI2
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBp
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTY29wZVJlZj4gZmluZFByaXZhdGVOYW1lU2NvcGUo
KQorICAgIHN0ZDo6b3B0aW9uYWw8U2NvcGVSZWY+IGZpbmRQcml2YXRlTmFtZVNjb3BlKCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKICAgICAgICAgdW5zaWdu
ZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwpAQCAtMTUxMiw3ICsxNTEyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzOwogICAgICAgICBpbnQgbnVtQ29u
c3RhbnRzOwogICAgIH07Ci0gICAgRXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBw
YXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBGaXhlZFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgRXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3VsdCwgU3Ry
aW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNv
bnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJt
aW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbk1ldGFkYXRh
Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTc0MiwxNiArMTc0MiwxNiBA
QCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0
aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXN5bmNHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJz
ZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVy
U291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3Np
dGlvbj4mKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBk
aXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZl
TGl0ZXJhbExlbmd0aCA9IG51bGxwdHIpOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4
cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRU
eXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQg
PSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCk7CiAgICAgZW51bSBjbGFzcyBG
dW5jdGlvbkRlY2xhcmF0aW9uVHlwZSB7IERlY2xhcmF0aW9uLCBTdGF0ZW1lbnQgfTsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRl
Y2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlv
bkRlY2xhcmF0aW9uVHlwZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpO
b3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVs
dENvbnRleHQ6OlN0YW5kYXJkLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImLCBGdW5jdGlvbkRlY2xhcmF0aW9uVHlwZSA9IEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBl
OjpEZWNsYXJhdGlvbiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRh
cmQsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gc3RkOjpudWxsb3B0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiwgYm9vbCBwYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uQXNTdGF0ZW1lbnQpOwot
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUFzeW5j
RnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBl
OjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVm
YXVsdENvbnRleHQ6OlN0YW5kYXJkLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlv
bihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVj
bGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5k
YXJkLCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIERl
Y2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VEb1doaWxl
U3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKQEAgLTE4
MjEsNyArMTgyMSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJs
ZShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqLCBib29sIGlzRXZhbCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIGVudW0gY2xhc3Mg
RnVuY3Rpb25EZWZpbml0aW9uVHlwZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2Qg
fTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBh
cnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBi
b29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29u
dGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25E
ZWZpbml0aW9uVHlwZSwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICAKQEAgLTIxMjgsNyArMjEyOCw3IEBAIHByaXZhdGU6
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2Vk
Tm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJz
aW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBzdGQ6Om9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNvbnN0IEZpeGVk
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQg
ZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMjI3MSw3ICsyMjcxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHBhcnNlRnVuY3Rpb25Gb3JGdW5jdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCitpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwYXJzZUZ1bmN0aW9uRm9yRnVuY3Rpb25D
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3Im
IGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgc3RkOjpv
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7
CiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCmluZGV4IDRiM2Iz
YmUzMDNlYmVhZGM4NjQwMDk3YzdmODg1N2UxN2E0ZWRiZGUuLjAwZDNhZjk0ZDMxYzMyYWE3MTUw
ZGNmMjM3YjQwYTQ4YjQwYzY5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlQ29kZUtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBTb3VyY2VDb2Rl
S2V5KAogICAgICAgICBjb25zdCBVbmxpbmtlZFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlLCAKICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwKLSAgICAgICAgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBPcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCisgICAgICAgIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgc3RkOjpvcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiAgICAgICAg
ICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgICAgICAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAgICAgICAgICwgbV9mbGFncyhjb2RlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNvZGVHZW5lcmF0aW9uTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCA3YmY1YzNlMDFiY2Mw
MDE2NmY3MDQxNWY4MzNjZDE3MmRmNWQ1NmZjLi4xYWQ0MDNmYjBmNWE2M2E2OTU1MmJlZTZmMmVm
ZDE4YTRhYWQ2M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xMDMsMjAgKzEwMywyMCBAQCB2b2lkIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50
cnkpCiAgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBp
cyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCiB9CiAKLWF1dG8gQWJzdHJhY3RNb2R1bGVSZWNv
cmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IE9w
dGlvbmFsPEltcG9ydEVudHJ5PgorYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0SW1w
b3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gc3RkOjpvcHRpb25hbDxJ
bXBvcnRFbnRyeT4KIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVz
LmZpbmQobG9jYWxOYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRyaWVzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBPcHRpb25hbDxJ
bXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxJ
bXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotYXV0byBBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6dHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+
IE9wdGlvbmFsPEV4cG9ydEVudHJ5PgorYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0
RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IHN0ZDo6b3B0aW9u
YWw8RXhwb3J0RW50cnk+CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50
cmllcy5maW5kKGV4cG9ydE5hbWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJp
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIE9wdGlv
bmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOwogfQogCiBhdXRvIEFic3RyYWN0TW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhw
b3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBFeHBvcnRFbnRyeQpAQCAt
MTY0LDcgKzE2NCw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gdHJ5
R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwoKSk7CisgICAgc3RkOjpvcHRpb25hbDxJbXBv
cnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFt
ZS5pbXBsKCkpOwogICAgIGlmICghb3B0aW9uYWxJbXBvcnRFbnRyeSkKICAgICAgICAgcmV0dXJu
IFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKQEAgLTI0MywxMiArMjQzLDEyIEBAIGlubGluZSBi
b29sIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnk6Okhhc2g6OmVxdWFsKGNvbnN0
IFJlc29sdmVRdWVyeSYKICAgICByZXR1cm4gbGhzLm1vZHVsZVJlY29yZCA9PSByaHMubW9kdWxl
UmVjb3JkICYmIGxocy5leHBvcnROYW1lID09IHJocy5leHBvcnROYW1lOwogfQogCi1hdXRvIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjp0cnlHZXRDYWNoZWRSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJ
bXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25hbDxSZXNvbHV0aW9uPgorYXV0byBBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhw
b3J0TmFtZSkgLT4gc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPgogewogICAgIGNvbnN0IGF1dG8g
aXRlcmF0b3IgPSBtX3Jlc29sdXRpb25DYWNoZS5maW5kKGV4cG9ydE5hbWUpOwogICAgIGlmIChp
dGVyYXRvciA9PSBtX3Jlc29sdXRpb25DYWNoZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVzb2x1dGlvbj4oaXRlcmF0b3ItPnZhbHVl
KTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPihpdGVyYXRvci0+dmFsdWUp
OwogfQogCiB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpjYWNoZVJlc29sdXRpb24oVW5pcXVl
ZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUsIGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pCkBA
IC02MDUsMTQgKzYwNSwxNCBAQCBhdXRvIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhw
b3J0SW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdAogCiAgICAgICAgICAg
ICAvLyAgNC4gT25jZSB3ZSBmb2xsb3cgc3RhciBsaW5rcywgd2Ugc2hvdWxkIG5vdCByZXRyaWV2
ZSB0aGUgcmVzdWx0IGZyb20gdGhlIGNhY2hlIGFuZCBzaG91bGQgbm90IGNhY2hlIHRoZSByZXN1
bHQuCiAgICAgICAgICAgICBpZiAoIWZvdW5kU3RhckxpbmtzKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKE9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQt
PnRyeUdldENhY2hlZFJlc29sdXRpb24ocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9u
ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRDYWNoZWRSZXNvbHV0aW9uKHF1ZXJ5LmV4cG9ydE5hbWUu
Z2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3AoKmNh
Y2hlZFJlc29sdXRpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRp
b246OmFtYmlndW91cygpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEV4
cG9ydEVudHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBv
cnRFbnRyeShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RXhwb3J0RW50cnk+IG9wdGlvbmFsRXhwb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQt
PnRyeUdldEV4cG9ydEVudHJ5KHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpOwogICAgICAgICAgICAg
aWYgKCFvcHRpb25hbEV4cG9ydEVudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gbWF0Y2hlZCBleHBvcnRlZCBiaW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVsZSwKICAg
ICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCkBAIC03MTIs
NyArNzEyLDcgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydEltcGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKIGF1dG8gQWJzdHJhY3RNb2R1bGVS
ZWNvcmQ6OnJlc29sdmVFeHBvcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSkgLT4gUmVzb2x1dGlvbgogewogICAgIC8vIExvb2sgdXAg
dGhlIGNhY2hlZCByZXNvbHV0aW9uIGZpcnN0IGJlZm9yZSBlbnRlcmluZyB0aGUgcmVzb2x2aW5n
IGxvb3AsIHNpbmNlIHRoZSBsb29wIHNldHVwIHRha2VzIHNvbWUgY29zdC4KLSAgICBpZiAoT3B0
aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1dGlvbiA9IHRyeUdldENhY2hlZFJlc29sdXRp
b24oZXhwb3J0TmFtZS5pbXBsKCkpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPFJlc29sdXRpb24+
IGNhY2hlZFJlc29sdXRpb24gPSB0cnlHZXRDYWNoZWRSZXNvbHV0aW9uKGV4cG9ydE5hbWUuaW1w
bCgpKSkKICAgICAgICAgcmV0dXJuICpjYWNoZWRSZXNvbHV0aW9uOwogICAgIHJldHVybiByZXNv
bHZlRXhwb3J0SW1wbChnbG9iYWxPYmplY3QsIFJlc29sdmVRdWVyeSh0aGlzLCBleHBvcnROYW1l
LmltcGwoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmgKaW5kZXggOGRkOTdlM2EzZTgxNjFiOWNmM2ZkYjc1ODhmMTk1
ZDJiODhmMDQwMS4uYThlOWE0ZmQ3OWY0MjhjNzdiMWM1OGFlN2ZmMzgwMGIyNjNmOWVmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkSW1wb3J0RW50
cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4
cG9ydEVudHJ5Jik7CiAKLSAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50
cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7Ci0gICAgT3B0aW9uYWw8RXhwb3J0RW50
cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PiB0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3Ry
aW5nSW1wbCogbG9jYWxOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlH
ZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAKICAgICBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQog
ICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5OwogICAgIHN0YXRpYyBSZXNv
bHV0aW9uIHJlc29sdmVFeHBvcnRJbXBsKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVzb2x2ZVF1
ZXJ5Jik7Ci0gICAgT3B0aW9uYWw8UmVzb2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihV
bmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvbHV0
aW9uPiB0cnlHZXRDYWNoZWRSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1l
KTsKICAgICB2b2lkIGNhY2hlUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFt
ZSwgY29uc3QgUmVzb2x1dGlvbiYpOwogCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZlcyB0aGUg
Z2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRo
ZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNiMWY5ZmYwN2EzZjI3NmI0
NDliYzgzYTk4MDBlMmE3YTNhOGMwMWIuLjEyZDM3ZDJmZjY5YzkwYjUyNzEyY2JmMGM4ZWIxYjIw
NmQ5OTIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHRyVG9PZmZzZXRN
YXAuYWRkKHB0ciwgb2Zmc2V0KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxwdHJkaWZmX3Q+IGNh
Y2hlZE9mZnNldEZvclB0cihjb25zdCB2b2lkKiBwdHIpCisgICAgc3RkOjpvcHRpb25hbDxwdHJk
aWZmX3Q+IGNhY2hlZE9mZnNldEZvclB0cihjb25zdCB2b2lkKiBwdHIpCiAgICAgewogICAgICAg
ICBhdXRvIGl0ID0gbV9wdHJUb09mZnNldE1hcC5maW5kKHB0cik7CiAgICAgICAgIGlmIChpdCA9
PSBtX3B0clRvT2Zmc2V0TWFwLmVuZCgpKQpAQCAtNDgyLDcgKzQ4Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKCFzcmMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKE9wdGlv
bmFsPHB0cmRpZmZfdD4gb2Zmc2V0ID0gZW5jb2Rlci5jYWNoZWRPZmZzZXRGb3JQdHIoc3JjKSkg
eworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxwdHJkaWZmX3Q+IG9mZnNldCA9IGVuY29kZXIu
Y2FjaGVkT2Zmc2V0Rm9yUHRyKHNyYykpIHsKICAgICAgICAgICAgIHRoaXMtPm1fb2Zmc2V0ID0g
Km9mZnNldCAtIGVuY29kZXIub2Zmc2V0T2YoJnRoaXMtPm1fb2Zmc2V0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
fQogCiAgICAgICAgIHB0cmRpZmZfdCBidWZmZXJPZmZzZXQgPSBkZWNvZGVyLm9mZnNldE9mKHRo
aXMtPmJ1ZmZlcigpKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHZvaWQqPiBwdHIgPSBkZWNvZGVy
LmNhY2hlZFB0ckZvck9mZnNldChidWZmZXJPZmZzZXQpKSB7CisgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHZvaWQqPiBwdHIgPSBkZWNvZGVyLmNhY2hlZFB0ckZvck9mZnNldChidWZmZXJPZmZz
ZXQpKSB7CiAgICAgICAgICAgICBpc05ld0FsbG9jYXRpb24gPSBmYWxzZTsKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTb3VyY2UqPigqcHRyKTsKICAgICAgICAgfQpAQCAtODIzLDkg
KzgyMyw5IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQ2Fj
aGVkT3B0aW9uYWwgOiBwdWJsaWMgVmFyaWFibGVMZW5ndGhPYmplY3Q8T3B0aW9uYWw8U291cmNl
VHlwZTxUPj4+IHsKK2NsYXNzIENhY2hlZE9wdGlvbmFsIDogcHVibGljIFZhcmlhYmxlTGVuZ3Ro
T2JqZWN0PHN0ZDo6b3B0aW9uYWw8U291cmNlVHlwZTxUPj4+IHsKIHB1YmxpYzoKLSAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25hbDxTb3VyY2VUeXBlPFQ+PiYg
c291cmNlKQorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U291cmNlVHlwZTxUPj4mIHNvdXJjZSkKICAgICB7CiAgICAgICAgIGlmICghc291cmNl
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMzLDcgKzgzMyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdGhpcy0+dGVtcGxhdGUgYWxsb2NhdGU8VD4oZW5jb2RlciktPmVuY29kZShlbmNvZGVyLCAq
c291cmNlKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTb3VyY2VUeXBlPFQ+PiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHRoaXMtPmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NDEsNyArODQx
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4geyB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4o
KS0+ZGVjb2RlKGRlY29kZXIpIH07CiAgICAgfQogCi0gICAgdm9pZCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgT3B0aW9uYWw8U291cmNlVHlwZTxUPj4mIGRzdCkgY29uc3QKKyAgICB2b2lkIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+JiBkc3Qp
IGNvbnN0CiAgICAgewogICAgICAgICBkc3QgPSBkZWNvZGUoZGVjb2Rlcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBjNjJhYzU0NzE5MWM4
YTgwMmVmNDAzZGU3YzQzMDY4NmM2NDlkNDhmLi44ZWQ1ZGFjMzc0NTlmYThiNWU2ZTdlNDEwNzVk
YjhiMDEwNmZlZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aApAQCAtMTg2LDcgKzE4Niw3IEBAIHN0cnVjdCBDbGFzc0luZm8gewogICAgIGNvbnN0IENsYXNz
SW5mbyogcGFyZW50Q2xhc3M7CiAgICAgY29uc3QgSGFzaFRhYmxlKiBzdGF0aWNQcm9wSGFzaFRh
YmxlOwogICAgIENoZWNrSlNDYXN0U25pcHBldEZ1bmN0aW9uUHRyIGNoZWNrU3ViQ2xhc3NTbmlw
cGV0OwotICAgIGNvbnN0IE9wdGlvbmFsPEpTVHlwZVJhbmdlPiBpbmhlcml0c0pTVHlwZVJhbmdl
OyAvLyBUaGlzIGlzIHJhbmdlIG9mIEpTVHlwZXMgZm9yIGRvaW5nIGluaGVyaXRhbmNlIGNoZWNr
aW5nLiBIYXMgdGhlIGZvcm06IFtmaXJzdEpTVHlwZSwgbGFzdEpTVHlwZV0gKGluY2x1c2l2ZSku
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxKU1R5cGVSYW5nZT4gaW5oZXJpdHNKU1R5cGVSYW5n
ZTsgLy8gVGhpcyBpcyByYW5nZSBvZiBKU1R5cGVzIGZvciBkb2luZyBpbmhlcml0YW5jZSBjaGVj
a2luZy4gSGFzIHRoZSBmb3JtOiBbZmlyc3RKU1R5cGUsIGxhc3RKU1R5cGVdIChpbmNsdXNpdmUp
LgogICAgIE1ldGhvZFRhYmxlIG1ldGhvZFRhYmxlOwogICAgIGNvbnN0IFR5cGVkQXJyYXlUeXBl
IHR5cGVkQXJyYXlTdG9yYWdlVHlwZTsKICAgICBjb25zdCB1bnNpZ25lZCBzdGF0aWNDbGFzc1Np
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAx
NDk0YzdlOGNmY2ZjODdhNzUwMWE0OWM4NmI3MmUxZjMzMjdmYWZhLi44YWZkMDJhYTMwYTFjMzli
N2Y5MzBmYWEwZDM2ZWRlOGY5OTA0ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KFZNJgogICAgIHJldHVybiBnZXRVbmxpbmtlZEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgY29kZUdlbmVyYXRpb25N
b2RlLCBlcnJvciwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKIH0KIAotVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBQYXJz
ZXJFcnJvciYgZXJyb3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpn
ZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgUGFyc2VyRXJyb3ImIGVycm9yKQogewog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA9IGZhbHNlOwogICAgIFNvdXJjZUNvZGVL
ZXkga2V5KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCAw
ZGRmNjQ5MWU3NjY2NjQ2YWI1OWI4NjliNDE2M2YwODc0MGY0MWI0Li5jNDFmNGEzMDEzM2MzZmRh
OTFmMzcyN2I0MDljZDQ0YTI4NTU5MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqIGdldFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1F
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJik7CiAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBnZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soVk0mLCBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRUeXBlKTsKICAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGdldFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayhWTSYsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29k
ZSYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYpOwotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4sIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbiwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZ2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNF
bmRQb3NpdGlvbiwgUGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FjaGUoY29uc3Qg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgKaW5kZXgg
MjJmNDY2MTdkYjc0NjdmNzdiMDJkZGQzMzAxMTk3ZjQxMTFiMjgwMS4uNmMzOGJkY2Q4YWUxMWU2
ODk0ODhhZTZiZGM2ODVmNDcyMThkZDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoK
IAogI2lmICFkZWZpbmVkKE5ERUJVRykKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8RGlzYWxsb3dH
Qz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxv
d0dDOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCmluZGV4IGYzYjhlOTE0MTk0MjJmMjA3
YzRmNjExODU5YTRhZWQ0NTY2Yzc1MTIuLjVlZmUxYjYyMTYxNDEyOWIyMjE3N2U3ZmQ1NTFiMWFi
N2ZjYTI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmlu
ZVByb3BlcnR5QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNv
bnN0CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIWhhc1dyaXRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShDb25maWd1cmFibGVTaGlmdCkgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlKCkgY29uc3QKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhh
c0NvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51
bWVyYWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGVudW1lcmFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNFbnVtZXJhYmxlKCkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCmluZGV4IGQwZTFi
ZjVhMTAwMjUwOWVhODVmN2VhM2IxMWEwZjZhZjk0OGU1NWUuLmUyY2ExNjJlMGI1NGUyNWNmMDY5
ZWVhOGM4N2UxZWVhMmU0Y2Q1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRmls
ZUJhc2VkRnV6emVyQWdlbnQ6OkZpbGVCYXNlZEZ1enplckFnZW50KFZNJiB2bSkKIFNwZWN1bGF0
ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFByZWRpY3Rpb25UYXJnZXQmIHRhcmdldCwgU3BlY3VsYXRlZFR5cGUg
b3JpZ2luYWwpCiB7CiAgICAgRnV6emVyUHJlZGljdGlvbnMmIGZ1enplclByZWRpY3Rpb25zID0g
ZW5zdXJlR2xvYmFsRnV6emVyUHJlZGljdGlvbnMoKTsKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVk
VHlwZT4gZ2VuZXJhdGVkID0gZnV6emVyUHJlZGljdGlvbnMucHJlZGljdGlvbkZvcih0YXJnZXQu
bG9va3VwS2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBnZW5lcmF0ZWQg
PSBmdXp6ZXJQcmVkaWN0aW9ucy5wcmVkaWN0aW9uRm9yKHRhcmdldC5sb29rdXBLZXkpOwogCiAg
ICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gY29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRl
cigpOwogICAgIGF1dG8gc291cmNlVXBUb0Rpdm90ID0gcHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0
cmluZyh0YXJnZXQuZGl2b3QgLSB0YXJnZXQuc3RhcnRPZmZzZXQsIHRhcmdldC5zdGFydE9mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCmluZGV4IGQyM2RmZjk5YmVhOTkwZDEwNTBjOGFlZTExMWJmZGQ3ZmE4MjNm
YzAuLmJmODNkNDI3MGY1MzEyZjc0NmU2NDUwZjY2NDVlODBhMGRmNjU1MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CkBAIC0xMDQsNyArMTA0LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKAogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNv
bWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHBy
b2dyYW07Ci0gICAgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlv
bkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGlm
IChhcmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBm
dW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNp
emUoKSA9PSAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAxODZmYjI0ZmFiYTBjNDZjZWJlMDI3ZWE1NmMwNzJh
NzVjOWNhY2I4Li44ZjVjYjVjZGVkNjBiNmI3N2MzNTExMDlkNWU1YTdlOWE4NjQxYWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKEZ1bmN0aW9uRXhl
Y3V0YWJsZSk7CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgIEpTT2JqZWN0KiYg
ZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCisgICAgSlNPYmplY3QqJiBleGNlcHRp
b24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSAKICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBhZTgyNDY0ZTk2MmJjMzUxM2Mw
YTg5MjI0NDNjNDFlY2Y5YTkxODQ0Li4yMjNhYzcyNjI0ZjJlN2Q4ZThhMzNiMDg3YTY1ZDQyZjBj
YjUyYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRp
YyBGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCAKLSAgICAg
ICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAgICAg
IEpTT2JqZWN0KiYgZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBzdGQ6Om9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CiAKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKQEAgLTE4Miw3ICsxODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9vdmVycmlkZUxpbmVOdW1i
ZXIgPSBvdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBvdmVy
cmlkZUxpbmVOdW1iZXIoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxp
bmVOdW1iZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEp
KQogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMu
Y3BwCmluZGV4IDNjMDQ4OWY4ODY3ZGMxZjg3NjlkOTcwMTdlMTYxZmQxOWRmOTYzMTguLjk3MDIx
NWUyNDZjYjJjOGI4MjkwNWZhYzlmM2Y2YmUxYTE4NzE2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgRnV6emVyUHJlZGljdGlvbnM6OkZ1enplclByZWRpY3Rpb25zKGNvbnN0IGNoYXIqIGZp
bGVuYW1lKQogICAgIH0KIH0KIAotT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IEZ1enplclByZWRp
Y3Rpb25zOjpwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmluZyYga2V5KQorc3RkOjpvcHRpb25hbDxT
cGVjdWxhdGVkVHlwZT4gRnV6emVyUHJlZGljdGlvbnM6OnByZWRpY3Rpb25Gb3IoY29uc3QgU3Ry
aW5nJiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IG1fcHJlZGljdGlvbnMuZmluZChrZXkpOwogICAg
IGlmIChpdCA9PSBtX3ByZWRpY3Rpb25zLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmgKaW5kZXggMGRiOTZhNDg5Y2I0ZDU0YTVh
MGFmMzJjMjE2YTIxY2VkMzRjNjZmMC4uZmMxYjZjYmI5NjA0ZGFjNDY1NmE1NTYwMDNiMDhmZjgz
NWU0ZjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVy
UHJlZGljdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQ
cmVkaWN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEZ1enplclByZWRpY3Rpb25zIHsK
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBGdXp6ZXJQcmVkaWN0aW9ucyhjb25zdCBj
aGFyKik7CiAKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gcHJlZGljdGlvbkZvcihjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBwcmVkaWN0aW9u
Rm9yKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBTcGVj
dWxhdGVkVHlwZT4gbV9wcmVkaWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDhjMjhlMzVmYTRk
NmFhOWRiMTJlZTFkMmE5OTk0MjUyNTdhOGYyNjYuLjcyMzE1MDNiMzQ2ZGRmMzE2N2RkYmY3YmEz
ZmNmYjE1NmQ4YTFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtNjUsNyArNjUsNyBAQCBib29sIEdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgcmV0dXJu
IEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHNsb3QpOwogCiAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
QEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgIGlmIChVTkxJ
S0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUo
KSkpOwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRl
bnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVu
dCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmlzTWFwcGVkQXJndW1lbnQoaW5kZXgu
dmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChpZGVudCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHNsb3QpKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KgogICAg
ICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgewogICAg
ICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICB9IGVsc2Ug
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChpZGVudCkp
IHsKKyAgICB9IGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXgg
PSBwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFs
SW5kZXgudmFsdWUoKTsKICAgICAgICAgYm9vbCBpc01hcHBlZCA9IHRoaXNPYmplY3QtPmlzTWFw
cGVkQXJndW1lbnQoaW5kZXgpOwogICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3RGVzY3Jp
cHRvciA9IGRlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggNzIwZTY4ZThiNmFiM2ZmZTRjMGEyMDVlOWY4
MmVkMWU3NzQ1NTFiZS4uMjA1ZTFhOTM5NDNiMzVhYWQxYmZmNTI5MDkyZGUzMTNhY2UwNTgwZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlD
YWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5
Q2FjaGUuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSArIGltcGwtPmhhc2goKTsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPGJvb2w+IGdldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlOYW1lIHByb3BOYW1lKQorICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxi
b29sPiBnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wTmFtZSkKICAg
ICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gcHJvcE5hbWUudWlkKCk7CiAg
ICAgICAgIFN0cnVjdHVyZUlEIGlkID0gc3RydWN0dXJlLT5pZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAppbmRleCBmMTFmMGE1
YjRjNmE5NWZiODQ4OWU3NTUwZTAyYjY2MWMxMWI4OGE3Li41MTYwZTgxOGMwMTliZWQ3MjYxODNh
MzQ5ZTY2NzgxNjFkNjIwMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNoTWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNoTWFwSW1wbElubGluZXMuaApAQCAtMTE3LDcgKzExNyw3IEBAIEFMV0FZU19JTkxJ
TkUgdWludDMyX3QganNNYXBIYXNoRm9yQWxyZWFkeUhhc2hlZFZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplCiAgICAgcmV0dXJuIGpzTWFwSGFzaEltcGw8RXhjZXB0aW9uRXhwZWN0YXRp
b246OlNob3VsZE5vdFRocm93PihnbG9iYWxPYmplY3QsIHZtLCB2YWx1ZSk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNWYWx1ZSBr
ZXkpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01h
cEhhc2goSlNWYWx1ZSBrZXkpCiB7CiAgICAga2V5ID0gbm9ybWFsaXplTWFwS2V5KGtleSk7CiAg
ICAgaWYgKGtleS5pc1N0cmluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKaW5kZXggMTcxNGI4YWRkNWRiOWRlNjVlNWMxNjM5OTkwNGJjMzMxZGUzNmM3
YS4uYjdiOTFmMDA5ZWFkNjNjNWVjNWViZThlYzI4MzU1MGQ3YjQxMGY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMzgsNyArMzgsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNJbmRleCh1aW50MzJfdCBpbmRleCkKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
bmRleChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQUxXQVlT
X0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5n
IGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0aCkKQEAgLTc3LDcgKzc3LDcgQEAgQUxX
QVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoU3RyaW5nSW1wbCYgaW1wbCkKK0FMV0FZ
U19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBp
bXBsKQogewogICAgIGlmIChpbXBsLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbmRl
eChpbXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVuZ3RoKCkpOwpAQCAtMjcyLDcgKzI3Miw3IEBA
IGlubGluZSBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0
IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5nCiAgICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcywgbGVu
Z3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAg
ICAgYXV0byB1aWQgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBpZiAoIXVpZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmlu
ZGV4IDI4YmJmNmYzZWViMzEyMzZiNzgzZDQ2YTUxOGI5M2Q3MDBhODZjYjUuLjI3MjlkZjlkZDRk
MTVlMTliN2IyMDE5Y2E5NGRkNzY0N2M1YTY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldID0gU3RyaW5nKGhv
dXJDeWNsZVN0cmluZyhob3VyQ3ljbGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0
aGVyZSBpcyBob3VyMTIsIGhvdXJDeWNsZSBpcyBpZ25vcmVkLgotICAgICAgICAvLyBXZSBhcmUg
c2V0dGluZyBudWxsIFN0cmluZyBleHBsaWNpdGx5IGhlcmUgKGxvY2FsZU9wdGlvbnMnIGVudHJp
ZXMgYXJlIE9wdGlvbmFsPFN0cmluZz4pLiBUaGlzIGxlYWRzIHVzIHRvIHVzZSBIb3VyQ3ljbGU6
Ok5vbmUgbGF0ZXIuCisgICAgICAgIC8vIFdlIGFyZSBzZXR0aW5nIG51bGwgU3RyaW5nIGV4cGxp
Y2l0bHkgaGVyZSAobG9jYWxlT3B0aW9ucycgZW50cmllcyBhcmUgc3RkOjpvcHRpb25hbDxTdHJp
bmc+KS4gVGhpcyBsZWFkcyB1cyB0byB1c2UgSG91ckN5Y2xlOjpOb25lIGxhdGVyLgogICAgICAg
ICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktl
eTo6SGMpXSA9IFN0cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAppbmRleCA0ZmRkYWYxNWYzZmY3MDRlZDBl
N2MwMTAyMjM4NTAwNDM5Yjg4NGQxLi40MmI3YjBjMDFiYWE4NzAzNGVhYTE0NjBmNzE0YWYzNjdi
Y2IwNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6Omlu
aXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQog
ICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZt
LnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5hcnJvdyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7
ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsgImxvbmciX3MsIFN0eWxlOjpMb25nIH0gfSwg
InN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIi
X3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCi0gICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxPcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBU
eXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQi
X3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAi
dHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIs
IG9yIFwiY3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRs
T3B0aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAi
cmVnaW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwg
eyAiY3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0gfSwgInR5cGUgbXVzdCBiZSBlaXRoZXIg
XCJsYW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBvciBcImN1cnJlbmN5XCIiX3Ms
IHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAppbmRleCBlMWQ4NWM5MWYxMmRiOGE5NzE4MjM1NTI5
NmRiYTEwZjNlNWM2NzM3Li4zMTRmOTRkYTRhYjdkNTU2ODQ5NDkzMzNjMjBiZWY4MzE0ZDNkZTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCkBAIC04NSwx
MSArODUsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBTdHJpbmcg
bV9zY3JpcHQ7CiAgICAgU3RyaW5nIG1fcmVnaW9uOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9j
YWxlbmRhcjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY2FzZUZpcnN0OwotICAgIE9wdGlvbmFs
PFN0cmluZz4gbV9jb2xsYXRpb247Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtX2hvdXJDeWNsZTsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IG1fbnVtYmVyaW5nU3lzdGVtOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2NhbGVuZGFyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2Nhc2VG
aXJzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9jb2xsYXRpb247CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1faG91ckN5Y2xlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBt
X251bWJlcmluZ1N5c3RlbTsKICAgICBUcmlTdGF0ZSBtX251bWVyaWMgeyBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA1ZTI0Yzk0NTMwYTJkN2E1YWM4OTgxNTAzNGZh
MGM0OTU3MzU1NThhLi40MmE4ZTk1ZmVkMTk0ODIxYmY1YmU4MTAwNGU2YTRiMDQ2MDZkNWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBNZWFzdXJlVW5pdCB7CiAgICAgQVNDSUlM
aXRlcmFsIHN1YlR5cGU7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0
aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRp
ZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIg
TWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKICAgICAgICAgeyAiYXJlYSJfcywgImFjcmUi
X3MgfSwKQEAgLTIzMywxMCArMjMzLDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBNZWFzdXJl
VW5pdCBudW1lcmF0b3I7Ci0gICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yOwogfTsKIAotc3RhdGlj
IE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5n
VmlldyB1bml0SWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlbGxGb3JtZWRVbml0
PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKIHsK
ICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVu
dGlmaWVyCiAgICAgaWYgKGF1dG8gdW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmll
cih1bml0SWRlbnRpZmllcikpCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKIAogICAgIFN0cmluZyB1bml0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIHsgfSwgbnVsbHB0
ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICBPcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXQ7CiAgICAgaWYgKCF1bml0LmlzTnVs
bCgpKSB7CiAgICAgICAgIHdlbGxGb3JtZWRVbml0ID0gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVy
KHVuaXQpOwogICAgICAgICBpZiAoIXdlbGxGb3JtZWRVbml0KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDdjZjljODY3MDZiZjY1NTQzZjhk
ZTlhMzE0OTNmZWVjMTAyOGMxMTEuLmUxNDAzY2YwZDE3NzI0MDgwNTI4MWQ2NTJjODIzMDJkMWVi
ZDk1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
CkBAIC0xNDM4LDcgKzE0MzgsNyBAQCBib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJp
bmdWaWV3IGN1cnJlbmN5KQogICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1
cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwogfQogCi1PcHRp
b25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVMb2NhbGVJRFdpdGhvdXROdWxsVGVy
bWluYXRvcihjb25zdCBjaGFyKiBsb2NhbGVJRCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIs
IDMyPj4gY2Fub25pY2FsaXplTG9jYWxlSURXaXRob3V0TnVsbFRlcm1pbmF0b3IoY29uc3QgY2hh
ciogbG9jYWxlSUQpCiB7CiAgICAgQVNTRVJUKGxvY2FsZUlEKTsKICAgICBWZWN0b3I8Y2hhciwg
MzI+IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApp
bmRleCA5NWViN2JiNzk5YjVlNzI4MjE4NTNmOWE5YmE0YmIyOTAyMWJkMDUyLi5lZTZjOTZhZTAx
MTc1MjczYTNkOTUyOTg2ZGZlODU3ODQzMjM5ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgVmVjdG9yPGNoYXIsIDMy
PiBsb2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnV2l0aE51bGxUZXJtaW5hdG9yKGNvbnN0IENT
dHJpbmcmKTsKIFN0cmluZyBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKGNvbnN0IGNoYXIqLCBib29s
IGlzSW1tb3J0YWwgPSBmYWxzZSk7CiBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVM
aXN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzKTsKIAotdXNpbmcgUmVzb2x2ZUxv
Y2FsZU9wdGlvbnMgPSBzdGQ6OmFycmF5PE9wdGlvbmFsPFN0cmluZz4sIG51bWJlck9mUmVsZXZh
bnRFeHRlbnNpb25LZXlzPjsKK3VzaW5nIFJlc29sdmVMb2NhbGVPcHRpb25zID0gc3RkOjphcnJh
eTxzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIG51bWJlck9mUmVsZXZhbnRFeHRlbnNpb25LZXlzPjsK
IHVzaW5nIFJlbGV2YW50RXh0ZW5zaW9ucyA9IHN0ZDo6YXJyYXk8U3RyaW5nLCBudW1iZXJPZlJl
bGV2YW50RXh0ZW5zaW9uS2V5cz47CiBzdHJ1Y3QgUmVzb2x2ZWRMb2NhbGUgewogICAgIFN0cmlu
ZyBsb2NhbGU7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBpc1N0cnVjdHVyYWxseVZhbGlkTGFu
Z3VhZ2VUYWcoU3RyaW5nVmlldyk7CiAKIGJvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0
cmluZ1ZpZXcpOwogCi1PcHRpb25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVMb2Nh
bGVJRFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdCBjaGFyKiBsb2NhbGVJRCk7CitzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxjaGFyLCAzMj4+IGNhbm9uaWNhbGl6ZUxvY2FsZUlEV2l0aG91dE51bGxU
ZXJtaW5hdG9yKGNvbnN0IGNoYXIqIGxvY2FsZUlEKTsKIAogc3RydWN0IFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVy
YXRvciopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCA2MmM0ODhmMDU0MzdhZjIzMDNlYmRk
NGRmYTQ4ZTYxNGMzYjg3ZDRhLi4wYjU5NjYxMmZmOGMzNWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0
YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBTdHJpbmdW
aWV3IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRpbWV1bml0Ci1zdGF0aWMgT3B0aW9uYWw8
VVJlbGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRpbWVVbml0VHlwZShTdHJpbmdWaWV3IHVu
aXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZl
VGltZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKIHsKICAgICBTdHJpbmdWaWV3IHNpbmd1bGFy
ID0gc2luZ3VsYXJVbml0KHVuaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmNwcAppbmRleCBkNGFiNDlhYTFjNDVlZjY0NDIxMDM1NDM1NmIxOTkwZmQ0ZTgy
MGNiLi40MGE5MjI0ZDY4NTk3YzEwOTA4YTE5YTUzOTljYTcxMWE1NTg4YjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTM0NCw3ICszNDQsNyBA
QCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5k
Rm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCitzdGQ6Om9wdGlvbmFsPEl0ZXJhdGlv
bktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7
CiAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2lj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCA3YTljZDcw
MjllMzhmZGMzZjExMDUwOTE0ZDRkZDIwYjUzZGEzNTJhLi43YTg0OTY3ODVmYmUyYmM0MGVlOTI4
MzQ0N2QwZGQ4NDc1OGI5NjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaApAQCAtMTk2LDcgKzE5Niw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAg
ICAgV2FzbUZ1bmN0aW9uSW50cmluc2ljLAogfTsKIAotT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4g
aW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKK3N0ZDo6b3B0aW9uYWw8SXRl
cmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKIAogY29u
c3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDc5YzAzNDMyZTJhNjQ3OWZlMDljOTQwNThjNjcx
ODAyNDc1OTgxZmEuLjMyYzQ4ODAzZWFmYjI2YjBkZmJhYmM4MjlhMDY2MGMzNDUwZTliNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgLy8gNC4gRWxzZSBpZiBQIGlzIGFu
IGFycmF5IGluZGV4ICgxNS40KSwgdGhlbgogICAgIC8vIGEuIExldCBpbmRleCBiZSBUb1VpbnQz
MihQKS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gb3B0
aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAvLyBiLiBS
ZWplY3QgaWYgaW5kZXggPj0gb2xkTGVuIGFuZCBvbGRMZW5EZXNjLltbV3JpdGFibGVdXSBpcyBm
YWxzZS4KICAgICAgICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBOb3RoaW5nIHByZXZlbnRzIHRoaXMgZnJvbSBiZWluZyBjYWxsZWQg
b24gYSBSdW50aW1lQXJyYXksIGFuZCB0aGUgbGVuZ3RoIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJl
dHVybiAwIGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKaW5kZXggNzdjOTJlY2Y4YTVlZDU3
YTI4MDFhMjAxZDM1ODZjYmVkM2YyNTJlZC4uNjFmZmU4Y2EwZjBiNDlhODU4OTUyMjY1MzY4ZmNl
YzJmMmM3ZmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVu
Z3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHNoYXJlZEFycmF5QnVmZmVy
UHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc2hhcmVk
QXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIAotT3B0aW9uYWw8SlNWYWx1
ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QsIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGUgbW9kZSkKK3N0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3Ry
dWN0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlCdWZmZXIqIHRo
aXNPYmplY3QsIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3Bl
Y2llc0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJheUJ1ZmZlcio+IHNwZWNpZXNDbwogCiAgICAgLy8g
RmFzdCBwYXRoIGluIHRoZSBub3JtYWwgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMgbm90IHNldCBh
biBvd24gY29uc3RydWN0b3IgYW5kIHRoZSBBcnJheUJ1ZmZlci5wcm90b3R5cGUuY29uc3RydWN0
b3IgaXMgbm9ybWFsLgogICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFz
c2VzIG9mIEFycmF5QnVmZmVyLCB3aGljaCBhcmUgQXJyYXlCdWZmZXIgb2JqZWN0cyBidXQgaGF2
ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUgYnkgZGVmYXVsdC4KLSAgICBPcHRpb25hbDxKU1ZhbHVl
PiBzcGVjaWVzID0gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCB0
aGlzT2JqZWN0LCBtb2RlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IHNwZWNpZXMgPSBh
cnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIG1v
ZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yUmVzdWx0KTsKICAgICBp
ZiAoIXNwZWNpZXMpCiAgICAgICAgIHJldHVybiBmYXN0UGF0aFJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaApp
bmRleCA3YjkwZjk0ZGU3NzNiYmQ3ZWZlY2RlOWQxZWM3NzNjZjFmMjcyMWU3Li5iY2UxYTdkZDU3
MTdhZTI2ZGVkMGNkZjk3ZTc3ZDg2MjIyNTkzOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCkBAIC01MSw2ICs1
MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CiB9OwogCi1PcHRpb25hbDxKU1ZhbHVlPiBh
cnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3coSlNHbG9iYWxPYmplY3QqLCBKU0FycmF5
QnVmZmVyKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CitzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+
IGFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVjdG9yU2xvdyhKU0dsb2JhbE9iamVjdCosIEpTQXJy
YXlCdWZmZXIqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaAppbmRleCA1YmE4M2VhYTg1MjAyYjdhZDhlNTgzYWQx
ODNkYzBiY2UzYjE2ZTQ0Li42MmQ3NDdjOTBjZWYzM2YyNDY3ZDBmZGQwMDczOGU1MGY5YTFhZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTUwLDcgKzUwLDcgQEAgQUxXQVlTX0lO
TElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBBcnJheUIKICAgICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclNwZWNp
ZXNXYXRjaHBvaW50U2V0KG1vZGUpLnN0YXRlT25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0K
IAotQUxXQVlTX0lOTElORSBPcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1ZmZlclNwZWNpZXNDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0FycmF5QnVmZmVyKiB0aGlz
T2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6
b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCwgQXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCAwY2NmNjQy
MWI0NjdmOWM2MWNhZjFmNmI0OTFmZDQ3OTliNjc5ZTY4Li42NjZjNTQyNDc3N2EyODc3MmM3YWVk
ZmQyNGJjZDBhYTUzNzllOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0
aCgpKTsgfQogICAgIAogICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7Ci0gICAgaW5s
aW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCA1YjE3MTA1NjFj
NjFmNzFjNzVlNWM4YzRjOTAzMDc1NmZkZjNhMzMwLi5kOTViNDc4ODBlYWY3Y2Y0MmNhNTIzOTQz
NDA2YTFmZjQ5ZDFiN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtMTE1LDkgKzExNSw5IEBAIGlu
bGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiAgICAgcmV0dXJu
IGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOwogfQogCi1pbmxpbmUgT3B0aW9u
YWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9m
ZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJl
bnRUaHJlYWQsIE9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldElt
cGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CiB9CiAKIGlu
bGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVk
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAppbmRleCAwMGFiYjk5MjVmNzE2MzI0ZTQ4MmUxNzZhOGY0Yzc5ZmRmZWMwYThl
Li4xNzUzNzExZjRiYjY5MGJlM2E5MjMzYzBiMzIzMmE4MzE2OTIxMTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBK
U0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmln
SW50KiB4LCBkb3VibGUgeSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+Ci1P
cHRpb25hbDxKU0JpZ0ludDo6RGlnaXQ+IEpTQmlnSW50Ojp0b1NoaWZ0QW1vdW50KEJpZ0ludElt
cGwgeCkKK3N0ZDo6b3B0aW9uYWw8SlNCaWdJbnQ6OkRpZ2l0PiBKU0JpZ0ludDo6dG9TaGlmdEFt
b3VudChCaWdJbnRJbXBsIHgpCiB7CiAgICAgaWYgKHgubGVuZ3RoKCkgPiAxKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzA3NCw3ICszMDc0LDcgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgY29tcHV0ZUhhc2goSlNCaWdJbnQ6OkRpZ2l0KiBkaWdpdHMsIHVuc2ln
bmVkIGxlbmcKICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKIH0KIAotT3B0aW9uYWw8dW5zaWdu
ZWQ+IEpTQmlnSW50Ojpjb25jdXJyZW50SGFzaCgpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBK
U0JpZ0ludDo6Y29uY3VycmVudEhhc2goKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgSlNC
aWdJbnQ6OmNvbmN1cnJlbnRIYXNoIGJ5IGluc2VydGluZyByaWdodCBzdG9yZSBiYXJyaWVycy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODAxCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA2NjVlZDFkNGMxMDU2
ZjkzMjQzNDhiZjQ4Yjc3MzZmZWNhZTNjNmIyLi44OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcx
ZWRjYjMzNGRmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
QEAgLTQ1NCw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCaWdJ
bnQqIHJpZ2h0VHJpbShKU0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
QmlnSW50KiB0cnlSaWdodFRyaW0oVk0mKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPHVuc2lnbmVkPiBjb25jdXJyZW50SGFzaCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbmN1cnJlbnRIYXNoKCk7CiAgICAgdW5zaWduZWQgaGFz
aCgpCiAgICAgewogICAgICAgICBpZiAobV9oYXNoKQpAQCAtNTkyLDcgKzU5Miw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIEltcGxSZXN1bHQgcmlnaHRTaGlmdEJ5TWF4aW11bShKU0dsb2JhbE9i
amVjdCosIGJvb2wgc2lnbik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hpZnRBbW91bnQoQmlnSW50SW1wbCB4KTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaWdpdD4gdG9TaGlmdEFtb3VudChCaWdJbnRJbXBs
IHgpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CiAgICAgc3RhdGljIElt
cGxSZXN1bHQgYXNJbnROSW1wbChKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90LCBCaWdJbnRJbXBs
KTsKQEAgLTYwNSw3ICs2MDUsNyBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPHVpbnQ2NF90PiB0b1VpbnQ2NEhlYXAoSlNCaWdJ
bnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7CiAKICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZkRhdGEoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKaW5kZXggYTk3NGQ5NWM3YzcyYjQwNGZjN2EzNmJmMGNmMWVlNjZhNGY4OWE5
ZC4uMTEyMDQ3ZWVkZWVmZjRkODNlMjlkYmY2ZTNiOWVkNDM5ZTBjOGYyNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
ZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxs
IGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBKU1Zh
bHVlOjp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+
IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBi
b29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSkpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMg
aW4gdGhlIHByb3RvdHlwZSBjaGFpbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCmluZGV4IDNlZTZjYmIyNTU0MWM5NWU0Yzc3NmFhNTBmZmY1ZTZiYTU2NDViZGYu
LjhmNGQyMDJlNjMwOWViZDkzYTJlNGNiMTNkMmJjYjA5ODUyZmVjZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIxOSw4ICsyMTksOCBAQCBwdWJs
aWM6CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQz
MigpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0cnlHZXRBc1VpbnQzMkluZGV4KCk7
Ci0gICAgT3B0aW9uYWw8aW50MzJfdD4gdHJ5R2V0QXNJbnQzMigpOworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IHRyeUdldEFzVWludDMySW5kZXgoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IHRyeUdldEFzSW50MzIoKTsKICAgICBpbnQ2NF90IGFzQW55SW50KCkgY29uc3Q7CiAg
ICAgdWludDMyX3QgYXNVSW50MzJBc0FueUludCgpIGNvbnN0OwogICAgIGludDMyX3QgYXNJbnQz
MkFzQW55SW50KCkgY29uc3Q7CkBAIC0yODIsNyArMjgyLDcgQEAgcHVibGljOgogICAgIEpTQmln
SW50KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24g
aWYgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCi0gICAgT3B0aW9uYWw8ZG91
YmxlPiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CiAKICAgICBKU1N0cmluZyogdG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVy
bnMgdGhlIGVtcHR5IHN0cmluZy4KICAgICBKU1N0cmluZyogdG9TdHJpbmdPck51bGwoSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgbnVsbCwgdG8g
bWFrZSBleGNlcHRpb24gY2hlY2tzIGZhc3Rlci4KQEAgLTMwMyw3ICszMDMsNyBAQCBwdWJsaWM6
CiAgICAgaW50NjRfdCB0b0JpZ0ludDY0KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWlu
dDY0X3QgdG9CaWdVSW50NjQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgIE9wdGlvbmFs
PHVpbnQzMl90PiB0b1VJbnQzMkFmdGVyVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdG9VSW50MzJBZnRlclRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbnMg
KHRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgV2ViQ29yZTsKICAgICAvLyBzaW5n
bGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJlc2VudGF0aW9uIHVzZWQgaW4gSlMgb3Ig
SlNDKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IDg4MzRkZDg3MDk1YmMyZGJjN2Q0NDIwNTdkYjUwY2QxN2UxYTMwMjkuLjM0
ZWEyMTQ2MGEwZGI0NWE3ZDAyNjA3YWY3YmFlNDVhNzczYzViMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTA3LDcgKzEw
Nyw3IEBAIGlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogICAgIHJldHVy
biBpc0ludDMyKCkgPyBhc0ludDMyKCkgOiBhc0RvdWJsZSgpOwogfQogCi1pbmxpbmUgT3B0aW9u
YWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWludDMySW5kZXgoKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWludDMySW5kZXgoKQogewogICAg
IGlmIChpc1VJbnQzMigpKSB7CiAgICAgICAgIEFTU0VSVChpc0luZGV4KGFzVUludDMyKCkpKTsK
QEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRy
eUdldEFzVWludDMySW5kZXgoKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGlu
ZSBPcHRpb25hbDxpbnQzMl90PiBKU1ZhbHVlOjp0cnlHZXRBc0ludDMyKCkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzSW50MzIoKQogewogICAgIGlmIChp
c0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7CkBAIC04NDksNyArODQ5LDcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRvVUludDMyQWZ0ZXJUb051
bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gSlNWYWx1ZTo6dG9VSW50MzJBZnRlclRvTnVtZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBjY2ZmNGE4YjYwZTlh
YmUzYTRjNzdlNWYxMjNmNTVhYWI2ZTdmMjhjLi42OGMwZTViYzJlYTA0YjMwMmRjNDNkMjQ4YWI1
MTg4ZjRiM2UzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAt
MTQ5LDcgKzE0OSw3IEBAIGlubGluZSBib29sIGluaGVyaXRzSlNUeXBlSW1wbChWTSYgdm0sIEZy
b20qIGZyb20sIEpTVHlwZVJhbmdlIHJhbmdlKQogLy8gd2F5IHRvIHNheSB0aGF0IHdlIGFyZSBv
dmVybG9hZGluZyBqdXN0IHRoZSBmaXJzdCB0eXBlIGluIGEgdGVtcGxhdGUgbGlzdC4uLgogdGVt
cGxhdGU8dHlwZW5hbWUgVGFyZ2V0Pgogc3RydWN0IEluaGVyaXRzVHJhaXRzIHsKLSAgICBzdGF0
aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBzdGQ6Om51bGxv
cHQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5
cGVSYW5nZSB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CiAg
ICAgc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1
cm4gRmluYWxUeXBlRGlzcGF0Y2hlcjxzdGQ6OmlzX2ZpbmFsPFRhcmdldD46OnZhbHVlPjo6dGVt
cGxhdGUgaW5oZXJpdHNHZW5lcmljPFRhcmdldD4odm0sIGZyb20pOyB9CiB9OwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHN0cnVjdCBJbmhlcml0c1RyYWl0cyB7CiAjZGVmaW5lIERFRklORV9UUkFJVFNf
Rk9SX0pTX1RZUEVfT1ZFUkxPQUQoY2xhc3NOYW1lLCBmaXJzdEpTVHlwZSwgbGFzdEpTVHlwZSkg
XAogICAgIHRlbXBsYXRlPD4gXAogICAgIHN0cnVjdCBJbmhlcml0c1RyYWl0czxjbGFzc05hbWU+
IHsgXAotICAgICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBl
UmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oZmlyc3RKU1R5cGUpLCBzdGF0aWNfY2FzdDxK
U1R5cGU+KGxhc3RKU1R5cGUpIH0gfTsgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihm
aXJzdEpTVHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4obGFzdEpTVHlwZSkgfSB9OyBcCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+IFwKICAgICAgICAgc3RhdGljIGlubGluZSBib29s
IGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBs
PGNsYXNzTmFtZSwgRnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IFwKICAgICB9OyBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24uY3BwCmluZGV4IDQ1YTllZmZmZDY5YjNhYTdkNTM5ODAxMzBhZjkxOTkxYmViZDUz
N2UuLjNhMzE0MTRlNTA0NmQ0ZWM4ODkzNjY1NjA4Njg3MmNkOWY1ZDVlOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21H
ZXR0ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNv
ZGUodGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKSk7CiB9
CiAKLUpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mIHZt
LCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFu
bm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIHN0
ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogICAgIDog
QmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3By
b3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKQog
ICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAtNTksNyArNTksNyBAQCBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YQogewogfQogCi1KU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyIGdldHRl
ciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0
eU5hbWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogewogICAgIEFTU0VSVChnZXR0ZXIpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3Vz
dG9tR2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3Ry
aW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaAppbmRleCAyMzhiOWEw
MzA1ZDk3OTQ2MzYxMWU3OGQzZjZkMmVhOWNhYmJlZDc0Li4zNjYwYmRmNWNkZDQ1ODAzZmQ4YzQx
NDJmYTZhNjE5OWNhZmIxMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCkBAIC01MSwyMSArNTEsMjEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFt
ZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gPSBzdGQ6Om51bGxvcHQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1
dGVBbm5vdGF0aW9uPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eU5hbWU7IH0KICAgICBDdXN0b21GdW5jdGlvblBvaW50ZXIgZ2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gbV9nZXR0ZXI7IH07CiAgICAgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyIGN1c3Rv
bUZ1bmN0aW9uUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyOyB9OwotICAgIE9wdGlv
bmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9tQXR0cmlidXRlOyB9OworICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3Rh
dGlvbj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGU7IH07CiAK
IHByaXZhdGU6Ci0gICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEN1
c3RvbUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOwor
ICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBDdXN0b21GdW5jdGlv
blBvaW50ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOwogCiAgICAg
SWRlbnRpZmllciBtX3Byb3BlcnR5TmFtZTsKICAgICBDdXN0b21GdW5jdGlvblBvaW50ZXIgbV9n
ZXR0ZXI7Ci0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gbV9kb21BdHRyaWJ1
dGU7CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJp
YnV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZGJlMjEx
ZDk2N2ViODM0N2U2ZTQ2ZDQ4MmM0M2Y4MWUyYTRjNTY1Mi4uNDVhNzg0MTk4MDk0Njc1NWU5OWVl
OWE4NTlmNzg1MGVjNTI2MzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xNzgsNyArMTc4LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJu
IHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29l
cmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZTlkZjg0
MzVlNjk4ZTJjMDg1MTY2YmVjYTc1NWZkOGQ2ZGVhMmFhMS4uZDI1ODQwNjdlODNmZGYyNjlmYzBh
OGRjZjlkMDFlMmQ0NGRhNDA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIq
IGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBpZiAoc291cmNlLT5pc1NoYXJlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIE9wdGlvbmFsPEpTVmFsdWU+IHNwZWNpZXMgPSBhcnJheUJ1ZmZlclNwZWNpZXNDb25z
dHJ1Y3RvcihnbG9iYWxPYmplY3QsIHNvdXJjZSwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCk7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiBzcGVjaWVzID0gYXJyYXlCdWZmZXJT
cGVjaWVzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OkRlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogICAgIGlmICghc3BlY2llcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDMsNyAr
MTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVy
SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Vmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQs
IE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1l
bnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzYsNyArMjc2LDcgQEAgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFs
T2JqZWN0KgogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZm
ZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJi
eXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBmYTI1Y2Q4MmFkZDNl
NzcxZjkwNzYzNTdjYjkzMmRhNjkwMTU3YjM3Li40NTAyMzg3OTJkMTAzYWEyMDljZmEzODM3MDlk
M2UxZjU0OTcxYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzU1LDcgKzM1
NSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3Bl
cnR5U2xvdCgKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+PiwgImdldE93blByb3BlcnR5U2xvdEJ5SW5kZXggbXVzdCBub3Qg
YmUgb3ZlcnJpZGRlbiIpOwogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIH0K
QEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpwdXQoCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKIAotICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj4+LCAicHV0QnlJbmRleCBtdXN0IG5vdCBiZSBvdmVycmlkZGVuIik7CiAg
ICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTM5Niw3ICsz
OTYsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Q
cm9wZXJ0eSgKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqPihvYmplY3QpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBhdXRv
IHRocm93VHlwZUVycm9ySWZOZWVkZWQgPSBbJl0gKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkg
LT4gYm9vbCB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcnJvck1lc3Nh
Z2UsICppbmRleCkpOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2Vs
bCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19m
aW5hbF92PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiwgImRlbGV0ZVByb3BlcnR5
QnlJbmRleCBtdXN0IG5vdCBiZSBvdmVycmlkZGVuIik7CiAgICAgICAgIHJldHVybiBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCA1OTEzZmM2MDE3YTZjMGJiMjhjZTMyMzRiZmU4MzczNTExOGQ0YzQ2Li5jNDVhMGY5
MzE2ZGFmMGFjOThiMTMzNjM2MTlkNDk4NWQzNDUxYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU2Myw3ICs1NjMsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBS
dW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7CiAgICAgV2Vha1B0cjxDb25zb2xlQ2xpZW50PiBt
X2NvbnNvbGVDbGllbnQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3QgV2Vha0N1c3RvbUdldHRlck9yU2V0dGVy
SGFzaCB7CkBAIC02MTgsOCArNjE4LDggQEAgcHVibGljOgogICAgIFdhdGNocG9pbnRTZXQmIGVu
c3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsK
ICNlbmRpZgogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YWNrVHJhY2VMaW1pdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhY2tUcmFjZUxpbWl0OyB9Ci0gICAgdm9pZCBzZXRTdGFja1RyYWNlTGlt
aXQoT3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7IG1fc3RhY2tUcmFjZUxpbWl0ID0gdmFsdWU7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFja1RyYWNlTGltaXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YWNrVHJhY2VMaW1pdDsgfQorICAgIHZvaWQgc2V0U3RhY2tUcmFjZUxpbWl0
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7IG1fc3RhY2tUcmFjZUxpbWl0ID0gdmFs
dWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTR2xv
YmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUq
ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZTY2YTA4OWU5OTE4OWJlMTE4NDZj
NGQ1MzI3ZTgzYjk3ZGMyZjAxNy4uYWRhZDgyMWZlYjU2M2EwNGI2MGFlZmQxMDI1Mzc2NDk1M2I3
OGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihnbG9iYWxGdW5jQ29weURhdGFQcm9wZXJ0aWVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiAKICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSBudWxscHRyOwogICAgIGNvbnN0IElkZW50aWZpZXJTZXQqIGV4Y2x1ZGVkU2V0ID0gbnVsbHB0
cjsKLSAgICBPcHRpb25hbDxJZGVudGlmaWVyU2V0PiBuZXdseUNyZWF0ZWRTZXQ7CisgICAgc3Rk
OjpvcHRpb25hbDxJZGVudGlmaWVyU2V0PiBuZXdseUNyZWF0ZWRTZXQ7CiAgICAgaWYgKGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID4gMSkgewogICAgICAgICBpbnQzMl90IHNldEluZGV4ID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5hc1VJbnQzMkFzQW55SW50KCk7CiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ2V0Q2FsbGVyQ29kZUJsb2NrKGNhbGxGcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDZmYmFhMDcyYjAzMDlk
YjMxNTk4YjY5ZmQyYWNiYWJiNTZmYzFkYzEuLjdiY2M1YmQzMjJmZGRmMWIwZDMxYjUzMWMzMDZh
Y2U3MTNjYjVlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05
NCw3ICs5NCw3IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KIAot
ICAgIE9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25lclRocmVhZCgpIGNvbnN0CisgICAgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJUaHJlYWQoKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKG1faGFzT3duZXJUaHJlYWQpCiAgICAgICAgICAgICByZXR1cm4gbV9vd25lclRo
cmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA3
NjFjMzZlYTM4MGQ5YTU5ZGU5OTBhMjY3YzBmZmRlOTE3ZGNhODk2Li5mYmI2Y2NjOTM0ODhhM2Fl
OWViOTY1MzBiNGIyMDU0ZDI4YTEyNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC0xODc3LDcgKzE4NzcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RBY2Nlc3NvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcAogewogICAgIEFTU0VSVChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBhY2Nlc3NvciwgYXR0cmlidXRlcywgUHV0RGlyZWN0
SW5kZXhMaWtlUHV0RGlyZWN0KTsKIAogICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRl
cyk7CkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25TdGF0
aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hF
bnRyeT4gSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cnVjdHVyZTo6UHJvcGVydHlI
YXNoRW50cnk+IEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5m
aW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKIH0KQEAgLTM1MDIsNyArMzUwMiw3
IEBAIHN0cnVjdCBXZWFrQ3VzdG9tR2V0dGVyT3JTZXR0ZXJIYXNoVHJhbnNsYXRvciB7CiAgICAg
fQogfTsKIAotc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRl
ckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorc3RhdGljIEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5j
IGdldFZhbHVlRnVuYywgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21B
dHRyaWJ1dGUpCiB7CiAgICAgdXNpbmcgVHJhbnNsYXRvciA9IFdlYWtDdXN0b21HZXR0ZXJPclNl
dHRlckhhc2hUcmFuc2xhdG9yPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+OwogCkBAIC0zNTU4LDcg
KzM1NTgsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogCiBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAg
IHJldHVybiBwdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVl
KTsKICAgICByZXR1cm4gcHV0RGlyZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7CiB9CkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVP
d25Ob25JbmRleFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TgogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQog
ewogICAgIC8vIElmIGl0J3MgYW4gYXJyYXkgaW5kZXgsIHRoZW4gdXNlIHRoZSBpbmRleGVkIHBy
b3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAvLyBjLiBMZXQgc3Vj
Y2VlZGVkIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmluZU93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyBQLCBEZXNjLCBh
bmQgZmFsc2UgYXMgYXJndW1lbnRzLgogICAgICAgICAvLyBkLiBSZWplY3QgaWYgc3VjY2VlZGVk
IGlzIGZhbHNlLgogICAgICAgICAvLyBlLiBJZiBpbmRleCA+PSBvbGRMZW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRiMGQ5YzAxNThiODU3YzBlZGM5NDIy
ZWZlMzExNjNkYjgyOTI5YzAuLjZjMDIyOTA1NWU4MzcyNjNlNDBkNTBhMWQ5MTYwNjVkZDRiODg5
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTU3LDcg
Kzk1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUJlUHJvdG90eXBlKCkgY29uc3Q7CiAgICAg
dm9pZCBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIE9wdGlvbmFsPFN0cnVjdHVyZTo6UHJv
cGVydHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudHJ5PiBm
aW5kUHJvcGVydHlIYXNoRW50cnkoVk0mLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtMTQzMSw3ICsxNDMxLDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsKEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2IKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZt
KTsKICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBn
bG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
QEAgLTE0NjEsNyArMTQ2MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJv
cGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgICAg
ICAvLyBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCksIHNvIHdlIGNhbm5vdCBzYWZlbHkgY2Fs
bCB0aGUgb3ZlcnJpZGRlbiBnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgICAgIC8vIChsZXN0
IHdlIHJldHVybiBhIHByb3BlcnR5IGZyb20gYSBwcm90b3R5cGUgdGhhdCBpcyBzaGFkb3dlZCku
IENoZWNrIG5vdyBmb3IgYW4gaW5kZXgsCiAgICAgICAgICAgICAvLyBpZiBzbyB3ZSBuZWVkIHRv
IHN0YXJ0IGFmcmVzaCBmcm9tIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVj
dCwgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICAvLyBTYWZlIHRvIGNvbnRpbnVl
IHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0
eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBhcnNpbmcgdGhlIGludCBhZ2Fpbi4KQEAg
LTE0ODMsNyArMTQ4Myw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgIG9iamVj
dCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAg
IHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGU2YWVkNzY0MDgwN2M1ZmU1MTdkYzljYmJhYmJl
Yzg1ZThkMWY1OWUuLjRmM2E3NDNlMjZlM2YzNTMzZTVmNDc4NzBmZjMyOTJjNDk4ZThhZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBA
IC0yNjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVG
b3JKU09iamVjdChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KgogCiAgICAgLy8gVHJ5IGlu
ZGV4ZWQgcHV0IGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgc2luY2Ug
bG9hZHMgb24gcHJvcGVydHkgbmFtZXMgdGhhdCBhcHBlYXIgbGlrZQogICAgIC8vIHZhbGlkIGlu
ZGljZXMgd2lsbCBuZXZlciBsb29rIGluIHRoZSBuYW1lZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5s
aW5lKHZtLCBwcm9wZXJ0eU5hbWUpKSB7CkBAIC01MjAsNyArNTIwLDcgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIHZh
bGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgudmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKICAg
ICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIDAsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCmluZGV4IDIxZDBiY2ZiMzAzYTA2NjAzNjUzNWY3YTJmYWExYTUwY2Y4
N2UwOTcuLjRiOGZjZjZkZWU0NTgyZTEzYTRkYzVkZTI2YmI1NGI3ZGExY2JmYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAgLTE5
MCw3ICsxOTAsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1lcihK
U1J1bkxvb3BUaW1lciYgdGltZXIpCiAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6
bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNl
RXBvY2goKSkpOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdl
cjo6dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYgdGltZXIpCitzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRp
bWVyJiB0aW1lcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byBp
dGVyID0gbV9tYXBwaW5nLmZpbmQodGltZXIubV9hcGlMb2NrKTsKQEAgLTIzOSw3ICsyMzksNyBA
QCBKU1J1bkxvb3BUaW1lcjo6fkpTUnVuTG9vcFRpbWVyKCkKIHsKIH0KIAotT3B0aW9uYWw8U2Vj
b25kcz4gSlNSdW5Mb29wVGltZXI6OnRpbWVVbnRpbEZpcmUoKQorc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiBKU1J1bkxvb3BUaW1lcjo6dGltZVVudGlsRmlyZSgpCiB7CiAgICAgcmV0dXJuIE1hbmFn
ZXI6OnNoYXJlZCgpLnRpbWVVbnRpbEZpcmUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKaW5kZXggYTM1NzczOWEzMTBmNGIxY2Vl
MDQ4ODAwMzdkYmUyOWI4MmY0YTcyMS4uNDJlMmQyZjY5ODdmZjkwMTBmNzc1MWQ5YTdjMGJmYzY0
YWEzOWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5M
b29wVGltZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzY2hlZHVsZVRp
bWVyKEpTUnVuTG9vcFRpbWVyJiwgU2Vjb25kcyBuZXh0RmlyZVRpbWUpOwogICAgICAgICB2b2lk
IGNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJik7CiAKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHRpbWVVbnRpbEZpcmUoSlNSdW5Mb29wVGltZXImKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIExvY2sgbV9sb2NrOwpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRUaW1lclNldE5vdGlmaWNhdGlvbihUaW1lck5vdGlmaWNh
dGlvbkNhbGxiYWNrKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZVRpbWVyU2V0
Tm90aWZpY2F0aW9uKFRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spOwogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZSgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZSgpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHNfZGVjYWRlIHsgNjAgKiA2MCAq
IDI0ICogMzY1ICogMTAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAppbmRleCBjNGQzODViMmFjY2I1NzY0MzBjYjc4NDA5ODQzMDAzNTQ3NDk0NTA0Li5hNWNl
N2QxOGViYmM2YzNkZDg1ZGE5MzNmNjk2NjAwYzA0NzVjNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsK
ICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IGxlbmd0aCgpKSB7CiAgICAgICAgIGRl
c2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXRJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVl
KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggM2Y1OWJhYWM4ZDRlOTVlYjYxNjZhODQ3OGM1NzNlNmU0MjJl
ZTBhNS4uNjY5MmYwNTViM2Y4YWUwNTE3MmQ4Yzg4YzQ5OTIxZjlhNGVmMTcyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC05NDYsNyArOTQ2LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
OwogICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgbGVuZ3RoKCkpIHsKICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGdldEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggOWRhZGFmYzg0ZGY3
MTU4YjM4ZWE2Y2Q3ODY4MTE0OTViMzRmZGY1My4uYzg3ZWJhMDk3MGNkMTNkYzA2ZTM3NTExYmUy
Y2YyMzA0MjE5M2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKQEAgLTEyMDIsNyArMTIwMiw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNl
cjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxPckNvZGVCbG9jayA/
IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQo
KSA6IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2subGFzdCgpLnB1dCht
X2dsb2JhbE9iamVjdCwgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgoaWRlbnQpKQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZh
bHVlKCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCmluZGV4IGRk
MjliMDNlY2NhOThjNjBmM2FiZmUyNGJiZWRlMWUyYWFkOTMyZTUuLmFmMGU1ZTlhMDliODQyYmI2
NDk2ZDgxNTU2NDhhNjExNDNmZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFjaGluZUNvbnRleHQuaApAQCAtNDUsNyArNDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUID0gdm9pZCo+IFQgZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHZvaWQgc2V0RnJhbWVQb2ludGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJiwgVCk7CiBpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVn
aXN0ZXJzTFJQdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwog
aW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOwotaW5saW5lIE9wdGlvbmFsPE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPj4gaW5zdHJ1Y3Rpb25Qb2lu
dGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CitpbmxpbmUgc3RkOjpvcHRpb25hbDxNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4+IGluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogaW5saW5lIHZvaWQgc2V0SW5zdHJ1
Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENG
dW5jdGlvblB0clRhZz4pOwogCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9p
bnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
CiB9CiAjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQogCi1p
bmxpbmUgT3B0aW9uYWw8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQ
dHJUYWc+PiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdp
c3RlcnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKIHsKICNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKICAg
ICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19QQ19XSVRIX1BST0ZJ
TEUocmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5k
ZXggNjMxNzE3ZjkwYTQ5MTMwNmU0NTRjMjcxMTczOGJmMmVlYTRmMDZhNi4uYWYyODI5YWJiY2Uz
ZDcyOGJmMzBiZjk2MjUxMDc1MTkyOWNlODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhDb21tb24uaApAQCAtMTc4LDcgKzE3OCw3IEBAIEFMV0FZU19JTkxJTkUgY29u
c3RleHByIFVDUFVTdHJpY3RJbnQzMiB0b1VDUFVTdHJpY3RJbnQzMihpbnQzMl90IHZhbHVlKQog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxVQ1BVU3RyaWN0SW50MzI+KHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih2YWx1ZSkpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2Nh
bEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQogewogICAg
IC8vIE5vICJ3ZWlyZCIgbnVtYmVycyAoTmFOLCBEZW5vcm1hbCwgZXRjKS4KICAgICBpZiAoIWNv
bnN0YW50IHx8ICFzdGQ6Omlzbm9ybWFsKGNvbnN0YW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCBiMTdmNTkzNmZl
ZmM5NjM4ZWNmNDlhZWViZWM4NzBjMDg2NGNlYmM4Li45Y2E0NGQyYzQ2N2VhNTg3ZjhiN2JlN2Rj
NjFjYWY5MWY2NThjYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05MTksNyArOTE5LDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9ySXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzYW1lVmFs
dWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKSkpOwogfQogCi1KU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0
eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUs
IE9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5kPiBraW5kKQorSlNBcnJheSogb3duUHJv
cGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZSBkb250RW51bVByb3BlcnRpZXNNb2RlLCBzdGQ6Om9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFt
ZXNLaW5kPiBraW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA1YzI4Yjc5YWMxOTM4
OGNmYmZkYzBiYjVhYzYyZDBjYjA5MGRkOWQxLi43NGUwN2EwNmNjMTM2YWE4MGU4ZTQ3ZTNhYTBh
ZmU5NmFmMDIwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yU2VhbChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBjb25zdCBJ
ZGVudGlmaWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ycyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7Ci1KU0FycmF5KiBvd25Qcm9wZXJ0
eUtleXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRF
bnVtUHJvcGVydGllc01vZGUsIE9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5kPik7CitK
U0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFByb3Bl
cnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUsIHN0ZDo6b3B0aW9uYWw8Q2FjaGVk
UHJvcGVydHlOYW1lc0tpbmQ+KTsKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvcklzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAppbmRleCAy
ZDg0ZGRkNWJhZWMwYzkzOTI0NTI2Nzg3MTExNGZlZGFhM2Q3Y2VkLi4wYWM3Yzg0ZjRiYjM5MWRh
M2U5OTNhMDMxZDYxMjhiZDNkZDY3Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCkBAIC01MCw4ICs1
MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQo
SlNPYmplY3QqKTsKIAogICAgIFZNJiBtX3ZtOwotICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1f
ZGlzYWxsb3dHQzsKLSAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVu
dHJ5OworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAgIHN0
ZDo6b3B0aW9uYWw8RGlzYWxsb3dWTUVudHJ5PiBtX2Rpc2FsbG93Vk1FbnRyeTsKICAgICBKU09i
amVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCA2ODZjNjZiMzlmNjM4YzY3
ZWMzODgxMDk0Y2E0MzFlM2NjNzVjMmIyLi5iOTkxNjQ2ODhkMzE3ZDE5ODRlMmQwMzk0OTFhMGJm
M2U3ZTA3MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIG9iamVjdFByb3RvdHlwZUhh
c093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZSwg
YwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0p
OwogICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUgPSB2bS5lbnN1
cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7Ci0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9
IGhhc093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpIHsKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5n
ZXQoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIEFTU0VSVCgqcmVzdWx0ID09
IHRoaXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7
CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKICAg
ICAgICAgcmV0dXJuICpyZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgKaW5kZXggMzlkNDIwM2E1MDkzMDNiMzc3ZWUxNWZkY2RlZGFmZGIxZjNjNGQ3NC4u
Y2U3MzBmM2JmOTY1ODQ3YzQ4ZDk0MWI1NmNkYmMyZTVmYmZiYzdmMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODAxLDkgKzgwMSw5IEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc1VSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBsZWZ0LCBKU1ZhCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBsZWZ0VWludDMyID0gbGVmdC50b1VJbnQzMkFmdGVyVG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbGVmdFVpbnQzMiA9IGxlZnQudG9V
SW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHJpZ2h0VWludDMyID0gcmln
aHQudG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IHJpZ2h0VWludDMyID0gcmlnaHQudG9VSW50MzJBZnRlclRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJpZ2h0VWludDMyKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCBjY2M5MzBjM2Y5NjFkZWM1Nzk3
MmJlMWY1YWFkNmQ3MjJmNzJmNDg0Li41MmY0MjQxMWJhNTY5ZDlmYjc5NGYwOTA5NTE0NWU0OTMz
MTVhNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAt
NTksMTAgKzU5LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LU9wdGlvbmFsPFQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZyk7CitzdGQ6Om9wdGlvbmFsPFQ+
IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZyk7CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlv
bnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFs
PE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY21wKHN0cmlu
ZywgIjEiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFs
PE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB9CiAKIHRl
bXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3QgY2hh
ciogc3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBpbnQzMl90IHZhbHVlOwogICAgIGlmIChzc2NhbmYo
c3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDEpCkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPE9w
dGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogfQogCiB0ZW1w
bGF0ZTw+Ci1PcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQ+IHBhcnNlKGNvbnN0IGNo
YXIqIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKHNz
Y2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMSkKQEAgLTkxLDcgKzkxLDcgQEAgT3B0aW9u
YWw8T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAK
ICNpZiBDUFUoQUREUkVTUzY0KSB8fCBPUyhEQVJXSU4pCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxP
cHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpvcHRp
b25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewog
ICAgIHNpemVfdCB2YWx1ZTsKICAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkg
PT0gMSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogI2VuZGlmIC8vIENQVShBRERSRVNTNjQpIHx8IE9T
KERBUldJTikKIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZT4g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6
RG91YmxlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgZG91YmxlIHZhbHVlOwog
ICAgIGlmIChzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxKQpAQCAtMTEwLDcgKzEx
MCw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpEb3VibGU+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlv
blJhbmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9wdGlvbnNT
dG9yYWdlOjpPcHRpb25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewogICAgIE9w
dGlvblJhbmdlIHJhbmdlOwogICAgIGlmIChyYW5nZS5pbml0KHN0cmluZykpCkBAIC0xMTksNyAr
MTE5LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblJhbmdlPiBwYXJzZShjb25z
dCBjaGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdl
OjpPcHRpb25TdHJpbmc+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZz4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQog
ewogICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gbnVsbHB0cjsKICAgICBpZiAoIXN0cmxlbihzdHJp
bmcpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRpb25T
dHJpbmc+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9u
YWw8T3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykK
K3N0ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNo
YXIqIHN0cmluZykKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLCAibm9uZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIm5v
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCAh
c3RyY21wKHN0cmluZywgIjAiKSkKICAgICAgICAgcmV0dXJuIEdDTG9nZ2luZzo6Tm9uZTsKQEAg
LTE4Myw3ICsxODMsNyBAQCBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJp
YWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKICAgICBpZiAoYXZhaWxhYmxlKSB7Ci0gICAgICAgIE9wdGlvbmFsPFQ+IHZh
bHVlID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IHZh
bHVlID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOwogICAgICAgICBpZiAodmFsdWUpIHsKICAgICAg
ICAgICAgIHZhcmlhYmxlID0gdmFsdWUudmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtODQ0LDcgKzg0NCw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFz
KGNvbnN0IGNoYXIqIGFyZykKICAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5
XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCiAgICAgICAgICAgICAmJiAhaXNBdmFpbGFi
bGUobmFtZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6dHlwZV8+IHZhbHVlOyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6dHlw
ZV8+IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdmFsdWUgPSBwYXJzZTxP
cHRpb25zU3RvcmFnZTo6dHlwZV8+KHZhbHVlU3RyKTsgICAgICAgICAgICBcCiAgICAgICAgIGlm
ICh2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlLnZhbHVlKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTg2Myw3ICs4NjMsNyBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlv
bldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnZl
cnRCb29sT3B0aW9uVmFsdWUoY29uc3QgY2hhciogdmFsdWVTdHIpCiB7Ci0gICAgT3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6OkJvb2w+IHZhbHVlID0gcGFyc2U8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+
KHZhbHVlU3RyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiB2YWx1
ZSA9IHBhcnNlPE9wdGlvbnNTdG9yYWdlOjpCb29sPih2YWx1ZVN0cik7CiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCkgPyAi
ZmFsc2UiIDogInRydWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuaAppbmRleCA1ZjE2YjFhMmEwYmExODgzNmYxZWIwZDU0N2ZlMWNk
NWY5ZjllOGI5Li43OTdiZWMwNGE4ZTk0MmNlNjhmOGFkYjU5N2EwYzRhODllZDRjNDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aApAQCAtMTAwLDE2ICsxMDAsMTYgQEAgaW5saW5lIFByb3BlcnR5RGVzY3JpcHRvciB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRlciwgSlMKICAgICAvLyBX
ZSBhc3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZS4KICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzYzsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlID0gYXR0
cmlidXRlcy5lbnVtZXJhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVy
YWJsZSA9IGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKQogICAgICAgICBkZXNjLnNldEVudW1lcmFi
bGUoZW51bWVyYWJsZS52YWx1ZSgpKTsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBjb25maWd1
cmFibGUgPSBhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpCiAgICAgICAg
IGRlc2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3VyYWJsZS52YWx1ZSgpKTsKIAogICAgIGlmIChh
dHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCiAgICAgICAgIGRlc2Muc2V0VmFsdWUodmFsdWUpOwogCi0g
ICAgaWYgKE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJs
ZSgpKQogICAgICAgICBkZXNjLnNldFdyaXRhYmxlKHdyaXRhYmxlLnZhbHVlKCkpOwogCiAgICAg
aWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZS5oCmluZGV4IDlkNDA1MWM1ZjJmMmE0MGRhM2JlNjNlZmY4MDllNTA4NWZi
OTVlODUuLmUxOTc3NzFlZjFmM2Y4NTMzYTcyODA4NjVjMzI2NGY3ODgyMzYzOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC0xMjIsNyArMTIy
LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1l
IGIpCiAgICAgcmV0dXJuIGEudWlkKCkgIT0gYi51aWQoKTsKIH0KIAotQUxXQVlTX0lOTElORSBP
cHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7
CiAgICAgaWYgKCF1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCmluZGV4IDViMDY0MjJjYmRhZDMyNzAwYTQzNTc5MzkwOTAwOWE4MTVjNGVhOWIuLjNi
YTI3OGM5Yzc4YjdmZWQ5NjUwYjc0NDUyNDhkOTIzZjk0NTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV93YXRjaHBvaW50U2V0OwogICAgIH0KIAotICAgIE9wdGlv
bmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0CisgICAgc3Rk
OjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKG1fYWRkaXRpb25hbERhdGFUeXBlID09IEFkZGl0aW9uYWxEYXRh
VHlwZTo6RE9NQXR0cmlidXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGEu
ZG9tQXR0cmlidXRlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWdu
ZWQgc2NvcGVPZmZzZXQ7CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPE1vZHVsZU5hbWVzcGFjZVNs
b3Q+IG1vZHVsZU5hbWVzcGFjZVNsb3QoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8TW9kdWxl
TmFtZXNwYWNlU2xvdD4gbW9kdWxlTmFtZXNwYWNlU2xvdCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUgPT0gQWRkaXRpb25hbERhdGFUeXBlOjpNb2R1bGVO
YW1lc3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gbV9hZGRpdGlvbmFsRGF0YS5tb2R1bGVOYW1l
c3BhY2VTbG90OwpAQCAtMzkwLDcgKzM5MCw3IEBAIHByaXZhdGU6CiAgICAgQWRkaXRpb25hbERh
dGFUeXBlIG1fYWRkaXRpb25hbERhdGFUeXBlIHsgQWRkaXRpb25hbERhdGFUeXBlOjpOb25lIH07
CiAgICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IHsgZmFsc2UgfTsKIHB1YmxpYzoK
LSAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IGRpc2FsbG93Vk1FbnRyeTsKKyAgICBzdGQ6
Om9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxsb3dWTUVudHJ5OwogcHJpdmF0ZToKICAg
ICB1bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAppbmRleCBiMGE3MTM5MGRlMzVjY2M2Y2UwOWU2M2QyY2M0NjRmN2FmYTUyNDU4Li40NDE1OWU1
MGM3OTMzYmYyNTg2MTU2ZjhkODhmNDI2MWQwZTYzZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3
IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShTZWNvbmRzJiBzdGFja1RyYWNl
UHJvY2Vzc2luZ1RpbWUpCiAgICAgICAgIExvY2tlciBtYWNoaW5lVGhyZWFkc0xvY2tlciB7IG1f
dm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmdldExvY2soKSB9OwogICAgICAgICBMb2NrZXIgY29k
ZUJsb2NrU2V0TG9ja2VyIHsgbV92bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9Owog
ICAgICAgICBMb2NrZXIgZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciB7IEV4ZWN1dGFibGVBbGxv
Y2F0b3I6OnNpbmdsZXRvbigpLmdldExvY2soKSB9OwotICAgICAgICBPcHRpb25hbDxMb2NrSG9s
ZGVyPiB3YXNtQ2FsbGVlc0xvY2tlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMb2NrSG9sZGVy
PiB3YXNtQ2FsbGVlc0xvY2tlcjsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGlm
IChXYXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgd2FzbUNhbGxlZXNMb2NrZXIuZW1w
bGFjZShXYXNtOjpDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZ2V0TG9jaygpKTsKQEAgLTYx
NCw3ICs2MTQsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3Rh
Y2tUcmFjZXMoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYg
RU5BQkxFKEpJVCkKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8Q29kZU9yaWdpbj4gY29k
ZU9yaWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQ
QykpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2Rl
T3JpZ2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5wcm9jZXNzZWRTdGFja1RyYWNlLnRvcFBD
KSkgewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2RlT3JpZ2luKHRvcENvZGVCbG9jaywg
KmNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9MYXN0RnJh
bWUodW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXSk7CiAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0SW5kZXggPSAxOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgaWYgKCFz
dGFja1RyYWNlLmZyYW1lcy5zaXplKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBhdXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24gPSBbJl0gKFN0YWNrRnJhbWU6OkNvZGVMb2Nh
dGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGls
YXRpb25Nb2RlKSAtPiBTdHJpbmcgeworICAgICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRp
b24gPSBbJl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjpvcHRpb25h
bDxXYXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21waWxhdGlvbk1vZGUpIC0+IFN0cmluZyB7
CiAgICAgICAgICAgICBTdHJpbmcgYnl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIFN0cmluZyBj
b2RlQmxvY2tIYXNoOwogICAgICAgICAgICAgU3RyaW5nIGppdFR5cGU7CkBAIC0xMTU3LDcgKzEx
NTcsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0
cmVhbSYgb3V0KQogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3RhY2tUcmFjZS5mcmFt
ZXMuZmlyc3QoKTsKICAgICAgICAgYXV0byBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhm
cmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFtZS5zZW1h
bnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7Ci0gICAgICAgIGlmIChP
cHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4g
bWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7CisgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdGFja0ZyYW1lOjpDb2RlTG9jYXRpb24sIENvZGVCbG9j
ayo+PiBtYWNoaW5lTG9jYXRpb24gPSBmcmFtZS5tYWNoaW5lTG9jYXRpb24pIHsKICAgICAgICAg
ICAgIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lRGVzY3JpcHRpb24sICIgPC0t
ICIsCiAgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0aW9uLT5zZWNvbmQtPmluZmVycmVkTmFt
ZSgpLmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihtYWNoaW5lTG9jYXRpb24tPmZpcnN0
LCBzdGQ6Om51bGxvcHQpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCmluZGV4IGQxNWI5YWQ2Mjk3ZjM2YzQ5ZDQyNzU2
MDU0MTMzZTNkMWQxYzc4NTMuLjZiYTkxOWM0MmQyOTNiOTBkYWU3OWNkYzk2MWI3YjIyYjEyNzg0
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmgKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgICAgICBDb2RlQmxvY2sqIHZlcmlm
aWVkQ29kZUJsb2NrIHsgbnVsbHB0ciB9OwogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXg7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBPcHRpb25hbDxXYXNtOjpJ
bmRleE9yTmFtZT4gd2FzbUluZGV4T3JOYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhc206
OkluZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7CiAjZW5kaWYKLSAgICAgICAgT3B0aW9uYWw8
V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdhc206OkNvbXBpbGF0aW9uTW9kZT4gd2FzbUNvbXBpbGF0aW9uTW9kZTsKICAg
ICB9OwogCiAgICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgeyAKQEAgLTkzLDkgKzkzLDkgQEAgcHVi
bGljOgogICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgSlNPYmplY3QqIGNhbGxlZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi0gICAgICAgIE9wdGlvbmFsPFdhc206OkluZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FzbTo6SW5kZXhPck5hbWU+IHdhc21JbmRleE9yTmFt
ZTsKICNlbmRpZgotICAgICAgICBPcHRpb25hbDxXYXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21D
b21waWxhdGlvbk1vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25N
b2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlOwogCiAgICAgICAgIHN0cnVjdCBDb2RlTG9jYXRpb24g
ewogICAgICAgICAgICAgYm9vbCBoYXNDb2RlQmxvY2tIYXNoKCkgY29uc3QKQEAgLTEyMyw3ICsx
MjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAKICAgICAgICAgQ29kZUxvY2F0aW9uIHNlbWFu
dGljTG9jYXRpb247Ci0gICAgICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENv
ZGVCbG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRoaXMgaXMgbm9uLW51bGwgaWYgd2Ugd2Vy
ZSBpbmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNoaW5lIGZyYW1lIHdlIHdlcmUgaW5saW5l
ZCBpbnRvLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENv
ZGVCbG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRoaXMgaXMgbm9uLW51bGwgaWYgd2Ugd2Vy
ZSBpbmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNoaW5lIGZyYW1lIHdlIHdlcmUgaW5saW5l
ZCBpbnRvLgogCiAgICAgICAgIGJvb2wgaGFzRXhwcmVzc2lvbkluZm8oKSBjb25zdCB7IHJldHVy
biBzZW1hbnRpY0xvY2F0aW9uLmhhc0V4cHJlc3Npb25JbmZvKCk7IH0KICAgICAgICAgdW5zaWdu
ZWQgbGluZU51bWJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlZWQxOWNhYTU3YmNkMTMzMzVjOWRkOWNi
OGQzNTU3NTU4ZWNiNjAuLjU0ZjQ2ZTgzMGVkNzMyNmZkNzJlN2FkM2Q2MjI4ODVjOGJmMzMwNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuY3BwCkBAIC00OTcsNyArNDk3LDcgQEAgQ29kZUJsb2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxl
OjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAgICByZXR1cm4g
Q29kZUJsb2NrSGFzaChzb3VyY2UoKSwga2luZCk7CiB9CiAKLU9wdGlvbmFsPGludD4gU2NyaXB0
RXhlY3V0YWJsZTo6b3ZlcnJpZGVMaW5lTnVtYmVyKFZNJiB2bSkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8aW50PiBTY3JpcHRFeGVjdXRhYmxlOjpvdmVycmlkZUxpbmVOdW1iZXIoVk0mIHZtKSBjb25z
dAogewogICAgIGlmIChpbmhlcml0czxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKSkKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+b3ZlcnJpZGVM
aW5lTnVtYmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmgKaW5kZXggZDBmMWZjZGRkYTcxOTkxODVlODNmNDE4ZWRjMmRkYTcwOTBmOGQ1
ZC4uZjRiZWE3MDhjYzRjODI4YTY4OWEzOWI3MjhmYmQ2MWM4OGQyYjY4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZS5zdGFydENvbHVtbigpLm9uZUJhc2VkSW50KCk7IH0KICAgICBKU19FWFBPUlRf
UFJJVkFURSB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4g
b3ZlcnJpZGVMaW5lTnVtYmVyKFZNJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG92
ZXJyaWRlTGluZU51bWJlcihWTSYpIGNvbnN0OwogICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdT
dGFydE9mZnNldChWTSYpIGNvbnN0OwogICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQoVk0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0Zy
YW1lLmNwcAppbmRleCA5ZTkzZjhiMjlmMWZjY2JkOTA5MWMwMTIzZTQ1MjVlODgwMTViMWZlLi42
ZWUxYzViOTJjZDU2OTFjZjNlODE2NDNhNmUxOWJlNDM2MThiOWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgU3RhY2tGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2ln
bmVkJiBjb2x1bW4pIGNvbnN0CiAgICAgbV9jb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4LCBkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVu
dXNlZEVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgaWYgKE9wdGlv
bmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gZXhlY3V0YWJsZS0+b3ZlcnJpZGVMaW5lTnVt
YmVyKG1fY29kZUJsb2NrLT52bSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJy
aWRlTGluZU51bWJlciA9IGV4ZWN1dGFibGUtPm92ZXJyaWRlTGluZU51bWJlcihtX2NvZGVCbG9j
ay0+dm0oKSkpCiAgICAgICAgIGxpbmUgPSBvdmVycmlkZUxpbmVOdW1iZXIudmFsdWUoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5k
ZXggODRmMmM1YmJmN2MxMjg2YWRhZGVjYmJhOTNmODEyM2M1MTk0NTJhOS4uNDU3Njk3YzdlYzlj
ZWQ4OWNhOWViZWY3NGVlNDdiOGE0YzdhNGIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU3RyaW5n
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNs
b3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSAKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgoY2Vs
bCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dChjZWxsLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KQEAgLTk0LDcgKzk0
LDcgQEAgc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJpbmdPYmplY3QqIG9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgp
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKG9i
amVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIFN0cmlu
Z09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcgogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJp
bmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXgg
JiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5k
ZXggOWNkZTQ2MzQxNzIzYzdlNDJmMWY5MThkNzc5M2M0MGVhNTA4ZTRlZi4uZjVmYjc4NWRiYTFm
NGQzNWI0M2JiMjc2ZDEyNDFiMWI1MDE5ODlhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlVmFsdWUp
OwotICAgIE9wdGlvbmFsPENhY2hlZENhbGw+IGNhY2hlZENhbGw7CisgICAgc3RkOjpvcHRpb25h
bDxDYWNoZWRDYWxsPiBjYWNoZWRDYWxsOwogICAgIFN0cmluZyByZXBsYWNlU3RyaW5nOwogICAg
IGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIHJl
cGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDdkMGY1OTg2
Nzg2YjlhYzQxZjNmMzhhZjVmODc5NGMyOGQwNGMzNTguLjBiMWE0MDg3YzRiN2RjOTc0YmQ5YjU5
YjBmOTBkNmI1MDM3NDBlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcApAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmNhbkFjY2Vz
c1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1hdXRvIFN0cnVjdHVyZTo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0IC0+IE9wdGlvbmFsPFByb3BlcnR5SGFzaEVudHJ5PgorYXV0
byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5SGFzaEVudHJ5PgogewogICAgIGZv
ciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZv
LT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRh
YmxlID0gaW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0Nzk3MzBjNmZmN2ZhNjgxMDVhZGFmNjgwNjFmMWQ0
MDFkMWJkZGYxLi5mZWJlZWNiMmI1MTlhMzU2ZGJiYjQyZTUyYTJlMTE2MWFiZjZlZGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNjg3LDcgKzY4Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiB0YWJsZTsKICAgICAgICAgY29u
c3QgSGFzaFRhYmxlVmFsdWUqIHZhbHVlOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UHJvcGVydHlI
YXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8UHJvcGVydHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQ
cm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmgKaW5kZXggNzNlNDNmYTJjMTdhN2Y1ZTdlM2Q2NzMzZWE1YThjY2UwZjg0ZGUx
ZC4uY2NmOTA0Zjg4OGM4NDRkYmY5ZjIzNmFiOTdmN2YxOGMxYjYyNDJjMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yVGFi
bGU7CiBjbGFzcyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxT
dHJpbmcsIDQ+IFN0cmluZ1ZlY3RvcjsKLSAgICB0eXBlZGVmIFZlY3RvcjxPcHRpb25hbDxTdHJp
bmc+LCA0PiBPcHRpb25hbFN0cmluZ1ZlY3RvcjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPFN0cmluZz4sIDQ+IE9wdGlvbmFsU3RyaW5nVmVjdG9yOwogCiAgICAgZW51bSBEZWxl
dGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IoRGVsZXRlZFZhbHVlVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGJiN2YxYzU4YTA2NGMzNGM1ZmZkODVjYzA5ODFm
NjQ2OTA1ZGMwOGEuLjk1ZTY3YWUwZjI1N2YyY2YzZTJjYjlhZDNjNDlhNzlhZDc3NzM2NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUu
aApAQCAtNTcsNyArNTcsNyBAQCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHRvTmF0aXZlRnJvbVZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdgogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgotT3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9O
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKK3N0ZDo6b3B0aW9u
YWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFk
YXB0b3IsIEJpZ0ludDY0QWRhcHRvcj4gfHwgc3RkOjppc19zYW1lX3Y8QWRhcHRvciwgQmlnVWlu
dDY0QWRhcHRvcj4pIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAppbmRleCA1
MzQ5ZGYxNmEyZWM0NDFlZTQ2MTJlM2M5NjY0OGZmODNkMzZlYzI3Li4xNWI2MzE3NWQzMzNhYWM1
YjNjN2Q5NDE4NWJjNDVlZDEyY2RiNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAtNzgsMTQgKzc4LDE0IEBAIHN0cnVj
dCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVyQWRhcHRv
cjo6dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25h
bDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENv
ZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoKHZhbHVlID49IDAgJiYg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYXhW
YWx1ZSkpIHx8IHZhbHVlIDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obWluVmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5
cGU+KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVG
cm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbVVpbnQzMldpdGhvdXRDb2VyY2lvbih1aW50MzJf
dCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQzMl90
PihtYXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTMsNyAr
OTMsNyBAQCBzdHJ1Y3QgSW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvciB7CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFs
PFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENv
ZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIFR5cGUgaW50ZWdlciA9IHN0YXRp
Y19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50
ZWdlcikgIT0gdmFsdWUpCkBAIC0xNDUsMTIgKzE0NSwxMiBAQCBzdHJ1Y3QgRmxvYXRUeXBlZEFy
cmF5QWRhcHRvciB7CiAgICAgICAgIHJldHVybiBPdGhlckFkYXB0b3I6OnRvTmF0aXZlRnJvbURv
dWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZl
RnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhv
dXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4g
dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSB8fCBzdGQ6OmlzaW5mKHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CkBAIC0yOTcsNyArMjk3LDcg
QEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFw
dG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBP
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZh
bHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0
aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPiBt
YXhWYWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTMwNSw3ICszMDUsNyBAQCBzdHJ1Y3QgVWludDhDbGFtcGVkQWRhcHRvciB7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3Vi
bGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91
YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVpbnQ4X3Qg
aW50ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA0MmMzMzVjYzAxYjgyMDg1NjYxNjE2YmJmYTI1MDNiYmUwNTdlYTBhLi45OGE3
NWM2ZjhiOGRiMjc5ZDAyNmYzMmViZjNiYmNjNTQxYmFiMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiwgY29uc3QgY2hhciog
c3VtbWFyeSwgY29uc3QgRnVuYyYgZnVuYyk7CiAKLSAgICBPcHRpb25hbDxSZWZQdHI8VGhyZWFk
Pj4gb3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2stPm93bmVyVGhyZWFkKCk7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25lclRocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBpTG9jay0+b3duZXJUaHJlYWQoKTsgfQogCiAgICAgVk1UcmFwcyYgdHJh
cHMoKSB7IHJldHVybiBtX3RyYXBzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1UcmFwcy5jcHAKaW5kZXggZmRlYzZiZjEyMzQyMzNjYWFlMDI0OGFiODVlYWFjMTViMjJmYTZi
MC4uOWZlZGM1MWE2ZDZjZTExYWNjOGFlODc0YWVlNWFhMTgyMzRiZmJkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0
ZToKICAgICB7IH0KIAogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxTaWduYWxDb250ZXh0
PiB0cnlDcmVhdGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTaWduYWxDb250ZXh0PiB0cnlDcmVhdGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z2lzdGVycykKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Qb2ludGVyID0gTWFjaGlu
ZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpOwogICAgICAgICBpZiAoIWlu
c3RydWN0aW9uUG9pbnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAppbmRleCBlNjkwYTY1ZTJkM2Y2ZTRlNWRmMDk5YmZmM2NmYThhMGU4ZmI1OTBjLi5mZjEz
NjViODc0OTIyNTY5MmI3YWQ1NGRkOWVmMjdlNzM3NmM0MmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC02MDksNyArNjA5LDcgQEAgSUdOT1JFX1dB
Uk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpOwogICAgICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3Qt
PmdldExlbmd0aCgpKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
LCBqc051bWJlcih0aGlzT2JqZWN0LT5tX3ZlY3RvcltpbmRleC52YWx1ZSgpXSkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
U2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggMTdjMmE1ZjM4YzQ0NWRkYjA0Zjc2MDQ0YjZk
Y2U5Njg5NzNjMGY4MS4uYTJkOTU0ZmFmZmQ5YzU1YTliYWY5OWFjMDAzMDMwYzg0YThjNTU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5
emVyLmNwcApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHsgfQogCiBwdWJsaWM6Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFNpZ25hbENvbnRleHQ+IHRyeUNyZWF0ZShQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpZ25hbENvbnRleHQ+
IHRyeUNyZWF0ZShQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHsKICAgICAgICAg
YXV0byBpbnN0cnVjdGlvblBvaW50ZXIgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2lu
dGVyKHJlZ2lzdGVycyk7CiAgICAgICAgIGlmICghaW5zdHJ1Y3Rpb25Qb2ludGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXgg
MDBhMTdjNDA2NGE2MDMwYzNlNGE0Zjk2NzcyMTRhNTdhN2JmNzk5MC4uZjRhNmRhOTY5MjU1MDli
ZjE1NzkzYzI0NTIzNWY1MzM5ZmQ5ODIyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBpbmxp
bmUgVHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNMb2FkT3AoRXh0QXRvbWljT3BU
eXBlIG9wLCBUeXBlIHZhbHVlVAogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxC
Mzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEIzOjpBaXI6Ok9wY29k
ZT4gb3Bjb2RlOwogICAgIGlmIChpc1g4NigpIHx8IGlzQVJNNjRFKCkpCiAgICAgICAgIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYWNjZXNzV2lkdGgob3ApKTsKICAg
ICBCMzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2RlID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxf
V0lEVEgoQWRkLCBhY2Nlc3NXaWR0aChvcCkpOwpAQCAtMjIzNSw3ICsyMjM1LDcgQEAgaW5saW5l
IHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNTdG9yZU9wKEV4dEF0b21pY09wVHlwZSBv
cCwgVHlwZSB2YWx1ZVR5cGUKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QjM6
OkFpcjo6T3Bjb2RlPiBvcGNvZGU7CisgICAgc3RkOjpvcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+
IG9wY29kZTsKICAgICBpZiAoaXNYODYoKSB8fCBpc0FSTTY0RSgpKQogICAgICAgICBvcGNvZGUg
PSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGFjY2Vzc1dpZHRoKG9wKSk7CiAgICAgQjM6
OkFpcjo6T3Bjb2RlIG5vbkF0b21pY09wY29kZSA9IEIzOjpBaXI6Ok5vcDsKQEAgLTIyODksNyAr
MjI4OSw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmluYXJ5Uk1XT3Ao
RXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwCiAgICAgICAgIH0pOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPEIzOjpBaXI6Ok9wY29kZT4gb3Bjb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8
QjM6OkFpcjo6T3Bjb2RlPiBvcGNvZGU7CiAgICAgQjM6OkFpcjo6T3Bjb2RlIG5vbkF0b21pY09w
Y29kZSA9IEIzOjpBaXI6Ok5vcDsKICAgICBCMzo6Q29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5
ID0gQjM6Ok5vdENvbW11dGF0aXZlOwogICAgIHN3aXRjaCAob3ApIHsKQEAgLTI0ODYsNyArMjQ4
Niw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdl
KEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1CiAKICAgICBtX2N1cnJlbnRCbG9jayA9IGZh
aWx1cmVDYXNlOwogICAgIChbJl0gewotICAgICAgICBPcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+
IG9wY29kZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9wY29kZTsK
ICAgICAgICAgaWYgKGlzWDg2KCkgfHwgaXNBUk02NEUoKSkKICAgICAgICAgICAgIG9wY29kZSA9
IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYWNjZXNzV2lkdGgpOwogICAgICAgICBC
Mzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2RlID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lE
VEgoQWRkLCBhY2Nlc3NXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMTU4NzhlMzYzNDBkMjRhMWY5MTI1MjEyMGZlYzFm
MGI0OTI5NDdhNi4uMTA2Y2E1ZmQ1NWQ2ZGJkMmEzYWYxODM4NDVjYTRhNzk4NzdiZDZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2Nh
bHMoKSB7IH0KICAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyB9CiAKLSAgICBWYWx1
ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBz
dGQ6Om51bGxvcHQpOworICAgIFZhbHVlKiBjb25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0
cywgc3RkOjpvcHRpb25hbDxPcmlnaW4+ID0gc3RkOjpudWxsb3B0KTsKICAgICBWYWx1ZSogZnJh
bWVQb2ludGVyKCk7CiAgICAgdm9pZCBpbnNlcnRDb25zdGFudHMoKTsKIApAQCAtNjE1LDcgKzYx
NSw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdEV4Y2VwdGlvbkNoZWNrKENDYWxsSGVscGVy
cyYgaml0LCBFeGNlcHRpb25UeXBlIHR5cGUpCiAgICAgfSk7CiB9CiAKLVZhbHVlKiBCM0lSR2Vu
ZXJhdG9yOjpjb25zdGFudChCMzo6VHlwZSB0eXBlLCB1aW50NjRfdCBiaXRzLCBPcHRpb25hbDxP
cmlnaW4+IG1heWJlT3JpZ2luKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmNvbnN0YW50KEIzOjpU
eXBlIHR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0aW9uYWw8T3JpZ2luPiBtYXliZU9yaWdp
bikKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fY29uc3RhbnRQb29sLmVuc3VyZShWYWx1ZUtleShv
cGNvZGVGb3JDb25zdGFudCh0eXBlKSwgdHlwZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYml0cykp
LCBbJl0gewogICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9wcm9jLmFkZENvbnN0YW50KG1heWJl
T3JpZ2luID8gKm1heWJlT3JpZ2luIDogb3JpZ2luKCksIHR5cGUsIGJpdHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAppbmRleCAyYTUzZDdlNmVkMjM2
YWZmYmZjMDMzMjZmMzcxM2Q3ZmY5ZDdiZDkzLi5jNTQ5MjQyOTE5ZmY1NGVlMTEyOGQxYjYzNjYw
NWM4YzRiOWM0MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQ
bGFuLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRW50cnlQbGFuOjpjb21waWxlRnVuY3Rp
b25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBpZiAoIWhhc1dvcmsoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8VHJhY2VTY29wZT4gdHJhY2VTY29wZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFRyYWNlU2NvcGU+IHRyYWNlU2NvcGU7CiAgICAgaWYgKE9wdGlvbnM6OnVz
ZVRyYWNlUG9pbnRzKCkpCiAgICAgICAgIHRyYWNlU2NvcGUuZW1wbGFjZShXZWJBc3NlbWJseUNv
bXBpbGVTdGFydCwgV2ViQXNzZW1ibHlDb21waWxlRW5kKTsKICAgICBUaHJlYWRDb3VudEhvbGRl
ciBob2xkZXIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNw
cAppbmRleCA2YTJiMGYzM2Y1ZTViODY2MmE2NDc1MTBmMmVlMWU3OGFlZTE4NzgxLi5mNjBhNDU2
NTA5NDU1MTQ5YmUzNjViNGE4MjA2MTU3NzRkODhjOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFdhc20gewogCi1TZWdtZW50OjpQdHIgU2VnbWVudDo6Y3JlYXRlKE9wdGlv
bmFsPEkzMkluaXRFeHByPiBvZmZzZXQsIHVpbnQzMl90IHNpemVJbkJ5dGVzLCBLaW5kIGtpbmQp
CitTZWdtZW50OjpQdHIgU2VnbWVudDo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+
IG9mZnNldCwgdWludDMyX3Qgc2l6ZUluQnl0ZXMsIEtpbmQga2luZCkKIHsKICAgICBDaGVja2Vk
PHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSBzaXplSW5CeXRl
czsKICAgICB0b3RhbEJ5dGVzQ2hlY2tlZCArPSBzaXplb2YoU2VnbWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZmE5NmIzNGQ4NGIxNzA3NjJmZDY5N2E1
MTc1NmZjOTA5ZDVlMGQ5Mi4uODc1NWExMzZjY2M5YjU3MDQ1YmVjNzBkMzk0MGE3MDIwNTcwOTcx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjI2LDcgKzIy
Niw3IEBAIHN0cnVjdCBTZWdtZW50IHsKIAogICAgIEtpbmQga2luZDsKICAgICB1aW50MzJfdCBz
aXplSW5CeXRlczsKLSAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7Cisg
ICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CiAgICAgLy8gQnl0
ZXMgYXJlIGFsbG9jYXRlZCBhdCB0aGUgZW5kLgogICAgIHVpbnQ4X3QmIGJ5dGUodWludDMyX3Qg
cG9zKQogICAgIHsKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdHJ1Y3QgU2VnbWVudCB7CiAKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KFNlZ21lbnQqKTsKICAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0
cjxTZWdtZW50LCBkZWNsdHlwZSgmU2VnbWVudDo6ZGVzdHJveSk+IFB0cjsKLSAgICBzdGF0aWMg
U2VnbWVudDo6UHRyIGNyZWF0ZShPcHRpb25hbDxJMzJJbml0RXhwcj4sIHVpbnQzMl90LCBLaW5k
KTsKKyAgICBzdGF0aWMgU2VnbWVudDo6UHRyIGNyZWF0ZShzdGQ6Om9wdGlvbmFsPEkzMkluaXRF
eHByPiwgdWludDMyX3QsIEtpbmQpOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQgPT0gS2luZDo6QWN0aXZlOyB9CiAgICAgYm9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7
IHJldHVybiBraW5kID09IEtpbmQ6OlBhc3NpdmU7IH0KQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1
Y3QgRWxlbWVudCB7CiAgICAgICAgIERlY2xhcmVkLAogICAgIH07CiAKLSAgICBFbGVtZW50KEVs
ZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZSwgT3B0aW9uYWw8
dWludDMyX3Q+IHRhYmxlSW5kZXgsIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcikKKyAg
ICBFbGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlw
ZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdGFibGVJbmRleCwgc3RkOjpvcHRpb25hbDxJMzJJ
bml0RXhwcj4gaW5pdEV4cHIpCiAgICAgICAgIDoga2luZChraW5kKQogICAgICAgICAsIGVsZW1l
bnRUeXBlKGVsZW1lbnRUeXBlKQogICAgICAgICAsIHRhYmxlSW5kZXhJZkFjdGl2ZShXVEZNb3Zl
KHRhYmxlSW5kZXgpKQpAQCAtMjc1LDggKzI3NSw4IEBAIHN0cnVjdCBFbGVtZW50IHsKIAogICAg
IEtpbmQga2luZDsKICAgICBUYWJsZUVsZW1lbnRUeXBlIGVsZW1lbnRUeXBlOwotICAgIE9wdGlv
bmFsPHVpbnQzMl90PiB0YWJsZUluZGV4SWZBY3RpdmU7Ci0gICAgT3B0aW9uYWw8STMySW5pdEV4
cHI+IG9mZnNldElmQWN0aXZlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRhYmxlSW5k
ZXhJZkFjdGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBvZmZzZXRJZkFjdGl2
ZTsKIAogICAgIC8vIEluZGV4IG1heSBiZSBudWxsRnVuY0luZGV4LgogICAgIFZlY3Rvcjx1aW50
MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKCEqdGhpcyk7CiAgICAgfQogCi0gICAgVGFibGVJbmZvcm1hdGlvbih1aW50MzJf
dCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgYm9vbCBpc0ltcG9ydCwgVGFi
bGVFbGVtZW50VHlwZSB0eXBlKQorICAgIFRhYmxlSW5mb3JtYXRpb24odWludDMyX3QgaW5pdGlh
bCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgYm9vbCBpc0ltcG9ydCwgVGFibGVF
bGVtZW50VHlwZSB0eXBlKQogICAgICAgICA6IG1faW5pdGlhbChpbml0aWFsKQogICAgICAgICAs
IG1fbWF4aW11bShtYXhpbXVtKQogICAgICAgICAsIG1faXNJbXBvcnQoaXNJbXBvcnQpCkBAIC0z
MDMsMTMgKzMwMywxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaXNJbXBvcnQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW1wb3J0OyB9CiAgICAgdWludDMyX3QgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5pdGlhbDsgfQotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFR5cGUgd2FzbVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGVzOjpGdW5jcmVm
IDogVHlwZXM6OkV4dGVybnJlZjsgfQogCiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1faW5pdGlh
bDsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG1fbWF4aW11bTsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBUYWJsZUVsZW1lbnRUeXBlIG1fdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9u
LmgKaW5kZXggYzAxNjVhOGQ5ZWRhOWEyZmMxODkxMTg3MTRiMDBmNmEyM2Y2OWNmZC4uMzc2NmYy
YTFmMTE2NjhhMzQ1MDE3NTJhOGZhYjRmNzllNjkxMzczYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTg3LDcgKzg3LDcg
QEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgVmVjdG9yPEZ1bmN0aW9uRGF0YT4gZnVuY3Rpb25z
OwogCiAgICAgVmVjdG9yPEV4cG9ydD4gZXhwb3J0czsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4g
c3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc3Rh
cnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgVmVjdG9yPFNlZ21lbnQ6OlB0cj4gZGF0YTsKICAg
ICBWZWN0b3I8RWxlbWVudD4gZWxlbWVudHM7CiAgICAgVmVjdG9yPFRhYmxlSW5mb3JtYXRpb24+
IHRhYmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1l
U2VjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgK
aW5kZXggNjg5YTA5ZmRjM2NjODkyOTE4ZDIxMmYzNjYyZjc2ZmJjZGFhM2M0Ny4uZmU2M2NmNTU0
NzM2NmZjMTc0MGMxZjBjNzBiYTgxYmU3NTM2YTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lU2VjdGlvbik7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRIYXNoKGNvbnN0IE9wdGlvbmFsPENTdHJpbmc+ICZoYXNoKQorICAgIHZvaWQgc2V0SGFz
aChjb25zdCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+ICZoYXNoKQogICAgIHsKICAgICAgICAgbW9k
dWxlSGFzaCA9IE5hbWUoaGFzaCA/IGhhc2gtPmxlbmd0aCgpIDogMyk7CiAgICAgICAgIGlmICho
YXNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlv
blBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5jcHAKaW5kZXggYmZkYTliM2IwZWZlNDYwMjRlNGM3ZWE2YWVlM2FjMzI5NjVhNTViMC4uNTEx
ZmNkOGMwMGMyNzJhNzY0OTVlMzk5NGQwMDRlNzdlY2Q0ZWEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMTc3LDcgKzE3Nyw3
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxl
TGltaXRzKHVpbnQzMl90JiBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4mIG1heGltdW0sIGJv
b2wmIGlzU2hhcmVkLCBMaW1pdHNUeXBlIGxpbWl0c1R5cGUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWws
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1NoYXJlZCwgTGltaXRz
VHlwZSBsaW1pdHNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKCFtYXhpbXVt
KTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhl
bHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0eXBlICE9IHN0YXRpY19jYXN0PGludDhfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpICYmIHR5
cGUgIT0gc3RhdGljX2Nhc3Q8aW50OF90PihUeXBlS2luZDo6RXh0ZXJucmVmKSwgIlRhYmxlIHR5
cGUgc2hvdWxkIGJlIGZ1bmNyZWYgb3IgYW55cmVmLCBnb3QgIiwgdHlwZSk7CiAKICAgICB1aW50
MzJfdCBpbml0aWFsOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOworICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgYm9vbCBpc1NoYXJlZCA9IGZhbHNlOwog
ICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVMaW1pdHMoaW5pdGlhbCwg
bWF4aW11bSwgaXNTaGFyZWQsIExpbWl0c1R5cGU6OlRhYmxlKTsKICAgICBpZiAoVU5MSUtFTFko
IWxpbWl0cykpCkBAIC0yNDgsNyArMjQ4LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZU1l
bW9yeUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYm9vbCBpc1No
YXJlZCA9IGZhbHNlOwogICAgIHsKICAgICAgICAgdWludDMyX3QgaW5pdGlhbDsKLSAgICAgICAg
T3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IG1heGltdW07CiAgICAgICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFi
bGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSwgaXNTaGFyZWQsIExpbWl0c1R5cGU6Ok1lbW9yeSk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghbGltaXRzKSkKICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigpKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAg
YXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAg
ICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7CiAgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5k
ZXgpKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CiAgICAgICAgICAg
ICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2Vj
dGlvbihpbml0RXhwcikpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwpAQCAt
NDMwLDcgKzQzMCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFi
bGUgaW5kZXgiKTsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRh
dGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJ
MzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRF
eHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFy
c2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAg
IHVpbnQ4X3QgZWxlbWVudEtpbmQ7CkBAIC00NjcsNyArNDY3LDcgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBjb25zdGV4
cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKIAotICAgICAg
ICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihpbml0RXhwcikp
OwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwpAQCAtNTA0LDcgKzUwNCw3IEBA
IGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCks
ICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKICAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJ
ZHgodGFibGVJbmRleCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5p
dEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsK
ICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZv
ckVsZW1lbnRTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsK
QEAgLTY0MSw3ICs2NDEsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRh
YmxlSWR4KHVpbnQzMl90IHRhYmxlSW5kZXgpIC0+IFBhcnRpYWxSZXN1bAogICAgIHJldHVybiB7
IH07CiB9CiAKLWF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJ
MzJJbml0RXhwcj4mIGluaXRFeHByLCBBU0NJSUxpdGVyYWwgZmFpbE1lc3NhZ2UpIC0+IFBhcnRp
YWxSZXN1bHQKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlv
bmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHVpbnQ4X3QgaW5pdE9wY29kZTsKICAgICB1aW50NjRfdCBp
bml0RXhwckJpdHM7CkBAIC02NTMsNyArNjUzLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJz
ZUkzMkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJTGl0ZXIK
ICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4
cHJGb3JFbGVtZW50U2VjdGlvbihPcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQ
YXJ0aWFsUmVzdWx0CithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVt
ZW50U2VjdGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICByZXR1cm4gcGFyc2VJMzJJbml0RXhwcihpbml0RXhwciwgIkVsZW1l
bnQgaW5pdF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIiX3MpOwogfQpAQCAtNzIwLDcgKzcyMCw3
IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mSW5kZXhl
cyhWZWN0b3I8dWludDMyX3Q+JiByZXN1bHQsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBT
ZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24oT3B0aW9uYWw8STMy
SW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAorYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhw
cj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNlSTMySW5p
dEV4cHIoaW5pdEV4cHIsICJEYXRhIGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsK
IH0KQEAgLTc1MCw3ICs3NTAsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRGF0YSgpIC0+
IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG1lbW9yeUluZGV4ID0g
bWVtb3J5SW5kZXhPckRhdGFGbGFnOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRiht
ZW1vcnlJbmRleCA+PSBtX2luZm8tPm1lbW9yeUNvdW50KCksIHNlZ21lbnROdW1iZXIsICJ0aCBE
YXRhIHNlZ21lbnQgaGFzIGluZGV4ICIsIG1lbW9yeUluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhl
IG51bWJlciBvZiBNZW1vcmllcyAiLCBtX2luZm8tPm1lbW9yeUNvdW50KCkpOwogCi0gICAgICAg
ICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckRhdGFTZWN0aW9uKGluaXRFeHByKSk7CiAK
ICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFCeXRlTGVuZ3RoOwpAQCAtNzkzLDcgKzc5Myw3IEBA
IGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VEYXRhKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIobWVtb3J5SW5kZXgpLCAi
Y2FuJ3QgZ2V0ICIsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQncyBpbmRleCIpOwog
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtZW1vcnlJbmRleCA+PSBtX2luZm8tPm1l
bW9yeUNvdW50KCksIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQgaGFzIGluZGV4ICIs
IG1lbW9yeUluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBNZW1vcmllcyAiLCBt
X2luZm8tPm1lbW9yeUNvdW50KCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhw
cj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0
RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0
RXhwckZvckRhdGFTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGRh
dGFCeXRlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmgKaW5kZXggNmY5NTc3NDgzZDM1MGVmMzJhNDFhM2I5YjE4MmJjNDk4MDIwYzAzYi4u
OTFmZDNlZDgzNDIyNWM4MTNlMmQwMTM5MmI0OWU4ZDljM2JlMmI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCkBAIC02NSwxOCArNjUsMTgg
QEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1l
bW9yeUhlbHBlcihib29sIGlzSW1wb3J0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZVRhYmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpOwogICAgIGVudW0gY2xhc3Mg
TGltaXRzVHlwZSB7IE1lbW9yeSwgVGFibGUgfTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50MzJfdCYgaW5pdGlhbCwgT3B0aW9u
YWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1NoYXJlZCwgTGltaXRzVHlwZSk7CisgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZXNpemFibGVMaW1pdHModWlu
dDMyX3QmIGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBp
c1NoYXJlZCwgTGltaXRzVHlwZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gcGFyc2VJbml0RXhwcih1aW50OF90JiwgdWludDY0X3QmLCBUeXBlJiBpbml0RXhwclR5cGUp
OwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMySW5pdEV4cHIo
T3B0aW9uYWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRlcmFsIGZhaWxNZXNzYWdlKTsKKyAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByKHN0ZDo6b3B0
aW9uYWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRlcmFsIGZhaWxNZXNzYWdlKTsKIAogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVp
bnQzMl90KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMklu
aXRFeHByRm9yRWxlbWVudFNlY3Rpb24oT3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRT
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50S2luZCh1aW50OF90JiBlbGVtZW50S2luZCk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbmRleENvdW50Rm9y
RWxlbWVudFNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCk7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVz
c2lvbnMoVmVjdG9yPHVpbnQzMl90PiYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50U2VnbWVu
dFZlY3Rvck9mSW5kZXhlcyhWZWN0b3I8dWludDMyX3Q+JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0
IHVuc2lnbmVkKTsKIAotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
STMySW5pdEV4cHJGb3JEYXRhU2VjdGlvbihPcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKKyAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNl
Y3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKIAogICAgIHNpemVfdCBtX29mZnNl
dEluU291cmNlOwogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAppbmRleCAx
ZWNhNDM2ZGY1OTJmMDdmMzgzZWQwN2E5ZDE5YjQ3YjU0ZGNkZGUxLi44OGM2MjdjMTYwYzY5YjZh
NzU4YzcyY2QzMTE5ODdlNTQ4MTVmMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgICAgICB9IFwKICAgICB9IHdoaWxl
ICgwKQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDcoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElO
RSBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDcoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90JiBvZmZzZXQsIHNpemVfdCBzaXplKQogewogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGF1dG8gU3RyZWFtaW5n
UGFyc2VyOjpwYXJzZVNlY3Rpb25QYXlsb2FkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIC0+IFN0
YXRlCiAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9uSUQ7CiB9CiAKLWF1dG8gU3RyZWFtaW5nUGFy
c2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBzaXpl
X3QmIG9mZnNldEluQnl0ZXMsIHNpemVfdCByZXF1aXJlZFNpemUpIC0+IE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4KK2F1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mZnNldEluQnl0ZXMsIHNpemVfdCBy
ZXF1aXJlZFNpemUpIC0+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PgogewogICAgIGlm
IChtX3JlbWFpbmluZy5zaXplKCkgPT0gcmVxdWlyZWRTaXplKSB7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQgPSBXVEZNb3ZlKG1fcmVtYWluaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaAppbmRleCAxYmNiNTA2YmQ1MWRm
MTFlZDRmN2RjMzVjZGVlMTQzMGI0NDVkNjM1Li43YzY0MDA4Y2JkOWFjMDM5ZmY0YTgxOGViMWNk
YmFkNmU3NThlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RyZWFtaW5nUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0
cmVhbWluZ1BhcnNlci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBw
YXJzZUZ1bmN0aW9uU2l6ZSh1aW50MzJfdCk7CiAgICAgU3RhdGUgcGFyc2VGdW5jdGlvblBheWxv
YWQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBj
b25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QsIHNpemVfdCYsIHNpemVfdCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnN1bWUoY29uc3QgdWludDhfdCog
Ynl0ZXMsIHNpemVfdCwgc2l6ZV90Jiwgc2l6ZV90KTsKICAgICBFeHBlY3RlZDx1aW50MzJfdCwg
U3RhdGU+IGNvbnN1bWVWYXJVSW50MzIoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCwgc2l6
ZV90JiwgSXNFbmRPZlN0cmVhbSk7CiAKICAgICB2b2lkIG1vdmVUb1N0YXRlSWZOb3RGYWlsZWQo
U3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXggOWFh
NjcwMjMwZWU3MTc5ZThlYjE4YTRjYWQ1N2I0OWY5MTgwNjNkZS4uOGE1NDc2MTg1NGNjNjFlNWRl
ZThiMGY0MDMyNGYyODM0OTU0MWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFibGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgVGFibGU6OnNldExlbmd0aCh1aW50MzJf
dCBsZW5ndGgpCiAgICAgQVNTRVJUKG1fbWFzayA9PSBXVEY6Om1hc2tGb3JTaXplKGFsbG9jYXRl
ZExlbmd0aChsZW5ndGgpKSk7CiB9CiAKLVRhYmxlOjpUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBP
cHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFibGVFbGVtZW50VHlwZSB0eXBlKQorVGFibGU6
OlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0s
IFRhYmxlRWxlbWVudFR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9tYXhp
bXVtKG1heGltdW0pCiAgICAgLCBtX293bmVyKG51bGxwdHIpCkBAIC02NSw3ICs2NSw3IEBAIFRh
YmxlOjpUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwg
VGFibGVFbGVtZW50VHlwZSB0eXBlCiAgICAgfQogfQogCi1SZWZQdHI8VGFibGU+IFRhYmxlOjp0
cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRh
YmxlRWxlbWVudFR5cGUgdHlwZSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50
MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1l
bnRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTGVuZ3RoKGluaXRpYWwpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTc5LDcgKzc5LDcgQEAgUmVmUHRyPFRhYmxlPiBUYWJsZTo6
dHJ5Q3JlYXRlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBU
YWIKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDx1aW50
MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQor
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3duZXIpOwogICAgIGlm
IChkZWx0YSA9PSAwKQpAQCAtMTkwLDcgKzE5MCw3IEBAIEZ1bmNSZWZUYWJsZSogVGFibGU6OmFz
RnVuY3JlZlRhYmxlKCkKICAgICByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1
bmNyZWYgPyBzdGF0aWNfY2FzdDxGdW5jUmVmVGFibGUqPih0aGlzKSA6IG51bGxwdHI7CiB9CiAK
LUZ1bmNSZWZUYWJsZTo6RnVuY1JlZlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVp
bnQzMl90PiBtYXhpbXVtKQorRnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUodWludDMyX3QgaW5p
dGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKICAgICA6IFRhYmxlKGluaXRp
YWwsIG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpCiB7CiAgICAgLy8gRklYTUU6
IEl0IG1pZ2h0IGJlIHdvcnRoIHRyeWluZyB0byBwcmUtYWxsb2NhdGUgbWF4aW11bSBoZXJlLiBU
aGUgc3BlYyByZWNvbW1lbmRzIGRvaW5nIHNvLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFibGUuaAppbmRleCAxOGVkNTAwMDM0NzBiOTNlNWNjNDgzZThhMmM2MjIwZDViODZiN2JmLi5h
MDMwNjFhNmFlYzc3Y2Q1NDA1N2E5NmE4ZTFkMDRhMWViM2Y1YzNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVGFibGUuaApAQCAtNDUsMTEgKzQ1LDExIEBAIGNsYXNzIFRhYmxlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRhYmxlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGFibGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFRhYmxlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwg
T3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGUpOworICAgIHN0YXRp
YyBSZWZQdHI8VGFibGU+IHRyeUNyZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlKTsKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIH5UYWJsZSgpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhp
bXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIHVpbnQzMl90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRhYmxlLCBtX2xl
bmd0aCk7IH0KQEAgLTc4LDIwICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXQodWludDMy
X3QsIEpTVmFsdWUpOwogICAgIEpTVmFsdWUgZ2V0KHVpbnQzMl90KSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBncm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1
ZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUpOwogICAgIHZvaWQgY29weShjb25zdCBUYWJsZSogc3JjVGFibGUs
IHVpbnQzMl90IGRzdEluZGV4LCB1aW50MzJfdCBzcmNJbmRleCk7CiAKICAgICBERUNMQVJFX1ZJ
U0lUX0FHR1JFR0FURTsKIAogcHJvdGVjdGVkOgotICAgIFRhYmxlKHVpbnQzMl90IGluaXRpYWws
IE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlID0gVGFibGVFbGVt
ZW50VHlwZTo6RXh0ZXJucmVmKTsKKyAgICBUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlID0gVGFibGVFbGVtZW50
VHlwZTo6RXh0ZXJucmVmKTsKIAogICAgIHZvaWQgc2V0TGVuZ3RoKHVpbnQzMl90KTsKIAogICAg
IHVpbnQzMl90IG1fbGVuZ3RoOwogICAgIHVpbnQzMl90IG1fbWFzazsKICAgICBjb25zdCBUYWJs
ZUVsZW1lbnRUeXBlIG1fdHlwZTsKLSAgICBjb25zdCBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhp
bXVtOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4aW11bTsKIAogICAg
IE1hbGxvY1B0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4sIFZNTWFsbG9jPiBtX2pzVmFsdWVzOwog
ICAgIEpTT2JqZWN0KiBtX293bmVyOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5zdGFuY2VzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEZ1bmNSZWZUYWJsZSwgbV9pbnN0YW5jZXMpOyB9CiAKIHByaXZhdGU6Ci0gICAgRnVuY1Jl
ZlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAg
ICBGdW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
bWF4aW11bSk7CiAKICAgICBNYWxsb2NQdHI8V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwg
Vk1NYWxsb2M+IG1faW1wb3J0YWJsZUZ1bmN0aW9uczsKICAgICAvLyBjYWxsX2luZGlyZWN0IG5l
ZWRzIHRvIGRvIGFuIEluc3RhbmNlIGNoZWNrIHRvIHBvdGVudGlhbGx5IGNvbnRleHQgc3dpdGNo
IHdoZW4gY2FsbGluZyBhIGZ1bmN0aW9uIHRvIGFub3RoZXIgaW5zdGFuY2UuIFdlIGNhbiBob2xk
IHJhdyBwb2ludGVycyB0byBJbnN0YW5jZSBoZXJlIGJlY2F1c2UgdGhlIGVtYmVkZGVyIGVuc3Vy
ZXMgdGhhdCBUYWJsZSBrZWVwcyBhbGwgdGhlIGluc3RhbmNlcyBhbGl2ZS4gV2UgY291bGRuJ3Qg
aG9sZCBhIFJlZiBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2F1c2UgY3ljbGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCA2
ZjQxNjIyOWViYmY0Y2MwNmZlNTRhNzlmZDA0ZDdkNjcwZTYwYWQwLi5jOTUzMGU5Y2EyODdkNTcw
M2QwNzgzNWI2NjI4ZDcyNWYzZjk1ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZExlbmd0aCh1aW50
MzJfdCBsZW5ndGgpIHsgcmV0dXJuIFdhc206OlRhYmxlOjppc1ZhbGlkTGVuZ3RoKGxlbmd0aCk7
IH0KLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFi
bGUtPm1heGltdW0oKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBj
b25zdCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVtKCk7IH0KICAgICB1aW50MzJfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5ndGgoKTsgfQogICAgIHVpbnQzMl90IGFsbG9j
YXRlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUtPmFsbG9jYXRlZExlbmd0aChsZW5n
dGgoKSk7IH0KICAgICBib29sIGdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZh
bHVlKSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGM1YmFjMjU5YTkxYjIxMWFi
MzVjYmE4NjgwM2M4NDNmMmU5MjdiYjcuLjMwMTUwMDkwYzYxNWU4NWM2YmZlZTc3NDA4YWYwMGIw
OTMxNWJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB3ZSB0aGluayB3ZSBhcmUg
Z29pbmcgdG8gcnVuIHdpdGggbWF0Y2hlcyB0aGUgb25lIHdlIGV4cGVjdC4KICAgICBBU1NFUlQo
d2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpLT5pc1NhZmVU
b1J1bih3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPm1lbW9yeSgpLT5tZW1vcnkoKS5tb2RlKCkp
KTsKIAotICAgIE9wdGlvbmFsPFRyYWNlU2NvcGU+IHRyYWNlU2NvcGU7CisgICAgc3RkOjpvcHRp
b25hbDxUcmFjZVNjb3BlPiB0cmFjZVNjb3BlOwogICAgIGlmIChPcHRpb25zOjp1c2VUcmFjZVBv
aW50cygpKQogICAgICAgICB0cmFjZVNjb3BlLmVtcGxhY2UoV2ViQXNzZW1ibHlFeGVjdXRlU3Rh
cnQsIFdlYkFzc2VtYmx5RXhlY3V0ZUVuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA5ZmIx
ZTkzYjZmOTFiOTUwNTNiOWJiMTAwMDFlNmE3ZjYzNTE4NjEzLi41NWY5ZDgyYWRkMmEyNGU1OWU5
NDRlZjNmNjg5OTliNjEzNjU0YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0zMzYsOCArMzM2
LDggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAgICAgICAgICAgIGlmIChhY3R1YWxJbml0
aWFsIDwgZXhwZWN0ZWRJbml0aWFsKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24o
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWls
TWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRo
YXQgaXMgdG9vIHNtYWxsIikpKTsKIAotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJ
bmRleF0ubWF4aW11bSgpKSB7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGFj
dHVhbE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxl
c1tpbXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsKKyAgICAgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0oKTsKICAgICAg
ICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAiZG9lcyBub3QgaGF2
ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwog
ICAgICAgICAgICAgICAgIGlmICgqYWN0dWFsTWF4aW11bSA+ICpleHBlY3RlZE1heGltdW0pCkBA
IC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAgICAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHV0UmVzdWx0KTsK
IAotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgZXhwb3J0c09iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBleHBvcnRlZFZhbHVl
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
ICAgIH0gZWxzZQpAQCAtNTc5LDcgKzU3OSw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBjb25z
dCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1vZHVsZUluZm9ybWF0aW9uLmRh
dGE7CiAgICAgCi0gICAgT3B0aW9uYWw8SlNWYWx1ZT4gZXhjZXB0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8SlNWYWx1ZT4gZXhjZXB0aW9uOwogCiAgICAgYXV0byBmb3JFYWNoQWN0aXZlRWxlbWVu
dCA9IFsmXSAoYXV0byBmbikgewogICAgICAgICBmb3IgKGNvbnN0IFdhc206OkVsZW1lbnQmIGVs
ZW1lbnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5lbGVtZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYjgwNThhOWQyYTUzNGRhNGNhN2JhNzk2NjlmYzM2NDk0YWJlMGYwZC4uMWFi
MmYyZjM4NDQ4NDAyNmVhYmFjZTMxOWRkNTY1YWFkNDM5ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAg
ICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVu
ZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1bHQuCiAgICAgLy8gaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcwotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBtYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAg
SWRlbnRpZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4
aW11bSIpOwogICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0
KGdsb2JhbE9iamVjdCwgbWF4aW11bUlkZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJGbGFncy5jcHAKaW5kZXggMjk3MDFmNjFmZDk3ODhkMTBmZGQ2MDRkMGYyMGVlYzliODBmMDA5
Mi4uYjhhMzgyMzZjYTNjNzUzMWE4MjVmYjA3M2ZmYjA1MzM4ODIxNDgwMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLU9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+
IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxG
bGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgT3B0aW9uU2V0PEZs
YWdzPiBmbGFnczsKICAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVVbml0cygp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCmluZGV4IDUwYzgzOTUzMzBl
ODVkZmYxZWFmYzU5M2ZkNzgyOGZlY2FhNDNlYjguLmUwNzJjMmU3ZGIzYjEzZTRhMTkzYTU4YzEw
YjE1YmU4ZmExZWRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJGbGFncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCkBA
IC00MCw2ICs0MCw2IEBAIGVudW0gY2xhc3MgRmxhZ3MgOiB1aW50OF90IHsKICAgICBEZWxldGVk
VmFsdWUgPSAxIDw8IDcKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPE9wdGlvblNl
dDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmNwcAppbmRleCBkZTYyNzViZGY4YWFhNTQwNzE5Y2Q5YjhmMzYyYjRh
Zjc3MTk1YTg3Li42NTgzNjEyYmUzMTBkYTE1MGZkYTY4NTdmNjM2NWIzNmE1Y2NlMDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTIw
NTgsNyArMjA1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRl
eCA9IG5ld0FsdGVybmF0aXZlSW5kZXg7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXJyb3JDb2Rl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiog
ZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50
QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVj
a2VkKQorICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1p
dERpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVk
IHBhcmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQogICAgIHsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXJyb3JD
b2RlOjpUb29NYW55RGlzanVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAppbmRleCA1MmMwMzg3YTg4MzA3NmUxYmEwNGZhNjE2NjViYjhlMzM0ZjMzYjUyLi4zYjUz
NjllYThiMjBhN2ZiZGQ0OTMyZmYyMDY5NzU4MjJmOWE2ZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcApAQCAtNDIxMyw3ICs0MjEzLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFVzZWQgdG8gZGV0ZWN0IHJlZ3VsYXIgZXhwcmVzc2lvbiBjb25zdHJ1Y3RzIHRoYXQgYXJl
IG5vdCBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0ZWQgaW4gdGhlIEpJVDsgZmFsbCBiYWNrIHRv
IHRoZSBpbnRlcnByZXRlciB3aGVuIHRoaXMgaXMgZGV0ZWN0ZWQuCi0gICAgT3B0aW9uYWw8SklU
RmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOworICAgIHN0ZDo6b3B0aW9uYWw8SklURmFp
bHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogCiAgICAgYm9vbCBtX2RlY29kZVN1cnJvZ2F0
ZVBhaXJzOwogICAgIGJvb2wgbV91bmljb2RlSWdub3JlQ2FzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuaAppbmRleCAzYThlNWYyM2ZiMjg5OGE5NTQ3ZmYwODk0NTc4MWYzZDkyZDI2
YzIyLi45NzRkNTgxZmRiMWRlZmEwNWE4Y2Y0MTJjNjU0NTA3MjFkMjNkNjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBZ
YXJyQ29kZUJsb2NrKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBzZXRGYWxsQmFja1dpdGhGYWls
dXJlUmVhc29uKEpJVEZhaWx1cmVSZWFzb24gZmFpbHVyZVJlYXNvbikgeyBtX2ZhaWx1cmVSZWFz
b24gPSBmYWlsdXJlUmVhc29uOyB9Ci0gICAgT3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gZmFp
bHVyZVJlYXNvbigpIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8SklURmFpbHVyZVJlYXNvbj4gZmFpbHVyZVJlYXNvbigpIHsgcmV0dXJuIG1fZmFpbHVyZVJl
YXNvbjsgfQogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmOC5zaXplKCk7
IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmMTYuc2l6ZSgpOyB9CkBA
IC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFy
ck1hdGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21hdGNoT25seTE2OwogICAgIGJvb2wg
bV91c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEpJVEZh
aWx1cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1
cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKIGVudW0gWWFyckpJVENvbXBpbGVNb2Rl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCBmZWFmYWFjYmFm
MTM3ZmQxNTQ4NzgzNDdmMjRlNmNkNTExYWQ1MWM1Li5mMDc3N2Q0YWZlYWRmOTBhMzEyNTdlNjJm
NmZkYTcyZTBjYjA3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5o
CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbjsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRyeUNvbnN1bWVHcm91cE5hbWUoKQorICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB0cnlDb25zdW1lR3JvdXBOYW1lKCkKICAgICB7CiAgICAgICAgIGlm
IChhdEVuZE9mUGF0dGVybigpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTExMzQsNyArMTEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3aGlsZSAoIWF0RW5kT2ZQ
YXR0ZXJuKCkpIHsKICAgICAgICAgICAgICAgICBjaCA9IHRyeUNvbnN1bWVJZGVudGlmaWVyQ2hh
cmFjdGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoID09ICc+JykKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFN0cmluZz4oaWRlbnRpZmllckJ1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oaWRl
bnRpZmllckJ1aWxkZXIudG9TdHJpbmcoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWlzSWRl
bnRpZmllclBhcnQoY2gpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNDgsNyAr
MTE0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2Rl
UHJvcGVydHlFeHByZXNzaW9uKCkKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJD
bGFzc0lEPiB0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbigpCiAgICAgewogICAg
ICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSB8fCAhaXNVbmljb2RlUHJvcGVydHlWYWx1ZUV4cHJl
c3Npb25DaGFyKHBlZWsoKSkpIHsKICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2Rl
OjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKQEAgLTEyNDQsNyArMTI0NCw3IEBA
IHByaXZhdGU6CiAgKiAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKFVDaGFyMzIgYmVn
aW4sIFVDaGFyMzIgZW5kKQogICogICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCdWlsdEluKEJ1
aWx0SW5DaGFyYWN0ZXJDbGFzc0lEIGNsYXNzSUQsIGJvb2wgaW52ZXJ0KQogICogICAgdm9pZCBh
dG9tQ2hhcmFjdGVyQ2xhc3NFbmQoKQotICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBncm91cE5hbWUp
OworICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJl
ID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGdyb3VwTmFtZSk7CiAgKiAgICB2b2lkIGF0
b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgKiAg
ICB2b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpOwogICogICAgdm9pZCBhdG9tQmFja1JlZmVyZW5j
ZSh1bnNpZ25lZCBzdWJwYXR0ZXJuSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCmluZGV4IDllMzYxNzA4NWQxYThhZTc3ZWJmNjhkZjM0ZTQ4MTdkYjVlZGMw
Y2MuLjIxZDc1YjE1OWFhN2RlMzk4OTdiNDgzZjE3OTRkZTJjNzM1YWYyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld0NoYXJhY3RlckNsYXNzKSk7CiAgICAgfQogCi0gICAgdm9pZCBhdG9tUGFyZW50
aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5n
PiBvcHRHcm91cE5hbWUgPSBzdGQ6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNT
dWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9wdEdyb3VwTmFtZSA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHN1
YnBhdHRlcm5JZCA9IG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMTsKICAgICAgICAgaWYg
KGNhcHR1cmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJV
bmljb2RlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyVW5p
Y29kZVByb3BlcnRpZXMuY3BwCmluZGV4IDAwYjhhYmQyY2I4OTBmZGI2NGQ3N2MxOWYwM2RhYjZh
ZjJhOGQ5NTMuLjViZTM5ODZiZWM5ODNlNWU1ZDZmNGEwZDEyZWRjZmRmMzZlMjg0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVz
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlIHsKIAogI2luY2x1ZGUgIlVu
aWNvZGVQYXR0ZXJuVGFibGVzLmgiCiAKLU9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lE
PiB1bmljb2RlTWF0Y2hQcm9wZXJ0eVZhbHVlKFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eU5h
bWUsIFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eVZhbHVlKQorc3RkOjpvcHRpb25hbDxCdWls
dEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShXVEY6OlN0cmlu
ZyB1bmljb2RlUHJvcGVydHlOYW1lLCBXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVydHlWYWx1ZSkK
IHsKICAgICBpbnQgcHJvcGVydHlJbmRleCA9IC0xOwogCkBAIC04NiwxMCArODYsMTAgQEAgT3B0
aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUo
V1RGOjpTdHJpbmcgdW5pY29kZVAKICAgICBpZiAocHJvcGVydHlJbmRleCA9PSAtMSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBPcHRpb25hbDxCdWlsdEluQ2hh
cmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRp
Y19jYXN0PGludD4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJ
RCkgKyBwcm9wZXJ0eUluZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNo
YXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0
aWNfY2FzdDxpbnQ+KEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5
SUQpICsgcHJvcGVydHlJbmRleCkpOwogfQogCi1PcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xh
c3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHkoV1RGOjpTdHJpbmcgdW5pY29kZVByb3BlcnR5VmFs
dWUpCitzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB1bmljb2RlTWF0Y2hQ
cm9wZXJ0eShXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVydHlWYWx1ZSkKIHsKICAgICBpbnQgcHJv
cGVydHlJbmRleCA9IC0xOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8QnVpbHRJbkNo
YXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nIHVuaWNvZGVQ
cm9wZXIKICAgICBpZiAocHJvcGVydHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4o
c3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PGludD4oQnVp
bHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJRCkgKyBwcm9wZXJ0eUlu
ZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+
KHN0YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1
aWx0SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQpICsgcHJvcGVydHlJ
bmRleCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGNyZWF0ZVVuaWNv
ZGVDaGFyYWN0ZXJDbGFzc0ZvcihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCB1bmljb2RlQ2xhc3NJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJv
cGVydGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0
aWVzLmgKaW5kZXggZjdmMWE2OWE0NzM4OGYzYmY5YWQ3OTZhMDRjY2MxMzUzYmMyNGNiNS4uZTdi
NThkMmFiZjlmZDI2YWUwOWJlZDUxM2U3ZGU4NmYxZjc0Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgKQEAgLTMyLDggKzMy
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAogc3RydWN0IENoYXJhY3Rl
ckNsYXNzOwogCi1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xh
c3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShXVEY6OlN0cmluZywgV1RGOjpTdHJpbmcp
OwotSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVu
aWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFs
dWUoV1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6
U3RyaW5nKTsKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBjcmVhdGVVbmljb2Rl
Q2hhcmFjdGVyQ2xhc3NGb3IoQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9DUFVUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9DUFVUaW1lLmgKaW5k
ZXggZTk4ODZlN2Y4ZjZjYTYxNTcyMTg4NTYyYzBlOTJkZmQ1ZjhjNGNjOC4uOTI2ODY5ZTVmMDc4
YjBkNzRjNmI2ZWViZWE1ZjFiY2U3OTExNDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q1BVVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NQVVRpbWUuaApAQCAtMzksNyArMzksNyBA
QCBzdHJ1Y3QgQ1BVVGltZSB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBlcmNl
bnRhZ2VDUFVVc2FnZVNpbmNlKGNvbnN0IENQVVRpbWUmKSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgT3B0aW9uYWw8Q1BVVGltZT4gZ2V0KCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGdldCgpOwogCiAgICAgLy8g
UmV0dXJucyB0aGUgY3VycmVudCBDUFUgdGltZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCiAgICAg
Ly8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkg
YXMgZ29vZCBvciBiZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDY4MGFh
ZWM5NGFhYzQ4OWE0ZGQ0MzJjODdiODgyNzA0Yjg5YjYyNWMuLjhjMWFlMjY2YzkwNjY1ZThlM2U0
MzA5NmFkNWFjODRmMTJmMzgzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAt
MTU1LDggKzE1NSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIFM+IHN0cnVjdCBD
cm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6CiB9OwogCiAvLyBEZWZhdWx0
IHNwZWNpYWxpemF0aW9uIGZvciBPcHRpb25hbCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNz
LgotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIE9wdGlvbmFsPFQ+PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGlj
IE9wdGlvbmFsPFQ+IGNvcHkoVSYmIHNvdXJjZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFQ+PiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gY29weShV
JiYgc291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRR
dWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCmluZGV4IGEyNDk4MGE2
YmUwMDQ5MmNhNTMxNTkxZmY4NDNhNzkwOWViZjljM2YuLjU2YzhlMjM4Y2EzM2IzYzRlN2QwNWI3
ZDk3ODg1NTlhNWRmMjNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFk
UXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKERhdGFUeXBlJiYpOwogCiAgICAgRGF0
YVR5cGUgd2FpdEZvck1lc3NhZ2UoKTsKLSAgICBPcHRpb25hbDxEYXRhVHlwZT4gdHJ5R2V0TWVz
c2FnZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0YVR5cGU+IHRyeUdldE1lc3NhZ2UoKTsKIAog
ICAgIHZvaWQga2lsbCgpOwogICAgIGJvb2wgaXNLaWxsZWQoKSBjb25zdDsKQEAgLTg3LDcgKzg3
LDcgQEAgRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OndhaXRGb3JNZXNzYWdl
KCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Ci1PcHRpb25hbDxEYXRhVHlwZT4g
Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQorc3RkOjpvcHRpb25h
bDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQog
ewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4IDBm
ZjhkZTNiNmYwZjE3MmY3MDczZTFkMGIyZjFkYTM4NDY1NWZlNDIuLmViZDY5YTRjNzZjZDdhY2Iw
YTIzM2JlNTUyMDcxMTU4Y2EyMTcxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTczNCw3ICs3MzQs
NyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBj
aGFyKiBkYXRlU3RyaW5nLCBib29sJiBpc0xvYwogICAgIGlmIChkYXkgPCAwKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIAotICAgIE9w
dGlvbmFsPGludD4geWVhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4geWVhcjsKICAgICBpZiAo
ZGF5ID4gMzEpIHsKICAgICAgICAgLy8gIyMjIHdoZXJlIGlzIHRoZSBib3VuZGFyeSBhbmQgd2hh
dCBoYXBwZW5zIGJlbG93PwogICAgICAgICBpZiAoKmRhdGVTdHJpbmcgIT0gJy8nKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcAppbmRleCA0ODMxYjA0N2Q1ODk5OWJlNzZiYTk1MDdlNGQwNTA1ZTIxM2VkM2I5
Li45MWRkY2YyNjE5MGI5NzI0YmExOTM1Y2QwZTNjMDA1YzE5OWI0YzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKICAgICBy
ZXR1cm4gc2FsdDsKIH0KIAotT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpIHsKICAg
ICAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpSZWFkKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBib29sIG1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQogICAgIHJldHVybiBz
dGQ6OmZpbGVzeXN0ZW06OnJlbW92ZV9hbGwoZnNPbGRQYXRoLCBlYyk7CiB9CiAKLU9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9j
b2RlIGVjOwogICAgIGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zaXplKHRvU3Rk
RmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCBib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAot
T3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgpCitz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6
ZmlsZXN5c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAtNjQx
LDcgKzY0MSw3IEBAIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0
UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKICAgICByZXR1cm4gIWVjOwogfQogCi1PcHRp
b25hbDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgdWludDY0X3QgbGlua0NvdW50ID0gc3RkOjpmaWxl
c3lzdGVtOjpoYXJkX2xpbmtfY291bnQodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpA
QCAtNjU1LDcgKzY1NSw3IEBAIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBmaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3Rk
OjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5
c3RlbTo6bGFzdF93cml0ZV90aW1lKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKQEAg
LTY4NCw3ICs2ODQsNyBAQCBib29sIGlzSGlkZGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9
CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKLXN0
YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxp
bmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVU
eXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKIHsKICAgICBz
dGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBzdGF0dXMgPSBzaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IHN0ZDo6ZmlsZXN5c3Rl
bTo6c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKSA6IHN0ZDo6ZmlsZXN5c3Rl
bTo6c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAtNzAx
LDEyICs3MDEsMTIgQEAgc3RhdGljIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZVBvdGVudGlh
bGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5nJiBwYXQKICAgICByZXR1cm4gRmlsZVR5
cGU6OlJlZ3VsYXI7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJp
bmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5r
cyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9CiAKLU9wdGlvbmFsPEZp
bGVUeXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0
ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3lt
TGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCAwNWMyNzIxZTI3MDFhY2MxZTA3M2RjOTc0MmIxMmNkZWEyYzZiNjFiLi5hZWNk
MDg0ZjlmNTJmNDdiYmMxZTQ4ZTM4YzY4YTg2MGJkOTc2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBz
eW1saW5rcy4KLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUo
UGxhdGZvcm1GaWxlSGFuZGxlKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGlt
ZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJik7IC8vIEZv
bGxvd3Mgc3ltbGlua3MuCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCk7IC8vIFNldHMgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbm93LgotV1RGX0VY
UE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitX
VEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlv
biB0aW1lLgogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmlu
ZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwpAQCAtMTIxLDE0ICsxMjEs
MTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3Jp
bmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1h
a2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBwYXRoRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHBhcmVudFBhdGgoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0
aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZy
ZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBj
b25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIAog
ZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0
cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZv
bGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3Mo
Y29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1ldGFkYXRhVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIgPSB7IH0pOwogCkBAIC0xNDMsNyArMTQzLDcgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIq
KTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAK
IHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwotV1RGX0VYUE9SVF9QUklWQVRF
IE9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBT
dHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJl
IHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpAQCAtMTY3LDcgKzE2Nyw3IEBA
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlu
ayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgbGlua1BhdGgpOwogLy8g
SGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25h
bDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhhcmRMaW5rQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsK
QEAgLTIwMCw3ICsyMDAsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogLy8gQWxsb3cgcmVh
ZGluZyBjbG91ZCBmaWxlcyB3aXRoIG5vIGxvY2FsIGNvcHkuCiBlbnVtIGNsYXNzIFBvbGljeVNj
b3BlIDogdWludDhfdCB7IFByb2Nlc3MsIFRocmVhZCB9OwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc2V0QWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoYm9vbCwgUG9saWN5U2NvcGUp
OwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdE
YXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsK
ICNlbmRpZgogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMu
Y3BwIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggZWM5ZTUzNDFiM2JhZGEx
MzdlMzBhMTdhMTRmMTVmYTdmZWQ3OWRiOC4uYzRiZWI2ZjAwZDA5NGNmOWU3OTc0YjVjNDc5MTFk
ODU5NTg3ZDQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTU2NiwyMSArNTY2LDIxIEBAIFN0
cmluZyBWYWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxib29sPiBWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAodHlw
ZSgpICE9IFR5cGU6OkJvb2xlYW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIG1fdmFsdWUuYm9vbGVhbjsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBWYWx1ZTo6YXNE
b3VibGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFZhbHVlOjphc0RvdWJsZSgpIGNv
bnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpEb3VibGUgJiYgdHlwZSgpICE9IFR5cGU6
OkludGVnZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFs
dWUubnVtYmVyOwogfQogCi1PcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAogewogICAgIGlmICh0
eXBlKCkgIT0gVHlwZTo6RG91YmxlICYmIHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHNpemVfdCBPYmplY3RC
YXNlOjptZW1vcnlDb3N0KCkgY29uc3QKICAgICByZXR1cm4gbWVtb3J5Q29zdDsKIH0KIAotT3B0
aW9uYWw8Ym9vbD4gT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6OmdldEJvb2xlYW4oY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsKICAg
ICBpZiAoIXZhbHVlKQpAQCAtNjU2LDcgKzY1Niw3IEBAIE9wdGlvbmFsPGJvb2w+IE9iamVjdEJh
c2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiB2YWx1
ZS0+YXNCb29sZWFuKCk7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91
YmxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBPYmpl
Y3RCYXNlOjpnZXREb3VibGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8g
dmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNjY0LDcgKzY2NCw3
IEBAIE9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91YmxlKGNvbnN0IFN0cmluZyYg
bmFtZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUtPmFzRG91YmxlKCk7CiB9CiAKLU9wdGlvbmFs
PGludD4gT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGludD4gT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdldFZhbHVlKG5hbWUpOwogICAgIGlmICgh
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmgKaW5kZXggYmUzM2JlODJiYThkZDA1ZGVlNTUwZWMxMDk2OTcz
N2Y5ZjQ4ZTdiZS4uMWMxZmRmMTFmMTllOTlkNWIwMzhlOGNhMGM0MGM5YjVhOTFmNWY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0pTT05WYWx1ZXMuaApAQCAtOTMsOSArOTMsOSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gVHlwZTo6TnVsbDsgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gYXNCb29sZWFu
KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBhc0ludGVnZXIoKSBjb25zdDsKLSAgICBPcHRp
b25hbDxkb3VibGU+IGFzRG91YmxlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBh
c0Jvb2xlYW4oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gYXNJbnRlZ2VyKCkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzRG91YmxlKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGFzU3RyaW5nKCkgY29uc3Q7CiAgICAgUmVmUHRyPFZhbHVlPiBhc1ZhbHVlKCk7CiAgICAg
dmlydHVhbCBSZWZQdHI8T2JqZWN0PiBhc09iamVjdCgpOwpAQCAtMTg4LDkgKzE4OCw5IEBAIHBy
b3RlY3RlZDoKICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgY29u
c3RfaXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8Ym9vbD4gZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIE9wdGlv
bmFsPGRvdWJsZT4gZ2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8aW50PiBnZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdldERvdWJsZShjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBnZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OwogICAgIFJlZlB0cjxPYmplY3Q+IGdldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OwogICAgIFJlZlB0cjxBcnJheT4gZ2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
YXJrYWJsZS5oCmluZGV4IGMzOWRkMzY2ZWY3ODhlNDQ0ZmU2NDY2ODc4ODY4ZmVkOWU3MmU4OGQu
LjkyNDhhODA4MzRmMjgxZWU3OThiNjA2NTVhNGI1NjQzOTczY2YyMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01hcmthYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFya2FibGUuaApA
QCAtMTA2LDExICsxMDYsMTEgQEAgcHVibGljOgogICAgICAgICA6IG1fdmFsdWUoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1hcmthYmxlKGNv
bnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICBjb25zdGV4cHIgTWFya2FibGUoY29uc3Qgc3Rk
OjpvcHRpb25hbDxUPiYgdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShib29sKHZhbHVlKSA/ICp2
YWx1ZSA6IFRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1h
cmthYmxlKE9wdGlvbmFsPFQ+JiYgdmFsdWUpCisgICAgY29uc3RleHByIE1hcmthYmxlKHN0ZDo6
b3B0aW9uYWw8VD4mJiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKGJvb2wodmFsdWUpID8gV1RG
TW92ZSgqdmFsdWUpIDogVHJhaXRzOjplbXB0eVZhbHVlKCkpCiAgICAgeyB9CiAKQEAgLTEyOCwy
MyArMTI4LDIzIEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgY29uc3QgVCYgb3BlcmF0b3IqKCkg
Y29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBjb25zdGV4cHIgVCYgb3BlcmF0b3IqKCkg
JiB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBvcGVyYXRvciBPcHRpb25hbDxUPigpICYmCisg
ICAgb3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPigpICYmCiAgICAgewogICAgICAgICBpZiAoYm9v
bCgqdGhpcykpCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShtX3ZhbHVlKTsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBvcGVyYXRvciBPcHRpb25hbDxUPigp
IGNvbnN0JgorICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKICAgICB7CiAg
ICAgICAgIGlmIChib29sKCp0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIE9wdGlvbmFsPFQ+IGFzT3B0
aW9uYWwoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8VD4gYXNPcHRpb25hbCgpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gT3B0aW9uYWw8VD4oKnRoaXMpOworICAgICAgICByZXR1cm4g
c3RkOjpvcHRpb25hbDxUPigqdGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggOWUwODgyNGJlNTU4MzY3OTY1OTAwMTM1
MGFiNDI3ZjAxMzM3NjA0Yy4uNWIwN2RmODA5NGRlMjliZmM3MzAwMDc3MzRhOTdjNTRhN2JhM2Zm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFBhZ2VDb3VudCh1bnNpZ25l
ZCBwYWdlQ291bnQpCiAgICAgc2luZ2xldG9uKCkubV9wYWdlQ291bnQgPSBwYWdlQ291bnQ7CiB9
CiAKLU9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JN
ZW1vcnlLaWxsKCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogewogICAgIHN3aXRjaCAobV9wcm9jZXNzU3RhdGUp
IHsKICAgICBjYXNlIFdlYnNhbVByb2Nlc3NTdGF0ZTo6SW5hY3RpdmU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDA1YTFmZjFhYTExZjcwYzAwY2FmYjE0ZTliYzg4
NWVhNDgyMGY4ZTAuLmZmZjIwZDMyODI4NWY2ZjZiNDY3NTJhNTFjOWNhNTYyOGM3MTY2ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0xMzksMTEgKzEzOSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBzaXplX3QgcmVzaWRlbnQgeyAwIH07CiAgICAgICAgICAg
ICBzaXplX3QgcGh5c2ljYWwgeyAwIH07CiAgICAgICAgIH07Ci0gICAgICAgIE9wdGlvbmFsPE1l
bW9yeVVzYWdlPiBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TWVtb3J5VXNhZ2U+IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKICAgICAgICAgdm9pZCBsb2dNZW1v
cnlVc2FnZUNoYW5nZSgpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIG1fbG9nU3RyaW5nOwotICAg
ICAgICBPcHRpb25hbDxNZW1vcnlVc2FnZT4gbV9pbml0aWFsTWVtb3J5OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPE1lbW9yeVVzYWdlPiBtX2luaXRpYWxNZW1vcnk7CiAKICAgICAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNfbG9nZ2luZ0VuYWJsZWQ7CiAgICAgfTsKQEAgLTE2
MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRMb2dNZW1vcnlNZW1vcnlQ
cmVzc3VyZUV2ZW50cyhib29sIHNob3VsZExvZykgeyBtX3Nob3VsZExvZ01lbW9yeU1lbW9yeVBy
ZXNzdXJlRXZlbnRzID0gc2hvdWxkTG9nOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8c2l6
ZV90PiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHRocmVzaG9sZEZvck1lbW9yeUtpbGwoKTsKICAgICB2b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVz
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCB1bmluc3RhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01vbm90b25pY1RpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaApp
bmRleCA1NDRhYTQ3N2MwMjVmYjQxNDVmMmU2NmIwMWNmNTBhNzg5MWYwNDQ3Li40Y2U3YWJjNTFh
MDI4M2M4YzVlYzRiZTQ0OTNjYmM1OWY4MGViYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Nb25vdG9uaWNUaW1lLmgKKysrIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCkBA
IC0xNDksOSArMTQ5LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0aW1l
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdGltZTsKICAgICAgICAgZGVjb2RlciA+
PiB0aW1lOwogICAgICAgICBpZiAoIXRpbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oIGIvU291
cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IGIwOGYwNTQ4NDU1YTY0ZTNlZDZm
YjRlOGE4ODBmYmMyMmExNDVlYTYuLjkxZTJmYmY4ODA0ZjBmYTE0N2FhOTJiMGM5NTBkY2M0ZDI5
ZDI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcxLDkgKzcxLDkgQEAgcHVi
bGljOgogICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICAgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIWlzVmFsaWRJZGVu
dGlmaWVyKCppZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09w
dGlvblNldC5oCmluZGV4IDc3ZTYyODliYzUwNjNkNDczYWRmN2JhOTkyNTVlNjZmNTQ3OTVkZDku
LmI1YTZhYzhkOWEwZjNjZjdhM2E1NjZmNDliYWJiNDljNWQ5YjgwYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgY29u
c3RleHByIE9wdGlvblNldChPcHRpb25hbDxFPiBvcHRpb25hbCkKKyAgICBjb25zdGV4cHIgT3B0
aW9uU2V0KHN0ZDo6b3B0aW9uYWw8RT4gb3B0aW9uYWwpCiAgICAgICAgIDogbV9zdG9yYWdlKG9w
dGlvbmFsID8gc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KCpvcHRpb25hbCkgOiAwKQogICAgIHsK
ICAgICB9CkBAIC0yMDYsOSArMjA2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdG9y
YWdlICYmICEobV9zdG9yYWdlICYgKG1fc3RvcmFnZSAtIDEpKTsKICAgICB9CiAKLSAgICBjb25z
dGV4cHIgT3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgpIGNvbnN0CisgICAgY29uc3RleHByIHN0
ZDo6b3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gaGFzRXhhY3RseU9uZUJpdFNldCgpID8gT3B0aW9uYWw8RT4oc3RhdGljX2Nhc3Q8RT4obV9z
dG9yYWdlKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBoYXNFeGFjdGx5T25lQml0
U2V0KCkgPyBzdGQ6Om9wdGlvbmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09
KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCBhZGY2ZmE4MGM0
ZjlmZTA4NGQyMWNkM2VjNjMxZWMyMGEwMzAwNzFlLi42NmUyNGFiYjM4ZGU0ZmY3NzNkZTRlNmVh
OWZiY2M2MmM5YjM5MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTI0LDggKzI0LDYgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIE9wdGlvbmFsID0gc3RkOjpv
cHRpb25hbDxUPjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxs
YmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUgb3B0aW9uYWwsIENhbGxiYWNr
IGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUKIHsKICAgICBy
ZXR1cm4gb3B0aW9uYWwgPyAqb3B0aW9uYWwgOiBjYWxsYmFjaygpOwpAQCAtMzMsNSArMzEsNCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcHRpb25hbFR5cGUsIGNsYXNzIENhbGxiYWNrPiBhdXRvIHZh
bHVlT3JDb21wdXRlKE9wdGlvbmFsVHlwZQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcg
V1RGOjpPcHRpb25hbDsKIHVzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0u
aAppbmRleCBlOTQ2MDEzYmRmZTQ4MTk4M2M0M2RmOTRiMWU3ZmUwMjE0YzM4YmMxLi43NjE1YjRl
NjI4OWNjMzk1MzFlOGVjZjY1MWIzNTc4NmU4MWYzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAg
LTMyNiw3ICszMjYsNyBAQCBGb3JtYXRJbXBsPFR5cGVzLi4uPiBmb3JtYXQoVHlwZXMuLi4gdmFs
dWVzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUpCiAgICAgICAgIG91dC5wcmludCgqdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IDg1
ZjAzNzI4MjU5NzYwNzI3ZTlhNDJlZDE0YmY5NTc2NTY5NzhlMTAuLmUzZmJkZmJhNGMyZDg1MGVi
ODU3ODhhYmJiYWZkM2FjZGY0ZWQ3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29u
ZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTIyOSw5ICsyMjksOSBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMg
T3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IHNlY29uZHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzZWNvbmRzOwogICAgICAgICBkZWNvZGVyID4+IHNlY29uZHM7CiAgICAgICAgIGlmICgh
c2Vjb25kcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93dGYvU29ydGVkQXJy
YXlNYXAuaAppbmRleCBmOTI4MTJiYTkyNDY3MmU0YmI5OGUxZTJjYTEwY2Y5NDkzNjljNzhlLi45
YjQ4YmVlZmE3NGRlNDkyNWY5MTdiN2M2MTI5NGY3MDhjMTRiNjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFy
cmF5TWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgZW51bSBjbGFzcyBBU0NJSVN1YnNldCB7IEFsbCwg
Tm9VcHBlcmNhc2VMZXR0ZXJzLCBOb1VwcGVyY2FzZUxldHRlcnNPcHRpbWl6ZWQgfTsKIHRlbXBs
YXRlPEFTQ0lJU3Vic2V0PiBzdHJ1Y3QgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbCB7CiAg
ICAgQVNDSUlMaXRlcmFsIGxpdGVyYWw7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gY29u
c3RleHByIENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW3NpemVdKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29tcGFyYWJsZVN0cmluZ1ZpZXc+IHBh
cnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSB7IHJldHVybiB7IHsgc3RyaW5nIH0gfTsgfQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBhcmFibGVTdHJpbmdWaWV3PiBwYXJzZShTdHJpbmdWaWV3
IHN0cmluZykgeyByZXR1cm4geyB7IHN0cmluZyB9IH07IH0KIH07CiAKIHVzaW5nIENvbXBhcmFi
bGVBU0NJSUxpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPEFTQ0lJU3Vic2V0
OjpBbGw+OwpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdW5zaWduZWRfdjxTdG9yYWdlSW50ZWdlcj4pOwogCiAgICAgdGVtcGxhdGU8dW5zaWdu
ZWQgc2l6ZT4gY29uc3RleHByIFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcyhjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbc2l6ZV0pOwotICAgIHN0YXRpYyBPcHRpb25hbDxQYWNrZWRBU0NJSUxvd2VyQ29k
ZXM+IHBhcnNlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhY2tlZEFT
Q0lJTG93ZXJDb2Rlcz4gcGFyc2UoU3RyaW5nVmlldyk7CiAgICAgY29uc3RleHByIFN0b3JhZ2VJ
bnRlZ2VyIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAt
MzQxLDcgKzM0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiB0ZW1wbGF0
ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgU3RvcmFnZUludGVnCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+IGF1dG8gUGFja2VkQVND
SUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPjo6cGFyc2UoU3RyaW5nVmlldyBzdHJpbmcpIC0+
IE9wdGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcz4KK3RlbXBsYXRlPHR5cGVuYW1lIFN0b3Jh
Z2VJbnRlZ2VyPiBhdXRvIFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj46OnBh
cnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJD
b2Rlcz4KIHsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gc2l6ZW9mKFN0b3JhZ2VJbnRlZ2Vy
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1N0YWNrVHJhY2UuY3BwIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKaW5kZXgg
ZmY2MWU2NmIzNDNmYWJkYzdhN2IxOTdkNzkzMWNjNDZiNzAwYzI2MC4uZDQzMmUwZTY4YzYyZmVl
ODljZDY3YzFiMzdiMjE2ZGE3YTE5NmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3Rh
Y2tUcmFjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IFN0YWNrVHJhY2U6OmNhcHR1cmVT
dGFja1RyYWNlKGludCBtYXhGcmFtZXMsIGludCBmcmEKICAgICByZXR1cm4gdHJhY2U7CiB9CiAK
LWF1dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IE9wdGlvbmFsPERlbWFuZ2xl
RW50cnk+CithdXRvIFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHZvaWQqIHBjKSAtPiBzdGQ6Om9wdGlv
bmFsPERlbWFuZ2xlRW50cnk+CiB7CiAjaWYgSEFWRShETEFERFIpCiAgICAgY29uc3QgY2hhciog
bWFuZ2xlZE5hbWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tU
cmFjZS5oIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5oCmluZGV4IDg2ZWQ0YjgwOGNiYzJj
MWVjMTNlY2RmOTM4MGE0MDVkN2MyYzMyODMuLmYyN2ZhNzU0YzhjN2Y1MjkxNTFlODFjMTI4ZTdh
MjA3MmM0OWUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgY2hhcltdLCBTeXN0ZW1GcmVlPGNvbnN0IGNo
YXJbXT4+IG1fZGVtYW5nbGVkTmFtZTsKICAgICB9OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBPcHRpb25hbDxEZW1hbmdsZUVudHJ5PiBkZW1hbmdsZSh2b2lkKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlbWFuZ2xlRW50cnk+IGRlbWFu
Z2xlKHZvaWQqKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mLCBjb25zdCBjaGFyKiBpbmRlbnRTdHJpbmcgPSBudWxscHRyKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAKaW5kZXggMzE3YTQ2ZmMyMDRlOTc0ZGFiZGI1MDNlODIzMmEzYTRiZTIwMjhlZC4u
ZDE4MDJiZDEyZjIxNWQ5NGIyYzk0MmRiMWU2MTU0OTJiNzAwMDkxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBMb2NrIFRocmVhZDo6c19h
bGxUaHJlYWRzTG9jazsKIAotc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRocmVh
ZFR5cGUgdGhyZWFkVHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXpl
KFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKIHsKICAgICAvLyBSZXR1cm4gdGhlIHN0YWNrIHNpemUg
Zm9yIHRoZSBjcmVhdGVkIHRocmVhZCBiYXNlZCBvbiBpdHMgdHlwZS4KICAgICAvLyBJZiB0aGUg
c3RhY2sgc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHVzZSB0aGUgc3lzdGVtIGRlZmF1bHQu
IFBsYXRmb3JtcyBjYW4gdHVuZSB0aGUgdmFsdWVzIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IDk4
MDA1NTIwZTUxNjliOWQyMjk5NjExZmY2YTU4NjBkOGMyMTFiZTguLmNmYWU0MmE0NDE3YTAxNjcy
MGIwM2NlNjNjMWQ3M2YyZGQ5OTMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0yNjAsNyArMjYwLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAKICAgICAvLyBJ
bnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBpbXBsZW1lbnRh
dGlvbi4KLSAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiwgT3B0aW9u
YWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUyk7CisgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCosIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUyk7CiAK
ICNpZiBVU0UoUFRIUkVBRFMpCiAgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFu
ZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDc1ODEzNzgxNDU2ZTkxM2ZiZGY0
M2M3ZThlOGQ3ODg2OTlhYzFmNmQuLmUyZTljYmY2NWMwOTFjZTgxZWMyYmYyMDk3ZDQyNTE2Mjk0
NzM3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBt
X2hvc3RFbmQgLSBzdGFydCk7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBj
b25zdAorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDogc3Rk
OjpudWxsb3B0OwogfQpAQCAtMTU2LDcgKzE1Niw3IEBAIFN0cmluZyBVUkw6OnByb3RvY29sSG9z
dEFuZFBvcnQoKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVj
b2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1
ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIGNsZWFy
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQogICAgICAgICBtYXAtPmNsZWFy
KCk7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmlu
Z1ZpZXcgcHJvdG9jb2wpCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclBy
b3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07CkBAIC00NzQs
NyArNDc0LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogICAgICkp
OwogfQogCi12b2lkIFVSTDo6c2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK3ZvaWQg
VVJMOjpzZXRQb3J0KHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCiB7CiAgICAgaWYgKCFt
X2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBib29sIFVSTDo6
cHJvdG9jb2xJc0Fib3V0KCkgY29uc3QKIAogYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAKICAgICAvLyBTaW5jZSBt
b3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0
IiBjYXNlLgogICAgIGlmICghcG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5o
IGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggOTBlNzU4NjdhY2Y5Y2QzYzIxYjE3NDAzZWIz
ZmJjMDAxMGIzNTVkNC4uZjQ0NTQyMWUxZmUyM2NhYmI2MTU3ZjcwZDljNDQ2YTI4NmM1ZjA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJM
LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nVmlldyBwYXRoKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcg
bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
VmlldyBxdWVyeSgpIGNvbnN0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4pOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNldFBvcnQoc3RkOjpvcHRpb25hbDx1aW50MTZfdD4pOwogCiAgICAgLy8g
SW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyk7CkBAIC0xOTcsNyArMTk3
LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aGFzU3BlY2lhbFNjaGVtZSgpIGNvbnN0OwogCkBAIC0yNTcsNyArMjU3LDcgQEAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciogcHJv
dG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3Ry
aW5nVmlldyB1cmwpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZh
bWlseShTdHJpbmdWaWV3IHVybCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50
MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNr
bGlzdCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2VkIGZvciBXZWIgcmVzb3VyY2VzLgog
CkBAIC0yNzIsNyArMjcyLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRo
VVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogI2lmZGVmIF9fT0JKQ19fCiAKIFdU
Rl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBV
UkwmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50
KGNvbnN0IFVSTCosIGlkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFVSTD4g
bWFrZVZlY3RvckVsZW1lbnQoY29uc3QgVVJMKiwgaWQpOwogCiAjZW5kaWYKIApAQCAtMjk3LDkg
KzI5Nyw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5n
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJp
bmc7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VS
TEhlbHBlcnMuY3BwCmluZGV4IGYyNjhmMTBhYjdjNjg1MmM0YjIyZDM5ODEwMGUyYjY3YTUxMTUw
NDMuLjljMTVlN2YxZjA5MDRjYjE0OTA2NzUyYmU3Yjc2YTY4MGNmZjc1ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhl
bHBlcnMuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2gKIH0K
IAogdGVtcGxhdGUgPFVTY3JpcHRDb2RlIFNjcmlwdFR5cGU+Ci1ib29sIGlzTG9va2FsaWtlU2Vx
dWVuY2UoY29uc3QgT3B0aW9uYWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMy
IGNvZGVQb2ludCkKK2Jvb2wgaXNMb29rYWxpa2VTZXF1ZW5jZShjb25zdCBzdGQ6Om9wdGlvbmFs
PFVDaGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjb2RlUG9pbnQpCiB7CiAgICAg
aWYgKCFwcmV2aW91c0NvZGVQb2ludCB8fCAqcHJldmlvdXNDb2RlUG9pbnQgPT0gJy8nKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBpc0xvb2thbGlrZVNl
cXVlbmNlKGNvbnN0IE9wdGlvbmFsPFVDaGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIz
MiBjb2QKICAgICAgICAgfHwgaXNMb29rYWxpa2VQYWlyKCpwcmV2aW91c0NvZGVQb2ludCwgY29k
ZVBvaW50KTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoY29uc3QgT3B0
aW9uYWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNvZGVQb2ludCkKK3N0
YXRpYyBib29sIGlzTG9va2FsaWtlQ2hhcmFjdGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VUNoYXIz
Mj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNvZGVQb2ludCkKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJh
Y3RlcnM6CiAgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVy
IGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgYm9v
bCBhbGxDaGFyYWN0ZXJzSW5BbGxvd2VkSUROU2NyaXB0TGlzdChjb25zdCBVQ2hhciogYnVmZmVy
LCBpbnQzMl90IGxlbgogewogICAgIGxvYWRJRE5BbGxvd2VkU2NyaXB0TGlzdCgpOwogICAgIGlu
dDMyX3QgaSA9IDA7Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKICAgICB3aGlsZSAo
aSA8IGxlbmd0aCkgewogICAgICAgICBVQ2hhcjMyIGM7CiAgICAgICAgIFUxNl9ORVhUKGJ1ZmZl
ciwgaSwgbGVuZ3RoLCBjKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgYm9vbCBhbGxDaGFy
YWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5n
dGgpCiB9CiAKIC8vIFJldHVybiB2YWx1ZSBvZiBudWxsIG1lYW5zIG5vIG1hcHBpbmcgaXMgbmVj
ZXNzYXJ5LgotT3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3RO
YW1lLCBVUkxEZWNvZGVGdW5jdGlvbiBkZWNvZGVGdW5jdGlvbikKK3N0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlv
biBkZWNvZGVGdW5jdGlvbikKIHsKICAgICBpZiAoaG9zdE5hbWUubGVuZ3RoKCkgPiBob3N0TmFt
ZUJ1ZmZlckxlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNjA5LDcgKzYwOSw3
IEBAIE9wdGlvbmFsPFN0cmluZz4gbWFwSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwg
VVJMRGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVuCiAgICAgcmV0dXJuIFN0cmluZyhkZXN0aW5hdGlv
bkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CiB9CiAKLXVzaW5nIE1hcHBpbmdSYW5n
ZXNWZWN0b3IgPSBPcHRpb25hbDxWZWN0b3I8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQs
IFN0cmluZz4+PjsKK3VzaW5nIE1hcHBpbmdSYW5nZXNWZWN0b3IgPSBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25lZCwgU3RyaW5nPj4+OwogCiBzdGF0aWMg
dm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1
bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBNYXBwaW5nUmFuZ2VzVmVjdG9yJiBh
cnJheSwgVVJMRGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVuY3Rpb24pCiB7CkBAIC02MTcsNyArNjE3
LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgbG9jYXRpb24KICAgICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBu
dWxsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5k
aWNhdGUgZXJyb3IuCiAKICAgICBTdHJpbmcgc3Vic3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZ1No
YXJpbmdJbXBsKGxvY2F0aW9uLCBsZW5ndGgpOwotICAgIE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9
IG1hcEhvc3ROYW1lKHN1YnN0cmluZywgZGVjb2RlRnVuY3Rpb24pOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3Vic3RyaW5nLCBkZWNvZGVGdW5jdGlvbik7
CiAKICAgICBpZiAoaG9zdCAmJiAhKmhvc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Myw3ICs3
NzMsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2FmZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBzb3VyY2VCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc291cmNlQnVmZmVyLmxl
bmd0aCgpOwogCi0gICAgT3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKIAogICAgIHVuc2lnbmVk
IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkxIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmgKaW5kZXgg
NzBkOGU5NDRlOTQwOWYyYzc5NTI0MjI2YTBkNjFhNmE0NmJkM2E4Yi4uNGU2Y2I0N2I5Y2ViMDAw
NWM0ZWY5MzI0ZGVjNGI2OWEwYThmZDhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJM
SGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuaApAQCAtNDAsNyArNDAs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVzZXJWaXNpYmxlVVJMKGNvbnN0IENTdHJp
bmcmIFVSTCk7CiB2b2lkIGxvYWRJRE5BbGxvd2VkU2NyaXB0TGlzdCgpOwogdm9pZCBhZGRTY3Jp
cHRUb0lETkFsbG93ZWRTY3JpcHRMaXN0KGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUpOwogdm9pZCBp
bml0aWFsaXplRGVmYXVsdElETkFsbG93ZWRTY3JpcHRMaXN0KCk7Ci1PcHRpb25hbDxTdHJpbmc+
IG1hcEhvc3ROYW1lKGNvbnN0IFN0cmluZyYsIFVSTERlY29kZUZ1bmN0aW9uKTsKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmLCBVUkxEZWNvZGVGdW5jdGlv
bik7CiBTdHJpbmcgbWFwSG9zdE5hbWVzKGNvbnN0IFN0cmluZyYsIFVSTERlY29kZUZ1bmN0aW9u
KTsKIAogfSAvLyBuYW1lc3BhY2UgVVJMSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggNDZl
NDUzOWM1ZGJkMzExODBjN2YyMDJjZGFjODEyN2ZmZWJkYjRjMS4uYmUxYTdlNjcxMGMwMDMyNjUy
ZTQ4MzgwOTRlZTBlYzdmMmM4OTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC01NzQsNyArNTc0
LDcgQEAgdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNo
YXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmMKICAgICB9CiB9CiAKLU9wdGlvbmFsPHVpbnQx
Nl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUp
CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyBzY2hlbWUpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBm
dHBQb3J0ID0gMjE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBodHRwUG9ydCA9IDgw
OwpAQCAtNjk4LDcgKzY5OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUo
U3RyaW5nVmlldyBzY2hlbWUpCiAgICAgfQogfQogCi1PcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNl
cjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwODAsOSArMjA4MCw5IEBAIHN0YXRpYyBzaXplX3QgemVy
b1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBz
aXplX3QKICAgICByZXR1cm4gZW5kIC0gYmVnaW47CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzaXpl
X3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+
JiBhZGRyZXNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9T
ZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKIHsKLSAgICBP
cHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxvbmdl
c3Q7CiAgICAgc2l6ZV90IGxvbmdlc3RMZW5ndGggPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgODsgaSsrKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB6ZXJvU2VxdWVuY2VMZW5n
dGgoYWRkcmVzcywgaSk7CkBAIC0yMjkyLDcgKzIyOTIsNyBAQCBFeHBlY3RlZDxVUkxQYXJzZXI6
OklQdjRBZGRyZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFy
c2VJUAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8dWlu
dDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVS
TFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvcikKIHsKICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMjUsMTEgKzIzMjUsMTEgQEAgT3B0aW9uYWw8
dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9w
dGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVz
c0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCitz
dGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0
QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0
b3IpCiB7CiAgICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9
IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCisgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRv
cikpCiAgICAgICAgICAgICBhZGRyZXNzID0gKGFkZHJlc3MgPDwgOCkgKyBwaWVjZS52YWx1ZSgp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM0
Nyw3ICsyMzQ3LDcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnQKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVS
TFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBj
KQorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKIHsKICAgICBBU1NF
UlQoKmMgPT0gJ1snKTsKICAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CkBAIC0yMzU3LDcg
KzIzNTcsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBh
cnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogCiAgICAgSVB2NkFkZHJlc3MgYWRk
cmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwogICAgIHNpemVfdCBwaWVjZVBvaW50
ZXIgPSAwOwotICAgIE9wdGlvbmFsPHNpemVfdD4gY29tcHJlc3NQb2ludGVyOworICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CiAgICAgYm9vbCBwcmV2aW91c1ZhbHVl
V2FzWmVybyA9IGZhbHNlOwogICAgIGJvb2wgaW1tZWRpYXRlbHlBZnRlckNvbXByZXNzID0gZmFs
c2U7CiAKQEAgLTIzODgsNyArMjM4OCw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocGllY2VQb2ludGVyID09
IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPCA2KSkgewotICAgICAgICAg
ICAgaWYgKE9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJl
c3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkgewogICAg
ICAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyID09IDUpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBPcHRpb25h
bDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcgogICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxl
Q29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CisgICAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdl
c3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CiAgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVy
KQogICAgICAgICBwb3NzaWJsZUNvbXByZXNzUG9pbnRlci52YWx1ZSgpKys7CiAgICAgaWYgKFVO
TElLRUxZKGNvbXByZXNzUG9pbnRlciAhPSBwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikpCkBAIC0y
NTE0LDcgKzI1MTQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNsYXNoKCkK
ICAgICBtX3VybC5tX3F1ZXJ5RW5kICs9IDI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IE9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9t
YWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFy
QnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbikKIHsKICAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKICAgICBpZiAoZG9tYWlu
LmlzQWxsQVNDSUkoKSAmJiAhc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb21h
aW4sICJ4bi0tIikpIHsKQEAgLTI3ODcsNyArMjc4Nyw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJz
ZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNl
cjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGF1dG8gdXRmOCA9IGlu
cHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAgaWYgKHV0ZjguaXNOdWxsKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBh
cnNlci5oCmluZGV4IDRlODA1MDY5M2FhODhkMzVjNzgzNDhjYjU3MzhkMDMwODc2YTc5MWUuLjA4
YzMxNTgyYzFjZWY5NWRkZDE0M2UyNzZkNDk1MjI1NDI2MjQwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCkBA
IC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IG1heWJl
Q2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKICAgICBzdGF0aWMgY29uc3QgVUlETkEmIGlu
dGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwogICAgIHN0YXRpYyBib29sIGlzSW5V
c2VySW5mb0VuY29kZVNldChVQ2hhcik7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8dWludDE2X3Q+
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CiAKIHBy
aXZhdGU6CiAgICAgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKQEAgLTk5LDEwICs5OSwxMCBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBw
ZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0
ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVy
eUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPExDaGFyQnVmZmVyPiBkb21h
aW5Ub0FTQ0lJKFN0cmluZ0ltcGwmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWlu
VG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENo
YXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICBzdGF0aWMgTENoYXJCdWZmZXIg
cGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7CiAgICAg
c3RhdGljIGJvb2wgaGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChjb25zdCBMQ2hhckJ1ZmZlciYp
OwogICAgIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhfdCk7CiAgICAgdm9pZCBhcHBlbmRU
b0FTQ0lJQnVmZmVyKFVDaGFyMzIpOwpAQCAtMTI1LDkgKzEyNSw5IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+
IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5
bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBh
cnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CiAgICAgdXNpbmcg
SVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNz
SW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFy
c2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
UHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsK
ICAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGY2ODQ1
ODA0ZTFlY2I3ZjViZTkxNGQ1MzJiN2Q3NjI5M2JjNDgyMjQuLmJlN2I4YmJiY2FlMWI4ODg5MDZh
NzdlNzA3MmJmODdhMTcwNzU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0xNzA1LDEwICsxNzA1LDEwIEBAIHN0
cnVjdCBDb21wYWN0TWFwVHJhaXRzIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgQ29tcGFjdE1hcFRyYWl0czxPcHRpb25hbDxUPj4geworc3RydWN0IENvbXBhY3RNYXBUcmFp
dHM8c3RkOjpvcHRpb25hbDxUPj4gewogICAgIHVzaW5nIEl0ZW1UeXBlID0gVDsKLSAgICBzdGF0
aWMgYm9vbCBoYXNWYWx1ZShjb25zdCBPcHRpb25hbDxUPiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJu
ICEhcmV0dXJuVmFsdWU7IH0KLSAgICBzdGF0aWMgSXRlbVR5cGUgZXh0cmFjdFZhbHVlKE9wdGlv
bmFsPFQ+JiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuIFdURk1vdmUoKnJldHVyblZhbHVlKTsgfQor
ICAgIHN0YXRpYyBib29sIGhhc1ZhbHVlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHJldHVyblZh
bHVlKSB7IHJldHVybiAhIXJldHVyblZhbHVlOyB9CisgICAgc3RhdGljIEl0ZW1UeXBlIGV4dHJh
Y3RWYWx1ZShzdGQ6Om9wdGlvbmFsPFQ+JiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuIFdURk1vdmUo
KnJldHVyblZhbHVlKTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9DUFVUaW1lQ29jb2EuY3BwCmluZGV4IGJkZjljZjUxODg1YWFmMzcxM2QwMGRiZWU5ZTFk
ZDU1Yjk5N2UzMTEuLjRlMWVlOTA1ZDZjNzU2MTVlZWI4ZTk5ZTk5MWY1MTU4Mzc4MDA5MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0
aWMgaW50NjRfdCB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyhjb25zdCB0aW1lX3ZhbHVlX3QmIHZh
bHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6
OmdldCgpCitzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiB7CiAgICAgLy8g
QWNjb3VudCBmb3IgY3VycmVudCB0aHJlYWRzLgogICAgIHRhc2tfdGhyZWFkX3RpbWVzX2luZm8g
dGhyZWFkSW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5k
ZXggOGU2OTcxZDUxMjRlYTc1NDg2MjczZWExMjRmMjJjNjQwOGY0ZTQ2OS4uOGY5MDA3OTk3MmU4
ZmI0NTg5YWEwY2NhYjAyOTNmZjg4ODkwNDU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Y29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgc2V0QWxsb3dzTWF0ZXJpYWxp
emluZ0RhdGFsZXNzRmlsZXMoYm9vbCBhbGxvdywgUG9saWN5U2NvcGUgc2NvcGUpCiAjZW5kaWYK
IH0KIAotT3B0aW9uYWw8Ym9vbD4gYWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoUG9s
aWN5U2NvcGUgc2NvcGUpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdE
YXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlIHNjb3BlKQogewogI2lmZGVmIElPUE9MX1RZUEVfVkZT
X01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTCiAgICAgaW50IHJldCA9IGdldGlvcG9saWN5X25w
KElPUE9MX1RZUEVfVkZTX01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTLCB0b0lPUG9saWN5U2Nv
cGUoc2NvcGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNz
dXJlSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyQ29jb2EubW0KaW5kZXggYjY4NzM3ZGE2ZTI5MjM1ZDUxMjUwODAyMTE5ZjJiOGZjNjM3
ZDMyOS4uYTdiYmRkMzkwYjgwOWNhYjY4ZjExZTc3NmUzMThmZjk1ZjhiMDhmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAg
LTE5Miw3ICsxOTIsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVt
b3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogI2VuZGlmCiB9CiAKLU9w
dGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4g
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2Uo
KQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVt
b3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1l
bW9yeVVzYWdlKCkKIHsKICAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKICAgICBtYWNo
X21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCA3NTA4ZjJmNGYyZGM0MmU4MmFmODFmNjM0ODIwYzVk
ZDc2MDY1ZDBmLi40NWQyYjRkYzRiOGE4ZGZmMmE1ZjE5ZTg2YmYwODEyYmQwNDQ2MWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBT
dHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIE5TU3Ry
aW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQogewotICAgIE9wdGlvbmFsPFN0
cmluZz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN0cmluZywgbnVsbHB0cik7CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGhvc3QgPSBtYXBIb3N0TmFtZShzdHJpbmcsIG51bGxwdHIpOwogICAgIGlm
ICghaG9zdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gISpob3N0ID8gc3RyaW5n
IDogKE5TU3RyaW5nICopKmhvc3Q7CkBAIC0xMDgsNyArMTA4LDcgQEAgTlNTdHJpbmcgKmRlY29k
ZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCiAKIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShO
U1N0cmluZyAqc3RyaW5nKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9IG1hcEhvc3RO
YW1lKHN0cmluZywgZGVjb2RlUGVyY2VudEVzY2FwZXMpOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3RyaW5nLCBkZWNvZGVQZXJjZW50RXNjYXBlcyk7CiAg
ICAgaWYgKCFob3N0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiAhKmhvc3QgPyBz
dHJpbmcgOiAoTlNTdHJpbmcgKikqaG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmNwcAppbmRleCBjNWJjYjA2YmVhNjQw
MGJjNWRmNDgxMGIwM2I2MjdkNGI4ZTRkZjg3Li5lOTI4YjFlZDYxM2I5YmIxNzljZmY3NzI0MDhi
OWMxMTIyMzdkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+JiBhcHBsaWNhdGlvblNES1ZlcnNp
b25PdmVycmlkZSgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIGFwcGxpY2F0aW9u
U0RLVmVyc2lvbk92ZXJyaWRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9u
YWw8dWludDMyX3Q+PiB2ZXJzaW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90Pj4gdmVyc2lvbjsKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCBhMTc5NzIwMzc5MzA2ZDA5Mjc1NzhiNDBkYTI0MjAz
YTRhMzIwYjAzLi5kMWQxYjFiZGI2YzUyMmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtOTIsNyArOTIsNyBAQCBSZXRhaW5QdHI8aWQ+IG1h
a2VOU0FycmF5RWxlbWVudChjb25zdCBVUkwmIHZlY3RvckVsZW1lbnQpCiAgICAgcmV0dXJuIGFk
b3B0TlMoKF9fYnJpZGdlX3RyYW5zZmVyIGlkKXZlY3RvckVsZW1lbnQuY3JlYXRlQ0ZVUkwoKS5s
ZWFrUmVmKCkpOwogfQogCi1PcHRpb25hbDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFVS
TCosIGlkIGFycmF5RWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VVJMPiBtYWtlVmVjdG9yRWxlbWVu
dChjb25zdCBVUkwqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50
IGlzS2luZE9mQ2xhc3M6TlNVUkwuY2xhc3NdKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKaW5kZXggNmU4NDQ0YWZkMzU5NzU3NTEzY2E2
YzY4Yzc2OTczOGUxMTE0NDg2Mi4uNTEyM2M1N2Q5MjA0ZmFhMmVkZDYxZmM2Mjg1NzMwZjhkZWU0
YzY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCkBAIC0zOCwxNCArMzgsMTQgQEAg
bmFtZXNwYWNlIFdURiB7CiAvLyBhIGNvbnN0JiB0byBhIGNvbGxlY3Rpb24gZWxlbWVudCBhbmQg
Y2FuIHJldHVybiBlaXRoZXIgYSBSZXRhaW5QdHI8aWQ+IG9yIGFuIGlkCiAvLyBpZiB0aGUgdmFs
dWUgaXMgYXV0b3JlbGVhc2VkLiBUaGUgbWFrZVZlY3RvckVsZW1lbnQgZnVuY3Rpb24gdGFrZXMg
YW4gaWdub3JlZAogLy8gcG9pbnRlciB0byB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZSwgbWFraW5n
IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgd29yaywgYW5kIGFuCi0vLyBpZCBmb3IgdGhlIGFy
cmF5IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIE9wdGlvbmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9y
IGVsZW1lbnQsCisvLyBpZCBmb3IgdGhlIGFycmF5IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIHN0
ZDo6b3B0aW9uYWw8VD4gb2YgdGhlIHRoZSB2ZWN0b3IgZWxlbWVudCwKIC8vIGFsbG93aW5nIHVz
IHRvIGZpbHRlciBvdXQgYXJyYXkgZWxlbWVudHMgdGhhdCBhcmUgbm90IG9mIHRoZSBleHBlY3Rl
ZCB0eXBlLgogLy8KIC8vICAgIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0
IENvbGxlY3Rpb25FbGVtZW50VHlwZSYgY29sbGVjdGlvbkVsZW1lbnQpOwogLy8gICAgICAgIC1v
ci0KIC8vICAgIGlkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSYg
dmVjdG9yRWxlbWVudCk7CiAvLwotLy8gICAgT3B0aW9uYWw8VmVjdG9yRWxlbWVudFR5cGU+IG1h
a2VWZWN0b3JFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50
KTsKKy8vICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3JFbGVt
ZW50KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50KTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0Fy
cmF5KENvbGxlY3Rpb25UeXBlJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5
cGU+IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZnVjaHNpYS9DUFVUaW1lRnVjaHNpYS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNwcAppbmRleCA3ZTc3MzE2MTI0OGZj
ZTU2NDYwY2YyN2NlOTVjZWNmYzI1ODMyN2ExLi5mYWJmNGM4YzRiMmNhZGQxY2NjYTQyNjczODYw
OTM1ZTQ4OTA5NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVG
dWNoc2lhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNw
cApAQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgU2Vjb25kcyB0aW1lVG9TZWNvbmRzKHp4X3RpbWVf
dCB0KQogICAgIHJldHVybiBTZWNvbmRzKHQgLyBzdGF0aWNfY2FzdDxkb3VibGU+KFpYX1NFQygx
KSkpOwogfQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQorc3RkOjpvcHRpb25h
bDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAgIC8vIEZ1Y2hzaWEgaXNzdWUgWlgtMjMx
OCB0cmFja3MgYmVpbmcgYWJsZSB0byBnZXQgdGhlIG1vbm90b25pYyBhbmQgdGhyZWFkCiAgICAg
Ly8gdGltZXMgYXRvbWljYWxseSBhbmQgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBaWF9DTE9DS19U
SFJFQUQgaW50byB1c2VyIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5jcHAKaW5kZXggMWFlYTQ2YWFlYTI2OTZkMDBi
Y2ZjMmE4YTc1ZGYxYzk0MjQyN2FkYi4uNDUzMzg3M2Q5NjE1YTlhZTRjYTM0NjI1NmQ3MDI3M2Rk
MzUxOTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVBy
ZXNzdXJlSGFuZGxlckdlbmVyaWMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCwgU3luY2hyb25v
dXMpCiB7CiB9CiAKLU9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2Vy
OjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRm
b3JtTWVtb3J5VXNhZ2UoKQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJl
bGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9n
Z2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lzVHlwZS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAppbmRleCAyZGQ2NWY0NmI1YjA4Y2I5ODA4
YzA5MTNiMzY3MGQ2MDMwYzIzZTAzLi5hMWQ3NzY5NDJkOTMzMTVlMzIwN2FhOTBjZjY4MTlkZjM1
ZmQ0MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFk
TWFjaGluZUluZm9DaGFzc2lzVHlwZSgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDaGFzc2lzVHlw
ZT4gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKQogewogICAgIEdVbmlxdWVPdXRQdHI8Y2hh
cj4gYnVmZmVyOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKQEAgLTYxLDcgKzYx
LDcgQEAgc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkTWFjaGluZUluZm9DaGFzc2lz
VHlwZSgpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENo
YXNzaXNUeXBlPiByZWFkRE1JQ2hhc3Npc1R5cGUoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2hh
c3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCiB7CiAgICAgR1VuaXF1ZU91dFB0cjxjaGFy
PiBidWZmZXI7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwpAQCAtOTYsNyArOTYs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBl
PiByZWFkQUNQSUNoYXNzaXNUeXBlKCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENoYXNzaXNUeXBl
PiByZWFkQUNQSUNoYXNzaXNUeXBlKCkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGJ1ZmZl
cjsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CkBAIC0xMjksNyArMTI5LDcgQEAg
Q2hhc3Npc1R5cGUgY2hhc3Npc1R5cGUoKQogICAgIHN0YXRpYyBDaGFzc2lzVHlwZSBjaGFzc2lz
VHlwZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUNoYXNzaXM7CiAgICAg
c3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUNoYXNzaXMsIFtdIHsKLSAgICAgICAgT3B0aW9uYWw8
Q2hhc3Npc1R5cGU+IG9wdGlvbmFsQ2hhc3Npc1R5cGUgPSByZWFkTWFjaGluZUluZm9DaGFzc2lz
VHlwZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENoYXNzaXNUeXBlPiBvcHRpb25hbENoYXNz
aXNUeXBlID0gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKTsKICAgICAgICAgaWYgKCFvcHRp
b25hbENoYXNzaXNUeXBlKQogICAgICAgICAgICAgb3B0aW9uYWxDaGFzc2lzVHlwZSA9IHJlYWRE
TUlDaGFzc2lzVHlwZSgpOwogICAgICAgICBpZiAoIW9wdGlvbmFsQ2hhc3Npc1R5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDQzMDJmYTlmMWI0YmJhYTlmM2U5
OTczMmY1YjI4YzZjYjNmZDgzOWIuLjFiNjZmMGVmYmE2ZmQzOTIzOTRiMmJiMzYxYjRhOTgzZWQx
NmFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykK
ICNlbmRpZgogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGluZm8gPSBhZG9wdEdS
ZWYoZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9T
VEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFpbmZvKQpAQCAtMTI4
LDcgKzEyOCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlKQogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvLmdldCgpKTsK
IH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikK
K3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikK
IHsKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlv
biB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/CiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJu
IC0xOwogfQogCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
Q1N0cmluZyYgZnNGaWxlKQogewogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUlu
Zm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmls
ZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRleCA2
MTViZDEyNTdjODk3MjQwNzQzZjNiNTVhMjYyMTNiNjJhMDM5MDg1Li5hZmMzM2YzOGQ0MjMzNWJk
OWU2MTI2YTRhNzhhNTA3MTBkYjI2MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29kZXIgewogICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAg
ICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKaW5kZXggYjYwMzVkYjRlNzRkNzY3ODRl
OGJhYWU2ZDA4YjQ4MWQ0Mzc2N2E3Yi4uNDYzNThiZGNiZjY1MmY3MTRiYTc3NmE2MmVjY2RjYmUy
NDY2OTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgdm9pZCBDb2RlcjxBdG9tU3RyaW5nPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiAgICAgZW5j
b2RlciA8PCBhdG9tU3RyaW5nLnN0cmluZygpOwogfQogCi1PcHRpb25hbDxBdG9tU3RyaW5nPiBD
b2RlcjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PEF0b21TdHJpbmc+IENvZGVyPEF0b21TdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAsOSArNjAsOSBAQCB2b2lkIENvZGVyPENT
dHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQog
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBsZW5ndGgpOwogfQogCi1PcHRpb25hbDxDU3RyaW5n
PiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIENvZGVyPFN0
cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlv
bmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBs
ZW5ndGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdU
ZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUg
YWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIg
aXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29u
dGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyBp
bmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIs
IHVpbnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotT3B0aW9uYWw8U3RyaW5n
PiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxl
bmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMCw3ICsxMzAsNyBAQCBPcHRpb25hbDxTdHJpbmc+
IENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXM4Qml0OworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaXM4Qml0OwogICAgIGRlY29kZXIgPj4gaXM4Qml0OwogICAgIGlmICgh
aXM4Qml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgQ29kZXI8U0hBMTo6RGlnZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNIQTE6OkRpZ2VzdCYgZGlnZXN0KQogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGRpZ2VzdC5kYXRhKCksIHNpemVvZihkaWdlc3QpKTsKIH0KIAotT3B0aW9uYWw8U0hBMTo6RGln
ZXN0PiBDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBTSEExOjpEaWdlc3QgdG1wOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVGaXhlZExlbmd0aERhdGEodG1wLmRhdGEoKSwgc2l6ZW9mKHRtcCkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oCmluZGV4IDU2ZDhkNjk5ZjYw
MDNhNTAzZGQ5MTc1YmNkOGMzMzBmYTk1OWYzYTMuLmI3NzIxNzY3ZDU4OTVmYzA1YTRhNzU5NjA3
MmVjMWFmZDA4NTczN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmgKQEAgLTQ2LDE0ICs0NiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBzdHJ1Y3QgQ29kZXI8c3RkOjpwYWlyPFQsIFU+PiB7CiAgICAgICAgIGVuY29kZXIg
PDwgcGFpci5maXJzdCA8PCBwYWlyLnNlY29uZDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9u
YWw8c3RkOjpwYWlyPFQsIFU+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8VCwgVT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHsKLSAgICAgICAgT3B0aW9uYWw8VD4gZmlyc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VD4gZmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3Q7CiAgICAgICAgIGlmICghZmlyc3Qp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFU+
IHNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVPiBzZWNvbmQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29uZCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC02Miw4ICs2Miw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IHN0cnVjdCBDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKICAgICB9CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0aW9uYWw8VD4+IHsKLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdGlvbmFs
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjpvcHRp
b25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBpZiAoIW9wdGlvbmFsKSB7CiAgICAg
ICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwpAQCAtNzQsMjEgKzc0LDIxIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAgICBlbmNvZGVyIDw8
IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxPcHRp
b25hbDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNFbmdhZ2VkOwogICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYg
KCFpc0VuZ2FnZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoISppc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+
IHsgT3B0aW9uYWw8VD4geyBzdGQ6Om51bGxvcHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxUPj4geyBzdGQ6Om9wdGlvbmFsPFQ+IHsgc3RkOjpu
dWxsb3B0IH0gfTsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFQ+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4geyBPcHRpb25hbDxUPiB7
IFdURk1vdmUoKnZhbHVlKSB9IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8VD4+IHsgc3RkOjpvcHRpb25hbDxUPiB7IFdURk1vdmUoKnZhbHVlKSB9IH07CiAg
ICAgfQogfTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUs
IHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IENvZGVyPFdURjo6S2V5VmFsdWVQYWlyPEtlCiAg
ICAgICAgIGVuY29kZXIgPDwgcGFpci5rZXkgPDwgcGFpci52YWx1ZTsKICAgICB9CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlW
YWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgewotICAgICAgICBPcHRpb25hbDxLZXlUeXBlPiBrZXk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8S2V5VHlwZT4ga2V5OwogICAgICAgICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgaWYgKCFr
ZXkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PFZhbHVlVHlwZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1
ZTsKICAgICAgICAgZGVjb2RlciA+PnZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyNCwxNiArMTI0LDE2IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZlY3RvckNvZGVyPGZh
bHNlLCBULCBpbmxpbmVDCiAgICAgICAgICAgICBlbmNvZGVyIDw8IHZlY3RvcltpXTsKICAgICB9
CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pj4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
c2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAoIXNpemUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eT4gdG1wOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyArK2kp
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFQ+IGVsZW1lbnQ7CisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPFQ+IGVsZW1lbnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGVsZW1lbnQ7CiAgICAg
ICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTE1Miw5ICsxNTIsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNpemUoKSAqIHNpemVvZihUKSk7CiAgICAgfQog
ICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+PiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZGVjb2RlZFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFNpemU7CiAg
ICAgICAgIGlmICghZGVjb2RlZFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTkyLDkgKzE5Miw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAg
ICBlbmNvZGVyIDw8ICppdDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SGFzaE1hcFR5
cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhh
c2hNYXBUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBoYXNoTWFwU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaGFzaE1hcFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaE1hcFNpemU7CiAgICAgICAg
IGlmICghaGFzaE1hcFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MjAyLDExICsyMDIsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBw
ZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAgICAgICAgSGFzaE1h
cFR5cGUgdGVtcEhhc2hNYXA7CiAgICAgICAgIHRlbXBIYXNoTWFwLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpoYXNoTWFwU2l6ZSkpOwogICAgICAgICBmb3Ig
KHVpbnQ2NF90IGkgPSAwOyBpIDwgKmhhc2hNYXBTaXplOyArK2kpIHsKLSAgICAgICAgICAgIE9w
dGlvbmFsPEtleUFyZz4ga2V5OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlBcmc+IGtl
eTsKICAgICAgICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKCFrZXkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIE9wdGlvbmFs
PE1hcHBlZEFyZz4gdmFsdWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hcHBlZEFyZz4g
dmFsdWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjMxLDE2ICsy
MzEsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBl
bmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBDb2RlcjwKICAgICAgICAgICAgIGVuY29kZXIgPDwg
Kml0OwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0VHlwZT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaFNldFR5cGU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGhhc2hTZXRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoYXNoU2V0U2l6
ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNoU2V0U2l6ZTsKICAgICAgICAgaWYgKCFoYXNoU2V0
U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFzaFNl
dFR5cGUgdGVtcEhhc2hTZXQ7CiAgICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaGFz
aFNldFNpemU7ICsraSkgewotICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleUFyZz4ga2V5OwogICAgICAgICAgICAgZGVjb2RlciA+
PiBrZXk7CiAgICAgICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjYxLDkgKzI2MSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFNl
Y29uZHM+IHsKICAgICAgICAgZW5jb2RlciA8PCBzZWNvbmRzLnZhbHVlKCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFNlY29uZHM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI3Nyw5ICsy
NzcsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXYWxsVGltZT4gewogICAgICAgICBlbmNv
ZGVyIDw8IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpOwogICAgIH0KIAotICAgIHN0
YXRpYyBPcHRpb25hbDxXYWxsVGltZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5MCwyMiArMjkw
LDIyIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdhbGxUaW1lPiB7CiAKIHRlbXBsYXRlPD4g
c3RydWN0IENvZGVyPEF0b21TdHJpbmc+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxBdG9tU3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8Q1N0cmluZz4g
ewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IENTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPENT
dHJpbmc+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb2RlcjxTdHJpbmc+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8U0hBMTo6RGlnZXN0PiB7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU0hBMTo6
RGlnZXN0Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxTSEExOjpE
aWdlc3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRl
eCA4M2NkY2Q1NDJmODVmOWUxYzA4NjZhNmVhMDA1NTUzZDJhNzBhZmU0Li5jMDRiYTNmMmFjMWNi
MTYyMjVmYjg3ODRiOTlkNTBhNzUyNTkzMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRGVj
b2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2RlTnVtYmVy
KE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKK0RlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihz
dGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtODMsNTIg
KzgzLDUyIEBAIERlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxUPiYgb3B0
aW9uYWwpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWlu
dDhfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25h
bDx1aW50OF90PiYgcmVzdWx0KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
IH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4mIHJl
c3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURl
Y29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZfdD4mIHJlc3VsdCkKK0Rl
Y29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0
KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAotRGVjb2RlciYgRGVj
b2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKK0RlY29kZXImIERl
Y29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCiB7CiAgICAgcmV0dXJu
IGRlY29kZU51bWJlcihyZXN1bHQpOwogfQogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50NjRfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiYgcmVzdWx0KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKIH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mIHJl
c3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxmbG9hdD4m
IHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYgcmVzdWx0KQorRGVjb2Rl
ciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKIHsK
ICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA3MDkxNDI5MzA3MDFkOTJjNzNh
YjBmYzRhN2U3ZGRlYzczMjFkYzU0Li44NzYwNjJkMzQwMWI0YmQzMjk3NmVjMWMxMWNkMzI5Yjkx
ZmIzN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmgKQEAgLTQ1LDI5ICs0NSwyOSBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3Qq
LCBzaXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+
Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90PiYpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4o
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2Rl
ciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8aW50MTZfdD4mKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxkb3VibGU+Jik7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiBy
ZXN1bHQpCisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiByZXN1bHQp
CiAgICAgewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPEU+JiByZXN1bHQpCisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihzdGQ6Om9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4g
NjQgYml0cyEiKTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAg
ICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC05MCw3ICs5
MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNv
bnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihP
cHRpb25hbDxUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRl
Y29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAKICAgICBjb25zdCB1aW50OF90KiBt
X2J1ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5k
ZXggNmEyNTU0NjhiMGM0OTBmMDgzZjg1ZjkyMDEzM2ZiMzFjODcyYjcxNi4uY2RhNWU1ZTE2MzI1
MjQxYTFlN2I5NzE3MzA3Y2ZhZWI2YmQ4YzM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
cGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKIAogZW51bSBjbGFz
cyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9Owotc3RhdGljIE9wdGlvbmFs
PEZpbGVUeXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3Ry
aW5nJiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3MpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxs
eUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQogewogICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBi
b29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRo
KQogICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRh
KCkpICE9IC0xOwogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5n
JiBwYXRoKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiB2
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3Rh
dHZmcyBmaWxlU3lzdGVtU3RhdDsKICAgICBpZiAoIXN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkKQEAgLTIyOSw3ICsyMjksNyBA
QCBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvbikKICAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwogfQogCi1PcHRpb25h
bDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBh
dXRvIGxpbmtQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVj
dCBzdGF0IHN0YXQ7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KHBhdGgpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTI4NSwxMiArMjg1LDEyIEBAIGJvb2wgaXNI
aWRkZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gIWZpbGVuYW1lLmlzRW1w
dHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxl
VHlwZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlG
b2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9
CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3lt
bGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlVHlwZVBvdGVudGlh
bGx5Rm9sbG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGE3YmEw
NDdiMDU3YzdiYzQzNzc3ZWUyMjkxOTRjZjliOGYyZmU3NTUuLmJmNGY3Mzk3OTAzOTY5ODI3Y2Zh
MjAzNWZhOTA1ZmViZjUyNDAzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlKQogfQogI2VuZGlmCiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKICAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQpAQCAtMTY0LDcgKzE2NCw3IEBA
IE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQog
ICAgIHJldHVybiBmaWxlSW5mby5zdF9zaXplOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZmls
ZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiBPUyhEQVJXSU4p
IHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJFRUJTRCkKICAgICBDU3RyaW5n
IGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpAQCAtMjI2LDcgKzIyNiw3
IEBAIGVuZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKLU9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAg
c3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVT
dGF0KSA9PSAtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BP
U0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA1
OTE3YjM3OWYxMmFmZjVmZjQyZDEzNDdmYmRjYjFmMjA4YTA3MDdmLi5lZGI5YjUxODQ4Zjg5MGVk
NGU1ZDA5NDAxNGY2ZGQ3ZjQyOTFhOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5n
UE9TSVguY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgZGlzcGF0Y2hfcW9zX2NsYXNzX3QgVGhyZWFk
OjpkaXNwYXRjaFFPU0NsYXNzKFFPUyBxb3MpCiB9CiAjZW5kaWYKIAotYm9vbCBUaHJlYWQ6OmVz
dGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0LCBPcHRpb25hbDxzaXplX3Q+
IHN0YWNrU2l6ZSwgUU9TIHFvcykKK2Jvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhy
ZWFkQ29udGV4dCogY29udGV4dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9T
IHFvcykKIHsKICAgICBwdGhyZWFkX3QgdGhyZWFkSGFuZGxlOwogICAgIHB0aHJlYWRfYXR0cl90
IGF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggYWEyN2JjZGIxM2FjODIzMTc1ZWEzYWM0
MDJmNjRjODdiMDZmYzk2ZS4uYWFhZTAwNDlhZjI0NmQxNWY5ZGQwYzJlNTlhZWM3ZGRjYWUyMjll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFN0cmluZyBiYXNl
NjRFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiBpbnB1dERhdGFCdWZmZXIsIHVuc2lnbmVkIGlu
cHV0TGVuZ3RoLCBCCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoYmFzZTY0RW5jb2RlZChpbnB1dERh
dGFCdWZmZXIsIGlucHV0TGVuZ3RoLCBwb2xpY3ksIG1hcCkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRl
cm5hbChjb25zdCBUKiBpbnB1dERhdGFCdWZmZXIsIHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBPcHRp
b25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QgVCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25l
ZCBpbnB1dExlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJh
c2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKCFpbnB1dExlbmd0aCkKICAgICAgICAgcmV0
dXJuIFZlY3Rvcjx1aW50OF90PiB7IH07CkBAIC0yNTUsNyArMjU1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50
ZXJuYWwoY29uc3QKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQsIE9wdGlvblNldDxC
YXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGlucHV0
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFw
IG1hcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICAgICBpZiAo
IWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGlucHV0LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjbwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOwogfQogCi1PcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0
RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldyBpbnB1dCwgT3B0aW9u
U2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgg
fHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0yNzEsMzEgKzI3MSwzMSBAQCBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0
RGVjb2RlTwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFyYWN0ZXJz
MTYoKSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2
NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCks
IG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVj
b2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRp
b25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsK
ICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkp
LCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
T3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBt
YXApCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlv
bnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgcmV0dXJuIGJhc2U2NERl
Y29kZUludGVybmFsKGRhdGEsIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKIH0KIAotT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVj
b2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2Rl
T3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICByZXR1cm4gYmFz
ZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEpLCBs
ZW5ndGgsIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQu
aXM4Qml0KCkpCkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbnB1dCkKICAgICByZXR1cm4gYmFzZTY0RGVj
b2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNv
ZGVNYXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVj
b2RlKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0z
MTEsMjYgKzMxMSwyNiBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShTdHJpbmdWaWV3IGlucHV0KQogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1
dC5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0K
IAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1
dC5kYXRhKCksIGlucHV0LnNpemUoKSwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAK
LU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVj
b2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJh
c2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFs
KGRhdGEsIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNv
ZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBiYXNl
NjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
bGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQmFzZTY0LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmlu
ZGV4IDY4NDFiZWM4OTEwNmFlNTliMGVlZjM1M2NhZTg1ODUxNTY4MmYxMzkuLjM5ZTU2MDhkNjUy
ZjhiZDMzYjNhMmVkMGRjMWU2YzFhYWZmN2QwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQmFzZTY0LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaApAQCAtNjks
MTIgKzY5LDEyIEBAIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFCiBTdHJpbmcgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0
RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5j
b2RlTWFwOjpEZWZhdWx0KTsKIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBDU3Ry
aW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2Vy
dExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIAotV1RG
X0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNv
bnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0
RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3LCBPcHRp
b25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2
NERlY29kZU1hcDo6RGVmYXVsdCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgT3B0aW9uU2V0
PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNv
ZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpE
ZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJh
c2U2NERlY29kZShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjREZWNv
ZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZh
dWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRp
b25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsg
fSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0
cmluZ1ZpZXcsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVj
b2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVj
b2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2Rl
TWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNv
ZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVu
c2lnbmVkLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29k
ZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CiAKIGlubGluZSBWZWN0b3I8dWludDhf
dD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFz
ZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKQEAgLTEyMiwx
MiArMTIyLDEyIEBAIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8
Y2hhcj4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJik7
CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVS
TERlY29kZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3KTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShj
b25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcpOworV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiwgdW5zaWdu
ZWQpOwogCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNv
bnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9OdWxsVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBjNTgzZmI0NDQ4NzFkZWM2ZTFiYmEwYTE5
YmNlZDAyNmNiY2JlMWIwLi43ZDY2OGM3Nzc5MjQwMDZjNzZhNjQ3NTRlNTAwODFjN2I5NDk1NzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTnVsbFRleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTMz
LDEzICszMywxMyBAQCBwdWJsaWM6CiAgICAgTnVsbFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRv
cj0oY29uc3QgTnVsbFRleHRCcmVha0l0ZXJhdG9yJikgPSBkZWxldGU7CiAgICAgTnVsbFRleHRC
cmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oTnVsbFRleHRCcmVha0l0ZXJhdG9yJiYpID0gZGVmYXVs
dDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQpIGNvbnN0Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2VkaW5nKHVuc2lnbmVkKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCkgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKaW5k
ZXggMzU2Yzc1NmM2OWE0ZDM2ZGE5N2IzMDUxYTAxYTQwNWFiZDQ1ZTBlNy4uZTE5YWZlZGY1Y2Fi
YWM2NGM2ZTAwNTMxODIwNjg5NzBkYzcyOTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKQEAgLTM3LDEyICszNywxMiBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIGEgdmVyc2lvbiB0aGF0IGFsbG93cyBv
dGhlciBkZWZpbml0aW9ucyBvZiBzcGFjZXMsIGxpa2UgaXNIVE1MU3BhY2Ugb3IgaXNIVFRQU3Bh
Y2U/CiAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCBhIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBhbGxv
dyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXM/CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVn
cmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXIoU3RyaW5nVmlldywg
dWludDhfdCBiYXNlID0gMTApOwotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPiBPcHRp
b25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKFN0cmlu
Z1ZpZXcsIHVpbnQ4X3QgYmFzZSA9IDEwKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlw
ZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlcihTdHJpbmdWaWV3LCB1
aW50OF90IGJhc2UgPSAxMCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IHN0ZDo6
b3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuayhT
dHJpbmdWaWV3LCB1aW50OF90IGJhc2UgPSAxMCk7CiAKIGVudW0gY2xhc3MgVHJhaWxpbmdKdW5r
UG9saWN5IHsgRGlzYWxsb3csIEFsbG93IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJz
ZUludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhf
dCBiYXNlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5KQordGVtcGxhdGU8dHlwZW5hbWUgSW50
ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEludGVncmFs
VHlwZT4gcGFyc2VJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIHVpbnQ4X3QgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeSkKIHsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05NiwxNCArOTYsMTQgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBl
PiBwYXJzZUludGVnZXIoU3RyaW5nVmlldyBzdHJpbmcsIHVpbnQ4X3QgYmFzZSkKK3RlbXBsYXRl
PHR5cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNl
SW50ZWdlcihTdHJpbmdWaWV3IHN0cmluZywgdWludDhfdCBiYXNlKQogewogICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihz
dHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBiYXNlLCBUcmFpbGluZ0p1bmtQ
b2xpY3k6OkRpc2FsbG93KTsKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4o
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVu
a1BvbGljeTo6RGlzYWxsb3cpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+
IE9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bmso
U3RyaW5nVmlldyBzdHJpbmcsIHVpbnQ4X3QgYmFzZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVn
cmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rKFN0cmluZ1ZpZXcgc3RyaW5nLCB1aW50OF90IGJhc2UpCiB7CiAgICAgaWYg
KHN0cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5
cGU+KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5n
SnVua1BvbGljeTo6QWxsb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZTA5
NjcyOTAxZWY5M2ZmOTNiMzM0OTAxMDY3YTc1MzZmYmQxMjcwNC4uNmNmNjIxMjkwZDBhYTFhMzQy
OTlmMGViYTE2ZWY4MmM2YjgyZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgYXV0byBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6
Om9wZXJhdG9yKysoKSAtPiBJdGVyYXRvciYKIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBJbXBsKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIE9wdGlvbmFsPE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4
KQorICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgc3RkOjpvcHRpb25hbDxO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRl
eCkKICAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKICAgICAgICAgLCBtX2l0ZXJh
dG9yKFdURk1vdmUoaXRlcmF0b3IpKQogICAgICAgICAsIG1faW5kZXgoaW5kZXgpCkBAIC0xNzks
MTMgKzE3OSwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nVmlldyYg
bV9zdHJpbmdWaWV3OwotICAgIE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I+IG1faXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgdW5zaWdu
ZWQgbV9pbmRleEVuZDsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJh
dG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRl
eCkKLSAgICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcu
aXNOdWxsKCkgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwg
aW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5n
Vmlldy5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJp
bmdWaWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oCmluZGV4IDg5MTlhMGQzNzRlMzcxNDE4NTBiOTZkOWYwYmJhN2IyNTNiMTM0NmYuLmQw
MDZhOGY2ZGY1OTA5ZjI0OGVmYWM0OTZhNjJiNTE4ZTMyMzJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTU4LDE0ICs1OCwxNCBAQCBwdWJsaWM6CiAgICAg
VGV4dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBUZXh0QnJlYWtJdGVyYXRvciYpID0g
ZGVsZXRlOwogICAgIFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oVGV4dEJyZWFrSXRlcmF0
b3ImJikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByZWNlZGluZyh1bnNp
Z25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRp
bmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3dpdGNo
T24obV9iYWNraW5nLCBbJl0oY29uc3QgYXV0byYgaXRlcmF0b3IpIHsKICAgICAgICAgICAgIHJl
dHVybiBpdGVyYXRvci5wcmVjZWRpbmcobG9jYXRpb24pOwogICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25z
dAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCBsb2NhdGlv
bikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzd2l0Y2hPbihtX2JhY2tpbmcsIFsmXShj
b25zdCBhdXRvJiBpdGVyYXRvcikgewogICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxv
d2luZyhsb2NhdGlvbik7CkBAIC0xNzMsMTIgKzE3MywxMiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVk
VGV4dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBDYWNoZWRUZXh0QnJlYWtJdGVyYXRv
ciYpID0gZGVsZXRlOwogICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oQ2Fj
aGVkVGV4dEJyZWFrSXRlcmF0b3ImJikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHByZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9iYWNraW5nLnByZWNlZGluZyhsb2NhdGlvbik7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iYWNraW5nLmZvbGxvd2luZyhsb2NhdGlvbik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAppbmRleCA3MmM1NDY4NzIxNWU3YTg2NGQz
MjY2NmNkYjBmMWFkZmU3ZjE4YTRjLi5jZDliOTkzNDc4ZjFhZTE1ZWZhNTk5NGJmMWE4NGU3NThh
NTA0MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaApAQCAtMTk1LDcgKzE5NSw3IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFZhbHVlT3JOdWxsPFQ+IGl0ZW0p
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBPcHRpb25hbDxJdGVtPiYgaXRlbSkKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SXRlbT4mIGl0ZW0p
CiB7CiAgICAgaWYgKGl0ZW0pCiAgICAgICAgIHJldHVybiB0cyA8PCBpdGVtLnZhbHVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA5NzZmZGMxMzhjYzdmMDkzNDZjN2RkZDAzYWUxNTBh
ZmY4ZjQ3NDc1Li4wYTVlZTdmOWIwYzcwMmI5MjMxYjc1Mjg2Nzk4ZmJhZGM4MDc2Yzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQyMiw3ICs0MjIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CiAjaWZkZWYgX19PQkpD
X18KIAogV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50
KGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFN0cmluZz4gbWFr
ZVZlY3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCk7
CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1RleHRCcmVh
a0l0ZXJhdG9yQ0YuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JD
Ri5oCmluZGV4IDExZjIyN2RhMzg1N2VmOGNlNDM4OWQ2MTdmYTQ4YmMxYTFlZjRiMGIuLmVjYTY0
ZGZmYjM4ODZkODU2ZjZjYzRlMTVmNzBjNTYxZmY4YzdhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9zdHJpbmcgPSBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmdXaXRob3V0Q29weWluZygp
OwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9j
YXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2VkaW5nKHVuc2ln
bmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgICAgIHJldHVybiB7IH07CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJhbmdlLmxvY2F0aW9uOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmb2xs
b3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGxvY2F0aW9uID49IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KENGU3RyaW5nR2V0TGVuZ3Ro
KG1fc3RyaW5nLmdldCgpKSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXggZjVhMzYzNTA1MGVkNWU3YzMwNTcxZjVk
ZDc5Mzk5MDIxZjA5MzVkYi4uNDYxODVjNmFlNjY1MjhkMTc4MGU3ZmU2MDcxZThhYjgyZTMyZmFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCkBAIC0zNSw3ICsz
NSw3IEBAIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFN0cmluZyYgdmVj
dG9yRWxlbWVudCkKICAgICByZXR1cm4gYWRvcHROUygoX19icmlkZ2VfdHJhbnNmZXIgaWQpdmVj
dG9yRWxlbWVudC5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKLU9wdGlvbmFsPFN0
cmluZz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQgYXJyYXlFbGVtZW50KQor
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyosIGlk
IGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpO
U1N0cmluZy5jbGFzc10pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0QnJlYWtJdGVyYXRvcklDVS5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9pY3UvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuaAppbmRleCBkOWQzZWYwZGYy
ZGNhMmJiYTAwMTcwNTZmOWRjMDhlYzJlYjc1NzcyLi41NzRkY2M4NjcxMGJiNGQ2YzA4Y2FiZjQ1
MmU1Yjc0NWIxNDgwMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0
QnJlYWtJdGVyYXRvcklDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1RleHRCcmVh
a0l0ZXJhdG9ySUNVLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBy
ZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKG1faXRlcmF0b3IsIGxvY2F0aW9uKTsKICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBm
b2xsb3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAg
YXV0byByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhtX2l0ZXJhdG9yLCBsb2NhdGlvbik7CiAgICAg
ICAgIGlmIChyZXN1bHQgPT0gVUJSS19ET05FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRl
eCA2NjU3NzQ4YWUxZDU0NDY0NWM5ZjMzN2M1ODhhYjBjZjdmNTI5MmFlLi42YjcyYzBlNGI4NTBk
N2I4ZDEzOGYxOGQ1MzMxMGJmMWY0NjQwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApA
QCAtNTksNyArNTksNyBAQCBlbnVtIGNsYXNzIFNpZ25hbCB7CiAgICAgVW5rbm93biA9IE51bWJl
ck9mU2lnbmFscwogfTsKIAotaW5saW5lIHN0ZDo6dHVwbGU8aW50LCBPcHRpb25hbDxpbnQ+PiB0
b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQoraW5saW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6
Om9wdGlvbmFsPGludD4+IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dp
dGNoIChzaWduYWwpIHsKICAgICBjYXNlIFNpZ25hbDo6QWNjZXNzRmF1bHQ6IHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoU0lHU0VHViwgU0lHQlVTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvQ1BVVGltZVVuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9DUFVUaW1lVW5peC5j
cHAKaW5kZXggN2JjNDg1NjBlNjc5ZDllZWQ0MWRkNWRhMTVhNmE5NTY3OGNkNDgzNi4uMDU5MGYz
MzliNDgzZTdmNmVjNzk5MzVlZGFhMDhmMzA4ZjM3MTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdW5peC9DUFVUaW1lVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5peC9DUFVU
aW1lVW5peC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIFNlY29uZHMgdGltZXZhbFRvU2Vj
b25kcyhjb25zdCBzdHJ1Y3QgdGltZXZhbCYgdmFsdWUpCiAgICAgcmV0dXJuIFNlY29uZHModmFs
dWUudHZfc2VjKSArIFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHModmFsdWUudHZfdXNlYyk7CiB9
CiAKLU9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCitzdGQ6Om9wdGlvbmFsPENQVVRp
bWU+IENQVVRpbWU6OmdldCgpCiB7CiAgICAgc3RydWN0IHJ1c2FnZSByZXNvdXJjZSB7IH07CiAg
ICAgaW50IHJldCA9IGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnJlc291cmNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyVW5peC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi91bml4L01lbW9yeVByZXNzdXJlSGFuZGxlclVuaXguY3BwCmluZGV4IGE5
NmU0ZTVmNWFhNGY0Yjg4MDk0OWM4YTE5NjM4N2ZjZjQyYWExNDAuLjRiY2QyNGY0NzAzODYzZTE1
ZGRhNmExODIzMDczY2NlZTM3MGM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5peC9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJVbml4LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAjZW5k
aWYKIH0KIAotT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1l
bW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1N
ZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVm
TG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6
OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIHJldHVybiBNZW1vcnlVc2FnZSB7cHJvY2Vz
c01lbW9yeVVzYWdlKCksIG1lbW9yeUZvb3RwcmludCgpfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1l
V2luLmNwcAppbmRleCA0YTFhM2U1NDIyNWY1MjgwYTkwZmVlZWE3NDAzMTcxNmFjZWE1MTczLi4y
Y2VjOWVjYWRkODIyZGZhMWEwZjM4MzNhMDQyYWQ0NzM4MWY1ODcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0NQ
VVRpbWVXaW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBTZWNvbmRzIGZpbGVUaW1lVG9T
ZWNvbmRzKGNvbnN0IEZJTEVUSU1FJiBmaWxlVGltZSkKICAgICByZXR1cm4gU2Vjb25kcyB7IGR1
cmF0aW9uSW4xMDBOUy5RdWFkUGFydCAvIGh1bmRyZWRzT2ZOYW5vc2Vjb25kc1BlclNlY29uZCB9
OwogfQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQorc3RkOjpvcHRpb25hbDxD
UFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2phLWpwL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjgzMjIzKHY9dnMuODUpLmFzcHgK
ICAgICBGSUxFVElNRSBjcmVhdGlvblRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKaW5kZXggMWQwYTIwNDRlODYyYWEzMGVmODA1NTFiZTFkNmMwZWQ3MmI5MzNkMS4uNmVmZGQ3
NjEwOTE2ODY2MGM5YzVkZWNhZjFhZThjZDE4ZmM2NGE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxl
U3lzdGVtV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZy
b21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJgog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGdldEZpbGVT
aXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9G
SUxFX0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvcm1hdGlvbikKIHsKICAg
ICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKICAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJ
bmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lk
IGZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcm
IGZpbmREYXRhLCB0CiAgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBr
U2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlKQogewogICAgIEJZX0hB
TkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoITo6R2V0Rmls
ZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCkBAIC0x
MTIsNyArMTEyLDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJ
bmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24pOwogfQogCi1PcHRpb25hbDxXYWxs
VGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmlu
ZERhdGEpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExf
QVBQREFUQSk7CiB9CiAKLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBD
U3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0Zp
bGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFu
ZGxlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2lu
LmNwcAppbmRleCA3YWI0YTA0ZjE3ODJhYzFkNjRiYzI3YjY5ZThmZjA0NDJiMTQwNjg3Li5lNmJl
YmRjMWNhMjAyNjE5ZWE0ZmQ3NjQyOWM5Y2UzZmU1MGFjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGlj
YWwgY3JpdGljYWwsIFN5bmNocm9ubwogICAgIHJlbGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNo
cm9ub3VzKTsKIH0KIAotT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxh
dGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZM
b2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDYwMDZkMDEzNDUyMzAyYWRh
OTBiODU4ZjRiMzdhNDMxZmEwNDE4MDQuLmRjMjQ4OWZmODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0
ZGVlZTU3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xNTMsNyArMTUz
LDcgQEAgc3RhdGljIHVuc2lnbmVkIF9fc3RkY2FsbCB3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQq
IGRhdGEpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUo
TmV3VGhyZWFkQ29udGV4dCogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUykK
K2Jvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCogZGF0YSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9TKQogewogICAgIHVuc2lnbmVkIHRocmVh
ZElkZW50aWZpZXIgPSAwOwogICAgIHVuc2lnbmVkIGluaXRGbGFnID0gc3RhY2tTaXplID8gU1RB
Q0tfU0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9OIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgK
aW5kZXggOTQ4ZmI1NTg1NmVlOTk2MjY2OTEzNDY4ZGZlODgzZjY0NjkzNGY4NC4uZjQ0MTg0MjQ5
YTJkZDM0NzIzYmJmYTNjNjEzMjNlZWMzM2U0OTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgK
QEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgOiBwdWJs
aWMgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+IG5ld0xpbmVJdGVtczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZT4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheURl
dGFpbHNVcGRhdGVCYXNlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlQmFzZShEZWNvZGVyJik7CiB9
OwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZT4gQXBwbGVQYXlEZXRhaWxzVXBkYXRl
QmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RGV0
YWlsc1VwZGF0ZUJhc2U+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgcmVzdWx0OwogICAg
IGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wg
QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAg
ICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBc
CiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgIHJldHVy
biBmYWxzZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAppbmRleCBlODMxZDAyZjJmYWUzNzJkN2U2
NDUzNzJmYjE5YjE2MWYzZjBiOTA4Li5hNDAyNDFjNzg5YmI0MjE5ZDZlMmEzYTNjOWE2ODRkODc5
Y2E0ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5RGV0YWlsc1VwZGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3Qg
QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
RGF0YShEZWNvZGVyJik7CiB9OwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEFwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YT4gQXBw
bGVQYXlEZXRhaWxzVXBkYXRlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0
ZURhdGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCkBAIC02
Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29sIEFwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGE6OmRlY29kZURhdGEoRGVjb2RlciYgZGVjb2RlcikKIHsKICNkZWZpbmUgREVD
T0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3RkOjpv
cHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYgKCFu
YW1lKSBcCiAgICAgICAgIHJldHVybiBmYWxzZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaAppbmRleCAyNTliMjBmNDQ0MjZmN2YxMTYyMzVk
NTU2ZDI2N2YxODZkZTg1YzRiLi42YTBhODBiMTEyZWU4NzI2MzE0ZTM0ZGFmNjMyYjZhYzc5ODgw
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJy
b3IuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxl
UGF5RXJyb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheUVycm9yPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheUVycm9yPiBjcmVhdGUoQXBwbGVQYXlFcnJvckNv
ZGUgY29kZSwgT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxk
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgc3RhdGljIFJlZjxBcHBsZVBheUVycm9yPiBj
cmVhdGUoQXBwbGVQYXlFcnJvckNvZGUgY29kZSwgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkPiBjb250YWN0RmllbGQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5RXJyb3IoY29kZSwgY29udGFj
dEZpZWxkLCBtZXNzYWdlKSk7CiAgICAgfQpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAg
QXBwbGVQYXlFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIHZv
aWQgc2V0Q29kZShBcHBsZVBheUVycm9yQ29kZSBjb2RlKSB7IG1fY29kZSA9IGNvZGU7IH0KIAot
ICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGFjdEZpZWxkOyB9Ci0gICAgdm9pZCBzZXRDb250YWN0RmllbGQo
T3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkKSB7IG1fY29u
dGFjdEZpZWxkID0gY29udGFjdEZpZWxkOyB9CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVy
cm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhY3RG
aWVsZDsgfQorICAgIHZvaWQgc2V0Q29udGFjdEZpZWxkKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlF
cnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkKSB7IG1fY29udGFjdEZpZWxkID0gY29udGFj
dEZpZWxkOyB9CiAKICAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZTsgfQogICAgIHZvaWQgc2V0TWVzc2FnZShTdHJpbmcmJiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSk7IH0KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8QXBwbGVQYXlFcnJvcj4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBBcHBsZVBheUVycm9yKEFwcGxlUGF5RXJyb3JDb2Rl
IGNvZGUsIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgIEFwcGxlUGF5RXJyb3IoQXBwbGVQYXlFcnJvckNv
ZGUgY29kZSwgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0
RmllbGQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBtX2NvZGUoY29kZSkKICAg
ICAgICAgLCBtX2NvbnRhY3RGaWVsZChjb250YWN0RmllbGQpCiAgICAgICAgICwgbV9tZXNzYWdl
KG1lc3NhZ2UpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgQXBwbGVQ
YXlFcnJvckNvZGUgbV9jb2RlOwotICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0Rmll
bGQ+IG1fY29udGFjdEZpZWxkOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRh
Y3RGaWVsZD4gbV9jb250YWN0RmllbGQ7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKQEAg
LTgzLDEzICs4MywxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogUmVmUHRyPEFwcGxlUGF5
RXJyb3I+IEFwcGxlUGF5RXJyb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogI2RlZmlu
ZSBERUNPREUobmFtZSwgdHlwZSkgXAotICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBz
dGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBp
ZiAoIW5hbWUpIFwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKIAogICAgIERFQ09ERShjb2Rl
LCBBcHBsZVBheUVycm9yQ29kZSkKLSAgICBERUNPREUoY29udGFjdEZpZWxkLCBPcHRpb25hbDxB
cHBsZVBheUVycm9yQ29udGFjdEZpZWxkPikKKyAgICBERUNPREUoY29udGFjdEZpZWxkLCBzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+KQogICAgIERFQ09ERShtZXNzYWdl
LCBTdHJpbmcpCiAKICN1bmRlZiBERUNPREUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKaW5kZXggYmVhNGIyM2EzNmZjY2ZkMzU0MDE1
MDU5NmY5MTBlMTEyNTFmODY2MS4uNjIzYTExZmMwMzhmMDBiNTFlM2YxYTMzMjk3MzE0YzY3NzNl
MmNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eUxpbmVJdGVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IEFwcGxlUGF5TGluZUl0ZW0gZmlu
YWwgOiBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEgewogICAgIFN0cmluZyBhbW91bnQ7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5TGlu
ZUl0ZW0+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OCwyNiArNTgsMjYgQEAgdm9pZCBBcHBs
ZVBheUxpbmVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+IEFwcGxlUGF5TGlu
ZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBheUxp
bmVJdGVtPiBBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBBcHBsZVBheUxpbmVJdGVtIHJlc3VsdDsKIAogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEo
ZGVjb2RlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxU
eXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+
IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxh
YmVsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxh
YmVsOwogICAgIGlmICghbGFiZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmxhYmVsID0gV1RGTW92ZSgqbGFiZWwpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBh
bW91bnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFtb3VudDsKICAgICBkZWNvZGVyID4+
IGFtb3VudDsKICAgICBpZiAoIWFtb3VudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaAppbmRleCA5NThlMzZmYzBiNjU0MjdmMzViNjAwOGQ3NjAwMzBlYjdhZjAzZWI5
Li44NDBmZWU4MTQyZDU3ODAzNDYyMWZlYTZkNGY4NDZlYzA0ZDUyYjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtRGF0YSB7CiAjZW5kaWYK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlM
aW5lSXRlbURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVEYXRhKERlY29kZXImKTsKIH07CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQXBw
bGVQYXlMaW5lSXRlbURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFw
cGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7CiAgICAg
aWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCmluZGV4IGI5NjNlNGUyMTI0YzQxNTIx
MGJjNWU5NDIyNzQzMmI4ZTE4ZmExZDEuLjc1Yjc0NDYyMjY4MTI0MTk2NmE0Zjg5NjZlZmJkOTU0
MTdjZGIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsK
ICAgICB9OwogCiAgICAgVG9rZW4gdG9rZW47Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29u
dGFjdD4gc2hpcHBpbmdDb250YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1l
bnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CiAgICAgU3RyaW5nIGluc3RhbGxtZW50QXV0aG9y
aXphdGlvblRva2VuOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVBheW1lbnRDb250YWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaAppbmRleCA1ZTExYTg0ZGJiMWI4NTQ0
OWEzYWQzNDlmYmEwZjYyMTBmZWFlOTUzLi5kYmE5OWZmOGUwNDAzNDlkOTQyYTQzODQ5Mjg1Y2U0
YzdlNTY3MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgQXBw
bGVQYXlQYXltZW50Q29udGFjdCB7CiAgICAgU3RyaW5nIHBob25ldGljR2l2ZW5OYW1lOwogICAg
IFN0cmluZyBwaG9uZXRpY0ZhbWlseU5hbWU7CiAgICAgU3RyaW5nIGxvY2FsaXplZFBob25ldGlj
TmFtZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWRkcmVzc0xpbmVzOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFkZHJlc3NMaW5lczsKICAgICBTdHJpbmcgc3Vi
TG9jYWxpdHk7CiAgICAgU3RyaW5nIGxvY2FsaXR5OwogICAgIFN0cmluZyBwb3N0YWxDb2RlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kLmgKaW5kZXggZWViNWM4MzMxZmEzYzgyNDdiNTdmMmVmY2Q1ODE1OTY1NDljOWY5
Yi4uM2RhMjQwZmZkNDEyMDJiNjQwMTdkZWU1YjhkNzcxZTA1YWViNThjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhv
ZC5oCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBBcHBsZVBheVBheW1lbnRNZXRob2QgewogCiAg
ICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIFN0cmluZyBuZXR3b3JrOwotICAgIE9wdGlvbmFs
PFR5cGU+IHR5cGU7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50UGFzcz4gcGF5bWVudFBh
c3M7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7
CisgICAgc3RkOjpvcHRpb25hbDxUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQ
YXlQYXltZW50UGFzcz4gcGF5bWVudFBhc3M7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKICAgICBTdHJpbmcgYmluZFRva2VuOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaAppbmRleCBhYzdmNjI5ZjJiMGVmMGRi
MGYyYjk0ZmNlYWUxOTA3N2E1MDc3ZjgwLi5jYjBhM2QxMDFjMzJkODc2NDlkZWI5NWNhOGE1ZjRl
N2FjY2Y0ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaApAQCAtNDIsNyAr
NDIsNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZSBmaW5hbCA6IHB1
YmxpYyBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlCiAgICAgVmVjdG9yPEFwcGxlUGF5U2hpcHBp
bmdNZXRob2Q+IG5ld1NoaXBwaW5nTWV0aG9kczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU0LDIwICs1NCwyMCBAQCB2b2lk
IEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1l
dGhvZE1vZGVVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUg
cmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8QXBwbGVQ
YXlFcnJvcj4+PiBlcnJvcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEFwcGxl
UGF5RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRlY29kZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJy
b3JzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5lcnJvcnMgPSBX
VEZNb3ZlKCplcnJvcnMpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2Q+PiBuZXdTaGlwcGluZ01ldGhvZHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBw
bGVQYXlTaGlwcGluZ01ldGhvZD4+IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBkZWNvZGVyID4+
IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBpZiAoIW5ld1NoaXBwaW5nTWV0aG9kcykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCmluZGV4IDcx
OTVjOTM3ODU5MDY3NWE5OGM0YzM1M2JiYTRiOGI0ODE0MTNjZDEuLjNhYzZkZmU2MDQ2NTU3MTk0
NzliYmIxZmFlYzE4OTdhYzlmZDA5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaApAQCAt
MzksNyArMzksNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIGZpbmFsIDog
cHVibGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgewogI2VuZGlmIC8vIEVOQUJMRShBUFBM
RV9QQVlfSU5TVEFMTE1FTlRTKQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQ
YXlQYXltZW50TWV0aG9kVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRNZXRo
b2RVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiBBcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhv
ZFVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXBwbGVQYXlQYXltZW50
TWV0aG9kVXBkYXRlIHJlc3VsdDsKIApAQCAtNjAsNyArNjAsNyBAQCBPcHRpb25hbDxBcHBsZVBh
eVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZTo6ZGVjb2Rl
KERlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShu
YW1lLCB0eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9u
YWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkg
XAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCmluZGV4IGI3
NTI1NjEwNWMxYzNjNDQ2NjEyNWM2ZWU4ZDc0YmQ5OWUwNmU2NjUuLjY0NjU1OTU3NThjOTVjNDBh
NjNjYTcwNzYyYjUxMzlhYjI2YmU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCkBAIC00NSwxMCArNDUs
MTAgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudFJlcXVlc3QgOiBBcHBsZVBheVJlcXVlc3RCYXNl
IHsKICAgICBTdHJpbmcgY3VycmVuY3lDb2RlOwogCiAgICAgU2hpcHBpbmdUeXBlIHNoaXBwaW5n
VHlwZSB7IFNoaXBwaW5nVHlwZTo6U2hpcHBpbmcgfTsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBw
bGVQYXlTaGlwcGluZ01ldGhvZD4+IHNoaXBwaW5nTWV0aG9kczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4gc2hpcHBpbmdNZXRob2RzOwogCiAgICAg
QXBwbGVQYXlMaW5lSXRlbSB0b3RhbDsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5l
SXRlbT4+IGxpbmVJdGVtczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJ
dGVtPj4gbGluZUl0ZW1zOwogCiAjaWYgZGVmaW5lZChBcHBsZVBheVBheW1lbnRSZXF1ZXN0QWRk
aXRpb25zX21lbWJlcnMpCiAgICAgQXBwbGVQYXlQYXltZW50UmVxdWVzdEFkZGl0aW9uc19tZW1i
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
UmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlS
ZXF1ZXN0QmFzZS5oCmluZGV4IDMyMGE3MzYxZTMwNzQzNzA2NWE3NGNiYmViODNkNzZlZjdlOGJi
NzIuLjhkYzVhZTUyODJhZTc3NjNjOWFmNDliMGQwNjVkYzM5ZTRmMDE0ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5o
CkBAIC00NiwxNyArNDYsMTcgQEAgc3RydWN0IEFwcGxlUGF5UmVxdWVzdEJhc2UgewogICAgIFZl
Y3RvcjxTdHJpbmc+IHN1cHBvcnRlZE5ldHdvcmtzOwogICAgIFN0cmluZyBjb3VudHJ5Q29kZTsK
IAotICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUNvbnRhY3RGaWVsZD4+IHJlcXVpcmVkQmls
bGluZ0NvbnRhY3RGaWVsZHM7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4g
YmlsbGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlDb250YWN0
RmllbGQ+PiByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOworICAgIHN0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CiAKLSAgICBPcHRpb25hbDxW
ZWN0b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxk
czsKLSAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7
CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1aXJl
ZFNoaXBwaW5nQ29udGFjdEZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkRhdGE7
CiAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkQ291bnRyaWVzOwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9JTlNUQUxMTUVOVFMpCi0gICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVudENvbmZpZ3VyYXRp
b247CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9uc19t
ZW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwCmluZGV4IDgxYjdhYjM3MjU3Mzk0YjYxZWY1YzdmYjhjZDhjNzNmZmNiODAz
ZDAuLjhlZGYyZmY5YTM5ZDMyM2EzMjAzOTc3OGVhMDBkODgwYTIxNzFjZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29u
dmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0mJiBsaW5lSQogICAgIHJldHVybiBXVEZN
b3ZlKGxpbmVJdGVtKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheUxp
bmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJ
dGVtPj4mJiBsaW5lSXRlbXMpCitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5TGlu
ZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlM
aW5lSXRlbT4+JiYgbGluZUl0ZW1zKQogewogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBy
ZXN1bHQ7CiAgICAgaWYgKCFsaW5lSXRlbXMpCkBAIC01ODgsOCArNTg4LDggQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bih1bnNpZ25lZCBzaG8KIHsKICAgICBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSB1cGRh
dGU7CiAKLSAgICBPcHRpb25hbDxBcHBsZVBheUVycm9yQ29kZT4gZXJyb3JDb2RlOwotICAgIE9w
dGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb2RlPiBlcnJvckNvZGU7CisgICAgc3RkOjpvcHRpb25h
bDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQ7CiAKICAgICBzd2l0Y2gg
KHN0YXR1cykgewogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfU1VDQ0VTUzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggNDE1NjFkMWY2Mzk1OWM4YTZiMTk2
MDc5ZTI0ZGFmOWRkNDA1MDMyMi4uYjdmNzA0Nzg4MWE4MzhhMTgyYTEzMThmOTk3YjkyM2NmN2U0
MzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0KCkgPSBkZWZhdWx0OwogCiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6fkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0KCkgPSBkZWZhdWx0OwogCi1ib29sIGlzRmluYWxT
dGF0ZVJlc3VsdChjb25zdCBPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJl
c3VsdCkKK2Jvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCmluZGV4IDNhNzhk
OGQ3ZDQ2YjlhZmJmMDg1ZTRjNWE2NWRiNTc3MGYyMzVlNDQuLjNlNmJlMmRhMmNiMGIxNDY1N2U4
YjA4N2U4MzAyMjNmZmY0MmMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKQEAg
LTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgewogICAg
IFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGVycm9yczsKIH07CiAKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNvbnN0IE9wdGlvbmFsPFBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZpbmFsU3RhdGVSZXN1bHQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmgKaW5kZXggODEzNmNhMzE1YjcyMjBmZDkw
ZWMwMTQzZmU3ZmM0NDk3MjEwZWEyOS4uZmVmMmJlZDdlZDVlM2UxY2NhYzk2ODY5MDkxM2NiOTVm
ZWVhNGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNldHVwV2ViQ29yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXR1cFdlYkNvcmUuaApAQCAtNjMsOCArNjMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKIAogICAgIEFwcGxlUGF5U2V0
dXBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKLSAgICBPcHRpb25hbDxTZXR1cEZlYXR1
cmVzUHJvbWlzZT4gbV9zZXR1cEZlYXR1cmVzUHJvbWlzZTsKLSAgICBPcHRpb25hbDxCZWdpblBy
b21pc2U+IG1fYmVnaW5Qcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8U2V0dXBGZWF0dXJlc1By
b21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxCZWdpblBy
b21pc2U+IG1fYmVnaW5Qcm9taXNlOwogICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8QXBwbGVQ
YXlTZXR1cD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVw
ZGF0ZS5oCmluZGV4IGRmMjdkYzg1MTYyNTFmYzIzOWViMzA1ZjNlNzg5ZjQ2ZWE1YmEyM2EuLmIw
NjkyMjg0N2ZmODQxY2ZiMjExNjg3ODE2NjFjY2YzZjYxNDQ4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdD
b250YWN0VXBkYXRlLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IEFwcGxlUGF5U2hpcHBpbmdD
b250YWN0VXBkYXRlIGZpbmFsIDogcHVibGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2Ugewog
ICAgIFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHM7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2hp
cHBpbmdDb250YWN0VXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBk
YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTU0LDcgKzU0LDcgQEAgdm9pZCBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0
VXBkYXRlIHJlc3VsdDsKIApAQCAtNjIsNyArNjIsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6OmRlY29kZShE
ZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0
eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlw
ZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCmluZGV4IGNjZmJkNzE0
NjE3NTM4YjljNjM2NDZkMzZjOTllMDRkYzMxOGE2ZjAuLjBjNDMzM2NkMGE1NTE1YmMyNGVlOWRk
ZjhhOWMxODQzOTk0ZDA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0
cnVjdCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIGZpbmFsIDogcHVibGljIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2REYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBBcHBsZVBheVNo
aXBwaW5nTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IEFwcGxl
UGF5U2hpcHBpbmdNZXRob2Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIHJlc3VsdDsK
IApAQCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcgogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCi0gICAgT3B0
aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAg
IGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmgKaW5kZXggOGJiYTU0MWU3YTcwMzU5
Mzg0YTQ1NTBiNDgyMWE4ODNlZGIzYmRjNi4uY2IwYmYyOTVjZGUwMDMxNjBiOTNiN2RiODg4MGMz
N2FjZmIzZjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBz
dHJ1Y3QgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgewogI2VuZGlmCiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RE
YXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlRGF0YShEZWNvZGVyJik7CiB9OwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEFwcGxl
UGF5U2hpcHBpbmdNZXRob2REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2REYXRhPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBBcHBsZVBheVNo
aXBwaW5nTWV0aG9kRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZERhdGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEo
ZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCmluZGV4IDg3ZmFjODhjNWQ0NjY3
YjgyOTJlYjYxYTNhYjM0M2UwYzgxMTNlN2UuLjJhNWUzNDdjZjVlNDEzMGUyODNiYmNlYjZhNWIy
MmU4NWJlMDAwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RV
cGRhdGUgZmluYWwgOiBwdWJsaWMgQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSB7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0
aG9kVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDMsNyArNDMs
NyBAQCB2b2lkIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBw
bGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUgcmVzdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHAKaW5kZXggNDg5M2JlMjExYzc5NDRjZmE5MTZiMjkxZmJhOTg0NTg1Y2QyZGY2
Yi4uNWQ4Y2JiNjRiYTgyNmMyZTcxMzBiZjJjNTVkZTVkOTA2Y2E0ZGQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNw
cApAQCAtMTMzLDIxICsxMzMsMjEgQEAgdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24KICAgICBtX2Ns
aWVudC5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRTZXNzaW9uKTsK
IH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCit2
b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewog
ICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24pOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKSIpOwogICAgIG1fY2xpZW50LmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBQ
YXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBBU1NF
UlQobV9hY3RpdmVTZXNzaW9uKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbigpIik7CiAgICAgbV9jbGllbnQuY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5
UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vz
c2lvbik7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxldGVQYXltZW50TWV0aG9k
U2VsZWN0aW9uKCkiKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRv
cjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFBh
eW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25h
bDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9u
YWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNT
RVJUKG1fYWN0aXZlU2Vzc2lvbik7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxl
dGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZSgpIik7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQ
YXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9u
YWw8QXBwbGVQYXlQYXltZW4KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9N
RVRIT0RfTU9ERSkKIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNl
c3Npb24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQordm9p
ZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25h
bDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
YWN0aXZlU2Vzc2lvbik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBheW1lbnRDb29yZGlu
YXRvcjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oUGF5bWVudFNlc3Npb25FcnJvciYmIGVycm9y
KQogICAgIG1fYWN0aXZlU2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4g
UGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYsIHVu
c2lnbmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgcGF5bWVudE5ldHdvcmspIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0
d29yayhEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgcGF5bWVudE5l
dHdvcmspIGNvbnN0CiB7CiAgICAgaWYgKHZlcnNpb24gPCAyICYmIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UocGF5bWVudE5ldHdvcmssICJqY2IiKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5oCmluZGV4IDE2N2VjMTUyMzE4MGE0ODZkNjRlNmExNzRlMDBmZTljN2RlODZhYTcu
LmE3YTc5ZDMyZjdiNmU1NjUzNmFkZDlhMmU4OWM4MzhhM2JhM2EyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAt
NzMsMTMgKzczLDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW5QYXltZW50U2Vzc2lvbihE
b2N1bWVudCYsIFBheW1lbnRTZXNzaW9uJiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1l
bnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJik7Ci0gICAgdm9p
ZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNo
aXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYp
OworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BB
WU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hh
bmdlKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOworICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5
UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlf
UEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0
aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpOworICAgIHZvaWQgY29tcGxldGVQ
YXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYm
KTsKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1l
bnRTZXNzaW9uKCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJM
RShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKFBheW1lbnRTZXNzaW9uRXJyb3ImJik7CiAKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zaWdu
ZWQgdmVyc2lvbiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbiwg
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBib29sIHNob3VsZEVuYWJsZUFwcGxlUGF5QVBJ
cyhEb2N1bWVudCYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPHZvaWQsIEV4
Y2VwdGlvbkRldGFpbHM+IHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggMzQwZGUyZmJkNjU0ODkzNDg0NmI4MDRlNzJj
MTJkNjY3OTE4NzUzMC4uM2QzYmE5NjI2NDlhZTgyMWQyZDVjYjkzZDAwMjZhMzE5NjE5MzQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvckNsaWVudC5oCkBAIC01MSwyMCArNTEsMjAgQEAgY2xhc3MgUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNp
Z25lZCB2ZXJzaW9uKTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQ
YXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBT
dHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
d1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVBheW1lbnRNZXRob2RVcGRhdGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYpID0gMDsKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdmlydHVhbCB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0
aG9kTW9kZVVwZGF0ZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRN
ZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVw
ZGF0ZT4mJikgPSAwOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0Rf
TU9ERSkKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21w
bGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbQppbmRleCBjZTU3MDg5NmZmZDliZGVkYzk0ZmM3YzZmYTNhMTNk
MTA0ZjU4NDcwLi44N2U1M2QyZDk4NjE3MDk5ZTcyYzRhNDA2YTU0ODhiYTBjNzk1Y2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCkBAIC0xNTMsNyArMTUzLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEFwcGxlUGF5SW5zdGFs
bG1lbnRJdGVtJiBpdGVtKQogICAgIHJldHVybiBpbnN0YWxsbWVudEl0ZW07CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29u
c3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBhcnJheUVsZW1lbnQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29u
c3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYg
KCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVu
dEl0ZW1DbGFzcygpXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9u
LmgKaW5kZXggMjY4NmE5MDEyMDU3ZjUxOTczZmFlYzE4OGUzYTMxM2Q1NjIwZmU4Yi4uMWQ1NGIw
YWYwMTZmMTk3Y2I5ZTBhYWM0YWQzYzM3N2Q3ZWYyM2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9u
YWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZnJvbUpTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTVmFsdWUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBmcm9tSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X3BrUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDEyOTMzYTQxYjliOWY5MDBhNzFmMGNkNmQ3OGJhNDk3
YWU0YTczOTQuLmI3MWY4NDgxZmMyOTZkODZjNzQwYTM5OWM5ODJmMzU5NjU5ZTMzOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4g
UGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJikKK3N0ZDo6b3B0aW9u
YWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpT
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogRG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBO
U1N0cmluZy4KICAgICBhdXRvIGpzb25TdHJpbmcgPSBKU09OU3RyaW5naWZ5KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCmluZGV4IDNiYjYzZjAx
NzZhZTI4MTFkYjJjMzE4NTM1NDk2Mzc5NDM4YTM3MjkuLjc2NTNkZTU0YWY1MzlmMjU2MWY0MjIz
NmQzMGVjNjFhYjU4MDNkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRQYXNzOjpBY3RpdmF0aW9uU3RhdGUgY29udmVydChQ
S1BheW1lbnRQYXNzQWN0aXZhdGlvblN0YXRlCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50UGFzcz4gY29udmVydChQS1BheW1lbnRQYXNzICpwYXltZW50UGFzcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXlt
ZW50UGFzcyAqcGF5bWVudFBhc3MpCiB7CiAgICAgaWYgKCFwYXltZW50UGFzcykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPEFw
cGxlUGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50UGFzcyAqcGF5bWVudFBhc3MpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1l
dGhvZDo6VHlwZT4gY29udmVydChQS1BheW1lbnRNZXRob2RUeXBlIHBheW1lbnRNZXRob2RUeXBl
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kOjpUeXBlPiBjb252
ZXJ0KFBLUGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1ldGhvZFR5cGUpCiB7CiAgICAgc3dpdGNo
IChwYXltZW50TWV0aG9kVHlwZSkgewogICAgIGNhc2UgUEtQYXltZW50TWV0aG9kVHlwZURlYml0
OgpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnQoQ05MYWJlbGVkVmFsdWU8
Q05Qb3N0YWxBZGRyZXNzKj4gKnBvc3RhbEFkZHJlc3MsIEFwcGxlUGF5UGF5CiAgICAgcmVzdWx0
LmNvdW50cnlDb2RlID0gcG9zdGFsQWRkcmVzcy52YWx1ZS5JU09Db3VudHJ5Q29kZTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0
ICpiaWxsaW5nQ29udGFjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENv
bnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxsaW5nQ29udGFjdCkKIHsKICAgICBpZiAoIWJp
bGxpbmdDb250YWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRT
ZXNzaW9uRXJyb3JDb2NvYS5tbQppbmRleCAyYzA2YjQ2ZTgzNDRiNmY3N2U2NGNjNTRiY2JmYTRh
YzY4MGI4Y2Q5Li4yMmQ1NDFjZGMxNjY3NTUzOGZiM2QwZjE1OWMwZGYyNjg5NDM0MWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNz
aW9uRXJyb3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4g
YWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9yKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBw
bGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9yICplcnJvcikKIHsKICNp
ZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGgg
UEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheU1vZGlmaWVyLmgKaW5kZXggNGQxMjlhZWFlMGI4NTM2MDU1MTFlY2E2MWQyMmFmMjk5YWU0
YmZlNy4uNWIwMGIwZjhjYThhN2RkNGZlOWNmNTY0YWM4NjJmYWRlNWFiMjA5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBh
eU1vZGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5TW9kaWZpZXIgewotICAgIE9wdGlvbmFsPEFwcGxl
UGF5UGF5bWVudE1ldGhvZFR5cGU+IHBheW1lbnRNZXRob2RUeXBlOworICAgIHN0ZDo6b3B0aW9u
YWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZT4gcGF5bWVudE1ldGhvZFR5cGU7CiAgICAgVmVj
dG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGFkZGl0aW9uYWxTaGlwcGluZ09wdGlvbnM7CiAK
ICNpZiBkZWZpbmVkKEFwcGxlUGF5TW9kaWZpZXJBZGRpdGlvbnNfbWVtYmVycykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IDU2MDE0MTg1OWUx
Y2IyYjI4YjdlZDU5ZDE1MGQ4YTc5Y2JjNjc4YzEuLjMyM2M0Njc0ODU3ZjJiM2Q0ZjdkZjAzZDQz
ZTE2OTdlZGQzMWRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcApAQCAtMzYzLDcgKzM2Myw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8QXBw
bGVQYXlMaW5lSXRlbSwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+Pj4gQXBwbGVQYXlQYXltCiAg
ICAgcmV0dXJuIHt7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfX07CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoU3Ry
aW5nJiYgbWVzc2FnZSwgT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFj
dEZpZWxkLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYgZXJyb3JzKQorc3RhdGljIGlu
bGluZSB2b2lkIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihTdHJpbmcmJiBtZXNz
YWdlLCBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVs
ZCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mIGVycm9ycykKIHsKICAgICBpZiAoIW1l
c3NhZ2UuaXNOdWxsKCkpCiAgICAgICAgIGVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3Jl
YXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkLCBXVEZNb3ZlKGNv
bnRhY3RGaWVsZCksIFdURk1vdmUobWVzc2FnZSkpKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5bWVudE1ldGhv
ZEVycm9ycyhKU0M6OkpTT2JqZQogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNv
bnN0IEFwcGxlUGF5TW9kaWZpZXImKSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCi1FeGNlcHRp
b25PcjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5
TW9kaWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZp
ZXIoKSBjb25zdAorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnRE
ZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxl
cjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFpbHMg
PSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogICAgIGlmICghZGV0YWlscy5t
b2RpZmllcnMpCkBAIC02NDQsNyArNjQ0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHAKICAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRl
KE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCit2b2lkIEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3Vs
dCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVz
dWx0KHN0ZDo6bnVsbG9wdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhh
bmRsZXIuaAppbmRleCA4MDBlNzdiOTI0YmZmYjBmOTcxOTQ0MzQyNDE4ZWQwNDZhM2NjYTM4Li4z
MWIyOWRmMjM2ZDJiNDljMjdkMTNkNGQwMDVhNThhZjFjMWZmNjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRy
ZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NF
cnJvcnMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxSZWZQdHI8QXBw
bGVQYXlFcnJvcj4+JikgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1l
bnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9y
PFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25h
bDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4g
Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPHN0ZDo6dHVwbGU8UGF5bWVudERldGFpbHNNb2RpZmllciwgQXBwbGVQYXlNb2RpZmll
cj4+PiBmaXJzdEFwcGxpY2FibGVNb2RpZmllcigpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2hpcHBpbmdBZGRyZXNzVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+
PiYmIGVycm9ycyk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hpcHBpbmdPcHRpb25VcGRhdGVk
KCk7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudChE
b2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGV0YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVl
c3Q6OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJF
cnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSBmaW5hbDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpK
U1ZhbHVlJiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8UGF5bWVudENvbXBs
ZXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENv
bXBsZXRlPiYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFs
aWRhdGlvbkVycm9ycyYmKSBmaW5hbDsKIAogICAgIC8vIFBheW1lbnRTZXNzaW9uCkBAIC05NSw4
ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFBheW1lbnRSZXF1ZXN0PiBtX3BheW1lbnRSZXF1ZXN0
OwotICAgIE9wdGlvbmFsPEFwcGxlUGF5UmVxdWVzdD4gbV9hcHBsZVBheVJlcXVlc3Q7Ci0gICAg
T3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZT4gbV9zZWxlY3RlZFBheW1lbnRNZXRo
b2RUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlSZXF1ZXN0PiBtX2FwcGxlUGF5UmVx
dWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU+IG1fc2Vs
ZWN0ZWRQYXltZW50TWV0aG9kVHlwZTsKIAogICAgIGVudW0gY2xhc3MgVXBkYXRlU3RhdGUgOiB1
aW50OF90IHsKICAgICAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmlu
ZGV4IGJlMTgzMjMxYWU5NWMzNzM2MzNhNzRlMWM3NGU3MWE5YjFhYzQxMGMuLmE0MzI2Yzk0ZTg3
Njc4YjViZDE1OWJlYTcwODk5NTdkODYwNjRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFu
aWZlc3QuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdCB7CiAg
ICAgQ29sb3IgdGhlbWVDb2xvcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1h
bmlmZXN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PEFwcGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBBcHBsaWNhdGlv
bk1hbmlmZXN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsaWNhdGlvbk1h
bmlmZXN0IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggMTk5NzA1ZTU3OTdiMDg3ZTczMzcwNWQ5YTEw
NTNkYWUyMjJhNjI2MS4uZTlkOGFmZTM2ZGJhOGZmM2Q0YTg4NTJjNDk2NmNhYzA1NTJmN2YzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6
OmludmFsaWRhdGUoKQogICAgICAgICByZWplY3QoKTsKIH0KIAotdm9pZCBDbGlwYm9hcmQ6Okl0
ZW1Xcml0ZXI6OnNldERhdGEoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYgZGF0YSwg
c2l6ZV90IGluZGV4KQordm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OnNldERhdGEoc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiBkYXRhLCBzaXplX3QgaW5kZXgpCiB7CiAg
ICAgaWYgKGluZGV4ID49IG1fZGF0YVRvV3JpdGUuc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuaAppbmRleCBhNmM1OGJjOTI5YjViYzc1NTJjYmQ2NTU0ZjQ4Mjk0N2Ez
NDI4MWQ3Li44YjI2NjZjOWMzYjgyZmQ4MWQzNTFiZTg5ZTQ0ZjkxYTIxYThmN2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaApA
QCAtOTUsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRlbVdy
aXRlcihDbGlwYm9hcmQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgICAgICB2b2lk
IHNldERhdGEoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIHNpemVfdCBpbmRleCk7
CisgICAgICAgIHZvaWQgc2V0RGF0YShzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYmLCBzaXplX3QgaW5kZXgpOwogICAgICAgICB2b2lkIGRpZFNldEFsbERhdGEoKTsKICAgICAg
ICAgdm9pZCByZWplY3QoKTsKIAogICAgICAgICBXZWFrUHRyPENsaXBib2FyZD4gbV9jbGlwYm9h
cmQ7Ci0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4+IG1fZGF0
YVRvV3JpdGU7CisgICAgICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21E
YXRhPj4gbV9kYXRhVG9Xcml0ZTsKICAgICAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9w
cm9taXNlOwogICAgICAgICB1bnNpZ25lZCBtX3BlbmRpbmdJdGVtQ291bnQ7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CkBAIC0xMTEsOSArMTExLDkg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVzb2x2ZU9yUmVqZWN0KEl0ZW1Xcml0ZXImKTsK
IAotICAgIE9wdGlvbmFsPFNlc3Npb24+IG1fYWN0aXZlU2Vzc2lvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNlc3Npb24+IG1fYWN0aXZlU2Vzc2lvbjsKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9u
YXZpZ2F0b3I7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPj4gbV9k
YXRhVG9Xcml0ZTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4+IG1fZGF0YVRvV3JpdGU7CiAgICAgUmVmUHRyPEl0ZW1Xcml0ZXI+IG1fYWN0aXZlSXRlbVdy
aXRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggNzkzNWQ3YTI5NjQ0ZmQ2MDJlODY5ZmM5
YjZmOTMwMTI0YjM5ZWQyNS4uZDMzM2M2MTRhNDY1YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVt
OjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgIG1fZGF0YVNvdXJjZS0+Z2V0VHlwZSh0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsK
IH0KIAotdm9pZCBDbGlwYm9hcmRJdGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJk
JiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3RE
YXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQog
ewogICAgIG1fZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGRlc3RpbmF0aW9uLCBX
VEZNb3ZlKGNvbXBsZXRpb24pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAppbmRleCAyN2UxNzFhMjllYTdiZjI4
ODY4YmVhNDIwYjRjMWRiYjljYjdkZjVmLi5kYWM2YWZmYzY3NzU5Yzc1NzlhYmEyNjVkM2Y1YzFj
MGNlNmVlN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBW
ZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJp
bmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQgY29sbGVjdERhdGFGb3JX
cml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJik7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZv
cldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpOwogCiAgICAgUHJlc2VudGF0
aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRhdGlv
blN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGE2MjAxNmJiNTUwNDFlM2Rh
ODg3ZjRmMWRmZjdjNzkyMDQ4YzA4ZjIuLjFhMTJlMDk5MmE3NmNmYjQ0MmY1YTg2ZGM2OGY0YzEz
NWM0NTNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9
KTsKIH0KIAotdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0
YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlw
Ym9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQogewogICAgIG1faXRlbVR5cGVM
b2FkZXJzLmNsZWFyKCk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCBlODRmYmMzM2M1
YzIyYzhlNDdkOTkwN2MwZGFiZmJlN2JjZDQwZGQ1Li45MTRkYzMyNzI4MjczOGEwMDY3OWU2ZWQ0
NDc0NzgxMGNlM2ZmYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9y
PFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3Ry
aW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0RGF0
YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNv
bGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7
CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKQEAgLTkwLDcgKzkwLDcg
QEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlBlbmRpbmdDbGlw
Ym9hcmRUeXBlcyB7IDAgfTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBh
c3RlYm9hcmRDdXN0b21EYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4+
IG1faXRlbVR5cGVMb2FkZXJzOwogICAgIFdlYWtQdHI8Q2xpcGJvYXJkPiBtX3dyaXRpbmdEZXN0
aW5hdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKaW5kZXggZjI5ODc1MzY5
YTY5MjAyZjAzYTgxODFjMTllN2YyMWI3NjQ3MTJmMy4uNmU0ZDI5YWFjYjQzOWU3M2YxNDJmYmNj
NTYzNTg0MWMxNTJmN2Y5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0RGF0YUZv
cldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2xpcGJvYXJkSXRlbSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKaW5kZXggNzg1NWMwZWQx
NTA4ZWJkNTRkNTllZjZmZDhkYmM2ZGRhYmI1OWU1ZS4uMWViYmEzZWU5YjljNTU3MmQwMGQ3MDlk
N2JlYmIxNWYwNzI0ZTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVi
b2FyZERhdGFTb3VyY2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbVBh
c3RlYm9hcmREYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVy
cmVkCiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogfQogCi12b2lk
IENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5n
KENsaXBib2FyZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1
c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQordm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0
aW9uKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRv
IHN1cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1iYWNrZWQgQ2xpcGJvYXJkSXRlbXMKICAgICAvLyBi
YWNrIHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5nIENsaXBib2FyZC53cml0ZSgpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBh
c3RlYm9hcmREYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAppbmRleCBlNWI3M2ZlNDMx
ZGYyNjIxYjBiNTM0ZWFkNzZjYzMxMDdkODJiZTdmLi41ZDk4ZWQyYjY4MGIwM2M1YTk1YzlhYWE1
MmE1ODA4MjQ5ZjZmMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0
IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwotICAgIHZvaWQgY29sbGVj
dERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CisgICAgdm9p
ZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpIGZp
bmFsOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCBkMjRlZTI5ZGFl
MzdmNDJhZGExNTEwN2IxNWNlODJmOTJkM2RhMWU2Li4yODgyYTg0ODcxYzljMmRlOTU5ZDVhY2Ex
MDVkMDVjZmU2MmVlNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNv
bi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29u
L05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBOYXZpZ2F0b3JCZWFj
b246OmxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGRvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBtYWtlU3RyaW5nKCJCZWFjb24gQVBJIGNhbm5vdCBsb2FkICJfcywgZXJyb3IuZmFpbGlu
Z1VSTCgpLnN0cmluZygpLCBtZXNzYWdlTWlkZGxlLCBkZXNjcmlwdGlvbikpOwogfQogCi1FeGNl
cHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkp
CitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6Oklu
aXQ+JiYgYm9keSkKIHsKICAgICBVUkwgcGFyc2VkVXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
dXJsKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJl
YWNvbjo6c2VuZEJlYWNvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5k
QmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgdXJsLCBPcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK0V4Y2VwdGlvbk9y
PGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihOYXZpZ2F0b3ImIG5hdmlnYXRvciwg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk6OkluaXQ+JiYgYm9keSkKIHsKICAgICByZXR1cm4gTmF2aWdhdG9yQmVhY29uOjpmcm9t
KG5hdmlnYXRvciktPnNlbmRCZWFjb24oZG9jdW1lbnQsIHVybCwgV1RGTW92ZShib2R5KSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCmlu
ZGV4IDgxM2I3NTFlNDIzYWViNDZmMTczZjZmMDVhMTUxZDE1ZjA4Y2VhMGIuLjkyZWIxOWQ0OTU1
NDQ4N2FiZGViZTUxZWMxMTZjYTc1ZWU2N2IxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCkBAIC00NCwxNCArNDQsMTQgQEAgY2xhc3Mg
TmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiwgcHJp
dmF0ZSBDYWNoZWRSYXdSZXMKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0b3JCZWFjb24o
TmF2aWdhdG9yJik7CiAgICAgfk5hdmlnYXRvckJlYWNvbigpOwotICAgIHN0YXRpYyBFeGNlcHRp
b25Pcjxib29sPiBzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiB1cmwsIE9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPGJvb2w+IHNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYpOwogCiAgICAgc2l6ZV90IGlu
ZmxpZ2h0QmVhY29uc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbmZsaWdodEJlYWNvbnMuc2l6
ZSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9t
KE5hdmlnYXRvciYpOwogCiBwcml2YXRlOgotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNlbmRCZWFj
b24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0
PiYmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBzZW5kQmVhY29uKERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDk1YTg3ZGQ3OTFhMzEyNDUyZDA3ZmM3YmNjYTgx
NGFlYjJmNzA0ODYuLjEwZjg4YjE4OGExNjFkODFkNjMxN2MyZjhhNDY1YjVkODE1OTZhYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0xMTUsNyArMTE1
LDcgQEAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRE9NQ2FjaGU6OmNsb25lUmVzcG9uc2Vz
KGNvbnN0IFZlY3RvcjxET01DYWNoZUVuZ2luZToKICAgICB9KTsKIH0KIAotdm9pZCBET01DYWNo
ZTo6bWF0Y2hBbGwoT3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlv
bnMmJiBvcHRpb25zLCBNYXRjaEFsbFByb21pc2UmJiBwcm9taXNlKQordm9pZCBET01DYWNoZTo6
bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmIG9wdGlvbnMsIE1hdGNoQWxsUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKFVO
TElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CkBAIC00
MjEsNyArNDIxLDcgQEAgc3RhdGljIFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRE8KICAgICByZXR1cm4gRmV0Y2hS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3RIZWFk
ZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5yZXF1ZXN0IH0sIEZldGNoT3B0aW9ucyB7
IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29yZC5yZWZlcnJlciB9KTsKIH0KIAotdm9p
ZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5
T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRE9NQ2FjaGU6
OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoVU5MSUtFTFko
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCA5MjBlNDIwYjEyYTg4ZDgyOTNkZTY3Y2Ey
ODkxMTlkYWFkMDE3NGJmLi4xMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC00NywxMyArNDcs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgbWF0Y2goUmVxdWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9w
dGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB1c2luZyBNYXRjaEFsbFBy
b21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZldGNo
UmVzcG9uc2U+Pj47Ci0gICAgdm9pZCBtYXRjaEFsbChPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwg
Q2FjaGVRdWVyeU9wdGlvbnMmJiwgTWF0Y2hBbGxQcm9taXNlJiYpOworICAgIHZvaWQgbWF0Y2hB
bGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgTWF0
Y2hBbGxQcm9taXNlJiYpOwogICAgIHZvaWQgYWRkKFJlcXVlc3RJbmZvJiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIHZvaWQgYWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4m
JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgcHV0KFJlcXVlc3RJbmZv
JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAg
ICAgdm9pZCByZW1vdmUoUmVxdWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NUHJv
bWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwotICAgIHZvaWQga2V5cyhPcHRpb25hbDxSZXF1
ZXN0SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgS2V5c1Byb21pc2UmJik7CisgICAgdm9p
ZCBrZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYsIENhY2hlUXVlcnlPcHRpb25zJiYs
IEtleXNQcm9taXNlJiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oCmluZGV4IDhlNjJmYTE5MWMyYzllODM3ZjhlZDA5MzI0ZDc5OGViNTJmNWM4NDQuLmE0
OTUwYjU5NDYyMjc2ZGQyNWRiNTJkMjllY2Y2ODEyMmU3YzQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTg3LDcgKzg3LDcgQEAgc3Ry
dWN0IENhY2hlSW5mb3MgewogICAgIENhY2hlSW5mb3MgaXNvbGF0ZWRDb3B5KCk7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENhY2hlSW5mb3M+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFZlY3RvcjxDYWNoZUlu
Zm8+IGluZm9zOwogICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CkBAIC05NSw3ICs5NSw3IEBA
IHN0cnVjdCBDYWNoZUluZm9zIHsKIAogc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJl
c3VsdCB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDYWNo
ZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3Bl
cmF0aW9uUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciB7IDAgfTsKICAgICAvLyBUcnVlIGluIGNhc2Ugc3RvcmluZyBjYWNoZSBsaXN0IG9uIHRoZSBm
aWxlc3lzdGVtIGZhaWxlZC4KQEAgLTExNSw3ICsxMTUsNyBAQCB1c2luZyBDYWNoZUluZm9zQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENhY2hlSW5mb3NPckVycm9yJiYpPjsKIHVz
aW5nIFJlY29yZHNPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFJlY29yZD4sIEVycm9yPjsKIHVz
aW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVjb3Jkc09yRXJy
b3ImJik+OwogCi11c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEVycm9yPiYmKT47Cit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPjsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgQ2FjaGVJbmZvczo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CkBAIC0xMjMsMTQgKzEyMywxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiBpbmxpbmUgdm9pZCBDYWNoZUluZm9zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHVwZGF0ZUNvdW50ZXI7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBPcHRpb25hbDxDYWNoZUluZm9zPiBDYWNoZUluZm9zOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlv
bmFsPENhY2hlSW5mb3M+IENhY2hlSW5mb3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+PiBpbmZvczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxDYWNoZUluZm8+PiBpbmZvczsKICAgICBkZWNvZGVyID4+IGluZm9zOwogICAgIGlm
ICghaW5mb3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdXBkYXRlQ291bnRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1cGRh
dGVDb3VudGVyOwogICAgIGRlY29kZXIgPj4gdXBkYXRlQ291bnRlcjsKICAgICBpZiAoIXVwZGF0
ZUNvdW50ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDQsMTQgKzE0NCwx
NCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDYWNoZUlkZW50aWZpZXJP
cGVyYXRpb25SZXN1bHQ6OmVuY29kZShFbmNvZAogICAgIGVuY29kZXIgPDwgaGFkU3RvcmFnZUVy
cm9yOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJ
ZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5l
IHN0ZDo6b3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlkZW50
aWZpZXJPcGVyYXRpb25SZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGhhZFN0b3JhZ2VFcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJv
cjsKICAgICBkZWNvZGVyID4+IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBpZiAoIWhhZFN0b3JhZ2VF
cnJvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmYTA1MGMyOGNmZmU1ZmZl
ZDk2ZDg4OGY5ODIyOWRkNDIyNDk1YTdhLi44YTljYjFmYzg3NWYyMzU3NzkzYTU4NjUwZTExZDll
MWFmOWEyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZVN0b3JhZ2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVT
dG9yYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhCiAK
IERPTUNhY2hlU3RvcmFnZTo6fkRPTUNhY2hlU3RvcmFnZSgpID0gZGVmYXVsdDsKIAotT3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0b3JhZ2U6Om9yaWdpbigpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewog
ICAgIGF1dG8qIG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiAgICAgaWYgKCFvcmln
aW4pCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvU2VxdWVudGlh
bE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnkKIAogdm9pZCBE
T01DYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hl
UXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgb3B0aW9u
cyA9IFdURk1vdmUob3B0aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICByZXRyaWV2ZUNhY2hlcyhb
dGhpcywgaW5mbyA9IFdURk1vdmUoaW5mbyksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhj
ZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNo
ZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiAKIHZvaWQgRE9N
Q2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1l
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CisgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24p
IG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNDEsNyArMTQxLDcgQEAgUmVmPERPTUNhY2hlPiBET01DYWNoZVN0b3JhZ2U6OmZpbmRD
YWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8mJiBpbmYKICAgIHJldHVybiBE
T01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby5u
YW1lKSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKIH0KIAotdm9p
ZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdl
OjpyZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIG9yaWdpbiA9IHRoaXMtPm9yaWdp
bigpOwogICAgIGlmICghb3JpZ2luKSB7CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQg
bG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3QKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPERPTUNhY2hlPj4mJiBwcm9taXNl
KQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAg
cmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBp
ZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNl
cHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIERP
TUNhY2hlU3RvcmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZQogCiB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsK
LSAgICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIHJldHJp
ZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9u
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBET01DYWNo
ZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4KIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBw
cm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAg
cmV0cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhj
ZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52
YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBiNDBlYWFjZGVjODhmODc1NWEzMWU1OTli
MmY3NTY1ZjJhMjlmNjg2Li4xOTQ3ZmM3YWNjYzllM2M5OTM0NjM2NWRlZmQ5ZmNiNzc3MjUzYzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgK
QEAgLTU1LDkgKzU1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvT3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RE9NQ2FjaGU+PiYmKTsKICAg
ICB2b2lkIGRvUmVtb3ZlKGNvbnN0IFN0cmluZyYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29s
ZWFuPiYmKTsKICAgICB2b2lkIGRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5m
byYmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAgICB2
b2lkIHJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgUmVmPERPTUNhY2hlPiBm
aW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiYpOwotICAgIE9wdGlv
bmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGll
bnRPcmlnaW4+IG9yaWdpbigpIGNvbnN0OwogCiAgICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1f
Y2FjaGVzOwogICAgIHVpbnQ2NF90IG1fdXBkYXRlQ291bnRlciB7IDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKaW5k
ZXggYWZmMjc4ZDc1MWZjZDNkOGIwNDk3OTYwZDNhMjgyZGY4NmE1MGFkMS4uZThlNDhmZTRiYWRj
YzYzYzhhYTdkYTc1NTRjNGY2YjIyOTRjYTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKQEAgLTM0LDcgKzM0LDcg
QEAgc3RydWN0IFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgewogICAgIFJldHJpZXZlUmVjb3Jkc09w
dGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29w
eSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgc2hvdWxkUHJvdmlk
ZVJlc3BvbnNlIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmV0cmlldmVSZWNvcmRzT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNP
cHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7
CiAgICAgYm9vbCBpZ25vcmVTZWFyY2ggeyBmYWxzZSB9OwpAQCAtNDgsMjkgKzQ4LDI5IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFJldHJpZXZlUmVjb3Jkc09wdGlvbnM6
OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8PCByZXF1ZXN0IDw8IGlnbm9yZVNl
YXJjaCA8PCBpZ25vcmVNZXRob2QgPDwgaWdub3JlVmFyeSA8PCBzaG91bGRQcm92aWRlUmVzcG9u
c2U7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxSZXRyaWV2
ZVJlY29yZHNPcHRpb25zPiBSZXRyaWV2ZVJlY29yZHNPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJl
dHJpZXZlUmVjb3Jkc09wdGlvbnM+IFJldHJpZXZlUmVjb3Jkc09wdGlvbnM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdDsKICAgICBkZWNvZGVy
ID4+IHJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlU2VhcmNoOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaWdub3JlU2VhcmNoOwogICAgIGRlY29kZXIgPj4gaWdub3JlU2VhcmNoOwogICAg
IGlmICghaWdub3JlU2VhcmNoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gaWdub3JlTWV0aG9kOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdu
b3JlTWV0aG9kOwogICAgIGRlY29kZXIgPj4gaWdub3JlTWV0aG9kOwogICAgIGlmICghaWdub3Jl
TWV0aG9kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gaWdub3JlVmFyeTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZVZhcnk7CiAgICAg
ZGVjb2RlciA+PiBpZ25vcmVWYXJ5OwogICAgIGlmICghaWdub3JlVmFyeSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFByb3ZpZGVSZXNw
b25zZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKICAg
ICBkZWNvZGVyID4+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBpZiAoIXNob3VsZFByb3Zp
ZGVSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdEluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdEluZm8uaAppbmRleCAzMGVi
NDYxN2JhYTg4MmNkOWVkMTk4NmQxNjJlMWEzZGU4N2ZkM2E3Li4wNDllMmJlMDdiNDM4ZDMzYThh
ODE0ZWM1OTM1YzE3Nzk3ZWI0ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NvbnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jb250YWN0LXBpY2tlci9Db250YWN0SW5mby5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBD
b250YWN0SW5mbyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdGVsOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb250YWN0SW5mbz4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb250
YWN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CkBAIC00OSwxOSArNDksMTkgQEAgdm9pZCBDb250YWN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxDb250
YWN0SW5mbz4gQ29udGFjdEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxDb250YWN0SW5mbz4gQ29udGFjdEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBuYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFt
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxT
dHJpbmc+PiBlbWFpbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbWFpbDsK
ICAgICBkZWNvZGVyID4+IGVtYWlsOwogICAgIGlmICghZW1haWwpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGVsOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHRlbDsKICAgICBkZWNvZGVyID4+IHRlbDsKICAg
ICBpZiAoIXRlbCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNNYW5hZ2VyLmNw
cAppbmRleCBlYTRiNmJlZGUxMmIxODMyMmIzMTRmM2ZlOTU4MzdjZTRlMzNiNzk5Li41NzUxMzY3
OGQzOTViMTUxYzg1MGFjZjcyMjRmZjM1MGMzNmE4YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RzTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c01hbmFnZXIuY3BwCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBDb250YWN0c01hbmFnZXI6OnNlbGVjdChjb25zdCBWZWN0
b3I8Q29udGFjdFByb3BlcnR5PiYgcHJvcGVydGllcywgY29uc3QgQ28KIAogICAgIG1fY29udGFj
dFBpY2tlcklzU2hvd2luZyA9IHRydWU7CiAKLSAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5z
aG93Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCB0aGlzXSAoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJiBpbmZvKSB7CisgICAgZnJh
bWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd0NvbnRhY3RQaWNrZXIocmVxdWVzdERhdGEsIFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGhpc10gKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRh
Y3RJbmZvPj4mJiBpbmZvKSB7CiAgICAgICAgIG1fY29udGFjdFBpY2tlcklzU2hvd2luZyA9IGZh
bHNlOwogICAgICAgICBpZiAoaW5mbykgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExTZXF1ZW5jZTxJRExEaWN0aW9uYXJ5PENvbnRhY3RJbmZvPj4+KCppbmZvKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1Jl
cXVlc3REYXRhLmgKaW5kZXggMzBiMGNmMjczOGM4YmE0MWVlYzU4MGU2ZDk1YjI4NmFlNDQ1MmU3
Mi4uOTI4OWEyMzU0ZjMyMTUzZjRmYzY1NzAzZTMyOTg5OTQ2ZGJlYjNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1Jl
cXVlc3REYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGEg
ewogICAgIFN0cmluZyB1cmw7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPENvbnRhY3RzUmVxdWVzdERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGFjdHNSZXF1ZXN0
RGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBA
IC01MSwxOSArNTEsMTkgQEAgdm9pZCBDb250YWN0c1JlcXVlc3REYXRhOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PENvbnRhY3RzUmVxdWVzdERhdGE+IENvbnRhY3RzUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb250YWN0c1JlcXVlc3REYXRhPiBDb250YWN0c1Jl
cXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxWZWN0
b3I8Q29udGFjdFByb3BlcnR5Pj4gcHJvcGVydGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxDb250YWN0UHJvcGVydHk+PiBwcm9wZXJ0aWVzOwogICAgIGRlY29kZXIgPj4gcHJvcGVydGll
czsKICAgICBpZiAoIXByb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxib29sPiBtdWx0aXBsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG11
bHRpcGxlOwogICAgIGRlY29kZXIgPj4gbXVsdGlwbGU7CiAgICAgaWYgKCFtdWx0aXBsZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdXJsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAg
aWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDIzN2I2ZjI5MzFkNjgyZTFjMTExMmEz
MTRhM2RkNDc0M2M5ZThlYWQuLmE4NjUzMzkyYmNkMzFkNmViNWQ1MjUxMzAxNTZiMDYzZGZiMDg5
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgewogICAgIFJlZlB0cjxBYm9ydFNpZ25hbD4gc2lnbmFsOwotICAgIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHB1YmxpY0tleTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHB1YmxpY0tl
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucy5oCmluZGV4IDhjNzc0OWNjNGUyZTJkNjg1YTg3MDlmOTVmNGM4NmU2
MTc5NjI5ZDUuLjgxYzk0ZWFhZmE3NTlkZDhkMjY5NTUzYWUzMThiNjhmNDFmZGQ1ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaApAQCAtNDAsNyArNDAsNyBA
QCBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsKIAogICAgIE1lZGlhdGlvblJlcXVp
cmVtZW50IG1lZGlhdGlvbjsKICAgICBSZWZQdHI8QWJvcnRTaWduYWw+IHNpZ25hbDsKLSAgICBP
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IHB1YmxpY0tleTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gcHVibGlj
S2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAxNmUwM2Y4Zjc3M2Y3NDhmMDZiYWE1
Y2UzNDJmZGE4ZjhhOGU4OTYuLmMxZjRiZjQyZjZmYjk4OGUyNGQyNTY4YTRjZGVkNTA3ZDg3NDlk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
QEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKICAgICByZXR1cm4gbV9wcml2YXRl
LT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDRE06
OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IENETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
CiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCAyMjMyYmYz
OTYwZDJjYzE3ODhmMmUzMmYzNzI2NzY0OWJmMGQwNGU4Li4xMDNkZGMwYzBhY2FhZGM2ZjJjNmIx
YzExNDk4Yzk2YTZmM2U0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q0RN
PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfkNETSgp
OwogCi0gICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1
c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
c3RkOjpvcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+KT47CiAgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNh
bmRpZGF0ZUNvbmZpZ3VyYXRpb24sIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsK
IAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0
ZW07IH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CiAKICAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAppbmRleCA0MTlkYjhkNTE3ZGZiM2E0MzQwN2U4YTFiMTEwZmZlMDIxNTkx
MTc1Li4wYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50
MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9l
bmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1h
dApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLU9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFS
ZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0
cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBP
cHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLU9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RL
ZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKIApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERh
dGEoYnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIg
PT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKaW5kZXggNzlmZTUxMjgwNjE0ODVlY2EyOWYxYzM4MjYxNmI3ZTQ4NmUxOTAyMi4u
NzMyOGU5ZjA0MGNmMTM1ODhkMmFkNWI2ZTg0NTkxNzg0OGQ4M2E4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVz
dHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0
YVR5cGVDYWxsYmFja3MgewogICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0g
ICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPE9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAg
dXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAg
U2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJh
Y3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+
PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5j
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCmluZGV4IGI0OTEzMzFhMTY3ODYzNDZlOGU3Yzc3NDM5OTE4OWE0YTdkYjk5MjIuLjYz
OGQxNTkwM2JhNWU0ZmIwOWE5NmQwZGJmZWI3ZWEyZTRjNGRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9uSWQsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIC8vIDguMS4gTGV0IHNhbml0aXplZCBzZXNzaW9uIElEIGJlIGEgdmFs
aWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBzZXNzaW9uSWQuCiAgICAgICAgIC8v
IDguMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHNlc3Np
b24gSUQgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVF
cnJvci4KLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQgPSBtX2lt
cGxlbWVudGF0aW9uLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKICAgICAgICAgaWYgKCFzYW5pdGl6ZWRTZXNz
aW9uSWQgfHwgc2FuaXRpemVkU2Vzc2lvbklkLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIElO
Rk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2FuaXRpemVkU1Nlc3Npb25JRCBlbXB0eSIp
OwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgLy8gOC42LiBMZXQgbWVzc2Fn
ZSB0eXBlIGJlIG51bGwuCiAgICAgICAgIC8vIDguNy4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3Rh
bmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAg
ICAgICAvLyA4LjguIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoK
LSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmxvYWRTZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpz
YW5pdGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25J
ZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWQsIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga25vd25L
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFp
bHVyZSkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5sb2FkU2Vzc2lvbiht
X3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBz
YW5pdGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRpemVkU2Vzc2lvbklkLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNl
U2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAgICAgICAg
ICAgLy8gOC44LjEuIElmIHRoZXJlIGlzIG5vIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVk
IHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbiwgcmVzb2x2ZSBwcm9taXNlIHdpdGggZmFsc2UgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgLy8gOC44LjIuIElmIHRoZSBzdG9yZWQg
c2Vzc2lvbidzIHNlc3Npb24gdHlwZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgTWVk
aWFLZXlTZXNzaW9uIHNlc3Npb24gdHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNy
ZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAgICAgLy8gOC44LjMuIExldCBzZXNzaW9uIGRhdGEg
YmUgdGhlIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24gSUQgaW4gdGhlIG9y
aWdpbi4gVGhpcyBtdXN0IG5vdCBpbmNsdWRlIGRhdGEgZnJvbSBvdGhlciBvcmlnaW4ocykgb3Ig
dGhhdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdpbi4KQEAgLTQzNSw3ICs0MzUsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9u
c2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNs
b3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFu
Y2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAg
ICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgot
ICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9z
ZXNzaW9uVHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFu
Z2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNl
c3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNhbml0aXpl
ZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp3ZWFrVGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpv
cHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
ICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQu
IFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9p
bnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25U
eXBlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqd2Vha1RoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNz
aW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2Us
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAppbmRleCBkOTM3ZmM5M2FhZGM3OGY0MDBkZTJkOTNkMTlmNjE4YjNi
NmEyMTJlLi40ZmY5MjNmNTJlMmVlOWZhOWM5YmE5MzkzNjhhYjkwNmJhNjRmMGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcApAQCAtOTQsNyArOTQsNyBAQCBNZWRpYUtleVN0YXR1c01hcDo6SXRl
cmF0b3I6Okl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJiBtYXApCiB7CiB9CiAKLU9wdGlvbmFs
PFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8
V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0
dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQoKQogewogICAgIGlmICghbV9t
YXAtPm1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaAppbmRleCBhMWQ5YTVkYmIxNTBkZTc5NGRmN2RiNDhmMTdkNzQyZTEyMTkwYmMwLi44ZmZk
NGNmN2Q5ZmJhOWVhNGNjNTRmZWM2ODEyNzY3MjM2MWVhZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5o
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVi
bGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYpOwotICAg
ICAgICBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6Oktl
eVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5l
eHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxNZWRpYUtleVN0YXR1c01hcD4gbV9t
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05h
dmlnYXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05h
dmlnYXRvckVNRS5jcHAKaW5kZXggZmM2MTM3NGUyMTY0MWMxNjc0MWQ3ZTUxZGQwZTNlN2EyZDUy
YjY2Mi4uNjM3ZDQzNTIwNTU4NjcwY2Y1NDg0NTAxZjY0Y2M1MjViNzljMWNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1F
LmNwcApAQCAtNTksOCArNTksOCBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VmVjdG9yPFQ+PiB7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IExvZ0FyZ3VtZW50PE9wdGlvbmFsPFQ+
PiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBPcHRpb25hbDxUPiYgdmFsdWUp
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8c3RkOjpvcHRpb25hbDxUPj4geworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gdmFsdWUgPyAibnVsbG9wdCJfcyA6IExvZ0FyZ3VtZW50PFQ+Ojp0b1N0cmluZyh2
YWx1ZS52YWx1ZSgpKTsKICAgICB9CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgdHJ5
TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwg
VmVjdG9yPE0KICAgICAgICAgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNv
bmZpZ3VyYXRpb24gPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmZpcnN0KCkpOwog
ICAgICAgICBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5yZW1vdmUoMCk7CiAKLSAgICAgICAgQ0RN
OjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbaW1wbGVtZW50YXRp
b24gPSBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSBXVEZNb3ZlKHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIp
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKE9wdGlvbmFsPE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7CisgICAg
ICAgIENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW2ltcGxl
bWVudGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zID0gV1RG
TW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2UsIGxvZ2dlciA9IFdURk1vdmUo
bG9nZ2VyKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChzdGQ6Om9wdGlvbmFs
PE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgICAgICAvLyA2LjMuMy4gSWYgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24g
aXMgbm90IE5vdFN1cHBvcnRlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAg
ICBpZiAoc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgewogICAgICAgICAgICAgICAgIC8vIDYuMy4z
LjEuIExldCBhY2Nlc3MgYmUgYSBuZXcgTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mgb2JqZWN0LCBhbmQg
aW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGIwMGE0OGRhNDNjOThkMzA0ODU4
YWNlYTYxNjViMjY1ODRkNDQxNmQuLjY2ZWNhMWJkN2Q2YmQ0Y2JjNjE1NTAxMjFhYWIzOTlkYzU1
MmI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9N
RmlsZVN5c3RlbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IExpc3RlZENoaWxkIHsKICAg
ICBMaXN0ZWRDaGlsZCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlz
b2xhdGVkQ29weSgpLCB0eXBlIH07IH0KIH07CiAKLXN0YXRpYyBPcHRpb25hbDxGaWxlU3lzdGVt
OjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5
cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiAgICAgaWYg
KEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShmdWxsUGF0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaAppbmRleCAxYTA5OThhY2FlZWFhMjYw
ZWE4MzE0ZjZhMDNmMzZiNjhhOTg0YzViLi40ZmU5MjM1Y2Y2NmU3MzIyNGQ0ZDljZjUyZTZkMmU2
ZDBmZmY4MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFJlZjxGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnk+IG1fZGlyZWN0b3J5OwotICAgIE9wdGlvbmFsPEV4Y2VwdGlv
bj4gbV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9lcnJvcjsKICAgICBi
b29sIG1faXNSZWFkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNEb25lIHsgZmFsc2UgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNDIy
ZTA2M2YxYTVlN2ZlYTFlNmM2NDc4ODliMDlhMTc0MDIzNTJiMy4uZWRhNTFkMGZlNWRkNTU0Y2E4
NDljZDY3ZDdhMDI4ZmQxMDMxMmZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtNzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZl
dGNoQm9keTo6ZXh0cmFjdChJbml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAg
fSk7CiB9CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRm9ybURhdGEmIGZvcm1EYXRhKQorc3RkOjpv
cHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIWZv
cm1EYXRhLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCmluZGV4IDMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUuLjE4ZjI3
ZDVlZTYyNjkwOTJkNTEwMTgxNWEwMzA0NjVmYjBmYzRhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0JiYsIFN0cmluZyYpOwogICAg
IEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRp
b25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9y
bURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGZXRjaEJv
ZHk+IGZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAog
ICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRp
bmdTdWNjZWVkZWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjNmE2YTFi
MDk0OTdkMWU1MzdlOWM4M2Y3Y2ZmZjlkZTc0ZTM3NTMuLjU1Zjc5YjcwN2NmMTY5Yzc4NjMwOWEz
NTRiZTFjNTdjYzczZDAyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHBhcnNlUGFyYW1ldGVycyhTdHJpbmdWaWV3IGlucHV0LCBzaXpl
X3QgcG9zaXRpb24KIH0KIAogLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNw
YXJzaW5nLWEtbWltZS10eXBlCi1zdGF0aWMgT3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVU
eXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgU3Ry
aW5nIGlucHV0ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBl
KTsKICAgICBzaXplX3Qgc2xhc2hJbmRleCA9IGlucHV0LmZpbmQoJy8nKTsKQEAgLTE3Myw3ICsx
NzMsNyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9OwogICAgIAotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRCb3VuZGFyeSA9IFtdIChjb25zdCBP
cHRpb25hbDxNaW1lVHlwZT4mIG1pbWVUeXBlKSAtPiBPcHRpb25hbDxTdHJpbmc+IHsKKyAgICBh
dXRvIHBhcnNlTXVsdGlwYXJ0Qm91bmRhcnkgPSBbXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxNaW1l
VHlwZT4mIG1pbWVUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gewogICAgICAgICBpZiAo
IW1pbWVUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJtdWx0aXBhcnQiKSAmJiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT5zdWJ0eXBlLCAiZm9ybS1kYXRhIikpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5k
ZXggMzFjY2E5MmM3MzZmZGJiNWE3MDQ4N2NjZDJiOTk1ZTJjMTFmNDk4Yi4uYmRmZTQxN2I4MjU3
YjBmOWExYWQ3NjIyOTM3ZTg4ODRkNDc0YWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxG
ZXRjaEhlYWRlcnM+JiYgaGVhZGVycykKK0ZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4m
JiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVy
cyhXVEZNb3ZlKGhlYWRlcnMpKQpAQCAtMzc1LDEzICszNzUsMTMgQEAgUmVzb3VyY2VFcnJvciBG
ZXRjaEJvZHlPd25lcjo6bG9hZGluZ0Vycm9yKCkgY29uc3QKICAgICB9KTsKIH0KIAotT3B0aW9u
YWw8RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNlcHRpb24o
KSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbG9hZGluZ0Vycm9yLCBbXShj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgewogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSA/ICJMb2Fk
aW5nIGZhaWxlZCJfcyA6IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgfTsKICAgICB9LCBb
XShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikgewogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgZXhjZXB0aW9uIH07Ci0gICAgfSwgW10oYXV0byYmKSAtPiBPcHRpb25hbDxFeGNlcHRpb24+
IHsKKyAgICB9LCBbXShhdXRvJiYpIC0+IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiB7CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggMjQ1OGVkMzZjZmEyY2IyYTU0ZWQ2
OGE0NjBmZjU0NjMzZmQ2NzlkMi4uMWM5ZWVjMzVkZDI5ZmY1MzIxMzhhNmIzM2ZhODhlNmY3NTRj
YWFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZldGNoQm9k
eU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmKTsKKyAg
ICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxG
ZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYpOwogICAgIH5GZXRjaEJvZHlPd25lcigp
OwogCiAgICAgYm9vbCBib2R5VXNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzdHVyYmVkKCk7IH0K
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNMb2FkaW5nRXJyb3IoKSBj
b25zdDsKICAgICBSZXNvdXJjZUVycm9yIGxvYWRpbmdFcnJvcigpIGNvbnN0OwotICAgIE9wdGlv
bmFsPEV4Y2VwdGlvbj4gbG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiBsb2FkaW5nRXhjZXB0aW9uKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQogCkBAIC0x
MjEsMTQgKzEyMSwxNCBAQCBwcml2YXRlOgogICAgIH07CiAKIHByb3RlY3RlZDoKLSAgICBPcHRp
b25hbDxGZXRjaEJvZHk+IG1fYm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gbV9i
b2R5OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIGJvb2wgbV9pc0Rpc3R1cmJlZCB7
IGZhbHNlIH07CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9yZWFkYWJsZVN0cmVhbVNv
dXJjZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CiAKIHByaXZhdGU6Ci0gICAg
T3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qmxv
YkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9pc0JvZHlPcGFxdWUgeyBmYWxzZSB9
OwogCiAgICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uLCBSZXNvdXJjZUVycm9y
PiBtX2xvYWRpbmdFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hI
ZWFkZXJzLmNwcAppbmRleCA4NjM3NTk5NjJjODkzOWY2ZTZmOWE4MWZjYTE1NmYxMmQ5YjE1ZDBh
Li5jM2RhY2M3YjkwMDJjODlkYzIzNTIyYTVhOGVlMWUzMGFjZTMzYTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0xMTksNyArMTE5LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxIZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYg
aGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRp
b25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gRmV0Y2hIZWFkZXJzOjpjcmVhdGUoT3B0aW9uYWw8SW5p
dD4mJiBoZWFkZXJzSW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBGZXRjaEhl
YWRlcnM6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPEluaXQ+JiYgaGVhZGVyc0luaXQpCiB7CiAgICAg
SFRUUEhlYWRlck1hcCBoZWFkZXJzOwogCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBGZXRjaEhl
YWRlcnM6OmZpbHRlckFuZEZpbGwoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQg
Z3VhcmQpCiAgICAgfQogfQogCi1PcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0
cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5l
eHQoKQogewogICAgIHdoaWxlIChtX2N1cnJlbnRJbmRleCA8IG1fa2V5cy5zaXplKCkpIHsKICAg
ICAgICAgYXV0byBrZXkgPSBtX2tleXNbbV9jdXJyZW50SW5kZXgrK107CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAppbmRleCA2NmQyZTg1NDU4YmNkNjM4Nzg2
YmViMDU5OTJkYmZiNTg3OTBkOGRmLi5jNjdlMTE1YzgyODI0ZTdiMmZhYjE1OTAyZTU2N2JkMGRk
M2E4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVh
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB1c2luZyBJbml0ID0gVmFy
aWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+Pj47Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+
PiBjcmVhdGUoT3B0aW9uYWw8SW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxG
ZXRjaEhlYWRlcnM+PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxJbml0PiYmKTsKIAogICAgIHN0YXRp
YyBSZWY8RmV0Y2hIZWFkZXJzPiBjcmVhdGUoR3VhcmQgZ3VhcmQgPSBHdWFyZDo6Tm9uZSwgSFRU
UEhlYWRlck1hcCYmIGhlYWRlcnMgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hI
ZWFkZXJzIHsgZ3VhcmQsIFdURk1vdmUoaGVhZGVycykgfSk7IH0KICAgICBzdGF0aWMgUmVmPEZl
dGNoSGVhZGVycz4gY3JlYXRlKGNvbnN0IEZldGNoSGVhZGVycyYgaGVhZGVycykgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGZXRjaEhlYWRlcnMgeyBoZWFkZXJzIH0pOyB9CkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBl
eHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLSAgICAgICAgT3B0aW9uYWw8V1RGOjpL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggMzQ4YWI0NDI0OWNkOTJh
ZGIyZTQ3ZTM3YzA0Mjc2ZTIwOThhNDk5ZS4uZmQ1OTEzODFkMzJlZWNiZGVkYjZiNDAxYWYzNzg5
NTFiNDI5MjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgaW5pdE1ldGhvZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4gc2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbml0
TWV0aG9kKQogewogICAgIGlmICghaXNWYWxpZEhUVFBUb2tlbihpbml0TWV0aG9kKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk1ldGhvZCBpcyBub3QgYSB2YWxpZCBI
VFRQIHRva2VuLiJfcyB9OwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8U3Ry
aW5nPiBjb21wdXRlUmVmZXJyZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
cwogICAgIHJldHVybiBTdHJpbmcgeyByZWZlcnJlclVSTC5zdHJpbmcoKSB9OwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0cmluZyYgcmVmZXJyZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdDo6SW5pdCYgaW5pdCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gYnVpbGRPcHRpb25zKEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdHJpbmcmIHJlZmVycmVyLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3Q6OkluaXQmIGlu
aXQpCiB7CiAgICAgaWYgKCFpbml0LndpbmRvdy5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFpbml0
LndpbmRvdy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJXaW5kb3cgY2FuIG9ubHkgYmUgbnVsbC4iX3MgfTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25zKGNvbnN0IEluaXQm
IGluaXQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNl
cHRpb24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxp
ZFNpZ25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIEFTQ0lJTGl0
ZXJhbCBtZXNzYWdlIHsgIkZldGNoUmVxdWVzdEluaXQuc2lnbmFsIHNob3VsZCBiZSB1bmRlZmlu
ZWQsIG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBm
dXR1cmUgcmVsZWFzZS4iX3MgfTsKICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggMDc5MGRjYjE0ZjNmM2Fj
ZTdkNTFjMTZlMjI2NTY0NmM2ZjlmZWFjZS4uMzNiYThjNmJkMjMyYTVjNzg1NjQzNDgzNWQ0ZTM0
M2NkOGFhNWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWRpcmVjdCA9IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q7CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVx
dWVzdD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSW5mbyYmLCBJbml0JiYpOwot
ICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+
JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1
ZXN0KGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycyksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVmZXJyZXIpKSk7IH0KKyAgICBzdGF0
aWMgUmVmPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYg
aGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9u
cywgU3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0
KGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycyksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVmZXJyZXIpKSk7IH0KIAogICAgIGNvbnN0
IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKTsg
fQogICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKCkgY29uc3Q7CkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRp
b25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYm
LCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIEZldGNoUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxG
ZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5n
JiYgcmVmZXJyZXIpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW5pdGlhbGl6ZU9wdGlvbnMo
Y29uc3QgSW5pdCYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGluaXRpYWxpemVXaXRoKEZldGNo
UmVxdWVzdCYsIEluaXQmJik7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
QWJvcnRTaWduYWw+IG1fc2lnbmFsOwogfTsKIAotaW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9k
eT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQoraW5s
aW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+
JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiAgICAgOiBGZXRjaEJvZHlPd25lcihjb250ZXh0LCBX
VEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUo
cmVxdWVzdCkpCiAgICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0SW5pdC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3RJbml0LmgKaW5kZXggYzA2NWUxNThh
NzBlOGQwNTFhNjEyZTBhOTQ2YzcyZDAwNjJkMjEyNy4uZGQyMzg3NDQ3OGEzOTIxMzQ0OWYzMjNk
NjhmZjA4Mjg3ZWJhODZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3RJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3RJbml0LmgKQEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBGZXRjaFJlcXVlc3RJbml0IHsKICAgICBTdHJpbmcgbWV0aG9kOwotICAgIE9w
dGlvbmFsPEZldGNoSGVhZGVyczo6SW5pdD4gaGVhZGVyczsKLSAgICBPcHRpb25hbDxGZXRjaEJv
ZHk6OkluaXQ+IGJvZHk7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhl
YWRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+IGJvZHk7CiAgICAgU3Ry
aW5nIHJlZmVycmVyOwotICAgIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGlj
eTsKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6Ok1vZGU+IG1vZGU7Ci0gICAgT3B0aW9uYWw8
RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscz4gY3JlZGVudGlhbHM7Ci0gICAgT3B0aW9uYWw8RmV0
Y2hPcHRpb25zOjpDYWNoZT4gY2FjaGU7Ci0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRp
cmVjdD4gcmVkaXJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcmVmZXJy
ZXJQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6Ok1vZGU+IG1vZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q2FjaGU+IGNhY2hlOworICAgIHN0ZDo6
b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4gcmVkaXJlY3Q7CiAgICAgU3RyaW5nIGlu
dGVncml0eTsKLSAgICBPcHRpb25hbDxib29sPiBrZWVwYWxpdmU7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBrZWVwYWxpdmU7CiAgICAgSlNDOjpKU1ZhbHVlIHNpZ25hbDsKICAgICBKU0M6OkpT
VmFsdWUgd2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAppbmRleCBjZWZlZmM3M2ZjMjU2ZjdhMDE1MDZiNzQ1ZTMxNzliYTg3YTFkNzk5
Li41OTBhYmZjODM3ODZiZTIzNjhmNTc3YmQ0YTUwZjVhZDQ4NjQxNDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykKICAgICBy
ZXR1cm4gc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwg
c3RhdHVzID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+
JiYgYm9keSwgRmV0Y2hIZWFkZXJzOjpHdWFyZCBndWFyZCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlKQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5
LCBGZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
CiB7CiAgICAgYm9vbCBpc1N5bnRoZXRpYyA9IHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJl
c3BvbnNlOjpUeXBlOjpEZWZhdWx0IHx8IHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3Bv
bnNlOjpUeXBlOjpFcnJvcjsKICAgICBib29sIGlzT3BhcXVlID0gcmVzcG9uc2UudGFpbnRpbmco
KSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwpAQCAtNjMsNyArNjMsNyBA
QCBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbgogICAgIHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+
JiYgYm9keSwgSW5pdCYmIGluaXQpCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZl
dGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6
Om9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5LCBJbml0JiYgaW5pdCkKIHsKICAgICAv
LyAxLiBJZiBpbml04oCZcyBzdGF0dXMgbWVtYmVyIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMjAwIHRv
IDU5OSwgaW5jbHVzaXZlLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvci4KICAgICBpZiAoaW5pdC5z
dGF0dXMgPCAyMDAgIHx8IGluaXQuc3RhdHVzID4gNTk5KQpAQCAtOTIsNyArOTIsNyBAQCBFeGNl
cHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjbwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBleHRyYWN0ZWRCb2R5
OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiBleHRyYWN0ZWRCb2R5OwogCiAgICAgLy8g
OC4gSWYgYm9keSBpcyBub24tbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOgogICAgIGlmIChib2R5
KSB7CkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBG
ZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIHJldHVy
biByZWRpcmVjdFJlc3BvbnNlOwogfQogCi1GZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5
LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSkKK0ZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVy
cz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJv
ZHlPd25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwg
bV9pbnRlcm5hbFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiZGU5ODU0YjI2MWQzZDk1NTkz
MDc0MzkzY2MxYTU4OWYyOTllZTM5Li44MzZmNGUxNjM2YjRmNTg3MjNkNGYxY2E4OTY3N2VmZGZj
ZjI3NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aApAQCAtNTQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHN0YXR1cyB7IDIwMCB9OwogICAgICAgICBTdHJpbmcgc3RhdHVzVGV4
dDsKLSAgICAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpJbml0PiBoZWFkZXJzOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEZldGNoSGVhZGVyczo6SW5pdD4gaGVhZGVyczsKICAgICB9OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4mJiwgRmV0Y2hIZWFkZXJzOjpH
dWFyZCwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+JiYsIEZldGNoSGVhZGVyczo6R3VhcmQsIFJlc291cmNlUmVzcG9uc2Um
Jik7CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiwgSW5p
dCYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYm
LCBJbml0JiYpOwogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25z
ZT4+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwg
aW50IHN0YXR1cyk7CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNX
YXNtTUlNRVR5cGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRl
cnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisgICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRl
cnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC0xNTMs
NyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscyBt
X2NyZWRlbnRpYWxzOwogICAgIH07CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFJlc291cmNlUmVz
cG9uc2U+IG1fZmlsdGVyZWRSZXNwb25zZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VSZXNwb25zZT4gbV9maWx0ZXJlZFJlc3BvbnNlOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9pbnRlcm5hbFJlc3BvbnNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb2R5TG9hZGVyPiBtX2Jv
ZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNjhi
ZGM0NThkZWYzZjI2ZTE2MWE4ZTM5OTQ3M2FhMjk3ODczY2VlZS4uNzk5NWQ0ZGQ0NjFkZTAzNmNk
ODY5MWIzZmYxODFhZWFlZmIxMmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGNv
bnN0IEFTQ0lJTGl0ZXJhbCBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9jYXRpb25FcnJvck1lc3Nh
Z2UgeyAiT3JpZ2luIGQKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdlb2xvY2F0aW9u
KTsKIAotc3RhdGljIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVhdGVHZW9sb2NhdGlv
blBvc2l0aW9uKE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYmIHBvc2l0aW9uKQor
c3RhdGljIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVhdGVHZW9sb2NhdGlvblBvc2l0
aW9uKHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiYgcG9zaXRpb24pCiB7
CiAgICAgaWYgKCFwb3NpdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgK
aW5kZXggYTFlNzM5YmZhZDhmZGQyNzg4ZjY3MDMxMTA3OWEyM2Q0MTExNjg3YS4uNTgxYTI5MjVi
NDA0MmU0MGNlMjEyNWVjNDY2NmU3ZWFhZmEzYmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2Ugc2hvdWxkIHVwZGF0ZSBXZWJLaXQgdG8gcmVmbGVj
dCB0aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBzcGVjaWZpY2F0aW9uCiAgICAgLy8gaXMgcHVibGlz
aGVkLgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgPSAwOwot
ICAgIHZpcnR1YWwgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlv
bigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
NjEzYjU1ZDc5MjE4MjViYWU3MjhjMWY1ZGI2MTBhYjZmZjI3YTg5My4uMDYxNjI5MTYwZDliY2M3
ZDVkYWY3NGNmYzRmODE1NTBiYTQ4ZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdChHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiAgICAgbV9jbGllbnQuY2FuY2Vs
UGVybWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiYgcG9zaXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25D
aGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBwb3Np
dGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZlY3RvcjxSZWY8
R2VvbG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJy
b3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7CiB9CiAKLU9wdGlvbmFsPEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxhc3RQb3NpdGlv
bigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgaWYgKG1fbGFzdFBvc2l0aW9uKQogICAg
ICAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24udmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmlu
ZGV4IDk3ODRlOTFhMzRlYmE2OTUwYmFkN2YyMDU3MmVlYWUzY2IzMDBjMGUuLjQyZjVkMDYyZGI2
ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAt
NTMsMTAgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xv
Y2F0aW9uJik7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgT3B0aW9u
YWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
b3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25F
cnJvciYpOwogCi0gICAgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3Np
dGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQ
b3NpdGlvbigpOwogCiAgICAgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1f
Y2xpZW50OyB9CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWN0aXZp
dHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZp
dHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUp
IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1f
bGFzdFBvc2l0aW9uOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9i
c2VydmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3Rpbmcg
aGlnaCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvb3JkaW5hdGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaAppbmRleCA4
NzUxY2FjNDc0MjE3YTE1NzVhNjdhYWNkOWU5NDQ1NDc0NzRkZDc5Li41N2JkZmQxYTg2YWEwZGNh
MmFkM2JhODkyMThhNzc1NWQ0MzY4MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaApAQCAtNDYs
MTIgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24ubGF0aXR1ZGU7IH0KICAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi5sb25naXR1ZGU7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0
aXR1ZGU7IH0KICAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9u
LmFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8
ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFkaW5nOyB9Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uc3Bl
ZWQ7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwoKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uLmZsb29yTGV2ZWw7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBmbG9vckxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5mbG9vckxldmVsOyB9CiAg
ICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uQ29vcmRpbmF0ZXMoR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKaW5kZXggNmFiYzIx
MzUwYjg1NjVmZjRlNzZiZDAzODJhZDY1Mjc3MjAzYWIwYi4uOThkMzgyY2I5ZTBkODJiNmVmNGMx
ZjJmNTE3YWQxOWJmN2Q5OWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaApAQCAtNTgsMTEg
KzU4LDExIEBAIHB1YmxpYzoKICAgICBkb3VibGUgbG9uZ2l0dWRlIHsgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogICAgIGRvdWJsZSBhY2N1cmFjeSB7IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKIAotICAgIE9wdGlvbmFsPGRv
dWJsZT4gYWx0aXR1ZGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5Owot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZzsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVk
OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gYWx0aXR1ZGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJh
Y3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHNwZWVkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmbG9vckxldmVsOwog
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggMGVkNDI3Yjc0MDA5ZjFkOTUzNjVkY2Ux
MzY4ZjY3ODFkODE2ZTZhNC4uOWU2ZGJiOGFmYWM3NDJmNGMyNDhhZjU5NTlhYjE4Nzc3ODVmM2Mw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
LmgKQEAgLTM5LDEyICszOSwxMiBAQCBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5h
dGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKICAg
ICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHQ+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogCkBAIC02MiwxMCArNjIsMTAgQEAgdm9p
ZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFw
cEhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAKLSAgICBPcHRpb25hbDxz
aXplX3Q+IGxlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOwogICAgIGRl
Y29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hs
aWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQuZGF0YSgpLCBoaWdobGlnaHQuc2l6ZSgpLCAxKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFN0cmlu
Zz4+IHRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IHRleHQ7
CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDI5NWM1OGZhNmVlYTA5ZTViNzQ2
ZDYyZWMzYTFjNTE2NTU5YWZlMTAuLjRmNGM4NmE1NzFlNjE5YmJmODU4MDg5NTNiNWViYzViOWY5
MTQ1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBk
ZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC02NCwyNCArNjQsMjQgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQ
YXRoQ29tcG9uZW50OjplbmNvZGUoRW4KICAgICBlbmNvZGVyIDw8IHBhdGhJbmRleDsKIH0KIAot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpO
b2RlUGF0aENvbXBvbmVudD4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVu
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
aWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm9kZU5h
bWU7CiAgICAgZGVjb2RlciA+PiBub2RlTmFtZTsKICAgICBpZiAoIW5vZGVOYW1lKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dERhdGE7CiAgICAgZGVjb2RlciA+PiB0ZXh0
RGF0YTsKICAgICBpZiAoIXRleHREYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBwYXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFw
YXRoSW5kZXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05OCwyOSArOTgsMjkg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IG1fZW5kT2Zmc2V0Owog
fQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAg
ICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKICAgICBkZWNvZGVyID4+IHN0
YXJ0Q29udGFpbmVyOwogICAgIGlmICghc3RhcnRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBzdGFy
dE9mZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CiAgICAgZGVjb2RlciA+PiBlbmRDb250YWlu
ZXI7CiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAo
IWVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgK
aW5kZXggODlmOGNmNzQ1NzY2MjZmYmY4NjUwMWI5MWE1ZmQ4MmEwY2FkYmU1MS4uMWRhOTRlNjU4
ZDNiM2RkZGQwZjI0MzVkMjc1MWQzNTQwYjA4NzllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBz
dHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAg
ICAgICAgU3RyaW5nIG5vZGVOYW1lOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxOb2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRl
Y29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5v
ZGVQYXRoQ29tcG9uZW50PjsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAog
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKaW5kZXggYWIzN2RkMjI4NTY5MjVmOWRkMTQ5M2EwYTc3ODAzOThjMDAxNDAyNy4uNmZi
ZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0M2VkMDM1NzJhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAK
QEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgUmVmUHRyPE5vZGU+IGZpbmROb2RlKGNvbnN0IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGgmIHBhdGgsIERvY3VtZQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5SWRl
bnRpZnlpbmdTdGFydEFuZEVuZFBvc2l0aW9ucyhjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEm
IHJhbmdlLCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gZmluZFJhbmdlQnlJZGVudGlmeWluZ1N0YXJ0QW5kRW5kUG9zaXRpb25zKGNvbnN0IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBh
dXRvIHN0YXJ0Q29udGFpbmVyID0gZmluZE5vZGUocmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgZG9j
dW1lbnQpOwogICAgIGlmICghc3RhcnRDb250YWluZXIpCkBAIC0xMzAsNyArMTMwLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFuZ2VCeUlkZW50aWZ5aW5nU3RhcnRBbmRF
bmRQb3NpdGlvbnMoY29uc3QgQXAKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBl
bmQpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5U2VhcmNo
aW5nVGV4dChjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmIHJhbmdlLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlQnlTZWFy
Y2hpbmdUZXh0KGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaWRlbnRpZmllcnNJblN0YXJ0UGF0aDsK
ICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpIHsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5
U2VhcmNoaW5nVGV4dChjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdAogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlKGNv
bnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFuZ2UoY29uc3QgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhJiByYW5nZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGlmIChhdXRv
IGZvdW5kUmFuZ2UgPSBmaW5kUmFuZ2VCeUlkZW50aWZ5aW5nU3RhcnRBbmRFbmRQb3NpdGlvbnMo
cmFuZ2UsIGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIGZvdW5kUmFuZ2U7CkBAIC0yMjIsNyAr
MjIyLDcgQEAgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKSA9IGRl
ZmF1bHQ7CiB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxT
dGF0aWNSYW5nZT4mJiByYW5nZSkKIHsKICAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdobGln
aHRSYW5nZURhdGEocmFuZ2UpOwotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAogICAgIGlmICghZGF0YS50ZXh0KCkuaXNFbXB0eSgp
KQogICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggN2ZiZmNhOTkx
MGVkZDdhYjgzM2Q1N2RkODRjMGQyZjk0ZDhjNGM3Ni4uYmNjZjg3ZjhhNGFlOGZmZjRhYzFjZjQ0
NDJhMzI5Mjg1MWVlOGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTW9ub3RvbmljVGltZSBt
X3RpbWVBdExhc3RSYW5nZVNlYXJjaDsKICAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBtX3VucmVzdG9yZWRIaWdobGlnaHRzOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gbV91bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQ7CiB9OwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKaW5k
ZXggMzQ0NjZhM2MwNDQwMmM4MTdkM2M3ZDkzOWJjODlkOTI3MjNkOGVkMC4uMDA1MmMzZmJiNTEz
YTJkMzgzODUwMjg5ZjYyZGRlMzE0MGVjM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKQEAgLTQ4LDggKzQ4LDggQEAgc3RydWN0IEhpZ2hsaWdo
dFJhbmdlRGF0YSA6IFJlZkNvdW50ZWQ8SGlnaGxpZ2h0UmFuZ2VEYXRhPiwgcHVibGljIENhbk1h
a2VXZWFrUHQKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlnaGxpZ2h0UmFuZ2VEYXRh
KFdURk1vdmUocmFuZ2UpKSk7CiAgICAgfQogICAgIFJlZjxTdGF0aWNSYW5nZT4gcmFuZ2U7Ci0g
ICAgT3B0aW9uYWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRpb247Ci0gICAgT3B0aW9uYWw8UG9zaXRp
b24+IGVuZFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbj4gZW5kUG9zaXRpb247CiB9OwogCiBjbGFz
cyBIaWdobGlnaHQgOiBwdWJsaWMgUmVmQ291bnRlZDxIaWdobGlnaHQ+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGUwNjVhNDg0ODNl
ZjhhZjUwOTMwMWYxMmIxNGQ5OThlYmZlMjEwMGYuLjU4ZDBjZGY2ODdjYzIzMjEyYTFjODllNTg4
Yzk0MjBiYjM1YTdlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjbGVhcldy
YXBwZXJzKCkKICAgICBtX3ZhbHVlV3JhcHBlci5jbGVhcigpOwogfQogCi1PcHRpb25hbDxJREJH
ZXRSZXN1bHQ+IElEQkN1cnNvcjo6aXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25l
ZCBjb3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpCitzdGQ6Om9wdGlvbmFsPElE
QkdldFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2ln
bmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCkKIHsKICAgICB1bnNpZ25l
ZCBzdGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOwogICAgIGlmIChzdGVwID4gbV9wcmVmZXRj
aGVkUmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9w
ZXJhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aAppbmRleCBjZjllZTE3MzY5MmRlYjM0MDE1YjZkMjAxYWU4OTEwNjY5MWUwZjIzLi40ZjZkM2Ux
ZjMzNDEwNzkyMWRiNTU0MjBlZGU3ZmUyYTdlMDBhYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgSURCS2V5KiBrZXkoKSB7IHJldHVybiBtX2tleS5nZXQoKTsgfTsKICAgICBJREJLZXkqIHBy
aW1hcnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXkuZ2V0KCk7IH07CiAgICAgSURCVmFsdWUg
dmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9OwotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBh
dGg+JiBwcmltYXJ5S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfTsKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBwcmltYXJ5S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5
UGF0aDsgfTsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBrZXlXcmFwcGVyKCkgeyByZXR1
cm4gbV9rZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgcHJpbWFyeUtl
eVdyYXBwZXIoKSB7IHJldHVybiBtX3ByaW1hcnlLZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCYgdmFsdWVXcmFwcGVyKCkgeyByZXR1cm4gbV92YWx1ZVdyYXBwZXI7IH0K
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29y
V2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIE9wdGlvbmFsPElEQkdl
dFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3VudCwgdWlu
dDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAgIHN0ZDo6b3B0aW9uYWw8SURCR2V0UmVz
dWx0PiBpdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRf
dCBsYXN0V3JpdGVPcGVyYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhclByZWZldGNoZWRSZWNvcmRz
KCk7CiAKIHByb3RlY3RlZDoKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIElEQktl
eURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKICAgICBJ
REJWYWx1ZSBtX3ZhbHVlOwotICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5UGF0aDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5UGF0aDsKIAogICAgIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9w
cmltYXJ5S2V5V3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCmluZGV4IGE0OWRhNzdjMzgxNmQ4MmRmYjY2Y2IwOGI0MTkwMmM2N2NiMGJm
OTMuLjMzOGYzMGU2N2U0OTk2ZjJjN2RlMTEyZjdkN2FhMTRiM2RjNDYxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewotICAgICAgICBPcHRp
b25hbDxJREJLZXlQYXRoPiBrZXlQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+IGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5oCmluZGV4IGMyZjE3MDc0ZThlYmJlYTY1ODc0NjJlMThkNjBjZjkwNDgwMmVkYzAu
LjYyYTAwOTBkYTA2M2NiNjJhMDNhNTJkNjVhNzMwNTdhZTJiMzcyNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNl
RGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZl
bE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPElEQkRhdGFiYXNlSWRl
bnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVy
Jik7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25z
dDsKQEAgLTExOCwxOSArMTE4LDE5IEBAIHZvaWQgSURCRGF0YWJhc2VJZGVudGlmaWVyOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LU9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlm
aWVyPiBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPFN0cmluZz4gZGF0YWJhc2VOYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBkYXRhYmFzZU5hbWU7CiAgICAgZGVjb2RlciA+PiBkYXRhYmFzZU5hbWU7CiAgICAgaWYg
KCFkYXRhYmFzZU5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdp
bj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2luOwogICAgIGlmICghb3JpZ2luKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2ll
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKICAgICBkZWNvZGVyID4+
IGlzVHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2llbnQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5jcHAKaW5kZXgg
ZDJmMjY4MDg4NjY2OGFiMzIyMzZlY2FjNjViYjRlY2Q1OTNiODU0Mi4uYjE0ZDZjMmU0OGU1YmIz
MGRlOGY3YWE3NzRmMmZmMTVjMDlhN2U0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b25SZXF1ZXN0LmNwcApAQCAtNTAsNyArNTAsNyBAQCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
UmVxdWVzdDo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QoU2NyaXB0RXhlY3V0aQog
ICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b25SZXF1ZXN0Ojpjb21wbGV0ZShPcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4+JiYgZGF0YWJhc2VzKQordm9pZCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVz
dDo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
bj4+JiYgZGF0YWJhc2VzKQogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhy
ZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uUmVxdWVzdC5oCmluZGV4IDlhN2M1NjE5MWY5ZTkwYTM2YWVkZTE1ZTQwYjUwOWRjYWZhMGFi
YTkuLjZkYWRjMzkzNzRmZDUyOTNjYzE0MDA2NjMxODc1M2Y4OWUwOWJmODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBJREJD
b25uZWN0aW9uUHJveHk7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJREJEYXRhYmFzZU5hbWVBbmRW
ZXJzaW9uUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdD4sIHB1YmxpYyBJREJBY3RpdmVET01PYmplY3Qgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVl
c3QpOwogcHVibGljOgotICAgIHVzaW5nIEluZm9DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT47CisgICAgdXNpbmcg
SW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uPj4mJik+OwogCiAgICAgc3RhdGljIFJlZjxJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIEluZm9DYWxsYmFjayYmKTsKIApAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+OjpkZXJlZjsKIAotICAgIHZv
aWQgY29tcGxldGUoT3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYm
KTsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24+PiYmKTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkmLCBJbmZvQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDA1NDRlZjA2NmIzNGE1ZTFlZWRjOTUzODU2
NGJjOGE3NmYyMTM0MTcuLjU2YzE3MjdkZGI4MjEwZDEzNjk3NzViYmMzOTVlZjdmOGZiNjM5OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIElEQkZhY3Rvcnk6OklEQkZhY3RvcnkoSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSkKIAogSURCRmFjdG9yeTo6fklEQkZhY3Rv
cnkoKSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURC
RmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKQorRXhjZXB0aW9uT3I8UmVmPElE
Qk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVy
c2lvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRmFjdG9yeTo6b3BlbiIpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDNm
N2E1MjNjM2NkNzBhNWU3ZTUyYjNjMzYxZDU4NzQxYzM4M2M5ZmYuLjYyZTkxYWM0YTAwNGVlYTg1
ZDU4ZTViYTBkZjY2OTdlODFmMzkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICB1
aW50NjRfdCB2ZXJzaW9uOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgT3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJP
cGVuREJSZXF1ZXN0Pj4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKTsKICAgICBFeGNlcHRpb25P
cjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgRXhjZXB0aW9uT3I8c2hvcnQ+IGNt
cChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGZpcnN0LCBKU0M6OkpTVmFsdWUg
c2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldEFsbFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0
QWxsUmVzdWx0LmgKaW5kZXggZjdlYjdjNjY3MGRiNjcxZDNlZTEwNTY5NDFlOGY5NmUyMjRlZjJi
ZS4uOWEzOWE2NDdlMjVkY2Q1MzFkZjc0ZTEzNjdhZGRhYTEwMTQyNjY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRBbGxSZXN1bHQo
SW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBr
ZXlQYXRoKQorICAgIElEQkdldEFsbFJlc3VsdChJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKICAgICAgICAgOiBtX3R5
cGUodHlwZSkKICAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICB7CkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICBJREJHZXRBbGxSZXN1bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAKICAgICBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIGNvbnN0IFZlY3RvcjxJ
REJLZXlEYXRhPiYga2V5cygpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZh
bHVlcygpIGNvbnN0OwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgSW5kZXhlZERC
OjpHZXRBbGxUeXBlIG1fdHlwZSB7IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cyB9OwogICAg
IFZlY3RvcjxJREJLZXlEYXRhPiBtX2tleXM7CiAgICAgVmVjdG9yPElEQlZhbHVlPiBtX3ZhbHVl
czsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAppbmRl
eCAxZmUyOWZmMTAyYmIwZTg3NWRkNTgyNzNhZmMzMGI0OTRlZjNmNWE0Li44Yjk5YjdmYTE1Mjdh
NmY5NDhiMzllMjg3YjY4MDRjNjI4NWQ4YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAtNTQsMjEgKzU0LDIxIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURh
dGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBidWZmZXIsIGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogICAgICAgICA6IG1fdmFsdWUoYnVmZmVyKQog
ICAgICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQogICAgICAgICAsIG1fa2V5UGF0aChrZXlQYXRo
KQogICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5
RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIElEQlZhbHVl
JiYgdmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiAgICAg
ICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0
YSkKICAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICB7CiAgICAgfQogCi0gICAgSURC
R2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQktleURhdGEmIHBy
aW1hcnlLZXlEYXRhLCBJREJWYWx1ZSYmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKKyAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwg
Y29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiAgICAgICAgIDogbV92YWx1ZShX
VEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKICAgICAgICAgLCBt
X3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwg
Y29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgsIFZlY3RvcjxJREJDdXJzb3JSZWNv
cmQ+JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURCVmFsdWUm
JiB2YWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCwgVmVjdG9y
PElEQkN1cnNvclJlY29yZD4mJiBwcmVmZXRlY2hlZFJlY29yZHMpCiAgICAgICAgIDogbV92YWx1
ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKICAgICAgICAg
LCBtX3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQpAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgSURCVmFsdWUmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQogICAgIGNvbnN0IElEQktleURhdGEmIGtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX2tleURh
dGE7IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWFyeUtleURhdGE7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0K
ICAgICBjb25zdCBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiYgcHJlZmV0Y2hlZFJlY29yZHMoKSBj
b25zdCB7IHJldHVybiBtX3ByZWZldGNoZWRSZWNvcmRzOyB9CiAgICAgYm9vbCBpc0RlZmluZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRGVmaW5lZDsgfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJp
dmF0ZToKICAgICBJREJWYWx1ZSBtX3ZhbHVlOwogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwog
ICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRo
PiBtX2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiAg
ICAgVmVjdG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVkUmVjb3JkczsKICAgICBib29s
IG1faXNEZWZpbmVkIHsgdHJ1ZSB9OwogfTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHZvaWQgSURC
R2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+CiBib29sIElEQkdldFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QkdldFJlc3VsdCYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPElEQktleURhdGE+IGtleURhdGE7
CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBrZXlEYXRhOwogICAgIGRlY29kZXIgPj4g
a2V5RGF0YTsKICAgICBpZiAoIWtleURhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXN1bHQubV9rZXlEYXRhID0gV1RGTW92ZSgqa2V5RGF0YSk7CiAKLSAgICBPcHRpb25hbDxJREJL
ZXlEYXRhPiBwcmltYXJ5S2V5RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+IHBy
aW1hcnlLZXlEYXRhOwogICAgIGRlY29kZXIgPj4gcHJpbWFyeUtleURhdGE7CiAgICAgaWYgKCFw
cmltYXJ5S2V5RGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQyLDEzICsxNDIsMTMg
QEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJHZXRSZXN1
bHQmIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzRGVmaW5lZCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPElEQlZhbHVlPiB2YWx1ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPElEQlZhbHVlPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVl
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQubV92
YWx1ZSA9IFdURk1vdmUoKnZhbHVlKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxJREJDdXJzb3JS
ZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJD
dXJzb3JSZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKICAgICBkZWNvZGVyID4+IHByZWZldGNo
ZWRSZWNvcmRzOwogICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApp
bmRleCBjMTk5OWU1OTA3OTgxMGRkZDdmNDYyMDgxNzg0MzgwM2JmMDA1Y2I3Li45YTBhNWJmOWNk
YTBhZWUxMDg4NWVkMjBlYTg4ZThkODAyYzU5ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwgRXhjZXAKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVxdWVzdEdldEtleShleGVj
U3RhdGUsICp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIE9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5
UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6ZG9HZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJh
bmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Omdl
dEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRh
KG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7
CkBAIC0zNTYsMTQgKzM1NiwxNCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4Ojpkb0dldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpbwogICAgIHJldHVy
biBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3Jkcyhl
eGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6
VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+
JiYgcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3Zl
KHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBl
eGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewog
ICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0
YXRlLCBrZXkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlCiAg
ICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0
QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBm
dW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxs
S2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIp
OwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0z
OTMsMTQgKzM5MywxNCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b0dldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgTwogICAgIHJldHVybiBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3Rh
dGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywg
Y291bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRB
bGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiBy
YW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RG
TW92ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNHbG9iYWxP
YmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkK
K0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNHbG9i
YWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3N0
YXRlPSZleGVjU3RhdGUsIGtleV0oKSB7CiAgICAgICAgIGF1dG8gb25seVJlc3VsdCA9IElEQktl
eVJhbmdlOjpvbmx5KCpzdGF0ZSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oCmluZGV4IGMxZjlhNjA3MzI2YzJiYTEwMGMyOTA1ZjEzZDU5OTEyOWU4
Mjg3MGQuLmViYzZkYTQ1Yjc0NjM3ZWI0MDRjMDU5OGVlOGM4ZDU1NDYwMDY0ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtNjksMTAgKzY5LDEw
IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7
CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQp
OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwot
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQpOwogCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9pbmZvOyB9CiAKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRp
b25PcjxJREJLZXlSYW5nZURhdGE+KTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBX
VEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKICAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbktleUN1cnNvcihKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4g
JiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
R2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4g
JiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuaAppbmRleCAwNDNlYzZiNmE3ZmI3ZjRlNjBkNjQ1Y2Q5ZDVmYzdh
NWMxNDcwM2ZlLi5lODZjNDYwZTRhNzU2MDE2ZTEzNGYyNzg1ZmZjYWYyZTRhMjkzMzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE51bWJlclZhbHVl
KGRvdWJsZSk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PElEQktleURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAg
ICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvZ2dpbmdT
dHJpbmcoKSBjb25zdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIElEQktleURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+IElEQktleURhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGtleURhdGEubV9pc051bGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5oCmluZGV4IGJiMGVhZDUyYzMyMWQ3OTA2MjFiZTIyZTRlN2Q2NjBhN2Zl
NzU4NzYuLmIxYjNkYmJlYjA5ODZiNWY1MGViYmFjN2VmMjExYmEyOWYzNDZiZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgZW51bSBjbGFzcyBJREJLZXlQYXRoUGFyc2VFcnJvciB7CiAKIHZvaWQgSURCUGFyc2VL
ZXlQYXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0aFBhcnNlRXJy
b3ImKTsKIElEQktleVBhdGggaXNvbGF0ZWRDb3B5KGNvbnN0IElEQktleVBhdGgmKTsKLWlubGlu
ZSBPcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENvcHkoY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mIHZhcmlhbnQpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRl
ZENvcHkoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgdmFyaWFudCkKIHsKICAgICBp
ZiAoIXZhcmlhbnQpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCmluZGV4IGYzMDVjMGVmODg2Nzll
ODMyOWY3NTgwZmU3MTk4YmMzMWE0ZTBkYzQuLmNmNjA1MDIxNDQzMTBlNzFiODZjMzRjZWQ2Y2Rh
NjA5MWY3YmIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlRGF0YS5oCkBAIC0xMDUsMTMgKzEwNSwxMyBAQCBib29sIElEQktleVJhbmdl
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2Up
CiAgICAgaWYgKGtleVJhbmdlLmlzTnVsbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBP
cHRpb25hbDxJREJLZXlEYXRhPiB1cHBlcktleTsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQktleURh
dGE+IHVwcGVyS2V5OwogICAgIGRlY29kZXIgPj4gdXBwZXJLZXk7CiAgICAgaWYgKCF1cHBlcktl
eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGtleVJhbmdlLnVwcGVyS2V5ID0gV1RGTW92
ZSgqdXBwZXJLZXkpOwogICAgIAotICAgIE9wdGlvbmFsPElEQktleURhdGE+IGxvd2VyS2V5Owor
ICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gbG93ZXJLZXk7CiAgICAgZGVjb2RlciA+PiBs
b3dlcktleTsKICAgICBpZiAoIWxvd2VyS2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAK
aW5kZXggZTBkZDlhMDhkNWNjYjk1ZWY3ZDM1YmMyZjhjYTI1NGQzYzRiYzBlMC4uOGI2MzczM2E4
N2Q2ZmRkZGFmNTE1ZTg4ZmIzY2ZmYTNhODFhMjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICByZXR1cm4geyB9OwogfQogCi1jb25zdCBPcHRpb25hbDxJREJLZXlQYXRo
PiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAorY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAogewogICAgIEFTU0VS
VChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwpA
QCAtNTk2LDcgKzU5Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmRvQ291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwKICAgICByZXR1cm4gbV90
cmFuc2FjdGlvbi5yZXF1ZXN0Q291bnQoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChKU0ds
b2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24p
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGwiKTsKICAgICBB
U1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTYxNSwxNCArNjE1LDE0IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFs
T2JqZWN0JiBleGVjU3RhdGUsCiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldEFs
bE9iamVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIElu
ZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFs
bChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2Us
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbChl
eGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJl
dHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBk
b0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAg
ICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpA
QCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKCiAgICAgfSk7CiB9CiAK
LUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5
cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdU
Rjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlv
bikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxs
S2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxs
S2V5cyIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRh
KG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtNjUyLDE0ICs2
NTIsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9H
ZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3QKICAgICByZXR1cm4gbV90cmFuc2FjdGlv
bi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJh
bmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoSlNH
bG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBPcHRp
b25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpnZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJ
REJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAg
ICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3Zl
KHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5
cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQpCiB7CiAgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUsIGNv
dW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0
ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggNDU0ODIyYmM1MWYxNDEw
MDc0ZmViNGY5NzJjODc0NWI2OTZjYTg1ZS4uNDM3YjA0NWQ1MGU3MDhiYjMyOTM2MjkzNzU4NGE3
YmI1MmFhNWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0
cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWUoY29uc3Qg
U3RyaW5nJik7Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25z
dDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7
CiAgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsK
QEAgLTkxLDEwICs5MSwxMCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOwogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRB
bGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IHB1dEZvckN1cnNvclVwZGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBS
ZWZQdHI8SURCS2V5Pik7CiAKQEAgLTExOCw4ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFdU
Rjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkb09wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkN1cnNvckRpcmVjdGlv
biwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50
MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlND
OjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0
Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA0ODlk
NzllMWYxZWI0OTNiMDJjNTk1YzQxMzU5OTFjNzYzMTVkNzk4Li4zMWVjNjkyNDlmMmMwNzE4YWRk
ZjZlY2YwZjM4N2FkYTMyOGQ3NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0JiBjdXJzb3JXcmFwcGVyKCkgeyByZXR1cm4gbV9jdXJzb3JXcmFwcGVy
OyB9CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxJREJPYmplY3RTdG9yZT4s
IFJlZlB0cjxJREJJbmRleD4sIFJlZlB0cjxJREJDdXJzb3I+PjsKLSAgICBjb25zdCBPcHRpb25h
bDxTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U291cmNlPiYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7
IH0KIAogICAgIEV4Y2VwdGlvbk9yPERPTUV4Y2VwdGlvbio+IGVycm9yKCkgY29uc3Q7CiAKQEAg
LTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fY3VycmVudFRyYW5zYWN0
aW9uT3BlcmF0aW9uSUQgeyAwIH07CiAKICAgICBSZXN1bHQgbV9yZXN1bHQ7Ci0gICAgT3B0aW9u
YWw8U291cmNlPiBtX3NvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZT4gbV9zb3VyY2U7
CiAKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmPElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2Nvbm5lY3Rpb25Qcm94eTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA5
OThhMWZjOWVhMmNmNTVhNjcwMmQ1MTA4MzNmNDUyODY0MTE2YWJhLi4wMjZjNjFkYzMwZmZkNjBh
YmVkODJkOTRjYmU3MWZiZTA5MTUxM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICBjb21wbGV0ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwg
cmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5k
ZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFs
bE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKQEAgLTkxNSw3
ICs5MTUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxP
YmplY3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9iagogICAgIHJldHVybiByZXF1ZXN0Owog
fQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJl
Y29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRB
bGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYg
c3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVl
c3RHZXRBbGxJbmRleFJlY29yZHMiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA2
NWJjNDUzYmQ4NmFiZTZiMThjZGMwMGIzNGVjNWYxNWQ3MWZiNTgwLi44MDExNDI2ODhmNjE5OTkx
NTVjY2VhYmMzMzVmMjE0NTllYzM5Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6
CiAKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9yQWRkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBJREJPYmplY3RTdG9yZSYsIFJlZlB0cjxJREJLZXk+JiYsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdEdldFJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJl
cXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQk9i
amVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJJbmRleCYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbE9iamVjdFN0b3Jl
UmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3Jk
cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
ICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29yZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBSZWY8
SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IElEQk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCmluZGV4IDJh
NjY0MzJiNWJkOTcxOTJhMWFiNGZmNjA5MGMwYmU5NWQyM2JkNzQuLmY0MDBkODViNzA3ODFmNDMy
ZWM5ZWY0OGJjYzg5OGEwYzcwOGIzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmFsdWUuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JGaWxlUGF0
aHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SURC
VmFsdWU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SURCVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwogcHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJREJWYWx1
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIElEQlZhbHVlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX2RhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCBjZDJlNjBhYmU2OWMzY2Q5MmZh
Nzc1YTNiZjYyODRmODVhNDM4ZDZjLi5hYzA0YTZhZWE2ODlmMmE4NGMwYTVkOGY3NGZmMzNhMDdl
ZjNmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIHVpbnQ2NF90IG9sZFZlcnNpb24g
eyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uOwogICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpObykKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdl
RXZlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB1aW50NjRfdCBvbGRW
ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9vbGRWZXJzaW9uOyB9Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1ZlcnNpb247IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdW
ZXJzaW9uOyB9CiAKIHByaXZhdGU6CiAgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNp
b24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CkBA
IC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZXF1ZXN0SWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBtX29sZFZlcnNpb247Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IG1fbmV3VmVyc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBt
X25ld1ZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IGM1NjQ2MjhkYzE0NjkwZDI2ZTFlMDkzNWJjMmE5NDk3Y2I4YTgy
ZWUuLjQ2ZWRkYTlhOGMxMjAxNjIyMzAyNmY1ZThiMTM5MDU1YTYwOTA0ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcygpCiAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNr
KCk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYpPiYmIGNhbGxiYWNr
KQordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9u
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT4mJiBjYWxsYmFjaykK
IHsKICAgICBDbGllbnRPcmlnaW4gb3JpZ2luIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5k
YXRhKCksIGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH07CiAKQEAgLTUyNCw3ICs1MjQsNyBA
QCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQo
JklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zLCBy
ZXF1ZXN0LT5yZXNvdXJjZUlkZW50aWZpZXIoKSwgb3JpZ2luKTsKIH0KIAotdm9pZCBJREJDb25u
ZWN0aW9uUHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxWZWN0b3I8SURC
RGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYgZGF0YWJhc2VzKQordm9pZCBJREJDb25uZWN0aW9u
UHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPj4mJiBkYXRhYmFzZXMpCiB7CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0PiByZXF1ZXN0OwogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuaAppbmRleCBiYzQzNzNmYzc1OTdlMDMyYWJiNDBiMDI5NDg3ZDY3YzVlOGQ5MDJk
Li5mZGMzYWQzNmY5YjNkZTIyOWM0ZDViOTkyOTU0NjRiZjA3NDc1ZGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Qcm94eS5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCk7
CiAgICAgdm9pZCBkZXJlZigpOwogCi0gICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8VmVj
dG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT4mJik7Ci0gICAgdm9pZCBkaWRHZXRB
bGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwg
T3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKKyAgICB2b2lk
IGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPj4mJik+JiYpOworICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNv
bm5lY3Rpb24oSURCRGF0YWJhc2UmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5l
Y3Rpb24oSURCRGF0YWJhc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5
MjgwN2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRlLi45MjgzMzg4YzRiYjRlY2FlNjEwYzdl
OGU2Yjg5MjVlNDc5YjVlNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51
bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29k
ZXIoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogICAgIHJldHVy
biBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwogfQogCi1ib29sIGRlc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0
aD4mIHJlc3VsdCkKK2Jvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFkYXRhIHx8ICFzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaAppbmRleCBmNWY2NzQ0MmUzNjc4YTIwYWViNThmZWFjOWFjMzlmNzhjNWUxZDc5Li42
NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJL
ZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0
IE9wdGlvbmFsPElEQktleVBhdGg+Jik7Ci1ib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBPcHRpb25hbDxJREJLZXlQYXRo
PiYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+Jik7Citib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+Jik7CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29u
c3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAK
aW5kZXggNWMxNWJmYWIyNzExNTVlYjA0NWQ1YjYwZWM5Yjg2NjJhNmQzMGFlMi4uNDUxM2IwZDM0
MjhkNTkwYTY2NGM1NGE0OTVjNDcyMjk5MGVlMzdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgdWludDY0X3QgTWVtb3J5SW5kZXg6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBpblJhbmdlKQogICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBN
ZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlw
ZSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit2b2lkIE1lbW9yeUluZGV4OjpnZXRB
bGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFs
bFJlc3VsdCYgcmVzdWx0KSBjb25zdAogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRl
eDo6Z2V0QWxsUmVjb3JkcyIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCmluZGV4IGIxNDliNmI5ODIzN2M2MTA2Mzgw
MGI5YzJhOTE4YjExYjM4YmEwYzAuLjMxNWM0ZWZjM2UwZjZmOWY2ZTQ3NDE5NGMxY2E4MThkYTQ0
MDk0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIElEQkdl
dFJlc3VsdCBnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAgICAgdWludDY0X3QgY291bnRGb3JLZXlS
YW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6
OkdldEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQgZ2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKIAogICAg
IElEQkVycm9yIHB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleEtleSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCAwM2MzMTFkZmY3YjJjMjQzNDlkMjdj
YTg2MzQ3ZWM5ZGJmZGU3ZTliLi5jMmU5ZWEyNDYxN2E4OGU5ZjRiOGYwMTBkN2NlMDNlYjAwMWVi
MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5nZShjb25z
dCBJREJLZXlSYW5nZURhdGEmCiAgICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KGtleSk7
CiB9CiAKLXZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhl
ZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAordm9p
ZCBNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6
R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBy
ZXN1bHQgPSB7IHR5cGUsIG1faW5mby5rZXlQYXRoKCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aAppbmRleCA0MzQ5OWQ1YmNiZWM2MjZhZDExYzQ1ODJiNmFiNjY0ZGEyNmRkMDE4Li41Njk3NmRl
ZDEyNzE2YjhiMzczMjA2MGM1YzU5MGFiOTMzYTczNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgSURCR2V0UmVzdWx0IGluZGV4VmFsdWVG
b3JLZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBjb25zdDsKICAgICB1aW50NjRfdCBjb3Vu
dEZvcktleVJhbmdlKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJikgY29uc3Q7CiAKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElE
QkdldEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKIAogICAgIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZUN1cnNvci5oCmluZGV4IDAyODUzNTYzZGUxNjBlNDVlN2RiNDVkYWMxMTE1
MjY4ZjA1ODhlYjMuLmViY2VjODI4MTdhZDFlZTA3ZTM5OTk5ZDNkMjY1OTA1YjA4M2FiYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZUN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAKICAgICBJREJLZXlSYW5nZURhdGEgbV9yZW1haW5pbmdSYW5nZTsKIAotICAgIE9wdGlv
bmFsPElEQktleURhdGFTZXQ6Oml0ZXJhdG9yPiBtX2l0ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9u
YWw8SURCS2V5RGF0YVNldDo6aXRlcmF0b3I+IG1faXRlcmF0b3I7CiAKICAgICBJREJLZXlEYXRh
IG1fY3VycmVudFBvc2l0aW9uS2V5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggODU0N2JhZTdhZjQ1ZmU2M2ZjOTFmYmVkNTAxNjYyNzBmZDk2NjA2ZS4uODgzNGQy
YWFjNmU3NTQzNzAwMTE2ZTZhMjRjODBmMWNlZmM3MWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlh
bAogICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpLCAwLCAwKTsKIH0KIAotT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCkKK3N0
ZDo6b3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1
cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKQEAgLTgyMiw3ICs4MjIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4
dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAgICAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFt
ZSA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKICAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlclZp
ZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDIpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJREJL
ZXlQYXRoPiBvYmplY3RTdG9yZUtleVBhdGg7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aDsKICAgICAgICAgICAgIGlmICghZGVzZXJpYWxp
emVJREJLZXlQYXRoKGtleVBhdGhCdWZmZXJWaWV3LmRhdGEoKSwga2V5UGF0aEJ1ZmZlclZpZXcu
c2l6ZSgpLCBvYmplY3RTdG9yZUtleVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NTgsNyArODU4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdE
YXRhYmFzZUkKICAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmNvbHVt
bkludDY0KDIpOwogICAgICAgICAgICAgYXV0byBrZXlQYXRoQnVmZmVyVmlldyA9IHNxbC0+Y29s
dW1uQmxvYlZpZXcoMyk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IGluZGV4
S2V5UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQ
YXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZl
clZpZXcuZGF0YSgpLCBrZXlQYXRoQnVmZmVyVmlldy5zaXplKCksIGluZGV4S2V5UGF0aCkpIHsK
ICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleHRyYWN0IGtleSBwYXRoIGZy
b20gZGF0YWJhc2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzNyw3
ICs5MzcsNyBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRo
KCkgY29uc3QKICAgICByZXR1cm4gZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShtX2RhdGFi
YXNlRGlyZWN0b3J5KTsKIH0KIAotT3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4g
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCitzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZy
b21GaWxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogewogICAgIFNRTGl0ZURhdGFiYXNl
IGRhdGFiYXNlOwogICAgIGlmICghZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGVmYzhjNTRhMmYyYjM1MjE1OTVmZjc4ZjUw
ODMyMzBhZmE2ZTMxOC4uNGUxYTQ4ZjEwOWE5ODRiMWE2YTNkYmIxYmEzZTM1Y2I3ODJhNDZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YWJhc2VEaXJlY3Rvcnk7IH07CiAgICAgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9y
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
bj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0K
IApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJ
bmRleFJlY29yZHNJbmRleCgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEJsb2JUYWJsZXMoKTsKLSAg
ICBPcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBlbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1Rh
YmxlKCk7CisgICAgc3RkOjpvcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBlbnN1cmVWYWxpZE9i
amVjdFN0b3JlSW5mb1RhYmxlKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5m
bz4gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggNGNlMmJmMjU4YTNlYmU3ZmQ4NDI4YWY0NzdiZTQy
MDk0ODk1NTc2YS4uODkzOGNjZmZkN2Y4MzM5NWM0ZWJkMDc3ZmExZmEwMzk4M2VmNWVkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+
U1FMaXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRo
aXMpOwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0
JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNs
dWRlUHJlZmV0Y2hlZFJlY29yZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQordm9p
ZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0
Y2hlZFJlY29yZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQogewogICAgIEFTU0VS
VCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXgg
ODgzMGZlZGE5MmEzMWIxMzZjMTY3ZDM0MjM5MjJlOTUzNTRkMzUzMy4uZjc4NzkzMjY2NTY0NzA0
ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAK
ICAgICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyB7IE5vLCBZZXMg
fTsKLSAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVk
ZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CisgICAgdm9pZCBjdXJyZW50RGF0YShJREJHZXRSZXN1
bHQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZl
dGNoZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDhlZDZlODE2N2UxODVjYjcyNmFjNmNlODI5
YmQxNWQzMDg2NjdhZWMuLmU0NGFiNjMwMTcyMDM5Y2FmODVjNDlmZDk2ZmMwYjE2ZjExOGM4ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtODcsNyAr
ODcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVycygpOwogCiAgICAgdm9pZCBzZXRNYWluVGhyZWFkQWJvcnRSZXN1bHQoY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7IG1fbWFpblRocmVhZEFib3J0UmVzdWx0ID0geyBlcnJvciB9OyB9
Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCRXJyb3I+JiBtYWluVGhyZWFkQWJvcnRSZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsgfQorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCRXJyb3I+JiBtYWluVGhyZWFkQWJvcnRSZXN1bHQoKSBjb25zdCB7IHJldHVy
biBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJik7CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0
b3I8dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyczsKIAotICAgIE9wdGlvbmFsPElE
QkVycm9yPiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQkVy
cm9yPiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkRhdGFiYXNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAppbmRleCBiNGE2M2UyNGRiMjkxMGJmNzgwYjc0N2Rk
ZDYzMzZlMmI0NGQxZDIyLi5hYmFlYzZjNWNmYmNlZDlmYzY2ZWY1NGZkOGRmZDJjN2EyN2M5MTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RGF0YWJhc2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIElEQkRhdGFi
YXNlSW5mbzo6aGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvIElEQkRhdGFiYXNlSW5mbzo6Y3Jl
YXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRo
PiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbyBJREJE
YXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsK
ICAgICBJREJPYmplY3RTdG9yZUluZm8gaW5mbygrK21fbWF4T2JqZWN0U3RvcmVJRCwgbmFtZSwg
V1RGTW92ZShrZXlQYXRoKSwgYXV0b0luY3JlbWVudCk7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5z
ZXQoaW5mby5pZGVudGlmaWVyKCksIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmluZGV4IDczNjMw
OTdhNWNlOGU5NmY5ZjI4MmE1MWExZTU1Zjg4ZmE0NThhNDIuLjcxYmNjZDA1ZmM0ZGY3MjQ1Njhh
ODM4YWYzYTUwODMxMWQ0ZmY5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNp
b247IH0KIAogICAgIGJvb2wgaGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25z
dDsKLSAgICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOwor
ICAgIElEQk9iamVjdFN0b3JlSW5mbyBjcmVhdGVOZXdPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsK
ICAgICB2b2lkIGFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
Jik7CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZSh1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIElEQk9iamVjdFN0b3JlSW5mbyog
aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKaW5kZXggOWMxMGI0MzAxMzIy
ZDlkNWYwZjRiNWU1NmQxNzk5ODRiMjhiOGM5Yi4uZjRjNzVlMGUyN2E2OTA2M2Q0NzZkY2NiOWRk
NzhjNWM4ZGRhNjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBA
IC0zNCw3ICszNCw3IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsKICAgICB1
aW50NjRfdCB2ZXJzaW9uIHsgMCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb246OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGluZm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDQ4YTA3Y2Zi
MmNlNDBlZGFhMTcxOWQwZTg4MzdiYThkYzgwNjNjYzIuLjJlMGE1N2FjNjY3YjYyY2M2Y2ZiZGJl
NGNmNmYxNTE4OTliMjE4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUlEQkVycm9yOjpJREJFcnJvcihPcHRpb25hbDxFeGNlcHRpb25Db2Rl
PiBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitJREJFcnJvcjo6SURCRXJyb3Ioc3RkOjpv
cHRpb25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
OiBtX2NvZGUoY29kZSkKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCA3NGZj
Yzc0NzRmMGQ0OTBjMjcyYzgxY2MyNWE4NDY4Y2Q4NTVmNzgwLi5mZjE3Yzk4YTQxMTVkZTYyY2Fj
YzcwYWQzMjUyYmQ2ZWRmMTFmMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBJREJFcnJvcihPcHRpb25hbDxFeGNlcHRpb25Db2RlPiA9IHN0ZDo6bnVsbG9w
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBJREJFcnJvcihzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+ID0gc3RkOjpudWxsb3B0
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0pOwogCiAgICAgc3RhdGljIElEQkVycm9yIHVz
ZXJEZWxldGVFcnJvcigpCiAgICAgewpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8RE9NRXhjZXB0aW9uPiB0b0RPTUV4Y2VwdGlvbigpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8RXhjZXB0aW9uQ29kZT4gY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsg
fQogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsK
IApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgSURCRXJyb3Im
KTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2NvZGU7CisgICAg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2NvZGU7CiAgICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKaW5kZXggYzYxMjgzZGEyZTdlNjI4
NzNiYzhjZWY3ZjRkOTBjMDQ5NzQwYmE2MS4uZGY5MzFiYjRjMzE4ZTE2N2MzM2JkYWJlNzA5YzFm
YTYyODJiNDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKQEAgLTM3LDcgKzM3LDcg
QEAgZW51bSBjbGFzcyBHZXRBbGxUeXBlIDogdWludDhfdDsKIHN0cnVjdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSB7CiAgICAgSURCS2V5UmFuZ2VEYXRhIGtleVJhbmdlRGF0YTsKICAgICBJbmRleGVk
REI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gY291bnQ7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQ7CiAgICAgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVD
dXJzb3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
SXRlcmF0ZUN1cnNvckRhdGEuaAppbmRleCBjNjlhYjQ1OTRiNmM1Yjc2YTIxY2M4MDI3YjJkZmQ4
NGUzMjBkNTk0Li4zZDAwN2IzNzljNTNhMGJmYzQ0ZGY2ZWI2YTA5ZjhiMmVmYmNjYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0
ZUN1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgSURCSXRl
cmF0ZUN1cnNvckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgSURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgaXRlcmF0b3JDdXJzb3JEYXRhKQogewot
ICAgIE9wdGlvbmFsPElEQktleURhdGE+IGtleURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJL
ZXlEYXRhPiBrZXlEYXRhOwogICAgIGRlY29kZXIgPj4ga2V5RGF0YTsKICAgICBpZiAoIWtleURh
dGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpdGVyYXRvckN1cnNvckRhdGEua2V5RGF0
YSA9IFdURk1vdmUoKmtleURhdGEpOwogCi0gICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gcHJpbWFy
eUtleURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBwcmltYXJ5S2V5RGF0YTsK
ICAgICBkZWNvZGVyID4+IHByaW1hcnlLZXlEYXRhOwogICAgIGlmICghcHJpbWFyeUtleURhdGEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKaW5kZXgg
MmU3MDE2MWE2MDk1MTYzNzRhNTZjNGJlY2FkZTYyNDk3NzI5ZTE2NS4uYTRkZDYxYWU2YTM0ZDdi
ZjNjMWEyOTljNzBkNmExYzBiYjZlYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAgSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8o
KQogewogfQogCi1JREJPYmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmpl
Y3RTdG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1f
a2V5UGF0aChXVEZNb3ZlKGtleVBhdGgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCmluZGV4IDBl
YTZhOTdkOTYwOGRjYTU5NmQ3OWJlZTMxZWU4YjA1NTAyM2M1MTYuLjQwM2ZkNDA1OTg2YmM1ZDky
N2I0ZTYzYWRmMGM5NWZlZjFhZTk2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKQEAgLTM1
LDExICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJPYmplY3RTdG9yZUlu
Zm8gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVjdFN0b3JlSW5mbygpOwot
ICAgIElEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5hbWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYsIGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAg
SURCT2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAg
ICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGNv
bnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCiAgICAgdm9pZCByZW5hbWUoY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKSB7IG1fbmFtZSA9IG5ld05hbWU7IH0KQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CiAgICAgU3Ry
aW5nIG1fbmFtZTsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1l
bnQgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSURCSW5kZXhJbmZvPiBtX2lu
ZGV4TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA3YTA1NDJiYTMyNGEzOTFkODlkY2QwN2MwNGJi
M2JlODc1ZmMwNzE1Li4wMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90
IG1faW5kZXhJZGVudGlmaWVyIHsgMCB9OwogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBl
IG1faW5kZXhSZWNvcmRUeXBlIHsgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSB9Owog
Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IG1fZGF0YWJhc2VJ
ZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZp
ZXI+IG1fZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fcmVxdWVzdGVkVmVyc2lv
biB7IDAgfTsKIAogICAgIEluZGV4ZWREQjo6UmVxdWVzdFR5cGUgbV9yZXF1ZXN0VHlwZSB7IElu
ZGV4ZWREQjo6UmVxdWVzdFR5cGU6Ok90aGVyIH07CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBJ
REJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5tX2luZGV4SWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPElEQkRh
dGFiYXNlSWRlbnRpZmllcj4+IGRhdGFiYXNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPj4gZGF0YWJhc2VJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIGlmICghZGF0YWJhc2VJ
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCBiYjk0
ZmE3MzczMWU2N2Q3MWNkZTI1ZGNkNzI0MjcxMzFjNGExMzBmLi5iNTE3YzM3NzQzNzBhZmE0NTk1
Zjg0NTU1ZTQ2NTIxNTIyOWNkMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTExMiw3ICsxMTIsNyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXN1bHREYXRhKCk7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAg
SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIElEQlJlc3VsdERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgICAgICBlbmNvZGVyIDw8ICptX2dldEFsbFJlc3VsdDsKIH0KIAotdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFs
PElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fcmVxdWVzdElkZW50aWZpZXIpKQpAQCAtMjAzLDcgKzIwMyw3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09i
amVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsK
LSAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7
CiAgICAgICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggOWZiZmZjMTAwMDRlNDQxODQxNTgxMDcyM2Y5NWFm
ODQzY2U0NDNhYi4uMDRhODBmNTllYzVjYzRlNGUwYjdhNjFiZTE0NGNjMGExY2I2MDM0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVk
aWFDb250cm9sc0hvc3QuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgVmVjdG9yPFJlZlB0cjxBdWRp
b1RyYWNrPj4gTWVkaWFDb250cm9sc0hvc3Q6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9U
cmFja0wKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS5zb3J0
ZWRUcmFja0xpc3RGb3JNZW51KCZ0cmFja0xpc3QpOwogfQogCi1TdHJpbmcgTWVkaWFDb250cm9s
c0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFj
az4mIHRyYWNrKQorU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNr
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mIHRyYWNrKQogewogICAgIGlm
ICghbV9tZWRpYUVsZW1lbnQgfHwgIXRyYWNrKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggZDM3ODhhYTZhN2IyMTJiYmExNmZkN2M4MTU4YjJmOWE3
ZDRkNDAzNC4uN2E4OTBhMGRkMWNmYTE5OTEyMWQwM2FlYWI0YzMxYzIzNTc1NDdiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8
QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QmKTsKIAog
ICAgIHVzaW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPFRleHRUcmFj
az4sIFJlZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2so
Y29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mKTsKKyAgICBTdHJpbmcgZGlzcGxheU5h
bWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+Jik7CiAKICAg
ICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4
dFRyYWNrJiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCBiMDk1
OWFjZmJkMzUwZWU0NTc5YjkzM2U3NTk5MmZlYzYzNzNkMmI4Li40NzVjYzg1ZjhmM2Q4NjM5ZTVm
NjM2NjBhN2RjNjJjZWY4YTdlZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAg
Y29uc3QgY2hhciogTWVkaWFSZWNvcmRlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAg
ICAgcmV0dXJuICJNZWRpYVJlY29yZGVyIjsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFS
ZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoT3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVTbGljZSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRpbWVTbGljZSkKIHsKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSBNZWRpYVJlY29yZGVy
IGlzIG5vdCBhY3RpdmUiX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IGI4OWQ1MTNmYTA1ZmNjZTY3NTI5Mjc4
MTZhNTFmNGRmYWE5NzExYmIuLjc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2Jk
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogICAgIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHN0YXJ0UmVjb3JkaW5nKE9wdGlvbmFsPHVuc2lnbmVkPik7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcXVlc3RE
YXRhKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGF1c2VSZWNvcmRpbmcoKTsKQEAgLTEyNSw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZT4gbV9wcml2YXRlOwogICAgIFJlY29yZGluZ1N0YXRlIG1fc3RhdGUgeyBSZWNvcmRpbmdT
dGF0ZTo6SW5hY3RpdmUgfTsKICAgICBWZWN0b3I8UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Pj4gbV90cmFja3M7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGltZVNsaWNlOworICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGltZVNsaWNlOwogICAgIFRpbWVyIG1fdGltZVNsaWNl
VGltZXI7CiAgICAgCiAgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IDQ5MzI0MDBh
MDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4MWMyNGMuLmEyNmEwNTA3YjMzMGFmYzQyYWI0YjNj
ZTBhNTdkMDUwZTM4NWU4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYUltYWdlLmgKQEAgLTM1LDcgKzM1LDcgQEAgc3RydWN0IE1lZGlhSW1hZ2Ug
ewogICAgIFN0cmluZyB0eXBlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhSW1hZ2U+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYUlt
YWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTQzLDcgKzQzLDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFnZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzcmMgPDwgc2l6ZXMgPDwgdHlwZTsK
IH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE1lZGlhSW1hZ2U+
IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFJbWFnZT4gTWVkaWFJbWFnZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNyYykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDkyNmNmNjUzNTYzNTQzYTAwNzhiOTAwODJlMDBm
NjY1MGNiYzY0ZGEuLjZmOWMyZjQ5MjQyZjJkYTcxNDZhNWVmZjcwMGJkZjcxNmRlZjczYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAg
bV9jYWxsYmFjayhiaXRtYXBJbWFnZS5wdHIoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxNZWRp
YU1ldGFkYXRhPj4gTWVkaWFNZXRhZGF0YTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmIGluaXQpCitFeGNlcHRpb25P
cjxSZWY8TWVkaWFNZXRhZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmIGlu
aXQpCiB7CiAgICAgYXV0byBtZXRhZGF0YSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFNZXRhZGF0YSk7
CiAgICAgaWYgKGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyOTYwYjQ0YTg2M2JjODJiNGY5MjNhY2IzNWE2
Y2UxYjBkMTM4MjMyLi5kNTc3NGI1MDlkOWE1NjBmMmMyODc1ZDQxNDcwNzhlOGY2NWYxMGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFk
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBzdGQ6Om9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmKTsKICAgICB+TWVkaWFNZXRhZGF0
YSgpOwogCiAgICAgdm9pZCBzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5p
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YUlu
aXQuaAppbmRleCA1ZDdlMzc3NmE2ZjMzMWE4ZDNiMGY5MjJkZTFhNzlkNzI4MzZhYWRhLi44N2Fi
Y2VmYzA0YmFkNWFmMzkwN2E3MDQ3OGY0MzE2NDQ2ZGNjOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0LmgKQEAg
LTQxLDcgKzQxLDcgQEAgc3RydWN0IE1lZGlhTWV0YWRhdGFJbml0IHsKICAgICBWZWN0b3I8TWVk
aWFJbWFnZT4gYXJ0d29yazsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUg
dm9pZCBNZWRpYU1ldGFkYXRhSW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBA
IC01MywzMSArNTMsMzEgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVk
aWFNZXRhZGF0YUluaXQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKQogICAgIDw8IGFydHdvcms7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxNZWRpYU1ldGFk
YXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFNZXRhZGF0YUlu
aXQ+IE1lZGlhTWV0YWRhdGFJbml0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHRpdGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsK
ICAgICBkZWNvZGVyID4+IHRpdGxlOwogICAgIGlmICghdGl0bGUpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGFydGlzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gYXJ0aXN0OwogICAgIGRlY29kZXIgPj4gYXJ0aXN0OwogICAgIGlmICghYXJ0aXN0KQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBhbGJ1bTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gYWxidW07CiAgICAgZGVjb2RlciA+PiBhbGJ1bTsKICAgICBp
ZiAoIWFsYnVtKQogICAgICAgICByZXR1cm4geyB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T05fUExBWUxJU1QpCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0cmFja0lkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHRyYWNrSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRy
YWNrSWRlbnRpZmllcjsKICAgICBpZiAoIXRyYWNrSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IHsgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhSW1hZ2U+PiBhcnR3b3Jr
OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhSW1hZ2U+PiBhcnR3b3JrOwogICAgIGRl
Y29kZXIgPj4gYXJ0d29yazsKICAgICBpZiAoIWFydHdvcmspCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVBv
c2l0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
UG9zaXRpb25TdGF0ZS5oCmluZGV4IDA3NmZhZTQ1MTg5ZWNiMGM5ZGJmNjg2ZGIwZDg5OGJiOTky
NjVjZTMuLjBhYmNiNTkyMmZmOTAzMzA4YWY1OTVjYjU0YmNhYmY0YzY5ZWY1NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRp
b25TdGF0ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBNZWRpYVBvc2l0aW9uU3RhdGUgewog
ICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1l
ZGlhUG9zaXRpb25TdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmIG90aGVyKSBjb25zdCB7IHJldHVybiBkdXJhdGlv
biA9PSBvdGhlci5kdXJhdGlvbiAmJiBwbGF5YmFja1JhdGUgPT0gb3RoZXIucGxheWJhY2tSYXRl
ICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOyB9CiB9OwpAQCAtNDcsNyArNDcsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYVBvc2l0aW9uU3RhdGU6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKQogICAgIGVuY29kZXIgPDwgZHVyYXRpb24gPDwgcGxheWJh
Y2tSYXRlIDw8IHBvc2l0aW9uOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRpYVBvc2l0aW9uU3RhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRpYVBvc2l0aW9uU3RhdGU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIGRvdWJsZSBkdXJhdGlvbjsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGR1cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDViMjU0NGNlZWQwNTdmNjUwNzY2MmQ4NzNl
NWEyYTZjZDBhZmYxODQuLjFlMTRkNzc4NTQzNjZiMDA4NjYzNWZjYzlkZmRhMTU5YjZiNGRjYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlcwogICAg
IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8c3RkOjpwYWlyPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQ+PiBwbGF0
Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9u
RGV0YWlscyYgYWN0aW9uRGV0YWlscykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Pj4gcGxhdGZvcm1Db21tYW5kRm9yTWVk
aWFTZXNzaW9uQWN0aW9uKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRl
dGFpbHMpCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZDsKICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50OwpAQCAtMjg4
LDcgKzI4OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpjYWxsQWN0aW9uSGFuZGxlcihjb25zdCBN
ZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhCiBib29sIE1lZGlhU2Vzc2lvbjo6
Y2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyYgYWN0aW9u
RGV0YWlscywgVHJpZ2dlckdlc3R1cmVJbmRpY2F0b3IgdHJpZ2dlckdlc3R1cmVJbmRpY2F0b3Ip
CiB7CiAgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fYWN0aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRl
dGFpbHMuYWN0aW9uKSkgewotICAgICAgICBPcHRpb25hbDxVc2VyR2VzdHVyZUluZGljYXRvcj4g
bWF5YmVHZXN0dXJlSW5kaWNhdG9yOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJHZXN0dXJl
SW5kaWNhdG9yPiBtYXliZUdlc3R1cmVJbmRpY2F0b3I7CiAgICAgICAgIGlmICh0cmlnZ2VyR2Vz
dHVyZUluZGljYXRvciA9PSBUcmlnZ2VyR2VzdHVyZUluZGljYXRvcjo6WWVzKQogICAgICAgICAg
ICAgbWF5YmVHZXN0dXJlSW5kaWNhdG9yLmVtcGxhY2UoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBk
b2N1bWVudCgpKTsKICAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7
CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBNZWRpYVNlc3Npb246OmNhbGxBY3Rpb25IYW5kbGVy
KGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGEKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0
YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0ZShzdGQ6Om9wdGlvbmFsPE1lZGlhUG9z
aXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKICAgICBpZiAoc3RhdGUpCiAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgc3RhdGUudmFsdWUoKSk7CkBAIC0zMzMsNyArMzMzLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1l
ZGlhUG9zaXRpb25TdGF0ZT4mJgogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPGRvdWJs
ZT4gTWVkaWFTZXNzaW9uOjpjdXJyZW50UG9zaXRpb24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxk
b3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcG9zaXRpb25TdGF0ZSB8fCAhbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAwYzM5NDczZjMzM2RhMGQ2ZmQ0NThh
OWRjYjllOGM5Yi4uM2U2NDYwNTNjN2I5OGE5YTY1Yzk1NmEyZWZiNTI2MmU1ZDBmM2ViMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmgKQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGxBY3Rpb25IYW5k
bGVyKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQb3NpdGlvblN0YXRlKE9wdGlv
bmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJik7Ci0gICAgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0
YXRlPiBwb3NpdGlvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvblN0YXRlOyB9Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9zaXRpb25TdGF0ZShzdGQ6Om9wdGlvbmFsPE1lZGlh
UG9zaXRpb25TdGF0ZT4mJik7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+
IHBvc2l0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uU3RhdGU7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlv
bigpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgCkBAIC0x
MDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVm
YXVsdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWV0YWRhdGFDaGFuZ2VkKGNvbnN0IFJlZlB0
cjxNZWRpYU1ldGFkYXRhPiYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0
ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxN
ZWRpYVBvc2l0aW9uU3RhdGU+JikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0
YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKSB7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIGFjdGlvbkhhbmRsZXJzQ2hhbmdlZCgpIHsgfQogCkBAIC0xNDcsOCArMTQ3LDggQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7CiAgICAgUmVmUHRy
PE1lZGlhTWV0YWRhdGE+IG1fbWV0YWRhdGE7CiAgICAgTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0
ZSBtX3BsYXliYWNrU3RhdGUgeyBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlOjpOb25lIH07Ci0g
ICAgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBtX3Bvc2l0aW9uU3RhdGU7Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
TWVkaWFQb3NpdGlvblN0YXRlPiBtX3Bvc2l0aW9uU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fbGFzdFJlcG9ydGVkUG9zaXRpb247CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVB
dExhc3RQb3NpdGlvblVwZGF0ZTsKICAgICBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUmVm
UHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRsZXI+LCBXVEY6OkludEhhc2g8TWVkaWFTZXNzaW9u
QWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PiBt
X2FjdGlvbkhhbmRsZXJzOwogICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
QWN0aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uQWN0aW9uRGV0YWlscy5oCmluZGV4IGY1OTA5ZDQ2ZjhlYWM2NmQwZjNjOWRkN2U3
NTMyZTM2MDQ2OGQ2YTQuLjliMzQxMDJlZmU2NWNiNDI5Y2ExOTUzMGJlN2Q2MzY3Mzc0ZTA2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkFjdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyB7CiAgICAg
TWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheTsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IHNlZWtPZmZzZXQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzZWVr
VGltZTsKLSAgICBPcHRpb25hbDxib29sPiBmYXN0U2VlazsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gc2Vla09mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2Vla1RpbWU7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBmYXN0U2VlazsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
Tl9QTEFZTElTVCkKICAgICBTdHJpbmcgdHJhY2tJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggOWM2MDI4ZDE0MGQ2ODNiYjEyNzU1MGZkMTQ0MmRh
YmM0NDFkZjViYS4uYmMwYjhiYjhkOTdkMWU1NmRhNGZmNmMzNzNhNDEzMWE0NTliYzNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+
am9pbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24p
IG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnNlZWtUbyhkb3VibGUgdGltZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRp
bWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNlZWtUbyh0aW1lLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9zZXNzaW9uKSB7CiAgICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewor
ICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFw
cm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTk4LDcgKzE5OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2UoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChPcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29y
ZGluYXRvci0+cGF1c2UoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRp
ZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1f
c2Vzc2lvbikgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzEsNyArMjMxLDcgQEAg
dm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFj
aywgRE9NUHJvbWlzZURlZmVycmVkPHYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChP
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+c2V0VHJhY2sodHJhY2ssIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigq
dGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4
LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Om1ldGFkYXRhQ2hhbmdl
ZChjb25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mIG1ldGFkCiAjZW5kaWYKIH0KIAotdm9pZCBN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9u
YWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgcG9zaXRpb25TdGF0ZSkKK3ZvaWQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVk
aWFQb3NpdGlvblN0YXRlPiYgcG9zaXRpb25TdGF0ZSkKIHsKICAgICBpZiAocG9zaXRpb25TdGF0
ZSkKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBwb3NpdGlvblN0YXRlLnZhbHVl
KCkpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNl
ZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhv
c3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25h
bDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFVOVVNF
RF9QQVJBTShob3N0VGltZSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IGJlNTIwMDAyYTViYjFiZjdlYzY5ZjBk
YjNkNmUyNjU2YzdiYTMxMTcuLjMzMGM0YWViNjA1MWUzZTNkZThhNGY5YWFiMDcxNWE0NjM1MjRh
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtNjgsMTMgKzY4LDEzIEBAIHByaXZh
dGU6CiAKICAgICAvLyBNZWRpYVNlc3Npb246Ok9ic2VydmVyCiAgICAgdm9pZCBtZXRhZGF0YUNo
YW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+JikgZmluYWw7Ci0gICAgdm9pZCBwb3Np
dGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmlu
YWw7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1l
ZGlhUG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2Vk
KE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSkgZmluYWw7CiAKICAgICAvLyBNZWRpYVNlc3Np
b25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBsYXlTZXNz
aW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXlTZXNz
aW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBo
b3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggZjM2ZWVkMmMyNjE0ZTk2YTcxNmM4YjI4
NTExMmI3Mjk0ZDQ1ZWFjNC4uODU1YWY2OWI2ZTg0ZTNiNDY5OTJjZDU5YjM3MjAwNDBiN2Y3ZTEz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJs
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBwbGF5U2Vzc2lvbihPcHRpb25hbDxkb3VibGU+IGF0VGltZSwgT3B0aW9uYWw8ZG91YmxlPiBo
b3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwbGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gaG9zdFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZSkgeyB9OwpAQCAtNTgsMTUgKzU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsZWF2ZSgpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0
ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRp
YVBvc2l0aW9uU3RhdGU+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdl
ZChNZWRpYVNlc3Npb25SZWFkeVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNr
U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4
IGZkN2I4YTkwODgyNzRmOTZmODU2Njc3MjNkZGJjNzE2ZDMzNDhiZTguLjQ1OTM1YmY5OThhYWQ4
MTQwMDM2YWFhODFjODNlNTk2ODk5MThjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9p
ZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQogICAgIG9uUmVh
ZHlTdGF0ZUNoYW5nZShvbGRTdGF0ZSwgc3RhdGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBN
ZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3Ip
CitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCkBAIC01NTIsNyArNTUyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6
OmVuZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlv
bmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQordm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5k
ZWRXaXRoRXJyb3Ioc3RkOjpvcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggM2Y0OTUzMzI3MTQx
ZWEwMGJiODMzOTI5MTgxMDRjNmFhOGMyMWRjNi4uMTkxZTAwMzJiYmE3ZjYyZGY4OTBkNjZjMTA5
ZGE5NjExMWI0Yzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJEaWRDaGFuZ2VCdWZmZXJlZERpcnR5KFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwogCiAg
ICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07Ci0gICAg
dm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7Cisg
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJy
b3I+KTsKIAogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWw7CkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBSZWFkeVN0YXRlIHsg
Q2xvc2VkLCBPcGVuLCBFbmRlZCB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuZE9mU3Ry
ZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBl
bmRPZlN0cmVhbShzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50
LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXgg
Yzg1MjQ1ZWRmZDFhYTY4NDAxMGE1ODE1ZjcwMzE5MzZhNzNlMGVkOC4uMDg4MDkzMzRhODIwYmQ4
ZjYyNWM5MzMwMzQyYWZiODlhOTZhZjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2spOwog
Ci1SZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s+IENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SFRNTENhbnZhc0VsZW1l
bnQ+JiYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK1JlZjxD
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxIVE1MQ2FudmFzRWxlbWVudD4mJiBj
YW52YXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpCiB7CiAgICAg
YXV0byBzb3VyY2UgPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjcmVh
dGUoY2FudmFzLmdldCgpLCBXVEZNb3ZlKGZyYW1lUmVxdWVzdFJhdGUpKTsKICAgICBhdXRvIHRy
YWNrID0gYWRvcHRSZWYoKm5ldyBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayhkb2N1bWVu
dCwgV1RGTW92ZShjYW52YXMpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKQEAgLTU2LDcgKzU2LDcgQEAg
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrKERvY3VtZW50JiBkb2N1bWVudCwKIHsKIH0KIAotUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrOjpTb3VyY2U+IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6
OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJh
bWVSZXF1ZXN0UmF0ZSkKK1JlZjxDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
PiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjcmVhdGUoSFRNTENhbnZh
c0VsZW1lbnQmIGNhbnZhcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0
ZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291cmNlKGNhbnZhcywgV1RG
TW92ZShmcmFtZVJlcXVlc3RSYXRlKSkpOwogICAgIHNvdXJjZS0+c3RhcnQoKTsKQEAgLTc1LDcg
Kzc1LDcgQEAgY29uc3QgY2hhciogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OmFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdAogfQogCiAvLyBGSVhNRTogR2l2ZSBzb3VyY2UgaWQgYW5k
IG5hbWUKLUNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1M
Q2FudmFzRWxlbWVudCYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0
ZSkKK0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2Fu
dmFzRWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RS
YXRlKQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgIkNhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrIl9zKQogICAgICwgbV9mcmFtZVJlcXVlc3RSYXRlKFdURk1vdmUo
ZnJhbWVSZXF1ZXN0UmF0ZSkpCiAgICAgLCBtX3JlcXVlc3RGcmFtZVRpbWVyKCp0aGlzLCAmU291
cmNlOjpyZXF1ZXN0RnJhbWVUaW1lckZpcmVkKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNC
YXNlJiBjYW52YXMpCiAgICAgc2V0U2l6ZShJbnRTaXplKG1fY2FudmFzLT53aWR0aCgpLCBtX2Nh
bnZhcy0+aGVpZ2h0KCkpKTsKIH0KIAotdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhcywgY29uc3QgT3B0aW9u
YWw8RmxvYXRSZWN0PiYpCit2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mKQogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAm
Y2FudmFzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDc1ZmRk
ZmI5OTMwNmI5Y2EwNzBiNWIxOTYzMzFkYmFhMDBlYmE1MDUuLmI3ZDA0ZGI0MDNhNmExODFiMTE1
NzRkYWEwNGM3MjJhMTliMDQ5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBDYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjayBmaW5hbCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUo
RG9jdW1lbnQmLCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBm
cmFtZVJlcXVlc3RSYXRlKTsKKyAgICBzdGF0aWMgUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+JiYsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOwogCiAgICAgSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzLmdldCgpOyB9CiAgICAgdm9pZCByZXF1
ZXN0RnJhbWUoKSB7IHN0YXRpY19jYXN0PFNvdXJjZSY+KHNvdXJjZSgpKS5yZXF1ZXN0RnJhbWUo
KTsgfQpAQCAtNTIsMTYgKzUyLDE2IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSBDYW52YXNPYnNlcnZlciB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFNvdXJjZT4gY3JlYXRlKEhUTUxDYW52
YXNFbGVtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOworICAgICAg
ICBzdGF0aWMgUmVmPFNvdXJjZT4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50Jiwgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSk7CiAgICAgICAgIAogICAgICAgICB2b2lk
IHJlcXVlc3RGcmFtZSgpIHsgbV9zaG91bGRFbWl0RnJhbWUgPSB0cnVlOyB9Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVS
ZXF1ZXN0UmF0ZTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZXF1ZXN0UmF0ZTsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYm
KTsKKyAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVtZW50Jiwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+JiYpOwogCiAgICAgICAgIC8vIENhbnZhc09ic2VydmVyIEFQSQotICAgICAgICB2b2lkIGNh
bnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICAgICAgdm9pZCBjYW52YXNSZXNpemVkKENh
bnZhc0Jhc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoQ2FudmFzQmFz
ZSYpIGZpbmFsOwogCkBAIC03NiwxMCArNzYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBy
ZXF1ZXN0RnJhbWVUaW1lckZpcmVkKCk7CiAKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFt
ZSB7IHRydWUgfTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7CiAgICAg
ICAgIFRpbWVyIG1fcmVxdWVzdEZyYW1lVGltZXI7CiAgICAgICAgIFRpbWVyIG1fY2FwdHVyZUNh
bnZhc1RpbWVyOwotICAgICAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+
IG1fY3VycmVudFNldHRpbmdzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgICAgIEhUTUxDYW52YXNFbGVt
ZW50KiBtX2NhbnZhczsKICAgICAgICAgUmVmUHRyPEltYWdlPiBtX2N1cnJlbnRJbWFnZTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXRh
Y2hlZFJUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RldGFjaGVkUlRDRGF0YUNoYW5uZWwuaAppbmRleCA0ZDkxNmY4OWJmNWZhOGE4ZDAxYTkwMWFh
ODExMGM2NjEyYzI5NmM5Li4wZjM2Yzc4MzdmMTViYjIwMDVkMjVmZTZiYjQyMzc5OTgwZjE3MmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RldGFjaGVk
UlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RldGFjaGVkUlRDRGF0YUNoYW5uZWwuaApAQCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIERldGFjaGVkUlRDRGF0YUNoYW5uZWw6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjbwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRSVENEYXRhQ2hhbm5lbD4gRGV0YWNoZWRSVENEYXRhQ2hhbm5lbDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBp
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBp
ZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC03MywxMiArNzMsMTIgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IERldGFj
aGVkUlRDRGF0YUMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhYmVsKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gb3B0aW9uczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gb3B0aW9uczsKICAgICBkZWNvZGVy
ID4+IG9wdGlvbnM7CiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxTdGF0ZT4gc3RhdGU7CisgICAgc3RkOjpvcHRpb25h
bDxSVENEYXRhQ2hhbm5lbFN0YXRlPiBzdGF0ZTsKICAgICBkZWNvZGVyID4+IHN0YXRlOwogICAg
IGlmICghc3RhdGUpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKaW5kZXggMmNiNTEwYTEwNGQ2MTBkYzk5
ODEwMmU2NzQyYjQ0N2Q3ZGEzMjEwNi4uODRhNDZiZDYwYzY1YzU0NmM2NDc1OTk2NzJlMmU3ZGI1
MzA4YmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9E
b3VibGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRG91
YmxlUmFuZ2UuaApAQCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgRG91YmxlUmFuZ2UgewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4OwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gbWluOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXg7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1pbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTG9uZ1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0xvbmdSYW5nZS5oCmluZGV4IDA3MzI2MjcwNzlmYzQ4ODRjZjgxNjcyMjlh
NjJlNWExNjdmNTcwYjEuLjE2MGVmODZiNjA4MjdjZjczZmJiYzZiZGM0N2ZjOThiNzA1NDUwYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9uZ1Jhbmdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb25nUmFuZ2UuaApA
QCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTG9uZ1Jhbmdl
IHsKLSAgICBPcHRpb25hbDxpbnQ+IG1heDsKLSAgICBPcHRpb25hbDxpbnQ+IG1pbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludD4gbWF4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtaW47CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCA5MmM4ZGY4YmIxMWIwZDYxY2I3NDc0ZDQ5ZGZhYTU1ZWQ1
NmZmOGE5Li45ZjAzY2Y0NmQ2ZGEyM2JiY2U0MWM5ZmZjMzJkNjE1NGE2MDg0ODc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBNZWRpYVN0cmVhbVRyYWNrOjpUcmFja0NhcGFi
aWxpdGllcyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29u
c3RyYWludHMoY29uc3QgT3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWlu
dHMpCitzdGF0aWMgTWVkaWFDb25zdHJhaW50cyBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMpCiB7CiAg
ICAgaWYgKCFjb25zdHJhaW50cykgewogICAgICAgICBNZWRpYUNvbnN0cmFpbnRzIHZhbGlkQ29u
c3RyYWludHM7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIE1lZGlhQ29uc3RyYWludHMgY3Jl
YXRlTWVkaWFDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWkKICAg
ICByZXR1cm4gY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFs
PE1lZGlhVHJhY2tDb25zdHJhaW50cz4mIGNvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0g
V1RGOjptYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oV1RGTW92ZShwcm9taXNl
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmgKaW5kZXggNTkyYWIyYmIxNThlN2QzNTUyMGJiNWU0ZWM0YjA3ZmQwMTky
MTRjYS4uNzc3MDhiZTg5ODM2MjBlZWU4OTcyNWQ5Zjk0NDVjNGYyZTBmNTM1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmgKQEAgLTEwMiwxNiArMTAyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FwdHVyZVRyYWNr
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcHR1cmVUcmFjazsgfQogCiAgICAgc3RydWN0IFRyYWNr
U2V0dGluZ3MgewotICAgICAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOwotICAgICAgICBPcHRpb25h
bDxpbnQ+IGhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpbzsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiB3aWR0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gZnJhbWVSYXRlOwogICAgICAgICBTdHJpbmcgZmFjaW5nTW9kZTsKLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiB2b2x1bWU7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gc2FtcGxlUmF0
ZTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBzYW1wbGVTaXplOwotICAgICAgICBPcHRpb25hbDxi
b29sPiBlY2hvQ2FuY2VsbGF0aW9uOwotICAgICAgICBPcHRpb25hbDxib29sPiBkaXNwbGF5U3Vy
ZmFjZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZvbHVtZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHNhbXBsZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBz
YW1wbGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVjaG9DYW5jZWxsYXRpb247
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzcGxheVN1cmZhY2U7CiAgICAgICAgIFN0
cmluZyBsb2dpY2FsU3VyZmFjZTsKICAgICAgICAgU3RyaW5nIGRldmljZUlkOwogICAgICAgICBT
dHJpbmcgZ3JvdXBJZDsKQEAgLTExOSwyMiArMTE5LDIyIEBAIHB1YmxpYzoKICAgICBUcmFja1Nl
dHRpbmdzIGdldFNldHRpbmdzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tDYXBhYmlsaXRp
ZXMgewotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+IHdpZHRoOwotICAgICAgICBPcHRpb25h
bDxMb25nUmFuZ2U+IGhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8RG91YmxlUmFuZ2U+IGFzcGVj
dFJhdGlvOwotICAgICAgICBPcHRpb25hbDxEb3VibGVSYW5nZT4gZnJhbWVSYXRlOwotICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZmFjaW5nTW9kZTsKLSAgICAgICAgT3B0aW9uYWw8
RG91YmxlUmFuZ2U+IHZvbHVtZTsKLSAgICAgICAgT3B0aW9uYWw8TG9uZ1JhbmdlPiBzYW1wbGVS
YXRlOwotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+IHNhbXBsZVNpemU7Ci0gICAgICAgIE9w
dGlvbmFsPFZlY3Rvcjxib29sPj4gZWNob0NhbmNlbGxhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxMb25nUmFuZ2U+IHdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExvbmdSYW5nZT4g
aGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZVJhbmdlPiBhc3BlY3RSYXRpbzsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxEb3VibGVSYW5nZT4gZnJhbWVSYXRlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBmYWNpbmdNb2RlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPERvdWJsZVJhbmdlPiB2b2x1bWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TG9uZ1Jh
bmdlPiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExvbmdSYW5nZT4gc2FtcGxl
U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Ym9vbD4+IGVjaG9DYW5jZWxsYXRp
b247CiAgICAgICAgIFN0cmluZyBkZXZpY2VJZDsKICAgICAgICAgU3RyaW5nIGdyb3VwSWQ7CiAg
ICAgfTsKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAog
ICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYgZ2V0Q29uc3RyYWludHMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0
IE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVk
aWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+
c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkg
eyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAKaW5kZXgg
Y2QxYzBlMzE5OGE1ZGI1NzBlZGFjZGUzYWEwZmRhZmRjM2FkNzA2My4uOWYxMDQ4MjE5Njk0MWIw
ZjUyNDY4NTMxYzQwNGY1NGY2MGE0N2M0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBjb25zCiAgICAgbWFwLnNldCh0eXBl
LCBXVEZNb3ZlKGNvbnN0cmFpbnQpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGlubGluZSB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJh
aW50U2V0VHlwZSBzZXRUeXBlLCBjb25zdCBjaGFyKiB0eXBlQXNTdHJpbmcsIE1lZGlhQ29uc3Ry
YWludFR5cGUgdHlwZSwgY29uc3QgT3B0aW9uYWw8VD4mIHZhbHVlKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIGlubGluZSB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYg
bWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBjb25zdCBjaGFyKiB0eXBlQXNTdHJpbmcs
IE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUp
CiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDcgKzE4NSw3IEBA
IHN0YXRpYyBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGNvbnZlcnRBZHZhbmNl
ZFRvSW50ZXJuYWxGb3JtKGNvbnN0IFZlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGlj
IFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gY29udmVydEFkdmFuY2VkVG9JbnRl
cm5hbEZvcm0oY29uc3QgT3B0aW9uYWw8VmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Pj4m
IG9wdGlvbmFsVmVjdG9yKQorc3RhdGljIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cD4gY29udmVydEFkdmFuY2VkVG9JbnRlcm5hbEZvcm0oY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0
b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+PiYgb3B0aW9uYWxWZWN0b3IpCiB7CiAgICAgaWYg
KCFvcHRpb25hbFZlY3RvcikKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5o
CmluZGV4IDAwNzJhYmEzMzZmZmU5MjQ1Zjk1OWI0ZjIyZWUyYmJlZWEzMmRmYzUuLjczMTQyODVl
Y2YyOWQyMmE1ZGYxMDA0MGNjYzdjYTg2MzYyYWJkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaApA
QCAtMzcsMjMgKzM3LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNZWRpYUNvbnN0
cmFpbnRzOwogCiBzdHJ1Y3QgQ29uc3RyYWluQm9vbGVhblBhcmFtZXRlcnMgewotICAgIE9wdGlv
bmFsPGJvb2w+IGV4YWN0OwotICAgIE9wdGlvbmFsPGJvb2w+IGlkZWFsOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gZXhhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZGVhbDsKIH07CiAK
IHN0cnVjdCBDb25zdHJhaW5ET01TdHJpbmdQYXJhbWV0ZXJzIHsKLSAgICBPcHRpb25hbDxWYXJp
YW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBleGFjdDsKLSAgICBPcHRpb25hbDxWYXJpYW50
PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBpZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGV4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gaWRlYWw7CiB9OwogCiBzdHJ1Y3QgQ29uc3Ry
YWluRG91YmxlUmFuZ2UgOiBEb3VibGVSYW5nZSB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBleGFj
dDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGlkZWFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBleGFjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaWRlYWw7CiB9OwogCiBzdHJ1Y3Qg
Q29uc3RyYWluTG9uZ1JhbmdlIDogTG9uZ1JhbmdlIHsKLSAgICBPcHRpb25hbDxpbnQ+IGV4YWN0
OwotICAgIE9wdGlvbmFsPGludD4gaWRlYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGV4YWN0
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZGVhbDsKIH07CiAKIHVzaW5nIENvbnN0cmFpbkJv
b2xlYW4gPSBWYXJpYW50PGJvb2wsIENvbnN0cmFpbkJvb2xlYW5QYXJhbWV0ZXJzPjsKQEAgLTYy
LDIzICs2MiwyMyBAQCB1c2luZyBDb25zdHJhaW5Eb3VibGUgPSBWYXJpYW50PGRvdWJsZSwgQ29u
c3RyYWluRG91YmxlUmFuZ2U+OwogdXNpbmcgQ29uc3RyYWluTG9uZyA9IFZhcmlhbnQ8aW50LCBD
b25zdHJhaW5Mb25nUmFuZ2U+OwogCiBzdHJ1Y3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewot
ICAgIE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHdpZHRoOwotICAgIE9wdGlvbmFsPENvbnN0cmFp
bkxvbmc+IGhlaWdodDsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IGFzcGVjdFJhdGlv
OwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkRvdWJsZT4gZnJhbWVSYXRlOwotICAgIE9wdGlvbmFs
PENvbnN0cmFpbkRPTVN0cmluZz4gZmFjaW5nTW9kZTsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5E
b3VibGU+IHZvbHVtZTsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5Mb25nPiBzYW1wbGVSYXRlOwot
ICAgIE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHNhbXBsZVNpemU7Ci0gICAgT3B0aW9uYWw8Q29u
c3RyYWluQm9vbGVhbj4gZWNob0NhbmNlbGxhdGlvbjsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5E
T01TdHJpbmc+IGRldmljZUlkOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkRPTVN0cmluZz4gZ3Jv
dXBJZDsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGRpc3BsYXlTdXJmYWNlOwot
ICAgIE9wdGlvbmFsPENvbnN0cmFpbkJvb2xlYW4+IGxvZ2ljYWxTdXJmYWNlOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29uc3RyYWluTG9uZz4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJh
aW5Mb25nPiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IGFzcGVj
dFJhdGlvOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluRG91YmxlPiBmcmFtZVJhdGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGZhY2luZ01vZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IHZvbHVtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bnN0cmFpbkxvbmc+IHNhbXBsZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Mb25n
PiBzYW1wbGVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gZWNob0Nh
bmNlbGxhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnN0cmFpbkRPTVN0cmluZz4gZGV2aWNl
SWQ7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGdyb3VwSWQ7CisgICAg
c3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGRpc3BsYXlTdXJmYWNlOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gbG9naWNhbFN1cmZhY2U7CiB9OwogCiBzdHJ1
Y3QgTWVkaWFUcmFja0NvbnN0cmFpbnRzIDogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewotICAg
IE9wdGlvbmFsPFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4+IGFkdmFuY2VkOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Pj4gYWR2YW5jZWQ7
CiB9OwogCiBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3QgTWVk
aWFUcmFja0NvbnN0cmFpbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNjI2MTQ0
NzkxMjhjMTgyZWUzMmM1MTU1OTkyNTU1NDUzYjIwMDU5NS4uNmRhYjFlZjdiNmVlNmI4NzZmMjhj
NGNhMzg3OGVkMDFiNTg0MjRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjMsMTMg
KzYzLDEzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBj
cmVhdGVOb1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQCiAKIENyZWF0ZVBlZXJDb25uZWN0aW9u
QmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZU5vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOwogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYpCitzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5YmQyYmQ5OWMwOWYzNzBkYzFjNTU1ZmY1
M2VjOTQ1MTRlOGNlOTliLi4zMzY5NzYzOWUwYmM1MGI2OWU4OGY4ZmM4N2M4Y2VjYTQ0MDc5NzY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTgzLDggKzgzLDggQEAgY2xhc3MgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyZWF0ZVBl
ZXJDb25uZWN0aW9uQmFja2VuZCBjcmVhdGU7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRw
Q2FwYWJpbGl0aWVzPiByZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwQ2FwYWJp
bGl0aWVzPiBzZW5kZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYga2luZCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0
aWVzPiByZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
U3RyaW5nJiBraW5kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRp
ZXM+IHNlbmRlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiBraW5kKTsKIAogICAgIGV4cGxpY2l0IFBlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVy
Q29ubmVjdGlvbiYpOwogICAgIHZpcnR1YWwgflBlZXJDb25uZWN0aW9uQmFja2VuZCgpOwpAQCAt
MTY4LDkgKzE2OCw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFR5cGUgdHlwZTsK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBleHBpcmVzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gZXhwaXJlczsKIAotICAgICAgICBPcHRpb25hbDxSU0E+IHJzYVBhcmFtZXRlcnM7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UlNBPiByc2FQYXJhbWV0ZXJzOwogICAgIH07CiAgICAg
c3RhdGljIHZvaWQgZ2VuZXJhdGVDZXJ0aWZpY2F0ZShEb2N1bWVudCYsIGNvbnN0IENlcnRpZmlj
YXRlSW5mb3JtYXRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFJUQ0NlcnRp
ZmljYXRlPj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb25maWd1cmF0aW9uLmgKaW5kZXggMzA3ZGVlZmVlOGUwNjQxMDRjNmNhZWJiMDI5
Yjk4NDYwODdhZGMyZC4uZGQxZTE3YzBkNjMwM2Y1YWI2OTFlMDdlMTRhYjcxYWNjNGUyODRmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IFJUQ0NvbmZpZ3VyYXRpb24gewotICAgIE9wdGlvbmFsPFZlY3RvcjxSVENJY2VTZXJ2ZXI+
PiBpY2VTZXJ2ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJUQ0ljZVNlcnZlcj4+IGlj
ZVNlcnZlcnM7CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9saWN5IGljZVRyYW5zcG9ydFBvbGljeTsK
ICAgICBSVENCdW5kbGVQb2xpY3kgYnVuZGxlUG9saWN5OwogICAgIFJUQ1BNdXhQb2xpY3kgcnRj
cE11eFBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaAppbmRleCA2MDFkODg5NDI1NzQ2NTk4YzQzYWNlNzVjYWY1YTQyYzgy
MWU5YzIyLi45ZGE3NjU2ODc4NmRhYjI5ZDY4NDVkMzE3ZThmNGE3MzI1YzczMmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5o
CkBAIC01NywxMSArNTcsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5u
ZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0JiYsIFJUQ0RhdGFDaGFubmVsU3RhdGUp
OwogCiAgICAgYm9vbCBvcmRlcmVkKCkgY29uc3QgeyByZXR1cm4gKm1fb3B0aW9ucy5vcmRlcmVk
OyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFBhY2tldExpZmVUaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zLm1heFBhY2tldExpZmVUaW1lOyB9Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
Lm1heFJldHJhbnNtaXRzOyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4
UGFja2V0TGlmZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMubWF4UGFja2V0TGlmZVRp
bWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhSZXRyYW5zbWl0cygp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5tYXhSZXRyYW5zbWl0czsgfQogICAgIFN0cmluZyBw
cm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5wcm90b2NvbDsgfQogICAgIGJvb2wg
bmVnb3RpYXRlZCgpIGNvbnN0IHsgcmV0dXJuICptX29wdGlvbnMubmVnb3RpYXRlZDsgfTsKLSAg
ICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMu
aWQ7IH07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMuaWQ7IH07CiAgICAgUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zLnByaW9yaXR5OyB9OwogICAgIGNvbnN0IFJUQ0RhdGFDaGFu
bmVsSW5pdCYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRp
b0ZyYW1lLmgKaW5kZXggMjZmY2IwNzFjMjY3MzIyNGEwZGJkOWExMzg5MGVlZjM0ZDFiMjM5Ny4u
NTNlMWYyMGQ3N2UxZjYyMzBhN2Y4ZWJmMjI0OWRmMTNhMDVkMmJjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJh
bWUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJU
Q0VuY29kZWRBdWRpb0ZyYW1lKFJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOwogCi0g
ICAgbXV0YWJsZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9tZXRhZGF0YTsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKaW5kZXggMzk4ZDJmNmViZGJlYmIwYTQ0NTM3NjliMTZj
ZDg3M2U3NDI4NzZkNi4uYzY4MjBlYjE0NzkzZDhhNGQ3NGMwZDkyNDk0ZDNmOWFmMDlmZmJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVk
VmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RW5jb2RlZFZpZGVvRnJhbWUuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYp
OwogCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9t
ZXRhZGF0YTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggN2MwNTkxMzRj
MDdmNjkzMzk5ZGY0OGE0NDgwZTg5YjA4NTE1NzQzYi4uOGQ5NWI4MTI4YTUwODZkNzM2ODhmZjky
M2QwY2FiNDJmYWY3MDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSVENJY2VDYW5kaWRh
dGUpOwogCi1SVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNh
bmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBz
ZHBNTGluZUluZGV4LCBGaWVsZHMmJiBmaWVsZHMpCitSVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNh
bmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgsIEZpZWxkcyYmIGZpZWxk
cykKICAgICA6IG1fY2FuZGlkYXRlKGNhbmRpZGF0ZSkKICAgICAsIG1fc2RwTWlkKHNkcE1pZCkK
ICAgICAsIG1fc2RwTUxpbmVJbmRleChzZHBNTGluZUluZGV4KQpAQCAtNjEsNyArNjEsNyBAQCBF
eGNlcHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUo
Y29uc3QgUlRDSWNlQ2FuZGlkYXRlSQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNh
bmRpZGF0ZShkaWN0aW9uYXJ5LmNhbmRpZGF0ZSwgZGljdGlvbmFyeS5zZHBNaWQsIGRpY3Rpb25h
cnkuc2RwTUxpbmVJbmRleCwgV1RGTW92ZShmaWVsZHMpKSk7CiB9CiAKLVJlZjxSVENJY2VDYW5k
aWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBj
b25zdCBTdHJpbmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5k
ZXgpCitSZWY8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCiB7CiAgICAgYXV0byBmaWVsZHMgPSBwYXJzZUlj
ZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0lj
ZUNhbmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRleCwgV1RGTW92ZSgqZmll
bGRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VDYW5kaWRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlLmgKaW5kZXggNmQzYTdlMjY4YWM3N2I0MjVmM2M4ZjQzNzdmZTJmOWZjODRi
MGVlMS4uM2VmZjNmZTYxYjRmOTZmMWM4ZTYyYjE1MmNjNWU5NTE1ZjBkNmE2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5o
CkBAIC00Nyw1MCArNDcsNTAgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwgcHVibGljIFNjcmlwdFcKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFJUQ0ljZUNhbmRpZGF0ZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBjcmVhdGUoY29uc3QgUlRDSWNlQ2FuZGlk
YXRlSW5pdCYpOwotICAgIHN0YXRpYyBSZWY8UlRDSWNlQ2FuZGlkYXRlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBPcHRpb25hbDx1bnNpZ25l
ZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CisgICAgc3RhdGljIFJlZjxSVENJY2VDYW5kaWRhdGU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0ZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgc2RwTWlkKCkgY29uc3QgeyByZXR1cm4gbV9zZHBNaWQ7IH0KLSAgICBPcHRp
b25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Rw
TUxpbmVJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5l
SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NkcE1MaW5lSW5kZXg7IH0KIAogICAgIHN0cnVjdCBG
aWVsZHMgewogICAgICAgICBTdHJpbmcgZm91bmRhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8UlRD
SWNlQ29tcG9uZW50PiBjb21wb25lbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmlv
cml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSVENJY2VDb21wb25lbnQ+IGNvbXBvbmVudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJpb3JpdHk7CiAgICAgICAgIFN0cmlu
ZyBhZGRyZXNzOwotICAgICAgICBPcHRpb25hbDxSVENJY2VQcm90b2NvbD4gcHJvdG9jb2w7Ci0g
ICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBwb3J0OwotICAgICAgICBPcHRpb25hbDxS
VENJY2VDYW5kaWRhdGVUeXBlPiB0eXBlOwotICAgICAgICBPcHRpb25hbDxSVENJY2VUY3BDYW5k
aWRhdGVUeXBlPiB0Y3BUeXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVByb3RvY29s
PiBwcm90b2NvbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcG9ydDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSVENJY2VDYW5kaWRhdGVUeXBlPiB0eXBlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRjcFR5cGU7CiAgICAgICAg
IFN0cmluZyByZWxhdGVkQWRkcmVzczsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IHJlbGF0ZWRQb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiByZWxh
dGVkUG9ydDsKICAgICAgICAgU3RyaW5nIHVzZXJuYW1lRnJhZ21lbnQ7CiAgICAgfTsKIAogICAg
IFN0cmluZyBmb3VuZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuZm91bmRhdGlvbjsg
fQotICAgIE9wdGlvbmFsPFJUQ0ljZUNvbXBvbmVudD4gY29tcG9uZW50KCkgY29uc3QgeyByZXR1
cm4gbV9maWVsZHMuY29tcG9uZW50OyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByaW9yaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucHJpb3JpdHk7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PFJUQ0ljZUNvbXBvbmVudD4gY29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuY29t
cG9uZW50OyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJpb3JpdHkoKSBjb25zdCB7
IHJldHVybiBtX2ZpZWxkcy5wcmlvcml0eTsgfQogICAgIFN0cmluZyBhZGRyZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9maWVsZHMuYWRkcmVzczsgfQotICAgIE9wdGlvbmFsPFJUQ0ljZVByb3RvY29s
PiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnByb3RvY29sOyB9Ci0gICAgT3B0
aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy5wb3J0
OyB9Ci0gICAgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmllbGRzLnR5cGU7IH0KLSAgICBPcHRpb25hbDxSVENJY2VUY3BDYW5kaWRhdGVUeXBl
PiB0Y3BUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMudGNwVHlwZTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8UlRDSWNlUHJvdG9jb2w+IHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9maWVs
ZHMucHJvdG9jb2w7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maWVsZHMucG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNl
Q2FuZGlkYXRlVHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnR5cGU7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRjcFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2ZpZWxkcy50Y3BUeXBlOyB9CiAgICAgU3RyaW5nIHJlbGF0ZWRBZGRyZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRlZEFkZHJlc3M7IH0KLSAgICBPcHRpb25hbDx1
bnNpZ25lZCBzaG9ydD4gcmVsYXRlZFBvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy5yZWxh
dGVkUG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHJlbGF0ZWRQb3J0
KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRlZFBvcnQ7IH0KICAgICBTdHJpbmcgdXNl
cm5hbWVGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQ7
IH0KIAogICAgIFJUQ0ljZUNhbmRpZGF0ZUluaXQgdG9KU09OKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgUlRDSWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJp
bmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgsIEZpZWxk
cyYmKTsKKyAgICBSVENJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0
IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUlu
ZGV4LCBGaWVsZHMmJik7CiAKICAgICBTdHJpbmcgbV9jYW5kaWRhdGU7CiAgICAgU3RyaW5nIG1f
c2RwTWlkOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5kZXg7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbV9zZHBNTGluZUluZGV4OwogICAgIEZp
ZWxkcyBtX2ZpZWxkczsKIH07CiAKLU9wdGlvbmFsPFJUQ0ljZUNhbmRpZGF0ZTo6RmllbGRzPiBw
YXJzZUljZUNhbmRpZGF0ZVNEUChjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UlRDSWNl
Q2FuZGlkYXRlOjpGaWVsZHM+IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKaW5kZXggNTYwMzlkNmRk
YjEzMWY2YzQ4MzA3MDFmOGEzMzFjNGQ3YTAyMzgzNy4uNTE4NmFmYmVhNGYxZWUxMmUwZWNlMGUz
NTc2NGU0ZThhZmY2NWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJUQ0ljZUNhbmRpZGF0ZUluaXQgewogICAgIFN0cmlu
ZyBjYW5kaWRhdGU7CiAgICAgU3RyaW5nIHNkcE1pZDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBz
aG9ydD4gc2RwTUxpbmVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBz
ZHBNTGluZUluZGV4OwogICAgIFN0cmluZyB1c2VybmFtZUZyYWdtZW50OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcAppbmRleCBiZTU3YmQ5ZGZjYjI4MzI4ZGQwNzc0ODRhYjJhMzkwZGYzMTYyZGMxLi40
NjBjYWRhOWI2ZjYyZDc4MTljZjdjZTc5NGJkZDVmMGQwMzA1OGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dl
cihSVENBbnN3ZXJPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvCiAgICAgfSk7CiB9
CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVzY3JpcHRpb24oT3B0aW9uYWw8
RGVzY3JpcHRpb24+JiYgbG9jYWxEZXNjcmlwdGlvbiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6
Om9wdGlvbmFsPERlc2NyaXB0aW9uPiYmIGxvY2FsRGVzY3JpcHRpb24sIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAgICBwcm9t
aXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFJlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwZW5kaW5nUmVtb3Rl
RGVzY3JpcHRpb24oKSBjb25zCiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRp
ZGF0ZShDYW5kaWRhdGUmJiBydGNDYW5kaWRhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKLSAgICBPcHRpb25hbDxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+
IGNhbmRpZGF0ZTsKICAgICBpZiAocnRjQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbmRpZGF0ZSA9
IHN3aXRjaE9uKCpydGNDYW5kaWRhdGUsIFsmZXhjZXB0aW9uXShSVENJY2VDYW5kaWRhdGVJbml0
JiBpbml0KSAtPiBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNmU1
OGQ2ODA5NDA4OTQ5NGIxMDQ2ODI3MzEwYzRkMGNkNGIyYjM2NS4uM2VjOGQ3NGYzNTA3MmIwMmY0
Mzk1ODJhMjE5NGU0ZThlMWZhNjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtOTQsOSArOTQsOSBAQCBw
dWJsaWM6CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICBTdHJpbmcgaGFzaDsKICAgICAg
ICAgU3RyaW5nIG5hbWVkQ3VydmU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtb2R1bHVz
TGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtb2R1bHVzTGVuZ3RoOwog
ICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gcHVibGljRXhwb25lbnQ7Ci0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gZXhwaXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGV4cGly
ZXM7CiAgICAgfTsKIAogICAgIHVzaW5nIEFsZ29yaXRobUlkZW50aWZpZXIgPSBWYXJpYW50PEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+LCBTdHJpbmc+OwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwogCiAgICAgdXNpbmcgRGVzY3JpcHRpb24gPSBWYXJpYW50PFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbkluaXQsIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsKLSAg
ICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oT3B0aW9uYWw8RGVzY3JpcHRpb24+JiYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om9w
dGlvbmFsPERlc2NyaXB0aW9uPiYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudExvY2FsRGVzY3JpcHRpb24oKSBj
b25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nTG9jYWxEZXNj
cmlwdGlvbigpIGNvbnN0OwpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsK
ICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24oKSBjb25zdDsKIAotICAgIHVzaW5nIENhbmRpZGF0ZSA9IE9wdGlvbmFsPFZhcmlhbnQ8UlRD
SWNlQ2FuZGlkYXRlSW5pdCwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4+PjsKKyAgICB1c2luZyBD
YW5kaWRhdGUgPSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UlRDSWNlQ2FuZGlkYXRlSW5pdCwgUmVm
UHRyPFJUQ0ljZUNhbmRpZGF0ZT4+PjsKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZShDYW5kaWRh
dGUmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBSVENTaWduYWxpbmdTdGF0ZSBz
aWduYWxpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmFsaW5nU3RhdGU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b25JY2VFcnJvckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50LmNwcAppbmRleCAzZGNjYjdjYWIxNzM1Yjg2
NzRiMWM5YmJlNzE3OGNlZTliNTllNWNjLi5lNjY2NjhkMDFhZDg5MTc1YjZiZDNhZTc1MDVmYzIw
ZDgwYTI3ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudCk7CiAKLVJlZjxSVENQZWVy
Q29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudDo6
Y3JlYXRlKENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIFN0
cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVp
bnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KQorUmVmPFJUQ1BlZXJDb25uZWN0
aW9uSWNlRXJyb3JFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpjcmVhdGUo
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgU3RyaW5nJiYg
YWRkcmVzcywgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50
MTZfdCBlcnJvckNvZGUsIFN0cmluZyYmIGVycm9yVGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQoZXZlbnROYW1lcygpLmljZWNh
bmRpZGF0ZWVycm9yRXZlbnQsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBXVEZNb3ZlKGFkZHJl
c3MpLCBwb3J0LCBXVEZNb3ZlKHVybCksIGVycm9yQ29kZSwgV1RGTW92ZShlcnJvclRleHQpKSk7
CiB9CkBAIC00Niw3ICs0Niw3IEBAIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQ+
IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0CiAgICAgICAgIGlu
aXQuY2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVzIDogSXNDYW5jZWxhYmxlOjpObywgV1RG
TW92ZShpbml0LmFkZHJlc3MpLCBpbml0LnBvcnQsIFdURk1vdmUoaW5pdC51cmwpLCBXVEZNb3Zl
KGluaXQuZXJyb3JDb2RlKSwgV1RGTW92ZShpbml0LmVycm9yVGV4dCkpKTsKIH0KIAotUlRDUGVl
ckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBT
dHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KQorUlRD
UGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IHBvcnQsIFN0cmluZyYmIHVybCwgdWludDE2X3QgZXJyb3JDb2RlLCBTdHJpbmcmJiBlcnJvclRl
eHQpCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2Fk
ZHJlc3MoV1RGTW92ZShhZGRyZXNzKSkKICAgICAsIG1fcG9ydChwb3J0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUVy
cm9yRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb25JY2VFcnJvckV2ZW50LmgKaW5kZXggNDIyMTNkZDljYWRkMjFhODc3N2U1MDdmOTZk
N2VkMDcyNzhkZTQxMy4uMGE1ODZiYjQ5Njk1YjFkMjRhNzUwMDE0NjY5NjRmNGQ4NTNkODZmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkljZUVycm9yRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5oCkBAIC00MSwxNyArNDEsMTcg
QEAgcHVibGljOgogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAgICAgICBTdHJp
bmcgYWRkcmVzczsKLSAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAg
IHVpbnQxNl90IGVycm9yQ29kZSB7IDAgfTsKICAgICAgICAgU3RyaW5nIGVycm9yVGV4dDsKICAg
ICB9OwogCiAgICAgc3RhdGljIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYpOwotICAgIHN0YXRpYyBSZWY8UlRD
UGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50PiBjcmVhdGUoQ2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUsIFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1
cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KTsKKyAgICBzdGF0aWMg
UmVmPFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudD4gY3JlYXRlKENhbkJ1YmJsZSwgSXND
YW5jZWxhYmxlLCBTdHJpbmcmJiBhZGRyZXNzLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
LCBTdHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KTsK
IAogICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzczsg
fQotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9y
dDsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICB1aW50MTZfdCBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAg
IGNvbnN0IFN0cmluZyYgZXJyb3JUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclRleHQ7IH0K
QEAgLTU5LDEwICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0aW9u
SWNlRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSwgU3RyaW5nJiYgYWRkcmVzcywgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIFN0cmluZyYm
IHVybCwgdWludDE2X3QgZXJyb3JDb2RlLCBTdHJpbmcmJiBlcnJvclRleHQpOworICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRkcmVzcywgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50MTZfdCBlcnJvckNvZGUsIFN0cmluZyYmIGVycm9y
VGV4dCk7CiAKICAgICBTdHJpbmcgbV9hZGRyZXNzOwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBt
X3BvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OwogICAgIFN0cmluZyBt
X3VybDsKICAgICB1aW50MTZfdCBtX2Vycm9yQ29kZSB7IDAgfTsKICAgICBTdHJpbmcgbV9lcnJv
clRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0Y3BQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0Y3BQYXJhbWV0ZXJzLmgKaW5kZXggNjVlODJjYzM0ZGFhMTUyNWJkNDg5MDlhZmY1Mjc1ZTAx
ZDlkMjY2NC4uN2U4YzFkMTI5NzY1NTJlOTFmZDE2MWU1NWQyNzFjYjcwZTVlNzUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdGNwUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRjcFBhcmFt
ZXRlcnMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBS
VENSdGNwUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGNuYW1lOwotICAgIE9wdGlvbmFsPGJvb2w+
IHJlZHVjZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVkdWNlZFNpemU7CiB9Owog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
Q29udHJpYnV0aW5nU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cENvbnRyaWJ1dGluZ1NvdXJjZS5oCmluZGV4IDQwNjY5MjNiNjkyNzJjZWY3OWQ1MWRk
OTIyZjAyOTQwMWQyNDA2YjguLmFjNzNiYWI5NmExMDU2ZmE3NjgzMDdiYjQwMWU0MGM2MzczZjkw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
Q29udHJpYnV0aW5nU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBDb250cmlidXRpbmdTb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3Qg
UlRDUnRwQ29udHJpYnV0aW5nU291cmNlIHsKICAgICBkb3VibGUgdGltZXN0YW1wOwogICAgIHVu
c2lnbmVkIGxvbmcgcnRwVGltZXN0YW1wOwogICAgIHVuc2lnbmVkIGxvbmcgc291cmNlOwotICAg
IE9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YXVkaW9MZXZlbDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKaW5kZXggZjhjOTA5
ZGRiYWU3M2FmNzlkMjgwNzdlNWI3ZjU0NDNkMWE2MDhkYi4uNTc0ZTAzNTJhMjEyNTg2ZDY1M2U5
OTcwZjVkMWNlMjMwOTNiNDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCkBAIC0zOSwx
MCArMzksMTAgQEAgc3RydWN0IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyA6IFJUQ1J0cENvZGlu
Z1BhcmFtZXRlcnMgewogICAgIHVuc2lnbmVkIGxvbmcgc3NyYyB7IDAgfTsKICAgICBSVENSdHBS
dHhQYXJhbWV0ZXJzIHJ0eDsKICAgICBSVENSdHBGZWNQYXJhbWV0ZXJzIGZlYzsKLSAgICBPcHRp
b25hbDxSVENEdHhTdGF0dXM+IGR0eDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ0R0eFN0YXR1cz4g
ZHR4OwogICAgIGJvb2wgYWN0aXZlIHsgZmFsc2V9OwogICAgIFJUQ1ByaW9yaXR5VHlwZSBwcmlv
cml0eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07Ci0gICAgT3B0aW9uYWw8UlRDUHJpb3JpdHlU
eXBlPiBuZXR3b3JrUHJpb3JpdHk7CisgICAgc3RkOjpvcHRpb25hbDxSVENQcmlvcml0eVR5cGU+
IG5ldHdvcmtQcmlvcml0eTsKICAgICB1bnNpZ25lZCBsb25nIG1heEJpdHJhdGUgeyAwIH07CiAg
ICAgdW5zaWduZWQgbG9uZyBtYXhGcmFtZXJhdGUgeyAwIH07CiAgICAgZG91YmxlIHNjYWxlUmVz
b2x1dGlvbkRvd25CeSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggOWEwMzg1ZDNiNDUzOWM0MDUwZjc2
ZTkwOGY5NjgzYWRlMjViNTNkYy4uZDVjNTRjMGM0OTlmYmEzYTE4YTNiMzUyNjZlYzk5ZDhmYmI4
MjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSVENSdHBSZWNlaXZlcjo6
Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1fY29ubmVjdGlv
bi0+Z2V0U3RhdHMoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi1PcHRpb25hbDxSVENS
dHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQorc3RkOjpvcHRpb25h
bDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQogewogICAg
IHJldHVybiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRl
eHQsIGtpbmQpOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0
cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4m
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gUlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSgpCitzdGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5z
Zm9ybTo6SW50ZXJuYWw+IFJUQ1J0cFJlY2VpdmVyOjp0cmFuc2Zvcm0oKQogewogICAgIGlmICgh
bV90cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKaW5kZXggYjlkOTk2OTFkNjM4
YWQ4YjVhMWRkNzE3YWI0MTQ1ODBhNDI5NWQwMC4uZDgzODdlZjQzOGJhZGJhZjg4OGIwOGVjZjNl
ZDI0N2I0OGIxZGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwUmVjZWl2ZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIH5SVENSdHBSZWNlaXZlcigpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cENhcGFi
aWxpdGllcz4gZ2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBT
dHJpbmcmIGtpbmQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGll
cz4gZ2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
IGtpbmQpOwogCiAgICAgdm9pZCBzdG9wKCk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5n
ZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAg
ICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybSgpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJh
bnNmb3JtPiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oCmlu
ZGV4IDgxNmNhNzljOWQzYjcwYjI3OTRlYjk2YjgyN2NmYTUyOTMzNjkzNzcuLjQwZDI4ZDMzNjQz
YjE5MTE3NDA2YTk0NzQxYzNiYzhjNDVkNDJjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFu
c2Zvcm0uaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm07CiAKIGNsYXNz
IFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShSVENSdHBSZWNlaXZlciYg
cmVjZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIsIE9w
dGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBy
ZWNlaXZlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1vdmUodHJhbnNm
b3JtKSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRl
cm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2
ZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNm
b3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zv
cm06OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNmb3Jt
KFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IDJjNjczZmY0
ZWVhZTM2MTU4MTc2MjYxMWRhNmM2MWY3ZTE2NTU0ODAuLjQwOWYzNTc0Zjc5YWZiNmJjOGZkZjYw
ZDM1MzU0NzJlZTk0MzcyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCkKIHsK
IH0KIAotdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkoQ3J5cHRv
S2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9u
S2V5KENyeXB0b0tleSYga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvIGFsZ29yaXRobSA9IGtl
eS5hbGdvcml0aG0oKTsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5
QWxnb3JpdGhtPihhbGdvcml0aG0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRleCAzMWUxNDZk
ZjExZmY4NzJmMjZjYjlmODExOWIyZmU5OWJmMjJjNWY4Li42Yjc4YmJmNWM2NWQyYzU3ZmVmYmM2
OTg0YjA4Mjg4YmNiOGVmZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9ucyBvcHRpb25zKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybShjb250ZXh0LCBvcHRpb25zKSk7
IH0KICAgICB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CiAKLSAgICB2b2lkIHNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiwgT3B0aW9uYWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJik7CisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBib29s
IGlzQXR0YWNoZWQoKSBjb25zdDsKICAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2
ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApp
bmRleCBmNjlmMTg5NThhMTA0MjRmYWRjYTllYTZmZDY2MzY2NTJhZThkMjYyLi42MDMwMGRlY2Qz
ZTkyNDEyMjQyN2FlY2E5ZTliZTgyOTcwYmY1MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdCBTRnJhbWVIZWFkZXJJbmZvIHsKICAgICB1
aW50NjRfdCBrZXlJZDsKICAgICB1aW50NjRfdCBjb3VudGVyOwogfTsKLXN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U0ZyYW1l
SGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiB7CiAgICAgYXV0byogc3RhcnQgPSBkYXRhOwogCkBAIC0xNTQsMTMgKzE1NCwxMyBA
QCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKIHsK
IH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5
cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90
PiBrZXlJZCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRF
bmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBrZXlJZCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9rZXlMb2NrIH07CiAg
ICAgcmV0dXJuIHVwZGF0ZUVuY3J5cHRpb25LZXkocmF3S2V5LCBrZXlJZCwgU2hvdWxkVXBkYXRl
S2V5czo6WWVzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9w
dGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5cyBzaG91bGRVcGRhdGVLZXlz
KQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnVwZGF0ZUVuY3J5
cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGtleUlkLCBTaG91bGRVcGRhdGVLZXlzIHNob3VsZFVwZGF0ZUtleXMpCiB7CiAgICAg
QVNTRVJUKG1fa2V5TG9jay5pc0xvY2tlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCmlu
ZGV4IGRjNzQ5ZjQ1NWI4YmI5YzRjNWIxZWM0MTMyMDJjNzM5N2RjMjU5MzIuLjE5ODg0OTVhYTlk
NjRlMDM1MDlhMmUxYzllMzVmNjJiODdkNTdjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25TaXpl
KHVpbnQ2NF90KTsKICAgICB2b2lkIHNldE1lZGlhVHlwZShSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
OjpNZWRpYVR5cGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
RW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSwgT3B0aW9uYWw8dWlu
dDY0X3Q+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRFbmNyeXB0
aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90Pik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0
cmFuc2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlv
bktleTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRVcGRhdGVLZXlzIHsgTm8sIFllcyB9OwotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXks
IE9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6
OlllcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2NrKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiB1cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6
OlllcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2NrKTsKIAogICAgIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gY29tcHV0ZVNhbHRLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAg
ICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlQXV0aGVudGljYXRpb25LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5kZXggZjg5MzI5Mzc3NjQ4NTA0YmM4MjQ5
ODZiMzMyODczNzIzNjQwODdmZC4uYTk2ZTRjYTc1YmU2NzQ5NGJiZTdlOTMwODI5ZWYxNmY1MzBi
MGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUlRDUnRwU2VuZGVyOjppc0Ny
ZWF0ZWRCeShjb25zdCBSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikgY29uc3QKICAgICBy
ZXR1cm4gJmNvbm5lY3Rpb24gPT0gbV9jb25uZWN0aW9uLmdldCgpOwogfQogCi1PcHRpb25hbDxS
VENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFNlbmRlcjo6Z2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9u
YWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBSVENSdHBTZW5kZXI6OmdldENhcGFiaWxpdGllcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAg
cmV0dXJuIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnRleHQs
IGtpbmQpOwogfQpAQCAtMjA0LDcgKzIwNCw3IEBAIFJUQ0RUTUZTZW5kZXIqIFJUQ1J0cFNlbmRl
cjo6ZHRtZigpCiAgICAgcmV0dXJuIG1fZHRtZlNlbmRlci5nZXQoKTsKIH0KIAotT3B0aW9uYWw8
UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5zY2Vp
dmVyRGlyZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJl
Y3Rpb24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5zY2VpdmVyRGlyZWN0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI0Niw3
ICsyNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybShz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiYmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
T3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwU2VuZGVyOjp0cmFuc2Zv
cm0oKQorc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiBSVENSdHBTZW5k
ZXI6OnRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5oCmluZGV4IDUyYWJmM2QxOWUzOTZlZWM4NzU2ODczNzAwZWY1MzhiYTQyMTU5NWIuLmJm
Mjc3Y2FmNWExYzkxYzkzMDdhY2Y5ODM2YTE2NzZhODA2MWQ4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSVENQZWVy
Q29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNl
bmRlckJhY2tlbmQ+JiYpOwogICAgIH5SVENSdHBTZW5kZXIoKTsKIAotICAgIHN0YXRpYyBPcHRp
b25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IGdldENhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
VENSdHBDYXBhYmlsaXRpZXM+IGdldENhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkg
eyByZXR1cm4gbV90cmFjay5nZXQoKTsgfQogCkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQ3JlYXRlZEJ5KGNvbnN0IFJUQ1BlZXJDb25uZWN0aW9uJikgY29uc3Q7CiAKICAg
ICBSVENEVE1GU2VuZGVyKiBkdG1mKCk7Ci0gICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJE
aXJlY3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVjdGlvbigpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRp
cmVjdGlvbigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gdHJhbnNmb3JtKCk7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVy
bmFsPiB0cmFuc2Zvcm0oKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFu
c2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
V2l0aFRyYW5zZm9ybS5oCmluZGV4IDQ2ZDM3YTc3MzZmMTZkYzA3OTViOTVkNDA1OGVhYTk0M2Zk
YTZiNzcuLmQ0YmUxYjRlNjk4NDA0Mjc4YjhjZThlYjY0YzVlZTNjNDMzNzY2ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2VuZGVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5z
Zm9ybTsKIAogY2xhc3MgUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShSVENS
dHBTZW5kZXImIHNlbmRlcikgeyByZXR1cm4gc2VuZGVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBTZW5kZXImIHNlbmRlciwg
T3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJu
IHNlbmRlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1vdmUodHJhbnNm
b3JtKSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRl
cm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJldHVybiBzZW5kZXIudHJh
bnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJU
Q1J0cFNlbmRlciYgc2VuZGVyLCBzdGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJu
YWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJhbnNmb3JtKFJUQ1J0cFRyYW5z
Zm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmgKaW5kZXggNTcyYWU4NTk4NTg3
YmEwNWVjYTE4OThiYzQ3MDUwNmNkMGI1MDEzMy4uN2YzMzgxNmE3NWZkMWRjMzBjNmY0ODc3ZDk1
Njg0MmVhZjA2Y2UzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5oCkBAIC0zMiw3
ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSVENSdHBTeW5jaHJvbml6
YXRpb25Tb3VyY2UgOiBSVENSdHBDb250cmlidXRpbmdTb3VyY2UgewotICAgIE9wdGlvbmFsPGJv
b2w+IHZvaWNlQWN0aXZpdHlGbGFnOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rp
dml0eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCmlu
ZGV4IDM2NzZhYjQ1YzJkNjk0ZjVmNjllYmY4MGRmOTllN2MwNmMyY2JmZDkuLmMyZGZkY2UzNTcy
ZjNlOTUxMDVlZjIwZWU0ZDFlNzFlM2JkMDBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJUQ1J0cFRyYW5zY2VpdmVyOjpk
aXJlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPmRpcmVjdGlvbigpOwogfQog
Ci1PcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6
OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAog
ewogICAgIGlmICghbV9iYWNrZW5kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Nl
aXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Nl
aXZlci5oCmluZGV4IDRjMWQ0MDQ4MzUzYjRmNjVhNWVhZDJiMTc0MDg2MTcwNTNjMjdjNmEuLmE1
MWRiNjIwMWM4NGQ0YTQ2YzllZmQ5NjA5YTRmZjkzNzVjMjhlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24o
KTsKIAogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0Owot
ICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50RGlyZWN0aW9u
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4g
Y3VycmVudERpcmVjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uKTsKICAgICBTdHJpbmcgbWlkKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5z
Y2VpdmVyQmFja2VuZC5oCmluZGV4IDNjNWZiMTVmYzFhNzY0ZGUyYmUyN2EwMDcwZDk0YzcwNzQy
ZjNlMzMuLjRiZjUwZmMxZWZmZDhkNzA1ZDY0NDdjMTcyZmU5NDBjZTU5MDEzODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBS
VENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlv
bigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2
ZXJEaXJlY3Rpb24+IGN1cnJlbnREaXJlY3Rpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldERpcmVjdGlvbihSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbikgPSAwOwogCiAgICAg
dmlydHVhbCBTdHJpbmcgbWlkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IDljYWViOTZmY2IyODYy
ODhlNWZjMWEwZThkZDRlNjhmYTc4NTUwYmUuLmRhZjg5N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZm
NjZmYTYxNzc1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiBSVENSdHBUcmFu
c2Zvcm06OmZyb20oT3B0aW9uYWw8SW50ZXJuYWw+JiYgaW50ZXJuYWwpCitzdGQ6OnVuaXF1ZV9w
dHI8UlRDUnRwVHJhbnNmb3JtPiBSVENSdHBUcmFuc2Zvcm06OmZyb20oc3RkOjpvcHRpb25hbDxJ
bnRlcm5hbD4mJiBpbnRlcm5hbCkKIHsKICAgICBpZiAoIWludGVybmFsKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5oCmluZGV4IDI0ZjJkYjAzYmE5NzkwMWFhMmYxMDFiOWQxMjk4Mzlk
N2E1YmUzZGYuLjFhNzk1OGI1MDc4MjJhNDE5ZDk0YTc5YTM0ZmMwMjE0Njk3ZmZiZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3Jt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm0uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm0gIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBJbnRlcm5hbCA9IFZhcmlh
bnQ8UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIFJlZlB0cjxSVENSdHBTY3JpcHRUcmFu
c2Zvcm0+PjsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4gZnJv
bShPcHRpb25hbDxJbnRlcm5hbD4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSVENS
dHBUcmFuc2Zvcm0+IGZyb20oc3RkOjpvcHRpb25hbDxJbnRlcm5hbD4mJik7CiAKICAgICBleHBs
aWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwmJik7CiAgICAgflJUQ1J0cFRyYW5zZm9ybSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKaW5kZXggMDM5MTM5MzllYmM5MTQ4MmZjYTlhMGM3
ZmY0MjVjMDZkMTFlYzc0Ni4uZWMwZDlhMjZiZTQ0NDFjOGQ2Y2JjMTQ0NTk1MmNjM2ZmMzVkNGM3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0
IFJUQ0VuY29kZWRBdWRpb0ZyYW1lTWV0YWRhdGEgewogfTsKIAogc3RydWN0IFJUQ0VuY29kZWRW
aWRlb0ZyYW1lTWV0YWRhdGEgewotICAgIE9wdGlvbmFsPGludDY0X3Q+IGZyYW1lSWQ7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBmcmFtZUlkOwogICAgIFZlY3RvcjxpbnQ2NF90PiBkZXBl
bmRlbmNpZXM7CiAgICAgdWludDE2X3Qgd2lkdGg7CiAgICAgdWludDE2X3QgaGVpZ2h0OwotICAg
IE9wdGlvbmFsPGludDMyX3Q+IHNwYXRpYWxJbmRleDsKLSAgICBPcHRpb25hbDxpbnQzMl90PiB0
ZW1wb3JhbEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gc3BhdGlhbEluZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gdGVtcG9yYWxJbmRleDsKICAgICB1aW50MzJfdCBz
eW5jaHJvbml6YXRpb25Tb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKaW5kZXggZjMxOWUzZTM5N2JkNmU4OGIw
NDYxMWE0ZmNiZTViNGIwNDI0MjljNS4uMTI1NGI5MzY3NGY3NTRhM2I5MGQ5NDU0ZTZlMzE1ODcx
NDQ2OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENTdGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU3RhdHNSZXBvcnQuaApAQCAtNjksMjIgKzY5LDIyIEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgc3RydWN0IFJlY2VpdmVkUnRwU3RyZWFtU3RhdHMgOiBSdHBTdHJlYW1TdGF0cyB7Ci0gICAg
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFs
PGludDY0X3Q+IHBhY2tldHNMb3N0OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGppdHRlcjsK
LSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tldHNEaXNjYXJkZWQ7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVwYWlyZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBidXJzdFBhY2tldHNMb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYnVyc3RQ
YWNrZXRzRGlzY2FyZGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gYnVyc3RMb3NzQ291
bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBidXJzdERpc2NhcmRDb3VudDsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBidXJzdExvc3NSYXRlOwotICAgICAgICBPcHRpb25hbDxkb3Vi
bGU+IGJ1cnN0RGlzY2FyZFJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FwTG9zc1Jh
dGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FwRGlzY2FyZFJhdGU7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gcGFydGlhbEZyYW1lc0xvc3Q7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdWxsRnJh
bWVzTG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFja2V0c1JlY2VpdmVk
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhY2tldHNMb3N0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gaml0dGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWNrZXRzRGlzY2FyZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWNrZXRzUmVwYWlyZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ1cnN0UGFj
a2V0c0xvc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ1cnN0UGFja2V0c0Rp
c2NhcmRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnVyc3RMb3NzQ291bnQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGJ1cnN0RGlzY2FyZENvdW50OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYnVyc3RMb3NzUmF0ZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGJ1cnN0RGlzY2FyZFJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBnYXBMb3NzUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhcERp
c2NhcmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVk
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJ0aWFsRnJhbWVzTG9zdDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnVsbEZyYW1lc0xvc3Q7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBJbmJvdW5kUnRwU3RyZWFtU3RhdHMgOiBSZWNlaXZlZFJ0cFN0cmVhbVN0YXRz
IHsKQEAgLTkyLDQ0ICs5Miw0NCBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHJlY2VpdmVy
SWQ7CiAgICAgICAgIFN0cmluZyByZW1vdGVJZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IGZyYW1lc0RlY29kZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBrZXlGcmFtZXNEZWNv
ZGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVXaWR0aDsKLSAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGZyYW1lSGVpZ2h0OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZnJhbWVCaXREZXB0aDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1bTsKLSAgICAgICAgT3B0aW9uYWw8ZG91
YmxlPiB0b3RhbERlY29kZVRpbWU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxJbnRl
ckZyYW1lRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxTcXVhcmVkSW50ZXJG
cmFtZURlbGF5OwotICAgICAgICBPcHRpb25hbDxib29sPiAgdm9pY2VBY3Rpdml0eUZsYWc7Ci0g
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wOwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Ci0gICAgICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBoZWFkZXJCeXRlc1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gZmVjUGFja2V0c1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmVj
UGFja2V0c0Rpc2NhcmRlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2
ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzRmFpbGVkRGVjcnlwdGlvbjsK
LSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tldHNEdXBsaWNhdGVkOwotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gbmFja0NvdW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZmlyQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBwbGlDb3VudDsKLSAgICAgICAg
T3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGVz
dGltYXRlZFBsYXlvdXRUaW1lc3RhbXA7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gaml0dGVy
QnVmZmVyRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZmZXJFbWl0
dGVkQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0b3RhbFNhbXBsZXNSZWNlaXZl
ZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNEZWNvZGVkV2l0aFNpbGs7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVzRGVjb2RlZFdpdGhDZWx0OwotICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gY29uY2VhbGVkU2FtcGxlczsKLSAgICAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IHNpbGVudENvbmNlYWxlZFNhbXBsZXM7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBjb25jZWFsbWVudEV2ZW50czsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGluc2Vy
dGVkU2FtcGxlc0ZvckRlY2VsZXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHJl
bW92ZWRTYW1wbGVzRm9yQWNjZWxlcmF0aW9uOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF1
ZGlvTGV2ZWw7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxBdWRpb0VuZXJneTsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBmcmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBr
ZXlGcmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZVdp
ZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVCaXREZXB0aDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcXBTdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbERlY29k
ZVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEludGVyRnJhbWVEZWxh
eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsU3F1YXJlZEludGVyRnJhbWVE
ZWxheTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiAgdm9pY2VBY3Rpdml0eUZsYWc7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdmVyYWdlUnRjcEludGVydmFsOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJCeXRlc1JlY2VpdmVkOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmZWNQYWNrZXRzUmVjZWl2ZWQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZlY1BhY2tldHNEaXNjYXJkZWQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhY2tldHNGYWlsZWREZWNyeXB0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWNrZXRzRHVwbGljYXRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gbmFja0NvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3Vu
dDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGxpQ291bnQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGppdHRlckJ1ZmZlckRlbGF5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHRvdGFsU2FtcGxlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBzYW1wbGVzRGVjb2RlZFdpdGhTaWxrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBzYW1wbGVzRGVjb2RlZFdpdGhDZWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBjb25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzaWxl
bnRDb25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25j
ZWFsbWVudEV2ZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaW5zZXJ0ZWRT
YW1wbGVzRm9yRGVjZWxlcmF0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBy
ZW1vdmVkU2FtcGxlc0ZvckFjY2VsZXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGF1ZGlvTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEF1ZGlv
RW5lcmd5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxTYW1wbGVzRHVyYXRp
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOwogCiAg
ICAgICAgIFN0cmluZyB0cmFja0lkOwogICAgIH07CkBAIC0xMzgsNjAgKzEzOCw2MCBAQCBwdWJs
aWM6CiAgICAgICAgIFJlbW90ZUluYm91bmRSdHBTdHJlYW1TdGF0cygpIHsgdHlwZSA9IFJUQ1N0
YXRzUmVwb3J0OjpUeXBlOjpSZW1vdGVJbmJvdW5kUnRwOyB9CiAKICAgICAgICAgU3RyaW5nIGxv
Y2FsSWQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gcm91bmRUcmlwVGltZTsKLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiB0b3RhbFJvdW5kVHJpcFRpbWU7Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gZnJhY3Rpb25Mb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVwb3J0c1Jl
Y2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcm91bmRUcmlwVGltZU1lYXN1cmVt
ZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJvdW5kVHJpcFRpbWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFJvdW5kVHJpcFRpbWU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFjdGlvbkxvc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHJlcG9ydHNSZWNlaXZlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcm91bmRUcmlwVGltZU1lYXN1cmVtZW50czsKICAgICB9OwogCiAgICAgc3RydWN0IFNlbnRS
dHBTdHJlYW1TdGF0cyA6IFJ0cFN0cmVhbVN0YXRzIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IHBhY2tldHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYWNrZXRzU2VudDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OwogICAgIH07CiAKICAgICBzdHJ1Y3QgT3V0
Ym91bmRSdHBTdHJlYW1TdGF0cyA6IFNlbnRSdHBTdHJlYW1TdGF0cyB7CiAgICAgICAgIE91dGJv
dW5kUnRwU3RyZWFtU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6T3V0Ym91
bmRSdHA7IH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcnR4U3NyYzsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcnR4U3NyYzsKICAgICAgICAgU3RyaW5nIG1lZGlhU291
cmNlSWQ7CiAgICAgICAgIFN0cmluZyBzZW5kZXJJZDsKICAgICAgICAgU3RyaW5nIHJlbW90ZUlk
OwogICAgICAgICBTdHJpbmcgcmlkOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGxhc3RQYWNr
ZXRTZW50VGltZXN0YW1wOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNT
ZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcGFja2V0c0Rpc2NhcmRlZE9uU2VuZDsK
LSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzRGlzY2FyZGVkT25TZW5kOwotICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gZmVjUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiByZXRyYW5zbWl0dGVkUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHRh
cmdldEJpdHJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0b3RhbEVuY29kZWRCeXRl
c1RhcmdldDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lV2lkdGg7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGZyYW1lQml0RGVwdGg7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVzUGVyU2Vj
b25kOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzU2VudDsKLSAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGh1Z2VGcmFtZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gZnJhbWVzRW5jb2RlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGtleUZyYW1lc0Vu
Y29kZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEaXNjYXJkZWRPblNlbmQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1bTsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1w
bGVzRW5jb2RlZFdpdGhTaWxrOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2FtcGxlc0Vu
Y29kZWRXaXRoQ2VsdDsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxFbmNvZGVUaW1lOwotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IHRvdGFsUGFja2V0U2VuZERlbGF5OwotICAgICAgICBPcHRpb25hbDxkb3Vi
bGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Ci0gICAgICAgIC8vIE9wdGlvbmFsPFJUQ1F1YWxpdHlM
aW1pdGF0aW9uUmVhc29uIHF1YWxpdHlMaW1pdGF0aW9uUmVhc29uOwotICAgICAgICAvLyBPcHRp
b25hbDxyZWNvcmQ8RE9NU3RyaW5nLCBkb3VibGU+IHF1YWxpdHlMaW1pdGF0aW9uRHVyYXRpb25z
OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcXVhbGl0eUxpbWl0YXRpb25SZXNvbHV0aW9u
Q2hhbmdlczsKLSAgICAgICAgLy8gT3B0aW9uYWw8cmVjb3JkPFVTVlN0cmluZywgdW5zaWduZWQg
bG9uZyBsb25nPiBwZXJEc2NwUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBuYWNrQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKLSAgICAg
ICAgT3B0aW9uYWw8dWludDMyX3Q+IHBsaUNvdW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gc2xpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsYXN0UGFja2V0U2Vu
dFRpbWVzdGFtcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNT
ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYWNrZXRzRGlzY2FyZGVkT25T
ZW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRlc0Rpc2NhcmRlZE9uU2Vu
ZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZmVjUGFja2V0c1NlbnQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJldHJhbnNtaXR0ZWRQYWNrZXRzU2VudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmV0cmFuc21pdHRlZEJ5dGVzU2VudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRhcmdldEJpdHJhdGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZVdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBmcmFtZUhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJh
bWVCaXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lc1BlclNlY29u
ZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzU2VudDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaHVnZUZyYW1lc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGZyYW1lc0VuY29kZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGtleUZyYW1lc0VuY29kZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGZyYW1lc0Rpc2NhcmRlZE9uU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cXBTdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNFbmNvZGVkV2l0aFNpbGs7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNFbmNvZGVkV2l0aENlbHQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEVuY29kZVRpbWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB0b3RhbFBhY2tldFNlbmREZWxheTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7CisgICAgICAgIC8vIHN0ZDo6b3B0aW9uYWw8
UlRDUXVhbGl0eUxpbWl0YXRpb25SZWFzb24gcXVhbGl0eUxpbWl0YXRpb25SZWFzb247CisgICAg
ICAgIC8vIHN0ZDo6b3B0aW9uYWw8cmVjb3JkPERPTVN0cmluZywgZG91YmxlPiBxdWFsaXR5TGlt
aXRhdGlvbkR1cmF0aW9uczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcXVhbGl0
eUxpbWl0YXRpb25SZXNvbHV0aW9uQ2hhbmdlczsKKyAgICAgICAgLy8gc3RkOjpvcHRpb25hbDxy
ZWNvcmQ8VVNWU3RyaW5nLCB1bnNpZ25lZCBsb25nIGxvbmc+IHBlckRzY3BQYWNrZXRzU2VudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbmFja0NvdW50OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gcGxpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50
OwogICAgICAgICAvLyBET01TdHJpbmcgZW5jb2RlckltcGxlbWVudGF0aW9uOwogCiAgICAgICAg
IFN0cmluZyB0cmFja0lkOwpAQCAtMjAxLDMxICsyMDEsMzEgQEAgcHVibGljOgogICAgICAgICBN
ZWRpYVN0cmVhbVRyYWNrU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6VHJh
Y2s7IH0KIAogICAgICAgICBTdHJpbmcgdHJhY2tJZGVudGlmaWVyOwotICAgICAgICBPcHRpb25h
bDxib29sPiByZW1vdGVTb3VyY2U7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuZGVkOwotICAg
ICAgICBPcHRpb25hbDxib29sPiBkZXRhY2hlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IGZyYW1lV2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQzMl90PiBmcmFtZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVz
UmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEZWNvZGVkOwotICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzRHJvcHBlZDsKLSAgICAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IGZyYW1lc0NvcnJ1cHRlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBh
cnRpYWxGcmFtZXNMb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnVsbEZyYW1lc0xv
c3Q7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKLSAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hv
UmV0dXJuTG9zc0VuaGFuY2VtZW50OwotCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmVl
emVDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBhdXNlQ291bnQ7Ci0gICAgICAg
IE9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmVlemVzRHVyYXRpb247Ci0gICAgICAgIE9wdGlvbmFs
PGRvdWJsZT4gdG90YWxQYXVzZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0
b3RhbEZyYW1lc0R1cmF0aW9uOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHN1bU9mU3F1YXJl
ZEZyYW1lc0R1cmF0aW9uOwotCi0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZm
ZXJGbHVzaGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlbW90ZVNvdXJjZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBkZXRhY2hlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVXaWR0
aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVIZWlnaHQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGZyYW1lc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGZyYW1lc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFt
ZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVk
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNDb3JydXB0ZWQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnRpYWxGcmFtZXNMb3N0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmdWxsRnJhbWVzTG9zdDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBl
Y2hvUmV0dXJuTG9zczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGVjaG9SZXR1cm5M
b3NzRW5oYW5jZW1lbnQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJlZXpl
Q291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhdXNlQ291bnQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyZWV6ZXNEdXJhdGlvbjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUGF1c2VzRHVyYXRpb247CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyYW1lc0R1cmF0aW9uOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gc3VtT2ZTcXVhcmVkRnJhbWVzRHVyYXRpb247CisKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gaml0dGVyQnVmZmVyRmx1c2hlczsKICAgICB9OwogCiAgICAgc3Ry
dWN0IERhdGFDaGFubmVsU3RhdHMgOiBTdGF0cyB7CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGFiZWw7CiAgICAgICAgIFN0cmluZyBwcm90
b2NvbDsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBkYXRhY2hhbm5lbGlkOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGludD4gZGF0YWNoYW5uZWxpZDsKICAgICAgICAgU3RyaW5nIHN0YXRlOwotICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWVzc2FnZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gYnl0ZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWVzc2FnZXNS
ZWNlaXZlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1lc3NhZ2VzU2VudDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBtZXNzYWdlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBi
eXRlc1JlY2VpdmVkOwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIEljZUNhbmRpZGF0ZVBhaXJT
dGF0ZSB7CkBAIC0yNTcsMzUgKzI1NywzNSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBsb2Nh
bENhbmRpZGF0ZUlkOwogICAgICAgICBTdHJpbmcgcmVtb3RlQ2FuZGlkYXRlSWQ7CiAgICAgICAg
IEljZUNhbmRpZGF0ZVBhaXJTdGF0ZSBzdGF0ZTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IHByaW9yaXR5OwotICAgICAgICBPcHRpb25hbDxib29sPiBub21pbmF0ZWQ7Ci0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IHdyaXRhYmxlOwotICAgICAgICBPcHRpb25hbDxib29sPiByZWFkYWJsZTsK
LSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKLSAgICAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxS
b3VuZFRyaXBUaW1lOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRSb3VuZFRyaXBU
aW1lOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF2YWlsYWJsZU91dGdvaW5nQml0cmF0ZTsK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGU7Ci0gICAg
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0c1JlY2VpdmVkOwotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gcmVxdWVzdHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVz
cG9uc2VzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXNwb25zZXNTZW50
OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmV0cmFuc21pc3Npb25zUmVjZWl2ZWQ7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWlzc2lvbnNTZW50OwotICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlcXVlc3RzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBjb25zZW50UmVxdWVzdHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gY29uc2VudFJlc3BvbnNlc1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gY29uc2VudFJlc3BvbnNlc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHByaW9yaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5vbWluYXRlZDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiByZWFkYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRlc1JlY2VpdmVkOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxSb3VuZFRyaXBUaW1lOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFJvdW5kVHJpcFRpbWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVPdXRnb2luZ0JpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHJlcXVlc3RzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHJlcXVlc3RzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cmVzcG9uc2VzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlc3Bv
bnNlc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJldHJhbnNtaXNzaW9u
c1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWlzc2lv
bnNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25zZW50UmVxdWVzdHNS
ZWNlaXZlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlcXVlc3Rz
U2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlc3BvbnNlc1Jl
Y2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25zZW50UmVzcG9uc2Vz
U2VudDsKICAgICB9OwogCiAgICAgc3RydWN0IEljZUNhbmRpZGF0ZVN0YXRzIDogU3RhdHMgewog
ICAgICAgICBTdHJpbmcgdHJhbnNwb3J0SWQ7CiAgICAgICAgIFN0cmluZyBhZGRyZXNzOwotICAg
ICAgICBPcHRpb25hbDxpbnQzMl90PiBwb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IHBvcnQ7CiAgICAgICAgIFN0cmluZyBwcm90b2NvbDsKLSAgICAgICAgT3B0aW9uYWw8UlRD
SWNlQ2FuZGlkYXRlVHlwZT4gY2FuZGlkYXRlVHlwZTsKLSAgICAgICAgT3B0aW9uYWw8aW50MzJf
dD4gcHJpb3JpdHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4g
Y2FuZGlkYXRlVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBwcmlvcml0eTsK
ICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBkZWxldGVkIHsgZmFsc2UgfTsKICAg
ICB9OwpAQCAtMzA3LDEyICszMDcsMTIgQEAgcHVibGljOgogICAgIHN0cnVjdCBDb2RlY1N0YXRz
IDogU3RhdHMgewogICAgICAgICBDb2RlY1N0YXRzKCkgeyB0eXBlID0gUlRDU3RhdHNSZXBvcnQ6
OlR5cGU6OkNvZGVjOyB9CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBheWxvYWRUeXBl
OwotICAgICAgICBPcHRpb25hbDxDb2RlY1R5cGU+IGNvZGVjVHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gcGF5bG9hZFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29k
ZWNUeXBlPiBjb2RlY1R5cGU7CiAgICAgICAgIFN0cmluZyB0cmFuc3BvcnRJZDsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY2xvY2tSYXRlOwot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY2hhbm5lbHM7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNsb2NrUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y2hhbm5lbHM7CiAgICAgICAgIFN0cmluZyBzZHBGbXRwTGluZTsKICAgICAgICAgU3RyaW5nIGlt
cGxlbWVudGF0aW9uOwogICAgIH07CkBAIC0zMjAsOCArMzIwLDggQEAgcHVibGljOgogICAgIHN0
cnVjdCBUcmFuc3BvcnRTdGF0cyA6IFN0YXRzIHsKICAgICAgICAgVHJhbnNwb3J0U3RhdHMoKSB7
IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6VHJhbnNwb3J0OyB9CiAKLSAgICAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5
dGVzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNSZWNlaXZlZDsKICAgICAgICAg
U3RyaW5nIHJ0Y3BUcmFuc3BvcnRTdGF0c0lkOwogICAgICAgICBTdHJpbmcgc2VsZWN0ZWRDYW5k
aWRhdGVQYWlySWQ7CiAgICAgICAgIFN0cmluZyBsb2NhbENlcnRpZmljYXRlSWQ7CkBAIC0zMzUs
MzQgKzMzNSwzNCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFBlZXJDb25uZWN0aW9uU3RhdHMgOiBT
dGF0cyB7CiAgICAgICAgIFBlZXJDb25uZWN0aW9uU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1Jl
cG9ydDo6VHlwZTo6UGVlckNvbm5lY3Rpb247IH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gZGF0YUNoYW5uZWxzT3BlbmVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGF0YUNo
YW5uZWxzQ2xvc2VkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBkYXRhQ2hhbm5l
bHNPcGVuZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRhdGFDaGFubmVsc0Ns
b3NlZDsKICAgICB9OwogCiAgICAgc3RydWN0IE1lZGlhU291cmNlU3RhdHMgOiBTdGF0cyB7CiAg
ICAgICAgIFN0cmluZyB0cmFja0lkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBraW5kOwotICAg
ICAgICBPcHRpb25hbDxib29sPiByZWxheWVkU291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlbGF5ZWRTb3VyY2U7CiAgICAgfTsKIAogICAgIHN0cnVjdCBBdWRpb1NvdXJjZVN0
YXRzIDogTWVkaWFTb3VyY2VTdGF0cyB7CiAgICAgICAgIEF1ZGlvU291cmNlU3RhdHMoKSB7IHR5
cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6TWVkaWFTb3VyY2U7IH0KIAotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxB
dWRpb0VuZXJneTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlv
bjsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKLSAgICAgICAgT3B0
aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zc0VuaGFuY2VtZW50OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHRvdGFsQXVkaW9FbmVyZ3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNh
bXBsZXNEdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGVjaG9SZXR1cm5M
b3NzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZWNob1JldHVybkxvc3NFbmhhbmNl
bWVudDsKICAgICB9OwogCiAgICAgc3RydWN0IFZpZGVvU291cmNlU3RhdHMgOiBNZWRpYVNvdXJj
ZVN0YXRzIHsKICAgICAgICAgVmlkZW9Tb3VyY2VTdGF0cygpIHsgdHlwZSA9IFJUQ1N0YXRzUmVw
b3J0OjpUeXBlOjpNZWRpYVNvdXJjZTsgfQogCi0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxv
bmc+IHdpZHRoOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZCBsb25nPiBoZWlnaHQ7Ci0gICAg
ICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGJpdERlcHRoOwotICAgICAgICBPcHRpb25hbDx1
bnNpZ25lZCBsb25nPiBmcmFtZXM7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVzUGVy
U2Vjb25kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IHdpZHRoOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGhlaWdodDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZCBsb25nPiBiaXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZCBsb25nPiBmcmFtZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFt
ZXNQZXJTZWNvbmQ7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcAppbmRleCA4
YWU0MjFiYTE4YWJkNWM2OGMzNDM1MDhmNmVmMWVkY2NhZjRjODEzLi5jZDdmMmQ5OTkzNjUzMmI2
YTllMmE4ZjRkZDU2YzUzNmRmYzIwYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVOTWVzc2FnZVBhcnNpbmcuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0dW5NZXNzYWdlKHVpbnQxNl90IG1lc3NhZ2VU
eXBlKQogICAgIHJldHVybiAhKG1lc3NhZ2VUeXBlICYgMHhDMDAwKTsKIH0KIAotT3B0aW9uYWw8
U1RVTk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVOT3JUVVJOTWVzc2FnZUxlbmd0aHMoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitzdGQ6Om9wdGlvbmFsPFNUVU5NZXNzYWdlTGVuZ3Ro
cz4gZ2V0U1RVTk9yVFVSTk1lc3NhZ2VMZW5ndGhzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmIChzaXplIDwgNCkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJz
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFy
c2luZy5oCmluZGV4IGY2Y2Q3NDhmYzE2ZTEzMjJlZmM4NGY4ZWJlNjgzZWViMmIyODBhNzUuLmYw
NjMyMzEwNTIxOGE5ODA0ZTY4OTYzODQ4ODAyOTcyMzIyOWFkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVOTWVzc2FnZVBhcnNpbmcuaApA
QCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU1RVTk1lc3NhZ2VMZW5ndGhzIHsKICAgICBzaXplX3Qg
bWVzc2FnZUxlbmd0aFdpdGhQYWRkaW5nIHsgMCB9OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8U1RVTk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVOT3JUVVJOTWVzc2FnZUxlbmd0aHMoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNUVU5N
ZXNzYWdlTGVuZ3Rocz4gZ2V0U1RVTk9yVFVSTk1lc3NhZ2VMZW5ndGhzKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIHsgU1RVTiwgRGF0YSB9OwogV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RNZXNzYWdlcyhWZWN0b3I8dWludDhf
dD4mJiwgTWVzc2FnZVR5cGUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQ2Vy
dGlmaWNhdGVHZW5lcmF0b3IuY3BwCmluZGV4IGI4Y2NmMTQ1ZDU2NzY3NmVhYjk2NjRlODNhNGMx
NjQ5MWUxMTc4MjYuLmY4ZmU2OGU4NTU0ZWU5ODFiODA3MTIxMmE3YTQyNWRlMDFiYTZlNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG1fb3JpZ2luOwotICAgIE9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8UlRDQ2VydGlmaWNhdGU+Pj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENDZXJ0aWZpY2F0ZT4+PiBtX3Byb21p
c2U7CiB9OwogCiBzdGF0aWMgaW5saW5lIHJ0Yzo6S2V5UGFyYW1zIGtleVBhcmFtc0Zyb21DZXJ0
aWZpY2F0ZVR5cGUoY29uc3QgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpDZXJ0aWZpY2F0ZUluZm9y
bWF0aW9uJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggODk0YzZkMjc5ZGQ3ZWE3NjIxZDlmNDQ5MDQxM2I2OTAw
YTk0Y2JkNi4uY2JiZTZkNzE2OTY5ODVmZDMwY2IyZTkzOTI3NDkzODJmNzY0OWRkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25C
YWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKIENyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKIAotT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0
aWVzPiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9u
YWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2Fw
YWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
a2luZCkKIHsKICAgICBhdXRvKiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC03Niw3ICs3Niw3IEBAIE9wdGlvbmFsPFJUQ1J0cENh
cGFiaWxpdGllcz4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxpdGllcyhT
Y3JpcHRFCiAgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkucmVjZWl2ZXJDYXBh
YmlsaXRpZXMoa2luZCk7CiB9CiAKLU9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpzZW5kZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQorc3RkOjpvcHRpb25hbDxSVENSdHBDYXBh
YmlsaXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICBh
dXRvKiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKaW5k
ZXggN2IzZjU5YmMzODlhNzJlYzkwMWVhYTVmMDY0YzlhMmVkNDNjMzc0OC4uZTE0MWJlNTBkOGJl
NzY2M2M2YTdlZWYzOWIzNmRlOTcwOGVmYjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4gbV9ydGNTZW5kZXI7
CiAgICAgU291cmNlIG1fc291cmNlOwogICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
PiBtX3RyYW5zZm9ybUJhY2tlbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx3ZWJydGM6OlJ0cFBh
cmFtZXRlcnM+IG1fY3VycmVudFBhcmFtZXRlcnM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PHdlYnJ0Yzo6UnRwUGFyYW1ldGVycz4gbV9jdXJyZW50UGFyYW1ldGVyczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IDYzZTRjZTcyMGMyOGJiMzUzZjM4ODM1MDZkZjM2
NDA0M2JjZGI5MDAuLmQxZjczYWQ3ZjQ3OGY2MDQ3MjViMDYwOTlmZGU2OTBjNzNlZDViNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRv
UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24obV9ydGNUcmFuc2NlaXZlci0+ZGlyZWN0aW9uKCkp
OwogfQogCi1PcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gTGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjdXJyZW50RGlyZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6Y3VycmVudERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcnRj
VHJhbnNjZWl2ZXItPmN1cnJlbnRfZGlyZWN0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKaW5kZXgg
ZmRiMjdiYWNjZDIzM2U3N2MxOTFiYzQzZGJiZmNhMDY5Y2NjZTM4Yy4uYjI5NGRiMDU5OTM5YzRk
NWVlZmI5ZTAwMDU3YzlkMjc4Y2VlNDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNv
bnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJy
ZW50RGlyZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKSBmaW5hbDsKICAgICBT
dHJpbmcgbWlkKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmNwcAppbmRleCBiOGFl
ZTBkY2VhMjVlYjhhNzFlNmE3ZGFkNTI0ZWU5MjIxMTBjZGZiLi5hMTY0OThmYTJkYjAzMDMzZDJj
NjNlZWQwNDkxYzBjM2Q3OGY5NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBSVENFbmNv
ZGVkVmlkZW9GcmFtZU1ldGFkYXRhIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZTo6dmlk
ZW9NZXRhZGF0YSgpIGNvbgogICAgIGF1dG8qIHZpZGVvRnJhbWUgPSBzdGF0aWNfY2FzdDx3ZWJy
dGM6OlRyYW5zZm9ybWFibGVWaWRlb0ZyYW1lSW50ZXJmYWNlKj4obV9ydGNGcmFtZS5nZXQoKSk7
CiAgICAgYXV0byYgbWV0YWRhdGEgPSB2aWRlb0ZyYW1lLT5HZXRNZXRhZGF0YSgpOwogCi0gICAg
T3B0aW9uYWw8aW50NjRfdD4gZnJhbWVJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZy
YW1lSWQ7CiAgICAgaWYgKG1ldGFkYXRhLkdldEZyYW1lSWQoKSkKICAgICAgICAgZnJhbWVJZCA9
ICptZXRhZGF0YS5HZXRGcmFtZUlkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yLmNwcAppbmRleCA0Yzg1M2U3MmM3ZTg2N2ZhOWU3NTBhZjZjMzQ1YjE0MjQx
MzNhNzhhLi5kODgyOWFkOWYxMmZjMTFhYTliNzMzNzU2NmVmMGMyODU4NzBjNTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENTdGF0c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCkBAIC00MzQsNyArNDM0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMoUlRD
U3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXIKICAgICAgICAgc3RhdHMuY29uc2VudFJlc3Bv
bnNlc1NlbnQgPSAqcnRjU3RhdHMucmVzcG9uc2VzX3NlbnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gaWNlQ2FuZGlkYXRlU3RhdGUoY29uc3Qgc3Rk
OjpzdHJpbmcmIHN0YXRlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNhbmRp
ZGF0ZVR5cGU+IGljZUNhbmRpZGF0ZVN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdGF0ZSkKIHsK
ICAgICBpZiAoc3RhdGUgPT0gImhvc3QiKQogICAgICAgICByZXR1cm4gUlRDSWNlQ2FuZGlkYXRl
VHlwZTo6SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcAppbmRleCBhMWZjZGUyYThk
NWU2ZGM4MzQ1ZTIwYTEyYmZiMWJiMjU2NGJkZmMxLi41OWNmOGM2Mzk5NTUwY2U3MTMzMTRiYTU1
MDQ1MTczY2NhOTE2MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCkBAIC0zNjYs
NyArMzY2LDcgQEAgc3RhdGljIGlubGluZSBSVENJY2VDb21wb25lbnQgdG9SVENJY2VDb21wb25l
bnQoaW50IGNvbXBvbmVudCkKICAgICByZXR1cm4gY29tcG9uZW50ID09IGNyaWNrZXQ6OklDRV9D
QU5ESURBVEVfQ09NUE9ORU5UX1JUUCA/IFJUQ0ljZUNvbXBvbmVudDo6UnRwIDogUlRDSWNlQ29t
cG9uZW50OjpSdGNwOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJUQ0ljZVByb3RvY29s
PiB0b1JUQ0ljZVByb3RvY29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm90b2NvbCkKK3N0YXRpYyBp
bmxpbmUgc3RkOjpvcHRpb25hbDxSVENJY2VQcm90b2NvbD4gdG9SVENJY2VQcm90b2NvbChjb25z
dCBzdGQ6OnN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgaWYgKHByb3RvY29sID09ICIiKQogICAg
ICAgICByZXR1cm4geyB9OwpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8UlRDSWNlUHJvdG9jb2w+IHRvUlRDSWNlUHJvdG9jb2woY29uc3Qgc3RkOjpzdHJpbmcmIHBy
b3RvCiAgICAgcmV0dXJuIFJUQ0ljZVByb3RvY29sOjpUY3A7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8UlRDSWNlVGNwQ2FuZGlkYXRlVHlwZT4gdG9SVENJY2VUY3BDYW5kaWRhdGVUeXBl
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJU
Q0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRvUlRDSWNlVGNwQ2FuZGlkYXRlVHlwZShjb25zdCBzdGQ6
OnN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAodHlwZSA9PSAiIikKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJUQ0ljZVRjcENh
bmRpZGF0ZVR5cGU+IHRvUlRDSWNlVGNwQ2FuZGlkYXRlVHlwZShjb25zdCBzdAogICAgIHJldHVy
biBSVENJY2VUY3BDYW5kaWRhdGVUeXBlOjpTbzsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25h
bDxSVENJY2VDYW5kaWRhdGVUeXBlPiB0b1JUQ0ljZUNhbmRpZGF0ZVR5cGUoY29uc3Qgc3RkOjpz
dHJpbmcmIHR5cGUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRl
VHlwZT4gdG9SVENJY2VDYW5kaWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlKQogewog
ICAgIGlmICh0eXBlID09ICIiKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNDAyLDcgKzQwMiw3
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdG9SVENJY2VD
YW5kaWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyCiAgICAgcmV0dXJuIFJUQ0ljZUNhbmRpZGF0ZVR5
cGU6OlJlbGF5OwogfQogCi1PcHRpb25hbDxSVENJY2VDYW5kaWRhdGU6OkZpZWxkcz4gcGFyc2VJ
Y2VDYW5kaWRhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApCitzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNh
bmRpZGF0ZTo6RmllbGRzPiBwYXJzZUljZUNhbmRpZGF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkK
IHsKICAgICBjcmlja2V0OjpDYW5kaWRhdGUgY2FuZGlkYXRlOwogICAgIGlmICghd2VicnRjOjpQ
YXJzZUNhbmRpZGF0ZShzZHAudXRmOCgpLmRhdGEoKSwgJmNhbmRpZGF0ZSwgbnVsbHB0ciwgdHJ1
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnREZXRhaWxzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50RGV0YWlsc0Jhc2UuaAppbmRleCBlMTczZDY4NWE3OWE2Yjk5NGM4MzBhZmU0M2Fl
MzM2OTEyNzVkMDU0Li5mNDNkMGY3NjA3MzJmOGE3YWZiMTBlNWM5OGIxNzE4ZTFlMTYzZTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRE
ZXRhaWxzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudERldGFpbHNCYXNlLmgKQEAgLTM3LDkgKzM3LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IFBheW1lbnREZXRhaWxzQmFzZSB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBh
eW1lbnRJdGVtPj4gZGlzcGxheUl0ZW1zOwotICAgIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50U2hp
cHBpbmdPcHRpb24+PiBzaGlwcGluZ09wdGlvbnM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBheW1l
bnREZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UGF5bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5
bWVudFNoaXBwaW5nT3B0aW9uPj4gc2hpcHBpbmdPcHRpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBheW1lbnREZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzTW9kaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCmluZGV4IDRiNjFmMDFl
ZmUxODk2ZDE4ODg2M2M2YmMzMDAxMGU3OTljZWE5OGIuLmVlZDlhYjRjMWE1ZjkxMzI3NDE3NDRk
MTQ2Mjg5MDE5ZWJlNWNiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBheW1lbnREZXRhaWxzTW9k
aWZpZXIgewogICAgIFN0cmluZyBzdXBwb3J0ZWRNZXRob2RzOwotICAgIE9wdGlvbmFsPFBheW1l
bnRJdGVtPiB0b3RhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKICAg
ICBWZWN0b3I8UGF5bWVudEl0ZW0+IGFkZGl0aW9uYWxEaXNwbGF5SXRlbXM7CiAgICAgSlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4gZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzVXBkYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzVXBkYXRlLmgKaW5k
ZXggNzdiOTYyMDgzYTA1MDM4ZGRhMGZmMTlhZDNkMGY2YzQ3MGMyNjIxZi4uM2U0MGUyYjYzNzdm
NmJiZGJiYzRjN2QwZTA1NjU1YmQ3YWNiM2JhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc1VwZGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNVcGRhdGUuaApA
QCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBQYXltZW50RGV0
YWlsc1VwZGF0ZSBmaW5hbCA6IFBheW1lbnREZXRhaWxzQmFzZSB7CiAgICAgU3RyaW5nIGVycm9y
OwotICAgIE9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRJdGVtPiB0b3RhbDsKICAgICBBZGRyZXNzRXJyb3JzIHNoaXBwaW5nQWRkcmVzc0Vycm9y
czsKICAgICBQYXllckVycm9yRmllbGRzIHBheWVyRXJyb3JzOwogICAgIEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+IHBheW1lbnRNZXRob2RFcnJvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKaW5kZXggODExYTI4
NWFlNTQ0NGJmOTBmZWNjZjc1Y2Y2YTE3MzU5NzY3MDhiYS4uOTU1ZTM5YTcyMjg1MmMyMjBmMmJl
OTQ2OWRkYjUxN2M2MGY4OWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCBF
eGNlcHRpb25Pcjx2b2lkPiBkZXRhaWxzVXBkYXRlZChQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVh
c29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmLCBQYXllckVycm9yRmllbGRzJiYs
IEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpID0gMDsKICAgICB2aXJ0dWFsIEV4
Y2VwdGlvbk9yPHZvaWQ+IG1lcmNoYW50VmFsaWRhdGlvbkNvbXBsZXRlZChKU0M6OkpTVmFsdWUm
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxl
dGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXlt
ZW50Q29tcGxldGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5
KFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5k
ZXggOWI5MDIyMDBmZGM4YWQyMTMyNDhiYWZhM2RjYjc5ZjZkZDM2NzVkMC4uYTQxZmEwODY0MjRi
NTY4MTI2NjQ1NDQzNDc5YWVhZjljNjk3M2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRp
Zmllcihjb25zdCBVUkwmIHVybCkKIAogLy8gSW1wbGVtZW50cyAidmFsaWRhdGUgYSBwYXltZW50
IG1ldGhvZCBpZGVudGlmaWVyIgogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQtbWV0
aG9kLWlkLyN2YWxpZGl0eQotT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZp
ZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50
aWZpZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBVUkwgdXJsIHsgVVJMKCksIGlkZW50aWZpZXIgfTsK
ICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKQEAgLTUyNCw3ICs1MjQsNyBAQCBjb25zdCBTdHJp
bmcmIFBheW1lbnRSZXF1ZXN0OjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGV0YWlscy5pZDsK
IH0KIAotT3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlwZT4gUGF5bWVudFJlcXVlc3Q6OnNoaXBw
aW5nVHlwZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBheW1lbnRTaGlwcGluZ1R5cGU+IFBheW1l
bnRSZXF1ZXN0OjpzaGlwcGluZ1R5cGUoKSBjb25zdAogewogICAgIGlmIChtX29wdGlvbnMucmVx
dWVzdFNoaXBwaW5nKQogICAgICAgICByZXR1cm4gbV9vcHRpb25zLnNoaXBwaW5nVHlwZTsKQEAg
LTcyNSw3ICs3MjUsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjphY2NlcHQoY29uc3QgU3RyaW5n
JiBtZXRob2ROYW1lLCBQYXltZW50UmVzcG9uc2U6OkRldGFpbHNGdQogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6Q2xvc2VkOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdDo6Y29t
cGxldGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0
ZT4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7CiAg
ICAgaWYgKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IDhjNWE5YWZi
YTk3NjUyMWFhOWVlOWRkMDA3YmEzZDYyMjdjMzQ3NTcuLjc4OTU1OGRlNDliOWY4ZjJkNWRhZjY2
OGZmY2MxOWExNzVjZjFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdDsKICAgICBQYXltZW50QWRkcmVzcyogc2hp
cHBpbmdBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zaGlwcGluZ0FkZHJlc3MuZ2V0KCk7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGlw
cGluZ09wdGlvbjsgfQotICAgIE9wdGlvbmFsPFBheW1lbnRTaGlwcGluZ1R5cGU+IHNoaXBwaW5n
VHlwZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlwZT4gc2hp
cHBpbmdUeXBlKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgQ3Jl
YXRlZCwKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVw
ZGF0ZVdpdGgoVXBkYXRlUmVhc29uLCBSZWY8RE9NUHJvbWlzZT4mJik7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oRXZlbnQmLCBSZWY8RE9NUHJvbWlz
ZT4mJik7CiAgICAgdm9pZCBhY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBQYXltZW50
UmVzcG9uc2U6OkRldGFpbHNGdW5jdGlvbiYmLCBSZWY8UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBp
bmdBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFtZSwgY29uc3QgU3RyaW5nJiBwYXllckVt
YWlsLCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNv
bXBsZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpOwogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYpOwogICAgIHZvaWQg
Y2FuY2VsKCk7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQYXlt
ZW50QWRkcmVzcz4gbV9zaGlwcGluZ0FkZHJlc3M7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRl
OjpDcmVhdGVkIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNob3dQcm9taXNlPiBtX3Nob3dQcm9t
aXNlOwotICAgIE9wdGlvbmFsPFBheW1lbnRIYW5kbGVyV2l0aFBlbmRpbmdBY3Rpdml0eT4gbV9h
Y3RpdmVQYXltZW50SGFuZGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRIYW5kbGVyV2l0
aFBlbmRpbmdBY3Rpdml0eT4gbV9hY3RpdmVQYXltZW50SGFuZGxlcjsKICAgICBSZWZQdHI8RE9N
UHJvbWlzZT4gbV9kZXRhaWxzUHJvbWlzZTsKICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gbV9tZXJj
aGFudFNlc3Npb25Qcm9taXNlOwogICAgIFJlZlB0cjxQYXltZW50UmVzcG9uc2U+IG1fcmVzcG9u
c2U7CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDYW5jZWxQZW5k
aW5nIHsgZmFsc2UgfTsKIH07CiAKLU9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVu
dGlmaWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpOworc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWV0aG9k
SWRlbnRpZmllcj4gY29udmVydEFuZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRS
ZXNwb25zZS5jcHAKaW5kZXggMDVkMWNhNGJiNzZmODRlNjY5NjRiOWVkYTEzMmUwZGJmMDUzNWVl
Yi4uMjY0NzI1MjYzNTAzNDg1MmFiMmFlOTViMjY4ZDIyNzg4NjU5ZmJkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3Bv
bnNlLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBheW1lbnRSZXNwb25zZTo6c2V0RGV0YWls
c0Z1bmN0aW9uKERldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbikKICAgICBtX2NhY2hl
ZERldGFpbHMgPSB7IH07CiB9CiAKLXZvaWQgUGF5bWVudFJlc3BvbnNlOjpjb21wbGV0ZShPcHRp
b25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQordm9pZCBQYXltZW50UmVzcG9uc2U6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9yZXF1ZXN0
KSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRS
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVzcG9uc2UuaAppbmRleCBjNGZmNGI2ZjFhMDY0ODdlMzU4Y2JiNzY4ZTU1OTU3OTc2NGIyN2Q5
Li40ZDdiYTdmNmQ3MDZmOGYxMmU4MDc5ZDU0ZGJkYTYwMzU1ZDYzM2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNl
LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9u
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5ZXJQaG9uZTsgfQogICAgIHZvaWQgc2V0UGF5ZXJQaG9u
ZShjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpIHsgbV9wYXllclBob25lID0gcGF5ZXJQaG9uZTsg
fQogCi0gICAgdm9pZCBjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudENvbXBsZXRlPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9p
ZCByZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CiAgICAgdm9pZCBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uJiYpOwogICAgIGJv
b2wgaGFzUmV0cnlQcm9taXNlKCkgY29uc3QgeyByZXR1cm4gISFtX3JldHJ5UHJvbWlzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQ
bGF5YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90
ZVBsYXliYWNrLmNwcAppbmRleCA5NmRkMmI3ZDNlNzVlNDNjNzRmOWRjOTBkNjY3NTdiNTU4M2Vm
YjMyLi5kMWJiMDQ5ZDRiMjE4ZjUyODFmMjEwMGZjODk4YzUxYjg4YTNmMGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXli
YWNrLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgUmVtb3RlUGxheWJhY2s6OndhdGNoQXZh
aWxhYmlsaXR5KFJlZjxSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrPiYmCiAgICAg
fSk7CiB9CiAKLXZvaWQgUmVtb3RlUGxheWJhY2s6OmNhbmNlbFdhdGNoQXZhaWxhYmlsaXR5KE9w
dGlvbmFsPGludDMyX3Q+IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lk
IFJlbW90ZVBsYXliYWNrOjpjYW5jZWxXYXRjaEF2YWlsYWJpbGl0eShzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gNi4y
LjEuNSBTdG9wIG9ic2VydmluZyByZW1vdGUgcGxheWJhY2sgZGV2aWNlcyBhdmFpbGFiaWxpdHkK
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcmVtb3RlLXBsYXliYWNrLyNzdG9wLW9ic2Vy
dmluZy1yZW1vdGUtcGxheWJhY2stZGV2aWNlcy1hdmFpbGFiaWxpdHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaAppbmRl
eCBjZjIzMTgxYzcxYTZlYmU5NmRkOTBmZGI3NTQ3ODY4MWEyNDhkZTVkLi4yZDI3MzYyZThiNDky
MzI2ZTZlZjhkYjAwODI0NGE5YTc2MzkyNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB+UmVtb3RlUGxheWJhY2soKTsKIAogICAgIHZvaWQgd2F0Y2hBdmFp
bGFiaWxpdHkoUmVmPFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2s+JiYsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOwotICAgIHZvaWQgY2FuY2VsV2F0Y2hBdmFpbGFiaWxpdHkoT3B0
aW9uYWw8aW50MzJfdD4gaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgY2Fu
Y2VsV2F0Y2hBdmFpbGFiaWxpdHkoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBpZCwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBwcm9tcHQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CiAKICAgICBib29sIGhhc0F2YWlsYWJpbGl0eUNhbGxiYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggODhiZmYyYzBiZDZlMTUyYjdmNmYxNjVlODYzNTcy
OTQ0NGFjNzdlZC4uMzQ5YWRmNmI0MmNjYjNjYzFkNmMwN2EyZTU0NGMyYmM1OTNhY2E0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuY3BwCkBAIC00Myw5ICs0Myw5IEBAIHZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjptdXRlKCkKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKLU9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVy
ZVNvdXJjZTo6ZmluZENhcHR1cmVEZXZpY2UoKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNl
PiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U6OmZpbmRDYXB0dXJlRGV2aWNlKCkKIHsK
LSAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlOworICAgIHN0ZDo6b3B0
aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZTsKICAgICBhdXRvIGRldmljZXMgPSBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5
KCkuYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpLmNhcHR1cmVEZXZpY2VzKCk7CiAgICAgZm9y
IChhdXRvIGRldmljZSA6IGRldmljZXMpIHsKICAgICAgICAgaWYgKCFkZXZpY2UuZW5hYmxlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaAppbmRleCAwOGFhY2FkMmQ0M2U5YzgyYWI0YTY5
NWQxZWY5MzFkYTdkMTlhMzkyLi44NDQwNjBkYWRmYTNmNTk0MDQzOTJiNGIyNzc5Y2NkNWIzZjcw
OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXVEY6Ok1l
ZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCk+OwogICAgIHVzaW5nIFN0YXRlVXBkYXRlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwogICAgIFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3RhdGVVcGRhdGVDYWxsYmFjayYmLCBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGZpbmRDYXB0dXJlRGV2aWNlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZmlu
ZENhcHR1cmVEZXZpY2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2FwdHVyZVNvdXJj
ZU9yRXJyb3IgY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJik7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25FcnJvci5oCmluZGV4IDc2MzRiZDAwMzMzN2JiZmZiMjcxNmNmMDcyNDFl
ZmQwMjhiYjFiYzIuLmM5Y2NhOTc3ZTQ5MWI4ZDY4ODZmZjhmMjAzNDI1NDA0ZmQyY2FlOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkVycm9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uRXJy
b3IgewogICAgIFN0cmluZyBtZXNzYWdlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNwZWVj
aFJlY29nbml0aW9uRXJyb3I+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgpAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25FcnJv
cjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4gU3BlZWNoUmVjb2duaXRpb25FcnJvcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU+IHR5cGU7
CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZT4gdHlwZTsKICAg
ICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIGRlY29kZXIgPj4gbWVzc2FnZTsKICAgICBpZiAoIW1l
c3NhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmgKaW5kZXggOTQyNmM5NGM3OWI0MzgzOGFmMzA3ZDkyYjdmNzQwM2I1NzA0OGVkMC4uOGQ1OTg1
MzE5NDYzNDY4NjNhY2EzNDI0OTVkMjk5NDEzOWY3MGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byB7CiAgICAgRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUxLDM5ICs1MSwzOSBA
QCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+
IGxhbmc7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhbmc7CiAgICAgZGVjb2RlciA+PiBs
YW5nOwogICAgIGlmICghbGFuZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPGJvb2w+IGNvbnRpbnVvdXM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb250
aW51b3VzOwogICAgIGRlY29kZXIgPj4gY29udGludW91czsKICAgICBpZiAoIWNvbnRpbnVvdXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBpbnRl
cmltUmVzdWx0czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGludGVyaW1SZXN1bHRzOwogICAg
IGRlY29kZXIgPj4gaW50ZXJpbVJlc3VsdHM7CiAgICAgaWYgKCFpbnRlcmltUmVzdWx0cykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtYXhB
bHRlcm5hdGl2ZXM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWF4QWx0ZXJuYXRpdmVz
OwogICAgIGRlY29kZXIgPj4gbWF4QWx0ZXJuYXRpdmVzOwogICAgIGlmICghbWF4QWx0ZXJuYXRp
dmVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q2xpZW50
T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IGNs
aWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVu
dE9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZp
ZXI7CiAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCmluZGV4IDVhYTQ4NTIwY2I4ZjY3NzZkMzA1Mzg0ZDc0
Njk0MTQzNzM1YzcwZDguLjhmOGFjY2M0YzhjMTQwNThjNGY0MmNkZGFlNTk3MzMyYWIwOGYzODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIHN0cnVjdCBTcGVlY2hS
ZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7CiAgICAgZG91YmxlIGNvbmZpZGVuY2UgeyAwLjAg
fTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25B
bHRlcm5hdGl2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRp
dmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBT
cGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBTcGVlY2hS
ZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgcmVzdWx0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zY3JpcHQpKQpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3Qg
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsKICAgICBib29sIGlzRmluYWwgeyBmYWxzZSB9
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTY5LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHJlc3Vs
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbHRlcm5hdGl2ZXMpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmgKaW5kZXggYzI5YmIyNWEzMTY0YzRhMWMyZTFhZTEyYThiNjBiYzkwNTQzOTQzNy4uMTI3
MGNiODg0M2JjZjQ3OGExZTFjNWRhMmNkYzA5MDI5MmQ2MDg4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHQoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVj
aFJlY29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsK
QEAgLTc5LDE5ICs3OSwxOSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllcj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29udGVudD4gY29u
dGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnQ+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+
PiBjb250ZW50OwogICAgIGlmICghY29udGVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXpl
ci5jcHAKaW5kZXggNmYxNWZiZWQxMTQ4M2NiYTM3MjI3Y2YxODZhZWU3ZjlmYzc0MzM1My4uMDZm
YmRkMmZlNDNjMTU1NjE2YzY5ZWE5ODNjNTBjZWYyOGEyNDVhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgU3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNr
JiYgZGVsZWdhdGVDYWxsYmFjaywgVW5pcXVlUmUKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25p
emVyOjphYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmIGVycm9yKQordm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydChzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
RXJyb3I+JiYgZXJyb3IpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggYTZiODgy
MGRjMWNkM2Y3YjU0OGVjYWYzMDNkOTQxNDVjMmY0MTAyMy4uZDM0Njk4M2NiOTJiMWM2NWQyY2Q5
MmZjMTQwNjZjNTMwNDJlYmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwog
I2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydChPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFib3J0KHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAppbmRleCAwM2I2Njlk
NTI3ZGE4ZmIwNzA1MWI0YWY5NzIwOTgwYTRmZjZiMzI3Li44NmFlNTNiZDJlYmIxMGViMGViZjFk
NTcxNTNlYzA2NDc4OWJkN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaApAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPj4gbV9wcm9taXNlOwotICAgIE9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07CiAKIGNsYXNzIFNpbXBsZVJlYWRhYmxl
U3RyZWFtU291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggMDkyYzdkNmZmNGUwYmUwY2VlNzll
OTlmYmZhNWE1NDQzMjgzMjEyOC4uNmY5NGViZWExZTA5MGY3NzJkY2E0OTZiMmQ5MjY0NTU0YTVm
ZTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDUyLDEyICs0NTIsMTIgQEAgdW5zaWduZWQg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNoYW5uZWxzKCkKICAgICByZXR1cm4gb3V0
cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c3RhcnRMYXRlcihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zm
c2V0LCBPcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCitFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCiB7CiAgICAgcmV0
dXJuIHN0YXJ0UGxheWluZyh3aGVuLCBncmFpbk9mZnNldCwgZ3JhaW5EdXJhdGlvbik7CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRv
dWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJh
dGlvbikKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5
aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBncmFpbkR1cmF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAid2hlbiA9ICIsIHdoZW4sICIsIG9mZnNldCA9ICIsIGdy
YWluT2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIsIGdyYWluRHVyYXRpb24udmFsdWVfb3IoMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmgKaW5kZXggYjczM2Q3MGM2ZmNiYWFhNWRiYTQ2NWNiNjhhZTMyMzYyZDI3YzZl
Ny4uN2U1OWU5MDg1NjU0YzRkYmJmMTM1YzJkYmQ3ZDNiZjI5YmEwODA2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKCk7CiAKICAgICAvLyBQbGF5LXN0YXRlCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRM
YXRlcihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBPcHRpb25hbDxkb3VibGU+IGdy
YWluRHVyYXRpb24pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdo
ZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRp
b24pOwogCiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0ZSB3YXMgb3JpZ2luYWxseSBleHBvc2Vk
IGFzIC5sb29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIG5hbWluZyB3aXRoIDxh
dWRpbz4KICAgICAvLyBhbmQgd2l0aCBob3cgaXQncyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmlj
YXRpb24sIHRoZSBwcm9wZXIgYXR0cmlidXRlIG5hbWUgaXMgLmxvb3AKQEAgLTg3LDcgKzg3LDcg
QEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQog
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUg
Z3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdy
YWluUGFyYW1ldGVycygpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXgg
ZWRmMDJiMDRjMjA3NjJjZmM1MTlkMjFkOWM2MzUwOTE1ZDMxYThjMS4uNTA1NWI0NmI4OWJmYjg2
YWRmMTc1YTQ3ZDg0NzAxYTUxZjA2NzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNjgsOSArNjgsOSBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0KTsKIHN0YXRpYyB1bnNpZ25lZCBoYXJkd2Fy
ZUNvbnRleHRDb3VudDsKICNlbmRpZgogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+JiBkZWZhdWx0
U2FtcGxlUmF0ZUZvclRlc3RpbmcoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+JiBkZWZh
dWx0U2FtcGxlUmF0ZUZvclRlc3RpbmcoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4g
c2FtcGxlUmF0ZTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsK
ICAgICByZXR1cm4gc2FtcGxlUmF0ZTsKIH0KIApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJB
dWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnNldERlZmF1
bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKK3ZvaWQg
QXVkaW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3Rpbmcoc3RkOjpvcHRpb25h
bDxmbG9hdD4gc2FtcGxlUmF0ZSkKIHsKICAgICBkZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3Rpbmco
KSA9IHNhbXBsZVJhdGU7CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OnN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAog
ICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMs
IGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAg
ICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7
CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVz
dW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKICAgICBs
YXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5yZXN1bWUoW3RoaXMsIGFjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0
aW5hdGlvbigpLnJlc3VtZShbdGhpcywgYWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdGFydFJlbmRl
cmluZygpCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KCk7CiAKICAgICBsYXp5SW5pdGlhbGl6ZSgp
OwotICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgeworICAg
IGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAg
ICAgIGlmICghZXhjZXB0aW9uKQogICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcp
OwogICAgIH0pOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1
bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAK
LSAgICBkZXN0aW5hdGlvbigpLnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CisgICAgZGVzdGluYXRp
b24oKS5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIHNldFN0YXRlKGV4Y2Vw
dGlvbiA/IFN0YXRlOjpTdXNwZW5kZWQgOiBTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CkBA
IC00NzEsNyArNDcxLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAK
ICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdXNwZW5kKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBl
eGNlcHRpb24pIHsKKyAgICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGE4OGE4
YzVkNGZlZTdiN2JhZjMzM2JhMzk2ZWQ0Y2U5ZWQ4M2U0NTkuLmYyNDBiOWM1NmU4ZjI3ZjVmYzgx
OTU3NzdkZTYzNzI5MjdlNmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmLCBBdWRpb0Nv
bnRleHRPcHRpb25zJiYpOwogICAgIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhPcHRpb25hbDxm
bG9hdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldERlZmF1bHRTYW1wbGVS
YXRlRm9yVGVzdGluZyhzdGQ6Om9wdGlvbmFsPGZsb2F0Pik7CiAKICAgICB2b2lkIGNsb3NlKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dE9wdGlvbnMuaAppbmRleCA4ZmNlYzYwMDIxZjdi
M2Q4NjY3ZmMwNzJjYzU1NTAxY2QyMDVkYjFjLi42MzJmNDY5YjdkZDdmNzYwYmMwZDA3NjI4ODhi
MzljMWY4YmM0NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dE9wdGlvbnMuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBBdWRpb0NvbnRleHRPcHRpb25zIHsKICAgICBWYXJpYW50PEF1ZGlv
Q29udGV4dExhdGVuY3lDYXRlZ29yeSwgZG91YmxlPiBsYXRlbmN5SGludCB7IEF1ZGlvQ29udGV4
dExhdGVuY3lDYXRlZ29yeTo6SW50ZXJhY3RpdmUgfTsKLSAgICBPcHRpb25hbDxmbG9hdD4gc2Ft
cGxlUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDlmMzRiNTkwMGQ4NWU5ZGNkMTk1
NmEwMzg0OWU5MTBkMzVjNDk2NTguLjZhOTViZmM1ZDY0YjFiOWRiZTA4ZDI4NzkzYjM2ZjhjMzdl
OGYzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIEVu
YWJsZSBsb2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGRldmljZS4KICAgICB2aXJ0
dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVu
ZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRSZW5kZXJpbmcoKSB7IH0KIAogICAg
IC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlcyBhcmUgb3duZWQgYnkgdGhlIEJhc2VBdWRpb0NvbnRl
eHQgc28gd2UgZm9yd2FyZCB0aGUgcmVmY291bnRpbmcgdG8gaXRzIEJhc2VBdWRpb0NvbnRleHQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9u
cy5oCmluZGV4IDA0MGYwNzg0NjYyMGM3NzEyNWZhNWVmNTMzMzUxZTk1YWNmYmM1YzcuLjI4YzE3
ZGNmNGZmYjk2ZGQ2MzYyOTUzNzZiYWJmYTBjYjM2NjYwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5oCkBAIC0zNCw5ICszNCw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBdWRpb05vZGVPcHRpb25zIHsKLSAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gY2hhbm5lbENvdW50OwotICAgIE9wdGlvbmFsPENoYW5uZWxD
b3VudE1vZGU+IGNoYW5uZWxDb3VudE1vZGU7Ci0gICAgT3B0aW9uYWw8Q2hhbm5lbEludGVycHJl
dGF0aW9uPiBjaGFubmVsSW50ZXJwcmV0YXRpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gY2hhbm5lbENvdW50OworICAgIHN0ZDo6b3B0aW9uYWw8Q2hhbm5lbENvdW50TW9kZT4gY2hh
bm5lbENvdW50TW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYW5uZWxJbnRlcnByZXRhdGlvbj4g
Y2hhbm5lbEludGVycHJldGF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxp
bmUuY3BwCmluZGV4IDU0ZmNhYmE0NTI0ZmQyODgwN2IzNzkxZTllMmY5NGJjMjAwMTk3ODQuLjZk
NTliNDg1YzY3NzAzMTcwYTA3NmUwYzUyOTFjMzZkOGY0YmVmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAg
LTI0MSw4ICsyNDEsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1BhcmFtVGltZWxpbmU6OmNh
bmNlbEFuZEhvbGRBdFRpbWUoU2Vjb25kcyBjYW5jZWxUaW1lKQogICAgIGF1dG8gZXZlbnRUeXBl
ID0gY2FuY2VsbGVkRXZlbnQudHlwZSgpOwogCiAgICAgLy8gTmV3IGV2ZW50IHRvIGJlIGluc2Vy
dGVkLCBpZiBhbnksIGFuZCBhIFNldFZhbHVlRXZlbnQgaWYgbmVlZGVkLgotICAgIE9wdGlvbmFs
PFBhcmFtRXZlbnQ+IG5ld0V2ZW50OwotICAgIE9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZh
bHVlRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQYXJhbUV2ZW50PiBuZXdFdmVudDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZhbHVlRXZlbnQ7CiAKICAgICBzd2l0Y2gg
KGV2ZW50VHlwZSkgewogICAgIGNhc2UgUGFyYW1FdmVudDo6TGluZWFyUmFtcFRvVmFsdWU6CkBA
IC0zMjQsNyArMzI0LDcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OnJlbW92ZUNhbmNlbGxl
ZEV2ZW50cyhzaXplX3QgZmlyc3RFdmVudFRvUmVtb3ZlKQogICAgIG1fZXZlbnRzLnJlbW92ZShm
aXJzdEV2ZW50VG9SZW1vdmUsIG1fZXZlbnRzLnNpemUoKSAtIGZpcnN0RXZlbnRUb1JlbW92ZSk7
CiB9CiAKLU9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4
dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9h
dCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBBdWRpb1Bh
cmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCiB7
CiAgICAgewogICAgICAgICBpZiAoIW1fZXZlbnRzTG9jay50cnlMb2NrKCkpCkBAIC05MzIsNyAr
OTMyLDcgQEAgYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZh
bHVlQ3VydmVFdmVudChWZWN0b3I8ZmxvYXQ+JiYgY3UKICAgICByZXR1cm4geyBQYXJhbUV2ZW50
OjpTZXRWYWx1ZUN1cnZlLCAwLCB0aW1lLCAwLCBkdXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1
cnZlUG9pbnRzUGVyU2Vjb25kLCBjdXJ2ZUVuZFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAot
YXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUNhbmNlbFZhbHVlc0V2
ZW50KFNlY29uZHMgY2FuY2VsVGltZSwgT3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50
KSAtPiBQYXJhbUV2ZW50CithdXRvIEF1ZGlvUGFyYW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3Jl
YXRlQ2FuY2VsVmFsdWVzRXZlbnQoU2Vjb25kcyBjYW5jZWxUaW1lLCBzdGQ6Om9wdGlvbmFsPFNh
dmVkRXZlbnQ+JiYgc2F2ZWRFdmVudCkgLT4gUGFyYW1FdmVudAogewogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgaWYgKHNhdmVkRXZlbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCmluZGV4IGJkZjYzMTdkN2ZlZGJkNGRm
NWE2ZjJkNmZiZjI3N2JlODM5NGIzODIuLmNiZTAxYzAzYjVmOTcxNGNlNmY0OGNlNWE0YWE3Y2Vl
ZTFjNmI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBo
YXNWYWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVy
bmVkLgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgT3B0
aW9uYWw8ZmxvYXQ+IHZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYsIGZsb2F0
IGRlZmF1bHRWYWx1ZSwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB2YWx1ZUZvckNvbnRleHRUaW1lKEJhc2VBdWRpb0NvbnRleHQmLCBm
bG9hdCBkZWZhdWx0VmFsdWUsIGZsb2F0IG1pblZhbHVlLCBmbG9hdCBtYXhWYWx1ZSk7CiAKICAg
ICAvLyBHaXZlbiB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGlu
dG8gdGhlIHZhbHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0
ZXIgdmFsdWUgY2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhlIGRlZmF1bHRWYWx1ZSBpZiBu
b25lIHdlcmUgY2FsY3VsYXRlZC4KQEAgLTg3LDkgKzg3LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
c3RhdGljIFBhcmFtRXZlbnQgY3JlYXRlRXhwb25lbnRpYWxSYW1wRXZlbnQoZmxvYXQgdmFsdWUs
IFNlY29uZHMgdGltZSk7CiAgICAgICAgIHN0YXRpYyBQYXJhbUV2ZW50IGNyZWF0ZVNldFRhcmdl
dEV2ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcyB0aW1lLCBmbG9hdCB0aW1lQ29uc3RhbnQpOwog
ICAgICAgICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVTZXRWYWx1ZUN1cnZlRXZlbnQoVmVjdG9y
PGZsb2F0PiYmIGN1cnZlLCBTZWNvbmRzIHRpbWUsIFNlY29uZHMgZHVyYXRpb24pOwotICAgICAg
ICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChTZWNvbmRzIGNhbmNl
bFRpbWUsIE9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYpOworICAgICAgICBzdGF0aWMgUGFyYW1FdmVu
dCBjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChTZWNvbmRzIGNhbmNlbFRpbWUsIHN0ZDo6b3B0aW9u
YWw8U2F2ZWRFdmVudD4mJik7CiAKLSAgICAgICAgUGFyYW1FdmVudChUeXBlIHR5cGUsIGZsb2F0
IHZhbHVlLCBTZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCwgU2Vjb25kcyBkdXJhdGlv
biwgVmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBkb3VibGUgY3VydmVQb2ludHNQZXJTZWNvbmQsIGZs
b2F0IGN1cnZlRW5kVmFsdWUsIE9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYgc2F2ZWRFdmVudCkKKyAg
ICAgICAgUGFyYW1FdmVudChUeXBlIHR5cGUsIGZsb2F0IHZhbHVlLCBTZWNvbmRzIHRpbWUsIGZs
b2F0IHRpbWVDb25zdGFudCwgU2Vjb25kcyBkdXJhdGlvbiwgVmVjdG9yPGZsb2F0PiYmIGN1cnZl
LCBkb3VibGUgY3VydmVQb2ludHNQZXJTZWNvbmQsIGZsb2F0IGN1cnZlRW5kVmFsdWUsIHN0ZDo6
b3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50KQogICAgICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV90aW1l
KHRpbWUpCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaG9sZHMgdGhl
IGV2ZW50IHRoYXQgaXMgYmVpbmcgY2FuY2VsbGVkLCBzbyB0aGF0IHByb2Nlc3NpbmcgY2FuCiAg
ICAgICAgIC8vIGNvbnRpbnVlIGFzIGlmIHRoZSBldmVudCBzdGlsbCBleGlzdGVkIHVwIHVudGls
IHdlIHJlYWNoIHRoZSBhY3R1YWwKICAgICAgICAgLy8gc2NoZWR1bGVkIGNhbmNlbCB0aW1lLgot
ICAgICAgICBPcHRpb25hbDxTYXZlZEV2ZW50PiBtX3NhdmVkRXZlbnQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2F2ZWRFdmVudD4gbV9zYXZlZEV2ZW50OwogICAgIH07CiAKICAgICAvLyBTdGF0
ZSBvZiB0aGUgdGltZWxpbmUgZm9yIHRoZSBjdXJyZW50IGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmgKaW5kZXggZTVlYjk0OGYyZGQyZjY5MzQ5NmM1YmEwNzgzMDRjZTY2NmNlMDcwMy4uNjgwOGQw
MmI3NTc4MDBlODE4MjlhNTkwOTc0MzVmNDM0N2U1Y2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5o
CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBtX2VuZFRpbWUgaXMgdGhlIHRp
bWUgdG8gc3RvcCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAgb3Ig
YSB0aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93Iiku
CiAgICAgLy8gSWYgaXQgaGFzbid0IGJlZW4gc2V0IGV4cGxpY2l0bHksIHRoZW4gdGhlIHNvdW5k
IHdpbGwgbm90IHN0b3AgcGxheWluZyAoaWYgbG9vcGluZykgb3Igd2lsbCBzdG9wIHdoZW4gdGhl
IGVuZCBvZiB0aGUgQXVkaW9CdWZmZXIKICAgICAvLyBoYXMgYmVlbiByZWFjaGVkLgotICAgIE9w
dGlvbmFsPGRvdWJsZT4gbV9lbmRUaW1lOyAvLyBpbiBzZWNvbmRzCisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IG1fZW5kVGltZTsgLy8gaW4gc2Vjb25kcwogICAgIGJvb2wgbV9oYXNFbmRlZEV2
ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDAwMjE5
ZjJkMDI5MTgzMDkxMzQ0NTg0MWEwYTRjNzAxYWRkMzc1MjcuLjZhZDA4ODg2YmJmNTcwNjc0MjFh
NGIxYzI2YjY3YTAyNjIwM2RhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTgwLDcgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxKU0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yPj4gbV9wcm9j
ZXNzb3JDb25zdHJ1Y3Rvck1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0aW9uRGF0YT4gbV9wZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0
YTsKLSAgICBPcHRpb25hbDxKU0M6OkpTTG9ja0hvbGRlcj4gbV9sb2NrRHVyaW5nUmVuZGVyaW5n
OworICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU0xvY2tIb2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRl
cmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IGFmYjFhNWFi
MjUzYzE2NTBiYThiYTIxZmRkZmEzZTdmMzMwMDg3NmYuLmJhYzliMTRhYjFkNzQ0Y2M5M2IwNWI4
NzcxMmJiYmRlNGFhZjA5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29y
a2xldE5vZGU6On5BdWRpb1dvcmtsZXROb2RlKCkKICAgICB1bmluaXRpYWxpemUoKTsKIH0KIAot
dm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZl
Y3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBjb25zdCBPcHRpb25hbDxW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4mIHBhcmFtVmFsdWVzKQor
dm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZl
Y3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1
ZXMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYXJhbWV0
ZXJzLT5tYXAoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAppbmRleCAyNDBjNDVjZmE4ZTVjOTk3OWM0ZDY1YmVm
N2FlYTRlNTlmM2Y2NWMxLi5jNTRmYzhiNzRlNzMxZjZkNWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQo
KSB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0
cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFy
YW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURlc2NyaXB0b3I+JiwgY29uc3QgT3B0aW9u
YWw8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+JiBwYXJhbVZhbHVl
cyk7CisgICAgdm9pZCBpbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRp
b1BhcmFtRGVzY3JpcHRvcj4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZh
bHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpOwogCiBwcml2YXRlOgogICAg
IEF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
QXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9w
dGlvbnMuaAppbmRleCA4MDc1NzIyYzUzMDYxYzhjNjZjN2ExYTQ4OGRhNmYxN2VlOGEwZWM5Li5h
MmE5ZGFiZmFlZDkxODljNDJhMGVkNjMzYzJlYTE4MmY3NGJiNGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9u
cy5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdWRpb1dv
cmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMgewogICAgIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSAxOwotICAgIE9w
dGlvbmFsPFZlY3Rvcjx1bnNpZ25lZD4+IG91dHB1dENoYW5uZWxDb3VudDsKLSAgICBPcHRpb25h
bDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4gcGFyYW1ldGVyRGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1bnNpZ25lZD4+IG91dHB1dENoYW5uZWxDb3Vu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRv
dWJsZT4+PiBwYXJhbWV0ZXJEYXRhOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBy
b2Nlc3Nvck9wdGlvbnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAwZTNkM2Y4NzFjYzYzMjNlNjA0NzJi
NmVlZjc2ZDYzZGQ5Y2MwZjMwLi44N2ZkYTZkZjNmNzBkMDk0NWIwNGY4ZmRhYzBjMjQ5MTI3MzE3
ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBCYXNlQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZD
aAogICAgIHJldHVybiBBdWRpb0J1ZmZlcjo6Y3JlYXRlKEF1ZGlvQnVmZmVyT3B0aW9ucyB7bnVt
YmVyT2ZDaGFubmVscywgbGVuZ3RoLCBzYW1wbGVSYXRlfSk7CiB9CiAKLXZvaWQgQmFzZUF1ZGlv
Q29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgT3B0aW9uYWw8UmVmPERlZmVycmVkUHJv
bWlzZT4+JiYgcHJvbWlzZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRh
KFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JD
YWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNlPj4mJiBwcm9taXNlKQog
ewogICAgIGlmIChwcm9taXNlICYmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+aXNGdWxs
eUFjdGl2ZSgpKSkgewogICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgIkRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUiX3MgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4
dC5oCmluZGV4IGYzZTY4YjFiM2NmZmNkZTVlZTgwZWFlM2RiN2Y5Mjc3YmU2ODg0YjYuLmZhYTNk
N2UxM2Y2ZmJmNGY1NTg5MTg4NjQ2YWRkZTg4YzhhOGFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKIAog
ICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCi0gICAgdm9pZCBk
ZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxs
YmFjaz4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIE9wdGlvbmFsPFJlZjxEZWZl
cnJlZFByb21pc2U+PiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgc3RkOjpvcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9t
aXNlPj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBBdWRpb0xpc3RlbmVyJiBsaXN0ZW5lcigp
IHsgcmV0dXJuIG1fbGlzdGVuZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmlu
ZGV4IGI2MGMyMmEzNzFjNWY5Mjg1NGJmYzM2ZTBjNWM4MzY3YzY0NzVmNTIuLmJkZDAyZGRhZDE1
ZjEzOTY5OTM3NjljYzBlMzIzZjMyMDA5M2UxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKK0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
RGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUudmFsdWVfb3IoQXVkaW9EZXN0aW5h
dGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkpKQogewogICAgIEFTU0VSVChCYXNlQXVkaW9Db250
ZXh0Ojppc1N1cHBvcnRlZFNhbXBsZVJhdGUoQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1w
bGVSYXRlKCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZv
aWQoKT4mJik+IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZGlzcGF0Y2hUb1JlbmRlcgog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6c3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0lu
aXRpYWxpemVkKCkpOwogICAgIGlmICghaXNJbml0aWFsaXplZCgpKQpAQCAtMTYyLDcgKzE2Miw3
IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlz
cGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCksIFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aQogICAgIH0pOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICBpZiAo
IWlzSW5pdGlhbGl6ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggOGNmMTQ4
OTNlYzVjM2RlZmE0ZDkwZTA4YTU0YjNkM2ZkMGRmMDc4Zi4uNGIwOGU1MDFjYzJiZDAxNWM5YzUw
NmY1Nzg0Y2MwZGE0ZTg5N2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUsIHB1YmxpYyBB
dWRpb0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgT3B0aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUgPSBz
dGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShB
dWRpb0NvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gc3RkOjpudWxs
b3B0KTsKICAgICB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKICAgICBBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogCiAgICAgdW5zaWdu
ZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBzdGFydFJlbmRlcmlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFs
OwotICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJik7Ci0gICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Cisg
ICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJik+JiYpOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1f
bXV0ZWQgPSBtdXRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjE4ZThkNThiMmNmNTRjZTE3Zjdm
ODAyNmFhNzkyNzU2ZTY0ZmE0OS4uZTFiMGYwMmUxYWQzMzllMzQ1NzljNzZmNGIyNDI3YTFlMzNm
NWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBPZmZsaW5lQXVk
aW9Db250ZXh0OjpzdGFydFJlbmRlcmluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdGFydFJlbmRl
cmluZyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnN0YXJ0UmVuZGVyaW5nKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogICAgIEFTU0VSVChzdGF0ZSgpID09
IEF1ZGlvQ29udGV4dFN0YXRlOjpTdXNwZW5kZWQpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdGFy
dFJlbmRlcmluZyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnN0YXJ0UmVuZGVyaW5nKFt0
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA3Y2JhNDFjOTNjMzdiYmRmYWI2MDA5NDdj
MTgxMzEwNTIyYjFhNWYzLi4zODYyZDA5NzQzZGIzZDA5NmZhZmFkMmZmNDFkNDY3YTFjMjhmNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9p
ZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9O
b2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjOTU0Njhk
OWU3ZTVmZTU2ZTNmNzI5NTZmYjY3NjdmNTYwMzQyODU0Li5lZmRkYTQ2YmQzYWE1MjZmYWNhZjhj
ZGExMDMzN2M1ZDA2NzJiN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKICAgICB2b2lk
IGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQotICAgIHZvaWQgc3RhcnRSZW5k
ZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBlbnVt
IGNsYXNzIFJlbmRlclJlc3VsdCB7IEZhaWx1cmUsIFN1c3BlbmRlZCwgQ29tcGxldGUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlT3B0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRp
b25zLmgKaW5kZXggNjYzYjI0YzUwZDE0M2FkZDMzYzNmZmE0NzFjZTk1MDgzNGQ0Nzc0Yy4uYjQ0
YWM2NjY5OTFhMzM0NmNlNTk5Y2YxYzI2ZDRlNDgyMWU1NTU1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25zLmgKQEAgLTM0
LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBlcmlvZGljV2F2ZU9w
dGlvbnMgOiBQZXJpb2RpY1dhdmVDb25zdHJhaW50cyB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGZs
b2F0Pj4gcmVhbDsKLSAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBpbWFnOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPGZsb2F0Pj4gcmVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxm
bG9hdD4+IGltYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJPcHRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJPcHRpb25zLmgKaW5kZXggNzdj
YmVmMzJkNzI4ODIxNzJlNTkzNjlkODA0MWExM2QxMTdhOWM1OC4uNDMzNmE4ZjQwMmIzNmNmYjkx
YjQ0MzFiNTA3YWY1Njk0Zjg2MTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2F2ZVNoYXBlck9wdGlvbnMgOiBBdWRpb05vZGVPcHRp
b25zIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBjdXJ2ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxmbG9hdD4+IGN1cnZlOwogICAgIE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUg
eyBPdmVyU2FtcGxlVHlwZTo6Tm9uZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmgKaW5kZXggOWRmYmNmYTU2ZjQxZTE5MTVmYzk5NWY0ZmE0MzA3YjQ3
MDQ2ZTc3MC4uNzE0YzFjYjA1MTgwNGVjZTE3ZDdjOWIyZGQ2ZGU0ZWYzYjc4ZDYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCkBAIC0zNiw3ICszNiw3IEBA
IHN0cnVjdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogICAgIGJvb2wg
Z29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ2LDE3ICs0NiwxNyBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0czo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4gQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50SW5wdXRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgcmVzdWx0OwogCi0gICAgT3B0aW9u
YWw8U3RyaW5nPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwaWQ7CiAgICAg
ZGVjb2RlciA+PiBhcHBpZDsKICAgICBpZiAoIWFwcGlkKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFwcGlkKTsKIAotICAgIE9wdGlv
bmFsPGJvb2w+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKICAgICBkZWNvZGVyID4+IGdvb2dsZUxlZ2Fj
eUFwcGlkU3VwcG9ydDsKICAgICBpZiAoIWdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmgKaW5kZXggMjhmZjgzZmUxNGQ2OGI1MGY4MjlmNjI0NzZhMGFlOTcyMDYxZWYz
Ny4uZDk5MTRjMmEwNjcwZTZjNzgxZGIzMTNhMDk0NjczZjJmMmJmMWM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRPdXRwdXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dE91dHB1dHMgewotICAgIE9wdGlvbmFsPGJvb2w+IGFwcGlkOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYXBwaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZS5jcHAKaW5kZXggMGJmMjNmMDI4NTZiODAwNzVhZGM2YWMwOWRkZTc0
ZTFlZjM4M2FlMC4uMDczNDViMzdiZTMwZjU1ZGRmZTUwZDFhNmM3ZGMyZjE5YWY1ZTk5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4m
JiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlC
dWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0
aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiBleHRlbnNpb25z
KQorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucykKIHsKICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uo
V1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25h
dHVyZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKICAgICBpZiAoZXh0ZW5zaW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJhZDY2NWUxMjgxODAzYTIyMjJmZTIzNmVl
NjA1NGJiZGM5YWYxMDAuLjgwMTFmY2NkM2NkNDgwMDhkNjkzN2UwM2NhNjk0YTdjYzJkNDJlNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6
IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYm
IHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1
ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRp
b25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKKyAgICBzdGF0
aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1
ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8
QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRs
ZSwgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUs
IFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmNwcAppbmRleCAzZDU2NmY4N2FlYjlhMDE3ZGMwYTk5OTc2YTc4NjFjMzI4ZTZkZTFhLi43MzQz
NmE3MjIwZjdmMWVmNzEyMWI0MTMyZWMwNGUzODA4NWVmM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFN0cmluZyBwcm9jZXNzQXBwSWRFeHRl
bnNpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0SWQsIGNvbnN0IFN0cmluZyYKIH0KIAog
Ly8gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGZvciBnb29nbGUuY29tIGlzIHRvIGFsd2F5cyB0dXJu
IG9uIHRoZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KLXN0YXRpYyBib29sIHByb2Nlc3NHb29nbGVM
ZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oY29uc3QgT3B0aW9uYWw8QXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50SW5wdXRzPiYgZXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBycElkKQor
c3RhdGljIGJvb2wgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25z
dCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4
dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcnBJZCkKIHsKICAgICBpZiAocnBJZCAhPSAiZ29vZ2xl
LmNvbSJfcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRl
eCA2MWExYmJiMDI0YTZmYTUwMzFiYzEwOTRiODIzZDgxNTdmNzY0ZWJjLi4yMzgwYTQyZDVmYTVh
Y2M5N2EwZjA2ZjU4NTFmODdkZWMzY2MwOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSB7CiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiByYXdJZDsKIAogICAgIC8vIEV4dGVuc2lvbnMKLSAgICBPcHRpb25h
bDxib29sPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFwcGlkOwogCiAgICAgLy8g
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGF0dGVzdGF0aW9uT2JqZWN0OwpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVBcnJheUJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBcnJheUJ1ZmZlciYgYnVmZmVyKQogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxl
bmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xMTQsMTEgKzExNCwxMSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gQXV0
aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGEgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGlzRW1wdHk7CiAgICAgZGVjb2RlciA+PiBpc0VtcHR5OwogICAgIGlmICgh
aXNFbXB0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyOSw3ICsxMjksNyBA
QCBPcHRpb25hbDxBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhPiBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghcmVzdWx0LnJhd0lkKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXV0aGVu
dGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlOwogICAgIGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRp
b25SZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1MCwxMyArMTUw
LDEzIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFyZXN1bHQuc2lnbmF0dXJl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8
Ym9vbD4+IGFwcGlkOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4gYXBw
aWQ7CiAgICAgZGVjb2RlciA+PiBhcHBpZDsKICAgICBpZiAoIWFwcGlkKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFwcGlkKTsKIAot
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBoYXNVc2VySGFuZGxlOwogICAgIGRlY29kZXIgPj4gaGFzVXNlckhhbmRsZTsKICAgICBpZiAo
IWhhc1VzZXJIYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDcyODQwNjc0OTM3ZjI5NGZiMzI1ZWM2
YTg4NTY2Yjg5ZjJmZDAyNzMuLmJiOWZkNDY0OTYzYjcxZWUyNWUzNmVhODBmZTcwNTAxYWIyMmJj
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC02MCwxNiAr
NjAsMTYgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgewogICAg
ICAgICBpbnQ2NF90IGFsZzsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBk
ZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhIHsKLSAgICAgICAgT3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+
IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICAgICAgYm9vbCBy
ZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9OwogICAgICAgICBVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6
UHJlZmVycmVkIH07CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
fTsKIAogICAgIFJwRW50aXR5IHJwOwpAQCAtNzgsMTQgKzc4LDE0IEBAIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHsKICAgICBCdWZmZXJTb3VyY2UgY2hhbGxlbmdl
OwogICAgIFZlY3RvcjxQYXJhbWV0ZXJzPiBwdWJLZXlDcmVkUGFyYW1zOwogCi0gICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91
dDsKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGV4Y2x1ZGVDcmVk
ZW50aWFsczsKLSAgICBPcHRpb25hbDxBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGF1
dGhlbnRpY2F0b3JTZWxlY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uQ3JpdGVyaWE+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAgQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZSBhdHRlc3RhdGlvbjsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4gZXh0ZW5zaW9uczsKKyAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBl
eHRlbnNpb25zOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0
ZXJzPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOjpQYXJhbWV0ZXJzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC50eXBlKSkKQEAgLTExNCwxNyArMTE0LDE3IEBAIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOjplbmNvZGUoCiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJp
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYT4gUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNy
aXRlcmlhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgcmVzdWx0
OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+PiBhdXRo
ZW50aWNhdG9yQXR0YWNobWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXV0
aGVudGljYXRvckF0dGFjaG1lbnQ+PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICBkZWNv
ZGVyID4+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OwogICAgIGlmICghYXV0aGVudGljYXRvckF0
dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmF1dGhl
bnRpY2F0b3JBdHRhY2htZW50ID0gV1RGTW92ZSgqYXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWlyZVJlc2lkZW50S2V5OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gcmVxdWlyZVJlc2lkZW50S2V5OwogICAgIGRlY29kZXIgPj4gcmVxdWlyZVJlc2lk
ZW50S2V5OwogICAgIGlmICghcmVxdWlyZVJlc2lkZW50S2V5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyByZXN1
bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucnAuaWQpKQpAQCAtMTY2LDcgKzE2
Niw3IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQucHViS2V5Q3JlZFBhcmFtcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gdGltZW91dDsKICAgICBkZWNvZGVyID4+IHRp
bWVvdXQ7CiAgICAgaWYgKCF0aW1lb3V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTc1LDE5ICsxNzUsMTkgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhPj4gYXV0aGVudGljYXRvclNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPj4gYXV0aGVudGlj
YXRvclNlbGVjdGlvbjsKICAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAg
ICAgaWYgKCFhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZSgqYXV0aGVu
dGljYXRvclNlbGVjdGlvbik7CiAKLSAgICBPcHRpb25hbDxBdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlPiBhdHRlc3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2U+IGF0dGVzdGF0aW9uOwogICAgIGRlY29kZXIgPj4gYXR0ZXN0YXRp
b247CiAgICAgaWYgKCFhdHRlc3RhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXN1bHQuYXR0ZXN0YXRpb24gPSBXVEZNb3ZlKCphdHRlc3RhdGlvbik7CiAKLSAgICBP
cHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBl
eHRlbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNpb25zOwogICAgIGRlY29kZXIgPj4gZXh0
ZW5zaW9uczsKICAgICBpZiAoIWV4dGVuc2lvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tl
eUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKaW5kZXggMzJiYjcyOGFiZTgxNjY5NTJj
ZDU5NzUxY2NhOGQ5NGY4YzZkZmQ4Yi4uZDI5YmUwMzJhYjc3NjMyMWE3NWExMzYzY2M3OTMyMTYw
ZjU0NTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaApAQCAtNDAsNyArNDAsNyBA
QCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgewogICAgIFZlY3RvcjxBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0
b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciByZXN1bHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaAppbmRleCBlYTI1MmE0ZjMzNWE2MjQ0M2YxYmJhNWI4ZWUwN2JlZjk3MWVmNzY2
Li5jY2JhMGMzZmE1MDZmMjdjMTQ0MDViZTM3MGJjOWRjODg3MTE1NDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKQEAgLTM4LDE1ICszOCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEJ1ZmZlclNvdXJjZSBjaGFsbGVuZ2U7Ci0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGlt
ZW91dDsKICAgICBtdXRhYmxlIFN0cmluZyBycElkOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVk
ZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dDcmVkZW50aWFsczsKICAgICBVc2VyVmVyaWZpY2F0aW9u
UmVxdWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVu
dDo6UHJlZmVycmVkIH07Ci0gICAgT3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OwotICAgIG11dGFibGUgT3B0aW9uYWw8QXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8
QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+
IGV4dGVuc2lvbnM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTU5LDExICs1OSwxMSBAQCB2b2lkIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB0aW1lb3V0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAg
ZGVjb2RlciA+PiB0aW1lb3V0OwogICAgIGlmICghdGltZW91dCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTc0LDEzICs3NCwxMyBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsbG93Q3JlZGVudGlhbHMpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNl
clZlcmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJWZXJpZmljYXRpb24pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJWZXJpZmljYXRpb24gPSBXVEZNb3ZlKCp1
c2VyVmVyaWZpY2F0aW9uKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lvbnM7CisgICAgc3RkOjpvcHRpb25hbDxz
dGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVu
c2lvbnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNpb25zOwogICAgIGlmICghZXh0ZW5zaW9ucykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCmluZGV4IDczZDI2M2ZjMjJjOTFl
ZDAzZDFmOTNiNjI4ZjBmODg3YzM1Y2E0ZmUuLjAxYjY5Mzc4ZGFjOWJmN2Q0YzQxMzNiZTk2ZGM3
NzI5ODA3Njk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
YXBkdS9BcGR1Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9hcGR1L0FwZHVDb21tYW5kLmNwcApAQCAtNDcsNyArNDcsNyBAQCB1aW50MTZfdCBwYXJzZU1l
c3NhZ2VMZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlLCBzaXplX3Qgb2Zmc2V0
KQogCiB9IC8vIG5hbWVzcGFjZQogCi1PcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6
OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzc2FnZSkKK3N0ZDo6
b3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpIDwg
a0FwZHVNaW5IZWFkZXIgfHwgbWVzc2FnZS5zaXplKCkgPiBrQXBkdU1heExlbmd0aCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmgKaW5kZXggNmE5ZTZjYjRmZTMyY2FmYTdjMDU3OTdk
MzRkZGZhMTIyMjk0YzdjNC4uMjgxMTFhNWE4NWQ1NDE3NDcwMGJjZDlhZDFkYjMzYmEyNDk3OTE5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVD
b21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVD
b21tYW5kLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXBkdUNvbW1h
bmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFwZHVDb21tYW5kKTsKIHB1YmxpYzoKICAg
ICAvLyBDb25zdHJ1Y3RzIGFuIEFQRFUgY29tbWFuZCBmcm9tIHRoZSBzZXJpYWxpemVkIG1lc3Nh
Z2UgZGF0YS4KLSAgICBzdGF0aWMgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IGNyZWF0ZUZyb21NZXNz
YWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
ZHVDb21tYW5kPiBjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIAog
ICAgIEFwZHVDb21tYW5kKCkgPSBkZWZhdWx0OwogICAgIEFwZHVDb21tYW5kKApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcApp
bmRleCA5M2E1ZmFhZDRjMTVkNTVkY2I3N2Y3ZTgyZTgwNDAwMzM5OThiNzM3Li43MGViNTk1NGM2
ZGE1MWYwMzdhNjA2NThiOGE1ZmI1NjM2MDM5NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogbmFtZXNwYWNlIGFwZHUgewogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPEFwZHVSZXNwb25z
ZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpCitzdGQ6Om9wdGlvbmFsPEFwZHVSZXNwb25zZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVG
cm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gSW52YWxp
ZCBtZXNzYWdlIHNpemUsIGRhdGEgaXMgYXBwZW5kZWQgYnkgc3RhdHVzIGJ5dGUuCiAgICAgaWYg
KGRhdGEuc2l6ZSgpIDwgMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vYXBkdS9BcGR1UmVzcG9uc2UuaAppbmRleCA2MzU1Yjg0Yjk1ZWQ1OTkxZTBiY2Q5Y2Y2ZjA1
NDU4MTU5MzhkYjExLi5kZjcxMjM1YmZiZmJmZGJiZWI1MjA2YjA1MTQzZTAzYTg3ZmEwYmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3Bv
bnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNw
b25zZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRl
IGEgQVBEVSByZXNwb25zZSBmcm9tIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCi0gICAgc3RhdGlj
IE9wdGlvbmFsPEFwZHVSZXNwb25zZT4gY3JlYXRlRnJvbU1lc3NhZ2UoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcGR1UmVzcG9uc2U+IGNy
ZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CiAKICAgICBBcGR1
UmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgU3RhdHVzKTsKICAgICBBcGR1UmVzcG9u
c2UoQXBkdVJlc3BvbnNlJiYgdGhhdCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwCmluZGV4IGVlNTgzMjBhZTM4
ZTlhMTljNDI2ZDlkNmRiZjBhYTc2N2Q3M2UzYzUuLjEzYzgwZmFjYmNkYjNkYWQ0MTIyMDkzNzVm
NmY5ZDQ5NTdkODk5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vY2Jvci9DQk9SUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCBDQk9SUmVhZGVyOjp+
Q0JPUlJlYWRlcigpCiB9CiAKIC8vIHN0YXRpYwotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVh
ZGVyOjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCwg
aW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVy
OjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCwgaW50
IG1heE5lc3RpbmdMZXZlbCkKIHsKICAgICBDQk9SUmVhZGVyIHJlYWRlcihkYXRhLmJlZ2luKCks
IGRhdGEuZW5kKCkpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gZGVjb2RlZENib3IgPSByZWFk
ZXIuZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZh
bHVlPiBkZWNvZGVkQ2JvciA9IHJlYWRlci5kZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCk7CiAK
ICAgICBpZiAoZGVjb2RlZENib3IpCiAgICAgICAgIHJlYWRlci5jaGVja0V4dHJhbmVvdXNEYXRh
KCk7CkBAIC05NSw3ICs5NSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVh
ZChjb25zdCBCeXRlcyYgZGF0YSwgRGVjb2RlckVycm9yKiBlcnJvckNvZGVPCiAgICAgcmV0dXJu
IGRlY29kZWRDYm9yOwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29k
ZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9S
UmVhZGVyOjpkZWNvZGVDQk9SKGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAgaWYgKG1heE5l
c3RpbmdMZXZlbCA8IDAgfHwgbWF4TmVzdGluZ0xldmVsID4ga0NCT1JNYXhEZXB0aCkgewogICAg
ICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VG9vTXVjaE5lc3Rpbmc7CkBAIC0xNzQs
NyArMTc0LDcgQEAgYm9vbCBDQk9SUmVhZGVyOjpyZWFkVmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVp
bnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90KiB2YWwKICAgICByZXR1cm4gY2hlY2tNaW5p
bWFsRW5jb2RpbmcoYWRkaXRpb25hbEJ5dGVzLCBpbnREYXRhKTsKIH0KIAotT3B0aW9uYWw8Q0JP
UlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3QgdmFsdWUp
CitzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb05lZ2F0
aXZlKHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpIHsKICAgICAgICAgbV9l
cnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFuZ2VJbnRlZ2VyVmFsdWU7CkBAIC0xODMs
NyArMTgzLDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRv
TmVnYXRpdmUodWludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIENCT1JWYWx1ZSgtc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpIC0gMSk7CiB9CiAKLU9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJl
YWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVlKQorc3RkOjpvcHRpb25h
bDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZVZhbHVlVG9VbnNpZ25lZCh1aW50NjRfdCB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSB7CiAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVj
b2RlckVycm9yOjpPdXRPZlJhbmdlSW50ZWdlclZhbHVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIE9w
dGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2
NF90IHZhbHVlKQogICAgIHJldHVybiBDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFs
dWUpKTsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU2ltcGxlVmFs
dWUodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3QgdmFsdWUpCitzdGQ6Om9wdGlvbmFs
PENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25h
bEluZm8sIHVpbnQ2NF90IHZhbHVlKQogewogICAgIC8vIEZsb2F0aW5nIHBvaW50IG51bWJlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCiAgICAgaWYgKGFkZGl0aW9uYWxJbmZvID4gMjQgJiYgYWRkaXRp
b25hbEluZm8gPCAyOCkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4g
Q0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2
NF90CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBD
Qk9SUmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKQorc3RkOjpvcHRpb25hbDxD
Qk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTdHJpbmcodWludDY0X3QgbnVtQnl0ZXMpCiB7CiAg
ICAgaWYgKCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERl
Y29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFN0cmluZyh1aW50NjRfdCBudW1CeXRlcykK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JS
ZWFkZXI6OnJlYWRCeXRlcyh1aW50NjRfdCBudW1CeXRlcykKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZh
bHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYg
KCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJF
cnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpAQCAtMjQ3LDExICsyNDcsMTEgQEAgT3B0aW9uYWw8
Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpCiAgICAg
cmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JCeXRlU3RyaW5nKSk7CiB9CiAKLU9wdGlvbmFs
PENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGlu
dCBtYXhOZXN0aW5nTGV2ZWwpCitzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6
cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAg
ICAgQ0JPUlZhbHVlOjpBcnJheVZhbHVlIGNib3JBcnJheTsKICAgICB3aGlsZSAobGVuZ3RoLS0g
PiAwKSB7Ci0gICAgICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gY2JvckVsZW1lbnQgPSBkZWNvZGVD
Qk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENCT1JWYWx1
ZT4gY2JvckVsZW1lbnQgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwogICAgICAg
ICBpZiAoIWNib3JFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgY2JvckFycmF5LmFwcGVuZChXVEZNb3ZlKGNib3JFbGVtZW50LnZhbHVlKCkpKTsKQEAg
LTI1OSwxMiArMjU5LDEyIEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENC
T1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2CiAgICAgcmV0dXJuIENC
T1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJheSkpOwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENC
T1JSZWFkZXI6OnJlYWRDQk9STWFwKHVpbnQ2NF90IGxlbmd0aCwgaW50IG1heE5lc3RpbmdMZXZl
bCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQ0JPUk1hcCh1aW50
NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBW
YWx1ZSBjYm9yTWFwOwogICAgIHdoaWxlIChsZW5ndGgtLSA+IDApIHsKLSAgICAgICAgT3B0aW9u
YWw8Q0JPUlZhbHVlPiBrZXkgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwotICAg
ICAgICBPcHRpb25hbDxDQk9SVmFsdWU+IHZhbHVlID0gZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2
ZWwgLSAxKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGtleSA9IGRlY29kZUNC
T1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVl
PiB2YWx1ZSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CiAgICAgICAgIGlmICgh
a2V5IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5oCmluZGV4
IDdmYmYzMzU5ZTI1ODM5ZWJiNmEyM2JmZDgwYmE2ZWRlNDJkMTlhZjAuLjE2MTY0ZGVkNGU0NWU3
YmM0YjgwOGZkZjY4ZWJlOGJmY2Y0Nzc1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuaApAQCAtMTAxLDIyICsxMDEsMjIgQEAgcHVi
bGljOgogICAgIC8vIENCT1IgZGF0YS0gdGhlbiBhbiBlbXB0eSBvcHRpb25hbCBpcyByZXR1cm5l
ZC4gT3B0aW9uYWwgfGVycm9yQ29kZU91dHwKICAgICAvLyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhl
IGNhbGxlciB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dAogICAgIC8vIGRl
Y29kaW5nIGZhaWx1cmVzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxDQk9S
VmFsdWU+IHJlYWQoY29uc3QgQnl0ZXMmLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCA9IG51
bGxwdHIsIGludCBtYXhOZXN0aW5nTGV2ZWwgPSBrQ0JPUk1heERlcHRoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IHJlYWQoY29uc3QgQnl0ZXMm
LCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCA9IG51bGxwdHIsIGludCBtYXhOZXN0aW5nTGV2
ZWwgPSBrQ0JPUk1heERlcHRoKTsKIAogICAgIC8vIFRyYW5zbGF0ZXMgZXJyb3JzIHRvIGh1bWFu
LXJlYWRhYmxlIGVycm9yIG1lc3NhZ2VzLgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvckNv
ZGVUb1N0cmluZyhEZWNvZGVyRXJyb3IgZXJyb3JDb2RlKTsKIAogcHJpdmF0ZToKICAgICBDQk9S
UmVhZGVyKEJ5dGVzOjpjb25zdF9pdGVyYXRvciwgY29uc3QgQnl0ZXM6OmNvbnN0X2l0ZXJhdG9y
KTsKLSAgICBPcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZl
bCk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBkZWNvZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0
X3QgdmFsdWUpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gZGVjb2RlVmFsdWVUb1Vuc2lnbmVk
KHVpbnQ2NF90IHZhbHVlKTsKLSAgICBPcHRpb25hbDxDQk9SVmFsdWU+IHJlYWRTaW1wbGVWYWx1
ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRp
b25hbDxDQk9SVmFsdWU+IGRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCk7CisgICAgc3Rk
OjpvcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZVZhbHVlVG9OZWdhdGl2ZSh1aW50NjRfdCB2YWx1
ZSk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZVZhbHVlVG9VbnNpZ25lZCh1
aW50NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IHJlYWRTaW1wbGVW
YWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCB2YWx1ZSk7CiAgICAgYm9vbCBy
ZWFkVmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90
KiB2YWx1ZSk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQnl0ZXModWludDY0X3QgbnVt
Qnl0ZXMpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gcmVhZFN0cmluZyh1aW50NjRfdCBudW1C
eXRlcyk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JPUkFycmF5KHVpbnQ2NF90IGxl
bmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbCk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFk
Q0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpOworICAgIHN0
ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gcmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgs
IGludCBtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFk
Q0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpOwogICAgIGJvb2wg
Y2FuQ29uc3VtZSh1aW50NjRfdCBieXRlcyk7CiAgICAgdm9pZCBjaGVja0V4dHJhbmVvdXNEYXRh
KCk7CiAgICAgYm9vbCBjaGVja0R1cGxpY2F0ZUtleShjb25zdCBDQk9SVmFsdWUmIG5ld0tleSwg
Y29uc3QgQ0JPUlZhbHVlOjpNYXBWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwCmluZGV4IDhjZWY0ZWFiY2M5ZjMwZTZl
YjgwYjFlYTY4MWMyODUzYmIzNjMxMTIuLjcxZjU4YzAyNmFiYmRkNzIxYTVmYThjNjI0OTMzZTk4
NzFkODkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jv
ci9DQk9SV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Ni
b3IvQ0JPUldyaXRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQ0JPUldyaXRlcjo6fkNCT1JXcml0
ZXIoKQogfQogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ0JPUldyaXRl
cjo6d3JpdGUoY29uc3QgQ0JPUlZhbHVlJiBub2RlLCBzaXplX3QgbWF4TmVzdGluZ0xldmVsKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENCT1JXcml0ZXI6OndyaXRlKGNvbnN0IENC
T1JWYWx1ZSYgbm9kZSwgc2l6ZV90IG1heE5lc3RpbmdMZXZlbCkKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gY2JvcjsKICAgICBDQk9SV3JpdGVyIHdyaXRlcigmY2Jvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuaAppbmRleCBiNTI1NjE3
Njg2YWE5NWUyN2M0MWJlNTFiNjc1YmU1MGU5NmMwMmQ5Li41Zjk0NmMxMDA1NWZjNTU2MDM4Mjll
NjkzNGM5YmE4MDZjYzllZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2Nib3IvQ0JPUldyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vY2Jvci9DQk9SV3JpdGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIC8v
IGFycmF5cy9tYXBzIHRoYXQgaGFzIHRvIGJlIHRyYXZlcnNlZCB0byByZWFjaCB0aGUgbW9zdCBu
ZXN0ZWQgQ0JPUlZhbHVlCiAgICAgLy8gY29udGFpbmVkIGluIHxub2RlfC4gUHJpbWl0aXZlIHZh
bHVlcyBhbmQgZW1wdHkgY29udGFpbmVycyBoYXZlIG5lc3RpbmcKICAgICAvLyBkZXB0aHMgb2Yg
MC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3
cml0ZShjb25zdCBDQk9SVmFsdWUmLCBzaXplX3QgbWF4TmVzdGluZ0xldmVsID0ga0RlZmF1bHRN
YXhOZXN0aW5nRGVwdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gd3JpdGUoY29uc3QgQ0JPUlZhbHVlJiwgc2l6ZV90IG1heE5lc3Rp
bmdMZXZlbCA9IGtEZWZhdWx0TWF4TmVzdGluZ0RlcHRoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBDQk9SV3JpdGVyKFZlY3Rvcjx1aW50OF90PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0
SW5mb1Jlc3BvbnNlLmgKaW5kZXggMDBlNTU3NTQyM2M1Yjk3OWI1MTg0OGIyNDljZTQ4M2NiNzMy
ZGZhYy4uYzA2M2M0ZjVjOTM1Zjk3M2RjMTE1NDAyMDM1OTdjNTg1NmMzNGFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJ
bmZvUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCkBAIC01NSwxNyArNTUsMTcgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RkU2V0PFByb3RvY29sVmVyc2lvbj4mIHZlcnNpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJzaW9uczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWFndWlk
KCkgY29uc3QgeyByZXR1cm4gbV9hYWd1aWQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDx1aW50MzJf
dD4mIG1heE1zZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX21heE1zZ1NpemU7IH0KLSAgICBjb25z
dCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBwaW5Qcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGluUHJvdG9jb2xzOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBl
eHRlbnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25zOyB9CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4mIG1heE1zZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX21heE1z
Z1NpemU7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIHBpblBy
b3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9waW5Qcm90b2NvbHM7IH0KKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgZXh0ZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
ZXh0ZW5zaW9uczsgfQogICAgIGNvbnN0IEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zJiBv
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgU3Rk
U2V0PFByb3RvY29sVmVyc2lvbj4gbV92ZXJzaW9uczsKICAgICBWZWN0b3I8dWludDhfdD4gbV9h
YWd1aWQ7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TXNnU2l6ZTsKLSAgICBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IG1fcGluUHJvdG9jb2xzOwotICAgIE9wdGlvbmFsPFZlY3RvcjxT
dHJpbmc+PiBtX2V4dGVuc2lvbnM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhN
c2dTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtX3BpblByb3RvY29s
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2V4dGVuc2lvbnM7CiAgICAg
QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgbV9vcHRpb25zOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252
ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
cXVlc3RDb252ZXJ0ZXIuY3BwCmluZGV4IGY4ZGY3NWNhMGY3Y2JkMGVmYjliOTQ1OWZiNDYxMTY4
MDA4NzdkODAuLjVjYmRlOTZmZDFlMGU0MmEwMDg5YWFhMzVhNDA5MjA3ODU4NjQyMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0
Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
RGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENCT1JW
YWx1ZSBjb252ZXJ0RGVzY3JpcHRvclRvQ0JPUihjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvciYgZGUKICAgICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckRlc2NyaXB0b3JN
YXApKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFz
Q0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwg
T3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQorVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VD
cmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmls
aXR5IHV2Q2FwYWJpbGl0eSwgc3RkOjpvcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4pCiB7CiAg
ICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNib3JNYXBbQ0JPUlZhbHVlKDEp
XSA9IENCT1JWYWx1ZShoYXNoKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBWZWN0b3I8dWludDhfdD4g
ZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aGFzaCwgYwogICAgIHJldHVybiBjYm9yUmVxdWVzdDsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNo
LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZh
aWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQorVmVj
dG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMm
IG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgc3RkOjpvcHRpb25hbDxQaW5Q
YXJhbWV0ZXJzPiBwaW4pCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAg
IGNib3JNYXBbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZShvcHRpb25zLnJwSWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZp
Y2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggOWEyMTU1MzlmZmM4ZWU0OWIxODY5ODQ3NjQ3
YTI0YjliMjIyMTdjOS4uN2NiMmIzMjVhMWM2N2YwYmY0ZGRjY2VhZDRlZDcwODkyYzk5MzQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgc3Rh
dGljIFByb3RvY29sVmVyc2lvbiBjb252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24oY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQogICAgIHJldHVybiBQcm90b2NvbFZlcnNpb246OmtVbmtub3duOwog
fQogCi1PcHRpb25hbDxjYm9yOjpDQk9SVmFsdWU+IGRlY29kZVJlc3BvbnNlTWFwKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4g
ZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKIHsKICAg
ICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9u
c2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIg
eyBpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07Ci0gICAgT3B0aW9u
YWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIp
OworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJl
YWRlcjo6cmVhZChidWZmZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVk
UmVzcG9uc2UtPmlzTWFwKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIGRlY29kZWRSZXNwb25zZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZWZQdHI8QXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShj
b25zdCBWZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGF0dFN0bXQgPSBpdC0+
c2Vjb25kLmNsb25lKCk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGF0dGVzdGF0
aW9uT2JqZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBhdHRlc3RhdGlv
bk9iamVjdDsKICAgICBpZiAoYXR0ZXN0YXRpb24gPT0gQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZTo6Tm9uZSkgewogICAgICAgICAvLyBUaGUgcmVhc29uIHdoeSB3ZSBjYW4ndCBkaXJl
Y3RseSBwYXNzIGF1dGhlbnRpY2F0b3JEYXRhL2Zvcm1hdC9hdHRTdG10IHRvIGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QKICAgICAgICAgLy8gaXMgdGhhdCB0aGV5IGFyZSBDQk9SVmFsdWUgaW5zdGVh
ZCBvZiB0aGUgcmF3IHR5cGUuCkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBW
ZWN0b3IKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLU9wdGlvbmFsPEF1dGhlbnRpY2F0b3JH
ZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9u
c2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZm
ZXIpCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIp
OwogICAgIGlmICghZGVjb2RlZE1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXgg
MGUxM2FiZGYzOTI5ZDU5MTcyNzczMWNkNmMyZTI5NTRjMDY4OTEyMy4uZTRjNmQ1ZTI0YWFkY2Rj
NTgxZGNkMzY3NzkzMmJlZTYwOTEzZGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAKIC8vIENUQVAgcHJvdG9jb2wsIG51bGwgb3B0aW9uYWwgaXMgcmV0
dXJuZWQuCiBuYW1lc3BhY2UgZmlkbyB7CiAKLU9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVj
b2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitzdGQ6Om9wdGlvbmFsPGNi
b3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CiAKIC8vIFBhcnNlcyByZXNwb25zZSBjb2RlIGZyb20gcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSB0
aGUgYXV0aGVudGljYXRvci4gSWYKIC8vIHVua25vd24gcmVzcG9uc2UgY29kZSB2YWx1ZSBpcyBy
ZWNlaXZlZCwgdGhlbiBDVEFQMl9FUlJfT1RIRVIgaXMgcmV0dXJuZWQuCkBAIC02MSw3ICs2MSw3
IEBAIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNv
ZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlcXVlc3QgdG8KIC8vIEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ugb2JqZWN0LgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmlu
ZGV4IDA1NTNmY2IzZDAxZDBkMjQwNmM1NzU4Mzg4N2UzM2E4ZDA1Y2RhYzEuLjk5YTlmMmMzZTE4
NDIxMzE0ZTIxNTdlZjFhNzMyMDJjNDk0ZmFlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAtMzksNyAr
MzksNyBAQAogbmFtZXNwYWNlIGZpZG8gewogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPEZpZG9IaWRN
ZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hp
ZERldmljZUNvbW1hbmQgdHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorc3RkOjpv
cHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBj
aGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkKIHsKICAgICBpZiAoZGF0YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEZp
ZG9IaWRNZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwg
Rmlkb0hpZERldmljCiB9CiAKIC8vIHN0YXRpYwotT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZp
ZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzZXJpYWxpemVkRGF0YSkKK3N0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9I
aWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzZXJpYWxpemVkRGF0YSkKIHsKICAgICBzaXplX3QgcmVtYWluaW5nU2l6ZSA9IDA7CiAgICAg
aWYgKHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtIaWRQYWNrZXRTaXplIHx8IHNlcmlhbGl6ZWRE
YXRhLnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVhZGVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKaW5kZXggZDQ2
ZmEwZjhkZmI4MjUyMzY0MDg4MTliZjg2NDcyMDc3MzBlYjQ2YS4uMzcyOWU3MDhhMmNhNWFkMDVm
YTc5YWIxYWEyMGJhMDMwZDJlZTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKQEAgLTQzLDEwICs0MywxMCBAQCBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBGaWRvSGlkTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRmlkb0hpZE1lc3NhZ2UpOwogcHVibGljOgogICAgIC8vIFN0YXRpYyBmdW5jdGlvbnMg
dG8gY3JlYXRlIENUQVAvVTJGIEhJRCBjb21tYW5kcy4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rmlk
b0hpZE1lc3NhZ2U+IGNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21t
YW5kLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZpZG9IaWRNZXNzYWdlPiBjcmVhdGUodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2
aWNlQ29tbWFuZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKIAogICAgIC8vIFJlY29u
c3RydWN0IGEgbWVzc2FnZSBmcm9tIHNlcmlhbGl6ZWQgbWVzc2FnZSBkYXRhLgotICAgIHN0YXRp
YyBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gY3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNz
YWdlPiBjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAK
ICAgICBGaWRvSGlkTWVzc2FnZShGaWRvSGlkTWVzc2FnZSYmIHRoYXQpID0gZGVmYXVsdDsKICAg
ICBGaWRvSGlkTWVzc2FnZSYgb3BlcmF0b3I9KEZpZG9IaWRNZXNzYWdlJiYgb3RoZXIpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9Q
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5k
ZXggYWQyODliZmRjZGMyNTBjNjdkYTc2YWFjNjU5YTk3ZTlkNGFkODBiNC4uOTE0MmFiYmM4YzY0
ODE2MjAyOWExMjk3OWU4OTViNjcxMjc4MTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+
IGVuY29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHgsIGNvbnN0IFZlY3Rv
cjx1aW50OF8KICAgICByZXR1cm4gcmF3S2V5OwogfQogCi1PcHRpb25hbDxDU3RyaW5nPiB2YWxp
ZGF0ZUFuZENvbnZlcnRUb1VURjgoY29uc3QgU3RyaW5nJiBwaW4pCitzdGQ6Om9wdGlvbmFsPENT
dHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbikKIHsKICAg
ICBpZiAoIWhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhwaW4pKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5j
b2RlUGluQ29tbWFuZChTdWJjb21tYW5kIHN1YmNvbW1hbmQsIEZ1bmN0aW9uPHZvaWQoQ0JPCiAK
IFJldHJpZXNSZXNwb25zZTo6UmV0cmllc1Jlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi1PcHRpb25h
bDxSZXRyaWVzUmVzcG9uc2U+IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpbkJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVz
UmVzcG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAg
YXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICgh
ZGVjb2RlZE1hcCkKQEAgLTEzMyw3ICsxMzMsNyBAQCBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6S2V5
QWdyZWVtZW50UmVzcG9uc2UoUmVmPENyeXB0b0tleUVDPiYmIHBlZXJLZXkpCiB7CiB9CiAKLU9w
dGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2Uo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8S2V5QWdyZWVt
ZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGluQnVmZmVyKQogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNl
TWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXApCkBAIC0xNDksNyArMTQ5LDcgQEAg
T3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJz
ZShjb25zdCBWZWN0b3I8dWludDhfdD4KICAgICByZXR1cm4gcGFyc2VGcm9tQ09TRShjb3NlS2V5
KTsKIH0KIAotT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3Bv
bnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWx1ZTo6TWFwVmFsdWUmIGNvc2VLZXkpCitz
dGQ6Om9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6
cGFyc2VGcm9tQ09TRShjb25zdCBDQk9SVmFsdWU6Ok1hcFZhbHVlJiBjb3NlS2V5KQogewogICAg
IC8vIFRoZSBDT1NFIGtleSBtdXN0IGJlIGEgUC0yNTYgcG9pbnQuIFNlZQogICAgIC8vIGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3NlY3Rpb24tNy4xCkBAIC0xOTksNyArMTk5
LDcgQEAgVG9rZW5SZXNwb25zZTo6VG9rZW5SZXNwb25zZShSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5
SE1BQz4mJiB0b2tlbikKIHsKIH0KIAotT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4gVG9rZW5SZXNw
b25zZTo6cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPFRva2VuUmVzcG9uc2U+
IFRva2VuUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUFFUyYgc2hhcmVk
S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQogewogICAgIGF1dG8gZGVjb2Rl
ZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXAp
CkBAIC0yNDIsNyArMjQyLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBL
ZXlBZ3JlZW1lbnRSZXF1ZXN0JikKICAgICByZXR1cm4gZW5jb2RlUGluQ29tbWFuZChTdWJjb21t
YW5kOjprR2V0S2V5QWdyZWVtZW50KTsKIH0KIAotT3B0aW9uYWw8VG9rZW5SZXF1ZXN0PiBUb2tl
blJlcXVlc3Q6OnRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBwaW4sIGNvbnN0IENyeXB0b0tleUVD
JiBwZWVyS2V5KQorc3RkOjpvcHRpb25hbDxUb2tlblJlcXVlc3Q+IFRva2VuUmVxdWVzdDo6dHJ5
Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgQ3J5cHRvS2V5RUMmIHBlZXJLZXkpCiB7
CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIFNlY3Rpb24gNS41LjQgR2V0dGluZyBz
aGFyZWRTZWNyZXQgZnJvbSBBdXRoZW50aWNhdG9yLgogICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlh
bmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVu
dGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjZ2V0dGluZ1NoYXJlZFNlY3Jl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oCmluZGV4IGY1YjFl
Y2EyZjU0YWIyNzJmNWY0ZDFmNTdjZGM1ODQ3MTI1MGIzODEuLjVjZTk1MTA5ZjRiNmI3Y2I3YzE3
MmFhYTY1NGY4MDMwNzdkZTVmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9QaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vUGluLmgKQEAgLTg4LDcgKzg4LDcgQEAgV0VCQ09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZh
bHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF8KIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVSYXdQdWJsaWNLZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBYLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIFkpOwogCiAvLyB2YWxpZGF0
ZUFuZENvbnZlcnRUb1VURjggY29udmVydCB0aGUgaW5wdXQgdG8gYSBVVEY4IENTdHJpbmcgaWYg
aXQgaXMgYSBzeW50YWN0aWNhbGx5IHZhbGlkIFBJTi4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbik7CitX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRv
VVRGOChjb25zdCBTdHJpbmcmIHBpbik7CiAKIC8vIGtNaW5CeXRlcyBpcyB0aGUgbWluaW11bSBu
dW1iZXIgb2YgKmJ5dGVzKiBvZiBQSU4gZGF0YSB0aGF0IGEgQ1RBUDIgZGV2aWNlCiAvLyB3aWxs
IGFjY2VwdC4gU2luY2UgdGhlIFBJTiBpcyBVVEYtOCBlbmNvZGVkLCB0aGlzIGNvdWxkIGJlIGEg
c2luZ2xlIGNvZGUKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgUmV0cmllc1JlcXVlc3Qgewog
CiAvLyBSZXRyaWVzUmVzcG9uc2UgcmVmbGVjdHMgYW4gYXV0aGVudGljYXRvcidzIHJlc3BvbnNl
IHRvIGEgfFJldHJpZXNSZXF1ZXN0fC4KIHN0cnVjdCBSZXRyaWVzUmVzcG9uc2UgewotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZXRyaWVzUmVzcG9uc2U+IHBhcnNlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKICAg
ICAvLyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElOIGF0dGVtcHRzIHJlbWFpbmluZyBiZWZv
cmUgdGhlIGF1dGhlbnRpY2F0b3IKICAgICAvLyBsb2Nrcy4KQEAgLTEyNSw4ICsxMjUsOCBAQCBz
dHJ1Y3QgS2V5QWdyZWVtZW50UmVxdWVzdCB7CiAvLyB8S2V5QWdyZWVtZW50UmVxdWVzdHwgYW5k
IGlzIGFsc28gdXNlZCBhcyByZXByZXNlbnRhdGlvbiBvZiB0aGUKIC8vIGF1dGhlbnRpY2F0b3In
cyBlcGhlbWVyYWwga2V5Lgogc3RydWN0IEtleUFncmVlbWVudFJlc3BvbnNlIHsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25h
bDxLZXlBZ3JlZW1lbnRSZXNwb25zZT4gcGFyc2VGcm9tQ09TRShjb25zdCBjYm9yOjpDQk9SVmFs
dWU6Ok1hcFZhbHVlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNl
PiBwYXJzZUZyb21DT1NFKGNvbnN0IGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmKTsKIAogICAg
IFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4gcGVlcktleTsKIApAQCAtMTQwLDcgKzE0MCw3IEBA
IHByaXZhdGU6CiBjbGFzcyBUb2tlblJlcXVlc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRva2VuUmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlv
bmFsPFRva2VuUmVxdWVzdD4gdHJ5Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgV2Vi
Q29yZTo6Q3J5cHRvS2V5RUMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUb2tlblJlcXVlc3Q+IHRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBwaW4sIGNvbnN0IFdl
YkNvcmU6OkNyeXB0b0tleUVDJik7CiAgICAgVG9rZW5SZXF1ZXN0KFRva2VuUmVxdWVzdCYmKSA9
IGRlZmF1bHQ7CiAKICAgICAvLyBzaGFyZWRLZXkgcmV0dXJucyB0aGUgc2hhcmVkIEVDREgga2V5
IHRoYXQgd2FzIHVzZWQgdG8gZW5jcnlwdCB0aGUgUElOLgpAQCAtMTYzLDcgKzE2Myw3IEBAIHBy
aXZhdGU6CiAvLyBuZWVkZWQgdG8gc2hvdyB1c2VyLXZlcmlmaWNhdGlvbiBpbiBmdXR1cmUgb3Bl
cmF0aW9ucy4KIGNsYXNzIFRva2VuUmVzcG9uc2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBPcHRpb25hbDxUb2tlblJlc3BvbnNlPiBwYXJzZShjb25zdCBXZWJDb3JlOjpD
cnlwdG9LZXlBRVMmIHNoYXJlZEtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VG9rZW5SZXNwb25zZT4g
cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIpOwogCiAgICAgLy8gcGluQXV0aCByZXR1cm5zIGEgcGluQXV0
aCBwYXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdpbGwgdXNlIHRoZSBnaXZlbgogICAgIC8v
IGNsaWVudC1kYXRhIGhhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCmluZGV4IDQxMmIy
OTVlMDA3ZGIzYTBhZjViMDZkMWIxZDA1NzhhZGQyMDRlYzguLjExN2Y0MmY2OGVhY2E4ZjVlMzIy
NGFjNTM5N2ZiYjZhNTA2ODc3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljCiAgICAgcmV0dXJuIGNvbW1hbmQu
Z2V0RW5jb2RlZENvbW1hbmQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNh
dGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
SGFuZGxlLCBib29sIGNoZWNrT25seSkKIHsKICAgICBpZiAoa2V5SGFuZGxlLnNpemUoKSA+IGtN
YXhLZXlIYW5kbGVMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05OCw3
ICs5OCw3IEBAIGJvb2wgaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1CiAgICAgcmV0dXJuIChyZXF1ZXN0LnVz
ZXJWZXJpZmljYXRpb24gIT0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCkg
JiYgIXJlcXVlc3QuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCk7CiB9CiAKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmIHJlcXVlc3QpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVy
dFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhh
c2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCiB7
CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjbGkKICAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKHBy
b2R1Y2VScElkSGFzaCghYXBwSWQgPyByZXF1ZXN0LnJwLmlkIDogYXBwSWQpLCBjbGllbnREYXRh
SGFzaCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tP
bmx5U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImIGtleUhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiByZXF1ZXN0LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRv
ciYga2V5SGFuZGxlKQogewogICAgIGlmIChrZXlIYW5kbGUudHlwZSAhPSBQdWJsaWNLZXlDcmVk
ZW50aWFsVHlwZTo6UHVibGljS2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hl
Y2tPbmx5U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiAgICAgcmV0dXJuIGNvbnN0
cnVjdFUyZlNpZ25Db21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50
RGF0YUhhc2gsIGtleUhhbmRsZS5pZFZlY3RvciwgdHJ1ZSAvKiBjaGVja09ubHkgKi8pOwogfQog
Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5k
bGUsIGJvb2wgaXNBcHBJZCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0
VG9VMmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlzQXBwSWQpCiB7CiAgICAgaWYgKCFpc0Nv
bnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTEzMSw3ICsxMzEsNyBAQCBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0Qm9n
dXNVMmZSZWdpc3RyYXRpb25Db21tYW5kKCkKICAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0
ZXJDb21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtCb2d1c0FwcFBhcmFtLCBzaXplb2Yoa0Jv
Z3VzQXBwUGFyYW0pKSwgY29udmVydEJ5dGVzVG9WZWN0b3Ioa0JvZ3VzQ2hhbGxlbmdlLCBzaXpl
b2Yoa0JvZ3VzQ2hhbGxlbmdlKSkpOwogfQogCi1TdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFw
cElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25zKQorU3RyaW5nIHByb2Nlc3NHb29nbGVMZWdhY3lB
cHBJZFN1cHBvcnRFeHRlbnNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25zKQogewogICAgIGlmICghZXh0ZW5zaW9u
cykgewogICAgICAgICAvLyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBzaG91bGQg
YWx3YXlzIHNldCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaAppbmRleCAyODQyNzYyZWQxYzQw
ZWQyNjRiOTAxYzU3NzEyM2MyMDgxZWE5ZDk2Li40ZjhhYzQzMjVlOTVkM2I3ZjVhZWRhZTM1YmVm
NDY4M2Q1ODUzYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCkBAIC01NSwyMCArNTUsMjAg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQo
Y29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3IKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb252ZXJ0
aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJik7CiAKIC8vIEV4dHJhY3RzIEFQRFUgZW5jb2RlZCBVMkYgcmVnaXN0ZXIg
Y29tbWFuZCBmcm9tIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuCi1XRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29t
bWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5k
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKIAogLy8gRXh0cmFjdHMgQVBEVSBl
bmNvZGVkIFUyRiBjaGVjayBvbmx5IHNpZ24gY29tbWFuZCBmcm9tCiAvLyBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLiBJbnZva2VkIHdoZW4gVTJGIHJlZ2lzdGVyIG9wZXJhdGlv
biBpbmNsdWRlcyBrZXkKIC8vIGhhbmRsZXMgaW4gZXhjbHVkZSBsaXN0LgotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29t
bWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3Jl
OjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3ImKTsKIAogLy8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiBzaWdu
IGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuCi1XRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5k
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5SGFuZGxlLCBib29sIGlzQXBwSWQgPSBmYWxzZSk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUs
IGJvb2wgaXNBcHBJZCA9IGZhbHNlKTsKIAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpOwogCiAvLyBSZXR1cm5zICJo
dHRwczovL3d3dy5nc3RhdGljLmNvbS9zZWN1cml0eWtleS9vcmlnaW5zLmpzb24iIGFzIGFuIEFw
cElEIHdoZW4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGlzIHRydWUuCi1XRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+Jik7
CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4
dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cz4mKTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAppbmRl
eCAzOTAwNGRhZTgwYjk3Y2Y0MmI1ZmFmYTMwZjMwMjExZjkwMmE1N2E0Li5iNGNlNTQ3MzllODBj
NjZhZGU4NjgzNzJmMTU1NWQxZTBkMTc3NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgRGF0YWJhc2VEZXRh
aWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIE9wdGlvbmFs
PFdhbGxUaW1lPiBjcmVhdGlvblRpbWUsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25U
aW1lKQorICAgIERhdGFiYXNlRGV0YWlscyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgdWludDY0X3Qg
Y3VycmVudFVzYWdlLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlvblRpbWUsIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogbV9uYW1lKGRh
dGFiYXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQogICAgICAg
ICAsIG1fZXhwZWN0ZWRVc2FnZShleHBlY3RlZFVzYWdlKQpAQCAtODAsOCArODAsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheU5hbWU7IH0KICAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9leHBlY3RlZFVzYWdlOyB9CiAgICAgdWludDY0X3QgY3VycmVudFVzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0KLSAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25U
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KLSAgICBPcHRpb25hbDxXYWxs
VGltZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGlt
ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGNyZWF0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3JlYXRpb25UaW1lOyB9CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9k
aWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgVGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Ro
cmVhZC5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxSZXN1bHRTZXQuaAppbmRleCBkNzE2ZmJmMDE1N2VmZjhlMThkY2Q2Y2ZiYmFi
ZjYyYmJhZmU4YmVlLi5lMjI4Mzk5OWZhODlhM2M2ZmY3MTZjMTRjNTg5NGY1MzhmZDg0NTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTUUxSZXN1bHRTZXQoKTsKIAogICAg
IFJlZjxTUUxSZXN1bHRTZXRSb3dMaXN0PiBtX3Jvd3M7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4g
bV9pbnNlcnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1faW5zZXJ0SWQ7CiAgICAg
aW50IG1fcm93c0FmZmVjdGVkIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAyYmM1OWVjZTIz
ZTA0NmNmMjJiYmQ4MzFiNWNlNjcyODNlOWQyY2Q0Li4xNDkwN2M2YjI2YWY4MTY0ZWI1OGU5ZThj
Y2FhMDM4ODdmZTg2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTUUxUcmFuc2Fj
dGlvbjo6U1FMVHJhbnNhY3Rpb24oUmVmPERhdGFiYXNlPiYmIGRhdGFiYXNlLCBSZWZQdHI8U1FM
VHJhbnNhY3Rpb25DYQogCiBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkgPSBkZWZh
dWx0OwogCi1FeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25z
dCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYWw8VmVjdG9yPFNRTFZhbHVlPj4mJiBhcmd1
bWVudHMsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPFNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYgY2FsbGJhY2tFcnJvcikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50
LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FM
U3RhdGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrPiYmIGNhbGxiYWNrRXJyb3IpCiB7CiAgICAgaWYgKCFtX2V4ZWN1dGVTcWxBbGxvd2Vk
IHx8ICFtX2RhdGFiYXNlLT5vcGVuZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKaW5kZXggZDJjODA3OTY3ODE1NjEwZmVkNDZiYTZmZGY0
ZjE0NjllZTk5MzgxNy4uNDVlNDg3MTZhMDY2ZDU3YzQ0ZGU5MWMyZjg2YzkwZGVhMjIzMzFlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTUUxUcmFu
c2FjdGlvbj4gY3JlYXRlKFJlZjxEYXRhYmFzZT4mJiwgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2s+JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFw
cGVyPiYmLCBib29sIHJlYWRPbmx5KTsKICAgICB+U1FMVHJhbnNhY3Rpb24oKTsKIAotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9w
dGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50
Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3Rh
dGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmKTsK
IAogICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CiAgICAgdm9pZCBwZXJmb3JtTmV4dFN0ZXAoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFkZHJlc3NTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQWRkcmVzc1NwYWNlLmgKaW5kZXggNzc5MjJjYWNhZTBhNzM0NjI1MWU2NWZhYzg2NDM1
NjcwZjViMjBmNy4uYjE4NjY2OGI2NjdlODQ2NWM3ODk4OWEwMDA2YjZhMGY2ZDBkMjE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRk
cmVzc1NwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQWRkcmVzc1NwYWNlLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgVHlw
ZUFubm90YXRpb24mIG9wZXJhdG9yPShjb25zdCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsK
ICAgICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0g
ZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPEFkZHJlc3NTcGFjZT4gbGVmdEFkZHJlc3NTcGFjZSgp
IGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxBZGRyZXNzU3BhY2U+IGxlZnRBZGRyZXNzU3BhY2Uo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKICAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPihtX2lubmVyKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFu
dGljLmgKaW5kZXggY2NhZmVkYmVhNzMyNGNjYjg0YmE0ZjZhMTJlODg1MTg0MGM4MzRlOS4uZTlj
MDQyYjYxYjllMmY4ZTc3ZGFkMzY1NjUxZjRkNjM1MGM1NDE3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFu
dGljLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICBJbnB1dCwKICAgICAgICAg
T3V0cHV0CiAgICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRl
bURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50
VHlwZT4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRl
ckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxF
bnRyeVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgQ29kZUxvY2F0aW9u
IG1fY29kZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKaW5kZXggYTJh
ODMzMzIzMTE3Y2M0YmExNjE4ZjA4MWVjYWFlNDk0MDJmNTI3NC4uYzNlNGRmMmVjMWI0MTRkMGNi
ODNjNjliMjc2NjI0NGI5YjZiNjcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVUeXBl
KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50CiAgICAgfQogfQogCi1i
b29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihT
aGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5
cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKK2Jvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9u
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNv
bnN0CiB7CiAgICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsKICAgICBjYXNlIEVudHJ5UG9p
bnRUeXBlOjpWZXJ0ZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCmluZGV4IDMzYTExNjg1
ZTUyZjEzM2UwNGYxZDMzYjM3NzU4Mjk4N2M5MGE5NGYuLjI3ZWRmNGM3NjdiM2E1OTkzMjhkMzQ2
Y2RmMTFhODM4MGQ4NGQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHcm91cFRocmVhZElECiAgICAgfTsKIAotICAg
IEJ1aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxl
LCBPcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBC
dWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKICAg
ICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCiAgICAgICAgICwgbV92YXJpYWJsZSh2YXJp
YWJsZSkKICAgICAgICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQpAQCAt
NzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgQnVpbHRJblNlbWFudGljKEJ1aWx0SW5TZW1hbnRp
YyYmKSA9IGRlZmF1bHQ7CiAKICAgICBWYXJpYWJsZSB2YXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFyaWFibGU7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZD4mIHRhcmdldEluZGV4KCkgeyBy
ZXR1cm4gbV90YXJnZXRJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiB0YXJn
ZXRJbmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTExOCwxMSAr
MTE4LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rp
b24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IG1fdGFyZ2V0SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV90YXJn
ZXRJbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4
cHJlc3Npb24uaAppbmRleCA5NGVlOWZjZjdlMDBiODBiZmEzYTYwYjlhYWJkOWVhN2JmOThiNDgz
Li4zZDQxMzdlODViZmNjNTgxN2I3ZDI1ZmRmZjViNDA2NGUwOGEzNDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDb25zdGFudEV4cHJlc3Npb24uaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgbWF0Y2hlcyhjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIG90aGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVzdWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlc3VsdDsKICAgICAgICAgZG91YmxlIHZhbHVlOwogICAgICAgICB2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
ICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Np
b24uaAppbmRleCA1Y2MzYjdlYTIxZjY2MDBkZTY5MWEyYzg5ODU2OGY2NjljNzVkOTE0Li5jODgx
YzM0MWFmZDgxMGYwNjM2ZGQ1N2Y5NmNlNzFjYTM2MmM1M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5o
CkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDb2RlTG9jYXRpb24g
bV9jb2RlTG9jYXRpb247CiAgICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgT3B0
aW9uYWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247CisgICAgc3RkOjpvcHRpb25h
bDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlvbjsKICAgICBLaW5kIG1fa2luZDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaAppbmRleCA1Y2E5ZmM4NDExZGIy
MGVhNWQ0ZmE0ZjY2NDZhMWU4YWM4OTNjYmRkLi5jZWIyNGQyZTI4ZjYxY2ZiNWFkYzk0MmUyNjg4
ZTM0YTcyMzcyOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNs
YXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRl
QmxvY2ssIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgUmVmPFVubmFt
ZWRUeXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFt
ZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJh
dG9yLCBQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKKyAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKENv
ZGVMb2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1dGVCbG9jaywgc3Rk
OjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFJlZjxVbm5hbWVkVHlw
ZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiBwYXJhbWV0ZXJz
LCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgaXNPcGVyYXRvciwg
UGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiAgICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRp
b24pCiAgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2NrKSkK
ICAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQpAQCAtNzAsNyArNzAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmli
dXRlQmxvY2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJsb2NrOyB9Ci0gICAgY29uc3QgT3B0aW9u
YWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50
cnlQb2ludFR5cGU7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYg
ZW50cnlQb2ludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5UG9pbnRUeXBlOyB9CiAgICAg
Y29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBV
bm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKICAgICBBdHRyaWJ1
dGVCbG9jayBtX2F0dHJpYnV0ZUJsb2NrOwotICAgIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBt
X2VudHJ5UG9pbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50
cnlQb2ludFR5cGU7CiAgICAgYm9vbCBtX2lzT3BlcmF0b3I7CiAgICAgUGFyc2luZ01vZGUgbV9w
YXJzaW5nTW9kZTsKICAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAppbmRleCBmNjNiNDZkODhlMzI1OTgwOGIw
MzdkZTIyN2Q2NWJlZTcwZTkyYTIwLi41MTAzZWM4ZDE4MGM4YjU5Y2QxZGIxNGNmNWQ1NjdhYjA1
MTY5ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5o
CkBAIC0xMjgsOCArMTI4LDggQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xkVmFs
dWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7Ci0gICAg
T3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAg
ICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Np
b247CisgICAgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhw
cmVzc2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNl
bWFudGljLmNwcAppbmRleCA5MzFmZmIxMjc3ZTA3Y2FmODUyODI3YTUzOWU3NTE2ZGZmY2IyMmM5
Li4yNDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJiN2Y4YzcyMTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIFJlc291cmNlU2Vt
YW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBj
b25zdCBJbgogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVG
b3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25z
dCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAorYm9vbCBSZXNvdXJjZVNlbWFudGlj
Ojppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24g
ZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlc291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaAppbmRleCBlY2NiYjFiYjdiZmRhNDYwYjc2YzAw
ZjgyNzE5MmFmZDNkNTg1ZGU3Li5mOGQ1ZWQzN2U4YWI5N2ZmN2E1OTAyZDdmMWVhZWJmYTY1NWVh
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvdXJjZVNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCkBAIC04OSw3ICs4OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5
cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIE1vZGUgbV9tb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKaW5kZXggYjBhMGRjOWFkOTg2Y2ZiN2ExNTUwNjEwMDlm
NjJjZWM3ZWRjM2Q0YS4uMTRmMDE1Mzk0ZTFmNjZlYTY3NDU3NDFkNzA3OTlkNmEyZDViZWE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkCiAgICAgcmV0
dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZl
ZFR5cGUoKSkuaXNOdW1iZXIoKTsKIH0KIAotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVj
dGlvbiBkaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0Citi
b29sIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVy
SXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAogewogICAgIHJldHVybiBkaXJlY3Rpb24g
PT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCmluZGV4IGM3ZDRkNWRkYjk2MjA3NGE0
ODg3MTRkZmQ3ZGMyMzJmYWExZmI0NWIuLjY2MzllYzE5NmY4OTk1YzIwOTVlZDFlMmMwNGY4OGZl
ODhkMWM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29s
IGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0
aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVj
dGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRU
eXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFn
ZUluT3V0U2VtYW50aWMuY3BwCmluZGV4IGJhNDlmNzljZTMyYzNhZGFkOTExMGRjNzU1NWEyMTYz
MDVjMGJiZjYuLjE2ZGM2NDk2NWIzMjMxNjU1MDllYzYxY2NlMmRiNGE5NjgwZWJkMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdl
SW5PdXRTZW1hbnRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29s
IFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYg
dW5uYW1lZFR5cGUsIGNvbnN0CiAgICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01h
dHJpeCgpOwogfQogCi1ib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hh
ZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0
aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKK2Jvb2wgU3RhZ2VJ
bk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0
ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiYgZW50cnlQb2ludFR5cGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUp
IHsKICAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5P
dXRTZW1hbnRpYy5oCmluZGV4IDMxNjdjNmMyMjc1NjgxZDU1OWUyODlkMzNiZmQzOWZiZjRlMWRj
MTUuLjMwZTIzY2FhNGQ3ZTIxMmY2MmEwYzUzNmE3ZTNhYzlmNGExMzc5NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJ
bnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFk
ZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5
UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hh
ZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKaW5kZXggZWY1Zjg4NzMxNzY0OTgyYmExNmU2
OWQ3YWUyYmZjOWZjYTllYWY4Ni4uMjY1N2E4OTE2ZDM2NjVkZGM2Y2RjZjg3OTJiMTQyMmFkM2Vm
ZTk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3dpdGNoQ2FzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN3aXRjaENhc2UuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgQVNU
IHsKIGNsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlv
biBsb2NhdGlvbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYm
IGJsb2NrKQorICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKICAgICAgICAg
OiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCiAgICAgICAgICwgbV92YWx1
ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUoYmxvY2spKQpAQCAt
NTUsMTEgKzU1LDExIEBAIHB1YmxpYzoKICAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2Um
KSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OwogCi0g
ICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KICAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CiAK
IHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOwogICAgIEJsb2NrIG1f
YmxvY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApp
bmRleCAwMTZhNTgxODA3N2JhNzBiZTUyYTg4MjlhMGUzZDA4OWNkYTkxYjY3Li4xYjU2Mjg4Y2Jl
YTI1NzFhZjFkMDlkMTUxMTIzMTU4MGJkNWViZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
cnVjdCBOYW1lZEJpbmRpbmcgewogICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUg
ZWxlbWVudE5hbWU7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBPcHRpb25hbDxM
ZW5ndGhJbmZvcm1hdGlvbj4gbGVuZ3RoSW5mb3JtYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8TGVuZ3RoSW5mb3JtYXRpb24+IGxlbmd0aEluZm9ybWF0aW9uOwogICAgIH07CiAgICAgc3Ry
dWN0IE5hbWVkQmluZEdyb3VwIHsKICAgICAgICAgTWFuZ2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IDdjY2Y1N2E1NmYwNGIzMzc4
ZmRhYmQwYjgzNDNiZjMxMDhhYmNlMWYuLmMyYjQ1OTBhNTVmYzMxN2IyNjAyMzFkZTM4YjQyMGZm
YTY5N2RhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xODQsNyAr
MTg0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTd2l0Y2gKICAgICB9OwogCi0gICAgT3B0aW9u
YWw8QnJlYWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0NvbnRleHQ7CisgICAgc3RkOjpvcHRpb25h
bDxCcmVha0NvbnRleHQ+IG1fY3VycmVudEJyZWFrQ29udGV4dDsKIAogICAgIFN0cmluZ0J1aWxk
ZXImIG1fc3RyaW5nQnVpbGRlcjsKICAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7CkBAIC0x
OTUsNyArMTk1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50
U2NhZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwogICAgIExheW91dCYgbV9sYXlv
dXQ7CiAgICAgdW5zaWduZWQgbV92YXJpYWJsZUNvdW50IHsgMCB9OwotICAgIE9wdGlvbmFsPE1h
bmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZTsKICAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVudCB7IDAgfTsK
ICAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxWYXJpYWJsZT4+IG1faG9pc3Rl
ZFZhcmlhYmxlczsKIH07CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQogCiB2b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6ZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uIGxvb3BDb25kaXRpb25M
b2NhdGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHByZXNzaW9uLCBBU1Q6OkV4cHJl
c3Npb24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkpCiB7Ci0gICAgU2V0Rm9yU2Nv
cGU8T3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJl
YWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KCkpOworICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+
IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwg
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgKICAgICAgICAgbV9pbmRlbnQsICJib29sICIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVh
cmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIsCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbiBsb29w
Q29uZGl0aW9uTG9jYXQKICAgICAgICAgfQogCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobV9pbmRlbnQsICJkbyB7XG4iKTsKLSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJl
YWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250
ZXh0OjpMb29wKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRl
eHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6Okxv
b3ApOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgZG9TY29wZSht
X2luZGVudCk7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZCgiOlxuIik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobV9pbmRlbnQsICJkZWZhdWx0OlxuIik7Ci0gICAgU2V0Rm9yU2NvcGU8T3B0aW9u
YWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJl
YWtDb250ZXh0OjpTd2l0Y2gpOworICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8QnJlYWtD
b250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0
OjpTd2l0Y2gpOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1
ODEyIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRvIGJyZWFrIG9yIGZhbGx0aHJvdWdoLgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCBhYTNh
Njk4NGI2MTZmNjVkMGIwYTAwYmY5ZjJiNTdkNGZiNDEzYThlLi4zZmQyYzhhODdiYzY3YzlmZTYy
Y2UzZTY0NGE2NjRhODY0YzQ2NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGVudW0gY2xhc3MgU2FtcGxlVHlwZSB7
CiAgICAgU2FtcGxlR3JhZAogfTsKIAotc3RhdGljIE9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBs
ZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxT
YW1wbGVUeXBlPiBzYW1wbGVUeXBlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKQogewogICAg
IGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZSIpCiAgICAgICAgIHJldHVybiBTYW1wbGVUeXBl
OjpTYW1wbGU7CkBAIC01MjgsMjIgKzUyOCwyMiBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9u
KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYQog
ICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgY29uc3QgTWFuZ2xlZFZhcmlhYmxlTmFtZSYg
d2lkdGhOYW1lID0gYXJnc1tpbmRleF07CiAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIE9wdGlv
bmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5hbWU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gaGVpZ2h0TmFtZTsKICAgICAgICAgaWYgKHRleHR1cmVU
eXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAyKSB7CiAgICAgICAgICAgICBoZWlnaHROYW1lID0g
YXJnc1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIE9w
dGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRlcHRoTmFtZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBkZXB0aE5hbWU7CiAgICAgICAgIGlmICh0ZXh0dXJl
VHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMykgewogICAgICAgICAgICAgZGVwdGhOYW1lID0g
YXJnc1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIE9w
dGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGVsZW1lbnRzTmFtZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBlbGVtZW50c05hbWU7CiAgICAgICAgIGlmICh0
ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBlbGVtZW50c05hbWUg
PSBhcmdzW2luZGV4XTsKICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAg
T3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbnVtYmVyT2ZMZXZlbHNOYW1lOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG51bWJlck9mTGV2ZWxzTmFtZTsK
ICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVU
eXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKSB7CiAgICAgICAgICAgICBudW1iZXJPZkxldmVs
c05hbWUgPSBhcmdzW2luZGV4XTsKICAgICAgICAgICAgICsraW5kZXg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA3
MjFjYmEzMGFjMTljNWY0NzZhYzJkM2UxMTMwZTRjMTNjZDUxNjZmLi43YWEyN2E2YzhhOThjM2U1
YmY2N2ZmMjljMjJhYmE4NjA4M2YyZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBl
bnVtIGNsYXNzIEFjY2VwdGFiaWxpdHkgewogICAgIE5vCiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQog
ewogICAgIGlmIChuYW1lID09ICJvcGVyYXRvcj09IiAmJiB0eXBlcy5zaXplKCkgPT0gMikgewog
ICAgICAgICBhdXRvIGFjY2VwdGFiaWxpdHkgPSBbXShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdU
eXBlKSAtPiBBY2NlcHRhYmlsaXR5IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9u
KGNvbnN0IFN0cgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBib29sIGNo
ZWNrU2VtYW50aWNzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGlucHV0SXRlbXMsIFZlY3RvcjxF
bnRyeVBvaW50SXRlbT4mIG91dHB1dEl0ZW1zLCBjb25zdCBPcHRpb25hbDxBU1Q6OkVudHJ5UG9p
bnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCitz
dGF0aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpbnB1dEl0
ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVtcywgY29uc3Qgc3RkOjpvcHRp
b25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNp
Y3MmIGludHJpbnNpY3MpCiB7CiAgICAgewogICAgICAgICBhdXRvIGNoZWNrRHVwbGljYXRlU2Vt
YW50aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29s
IHsKQEAgLTQwMCw4ICs0MDAsOCBAQCBwcml2YXRlOgogICAgICAgICBSZXNvbHZpbmdUeXBlJiBy
ZXNvbHZpbmdUeXBlOwogICAgICAgICBjb25zdCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5v
dGF0aW9uOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVjdXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJ
bmZvKEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0g
ICAgT3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9vbCBy
ZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZv
PiByZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29sIHJlcXVpcmVzTGVmdFZh
bHVlID0gZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8oQVNU
OjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKICAgICBSZWZQ
dHI8QVNUOjpVbm5hbWVkVHlwZT4gcmVjdXJzZUFuZFdyYXBCYXNlVHlwZShBU1Q6OlByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbiYpOwogICAgIGJvb2wgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShB
U1Q6OkV4cHJlc3Npb24mKTsKICAgICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJl
c3Npb24mLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEFTVDo6VHlwZUFubm90YXRpb24pOwpAQCAt
NzMzLDcgKzczMyw3IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0
eXBlUmVmZXJlbmNlKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsK
IH0KIAotYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4
cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZv
PgorYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUlu
Zm8+CiB7CiAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CiAgICAgaWYgKGhhc0Vycm9y
KCkpCkBAIC03NDEsNyArNzQxLDcgQEAgYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmEKICAgICByZXR1
cm4gZ2V0SW5mbyhleHByZXNzaW9uLCByZXF1aXJlc0xlZnRWYWx1ZSk7CiB9CiAKLWF1dG8gQ2hl
Y2tlcjo6Z2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNM
ZWZ0VmFsdWUpIC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZvPgorYXV0byBDaGVja2VyOjpnZXRJbmZv
KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4g
c3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KIHsKICAgICBhdXRvIHR5cGVJdGVyYXRvciA9IG1f
dHlwZU1hcC5maW5kKCZleHByZXNzaW9uKTsKICAgICBBU1NFUlQodHlwZUl0ZXJhdG9yICE9IG1f
dHlwZU1hcC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCmluZGV4IDRlNTFhYjc5
M2U3MDRkNjNjZjE0Nzg2YzUzYzU5M2EwNWVkNDRlNWYuLjBkNjJiNzg4ZTY0MGE5OGRmZGQwYTdj
YTljOWNkNjRiMDU2YmZlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCkBAIC0zOCw5
ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdITFNMIHsKIAotT3B0
aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dy
YW0sIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQorc3RkOjpvcHRpb25hbDxD
b21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mIGVudHJ5UG9pbnQpCiB7Ci0gICAgT3B0aW9uYWw8Q29tcHV0
ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0
ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwogCiAgICAgZm9yIChhdXRvJiBmdW5jdGlv
bkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewogICAgICAgICBi
b29sIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVE
aW1lbnNpb25zLmgKaW5kZXggYjhmZjQ0ZjI5ZWVhNzJlZjllMGUyNDNkMjRkZmY1MmIyNWZhYTUx
NC4uNTU2MzA4ZDE5YzZhY2JmNjEzOWEwODJlMWEwNTdmODFhZTljMDNhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0
ZURpbWVuc2lvbnMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb247
CiAKIGNsYXNzIFByb2dyYW07CiAKLU9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRl
RGltZW5zaW9ucyhQcm9ncmFtJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKK3N0ZDo6b3B0
aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6
OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKaW5kZXggYTljNmEyNjg0ZTFjNDZiZDM3
N2MyNWI1YzIwOTFiODZhOGFiYTU3OC4uOWQ2YjBlYWNjZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3
NDNiOTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMZXhlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMZXhlci5jcHAKQEAgLTE2ODUsNyArMTY4NSw3IEBAIGF1dG8gTGV4ZXI6OmxpbmVBbmRD
b2x1bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2ln
bmVkCiAgICAgcmV0dXJuIHsgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIH07CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNl
IG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFT
VDo6TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJp
bmcqIHNvdXJjZTIpCiB7CiAgICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKICAgICBjYXNlIEFTVDo6
TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCmluZGV4IGE4ZGFlYTVj
ZWM2NDQ1ZjQ3YmIwNzQwZmM4ZmQzNGM4NWMzN2ViMzAuLjYwMGRhODRiOGY0MTIwMWFmZWI2MDhk
NDE0MTA2NWRkZTE5NGQ0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAg
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6c2VhcmNoRnVuY3Rpb25zKFN0
cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8Q29k
ZUxvY2F0aW9uPiBOYW1lQ29udGV4dDo6dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25z
dAorc3RkOjpvcHRpb25hbDxDb2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0
cyhTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBl
cyhuYW1lKSkKICAgICAgICAgcmV0dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5o
CmluZGV4IDQxNjRiN2UyYWMzNGE0MDQ3M2IxMDcyZWNmMWIyYjkwZDkyZDU5ODEuLjM0MDdkNTA2
YTJjN2QxNGQ0MjAzYmJkNjE1Y2JlNDZlY2ExZTI2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmgKQEAgLTc4LDcg
Kzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBU1Q6Ok5hbWVkVHlwZSogc2VhcmNoVHlw
ZXMoU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHNl
YXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIE9wdGlvbmFsPENvZGVMb2Nh
dGlvbj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvZGVMb2NhdGlvbj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKICAg
ICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIGxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29u
c3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
QVNUOjpOYW1lZFR5cGU+LCAxPj4gbV90eXBlc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApp
bmRleCBmZjMzZmM0NTkxMzJiMTFmNDAwOGY3ZGEzN2U1NDY3MzVhNDUwNzFmLi40ZmQ0NzIxNmMy
MzJjOWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcg
QEAgYm9vbCBQYXJzZXI6OnBlZWtUeXBlcygpCiAgICAgcmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6
aW5jbHVkZXModG9rZW4udHlwZSk7CiB9CiAKLU9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5
cGUoVG9rZW46OlR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlw
ZShUb2tlbjo6VHlwZSB0eXBlKQogewogICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsK
ICAgICBpZiAodG9rZW4udHlwZSA9PSB0eXBlKQpAQCAtMjExLDcgKzIxMSw3IEBAIE9wdGlvbmFs
PFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlwZSkKIH0KIAogdGVtcGxhdGUg
PFRva2VuOjpUeXBlLi4uIHR5cGVzPgotT3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZXMo
KQorc3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygpCiB7CiAgICAgYXV0byB0
b2tlbiA9IG1fbGV4ZXIucGVlaygpOwogICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVz
KHRva2VuLnR5cGUpKQpAQCAtMzQzLDExICszNDMsMTEgQEAgYXV0byBQYXJzZXI6OmNvbnN1bWVO
b25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpIC0+IEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4K
ICAgICBhdXRvIGludGVncmFsTGl0ZXJhbCA9IGNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKTsKICAg
ICBpZiAoIWludGVncmFsTGl0ZXJhbCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlu
dGVncmFsTGl0ZXJhbC5lcnJvcigpKTsKLSAgICBhdXRvIHJlc3VsdCA9IFdURjo6dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKKyAgICBhdXRv
IHJlc3VsdCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICBpZiAoeCA8IDApCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geDsKLSAgICB9LCBbXSh1bnNpZ25lZCB4
KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIH0sIFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgcmV0dXJuIHg7CiAgICAgfSksICppbnRlZ3Jh
bExpdGVyYWwpOwogICAgIGlmIChyZXN1bHQpCkBAIC04NjksNyArODY5LDcgQEAgYXV0byBQYXJz
ZXI6OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZhdWx0VmFsdWUpIC0+IEV4cGVj
dGVkPEFTVDo6RW51bWUKICAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikp
IHsKICAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNzaW9uLCBDb25zdGFudEV4cHJlc3Npb24p
OwogCi0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludDY0X3Q+IHZhbHVlOwogICAgICAgICBjb25zdGFudEV4cHJlc3Npb24tPnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7
CiAgICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7CiAgICAgICAgIH0s
IFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5oCmluZGV4IGMwYjQ4N2M1M2Y2YWVmMTMwMDhkZDg1NTlkNzU0NDYyOTgxMDY4NGMuLmU5YmNi
ZTQ5MmUyMGVmZWY3MTE5NTEzNjdmZTgyNmIwZTAzMjhlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaApAQCAtNjgsOSArNjgsOSBA
QCBwcml2YXRlOgogICAgIGJvb2wgcGVla1R5cGUoVG9rZW46OlR5cGUpOwogICAgIHRlbXBsYXRl
IDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KICAgICBib29sIHBlZWtUeXBlcygpOwotICAgIE9wdGlv
bmFsPFRva2VuPiB0cnlUeXBlKFRva2VuOjpUeXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRva2Vu
PiB0cnlUeXBlKFRva2VuOjpUeXBlKTsKICAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlw
ZXM+Ci0gICAgT3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVzKCk7CisgICAgc3RkOjpvcHRpb25hbDxU
b2tlbj4gdHJ5VHlwZXMoKTsKICAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IGNvbnN1bWVUeXBl
KFRva2VuOjpUeXBlKTsKICAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+CiAgICAg
RXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZXMoKTsKQEAgLTgzLDE0ICs4MywxNCBA
QCBwcml2YXRlOgogICAgIHN0cnVjdCBUeXBlU3VmZml4QWJicmV2aWF0ZWQgewogICAgICAgICBD
b2RlTG9jYXRpb24gbG9jYXRpb247CiAgICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IG51bUVsZW1lbnRzOwogICAgIH07CiAgICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlh
dGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKTsKICAgICBzdHJ1Y3QgVHlw
ZVN1ZmZpeE5vbkFiYnJldmlhdGVkIHsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uOwog
ICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgT3B0aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+
IGFkZHJlc3NTcGFjZTsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEFTVDo6QWRkcmVzc1NwYWNlPiBhZGRyZXNzU3BhY2U7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwogICAgIH07CiAgICAg
RXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4
Tm9uQWJicmV2aWF0ZWQoKTsKICAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVy
cm9yPiBwYXJzZUFkZHJlc3NTcGFjZVR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oCmlu
ZGV4IDQ0YjIxM2VlZDc1ZWI1NjhmODFhYzZlNTM5ODM2Mzc1OTQwMjg1YWEuLjEyNzA1OTg4MGQ1
M2RlY2E4YjY0MjRmZTI2MDU1ZmVhMGNlZWZiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3Iu
aApAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgQXR0YWNobWVudERlc2NyaXB0b3IgewogCiBzdHJ1
Y3QgQXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IgewogICAgIFZlY3RvcjxBdHRhY2htZW50RGVz
Y3JpcHRvcj4gYXR0YWNobWVudERlc2NyaXB0b3JzOwotICAgIE9wdGlvbmFsPEF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcjsKIH07CiAKIGVudW0gY2xhc3MgU2hhZGVyU3RhZ2UgOiB1aW50OF90IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmlu
ZGV4IDgyNjFmOWIwMTY4OWMwNzM4ZjE2NjM2ZTg2ZTRjMjk1MDI5YjJiM2MuLmQ4YWQ1MzA0YzQ3
MzRlYTA2MDhjZTZjMjA1YjRiZWUyODc3ZDc3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApAQCAtMjYyLDcgKzI2Miw3
IEBAIEV4cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBT
aGFkZXJNb2R1bGUmIHZlcnRleFNoYWRlck1vCiAgICAgICAgIGlmICghcHJvZ3JhbSkKICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwogCi0gICAgICAg
IE9wdGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGlj
czsKICAgICAgICAgewogICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNl
bWFudGljcyIsIHBoYXNlVGltZXMpOwogICAgICAgICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1h
dGNoU2VtYW50aWNzKCpwcm9ncmFtLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGRpc3RpbmN0
RnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTW9kdWxlKTsKQEAgLTI4OSw3ICsyODksNyBA
QCBFeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNo
YWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLAogewogICAgIFBoYXNlVGltZXMgcGhhc2VUaW1lczsK
ICAgICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotICAgIE9wdGlvbmFs
PENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKKyAgICBzdGQ6Om9wdGlvbmFs
PENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKIAogICAgIHsKICAgICAgICAg
UGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhhc2VUaW1lcyk7CkBAIC0y
OTcsNyArMjk3LDcgQEAgRXhwZWN0ZWQ8Q29tcHV0ZVByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJl
cGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwKICAgICAgICAgaWYgKCFwcm9n
cmFtKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7
CiAKLSAgICAgICAgT3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1h
bnRpY3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1h
dGNoZWRTZW1hbnRpY3M7CiAgICAgICAgIHsKICAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VU
aW1lcigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRpbWVzKTsKICAgICAgICAgICAgIG1hdGNoZWRT
ZW1hbnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJvZ3JhbSwgY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKaW5kZXggNWUzZjBmMDM2Njg2NWY0MDIzOWFl
ZWZmOWUwZTI1ODRkMjE0ZGU2My4uYTYxNGQ2YjgzOTkzMmU1OTcyMmM1MDg5NDA2ZjY2MjJhZWQw
NTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg
Ym9vbCBtYXRjaE1vZGUoQmluZGluZzo6QmluZGluZ0RldGFpbHMgYmluZGluZ1R5cGUsIEFTVDo6
UmVzb3VyY2VTZW1hbnRpYwogICAgIH0pLCBiaW5kaW5nVHlwZSk7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0b3I8RW50
cnlQb2ludEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExheW91dCYgbGF5b3V0LCBTaGFkZXJTdGFn
ZSBzaGFkZXJTdGFnZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8QmluZGluZyosIHNp
emVfdD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGVudHJ5UG9pbnRJ
dGVtcywgTGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQogewogICAgIEhh
c2hNYXA8QmluZGluZyosIHNpemVfdD4gcmVzdWx0OwogICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZh
dWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVf
dD4+IGl0ZW1JbmRpY2VzOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0
YWJsZUZvcm1hdChWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1
bm5hCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUq
LCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYg
dmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5z
aWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRy
aWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJ
dGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzKQogewogICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwg
c2l6ZV90PiByZXN1bHQ7CiAgICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7
CkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFRleHR1
cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9y
Kiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4m
IGZyYWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgYXR0YWNobWVu
dERlc2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNoQ29sb3JBdHRh
Y2htZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIFZlY3RvcjxB
dHRhY2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1lbnREZXNjcmlwdG9ycywgSW50cmluc2ljcyYg
aW50cmluc2ljcykKIHsKICAgICBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90
PiByZXN1bHQ7CiAgICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7CkBAIC0y
NTUsNyArMjU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0
b3IqLCBzaXplX3Q+PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmUKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2lu
dEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIE9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIEludHJpbnNpY3MmIGludHJpbnNpY3Mp
CitzdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+
JiBmcmFnbWVudE91dHB1dHMsIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+JiBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgSW50cmluc2ljcyYgaW50cmluc2ljcykK
IHsKICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKGZyYWdtZW50T3V0cHV0cy5iZWdp
bigpLCBmcmFnbWVudE91dHB1dHMuZW5kKCksIFsmXShFbnRyeVBvaW50SXRlbSYgaXRlbSkgewog
ICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwpAQCAtMjc0LDcgKzI3NCw3
IEBAIHN0YXRpYyBib29sIG1hdGNoRGVwdGhBdHRhY2htZW50KFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4mIGZyYWdtZW50T3V0cHV0cywgT3B0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRp
b25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9n
cmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwg
Ym9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKQor
c3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9n
cmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVy
RXhpc3RzKQogewogICAgIGF1dG8gdmVydGV4RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4
dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4RW50cnlQb2lu
dE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKICAgICBpZiAodmVydGV4RnVuY3Rp
b25zLnNpemUoKSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5
cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5n
ZXQoKSkpCkBAIC0zMTMsNyArMzEzLDcgQEAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGlj
cz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmUKICAgICBy
ZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsICZmcmFnbWVudFNoYWRlckVudHJ5UG9p
bnQsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsICpmcmFnbWVudFNoYWRlckVudHJ5UG9p
bnRJdGVtcywgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCAqZnJhZ21lbnRTaGFkZXJSZXNvdXJj
ZU1hcCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCAqbWF0Y2hlZENvbG9yQXR0YWNobWVudHMg
fX07CiB9CiAKLU9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGlj
cyhQcm9ncmFtJiBwcm9ncmFtLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4g
bWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGZ1bmN0aW9ucyA9IHBy
b2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5lbnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwogICAgIGlmIChm
dW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlw
ZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2Vt
YW50aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFNlbWFudGljTWF0Y2hlci5oCmluZGV4IDk2NGVjOTE1Zjg0N2ViM2RhZDU2OTY0ZGRjOGQ3MWY5
NmMzMjhlNmMuLmZkYmY2YzY3M2QzZGViNmM3ZmMxZjMyMzllYThiMGZkMGEzMjc4NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNN
YXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
ZW1hbnRpY01hdGNoZXIuaApAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJlbmRlclNl
bWFudGljcyB7CiAgICAgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4gbWF0
Y2hlZENvbG9yQXR0YWNobWVudHM7CiB9OwogCi1PcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50
aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwg
Ym9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKTsK
K3N0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJv
Z3JhbSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNo
YWRlciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7CiAKIHN0cnVjdCBNYXRjaGVkQ29tcHV0
ZVNlbWFudGljcyB7CiAgICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHNoYWRlcjsKQEAgLTU2
LDcgKzU2LDcgQEAgc3RydWN0IE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIHsKICAgICBIYXNoTWFw
PEJpbmRpbmcqLCBzaXplX3Q+IHJlc291cmNlTWFwOwogfTsKIAotT3B0aW9uYWw8TWF0Y2hlZENv
bXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mLCBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yJik7CitzdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRj
aFNlbWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXSExTTAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cAppbmRleCA2YjM5YmRjNzhjZmIxMzI3ODdmNDBkNmViOTk4NjNlN2YyMGE1NzRlLi42ZDVkOTNl
MTQwNDE3ZjE0N2RiMGRjNmJhMjBiODc4NGYzNWZmNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPFdlYkdQVT4gV2ViR1BV
OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVSk7CiB9CiAKLXZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
JiYgb3B0aW9ucywgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKK3ZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucz4mJiBvcHRpb25zLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmIGRlZmVycmVkKSBjb25zdAog
ewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShXVEZNb3ZlKG9wdGlv
bnMpKTsKICAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFUuaAppbmRleCAxNjFlNmNkZTc3ODgzOTg3YTgxODFlMmNjYTI5
NDEyZDFhNGMxMGEyLi44YjA1MjQwZDAwNmIzYzQyNGI0OTA2N2MyM2UxNDkzY2FiZDIzMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaApAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBXZWJHUFVBZGFwdGVyUHJvbWlzZSA9IERPTVByb21pc2VEZWZl
cnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+OwogCi0gICAgdm9pZCByZXF1ZXN0QWRh
cHRlcihPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQ
cm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFdlYkdQVSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggNmRiYTdkMDY3Y2VjZTQ5
YjRmZDU4YjI1M2M2YjlhZDM1MGRjZjM3Mi4uYmI2Zjk5NGZiMjAzNTRiM2VhOTg5MzIzN2RjYzEx
MTFiNmVlYjE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QWRhcHRlci5jcHAKQEAgLTM1LDEyICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoT3B0aW9uYWw8R1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BV
QWRhcHRlcjo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYm
IG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQWRhcHRlcihXVEZN
b3ZlKG9wdGlvbnMpKSk7CiB9CiAKLVdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoT3B0aW9u
YWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCitXZWJHUFVBZGFwdGVyOjpX
ZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9w
dGlvbnMpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA5ZDdjMTdjYWEx
NzNhNzFhNWM0MmM4Mzk3ODc4MDZjZDM0ODZjMTIxLi4zMjFiZGU1NzFmZmU2NDhjZDE3ZWI0YjE0
OTllNDk1NGRiNDMxZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC00MiwxNyArNDIsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViR1BVQWRhcHRlcj4gY3JlYXRlKE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4m
Jik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwogCiAgICAgdXNpbmcgRGV2aWNlUmVxdWVzdFBy
b21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdlYkdQVURldmljZT4+Owog
ICAgIHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVudCYsIERldmljZVJlcXVlc3RQcm9taXNlJiYp
IGNvbnN0OwogICAgIAotICAgIGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cz4mIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnM7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVBZGFwdGVy
KE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7CisgICAgZXhwbGljaXQgV2Vi
R1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7CiAK
LSAgICBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IG1fb3B0aW9uczsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4gbV9vcHRpb25zOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAppbmRleCA4ZWZlYTU1
NWNlOTJjMWM0MTk5NjFhNGY1NjJlYTU1MzRlMjEwYzY2Li4yOWM4ZWQ5M2ExODA0YzA5ODc5NzFh
OWU3ZmIxMmE2YTM1MTc2OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBHUFVCaW5kR3JvdQogICAgIH0KIH0KIAotT3B0aW9uYWw8R1BVQmlu
ZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BV
QmluZEdyb3VwRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERl
c2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91
cERlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFt
ZSA9ICJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCgpIjsKIApAQCAtODgsNyArODgsNyBAQCBP
cHRpb25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
Ojp0cnlDcmVhdGVHUFVCaW5kR3JvdQogCiAgICAgICAgIGNvbnN0IGF1dG8gbGF5b3V0QmluZGlu
ZyA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2Ft
cGxlcikgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CisgICAgICAgIGF1dG8gYmlu
ZGluZ1Jlc291cmNlVmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRyPFdl
YkdQVVNhbXBsZXI+JiBzYW1wbGVyKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJj
ZT4gewogICAgICAgICAgICAgaWYgKCFzYW1wbGVyKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1w
bGVyKCk7CkBAIC05Niw3ICs5Niw3IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+
IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqZ3B1U2FtcGxlcikpOwotICAgICAg
ICB9LCBbXShjb25zdCBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+JiB2aWV3KSAtPiBPcHRpb25h
bDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKKyAgICAgICAgfSwgW10oY29uc3QgUmVmUHRyPFdlYkdQ
VVRleHR1cmVWaWV3PiYgdmlldykgLT4gc3RkOjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+
IHsKICAgICAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQ
VUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqdGV4dHVyZSkpOwotICAgICAgICB9LCBbJmxheW91
dEJpbmRpbmcsIGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGlu
ZykgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CisgICAgICAgIH0sIFsmbGF5b3V0
QmluZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BVQnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5n
KSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAgICAgICAgaWYg
KCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVm
ZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKaW5kZXggZmM4OWViNWZmOTBmZWEwOTRiZTRlYWU4ODli
ZTE4YWJiMGNjNDNmYi4uNDEzMzEwNTllZWI5ODU1OTNlNzU3NzU1MTAwYjBmYWRjY2I0NmRkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKIAogc3RydWN0IFdlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IgewotICAgIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IHRyeUNy
ZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
VUJpbmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBj
b25zdDsKIAogICAgIFJlZlB0cjxjb25zdCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsK
ICAgICBWZWN0b3I8V2ViR1BVQmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAK
aW5kZXggOTc3MDlkZWE2MTY0MTYyZTYzNDg1OTEwMDgyZDQyMjYxN2Q0NjMyYi4uZjU3NWUwMGRl
NTNiNDYzNjU2NTNkNGE1NjJjODAxMzBkYjQ2NTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlW
aWV3PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZp
ZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIWJ1ZmZl
ciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29t
bWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwpAQCAtNTMsNyArNTMsNyBA
QCBPcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNy
ZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgYwogICAgIHJldHVybiBHUFVCdWZmZXJDb3B5VmlldyB7
IG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhpcyB9OwogfQogCi1PcHRpb25hbDxHUFVU
ZXh0dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVy
ZUNvcHlWaWV3KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJH
UFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0CiB7
CiAgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJlKCkpIHsKICAgICAgICAgTE9H
KFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkh
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEVuY29kZXIuaAppbmRleCBkYmU4ZGUyZDk5Y2U2NjYwYjc5ZDkzNWI4MzE5OGRkMDU5ZjE3ZWNl
Li4zNmUxODRhMTE0ZjJkZGRmZjkwYmUzMzI4ZjVkMWU2MDc0NWNiNzNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKQEAg
LTQzLDEzICs0MywxMyBAQCBzdHJ1Y3QgR1BVRXh0ZW50M0Q7CiBzdHJ1Y3QgV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZl
ckNvcHlWaWV3QmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0
ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJD
b3B5Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdDsKIAogICAgIFJlZlB0
cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKIH07CiAKIHN0cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZp
ZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKLSAgICBPcHRpb25hbDxHUFVUZXh0dXJlQ29w
eVZpZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBj
b25zdDsKIAogICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXggYjRlYzU4YzlmNzVkZTI4NTJhZmFlZGJiNjk3
MGVhZGM0YTg3NWI5Yi4uZDhkYjdkMzU4OGI3ZjFhZjgyMDMwYjQ5YTg1MTExMDgxZjkxYjM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yPiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihH
UFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0CiB7CiAgICAgYXV0byBwaXBlbGluZUxh
eW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAppbmRleCA0NDA0MDVjNGNhOGFl
YmRhMDc4ZjhiNTk5YzFjZTZkYzY4M2Q1ZTA0Li43NTkxZmRiZjFlMWIyODg2ODIyNzI3ZjQ3MTBl
OTliYmE3NTEyYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0zOCw3ICsz
OCw3IEBAIGNsYXNzIEdQVUVycm9yU2NvcGVzOwogc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogV2Vi
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVF
cnJvclNjb3BlcyYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJv
clNjb3BlcyYpIGNvbnN0OwogCiAgICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
IGNvbXB1dGVTdGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmNwcAppbmRleCA5MWVjM2UwYzU3NTlhMjFhNzMzMjRjMDUyYmRmN2NiZmQzODcy
N2M3Li44YTk4NDIyYjBlMzJlZDE4MmJlNGI3ZDZlZWJhMmRjYmVhMjExNjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTI4Niw3ICsy
ODYsNyBAQCBSZWY8V2ViR1BVUXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKSBjb25zdAog
dm9pZCBXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUoRXJyb3JQcm9taXNlJiYgcHJvbWlzZSkK
IHsKICAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7Ci0gICAgT3B0aW9uYWw8R1BVRXJyb3I+IGVycm9y
ID0gbV9lcnJvclNjb3Blcy0+cG9wRXJyb3JTY29wZShmYWlsTWVzc2FnZSk7CisgICAgc3RkOjpv
cHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVzLT5wb3BFcnJvclNjb3BlKGZh
aWxNZXNzYWdlKTsKICAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICBwcm9t
aXNlLnJlc29sdmUoZXJyb3IpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
Y3BwCmluZGV4IDExZWQxYWVkZGE4OTc1ZGI1ZDUxYTg2NjVjZWQ4MWE1NGNjODIzOTIuLmMxOGMy
OGViMTU0MWNjY2JiOWEwYmU4MGRlNmM0MjNjYzVjMDI4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCi1PcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IFdlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+
PiBncHVMYXlvdXRzOwogICAgIGdwdUxheW91dHMucmVzZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExh
eW91dHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKaW5kZXggZGNlNjg5NTU4
NmMzMGQzNzA0ZDI5MjA0MGJiYWYzZWUxODVlZWQzNC4uOTFkNzU4MTZjNGIyZmI4MWE1YWIyNzM5
NDg2OGJiNDE3MmI1YzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvcjsKIAogc3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAg
T3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkg
Y29uc3Q7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVUJpbmRHcm91cExheW91dD4+IGJpbmRH
cm91cExheW91dHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKaW5k
ZXggNDc3NWE4ODVmYzc2YjRjZjk1YzU4M2U1ODY5OTQ5ZWUxODk5ZWFhNy4uZjZhNGY3ZmJlOWNi
MzBjY2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
T3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4g
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUt
Pm1vZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAppbmRleCAxYTQ0MTRhYWMx
MDczNjc5MTBlMWIzNTg0ZDIyOGQzNWViYjU4ZGEzLi5kZjcxMzJkNTA1MDUxYTRlYTQwODcyYzk0
M2I4MTVlYzVhNjI4MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaApAQCAt
MzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yIDogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFz
ZSB7Ci0gICAgT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiB0cnlDcmVh
dGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBtb2R1bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmluZGV4IDQzOTU3MTdiYjVl
YzQzNWUxNTJiZjgxOWJkZWExNjBlMmI3MTJhZjAuLjhhOGI0NzgyYzdlNzM1YWFjNDFiMzE3ZDQw
MzMwYTczMmUzMzRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWUKIHsKIH0KIAotT3B0aW9uYWw8R1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJbXByb3ZlIGVycm9yIGNoZWNr
aW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGlzIGFkZGVkIHRvIHNwZWMuCiAgICAg
aWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlv
bmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6
dHJ5Q3JlYXRlR1BVUmVuZGVyCiAgICAgICAgIGdwdUNvbG9yQXR0YWNobWVudHMuYXBwZW5kKEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqY29sb3JBdHRh
Y2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSksIGNvbG9yQXR0YWNobWVudCB9KTsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I+IGdwdURlcHRoQXR0YWNobWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBh
c3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2htZW50Owog
CiAgICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKICAgICAgICAgaWYgKCFkZXB0aFN0
ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAppbmRleCBkY2M5
YThhYWQyZGRhNTRhY2QwYWEwNWZkMTAwZGZmMzJmYjExM2ViLi5lYTVkZDViNTU0NmU5Y2FmNWY0
OTAwNTc2Y2Y1ZWU1NmRkODc3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTQ2LDEwICs0
NiwxMCBAQCBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yIDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbgogfTsKIAogc3RydWN0IFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yIHsKLSAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4g
dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvcigpIGNvbnN0OwogCiAgICAgVmVjdG9yPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIE9wdGlvbmFsPFdlYkdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNo
bWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCBlOTI5YzU0ZmQxNjk0YmVlYTZkY2QzOWYx
M2VlYjQ5ZDU2OGYxNzg1Li5iZjhjZmU5NWZmNjEzYTI5MzY0ZjY3NDc4ZThkNDZiZWEyMTg2NjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKICAgICBpZiAobV9yZW5k
ZXJQaXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKICAgICAgICAgaWYgKGF1dG8q
IGdwdVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkp
IHsKICAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFn
ZShtYWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUpLCB7IG1fdmVydGV4U2hhZGVyLmVudHJ5
UG9pbnQgfSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3I+IGZyYWdtZW50U3RhZ2U7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKICAgICAgICAgICAgIGlmICht
X2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBncHVG
cmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNoYWRlck1vZHVsZSksIHsgbV9mcmFnbWVu
dFNoYWRlci5lbnRyeVBvaW50IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5k
ZXggNDUwNmU1NDgwMGRhMzBkNjU3OWVhZTAzNDUzMTBiOGY5MzY5NGRmMS4uNjZiY2RiOWRmOTBj
ODQ1OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRp
b25hbDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0
CiB7CiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0
LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7CiAKICAgICBhdXRvIHZlcnRleCA9IHZlcnRl
eFN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwogCi0gICAg
T3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnQ7CiAg
ICAgaWYgKGZyYWdtZW50U3RhZ2UpCiAgICAgICAgIGZyYWdtZW50ID0gZnJhZ21lbnRTdGFnZS0+
dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmgKaW5kZXggNTUzOWMxMDJmZjAwODY0ZDYzOTMzMDhkZjRkOTk0ZmU4NmM3
ZDQyYS4uNmUzOGU5NjEzOTIyMmM0ZDNhNDc5ODBiNDIxY2UxNTU1ZWFkMDQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmgKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBHUFVFcnJvclNjb3BlczsKIAogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvckJhc2UgewotICAgIE9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVz
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+
IHRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNv
bnN0OwogCiAgICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdl
OwotICAgIE9wdGlvbmFsPFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21l
bnRTdGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3Jp
cHRvcj4gZnJhZ21lbnRTdGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5jcHAKaW5kZXggZGM4MjgyN2ZmMzA0ODY4MmUwNTA5Mjc4NDg0Yzc5MzI3NDcw
ZjhjNi4uMTEzNGZjZDMzMzczOTk1ZjZhOThkNDc5YWY0MDJmN2NkOTdiMDY1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
RGVzY3JpcHRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1PcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdAorc3RkOjpvcHRpb25hbDxHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOjphc0dQVVN3YXBD
aGFpbkRlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlmICghZGV2aWNlKSB7CiAgICAgICAgIExP
RyhXZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1cmVTd2FwQ2hhaW4oKTogSW52YWxp
ZCBHUFVEZXZpY2UhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKaW5kZXggZGEwYzY3NDE3Y2MzODk4ZDhj
MzVkZmJmMDlmZDI2MTEyNWI5MmJiYi4uMTlhNzg2YjY5YjBkN2YwNzA0ZDAwZGU3MDk4MTAwZDA2
NzYxY2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBD
aGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAgICBPcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
PiBhc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3I+IGFzR1BVU3dhcENoYWluRGVzY3JpcHRvcigpIGNvbnN0Owog
CiAgICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2aWNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDE2OWQ5YzlkZTMzMGExNjRhNDc0N2E3NTkxODFjODhhZDM5YmFi
Y2MuLmE2Y2IyY2ZlOGM3NjZhZWEzODVmOTYzMmViYTE5NWMzYjhlZTk0NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODUsNyArODUsNyBAQCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKQogewogfQogCi1PcHRpb25h
bDxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6VmFsaWRhdGVkVVJMPiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6dmFsaWRhdGVVUkwoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwm
IHJlcXVlc3RlZFVSTCkKK3N0ZDo6b3B0aW9uYWw8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnZhbGlkYXRlVVJMKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByZXF1ZXN0ZWRVUkwpCiB7CiAgICAgVmFsaWRh
dGVkVVJMIHZhbGlkYXRlZFVSTCB7IHJlcXVlc3RlZFVSTCwgdHJ1ZSB9OwogICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKSB7CkBAIC0xMDksNyArMTA5LDcgQEAgT3B0aW9uYWw8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnYKICAgICByZXR1cm4gdmFsaWRhdGVkVVJMOwogfQogCi1PcHRpb25hbDxS
ZXNvdXJjZVJlcXVlc3Q+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp3ZWJTb2NrZXRDb25u
ZWN0UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQorc3RkOjpvcHRp
b25hbDxSZXNvdXJjZVJlcXVlc3Q+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp3ZWJTb2Nr
ZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGF1dG8gdmFsaWRhdGVkVVJMID0gdmFsaWRhdGVVUkwoZG9jdW1lbnQsIHVybCk7CiAgICAg
aWYgKCF2YWxpZGF0ZWRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDcxNGIx
Y2FjMjVjZjkxOTZhYWNlNjRhOThjZDZmYzA4NWEyMGFiMTAuLjczMTE5ZTZmN2E2MzcxMjY3OGQx
OGE2ZjJmZTJlODM4ZDYwNzcyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC05
Niw4ICs5Niw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgYm9vbCBh
cmVDb29raWVzQWxsb3dlZCB7IHRydWUgfTsKICAgICB9OwotICAgIHN0YXRpYyBPcHRpb25hbDxW
YWxpZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERvY3VtZW50JiwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gd2ViU29ja2V0Q29u
bmVjdFJlcXVlc3QoRG9jdW1lbnQmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWYWxpZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERvY3VtZW50JiwgY29uc3QgVVJMJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiB3
ZWJTb2NrZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYsIGNvbnN0IFVSTCYpOwogCiAgICAgV2Vi
U29ja2V0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkY2M3ODNhZGExYWY3MDRkODU2
Mjk3MTY1MmUxMDFhNmRhNDBkZjY3Li5hYjIwZjgwZTg4YjA5YzQ1N2ZhZTk1MjllMTUxNTcxOTIy
ODY1ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6
c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYlNvY2tldDo6Y2xvc2UoT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG9wdGlvbmFs
Q29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6
OmNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG9wdGlvbmFsQ29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pCiB7CiAgICAgaW50IGNvZGUgPSBvcHRpb25hbENvZGUgPyBvcHRpb25h
bENvZGUudmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4oV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VF
dmVudENvZGVOb3RTcGVjaWZpZWQpOwogICAgIGlmIChjb2RlID09IFdlYlNvY2tldENoYW5uZWw6
OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGZmODQ1MTUyYmRlZWNjZDJlN2FjZjAyMjc2NmRm
OTYyZDhmNDg4MzQuLmEyZmU1ZGQ5YWRjNGUyOTYzZmE2NjEyYTcxYzRiZWE3NTJjMmI3NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoSlNDOjpBcnJh
eUJ1ZmZlclZpZXcmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKEJsb2ImKTsKIAotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGNsb3NlKE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xvc2Uoc3RkOjpv
cHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAg
ICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjaGFubmVsKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCBlNWUyN2Q0ZjQ1ZjU3MmNkZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQy
Li43M2UxMDUwMThkOGEyNjdjYWJkNDJmNTMxYmZmODRlNDAzNGU1MDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0
U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50
LmdldCgpLCBtX3Byb2dyZXNzSWRlbnRpZmllciwgbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFr
ZVJlcXVlc3QoV1RGTW92ZShjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpKTsKICAgICB9
CiAgICAgYXV0byBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFr
ZU1lc3NhZ2UoKTsKLSAgICBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CisgICAgc3RkOjpvcHRpb25hbDxDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAg
ICAgaWYgKG1fYWxsb3dDb29raWVzKQogICAgICAgICBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSA9IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoKm1fZG9jdW1l
bnQsIG1faGFuZHNoYWtlLT5odHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkpOwog
ICAgIGhhbmRsZS5zZW5kSGFuZHNoYWtlKFdURk1vdmUoaGFuZHNoYWtlTWVzc2FnZSksIFdURk1v
dmUoY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk1
MmZhYThjYzgyODBjMzU3NjMyMWExZWE2MzJhZWMwNjk3ZDFhYzMuLjBiZjJhYTlhMTBiMjJlMTE1
YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1peGVkIGNvbnRlbnQgY2hl
Y2sgZXF1aXZhbGVudCB0byB0aGUgZG9jdW1lbnQgbWl4ZWQgY29udGVudCBjaGVjayBjdXJyZW50
bHkgaW4gV2ViU29ja2V0Ojpjb25uZWN0KCkKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9j
dW1lbnQuZnJhbWUoKSkgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvclN0cmlu
ZyA9IE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9yTWl4ZWRDb250ZW50SW5GcmFtZVRyZWUo
KmZyYW1lLCB1cmwpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yU3Ry
aW5nID0gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JNaXhlZENvbnRlbnRJbkZyYW1lVHJl
ZSgqZnJhbWUsIHVybCk7CiAgICAgICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAgICAgICAg
ICAgICAgICBwZWVyLT5mYWlsKGVycm9yU3RyaW5nLnZhbHVlKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXgg
ZDg1Yzc0ZDE1NTQwYmJlZTQzMWU5ZDM2NGU0Nzg2MGJmYmU4MzcwMy4uZmE5MDBkYzIyZjY5MTU5
Zjc5MjdjNzIxYzI1ZDBkYzc2NDA5MDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG11c3RQ
b3Nlc0JlTGltaXRlZChjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0
OwogCiAgICAgc3RydWN0IFBvcHVsYXRlZFBvc2U7Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
UG9wdWxhdGVkUG9zZT4+IHBvcHVsYXRlUG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhS
U3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25h
bDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgV2Vi
WFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuY3BwCmluZGV4IDk0MzJh
NWFmMTkzOGI0OTRiMTFlOWNiYzZkM2QzOTE0Mjk1NTk2NDIuLmZmYjZjMTc5MzcyNzE5ZDUzODQx
MzhmYjE4ZTY4N2JlMDRkMzc2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBSZWY8V2ViWFJSZW5k
ZXJTdGF0ZT4gV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKFhSU2Vzc2lvbk1vZGUgbW9kZSkKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlbmRlclN0YXRlKG1vZGUgPT0gWFJTZXNzaW9u
TW9kZTo6SW5saW5lID8gc3RkOjptYWtlX29wdGlvbmFsKHBpT3ZlclR3b0RvdWJsZSkgOiBzdGQ6
Om51bGxvcHQpKTsKIH0KIAotV2ViWFJSZW5kZXJTdGF0ZTo6V2ViWFJSZW5kZXJTdGF0ZShPcHRp
b25hbDxkb3VibGU+IGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcpCitXZWJYUlJlbmRlclN0YXRl
OjpXZWJYUlJlbmRlclN0YXRlKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZp
ZWxkT2ZWaWV3KQogICAgIDogbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KGlubGluZVZlcnRp
Y2FsRmllbGRPZlZpZXcpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZW5kZXJTdGF0ZS5oCmluZGV4IGRjMGRlNGE2NWQxNGYxNjEwNjNmZTVmYmZmOTQ5ZGFi
NmIwNTIyYTAuLmNjODdmYjE0YzU2ZjI2ZTRiZWFhODhjNTg2OWQxNDc0OGRhZGJmYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZGVwdGhGYXIoKSBjb25zdCB7IHJldHVy
biBtX2RlcHRoLmZhcjsgfQogICAgIHZvaWQgc2V0RGVwdGhGYXIoZG91YmxlIGZhcikgeyBtX2Rl
cHRoLmZhciA9IGZhcjsgfTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxG
aWVsZE9mVmlldygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3OyB9CiAgICAgdm9pZCBz
ZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KGRvdWJsZSBmaWVsZE9mVmlldykgeyBtX2lubGlu
ZVZlcnRpY2FsRmllbGRPZlZpZXcgPSBmaWVsZE9mVmlldzsgfQogCiAgICAgUmVmUHRyPFdlYlhS
V2ViR0xMYXllcj4gYmFzZUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlTGF5ZXI7IH0KQEAg
LTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25FbmFibGVkKGJv
b2wgY29tcG9zaXRpb25FbmFibGVkKSB7IG1fY29tcG9zaXRpb25FbmFibGVkID0gY29tcG9zaXRp
b25FbmFibGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViWFJSZW5kZXJTdGF0ZShP
cHRpb25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3KTsKKyAgICBleHBsaWNpdCBXZWJYUlJlbmRlclN0
YXRlKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmaWVsZE9mVmlldyk7CiAgICAgZXhwbGljaXQgV2Vi
WFJSZW5kZXJTdGF0ZShjb25zdCBXZWJYUlJlbmRlclN0YXRlJik7CiAKICAgICAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbml0aWFsaXplLXRoZS1yZW5kZXItc3Rh
dGUKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZG91YmxlIG5lYXIgeyAwLjEg
fTsgLy8gaW4gbWV0ZXJzCiAgICAgICAgIGRvdWJsZSBmYXIgeyAxMDAwIH07IC8vIGluIG1ldGVy
cwogICAgIH0gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1faW5saW5lVmVydGljYWxG
aWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2lu
bGluZVZlcnRpY2FsRmllbGRPZlZpZXc7IC8vIGluIHJhZGlhbnMKICAgICBSZWZQdHI8V2ViWFJX
ZWJHTExheWVyPiBtX2Jhc2VMYXllcjsKICAgICBXZWFrUHRyPEhUTUxDYW52YXNFbGVtZW50PiBt
X291dHB1dENhbnZhczsKICAgICBib29sIG1fY29tcG9zaXRpb25FbmFibGVkIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggNDljOWY2
OGI3MWVmYjRjOTQ4OTE1NWM2ZmQxMmM4ZWMxZWMzOWIwOS4uODkyOWQ4ZmY4NTgxZDQ5OTZlZWVi
YjI5NTg1NjgzOGVkYjBlYWQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBYUlZpc2liaWxp
dHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICAgICBVbmlxdWVSZWY8V2ViWFJJbnB1dFNvdXJj
ZUFycmF5PiBtX2lucHV0U291cmNlczsKICAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwotICAg
IE9wdGlvbmFsPEVuZFByb21pc2U+IG1fZW5kUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVu
ZFByb21pc2U+IG1fZW5kUHJvbWlzZTsKIAogICAgIFdlYlhSU3lzdGVtJiBtX3hyU3lzdGVtOwog
ICAgIFhSU2Vzc2lvbk1vZGUgbV9tb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcAppbmRleCA2ZTNhYjdjMjEyM2QzNDA0MjAyYmU0MWUwZDBlZjBhYjVk
YjQ0YWU5Li40YjYyYWQ5YjI1MWIyNjg1ZmQ1ZGZkNDhlOGQ1MjRkZDMzNmY0OTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIHN0cnVjdCBXZWJYUlN5c3RlbTo6UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcyB7CiB9
CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Jlc29sdmUtdGhl
LXJlcXVlc3RlZC1mZWF0dXJlcwotT3B0aW9uYWw8V2ViWFJTeXN0ZW06OlJlc29sdmVkUmVxdWVz
dGVkRmVhdHVyZXM+IFdlYlhSU3lzdGVtOjpyZXNvbHZlUmVxdWVzdGVkRmVhdHVyZXMoWFJTZXNz
aW9uTW9kZSBtb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0JiBpbml0LCBQbGF0Zm9ybVhSOjpEZXZp
Y2UqIGRldmljZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KSBjb25zdAorc3Rk
OjpvcHRpb25hbDxXZWJYUlN5c3RlbTo6UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcz4gV2ViWFJT
eXN0ZW06OnJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0
IFhSU2Vzc2lvbkluaXQmIGluaXQsIFBsYXRmb3JtWFI6OkRldmljZSogZGV2aWNlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgLy8gMS4gTGV0IGNvbnNl
bnRSZXF1aXJlZCBiZSBhbiBlbXB0eSBsaXN0IG9mIERPTVN0cmluZy4KICAgICAvLyAyLiBMZXQg
Y29uc2VudE9wdGlvbmFsIGJlIGFuIGVtcHR5IGxpc3Qgb2YgRE9NU3RyaW5nLgpAQCAtMzI1LDcg
KzMyNSw3IEBAIE9wdGlvbmFsPFdlYlhSU3lzdGVtOjpSZXNvbHZlZFJlcXVlc3RlZEZlYXR1cmVz
PiBXZWJYUlN5c3RlbTo6cmVzb2x2ZVJlcXVlc3RlZEZlCiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlcXVlc3QtdGhlLXhyLXBlcm1pc3Npb24KLU9wdGlv
bmFsPFdlYlhSU3lzdGVtOjpGZWF0dXJlTGlzdD4gV2ViWFJTeXN0ZW06OnJlc29sdmVGZWF0dXJl
UGVybWlzc2lvbnMoWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0JiBpbml0
LCBQbGF0Zm9ybVhSOjpEZXZpY2UqIGRldmljZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJYUlN5c3RlbTo6RmVhdHVyZUxpc3Q+IFdl
YlhSU3lzdGVtOjpyZXNvbHZlRmVhdHVyZVBlcm1pc3Npb25zKFhSU2Vzc2lvbk1vZGUgbW9kZSwg
Y29uc3QgWFJTZXNzaW9uSW5pdCYgaW5pdCwgUGxhdGZvcm1YUjo6RGV2aWNlKiBkZXZpY2UsIEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICAvLyAxLiBTZXQg
c3RhdHVzJ3MgZ3JhbnRlZCB0byBhbiBlbXB0eSBGcm96ZW5BcnJheS4KICAgICAvLyAyLiBMZXQg
cmVxdWlyZWRGZWF0dXJlcyBiZSBkZXNjcmlwdG9yJ3MgcmVxdWlyZWRGZWF0dXJlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCA2NDU4NTc0ZTAxODQ5
NTFhYTgwMzQ3ZjE5ODAzOWFjZTBlOGI5MjBkLi4yODExYzgyODg0MTkyMWUyNDY0YTExMzZkZjZk
NmIxNDE5ZjQ5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlubGluZVNlc3Npb25S
ZXF1ZXN0SXNBbGxvd2VkRm9yR2xvYmFsT2JqZWN0KERPTVdpbmRvdyYsIERvY3VtZW50JiwgY29u
c3QgWFJTZXNzaW9uSW5pdCYpIGNvbnN0OwogCiAgICAgc3RydWN0IFJlc29sdmVkUmVxdWVzdGVk
RmVhdHVyZXM7Ci0gICAgT3B0aW9uYWw8UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcz4gcmVzb2x2
ZVJlcXVlc3RlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGUsIGNvbnN0IFhSU2Vzc2lvbkluaXQmLCBQ
bGF0Zm9ybVhSOjpEZXZpY2UqLCBKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8RmVhdHVyZUxpc3Q+IHJlc29sdmVGZWF0dXJlUGVybWlzc2lvbnMoWFJTZXNzaW9uTW9k
ZSwgY29uc3QgWFJTZXNzaW9uSW5pdCYsIFBsYXRmb3JtWFI6OkRldmljZSosIEpTQzo6SlNHbG9i
YWxPYmplY3QmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc29sdmVkUmVxdWVzdGVkRmVh
dHVyZXM+IHJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlLCBjb25zdCBYUlNl
c3Npb25Jbml0JiwgUGxhdGZvcm1YUjo6RGV2aWNlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmVhdHVyZUxpc3Q+IHJlc29sdmVGZWF0dXJlUGVybWlz
c2lvbnMoWFJTZXNzaW9uTW9kZSwgY29uc3QgWFJTZXNzaW9uSW5pdCYsIFBsYXRmb3JtWFI6OkRl
dmljZSosIEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKIAogICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RlZmF1bHQtaW5saW5lLXhyLWRldmljZQogICAg
IGNsYXNzIER1bW15SW5saW5lRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmlj
ZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CkBAIC0xMTUsNyArMTE1LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZp
Y2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgICAgICBWZWN0b3I8RGV2aWNl
OjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgICAgIE9w
dGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWlu
dDMyX3QsIHVpbnQzMl90LCBib29sKSBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQ
cm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkgZmluYWwgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAgICAgICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5k
bGUpIGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5s
aW5lRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCmlu
ZGV4IGZjZTZiZjExNDVmZTAzZTBjZDE3NmZkMTcxN2E4OGZlZWM5NTUwMWQuLjdhNDE5NjBjYTEx
YzZkYjIyMmM2MTU5MmVlMGZkNGUxMmJlNGY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlldy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBXZWJYUlZpZXc6OldlYlhS
VmlldyhSZWY8V2ViWFJGcmFtZT4mJiBmcmFtZSwgWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRy
YW5zZm9ybQogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCiAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJlY29tbWVuZGVkdmll
d3BvcnRzY2FsZQotT3B0aW9uYWw8ZG91YmxlPiBXZWJYUlZpZXc6OnJlY29tbWVuZGVkVmlld3Bv
cnRTY2FsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gV2ViWFJWaWV3OjpyZWNvbW1l
bmRlZFZpZXdwb3J0U2NhbGUoKSBjb25zdAogewogICAgIC8vIFJldHVybiBudWxsIGlmIHRoZSBz
eXN0ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlzdGljIG9yIG1ldGhvZCBmb3IgZGV0ZXJt
aW5pbmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJl
cXVlc3R2aWV3cG9ydHNjYWxlCi12b2lkIFdlYlhSVmlldzo6cmVxdWVzdFZpZXdwb3J0U2NhbGUo
T3B0aW9uYWw8ZG91YmxlPiB2YWx1ZSkKK3ZvaWQgV2ViWFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRT
Y2FsZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAq
dmFsdWUgPD0gMC4wKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXcuaAppbmRleCAxOTY0ZTg4NTNjMDgxMDlkYTUwMzQwYzE5YTdhNjc5M2M5MmJl
MTE4Li4yYWJiMjYyNDBlNDdmMDEzOGVhZmRjOTVkYjNjZDY3Njc5MTQyMDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGlj
OgogICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvamVjdGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0m
IHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9CiAKLSAgICBP
cHRpb25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0OwotICAgIHZv
aWQgcmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0aW9uYWw8ZG91YmxlPik7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0OworICAgIHZvaWQg
cmVxdWVzdFZpZXdwb3J0U2NhbGUoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAogICAgIGRvdWJs
ZSByZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRWaWV3
cG9ydFNjYWxlOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0TW9kaWZpYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlld3BvcnRNb2RpZmlhYmxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAppbmRleCBiYTMwNTJjOWQ4MDBjNzJkMWMxYjlhZjM5ZWQ0
M2UzZGJmMGY2MTZlLi4xYTA2ZjU0MjZiMjhkNWY0MjkxMzUxY2M5N2RiYjk1OWEzZGI5MjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKQEAg
LTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlTmF0aXZl
V2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRl
UmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbigpOwogCi0gICAgdm9pZCBjYW52
YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWwg
eyB9OworICAgIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+JikgZmluYWwgeyB9OwogICAgIHZvaWQgY2FudmFzUmVzaXplZChDYW52
YXNCYXNlJikgZmluYWw7CiAgICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoQ2FudmFzQmFzZSYpIGZp
bmFsIHsgfTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaAppbmRleCBlM2M1NDEx
MzQ1NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkxLi4zMTQyMGM5NzQ4ZDdkODI3M2ExOGQ5
MGFjNTkwZmNkNzY4YjIxMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxXZWJYUkZyYW1lPiBtX2ZyYW1lOwogICAgIFJlZlB0cjxXZWJYUklucHV0U291cmNl
PiBtX2lucHV0U291cmNlOwotICAgIE9wdGlvbmFsPGludD4gbV9idXR0b25JbmRleDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludD4gbV9idXR0b25JbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJSZW5kZXJT
dGF0ZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJSZW5kZXJTdGF0ZUlu
aXQuaAppbmRleCA0YzQyOTNlMWE0M2Y4OGQ0MTM4NmQzZDEzMGE5Y2MyNzZjMWY1NWNlLi4wYjY0
Y2I4ZDBjM2RjNDVjYTMxZTI0NWVhOTZmMGZlNGNlOTQ2MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSUmVuZGVyU3RhdGVJbml0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlJlbmRlclN0YXRlSW5pdC5oCkBAIC0zNSwxMSArMzUsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFhSUmVuZGVyU3RhdGVJbml0IHsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IGRlcHRoTmVhcjsKLSAgICBPcHRpb25hbDxkb3VibGU+IGRlcHRo
RmFyOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGVwdGhOZWFyOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBkZXB0aEZhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxG
aWVsZE9mVmlldzsKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBiYXNlTGF5ZXI7Ci0gICAg
T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJYUkxheWVyPj4+IGxheWVyczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViWFJMYXllcj4+PiBsYXllcnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Np
b25JRC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAppbmRleCA1YjM1NmEz
MWZmYTBlOTVmYjk4YjMzNDk5Y2FiNTE4MDgxYjYwM2I4Li41ZDZkNTBiYjAwZWZkZDM3Nzk0MDYy
MWQ5NjZiYTZkN2JmZmM4NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nl
c3Npb25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3QgeyByZXR1cm4gIWlzRXBoZW1lcmFsKCk7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2Vzc2lvbklEPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlc3Npb25JRD4g
ZGVjb2RlKERlY29kZXImKTsKIAogICAgIFNlc3Npb25JRCBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiAqdGhpczsgfQogCkBAIC05NCw5ICs5NCw5IEBAIHZvaWQgU2Vzc2lvbklEOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LU9wdGlvbmFsPFNlc3Npb25JRD4gU2Vzc2lvbklEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U2Vzc2lvbklEPiBTZXNzaW9uSUQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzZXNzaW9uSUQ7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gc2Vzc2lvbklEOwogICAgIGRlY29kZXIgPj4gc2Vzc2lvbklEOwogICAg
IGlmICghc2Vzc2lvbklEIHx8ICFpc1ZhbGlkU2Vzc2lvbklEVmFsdWUoKnNlc3Npb25JRCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0LmgKaW5kZXggZjFkNjhjODFmMGM0MjI5MzQz
YThjZTU4ZTNiZjJjOTBmZjcxNGE3NC4uMDBlOWU2MDY1OWI1Yzk4MmU3ODMxMjBhNjIyYmNkYThk
NTZlNGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24v
T3V0cHV0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9u
L091dHB1dENvbnRleHQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBPdXRwdXREZXZpY2U7CiAK
IGNsYXNzIE91dHB1dENvbnRleHQgewogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxPdXRw
dXRDb250ZXh0PiYgc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8T3V0cHV0Q29udGV4dD4mIHNoYXJlZEF1ZGlvUHJlc2VudGF0
aW9uT3V0cHV0Q29udGV4dCgpOwogCiAgICAgYm9vbCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2
aWNlcygpOwogICAgIFN0cmluZyBkZXZpY2VOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbQppbmRleCAwYzkxZjY1ZDY1
NDAzY2NmNWNjMjRlMzQ4ODEwNWZhMTZiZjEyNTU4Li4yNGIxMWFmZmViMjM2M2E3YzQ3NDcxOWQy
NDM5NmM2NWZmY2FiMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91
bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZm
b3VuZGF0aW9uL091dHB1dENvbnRleHQubW0KQEAgLTQzLDkgKzQzLDkgQEAgT3V0cHV0Q29udGV4
dDo6T3V0cHV0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIGNvbnRleHQpCiB7
CiB9CiAKLU9wdGlvbmFsPE91dHB1dENvbnRleHQ+JiBPdXRwdXRDb250ZXh0OjpzaGFyZWRBdWRp
b1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQoKQorc3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0
PiYgT3V0cHV0Q29udGV4dDo6c2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8T3V0cHV0Q29udGV4dD4+IHNo
YXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCA9IFtdICgpIC0+IE9wdGlvbmFsPE91
dHB1dENvbnRleHQ+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxP
dXRwdXRDb250ZXh0Pj4gc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0ID0gW10g
KCkgLT4gc3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0PiB7CiAgICAgICAgIGlmICghW1BBTDo6
Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNo
YXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCldKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vZ2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2Ny
eXB0L1V0aWxpdGllcy5oCmluZGV4IDI3NGUwYWFmMWRmZWI4YzcyMTYxODA3NWFhNzJiZTA3NmE0
MTY1MGYuLjYyOTJhMGY4MGJiMGY1ODI2NTMyZmU0MWIzYmFhMDkxYmRlMmM2MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmgKQEAgLTUz
LDcgKzUzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxvZ0Vycm9yKGdjcnlfZXJyb3JfdCBlcnJv
cikKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPGludD4gYWVzQWxnb3JpdGht
Rm9yS2V5U2l6ZShzaXplX3Qga2V5U2l6ZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxp
bnQ+IGFlc0FsZ29yaXRobUZvcktleVNpemUoc2l6ZV90IGtleVNpemUpCiB7CiAgICAgc3dpdGNo
IChrZXlTaXplKSB7CiAgICAgY2FzZSAxMjg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAppbmRleCA0NTVlMDgzOTNlZTUwMzY4ZDc4NDc4
NTI5NzI5NjIzZjYwYjg0NzlhLi40MDNlMTNmNDE4NjM0OWNkMzE4NmY4MjAyMjg2MzZlMjk0NTY4
NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxp
dGllcy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25v
ZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludAogICAg
IHJldHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSkK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9v
dCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCiB7CiAgICAgaW50IGxlbmd0aCA9IDA7CiAgICAg
dW5zaWduZWQgdHlwZSA9IDA7CkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5h
bWUpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5j
b2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVuY29kZWREYXRhKGFzbjFfbm9kZSByb290LCBjb25z
dCBjaGFyKiBlbGVtZW50TmFtZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBpbnQgcmV0
ID0gYXNuMV9kZXJfY29kaW5nKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24x
L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0
aWVzLmgKaW5kZXggYmFkNmUzOTA1MjBiNGNkYzhiZmQ3OGQyOTA3ZjRkM2I4YzZhMDljMi4uMGFk
NzI4OWVjZWVhOTc1NGFmYzgzNzM0ZmJlMjhiNDFjMWRkNjExMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKQEAgLTU2LDggKzU2LDggQEAg
cHJpdmF0ZToKIAogYm9vbCBjcmVhdGVTdHJ1Y3R1cmUoY29uc3QgY2hhciogZWxlbWVudE5hbWUs
IGFzbjFfbm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3Qs
IGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwot
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29u
c3QgY2hhciogZWxlbWVudE5hbWUpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNvZGVk
RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpOworc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBj
aGFyKiBlbGVtZW50TmFtZSk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5jb2Rl
ZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKIGJvb2wgd3Jp
dGVFbGVtZW50KGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsKIAogfSAvLyBuYW1lc3BhY2UgVEFTTjEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0
dGluZ3MuY3BwLmVyYgppbmRleCA4NTJkNjdiN2IyODlkNmIzYTcwZmRiZjlmY2IyNmU5MWQ1ZjY5
ZmFlLi43ZTkxZDM1YzM5YmU0NjIwYjczNGRjNjc0ZjJiMWFmNjE3YmY4MzVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5l
cmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5jcHAuZXJiCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5n
LnNldHRlckZ1bmN0aW9uTmFtZSAlPig8JT0gQHNldHRpbmcucGFyYW1ldGVyVHlwZSAlPgogCiA8
JS0gZm9yIEBzZXR0aW5nIGluIEBhbGxTZXR0aW5nc1NldC5pbnNwZWN0b3JPdmVycmlkZVNldHRp
bmdzIGRvIC0lPgogPCUtIGlmIEBzZXR0aW5nLmhhc0NvbXBsZXhTZXR0ZXI/IC0lPgotdm9pZCBT
ZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJy
aWRlKE9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcu
bmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKQordm9pZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNl
dHRlckZ1bmN0aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8PCU9IEBz
ZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3Zl
cnJpZGUpCiB7CiAgICAgaWYgKG1fdmFsdWVzLjwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9y
T3ZlcnJpZGUgPT0gPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1Rl
bXBsYXRlcy9TZXR0aW5ncy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NU
ZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIKaW5kZXggOWZmYWVmYmMwNjY2NmQ4YTk3N2JjYjljNDE3
NDdiMDRiNjc0MTE2OC4uNjgyYWRmNzI4OTIwNjcwMjdkYjMxYTEyZGUyMDc1NWU2ZGUxYTFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0
aW5ncy5oLmVyYgorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVz
L1NldHRpbmdzLmguZXJiCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogPCUtIGZvciBAc2V0
dGluZyBpbiBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4K
ICAgICA8JS0gaWYgQHNldHRpbmcuaGFzQ29tcGxleFNldHRlcj8gLSU+Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCA8JT0gQHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lICU+SW5zcGVjdG9yT3Zl
cnJpZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4+KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlvbk5hbWUgJT5JbnNwZWN0
b3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+Pik7
CiAgICAgPCUtIGVsc2UgLSU+Ci0gICAgdm9pZCA8JT0gQHNldHRpbmcuc2V0dGVyRnVuY3Rpb25O
YW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5
cGUgJT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUpIHsgbV92YWx1ZXMu
PCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSA9IDwlPSBAc2V0dGluZy5uYW1l
ICU+SW5zcGVjdG9yT3ZlcnJpZGU7IH0KKyAgICB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5j
dGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0dGluZy5w
YXJhbWV0ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKSB7
IG1fdmFsdWVzLjwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUgPSA8JT0gQHNl
dHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOyB9CiAgICAgPCUtIGVuZCAtJT4KIDwlLSBl
bmQgLSU+CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpIGZp
bmFsIHsgcmV0dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmljRmFtaWxpZXM7IH0KQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogICAgICAgICBWYWx1ZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKIDwl
LSBmb3IgQHNldHRpbmcgaW4gQGFsbFNldHRpbmdzU2V0Lmluc3BlY3Rvck92ZXJyaWRlU2V0dGlu
Z3MgZG8gLSU+Ci0gICAgICAgIE9wdGlvbmFsPDwlPSBAc2V0dGluZy50eXBlICU+PiA8JT0gQHNl
dHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPDwl
PSBAc2V0dGluZy50eXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRl
OwogPCUtIGVuZCAtJT4KIAogICAgICAgICBGb250R2VuZXJpY0ZhbWlsaWVzIGZvbnRHZW5lcmlj
RmFtaWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAppbmRleCBlYWI4MDQ1YmE3OGEyNWY0ZjU1MzJiZDI2OTEyZThhNGNiNTEyYmRjLi5mOTIz
NTA1YmM2NWU0ZmJjODg3OGM3ZjFjNmYyMzcxNDU3YTQ3MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIwMjYsNyArMjAyNiw3IEBA
IENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsCiAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldChjdXJy
ZW50Tm9kZSwgbGFzdFN0YXJ0T2Zmc2V0LCBvZmZzZXRJbkNoYXJhY3RlciwgcmVtYWluaW5nKTsK
IH0KIAotaW50IEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJhbmdlKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCitpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmICghcmFuZ2Up
CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIwNTQsNyArMjA1NCw3IEBAIFNpbXBsZVJhbmdlIEFY
T2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCiAgICAgcmV0dXJu
IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhub2RlKTsKIH0KICAgICAKLU9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiBvcmlnaW5hbFJhbmdlLCBjb25zdCBTdHJpbmcmIG1hdGNoVGV4dCkK
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1Rl
eHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIG9yaWdpbmFsUmFuZ2UsIGNvbnN0IFN0cmlu
ZyYgbWF0Y2hUZXh0KQogewogICAgIC8vIENyZWF0ZSBhIGxhcmdlIGVub3VnaCByYW5nZSB0byBm
aW5kIHRoZSB0ZXh0IHdpdGhpbiBpdCB0aGF0J3MgYmVpbmcgc2VhcmNoZWQgZm9yLgogICAgIHVu
c2lnbmVkIHRleHRMZW5ndGggPSBtYXRjaFRleHQubGVuZ3RoKCk7CkBAIC0yMTIxLDcgKzIxMjEs
NyBAQCBzdGF0aWMgTm9kZSogcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKE5vZGUm
IHJlcGxhY2VkTm9kZSwgaW50JiBvZmZzZXQsCiAgICAgcmV0dXJuIHJlcGxhY2VkTm9kZS5wYXJl
bnROb2RlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBv
aW50KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0
IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCiB7CiAgICAg
aWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTIxNTcsNyArMjE1Nyw3IEBAIHN0YXRpYyBib29sIHNldFJhbmdlU3RhcnRPckVuZFdp
dGhDaGFyYWN0ZXJPZmZzZXQoU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBDaGFyCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFy
YWN0ZXJPZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDIpCitz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJl
ZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQx
LCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDIpCiB7CiAgICAgYm9vbCBh
bHJlYWR5SW5PcmRlciA9IGNoYXJhY3Rlck9mZnNldHNJbk9yZGVyKGNoYXJhY3Rlck9mZnNldDEs
IGNoYXJhY3Rlck9mZnNldDIpOwogICAgIGF1dG8gc3RhcnQgPSBib3VuZGFyeVBvaW50KGFscmVh
ZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MSA6IGNoYXJhY3Rlck9mZnNldDIsIHRydWUpOwpA
QCAtMjQ0OSw3ICsyNDQ5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6
YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXIKICAgICByZXR1cm4g
dGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CiB9CiAKLU9wdGlvbmFsPFRleHRNYXJrZXJEYXRh
PiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCitzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRh
PiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCiB7CiAgICAgaWYgKHZpc2libGVQb3MuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBP
cHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JW
aXNpYmxlUG9zaXRpb24oY29uc3QgVgogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEg
cGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0Lgot
T3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
Rmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRl
eHRDb250cm9sKQorc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6
dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pih0ZXh0Q29udHJv
bCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
NjI3LDE0ICsyNjI3LDE0IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0V29y
ZEVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmCiAgICAgcmV0dXJuIGVu
ZENoYXJhY3Rlck9mZnNldE9mV29yZChuZXh0T2Zmc2V0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpsZWZ0V29yZFJhbmdl
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6bGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBz
dGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0ZXJPZmZzZXQsIExlZnRXb3JkSWZPbkJv
dW5kYXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZX
b3JkKHN0YXJ0KTsKICAgICByZXR1cm4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRz
KHN0YXJ0LCBlbmQpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6
cmlnaHRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyaWdodFdvcmRSYW5nZShj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJP
ZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0ZXJPZmZzZXQs
IFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENo
YXJhY3Rlck9mZnNldE9mV29yZChzdGFydCk7CkBAIC0yODU1LDcgKzI4NTUsNyBAQCBDaGFyYWN0
ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZQYXJhZ3JhcGgoY29u
c3QgQ2hhcmFjdGVyT2ZmcwogICAgIHJldHVybiBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9y
UmFuZ2UocmFuZ2VGb3JOb2RlQ29udGVudHMobm9kZSksIGZhbHNlKTsKIH0KIAotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZz
ZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNoYXJhY3Rlck9mZnNl
dCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mUGFyYWdy
YXBoKHN0YXJ0KTsKQEAgLTI4OTYsNyArMjg5Niw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKGNvbnN0IENoYXJhY3Rlck9mZnNl
CiAgICAgcmV0dXJuIG5leHRCb3VuZGFyeShjaGFyYWN0ZXJPZmZzZXQsIGVuZFNlbnRlbmNlQm91
bmRhcnkpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6c2VudGVu
Y2VGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpzZW50ZW5jZUZv
ckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkK
IHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mU2Vu
dGVuY2UoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hh
cmFjdGVyT2Zmc2V0T2ZTZW50ZW5jZShzdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDVjM2JmMmYxN2Y2ODk3ZGIxNTgzY2VkYzM1MDZi
OTU5NWFlYTg4YmUuLjU2NDcxNmNlMzRiZGRjNzZjNjQ0ZmVmMzFhODFhMGYwZTNhNDNlM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0yMjYs
OCArMjI2LDggQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2Jq
ZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBjb25zdDsKIAogICAgIC8vIFRleHQgbWFy
a2VyIHV0aWxpdGllcy4KLSAgICBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRh
dGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENv
bnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRl
eHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFy
a2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0
TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIHZvaWQgdGV4dE1hcmtl
ckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVy
T2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CkBAIC0yMzks
MjMgKzIzOSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFG
b3JSYW5nZShUZXh0TWFya2VyRGF0YSYsIGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMgPSBmYWxzZSk7CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRh
KFRleHRNYXJrZXJEYXRhJik7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVW5v
cmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclVu
b3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0Jik7CiAgICAgc3RhdGljIFNpbXBsZVJhbmdlIHJhbmdlRm9yTm9kZUNvbnRl
bnRzKE5vZGUmKTsKLSAgICBzdGF0aWMgaW50IGxlbmd0aEZvclJhbmdlKGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYpOworICAgIHN0YXRpYyBpbnQgbGVuZ3RoRm9yUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKICAgICAKICAgICAvLyBXb3JkIGJvdW5kYXJ5CiAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRXb3JkRW5kQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1dvcmRTdGFydENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gbGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmlnaHRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByaWdodFdvcmRSYW5n
ZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBQYXJhZ3JhcGgKLSAgICBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gcGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENo
YXJhY3Rlck9mZnNldCYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHBhcmFncmFw
aEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0
ZXJPZmZzZXQgbmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBTZW50ZW5j
ZQotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBz
ZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBD
aGFyYWN0ZXJPZmZzZXQgbmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1NlbnRlbmNlU3RhcnRD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgCkBAIC0zNTUsNyAr
MzU1LDcgQEAgcHVibGljOgogICAgIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSogY29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSgpIHsgcmV0dXJuIG1fY29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZS5nZXQoKTsgfQogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudDsgfQotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uc0ZvclRl
c3RzKGJvb2wgdmFsdWUpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBl
cmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CiAgICAgdm9pZCBkZWZlclRleHRSZXBsYWNlbWVu
dE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jiwg
Y29uc3QgU3RyaW5nJiBwcmV2aW91c1ZhbHVlKTsKIAotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VNYXRjaGVzVGV4dE5l
YXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGlj
IFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCkBAIC00
NzYsNyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZU1vZGFsQ2hhbmdlKEVsZW1l
bnQmKTsKICAgICAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7IC8vIGNvbnN0YW50IGZvciBvYmplY3QncyBsaWZl
dGltZS4KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VJRDsg
Ly8gY29uc3RhbnQgZm9yIG9iamVjdCdzIGxpZmV0aW1lLgogICAgIEhhc2hNYXA8QVhJRCwgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBtX29iamVjdHM7CiAgICAgSGFzaE1hcDxSZW5kZXJP
YmplY3QqLCBBWElEPiBtX3JlbmRlck9iamVjdE1hcHBpbmc7CiAgICAgSGFzaE1hcDxXaWRnZXQq
LCBBWElEPiBtX3dpZGdldE9iamVjdE1hcHBpbmc7CkBAIC02MjEsNyArNjIxLDcgQEAgaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0
KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdl
ZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRJc1N5bmNocm9uaXpp
bmdTZWxlY3Rpb24oYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0
U2VsZWN0aW9uSW50ZW50KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JikgeyB9Ci1pbmxp
bmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVk
Q2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNl
dHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JikgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiBpbmxpbmUgSW50UmVjdCBBWE9iamVjdENhY2hlOjphYnNvbHV0
ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpIHsg
cmV0dXJuIEludFJlY3QoKTsgfQogaW5saW5lIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hl
OjpjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFYQ29yZU9iamVjdCopIHsgcmV0
dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0
Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5n
ZSYsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRl
eCA1ZGZkZDhkMjNiYTJmNjA5MWZmNGZhZDZmNjEzMzk2YzgxOTQxOTUyLi42ZTZlNzY0MDRlZTEz
OGIzY2IwNjIzYTVhZWFhZDU0YTdjMWU0YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNNaXNzcGVsbGVkOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0
aW9uKSBjb25zdAogewogICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5v
ZGUpCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0
Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGUKIC8vIFJldHVy
bnMgdGhlIHJhbmdlIHRoYXQgaXMgZmV3ZXIgcG9zaXRpb25zIGF3YXkgZnJvbSB0aGUgcmVmZXJl
bmNlIHJhbmdlLgogLy8gTk9URTogVGhlIGFmdGVyIHJhbmdlIGlzIGV4cGVjdGVkIHRvIEFDVFVB
TExZIGJlIGFmdGVyIHRoZSByZWZlcmVuY2UgcmFuZ2UgYW5kIHRoZSBiZWZvcmUKIC8vIHJhbmdl
IGlzIGV4cGVjdGVkIHRvIEFDVFVBTExZIGJlIGJlZm9yZS4gVGhlc2UgYXJlIG5vdCBjaGVja2Vk
IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBy
YW5nZUNsb3Nlc3RUb1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByZWZlcmVuY2VSYW5nZSwgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiYg
YmVmb3JlUmFuZ2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VDbG9z
ZXN0VG9SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmVmZXJlbmNlUmFuZ2UsIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
JiBiZWZvcmVSYW5nZSkKIHsKICAgICBpZiAoIWJlZm9yZVJhbmdlKQogICAgICAgICByZXR1cm4g
V1RGTW92ZShhZnRlclJhbmdlKTsKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlQ2xvc2VzdFRvUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVy
ZW5jZVJhbgogICAgIHJldHVybiBXVEZNb3ZlKGRpc3RhbmNlQmVmb3JlIDw9IGRpc3RhbmNlQWZ0
ZXIgPyBiZWZvcmVSYW5nZSA6IGFmdGVyUmFuZ2UpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJl
Y3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVyZW5jZVJhbmdlLCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aFN0cmluZ3MpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihjb25zdCBTaW1w
bGVSYW5nZSYgcmVmZXJlbmNlUmFuZ2UsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gc2Vh
cmNoRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncykgY29uc3QK
IHsKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBA
IC01MzMsNyArNTMzLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW8KICAgICBpZiAoaXNCYWNr
d2FyZFNlYXJjaCkKICAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25GbGFnOjpCYWNr
d2FyZHMpOwogICAgIAotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjbG9zZXN0U3RyaW5nUmFu
Z2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlOwog
ICAgIGZvciAoYXV0byYgc2VhcmNoU3RyaW5nIDogc2VhcmNoU3RyaW5ncykgewogICAgICAgICBp
ZiAoYXV0byBmb3VuZFN0cmluZ1JhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmco
c2VhcmNoU3RyaW5nLCByZWZlcmVuY2VSYW5nZSwgZmluZE9wdGlvbnMpKSB7CiAgICAgICAgICAg
ICBib29sIGZvdW5kU3RyaW5nSXNDbG9zZXI7CkBAIC01NTMsNyArNTUzLDcgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9S
YW5nZUluRGlyZWN0aW8KIAogLy8gUmV0dXJucyBhbiBjb2xsYXBzZWQgcmFuZ2UgcHJlY2VkaW5n
IHRoZSBkb2N1bWVudCBjb250ZW50cyBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24uCiAvLyBGSVhN
RTogV2h5IGlzIHRoYXQgYmVoYXZpb3IgbW9yZSB1c2VmdWwgdGhhbiByZXR1cm5pbmcgbnVsbCBp
biB0aGF0IGNhc2U/Ci1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0aW9uUmFuZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8gZnJhbWUg
PSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC01NjYsNyArNTY2LDcgQEAgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblJhbmdlKCkg
Y29uc3QKICAgICByZXR1cm4geyB7IHsgZG9jdW1lbnQsIDAgfSwgeyBkb2N1bWVudCwgMCB9IH0g
fTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1l
bnRSYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5v
ZGUoKTsKICAgICBpZiAoIW5vZGUpCkBAIC01NzQsOSArNTc0LDkgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiAgICAgcmV0
dXJuIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsKIH0KIAotT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFy
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZFRleHRSYW5n
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2Um
IHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0
CiB7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IGZvdW5kOwogICAgIGlmIChkaXJlY3Rpb24gPT0gQWNjZXNzaWJpbGl0eVNl
YXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCiAgICAgICAgIGZvdW5kID0gcmFuZ2VPZlN0cmlu
Z0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJl
Y3Rpb246Ok5leHQsIHNlYXJjaFN0cmluZ3MpOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBB
Y2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6QmFja3dhcmQpCkBAIC01OTksNyArNTk5
LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0
UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHMKIAogVmVjdG9yPFNpbXBsZVJhbmdlPiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlcyhjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNo
VGV4dENyaXRlcmlhJiBjcml0ZXJpYSkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgaWYg
KGNyaXRlcmlhLnN0YXJ0ID09IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tOjpTZWxl
Y3Rpb24pCiAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICBlbHNlCkBAIC0x
MTAzLDcgKzExMDMsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYQogICAgIHJldHVybiB7IHN0
YXJ0UG9zaXRpb24sIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLnN0YXJ0ICsgcmFuZ2Uu
bGVuZ3RoKSB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5n
ZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkgY29uc3QKIHsK
ICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZ2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCk7CiAgICAg
aWYgKHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoID4gdGV4dExlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNGQ5
YzkzMzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNlZDk3Ny4uYmQ1MDE5NjVhM2JlNmU2Mzdi
MDFiNGJkMWE5MTkyNDg5NThjM2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3Jl
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUyNCw3ICs1MjQs
NyBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFu
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAg
ICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2ln
bmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAK
LSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgc3RhdGljIGJvb2wgcmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoTm9kZSog
cmVwbGFjZWROb2RlKTsKIAogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlv
blJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHB1
YmxpYzoKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFp
blRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVhU
ZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25zdCBOU1Jhbmdl
JikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTc5NSw5ICs3OTUsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVj
dGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNl
bGVjdGlvblJhbmdlKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0
UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJh
bmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUlu
RGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3Ms
IGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rp
b24pIGNvbnN0OwogCiAgICAgQVhJRCBtX2lkIHsgMCB9OwogcHJvdGVjdGVkOiAvLyBGSVhNRTog
TWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4
IDk4MjMwNmI1NDgyZDIyYzFmMGM2ODY2OGFkODZkY2JhYWYyZTU0OGEuLmZmNWM2NGZlMDllMDAz
OTc2NmEyNmY4OTU2YmExMTUyYWJhM2I2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC05
NjcsNyArOTY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYg
c3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0g
MDsKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWdu
ZWQpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbGVtZW50
UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBlbGVtZW50UmFuZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNp
YmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mTGVmdFdvcmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CkBA
IC0xMjczLDcgKzEyNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9y
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25z
dCA9IDA7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgYSBDT0NP
QSBtZXRob2QuCiAgICAgdmlydHVhbCBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFu
Z2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCAxYzQ1MjY2ZWI3ZDVlZTRmYTdkYmIzNDdkNTVlMGQ3MTVmMGZjMjYwLi5kZDUwNDUy
ODdjYjEzMmJjNDMyYWUyZTk2ZjM5MTg2YTlhOGJmNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTY0OSw3ICs2NDksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4
dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudAogICAgICAgICAvLyBJ
ZiBwb3NzaWJsZSwgdXNlIGEgdGV4dCBpdGVyYXRvciB0byBnZXQgdGhlIHRleHQsIHNvIHRoYXQg
d2hpdGVzcGFjZQogICAgICAgICAvLyBpcyBoYW5kbGVkIGNvbnNpc3RlbnRseS4KICAgICAgICAg
RG9jdW1lbnQqIG5vZGVEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgICAgIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiB0ZXh0UmFuZ2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHRl
eHRSYW5nZTsKICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCkpIHsK
ICAgICAgICAgICAgIG5vZGVEb2N1bWVudCA9ICZub2RlLT5kb2N1bWVudCgpOwogICAgICAgICAg
ICAgdGV4dFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpub2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggMDY4M2UwY2JhODE0ZmJlYWVmYjNkMmM5Njk4
YzQwNTM4NGMzMWIzOC4uMWUzM2RjY2UyYjg4ZDk1MTVkODAxNTViYTg5NzQ1ZWFiM2E1NzAzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMg
QXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0T2JqZWN0KEF0a0h5cGVybGlu
ayogbGluaywgZ2ludCBpbgogICAgIHJldHVybiBBVEtfT0JKRUNUKGFjY2Vzc2libGVIeXBlcmxp
bmstPnByaXYtPmh5cGVybGlua0ltcGwpOwogfQogCi1zdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZv
ck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UpCitzdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
IHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNDg5NGY4NzcxZGNhNTM5YjE1MmY2ZmVkNTcxMDdj
YzBkMWZhNjlkYS4uYTljYWU2ZDcwMTdkMTQzNTMxYWU3OTZmODNiMzM0N2VmYWNhNWI5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE0Nyw3ICsxNDcsNyBA
QCBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIDogTlNPYmplY3QKIAogKyAo
V2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlv
bjooVmlzaWJsZVBvc2l0aW9uJil2aXNpYmxlUG9zIGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNo
ZTsKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhDaGFyYWN0
ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0IGNhY2hlOihBWE9iamVj
dENhY2hlKiljYWNoZTsKLSsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVu
ZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBp
c1N0YXJ0OihCT09MKWlzU3RhcnQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlOworKyAoV2Vi
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0
YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsKIAogQGVuZAogCkBAIC0yMDcsNyArMjA3
LDcgQEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aENoYXJh
Y3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JikKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJr
ZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAotKyAoV2ViQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhP
YmplY3RDYWNoZSopY2FjaGUKKysgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRP
ckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
KXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUK
IHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjM5MCw3ICsyMzkw
LDcgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJh
bmdlCiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAg
fSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJhbmdlKSk7CiB9CiAKLS0gKE9wdGlv
bmFsPFNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKKy0gKHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5n
ZQogewogICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMjc3NCw3ICsyNzc0LDcgQEAgLSAoQ0dSZWN0KWZyYW1lRm9y
VGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQogICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVj
dFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5d
OwogfQogCi0tIChPcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGcm9tTWFya2VyczooTlNBcnJh
eSAqKW1hcmtlcnMgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAoc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4pcmFuZ2VGcm9tTWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgd2l0aFRleHQ6
KE5TU3RyaW5nICopdGV4dAogewogICAgIGF1dG8gb3JpZ2luYWxSYW5nZSA9IFtzZWxmIHJhbmdl
Rm9yVGV4dE1hcmtlcnM6bWFya2Vyc107CiAgICAgaWYgKCFvcmlnaW5hbFJhbmdlKQpAQCAtMjg0
OCw3ICsyODQ4LDcgQEAgLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01h
cmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2UKICAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6
JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAotLSAoT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFy
a2VycworLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGb3JUZXh0TWFya2Vyczoo
TlNBcnJheSAqKXRleHRNYXJrZXJzCiB7CiAgICAgaWYgKFt0ZXh0TWFya2VycyBjb3VudF0gIT0g
MikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5MDEsNyArMjkwMSw3IEBAIC0g
KE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtl
cnMKICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlcnNGb3JSYW5nZTpbc2VsZiByYW5nZUZvclRl
eHRNYXJrZXJzOnRleHRNYXJrZXJzXV07CiB9CiAKLS0gKE5TQXJyYXkgKil0ZXh0TWFya2Vyc0Zv
clJhbmdlOihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlCistIChOU0FycmF5ICop
dGV4dE1hcmtlcnNGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJh
bmdlCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKaW5kZXggZDY0NjcwNjFjNjVkNDg3Njg1MGJlMWFjZGYyMTc0YTM4MjMw
ZjQ5NC4uOWY4ZTY1YzY4YWIxODk0NDI0OTJmYzliM2U3ZmZmMTM5ZmE1NzkzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0No
YW5nZXMoKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJh
bmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjpyYW5nZUZvclBs
YWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiBheFJhbmdlKSBjb25zdAogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVk
QVhPYmplY3QoKTsKQEAgLTExNDIsNyArMTE0Miw3IEBAIFN0cmluZyBBWElzb2xhdGVkT2JqZWN0
Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSkgY29u
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRP
YmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29u
c3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8qIGF4T2JqZWN0ID0g
YXNzb2NpYXRlZEFYT2JqZWN0KCk7CkBAIC0xNDM4LDcgKzE0MzgsNyBAQCB2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZwogICAgICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFu
Z2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJ
c29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9i
amVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDBhZDgwMDBjNGZiMjU4MGE2ZDg4
ZjEyNzkxZWNlZmUyYWY1NDgwZTYuLmY2MWNlZjJmNzkyMGVkYTNjMWZkZWM5ZDg0Y2YxZTEwNDJm
YTk5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTM5MCw3ICszOTAsNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNp
Z25lZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVsZW1lbnRS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVs
ZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmln
aHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDAxLDcg
KzQwMSw3IEBAIHByaXZhdGU6CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc3R5bGVSYW5nZUZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBs
aW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25z
dCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVhUZXh0TWFya2VyUmFuZ2VS
ZWYgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAjZW5kaWYKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sKSBvdmVycmlkZTsKIAogICAgIFN0cmlu
ZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZTsKLSAgICBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYs
IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2Um
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBGbG9h
dFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5
Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGluY3JlbWVudCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBjODhh
M2Q2NjEzMzZhNWRlMWUwZjE5NDU4ZTM4YzAzMjQyNzY3MDFjLi4xMzBiY2JhNTE3MzRhODA0Yjhh
MTM1YzdiNzkwMmQ3M2VlZjUxZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTczNiw3ICs3MzYsNyBAQCBDaGFy
YWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBj
YWNoZSwgQVhUZXh0TWFya2VyUgogCiAvLyBUZXh0TWFya2VyUmFuZ2UgPC0+IFNpbXBsZVJhbmdl
IGNvbnZlcnNpb24uCiAKLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1hcmtlckZvclJh
bmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBib29sIGlzU3RhcnQpCitBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKQEAgLTc1MCw3ICs3NTAsNyBAQCBBWFRleHRN
YXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNo
ZSwgY29uc3QgT3B0aW9uYQogICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9m
KHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLUFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK0FYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRN
YXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKCFjYWNoZSkKQEAgLTc2MSw3ICs3NjEsNyBAQCBBWFRleHRNYXJrZXJSYW5nZVJl
ZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9w
dGlvbgogICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhzdGFydFRleHRNYXJr
ZXIsIGVuZFRleHRNYXJrZXIpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0
TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1h
cmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJrZXJSYW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBhZGM3NDA1ODVlOTIxZTAxYjJlZDk4ZjVj
ZDYwYTdiMWFmOTVjNTk5Li5lODk0OTYxNGUyYzNkZDZhODkzNThhMTI3NTEyYmNmZTUxNzU1NjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC02NTgsNyAr
NjU4LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJj
aEtleUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihzZWFyY2hLZXkpID8gc2VhcmNoS2V5IDogQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55
VHlwZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IG1ha2VW
ZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkqLCBpZCBhcnJheUVsZW1l
bnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBtYWtlVmVj
dG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5KiwgaWQgYXJyYXlFbGVtZW50
KQogewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNz
XSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5oCmluZGV4IGIzMDUyNTRjNDVhOGU3YWZiMzdjMDc5NGQ4OGVhOTljODczNDEx
MmMuLjc0MmIzZDAzYTQ4ZjJiOGViNzJhMDlhODUzZjdhMjE5ZmFiZTJhMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaApAQCAtODAsOCArODAsOCBAQCBBWFRleHRNYXJr
ZXJSZWYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiwgY29uc3Qg
Q2hhcmFjdGVyT2ZmcwogQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJr
ZXIoQVhPYmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJlZik7CiAKIC8vIFRleHRNYXJrZXJSYW5n
ZSA8LT4gU2ltcGxlUmFuZ2UgY29udmVyc2lvbi4KLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5k
VGV4dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBib29sIGlzU3RhcnQpOwotQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJh
bmdlRnJvbVJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
KTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9iamVj
dENhY2hlKiwgQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworQVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JF
bmRUZXh0TWFya2VyRm9yUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgYm9vbCBpc1N0YXJ0KTsKK0FYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRN
YXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiwgY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mKTsKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVGV4dE1h
cmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBBWFRleHRNYXJrZXJSYW5nZVJlZik7CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggY2IzNTkyMWRkZDRlNjA3
OTk3MzE1MDJiZWRmZjFhYjNmMTM3NmNhNS4uODk3M2UzOTU2NDc0NmRjMzc1ZmE1YjZhMDJjMGRj
ODU5NGRkYzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTcwOSwxMSArNzA5LDExIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBhY2Nl
c3NpYmlsaXR5VGV4dE9wZXJhdGlvbkZvclBhcmFtZXRlcml6ZWRBdHRyCiAgICAgcmV0dXJuIG9w
ZXJhdGlvbjsKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjxPcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vzc2liaWxpdHlNaXNzcGVsbGluZ1NlYXJj
aENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShBWE9iamVjdENhY2hlKiBheE9iamVj
dENhY2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtcykKK3N0YXRpYyBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFj
Y2Vzc2liaWxpdHlNaXNzcGVsbGluZ1NlYXJjaENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBh
cmFtcykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgc3RkOjpwYWlyPE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gY3JpdGVy
aWE7CisgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uPiBjcml0ZXJpYTsKIAogICAgIEFTU0VSVChBWE9iamVjdElzVGV4
dE1hcmtlclJhbmdlKFtwYXJhbXMgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5n
ZSJdKSk7CiAgICAgY3JpdGVyaWEuZmlyc3QgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShheE9i
amVjdENhY2hlLCAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpW3BhcmFtcyBvYmplY3RGb3JLZXk6QCJB
WFN0YXJ0VGV4dE1hcmtlclJhbmdlIl0pOwpAQCAtMzU3OSw3ICszNTc5LDcgQEAgLSAoQVhUZXh0
TWFya2VyUmFuZ2VSZWYpdGV4dE1hcmtlclJhbmdlQXRUZXh0TWFya2VyOihBWFRleHRNYXJrZXJS
ZWYpdGV4dE1hcmtlcgogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIGNo
YXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRN
YXJrZXIpOwotICAgICAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgICAgICBzd2l0Y2ggKHRleHRVbml0
KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRXb3JkOgogICAgICAgICAgICAgcmFuZ2Ug
PSBjYWNoZS0+bGVmdFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAppbmRleCBjOWU4ZGYxZmNkNTg3ZTlhMWEy
ODAyY2Y4NDQyODk1YjI5ZDFiYzJjLi5jZThmOGNkMzcwNjFiMjM4ZmZmZWUxMDkxMmZjNTczNzBj
ZDYwYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZm
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNw
cApAQCAtNjcsMTMgKzY3LDEzIEBAIEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldFRp
bWluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRpbWluZzsKIH0KIAotQmFzaWNFZmZlY3RUaW1pbmcg
QW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpIGNvbnN0CitCYXNpY0VmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJhc2ljVGlt
aW5nKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjb25zdAogewogICAgIC8vIFRo
ZSBXZWIgQW5pbWF0aW9ucyBzcGVjIGludHJvZHVjZXMgYSBudW1iZXIgb2YgYW5pbWF0aW9uIGVm
ZmVjdCB0aW1lLXJlbGF0ZWQgZGVmaW5pdGlvbnMgdGhhdCByZWZlcgogICAgIC8vIHRvIGVhY2gg
b3RoZXIgYSBmYWlyIGJpdCwgc28gcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nIHRoZW0gYXMgaW5k
aXZpZHVhbCBtZXRob2RzLCBpdCdzIG1vcmUgZWZmaWNpZW50CiAgICAgLy8gdG8gcmV0dXJuIHRo
ZW0gYWxsIGFzIGEgc2luZ2xlIEJhc2ljRWZmZWN0VGltaW5nLgogCi0gICAgYXV0byBsb2NhbFRp
bWUgPSBbdGhpcywgc3RhcnRUaW1lXSgpIC0+IE9wdGlvbmFsPFNlY29uZHM+IHsKKyAgICBhdXRv
IGxvY2FsVGltZSA9IFt0aGlzLCBzdGFydFRpbWVdKCkgLT4gc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiB7CiAgICAgICAgIC8vIDQuNS40LiBMb2NhbCB0aW1lCiAgICAgICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNsb2NhbC10aW1lLXNlY3Rpb24KIApAQCAt
MTE5LDcgKzExOSw3IEBAIEJhc2ljRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFz
aWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjCiAgICAgICAgIHJldHVybiBB
bmltYXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOwogICAgIH0oKTsKIAotICAgIGF1dG8gYWN0aXZl
VGltZSA9IFt0aGlzLCBsb2NhbFRpbWUsIHBoYXNlXSgpIC0+IE9wdGlvbmFsPFNlY29uZHM+IHsK
KyAgICBhdXRvIGFjdGl2ZVRpbWUgPSBbdGhpcywgbG9jYWxUaW1lLCBwaGFzZV0oKSAtPiBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IHsKICAgICAgICAgLy8gMy44LjMuMS4gQ2FsY3VsYXRpbmcgdGhl
IGFjdGl2ZSB0aW1lCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5p
bWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZlLXRpbWUKIApAQCAtMTY3LDcgKzE2Nyw3
IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmluZGluZ3NDb21w
dXRlZFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIGdldENvbXB1dGVkVGltaW5nKCk7CiB9CiAK
LUNvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmco
T3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjb25zdAorQ29tcHV0ZWRFZmZlY3RUaW1pbmcg
QW5pbWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IHN0YXJ0VGltZSkgY29uc3QKIHsKICAgICAvLyBUaGUgV2ViIEFuaW1hdGlvbnMgc3BlYyBpbnRy
b2R1Y2VzIGEgbnVtYmVyIG9mIGFuaW1hdGlvbiBlZmZlY3QgdGltZS1yZWxhdGVkIGRlZmluaXRp
b25zIHRoYXQgcmVmZXIKICAgICAvLyB0byBlYWNoIG90aGVyIGEgZmFpciBiaXQsIHNvIHJhdGhl
ciB0aGFuIGltcGxlbWVudGluZyB0aGVtIGFzIGluZGl2aWR1YWwgbWV0aG9kcywgaXQncyBtb3Jl
IGVmZmljaWVudApAQCAtMTc3LDcgKzE3Nyw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1h
dGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAg
ICAgYXV0byBhY3RpdmVUaW1lID0gYmFzaWNFZmZlY3RUaW1pbmcuYWN0aXZlVGltZTsKICAgICBh
dXRvIHBoYXNlID0gYmFzaWNFZmZlY3RUaW1pbmcucGhhc2U7CiAKLSAgICBhdXRvIG92ZXJhbGxQ
cm9ncmVzcyA9IFt0aGlzLCBwaGFzZSwgYWN0aXZlVGltZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+
IHsKKyAgICBhdXRvIG92ZXJhbGxQcm9ncmVzcyA9IFt0aGlzLCBwaGFzZSwgYWN0aXZlVGltZV0o
KSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAvLyAzLjguMy4yLiBDYWxjdWxh
dGluZyB0aGUgb3ZlcmFsbCBwcm9ncmVzcwogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLW92ZXJhbGwtcHJvZ3Jlc3MK
IApAQCAtMjA0LDcgKzIwNCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVj
dDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgICAgIHJl
dHVybiBzdGQ6OmFicyhvdmVyYWxsUHJvZ3Jlc3MpOwogICAgIH0oKTsKIAotICAgIGF1dG8gc2lt
cGxlSXRlcmF0aW9uUHJvZ3Jlc3MgPSBbdGhpcywgb3ZlcmFsbFByb2dyZXNzLCBwaGFzZSwgYWN0
aXZlVGltZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIHNpbXBsZUl0ZXJhdGlv
blByb2dyZXNzID0gW3RoaXMsIG92ZXJhbGxQcm9ncmVzcywgcGhhc2UsIGFjdGl2ZVRpbWVdKCkg
LT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgLy8gMy44LjMuMy4gQ2FsY3VsYXRp
bmcgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MKICAgICAgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2NhbGN1bGF0aW5nLXRoZS1zaW1wbGUtaXRl
cmF0aW9uLXByb2dyZXNzCiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWlu
ZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0
YXJ0VAogICAgICAgICByZXR1cm4gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3M7CiAgICAgfSgpOwog
Ci0gICAgYXV0byBjdXJyZW50SXRlcmF0aW9uID0gW3RoaXMsIGFjdGl2ZVRpbWUsIHBoYXNlLCBz
aW1wbGVJdGVyYXRpb25Qcm9ncmVzcywgb3ZlcmFsbFByb2dyZXNzXSgpIC0+IE9wdGlvbmFsPGRv
dWJsZT4geworICAgIGF1dG8gY3VycmVudEl0ZXJhdGlvbiA9IFt0aGlzLCBhY3RpdmVUaW1lLCBw
aGFzZSwgc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MsIG92ZXJhbGxQcm9ncmVzc10oKSAtPiBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAvLyAzLjguNC4gQ2FsY3VsYXRpbmcgdGhlIGN1
cnJlbnQgaXRlcmF0aW9uCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWIt
YW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtY3VycmVudC1pdGVyYXRpb24KIApAQCAtMjgy
LDcgKzI4Miw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29t
cHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgICAgIHJldHVybiBBbmlt
YXRpb25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uOjpSZXZlcnNlOwogICAgIH0oKTsKIAotICAg
IGF1dG8gZGlyZWN0ZWRQcm9ncmVzcyA9IFtzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcywgY3VycmVu
dERpcmVjdGlvbl0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIGRpcmVjdGVkUHJv
Z3Jlc3MgPSBbc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MsIGN1cnJlbnREaXJlY3Rpb25dKCkgLT4g
c3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgLy8gMy45LjEuIENhbGN1bGF0aW5nIHRo
ZSBkaXJlY3RlZCBwcm9ncmVzcwogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
d2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLWRpcmVjdGVkLXByb2dyZXNzCiAKQEAg
LTMwMiw3ICszMDIsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6Omdl
dENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogICAgICAgICByZXR1cm4g
MSAtICpzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKICAgICB9KCk7CiAKLSAgICBhdXRvIHRyYW5z
Zm9ybWVkUHJvZ3Jlc3MgPSBbdGhpcywgZGlyZWN0ZWRQcm9ncmVzcywgY3VycmVudERpcmVjdGlv
biwgcGhhc2VdKCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CisgICAgYXV0byB0cmFuc2Zvcm1lZFBy
b2dyZXNzID0gW3RoaXMsIGRpcmVjdGVkUHJvZ3Jlc3MsIGN1cnJlbnREaXJlY3Rpb24sIHBoYXNl
XSgpIC0+IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB7CiAgICAgICAgIC8vIDMuMTAuMS4gQ2FsY3Vs
YXRpbmcgdGhlIHRyYW5zZm9ybWVkIHByb2dyZXNzCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtdHJhbnNmb3JtZWQt
cHJvZ3Jlc3MKIApAQCAtMzUyLDcgKzM1Miw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1h
dGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAg
ICAgcmV0dXJuIGNvbXB1dGVkVGltaW5nOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRp
b25FZmZlY3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGlt
aW5nPiB0aW1pbmcpCitFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OmJpbmRpbmdz
VXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+IHRpbWluZykK
IHsKICAgICBhdXRvIHJldFZhbCA9IHVwZGF0ZVRpbWluZyh0aW1pbmcpOwogICAgIGlmICghcmV0
VmFsLmhhc0V4Y2VwdGlvbigpICYmIHRpbWluZyAmJiBpczxDU1NBbmltYXRpb24+KGFuaW1hdGlv
bigpKSkKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZl
Y3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VAogICAgIHJl
dHVybiByZXRWYWw7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEFuaW1hdGlvbkVmZmVjdDo6dXBk
YXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCitFeGNlcHRp
b25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9w
dGlvbmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCiB7CiAgICAgLy8gNi41LjQuIFVwZGF0aW5nIHRo
ZSB0aW1pbmcgb2YgYW4gQW5pbWF0aW9uRWZmZWN0CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL3dlYi1hbmltYXRpb25zLyN1cGRhdGluZy1hbmltYXRpb25lZmZlY3QtdGltaW5nCkBA
IC01NDEsNyArNTQxLDcgQEAgdm9pZCBBbmltYXRpb25FZmZlY3Q6OnNldFRpbWluZ0Z1bmN0aW9u
KGNvbnN0IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mIHRpbWluZ0Z1bmMKICAgICBtX3RpbWluZ0Z1
bmN0aW9uID0gdGltaW5nRnVuY3Rpb247CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9u
RWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlIGl0ZXJhdGlvblByb2dyZXNzKSBj
b25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6cHJvZ3Jlc3NVbnRp
bE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKIHsKICAgICBpZiAoIWlz
PFN0ZXBzVGltaW5nRnVuY3Rpb24+KG1fdGltaW5nRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvbkVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5o
CmluZGV4IGEwMmQyNjI5Y2NiYjkyOTc0MTM0MmFjZDdkYTEwYTE0OGM1YzcwZGEuLjVhODVlZTBh
OWM3NjZiMjZiNjk3NjkyMGE2ZGU0OTM5NDA2ZDhlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKQEAgLTU1LDEzICs1NSwxMyBAQCBwdWJsaWM6CiAKICAg
ICBFZmZlY3RUaW1pbmcgZ2V0QmluZGluZ3NUaW1pbmcoKSBjb25zdDsKICAgICBFZmZlY3RUaW1p
bmcgZ2V0VGltaW5nKCkgY29uc3Q7Ci0gICAgQmFzaWNFZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1p
bmcoT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIEJhc2ljRWZm
ZWN0VGltaW5nIGdldEJhc2ljVGltaW5nKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogICAgIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldEJpbmRpbmdzQ29tcHV0
ZWRUaW1pbmcoKSBjb25zdDsKLSAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBnZXRDb21wdXRlZFRp
bWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gYmluZGluZ3NVcGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RU
aW1pbmc+KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0
aW9uYWxFZmZlY3RUaW1pbmc+KTsKKyAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBnZXRDb21wdXRl
ZFRpbWluZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1VwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9w
dGlvbmFsRWZmZWN0VGltaW5nPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5n
KHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0
ZDo6bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRpb25EaWRQbGF5KCkgPSAwOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25FZmZlY3QoKTsKIAotICAgIHZpcnR1YWwgT3B0
aW9uYWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91Ymxl
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENvbXB1dGVkRGlyZWN0aW9uIDog
dWludDhfdCB7IEZvcndhcmRzLCBSZXZlcnNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3BwCmluZGV4IDZmODQxYzVkN2Y2NzgwOTY3MmQwNTI4
ZWRkZjk3ZmU2ZDA4ZWE0YjMuLjFkMDEzNTJmNzliMjkzNWU4NThmYjM0MzYxYTg3MmRjZGE4ODdm
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2Uu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEFuaW1hdGlvbkV2ZW50QmFzZSk7CiAKLUFuaW1hdGlvbkV2ZW50QmFz
ZTo6QW5pbWF0aW9uRXZlbnRCYXNlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlv
biogYW5pbWF0aW9uLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCitBbmltYXRpb25F
dmVudEJhc2U6OkFuaW1hdGlvbkV2ZW50QmFzZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBXZWJB
bmltYXRpb24qIGFuaW1hdGlvbiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUp
CiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpObykKICAg
ICAsIG1fYW5pbWF0aW9uKGFuaW1hdGlvbikKICAgICAsIG1fdGltZWxpbmVUaW1lKHRpbWVsaW5l
VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVu
dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuaApp
bmRleCBjNzc4MTQ4YTdhZTdmYTQzYTY2OWM3OWRlNzQ5OGNjMTZmZWNhNjU0Li4yODJjZjBiOGEz
NzllMTBiZTQ2MDQ2Nzk4OTRmM2RhYjAyYTAyODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0FuaW1hdGlvbkV2ZW50QmFzZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYkFu
aW1hdGlvbjsKIGNsYXNzIEFuaW1hdGlvbkV2ZW50QmFzZSA6IHB1YmxpYyBFdmVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25FdmVudEJhc2UpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24sIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5l
VGltZSkKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uLCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IHRpbWVsaW5lVGltZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFuaW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkpOwogICAg
IH0KQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0
aW9uRXZlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Ry
YW5zaXRpb25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBPcHRpb25hbDxT
ZWNvbmRzPiB0aW1lbGluZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lVGltZTsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lbGluZVRpbWU7IH0KICAgICBXZWJBbmltYXRpb24qIGFuaW1hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBBbmltYXRpb25F
dmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFuaW1hdGlvbiosIE9wdGlvbmFsPFNlY29u
ZHM+KTsKKyAgICBBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFuaW1h
dGlvbiosIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIEFuaW1hdGlvbkV2ZW50QmFzZShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRXZlbnRJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJl
ZlB0cjxXZWJBbmltYXRpb24+IG1fYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwCmluZGV4IGEyNjcwZDc5MjA5Njhj
MGEyNTQxZDc2ZjYxYjIwMDNlNDVhODQzODEuLjg1NmNiZTUxYTg5MWFiODdjMzBkOThhYWE0ZTlm
Mjc1M2JmYzgzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25QbGF5YmFja0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uUGxheWJhY2tFdmVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQW5pbWF0aW9uUGxheWJhY2tF
dmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBBbmkKICAgICAgICAgbV90aW1lbGluZVRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLUFuaW1h
dGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+
IHRpbWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCitBbmltYXRpb25QbGF5YmFj
a0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
dGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICA6IEFuaW1hdGlvbkV2
ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkKICAgICAsIG1fY3VycmVudFRp
bWUoY3VycmVudFRpbWUpCiB7CkBAIC01NSwxNCArNTUsMTQgQEAgQW5pbWF0aW9uUGxheWJhY2tF
dmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRp
b25hbDwKIAogQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6fkFuaW1hdGlvblBsYXliYWNrRXZlbnQo
KSA9IGRlZmF1bHQ7CiAKLU9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6
YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0
aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2N1cnJlbnRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShtX2N1cnJlbnRUaW1lLnZhbHVlKCkpOwog
fQogCi1PcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzVGlt
ZWxpbmVUaW1lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25QbGF5YmFj
a0V2ZW50OjpiaW5kaW5nc1RpbWVsaW5lVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCF0aW1lbGlu
ZVRpbWUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oCmluZGV4IDM1ZmY5N2M3NDNl
YTQ0ODg1ODQyZWRkYTg0ODllNGU0ZmVmZjdhMzkuLjE2YWZmMzJiYTFhM2I1OGMyYzUzOTNlMjc0
ZDNkMGNiNjJlYjQ5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25QbGF5YmFja0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblBsYXliYWNrRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBbmltYXRpb25QbGF5YmFja0V2ZW50IGZpbmFsIDogcHVibGljIEFuaW1hdGlvbkV2
ZW50QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25QbGF5YmFja0V2
ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGlt
ZSwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlv
bikKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRpb25QbGF5YmFja0V2
ZW50KHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUsIGFuaW1hdGlvbikpOwogICAgIH0K
QEAgLTQ4LDE0ICs0OCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQW5pbWF0aW9uUGxheWJh
Y2tFdmVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIE9wdGlvbmFsPGRv
dWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFNlY29uZHM+
IGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQotICAgIE9wdGlv
bmFsPGRvdWJsZT4gYmluZGluZ3NUaW1lbGluZVRpbWUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzVGltZWxpbmVUaW1lKCkgY29uc3Q7
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFuaW1hdGlvblBsYXliYWNrRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6
Ci0gICAgQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgT3B0aW9uYWw8
U2Vjb25kcz4sIE9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmltYXRpb24qKTsKKyAgICBBbmltYXRp
b25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25Q
bGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2
ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpN
YXJrYWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDUwMjc0NGRmZGIyNDZhMWY2NDQxZmIxYzdm
MWJiOWVkOWRjNDkwMGIuLjdlNWY1OTkwMDg1YzRkYWRjNzI3OTQyZDAyNTdjMDJjYWRmMWY2ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24o
V2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgfQogfQogCi1PcHRpb25hbDxkb3VibGU+IEFu
aW1hdGlvblRpbWVsaW5lOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkKK3N0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBBbmltYXRpb25UaW1lbGluZTo6YmluZGluZ3NDdXJyZW50VGltZSgpCiB7CiAgICAgYXV0
byB0aW1lID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAoIXRpbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmluZGV4IDZhZTc2NjlmNGUxMjMxNmE2M2Ni
ZTRlNGQ2NjQzM2JlZDQ3NjhjNWIuLmM1ZGFhZjZiZDIxODk0MjA2ZDE2NGIzM2M0MmM5MGQwMjky
ZDJiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5o
CkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVGlt
aW5nRGlkQ2hhbmdlKFdlYkFuaW1hdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmlt
YXRpb24oV2ViQW5pbWF0aW9uJik7CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzQ3Vy
cmVudFRpbWUoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkg
eyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiaW5k
aW5nc0N1cnJlbnRUaW1lKCk7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1
cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbi5jcHAKaW5kZXggMThjYzAzZDQ4OGJhYWI1MzY3MzYxMmNjZDVjYjU5NGZiMWFm
ZTc2NS4uMGRjOWFhZDc3MzEzYjcwODNiY2UyNjNiYWU2OTVjNWIxN2QzZTc0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NFZmZlY3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVj
dD4mJiBuZXdFZmZlY3QpCiAgICAgfQogfQogCi12b2lkIENTU0FuaW1hdGlvbjo6c2V0QmluZGlu
Z3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUpCit2b2lkIENTU0FuaW1hdGlv
bjo6c2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHN0YXJ0VGltZSkK
IHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMtMi8jYW5p
bWF0aW9ucwogCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBDU1NBbmltYXRpb246OmVmZmVjdEtl
eWZyYW1lc1dlcmVTZXRVc2luZ0JpbmRpbmdzKCkKICAgICBtX292ZXJyaWRkZW5Qcm9wZXJ0aWVz
LmFkZChQcm9wZXJ0eTo6VGltaW5nRnVuY3Rpb24pOwogfQogCi1SZWY8QW5pbWF0aW9uRXZlbnRC
YXNlPiBDU1NBbmltYXRpb246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxT
ZWNvbmRzPiB0aW1lbGluZVRpbWUpCitSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBDU1NBbmltYXRp
b246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRp
bWVsaW5lVGltZSkKIHsKICAgICByZXR1cm4gQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5
cGUsIG1fYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUs
IHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IGFm
Yzk1ZjUzMTM2NjUxMzU0NDg5MWQ3ZGY0YjA3Y2FhNDY3YzMzZjIuLjUwMzk5NzhkZTAxY2U3ZWE5
NmFkODc2NjUwNTNkMWQ1MzIwZDFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgogICAgIENTU0FuaW1hdGlvbihj
b25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZvaWQgc3luY1Byb3Bl
cnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwotICAgIFJlZjxBbmltYXRpb25FdmVu
dEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVs
YXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1l
bGluZVRpbWUpIGZpbmFsOworICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmlu
YWw7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BsYXkoKSBmaW5hbDsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BhdXNlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRCaW5k
aW5nc0VmZmVjdChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0PiYmKSBmaW5hbDsKLSAgICB2b2lkIHNl
dEJpbmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgc2V0
QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBiaW5kaW5nc1JldmVyc2UoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3Mg
UHJvcGVydHkgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDg1MTliYjZiOTUzNmJjYjZmYjU0MjUwNDc3YzQx
YjE1ZDMyZjk5NWEuLmNiYTgwNTFjYjNlYWJiNmRlMmRjNzQ2YzFmYzMzNWUxYzZkYmYyZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cApAQCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRpYyBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIGJs
ZW5kRnVuYyhGb250U2VsZWN0aW9uVmFsdWUgZnJvbSwgRm9udFNlbGVjdGlvCiAgICAgcmV0dXJu
IEZvbnRTZWxlY3Rpb25WYWx1ZShzdGQ6Om1heCgwLjBmLCBibGVuZEZ1bmMoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGZyb20pLCBzdGF0aWNfY2FzdDxmbG9hdD4odG8pLCBjb250ZXh0KSkpOwogfQogCi1z
dGF0aWMgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gYmxlbmRGdW5jKE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZnJvbSwgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCitzdGF0aWMg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBibGVuZEZ1bmMoc3RkOjpv
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZyb20sIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVj
dGlvblZhbHVlPiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgcmV0dXJuIGJsZW5kRnVuYygqZnJvbSwgKnRvLCBjb250ZXh0KTsKIH0KQEAgLTE5
OTAsMTEgKzE5OTAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0
dGVyKShjb25zdCBDb2xvciYpOwogfTsKIAotY2xhc3MgUHJvcGVydHlXcmFwcGVyRm9udFN0eWxl
IGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxPcHRpb25hbDxGb250U2VsZWN0aW9uVmFs
dWU+PiB7CitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJGb250U3R5bGUgZmluYWwgOiBwdWJsaWMgUHJv
cGVydHlXcmFwcGVyPHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3BlcnR5V3JhcHBlckZvbnRT
dHlsZSgpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVyPE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4+KENTU1Byb3BlcnR5Rm9udFN0eWxlLCAmUmVuZGVyU3R5bGU6OmZvbnRJdGFsaWMsICZS
ZW5kZXJTdHlsZTo6c2V0Rm9udEl0YWxpYykKKyAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXI8c3Rk
OjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+PihDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgJlJl
bmRlclN0eWxlOjpmb250SXRhbGljLCAmUmVuZGVyU3R5bGU6OnNldEZvbnRJdGFsaWMpCiAgICAg
ewogICAgIH0KIApAQCAtMjAyOSw3ICsyMDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBj
bGFzcyBBdXRvUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxU
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXV0b1Byb3Bl
cnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJT
dHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRl
cikoKSwgT3B0aW9uYWw8VD4gbWluVmFsdWUgPSBzdGQ6Om51bGxvcHQpCisgICAgQXV0b1Byb3Bl
cnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJT
dHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRl
cikoKSwgc3RkOjpvcHRpb25hbDxUPiBtaW5WYWx1ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAg
OiBQcm9wZXJ0eVdyYXBwZXI8VD4ocHJvcGVydHksIGdldHRlciwgc2V0dGVyKQogICAgICAgICAs
IG1fYXV0b0dldHRlcihhdXRvR2V0dGVyKQogICAgICAgICAsIG1fYXV0b1NldHRlcihhdXRvU2V0
dGVyKQpAQCAtMjA2NSw3ICsyMDY1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgKFJlbmRlclN0
eWxlOjoqbV9hdXRvR2V0dGVyKSgpIGNvbnN0OwogICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9h
dXRvU2V0dGVyKSgpOwotICAgIE9wdGlvbmFsPFQ+IG1fbWluVmFsdWU7CisgICAgc3RkOjpvcHRp
b25hbDxUPiBtX21pblZhbHVlOwogfTsKIAogY2xhc3MgTm9uTmVnYXRpdmVGbG9hdFByb3BlcnR5
V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+IHsKQEAgLTI2OTAsNyArMjY5
MCw3IEBAIGJvb2wgQ1NTUHJvcGVydHlBbmltYXRpb246OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0
ZWQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1D
U1NQcm9wZXJ0eUlEIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQcm9wZXJ0eUF0SW5kZXgoaW50
IGksIE9wdGlvbmFsPGJvb2w+JiBpc1Nob3J0aGFuZCkKK0NTU1Byb3BlcnR5SUQgQ1NTUHJvcGVy
dHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChpbnQgaSwgc3RkOjpvcHRpb25hbDxib29s
PiYgaXNTaG9ydGhhbmQpCiB7CiAgICAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwJiBt
YXAgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OnNpbmdsZXRvbigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCmluZGV4IGU2
ZTg0ZjY1NGQzMDQ5MGUyOWYyZjk1YmE0MDA2ZDZjNDZjMTZmMGQuLjZlZjU0MWYyNWU2ZWY0NGYy
ZjUxM2EwMWFmNjZlZTM1YjNmZmJlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBhbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChDU1NQcm9wZXJ0eUlE
KTsKICAgICBzdGF0aWMgYm9vbCBwcm9wZXJ0aWVzRXF1YWwoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
UmVuZGVyU3R5bGUmIGEsIGNvbnN0IFJlbmRlclN0eWxlJiBiKTsKICAgICBzdGF0aWMgYm9vbCBj
YW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVkKENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
JiBhLCBjb25zdCBSZW5kZXJTdHlsZSYgYik7Ci0gICAgc3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0
UHJvcGVydHlBdEluZGV4KGludCwgT3B0aW9uYWw8Ym9vbD4mIGlzU2hvcnRoYW5kKTsKKyAgICBz
dGF0aWMgQ1NTUHJvcGVydHlJRCBnZXRQcm9wZXJ0eUF0SW5kZXgoaW50LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiBpc1Nob3J0aGFuZCk7CiAgICAgc3RhdGljIGludCBnZXROdW1Qcm9wZXJ0aWVzKCk7
CiAKICAgICBzdGF0aWMgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBhbmltYXRhYmxlU2hvcnRoYW5k
c0FmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IGZlNDU5ZmE2OTY5Y2E3ZGQyY2Q0YzIzMjQ0OGQz
MTk0NzM0YTMxNWEuLjQwYmMzNGQ2YTE0YzBkY2QyZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxl
YWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NUcmFuc2l0aW9u
OjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQordm9pZCBDU1NU
cmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpCiB7CiAgICAgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlc29sdmUodGFyZ2V0U3R5bGUsIHBh
cmVudEVsZW1lbnRTdHlsZSwgc3RhcnRUaW1lKTsKICAgICBtX2N1cnJlbnRTdHlsZSA9IFJlbmRl
clN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQ1NT
VHJhbnNpdGlvbjo6c2V0VGltaW5nUHJvcGVydGllcyhTZWNvbmRzIGRlbGF5LCBTZWNvbmRzIGR1
cmF0aW9uKQogICAgIHVuc3VzcGVuZEVmZmVjdEludmFsaWRhdGlvbigpOwogfQogCi1SZWY8QW5p
bWF0aW9uRXZlbnRCYXNlPiBDU1NUcmFuc2l0aW9uOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9J
ZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQorUmVmPEFuaW1hdGlvbkV2ZW50QmFz
ZT4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQogewogICAgIHJldHVybiBUcmFuc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIGdldFByb3BlcnR5TmFtZVN0cmluZyhtX3Byb3BlcnR5KSwgZWxh
cHNlZFRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKaW5kZXggZjMzNmJmYzQ1NGE1YmQ1ZWE3M2NiMjAx
ZjVjNzM1OTU4MjdlMWU0Yy4uYTkyZmMwNjlhN2UxN2Y1MjczNmJlMmYwNTdkODc2NmZhYWMxODll
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHJhbnNpdGlvblByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKG1fcHJvcGVydHkpOyB9CiAgICAgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0KICAgICBNb25vdG9u
aWNUaW1lIGdlbmVyYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0aW9uVGltZTsg
fQotICAgIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IHRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5l
VGltZUF0Q3JlYXRpb247IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUoKSBj
b25zdCB7IHJldHVybiAqbV90YXJnZXRTdHlsZTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBj
dXJyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9jdXJyZW50U3R5bGU7IH0KICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlKCkgY29uc3QgeyByZXR1
cm4gKm1fcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlOyB9CkBAIC01OCw4ICs1OCw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmLCBDU1NQ
cm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24m
LCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91
YmxlKTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25k
cyBkdXJhdGlvbik7Ci0gICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7Ci0gICAg
dm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFsOworICAgIFJlZjxB
bmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHls
ZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPikgZmluYWw7CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1f
cHJvcGVydHk7CiAgICAgTW9ub3RvbmljVGltZSBtX2dlbmVyYXRpb25UaW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggNzI1
ZThmYmFhMGIxODYzMzg2MzMxMGYyOTdmMjhlOTkwMTEzZTg0MC4uYjU4MjcyNTIyNzJmZjZlZGNl
OGE2ZWNjNGVkZDVkNDg2OGE5NDliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIERlY2xhcmF0aXZl
QW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQogewogfQogCi1jb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50KCkg
Y29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBEZWNsYXJhdGl2ZUFu
aW1hdGlvbjo6b3duaW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3duaW5nRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9vd25pbmdFbGVtZW50LmdldCgpLCBtX293
bmluZ1BzZXVkb0lkKTsKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmlt
YXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKQogewogfQogCi1PcHRp
b25hbDxkb3VibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdz
U3RhcnRUaW1lKCkgY29uc3QKIHsKICAgICBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKTsKICAg
ICByZXR1cm4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpOwogfQogCi12b2lkIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGltZShPcHRpb25hbDxkb3VibGU+
IHN0YXJ0VGltZSkKK3ZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJpbmRpbmdzU3RhcnRU
aW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUpCiB7CiAgICAgZmx1c2hQZW5kaW5n
U3R5bGVDaGFuZ2VzKCk7CiAgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFy
dFRpbWUoc3RhcnRUaW1lKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBEZWNsYXJhdGl2ZUFuaW1h
dGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
RGVjbGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdAogewogICAg
IGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpOwogICAgIHJldHVybiBXZWJBbmltYXRpb246OmJp
bmRpbmdzQ3VycmVudFRpbWUoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRGVjbGFyYXRpdmVB
bmltYXRpb246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50
VGltZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5n
c0N1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50VGltZSkKIHsKICAgICBm
bHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKTsKICAgICByZXR1cm4gV2ViQW5pbWF0aW9uOjpzZXRC
aW5kaW5nc0N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNmVjYzU1ZDA0NTdhMTFiNGQxNDI5
NGJlZDJhOGVlYWYwNWViNDhjYi4uODUyNGI3OGQ3NDMxZmE5Nzk3NDYyNzQ5MzZiOTI0NzBmZWMw
NDNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5p
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0
aW9uLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGVjbGFyYXRp
dmVBbmltYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG93bmluZ0VsZW1lbnQoKSBjb25zdDsKKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gb3duaW5nRWxlbWVudCgpIGNvbnN0Owog
ICAgIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2luZ0FuaW1hdGlvbjsgfQogICAgIHZvaWQgc2V0QmFja2luZ0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbEZyb21TdHlsZSgpOwogCi0gICAgT3B0aW9uYWw8
ZG91YmxlPiBiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0Qmlu
ZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0QmluZGluZ3NDdXJyZW50VGltZShPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHNldEJpbmRpbmdzU3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVudFRpbWUo
KSBjb25zdCBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCaW5kaW5nc0N1cnJlbnRU
aW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgV2ViQW5pbWF0aW9uOjpQbGF5
U3RhdGUgYmluZGluZ3NQbGF5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBXZWJBbmltYXRpb246
OlJlcGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxhY2VTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgYmluZGluZ3NQZW5kaW5nKCkgY29uc3QgZmluYWw7CkBAIC03OSw3ICs3OSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlv
bigpOwogICAgIC8vIGVsYXBzZWRUaW1lIGlzIHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUg
YXQgdGhlIHRpbWUgdGhlIGV2ZW50IGlzIGFkZGVkIGFuZCBpcyBleHBvc2VkIHRocm91Z2ggdGhl
IERPTSBBUEksIHRpbWVsaW5lVGltZSBpcyB0aGUgYW5pbWF0aW9ucycKICAgICAvLyB0aW1lbGlu
ZSBjdXJyZW50IHRpbWUgYW5kIGlzIG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEkgYnV0
IHVzZWQgYnkgdGhlIERvY3VtZW50VGltZWxpbmUgZm9yIHNvcnRpbmcgZXZlbnRzIGJlZm9yZSBk
aXNwYXRjaC4gCi0gICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3Qg
U3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVudChjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1
ZG9JZCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpID0gMDsKICAgICB2b2lk
IGludmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2VkVGltZSA9IDBfcyk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5k
ZXggNDkxNDQxMThlMjdiNzE0N2NiOWZkOTBjYTQ5YmYwYjM0Mzc1NjU5ZC4uYTI0Y2IxOTRjNzQ3
Y2RmNzczMzI1YTQyMTYyN2RjY2EwOTliNGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHVuc2lnbmVkIERv
Y3VtZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0ZvclRlc3RpbmcoKSBjb25z
dAogICAgIHJldHVybiBjb3VudDsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1l
bGluZTo6Y3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVs
aW5lOjpjdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSB0aGlzLT5j
b250cm9sbGVyKCkpIHsKICAgICAgICAgaWYgKGF1dG8gY3VycmVudFRpbWUgPSBjb250cm9sbGVy
LT5jdXJyZW50VGltZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmgKaW5kZXggOGUzMDQ5MTE2ZDUwNGNhNTNiZTAwMTNhZmFmMmRmODI5OGJkOWViMS4uNGFj
YWNiYmFmMTgyNDQ4ZmM3ZGRhNGY1ZjNjOTVlMjRlOGY1YWQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KIAotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBhbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXIuY3BwCmluZGV4IGJmOTJjYzcwNGNmNGM3NGI2OWU3OTdlMzJmMzAzMWJmZGZiMDZiYWMuLjkz
NTc1ODY3YTQ5MzY3YTg0MzUyNjYyMzE2YjZlNzlmYjRiZTRlMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3Bw
CkBAIC0yMTQsNyArMjE0LDcgQEAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIERvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlcjo6bGl2ZUN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9k
b2N1bWVudC5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CiAKLU9wdGlvbmFsPFNlY29u
ZHM+IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKQorc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQuZG9tV2luZG93KCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyLmgKaW5kZXggZDc0OWEwNjVkYzUzZDU3MTIxZGRhNGNiOTY2MWVk
MjU2MjA4YzAwMi4uMWFiNTJhZmRjMDBiNzVjNWZiNDJjMDBiNjk2MmJjNTA4Y2FjZjk2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0Nv
bnRyb2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9t
RG9jdW1lbnQoKTsKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGlt
ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDU3MWYwMzViMjZjYzAzODI1ZDZlMjkxYWQ3MzdjNDIyMDIz
YzQ2ODUuLmQ3YjNkOTZiZmM4ZjRmYWFlOGM5YjNiODM4MDYzNGE3OGNmMjNhMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNjcsNyArNjcsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIEVs
ZW1lbnQqIGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoY29uc3QgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiYgc3R5bGVhYmxlKQorc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFi
bGU+JiBzdHlsZWFibGUpCiB7CiAgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgRWxlbWVudCogZWxlbWVudE9yUHNldWRv
RWxlbWVudEZvclN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibAogICAgIH0K
IH0KIAotc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVFbGVtZW50KGNvbnN0IE9wdGlvbmFs
PGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlk
YXRlRWxlbWVudChjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJs
ZSkKIHsKICAgICBpZiAoYXV0byogZWxlbWVudE9yUHNldWRvRWxlbWVudCA9IGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVhYmxlKSkKICAgICAgICAgZWxlbWVudE9yUHNl
dWRvRWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKQEAgLTEzNyw3ICsxMzcsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZU1pc3NpbmdLZXlmcmFtZU9mZnNldHMoVmVjdG9y
PEtleWZyYW1lRWZmZWN0OjpQYXJzZWRLZQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAxLiBG
b3IgZWFjaCBrZXlmcmFtZSwgaW4ga2V5ZnJhbWVzLCBsZXQgdGhlIGNvbXB1dGVkIGtleWZyYW1l
IG9mZnNldCBvZiB0aGUga2V5ZnJhbWUgYmUgZXF1YWwgdG8gaXRzIGtleWZyYW1lIG9mZnNldCB2
YWx1ZS4KLSAgICAvLyBJbiBvdXIgaW1wbGVtZW50YXRpb24sIHdlIG9ubHkgc2V0IG5vbi1udWxs
IHZhbHVlcyB0byBhdm9pZCBtYWtpbmcgY29tcHV0ZWRPZmZzZXQgT3B0aW9uYWw8ZG91YmxlPi4g
SW5zdGVhZCwgd2UnbGwga25vdworICAgIC8vIEluIG91ciBpbXBsZW1lbnRhdGlvbiwgd2Ugb25s
eSBzZXQgbm9uLW51bGwgdmFsdWVzIHRvIGF2b2lkIG1ha2luZyBjb21wdXRlZE9mZnNldCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4uIEluc3RlYWQsIHdlJ2xsIGtub3cKICAgICAvLyB0aGF0IGEga2V5
ZnJhbWUgaGFzbid0IGhhZCBhIGNvbXB1dGVkIG9mZnNldCBieSBjaGVja2luZyBpZiBpdCBoYXMg
YSBudWxsIG9mZnNldCBhbmQgYSAwIGNvbXB1dGVkT2Zmc2V0LCBzaW5jZSB0aGUgZmlyc3QKICAg
ICAvLyBrZXlmcmFtZSB3aWxsIGFscmVhZHkgaGF2ZSBhIDAgY29tcHV0ZWRPZmZzZXQuCiAgICAg
Zm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lcykgewpAQCAtNDM2LDkgKzQzNiw5IEBAIHN0
YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZy
YW1lcyhKU0dsb2JhbE9iamVjdCYKICAgICAvLyA1LiBMZXQgb2Zmc2V0cyBiZSBhIHNlcXVlbmNl
IG9mIG51bGxhYmxlIGRvdWJsZSB2YWx1ZXMgYXNzaWduZWQgYmFzZWQgb24gdGhlIHR5cGUgb2Yg
dGhlIOKAnG9mZnNldOKAnSBtZW1iZXIgb2YgdGhlIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUg
YXMgZm9sbG93czoKICAgICAvLyAgICAtIHNlcXVlbmNlPGRvdWJsZT8+LCB0aGUgdmFsdWUgb2Yg
4oCcb2Zmc2V04oCdIGFzLWlzLgogICAgIC8vICAgIC0gZG91YmxlPywgYSBzZXF1ZW5jZSBvZiBs
ZW5ndGggb25lIHdpdGggdGhlIHZhbHVlIG9mIOKAnG9mZnNldOKAnSBhcyBpdHMgc2luZ2xlIGl0
ZW0sIGkuZS4gwqsgb2Zmc2V0IMK7LAotICAgIFZlY3RvcjxPcHRpb25hbDxkb3VibGU+PiBvZmZz
ZXRzOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxPcHRpb25hbDxkb3Vi
bGU+Pj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAg
ICAgICAgb2Zmc2V0cyA9IFdURjo6Z2V0PFZlY3RvcjxPcHRpb25hbDxkb3VibGU+Pj4ocHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsKKyAgICBWZWN0b3I8c3Rk
OjpvcHRpb25hbDxkb3VibGU+PiBvZmZzZXRzOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFt
ZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQorICAgICAgICBvZmZzZXRzID0gV1RGOjpnZXQ8VmVj
dG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQ
cm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxk
b3VibGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAg
ICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5
ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVBy
b3BlcnRpZXMub2Zmc2V0KSkKQEAgLTUwNyw3ICs1MDcsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmpl
Y3QmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0
Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBPcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPj4mJiBvcHRpb25zKQor
RXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRWxlbWVudCogdGFyZ2V0LCBTdHJv
bmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBL
ZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiYmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBrZXlmcmFtZUVm
ZmVjdCA9IGFkb3B0UmVmKCpuZXcgS2V5ZnJhbWVFZmZlY3QodGFyZ2V0LCBQc2V1ZG9JZDo6Tm9u
ZSkpOwogCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmlt
YXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCiAgICAgdXBkYXRlRWZmZWN0U3RhY2tNZW1i
ZXJzaGlwKCk7CiB9CiAKLWNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gS2V5ZnJhbWVF
ZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0Citjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0
IFN0eWxlYWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX3RhcmdldCwgbV9w
c2V1ZG9JZCk7CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFt
ZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0
U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0
U3R5bGVhYmxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxl
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXRTdHls
ZWFibGUpCiB7CiAgICAgYXV0byBuZXdUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRTdHlsZWFibGUo
KTsKIApAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdl
VGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHAKICAgICAg
ICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFyZ2V0U3R5bGVhYmxlLT5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBLZXlmcmFtZUVm
ZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIEtl
eWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRU
aW1lKQogewogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsNyAr
MTQ0NCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5
bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgICAgIC8vIDYuIFJlbW92ZSBh
bnkga2V5ZnJhbWVzIGZyb20gcHJvcGVydHktc3BlY2lmaWMga2V5ZnJhbWVzIHRoYXQgZG8gbm90
IGhhdmUgYSBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGFyZ2V0IHByb3BlcnR5LgogICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zmc2V0ID0gMDsKICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZLZXlmcmFtZXNXaXRoT25lT2Zmc2V0ID0gMDsKLSAgICAgICAgVmVjdG9yPE9w
dGlvbmFsPHNpemVfdD4+IHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXM7CisgICAgICAgIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPHNpemVfdD4+IHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXM7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibGVuZGluZ0tleWZyYW1lcy5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgYXV0byYga2V5ZnJhbWUgPSBtX2JsZW5kaW5nS2V5ZnJhbWVzW2ld
OwogICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBrZXlmcmFtZS5rZXkoKTsKQEAgLTE0ODIsNyAr
MTQ4Miw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5
bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICAv
LyAxMC4gTGV0IGludGVydmFsIGVuZHBvaW50cyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBrZXlm
cmFtZXMuCi0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxzaXplX3Q+PiBpbnRlcnZhbEVuZHBvaW50
czsKKyAgICAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8c2l6ZV90Pj4gaW50ZXJ2YWxFbmRwb2lu
dHM7CiAKICAgICAgICAgLy8gMTEuIFBvcHVsYXRlIGludGVydmFsIGVuZHBvaW50cyBieSBmb2xs
b3dpbmcgdGhlIHN0ZXBzIGZyb20gdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIGJl
bG93OgogICAgICAgICBpZiAoaXRlcmF0aW9uUHJvZ3Jlc3MgPCAwICYmIG51bWJlck9mS2V5ZnJh
bWVzV2l0aFplcm9PZmZzZXQgPiAxKSB7CkBAIC0xOTk3LDcgKzE5OTcsNyBAQCBib29sIEtleWZy
YW1lRWZmZWN0OjpyZXF1aXJlc1BzZXVkb0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2Js
ZW5kaW5nS2V5ZnJhbWVzU291cmNlID09IEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlOjpXZWJBbmlt
YXRpb24gJiYgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBL
ZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9n
cmVzcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jl
c3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKIHsKICAgICBB
U1NFUlQoaXRlcmF0aW9uUHJvZ3Jlc3MgPj0gMCAmJiBpdGVyYXRpb25Qcm9ncmVzcyA8PSAxKTsK
IApAQCAtMjAxMCw3ICsyMDEwLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6
cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICBpZiAo
bV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBhdXRvIHByb2dyZXNzVW50aWxOZXh0U3RlcEluSW50ZXJ2YWwgPSBbaXRlcmF0
aW9uUHJvZ3Jlc3NdKGRvdWJsZSBpbnRlcnZhbFN0YXJ0UHJvZ3Jlc3MsIGRvdWJsZSBpbnRlcnZh
bEVuZFByb2dyZXNzLCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pIC0+IE9wdGlvbmFs
PGRvdWJsZT4geworICAgIGF1dG8gcHJvZ3Jlc3NVbnRpbE5leHRTdGVwSW5JbnRlcnZhbCA9IFtp
dGVyYXRpb25Qcm9ncmVzc10oZG91YmxlIGludGVydmFsU3RhcnRQcm9ncmVzcywgZG91YmxlIGlu
dGVydmFsRW5kUHJvZ3Jlc3MsIFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikgLT4gc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgaWYgKCFpczxTdGVwc1RpbWluZ0Z1bmN0aW9u
Pih0aW1pbmdGdW5jdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IDU4ZGE4ZGZjMDI3
MzNkMGFiYjZmNTBjMjVjOWFmNTJjN2RiODg4NjIuLmVjMDI4YTFkM2FmNjhjZDI2ODE1YTBlYjJi
MmZjNzE1ODgyMzRkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBLZXlm
cmFtZUVmZmVjdCA6IHB1YmxpYyBBbmltYXRpb25FZmZlY3QKICAgICAsIHB1YmxpYyBDU1NQcm9w
ZXJ0eUJsZW5kaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEtleWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFbGVtZW50Kiwg
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiwgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtl
eWZyYW1lRWZmZWN0T3B0aW9ucz4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8S2V5
ZnJhbWVFZmZlY3Q+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEVsZW1lbnQqLCBKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBL
ZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiYmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtl
eWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8S2V5ZnJhbWVF
ZmZlY3Q+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5ZnJhbWVFZmZlY3Q+IGNyZWF0ZShjb25zdCBF
bGVtZW50JiwgUHNldWRvSWQpOwogICAgIH5LZXlmcmFtZUVmZmVjdCgpIHsgfQpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0tleWZyYW1lRWZmZWN0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RydWN0IEJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFt
ZSB7Ci0gICAgICAgIFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFZlY3RvcjxPcHRpb25hbDxkb3Vi
bGU+PiwgZG91YmxlPiBvZmZzZXQgPSBWZWN0b3I8T3B0aW9uYWw8ZG91YmxlPj4oKTsKKyAgICAg
ICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4s
IGRvdWJsZT4gb2Zmc2V0ID0gVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4oKTsKICAgICAg
ICAgVmFyaWFudDxWZWN0b3I8U3RyaW5nPiwgU3RyaW5nPiBlYXNpbmcgPSBWZWN0b3I8U3RyaW5n
PigpOwogICAgICAgICBWYXJpYW50PFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+LCBD
b21wb3NpdGVPcGVyYXRpb25PckF1dG8+IGNvbXBvc2l0ZSA9IFZlY3RvcjxDb21wb3NpdGVPcGVy
YXRpb25PckF1dG8+KCk7CiAgICAgfTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nIHBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiB0YXJnZXRTdHlsZWFibGUoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gdGFyZ2V0U3R5bGVhYmxlKCkgY29uc3Q7CiAKICAg
ICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IGdldEJpbmRpbmdzS2V5ZnJhbWVz
KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4+IGdldEtleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkBAIC0xMjMsNyArMTIz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0ZU9wZXJhdGlvbiBj
b21wb3NpdGVPcGVyYXRpb24pIHsgbV9jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVy
YXRpb247IH0KIAogICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHkoUmVu
ZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0
eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAg
ICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2so
KSBmaW5hbDsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE4NSw3ICsx
ODUsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogICAgIHZv
aWQgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBjb3B5UHJvcGVydGll
c0Zyb21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmKTsKLSAgICB2b2lkIGRpZENoYW5nZVRh
cmdldFN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+Jik7CisgICAgdm9p
ZCBkaWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHls
ZWFibGU+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc0tleWZyYW1lcyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJik7CiAgICAgdm9pZCBh
ZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb24pOwogICAgIGJvb2wg
Y2FuQmVBY2NlbGVyYXRlZCgpIGNvbnN0OwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUoKTsKICAgICB2b2lkIHNl
dEJsZW5kaW5nS2V5ZnJhbWVzKEtleWZyYW1lTGlzdCYpOwogICAgIFNlY29uZHMgdGltZVRvTmV4
dFRpY2soKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxkb3VibGU+IHByb2dyZXNzVW50aWxO
ZXh0U3RlcChkb3VibGUpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBw
cm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzVGFy
Z2V0aW5nVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0Zv
ck1hdGNoaW5nVHJhbnNmb3JtRnVuY3Rpb25MaXN0cygpOwogICAgIHZvaWQgY2hlY2tGb3JNYXRj
aGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L09wdGlvbmFsRWZmZWN0VGltaW5nLmgKaW5kZXggNzZkMDliYWJmZGEyZTRkNTUxYWIzODg2ZGM1
Y2EyM2EyYjU4NjU3Ny4uZjMxZTkyMzJkYjA1YzNhNmU3OGM3NTg5NmVlOGFmNmNmMjVhMDUzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgK
QEAgLTM0LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE9wdGlvbmFs
RWZmZWN0VGltaW5nIHsKLSAgICBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgU3RyaW5nPj4gZHVy
YXRpb247Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25zOyAvLyBUaGlzIHZhbHVlIGNh
bm5vdCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgTmFO
IHZhbHVlLgorICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIFN0cmluZz4+IGR1cmF0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25zOyAvLyBUaGlzIHZhbHVl
IGNhbm5vdCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEg
TmFOIHZhbHVlLgogICAgIE1hcmthYmxlRG91YmxlIGRlbGF5OwogICAgIE1hcmthYmxlRG91Ymxl
IGVuZERlbGF5OwogICAgIE1hcmthYmxlRG91YmxlIGl0ZXJhdGlvblN0YXJ0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA3ZTU1NDQwMTk2OTcyNmRlNTU1
Yjc2NzM5ZjNhMGI0NzllZTIyZDU5Li4xMzIzNjdlMjNhMjZkZDdkODgyOWE1YWM2NDhlOWU0OGM3
ODJmMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAt
MjA2LDggKzIwNiw4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRFZmZlY3RJbnRlcm5hbChSZWZQ
dHI8QW5pbWF0aW9uRWZmZWN0PiYmIG5ld0VmZmVjdCwgYm9vbCBkCiAKICAgICBhdXRvIG9sZEVm
ZmVjdCA9IHN0ZDo6ZXhjaGFuZ2UobV9lZmZlY3QsIFdURk1vdmUobmV3RWZmZWN0KSk7CiAKLSAg
ICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVF
ZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0Lmdl
dCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Y29u
c3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpID8g
ZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxl
KCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHBy
ZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxL
ZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6
Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG5ld1RhcmdldCA9
IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4o
bV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlvbiByZWxhdGlvbnNoaXBzIGFuZCB0aGUg
dGltZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlmIChvbGRFZmZlY3QpIHsKQEAgLTI3Nyw3
ICsyNzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxpbmVJbnRlcm5hbChSZWZQdHI8
QW5pbWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRp
b25UaW1lbGluZURpZENoYW5nZShtX3RpbWVsaW5lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJBbmlt
YXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFi
bGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgbmV3
VGFyZ2V0KQordm9pZCBXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBz
dGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90aW1l
bGluZSkgewogICAgICAgICBpZiAocHJldmlvdXNUYXJnZXQpCkBAIC0yOTMsMTQgKzI5MywxNCBA
QCB2b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFs
PGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGFyZ2V0KCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8
ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fc3RhcnRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqbV9zdGFydFRpbWUpOwogfQog
Ci12b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91Ymxl
PiBuZXdTdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUo
c3RkOjpvcHRpb25hbDxkb3VibGU+IG5ld1N0YXJ0VGltZSkKIHsKICAgICBpZiAobmV3U3RhcnRU
aW1lKQogICAgICAgICBzZXRTdGFydFRpbWUoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqbmV3
U3RhcnRUaW1lKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEJp
bmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4gbmV3U3RhcnRUaW1lKQogICAgICAgICBz
ZXRTdGFydFRpbWUoc3RkOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJBbmltYXRpb246OnNldFN0
YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlv
bjo6c2V0U3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQogewog
ICAgIC8vIDMuNC42IFRoZSBwcm9jZWR1cmUgdG8gc2V0IHRoZSBzdGFydCB0aW1lIG9mIGFuaW1h
dGlvbiwgYW5pbWF0aW9uLCB0byBuZXcgc3RhcnQgdGltZSwgaXMgYXMgZm9sbG93czoKICAgICAv
LyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMvI3NldHRpbmctdGhlLXN0
YXJ0LXRpbWUtb2YtYW4tYW5pbWF0aW9uCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBXZWJBbmlt
YXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCiAgICAg
aW52YWxpZGF0ZUVmZmVjdCgpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IFdlYkFuaW1hdGlvbjo6
YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gV2ViQW5p
bWF0aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHRpbWUgPSBj
dXJyZW50VGltZSgpOwogICAgIGlmICghdGltZSkKQEAgLTM2NCwxOSArMzY0LDE5IEBAIE9wdGlv
bmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKICAg
ICByZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUodGltZS52YWx1ZSgpKTsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1l
KE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFRpbWUpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmlt
YXRpb246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGN1cnJl
bnRUaW1lKQogewogICAgIGlmICghY3VycmVudFRpbWUpCiAgICAgICAgIHJldHVybiBzZXRDdXJy
ZW50VGltZShzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBzZXRDdXJyZW50VGltZShTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKGN1cnJlbnRUaW1lLnZhbHVlKCkpKTsKIH0KIAotT3B0aW9uYWw8
U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiBzdGFy
dFRpbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IFdlYkFuaW1hdGlvbjo6Y3VycmVu
dFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZTo6WWVzLCBzdGFydFRpbWUpOwogfQogCi1P
cHRpb25hbDxTZWNvbmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGlt
ZSByZXNwZWN0SG9sZFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShSZXNwZWN0SG9s
ZFRpbWUgcmVzcGVjdEhvbGRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkg
Y29uc3QKIHsKICAgICAvLyAzLjQuNC4gVGhlIGN1cnJlbnQgdGltZSBvZiBhbiBhbmltYXRpb24K
ICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jdGhlLWN1
cnJlbnQtdGltZS1vZi1hbi1hbmltYXRpb24KQEAgLTM5OSw3ICszOTksNyBAQCBPcHRpb25hbDxT
ZWNvbmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSByZXNwZWN0
SG9sZFRpbWUsIE9wdAogICAgIHJldHVybiAoKm1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBz
dGFydFRpbWUudmFsdWVfb3IoKm1fc3RhcnRUaW1lKSkgKiBtX3BsYXliYWNrUmF0ZTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKE9w
dGlvbmFsPFNlY29uZHM+IHNlZWtUaW1lKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
OjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUp
CiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiV2ViQW5pbWF0
aW9uICIgPDwgdGhpcyA8PCAiIHNpbGVudGx5U2V0Q3VycmVudFRpbWUgIiA8PCBzZWVrVGltZSk7
CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNp
bGVudGx5U2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbQogICAgIHJldHVy
biB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6c2V0Q3VycmVudFRp
bWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmlt
YXRpb246OnNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiB7
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiV2ViQW5pbWF0aW9u
ICIgPDwgdGhpcyA8PCAiIHNldEN1cnJlbnRUaW1lICIgPDwgc2Vla1RpbWUpOwogCkBAIC02Nzcs
NyArNjc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OndpbGxDaGFuZ2VSZW5kZXJlcigpCiAgICAg
ICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9lZmZlY3QpLndpbGxDaGFuZ2VSZW5kZXJl
cigpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUs
IE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKK3ZvaWQgV2ViQW5pbWF0aW9uOjplbnF1
ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVs
aW5lVGltZSkKIHsKICAgICBhdXRvIGV2ZW50ID0gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6Y3Jl
YXRlKHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUsIHRoaXMpOwogICAgIGV2ZW50LT5z
ZXRUYXJnZXQodGhpcyk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6
dGljaygpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRpb25EaWRUaWNrKCk7CiB9CiAKLXZvaWQg
V2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1l
KQordm9pZCBXZWJBbmltYXRpb246OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IHN0YXJ0VGltZSkKIHsKICAgICBpZiAoIW1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRT
dGF0ZVdoZW5SZXNvbHZpbmcpCiAgICAgICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6
Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmgKaW5kZXggN2ViODRjNmRkYTliMDdjYWYwNDM5NzhjNjc5MTY4YzA5NDI1MmFl
Ni4uNTAzNjY2ZjMwZmZkMGMwMDdhOGRmMjliNmE1MWEzYmE3YTM3MjVlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAg
ICAgQW5pbWF0aW9uVGltZWxpbmUqIHRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGlu
ZS5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9u
VGltZWxpbmU+JiYpOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoT3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IGN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4pOwogCiAgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxheWJhY2tSYXRlICsgMDsgfQogICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7
CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJzaXN0KCk7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gY29tbWl0U3R5bGVzKCk7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPik7Ci0gICAgT3B0aW9uYWw8U2Vjb25k
cz4gc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KLSAgICB2b2lkIHNl
dFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPik7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxkb3Vi
bGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRUaW1lOyB9CisgICAgdm9pZCBzZXRTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxTZWNv
bmRzPik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50
VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QmluZGluZ3ND
dXJyZW50VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwogICAgIHZpcnR1YWwgUGxheVN0YXRl
IGJpbmRpbmdzUGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gcGxheVN0YXRlKCk7IH0KICAgICB2
aXJ0dWFsIFJlcGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxhY2VTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IHJlcGxhY2VTdGF0ZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGJpbmRpbmdzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIHBlbmRpbmcoKTsgfQpAQCAtMTIwLDggKzEyMCw4IEBAIHB1YmxpYzoKICAg
ICBib29sIG5lZWRzVGljaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB0aWNrKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0VGljaygpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQp
OwotICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBuZXdUYXJnZXQpOworICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBlZmZlY3RUYXJnZXREaWRD
aGFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1Rhcmdl
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOwogICAg
IHZvaWQgYWNjZWxlcmF0ZWRTdGF0ZURpZENoYW5nZSgpOwogICAgIHZvaWQgd2lsbENoYW5nZVJl
bmRlcmVyKCk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1c3Bl
bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KICAgICBib29sIGlzUmVwbGFj
ZWFibGUoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZSgpOwotICAgIHZvaWQgZW5xdWV1ZUFuaW1h
dGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPFNlY29uZHM+LCBP
cHRpb25hbDxTZWNvbmRzPik7CisgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPik7CiAKICAgICB1aW50NjRfdCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICB2b2lkIHNldEdsb2JhbFBvc2l0aW9uKHVpbnQ2
NF90IGdsb2JhbFBvc2l0aW9uKSB7IG1fZ2xvYmFsUG9zaXRpb24gPSBnbG9iYWxQb3NpdGlvbjsg
fQpAQCAtMTY3LDggKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1l
KCkgY29uc3Q7CiAgICAgV2ViQW5pbWF0aW9uJiByZWFkeVByb21pc2VSZXNvbHZlKCk7CiAgICAg
V2ViQW5pbWF0aW9uJiBmaW5pc2hlZFByb21pc2VSZXNvbHZlKCk7Ci0gICAgT3B0aW9uYWw8U2Vj
b25kcz4gY3VycmVudFRpbWUoUmVzcGVjdEhvbGRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2lsZW50bHlTZXRDdXJy
ZW50VGltZShPcHRpb25hbDxTZWNvbmRzPik7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBj
dXJyZW50VGltZShSZXNwZWN0SG9sZFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNpbGVudGx5U2V0Q3VycmVu
dFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7CiAgICAgdm9pZCBmaW5pc2hOb3RpZmljYXRp
b25TdGVwcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1BhdXNlVGFzaygpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayAhPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90
U2NoZWR1bGVkOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nUGxheVRhc2soKSBjb25zdCB7IHJldHVy
biBtX3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayAhPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90
U2NoZWR1bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA4ZGM3YTA3ZWZl
NzEzMjk1NTZmN2ViNWYxYmMyOTgyNzI4YzdhNDE2Li41NzQ1ZTJhNGZlNzk3MGNlNGRmMzUxMmYw
YTA2ODI4ZTA2MGQzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTY0LDEy
ICs2NCwxMiBAQCBzdHJ1Y3QgSURMVHlwZSB7CiAgICAgdXNpbmcgU2VxdWVuY2VTdG9yYWdlVHlw
ZSA9IFQ7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gVDsKLSAgICB1c2luZyBOdWxsYWJs
ZVBhcmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OworICAgIHVzaW5n
IE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBl
PjsKIAogICAgIHVzaW5nIElubmVyUGFyYW1ldGVyVHlwZSA9IFQ7Ci0gICAgdXNpbmcgTnVsbGFi
bGVJbm5lclBhcmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OworICAg
IHVzaW5nIE51bGxhYmxlSW5uZXJQYXJhbWV0ZXJUeXBlID0gc3RkOjpvcHRpb25hbDxJbXBsZW1l
bnRhdGlvblR5cGU+OwogCi0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gT3B0aW9uYWw8SW1wbGVt
ZW50YXRpb25UeXBlPjsKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPElt
cGxlbWVudGF0aW9uVHlwZT47CiAgICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1ZShjb25z
dCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICBzdGF0aWMgSW1w
bGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxsYWJsZVR5
cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9CkBAIC0yMDksMTQgKzIwOSwxNCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMU2VxdWVuY2UgOiBJRExUeXBlPFZlY3Rv
cjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdAogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiAKICAg
ICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OklubmVyUGFy
YW1ldGVyVHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9w
dGlvbmFsPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbm5lclBhcmFtZXRlclR5cGU+PiY7CisgICAgdXNp
bmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dHlw
ZW5hbWUgVDo6SW5uZXJQYXJhbWV0ZXJUeXBlPj4mOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IElETEZyb3plbkFycmF5IDogSURMVHlwZTxWZWN0b3I8dHlwZW5hbWUgVDo6SW1w
bGVtZW50YXRpb25UeXBlPj4gewogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiAKICAgICB1c2lu
ZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9u
VHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFs
PFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7CisgICAgdXNpbmcgTnVs
bGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dHlwZW5hbWUg
VDo6SW1wbGVtZW50YXRpb25UeXBlPj4mOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlw
ZW5hbWUgVj4gc3RydWN0IElETFJlY29yZCA6IElETFR5cGU8VmVjdG9yPFdURjo6S2V5VmFsdWVQ
YWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50
YXRpb25UeXBlPj4+IHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0
eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1
ZQogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0g
Y29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9u
VHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4mOwotICAgIHVzaW5nIE51bGxh
YmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFp
cjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0
aW9uVHlwZT4+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50
YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+Pj4mOwogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExXcmFwcGVyPERPTVByb21p
c2U+IHsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgSURMVW5pb24gOiBJRExUeXBlPFZhcmlh
bnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+IHsKICAgICB1c2luZyBUeXBl
TGlzdCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogCiAgICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9
IGNvbnN0IFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4mOwotICAg
IHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZhcmlhbnQ8dHlw
ZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+JjsKKyAgICB1c2luZyBOdWxsYWJsZVBh
cmFtZXRlclR5cGUgPSBjb25zdCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8dHlwZW5hbWUgVHM6Oklt
cGxlbWVudGF0aW9uVHlwZS4uLj4+JjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJRExCdWZmZXJTb3VyY2UgOiBJRExXcmFwcGVyPFQ+IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggYzBmZmFkZDZm
MjUyNDI2YWJhNzIyYTUwODQ0ZTYzNTcyZjRkNWU5My4uNWYxNjU3YTIyZWM2OGRlNDE1YzA1OTMy
ZTk2ODA4NjAzM2Y0M2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2Ny
aXB0KERvY3UKICAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291
cmNlVVJMLCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGludGVncml0eSksIHsgfSk7CiB9CiAKLUNhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVz
dFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJM
LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5LCBPcHRp
b25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcmVzb3VyY2VMb2FkUHJpb3JpdHkpIGNvbnN0CitD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJl
cXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIFN0cmluZyYmIGludGVncml0eSwg
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcmVzb3VyY2VMb2FkUHJpb3JpdHkp
IGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudC5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRleCAyOTkyODRkY2ZiMGNmMTgxN2QzZjI2MWM1
ZGIxNjA5NTExZDliYzI4Li5lNGU5ZTNiY2ZkNGYwYzliNjljZjJiMGY0NjU0MWExNzA0YTExNWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5oCkBAIC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERv
Y3VtZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHksIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5Pikg
Y29uc3Q7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlKERvY3VtZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHksIHN0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VMb2FkUHJpb3JpdHk+KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9ub25j
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXgg
MzgyOWMxZTFkMDU0YWFkNTBmYjE5YWJmNzJjNDBmYjk3MzAxYTlkNy4uYzJjY2QxOGE3NWY1ZGYy
MDFhMTkyMGMxZTVmNTJkY2M1YzAxNGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVqZWN0KEV4Y2VwdGlvbiwgUmVqZWN0QXNIYW5kbGVkID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7
CiAgICAgCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPFZhbHVlPj4gbV92YWx1
ZU9yRXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8VmFsdWU+PiBtX3Zh
bHVlT3JFeGNlcHRpb247CiAgICAgVmVjdG9yPFJlZjxEZWZlcnJlZFByb21pc2U+LCAxPiBtX2Rl
ZmVycmVkUHJvbWlzZXM7CiB9OwogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlamVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8p
OwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JF
eGNlcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9y
RXhjZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8RGVmZXJyZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJl
ZFByb21pc2VzOwogfTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZh
dGU6CiAgICAgUmVzb2x2ZUNhbGxiYWNrIG1fcmVzb2x2ZUNhbGxiYWNrOwotICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JFeGNlcHRpb247CisgICAgc3RkOjpvcHRpb25h
bDxFeGNlcHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9yRXhjZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8
RGVmZXJyZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJlZFByb21pc2VzOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBk
ZjVkMTU3ZjNiMTdmYTQ2MTM1MzgzMjdjNDQ4YzEzODg5OWYzMzk0Li42Nzc1Y2JmNThmNDk5ZmQ2
YzQ0OGM4NjU2MGYyNzIyYTliNGUzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIHRvSlMoKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpnbG9iYWxPYmplY3QsIGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKS5nZXQoKSk7CiB9CiAK
LXN0YXRpYyBWZWN0b3I8SURCS2V5RGF0YT4gY3JlYXRlS2V5UGF0aEFycmF5KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBJREJJbmRleElu
Zm8mIGluZm8sIE9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3Qg
SURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCitzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNy
ZWF0ZUtleVBhdGhBcnJheShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVL
ZXkpCiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIC0+IFZlY3RvcjxJREJLZXlEYXRhPiB7CiAgICAgICAgIC8vIFZhbHVlIGRv
ZXNuJ3QgY29udGFpbiBhdXRvLWdlbmVyYXRlZCBrZXksIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkg
YWRkIGtleSBpZiBpdCBpcyBwb3NzaWJseSBhdXRvLWdlbmVyYXRlZC4KQEAgLTQ2Niw3ICs0NjYs
NyBAQCBzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0ZUtleVBhdGhBcnJheShKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdAogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0
b3IsIGluZm8ua2V5UGF0aCgpKTsKIH0KIAotdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQkluZGV4SW5mbyYg
aW5mbywgSlNWYWx1ZSB2YWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURC
S2V5UGF0aD4mIG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3Rv
cmVLZXkpCit2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBKU1ZhbHVlIHZhbHVl
LCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBvYmpl
Y3RTdG9yZUtleVBhdGgsIGNvbnN0IElEQktleURhdGEmIG9iamVjdFN0b3JlS2V5KQogewogICAg
IGF1dG8ga2V5RGF0YXMgPSBjcmVhdGVLZXlQYXRoQXJyYXkobGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUsIGluZm8sIG9iamVjdFN0b3JlS2V5UGF0aCwgb2JqZWN0U3RvcmVLZXkpOwogICAgIGlm
IChrZXlEYXRhcy5pc0VtcHR5KCkpCkBAIC01MDMsNyArNTAzLDcgQEAgSW5kZXhJRFRvSW5kZXhL
ZXlNYXAgZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG8KICAgICByZXR1cm4gaW5kZXhLZXlzOwogfQogCi1PcHRpb25hbDxKU0M6OkpTVmFs
dWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitzdGQ6Om9wdGlv
bmFsPEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmplY3Rpb24oSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwg
Y29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBr
ZXlQYXRoKQogewogICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFs
dWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZp
bmVkKCkgfHwgIWtleVBhdGggfHwgIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQ
YXRoLnZhbHVlKCkpIHx8ICFpc0lEQktleVBhdGhWYWxpZChrZXlQYXRoLnZhbHVlKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4
IGE3ZDZkN2U1YWE4ZjM3MDU0YWJjZTI0OWU0OWRkOTc4Njc3OGJmOTguLjU5Zjg0ODUxOTk0OTg1
NmVmYTE3YjdhMDc4Yjk5ZjZkNGJkOGI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTUwLDcgKzUwLDcgQEAgUmVmUHRyPElE
QktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6SlNH
bG9iYWxPYmplY3QmLAogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBp
bmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElE
QktleURhdGEmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgmKTsKIAotdm9pZCBnZW5l
cmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQkluZGV4
SW5mbyYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURC
S2V5UGF0aD4mLCBjb25zdCBJREJLZXlEYXRhJik7Cit2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JW
YWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCSW5kZXhJbmZvJiwgSlNDOjpKU1Zh
bHVlLCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jiwg
Y29uc3QgSURCS2V5RGF0YSYpOwogCiBJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4
S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYpOwogCkBAIC02Miw1ICs2
Miw1IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIGNvbnN0IElEQlZhbHVlJik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleSopOwogSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgSURC
S2V5RGF0YSYpOwogCi1PcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVX
aXRoS2V5SW5qZWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYsIGNv
bnN0IElEQktleURhdGEmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOworc3RkOjpvcHRp
b25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAppbmRleCA1ZDM0MDVj
OGZmYjgwOGUzMDgyMWFjYmU3NWYxNjc1Mjg4ZTU4MjU2Li4wYjM3ZDc3YWQwZGQ2NmFiZThlODE1
N2FjMmIxMjRmOWNkODg3MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGRl
Y2x0eXBlKGF1dG8pIHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcihJbm5l
ckl0ZW1BY2Nlc3NvciYKICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8c3RkOjppbnZv
a2VfcmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFt
ZT4+KSB7CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBFeGNlcHRpb25Pcjx0eXBlbmFtZSBJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OwogCi0gICAgICAgIHJldHVybiBbaW5uZXJJdGVt
QWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+KGlubmVySXRlbUFjY2Vz
c29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAgICAgICByZXR1cm4gW2lubmVySXRlbUFj
Y2Vzc29yID0gc3RkOjpmb3J3YXJkPElubmVySXRlbUFjY2Vzc29yPihpbm5lckl0ZW1BY2Nlc3Nv
cildIChKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IC0+IHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gewogICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBpbm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUmV0
dXJuVHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKQEAgLTEwMiw3ICsxMDIsNyBA
QCBzdGF0aWMgZGVjbHR5cGUoYXV0bykgdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JG
dW5jdG9yKElubmVySXRlbUFjY2Vzc29yJgogICAgIH0gZWxzZSB7CiAgICAgICAgIHVzaW5nIFJl
dHVyblR5cGUgPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKLSAgICAg
ICAgcmV0dXJuIFtpbm5lckl0ZW1BY2Nlc3NvciA9IHN0ZDo6Zm9yd2FyZDxJbm5lckl0ZW1BY2Nl
c3Nvcj4oaW5uZXJJdGVtQWNjZXNzb3IpXSAoSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDxSZXR1cm5UeXBlPiB7CisgICAgICAg
IHJldHVybiBbaW5uZXJJdGVtQWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNz
b3I+KGlubmVySXRlbUFjY2Vzc29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiB7CiAgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IGlubmVySXRlbUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyBJRExUeXBlOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRBbnkuaAppbmRleCBmYmExYzA5ZWFlN2YyYzY3ZDcxYWY0ZWY0NjM4YjRhODky
NWQxNjQ2Li4xOWQ1ZmE5NGYzMGE5OWU0MzM0YzhhOWNlYjMxMzI2NjU2NGRiNzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaApAQCAtNjQsNyArNjQs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExBbnk+IHsKIHRlbXBsYXRlPD4g
c3RydWN0IFZhcmlhZGljQ29udmVydGVyPElETEFueT4gewogICAgIHVzaW5nIEl0ZW0gPSB0eXBl
bmFtZSBJRExBbnk6OkltcGxlbWVudGF0aW9uVHlwZTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxJ
dGVtPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJdGVtPiBjb252ZXJ0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEVudW1l
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRFbnVtZXJh
dGlvbi5oCmluZGV4IDY0MmUwNmY2MWY2YjZlNzAzMGJhNmY5NzFkNjA2MjUzYWViMTk5ODYuLmQ0
NThlNGFhOGNiM2VlZmU1NDI1ZjNhMGZjMTdmYzA5NTdmMjhiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEVudW1lcmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RW51bWVyYXRpb24uaApAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTcGVjaWFsaXplZCBieSBnZW5l
cmF0ZWQgY29kZSBmb3IgSURMIGVudW1lcmF0aW9uIGNvbnZlcnNpb24uCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBPcHRpb25hbDxUPiBwYXJzZUVudW1lcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpvcHRpb25hbDxUPiBw
YXJzZUVudW1lcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygp
OwogCiAvLyBTcGVjaWFsaXplZCBieSBnZW5lcmF0ZWQgY29kZSBmb3IgSURMIGVudW1lcmF0aW9u
IGNvbnZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydEludGVyZmFjZS5oCmluZGV4IDQ4ZWExN2MwZWU3MjZiYjc5YWFlOTMzZDE3NjFiOWRhNDcw
MDMzMDcuLmM2M2FhNzZjOTc4ODU0MDUyNTcyMDJhNjA4M2M4ZTU0M2Q1ZDhlZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCkBA
IC05MSwxMiArOTEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVy
PElETEludGVyZmFjZTxUPj4gewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhcmlhZGlj
Q29udmVydGVyPElETEludGVyZmFjZTxUPj4gewogICAgIHVzaW5nIEl0ZW0gPSBzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFQ+OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgYXV0byogcmVzdWx0ID0gQ29udmVydGVyPElETEludGVyZmFjZTxUPj46OmNvbnZlcnQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxJdGVt
PiB7ICpyZXN1bHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SXRlbT4geyAqcmVz
dWx0IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0VW5pb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydFVuaW9uLmgKaW5kZXggYTMyMzY2YzkzOTBmZjEyNTBhMjNlNmU0ZWEzMWNhZTVmMWY0
ZDBlNi4uMDc2MjExYTc2ZTRhMzdhODU0ZGRkOWUwNjg1YTcxYzY4MzIyZWFlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyOwogdGVtcGxhdGU8dHlwZW5hbWUgUmV0
dXJuVHlwZT4KIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIHRydWU+IHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBl
PiBnZXQoVCYmIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+IGdl
dChUJiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gUmV0dXJuVHlwZShzdGQ6OmZvcndh
cmQ8VD4odmFsdWUpKTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBDb25kaXRpb25h
bFJldHVybmVyPFJldHVyblR5cGUsIHRydWU+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5
cGU+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxSZXR1cm5lcjxSZXR1cm5UeXBlLCBmYWxzZT4gewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJldHVyblR5cGU+IGdl
dChUJiYpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gZ2V0KFQmJikKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBA
QCBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVy
blR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlw
ZSwgVCwgdHJ1ZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlKENvbnZlcnRlcjxUPjo6Y29udmVydChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogICAgIH0KQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0
IENvbmRpdGlvbmFsQ29udmVydGVyPFJldHVyblR5cGUsIFQsIHRydWU+IHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUgVD4KIHN0cnVjdCBDb25kaXRpb25hbENvbnZl
cnRlcjxSZXR1cm5UeXBlLCBULCBmYWxzZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5U
eXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CkBAIC04MSw3ICs4MSw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFNlcXVlbmNlQ29udmVydGVy
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENv
bmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewotICAgIHN0
YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU1ZhbHVlIG1l
dGhvZCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgSlNDOjpKU1ZhbHVlIG1ldGhvZCkKICAgICB7CiAgICAgICAgIHJldHVybiBSZXR1cm5UeXBl
KENvbnZlcnRlcjxUPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QsIG1ldGhv
ZCkpOwogICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VD
b252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1
cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8
UmV0dXJuVHlwZSwgVCwgZmFsc2U+IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4g
Y29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1
ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZh
dWx0Q29udmVydGVyPElETFUKICAgICAgICAgLy8gICAgIDIuIElmIHR5cGVzIGluY2x1ZGVzIG9i
amVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBvYmplY3QgVi4KICAgICAgICAgLy8gICAgICAgICAoRklYTUU6IEFkZCBzdXBwb3J0IGZvciBv
YmplY3QgYW5kIHN0ZXAgNC4yKQogICAgICAgICBpZiAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJ
c0lETEludGVyZmFjZTxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgewotICAgICAgICAgICAgT3B0aW9u
YWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
dHVyblR5cGU+IHJldHVyblZhbHVlOwogICAgICAgICAgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8SW50
ZXJmYWNlVHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChy
ZXR1cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDcgKzI2NCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5pb248VC4u
Lj4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExVCiAgICAgICAgIC8vICAgICAgICAgKEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igb2JqZWN0IGFuZCBzdGVwIDkuMikKICAgICAgICAgY29uc3RleHByIGJv
b2wgaGFzVHlwZWRBcnJheVR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMVHlwZWRB
cnJheTxicmlnYW5kOjpfMT4+Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc1R5cGVkQXJyYXlUeXBl
KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxSZXR1cm5UeXBlPiByZXR1cm5WYWx1ZTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CiAgICAgICAgICAg
ICBicmlnYW5kOjpmb3JfZWFjaDxUeXBlZEFycmF5VHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkg
ewogICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVj
dCBKU0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewogICAgIHsKICAgICAgICAgYXV0byBpbmRl
eCA9IHZhcmlhbnQuaW5kZXgoKTsKIAotICAgICAgICBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHJl
dHVyblZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcmV0dXJuVmFs
dWU7CiAgICAgICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUp
IHsKICAgICAgICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJl
bmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKICAgICAgICAgICAgIGlmIChJOjp2YWx1
ZSA9PSBpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0VmFyaWFkaWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFZhcmlhZGljLmgKaW5kZXggNDQ0MzI1ZjZkN2U3ZDVjNzM4YjQ2Y2M1NTA2N2ZlOGUyYThi
OTM5Yy4uN2Y4ZDg5MzFlNDc2ZjhjNGY5ZWVmODBkNjc1N2YzZmU1ZGU0NTkxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCkBAIC0z
NCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBzdHJ1Y3QgVmFyaWFkaWND
b252ZXJ0ZXIgewogICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGU7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYTNjNmJkYTYzYmZlMGYwYmE2YmI5MWVhNjY5Yzgx
OWE1ZDc2ZTY4ZC4uOTE1OWIwN2RlM2VhYjlkZmY3NmJhMzcyYzhiZGU2ZWUyYTI3OGI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKIAotICAgIE9wdGlvbmFsPHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yPiBtX2l0ZXJh
dG9yOworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I+IG1f
aXRlcmF0b3I7CiAgICAgSXRlcmF0aW9uS2luZCBtX2tpbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMzk3ZTI5NDA0
N2RlZjRlODY1NzY2YTkyZjNmZTZiN2Y0YjA1ZmJiYy4uMTkzYWE2YzhhYzg5YzdjNWIzNDk3MTc4
MDVmYzgxMjUzZGMyZDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsCiB7CiAgICAgLy8gKDEpIEZpcnN0LCBpbmRleGVkIHByb3BlcnRpZXMuCiAgICAgLy8g
SGFuZCBvZmYgYWxsIGluZGV4ZWQgYWNjZXNzIHRvIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgs
IHdoaWNoIHN1cHBvcnRzIHRoZSBpbmRleGVkIGdldHRlci4KLSAgICBpZiAoT3B0aW9uYWw8dW5z
aWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90KTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5oCmluZGV4IDgxY2I5MTBmYWY2Nzk5YTI2ZTFlZTE0ZDRiNjQ1
Y2I0OTc1MDZhMTAuLjY5OWMwZDYxM2I0N2Y5MzU5OTMzMmE2YjE3NzFiNzJhYmRiNmYwODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMgewogCiB0ZW1wbGF0ZTw+CiBz
dHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNEb2N1bWVudD4gewotICAgIHN0YXRpYyBj
b25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IEpTVHlwZVJhbmdlIHsg
c3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0RvY3VtZW50V3JhcHBlclR5cGUpLCBzdGF0
aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRG9jdW1lbnRXcmFwcGVyVHlwZSkgfSB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsg
SlNUeXBlUmFuZ2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRG9jdW1lbnRXcmFw
cGVyVHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNEb2N1bWVudFdyYXBwZXJU
eXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKaW5kZXggMjVhNjgzYzllYzliYjU1MDc1
YmZlYzgwNTJhZmJiNTg5ZjEwNTliMS4uZWM5YjAzMjNhOGNkMjA1ODg0YmJjMDYwYTk0NzU1NjY5
ODhiZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMgewogCiB0ZW1w
bGF0ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNFbGVtZW50PiB7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgSlNUeXBl
UmFuZ2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRWxlbWVudFR5cGUpLCBzdGF0
aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRWxlbWVudFR5cGUpIH0gfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IEpTVHlwZVJh
bmdlIHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0VsZW1lbnRUeXBlKSwgc3RhdGlj
X2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0VsZW1lbnRUeXBlKSB9IH07CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBG
cm9tKiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uaAppbmRleCBlMDNhMGRjNWZkZDE1YTdmZmYwOWRjNWIyMzA1NmNlY2FkYWQzN2NkLi44Mjcx
YjkzM2Q4NjcyMjA4MWRjYzQ3YjhjZjI1OTAwMTA4MGY4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBK
U0Nhc3RpbmdIZWxwZXJzIHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IEluaGVyaXRzVHJhaXRzPFdl
YkNvcmU6OkpTRXZlbnQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJh
bmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNFdmVudFR5
cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRXZlbnRUeXBlKSB9IH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7
IHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNFdmVudFR5cGUpLCBzdGF0aWNfY2FzdDxK
U1R5cGU+KFdlYkNvcmU6OkpTRXZlbnRUeXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9t
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKaW5kZXgg
MzQ0Y2U4MTVhYjYzMTQ5ZmZmZTgwODM1MzljMjNjMWFiMjg4ZDZiMS4uZmJkNDY4ZDQ3ZWNhZjI4
NzIzZDA3NmIyN2U5MWYyZjJiZjE1MGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBl
cnMgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNOb2Rl
PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdl
IHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUpLCBzdGF0aWNfY2Fz
dDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUgKyBXZWJDb3JlOjpKU05vZGVUeXBlTWFzaykg
fSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlw
ZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUpLCBzdGF0
aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUgKyBXZWJDb3JlOjpKU05vZGVUeXBl
TWFzaykgfSB9OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90
Pjo6bWF4KCkgPT0gdHlwZVJhbmdlLT5sYXN0KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9t
PgogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20qIGZyb20pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybUN1c3RvbS5jcHAKaW5kZXggZDYyYTY5ODc1ZjRjN2NhZDhjODVkMWNmYTkwNmM2
MGRmYjc0N2IzMS4uOWIwY2Q1NDM4N2E4ZTI5OWUzYWE4NjdkYjZkNDgwNTc5ZTJhOWRmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENSdHBTRnJhbWVUcmFuc2Zv
cm1DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtQ3VzdG9tLmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1ZhbHVlIEpTUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsTwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwganNVbmRlZmluZWQo
KSk7CiAKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLmFy
Z3VtZW50KDEpOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJRDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBrZXlJRDsKICAgICBpZiAoIWFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZp
bmVkKCkpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50MS52YWx1ZSgpLmlzQmlnSW50KCkpIHsKICAg
ICAgICAgICAgIGlmIChhcmd1bWVudDEudmFsdWUoKS5hc0hlYXBCaWdJbnQoKS0+bGVuZ3RoKCkg
PiAxKSB7CkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUgSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OnNldEVuY3J5cHRpb25LZXkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBrZXlJRCA9IEpTQmlnSW50Ojp0b0JpZ1VJbnQ2NChhcmd1bWVu
dDEudmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAga2V5SUQgPSBPcHRpb25h
bDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURM
VW5zaWduZWRMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIGtleUlEID0gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWdu
ZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICB9CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBqc1VuZGVmaW5lZCgpKTsKICAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVt
b3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVt
b3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxOTIxMDVjMzE5ZjViYzkwMmVjZDYzNGI2Mjg5
YjhjODNjMGYzOWFkLi4xYTM1ZmRjNzRmMDEyMTVmOGJjZTI5OTBhYWZhMjliMzVlNmFiNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dDdXN0b20uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJv
b2wgSlNSZW1vdGVET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChPcHRpb25hbDx1bnNpZ25l
ZD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBy
ZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1JlbW90ZURPTVdpbmRvdyo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggMGQzNWIwNzMzOWQ1ZGE2N2FiNzdjYjg3MTIz
ODY1ZWZmN2JhNjA2OC4uOTEzYTZmMTVjMTY1NDVkYTQyODMwZGZjMzVjZTg5NWQxMDhjMTllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0
cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleAogICAgIHJldHVybiBjcmVhdGUo
Z2xvYmFsT2JqZWN0LCAqanNDYXN0PEpTUmVhZGFibGVTdHJlYW0qPihvYmplY3QpKTsKIH0KIAot
c3RhdGljIGlubGluZSBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGludm9rZVJlYWRhYmxlU3RyZWFt
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmd1bWVudHMpCitzdGF0aWMgaW5saW5lIHN0
ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBpbnZva2VSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgaWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciYgYXJndW1lbnRzKQogewogICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAt
OTEsNyArOTEsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpwaXBlVG8oUmVhZGFibGVTdHJlYW1T
aW5rJiBzaW5rKQogICAgIGludm9rZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24obGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJpdmF0ZU5hbWUsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKIH0K
IAotT3B0aW9uYWw8c3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0
cmVhbT4+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJl
ZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+PiBSZWFkYWJsZVN0cmVhbTo6
dGVlKCkKIHsKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKm1fZ2xvYmFsT2JqZWN0
OwogICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDdjYWM3MjNjZjA2ZDlmOTRhOTE2ZDAwZGQ3
NjhiNjFiMDlhNDJlNGEuLmJjMWM3M2I3Y2ZlZjMxN2M4MTUxZjc4NDQyYmI4NDVhMTJkZjQ3Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rp
c3R1cmJlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIAotICAgIE9wdGlv
bmFsPHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBSZWY8UmVhZGFibGVTdHJlYW0+Pj4g
dGVlKCk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UmVmPFJlYWRhYmxlU3RyZWFtPiwg
UmVmPFJlYWRhYmxlU3RyZWFtPj4+IHRlZSgpOwogCiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9p
ZCBwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAppbmRleCA4NGIwZmMwZGIxZjE3
NTdjNzNkMjZhZjAyMjkzNzVkMmEyMDYyOWYxLi4wNmFkODlkNGY2NDNiMGExM2Q4OTA1YjZjYmVl
OWIwYTZlZTE3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5K
YXZhU2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBGb3Jj
ZVVzZXJHZXN0dXJlIDogYm9vbCB7IE5vLCBZZXMgfTsKIHVzaW5nIEFyZ3VtZW50V2lyZUJ5dGVz
TWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CiAKIHN0cnVjdCBSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyB7Ci0gICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3RyaW5nJiYg
c291cmNlLCBVUkwmJiBzb3VyY2VVUkwsIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVu
Y3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgRm9yY2VV
c2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJMLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVu
QXNBc3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFy
Z3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQogICAgICAgICA6IHNv
dXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1vdmUoc291cmNl
VVJMKSkKICAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uKQpA
QCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAgIHsK
ICAgICB9CiAKLSAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgVVJMJiYgc291cmNlVVJMLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJn
dW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisg
ICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFVSTCYmIHNv
dXJjZVVSTCwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRX
aXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiAgICAgICAg
IDogc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBzb3VyY2VVUkwoV1RGTW92ZShzb3VyY2VVUkwp
KQogICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5B
c0FzeW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCkBAIC01Niw3ICs1
Niw3IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgewogICAgIH0KIAot
ICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNl
VVJMLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNN
YXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMoU3RyaW5nJiYgc291cmNlLCBVUkwmJiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNB
c3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3Vt
ZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1vdmUoc291cmNlVVJMKSkKICAgICAgICAg
LCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0
aW9uOjpZZXMgOiBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vKQpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1
Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAgIFN0cmluZyBzb3VyY2U7CiAgICAgVVJM
IHNvdXJjZVVSTDsKICAgICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOwot
ICAgIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgc3RkOjpv
cHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOwogICAgIEZvcmNlVXNlckdl
c3R1cmUgZm9yY2VVc2VyR2VzdHVyZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC03Niw3ICs3Niw3IEBAIHN0
cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgICAgIGVuY29kZXIgPDwgc291cmNl
IDw8IHNvdXJjZVVSTCA8PCBydW5Bc0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRzIDw8IGZvcmNl
VXNlckdlc3R1cmU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSdW5KYXZhU2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ewogICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNv
dXJjZSkpCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVuQXNBc3luY0Z1bmN0aW9uKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRX
aXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBcmd1bWVudFdp
cmVCeXRlc01hcD4gYXJndW1lbnRzOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3Vt
ZW50cykpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApp
bmRleCA0MTMwNzE1YzdhY2QzZDFkMTU2ZTU2OTk5NzVhY2EzN2ZlYjg5N2Y5Li45ZDllNTJkYWVj
MGMwNGVkMjE2MWViODI1NmFmYTY3NzU1MTVlMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CiAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9jYWNoZWRTY3JpcHRTdHJpbmc7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2NvbnRh
aW5zT25seUFTQ0lJOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5z
T25seUFTQ0lJOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkZDY4MTJiZjgwNTMw
ODA4ZTI5NThhMGNhYmUwMDgyOGMwYmM3NGZhLi5hZGZiMzhhZWZiZTlmNzI0NzRkYWY3MjdhZmVk
YzRhNmM4NjM4NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJh
bWUpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAg
IGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0
YWlsczsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25F
eGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKQEAgLTU5MSw3
ICs1OTEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAjZW5kaWYKIAotICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJH
ZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0LCBtX2Zy
YW1lLmRvY3VtZW50KCkpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/
IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICBpZiAo
IWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJDYW5ub3Qg
ZXhlY3V0ZSBKYXZhU2NyaXB0IGluIHRoaXMgZG9jdW1lbnQiX3MgfSk7CkBAIC02NTksNyArNjU5
LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXQKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwuc3RyaW5nKCksIHNvdXJj
ZUNvZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CisgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsK
ICAgICBkbyB7CiAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6
cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3Ro
ZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDAwMDg3NDk5MDc2MjM5MjBlMWJhMzhkM2Y0YjExNmY5NmNiNjQ3YTUuLjVhNTBmZmQxM2Y1
MDljZWJjMjVjOWU2ZDJhZWMyMzA3OWJmYWQxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjA3MCw3ICsyMDcw
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KIAotICAgIHN0YXRpYyBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VC
aXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlv
blJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFj
a2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dP
UktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCkBAIC0yMTQzLDcg
KzIxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9OwogCi0g
ICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVm
ZmVyQ29udGVudHMsIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tp
bmdTdG9yZXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyCisgICAgQ2xvbmVEZXNlcmlh
bGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2Fn
ZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZl
Y3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3Jlcywg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
U19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMgPSB7IH0KICNlbmRp
ZgpAQCAtMjE4NCw3ICsyMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fdmVyc2lvbiA9
IDB4RkZGRkZGRkY7CiAgICAgfQogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVm
ZmVycywgVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3Jl
cworICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJh
eUJ1ZmZlckNvbnRlbnRzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhz
LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cwogI2VuZGlmCkBAIC0yNDQ2LDcgKzI0NDYsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWNoZWRT
dHJpbmdSZWYgbmFtZTsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YShuYW1lKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gb3B0aW9uYWxM
YXN0TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gb3B0aW9uYWxMYXN0
TW9kaWZpZWQ7CiAgICAgICAgIGlmIChtX3ZlcnNpb24gPiA2KSB7CiAgICAgICAgICAgICBkb3Vi
bGUgbGFzdE1vZGlmaWVkOwogICAgICAgICAgICAgaWYgKCFyZWFkKGxhc3RNb2RpZmllZCkpCkBA
IC0zMDMzLDcgKzMwMzMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3Jl
YXRlZChtX2xleGljYWxHbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1f
Z2xvYmFsT2JqZWN0KSwgVDo6Y3JlYXRlKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxET01Qb2ludEluaXQ+IHJlYWRET01Qb2ludEluaXQoKQorICAgIHN0ZDo6
b3B0aW9uYWw8RE9NUG9pbnRJbml0PiByZWFkRE9NUG9pbnRJbml0KCkKICAgICB7CiAgICAgICAg
IERPTVBvaW50SW5pdCBwb2ludDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50LngpKQpAQCAtMzY4
Nyw3ICszNjg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYkZpbGVQYXRoczsKICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIG1fc2hhcmVkQnVmZmVyczsKLSAgICBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRt
YXBCYWNraW5nPj4gbV9iYWNraW5nU3RvcmVzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPElt
YWdlQml0bWFwQmFja2luZz4+IG1fYmFja2luZ1N0b3JlczsKICAgICBWZWN0b3I8UmVmUHRyPElt
YWdlQml0bWFwPj4gbV9pbWFnZUJpdG1hcHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNf
SU5fV09SS0VSUykKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOwpAQCAtMzkyMyw3ICszOTIzLDcg
QEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVp
bnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBtX21lbW9yeUNvc3QgPSBjb21wdXRlTWVt
b3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBC
YWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
YXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCAzYTRkOGI3ZWI0ODNjMzFjZjg1OGFiZDNmNjQ3YjNhOTE0ZTYyMTI3Li4x
Yzc1NDVlY2I1NzEzOTNmMjg1ODM2MGFkYzAxZThjODk4ZTY1MGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTIxLDcg
KzEyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgKTsKIAotICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVj
dG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcworICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVm
ZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5n
U3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAg
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsg
fQogI2VuZGlmCkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheTsKLSAg
ICBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4gbV9iYWNraW5nU3RvcmVzOwor
ICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IG1fYmFja2luZ1N0
b3JlczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zm
c2NyZWVuQ2FudmFzZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdEZldGNoZXIuaAppbmRleCBlNzUyMzIwNjUxNTY5ZDFiOGE5MWY3ZGUyMmY1
YjVhY2I3OTNjNDZkLi4zZDYwOWRjYWU3MThlOWJjNmY4ZjQxNGYwMmJjM2Q2NzQ0ZDI4MzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRGZXRjaGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RmV0Y2hlci5o
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzTG9hZGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0xvYWRlZDsgfQotICAgIE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0
OjpFcnJvcj4gZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgICAgc3RkOjpvcHRp
b25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
cjsgfQogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0NhbmNlbGVk
OyB9CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlS2V5LmdldCgpOyB9CiAgICAgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CkBAIC05Miw3ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgUmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9tb2R1bGVL
ZXk7CiAgICAgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwotICAgIE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBi
YTNmNGM1NTgyZGEyMWE5YzY3MTI0YmRlNDY5NmMwMjMwZmQyN2ExLi4yM2ZlN2M1MzgyMGI2ZTgz
OTQ5MzMxODA4NjI4NWNkNzNjZGM1OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgc3Vi
IEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAjIEZJWE1FOiBD
aGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCYuCiAgICAgIyBGSVhN
RTogQ29uc2lkZXIgdXNpbmcgdG9TdHJpbmdPck51bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tp
bmcgZmFzdGVyLgogICAgICMgRklYTUU6IENvbnNpZGVyIGZpbmRpbmcgYSBtb3JlIGVmZmljaWVu
dCB3YXkgdG8gbWF0Y2ggYWdhaW5zdCBhbGwgdGhlIHN0cmluZ3MgcXVpY2tseS4KLSAgICAkcmVz
dWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlRW51bWVyYXRpb248
JGNsYXNzTmFtZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUg
dmFsdWUpXG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwkY2xh
c3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKVxuIjsKICAgICAkcmVzdWx0IC49ICJ7XG4i
OwogICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJp
bmcoJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIjsKICAgICBmb3JlYWNoIG15ICR2YWx1ZSAoQHsk
ZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHN1YiBHZW5lcmF0
ZUVudW1lcmF0aW9uSGVhZGVyQ29udGVudAogCiAgICAgJHJlc3VsdCAuPSAiJHtleHBvcnRNYWNy
b31TdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoJGNsYXNzTmFtZSk7XG4iOwogICAg
ICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJHtleHBvcnRNYWNyb31KU0M6OkpTU3RyaW5nKiBjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCAkY2xhc3NOYW1lKTtcblxu
IjsKLSAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICR7ZXhwb3J0TWFjcm99T3B0aW9uYWw8JGNs
YXNzTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlKTtcbiI7CisgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAke2V4cG9y
dE1hY3JvfXN0ZDo6b3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NO
YW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTtcbiI7CiAgICAgJHJlc3Vs
dCAuPSAidGVtcGxhdGU8PiAke2V4cG9ydE1hY3JvfWNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVy
YXRpb25WYWx1ZXM8JGNsYXNzTmFtZT4oKTtcblxuIjsKICAgICAkcmVzdWx0IC49ICIjZW5kaWZc
blxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgCkBAIC02MTM3LDggKzYxMzcsOCBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
JGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJGFyZ3VtZW50LT50eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICRkZWZhdWx0VmFsdWUgPSAibnVsbHB0ciI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIk9wdGlvbmFsPENvbnZl
cnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJuVHlwZT4oKSI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkbmF0aXZlVmFsdWVDYXN0RnVuY3Rpb24gPSAiT3B0aW9uYWw8Q29udmVydGVyPCRh
cmd1bWVudElETFR5cGU+OjpSZXR1cm5UeXBlPiI7CisgICAgICAgICAgICAgICAgICAgICAgICAk
ZGVmYXVsdFZhbHVlID0gInN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPCRhcmd1bWVudElETFR5cGU+
OjpSZXR1cm5UeXBlPigpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYXRpdmVWYWx1ZUNh
c3RGdW5jdGlvbiA9ICJzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjwkYXJndW1lbnRJRExUeXBlPjo6
UmV0dXJuVHlwZT4iOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIkVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudCR7YXJndW1lbnRJbmRleH0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KCRhcmd1bWVudElu
ZGV4KTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4IDBmODg2Y2JlNDE0NThiNzli
ZGRkMjA5ZTBkNWY4Y2M0ZmVlYTk4MWUuLjhlNTc5ZDMwZWNmZGJlZDM3YTc0ZGEyNmY2OTZlMDEz
OGMyYjczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byB2YXJp
YW50T3B0aW9uYWxBcmcgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+
Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExCb29sZWFu
LCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248
SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8gdmFyaWFudE9wdGlvbmFsQXJnID0gYXJn
dW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElE
TFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4o
KSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0
LCBJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJRExCb29sZWFu
LCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFj
dGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywg
eyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnRP
cHRpb25hbEFyZykgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAppbmRl
eCBjNDViNTg5Y2Y3ZDgzYjlhZjhhMjE0YzRmY2E1MjJkMDE5Y2ViOWNlLi5mMGQ4ZTcxZDQ0MmQy
ZGNmMzEzZWRlZTcxNTZiNjAyZmY2MmZhMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdENh
bGxiYWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RDYWxsYmFja0ludGVy
ZmFjZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gInZhbHVlMSIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCmluZGV4IGE3ODU4ZjkxMGYzMDVlNzJkMGQzZmU2
ZTk1YjllMDc3YmNhN2VlNDcuLjIyZmVmYmMyM2M3YTM1MWU5Nzg0NmVlMDNjZTQ1MmZhZTM4ODcx
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw3IEBA
IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tJbnRlcmZhY2UqIGltcGwpIHsg
cmV0dXJuIGltcGwgPyB0b0pTKCppbXBsCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpFbnVtKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpF
bnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3Rk
OjpvcHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248
VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+KCk7CiAKIHRlbXBsYXRlPD4gVGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RDYWxsYmFja0lu
dGVyZmFjZTo6RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcAppbmRleCA2MGExMmNlNGQ1NjVm
NGU3OGYxOTU1ZWY2OTMwNjEzMDgwMTg2YjE0Li4xNmRjNGQxMWQwMjRkZDhiOWZiNzNjZDZmNmM0
MTBiMDBhYjM1NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9K
UyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dERlZmF1bHRUb0pTT05FbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51
bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit0
ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdERlZmF1bHRUb0pTT05FbnVtPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVl
LnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gIkVudW1WYWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaAppbmRleCAz
ZmFlMDA3ZjY2NjcyMDEzZjYzY2EwOWE2ZjEwNWYxOGViOTQyNzUwLi5lMWE0ZmNjNmIyMTlkODcy
MDZiZGY2MGY1ODcxNmU2ZmE0NDg1MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVu
dW0uaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdERlZmF1bHRUb0pTT05FbnVtKTsKIHRlbXBsYXRlPD4g
SlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgVGVzdERlZmF1bHRUb0pTT05FbnVtKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0RGVm
YXVsdFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnVtPihK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRp
b25hbDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdERlZmF1bHRU
b0pTT05FbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRl
PD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0RGVmYXVsdFRvSlNP
TkVudW0+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFj
ZU9iamVjdC5jcHAKaW5kZXggYTUyZWM3MGE3MTAzOTYzYjdkMWJiM2M2MGEyYjA1ZmE2OGNlYzA2
My4uY2MxMzQzYmY4YzVmMDQwOTBlNTM2YTZkODA1MjViMTc2MTAwNTZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JGdW5j
dGlvbl9vdmVybAogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlTmFtZSIsICJvdmVybG9hZGVkTmFt
ZXNwYWNlT3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKLSAgICBhdXRvIGxvbmdBcmcg
PSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElE
TExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1
cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEu
dmFsdWUoKSkpOworICAgIGF1dG8gbG9uZ0FyZyA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZp
bmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6
IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xl
YW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBUZXN0TmFtZXNwYWNlT2JqZWN0
OjpvdmVybG9hZGVkTmFtZXNwYWNlT3BlcmF0aW9uKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShs
b25nQXJnKSkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGIwYjQ4ZGEyNGI0MTA4NDAwNGU5NjcyYThi
NDJlOTZjZDY0MzBhZWQuLjJhYmY1MThiMjNiODY4MWZkMTI0N2YxZDIxZjJhNDRjNzA4ODVmZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bVR5cGU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1
ZS5pc0VtcHR5KCkpCkBAIC0xODMsNyArMTgzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6T3B0aW9uYWw+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1
ZS5pc0VtcHR5KCkpCkBAIC0yMTksNyArMjE5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJu
YXRlRW51bU5hbWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwYXJz
ZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1
ZSA9PSAiZW51bVZhbHVlMSIpCkBAIC0yNTEsNyArMjUxLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVz
dE9iajo6RW51bUE+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAi
QSIpCkBAIC0yODMsNyArMjgzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1l
cmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1CPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQiIpCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlv
bmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQyIpCkBAIC0zNDcsNyArMzQ3LDcgQEAgdGVtcGxh
dGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZh
bHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5k
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2
YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlID09ICJxdWljayIpCkBAIC0zNzksNyArMzc5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpTaXplPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
ZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJzbWFsbCIp
CkBAIC00MTEsNyArNDExLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0
aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9u
YWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRl
bmNlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09
ICJoaWdoIikKQEAgLTU5MjksNyArNTkyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxFCiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGVudW1BcmcgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETEVudW1lcmF0aW9uPFRlc3RPYmo6
OkVudW1UeXBlPj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMRW51bWVy
YXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExFbnVtZXJh
dGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6
OkVudW1UeXBlPigpKTsgfSkpOworICAgIGF1dG8gZW51bUFyZyA9IGFyZ3VtZW50MC52YWx1ZSgp
LmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0
ZXI8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51
bUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFs
dWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0K
QEAgLTYzODgsNyArNjM4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBCiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKLSAgICBhdXRvIG9wdCA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBvcHQgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9u
Zz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEFyZyhXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQpAQCAtNjQyOSw3ICs2NDI5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21l
dGhvZFdpdGhOb25PcHRpb24KICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8SURMTG9uZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gb3B0
ID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQx
LnZhbHVlKCkpKTsKKyAgICBhdXRvIG9wdCA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExv
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmco
V1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQpAQCAtNjQ1MiwxMCArNjQ1
MiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbk9wdGlvbgogICAgIGF1dG8gbm9uT3B0ID0gY29udmVy
dDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
Ci0gICAgYXV0byBvcHQxID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlv
bmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRl
cjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIG9wdDEgPSBhcmd1bWVudDEudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJl
dHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDIpOwotICAgIGF1dG8gb3B0MiA9IGFyZ3VtZW50Mi52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25h
bDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKSk7CisgICAgYXV0byBvcHQyID0gYXJn
dW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElE
TExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50Mi52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9w
dDEpLCBXVEZNb3ZlKG9wdDIpKTsgfSkpKTsKIH0KQEAgLTY3MDcsNyArNjcwNyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9t
ZXRob2RXaXRoT3B0aW9uYWxMCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIG51bWJlciA9
IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURM
TG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25n
Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBudW1iZXIgPSBhcmd1bWVudDAudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpS
ZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1
cm5UeXBlPihjb252ZXJ0PElETExvbmdMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CkBAIC02NzQzLDcgKzY3NDMs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVQogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0
byBudW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29u
dmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29u
dmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuc2ln
bmVkTG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwor
ICAgIGF1dG8gbnVtYmVyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6
b3B0aW9uYWw8Q29udmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDog
c3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CkBAIC02ODE1
LDcgKzY4MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQgogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
Ci0gICAgYXV0byBiID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFs
PENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRl
cjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGIgPSBhcmd1bWVudDAu
dmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQm9vbGVh
bj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6
UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7IH0pKSk7CiB9CkBAIC02ODY5LDcgKzY4NjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBh
ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExPYmplY3Q+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46
OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0Pjo6UmV0dXJuVHlwZT4o
KSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46OlJldHVyblR5cGU+KGNvbnZl
cnQ8SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChXVEZN
b3ZlKGEpKTsgfSkpKTsKIH0KQEAgLTczMDIsNyArNzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0
aG9kMkJvCiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFj
ZTxUZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0
T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIGxv
bmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRl
cjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92
ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsK
IH0KQEAgLTc1MzIsNyArNzUzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0CiAgICAgYXV0
byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqQXJn
IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIs
ICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBh
dXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENv
bnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcp
LCBXVEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KQEAgLTc5MDksNyArNzkwOSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
X2NsYXNzTWV0aG9kV2l0aE9wCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gYXJnID0gYXJndW1lbnQwLnZh
bHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJu
VHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKKyAg
ICBhdXRvIGFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlv
bmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29u
dmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3Zl
KGFyZykpKSkpOwogfQpAQCAtODE0Miw3ICs4MTQyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbldpdGhPcHRp
b24KICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gb3B0aW9uYWxVbmlvbiA9IGFyZ3VtZW50
MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURM
RE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5
cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1
ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5p
b248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBvcHRpb25h
bFVuaW9uID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8
Q29udmVydGVyPElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmlj
dGVkRG91YmxlPj4+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURM
VW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46
OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJ
RExVbnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9u
YWxVbmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsgfSkpKTsKIH0KQEAgLTg0
NzQsNyArODQ3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uCiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKLSAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVy
PElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8gYSA9IGFyZ3VtZW50MC52YWx1ZSgp
LmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJu
VHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykg
eyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQo
V1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNWE1YzI1
NjdhYTM0NDU3MDY3NDU4MGZlZTg5MzZjODkxYTExZWE0ZS4uYmUyZjM3M2M2Mjk1NWRlZTk5YmJj
NWY0ZmI1NGQ0ZjcxMzg0YzEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTE4LDE5ICsxMTgsMTkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RPYmo+IHsKIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpFbnVtVHlwZSk7CiB0ZW1wbGF0
ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFRlc3RPYmo6OkVudW1UeXBlKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2Jq
OjpFbnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVz
dE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpOwogCiBTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6T3B0aW9uYWwpOwogdGVtcGxhdGU8
PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBUZXN0T2JqOjpPcHRpb25hbCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RP
Ymo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpPcHRpb25hbD4oKTsKIAogU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFsdGVybmF0ZUVudW1OYW1lKTsKIHRlbXBsYXRlPD4g
SlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgQWx0ZXJuYXRlRW51bU5hbWUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVu
dW1OYW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxBbHRlcm5h
dGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKQEAgLTEzOCw3ICsxMzgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51bUEpOwogdGVtcGxhdGU8PiBKU0M6
OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBU
ZXN0T2JqOjpFbnVtQSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czxUZXN0T2JqOjpFbnVtQT4oKTsKIAogI2VuZGlmCkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxh
dGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1B
PigpOwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1CKTsK
IHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6RW51bUIpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0
T2JqOjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUI+KCk7CiAKICNlbmRpZgpAQCAtMTU4LDcg
KzE1OCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czxUZXN0T2JqOjpFbnVtQj4oKTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhU
ZXN0T2JqOjpFbnVtQyk7CiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJh
dGlvblRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFRlc3RPYmo6OkVudW1DKTsKIAotdGVtcGxh
dGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpF
bnVtQz4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0
ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51
bUM+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25z
dCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1DPigpOwogCiAj
ZW5kaWYKQEAgLTE2NiwxOSArMTY2LDE5IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQz4oKTsKIFN0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpLaW5kKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6
S2luZCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJh
dGlvbjxUZXN0T2JqOjpLaW5kPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OktpbmQ+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6Oktp
bmQ+KCk7CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpTaXpl
KTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6U2l6ZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0
T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OlNpemU+KCk7CiAKIFN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhUZXN0T2JqOjpDb25maWRlbmNlKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0
cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9i
ajo6Q29uZmlkZW5jZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5j
ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpD
b25maWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNvbmZpZGVuY2U+KCk7CiAKIHRlbXBsYXRl
PD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9u
YXJ5PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGlj
dGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4IDhhZTg5MzNlYmMzY2Y1N2E4NGJkYWM2
M2Y4MWFhOTA5MTZlNjcxZjEuLmMxZWMzMGVhMWFhMDkxYzQ2NTZkMmFkZGI4MjBlMGJlMGY0NzJm
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RT
dGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURp
Y3Rpb25hcnlGaWxlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
YXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnkuaAppbmRleCBkYzFiNGUzYmU4ZDdiNzAxOTU2MDMwNmViNjJl
NDI2MDQ4ZDlhZjE2Li41MmExOTQ5NzZlMmFlODEwNGY0ZGNhODFkNDIzODQxOGE2OTY3MGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaApAQCAtMzUsNyArMzUsNyBA
QCBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NRwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFu
ZGFsb25lRGljdGlvbmFyeUZpbGUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFs
b25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25h
cnlGaWxlPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVE
aWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6
OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFy
eUZpbGU+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKaW5kZXggNGE3YTkxYTU0NTk1MDBkODE0YmQ5NWVkNGZh
OTVlMGZiMTVmZWMwOC4uNDZhNjI0NDlmNTZhNDYwMGFiMTZmM2JhMTY0NTg4MjZhOWI3YzIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5k
YWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFs
dWUgPSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0
cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51
bWVyYXRpb24uaAppbmRleCBlMDNkNTFiOTNkNjM4YTdkZDhjZjlhNDU5OTk3OTUyM2E5ZDRkZTI2
Li45NGQ1N2YwMDZmOGU5Y2NjM2ZiNWRhOTljN2NkZmU3OTJiYjkwMTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVu
dW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0U3RhbmRh
bG9uZUVudW1lcmF0aW9uKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1l
cmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlv
bik7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFy
c2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRh
bG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25z
dCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4
IDU1YWNhODBlY2YxMWFmYzJiYjgyMDYxMmY1MmIyMjVkMWU4ZjQyNzcuLmE4MTJiMTIzYzk5ZTUz
MjY1OWM5ZWNlNjQ2YjBlOWU5OWJmZDcyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNTE5
LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX3NldFNoYWRvd0JvZHkoCiAgICAgYXV0byBjb2xvciA9IGFy
Z3VtZW50My52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQzLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50NCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoNCk7Ci0g
ICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25h
bDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETFVucmVzdHJpY3RlZEZsb2F0Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExVbnJlc3RyaWN0ZWRGbG9hdD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50NC52YWx1
ZSgpKSk7CisgICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5
cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDQudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2V0
U2hhZG93KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1ciksIFdU
Rk1vdmUoY29sb3IpLCBXVEZNb3ZlKGFscGhhKSk7IH0pKSk7CiB9CkBAIC02NjIsNyArNjYyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25fZnVuY1dpdGhDbGFtcEIKICAgICBhdXRvIGFyZzEgPSBjb252ZXJ0PElETENs
YW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gYXJnMiA9IGFyZ3VtZW50MS52YWx1ZSgp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVu
c2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExD
bGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElE
TENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MS52YWx1ZSgpKSk7CisgICAgYXV0byBhcmcyID0gYXJndW1lbnQxLnZhbHVlKCku
aXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETENsYW1wQWRhcHRvcjxJ
RExVbnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPihj
b252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOyB9KSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDAwZTYyNjVjOGE0MzJh
YzdkYjc0MzdkOTJiZjQ2ZWM3MzEwNTUzZTQuLjAzMjY0NGM0ZTU4MTkyNGNiN2QwZDcyMTc4NmY2
YmU5NGRlMTViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEcKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8
IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
KSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
Ym9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRl
QXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAxNjQzMjkwNDkxOGU3M2NlMGNmYzBjOWViNDY0
ZTYxOGViNDNjODJlLi5lZjUyY2JiZThlZDU1ZWVkMmM5ODcxNjg0OWYxZDE0MTczN2E4OGYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8
VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gZ2V0RG9tYWluTGlzdChKU0dsb2JhbE9i
amVjdCYgbAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBnZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0
IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFncyYgZmxhZ3MsIE9wdGlvbmFsPE9wdGlv
blNldDxUPj4gKCpzdHJpbmdUb1R5cGUpKFN0cmluZ1ZpZXcpKQorc3RhdGljIHN0ZDo6ZXJyb3Jf
Y29kZSBnZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNv
bnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFncyYgZmxhZ3MsIHN0ZDo6b3B0aW9u
YWw8T3B0aW9uU2V0PFQ+PiAoKnN0cmluZ1RvVHlwZSkoU3RyaW5nVmlldykpCiB7CiAgICAgVk0m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIGlzVmFsaWRDU1NTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogICAgIHJldHVybiAhIXBhcnNlci5wYXJzZVNl
bGVjdG9yKHNlbGVjdG9yKTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4s
IHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCitzdGF0aWMgRXhwZWN0ZWQ8c3Rk
OjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRBY3Rpb24oSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTT2JqZWN0JiBydWxlT2JqZWN0KQog
ewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIEV4
cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0ds
b2JhbE9iamVjdCYgbGUKICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lv
bkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwogfQogCi1zdGF0aWMgRXhwZWN0ZWQ8T3B0
aW9uYWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRSdWxlKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU09iamVjdCYgcnVsZU9i
amVjdCkKK3N0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPENvbnRlbnRFeHRlbnNpb25SdWxl
Piwgc3RkOjplcnJvcl9jb2RlPiBsb2FkUnVsZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCiB7CiAgICAgYXV0byB0cmlnZ2Vy
ID0gbG9hZFRyaWdnZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgcnVsZU9iamVjdCk7CiAgICAgaWYg
KCF0cmlnZ2VyLmhhc192YWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oCmluZGV4IGU3MmMxNDQ3YWQ2
ZjNiMjAzOGMyYjE4ZTQ5OWYzN2U5NWJjYTA1NWUuLjBmNDAzYzJkMDg1NWUzZjM2YTZjODMyZjQw
Njc3MTNhZjA2ZDdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RSZXN1bHRzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Ry
dWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgewogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0PiBkZWNvZGUoRGVj
b2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKICAgICBzdHJ1Y3QgU3VtbWFy
eSB7CiAgICAgICAgIGJvb2wgYmxvY2tlZExvYWQgeyBmYWxzZSB9OwpAQCAtNTYsNyArNTYsNyBA
QCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyB7CiAgICAgICAgIGJvb2wgaGFzTm90aWZp
Y2F0aW9ucyB7IGZhbHNlIH07CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8U3VtbWFyeT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3VtbWFyeT4gZGVjb2Rl
KERlY29kZXImKTsKICAgICB9OwogICAgIHVzaW5nIENvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIg
PSBTdHJpbmc7CiAKQEAgLTc2LDE0ICs3NiwxNCBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVz
dWx0cyB7CiAgICAgICAgIGVuY29kZXIgPDwgc3VtbWFyeTsKICAgICAgICAgZW5jb2RlciA8PCBy
ZXN1bHRzOwogICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8Q29udGVudFJ1bGVMaXN0UmVzdWx0cz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFJ1bGVM
aXN0UmVzdWx0cz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRp
b25hbDxTdW1tYXJ5PiBzdW1tYXJ5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN1bW1hcnk+IHN1
bW1hcnk7CiAgICAgICAgIGRlY29kZXIgPj4gc3VtbWFyeTsKICAgICAgICAgaWYgKCFzdW1tYXJ5
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFJ1bGVMaXN0SWRlbnRpZmllciwgUmVzdWx0
Pj4+IHJlc3VsdHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFpcjxDb250
ZW50UnVsZUxpc3RJZGVudGlmaWVyLCBSZXN1bHQ+Pj4gcmVzdWx0czsKICAgICAgICAgZGVjb2Rl
ciA+PiByZXN1bHRzOwogICAgICAgICBpZiAoIXJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTAzLDI0ICsxMDMsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBl
bmMKICAgICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlvbnM7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0czo6UmVzdWx0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8UmVzdWx0PgordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
YXV0byBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFJlc3VsdD4KIHsKLSAgICBPcHRpb25hbDxib29sPiBibG9j
a2VkTG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJsb2NrZWRMb2FkOwogICAgIGRlY29k
ZXIgPj4gYmxvY2tlZExvYWQ7CiAgICAgaWYgKCFibG9ja2VkTG9hZCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBtYWRlSFRUUFM7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtYWRlSFRUUFM7CiAgICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7
CiAgICAgaWYgKCFtYWRlSFRUUFMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBibG9ja2VkQ29va2llczsKICAgICBkZWNvZGVyID4+IGJsb2NrZWRDb29raWVzOwogICAg
IGlmICghYmxvY2tlZENvb2tpZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5vdGlmaWNhdGlvbnM7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbm90aWZpY2F0aW9uczsKICAgICBkZWNvZGVyID4+IG5v
dGlmaWNhdGlvbnM7CiAgICAgaWYgKCFub3RpZmljYXRpb25zKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTQxLDI0ICsxNDEsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpTdW1tYXJ5OjplbmNvZGUoRW5jb2RlciYgZW4K
ICAgICBlbmNvZGVyIDw8IGhhc05vdGlmaWNhdGlvbnM7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0czo6U3VtbWFyeTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFN1bW1hcnk+Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBhdXRvIENvbnRlbnRSdWxlTGlzdFJlc3VsdHM6OlN1bW1hcnk6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFN1bW1hcnk+CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
YmxvY2tlZExvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBibG9ja2VkTG9hZDsKICAgICBk
ZWNvZGVyID4+IGJsb2NrZWRMb2FkOwogICAgIGlmICghYmxvY2tlZExvYWQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOwogICAgIGRlY29kZXIgPj4gbWFkZUhU
VFBTOwogICAgIGlmICghbWFkZUhUVFBTKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRDb29raWVzOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBibG9ja2VkQ29va2llczsK
ICAgICBpZiAoIWJsb2NrZWRDb29raWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGhhc05vdGlmaWNhdGlvbnM7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBoYXNOb3RpZmljYXRpb25zOwogICAgIGRlY29kZXIgPj4gaGFzTm90aWZpY2F0
aW9uczsKICAgICBpZiAoIWhhc05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFU
b0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAK
aW5kZXggNjQ4M2ExZjFiM2E5MWYyY2IxM2QzYTg4ZWEzZDVkYTE5ODJlYjRjMS4uYjA0YjUyMWQz
YWRlZDEzYWFkOWM3NTc4MjNiZDA1MjI5MTYwMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRTZXQm
IG5mYU5vZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRv
ci0+aW1wbCgpLT5tX2RmYU5vZGVJZDsKIH0KIAotT3B0aW9uYWw8REZBPiBORkFUb0RGQTo6Y29u
dmVydChORkEmJiBuZmEpCitzdGQ6Om9wdGlvbmFsPERGQT4gTkZBVG9ERkE6OmNvbnZlcnQoTkZB
JiYgbmZhKQogewogICAgIGF1dG8gc2VyaWFsaXplZE5GQSA9IFNlcmlhbGl6ZWRORkE6OnNlcmlh
bGl6ZShXVEZNb3ZlKG5mYSkpOwogICAgIGlmICghc2VyaWFsaXplZE5GQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCmluZGV4IDlmZDNhMWQzZDk5Njc1MDI5
NDZkYjdhNzEyY2MzYjA0MzMwZTZkNGEuLjJmNzJhYTAwM2Y4NzkyODllNjVjOGEwMzBlNjk3MWM2
MzdlZDQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05G
QVRvREZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEu
aApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgTkZBOwogLy8gTkZBVG9ERkEgcHJvdmlkZXMgYSB3
YXkgdG8gYnVpbGQgYSBERkEgY29ycmVzcG9uZGluZyB0byBhIE5GQS4KIGNsYXNzIE5GQVRvREZB
IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8REZBPiBjb252
ZXJ0KE5GQSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxERkE+
IGNvbnZlcnQoTkZBJiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRO
RkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5j
cHAKaW5kZXggNTlkY2RhNmI5MDI5MGRjMTNmMzFhYWRhMGM5ZDlhOTU4Zjk1MTdlZi4uMjgzN2Fj
ZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5ZGU2YzVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZSwgY29uc3QgVCYgY29udGFpbmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxT
ZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQorc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZh
KQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CiAgICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJT
ZXJpYWxpemVkTkZBIiwgZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9TZXJpYWxpemVkTkZBLmgKaW5kZXggN2U5OGIwMjU3NGViOTRlOTFmMjc0MjJhNzYyOTdk
MzVjYjQwNmUwNC4uYTk2OWI1NDM1ZGE4NzViMDk3YjA1ZDNhNzI4MzYzY2QxOGY5MWU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaApA
QCAtMzcsNyArMzcsNyBAQCBzdHJ1Y3QgTkZBOwogCiBjbGFzcyBTZXJpYWxpemVkTkZBIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gc2VyaWFsaXplKE5GQSYm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkTkZBPiBzZXJpYWxpemUoTkZB
JiYpOwogICAgIFNlcmlhbGl6ZWRORkEoU2VyaWFsaXplZE5GQSYmKSA9IGRlZmF1bHQ7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggNTlmZGNjYjUwNjM3M2FlZDQxODJk
YmFiNjFjZDdkODdhMjJjZWZjMi4uZDg3MjlkMzkwZDkwNzMwYTBlYjdkYjNhOGM5ZjE3MThjODZm
N2EzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgICAgICBmYWls
KFVSTEZpbHRlclBhcnNlcjo6QXRvbUNoYXJhY3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBhdG9t
UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4g
PSBzdGQ6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4o
Ym9vbCA9IHRydWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7
CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKaW5kZXggODJk
ZmJjZWRkYzI5ZThmYzZiYjIxNDhlOGY4MjQ3ZGZjNmQ3NWJmNS4uOTJjOTBmYmU0MTE0NGFhM2E5
OGU1ZGQwZWUxZGQyZDI0YzYyNzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgpCiAgICAgcGxhdGZvcm1SZWdp
c3RlckFsZ29yaXRobXMoKTsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1l
KQorc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaAppbmRleCA2Mjg2MDk5NDBk
ZGQyNWIxYzBmNjE3OGEyOTMyMDg0ZjRmYzMwZGQ4Li40OWQ3NWIyYWZlZWEyYjk5NTE3MzVjZmI4
ODZkYWQzOGUxN2IyMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBz
aW5nbGV0b24oKTsKIAotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyPiBpZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBuYW1l
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bT4gY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Kc29u
V2ViS2V5LmgKaW5kZXggNWFlZDM5YzU1NjFhNzg2M2M4MGRlMzExODE0ZjhhNzhkYmYxODBjZS4u
ZWVjMDBkNzQ3ZTZiMDcyMTZkMDliMzhkMDcxMzk0NmI2OTcxN2RjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vSnNvbldlYktleS5oCkBAIC0zNywxMSArMzcsMTEgQEAgc3RydWN0IEpzb25XZWJLZXkgewog
ICAgIFN0cmluZyBrdHk7CiAgICAgU3RyaW5nIHVzZTsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIg
bWVyZ2luZyBrZXlfb3BzIGFuZCB1c2FnZXMuCi0gICAgT3B0aW9uYWw8VmVjdG9yPENyeXB0b0tl
eVVzYWdlPj4ga2V5X29wczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDcnlwdG9LZXlVc2Fn
ZT4+IGtleV9vcHM7CiAgICAgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzOwogICAgIFN0cmlu
ZyBhbGc7CiAKLSAgICBPcHRpb25hbDxib29sPiBleHQ7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBleHQ7CiAKICAgICBTdHJpbmcgY3J2OwogICAgIFN0cmluZyB4OwpAQCAtNTQsNyArNTQsNyBA
QCBzdHJ1Y3QgSnNvbldlYktleSB7CiAgICAgU3RyaW5nIGRwOwogICAgIFN0cmluZyBkcTsKICAg
ICBTdHJpbmcgcWk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFJzYU90aGVyUHJpbWVzSW5mbz4+IG90
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSc2FPdGhlclByaW1lc0luZm8+PiBvdGg7CiAg
ICAgU3RyaW5nIGs7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU2Vy
aWFsaXplZENyeXB0b0tleVdyYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcC5oCmluZGV4IGQ1ODMxYmQxZjBmMzc4ZjI2ZGI0OWI4NDg3NzM5ZGY0OGVl
YThmYjcuLmYxY2YwMjA1ODZhZWE0OGU2ZGJiYzZkNTIzMGQyMmI0YzNlOGM2NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9mIHByb3RlY3Rpb24gaXMgbm90IHJl
cXVpcmVkIGJ5IHRoZSBzcGVjIGFzIG9mIDExIERlY2VtYmVyIDIwMTQ6CiAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJLyNzZWN1cml0eS1kZXZlbG9wZXJzCiAKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3Rlcktl
eSgpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1
bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRGVmYXVs
dFdlYkNyeXB0b01hc3RlcktleSgpOwogCiBXRUJDT1JFX0VYUE9SVCBib29sIHdyYXBTZXJpYWxp
emVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCBhMjIyY2QwM2JjNDk4OGRlMWNmNzliOWFmMjAy
YzdhNGU4YWM4ZjIzLi43NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtNDQyLDMyICs0NDIsMzIg
QEAgc3RhdGljIHZvaWQgbm9ybWFsaXplSnNvbldlYktleShKc29uV2ViS2V5JiB3ZWJLZXkpCiAg
ICAgd2ViS2V5LnVzYWdlcyA9IHdlYktleS5rZXlfb3BzID8gdG9DcnlwdG9LZXlVc2FnZUJpdG1h
cCh3ZWJLZXkua2V5X29wcy52YWx1ZSgpKSA6IDA7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHJldHVy
bnMgYW4gT3B0aW9uYWw8S2V5RGF0YT4gYW5kIHRha2VzIGEgcHJvbWlzZSwgcmF0aGVyIHRoYW4g
cmV0dXJuaW5nIGFuCisvLyBGSVhNRTogVGhpcyByZXR1cm5zIGFuIHN0ZDo6b3B0aW9uYWw8S2V5
RGF0YT4gYW5kIHRha2VzIGEgcHJvbWlzZSwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuCiAvLyBF
eGNlcHRpb25PcjxLZXlEYXRhPiBhbmQgbGV0dGluZyB0aGUgY2FsbGVyIGhhbmRsZSB0aGUgcHJv
bWlzZSwgdG8gd29yayBhcm91bmQgYW4gaXNzdWUgd2hlcmUKIC8vIFZhcmlhbnQgdHlwZXMgKHdo
aWNoIEtleURhdGEgaXMpIGluIEV4Y2VwdGlvbk9yPD4gY2F1c2UgY29tcGlsZSBpc3N1ZXMgb24g
c29tZSBwbGF0Zm9ybXMuIFRoaXMKIC8vIHNob3VsZCBiZSByZXNvbHZlZCBieSBhZG9wdGluZyBh
IHN0YW5kYXJkcyBjb21wbGlhbnQgc3RkOjp2YXJpYW50IChzZWUgaHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTc1NTgzKQotc3RhdGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlw
dG86OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzo6S2V5RGF0YVZhcmlhbnQmJiBrZXlE
YXRhVmFyaWFudCwgUmVmPERlZmVycmVkUHJvbWlzZT4mIHByb21pc2UpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0
LCBTdWJ0bGVDcnlwdG86OktleURhdGFWYXJpYW50JiYga2V5RGF0YVZhcmlhbnQsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiBwcm9taXNlKQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2Fz
ZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6U3BraToKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6
S2V5Rm9ybWF0OjpQa2NzODoKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpSYXc6
CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGtleURhdGFWYXJpYW50LAotICAgICAgICAg
ICAgWyZwcm9taXNlXSAoSnNvbldlYktleSYpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKKyAgICAg
ICAgICAgIFsmcHJvbWlzZV0gKEpzb25XZWJLZXkmKSAtPiBzdGQ6Om9wdGlvbmFsPEtleURhdGE+
IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNvdXJjZSkgLT4gT3B0aW9uYWw8S2V5RGF0
YT4geworICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNvdXJjZSkgLT4gc3RkOjpvcHRpb25h
bDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEtleURhdGEgeyBWZWN0b3IgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyU291cmNlLT5kYXRhKCkpLCBidWZmZXJT
b3VyY2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAg
Y2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOgogICAgICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihrZXlEYXRhVmFyaWFudCwKLSAgICAgICAgICAgIFtdIChKc29uV2ViS2V5JiB3ZWJL
ZXkpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKKyAgICAgICAgICAgIFtdIChKc29uV2ViS2V5JiB3
ZWJLZXkpIC0+IHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4gewogICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZUpzb25XZWJLZXkod2ViS2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gS2V5RGF0YSB7
IHdlYktleSB9OwogICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmcHJvbWlzZV0gKGF1dG8m
KSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CisgICAgICAgICAgICBbJnByb21pc2VdIChhdXRvJikg
LT4gc3RkOjpvcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAppbmRleCA0ZTUyMWQ2MjU3
NGZiZGYxMzZjOTk3OTU1ZDVhNjgzNmNiOGU3NTU4Li5kZDJkOTBlZWM4MGJhZjQyZWEyY2FkZmYz
NGIyMjUwMmE0NGExZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobUVDREg6OmRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYgcGFyYW1ldGVycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byB1
bmlmaWVkQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVfdCBsZW5ndGgpIG11dGFibGUgeworICAgIGF1dG8g
dW5pZmllZENhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVfdCBsZW5ndGgpIG11dGFibGUgewogICAg
ICAgICBpZiAoIWRlcml2ZWRLZXkpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9w
ZXJhdGlvbkVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaAppbmRleCAxNGUz
NzI3YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2NDRkNjVhLi45M2ExNWEyZGEzNTFkY2U3Mjc0
MzM4MTk3ZDI2NjMxMDU4NWY3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAKICAgICAv
LyBPcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGlyZWN0bHkuCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNv
bnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0
cyhjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IENyeXB0b0tleUVDJik7CiAKIHByaXZhdGU6CiAg
ICAgQ3J5cHRvQWxnb3JpdGhtRUNESCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQu
Y3BwCmluZGV4IGYyZjg2NmYyZTZjYzg4ZTgzMzU4YTczOTU5MDYwYjRlZGMwMzg3NzUuLjg0NGFl
YWNkN2YxMzg5ZDM3YmFhZmY2MDZkZjA4YWVhZTcyYjRhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0Ny
eXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYm
IHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0KQogewogICAgIC8vIERldGVybWluZSB0
aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3Jp
dGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgp
OwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIHJldHVybiBv
dXRwdXQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5
cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBo
ZXJUZXh0KQogewogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdp
dmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29y
aXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAK
aW5kZXggNzJjMWVmNDc5ZGY5MjJjYzc4OTI1OTQ3MmMwZDgyZTY4MzM0ZDI1OS4uMjJjMTI5OTY1
YWFkY2QwMmM2N2I4YzhjZWExYTA4MmJjNGE4YTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5cHQu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBpcyBh
IGhlbHBlciBmdW5jdGlvbiB0aGF0IHJlc2V0cyB0aGUgY2lwaGVyIG9iamVjdCwgc2V0cyB0aGUg
cHJvdmlkZWQgY291bnRlciBkYXRhLAogLy8gYW5kIGV4ZWN1dGVzIHRoZSBlbmNyeXB0IG9yIGRl
Y3J5cHQgb3BlcmF0aW9uLCByZXRyaWV2aW5nIGFuZCByZXR1cm5pbmcgdGhlIG91dHB1dCBkYXRh
Lgotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdD
cnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXJhdGlvbiwgZ2NyeV9jaXBoZXJfaGRfdCBoYW5kbGUs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgY29uc3QgdWludDhfdCogZGF0YSwgY29u
c3Qgc2l6ZV90IHNpemUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNh
bGxPcGVyYXRpb24oUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyYXRpb24sIGdjcnlf
Y2lwaGVyX2hkX3QgaGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGNvbnN0IHNpemVfdCBzaXplKQogewogICAgIGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfY2lwaGVyX3Jlc2V0KGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXIK
ICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcmF0aW9uLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVy
LCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFM
OjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVu
Z3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0VGV4dCkKIHsKICAgICBjb25zdGV4cHIg
c2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6
OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdD
cnlwdC5jcHAKaW5kZXggNGE1MWQxZDcyM2Q5MmM4MTZkMjcyMDM0NjA0ZDE5ZTIxNDYwYWY3Ny4u
N2RkMDA1MDhjYmIwODNjZmUwMTM3MmYwZWIxYzNjOGIyYmM1YTcwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19H
Q01HQ3J5cHQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERh
dGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCiB7CiAg
ICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUu
CiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6
ZShrZXkuc2l6ZSgpICogOCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRp
b25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogewogICAgIC8vIERldGVybWluZSB0aGUgQUVT
IGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0g
UEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNf
S1dHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1BRVNfS1dHQ3J5cHQuY3BwCmluZGV4IGI2MjJiNGU5Zjk4NjQ3MDA2NDUwNDIyMDA0ZDk4MGRm
ZWJlNDRmNWUuLjZhZjJmNzFjMDZlNjk1NTNlNGFiNjk2NTFmZWE0YWQzNTJiMWViNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUFFU19LV0dDcnlwdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRXcmFwS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAg
ICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4K
ICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXpl
KGtleS5zaXplKCkgKiA4KTsKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gZ2NyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGht
IGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlw
dDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0
LmNwcAppbmRleCAwNTRlYzgyNTJiMTI5YzhkMTAyNmIyYzk3NGQ0MDY3MmE4NTYzNzBhLi40OThl
NjIxNjgzM2I1NGUyZGZlZjBhOTYzMzU0ZWIzZWU3YzEwZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNl
eHAsIGdjcnlfc2V4cF90IHB1YmxpY0tleVNleHAsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4
cF90IGJhc2VLZXlTZXhwLCBnY3J5X3NleHBfdCBwdWJsaWNLZXlTZXhwLCBzaXplX3Qga2V5U2l6
ZUluQnl0ZXMpCiB7CiAgICAgLy8gRmlyc3QsIHJldHJpZXZlIHByaXZhdGUga2V5IGRhdGEsIHdo
aWNoIGlzIHJvdWdobHkgb2YgdGhlIGZvbGxvd2luZyBmb3JtOgogICAgIC8vIChwcml2YXRlLWtl
eQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgcmV0dXJu
IG1waVplcm9QcmVmaXhlZERhdGEoeE1QSSwga2V5U2l6ZUluQnl0ZXMpOwogfQogCi1PcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0
cyhjb25zdCBDcnlwdG9LZXlFQyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tl
eSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpw
bGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0
b0tleUVDJiBwdWJsaWNLZXkpCiB7CiAgICAgcmV0dXJuIGdjcnlwdERlcml2ZShiYXNlS2V5LnBs
YXRmb3JtS2V5KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtleSgpLCAoYmFzZUtleS5rZXlTaXplSW5C
aXRzKCkgKyA3KSAvIDgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAppbmRleCAyZGJiYTA5NmJm
MTY4Mzc4YTE2NjExNmIyNDg0ODBhNDE0ODdjODA1Li44ZjU4OWZjNmMzNWJmYWYxNjBiZTBiYTEw
NzNiMGIxZTc2YmU5MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApAQCAtNjIsNyArNjIsNyBA
QCBzdGF0aWMgYm9vbCBleHRyYWN0RUNEU0FTaWduYXR1cmVJbnRlZ2VyKFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBnY3J5X3NleHBfdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAg
IC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGht
IG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKQEAgLTEx
OCw3ICsxMTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWdu
KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHJldHVybiBzaWduYXR1
cmU7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRl
bnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRl
cykKIHsKICAgICAvLyBCYWlsIGlmIHRoZSBzaWduYXR1cmUgc2l6ZSBpc24ndCBkb3VibGUgdGhl
IGtleSBzaXplIChpLmUuIGNvbmNhdGVuYXRlZCByIGFuZCBzIGNvbXBvbmVudHMpLgogICAgIGlm
IChzaWduYXR1cmUuc2l6ZSgpICE9IGtleVNpemVJbkJ5dGVzICogMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQu
Y3BwCmluZGV4IDFiMTYyYjcyN2U5Y2I0NDRkYmEwNWE0YjM1YThiZTk0MDQ0OWZkOWUuLmYyZTYx
NzEwYTIwZjkzMzNjMzllNjg0YmVjOTEwNTJmOTUwNmNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBXZSBzaG91bGQgc3dp
dGNoIHRvIHRoZSBsaWJnY3J5cHQtcHJvdmlkZWQgaW1wbGVtZW50YXRpb24gb25jZSBpdCdzIGF2
YWlsYWJsZS4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE1
MzYKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbmZv
LCBzaXplX3QgbGVuZ3RoSW5CeXRlcywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHByb3ZpZGUgSEtERiBzdXBwb3J0LCBz
byB3ZSBoYXZlIHRvIGltcGxlbWVudAogICAgIC8vIHRoZSBmdW5jdGlvbmFsaXR5IG91cnNlbHZl
cyBhcyBzcGVjaWZpZWQgaW4gUkZDNTg2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDMwYTMy
ODkyNTY2NWIxZjY5YzcyZTVjYmIzOTZkZmM0NjAzZjY2ZjguLmE2OTAzNDBmMGJiOGRlYmMzZTg4
ZGEwZWI1NDkyZDgxNjE0ZWM1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgaW50IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVy
ZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9
IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oIiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggOWIxMWJhYWMyZmE2Njc4YjQ5
Y2FlMzExNTIyMDY1NzBlN2IyYzJlOC4uNjZlZGZiZDgxOTk4ZjE3ZTBjMjg1NzhiMWQ0ZWViMzVi
ZjcxYzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRhLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNhbHREYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVu
dGlmaWVyLCBzaXplX3QgaXRlcmF0aW9ucywgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleURhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdERhdGEsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaElkZW50aWZpZXIsIHNpemVfdCBpdGVyYXRpb25zLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIC8vIERldGVybWluZSB0aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3
aWxsIGJlIHVzZWQgZm9yIGRlcml2YXRpb24uCiAgICAgYXV0byBoYXNoQWxnb3JpdGhtID0gZGln
ZXN0QWxnb3JpdGhtKGhhc2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzVHQ3J5cHQuY3BwCmluZGV4IDA2ZTI4ZTc0MGUyZDRmNDQyMjY4Y2ZjMTg3NzAyYmYwNzk4
NjMzZmMuLjBlNGUyZGU3MTlmMjc1OWQ1NWY1Yzk1ZjM1ODg0NWU2Mjg5M2E4MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBwbGFpblRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewog
ICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBgZGF0YWAgcy1leHByZXNzaW9u
IHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhw
X3Q+IGRhdGFTZXhwOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcgog
ICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9z
ZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90
IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICAvLyBF
bWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBgZW5jLXZhbGAgcy1leHByZXNzaW9uIHVz
aW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IGVuY1ZhbFNleHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CmluZGV4IDJjMWEzMWRmMzdiMzBlNTg3Y2NiMmVkZDgyMzhmNjY3NWY3YTY5YmQuLmJlNmFhODZm
ODA3OTM1OTRmODExOTZiNDQ0OGE2ZTEwYTEyNGRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXpl
SW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2ln
bihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlT
aXplSW5CeXRlcykKIHsKICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUg
c3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YUhhc2g7CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAg
ICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEoc1NleHAsIGtleVNpemVJbkJ5dGVzKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhw
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIpCiB7CiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNp
ZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGFIYXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAppbmRleCBkNzRlNzkyNGVmMWEwYzYz
NDgzZDUyNmFlOWE5MGM2MjUyYWViOTMxLi44N2M1NmMwNjczMTU2OTAzZmE0NTA3NDI5YmUwNjA0
ZmQ2MThlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcApAQCAtMzUsNyArMzUsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGht
SWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBs
YWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIHNpemVfdCBrZXlT
aXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
LCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9y
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6ZV90IGtleVNpemVJbkJ5dGVz
KQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBkYXRhIHMtZXhwcmVz
c2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9w
ZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgpLgpAQCAtNzMsNyArNzMsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaEFsZwogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhw
LCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRl
bnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJl
bFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIGdjcnlfc2V4cF90IGtleVNleHAsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgbGFiZWxWZWN0b3IsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBl
bmMtdmFsIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFi
ZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTU0dDcnlwdC5jcHAKaW5kZXggN2RlOWVlZDIwM2Y4ZWFkOWY3NDJhYTgwZjdjNTU4YTFm
MGRhNzA2ZC4uZmUxNjE4YTc0NTc0M2JiNTBlOTg4Yjg5ZjczMmU5NzhmZTdlNGMxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQV9QU1NHQ3J5cHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3Ro
LCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlm
aWVyLCBzaXplX3Qgc2FsdExlbmd0aCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8v
IFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9u
IHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKQEAgLTg3LDcg
Kzg3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICByZXR1cm4gbXBpWmVyb1ByZWZp
eGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8Ym9v
bD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQogewogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlv
biB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggMDNhMGI4OTM3MTBlMWI0YmIxYWM0NDA2
YTZiNzdmMWE5MmI0MTg5MS4uMzNkZGRiZDgyYzQzMGJlZTIxMWExNTk2NGM1NmNhMzA3M2YxNGQ0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dD
cnlwdC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1
cHBvcnRlZEN1cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIGN1cnZlID09IE5hbWVk
Q3VydmU6OlAyNTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2ZTo6UDM4NCB8fCBjdXJ2ZSA9PSBOYW1l
ZEN1cnZlOjpQNTIxOwogfQogCi1PcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6
cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
LCBOYW1lZEN1cnZlIGN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMpCitzdGQ6Om9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0
Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5h
bWVkQ3VydmUgY3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVz
YWdlcykKIHsKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBnZW5rZXlTZXhw
OwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwg
bnVsbHB0ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1lKGN1cnZlKSk7CkBA
IC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmll
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGtleUlkZW50aWZpZXIKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVG
b3JJZGVudGlmaWVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaWRlbnRpZmllcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1cnZlPiBjdXJ2ZUZvcklkZW50aWZpZXIo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQogewogICAgIGF1dG8qIGRhdGEgPSBp
ZGVudGlmaWVyLmRhdGEoKTsKICAgICBhdXRvIHNpemUgPSBpZGVudGlmaWVyLnNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNw
cAppbmRleCA1YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUxNDUyNmYzYzQ4OWI0NWUwLi4wMzMxNTgw
N2RiN2Y3N2M3OTI0NTRjMjdmNzQxNTUwZDE2YWRlNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0xNzAsNyArMTcw
LDcgQEAgc2l6ZV90IENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygpIGNvbnN0CiB9CiAKIC8v
IENvbnZlcnQgdGhlIGV4cG9uZW50IHZlY3RvciB0byBhIDMyLWJpdCB2YWx1ZSwgaWYgcG9zc2li
bGUuCi1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9yVG9VSW50MzIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBleHBvbmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25l
bnQpCiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsKICAgICAgICAgaWYgKHN0ZDo6
YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgpIC0gNCwgW10odWludDhfdCBl
bGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRp
YyBib29sIHN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZpZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8
dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2ko
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICAvLyBE
ZWNvZGUgdGhlIGBTdWJqZWN0UHVibGljS2V5SW5mb2Agc3RydWN0dXJlIHVzaW5nIHRoZSBwcm92
aWRlZCBrZXkgZGF0YS4KICAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgc3BraTsKQEAgLTMwOSw3
ICszMDksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2ko
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZv
cm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVz
YWdlcykpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBr
Y3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0
b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4g
aGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIERlY29kZSB0aGUgYFByaXZhdGVLZXlJ
bmZvYCBzdHJ1Y3R1cmUgdXNpbmcgdGhlIHByb3ZpZGVkIGtleSBkYXRhLgogICAgIFBBTDo6VEFT
TjE6OlN0cnVjdHVyZSBwa2NzODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
R0NyeXB0VXRpbGl0aWVzLmNwcAppbmRleCA4MzAwZTcwNWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0
YTgyZTg4NzhhLi5iYzE1ZmVlZjU3ZWMzYTM4MzVmNjhhYzVkOTRkNjgyM2VmMmZlYjdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8Y29uc3Qg
Y2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzd2l0Y2ggKGlkZW50aWZp
ZXIpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNTAs
NyArNTAsNyBAQCBPcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50
PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3N0
ZDo6b3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxp
bnQ+IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBkaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgc3dpdGNoIChp
ZGVudGlmaWVyKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToK
QEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8aW50PiBkaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0KIH0KIAotT3B0aW9uYWw8UEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN3aXRjaCAoaWRlbnRpZmllcikgewog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CkBAIC0xMDQsNyArMTA0
LDcgQEAgT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0Rp
Z2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0KICAgICB9CiB9CiAKLU9wdGlvbmFsPHNpemVf
dD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiB7CiAgICAgLy8gUmV0cmlldmUgdGhlIE1Q
SSBsZW5ndGggZm9yIHRoZSB1bnNpZ25lZCBmb3JtYXQuCiAgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSAwOwpAQCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlf
bXBpX3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIGRhdGFMZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHNp
emVfdD4gbXBpTGVuZ3RoKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKK3N0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewogICAgIC8vIFJldHJpZXZl
IHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRh
KQogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhw
X250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKQEAgLTEyNyw3ICsxMjcs
NyBAQCBPcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChnY3J5X3NleHBfdCBwYXJhbVNleHApCiAg
ICAgcmV0dXJuIG1waUxlbmd0aChwYXJhbU1QSSk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gbXBpRGF0YShnY3J5X21waV90IHBhcmFtTVBJKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKIHsKICAgICAvLyBSZXRyaWV2
ZSB0aGUgTVBJIGxlbmd0aC4KICAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7
CkBAIC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdj
cnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEksIHNp
emVfdCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVy
b1ByZWZpeGVkRGF0YShnY3J5X21waV90IHBhcmFtTVBJLCBzaXplX3QgdGFyZ2V0TGVuZ3RoKQog
ewogICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgbGVuZ3RoLiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQg
bGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRhcmdldCBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBt
cGlMZW5ndGgocGFyYW1NUEkpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90IHBhcmFtTVBJLCBzaXplX3Qg
dGFyZ2V0CiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKIHsKICAgICAvLyBSZXRyaWV2
ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0
YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4
cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CkBAIC0xNzUsNyArMTc1
LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFt
U2V4cCkKICAgICByZXR1cm4gbXBpRGF0YShwYXJhbU1QSSk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNp
emVfdCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVy
b1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnZXRMZW5ndGgp
CiB7CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVz
c2lvbjogKG5hbWUgbXBpLWRhdGEpCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90
PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VT
RykpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVy
b1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnCiAgICAgcmV0
dXJuIG1waVplcm9QcmVmaXhlZERhdGEocGFyYW1NUEksIHRhcmdldExlbmd0aCk7CiB9CiAKLU9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5X21waV90IG1waSkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3QgbXBp
KQogewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEobXBpKTsKICAgICBpZiAoIWRhdGEpCkBAIC0x
OTcsNyArMTk3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdj
cnlfbXBpX3QgbXBpKQogICAgIHJldHVybiBkYXRhOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQog
ewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEocGFyYW1TZXhwKTsKICAgICBpZiAoIWRhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaAppbmRleCBk
ODRkNDUyMGQ0MjUyMTE1OWU1N2IyOWUwM2JkMGFjZGUzNGIyYWVmLi5mMGE0MTM0NTZhOTQ0NTk5
NThmOWE3ZjAyNTQ1MzQ0YjVmYjZjM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKQEAgLTY3LDE5ICs2NywxOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgbWF0Y2hlcyhjb25zdCB2b2lkKiBsaHMsIHNpemVfdCBzaXplLCBjb25zdCBzdGQ6OmFy
cmF5PHVpbnQ4XwogCiB9IC8vIG5hbWVzcGFjZSBDcnlwdG9Db25zdGFudHMKIAotT3B0aW9uYWw8
Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIp
OwotCi1PcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cik7Ci1PcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyKTsKLU9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9E
aWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7Ci0KLU9wdGlvbmFsPHNp
emVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QpOwotT3B0aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgo
Z2NyeV9zZXhwX3QpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBp
X3QpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlf
bXBpX3QsIHNpemVfdCB0YXJnZXRMZW5ndGgpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBt
cGlEYXRhKGdjcnlfc2V4cF90KTsKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1By
ZWZpeGVkRGF0YShnY3J5X3NleHBfdCwgc2l6ZV90IHRhcmdldExlbmd0aCk7Ci1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9tcGlfdCk7Ci1PcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QpOworc3RkOjpvcHRpb25hbDxj
b25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7
CisKK3N0ZDo6b3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIpOworc3RkOjpvcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyKTsKK3N0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsK
Kworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChnY3J5X21waV90KTsKK3N0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QpOworc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90LCBzaXplX3QgdGFyZ2V0TGVu
Z3RoKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90
KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdj
cnlfc2V4cF90LCBzaXplX3QgdGFyZ2V0TGVuZ3RoKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3QpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L1NlcmlhbGl6
ZWRDcnlwdG9LZXlXcmFwR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
U2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCmluZGV4IDI1MGQyZjIzNWNkYTJkNDRk
MWQ3NDdkNGYzMjhkZTJmYzI3NmRiYjUuLjRlNzYwYjg4NDUzM2RiNjg3NGZkY2M4OTc3YzUzMGU5
MzgwMzQxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZh
dWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBk
ZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlFQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlFQy5jcHAKaW5kZXggM2RjNThmNTM0Nzc1NDY3ODM4YTY2YmE1ZmM0OGRkY2NiNjY2ZTQ4NC4u
ZDM2ZDM0MGY3MGE4ZjRhMTdmZjVmNjE5Y2ViMWQ5ZDg0NWNhMmEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMg
Y29uc3QgQVNDSUlMaXRlcmFsIFAyNTYgeyAiUC0yNTYiX3MgfTsKIHN0YXRpYyBjb25zdCBBU0NJ
SUxpdGVyYWwgUDM4NCB7ICJQLTM4NCJfcyB9Owogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBQ
NTIxIHsgIlAtNTIxIl9zIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRD
dXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0cmluZyYgY3VydmUpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0cmluZyYg
Y3VydmUpCiB7CiAgICAgaWYgKGN1cnZlID09IFAyNTYpCiAgICAgICAgIHJldHVybiBDcnlwdG9L
ZXlFQzo6TmFtZWRDdXJ2ZTo6UDI1NjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleUVDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlFQy5oCmluZGV4IDc3N2RmZDNhODVjNzRiMmJkZWRkZjU2Njk1OTZkNTVjNmQwYzkzMGUuLmI5
NjA2MDU5YzhhNjU2MTFiNmViNDRjOWQ4MTkzZGVlMWYwZmY0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAg
IEtleUFsZ29yaXRobSBhbGdvcml0aG0oKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyBib29s
IHBsYXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PENyeXB0b0tleVBhaXI+IHBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBwbGF0Zm9ybUdlbmVy
YXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9L
ZXlFQz4gcGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRD
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5RUM+IHBsYXRmb3Jt
SW1wb3J0SldLUHVibGljKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZl
Y3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUVDPiBw
bGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRD
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgZCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKaW5kZXggOGQwYmZkODFi
ZDQ1NDRjOGVlZjc3ZTk0NTA3Zjk5MmYwMjVmMDFkYy4uMDE4M2MxZGQ0ODdhZjAxMGU1ZTUwOWQy
MjYwZDY1MjI1MTk1ZDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMv
Q3J5cHRvS2V5UlNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlSU0EuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+
IGhhc2gsIEpzb25XZWJLZXkmJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgc3RkOjpvcHRpb25h
bDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBKc29uV2ViS2V5JiYga2V5RGF0YSwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIGlm
IChrZXlEYXRhLmt0eSAhPSAiUlNBIikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCmluZGV4IGVlOTM2ZWFhYTdiNTk5NjFl
ZmYxY2E5NmIxZmQyNzA1YmU2ZWYwMjIuLjBiYjBhYWU3MmIxYmQ3YWQ0NTdiMDI5NDYwN2VmY2Fm
MjIwMzc0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eVJTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCkBA
IC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5UGFpciYmKT47CiAgICAgdXNpbmcgVm9pZENhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHN0YXRpYyB2b2lkIGdlbmVyYXRlUGFpcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IGJvb2wgaGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBwdWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleVJTQT4g
aW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXApOwotICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBv
cnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGlt
cG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+
IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOworICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBpbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgUmVmUHRyPENyeXB0
b0tleVJTQT4gaW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogCiAgICAgUGxhdGZvcm1S
U0FLZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtS2V5LmdldCgpOyB9
CiAgICAgSnNvbldlYktleSBleHBvcnRKd2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCmluZGV4IGVlODRhZTk3
MmU3YTUyYzVhMmFhYzU3MjI0ODlmMDFmODMzMjg0ODIuLmE3MjA2MGUzZmNlZThlZTk1MTBmZTJh
ZDQ2ZDE3ZjlkZTFlMThmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
RUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiBiYXNlS2V5LCBjb25z
dCBDcnlwdG9LZXlFQyYgcHVibGljS2V5KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlF
QyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKIHsKLSAgICBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAgIFZlY3Rvcjx1
aW50OF90PiBkZXJpdmVkS2V5KGJhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCiAgICAgc2l6ZV90
IHNpemUgPSBkZXJpdmVkS2V5LnNpemUoKTsKICAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNo
YXJlZFNlY3JldChiYXNlS2V5LnBsYXRmb3JtS2V5KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtleSgp
LCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKaW5kZXggMzAzMDc3MjAwZDc1N2M3
OGJhMzZmZTYyOTdiY2RlZjNkYmNlMzUzOS4uOTgwNzViNTY4MTYzYjI1MjdhMWFlZjI4MWIyNzQ5
YjYzMWI2MjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhNQUNNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1B
Q0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2gg
KGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzE6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFs
Z29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RBbGdvcml0
aG0uaAppbmRleCA4ZDE3ODE3ZTc0MThlOTUxMGU4ZTAzODdmYTk4ZTdkMjVjNTZlMjVlLi44NDhk
ODk0MTZhMDM2MWMxYWRkMTY1YjkyNzAyNTZjNWVlNmU3NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8UEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKaW5kZXggZjU0ZGI3N2QyOTM2MjAwNjk2
MDRjM2UyMTNjODc3NjkxMGQzN2ViYS4uODlmYjU0MzlhZWQ0NGE3YzRjODdlYzljMWE1NzEwMjRi
ZGU5NmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlF
Q01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5j
cHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRl
ZEN1cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIGN1cnZlID09IE5hbWVkQ3VydmU6
OlAyNTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2ZTo6UDM4NDsKIH0KIAotT3B0aW9uYWw8Q3J5cHRv
S2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQ
YWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBnZXRLZXlT
aXplRnJvbU5hbWVkQ3VydmUoY3VydmUpOwogICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
S2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFj
LmNwcAppbmRleCA2ZjFhODQyMjJhYjJmYjEzZmI0OGY0YmM1NTM2ZDUzYTBiMTQ4OWVkLi45MTY2
Y2E1NTA4NjZkMzkyM2IxZWVkNzY3NzlkYjE1OGVjMGE0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9p
ZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFs
Z29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICB9KTsKIH0KIAotUmVmUHRyPENyeXB0b0tleVJTQT4g
Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVp
bnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gVGhl
IGN1cnJlbnQgU2VjTGlicmFyeSBjYW5ub3QgaW1wb3J0IGEgU1BLSSBmb3JtYXQgYmluYXJ5LiBI
ZW5jZSwgd2UgbmVlZCB0byBzdHJpcCBvdXQgdGhlIFNQS0kgaGVhZGVyLgogICAgIC8vIFRoaXMg
aGFjayBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yOTUyMzI4Nj4gaXMgcmVz
b2x2ZWQuCkBAIC0zNTQsNyArMzU0LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25zdAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3Vs
dCk7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNo
LCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gVGhlIGN1cnJlbnQgU2VjTGlicmFyeSBjYW5u
b3QgaW1wb3J0IGEgUEtDUzggZm9ybWF0IGJpbmFyeS4gSGVuY2UsIHdlIG5lZWQgdG8gc3RyaXAg
b3V0IHRoZSBQS0NTOCBoZWFkZXIuCiAgICAgLy8gVGhpcyBoYWNrIGNhbiBiZSByZW1vdmVkIHdo
ZW4gPHJkYXI6Ly9wcm9ibGVtLzI5NTIzMjg2PiBpcyByZXNvbHZlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCmlu
ZGV4IDg5OTMzODg4YjIyZDlhMzk4ODRmOTFhZTgyZWIzMzg5YjlhZDExYWMuLjg2Y2U5ZmE2Y2Y1
N2YwYzEwM2Q1NWZmNTdkZGEyNjNhNDRmZjMxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQpAQCAtNzUsNyAr
NzUsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIG1hc3RlcktleUFjY291bnROYW1lRm9yQ3VycmVudEFw
cGxpY2F0aW9uKCkKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb20u
YXBwbGUuV2ViS2l0LldlYkNyeXB0by5tYXN0ZXIrJUAiLCBidW5kbGVJZGVudGlmaWVyXTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3JlYXRlQW5kU3RvcmVNYXN0ZXJL
ZXkoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVBbmRTdG9y
ZU1hc3RlcktleSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NDcmVkZW50aWFscykpOwogCkBAIC0xNTAsNyArMTUw
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIG1hc3Rl
cktleURhdGE7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0
ZXJLZXkoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVy
S2V5KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxzKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5KCkKICAgICByZXR1
cm4gYmFzZTY0RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5
dGVQdHIoa2V5RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOwog
fQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXko
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJL
ZXkoKQogewogICAgIGlmIChhdXRvIG1hc3RlcktleSA9IGZpbmRNYXN0ZXJLZXkoKSkgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtYXN0ZXJLZXktPnNpemUoKSA9PSBtYXN0ZXJLZXlTaXplSW5C
eXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAKaW5kZXggYzllYzk5YzlhODliMWFh
OTlkNzA0MGVkZmQxZWYxZjIxMzZhODA1MC4uYzI3MWMwNjdmMzU2MjI4ZWZmZGVkYThmOTM1MWUz
MTZmMTg4ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcApAQCAtNDksNyArNDks
NyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGhtKHNpemVfdCBrZXlTaXpl
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBw
bGFpblRleHQpCiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3Jp
dGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAtODEsNyArODEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBj
cnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICBjb25z
dCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAg
aWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAKaW5kZXggYWI2ODdm
NmNjZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZkMTc4Njc5NC4uOTI1YWIyZjY0NjA4MDM5NTdlOGQz
ZTRiNjM2OWVmOWM3ZDA0N2NhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGhtKHNpemVf
dCBrZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWlu
dDhfdD4mJiBwbGFpblRleHQpCiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0g
YWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAtODMsNyAr
ODMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsK
ICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUo
KSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RST3BlblNTTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RST3BlblNTTC5jcHAKaW5k
ZXggOTMxNDYyMzk2ZGQxYzIzYWEyNmY5NjAyNzY1NWI5MmE5MGUyOThhZC4uY2EyZjliNTU5MDMz
YzcyODVkZDc4Y2JkMGJmNjUxMTgwZTRkMTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NM
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3Jp
dGhtKHNpemVfdCBrZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291
bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0KGludCBvcGVyYXRpb24sIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVf
dCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0VGV4dCkKIHsKICAg
ICBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGNvbnN0IEVWUF9DSVBIRVIq
IGFsZ29yaXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01P
cGVuU1NMLmNwcAppbmRleCAwNWY2ZWM5NTRlZGM2MzdhYjJhNzljNmYxNWQzMjA3OWMzNmE4OTU2
Li4wMTE3NTI0YzgzMjM2NjRlYzhlMjE3YTQyOWFlYzFkNDBmYjJhNjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNT
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
QUVTX0dDTU9wZW5TU0wuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBjb25zdCBFVlBfQ0lQ
SEVSKiBhZXNBbGdvcml0aG0oc2l6ZV90IGtleVNpemUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25h
bERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0aCkKIHsK
ICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUo
KSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogICAgIHJldHVybiBjaXBoZXJUZXh0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0YWdM
ZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlw
dChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0aCkKIHsKICAgICBjb25zdCBFVlBfQ0lQ
SEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdv
cml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCmluZGV4IGExN2MyOWNhNGQyNjJjYmU4
YTZjM2VmNjk3YjE1ZGM2M2FkYTNiOWIuLjBlOWZlMjVhYzRlYTE4OTVjNTZiNGJmMThlNDA0ZTA3
ODEwZjY5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHN0YXRpYyBjb25zdCBFVlBfQ0lQSEVSKiBhZXNBbGdvcml0aG0oc2l6ZV90IGtleVNpemUpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlw
dFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0
aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCkBAIC03OSw3ICs3OSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBjb25zdCBFVlBf
Q0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFh
bGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAKaW5kZXggMmVmMGVjZGZlYTcwYzczYzhj
OGJiZGE1OTgxZTQwYTQ5YzZmMjdhMS4uY2Y5NzgzNTIzMjg1NzhjNTY1OGE1M2IyYWRlNzc2NWEx
Mzc0YjFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0FsZ29yaXRobUVDREhPcGVuU1NMLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3Qg
Q3J5cHRvS2V5RUMmKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IENy
eXB0b0tleUVDJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1I
TUFDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1ITUFDT3BlblNTTC5jcHAKaW5kZXggMjIyNmI3ZjAwOGRiNzk2ODE5YzJhOGY3MGM1MzY5
NzJhM2E5Nzg5Yy4uMTkyY2NmNTZlZDU4YWUxZjlmZWJjYzJjNjAxZmUzNzliYTU0NDM3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1B
Q09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUhNQUNPcGVuU1NMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25h
dHVyZShjb25zdCBFVlBfTUQqIGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoY29uc3QgRVZQX01EKiBh
bGdvcml0aG0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIE1lc3NhZ2UgRGlnZXN0
IENvbnRleHQKICAgICBFdnBEaWdlc3RDdHhQdHIgY3R4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVu
U1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAKaW5kZXggYWUzMmI2Zjg2ZGMzYjVkY2NmMTk5MTdi
MDgyMzU0ZmZkMzZjOTViZC4uYWNmZWVlNzkwZmNkMDA2MjE3OWQ1MWQ4MzQwZGVhZGZmZTYyMGY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zCiAgICAgaWYgKCFtZCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7
CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURp
Z2VzdChtZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OwogCkBAIC03NCw3ICs3NCw3IEBAIEV4Y2VwdGlvbk9yPGJv
b2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25z
dCBDcnlwdG9LCiAgICAgaWYgKCFtZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9
IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdl
c3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1SU0FfUFNTT3BlblNTTC5jcHAKaW5kZXggOWUzZDllY2ZmNzI0NjQyYjJkMTU2NTE3NjA3
YjAzOWM0MTQ2MDExYS4uNjIyNjdjNTgxNzEwODRmMTZhNTMzYmJkYTc1MjFmMGM2Y2Y1NGNjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTU09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1NPcGVuU1NMLmNwcApAQCAtNDEsNyArNDEsNyBAQCBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9BbAogICAgIGlmICghbWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBk
aWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOwogICAgIGlm
ICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
IApAQCAtODYsNyArODYsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0Ff
UFNTOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1ScwogICAgIGlmICghbWQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRh
dGEpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxh
dGVEaWdlc3QobWQsIGRhdGEpOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAKaW5kZXggZGM2NjJhZDc4YjM0MjNm
M2I4ZGZjM2Q1Y2YwMDNkYzVlZmJjZDU4Zi4uZjMxMWVkM2I2ZmRjYzc4NDg5ZGRmOGEzZjAyYjkz
ZGI1MTRjNzA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGJvb2wgQ3J5cHRvS2V5RUM6
OnBsYXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLU9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3N0ZDo6b3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4g
Q3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQog
ewogICAgIFVOVVNFRF9QQVJBTShleHRyYWN0YWJsZSk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9w
ZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3Bl
blNTTC5jcHAKaW5kZXggOTNmYTBhZThjMjk1ZTY5MmY1ZmVkZjJhNjUwZWQxMjViMDExMmM0My4u
ZDMyOTlmZjUzMmIyZTI0OTg2NThmZDc1YzMxY2FlZDhlMWMzMzljYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzaXplX3QgQ3J5cHRvS2V5UlNBOjprZXlTaXplSW5CaXRzKCkgY29u
c3QKIH0KIAogLy8gQ29udmVydCB0aGUgZXhwb25lbnQgdmVjdG9yIHRvIGEgMzItYml0IHZhbHVl
LCBpZiBwb3NzaWJsZS4KLXN0YXRpYyBPcHRpb25hbDx1aW50MzJfdD4gZXhwb25lbnRWZWN0b3JU
b1VJbnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9yVG9VSW50MzIoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBleHBvbmVudCkKIHsKICAgICBpZiAoZXhwb25lbnQuc2l6ZSgpID4gNCkgewogICAgICAg
ICBpZiAoc3RkOjphbnlfb2YoZXhwb25lbnQuYmVnaW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBb
XSh1aW50OF90IGVsZW1lbnQpIHsgcmV0dXJuICEhZWxlbWVudDsgfSkpCkBAIC0yMDksNyArMjA5
LDcgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICBjYWxsYmFjayhDcnlwdG9LZXlQYWly
IHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0pOwogfQogCi1SZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
PiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlS
U0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90
PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cykKIHsKICAgICAvLyBXZSBuZWVkIGEgbG9jYWwgcG9pbnRlciB2YXJpYWJsZSB0byBwYXNzIHRv
IGQyaSAoREVSIHRvIGludGVybmFsKSBmdW5jdGlvbnMoKS4KICAgICBjb25zdCB1aW50OF90KiBw
dHIgPSBrZXlEYXRhLmRhdGEoKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIs
IGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gs
IENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFz
aCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIFdlIG5lZWQgYSBsb2NhbCBwb2ludGVyIHZh
cmlhYmxlIHRvIHBhc3MgdG8gZDJpIChERVIgdG8gaW50ZXJuYWwpIGZ1bmN0aW9ucygpLgogICAg
IGNvbnN0IHVpbnQ4X3QqIHB0ciA9IGtleURhdGEuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRleCA4YzIxMjM3YzJm
Y2FmOWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliLi43NGI0NmQ2NzAwMTJjZjBlMWJlM2NlNDE5
NWQ4ODM3YjU5YjQ5NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBFVlBfTUQqIGRp
Z2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKICAg
ICB9CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0
IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCitzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVWUF9NRCog
YWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCiB7CiAgICAgRXZwRGln
ZXN0Q3R4UHRyIGN0eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RDdHhQdHIoRVZQX01EX0NU
WF9jcmVhdGUoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wv
T3BlblNTTFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5oCmluZGV4IGQyYzkxYmZjNDdiODhmM2JkZmM0NmQ1Zjk4ODY4MDc2ZjM2ZGE5
NjguLmVmMGE2MDY4ODUwNDBmZDE2M2NkNGI4Y2FiOTUxNjZiYWYwMDRkNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBFVlBfTUQqIGRpZ2VzdEFsZ29y
aXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbik7CiAKLU9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxnb3JpdGht
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNhbGN1bGF0ZURpZ2VzdChjb25zdCBFVlBfTUQqIGFsZ29yaXRobSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRv
S2V5V3JhcE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcAppbmRleCAxMjNkYTU3NGMzMWZmYTk1YTJmMTM2
MjJjM2Y0MjlkYzZmYWU0MjhiLi44NmNjNmIxZjk3YTJhMWM3Njc1YTE3MGY3NzJiYTkwYjgzZGU2
NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1
bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
ZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9w
YXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKaW5kZXggZTI5
NjYyYTIyNzU1N2NmNjFkNGIxNDA3Y2E1ODc5NTMyODA0MWY5YS4uNjdhZjAzOTg3ZmVjNjk1NDJm
OGQ3YzkyY2FmYjBhMDY5YTdjNDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKQEAg
LTM3LDggKzM3LDggQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zIGZpbmFsIDog
cHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgewogcHVibGljOgogICAgIEJ1ZmZlclNv
dXJjZSBpdjsKICAgICAvLyBVc2UgYWRkaXRpb25hbERhdGFWZWN0b3IoKSBpbnN0ZWFkIG9mIGFk
ZGl0aW9uYWxEYXRhLiBUaGUgbGFiZWwgd2lsbCBiZSBnb25lIG9uY2UgYWRkaXRpb25hbERhdGFW
ZWN0b3IoKSBpcyBjYWxsZWQuCi0gICAgbXV0YWJsZSBPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZh
cmlhbnRUeXBlPiBhZGRpdGlvbmFsRGF0YTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHVpbnQ4X3Q+
IHRhZ0xlbmd0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJp
YW50VHlwZT4gYWRkaXRpb25hbERhdGE7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVpbnQ4
X3Q+IHRhZ0xlbmd0aDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENsYXNzOjpBZXNHY21QYXJhbXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcy5oCmluZGV4IGU4NGU0MTdhMDgzNjZjMTQwZjJlMzQ5YTNjM2Q5NzY1OGMwZmZiZjYuLjlk
MTA5YzBmODRiNmNjOGNkZWZjYjM2YTA1YWYzZTY3MmE3OGUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1I
bWFjS2V5UGFyYW1zLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBD
b25zaWRlciBtZXJnaW5nIGhhc2ggYW5kIGhhc2hJZGVudGlmaWVyLgogICAgIFZhcmlhbnQ8SlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4sIFN0cmluZz4gaGFzaDsKICAgICBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyOwotICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3Ro
OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7CiAKICAgICBDbGFzcyBwYXJhbWV0
ZXJzQ2xhc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDbGFzczo6SG1hY0tleVBhcmFtczsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9D
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKaW5kZXggMzVkNDUwMWRhNzZiMmVhYzU3YTli
MWM0YTBlNzE0NzQyNzkzMjUwMi4uNzY5ZjNkOWNiM2FhYTc5OTY3MmZjNzU1NDcyOTU4M2U2M2I0
MDE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJh
bWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zIGZp
bmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgewogcHVibGljOgogICAgIC8v
IFVzZSBsYWJlbFZlY3RvcigpIGluc3RlYWQgb2YgbGFiZWwuIFRoZSBsYWJlbCB3aWxsIGJlIGdv
bmUgb25jZSBsYWJlbFZlY3RvcigpIGlzIGNhbGxlZC4KLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJ1
ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+IGxhYmVsOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBsYWJlbDsKIAogICAgIENsYXNzIHBhcmFtZXRl
cnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpSc2FPYWVwUGFyYW1zOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCmluZGV4IGQ5ZDFmZTI0MmU4ZjA4Yzcy
YTE3ODIzNDZiOGExMmM0NzE4YmVmZWIuLjE3ZjM2ODljNjdiMDRiZmNkMGY2NDVmNWNkZGJkOWZi
NWZiNGRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBTdHJpbmcgQ1NTQ2FudmFzVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAg
IHJldHVybiBtYWtlU3RyaW5nKCItd2Via2l0LWNhbnZhcygiLCBtX25hbWUsICcpJyk7CiB9CiAK
LXZvaWQgQ1NTQ2FudmFzVmFsdWU6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBj
b25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2VkUmVjdCkKK3ZvaWQgQ1NTQ2FudmFzVmFs
dWU6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mIGNoYW5nZWRSZWN0KQogewogICAgIGlmICghY2hhbmdlZFJlY3QpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggNmIxZDYxYzdj
ZmZhM2IxZDM5NzVlMTM3YTcwYjVhMjhmNGE2OTk3Yy4uNjU4OWY0ZDMzMDM5MTcxZTg3YWQ4OTE5
ZTVlZjdiOGQ1MmI1Mzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBDU1NDYW52YXNWYWx1ZSYgb3duZXJW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJWYWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UsIGNvbnN0IE9w
dGlvbmFsPEZsb2F0UmVjdD4mIGNoYW5nZWRSZWN0KSBmaW5hbAorICAgICAgICB2b2lkIGNhbnZh
c0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+JiBjaGFuZ2VkUmVjdCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KGlzPEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKSk7CiAgICAgICAgICAgICBtX293bmVy
VmFsdWUuY2FudmFzQ2hhbmdlZChkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFz
ZSksIGNoYW5nZWRSZWN0KTsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJlY3QpOworICAgIHZvaWQgY2FudmFzQ2hhbmdlZChI
VE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdl
ZFJlY3QpOwogICAgIHZvaWQgY2FudmFzUmVzaXplZChIVE1MQ2FudmFzRWxlbWVudCYpOwogICAg
IHZvaWQgY2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYTZk
NTQzYmNlZGY1OTM1ODMzYWEyY2E3OTc0OWJiMDA1NTVhMzE1Ny4uYzRiYjk2NTE3OTdlZGY3YzZh
MzJhYjEwYjI3OGQ1Mjk4ZTM5MjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE4NDIsNyArMTg0Miw3IEBAIFJlZjxD
U1NGb250U3R5bGVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRT
dHlsZUZyb21TdHlsZVZhbHVlCiAgICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVP
YmxpcXVlKSwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGF0aWNfY2Fz
dDxmbG9hdD4oaXRhbGljKSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKIH0KIAotUmVmPENTU0Zv
bnRTdHlsZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5bGVGcm9tU3R5bGVW
YWx1ZShPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYywgRm9udFN0eWxlQXhpcyBm
b250U3R5bGVBeGlzKQorUmVmPENTU0ZvbnRTdHlsZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpmb250U3R5bGVGcm9tU3R5bGVWYWx1ZShzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gaXRhbGljLCBGb250U3R5bGVBeGlzIGZvbnRTdHlsZUF4aXMpCiB7CiAgICAgaWYgKGF1
dG8ga2V5d29yZCA9IGZvbnRTdHlsZUtleXdvcmQoaXRhbGljLCBmb250U3R5bGVBeGlzKSkKICAg
ICAgICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5n
bGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoa2V5d29yZC52YWx1ZSgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNGNk
NjQzNTVjOWI4NDM2MjljNDUyODQyNjNlN2Y1MzZiOWQ3YzE1ZC4uY2RkMGM0YTNjOWZlZTBjZDE5
NWE1ODVkZjY1MjE4M2ZhYWRlOTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udE5vbktleXdvcmRTdHJldGNoRnJvbVN0
eWxlVmFsdWUoRm9udFNlbGVjdGlvblZhbHVlKTsKICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBmb250U3RyZXRjaEZyb21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7CiAg
ICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9udE5vbktleXdvcmRTdHlsZUZyb21T
dHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0gICAgc3RhdGljIFJlZjxDU1NGb250U3R5
bGVWYWx1ZT4gZm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZh
bHVlPiwgRm9udFN0eWxlQXhpcyk7CisgICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4g
Zm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
LCBGb250U3R5bGVBeGlzKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgc3R5bGVkIGVsZW1lbnQg
aXMgZWl0aGVyIHRoZSBlbGVtZW50IHBhc3NlZCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CmluZGV4IDQyYzg1Y2U4ODY0NjQzMzY1MzNhMmViZWM3ZTQwODI3YzNhNDhmMjEuLmZmMDg4M2E1
NWYwYjU5ZDcxYmE4MTIxMGMxZDNhOTIxMGIzYTkyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5oCkBAIC04NCwxNCArODQsMTQgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFuZ2U7
CiAgICAgCiAgICAgLy8gT3B0aW9uYWwgcmV0dXJuIHZhbHVlcyB0byByZXByZXNlbnQgZGVmYXVs
dCBzdHJpbmcgZm9yIG1lbWJlcnMgb2YgRm9udEZhY2UuaAotICAgIGNvbnN0IE9wdGlvbmFsPENT
U1ZhbHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVz
OjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVM
aXN0Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJh
bmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUg
PyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+
PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQotICAgIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21w
dXRlV2lkdGgoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9w
dCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVj
dGlvbkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGlj
X2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQotICAg
IGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNf
Y2FzdDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQotICAgIGNv
bnN0IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0
YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5n
cyk7IH0KLSAgICBPcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3Io
KSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxv
cHQgOiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9hZGlu
Z0JlaGF2aW9yKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4gZmFt
aWxpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6
Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+PihtX2Zh
bWlsaWVzLmdldCgpKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6
Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+
KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2VpZ2h0KCkpOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHN0cmV0Y2goKSBjb25zdCB7IHJldHVybiBt
X3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxz
dGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllcy5jb21wdXRlV2lkdGgoKSk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25S
YW5nZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJl
ID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9u
UmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVNsb3BlKCkpOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJl
ID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVGb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzKCkpOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
VW5pY29kZVJhbmdlPj4gcmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVz
OjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxWZWN0
b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3Rk
OjpvcHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPj4obV9mZWF0dXJlU2V0dGluZ3MpOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQg
OiAgc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPj4obV9sb2Fk
aW5nQmVoYXZpb3IpOyB9CiAgICAgdm9pZCBzZXRXZWlnaHQoRm9udFNlbGVjdGlvblJhbmdlIHdl
aWdodCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0gd2VpZ2h0OyB9CiAg
ICAgdm9pZCBzZXRTdHJldGNoKEZvbnRTZWxlY3Rpb25SYW5nZSBzdHJldGNoKSB7IG1fZm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcy53aWR0aCA9IHN0cmV0Y2g7IH0KICAgICB2b2lkIHNldFN0eWxl
KEZvbnRTZWxlY3Rpb25SYW5nZSBpdGFsaWMpIHsgbV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
LnNsb3BlID0gaXRhbGljOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRl
eCA3YjQyODcxZDJiOTUzMzhjY2Y1Yzk2MWY5ODM0NDY2MGNjZDEyZDI3Li44YWMxMjYwMDRlZWVm
NzVhZjkyY2NiMGM3MzhhOGFhNThiMDRkMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJlcXVlc3Qg
Y29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KENTU1Byb3BlcnR5UGFyc2VySGVscGVycwogICAg
IEFTU0VSVChzdHJldGNoU2VsZWN0aW9uVmFsdWUpOwogCiAgICAgYXV0byBzdHlsZUtleXdvcmQg
PSBmb250LnN0eWxlID8gZm9udC5zdHlsZS0+c3R5bGUgOiBDU1NWYWx1ZU5vcm1hbDsKLSAgICBh
dXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBbJl0gKCkgLT4gT3B0aW9uYWw8Rm9udFNlbGVjdGlv
blZhbHVlPiB7CisgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gWyZdICgpIC0+IHN0ZDo6
b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQg
PT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlSXRhbGljKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTZXQuaAppbmRleCAzMWMwMDA4MWNjNjQ4Y2I3Y2E0MDFmYzNmNDUxMjAxMjg2ZDlh
NmQ0Li5iNjFiZTdiZTI0NmZkOWNkMjE0ZmJkNWExMDgzYjgyOTdiZTZhMDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYpOwogCi0gICAgdXNpbmcgRm9udFNlbGVjdGlvbktleSA9IE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SZXF1ZXN0PjsKKyAgICB1c2luZyBGb250U2VsZWN0aW9uS2V5ID0gc3RkOjpvcHRpb25h
bDxGb250U2VsZWN0aW9uUmVxdWVzdD47CiAgICAgc3RydWN0IEZvbnRTZWxlY3Rpb25LZXlIYXNo
IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRm9udFNlbGVjdGlvbktleSYg
a2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IEZvbnRTZWxlY3Rpb25LZXkmIGEsIGNvbnN0IEZvbnRTZWxlY3Rpb25LZXkmIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCAxOGY5N2ZlZjdjNjk1YTFkM2I2ZWRlMzA1M2ZiMGVhY2QyOGFhM2QxLi45ODZlMTg0Y2Jl
YTQ2NDMwNTlkZmYxNDNiY2U2OGIzOGFlYWM4OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpm
b250Q2FjaGVJbnZhbGlkYXRlZCgpCiAgICAgZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFja3Mo
KTsKIH0KIAotT3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9udFNlbGVjdG9yOjpyZXNvbHZlR2Vu
ZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9u
dFNlbGVjdG9yOjpyZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICBhdXRv
IHBsYXRmb3JtUmVzdWx0ID0gRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmlj
RmFtaWx5KGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
TG9jYWxlKCksIGZhbWlseU5hbWUpOwogICAgIGlmICghcGxhdGZvcm1SZXN1bHQuaXNOdWxsKCkp
CkBAIC0zMTAsNyArMzEwLDcgQEAgRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5n
ZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3IKICAgICBib29sIHJl
c29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1pbHlOYW1lID09IG1fZm9udEZhbWlseU5hbWVz
LmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KTsKIAogICAgIEF0b21TdHJpbmcg
ZmFtaWx5Rm9yTG9va3VwID0gZmFtaWx5TmFtZTsKLSAgICBPcHRpb25hbDxGb250RGVzY3JpcHRp
b24+IG92ZXJyaWRlRm9udERlc2NyaXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udERlc2Ny
aXB0aW9uPiBvdmVycmlkZUZvbnREZXNjcmlwdGlvbjsKICAgICBjb25zdCBGb250RGVzY3JpcHRp
b24qIGZvbnREZXNjcmlwdGlvbkZvckxvb2t1cCA9ICZmb250RGVzY3JpcHRpb247CiAgICAgYXV0
byByZXNvbHZlQW5kQXNzaWduR2VuZXJpY0ZhbWlseSA9IFsmXSgpIHsKICAgICAgICAgaWYgKGF1
dG8gZ2VuZXJpY0ZhbWlseU9wdGlvbmFsID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHkoZm9udERlc2Ny
aXB0aW9uLCBmYW1pbHlOYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRl
eCA0MzQ3ZTg1YTE1NjIzNGE5M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5Li44NTkwODY4NGIwY2Ux
NWFlYjg5YWU2ZWU4NTE2YjM3MTZlZDg5YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3Bwb3J0dW5p
c3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEF0
b21TdHJpbmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIGZhbWlseSk7CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBy
ZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHkpOwogCiAgICAgLy8gQ1NTRm9udEZhY2U6OkNsaWVudAogICAgIHZvaWQgZm9u
dExvYWRlZChDU1NGb250RmFjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmgKaW5kZXggNDA2OTc5ODQ2N2RlOGE4MmVkMzQ1MmY0MmRlNjRjMDMyY2FlMWEzMy4uZjlh
MTg3NmEzMTBiM2JiNzVlOTY0ZWVhMTFiMWY2ZWFkODFiM2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBDU1NH
cmFkaWVudFR5cGUgbV9ncmFkaWVudFR5cGU7CiAgICAgYm9vbCBtX3JlcGVhdGluZyB7IGZhbHNl
IH07CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1faGFzQ29sb3JEZXJpdmVkRnJvbUVs
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzQ29sb3JEZXJpdmVk
RnJvbUVsZW1lbnQ7CiB9OwogCiBjbGFzcyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlIGZpbmFsIDog
cHVibGljIENTU0dyYWRpZW50VmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwCmluZGV4IDAwOTRjNjg0Y2RmMWI3YzU4MTk2NTJiMzExNzkzZDBiNTFiYmM1NWUuLjM2
NTFlZWIzYzhlNThhNmRmYmZmZmE5MWUyZTBjOTQzNzVlNTZiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFN0eWxlUnVs
ZUtleWZyYW1lczo6d3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2lnbmVkIGluZGV4KQogICAgIG1f
a2V5ZnJhbWVzLnJlbW92ZShpbmRleCk7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gU3R5bGVSdWxl
S2V5ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmZpbmRLZXlmcmFtZUluZGV4
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIHBhcnNlRGVmZXJyZWRSdWxlc0lmTmVl
ZGVkKCk7CiAgICAgYXV0byBrZXlzID0gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lS2V5TGlzdChr
ZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKaW5kZXggYjQ4YjE1MjFhYmI1
MzU5ZTA5OTc3ZDUwMTZkZjE4MDIzYzA2NTFlMi4uZDQ4ODQ4YjVmN2ZmNGU1ODRlYmZjYzFjZTZl
ZTBmMWIwYTdkZTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
c1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpIHsgbV9uYW1lID0gbmFtZTsgfQogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBmaW5kS2V5ZnJh
bWVJbmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGZpbmRLZXlmcmFtZUluZGV4KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAogICAgIFJl
ZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlUnVsZUtleWZyYW1lcygqdGhpcykpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCmluZGV4IGE1OTUyMTU5YjBkODUwYWVjMjI3NjM4ZGI3YzBhZTA5Yzc5
YzJmODAuLjE4ZWNhOTFmMmUxNjcxYzk3YjVlYmQyODRkNzU5ZTUxNzFiYmJhNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODMzLDIxICs4MzMsMjEgQEAg
ZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDID8gbV92YWx1ZS5u
dW0gOiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IENT
U1ByaW1pdGl2ZVZhbHVlOjppc1plcm8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVW5pdFR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNQb3NpdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVVu
aXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBtX3ZhbHVlLm51bSA+IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+
IENTU1ByaW1pdGl2ZVZhbHVlOjppc05lZ2F0aXZlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9v
bD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTmVnYXRpdmUoKSBjb25zdAogewogICAgIGlmIChwcmlt
aXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTg1OSw3ICs4NTksNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVl
Ojppc0NlbnRlclBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdmFsdWVJRCgpID09IENTU1Zh
bHVlQ2VudGVyIHx8IGRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSkgPT0g
NTA7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVl
SW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5p
dFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5p
dFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHByaW1pdGl2ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlk
Q1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgKaW5kZXggZmUzMTY0MWIzODRiY2YwZGY1YjI3N2NiNzUxOTAyOGU1YmQ0OGVjZS4uZWM1ZjY1
NWY0YzllZmQ3NjcwNzE4MTZhMjRhODU2YTY5YWNkMzMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTE1Niw5ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IGRvdWJsZVZhbHVlKCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSByZXR1cm4gbnVsbG9wdCBmb3Ig
Y2FsYywgZm9yIHdoaWNoIHJhbmdlIGNoZWNraW5nIGlzIG5vdCBkb25lIGF0IHBhcnNlIHRpbWU6
IDxodHRwczovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2NhbGMtcmFuZ2U+LgotICAgIE9w
dGlvbmFsPGJvb2w+IGlzWmVybygpIGNvbnN0OwotICAgIE9wdGlvbmFsPGJvb2w+IGlzUG9zaXRp
dmUoKSBjb25zdDsKLSAgICBPcHRpb25hbDxib29sPiBpc05lZ2F0aXZlKCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpc1plcm8oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzUG9zaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTmVnYXRp
dmUoKSBjb25zdDsKICAgICBib29sIGlzQ2VudGVyUG9zaXRpb24oKSBjb25zdDsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIHZhbHVlKENTU1VuaXRUeXBlIHR5cGUpIGNvbnN0
IHsgcmV0dXJuIGNsYW1wVG88VD4oZG91YmxlVmFsdWUodHlwZSkpOyB9CkBAIC0yMzksNyArMjM5
LDcgQEAgcHJpdmF0ZToKICAgICBDU1NVbml0VHlwZSBwcmltaXRpdmVVbml0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1VuaXRUeXBlPihtX3ByaW1pdGl2ZVVuaXRUeXBlKTsg
fQogICAgIHZvaWQgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGUgdHlwZSkgeyBtX3By
aW1pdGl2ZVVuaXRUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOyB9CiAKLSAgICBP
cHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgdGFyZ2V0VW5p
dFR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVy
bmFsKENTU1VuaXRUeXBlIHRhcmdldFVuaXRUeXBlKSBjb25zdDsKIAogICAgIGRvdWJsZSBjb21w
dXRlTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggYTY0
YWQ1YWUyM2I2NjU5ZWRlYmIwMzE3ZDYwMDFhYTcwYmIxMzYzZC4uMjExZDIzNWUwOGI1Mjk1NjJk
YWJjNmYwNjFlMDdjY2JmYzYwYzcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVu
dGVkRm9udEZhY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBtX3Jlc3VsdCAmJiBtX3Jlc3VsdC52YWx1ZSgpICYmIG1fcmVzdWx0LnZhbHVlKCktPmlzSW50
ZXJzdGl0aWFsKCk7CiAgICAgfQogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxSZWZQdHI8Rm9udD4+
IG1fcmVzdWx0OyAvLyBDYWNoZXMgbnVsbHB0ciB0b28KKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8UmVmUHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVzIG51bGxwdHIgdG9vCiAgICAgbXV0
YWJsZSBSZWY8Q1NTRm9udEZhY2U+IG1fZm9udEZhY2U7CiAgICAgRm9udERlc2NyaXB0aW9uIG1f
Zm9udERlc2NyaXB0aW9uOwogICAgIGJvb2wgbV9zeW50aGV0aWNCb2xkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDZiNDM4OTZkMzhiNjZjMTRhMDY1ODBhZjZkYTA5ZGFj
NDQ4ZjVjMTkuLmEyNTY1YmU2NWQxNWEzNTYxYzRkMDAzOTU5MGEzZDRmYjg5NjFiNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTczLDcgKzczLDcgQEAgUmVmPENTU1N0
eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IHNoZWV0LCBDU1NJbXAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdU
Rk1vdmUoc2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAotUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBv
d25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc0NsZWFuT3JpZ2luKQorUmVmPENTU1N0
eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlzQ2xl
YW5PcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZN
b3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5Pcmln
aW4pKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKgogICAgIG1f
Y29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCi1DU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5
bGVzaGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCitDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5v
ZGUmIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlz
SW5saW5lU3R5bGVzaGVldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaXNPcmlnaW5DbGVh
bikKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5l
U3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgLCBtX2lzT3JpZ2luQ2xlYW4oaXNP
cmlnaW5DbGVhbikKQEAgLTI4Niw3ICsyODYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHls
ZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiB7IH07CiB9CiAK
LUV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCitF
eGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgp
CiB7CiAgICAgYXV0byB0ZXh0ID0gbWFrZVN0cmluZyhzZWxlY3RvciwgIiB7ICIsIHN0eWxlLCAh
c3R5bGUuaXNFbXB0eSgpID8gIiAiIDogIiIsICd9Jyk7CiAgICAgYXV0byBpbnNlcnRSdWxlUmVz
dWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggZTdiZGUzYTRiZGQwZmU3ZWIzNjlhNGNkYmFkYzM1
YzExOTk4NmU3NC4uMmQ1MDRiNjE2ZjViZTVkZjNjYzllNDVhMDI0NTZhMmZjY2MwMzZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFNjb3Bl
OwogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAgICBzdGF0aWMgUmVm
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBv
d25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gc3RkOjpudWxs
b3B0KTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
IGlzT3JpZ2luQ2xlYW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVT
aGVldD4gY3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIEVsZW1lbnQmIG93
bmVyLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdmlydHVhbCB+
Q1NTU3R5bGVTaGVldCgpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxl
LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4g
ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmlu
ZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0
cmluZyYgc3R5bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBkZWxldGVSdWxl
KGluZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NSdWxlTGlzdC4KQEAgLTEzMiw3ICsxMzIs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0
KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7Ci0gICAgQ1NT
U3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQs
IGNvbnN0IE9wdGlvbmFsPGJvb2w+Jik7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQ
b3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mKTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3Nz
Il9zOyB9CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJbmxpbmVT
dHlsZXNoZWV0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNEaXNhYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX211dGF0ZWRSdWxlcyB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9p
c09yaWdpbkNsZWFuOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwog
ICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVl
cmllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5k
ZXggNDUxNjljNGQ5MGJkY2I5ZTVhZTA4YzU0YTVjMWVmYmYxNmYxM2Q4YS4uM2ViOGYxY2I1ZDIy
MWIyNDA5ZGMyYWU3MTc4YjY0ZDk3NDY0NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC02NCwyMCArNjQsMjAgQEAgcHJpdmF0ZToKIAogY2xh
c3MgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3Jl
YXRlKGludCBzdGVwcywgT3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9u
PiBzdGVwUG9zaXRpb24pCisgICAgc3RhdGljIFJlZjxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU+IGNyZWF0ZShpbnQgc3RlcHMsIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6
U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoc3RlcHMsIHN0ZXBQb3NpdGlvbikp
OwogICAgIH0KIAogICAgIGludCBudW1iZXJPZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
czsgfQotICAgIE9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3Rl
cFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NU
ZXh0KCkgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWUoaW50IHN0ZXBzLCBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRp
b24+IHN0ZXBQb3NpdGlvbikKKyAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoaW50IHN0
ZXBzLCBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3Rl
cFBvc2l0aW9uKQogICAgICAgICA6IENTU1ZhbHVlKFN0ZXBzVGltaW5nRnVuY3Rpb25DbGFzcykK
ICAgICAgICAgLCBtX3N0ZXBzKHN0ZXBzKQogICAgICAgICAsIG1fc3RlcFBvc2l0aW9uKHN0ZXBQ
b3NpdGlvbikKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBpbnQgbV9z
dGVwczsKLSAgICBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24+IG1f
c3RlcFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKIH07CiAKIGNsYXNzIENTU1NwcmluZ1RpbWluZ0Z1
bmN0aW9uVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgKaW5kZXggNjhkMmI2MDNhOTgwY2IwZDEy
ZWJhNzhhMzdhNjJlMmU2MjhhYWZmOC4uOGM4NWI3ZmFjZGE3N2RlNTUwNDAzNTY4ZGM5MTJkOTE2
MjdkM2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJlbmRlclZpZXc7CiAKIGNsYXNzIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEgewogcHVibGljOgotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJl
bmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9D
b21wdXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0
ZWN0aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcs
IGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1
dGUgPSBzdGQ6Om51bGxvcHQsIFJlbmRlclN0eWxlKiB2aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rp
b25TdHlsZSA9IG51bGxwdHIpCiAgICAgICAgIDogbV9zdHlsZShzdHlsZSkKICAgICAgICAgLCBt
X3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJlbnRTdHlsZShwYXJlbnRTdHls
ZSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoem9vbSA+IDApOwog
ICAgIH0KIAotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIE9wdGlvbmFsPENTU1By
b3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0KQorICAgIENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclZpZXcqIHJlbmRlclZpZXcsIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVy
dHlUb0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogbV9zdHlsZShzdHlsZSkKICAg
ICAgICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJlbnRTdHlsZShw
YXJlbnRTdHlsZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLCBtX3Jvb3RTdHlsZSwgbV9wYXJlbnRTdHls
ZSwgbV9yZW5kZXJWaWV3LCBuZXdab29tLCBtX3Byb3BlcnR5VG9Db21wdXRlKTsKICAgICB9CiAK
LSAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvcHlXaXRoQWRqdXN0ZWRab29tQW5kUHJv
cGVydHlUb0NvbXB1dGUoZmxvYXQgem9vbSwgT3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVy
dHlUb0NvbXB1dGUpIGNvbnN0CisgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb3B5V2l0
aEFkanVzdGVkWm9vbUFuZFByb3BlcnR5VG9Db21wdXRlKGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9u
YWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLCBtX3Jvb3RTdHlsZSwg
bV9wYXJlbnRTdHlsZSwgbV9yZW5kZXJWaWV3LCB6b29tLCBwcm9wZXJ0eVRvQ29tcHV0ZSk7CiAg
ICAgfQpAQCAtOTUsOCArOTUsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBt
X3BhcmVudFN0eWxlIHsgbnVsbHB0ciB9OwogICAgIFJlbmRlclN0eWxlKiBtX3ZpZXdwb3J0RGVw
ZW5kZW5jeURldGVjdGlvblN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFJlbmRlclZpZXcq
IG1fcmVuZGVyVmlldyB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxmbG9hdD4gbV96b29tOwot
ICAgIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IG1fcHJvcGVydHlUb0NvbXB1dGU7CisgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gbV96b29tOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJ
RD4gbV9wcm9wZXJ0eVRvQ29tcHV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYzM1NGU5NzgyNzNiYTU2ZTJmZmI1NDdmZjM5MTgz
MzljZDBmY2NhZi4uNzU2NjQ3NTIzZmJkNjk2YjIyODAyNGVkM2U0YWYyMjYwOWRjZDlkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbS1kb21tYXRy
aXhyZWFkb25seS1kb21tYXRyaXhyZWFkb25seQotRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+
IERPTU1hdHJpeDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5p
dCkKK0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBET01NYXRyaXg6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6Om9wdGlvbmFsPFZh
cmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkKIHsKICAgICBpZiAoIWluaXQp
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTU1hdHJpeCk7CkBAIC0xNTQsNyArMTU0
LDcgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojp0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCwg
ZG91YmxlIHR5LCBkb3VibGUgdHopCiB9CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dl
b21ldHJ5LyNkb20tZG9tbWF0cml4LXNjYWxlc2VsZgotUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4
OjpzY2FsZVNlbGYoZG91YmxlIHNjYWxlWCwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVksIGRvdWJs
ZSBzY2FsZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3JpZ2luWSwgZG91YmxlIG9yaWdpblop
CitSZWY8RE9NTWF0cml4PiBET01NYXRyaXg6OnNjYWxlU2VsZihkb3VibGUgc2NhbGVYLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZLCBkb3VibGUgc2NhbGVaLCBkb3VibGUgb3JpZ2luWCwg
ZG91YmxlIG9yaWdpblksIGRvdWJsZSBvcmlnaW5aKQogewogICAgIGlmICghc2NhbGVZKQogICAg
ICAgICBzY2FsZVkgPSBzY2FsZVg7CkBAIC0xODIsNyArMTgyLDcgQEAgUmVmPERPTU1hdHJpeD4g
RE9NTWF0cml4OjpzY2FsZTNkU2VsZihkb3VibGUgc2NhbGUsIGRvdWJsZSBvcmlnaW5YLCBkb3Vi
bGUgb3JpZ2kKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbS1k
b21tYXRyaXgtcm90YXRlc2VsZgotUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojpyb3RhdGVTZWxm
KGRvdWJsZSByb3RYLCBPcHRpb25hbDxkb3VibGU+IHJvdFksIE9wdGlvbmFsPGRvdWJsZT4gcm90
WikKK1JlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90YXRlU2VsZihkb3VibGUgcm90WCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHJvdFksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RaKQogewog
ICAgIGlmICghcm90WSAmJiAhcm90WikgewogICAgICAgICByb3RaID0gcm90WDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01NYXRyaXguaAppbmRleCAzOTgxNmMxZDY2MzllYmZlZTJiYmM2YTgxZGUzOGRjMmIzNTI2ZTZl
Li5kNzU2ODQwNTg4YjAxYjA5OTUxMWY0NjU1NWRjMGE0YjFlMTgwYzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIGNsYXNzIERPTU1hdHJpeCA6IHB1YmxpYyBET01NYXRyaXhSZWFkT25seSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+
JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8
ZG91YmxlPj4+JiYpOwogCiAgICAgc3RhdGljIFJlZjxET01NYXRyaXg+IGNyZWF0ZShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBJczJEIGlzMkQpCiAgICAgewpAQCAtNTMsOSAr
NTMsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IG11bHRpcGx5
U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRy
aXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAgICBSZWY8RE9N
TWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9IDAsIGRvdWJs
ZSB0eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNjYWxlU2VsZihkb3VibGUgc2NhbGVYID0g
MSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVog
PSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdp
blogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2FsZVNlbGYoZG91YmxlIHNjYWxlWCA9IDEs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2Fs
ZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9y
aWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2FsZTNkU2VsZihkb3VibGUgc2NhbGUg
PSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdp
blogPSAwKTsKLSAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVTZWxmKGRvdWJsZSByb3RYID0gMCwg
T3B0aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxkb3VibGU+IHJv
dFogPSBzdGQ6Om51bGxvcHQpOyAvLyBBbmdsZXMgYXJlIGluIGRlZ3JlZXMuCisgICAgUmVmPERP
TU1hdHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9IDAsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiByb3RZID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6
bnVsbG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiBy
b3RhdGVGcm9tVmVjdG9yU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7CiAgICAgUmVm
PERPTU1hdHJpeD4gcm90YXRlQXhpc0FuZ2xlU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0g
MCwgZG91YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVl
cy4KICAgICBSZWY8RE9NTWF0cml4PiBza2V3WFNlbGYoZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xl
IGlzIGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4
MkRJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4MkRJbml0LmgKaW5kZXggYzg3
MWM0OGZmOTRjOGM0YzAyNTNmYWFkNjhlYmVjYzI5ZjE4YTlkZC4uZjM5ZDI3OTU4NTFkYmU2MTc5
NTZkOGY0ZWI1Mjk4MjZhOWYxZTQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeDJESW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgyREluaXQu
aApAQCAtMzAsMTggKzMwLDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBET01N
YXRyaXgyREluaXQgewotICAgIE9wdGlvbmFsPGRvdWJsZT4gYTsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IGI7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBjOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZDsK
LSAgICBPcHRpb25hbDxkb3VibGU+IGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBmOwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gbTExOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTEyOwotICAgIE9wdGlv
bmFsPGRvdWJsZT4gbTIxOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTIyOwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gbTQxOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTQyOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBhOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBjOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkOworICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmOworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtMTE7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG0xMjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbTIxOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtMjI7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG00MTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbTQyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhJbml0LmgKaW5kZXgg
ZjViNTkzNGMwMzljNmJlNTNhNDk2NDcwYjBlMTcxOGJmMTI0ZjNlOC4uMTY4ZGIzZDNiYjczYTE4
NTczNDM3OTdlNzYxMGU1YzY5ZTk1NzdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTU1hdHJpeEluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4SW5pdC5o
CkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBET01NYXRyaXhJbml0IDogRE9NTWF0cml4MkRJbml0
IHsKICAgICBkb3VibGUgbTM0IHsgMCB9OwogICAgIGRvdWJsZSBtNDMgeyAwIH07CiAgICAgZG91
YmxlIG00NCB7IDEgfTsKLSAgICBPcHRpb25hbDxib29sPiBpczJEOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXMyRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCmluZGV4IGMyNmNhNDYyYzg4NWJiYTQ4NzE1ZmYz
YzU0ZTA4ZGNhODVmYTBmNDguLjc1NDQ5Y2ZmNjExZjgwN2VmNjJlMTMzMmRjMzBkZGViN2U3ZDRm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtNDQsNyAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
RE9NTWF0cml4UmVhZE9ubHkpOwogCiAvLyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRy
eS8jZG9tLWRvbW1hdHJpeHJlYWRvbmx5LWRvbW1hdHJpeHJlYWRvbmx5Ci1FeGNlcHRpb25PcjxS
ZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8
U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxET01NYXRy
aXhSZWFkT25seT4+IERPTU1hdHJpeFJlYWRPbmx5OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOjpvcHRpb25hbDxWYXJpYW50PFN0cmlu
ZywgVmVjdG9yPGRvdWJsZT4+PiYmIGluaXQpCiB7CiAgICAgaWYgKCFpbml0KQogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBET01NYXRyaXhSZWFkT25seSk7CkBAIC0yOTEsNyArMjkxLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeFJlYWRPbmx5OjptdWx0aXBs
eShET01NYXRyaXhJbml0JiYgb3RoZXIpIGMKICAgICByZXR1cm4gbWF0cml4LT5tdWx0aXBseVNl
bGYoV1RGTW92ZShvdGhlcikpOwogfQogCi1SZWY8RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25s
eTo6c2NhbGUoZG91YmxlIHNjYWxlWCwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVksIGRvdWJsZSBz
Y2FsZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3JpZ2luWSwgZG91YmxlIG9yaWdpblopCitS
ZWY8RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6c2NhbGUoZG91YmxlIHNjYWxlWCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHNjYWxlWSwgZG91YmxlIHNjYWxlWiwgZG91YmxlIG9yaWdpblgs
IGRvdWJsZSBvcmlnaW5ZLCBkb3VibGUgb3JpZ2luWikKIHsKICAgICBhdXRvIG1hdHJpeCA9IGNs
b25lQXNET01NYXRyaXgoKTsKICAgICByZXR1cm4gbWF0cml4LT5zY2FsZVNlbGYoc2NhbGVYLCBz
Y2FsZVksIHNjYWxlWiwgb3JpZ2luWCwgb3JpZ2luWSwgb3JpZ2luWik7CkBAIC0zMDMsNyArMzAz
LDcgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVhZE9ubHk6OnNjYWxlM2QoZG91YmxlIHNj
YWxlLCBkb3VibGUgb3JpZ2luWCwgZG91YmxlIG8KICAgICByZXR1cm4gbWF0cml4LT5zY2FsZTNk
U2VsZihzY2FsZSwgb3JpZ2luWCwgb3JpZ2luWSwgb3JpZ2luWik7CiB9CiAKLVJlZjxET01NYXRy
aXg+IERPTU1hdHJpeFJlYWRPbmx5Ojpyb3RhdGUoZG91YmxlIHJvdFgsIE9wdGlvbmFsPGRvdWJs
ZT4gcm90WSwgT3B0aW9uYWw8ZG91YmxlPiByb3RaKQorUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4
UmVhZE9ubHk6OnJvdGF0ZShkb3VibGUgcm90WCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJvdFks
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RaKQogewogICAgIGF1dG8gbWF0cml4ID0gY2xvbmVB
c0RPTU1hdHJpeCgpOwogICAgIHJldHVybiBtYXRyaXgtPnJvdGF0ZVNlbGYocm90WCwgcm90WSwg
cm90Wik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHku
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4IDhmOWVlZTEx
NjM4ZmRhNjIzNjdkMTFiN2U5YzZkYTkwZjZiMGUwZTcuLmVjY2UzZjAyNjMwZWIxY2ExZTYwNzE2
YzU4ZTJiMzBmMmVmNGM4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRy
aXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5o
CkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBET01Qb2ludEluaXQ7CiBjbGFzcyBET01NYXRyaXhS
ZWFkT25seSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTU1h
dHJpeFJlYWRPbmx5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChET01NYXRyaXhSZWFk
T25seSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFk
T25seT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8VmFyaWFudDxT
dHJpbmcsIFZlY3Rvcjxkb3VibGU+Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
T01NYXRyaXhSZWFkT25seT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpv
cHRpb25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPGRvdWJsZT4+PiYmKTsKIAogICAgIGVudW0g
Y2xhc3MgSXMyRCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmPERPTU1hdHJpeFJlYWRPbmx5
PiBjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgSXMyRCBpczJEKQpA
QCAtMTAxLDkgKzEwMSw5IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4
Pj4gbXVsdGlwbHkoRE9NTWF0cml4SW5pdCYmIG90aGVyKSBjb25zdDsKICAgICBSZWY8RE9NTWF0
cml4PiBmbGlwWCgpOwogICAgIFJlZjxET01NYXRyaXg+IGZsaXBZKCk7Ci0gICAgUmVmPERPTU1h
dHJpeD4gc2NhbGUoZG91YmxlIHNjYWxlWCA9IDEsIE9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZID0g
c3RkOjpudWxsb3B0LCBkb3VibGUgc2NhbGVaID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3Vi
bGUgb3JpZ2luWSA9IDAsIGRvdWJsZSBvcmlnaW5aID0gMCk7CisgICAgUmVmPERPTU1hdHJpeD4g
c2NhbGUoZG91YmxlIHNjYWxlWCA9IDEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBz
dGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJs
ZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBz
Y2FsZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9yaWdp
blkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShk
b3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0
aW9uYWw8ZG91YmxlPiByb3RaID0gc3RkOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdy
ZWVzLgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cm90WiA9IHN0ZDo6bnVsbG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8
RE9NTWF0cml4PiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4ID0gMCwgZG91YmxlIHkgPSAwKTsK
ICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVBeGlzQW5nbGUoZG91YmxlIHggPSAwLCBkb3VibGUg
eSA9IDAsIGRvdWJsZSB6ID0gMCwgZG91YmxlIGFuZ2xlID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRl
Z3JlZXMuCiAgICAgUmVmPERPTU1hdHJpeD4gc2tld1goZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xl
IGlzIGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVj
dGlvblZhbHVlSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRTZWxlY3Rpb25WYWx1
ZUlubGluZXMuaAppbmRleCA5ODhiZjk3ZDA3YjQyZjM5MTY2MmIzODY3MGQ0Y2YwN2M2Njk3MzAy
Li5mZDg3YzkwMGIzNjU1ZmFmZTcxOWVmZDBjYWRjNDAzYzRkNzI1Yzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgaW5saW5lIGJvb2wgaXNDU1MyMVdlaWdodChpbnQgd2VpZ2h0KQogICAgIHJldHVybiAhKCh3
ZWlnaHQgJSAxMDApIHx8IHdlaWdodCA8IDEwMCB8fCB3ZWlnaHQgPiA5MDApOwogfQogCi1pbmxp
bmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdodEtleXdvcmQoRm9udFNlbGVjdGlvblZh
bHVlIHdlaWdodCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRXZWlnaHRL
ZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQpCiB7CiAgICAgaWYgKHdlaWdodCA9PSBu
b3JtYWxXZWlnaHRWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVOb3JtYWw7CkBAIC01
Nyw3ICs1Nyw3IEBAIGlubGluZSBPcHRpb25hbDxDU1NWYWx1ZUlEPiBmb250V2VpZ2h0S2V5d29y
ZChGb250U2VsZWN0aW9uVmFsdWUgd2VpZ2h0KQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRXZWlnaHRWYWx1ZShD
U1NWYWx1ZUlEIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiBmb250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJRCB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHZhbHVl
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFdlaWdodFZhbHVlKENTU1ZhbHVlSUQgdmFs
dWUpCiAgICAgfQogfQogCi1pbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hL
ZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNo
KQogewogICAgIGlmIChzdHJldGNoID09IHVsdHJhQ29uZGVuc2VkU3RyZXRjaFZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkOwpAQCAtOTUsNyArOTUsNyBAQCBp
bmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rp
b25WYWx1ZSBzdHJldGNoKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBP
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRTdHJldGNoVmFsdWUoQ1NTVmFsdWVJRCB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0
Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAgIHN3aXRjaCAodmFsdWUpIHsKICAgICBj
YXNlIENTU1ZhbHVlVWx0cmFDb25kZW5zZWQ6CkBAIC0xMjEsNyArMTIxLDcgQEAgaW5saW5lIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZh
bHVlKQogICAgIH0KIH0KIAotaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRTdHlsZUtl
eXdvcmQoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHlsZSwgRm9udFN0eWxlQXhpcyBh
eGlzKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0eWxlS2V5d29yZChz
dGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gc3R5bGUsIEZvbnRTdHlsZUF4aXMgYXhp
cykKIHsKICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLnZhbHVlKCkgPT0gbm9ybWFsSXRhbGljVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGIzNjA5YzJlODEyZTg3NWY3MDE5ZmI4Mzli
YjA3MWMwOWRmMjkyNmQuLmE0N2IyZmU1NDlhODk0MTRhMjA3ODY0YWFiZTg5N2QwN2E1OTcyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSog
dmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogICAgIHJldHVybiBjb21wYXJlVmFs
dWUod2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRvclZhbHVlKCksIGhlaWdodCAqIGFzcGVj
dFJhdGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJs
ZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDgyLDcgKzQ4
Miw3IEBAIHN0YXRpYyBib29sIGdyaWRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtCiAgICAgcmV0dXJuIHplcm9FdmFsdWF0ZSh2
YWx1ZSwgb3ApOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb21wdXRlTGVuZ3RoKENT
U1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmIGNvbnZlcnNpb25EYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wdXRl
TGVuZ3RoKENTU1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0MCw3ICs3
NDAsNyBAQCBzdGF0aWMgYm9vbCBhbnlIb3ZlckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsCiBzdGF0aWMgYm9vbCBwb2ludGVyRXZhbHVh
dGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJh
bWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCiB7CiAgICAgYXV0byogcGFnZSA9IGZyYW1l
LnBhZ2UoKTsKLSAgICBhdXRvIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGlu
Z0RldmljZSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wb2ludGVyQ2hhcmFjdGVy
aXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6IE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3M+KCk7CisgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9p
bnRpbmdEZXZpY2UgPSBwYWdlID8gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucG9pbnRlckNoYXJh
Y3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgOiBzdGQ6Om9wdGlvbmFsPFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlm
IChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UgPT0gUG9pbnRl
ckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKaW5kZXggZDFhM2Y3YTdkMGEwNDE5NGFhZTg3MWY0YjU4MDgxZGZmZDNiNzIwOC4uODQ4Zjhj
NDQ2NWY1MTAwOGMzNjIwNTk0YzZjMDAwNWQ5NDY1NWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpNb2RlIHJlc29sdmluZ01vZGU7CiAgICAgICAgIFBzZXVkb0lkIHBz
ZXVkb0lkIHsgUHNldWRvSWQ6Ok5vbmUgfTsKLSAgICAgICAgT3B0aW9uYWw8U3R5bGVTY3JvbGxi
YXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGVTY3Jv
bGxiYXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CiAgICAgICAgIEF0b21TdHJpbmcgbmFtZUZvckhp
Z2h0bGlnaHRQc2V1ZG9FbGVtZW50OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBpc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggYzEzN2M1
OTgxZjc3ZWVmNTJlY2E2NTNiYjhmOWFlNGEwZWU2ZWY3Ni4uNmY2Y2U0MWQ5NzFmYTI0MTUxNWYw
YmNlNDRlZTVmODBmNDNiZGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAKQEAgLTMwNCw3ICszMDQsNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKICAgICB9CiB9CiAKLU9wdGlv
bmFsPENvbG9yPiBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5QXNDb2xvcihDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5KSBjb25zdAorc3RkOjpvcHRpb25hbDxDb2xvcj4gU3R5bGVQcm9wZXJ0aWVzOjpw
cm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKICAgICBhdXRv
IGNvbG9yVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICBpZiAoIWlz
PENTU1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuaAppbmRleCAwMjY1YmFkYjk5YzY1OGViYjc1OWNhYjVlMDIzZDcwZDg0YTM3NzAyLi5i
MDIxYWViN2MyMDM3MGM5ZmMxN2JlNWZiNGM1ZmY2ZTQxN2ZiN2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPENvbG9y
PiBwcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxDb2xvcj4gcHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5SUQpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTU1ZhbHVlSUQgcHJvcGVydHlBc1ZhbHVlSUQoQ1NT
UHJvcGVydHlJRCkgY29uc3Q7CiAKICAgICBib29sIHByb3BlcnR5SXNJbXBvcnRhbnQoQ1NTUHJv
cGVydHlJRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1ND
YWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NT
Q2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyLmNwcAppbmRleCBjMDdkZjdhMWI2NjE5N2Q0YjUxOGY5
YjU0NGFhOGYxYmE2ZDZjODY0Li42MTAwYmRjODJiMzQwOGU0NDdiM2UzZDEwOGUzOGNhNmI0YzEy
YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjRXhwcmVzc2lv
bk5vZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNFeHBy
ZXNzaW9uTm9kZVBhcnNlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIENTU0NhbGNFeHBy
ZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VDYWxjRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
dG9rZW5zLAogCiAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJzIHRvIHRoaW5ncyBiZXR3ZWVuIGNv
bW1hcy4KICAgICB1bnNpZ25lZCBtaW5Bcmd1bWVudENvdW50ID0gMTsKLSAgICBPcHRpb25hbDx1
bnNpZ25lZD4gbWF4QXJndW1lbnRDb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
YXhBcmd1bWVudENvdW50OwogCiAgICAgc3dpdGNoIChmdW5jdGlvbklEKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZU1pbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNP
cGVyYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNPcGVyYXRp
b25Ob2RlLmNwcAppbmRleCA5YjdlNzQ3ODk3ZDJkMmY4YTM1ODc1ODJlNTRiNDJkMjM1MDZkOWY4
Li42MWJjZDcxNWNhZWJlN2QzMGE2NzVlZjQ2MzA3ZTZiYmI1NzM1N2E1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjT3BlcmF0aW9uTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwCkBAIC0zMDgsNyAr
MzA4LDcgQEAgUmVmUHRyPENTU0NhbGNPcGVyYXRpb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9k
ZTo6Y3JlYXRlTWluT3JNYXhPckNsYW1wKENhbGNPcGUKICAgICBBU1NFUlQob3AgPT0gQ2FsY09w
ZXJhdG9yOjpNaW4gfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpNYXggfHwgb3AgPT0gQ2FsY09wZXJh
dG9yOjpDbGFtcCk7CiAgICAgQVNTRVJUX0lNUExJRVMob3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFt
cCwgdmFsdWVzLnNpemUoKSA9PSAzKTsKIAotICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdv
cnk+IGNhdGVnb3J5ID0gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2FsY3VsYXRp
b25DYXRlZ29yeT4gY2F0ZWdvcnkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvJiB2YWx1
ZSA6IHZhbHVlcykgewogICAgICAgICBhdXRvIHZhbHVlQ2F0ZWdvcnkgPSByZXNvbHZlZFR5cGVG
b3JNaW5Pck1heE9yQ2xhbXAodmFsdWUtPmNhdGVnb3J5KCksIGRlc3RpbmF0aW9uQ2F0ZWdvcnkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXggZmE1ZTczMDg0
ZTM0NjE5ZjljMTI2ZWQ0NTlhZjAwZGZlMzUyMjA1YS4uNDA2ZGI4YzhkZTVlMzRlZmNjZTAxMGY4
MGI3ZGRjY2I3ZjIxMTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNw
cApAQCAtMTE2LDEyICsxMTYsMTIgQEAgQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCku
c3lzdGVtQ29sb3Ioa2V5d29yZCwgeyB9KTsKIH0KIAotT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+
IENTU1BhcnNlcjo6cGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyOjpwYXJzZU5hbWVkQ29sb3IoU3RyaW5nVmll
dyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VOYW1lZENv
bG9yKHN0cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXI6OnBh
cnNlSGV4Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBDU1NQYXJzZXI6OnBhcnNlSGV4Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAg
cmV0dXJuIENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VIZXhDb2xvcihzdHJpbmcpOwogfQpAQCAt
MTU1LDcgKzE1NSw3IEBAIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRlY2xhcmF0aW9uCiAgICAgcmV0dXJuIENTU1Bh
cnNlckltcGw6OnBhcnNlVmFsdWUoJmRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGlt
cG9ydGFudCwgbV9jb250ZXh0KTsKIH0KIAotT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBDU1NQ
YXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFs
PENTU1NlbGVjdG9yTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIHJldHVybiBwYXJzZUNTU1NlbGVjdG9yKENTU1Rva2VuaXplcihzdHJp
bmcpLnRva2VuUmFuZ2UoKSwgbV9jb250ZXh0LCBudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5oCmluZGV4IDYwZjE0ZDc4YzUxMTdlZTEyMTU2ZWMzZWY0NDY2NDFj
MWNmOWMyMGMuLmM5OGM5ZTFhNWU1NzhkYzlkYWQzYWUzNmE5YTQ3YmEzYzhmMjdkMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwg
Y29uc3QgRWxlbWVudCopOwogCi0gICAgT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0
PiBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBw
YXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NW
YWx1ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwog
ICAgIHN0YXRpYyBDb2xvciBwYXJzZVN5c3RlbUNvbG9yKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdW
aWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1l
ZENvbG9yKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcpOwogCiBwcml2YXRlOgogICAgIFBhcnNlUmVz
dWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggNTM0MjYwMTY3NDk1ZTg2MzAxNjBkMGJmMTY5Nzcz
NGI3OGE3OWI4MC4uMzRkMWQ0NWYzYTNiNGJhMDc1NzlmNjk2MzM5YWE1YTdkMWM5Y2M4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFVSTCBiYXNlVVJMOwogICAg
IFN0cmluZyBjaGFyc2V0OwogICAgIENTU1BhcnNlck1vZGUgbW9kZSB7IEhUTUxTdGFuZGFyZE1v
ZGUgfTsKLSAgICBPcHRpb25hbDxTdHlsZVJ1bGVUeXBlPiBlbmNsb3NpbmdSdWxlVHlwZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVuY2xvc2luZ1J1bGVUeXBlOwogICAgIGJv
b2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwogCiAgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRl
ZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAppbmRleCBjZGI1ZjUwMzQ2NmVlY2E5NmFm
MDM4NjE3ZmVmZDdmMWZiZWUyNGFmLi45MWI0YjZiYTU1ZTRmYzBmZDU5NThjNjMyOTkzNWRkMmVi
ZmYyMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGludCBwYXJzZURvdWJsZShjb25z
dCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY28KIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8dWlu
dDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3Ry
aW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NT
VW5pdFR5cGUmIGV4cGVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlQ29s
b3JJbnRPclBlcmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hh
cmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIENTU1VuaXRUeXBlJiBleHBl
Y3QpCiB7CiAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY3VycmVudCA9IHN0cmluZzsKICAgICBk
b3VibGUgbG9jYWxWYWx1ZSA9IDA7CkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzVGVudGhBbHBoYShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IGludCBs
ZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlu
bGluZSBPcHRpb25hbDx1aW50OF90PiBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlw
ZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0
b3IpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gcGFyc2VBbHBoYVZhbHVl
KGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwg
Y29uc3QgY2hhciB0ZXJtaW5hdG9yKQogewogICAgIHdoaWxlIChzdHJpbmcgIT0gZW5kICYmIGlz
SFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KCpzdHJpbmcpKQogICAgICAgICBzdHJpbmcrKzsKQEAg
LTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFy
YWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgICYmIGlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1syXSwgJ2InKTsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3QgdmFs
dWUsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3QgdmFsdWUsIHVuc2lnbmVkIGxlbmd0aCkK
IHsKICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgIGNhc2UgMzoKQEAgLTQzNiw3ICs0MzYsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdIZXhDb2xvcih1
aW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4gcGFyc2VIZXhDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9ySW50ZXJu
YWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIGlmIChsZW5ndGggIT0gMyAmJiBsZW5ndGggIT0gNCAmJiBsZW5ndGggIT0gNiAmJiBsZW5n
dGggIT0gOCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MSw3ICs0NTEsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8
dWludDhfdD4+IHBhcnNlSGV4Q29sb3JJbgogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nSGV4Q29s
b3IodmFsdWUsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sb3IoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHN0cmljdCkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2xvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgc3RyaWN0KQogewogICAgIGlmIChsZW5ndGgg
Pj0gNCAmJiBjaGFyYWN0ZXJzWzBdID09ICcjJykgewogICAgICAgICBpZiAoYXV0byBoZXhDb2xv
ciA9IHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSkpCkBA
IC01MDcsNyArNTA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2wKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTnVt
ZXJpY0NvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTnVtZXJpY0Nv
bG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGJvb2wgc3RyaWN0ID0gIWlzUXVpcmtzTW9kZUJlaGF2aW9yKGNvbnRleHQubW9kZSk7
CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjbwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlz
aFBhcnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKICAgICBhdXRvIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3Io
YnVmZmVyLCBsZW5ndGgpOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gZmluaXNoUGFyc2luZ05hbWVkQ29sb3IoY2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBsCiAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyBuYW1lZENvbG9yLT5B
UkdCVmFsdWUgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+
IHBhcnNlTmFtZWRDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBjaGFyIGJ1ZmZlcls2NF07IC8vIEVhc2lseSBiaWcg
ZW5vdWdoIGZvciB0aGUgbG9uZ2VzdCBjb2xvciBuYW1lLgogICAgIGlmIChsZW5ndGggPiBzaXpl
b2YoYnVmZmVyKSAtIDEpCkBAIC01NTIsMjggKzU1MiwyOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTmFtZWRD
b2xvcgogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nTmFtZWRDb2xvcihidWZmZXIsIGxlbmd0aCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBzdHJpY3QpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBzdHJpY3QpCiB7CiAgICAgaWYgKGF1dG8gY29sb3Ig
PSBwYXJzZU51bWVyaWNDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0cmljdCkpCiAgICAgICAg
IHJldHVybiBjb2xvcjsKICAgICByZXR1cm4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY2hhcmFj
dGVycywgbGVuZ3RoKTsKIH0KIAotT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlckZh
c3RQYXRoczo6cGFyc2VTaW1wbGVDb2xvcihTdHJpbmdWaWV3IHN0cmluZywgYm9vbCBzdHJpY3Qp
CitzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNl
U2ltcGxlQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcsIGJvb2wgc3RyaWN0KQogewogICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9ySW50ZXJuYWwo
c3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RyaWN0KTsKICAgICByZXR1
cm4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpLCBzdHJpY3QpOwogfQogCi1PcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFy
c2VyRmFzdFBhdGhzOjpwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZUhleENvbG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiBwYXJzZUhleENvbG9ySW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7CiAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3JJbnRlcm5hbChzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLU9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlTmFtZWRDb2xvcihTdHJpbmdWaWV3IHN0cmluZykK
K3N0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VO
YW1lZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiBwYXJzZU5hbWVkQ29sb3JJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVy
czgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5oCmluZGV4IGY3MTIzN2FhNDM5OGE4ODMxY2JmN2QzZGEyNWM5ZGEw
MzMxODNiMjkuLjg0OTY5NDRkNzE0MzQxMWNjMTRiYmY0NzJlMzY0M2EyM2Y5OTZlN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaApAQCAtNTUs
OSArNTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmKTsKIAogICAgIC8vIFBhcnNlcyBudW1lcmljIGFuZCBuYW1lZCBjb2xvcnMuCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcs
IGJvb2wgc3RyaWN0ID0gZmFsc2UpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsgLy8gSGV4IGNvbG9ycyBvZiBsZW5ndGggMywg
NCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIjIi4KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xvcihTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvcihTdHJpbmdWaWV3LCBi
b29sIHN0cmljdCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsgLy8gSGV4IGNvbG9ycyBvZiBsZW5ndGgg
MywgNCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIjIi4KKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBmZDUxMDYxOTczZTI1MGM5ZjVkZDEyNmQ4MWM4YTc4
MzMzNWM3YWYzLi5kNzRmOTRlMTA1NjJhYTg0NWFhZjc3OTdlNjZhM2RjMjkwN2NhZDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAt
NDI0LDggKzQyNCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEaXNwbGF5KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIH0KIAogICAgIC8vIFBhcnNlIFsgPGRpc3Bs
YXktb3V0c2lkZT4gfHwgPGRpc3BsYXktaW5zaWRlPiBdCi0gICAgT3B0aW9uYWw8Q1NTVmFsdWVJ
RD4gcGFyc2VkRGlzcGxheU91dHNpZGU7Ci0gICAgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2Vk
RGlzcGxheUluc2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHBhcnNlZERpc3Bs
YXlPdXRzaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2VkRGlzcGxheUlu
c2lkZTsKICAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKICAgICAgICAgYXV0byBuZXh0VmFs
dWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOwogICAgICAgICBzd2l0Y2ggKG5leHRWYWx1ZUlEKSB7
CkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU3Rl
cHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgaWYgKCFzdGVwc1ZhbHVlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0
aW9uOjpTdGVwUG9zaXRpb24+IHN0ZXBQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBz
VGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uOwogICAgIGlmIChjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CiAgICAgICAgIHN3aXRjaCAoYXJn
cy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkpIHsKICAgICAgICAgY2FzZSBDU1NW
YWx1ZUp1bXBTdGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCAwYjRmNmJmYjgyYWNiMDc4N2ZiMTY3ODE0
N2VkNWE2NWJmMTFiYWZlLi41NDQzYmIwZTIxZjcwYmRlZjQ3NjE5ODMxYmZkYjUyZjBiMjEwM2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwCkBAIC04Niw3ICs4Niw3IEBAIENTU1BhcnNlclRva2VuUmFuZ2UgY29u
c3VtZUZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBjb250
ZW50czsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlck9yUGVyY2Vu
dERpdmlkZWRCeTEwMFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2
YWx1ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpCiB7CiAg
ICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KHJhbmdlLCB2YWx1ZVJhbmdl
KSkKICAgICAgICAgcmV0dXJuICpwZXJjZW50IC8gMTAwLjA7CkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3RkOjpyb3Vu
ZChzdGQ6Om1heChtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgbWluaW11bVZhbHVlKSksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnRUeXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoZG91YmxlIG1p
bmltdW1WYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBzdGQ6Om9wdGlvbmFs
PEludFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhkb3VibGUgbWluaW11bVZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1
ZVBvb2wuY3JlYXRlVmFsdWUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1i
ZXJSYXcoKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KCkKICAg
ICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkg
IT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Nh
bGNWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGNv
bnN1bWVQZXJjZW50UmF3KCkKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNl
bnRSYXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCisgICAgc3RkOjpvcHRpb25hbDxBbmdsZVJhdz4g
Y29uc3VtZUFuZ2xlUmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwgbV9j
YWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5nbGUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpLCBtX2NhbGNW
YWx1ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TGVuZ3RoUmF3
PiBjb25zdW1lTGVuZ3RoUmF3KCkKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3Vt
ZUxlbmd0aFJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1Zh
bHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBlKCksIG1fY2FsY1ZhbHVl
LT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMZW5ndGhPclBlcmNl
bnRSYXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoKQorICAgIHN0ZDo6b3B0aW9uYWw8TGVu
Z3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KCkKICAgICB7CiAgICAg
ICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTVmFsdWVQb29sJiBtX3ZhbHVlUG9v
bDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IE9wdGlvbmFsPEludFR5cGU+IGNv
bnN1bWVJbnRlZ2VyVHlwZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1p
bmltdW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50
VHlwZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBk
b3VibGUgbWluaW11bVZhbHVlKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9
IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CkBA
IC0yMjYsNyArMjI2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50VHlwZT4gT3B0aW9uYWw8SW50
VHlwZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1BhcnNlclRva2UKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxpbnQ+IGNvbnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQorc3RkOjpvcHRpb25hbDxp
bnQ+IGNvbnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUg
bWluaW11bVZhbHVlKQogewogICAgIHJldHVybiBjb25zdW1lSW50ZWdlclR5cGVSYXc8aW50Pihy
YW5nZSwgbWluaW11bVZhbHVlKTsKIH0KQEAgLTIzOCw3ICsyMzgsNyBAQCBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBk
b3VibGUgbWluaQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4g
Y29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbnN1bWVQb3NpdGl2ZUludGVnZXJSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyVHlwZVJhdzx1
bnNpZ25lZD4ocmFuZ2UsIDEpOwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1l
TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFu
Z2UpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQogewogICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09
IE51bWJlclRva2VuKSB7CkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGRp
dmlzaWJsZUJ5MTAwKGRvdWJsZSB2YWx1ZSkKIH0KICNlbmRpZgogCi1PcHRpb25hbDxkb3VibGU+
IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
c3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIC8vIFZhbHVlcyBsZXNzIHRoYW4gb3IgZXF1YWwg
dG8gMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTAwMCBhcmUgcGFyc2UgZXJyb3JzLgog
ICAgIGF1dG8mIHRva2VuID0gcmFuZ2UucGVlaygpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIGlubGlu
ZSBib29sIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUsCiAgICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJr
c01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3c7CiB9CiAKLU9wdGlvbmFs
PExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCitzdGQ6Om9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0
aFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKQEAgLTQwOCw3ICs0MDgsNyBAQCBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxk
b3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsK
ICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBz
dGF0aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdv
cnksIENTU1BhcnNlck1vZGUgY3NzUAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8
TGVuZ3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2Ug
dmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3N0ZDo6b3B0aW9uYWw8TGVuZ3Ro
T3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVS
YW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNp
b25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKQEAgLTUwOCw3ICs1MDgs
NyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1P
cHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3Ms
IFVuaXRsZXNzWmVyb1F1aXJrIHVuaXRsZXNzWmVybykKK3N0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+
IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBVbml0bGVzc1plcm9RdWly
ayB1bml0bGVzc1plcm8pCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFu
Z2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKQEAg
LTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBBbGxvd1hSZQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVu
dFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygp
LnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
NjU0LDcgKzY1NCw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50V29y
a2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhbmdlUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVy
KQorc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYW5nZVJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikK
IHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQo
KSA+IHVwcGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzM3LDcgKzczNyw3
IEBAIHN0YXRpYyBDb2xvciBjb25zdW1lT3JpZ2luQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4CiAgICAgcmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9y
RnJvbUtleXdvcmQoa2V5d29yZCwgeyB9KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4g
Y29uc3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogewogICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFj
ZShyYW5nZSkpCiAgICAgICAgIHJldHVybiAxLjA7CkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8Q1NTVmFs
dWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENT
U1ZhbHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZU9wdGlvbmFs
QWxwaGFPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRv
IGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEocmFuZ2UpKQogICAgICAgICByZXR1cm4geyAq
YWxwaGEgfTsKQEAgLTc1OSw3ICs3NTksNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93
ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2UsIGNvbnRleHQubW9k
ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyhhbmdsZS0+dHlw
ZSwgYW5nbGUtPnZhbHVlKTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91
YmxlPiBjb25zdW1lSHVlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDbwogICAgIHJldHVybiBjb25zdW1lTnVtYmVyUmF3KHJhbmdlKTsKIH0KIAotdGVtcGxhdGU8
Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3RlbXBsYXRlPENTU1ZhbHVl
SUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUs
IENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBodWUg
PSBjb25zdW1lSHVlKHJhbmdlLCBjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHsgKmh1ZSB9OwpA
QCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBkb3VibGUgbm9ybWFsaXplSHVlKGRvdWJsZSBodWUp
CiAgICAgcmV0dXJuIHN0ZDo6Zm1vZChzdGQ6OmZtb2QoaHVlLCAzNjAuMCkgKyAzNjAuMCwgMzYw
LjApOwogfQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBP
cHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+IGNvbnN1bWVOdW1iZXJPcklkZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxv
d2VkSWRlbnRzPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewog
ICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpKQogICAgICAgICBy
ZXR1cm4geyAqbnVtYmVyIH07CkBAIC03OTQsNyArNzk0LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJ
RC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1Zh
bHVlSUQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlE
Li4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFs
dWVJRD4+IGNvbnN1bWVQZXJjZW50T3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1
bWVQZXJjZW50UmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnBlcmNlbnQgfTsKQEAgLTg2
Nyw3ICs4NjcsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lUkdCT3JIU0xBbHBoYVNlcGFyYXRvcihD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBSR0JPckhTTFNlcAogICAgIHJldHVybiBjb25zdW1l
U2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91
YmxlPiBjb25zdW1lUkdCT3JIU0xPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIFJHQk9ySFNMU2VwYXJhdG9yU3ludGF4IHN5bnRheCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gY29uc3VtZVJHQk9ySFNMT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBSR0JPckhTTFNlcGFyYXRvclN5bnRheCBzeW50YXgpCiB7CiAgICAgaWYgKCFjb25z
dW1lUkdCT3JIU0xBbHBoYVNlcGFyYXRvcihhcmdzLCBzeW50YXgpKQogICAgICAgICByZXR1cm4g
MS4wOwpAQCAtODc3LDEwICs4NzcsMTAgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3Vt
ZVJHQk9ySFNMT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLAogCiBzdHJ1
Y3QgUmVsYXRpdmVSR0JDb21wb25lbnQgewogICAgIFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlE
PiB2YWx1ZTsKLSAgICBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiB0eXBlOworICAgIHN0ZDo6
b3B0aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gdHlwZTsKIH07CiAKLXRlbXBsYXRlPENTU1ZhbHVl
SUQgQz4gc3RhdGljIE9wdGlvbmFsPFJlbGF0aXZlUkdCQ29tcG9uZW50PiBjb25zdW1lUmVsYXRp
dmVSR0JDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgT3B0aW9uYWw8UkdCQ29t
cG9uZW50VHlwZT4gY29tcG9uZW50VHlwZSkKK3RlbXBsYXRlPENTU1ZhbHVlSUQgQz4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkNv
bXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBzdGQ6Om9wdGlvbmFsPFJHQkNvbXBv
bmVudFR5cGU+IGNvbXBvbmVudFR5cGUpCiB7CiAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7CiAg
ICAgICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCkBAIC05MjEs
NyArOTIxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMKICAgICBpZiAoIW9yaWdpbkNvbG9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFJHQkNvbXBv
bmVudFR5cGU+IGNvbXBvbmVudFR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxSR0JDb21wb25lbnRU
eXBlPiBjb21wb25lbnRUeXBlOwogICAgIGF1dG8gcmVkUmVzdWx0ID0gY29uc3VtZVJlbGF0aXZl
UkdCQ29tcG9uZW50PENTU1ZhbHVlUj4oYXJncywgY29tcG9uZW50VHlwZSk7CiAgICAgaWYgKCFy
ZWRSZXN1bHQpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC05ODYsNyArOTg2LDcgQEAgdGVtcGxh
dGU8UkdCRnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMo
Q1NTUGFyc2VyVG9rZW5SYW4KICAgICAgICAgUkdCQ29tcG9uZW50VHlwZSB0eXBlOwogICAgIH07
CiAKLSAgICBhdXRvIGNvbnN1bWVJbml0aWFsQ29tcG9uZW50ID0gW10oYXV0byYgYXJncykgLT4g
T3B0aW9uYWw8SW5pdGlhbENvbXBvbmVudD4geworICAgIGF1dG8gY29uc3VtZUluaXRpYWxDb21w
b25lbnQgPSBbXShhdXRvJiBhcmdzKSAtPiBzdGQ6Om9wdGlvbmFsPEluaXRpYWxDb21wb25lbnQ+
IHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKICAg
ICAgICAgICAgIHJldHVybiB7IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH0g
fTsKICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQpA
QCAtMTYwMSw3ICsxNjAxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JDb250cmFzdEZ1bmN0
aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY28KICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIGlmIChjb25zdW1lZFRvKSB7Ci0gICAgICAgIGF1dG8gdGFyZ2V0Q29u
dHJhc3QgPSBbJl0gKCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CisgICAgICAgIGF1dG8gdGFyZ2V0
Q29udHJhc3QgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgICAg
IGlmIChjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVBQT4oYXJncykpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDQuNTsKICAgICAgICAgICAgIGlmIChjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVBQUxh
cmdlPihhcmdzKSkKQEAgLTE2MjksOSArMTYyOSw5IEBAIGVudW0gY2xhc3MgQ29sb3JNaXhDb2xv
clNwYWNlIHsKICAgICBMY2gKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvck1peENvbG9yU3Bh
Y2U+IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRDb21tYShDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3JNaXhDb2xvclNwYWNlPiBjb25zdW1l
Q29sb3JNaXhDb2xvclNwYWNlQW5kQ29tbWEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsK
LSAgICBhdXRvIGNvbnN1bWVJZGVudEFuZENvbW1hID0gW10oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgQ29sb3JNaXhDb2xvclNwYWNlIGNvbG9yU3BhY2UpIC0+IE9wdGlvbmFsPENvbG9yTWl4
Q29sb3JTcGFjZT4geworICAgIGF1dG8gY29uc3VtZUlkZW50QW5kQ29tbWEgPSBbXShDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBDb2xvck1peENvbG9yU3BhY2UgY29sb3JTcGFjZSkgLT4gc3Rk
OjpvcHRpb25hbDxDb2xvck1peENvbG9yU3BhY2U+IHsKICAgICAgICAgY29uc3VtZUlkZW50UmF3
KGFyZ3MpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTY1OCwxMCArMTY1OCwx
MCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29sb3JNaXhDb2xvclNwYWNlPiBjb25zdW1lQ29sb3JNaXhD
b2xvclNwYWNlQW5kQ29tbWEoQ1NTUGFyc2VyVAogCiBzdHJ1Y3QgQ29sb3JNaXhDb21wb25lbnQg
ewogICAgIENvbG9yIGNvbG9yOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gcGVyY2VudGFnZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGVyY2VudGFnZTsKIH07CiAKLXN0YXRpYyBPcHRpb25h
bDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgQ29sb3JNaXhDb21wb25lbnQgcmVzdWx0OwogCkBAIC0xODQxLDcgKzE4NDEs
NyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvck1peEZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQwogICAgIHJldHVybiBtaXhDb2xvckNvbXBvbmVu
dHMoKmNvbG9yU3BhY2UsICptaXhDb21wb25lbnQxLCAqbWl4Q29tcG9uZW50Mik7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCiB7CiAgICAgU3RyaW5nIHN0cmluZzsKICAg
ICBTdHJpbmdWaWV3IHZpZXc7CkBAIC0xOTkyLDcgKzE5OTIsNyBAQCBzdGF0aWMgUG9zaXRpb25D
b29yZGluYXRlcyBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUp
CiAgICAgcmV0dXJuIHsgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlQ2VudGVyKSB9OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGlu
YXRlcz4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTEsIENT
U1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkNv
b3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVl
MSwgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMikKIHsKICAgICBib29sIG11c3RPcmRlckFzWFkg
PSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBv
c2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFsdWUxLmlzVmFsdWVJRCgpIHx8ICF2YWx1
ZTIuaXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0
aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KHZhbHVlMik7CkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoQXJncyYmLi4uIGFyZ3MpCiAvLyAgIFsgY2Vu
dGVyIHwgWyBsZWZ0IHwgcmlnaHQgXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdICYmCiAvLyAgIFsg
Y2VudGVyIHwgWyB0b3AgfCBib3R0b20gXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdCiAvLwotc3Rh
dGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21U
aHJlZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVl
cykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQ
b3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVl
KiwgNT4mIHZhbHVlcykKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFg7
CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRZOwpAQCAtMjA4Miw3ICsyMDgy
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3Np
dGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKIC8vICAgWyBbIGxlZnQgfCByaWdodCBdIDxs
ZW5ndGgtcGVyY2VudGFnZT4gXSAmJgogLy8gICBbIFsgdG9wIHwgYm90dG9tIF0gPGxlbmd0aC1w
ZXJjZW50YWdlPiBdCiAvLwotc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBv
c2l0aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3RkOjphcnJheTxDU1NQcmltaXRpdmVWYWx1ZSos
IDU+JiB2YWx1ZXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBw
b3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUq
LCA1PiYgdmFsdWVzKQogewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFk7CkBAIC0yMTIwLDcgKzIxMjAs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91
clZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTUwogCiAvLyBGSVhNRTogVGhpcyBtYXkgY29uc3Vt
ZSBmcm9tIHRoZSByYW5nZSB1cG9uIGZhaWx1cmUuIFRoZSBiYWNrZ3JvdW5kCiAvLyBzaG9ydGhh
bmQgd29ya3MgYXJvdW5kIGl0LCBidXQgd2Ugc2hvdWxkIGp1c3QgZml4IGl0IGhlcmUuCi1PcHRp
b25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0
bGVzc1F1aXJrIHVuaXRsZXNzLCBQb3NpdGlvblN5bnRheCBwb3NpdGlvblN5bnRheCkKK3N0ZDo6
b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCiB7
CiAgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKQEAgLTIxNjAsNyArMjE2MCw3
IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU9w
dGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9u
Q29vcmRpbmF0ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3N0ZDo6b3B0aW9uYWw8UG9zaXRp
b25Db29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGF1dG8gdmFsdWUxID0gY29uc3VtZVBvc2l0
aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2
YWx1ZTEpCkBAIC0yOTcxLDE3ICsyOTcxLDE3IEBAIEF0b21TdHJpbmcgY29uc3VtZUNvdW50ZXJT
dHlsZU5hbWVJblByZWx1ZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcHJlbHVkZSkKICAgICByZXR1
cm4gaXNQcmVkZWZpbmVkQ291bnRlclN0eWxlKG5hbWVUb2tlbi5pZCgpKSA/IG5hbWUuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSA6IG5hbWUudG9TdHJpbmcoKTsKIH0KIAotT3B0aW9uYWw8Q1NT
VmFsdWVJRD4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjFSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIx
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBjb25zdW1lSWRl
bnRSYXc8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU21hbGxDYXBzPihyYW5nZSk7CiB9CiAKLU9w
dGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1l
Rm9udFdlaWdodEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsK
ICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJvbGQs
IENTU1ZhbHVlQm9sZGVyLCBDU1NWYWx1ZUxpZ2h0ZXI+KHJhbmdlKTsKIH0KIAotT3B0aW9uYWw8
Rm9udFdlaWdodFJhdz4gY29uc3VtZUZvbnRXZWlnaHRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCitzdGQ6Om9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IGNvbnN1bWVGb250V2VpZ2h0UmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNv
bnN1bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsg
KnJlc3VsdCB9OwpAQCAtMjk5MCwxNyArMjk5MCwxNyBAQCBPcHRpb25hbDxGb250V2VpZ2h0UmF3
PiBjb25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9u
dFN0cmV0Y2hLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6
Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3
PENTU1ZhbHVlVWx0cmFDb25kZW5zZWQsIENTU1ZhbHVlRXh0cmFDb25kZW5zZWQsIENTU1ZhbHVl
Q29uZGVuc2VkLCBDU1NWYWx1ZVNlbWlDb25kZW5zZWQsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1
ZVNlbWlFeHBhbmRlZCwgQ1NTVmFsdWVFeHBhbmRlZCwgQ1NTVmFsdWVFeHRyYUV4cGFuZGVkLCBD
U1NWYWx1ZVVsdHJhRXhwYW5kZWQ+KHJhbmdlKTsKIH0KIAotT3B0aW9uYWw8Q1NTVmFsdWVJRD4g
Y29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1
ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlk
ZW50UmF3PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUl0YWxpYywgQ1NTVmFsdWVPYmxpcXVlPihy
YW5nZSk7CiB9CiAKLU9wdGlvbmFsPEZvbnRTdHlsZVJhdz4gY29uc3VtZUZvbnRTdHlsZVJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQor
c3RkOjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBh
dXRvIHJlc3VsdCA9IGNvbnN1bWVGb250U3R5bGVLZXl3b3JkVmFsdWVSYXcocmFuZ2UpOwogICAg
IGlmICghcmVzdWx0KQpAQCAtMzA1MSwxMiArMzA1MSwxMiBAQCBTdHJpbmcgY29uc3VtZUZhbWls
eU5hbWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIGNvbmNhdGVu
YXRlRmFtaWx5TmFtZShyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVH
ZW5lcmljRmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25h
bDxDU1NWYWx1ZUlEPiBjb25zdW1lR2VuZXJpY0ZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmFuZ2VSYXcocmFuZ2UsIENTU1Zh
bHVlU2VyaWYsIENTU1ZhbHVlV2Via2l0Qm9keSk7CiB9CiAKLU9wdGlvbmFsPFdURjo6VmVjdG9y
PEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1
bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFdURjo6
VmVjdG9yPEZvbnRGYW1pbHlSYXc+IGxpc3Q7CiAgICAgZG8gewpAQCAtMzA3Miw3ICszMDcyLDcg
QEAgT3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKICAgICByZXR1cm4gbGlzdDsKIH0KIAotT3B0aW9u
YWw8Rm9udFNpemVSYXc+IGNvbnN1bWVGb250U2l6ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
KQorc3RkOjpvcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNz
UXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID49IENTU1ZhbHVl
WHhTbWFsbCAmJiByYW5nZS5wZWVrKCkuaWQoKSA8PSBDU1NWYWx1ZUxhcmdlcikgewogICAgICAg
ICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdyhyYW5nZSkpCkBAIC0zMDg2LDcgKzMw
ODYsNyBAQCBPcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLU9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGQ6
Om9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CiAgICAgICAgIGlmIChhdXRv
IGlkZW50ID0gY29uc3VtZUlkZW50UmF3KHJhbmdlKSkKQEAgLTMxMDMsNyArMzEwMyw3IEBAIE9w
dGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0
aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0ZDo6b3B0aW9uYWw8Rm9udFJhdz4gY29u
c3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSkKIHsKICAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0
IG9yIGluaXRpYWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCmluZGV4IDE1ZWRlNGI1NzZiYThmNWRk
ZjFjNGIwZWVhYTRmNTQ4MmJlZjk2YmUuLjdjZWQ2ZGRhNjc2MmJkMGYyZWIzZWI3NTRlODhkYzUz
ZGYzMTMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaApAQCAtNzQsMzUgKzc0LDM1IEBAIHN0cnVjdCBMZW5ndGhSYXcg
ewogCiB1c2luZyBMZW5ndGhPclBlcmNlbnRSYXcgPSBWYXJpYW50PExlbmd0aFJhdywgZG91Ymxl
PjsKIAotT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
JiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpKTsKK3N0ZDo6b3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSk7Ci1PcHRpb25hbDx1bnNpZ25lZD4gY29uc3VtZVBvc2l0aXZl
SW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tl
blJhbmdlJik7Ci1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpOworc3RkOjpvcHRpb25hbDxk
b3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2Ug
PSBWYWx1ZVJhbmdlOjpBbGwpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVt
YmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKLU9wdGlvbmFsPGRvdWJsZT4g
Y29uc3VtZUZvbnRXZWlnaHROdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpv
cHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZvbnRXZWlnaHROdW1i
ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25z
dW1lRm9udFdlaWdodE51bWJlcldvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1Zh
bHVlUG9vbCYpOwotT3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0g
VW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK3N0ZDo6b3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1l
TGVuZ3RoUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
LCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7
Ci1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
LCBWYWx1ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKTsKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBj
b25zdW1lUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSA9IFZhbHVl
UmFuZ2U6OkFsbCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJjZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZVBlcmNlbnRXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJh
bmdlLCBDU1NWYWx1ZVBvb2wmKTsKLU9wdGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitzdGQ6
Om9wdGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NR
dWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwot
T3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5p
dGxlc3NaZXJvUXVpcmsgPSBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKK3N0ZDo6b3B0aW9u
YWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFy
c2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3Na
ZXJvUXVpcmsgPSBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWly
ayA9IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lQW5nbGVXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJN
b2RlLCBDU1NWYWx1ZVBvb2wmLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlk
LCBVbml0bGVzc1plcm9RdWlyayA9IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOwogUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVGltZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZv
cmJpZCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBBbGxvd1hSZXNvbHV0aW9uVW5pdCA9IEFsbG93WFJlc29sdXRpb25V
bml0OjpGb3JiaWQpOwogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRl
bnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lSWRlbnRXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1
ZVBvb2wmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhbmdlUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKTsKK3N0
ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpOwogUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7CiB0ZW1wbGF0ZTxDU1NWYWx1ZUlE
LCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCk7
Ci10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IE9wdGlvbmFsPENTU1ZhbHVl
SUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Cit0ZW1wbGF0ZTxDU1NW
YWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3Vt
ZUlkZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4g
YWxsb3dlZElkZW50cz4gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwogdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRz
PiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudFdvcmtlclNhZmUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlUG9vbCYpOwogCkBAIC0xMjUsOCArMTI1LDggQEAgc3Ry
dWN0IFBvc2l0aW9uQ29vcmRpbmF0ZXMgewogfTsKIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVu
aXRsZXNzUXVpcmssIFBvc2l0aW9uU3ludGF4KTsKLU9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0
ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQ
YXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7Ci1PcHRpb25hbDxQb3Np
dGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVz
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsKK3N0
ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0
ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIFBv
c2l0aW9uU3ludGF4KTsKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3Vt
ZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7CiAKIGVudW0gY2xhc3MgQWxsb3dlZEltYWdl
VHlwZSA6IHVpbnQ4X3QgewogICAgIFVSTEZ1bmN0aW9uID0gMSA8PCAwLApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyCiAKIHN0cnVjdCBGb250U3R5bGVSYXcgewog
ICAgIENTU1ZhbHVlSUQgc3R5bGU7Ci0gICAgT3B0aW9uYWw8QW5nbGVSYXc+IGFuZ2xlOworICAg
IHN0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGFuZ2xlOwogfTsKIHVzaW5nIEZvbnRXZWlnaHRSYXcg
PSBWYXJpYW50PENTU1ZhbHVlSUQsIGRvdWJsZT47CiB1c2luZyBGb250U2l6ZVJhdyA9IFZhcmlh
bnQ8Q1NTVmFsdWVJRCwgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRS
YXc+OwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgdXNpbmcgTGluZUhlaWdodFJhdyA9IFZhcmlhbnQ8
Q1NTVmFsdWVJRCwgZG91YmxlLCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkxlbmcKIHVzaW5n
IEZvbnRGYW1pbHlSYXcgPSBWYXJpYW50PENTU1ZhbHVlSUQsIFN0cmluZz47CiAKIHN0cnVjdCBG
b250UmF3IHsKLSAgICBPcHRpb25hbDxGb250U3R5bGVSYXc+IHN0eWxlOwotICAgIE9wdGlvbmFs
PENTU1ZhbHVlSUQ+IHZhcmlhbnRDYXBzOwotICAgIE9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IHdl
aWdodDsKLSAgICBPcHRpb25hbDxDU1NWYWx1ZUlEPiBzdHJldGNoOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFN0eWxlUmF3PiBzdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHZh
cmlhbnRDYXBzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFdlaWdodFJhdz4gd2VpZ2h0OworICAg
IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gc3RyZXRjaDsKICAgICBGb250U2l6ZVJhdyBzaXpl
OwotICAgIE9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGxpbmVIZWlnaHQ7CisgICAgc3RkOjpvcHRp
b25hbDxMaW5lSGVpZ2h0UmF3PiBsaW5lSGVpZ2h0OwogICAgIFZlY3RvcjxGb250RmFtaWx5UmF3
PiBmYW1pbHk7CiB9OwogCkBAIC0xNjksMTkgKzE2OSwxOSBAQCBib29sIGlzUHJlZGVmaW5lZENv
dW50ZXJTdHlsZShDU1NWYWx1ZUlEKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3Vt
ZUNvdW50ZXJTdHlsZU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogQXRvbVN0cmluZyBjb25z
dW1lQ291bnRlclN0eWxlTmFtZUluUHJlbHVkZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLU9w
dGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250V2VpZ2h0S2V5d29y
ZFZhbHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+
IGNvbnN1bWVGb250V2VpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPENT
U1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJik7Ci1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9udFN0eWxlS2V5d29yZFZh
bHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPEZvbnRTdHlsZVJhdz4gY29u
c3VtZUZvbnRTdHlsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSk7Citz
dGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRX
ZWlnaHRLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25h
bDxGb250V2VpZ2h0UmF3PiBjb25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
Jik7CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRW
YWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+
IGNvbnN1bWVGb250U3R5bGVLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwor
c3RkOjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwogU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFt
ZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiBTdHJpbmcgY29uc3VtZUZhbWlseU5hbWVSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUdlbmVyaWNG
YW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8VmVjdG9yPEZvbnRGYW1p
bHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1PcHRp
b25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
LCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsK
LU9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKLU9wdGlvbmFsPEZvbnRSYXc+IGNvbnN1bWVGb250
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8
Q1NTVmFsdWVJRD4gY29uc3VtZUdlbmVyaWNGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
Oworc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK3N0ZDo6b3B0aW9uYWw8Rm9udFNpemVSYXc+IGNv
bnN1bWVGb250U2l6ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5p
dGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitzdGQ6Om9wdGlvbmFsPExpbmVI
ZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQ
YXJzZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwogY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJp
Y0ZvbnRGYW1pbHkoQ1NTVmFsdWVJRCk7CiBXZWJLaXRGb250RmFtaWx5TmFtZXM6OkZhbWlseU5h
bWVzSW5kZXggZ2VuZXJpY0ZvbnRGYW1pbHlJbmRleChDU1NWYWx1ZUlEKTsKIApAQCAtMTk1LDcg
KzE5NSw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWlsPiBp
bmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJCiAgICAgcmV0dXJuIGlkID09IGhlYWQg
fHwgaWRlbnRNYXRjaGVzPHRhaWwuLi4+KGlkKTsKIH0KIAotdGVtcGxhdGU8Q1NTVmFsdWVJRC4u
LiBuYW1lcz4gT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBuYW1lcz4gc3RkOjpvcHRp
b25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRl
bnRNYXRjaGVzPG5hbWVzLi4uPihyYW5nZS5wZWVrKCkuaWQoKSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKaW5kZXggYjgwYjY3OGEyYWM3ZTdiOTY1OTY1
NTM2MWZmYmE5OWNjMWQ3ZDJjMi4uZmQ5NTM3OGJmOGI2M2NhZjc3ZGVmNDIxMjRmZjgyZDdjYzBl
MDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlcldvcmtlclNhZmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcApAQCAtNTEsNyArNTEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLU9wdGlvbmFsPENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJhdz4g
Q1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlOjpwYXJzZUZvbnQoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIENTU1BhcnNlck1vZGUgbW9kZSkKK3N0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpGb250UmF3PiBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmU6OnBhcnNlRm9udChj
b25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBtb2RlKQogewogICAgIENTU1Rva2Vu
aXplciB0b2tlbml6ZXIoc3RyaW5nKTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKHRv
a2VuaXplci50b2tlblJhbmdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmgKaW5kZXggNWQxZTIwODNiOTM4MWU4
NmIwMGRlODNiNGE0MjFlM2NhOTMwOTcwMy4uMDU0ZmJiZTZjZjE1NzExOTdkZDQzOGYwYzcxMGNh
MDI2Y2Y2NjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlcldvcmtlclNhZmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUgewog
cHVibGljOgogICAgIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXc+IHBhcnNl
Rm9udChjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gSFRNTFN0YW5kYXJkTW9kZSk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3
PiBwYXJzZUZvbnQoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSA9IEhUTUxTdGFuZGFyZE1v
ZGUpOwogCiAgICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VTcmMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlRm9udEZhY2VTdHlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCmluZGV4IDk4MjcxZDAxZDJkYjM0NDZjN2ZkMTM5MzkwZmNkMGFmYjJhYzFl
M2MuLjc3NzRjYTc3YThjMzA1MWIzMmU1NTBmNWQ1NGExN2M4MGZkNTRkODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIHByaXZhdGU6CiBzdGF0aWMgQXRvbVN0cmluZyBzZXJpYWxpemVBTlBsdXNCKGNvbnN0
IHN0ZDo6cGFpcjxpbnQsIGludD4mKTsKIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBzdGQ6OnBhaXI8aW50LCBpbnQ+Jik7CiAKLU9wdGlvbmFsPENTU1Nl
bGVjdG9yTGlzdD4gcGFyc2VDU1NTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxl
U2hlZXQpCitzdGQ6Om9wdGlvbmFsPENTU1NlbGVjdG9yTGlzdD4gcGFyc2VDU1NTZWxlY3RvcihD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCiB7CiAgICAgQ1NTU2VsZWN0b3JQYXJz
ZXIgcGFyc2VyKGNvbnRleHQsIHN0eWxlU2hlZXQpOwogICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9y
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmgK
aW5kZXggMjc3NjYxY2UxMDFlNmRmYTY4YmExMDhmNTE5MWFkNmFmNmMyOWVjMi4uNTUwMDIxNDQ3
ZDlmMTZmMWM0OGFmMTlmN2M0ODlkZTAwMmIxZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaApAQCAtOTEsNiArOTEsNiBAQCBwcml2YXRlOgog
CiAKIAotT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZUNTU1NlbGVjdG9yKENTU1BhcnNl
clRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMq
KTsKK3N0ZDo6b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZUNTU1NlbGVjdG9yKENTU1Bh
cnNlclRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVu
dHMqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBmYjY3Mjc3NDM2ZjBlYTVmNDkwOGE0MzcxZTNl
MTk0ODg5NDM2YzFmLi45MGYwNDM5YjcyZjY0MTQxNWFmZjhlMDBmMzU4NmNhMWU5MTgyYzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVz
dHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RvcjsgfQogICAgICAgICBWZWN0b3I8
TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIHsgcmV0dXJuIG1fZXhwcmVzc2lv
bnM7IH0KLSAgICAgICAgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgbWVkaWFUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJp
bmc+JiBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhVHlwZTsgfQogCiAgICAgICAg
IGJvb2wgY3VycmVudE1lZGlhUXVlcnlDaGFuZ2VkKCkgY29uc3QKICAgICAgICAgewpAQCAtMTEx
LDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZWRpYVF1ZXJ5
OjpSZXN0cmljdG9yIG1fcmVzdHJpY3RvciB7IE1lZGlhUXVlcnk6Ok5vbmUgfTsKLSAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBtX21lZGlhVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1fbWVkaWFUeXBlOwogICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1f
ZXhwcmVzc2lvbnM7CiAgICAgICAgIFN0cmluZyBtX21lZGlhRmVhdHVyZTsKICAgICAgICAgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQgbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IGUzODljM2U5MTUzZWRkNjEwOGI2MTQwYzAwNzA4YmM4
ZjlkOWU0ZWUuLjI2YWI2YjkwNmQ1YzFkMTkyNDNhMTBkZTM0NTFiY2EyNmFlZDQ0MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTM4OSw4ICszODks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNUYXJnZXQoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogICAgIC8vIEhlbHBlcnMuCi0gICAgdm9pZCBn
ZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwotICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0
aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJl
bGF0aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5
bGU6OlJlbGF0aW9uOjpUeXBlLCBzdGQ6Om9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4g
dmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVt
ZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdp
c3RlcklEPiB2YWx1ZSA9IHsgfSk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2
aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
LCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0Nv
bnRleHQpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBicmFuY2hPblJlc29sdmluZ01vZGUoQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50
SXNGaXJzdExpbmsoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6
OlJlZ2lzdGVySUQgZWxlbWVudCk7CkBAIC0yNDQ1LDcgKzI0NDUsNyBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVJbmRpcmVjdEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJs
ZXI6Okp1bXBMaQogICAgIGxvY2FsRmFpbHVyZUNhc2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fz
c2VtYmxlcik7CiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0
eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50
LCBTdHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6
OlJlZ2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
QWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVs
ZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8
QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKIHsKICAgICBpZiAobV9zZWxlY3RvckNvbnRl
eHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKQogICAgICAgICByZXR1cm47CkBA
IC0yNDcxLDcgKzI0NzEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTW9k
dWxvSGVscGVyLCBpbnQsIChpbnQgZGl2aWRlbmQsIGludCBkaXZpc29yKQogfQogI2VuZGlmCiAK
LXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIE9wdGlvbmFsPEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0Nv
bnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5
cGUgcmVsYXRpb25UeXBlLCBzdGQ6Om9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFs
dWUpCiB7CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250ZXh0ICE9IFNlbGVjdG9yQ29udGV4dDo6
UXVlcnlTZWxlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKaW5k
ZXggZWZmZjllMTIyMDZmODM0YWVmZWM4ZWZkNzU0NTI5MTIzNDFlOTFiNi4uMWVhNjQ4YzBlM2Fl
MTk4MTAyZGVlODA4ODg0MzI3ZGRiZjdiOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNw
bGF5VHJlZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgQ29udGFpbmVyQm94JiBUcmVlOjpy
b290Qm94KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94PihtX3Jvb3RT
dGFja2luZ0l0ZW0tPmJveCgpKTsKIH0KIAotdm9pZCBUcmVlOjpzZXRCb3hOZWVkc0Rpc3BsYXko
Qm94JiwgT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+KSBjb25zdAordm9pZCBUcmVlOjpzZXRC
b3hOZWVkc0Rpc3BsYXkoQm94Jiwgc3RkOjpvcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4pIGNv
bnN0CiB7CiAgICAgLy8gRklYTUU6IEZvciBub3csIGp1c3QgcmVwYWludCB0aGUgd29ybGQuCiAg
ICAgaWYgKG1fdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxh
eVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAppbmRleCBiMGE4
YWU3NGZiNTYxOTdjZWVkMTYzZGViZTU4NTRhMjBmYWZiNTZlLi5mMGMwYzQyNzQ0Yzc1ZDA3YjE2
YjJmNDAzMjZjNWZkN2NkYTdmODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L0Rpc3BsYXlUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdGFja2luZ0l0ZW0mIHJvb3RT
dGFja2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiAqbV9yb290U3RhY2tpbmdJdGVtOyB9CiAgICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdEJveCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3hO
ZWVkc0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgc2V0Qm94TmVlZHNEaXNwbGF5KEJveCYsIHN0
ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0Um9vdFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1
ZV9wdHI8U3RhY2tpbmdJdGVtPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUJveC5jcHAKaW5kZXggMWY0NjEyZWNlZmE2MDA5ODlhNThkOWEwM2E4MzQ2ZTY0NGE4ZDYzYi4u
NzNlN2ZkMDRmYzI1ZGIyM2U0OWVhYjc1MzA3ZDYyMzFiYzE3NWMxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBCb3g6
OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpIGNvbnN0CiAgICAgcmV0dXJuICFpc0xpbmVC
cmVha0JveCgpICYmIHN0eWxlKCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCk7CiB9CiAK
LXZvaWQgQm94OjpzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1
YnJlY3QpCit2b2lkIEJveDo6c2V0TmVlZHNEaXNwbGF5KHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVG
bG9hdFJlY3Q+IHN1YnJlY3QpCiB7CiAgICAgbV90cmVlLnNldEJveE5lZWRzRGlzcGxheSgqdGhp
cywgc3VicmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKaW5k
ZXggNjVmZmUzYWM0MWE4MWJkY2ZlNzA1NGE2NmRkZjhiMTBlOGRiNTliNS4uZTk2NjljZjVjYmYx
N2Y3OTZkYTFjMDNjYThkZTQyZDRkZGYyNmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlCb3guaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQm94KiBu
ZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNpYmxpbmcuZ2V0KCk7IH0KICAgICB2
b2lkIHNldE5leHRTaWJsaW5nKHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYpOwogCi0gICAgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KHN0ZDo6b3B0aW9uYWw8QWJzb2x1
dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBTdHJp
bmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94Q2xpcC5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUJveENsaXAuaAppbmRleCBkNTFkOGU0ZDhhZDdlYTQ1MzZhNWI0ZGE0YTc5Y2Rk
ZWJlMTJkMDllLi5mMjc2OTk1Njc3MDBkY2MzYjk1YWQzZjQ2ZTg5YjdkOTJlODIyMjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94Q2xpcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hDbGlwLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Qm94Q2xpcD4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCb3hDbGlwKTsgfQogICAgIFJlZjxCb3hDbGlwPiBjb3B5KCkgY29uc3Q7
CiAKLSAgICBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gY2xpcFJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2NsaXBSZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4g
Y2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9CiAgICAgCiAgICAgYm9vbCBh
ZmZlY3RlZEJ5Qm9yZGVyUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5Qm9yZGVy
UmFkaXVzOyB9CiAgICAgY29uc3QgVmVjdG9yPEZsb2F0Um91bmRlZFJlY3Q+JiBjbGlwU3RhY2so
KSBjb25zdCB7IHJldHVybiBtX2NsaXBTdGFjazsgfQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRl
OgogICAgIEJveENsaXAoKTsKICAgICBCb3hDbGlwKGNvbnN0IEJveENsaXAmKTsKIAotICAgIE9w
dGlvbmFsPEFic29sdXRlRmxvYXRSZWN0PiBtX2NsaXBSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8
QWJzb2x1dGVGbG9hdFJlY3Q+IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPEZsb2F0Um91bmRlZFJl
Y3Q+IG1fY2xpcFN0YWNrOwogICAgIGJvb2wgbV9hZmZlY3RlZEJ5Qm9yZGVyUmFkaXVzIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCBkNDY4ZmJjMGY3NmFiMGIyZGIyMjJh
ZDYwYWNjZGU0YzY2NWRmMjBiLi4wMTI5OTA0YjA4OGE5ODI3NjY1ODBkZDYzMWJlNDk4MjQ5Y2Vl
ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RGVj
b3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3hEZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgQm9y
ZGVyUGFpbnRlcjo6cGFpbnRCb3JkZXJzKFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0
KSBjb25zdAogICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVkZ2VzID0gdHJ1ZTsKICAgICBpbnQgbnVt
RWRnZXNWaXNpYmxlID0gNDsKICAgICBib29sIGFsbEVkZ2VzU2hhcmVDb2xvciA9IHRydWU7Ci0g
ICAgT3B0aW9uYWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxlU2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEJveFNpZGU+IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAgQm94U2lkZVNldCBlZGdlc1RvRHJhdzsK
IAogICAgIGZvciAoYXV0byBzaWRlIDogYWxsQm94U2lkZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0
cmFjdFJhbmdlLmNwcAppbmRleCA0MGY1ODU2MTgzYjI3NjE4NjUyN2NlMzBkYzAxOWIxMzIzZDk5
MjAwLi42YjYyOTRjNmY4MTg5NWJlZjY1ZDg2YTA1OWYzZTQ5Y2YwZmIyNGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAgU2ltcGxlUmFuZ2Ug
bWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJlZjxBYnN0cmFjdFJhbmdlPiYgcmFuZ2UpCiAgICAgcmV0
dXJuIG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFuZ2UpCitzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSog
cmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKCpyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmUHRyPEFic3RyYWN0UmFuZ2U+JiByYW5n
ZSkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQ
dHI8QWJzdHJhY3RSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uo
cmFuZ2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0
UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmgKaW5kZXggZWE4ZTM0
YzYxNmJmZmQwNGQ4ZDgzMzNkN2ExMmIyNGUyYzlkOGZlNy4uZGM4OWQ0NmU2OTJjMmM3MTBiNzMy
ODFhZWVmMTcwMDY0N2E1YTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3Ry
YWN0UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNp
bXBsZVJhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmKTsKIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVS
YW5nZShjb25zdCBSZWY8QWJzdHJhY3RSYW5nZT4mKTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBt
YWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSopOwotT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8QWJzdHJhY3RSYW5nZT4mKTsKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdl
Kik7CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVm
UHRyPEFic3RyYWN0UmFuZ2U+Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50
TGlzdGVuZXJPcHRpb25zLmgKaW5kZXggYTA3N2E1YzYzNGY3OTE5OWY0N2YyODgyYTFkNDkzZmQ3
ODU1OTUyMy4uYzJkZjczZjJiM2YxZGFmZGY5N2NlNGY3MzEyODZiZTQ3Njk5ODM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRp
b25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewotICAgIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25z
KGJvb2wgY2FwdHVyZSA9IGZhbHNlLCBPcHRpb25hbDxib29sPiBwYXNzaXZlID0gc3RkOjpudWxs
b3B0LCBib29sIG9uY2UgPSBmYWxzZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51
bGxwdHIpCisgICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2Us
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0ZDo6bnVsbG9wdCwgYm9vbCBvbmNlID0g
ZmFsc2UsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBzaWduYWwgPSBudWxscHRyKQogICAgICAgICA6
IEV2ZW50TGlzdGVuZXJPcHRpb25zKGNhcHR1cmUpCiAgICAgICAgICwgcGFzc2l2ZShwYXNzaXZl
KQogICAgICAgICAsIG9uY2Uob25jZSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IEFkZEV2ZW50
TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewogICAgIHsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxib29sPiBwYXNzaXZlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFz
c2l2ZTsKICAgICBib29sIG9uY2UgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxBYm9ydFNpZ25hbD4g
c2lnbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuY3BwCmluZGV4IDhmYjE5
ZDU5MDc5NTExZmNkMzAxNmE4M2Q1MjlmNjk0MjY3Y2Q2MjcuLjRmMjk1NGVlN2MzYmI0NGQ2YmIx
ZmJiOWEwMDNhZjExZjRjMWZjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Bbmlt
YXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBBbmltYXRpb25FdmVudDo6QW5pbWF0aW9uRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLUFuaW1h
dGlvbkV2ZW50OjpBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlv
biogYW5pbWF0aW9uKQorQW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRU
aW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
dGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICA6IEFuaW1hdGlvbkV2
ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkKICAgICAsIG1fYW5pbWF0aW9u
TmFtZShhbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKaW5kZXggNzk1NWQ3MTFjYWI3ZjdiOWRkYmY2YTBh
Y2Q5MGY2MGJjMDEzM2Y5Yy4uZmVlMTMwZTA0ZDk2ZmQ4NjFlOGUwMDRjMWM3Y2Q2NzY3MmUyNGFl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgQW5p
bWF0aW9uRXZlbnRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuaW1hdGlvbkV2
ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
ZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICBzdGF0aWMgUmVm
PEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNl
dWRvRWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1h
dGlvbiogYW5pbWF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5p
bWF0aW9uRXZlbnQodHlwZSwgYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1l
bnQsIHRpbWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQpAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICBBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3Qg
U3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdl
YkFuaW1hdGlvbiopOworICAgIEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
LCBXZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCmluZGV4IGQyNmQyZWNhNjQ2YjhhZWM0YzRl
ZWU4NDQyMWEzZWE4ODMwOGE1YmMuLmNiMTIwNjc1MGY4YmIxMTRhYzNlMDgwYjIzZGY0OTRmZDIx
MDc0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFy
eVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2kKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVl
T3JkZXI8IFNoYWRvd0luY2x1ZGluZ1RyZWUgPihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3Qg
Qm91bmRhcnlQb2ludCYpOwogdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxDb21w
b3NlZFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAK
LU9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2Rl
JiBub2RlKQorc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJl
Zm9yZU5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9k
ZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNDEsNyArNDEsNyBAQCBPcHRpb25hbDxCb3VuZGFy
eVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkKICAgICByZXR1
cm4gQm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUuY29tcHV0ZU5vZGVJbmRleCgpIH07CiB9
CiAKLU9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5v
ZGUmIG5vZGUpCitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50
QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5v
ZGUoKTsKICAgICBpZiAoIXBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9C
b3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCmluZGV4
IDZkMTgwMjZiZWUwYjc4OTQxNzIzMzk5MmY0NDliYWI0N2FjYTE5OGUuLjU5NjExMTIzOWIwMzVi
ZDE3ZDAzYjczM2NhZDYwMTU1NWVmZGFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Cb3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQu
aApAQCAtNDMsOCArNDMsOCBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgQm91bmRhcnlQb2ludCYs
IGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0
aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFy
eVBvaW50Jik7CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VC
b3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJik7CitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVm
b3JlTm9kZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmKTsKIEJvdW5kYXJ5UG9pbnQgbWFr
ZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoTm9kZSYpOwogQm91bmRhcnlQb2ludCBt
YWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZUNvbnRlbnRzKE5vZGUmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmgKaW5kZXggN2ZhZWQ5OGEwYjFlYjEyYTllYTBhYWY2
ZjAwOTk3MzZkOGJjODM4Yi4uNjBhNWIxMmQ2NWQ3MzljODI5Yjk5ZTExN2ZlYzNkNGM0MWQyYzAy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5oCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0
cygpOwogICAgIHZvaWQgdXBkYXRlQ29uc3RhbnRzRm9yRnVsbHNjcmVlbigpOwogCi0gICAgT3B0
aW9uYWw8VmFsdWVzPiBtX3ZhbHVlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlcz4gbV92YWx1
ZXM7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCAwNThjZmExMDZkZjc5
ODk3OTgwNTc0MzEyMWI3YzI1MmZiYzg0ZmYxLi5iMjZlNzlhODY4M2I3YmJjM2FhMTFkYjk3NmMy
Y2Y1M2RlNzQzZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1f
dHlwZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb2xkRG9jdW1lbnQ7CiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX25ld0RvY3VtZW50OwotICAgIE9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0
cmlidXRlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmlidXRl
TmFtZTsKICAgICBBdG9tU3RyaW5nIG1fb2xkVmFsdWU7CiAgICAgQXRvbVN0cmluZyBtX25ld1Zh
bHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKaW5kZXgg
MjEzNWMyMThjOTAwN2MwMmQ4NDQ3MDNkNDIyNzAwYjMwZjAwMmIyYS4uODNjYWRjZWU3OTdlNzEy
MThjZmRkZmE5YWQyN2UwNDJjYTkxZWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlckl0ZW1MaXN0LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJhbnNmZXI7Ci0g
ICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+Pj4gbV9pdGVt
czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVt
Pj4+IG1faXRlbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlTW90aW9uRGF0YS5jcHAKaW5kZXggMTEyNDc4NThhYjIxYmIxYjVlZTJjZWNiMDA0
MWI4NjlkNzM3Y2Q3Ny4uMDY4MTZhNmM4OTE0MTIzMmYyNjVmZWYwYWEzZDA0OTc3NjAzYWIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmNwcApAQCAtMzMsMTIgKzMzLDEy
IEBAIFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU1vdGlvbkRhdGEpOwogfQogCi1SZWY8RGV2aWNl
TW90aW9uRGF0YT4gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKFJlZlB0cjxBY2NlbGVyYXRpb24+
JiYgYWNjZWxlcmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlLCBPcHRpb25h
bDxkb3VibGU+IGludGVydmFsKQorUmVmPERldmljZU1vdGlvbkRhdGE+IERldmljZU1vdGlvbkRh
dGE6OmNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbiwgUmVmUHRyPEFj
Y2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90YXRp
b25SYXRlPiYmIHJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU1vdGlvbkRhdGEoV1RGTW92ZShhY2Nl
bGVyYXRpb24pLCBXVEZNb3ZlKGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkpLCBXVEZNb3Zl
KHJvdGF0aW9uUmF0ZSksIGludGVydmFsKSk7CiB9CiAKLURldmljZU1vdGlvbkRhdGE6OkRldmlj
ZU1vdGlvbkRhdGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24sIFJlZlB0cjxB
Y2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgUmVmUHRyPFJvdGF0
aW9uUmF0ZT4mJiByb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpCitEZXZp
Y2VNb3Rpb25EYXRhOjpEZXZpY2VNb3Rpb25EYXRhKFJlZlB0cjxBY2NlbGVyYXRpb24+JiYgYWNj
ZWxlcmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dy
YXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gaW50ZXJ2YWwpCiAgICAgOiBtX2FjY2VsZXJhdGlvbihXVEZNb3ZlKGFjY2VsZXJh
dGlvbikpCiAgICAgLCBtX2FjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoV1RGTW92ZShhY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KSkKICAgICAsIG1fcm90YXRpb25SYXRlKFdURk1vdmUo
cm90YXRpb25SYXRlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rp
b25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCmluZGV4IGU3
OTk0ZTM3ZTcyMDE2ZWRiMzk1NmIzYTdhMjhkYzMwMTcxMWRjNWMuLmNjZGI4N2EwOGY1NDU0MGFm
MmIxMWIyNWUyZWUwNDE2MDg3NGYyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VNb3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRh
dGEuaApAQCAtMzksMjcgKzM5LDI3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0aW9uKTsKICAgICAgICAgfQotICAgICAgICBz
dGF0aWMgUmVmPEFjY2VsZXJhdGlvbj4gY3JlYXRlKE9wdGlvbmFsPGRvdWJsZT4geCwgT3B0aW9u
YWw8ZG91YmxlPiB5LCBPcHRpb25hbDxkb3VibGU+IHopCisgICAgICAgIHN0YXRpYyBSZWY8QWNj
ZWxlcmF0aW9uPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geikKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0aW9uKHgsIHksIHopKTsKICAgICAgICAg
fQogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4geCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQot
ICAgICAgICBPcHRpb25hbDxkb3VibGU+IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBBY2NlbGVyYXRpb24oKSA9IGRlZmF1bHQ7Ci0gICAgICAgIEFjY2VsZXJh
dGlvbihPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91
YmxlPiB6KQorICAgICAgICBBY2NlbGVyYXRpb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geikKICAgICAgICAg
ICAgIDogbV94KHgpCiAgICAgICAgICAgICAsIG1feSh5KQogICAgICAgICAgICAgLCBtX3ooeikK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX3g7Ci0g
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbV95OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1f
ejsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1feDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1feTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fejsKICAg
ICB9OwogCiAgICAgY2xhc3MgUm90YXRpb25SYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RGV2aWNl
TW90aW9uRGF0YTo6Um90YXRpb25SYXRlPiB7CkBAIC02OCw0NiArNjgsNDYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSb3RhdGlvblJhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Um90YXRpb25SYXRlPiBjcmVhdGUoT3B0
aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3Vi
bGU+IGdhbW1hKQorICAgICAgICBzdGF0aWMgUmVmPFJvdGF0aW9uUmF0ZT4gY3JlYXRlKHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBnYW1tYSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUm90YXRpb25SYXRlKGFscGhhLCBiZXRhLCBnYW1tYSkpOwogICAgICAgICB9
CiAKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxw
aGE7IH0KLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBiZXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
ZXRhOyB9Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEoKSBjb25zdCB7IHJldHVybiBt
X2dhbW1hOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWxwaGE7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEoKSBj
b25zdCB7IHJldHVybiBtX2JldGE7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdh
bW1hKCkgY29uc3QgeyByZXR1cm4gbV9nYW1tYTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Um90YXRpb25SYXRlKCkgPSBkZWZhdWx0OwotICAgICAgICBSb3RhdGlvblJhdGUoT3B0aW9uYWw8
ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdh
bW1hKQorICAgICAgICBSb3RhdGlvblJhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hKQog
ICAgICAgICAgICAgOiBtX2FscGhhKGFscGhhKQogICAgICAgICAgICAgLCBtX2JldGEoYmV0YSkK
ICAgICAgICAgICAgICwgbV9nYW1tYShnYW1tYSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IG1fYmV0YTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2dhbW1hOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gbV9hbHBoYTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IG1fYmV0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZ2FtbWE7CiAgICAgfTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRl
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBjcmVh
dGUoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiwgUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90YXRpb25SYXRlPiYmLCBPcHRpb25hbDxk
b3VibGU+IGludGVydmFsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERldmljZU1v
dGlvbkRhdGE+IGNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0aW9uPiYmLCBSZWZQdHI8QWNjZWxlcmF0
aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+
JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnRlcnZhbCk7CiAKICAgICBjb25zdCBBY2NlbGVy
YXRpb24qIGFjY2VsZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0aW9uLmdldCgp
OyB9CiAgICAgY29uc3QgQWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5
KCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LmdldCgpOyB9
CiAgICAgY29uc3QgUm90YXRpb25SYXRlKiByb3RhdGlvblJhdGUoKSBjb25zdCB7IHJldHVybiBt
X3JvdGF0aW9uUmF0ZS5nZXQoKTsgfQogICAgIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2
YWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbDsgfQogCiBwcml2YXRlOgog
ICAgIERldmljZU1vdGlvbkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgRGV2aWNlTW90aW9uRGF0YShS
ZWZQdHI8QWNjZWxlcmF0aW9uPiYmLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlv
bkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYsIE9wdGlvbmFsPGRvdWJs
ZT4gaW50ZXJ2YWwpOworICAgIERldmljZU1vdGlvbkRhdGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4m
JiwgUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBS
ZWZQdHI8Um90YXRpb25SYXRlPiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpOwog
CiAgICAgUmVmUHRyPEFjY2VsZXJhdGlvbj4gbV9hY2NlbGVyYXRpb247CiAgICAgUmVmUHRyPEFj
Y2VsZXJhdGlvbj4gbV9hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5OwogICAgIFJlZlB0cjxS
b3RhdGlvblJhdGU+IG1fcm90YXRpb25SYXRlOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbnRl
cnZhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9pbnRlcnZhbDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VN
b3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3Bw
CmluZGV4IDg0MmY2ZWVjYjMzY2IzZGUxYmM2ZTM1ZmE0OTcwYjhhYjVkMGZhMjguLjRlYThhOGNj
M2I0MGNmZjI4Nzk3MjQ4NDg1YTBhZjIwNTQ3ODcyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkV2ZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBEZXZpY2VNb3Rpb25FdmVudDo6
RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rp
b25EYQogewogfQogCi1zdGF0aWMgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJh
dGlvbj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2Vs
ZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVy
YXRpb24+IGNvbnZlcnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uKiBhY2Nl
bGVyYXRpb24pCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxEZXZpY2VNb3Rpb25F
dmVudDo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6CiAgICAg
cmV0dXJuIERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24geyBhY2NlbGVyYXRpb24tPngo
KSwgYWNjZWxlcmF0aW9uLT55KCksIGFjY2VsZXJhdGlvbi0+eigpIH07CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90YXRpb25SYXRlPiBjb252ZXJ0KGNvbnN0IERl
dmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRpb25SYXRlKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4gY29udmVydChjb25zdCBE
ZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSkKIHsKICAgICBpZiAo
IXJvdGF0aW9uUmF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0LDcgKzY0
LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IGNv
bnZlcnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YToKICAgICByZXR1cm4gRGV2aWNlTW90aW9uRXZl
bnQ6OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSwgcm90YXRpb25SYXRlLT5i
ZXRhKCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9OwogfQogCi1zdGF0aWMgUmVmUHRyPERldmlj
ZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gY29udmVydChPcHRpb25hbDxEZXZpY2VNb3Rpb25F
dmVudDo6QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RGV2aWNl
TW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KHN0ZDo6b3B0aW9uYWw8RGV2aWNlTW90
aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24pCiB7CiAgICAgaWYgKCFhY2Nl
bGVyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzUsNyArNzUsNyBAQCBzdGF0
aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gY29udmVydChPcHRpb25h
bDxEZXZpY2VNb3Rpb25FdmVudAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb246OmNyZWF0ZShhY2NlbGVyYXRpb24tPngsIGFjY2VsZXJhdGlvbi0+eSwgYWNjZWxlcmF0
aW9uLT56KTsKIH0KIAotc3RhdGljIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJh
dGU+IGNvbnZlcnQoT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4mJiBy
b3RhdGlvblJhdGUpCitzdGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0
ZT4gY29udmVydChzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+
JiYgcm90YXRpb25SYXRlKQogewogICAgIGlmICghcm90YXRpb25SYXRlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTg2LDI3ICs4NiwyNyBAQCBzdGF0aWMgUmVmUHRyPERldmljZU1vdGlv
bkRhdGE6OlJvdGF0aW9uUmF0ZT4gY29udmVydChPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudAog
ICAgIHJldHVybiBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZShyb3RhdGlv
blJhdGUtPmFscGhhLCByb3RhdGlvblJhdGUtPmJldGEsIHJvdGF0aW9uUmF0ZS0+Z2FtbWEpOwog
fQogCi1PcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiBEZXZpY2VNb3Rp
b25FdmVudDo6YWNjZWxlcmF0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9u
RXZlbnQ6OkFjY2VsZXJhdGlvbj4gRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9kZXZpY2VNb3Rpb25EYXRhLT5hY2NlbGVyYXRp
b24oKSk7CiB9CiAKLU9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+IERl
dmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gRGV2aWNlTW90aW9u
RXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdAogewogICAgIHJldHVy
biBjb252ZXJ0KG1fZGV2aWNlTW90aW9uRGF0YS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSgpKTsKIH0KIAotT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4gRGV2
aWNlTW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERldmlj
ZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IERldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJh
dGUoKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KG1fZGV2aWNlTW90aW9uRGF0YS0+cm90
YXRpb25SYXRlKCkpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IERldmljZU1vdGlvbkV2ZW50Ojpp
bnRlcnZhbCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlTW90aW9uRXZlbnQ6
OmludGVydmFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZXZpY2VNb3Rpb25EYXRhLT5pbnRl
cnZhbCgpOwogfQogCi12b2lkIERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUs
IE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9u
LCBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlv
bkluY2x1ZGluZ0dyYXZpdHksIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJh
dGU+JiYgcm90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IGludGVydmFsKQordm9pZCBEZXZp
Y2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPERldmljZU1v
dGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPERl
dmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eSwgc3RkOjpvcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90YXRpb25SYXRlPiYmIHJv
dGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKQogewogICAgIGlmIChp
c0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VNb3Rpb25FdmVudC5oCmluZGV4IGU1MGY3NDYxZjQyOWI3ZDVkYzQ2Njk5ZWQ0MjVkNGE4MTkw
MWUwMjEuLjhhM2M0ZmMzYzZlZDA3ZWNmZTUzZDRjNjRmNDI5OGVkYzU2NjljYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCkBAIC00MSwxNiArNDEsMTYgQEAgcHVibGlj
OgogCiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCBEZXZpY2VNb3Rpb25EYXRhOjpBY2Nl
bGVyYXRpb24KICAgICBzdHJ1Y3QgQWNjZWxlcmF0aW9uIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91
YmxlPiB4OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHk7Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gejsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHg7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gejsKICAg
ICB9OwogCiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCBEZXZpY2VNb3Rpb25EYXRhOjpS
b3RhdGlvblJhdGUKICAgICBzdHJ1Y3QgUm90YXRpb25SYXRlIHsKLSAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiBhbHBoYTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBiZXRhOwotICAgICAgICBP
cHRpb25hbDxkb3VibGU+IGdhbW1hOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxw
aGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gZ2FtbWE7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8RGV2aWNlTW90
aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlv
bkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCkBAIC02MywxMiArNjMsMTIgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VNb3Rpb25FdmVudCk7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb24oKSBjb25zdDsKLSAgICBPcHRp
b25hbDxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdDsK
LSAgICBPcHRpb25hbDxSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZSgpIGNvbnN0OwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFjY2Vs
ZXJhdGlvbj4gYWNjZWxlcmF0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxBY2NlbGVy
YXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJvdGF0aW9uUmF0ZT4gcm90YXRpb25SYXRlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGludGVydmFsKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXREZXZpY2VNb3Rp
b25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2Vs
YWJsZSwgT3B0aW9uYWw8QWNjZWxlcmF0aW9uPiYmLCBPcHRpb25hbDxBY2NlbGVyYXRpb24+JiYs
IE9wdGlvbmFsPFJvdGF0aW9uUmF0ZT4mJiwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdm9pZCBp
bml0RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVz
LCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8QWNjZWxlcmF0aW9uPiYmLCBzdGQ6Om9w
dGlvbmFsPEFjY2VsZXJhdGlvbj4mJiwgc3RkOjpvcHRpb25hbDxSb3RhdGlvblJhdGU+JiYsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPik7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQog
ICAgIHVzaW5nIFBlcm1pc3Npb25TdGF0ZSA9IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJt
aXNzaW9uU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEu
Y3BwCmluZGV4IDNiOWQ3MTMxNTEzY2Y3M2QzNzlkNjA2MGViMzgzOWRmMTY5NGViODMuLjY2OGE0
MWY1NDgwZjE3NGVmNTBkOTYyYzBlYjY5MDBjYjdmNjgxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCi1SZWY8
RGV2aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShPcHRp
b25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJs
ZT4gZ2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJs
ZT4gY29tcGFzc0FjY3VyYWN5KQorUmVmPERldmljZU9yaWVudGF0aW9uRGF0YT4gRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpjcmVhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21w
YXNzQWNjdXJhY3kpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlT3JpZW50YXRp
b25EYXRhKGFscGhhLCBiZXRhLCBnYW1tYSwgY29tcGFzc0hlYWRpbmcsIGNvbXBhc3NBY2N1cmFj
eSkpOwogfQogCi1EZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVudGF0aW9uRGF0YShP
cHRpb25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRv
dWJsZT4gZ2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRv
dWJsZT4gY29tcGFzc0FjY3VyYWN5KQorRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmll
bnRhdGlvbkRhdGEoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJh
Y3kpCiAgICAgOiBtX2FscGhhKGFscGhhKQogICAgICwgbV9iZXRhKGJldGEpCiAgICAgLCBtX2dh
bW1hKGdhbW1hKQpAQCAtNDcsMTIgKzQ3LDEyIEBAIERldmljZU9yaWVudGF0aW9uRGF0YTo6RGV2
aWNlT3JpZW50YXRpb25EYXRhKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvCiAK
ICNlbHNlCiAKLVJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IERldmljZU9yaWVudGF0aW9uRGF0
YTo6Y3JlYXRlKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwg
T3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCitSZWY8RGV2
aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlT3JpZW50YXRpb25EYXRhKGFscGhhLCBiZXRh
LCBnYW1tYSwgYWJzb2x1dGUpKTsKIH0KIAotRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VP
cmllbnRhdGlvbkRhdGEoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSkKK0Rl
dmljZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50YXRpb25EYXRhKHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBnYW1tYSwgc3RkOjpvcHRpb25hbDxib29sPiBhYnNvbHV0ZSkKICAgICA6IG1fYWxw
aGEoYWxwaGEpCiAgICAgLCBtX2JldGEoYmV0YSkKICAgICAsIG1fZ2FtbWEoZ2FtbWEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgKaW5kZXggZGFjYjNkNTI4MDBl
Y2MwYWM5YzcwNTkxMzEyMTdjZDU4Mzk4NDQ2Yy4uYzgwNTFkZGY0NzY4MzRiOTBiMGFlNzFkYjhj
YTUzZmIxYzA4ZjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRh
dGEuaApAQCAtMzksMzcgKzM5LDM3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRp
b25EYXRhPiBjcmVhdGUoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFk
aW5nLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoT3B0aW9uYWw8
ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdh
bW1hLCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
Z2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOwogI2VuZGlmCiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQotICAgIE9wdGlv
bmFsPGRvdWJsZT4gYmV0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYmV0YTsgfQotICAgIE9wdGlvbmFs
PGRvdWJsZT4gZ2FtbWEoKSBjb25zdCB7IHJldHVybiBtX2dhbW1hOyB9CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBiZXRhKCkgY29uc3QgeyByZXR1cm4gbV9iZXRhOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGdhbW1hKCkgY29uc3QgeyByZXR1cm4gbV9nYW1tYTsgfQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGFzc0hlYWRpbmc7IH0KLSAgICBPcHRpb25hbDxkb3Vi
bGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGFzc0FjY3VyYWN5OyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jb21wYXNzSGVhZGluZzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNz
QWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvbXBhc3NBY2N1cmFjeTsgfQogI2Vsc2UKLSAg
ICBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGU7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29sdXRlKCkgY29uc3QgeyByZXR1cm4gbV9hYnNv
bHV0ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKCkg
PSBkZWZhdWx0OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRGV2aWNlT3JpZW50YXRp
b25EYXRhKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgT3B0
aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpOworICAgIERldmljZU9yaWVudGF0aW9uRGF0
YShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRh
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21w
YXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxz
ZQotICAgIERldmljZU9yaWVudGF0aW9uRGF0YShPcHRpb25hbDxkb3VibGU+IGFscGhhLCBPcHRp
b25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIE9wdGlvbmFsPGJvb2w+
IGFic29sdXRlKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29sdXRlKTsKICNlbmRpZgogCi0gICAg
T3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9iZXRhOwot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9nYW1tYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bV9hbHBoYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iZXRhOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBtX2dhbW1hOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBtX2NvbXBhc3NIZWFkaW5nOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9j
b21wYXNzQWNjdXJhY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fY29tcGFzc0hlYWRp
bmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fY29tcGFzc0FjY3VyYWN5OwogI2Vsc2UK
LSAgICBPcHRpb25hbDxib29sPiBtX2Fic29sdXRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9hYnNvbHV0ZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uRXZlbnQuY3BwCmluZGV4IDExZjdhZWEzMzAyNDlhMzFkNWJhY2EzNGIwYWUzNzU0
OTJjOTk4ZWMuLmE1NmQ3OTJiZWY0N2Q0NzlkODI0N2U4Mjk1MmI0ZWZmOGYyMjMzZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKQEAgLTQ4LDM0
ICs0OCwzNCBAQCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aQogewogfQogCi1PcHRpb25hbDxkb3Vi
bGU+IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fb3JpZW50YXRpb24tPmFscGhhKCk7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50
YXRpb24tPmJldGEoKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2
ZW50OjpnYW1tYSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6Z2FtbWEoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5nYW1t
YSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotT3B0aW9uYWw8ZG91YmxlPiBE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpjb21wYXNzSGVhZGluZygpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y29tcGFzc0hlYWRpbmcoKSBjb25z
dAogewogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5jb21wYXNzSGVhZGluZygpOwogfQogCi1P
cHRpb25hbDxkb3VibGU+IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNvbXBhc3NBY2N1cmFjeSgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y29t
cGFzc0FjY3VyYWN5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcmllbnRhdGlvbi0+Y29tcGFz
c0FjY3VyYWN5KCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmlj
ZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBi
b29sIGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4g
YmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVh
ZGluZywgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpCit2b2lkIERldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNo
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsMTIgKzg2LDEyIEBAIHZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwKIAogI2Vsc2UKIAotT3B0aW9uYWw8Ym9vbD4gRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6YWJzb2x1dGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBEZXZpY2VPcmllbnRhdGlv
bkV2ZW50OjphYnNvbHV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmFi
c29sdXRlKCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9y
aWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29s
IGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0
YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCit2b2lk
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCmluZGV4IDgxOWVjYmIwNjg1OTExNmNj
OTgwYmY3MmZhM2EzY2U5MmI0MDJkODAuLjFlZWYzNjc5MGJiOTU0ODE0YTE1MGE3N2U5MDk2Y2Iy
MjBiZWUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQu
aApAQCAtNDksMTkgKzQ5LDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkRldmljZU9yaWVu
dGF0aW9uRXZlbnQoKTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEoKSBjb25zdDsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGdh
bW1hKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhKCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gZ2FtbWEoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
T3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygpIGNvbnN0OwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gY29tcGFzc0FjY3VyYWN5KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGNvbXBhc3NIZWFkaW5nKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBh
c3NBY2N1cmFjeSgpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwg
T3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxk
b3VibGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nLCBPcHRpb25hbDxk
b3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CisgICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJs
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0
YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29t
cGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpOwogI2Vs
c2UKLSAgICBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gYWJzb2x1dGUoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdERldmljZU9yaWVudGF0
aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNl
bGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOworICAgIHZvaWQg
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBi
dWJibGVzLCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgc3Rk
OjpvcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMTk3NTllNGNmOWU1YzZi
NGM4YmJkOGE2MmIzNDBmY2M2ODcwYmU1Li43NDAxNGQzMjAzNDRjYzFiODk5Y2ZkYmNjZTEwYWY2
MGJkMmVkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1OTUsNyArMTU5NSw3IEBA
IFJlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5
KQogICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoeyAqYm91bmRhcnksICpib3VuZGFyeSB9KTsK
IH0KIAotT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gRG9jdW1lbnQ6OmNhcmV0UG9zaXRpb25Gcm9t
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KQorc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBEb2N1bWVudDo6Y2FyZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgY2xpZW50UG9pbnQpCiB7CiAgICAgaWYgKCFoYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01MzAxLDcgKzUzMDEsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQog
ICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRG9jdW1lbnQ6Om92ZXJyaWRlTGFzdE1vZGlmaWVk
KGNvbnN0IE9wdGlvbmFsPFdhbGxUaW1lPiYgbGFzdE1vZGlmaWVkKQordm9pZCBEb2N1bWVudDo6
b3ZlcnJpZGVMYXN0TW9kaWZpZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4mIGxhc3RN
b2RpZmllZCkKIHsKICAgICBtX292ZXJyaWRlTGFzdE1vZGlmaWVkID0gbGFzdE1vZGlmaWVkOwog
fQpAQCAtNTMwOSw3ICs1MzA5LDcgQEAgdm9pZCBEb2N1bWVudDo6b3ZlcnJpZGVMYXN0TW9kaWZp
ZWQoY29uc3QgT3B0aW9uYWw8V2FsbFRpbWU+JiBsYXN0TW9kaWZpZWQpCiAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tZG9jdW1lbnQtbGFz
dG1vZGlmaWVkCiBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiB7Ci0gICAg
T3B0aW9uYWw8V2FsbFRpbWU+IGRhdGVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IGRhdGVUaW1lOwogICAgIGlmIChtX292ZXJyaWRlTGFzdE1vZGlmaWVkKQogICAgICAgICBkYXRl
VGltZSA9IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWQ7CiAgICAgZWxzZSBpZiAobG9hZGVyKCkpCkBA
IC02MzU3LDcgKzYzNTcsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2hSYW5nZShSYW5nZSYgcmFu
Z2UpCiAgICAgbV9yYW5nZXMucmVtb3ZlKCZyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiB7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQgPSBnZXRDU1NDYW52YXNFbGVtZW50
KG5hbWUpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTc3NzcsMTAgKzc3NzcsMTAgQEAgc3RhdGlj
IHZvaWQgZXhwYW5kUm9vdEJvdW5kc1dpdGhSb290TWFyZ2luKEZsb2F0UmVjdCYgbG9jYWxSb290
Qm91bmRzLCBjb25zdCBMZW4KICAgICBsb2NhbFJvb3RCb3VuZHMuZXhwYW5kKHJvb3RNYXJnaW5G
bG9hdEJveCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlQ2xpcHBl
ZFJlY3RJblJvb3RDb250ZW50c1NwYWNlKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4g
Y29tcHV0ZUNsaXBwZWRSZWN0SW5Sb290Q29udGVudHNTcGFjZShjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LCBjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBPcHRpb25TZXQ8UmVu
ZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb24+IHZpc2libGVSZWN0T3B0aW9ucyA9
IHsgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNp
dmVJbnRlcnNlY3Rpb24sIFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpB
cHBseUNvbXBvc2l0ZWRDbGlwcywgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRp
b246OkFwcGx5Q29tcG9zaXRlZENvbnRhaW5lclNjcm9sbHMgfTsKLSAgICBPcHRpb25hbDxMYXlv
dXRSZWN0PiByZWN0SW5GcmFtZUFic29sdXRlU3BhY2UgPSByZW5kZXJlci0+Y29tcHV0ZVZpc2li
bGVSZWN0SW5Db250YWluZXIocmVjdCwgJnJlbmRlcmVyLT52aWV3KCksICB7ZmFsc2UgLyogaGFz
UG9zaXRpb25GaXhlZERlc2NlbmRhbnQgKi8sIGZhbHNlIC8qIGRpcnR5UmVjdElzRmxpcHBlZCAq
LywgdmlzaWJsZVJlY3RPcHRpb25zIH0pOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4g
cmVjdEluRnJhbWVBYnNvbHV0ZVNwYWNlID0gcmVuZGVyZXItPmNvbXB1dGVWaXNpYmxlUmVjdElu
Q29udGFpbmVyKHJlY3QsICZyZW5kZXJlci0+dmlldygpLCAge2ZhbHNlIC8qIGhhc1Bvc2l0aW9u
Rml4ZWREZXNjZW5kYW50ICovLCBmYWxzZSAvKiBkaXJ0eVJlY3RJc0ZsaXBwZWQgKi8sIHZpc2li
bGVSZWN0T3B0aW9ucyB9KTsKICAgICBpZiAoIXJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZSB8fCBy
ZW5kZXJlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gcmVjdEluRnJh
bWVBYnNvbHV0ZVNwYWNlOwogCkBAIC03ODA0LDcgKzc4MDQsNyBAQCBzdHJ1Y3QgSW50ZXJzZWN0
aW9uT2JzZXJ2YXRpb25TdGF0ZSB7CiAgICAgYm9vbCBpc0ludGVyc2VjdGluZyB7IGZhbHNlIH07
CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29t
cHV0ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRlcnNl
Y3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIEVsZW1lbnQmIHRhcmdldCwgYm9vbCBhcHBseVJvb3RN
YXJnaW4pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRlcnNlY3Rpb25PYnNlcnZhdGlvblN0YXRl
PiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IElu
dGVyc2VjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgRWxlbWVudCYgdGFyZ2V0LCBib29sIGFwcGx5
Um9vdE1hcmdpbikKIHsKICAgICBhdXRvKiB0YXJnZXRSZW5kZXJlciA9IHRhcmdldC5yZW5kZXJl
cigpOwogICAgIGlmICghdGFyZ2V0UmVuZGVyZXIpCkBAIC03ODUzLDcgKzc4NTMsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2Vj
dGlvblN0YXRlKEZyYW1lVmlldwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPih0
YXJnZXRSZW5kZXJlcikpCiAgICAgICAgIGxvY2FsVGFyZ2V0Qm91bmRzID0gZG93bmNhc3Q8UmVu
ZGVyTGluZUJyZWFrPih0YXJnZXRSZW5kZXJlciktPmxpbmVzQm91bmRpbmdCb3goKTsKIAotICAg
IE9wdGlvbmFsPExheW91dFJlY3Q+IHJvb3RMb2NhbFRhcmdldFJlY3Q7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRSZWN0PiByb290TG9jYWxUYXJnZXRSZWN0OwogICAgIGlmIChvYnNlcnZlci5y
b290KCkpIHsKICAgICAgICAgT3B0aW9uU2V0PFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250
ZXh0T3B0aW9uPiB2aXNpYmxlUmVjdE9wdGlvbnMgPSB7IFJlbmRlck9iamVjdDo6VmlzaWJsZVJl
Y3RDb250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uLCBSZW5kZXJPYmpl
Y3Q6OlZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6QXBwbHlDb21wb3NpdGVkQ2xpcHMsIFJlbmRl
ck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpBcHBseUNvbXBvc2l0ZWRDb250YWlu
ZXJTY3JvbGxzIH07CiAgICAgICAgIHJvb3RMb2NhbFRhcmdldFJlY3QgPSB0YXJnZXRSZW5kZXJl
ci0+Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIobG9jYWxUYXJnZXRCb3VuZHMsIHJvb3RS
ZW5kZXJlciwgeyBmYWxzZSAvKiBoYXNQb3NpdGlvbkZpeGVkRGVzY2VuZGFudCAqLywgZmFsc2Ug
LyogZGlydHlSZWN0SXNGbGlwcGVkICovLCB2aXNpYmxlUmVjdE9wdGlvbnMgfSk7CkBAIC03OTM5
LDcgKzc5MzksNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlv
bnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW50ZXJzZWN0aW9uUmVjdCA9IHRh
cmdldEZyYW1lVmlldy0+YWJzb2x1dGVUb0NsaWVudFJlY3QoaW50ZXJzZWN0aW9uU3RhdGUtPmFi
c29sdXRlSW50ZXJzZWN0aW9uUmVjdCwgdGFyZ2V0LT5yZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgT3B0aW9u
YWw8RE9NUmVjdEluaXQ+IHJlcG9ydGVkUm9vdEJvdW5kczsKKyAgICAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPERPTVJlY3RJbml0PiByZXBvcnRlZFJvb3RCb3VuZHM7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzU2FtZU9yaWdpbk9ic2VydmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIHJl
cG9ydGVkUm9vdEJvdW5kcyA9IERPTVJlY3RJbml0KHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudFJvb3RCb3VuZHMueCgpLApAQCAtODIxNSwxMiArODIxNSwxMiBAQCBMb2dnZXImIERv
Y3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAgCi1PcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9mcmFtZS0+bG9hZGVyKCkucGFnZUlEKCk7CiB9CiAKLU9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IERvY3VtZW50OjpmcmFtZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9h
ZGVyKCkuZnJhbWVJRCgpOwogfQpAQCAtODgzNiw3ICs4ODM2LDcgQEAgdm9pZCBEb2N1bWVudDo6
Y2xlYXJDYW52YXNQcmVwYXJhdGlvbihIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQogICAgIG1f
Y2FudmFzZXNOZWVkaW5nRGlzcGxheVByZXBhcmF0aW9uLnJlbW92ZShjYW52YXMpOwogfQogCi12
b2lkIERvY3VtZW50OjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UsIGNvbnN0
IE9wdGlvbmFsPEZsb2F0UmVjdD4mKQordm9pZCBEb2N1bWVudDo6Y2FudmFzQ2hhbmdlZChDYW52
YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKQogewog
ICAgIGlmICghaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk4MTM0N2ZlNzUwNzE4MDJjMDIyNzEzMGY0MjYz
ZjU4ZWE0MGRkNjguLjZiMDFkYzY5YzAwYWUyYTc2MzFlM2E3NjYzYjI5YmVkNmY0ZDAwY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00NDYsNyArNDQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFu
Z2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBPcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBjYXJldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRQb2ludCk7CisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBjYXJldFBvc2l0aW9u
RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBFbGVtZW50KiBzY3JvbGxpbmdFbGVtZW50Rm9yQVBJKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRWxlbWVudCogc2Nyb2xsaW5nRWxlbWVudCgpOwpAQCAtNjQ1LDggKzY0NSw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkg
Y29uc3Q7CiAgICAgdm9pZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKLSAgICBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0OwogCiAgICAgLy8gdG8gZ2V0
IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQKICAgICB2b2lk
IHNldFZpc3VhbGx5T3JkZXJlZCgpOwpAQCAtOTQ2LDcgKzk0Niw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgZG9tYWluKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKIAotICAgIHZvaWQgb3ZlcnJp
ZGVMYXN0TW9kaWZpZWQoY29uc3QgT3B0aW9uYWw8V2FsbFRpbWU+Jik7CisgICAgdm9pZCBvdmVy
cmlkZUxhc3RNb2RpZmllZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0TW9kaWZpZWQoKSBjb25zdDsKIAogICAgIC8vIFRoZSBj
b29raWVVUkwgaXMgdXNlZCB0byBxdWVyeSB0aGUgY29va2llIGRhdGFiYXNlIGZvciB0aGlzIGRv
Y3VtZW50J3MKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc05v
ZGVzV2l0aE1pc3NpbmdTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhNaXNzaW5nU3R5bGUgPSB0cnVl
OyB9CiAKICAgICAvLyBFeHRlbnNpb24gZm9yIG1hbmlwdWxhdGluZyBjYW52YXMgZHJhd2luZyBj
b250ZXh0cyBmb3IgdXNlIGluIENTUwotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IGdl
dENTU0NhbnZhc0NvbnRleHQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiBnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBn
ZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG5hbWVG
b3JDU1NDYW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JikgY29uc3Q7CiAKQEAg
LTE2MDcsNyArMTYwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlcGFyZUNhbnZhc2VzRm9y
RGlzcGxheUlmTmVlZGVkKCk7CiAgICAgdm9pZCBjbGVhckNhbnZhc1ByZXBhcmF0aW9uKEhUTUxD
YW52YXNFbGVtZW50Jik7Ci0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25z
dCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENh
bnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICB2
b2lkIGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsgfTsKICAgICB2b2lkIGNhbnZh
c0Rlc3Ryb3llZChDYW52YXNCYXNlJikgZmluYWw7CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyPiBtX2Zvcm1Db250cm9s
bGVyOwogCiAgICAgQ29sb3IgbV9jYWNoZWRUaGVtZUNvbG9yOwotICAgIE9wdGlvbmFsPFZlY3Rv
cjxXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4+PiBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vha1B0cjxIVE1MTWV0YUVsZW1lbnQ+Pj4gbV9tZXRh
VGhlbWVDb2xvckVsZW1lbnRzOwogICAgIFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50PiBtX2FjdGl2
ZVRoZW1lQ29sb3JNZXRhRWxlbWVudDsKICAgICBDb2xvciBtX2FwcGxpY2F0aW9uTWFuaWZlc3RU
aGVtZUNvbG9yOwogCkBAIC0yMDEzLDcgKzIwMTMsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5n
IG1fY2FjaGVkRE9NQ29va2llczsKIAotICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBtX292ZXJyaWRl
TGFzdE1vZGlmaWVkOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fb3ZlcnJpZGVMYXN0
TW9kaWZpZWQ7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9y
bUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQg
eyAwIH07CkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGU7CiAgICAgYm9vbCBtX3VzZXJIYXNJbnRlcmFj
dGVkV2l0aE1lZGlhRWxlbWVudCB7IGZhbHNlIH07CiAgICAgQmFja0ZvcndhcmRDYWNoZVN0YXRl
IG1fYmFja0ZvcndhcmRDYWNoZVN0YXRlIHsgTm90SW5CYWNrRm9yd2FyZENhY2hlIH07Ci0gICAg
T3B0aW9uYWw8UmVmZXJyZXJQb2xpY3k+IG1fcmVmZXJyZXJQb2xpY3k7CisgICAgc3RkOjpvcHRp
b25hbDxSZWZlcnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBSZWFkeVN0YXRlIG1f
cmVhZHlTdGF0ZSB7IENvbXBsZXRlIH07CiAKICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBt
X211dGF0aW9uT2JzZXJ2ZXJUeXBlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggMjM3MDk1NGUzNmE4ODlmYmVlOGY4NzYyYjRiZGM3
ODJiZThhYWEwZS4uZTAxNGNiNTJiYzc4ZDJiNDU0ZDRiNjE1ODk3NDQwODRlMDYxZjk5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm8KICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOwog
fQogCi1PcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nl
c3NRdWlja0NoZWNrKCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNz
OjpoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQu
c2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCgpKTsKIApAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlCiAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpm
cm9tKGRvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7CiB9
CiAKLU9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQorc3RkOjpvcHRpb25hbDxTdG9y
YWdlQWNjZXNzUXVpY2tSZXN1bHQ+IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NRdWlja0NoZWNrKCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygp
LnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmgKaW5kZXggOWYwMjk3OTk1ZjIwNzVlMDA1N2IxMmIwZDMwNmYzOThh
MzVkNjMzNy4uN2VmNGVhYzJiMDYyMzUzZDY4ZGRkOGU4NTcxNGE5NTg2ZTczYjBlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaApAQCAtNjYsNyArNjYsNyBA
QCBzdHJ1Y3QgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgewogICAgIFJlZ2lzdHJhYmxlRG9t
YWluIHN1YkZyYW1lRG9tYWluOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVx
dWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBjb25zdCB1
bnNpZ25lZCBtYXhOdW1iZXJPZlRpbWVzRXhwbGljaXRseURlbmllZEZyYW1lU3BlY2lmaWNTdG9y
YWdlQWNjZXNzID0gMjsKQEAgLTg1LDExICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKERvY3VtZW50JiBob3N0
aW5nRG9jdW1lbnQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVxdWVzdGluZ0RvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCk7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOwogICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBib29sIGhh
c1N0b3JhZ2VBY2Nlc3NRdWlyaygpOwogCi0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNr
UmVzdWx0PiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gcmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0No
ZWNrKCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoUmVnaXN0cmFibGVEb21h
aW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJik7CkBAIC0xMTksMjkgKzExOSwyOSBAQCB2b2lkIFJlcXVlc3RTdG9y
YWdlQWNjZXNzUmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0
PiBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0PiBSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ+IHdhc0dyYW50ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZD4gd2FzR3JhbnRlZDsKICAgICBkZWNvZGVyID4+IHdhc0dyYW50
ZWQ7CiAgICAgaWYgKCF3YXNHcmFudGVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duPiBwcm9tcHRXYXNTaG93
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bj4gcHJvbXB0
V2FzU2hvd247CiAgICAgZGVjb2RlciA+PiBwcm9tcHRXYXNTaG93bjsKICAgICBpZiAoIXByb21w
dFdhc1Nob3duKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
U3RvcmFnZUFjY2Vzc1Njb3BlPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nl
c3NTY29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8UmVnaXN0cmFibGVE
b21haW4+IHRvcEZyYW1lRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21h
aW4+IHRvcEZyYW1lRG9tYWluOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVEb21haW47CiAgICAg
aWYgKCF0b3BGcmFtZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURvbWFpbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURvbWFpbjsKICAgICBkZWNvZGVyID4+
IHN1YkZyYW1lRG9tYWluOwogICAgIGlmICghc3ViRnJhbWVEb21haW4pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMGE1MjhlYmI3NWYyMzBm
MmY2OTcxNGNjNjMxNTJkZTNmZjQ0Mzg2MC4uNzA3OGVhOTcyNmU2YjI5YWY3Yzc1NDBlOTM1OWYy
MGM5ZGU1ZTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIGlu
bGluZSB2b2lkIE5vZGU6OnNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSBzdGF0ZSkKICAg
ICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNl
dFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+IHRhYkluZGV4KQordm9pZCBFbGVtZW50
OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpvcHRpb25hbDxpbnQ+IHRhYkluZGV4KQogewog
ICAgIGlmICghdGFiSW5kZXgpIHsKICAgICAgICAgc2V0VGFiSW5kZXhTdGF0ZShUYWJJbmRleFN0
YXRlOjpOb3RTZXQpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5kZXgpCiAgICAgfSgpKTsKIH0KIAotT3B0
aW9uYWw8aW50PiBFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKICAgICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5v
dFNldDoKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEJlaW5nRHJhZ2dlZChi
b29sIGZsYWcpCiAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRCZWluZ0Ry
YWdnZWQoKnRoaXMsIGZsYWcpOwogfQogCi1pbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xs
QWxpZ25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlv
bj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBib29sIGlzTFRSKQoraW5saW5l
IFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvcklubGluZURpcmVjdGlvbihzdGQ6
Om9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBib29sIGlzTFRSKQogewogICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVfb3Io
U2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpOZWFyZXN0KSkgewogICAgIGNhc2UgU2Nyb2xsTG9naWNh
bFBvc2l0aW9uOjpTdGFydDogewpAQCAtODY0LDcgKzg2NCw3IEBAIGlubGluZSBTY3JvbGxBbGln
bm1lbnQgdG9TY3JvbGxBbGlnbm1lbnRGb3JJbmxpbmVEaXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xs
TG9naWNhCiAgICAgfQogfQogCi1pbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25t
ZW50Rm9yQmxvY2tEaXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBwb3Np
dGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitpbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRv
U2Nyb2xsQWxpZ25tZW50Rm9yQmxvY2tEaXJlY3Rpb24oc3RkOjpvcHRpb25hbDxTY3JvbGxMb2dp
Y2FsUG9zaXRpb24+IHBvc2l0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKICAgICBz
d2l0Y2ggKHBvc2l0aW9uLnZhbHVlX29yKFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQpKSB7
CiAgICAgY2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0OiB7CkBAIC05MDcsNyArOTA3
LDcgQEAgaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvckJsb2NrRGly
ZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWwKICAgICB9CiB9CiAKLXZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXcoT3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlv
bnM+PiYmIGFyZykKK3ZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoc3RkOjpvcHRpb25hbDxW
YXJpYW50PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0aW9ucz4+JiYgYXJnKQogewogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTE1ODMs
NyArMTU4Myw3IEBAIExheW91dFJlY3QgRWxlbWVudDo6YWJzb2x1dGVFdmVudEhhbmRsZXJCb3Vu
ZHMoYm9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVuCiAgICAgcmV0dXJuIGFic29sdXRl
RXZlbnRCb3VuZHNPZkVsZW1lbnRBbmREZXNjZW5kYW50cyhpbmNsdWRlc0ZpeGVkUG9zaXRpb25F
bGVtZW50cyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0Kiwg
TGF5b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRpbmdCb3goRWxlbWVudCYgZWxlbWVudCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCBMYXlvdXRSZWN0
Pj4gbGlzdEJveEVsZW1lbnRCb3VuZGluZ0JveChFbGVtZW50JiBlbGVtZW50KQogewogICAgIEhU
TUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50OwogICAgIGJvb2wgaXNHcm91cDsKQEAgLTE2
MDAsNyArMTYwMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0Kiwg
TGF5b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRpbmdCb3goCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckxpc3RC
b3g+KCpzZWxlY3RFbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0
PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGJvdW5kaW5nQm94
OwogICAgIGludCBvcHRpb25JbmRleCA9IDA7CiAgICAgZm9yIChhdXRvKiBpdGVtIDogc2VsZWN0
RWxlbWVudC0+bGlzdEl0ZW1zKCkpIHsKICAgICAgICAgaWYgKGl0ZW0gPT0gJmVsZW1lbnQpIHsK
QEAgLTE2NDYsNyArMTY0Niw3IEBAIFJlZjxET01SZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50
UmVjdHMoKQogICAgIHJldHVybiBET01SZWN0TGlzdDo6Y3JlYXRlKHF1YWRzKTsKIH0KIAotT3B0
aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5k
aW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxS
ZW5kZXJPYmplY3QqLCBGbG9hdFJlY3Q+PiBFbGVtZW50Ojpib3VuZGluZ0Fic29sdXRlUmVjdFdp
dGhvdXRMYXlvdXQoKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTcxNSw3ICsxNzE1LDcg
QEAgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2RvbS1lbGVtZW50LXRvZ2dsZWF0dHJpYnV0ZQotRXhjZXB0aW9uT3I8Ym9vbD4gRWxl
bWVudDo6dG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIE9w
dGlvbmFsPGJvb2w+IGZvcmNlKQorRXhjZXB0aW9uT3I8Ym9vbD4gRWxlbWVudDo6dG9nZ2xlQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZm9yY2UpCiB7CiAgICAgaWYgKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFt
ZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsK
QEAgLTQzNTEsNyArNDM1MSw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVyZXJzKCkK
ICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogfQogCi1PcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVS
ZXNvbHZlQ2FsbGJhY2tzKCkpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTY0LDEw
ICs0NTY0LDEwIEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhT
dHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjphbmltYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYga2V5
ZnJhbWVzLCBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25z
Pj4mJiBvcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6OmFu
aW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4mJiBrZXlmcmFtZXMsIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYgb3B0aW9ucykKIHsKICAgICBTdHJpbmcg
aWQgPSAiIjsKLSAgICBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRp
b25zPj4ga2V5ZnJhbWVFZmZlY3RPcHRpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxk
b3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+IGtleWZyYW1lRWZmZWN0T3B0aW9uczsKICAg
ICBpZiAob3B0aW9ucykgewogICAgICAgICBhdXRvIG9wdGlvbnNWYWx1ZSA9IG9wdGlvbnMudmFs
dWUoKTsKICAgICAgICAgVmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4ga2V5
ZnJhbWVFZmZlY3RPcHRpb25zVmFyaWFudDsKQEAgLTQ1OTUsNyArNDU5NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjphbmltYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iCiAgICAgcmV0dXJuIGFuaW1hdGlvbjsKIH0KIAotVmVjdG9yPFJlZlB0
cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFuaW1h
dGlvbnNPcHRpb25zPiBvcHRpb25zKQorVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBFbGVt
ZW50OjpnZXRBbmltYXRpb25zKHN0ZDo6b3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbnM+IG9w
dGlvbnMpCiB7CiAgICAgLy8gSWYgd2UgYXJlIHRvIHJldHVybiBhbmltYXRpb25zIGluIHRoZSBz
dWJ0cmVlLCB3ZSBjYW4gZ2V0IGFsbCBvZiB0aGUgZG9jdW1lbnQncyBhbmltYXRpb25zIGFuZCBm
aWx0ZXIKICAgICAvLyBhbmltYXRpb25zIHRhcmdldGluZyB0aGF0IGFyZSBub3QgcmVnaXN0ZXJl
ZCBvbiB0aGlzIGVsZW1lbnQsIG9uZSBvZiBpdHMgcHNldWRvIGVsZW1lbnRzIG9yIGEgY2hpbGQn
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmU4NWJiNDc5ODIwYzkwYzdlMzE4NzhhY2Q4NWE1ZDk5
YTAzNzU3OC4uNzNlYmVmMjRmYzgzOGY3ODNhOGI4MGFhZDRhOTdmMWVmYzY0MTcwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxRdWFsaWZpZWROYW1lPiBwYXJzZUF0dHJpYnV0ZU5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9t
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIAotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZUF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBPcHRpb25hbDxib29sPiBm
b3JjZSk7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21T
dHJpbmcmIHF1YWxpZmllZE5hbWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpOwogCiAgICAg
Y29uc3QgQXRvbVN0cmluZyYgZ2V0SWRBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2b2lkIHNldElk
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRl
eEJ5TmFtZShuYW1lKTsgfQogICAgIHVuc2lnbmVkIGZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShj
b25zdCBBdG9tU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNv
bnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShuYW1l
LCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzY3JvbGxJbnRvVmlldyhPcHRpb25hbDxWYXJpYW50PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0
aW9ucz4+JiYgYXJnKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbEludG9WaWV3KHN0
ZDo6b3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+PiYmIGFyZyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3Ag
PSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQo
Ym9vbCBjZW50ZXJJZk5lZWRlZCA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Ny
b2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUgPSB0cnVlKTsK
QEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0
IGJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRl
ck9iamVjdCosIEZsb2F0UmVjdD4+IGJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgp
OworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+
IGJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRmxvYXRSZWN0IGJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SGFzRm9jdXNWaXNpYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0
SGFzRm9jdXNXaXRoaW4oYm9vbCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHRhYkluZGV4U2V0RXhw
bGljaXRseSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0YWJJbmRleFNldEV4cGxp
Y2l0bHkoKSBjb25zdDsKICAgICBib29sIHNob3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3Vz
TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRUYWJJbmRleCgpIDwgMCAmJiAhc3Vw
cG9ydHNGb2N1cygpOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKQEAgLTU1Miw3ICs1NTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERl
dGFjaFJlbmRlcmVycygpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSk7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwog
CiAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRl
c0ZpeGVkUG9zaXRpb25FbGVtZW50cykgb3ZlcnJpZGU7CiAKQEAgLTYxOSw4ICs2MTksOCBAQCBw
dWJsaWM6CiAKICAgICBFbGVtZW50KiBmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBv
dXRBbmNob3JOYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+PiBhbmlt
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBP
cHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4mJik7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdl
dEFuaW1hdGlvbnNPcHRpb25zPik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+
IGFuaW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+
JiYsIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9u
cz4+JiYpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucyhz
dGQ6Om9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb25zPik7CiAKICAgICBFbGVtZW50SWRlbnRp
ZmllciBjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpOwogCkBAIC02MzYsNyArNjM2LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBzZXRUYWJJ
bmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50Pik7CisgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxp
Y2l0bHkoc3RkOjpvcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsKICAgICB2b2lkIHBhcnRBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRDb250ZXh0LmgKaW5kZXggMTIxNzZjYWFlZDUyMjBmYzc4ZGJkMTQ2YWU5MWY2NmE4OTAw
YTdmMy4uNmNkZjAyYTE0NmFjNzEwMDUzZTBjMzIwNGM5NjI2NDgxZmM3MTZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IEVsZW1lbnRD
b250ZXh0IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPEVsZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29u
dGV4dCYgYSwgY29uc3QgRWxlbWVudENvbnRleHQmIGIpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
RWxlbWVudENvbnRleHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IEVsZW1lbnRDb250
ZXh0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudENvbnRl
eHQ+IEVsZW1lbnRDb250ZXh0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBFbGVt
ZW50Q29udGV4dCBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaAppbmRleCA4NWQxOThjNTQwZmY5OTEwYzU0NmVlZjM2OTAxOTdhNzlk
NDA0ZmRmLi4zOTNiMzUxYzc0NzYwODA2YjBjOGFhZjM0M2YyYTU0ZDdiZDI4NTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVu
dDsKICAgICB1aW50NjRfdCBtX2luaXRpYWxET01UcmVlVmVyc2lvbjsKLSAgICBPcHRpb25hbDxT
Y3JpcHREaXNhbGxvd2VkU2NvcGU+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNjcmlwdERpc2FsbG93ZWRTY29wZT4gbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9u
OwogfTsKIAogLy8gRklYTUU6IE5vIHJlYWwgcG9pbnQgaW4gZG9pbmcgdGhlc2UgYXMgaW5saW5l
czsgdGhleSBhcmUgZm9yIGRlYnVnZ2luZyBhbmQgd2UgdXN1YWxseSB0dXJuIG9mZiBpbmxpbmlu
ZyBpbiBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBkM2ExNzc1YWM5YzRlYjk3
MjEwYzg3ZGZlYzJlYzhlMTg5NDlmY2UwLi45M2Y3MDljZjAwYzhkMWUyNGVlNjkyNTU0ZTFjYzlk
NjQ0MTIwYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEV2
ZW50OjpzZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHRhcmdldCkKICAgICAgICAgcmVj
ZWl2ZWRUYXJnZXQoKTsKIH0KIAotdm9pZCBFdmVudDo6c2V0Q3VycmVudFRhcmdldChFdmVudFRh
cmdldCogY3VycmVudFRhcmdldCwgT3B0aW9uYWw8Ym9vbD4gaXNJblNoYWRvd1RyZWUpCit2b2lk
IEV2ZW50OjpzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVlKQogewogICAgIG1fY3VycmVudFRhcmdldCA9
IGN1cnJlbnRUYXJnZXQ7CiAgICAgbV9jdXJyZW50VGFyZ2V0SXNJblNoYWRvd1RyZWUgPSBpc0lu
U2hhZG93VHJlZSA/ICppc0luU2hhZG93VHJlZSA6IChpczxOb2RlPihjdXJyZW50VGFyZ2V0KSAm
JiBkb3duY2FzdDxOb2RlPigqY3VycmVudFRhcmdldCkuaXNJblNoYWRvd1RyZWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudC5oCmluZGV4IDUyODE1MDU3NzdlNmU1YzBiMzE3YzE2M2IxMzExMTE2NDMyOGU2MWUuLjgx
Y2JiNGU4ZDU0NTNiMGE1Y2QzNDY5NzE3MjllNzJhNmI0YzRkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdldChSZWZQdHI8RXZlbnRU
YXJnZXQ+JiYpOwogCiAgICAgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRUYXJnZXQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUYXJnZXQo
RXZlbnRUYXJnZXQqLCBPcHRpb25hbDxib29sPiBpc0luU2hhZG93VHJlZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0Kiwgc3RkOjpvcHRpb25h
bDxib29sPiBpc0luU2hhZG93VHJlZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgYm9vbCBjdXJyZW50
VGFyZ2V0SXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUYXJnZXRJc0lu
U2hhZG93VHJlZTsgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgZXZlbnRQaGFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXZlbnRQaGFzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAppbmRleCA0YmYwNDU0NjQ0OTRiMmZlMGE3MzRjODM1Mzg1MWJhMDhhMTVlOWQzLi5jZDFkYmM4
NjA4ZjRlYzFmMWIxM2RiMGM5ZTU3MWVkNWU2ZWMxMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnREaXNwYXRjaGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKIAogICAgIEV2ZW50UGF0
aCBldmVudFBhdGggeyBub2RlLCBldmVudCB9OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxk
Q2xlYXJUYXJnZXRzQWZ0ZXJEaXNwYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3Vs
ZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2g7CiAgICAgZm9yIChzaXplX3QgaSA9IGV2ZW50UGF0
aC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgY29uc3QgRXZlbnRDb250ZXh0JiBldmVu
dENvbnRleHQgPSBldmVudFBhdGguY29udGV4dEF0KGkgLSAxKTsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhbHNvIHNldCBzaG91bGRDbGVhclRhcmdldHNBZnRlckRpc3BhdGNoIHRvIHRy
dWUgaWYgYW4gRXZlbnRUYXJnZXQgb2JqZWN0IGluIGV2ZW50Q29udGV4dCdzIHRvdWNoIHRhcmdl
dCBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR0NSZWFjaGFibGVSZWYuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCmluZGV4IDIxNjE2ZDdiYmM4MzY3
Y2M0ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAuLmU3NDVhN2FmNDY0ZGQ5ZWI3MmI5MDc0OTdiNDQ2
M2RkMmFkODRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJl
Zi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCkBAIC0xMjQsOCAr
MTI0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
R0NSZWFjaGFibGVSZWY8UD4+IDogU2ltcGxlQ2xhc3MKICAgICBzdGF0aWMgUGVla1R5cGUgcGVl
ayhjb25zdCBSZWY8UD4mIHZhbHVlKSB7IHJldHVybiBjb25zdF9jYXN0PFBlZWtUeXBlPih2YWx1
ZS5wdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUoKSk7IH0KICAgICBzdGF0aWMgUGVla1R5
cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIHR5cGVkZWYgT3B0aW9u
YWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMgVGFrZVR5cGUgdGFrZShSZWY8UD4mJiB2
YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlv
bmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFs
PFJlZjxQPj4gVGFrZVR5cGU7CisgICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFs
dWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9w
dGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVT
dHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAKaW5kZXggYmVkOTdlMTBjNmE2MjU1YjcyNmQ1ZTI2YzAxOTJmZWFhOWU3ODRiZS4u
ZWM1ZjI4MjI4NTE0YThmMDJmOWYyOWUwNjhmYWExYzFjOTU4ZjQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3Rh
dGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dEZvckVsZW1lbnQoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW5s
aW5lU3R5bGVTaGVldENhY2hlS2V5PiBtYWtlSW5saW5lU3R5bGVTaGVldENhY2hlS2V5KGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPElubGluZVN0eWxlU2hlZXRDYWNoZUtleT4gbWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtl
eShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8g
T25seSBjYWNoZSBmb3Igc2hhZG93IHRyZWVzLiBNYWluIGRvY3VtZW50IGlubGluZSBzdHlsZXNo
ZWV0cyBhcmUgZ2VuZXJhbGx5IHVuaXF1ZSBhbmQgY2FuJ3QgYmUgc2hhcmVkIGJldHdlZW4gZG9j
dW1lbnRzLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHJlbGF4ZWQgd2hlbiBhIHN0eWxl
c2hlZXQgZG9lcyBub3QgY29udGFpbiBkb2N1bWVudC1yZWxhdGl2ZSBVUkxzIChvciAjdXJscyku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA3YjY1ZWViOGFhNjUyMGZjMjBmMDRh
MTE5ZGU3MzZiYWRjOGU4ZTM2Li45MWU4M2ZkNzg0ODBlY2E3MGY2ZTUxZDI4MjhhNWNjOTY2MTM2
MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIC8vIExlZ2FjeS4KICAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXI7
Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBrZXlMb2NhdGlvbjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4ga2V5TG9jYXRpb247CiAgICAgICAgIHVuc2lnbmVkIGNoYXJDb2Rl
OwogICAgICAgICB1bnNpZ25lZCBrZXlDb2RlOwogICAgICAgICB1bnNpZ25lZCB3aGljaDsKQEAg
LTEwNiw5ICsxMDYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbG9jYXRpb24geyBET01f
S0VZX0xPQ0FUSU9OX1NUQU5EQVJEIH07CiAgICAgYm9vbCBtX3JlcGVhdCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzQ29tcG9zaW5nIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bV9jaGFyQ29kZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9rZXlDb2RlOwotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBtX3doaWNoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fY2hh
ckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9rZXlDb2RlOworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fd2hpY2g7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAv
LyBDb21tYW5kcyB0aGF0IHdlcmUgc2VudCBieSBBcHBLaXQgd2hlbiBpbnRlcnByZXRpbmcgdGhl
IGV2ZW50LiBEb2Vzbid0IGluY2x1ZGUgaW5wdXQgbWV0aG9kIGNvbW1hbmRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAppbmRleCA0OGU4MzFiYTg2MTJj
NWY1NDNkMjg0MThhMmQzNmViMmMyZmNlZmNlLi44ZjQ2ZWQ4NjhjMzgxYmEwYWY3NWVjNjEwNTc0
YTU1Y2QyMDRmZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFz
c2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2Ny
aXB0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNM
b2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKTsKIH0K
IAotT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6
OmVycm9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9jYWNoZWRT
Y3JpcHQpOwogICAgIGlmIChtX2Vycm9yKQpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgTG9hZGFi
bGVDbGFzc2ljU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3Vy
Y2VVUkwpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7CiAKLSAgICBhdXRvIHByaW9y
aXR5ID0gWyZdKCkgLT4gT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHsKKyAgICBhdXRv
IHByaW9yaXR5ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4g
ewogICAgICAgICBpZiAobV9pc0FzeW5jKQogICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRSZXNv
dXJjZUxvYWRQcmlvcml0eTo6YXN5bmNTY3JpcHQ7CiAgICAgICAgIC8vIFVzZSBkZWZhdWx0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCmluZGV4IDM4YzAzMTAx
NzhmOWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDguLmU4OGQ1NGRlNDU0YzQ2NWQyZjQ0MThh
ODQ2MDJhOWE5YWJjOTEyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2lj
U2NyaXB0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJp
bmcmIGludGVncml0eSwgUmVmZXJyZXJQb2xpY3ksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5h
bWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUsIGJvb2wgaXNBc3luYyk7CiAgICAgYm9v
bCBpc0xvYWRlZCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNv
bnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ2FjaGVkU2NyaXB0
JiBjYWNoZWRTY3JpcHQoKSB7IHJldHVybiAqbV9jYWNoZWRTY3JpcHQ7IH0KQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKLSAgICBPcHRpb25hbDxFcnJv
cj4gbV9lcnJvciB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IG1f
ZXJyb3IgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBTdHJpbmcgbV9pbnRlZ3JpdHk7CiAgICAgYm9v
bCBtX2lzQXN5bmMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVN
b2R1bGVTY3JpcHQuY3BwCmluZGV4IGZmOTBhMjc5M2NhYjA2ODllZTA2YTI4ODJhYzY0Y2ZhMmM2
NWU5NGQuLmIwZTlhYjQxN2JmZjEwNGM0MWJjZmJlMDkyOGU4NDc0NDczOTA4YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcApAQCAtNTIsNyArNTIsNyBA
QCBib29sIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojppc0xvYWRlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNMb2FkZWQ7CiB9CiAKLU9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFi
bGVNb2R1bGVTY3JpcHQ6OmVycm9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3Jp
cHQ6OkVycm9yPiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXJyb3IoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2Vycm9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
TW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQu
aAppbmRleCBkMjUzNTk2M2Y2NDhiMDJhOGEwMWZkNjNiYjFlMzgxMzg2Y2VlNDM2Li44Njc4Mzcy
MGIzOTdjOTg5MjJmNTY2MTY4OTk1NDc4ZTA4MGY5YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVNb2R1bGVTY3JpcHQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2Us
IGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5LCBSZWZlcnJlclBvbGljeSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAgICBib29s
IGlzTG9hZGVkKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29u
c3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzQ2xhc3Np
Y1NjcmlwdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Myw3ICs2Myw3IEBA
IHByaXZhdGU6CiAKICAgICBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7
CiAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBtX21vZHVsZUtleTsKLSAgICBPcHRpb25h
bDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CisgICAgc3RkOjpvcHRpb25hbDxMb2Fk
YWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CiAgICAgYm9vbCBtX3dhc0NhbmNlbGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNMb2FkZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlU2NyaXB0LmgKaW5kZXggYzNlNmYxNmU1MzIxZGFjMjI2M2Q2Nzc2NDFhOTBmYzlhNTRl
ZTg1Mi4uYmI3MzM2YmMzZDAwMWZlNjkyYTM3YWNmOGJlMDhiZGMzNDNlZTNlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKQEAgLTUzLDEzICs1MywxMyBAQCBwdWJsaWM6CiAKICAg
ICBzdHJ1Y3QgRXJyb3IgewogICAgICAgICBFcnJvclR5cGUgdHlwZTsKLSAgICAgICAgT3B0aW9u
YWw8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZTsKICAgICB9OwogCiAgICAgdmlydHVhbCB+
TG9hZGFibGVTY3JpcHQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZShTY3JpcHRFbGVtZW50JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAppbmRleCBmNWZmZmI5MDM3YmU5MzQ0MjZlODhjMjZmZWZmODk0YjY3OGJiOTJkLi4z
MmNmZDBkNjdmMzg0YjA3YWUzZjcwYWY3Y2M2ZTViNWQ1MTAxYjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJ
cwogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0
aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiYgcG9ydHMpCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5
cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNz
YWdlRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAgLTY5LDcgKzY5LDcgQEAg
aW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmEKIHsKIH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3Vy
Y2UpCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpv
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElk
LCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMpKSk7CiB9CkBAIC0xMDYsNyArMTA2LDcg
QEAgUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemUKIAogTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50
KCkgPSBkZWZhdWx0OwogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1Zh
bHVlIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mJiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IEpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9y
PFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA5
NzI4NGZjM2I3ZDBjM2IxNjliMzk4ZjVhZjliNzBhZTNmYTlkY2Q4Li4wYTkzNDBkNzJhZWYzYmY3
ZGY2OWMyZjUxYjUwM2ZlMjI2YWQ2OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBA
IC00OCw3ICs0OCw3IEBAIHVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRy
PFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47CiBjbGFzcyBNZXNzYWdlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2Fn
ZUV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9
IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5n
JiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
c3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKICAgICBz
dGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKTsKQEAgLTU5LDE4ICs1OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEpTQzo6
SlNWYWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBTdHJpbmcgbGFz
dEV2ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOwogICAgICAg
ICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CiAgICAgfTsKICAgICBzdGF0aWMg
UmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiwg
SXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3Nh
Z2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIHZv
aWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50
U291cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAKICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBj
b25zdCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNl
PiYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0czsgfQog
CiAgICAgdXNpbmcgRGF0YVR5cGUgPSBWYXJpYW50PEpTVmFsdWVJbldyYXBwZWRPYmplY3QsIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBTdHJpbmcsIFJlZjxCbG9iPiwgUmVmPEFycmF5QnVm
ZmVyPj47CkBAIC04NSwxNCArODUsMTQgQEAgcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsK
ICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmLCBJc1RydXN0
ZWQpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkKTsKLSAgICBNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiYgPSB7IH0pOworICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmID0geyB9KTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3QgZmluYWw7CiAKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fb3Jp
Z2luOwogICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwotICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4gbV9zb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+
IG1fc291cmNlOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtX3BvcnRzOwogCiAg
ICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2NhY2hlZERhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKaW5kZXggMWY1NGQ4N2ZjZDBhMTg5YmEzMjhjYzk3
YzJjOTA5NGQzMjE0Zjc1ZC4uMDQ2ZmNhMTRiMjcxYjVkN2YwNjBlNzU2NTI0NjQ0YzJhY2Q5NDM0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaApAQCAtMzks
NyArMzksNyBAQCBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZXNzYWdlUG9ydElkZW50aWZp
ZXI+IGRlY29kZShEZWNvZGVyJik7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGxv
Z1N0cmluZygpIGNvbnN0OwpAQCAtNTgsMTQgKzU4LDE0IEBAIHZvaWQgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyPiBNZXNzYWdlUG9ydElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vz
c0lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVyVHlwZT4+IHBvcnRJZGVudGlmaWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxQb3J0SWRlbnRpZmllclR5cGU+PiBw
b3J0SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHBvcnRJZGVudGlmaWVyOwogICAgIGlmICgh
cG9ydElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0ZDM4N2JjM2QyZDdiNmQ3YjY5MTc5MjVhMWE5
NjliNTM5OThkMWRiLi5kNmMxYjRlNGU3NDI2NDc0MWY0OGRjMzRiMjBhYjVlZmM4MjZmN2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTgyLDEyICs4MiwxMiBAQCBw
dWJsaWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIGJvb2wgY2hpbGRMaXN0OwotICAg
ICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVzOwotICAgICAgICBPcHRpb25hbDxib29sPiBj
aGFyYWN0ZXJEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZXM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YTsKICAgICAgICAgYm9vbCBz
dWJ0cmVlOwotICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9sZFZhbHVlOwotICAgICAgICBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGF0dHJpYnV0ZU9sZFZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNo
YXJhY3RlckRhdGFPbGRWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gYXR0cmlidXRlRmlsdGVyOwogICAgIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBvYnNl
cnZlKE5vZGUmLCBjb25zdCBJbml0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAyYjdj
YTdmNjM3Nzc2Y2I4MDAyZDNjMGQ2ZjNlNzkwNGQzMjI5Yzc5Li5lMzBjMTI3ZTUyZWIzNWUxMDUw
YmQxNGI0NzU3MzgxNGJmYjllZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTE2MDIs
NyArMTYwMiw3IEBAIFBvc2l0aW9uIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29uc3Qg
Qm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocG9pbnQuY29udGFpbmVyLnB0cigpLCBwb2ludC5vZmZzZXQpOwogfQogCi1PcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYgcG9zaXRp
b24pCitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIo
cG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoIWNvbnRhaW5lcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmgKaW5kZXggYzc0OTA5ZGY4ZWNkZGFjMjc4YjY3ZmE3NTcxZWVjMTk1ZjFiYjg1OC4u
NGJhODkyMmZjZWM3ZjUwMzE4ZDhjNTg0MzE2Y2NhOTQzOTc1ZmUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBtYWtlQ29u
dGFpbmVyT2Zmc2V0UG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogUG9zaXRpb24gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKIFdFQkNP
UkVfRVhQT1JUIFBvc2l0aW9uIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29uc3QgQm91
bmRhcnlQb2ludCYpOwogCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBt
YWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYp
OwogCiBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShOb2RlKik7CiBQb3NpdGlv
biBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKE5vZGUqKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBz
dHJ1Y3QgUG9zaXRpb25SYW5nZSB7CiAgICAgUG9zaXRpb24gZW5kOwogfTsKIAotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBQb3NpdGlvblJhbmdlJik7CitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUG9zaXRpb25SYW5n
ZSYpOwogCiAvLyBpbmxpbmVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDI4NWE3MGQ3MjhjZmVh
NTE4NTk0MTNiYjlhMTk5ZTRjZjIyZDFhMjAuLmFiOWYxNDIyNmZhZDMwMzc0MTg4ZDE5NDYzZmU5
YWU5ZjBjMGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTA3MywxNCArMTA3MywxNCBAQCBT
aW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCiAgICAg
cmV0dXJuIG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkKIHsKICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBt
YWtlU2ltcGxlUmFuZ2UoKnJhbmdlKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VT
aW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+JiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+JiByYW5nZSkKIHsK
ICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdlLmdldCgpKTsKIH0KQEAgLTEwOTIsNyAr
MTA5Miw3IEBAIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBy
YW5nZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVS
YW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorUmVmUHRyPFJhbmdlPiBj
cmVhdGVMaXZlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQog
ewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApp
bmRleCA0MjUwM2M5N2Y0OWFjYTIwMzkwMjIzODc0ODQ0NGVjMjI1MDhmNTI2Li5jYzE0MTE4Zjkz
MzU4NDRiYmQ0NDgxNTA5NDQzOTE2YmFiMDVjMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTM0LDEx
ICsxMzQsMTEgQEAgcHJpdmF0ZToKIAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNp
bXBsZVJhbmdlKGNvbnN0IFJhbmdlJik7CiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtl
U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSYW5nZSopOwotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFu
Z2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2lt
cGxlUmFuZ2UoY29uc3QgUmFuZ2UqKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+Jik7CiAKIFdFQkNP
UkVfRVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7
Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gY3JlYXRl
TGl2ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDRh
MmRkZjgzOWU3ZGZhNmI0NjcxYmM2YjkzODdhNzQ0OTI4ZWQ3NjQuLjlmY2VlODQ2MzhlNDk5ZWY3
ZjEwOWVjNTA2NzM0MzQ5MjBhMjJiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JF
dmVudCgpCiAgICAgbV9lbGVtZW50LmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CiB9CiAKLU9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlw
dEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExl
Z2FjeVR5cGVzKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBl
PiBTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0IHN1
cHBvcnRMZWdhY3lUeXBlcykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaXNMZWdhY3lTdXBwb3J0
ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoKSBpcyBub3QgdmFsaWQgSFRNTDUuIEl0IGlzIHVzZWQgaGVy
ZSB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGxheW91
dCB0ZXN0cy4gVGhlIHNwZWNpZmljIHZpb2xhdGlvbnMgYXJlOgogICAgIC8vIC0gQWxsb3dpbmcg
dHlwZT1qYXZhc2NyaXB0LiB0eXBlPSBzaG91bGQgb25seSBzdXBwb3J0IE1JTUUgdHlwZXMsIHN1
Y2ggYXMgdGV4dC9qYXZhc2NyaXB0LgpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgU2NyaXB0RWxl
bWVudDo6cHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRp
b24sIExlZ2FjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNjcmlwdFR5cGUgc2NyaXB0
VHlwZSA9IFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAgaWYgKE9wdGlvbmFsPFNjcmlwdFR5cGU+
IHJlc3VsdCA9IGRldGVybWluZVNjcmlwdFR5cGUoc3VwcG9ydExlZ2FjeVR5cGVzKSkKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiByZXN1bHQgPSBkZXRlcm1pbmVTY3JpcHRUeXBl
KHN1cHBvcnRMZWdhY3lUeXBlcykpCiAgICAgICAgIHNjcmlwdFR5cGUgPSByZXN1bHQudmFsdWUo
KTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzOCw4ICs0MzgsOCBAQCB2
b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50UmVzcGVjdGluZ1VzZXJHZXN0dXJl
SW5kaWNhdG9yKCkKIAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0
Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7Ci0gICAgaWYgKE9wdGlv
bmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBsb2FkYWJsZVNjcmlwdC5lcnJvcigp
KSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2UgPSBlcnJvci0+Y29uc29sZU1lc3NhZ2UpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IGxvYWRhYmxlU2NyaXB0LmVycm9yKCkpIHsK
KyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdl
PiBtZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQogICAgICAgICAgICAgbV9lbGVtZW50
LmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWVzc2FnZS0+c291cmNlLCBtZXNzYWdlLT5s
ZXZlbCwgbWVzc2FnZS0+bWVzc2FnZSk7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwog
ICAgIH0gZWxzZSBpZiAoIWxvYWRhYmxlU2NyaXB0Lndhc0NhbmNlbGVkKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDRkNGJmYjU0Yjk5NzEwNjkyZDI1NGVhYzNlMTRiNTA2
NWNmNTUzYjMuLjQ0YjI2ZGJjYTJmOTYzNmY0YzkwNDliYWIxNGJhMTRmN2M4ZjhlYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJs
ZVNjcmlwdCYpOwogCi0gICAgT3B0aW9uYWw8U2NyaXB0VHlwZT4gZGV0ZXJtaW5lU2NyaXB0VHlw
ZShMZWdhY3lUeXBlU3VwcG9ydCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBl
PiBkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0KSBjb25zdDsKICAgICBib29s
IGlnbm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0OwogICAgIGJvb2wgaXNTY3JpcHRGb3JFdmVudFN1
cHBvcnRlZCgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnRSZXNwZWN0aW5nVXNl
ckdlc3R1cmVJbmRpY2F0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA5ZTVj
ZjdhYTgyNjg3YzY2ZDM0ZDVmOTBlOWQ4OTA2N2ExMmRmZTNkLi5hODUyODgyMjVhODY0NmIzZjE4
ZTFhNDhiOWE1NmRmZjIyNTA3YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVu
dEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKICAgICB2b2lkKiBzdHlsZVNoZWV0TGlzdDsK
ICAgICBXZWFrUHRyPEVsZW1lbnQ+IGhvc3Q7CiAgICAgdm9pZCogc2xvdEFzc2lnbm1lbnQ7Ci0g
ICAgT3B0aW9uYWw8SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFydE1hcHBpbmdz
OworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFy
dE1hcHBpbmdzOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNoYWRvd1Jvb3QpID09IHNp
emVvZihTYW1lU2l6ZUFzU2hhZG93Um9vdCksIHNoYWRvd3Jvb3Rfc2hvdWxkX3N0YXlfc21hbGwp
OwpAQCAtMjYzLDcgKzI2Myw3IEBAIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogU2hhZG93
Um9vdDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtCiAgICAgcmV0dXJu
IG1fc2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9kZXNGb3JTbG90KHNsb3QsICp0aGlzKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFy
c2VQYXJ0TWFwcGluZyhTdHJpbmdWaWV3IG1hcHBpbmdTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4+IHBhcnNlUGFydE1hcHBpbmco
U3RyaW5nVmlldyBtYXBwaW5nU3RyaW5nKQogewogICAgIGNvbnN0IGF1dG8gZW5kID0gbWFwcGlu
Z1N0cmluZy5sZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggNTczMWJjZjFk
ZmQ4MTNjNDNkNmRmYjdkNzU4NTk0Mzc1MmIxYTQ2NS4uYmI5OTZiMjdiYzE1NzBhMjQ5NDUyNjAy
OTAxMDUxOWQzNzIxMjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0xMzksNyArMTM5
LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6U2NvcGU+IG1fc3R5
bGVTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+IG1fc2xvdEFzc2ln
bm1lbnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxQYXJ0TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdz
OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxQYXJ0TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdz
OwogfTsKIAogaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggYWQ2ZTk2ZDFmMjJlZmU5NmNjYTkw
ODA0ZGQ2NTk2MDI0MGM2NTFkNC4uYWIyNTg5OTNjMGVmMTMwYmZkZGU5N2E3MTMxZjM2ZTc1MDJk
YmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIp
CiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKIH0KIAot
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYgbm9kZSkK
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYg
bm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICgh
cGFyZW50KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+
IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBCb3VuZGEKIAog
dGVtcGxhdGUgYm9vbCBjb250YWluczxUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmKTsKIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgY29udGFp
bnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBPcHRpb25hbDxCb3VuZGFyeVBvaW50
PiYgcG9pbnQpCit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4m
IHBvaW50KQogewogICAgIHJldHVybiBwb2ludCAmJiBjb250YWluczx0cmVlVHlwZT4ocmFuZ2Us
ICpwb2ludCk7CiB9CiAKLXRlbXBsYXRlIGJvb2wgY29udGFpbnM8Q29tcG9zZWRUcmVlPihjb25z
dCBTaW1wbGVSYW5nZSYsIGNvbnN0IE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7Cit0ZW1wbGF0
ZSBib29sIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7CiAKIGJvb2wgY29udGFpbnNGb3JUZXN0aW5n
KFRyZWVUeXBlIHR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgQm91bmRhcnlQ
b2ludCYgcG9pbnQpCiB7CkBAIC0yNDYsNyArMjQ2LDcgQEAgU2ltcGxlUmFuZ2UgdW5pb25SYW5n
ZShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJu
IHsgc3RkOjptaW4oYS5zdGFydCwgYi5zdGFydCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVlT3JkZXIp
LCBzdGQ6Om1heChhLmVuZCwgYi5lbmQsIGNvbXBhcmVCeUNvbXBvc2VkVHJlZU9yZGVyKSB9Owog
fQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgYSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBiKQorc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiBhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYikKIHsKICAgICAv
LyBGSVhNRTogQ2FuIHRoaXMgYmUgZG9uZSBtb3JlIGVmZmljaWVudGx5LCB3aXRoIGZld2VyIGNh
bGxzIHRvIHRyZWVPcmRlcj8KICAgICBpZiAoIWEgfHwgIWIgfHwgIWludGVyc2VjdHM8Q29tcG9z
ZWRUcmVlPigqYSwgKmIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJh
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBlZmQ4ZmRmNTJi
NTI1NzNkMmEyYTYwZjY5ZGNhN2Y1MWY2OTVkNDAyLi5hMzY4OWQwZjBiMTI3M2Q2ZTMzYjQwNzgy
MjcwMzFlM2FlYjQ5ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNDUsMjAgKzQ1
LDIwIEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiB9OwogCiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxl
UmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOwotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50
PiYmLCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmKTsKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYs
IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJik7CiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxl
UmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYmKTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtl
U2ltcGxlUmFuZ2VIZWxwZXIoT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJik7CitzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiYmKTsKIAogaW5saW5lIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRI
ZWxwZXIoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CiBpbmxp
bmUgQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludEhlbHBlcihCb3VuZGFyeVBvaW50JiYg
cG9pbnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9Ci1pbmxpbmUgT3B0aW9uYWw8Qm91bmRh
cnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIoY29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQ
b2ludD4mIHBvaW50KSB7IHJldHVybiBwb2ludDsgfQotaW5saW5lIE9wdGlvbmFsPEJvdW5kYXJ5
UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYg
cG9pbnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9CitpbmxpbmUgc3RkOjpvcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEhlbHBlcihjb25zdCBzdGQ6Om9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+JiBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KK2lubGluZSBzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKHN0ZDo6b3B0aW9u
YWw8Qm91bmRhcnlQb2ludD4mJiBwb2ludCkgeyByZXR1cm4gV1RGTW92ZShwb2ludCk7IH0KIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGF1dG8gbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIoVCYmIGFyZ3Vt
ZW50KSAtPiBkZWNsdHlwZShtYWtlQm91bmRhcnlQb2ludChzdGQ6OmZvcndhcmQ8VD4oYXJndW1l
bnQpKSkgeyByZXR1cm4gbWFrZUJvdW5kYXJ5UG9pbnQoc3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50
KSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgLi4uVD4gYXV0byBtYWtlU2ltcGxlUmFuZ2UoVCYm
IC4uLmFyZ3VtZW50cykgLT4gZGVjbHR5cGUobWFrZVNpbXBsZVJhbmdlSGVscGVyKG1ha2VCb3Vu
ZGFyeVBvaW50SGVscGVyKHN0ZDo6Zm9yd2FyZDxUPihhcmd1bWVudHMpKS4uLikpIHsgcmV0dXJu
IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihtYWtlQm91bmRhcnlQb2ludEhlbHBlcihzdGQ6OmZvcndh
cmQ8VD4oYXJndW1lbnRzKSkuLi4pOyB9CiAKIC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRoZXNlIHR3
byBmdW5jdGlvbnMgdG8gaGF2ZSBzaG9ydGVyIG5hbWVzOyBhbm90aGVyIG9wdGlvbiBpcyB0byBj
aGFuZ2UgcHJlZml4IHRvIG1ha2VTaW1wbGVSYW5nZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9k
ZSYpOwogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKE5vZGUmKTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgU2ltcGxlUmFuZ2UmKTsKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIHRlbXBsYXRlPFRyZWVUeXBlID0g
VHJlZT4gTm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsK
IAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBi
b29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQ
b2ludD4mKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mKTsKIHRlbXBs
YXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0
ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpOwogdGVtcGxhdGU8VHJlZVR5
cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYp
OwogCkBAIC05Myw3ICs5Myw3IEBAIE9mZnNldFJhbmdlIGNoYXJhY3RlckRhdGFPZmZzZXRSYW5n
ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIC8vIEZJWE1FOiBTdGFydCBvZiBm
dW5jdGlvbnMgdGhhdCBhcmUgZGVwcmVjYXRlZCBzaW5jZSB0aGV5IHNpbGVudGx5IGRlZmF1bHQg
dG8gQ29tcG9zZWRUcmVlLgogCiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSB1bmlvblJhbmdl
KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKLVdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCiBj
bGFzcyBJbnRlcnNlY3RpbmdOb2RlUmFuZ2U7CiBJbnRlcnNlY3RpbmdOb2RlUmFuZ2UgaW50ZXJz
ZWN0aW5nTm9kZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxp
bmUgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBzdGFy
dCwgQm91bmRhcnlQb2ludCYmCiAgICAgcmV0dXJuIHsgV1RGTW92ZShzdGFydCksIFdURk1vdmUo
ZW5kKSB9OwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5n
ZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHN0YXJ0LCBPcHRpb25hbDxCb3VuZGFy
eVBvaW50PiYmIGVuZCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2lt
cGxlUmFuZ2VIZWxwZXIoc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHN0YXJ0LCBzdGQ6
Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQogewogICAgIGlmICghc3RhcnQgfHwgIWVu
ZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE5MCw3ICsxOTAsNyBAQCBpbmxp
bmUgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2lu
dCkKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1vdmUocG9pbnQpLCBXVEZN
b3ZlKGVuZCkpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVS
YW5nZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHBvaW50KQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihzdGQ6Om9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+JiYgcG9pbnQpCiB7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNz
T3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNzT3IuaAppbmRleCBiMGIzZTA1NjBkODg2
NDljOGJmZTQwOGQ1ZDI0OTE5ZmExODE0MzllLi42NWEzMDU5MWJmOWEwMTE0Nzg4YTU2NDMwM2E4
N2ZlNzk2YjA1NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3VjY2Vzc09yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N1Y2Nlc3NPci5oCkBAIC0zMCwxMiArMzAsMTIgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTdWNj
ZXNzT3IgOiBwdWJsaWMgT3B0aW9uYWw8VD4geworY2xhc3MgU3VjY2Vzc09yIDogcHVibGljIHN0
ZDo6b3B0aW9uYWw8VD4gewogcHVibGljOgotICAgIFN1Y2Nlc3NPcigpIDogT3B0aW9uYWw8VD4o
KSB7IH0KLSAgICBTdWNjZXNzT3IoVCYmIGVycm9yKSA6IE9wdGlvbmFsPFQ+KGVycm9yKSB7IH0K
KyAgICBTdWNjZXNzT3IoKSA6IHN0ZDo6b3B0aW9uYWw8VD4oKSB7IH0KKyAgICBTdWNjZXNzT3Io
VCYmIGVycm9yKSA6IHN0ZDo6b3B0aW9uYWw8VD4oZXJyb3IpIHsgfQogCi0gICAgZXhwbGljaXQg
Y29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhT3B0aW9uYWw8VD46Om9w
ZXJhdG9yIGJvb2woKTsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIXN0ZDo6b3B0aW9uYWw8VD46Om9wZXJhdG9yIGJvb2woKTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAKaW5k
ZXggNWNmYTY0YjQzYTZiYzZlMzVhMmU2YjRkNTBlMzliYWMwYWZlYzNiZi4uNjdlMTlkMWQ5Yzhh
OGI5OTZlOGUzZmQ4N2Y2ODQ1M2Q4MmZhOTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIu
Y3BwCkBAIC01Miw5ICs1Miw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0RGVjb2Rlcj4+IFRleHRE
ZWNvZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgT3B0aW9ucyBvCiAgICAgcmV0dXJu
IGRlY29kZXI7CiB9CiAKLUV4Y2VwdGlvbk9yPFN0cmluZz4gVGV4dERlY29kZXI6OmRlY29kZShP
cHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBpbnB1dCwgRGVjb2RlT3B0aW9ucyBv
cHRpb25zKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVjb2Rlcjo6ZGVjb2RlKHN0ZDo6b3B0
aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4gaW5wdXQsIERlY29kZU9wdGlvbnMgb3B0
aW9ucykKIHsKLSAgICBPcHRpb25hbDxCdWZmZXJTb3VyY2U+IGlucHV0QnVmZmVyOworICAgIHN0
ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlPiBpbnB1dEJ1ZmZlcjsKICAgICBjb25zdCB1aW50OF90
KiBkYXRhID0gbnVsbHB0cjsKICAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBpZiAoaW5wdXQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKaW5kZXggOWQ4ZTdjZjliZTkzOWNjMjFmODU3NWMz
NjA0MGY0YmU2ZDZkOWI2ZC4uMzJmYjE1MjA2YjRkZjQ3MDViM2NjNDZiMWU3OWNhNWI0MjE1OWYz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHN0cnVjdCBEZWNvZGVPcHRpb25zIHsKICAgICAgICAgYm9vbCBzdHJlYW0geyBmYWxzZSB9
OwogICAgIH07Ci0gICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBkZWNvZGUoT3B0aW9uYWw8QnVmZmVy
U291cmNlOjpWYXJpYW50VHlwZT4sIERlY29kZU9wdGlvbnMpOworICAgIEV4Y2VwdGlvbk9yPFN0
cmluZz4gZGVjb2RlKHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4sIERl
Y29kZU9wdGlvbnMpOwogCiBwcml2YXRlOgogICAgIFRleHREZWNvZGVyKGNvbnN0IGNoYXIqLCBP
cHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVh
bURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rl
ci5jcHAKaW5kZXggOWE3Y2FkMTEyNTcwNWVkZjM1YTczNGQzNTBhMzY2N2YyMmRhMjNiYS4uNDFh
Y2M2OTI2M2ViZTg0YmZiZWZkOWRlOWUzODYwY2M5ZGVhNzZmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
VGV4dERlY29kZXJTdHJlYW1EZWNvZGVyOjpUZXh0RGVjb2RlclN0cmVhbURlY29kZXIoUmVmPFRl
eHREZWNvZGVyPiYmIHRleHREZWNvZGUKIHsKIH0KIAotRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0
RGVjb2RlclN0cmVhbURlY29kZXI6OmRlY29kZShPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlPiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPFN0cmluZz4gVGV4dERlY29kZXJTdHJlYW1EZWNv
ZGVyOjpkZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiB2YWx1
ZSkKIHsKICAgICByZXR1cm4gbV90ZXh0RGVjb2Rlci0+ZGVjb2RlKFdURk1vdmUodmFsdWUpLCB7
IHRydWUgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJT
dHJlYW1EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJlYW1EZWNv
ZGVyLmgKaW5kZXggNzYxODY4NTA1NzE4NjZiNmIyYmYwYTE0MWQxMDBmMGY3Y2RkZjY0YS4uYTM5
NTBhMzg5OTFlZmJkNWI5ODk3NTExNTY3ZjM1YTBjZjhmZmMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxUZXh0RGVjb2RlclN0cmVhbURlY29kZXI+
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmYXRhbCwgYm9vbCBpZ25vcmVCT00p
OwogCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RGVjb2Rlci0+
ZW5jb2RpbmcoKTsgfQotICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGVjb2RlKE9wdGlvbmFsPEJ1
ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+KTsKKyAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRlY29k
ZShzdGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+KTsKICAgICBFeGNlcHRp
b25PcjxTdHJpbmc+IGZsdXNoKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmgKaW5kZXggMGFhMDRiM2JmYjNhM2U1ZmNkYjk3YjQ5
YzNlZTQ1NGNlYzk4MWJkYS4uYjQ1NmQ5ZTM4YjlkN2YyODYxZjJkNDAwNjdjYWVkMTUwMjJkNjEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRFbmNvZGVyU3RyZWFt
RW5jb2RlcigpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPFVDaGFyPiBtX3BlbmRpbmdIaWdo
U3Vycm9nYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IG1fcGVuZGluZ0hpZ2hTdXJyb2dh
dGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCmluZGV4IDNk
NTkyNjU3NTc3MWUzODM4YTI4MzhkYTQ3ZmZhOWUyMjA1ZGRhZmUuLmRmYmFhYzE0OTQ1YTUwNTVj
MDkyOWQyN2U3ZTU1NDU4YjM5N2NkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmFuc2l0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZl
bnQuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFRyYW5zaXRpb25FdmVudCk7CiAKLVRyYW5zaXRpb25FdmVudDo6
VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlv
bikKK1RyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0
IFN0cmluZyYgcHNldWRvRWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRp
bWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIDogQW5pbWF0aW9uRXZlbnRCYXNlKHR5
cGUsIGFuaW1hdGlvbiwgdGltZWxpbmVUaW1lKQogICAgICwgbV9wcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmFuc2l0aW9uRXZlbnQuaAppbmRleCAyMzEzNmQ3M2YwN2JiZDliYzE0YWNiODIxMzQ3NzdiMTIw
OGViMTBlLi5hNTdmMjQ4MzMxMjg4ZjQyYTJlNDg3NmE0MmU5YjQ2MDUyNmMxYzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFRyYW5zaXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25F
dmVudEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVHJhbnNpdGlvbkV2ZW50KTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRyYW5zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNl
ZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4gdGlt
ZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICBzdGF0aWMgUmVmPFRyYW5z
aXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxl
bWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiog
YW5pbWF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNpdGlv
bkV2ZW50KHR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQsIHRp
bWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5n
JiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1h
dGlvbiopOworICAgIFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcm
IHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJB
bmltYXRpb24qKTsKICAgICBUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCk7CiAKICAgICBTdHJpbmcgbV9wcm9w
ZXJ0eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDAzNzQ5ZTc3YTljYzc3ZDUy
NTAwOTBmYzZiZTY3MDZjZDFkZTc2ZWYuLjFlY2IzNmU4ODA3MWViMWM4YjkzY2YwZDg3MTQ4YTUx
MGU1ZmNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAg
SFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9t
U3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKICAgICByZXR1cm4gbV9sYWJlbHNCeUZvckF0dHJpYnV0
ZS0+Z2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRyaWJ1dGUoKmZvckF0dHJpYnV0ZVZhbHVlLmltcGwo
KSwgKnRoaXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9p
bnRJZk5vdENsaXBwZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRQb2ludCYgY2xp
ZW50UG9pbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRQb2ludD4gYWJzb2x1dGVQb2lu
dElmTm90Q2xpcHBlZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRQb2ludCkKIHsKICAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkgfHwgIWRvY3VtZW50LnZpZXco
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuY3BwCmluZGV4IDEyYzQzNjQzNjk0NjVjNmY1MDdkNzYzYjkzY2Fk
NmQyMDRkYjMxY2MuLmQwMzQyZDg2YmQzNDczMzA1NWQzYjhjNDMwMjFlYTliYmE1NjUyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBib29sIFVzZXJHZXN0dXJlVG9rZW46OmlzVmFsaWRGb3JEb2N1bWVudChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnRzSW1wYWN0ZWRC
eVVzZXJHZXN0dXJlLmNvbnRhaW5zKGRvY3VtZW50KTsKIH0KIAotVXNlckdlc3R1cmVJbmRpY2F0
b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlIHByb2Nlc3NJbnRlcmFjdGlvblN0eWxlKQorVXNl
ckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKHN0ZDo6b3B0aW9uYWw8UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+IHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIFVzZXJH
ZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgcHJvY2Vzc0lu
dGVyYWN0aW9uU3R5bGUpCiAgICAgOiBtX3ByZXZpb3VzVG9rZW4geyBjdXJyZW50VG9rZW4oKSB9
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgKaW5kZXggZjVjYzdmYWQyMTAyMTk3MjYwYTQzY2NmYzQxN2YxNDNj
YWY0NDI1Yy4uYTFhNDUwNDU0YzBiZGRjNDFhYjczYTNmY2Y1MGNmNTZiYjk0NDg2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTEyOCw3ICsxMjgsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBr
bm93biB1c2VyIGdlc3R1cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCiAgICAgZW51bSBjbGFzcyBQ
cm9jZXNzSW50ZXJhY3Rpb25TdHlsZSB7IEltbWVkaWF0ZSwgRGVsYXllZCB9OwotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBl
ID0gVXNlckdlc3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9j
ZXNzSW50ZXJhY3Rpb25TdHlsZTo6SW1tZWRpYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0gVXNlckdl
c3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJh
Y3Rpb25TdHlsZTo6SW1tZWRpYXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2Vy
R2VzdHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9r
ZW46Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6QWxsLCBV
c2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggPSBVc2VyR2VzdHVyZVRva2Vu
OjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdl
c3R1cmVJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0
ZWRMaW5rU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3Bw
CmluZGV4IGViZDE1ZTQxMThlNDZmOGFiZjkzYjg0YTVlZmEzNDI3YTE2NGY3MjkuLmE4NTI4MGEx
ZjVlNTcyYzlmNzY2NmMwNTQ4MTljZDBjMzg2YjRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlz
aXRlZExpbmtTdGF0ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0YXRl
OjppbnZhbGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpCiAgICAgfQogfQogCi1pbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPFNoYXJlZFN0cmluZ0hhc2g+IGxpbmtIYXNoRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFN0cmluZ0hh
c2g+IGxpbmtIYXNoRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
IChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkudmlzaXRlZExpbmtIYXNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuaAppbmRleCA2MjQ0YTMyMjFiNmEzMDU3NGU0ZjU0MDUwZjlmZDUxODhjYjA3
MjNmLi40ODdjNzA1OGViOTc2MWE0ODJhYmY5ZWIzNTY5NzUzNzhjOTY4NzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVs
dGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSk7CiAKLSAgICBjb25zdCBPcHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZl
bnQ+JiB1bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWlu
Z1BsYXRmb3JtRXZlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxF
dmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5
aW5nUGxhdGZvcm1FdmVudDsgfQogCiAgICAgZG91YmxlIGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVsdGFYOyB9IC8vIFBvc2l0aXZlIHdoZW4gc2Nyb2xsaW5nIHJpZ2h0LgogICAgIGRvdWJs
ZSBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfSAvLyBQb3NpdGl2ZSB3aGVuIHNj
cm9sbGluZyBkb3duLgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2Rl
bHRhWSB7IDAgfTsKICAgICBkb3VibGUgbV9kZWx0YVogeyAwIH07CiAgICAgdW5zaWduZWQgbV9k
ZWx0YU1vZGUgeyBET01fREVMVEFfUElYRUwgfTsKLSAgICBPcHRpb25hbDxQbGF0Zm9ybVdoZWVs
RXZlbnQ+IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0
Zm9ybVdoZWVsRXZlbnQ+IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzVi
MjlkNDg2YjQ4MGE0ZGU3OC4uY2IzYjRlN2VjYWZhMjJkMGEwYjBkOWQ1NTk3MWFhNzE2YWQ1NzZk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9y
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2Fn
ZVBvcnRDaGFubmVsLmNwcApAQCAtNjAsNyArNjAsNyBAQCBNZXNzYWdlUG9ydENoYW5uZWw6On5N
ZXNzYWdlUG9ydENoYW5uZWwoKQogICAgIG1fcmVnaXN0cnkubWVzc2FnZVBvcnRDaGFubmVsRGVz
dHJveWVkKCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IE1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6cHJvY2Vzc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBw
b3J0KQorc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gTWVzc2FnZVBvcnRDaGFubmVs
Ojpwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQocG9ydCA9PSBtX3BvcnRzWzBd
IHx8IHBvcnQgPT0gbV9wb3J0c1sxXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL21l
c3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCBhODgyNmI4YzAwYzAwYjdhODc2
YWQzOGFmYWU2MWFlNzhlOGFjZDg2Li45YzcyYmM4NWM3MjI2MzlkZWQ3YzZlODgzNWUwMTQwNjgy
NjBkOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzWzBdOyB9
CiAgICAgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MigpIGNvbnN0IHsgcmV0dXJu
IG1fcG9ydHNbMV07IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFByb2Nlc3NJZGVu
dGlmaWVyPiBwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNz
Rm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICBib29sIGluY2x1ZGVz
UG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICB2b2lkIGVudGFuZ2xlUG9y
dFdpdGhQcm9jZXNzKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFByb2Nlc3NJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpc2VudGFuZ2xlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBtX3BvcnRzWzJdOwogICAgIGJvb2wgbV9pc0Nsb3NlZFsyXSB7IGZhbHNlLCBmYWxzZSB9
OwotICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBtX3Byb2Nlc3Nlc1syXTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBtX3Byb2Nlc3Nlc1syXTsKICAgICBSZWZQ
dHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2VudGFuZ2xlZFRvUHJvY2Vzc1Byb3RlY3RvcnNbMl07
CiAgICAgVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtX3BlbmRpbmdNZXNzYWdlc1sy
XTsKICAgICBIYXNoU2V0PFJlZlB0cjxNZXNzYWdlUG9ydENoYW5uZWw+PiBtX3BlbmRpbmdNZXNz
YWdlUG9ydFRyYW5zZmVyc1syXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaAppbmRleCBjNTYwYWYwZTBkYjAz
Yjk3NTYxMzY1NTk2MmY0MDRjYjQ2N2UxMzIyLi5kNDVmNzYzNGM2MThiMDk3MGI5OGRhOGMyZjQ5
NzI2YjliOTAxOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7CiAgICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFy
cmF5IHRyYW5zZmVycmVkUG9ydHM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogCkBAIC01Myw3ICs1Myw3
IEBAIHZvaWQgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyByZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggYjlkMzdjNzkxODcwNGI1NmUzMWE2
OGYxOGI0OWVjOGI5ZDY4NmNmNS4uZjU1MDAzNTZiNjBjZGJjYWQyOWRkM2JmNzI1OGUzYWIyOTJj
MDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFya1By
ZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQoRWRp
dENvbW1hbmQqKTsKIAogICAgIFRpbWVyIG1fdGltZXI7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmU7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZTsKICAgICBib29sIG1faXNBY3RpdmUgeyB9OwogICAg
IGJvb2wgbV9pc0Rpc21pc3NlZEJ5RWRpdGluZyB7IH07CiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlw
ZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RU
eXBlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29t
bWFuZC5jcHAKaW5kZXggMzI5MWFiZTUyZjkxN2YyOGRmMDZjMzU2MWZmZTFlMTkzZDIxNmU3Ni4u
NDc0YmVjOGFhMzA0OGZjMDQxNThiN2NmZjZiZGMzNmY1MmIyMWFmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcApAQCAtMzgsNyArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8
Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlLCBSZWY8SFRNTEVsZW1lbnQ+Pj4gbGlzdENvbnZl
cnNpb25UeXBlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6OlR5
cGUsIFJlZjxIVE1MRWxlbWVudD4+PiBsaXN0Q29udmVyc2lvblR5cGVGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGF1dG8gc3RhcnROb2RlID0g
c2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpOwogICAgIGF1dG8gZW5kTm9kZSA9IHNl
bGVjdGlvbi5lbmQoKS5jb250YWluZXJOb2RlKCk7CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxzdGQ6OnBhaXI8Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlLCBSZWY8SFRNTEVs
ZW1lbnQ+Pj4gbGlzdENvCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8
Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlPiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RD
b252ZXJzaW9uVHlwZShEb2N1bWVudCYgZG9jdW1lbnQpCitzdGQ6Om9wdGlvbmFsPENoYW5nZUxp
c3RUeXBlQ29tbWFuZDo6VHlwZT4gQ2hhbmdlTGlzdFR5cGVDb21tYW5kOjpsaXN0Q29udmVyc2lv
blR5cGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cihkb2N1bWVudC5mcmFtZSgpKSkgewogICAgICAgICBpZiAoYXV0byB0eXBlQW5kRWxlbWVu
dCA9IGxpc3RDb252ZXJzaW9uVHlwZUZvclNlbGVjdGlvbihmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0
VHlwZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21t
YW5kLmgKaW5kZXggMTQzOWYyMjdmMjVmZTQwZGYyYjI4YTJjODdiNDIxZmNjMTljM2Q1NC4uZWZm
ZGU4MWM5NTMwMjhiNTk3ZWJiY2FmZWRiNjY5ZTYzYzZlNDkyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5oCkBAIC0zNyw3ICszNyw3IEBAIGNs
YXNzIEhUTUxFbGVtZW50OwogY2xhc3MgQ2hhbmdlTGlzdFR5cGVDb21tYW5kIGZpbmFsIDogcHVi
bGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUg
OiB1aW50OF90IHsgQ29udmVydFRvT3JkZXJlZExpc3QsIENvbnZlcnRUb1Vub3JkZXJlZExpc3Qg
fTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gbGlzdENvbnZlcnNpb25UeXBlKERvY3VtZW50
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gbGlzdENvbnZlcnNpb25UeXBlKERv
Y3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ+IGNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENoYW5nZUxpc3RUeXBlQ29tbWFuZChkb2N1bWVudCwgdHlwZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA3NmVk
MTE1Y2I1YjZhYmUxNWZhNzJhOTVlMTMwZjc4NzA0Y2JjNzlkLi4xMGFmMTNhNTgzNWQxM2EzY2Rk
NjQ4ZDExYzVlOWNhNGEwNzIwZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQzMyw4ICsxNDMzLDggQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFy
dE9mUGFyYWdyYXAKIAogICAgIEFTU0VSVCgoc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5pc051bGwo
KSAmJiBlbmRPZlBhcmFncmFwaFRvTW92ZS5pc051bGwoKSkgfHwgIWVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmlzTnVsbCgpKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydEluZGV4OwotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBzdGFydEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGVuZEluZGV4OwogICAg
IGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rp
b25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9uKCku
aXNOb25lKCkpIHsKICAgICAgICAgYXV0byB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24o
KS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwCiAgICAgfQogfQogCi1PcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdAorc3RkOjpv
cHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJl
YWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdAogewogICAgIGF1dG8gZW1wdHlMaXN0SXRlbSA9
IGVuY2xvc2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkp
OwogICAgIGlmICghZW1wdHlMaXN0SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCBjOTZlNDlhY2IxZmQxMzFhZDc5ZWRhNmVhZWY0Nzc0
YzAyMjdmMDkzLi4yZWY2NzJiOGEyNmFkNWNjOWM3MWFlOTA1YTM2YzQ5MzgyYjQ3ZmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC0yMDYs
NyArMjA2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0Vs
ZW1lbnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBv
dXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7CiAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJE
ZWxldGlvbihWaXNpYmxlUG9zaXRpb24gZGVzdGluYXRpb24gPSBWaXNpYmxlUG9zaXRpb24oKSk7
CiAgICAgCi0gICAgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gc2hvdWxkQnJlYWtPdXRPZkVt
cHR5TGlzdEl0ZW0oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+
IHNob3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkgY29uc3Q7CiAgICAgYm9vbCBicmVha091
dE9mRW1wdHlMaXN0SXRlbSgpOwogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVv
dGVkUGFyYWdyYXBoKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
aW9uSGlnaGxpZ2h0LmgKaW5kZXggNjVmMTZlZmI2ODRjMTdhMGM1ZWNhMDMzOTgyOTc4MjcyYTUw
ODg4Ni4uMjFiZDcxODY5YmEyMDM0ZDM5NzI3M2EzM2M1OTAzMTA0MDlhMTBlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaApAQCAtNTAsNyArNTAs
NyBAQCBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQgewogICAgIENvbG9yIGNvbG9yIHsgZGVm
YXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBv
c2l0aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KQEAgLTYyLDE5ICs2MiwxOSBAQCB2b2lkIENvbXBvc2l0aW9uSGlnaGxpZ2h0Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxp
Z2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYg
KCFzdGFydE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5k
T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZW5kT2Zmc2V0OwogICAgIGlmICghZW5kT2Zmc2V0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9y
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7
CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBmMzA2MTM4OTdlZGUxNDEzNTQ4ZWVi
Y2Y0YzE2NmE2OWZiZjJjZmMxLi5jOWNiZTEzZGRmN2MzODdmNTdkYzNmNWE1YmVmY2M2MGFmZDI3
M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC01NjAsNyAr
NTYwLDcgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IEVkaXRpbmdTdHlsZTo6c3R5bGVX
aXRoUmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKSBjb24KICAgICByZXR1cm4gc3R5bGU7CiB9CiAK
LU9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4
dERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDgsNyArMTYwOCw3IEBAIFJlZjxFZGl0aW5nU3R5
bGU+IEVkaXRpbmdTdHlsZTo6aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVkZWQoRWxlbWVudCYg
ZWxlbWVudCkKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlIHx8ICFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPnN0eWxlKCkuaGFzQXBwbGVDb2xvckZpbHRlcigpKQogICAgICAgICByZXR1cm4gKnRoaXM7
CiAKLSAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZkludmVydGlibGUgPSBbJl0oQ1NTUHJvcGVy
dHlJRCBpZCkgLT4gT3B0aW9uYWw8Q29sb3I+IHsKKyAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJ
ZkludmVydGlibGUgPSBbJl0oQ1NTUHJvcGVydHlJRCBpZCkgLT4gc3RkOjpvcHRpb25hbDxDb2xv
cj4gewogICAgICAgICBhdXRvIGNvbG9yID0gbV9tdXRhYmxlU3R5bGUtPnByb3BlcnR5QXNDb2xv
cihpZCk7CiAgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9yLT5pc1Zpc2libGUoKSB8fCBjb2xv
ci0+aXNTZW1hbnRpYygpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4IGNmNzRkNDlhYzkxMzRjNzY3ZGMzMmNj
MGE1YmQ4ZmQ5OGI2Nzg2NzcuLjQ3OGU1YjY1ZDZlZjFmNzA4ZGI5MjJmYmJmYzg4Y2Q3ZTg5MGI4
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApAQCAtMTExLDcgKzExMSw3
IEBAIHB1YmxpYzoKIAogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKCkgeyByZXR1
cm4gbV9tdXRhYmxlU3R5bGUuZ2V0KCk7IH0KICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGVXaXRoUmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKSBjb25zdDsKLSAgICBPcHRpb25h
bDxXcml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxXcml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHlsZShSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4mJik7CiAgICAgdm9pZCBvdmVycmlkZVdpdGhTdHlsZShjb25zdCBTdHlsZVByb3Bl
cnRpZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA1ZDgxYzJmMjU2NzQ1YjY5
NTM5OWQ5MjA1Y2U3YWQwYjVmYWY5YTViLi4xZmJmZDkzYjIzOTA5N2ZjOWJkNGE5ZThlOTBiYzZj
ODViNDQyODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgdm9pZCBDbGVhclRleHRDb21tYW5kOjpDcmVhdGVBbmRBcHBseShEb2N1bWVudCYgZG9jdW1l
bnQpCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5p
Y29kZTsKIAotVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFu
Z2UoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiB0ZW1wb3Jh
cnlTZWxlY3Rpb24sIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMp
CitUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gdGVtcG9yYXJ5
U2VsZWN0aW9uLCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zKQog
ICAgIDogbV9kb2N1bWVudChSZWZQdHIoJmRvY3VtZW50KSkKICAgICAsIG1fb3B0aW9ucyhvcHRp
b25zKQogICAgICwgbV93YXNJZ25vcmluZ1NlbGVjdGlvbkNoYW5nZXMoZG9jdW1lbnQuZWRpdG9y
KCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQpAQCAtNjYyLDcgKzY2Miw3IEBAIGJvb2wgRWRp
dG9yOjpjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
KQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCkgJiYgcGFzdGVib2FyZC5jYW5TbWFydFJlcGxhY2UoKTsKIH0KIAotYm9vbCBFZGl0b3I6
OnNob3VsZEluc2VydEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ0RPTVJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rp
b24gZ2l2ZW5BY3Rpb24pCitib29sIEVkaXRvcjo6c2hvdWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
ZXBsYWNpbmdET01SYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogewogICAg
IGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc0MSwxMiArNzQxLDEy
IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBTZWxlY3RSZXBsYWNlbWVudCBzZWxlCiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpyYW5nZSwgdGV4dCksIHNlbGVjdFJlcGxhY2Vt
ZW50LCBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGU6OlllcywgZWRpdGluZ0FjdGlvbik7CiB9CiAK
LU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnNlbGVjdGVkUmFuZ2UoKQorc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdlKCkKIHsKICAgICByZXR1cm4g
bV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwog
fQogCi1ib29sIEVkaXRvcjo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByYW5nZSkgY29uc3QKK2Jvb2wgRWRpdG9yOjpzaG91bGREZWxldGVSYW5nZShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJhbmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKCkgJiYgY2FuRGVsZXRlUmFuZ2UoKnJhbmdlKSAm
JiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkRGVsZXRlUmFuZ2UoKnJhbmdlKTsKIH0KQEAg
LTc2Nyw3ICs3NjcsNyBAQCBib29sIEVkaXRvcjo6dHJ5REhUTUxDdXQoKQogICAgIHJldHVybiAh
ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENs
aXBib2FyZEV2ZW50S2luZDo6Q3V0KTsKIH0KIAotYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKSBjb25zdAorYm9vbCBFZGl0b3I6OnNob3VsZElu
c2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYg
KG1fZG9jdW1lbnQuZnJhbWUoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc2hvdWxkU3VwcHJlc3NU
ZXh0SW5wdXRGcm9tRWRpdGluZygpICYmIGFjdGlvbiA9PSBFZGl0b3JJbnNlcnRBY3Rpb246OlR5
cGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2b2lkIEVk
aXRvcjo6ZGlkRW5kRWRpdGluZygpCiAgICAgICAgIGNsaWVudCgpLT5kaWRFbmRFZGl0aW5nKCk7
CiB9CiAKLXZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
KQogewogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPndpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChyYW5nZSk7CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIHdvcmQp
IGNvbnN0CiBUZXh0Q2hlY2tpbmdHdWVzc2VzIEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRP
clVuZ3JhbW1hdGljYWwoKQogewogICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkp
IHsKLSAgICAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICAgICAgYXV0byBzZWxlY3Rpb24gPSBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlz
Q2FyZXQoKSAmJiBiZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhv
dXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgYXV0byB3b3JkU2VsZWN0aW9uID0gVmlzaWJs
ZVNlbGVjdGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKQEAgLTI2MjQsNyArMjYyNCw3IEBAIHZvaWQg
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB3b3JkU3RhcnQsCiAjZW5kaWYKIH0KICAgICAKLU9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uLCBib29sIGNoZWNrU3BlbGxpbmcpCitzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBib29sIGNoZWNrU3BlbGxpbmcpCiB7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNl
bGVjdGlvbiBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4KQEAgLTI2ODMsNyAr
MjY4Myw3IEBAIGJvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IobV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwogfQog
Ci1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVk
aXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
CiB7CiAgICAgcmV0dXJuIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCB0
cnVlKTsKIH0KQEAgLTI2OTMsNyArMjY5Myw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1h
cihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgbWFya01pc3NwZWxsaW5n
c09yQmFkR3JhbW1hcihzZWxlY3Rpb24sIGZhbHNlKTsKIH0KIAotdm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoT3B0aW9uU2V0PFRleHRDaGVja2lu
Z1R5cGU+IHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
c3BlbGxpbmdSYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBhdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGdyYW1tYXJSYW5nZSkK
K3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKE9w
dGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc3BlbGxpbmdSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiBncmFtbWFyUmFuZ2UpCiB7CiAgICAgaWYgKHBsYXRmb3JtRHJp
dmVuVGV4dENoZWNrZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOTEsNyArMzA5
MSw3IEBAIHZvaWQgRWRpdG9yOjpkZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLT5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKHBvc2l0aW9uLCBvcmlnaW5h
bFN0cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yUG9p
bnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gRWRpdG9yOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsK
ICAgICBhdXRvIGRvY3VtZW50ID0gbV9kb2N1bWVudC5mcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQo
d2luZG93UG9pbnQpOwogICAgIGlmICghZG9jdW1lbnQpCkBAIC0zMTI5LDcgKzMxMjksNyBAQCB2
b2lkIEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29sIGlnbm9yZSwgUmV2ZWFs
U2VsZWN0aW9uIHNob3VsZFJldmVhbAogICAgICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRp
bmdPcGVyYXRpb24oU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBSZXZlYWxF
eHRlbnQpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJh
bmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6Y29tcG9zaXRp
b25SYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0aW9uTm9kZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM0NjcsNyArMzQ2Nyw3IEBAIHZvaWQgRWRpdG9yOjph
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBjb25zdAogYm9vbCBFZGl0b3I6OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAg
UmVmPERvY3VtZW50PiBwcm90ZWN0ZWREb2N1bWVudChtX2RvY3VtZW50KTsKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmVzdWx0UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmVzdWx0UmFuZ2U7CiAgICAgewogICAgICAgICBtX2RvY3VtZW50LnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25D
YWxsYmFja0Rpc2FibGVyIGRpc2FibGVyKG1fZG9jdW1lbnQpOwpAQCAtMzUwMSw3ICszNTAxLDcg
QEAgc3RhdGljIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGVDb250ZW50
cyhOb2RlJiBub2RlLCBGaW5kT3B0aW9ucwogICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKEJh
Y2t3YXJkcykgPyBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhub2RlKSA6IG1h
a2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMobm9kZSk7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJiBub2Rl
LCBGaW5kT3B0aW9ucyBvcHRpb25zKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4gbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9kZSYgbm9kZSwgRmluZE9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpID8gbWFrZUJv
dW5kYXJ5UG9pbnRCZWZvcmVOb2RlKG5vZGUpIDogbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUo
bm9kZSk7CiB9CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCBzdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFw
c2VJZlJvb3RzRGlmZmVyKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCiAgICAgICAgID8gV1RGTW92ZShy
YW5nZSkgOiBTaW1wbGVSYW5nZSB7IHJhbmdlLnN0YXJ0LCByYW5nZS5zdGFydCB9OwogfQogCi1P
cHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlZmVyZW5jZVJhbmdlLCBGaW5k
T3B0aW9ucyBvcHRpb25zKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5n
ZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNTcx
LDEyICszNTcxLDEyIEBAIHN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdlKEZyYW1lJiBmcmFtZSwg
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdW5zaWdu
ZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNp
Z25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBsZVJhbmdlPiogbWF0Y2hl
cykKK3Vuc2lnbmVkIEVkaXRvcjo6Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBGaW5kT3B0aW9u
cyBvcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBs
ZVJhbmdlPiogbWF0Y2hlcykKIHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VhcmNoUmFuZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VhcmNoUmFuZ2U7CiAgICAgaWYgKHJhbmdlKSB7
CiAgICAgICAgIGlmICgmcmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpCiAg
ICAgICAgICAgICBzZWFyY2hSYW5nZSA9ICpyYW5nZTsKQEAgLTM2OTgsNyArMzY5OCw3IEBAIHN0
YXRpYyBWZWN0b3I8U2ltcGxlUmFuZ2U+IHNjYW5Gb3JUZWxlcGhvbmVOdW1iZXJzKGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGV4dGVuZFNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2Us
IHVuc2lnbmVkIGNoYXJhY3RlcnNUb0V4dGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBleHRlbmRTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCB1bnNpZ25l
ZCBjaGFyYWN0ZXJzVG9FeHRlbmQpCiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VEZXByZWNhdGVk
TGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpOwogICAgIGF1dG8gZW5kID0gbWFrZURlcHJlY2F0
ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpOwpAQCAtMzk0MCwxMyArMzk0MCwxMyBAQCBTdHJp
bmcgRWRpdG9yOjpzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4g
cGxhaW5UZXh0KCpyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OmNv
bnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gRWRpdG9yOjpjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QK
IHsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpOwogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCkpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZUVuZCgp
KSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNr
aW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KSBjb25zdAorc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChj
b25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIXJlc3Vs
dC5yYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MjAzLDcg
KzQyMDMsNyBAQCB2b2lkIEVkaXRvcjo6bm90aWZ5Q2xpZW50T2ZBdHRhY2htZW50VXBkYXRlcygp
CiAgICAgfQogfQogCi12b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBFZGl0b3I6Omluc2Vy
dEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQoKSk7CiAgICAgYXR0
YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKQEAgLTQyNTYsNyArNDI1
Niw3IEBAIHZvaWQgRWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpCiAgICAgbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTaG91bGRTaG93QmxvY2tDdXJzb3IobV9vdmVyd3JpdGVN
b2RlRW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OmFkanVzdGVk
U2VsZWN0aW9uUmFuZ2UoKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjphZGp1
c3RlZFNlbGVjdGlvblJhbmdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdG8g
YWRqdXN0IHRoZSBzZWxlY3Rpb24gdG8gaW5jbHVkZSB0aGUgYW5jaG9yIHRhZyBpdCdzIGluPyBX
aG9ldmVyIHdyb3RlIHRoaXMgY29kZSBvcmlnaW5hbGx5IGZvcmdvdCB0byBsZWF2ZSB1cyBhIGNv
bW1lbnQgZXhwbGFpbmluZyB0aGUgcmF0aW9uYWxlLgogICAgIGF1dG8gcmFuZ2UgPSBzZWxlY3Rl
ZFJhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA5MmRiNGViYjk5NDQ2ODA4YzJl
YmJiYTQ5OGI1NmZhY2YzZjYyZTMyLi4xNThiODdjYzE4ZWRmMTg1NWY1NGIxMGZlMzcyMjJjNDU1
OTNiMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBlbnVt
IGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewogCiBjbGFzcyBUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRlbXBv
cmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+
ID0gc3RkOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKERvY3VtZW50
Jiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9u
U2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5UZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoKTsKIAogcHJpdmF0ZToKQEAgLTEzOCw3ICsxMzgs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FwcGVh
cmFuY2VVcGRhdGVzV2VyZUVuYWJsZWQ7CiAjZW5kaWYKLSAgICBPcHRpb25hbDxWaXNpYmxlU2Vs
ZWN0aW9uPiBtX3NlbGVjdGlvblRvUmVzdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IG1fc2VsZWN0aW9uVG9SZXN0b3JlOwogfTsKIAogY2xhc3MgSWdub3JlU2VsZWN0
aW9uQ2hhbmdlRm9yU2NvcGUgewpAQCAtMjE4LDkgKzIxOCw5IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG91dGRlbnQoKTsKICAgICB2b2lkIHRyYW5zcG9zZSgpOwogCi0gICAg
Ym9vbCBzaG91bGRJbnNlcnRGcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAgICBib29sIHNob3VsZElu
c2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRp
dG9ySW5zZXJ0QWN0aW9uKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZERl
bGV0ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGNvbnN0OworICAgIGJvb2wg
c2hvdWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKKyAgICBib29sIHNob3VsZElu
c2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBFZGl0b3JJbnNlcnRBY3Rpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkRGVsZXRlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBjb25zdDsK
ICAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKIAogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbik7CkBAIC0zMjcsNyArMzI3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKSBj
b25zdDsKICAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSopIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb25BZnRlclR5cGluZywgYm9vbCBkb1JlcGxhY2VtZW50KTsKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7
IC8vIFJldHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFuZ2UuCisgICAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7IC8v
IFJldHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFuZ2UuCiAgICAgdm9pZCBtYXJrQmFkR3JhbW1h
cihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9v
bCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7
CiAgICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYsIGNv
bnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CkBAIC0zMzYsNyArMzM2LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZU92
ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXMoT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+LCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHNwZWxsaW5nUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiBncmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4sIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiBzcGVsbGluZ1JhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIGdyYW1tYXJSYW5nZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVAogI2VuZGlmCkBAIC0zNjEsNyArMzYxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKTsKLSAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKIAogICAgIHZvaWQgc2hvd0ZvbnRQYW5lbCgp
OwpAQCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpcm1PckNhbmNlbENv
bXBvc2l0aW9uQW5kTm90aWZ5Q2xpZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5j
ZWxDb21wb3NpdGlvbigpOwogICAgIGJvb2wgY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklz
SW52YWxpZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb21w
b3NpdGlvblJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gY29tcG9zaXRpb25SYW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1
bnNpZ25lZCYgc2VsZWN0aW9uRW5kKSBjb25zdDsKIAogICAgIC8vIGdldHRpbmcgaW50ZXJuYXRp
b25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0aW9uIHN0YXRlIChmb3IgdXNlIGJ5IElubGluZVRleHRC
b3gpCkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29sLCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2
ZWFsRXhpc3RpbmdTZWxlY3Rpb24gPSBSZXZlYWxTZWxlY3Rpb246Olllcyk7CiAgICAgYm9vbCBp
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIHdpbmRvd1BvaW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApAQCAtNDE3LDcgKzQxNyw3
IEBAIHB1YmxpYzoKIAogICAgIEVkaXRpbmdCZWhhdmlvciBiZWhhdmlvcigpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBzZWxlY3RlZFJhbmdlKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsKQEAgLTQ1
Miw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dEZvckRhdGFUcmFu
c2ZlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHNlYXJjaFJhbmdlLCBGaW5kT3B0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc2VhcmNoUmFuZ2UsIEZpbmRPcHRpb25z
KTsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1hcmsoKSBjb25zdDsgLy8gTWFyaywg
dG8gYmUgdXNlZCBhcyBlbWFjcyB1c2VzIGl0LgogICAgIHZvaWQgc2V0TWFyayhjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CkBAIC00NjcsNyArNDY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rp
b24sIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAg
Ym9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2Vs
ZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBj
b3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVj
dG9yPFNpbXBsZVJhbmdlPiopOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvdW50TWF0
Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbGltaXQsIGJvb2wgbWFya01hdGNoZXMsIFZlY3Rv
cjxTaW1wbGVSYW5nZT4qKTsKICAgICBib29sIG1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoYm9vbCk7CiAKQEAgLTU1MiwxNSArNTUyLDE1IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0
Q2hlY2tpbmdSZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2lu
Z1Jlc3VsdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBU
ZXh0Q2hlY2tpbmdSZXN1bHQmKSBjb25zdDsKICAgICBib29sIGlzSGFuZGxpbmdBY2NlcHRlZENh
bmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlOyB9
CiAKICAgICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1f
aXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0Rp
Y3Rpb25hcnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQ
b3B1cEluZm87IH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
T3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtNTkzLDcgKzU5
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVu
dEZyYWdtZW50Jik7CiAKICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJh
dGlvbihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBEb05vdFJldmVhbEV4dGVudCk7Ci0gICAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZyk7CisgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nKTsKICAgICBPcHRpb25TZXQ8VGV4dENoZWNr
aW5nVHlwZT4gcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKGNvbnN0IE5vZGUmIHJvb3RFZGl0
YWJsZUVsZW1lbnQsIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yKSBjb25zdDsK
QEAgLTYxMyw3ICs2MTMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRT
ZWxlY3Rpb25SYW5nZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVk
U2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGEyYmZhNmRlOTFkYjQ4NGM2
MWRkOTgwOWUyYzhjZjg0OTY5N2QwY2EuLjlkYTgwNzM4NWUwM2MzOTEwY2JhZjgwOGFiM2ZjYmU3
ZWUyMTg5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0
ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZm9udE5h
bWU7CiAgICAgU3RyaW5nIG1fZm9udEZhbWlseTsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1fZm9u
dFNpemU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplRGVsdGE7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gbV9ib2xkOwotICAgIE9wdGlvbmFsPGJvb2w+IG1faXRhbGljOworICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
X2ZvbnRTaXplRGVsdGE7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2JvbGQ7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBtX2l0YWxpYzsKIH07CiAKIGNsYXNzIEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzIHsKQEAgLTg2LDEyICs4NiwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWRp
dEFjdGlvbiBlZGl0QWN0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8VmVy
dGljYWxBbGlnbkNoYW5nZT4gbV92ZXJ0aWNhbEFsaWduOwotICAgIE9wdGlvbmFsPENvbG9yPiBt
X2JhY2tncm91bmRDb2xvcjsKLSAgICBPcHRpb25hbDxDb2xvcj4gbV9mb3JlZ3JvdW5kQ29sb3I7
Ci0gICAgT3B0aW9uYWw8Rm9udFNoYWRvdz4gbV9zaGFkb3c7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
bV9zdHJpa2VUaHJvdWdoOwotICAgIE9wdGlvbmFsPGJvb2w+IG1fdW5kZXJsaW5lOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVydGljYWxBbGlnbkNoYW5nZT4gbV92ZXJ0aWNhbEFsaWduOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29sb3I+IG1fYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29sb3I+IG1fZm9yZWdyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNoYWRvdz4g
bV9zaGFkb3c7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3N0cmlrZVRocm91Z2g7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX3VuZGVybGluZTsKICAgICBGb250Q2hhbmdlcyBtX2ZvbnRD
aGFuZ2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0
cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCmluZGV4
IGZmMmYyMjY5NjJlZTJiMDAzNTc0MWJmOTNjMjAxNmZhMDVmODA0MDUuLjc3MDA1NTQ1ZTdmZWFh
MTZlYzIxZjU4M2Q0ZGM0YzhiMTRlMWE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRm9udEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRB
dHRyaWJ1dGVzLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFRleHRMaXN0IHsKICAgICBib29s
IG9yZGVyZWQgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxUZXh0TGlzdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxUZXh0TGlzdD4gZGVjb2RlKERlY29kZXIm
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU1RleHRMaXN0PiBjcmVh
dGVUZXh0TGlzdCgpIGNvbnN0OwpAQCAtNTQsMTkgKzU0LDE5IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IGlubGluZSB2b2lkIFRleHRMaXN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0eWxlKSA8PCBzdGFydGlu
Z0l0ZW1OdW1iZXIgPDwgb3JkZXJlZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5s
aW5lIE9wdGlvbmFsPFRleHRMaXN0PiBUZXh0TGlzdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXh0TGlzdD4g
VGV4dExpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ4
X3Q+IHN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gc3R5bGU7CiAgICAgZGVjb2Rl
ciA+PiBzdHlsZTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0ZW1OdW1iZXI7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAgICBkZWNvZGVyID4+IHN0YXJ0aW5nSXRl
bU51bWJlcjsKICAgICBpZiAoIXN0YXJ0aW5nSXRlbU51bWJlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9y
ZGVyZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggM2M1NGEzMGM3ZDFhNmViZGU4YjFj
MmYwNzNmODcyN2VjNWJlMDQ5MC4uYmRkOWZkYmJlNzY5NGU5NDkyZmNjMGM4OWFhMWRlZjI4YzMz
ZmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5n
ZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgICAgIGlu
c2VydEJsb2NrUGxhY2Vob2xkZXIobGFzdFBhcmFncmFwaEluQmxvY2tOb2RlKTsKIH0KICAgICAK
LUVsZW1lbnQqIEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFu
ZChjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorRWxlbWVudCogRm9ybWF0Qmxv
Y2tDb21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5o
CmluZGV4IGRhMmFkNTA0YmMxMDUzNzk4NDRlN2NhYTUwMjUwNmQxNTExNjI3OTQuLjE5NTAxYzg2
NDcwM2E2MjY3MGFhN2NlYzM2M2E5NjBmOTM3N2NlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBwcmVzZXJ2ZXNUeXBpbmdTdHlsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21t
YW5kKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIHN0YXRpYyBFbGVtZW50KiBl
bGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+Jik7CiAgICAgYm9vbCBkaWRBcHBseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQXBwbHk7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5k
ZXggMjRkZThkN2QwYWIwMmZmMGZkYTU3N2YxODg2YmI1OTZhOTY2NjRhNi4uOTFmZmIzZjVmZTJm
M2YzZDE1YjMyMTJhOGExOThlYzMwOTMwNjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnNlbGVjdEFsbCgpCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxl
Y3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEFmZmluaXR5IGFm
ZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZyBjbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgdXNl
clRyaWdnZXJlZCkKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBBZmZpbml0eSBhZmZpbml0eSwgU2hv
dWxkQ2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQp
CiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjUyMyw3ICsy
NTIzLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50Q29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqcmFuZ2UpKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpl
bGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBlbGVtZW50ID0gZGVwcmVjYXRlZEVuY2xv
c2luZ0Jsb2NrRmxvd0VsZW1lbnQobV9zZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2
YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0yNTQ3LDcg
KzI1NDcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250
YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQogICAgICAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsK
IH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250
YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVT
ZWxlY3Rpb246OndvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpCiB7CiAgICAgcmV0
dXJuIHdvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CiB9CkBAIC0yNjAxLDEyICsyNjAxLDEyIEBAIGJvb2wgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5n
Q3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9uKGludCBh
bW91bnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rp
b24oQWx0ZXJhdGlvbk1vdmUsIGFtb3VudCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBG
cmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3Vu
dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5n
ZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAogewogICAgIHJl
dHVybiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEFsdGVyYXRpb25FeHRlbmQsIGFt
b3VudCk7CiB9CkBAIC0yNzQ4LDcgKzI3NDgsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxl
Y3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRp
b25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRT
ZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJy
ZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uIGFsdGVyYXRpb24sIGludCBhbW91bnQpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMjc5Nyw3ICsyNzk3LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRD
b2xvcihjb25zdCBDb2xvciYgY2FyZXRDb2xvcikKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKLXN0YXRpYyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9j
dW1lbnQ+JiBkb2N1bWVudCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3N0
YXRpYyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9jdW1lbnQ+JiBkb2N1
bWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJl
dHVybiBkb2N1bWVudCAmJiByYW5nZSAmJiBkb2N1bWVudC0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0
LmNvbnRhaW5lcikgJiYgZG9jdW1lbnQtPmNvbnRhaW5zKHJhbmdlLT5lbmQuY29udGFpbmVyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCA2YmNhN2E4NTZk
YzYxMGIwZmYzNWZlMDhiNjA3YjY3YmE5ZDJlYWI5Li45M2E1OWQ1ODY0MjRiMjdmNmE4YTg3NzBh
NGJmZDUzMjIxMjYyNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
CkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9u
T3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9
IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENs
b3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNl
dFNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgQWZmaW5pdHksIFNo
b3VsZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmlnZ2Vy
ZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFs
bCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHdpbGxCZVJl
bW92ZWRGcm9tRnJhbWUoKTsKQEAgLTIxMCwxNSArMjEwLDE1IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rp
b25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0
aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxl
Y3Rpb24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJh
bmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVUNoYXIgY2hhcmFj
dGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2Vs
ZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVu
dFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyQ3VycmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgc2V0Q2FyZXRCbGlua3MoYm9vbCBjYXJl
dEJsaW5rcyA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihj
b25zdCBDb2xvciYpOwpAQCAtMzEzLDE0ICszMTMsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGRp
c3BhdGNoU2VsZWN0U3RhcnQoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVy
YXRpb24sIGludCBhbW91bnQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24sIGludCBhbW91bnQp
IGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUFzc29jaWF0ZWRMaXZlUmFuZ2UoKTsK
IAogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFJhbmdlPiBt
X2Fzc29jaWF0ZWRMaXZlUmFuZ2U7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV94UG9zRm9y
VmVydGljYWxBcnJvd05hdmlnYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBt
X3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1f
c2VsZWN0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBtX29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0
byBzdG9yZSBiYXNlIGJlZm9yZSB0aGUgYWRqdXN0bWVudCBhdCBiaWRpIGJvdW5kYXJ5LgogICAg
IFRleHRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAppbmRleCBhYTE5YTAwZTI5NDIyZDFiYjIxZTBlN2MyZjUyZGIxZjFjMWNjNjExLi45
ODkyYzkxNmFhMDIzNTE4ZGEwMTYzZmI5NWNjZGUzN2EwYTdjMzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIHZv
aWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZShTdHJpbmdCdWlsZGVyJiByZXN1
bHQsIGNvbnN0IEVsZW1lbnQmIGVsCiAKICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAKLSAgICBP
cHRpb25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3RpdmVYTUxQcmVmaXhlZE5hbWU7CisgICAgc3Rk
OjpvcHRpb25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3RpdmVYTUxQcmVmaXhlZE5hbWU7CiAgICAg
aWYgKGlzU2VyaWFsaXppbmdIVE1MKQogICAgICAgICByZXN1bHQuYXBwZW5kKGh0bWxBdHRyaWJ1
dGVTZXJpYWxpemF0aW9uKGF0dHJpYnV0ZSkpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCBhY2FjODBlNmNlZmNmY2RmMzk0NmFmZjc4
MTUwOTMwMjA5M2I1N2FjLi41YzA4N2UwMTEwZGY1ZWQ2MTgxOTBkOTNiZGRlZDVhNTQ3MzEzMzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtODUsOCAr
ODUsOCBAQCBwcml2YXRlOgogICAgIExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBtX3J1
bjsKICAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8
TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcj4gbV9uZXh0
TGVhZk9uTGluZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yPiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX25leHRMZWFmT25MaW5lOwog
fTsKIAogYm9vbCByZW5kZXJPYmplY3RDb250YWluc1Bvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVj
dCosIGNvbnN0IFBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDMyYTViNmQ4YjZkNmE4ZDNjZmNkMjU2N2Y4
N2JhNjQ5NGZhNjFjNTUuLjQ3NTA0OTM4YWU3YzU2YmRjZmRiOWM1NGU2ODlhODMzYmVlNzQxNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgc3RhdGljIGJvb2wgZnJhZ21lbnROZWVkc0NvbG9y
VHJhbnNmb3JtZWQoUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFAKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gcHJvcGVydHlMaWdodG5lc3MgPSBbJl0oY29uc3QgU3R5
bGVQcm9wZXJ0aWVzJiBpbmxpbmVTdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSAtPiBP
cHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIHByb3BlcnR5TGlnaHRuZXNzID0gWyZdKGNvbnN0
IFN0eWxlUHJvcGVydGllcyYgaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkg
LT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgYXV0byBjb2xvciA9IGlubGluZVN0
eWxlLnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYgKCFjb2xvciB8fCAh
Y29sb3IudmFsdWUoKS5pc1Zpc2libGUoKSB8fCBjb2xvci52YWx1ZSgpLmlzU2VtYW50aWMoKSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xODIwLDcgKzE4MjAsNyBAQCBib29sIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpwZXJmb3JtVHJpdmlhbFJlcGxhY2UoY29uc3QgUmVwbGFjZW1l
bnRGcmFnbWVudCYgZgogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5n
ZT4gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydGVkQ29udGVudFJhbmdlKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnNl
cnRlZENvbnRlbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZSht
X3N0YXJ0T2ZJbnNlcnRlZENvbnRlbnQsIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCmluZGV4
IGU2Zjg3MWE2Zjk1NGNjOTM1MzU4YjliMGQzZjNjNjA4MmJkN2FjYjguLjc1OWU4MDBiYmFlYjc2
OThhODhlNGQ2YTZhYzg3Y2U4YzZhM2MyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dDsgfQogICAgIFN0
cmluZyBkb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dEZyYWdtZW50UGxhaW5UZXh0OyB9CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gaW5zZXJ0
ZWRDb250ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBp
bnNlcnRlZENvbnRlbnRSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kKERvY3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlv
blNldDxDb21tYW5kT3B0aW9uPiwgRWRpdEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggOGY3MTVmNGYxMDhhNjdmNTQ2M2EzNmM2
ZmIxOTJiMWY1YWY5MWUzMy4uZWIwYzc2OTYwM2Y0ZGRlMTRhYTY1MDdhNTEzZWYyOWFjNmE4YjAw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIFRleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNraW5nUGFy
YWdyYXBoKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKIH0KIAotVGV4dENoZWNraW5nUGFy
YWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoY29uc3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5n
UmFuZ2UsIGNvbnN0IFNpbXBsZVJhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHBhcmFncmFwaFJhbmdlKQorVGV4dENoZWNraW5nUGFyYWdyYXBoOjpU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoY29uc3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNv
bnN0IFNpbXBsZVJhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcGFyYWdyYXBoUmFuZ2UpCiAgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tp
bmdSYW5nZSkKICAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShyZXBsYWNlbWVudFJh
bmdlKQogICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5nZSkKQEAgLTIyOCw5ICsy
MjgsOSBAQCBUZXh0Q2hlY2tpbmdIZWxwZXI6OlRleHRDaGVja2luZ0hlbHBlcihFZGl0b3JDbGll
bnQmIGNsaWVudCwgY29uc3QgU2ltcGxlUmFuZ2UmCiB7CiB9CiAKLWF1dG8gVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kTWlzc3BlbGxlZFdvcmRzKE9wZXJhdGlvbiBvcGVyYXRpb24pIGNvbnN0IC0+
IHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+PgorYXV0byBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uIG9wZXJhdGlv
bikgY29uc3QgLT4gc3RkOjpwYWlyPE1pc3NwZWxsZWRXb3JkLCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPj4KIHsKLSAgICBzdGQ6OnBhaXI8TWlzc3BlbGxlZFdvcmQsIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPj4gZmlyc3Q7CisgICAgc3RkOjpwYWlyPE1pc3NwZWxsZWRXb3JkLCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPj4gZmlyc3Q7CiAKICAgICB1aW50NjRfdCBjdXJyZW50Q2h1bmtPZmZz
ZXQgPSAwOwogCkBAIC0yOTcsNyArMjk3LDcgQEAgYXV0byBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGJvb2wgY2hlY2sKICAg
ICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdv
cmQ7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsZWRXb3JkUmFuZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxlZFdvcmRSYW5nZTsKICAgICBTdHJp
bmcgYmFkR3JhbW1hclBocmFzZTsKICAgICAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5n
ZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVl
ZHMgdGhhdCBtdWNoIGNvbnRleHQuCkBAIC01NTEsNyArNTUxLDcgQEAgVGV4dENoZWNraW5nR3Vl
c3NlcyBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkV29yZE9yVW5ncmFt
bWF0aWNhbFAKICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gVGV4
dENoZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxlZFdvcmRzKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsZWRX
b3JkcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9u
OjpNYXJrQWxsKS5zZWNvbmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuaAppbmRleCBiNWQyM2EyZWUzZjVlZmE4ZThjY2MyZTM4OGNjMDk5ODRmMmQ4Nzcx
Li44MmNkOTYxMzU5OWZmNGU1MmQzMjJjNmJmNTg0MjY4ZmEzNTY5NWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3Ry
dWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFwaCB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dENoZWNraW5nUGFyYWdyYXBoKGNvbnN0IFNpbXBsZVJh
bmdlJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpOwotICAgIFRleHRDaGVj
a2luZ1BhcmFncmFwaChjb25zdCBTaW1wbGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29uc3QgU2lt
cGxlUmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaChjb25z
dCBTaW1wbGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGF1dG9tYXRp
Y1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBwYXJh
Z3JhcGhSYW5nZSk7CiAKICAgICB1aW50NjRfdCByYW5nZUxlbmd0aCgpIGNvbnN0OwogICAgIFNp
bXBsZVJhbmdlIHN1YnJhbmdlKENoYXJhY3RlclJhbmdlKSBjb25zdDsKQEAgLTY5LDEzICs2OSwx
MyBAQCBwcml2YXRlOgogCiAgICAgU2ltcGxlUmFuZ2UgbV9jaGVja2luZ1JhbmdlOwogICAgIFNp
bXBsZVJhbmdlIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwotICAgIG11dGFibGUgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0
OwotICAgIG11dGFibGUgT3B0aW9uYWw8dWludDY0X3Q+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2NoZWNraW5nTGVuZ3RoOwotICAgIG11dGFibGUg
T3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9jaGVja2luZ1N0YXJ0OworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9jaGVja2luZ0xlbmd0aDsKKyAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsK
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1l
bnRMZW5ndGg7CiB9OwogCiBjbGFzcyBUZXh0Q2hlY2tpbmdIZWxwZXIgewpAQCAtOTYsMTQgKzk2
LDE0IEBAIHB1YmxpYzoKICAgICBVbmdyYW1tYXRpY2FsUGhyYXNlIGZpbmRGaXJzdFVuZ3JhbW1h
dGljYWxQaHJhc2UoKSBjb25zdDsKICAgICBWYXJpYW50PE1pc3NwZWxsZWRXb3JkLCBVbmdyYW1t
YXRpY2FsUGhyYXNlPiBmaW5kRmlyc3RNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFBocmFz
ZShib29sIGNoZWNrR3JhbW1hcikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
bWFya0FsbE1pc3NwZWxsZWRXb3JkcygpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSByYW5nZSBvZiB0
aGUgZmlyc3QgbWlzc3BlbGxlZCB3b3JkLgorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1hcmtBbGxNaXNzcGVsbGVkV29yZHMoKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgcmFuZ2Ugb2Yg
dGhlIGZpcnN0IG1pc3NwZWxsZWQgd29yZC4KICAgICB2b2lkIG1hcmtBbGxVbmdyYW1tYXRpY2Fs
UGhyYXNlcygpIGNvbnN0OwogCiAgICAgVGV4dENoZWNraW5nR3Vlc3NlcyBndWVzc2VzRm9yTWlz
c3BlbGxlZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoYm9vbCBjaGVja0dyYW1tYXIpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgT3BlcmF0aW9uIDogYm9vbCB7IEZpbmRGaXJz
dCwgTWFya0FsbCB9OwotICAgIHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+PiBmaW5kTWlzc3BlbGxlZFdvcmRzKE9wZXJhdGlvbikgY29uc3Q7IC8vIFJldHVy
bnMgdGhlIGZpcnN0LgorICAgIHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4+IGZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uKSBjb25zdDsgLy8g
UmV0dXJucyB0aGUgZmlyc3QuCiAgICAgVW5ncmFtbWF0aWNhbFBocmFzZSBmaW5kVW5ncmFtbWF0
aWNhbFBocmFzZXMoT3BlcmF0aW9uKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgZmlyc3QuCiAgICAg
Ym9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3Q7CiAgICAgaW50IGZpbmRVbmdy
YW1tYXRpY2FsUGhyYXNlcyhPcGVyYXRpb24sIGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYs
IHVpbnQ2NF90IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgdWludDY0X3Qgc3RhcnRPZmZzZXQs
IHVpbnQ2NF90IGVuZE9mZnNldCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGQwNjMwZTMyZGM5MGU0
N2NlNmM0NDZjYjA2NjRlODE5MTJkNGJmN2MuLjRhYzM3YzkxNDhjM2UzYjVkZGM3ZDAyNGQ4ZDc0
NmU2ZDAzYTEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHR5cGUgPT0gVHlwZTo6RXhjbHVkZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxU
eXBlPiB0eXBlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQorICAgIHN0ZDo6b3B0aW9uYWw8
VHlwZT4gdHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICB7CiAgICAgICAgIGF1
dG8gaXQgPSBtX2NhY2hlLmZpbmQoZWxlbWVudCk7CiAgICAgICAgIGlmIChpdCAhPSBtX2NhY2hl
LmVuZCgpKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEl0ZXJhdG9yIG1f
aXRlcmF0b3I7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9w
YXN0RW5kTm9kZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV90ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fdGV4dDsKIH07CiAKIHN0YXRpYyBib29sIHNo
b3VsZEV4dHJhY3RWYWx1ZUZvclRleHRNYW5pcHVsYXRpb24oY29uc3QgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGJvb2wgYXJlRXF1YWxJZ25vcmlu
Z0xlYWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzKGNvbnN0IFN0cmluZyYgY29udGVudCwKICAg
ICByZXR1cm4gY29udGVudC5zdHJpcFdoaXRlU3BhY2UoKSA9PSBvcmlnaW5hbENvbnRlbnQuc3Ry
aXBXaGl0ZVNwYWNlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiB0b2tlbkluZm8oTm9kZSogbm9kZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25Ub2tlbkluZm8+IHRva2VuSW5mbyhOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjp1cGRhdGVJbnNlcnRpb25zKFZlY3RvcjxOb2RlRW50cnk+
JiBsYXN0VG9wRG93bgogICAgICAgICBpbnNlcnRpb25zLmFwcGVuZChOb2RlSW5zZXJ0aW9uIHsg
bGFzdFRvcERvd25QYXRoLnNpemUoKSA/IGxhc3RUb3BEb3duUGF0aC5sYXN0KCkuc2Vjb25kLnB0
cigpIDogbnVsbHB0ciwgKmN1cnJlbnROb2RlIH0pOwogfQogCi1hdXRvIFRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBj
b25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+JiByZXBsYWNlbWVudFRva2VucywgSGFzaFNl
dDxSZWY8Tm9kZT4+JiBjb250YWluZXJzV2l0aG91dFZpc3VhbE92ZXJmbG93QmVmb3JlUmVwbGFj
ZW1lbnQpIC0+IE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPgorYXV0byBUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYg
aXRlbSwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYgcmVwbGFjZW1lbnRUb2tlbnMs
IEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dpdGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9y
ZVJlcGxhY2VtZW50KSAtPiBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPgog
ewogICAgIGlmIChpdGVtLnN0YXJ0LmlzT3JwaGFuKCkgfHwgaXRlbS5lbmQuaXNPcnBoYW4oKSkK
ICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuaAppbmRleCAxYmMwMTgxYmFmYjRlZTRmYTJiZTcxZTU4YzVlNGQyZWZlM2Q3ZGJjLi4yZWZh
NWYyZGI2ZGQzYjJiMDJkZGZmYzY5ODNiZjVmZDI0MDg4ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC01NSwxNyAr
NTUsMTcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzVmlzaWJsZSB7IGZhbHNlIH07CiAKICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1
bGF0aW9uVG9rZW5JbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYW5pcHVsYXRpb25Ub2tlbkluZm8+IGRl
Y29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYW5pcHVsYXRpb25Ub2tlbiB7
CiAgICAgICAgIFRva2VuSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgY29u
dGVudDsKLSAgICAgICAgT3B0aW9uYWw8TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBpbmZvOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvblRva2VuSW5mbz4gaW5mbzsKICAgICAgICAg
Ym9vbCBpc0V4Y2x1ZGVkIHsgZmFsc2UgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNYW5pcHVsYXRpb25Ub2tlbj4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TWFuaXB1bGF0aW9uVG9rZW4+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIGVu
dW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAg
ICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VuczsKIAogICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNYW5pcHVsYXRpb25JdGVtPiBk
ZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNYW5pcHVsYXRpb25JdGVtPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07
CiAKICAgICBzdHJ1Y3QgRXhjbHVzaW9uUnVsZSB7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIEF0b21TdHJpbmcgbG9jYWxOYW1lOwogCiAgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RWxlbWVudFJ1bGU+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50UnVsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAg
fTsKIAogICAgICAgICBzdHJ1Y3QgQXR0cmlidXRlUnVsZSB7CkBAIC05NCwxNCArOTQsMTQgQEAg
cHVibGljOgogICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwogCiAgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXR0cmlidXRlUnVsZT4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZVJ1bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
ICAgIH07CiAKICAgICAgICAgc3RydWN0IENsYXNzUnVsZSB7CiAgICAgICAgICAgICBBdG9tU3Ry
aW5nIGNsYXNzTmFtZTsKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPENsYXNzUnVsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsYXNz
UnVsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBUeXBlIHR5cGU7
CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1hdGNoKGNvbnN0IEVs
ZW1lbnQmKSBjb25zdDsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxFeGNsdXNpb25SdWxlPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNsdXNpb25SdWxl
PiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICB1c2luZyBNYW5pcHVsYXRpb25JdGVt
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8TWFu
aXB1bGF0aW9uSXRlbT4mKT47CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBN
YW5pcHVsYXRpb25GYWlsdXJlVHlwZSB0eXBlOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPiBjb21wbGV0ZU1h
bmlwdWxhdGlvbihjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uSXRlbT4mKTsKQEAgLTE3OCw3ICsx
NzgsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIE5vZGVFbnRyeSA9IHN0ZDo6cGFpcjxSZWY8Tm9k
ZT4sIFJlZjxOb2RlPj47CiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gZ2V0UGF0aChOb2RlKiwgTm9k
ZSopOwogICAgIHZvaWQgdXBkYXRlSW5zZXJ0aW9ucyhWZWN0b3I8Tm9kZUVudHJ5PiYsIGNvbnN0
IFZlY3RvcjxSZWY8Tm9kZT4+JiwgTm9kZSosIEhhc2hTZXQ8UmVmPE5vZGU+PiYsIFZlY3RvcjxO
b2RlSW5zZXJ0aW9uPiYpOwotICAgIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPiBy
ZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxh
dGlvblRva2VuPiYsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dpdGhvdXRWaXN1YWxP
dmVyZmxvd0JlZm9yZVJlcGxhY2VtZW50KTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlv
bkZhaWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3Qg
VmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVy
c1dpdGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJlcGxhY2VtZW50KTsKIAogICAgIFdlYWtQdHI8
RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50
c1dpdGhOZXdSZW5kZXJlcjsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm86OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuSW5mbz4gVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25U
b2tlbkluZm8+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbklu
Zm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlwdWxhdGlvblRva2VuSW5m
byByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGFnTmFtZSkpCkBAIC0y
MzQsNyArMjM0LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uVG9rZW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25Ub2tlbj4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1h
bmlwdWxhdGlvblRva2VuIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5p
ZGVudGlmaWVyKSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29ucwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25JdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBNYW5pcHVsYXRpb25JdGVtIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6RXhjbHVzaW9uUnVsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlPiBUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgRXhjbHVzaW9uUnVsZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQudHlwZSkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6RWxlbWVudFJ1bGU6OmVuY29kZShFbmNvZGVyJiBlbmMK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpFeGNsdXNpb25SdWxlOjpFbGVtZW50UnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lv
blJ1bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9u
UnVsZTo6RWxlbWVudFJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEVsZW1l
bnRSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5sb2NhbE5hbWUp
KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4
Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmVuY29kZShFbmNvZGVyJiBlCiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
RXhjbHVzaW9uUnVsZTo6QXR0cmlidXRlUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6
QXR0cmlidXRlUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
OkF0dHJpYnV0ZVJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEF0dHJpYnV0
ZVJ1bGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQpAQCAt
MzIxLDcgKzMyMSw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lv
blJ1bGU6OkNsYXNzUnVsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kCiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVz
aW9uUnVsZTo6Q2xhc3NSdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9u
UnVsZTo6Q2xhc3NSdWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkNsYXNzUnVsZT4gVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkNsYXNzUnVsZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ2xhc3NSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05hbWUpKQpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQg
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFu
aXB1bGF0aW9uRmFpbHVyZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
bkZhaWx1cmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlwdWxhdGlvbkZh
aWx1cmUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggOTBjYzEwNTkx
YmM0MGIxZDM4YTdhYjYyNzMyNGVlYWEyNTY2NjdiMy4uNzY4ZDM3MzcwNDQ2YTUyNjVjOTNjYzcy
ZThmYzQ0NmIxZTMwMWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiAgICAgfQogfQogCi1i
b29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21t
YW5kIGNvbW1hbmRUeXBlLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wgVHlwaW5n
Q29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFu
ZFR5cGUsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCiB7CiAgICAgbV9jdXJyZW50
VGV4dFRvSW5zZXJ0ID0gdGV4dDsKICAgICBtX2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRp
dEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBv
c2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmgKaW5kZXggNjkwZWUyNjI1ZTBkMTY0MmY4YTYyOTcxMGEwYjhiMDFjYjNhNzcw
Yi4uZDUzZjQxZmI0OWM4Y2MxMDZkN2MxMzU5ZTlmNmY5MzM4ZGVhYWIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRTZWxl
Y3Rpb24oVHlwaW5nQ29tbWFuZCosIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHVwZGF0ZVByZXNl
cnZlc1R5cGluZ1N0eWxlKEVUeXBpbmdDb21tYW5kKTsKLSAgICBib29sIHdpbGxBZGRUeXBpbmdU
b09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0R3JhbnVsYXJpdHksIGNvbnN0IFN0cmlu
ZyYgPSBlbXB0eVN0cmluZygpLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mID0geyB9KTsK
KyAgICBib29sIHdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0
R3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgPSBlbXB0eVN0cmluZygpLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgPSB7IH0pOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kKTsKICAgICB2b2lkIHR5cGluZ0FkZGVkVG9PcGVuQ29t
bWFuZChFVHlwaW5nQ29tbWFuZCk7CiAgICAgYm9vbCBtYWtlRWRpdGFibGVSb290RW1wdHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBlMGYxMzQ4
ODY2MTc1MGYyNGI1MTA3ODIwN2MwMDJiOTVmOGNiMjEzLi43ZTc2OGM1YmIyNTEzMzlhNDdkMDY1
MzUxYTIwMjdjMDIyMjJmZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgYm9vbCBWaXNpYmxlUG9zaXRpb246OmVxdWFs
cyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX2FmZmlu
aXR5ID09IG90aGVyLm1fYWZmaW5pdHkgJiYgbV9kZWVwUG9zaXRpb24uZXF1YWxzKG90aGVyLm1f
ZGVlcFBvc2l0aW9uKTsKIH0KIAotT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5
UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3N0ZDo6b3B0aW9uYWw8Qm91
bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbikKIHsKICAgICByZXR1cm4gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKSk7CiB9CkBAIC03ODUsMTIgKzc4NSwxMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRp
bwogICAgIHJldHVybiBzdHJlYW07CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2lt
cGxlUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdl
JiByYW5nZSkKIHsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdlLnN0YXJ0LCByYW5n
ZS5lbmQpOwogfQogCi1WaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFu
Z2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK1Zpc2libGVQb3NpdGlvblJh
bmdlIG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCmluZGV4IGVlY2JmN2U5YjkyNzZi
NWZhMzIzNGEzNzhlNTQ5MTRmM2Q0YWU0MzMuLmE5MmNhODFiY2VmZTNlNDc2YzRjNTQ2NjBkOTcy
MDg0ZWVlY2ZhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApA
QCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCi1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVf
RVhQT1JUIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJik7CiAKQEAgLTEzNSw4ICsxMzUsOCBAQCBzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgewogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwg
ZW5kLmlzTnVsbCgpOyB9CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7Ci1XRUJDT1JF
X0VYUE9SVCBWaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Um
KTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvblJhbmdlIG1ha2VWaXNpYmxlUG9zaXRp
b25SYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCiBOb2RlKiBjb21t
b25JbmNsdXNpdmVBbmNlc3Rvcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCAzMTc2NGRlNmZh
YWE0ZGViMjk0MDYwNmUxZGQzOGViOWI0OTQ5YTQ1Li41MDI1Y2FmOTExZTFhNTgxZmRhZjNkYmZl
ZTM2YjQxM2I5ODc1ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjp1
bmNhbm9uaWNhbGl6ZWRFbmQoKSBjb25zdAogICAgIHJldHVybiBtX2FuY2hvcklzRmlyc3QgPyBt
X2ZvY3VzIDogbV9hbmNob3I7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2Vs
ZWN0aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxl
U2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZSh1
bmNhbm9uaWNhbGl6ZWRTdGFydCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB1bmNhbm9u
aWNhbGl6ZWRFbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9CkBAIC0xNTksNyAr
MTU5LDcgQEAgUmVmUHRyPERvY3VtZW50PiBWaXNpYmxlU2VsZWN0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGJhc2VEb2N1bWVudDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IFZpc2libGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzTm9uZU9yT3JwaGFuZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmly
c3RSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0LnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6
ZWRSYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0
aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTm9uZU9yT3JwaGFu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggYjE3ZTJiM2FkMWRlZWQ1YmNmZGY3ZjdjMDBiMTc4
ZmI5Y2E0YmE4OS4uYTRhZDhkOWY1YmEzNmU3NzUxMjBjMWIyYzBjODU1NDg4NDlhNzA1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIFBvc2l0aW9uIHVuY2Fub25pY2FsaXplZEVuZCgpIGNvbnN0OwogICAg
IFBvc2l0aW9uIGFuY2hvcigpIGNvbnN0OwogICAgIFBvc2l0aW9uIGZvY3VzKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UoKSBjb25z
dDsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhlc2UgdG8gaW5jbHVkZSB0aGUgd29yZCAiY2Fu
b25pY2FsIiBvciByZW1vdmUuCiAgICAgUG9zaXRpb24gYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQpAQCAtMTAxLDExICsxMDEsMTEgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFJl
bmFtZSB0byBpbmNsdWRlIHRoZSB3b3JkICJjYW5vbmljYWwiIGFuZCByZW1vdmUgdGhlIHdvcmQg
ImZpcnN0IiBvciByZW1vdmUuCiAgICAgLy8gV2UgZG9uJ3QgeWV0IHN1cHBvcnQgbXVsdGktcmFu
Z2Ugc2VsZWN0aW9ucywgc28gd2Ugb25seSBldmVyIGhhdmUgb25lIHJhbmdlIHRvIHJldHVybi4K
LSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmlyc3RSYW5nZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpcnN0
UmFuZ2UoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBNb3N0IGNhbGxlcnMgcHJvYmFibHkgZG9u
J3Qgd2FudCB0aGlzIGZ1bmN0aW9uLCBhbmQgc2hvdWxkIHVzZSByYW5nZSBpbnN0ZWFkLgogICAg
IC8vIFRoaXMgZnVuY3Rpb24gY29udHJhY3RzIHRoZSByYW5nZSBhcm91bmQgdGV4dCBhbmQgbW92
ZXMgdGhlIGNhcmV0IHVwc3RyZWFtIGJlZm9yZSByZXR1cm5pbmcgdGhlIHJhbmdlLgotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB0b05vcm1hbGl6ZWRSYW5nZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHRvTm9y
bWFsaXplZFJhbmdlKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiByb290
RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRl
bnRFZGl0YWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CmluZGV4IGJjOTlmZDU5MWZhZDBmYTUxMTY2Y2E1ZTNiYTRjOWRhMTU4NGZkZGIuLjhhOTNmYmQw
MTI0ODQ1ZWJmZmQ2OWM0YTdjYmI5MzEyZWZmODNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIHZpc3VhbFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbgogICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKICAgICBMYXlvdXRJ
bnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgcHJldmlvdXNseVZpc2l0ZWRSdW47CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8VmlzaWJs
ZVBvc2l0aW9uPiBwcmV2aW91c1Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVBv
c2l0aW9uPiBwcmV2aW91c1Bvc2l0aW9uOwogICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVs
bHB0cjsKIAogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMTczOCw3ICsxNzM4
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFQKICAgICB9CiB9CiAKLU9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICAvLyBUaGlz
IGlzIHBhcnRpY3VsYXJseSBpbmVmZmljaWVudC4gIFdlIGNvdWxkIGVhc2lseSBvYnRhaW4gdGhl
IGFuc3dlciB3aXRoIHRoZSBib3VuZGFyaWVzIGNvbXB1dGVkIGJlbG93LgogICAgIGlmICghd2l0
aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKSkKQEAg
LTE4NDksNyArMTg0OSw3IEBAIHZvaWQgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24sIFVDaGFyMzImIG9uZUFmdGVyCiAgICAgdHdvQmVmb3Jl
ID0gY2hhcmFjdGVyc1syXTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHdvcmRSYW5nZUZy
b21Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24pCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg5Niw3ICsxODk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGNs
b3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBw
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCk7CkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoY29u
c3QgVgogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7CiB9ICAgIAogCi1P
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0
ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBudW1iZXJPZkNoYXJhY3Rl
cnNUb0V4cGFuZCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91
bmRQb3NpdGlvbkJ5Q2hhcmFjdGVycyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBp
bnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQpCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBw
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAppbmRleCAy
NGY1ODhjNWIwN2NhNDcyZjc4NzdmZTE3Mzg4NDMzMmU3ODFlMzM5Li5hNmRlNDIxNTI2ZDQ2ZTI4
MmZmNDA3NTRmNzA5Mzg2YmQ5MzMxMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmgKQEAgLTEwMSwxMyArMTAxLDEzIEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbmRPZkVk
aXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBXRUJD
T1JFX0VYUE9SVCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKIFdFQkNPUkVfRVhQT1JU
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7
Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7CiBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnB0cmRpZmZfdCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlRnJv
bVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogV0VCQ09SRV9FWFBPUlQgVmlzaWJs
ZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHBvc2l0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhcmFjdGVyc0Fyb3VuZFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFVDaGFyMzImIG9uZUFmdGVyLCBVQ2hhcjMy
JiBvbmVCZWZvcmUsIFVDaGFyMzImIHR3b0JlZm9yZSk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCk7Ci1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFj
dGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50
IG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBTZWxlY3Rpb25EaXJlY3Rpb24pOworV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBv
c2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1iZXJPZkNo
YXJhY3RlcnNUb0V4cGFuZCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShj
b25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNl
bGVjdGlvbkRpcmVjdGlvbik7CiBlbnVtIGNsYXNzIFdpdGhpbldvcmRCb3VuZGFyeSA6IGJvb2wg
eyBObywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VmlzaWJsZVBvc2l0aW9uLCBX
aXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBvc2l0aW9uV2l0aG91dENyb3NzaW5n
TGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAKaW5kZXggMGE4MDI4YmVkZjhiOWNhMzVj
ODcxMWYyODBlYmI4MjA1MTM2YzIyZS4uNWFlMzI1NzgyMGI2NjJhMjg3M2NkZjJjODEwYzYzOWQy
NzA2ZTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmls
bEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxs
RWxlbWVudHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEF1dG9maWxsRWxlbWVudHM6OkF1dG9maWxs
RWxlbWVudHMoUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+JiYgdXNlcm5hbWUsIFJlZlB0cjxICiB7
CiB9CiAKLU9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1
dGVBdXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRFbGVtZW50PiBzdGFydCkKK3N0ZDo6b3B0
aW9uYWw8QXV0b2ZpbGxFbGVtZW50cz4gQXV0b2ZpbGxFbGVtZW50czo6Y29tcHV0ZUF1dG9maWxs
RWxlbWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHN0YXJ0KQogewogICAgIGlmICghc3RhcnQt
PmRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuaAppbmRleCA3NzZm
MTY2NzE5YTdlZWUzMDYyNjhlYWY4YTM5ZjUzMTg1NGE4MzAyLi42YTBlOGNlZjYwMDc5ZDMyYTQ5
N2QzZmNiZWE1YzJlYjllNDk4MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0F1dG9maWxsRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0F1dG9maWxsRWxlbWVudHMuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdXRvZmlsbEVsZW1lbnRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8QXV0b2ZpbGxF
bGVtZW50cz4gY29tcHV0ZUF1dG9maWxsRWxlbWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXRvZmlsbEVsZW1lbnRz
PiBjb21wdXRlQXV0b2ZpbGxFbGVtZW50cyhSZWY8SFRNTElucHV0RWxlbWVudD4pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXV0b2ZpbGwoU3RyaW5nLCBTdHJpbmcpOwogCiAgICAgY29uc3Qg
SFRNTElucHV0RWxlbWVudCogdXNlcm5hbWUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJuYW1lLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCmlu
ZGV4IGU3NmE2YThlYzk3MzI0NDQ5ZmE1YmM0ZmEzNmNkZjVhZDliMGMwZDIuLjU0NzNiYjAwYzQ4
NjhiNTQ5MTE0M2EzYWU4ODk3MDliOGVlOGRmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBEZXRlY3Rl
ZEl0ZW0gewogY2xhc3MgRGF0YURldGVjdGlvbiB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVj
dEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW1B
cm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICNlbmRpZgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYsIE9wdGlvblNldDxEYXRhRGV0ZWN0b3JUeXBlPiwgTlNEaWN0aW9uYXJ5ICpj
b250ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rc0luRG9jdW1lbnQoRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NTY2ODU5ZDZiZjM2YWZkMzc1YTMwYWRjMjdk
NDFjMTUwMTY4ZThlLi5kYjZjZGE1YzJjMjAwNTM3ZGM0YzhiNzBhNTRlNzFjZDNkODRkYmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC03
Miw3ICs3Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBQTEFURk9STShN
QUMpCiAKLXN0YXRpYyBPcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW0oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRSYW5nZSkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dFJhbmdlKQog
ewogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdAogCiAgICAgLy8gRmluZCB0aGUgRERS
ZXN1bHRSZWYgdGhhdCBpbnRlcnNlY3RzIHRoZSBoaXRUZXN0UmVzdWx0J3MgVmlzaWJsZVBvc2l0
aW9uLgogICAgIEREUmVzdWx0UmVmIG1haW5SZXN1bHQgPSBudWxscHRyOwotICAgIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtYWluUmVzdWx0UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gbWFpblJlc3VsdFJhbmdlOwogICAgIENGSW5kZXggcmVzdWx0Q291bnQgPSBDRkFycmF5
R2V0Q291bnQocmVzdWx0cy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcmVz
dWx0Q291bnQ7IGkrKykgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGNoZWNrZWRfY2ZfY2FzdDxE
RFJlc3VsdFJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXN1bHRzLmdldCgpLCBpKSk7CkBA
IC0xMTksNyArMTE5LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRl
bShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdAogICAgIH0gfTsKIH0KIAot
T3B0aW9uYWw8RGV0ZWN0ZWRJdGVtPiBEYXRhRGV0ZWN0aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQorc3RkOjpvcHRp
b25hbDxEZXRlY3RlZEl0ZW0+IERhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CiAgICAgaWYgKCFE
YXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTMyLDcgKzEz
Miw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFy
b3VuZEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb247Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGNv
bnRleHRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb250ZXh0UmFuZ2U7
CiAKICAgICBpZiAoIWlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpIHsKICAg
ICAgICAgcG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0
LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggNTA2MmJjYjg4MjU2YmVlZmY5NzY5NTEzYWU2
YmMwMmI4OWJkZTAzMC4uY2QxYWY4NWQ3YjM3MzU5OWJjMDcwODU0Yjg4MThhNThhYzI5YTIzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5t
bQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdl
LCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBs
ZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTI5NCw3ICsyOTQsNyBAQCBPcHRpb25hbDxz
dGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6
OnJhbmdlRm9yU2VsZQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0
ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkK
K3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXRUZXN0UmVzdWx0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IApAQCAtMzIxLDcgKzMyMSw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5T
RGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgYXV0byBz
ZWxlY3Rpb24gPSBmcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBOU1JhbmdlIHNlbGVjdGlvblJh
bmdlOwogICAgIE5TVUludGVnZXIgaGl0SW5kZXg7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IGZ1bGxDaGFyYWN0ZXJSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmdWxs
Q2hhcmFjdGVyUmFuZ2U7CiAgICAgCiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAg
ICAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKQEAg
LTUyMSwxMiArNTIxLDEyIEBAIFdLUmV2ZWFsQ29udHJvbGxlciBEaWN0aW9uYXJ5TG9va3VwOjph
bmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3QgRGljdGlvbmFyCiAKICNlbGlmIFBMQVRG
T1JNKElPU19GQU1JTFkpIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFFTkFCTEUoUkVWRUFM
KQogCi1PcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KQorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6dHVw
bGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VB
dEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpCiB7CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNjk5YzQ2ZWMzMThkNDM1NzMwY2E3NDY1NGZh
MmIyZTRlMTAwZjM1Mi4uYTRlNTMyMzE5OTMzZjBhODYxMmQyYzIyNTE4Mjk4ZDU5ZDRlOTZiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KQEAgLTQyNiw3ICs0MjYsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7
CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWFya3Vw
QW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBl
QXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBp
ZiAoIWFyY2hpdmUpCkBAIC03MjYsNyArNzI2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5OwogICAgIGlmICghaXNEaXJlY3Rvcnkp
CiAgICAgICAgIGZpbGVTaXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgp
LnZhbHVlX29yKDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5
TG9va3VwLmgKaW5kZXggNzlhYzg1YTcxYTYyZGQyNmY2ZDVmNWZhNGQ4ZDhhNzFhMzIzMThmNS4u
MTEwYjhmODI2Zjg0MTc1ZGQ5MmFhNDBlODdlYzJhM2FmYzdkNDcxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaApAQCAtNTUsOCArNTUsOCBAQCBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIGNsYXNzIERpY3Rpb25hcnlMb29rdXAgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdl
LCBOU0RpY3Rpb25hcnkgKj4+IHJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1w
bGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRU
ZXN0UmVzdWx0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0
SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dHVwbGU8TlNTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5ICo+IHN0cmluZ0ZvclBE
RlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKik7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUv
dW5pZnkgZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlIGhlcmUgdG9vLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXgg
MTYyM2U5OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBhZDVlMTUyOC4uYTI2Mjk0NjM5MzUzZTcz
Mjk1NDM3MDY4ZDVlYTE5MmZjYjBmZGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC03Miw3ICs3Miw3IEBAIHN0
YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2UgJiYgY29udGFp
bnM8Q29tcG9zZWRUcmVlPigqc2VsZWN0ZWRSYW5nZSwgbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRp
b24pKTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5
ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24pCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2Us
IE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGF1dG8gc2VsZWN0ZWRSYW5n
ZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VsZWN0ZWRSYW5n
ZSkKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNE
aWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKICAgICByZXR1cm4g
eyB7ICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zIH0gfTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBs
ZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0
SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQorc3RkOjpv
cHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25h
cnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRl
c3RSZXN1bHQpCiB7CiAgICAgYXV0byogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IGQ2NTdkMzU3ZTFmZThjYjU1NGEwMzA4MGRjMTQ2NWNhNjJi
ZjQwODYuLjhhZTQ4OTE1NjNlYTc3ZTYwZDEzZTU0OTFkYmQ1NTA3MDlhZjE5MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCkKICAgICByZXR1cm4gcGFn
ZTsKIH0KIAotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCwgTVNP
TGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9j
dW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIpCitTdHJpbmcgc2FuaXRpemVNYXJr
dXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIHN0
ZDo6b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdt
ZW50U2FuaXRpemVyKQogewogICAgIGF1dG8gcGFnZSA9IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5n
V2ViQ29udGVudCgpOwogICAgIERvY3VtZW50KiBzdGFnaW5nRG9jdW1lbnQgPSBwYWdlLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggMjhlZGI2MTQ4
NjMwNDcxMDQ3NDMxMjUxZTc1OGI4NDBmZGIyZjQzNy4uYmI3NTk2NDM4ZWUwMjg2YThjMTg4Njg1
OTg4ZTlmODVjMjZkZDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01NSw3ICs1NSw3
IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdt
ZW50PiYmLCBXVEY6OkZ1bmN0aW9uPGJvb2woCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVh
dGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKIGVudW0gY2xhc3MgTVNPTGlzdFF1aXJr
cyA6IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxlZCB9OwotU3RyaW5nIHNhbml0aXplTWFy
a3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09MaXN0UXVpcmtzOjpEaXNhYmxl
ZCwgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdt
ZW50U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25z
dCBTdHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIHN0ZDo6
b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFn
bWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIERvY3VtZW50JiwgTVNPTGlz
dFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCk7CiAKIFdFQkNPUkVfRVhQT1JU
IFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnN0IFNpbXBs
ZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGQ1ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2
Njk5MWY4NWI3YTFjM2EuLjdhOWRhYWUwNmEwNDdiYTU1ZTExMTMyMzU2MzkxNWUyZDI2NzA0Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShXVEY6OkZ1bmN0aW9uPFdU
Rjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50JgogICAgIH0pOwogfQogCi12b2lkIEFz
eW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxU
aW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0
U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBGSVhNRTogRXhwbGljaXQgcmV0dXJuIHR5cGUg
aGVyZSBhbmQgaW4gYWxsIHRoZSBvdGhlciBjYXNlcyBsaWtlIHRoaXMgYmVsb3cgaXMgYSB3b3Jr
YXJvdW5kIGZvciBhIGRlZmljaWVuY3kKICAgICAvLyBpbiB0aGUgV2luZG93cyBjb21waWxlciBh
dCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuIENvdWxkIHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJl
c29sdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggODRh
MjQxYTI2M2JjMzgxMmU0YmVmNzc5OGJkZmQyNGNmMmYyMDcxYi4uOTlhOTFiMGM5MTVmNTg1Yjhh
MWNiNmJlY2RhNGI2ZGJlMTc5ZTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Bc3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBBc3luY0Zp
bGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYpOwogICAgIH5Bc3luY0ZpbGVTdHJlYW0oKTsKIAot
ICAgIHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcm
IHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CiAgICAgdm9pZCBvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZz
ZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHJlYWQo
Y2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDJm
M2NkY2VjY2IzMmFhMjkyMzM4ZDMyN2Y3ZjQ1NDU0MTRiNGZkM2MuLjQyZjIyYjQ2ZmMwNGE0NDZj
OGM3ZTNhYzhkOTI0MDg0MmJkNDBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTM5
LDcgKzEzOSw3IEBAIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVy
bCgpKSB9ICwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVj
dG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCitCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25n
PiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQog
ICAgICwgbV9zaXplKHNpemUpCkBAIC0yOTgsNyArMjk4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJl
YWRhYmxlU3RyZWFtPj4gQmxvYjo6c3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWMKICAgICAgICAgVW5pcXVlUmVmPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwogICAg
ICAgICBzaXplX3QgbV9ieXRlc1JlYWQgeyAwIH07CiAgICAgICAgIGJvb2wgbV9pc1N0YXJ0ZWQg
eyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxFeGNlcHRpb24+IG1fZXhjZXB0aW9uOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9leGNlcHRpb247CiAgICAgfTsKIAogICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2xvYmFsT2JqZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDE1ZDdjMjgxNjc5MzAwZTU3M2ZkNDc3NWE5NzUw
ODEzM2UzYjBkMmQuLmU0MjUxYjJlNmNhNGVhZDA2MGM1YmY2MzVlZDU0ZDE3YzkzNDczZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgIEJs
b2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVUkwm
JiwgU3RyaW5nJiYgdHlwZSk7CiAKICAgICBlbnVtIERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Ig
eyBkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIH07Ci0gICAgQmxvYihEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRy
dWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29u
c3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CiAKICAgICAvLyBGb3Igc2xpY2luZy4KICAgICBC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAgLTE1
OSw3ICsxNTksNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fdHlwZTsKIAotICAgIG11dGFi
bGUgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBtX3NpemU7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9zaXplOwogICAgIEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JMb2FkZXIuaAppbmRleCBhNDI4N2NkZDkzZDc5Y2VlZWMxOGEzMmQ3MTc3N2FjMjEy
ZjYzY2FiLi4yMDYzYzQ5YTgzOGNkNGNmYWFjMGVkNTFjYTEwZDk1YzhmZmQ3MGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciAmJiBtX2NvbXBsZXRpb25I
YW5kbGVyOyB9CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZGVyID8gbV9sb2FkZXItPnN0cmluZ1Jlc3VsdCgpIDogU3RyaW5nKCk7IH0KICAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRlciA/IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpIDogbnVsbHB0cjsgfQotICAgIE9w
dGlvbmFsPEV4Y2VwdGlvbkNvZGU+IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVy
ID8gbV9sb2FkZXItPmVycm9yQ29kZSgpIDogc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/
IG1fbG9hZGVyLT5lcnJvckNvZGUoKSA6IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApp
bmRleCA0NzNjMDMxOTkwZTE3Y2I3Y2VlYjViM2MzYWVhYjdiNTEyODMzODZiLi44YmY3NGNlMzMx
ZmNhOGNjOGI0NmE1MzM0YjI2MDUwZTNkYmEwM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHAKIHsKIH0KIAotRmlsZTo6
RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RN
b2RpZmllZCkKK0ZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKICAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9u
Q29udHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgo
cGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCA5Zjc4MDBh
ZTU0MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVmLi40ODAzOGM2MWY4NDQ0OTkyN2E1MmYz
ZjMxM2MwZDY4ZjRjYTk2NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURURfRVhQT1JUKEZpbGUsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
UHJvcGVydHlCYWcgOiBCbG9iUHJvcGVydHlCYWcgewotICAgICAgICBPcHRpb25hbDxpbnQ2NF90
PiBsYXN0TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlm
aWVkOwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwgbmFt
ZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9N
IHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBh
dGguCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRf
dD4mIGxhc3RNb2RpZmllZCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRl
c2VyaWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBzdGQ6
Om51bGxvcHQpCiAgICAgewogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUo
ZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgcGF0aCwgc3JjVVJMLCB0eXBlLCBu
YW1lLCBsYXN0TW9kaWZpZWQpKTsKICAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CkBA
IC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbGF0aXZlUGF0aChjb25zdCBT
dHJpbmcmIHJlbGF0aXZlUGF0aCkgeyBtX3JlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aDsgfQog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIGludDY0X3QgbGFzdE1vZGlmaWVkKCkgY29uc3Q7IC8vIE51bWJlciBvZiBt
aWxsaXNlY29uZHMgc2luY2UgRXBvY2guCi0gICAgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxh
c3RNb2RpZmllZE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlT3Zl
cnJpZGU7IH0gLy8gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNl
Y29uZHMgc2luY2UgRXBvY2guCiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAg
RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRmlsZSYsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYg
c3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0
aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CiAKICAgICBzdGF0
aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBl
ZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCkBAIC0x
MTMsOCArMTEzLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9yZWxhdGl2ZVBhdGg7CiAgICAg
U3RyaW5nIG1fbmFtZTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1fbGFzdE1vZGlmaWVkRGF0
ZU92ZXJyaWRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9pc0RpcmVjdG9yeTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzRGlyZWN0b3J5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXgg
MDliMmEwMzhiYTEyZGU5YWNhZTk0ZjY3Y2ExN2IyNzVlMTRhZWM3YS4uZmJlZTA3MmE1YjkxZmIz
ZmMzNTRjZjc5ZmZmMmMzMGNhNTllNzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpmaXJlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICBkaXNwYXRjaEV2ZW50KFByb2dyZXNzRXZlbnQ6OmNy
ZWF0ZSh0eXBlLCB0cnVlLCBtX2xvYWRlciA/IG1fbG9hZGVyLT5ieXRlc0xvYWRlZCgpIDogMCwg
bV9sb2FkZXIgPyBtX2xvYWRlci0+dG90YWxCeXRlcygpIDogMCkpOwogfQogCi1PcHRpb25hbDxW
YXJpYW50PFN0cmluZywgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+Pj4gRmlsZVJlYWRlcjo6cmVz
dWx0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPj4+IEZpbGVSZWFkZXI6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xv
YWRlciB8fCBtX2Vycm9yIHx8IG1fc3RhdGUgIT0gRE9ORSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggMjhmMzNmNTEyMjkx
OWNiZWVkMGEyZDc2ZDJhN2Y4YmFhZjU2Nzk2NC4uYTJhZGY5YzgzNTFiZmEwNDE5ODAyYTNkYWQ3
ZjcwZTVmMGMzMGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KICAgICBET01FeGNlcHRpb24qIGVycm9yKCkgeyByZXR1cm4gbV9lcnJv
ci5nZXQoKTsgfQogICAgIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQotICAgIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiByZXN1bHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiByZXN1bHQoKSBj
b25zdDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVk
OjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXgg
MWFmNjA1OTYwYjMwNDhkY2Q4YWExZTEzYWIxOTBkOWIyNTE1OTkxOS4uOTZmOWY3OWJlMTc5ZTdi
MjMxMjZkZTI1ZDg3ZTFlMzFmYjQ3Njg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsg
fQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7
IH0KLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yQ29kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gZXJyb3JD
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXREYXRhVHlwZShjb25zdCBTdHJpbmcmIGRh
dGFUeXBlKSB7IG1fZGF0YVR5cGUgPSBkYXRhVHlwZTsgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlc0xvYWRlZDsKICAgICB1bnNpZ25lZCBtX3RvdGFs
Qnl0ZXM7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2Vycm9yQ29kZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXJyb3JDb2RlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIuaAppbmRleCA5YzcyNjBjNDIyNjBhNGI1Y2QxYzcxZWFhOWEyYmFlYTgw
OGZjNmZiLi5jM2E4ZWJlZDk3YmM3NTI3YTIzNWRkOGY3YWU5MzQ2MWQ1ZGRjMGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApA
QCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHByb2Nlc3NJZGVudGlmaWVy
ICYmIGl0ZW1JZGVudGlmaWVyOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFN0cmluZyBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksICctJywgaXRlbUlkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KIApAQCAtNzgsMTQgKzc4LDE0
IEBAIHZvaWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyPiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4g
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9iamVjdElkZW50
aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPj4gaXRlbUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRp
b25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0ZW1JZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCFpdGVtSWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNkODA5MzU1OTg1NGJlMTQzODVkMmE0
ZjJjMTljMjM4MjgyOGZkZGUuLmYxMDhiNTJhMGJmMWQ5YjlkMmM5ZGM2Zjk0OGRmZWE0YTY5MWM3
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aApAQCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8RGF0ZVRpbWVG
b3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1bHRzOwogICAgIH07CiAKLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPERhdGVDb21wb25lbnRz
PiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVu
dHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVU
aW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0
ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9DYW52YXNCYXNlLmNwcAppbmRleCAwN2ViNjUxNDlmYzk5NjcwNTdlODJhYzY0OTVkZDEyMGMy
ZDVlMjU4Li41YmJkOTdkMDBkNjg3YjZiOTI4M2E1YmRhY2E1YmY4YjJkOTFiM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIENhbnZhc0Jh
c2U6OnJlbW92ZU9ic2VydmVyKENhbnZhc09ic2VydmVyJiBvYnNlcnZlcikKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDU1NDYW52YXNDbGllbnROb2RlcygqdGhp
cyk7CiB9CiAKLXZvaWQgQ2FudmFzQmFzZTo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChj
b25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0KQordm9pZCBDYW52YXNCYXNlOjpub3RpZnlP
YnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVj
dCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9i
c2VydmVyLT5jYW52YXNDaGFuZ2VkKCp0aGlzLCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKaW5kZXggOTJjZmI3NjJmZGIzZTJiM2ZmNTI2MWExZjdmOTgxOGNjY2I0ZjM5YS4uODRiYmRm
ZGZmNzYyNWU3NzRkM2YyMGQ3NmU4MGVmODBjMjJjM2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2Fu
dmFzT2JzZXJ2ZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0
PiYgY2hhbmdlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52
YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2VkUmVjdCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjYW52YXNSZXNpemVkKENhbnZhc0Jhc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNhbnZhc0Rlc3Ryb3llZChDYW52YXNCYXNlJikgPSAwOwogfTsKQEAgLTg5
LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihDYW52YXNPYnNlcnZl
ciYpOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKLSAgICB2b2lk
IG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYp
OworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4mKTsKICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc1Jlc2l6ZWQo
KTsKICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3llZCgpOyAvLyBNdXN0IGJl
IGNhbGxlZCBpbiBkZXN0cnVjdGlvbiBiZWZvcmUgY2xlYXJpbmcgbV9jb250ZXh0LgogCkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZHJhd2lu
Z0NvbnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdE
cmF3aW5nQ29udGV4dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3Qg
T3B0aW9uYWw8RmxvYXRSZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25z
dCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIEltYWdlKiBj
b3BpZWRJbWFnZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb3BpZWRJbWFn
ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXgg
MzJjM2I0NGZhYzA1NTE4MGJiNDU0MDBmNjBiNjc5OTczMDE1OTllZi4uZWE4MWJiMTlkMTQ0YTUw
NjBhMDczODA4ZDhkOWZiNjhmZjg2MDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9jb21tb24tbWljcm9zeW50YXhlcy5odG1sI3J1bGVzLWZvci1wYXJzaW5nLXNp
bXBsZS1jb2xvdXItdmFsdWVzCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNl
U2ltcGxlQ29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcp
CiB7CiAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaAppbmRl
eCBjMjgzZjgxZWQxMjhkYmRhMmMwNzBiZTAwYzc5YTgwY2FlNDQ4YjY3Li4wYzE4ZDRjOWFjNjMw
ZjIyMzI4NzExYmE3YTZkMWI2NTYwNzlhMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50Q2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludENhbnZhcy5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBl
eGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZERyYXco
Y29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRHJhdyhj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbCB7IH0KIAogICAgIEFmZmluZVRy
YW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9kZXN0aW5hdGlv
bkdyYXBoaWNzQ29udGV4dCAmJiBtX2NvcGllZEJ1ZmZlcik7IHJldHVybiBtX2NvcGllZEJ1ZmZl
ci0+YmFzZVRyYW5zZm9ybSgpOyB9CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDY4MDJhMTVmZTY4ZjBlYThl
NTk4ODZkZTFkNjEwYzg4OTM5ZDc4NmQuLmU3YzRkYTQ3OWNkZjcyZjhmY2ViZTFmMjdjZGRjMmQ0
MGUyYTIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgRE9NRm9ybURhdGE6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfSk7
CiB9CiAKLWF1dG8gRE9NRm9ybURhdGE6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlv
bmFsPEZvcm1EYXRhRW50cnlWYWx1ZT4KK2F1dG8gRE9NRm9ybURhdGE6OmdldChjb25zdCBTdHJp
bmcmIG5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8Rm9ybURhdGFFbnRyeVZhbHVlPgogewogICAgIGZv
ciAoYXV0byYgaXRlbSA6IG1faXRlbXMpIHsKICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PSBuYW1l
KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRE9NRm9ybURhdGE6OnNldChjb25zdCBTdHJpbmcm
IG5hbWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAKIHZvaWQgRE9NRm9y
bURhdGE6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIEl0ZW0mJiBpdGVtKQogewotICAgIE9wdGlv
bmFsPHNpemVfdD4gaW5pdGlhbE1hdGNoTG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluaXRpYWxNYXRjaExvY2F0aW9uOwogCiAgICAgLy8gRmluZCBsb2NhdGlvbiBvZiB0aGUg
Zmlyc3QgaXRlbSB3aXRoIGEgbWF0Y2hpbmcgbmFtZS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCBET01Gb3JtRGF0
YTo6SXRlcmF0b3I6Okl0ZXJhdG9yKERPTUZvcm1EYXRhJiB0YXJnZXQpCiB7CiB9CiAKLU9wdGlv
bmFsPEtleVZhbHVlUGFpcjxTdHJpbmcsIERPTUZvcm1EYXRhOjpGb3JtRGF0YUVudHJ5VmFsdWU+
PiBET01Gb3JtRGF0YTo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBET01Gb3JtRGF0YTo6Rm9ybURhdGFFbnRyeVZhbHVlPj4gRE9NRm9ybURhdGE6
Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBpdGVtcyA9IG1fdGFyZ2V0LT5pdGVtcygp
OwogICAgIGlmIChtX2luZGV4ID49IGl0ZW1zLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURh
dGEuaAppbmRleCBjODA0ODhkNDQ4ZDI4OTIxYTJlMGQ3ZWMxZjYzNDZkZjFkMzQxMzRjLi44MDYy
NDRiZDUwZjI3OTdhZjY4MzI0YzFjZDc5NzM4ZTBhNzNlOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01G
b3JtRGF0YS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgbmFtZSwgQmxvYiYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUgPSB7IH0pOwog
ICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgT3B0aW9uYWw8Rm9ybURh
dGFFbnRyeVZhbHVlPiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZvcm1EYXRhRW50cnlWYWx1ZT4gZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgVmVjdG9y
PEZvcm1EYXRhRW50cnlWYWx1ZT4gZ2V0QWxsKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgYm9v
bCBoYXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3Io
RE9NRm9ybURhdGEmKTsKLSAgICAgICAgT3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgRm9y
bURhdGFFbnRyeVZhbHVlPj4gbmV4dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleVZhbHVl
UGFpcjxTdHJpbmcsIEZvcm1EYXRhRW50cnlWYWx1ZT4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZjxET01Gb3JtRGF0YT4gbV90YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5jcHAKaW5kZXggOWE0MTBjNzBlNGMwN2UzYjQzNWE3MGY4ZjFjODBlNjM2MWVmY2Jm
Yi4uYWJjYTZkOWJjMmUyZWY2YjZlY2Y1NGFhNmEzNDlkY2JhY2IzOWNhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuKQogICAgIHJl
dHVybiByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEpOwogfQogCi1FeGNlcHRpb25P
cjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgT3B0
aW9uYWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2ds
ZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgc3RkOjpvcHRpb25hbDxib29sPiBmb3JjZSkKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVG9rZW4odG9rZW4pOwogICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBiMzI0MDJk
MDM3ZGE5MGQ4ZmVhMmZhYWQ0NmQ5N2FmNzNkNjI4MDg2Li40NmI4NTk4OTlmMTI0OTUyMzUxM2Nl
NzRmZWQ0OTk5ZjM0YjBkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxib29sPiB0b2dnbGUoY29uc3QgQXRvbVN0
cmluZyYsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjxib29sPiB0b2dnbGUoY29uc3QgQXRvbVN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Zm9yY2UpOwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYg
dG9rZW4sIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Rva2VuKTsKICAgICBFeGNlcHRpb25Pcjxib29s
PiBzdXBwb3J0cyhTdHJpbmdWaWV3IHRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCmluZGV4IDRkNmQwMmNmZGYzZjEy
NDBkZDNjODY3Y2I5YzQ5ZmE1ZGNlZjliZTkuLmJmZmQ3ZGJmZjdiNThmYmE1MTVlY2QxOGQ3YTcz
NmRmOWJmZDEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdn
ZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3Vn
Z2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IERhdGFMaXN0U3Vn
Z2VzdGlvbiB7CiAgICAgU3RyaW5nIGxhYmVsOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxp
c3RTdWdnZXN0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIERhdGFMaXN0U3VnZ2VzdGlvbjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IERhdGFMaXN0U3VnZ2VzdGlvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxp
c3RTdWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxT
dHJpbmc+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNv
ZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVsOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Niw3ICs3Niw3IEBAIHN0cnVjdCBEYXRhTGlz
dFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgSW50UmVjdCBlbGVtZW50UmVjdDsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODgs
MTggKzg4LDE4IEBAIHZvaWQgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb246OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGF0YUxp
c3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0
aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2YXRp
b25UeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZl
Y3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0aW9uczsKICAgICBkZWNvZGVyID4+
IHN1Z2dlc3Rpb25zOwogICAgIGlmICghc3VnZ2VzdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBlbGVtZW50UmVjdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEludFJlY3Q+IGVsZW1lbnRSZWN0OwogICAgIGRlY29kZXIgPj4gZWxlbWVudFJl
Y3Q7CiAgICAgaWYgKCFlbGVtZW50UmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCmluZGV4IDkxZWJmMGVjYTA5OTNiODVm
NDM3OWUwOWY2YjA2ZTgwYjZmMWIwOTQuLjE5MWU5OTE3NWQyYjQ4ZTRkOGNkYTA3MjIwMGU4ZWIz
OWEyOGI0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtNzQsMTIg
Kzc0LDEyIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3Rl
cEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0
ZXBCYXNlLCBSYW5nZUxpbWl0YXRpb25zOjpWYWxpZCwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwg
ZGF0ZVN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRl
SW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNl
KSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6cGFy
c2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZShzb3VyY2UpOwogfQogCi1P
cHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBv
bmVudHM+IERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3Vi
bGUgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGUodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuaAppbmRleCBiMzE4MjIxOWRmMmU0NzAwYjYzODM5ZjY2NDRlZTA0MzExNDVmODdkLi40
MTZmMGU2NjE4ZGU1MDAxY2FjZTZkNDRkMDRjZTFiNDMwOWI5OTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuaApAQCAtNDUsOCArNDUsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEF0
b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERhdGVDb21w
b25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcm
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlz
ZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpv
cHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
Z1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRz
PiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0
aW9uUmVzdWx0cz4pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmb3JtYXREYXRlVGltZUZpZWxk
c1N0YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgKaW5kZXggYzVhMzEwNDZlNGZmZjRjMGFl
YWEwNjFmZDIzYmQxYjc5YjZjNTQwMi4uYWU1NmFmN2UxZTU5NmFmZDY4N2I5MzMwNjc1NDhhOWZm
MWNkMDAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgKQEAg
LTM4LDIxICszOCwyMSBAQCBzdHJ1Y3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSB7CiAgICAgICAgIFBN
LAogICAgIH07CiAKLSAgICBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0
CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIWhvdXIgfHwgIW1lcmlkaWVtKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuICgqaG91ciAlIDEyKSArICgqbWVyaWRpZW0gPT0g
RGF0ZVRpbWVGaWVsZHNTdGF0ZTo6TWVyaWRpZW06OlBNID8gMTIgOiAwKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDx1bnNpZ25lZD4geWVhcjsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbW9udGg7
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGRheU9mTW9udGg7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGhvdXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1pbnV0ZTsKLSAgICBPcHRpb25hbDx1
bnNpZ25lZD4gc2Vjb25kOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtaWxsaXNlY29uZDsKLSAg
ICBPcHRpb25hbDxNZXJpZGllbT4gbWVyaWRpZW07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4geWVhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtb250aDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBkYXlPZk1vbnRoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGhvdXI7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbWludXRlOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtaWxs
aXNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lcmlkaWVtPiBtZXJpZGllbTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwCmluZGV4IGQzOTFjOTcwMzFlODNhYThiMjVjMGZmNTBhZDg5MzRjZWJi
ZTY3NWYuLjcwYWIwMjcyNjI4YjJiYmMyMDdkMDJmOTIyMWYzMmZjODA0MGY3ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtODMsMTIg
KzgzLDEyIEBAIFN0ZXBSYW5nZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluCiAgICAgcmV0dXJuIFN0ZXBSYW5nZShz
dGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAs
IGRhdGVUaW1lTG9jYWxTdGVwRGVzY3JpcHRpb24pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0
IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9t
UGFyc2luZ0RhdGVUaW1lTG9jYWwoc291cmNlKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50
cyhkb3VibGUgdmFsdWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRl
VGltZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91Ymxl
IHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKaW5kZXggMDJkNmNhMDFiMzczMDlhMTEw
ZTAwMTY3NTZiODViZDQwMDYzOTZiZC4uZmExNTM5ZDA3ZTU3OGYxMDQ1NDc2MDlmNjNiMGZmMTdj
Mjg0OTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBl
LmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdmFsdWVBc0RhdGUoKSBj
b25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUp
IGNvbnN0IGZpbmFsOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0Rh
dGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25h
bDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSkg
Y29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0Rh
dGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91
YmxlKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0
ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBm
b3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUmKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggNDRmNzg0
YjdhMTI1MGJlZDc1N2I5ODgzNDRlNTNiNTk4NDE0NDNjZi4uNDkxZDA1N2I3NTBlNzM3YTFhZGY2
NDU2MTRmZTg2NDg0OTUwYzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNlcmlhbGl6ZUZvcm1Db250
cm9sU3RhdGVUbyhjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBmb3JtQ29udHIKICAgICAgICAgc3Rh
dGVWZWN0b3IuYXBwZW5kKHZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHZhbHVlKTsK
IH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxGb3JtQ29udHJvbFN0YXRlPiBkZXNlcmlhbGl6
ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXpl
X3QmIGluZGV4KQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPEZvcm1Db250cm9sU3RhdGU+
IGRlc2VyaWFsaXplRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVW
ZWN0b3IsIHNpemVfdCYgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQWxsQ29sbGVjdGlvbi5jcHAKaW5kZXggY2M2NWVhYzhiYjI1YmE5MTFkOTM3NTJjYjkzMWQx
NzU3YzY4ZmFhZS4uN2YyNmU5ZTcyMDc5ZmZlYmJjM2Q0ZWNjYzU2MWFmNTllMDdjYzFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHQKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNkb20taHRtbGFsbGNvbGxlY3Rp
b24taXRlbQotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8
RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhj
b25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVj
dGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJ
bmRleCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MCw3ICs2MCw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246
Om5hCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJh
c3RydWN0dXJlLmh0bWwjY29uY2VwdC1nZXQtYWxsLW5hbWVkCi1PcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9u
OjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4g
SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSkgY29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKaW5kZXggZjZlZDMzN2M1
YjdhYjEyNWVkYzQ3ODg5YWUzOWYxM2NjNTM0ZjYzNC4uNmU4NjAxZjVlOWFjMDAwZTk3YjM5ZTJm
MzA4MGE3YWFlNWM1OTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxs
Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
aApAQCAtMzMsOCArMzMsOCBAQCBjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAotICAg
IE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+
Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRl
eCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBS
ZWZQdHI8RWxlbWVudD4+PiBuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJpbmcmKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVm
UHRyPEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5n
JiBuYW1lT3JJbmRleCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbU9ySXRlbXMoY29uc3Qg
QXRvbVN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxBbGxDb2xsZWN0aW9uKERv
Y3VtZW50JiwgQ29sbGVjdGlvblR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAppbmRleCBhM2Q3NjU3ZDY0NDdkZDEzMjViNjg0MmM0NGIyOWJhYzRkMmVmNGE5
Li5iMTBmMjQyZGZkMDdjYWNkM2VkYzExMGM5YmJlNWZkNWZkMWQyM2VjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wg
SFRNTEFuY2hvckVsZW1lbnQ6OmlzU3lzdGVtUHJldmlld0xpbmsoKQogfQogI2VuZGlmCiAKLU9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpIGNvbnN0CiB7CiAgICAgdXNpbmcgU291cmNlSUQgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlSUQ7CiAgICAgdXNpbmcgU291cmNlU2l0ZSA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTaXRlOwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSFRNTEFuY2hvckVs
ZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKICAgICBhdXRvIHJlZmVycmVyUG9saWN5
ID0gaGFzUmVsKFJlbGF0aW9uOjpOb1JlZmVycmVyKSA/IFJlZmVycmVyUG9saWN5OjpOb1JlZmVy
cmVyIDogdGhpcy0+cmVmZXJyZXJQb2xpY3koKTsKIAogICAgIGF1dG8gZWZmZWN0aXZlVGFyZ2V0
ID0gdGhpcy0+ZWZmZWN0aXZlVGFyZ2V0KCk7Ci0gICAgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQ
b2xpY3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVP
cGVuZXJQb2xpY3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5OwogICAgIGlmIChoYXNSZWwoUmVsYXRp
b246Ok9wZW5lcikpCiAgICAgICAgIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93OwogICAgIGVsc2UgaWYgKGhhc1JlbChSZWxhdGlvbjo6Tm9PcGVuZXIp
IHx8IChkb2N1bWVudCgpLnNldHRpbmdzKCkuYmxhbmtBbmNob3JUYXJnZXRJbXBsaWVzTm9PcGVu
ZXJFbmFibGVkKCkgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlZmZlY3RpdmVUYXJnZXQsICJf
YmxhbmsiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggOTU5
NzQ2OTdiMzQ5Y2U1ZjY5NzQ3NzI1NWJjMGJjMTRkNTg2OWJkYS4uNGIwODQwYTQ0OTAzZjUzNzli
NGNlNjNkMjExNWQ1MGQ2ZTM3ZGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRQaW5n
cyhjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIAotICAgIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gcGFyc2VQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBoYW5kbGVDbGljayhFdmVudCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggOTky
ZjVhMmY1MjJlOTVmNTYwYjY2YTViY2FiMWM4NzI5ZDQ5ZTI5YS4uNDk2YjQxMTRlNzliNTA5NDZj
ZWNhMDY1NmQwYWQ4Y2YyMDY5MzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIFN0cmluZyBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRhY2htZW50cGF0aEF0dHIpOwogfQogCi12
b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlQXR0cmlidXRlcyhPcHRpb25hbDx1aW50
NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBuZXdGaWxlbmFtZSkKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpCiB7CiAgICAg
aWYgKCFuZXdGaWxlbmFtZS5pc051bGwoKSkKICAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0ciwgbmV3RmlsZW5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggMjA1NzU0ZDU0YWE5
MjEzMjU5NjRiZWYwMDBjOTZhMzhjNDZiZWM3Ni4uNTczZWMyZWFlMWNkYzA2MDlmMjYxYzM4NDAw
YmIwMmM0ODBmN2JkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoT3B0aW9uYWw8dWludDY0X3Q+JiYg
bmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
bmV3RmlsZW5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGI4MzJiNjAyN2Q1NTA0
YmZkMDRkNzk0ZTlkOTQyMzk0MDliOTE0MTMuLjlmNTU2MDgwMmJhYzMyYmI0OTllYzk3YzliMGFl
MzJlMTFjNjIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxN
ZW1vcnlGb3JUZXN0aW5nKHNpemVfdCBzaXplKQogICAgIG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9y
VGVzdGluZyA9IHNpemU7CiB9CiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgaWYgKG1fY29udGV4dC0+aXNQbGFjZWhvbGRlcigpKQpAQCAtMjQ1LDI4ICsyNDUsMjggQEAg
RXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50
OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBpZiAobV9jb250ZXh0LT5pczJkKCkp
IHsKICAgICAgICAgICAgIGlmICghaXMyZFR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RD4oKm1fY29udGV4dCkgfSB9OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4
dCkgfSB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNCaXRtYXBSZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnRleHRJ
ZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
c3RkOjpudWxsb3B0IH07Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxJ
bWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxJbWFnZUJp
dG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKFdFQkdMKQogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1dlYkdMKCkpIHsKICAgICAg
ICAgICAgIGlmICghaXNXZWJHTFR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVs
bG9wdCB9OwogICAgICAgICAgICAgYXV0byB2ZXJzaW9uID0gdG9XZWJHTFZlcnNpb24oY29udGV4
dElkKTsKICAgICAgICAgICAgIGlmICgodmVyc2lvbiA9PSBXZWJHTFZlcnNpb246OldlYkdMMSkg
IT0gbV9jb250ZXh0LT5pc1dlYkdMMSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAg
ICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8
V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkgfSB9OwogI2lmIEVOQUJMRShX
RUJHTDIpCiAgICAgICAgICAgICBBU1NFUlQoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1f
Y29udGV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+
IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICNl
bmRpZgogICAgICAgICB9CiAjZW5kaWYKQEAgLTI3NCwxMyArMjc0LDEzIEBAIEV4Y2VwdGlvbk9y
PE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4
dChKU0M6OkpTR2xvCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgaWYgKG1fY29udGV4dC0+
aXNXZWJHUFUoKSkgewogICAgICAgICAgICAgaWYgKCFpc1dlYkdQVVR5cGUoY29udGV4dElkKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6
Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7ICZkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0
PigqbV9jb250ZXh0KSB9IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+
IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAg
fQogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9Owog
ICAgIH0KIAogICAgIGlmIChpczJkVHlwZShjb250ZXh0SWQpKSB7CkBAIC0yOTAsOCArMjkwLDgg
QEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVt
ZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVh
dGVDb250ZXh0MmQoY29udGV4dElkLCBXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51
bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OwogICAgIH0K
IAogICAgIGlmIChpc0JpdG1hcFJlbmRlcmVyVHlwZShjb250ZXh0SWQpKSB7CkBAIC0zMDEsOCAr
MzAxLDggQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRleHQg
PSBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29udGV4dElkLCBXVEZNb3ZlKHNldHRpbmdz
KSk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
PiB7IGNvbnRleHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
PiB7IGNvbnRleHQgfSB9OwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTMxMywxMyAr
MzEzLDEzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250ZXh0
ID0gY3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJzaW9uKGNvbnRleHRJZCksIFdURk1vdmUo
YXR0cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07
CiAKICAgICAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQotICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqY29u
dGV4dCkgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJl
bmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAg
ICAgQVNTRVJUKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSk7Ci0gICAgICAg
IHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTDJSZW5kZXJp
bmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkg
fSB9OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJl
ZlB0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdD
b250ZXh0PigqY29udGV4dCkgfSB9OwogI2VuZGlmCiAgICAgfQogI2VuZGlmCkBAIC0zMjgsMTIg
KzMyOCwxMiBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjpKU0dsbwogICAgIGlmIChpc1dlYkdQVVR5cGUo
Y29udGV4dElkKSkgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0V2ViR1BV
KGNvbnRleHRJZCk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1
cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4g
eyBjb250ZXh0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgY29udGV4dCB9
IH07CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC01NjUs
NyArNTY1LDcgQEAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVu
dDo6Z2V0Q29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFMKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsKIH0KIAot
dm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+
JiByZWN0KQordm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogICAgIApA
QCAtNzA2LDcgKzcwNiw3IEBAIHN0YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL2NhbnZhcy5odG1sI2Etc2VyaWFsaXNhdGlvbi1vZi10aGUtYml0bWFwLWFzLWEt
ZmlsZQotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNW
YWx1ZSBxdWFsaXR5VmFsdWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHlG
cm9tSlNWYWx1ZShKU0M6OkpTVmFsdWUgcXVhbGl0eVZhbHVlKQogewogICAgIGlmICghcXVhbGl0
eVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04Mzks
NyArODM5LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSgpCiAjZW5kaWYKIH0KIAotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtPj4gSFRN
TENhbnZhc0VsZW1lbnQ6OmNhcHR1cmVTdHJlYW0oRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25h
bDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVh
bT4+IEhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKIHsKICAgICBpZiAoIW9y
aWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oU2VjdXJpdHlFcnJvciwgIkNh
bnZhcyBpcyB0YWludGVkIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aAppbmRleCAxMDcxZjY0NzE5MTQyNjVlZDg3NzI0NDJhYTkwNWZhMjRkMThhZGU4Li40NTk4ZjQ4
ZWEyZTNmNmY1NjdjYmRkYWQ2ZDg1MTQyMmRjNDA0OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b250ZXh0LmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4+IGdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgY29udGV4
dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOworICAg
IEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IGdldENvbnRleHQo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogCiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTA3LDEzICsxMDcs
MTMgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2
b2lkIGRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKIAogICAgIHZv
aWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUo
KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW0+PiBjYXB0dXJlU3RyZWFtKERvY3Vt
ZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYVN0cmVhbT4+IGNhcHR1cmVTdHJlYW0oRG9jdW1lbnQmLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsKICNlbmRpZgogCiAgICAgSW1hZ2UqIGNv
cGllZEltYWdlKCkgY29uc3QgZmluYWw7CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gbV9jb250ZXh0OwogICAg
IG11dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0
ZW1wb3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVy
IHRvIHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiAKLSAgICBPcHRpb25hbDxib29s
PiBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3Vz
ZXNEaXNwbGF5TGlzdERyYXdpbmc7CiAgICAgYm9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
IHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9pZ25vcmVSZXNldCB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYWJmNDQwZmFmY2FmZDAwZjdjMjZmM2E1YjFk
M2Q2OGVlYjdiMzg1Mi4uMDczYjJiYzM5ZTQwYmEwZWZkZDk2OWI2NzQ2ZjI1NWFiN2ZjYmQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJl
ZjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogfQogCiAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb20tZG9jdW1l
bnQtbmFtZWRpdGVtCi1PcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0
cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJ
dGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRy
PFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4g
SFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBp
ZiAobmFtZS5pc051bGwoKSB8fCAhaGFzRG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5o
CmluZGV4IDI3ZWRlNWE3NmMxMzgwNGU5YTExZDAzMWRmMjY4NTEyY2FhYjdmZjEuLmUzNTNhYmRi
ZmExZDUyZTU4ODcyN2IyODU2YTk2NWNhNzQ1NmMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IHdpZHRoKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGhlaWdodCgpOwogICAgIAotICAgIE9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+
LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0Owog
CiAgICAgRWxlbWVudCogZG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1l
bnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CmluZGV4IGFkYmExZTZiMzQzZTI5MzNhNTljNTZkYzVkN2YyODA3NDk1YzA1ZDYuLjg0ZjZiMDBl
ODExOTA2NGI3MGFiMDI1OGRjNTgxMjEzZWY4NjVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1M
TGVuZ3RoVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydAog
CiAvLyBDb2xvciBwYXJzaW5nIHRoYXQgbWF0Y2hlcyBIVE1MJ3MgInJ1bGVzIGZvciBwYXJzaW5n
IGEgbGVnYWN5IGNvbG9yIHZhbHVlIgogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
cnVsZXMtZm9yLXBhcnNpbmctYS1sZWdhY3ktY29sb3VyLXZhbHVlCi1zdGF0aWMgT3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IHBhcnNlTGVnYWN5Q29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmluZykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFs
dWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGRvZXNuJ3Qg
YXBwbHkgYSBjb2xvci4KICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggZjM1M2U5
YTliZWY4MTcwMjk0NWRjNzU4MDcxYjFlODFiZTI5ZmIxMy4uYWI2YmRkNDhkMTIyMzdiNTJhZWJl
Yzg3ZTllYjBkZDE5NzI1NzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENv
bnRhaW5lck5vZGUKIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbigpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFk
aW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmgKaW5kZXggNmM3YzRiODk3MTRjNWNkMzMxZmUyZTlmMTE5MDNlYmZlYmM1N2JiYS4uYjViODk5
NzI5M2E5MGJlMGIzMWNiZDc2ODNiYmIxMmQyNTU3ZDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAogICAg
IEhUTUxFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+
IG5hbWVkSXRlbU9ySXRlbXMoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJ
dGVtT3JJdGVtcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgIEhUTUxGb3JtRWxlbWVudCYg
b3duZXJOb2RlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAppbmRleCAxZTZlZTEwMDFiODBjOTNkNzEzNmE3NTNlZDU3NDViYmY5YTQ4YzQxLi5hY2E2NmVj
ZmFjYzQyOWYxZGUyMmZmZTUxYjhiOTU2MDA4NjQ5YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgSFRNTEVsZW1lbnQqIEhUTUxG
b3JtRWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gZWxlbWVudHMoKS0+
aXRlbShpbmRleCk7CiB9CiAKLU9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+
LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0
PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1FbGVtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSBuYW1lZEVsZW1lbnRzKG5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCA1YTYxZjUyMzQx
YzhlZGYxNmFmNGNhY2U3YmU2MTE4MWFmMjNmYThhLi5jOGFkNmFmM2VmNjMzMTg2ZDgyOGJiN2M3
MWU2Mzc4YTU2NDAyZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwotICAg
IE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+
PiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbShjb25z
dCBBdG9tU3RyaW5nJik7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAogICAgIFN0cmluZyBlbmN0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgKaW5kZXggMjFjMzdjNmZiMTRkNDM0MTEyZGFjYmMxNzljMTg0MDBlMWRkZGE3YS4u
Mjc3ZTU5ZGUzZjY1OTE5MGQ1YjFkYThhMzBhN2NiMzllYzEwMDZhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNMYXp5TG9hZE9ic2VydmVyQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3NhbmRib3g7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxGZWF0dXJlUG9saWN5PiBtX2ZlYXR1cmVQb2xpY3k7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPEZlYXR1cmVQb2xpY3k+IG1fZmVhdHVyZVBvbGljeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGF6eUxvYWRGcmFtZU9ic2VydmVyPiBtX2xhenlMb2FkRnJhbWVPYnNlcnZlcjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdmODc4OGU4NzRhZTFl
MGE4M2UzMDM0YjMzMzAzN2FlYzlmMGYwMGYuLmVkYjY4Y2Q3OGVlODkyODY0ZDkwYzJhZGZjN2U2
Y2VmZDVhMWQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApA
QCAtOTYsNyArOTYsNyBAQCBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVudCgpCiAg
ICAgICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0aGlzKTsKIH0KIAotUmVmPEhUTUxJbWFn
ZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlv
bihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgT3B0aW9uYWw8
dW5zaWduZWQ+IGhlaWdodCkKK1JlZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50
OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0
KQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdFJlZigqbmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1n
VGFnLCBkb2N1bWVudCkpOwogICAgIGlmICh3aWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmgKaW5kZXggNmUxYjMzMjk3MWU1ZTRhYzk5ZDRjMWMyMDUyNTk2M2Y3OTYxZDk0
MC4uZTY3ZTEyMmE0OTQxNmZhOGVjMzQwZmM0YTBkZWQxMzllZjFiMjc4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTElt
YWdlRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Jik7CiAgICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwotICAgIHN0
YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KERvY3VtZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4g
aGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQpOwogCiAgICAgdmlydHVhbCB+SFRNTElt
YWdlRWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBkOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkwMzdlNTI1NzM4NDNhLi4xOTlmNmJkZTRl
ODMzMGRiZmZhNzFkNmIyMDA3MTk1Y2UyZmZlZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTQwNSwxMiArNDA1LDEyIEBAIFN0ZXBSYW5nZSBIVE1MSW5w
dXRFbGVtZW50OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGlu
ZykgY29uCiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLU9wdGlvbmFsPERlY2lt
YWw+IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNp
bWFsJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0RWxlbWVudDo6Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewogICAgIHJldHVy
biBtX2lucHV0VHlwZS0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKTsKIH0KIAotT3B0
aW9uYWw8ZG91YmxlPiBIVE1MSW5wdXRFbGVtZW50OjpsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShj
b25zdCBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBIVE1MSW5wdXRFbGVtZW50OjpsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25zdCBIVE1M
T3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCkKIHsKICAgICBhdXRvIG9wdGlvblZhbHVlID0g
b3B0aW9uRWxlbWVudC52YWx1ZSgpOwogICAgIGlmICghaXNWYWxpZFZhbHVlKG9wdGlvblZhbHVl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNTJhYjgzMTdmMGI5
YmJlYWM5NzMxOGMxNzJjZTgwYTY4NjRiZmFlZS4uNWVkOTRiYmY3NmUxMzFkYTI0OWE4NGNiODVi
N2VkNTI0Mzk4MmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAg
LTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55
U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAg
IE9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFs
Jik7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25zdCBI
VE1MT3B0aW9uRWxlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nl
c3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gbGlzdE9wdGlvblZhbHVlQXNEb3VibGUoY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQmKTsKICNl
bmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc3RlcFVwKGludCA9
IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggYjJhYTg4NTQ2OTE0
NTI4MGEyMjYwMjNhM2U4NDFlZTdmMTFiMGI5MC4uYjQ2MTRiZjdjNjFmNDRmZTI0ODUwZDViNzlk
ZWZhY2NjOTE2ODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgdm9pZCBIVE1MTElFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQog
aW5saW5lIHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7Ci0gICAgT3B0aW9uYWw8aW50PiBleHBs
aWNpdFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlOwogICAgIGlm
IChhdXRvIHBhcnNlZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgIGV4
cGxpY2l0VmFsdWUgPSAqcGFyc2VkVmFsdWU7CiAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+
KCpyZW5kZXJlcigpKS5zZXRFeHBsaWNpdFZhbHVlKGV4cGxpY2l0VmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGYwZTAyYzk3MWRjMzU5ODdhNmJjNGNh
MmMzMjI4N2QzYTE3NDliNzMuLmI5Yjk2NjcyMjcwNjdlNzI1ZTYxZGE4YzdlZmExMmJmZjVjMjZh
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTMwOCw3ICsz
MDgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICAgICAgYm9vbCBt
ZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRydWU7CiAgICAgICAgIGlmICghbV9tZWRpYS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAg
ICAgICBkb2N1bWVudFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCgp
KTsKICAgICAgICAgICAgIGF1dG8gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRp
YSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQoKSkpOwpAQCAtMzIyLDcgKzMyMiw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgYWRkUGVuZGluZ1No
ZWV0KGlzQWN0aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFjdGl2ZVNoZWV0KTsKIAogICAgICAgICAv
LyBMb2FkIHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcg
aW1tZWRpYXRlbHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0gICAgICAgIE9wdGlvbmFsPFJlc291cmNl
TG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxv
YWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIGlmICghaXNBY3RpdmUpCiAgICAgICAgICAg
ICBwcmlvcml0eSA9IERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6aW5hY3RpdmVTdHlsZVNo
ZWV0OwogCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hl
ZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzdHlsZVNoZWV0LCBjb25zdCBDYWNoZWRDU1NT
dHlsZVNoZWV0JiBjYWNoZWRTdHlsZVNoZWV0LCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250
ZXh0KQogewogICAgIC8vIEZJWE1FOiBvcmlnaW5DbGVhbiBzaG91bGQgYmUgdHVybmVkIHRvIGZh
bHNlIGV4Y2VwdCBpZiBmZXRjaCBtb2RlIGlzIENPUlMuCi0gICAgT3B0aW9uYWw8Ym9vbD4gb3Jp
Z2luQ2xlYW47CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBvcmlnaW5DbGVhbjsKICAgICBpZiAo
Y2FjaGVkU3R5bGVTaGVldC5vcHRpb25zKCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNv
cnMpCiAgICAgICAgIG9yaWdpbkNsZWFuID0gY2FjaGVkU3R5bGVTaGVldC5pc0NPUlNTYW1lT3Jp
Z2luKCk7CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBIVE1MTGlua0Vs
ZW1lbnQ6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHR5cGVBdHRyKTsKIH0KIAotT3B0aW9uYWw8TGlua0ljb25UeXBlPiBIVE1MTGlua0Vs
ZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGlua0ljb25UeXBlPiBIVE1M
TGlua0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWxBdHRyaWJ1
dGUuaWNvblR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4
MGYwYzVjMWZiOTY4ZTU0OThlYTcyY2UwMGVmNjFkMjFhYjNkYzA4Li45MzY5YjczMDk5YjIwZDg2
YzhmNzE4OTcyZDZiZDVlZjQyNzRmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbVN0cmluZyYg
dHlwZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0Owog
CiAgICAgQ1NTU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDM5ODE4
MjIyOTRmNzBlYjJiYzJkMjg5MTA0ZWUyOWQxZmEzNjA1MzAuLjQwNTJhMTM3ZjQ4ZGQ2NzkwMmZm
ZmYyZjY1ODM0OGIxMmViM2EyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgIGlm
IChhdXRvIG5lYXJlc3RFbmRpbmdDdWUgPSBzdGQ6Om1pbl9lbGVtZW50KGN1cnJlbnRDdWVzLmJl
Z2luKCksIGN1cnJlbnRDdWVzLmVuZCgpLCBjb21wYXJlQ3VlSW50ZXJ2YWxFbmRUaW1lKSkKICAg
ICAgICAgbmV4dEludGVyZXN0aW5nVGltZSA9IG5lYXJlc3RFbmRpbmdDdWUtPmRhdGEoKS0+ZW5k
TWVkaWFUaW1lKCk7CiAKLSAgICBPcHRpb25hbDxDdWVJbnRlcnZhbD4gbmV4dEN1ZSA9IG1fY3Vl
RGF0YS0+Y3VlVHJlZS5uZXh0SW50ZXJ2YWxBZnRlcihtb3ZpZVRpbWUpOworICAgIHN0ZDo6b3B0
aW9uYWw8Q3VlSW50ZXJ2YWw+IG5leHRDdWUgPSBtX2N1ZURhdGEtPmN1ZVRyZWUubmV4dEludGVy
dmFsQWZ0ZXIobW92aWVUaW1lKTsKICAgICBpZiAobmV4dEN1ZSkKICAgICAgICAgbmV4dEludGVy
ZXN0aW5nVGltZSA9IHN0ZDo6bWluKG5leHRJbnRlcmVzdGluZ1RpbWUsIG5leHRDdWUtPmxvdygp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA0NTY5ODMwNDNm
NTdkZGQ4YWJhM2QwMTUwZDk0YjhjZTk3YmFmYzUyLi5kODUxMDA4NTkwNTdkMTRkZDk3OWM0YmI2
MjljZjEyYTc5YmFkMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApA
QCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFJlbW90ZVBsYXliYWNrOwogdXNpbmcgQ3VlSW50ZXJ2
YWwgPSBQT0RJbnRlcnZhbDxNZWRpYVRpbWUsIFRleHRUcmFja0N1ZSo+OwogdXNpbmcgQ3VlTGlz
dCA9IFZlY3RvcjxDdWVJbnRlcnZhbD47CiAKLXVzaW5nIE1lZGlhUHJvdmlkZXIgPSBPcHRpb25h
bDxWYXJpYW50PAordXNpbmcgTWVkaWFQcm92aWRlciA9IHN0ZDo6b3B0aW9uYWw8VmFyaWFudDwK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4sCiAjZW5k
aWYKQEAgLTExMTYsNyArMTExNiw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3VidGl0bGVU
cmFja0xhbmd1YWdlOwogICAgIE1lZGlhVGltZSBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lIHsg
LTEsIDEgfTsKIAotICAgIE9wdGlvbmFsPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25E
aXNwbGF5TW9kZT4gbV9jYXB0aW9uRGlzcGxheU1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGU+IG1fY2FwdGlvbkRpc3BsYXlN
b2RlOwogCiAgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJl
ZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBw
cml2YXRlOgogCiAgICAgV2Vha1B0cjxjb25zdCBNZWRpYVJlc291cmNlTG9hZGVyPiBtX2xhc3RN
ZWRpYVJlc291cmNlTG9hZGVyRm9yVGVzdGluZzsKIAotICAgIE9wdGlvbmFsPER5bmFtaWNSYW5n
ZU1vZGU+IG1fb3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8RHlu
YW1pY1JhbmdlTW9kZT4gbV9vdmVycmlkZUR5bmFtaWNSYW5nZU1vZGU7CiAKICAgICBmcmllbmQg
Y2xhc3MgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmNwcAppbmRleCBhM2MwNzIwYTY3MTAyOGVmNzNmODFiODE4Mjg2MWEyMmU3NDhh
YzVjLi5mMDIyNmY2MjlkMWI5Y2M5NTM0MDZjYzc2NDAwYTA2ZDQyOTdiY2ZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSFRN
TE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKQogICAgIGlmICghbV9tZWRpYSkK
ICAgICAgICAgbV9tZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKG1lZGlhQXR0cikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKIAotICAgIE9wdGlvbmFsPFJlbmRlclN0
eWxlPiBkb2N1bWVudFN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3Vt
ZW50U3R5bGU7CiAgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAg
ICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAppbmRleCBmNTk5MzkzZTgxZDM5ODMx
ZjRlZTllY2IyODQ2MmVjYjJiOWQ0ZjVhLi5lYjYxNThhNGVhMmY2NGQxZjllYmRiN2I1ZDFmZTdj
M2E1ZjkzOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhOwog
Ci0gICAgT3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29sb3I+IG1fY29udGVudENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKaW5kZXggN2M4YjkzNTQxMWUwYzk5
NTBjNjM4YmM0ZmNkYjUyMjk2NTgxMGNiNi4uODY0OGE0YWYwN2QzNGI4YzNhMjVjZDM4Y2EwZWYy
OWU5N2M0NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBA
IC0zMiw5ICszMiw5IEBACiAKIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBzdGFuZGFyZCB3
YXkgdG8gdHVybiBhIHN0ZDo6ZXhwZWN0ZWQgaW50byBhIE9wdGlvbmFsLgogLy8gTWF5YmUgd2Ug
c2hvdWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBmaWxlIGZvciBFeHBlY3RlZCBhbmQgZ2l2
ZSBpdCBhIGJldHRlciBuYW1lLgotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gaW5s
aW5lIE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+
IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkKIHsKLSAgICByZXR1cm4g
ZXhwZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICByZXR1cm4gZXhwZWN0ZWQgPyBzdGQ6Om9wdGlvbmFsPFQ+KFdURk1vdmUo
ZXhwZWN0ZWQudmFsdWUoKSkpIDogc3RkOjpudWxsb3B0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDJmNGMzOTcyMGVj
ZTg0YWYyYzI4YWI5NzBiNjdkM2ZjZWExY2I2MjkuLjU2MzI0YTY2OTczMzg3NjRkNjkyYzEwOTM0
NGY0MThjM2VkMjgzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKLSAgICBPcHRpb25h
bDxpbnQ+IG1fc3RhcnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZD4gbV9pdGVtQ291
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBtX2l0ZW1Db3VudDsKICAgICBib29sIG1faXNSZXZlcnNlZCB7IGZh
bHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5jcHAKaW5kZXggMzBiYmNmMzY5ODQyNzYxZGQwYjUzNDQxNzhiNDcwMTA2MzU1NTIyMC4uZjVj
YjJmMWNmMjQ3ODMxMTA5NjhjNDEyZTQ2YjQyYTg1MDIwODcyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBSZWY8
SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1M
U2VsZWN0RWxlbWVudCYgc2VsZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25z
Q29sbGVjdGlvbihzZWxlY3QpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjphZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpCitFeGNlcHRpb25Pcjx2b2lk
PiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVu
dCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3Jl
KQogewogICAgIHJldHVybiBzZWxlY3RFbGVtZW50KCkuYWRkKGVsZW1lbnQsIGJlZm9yZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA2NzY1
MmU5YjQ5NGE2M2UxMmE3N2RmOWY1YzVkMTRiNDBlYzYxMTZlLi41YTMxZmM0ZGI1MmYzMWZjZGZh
MDk3OWQ1MTVlZDYzNmQ5NGVlNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIAogICAgIHVzaW5n
IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+LCBSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4+OwogICAgIHVzaW5nIEhUTUxFbGVtZW50
T3JJbnQgPSBWYXJpYW50PFJlZlB0cjxIVE1MRWxlbWVudD4sIGludD47Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50
JiwgY29uc3QgT3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVt
ZW50JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMzRkYWViOGRjNDNmZDJmNjNmMDA4NDJjN2E4NzNjYWJm
NzkwZDA3OC4uODliZThkYTc3MzgwNDE2MGFmYWE1ZTBiNjRmZTBhOTJiMDc5ZmQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBA
QCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNv
bnN0CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBPcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQor
RXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChjb25zdCBPcHRpb25Pck9w
dEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9y
SW50PiYgYmVmb3JlKQogewogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gYmVmb3JlRWxlbWVudDsK
ICAgICBpZiAoYmVmb3JlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
aW5kZXggMjcyZjFjNDA0ODMxNjkwNTMxMmE2Yzk0MGQ5ZTRmZWJkNjE0ZTY0Yy4uNjU0MjZjMTM0
MDFmYmJkNzQxMzRhYjZmYjFhMGQ5M2UwZGQxZjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBP
cHRpb25Pck9wdEdyb3VwRWxlbWVudCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50
PiwgUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+PjsKICAgICB1c2luZyBIVE1MRWxlbWVudE9y
SW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTEVsZW1lbnQ+LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYs
IGNvbnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpOworICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVu
dCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7CiAKICAg
ICB1c2luZyBOb2RlOjpyZW1vdmU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmUoaW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAppbmRleCBlNGFlMWE1NGYx
OGYyMDZjNWE0OGE5MGMxYzQ4ZWNmYjEyZGJlODc3Li4xYWI2NmMwYjQwYWEyM2U0OGQ3ZDAzYTA3
OTllMzYyNmE4MTRmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5o
CkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9lcnJvckV2ZW50VGltZXI7
CiAgICAgYm9vbCBtX3Nob3VsZFJlc2NoZWR1bGVFcnJvckV2ZW50T25SZXN1bWUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9zaG91bGRDYWxsU291cmNlc0NoYW5nZWQgeyBmYWxzZSB9OwotICAgIG11
dGFibGUgT3B0aW9uYWw8UmVmUHRyPGNvbnN0IE1lZGlhUXVlcnlTZXQ+PiBtX2NhY2hlZFBhcnNl
ZE1lZGlhQXR0cmlidXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3Qg
TWVkaWFRdWVyeVNldD4+IG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDRjYTAzZGI4NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1
ZmM3OWEyMTNhOTkuLjQ0MjM5MDhkMTUzZGRhOGI0MjZkODlkOGRlYTgwZGNmMGQ5NmYzMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0
Rm9yUmFuZ2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlKiYgY28KICAgICB9CiB9
CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2Vs
ZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSB8
fCAhaXNUZXh0RmllbGQoKSB8fCAhaGFzQ2FjaGVkU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggMDg1NjUzNjlkMTQzZmY3YTk5NDA0Y2E2YTkwZTA1M2JlZjVm
ZDZkMC4uNjRjMTg1MmZhOTJmZWQxYWYxNTI5NGIyOGQ3N2ExYmM1ZGIwZmUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODEs
NyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQs
IGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2Vs
ZWN0aW9uRGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24sIFNlbGVjdGlvblJldmVh
bE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbCwgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKLSAgICBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gc2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgp
IGNvbnN0OwogCiAgICAgdm9pZCBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggMGI0YjE4MDY2NDYwNDQzOTI4
MTFlOGQxMGYxNzNkZmVkOTg5ODRkNS4uNzlhMzYxYThmN2VhMzA2Mjk4ODZkNjY4NjJjNjAwMjI2
NGEzZGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTczLDcgKzczLDcg
QEAgUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1h
Z2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSkgfSk7CiB9CiAKLVJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQorUmVmPEltYWdlQml0bWFwPiBJ
bWFnZUJpdG1hcDo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmIGJh
Y2tpbmdTdG9yZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJpdG1hcChXVEZN
b3ZlKGJhY2tpbmdTdG9yZSkpKTsKIH0KQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiAgICAgKTsKIH0KIAotVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2lu
Zz4+IEltYWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+
PiYmIGJpdG1hcHMpCitWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBJ
bWFnZUJpdG1hcDo6ZGV0YWNoQml0bWFwcyhWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mJiBi
aXRtYXBzKQogewotICAgIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBidWZm
ZXJzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IGJ1ZmZl
cnM7CiAgICAgZm9yIChhdXRvJiBiaXRtYXAgOiBiaXRtYXBzKQogICAgICAgICBidWZmZXJzLmFw
cGVuZChiaXRtYXAtPnRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cnM7CkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGJvb2wgdGFpbnRzT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvKQogI2VuZGlmCiAKIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ltYWdlYml0bWFwLWFuZC1hbmlt
YXRpb25zLmh0bWwjY3JvcHBlZC10by10aGUtc291cmNlLXJlY3RhbmdsZS13aXRoLWZvcm1hdHRp
bmcKLXN0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0
aEZvcm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpemUsIEltYWdlQml0bWFwT3B0aW9ucyYgb3B0aW9u
cywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCkKK3N0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBj
cm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpemUsIElt
YWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0KQog
ewogICAgIC8vIDIuIElmIGVpdGhlciBvciBib3RoIG9mIHJlc2l6ZVdpZHRoIGFuZCByZXNpemVI
ZWlnaHQgbWVtYmVycyBvZiBvcHRpb25zIGFyZSBsZXNzCiAgICAgLy8gICAgdGhhbiBvciBlcXVh
bCB0byAwLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCAiSW52YWxpZFN0YXRl
RXJyb3IiCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWMKIAogLy8g
MTMuIFJldHVybiBvdXRwdXQuCiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMs
IE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkK
K3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVs
ZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVj
dD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElm
IGltYWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlv
biBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zOTksMTkgKzM5OSwxOSBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCiAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1hZ2VCaXRtYXApKTsK
IH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBj
YW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRS
ZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIEltYWdl
Qml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1h
Z2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIGNyZWF0ZVByb21pc2Uoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyksIFdURk1v
dmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9D
QU5WQVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBj
YW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRS
ZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJp
dG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3Zl
KHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KICNlbmRpZgogCi12b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
T3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQor
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBDYW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0
aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6
OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIHRoZSBjYW52YXMgZWxlbWVudCdz
IGJpdG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBkaW1lbnNpb24gb3IgYSB2ZXJ0aWNhbAog
ICAgIC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJvLCB0aGVuIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC00NjcsNyArNDY3LDcgQEAg
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LAogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotdm9pZCBJbWFn
ZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZpZGVvLCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MVmlk
ZW9FbGVtZW50PiYgdmlkZW8sIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewog
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyNkb20tY3JlYXRl
aW1hZ2ViaXRtYXAKICAgICAvLyBXSEFUV0cgSFRNTCAyMTAyOTEzYjMxMzA3OGNkOGVlYWM3ZTgx
ZTZhODc1NmNiZDNlNzczCkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCi12b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNT
U0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBJ
bWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFs
dWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlk
U3RhdGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCIpOwogfQogI2VuZGlmCiAKLXZvaWQgSW1hZ2VC
aXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VC
aXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8
SW1hZ2VCaXRtYXA+JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBv
cHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNl
JiYgcHJvbWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSdzIFtbRGV0YWNoZWRdXSBpbnRlcm5h
bCBzbG90IHZhbHVlIGlzIHRydWUsIHJldHVybiBhIHByb21pc2UKICAgICAvLyAgICByZWplY3Rl
ZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KQEAgLTY0MCw3ICs2NDAsNyBAQCBwcml2YXRlOgogY2xhc3MgUGVuZGluZ0ltYWdl
Qml0bWFwIGZpbmFsIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEZpbGVSZWFkZXJM
b2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJlZlB0cjxCbG9iPiYmIGJsb2IsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlv
bnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKKyAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSZWZQdHI8QmxvYj4mJiBibG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKICAgICB7CiAgICAgICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0
LmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02
NDksNyArNjQ5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nSW1h
Z2VCaXRtYXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UmVmUHRyPEJsb2I+JiYgYmxvYiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQorICAgIFBl
bmRpbmdJbWFnZUJpdG1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBSZWZQdHI8QmxvYj4mJiBibG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25z
LCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJv
bWlzZSkKICAgICAgICAgOiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiAgICAgICAgICwgbV9ibG9iTG9hZGVyKEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVm
ZmVyLCB0aGlzKQogICAgICAgICAsIG1fYmxvYihXVEZNb3ZlKGJsb2IpKQpAQCAtNzIzLDEzICs3
MjMsMTMgQEAgcHJpdmF0ZToKICAgICBGaWxlUmVhZGVyTG9hZGVyIG1fYmxvYkxvYWRlcjsKICAg
ICBSZWZQdHI8QmxvYj4gbV9ibG9iOwogICAgIEltYWdlQml0bWFwT3B0aW9ucyBtX29wdGlvbnM7
Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4gbV9yZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVj
dD4gbV9yZWN0OwogICAgIEltYWdlQml0bWFwOjpQcm9taXNlIG1fcHJvbWlzZTsKICAgICBTdXNw
ZW5kYWJsZVRpbWVyIG1fY3JlYXRlSW1hZ2VCaXRtYXBUaW1lcjsKICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgUHJvbWlz
ZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4m
JiBhcnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0LCBQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAg
ICBpZiAoIWFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIEltYWdlQml0bWFwIGZyb20g
YW4gZW1wdHkgYnVmZmVyIik7CkBAIC03NzAsMTMgKzc3MCwxMyBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogICAgIHByb21pc2UucmVzb2x2ZShXVEZNb3ZlKGltYWdlQml0bWFwKSk7CiB9CiAK
LXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEJsb2I+JiBibG9iLCBJbWFnZUJpdG1hcE9w
dGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJv
bWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxCbG9iPiYgYmxv
YiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBy
ZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gMi4gUmV0dXJu
IGEgbmV3IHByb21pc2UsIGJ1dCBjb250aW51ZSBydW5uaW5nIHRoZXNlIHN0ZXBzIGluIHBhcmFs
bGVsLgogICAgIFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgV1RGTW92ZShibG9iKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlRGF0
YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhLCBJbWFnZUJpdG1hcE9wdGlv
bnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQ
cm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyA2LjEuIExldCBidWZmZXIgYmUgaW1hZ2UncyBk
YXRhIGF0dHJpYnV0ZSB2YWx1ZSdzIFtbVmlld2VkQXJyYXlCdWZmZXJdXQogICAgIC8vICAgICAg
aW50ZXJuYWwgc2xvdC4KQEAgLTgzMiw3ICs4MzIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
CiAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotSW1hZ2VC
aXRtYXA6OkltYWdlQml0bWFwKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJiBiYWNraW5n
U3RvcmUpCitJbWFnZUJpdG1hcDo6SW1hZ2VCaXRtYXAoc3RkOjpvcHRpb25hbDxJbWFnZUJpdG1h
cEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQogICAgIDogbV9iYWNraW5nU3RvcmUoV1RGTW92ZShi
YWNraW5nU3RvcmUpKQogewogICAgIEFTU0VSVF9JTVBMSUVTKG1fYmFja2luZ1N0b3JlLCBtX2Jh
Y2tpbmdTdG9yZS0+YnVmZmVyKCkpOwpAQCAtODQ2LDcgKzg0Niw3IEBAIEltYWdlQml0bWFwOjp+
SW1hZ2VCaXRtYXAoKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZUJ1ZmZlciA9IFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpXSB7IH0pOwogfQogCi1PcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tp
bmc+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCaXRtYXBCYWNraW5nKCkKK3N0ZDo6b3B0aW9uYWw8
SW1hZ2VCaXRtYXBCYWNraW5nPiBJbWFnZUJpdG1hcDo6dGFrZUltYWdlQml0bWFwQmFja2luZygp
CiB7CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIHN0ZDo6bnVsbG9w
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMzI2ZjgwYjg3Y2Q1Mjk5YmM3
OWZmZGQ2Yjg2NDg3ZTk4YTFkODlkNS4uMzI0NmQ0MjQ0ZDQ2YmUxOTRiMGVkODBkOThhYzYyMjQ2
YWEzNzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtODUsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEpOwogCiAgICAgc3RhdGljIFJlZjxJbWFnZUJpdG1h
cD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJbnRTaXplJik7Ci0gICAg
c3RhdGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2lu
Zz4mJik7CisgICAgc3RhdGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKHN0ZDo6b3B0aW9uYWw8
SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwogCkBAIC0xMDIs
MzYgKzEwMiwzNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3RvcmUtPnByZW11bHRpcGx5QWxw
aGEoKTsgfQogICAgIGJvb2wgZm9yY2libHlQcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3RvcmUtPmZvcmNpYmx5UHJlbXVsdGlwbHlB
bHBoYSgpOyB9CiAKLSAgICBPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+IHRha2VJbWFnZUJp
dG1hcEJhY2tpbmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4gdGFr
ZUltYWdlQml0bWFwQmFja2luZygpOwogICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0
dXJuICFtX2JhY2tpbmdTdG9yZTsgfQogICAgIHZvaWQgY2xvc2UoKSB7IHRha2VJbWFnZUJpdG1h
cEJhY2tpbmcoKTsgfQogCi0gICAgc3RhdGljIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+PiBkZXRhY2hCaXRtYXBzKFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYmKTsKKyAg
ICBzdGF0aWMgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4gZGV0YWNo
Qml0bWFwcyhWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mJik7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcjsKICAgICBmcmllbmQgY2xhc3Mg
UGVuZGluZ0ltYWdlQml0bWFwOwogCi0gICAgSW1hZ2VCaXRtYXAoT3B0aW9uYWw8SW1hZ2VCaXRt
YXBCYWNraW5nPiYmKTsKKyAgICBJbWFnZUJpdG1hcChzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFw
QmFja2luZz4mJik7CiAKICAgICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZm
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7
CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9u
YWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAjaWYg
RU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYsIEltYWdlQml0bWFwT3B0aW9u
cyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVu
dD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlz
ZSYmKTsKICNlbmRpZgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
T3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYs
IEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQ
dHI8SW1hZ2VCaXRtYXA+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50
UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYsIEltYWdlQml0bWFw
T3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5D
YW52YXM+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFBy
b21pc2UmJik7CiAjZW5kaWYKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNlJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlv
bmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9u
cyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYsIElt
YWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKLSAgICBz
dGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPElu
dFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBl
LCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZv
aWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ2FudmFzQmFzZSYsIElt
YWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwor
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+
LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0
ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZh
bHVlPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9t
aXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
c3RkOjpvcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKIAotICAgIE9wdGlvbmFsPEltYWdl
Qml0bWFwQmFja2luZz4gbV9iYWNraW5nU3RvcmU7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+IG1fYmFja2luZ1N0b3JlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXBPcHRpb25zLmgKaW5kZXggNjFhMGIzYTc0YjljZjcwNWNmZGIxZDkwMzBhZTgz
NGYwODQxMTA1YS4uZDVmMDliN2QxZjllZTdiMzhhNzlmYmM4MzlkODlkNDlmZWQxYzYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5oCkBAIC0zOCw4ICszOCw4IEBA
IHN0cnVjdCBJbWFnZUJpdG1hcE9wdGlvbnMgewogICAgIE9yaWVudGF0aW9uIGltYWdlT3JpZW50
YXRpb24geyBPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAgIFByZW11bHRpcGx5QWxwaGEgcHJlbXVs
dGlwbHlBbHBoYSB7IFByZW11bHRpcGx5QWxwaGE6OkRlZmF1bHQgfTsKICAgICBDb2xvclNwYWNl
Q29udmVyc2lvbiBjb2xvclNwYWNlQ29udmVyc2lvbiB7IENvbG9yU3BhY2VDb252ZXJzaW9uOjpE
ZWZhdWx0IH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHJlc2l6ZVdpZHRoOwotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiByZXNpemVIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
cmVzaXplV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcmVzaXplSGVpZ2h0Owog
ICAgIFJlc2l6ZVF1YWxpdHkgcmVzaXplUXVhbGl0eSB7IFJlc2l6ZVF1YWxpdHk6OkxvdyB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IDk3ODdiMDY3M2E4ZTQxMmMyMzc1
ZDM0NjQ3ODEzZjVmZGVlNDQzYmYuLjkxNmRmYjBmMmI4ZmUyOWU1ZjNmYzI4MTU2MzhjNjQwMWI1
NzE0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gY2hlY2tlZERhdGFTaXplOwogfQogCi1QcmVk
ZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPElt
YWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENv
bG9yU3BhY2UpCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1dGVDb2xvclNw
YWNlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzLCBQcmVkZWZpbmVk
Q29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0
dGluZ3MtPmNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiAqc2V0dGluZ3MtPmNvbG9yU3BhY2U7
CkBAIC01Niw3ICs1Niw3IEBAIFJlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVs
QnVmZmVyJiYgcGl4ZWxCdWZmZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KHBpeGVsQnVmZmVyLnNpemUoKSwgcGl4ZWxCdWZmZXIudGFrZURhdGEoKSwgKmNvbG9yU3BhY2Up
KTsKIH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNy
ZWF0ZShzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewogICAgIGlm
ICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODMsNyArODMsNyBA
QCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCByb3dzLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRl
ZmF1bHRDb2xvclNwYWNlLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCitF
eGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3Bh
Y2UgZGVmYXVsdENvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNl
dHRpbmdzKQogewogICAgIEludFNpemUgc2l6ZShyb3dzLCBwaXhlbHNQZXJSb3cpOwogICAgIGF1
dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CkBAIC0xMDAsNyArMTAwLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCByb3dzLCB1bnNpZ24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2UpKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQorRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1
bnNpZ25lZCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7
CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwpAQCAtMTIxLDcgKzEyMSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+
PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNl
Tm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+
PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1
bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0
aW5ncz4gc2V0dGluZ3MpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpj
cmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdz
PiBzZXR0aW5ncykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlQXJyYXktPmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAlIDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApp
bmRleCBjYTEyOGVkYmZlYWY4YmU3MjExNTlkZmUzNzVhZGFlZTI0MTc5N2MxLi5lMDc4ZWM0OGZh
ZWI4NzBkZDc2MGNiM2M2YTA3YzViZTNjZTk1ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgK
QEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVsQnVmZmVyJiYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRh
PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRT
aXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1BlclJvdywgUHJl
ZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIE9wdGlvbmFsPEltYWdlRGF0YVNl
dHRpbmdzPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBP
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4m
JiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRh
U2V0dGluZ3M+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4
ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgc3RkOjpv
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVk
IHN3LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHNoLCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB+SW1hZ2VEYXRhKCk7CiAKLSAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9yU3Bh
Y2UgY29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+LCBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSA9IFByZWRlZmluZWRDb2xvclNwYWNlOjpT
UkdCKTsKKyAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29tcHV0ZUNvbG9yU3BhY2Uo
c3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4sIFByZWRlZmluZWRDb2xvclNwYWNlIGRl
ZmF1bHRDb2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpOwogCiAgICAgY29u
c3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKaW5kZXggMWIwODEwMzNmM2ZhNzMzMjhlMGRmZGU2
ZDk5ZTAyZTdmZGYyYjIzMy4uMmRkZDdlOTZiMmQyYWFiMTk5MDk3MWVhMTE4NzQ3MDJkMzhiYTJm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaApAQCAtMzEsNyArMzEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSW1hZ2VEYXRhU2V0dGluZ3Mgewot
ICAgIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIHN0ZDo6
b3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggNGQzYTc4YTJj
N2UzYjFjMzVlZTg3MmU2Y2RmYjgyZDAwODM2MGMwNC4uMTUwZDUwODA1YjkwODZkNTIxZjBmNzcx
NjBmMDQ5ZWMyOWFkZTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtODY1LDcg
Kzg2NSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKIH0K
IAotT3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUo
Y29uc3QgRGVjaW1hbCYpCitzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IElucHV0VHlwZTo6ZmluZENs
b3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApp
bmRleCAwNzkzMGNjZTczZWQ5NTdmZWMwNjY0NTRiNGYwYTE0YWJlNjhlNzdmLi5iYjgyY2Q4MDgx
Y2UwMDVmNzRhMWI0Y2MxMTJjMTljZWNkMTRiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgK
QEAgLTM3NSw3ICszNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKICAgICB2aXJ0dWFsIHZvaWQgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotICAgIHZpcnR1
YWwgT3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2lt
YWwmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNr
TWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKaW5kZXggMjgx
OTI0Njk2NzZiNjU2NzcxODY4NzEwY2I3ZjUyZGFmZmE3Y2NhYi4uOTcyM2FiNWU2ZTZlMTE2YzZi
MTRkMGEzOGM4MDI2ZTg0OTczNDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
aW5rSWNvbkNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNv
bGxlY3Rvci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYXV0byBMaW5rSWNvbkNvbGxlY3Rvcjo6aWNv
bnNPZlR5cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+IGljb25UeXBlcykgLT4gVmVjdG8KICAg
ICAgICAgLy8gVGhpcyBpY29uIHNpemUgcGFyc2luZyBpcyBhIGxpdHRsZSB3b25reSAtIGl0IG9u
bHkgcGFyc2VzIHRoZSBmaXJzdAogICAgICAgICAvLyBwYXJ0IG9mIHRoZSBzaXplLCAiNjB4NzAi
IGJlY29tZXMgIjYwIi4gVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zCiAgICAgICAg
IC8vIGFuZCBpcyBwcm9iYWJseSBnb29kIGVub3VnaCBmb3Igbm93LgotICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gaWNvblNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGlj
b25TaXplOwogICAgICAgICBpZiAobGlua0VsZW1lbnQuc2l6ZXMoKS5sZW5ndGgoKSkKICAgICAg
ICAgICAgIGljb25TaXplID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWdu
ZWQ+KGxpbmtFbGVtZW50LnNpemVzKCkuaXRlbSgwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDZmYjNmNmNhM2M5N2NhMzYyZTg2NWFmNGUy
MzNlZDZkM2VhNzRlOGEuLjdhMjc1ZDdjMzE1NzViZmY4MDk4YzJkOWIyNmVkOGVhZjM2ZWZhOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMTM3
LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgICAg
IG1fc2Vzc2lvbi0+bWV0YWRhdGFDaGFuZ2VkKG1ldGFkYXRhKTsKICAgICB9Ci0gICAgdm9pZCBw
b3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JiBz
dGF0ZSkgZmluYWwKKyAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpIGZpbmFsCiAgICAgewogICAgICAgICBp
ZiAobV9zZXNzaW9uKQogICAgICAgICAgICAgbV9zZXNzaW9uLT5wb3NpdGlvblN0YXRlQ2hhbmdl
ZChzdGF0ZSk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cAog
fQogI2VuZGlmCiAKLU9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9u
Ojpub3dQbGF5aW5nSW5mbygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiB7CiAgICAgYXV0byog
cGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBib29sIGFsbG93c05vd1Bs
YXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPSBwYWdlICYmICFwYWdlLT5pc1Zpc2libGVBbmRBY3Rp
dmUoKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAgICAgYXV0byogc2Vzc2lv
biA9IG1lZGlhU2Vzc2lvbigpOwogICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9IHNlc3Npb24g
PyBzZXNzaW9uLT5tZXRhZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRh
KSB7Ci0gICAgICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAgICAg
ICAgIGlmIChzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtJbWFnZSgpKSB7CiAgICAgICAgICAgICBB
U1NFUlQoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpLCAiQW4gaW1hZ2Ug
bXVzdCBhbHdheXMgaGF2ZSBhc3NvY2lhdGVkIGRhdGEiKTsKICAgICAgICAgICAgIGFydHdvcmsg
PSBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtTcmMoKSwg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+bWltZVR5cGUoKSwgc2Vzc2lvbk1ldGFk
YXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lk
IE1lZGlhRWxlbWVudFNlc3Npb246Om1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFN
ZXRhZGF0YT4mKQogICAgIGNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIH0KIAotdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25h
bDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgeyB9Cit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnBv
c2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRl
PiYpIHsgfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrU3RhdGVDaGFuZ2Vk
KE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IGQ5M2ZkMGY4N2Y5NmJkMmY4ODdiZGU2NGFlN2VlNTli
YTQwYTNhNTQuLjNmOGE1ODgwZWJiZDE0ZDVmZjM5OTFhNmI2MjNiMWI0ZjUwN2MyN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0xNzMsMTAgKzE3Mywx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICB8fCB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW9BdWRp
bzsKICAgICB9CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxheWluZ0luZm8o
KSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5
aW5nSW5mbygpIGNvbnN0IGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVN
ZWRpYVVzYWdlSWZDaGFuZ2VkKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+
IG1lZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVVzYWdlSW5mbzsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVVzYWdlSW5mbzsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0
IFJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBtZXRhZGF0
YUNoYW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+Jik7Ci0gICAgdm9pZCBwb3NpdGlv
blN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+Jik7CisgICAg
dm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRp
b25TdGF0ZT4mKTsKICAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBs
YXliYWNrU3RhdGUpOwogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNDaGFuZ2VkKCk7CiAKQEAgLTIy
MCw3ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsK
ICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIAotICAgIE9wdGlvbmFs
PE1lZGlhVXNhZ2VJbmZvPiBtX21lZGlhVXNhZ2VJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8TWVk
aWFVc2FnZUluZm8+IG1fbWVkaWFVc2FnZUluZm87CiAKICAgICBib29sIG1fZWxlbWVudElzSGlk
ZGVuVW50aWxWaXNpYmxlSW5WaWV3cG9ydCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VsZW1lbnRJ
c0hpZGRlbkJlY2F1c2VJdFdhc1JlbW92ZWRGcm9tRE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggZGQ5NDBlYjkzNmRhMDY3NDZiOWZkZTMyOWZi
MTRiY2I5MTNlZGEzYy4uZDQyZWM4YTkyMDc3YTQwMWJkZWM4N2JhZjVmODJhZGFmMjhkNmIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTExNywxMiArMTE3LDEy
IEBAIERlY2ltYWwgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBz
cmMsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWCiAgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3Vi
bGUobW9udGhzKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IE1vbnRoSW5wdXRUeXBl
OjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAor
c3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRl
Q29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ01vbnRoKHNvdXJjZSk7CiB9CiAKLU9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBNb250aElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21w
b25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IE1vbnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZh
bHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1vbnRoc1NpbmNl
RXBvY2godmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4IGQx
ZTVhMWFhOGMwNjg3MDFmYjllNTgzMzczYjk1ZmQ3NWU2YTVlYzQuLmM2N2FkNWJiY2U2OWFhZmIz
MDIwZDJlMGU3M2FiMzliYWU3MTUwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBl
LmgKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2lt
YWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdl
IGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5n
VmlldyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3Qg
U3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBv
bmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRp
b25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKaW5kZXggNGU4ZmMyNmNjNzIxMjE3MWI2YWZlNGVkMDMzYmIwNDhkNGEwNWNkMy4uYzQ5
MDY2Mzg1NDY3MjI2MGVjNTliYTVmY2MxN2QwZjU5MzY3ZjUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgT2Zmc2NyZWVu
Q2FudmFzOjpjcmVhdGVDb250ZXh0V2ViR0woUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5
cGUsIFdlYkdMCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLUV4Y2VwdGlvbk9yPE9wdGlv
bmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRl
eHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRl
eHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZz
Y3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRl
cmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fZGV0YWNoZWQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0
YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAg
ICAgcmV0dXJuIG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9tRG91YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5RnJvbURvdWJsZShkb3VibGUg
cXVhbGl0eU51bWJlcikKIHsKICAgICBpZiAoIShxdWFsaXR5TnVtYmVyID49IDAgJiYgcXVhbGl0
eU51bWJlciA8PSAxKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM2Nyw3ICsz
NjcsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJbWFnZUVuY29kZU9w
dGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgogICAgIHByb21pc2UtPnJlc29sdmVXaXRo
TmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oV1RGTW92ZShibG9iKSk7CiB9CiAKLXZv
aWQgT2Zmc2NyZWVuQ2FudmFzOjpkaWREcmF3KGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJl
Y3QpCit2b2lkIE9mZnNjcmVlbkNhbnZhczo6ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogICAgIHNjaGVkdWxl
Q29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmgKaW5kZXggNjA3MmQ2NjlmNjVmYTdkOTc0ZTlkY2MzZTFkMDM3OGM1OTk4M2IwZC4uNjE3
YWQwYzEwYTI1OTMzMThhYzM2NmQ1OGQwMjFiNDAxZjAyMjAzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBwdWJsaWM6CiAKICAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxPZmZz
Y3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
UmVuZGVyaW5nQ29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYm
IGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5k
ZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVuZGVyaW5n
Q29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50
cyk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gdHJhbnNmZXJUb0ltYWdl
Qml0bWFwKCk7CiAgICAgdm9pZCBjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyYmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQgZGlkRHJhdyhjb25zdCBPcHRpb25h
bDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiYpIGZpbmFsOwogCiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDRmZjUwY2IzOWVkNGYzMzI3ODhkOGQ5
NWRhOTA1MDgzZjE0YTU4ZjguLjQ3NmUzMzY1NDgwOWQxYWZjYjc0ZDQ3ZjAyOGZiZDk5MGZmNGE1
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6dXBkYXRlVGlja01hcmtWYWx1ZXMoKQogICAgIHN0
ZDo6c29ydChtX3RpY2tNYXJrVmFsdWVzLmJlZ2luKCksIG1fdGlja01hcmtWYWx1ZXMuZW5kKCkp
OwogfQogCi1PcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNr
TWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBS
YW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZh
bHVlKQogewogICAgIHVwZGF0ZVRpY2tNYXJrVmFsdWVzKCk7CiAgICAgaWYgKCFtX3RpY2tNYXJr
VmFsdWVzLnNpemUoKSkKQEAgLTQyNCw4ICs0MjQsOCBAQCBPcHRpb25hbDxEZWNpbWFsPiBSYW5n
ZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVl
KQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RGVj
aW1hbD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV90aWNrTWFy
a1ZhbHVlc1ttaWRkbGUgLSAxXSkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1h
bD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpID8gc3Rk
OjptYWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBzdGQ6Om51bGxvcHQ7
CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0TGVmdCA9IG1pZGRsZSA/IHN0ZDo6
bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZSAtIDFdKSA6IHN0ZDo6bnVsbG9w
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBt
X3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFs
dWVzW21pZGRsZV0pIDogc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjbG9zZXN0TGVmdCkKICAg
ICAgICAgcmV0dXJuIGNsb3Nlc3RSaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
aAppbmRleCA1ZjdjYTc4YjAxZDJlNjNiMTliNjhmOTY1MTgzYTM3NzU4ZjNjZjMyLi43M2VkOTRj
ZmUxMzEwYWZiMjkxYjBmMWVkNjU3OWIzNGU2NDAzNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAgICAgdm9pZCBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGZp
bmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJikgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYp
IGZpbmFsOwogCiAgICAgYm9vbCBtX3RpY2tNYXJrVmFsdWVzRGlydHkgeyB0cnVlIH07CiAgICAg
VmVjdG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcAppbmRleCA3MDFhYmIwMDBkZGUwODc3Yjc3ZGZiNmU3OWEzNjlkNTVmNzdiOWZl
Li45YjkwNTA1OTBmNWVmNThhZjczOGYyODk5NTM5NmVjNzkyMjY4OWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBTdGVwUmFuZ2UgVGlt
ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxp
bmcpIGNvbnN0CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9u
czo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHRpbWVTdGVwRGVzY3JpcHRpb24pOwog
fQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVD
b21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25z
dCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRz
Ojpmcm9tUGFyc2luZ1RpbWUoc291cmNlKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IFRpbWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFs
dWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBUaW1lSW5wdXRUeXBlOjpz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQodmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAppbmRleCBhM2JlZDcxMWRlZDhl
ZDJmNGNjMjU4ZjhmODViNTkyNTFkNjY2ZGVlLi42MWRjNmZmYTZmN2RjZTk0ZDI3NDNkNjcwOTg2
ODZkNDdiN2IxMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtNDYsOCAr
NDYsOCBAQCBwcml2YXRlOgogICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNv
bXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRv
RGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50
cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVu
dChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxE
YXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCAxZTcxODcxNWRjODA0OWE5MmU2YmRh
MjhjZDcxMGI4YjU4YjczMjkyLi5iYWUxNGQ0OGM1ODhmNzQ0N2JlNzFiODczYzZjNDRjMjk4Njgy
NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTE2OCwx
NiArMTY4LDE2IEBAIFN0cmluZyBVUkxEZWNvbXBvc2l0aW9uOjpwb3J0KCkgY29uc3QKIH0KIAog
Ly8gT3V0ZXIgb3B0aW9uYWwgaXMgd2hldGhlciB3ZSBjb3VsZCBwYXJzZSBhdCBhbGwuIElubmVy
IG9wdGlvbmFsIGlzICJubyBwb3J0IHNwZWNpZmllZCIuCi1zdGF0aWMgT3B0aW9uYWw8T3B0aW9u
YWw8dWludDE2X3Q+PiBwYXJzZVBvcnQoU3RyaW5nVmlldyBzdHJpbmcsIFN0cmluZ1ZpZXcgcHJv
dG9jb2wpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pj4gcGFy
c2VQb3J0KFN0cmluZ1ZpZXcgc3RyaW5nLCBTdHJpbmdWaWV3IHByb3RvY29sKQogewogICAgIGF1
dG8gZGlnaXRzT25seSA9IHN0cmluZy5sZWZ0KGNvdW50QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAg
ICAgaWYgKGRpZ2l0c09ubHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWlu
dDE2X3Q+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oZGlnaXRzT25seSk7CiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwg
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3RkOjpudWxs
b3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB7IHN0ZDo6bnVs
bG9wdCB9OwogICAgIHJldHVybiB7IHsgKnBvcnQgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFNlYXJjaFBhcmFtcy5jcHAKaW5kZXggMGM4OGEwNWU3ZGI0NDEwZWFjM2QwYzUyZjVkOThk
OTI1NjE3MjJlOS4uM2NmNGY0OGIxOTkyYmY2NTMwYzkxMGQ4MDZmNjQ3Y2U2ODMxN2M3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgVVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCgpCiAgICAgbV9w
YWlycyA9IHNlYXJjaC5zdGFydHNXaXRoKCc/JykgPyBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxF
bmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFdURjo6VVJMUGFy
c2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHNlYXJjaCk7CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5
VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4
dCgpCitzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJM
U2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCiB7CiAgICAgYXV0byYgcGFpcnMgPSBtX3Rh
cmdldC0+cGFpcnMoKTsKICAgICBpZiAobV9pbmRleCA+PSBwYWlycy5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaAppbmRleCBhYzU2NDZhNTE2NWYxMmYzNjBiM2ZkNDNj
YzU3MGVlZGE0OTMzMmIyLi5hZWE2NDU3NjBlOWJjNTNhZjlmOGY3MjRlMGVlYzlkMjUxMTg4NzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IEl0ZXJhdG9yKFVSTFNlYXJjaFBhcmFtcyYpOwotICAgICAgICBPcHRpb25hbDxXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFJlZjxVUkxTZWFyY2hQYXJhbXM+IG1fdGFyZ2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvV2Vla0lucHV0VHlwZS5jcHAKaW5kZXggYjU1MjAxOWM4MTkzYWQ2N2ZjMDFlMjY5ODEzY2Rk
N2EzOTQwMmM3MS4uZGQ2MmM3OTk1ODU4ZjA2ODkyNTVhYjVkOTAyMDMxMzE2NzQ4NDdlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAgU3Rl
cFJhbmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55
U3RlcEhhbmRsaW5nKSBjb25zdAogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIFJhbmdl
TGltaXRhdGlvbnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCB3ZWVrU3RlcERlc2Ny
aXB0aW9uKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFdlZWtJbnB1dFR5cGU6OnBh
cnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBv
bmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAogewogICAgIHJldHVybiBEYXRl
Q29tcG9uZW50czo6ZnJvbVBhcnNpbmdXZWVrKHNvdXJjZSk7CiB9CiAKLU9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBXZWVrSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMo
ZG91YmxlIHZhbHVlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gV2Vla0lu
cHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29u
c3QKIHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVw
b2NoRm9yV2Vlayh2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dl
ZWtJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4
IDVkY2IxMDEyYjI3NWQ3MDQ5MWFmYzFiNzYwYjZlMmRhNmI4YmExNDguLmRjYzViYzQzZDQwNzg3
ZjE1NzE5Njg3NzZiODhmYWI1OTJjYzU2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvV2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlw
ZS5oCkBAIC00OCw4ICs0OCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRGF0ZUNvbXBvbmVudHNUeXBlIGRh
dGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNv
bXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vj
b25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFu
ZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlk
Rm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlNzU4MmFiMzliYjI3ZDNkZmUxNDJjZmE1MjEzY2Iw
ODhjNzI5ZTFlLi5kNWIwNDkzOGQyZmVmYWU3NGE3NzFkMTNjM2M4MWMxNTRlMjBiNWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKQEAgLTE4MSwxMiArMTgxLDEyIEBAIENhbnZhc0RpcmVjdGlvbiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRvVGV4dERp
cmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gQ2FudmFz
RGlyZWN0aW9uOjpSdGwgOiBDYW52YXNEaXJlY3Rpb246Okx0cjsKIH0KIAotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
c3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgZHJhd1RleHRJbnRlcm5hbCh0
ZXh0LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
T3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgs
IHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgYXV0byBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSoKICAgICBy
ZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBi
b29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAg
ICBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgpLnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA0OWZlZTJlOTEzZjcwMmUxZmJj
N2FjMDdjMWQ3OTkwNzU2OWVlNTcwLi45MzA3NGVmOGUwZTQ0MGEyZmE2NDZhZTE0MjcwZmIyYmUw
MDdkOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAKICAgICBDYW52
YXNEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZpbGxUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRo
ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
dm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZjxUZXh0
TWV0cmljcz4gbWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogcHJpdmF0ZToKQEAg
LTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGlu
Z1N0eWxlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRp
b25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdm9pZCBkcmF3Rm9j
dXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmLCBFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKaW5kZXggZDc5MGM2MmJlZGIyY2E4ZmQ4MDk0ZDk2YTBhZDE3MjI0YmQ3YzUyMi4u
YzdlMWNiMmNiNWMwZDE4YWE4MWI1NmJjMTczNTM4ZTIzMmFjMGM3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OnJlc3RvcmUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYXRoLnRyYW5zZm9ybShz
dGF0ZSgpLnRyYW5zZm9ybSk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBp
ZiAoT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3RhdGUoKS50cmFuc2Zvcm0u
aW52ZXJzZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJz
ZSA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKSkKICAgICAgICAgbV9wYXRoLnRyYW5zZm9y
bShpbnZlcnNlLnZhbHVlKCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250
ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0oKQogICAgIG1vZGlmaWFibGVTdGF0ZSgp
Lmhhc0ludmVydGlibGVUcmFuc2Zvcm0gPSB0cnVlOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlv
bmFsPGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0
U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxw
aGEpCiB7CiAgICAgaWYgKGFscGhhKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKCphbHBoYSkp
CkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpz
ZXRTdHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG8KICAgICBzZXRTdHJv
a2VTdHlsZShDYW52YXNTdHlsZShjb2xvcikpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxm
bG9hdD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEZpbGxD
b2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsK
ICAgICBpZiAoYWxwaGEpIHsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oKmFscGhhKSkKQEAgLTEz
MjEsNyArMTMyMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tl
UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvCiAgICAgfQogfQogCi12b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBPcHRpb25h
bDxmbG9hdD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcm
IGNvbG9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxw
aGEgJiYgc3RkOjppc25hbigqYWxwaGEpKQogICAgICAgICByZXR1cm47CkBAIC0yMDYxLDcgKzIw
NjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVD
YW52YXMoKQogICAgIGRpZERyYXcoYmFja2luZ1N0b3JlQm91bmRzKCksIERpZERyYXdPcHRpb246
OkFwcGx5Q2xpcCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlk
RHJhdyhPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QsIE9wdGlvblNldDxEaWREcmF3T3B0aW9uPiBv
cHRpb25zKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25TZXQ8RGlkRHJhd09wdGlvbj4gb3B0aW9u
cykKIHsKICAgICBpZiAoIWRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIx
NjksNyArMjE2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VECiAgICAgcmV0dXJuIG5ld0lt
YWdlRGF0YTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8
SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQg
c3csIGludCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNv
bnN0CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bmRleFNpemVFcnJvciB9OwpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShp
bnQgc3cKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwg
aW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gs
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAg
IGlmICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKQEAgLTIzNjAsNyArMjM2MCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6c2V0RGlyZWN0aW9uKERpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgbW9kaWZpYWJsZVN0
YXRlKCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmNhbkRyYXdUZXh0KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjYW5EcmF3VGV4dChmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGlmICghZm9udFByb3h5KCktPnJlYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIFN0cmluZyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpub3JtYWxpemVTcGFjZXMoY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY2hhclZlY3RvcikpOwogfQogCi12
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lk
dGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBtYXhXaWR0aCkKIHsKICAgICBpZiAoIWNhbkRyYXdUZXh0KHgsIHksIGZpbGwsIG1heFdp
ZHRoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQyOCw3ICsyNDI4LDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHkKICAgICBkcmF3VGV4dFVuY2hlY2tlZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBt
YXhXaWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1Rl
eHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgZmxvYXQgeCwgZmxvYXQgeSwgYm9v
bCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgp
CiB7CiAgICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgZm9udFByb3h5
ID0gKnRoaXMtPmZvbnRQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDBjOWVkMWNlOTVh
Nzg2YmQ4YmExOWRiMDI5Zjg5M2QzMWE0MmRjOTAuLjU1M2Q4ZTlmN2MzYTgwYjZlZWE2Y2QxNzY1
ZTdhNTgwNGFkNzU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTE0MSwxMSArMTQxLDExIEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJ
bml0JiYpOwogICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFN0
cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQg
c2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKLSAg
ICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4g
YWxwaGEgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAg
ICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7
CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQg
YSk7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsUmVjdChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAgICB2b2lkIHN0cm9r
ZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAKLSAg
ICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBj
b25zdCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9h
dCBhbHBoYSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAK
QEAgLTE5NCw4ICsxOTQsOCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZh
c1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlJiYsIGNvbnN0IFN0cmlu
ZyYgcmVwZXRpdGlvbik7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
SW1hZ2VEYXRhKEltYWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURh
dGE+PiBjcmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4pIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBn
ZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4pIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBj
cmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGdl
dEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIHN0ZDo6b3B0aW9uYWw8
SW1hZ2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURh
dGEmLCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwg
aW50IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBp
bnQgZGlydHlIZWlnaHQpOwogCkBAIC0zMDIsOSArMzAyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
c3RhdGljIFN0cmluZyBub3JtYWxpemVTcGFjZXMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lk
IGRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwotICAgIGJvb2wgY2Fu
RHJhd1RleHQoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4
V2lkdGggPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd1RleHRVbmNoZWNrZWQoY29uc3Qg
VGV4dFJ1biYsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1h
eFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBt
YXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgYm9vbCBjYW5EcmF3VGV4dChmbG9hdCB4LCBm
bG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBmbG9h
dCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
c3RkOjpudWxsb3B0KTsKIAogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuJik7CiAgICAgUmVmPFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dEludGVy
bmFsKGNvbnN0IFN0cmluZyYgdGV4dCk7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgQXBwbHlTaGFkb3cgPSAxIDw8IDEsCiAgICAgICAgIEFwcGx5Q2xpcCA9IDEgPDwgMiwK
ICAgICB9OwotICAgIHZvaWQgZGlkRHJhdyhPcHRpb25hbDxGbG9hdFJlY3Q+LCBPcHRpb25TZXQ8
RGlkRHJhd09wdGlvbj4gPSB7IERpZERyYXdPcHRpb246OkFwcGx5VHJhbnNmb3JtLCBEaWREcmF3
T3B0aW9uOjpBcHBseVNoYWRvdywgRGlkRHJhd09wdGlvbjo6QXBwbHlDbGlwIH0pOworICAgIHZv
aWQgZGlkRHJhdyhzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4sIE9wdGlvblNldDxEaWREcmF3T3B0
aW9uPiA9IHsgRGlkRHJhd09wdGlvbjo6QXBwbHlUcmFuc2Zvcm0sIERpZERyYXdPcHRpb246OkFw
cGx5U2hhZG93LCBEaWREcmF3T3B0aW9uOjpBcHBseUNsaXAgfSk7CiAgICAgdm9pZCBkaWREcmF3
RW50aXJlQ2FudmFzKCk7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRl
eCAwYWNmODk5ODU0M2EwMTBhZTA4MGRkMjNkZWUzMjVhN2FjM2VlNDkwLi5hMjgzNjNmOTJiODE3
NWZkYTlkYWQ3ODdjYWU4OTVlODkxN2VjNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SW52YWxpZD4obV9z
dHlsZSk7IH0KICAgICBib29sIGlzQ3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxDdXJyZW50Q29sb3I+KG1fc3R5bGUpOyB9Ci0gICAgT3B0aW9uYWw8
ZmxvYXQ+IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDdXJyZW50Q29s
b3I+KG1fc3R5bGUpLm92ZXJyaWRlQWxwaGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBv
dmVycmlkZUFscGhhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8Q3VycmVudENvbG9yPihtX3N0
eWxlKS5vdmVycmlkZUFscGhhOyB9CiAKICAgICBTdHJpbmcgY29sb3IoKSBjb25zdDsKICAgICBS
ZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNhbnZhc0dyYWRpZW50KCkgY29uc3Q7CkBAIC02Nyw3ICs2
Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEludmFsaWQgeyB9OwogCiAgICAgc3RydWN0IEN1
cnJlbnRDb2xvciB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhOwogICAgIH07CiAKICAgICBD
YW52YXNTdHlsZShDdXJyZW50Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggYmFhZTMyYjIwNDlkN2Y4ZDUzZDYzZmFmN2UwYWQ2MTMwY2Y1NjNiNi4uMTRkYTAwOWE4
NDI2ZWQ5NGQwMmE5MTBjMzI2OTAxMTAzNTdkZGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBhdXRvIE9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Zm9udFByb3h5KCkgLT4gY29uc3QgRm9udFByb3h5KiB7CiAgICAgcmV0
dXJuICZzdGF0ZSgpLmZvbnQ7CiB9CiAKLXZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9w
dGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0KHRleHQsIHgsIHks
IHRydWUsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBP
cHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHks
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0KHRleHQsIHgs
IHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4
IDQxM2RlOTIyOTk3OGU4ZjZlYWUxOGQ5MTk2MGZiYjY4YzQyMGU2NGEuLjhkODRmMWQ4NjQ4ZGMy
NjNiNjJkMDc0NzNlYTc4NDE0ZDc2NmE0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJp
bmcmKTsKICAgICBDYW52YXNEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBm
aWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZs
b2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRo
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51
bGxvcHQpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgs
IGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsK
ICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5jcHAKaW5kZXggNGIzYTQxOTY4ZTM1NDI5Njk2NjY4MDEyMDM5ZjFmZTcxYWY1
MDExMy4uYTU1YTBjYWQwMzE4NDYzYzVkNTZjZDEzYmM1YjlhZDgzZDMxNTBiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UoUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNw
YWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSkKK3N0ZDo6b3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVm
aW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQog
ewogICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQog
ICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAppbmRleCAyYTUzYjA1
MzJkNDJhM2MyOWYyMzc3YjA5YjdiYjAwMDFkZjk3YzQ2Li5mODFlZGYwNjdjMjhmMjdkNmU3NDRk
MWE2OGY2ZDA3OWU2YjYzYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1ByZWRlZmluZWRDb2xvclNwYWNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVk
ZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5l
ZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJik7CitzdGQ6Om9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmlu
ZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggNDQ3YzEyMGFkMTQyOGU2MzljYmMyNTU4ZmM2M2ZkOWE4Y2UyMWVjNS4uMmIxYjBm
MWVlY2I1MTUzZWViNTI5YmM3OTQ5Y2FhM2EzYTg1NzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEwOTQs
NyArMTA5NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtCiAgICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIFdURk1vdmUoZGF0YSkpOwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+IGRhdGEp
CitFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJj
ZT4gZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgV1RGTW92
ZShzcmNEYXRhKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBPcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBkYXRhKQorRXhjZXB0aW9uT3I8dm9pZD4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYgZGF0YSkK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMjUxNiw3ICsyNTE2LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGkKICAgICB9CiB9
CiAKLU9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG5hbWVzKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoImdldFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lv
bnMoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZwogICAg
IGF1dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsK
ICAgICBBU1NFUlQoYnVmZmVyKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtYXhJbmRleCA9
IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hl
ZE1heEluZGV4KHR5cGUpOwogICAgIGlmICghbWF4SW5kZXgpIHsKICAgICAgICAgLy8gQ29tcHV0
ZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0aGUgZW50aXJlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuIHR5
cGUgb2YgaW5kZXguCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzQzNCw3ICszNDM0LDcg
QEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW4KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVHlwZWRBcnJheVR5cGU+Ci1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCitzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUs
IFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKICAgICBDaGVja2VkPEdDR0xzaXpl
aSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHZhbHVlcy5sZW5ndGgoKSk7CiAgICAgY2hl
Y2tlZFNpemUgLT0gc3JjT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgwZTExZGJmNTA3YTJmY2VkYmNjZTRj
ODIxMmMxNjE0Y2Y5YmM1ZGQuLmEyYjAyZjNmMmQ3MDEyMGNjZDY3MzAwMjdlZTYzMzBkMTlkNmIz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgLy8gTXVzdCBvdmVy
cmlkZSB0aGUgV2ViR0wgMS4wIHNpZ25hdHVyZXMgdG8gYWRkIGV4dHJhIHZhbGlkYXRpb24uCiAg
ICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNl
Pikgb3ZlcnJpZGU7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+KSBvdmVy
cmlkZTsKICAgICAvLyBXZWJHTCAyLjAgZW50cnkgcG9pbnRzOgogICAgIHZvaWQgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdl
U291cmNlJiYpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNdXN0IG92ZXJy
aWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIHRvIGFkZCBleHRyYSB2YWxpZGF0aW9uLgogICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdl
U291cmNlPiYmKSBvdmVycmlkZTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxU
ZXhJbWFnZVNvdXJjZT4mJikgb3ZlcnJpZGU7CiAgICAgLy8gV2ViR0wgMi4wIGVudHJ5IHBvaW50
czoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
cGJvT2Zmc2V0KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBXZWJHTEJ1ZmZlciopOwogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiwgR0NHTGludDY0IG9mZnNldCwgR0NHTGlu
dDY0IHNpemUpOwogICAgIFdlYkdMQW55IGdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMdWludCBpbmRleCk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEdDR0x1aW50Pj4gZ2V0
VW5pZm9ybUluZGljZXMoV2ViR0xQcm9ncmFtJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZv
cm1OYW1lcyk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBnZXRVbmlmb3Jt
SW5kaWNlcyhXZWJHTFByb2dyYW0mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVz
KTsKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mLCBjb25zdCBW
ZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpOwogICAgIEdD
R0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFdlYkdMUHJvZ3JhbSYsIGNvbnN0IFN0cmluZyYg
dW5pZm9ybUJsb2NrTmFtZSk7CiAgICAgV2ViR0xBbnkgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFy
YW1ldGVyKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIHZlcnRleEFycmF5KTsKICAgICAKICAgICBX
ZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
IGZpbmFsOwogICAgIFdlYkdMQW55IGdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIGluIG9yZGVy
IHRvIGFkZCBleHRyYSB2YWxpZGF0aW9uLgpAQCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW51bSBtb2RlKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGNhcCkgZmluYWw7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+Ci0gICAgT3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBH
Q0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVlcywgR0NH
THVpbnQgc3JjT2Zmc2V0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2
YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVm
ZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09m
ZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRhcmdl
dCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0RnJhbWVidWZmZXJCaW5kaW5nKEdD
R0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0UmVhZEZyYW1l
YnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwCmluZGV4IDNlMzRhMThmN2Y2ZjY5NGU0Y2FmZWU1ZTExNTM3ZmY1NDA1NmFlMGQu
LjNlMzJmMTUxNjY1Y2JmYTg0MGM1ZjVkMjMxZTg5Yjg1ZTZkMDQxOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBHQ0dM
c2l6ZWlwdHIgV2ViR0xCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2J5
dGVMZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVk
TWF4SW5kZXgoR0NHTGVudW0gdHlwZSkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFdlYkdMQnVm
ZmVyOjpnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKQogewogICAgIGZvciAoYXV0byYg
Y2FjaGUgOiBtX21heEluZGV4Q2FjaGUpIHsKICAgICAgICAgaWYgKGNhY2hlLnR5cGUgPT0gdHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDFlNmJhNzg2
MzlmZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQuLjM0OTBhMWRkM2Q2ODI0ODUzZmMxNGVi
MjVjZmIxM2U5YjlkYjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFy
cmF5QnVmZmVyOyB9CiAKICAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUg
Z2l2ZW4gdHlwZSBpZiBvbmUgaGFzIGJlZW4gc2V0LgotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBn
ZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKTsKICAgICAvLyBTZXRzIHRoZSBj
YWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4KICAgICB2b2lkIHNldENhY2hlZE1h
eEluZGV4KEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZmE2
NzU4M2RlM2EyMDZiMTA4Y2E0MDI3NjlhN2JjZTU2ZDJkMGI1ZC4uNGE1Mjc2NjAzZmI5ZTE2ZmYw
YjJiZDlhY2NiNDUzNjgwZDVhNjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgV2Vi
R0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCitz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MDMsNyArNDAzLDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBl
LCB1bnNpZ24KICAgICBhdXRvIGJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFy
cmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUp
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1heEluZGV4ID0gZWxlbWVudEFycmF5QnVm
ZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKICAgICBpZiAoIW1heEluZGV4KSB7CiAgICAg
ICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIgZm9y
IHRoZSBnaXZlbiB0eXBlIG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggYTcxMGEwZjFlNjI5ODJlYjIwYzA3OTU4OWZlNjU0MmZlZWVjZmZmZS4uMDFkZTczODdhZTUx
ODM5ODliNmEzZWI3ODVkMmIxNjdkM2I4MWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwot
ICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucygpIGZpbmFsOwogCiAgICAgV2ViR0xBbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5h
bWUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDFjYWYwNDZhNTEwNTRmOTcwOTQwM2Nl
NmVjYzZhM2QzNWRmZGI5MDYuLmNkZTdlODBjMmQ2OGI5OGE4NGNmM2MxYTNmZDhhMTdkNzgwNDhk
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMjM2LDcgKzEyMzYsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICBt
X2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCpiYXNlLmJ1ZmZlcigpKTsK
IH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9Q
aXhlbEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzaXplLCBHQ0dMCiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYm
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNl
PiYmIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4NjYsNyArMjg2Niw3IEBAIFJlZlB0cjxXZWJH
TEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0o
V2ViR0xQcm9ncmFtCiAgICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFt
ZSwgaW5mby50eXBlLCBpbmZvLnNpemUpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8UmVmUHRyPFdl
YkdMU2hhZGVyPj4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVy
cyhXZWJHTFByb2dyYW0mIHByb2dyYW0pCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2Vi
R0xTaGFkZXI+Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJz
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoImdldEF0dGFjaGVkU2hhZGVycyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTI5MzgsNyArMjkzOCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CiB9CiAKLU9wdGlv
bmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dENvbnRleHRBdHRyaWJ1dGVzKCkKK3N0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRl
cz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC00Mjc1LDcgKzQyNzUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAg
IC8vIEFOR0xFIHdpbGwgdmFsaWRhdGUgdGhlIHJlYWRiYWNrIGZyb20gdGhlIGZyYW1lYnVmZmVy
IGFjY29yZGluZwogICAgIC8vIHRvIFdlYkdMJ3MgcmVzdHJpY3Rpb25zLiBBdCB0aGlzIGxldmVs
LCBqdXN0IHZhbGlkYXRlIHRoZSB0eXBlCiAgICAgLy8gb2YgdGhlIHJlYWRiYWNrIGFnYWluc3Qg
dGhlIHR5cGVkIGFycmF5J3MgdHlwZS4KLSAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBl
KCJyZWFkUGl4ZWxzIiwgdHlwZSwgT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxz
LmdldFR5cGUoKSkpKQorICAgIGlmICghdmFsaWRhdGVBcnJheUJ1ZmZlclR5cGUoInJlYWRQaXhl
bHMiLCB0eXBlLCBzdGQ6Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy5nZXRU
eXBlKCkpKSkKICAgICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBHQ0dMZW51bSBpbnRlcm5hbEZv
cm1hdCA9IDA7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQwog
ICAgIHRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25JRDo6VGV4
U3ViSW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0
LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCBXVEZNb3ZlKHBpeGVscyksIE51bGxOb3RBbGxv
d2VkLCAwKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmIHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmIHNv
dXJjZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtNTI0OCw3ICs1MjQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0wKICAg
ICByZXR1cm4gdGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJ
bWFnZTJELCB0YXJnZXQsIGxldmVsLCAwLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZz
ZXQsIDAsIHNlbnRpbmVsRW1wdHlSZWN0KCksIDEsIDAsIFdURk1vdmUoKnNvdXJjZSkpOwogfQog
Ci1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBl
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdHlwZSwgT3B0aW9uYWw8SlNDOjpU
eXBlZEFycmF5VHlwZT4gYXJyYXlUeXBlKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xl
bnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4gYXJyYXlUeXBlKQog
ewogI2RlZmluZSBUWVBFX1ZBTElEQVRJT05fQ0FTRShhcnJheVR5cGVNYWNybykgaWYgKGFycmF5
VHlwZSAmJiBhcnJheVR5cGUudmFsdWUoKSAhPSBKU0M6OmFycmF5VHlwZU1hY3JvKSB7IFwKICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09Q
RVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCAiICNhcnJheVR5cGVN
YWNybyk7IFwKQEAgLTUzMTQsNyArNTMxNCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFRlCiAK
ICAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1hdChmdW5jdGlvbk5hbWUs
IGZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXZhbGlkYXRlQXJyYXlC
dWZmZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gT3B0aW9uYWw8SlNDOjpUeXBl
ZEFycmF5VHlwZT4ocGl4ZWxzLT5nZXRUeXBlKCkpIDogc3RkOjpudWxsb3B0KSkKKyAgICBpZiAo
IXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gc3Rk
OjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPihwaXhlbHMtPmdldFR5cGUoKSkgOiBzdGQ6
Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1bnNpZ25lZCB0b3RhbEJ5
dGVzUmVxdWlyZWQsIHNraXBCeXRlczsKQEAgLTU3MjQsNyArNTcyNCw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHCiAjZW5kaWYKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IE9wdGlvbmFsPFRleEltYWdlU291cmNlPiBzb3VyY2UpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4gc291cmNlKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC03MTcw
LDcgKzcxNzAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ2Fw
YWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+Ci1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBU
Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRM
aXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNv
bnN0IFQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxU
eXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAgICBpZiAoIXZhbGlkYXRl
VW5pZm9ybUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtNzIwMiwxMyArNzIwMiwxMyBAQCBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYQogfQog
CiB0ZW1wbGF0ZQotT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50
LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQz
MkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworc3RkOjpvcHRpb25hbDxHQ0dM
U3Bhbjxjb25zdCBHQ0dMdWludD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTHVpbnQsIFVpbnQzMkFycmF5Pihjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VWludDMyQXJyYXksIHVpbnQzMl90PiYgdmFsdWVz
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCk7CiAKIHRlbXBsYXRlCi1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1l
dGVyczxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBl
ZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWlu
U2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworc3RkOjpvcHRp
b25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZh
bHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpOwogCiB0ZW1wbGF0ZQotT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsK
K3N0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZs
b2F0MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEZsb2F0MzJB
cnJheSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKIAogV2ViR0xCdWZmZXIqIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHVzYWdlKQogewpAQCAt
NzQxNSw3ICs3NDE1LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVNpbXVsYXRlZFZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGUKICAgICByZXR1cm4gIWJ1
ZmZlckRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSAmJiBidWZmZXJEYXRhU2l6ZS51bnNhZmVHZXQo
KSA+IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNp
bXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZXgpCitzdGQ6Om9wdGlvbmFsPGJv
b2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dM
dWludCBudW1WZXJ0ZXgpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2RiNDkxZTZkODRmNTZmYzA4MjYyMTBhM2Uz
ZDk2MDIyYzllMWNlNS4uOTJjMTU2MmRlMjQ1OWJjZDljYTA1ZjE3NzMwYjhlYjJkZTYxYjIzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEJ1
ZmZlckRhdGFTb3VyY2UgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEFycmF5QnVmZmVyPiwgUmVmUHRy
PEFycmF5QnVmZmVyVmlldz4+OwogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBzaXplLCBHQ0dMZW51bSB1c2FnZSk7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNh
Z2UpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8
QnVmZmVyRGF0YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNhZ2UpOwogICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEJ1ZmZlckRhdGFTb3VyY2Um
Jik7CiAKICAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdl
dCk7CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2ViR0xBY3Rp
dmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgaW5kZXgpOwog
ICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFt
JiwgR0NHTHVpbnQgaW5kZXgpOwotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFk
ZXI+Pj4gZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSYpOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+PiBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQ
cm9ncmFtJik7CiAgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdlYkdMQW55IGdldEJ1ZmZlclBhcmFtZXRlcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKTsKLSAgICBPcHRpb25hbDxXZWJHTENvbnRleHRB
dHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
R0xDb250ZXh0QXR0cmlidXRlcz4gZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51
bSBnZXRFcnJvcigpOwogICAgIHZpcnR1YWwgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdMQW55IGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAg
IFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyJik7CiAgICAgUmVmUHRyPFdlYkdM
U2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0g
c2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSk7CiAgICAgU3RyaW5nIGdldFNoYWRl
clNvdXJjZShXZWJHTFNoYWRlciYpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZp
cnR1YWwgV2ViR0xBbnkgZ2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpOwogICAgIFdlYkdMQW55IGdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiwgY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24mKTsKICAgICBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdl
dFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25zdCBTdHJpbmcmKTsKQEAgLTI4NCwx
NCArMjg0LDE0IEBAIHB1YmxpYzoKICAgICB1c2luZyBUZXhJbWFnZVNvdXJjZSA9IFdURjo6VmFy
aWFudDxSZWZQdHI8SW1hZ2VCaXRtYXA+LCBSZWZQdHI8SW1hZ2VEYXRhPiwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCi0gICAg
dmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+KTsKKyAgICB2aXJ0dWFsIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBz
dGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPik7CiAKICAgICB2b2lkIHRleFBhcmFtZXRlcmYo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKTsKICAgICB2
b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCBwYXJhbSk7CiAKICAgICAvLyBUaGVzZSBtdXN0IGJlIHZpcnR1YWwgc28gbW9yZSB2YWxpZGF0
aW9uIGNhbiBiZSBhZGRlZCBpbiBXZWJHTCAyLjAuCiAgICAgdmlydHVhbCB2b2lkIHRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpOwotICAg
IHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsKKyAg
ICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYm
KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBlZEFycmF5LCBjbGFzcyBEYXRhVHlwZT4KICAg
ICBjbGFzcyBUeXBlZExpc3QgewpAQCAtMzkxLDcgKzM5MSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiAKICAg
ICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYpOwogICAgIHZvaWQg
cmVtb3ZlQ29udGV4dE9iamVjdChXZWJHTENvbnRleHRPYmplY3QmKTsKQEAgLTEwMjksMTIgKzEw
MjksMTIgQEAgcHJvdGVjdGVkOgogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBp
bnB1dCBwYXJhbWV0ZXJzIGZvciB1bmlmb3JtIGZ1bmN0aW9ucy4KICAgICBib29sIHZhbGlkYXRl
VW5pZm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExp
c3RUeXBlPgotICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVl
cywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NH
THVpbnQgc3JjTGVuZ3RoID0gMCkKKyAgICBzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRM
aXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQg
c3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRp
b24sIGZhbHNlLCB2YWx1ZXMsIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
OwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBl
PgotICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RU
eXBlLCBUPiYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCA9
IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApOworICAgIHN0ZDo6b3B0aW9uYWw8R0NHTFNwYW48
Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0g
MCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3Ig
YnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRh
cmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpAQCAtMTA3Nyw3ICsxMDc3LDcg
QEAgcHJvdGVjdGVkOgogI2lmICFVU0UoQU5HTEUpCiAgICAgLy8gSGVscGVycyBmb3Igc2ltdWxh
dGluZyB2ZXJ0ZXhBdHRyaWIwLgogICAgIHZvaWQgaW5pdFZlcnRleEF0dHJpYjAoKTsKLSAgICBP
cHRpb25hbDxib29sPiBzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGV4KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBu
dW1WZXJ0ZXgpOwogICAgIGJvb2wgdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKEdDR0x1
aW50IG51bVZlcnRleCk7CiAgICAgdm9pZCByZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIw
U2ltdWxhdGlvbigpOwogI2VuZGlmCkBAIC0xMTEzLDEwICsxMTEzLDEwIEBAIHByb3RlY3RlZDoK
ICAgICBPZmZzY3JlZW5DYW52YXMqIG9mZnNjcmVlbkNhbnZhcygpOwogI2VuZGlmCiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIE9wdGlvbmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0
aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVl
LCBUIGFkZCwgVCBtdWx0aXBseSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVuc2lnbmVk
IGdldE1heEluZGV4KGNvbnN0IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBlbGVtZW50QXJyYXlC
dWZmZXIsIEdDR0xpbnRwdHIgdW9mZnNldCwgR0NHTHNpemVpIG4pOwogCi0gICAgYm9vbCB2YWxp
ZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHR5
cGUsIE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKKyAgICBib29sIHZhbGlkYXRlQXJy
YXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdHlwZSwgc3Rk
OjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZVRhc2tUb0Rpc3BhdGNoQ29udGV4dExvc3RFdmVudCgpOwpAQCAtMTEzOCw3ICsxMTM4
LDcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIE9wdGlv
bmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShU
IHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFk
ZCwgVCBtdWx0aXBseSkKIHsKICAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBjaGVja2Vk
UmVzdWx0ID0gQ2hlY2tlZDxUPih2YWx1ZSk7CiAgICAgY2hlY2tlZFJlc3VsdCArPSBDaGVja2Vk
PFQ+KGFkZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKaW5kZXggYmNmZjhhN2VjYmMxMDI5OWQ0ZjkxZDQ3MDU1NjAzMzRhYmY4
YTUzMi4uNDk4MGY0NWQ3NjcyMmQ0ZDFkMzNkYTQ5MGJiM2I4MWFiMDNkNjY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApA
QCAtNzIyLDcgKzcyMiw3IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFja0l0CiAgICAgcmV0dXJuIEhU
TUxTdGFja0l0ZW06OmNyZWF0ZShjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9rZW4pLCBXVEZNb3Zl
KGZha2VUb2tlbiksIGl0ZW0ubmFtZXNwYWNlVVJJKCkpOwogfQogCi1PcHRpb25hbDx1bnNpZ25l
ZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVt
ZW50KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTczMiw3ICs3MzIsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gSFRNTENv
bnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgYwog
ICAgICAgICBjb25zdCBhdXRvJiBlbnRyeSA9IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmF0
KGluZGV4KTsKICAgICAgICAgaWYgKGVudHJ5LmlzTWFya2VyKCkgfHwgbV9vcGVuRWxlbWVudHMu
Y29udGFpbnMoZW50cnkuZWxlbWVudCgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RV
bm9wZW5FbGVtZW50SW5kZXggPSBpbmRleCArIDE7Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RV
bm9wZW5FbGVtZW50SW5kZXggPCBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5zaXplKCkgPyBm
aXJzdFVub3BlbkVsZW1lbnRJbmRleCA6IE9wdGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVG
b3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAoaW5kZXgpOwogCkBAIC03NDEsNyArNzQxLDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGMK
IAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0
aW5nRWxlbWVudHMoKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFVub3BlbkVsZW1l
bnRJbmRleCA9IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCk7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPSBpbmRleE9mRmly
c3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpOwogICAgIGlmICghZmlyc3RVbm9wZW5FbGVtZW50
SW5kZXgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggYzA4ZDY2N2Y3YzgxMmNhM2JlYmJkYTNl
OTA4OTY4MTE3NWZhZDA4YS4uNTczMWZiMDVhMjRjZmNjYjJiNDg0NTQ0MzEyYWNkZDhiMzViYjk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRm9zdGVy
UGFyZW50KCkgY29uc3Q7CiAgICAgdm9pZCBmb3N0ZXJQYXJlbnQoUmVmPE5vZGU+JiYpOwogCi0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXhPZkZpcnN0VW5vcGVu
Rm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAKICAgICB2b2lkIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3Mo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
aW5kZXggYzkxNzJjMGE0ZjIxMjRmOWYxYzhjMWRhYzAwNWI2M2ZmN2M1MTE1OS4uYzQzYjIxOTU2
MGRjYmU1YjRiMjFjOTlmNGJhYmNmOTZiYzkxMGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBFeHBl
Y3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihTdHJpbmdWaQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5
cGUqIGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdh
dGl2ZUludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogZW5kKQogewogICAgIC8vIEEgc3RyaW5nIGlzIGEgdmFsaWQgbm9uLW5l
Z2F0aXZlIGludGVnZXIgaWYgaXQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgQVNDSUkgZGlnaXRz
LgogICAgIGZvciAoYXV0byogYyA9IHBvc2l0aW9uOyBjIDwgZW5kOyArK2MpIHsKQEAgLTIzNiw3
ICsyMzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cAogfQogCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRpdmUtaW50ZWdlcgotT3B0aW9uYWw8aW50
PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQorc3Rk
OjpvcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1Zp
ZXcgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxp
ZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNl
VmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApA
QCAtMjYyLDExICsyNjIsMTEgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhU
TUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGUKIAogICAgIHNpemVf
dCBwYXJzZWRMZW5ndGggPSAwOwogICAgIGRvdWJsZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3Np
dGlvbiwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgpOwotICAgIHJldHVybiBwYXJzZWRMZW5ndGggPT0g
bGVuZ3RoICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSA/IG51bWJlciA6IE9wdGlvbmFsPGRvdWJs
ZT4oKTsKKyAgICByZXR1cm4gcGFyc2VkTGVuZ3RoID09IGxlbmd0aCAmJiBzdGQ6OmlzZmluaXRl
KG51bWJlcikgPyBudW1iZXIgOiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4oKTsKIH0KIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1P
cHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdW
aWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQ
b2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggNTM4NWM5NjUyNjE3NjkyZGY2NjJjYjgxZjVm
ZTg4MTkxYjljZTE2YS4uYWRmMThjMTRkZmM1NDBmNzc1NjcyMmU0ZDBkNzMxYmEwNzk1MTIzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAt
NjgsMTAgKzY4LDEwIEBAIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPGludCwgSFRNTEludGVnZXJQ
YXJzaW5nRXJyb3I+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmllCiBXRUJDT1JFX0VYUE9SVCBF
eHBlY3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy8jdmFsaWQtbm9uLW5lZ2F0aXZlLWludGVnZXIKLU9wdGlvbmFsPGludD4gcGFyc2VWYWxp
ZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPGludD4g
cGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWZsb2F0aW5nLXBvaW50LW51bWJlcgotT3B0
aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmll
dyk7CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVt
YmVyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLWZsb2F0aW5nLXBvaW50
LW51bWJlci12YWx1ZXMKIFZlY3Rvcjxkb3VibGU+IHBhcnNlSFRNTExpc3RPZk9mRmxvYXRpbmdQ
b2ludE51bWJlclZhbHVlcyhTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGI3MWYxYjRlNGIwMzNmMjZhMmIz
OTcxYmQ4ZDhjMTc0ZWMzYjE0YTIuLjk0ODE5ZWNlZTllNzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1
NGUyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBt
X2NoYXJzZXQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJl
c291cmNlVHlwZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlw
ZT4gcmVzb3VyY2VUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90YWdJZCkg
ewogICAgICAgICBjYXNlIFRhZ0lkOjpTY3JpcHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmluZGV4IGRlZGQzYmZhNDFkZTU4MDBmMDhmNDlk
OWRlOTExNzNmMGJmZjM2OWMuLjYwNjIwZjU2YzRlYjhmMDRiNDNkZjJlMTUxOGE0ZjZmNmJkOTc5
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIu
Y3BwCkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBzdGF0aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZl
Y3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAg
ICBpZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3gnKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBkZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGRlc2NyaXB0b3Ip
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlbnNpdHkgPSBwYXJzZVZhbGlk
SFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIWRl
bnNpdHkgfHwgZGVuc2l0eS52YWx1ZSgpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0RGVuc2l0eShkZW5zaXR5LnZhbHVlKCkpOwogICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3JDaGFyID09ICd3JykgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8aW50PiByZXNvdXJjZVdpZHRo
ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzb3VyY2VXaWR0aCA9IHBhcnNlVmFsaWRIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZVdp
ZHRoIHx8IHJlc291cmNlV2lkdGgudmFsdWUoKSA8PSAwKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIHJlc3VsdC5zZXRSZXNvdXJjZVdpZHRoKHJlc291cmNlV2lk
dGgudmFsdWUoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXNjcmlw
dG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IK
ICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUgJ2gnIGRlc2NyaXB0b3IgaXMgbm90IHVz
ZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVp
Z2h0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9u
YWw8aW50PiByZXNvdXJjZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHJlc291cmNlSGVp
Z2h0ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CiAgICAg
ICAgICAgICBpZiAoIXJlc291cmNlSGVpZ2h0IHx8IHJlc291cmNlSGVpZ2h0LnZhbHVlKCkgPD0g
MCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0
UmVzb3VyY2VIZWlnaHQocmVzb3VyY2VIZWlnaHQudmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggZWRkMGMx
ODE5MDlhMWQ2YzgzZDE3MjE0YWYzODVhYzFkYjEyYTI0OS4uYzM2Mzc4MmYwNGY1ZmZiMmM5Y2Jl
NTc5ZjEzNjdlNWQ0ZDE5NGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIERhdGVU
aW1lRmllbGRFbGVtZW50Ojppbml0aWFsaXplKGNvbnN0IEF0b21TdHJpbmcmIHBzZXVkbykKICAg
ICBzZXRQc2V1ZG8ocHNldWRvKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6
Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1lRmllbGRFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVz
b2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50U3R5bGUucmVuZGVyU3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1l
bnQuaAppbmRleCBlYmQwYTc5MTc2YWViOTFkODMxNTZkMTlmMmYzMmM3YjlkODZhNGZmLi4zNjM4
MWY5NGMxNjI4NjQwZmFmODA2Mzc1MzgxZDFhYTU2MGE1MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoRXZlbnQmKTsK
IAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKIAogICAgIGJv
b2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA1NzUyZTc5NzQ5ZGJj
YzAxZWI3NGIzZmI4MzI2MzdlMmViMmMwNzg0Li4yOTgwYTEzMzczYzk2NmEyZGU5ZjkzNDBmZjZh
ZmQ4YzAxYjA4NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxl
bWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9p
bnQpCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgY29uc3QgTGF5b3V0VW5pdCBz
bmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVyVGlja1NuYXBwaW5n
VGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkgewotICAgICAgICBp
ZiAoT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdCA9IGlucHV0LT5maW5kQ2xvc2VzdFRpY2tNYXJr
VmFsdWUodmFsdWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nl
c3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKSkgewogICAgICAgICAg
ICAgZG91YmxlIGNsb3Nlc3RGcmFjdGlvbiA9IHN0ZXBSYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVl
KCpjbG9zZXN0KS50b0RvdWJsZSgpOwogICAgICAgICAgICAgZG91YmxlIGNsb3Nlc3RSYXRpbyA9
IGlzVmVydGljYWwgfHwgIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyAxLjAgLSBjbG9zZXN0RnJh
Y3Rpb24gOiBjbG9zZXN0RnJhY3Rpb247CiAgICAgICAgICAgICBMYXlvdXRVbml0IGNsb3Nlc3RQ
b3NpdGlvbiB7IHRyYWNrTGVuZ3RoICogY2xvc2VzdFJhdGlvIH07CkBAIC01ODUsNyArNTg1LDcg
QEAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0
KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9z
dCgpKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSogaG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlk
ZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVh
bGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNl
dWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjM5LDcgKzYzOSw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNs
aWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8U3R5
bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0
ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUq
IGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHls
ZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0
IHN0eWxlIGlzIGtub3duLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCmluZGV4IDA2YWJiZjk2NzAwZDFkZGRhMTZkNTUyM2U1NTAwMjNjNTJh
MDYwZWEuLmIzY2RlYmE1NjdlOTVmOTViZjRmODlhZDk1M2Y1ZDJkMmNjMzYzYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC03NSw3
ICs3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMo
KSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0
IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0
YXJ0RHJhZ2dpbmcoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
KikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFs
OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc1NsaWRlckNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGE0OWJjOTAwMGQ5NjFjZWQ5OTA5ZmZjNWYyYjYx
YWNhYmQ4ODZjMWUuLjkzMzQ3MjI2ZTk2ZjIxOTdjNWY1NmVkNzI2MTE0NjY5YmIxMGE3ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJv
bmdQYXNzd29yZFRleHRGaWVsZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBp
czxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PihlbGVtZW50KS0+aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpOwogfQogCi1PcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9s
SW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9
IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogICAgIGlmIChpc1N0cm9uZ1Bhc3N3b3JkVGV4
dEZpZWxkKHNoYWRvd0hvc3QoKSkpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBSZWY8VGV4dENvbnRy
b2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDb250cm9sSW5uZXJFbGVt
ZW50KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRD
b250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHls
ZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogICAg
IG5ld1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsKQEAgLTE4Nyw3ICsxODcs
NyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29u
dHJvbElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0KIAotT3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hh
ZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHls
ZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5j
cmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkgfTsKQEAgLTIwOSw3ICsyMDksNyBA
QCBSZWY8VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xk
ZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbgogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1PcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFk
b3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5
bGUpOwogCkBAIC0yMzksNyArMjM5LDcgQEAgUmVmPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQ+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2MKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBpbnB1dCA9IG1h
a2VSZWZQdHIoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKSk7CiAgICAg
aWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkgPj0gMCkKQEAgLTMwNiw3ICszMDYsNyBA
QCBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bQogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1PcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2VhcmNo
RmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgYXV0byBlbGVt
ZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBhdXRvJiBpbnB1dEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqc2hhZG93SG9zdCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKaW5kZXggNDVmZjg0ODNjMTBlMWNhZmFhNzk1NTM2ZmE1NzA4ZDJmYjM1YWEzNy4uN2MzMmJi
NGEyMTc3NzBjMTRmNjIxZTI0Y2ZkYmI2YjBhN2M3MTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
KERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93
SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsKIAogY2xhc3Mg
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIH07CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYp
OwogICAgIAotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBz
aGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBj
bGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
aXZFbGVtZW50IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBib29sIGlzTW91
c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBib29sIG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlIHsgdHJ1ZSB9OwpAQCAtMTI1LDcg
KzEyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25F
bGVtZW50KERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxl
PiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwCmluZGV4IGI1OGZkMzhjMDRhMGY1
ZGE1OTU4ZDVmOTU0YjZmNTRjYTcxMDAwNDMuLjc4OGE5NzI2ZTJmZDllYjBlODNiMGI0ZDNhMzc1
MzFiYjc0OGE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVy
ZWRMaW5lUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVk
TGluZVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1PcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4dExpbmUoKQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4dExpbmUoKQogewogICAgIGlm
IChtX21heWJlU2tpcExGKSB7CiAgICAgICAgIC8vIFdlIHJhbiBvdXQgb2YgZGF0YSBhZnRlciBh
IENSIChVKzAwMEQpLCB3aGljaCBtZWFucyB0aGF0IHdlIG1heSBiZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmgKaW5kZXggMWEyMTFjOTU0ZmZhNDBm
MTc1YmUwNzUzZWRmOWZhZGY3MjExNjJkNS4uOTMzNGFlNzNlZmU5YjMyOWE5OGZmZGZjODhkMjJl
ZTIyMGQ0NDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJl
ZExpbmVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGlu
ZVJlYWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEVuZE9m
U3RyZWFtKCkgeyBtX2VuZE9mU3RyZWFtID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNBdEVuZE9mU3Ry
ZWFtKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZlN0cmVhbSAmJiBtX2J1ZmZlci5pc0VtcHR5KCk7
IH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbmV4dExpbmUoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbmV4dExpbmUoKTsKIAogcHJpdmF0ZToKICAgICBTZWdtZW50ZWRTdHJpbmcgbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA4YWVkZmIwYmE4
MDhjNzA4OGJiYzZkYzdiYmRmZWI0NGNmNTkwNmY0Li45YTUzMzQ4NDIyZWJkYTkxOGJmYTNmYjVj
MTBlNjM5NTFmYTgxNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+JiBzdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldHM7IH0KKyAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgc3R5bGVTaGVldHMoKSBjb25z
dCB7IHJldHVybiBtX3N0eWxlU2hlZXRzOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHVy
Z2VDdWVzRnJvbVVuYnVmZmVyZWRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVDdWVzTm90SW5UaW1lUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdl
cyYpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEtpbmQoS2lu
ZCk7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwotICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IG1fc3R5bGVTaGVldHM7CiAKIHByaXZhdGU6CiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJh
Y2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KQEAgLTE3Myw4ICsxNzMsOCBAQCBwcml2YXRl
OgogICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3Ry
YWNrVHlwZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVk
IH07Ci0gICAgT3B0aW9uYWw8aW50PiBtX3RyYWNrSW5kZXg7Ci0gICAgT3B0aW9uYWw8aW50PiBt
X3JlbmRlcmVkVHJhY2tJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV90cmFja0luZGV4
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX3JlbmRlcmVkVHJhY2tJbmRleDsKICAgICBib29s
IG1faGFzQmVlbkNvbmZpZ3VyZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tFdmVudC5jcHAKaW5kZXggODYwOWY4ZmExNGYwNTU0ZDlkZDkxZDY5YzUyMjRm
ZDI3ZTQ5MDNhYS4uN2M5Y2Y5NzhlMjFlMjQ5NTdhOWZkYzc1ZTAxMTAwZjYxYzgxZDFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRyYWNr
RXZlbnQpOwogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFRyYWNrRXZlbnQ6OlRyYWNrRXZlbnRU
cmFjaz4gY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCitz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VHJhY2tFdmVudDo6VHJhY2tFdmVudFRyYWNrPiBj
b252ZXJ0VG9UcmFja0V2ZW50VHJhY2soUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKIHsKICAgICBz
d2l0Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNlIFRyYWNrQmFzZTo6QmFzZVRyYWNrOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAppbmRleCAzM2VkNjc0ZDBkODhjMjQ3
MTBkNDAzODY1OWM0YTFhMjU5ZjI3YTcwLi5mN2NlMDc0MWQxNjljYmYwY2RiOGZlMTQ4ZDVlMWZj
ZTZkZDc4ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHJhY2tFdmVudFRyYWNrID0gVmFyaWFudDxS
ZWZQdHI8VmlkZW9UcmFjaz4sIFJlZlB0cjxBdWRpb1RyYWNrPiwgUmVmUHRyPFRleHRUcmFjaz4+
OwogCiAgICAgc3RydWN0IEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICAgICAgT3B0aW9u
YWw8VHJhY2tFdmVudFRyYWNrPiB0cmFjazsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFja0V2
ZW50VHJhY2s+IHRyYWNrOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFRyYWNrRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrRXZlbnQodHlwZSwgV1RGTW92ZShpbml0
aWFsaXplciksIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRU
cmFjaz4gdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3RyYWNrOyB9CisgICAgc3RkOjpvcHRpb25h
bDxUcmFja0V2ZW50VHJhY2s+IHRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFjazsgfQogCiBw
cml2YXRlOgogICAgIFRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxl
LCBJc0NhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYpOwpAQCAtNjMsNyArNjMsNyBAQCBwcml2
YXRlOgogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gbV90cmFjazsKKyAgICBzdGQ6Om9w
dGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gbV90cmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNDQ4M2RmNzAwM2ZiMWVkNTQ5
NmRjYWJiMjMwM2VhYTU1MGM3ZGZlMS4uNjI5ZGYzYzk3Y2MyNTZhYmM0N2IxODE5YzIyMzNmMzY4
MmY2ODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTEwMCwxMSArMTAwLDEx
IEBAIHN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29yZU9iamVjdCYgcGFyZW50T2JqZWN0LCBW
ZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROCiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxPcHRp
b25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdDo6Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9B
VURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY2hpbGROb2RlczsKQEAgLTExNSwxMSAr
MTE1LDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlJiBub2RlKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGll
cz4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29tcHV0ZWRQcm9wZXJ0
aWVzKE5vZGUmIG5vZGUpCiB7CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAKLSAg
ICBPcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJv
cGVydGllcz4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+IHJlc3VsdDsKIAogICAgIGlmIChBWENv
cmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewog
ICAgICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29tcHV0ZWRQcm9wZXJ0aWVzOwpAQCAtMjM5LDEx
ICsyMzksMTEgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJbnMKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29udHJvbGxlZE5vZGVzKE5vZGUmIG5vZGUp
CitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb250cm9sbGVkTm9kZXMoTm9kZSYgbm9k
ZSkKIHsKICAgICBFUlJPUl9JRl9OT19BQ1RJVkVfQVVESVQoKTsKIAotICAgIE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
UHRyPE5vZGU+Pj4gcmVzdWx0OwogCiAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBh
Y2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8
Tm9kZT4+IGNvbnRyb2xsZWROb2RlczsKQEAgLTI2MSwxMSArMjYxLDExIEBAIEV4Y2VwdGlvbk9y
PE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRXhjZXB0aW9uT3I8T3B0aW9u
YWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmdldEZsb3dlZE5vZGVzKE5vZGUmIG5vZGUpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpnZXRGbG93ZWROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9B
VURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gZmxvd2VkTm9kZXM7CkBAIC0yOTUsMTEg
KzI5NSwxMSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUoTgogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3duZWROb2RlcyhOb2RlJiBub2RlKQorRXhj
ZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3duZWROb2RlcyhOb2RlJiBub2RlKQogewogICAg
IEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0
cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+
PiByZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0
eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0LT5zdXBwb3J0c0FS
SUFPd25zKCkpIHsKQEAgLTMzMSwxMSArMzMxLDExIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2Rl
Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRQYXJlbnROb2RlKE5vZGUm
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxS
ZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxl
Y3RlZENoaWxkTm9kZXMoTm9kZSYgbm9kZSkKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Omdl
dFNlbGVjdGVkQ2hpbGROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElW
RV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBp
ZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9k
ZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGNiYmEyYjg2ZDhjYjNkMDVlNzdjNmI4ODc5ZjQy
YjM0NWIxNjg4NTEuLmI2ODZhODZmOTMzZjdjMWFiNGMwOGQ3NGYyMzBiZmJhZmExYzVjYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ3LDM5ICs0NywzOSBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUo
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHJvbGUsIE5vZGUqIGNvbnRhaW5lcik7CiAKICAgICBz
dHJ1Y3QgQ29tcHV0ZWRQcm9wZXJ0aWVzIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gYnVzeTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBidXN5OwogICAgICAgICBTdHJpbmcgY2hlY2tl
ZDsKICAgICAgICAgU3RyaW5nIGN1cnJlbnRTdGF0ZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
ZGlzYWJsZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGV4cGFuZGVkOwotICAgICAgICBPcHRp
b25hbDxib29sPiBmb2N1c2VkOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGhlYWRpbmdMZXZlbDsK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGlkZGVuOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGhp
ZXJhcmNoaWNhbExldmVsOwotICAgICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVkOwotICAgICAg
ICBPcHRpb25hbDxib29sPiBpZ25vcmVkQnlEZWZhdWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGRpc2FibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGV4cGFuZGVkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvY3VzZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBoZWFkaW5nTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGlkZGVu
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGllcmFyY2hpY2FsTGV2ZWw7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpZ25vcmVkQnlEZWZhdWx0OwogICAgICAgICBTdHJpbmcgaW52YWxpZFN0YXR1czsKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaXNQb3BVcEJ1dHRvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBpc1BvcFVwQnV0dG9uOwogICAgICAgICBTdHJpbmcgbGFiZWw7Ci0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IGxpdmVSZWdpb25BdG9taWM7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbGl2
ZVJlZ2lvbkF0b21pYzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbGl2
ZVJlZ2lvblJlbGV2YW50OwogICAgICAgICBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1czsKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gcHJlc3NlZDsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVhZG9u
bHk7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHJlcXVpcmVkOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHByZXNzZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVhZG9ubHk7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVxdWlyZWQ7CiAgICAgICAgIFN0cmluZyBy
b2xlOwotICAgICAgICBPcHRpb25hbDxib29sPiBzZWxlY3RlZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBzZWxlY3RlZDsKICAgICB9OwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPE5v
ZGU+PiBnZXRBY3RpdmVEZXNjZW5kYW50KE5vZGUmKTsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25h
bDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENoaWxkTm9kZXMoTm9kZSYpOwotICAgIEV4Y2Vw
dGlvbk9yPE9wdGlvbmFsPENvbXB1dGVkUHJvcGVydGllcz4+IGdldENvbXB1dGVkUHJvcGVydGll
cyhOb2RlJik7Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+
PiBnZXRDb250cm9sbGVkTm9kZXMoTm9kZSYpOwotICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0Rmxvd2VkTm9kZXMoTm9kZSYpOworICAgIEV4Y2VwdGlv
bk9yPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRDaGlsZE5vZGVzKE5v
ZGUmKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPENvbXB1dGVkUHJvcGVydGllcz4+
IGdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlJik7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENvbnRyb2xsZWROb2RlcyhOb2RlJik7Cisg
ICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldEZs
b3dlZE5vZGVzKE5vZGUmKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGdldE1vdXNl
RXZlbnROb2RlKE5vZGUmKTsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4+IGdldE93bmVkTm9kZXMoTm9kZSYpOworICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRPd25lZE5vZGVzKE5vZGUmKTsKICAgICBF
eGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGdldFBhcmVudE5vZGUoTm9kZSYpOwotICAgIEV4Y2Vw
dGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5v
ZGVzKE5vZGUmKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8
Tm9kZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzKE5vZGUmKTsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBdWRpdEFnZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCmluZGV4IGM5Y2U4MGIyZDFkYWFkOGRlZWEyOTNiZmIwOWQ4MDhhNThiOTM0OWMu
LmU0ZDc2YjAxMzczYmE5ODdlZTgzOWU0OTFhYmMxMTdiM2E2ZjRmMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNDEsNTEgKzM0MSw1MSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFs
dWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKAogICAgIHJldHVybiBhcnJheTsKIH0KIAotT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0RpcmVjdGlvbiBhcmd1bWVudCkK
IHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0ZpbGxSdWxlIGFyZ3VtZW50KQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRmlsbFJ1bGUgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9
CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJjZSYgYXJn
dW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNv
dXJjZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsm
XSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7
CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNMaW5l
Q2FwIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
TGluZUNhcCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0xp
bmVKb2luIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzTGluZUpvaW4gYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmIGFyZ3VtZW50KQorc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6U3R5bGVWYXJpYW50JiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihh
cmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgewogICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3Vt
ZW50KHZhbHVlKTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJ
bmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVudCkKIHsKICAgICByZXR1
cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1l
bnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KERPTU1hdHJpeDJESW5pdCYgYXJndW1lbnQpCitzdGQ6Om9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChET01NYXRyaXgyREluaXQmIGFyZ3VtZW50KQogewog
ICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgIGFy
cmF5LT5hZGRJdGVtKGFyZ3VtZW50LmEudmFsdWVfb3IoMSkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBA
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoYXJyYXkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6RE9NTWF0cml4IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoRWxlbWVudCogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChFbGVtZW50KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDA3LDEyOSArNDA3LDEyOSBAQCBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YSgiRWxl
bWVudCJfcyksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOb25lIH19OwogfQogCi1PcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxlbWVudCogYXJndW1lbnQpCitzdGQ6Om9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChIVE1MSW1hZ2VFbGVtZW50KiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpJbWFnZSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdl
Qml0bWFwKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KElt
YWdlQml0bWFwKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVu
dCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZUJpdG1hcCB9fTsKIH0KIAotT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YSogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEqIGFyZ3VtZW50KQogewogICAgIGlmICgh
YXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZh
bHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0
YSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRp
bmdzJikKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRp
bmdzJikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1
YWxpdHkgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFn
ZVNtb290aGluZ1F1YWxpdHkgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhG
b3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChPcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoc3RkOjpvcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJn
dW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046
OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPigqYXJndW1lbnQpKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFBhdGgyRCogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChQYXRoMkQqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3Ry
aW5nRnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0
aDJEIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPENhbnZh
c0dyYWRpZW50PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChSZWZQdHI8Q2FudmFzR3JhZGllbnQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4
Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9
fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxDYW52YXNQYXR0
ZXJuPiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQ
dHI8Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1BhdHRlcm4gfX07CiB9CiAK
LU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+
JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxI
VE1MQ2FudmFzRWxlbWVudD4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19OwogfQogCi1PcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBhcmd1bWVu
dCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MSW1hZ2VF
bGVtZW50PiYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudChhcmd1bWVu
dC5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SW1h
Z2VCaXRtYXA+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFJlZlB0cjxJbWFnZUJpdG1hcD4mIGFyZ3VtZW50KQogewogICAgIHJldHVybiBwcm9jZXNzQXJn
dW1lbnQoYXJndW1lbnQuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoUmVmUHRyPEltYWdlRGF0YT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFyZ3VtZW50KQogewogICAgIHJldHVybiBw
cm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiBhcmd1bWVudCkKK3N0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgYXJn
dW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIGFyZ3Vt
ZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpUeXBlZEFycmF5IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
UmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+JiBhcmd1bWVudCkKIHsK
ICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlw
ZWRBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxK
U0M6OkludDMyQXJyYXk+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxKU0M6OkludDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFy
Z3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsK
IH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OlVpbnQzMkFy
cmF5PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQ
dHI8SlNDOjpVaW50MzJBcnJheT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OwogfQogCi1PcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoU3RyaW5nJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFN0cmluZyYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJu
IHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0
cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJp
bmc+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudCkKIHsKICAgICBhdXRvIGRlZHVwbGljYXRlZCA9IGFyZ3VtZW50
Lm1hcChbJl0gKGNvbnN0IFN0cmluZyYgaXRlbSkgewogICAgICAgICByZXR1cm4gaW5kZXhGb3JE
YXRhKGl0ZW0pOwpAQCAtNTM3LDEyICs1MzcsMTIgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EK
ICAgICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3RvcihXVEZNb3ZlKGRlZHVwbGljYXRlZCkp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoVmVjdG9yPGZsb2F0PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8ZmxvYXQ+JiBhcmd1bWVudCkKIHsKICAgICByZXR1
cm4ge3sgYnVpbGRBcnJheUZvclZlY3Rvcihhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3Rvcjx1
aW50MzJfdD4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
VmVjdG9yPHVpbnQzMl90PiYgYXJndW1lbnQpCiB7CiAgICAgYXV0byBtYXBwZWQgPSBhcmd1bWVu
dC5tYXAoWyZdICh1aW50MzJfdCBpdGVtKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KGl0ZW0pOwpAQCAtNTUwLDcgKzU1MCw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
CiAgICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0b3IobWFwcGVkKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGU6OkFycmF5IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
VmVjdG9yPGludDMyX3Q+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFZlY3RvcjxpbnQzMl90PiYgYXJndW1lbnQpCiB7CiAgICAgYXV0byBtYXBwZWQgPSBh
cmd1bWVudC5tYXAoWyZdIChpbnQzMl90IGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4oaXRlbSk7CkBAIC01NTgsNDkgKzU1OCw0OSBAQCBPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQQogICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KGRvdWJsZSBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KGRvdWJsZSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChmbG9hdCBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KGZsb2F0IGFyZ3VtZW50KQogewogICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KHVpbnQ2NF90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQodWludDY0X3QgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZTo6TnVtYmVyIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoaW50NjRf
dCBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGludDY0X3Qg
YXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19Owog
fQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDMyX3QgYXJndW1lbnQpCitz
dGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50MzJfdCBhcmd1bWVudCkKIHsK
ICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFy
Z3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChpbnQzMl90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoaW50MzJfdCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sg
SlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudCh1aW50OF90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQodWludDhfdCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpO
dW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChib29sIGFyZ3Vt
ZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoYm9vbCBhcmd1bWVudCkK
IHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShhcmd1bWVudCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpCb29sZWFuIH19OwogfQogCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkK
IAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VW
YWx1ZT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVm
UHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVu
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYxMSw3ICs2MTEsNyBAQCBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAKLU9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgYXJn
dW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2Ny
ZWVuQ2FudmFzPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYyMiw3ICs2MjIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQQogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgYXJndW1lbnQpCiB7
CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYz
Myw3ICs2MzMsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKFdFQkdM
KQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoc3RkOjpvcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpCdWZmZXJEYXRhU291cmNlPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVu
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0Myw3ICs2NDMsNyBAQCBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3Vy
Y2U+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHN0ZDo6
b3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1
bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNjUzLDEwNSArNjUzLDEwNSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIH0p
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3Vt
ZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFy
Z3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpXZWJHTEJ1ZmZlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFdlYkdMRnJhbWVidWZmZXIqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1
bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6
VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMRnJhbWVidWZmZXIg
fX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFByb2dyYW0qIGFy
Z3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xQcm9ncmFt
KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6V2ViR0xQcm9ncmFtIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoV2ViR0xRdWVyeSogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xRdWVyeSB9fTsKIH0KIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkK
K3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBh
cmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRhU291cmNlJiBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmIGFyZ3VtZW50KQogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJl
dHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6RmxvYXQzMkxpc3Q6
OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSYg
YXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0
byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CiAgICAg
fSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMy
TGlzdDo6VmFyaWFudFR5cGUmIGFyZ3VtZW50KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJn
dW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNz
QXJndW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFdlYkdMU2FtcGxlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6
OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU2FtcGxlciB9fTsKIH0KIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU2hhZGVyKiBhcmd1bWVudCkKK3N0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU2hhZGVyKiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
V2ViR0xTaGFkZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJH
TFN5bmMqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2Vi
R0xTeW5jKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTeW5jIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoV2ViR0xUZXh0dXJlKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1
bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6
VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsK
IH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDAp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24gfX07CiB9CiAKLU9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcmd1
bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVmVydGV4QXJy
YXlPYmplY3QqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC03NjIsMTQgKzc2MiwxNCBAQCBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQQogCiAjaWYgRU5BQkxFKFdFQkdMMikKIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogYXJndW1lbnQpCiB7CiAg
ICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdM
VHJhbnNmb3JtRmVlZGJhY2sgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1l
bnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0
dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CkBAIC04OTksNyArODk5LDcgQEAgYm9vbCBJbnNw
ZWN0b3JDYW52YXM6Om92ZXJGcmFtZUNvdW50KCkgY29uc3QKIAogUmVmPFByb3RvY29sOjpDYW52
YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNh
cHR1cmVCYWNrdHJhY2UpCiB7Ci0gICAgdXNpbmcgQ29udGV4dFR5cGVUeXBlID0gT3B0aW9uYWw8
UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU+OworICAgIHVzaW5nIENvbnRleHRUeXBlVHlw
ZSA9IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU+OwogICAgIGF1
dG8gY29udGV4dFR5cGUgPSBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKICAgICAgICAgW10gKHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gY29udGV4dFdyYXBw
ZXIpIC0+IENvbnRleHRUeXBlVHlwZSB7CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29u
dGV4dFdyYXBwZXIuZ2V0KCk7CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBSZWY8UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRl
KCkKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZT4oY29udGV4dCkpIHsKICAgICAgICAgYXV0byYgY29udGV4dFdlYkdMQmFzZSA9IGRv
d25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KTsKLSAgICAgICAgaWYg
KE9wdGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMg
PSBjb250ZXh0V2ViR0xCYXNlLmdldENvbnRleHRBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0QXR0cmli
dXRlcyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewogICAgICAg
ICAgICAgYXV0byB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0
Qm9vbGVhbigiYWxwaGEiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmFscGhhKTsKICAgICAg
ICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJkZXB0aCJf
cywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+ZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDI2MjViZDBhNzYzZjA2NmMxMWYyYjI0MGY3Yzlh
N2M5NDBjMWVkMDkuLjU5Nzk5OGE0Y2MxNmIzY2MxYTcyMWRlZThkN2JiNTE5MzZjYjg3NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKQEAgLTg5LDcgKzg5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcgogI2RlZmlu
ZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAotICAgIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNz
QXJndW1lbnQoQXJndW1lbnRUeXBlKTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChBcmd1bWVu
dFR5cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZP
Ul9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdV
TUVOVF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBA
IC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fY3VycmVudEZy
YW1lU3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsKICAgICBzaXplX3QgbV9idWZm
ZXJMaW1pdCB7IDEwMCAqIDEwMjQgKiAxMDI0IH07CiAgICAgc2l6ZV90IG1fYnVmZmVyVXNlZCB7
IDAgfTsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJhbWVDb3VudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbV9mcmFtZUNvdW50OwogICAgIHNpemVfdCBtX2ZyYW1lc0NhcHR1cmVkIHsg
MCB9OwogICAgIGJvb2wgbV9jb250ZW50Q2hhbmdlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3Bw
CmluZGV4IDY5M2FjZmU1MzQzNTE3MGQyZGY1ZTkwMjljY2Y1MmMwNmFiMTM2MTEuLjcwMDg0ZTM2
YmMwYTFmYjEyODU0YzBiZDEwNDRmMTdjN2I5MjFjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgc3RhdGljIEluc3BlY3RvckNhbnZhc0FnZW50KiBlbmFibGVkQ2FudmFzQWdlbnQo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmUKIH0KIAogI2RlZmluZSBQUk9DRVNTX0FS
R1VNRU5UX0RFRklOSVRJT04oQXJndW1lbnRUeXBlKSBcCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkgXAorc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkgXAogeyBcCiAgICAgaWYgKGF1
dG8qIGNhbnZhc0FnZW50ID0gZW5hYmxlZENhbnZhc0FnZW50KGNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQpKSBcCiAgICAgICAgIHJldHVybiBjYW52YXNBZ2VudC0+cHJvY2Vzc0FyZ3VtZW50KGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQsIGFyZ3VtZW50KTsgXApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmIGNhbnZhc1JlbmRlCiAgICAgICAgIGNhbnZhc0FnZW50LT5yZWNvcmRBY3Rpb24oY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsK
IH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1M
Q2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgdWludDMyX3QgYXJndW1lbnQpCitzdGQ6Om9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoY29uc3QgSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhc0VsZW1lbnQsIHVpbnQzMl90IGFyZ3VtZW50KQogewogICAgIEFTU0VSVChj
YW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSk7CiAgICAgcmV0dXJuIHByb2Nlc3NBcmd1
bWVudCgqY2FudmFzRWxlbWVudC5yZW5kZXJpbmdDb250ZXh0KCksIGFyZ3VtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5o
CmluZGV4IGM1ZDMxMWVlNDljNjA1ZmExMDE2ZTExZGZiZjczODIwMjMyZjg2ZWEuLjY3OGI0MDlj
NGRmNDk4N2UzYWJmYzI4ZDQxYWQ3MGIzYmRjMDBkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApAQCAtMTA2LDggKzEw
Niw4IEBAIGVudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OwogCiAjaWYgRU5BQkxFKFdFQkdMKQog
I2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VN
RU5UKG1hY3JvKSBcCi0gICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCi0gICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JikgXAorICAgIG1hY3JvKHN0ZDo6b3B0aW9u
YWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCisgICAg
bWFjcm8oc3RkOjpvcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNv
dXJjZT4mKSBcCiAgICAgbWFjcm8oV2ViR0xCdWZmZXIqKSBcCiAgICAgbWFjcm8oV2ViR0xGcmFt
ZWJ1ZmZlciopIFwKICAgICBtYWNybyhXZWJHTFByb2dyYW0qKSBcCkBAIC0xNTMsNyArMTUzLDcg
QEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oSW1hZ2VEYXRhKikgXAog
ICAgIG1hY3JvKEltYWdlRGF0YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5n
UXVhbGl0eSkgXAotICAgIG1hY3JvKE9wdGlvbmFsPGZsb2F0PiYpIFwKKyAgICBtYWNybyhzdGQ6
Om9wdGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCiAgICAgbWFjcm8oUmVm
UHRyPENhbnZhc0dyYWRpZW50PiYpIFwKICAgICBtYWNybyhSZWZQdHI8Q2FudmFzUGF0dGVybj4m
KSBcCkBAIC0xOTMsMTcgKzE5MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlY29yZGluZ1N3aXp6
bGVUeXBlIHN3aXp6bGVUeXBlOwogICAgIH07CiAKLSAgICB1c2luZyBQcm9jZXNzZWRBcmd1bWVu
dHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8T3B0aW9uYWw8UHJvY2Vzc2VkQXJndW1lbnQ+PjsK
KyAgICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3Rk
OjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4+OwogCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1F
TlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCi0gICAgc3RhdGljIE9wdGlvbmFsPFByb2Nl
c3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEFy
Z3VtZW50VHlwZSk7IFwKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVu
dD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUp
OyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9FQUNI
X0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9E
RUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCiAKICAgICBz
dGF0aWMgdm9pZCByZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIFN0cmluZyYm
LCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UHJv
Y2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYs
IHVpbnQzMl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4g
cHJvY2Vzc0FyZ3VtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiwgdWludDMyX3QpOwogICAg
IHN0YXRpYyB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIFN0cmlu
ZyYmLCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYTY3MGUzMjhhNWJmYzg4MGJkNTQ1ZDg3
OTdhNjJhNjAyYjE5Y2MwNy4uZTRjMDY3ZmRiMzY1ODFlOTE2OTdkYjdkZThjNGMyYjMwZjk4NGJk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNjks
NyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIElUUERlYnVnTW9kZUVuYWJsZWQsCiAgICAgICAg
IE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKERldmVsb3BlclByZWZlcmVuY2UsIE9wdGlvbmFs
PGJvb2w+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJy
aWRlKERldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIHsgfQogCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdmlydHVhbCBib29sIGFsbG93UmVtb3RlSW5z
cGVjdGlvblRvUGFnZURpcmVjdGx5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcAppbmRleCBlNzcwNmJlNDQyZjkxN2ZjYzhmNDdiYjk5Y2RkZjZlOTY0NzExNmNjLi5m
YjE5ZDdmODI5ZjU1YzUzM2FmOWFkNjAyOWIxYzBiMmRlOGFhOTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogICAgIHNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHQocHJlZmVycmVkSGVpZ2h0LCBpbnNw
ZWN0ZWRQYWdlSGVpZ2h0KSk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4oSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8Ym9v
bD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVh
bihJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0
KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmgKaW5kZXggYmNmZmQyMmQ3NzlmOTljNTVjNjM0YjI3NmFhMWI5ODQ3OGIxMDIzYy4u
Y2U2OWE2OTliZTFmNDdkODAxNjc1OWI2MDUxYzJlOGIzMjJhOTY2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKLSAgICBPcHRpb25hbDxib29sPiBldmFsdWF0aW9u
UmVzdWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlv
blJlc3VsdCk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBldmFsdWF0aW9uUmVzdWx0VG9Cb29s
ZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CiAK
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyIHsgbnVs
bHB0ciB9OwogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA1
MTIyYTIzMWM1ZmVhOThhMjU4YTMzNDNkMTkwMDA1MjQyNzA2ZTU3Li4zMTdkNDI4YmViZDI2NmIx
MjdlMmQ4ODRjMTE4OWU0YjA0MmMwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkZWQoKQogICAgICAgICBtX2NsaWVudC0+ZnJvbnRl
bmRMb2FkZWQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpEb2NrU2lkZT4gZG9ja1NpZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJp
bmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1Np
ZGU+IGRvY2tTaWRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGRvY2tTaWRlU3RyaW5nKQogewog
ICAgIGlmIChkb2NrU2lkZVN0cmluZyA9PSAidW5kb2NrZWQiKQogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDsKQEAgLTYwMyw3ICs2MDMs
NyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NlcnRpZmljYXRlKGNvbnN0IFN0
cmluZyYgc2VyaWFsaXplZENlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwotICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAg
ZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIEluc3BlY3RvckZy
b250ZW5kSG9zdDo6ZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBtX2Ns
aWVudCAmJiBtX2NsaWVudC0+ZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKTsKIH0KIAotc3Rh
dGljIE9wdGlvbmFsPERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQ+IHZhbHVl
UGF5bG9hZEZyb21KU09OVmFsdWUoUmVmPEpTT046OlZhbHVlPiYmIHZhbHVlKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZD4gdmFsdWVQ
YXlsb2FkRnJvbUpTT05WYWx1ZShSZWY8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiB7CiAgICAgc3dp
dGNoICh2YWx1ZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBKU09OOjpWYWx1ZTo6VHlwZTo6QXJyYXk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
aW5kZXggOGIyZDU4MGIwZjMyMjM5Y2U5ZTIwNmE4MWEyZDBjZGMxNDMyZTA4Ny4uNmQyZTU2Yzdh
ZThmZWRmYTY1OTBmMTRiMWFkZjgwOGEyZmEwMGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAg
cHVibGljOgogICAgIHN0cnVjdCBDb250ZXh0TWVudUl0ZW0gewogICAgICAgICBTdHJpbmcgdHlw
ZTsKICAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGlkOwotICAg
ICAgICBPcHRpb25hbDxib29sPiBlbmFibGVkOwotICAgICAgICBPcHRpb25hbDxib29sPiBjaGVj
a2VkOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGV4dE1lbnVJdGVtPj4gc3ViSXRlbXM7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBlbmFibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNoZWNrZWQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRleHRNZW51SXRlbT4+IHN1Ykl0ZW1zOwogICAg
IH07CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQmLCBWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCmluZGV4IGExNjkzMTYyYmNmN2FmYmVmMjczN2U1ZGVjNGE4YWJiYWJlYzQyN2IuLjdkZjM1
Y2RlZWVlNzBhMmQwZmQ5Yjc0ZmVkNTA0YjQ2MTQ0ZDJhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTE2MDYsNyArMTYwNiw3IEBAIHN0
YXRpYyBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpM
YWJlbCBidWlsZExhYmVsKFN0cmluCiAgICAgcmV0dXJuIGxhYmVsOwogfQogCi1PcHRpb25hbDxJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0
b3JPdmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQm
IGdyaWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsKQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0
b3JPdmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQm
IGdyaWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsKQogewogICAgIC8vIElmIHRo
ZSBub2RlIFdlYWtQdHIgaGFzIGJlZW4gY2xlYXJlZCwgdGhlbiB0aGUgbm9kZSBpcyBnb25lIGFu
ZCB0aGVyZSdzIG5vdGhpbmcgdG8gZHJhdy4KICAgICBpZiAoIWdyaWRPdmVybGF5LmdyaWROb2Rl
KSB7CkBAIC0xOTE4LDEwICsxOTE4LDEwIEBAIE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6Okhp
Z2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IEluc3BlY3Rvck92ZXJsYXk6OmJ1CiAgICAg
ICAgICAgICBhdXRvIHJvd1N0YXJ0TGluZSA9IHJvd0xpbmVBdChyb3dQb3NpdGlvbnNbYXJlYS5y
b3dzLnN0YXJ0TGluZSgpXSk7CiAgICAgICAgICAgICBhdXRvIHJvd0VuZExpbmUgPSByb3dMaW5l
QXQocm93UG9zaXRpb25zW2FyZWEucm93cy5lbmRMaW5lKCkgLSAxXSArIHJvd0hlaWdodHNbYXJl
YS5yb3dzLmVuZExpbmUoKSAtIDFdKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRQb2lu
dD4gdG9wTGVmdCA9IGNvbHVtblN0YXJ0TGluZS5pbnRlcnNlY3Rpb25XaXRoKHJvd1N0YXJ0TGlu
ZSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiB0b3BSaWdodCA9IGNvbHVtbkVu
ZExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUpOwotICAgICAgICAgICAgT3B0aW9u
YWw8RmxvYXRQb2ludD4gYm90dG9tUmlnaHQgPSBjb2x1bW5FbmRMaW5lLmludGVyc2VjdGlvbldp
dGgocm93RW5kTGluZSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21M
ZWZ0ID0gY29sdW1uU3RhcnRMaW5lLmludGVyc2VjdGlvbldpdGgocm93RW5kTGluZSk7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHRvcExlZnQgPSBjb2x1bW5TdGFydExp
bmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUpOworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFBvaW50PiB0b3BSaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0
aChyb3dTdGFydExpbmUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBi
b3R0b21SaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dFbmRMaW5lKTsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gYm90dG9tTGVmdCA9IGNvbHVt
blN0YXJ0TGluZS5pbnRlcnNlY3Rpb25XaXRoKHJvd0VuZExpbmUpOwogCiAgICAgICAgICAgICAv
LyBJZiBhbnkgdHdvIGxpbmVzIGFyZSBjb2luY2lkZW50IHdpdGggZWFjaCBvdGhlciwgdGhleSB3
aWxsIG5vdCBoYXZlIGFuIGludGVyc2VjdGlvbiwgd2hpY2ggY2FuIG9jY3VyIHdpdGggZXh0cmVt
ZSBgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSguLi4pYCB2YWx1ZXMuCiAgICAgICAgICAgICBpZiAo
IXRvcExlZnQgfHwgIXRvcFJpZ2h0IHx8ICFib3R0b21SaWdodCB8fCAhYm90dG9tTGVmdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDU1YmE1OGY1
M2ZiOTdjMDY2NDMwYzc1YzIyYjk3NjA1NGQ2NGI3MmEuLjAzN2I5YmIxYTA5ODA4NWY3YzI5Njhi
NTllYmE5ZWQ0NzdhMTc0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRI
aWdobGlnaHRPdmVybGF5OjpMYWJlbD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JP
dmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gZGVjb2RlKERl
Y29kZXImKTsKICNlbmRpZgogICAgICAgICAgICAgfTsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JP
dmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhPiBkZWNvZGUoRGVj
b2RlciYpOworICAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92
ZXJsYXk6OkFyZWE+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYKICAgICAgICAgICAgIH07CiAK
QEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGln
aHRPdmVybGF5PiBkZWNvZGUoRGVjb2RlciYpOwogI2VuZGlmCiAgICAgICAgIH07CiAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0xheW91dExhYmVsKEdyYXBoaWNz
Q29udGV4dCYsIFN0cmluZywgRmxvYXRQb2ludCwgTGFiZWxBcnJvd0RpcmVjdGlvbiwgSW5zcGVj
dG9yT3ZlcmxheTo6TGFiZWxBcnJvd0VkZ2VQb3NpdGlvbiwgQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gQ29sb3I6OndoaXRlLCBmbG9hdCBtYXhpbXVtV2lkdGggPSAwKTsKIAogICAgIHZvaWQgZHJh
d0dyaWRPdmVybGF5KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6Okhp
Z2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXkmKTsKLSAgICBPcHRpb25hbDxJbnNwZWN0b3JP
dmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBidWlsZEdyaWRPdmVybGF5
KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmLCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xs
ID0gZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0
OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheT4gYnVpbGRHcmlkT3ZlcmxheShjb25zdCBJbnNwZWN0b3JP
dmVybGF5OjpHcmlkJiwgYm9vbCBvZmZzZXRCb3VuZHNCeVNjcm9sbCA9IGZhbHNlKTsKIAogICAg
IHZvaWQgdXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKTsKIApAQCAtMjc4LDcgKzI3OCw3IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0
OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6CiAgICAgZW5jb2RlciA8PCBsYWJlbHM7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdo
dDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3Jp
ZEhpZ2hsaWdodE92ZXJsYXk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6Okdy
aWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdo
bGlnaHRPdmVybGF5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnNwZWN0b3JP
dmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5IGdyaWRIaWdobGlnaHRPdmVy
bGF5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ3JpZEhpZ2hsaWdodE92ZXJsYXkuY29sb3Ip
KQpAQCAtMzAzLDcgKzMwMyw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW5zcGVj
dG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6CiAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyb3dFZGdlUG9zaXRpb24pOwogfQogCi10ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6
OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0
OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6TGFiZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpI
aWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gSW5zcGVjdG9yT3ZlcmxheTo6
SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6TGFiZWw6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdo
dE92ZXJsYXk6OkxhYmVsIGxhYmVsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFiZWwudGV4
dCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjoKICAgICBlbmNv
ZGVyIDw8IHF1YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEluc3Bl
Y3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkFyZWE+IEluc3Bl
Y3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkFyZWE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVh
PiBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhIGFyZWE7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhcmVhLm5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGRlNWNkNmU5NTE5OTg0YmE1YmQzOGYzMWI3
MGQ1NzMxMjNhZTAyZWQuLjFkY2IwZTA5Y2JjZjU5OWUwNWZiNDZhZmVlMWYyZWQ0NzYzMjdkNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9n
cmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2Fu
dmFzOjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iagogewog
ICAgIGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSBmYWxzZTsKIAotICAgIHVzaW5n
IFByb2dyYW1UeXBlVHlwZSA9IE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbVR5cGU+OworICAgIHVzaW5nIFByb2dyYW1UeXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZT47CiAgICAgYXV0byBwcm9n
cmFtVHlwZSA9IFdURjo6c3dpdGNoT24obV9wcm9ncmFtLAogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4pIC0+IFByb2dy
YW1UeXBlVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAppbmRleCA1NGMxNTA1YmIxNzk0OTg0ZDViYTcxZTI4MDhlOTg5OWM0NmFl
M2ZlLi5hNzc4ODRkYmU1YTJjMzFiNmYwNTM5YzA0MGYzODdjZTdmZjkyMTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMx
MSw3ICszMTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3Zl
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKE9wdGlvbmFsPFN0cmluZz4g
cHJlc2VydmVkTG9hZGVySWQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVySWQpCiB7CiAgICAgbV9yZXF1ZXN0SWRz
RGVxdWUuY2xlYXIoKTsKICAgICBtX2NvbnRlbnRTaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggOWU2OWIyMzQxYjk1MWFl
ZmNiOWQxOWQ0MzVhOThiNjU5YjZhNTEwMS4uZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEyZTIy
OGFlYmMzMTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0K
ICAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsg
bV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAotICAgICAgICBjb25zdCBPcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRp
ZmljYXRlSW5mbzsgfQotICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBPcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUlu
Zm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmlj
YXRlSW5mbzsgfQorICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9w
dGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRl
SW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQogCiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAg
dm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsg
bV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CkBAIC0xMjEsNyArMTIxLDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwog
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwotICAgICAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291
cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKICAg
ICAgICAgaW50IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVi
bGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwotICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjbGVhcihzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJl
c2VydmVkTG9hZGVySWQgPSBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3RvcjxSZXNvdXJjZURhdGEq
PiByZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKaW5kZXggMzBk
NzYyZmMzYzhjYTUzZGE3YjgzOWU0ZmY4MzEwMjAwYWRlNzkzOS4uZDE2MTFkOThkYTE0OTY3YWU5
OTk3MDEwNDlhOWIwNTM4YWI4YzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKQEAgLTY1LDE0
ICs2NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHByb3RvY29sVmFsdWVGb3JTZWNvbmRzKGNv
bnN0IFNlY29uZHMmIHNlY29uZHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHByb3Rv
Y29sVmFsdWVGb3JTZWNvbmRzKGNvbnN0IFNlY29uZHMmIHNlY29uZHMpCiB7CiAgICAgaWYgKHNl
Y29uZHMgPT0gU2Vjb25kczo6aW5maW5pdHkoKSB8fCBzZWNvbmRzID09IFNlY29uZHM6Om5hbigp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzLm1pbGxp
c2Vjb25kcygpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6UGxh
eWJhY2tEaXJlY3Rpb24+IHByb3RvY29sVmFsdWVGb3JQbGF5YmFja0RpcmVjdGlvbihQbGF5YmFj
a0RpcmVjdGlvbiBwbGF5YmFja0RpcmVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpBbmltYXRpb246OlBsYXliYWNrRGlyZWN0aW9uPiBwcm90b2NvbFZhbHVlRm9yUGxheWJh
Y2tEaXJlY3Rpb24oUGxheWJhY2tEaXJlY3Rpb24gcGxheWJhY2tEaXJlY3Rpb24pCiB7CiAgICAg
c3dpdGNoIChwbGF5YmFja0RpcmVjdGlvbikgewogICAgIGNhc2UgUGxheWJhY2tEaXJlY3Rpb246
Ok5vcm1hbDoKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sOjpBbmlt
YXRpb246OlBsYXliYWNrRGlyZWN0aW9uPiBwcm90b2NvbFZhbHVlRm9yUGxheWJhY2sKICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1h
dGlvbjo6RmlsbE1vZGU+IHByb3RvY29sVmFsdWVGb3JGaWxsTW9kZShGaWxsTW9kZSBmaWxsTW9k
ZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBw
cm90b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmlsbE1vZGUgZmlsbE1vZGUpCiB7CiAgICAgc3dpdGNo
IChmaWxsTW9kZSkgewogICAgIGNhc2UgRmlsbE1vZGU6Ok5vbmU6CkBAIC0zODMsNyArMzgzLDcg
QEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3Qo
RWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUUKICAgICB9KTsKICAgICBhdXRvJiB0cmFja2luZ0Rh
dGEgPSBlbnN1cmVSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCi0gICAgT3B0aW9uYWw8
UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3RhdGU+IGFuaW1hdGlvbkFuaW1hdGlvblN0
YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3Rh
dGU+IGFuaW1hdGlvbkFuaW1hdGlvblN0YXRlOwogCiAgICAgaWYgKChlbnN1cmVSZXN1bHQuaXNO
ZXdFbnRyeSB8fCAhaXNEZWxheWVkKHRyYWNraW5nRGF0YS5sYXN0Q29tcHV0ZWRUaW1pbmcpKSAm
JiBpc0RlbGF5ZWQoY29tcHV0ZWRUaW1pbmcpKQogICAgICAgICBhbmltYXRpb25BbmltYXRpb25T
dGF0ZSA9IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvblN0YXRlOjpEZWxheWVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcAppbmRleCBjMmIxODAwMzdlOTQ3Y2M2YmQ1MjZjMzQ2Y2RjN2E4YWM2ZmZiYTFkLi4wZjcy
MmRkNDJiMzE2ZWIzNmEzYzllZTVmZDFkZDdhYWEwMWYxMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDQx
LDcgKzQ0MSw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9J
ZChQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6
OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRvSWQgcHNldWRvSWQpCiB7
CiAgICAgc3dpdGNoIChwc2V1ZG9JZCkgewogICAgIGNhc2UgUHNldWRvSWQ6OkZpcnN0TGluZToK
QEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRv
SWQ+IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCBwc2V1ZAogICAgIH0KIH0KIAot
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+Pj4+IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVk
U3R5bGVzRm9yTm9kZShQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBPcHRpb25hbDxib29s
PiYmIGluY2x1ZGVQc2V1ZG8sIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUluaGVyaXRlZCkKK1By
b3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmUHRyPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpD
U1M6OlBzZXVkb0lkTWF0Y2hlcz4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4+PiBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJp
dGVkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtOTM1
LDcgKzkzNSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKFByb3RvY29sOjpET006CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotT3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IEluc3BlY3RvckNT
U0FnZW50OjpsYXlvdXRDb250ZXh0VHlwZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlPiBJbnNw
ZWN0b3JDU1NBZ2VudDo6bGF5b3V0Q29udGV4dFR5cGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewogICAgIGlmIChpczxSZW5kZXJHcmlkPihyZW5kZXJlcikpCiAgICAgICAg
IHJldHVybiBQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZTo6R3JpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRl
eCA4NTVkYWEzMThiZjlhNmIzNTk1MTY1ZGI1M2E0ZjgxMDg0MzljNWNmLi5hNGM2MTI3ZDBhMmNm
ZDRkY2M0ZjVkZTg2YjA2OTAyOTgzZGE3NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUo
Q1NTUnVsZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkxheW91dENvbnRleHRUeXBlPiBsYXlvdXRDb250ZXh0VHlwZUZvclJlbmRlcmVyKFJlbmRlck9i
amVjdCopOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIoUmVuZGVy
T2JqZWN0Kik7CiAKICAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+PiBnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpGb250Pj4gZ2V0Rm9udERhdGFGb3JOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IC8qIGlubGluZVN0
eWxlICovLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gLyogYXR0
cmlidXRlc1N0eWxlICovPj4gZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UnVsZU1hdGNoPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+Pj4gZ2V0TWF0Y2hlZFN0eWxlc0Zv
ck5vZGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE9wdGlvbmFsPGJvb2w+JiYg
aW5jbHVkZVBzZXVkbywgT3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVkKTsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+Piwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRT
dHlsZUVudHJ5Pj4+PiBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVkKTsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+PiBnZXRBbGxTdHlsZVNoZWV0cygpOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+PiBnZXRTdHlsZVNoZWV0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdldFN0eWxlU2hlZXRUZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkIHsgMSB9OwogICAgIGJvb2wgbV9jcmVhdGlu
Z1ZpYUluc3BlY3RvclN0eWxlU2hlZXQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpMYXlvdXRDb250ZXh0VHlwZT4+IG1fbm9kZXNXaXRoUGVuZGluZ0xheW91dENvbnRleHRU
eXBlQ2hhbmdlczsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlk
LCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5
cGU+PiBtX25vZGVzV2l0aFBlbmRpbmdMYXlvdXRDb250ZXh0VHlwZUNoYW5nZXM7CiAgICAgVGlt
ZXIgbV9sYXlvdXRDb250ZXh0VHlwZUNoYW5nZWRUaW1lcjsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlQ2hhbmdlZE1vZGUgbV9sYXlvdXRDb250ZXh0VHlw
ZUNoYW5nZWRNb2RlIHsgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlw
ZUNoYW5nZWRNb2RlOjpPYnNlcnZlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjA0NWMz
NDI2MWY1OGY3NzZlZDNhY2JhZDkxNDhmMmNhNGNkOWQzNy4uMjI2Yzc5NDgxZjZlN2ZiMTdlM2Vi
NmIzZmRhZDhlNzZhYzhmMTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0
UmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZQogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGlu
Zyhjb25zdCBQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYgY2FudmFzSWQsIE9wdGlvbmFsPGlu
dD4mJiBmcmFtZUNvdW50LCBPcHRpb25hbDxpbnQ+JiYgbWVtb3J5TGltaXQpCitQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmco
Y29uc3QgUHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzSWQmIGNhbnZhc0lkLCBzdGQ6Om9wdGlvbmFs
PGludD4mJiBmcmFtZUNvdW50LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBtZW1vcnlMaW1pdCkKIHsK
ICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTQ3NSw3ICs0NzUs
NyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dAogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+Y2FudmFzTWVtb3J5Q2hhbmdlZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgbm9k
ZS0+bWVtb3J5Q29zdCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFz
Q2hhbmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+
JikKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYg
Y2FudmFzQmFzZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JikKIHsKICAgICBhdXRv
KiBjb250ZXh0ID0gY2FudmFzQmFzZS5yZW5kZXJpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjb250
ZXh0KQpAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxE
ZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQogI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCiAKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OKEFy
Z3VtZW50VHlwZSkgXAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFy
Z3VtZW50KSBcCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvY2Vzc0FyZ3VtZW50KENhbnZh
c1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBh
cmd1bWVudCkgXAogeyBcCiAgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9y
Q2FudmFzKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOyBcCiAgICAgQVNTRVJUKGluc3BlY3RvckNh
bnZhcyk7IFwKQEAgLTgyNSw3ICs4MjUsNyBAQCBJbnNwZWN0b3JDYW52YXMmIEluc3BlY3RvckNh
bnZhc0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleAogI2lm
IEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29u
dGV4dCkpIHsKICAgICAgICAgYXV0byYgY29udGV4dFdlYkdMID0gZG93bmNhc3Q8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gZXh0ZW5zaW9ucyA9IGNvbnRleHRXZWJHTC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25z
KCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGV4dGVuc2lv
bnMgPSBjb250ZXh0V2ViR0wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uIDogKmV4dGVuc2lvbnMpIHsKICAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dFdlYkdMLmV4dGVuc2lvbklzRW5hYmxlZChleHRlbnNpb24pKQog
ICAgICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXh0ZW5zaW9uRW5hYmxl
ZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgZXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApp
bmRleCBiZDc4NmQ5ODQ2YTJkMTFlZWExYjY0ODM1MDdjZmY3Y2YyOTg5MmExLi45NmY4Njg5NDI0
MGE1NGFkNzQwNzc2OTYzYzMwNGUzOWI1Yjg1ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03OSw3ICs3
OSw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJl
ZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPj4+IHJlcXVl
c3RDbGllbnROb2Rlcyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lk
Jik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gcmVzb2x2ZUNvbnRleHQoY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXApOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c2V0UmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KGludCk7Ci0gICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFJlY29yZGluZyhjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJiwgT3B0aW9uYWw8aW50PiYmIGZyYW1lQ291
bnQsIE9wdGlvbmFsPGludD4mJiBtZW1vcnlMaW1pdCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJiwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZnJhbWVDb3Vu
dCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgbWVtb3J5TGltaXQpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJik7CiAjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR1BVKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5n
PiByZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlKTsKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxF
KFdFQkdQVSkKIAogICAgIC8vIENhbnZhc09ic2VydmVyCi0gICAgdm9pZCBjYW52YXNDaGFuZ2Vk
KENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9p
ZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4mKSBmaW5hbDsKICAgICB2b2lkIGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsg
fQogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKENhbnZhc0Jhc2UmKSBmaW5hbDsKIApAQCAtMTIw
LDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIK
ICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUpIFwKLSAg
ICBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBc
CisgICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVu
dFR5cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZP
Ul9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdV
TUVOVF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBA
IC0xMjgsOSArMTI4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0cnVjdCBSZWNvcmRp
bmdPcHRpb25zIHsKLSAgICAgICAgT3B0aW9uYWw8bG9uZz4gZnJhbWVDb3VudDsKLSAgICAgICAg
T3B0aW9uYWw8bG9uZz4gbWVtb3J5TGltaXQ7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmFt
ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxsb25nPiBmcmFtZUNvdW50OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGxvbmc+IG1lbW9yeUxpbWl0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gbmFtZTsKICAgICB9OwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFz
JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3IsIFJlY29yZGluZ09w
dGlvbnMmJiA9IHsgfSk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogCiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKLSAgICBPcHRpb25h
bDxzaXplX3Q+IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50OworICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZTYzNjJjNTZlY2E3MDA3NTRkMWE0
M2U0NmEwMWY4YWVmYmM4Y2U5OC4uZDQ2MmVmYzMwNmEyOTliNThlNzhjNWQ5NGU2ZTg3NTdlMTcz
NGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhUZXh0U2l6ZSA9IDEwMDAwOwogc3RhdGlj
IGNvbnN0IFVDaGFyIGVsbGlwc2lzVUNoYXJbXSA9IHsgMHgyMDI2LCAwIH07CiAKLXN0YXRpYyBP
cHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yT2Jq
ZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHBhcnNlQ29sb3IoUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBjb2xvck9iamVjdCkKIHsKICAgICBpZiAoIWNvbG9yT2JqZWN0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTc3LDcgKzU3Nyw3IEBAIE5vZGUqIEluc3BlY3Rv
ckRPTUFnZW50Ojpub2RlRm9ySWQoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIGlkKQogICAgIHJldHVy
biBtX2lkVG9Ob2RlLmdldChpZCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgbm9kZUlkLCBPcHRpb25hbDxpbnQ+JiYgZGVwdGgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMoUHJvdG9jb2w6OkRP
TTo6Tm9kZUlkIG5vZGVJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZGVwdGgpCiB7CiAgICAgaW50
IHNhbml0aXplZERlcHRoOwogCkBAIC0xMDcwLDcgKzEwNzAsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+PiBJbnNw
ZWN0b3JETwogICAgIHJldHVybiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
KCpub2RlKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxTdHJpbmcg
Lyogc2VhcmNoSWQgKi8sIGludCAvKiByZXN1bHRDb3VudCAqLz4+IEluc3BlY3RvckRPTUFnZW50
OjpwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheT4m
JiBub2RlSWRzLCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUpCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAvKiBzZWFyY2hJZCAqLywgaW50IC8qIHJlc3Vs
dENvdW50ICovPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goY29uc3QgU3RyaW5n
JiBxdWVyeSwgUmVmUHRyPEpTT046OkFycmF5PiYmIG5vZGVJZHMsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBjYXNlU2Vuc2l0aXZlKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0
cmluZzsKIApAQCAtMTI2MSw3ICsxMjYxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChib29sIGVuYWIKICAg
ICByZXR1cm4geyB9OwogfQogI2Vsc2UKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGhpZ2hsaWdodENvbmZpZywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93
UnVsZXJzKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEluc3BlY3RNb2RlRW5hYmxlZChib29sIGVuYWJsZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgaGlnaGxpZ2h0Q29uZmlnLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd1J1bGVycykKIHsK
ICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEyNzQsNyArMTI3
NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFiCiB9CiAjZW5kaWYKIAotUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29s
b3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYm
IHVzZVBhZ2VDb29yZGluYXRlcykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRl
cykKIHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFk
KSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUob3V0bGluZUNvbG9yKSwgV1RGTW92ZSh1c2VQYWdl
Q29vcmRpbmF0ZXMpKTsKQEAgLTEyODIsNyArMTI4Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwg
aW50CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5PiYmIHF1YWRP
YmplY3QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKK1By
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRR
dWFkKFJlZjxKU09OOjpBcnJheT4mJiBxdWFkT2JqZWN0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25h
bDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5p
cXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChXVEZNb3ZlKHF1YWRPYmplY3Qp
LCBxdWFkLmdldCgpKSkKQEAgLTEyOTMsNyArMTI5Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKFJlZjxKU09OOjpBcnJh
eT4mCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJI
aWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBP
cHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxp
bmVDb2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAg
ICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6SGln
aGxpZ2h0OjpDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VD
b2xvcihXVEZNb3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwpA
QCAtMTM5Miw3ICsxMzkyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmoKICAgICByZXR1cm4g
eyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0Tm9kZShSZWY8SlNPTjo6T2JqZWN0PiYmIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdCwgT3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIG5vZGVJZCwgY29uc3QgUHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCkKK1Byb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKFJlZjxKU09O
OjpPYmplY3Q+JiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpET006Ok5vZGVJZD4mJiBub2RlSWQsIGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3RJZCYgb2JqZWN0SWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9y
U3RyaW5nOwogCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JE
T01BZ2VudDo6c2hvd0dyaWRPdmVybGF5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlk
IG5vZGVJZCwgIFJlZjxKU09OOjpPYmplY3Q+JiYgZ3JpZENvbG9yLCBPcHRpb25hbDxib29sPiYm
IHNob3dMaW5lTmFtZXMsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOdW1iZXJzLCBPcHRpb25h
bDxib29sPiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93VHJh
Y2tTaXplcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93QXJlYU5hbWVzKQorSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0dyaWRPdmVy
bGF5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgIFJlZjxKU09OOjpP
YmplY3Q+JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywg
c3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVtYmVycywgc3RkOjpvcHRpb25hbDxib29s
PiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dUcmFj
a1NpemVzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0FyZWFOYW1lcykKIHsKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5v
ZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzaG93R3Jp
ZE92ZXJsYXkoSW5zcAogICAgIHJldHVybiB7IH07CiB9CiAKLUluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVHcmlkT3ZlcmxheShP
cHRpb25hbDxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYgbm9kZUlkKQorSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUdyaWRPdmVy
bGF5KHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIG5vZGVJZCkKIHsKICAg
ICBpZiAobm9kZUlkKSB7CiAgICAgICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmlu
ZzsKQEAgLTE1MTgsNyArMTUxOCw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVHcmlkT3ZlcmxheShPcHRpCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkPiBJbnNwZWN0b3JET01BZ2VudDo6bW92ZVRvKFByb3RvY29sOjpET006Ok5vZGVJZCBub2Rl
SWQsIFByb3RvY29sOjpET006Ok5vZGVJZCB0YXJnZXROb2RlSWQsIE9wdGlvbmFsPFByb3RvY29s
OjpET006Ok5vZGVJZD4mJiBpbnNlcnRCZWZvcmVOb2RlSWQpCitQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3BlY3RvckRPTUFnZW50Ojptb3ZlVG8oUHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHRhcmdldE5v
ZGVJZCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYgaW5zZXJ0QmVmb3Jl
Tm9kZUlkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IGZkNGVhMjVkNTIwZjQxMWM4YTgwZGRjMzkxZmMxYTNhY2YyNTljN2UuLjc0YTYwZjYx
ODA5MjY3NmQ4YmVlODc1MzhjOWQ2OTdmM2M1ODQzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcXVlcnlTZWxlY3RvcihJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rvcik7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZD4+PiBxdWVyeVNlbGVjdG9yQWxsKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yKTsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGU+PiBnZXREb2N1bWVudCgpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gcmVxdWVzdENoaWxkTm9kZXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQsIE9wdGlvbmFsPGludD4mJiBkZXB0aCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiByZXF1ZXN0Q2hpbGROb2RlcyhJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZGVwdGgpOwogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QXR0cmlidXRlVmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBzZXRBdHRyaWJ1dGVzQXNUZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVBdHRyaWJ1dGUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xMjUsNyArMTI1
LDcgQEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpFdmVudExpc3RlbmVySWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucyk7CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVCcmVha3BvaW50
Rm9yRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXJJ
ZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4+IGdldEFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7Ci0g
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAv
KiBzZWFyY2hJZCAqLywgaW50IC8qIHJlc3VsdENvdW50ICovPj4gcGVyZm9ybVNlYXJjaChjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgbm9kZUlkcywgT3B0aW9uYWw8
Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8U3RyaW5nIC8qIHNlYXJjaElkICovLCBpbnQgLyogcmVzdWx0Q291
bnQgKi8+PiBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxKU09OOjpB
cnJheT4mJiBub2RlSWRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSk7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+PiBnZXRTZWFyY2hSZXN1bHRzKGNvbnN0
IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4KTsKICAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGRpc2NhcmRTZWFyY2hSZXN1bHRz
KGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+
IHJlc29sdmVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJp
bmcmIG9iamVjdEdyb3VwKTsKQEAgLTEzMywyMCArMTMzLDIwIEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc2V0SW5zcGVjdE1vZGVFbmFibGVkKGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
aGlnaGxpZ2h0Q29uZmlnKTsKICNlbHNlCi0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBoaWdobGlnaHRDb25maWcsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd1J1bGVycyk7Cisg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9k
ZUVuYWJsZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzaG93UnVsZXJzKTsKICNlbmRpZgogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+
IHJlcXVlc3ROb2RlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBoaWRlSGlnaGxpZ2h0KCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG91dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlnaGxpZ2h0UXVhZChS
ZWY8SlNPTjo6QXJyYXk+JiYgcXVhZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvciwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIE9wdGlvbmFsPGJvb2w+JiYgdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IGhpZ2hsaWdodFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGlu
ZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodFF1YWQoUmVm
PEpTT046OkFycmF5PiYmIHF1YWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNl
UGFnZUNvb3JkaW5hdGVzKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IGhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29u
ZmlnLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpGcmFtZUlkJik7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBoaWdobGlnaHROb2RlKFJlZjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0
Q29uZmlnLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4mJiwgY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmKTsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodE5vZGUoUmVm
PEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBoaWdobGlnaHROb2RlTGlzdChSZWY8SlNPTjo6QXJyYXk+JiYgbm9kZUlk
cywgUmVmPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcpOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlnaGxpZ2h0RnJhbWUoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
Y29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yKTsKLSAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNob3dHcmlkT3ZlcmxheShJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgUmVmPEpTT046Ok9iamVjdD4mJiBncmlkQ29sb3Is
IE9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93TGlu
ZU51bWJlcnMsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0V4dGVuZGVkR3JpZExpbmVzLCBPcHRpb25h
bDxib29sPiYmIHNob3dUcmFja1NpemVzLCBPcHRpb25hbDxib29sPiYmIHNob3dBcmVhTmFtZXMp
OwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlkZUdyaWRP
dmVybGF5KE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmKTsKLSAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZUlkPiBtb3ZlVG8oSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9k
ZUlkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCB0YXJnZXROb2RlSWQsIE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIGluc2VydEJlZm9yZU5vZGVJ
ZCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzaG93R3Jp
ZE92ZXJsYXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIFJlZjxKU09OOjpPYmpl
Y3Q+JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgc3Rk
OjpvcHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVtYmVycywgc3RkOjpvcHRpb25hbDxib29sPiYm
IHNob3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dUcmFja1Np
emVzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0FyZWFOYW1lcyk7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWRlR3JpZE92ZXJsYXkoc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4mJik7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJ
ZD4gbW92ZVRvKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgdGFyZ2V0Tm9kZUlkLCBzdGQ6Om9wdGlvbmFsPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIGluc2VydEJlZm9yZU5vZGVJZCk7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiB1bmRvKCk7CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZWRvKCk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBtYXJrVW5kb2FibGVTdGF0ZSgp
OwpAQCAtMjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5n
cygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0
UXVhZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcyk7Cisg
ICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGlu
ZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAg
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+
IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMjU2
NjgxNWMzYWYwYmIxYjVkMzcyN2RiYzQ2OGYzMGUzZTY0ODIyYy4uYWU3ZmE0ODI3MzgwNjA0YjE0
ZjE2MjUyYzhhODBhMmVkNGQ3MjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0z
MTQsNyArMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRGaXJlVGlt
ZXIoYm9vbCBvbmVTaG90KQogICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVj
aWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFVSTEJyZWFrcG9pbnQoY29uc3Qg
U3RyaW5nJiB1cmwsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBvcHRpb25zKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6c2V0VVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpv
cHRpb25hbDxib29sPiYmIGlzUmVnZXgsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykK
IHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTM0MCw3ICsz
NDAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpzZXRVUkxCcmVha3BvaW50KGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVt
b3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1Jl
Z2V4KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGlzUmVnZXgpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIHsKICAgICAgICAg
aWYgKCFtX3BhdXNlT25BbGxVUkxzQnJlYWtwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5k
ZXggODk2MDllY2ZjMGQ4Nzk2NzQxZDQ1NWEwM2U3ZGFjMDkxZThkY2M4ZC4uODVlMDVhMzFlNWM4
N2NmYjJmYmRhZDMzMDlmNzFjZDYzZDlhMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAg
LTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7
CiAKICAgICAvLyBET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgotICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0VVJMQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIG9wdGlvbnMpIGZpbmFsOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gcmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9u
YWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IHNldFVSTEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMp
IGZpbmFsOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVt
b3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGlzUmVnZXgpIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc2V0RXZlbnRCcmVha3BvaW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2Vy
OjpFdmVudEJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgUmVmUHRyPEpT
T046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IHJlbW92ZUV2ZW50QnJlYWtwb2ludChJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nJiBldmVu
dE5hbWUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDc1ZGU1N2E1ZWQ4Zjhl
N2NmMGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYuLjdmODA2ZDRmYzgxY2QyYjA0MzIyYjNkMGQ4MGJl
NDQ0MDRiYmQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5
LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKIH0KIAogCi1zdGF0aWMgUmVmPFByb3RvY29sOjpJbmRl
eGVkREI6OktleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJL
ZXlQYXRoPiYgaWRiS2V5UGF0aCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5
UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIGlkYktleVBhdGgpCiB7CiAgICAgaWYgKCFpZGJLZXlQYXRoKQogICAgICAgICByZXR1cm4g
UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShQcm90b2NvbDo6
SW5kZXhlZERCOjpLZXlQYXRoOjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggZDk5ODNjMDA2ODMxNjM3NTIxMzBiYzY1OGQ2ZDVkNzcwOTVmZjU5NC4uMTJhNmQz
ZTI3ZDRkMzkzYzNhY2NiYjdiYjYwNDU5MGUwOWUwNjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtMjIwLDcgKzIyMCw3IEBAIFJlZjxQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pCiAgICAgYXV0byBlbGFw
c2VkVGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9uaWNUaW1lJiB0aW1lKSB7CiAgICAgICAg
IHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lU2lu
Y2UodGltZSkuc2Vjb25kcygpOwogICAgIH07Ci0gICAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRy
aWNzPiBlbXB0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7
CiAgICAgaWYgKCF0aW1pbmcpIHsKICAgICAgICAgZW1wdHkuZW1wbGFjZSgpOwogICAgICAgICB0
aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMbwogICAgIGF1dG8gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmpl
Y3QoZG9jdW1lbnQsICZyZXF1ZXN0KTsKIAogICAgIFN0cmluZyB1cmwgPSBsb2FkZXIgPyBsb2Fk
ZXItPnVybCgpLnN0cmluZygpIDogcmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKLSAgICBPcHRpb25h
bDxQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlPiB0eXBlUGF5bG9hZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU+IHR5cGVQYXlsb2FkOwogICAgIGlm
ICh0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlw
ZVBheWxvYWQgPSBwcm90b2NvbFJlc291cmNlVHlwZTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgdXJsLCBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgc2VuZFRpbWVzdGFtcCwgd2Fs
bHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCksIFdURk1vdmUoaW5pdGlhdG9yT2Jq
ZWN0KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIG51
bGxwdHIpLCBXVEZNb3ZlKHR5cGVQYXlsb2FkKSwgdGFyZ2V0SWQpOwpAQCAtNTA0LDcgKzUwNCw3
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25hbDxS
ZXNvdXJjZVJlc3BvbnNlPiByZWFsUmVzcG9uc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZVJlc3BvbnNlPiByZWFsUmVzcG9uc2U7CiAgICAgaWYgKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5oYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MocmVzcG9uc2UpKSB7
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CiAgICAgICAgICAgICAvLyBX
ZSBkbyBub3QgbmVlZCB0byBpc29sYXRlIHJlc3BvbnNlIHNpbmNlIGl0IGNvbWVzIHN0cmFpZ2h0
IGZyb20gSVBDLCBidXQgd2UgbWlnaHQgd2FudCB0byBpc29sYXRlIGl0IGZvciBleHRyYSBzYWZl
dHkuCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBpZiAo
cmVzb3VyY2VEYXRhICYmIHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKICAgICAgICAg
c291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVz
b3VyY2UocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIE9wdGlvbmFsPE5l
dHdvcmtMb2FkTWV0cmljcz4gcmVhbE1ldHJpY3M7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
TG9hZE1ldHJpY3M+IHJlYWxNZXRyaWNzOwogICAgIGlmIChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9hZGVyU3RyYXRlZ3koKS0+c2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkgJiYgIW5ldHdv
cmtMb2FkTWV0cmljcy5pc0NvbXBsZXRlKCkpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZEFu
ZFdhaXQoWyZdIHsKICAgICAgICAgICAgIHJlYWxNZXRyaWNzID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPm5ldHdvcmtNZXRyaWNzRnJvbVJlc291cmNlTG9hZElkZW50
aWZpZXIoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCk7CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldElu
dGVyY2VwdGlvbkVuYWJsZWQoYm9vbAogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlIG5ldHdv
cmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYm
IGlzUmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVybCwgUHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNl
U2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAgICBJbnRlcmNl
cHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CkBAIC0xMDgyLDcgKzEwODIs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50
ZXJjZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0
YWdlIG5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25h
bDxib29sPiYmIGlzUmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVybCwgUHJv
dG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsK
ICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CkBAIC0x
MjE0LDcgKzEyMTQsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KGNvbnN0CiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJ
ZCYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8aW50PiYmIHN0YXR1cywgY29uc3QgU3Ry
aW5nJiBzdGF0dXNUZXh0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGhlYWRlcnMpCitQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdp
dGhSZXNwb25zZShjb25zdCBQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3Rh
dHVzVGV4dCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoZWFkZXJzKQogewogICAgIGF1dG8gcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2Uo
cmVxdWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkKQEAgLTEzNTYs
NyArMTM1Niw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNyZWF0ZVRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKIH0KIAotT3B0aW9u
YWw8U3RyaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnRleHRDb250ZW50Rm9yQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorc3RkOjpvcHRpb25hbDxTdHJp
bmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6dGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KGNhY2hlZFJlc291cmNlLm1pbWVUeXBlKCkpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGlj
IFJlZjxQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJl
c3VsdChjb25zdCBQcm90b2MKICAgICByZXR1cm4gc2VhcmNoUmVzdWx0OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJlc291cmNlRGF0YShjb25zdCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhJiByZXNvdXJjZURhdGEpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yUmVzb3VyY2VEYXRhKGNvbnN0IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHJlc291cmNlRGF0YSkKIHsKICAgICBpZiAocmVz
b3VyY2VEYXRhLmhhc0NvbnRlbnQoKSAmJiAhcmVzb3VyY2VEYXRhLmJhc2U2NEVuY29kZWQoKSkK
ICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YS5jb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRl
eCA4YjJlMjk2NzA1YTVhZDdiMzdiNTVhNGZiNjY3ZmYwZDhkMzJmOTc5Li5lYmVkMjkyN2QxNzYx
YzZiYzFmY2EzM2Y4ZjA0ZTE0YWMwMTAzNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1RleHQoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBj
cmVhdGVUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Um
KTsKICAgICBzdGF0aWMgYm9vbCBjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2Um
LCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAKICAgICAvLyBJbnNwZWN0
b3JBZ2VudEJhc2UKQEAgLTg3LDExICs4NywxMSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmKSBmaW5hbDsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiByZXNvbHZlV2ViU29ja2V0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0SW50ZXJjZXB0aW9uRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbmcm
IHVybCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlLCBPcHRpb25h
bDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7
Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVJbnRl
cmNlcHRpb24oY29uc3QgU3RyaW5nJiB1cmwsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
Ok5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxi
b29sPiYmIGlzUmVnZXgpIGZpbmFsOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gYWRkSW50ZXJjZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBj
YXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7CisgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVJbnRlcmNlcHRp
b24oY29uc3QgU3RyaW5nJiB1cmwsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdv
cmtTdGFnZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IGludGVyY2VwdENvbnRpbnVlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5l
dHdvcmtTdGFnZSkgZmluYWw7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBpbnRlcmNlcHRXaXRoUmVxdWVzdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXF1ZXN0SWQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBwb3N0RGF0
YSkgZmluYWw7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBp
bnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVxdWVzdElkJiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGludD4mJiBzdGF0dXMsIGNvbnN0IFN0cmlu
ZyYgc3RhdHVzVGV4dCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoZWFkZXJzKSBmaW5hbDsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGludGVyY2VwdFdpdGhS
ZXNwb25zZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1
c1RleHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVhZGVycykgZmluYWw7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIFJlZjxKU09OOjpP
YmplY3Q+JiYgaGVhZGVycykgZmluYWw7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OlJlc291cmNlRXJyb3JUeXBlKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMzMGM3NTM2
OWYxYTYwNjA3YTRkNTljYzNlZDY2NmQ1ZmViN2QyMGQuLmY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5
YTZiMGE0NGIxY2I3MWFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBkb3Vi
bGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAoKQogICAgIHJldHVybiBtX2Vudmlyb25t
ZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpOwogfQogCi1Q
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChP
cHRpb25hbDxib29sPiYmIGlnbm9yZUNhY2hlLCBPcHRpb25hbDxib29sPiYmIHJldmFsaWRhdGVB
bGxSZXNvdXJjZXMpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnJlbG9hZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQogewogICAgIE9wdGlvblNldDxS
ZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGlnbm9yZUNhY2hlICYmICppZ25v
cmVDYWNoZSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlVXNlckFnZW50KGNvbnN0IFN0cmluZwogICAg
IHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
clBhZ2VBZ2VudDo6b3ZlcnJpZGVTZXR0aW5nKFByb3RvY29sOjpQYWdlOjpTZXR0aW5nIHNldHRp
bmcsIE9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlU2V0dGluZyhQcm90b2NvbDo6UGFnZTo6U2V0
dGluZyBzZXR0aW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpCiB7CiAgICAgYXV0byYg
aW5zcGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0ZWRQYWdlLnNldHRpbmdzKCk7CiAKQEAg
LTU2Miw3ICs1NjIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UGFnZTo6Q29va2llPj4+IEluc3BlY3RvclBhZwogICAgIHJldHVybiBidWls
ZEFycmF5Rm9yQ29va2llcyhhbGxSYXdDb29raWVzKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENv
b2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgUmVmPEpTT046Ok9iamVjdD4mJiBjb29raWVPYmplY3QpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIFJlZjxKU09OOjpPYmplY3Q+JiYgY29va2llT2JqZWN0KQogewogICAgIENvb2tpZSBj
b29raWU7CiAKQEAgLTcwMyw3ICs3MDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEJvb3RzdHJhcFNjcmlwdChjb25zdCBTdHJpbgogICAg
IHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+IEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZShjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYg
ZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIE9wdGlvbmFs
PGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBjb25zdCBQ
cm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQpCitQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoY29uc3QgUHJvdG9j
b2w6Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgc3RkOjpv
cHRpb25hbDxib29sPiYmIGlzUmVnZXgsIGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0
SWQmIHJlcXVlc3RJZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7
CiAKQEAgLTc1Niw3ICs3NTYsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFByb3RvYwogICAgICAgICAu
cmVsZWFzZSgpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2Vh
cmNoSW5SZXNvdXJjZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25hbDxib29sPiYmIGNhc2VT
ZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKK1Byb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+Pj4gSW5z
cGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhjb25zdCBTdHJpbmcmIHRleHQsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
aXNSZWdleCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlBh
Z2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVk
TWVkaWEoY29uc3QgU3RyaW5nJgogfQogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpIHx8IEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoT3B0aW9uYWw8UHJvdG9jb2w6
OlBhZ2U6OkFwcGVhcmFuY2U+JiYgYXBwZWFyYW5jZSkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Rm9yY2VkQXBwZWFyYW5jZShzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYmIGFwcGVhcmFuY2UpCiB7CiAgICAgaWYg
KCFhcHBlYXJhbmNlKSB7CiAgICAgICAgIG1faW5zcGVjdGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFy
YW5jZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSgpCiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKE9wdGlvbmFsPGlu
dD4mJiB3aWR0aCwgT3B0aW9uYWw8aW50PiYmIGhlaWdodCkKK1Byb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKHN0ZDo6
b3B0aW9uYWw8aW50PiYmIHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBoZWlnaHQpCiB7CiAg
ICAgaWYgKHdpZHRoLmhhc192YWx1ZSgpICE9IGhlaWdodC5oYXNfdmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJTY3JlZW4gd2lkdGggYW5kIGhlaWdodCBvdmVycmlkZSBz
aG91bGQgYmUgYm90aCBzcGVjaWZpZWQgb3Igb21pdHRlZCJfcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA3OGE5
ODIyNGFiNTQ1MGUwNzI5NzUxNTcxZmUxYmI5NTdkMzAzMzAxLi5kZWMzZDAwMWIxZDQxZDRmM2Yy
NDVjYWY1MGFkZjc4OGExOTY1MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTk0LDI1ICs5NCwyNSBAQCBwdWJs
aWM6CiAgICAgLy8gUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNhYmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZWxvYWQoT3B0aW9uYWw8Ym9vbD4mJiBpZ25v
cmVDYWNoZSwgT3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3VyY2VzKTsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbG9hZChzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRl
QWxsUmVzb3VyY2VzKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IG92ZXJyaWRlVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwot
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gb3ZlcnJpZGVTZXR0
aW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNldHRpbmcsIE9wdGlvbmFsPGJvb2w+JiYg
dmFsdWUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gb3Zl
cnJpZGVTZXR0aW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNldHRpbmcsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiB2YWx1ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+
Pj4gZ2V0Q29va2llcygpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc2V0Q29va2llKFJlZjxKU09OOjpPYmplY3Q+JiYpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPj4gZ2V0UmVzb3VyY2VUcmVlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZywgYm9vbCAvKiBiYXNlNjRFbmNvZGVkICovPj4gZ2V0
UmVzb3VyY2VDb250ZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1l
SWQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBzZXRCb290c3RyYXBTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwot
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+PiBzZWFyY2hJ
blJlc291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBj
YXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgsIGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4+IHNlYXJjaEluUmVzb3VyY2VzKGNvbnN0IFN0cmluZyYsIE9wdGlv
bmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KTsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gc2VhcmNoSW5S
ZXNvdXJjZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJik7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+Pj4gc2VhcmNoSW5SZXNvdXJjZXMoY29uc3QgU3RyaW5n
Jiwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBpc1JlZ2V4KTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNob3dSdWxlcnMoYm9vbCk7CiAjZW5k
aWYKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNob3dQ
YWludFJlY3RzKGJvb2wpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc2V0RW11bGF0ZWRNZWRpYShjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykgfHwgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldEZvcmNlZEFwcGVhcmFuY2UoT3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZT4mJik7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRGb3JjZWRBcHBlYXJhbmNlKHN0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZT4mJik7CiAjZW5k
aWYKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gc25hcHNo
b3ROb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gc25hcHNob3RSZWN0KGludCB4LCBpbnQg
eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29y
ZGluYXRlU3lzdGVtKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGFyY2hpdmUoKTsKICNlbmRpZgogI2lm
ICFQTEFURk9STShDT0NPQSkKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IHNldFNjcmVlblNpemVPdmVycmlkZShPcHRpb25hbDxpbnQ+JiYgd2lkdGgsIE9wdGlv
bmFsPGludD4mJiBoZWlnaHQpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc2V0U2NyZWVuU2l6ZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8aW50PiYmIHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBoZWlnaHQpOwogI2VuZGlmCiAKICAgICAvLyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDU0MTM3MDdiNTdkOTRl
YWIyM2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUuLmI3YzZiMGViMjM0ZmIxMDMzOWVkMWFmZDI4YTU5
NzJhYTE0MDQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2Fi
bGUoKQogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KE9wdGlvbmFsPGludD4mJiBtYXhDYWxsU3Rh
Y2tEZXB0aCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKQogewog
ICAgIG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgPSB0cnVlOwogCkBAIC0xNzgsNyArMTc4LDcgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0
SW5zdHJ1bWVudHMoUmVmPEpTT046OkEKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoT3B0aW9uYWw8aW50PiYmIG1heENhbGxT
dGFja0RlcHRoKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KHN0
ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKQogewogICAgIGlmIChtX3RyYWNr
aW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDk0ZjdlZmY3MzU1Zjhj
NWNhMGMzYmJlYjU2NGQwYjU1NmJhZjE0ZjcuLjI3Zjk2OGUzMzAzZmRiZjI1Y2Y0ZTFkM2QyMWVi
ODYxMjVkNzcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNhYmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydChPcHRpb25hbDxpbnQ+JiYgbWF4Q2Fs
bFN0YWNrRGVwdGgpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc3RhcnQoc3RkOjpvcHRpb25hbDxpbnQ+JiYgbWF4Q2FsbFN0YWNrRGVwdGgpOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcCgpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QXV0b0NhcHR1cmVFbmFibGVk
KGJvb2wpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0
SW5zdHJ1bWVudHMoUmVmPEpTT046OkFycmF5PiYmKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2
YXRlOgogICAgICAgICBUaW1lbGluZVJlY29yZFR5cGUgdHlwZTsKICAgICB9OwogCi0gICAgdm9p
ZCBpbnRlcm5hbFN0YXJ0KE9wdGlvbmFsPGludD4mJiBtYXhDYWxsU3RhY2tEZXB0aCk7CisgICAg
dm9pZCBpbnRlcm5hbFN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRo
KTsKICAgICB2b2lkIGludGVybmFsU3RvcCgpOwogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHAKaW5kZXggOWFjZmU0ZGQ0YjE2MGVlOWIzODkxMGNjOWM3NWEyNDEyNGNlZmVk
Zi4uZDUxMGRjMTcwNThlMTJiYWRlOWFlMDkyZDgwMTllYTg2YzhkMzM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhZ2VBdWRpdEFnZW50OjpQYWdlQXVkaXRBZ2VudChQYWdl
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBQYWdlQXVkaXRBZ2VudDo6flBhZ2VBdWRpdEFnZW50
KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0
SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgUGFnZUF1ZGl0QWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVj
dXRpb25Db250ZXh0SWQpCiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwpAQCAtNjUsNyArNjUsNyBA
QCBJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKE9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOgogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKLUluamVjdGVkU2NyaXB0
IFBhZ2VBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNv
bnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoV1RGTW92ZShleGVjdXRpb25Db250ZXh0SWQp
KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCmluZGV4
IDY5M2ZhYzMyNzQ2OWE5MDQ0ZDg3MDE3NmZhYTJhMWQ0OWZiYTFiMzkuLjdlYjk1YTZkZmE4ZjY0
NjdmMzcwMDFkZDlhYzdhM2QyZjVkYzgzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKICAgICB+UGFnZUF1ZGl0QWdlbnQoKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChPcHRpb25hbDxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwotICAgIEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CisgICAgSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1
dGlvbkNvbnRleHRJZD4mJik7CiAKICAgICB2b2lkIHBvcHVsYXRlQXVkaXRPYmplY3QoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiBhdWRpdE9iamVjdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDVmZjk1NmMwZDUyMjc2ZjljOTQwNDg2
ZmY1YzAwZDQ1YjhmZmM1ODguLjZjMjA3MmM0Mjk5NGNlN2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJiBmcmFtZSkK
IH0KIAogCi1zdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBjYWxjdWxhdGVEaXN0YW5jZShOb2RlJiBj
aGlsZCwgTm9kZSYgYW5jZXN0b3IpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNhbGN1
bGF0ZURpc3RhbmNlKE5vZGUmIGNoaWxkLCBOb2RlJiBhbmNlc3RvcikKIHsKICAgICBzaXplX3Qg
ZGlzdGFuY2UgPSAwOwogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJB
Z2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmIChtX2RvbVN1YnRy
ZWVNb2RpZmllZEJyZWFrcG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
T3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGNsb3Nlc3REaXN0YW5jZTsKICAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBjbG9zZXN0
QnJlYWtwb2ludDsKICAgICBOb2RlKiBjbG9zZXN0QnJlYWtwb2ludE93bmVyID0gbnVsbHB0cjsK
IApAQCAtMjE4LDkgKzIxOCw5IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1v
dmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKG1fZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50
cy5pc0VtcHR5KCkgJiYgbV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gY2xvc2VzdERpc3RhbmNl
OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7CiAgICAgUmVmUHRy
PEpTQzo6QnJlYWtwb2ludD4gY2xvc2VzdEJyZWFrcG9pbnQ7Ci0gICAgT3B0aW9uYWw8UHJvdG9j
b2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBl
OworICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50
VHlwZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBlOwogICAgIE5vZGUqIGNsb3Nlc3RCcmVha3BvaW50
T3duZXIgPSBudWxscHRyOwogCiAgICAgZm9yIChhdXRvIFticmVha3BvaW50T3duZXIsIGJyZWFr
cG9pbnRdIDogbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCA3NDZkYTFhNGQzZTAzYTg3MWI3ODgwYTNlNTI4NTZiMGVkMjgzNWNkLi5lNmMxZDAx
ODBjNGJjYzg5NWQyOTU0MTI1YjQ2MTkxN2M1ZjVhZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdl
bnQoKSA9PSB0aGlzICYmIFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKTsKIH0KIAotUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAv
KiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZURlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYgY2FsbEZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0
aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYgZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYmIHJldHVy
bkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29s
PiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQorUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9w
dGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VEZWJ1Z2dlckFnZW50Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQm
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVy
ZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRl
VXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKQEAgLTEzNyw3ICsxMzcsNyBA
QCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIG1faW5zcGVjdGVkUGFnZS5jb25zb2xlKCku
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2Us
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKLUluamVj
dGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6
OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlw
dCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVj
dXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3Rh
dGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVi
dWdnZXJBZ2VudC5oCmluZGV4IGVlODE0Njc0NTI4YjkzYjQ2MDhkNzdiODViOTlmOTFlMGEwNDRi
MWUuLjE3ODgxYjExNGUzMzA5ZDdkM2I3ODBkZTBkYWIzYTIwNDRmYmJiZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dDsKIAogICAgIC8vIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJv
d24gKi8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlT25D
YWxsRnJhbWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlk
JiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBP
cHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0
dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJv
b2w+JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpOwor
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxi
b29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdElu
ZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJl
c3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAgICAv
LyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKICAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpT
Qzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwpAQCAtNzcsNyAr
NzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKTsKICAgICB2b2lkIHVubXV0
ZUNvbnNvbGUoKTsKIAotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFBhZ2UmIG1faW5zcGVj
dGVkUGFnZTsKICAgICBWZWN0b3I8VW5pcXVlUmVmPFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU+
PiBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3RhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRp
bWVBZ2VudC5jcHAKaW5kZXggMDBlNjlmMWFhMmUzZjhlYTJmNDQ1ZThkZDQ0NmRkMTZlYTYzNjNk
Zi4uYjMyZjNmNjk5YzJkMmEzNzcyODk3NjBiMjQ1YWM4MTc4NDEwMjQ1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFn
ZW50LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkCiAgICAg
bm90aWZ5Q29udGV4dENyZWF0ZWQocGFnZUFnZW50LT5mcmFtZUlkKCZmcmFtZSksIGZyYW1lLnNj
cmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCksIHdvcmxkKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQg
UGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25D
b250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRp
bWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0
SWQpIHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWluV29y
bGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CkBAIC0xODksMTMgKzE4
OSwxMyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0
IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcgogICAgICAgICAucmVsZWFzZSgpKTsKIH0K
IAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9u
YWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZVJ1bnRpbWVBZ2VudDo6ZXZhbHVh
dGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBP
cHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkLCBPcHRpb25h
bDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3
LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVz
ZXJHZXN0dXJlKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhy
b3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VS
dW50aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4
dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5
VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJH
ZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUgdXNlckdlc3R1cmVTY29w
ZShtX2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2VzdHVyZSAmJiAqZW11bGF0ZVVzZXJHZXN0
dXJlKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShleHByZXNz
aW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRlQ29tbWFuZExpbmVBUEkpLCBXVEZNb3Zl
KGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUoZXhlY3V0aW9u
Q29udGV4dElkKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZp
ZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwog
fQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gUGFn
ZVJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8
SlNPTjo6QXJyYXk+JiYgb3B0aW9uYWxBcmd1bWVudHMsIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5
VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYm
IGVtdWxhdGVVc2VyR2VzdHVyZSkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8
UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IC8qIHdhc1Rocm93biAqLz4+IFBhZ2VSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0
IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2Vz
dHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUo
bV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVy
ZSk7CiAgICAgcmV0dXJuIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24ob2Jq
ZWN0SWQsIGV4cHJlc3Npb24sIFdURk1vdmUob3B0aW9uYWxBcmd1bWVudHMpLCBXVEZNb3ZlKGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1
ZSksIFdURk1vdmUoZ2VuZXJhdGVQcmV2aWV3KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
UnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDI5ODQ2NWM1MmI0MjQ2NGMyNzMzNjU5ZTA3ZjNmNzYwMTc0
YTk1ZWIuLjZhYmEzYTJjNmU4YmJiN2EwYmNhNGYwNzgyNGNmNGRlOGNlMzZmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuaApAQCAtNTYsMTUgKzU2LDE1IEBAIHB1YmxpYzoKICAgICAvLyBSdW50aW1lQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBlbmFibGUoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IGRpc2FibGUoKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHN0ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZl
ZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJiwgT3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYm
IGdlbmVyYXRlUHJldmlldywgT3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBPcHRpb25hbDxi
b29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBjYWxsRnVuY3Rp
b25Pbihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50
cywgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0
ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyog
d2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+
IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpv
cHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0
SWQ+JiYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CisgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdh
c1Rocm93biAqLz4+IGNhbGxGdW5jdGlvbk9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8
SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJu
QnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRp
b25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24KICAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1lJik7CiAgICAgdm9pZCBk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmLCBET01XcmFwcGVyV29ybGQmKTsKIAog
cHJpdmF0ZToKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CisgICAgSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAgICAgdm9pZCBtdXRlQ29uc29sZSgpOwog
ICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpOwogICAgIHZvaWQgcmVwb3J0RXhlY3V0aW9uQ29udGV4
dENyZWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAKaW5kZXggMmI5
MDczNTdjYmNiYWI1YjUwOWU5ZDU4MmMwMzRjZDA4ZjNjNGU5Zi4uZjg5NzdkNjNiMDkzZDNiMDEy
ZWE3MmE1MzZjMDMxOWRjZTUzZjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3Bl
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVk
UGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUpCiAgICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQo
aW5zcGVjdGVkUGFnZS5jaHJvbWUoKS5jbGllbnQoKSkKLSAgICAsIG1fZ2VzdHVyZUluZGljYXRv
cihlbXVsYXRlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0
ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCkKKyAgICAsIG1fZ2VzdHVy
ZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KQog
ICAgICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91
c2VyV2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDUx
NTkwNDRiYWViMDA0ZDA3ZWI2ZDQ2ZjE3MDNiN2MyMDg3OTgxNDguLjhmN2UxNWVkOTVmMWM5MjJm
NGU0YjFlOWYwODRmMDkzMWUxMTg4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdlbnQoV29ya2VyQWdlbnRD
b250ZXh0JiBjb250ZXh0KQogCiBXb3JrZXJBdWRpdEFnZW50Ojp+V29ya2VyQXVkaXRBZ2VudCgp
ID0gZGVmYXVsdDsKIAotSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFs
PFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4
dElkKQorSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQp
CiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2VycyBhcyB0aGVy
ZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaAppbmRl
eCA4NTUyMDc5ODUwZTUwZGVlODVjZTIyNzRiOWY0NTViNDQ5NDMzNTk1Li5mZGE5NDgyNWFhNDU0
MDgwZDk2OTZkZTBiZTQ5ZDNmNDE2NzY1MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+V29ya2VyQXVkaXRBZ2VudCgpOwogCiBwcml2YXRlOgot
ICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhl
Y3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBt
X2dsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNTA0NzJj
ZDgxMDUxNDBhNzNlZGJmNzY4MjcyM2Q3YmMyZjJlNWFkMC4uZDQ2ODQzZmQ2Y2I4MDBkYWJlNTE1
MTdjZmExMDQ2MGZjYzdlNDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9n
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICBtX2dsb2JhbFNjb3BlLmFk
ZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpKSk7CiB9CiAKLUluamVjdGVkU2Ny
aXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhl
Y3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKK0luamVjdGVkU2NyaXB0IFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRp
b25Db250ZXh0SWQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElk
IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0
aW9uIGNvbnRleHQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggODQzM2UzYmNhZmY4
MzdlYzFlYTMxOGU0OGVhZDBmNjY1OWExZDU2ZC4uZjg5NmNhODY0YjlkNmNlOTc4Y2QwMTgwOGZm
NWEwMTc5M2M0YjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDYsNyArNDYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSB7IH0KICAgICB2b2lkIHVubXV0ZUNv
bnNvbGUoKSB7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
CmluZGV4IDEyYjgwMGZjNzhkYTc0ODE5ODQ0MjdlMzJkMjBhOTE1MGRiODZjMTcuLjU4MGRjMGE5
M2IzNjc3ODFmNzI4OTk1ZGIxYWVkYmViMzdjMTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVB
Z2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6
fldvcmtlclJ1bnRpbWVBZ2VudCgpID0gZGVmYXVsdDsKIAotSW5qZWN0ZWRTY3JpcHQgV29ya2Vy
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0
SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBw
b3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQi
X3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI5MmRiMzczZTYxNWMxODg3NjNkN2I4NzEz
YmRiMDA2ZjMyYjg0NTIuLmE4NGQ4NzU3ZDBlN2MzNDNjYWY2ZmMyYzgwMzVhOWM3ZGEzYmYxNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB+
V29ya2VyUnVudGltZUFnZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25D
b250ZXh0SWQ+JiYpOworICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwog
CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBtdXRlIGNvbnNvbGUgZm9yIHdvcmtlcnMuCiAgICAg
dm9pZCBtdXRlQ29uc29sZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5oCmluZGV4IDU2YzFlODFiMWE5NWZhZTYxYjA4YzZmYjAzZWE5ZDM4ZTNjOTkyNTMuLjVjZTBk
M2JiMTVlNzcxN2FkMGM2YjliY2QzNTgyMGFkNDBhYzdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTQ5LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBuZWVkc0xheW91dChjb25zdCBCb3gmKTsKIAogICAgIHZvaWQgc2V0SW50cmluc2ljV2lkdGhD
b25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmLCAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyk7
Ci0gICAgT3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gaW50cmluc2ljV2lkdGhD
b25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3go
Y29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjbGVhckludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMoY29uc3QgQm94Jik7CiAKICAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1f
aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0K
LSAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9
CisgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzOyB9CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gVHlwZTo6QmxvY2s7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ1N0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZTsgfQpAQCAtNzksNyAr
NzksNyBAQCBwcml2YXRlOgogICAgIExheW91dFN0YXRlJiBtX2xheW91dFN0YXRlOwogICAgIFJl
ZjxGbG9hdGluZ1N0YXRlPiBtX2Zsb2F0aW5nU3RhdGU7CiAgICAgSGFzaE1hcDxjb25zdCBCb3gq
LCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNG
b3JCb3hlczsKLSAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJp
bnNpY1dpZHRoQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiAgICAgLy8gRklYTUU6IFRo
aXMgbmVlZHMgV2Vha0xpc3RIYXNoU2V0CiAgICAgT3V0T2ZGbG93Qm94TGlzdCBtX291dE9mRmxv
d0JveGVzOwogICAgIFR5cGUgbV90eXBlOwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgdm9pZCBG
b3JtYXR0aW5nU3RhdGU6OmNsZWFySW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gm
IGxheW91dEJveAogICAgIG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzLnJlbW92
ZSgmbGF5b3V0Qm94KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJh
aW50c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1f
bGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkgPT0gdGhpcyk7CiAg
ICAgYXV0byBpdGVyYXRvciA9IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzLmZp
bmQoJmxheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
UGhhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRQaGFzZS5oCmluZGV4IGQzZTk4
Yzg4ZmZiMjgyOGYwYjUxNDc2YWZiMjBjNzAxYTYwOWNmODMuLjY2NzU5NTUxNjFkZDcyYjNkMDA4
YmFmNjE3MjcyYTJlZjQ0MmUyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRQaGFzZS5oCkBA
IC01MCw5ICs1MCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldChUeXBlIHR5cGUpIHsgbV90
eXBlID0gdHlwZTsgfQogICAgIHZvaWQgcmVzZXQoKSB7IG1fdHlwZSA9IHsgfTsgfQotICAgIE9w
dGlvbmFsPFR5cGU+IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8VHlwZT4gb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
LSAgICBPcHRpb25hbDxUeXBlPiBtX3R5cGU7CisgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBtX3R5
cGU7CiB9OwogCiBjbGFzcyBQaGFzZVNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRz
LmgKaW5kZXggN2JjYzViZmVmMjM2Y2NlNzE4MGMzNzM1OTk5YzdiMTIyYzUzNWJiMS4uZjkwYmNm
MDA4M2Q5Y2IyMTI5MjAxYWM2ZDkwZmRjODcxNjViN2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFVuaXRzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzIHsKIAogc3RydWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewogICAgIExheW91dFVuaXQgbG9n
aWNhbFRvcDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0OworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKIH07CiAKIHN0cnVjdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQgewpAQCAtMTkzLDEzICsxOTMsMTMgQEAgc3RydWN0IElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewogfTsKIAogc3RydWN0IE92ZXJyaWRkZW5Ib3Jpem9u
dGFsVmFsdWVzIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aDsKLSAgICBPcHRpb25h
bDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFy
Z2luOwogfTsKIAogc3RydWN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyB7CiAgICAgLy8gQ29u
c2lkZXIgY29sbGFwc2luZyBpdC4KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9OwogCiBpbmxpbmUgTGF5b3V0
VW5pdCB0b0xheW91dFVuaXQoSW5saW5lTGF5b3V0VW5pdCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L01hcmdpblR5cGVzLmgKaW5kZXggYzM5ZDU2NTM0NDU3NDRkMmZhNjIyODhmM2EyOWZkZTk2ZGZj
MWY4My4uNmM3NDVmMjBkZjlkZmI5YzI4YWE3NGZmYTJiYThmNzk4MDFiNTEwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L01hcmdpblR5cGVzLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIHN0cnVjdCBDb21wdXRlZFZlcnRpY2FsTWFyZ2lu
IHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYWZ0ZXI7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhZnRlcjsKIH07CiAKIHN0cnVjdCBVc2VkVmVydGlj
YWxNYXJnaW4gewpAQCAtNDYsOCArNDYsOCBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsK
ICAgICBOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzOwogCiAgICAgc3RydWN0
IENvbGxhcHNlZFZhbHVlcyB7Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsK
LSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYmVmb3JlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGFmdGVyOwogICAgICAgICBib29sIGlzQ29sbGFwc2VkVGhyb3VnaCB7IGZhbHNlIH07CiAgICAg
fTsKICAgICBDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzOwpAQCAtNjIsOCArNjIsOCBA
QCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAgICAgICAgc3RydWN0IFZhbHVlcyB7CiAg
ICAgICAgICAgICBib29sIGlzTm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aXZlLnZhbHVl
X29yKDApIHx8IG5lZ2F0aXZlLnZhbHVlX29yKDApOyB9CiAKLSAgICAgICAgICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IHBvc2l0aXZlOwotICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bmVnYXRpdmU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHBvc2l0aXZl
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBuZWdhdGl2ZTsKICAgICAg
ICAgICAgIGJvb2wgaXNRdWlyayB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIFZhbHVl
cyBiZWZvcmU7CkBAIC04NSw4ICs4NSw4IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBtYXJn
aW5BZnRlcihjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHVzZWRWZXJ0aWNhbE1hcmdpCiB9CiAK
IHN0cnVjdCBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gewotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IHN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGVuZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IHN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZW5k
OwogfTsKIAogc3RydWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsKQEAgLTk3LDcgKzk3LDcgQEAg
c3RydWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsKIHN0cnVjdCBQcmVjb21wdXRlZE1hcmdpbkJl
Zm9yZSB7CiAgICAgTGF5b3V0VW5pdCB1c2VkVmFsdWUoKSBjb25zdCB7IHJldHVybiBjb2xsYXBz
ZWRWYWx1ZS52YWx1ZV9vcihub25Db2xsYXBzZWRWYWx1ZSk7IH0KICAgICBMYXlvdXRVbml0IG5v
bkNvbGxhcHNlZFZhbHVlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbGxhcHNlZFZhbHVl
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29sbGFwc2VkVmFsdWU7CiAgICAgVXNl
ZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZl
QW5kTmVnYXRpdmVNYXJnaW5CZWZvcmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggOWMxZTg3ZjQzMjZiZjdlMmRlYzA4
OTEyZGU2MmU5OWZmM2NmMjA0ZC4uZDM1Zjk0MjBlNWE3MDZhNzgyMzRkYzkzZTA5MzdkZmNlZTM3
YzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExlZnRSaWdodElu
ZGV4IHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlZnQgJiYgIXJp
Z2h0O30KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVmdDsKLSAgICAgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZWZ0
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiByaWdodDsKICAgICB9OwogCiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdFBhaXIuaXNFbXB0eSgpOyB9CkBA
IC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGlj
YWxDb25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFBvc2l0aW9uOyB9CiAKICAg
ICBzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKLSAgICAgICAgT3B0aW9uYWw8UG9zaXRp
b25JbkNvbnRleHRSb290PiBsZWZ0OwotICAgICAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4
dFJvb3Q+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9v
dD4gbGVmdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHJp
Z2h0OwogICAgIH07CiAgICAgSG9yaXpvbnRhbENvbnN0cmFpbnRzIGhvcml6b250YWxDb25zdHJh
aW50cygpIGNvbnN0OwogICAgIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBib3R0b20oKSBjb25zdDsK
QEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSXRlcmF0b3IgewogcHVibGljOgot
ICAgIEl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYsIE9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4gdmVydGljYWxQb3NpdGlvbik7CisgICAgSXRlcmF0b3IoY29u
c3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0Jiwgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29u
dGV4dFJvb3Q+IHZlcnRpY2FsUG9zaXRpb24pOwogCiAgICAgY29uc3QgRmxvYXRQYWlyJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KICAgICBJdGVyYXRvciYgb3BlcmF0
b3IrKygpOwpAQCAtMTY3LDggKzE2Nyw4IEBAIHN0YXRpYyBDb21wdXRlZEhvcml6b250YWxNYXJn
aW4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMCiAKIHN0
YXRpYyBGbG9hdFBhaXI6OkxlZnRSaWdodEluZGV4IGZpbmRBdmFpbGFibGVQb3NpdGlvbihGbG9h
dEF2b2lkZXImIGZsb2F0QXZvaWRlciwgY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBm
bG9hdHMpCiB7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b21Nb3N0
OwotICAgIE9wdGlvbmFsPEZsb2F0UGFpcjo6TGVmdFJpZ2h0SW5kZXg+IGlubmVyTW9zdExlZnRB
bmRSaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gYm90dG9t
TW9zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UGFpcjo6TGVmdFJpZ2h0SW5kZXg+IGlubmVy
TW9zdExlZnRBbmRSaWdodDsKICAgICBhdXRvIGVuZCA9IExheW91dDo6ZW5kKGZsb2F0cyk7CiAg
ICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oZmxvYXRzLCB7IGZsb2F0QXZvaWRlci50b3Ao
KSB9KTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CiAgICAgICAgIEFTU0VSVCghKCpp
dGVyYXRvcikuaXNFbXB0eSgpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBMYXlvdXRQb2ludCBGbG9h
dGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IEhvcml6bwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9t
ZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgIGlmIChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigp
KSB7CiAgICAgICAgIC8vIFRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBjYW5kaWRhdGUgbmVlZHMgdG8g
Y2xlYXIgdGhlIGV4aXN0aW5nIGZsb2F0cyBpbiB0aGlzIGNvbnRleHQuCi0gICAgICAgIGF1dG8g
ZmxvYXRCb3R0b20gPSBbJl0oKSAtPiBPcHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgICAgIGF1
dG8gZmxvYXRCb3R0b20gPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsKICAg
ICAgICAgICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxlKCkuY2xlYXIoKSkgewogICAgICAgICAg
ICAgY2FzZSBDbGVhcjo6TGVmdDoKICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdEJvdHRvbSgp
OwpAQCAtMjk5LDcgKzI5OSw3IEBAIExheW91dFBvaW50IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRp
b25Gb3JOb25GbG9hdGluZ0Zsb2F0QXZvaWRlcihjb25zdCBCb3gmIGxheW91CiAgICAgcmV0dXJu
IHsgZmxvYXRBdm9pZGVyLmxlZnQoKSAtIGNvbnRhaW5pbmdCbG9ja1RvcExlZnQueCgpLCBmbG9h
dEF2b2lkZXIudG9wKCkgLSBjb250YWluaW5nQmxvY2tUb3BMZWZ0LnkoKSB9OwogfQogCi1PcHRp
b25hbDxGbG9hdGluZ0NvbnRleHQ6OlBvc2l0aW9uV2l0aENsZWFyYW5jZT4gRmxvYXRpbmdDb250
ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRpbmdDb250ZXh0OjpQb3NpdGlvbldpdGhDbGVhcmFu
Y2U+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5oYXNGbG9hdENs
ZWFyKCkpOwogICAgIEFTU0VSVChhcmVGbG9hdHNIb3Jpem9udGFsbHlTb3J0ZWQobV9mbG9hdGlu
Z1N0YXRlKSk7CkBAIC0zMDcsNyArMzA3LDcgQEAgT3B0aW9uYWw8RmxvYXRpbmdDb250ZXh0OjpQ
b3NpdGlvbldpdGhDbGVhcmFuY2U+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGkKICAg
ICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBib3R0b20g
PSBbJl0oYXV0byBmbG9hdEJvdHRvbSkgLT4gT3B0aW9uYWw8UG9zaXRpb25XaXRoQ2xlYXJhbmNl
PiB7CisgICAgYXV0byBib3R0b20gPSBbJl0oYXV0byBmbG9hdEJvdHRvbSkgLT4gc3RkOjpvcHRp
b25hbDxQb3NpdGlvbldpdGhDbGVhcmFuY2U+IHsKICAgICAgICAgaWYgKCFmbG9hdEJvdHRvbSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIC8vIDkuNS4yIENvbnRyb2xsaW5nIGZs
b3cgbmV4dCB0byBmbG9hdHM6IHRoZSAnY2xlYXInIHByb3BlcnR5CkBAIC0zNjQsMTEgKzM2NCwx
MSBAQCBPcHRpb25hbDxGbG9hdGluZ0NvbnRleHQ6OlBvc2l0aW9uV2l0aENsZWFyYW5jZT4gRmxv
YXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aQogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6Ym90dG9tKENsZWFyIHR5cGUpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6Ym90dG9tKENsZWFy
IHR5cGUpIGNvbnN0CiB7CiAgICAgLy8gVE9ETzogQ3VycmVudGx5IHRoaXMgaXMgb25seSBjYWxs
ZWQgb25jZSBmb3IgZWFjaCBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRoIGZsb2F0cyBwZXIg
bGF5b3V0LgogICAgIC8vIENhY2hlIHRoZSB2YWx1ZSBpZiB3ZSBlbmQgdXAgY2FsbGluZyBpdCBt
b3JlIGZyZXF1ZW50bHkgKGFuZCB1cGRhdGUgaXQgYXQgYXBwZW5kL3JlbW92ZSkuCi0gICAgYXV0
byBib3R0b20gPSBPcHRpb25hbDxMYXlvdXRVbml0PiB7IH07CisgICAgYXV0byBib3R0b20gPSBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6
IGZsb2F0aW5nU3RhdGUoKS5mbG9hdHMoKSkgewogICAgICAgICBpZiAoKHR5cGUgPT0gQ2xlYXI6
OkxlZnQgJiYgIWZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICB8fCAo
dHlwZSA9PSBDbGVhcjo6UmlnaHQgJiYgZmxvYXRJdGVtLmlzTGVmdFBvc2l0aW9uZWQoKSkpCkBA
IC0zNzgsOSArMzc4LDkgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRmxvYXRpbmdDb250ZXh0Ojpi
b3R0b20oQ2xlYXIgdHlwZSkgY29uc3QKICAgICByZXR1cm4gYm90dG9tOwogfQogCi1PcHRpb25h
bDxMYXlvdXRVbml0PiBGbG9hdGluZ0NvbnRleHQ6OnRvcCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6dG9wKCkgY29uc3QKIHsKLSAgICBhdXRvIHRv
cCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIHRvcCA9IHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4geyB9OwogICAgIGZvciAoYXV0byYgZmxvYXRJdGVtIDogZmxvYXRpbmdT
dGF0ZSgpLmZsb2F0cygpKQogICAgICAgICB0b3AgPSAhdG9wID8gZmxvYXRJdGVtLnJlY3RXaXRo
TWFyZ2luKCkudG9wKCkgOiBzdGQ6Om1pbigqdG9wLCBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4o
KS50b3AoKSk7CiAgICAgcmV0dXJuIHRvcDsKQEAgLTU3NSw4ICs1NzUsOCBAQCBib29sIEZsb2F0
UGFpcjo6b3BlcmF0b3IgPT0oY29uc3QgRmxvYXRQYWlyJiBvdGhlcikgY29uc3QKIAogRmxvYXRQ
YWlyOjpIb3Jpem9udGFsQ29uc3RyYWludHMgRmxvYXRQYWlyOjpob3Jpem9udGFsQ29uc3RyYWlu
dHMoKSBjb25zdAogewotICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gbGVmdEVk
Z2U7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdodEVkZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGxlZnRFZGdlOworICAgIHN0ZDo6
b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdodEVkZ2U7CiAKICAgICBpZiAobGVm
dCgpKQogICAgICAgICBsZWZ0RWRnZSA9IFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IGxlZnQoKS0+
cmVjdFdpdGhNYXJnaW4oKS5yaWdodCgpIH07CkBAIC01OTMsOCArNTkzLDggQEAgUG9zaXRpb25J
bkNvbnRleHRSb290IEZsb2F0UGFpcjo6Ym90dG9tKCkgY29uc3QKICAgICBhdXRvKiByaWdodCA9
IHRoaXMtPnJpZ2h0KCk7CiAgICAgQVNTRVJUKGxlZnQgfHwgcmlnaHQpOwogCi0gICAgYXV0byBs
ZWZ0Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRp
b25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6IHN0
ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBPcHRpb25hbDxQb3Np
dGlvbkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IHJpZ2h0LT5yZWN0V2l0
aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxsb3B0OworICAgIGF1dG8gbGVmdEJvdHRv
bSA9IGxlZnQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25J
bkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBzdGQ6Om9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgcmlnaHQtPnJlY3RX
aXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobGVmdEJv
dHRvbSAmJiByaWdodEJvdHRvbSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsZWZ0Qm90dG9t
LCAqcmlnaHRCb3R0b20pOwpAQCAtNjA1LDcgKzYwNSw3IEBAIFBvc2l0aW9uSW5Db250ZXh0Um9v
dCBGbG9hdFBhaXI6OmJvdHRvbSgpIGNvbnN0CiAgICAgcmV0dXJuICpyaWdodEJvdHRvbTsKIH0K
IAotSXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYgZmxv
YXRzLCBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHZlcnRpY2FsUG9zaXRpb24pCitJ
dGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMs
IHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB2ZXJ0aWNhbFBvc2l0aW9uKQog
ICAgIDogbV9mbG9hdHMoZmxvYXRzKQogICAgICwgbV9jdXJyZW50KGZsb2F0cykKIHsKQEAgLTYx
Myw3ICs2MTMsNyBAQCBJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6Rmxv
YXRMaXN0JiBmbG9hdHMsIE9wdGlvbmFsPFBvc2l0aW9uSW5DbwogICAgICAgICBzZXQoKnZlcnRp
Y2FsUG9zaXRpb24pOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2
aW91c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxvYXRpbmdUeXBlLCBjb25zdCBGbG9hdGluZ1N0YXRl
OjpGbG9hdExpc3QmIGZsb2F0cywgdW5zaWduZWQgY3VycmVudEluZGV4KQoraW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxv
YXRpbmdUeXBlLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdExpc3QmIGZsb2F0cywgdW5zaWdu
ZWQgY3VycmVudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbmRleCA8PSBm
bG9hdHMuc2l6ZSgpKTsKIApAQCAtNjMzLDcgKzYzMyw3IEBAIEl0ZXJhdG9yJiBJdGVyYXRvcjo6
b3BlcmF0b3IrKygpCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBhdXRvIGZp
bmRQcmV2aW91c0Zsb2F0aW5nV2l0aExvd2VyQm90dG9tID0gWyZdKEZsb2F0IGZsb2F0aW5nVHlw
ZSwgdW5zaWduZWQgY3VycmVudEluZGV4KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIGF1
dG8gZmluZFByZXZpb3VzRmxvYXRpbmdXaXRoTG93ZXJCb3R0b20gPSBbJl0oRmxvYXQgZmxvYXRp
bmdUeXBlLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHsKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50SW5kZXggPCBtX2Zsb2F0cy5zaXpl
KCkpOwogCkBAIC02NDMsNyArNjQzLDcgQEAgSXRlcmF0b3ImIEl0ZXJhdG9yOjpvcGVyYXRvcisr
KCkKIAogICAgICAgICBhdXRvIGN1cnJlbnRCb3R0b20gPSBtX2Zsb2F0c1tjdXJyZW50SW5kZXhd
LnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCk7CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGluZGV4ID0gY3VycmVudEluZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBp
bmRleCA9IGN1cnJlbnRJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAg
IGluZGV4ID0gcHJldmlvdXNGbG9hdGluZ0luZGV4KGZsb2F0aW5nVHlwZSwgbV9mbG9hdHMsICpp
bmRleCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQpAQCAtNjYzLDggKzY2Myw4IEBAIEl0ZXJh
dG9yJiBJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG5ldyBm
bG9hdGluZydzIGJvdHRvbSBlZGdlIGlzIHBvc2l0aW9uZWQgbG93ZXIgdGhhbiB0aGUgY3VycmVu
dCBvbmUgLXdoaWNoIGVzc2VudGlhbGx5IG1lYW5zIHNraXBwaW5nIGluLWJldHdlZW4gZmxvYXRz
IHRoYXQgYXJlIHBvc2l0aW9uZWQgaGlnaGVyKS4KICAgICAvLyAzLiBSZXNldCB0aGUgdmVydGlj
YWwgcG9zaXRpb24gYW5kIGFsaWduIGl0IHdpdGggdGhlIG5ldyBsZWZ0LXJpZ2h0IHBhaXIuIFRo
ZXNlIGZsb2F0cyBhcmUgbm93IHRoZSBpbm5lci1tb3N0IGJveGVzIGZvciB0aGUgY3VycmVudCB2
ZXJ0aWNhbCBwb3NpdGlvbi4KICAgICAvLyBBcyB0aGUgcmVzdWx0IHdlIGhhdmUgbW9yZSBob3Jp
em9udGFsIHNwYWNlIG9uIHRoZSBjdXJyZW50IHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8g
bGVmdEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4
dFJvb3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBh
dXRvIHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRpb25hbDxQb3NpdGlvbklu
Q29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7
CisgICAgYXV0byBsZWZ0Qm90dG9tID0gbV9jdXJyZW50LmxlZnQoKSA/IHN0ZDo6b3B0aW9uYWw8
UG9zaXRpb25JbkNvbnRleHRSb290PihtX2N1cnJlbnQubGVmdCgpLT5ib3R0b20oKSkgOiBzdGQ6
Om51bGxvcHQ7CisgICAgYXV0byByaWdodEJvdHRvbSA9IG1fY3VycmVudC5yaWdodCgpID8gc3Rk
OjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0
b20oKSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRv
bSA9PSByaWdodEJvdHRvbSkgfHwgKCFyaWdodEJvdHRvbSB8fCAobGVmdEJvdHRvbSAmJiAqbGVm
dEJvdHRvbSA8ICpyaWdodEJvdHRvbSkpOwogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJv
dHRvbSA9PSByaWdodEJvdHRvbSkgfHwgKCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRvbSAmJiAq
bGVmdEJvdHRvbSA+ICpyaWdodEJvdHRvbSkpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgSXRl
cmF0b3I6OnNldChQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZmluZEZsb2F0aW5nQmVsb3cgPSBbJl0oRmxv
YXQgZmxvYXRpbmdUeXBlKSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIGF1dG8gZmluZEZs
b2F0aW5nQmVsb3cgPSBbJl0oRmxvYXQgZmxvYXRpbmdUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiB7CiAKICAgICAgICAgQVNTRVJUKCFtX2Zsb2F0cy5pc0VtcHR5KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaAppbmRleCBlYThl
OGEwYzJjNTIzZDBiNWJlNWMwMDE1MTJlNjhmOThhNTdmN2RhLi4yZjEwNjY1MTE0N2RmZGQ4YWRh
NmRlODVkODQ3NmI2YzA1NTg5NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmgKQEAgLTUzLDI3ICs1MywyNyBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgUG9zaXRpb25XaXRoQ2xlYXJhbmNlIHsKICAgICAgICAgTGF5b3V0VW5pdCBwb3NpdGlv
bjsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY2xlYXJhbmNlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGNsZWFyYW5jZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFBv
c2l0aW9uV2l0aENsZWFyYW5jZT4gdmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3Qg
Qm94JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbldpdGhDbGVhcmFuY2U+IHZl
cnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gdG9wKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bGVmdEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRvbShDbGVhcjo6TGVmdCk7IH0KLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiByaWdodEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRvbShD
bGVhcjo6UmlnaHQpOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gdG9wKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsZWZ0Qm90
dG9tKCkgY29uc3QgeyByZXR1cm4gYm90dG9tKENsZWFyOjpMZWZ0KTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gcmlnaHRCb3R0b20oKSBjb25zdCB7IHJldHVybiBib3R0b20oQ2xl
YXI6OlJpZ2h0KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKCkgY29u
c3QgeyByZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlLmZsb2F0cygpLmlzRW1wdHkoKTsgfQogCiAg
ICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgT3B0aW9uYWw8UG9pbnRJbkNvbnRleHRS
b290PiBsZWZ0OwotICAgICAgICBPcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IHJpZ2h0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFBvaW50SW5Db250ZXh0Um9vdD4gbGVmdDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IHJpZ2h0OwogICAgIH07CiAgICAgQ29u
c3RyYWludHMgY29uc3RyYWludHMoTGF5b3V0VW5pdCBjYW5kaWRhdGVUb3AsIExheW91dFVuaXQg
Y2FuZGlkYXRlQm90dG9tKSBjb25zdDsKIAogICAgIEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbSB0
b0Zsb2F0SXRlbShjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBib3R0b20oQ2xlYXIpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYm90dG9tKENsZWFyKSBjb25zdDsKIAogICAgIGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRpbmdTdGF0ZS5sYXlvdXRT
dGF0ZSgpOyB9CiAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCBjNmIzMGM0ZTc4MDE3MTU5MGM2NjA0MDk5Y2I4MTNlZDU4MGUzMTZk
Li4yNDgxMDFhMDA5ZDcyNTYxY2RlOTA5YjI2OWZmZjdiNmZlM2RiODhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNv
bnN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAg
QVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7Ci0gICAgYXV0byBjb21w
dXRlID0gWyZdKE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgeworICAgIGF1dG8gY29t
cHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgewogICAgICAg
ICByZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkub3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5
KGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgY29uc3RyYWludHMudmVydGljYWws
IHsgdXNlZFdpZHRoLCB7IH0gfSk7CiAgICAgfTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29u
c3QgQm94JiBsYXlvdXRCb3gsCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZG
bG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29uc3RyYWlu
dHNGb3JPdXRPZkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQobGF5b3V0
Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0
aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgeworICAgIGF1dG8gY29tcHV0ZSA9IFsmXShz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQpIHsKICAgICAgICAgcmV0dXJuIGZv
cm1hdHRpbmdHZW9tZXRyeSgpLm91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsLCBjb25zdHJhaW50cy52ZXJ0aWNhbCwgeyB1c2VkSGVpZ2h0
IH0pOwogICAgIH07CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25T
dAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJFbmQ6IGxheW91dCBvdXQtb2YtZmxvdyBjb250ZW50IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91
dFN0YXRlKCkgPDwgIiByb290OiAiIDw8ICZyb290KCkpOwogfQogCi1jb25zdCBCb3hHZW9tZXRy
eSYgRm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBPcHRpb25hbDxFc2NhcGVSZWFzb24+IGVzY2FwZVJlYXNvbikgY29uc3QKK2NvbnN0IEJveEdl
b21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlv
dXRCb3gsIHN0ZDo6b3B0aW9uYWw8RXNjYXBlUmVhc29uPiBlc2NhcGVSZWFzb24pIGNvbnN0CiB7
CiAgICAgVU5VU0VEX1BBUkFNKGVzY2FwZVJlYXNvbik7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0
dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBkMjNmOWZmZDAyMjc1YTIzZTBiOGJjZWE0MDNmODYz
NzMwMWQwODk4Li5jNjZhZjUzN2JiOTNjNGMyYmNhYzQ1Mzk3MjllMDdlN2VjMTVmYTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaywKICAgICAgICAgVGFibGVOZWVkc0FjY2Vzc1Rv
VGFibGVXcmFwcGVyCiAgICAgfTsKLSAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JC
b3goY29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgY29uc3QgQm94R2VvbWV0cnkmIGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIHN0
ZDo6b3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBi
b29sIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZv
cm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBh
ZDgwMzI2OTBjMzEzZjk4ZWNiNjBkNDAxYWU1NmI4ZjQzZGU4OWE2Li5mMjllMjE4YmZkNGU4NTNl
Mzg4YTM1MjNjM2RmOGM3NTA2ZmFjMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIEZvcm1hdHRpbmdHZW9tZXRyeTo6Rm9ybWF0dGluZ0dlb21ldHJ5
KGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4CiB7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShj
b25zdCBCb3gmIGxheW91dEJveCwgSGVpZ2h0VHlwZSBoZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gm
IGxheW91dEJveCwgSGVpZ2h0VHlwZSBoZWlnaHRUeXBlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxh
eW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gaGVpZ2h0ID0gaGVpZ2h0VHlwZSA9PSBIZWlnaHRU
eXBlOjpOb3JtYWwgPyBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkgOiBoZWlnaHRUeXBlID09IEhlaWdo
dFR5cGU6Ok1pbiA/IHN0eWxlLmxvZ2ljYWxNaW5IZWlnaHQoKSA6IHN0eWxlLmxvZ2ljYWxNYXhI
ZWlnaHQoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0VmFsdWUoY29uc3QgQm94JiBsYXlvdXRCbwogICAg
IHJldHVybiB2YWx1ZUZvckxlbmd0aChoZWlnaHQsICpjb250YWluaW5nQmxvY2tIZWlnaHQpOwog
fQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVp
Z2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5n
QmxvY2tIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSBjb25zdAogewogICAgIGlmIChh
dXRvIGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpO
b3JtYWwsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCkpIHsKICAgICAgICAgaWYgKGxheW91dEJveC5z
dHlsZSgpLmJveFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCkKQEAgLTExNyw3ICsx
MTcsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVk
SGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcAogICAgIHJldHVybiB7IH07CiB9CiAKLU9w
dGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRXaWR0aFZhbHVl
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBXaWR0aFR5cGUgd2lkdGhUeXBlLCBMYXlvdXRVbml0IGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGhWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCwg
V2lkdGhUeXBlIHdpZHRoVHlwZSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29u
c3QKIHsKICAgICAvLyBBcHBsaWVzIHRvOiBhbGwgZWxlbWVudHMgZXhjZXB0IG5vbi1yZXBsYWNl
ZCBpbmxpbmVzIChvdXQtb2YtZmxvdyBjaGVjayBpcyByZXF1aXJlZCBmb3IgcG9zaXRpb25lZCA8
YnI+IGFzIGZvciBzb21lIHJlYXNvbiB3ZSBkb24ndCBibG9ja2lmeSB0aGVtKS4KICAgICBBU1NF
UlQoIWxheW91dEJveC5pc0lubGluZUJveCgpIHx8IGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoVmFsdWUoY29uc3QgQm94JiBsYXlvdXRCb3gKICAg
ICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0
cnk6OmNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVuaXQgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRp
bmdHZW9tZXRyeTo6Y29tcHV0ZWRXaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5p
dCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBjb21wdXRlZFdp
ZHRoID0gY29tcHV0ZWRXaWR0aFZhbHVlKGxheW91dEJveCwgV2lkdGhUeXBlOjpOb3JtYWwsIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSkgewogICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5z
dHlsZSgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IENvbnRhCiAgICAg
cmV0dXJuIHVzZWRDb250ZW50SGVpZ2h0OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3Bl
cnR5LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmFsdWUoY29uc3QgTGVu
Z3RoJiBnZW9tZXRyeVByb3BlcnR5LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBj
b25zdAogewogICAgIC8vICBJbiBnZW5lcmFsLCB0aGUgY29tcHV0ZWQgdmFsdWUgcmVzb2x2ZXMg
dGhlIHNwZWNpZmllZCB2YWx1ZSBhcyBmYXIgYXMgcG9zc2libGUgd2l0aG91dCBsYXlpbmcgb3V0
IHRoZSBjb250ZW50LgogICAgIGlmIChnZW9tZXRyeVByb3BlcnR5LmlzRml4ZWQoKSB8fCBnZW9t
ZXRyeVByb3BlcnR5LmlzUGVyY2VudCgpIHx8IGdlb21ldHJ5UHJvcGVydHkuaXNDYWxjdWxhdGVk
KCkpCkBAIC0yMDEsNyArMjAxLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dl
b21ldHJ5Ojpjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm8KICAgICByZXR1
cm4geyB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZp
eGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KSBjb25zdAorc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVu
Z3RoJiBnZW9tZXRyeVByb3BlcnR5KSBjb25zdAogewogICAgIGlmICghZ2VvbWV0cnlQcm9wZXJ0
eS5pc0ZpeGVkKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMTIsMjIgKzIxMiwyMiBAQCBP
cHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVkVmFsdWUoY29uc3Qg
TGVuZ3RoJiBnZW9tZXRyeVByb3BlcgogLy8gU3BlY2lmaWVzIGEgcGVyY2VudGFnZSBmb3IgZGV0
ZXJtaW5pbmcgdGhlIHVzZWQgdmFsdWUuIFRoZSBwZXJjZW50YWdlIGlzIGNhbGN1bGF0ZWQgd2l0
aCByZXNwZWN0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIGdlbmVyYXRlZCBib3gncyBjb250YWluaW5n
IGJsb2NrLgogLy8gSWYgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyBub3Qg
c3BlY2lmaWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRlcGVuZHMgb24gY29udGVudCBoZWlnaHQp
LCBhbmQgdGhpcyBlbGVtZW50IGlzIG5vdCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQsCiAvLyB0aGUg
cGVyY2VudGFnZSB2YWx1ZSBpcyB0cmVhdGVkIGFzICcwJyAoZm9yICdtaW4taGVpZ2h0Jykgb3Ig
J25vbmUnIChmb3IgJ21heC1oZWlnaHQnKS4KLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRp
bmdHZW9tZXRyeTo6Y29tcHV0ZWRNYXhIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlv
bmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZE1heEhlaWdodChjb25z
dCBCb3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0
Qm94LCBIZWlnaHRUeXBlOjpNYXgsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRNaW5IZWlnaHQoY29u
c3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wdXRlZE1pbkhlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
bXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpNaW4sIGNvbnRhaW5pbmdC
bG9ja0hlaWdodCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMYXlv
dXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAogewogICAgIHJldHVybiBjb21wdXRl
ZFdpZHRoVmFsdWUobGF5b3V0Qm94LCBXaWR0aFR5cGU6Ok1pbiwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1
dGVkTWF4V2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVuaXQgY29udGFpbmluZ0Js
b2NrV2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRNYXhXaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tcHV0ZWRXaWR0aFZh
bHVlKGxheW91dEJveCwgV2lkdGhUeXBlOjpNYXgsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIH0K
QEAgLTYwOCw4ICs2MDgsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJlcAogICAgIGF1dG8gYm90
dG9tID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKICAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFu
ZE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0
cmFpbnRzLCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpLmNvbnRlbnRIZWlnaHQ7CiAgICAgYXV0
byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZl
cnRpY2FsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlOworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5hZnRlcjsKICAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRk
aW5nVG9wKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gYm94R2VvbWV0
cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gYm9yZGVyVG9wID0gYm94
R2VvbWV0cnkuYm9yZGVyVG9wKCk7CkBAIC02OTIsOCArNjkyLDggQEAgSG9yaXpvbnRhbEdlb21l
dHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0
cnkoY29uc3QKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlKHN0eWxlLmxvZ2ljYWxMZWZ0
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1
ZShzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhv
cml6b250YWxNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLnN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5FbmQgPSBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5lbmQ7CiAgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkQ29udGVudFdp
ZHRoQW5kTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2Fs
Q29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKS5jb250ZW50V2lkdGg7CiAg
ICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3Io
MCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52
YWx1ZV9vcigwKTsKQEAgLTkwMyw3ICs5MDMsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0dlb21ldHJ5OjpmbG9hdGluZ0NvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCbwog
ICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0
PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRk
ZW5Ib3Jpem9udGFsVmFsdWVzKTsKIH0KIAotQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBS
ZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNh
bENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uc3QgUmVwbGFj
ZWRCb3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250
YWxDb25zdHJhaW50cywgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNh
bENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxhY2VkIGVs
ZW1lbnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdywgJ2lu
bGluZS1ibG9jaycgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5n
IHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTk0Niw3ICs5NDYsNyBAQCBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRDb250ZW50SGVp
Z2h0QW5kTWFyZ2luKAogICAgIHJldHVybiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9
OwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBP
cHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBP
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpIGNv
bnN0CitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBzdGQ6
Om9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+IHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0
IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykg
Y29uc3QKIHsKICAgICAvLyAxMC4zLjIgSW5saW5lLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8v
CkBAIC0xMTAzLDcgKzExMDMsNyBAQCBFZGdlcyBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVk
Qm9yZGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIH07CiB9CiAKLU9wdGlvbmFs
PEVkZ2VzPiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RWRnZXM+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSBjb25zdAogewogICAgIGlmICghbGF5b3V0Qm94LmlzUGFkZGluZ0FwcGxpY2FibGUoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExNjUsNyArMTE2NSw3IEBAIENvbnN0cmFp
bnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9y
T3V0T2ZGbG93Q29udGVuCiAgICAgICAgIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07
CiB9CiAKLUNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJv
eCwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gZXNjYXBlUmVhc29u
KSBjb25zdAorQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IEZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmVy
Qm94LCBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb24+IGVzY2Fw
ZVJlYXNvbikgY29uc3QKIHsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0KCkuZ2VvbWV0cnlGb3JCb3goY29udGFpbmVyQm94LCBlc2NhcGVSZWFzb24pOwogICAgIHJl
dHVybiB7IHsgYm94R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVu
dEJveFdpZHRoKCkgfSwgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIGNvbXB1dGVkSGVp
Z2h0KGNvbnRhaW5lckJveCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggMDYy
NGYyZjRkZTFmMTgzOTU4NDgxNDNjNDdmOGE4ZTc2ZTgxY2RmNi4uYjdmODlkOWI2ZWZmZmZmOWU3
NjkxMmNjYjdjYjIxNzkxODNmYTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC01
Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5n
Q29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250
ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94
JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250
YWxWYWx1ZXMmKSBjb25zdDsKIAotICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVw
bGFjZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiwgT3B0aW9uYWw8VmVydGljYWxDb25zdHJhaW50cz4sIGNvbnN0
IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgIENvbnRlbnRXaWR0aEFuZE1h
cmdpbiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJv
eCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIE9wdGlvbmFsPFZlcnRpY2FsQ29uc3Ry
YWludHM+LCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpIGNvbnN0OworICAgIENv
bnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgc3RkOjpv
cHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFs
dWVzJikgY29uc3Q7CisgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxhY2VkQ29u
dGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiwgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgT3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAogICAgIExheW91dFNpemUgaW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYpIGNvbnN0OwogCkBAIC02NSwyOSArNjUsMjkgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdp
ZHRoKSBjb25zdDsKIAogICAgIEVkZ2VzIGNvbXB1dGVkQm9yZGVyKGNvbnN0IEJveCYpIGNvbnN0
OwotICAgIE9wdGlvbmFsPEVkZ2VzPiBjb21wdXRlZFBhZGRpbmcoY29uc3QgQm94JiwgTGF5b3V0
VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxFZGdl
cz4gY29tcHV0ZWRQYWRkaW5nKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpIGNvbnN0OwogCiAgICAgQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBj
b25zdDsKICAgICBDb21wdXRlZFZlcnRpY2FsTWFyZ2luIGNvbXB1dGVkVmVydGljYWxNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQ
cm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVy
dHkpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShj
b25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShj
b25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1heEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94
Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRN
YXhIZWlnaHQoY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5n
QmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdC
bG9ja1dpZHRoKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1heFdp
ZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gm
LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWF4V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIGNvbnN0cmFpbkJ5TWluTWF4V2lkdGgoY29uc3QgQm94JiwgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0
aW5nQ29udGV4dFJvb3QoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAKICAgICBDb25zdHJh
aW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50KGNv
bnN0IENvbnRhaW5lckJveCYpIGNvbnN0OwotICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9u
YWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OworICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQoY29uc3QgQ29udGFpbmVyQm94Jiwgc3RkOjpvcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4
dDo6RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBj
b21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Jsb2NrRm9ybWF0dGluZ0dlb21l
dHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25z
dCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KTsgfQpAQCAtMTE0LDEwICsxMTQsMTAgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IHN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEhlaWdo
dFR5cGUgeyBNaW4sIE1heCwgTm9ybWFsIH07Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29t
cHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWlnaHRUeXBlLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3Q7CiAKICAg
ICBlbnVtIGNsYXNzIFdpZHRoVHlwZSB7IE1pbiwgTWF4LCBOb3JtYWwgfTsKLSAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZFdpZHRoVmFsdWUoY29uc3QgQm94JiwgV2lkdGhUeXBlLCBM
YXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGhWYWx1ZShjb25zdCBCb3gmLCBXaWR0aFR5cGUsIExh
eW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgY29uc3QgRm9ybWF0
dGluZ0NvbnRleHQmIG1fZm9ybWF0dGluZ0NvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYzliOGU5NTQzMzlkNDk0ZjFhZjdk
OTRhNjgzMWM2YzZlYzQzY2U3Zi4uZjgyMjgwNGUxMDdmYzliYWMxMDIyYTdmYWUwZWNkM2NkMzRj
MjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0xODksOCArMTg5LDggQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1
c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CiAgICAgLy8gSW4gYWRkaXRpb24sIGlmIHRoZSBlbGVt
ZW50IGhhcyBhbnkgZmxvYXRpbmcgZGVzY2VuZGFudHMgd2hvc2UgYm90dG9tIG1hcmdpbiBlZGdl
IGlzIGJlbG93IHRoZSBlbGVtZW50J3MgYm90dG9tIGNvbnRlbnQgZWRnZSwKICAgICAvLyB0aGVu
IHRoZSBoZWlnaHQgaXMgaW5jcmVhc2VkIHRvIGluY2x1ZGUgdGhvc2UgZWRnZXMuIE9ubHkgZmxv
YXRzIHRoYXQgcGFydGljaXBhdGUgaW4gdGhpcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYXJl
IHRha2VuCiAgICAgLy8gaW50byBhY2NvdW50LCBlLmcuLCBmbG9hdHMgaW5zaWRlIGFic29sdXRl
bHkgcG9zaXRpb25lZCBkZXNjZW5kYW50cyBvciBvdGhlciBmbG9hdHMgYXJlIG5vdC4KLSAgICBh
dXRvIHRvcCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKLSAgICBhdXRvIGJvdHRvbSA9IE9w
dGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIHRvcCA9IHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4geyB9OworICAgIGF1dG8gYm90dG9tID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB7IH07CiAgICAgaWYgKHJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7CiAgICAgICAgIHRvcCA9
IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCkuZmlyc3RJ
bkZsb3dDaGlsZCgpKSkudG9wKCk7CiAgICAgICAgIGJvdHRvbSA9IEJveEdlb21ldHJ5OjptYXJn
aW5Cb3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCkubGFzdEluRmxvd0NoaWxkKCkpKS5ib3R0
b20oKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gKmJvdHRvbSAtICp0b3A7
CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRB
dmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0
aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnN0cmFpbnRzUGFpciYg
Y29uc3RyYWludHNQYWlyKQorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRp
bmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBD
b25zdHJhaW50c1BhaXImIGNvbnN0cmFpbnRzUGFpcikKIHsKICAgICAvLyBOb3JtYWxseSB0aGUg
YXZhaWxhYmxlIHdpZHRoIGZvciBhbiBpbi1mbG93IGJsb2NrIGxldmVsIGJveCBpcyB0aGUgd2lk
dGggb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveC4KICAgICAvLyBIb3dldmVy
IChhbmQgY2FuJ3QgZmluZCBpdCBhbnl3aGVyZSBpbiB0aGUgc3BlYykgbm9uLWZsb2F0aW5nIHBv
c2l0aW9uZWQgZmxvYXQgYXZvaWRlciBibG9jayBsZXZlbCBib3hlcyBhcmUgY29uc3RyYWluZWQg
YnkgZXhpc3RpbmcgZmxvYXRzLgpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZs
b2F0aW5nCiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFy
Z2luKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QgQ29uc3RyYWludHNQYWlyJiBjb25zdHJhaW50c1BhaXIpCiB7Ci0gICAg
YXV0byBhdmFpbGFibGVXaWR0aEZsb2F0QXZvaWRlciA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsg
fTsKKyAgICBhdXRvIGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyID0gc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiB7IH07CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0QXZvaWRlcigpKSB7CiAg
ICAgICAgIC8vIEZsb2F0IGF2b2lkZXJzJyBhdmFpbGFibGUgd2lkdGggbWlnaHQgYmUgc2hydW5r
IGJ5IGV4aXN0aW5nIGZsb2F0cyBpbiB0aGUgY29udGV4dC4KICAgICAgICAgYXZhaWxhYmxlV2lk
dGhGbG9hdEF2b2lkZXIgPSB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoZmxvYXRp
bmdDb250ZXh0LCBsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpcik7CkBAIC0zNzEsNyArMzcxLDcg
QEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29u
c3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewotICAgIGF1dG8gY29tcHV0
ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIHsKKyAgICBhdXRvIGNvbXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsKICAgICAgICAgaWYg
KGxheW91dEJveC5pc0luRmxvdygpKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9t
ZXRyeSgpLmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50
cy5ob3Jpem9udGFsLCB7IHVzZWRIZWlnaHQgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYThmZDlmNWE4NjU5NWVjMjljMzFkMmEwYWQxNzJj
M2YzMjY2Y2EwMi4uMWQ3ODcxYzM1ODIxYzBmZDhiYjEyNWU5NTg4Y2ViYTQ0NzQ1YWU4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1h
cmdpbihjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZh
aWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3Qg
Qm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250
ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CiAgICAgdm9pZCB1cGRh
dGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhjb25zdCBCb3gmKTsKIAogICAgIEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBkb3duY2FzdDxCbG9j
a0Zvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRl
eCA1NTlmZTM2MzZmNDk5ODk2Nzc4NTM4NmFkNjZlMTRkNDZkZTRiZDE1Li44YzdmMzY5OTFhMWIx
Y2NjY2ZlMWYzNTA5NGQ0MzYwZDkyNGU4ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjk5LDkgKzI5OSw5IEBAIENvbnRlbnRXaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Q29udGVudFdpZHRoQW5k
TWFyZ2luKGNvbnN0CiAgICAgcmV0dXJuIGluRmxvd1JlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFy
Z2luKGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKTsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFy
Z2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoRmxv
YXRBdm9pZGVyKSBjb25zdAorQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dl
b21ldHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpIGNvbnN0
CiB7Ci0gICAgYXV0byBjb21wdXRlID0gWyZdIChhdXRvIGNvbnN0cmFpbnRzRm9yV2lkdGgsIE9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgeworICAgIGF1dG8gY29tcHV0ZSA9IFsmXSAo
YXV0byBjb25zdHJhaW50c0ZvcldpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRX
aWR0aCkgewogICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmxvYXRpbmdDb250ZW50V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94
LCBjb25zdHJhaW50c0ZvcldpZHRoLCB7IHVzZWRXaWR0aCwgeyB9IH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggM2ZhOGZhZmI2MjU3YWRi
NmNmZDk4ZTc2MDg1N2JiY2I5MzU5MDg2OS4uNWQzYjI0YWI5NjY1ZDZlMzYxZTY4NzQxNjAyNjAx
YzcxMTM0MDBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JikgY29uc3Q7CiAKLSAg
ICBDb250ZW50V2lkdGhBbmRNYXJnaW4gY29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpIGNvbnN0OworICAgIENvbnRlbnRXaWR0aEFu
ZE1hcmdpbiBjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZVdpZHRoRmxvYXRBdm9pZGVyKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGlj
YWxWYWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVp
cmtzLmNwcAppbmRleCA4ZmNmMjgyOGMzZGUwZGVmZTEyNzkzNmIxM2UwMTVjNDYwOTdlNWZmLi5l
YjUzNDI2NDQ4YmE5OWJlMzk5MTRlOTVlN2U0MjUzZDZmNGM5MDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRp
YyBib29sIG5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKICAgICByZXR1cm4g
bGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwogfQogCi1PcHRpb25h
bDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdo
dElmQXBwbGljYWJsZShjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1hcmdp
biBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJs
ZShjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVp
Z2h0QW5kTWFyZ2luKSBjb25zdAogewogICAgIEFTU0VSVChsYXlvdXRTdGF0ZSgpLmluUXVpcmtz
TW9kZSgpKTsKICAgICBpZiAoIW5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXggYTA0NDQ2NjZkNTVhY2RhNDQ3
YjEzMDRlMWM0NjQxMjQ3NDg4YTljYy4uOGQ0ZTVmODJmZjljODE0YzA0NGU4MTcyZmFiZjM0YTNm
YjgyYTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIEJsb2NrRm9ybWF0dGluZ1F1aXJrcyA6IHB1YmxpYyBGb3Jt
YXR0aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBCbG9ja0Zvcm1hdHRpbmdRdWlya3MoY29uc3Qg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gc3Ry
ZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvbnN0IEJveCYsIENvbnRlbnRIZWlnaHRB
bmRNYXJnaW4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVk
SW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvbnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJn
aW4pIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFy
Z2luKGNvbnN0IEJveCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQmVm
b3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggNGI0OWJi
NTJmMjIwM2ZlZjUzZjY1YTYyNDlkODkwMzE2NjcxNmY5MC4uM2ZjOTcyZmE4NDZlNzQ5YmNhNjFl
MmYzMDI2ZjE4OGZmMDQ0MWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2
ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OmNvbXB1dGUKICAg
ICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2Nr
TWFyZ2luQ29sbGFwc2U6Om1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVB
bmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBtYXJnaW5WYWx1ZXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpblZhbHVlKFVzZWRWZXJ0aWNh
bE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBtYXJnaW5WYWx1ZXMpIGNv
bnN0CiB7CiAgICAgLy8gV2hlbiB0d28gb3IgbW9yZSBtYXJnaW5zIGNvbGxhcHNlLCB0aGUgcmVz
dWx0aW5nIG1hcmdpbiB3aWR0aCBpcyB0aGUgbWF4aW11bSBvZiB0aGUgY29sbGFwc2luZyBtYXJn
aW5zJyB3aWR0aHMuCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbmVnYXRpdmUgbWFyZ2lucywgdGhl
IG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgbmVnYXRpdmUgYWRqb2luaW5n
IG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgbWF4aW11bQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxh
cHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuaAppbmRleCA0ZDc1NmMxNjEzMTg5ZGExMjQxYTA4NzFiZGQ4ODg5
MDE2NTNhMWI0Li44MTJjMWY5MTA5NjAxNDBjN2RkYjBjOTAxMzk1NjM1Y2I2ZTg5ZGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaApAQCAtNzIsNyArNzIsNyBAQCBw
cml2YXRlOgogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6
OlZhbHVlcyBwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUoY29uc3QgQm94
JiwgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMsIGNvbnN0IEJsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5JikgY29uc3Q7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2
ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHByZWNvbXB1dGVkUG9zaXRpdmVOZWdhdGl2ZVZhbHVl
cyhjb25zdCBCb3gmLCBjb25zdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeSYpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFsdWUoVXNlZFZlcnRpY2FsTWFyZ2luOjpQ
b3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IG1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmRO
ZWdhdGl2ZVBhaXI6OlZhbHVlcykgY29uc3Q7CiAKICAgICBib29sIGhhc0NsZWFyYW5jZShjb25z
dCBCb3gmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCA4ZTRiNzMyNjExYzgzY2YwMjRkNTI2NGMyYzg0ZmNhMzFlMGMwNGVlLi45ZjAwODEy
ZWJmNGNmNmI4Njc4MWE5N2Q4NDA1YTIzNDAxNTA4ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxl
Qm94KGNvbnN0CiAgICAgQVNTRVJUKHRhYmxlQm94LmlzVGFibGVCb3goKSk7CiAgICAgLy8gVGFi
bGUgaXMgYSBzcGVjaWFsIEJGQyBjb250ZW50LiBJdHMgaGVpZ2h0IGlzIG1haW5seSBkcml2ZW4g
YnkgdGhlIGNvbnRlbnQuIENvbXB1dGVkIGhlaWdodCwgbWluLWhlaWdodCBhbmQgbWF4LWhlaWdo
dCBhcmUgYWxsCiAgICAgLy8gYWxyZWFkeSBiZWVuIHRha2VuIGludG8gYWNjb3VudCBkdXJpbmcg
dGhlIFRGQyBsYXlvdXQuCi0gICAgYXV0byBvdmVycmlkZGVuVGFibGVIZWlnaHQgPSBbJl0oKSAt
PiBPcHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgYXV0byBvdmVycmlkZGVuVGFibGVIZWlnaHQg
PSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsKICAgICAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ1F1
aXJrcygpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJsZUJveCk7CiAgICAgICAgIGlmICh0YWJs
ZUJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxN2Y3Mzg1ZjQ1YWQ2YjJiZGUzYzYyMWExNjJk
Mjg5NjM3N2MxZTIzLi4zN2E2NWI1YzRmZjg5MmEyNGFkNDJjNjk2NzUyMmQyMmJiYTI5ZWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTm9uQ29udGVudFJ1bnNPbmx5KGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCYgY29udGludW91c0NvbnRl
bnQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJzdFRleHRSdW5JbmRl
eChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVv
dXNDb250ZW50KQogewogICAgIGF1dG8mIHJ1bnMgPSBjb250aW51b3VzQ29udGVudC5ydW5zKCk7
CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4
KSB7CkBAIC0xNjIsMTEgKzE2MiwxMSBAQCBzdHJ1Y3QgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCB7
CiAgICAgICAgICAgICAvLyBUcmFpbGluZyBjb250ZW50IGlzIGVpdGhlciB0aGUgcnVuJ3MgbGVm
dCBzaWRlICh3aGVuIHdlIGJyZWFrIHRoZSBydW4gc29tZXdoZXJlIGluIHRoZSBtaWRkbGUpIG9y
IHRoZSBwcmV2aW91cyBydW4uCiAgICAgICAgICAgICAvLyBTb21ldGltZXMgdGhlIGJyZWFraW5n
IHBvc2l0aW9uIGlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgcnVuLCBzbyB0
aGVyZSdzIG5vIHRyYWlsaW5nIHJ1biBhdCBhbGwuCiAgICAgICAgICAgICBib29sIG92ZXJmbG93
cyB7IGZhbHNlIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6
UGFydGlhbFJ1bj4gcGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
bGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBwYXJ0aWFsUnVuIHsgfTsKICAgICAgICAg
fTsKLSAgICAgICAgT3B0aW9uYWw8VHJhaWxpbmdDb250ZW50PiB0cmFpbGluZ0NvbnRlbnQgeyB9
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYWlsaW5nQ29udGVudD4gdHJhaWxpbmdDb250ZW50
IHsgfTsKICAgICB9OwotICAgIE9wdGlvbmFsPEJyZWFraW5nUG9zaXRpb24+IGJyZWFraW5nUG9z
aXRpb24geyB9OyAvLyBXaGVyZSB3ZSBhY3R1YWxseSBicmVhayB0aGlzIG92ZXJmbG93aW5nIGNv
bnRlbnQuCisgICAgc3RkOjpvcHRpb25hbDxCcmVha2luZ1Bvc2l0aW9uPiBicmVha2luZ1Bvc2l0
aW9uIHsgfTsgLy8gV2hlcmUgd2UgYWN0dWFsbHkgYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBjb250
ZW50LgogfTsKIAogSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudChjb25zdCBDb250aW51b3VzQ29udGVudCYg
b3ZlcmZsb3dDb250ZW50LCBjb25zdCBMaW5lU3RhdHVzJiBsaW5lU3RhdHVzKSBjb25zdApAQCAt
MTk5LDcgKzE5OSw3IEBAIElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVu
dEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQoY29uCiAKICAgICBzaXplX3Qgb3Zl
cmZsb3dpbmdSdW5JbmRleCA9IDA7CiAgICAgaWYgKGhhc1RleHRSdW4oY29udGludW91c0NvbnRl
bnQpKSB7Ci0gICAgICAgIGF1dG8gdHJ5QnJlYWtpbmdDb250ZW50V2l0aFRleHQgPSBbJl0oKSAt
PiBPcHRpb25hbDxSZXN1bHQ+IHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0NvbnRlbnRXaXRo
VGV4dCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiB7CiAgICAgICAgICAgICAvLyAx
LiBUaGlzIHRleHQgY29udGVudCBpcyBub3QgYnJlYWthYmxlLgogICAgICAgICAgICAgLy8gMi4g
VGhpcyBicmVha2FibGUgdGV4dCBjb250ZW50IGRvZXMgbm90IGZpdCBhdCBhbGwuIE5vdCBldmVu
IHRoZSBmaXJzdCBnbHlwaC4gVGhpcyBpcyBhIHZlcnkgc3BlY2lhbCBjYXNlLgogICAgICAgICAg
ICAgLy8gMy4gV2UgY2FuIGJyZWFrIHRoZSBjb250ZW50IGJ1dCBpdCBzdGlsbCBvdmVyZmxvd3Mu
CkBAIC0yNzgsNyArMjc4LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxpbmVDb250ZW50
QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAgICAgICAgcmV0
dXJuIGlzV3JhcHBpbmdBbGxvd2VkKHJ1bi5pbmxpbmVJdGVtKTsKICAgICB9OwogCi0gICAgYXV0
byBmaW5kVHJhaWxpbmdSdW5JbmRleCA9IFsmXSAoYXV0byBicmVha2FibGVSdW5JbmRleCkgLT4g
T3B0aW9uYWw8c2l6ZV90PiB7CisgICAgYXV0byBmaW5kVHJhaWxpbmdSdW5JbmRleCA9IFsmXSAo
YXV0byBicmVha2FibGVSdW5JbmRleCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKICAgICAg
ICAgLy8gV2hlbiB0aGUgYnJlYWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUgcnVuLCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBwcmV2aW91cyBvbmUuCiAgICAgICAgIGlm
ICghYnJlYWthYmxlUnVuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMzA4LDcg
KzMwOCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnBy
b2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAgICAgLy8gV2UgaGF2ZSB0byBoYXZl
IGFuIG92ZXJmbG93aW5nIHJ1bi4KICAgICBSRUxFQVNFX0FTU0VSVChvdmVyZmxvd2luZ1J1bklu
ZGV4IDwgcnVucy5zaXplKCkpOwogCi0gICAgYXV0byB0cnlCcmVha2luZ092ZXJmbG93aW5nUnVu
ID0gWyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1biA9IFsmXSgpIC0+IHN0
ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gewog
ICAgICAgICBhdXRvIG92ZXJmbG93aW5nUnVuID0gcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XTsK
ICAgICAgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihvdmVyZmxvd2luZ1J1bikpCiAgICAgICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMzI4LDcgKzMyOCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQg
SW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChj
CiAgICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9IHRyeUJyZWFraW5nT3ZlcmZsb3dpbmdS
dW4oKSkKICAgICAgICAgcmV0dXJuIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgYnJlYWtpbmdQb3Np
dGlvbiB9OwogCi0gICAgYXV0byB0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5z
ID0gWyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdQcmV2aW91c05vbk92ZXJmbG93aW5nUnVucyA9
IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQ
b3NpdGlvbj4gewogICAgICAgICBhdXRvIHByZXZpb3VzQ29udGVudFdpZHRoID0gYWNjdW11bGF0
ZWRDb250ZW50V2lkdGg7CiAgICAgICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVu
SW5kZXg7IGluZGV4LS07KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2luZGV4XTsK
QEAgLTM1MSw3ICszNTEsNyBAQCBPdmVyZmxvd2luZ1RleHRDb250ZW50IElubGluZUNvbnRlbnRC
cmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0aFRleHQoYwogICAgIGlmIChhdXRv
IGJyZWFraW5nUG9zaXRpb24gPSB0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5z
KCkpCiAgICAgICAgIHJldHVybiB7IG92ZXJmbG93aW5nUnVuSW5kZXgsIGJyZWFraW5nUG9zaXRp
b24gfTsKIAotICAgIGF1dG8gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkg
LT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gewor
ICAgIGF1dG8gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkgLT4gc3RkOjpv
cHRpb25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiB7CiAgICAg
ICAgIGF1dG8gbmV4dENvbnRlbnRXaWR0aCA9IGFjY3VtdWxhdGVkQ29udGVudFdpZHRoICsgcnVu
c1tvdmVyZmxvd2luZ1J1bkluZGV4XS5sb2dpY2FsV2lkdGg7CiAgICAgICAgIGZvciAoYXV0byBp
bmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBpbmRleCA8IHJ1bnMuc2l6ZSgpOyArK2lu
ZGV4KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2luZGV4XTsKQEAgLTQyMyw3ICs0
MjMsNyBAQCBPcHRpb25TZXQ8SW5saW5lQ29udGVudEJyZWFrZXI6OldvcmRCcmVha1J1bGU+IElu
bGluZUNvbnRlbnRCcmVha2VyOjp3b3JkQnJlYWtCZQogICAgIHJldHVybiBicmVha1J1bGVzOwog
fQogCi1PcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29u
dGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6
UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVu
aXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50
QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4
dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5l
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBh
dmFpbGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24p
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG92ZXJmbG93aW5nUnVuLmlubGluZUl0ZW0uaXNUZXh0KCkp
OwogICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG92
ZXJmbG93aW5nUnVuLmlubGluZUl0ZW0pOwpAQCAtNDM1LDcgKzQzNSw3IEBAIE9wdGlvbmFsPElu
bGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5
QnJlYWtpbmdUZXh0CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoYnJlYWtSdWxlcy5j
b250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGllcykpIHsKLSAg
ICAgICAgYXV0byB0cnlCcmVha2luZ0F0SHlwaGVuYXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+
IE9wdGlvbmFsPFBhcnRpYWxSdW4+IHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0SHlwaGVu
YXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4gewog
ICAgICAgICAgICAgLy8gRmluZCB0aGUgaHlwaGVuIHBvc2l0aW9uIGFzIGZvbGxvd3M6CiAgICAg
ICAgICAgICAvLyAxLiBTcGxpdCB0aGUgdGV4dCBieSB0YWtpbmcgdGhlIGh5cGhlbiB3aWR0aCBp
bnRvIGFjY291bnQKICAgICAgICAgICAgIC8vIDIuIEZpbmQgdGhlIGxhc3QgaHlwaGVuIHBvc2l0
aW9uIGJlZm9yZSB0aGUgc3BsaXQgcG9zaXRpb24KQEAgLTUwMCw3ICs1MDAsNyBAQCBPcHRpb25h
bDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6
OnRyeUJyZWFraW5nVGV4dAogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgSW5saW5lQ29udGVu
dEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCit2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVu
aXQ+IGNvbGxhcHNpYmxlV2lkdGgpCiB7CiAgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZUl0ZW0s
IGxvZ2ljYWxXaWR0aCB9KTsKICAgICBtX2xvZ2ljYWxXaWR0aCA9IGNsYW1wVG88SW5saW5lTGF5
b3V0VW5pdD4obV9sb2dpY2FsV2lkdGggKyBsb2dpY2FsV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmgKaW5kZXggNWQyZDRkNmNlOGMxODkzMWQ1ZmU4YjUw
YTM3MzAxZDRhY2E4ZTdkOS4uYzZkOTVhNjk1MmFiYTJkNDQzOTJmYWM0ZjhkZDMwNmE2MzkxYzcw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5oCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFydGlhbFJ1biB7CiAgICAgICAgIHNpemVf
dCBsZW5ndGggeyAwIH07CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsg
MCB9OwotICAgICAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBoeXBoZW5XaWR0aCB7IH07
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaHlwaGVuV2lkdGggeyB9
OwogICAgIH07CiAgICAgZW51bSBjbGFzcyBJc0VuZE9mTGluZSB7IE5vLCBZZXMgfTsKICAgICBz
dHJ1Y3QgUmVzdWx0IHsKQEAgLTU4LDExICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAg
ICAgICAgIHN0cnVjdCBQYXJ0aWFsVHJhaWxpbmdDb250ZW50IHsKICAgICAgICAgICAgIHNpemVf
dCB0cmFpbGluZ1J1bkluZGV4IHsgMCB9OwotICAgICAgICAgICAgT3B0aW9uYWw8UGFydGlhbFJ1
bj4gcGFydGlhbFJ1bjsgLy8gbnVsbG9wdCBwYXJ0aWFsIHJ1biBtZWFucyB0aGUgdHJhaWxpbmcg
cnVuIGlzIGEgY29tcGxldGUgcnVuLgorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFs
UnVuPiBwYXJ0aWFsUnVuOyAvLyBudWxsb3B0IHBhcnRpYWwgcnVuIG1lYW5zIHRoZSB0cmFpbGlu
ZyBydW4gaXMgYSBjb21wbGV0ZSBydW4uCiAgICAgICAgIH07CiAgICAgICAgIEFjdGlvbiBhY3Rp
b24geyBBY3Rpb246OktlZXAgfTsKICAgICAgICAgSXNFbmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJ
c0VuZE9mTGluZTo6Tm8gfTsKLSAgICAgICAgT3B0aW9uYWw8UGFydGlhbFRyYWlsaW5nQ29udGVu
dD4gcGFydGlhbFRyYWlsaW5nQ29udGVudCB7IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGFy
dGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWlsaW5nQ29udGVudCB7IH07CiAgICAgICAg
IGNvbnN0IElubGluZUl0ZW0qIGxhc3RXcmFwT3Bwb3J0dW5pdHlJdGVtIHsgbnVsbHB0ciB9Owog
ICAgIH07CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGhhc1RyYWls
aW5nQ29sbGFwc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gISFjb2xsYXBzaWJsZUxvZ2lj
YWxXaWR0aCgpOyB9CiAgICAgICAgIGJvb2wgaXNGdWxseUNvbGxhcHNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbG9naWNhbFdpZHRoKCkgPT0gY29sbGFwc2libGVMb2dpY2FsV2lkdGgoKTsgfQogCi0g
ICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFwc2libGVXaWR0aCk7
CisgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJs
ZVdpZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAgIHN0cnVjdCBSdW4gewpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250
ZW50TG9naWNhbFJpZ2h0IHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJs
ZVdpZHRoIHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbGxhcHNpYmxlV2lkdGgg
eyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nU29mdEh5
cGhlbldpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWls
aW5nU29mdEh5cGhlbldpZHRoOwogICAgICAgICBib29sIGhhc0Z1bGx5Q29sbGFwc2libGVUcmFp
bGluZ1J1biB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uIHsgZmFsc2Ug
fTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlc3VsdCBwcm9j
ZXNzT3ZlcmZsb3dpbmdDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiwgY29uc3QgTGlu
ZVN0YXR1cyYpIGNvbnN0OwogICAgIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgcHJvY2Vzc092ZXJm
bG93aW5nQ29udGVudFdpdGhUZXh0KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiwgY29uc3QgTGlu
ZVN0YXR1cyYpIGNvbnN0OwotICAgIE9wdGlvbmFsPFBhcnRpYWxSdW4+IHRyeUJyZWFraW5nVGV4
dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd1J1biwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxl
V2lkdGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBhcnRpYWxSdW4+IHRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBD
b250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwg
Ym9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0OwogCiAgICAg
ZW51bSBjbGFzcyBXb3JkQnJlYWtSdWxlIHsKICAgICAgICAgQXRBcmJpdHJhcnlQb3NpdGlvbiAg
ICAgICAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggZWU4MWExNzExNzM4OGNjZjFmODg2YWI2Y2FkOGI5NjQ1OWYzNjU0
ZC4uNzg2NGFlY2Q3MjE2ZmRjMjAyMDJlZDdiNzlmZDIyMGY3NzE3MDUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTgyLDkgKzE4
Miw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRl
bXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgc3RydWN0IFByZXZpb3VzTGluZSB7
CiAgICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CiAgICAgICAgIHNp
emVfdCBvdmVyZmxvd0NvbnRlbnRMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOwogICAgIH07Ci0gICAgT3B0
aW9uYWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgc3RkOjpvcHRpb25hbDxQcmV2
aW91c0xpbmU+IHByZXZpb3VzTGluZTsKICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gZm9ybWF0
dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZs
b2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0YXRlIH07CiAgICAgYXV0byBpc0ZpcnN0
TGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmlzRW1wdHkoKTsKQEAgLTM1NSw3ICszNTUs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSG9yaXpvbnRhbE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29ucwogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGF1dG8g
Y29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpIHsKKyAgICBhdXRv
IGNvbXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpIHsKICAg
ICAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0aW5nQ29udGVudFdpZHRoQW5kTWFyZ2lu
KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IHVzZWRXaWR0aCwgeyB9IH0pOwog
ICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKQEAgLTM4Nyw3ICszODcs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGF1dG8g
Y29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSB7CisgICAgYXV0
byBjb21wdXRlID0gWyZdKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgewog
ICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkuZmxvYXRpbmdDb250ZW50SGVpZ2h0QW5kTWFy
Z2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IHVzZWRIZWlnaHQgfSk7CiAg
ICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggYmM2YzBlNTc1OGQ0
NDJkZjk3OWY1Y2I1MDcxODYxNjM1NmVjZjk4YS4uOThiOTRhOWY4ZjkzNTE0ZTQ2YjRkMjFkY2Vj
NDNhMjIxOTJjNjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFNp
bXBsaWZpZWRWZXJ0aWNhbEFsaWdubWVudCB7CiAgICAgICAgIFNpbXBsaWZpZWRWZXJ0aWNhbEFs
aWdubWVudChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgcm9vdElubGluZUJveCk7CiAK
LSAgICAgICAgc3RhdGljIGJvb2wgY2FuVXNlU2ltcGxpZmllZEFsaWdubWVudChjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgcm9vdElubGluZUJveCwgY29uc3QgTGluZUJveDo6SW5saW5l
TGV2ZWxCb3gmLCBPcHRpb25hbDxjb25zdCBCb3hHZW9tZXRyeT4gaW5saW5lTGV2ZWxCb3hHZW9t
ZXRyeSk7CisgICAgICAgIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRBbGlnbm1lbnQoY29u
c3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIHJvb3RJbmxpbmVCb3gsIGNvbnN0IExpbmVCb3g6
OklubGluZUxldmVsQm94Jiwgc3RkOjpvcHRpb25hbDxjb25zdCBCb3hHZW9tZXRyeT4gaW5saW5l
TGV2ZWxCb3hHZW9tZXRyeSk7CiAKICAgICAgICAgdm9pZCBhbGlnbihMaW5lQm94OjpJbmxpbmVM
ZXZlbEJveCYpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIEhhbmdpbmdUcmFpbGluZ1do
aXRlc3BhY2VDb250ZW50IGNvbGxlY3RIYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudCgK
ICAgICByZXR1cm4gaGFuZ2luZ0NvbnRlbnQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJbmxpbmVM
YXlvdXRVbml0PiBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IExpbmU6OlJ1bkxpc3Qm
IHJ1bnMsIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dp
Y2FsV2lkdGgsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0xh
c3RMaW5lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaG9yaXpvbnRh
bEFsaWdubWVudE9mZnNldChjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zLCBUZXh0QWxpZ25Nb2Rl
IHRleHRBbGlnbiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdpZHRoLCBJbmxpbmVMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgsIGJvb2wgaXNMYXN0TGluZSkKIHsKICAgICBhdXRv
IGF2YWlsYWJsZVdpZHRoID0gbGluZUxvZ2ljYWxXaWR0aCAtIGNvbnRlbnRMb2dpY2FsV2lkdGg7
CiAgICAgYXV0byBoYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudCA9IGNvbGxlY3RIYW5n
aW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudChydW5zLCBpc0xhc3RMaW5lKTsKQEAgLTIyOCw3
ICsyMjgsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RBbmRBbGlnbklubGluZUxl
dmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTAogICAgIC8vIEZJWE1FOiBBZGQgZmFz
dCBwYXRoIHN1cHBvcnQgZm9yIGxpbmUtaGVpZ2h0IGNvbnRlbnQuCiAgICAgc2ltcGxpZmllZFZl
cnRpY2FsQWxpZ25tZW50LnNldEVuYWJsZWQobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUo
KSAmJiByb290Qm94KCkuc3R5bGUoKS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpKTsKIAotICAg
IGF1dG8gc2ltcGxpZmllZEFsaWduVmVydGljYWxseUlmQXBwbGljYWJsZSA9IFsmXShhdXRvJiBp
bmxpbmVMZXZlbEJveCwgT3B0aW9uYWw8Y29uc3QgQm94R2VvbWV0cnk+IGJveEdlb21ldHJ5KSB7
CisgICAgYXV0byBzaW1wbGlmaWVkQWxpZ25WZXJ0aWNhbGx5SWZBcHBsaWNhYmxlID0gWyZdKGF1
dG8mIGlubGluZUxldmVsQm94LCBzdGQ6Om9wdGlvbmFsPGNvbnN0IEJveEdlb21ldHJ5PiBib3hH
ZW9tZXRyeSkgewogICAgICAgICBpZiAoIXNpbXBsaWZpZWRWZXJ0aWNhbEFsaWdubWVudC5pc0Vu
YWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFTaW1wbGlmaWVkVmVy
dGljYWxBbGlnbm1lbnQ6OmNhblVzZVNpbXBsaWZpZWRBbGlnbm1lbnQocm9vdElubGluZUJveCwg
aW5saW5lTGV2ZWxCb3gsIGJveEdlb21ldHJ5KSkgewpAQCAtNDAxLDggKzQwMSw4IEBAIHZvaWQg
TGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJv
eGVzVmVydGljYWxseShMaW5lCiAgICAgICAgIH07CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTGlu
ZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxC
b3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKIAotICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2Fs
VG9wID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBhdXRvIG1heGlt
dW1Mb2dpY2FsQm90dG9tID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OworICAgICAg
ICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0
PiB7IH07CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IHsgfTsKICAgICAgICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5p
bmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gsIGxpbmVCb3gpKSB7CiAg
ICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAg
ICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290SW5saW5lQm94LmxheW91dEJvdW5k
cygpLmhlaWdodCgpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNv
bXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5l
CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBJbmxpbmVM
YXlvdXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXA7CiAgICAg
ICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoJnJvb3RJbmxp
bmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKIAotICAgICAgICBhdXRvIG1heGltdW1Ub3BP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5p
dD4geyB9OworICAgICAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJh
c2VsaW5lID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CiAgICAgICAgIGlm
IChmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChyb290SW5s
aW5lQm94LCBsaW5lQm94KSkKICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAK
QEAgLTYyMiw3ICs2MjIsNyBAQCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2FsQWxp
Z25tZW50OjpTaW1wbGlmaWVkVmVydGljYWxBbGlnbm1lbnQoY29uc3QgTAogICAgIGFkanVzdChy
b290SW5saW5lQm94KTsKIH0KIAotYm9vbCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRp
Y2FsQWxpZ25tZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50KGNvbnN0IExpbmVCb3g6Oklu
bGluZUxldmVsQm94JiByb290SW5saW5lQm94LCBjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eCYgaW5saW5lTGV2ZWxCb3gsIE9wdGlvbmFsPGNvbnN0IEJveEdlb21ldHJ5PiBpbmxpbmVMZXZl
bEJveEdlb21ldHJ5KQorYm9vbCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2FsQWxp
Z25tZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50KGNvbnN0IExpbmVCb3g6OklubGluZUxl
dmVsQm94JiByb290SW5saW5lQm94LCBjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5s
aW5lTGV2ZWxCb3gsIHN0ZDo6b3B0aW9uYWw8Y29uc3QgQm94R2VvbWV0cnk+IGlubGluZUxldmVs
Qm94R2VvbWV0cnkpCiB7CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2
ZWxCb3goKSkgewogICAgICAgICBBU1NFUlQoaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggNjkyZTk2NjM4MzhlZDMyYThkZGIxOWI1ZmVh
ZDI0Njk3OTlmMWMxMC4uNmFjYmM0YmJmZTMwZGJhMjg3OTUwZTQ2YWM3ZjIwZWI4NTE4MjIwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCBjcmVhdGVHZW5lcmljSW5s
aW5lTGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAK
ICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZWxpbmU7IH0KLSAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gZGVzY2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzY2VudDsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KICAgICAgICAg
Ly8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMK
ICAgICAgICAgc3RydWN0IExheW91dEJvdW5kcyB7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCArIGRlc2NlbnQ7IH0KQEAgLTEyOCw3
ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAg
ICAgICAgTGF5b3V0Qm91bmRzIG1fbGF5b3V0Qm91bmRzOwogICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IG1fYmFzZWxpbmUgeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IG1fZGVzY2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2Rl
c2NlbnQ7CiAgICAgICAgIGJvb2wgbV9oYXNDb250ZW50IHsgZmFsc2UgfTsKICAgICAgICAgVHlw
ZSBtX3R5cGUgeyBUeXBlOjpJbmxpbmVCb3ggfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGEzNTk5M2QzZjVmNGFlMDQ1MTk5YThlNDhkM2Fl
ODkxZjE0NzBiNmEuLmYzOTE0YjRiMDAyNmEwYzhjYTkxZDE3MjRmODJlNWEzNGQxYjY0NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTE3Miw3ICsxNzIs
NyBAQCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50KGJvb2wgaWdu
b3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKQogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5s
aW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAgICBBU1NFUlQoaW5saW5lSXRl
bS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAgICBhdXRvIGNvbGxh
cHNpYmxlV2lkdGggPSBbJl0oKSAtPiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAg
YXV0byBjb2xsYXBzaWJsZVdpZHRoID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7CiAgICAgICAgIGlmICghaW5saW5lSXRlbS5pc1RleHQoKSkKICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5s
aW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIExpbmVCdWlsZGVy
OjpMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQsCiB7CiB9CiAKLUxpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRl
cjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0
UmFuZ2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoLCBjb25zdCBJbmxpbmVSZWN0JiBpbml0
aWFsTGluZUxvZ2ljYWxSZWN0LCBib29sIGlzRmlyc3RMaW5lKQorTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1S
YW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCwg
Y29uc3QgSW5saW5lUmVjdCYgaW5pdGlhbExpbmVMb2dpY2FsUmVjdCwgYm9vbCBpc0ZpcnN0TGlu
ZSkKIHsKICAgICBpbml0aWFsaXplKGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoaW5pdGlhbExp
bmVMb2dpY2FsUmVjdCwgaXNGaXJzdExpbmUpKTsKIApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQg
TGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgVXNlZENvbnN0cmFpbnRzJiBsaW5lQ29uc3Ry
YWludHMpCiAgICAgbV9jb250ZW50SXNDb25zdHJhaW5lZEJ5RmxvYXQgPSBsaW5lQ29uc3RyYWlu
dHMuaXNDb25zdHJhaW5lZEJ5RmxvYXQ7CiB9CiAKLUxpbmVCdWlsZGVyOjpDb21taXR0ZWRDb250
ZW50IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBuZWVkc0xheW91dFJhbmdlLCBzaXplX3QgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBP
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRoKQorTGluZUJ1aWxk
ZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBwYXJ0aWFsTGVhZGlu
Z0NvbnRlbnRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xv
Z2ljYWxXaWR0aCkKIHsKICAgICBhdXRvIGxpbmVDYW5kaWRhdGUgPSBMaW5lQ2FuZGlkYXRlIHsg
bGF5b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKSB9OwogICAg
IGF1dG8gaW5saW5lQ29udGVudEJyZWFrZXIgPSBJbmxpbmVDb250ZW50QnJlYWtlciB7IH07CkBA
IC0zNzUsNyArMzc1LDcgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRl
cjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAgICByZXR1cm4gbGlu
ZVJhbmdlOwogfQogCi1PcHRpb25hbDxIb3Jpem9udGFsQ29uc3RyYWludHM+IExpbmVCdWlsZGVy
OjpmbG9hdENvbnN0cmFpbnRzKGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBMaW5lQnVpbGRlcjo6Zmxv
YXRDb25zdHJhaW50cyhjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QpIGNvbnN0CiB7
CiAgICAgYXV0byogZmxvYXRpbmdTdGF0ZSA9IHRoaXMtPmZsb2F0aW5nU3RhdGUoKTsKICAgICBp
ZiAoIWZsb2F0aW5nU3RhdGUgfHwgZmxvYXRpbmdTdGF0ZS0+ZmxvYXRzKCkuaXNFbXB0eSgpKQpA
QCAtNDU5LDcgKzQ1OSw3IEBAIExpbmVCdWlsZGVyOjpVc2VkQ29uc3RyYWludHMgTGluZUJ1aWxk
ZXI6OmluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSW5saW5lCiAgICAgcmV0dXJuIFVz
ZWRDb25zdHJhaW50cyB7IHsgaW5pdGlhbExpbmVMb2dpY2FsUmVjdC50b3AoKSwgbGluZUxvZ2lj
YWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0LCBpbml0aWFsTGluZUxv
Z2ljYWxSZWN0LmhlaWdodCgpIH0sIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB9OwogfQogCi12
b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBs
aW5lQ2FuZGlkYXRlLCBzaXplX3QgY3VycmVudElubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5l
SXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5l
TGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQordm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlk
YXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGN1
cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2Us
IHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50
TG9naWNhbFJpZ2h0KQogewogICAgIEFTU0VSVChjdXJyZW50SW5saW5lSXRlbUluZGV4IDwgbGF5
b3V0UmFuZ2UuZW5kKTsKICAgICBsaW5lQ2FuZGlkYXRlLnJlc2V0KCk7CkBAIC01NTYsNyArNTU2
LDcgQEAgc2l6ZV90IExpbmVCdWlsZGVyOjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFy
dEluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6SW4KICAgICAvLyBbZXgtXVtpbmxpbmUgYm94IHN0
YXJ0XVtpbmxpbmUgYm94IGVuZF1bZmxvYXRdW2FtcGxlXSAoZXgtPHNwYW4+PC9zcGFuPjxkaXYg
c3R5bGU9ImZsb2F0OmxlZnQiPjwvZGl2PmFtcGxlKS4gV3JhcCBpbmRleCBpcyBhdCBbZXgtXS4K
ICAgICAvLyBbZXhdW2lubGluZSBib3ggc3RhcnRdW2FtcC1dW2lubGluZSBib3ggc3RhcnRdW2xl
XSAoZXg8c3Bhbj5hbXAtPHNwYW4+YW1wbGUpLiBXcmFwIGluZGV4IGlzIGF0IFthbXAtXS4KICAg
ICAvLyBbZXgtXVtpbmxpbmUgYm94IHN0YXJ0XVtsaW5lIGJyZWFrXVthbXBsZV0gKGV4LTxzcGFu
Pjxicj5hbXBsZSkuIFdyYXAgaW5kZXggaXMgYWZ0ZXIgW2JyXS4KLSAgICBhdXRvIHByZXZpb3Vz
SW5saW5lSXRlbUluZGV4ID0gT3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0byBwcmV2aW91
c0lubGluZUl0ZW1JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CiAgICAgZm9yIChh
dXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmQ7ICsraW5kZXgp
IHsKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IG1faW5saW5lSXRlbXNbaW5kZXhdOwogICAg
ICAgICBpZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpIHx8IGlubGluZUl0ZW0uaXNXb3JkQnJl
YWtPcHBvcnR1bml0eSgpKSB7CkBAIC02OTUsNyArNjk1LDcgQEAgTGluZUJ1aWxkZXI6OlJlc3Vs
dCBMaW5lQnVpbGRlcjo6aGFuZGxlSW5saW5lQ29udGVudChJbmxpbmVDb250ZW50QnJlYWtlciYg
aW5saW4KICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmlzRW5kT2ZMaW5lLCB7IGNhbmRpZGF0ZVJ1
bnMuc2l6ZSgpLCBmYWxzZSB9IH07CiAgICAgfQogCi0gICAgYXV0byBlbGlnaWJsZU92ZXJmbG93
V2lkdGhBc0xlYWRpbmcgPSBbJl0gKCkgLT4gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewor
ICAgIGF1dG8gZWxpZ2libGVPdmVyZmxvd1dpZHRoQXNMZWFkaW5nID0gWyZdICgpIC0+IHN0ZDo6
b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewogICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIG90aGVyIHR5cGVzIG9mIGNvbnRpbnVvdXMgY29udGVudC4KICAgICAgICAgQVNTRVJU
KHJlc3VsdC5hY3Rpb24gPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0aW9uOjpX
cmFwIHx8IHJlc3VsdC5hY3Rpb24gPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0
aW9uOjpCcmVhayk7CiAgICAgICAgIGlmIChjYW5kaWRhdGVSdW5zLnNpemUoKSAhPSAxIHx8ICFj
YW5kaWRhdGVSdW5zLmZpcnN0KCkuaW5saW5lSXRlbS5pc1RleHQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
dWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDBlMjE3MTUwNWVmZmI0MmZkZjBiMzIxNjQzYjM0
M2Q4YzU1ZmNhZWYuLmIxZTc5NGQ3ZTNiYTA4MWJkNzhiNTk0OTFhOTI1MTc0ZGQ1NGJkMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgc3RydWN0IExpbmVDb250ZW50IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdl
IGlubGluZUl0ZW1SYW5nZTsKICAgICAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRM
ZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93
TG9naWNhbFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92
ZXJmbG93TG9naWNhbFdpZHRoOwogICAgICAgICBjb25zdCBGbG9hdExpc3QmIGZsb2F0czsKICAg
ICAgICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCB7IGZhbHNlIH07CiAgICAgICAgIElubGluZUxh
eW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQgeyAwIH07CiAgICAgICAg
IGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKLSAgICBMaW5lQ29udGVudCBsYXlv
dXRJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIHNpemVfdCBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxlYWRpbmdMb2dp
Y2FsV2lkdGgsIGNvbnN0IElubGluZVJlY3QmIGluaXRpYWxMaW5lTG9naWNhbFJlY3QsIGJvb2wg
aXNGaXJzdExpbmUpOworICAgIExpbmVDb250ZW50IGxheW91dElubGluZUNvbnRlbnQoY29uc3Qg
SW5saW5lSXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3Rk
OjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRoLCBjb25zdCBJ
bmxpbmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBib29sIGlzRmlyc3RMaW5lKTsKIAog
ICAgIHN0cnVjdCBJbnRyaW5zaWNDb250ZW50IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlu
bGluZUl0ZW1SYW5nZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIEludHJpbnNpY0Nv
bnRlbnQgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmLCBJbmxp
bmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmLCBzaXplX3QgaW5saW5lSXRlbUluZGV4
LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBvdmVyZmxv
d0xlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwg
SW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAgICB2b2lkIGNhbmRpZGF0
ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmLCBzaXplX3QgaW5saW5lSXRlbUluZGV4LCBj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBvdmVyZmxvd0xl
bmd0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRo
LCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAgIHNpemVfdCBuZXh0
V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6SW5s
aW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUmVzdWx0IHsK
QEAgLTgzLDE0ICs4MywxNCBAQCBwcml2YXRlOgogICAgICAgICB9OwogICAgICAgICBDb21taXR0
ZWRDb250ZW50Q291bnQgY29tbWl0dGVkQ291bnQgeyB9OwogICAgICAgICBzaXplX3QgcGFydGlh
bFRyYWlsaW5nQ29udGVudExlbmd0aCB7IDAgfTsKLSAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGggeyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoIHsgfTsKICAgICB9OwogICAg
IHN0cnVjdCBVc2VkQ29uc3RyYWludHMgewogICAgICAgICBJbmxpbmVSZWN0IGxvZ2ljYWxSZWN0
OwogICAgICAgICBib29sIGlzQ29uc3RyYWluZWRCeUZsb2F0IHsgZmFsc2UgfTsKICAgICB9Owog
ICAgIFVzZWRDb25zdHJhaW50cyBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGNvbnN0IElubGlu
ZVJlY3QmIGluaXRpYWxMaW5lTG9naWNhbFJlY3QsIGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0Owot
ICAgIE9wdGlvbmFsPEhvcml6b250YWxDb25zdHJhaW50cz4gZmxvYXRDb25zdHJhaW50cyhjb25z
dCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBmbG9hdENvbnN0cmFpbnRzKGNvbnN0IElubGluZVJlY3Qm
IGxpbmVMb2dpY2FsUmVjdCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZUZsb2F0Q29udGVudChj
b25zdCBJbmxpbmVJdGVtJik7CiAgICAgUmVzdWx0IGhhbmRsZUlubGluZUNvbnRlbnQoSW5saW5l
Q29udGVudEJyZWFrZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2Us
IGNvbnN0IExpbmVDYW5kaWRhdGUmKTsKQEAgLTEwMSw5ICsxMDEsOSBAQCBwcml2YXRlOgogICAg
IHN0cnVjdCBDb21taXR0ZWRDb250ZW50IHsKICAgICAgICAgc2l6ZV90IGlubGluZUl0ZW1Db3Vu
dCB7IDAgfTsKICAgICAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGggeyAw
IH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdp
ZHRoIHsgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxv
d0xvZ2ljYWxXaWR0aCB7IH07CiAgICAgfTsKLSAgICBDb21taXR0ZWRDb250ZW50IHBsYWNlSW5s
aW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmLCBzaXplX3QgcGFydGlhbExlYWRpbmdD
b250ZW50TGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxX
aWR0aCk7CisgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29uc3QgSW5s
aW5lSXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCk7CiAgICAgSW5s
aW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5n
ZSwgY29uc3QgQ29tbWl0dGVkQ29udGVudCYpOwogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxp
bmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYsIElubGluZUxheW91dFVuaXQgY29udGVudExv
Z2ljYWxMZWZ0KSBjb25zdDsKQEAgLTExOSwxMyArMTE5LDEzIEBAIHByaXZhdGU6CiAgICAgY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CiAg
ICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZSB7IG51bGxw
dHIgfTsKICAgICBGbG9hdGluZ1N0YXRlKiBtX2Zsb2F0aW5nU3RhdGUgeyBudWxscHRyIH07Ci0g
ICAgT3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBtX3Jvb3RIb3Jpem9udGFsQ29uc3Ry
YWludHM7CisgICAgc3RkOjpvcHRpb25hbDxIb3Jpem9udGFsQ29uc3RyYWludHM+IG1fcm9vdEhv
cml6b250YWxDb25zdHJhaW50czsKIAogICAgIExpbmUgbV9saW5lOwogICAgIElubGluZVJlY3Qg
bV9saW5lTG9naWNhbFJlY3Q7CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIG1faW5saW5lSXRlbXM7
CiAgICAgRmxvYXRMaXN0IG1fZmxvYXRzOwotICAgIE9wdGlvbmFsPElubGluZVRleHRJdGVtPiBt
X3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW07CisgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVUZXh0SXRl
bT4gbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtOwogICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVt
Kj4gbV93cmFwT3Bwb3J0dW5pdHlMaXN0OwogICAgIHVuc2lnbmVkIG1fc3VjY2Vzc2l2ZUh5cGhl
bmF0ZWRMaW5lQ291bnQgeyAwIH07CiAgICAgYm9vbCBtX2NvbnRlbnRJc0NvbnN0cmFpbmVkQnlG
bG9hdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmgKaW5kZXggY2UwMDcw
OTcwYmFkODljYTM4ZDM0YTMxYWQyNDE2YWViYzdkNmRlYS4uODIyNDJkZDA3MThiNDY1MmQzNjhl
NmJkNzhkNWMzZDRhOTYyYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaApAQCAt
NjAsNyArNjAsNyBAQCBzdHJ1Y3QgTGluZVJ1biB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHBh
bnNpb247Ci0gICAgTGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJ
bmxpbmVSZWN0JiwgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0PiA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgTGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0
JiwgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2Fs
UmVjdDsgfQogCkBAIC03Myw4ICs3Myw4IEBAIHN0cnVjdCBMaW5lUnVuIHsKICAgICBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhl
aWdodCgpOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zm
c2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQotICAgIE9wdGlv
bmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8
VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxUZXh0PiYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCiAgICAgc3RydWN0IEV4
cGFuc2lvbiB7CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsgRGVmYXVsdEV4
cGFuc2lvbiB9OwpAQCAtOTAsMTAgKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxjb25z
dCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CiAgICAgSW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0
OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBPcHRpb25hbDxUZXh0PiBtX3RleHQ7
CisgICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3RleHQ7CiB9OwogCi1pbmxpbmUgTGluZVJ1bjo6
TGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBj
b25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCwgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9u
YWw8VGV4dD4gdGV4dCkKK2lubGluZSBMaW5lUnVuOjpMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgs
IGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxS
ZWN0LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+IHRleHQpCiAgICAg
OiBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihs
YXlvdXRCb3gpKQogICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZVJlY3QuaAppbmRleCAyZGYxNDQ2YzAwMTYwNmY3MDg1NmZmM2E5ZDAyOGNlYzhkNjIzOWZi
Li4yOWFlMjk1MzA3ZThkZTczZjRiYTk3M2FkNzMxZDJmNmI0Mjc0ZWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lUmVjdC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0
aWNhbGx5KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUJ5KElubGluZUxheW91dFBv
aW50KTsKIAotICAgIHZvaWQgZXhwYW5kKE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+LCBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0Pik7CisgICAgdm9pZCBleHBhbmQoc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0Piwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Pik7CiAgICAg
dm9pZCBleHBhbmRUb0NvbnRhaW4oY29uc3QgSW5saW5lUmVjdCYpOwogICAgIHZvaWQgZXhwYW5k
SG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kKGRlbHRhLCB7IH0p
OyB9CiAgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsg
ZXhwYW5kKHsgfSwgZGVsdGEpOyB9CkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIHZvaWQgSW5s
aW5lUmVjdDo6bW92ZUJ5KElubGluZUxheW91dFBvaW50IG9mZnNldCkKICAgICBtX3JlY3QubW92
ZUJ5KG9mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZChPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaGVp
Z2h0KQoraW5saW5lIHZvaWQgSW5saW5lUmVjdDo6ZXhwYW5kKHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaGVpZ2h0
KQogewogICAgIEFTU0VSVCghd2lkdGggfHwgbV9oYXNWYWxpZFdpZHRoKTsKICAgICBBU1NFUlQo
IWhlaWdodCB8fCBtX2hhc1ZhbGlkSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJ
dGVtLmNwcAppbmRleCBmNWQ2MTBkZTE3NjBkZTBmYWE4MTY2ZTEyOThhNTFjMGNlMzNmYTJkLi41
MzkzZWE0OWZkMTU3NTlkN2YwODBiNmFkMDVlMmRiMDFiODc2NTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBXaGl0ZXNwYWNl
Q29udGVudCB7CiAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKICAgICBib29sIGlzV29yZFNlcGFy
YXRvciB7IHRydWUgfTsKIH07Ci1zdGF0aWMgT3B0aW9uYWw8V2hpdGVzcGFjZUNvbnRlbnQ+IG1v
dmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oY29uc3QgU3RyaW5nVmlldyYgdGV4dENvbnRl
bnQsIHNpemVfdCBzdGFydFBvc2l0aW9uLCBib29sIHByZXNlcnZlTmV3bGluZSwgYm9vbCBwcmVz
ZXJ2ZVRhYikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdoaXRlc3BhY2VDb250ZW50PiBtb3ZlVG9O
ZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGNvbnN0IFN0cmluZ1ZpZXcmIHRleHRDb250ZW50LCBz
aXplX3Qgc3RhcnRQb3NpdGlvbiwgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUsIGJvb2wgcHJlc2VydmVU
YWIpCiB7CiAgICAgYXV0byBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAg
YXV0byBpc1doaXRlc3BhY2VDaGFyYWN0ZXIgPSBbJl0oYXV0byBjaGFyYWN0ZXIpIHsKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1z
KElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIGF1dG8gbGluZUJyZWFrSXRl
cmF0b3IgPSBMYXp5TGluZUJyZWFrSXRlcmF0b3IgeyB0ZXh0LCBzdHlsZS5jb21wdXRlZExvY2Fs
ZSgpLCBUZXh0VXRpbDo6bGluZUJyZWFrSXRlcmF0b3JNb2RlKHN0eWxlLmxpbmVCcmVhaygpKSB9
OwogICAgIHVuc2lnbmVkIGN1cnJlbnRQb3NpdGlvbiA9IDA7CiAKLSAgICBhdXRvIGlubGluZUl0
ZW1XaWR0aCA9IFsmXShhdXRvIHN0YXJ0UG9zaXRpb24sIGF1dG8gbGVuZ3RoKSAtPiBPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAgYXV0byBpbmxpbmVJdGVtV2lkdGggPSBbJl0oYXV0
byBzdGFydFBvc2l0aW9uLCBhdXRvIGxlbmd0aCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7CiAgICAgICAgIGlmICghaW5saW5lVGV4dEJveC5jYW5Vc2VTaW1wbGlmaWVkQ29u
dGVudE1lYXN1cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgcmV0dXJu
IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBzdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0
aW9uICsgbGVuZ3RoLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmgKaW5kZXgg
M2MwY2YyNmJiODAxNWRjZDUyNWM5MTI4MmQwNGZjYmQwN2E4ZjQzMS4uYTcwZGQ1Mzg1ODk1MWI1
MzcwYjlmYTI2NWViNThhOGZiZjFmNjk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRl
bS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2hpdGVzcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dEl0ZW1UeXBlID09IFRleHRJdGVtVHlwZTo6V2hpdGVzcGFjZTsg
fQogICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1dvcmRTZXBh
cmF0b3I7IH0KICAgICBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzVHJhaWxpbmdTb2Z0SHlwaGVuOyB9Ci0gICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5p
dD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2hhc1dpZHRoID8gc3RkOjptYWtlX29wdGlvbmFs
KG1fd2lkdGgpIDogT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OyB9CisgICAgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lk
dGggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkgOiBzdGQ6Om9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHsgfTsgfQogICAgIGJvb2wgaXNFbXB0eUNvbnRlbnQoKSBjb25zdDsKIAogICAg
IGNvbnN0IElubGluZVRleHRCb3gmIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3goKSk7IH0KQEAgLTU5LDIwICs1OSwyMCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHVzaW5nIElubGluZUl0ZW06OlRleHRJdGVtVHlwZTsKIAot
ICAgIElubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRT
ZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUp
OworICAgIElubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dv
cmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRleHRJ
dGVtVHlwZSk7CiAgICAgZXhwbGljaXQgSW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4dEJv
eCYpOwogCi0gICAgc3RhdGljIElubGluZVRleHRJdGVtIGNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNv
bnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29s
IGlzV29yZFNlcGFyYXRvciwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpOwotICAg
IHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVOb25XaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxp
bmVUZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFp
bGluZ1NvZnRIeXBoZW4sIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBz
dGF0aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4
dEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNXb3JkU2VwYXJh
dG9yLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMg
SW5saW5lVGV4dEl0ZW0gY3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJv
eCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0
SHlwaGVuLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKICAgICBzdGF0
aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlRW1wdHlJdGVtKGNvbnN0IElubGluZVRleHRCb3gmKTsK
IH07CiAKLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVz
cGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHdpZHRoKQoraW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVt
OjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzV29yZFNlcGFyYXRvciwg
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKIHsKICAgICByZXR1cm4geyBp
bmxpbmVUZXh0Qm94LCBzdGFydCwgbGVuZ3RoLCBmYWxzZSwgaXNXb3JkU2VwYXJhdG9yLCB3aWR0
aCwgVGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlIH07CiB9CiAKLWlubGluZSBJbmxpbmVUZXh0SXRl
bSBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4
dEJveCYgaW5saW5lVGV4dEJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9v
bCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4sIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRo
KQoraW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpjcmVhdGVOb25XaGl0ZXNw
YWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgc3RkOjpvcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKIHsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBm
b2xsb3dpbmcgbGlzdCBvZiBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRvIHNldCB0aGUgImlz
V29yZFNlcGFyYXRvciIgYml0OiBub0JyZWFrU3BhY2UsIGV0aGlvcGljV29yZHNwYWNlLCBhZWdl
YW5Xb3JkU2VwYXJhdG9yTGluZSBhZWdlYW5Xb3JkU2VwYXJhdG9yRG90IHVnYXJpdGljV29yZERp
dmlkZXIuCiAgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCwgc3RhcnQsIGxlbmd0aCwgaGFzVHJh
aWxpbmdTb2Z0SHlwaGVuLCBmYWxzZSwgd2lkdGgsIFRleHRJdGVtVHlwZTo6Tm9uV2hpdGVzcGFj
ZSB9OwpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgSW5saW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUVtcHR5SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbgogICAgIHJldHVy
biBJbmxpbmVUZXh0SXRlbSB7IGlubGluZVRleHRCb3ggfTsKIH0KIAotaW5saW5lIElubGluZVRl
eHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5
cGhlbiwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdp
ZHRoLCBUZXh0SXRlbVR5cGUgdGV4dEl0ZW1UeXBlKQoraW5saW5lIElubGluZVRleHRJdGVtOjpJ
bmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9v
bCBpc1dvcmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgs
IFRleHRJdGVtVHlwZSB0ZXh0SXRlbVR5cGUpCiAgICAgOiBJbmxpbmVJdGVtKGlubGluZVRleHRC
b3gsIFR5cGU6OlRleHQpCiB7CiAgICAgbV9zdGFydE9yUG9zaXRpb24gPSBzdGFydDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQwN2ZmYTRk
ZDBlZGY4NTg2MDAxNGNhOTcwNGNmMmNlOWFkMmI2NWYuLjdlMzM1MGYzNTI5ZDcwMTUwMjc1NDA0
MDc1NDJlNWJhZDUzODhkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29u
dGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZs
CiAgICAgYXV0byBzZWN0aW9uV2lkdGggPSBncmlkLmNvbHVtbnMoKS5sb2dpY2FsV2lkdGgoKSAr
IDIgKiBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7CiAgICAgYXV0byBsb2dpY2FsVG9wID0gY29u
c3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKICAgICBhdXRvIHZlcnRpY2FsU3BhY2luZyA9
IGdyaWQudmVydGljYWxTcGFjaW5nKCk7Ci0gICAgYXV0byBwYWRkaW5nQmVmb3JlID0gT3B0aW9u
YWw8TGF5b3V0VW5pdD4geyB2ZXJ0aWNhbFNwYWNpbmcgfTsKKyAgICBhdXRvIHBhZGRpbmdCZWZv
cmUgPSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsgdmVydGljYWxTcGFjaW5nIH07CiAgICAg
YXV0byBwYWRkaW5nQWZ0ZXIgPSB2ZXJ0aWNhbFNwYWNpbmc7CiAgICAgZm9yIChhdXRvJiBzZWN0
aW9uQm94IDogY2hpbGRyZW5PZlR5cGU8Q29udGFpbmVyQm94Pih0YWJsZUJveCkpIHsKICAgICAg
ICAgYXV0byYgc2VjdGlvbkJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0
cnkoc2VjdGlvbkJveCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdD
b250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0Zvcklu
RmwKICAgICB9CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChj
b25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRh
bFNwYWNlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29u
dGVudCkKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJs
ZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50
KQogewogICAgIEFTU0VSVChjZWxsLmJveCgpLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCgpKTsKIApAQCAtNDE3LDkgKzQxNyw5IEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtCiAK
ICAgICAvLyAyLiBDb2xsZWN0IHRoZSBmaXhlZCB3aWR0aCA8Y29sPnMuCiAgICAgYXV0byYgY29s
dW1uTGlzdCA9IGdyaWQuY29sdW1ucygpLmxpc3QoKTsKLSAgICBWZWN0b3I8T3B0aW9uYWw8TGF5
b3V0VW5pdD4+IGZpeGVkV2lkdGhDb2x1bW5zOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+PiBmaXhlZFdpZHRoQ29sdW1uczsKICAgICBmb3IgKGF1dG8mIGNvbHVtbiA6IGNv
bHVtbkxpc3QpIHsKLSAgICAgICAgYXV0byBmaXhlZFdpZHRoID0gWyZdICgpIC0+IE9wdGlvbmFs
PExheW91dFVuaXQ+IHsKKyAgICAgICAgYXV0byBmaXhlZFdpZHRoID0gWyZdICgpIC0+IHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gewogICAgICAgICAgICAgYXV0byogY29sdW1uQm94ID0gY29s
dW1uLmJveCgpOwogICAgICAgICAgICAgaWYgKCFjb2x1bW5Cb3gpIHsKICAgICAgICAgICAgICAg
ICAvLyBBbm95bm1vdXMgY29sdW1ucyBkb24ndCBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVz
IGFuZCBjYW4ndCBoYXZlIGZpeGVkIGNvbCBzaXplLgpAQCAtNDg4LDcgKzQ4OCw3IEBAIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVm
ZXJyZWRXaWR0aEZvckNvbHVtCiAgICAgcmV0dXJuIHRhYmxlV2lkdGhDb25zdHJhaW50czsKIH0K
IAotdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJh
U3BhY2UoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhv
cml6b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNh
bFNwYWNlKQogewogICAgIC8vIENvbXB1dGUgYW5kIGJhbGFuY2UgdGhlIGNvbHVtbiBhbmQgcm93
IHNwYWNlcy4KICAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDk0MWNm
MDlhYTY5YTFjMzY0ZTkyNjgxZTQyN2QwZTQyZWUwYzdmYTMuLjFlODI1NTAxNWU0MTE5Yjc4YWQ5
MDFlZDBmYmNkMDZlZTIyYWJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcg
RGlzdHJpYnV0ZWRTcGFjZXMgPSBWZWN0b3I8TGF5b3V0VW5pdD47CiAgICAgICAgIERpc3RyaWJ1
dGVkU3BhY2VzIGRpc3RyaWJ1dGVkSG9yaXpvbnRhbFNwYWNlKExheW91dFVuaXQgYXZhaWxhYmxl
SG9yaXpvbnRhbFNwYWNlKTsKLSAgICAgICAgRGlzdHJpYnV0ZWRTcGFjZXMgZGlzdHJpYnV0ZWRW
ZXJ0aWNhbFNwYWNlKE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2Up
OworICAgICAgICBEaXN0cmlidXRlZFNwYWNlcyBkaXN0cmlidXRlZFZlcnRpY2FsU3BhY2Uoc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQpAQCAtNzUsMTMg
Kzc1LDEzIEBAIHByaXZhdGU6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlv
dXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBUYWJsZUxheW91dCgqdGhpcywgZm9ybWF0
dGluZ1N0YXRlKCkudGFibGVHcmlkKCkpOyB9CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwotICAgIHZv
aWQgbGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJs
ZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxT
cGFjZUZvckNvbnRlbnQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbGF5b3V0Q2VsbChjb25z
dCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVu
dCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlv
dXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0
cnlGb3JSb3dzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKTsKICAgICB2b2lk
IHNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCYpOwogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZFByZWZlcnJl
ZFdpZHRoRm9yQ29sdW1ucygpOwotICAgIHZvaWQgY29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNw
YWNlKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKKyAgICB2b2lkIGNvbXB1dGVBbmREaXN0cmli
dXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKIAogICAgIFRhYmxl
Rm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBkb3duY2FzdDxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmlu
ZGV4IGMyZGQxNmRkYTg3ZmNkZTBiYjk3NGE4YTBkYWYxMTM3MTZlYjQ0ODEuLjJhODUwM2JlMmU2
ODhlMGQwZDI5ZDY5ZjNlNTEyMTVjZWM1MjEwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgRWRnZXMgVGFi
bGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ2VsbEJvcmRlcihjb25zdCBUYWJsZUdyaWQ6
OkNlbGwmIGNlbGwpIGMKICAgICByZXR1cm4gYm9yZGVyOwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBD
b250YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29udGFp
bmVyQm94JiBjb2x1bW5Cb3gpIGNvbnN0CiB7CiAgICAgLy8gQ2hlY2sgYm90aCBzdHlsZSBhbmQg
PGNvbD4ncyB3aWR0aCBhdHRyaWJ1dGUuCiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0
byBkbyB3aXRoIGNhbGN1bGF0ZWQgdmFsdWVzLCBsaWtlIDxjb2wgc3R5bGU9IndpZHRoOiAxMCUi
Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaAppbmRleCBm
MTExNjM0ZjA4NTQ2ZTA1YWIwZTAwYTZiZWQzNTRkZGJlNzE0ZjA1Li5iMGI0NTc4MGYyMzQwZWZl
NDdjMjY3YTJkNjM4ODA1ZjBkMzRjOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZv
cm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91
dFVuaXQgY2VsbEJveENvbnRlbnRIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAg
ICAgRWRnZXMgY29tcHV0ZWRDZWxsQm9yZGVyKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYpIGNvbnN0
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29u
dGFpbmVyQm94JiBjb2x1bW5Cb3gpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250YWluZXJCb3gmIGNvbHVtbkJveCkgY29u
c3Q7CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzRm9yQ2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmKSBjb25zdDsKICAgICBJbmxpbmVMYXlv
dXRVbml0IHVzZWRCYXNlbGluZUZvckNlbGwoY29uc3QgQ29udGFpbmVyQm94JiBjZWxsQm94KSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCmlu
ZGV4IGFjOWUyOGM4ZDdjNWExZTAxM2MxNzk4N2ExNWY2MzdmOTNiMjg3OGEuLmUxMjFiODgzMzgz
YmRkZTIyMmM5YTNjY2E4ZmY1YzcxMDQ5NDQyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTGF5b3V0VW5pdCBUYWJs
ZUZvcm1hdHRpbmdRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0
aEZpeGVkSGUKICAgICAvLyBjb250ZXh0LiBJZiB3ZSBjYW4ndCByZXNvbHZlIGl0IHdpdGhpbiB0
aGUgdGFibGUgc3VidHJlZSwgd2UgZGVmYXVsdCBpdCB0byAwLgogICAgIC8vIGUuZyA8ZGl2IHN0
eWxlPSJoZWlnaHQ6IDEwMHB4Ij48dGFibGU+PHRyPjx0ZCBzdHlsZT0iaGVpZ2h0OiAxMDAlIj48
L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4gaXMgcmVzb2x2ZWQgdG8gMHB4LgogICAgIGF1dG8mIHRh
YmxlQm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7Ci0gICAgYXV0byBmaXhlZExvZ2lj
YWxIZWlnaHQgPSBbJl0oY29uc3QgYXV0byYgYW5jZXN0b3JCb3gpIC0+IE9wdGlvbmFsPExheW91
dFVuaXQ+IHsKKyAgICBhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IFsmXShjb25zdCBhdXRvJiBh
bmNlc3RvckJveCkgLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7CiAgICAgICAgIGF1dG8g
aGVpZ2h0ID0gYW5jZXN0b3JCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIGlm
ICghaGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJs
ZUdyaWQuaAppbmRleCBhZmU4NDE3YzlhZTE5NTc5YThlM2I2MGI3MWNiM2MwM2YzZGMwOWM2Li42
ZDUzYjQ1OGYxNWQ1YjMzMDg3ZWQ2ZjA3YjJlZDZkN2U4YTJmNDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVH
cmlkLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNh
bFNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU3BhY2luZzsgfQogCiAgICAgdm9p
ZCBzZXRDb2xsYXBzZWRCb3JkZXIoY29uc3QgRWRnZXMmIGNvbGxhcHNlZEJvcmRlcikgeyBtX2Nv
bGxhcHNlZEJvcmRlciA9IGNvbGxhcHNlZEJvcmRlcjsgfQotICAgIE9wdGlvbmFsPEVkZ2VzPiBj
b2xsYXBzZWRCb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZEJvcmRlcjsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbGxhcHNlZEJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sbGFwc2VkQm9yZGVyOyB9CiAKICAgICB2b2lkIHNldFdpZHRoQ29uc3RyYWludHMoSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1faW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0KLSAgICBP
cHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiB3aWR0aENvbnN0cmFpbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CisgICAgc3RkOjpvcHRp
b25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiB3aWR0aENvbnN0cmFpbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX3Nsb3RNYXAuaXNFbXB0eSgpOyB9CiAgICAgLy8gQ29sdW1u
IHJlcHJlc2VudHMgYSB2ZXJ0aWNhbCBzZXQgb2Ygc2xvdHMgaW4gdGhlIGdyaWQuIEEgY29sdW1u
IGhhcyBob3Jpem9udGFsIHBvc2l0aW9uIGFuZCB3aWR0aC4KQEAgLTIzMSw4ICsyMzEsOCBAQCBw
cml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBtX2hvcml6b250YWxTcGFjaW5nOwogICAgIExheW91
dFVuaXQgbV92ZXJ0aWNhbFNwYWNpbmc7Ci0gICAgT3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25z
dHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwotICAgIE9wdGlvbmFsPEVkZ2Vz
PiBtX2NvbGxhcHNlZEJvcmRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHM+IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKKyAgICBzdGQ6Om9wdGlvbmFs
PEVkZ2VzPiBtX2NvbGxhcHNlZEJvcmRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91
dC5jcHAKaW5kZXggMjQ1MTk3ZGQ5YjJlNDMyMjliODU3ZjU5MDc1NTU4ZTliYWZiNmU0Yi4uNTVk
NTNhMTM2Nzc3Y2Y4ZWEzNDZmMDc4NzhiNzcwZTAyMDZmNDljZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJs
ZUxheW91dC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgVmVjdG9yPExheW91dFVuaXQ+
IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBUYWJsZUdyaWQmIGdyaWQsIExheW91dAog
ICAgIGF1dG8mIGNvbHVtbnMgPSBncmlkLmNvbHVtbnMoKTsKICAgICBhdXRvJiByb3dzID0gZ3Jp
ZC5yb3dzKCk7CiAgICAgLy8gMS4gQ29sbGVjdCB0aGUgbm9uLXNwYW5uaW5nIHNwYWNlcyBmaXJz
dC4gVGhleSBhcmUgdXNlZCBmb3IgdGhlIGZpbmFsIGRpc3RyaWJ1dGlvbiBhcyB3ZWxsIGFzIGZv
ciBkaXN0cmlidXRpbmcgdGhlIHNwYW5uaW5nIHNwYWNlLgotICAgIFZlY3RvcjxPcHRpb25hbDxS
ZXNvbHZlZEl0ZW0+PiByZXNvbHZlZEl0ZW1zKFNwYW5UeXBlOjpzaXplKGdyaWQpKTsKKyAgICBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxSZXNvbHZlZEl0ZW0+PiByZXNvbHZlZEl0ZW1zKFNwYW5UeXBl
OjpzaXplKGdyaWQpKTsKICAgICBmb3IgKHNpemVfdCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbklu
ZGV4IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5kZXgpIHsKICAgICAgICAgZm9yIChzaXpl
X3Qgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3Muc2l6ZSgpOyArK3Jvd0luZGV4KSB7CiAg
ICAgICAgICAgICBhdXRvJiBzbG90ID0gKmdyaWQuc2xvdCh7IGNvbHVtbkluZGV4LCByb3dJbmRl
eCB9KTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxh
eW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAogICAgIH0p
OwogfQogCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0ZWRT
cGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OmRpc3RyaWJ1dGVkVmVy
dGljYWxTcGFjZShPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKQor
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpkaXN0cmlidXRlZFZlcnRpY2FsU3Bh
Y2Uoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKQogewog
ICAgIGF1dG8mIHJvd3MgPSBtX2dyaWQucm93cygpOwogICAgIGF1dG8mIGNvbHVtbnMgPSBtX2dy
aWQuY29sdW1ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IGUzMDQ4YjZi
NGNkNWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMuLjNkMzU2NTExYjUzYmNiMTllNzIyYjA2
M2E1YjFhOGNkM2NhNDBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTQ2
Myw3ICs0NjMsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVz
ZUZvckNoYXJhY3RlcihMQ2hhciBjaGFyYWN0ZXIsIGJvb2wgdAogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBj
YW5Vc2VGb3JUZXh0KGNvbnN0IENoYXJhY3RlclR5cGUqIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBPcHRpb25hbDxmbG9hdD4gbGluZUhlaWdo
dENvbnN0cmFpbnQsCitzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9y
VGV4dChjb25zdCBDaGFyYWN0ZXJUeXBlKiB0ZXh0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbGluZUhlaWdodENv
bnN0cmFpbnQsCiAgICAgYm9vbCB0ZXh0SXNKdXN0aWZpZWQsIEluY2x1ZGVSZWFzb25zIGluY2x1
ZGVSZWFzb25zKQogewogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJlYXNvbnM7CkBA
IC00OTYsNyArNDk2LDcgQEAgc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVz
ZUZvclRleHQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdGV4dCwgdW5zaWcKICAgICByZXR1cm4gcmVh
c29uczsKIH0KIAotc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvclRl
eHQoU3RyaW5nVmlldyB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIE9wdGlv
bmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludCwgYm9vbCB0ZXh0SXNKdXN0aWZpZWQsIElu
Y2x1ZGVSZWFzb25zIGluY2x1ZGVSZWFzb25zKQorc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VS
ZWFzb24+IGNhblVzZUZvclRleHQoU3RyaW5nVmlldyB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udENhc2NhZGUsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGxpbmVIZWlnaHRDb25zdHJhaW50LCBi
b29sIHRleHRJc0p1c3RpZmllZCwgSW5jbHVkZVJlYXNvbnMgaW5jbHVkZVJlYXNvbnMpCiB7CiAg
ICAgaWYgKHRleHQuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBjYW5Vc2VGb3JUZXh0KHRleHQu
Y2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSwgZm9udENhc2NhZGUsIGxpbmVIZWlnaHRDb25z
dHJhaW50LCB0ZXh0SXNKdXN0aWZpZWQsIGluY2x1ZGVSZWFzb25zKTsKQEAgLTUxMSw3ICs1MTEs
NyBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yRm9udEFuZFRl
eHQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAgIGF1dG8mIGZvbnRDYXNjYWRlID0gc3R5
bGUuZm9udENhc2NhZGUoKTsKICAgICBpZiAoZm9udENhc2NhZGUucHJpbWFyeUZvbnQoKS5pc0lu
dGVyc3RpdGlhbCgpKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZs
b3dJc01pc3NpbmdQcmltYXJ5Rm9udCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIE9w
dGlvbmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKICAgICBpZiAoc3R5bGUubGluZUJveENvbnRhaW4o
KS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhzKSkKICAgICAgICAgbGluZUhlaWdodENv
bnN0cmFpbnQgPSBjb250YWluZXIubGluZUhlaWdodChmYWxzZSwgSG9yaXpvbnRhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykudG9GbG9hdCgpOwogICAgIGJvb2wgZmxvd0lzSnVz
dGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNjgyMGIwZmFhYTY5ZDQ1NGQ5OTJi
ZDlkMGZiYjA3YWExYzJlNTQ3Zi4uZDUzYjVkY2IxMzllZGI5MDQwOTdmYmNjY2MzYmRhZTFmODZm
NWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTM2NSw3ICszNjUs
NyBAQCBUZXh0UnVuSXRlcmF0b3IgTGluZUxheW91dDo6dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVy
VGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7CiAK
LSAgICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBPcHRpb25hbDxzaXplX3Q+IHsKKyAgICBh
dXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0ubGF5b3V0Qm94
KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaAppbmRleCAyYmI2YTJhNzI2M2M4NjU4MjVmMDMwYjliNWRkODRiOWQ3
ODg5ZTg1Li4wOTFhNjAxNGI3MTliNTNlYzQ3ZjA1MmFhM2FiYTg2ZjhmYTA2ZmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAg
ICBMYXlvdXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlOwogICAgIFJlZlB0cjxJbmxp
bmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9w
YWdpbmF0ZWRIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX3BhZ2luYXRl
ZEhlaWdodDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKaW5kZXggM2RmZWVjYjIxYmNmY2M2NDli
Y2E3N2MyZTFhYjFmMWMzOWJkNTY4YS4uMTg5MDg4N2ViMmMwMjUwZDM4OWI2Njc5NWRjMmY3N2Jh
MzEyZjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTYxLDEzICs2MSwxMyBAQCBzdHJ1Y3QgUnVu
IHsKICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFuc2lvbjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJ
bmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHRDb250ZW50PiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9u
LCBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBjb25z
dCBGbG9hdFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBG
bG9hdFJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQog
Ci0gICAgT3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4
dENvbnRlbnQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxUZXh0Q29udGVudD4mIHRleHRDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VGV4
dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiYgdGV4dENvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3RleHRDb250ZW50OyB9CiAgICAgLy8gRklYTUU6IFRoaXMgaW5mb3JtYXRpb24gc2hv
dWxkIGJlIHByZXNlcnZlZCBhdCBSdW4gY29uc3RydWN0aW9uIHRpbWUuCiAgICAgYm9vbCBpc0xp
bmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgfHwg
KHRleHRDb250ZW50KCkgJiYgdGV4dENvbnRlbnQoKS0+b3JpZ2luYWxDb250ZW50KCkgPT0gIlxu
IiAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKTsgfQogCkBAIC05NCwxMCArOTQsMTAgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIEZsb2F0UmVjdCBtX2lua092ZXJm
bG93OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBPcHRpb25hbDxUZXh0Q29udGVu
dD4gbV90ZXh0Q29udGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiBtX3RleHRD
b250ZW50OwogfTsKIAotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExh
eW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRl
bnQ+IHRleHRDb250ZW50KQoraW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxU
ZXh0Q29udGVudD4gdGV4dENvbnRlbnQpCiAgICAgOiBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiAg
ICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQogICAgICwgbV9yZWN0KHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApp
bmRleCBiYTIyYWYyNDM0ZDhhNTI2ZmU3OWRhODM1NGNjODMwMzExZTJmMmYxLi5mZTBhYTExMTlj
YzdlMjUyYjViYjRmNjU0OGJhN2U4YzcxMjdjYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IExheW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChCb3gpOwogCi1Cb3g6OkJv
eChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKK0JveDo6Qm94KHN0
ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYg
c3R5bGUsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+IGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBtX3N0
eWxlKFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9lbGVtZW50QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MudG9SYXcoKSkKQEAgLTUxNCw3
ICs1MTQsNyBAQCB2b2lkIEJveDo6c2V0Q29sdW1uV2lkdGgoTGF5b3V0VW5pdCBjb2x1bW5XaWR0
aCkKICAgICBlbnN1cmVSYXJlRGF0YSgpLmNvbHVtbldpZHRoID0gY29sdW1uV2lkdGg7CiB9CiAK
LU9wdGlvbmFsPExheW91dFVuaXQ+IEJveDo6Y29sdW1uV2lkdGgoKSBjb25zdAorc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBCb3g6OmNvbHVtbldpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIWhh
c1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IDM0MWMwOWY0MzlkMmFmYTA2MDNmZGY5Mjkz
YjU5NTNkZTg4NzE5N2YuLmY5ZDZiZjUxMTgyZTYzNzQxMGQ3ODY0OGY4ZjU2ZTY3ZTA2NzFhMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0x
NzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBjb2x1bW5TcGFuKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldENvbHVtbldpZHRoKExheW91dFVuaXQpOwotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbHVtbldpZHRoKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRQYXJlbnQoQ29udGFpbmVyQm94
JiBwYXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CiAgICAgdm9pZCBzZXROZXh0U2libGlu
ZyhCb3gmIG5leHRTaWJsaW5nKSB7IG1fbmV4dFNpYmxpbmcgPSAmbmV4dFNpYmxpbmc7IH0KQEAg
LTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZWRHZW9tZXRyeUZvckxh
eW91dFN0YXRlKExheW91dFN0YXRlJiwgc3RkOjp1bmlxdWVfcHRyPEJveEdlb21ldHJ5PikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKLSAgICBCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBS
ZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPik7CisgICAgQm94KHN0ZDo6b3B0
aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5
cGVGbGFnPik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgQm94UmFyZURhdGEgewpAQCAtMTkyLDcg
KzE5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJveFJhcmVEYXRhKCkgPSBkZWZhdWx0OwogCiAg
ICAgICAgIENlbGxTcGFuIHRhYmxlQ2VsbFNwYW47Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbHVtbldpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbHVt
bldpZHRoOwogICAgIH07CiAKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNSYXJlRGF0YTsgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IFJhcmVEYXRhTWFwJiByYXJlRGF0YU1hcCgpOwogCiAgICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsK
LSAgICBPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gbV9lbGVtZW50QXR0cmlidXRlczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBtX2VsZW1lbnRBdHRyaWJ1dGVzOwog
CiAgICAgQ29udGFpbmVyQm94KiBtX3BhcmVudCB7IG51bGxwdHIgfTsKICAgICBCb3gqIG1fcHJl
dmlvdXNTaWJsaW5nIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5LmgKaW5kZXggNmQwZmI4MThjY2Q2ZjAxMTA1
MGQxYTA2YjYxOWI1OWU5MzFlZDBlMS4uNzQyNGY2Y2JhYzRmOTBmYjdiYmFiNDM5NTliNzc1MjJl
YWFlMzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94R2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3hHZW9tZXRyeS5oCkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgdmVydGljYWxCb3JkZXIoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRl
ckJvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVyKCkgY29uc3QgeyBy
ZXR1cm4gYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsgfQogCi0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gcGFkZGluZ1RvcCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBh
ZGRpbmdMZWZ0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ0JvdHRv
bSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRpbmdSaWdodCgpIGNvbnN0
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHZlcnRpY2FsUGFkZGluZygpIGNvbnN0OwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5nVG9wKCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBwYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gcGFkZGluZ0JvdHRvbSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gcGFkZGluZ1JpZ2h0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiB2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRC
b3hUb3AoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9wKCkudmFs
dWVfb3IoMCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hMZWZ0KCkgY29uc3QgeyByZXR1
cm4gcGFkZGluZ0JveExlZnQoKSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7IH0KQEAgLTEy
OCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7
CiAKICAgICB2b2lkIHNldFZlcnRpY2FsUGFkZGluZyhMYXlvdXQ6OlZlcnRpY2FsRWRnZXMpOwot
ICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPik7CisgICAgdm9pZCBz
ZXRQYWRkaW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4pOwogCiAgICAgdm9pZCBzZXRW
ZXJ0aWNhbFNwYWNlRm9yU2Nyb2xsYmFyKExheW91dFVuaXQgc2Nyb2xsYmFySGVpZ2h0KSB7IG1f
dmVydGljYWxTcGFjZUZvclNjcm9sbGJhciA9IHNjcm9sbGJhckhlaWdodDsgfQogICAgIHZvaWQg
c2V0SG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKExheW91dFVuaXQgc2Nyb2xsYmFyV2lkdGgp
IHsgbV9ob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIgPSBzY3JvbGxiYXJXaWR0aDsgfQpAQCAt
MTY0LDcgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1h
cmdpbjsKIAogICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
OjpFZGdlcz4gbV9wYWRkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gbV9w
YWRkaW5nOwogCiAgICAgTGF5b3V0VW5pdCBtX3ZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXI7CiAg
ICAgTGF5b3V0VW5pdCBtX2hvcml6b250YWxTcGFjZUZvclNjcm9sbGJhcjsKQEAgLTI4Nyw3ICsy
ODcsNyBAQCBpbmxpbmUgdm9pZCBCb3hHZW9tZXRyeTo6c2V0Qm9yZGVyKExheW91dDo6RWRnZXMg
Ym9yZGVyKQogICAgIG1fYm9yZGVyID0gYm9yZGVyOwogfQogCi1pbmxpbmUgdm9pZCBCb3hHZW9t
ZXRyeTo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQoraW5saW5l
IHZvaWQgQm94R2VvbWV0cnk6OnNldFBhZGRpbmcoc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkVkZ2Vz
PiBwYWRkaW5nKQogewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRQYWRkaW5n
KCk7CkBAIC0zMzksNyArMzM5LDcgQEAgaW5saW5lIExheW91dFVuaXQgQm94R2VvbWV0cnk6Om1h
cmdpbkVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiB9CiAK
LWlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ1RvcCgpIGNv
bnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGlu
Z1RvcCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKICAgICBpZiAo
IW1fcGFkZGluZykKQEAgLTM0Nyw3ICszNDcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gQm94R2VvbWV0cnk6OnBhZGRpbmdUb3AoKSBjb25zdAogICAgIHJldHVybiBtX3BhZGRpbmct
PnZlcnRpY2FsLnRvcDsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21l
dHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBCb3hHZW9tZXRyeTo6cGFkZGluZ0xlZnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1Zh
bGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcpCkBAIC0zNTUsNyArMzU1LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcGFkZGluZy0+aG9yaXpvbnRhbC5sZWZ0OwogfQogCi1pbmxpbmUgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBhZGRpbmdCb3R0b20oKSBjb25zdAoraW5s
aW5lIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBhZGRpbmdCb3R0b20o
KSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3Bh
ZGRpbmcpCkBAIC0zNjMsNyArMzYzLDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJv
eEdlb21ldHJ5OjpwYWRkaW5nQm90dG9tKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWRkaW5nLT52
ZXJ0aWNhbC5ib3R0b207CiB9CiAKLWlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9t
ZXRyeTo6cGFkZGluZ1JpZ2h0KCkgY29uc3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hh
c1ZhbGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcpCkBAIC0zNzEsNyArMzcxLDcgQEAg
aW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBj
b25zdAogICAgIHJldHVybiBtX3BhZGRpbmctPmhvcml6b250YWwucmlnaHQ7CiB9CiAKLWlubGlu
ZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6dmVydGljYWxQYWRkaW5nKCkgY29u
c3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojp2ZXJ0aWNh
bFBhZGRpbmcoKSBjb25zdAogewogICAgIGF1dG8gcGFkZGluZ1RvcCA9IHRoaXMtPnBhZGRpbmdU
b3AoKTsKICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB0aGlzLT5wYWRkaW5nQm90dG9tKCk7CkBA
IC0zODAsNyArMzgwLDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5
Ojp2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdAogICAgIHJldHVybiBwYWRkaW5nVG9wLnZhbHVlX29y
KDApICsgcGFkZGluZ0JvdHRvbS52YWx1ZV9vcigwKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExh
eW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0CitpbmxpbmUg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6aG9yaXpvbnRhbFBhZGRpbmco
KSBjb25zdAogewogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB0aGlzLT5wYWRkaW5nTGVmdCgpOwog
ICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gdGhpcy0+cGFkZGluZ1JpZ2h0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNw
cAppbmRleCAxZGIyZjM4NTJlZmEzYjc2YWMxMTZlNjdmOTM5NjZhMThjMjY3NDE0Li45YzNlNzEz
ZjIwOTk2MWFhZmQ3ZWQyY2UxMzc1NzMzMDJkNWFiNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChDb250YWluZXJCb3gpOwogCi1Db250YWluZXJCb3g6OkNvbnRhaW5lckJveChPcHRpb25h
bDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgT3B0
aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKK0NvbnRhaW5lckJveDo6Q29udGFp
bmVyQm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+IGJhc2VUeXBlRmxhZ3MpCiAg
ICAgOiBCb3goYXR0cmlidXRlcywgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBDb250
YWluZXJCb3hGbGFnKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaAppbmRleCA2MTFkOWM0YmQzNTFhMTE2YzhmYmQ4
YWY2OTg1NGVjNWNkN2U4NzZiLi5lMGFmYTRhOGI3NWY5ZjQ1OGJjNjUyMTJlZGQyMGZhM2M5MmJj
NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRD
b250YWluZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRDb250YWluZXJCb3guaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNs
YXNzIENvbnRhaW5lckJveCA6IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoQ29udGFpbmVyQm94KTsKIHB1YmxpYzoKLSAgICBDb250YWluZXJCb3goT3B0aW9uYWw8RWxl
bWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPiA9
IHsgQ29udGFpbmVyQm94RmxhZyB9KTsKKyAgICBDb250YWluZXJCb3goc3RkOjpvcHRpb25hbDxF
bGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+
ID0geyBDb250YWluZXJCb3hGbGFnIH0pOwogCiAgICAgY29uc3QgQm94KiBmaXJzdENoaWxkKCkg
Y29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAgY29uc3QgQm94KiBmaXJzdEluRmxv
d0NoaWxkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCmluZGV4IDUyMWY2MTI3M2M1NzFjM2NjNDkyMWM2MDJl
Y2NjNzlhODNjMTg5ZmQuLjM3ODRjZjkzZjgxZmMxYzM4NGQ3MThiYmViNzYxOTkwOWY2MjE5OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21l
dHJ5UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdl
b21ldHJ5UmVjdC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0
aWNhbGx5KExheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUJ5KExheW91dFBvaW50KTsKIAotICAg
IHZvaWQgZXhwYW5kKE9wdGlvbmFsPExheW91dFVuaXQ+LCBPcHRpb25hbDxMYXlvdXRVbml0Pik7
CisgICAgdm9pZCBleHBhbmQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Piwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0Pik7CiAgICAgdm9pZCBleHBhbmRIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBk
ZWx0YSkgeyBleHBhbmQoZGVsdGEsIHsgfSk7IH0KICAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHko
TGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoeyB9LCBkZWx0YSk7IH0KICAgICB2b2lkIGV4cGFu
ZFRvQ29udGFpbihjb25zdCBSZWN0Jik7CkBAIC0yODYsNyArMjg2LDcgQEAgaW5saW5lIHZvaWQg
UmVjdDo6bW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkKICAgICBtX3JlY3QubW92ZUJ5KG9mZnNl
dCk7CiB9CiAKLWlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZChPcHRpb25hbDxMYXlvdXRVbml0PiB3
aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQoraW5saW5lIHZvaWQgUmVjdDo6ZXhw
YW5kKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaGVpZ2h0KQogewogICAgIEFTU0VSVCghd2lkdGggfHwgbV9oYXNWYWxpZFdpZHRoKTsK
ICAgICBBU1NFUlQoIWhlaWdodCB8fCBtX2hhc1ZhbGlkSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmNwcAppbmRl
eCA2Yjg5NjQwNzNmZmVhZDkxYTgwNWQ4ZjU4NDc2Zjc0OTk2NWQwN2Q3Li42NDM4NGI5YTk4M2Ey
N2MzMTBkNmJmNzMwMTkxZWYyNzFkYzZlZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0UmVwbGFjZWRCb3guY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVw
bGFjZWRCb3gpOwogCi1SZXBsYWNlZEJveDo6UmVwbGFjZWRCb3goT3B0aW9uYWw8RWxlbWVudEF0
dHJpYnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVwbGFj
ZWRCb3g6OlJlcGxhY2VkQm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW1l
bnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogQm94KGVsZW1lbnRBdHRy
aWJ1dGVzLCBXVEZNb3ZlKHN0eWxlKSwgQm94OjpSZXBsYWNlZEJveEZsYWcpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0UmVwbGFjZWRCb3gu
aAppbmRleCA1NmJmY2FlNjAwZTFiNDdkNDU0YzVlMWIzNjMwMjcyZjIwZWRkMWQ5Li44ZTFmZDM5
NGE4NWQxY2EwNzI3MTEzZmQxYmFkNjRhZjAwNTk4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmgKQEAgLTQwLDcgKzQw
LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBSZXBsYWNlZEJveCA6IHB1YmxpYyBCb3gg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVwbGFjZWRCb3gpOwogcHVibGljOgotICAg
IFJlcGxhY2VkQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7
CisgICAgUmVwbGFjZWRCb3goc3RkOjpvcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRl
clN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlcGxhY2VkQm94KCkgPSBkZWZhdWx0OwogCiAgICAg
dm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpIHsgbV9jYWNoZWRJ
bWFnZSA9ICZjYWNoZWRJbWFnZTsgfQpAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IGludHJpbnNpY1JhdGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEJhc2VsaW5l
KExheW91dFVuaXQgYmFzZWxpbmUpIHsgbV9iYXNlbGluZSA9IGJhc2VsaW5lOyB9Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFzZWxpbmU7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGhhc0FzcGVjdFJhdGlvKCkgY29u
c3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2ludHJpbnNpY1NpemU7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gbV9pbnRyaW5zaWNSYXRpbzsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBtX2Jhc2VsaW5lOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9pbnRyaW5z
aWNTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9pbnRyaW5zaWNSYXRpbzsK
KyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYmFzZWxpbmU7CiAgICAgQ2FjaGVkSW1h
Z2UqIG1fY2FjaGVkSW1hZ2UgeyBudWxscHRyIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggOTQ1
NjRkMGJlMmQyZjRlYjllY2FhMmNlNThlZDk4ODExZjJlNzA4NC4uNTllNmQ4MThmOGU5MzgwM2U1
ZTI5OGY0OWQ0ZDAyYWU5NTA1MjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtODgsNyArODgsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRDaGlsZChDb250YWluZXJCb3gmIHBhcmVudCwgQm94JiBuZXdDaGls
ZCkKICAgICBwYXJlbnQuc2V0TGFzdENoaWxkKG5ld0NoaWxkKTsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRp
bnVhdGlvbihjb25zdCBSZW5kZXJCb3gmIGJsb2NrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0U2l6ZT4gYWNjdW11bGF0ZWRPZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkQ29udGludWF0aW9u
KGNvbnN0IFJlbmRlckJveCYgYmxvY2spCiB7CiAgICAgLy8gRklYRTogVGhpcyBpcyBhIHdvcmth
cm91bmQgb2YgdGhlIGNvbnRpbnVhdGlvbiBsb2dpYyB3aGVuIHRoZSByZWxhdGl2ZWx5IHBvc2l0
aW9uZWQgcGFyZW50IGlubGluZSBib3gKICAgICAvLyBiZWNvbWVzIGEgc2libGluZyBib3ggb2Yg
dGhpcyBibG9jayBhbmQgb25seSByZWFjaGFibGUgdGhyb3VnaCB0aGUgY29udGludWF0aW9uIGxp
bmsgd2hpY2ggd2UgZG9uJ3QgaGF2ZSBoZXJlLgpAQCAtMTMzLDcgKzEzMyw3IEBAIFRyZWVCdWls
ZGVyOjpUcmVlQnVpbGRlcihMYXlvdXRUcmVlJiBsYXlvdXRUcmVlKQogewogfQogCi1Cb3gmIFRy
ZWVCdWlsZGVyOjpjcmVhdGVSZXBsYWNlZEJveChPcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1
dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK0JveCYgVHJlZUJ1
aWxkZXI6OmNyZWF0ZVJlcGxhY2VkQm94KHN0ZDo6b3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmli
dXRlcz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgYXV0
byBuZXdCb3ggPSBtYWtlVW5pcXVlPFJlcGxhY2VkQm94PihlbGVtZW50QXR0cmlidXRlcywgV1RG
TW92ZShzdHlsZSkpOwogICAgIGF1dG8mIGJveCA9ICpuZXdCb3g7CkBAIC0xNTcsNyArMTU3LDcg
QEAgQm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGluZUJyZWFrQm94KGJvb2wgaXNPcHRpb25hbCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICByZXR1cm4gYm94OwogfQogCi1Db250YWluZXJCb3gm
IFRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIoT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmli
dXRlcz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitDb250YWluZXJC
b3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIoc3RkOjpvcHRpb25hbDxCb3g6OkVsZW1l
bnRBdHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
ICAgICBhdXRvIG5ld0NvbnRhaW5lciA9IG1ha2VVbmlxdWU8Q29udGFpbmVyQm94PihlbGVtZW50
QXR0cmlidXRlcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGF1dG8mIGNvbnRhaW5lciA9ICpuZXdD
b250YWluZXI7CkBAIC0xNjcsNyArMTY3LDcgQEAgQ29udGFpbmVyQm94JiBUcmVlQnVpbGRlcjo6
Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW0KIAog
Qm94KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lckJveCYgcGFy
ZW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpCiB7Ci0gICAg
YXV0byBlbGVtZW50QXR0cmlidXRlcyA9IFtdIChjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
cikgLT4gT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4geworICAgIGF1dG8gZWxlbWVu
dEF0dHJpYnV0ZXMgPSBbXSAoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4gewogICAgICAgICBpZiAocmVuZGVyZXIu
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIEJveDo6RWxl
bWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpEb2N1bWVudCB9OwogICAgICAgICBp
ZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKaW5kZXggMmJj
NmZmN2M1Yjk3ZTI4NWMzZWM0N2NmM2VhYWUxMTY3YmU3MTc3ZC4uNTI1Y2U2M2JiZGUxMzJlYWM0
Y2Y2OGNjZmQ4NThmM2YyNjZjNmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCkBAIC02OCwxMCArNjgsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW5lckJveCYgdGFibGVXcmFwcGVyQm94KTsKICAgICBCb3gqIGNy
ZWF0ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3Qg
UmVuZGVyT2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKIAotICAgIEJveCYgY3JlYXRlUmVwbGFjZWRC
b3goT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOworICAg
IEJveCYgY3JlYXRlUmVwbGFjZWRCb3goc3RkOjpvcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1
dGVzPiwgUmVuZGVyU3R5bGUmJik7CiAgICAgQm94JiBjcmVhdGVUZXh0Qm94KFN0cmluZyB0ZXh0
LCBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nLCBSZW5kZXJTdHlsZSYmKTsKICAg
ICBCb3gmIGNyZWF0ZUxpbmVCcmVha0JveChib29sIGlzT3B0aW9uYWwsIFJlbmRlclN0eWxlJiYp
OwotICAgIENvbnRhaW5lckJveCYgY3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVu
dEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKKyAgICBDb250YWluZXJCb3gmIGNyZWF0ZUNv
bnRhaW5lcihzdGQ6Om9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHls
ZSYmKTsKIAogICAgIExheW91dFRyZWUmIG1fbGF5b3V0VHJlZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAKaW5kZXggMzMx
ZDMwNTdmODI1MmI2YWU2MjYwM2M3OGQ0MjQ3NWFmZGEwMGU3NS4uNmQ3ZGMzZjdkOWY3YmQ2OTgw
YzM5ZTQyYzQ3ZThjZDE3YzNjM2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIH0KIH0KIAotT3B0
aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnBy
b2Nlc3NNYW5pZmVzdCgpCitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFuaWZlc3QoKQogewogICAgIGlmICghbV9w
cm9jZXNzZWRNYW5pZmVzdCAmJiBtX3Jlc291cmNlKSB7CiAgICAgICAgIGF1dG8gbWFuaWZlc3RV
UkwgPSBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci5oCmluZGV4IGJhYjU0ZTAwNzQyYTllYWMyZGY1OTgwNGI2NzVjYWM4MjdkYWM2
ZDMuLmQ1Zjc0NmFhYjE1ZGJjMjEyNDhjZTI0ODE2YzllZWY0OTNlMDZjZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaApAQCAtNDks
MTMgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0TG9hZGluZygpOwogICAgIHZvaWQg
c3RvcExvYWRpbmcoKTsKIAotICAgIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9j
ZXNzTWFuaWZlc3QoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBw
cm9jZXNzTWFuaWZlc3QoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAKICAgICBEb2N1bWVu
dExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKLSAgICBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25N
YW5pZmVzdD4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKICAgICBVUkwgbV91cmw7CiAgICAgYm9vbCBt
X3VzZUNyZWRlbnRpYWxzOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IG1fcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCmlu
ZGV4IDU3OTFmMDA0ODNiZmVmMWRmNmJiM2E3MzFhYTViNTczNDQ2Y2E5ZjUuLjFiMmZiYjc4ZTZh
NWE3YzRlNmExZjU4NGY3NTI3ODY5YTJjYzZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVK
YXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gaW5jbHVkZVNl
Y3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKTsK
IAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAg
ICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQg
PSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9h
ZGVyKCkucGFnZUlEKCk7CkBAIC0xMDEsOCArMTAxLDggQEAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBE
b2MKIHsKICAgICBUcmFjZVNjb3BlIHNjb3BlKEZldGNoQ29va2llc1N0YXJ0LCBGZXRjaENvb2tp
ZXNFbmQpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAg
ZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5wYWdlSUQoKTsKQEAgLTExMyw4ICsxMTMsOCBAQCBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
KGNvbnN0IERvYwogCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUt
PmxvYWRlcigpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLnBh
Z2VJRCgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxl
ZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBT
ZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAg
ICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKQEAgLTE0OCw4ICsxNDgsOCBAQCBz
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdQogCiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+
bG9hZGVyKCkucGFnZUlEKCk7CkBAIC0xNjMsOCArMTYzLDggQEAgU3RyaW5nIENvb2tpZUphcjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBV
UkwmIHUKIAogYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7
Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2Fk
ZXIoKS5wYWdlSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVK
YXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwN2I0ZWRlOWZi
Nzg0ZmZlMWI4MDMwOTI5MjE3ZTEwNDE1ZTdmZjgyLi45ODI2OTFkZDJkZmUyZjY1MjAxMzcwYTEy
MzAyYjUwODY3MDNjMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAgIHZpcnR1YWwgc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWly
PFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+
JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IENvb2tpZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBl
NTgyYTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRmMDU1MDkwNGE2Li5mYTAyNGYxNjE4MTEwNWZi
NTNlZTJmYmVjZThhNTRmNmY3YTRhZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMzA0LDE0ICszMDQsMTQgQEAgc3Rh
dGljIGlubGluZSBib29sIHNob3VsZENyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2Fk
KGNvbnN0IFNlY3VyaXR5T3JpZ2kKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPFJl
c291cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeShjb25zdCBTZWN1
cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0
ZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICBpZiAoc2hvdWxkQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNhbmNlbExvYWQob3Jp
Z2luLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdFVSTCwgbWFrZVN0cmluZygiQ2FuY2VsbGVkIGxv
YWQgdG8gIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCks
ICIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgcmVzb3VyY2UncyBDcm9zcy1PcmlnaW4tUmVzb3Vy
Y2UtUG9saWN5IHJlc3BvbnNlIGhlYWRlci4iKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNz
Q29udHJvbCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFJlc291
cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGQ6Om9wdGlv
bmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgaWYgKHJlc3BvbnNlLmlzUmFuZ2VSZXF1ZXN0ZWQoKSAmJiByZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDIwNiAmJiByZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6
VHlwZTo6T3BhcXVlICYmICFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6UmFuZ2UpKQogICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcih7IH0sIDAsIHJlc3BvbnNl
LnVybCgpLCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGEzYmY5OTM2
NzI0NzJmODUzYzNhODg1ZmFiM2Y3NTNlOTA3YmM5NTYuLjA1NzQ4M2YyOWZkY2E3NjVlNmI0MDk4
YjkzYWQwNzYyYTVkZDdiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmgKQEAgLTgwLDggKzgwLDggQEAgcHJpdmF0ZToKIFdFQkNPUkVf
RVhQT1JUIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mLCBjb25zdCBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVy
Kik7CiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxp
Z2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0
IENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqKTsKIAotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVDcm9zc09yaWdpblJlc291cmNlUG9s
aWN5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVSYW5nZVJlcXVlc3RlZEZs
YWcoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNyb3NzT3Jp
Z2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CitzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlk
YXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKIFN0cmluZyB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwo
Y29uc3QgVVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApp
bmRleCA5MjdiNGExMDNlZDFlNGI1MDNkZGRjZmFkNWE4MWY0NTE5NDU2ZjBlLi44YTIyNjI4Nzhj
MDZkMTI4OTVlNTdjMjMwZmJmYTY4NjJiNmZkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIEV4cGVjdGVkPFVuaXF1ZVJlZjxDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlSXRlbT4sIFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmCiAgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KE1vbm90b25pY1RpbWU6
Om5vdygpICsgZXhwaXJ5RGVsdGEsIHBvbGljeSwgV1RGTW92ZSgqbWV0aG9kcyksIFdURk1vdmUo
KmhlYWRlcnMpKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkZXJzKGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRh
dGVNZXRob2RBbmRIZWFkZXJzKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiByZXF1ZXN0SGVhZGVycykgY29uc3QKIHsKICAgICBpZiAoIWFsbG93c0Nyb3NzT3JpZ2lu
TWV0aG9kKG1ldGhvZCwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSkpCiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJNZXRob2QgIiwgbWV0aG9kLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LU1ldGhvZHMuIik7CkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNv
bnN0IFN0cmluZyYKICAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1f
bWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVz
dE1ldGhvZEFsbG93bGlzdChtZXRob2QpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhj
b25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycywgU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5I
ZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzLCBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QKIHsKICAgICBib29sIHZh
bGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogICAgIGZvciAoY29uc3Qg
YXV0byYgaGVhZGVyIDogcmVxdWVzdEhlYWRlcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IDU2NGNl
N2FhMzAxMWRiMDY5NWYyNmJjZTE1N2IxYjg3OTI1ZjRjYzQuLmVkZWRlOWUyYzZmODM4N2U5M2Fh
MDBmYzNiNGJlNDdkMjlkZmVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtNDYsMTIgKzQ2LDEyIEBA
IHB1YmxpYzoKIAogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKE1vbm90
b25pY1RpbWUsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBIYXNoU2V0PFN0cmluZz4mJiwgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mJik7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IHZhbGlkYXRlTWV0aG9kQW5kSGVhZGVycyhjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgSFRUUEhlYWRlck1hcCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2
YWxpZGF0ZU1ldGhvZEFuZEhlYWRlcnMoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmKSBjb25zdDsKICAgICBib29sIGFsbG93c1JlcXVlc3QoU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd3NDcm9zc09yaWdpbk1ldGhvZChjb25zdCBT
dHJpbmcmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiB2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiwgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2
YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9u
IHRvIGhvbGRpbmcgb250byB0aGUgYWJzb2x1dGUgZXhwaXJhdGlvbiB0aW1lIG1pZ2h0IGJlCiAg
ICAgLy8gdG8gc3RhcnQgYSB0aW1lciBmb3IgdGhlIGV4cGlyYXRpb24gZGVsdGEgdGhhdCByZW1v
dmVzIHRoaXMgZnJvbSB0aGUgY2FjaGUgd2hlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3Rv
bUhlYWRlckZpZWxkcy5oCmluZGV4IDdmMTQxY2Y4MTFkMTVhOTc4MThlNjIyYjhlZWMyZWQ1YzFi
YzIyYTEuLjMyYTE2ODEwZTBkMjFlYjFhZGIxNDE2M2U2NjZlM2U3NjZmMzljODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdXN0b21IZWFkZXJGaWVsZHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmllbGRzLmgKQEAgLTM4LDcgKzM4LDcgQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIEN1c3RvbUhlYWRlckZpZWxkcyB7CiAgICAgYm9vbCB0aGly
ZFBhcnR5RG9tYWluc01hdGNoKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDdXN0b21IZWFkZXJGaWVsZHM+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q3VzdG9tSGVhZGVyRmllbGRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ5LDE0ICs0OSwxNCBAQCB2b2lkIEN1c3RvbUhlYWRlckZpZWxk
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxDdXN0b21IZWFkZXJGaWVsZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEN1c3RvbUhlYWRlckZpZWxk
cz4gQ3VzdG9tSGVhZGVyRmllbGRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxWZWN0b3I8SFRUUEhlYWRlckZpZWxkPj4gZmllbGRzOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxkczsKICAgICBkZWNvZGVyID4+IGZpZWxk
czsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CiAgICAgZGVjb2Rl
ciA+PiB0aGlyZFBhcnR5RG9tYWluczsKICAgICBpZiAoIXRoaXJkUGFydHlEb21haW5zKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggOThjZjk1ZGNkZmU0YWQ2ZGU1MzMwYmMxN2I3ZDVlMjhlNjBlNDIwOC4u
YWFmZDg2ZjY1OGZkNWI3MTNhY2E0OGNkZGQ3YTYyNWRjYThlOTVmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bWF0Y2hSZWdpc3RyYXRpb24oY29uc3QgVVJMJiB1cmwsIFNXQ2xpZW50Q29u
bmVjdGlvbjo6UmVnaXMKICAgICBjb25uZWN0aW9uLm1hdGNoUmVnaXN0cmF0aW9uKFdURk1vdmUo
b3JpZ2luKSwgdXJsLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCBhcmVSZWdpc3RyYXRpb25zRXF1YWwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiBhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YT4mIGIpCitzdGF0aWMgaW5saW5lIGJvb2wgYXJlUmVnaXN0cmF0aW9uc0VxdWFsKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiBhLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYgYikKIHsKICAgICBp
ZiAoIWEpCiAgICAgICAgIHJldHVybiAhYjsKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlCiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5yZW1vdmUo
JmxvYWRlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBPcHRpb25h
bDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0KQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSWRlbnRpZmllcik7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4
IDdiMmEwZWM1ODVhMTllYmRlOTZlZWE3Nzc1MzMwODE3NTM1Zjc0NTUuLjM3MzU2ZjQ2NjVjM2Y2
ZjMyZTFkNTcyOTRiYjRhZTRkYWQ2NDhmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCkBAIC00MzksNyArNDM5LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIG1h
dGNoUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIG1hdGNo
UmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik+JiYpOwogI2VuZGlmCiAgICAg
dm9pZCB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgpOwogCkBAIC01MDcs
NyArNTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgp
OwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+KTsKKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+KTsKICNlbmRpZgogCiAgICAgLy8g
Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CkBAIC02NTAsOCArNjUwLDggQEAgcHJpdmF0ZToK
ICAgICBNb3VzZUV2ZW50UG9saWN5IG1fbW91c2VFdmVudFBvbGljeSB7IE1vdXNlRXZlbnRQb2xp
Y3k6OkRlZmF1bHQgfTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YTsKLSAgICBPcHRpb25hbDxEb2N1bWVudElkZW50aWZpZXI+IG1fdGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOworICAgIHN0ZDo6b3B0
aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPiBtX3RlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQ7
CiAjZW5kaWYKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGI5Mzk2NWRjMTBhN2IxNGE3
MzQwNjZmYjk1MmU4ZWFhNzM0ODZmNDIuLmY4ZDIwZjBjYmZiNjNjNDFhOWM5ZGE3ODVhMTY2ZDAy
NGUyYzU0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5
Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwotICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0
cmljcz4gZW1wdHk7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGVtcHR5
OwogICAgIGlmICghdGltaW5nKSB7CiAgICAgICAgIGVtcHR5LmVtcGxhY2UoKTsKICAgICAgICAg
dGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNDU2ZjQxN2JhMzA3NDAyN2FhN2IzMjc3NDU4
MTE0NDBiYTcyZjU2My4uYmY0MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aApAQCAtMTM0LDEyICsxMzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1fYXN5bmM7CiAgICAgICAgIGJvb2wgbV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNr
OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9uYWw8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJN
YXA+IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVja2VyOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOwogCiAgICAgICAgIFNob3VsZExv
Z0Vycm9yIG1fc2hvdWxkTG9nRXJyb3I7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
ICAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1fYnlwYXNzaW5nUHJlZmxpZ2h0Rm9yU2Vy
dmljZVdvcmtlclJlcXVlc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0
PiBtX2J5cGFzc2luZ1ByZWZsaWdodEZvclNlcnZpY2VXb3JrZXJSZXF1ZXN0OwogI2VuZGlmCiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDMxNjA1ZTY4MmRi
NGRjZDYxNmYxYjhmMDVjZWU2Y2Q3NGRiOTBkZjguLjZjNzA4OWUxODFkMGE4NzJjNDk2YmZmZTFm
NTEyNDdjYWYyMjMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEw
NCw3ICsxMDQsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGll
bnQgewogCiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5
QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQotICAgIE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfTsKICAgICBPcHRpb25TZXQ8UG9pbnRlckNoYXJhY3Rl
cmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZp
Y2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVS
b290Vmlldyhjb25zdCBJbnRSZWN0JikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hP
cHRpb25zLmgKaW5kZXggZTM1Y2E4M2E1MDQ1Y2Y2MTBjOTNiMzc4NWNkMzRhYjAyZTIyZjQ5NS4u
YzdmMzEzODQyZTE0ZDNkY2ZjODNlMDYyZDk4NTU3NGRkNWZlMGQ2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25z
IHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZVBlcnNpc3RlbnQoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQZXJzaXN0ZW50KERlY29kZXImLCBGZXRjaE9wdGlvbnMm
KTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZldGNoT3B0
aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBE
ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB9OwogICAg
IE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29ycyB9OwpAQCAtMTg5LDQyICsxODksNDIgQEAgaW5saW5l
IHZvaWQgRmV0Y2hPcHRpb25zOjplbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogaW5saW5lIGJvb2wgRmV0Y2hPcHRpb25zOjpk
ZWNvZGVQZXJzaXN0ZW50KERlY29kZXImIGRlY29kZXIsIEZldGNoT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uPiBkZXN0aW5hdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24+IGRlc3RpbmF0aW9u
OwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpNb2RlPiBt
b2RlOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpNb2RlPiBtb2RlOwogICAgIGRl
Y29kZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM+IGNyZWRlbnRpYWxzOworICAg
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscz4gY3JlZGVudGlhbHM7CiAg
ICAgZGVjb2RlciA+PiBjcmVkZW50aWFsczsKICAgICBpZiAoIWNyZWRlbnRpYWxzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6OkNhY2hlPiBjYWNo
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q2FjaGU+IGNhY2hlOwogICAgIGRl
Y29kZXIgPj4gY2FjaGU7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4gcmVkaXJlY3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6OlJlZGlyZWN0PiByZWRpcmVjdDsKICAgICBkZWNvZGVy
ID4+IHJlZGlyZWN0OwogICAgIGlmICghcmVkaXJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsKICAgICBkZWNvZGVyID4+
IHJlZmVycmVyUG9saWN5OwogICAgIGlmICghcmVmZXJyZXJQb2xpY3kpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaW50ZWdyaXR5OworICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBpbnRlZ3JpdHk7CiAgICAgZGVjb2RlciA+PiBpbnRlZ3JpdHk7CiAgICAg
aWYgKCFpbnRlZ3JpdHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPGJv
b2w+IGtlZXBBbGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGtlZXBBbGl2ZTsKICAgICBk
ZWNvZGVyID4+IGtlZXBBbGl2ZTsKICAgICBpZiAoIWtlZXBBbGl2ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjQ5LDEzICsyNDksMTMgQEAgaW5saW5lIHZvaWQgRmV0Y2hPcHRpb25zOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLWlubGluZSBPcHRpb25hbDxGZXRjaE9wdGlvbnM+IEZldGNoT3B0aW9uczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IEZldGNo
T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRmV0Y2hPcHRpb25zIG9w
dGlvbnM7CiAgICAgaWYgKCFkZWNvZGVQZXJzaXN0ZW50KGRlY29kZXIsIG9wdGlvbnMpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8RG9jdW1l
bnRJZGVudGlmaWVyPj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBkZWNv
ZGVyID4+IGNsaWVudElkZW50aWZpZXI7CiAgICAgaWYgKCFjbGllbnRJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMTNmYTY5M2FkNGE0ZGU4OGYwYmM4YzE2MjI3ZTliYzZiN2NhZTI1ZS4uZjI5Zjlh
MDJjMWZmZDBlNzQzZGQxYWE0ZGVkYWNjNGMwNjBjMDkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpp
bml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogICAgIG1fcHJvZ3Jlc3NUcmFj
a2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKLU9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBGcmFtZUxvYWRlcjo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1lTG9hZGVyOjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBjbGllbnQoKS5wYWdlSUQoKTsKIH0KIAotT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBGcmFtZUxvYWRlcjo6ZnJhbWVJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gRnJhbWVMb2FkZXI6OmZyYW1lSUQoKSBjb25zdAogewogICAgIHJldHVybiBjbGll
bnQoKS5mcmFtZUlEKCk7CiB9CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xp
Y3lDaGUKICAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3Bv
bnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIFdURk1vdmUoZnVuY3Rpb24p
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBjb25z
dCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVu
ZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBzeXN0ZW1QcmV2aWV3SW5mbywgT3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lk
IEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIGNvbnN0IFJlZmVycmVyUG9s
aWN5JiByZWZlcnJlclBvbGljeSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25z
dCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVtUHJldmlld0luZm8sIHN0ZDo6b3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7CiAgICAg
YXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKICAgICBhdXRvIGluaXRp
YXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBJbml0aWF0
ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd247CkBAIC00
MzcsNyArNDM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmUKICAgICBjaGFuZ2VMb2NhdGlv
bihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB0cmlnZ2VyaW5nRXZlbnQsIFdURk1vdmUocHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9j
YXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lUmVxdWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdF
dmVudCwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1
ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KQogewog
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
Y2hhbmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgIEFTU0VSVChmcmFtZVJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKQEAgLTEyMTYs
NyArMTIxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAgICAgZGV0
YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRl
PiYmIGZvcm1TdGF0ZSwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+
JiYgZm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50KQogewogICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogZnJhbWUgbG9hZCBz
dGFydGVkIik7CiAKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmlzU3Rv
cExvYWRpbmdBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlRGlzbWlzc2FsRXZlbnRC
ZWluZ0Rpc3BhdGNoZWQgPT0gUGFnZURpc21pc3NhbFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBl
dmVudCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJM
KEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkVVJMOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKICAg
ICBBU1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkg
PT0gIkdFVCIpOwpAQCAtMjMzMCw3ICsyMzMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihD
YWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3
LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBw
cmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+
ZnJhbWVSZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0PihzdGQ6Om51bGxvcHQpOworICAgIHN0ZDo6
b3B0aW9uYWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkg
PyAgbV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDogc3RkOjpvcHRpb25hbDxJbnRSZWN0Pihz
dGQ6Om51bGxvcHQpOwogICAgIG1fZnJhbWUuc2V0Vmlldyh2aWV3KTsKIAogICAgIC8vIFVzZSB0
aGUgcHJldmlvdXMgU2Nyb2xsVmlldydzIGZyYW1lIHJlY3QuCkBAIC0zOTg5LDcgKzM5ODksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVy
KQogI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGluaXRpYWxIYXNJbnNlY3VyZUNvbnRlbnQsIE9w
dGlvbmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2VkTGVnYWN5VExTKQordm9pZCBGcmFtZUxv
YWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250
ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50LCBzdGQ6Om9wdGlvbmFsPFVzZWRMZWdhY3lU
TFM+IGluaXRpYWxVc2VkTGVnYWN5VExTKQogewogICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVh
dGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMjdkMGQ1MzliY2IxMDFiMTY3ZTgzNzI5NjQzM2Q1Yjg0
YzBkNDdiZS4uYTk0MmI0NWU0M2I1MGU5YjRkMjIzNzRkNGMzODFhOTM1ZmI3NmM4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxs
IGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVu
dCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmID0gc3RkOjpudWxsb3B0KTsgLy8gQ2FsbGVkIGJ5IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQ
b3N0UmVxdWVzdCBhbmQgbG9hZFVSTC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFt
ZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYs
IHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQp
OyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2Fk
VVJMLgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7
CiAKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25n
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1h
cCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGRhdGEpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGlj
eSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVy
UG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIGNo
YW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgT3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVs
bG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBj
b25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY2hhbmdlTG9jYXRpb24o
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZh
dGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHN1Ym1pdEZv
cm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVs
b2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+ID0geyB9KTsKQEAgLTIxNiw4ICsyMTYsOCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIApAQCAtMzc0LDcgKzM3NCw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwo
RG9jdW1lbnRMb2FkZXImKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCwgT3B0aW9u
YWw8VXNlZExlZ2FjeVRMUz4gaW5pdGlhbFVzZWRMZWdhY3lUTFMpOworICAgIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFs
SGFzSW5zZWN1cmVDb250ZW50LCBzdGQ6Om9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxV
c2VkTGVnYWN5VExTKTsKIAogICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciosIEZyYW1lTG9hZFR5cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsg
Ly8gQ2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBsb2Fk
KERvY3VtZW50TG9hZGVyJik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKQEAgLTM4
Miw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25BY3Rpb24mJiwgRnJhbWVMb2FkVHlw
ZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOyAvLyBDYWxscyBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyCiAKICAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZv
cm1TdGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGxvYWRV
UkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRU
eXBlLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbG9h
ZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9h
ZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAg
IGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblVSTCk7CiAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAgICBPcHRp
b25hbDxSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4gbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9y
VGVzdGluZzsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gbV9vdmVycmlkZVJl
c291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxv
YWRQcmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxp
ZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKIAogICAgIExvYWRDb250
aW51aW5nU3RhdGUgbV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0ZSB7IExvYWRDb250aW51aW5n
U3RhdGU6Ok5vdENvbnRpbnVpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggMzRlNTE1YWUzMmU2Yjk1MjY5NjdjOTZmNzdkYjY3ZWE5MzRjMmYxMi4u
MzFkMzNhMzM5ZDBmNzBjZWU1NjliZWJmZWQ1MmYzNjk0Nzg2NWVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikg
PSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2xpZW50IGZvcmNlZCB0aGUgbGF5b3V0LgpAQCAtMTcz
LDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiwgT3B0aW9uYWw8VXNlZExl
Z2FjeVRMUz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0
ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Piwgc3RkOjpvcHRpb25hbDxVc2VkTGVnYWN5
VExTPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIFdpbGxDb250aW51ZUxvYWRpbmcpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsK
QEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVdp
bmRvdyhET01XaW5kb3cmKSB7IH0KIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
LSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50
NjRfdCwgY29uc3QgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpIHsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmgKaW5kZXggOWJjMjUzMTRhOTNjYTExOWQ1YWIwYWUwNmI0ZDg0OTYy
YzI3NGU1My4uODQ5NzFjYjJmMzU4YWM5ZWY0MzRmMzM2NGM0N2I0YzRlZWI3MjRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q2hlY2tJZGVudGlmaWVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09IG90aGVyLm1fcHJvY2VzcyAmJiBtX3Bv
bGljeUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToK
ICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2VzcywgdWlu
dDY0X3QgcG9saWN5Q2hlY2spCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBQb2xpY3lDaGVja0lk
ZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBQb2xpY3lDaGVj
a0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQb2xp
Y3lDaGVja0lkZW50aWZpZXI+IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29k
ZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3MpCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RydWN0
IFN5c3RlbVByZXZpZXdJbmZvIHsKICAgICBib29sIGlzUHJldmlldyB7IGZhbHNlIH07CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJ
bmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTIwMywxOSArMjAzLDE5IEBAIHZvaWQgU3lz
dGVtUHJldmlld0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+IFN5c3RlbVBy
ZXZpZXdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3lzdGVt
UHJldmlld0luZm8+IFN5c3RlbVByZXZpZXdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4gZWxlbWVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRDb250ZXh0PiBlbGVtZW50OwogICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHBy
ZXZpZXdSZWN0OwogICAgIGRlY29kZXIgPj4gcHJldmlld1JlY3Q7CiAgICAgaWYgKCFwcmV2aWV3
UmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGlzUHJldmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUHJldmlldzsKICAgICBkZWNv
ZGVyID4+IGlzUHJldmlldzsKICAgICBpZiAoIWlzUHJldmlldykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVy
RmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKaW5k
ZXggYjIzMGJmZjQ4ZmI1NTRjNGQyNjYxNDdjYTJlZGU4MWQyMmI2ZTkzNS4uYTRkMTAxYmRkMWNk
YTkwZDJkYjVlNjQzMThiMjk0YTFjMWI3Y2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hU
VFBIZWFkZXJGaWVsZC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlk
VmFsdWUoU3RyaW5nVmlldyB2YWx1ZSkKIAogfSAvLyBuYW1lc3BhY2UgUkZDNzIzMAogCi1PcHRp
b25hbDxIVFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKFN0cmluZyYmIHVu
cGFyc2VkTmFtZSwgU3RyaW5nJiYgdW5wYXJzZWRWYWx1ZSkKK3N0ZDo6b3B0aW9uYWw8SFRUUEhl
YWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShTdHJpbmcmJiB1bnBhcnNlZE5hbWUs
IFN0cmluZyYmIHVucGFyc2VkVmFsdWUpCiB7CiAgICAgU3RyaW5nVmlldyBzdHJpcHBlZE5hbWUg
PSBTdHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVk
Q2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIFN0cmluZ1ZpZXcgc3RyaXBw
ZWRWYWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1ZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oCmluZGV4IDBmNzYwZmJjOGMxOGFkYjQxN2FjODNkMGU5
OTMwMGZiMGQ4YTU2NzguLmM1ZmJjMWI0MzY3MzVhODAxMDZmMDY4YWQ0MGMxMDYyMzI3ZTA3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgKQEAgLTMxLDEzICszMSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFk
ZXJGaWVsZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4g
Y3JlYXRlKFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHZhbHVlKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxIVFRQSGVhZGVyRmllbGQ+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB2
YWx1ZSk7CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxIVFRQSGVhZGVy
RmllbGQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlckZpZWxkPiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgogICAgIEhUVFBIZWFkZXJGaWVsZChTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB2YWx1
ZSkKQEAgLTU2LDE0ICs1NiwxNCBAQCB2b2lkIEhUVFBIZWFkZXJGaWVsZDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxIVFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVsZDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gSFRUUEhlYWRlckZpZWxkOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlm
ICghbmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0
cmluZz4gdmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgIGRlY29k
ZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcAppbmRleCA0OGRmZWFjZDk1YWQwOGRm
NTgwOGEwMzkwNDZlMTg2YmY0MzllNDI4Li5mMTNmYjczMGUzZjlmODgzYjI0ZmZlM2U0Y2I0YmNi
Njk4YjZlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFkZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIHN0YXRpYyBib29sIGlzRXh0ZW5zaW9uUGFyYW1ldGVyKExpbmtIZWFkZXI6OkxpbmtQ
YXJhbWV0ZXJOYW1lIG5hbWUpCiAvLyA8Y2F0LmpwZz47IHJlbD1wcmVsb2FkCiAvLyAgICAgICAg
ICBeICAgICAgICAgICAgXgogLy8gICAgICAgICAgcG9zaXRpb24gICAgIGVuZAotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZmluZFVSTEJv
dW5kYXJpZXMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBmaW5kVVJMQm91bmRhcmllcyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBi
dWZmZXIpCiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVyKTsKICAgICBpZiAo
IXNraXBFeGFjdGx5KGJ1ZmZlciwgJzwnKSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgTGlu
a0hlYWRlcjo6TGlua1BhcmFtZXRlck5hbWUgcGFyYW10ZXJOYW1lRnJvbVN0cmluZyhTdHJpbmdW
aWV3IG5hbWUpCiAvLyA8Y2F0LmpwZz47IHJlbD1wcmVsb2FkCiAvLyAgICAgICAgICAgICAgICBe
ICAgICAgXgogLy8gICAgICAgICAgICBwb3NpdGlvbiAgZW5kCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlua0hlYWRlcjo6TGlua1BhcmFtZXRlck5h
bWU+IHBhcnNlUGFyYW1ldGVyTmFtZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVyTmFtZT4gcGFyc2VQYXJhbWV0ZXJOYW1l
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBhdXRv
IG5hbWVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIHNraXBXaGlsZTxpc1ZhbGlkUGFy
YW1ldGVyTmFtZUNoYXI+KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAK
aW5kZXggY2M4OGFlODE4NzgyOWY3MDFhNmNkNjE2MTc5NjhiYzgyYjNhNDRmMy4uZmRkYjA3YmVl
NWYwMzYyMzk4ZThlYzE0MWI2Yjk2ZjliNzM0NWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTGlua0xvYWRlcjo6bG9hZExpbmtz
RnJvbUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBjb25zdCBVUkwmIGJhc2VVCiAg
ICAgfQogfQogCi1PcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVz
b3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMsIERvY3VtZW50JiBkb2N1
bWVudCkKK3N0ZDo6b3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IExpbmtMb2FkZXI6OnJl
c291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFzLCAiZmV0
Y2giKSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpUeXBlOjpSYXdSZXNvdXJjZTsK
QEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIExpbmtMb2FkZXI6OnByZWZldGNoSWZOZWVkZWQoY29u
c3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERvY3VtZW50JiBkbwogICAgICAgICByZXR1
cm47CiAKICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJlZmV0Y2hFbmFibGVk
KCkpOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICBDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlID0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRjaDsK
IAogICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKaW5kZXggNGVkYjQyODBjZjVlYjIzMjNiMWI0MjFlYjA5Y2M5YmEwNzVjZmQ3ZC4uYjVm
MDc2NDNiM2JmYjVmOWI2MmJkYTBlY2E2YmI2ZjUwOTU3ZTJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MaW5r
TG9hZGVyKCk7CiAKICAgICB2b2lkIGxvYWRMaW5rKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYs
IERvY3VtZW50Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiBy
ZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBl
RnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYsIERvY3VtZW50Jik7CiAKICAgICBlbnVtIGNs
YXNzIE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0dHJpYnV0ZUVtcHR5LCBNZWRpYUF0dHJp
YnV0ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVDaGVjayB9OwogICAgIHN0YXRpYyB2b2lk
IGxvYWRMaW5rc0Zyb21IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgY29uc3QgVVJM
JiBiYXNlVVJMLCBEb2N1bWVudCYsIE1lZGlhQXR0cmlidXRlQ2hlY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4IDUxNjk2NzFmNTk3ZDQz
ZjZlNDY1MmFkM2IzMDRkNTkyNjk0M2I5MWMuLjIxOTBkOTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjEx
YWJiNTE1Yzk0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRl
bnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmNo
ZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYgZnJhbWUsIFNlY3VyaXR5T3JpZ2luJgogICAg
IGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKIH0K
IAotT3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvck1peGVkQ29u
dGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JNaXhlZENvbnRl
bnRJbkZyYW1lVHJlZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKaW5kZXggMTYwOWUwZjhmNDdhMTc2NWFlNjk1YWNh
N2U3ZmUyMzRmNWM2Y2YyNi4uZWU1ZGVlOWRiZGRlNzlmNzZlYTA0YWJhNmQ4NGM0MmYwOWY0NmJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRl
bnQoRnJhbWUmLCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lk
IGNoZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBVUkwmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBjaGVja0Zvck1peGVkQ29u
dGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjaGVja0Zvck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0
IEZyYW1lJiwgY29uc3QgVVJMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggYTZiZjZhZmU1YjVh
NzU3Y2E2ODViZWQzZTU2ZWVjM2I5MDk4NjAyZC4uZmRmOTQxOTFkYTRkNTk1OGJmZTkyMDU0MjIz
MDFjOTU2NjhiY2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcApAQCAtODQsMTQgKzg0LDE0IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNTYW1lT3Jp
Z2luTmF2aWdhdGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSCiAgICAgcmV0
dXJuIHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwucHJvdG9jb2xJc0RhdGEoKSB8fCAodXJs
LnByb3RvY29sSXNCbG9iKCkgJiYgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHVybCkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdp
dGhLZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZvckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUoRXZl
bnQqIGV2ZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVu
dFdpdGhLZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZvckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUo
RXZlbnQqIGV2ZW50KQogewogICAgIGlmIChVSUV2ZW50V2l0aEtleVN0YXRlKiB1aUV2ZW50ID0g
ZmluZEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSkKICAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25B
Y3Rpb246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsgKnVpRXZlbnQgfTsKICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91
c2VFdmVudERhdGE+IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50KEV2ZW50KiBldmVu
dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
PiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVudChFdmVudCogZXZlbnQpCiB7CiAgICAg
Zm9yIChFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpIHsKICAg
ICAgICAgaWYgKGUtPmlzTW91c2VFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmgKaW5kZXggZGMyMDAxOTAwZjU1ZDYyODk4Yzg3NDkzNWQ1ZGE3ZmQ4MjlmNTQw
OS4uMGM1M2M4YjdkZjJhNGQzYmIyZmNiMjIyZTMyZmMzYzUzZWY5NzA0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKICAgICAgICAgR2xvYmFs
RnJhbWVJZGVudGlmaWVyIG1fZ2xvYmFsRnJhbWVJZGVudGlmaWVyOwogICAgIH07Ci0gICAgY29u
c3QgT3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Rlcj4mIHJlcXVlc3Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyOyB9CiAKICAgICBzdHJ1Y3QgVUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGEgewogICAgICAgICBVSUV2ZW50V2l0aEtleVN0YXRlRGF0YShjb25zdCBVSUV2
ZW50V2l0aEtleVN0YXRlJik7CkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlOwogICAgICAgICBib29sIGJ1dHRvbkRvd247
CiAgICAgfTsKLSAgICBjb25zdCBPcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtl
eVN0YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQot
ICAgIGNvbnN0IE9wdGlvbmFsPE1vdXNlRXZlbnREYXRhPiYgbW91c2VFdmVudERhdGEoKSBjb25z
dCB7IHJldHVybiBtX21vdXNlRXZlbnREYXRhOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxV
SUV2ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TW91c2VF
dmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VFdmVudERh
dGE7IH0KIAogICAgIE5hdmlnYXRpb25BY3Rpb24gY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIGNvbnN0OwogCkBAIC0xMjYs
MTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVuZWRCeURPTVdpdGhPcGVuZXIo
KSB7IG1fb3BlbmVkQnlET01XaXRoT3BlbmVyID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRUYXJn
ZXRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0mKTsKLSAgICBjb25zdCBPcHRpb25hbDxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYgdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsgfQorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4mIHRhcmdldEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgc2V0U291cmNlQmFja0ZvcndhcmRJdGVt
KEhpc3RvcnlJdGVtKik7Ci0gICAgY29uc3QgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllcj4mIHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
OyB9CiAKICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
a0hpc3Rvcnk7IH0KICAgICB2b2lkIHNldExvY2tIaXN0b3J5KExvY2tIaXN0b3J5IGxvY2tIaXN0
b3J5KSB7IG1fbG9ja0hpc3RvcnkgPSBsb2NrSGlzdG9yeTsgfQpAQCAtMTM3LDI5ICsxMzcsMjkg
QEAgcHVibGljOgogICAgIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQogICAgIHZvaWQgc2V0TG9j
a0JhY2tGb3J3YXJkTGlzdChMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Qp
IHsgbV9sb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQogCi0gICAg
Y29uc3QgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH07Cisg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mIHByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDsgfTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIHsgbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCA9IHByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9OwogCiBwcml2YXRlOgogICAgIC8v
IERvIG5vdCBhZGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hdGluZyBkb2N1bWVu
dCBvciBhIHN1Ym9iamVjdCB0aGF0IGhvbGRzIHRoZQogICAgIC8vIG9yaWdpbmF0aW5nIGRvY3Vt
ZW50LiBTZWUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3MgZm9yIG1vcmUgZGV0YWlscy4KLSAgICBP
cHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVz
dGVyPiBtX3JlcXVlc3RlcjsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7
CiAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIEluaXRpYXRlZEJ5TWFp
bkZyYW1lIG1faW5pdGlhdGVkQnlNYWluRnJhbWU7Ci0gICAgT3B0aW9uYWw8VUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGE+IG1fa2V5U3RhdGVFdmVudERhdGE7Ci0gICAgT3B0aW9uYWw8TW91c2VFdmVu
dERhdGE+IG1fbW91c2VFdmVudERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxVSUV2ZW50V2l0aEtl
eVN0YXRlRGF0YT4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vdXNl
RXZlbnREYXRhPiBtX21vdXNlRXZlbnREYXRhOwogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2Vu
PiBtX3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJH
ZXN0dXJlKCkgfTsKICAgICBBdG9tU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgYm9v
bCBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsKICAgICBib29sIG1faGFzT3BlbmVkRnJh
bWVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3BlbmVkQnlET01XaXRoT3BlbmVyIHsgZmFsc2Ug
fTsKLSAgICBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBtX3RhcmdldEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllcj4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9u
YWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV90YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV9z
b3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hp
c3RvcnkgeyBMb2NrSGlzdG9yeTo6Tm8gfTsKICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IG1fbG9j
a0JhY2tGb3J3YXJkTGlzdCB7IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07Ci0gICAgT3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggODVjZmRkNjQ5ZmQy
MTk5OTIxYTNmZTExMTFmZGRkMzY4ZTJlZmU0Yy4uNmUwNjI2NGUzMTQ3YjY4MzE3ZjgyMTYzYmY2
NjJmZDAwZTExMTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmgKQEAgLTE4MywxOSArMTgzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgV2Fz
U2VudCB3YXNTZW50ID0gV2FzU2VudDo6Tm87CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9
OwogCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgewotICAgICAg
ICBPcHRpb25hbDxTZWNvbmRzPiBzb3VyY2VTZWNvbmRzOwotICAgICAgICBPcHRpb25hbDxTZWNv
bmRzPiBkZXN0aW5hdGlvblNlY29uZHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
c291cmNlU2Vjb25kczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkZXN0aW5hdGlv
blNlY29uZHM7CiAKICAgICAgICAgYm9vbCBoYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc291cmNlU2Vjb25kcyAmJiBkZXN0aW5h
dGlvblNlY29uZHM7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBtaW5T
ZWNvbmRzVW50aWxTZW5kKCkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNv
bmRzVW50aWxTZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRz
ICYmICFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTIxMywxNCArMjEzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRzOworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRzOwogICAgICAgICAgICAg
ZGVjb2RlciA+PiBzb3VyY2VTZWNvbmRzOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRz
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIE9w
dGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5hdGlvblNlY29uZHM7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4+IGRlc3RpbmF0aW9uU2Vjb25k
czsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25TZWNvbmRzOwogICAgICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTIzMCwxMCArMjMwLDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3Ry
dWN0IEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgewotICAgICAgICBPcHRpb25hbDxXYWxsVGlt
ZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4g
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjQ0LDcgKzI0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgPyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgOiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBsYXRlc3RUaW1l
VG9TZW5kKCkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbGF0ZXN0VGltZVRvU2Vu
ZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1lVG9TZW5k
ICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPyBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgOiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgfQogCi0gICAgICAg
IE9wdGlvbmFsPEF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5k
cG9pbnQoKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
c291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCpzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPCAqZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCkBAIC0yODAsMTQgKzI4MCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgICAgICBz
dGF0aWMgT3B0aW9uYWw8QXR0cmlidXRpb25UaW1lVG9TZW5kRGF0YT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVGltZVRv
U2VuZERhdGE+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBPcHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXYWxsVGltZT4+IHNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc291cmNlRWFybGll
c3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgT3B0
aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXYWxsVGltZT4+IGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+PiBkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTMyMSw3ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgQXR0cmlidXRpb25UaW1lVG9TZW5kRGF0YSB0
aW1lc1RvU2VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXNUb1NlbmQ7IH07CiAgICAgdm9pZCBz
ZXRUaW1lc1RvU2VuZChBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIGRhdGEpIHsgbV90aW1lc1Rv
U2VuZCA9IGRhdGE7IH0KICAgICBjb25zdCBTb3VyY2VJRCYgc291cmNlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUlEOyB9Ci0gICAgT3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4g
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpIHsgcmV0dXJuIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0
YTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSgpIHsgcmV0dXJuIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsgfQogICAg
IHZvaWQgc2V0QXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEpIHsgbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VEZXNjcmlwdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRGVzY3JpcHRpb247IH0KQEAgLTMzOSwxMSArMzM5
LDExIEBAIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29u
c3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5v
bmNlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYpOwotICAgIE9w
dGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBlcGhlbWVyYWxTb3VyY2VOb25jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXBoZW1lcmFsU291cmNlTm9uY2U7IH07CisgICAgc3RkOjpvcHRpb25hbDxF
cGhlbWVyYWxTb3VyY2VOb25jZT4gZXBoZW1lcmFsU291cmNlTm9uY2UoKSBjb25zdCB7IHJldHVy
biBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOyB9OwogICAgIHZvaWQgY2xlYXJFcGhlbWVyYWxTb3Vy
Y2VOb25jZSgpIHsgbV9lcGhlbWVyYWxTb3VyY2VOb25jZS5yZXNldCgpOyB9OwogCiAgICAgc3Ry
dWN0IFNvdXJjZVNlY3JldFRva2VuIHsKQEAgLTM2MCwxMSArMzYwLDExIEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgdm9pZCBzZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKSB7IG1fc291cmNlVW5saW5rYWJsZVRva2VuLnZhbHVlQmFzZTY0VVJMID0gdmFs
dWU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxTb3VyY2VTZWNyZXRUb2tlbj4mIHNvdXJjZVVubGlu
a2FibGVUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2VjcmV0VG9rZW47IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVNlY3JldFRva2VuPiYgc291cmNlVW5saW5rYWJsZVRv
a2VuKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZWNyZXRUb2tlbjsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U291cmNlU2VjcmV0VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJik7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUo
RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwpAQCAtMzc2
LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHVyY2hhc2VyOwogICAgIFdhbGxU
aW1lIG1fdGltZU9mQWRDbGljazsKIAotICAgIE9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBBdHRyaWJ1dGlv
blRpbWVUb1NlbmREYXRhIG1fdGltZXNUb1NlbmQ7CiAKICAgICBzdHJ1Y3QgU291cmNlVW5saW5r
YWJsZVRva2VuIHsKQEAgLTM4OCw5ICszODgsOSBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcg
dmFsdWVCYXNlNjRVUkw7CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5v
bmNlPiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFs
U291cmNlTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgU291cmNlVW5saW5rYWJs
ZVRva2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOwotICAgIE9wdGlvbmFsPFNvdXJjZVNlY3Jl
dFRva2VuPiBtX3NvdXJjZVNlY3JldFRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2Vj
cmV0VG9rZW4+IG1fc291cmNlU2VjcmV0VG9rZW47CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgpAQCAtNDA4LDQ5ICs0MDgsNDkgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzb3VyY2VJRDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBzb3VyY2VJRDsKICAgICBkZWNvZGVyID4+IHNvdXJjZUlEOwogICAg
IGlmICghc291cmNlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAg
T3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWlu
OwogICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAgaWYgKCFzb3Vy
Y2VSZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURv
bWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZXN0aW5hdGlvblJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURv
bWFpbjsKICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4pCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNj
cmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlRGVzY3JpcHRpb247CiAg
ICAgZGVjb2RlciA+PiBzb3VyY2VEZXNjcmlwdGlvbjsKICAgICBpZiAoIXNvdXJjZURlc2NyaXB0
aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0
cmluZz4gcHVyY2hhc2VyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAg
ICAgZGVjb2RlciA+PiBwdXJjaGFzZXI7CiAgICAgaWYgKCFwdXJjaGFzZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVPZkFk
Q2xpY2s7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gdGltZU9mQWRDbGljazsKICAgICBk
ZWNvZGVyID4+IHRpbWVPZkFkQ2xpY2s7CiAgICAgaWYgKCF0aW1lT2ZBZENsaWNrKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8RXBoZW1lcmFs
U291cmNlTm9uY2U+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsK
ICAgICBkZWNvZGVyID4+IGVwaGVtZXJhbFNvdXJjZU5vbmNlOwogICAgIGlmICghZXBoZW1lcmFs
U291cmNlTm9uY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPj4gYXR0cmlidXRpb25UcmlnZ2VyRGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0
YT4+IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOwogICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxBdHRyaWJ1dGlvblRpbWVUb1Nl
bmREYXRhPiB0aW1lc1RvU2VuZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVGltZVRv
U2VuZERhdGE+IHRpbWVzVG9TZW5kOwogICAgIGRlY29kZXIgPj4gdGltZXNUb1NlbmQ7CiAgICAg
aWYgKCF0aW1lc1RvU2VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ3Nyw5
ICs0NzcsOSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VO
b25jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJj
ZU5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxTb3VyY2VOb25jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBub25jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm9uY2U7CiAgICAg
ZGVjb2RlciA+PiBub25jZTsKICAgICBpZiAoIW5vbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNDk0LDE5ICs0OTQsMTkgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGMKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGRhdGE7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFBy
aW9yaXR5VmFsdWU+IHByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UHJpb3JpdHlWYWx1ZT4g
cHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdhc1NlbnQ+
IHdhc1NlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXYXNTZW50PiB3YXNTZW50OwogICAgIGRlY29k
ZXIgPj4gd2FzU2VudDsKICAgICBpZiAoIXdhc1NlbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuY3BwCmluZGV4IGQ4N2JkNDYxOGYwNWIzNTY4Y2RjZjU3YTNlMzU0NTBkZDNh
NTcwYTIuLjBiODNiYjFiNzY1MTNiZWE3MzA3YTMwN2Y3NWM5NmI3Mjc1NjVlMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtPiBwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlv
bihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobT4gcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9z
aXRpb24oU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHdvdWxkIGJlIG11Y2ggY2xlYW5lciB3aXRoIGEgbG9va3VwIHRhYmxl
IG9mIHBhaXJzIG9mIGxhYmVsIC8gYWxnb3JpdGhtIGVudW0gdmFsdWVzLCBidXQgSSBjYW4ndAog
ICAgIC8vIGZpZ3VyZSBvdXQgaG93IHRvIGtlZXAgdGhlIGxhYmVscyBjb21waWxldGltZSBzdHJp
bmdzIGZvciBza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlLgpAQCAtNDksNyArNDksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCwxNyArODAsMTcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdD4gcGEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVy
PFVDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJ
bXBsKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4g
cGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlw
dG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVyKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJ
bXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJ
bXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTMs
MTcgKzExMywxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0
aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiBFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHsgKmFsZ29yaXRobSwgU3RyaW5nKGJlZ2luSGFz
aFZhbHVlLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luSGFzaFZhbHVlKSB9OwogfQogCi1PcHRp
b25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlw
dG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2Rl
ZENyeXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVy
KTsKIH0KIAotT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFy
c2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENo
YXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdl
c3RJbXBsKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBlbmNvZGVkRGlnZXN0KQorc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYg
ZW5jb2RlZERpZ2VzdCkKIHsKICAgICBpZiAoYXV0byBkaWdlc3QgPSBiYXNlNjREZWNvZGUoZW5j
b2RlZERpZ2VzdC5kaWdlc3QsIEJhc2U2NERlY29kZU9wdGlvbnM6OlZhbGlkYXRlUGFkZGluZykp
CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgeyBlbmNvZGVkRGln
ZXN0LmFsZ29yaXRobSwgV1RGTW92ZSgqZGlnZXN0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGExNzY4Y2U3NjI2
YTRhNGFlZTZjZTA0MjEwNzc0OGQwODY4NWZjNGYuLmZjYzBiMDQ0YWFhMjRlNWVhN2ExMWNlYWMx
ZmY3ZWJhNTM0OTAwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTY2LDEzICs2NiwxMyBAQCBzdHJ1Y3QgRW5jb2Rl
ZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgU3RyaW5nIGRpZ2VzdDsKIH07CiAK
LU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGlj
RGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7Ci1PcHRpb25hbDxSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5n
QnVmZmVyPExDaGFyPiYpOworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYp
Oworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogCi1PcHRpb25hbDxF
bmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFw
aGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7Ci1PcHRpb25hbDxFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGln
ZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFsPEVuY29kZWRS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdl
c3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8RW5jb2RlZFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogCi1PcHRpb25hbDxSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qo
Y29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOworc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYp
OwogCiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5
dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBi
eXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRJbmZvLmNwcAppbmRleCBlNDg1MmYyOTNhMGZmNTlkOTE3NDUxZWRkNTBiZmJlYjA0MTIyMjlh
Li41NGI4MWJmYmVkYjVkOTc5NjYyOTZkZjhiOTVjZGQ1OWI0MDc3NDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCkBAIC04NSw3ICs4NSw3IEBAIE9wdGlv
blNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5
cGUsIFJlc291cmNlUmVxdWVzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8T3B0aW9u
U2V0PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQorc3Rk
OjpvcHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJp
bmdWaWV3IG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gImRvY3VtZW50IikKICAgICAgICAgcmV0
dXJuIHsgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIE9wdGlv
bmFsPE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcg
bmFtZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxPcHRpb25TZXQ8
TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25hbDxP
cHRpb25TZXQ8TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmlldyBuYW1lKQogewogICAg
IGlmIChuYW1lID09ICJmaXJzdC1wYXJ0eSIpCiAgICAgICAgIHJldHVybiB7IExvYWRUeXBlOjpG
aXJzdFBhcnR5IH07CkBAIC0xMjUsNyArMTI1LDcgQEAgT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRU
eXBlPj4gcmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFtZSkKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCi1PcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRl
eHQoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+
PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQogewogICAgIGlmIChuYW1lID09ICJ0
b3AtZnJhbWUiKQogICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6VG9wRnJhbWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4IGQ0NWI1Nzc5ODhmM2M0
MGNmOTViZTliNmNiMGRmZmM5OTU3NDExNmMuLmUwOGViODJkMDUwZDdlN2U3YjZlOTAyNWYwZTRk
ZWUzZWU3Y2ZmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaApA
QCAtNzksOSArNzksOSBAQCBjb25zdCB1aW50NjRfdCBBY3Rpb25GbGFnTWFzayA9IDB4MDAwMEZG
RkYwMDAwMDAwMDsKIGNvbnN0IHVpbnQ2NF90IElmQ29uZGl0aW9uRmxhZyA9IDB4MDAwMTAwMDAw
MDAwMDAwMDsKIAogT3B0aW9uU2V0PFJlc291cmNlVHlwZT4gdG9SZXNvdXJjZVR5cGUoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdEJhc2U6OlJlcXVlc3Rlcik7Ci1PcHRpb25h
bDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdWaWV3KTsK
LU9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3KTsK
LU9wdGlvbmFsPE9wdGlvblNldDxMb2FkQ29udGV4dD4+IHJlYWRMb2FkQ29udGV4dChTdHJpbmdW
aWV3KTsKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJj
ZVR5cGUoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+IHJl
YWRMb2FkVHlwZShTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250
ZXh0Pj4gcmVhZExvYWRDb250ZXh0KFN0cmluZ1ZpZXcpOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
SW5mbyB7CiAgICAgVVJMIHJlc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCAzNjlkYzM1MmEwZmY1N2E4ZWVjN2JkODA3MjM1MDNl
MzFiNWIwNTM0Li41MzkwMDFjODkwMjY0Y2RkYmZhZjZhMDg2ZDJlY2Q1NjhjODEzM2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjgsNyAr
NjgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRnJhbWUmIG1fZnJhbWU7Ci0gICAgT3B0
aW9uYWw8dW5zaWduZWQgbG9uZz4gbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZCBsb25nPiBtX2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VJbnRlZ3JpdHkuY3BwCmluZGV4IDYyOTVhZWE1ZTMwYzk5MjZkNmRkZWM5OTI2MDE0
ZTZkNzRhOTBjOTIuLjRkMGM2OTBiMjc2MmFhOTBlNzFlYTM4N2YzYTNkODBmNjQxMzhiZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcApAQCAt
NDYsNyArNDYsNyBAQCBzdGF0aWMgYm9vbCBpc1ZDSEFSKENoYXJhY3RlclR5cGUgYykKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdHJ1Y3QgSW50ZWdyaXR5TWV0YWRhdGFQYXJz
ZXIgewogcHVibGljOgotICAgIEludGVncml0eU1ldGFkYXRhUGFyc2VyKE9wdGlvbmFsPFZlY3Rv
cjxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pj4mIGRpZ2VzdHMpCisgICAgSW50
ZWdyaXR5TWV0YWRhdGFQYXJzZXIoc3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdD4+JiBkaWdlc3RzKQogICAgICAgICA6IG1fZGlnZXN0cyhkaWdl
c3RzKQogICAgIHsKICAgICB9CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q+PiYgbV9kaWdlc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiYgbV9kaWdlc3RzOwogfTsKIAogfQpAQCAtOTYsMTIg
Kzk2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGxpdE9uU3BhY2VzKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyLCBGdW5jCiAgICAgfQogfQogCi1zdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiBwYXJzZUlu
dGVncml0eU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5TWV0YWRhdGEpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+
IHBhcnNlSW50ZWdyaXR5TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkK
IHsKICAgICBpZiAoaW50ZWdyaXR5TWV0YWRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2Rl
ZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHJlc3VsdDsKICAgICAKICAgICByZWFkQ2hh
cmFjdGVyc0ZvclBhcnNpbmcoaW50ZWdyaXR5TWV0YWRhdGEsIFsmcmVzdWx0XSAoYXV0byBidWZm
ZXIpIHsKICAgICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1
ZmZlcik6OkNoYXJhY3RlclR5cGU7CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIGJvb2wgaXNS
ZXNwb25zZUVsaWdpYmxlKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICByZXR1
cm4gcmVzb3VyY2UuaXNDT1JTU2FtZU9yaWdpbigpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RW5j
b2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtPiBwcmlvcml0aXplZEhh
c2hGdW5jdGlvbihFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0g
YSwgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGIpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdv
cml0aG0+IHByaW9yaXRpemVkSGFzaEZ1bmN0aW9uKEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q6OkFsZ29yaXRobSBhLCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
OjpBbGdvcml0aG0gYikKIHsKICAgICBpZiAoYSA9PSBiKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggZjA1ZTVjNjg1MGI4Yjg1Mjk0ZjRmOTNlNGQxYjVhMTRlYTMxZWJjNS4uNDg1MTMzZDg3YWMz
NjhiNTBhYWY5ZTIzZDMwM2JhNGQzM2FhZWRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWUKICAgICAgICAgLy8gY29tcGxldGUgbG9hZCBtZXRyaWNzIGluIGRpZEZpbmlzaExv
YWQuIEluIHRob3NlIGNhc2VzLCBmYWxsIGJhY2sgdG8gdGhlIHBvc3NpYmlsaXR5CiAgICAgICAg
IC8vIHRoYXQgdGhleSBwb3B1bGF0ZWQgcGFydGlhbCBsb2FkIHRpbWluZyBpbmZvcm1hdGlvbiBv
biB0aGUgUmVzb3VyY2VSZXNwb25zZS4KICAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gbV9y
ZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7
Ci0gICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBlbXB0eTsKICAgICAgICAgaWYgKCF0aW1p
bmcpIHsKICAgICAgICAgICAgIGVtcHR5LmVtcGxhY2UoKTsKICAgICAgICAgICAgIHRpbWluZyA9
ICZlbXB0eS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAppbmRleCAxMWY1YjFhMjIwYzUxYTg5NTM5N2UyYjExMzhiZGU2NDc5Mzg2MjM3Li5lZDU5MTky
MTljYmJmMzM0Mzk3NjY0ZDUxMmE5ZjdkNmM5N2VjYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKICAgICBTdWJyZXNvdXJjZUxvYWRl
clN0YXRlIG1fc3RhdGU7Ci0gICAgT3B0aW9uYWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1
ZXN0Q291bnRUcmFja2VyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdENvdW50VHJhY2tlcj4g
bV9yZXF1ZXN0Q291bnRUcmFja2VyOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmln
aW47CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBtX3BvbGljeUZvclJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA3MGQxNTE3YmJiZjI4ZmNiZjVmZmRh
ZjkwNjdhYmFhZTdjOTE4NjFkLi5jOGE5YmJkZTNlMzdkYTA1NzdlOTA0MWUxOTk2M2U0NGYxYTI1
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzIsNyArNzIsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJh
Y3RlclR5cGUgY2FjaGVNb2RlSWRlbnRpZgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGZhbGxiYWNrTW9kZUlkZW50aWZpZXJb
XSA9IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdBJywgJ0MnLCAnSycgfTsKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBu
ZXR3b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAnRScsICdUJywgJ1cnLCAnTycsICdSJywg
J0snIH07CiAKLU9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRp
b25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlw
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVz
dCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFu
aWZlc3RNSU1FVHlwZSk7CkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5p
CiAKICAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVUeXBlKSwg
IlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiAKLSAgICByZXR1cm4gcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBbJl0oYXV0byBidWZmZXIpIC0+
IE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4geworICAgIHJldHVybiByZWFkQ2hh
cmFjdGVyc0ZvclBhcnNpbmcobWFuaWZlc3RTdHJpbmcsIFsmXShhdXRvIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKICAgICAgICAgdXNpbmcgQ2hh
cmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNoYXJhY3RlclR5cGU7CiAg
ICAgCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCBtYW5pZmVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3RQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RQYXJzZXIuaAppbmRleCBlMGNmOTJkNzBmYmI4MzViYzU0NGNhYWU5OWRjZjkw
NWYzYTM3ZTM1Li4wYmY5ZjlmMTZhNWFmNjlmY2FmYTAxNjlkOWU2NjQ0MWIxZjlmODYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCkBAIC00MSw2ICs0MSw2IEBAIHN0cnVjdCBBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QgewogICAgIGJvb2wgYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMg
eyBmYWxzZSB9OyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiB9OwogCi1P
cHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1F
VHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggNWU2ODExZTFiYWEzNzU1MDRjYThjZTcyM2RkNWNlOTI3MGE2MWUx
MC4uMWFjNGIxZmI4YzQ0MjAzMGZlZDllMGY5NTFkOTQzYTBlZWVhZWRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcygpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxVUkw+PiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKCkKIHsKICAgICBTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmgKaW5kZXggNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNi4u
MTdiOGYwN2ExZDNjNzljMTI3N2U1Y2EwODEyODRiOWEzODIxNTIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwogICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7Ci0gICAgT3B0
aW9uYWw8VmVjdG9yPFVSTD4+IG1hbmlmZXN0VVJMcygpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFVSTD4+IG1hbmlmZXN0VVJMcygpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmlu
ZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICBi
b29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9p
ZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCAyYjY1YWMwZjM2
MzI1OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5Li5mYjg3NjJhNTllN2UzYzk3NGQ2ZGRhZTg1
ZjI3YzE0NjJhZjUzZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFN0
cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLU9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnByb2Nlc3MoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqIGRvY3VtZW50
KQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1l
bnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fdGV4dCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDhmYTg2Y2FjOGJjNWNkZDI2
MWE3OTMzNzc3N2U2ZThhZTZlZGVmYzAuLmFkMzYxMDQzOGUzYTRjMGRlOTM1YzRmYWM0NzVhMzFi
MjZlM2RiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0IGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1Ymxp
YzoKICAgICBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciopOwogCi0gICAgT3B0aW9u
YWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVz
dFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CisgICAg
c3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxs
cHRyKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OSw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWY8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV90
ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX3RleHQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCA3OGQ4NGJmYWJjZGVlNjJiMWU2ZmZiZTdhN2NiZjMyMzE4NTQz
MzkyLi5kN2JkMzI4NzVkNTJkNmQzOTFjM2FlMGZhMWFiYzU5MmJhZGRmODc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JN
ZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLU9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRh
dGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlv
dXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6
ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNmE2YzQ3YjU3MDM1OWQ0NDM1YjhmNzMyOWIw
YTZlZTA3YTljNmIxZi4uYzk2ZWI3YWEyNDgyYjM5ZWE2OTUwNTFiYWUwNWVjMDE4NDgxYWVhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgK
QEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFs
aWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVk
RGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2Vt
ZW50OyB9CiAKLSAgICBPcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAj
aWYgVVNFKFFVSUNLX0xPT0spCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0
IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIH07Ci0gICAgT3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXll
ZEZpbmlzaExvYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4g
bV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDJk
YTk3ZjE0Mjk1NDFmM2I1NjkwMWY3OGZjOGQ3YjgxNDEzYmI3YzcuLmE3Y2UwMGQxYWZmYjBkNmFh
ZThlN2ZhYWE1NzQ5YzA3NWY1YzI1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHVuc2lnbmVkIENhY2hl
ZFJlc291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdAogICAgIHJldHVybiBzaXplb2YoQ2FjaGVk
UmVzb3VyY2UpICsgbV9yZXNwb25zZS5tZW1vcnlVc2FnZSgpICsga0F2ZXJhZ2VDbGllbnRzSGFz
aE1hcFNpemUgKyBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sZW5ndGgoKSAqIDI7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExvYWRQcmlvcml0eShjb25zdCBPcHRpb25h
bDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mIGxvYWRQcmlvcml0eSkKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnNldExvYWRQcmlvcml0eShjb25zdCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9y
aXR5PiYgbG9hZFByaW9yaXR5KQogewogICAgIGlmIChsb2FkUHJpb3JpdHkpCiAgICAgICAgIG1f
bG9hZFByaW9yaXR5ID0gbG9hZFByaW9yaXR5LnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGJmMjVjYWRkNDM0MDcyZmM1ZjVkODdh
ZGI3ZDJlMjJmNmNmNGVjMDcuLmFmZTNkMzVkOTJkYTlkMDMxODMxMmJkNmYzMDFhNTljMmRiNjM1
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZFVzZVBpbmdM
b2FkKFR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBUeXBlOjpCZWFjb24gfHwgdHlwZSA9PSBU
eXBlOjpQaW5nOyB9CiAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQotICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5
KGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYpOworICAgIHZvaWQgc2V0TG9h
ZFByaW9yaXR5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+Jik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCmluZGV4IGI1MzdmYzU0NWFmMTljMjk3NzY5NWZjNzU4MjdmZjhhMWY0
MGVkOWQuLjgzNGI2MjU0MTdhYzZlY2YwYjgyZmNhNzFhY2UxMzEwZTVlYTY1NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIE9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKK0Nh
Y2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
LCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYg
Y2hhcnNldCkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0
KSkKICAgICAsIG1fY2hhcnNldChXVEZNb3ZlKGNoYXJzZXQpKQogICAgICwgbV9vcHRpb25zKG9w
dGlvbnMpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNl
dFNlbGVjdGVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJJZk5lZWQKICAgICBt
X29wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OwogfQogCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0TmF2aWdhdGlvblNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXROYXZpZ2F0
aW9uU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFk
YXRhLT5hY3RpdmVXb3JrZXIpIHsKICAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9k
ZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCBmMzAwMDEyZjA1YzllYTlj
OTc1YzA2MDNkNzFkZjhhMzNkNTIzM2FhLi5lZDJiNWFmNTZhNDg4ZGZiY2Q4ZmY2NmZiMmY4MzY5
Y2YzYjYxMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgaXNSZXF1ZXN0Q3Jvc3NP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291
cmNlCiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBzdGQ6Om51bGxvcHQsIFN0
cmluZyYmIGNoYXJzZXQgPSBTdHJpbmcoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBzdGQ6Om9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6bnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNl
dCA9IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYmIHJlbGVhc2VSZXNvdXJjZVJl
cXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3VyY2VSZXF1ZXN0KTsgfQogICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQog
ICAgIHZvaWQgc2V0T3B0aW9ucyhjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
IHsgbV9vcHRpb25zID0gb3B0aW9uczsgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpb3JpdHk7IH0KLSAg
ICB2b2lkIHNldFByaW9yaXR5KE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYmIHByaW9y
aXR5KSB7IG1fcHJpb3JpdHkgPSBXVEZNb3ZlKHByaW9yaXR5KTsgfQorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpb3JpdHk7IH0KKyAgICB2b2lkIHNldFByaW9yaXR5KHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VMb2FkUHJpb3JpdHk+JiYgcHJpb3JpdHkpIHsgbV9wcmlvcml0eSA9IFdURk1vdmUocHJpb3Jp
dHkpOyB9CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRJ
bml0aWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgc2V0Q2xpZW50SWRl
bnRpZmllcklmTmVlZGVkKERvY3VtZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRTZWxlY3Rl
ZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVySWZOZWVkZWQoU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIHZvaWQgc2V0TmF2aWdhdGlvblNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYpOworICAgIHZvaWQgc2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGE+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJj
ZVJlcXVlc3Q7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgbV9vcHRpb25zOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9y
aXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fcHJpb3JpdHk7
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAgICBBdG9tU3RyaW5n
IG1faW5pdGlhdG9yTmFtZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggZTdlODVjYTZjZTExOWE1YjFm
NzQ3MzQ4MmRkMDEzMzA1ODdhYmNmMy4uOTBiMjBhYzkzZDRlNDFjYjRkNWY2YWYwZDU0ODdjZmEx
N2U0YmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyZXRjaGVkID0gMTgKICAgICB9OwogCi0gICAgdmly
dHVhbCBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+
IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IDNjNDM5MzkwMGNmZTc2
OTc3MDk3ZGE5MGZjYTE2N2NjNGIwMmE4ODcuLjQwZjMyY2ZmMTNmYzQwOTdmNTUzNTExZDZlZTQ3
ODA3MTc3N2I2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlv
bkVsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0
aCYgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpsaW5lVGhpY2tuZXNzKCkKICAgICByZXR1cm4gbV9s
aW5lVGhpY2tuZXNzLnZhbHVlKCk7CiB9CiAKLU1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rp
b25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4m
IGFsaWdubWVudCkKK01hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50
KQogewogICAgIGlmIChhbGlnbm1lbnQpCiAgICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAppbmRl
eCBkOGM2NmEzODY0YjYzNTVmN2E4ZTc1MTQ3ZDM0YjM4Y2YyMTA1ZTViLi42OTVjNTgxMzIxNjk0
YzQwZTAxNWE5ZjIwOGQyYTVhNzNjZmU2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC00OSwxMSArNDksMTEgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsK
IAotICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKKyAgICBGcmFjdGlv
bkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
c3RkOjpvcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKIAotICAgIE9wdGlvbmFsPExlbmd0
aD4gbV9saW5lVGhpY2tuZXNzOwotICAgIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX251
bWVyYXRvckFsaWdubWVudDsKLSAgICBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4gbV9kZW5v
bWluYXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9saW5lVGhpY2tu
ZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxp
Z25tZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fZGVub21pbmF0
b3JBbGlnbm1lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MTWVuY2xvc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVu
Y2xvc2VFbGVtZW50LmgKaW5kZXggYTBlMzJhODFmYzBkZTJjNjkxMWZkZGNkZTdhYTA0ZDMwYzFl
OWQxMy4uMDUwNmI1ZjAwMGZmMWRhMGE4MzlkMjA2ZmEyMDBhY2M3ZGU2NzJmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFn
cyA9IDA7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0
aW9uRmxhZykgeyBtX25vdGF0aW9uRmxhZ3MudmFsdWUoKSB8PSBub3RhdGlvbkZsYWc7IH0KICAg
ICB2b2lkIGFkZE5vdGF0aW9uRmxhZ3MoU3RyaW5nVmlldyBub3RhdGlvbik7Ci0gICAgT3B0aW9u
YWw8dWludDE2X3Q+IG1fbm90YXRpb25GbGFnczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBtX25vdGF0aW9uRmxhZ3M7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCmluZGV4IGVjNTA1MjA5NjQzMWFhYjg2MGJk
MWRhNWNlNzQzNTkyNGM2ZmI0ZjMuLjRmMjkwZGFkOTNhOTBjNGExYWIwMDg5MDFiNjE5YzIxM2Mw
ZmUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBo
b3Jpem9udGFsT3BlcmF0b3JzW10gPSB7CiAgICAgMHgwMDNELCAweDAwNUUsIDB4MDA1RiwgMHgw
MDdFLCAweDAwQUYsIDB4MDJDNiwgMHgwMkM3LCAweDAyQzksIDB4MDJDRCwgMHgwMkRDLCAweDAy
RjcsIDB4MDMwMiwgMHgwMzMyLCAweDIwM0UsIDB4MjBEMCwgMHgyMEQxLCAweDIwRDYsIDB4MjBE
NywgMHgyMEUxLCAweDIxOTAsIDB4MjE5MiwgMHgyMTk0LCAweDIxOTgsIDB4MjE5OSwgMHgyMTlD
LCAweDIxOUQsIDB4MjE5RSwgMHgyMUEwLCAweDIxQTIsIDB4MjFBMywgMHgyMUE0LCAweDIxQTYs
IDB4MjFBOSwgMHgyMUFBLCAweDIxQUIsIDB4MjFBQywgMHgyMUFELCAweDIxQjQsIDB4MjFCOSwg
MHgyMUJDLCAweDIxQkQsIDB4MjFDMCwgMHgyMUMxLCAweDIxQzQsIDB4MjFDNiwgMHgyMUM3LCAw
eDIxQzksIDB4MjFDQiwgMHgyMUNDLCAweDIxRDAsIDB4MjFEMiwgMHgyMUQ0LCAweDIxREEsIDB4
MjFEQiwgMHgyMURDLCAweDIxREQsIDB4MjFFMCwgMHgyMUUyLCAweDIxRTQsIDB4MjFFNSwgMHgy
MUU2LCAweDIxRTgsIDB4MjFGMCwgMHgyMUY2LCAweDIxRkQsIDB4MjFGRSwgMHgyMUZGLCAweDIz
QjQsIDB4MjNCNSwgMHgyM0RDLCAweDIzREQsIDB4MjNERSwgMHgyM0RGLCAweDIzRTAsIDB4MjNF
MSwgMHgyNTAwLCAweDI3RjUsIDB4MjdGNiwgMHgyN0Y3LCAweDI3RjgsIDB4MjdGOSwgMHgyN0ZB
LCAweDI3RkIsIDB4MjdGQywgMHgyN0ZELCAweDI3RkUsIDB4MjdGRiwgMHgyOTBDLCAweDI5MEQs
IDB4MjkwRSwgMHgyOTBGLCAweDI5MTAsIDB4Mjk0RSwgMHgyOTUwLCAweDI5NTIsIDB4Mjk1Mywg
MHgyOTU2LCAweDI5NTcsIDB4Mjk1QSwgMHgyOTVCLCAweDI5NUUsIDB4Mjk1RiwgMHgyQjQ1LCAw
eDJCNDYsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzcsIDB4RkUzOCwgMHgxRUVGMCwgMHgxRUVGMQog
fTsKIAotT3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNo
KFVDaGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKQorc3RkOjpv
cHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIz
MiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7CiAgICAgaWYgKCFj
aGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmgKaW5kZXggMWM1ZDBhMjlhOWU4
MTk4MjhlOTcwMDU1ZTI1NDI3YmM2NDBkOWUyOC4uNjBlYTY3N2JhNGZiNGY4MGM5MmIyMzE1NmVi
YTJlMTIzYmRiNzYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnkuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgUHJvcGVydHkgewogICAg
IC8vIERlZmF1bHQgb3BlcmF0b3IgcHJvcGVydGllcyBhcmUgYWxsIHNldCB0byAiZmFsc2UiLgog
ICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzIHsgMCB9OwogfTsKLU9wdGlvbmFsPFByb3BlcnR5PiBz
ZWFyY2goVUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pOworc3RkOjpvcHRpb25hbDxQ
cm9wZXJ0eT4gc2VhcmNoKFVDaGFyMzIsIEZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKTsKIGJvb2wg
aXNWZXJ0aWNhbChVQ2hhcjMyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MT3BlcmF0b3JFbGVtZW50LmNwcAppbmRleCAzNGJiODFhZDdkZTMxYjNlZWM2MzkxMmIwODQ0
YWQzZTQ1MzIyODhkLi44NmRmNjNjMDIwZjUwZGI1ZGE1Y2YxZjI4OWVhZGQwOTk4YjNjZDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApA
QCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21wdXRlT3Bl
cmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmCiB7CiAgICAgQVNTRVJU
KG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzICYgZmxhZyk7CiAKLSAgICBPcHRpb25hbDxCb29sZWFu
VmFsdWU+IHByb3BlcnR5OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBwcm9wZXJ0
eTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gcHJvcGVydHlGbGFnVG9BdHRyaWJ1dGVOYW1lKGZs
YWcpOwogICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUgPSBjYWNoZWRCb29sZWFuQXR0cmli
dXRlKG5hbWUsIHByb3BlcnR5KTsKICAgICBzd2l0Y2ggKHZhbHVlKSB7CkBAIC0yMDksNyArMjA5
LDcgQEAgdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogICAgIE1hdGhNTFRva2VuRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpG
bGFnPiBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRyKQogICAgICAgICByZXR1cm4gQWNjZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCmluZGV4
IGJiNTZmNzk0NmU4ZjE1ZTkyYjI4ZjQ2MWU0YjJlN2ZjZTljNzZjMjkuLmUxYzllNjc0Y2U2ODVl
ZDU4NzRlYzcyZWZkYzM5MDNjMmQxOWFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKQEAgLTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPE9wZXJhdG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CisgICAg
c3RkOjpvcHRpb25hbDxPcGVyYXRvckNoYXI+IG1fb3BlcmF0b3JDaGFyOwogCi0gICAgT3B0aW9u
YWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpQcm9wZXJ0eT4gbV9kaWN0aW9uYXJ5UHJvcGVy
dHk7CisgICAgc3RkOjpvcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5
PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlBy
b3BlcnR5IGNvbXB1dGVEaWN0aW9uYXJ5UHJvcGVydHkoKTsKICAgICBjb25zdCBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnk6OlByb3BlcnR5JiBkaWN0aW9uYXJ5UHJvcGVydHkoKTsKIApAQCAtNzEs
MTAgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgT3BlcmF0b3JQcm9wZXJ0aWVzIG1fcHJvcGVydGll
czsKICAgICB2b2lkIGNvbXB1dGVPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
OjpGbGFnKTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9sZWFkaW5nU3BhY2U7Ci0gICAgT3B0
aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21p
blNpemU7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21heFNpemU7CisgICAgc3RkOjpvcHRpb25h
bDxMZW5ndGg+IG1fbGVhZGluZ1NwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3Ry
YWlsaW5nU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbWluU2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9tYXhTaXplOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5kZXggNTk3MmM0OGRiY2EwNWU0YzhjYmIy
YmZjM2RjZDZkNDkyZjJiNDI2Ni4uNjM5NDc4OTFkNDJjMWNhMDQ1NWNjODRlNmM1ZTU5NzRlM2Q4
MGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCkBA
IC00NiwxMSArNDYsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV93
aWR0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAgIE9wdGlvbmFsPExlbmd0
aD4gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fbHNwYWNlOwotICAgIE9wdGlvbmFs
PExlbmd0aD4gbV92b2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExl
bmd0aD4gbV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9sc3BhY2U7CisgICAg
c3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fdm9mZnNldDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCBhMjY5
ZGM5YTA3NjUwZTljZTk1ZmEyMzRkM2U4YmFkMWFhZmI3M2E2Li5mZDVjNGUyMmVkMWE0NDMxMjll
ZGEwZTdmY2YyNjc1Yjc2YTAwZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBN
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUp
CiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9
CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBPcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCitjb25zdCBNYXRoTUxFbGVtZW50
OjpCb29sZWFuVmFsdWUmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgc3RkOjpvcHRpb25hbDxCb29sZWFu
VmFsdWU+JiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZS52YWx1ZSgpOwpAQCAtMzExLDcgKzMxMSw3IEBAIE1hdGhNTEVsZW1lbnQ6Okxl
bmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25zdCBT
dHJpbmcmCiAgICAgcmV0dXJuIHBhcnNlTmFtZWRTcGFjZShzdHJpcHBlZExlbmd0aCk7CiB9CiAK
LWNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6
Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPExl
bmd0aD4mIGxlbmd0aCkKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiYgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUoKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBNYXRoTUxF
bGVtZW50OjpNYXRoVmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhW
YXJpYW50QXR0cmlidXRlKAogICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9uZTsKIH0KIAotT3B0
aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKK3N0ZDo6b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6
TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJp
YW50KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50LmgKaW5kZXggZTI0NjVmMWRmYzlmMDc5MThhMmZiZTZkNjNm
YTEzNDc3OGIyYzNiNi4uM2YyYTc3OGJiNTk3MWM0YzgxMmUyOWIyODAyZGRjNGE0MWJlYTY0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dC5oCkBAIC00NSwxNiArNDUsMTYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzUGhy
YXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKTsKICAgICBzdGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50
KGNvbnN0IE5vZGUmKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9v
bChjb25zdCBCb29sZWFuVmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFs
dWU6OkRlZmF1bHQgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29s
ZWFuVmFsdWU6OlRydWUpOyB9Ci0gICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFu
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9v
bGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0
ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFs
dWU6OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsK
IAogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7Ci0g
ICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IE9wdGlvbmFsPExlbmd0aD4mKTsKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0
aChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRpb25hbDxMZW5ndGg+Jik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgp
IGZpbmFsOwogCi0gICAgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+IG1fbWF0aFZhcmlhbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKIAogcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAppbmRleCA0M2RjNGZjOWYyNzE1MmRk
NzdjNmI1ZWZjZTVmNDVjZTFmZTk2MzliLi40YWE2MzJhOGRhNzBmYjI4MDVkMzMyN2Q5N2ZiYjFi
YjgxNjJmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1l
bnQuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAogICAg
IGNvbnN0IFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9z
dWJzY3JpcHRTaGlmdDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCmluZGV4IDVjZTk0YmRhZmMwM2FmNTg0ZWRj
ZjlmMjBlMTRiMThmNzkzOGE3OTEuLmVkNTI0YWRiNTJjY2IwZGY5MzNmZjQ4YWI0OTMyOGRjZWI5
YWI2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKQEAg
LTQzLDkgKzQzLDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0
aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4gbV9oZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fZGVw
dGg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9r
ZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQu
Y3BwCmluZGV4IDdiZGFmNjEwNGU4ODg5M2FlYzkzN2ZmNTJmMWE3MzNjODM4NzVmNGIuLjU1NWRk
MmVkZjJjNDAzOWYyNjQxZDQ1YTA2MDVhYzcyMzNjYTEzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBAIC04MSwxMyArODEsMTMgQEAgYm9vbCBN
YXRoTUxUb2tlbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYg
Y2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGlzUGhyYXNpbmdDb250ZW50KGNoaWxkKSAmJiBTdHls
ZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKIH0KIAotT3B0aW9u
YWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQo
U3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IE1hdGhNTFRva2VuRWxl
bWVudDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IGF1dG8gY29kZVBvaW50cyA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhzdHJp
bmcpLmNvZGVQb2ludHMoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gY29kZVBvaW50cy5iZWdpbigp
OwogICAgIGlmIChpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRv
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsKICAg
ICArK2l0ZXJhdG9yOwogICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpID8g
Y2hhcmFjdGVyIDogc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRva2VuRWxlbWVudC5oCmluZGV4IGE0ZWU5ZTQ5YzMxNGIwYWIwNmNjMTI4Nzg4NzBiN2Y0N2Fj
MWUyNTQuLjNhZTc2MmY5ODZkYWIxMTdjNmIwMzkxMWJlYmJkNTVhOTdkMDA3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgTWF0aE1MVG9rZW5FbGVtZW50IDogcHVibGljIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1MVG9rZW5FbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHN0YXRpYyBP
cHRpb25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gY29udmVydFRvU2luZ2xlQ29kZVBvaW50
KFN0cmluZ1ZpZXcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAppbmRleCBmNjM0MDJmMGQ3NjJmNGEwODZj
MzI0OTU4OTVjZDQ0YzczYTcyYzIzLi4xY2NjYWI3MGM3ODM0NTA5ZGFkYmUyYTA4M2MzODZiZjQ2
OTFhMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVt
ZW50LmgKQEAgLTQzLDggKzQzLDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEJvb2xl
YW5WYWx1ZT4gbV9hY2NlbnQ7Ci0gICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudFVu
ZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnRVbmRlcjsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcAppbmRleCBiZDAzNDhjYThmYWI4NjdiOGQxNDdkZTE5YTlhZjQzNmQ2MmNlNDg1
Li5hMGMwOTMwNmY5NjI4YjE2NGE5MjIyZjM3MTBkODdlYTU5ODA0YWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBDaHJvbWU6OnNob3dTaGFyZVNoZWV0
KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXIKICAg
ICBtX2NsaWVudC5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KIAotdm9pZCBDaHJvbWU6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBDaHJvbWU6OnNob3dDb250YWN0
UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYgY2Fs
bGJhY2spCiB7CiAgICAgbV9jbGllbnQuc2hvd0NvbnRhY3RQaWNrZXIocmVxdWVzdERhdGEsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KQEAgLTU0Niw3ICs1NDYsNyBAQCBQbGF0Zm9ybURpc3BsYXlJ
RCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQo
KTsKIH0KIAotdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lSW50
ZXJ2YWwpCit2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFt
ZUludGVydmFsKQogewogICAgIG1fcGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlE
LCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBhYjUxNjY1
OGQ3ODAxMDBiNzA5MWU0MWY0YjFlNWFkMmNiMzdjYTgzLi4xNWE0OTFiODRjMjA2ZGQ4YjUxYWRj
NmVlMWRiNjg4OGI3ZjQzZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTkyLDcgKzkyLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3Bs
YXlJRCwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPikgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBydW5PcGVuUGFu
ZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYpOwor
ICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYm
KT4mJik7CiAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
RmlsZUljb25Mb2FkZXImKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaXNhYmxlZEFkYXB0YXRpb25z
RGlkQ2hhbmdlKGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzhmODEyN2FlZjQ0MzI4NTI1ZGYyMTRl
OTYwMzQxMmU2MDI2ZDRiZi4uZWM3MmU5NTQ5MmE2YTc1NzkxYjg3MDUwNmNiYmRlOGViOWU3ZDI4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlB
dmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQ
b2ludGluZ0RldmljZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UG9p
bnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50
aW5nRGV2aWNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uU2V0PFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5n
RGV2aWNlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ltbWVkaWF0
ZUludmFsaWRhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2Vy
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFy
c2VkVVJMJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7
IGNhbGxiYWNrKGZhbHNlKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGFjdFBpY2tlcihj
b25zdCBDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3Qg
Q29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7IH0KICAgICAKICAgICAvLyBBc3luY2hyb25vdXMgcmVxdWVzdCB0byBsb2Fk
IGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgdmlydHVhbCB2b2lkIGxvYWRJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciYpID0gMDsK
QEAgLTQ2Myw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVNjcm9s
bGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKFNjcm9sbGJhclN0eWxlKSB7
IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJy
ZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0gMDsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBlODQ5YWJkNTBmMDVl
MjkwMDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzLi5kNzczZDliMzEyYjM2YTk1NjBkY2Y0NGQ1MThi
MTFjYmMwYWRjYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTM5LDcgKzM5
LDcgQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENs
aWVudE9yaWdpbiYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBkZWNvZGUo
RGVjb2RlciYpOwogCiAgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAg
IGJvb2wgaXNSZWxhdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlciB8fCBjbGllbnRPcmlnaW4gPT0gb3RoZXI7IH0KQEAg
LTc1LDEwICs3NSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDbGll
bnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
Y2xpZW50T3JpZ2luOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2lu
PiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PFNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwotICAgIE9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gY2xpZW50T3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5E
YXRhPiB0b3BPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGNs
aWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdp
biB8fCB0b3BPcmlnaW4tPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCA3NDIxNDkzZTQyZGEzODdlM2Ey
NTQzNWQ0MWYzNzRjYzM1ZmQzYWEyLi4wOGQ1OTZkNGViNzI5NWQyZGJjNjc0NzJiZWY2MDI0OTVi
NTJhM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC02NCw3ICs2NCw3
IEBAIFJlZlB0cjxGcmFtZT4gRE9NU2VsZWN0aW9uOjpmcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
IERPTVdpbmRvd1Byb3BlcnR5OjpmcmFtZSgpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4g
RE9NU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBE
T01TZWxlY3Rpb246OnJhbmdlKCkgY29uc3QKIHsKICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKaW5kZXgg
NTQxYmU0MjM5ODdmN2E0NDQwZTExNWU5YTFkM2YxNTFkNDYwODFiOS4uYzg2YzQxOGYwMTUzMTI2
MzZjYWU1Y2FlMWYxZjhkNjA5NDU5ZTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5o
CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIERPTVdp
bmRvd1Byb3BlcnR5OjpmcmFtZSB0byByZXR1cm4gUmVmUHRyIGFuZCB0aGVuIGRlbGV0ZSB0aGlz
LgogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUoKSBjb25zdDsKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZSgpIGNvbnN0OwogCiAgICAgUG9zaXRpb24gYW5jaG9yUG9zaXRpb24oKSBjb25zdDsKICAgICBQ
b3NpdGlvbiBmb2N1c1Bvc2l0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmlu
ZGV4IDc2ZDJmZTdkOWIwNmU4OWFjM2Y1NTZjMTJkOGFiNDQ5MDViYjQ5ZGEuLjQ1MDIwNGVhZWRi
YjNiNzg3ODhmNzI0M2U5MjZkODI1ODE3ZTI2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3Bw
CkBAIC0zOTQsNyArMzk0LDcgQEAgU2Vjb25kcyBET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9N
aW5pbXVtKCkgY29uc3QKICAgICByZXR1cm4gaW50ZXJ2YWw7CiB9CiAKLU9wdGlvbmFsPE1vbm90
b25pY1RpbWU+IERPTVRpbWVyOjphbGlnbmVkRmlyZVRpbWUoTW9ub3RvbmljVGltZSBmaXJlVGlt
ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gRE9NVGltZXI6OmFsaWduZWRG
aXJlVGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBjb25zdAogewogICAgIFNlY29uZHMgYWxp
Z25tZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRvbVRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpOwogICAg
IGlmICghYWxpZ25tZW50SW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXggYTU1OWY0
MTkzMDkxYmRlNmMyYzc3NjY4ZTUxY2RiOWNmMjBhZmE1OC4uMTFjZmE3ZTUwZmVhOTc5ZWRjMjMz
MGJhNWY1ZTdhNzU3OTZkOTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtNzUsNyArNzUs
NyBAQCBwcml2YXRlOgogICAgIC8vIFN1c3BlbmRhYmxlVGltZXJCYXNlCiAgICAgdm9pZCBmaXJl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RvcCgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGFsaWduZWRGaXJlVGltZShNb25vdG9uaWNU
aW1lKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPE1v
bm90b25pY1RpbWU+IGFsaWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1lKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CmluZGV4IGYyNmNlNDNiZjNlZDAyN2E5NGYyNjdhYWU4YjQyMGZiNjBlOTZhNzcuLmE4ZjVlZjNh
Y2Q2MWRjMjUxYWQyMGIxNzk0Y2U3NDA1M2QzZjg5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKQEAgLTE1MSw5ICsxNTEsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBz
dGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0VHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uIHsg
Ml9zIH07CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNvbmRzPiYgdHJhbnNpZW50QWN0aXZhdGlvbkR1
cmF0aW9uT3ZlcnJpZGVGb3JUZXN0aW5nKCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
JiB0cmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25PdmVycmlkZUZvclRlc3RpbmcoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxTZWNvbmRzPj4gb3ZlcnJpZGVGb3JUZXN0
aW5nOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBv
dmVycmlkZUZvclRlc3Rpbmc7CiAgICAgcmV0dXJuIG92ZXJyaWRlRm9yVGVzdGluZzsKIH0KIApA
QCAtMTUxOSw3ICsxNTE5LDcgQEAgRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25z
dAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKLXZvaWQgRE9NV2luZG93OjpvdmVy
cmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3RpbmcoT3B0aW9uYWw8U2Vjb25k
cz4mJiBvdmVycmlkZSkKK3ZvaWQgRE9NV2luZG93OjpvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRp
b25EdXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiYmIG92ZXJyaWRlKQog
ewogICAgIHRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbk92ZXJyaWRlRm9yVGVzdGluZygpID0g
V1RGTW92ZShvdmVycmlkZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxNWE2YmNh
ZmVlNDY1ZWQzZjAwZGQyY2IxMDFjZTYxMzNmZGUxNzEzLi4wMTA1ZDk0MGFmNDY2MzAwOTA3MmM5
NDE3YmQwZTQ2NzYxZWFjZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTE3Niw3ICsx
NzYsNyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CiAgICAgTmF2aWdhdG9yJiBjbGllbnRJbmZv
cm1hdGlvbigpIHsgcmV0dXJuIG5hdmlnYXRvcigpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3Rpbmco
T3B0aW9uYWw8U2Vjb25kcz4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgb3Zl
cnJpZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25Gb3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4mJik7CiAgICAgdm9pZCBzZXRMYXN0QWN0aXZhdGlvblRpbWVzdGFtcChNb25vdG9u
aWNUaW1lIGxhc3RBY3RpdmF0aW9uVGltZXN0YW1wKSB7IG1fbGFzdEFjdGl2YXRpb25UaW1lc3Rh
bXAgPSBsYXN0QWN0aXZhdGlvblRpbWVzdGFtcDsgfQogICAgIE1vbm90b25pY1RpbWUgbGFzdEFj
dGl2YXRpb25UaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2xhc3RBY3RpdmF0aW9uVGltZXN0
YW1wOyB9CiAgICAgdm9pZCBub3RpZnlBY3RpdmF0ZWQoTW9ub3RvbmljVGltZSk7CkBAIC00MzIs
NyArNDMyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRM
b2FkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNwZW5z
aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdXNwZW5kaW5nT2JzZXJ2ZXJzIHsgZmFsc2Ug
fTsKLSAgICBPcHRpb25hbDxib29sPiBtX2NhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZTsKIAogICAg
IEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBtdXRhYmxlIFJlZlB0cjxQZXJmb3JtYW5jZT4gbV9wZXJmb3JtYW5jZTsK
IAotICAgIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gbV9mcm96ZW5Ob3dUaW1l
c3RhbXA7CisgICAgc3RkOjpvcHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IG1fZnJv
emVuTm93VGltZXN0YW1wOwogCiAgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHRyYWNraW5nIHVz
ZXIgYWN0aXZhdGlvbiwgZWFjaCBXaW5kb3cgVyBoYXMgYSBsYXN0IGFjdGl2YXRpb24gdGltZXN0
YW1wLiBUaGlzIGlzIGEgbnVtYmVyIGluZGljYXRpbmcgdGhlIGxhc3QgdGltZSBXIGdvdAogICAg
IC8vIGFuIGFjdGl2YXRpb24gbm90aWZpY2F0aW9uLiBJdCBjb3JyZXNwb25kcyB0byBhIERPTUhp
Z2hSZXNUaW1lU3RhbXAgdmFsdWUgZXhjZXB0IGZvciB0d28gY2FzZXM6IHBvc2l0aXZlIGluZmlu
aXR5IGluZGljYXRlcyB0aGF0IFcgaGFzIG5ldmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDg4NjAwYTY1ZDk4YzYyYjRkNzI5NTY3YmMzYzk4YWVlNThiNzhjODMu
LjRmZWU4NmVjOGE1MjEwMDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGllbnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotT3B0
aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1
cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogfQogCi1PcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJv
bGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVy
biBkcmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0zMDcsNyArMzA3LDcgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCogbmV3
RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAot
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRh
dGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIHsKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCkBAIC0zMTcs
NyArMzE3LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdF
bnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmEKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKLSAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAg
ICBtX2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3VtZW50RHJhZyhkcmFnRGF0YSwgbV9kcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0aW9uKTsKICAgICBpZiAobV9kcmFnSGFu
ZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lICYmIChtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKSkpIHsK
ICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpOwpAQCAt
MzkxLDcgKzM5MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuCiAKICNlbmRpZgogCi1EcmFn
SGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0
aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRpb24pCitE
cmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3Rp
bmF0aW9uQWN0aW9uTWFzaywgc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJh
dGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlKQogICAgICAgICByZXR1cm4g
RHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIE9wdGlvblNldDxE
cmFnU291cmNlQWN0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9u
KGNvbnN0IEludFBvCiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29u
dHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2lu
dChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsKIApAQCAtNjkzLDcgKzY5Myw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRl
ZmF1bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9w
ZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1h
c2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRjaCBJRSdzIG9wZXJhdGlvbiBm
YWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUgcGFnZSBjYWxscyBwcmV2ZW50
RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBzZXQgZHJvcEVmZmVjdC4KQEAg
LTcxNCw3ICs3MTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9w
ZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+CiAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb246OkdlbmVyaWM7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJh
Zyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVy
YXRpb24pCitib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhLCBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCiB7CiAg
ICAgQVNTRVJUKG1fZG9jdW1lbnRVbmRlck1vdXNlKTsKICAgICBSZWY8RnJhbWU+IG1haW5GcmFt
ZShtX3BhZ2UubWFpbkZyYW1lKCkpOwpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgRHJhZ0NvbnRy
b2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgT3B0aW9uU2V0PERyYWdT
b3VyY2VBY3RpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRy
b2xsZXI6OmhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxI
aXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChG
cmFtZSYgc291cmNlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiB7CiAgICAgaWYgKCFzb3VyY2UudmlldygpIHx8ICFzb3VyY2UuY29udGVudFJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmgKaW5kZXggNTJiYjQ5MTBkMTdhNjM3NWFmZjI1ODlkMjY4YzhmZjM1ODU2NzE3
Ny4uZmU0OTczZTk4Zjc0ODBiYmExMzg4MTJlNDAyZGUwODBkYjI1NmM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgRHJhZ09wZXJhdGlvbiBwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25z
dCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ1VwZGF0ZWQoY29u
c3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBlcmZvcm1EcmFnT3BlcmF0
aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2Vs
bGVkKCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxS
ZWY8SFRNTEltYWdlRWxlbWVudD4+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKSBjb25zdCB7
IHJldHVybiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyczsgfQotICAgIGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlOyB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoSFRNTEltYWdlRWxl
bWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJ
bnRTaXplPiYgaW1hZ2VTaXplcyk7CkBAIC0xMTAsMTEgKzExMCwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29u
Y2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwotICAgIE9wdGlvbmFsPERyYWdPcGVyYXRp
b24+IGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7Ci0gICAgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYpOwotICAgIERy
YWdIYW5kbGluZ01ldGhvZCB0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKLSAg
ICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvbmFsPERyYWdPcGVyYXRp
b24+Jik7Ci0gICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRP
clVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRp
b24+IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdN
ZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4sIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBib29s
IHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24oY29u
c3QgRHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgYm9vbCBkcmFn
SXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGlzQ29w
eUtleURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCopOwogICAgIGJvb2wgc2hv
dWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29uc3QgSW1hZ2UmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUm
LCBFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhp
dFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmLCBFbGVtZW50Jiwg
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIHZvaWQgZG9JbWFnZURyYWcoRWxlbWVudCYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYsIEZyYW1lJiwgSW50UG9pbnQmLCBjb25z
dCBEcmFnU3RhdGUmLCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOwogICAgIHZvaWQgZG9TeXN0
ZW1EcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIEZyYW1l
JiwgY29uc3QgRHJhZ1N0YXRlJiwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKQEAgLTE2Myw3
ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9v
bCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8SFRNTEltYWdl
RWxlbWVudD4+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzOwotICAgIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2U7CisgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlOwogfTsKIAogV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0RyYWdnYWJsZUxpbmsoY29uc3QgRWxlbWVudCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ1N0YXRlLmgKaW5kZXggNzAyNDI1NDMxMDNmNGYxZTFhOWM0YmJjZDcxMTdhYmI4Nzg4
YzkwYy4uM2IwZmM5ZTQ1NThhYjg3ZTNhNzBiYzY1M2M4NjIxZjlmYjk3Y2FmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdTdGF0ZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
cnVjdCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVtZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQg
dGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUu
CiAgICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50czsKLSAgICBPcHRpb25TZXQ8RHJhZ1NvdXJj
ZUFjdGlvbj4gdHlwZTsgLy8gU2hvdWxkIGJlIE9wdGlvbmFsPD4uIFNlZSBCdWcgMjEzMDg2Lgor
ICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiB0eXBlOyAvLyBTaG91bGQgYmUgc3RkOjpv
cHRpb25hbDw+LiBTZWUgYnVnIDIxMzA4Ni4KICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRh
VHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBhMTczZGFhZWIzMDk5MmY5YTlj
MTY1YzYwYzVjNzlhOWNjNTI1MjNmLi5mNjE4NWExMjM1Y2ZjZTdiNzQ5MjhhZGU3MzI4YTEwYzNl
MjAwNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAg
Y2xhc3MgRWRpdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FZGl0b3JDbGllbnQo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxl
dGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgPSAwOyAKICAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpID0gMDsKQEAgLTY3
LDEzICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0
aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRF
ZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJ
bnNlcnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNl
cnRBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24p
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiB0b1JhbmdlLCBBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZy
b21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmlu
aXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJl
dmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH07CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1cHByZXNzUGFzc3dvcmRFY2hvKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH07CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5
bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVy
dGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBcHBseVN0eWxlKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikg
PSAwOwogCkBAIC05NSw5ICs5NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdmNjk2NjIxYTEzOTM5ZDU5Nzkz
Y2JhNzhlODVlMjY0MzA0NDEyYjQuLjk0N2M3ZTY5MzAwNGRhZmRlYmMxZjRiYTZjOTMzZTUzYzRi
OTM0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM5NSw4ICszOTUs
NyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogICAgIG1fZHJhZ1RhcmdldCA9IG51bGxw
dHI7CiAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICNlbmRpZgot
ICAgIG1fbW91c2VQb3NpdGlvbklzVW5rbm93biA9IHRydWU7Ci0gICAgbV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uID0geyB9OworICAgIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24gPSB7IH07CiAgICAgbV9t
b3VzZVByZXNzTm9kZSA9IG51bGxwdHI7CiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAg
LTkzMiw3ICs5MzEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91
c2VEcmFnKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRU
ZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7ICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9u
bHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpN
b3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50
IH07Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2lu
dCgpKSkpOwogICAgIGRvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgdXBk
YXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKHJlc3VsdCk7CiB9CkBAIC0xMjk3LDcgKzEyOTYsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2lj
YWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTYwogCiBJbnRQb2ludCBFdmVudEhhbmRsZXI6Omxhc3RL
bm93bk1vdXNlUG9zaXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNl
UG9zaXRpb247CisgICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJ
bnRQb2ludCgpKTsKIH0KIAogUmVmUHRyPEZyYW1lPiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9y
SGl0VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBoaXRUZXN0
UmVzdWx0KQpAQCAtMTM3NSw3ICsxMzc0LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1
cnNvcklmTmVlZGVkKCkKIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcigpCiB7Ci0g
ICAgaWYgKG1fbW91c2VQb3NpdGlvbklzVW5rbm93bikKKyAgICBpZiAoIW1fbGFzdEtub3duTW91
c2VQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKSkgewpAQCAtMTQwMSw3ICsxNDAwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZUN1cnNvcigpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZp
ZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKIAogICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0ZyYW1lU2Ny
b2xsYmFycyB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVu
dHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
dmlldy0+d2luZG93VG9Db250ZW50cygqbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAg
ZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsKIAogICAgIHVwZGF0ZUN1cnNvcigq
dmlldywgcmVzdWx0LCBzaGlmdEtleSk7CkBAIC0xNDE1LDcgKzE0MTQsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYgdmlldywgY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBibwogICAgIH0KIH0KIAotT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6
OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hpZnRLZXkp
CitzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNoaWZ0S2V5KQogewogICAgIGlmIChtX3Jlc2l6
ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9kZSgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTk0OSw3ICsxOTQ4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3Vz
ZUUKICNlbmRpZgogCiAgICAgaWYgKG1fc3ZnUGFuKSB7Ci0gICAgICAgIGRvd25jYXN0PFNWR0Rv
Y3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndp
bmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgICAgIGRvd25j
YXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52
aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29y
KEludFBvaW50KCkpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjExNSw3
ICsyMTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3UKIAogICAgIGlmIChtX3N2Z1Bhbikg
ewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAgICAgICBkb3duY2FzdDxTVkdEb2N1bWVu
dD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOworICAgICAgICBkb3duY2FzdDxT
VkdEb2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQ
b2ludCgpKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyOTcsNyArMjI5
Niw3IEBAIHN0YXRpYyBib29sIHRhcmdldElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZy
YW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYg
ZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZl
cnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVy
YXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImNvcHkiKQogICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKQEAgLTIzMDgsNyArMjMwNyw3IEBAIHN0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRp
b24oY29uc3QgU3RyCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmlu
ZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oT3B0aW9uYWw8RHJhZ09w
ZXJhdGlvbj4gb3BlcmF0aW9uKQorc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRv
RHJvcFpvbmVPcGVyYXRpb24oc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24p
CiB7CiAgICAgaWYgKG9wZXJhdGlvbikgewogICAgICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsK
QEAgLTIzNDAsNyArMjMzOSw3IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJn
ZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJp
bmcga2V5d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJr
aXRkcm9wem9uZUF0dHIpLCB0cnVlKTsKICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0g
ICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewog
ICAgICAgICAgICAgaWYgKGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFkcmFnT3BlcmF0aW9uKQpAQCAtMjgwOCw3ICsyODA3LDcgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBjb24KICAgICAKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25J
bldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewotICAgIHJldHVybiBtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlv
bi52YWx1ZV9vcihJbnRQb2ludCgpKTsKIH0KICAgICAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTMwNTgsNyArMzA1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoCiAg
ICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hl
ZWxFdmVudCwgZ2VzdHVyZVN0YXRlKTsKIH0KIAotT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRI
YW5kbGluZykKK3N0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFu
ZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICNp
ZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgaWYgKCFtX3doZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBldmVudEhhbmRsaW5nLmNv
bnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRpc3BhdGNoZWRUb0RPTSkpCkBAIC0zMjg3LDcgKzMyODYs
NyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCkK
ICAgICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX21v
dXNlUG9zaXRpb25Jc1Vua25vd24pCisgICAgaWYgKCFtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24p
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkp
IHsKQEAgLTMzMTQsNyArMzMxMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFxdWFkLmNvbnRhaW5zUG9pbnQodmll
dy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSkKKyAgICBpZiAo
IXF1YWQuY29udGFpbnNQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKQEAgLTMzNDMsNyArMzM0Miw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKCkKICAgICBi
b29sIGFsdEtleTsKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRh
S2V5KTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZUV2ZW50KG1fbGFzdEtu
b3duTW91c2VQb3NpdGlvbiwgbV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBOb0J1dHRv
biwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtl
eSwgbWV0YUtleSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CisgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVudChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVf
b3IoSW50UG9pbnQoKSksIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwgTm9CdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXks
IG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1vdXNlTW92ZWQoZmFr
ZU1vdXNlTW92ZUV2ZW50KTsKIH0KICNlbmRpZiAvLyAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CkBAIC0zMzY5LDcgKzMzNjgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVk
KCkKIAogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAg
ICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKLSAgICAgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25N
b3VzZVBvc2l0aW9uKSk7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2lu
dCgpKSkpOwogICAgICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgICAgICBk
b2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgICAgICAgICAgZG9jdW1lbnQt
PnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoaGl0VHlwZSwgcmVzdWx0LnRhcmdldEVsZW1lbnQoKSk7
CkBAIC0zODY3LDcgKzM4NjYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkK
ICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gZHJhZ2dlZENvbnRlbnRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwogICAgIGlmIChkcmFnU3RhdGUoKS50eXBlLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikpCiAgICAgICAgIGRyYWdnZWRDb250ZW50
UmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdl
KCk7CiAgICAgZWxzZQpAQCAtNDU3Miw3ICs0NTcxLDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRp
c3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQKIAogdm9pZCBFdmVudEhhbmRsZXI6OnNldExhc3RLbm93bk1vdXNlUG9zaXRpb24oY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBtX21vdXNlUG9zaXRpb25Jc1Vua25v
d24gPSBmYWxzZTsKICAgICBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24gPSBldmVudC5wb3NpdGlv
bigpOwogICAgIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmZmI3MzY5NDUw
ZTQ5MzllYzdiY2FlMmRiYTdiYTkyODVmOGY2NzFiLi5lOTY2MTM4YTFkZGY1ODg5YzZhMjVhNjg2
YzZlOGE3YWFkNTBlODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTE2Niw3
ICsxNjYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3Qg
RHJhZ1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAg
ICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9wZXJhdGlvbk1hc2s7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+PiBvcGVyYXRpb25N
YXNrOwogICAgIH07CiAgICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdn
aW5nRmlsZXMpOwogICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKQEAgLTM0MiwxMCArMzQyLDEwIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbFNlbGVjdGlvbkF1dG9zY3JvbGwoKTsK
ICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJz
b3IoY29uc3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3Vs
dCYsIGJvb2wgc2hpZnRLZXkpOwogCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAg
IE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSog
c3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJs
ZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOwotICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIHBsYXRmb3JtQ29tcGxl
dGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29u
c3QgV2lkZ2V0JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIApAQCAtNTY3LDkg
KzU2Nyw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0U2l6ZSBtX29mZnNldEZyb21SZXNpemVDb3Ju
ZXI7IC8vIEluIHRoZSBjb29yZHMgb2YgbV9yZXNpemVMYXllci4KICAgICAKICAgICBpbnQgbV9j
bGlja0NvdW50IHsgMCB9OwotICAgIGJvb2wgbV9tb3VzZVBvc2l0aW9uSXNVbmtub3duIHsgdHJ1
ZSB9OyAvLyBGSVhNRTogVXNlIE9wdGlvbmFsPD4gaW5zdGVhZC4KIAotICAgIEludFBvaW50IG1f
bGFzdEtub3duTW91c2VQb3NpdGlvbjsgLy8gU2FtZSBjb29yZGluYXRlcyBhcyBQbGF0Zm9ybU1v
dXNlRXZlbnQ6OnBvc2l0aW9uKCkuCisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gbV9sYXN0
S25vd25Nb3VzZVBvc2l0aW9uOyAvLyBTYW1lIGNvb3JkaW5hdGVzIGFzIFBsYXRmb3JtTW91c2VF
dmVudDo6cG9zaXRpb24oKS4KICAgICBJbnRQb2ludCBtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9z
aXRpb247CiAgICAgSW50UG9pbnQgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uOwogICAgIFdh
bGxUaW1lIG1fbW91c2VEb3duVGltZXN0YW1wOwpAQCAtNTk3LDcgKzU5Niw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBtX3doZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElP
U19UT1VDSF9FVkVOVFMpCkBAIC02NDEsNyArNjQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
QXV0b3Njcm9sbGluZyB7IGZhbHNlIH07CiAgICAgSW50UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xs
UG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwotICAgIE9wdGlvbmFsPElu
dFBvaW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290
Vmlld0Nvb3JkaW5hdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IG1faW5pdGlhbFRh
cmdldEF1dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggZGJmNjM3Y2Zi
Mjk4MDY2MWFhNjc3MGE3OGE0NDdhZmVkMDM1OWE4Ny4uZmVhODIyZjMwMWYwNzk3YWMyYWI1NTcy
YzhhNzQ1NjQyN2Y4ZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTMw
OSw4ICszMDksOCBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKCkKICAgICAg
ICAgICAgIG1fZGlzY2FyZFRyYWlsaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICB9CiAKLSAg
ICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxpbmVMZW5ndGg7Ci0gICAgICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBmaWVsZExlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGlu
ZUxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGg7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc2l0aW9uOyAhbGluZUxlbmd0aCAmJiBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fcmVjZWl2ZUJ1ZmZlcltpXSkgewogICAg
ICAgICAgICAgY2FzZSAnOic6CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6
cGFyc2VFdmVudFN0cmVhbSgpCiAgICAgICAgIG1fcmVjZWl2ZUJ1ZmZlci5yZW1vdmUoMCwgcG9z
aXRpb24pOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNp
Z25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBs
aW5lTGVuZ3RoKQordm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWdu
ZWQgcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25l
ZCBsaW5lTGVuZ3RoKQogewogICAgIGlmICghbGluZUxlbmd0aCkgewogICAgICAgICBpZiAoIW1f
ZGF0YS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggY2UyNTMwZmMx
M2U5ZmEyNDExYjkyYmUxZDdhNmYwY2U0ODMxNTEwYS4uMTdmYjVmYzFkMzk3MjM3ODY3OTk1OThi
ZmQ4ZDY1ODgzOTA3NDY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVJlY29ubmVjdCgpOwogICAgIHZv
aWQgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbSgp
OwotICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlv
bmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCk7CisgICAgdm9p
ZCBwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVMZW5ndGgpOwogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlRXZlbnQoKTsKIAogICAgIGJvb2wgcmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNWJiZjUzYmU4
NzkyODRlZWJlODI5OTNhM2NmMzYyYzU2NzFiMGQ4Ny4uMWFmMjdkODRmMzVhZjBkM2JhMWZiOWRi
YWZhMzFlNDNjNjY2MTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcxMiwxMiArNzEyLDEy
IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24oKQog
ICAgICAgICBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkod29ybGQsIHNjcmlwdC5nZXQoKSk7
CiB9CiAKLU9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBGcmFtZTo6cGFnZUlEKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1lOjpwYWdlSUQoKSBjb25zdAogewogICAg
IHJldHVybiBsb2FkZXIoKS5wYWdlSUQoKTsKIH0KIAotT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBGcmFtZTo6ZnJhbWVJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
RnJhbWU6OmZyYW1lSUQoKSBjb25zdAogewogICAgIHJldHVybiBsb2FkZXIoKS5mcmFtZUlEKCk7
CiB9CkBAIC04NDUsNyArODQ1LDcgQEAgRG9jdW1lbnQqIEZyYW1lOjpkb2N1bWVudEF0UG9pbnQo
Y29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyAm
cmVzdWx0LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKIH0KIAotT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQor
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmIGZyYW1lUG9pbnQpCiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkZvclBvaW50KGZyYW1lUG9pbnQpOwogCkBAIC04NjYsNyArODY2LDcgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50
KQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgRnJhbWU6OmNyZWF0ZVZpZXco
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tn
cm91bmRDb2xvciwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAg
IGNvbnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNp
YmxlQ29udGVudFJlY3QsCiAgICAgYm9vbCB1c2VGaXhlZExheW91dCwgU2Nyb2xsYmFyTW9kZSBo
b3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jpem9udGFsTG9jaywKICAgICBTY3JvbGxi
YXJNb2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9vbCB2ZXJ0aWNhbExvY2spCkBAIC05NTYs
NyArOTU2LDcgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmbG9hdCBw
YWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21GYWN0b3IKICAgICBpZiAoaXM8U1ZHRG9jdW1l
bnQ+KCpkb2N1bWVudCkgJiYgIWRvd25jYXN0PFNWR0RvY3VtZW50PigqZG9jdW1lbnQpLnpvb21B
bmRQYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFNjcm9sbFBv
c2l0aW9uPiBzY3JvbGxQb3NpdGlvbkFmdGVyWm9vbWVkOworICAgIHN0ZDo6b3B0aW9uYWw8U2Ny
b2xsUG9zaXRpb24+IHNjcm9sbFBvc2l0aW9uQWZ0ZXJab29tZWQ7CiAgICAgaWYgKG1fcGFnZVpv
b21GYWN0b3IgIT0gcGFnZVpvb21GYWN0b3IpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2Ny
b2xsIHBvc2l0aW9uIHdpdGggc2NhbGUgYWZ0ZXIgem9vbWluZyB0byBzdGF5IHRoZSBzYW1lIHBv
c2l0aW9uIGluIHRoZSBjb250ZW50LgogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gdGhp
cy0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNmY5ZjJlZDk0MjJiYjM5YzQ0ZmEzMzk3
Y2U4ODY0NGU4ZjcxMmQwYy4uMzdiMWFmMjExZTM0MDk3NGUwYzUyN2JlZThiMTczYjY2NjhlZWUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYg
c3R5bGUsIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRW
aWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRl
Vmlldyhjb25zdCBJbnRTaXplJiwgY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29s
b3IsCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25z
dCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0LAogICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJh
ck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAg
ICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZh
bHNlKTsKQEAgLTE3OCw4ICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlciYg
c2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBTY3JpcHRDb250cm9sbGVy
JiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJWaWV3KiBjb250ZW50UmVu
ZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVuZGVyIHRyZWUgZm9yIHRoZSBkb2N1bWVu
dCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJXaWRn
ZXQqIG93bmVyUmVuZGVyZXIoKSBjb25zdDsgLy8gUmVuZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRo
YXQgY29udGFpbnMgdGhpcyBmcmFtZS4KQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpIGNvbnN0OwogICAgIERvY3VtZW50KiBkb2N1bWVu
dEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJh
bWVQb2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24mLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0
RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwogICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZv
cmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3Qq
IHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCAyZjRjZTEzNjYxYzc2YTBjMzg5MzlmMDFjZDI1ZDIzOWY3ZDg0
YjExLi4yYTk1NmMyOWEzNzRlMGIxZDg3MzRjMWM3ZTg5ZWQ0ODRhYWVlZjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
Y2FsY3VsYXRlQmFzZUJhY2tncm91bmRDb2xvcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dXNlc0RhcmtBcHBlYXJhbmNlID0gdXNpbmdEYXJrQXBwZWFyYW5jZTsKLSAgICBPcHRpb25hbDxD
b2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKICAgICBpZiAobV9pc1RyYW5zcGFyZW50KQogICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgdXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CkBAIC0xNjg4LDcgKzE2ODgsNyBAQCB2b2lk
IEZyYW1lVmlldzo6c2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50IG9yaWdp
biwgVHJpZ2dlckxheW91dE9yTgogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldExheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QsIFRyaWdnZXJM
YXlvdXRPck5vdCBsYXlvdXRUcmlnZ2VyaW5nKQordm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdCwgVHJpZ2dl
ckxheW91dE9yTm90IGxheW91dFRyaWdnZXJpbmcpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlv
dXRWaWV3cG9ydE92ZXJyaWRlUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcwNiw3ICsxNzA2
LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlv
bmFsPExheW91dFJlY3Q+IHJlY3QsIFRyaWdnZXIKICAgICAgICAgc2V0Vmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRWaXN1YWxW
aWV3cG9ydE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0KQordm9pZCBGcmFt
ZVZpZXc6OnNldFZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0
UmVjdD4gcmVjdCkKIHsKICAgICBtX3Zpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gcmVjdDsK
IH0KQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xv
cikKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3Qgc3Rk
OjpvcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKICNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQogICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5k
Q29sb3IudmFsdWVfb3IoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1Zh
bHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOwpA
QCAtNDkzMCwzMCArNDkzMCwzMCBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogICAgIHJldHVy
biBwYXJlbnRQb2ludDsKIH0KIAotZmxvYXQgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQWJzb2x1dGVT
Y2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK2Zsb2F0IEZy
YW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3Ioc3RkOjpvcHRpb25hbDxmbG9h
dD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBh
c3NlZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFjdG9yKCkuIAogICAgIHJldHVy
biBlZmZlY3RpdmVab29tLnZhbHVlX29yKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFt
ZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAotZmxvYXQgRnJhbWVWaWV3OjphYnNvbHV0ZVRv
RG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QK
K2Zsb2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3Ioc3RkOjpvcHRp
b25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAvLyBJZiBlZmZlY3RpdmVa
b29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFjdG9yKCkuIAog
ICAgIHJldHVybiAxIC8gZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9v
bSk7CiB9CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxv
YXRSZWN0IHJlY3QsIE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAorRmxvYXRS
ZWN0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJlY3QgcmVjdCwgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICByZWN0LnNjYWxl
KGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKGVmZmVjdGl2ZVpvb20pKTsKICAgICByZXR1
cm4gcmVjdDsKIH0KIAotRmxvYXRQb2ludCBGcmFtZVZpZXc6OmFic29sdXRlVG9Eb2N1bWVudFBv
aW50KEZsb2F0UG9pbnQgcCwgT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CitG
bG9hdFBvaW50IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCBw
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAogewogICAgIHJldHVy
biBwLnNjYWxlZChhYnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihlZmZlY3RpdmVab29tKSk7
CiB9CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVj
dCByZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK0Zsb2F0UmVjdCBG
cmFtZVZpZXc6OmFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudFRv
Q2xpZW50UmVjdChhYnNvbHV0ZVRvRG9jdW1lbnRSZWN0KHJlY3QsIGVmZmVjdGl2ZVpvb20pKTsK
IH0KQEAgLTUxMzcsNyArNTEzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVDaGlsZChXaWRn
ZXQmIHdpZGdldCkKICAgICBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwogfQogCi1i
b29sIEZyYW1lVmlldzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCitib29sIEZyYW1lVmlldzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICAvLyBOb3RlIHRo
YXQgdG8gYWxsb3cgZm9yIHJ1YmJlci1iYW5kIG92ZXItc2Nyb2xsIGJlaGF2aW9yLCBldmVuIG5v
bi1zY3JvbGxhYmxlIHZpZXdzCiAgICAgLy8gc2hvdWxkIGhhbmRsZSB3aGVlbCBldmVudHMuCkBA
IC01NDYyLDcgKzU0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6bm90aWZ5V2lkZ2V0cyhXaWRnZXRO
b3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogICAgICAgICB3aWRnZXQtPm5vdGlmeVdpZGdldChu
b3RpZmljYXRpb24pOwogfQogCi12b2lkIEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9w
dGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBGcmFtZVZpZXc6OnNldFZp
ZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQog
ewogICAgIGlmIChtX3ZpZXdFeHBvc2VkUmVjdCA9PSB2aWV3RXhwb3NlZFJlY3QpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDAyYTkwNjhjN2MzNzAxZDFmYjMz
ZDNmNWMwODMyMjJkZmFiYWYxOTEuLmI2OTEyN2ZkMWI2NGMyYjQxMmRkMjNhOGRjMjg4NGI0YjYz
M2EwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
Q29sb3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3Qgc3RkOjpvcHRp
b25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVtIEV4dGVuZGVkQmFja2dy
b3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lICAgICAg
ICAgID0gMCwKQEAgLTI3MywxMSArMjczLDExIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBJZiBz
ZXQsIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCAibV9sYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2l6ZSBv
ZiBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2siIHJlY3QuCiAgICAgLy8gVXNlZCB3aXRoIGRlbGVn
YXRlZCBzY3JvbGxpbmcgKGkuZS4gaU9TKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+LCBUcmlnZ2VyTGF5
b3V0T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6Olllcyk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
UmVjdD4gbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXlv
dXRWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+LCBUcmlnZ2Vy
TGF5b3V0T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6Olllcyk7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiBsYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Q7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4pOwot
ICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IHZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV92aXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdDsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB2aXN1YWxWaWV3cG9y
dE92ZXJyaWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsVmlld3BvcnRPdmVycmlkZVJl
Y3Q7IH0KIAogICAgIC8vIFRoZXNlIGFyZSBpbiBkb2N1bWVudCBjb29yZGluYXRlcywgdW5hZmZl
Y3RlZCBieSBwYWdlIHNjYWxlIChidXQgYWZmZWN0ZWQgYnkgem9vbWluZykuCiAgICAgV0VCQ09S
RV9FWFBPUlQgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdDsKQEAgLTQ5Mywx
MyArNDkzLDEzIEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdW
aWV3KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBJbnRQb2ludCBjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKLSAgICBm
bG9hdCBkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0
aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgZmxvYXQgYWJzb2x1dGVUb0RvY3Vt
ZW50U2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OworICAgIGZsb2F0IGRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAg
IGZsb2F0IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBPcHRpb25hbDxm
bG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChGbG9hdFBvaW50LCBPcHRp
b25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGFic29sdXRlVG9Eb2N1bWVudFBvaW50KEZs
b2F0UG9pbnQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OwogCi0gICAgRmxvYXRSZWN0IGFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVj
dCwgT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owor
ICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRvQ2xpZW50UmVjdChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRmxv
YXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKQEAgLTU2
OCw3ICs1NjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBv
cnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9u
IE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNj
cm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCiAgICAgLy8gd2UgbmVlZCB0aGlz
IGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3JvbGwgb3Vyc2VsdmVzLgotICAgIGJvb2wg
aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBP
cHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIGZpbmFsOworICAgIGJvb2wgaGFuZGxl
V2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlVGVzdGluZ0VuYWJsZWQoYm9vbCk7CiAK
QEAgLTY0MCw4ICs2NDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gb2YgdGhlIHZpZXcgaXMgYWN0dWFs
bHkgZXhwb3NlZCBvbiBzY3JlZW4gKHRha2luZyBpbnRvIGFjY291bnQKICAgICAvLyBjbGlwcGlu
ZyBieSBvdGhlciBVSSBlbGVtZW50cyksIHdoZXJlYXMgdmlzaWJsZUNvbnRlbnRSZWN0IGlzCiAg
ICAgLy8gaW50ZXJuYWwgdG8gV2ViQ29yZSBhbmQgZG9lc24ndCByZXNwZWN0IHRob3NlIHRoaW5n
cy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxG
bG9hdFJlY3Q+KTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92
aWV3RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9p
ZCB1cGRhdGVTbmFwT2Zmc2V0cygpIGZpbmFsOwpAQCAtODQzLDggKzg0Myw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KTsK
IAogICAgIHN0cnVjdCBPdmVycmlkZVZpZXdwb3J0U2l6ZSB7Ci0gICAgICAgIE9wdGlvbmFsPGlu
dD4gd2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAK
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE92ZXJyaWRlVmlld3BvcnRTaXplJiByaHMp
IGNvbnN0IHsgcmV0dXJuIHJocy53aWR0aCA9PSB3aWR0aCAmJiByaHMuaGVpZ2h0ID09IGhlaWdo
dDsgfQogICAgIH07CkBAIC04OTgsMTAgKzg5OCwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxX
VEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlOwogCiAgICAg
TGF5b3V0UG9pbnQgbV9sYXlvdXRWaWV3cG9ydE9yaWdpbjsKLSAgICBPcHRpb25hbDxMYXlvdXRS
ZWN0PiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OwotICAgIE9wdGlvbmFsPExheW91dFJl
Y3Q+IG1fdmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Q7IC8vIFVzZWQgd2hlbiB0aGUgaU9TIGtl
eWJvYXJkIGlzIHNob3dpbmcuCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBtX2xheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gbV92
aXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdDsgLy8gVXNlZCB3aGVuIHRoZSBpT1Mga2V5Ym9hcmQg
aXMgc2hvd2luZy4KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogCiAgICAg
T3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG1fcGFpbnRCZWhhdmlvcjsKIApAQCAtOTE2LDEwICs5
MTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91
dFJlY3QgeyBmYWxzZSB9OwogCiAgICAgSW50UmVjdCBtX2N1c3RvbUZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fY3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50
OworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9jdXN0b21TaXplRm9yUmVzaXplRXZlbnQ7
CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBtX292ZXJyaWRl
Vmlld3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+IG1f
b3ZlcnJpZGVWaWV3cG9ydFNpemU7CiAKICAgICAvLyBUaGUgdmlldyBzaXplIHdoZW4gYXV0b3Np
emluZy4KICAgICBJbnRTaXplIG1fYXV0b1NpemVDb25zdHJhaW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXggNDMwMTg0OWRkN2Q2ZTE3ZDQ3MGZm
YmExODA4NmIxNDQzMjlhNWRjOS4uNjJkMGU2N2Q1NWY5MDJhNjA4YzFjYjc0NjQ4NTJkOWIyMjZk
ODAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBA
IC0zNyw3ICszNyw3IEBAIHN0cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewogICAgIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJ
ZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmll
cj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRDsKICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaAppbmRleCA4NjI5MzcwNTlhNDM0Y2ZkMDExMmMyM2EyM2IzZGMwNjBj
Y2NmNTM2Li5jMDQ2N2Q3YzdkYzA4YTZiYjZiYmM5MGZhOTQyNzQ5OGJhNmNiYzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAtNDIsNyArNDIs
NyBAQCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllciB7CiAgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxH
bG9iYWxXaW5kb3dJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEds
b2JhbFdpbmRvd0lkZW50aWZpZXImIGEsIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGIp
CkBAIC02NiwxNCArNjYsMTQgQEAgdm9pZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlm
aWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2luZG93SWRl
bnRpZmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50
aWZpZXI+IHdpbmRvd0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVy
OwogICAgIGlmICghd2luZG93SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXgg
NzMxY2MwNmM5YzE2YWQ1MDI5OWY3OWZiMmEwYjRiODE2ZTFkZDFhYi4uMTRiYWVhMGRmZTQzNTZi
Yjk3OTU4ZWY3MzRkMGJjM2RkZTM2YTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEludGVyc2VjdGlv
bk9ic2VydmVyOjpyb290RGVzdHJveWVkKCkKICAgICBtX3Jvb3QgPSBudWxscHRyOwogfQogCi1P
cHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IEludGVyc2VjdGlvbk9ic2VydmVyOjpu
b3dUaW1lc3RhbXAoKSBjb25zdAorc3RkOjpvcHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29u
ZHM+IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3dUaW1lc3RhbXAoKSBjb25zdAogewogICAgIGlm
ICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAppbmRleCBkYmYzN2ExNTU1YmM4ODQ2OWNm
ZmJhMTFiYWQ5NDkzY2ZjZTVhNmIxLi5mNTA5ZDM1NjUxOGQyMTc0YTkwYzUwMzlkMTE2YjM4MTBj
N2RmY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiAKIHN0cnVjdCBJbnRlcnNlY3Rp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiB7CiAgICAgV2Vha1B0cjxJbnRlcnNlY3Rpb25PYnNlcnZl
cj4gb2JzZXJ2ZXI7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c1RocmVzaG9sZEluZGV4
OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c1RocmVzaG9sZEluZGV4OwogfTsK
IAogc3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSB7CkBAIC02Myw3ICs2Myw3IEBAIHN0
cnVjdCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgewogY2xhc3MgSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcnNlY3Rpb25PYnNlcnZlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlcj4g
ewogcHVibGljOgogICAgIHN0cnVjdCBJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxEb2N1bWVudD4+PiByb290OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8RG9jdW1lbnQ+Pj4gcm9vdDsK
ICAgICAgICAgU3RyaW5nIHJvb3RNYXJnaW47CiAgICAgICAgIFZhcmlhbnQ8ZG91YmxlLCBWZWN0
b3I8ZG91YmxlPj4gdGhyZXNob2xkOwogICAgIH07CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc09ic2VydmF0aW9uVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2
YXRpb25UYXJnZXRzLnNpemUoKTsgfQogICAgIHZvaWQgcm9vdERlc3Ryb3llZCgpOwogCi0gICAg
T3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzPiBub3dUaW1lc3RhbXAoKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gbm93VGltZXN0YW1w
KCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5PiYmKTsKICAgICB2b2lkIG5vdGlmeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAppbmRleCBmNzAzYjJmOWIyMWMxZGM5
MWFmOTYwOTVjYjlkNGQ0Y2I1YmYwNDc4Li5iNzk5NjQyNjg0YzQ3MTk2Mjg2MTQxNDViYzdhODNj
YTNlOWRiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9i
c2VydmVyRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7
CiAgICAgICAgIGRvdWJsZSB0aW1lOwotICAgICAgICBPcHRpb25hbDxET01SZWN0SW5pdD4gcm9v
dEJvdW5kczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxET01SZWN0SW5pdD4gcm9vdEJvdW5kczsK
ICAgICAgICAgRE9NUmVjdEluaXQgYm91bmRpbmdDbGllbnRSZWN0OwogICAgICAgICBET01SZWN0
SW5pdCBpbnRlcnNlY3Rpb25SZWN0OwogICAgICAgICBkb3VibGUgaW50ZXJzZWN0aW9uUmF0aW87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRl
bS5oCmluZGV4IDU1ZWEwMmFjZWNmYzgwZTdlZmQ2MWY1YmJhOWY0MDhiMDVkZTNkNTQuLmFlMmY4
NmM2NTI1ODRkOGE4MWVmZTM4NTljZjJmNzA1NDQ3NGNmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCkBAIC00NCw3ICs0NCw3
IEBAIHN0cnVjdCBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtIHsKICAgICBWZWN0b3I8TWVk
aWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4gY2hpbGRyZW47CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OCwxMCArNTgsMTAgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lZGlhQ29udHJv
bHNDb250ZXh0TWVudUl0ZW0+IE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJ
dGVtPiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0eXBlPiBu
YW1lOyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBu
YW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjNTQ4MzM5MWRlYWNiZTZmNjgzZTI0YjI5
NjgzMDdjOGQ4MGIzZGZlLi45ZGFiZTE1OTZjNDFhNzNlZDBlN2Q1NjU5ZDMyYmJiOWM2YzUyYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBO
YXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VVJM
PiBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJMPiBzaGFy
ZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChkYXRhLnVybC5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE5hdmlnYXRv
cjo6c2hhcmUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlZjxE
ZWZlcnJlZFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VVJMPiB1
cmwgPSBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoZG9jdW1lbnQsIGRhdGEpOworICAgIHN0ZDo6
b3B0aW9uYWw8VVJMPiB1cmwgPSBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoZG9jdW1lbnQsIGRh
dGEpOwogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBk
YXRhLAogICAgICAgICB1cmwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5OWJhMzkyNmM0YWJlODdm
NmE0MGMxZGQyOWY2Y2FhODg1NGM2YzViLi43YTllOWNjYjJiYWRjOTkyYzE2NjU4NjNkMmEyNzU5
NjM0YTIwNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCBWaWV3cG9y
dEFyZ3VtZW50cyBQYWdlOjp2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIG1h
aW5GcmFtZSgpLmRvY3VtZW50KCkgPyBtYWluRnJhbWUoKS5kb2N1bWVudCgpLT52aWV3cG9ydEFy
Z3VtZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsKIH0KIAotdm9pZCBQYWdlOjpzZXRPdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYg
dmlld3BvcnRBcmd1bWVudHMpCit2b2lkIFBhZ2U6OnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHMoY29uc3Qgc3RkOjpvcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4mIHZpZXdwb3J0QXJndW1l
bnRzKQogewogICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50cyA9PSBtX292ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMpCiAgICAgICAgIHJldHVybjsKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFBhZ2U6
OnNob3dBbGxQbHVnaW5zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBP
cHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBh
Z2U6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+ICBQYWdlOjp0YWtl
QW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpAQCAtNzczLDcgKzc3Myw3IEBAIGF1
dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9u
cyBvcHRpb25zLCB1bnNpZ25lZCBsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IFBhZ2U6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9w
dGlvbnMpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVm
ZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRhcmdldC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTkwLDcgKzExOTAsNyBA
QCB2b2lkIFBhZ2U6OnNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKQogICAgIHNldE5lZWRzUmVj
YWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJT
ZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgaWYgKGRpc3BsYXlJRCA9PSBt
X2Rpc3BsYXlJRCAmJiBub21pbmFsRnJhbWVzUGVyU2Vjb25kID09IG1fZGlzcGxheU5vbWluYWxG
cmFtZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTEyOTEsNyArMTI5MSw3IEBAIGJv
b2wgUGFnZTo6aXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSBjb25zdAogICAgIHJldHVybiAhaXNVdGls
aXR5UGFnZSgpICYmIG5vblV0aWxpdHlQYWdlQ291bnQgPT0gMTsKIH0KIAotdm9pZCBQYWdlOjpz
ZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+IGlz
RW5hYmxlZCkKK3ZvaWQgUGFnZTo6c2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVz
dGluZyhzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRW5hYmxlZCkKIHsKICAgICAvLyBSZW1vdmUgVGhy
b3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIHNvIGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZSgp
IGNhbiBkbyBpdHMgd29yay4KICAgICBtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVz
dGluZy5yZW1vdmUoVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlKTsKQEAgLTE4MDgsNyAr
MTgwOCw3IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCkKICAgICB9KTsK
IH0KIAotT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBQYWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdV
cGRhdGVGcmFtZXNQZXJTZWNvbmQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNv
bmQ+IFBhZ2U6OnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChtX3Rocm90dGxpbmdSZWFz
b25zLCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kLCBzZXR0aW5ncygpLnByZWZlclBh
Z2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCgpKTsKIH0KQEAgLTMyMzAsNyArMzIz
MCw3IEBAIGJvb2wgUGFnZTo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdAogI2VuZGlmCiB9CiAK
LXZvaWQgUGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShPcHRpb25hbDxib29sPiB2
YWx1ZU92ZXJyaWRlKQordm9pZCBQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gdmFsdWVPdmVycmlkZSkKIHsKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQogICAgIGlmICh2YWx1ZU92ZXJyaWRlID09IG1fdXNlRGFya0FwcGVhcmFuY2VP
dmVycmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTE3YTFhZDc2OWQ5NGNiMGVjMzUxNjljMWRmMDkw
ZDc2OTU0YTM5Mi4uNjU0ODMzYmJlOTMzMzIxZTkxYmVjYzFlZGM5MmVjYzFmMDVjNGFmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTI1MCw4ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IGRpc2FibGVkQWRhcHRhdGlvbnMoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3Vt
ZW50cygpIGNvbnN0OwogCi0gICAgY29uc3QgT3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+JiBv
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYpOworICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+JiBvdmVycmlkZVZpZXdwb3J0QXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGx1Z2luRGF0
YSYgcGx1Z2luRGF0YSgpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwg
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBzZWFyY2hSYW5nZSwgRmluZE9wdGlvbnMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJp
bmcoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHNlYXJj
aFJhbmdlLCBGaW5kT3B0aW9ucyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb3Vu
dEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBtYXJrQWxsTWF0Y2hlc0ZvclRl
eHQoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGJvb2wgc2hvdWxkSGlnaGxpZ2h0LCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Tm9NYXRjaEFmdGVyVXNlclNlbGVjdGlvbiBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyB0ZXh0IGFm
dGVyIHRoZSB1c2VyIHNlbGVjdGlvbi4KICAgICBzdHJ1Y3QgTWF0Y2hpbmdSYW5nZXMgewogICAg
ICAgICBWZWN0b3I8U2ltcGxlUmFuZ2U+IHJhbmdlczsKLSAgICAgICAgaW50IGluZGV4Rm9yU2Vs
ZWN0aW9uIHsgMCB9OyAvLyBGSVhNRTogQ29uc2lkZXIgT3B0aW9uYWw8dW5zaWduZWQ+IG9yIHVu
c2lnbmVkIGZvciB0aGlzIGluc3RlYWQuCisgICAgICAgIGludCBpbmRleEZvclNlbGVjdGlvbiB7
IDAgfTsgLy8gRklYTUU6IENvbnNpZGVyIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG9yIHVuc2ln
bmVkIGZvciB0aGlzIGluc3RlYWQuCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBO
b01hdGNoQWZ0ZXJVc2VyU2VsZWN0aW9uID0gLTE7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWF0Y2hp
bmdSYW5nZXMgZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhDb3VudCk7CkBAIC00MjIsMTQgKzQyMiwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKGZsb2F0KTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOwot
ICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIHZvaWQgd2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KLSAgICBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7IH0KIAogICAgIC8v
IFRoaXMgY2FuIHJldHVybiBudWxsb3B0IGlmIHRocm90dGxpbmcgcmVhc29ucyByZXN1bHQgaW4g
YSBmcmVxdWVuY3kgbGVzcyB0aGFuIG9uZSwgaW4gd2hpY2ggY2FzZQogICAgIC8vIHByZWZlcnJl
ZFJlbmRlcmluZ1VwZGF0ZUludGVydmFsIHByb3ZpZGVzIHRoZSBmcmVxdWVuY3kuCiAgICAgLy8g
RklYTUU6IEhhdmUgYSBzaW5nbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgVmFyaWFudDw+Lgot
ICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlRnJh
bWVzUGVyU2Vjb25kKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCgpIGNvbnN0OwogICAgIFNl
Y29uZHMgcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwoKSBjb25zdDsKIAogICAgIGZs
b2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9
CkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3VzZUVsZXZhdGVkVXNlckludGVyZmFjZUxl
dmVsOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hh
bmdlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UsIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNl
TGV2ZWwpOwogICAgIGJvb2wgZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1
cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsgfQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2VP
dmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZU92
ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKICAgICBmbG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
QXV0b3NpemluZ1dpZHRoOyB9CkBAIC01MjQsNyArNTI0LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgY29uc3QgT3B0aW9uYWw8QXBw
bGljYXRpb25NYW5pZmVzdD4mIGFwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25zdCB7IHJldHVybiBt
X2FwcGxpY2F0aW9uTWFuaWZlc3Q7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+JiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBs
aWNhdGlvbk1hbmlmZXN0OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NP
T1JESU5BVE9SKQpAQCAtNzg3LDExICs3ODcsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wgZGlzYWJsZWQpIHsgbV9yZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yID0gZGlzYWJsZWQ7IH0KIAotICAgIE9wdGlv
bmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9
Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRsaW5nKSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9CisgICAgdm9pZCBz
ZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IHRocm90dGxpbmcpIHsgbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlID0gdGhyb3R0bGluZzsgfQogCi0gICAgT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+
IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5n
UG9saWN5T3ZlcnJpZGU7IH0KLSAgICB2b2lkIHNldENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUo
T3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGljeSkgeyBtX2NvbXBvc2l0aW5nUG9saWN5
T3ZlcnJpZGUgPSBwb2xpY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW5nUG9saWN5
PiBjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlu
Z1BvbGljeU92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRl
KHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGljeSkgeyBtX2NvbXBvc2l0aW5n
UG9saWN5T3ZlcnJpZGUgPSBwb2xpY3k7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBXZWJH
TFN0YXRlVHJhY2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYkdM
U3RhdGVUcmFja2VyLmdldCgpOyB9CkBAIC04MTIsNyArODEyLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxpbmdS
ZWFzb25zLmNvbnRhaW5zKFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSk7IH0KICAgICBi
b29sIGNhblVwZGF0ZVRocm90dGxpbmdSZWFzb24oVGhyb3R0bGluZ1JlYXNvbiByZWFzb24pIGNv
bnN0IHsgcmV0dXJuICFtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZy5jb250
YWlucyhyZWFzb24pOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQb3dlck1vZGVF
bmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlkZUZvclRlc3Rpbmcoc3RkOjpv
cHRpb25hbDxib29sPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdXRzaWRlVmlld3Bv
cnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoYm9vbCk7CiAKICAgICBPcHRpb25TZXQ8VGhy
b3R0bGluZ1JlYXNvbj4gdGhyb3R0bGluZ1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rocm90
dGxpbmdSZWFzb25zOyB9CkBAIC04NzcsNyArODc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2ln
bmVkIGZpbmRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCwgU2hvdWxkSGlnaGxpZ2h0TWF0Y2hlcywgU2hvdWxkTWFya01hdGNo
ZXMpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERv
Y3VtZW50Jj4+IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiB0YWtlQW55
TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBw
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQoKTsKQEAgLTk1MCw3ICs5NTAs
NyBAQCBwcml2YXRlOgogICAgIFJUQ0NvbnRyb2xsZXIgbV9ydGNDb250cm9sbGVyOwogCiAgICAg
UGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOwog
CiAgICAgaW50IG1fbmVzdGVkUnVuTG9vcENvdW50IHsgMCB9OwogICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX3VubmVzdENhbGxiYWNrOwpAQCAtOTg3LDcgKzk4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFuY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VF
bGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZURhcmtB
cHBlYXJhbmNlIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX3VzZURhcmtBcHBlYXJh
bmNlT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZURhcmtBcHBlYXJhbmNl
T3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IG1fdGV4
dEF1dG9zaXppbmdXaWR0aCB7IDAgfTsKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fdXNlclN0eWxlU2hlZXRQYXRoOwogICAgIG11dGFibGUgU3RyaW5nIG1fdXNl
clN0eWxlU2hlZXQ7CiAgICAgbXV0YWJsZSBib29sIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0IHsg
ZmFsc2UgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFdhbGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0
TW9kaWZpY2F0aW9uVGltZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1f
dXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lOwogCiAgICAgU3RyaW5nIG1fY2FwdGlvblVz
ZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQ7CiAKQEAgLTExMTMsMTUgKzExMTMsMTUgQEAgcHJpdmF0
ZToKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAgIAog
ICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
PiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Q29tcG9z
aXRpbmdQb2xpY3k+IG1fY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGluZ1BvbGljeT4gbV9jb21wb3NpdGlu
Z1BvbGljeU92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTW9uaXRv
cj4gbV9wZXJmb3JtYW5jZU1vbml0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExvd1Bvd2VyTW9k
ZU5vdGlmaWVyPiBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyOwogICAgIE9wdGlvblNldDxUaHJvdHRs
aW5nUmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zOwogICAgIE9wdGlvblNldDxUaHJvdHRsaW5n
UmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZzsKIAotICAgIE9w
dGlvbmFsPE5hdmlnYXRpb24+IG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGU7CisgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW9uPiBtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTG9nZ2luZz4gbV9wZXJmb3JtYW5jZUxvZ2dp
bmc7CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQpAQCAtMTE0NCwxMCArMTE0NCwx
MCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0
OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4gbV9vdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVu
dHM+IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXI+IG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjsK
QEAgLTExNTksNyArMTE1OSw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8VXNlckNvbnRlbnRV
UkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBWZWN0b3I8VXNlclN0eWxl
U2hlZXQ+IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbjsKLSAgICBPcHRpb25hbDxI
YXNoU2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBzdGQ6Om9wdGlvbmFs
PEhhc2hTZXQ8U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rh
a2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50
aWFsU3RvcmFnZSB7IHRydWUgfTsKQEAgLTExNzAsNyArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAg
TW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CiAKICAgICBDb2xv
ciBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwotICAgIE9wdGlvbmFsPENvbG9y
PiBtX3NhbXBsZWRQYWdlVG9wQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9zYW1w
bGVkUGFnZVRvcENvbG9yOwogCiAgICAgY29uc3QgYm9vbCBtX2h0dHBzVXBncmFkZUVuYWJsZWQg
eyB0cnVlIH07CiAgICAgbXV0YWJsZSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgbV9tZWRp
YVNlc3Npb25Hcm91cElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1w
bGVyLmNwcAppbmRleCAyMDc3MGY3OTM5NDkyODI3NzkwMmNhYmNmMTJjZWNhZmU0NzViOTgxLi43
MjBhNzIzNTM2NjAxNjY0Nzc0Y2FhMTk3ZWUyY2ExZmUxNmUzMzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgYm9v
bCBpc1ZhbGlkU2FtcGxlTG9jYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBJbnRQb2lu
dCYgbG9jYXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMYWI8
ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRp
b24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVu
dCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGlu
dG8gcGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQogCkBAIC0xNTUs
NyArMTU1LDcgQEAgc3RhdGljIExhYjxmbG9hdD4gYXZlcmFnZUNvbG9yKExhYjxmbG9hdD4gY29s
b3JzW10sIHNpemVfdCBjb3VudCkKICAgICB9OwogfQogCi1PcHRpb25hbDxDb2xvcj4gUGFnZUNv
bG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2UpCitzdGQ6Om9wdGlvbmFsPENvbG9yPiBQ
YWdlQ29sb3JTYW1wbGVyOjpzYW1wbGVUb3AoUGFnZSYgcGFnZSkKIHsKICAgICAvLyBJZiBgc3Rk
OjpudWxsb3B0YCBpcyByZXR1cm5lZCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBubyBzYW1wbGVzIHdl
cmUgdGFrZW4gKGkuZS4gdGhlIGBQYWdlYCBpcyBub3QgcmVhZHkgeWV0KS4KICAgICAvLyBJZiBh
biBpbnZhbGlkIGBDb2xvcmAgaXMgcmV0dXJuZWQgdGhlbiB0aGF0IG1lYW5zIHRoYXQgc2FtcGxl
cyBXZXJlIHRha2VuIGJ1dCB0aGV5IHdlcmUgdG9vIGRpZmZlcmVudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29sb3JTYW1wbGVyLmgKaW5kZXggYTlmZDkxNjgyMGI4ZTQ4ZGQ3ZTZkZDBmNmQwZDhl
MzRkY2QxYTA2OS4uNWUxOGVhNDY3YTAyMWRiMTgwYjljNWYzYzc2NDJlNmY5NWE3MTU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgUGFnZTsKIAogY2xhc3MgUGFnZUNvbG9yU2FtcGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPENvbG9yPiBzYW1wbGVUb3AoUGFnZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBzYW1wbGVUb3AoUGFnZSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQxZDUzZjExZjkz
YmZhMjMwNjEyNGViOGUzNzRkMGIxMTExZGUzNTQuLmYxNzVkMWNkMWJjZDdhMzRhODIyZjc3MzU5
MWQ4MWE0YTAyMDY0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgK
QEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGljYXRp
b25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IGFwcGxp
Y2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAogICAgIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRl
cj4gbGliV2ViUlRDUHJvdmlkZXI7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUgU2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fk
c1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CiAgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIGJvb2wgaHR0cHNVcGdyYWRlRW5hYmxl
ZCB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5k
ZXggM2MyYWM4M2ZlZmYzMjg0Y2NiMjZmZmNjMjdkZDE2ZTlhNDBkMTMwNS4uMWMxMzAyNjQ3NDky
OWU1NjRmMGZmMGI5NmViNGIyNzY5NGM5NDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xp
ZW50OjpyZWNvcmRFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UmVmPAogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gc25hcHNob3RDYW52YXMo
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNu
YXBzaG90Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0KQogewogI2lmIEVOQUJMRShXRUJH
TCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY2FudmFzUmVuZGVyaW5n
Q29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJk
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaApp
bmRleCA0ZWI0YmQ2MmEwYTM2OTVjNjZjNTUzMDExZTJhMTA2ZDFkNzE4ZjI1Li4wN2ZmZGE3ODcy
MmVjMGMxNmI2NzAwNjkyZjVkMGU1YjUxNGQxOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUGFnZVBhc3RlYm9hcmRDb250ZXh0IGZpbmFsIDogcHVibGljIFBhc3RlYm9h
cmRDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQ
YWdlUGFzdGVib2FyZENvbnRleHQoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0g
c3RkOjpudWxsb3B0KQorICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQYXN0ZWJv
YXJkQ29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShwYWdlSUQpKQogICAgIHsK
QEAgLTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiAKICAgICB+UGFnZVBhc3RlYm9hcmRDb250ZXh0
KCkgeyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBj
cmVhdGUoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZShzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92
ZShwYWdlSUQpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNQ
YWdlUGFzdGVib2FyZENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
IHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA1MGQ1ZGExODNi
YTM0YTQyMGE0MWU5Mjc1ZWEyNDViYTE5ZTg0MTBmLi5iNzRjNzAzNTc1YzQ3YmYwM2VhNTA4MTEz
ZWI4MmQ4Y2JjMDQ0MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMzE3
LDcgKzMxNyw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRp
bWVyRmlyZWQoKQogICAgIG1fd2FpdGluZ0ZvckJhY2t1cEJ1ZmZlclRvQmVQcm9jZXNzZWQgPSBm
YWxzZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IFBlcmZvcm1hbmNl
OjptYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBt
YXJrTmFtZSwgT3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykK
K0V4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBQZXJmb3JtYW5jZTo6bWFyayhKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIHN0
ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykKIHsKICAg
ICBpZiAoIW1fdXNlclRpbWluZykKICAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxQ
ZXJmb3JtYW5jZVVzZXJUaW1pbmc+KCp0aGlzKTsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiAgICAgbV91c2Vy
VGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZv
cm1hbmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNlOjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgT3B0aW9uYWw8U3RhcnRP
ck1lYXN1cmVPcHRpb25zPiYmIHN0YXJ0T3JNZWFzdXJlT3B0aW9ucywgY29uc3QgU3RyaW5nJiBl
bmRNYXJrKQorRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNl
OjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYgc3Rh
cnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFt
X3VzZXJUaW1pbmcpCiAgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8UGVyZm9ybWFu
Y2VVc2VyVGltaW5nPigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggNWU0
Njg2NGJmZDA3NzExNDM0OThmZWNhNGU1NTA5NTU2MzM4NjM2Yi4uZDU5ODkzNzRiNzlhMDA5YTA0
NGU3MWY1YzUwZDUzNWUwZjA4YTQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAt
ODgsMTEgKzg4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUodW5zaWduZWQpOwogCi0gICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IG1hcmsoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlv
bnM+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBtYXJrKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1hcmtOYW1lLCBzdGQ6Om9wdGlvbmFsPFBl
cmZvcm1hbmNlTWFya09wdGlvbnM+JiYpOwogICAgIHZvaWQgY2xlYXJNYXJrcyhjb25zdCBTdHJp
bmcmIG1hcmtOYW1lKTsKIAogICAgIHVzaW5nIFN0YXJ0T3JNZWFzdXJlT3B0aW9ucyA9IFZhcmlh
bnQ8U3RyaW5nLCBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zPjsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gbWVhc3VyZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29u
c3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgT3B0aW9uYWw8U3RhcnRPck1lYXN1cmVPcHRpb25zPiYm
LCBjb25zdCBTdHJpbmcmIGVuZE1hcmspOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5j
ZU1lYXN1cmU+PiBtZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1l
YXN1cmVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0YXJ0T3JNZWFzdXJlT3B0aW9ucz4mJiwgY29uc3Qg
U3RyaW5nJiBlbmRNYXJrKTsKICAgICB2b2lkIGNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBt
ZWFzdXJlTmFtZSk7CiAKICAgICB2b2lkIGFkZE5hdmlnYXRpb25UaW1pbmcoRG9jdW1lbnRMb2Fk
ZXImLCBEb2N1bWVudCYsIENhY2hlZFJlc291cmNlJiwgY29uc3QgTG9hZFRpbWluZyYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRy
eS5jcHAKaW5kZXggZGU3ODY3NmRiODlhODY0MzhkYzYzNjgyMjdlYjc5YWY2MmJkZTNiMy4uZDE4
MmQ4NWMxNTAyNWQ1YTMyYWQ4MDUzMGJhOTM2YTg1NzEyNGJlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlRW50cnkuY3BwCkBAIC00NywyMiArNDcsMjIgQEAgUGVyZm9ybWFuY2VF
bnRyeTo6UGVyZm9ybWFuY2VFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBzdGFydFRp
bWUsIGRvdWJsZQogCiBQZXJmb3JtYW5jZUVudHJ5Ojp+UGVyZm9ybWFuY2VFbnRyeSgpID0gZGVm
YXVsdDsKIAotT3B0aW9uYWw8UGVyZm9ybWFuY2VFbnRyeTo6VHlwZT4gUGVyZm9ybWFuY2VFbnRy
eTo6cGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUpCitzdGQ6Om9w
dGlvbmFsPFBlcmZvcm1hbmNlRW50cnk6OlR5cGU+IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50
cnlUeXBlU3RyaW5nKGNvbnN0IFN0cmluZyYgZW50cnlUeXBlKQogewogICAgIGlmIChlbnRyeVR5
cGUgPT0gIm5hdmlnYXRpb24iKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8VHlwZT4oVHlwZTo6
TmF2aWdhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFR5cGU+KFR5cGU6Ok5h
dmlnYXRpb24pOwogCiAgICAgaWYgKGVudHJ5VHlwZSA9PSAibWFyayIpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxUeXBlPihUeXBlOjpNYXJrKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8VHlwZT4oVHlwZTo6TWFyayk7CiAgICAgaWYgKGVudHJ5VHlwZSA9PSAibWVhc3VyZSIpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpNZWFzdXJlKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8VHlwZT4oVHlwZTo6TWVhc3VyZSk7CiAKICAgICBpZiAoZW50cnlU
eXBlID09ICJyZXNvdXJjZSIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpS
ZXNvdXJjZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFR5cGU+KFR5cGU6OlJlc291
cmNlKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnBhaW50VGltaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgPT0gInBhaW50
IikKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpQYWludCk7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxUeXBlPihUeXBlOjpQYWludCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVu
dHJ5LmgKaW5kZXggM2RmNWU0ZWZiYWYzMjZjNTcxZjVlNmU2NWUzNTZjMmQ0MzJmZjBmMC4uZjky
YzJmMjA0MDY3MzQ2NzdhY2NiZGJlYmYzOGJhNjcyM2U0MTNhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZUVudHJ5LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEFT
Q0lJTGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
VHlwZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHBhcnNlRW50cnlUeXBlU3RyaW5nKGNvbnN0IFN0
cmluZyYgZW50cnlUeXBlKTsKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0VGltZUNvbXBhcmVMZXNz
VGhhbihjb25zdCBSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4mIGEsIGNvbnN0IFJlZlB0cjxQZXJm
b3JtYW5jZUVudHJ5PiYgYikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TG9nZ2luZy5jcHAKaW5kZXggMWQ1ZWNlYmE1N2NlNGUyNmE0M2Y0MGUwYmNlNzZlM2JmYjkwNDdh
Ny4uYWNhODc1MDUwZmMyMTMxODcyMTFiYmQ2MjU4ZDBjOTczMjBjZDRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZv
aWQgUGVyZm9ybWFuY2VMb2dnaW5nOjpkaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQb2ludE9mSW50
ZXJlc3QgcG9pKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBQZXJmb3JtYW5jZUxvZ2dp
bmc6OmdldFBsYXRmb3JtTWVtb3J5VXNhZ2VTdGF0aXN0aWNzKEhhc2hNYXA8Y29uc3QgY2hhcios
IHNpemVfdD4mKSB7IH0KLU9wdGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBo
eXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CitzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VMb2dnaW5nLmgKaW5kZXggNmE4NWMxM2FmOGQ5MTg5MTZiMjFlYjVmNTE1MWI3MDY5ZDI1
YjhiMS4uMzJiNGMwZTlhMWUxMjE4MjlkYWI2ZmJjZWMwODljYWJkZDY5OTkwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFy
Kj4gamF2YVNjcmlwdE9iamVjdENvdW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoTWFwPGNvbnN0IGNoYXIqLCBzaXplX3Q+IG1lbW9yeVVzYWdlU3RhdGlzdGljcyhTaG91bGRJ
bmNsdWRlRXhwZW5zaXZlQ29tcHV0YXRpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
T3B0aW9uYWw8dWludDY0X3Q+IHBoeXNpY2FsRm9vdHByaW50KCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBoeXNpY2FsRm9vdHByaW50KCk7CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0UGxhdGZvcm1NZW1vcnlVc2FnZVN0YXRpc3Rp
Y3MoSGFzaE1hcDxjb25zdCBjaGFyKiwgc2l6ZV90PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZU1hcmsuY3BwCmluZGV4IGY0MGQ0N2RiMWVhMzIwZDI0YzI4ZTg4ZDIyZjI5ODgxNDI0
NTc4ZjkuLjMwMjIwMmM3YWE0ZjM0YWRiYTM4YjQ2YjU5ZWJkZTA2YzQyNWQwNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGlj
IGRvdWJsZSBwZXJmb3JtYW5jZU5vdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UGVyZm9y
bWFuY2VNYXJrPj4gUGVyZm9ybWFuY2VNYXJrOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+
JiYgbWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9y
bWFuY2VNYXJrOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9u
cykKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIFBl
cmZvcm1hbmNlVXNlclRpbWluZzo6aXNSZXN0cmljdGVkTWFya05hbWUobmFtZSkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VNYXJrLmgKaW5kZXggYjc1MTRmMDE1MzU4MDlkYWI1M2NjYWMwNjRjNTJiMGYxOGViNmM2
Yi4uODdhNTU4NWQxYmUzNTdhY2NhNTRjMTdmNzBlNDI4MWEzMjMwMWE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFBlcmZvcm1hbmNlTWFyayBmaW5hbCA6IHB1YmxpYyBQ
ZXJmb3JtYW5jZUVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFBl
cmZvcm1hbmNlTWFyaz4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJr
T3B0aW9ucz4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+
PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4m
Jik7CiAKICAgICBKU0M6OkpTVmFsdWUgZGV0YWlsKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmtPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFya09wdGlvbnMuaAppbmRleCBkYmQx
ODVlYzJmMTFmOWFmZTg4MjY1YjIwNDVjYWM1YTMxYmZjYWZjLi44NGU1M2Y5MzVhMmNiZTUwNDE3
YTYxNDRkNzNhMGMyNjMwZmFmZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTWFya09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTWFya09wdGlvbnMuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBQZXJmb3JtYW5jZU1hcmtPcHRpb25zIHsKICAgICBKU0M6OkpTVmFsdWUgZGV0YWls
OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gc3RhcnRUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzdGFydFRpbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VNZWFzdXJlT3B0aW9ucy5oCmluZGV4IGM5MzQ3M2EwMDNmN2QwZTZmOGEzZjY1MWZhZDZk
NjMwMTQyNzA3N2YuLmIxZmQ4NjM5Zjc2MjQzNmNlMDFlNDhmZmJjZTlkZWM1Zjc5MmVkN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oCkBA
IC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBlcmZvcm1hbmNl
TWVhc3VyZU9wdGlvbnMgewogICAgIEpTQzo6SlNWYWx1ZSBkZXRhaWw7Ci0gICAgT3B0aW9uYWw8
VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IHN0YXJ0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZHVy
YXRpb247Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IGVuZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBzdGFydDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gZHVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFN0cmlu
ZywgZG91YmxlPj4gZW5kOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1vbml0b3IuY3BwCmluZGV4IDBhNmQyMDM5OWE3NjIyZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZk
NjEuLjBmYzZkNmRiZWY4MjRjODRlZDUzZmVmODY2ZDZmNmEyM2ExYjNkNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2
b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQogICAgICAg
ICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChwb3N0TG9hZENQ
VVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
T3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOworICAgIHN0ZDo6b3B0
aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwogICAgIGlmICghY3B1VGlt
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQZXJmb3JtYW5j
ZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZE1lbW9yeVVzYWdlKCkKICAgICBpZiAoIW1fcGFnZS5p
c09ubHlOb25VdGlsaXR5UGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHBy
aW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3Jt
YW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CiAgICAgaWYgKCFtZW1vcnlVc2FnZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1v
bml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ01lbW9yeVVzYWdlKCkKICAgICBpZiAoIW1f
cGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2Fs
Rm9vdHByaW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQ
ZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CiAgICAgaWYgKCFtZW1vcnlV
c2FnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQZXJmb3Jt
YW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKCkKICAgICAgICAg
ICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChiYWNrZ3Jv
dW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBPcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gQ1BVVGltZTo6Z2V0KCk7CisgICAgc3Rk
OjpvcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gQ1BVVGltZTo6Z2V0KCk7CiAgICAgaWYgKCFj
cHVUaW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFBlcmZv
cm1hbmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3Rh
dGVGb3JDUFVTYW1wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Q1BV
VGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGlt
ZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwogICAgIGlmICghY3B1VGltZSkgewogICAgICAg
ICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAppbmRleCA4NTVmZTZl
NzUzNzA2ZDc3MzUyM2I3ODJhZGVlMjY5MzJjYzI3N2RjLi40NDIyMTVmZTM0ZjVjNzI4NWQ0ODA0
Yjg0NjM1MWU3ZmRmZGEyZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25p
dG9yLmgKQEAgLTU2LDExICs1NiwxMSBAQCBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKIAog
ICAgIFRpbWVyIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcjsKLSAgICBPcHRpb25hbDxDUFVU
aW1lPiBtX3Bvc3RMb2FkQ1BVVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9z
dExvYWRDUFVUaW1lOwogICAgIFRpbWVyIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVy
OwotICAgIE9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lOworICAg
IHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWU7CiAgICAg
VGltZXIgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lcjsKLSAgICBPcHRpb25hbDxDUFVU
aW1lPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGlt
ZT4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZTsKIAogICAgIFRpbWVyIG1fcG9zdFBhZ2VMb2Fk
TWVtb3J5VXNhZ2VUaW1lcjsKICAgICBUaW1lciBtX3Bvc3RCYWNrZ3JvdW5kaW5nTWVtb3J5VXNh
Z2VUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uVGltaW5nLmNwcAppbmRleCA5ODFiMzViZTZjNDVhZGNmODVjNjkzYTE5YzNhYTJkODAwODkz
Mzg2Li42OTU1OTVmZmJmMjg5MmNlZmEzNjY4NTVjMmE1NzlmZDY3NDM3ZGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6UGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9yaWdpCiAKIFBlcmZvcm1hbmNlTmF2
aWdhdGlvblRpbWluZzo6flBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZygpID0gZGVmYXVsdDsK
IAotZG91YmxlIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6bWlsbGlzZWNvbmRzU2luY2VP
cmlnaW4oTW9ub3RvbmljVGltZSB0aW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiB0aW1lT3Jp
Z2luKSBjb25zdAorZG91YmxlIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6bWlsbGlzZWNv
bmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSB0aW1lLCBzdGQ6Om9wdGlvbmFsPE1vbm90b25p
Y1RpbWU+IHRpbWVPcmlnaW4pIGNvbnN0CiB7CiAgICAgaWYgKCF0aW1lKQogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRp
bWluZy5oCmluZGV4IGIwZTYyMjY1MzgxYmZjM2JlMjQ5MTVmNTQzNDIyMWZhYmIxNWNiYTcuLmVk
MmQxM2FiNzc4NGYwNTE1YmVlMzJlZmU0NjhmZWI0OGJhYjk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaApAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZyhN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIENhY2hlZFJlc291cmNlJiwgY29uc3QgTG9hZFRpbWlu
ZyYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIGNvbnN0IERvY3VtZW50VGltaW5nJiwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mLCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSk7CiAKLSAgICBkb3Vi
bGUgbWlsbGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSwgT3B0aW9uYWw8TW9ub3Rv
bmljVGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgZG91YmxlIG1p
bGxpc2Vjb25kc1NpbmNlT3JpZ2luKE1vbm90b25pY1RpbWUsIHN0ZDo6b3B0aW9uYWw8TW9ub3Rv
bmljVGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBzYW1l
T3JpZ2luQ2hlY2tGYWlscygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVu
dFRpbWluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmgKaW5kZXgg
NDE5MzA1ZDQ3YzIxNTI3ZDhlMWNiZWI1N2JjZTVjMGQ4MmMyYTdkOC4uNmJmYWJlMjUxZWI4OTlm
ZjEzZDlkNzE5NWJlZWJhN2ViYTQ4NDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU9ic2VydmVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQZXJm
b3JtYW5jZU9ic2VydmVyPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgewotICAgICAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZW50cnlUeXBlczsKLSAgICAgICAgT3B0aW9uYWw8U3Ry
aW5nPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbnRyeVR5
cGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAgICAgYm9vbCBi
dWZmZXJlZDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU9ic2VydmVyRW50cnlMaXN0LmNwcAppbmRleCBkZDdmYzk3Y2EzOGY4M2UyNDU1ZTkyNzA4
MjM1MTUwMDNlOWE5Y2U5Li5hOWJkOGY4Y2NkZGEyYzc3NDlhMjg4ZWIzY2ExNDIyY2I0YjEwMDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRy
eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlckVu
dHJ5TGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVu
dHJ5Pj4gUGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdDo6Z2V0RW50cmllc0J5TmFtZSgKIAog
ICAgIC8vIFBlcmZvcm1hbmNlT2JzZXJ2ZXJzIGNhbiBvbmx5IGJlIHJlZ2lzdGVyZWQgZm9yIHZh
bGlkIHR5cGVzLgogICAgIC8vIFNvIGlmIHRoZSBpbmNvbWluZyBlbnRyeVR5cGUgaXMgYW4gdW5r
bm93biB0eXBlLCB0aGVyZSB3aWxsIGJlIG5vIG1hdGNoZXMuCi0gICAgT3B0aW9uYWw8UGVyZm9y
bWFuY2VFbnRyeTo6VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBlcmZvcm1hbmNlRW50
cnk6OlR5cGU+IHR5cGU7CiAgICAgaWYgKCFlbnRyeVR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAg
dHlwZSA9IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGVudHJ5VHlwZSk7
CiAgICAgICAgIGlmICghdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VV
c2VyVGltaW5nLmNwcAppbmRleCA0MDE1Mjc3ZTA3YzQzZDlmOTg5YTE3ZWFiYWUxNTIwYjllYzhh
MThlLi5hMzY4ODcyMzc0YzEyZjdjYTMwZTFiZjljMjkxMDM1OThlM2EwOTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgc3RhdGljIHZvaWQgYWRkUGVyZm9ybWFuY2VFbnRyeShQZXJmb3JtYW5jZUVudHJ5TWFw
JiBtYXAsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGUKICAgICBwZXJmb3JtYW5jZUVudHJ5TGlzdC5h
cHBlbmQoJmVudHJ5KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IFBl
cmZvcm1hbmNlVXNlclRpbWluZzo6bWFyayhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlv
bnM+JiYgbWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVy
Zm9ybWFuY2VVc2VyVGltaW5nOjptYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpvcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtP
cHRpb25zPiYmIG1hcmtPcHRpb25zKQogewogICAgIGF1dG8gbWFyayA9IFBlcmZvcm1hbmNlTWFy
azo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgKm1fcGVyZm9ybWFuY2Uuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtYXJrTmFtZSwgV1RGTW92ZShtYXJrT3B0aW9ucykpOwogICAgIGlmIChtYXJrLmhh
c0V4Y2VwdGlvbigpKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBib29sIGlzTm9uRW1wdHlE
aWN0aW9uYXJ5KGNvbnN0IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMmIG1lYXN1cmVPcHRpb25z
CiAgICAgcmV0dXJuICFtZWFzdXJlT3B0aW9ucy5kZXRhaWwuaXNVbmRlZmluZWQoKSB8fCBtZWFz
dXJlT3B0aW9ucy5zdGFydCB8fCBtZWFzdXJlT3B0aW9ucy5kdXJhdGlvbiB8fCBtZWFzdXJlT3B0
aW9ucy5lbmQ7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1lYXN1cmU+PiBQZXJm
b3JtYW5jZVVzZXJUaW1pbmc6Om1lYXN1cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBPcHRpb25hbDxTdGFydE9yTWVhc3VyZU9w
dGlvbnM+JiYgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCitF
eGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gUGVyZm9ybWFuY2VVc2VyVGltaW5n
OjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYgc3Rh
cnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKHN0
YXJ0T3JNZWFzdXJlT3B0aW9ucykgewogICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqc3Rh
cnRPck1lYXN1cmVPcHRpb25zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVVzZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2Vy
VGltaW5nLmgKaW5kZXggY2Q4MDI4Nzc2NjBiMDJlZjUyOThjMzNjMDQ0MWNhOWI2NTg5OWYyMC4u
NWJmMmVjZWFmZTdhNzllNzU1MmQ1ZWVhZjE2YTFiMjY3NzMwN2VmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5oCkBAIC00NiwxMSArNDYsMTEgQEAgY2xh
c3MgUGVyZm9ybWFuY2VVc2VyVGltaW5nIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQZXJmb3Jt
YW5jZVVzZXJUaW1pbmcoUGVyZm9ybWFuY2UmKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJm
b3JtYW5jZU1hcms+PiBtYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1h
cmtOYW1lLCBPcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRpb25zPiYmKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gbWFyayhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29u
c3QgU3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpvcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRpb25z
PiYmKTsKICAgICB2b2lkIGNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSk7CiAKICAg
ICB1c2luZyBTdGFydE9yTWVhc3VyZU9wdGlvbnMgPSBWYXJpYW50PFN0cmluZywgUGVyZm9ybWFu
Y2VNZWFzdXJlT3B0aW9ucz47Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWVhc3Vy
ZT4+IG1lYXN1cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbWVhc3VyZU5h
bWUsIE9wdGlvbmFsPFN0YXJ0T3JNZWFzdXJlT3B0aW9ucz4mJiwgY29uc3QgU3RyaW5nJiBlbmRN
YXJrKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gbWVhc3VyZShK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRp
b25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYsIGNvbnN0IFN0cmluZyYgZW5kTWFyayk7CiAg
ICAgdm9pZCBjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj4gZ2V0TWFya3MoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDE2YmNmMDQzOTBhMTcwZjNk
ZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAuLjRhZTQ1YjE3NmQxOTNmOTY3NWQ0YTI3OWY4NjU5ZDc1
MDY0YzFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAt
MzYsNyArMzYsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsK
ICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBmb250Q2FjaGU7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFByZXdhcm1JbmZvcm1hdGlvbj4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDYsOSArNDYsOSBAQCB2b2lkIFByZXdhcm1JbmZv
cm1hdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IFByZXdhcm1JbmZvcm1h
dGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFByZXdhcm1JbmZv
cm1hdGlvbj4gUHJld2FybUluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbj4gZm9udENhY2hlUHJl
d2FybUluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhY2hlOjpQcmV3YXJtSW5m
b3JtYXRpb24+IGZvbnRDYWNoZVByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBkZWNvZGVyID4+IGZv
bnRDYWNoZVByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBpZiAoIWZvbnRDYWNoZVByZXdhcm1JbmZv
cm1hdGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCBl
NzBiMmJmZmZiYmZlMTljZmI4MTA1MDFhYjMyZmQ3MzBjZDJhOTFhLi45NmQyMGQyZjJmMmYwOGEy
ZGIwNmMwNWQzMGZhMzM4MjkzZTJmYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC00NzYs
NyArNDc2LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZERpc3BhdGNoZWRTaW11bGF0ZWRNb3VzZUV2
ZW50c0Fzc3VtZURlZmF1bHRQcmV2ZW50ZWQoRXZlbnRUYXIKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLU9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJrczo6c2ltdWxhdGVkTW91c2VF
dmVudFR5cGVGb3JUYXJnZXQoRXZlbnRUYXJnZXQqIHRhcmdldCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZv
clRhcmdldChFdmVudFRhcmdldCogdGFyZ2V0KSBjb25zdAogewogICAgIGlmICghc2hvdWxkRGlz
cGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyh0YXJnZXQpKQogICAgICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmgKaW5kZXggZDgxZDk4YWU2OGM2N2ZjM2FiZGEyNTcxYWYzZGY5ZDkxODAy
ZjNiNS4uMzUyYzJhZmYyMTk2OWEzNTQ5ODQ1ZjQ1NzkzYWU5YTBmOTI2N2EyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1F1aXJrcy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyhFdmVudFRh
cmdldCopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hlZFNpbXVsYXRlZE1vdXNlRXZl
bnRzQXNzdW1lRGVmYXVsdFByZXZlbnRlZChFdmVudFRhcmdldCopIGNvbnN0OwotICAgIE9wdGlv
bmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IHNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0
KEV2ZW50VGFyZ2V0KikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxh
YmxlPiBzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldChFdmVudFRhcmdldCopIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkTWFrZVRvdWNoRXZlbnROb25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2
ZW50VGFyZ2V0KikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRQcmV2ZW50UG9pbnRlck1lZGlhUXVl
cnlGcm9tRXZhbHVhdGluZ1RvQ29hcnNlKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRQcmV2ZW50
RGlzcGF0Y2hPZlRvdWNoRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEV2ZW50VGFyZ2V0KikgY29u
c3Q7CkBAIC0xNjYsMTYgKzE2NiwxNiBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5F
bmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyazsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+
IG1fbmVlZHNGdWxsV2lkdGhIZWlnaHRGdWxsc2NyZWVuU3R5bGVRdWlyazsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRR
dWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0Z1bGxXaWR0aEhl
aWdodEZ1bGxzY3JlZW5TdHlsZVF1aXJrOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
bXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzR01haWxPdmVyZmxvd1Njcm9sbFF1aXJrOwot
ICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1
aXJrOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc1ByZWxvYWRBdXRvUXVpcms7
Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzRnVsbHNjcmVlbkRpc3BsYXlOb25l
UXVpcms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3Nob3VsZEF2b2lkUGFzdGluZ0lt
YWdlc0FzV2ViQ29udGVudDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVk
c0dNYWlsT3ZlcmZsb3dTY3JvbGxRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9uZWVkc1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1aXJrOworICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxib29sPiBtX25lZWRzUHJlbG9hZEF1dG9RdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0Z1bGxzY3JlZW5EaXNwbGF5Tm9uZVF1aXJrOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3Nob3VsZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2Vi
Q29udGVudDsKICNlbmRpZgotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNh
YmxlRWxlbWVudEZ1bGxzY3JlZW5RdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9zaG91bGREaXNhYmxlRWxlbWVudEZ1bGxzY3JlZW5RdWlyazsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cyA6IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duLApAQCAtMTg2LDIwICsxODYsMjAgQEAg
cHJpdmF0ZToKICAgICBtdXRhYmxlIFNob3VsZERpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudHMg
bV9zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzUXVpcmsgeyBTaG91bGREaXNwYXRj
aFNpbXVsYXRlZE1vdXNlRXZlbnRzOjpVbmtub3duIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkU3ludGhl
c2l6ZVRvdWNoRXZlbnRzUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
c2hvdWxkU3ludGhlc2l6ZVRvdWNoRXZlbnRzUXVpcms7CiAjZW5kaWYKLSAgICBtdXRhYmxlIE9w
dGlvbmFsPGJvb2w+IG1fbmVlZHNDYW5QbGF5QWZ0ZXJTZWVrZWRRdWlyazsKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmc7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzVlA5RnVsbFJhbmdlRmxhZ1F1aXJrOwotICAg
IG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0hEUlBpeGVsRGVwdGhRdWlyazsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFja0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVp
cms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3JlcXVpcmVzVXNlckdlc3R1cmVUb1Bh
dXNlSW5QaWN0dXJlSW5QaWN0dXJlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9yZXF1
aXJlc1VzZXJHZXN0dXJlVG9Mb2FkSW5QaWN0dXJlSW5QaWN0dXJlOworICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxib29sPiBtX25lZWRzQ2FuUGxheUFmdGVyU2Vla2VkUXVpcms7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJp
bmc7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNWUDlGdWxsUmFuZ2VG
bGFnUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNIRFJQaXhl
bERlcHRoUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFj
a0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fcmVxdWlyZXNVc2VyR2VzdHVyZVRvUGF1c2VJblBpY3R1cmVJblBpY3R1cmU7CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZElu
UGljdHVyZUluUGljdHVyZTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG11dGFibGUg
T3B0aW9uYWw8Ym9vbD4gbV9zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyazsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zaG91bGRFbmFibGVMZWdhY3lHZXRVc2Vy
TWVkaWFRdWlyazsKICNlbmRpZgotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9ibG9ja3NS
ZXR1cm5Ub0Z1bGxzY3JlZW5Gcm9tUGljdHVyZUluUGljdHVyZVF1aXJrOwotICAgIG11dGFibGUg
T3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRW5kRnVsbHNjcmVlbkV2ZW50V2hlbkVudGVy
aW5nUGljdHVyZUluUGljdHVyZUZyb21GdWxsc2NyZWVuUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPGJvb2w+IG1fYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBp
Y3R1cmVRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNh
YmxlRW5kRnVsbHNjcmVlbkV2ZW50V2hlbkVudGVyaW5nUGljdHVyZUluUGljdHVyZUZyb21GdWxs
c2NyZWVuUXVpcms7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDczNmQzZDE1YTkyMTlkMmQw
YTdlYzE4NDUxODVkOTM5NTAzZjcwNjMuLjA3YmNjZmM2NTU5MWFmNDE5MWQxNDBiNjM3MTFkY2Fh
ZjRmZGQ1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgYm9vbCBtX21vdXNlRXZlbnRzU2ltdWxhdGlvbkVuYWJsZWQgeyBmYWxzZSB9Owot
ICAgIE9wdGlvbmFsPGJvb2w+IG1fdG91Y2hFdmVudHNFbmFibGVkOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEhBVkUoTlNVUkxT
RVNTSU9OX1dFQlNPQ0tFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xs
SW50b1ZpZXdPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbEludG9WaWV3T3B0
aW9ucy5oCmluZGV4IGYyNzVmMmZiZDFhM2ZjODAxZWJjMGFlODZjZGE5MTk5Njg5ZjQ1MDUuLmVi
YmIwMTNlM2M0MjYyMTI1Y2Q1ZjRlYTcyOTQwODEzOTE3ZmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TY3JvbGxJbnRvVmlld09wdGlvbnMuaApAQCAtMjUsOCArMjUsOCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Nyb2xsSW50b1ZpZXdPcHRpb25zIDogU2Nyb2xsT3B0
aW9ucyB7Ci0gICAgT3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBibG9ja1Bvc2l0aW9u
IHsgU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydCB9OwotICAgIE9wdGlvbmFsPFNjcm9sbExv
Z2ljYWxQb3NpdGlvbj4gaW5saW5lUG9zaXRpb24geyBTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5l
YXJlc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gYmxvY2tQ
b3NpdGlvbiB7IFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQgfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gaW5saW5lUG9zaXRpb24geyBTY3JvbGxMb2dpY2Fs
UG9zaXRpb246Ok5lYXJlc3QgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKaW5kZXggZTE4NjdjNjAxNTBhNTU0MTFjYzBmMWE3YTA0
OWUyYmMxZGMxM2Q5Ny4uNTYzZTFlNjg1NjMxMWZkNGRhMjA5OTIwZjljODJhODk5NWMxMzQ4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNjcm9sbE9wdGlvbnMgewotICAgIE9wdGlvbmFsPFNj
cm9sbEJlaGF2aW9yPiBiZWhhdmlvciB7IFNjcm9sbEJlaGF2aW9yOjpBdXRvIH07CisgICAgc3Rk
OjpvcHRpb25hbDxTY3JvbGxCZWhhdmlvcj4gYmVoYXZpb3IgeyBTY3JvbGxCZWhhdmlvcjo6QXV0
byB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xs
VG9PcHRpb25zLmgKaW5kZXggZjU3NzRkNDRhZWYwNGE4NWViMTQ3MjE3ZTdmYWFiODcyZjI0M2Q4
Yi4uMzE4NGZkYTZmZWZiZWQ0ZTNmZWMxNTE2OWY0NWJmZTIxZTQ1MGRiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Njcm9sbFRvT3B0aW9ucy5oCkBAIC0zNSw4ICszNSw4IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBTY3JvbGxUb09wdGlvbnMgOiBTY3JvbGxPcHRpb25zIHsKLSAgICBP
cHRpb25hbDxkb3VibGU+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b3A7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvcDsK
IAogICAgIFNjcm9sbFRvT3B0aW9ucygpID0gZGVmYXVsdDsKICAgICBTY3JvbGxUb09wdGlvbnMo
ZG91YmxlIHgsIGRvdWJsZSB5KQpAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgU2Nyb2xsVG9PcHRp
b25zIDogU2Nyb2xsT3B0aW9ucyB7CiAgICAgeyB9CiB9OwogCi1pbmxpbmUgZG91YmxlIG5vcm1h
bGl6ZU5vbkZpbml0ZVZhbHVlT3JGYWxsQmFja1RvKE9wdGlvbmFsPGRvdWJsZT4gdmFsdWUsIGRv
dWJsZSBmYWxsYmFja1ZhbHVlKQoraW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVWYWx1
ZU9yRmFsbEJhY2tUbyhzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWUsIGRvdWJsZSBmYWxsYmFj
a1ZhbHVlKQogewogICAgIC8vIE5vcm1hbGl6ZSBub24tZmluaXRlIHZhbHVlcyAoaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI25vcm1hbGl6ZS1ub24tZmluaXRlLXZhbHVlcyku
CiAgICAgcmV0dXJuIHZhbHVlID8gKHN0ZDo6aXNmaW5pdGUoKnZhbHVlKSA/ICp2YWx1ZSA6IDAp
IDogZmFsbGJhY2tWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5k
ZXggNmI2OTZkNGMwZGIzNDhiMDg3MWNhYTMxOWY5ZTk4ZDk2YWM2YWQxMS4uMzM0OWQxYWE4Njk0
OWNjNjI4MDQ5ZWFmM2JkZWIyOWVjYjYzZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQog
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3RyaW5n
KSk7CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0KQorUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90
b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCmluZGV4IDA4YzZmMWRmNTdhOWNmYTJlNWFlODA2NTRkNzFhODg3MWZiYTQ5MWIuLmU2YWI1
NzU5OTYzNGRmNjY1MzRiOTVlYTBjMjI0OGQ3YzVkZmE2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3Jp
Z2luPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBP
cHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
ZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CiAKICAgICAvLyBRdWlja0xv
b2sgZG9jdW1lbnRzIGFyZSBpbiBub24tbG9jYWwgb3JpZ2lucyBldmVuIHdoZW4gbG9hZGVkIGZy
b20gZmlsZTogVVJMcy4gVGhleSBuZWVkIHRvCiAgICAgLy8gYmUgYWxsb3dlZCB0byBkaXNwbGF5
IHRoZWlyIG93biBmaWxlOiBVUkxzIGluIG9yZGVyIHRvIHBlcmZvcm0gcmVsb2FkcyBhbmQgc2Ft
ZS1kb2N1bWVudApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbDsgfQogICAgIGNvbnN0IFN0
cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ob3N0OyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQotICAgIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnBvcnQ7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnBvcnQ7IH0KIAog
ICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUhvc3QoY29uc3QgVVJMJik7CiAKQEAgLTI3MSw3
ICsyNzEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBTZWN1cml0eU9y
aWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBk
YXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBkYXRhOwogICAgIGRl
Y29kZXIgPj4gZGF0YTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGEwMGRhYzQ3
OTBlZTJlOTU1YWUyZmUyY2ZjNjVmMGE0MGRhODM2YzIuLjIyYmVhOGI0MzQyZGE0ZGRjZGUzNWNk
ODY0YWJkOGM3NzY1MzA5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0
YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
c2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwg
c2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3J0LnZhbHVlX29yKDApKTsKIH0KIAotT3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIC8vIE1ha2Ugc3VyZSB0
aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggOTA3OWM1YjU1MjhiMGViYjk0YjgwZDZmZTg1Mzcx
N2I2NDEyMGQ4OS4uNGIzOTUyNDkxNjU4ZWNhYWYzOGUwYmIwMGE3Mjk1MDkwMmJjMDM4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0zNCw3ICszNCw3IEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAg
ICBTZWN1cml0eU9yaWdpbkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRh
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQpCisgICAgU2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKICAg
ICAgICAgOiBwcm90b2NvbChwcm90b2NvbCkKICAgICAgICAgLCBob3N0KGhvc3QpCiAgICAgICAg
ICwgcG9ydChwb3J0KQpAQCAtNjIsMTcgKzYyLDE3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGEgewogCiAgICAgU3RyaW5nIHByb3RvY29sOwogICAgIFN0cmluZyBob3N0OwotICAgIE9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0eU9yaWdpbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CiAKICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0
aGF0IGNvdWxkIGJlIHVzZWQgYXMgcGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9y
bWF0IHNob3VsZCBiZSB1c2VkIGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKTsKICAgICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKQEAgLTEwMywx
OSArMTAzLDE5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvdG9j
b2w7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHByb3RvY29sOwogICAgIGRlY29kZXIgPj4g
cHJvdG9jb2w7CiAgICAgaWYgKCFwcm90b2NvbCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGhvc3Q7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGhvc3Q7CiAgICAgZGVjb2RlciA+PiBob3N0OwogICAgIGlmICghaG9zdCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50
MTZfdD4+IHBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pj4g
cG9ydDsKICAgICBkZWNvZGVyID4+IHBvcnQ7CiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggZmVlNmI5OWUzZmE1
ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOC4uNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBk
Y2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC00NCw3ICs0NCw3IEBA
IHN0cnVjdCBSYXdGaWxlIHsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsK
ICAgICBTaGFyZURhdGEgc2hhcmVEYXRhOwotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0
ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgVmVjdG9yPFJhd0ZpbGU+IGZpbGVzOwogfTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVu
dUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8u
aAppbmRleCAxMjFhZmFhODNlNTVjMDMyM2ZjYjI0MWQ2YzM3ZTRjNDhhZjQyNGYxLi5mODM5YTkw
ZWI5NjEzMmJmMzViOGZmNDM3MzhkOWZjZThjMmEwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mby5oCkBAIC00Myw3ICs0Myw3IEBAIHN0
cnVjdCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbyB7CiAgICAgVHJhbnNsYXRpb25Db250ZXh0
TWVudU1vZGUgbW9kZSB7IFRyYW5zbGF0aW9uQ29udGV4dE1lbnVNb2RlOjpOb25FZGl0YWJsZSB9
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxUcmFuc2xh
dGlvbkNvbnRleHRNZW51SW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5m
bz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
VHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApAQCAtNTQsMjQgKzU0LDI0IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgVHJhbnNs
YXRpb25Db250ZXh0TWVudUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5jb2Rl
ciA8PCBtb2RlOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxUcmFuc2xh
dGlvbkNvbnRleHRNZW51SW5mbz4gVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxU
cmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4gVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAg
aWYgKCF0ZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
SW50UmVjdD4gc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPElu
dFJlY3Q+IHNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXc7CiAgICAgZGVjb2RlciA+PiBzZWxlY3Rp
b25Cb3VuZHNJblJvb3RWaWV3OwogICAgIGlmICghc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEludFBvaW50PiBs
b2NhdGlvbkluUm9vdFZpZXc7CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gbG9jYXRpb25J
blJvb3RWaWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGlmICgh
bG9jYXRpb25JblJvb3RWaWV3KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8VHJhbnNsYXRpb25Db250ZXh0TWVudU1vZGU+IG1vZGU7CisgICAgc3RkOjpvcHRp
b25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51TW9kZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1v
ZGU7CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAppbmRleCA4Y2Q5YzMwYzZiNmE2NGVlNjZkZjk5MzNlYjM3ODU4OGM0
OThhMjVjLi41MDMzNDJhMzU1MGY5MmI1MDZjZDM3NjU5ZGI3ZTgzODI0MTU3NDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgV2FpdEZv
ck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyB3YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV93YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0
aW5nOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVz
ZXJTY3JpcHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VXNlclNjcmlwdD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CkBAIC04NiwzOSArODYsMzkgQEAgdm9pZCBVc2Vy
U2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxVc2VyU2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwog
ICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAg
IE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVj
b2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFsbG93bGlzdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2xpc3Q7CiAgICAgZGVjb2RlciA+PiBhbGxv
d2xpc3Q7CiAgICAgaWYgKCFhbGxvd2xpc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2NrbGlzdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibG9ja2xpc3Q7CiAgICAgZGVjb2RlciA+PiBibG9j
a2xpc3Q7CiAgICAgaWYgKCFibG9ja2xpc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCi0gICAgT3B0aW9uYWw8VXNlclNjcmlwdEluamVjdGlvblRpbWU+IGluamVjdGlvblRp
bWU7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9u
VGltZTsKICAgICBkZWNvZGVyID4+IGluamVjdGlvblRpbWU7CiAgICAgaWYgKCFpbmplY3Rpb25U
aW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVkRnJhbWVzOworICAgIHN0ZDo6b3B0aW9u
YWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgZGVjb2Rl
ciA+PiBpbmplY3RlZEZyYW1lczsKICAgICBpZiAoIWluamVjdGVkRnJhbWVzKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247CisgICAgc3RkOjpvcHRpb25h
bDxXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nPiB3YWl0Rm9yTm90aWZpY2F0aW9u
OwogICAgIGRlY29kZXIgPj4gd2FpdEZvck5vdGlmaWNhdGlvbjsKICAgICBpZiAoIXdhaXRGb3JO
b3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggY2Y2YTFjNDAzZjJmMGI2YzY5ZmNmM2I2YmVlNzJjZDFj
ZTY4NTM5ZS4uYzM1YzRmY2QzYmZhYzk0MWJjMTdmMjVmM2ZjMTFmNjU3NTk2ZWE0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+
JiYgYmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBV
c2VyU3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0
ZDo6bnVsbG9wdCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYm
IGJsb2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNl
clN0eWxlTGV2ZWwgbGV2ZWwsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9
IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91
cmwodXJsKQogICAgICAgICAsIG1fYWxsb3dsaXN0KFdURk1vdmUoYWxsb3dsaXN0KSkKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3Qo
KSBjb25zdCB7IHJldHVybiBtX2Jsb2NrbGlzdDsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9
CiAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9Ci0g
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CkBA
IC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9ja2xpc3Q7
CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogICAgIFVz
ZXJTdHlsZUxldmVsIG1fbGV2ZWw7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFn
ZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9W
aWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENv
bmZpZ3VyYXRpb24uY3BwCmluZGV4IDE0ZDBjNWY1YTUxMjA5OTczNWQ4NTA4ODc1MTFhZWZmNTJl
NjlmNDcuLmNhZTQyNDAxNTQ1MDdiYjY3NDgwYjU2ZTkyZGU4OGNjNjYyNmM0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTExNCw3ICsx
MTQsNyBAQCBib29sIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Q29udGVudHNTaXplKGNvbnN0
IEludFNpemUmIGNvbnRlbnRTaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiB2aWV3
TGF5b3V0U2l6ZSwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yLCBPcHRpb25hbDxkb3Vi
bGU+JiYgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQorYm9vbCBWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4mJiBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpCiB7CiAgICAgZG91YmxlIG5ld1NjYWxl
RmFjdG9yID0gc2NhbGVGYWN0b3IudmFsdWVfb3IobV9sYXlvdXRTaXplU2NhbGVGYWN0b3IpOwog
ICAgIGRvdWJsZSBuZXdFZmZlY3RpdmVXaWR0aCA9IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0
aC52YWx1ZV9vcihtX21pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAppbmRleCBjNDQ2NzkzZjhkN2MxNzI0NDQ2
ZWY4OWM3ZDBiNTJkOTg2ZGZjNTFiLi4xNDYzNjJjNTJhZDBkYzMxZjg1ODhkZDRkM2U3YTM5ODFi
ZDU1YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91
dFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdMYXlvdXRTaXplOyB9CiAKICAgICBjb25zdCBG
bG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5
b3V0U2l6ZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Vmlld0xheW91dFNpemUoY29u
c3QgRmxvYXRTaXplJiwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yID0gc3RkOjpudWxs
b3B0LCBPcHRpb25hbDxkb3VibGU+JiYgZWZmZWN0aXZlV2lkdGggPSBzdGQ6Om51bGxvcHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Vmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXpl
Jiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGVmZmVjdGl2ZVdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAog
ICAgIGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiYgZGlzYWJsZWRBZGFwdGF0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRBZGFwdGF0aW9uczsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2V0RGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBPcHRpb25TZXQ8RGlz
YWJsZWRBZGFwdGF0aW9ucz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
aW5kZXggNTI5Zjk5NjQxMGZhY2FlNjE0ZDk4Y2FjMzJmNDMyOTI5MDgxMDZhZS4uZGU5OWY5YzAy
OWJmMDY2NGQwNmRlMTgxM2RjN2QwNzU2ODFiNmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dGZWF0dXJlcy5jcHAKQEAgLTM4LDggKzM4LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3Rh
dGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5
LCBTdHJpbmdWaWV3IHZhbHVlKTsKIAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlh
bG9nRmVhdHVyZXNNYXAoY29uc3QgU3RyaW5nJik7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9v
bEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXkpOwotc3Rh
dGljIE9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAm
LCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3Qg
Y2hhcioga2V5KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29u
c3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQg
bWF4KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZmVhdHVyZS1zZXBhcmF0
b3IKIHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3RlciwgRmVhdHVyZU1vZGUg
bW9kZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1
cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIHJl
dHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAm
IGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZp
bmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCkBAIC0yMjEsNyArMjIxLDcg
QEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVz
TWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJvbiIpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZs
b2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIq
IGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4g
ZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hh
cioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsKICAgICBhdXRvIGl0ID0gZmVhdHVyZXMu
ZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RmVhdHVyZXMuaAppbmRleCBkNzgwZDI4OWFiY2Q3Yjg0ZWQwOWEzZTQ1MjI3MDVlNmJk
ZDM1ZGZmLi5jNjdhNDRmNmNlZWRiMGM0ZGI2ZmNlYTVmZjc3NGYxYTBmY2E0ZjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRmxvYXRSZWN0OwogCiBzdHJ1Y3QgV2luZG93RmVhdHVyZXMgewot
ICAgIE9wdGlvbmFsPGZsb2F0PiB4OwotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAgIE9wdGlv
bmFsPGZsb2F0PiB3aWR0aDsKLSAgICBPcHRpb25hbDxmbG9hdD4gaGVpZ2h0OworICAgIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IHg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4geTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7
CiAKICAgICBib29sIG1lbnVCYXJWaXNpYmxlIHsgdHJ1ZSB9OwogICAgIGJvb2wgc3RhdHVzQmFy
VmlzaWJsZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UGVyZm9ybWFuY2VMb2dnaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Bl
cmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tCmluZGV4IDdkMzIzOWVkNzIwZTE2ZTlmYzI0Zjc1ZjZj
NjNiNzA5YTc4ZmVkOGEuLjI4OTZmZTE5NzZmZmIxOGFkZmE3OTY2NmZlNjhlMTYzN2FiMjUwZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dnaW5n
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9QZXJmb3JtYW5jZUxvZ2dp
bmdDb2NvYS5tbQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9w
dGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkK
K3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5c2ljYWxGb290
cHJpbnQoKQogewogICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOwogICAgIG1hY2hfbXNn
X3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDUxYTEzZmM0OWE1
MzIxOWRmMmY5YWUwOGNlMjVhZjkxMWI5NGQ1NjguLmJmNmEyODEzZTRkNjA2MjUzMTkyZGMyMGNh
YjY5MmZiNmFlMDBmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oCkBAIC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeyBudWxscHRyIH07CiAg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAg
ICBVUkwgbV9wcm90ZWN0ZWRVUkw7Ci0gICAgT3B0aW9uYWw8VVJMPiBtX2RvY3VtZW50VVJMOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX2RvY3VtZW50VVJMOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+IG1fc2VsZlNvdXJjZTsKICAgICBTdHJpbmcg
bV9zZWxmU291cmNlUHJvdG9jb2w7CiAgICAgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciBtX3BvbGlj
aWVzOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uU2V0PENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3Jp
cHRzOwogICAgIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBt
X2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CiAgICAgSGFzaFNldDxTZWN1cml0
eU9yaWdpbkRhdGE+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGU7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1f
Y2FjaGVkUmVzcG9uc2VIZWFkZXJzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY2FjaGVkUmVzcG9uc2VIZWFkZXJzOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCAxNjE0MzRlYjkyMmYyNGUx
MThmODUwOGFjY2NmNTlmYWJiZjgwNjVkLi5hNzJiMTBhMTQ4ZTBiNzBmYzcwNGQzYjk3YTE0ZThi
NjIzYzMyODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMzY3LDcgKzM2Nyw3
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1CiAvLyBkaXJlY3RpdmUtbmFtZSAgICA9IDEqKCBB
TFBIQSAvIERJR0lUIC8gIi0iICkKIC8vIGRpcmVjdGl2ZS12YWx1ZSAgID0gKiggV1NQIC8gPFZD
SEFSIGV4Y2VwdCAiOyI+ICkKIC8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBh
dXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRGlyZWN0aXZlKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKSAtPiBPcHRpb25hbDxQYXJz
ZWREaXJlY3RpdmU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRGlyZWN0aXZlKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFBhcnNlZERp
cmVjdGl2ZT4KIHsKICAgICBza2lwV2hpbGU8aXNBU0NJSVNwYWNlPihidWZmZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmgKaW5kZXggNTQxYTVmZTZiMjlmODQ4MzZlMDdhOTI0MWIwM2YyYWZm
ZWU4OWViZC4uYjMyZTg4NDVjMGRmOGNhNWYwOWQ5N2M2NWNmOTAxMjE0YWJiODA5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgICAgICBT
dHJpbmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8UGFyc2VkRGlyZWN0aXZlPiBwYXJzZURp
cmVjdGl2ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFBhcnNlZERpcmVjdGl2ZT4g
cGFyc2VEaXJlY3RpdmUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAg
dm9pZCBwYXJzZVJlcG9ydFVSSShQYXJzZWREaXJlY3RpdmUmJik7CiAgICAgdm9pZCBhZGREaXJl
Y3RpdmUoUGFyc2VkRGlyZWN0aXZlJiYpOwogICAgIHZvaWQgYXBwbHlTYW5kYm94UG9saWN5KFBh
cnNlZERpcmVjdGl2ZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKaW5kZXggZjNiYjFh
N2JiOWQzYjI5MzI0MzZiM2MxYzllZTUzY2IyMjNiZDhhYy4uOTQ4ZDhjYzg3NDI4ZGU4OWEwZmM4
MDk5YzY1YmQwM2FjYWNkNWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gZGVjb2Rl
KERlY29kZXImKTsKIAogICAgIGVudW0gRW1wdHlUYWcgeyBFbXB0eSB9OwogICAgIHN0cnVjdCBN
YXJrYWJsZVRyYWl0cyB7CkBAIC04NCwyMCArODQsMjAgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycz4gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzPiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBoZWFkZXJzOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNT
aXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29k
ZXIgPj4gaGVhZGVyc1NpemU7CiAgICAgaWYgKCFoZWFkZXJzU2l6ZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsg
KytpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaGVhZGVyOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gaGVhZGVyOwogICAgICAgICBkZWNvZGVyID4+IGhlYWRlcjsKICAgICAg
ICAgaWYgKCFoZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPiBoZWFkZXJUeXBlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGU+IGhl
YWRlclR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVyVHlwZTsKICAgICAgICAgaWYgKCFo
ZWFkZXJUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNSw3ICsx
MDUsNyBAQCBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZAogICAgIH0KICAgICBoZWFkZXJzLm1faGVh
ZGVycy5zaHJpbmtUb0ZpdCgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBodHRwU3RhdHVzQ29kZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaHR0cFN0YXR1c0NvZGU7CiAgICAgZGVjb2RlciA+PiBo
dHRwU3RhdHVzQ29kZTsKICAgICBpZiAoIWh0dHBTdGF0dXNDb2RlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggN2IyYTcyMjdiNTUxNjhhZDU5Y2FhZGM3
NzEwMzMyNTUwMTBlOTAyMC4uNWMxM2ZlYTI4ZGYzN2YxZTIzZjI4Y2MzMjk1Y2E3ZTEyMmIzYjAz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYg
c2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2Fy
ZCkKK0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBj
b25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxk
Y2FyZCkKICAgICA6IG1fcG9saWN5KHBvbGljeSkKICAgICAsIG1fc2NoZW1lKHNjaGVtZSkKICAg
ICAsIG1faG9zdChob3N0KQpAQCAtOTYsNyArOTYsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZTo6cG9ydE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKG1f
cG9ydEhhc1dpbGRjYXJkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBw
b3J0ID0gdXJsLnBvcnQoKTsKIAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5oCmluZGV4IDhhZmYxZDllZjk3YjE5YjE5NzljMmI2Zjc1YzlhYmU2
NTRhOThlOTEuLmEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBo
b3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGhv
c3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpOworICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNX
aWxkY2FyZCk7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX3NjaGVtZTsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIFN0cmlu
ZyBtX3BhdGg7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IG1fcG9ydDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBtX3BvcnQ7CiAKICAgICBib29sIG1faG9zdEhhc1dpbGRjYXJkOwogICAg
IGJvb2wgbV9wb3J0SGFzV2lsZGNhcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IGI4N2Q4
NWFmZDEzNzU0OTQzNzQ1NmZkYWMzNGNiYjY5MzAyZTUxNjUuLjkyNTY3NWYzMzBhZTliZTgyNTIx
ODM5MDFlNzdlMjk2ZWJlYmI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC0xOTgsNyAr
MTk4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShTdHIKIC8vICAgICAgICAgICAgICAgICAgIC8g
KCBbIHNjaGVtZSAiOi8vIiBdIGhvc3QgWyBwb3J0IF0gWyBwYXRoIF0gKQogLy8gICAgICAgICAg
ICAgICAgICAgLyAiJ3NlbGYnIgogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4gQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4g
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzM2LDcgKzMzNiw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3Q6OlNvdXJjCiAvLyAgICAgICAgICAgICAgICAgICAgIDsgPHNjaGVtZT4gcHJv
ZHVjdGlvbiBmcm9tIFJGQyAzOTg2CiAvLyBzY2hlbWUgICAgICA9IEFMUEhBICooIEFMUEhBIC8g
RElHSVQgLyAiKyIgLyAiLSIgLyAiLiIgKQogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlv
bigpIDw9IGJ1ZmZlci5lbmQoKSk7CiAKQEAgLTM2MCw3ICszNjAsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxTdHJpbmc+IENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpcwogLy8gICAgICAgICAgICAgICAgICAgLyAiKiIKIC8vIGhvc3QtY2hhciAgICAg
ICAgID0gQUxQSEEgLyBESUdJVCAvICItIgogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+IENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVm
ZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6SG9zdD4g
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VIb3N0KFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIEFTU0VSVChidWZmZXIucG9zaXRp
b24oKSA8PSBidWZmZXIuZW5kKCkpOwogCkBAIC0zOTYsNyArMzk2LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdDo6SG9zdD4KICAgICByZXR1cm4gaG9zdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpwYXJzZVBhdGgoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIEFTU0VSVChidWZmZXIucG9zaXRp
b24oKSA8PSBidWZmZXIuZW5kKCkpOwogICAgIApAQCAtNDE1LDcgKzQxNSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzCiAKIC8vIHBvcnQgICAgICAgICAgICAgID0gIjoiICggMSpESUdJVCAv
ICIqIiApCiAvLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9ydD4gQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdDo6cGFyc2VQb3J0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4g
YnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0OjpwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQo
KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggODE3MzgwN2IxMzY1MWQwZjlkYTU4MmYw
MWQ4OGU0YTNlNzliYzkyMy4uZjU3NDRlMmE5OTM2ZDgzYzM5MTdmYTY2NjgyMmZmZjJkYjExMjU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBib29sIGhhc1dpbGRjYXJkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIHN0cnVjdCBQb3J0IHsK
LSAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQxNl90PiB2YWx1ZTsKICAgICAgICAgYm9vbCBoYXNXaWxkY2FyZCB7IGZhbHNlIH07CiAg
ICAgfTsKICAgICBzdHJ1Y3QgU291cmNlIHsKQEAgLTczLDExICs3MywxMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNQcm90b2NvbEFsbG93ZWRCeVN0YXIoY29uc3QgVVJMJikgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPFNvdXJjZT4gcGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0
aW9uYWw8U3RyaW5nPiBwYXJzZVNjaGVtZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxIb3N0
PiBwYXJzZUhvc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8UG9ydD4gcGFyc2VQb3J0KFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4gcGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8U291cmNlPiBwYXJzZVNvdXJjZShTdHJpbmdQYXJzaW5nQnVmZmVy
PENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gcGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxIb3N0PiBwYXJzZUhvc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxQ
b3J0PiBwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBh
cnNlUGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlTm9uY2VTb3VyY2UoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCBwYXJzZUhhc2hTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBiNmE5YzM2ZDEyZWJkZDk2MGFjNjc3MDlmMGQxNzY0YzI1ZWY4YzQzLi43OWZi
OTVhYTgwMTg3MzVmYmNhMGY1MDZmZWVkNmUwOWIxNDIxYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdz
OjpJc0NvcHlLZXlEb3duKTsKIH0KIAotT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21w
bGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCA0OTZkOGI3ODI2MDgyMzc1
NTg2YTBiMzE5MWYzZDM2NDZlYTY1ZDhkLi5mNzk0ODliZDE4ZWFjYTI4N2IyYzg2NDI1NTY1NGJh
OGQ5YzM5MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQ29udGVudENoYW5nZU9ic2VydmVyJiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICAgICAg
ICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwotICAgICAgICBPcHRpb25hbDxib29sPiBtX3dh
c0hpZGRlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3dhc0hpZGRlbjsKICAgICAg
ICAgYm9vbCBtX2hhZFJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXggZjlhNDMwYTFkYmRlNWRiZjNkMGFh
YzE4MGQ1YTRmMGY3YWYyZDA4Yy4uMjA1OTAwNGU3MDdlYzM1NDNjOGJiYThkNTdlNmQwYTg1ZjM4
YjVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAt
NjEyLDcgKzYxMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Ny
b2xsKCkKICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7
CiB9CiAKLXN0YXRpYyBJbnRQb2ludCBhZGp1c3RBdXRvc2Nyb2xsRGVzdGluYXRpb25Gb3JJbnNl
dEVkZ2VzKEludFBvaW50IGF1dG9zY3JvbGxQb2ludCwgT3B0aW9uYWw8SW50UG9pbnQ+IGluaXRp
YWxBdXRvc2Nyb2xsUG9pbnQsIEZsb2F0UmVjdCB1bm9ic2N1cmVkUm9vdFZpZXdSZWN0KQorc3Rh
dGljIEludFBvaW50IGFkanVzdEF1dG9zY3JvbGxEZXN0aW5hdGlvbkZvckluc2V0RWRnZXMoSW50
UG9pbnQgYXV0b3Njcm9sbFBvaW50LCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBpbml0aWFsQXV0
b3Njcm9sbFBvaW50LCBGbG9hdFJlY3QgdW5vYnNjdXJlZFJvb3RWaWV3UmVjdCkKIHsKICAgICBJ
bnRQb2ludCByZXN1bHRQb2ludCA9IGF1dG9zY3JvbGxQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCmluZGV4
IGZlMWRmNmY2OTFiOWQxNGRiOTNjNjViZWIzYzc3MWE0ZGI5NTZjYzMuLjg1YjI5MGFjYmE1NzM5
NjhiMmU2Y2E0ZjY0ODFmNmI3MzUzNmEzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKQEAgLTEwNyw4ICsxMDcs
OCBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtU2F2ZVN0YXRlQmVmb3JlU3Rh
cnRpbmcoKQogfQogCiBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBu
YW1lOwotICAgIE9wdGlvbmFsPGZsb2F0PiBjcHVVc2FnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjcHVVc2FnZTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgcHJldmlvdXNVdGltZSB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgcHJldmlvdXNTdGltZSB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDU4NjQ5MzE5NjI2YjBmY2ZlMmEyN2RlNWMyNmZiYWM4
M2Y1ZTJiN2IuLmQzNDhkNjA5MzE4MzZiMTQzMmI3ZDExNDJiMDVhMWJhMGNmNGJkYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02NCw3ICs2
NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdBcHBs
aWNhdGlvbkZsYWdzOjpJc0NvcHlLZXlEb3duKTsKIH0KICAgICAKLU9wdGlvbmFsPERyYWdPcGVy
YXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5m
bGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJc01vZGFsKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCBkMDE5NTQzNzQ4YTNkMjU2MTJjNDgzOTA2MTFhOTNkMmViYzAwMjc0Li5j
ZGE3NDhhOTM2ODUxZjJjYjRkMjM3NTZlYTAzYmUzZmZiMTI1ZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0xMDc4LDEwICsxMDc4LDEwIEBAIElu
dFBvaW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1
dG9zY3JvbGwoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247Cisg
ICAgICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQo
KSk7CiAKICAgICBhdXRvIGZyYW1lID0gdG9Vc2VyU3BhY2VGb3JQcmltYXJ5U2NyZWVuKHNjcmVl
blJlY3RGb3JEaXNwbGF5KHBhZ2UtPmNocm9tZSgpLmRpc3BsYXlJRCgpKSk7Ci0gICAgcmV0dXJu
IG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiArIGF1dG9zY3JvbGxBZGp1c3RtZW50RmFjdG9yRm9y
U2NyZWVuQm91bmRhcmllcyhtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24sIGZyYW1lKTsK
KyAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkp
ICsgYXV0b3Njcm9sbEFkanVzdG1lbnRGYWN0b3JGb3JTY3JlZW5Cb3VuZGFyaWVzKG1fbGFzdEtu
b3duTW91c2VHbG9iYWxQb3NpdGlvbiwgZnJhbWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IDEzOWY0ZTc2NTFkYzg4MTE3MDRlYzM0ZWY0NmI5MzE0ZjgxY2NkNzUuLmU4MDU3
ZjM4ZDcwM2Q2NjZmZjA0YjA4OTJkZjA1OWMwNWRlYjBkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
eW5jaHJvbml6ZVN0YXRlRnJvbVNjcm9sbGluZ1RyZWUoKQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCi0gICAgbV9zY3JvbGxp
bmdUcmVlLT50cmF2ZXJzZVNjcm9sbGluZ1RyZWUoWyZdKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IFNjcm9sbGluZ05vZGVUeXBlLCBPcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwg
T3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRT
aW5jZUxhc3RDb21taXQpIHsKKyAgICBtX3Njcm9sbGluZ1RyZWUtPnRyYXZlcnNlU2Nyb2xsaW5n
VHJlZShbJl0oU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQp
IHsKICAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICYmIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0
KSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9uaXplU3RhdGVGcm9tU2Nyb2xsaW5nVHJl
ZSAtIG5vZGUgIiA8PCBub2RlSUQgPDwgIiBzY3JvbGwgcG9zaXRpb24gIiA8PCBzY3JvbGxQb3Np
dGlvbik7CiAgICAgICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwo
bm9kZUlELCBzY3JvbGxQb3NpdGlvbi52YWx1ZSgpLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Ny
b2xsVHlwZTo6VXNlciwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKQEAgLTM0
NywxMyArMzQ3LDEzIEBAIEZyYW1lVmlldyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjphcHBseVNjcm9sbFVwZGF0
ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNj
cm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxp
bmdMYXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjph
cHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgYXBwbHlQ
ZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChzY3JvbGxpbmdOb2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgc2Nyb2xsVHlwZSwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiB9CiAKLXZv
aWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFz
eW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmIHNjcm9sbFBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
IHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2Rl
SUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBz
Y3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9z
aXRpb25BY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMzk3LDEz
ICszOTcsMTMgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbmNpbGVTY3Jv
bGxpbmdTdGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldywgY28KIAogICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxpbmcsIHN0cmVhbSA8PCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkgPDwgIiBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yICIgPDwgdGhpcyA8PCAiIHJlY29uY2lsZVNjcm9sbGluZ1N0YXRl
IHNjcm9sbFBvc2l0aW9uICIgPDwgc2Nyb2xsUG9zaXRpb24gPDwgIiB0eXBlICIgPDwgc2Nyb2xs
VHlwZSA8PCAiIHN0YWJpbGl0eSAiIDw8IHZpZXdwb3J0UmVjdFN0YWJpbGl0eSA8PCAiICIgPDwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxheW91dFZpZXdwb3J0UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0
Vmlld3BvcnRSZWN0OwogCiAgICAgV1RGOjpzd2l0Y2hPbihsYXlvdXRWaWV3cG9ydE9yaWdpbk9y
T3ZlcnJpZGVSZWN0LAotICAgICAgICBbJmZyYW1lVmlld10oT3B0aW9uYWw8RmxvYXRQb2ludD4g
b3JpZ2luKSB7CisgICAgICAgIFsmZnJhbWVWaWV3XShzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IG9yaWdpbikgewogICAgICAgICAgICAgaWYgKG9yaWdpbikKICAgICAgICAgICAgICAgICBmcmFt
ZVZpZXcuc2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50KG9yaWdpbi52YWx1
ZSgpKSwgRnJhbWVWaWV3OjpUcmlnZ2VyTGF5b3V0T3JOb3Q6Ok5vKTsKLSAgICAgICAgfSwgWyZm
cmFtZVZpZXcsICZsYXlvdXRWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVjdFN0YWJpbGl0eV0oT3B0
aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZVJlY3QpIHsKKyAgICAgICAgfSwgWyZmcmFtZVZpZXcs
ICZsYXlvdXRWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVjdFN0YWJpbGl0eV0oc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IG92ZXJyaWRlUmVjdCkgewogICAgICAgICAgICAgaWYgKCFvdmVycmlkZVJl
Y3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03OTcsNyArNzk3LDcgQEAgYm9vbCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMo
U2Nyb2xsaW5nTm9kZUlEIG4KICNlbmRpZgogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQs
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgaWYgKG1fc2Nyb2xsaW5nVHJlZSkKICAgICAgICAg
bV9zY3JvbGxpbmdUcmVlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFs
RnJhbWVzUGVyU2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA4NzE0OThlZjY0NjQ5Yzlm
NzhmZmUyYTI1M2ZiOTYzNGY0ZWE0Zjc2Li4yYzgwZGUyMmU2MjBiYWI0ZGYzOGViMTJmMjM1NTNj
YjM1Y2IyNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0
UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xs
VHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQm
LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxU
eXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGlu
Z05vZGVJRCwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIGZpbmFsOwpAQCAtMTQ2LDcgKzE0Niw3
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnMoU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb24+KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyhTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQs
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVy
U2Vjb25kKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3Vic2Nyb2xsZXJz
KCkgY29uc3QgZmluYWw7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpOwogICAgIHZvaWQgdXBkYXRlRXZlbnRUcmFj
a2luZ1JlZ2lvbnMoKTsKICAgICAKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxG
bG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50Jiwgc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXdGb3JT
Y3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4
IGVjMzk5MDI3NDgzMDRkZDEwOGQ2NDI2Zjk5MTU3ZGE2ZWJiZDgxNGYuLmRhMTFlYzA1ZmM1Nzc3
OTg2YmQwOGRkNGZmMmY2OGM4ODk4MzUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBzdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0VHlwZSBv
ZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2ZmcwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5
b3V0VHlwZT4KLXN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZz
ZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5
b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExh
eW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRp
b24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5
b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQpCiB7CiAgICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAgaWYgKCFkaWZmZXJlbmNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
aAppbmRleCAxZWNmYWQxNmUxMzhlMGZiYzU5MThmZDIyYjdhYmRmNjQ3YjY3MzRlLi4xNTVhOTc0
NjFkMjBjMDc1NjdkZWJmYmRlYjhmYjYwNDI0NWJkNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNzMsNyAr
NzMsNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE91dHB1dFR5cGU+IE91dHB1dFR5cGUgY29udmVydFVuaXRzKGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yID0gMC4wKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0
U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUs
IFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9u
YWw8VW5pdFR5cGU+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VW5pdFR5cGUs
IHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVU
eXBlJiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9h
dCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRp
cmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogfTsKIAogdXNpbmcgTGF5
b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVu
aXQsIExheW91dFJlY3Q+OwpAQCAtODIsMTMgKzgyLDEzIEBAIHVzaW5nIEZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+Owog
dGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNlZFNjYWxl
RmFjdG9yICovKSBjb25zdDsKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1XRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6
Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdw
b3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNv
bnN0OworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+
CiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86
OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7CiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2ln
bmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9s
bEV2ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworV0VCQ09S
RV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgTGF5
b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CiAKIAogY29uc3QgdW5zaWduZWQgaW52
YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNTkwOTg0ZjM1Njdj
M2M4ZDEyOTAwN2RjNTE3YmY2NWJlYTA5NjQ1MS4uNjY3NDY2M2FhZTY0MGE3YWNiMjY1ZTg5MDg2
MWRhMzg1N2EwMzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAv
LyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBnaXZlbiBmcmFtZSB2aWV3IGhhcyBiZWVu
IGxhaWQgb3V0LgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1l
VmlldyYpIHsgfQogCi0gICAgdXNpbmcgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVj
dCA9IFdURjo6VmFyaWFudDxPcHRpb25hbDxGbG9hdFBvaW50PiwgT3B0aW9uYWw8RmxvYXRSZWN0
Pj47CisgICAgdXNpbmcgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVjdCA9IFdURjo6
VmFyaWFudDxzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4+OwogICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVTY3JvbGxpbmdTdGF0ZShGcmFtZVZpZXcm
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRl
UmVjdCYsIFNjcm9sbFR5cGUsIFZpZXdwb3J0UmVjdFN0YWJpbGl0eSwgU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbikgeyB9CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRo
ZSBzbG93IHJlcGFpbnQgb2JqZWN0cyBzZXQgY2hhbmdlcy4KQEAgLTExNiw4ICsxMTYsOCBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1bmlx
dWUgdG8gdGhlIHRocmVhZGVkIHNjcm9sbGluZyBhcmNoaXRlY3R1cmUuIAogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBJbnRQb2ludCYs
IFNjcm9sbFR5cGUgPSBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRC
eU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZv
clNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIHN0
ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+KSB7IH0KIAogICAgIC8vIENyZWF0ZSBhbiB1bnBhcmVudGVkIG5vZGUuCiAgICAgdmlydHVh
bCBTY3JvbGxpbmdOb2RlSUQgY3JlYXRlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5ld05vZGVJRCkgeyByZXR1cm4gbmV3Tm9kZUlEOyB9CkBAIC0xNzUsNyArMTc1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbikg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IC8qIG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiAvKiBub21pbmFsRnJh
bWVzUGVyU2Vjb25kICovKSB7IH0KIAogICAgIHN0YXRpYyBTdHJpbmcgc3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zQXNUZXh0KE9wdGlvblNldDxTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4p
OwogICAgIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggNzNlOTJhNjRkMjMyNWM1ZTFlYTU2OGM0NGQyZDZm
OGRkZmE2YTc1Mi4uYTFkOWMwODRkOGYyOWNjMzBmNTQyMGRhNTVlNDA1MmFkZTI4YWYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogICAgIEZs
b2F0U2l6ZSBtX2NvbnRlbnRTaXplOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEZsb2F0U2l6
ZT4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7CiB9OwogCiBjbGFzcyBCYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IgewpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX3NuYXBBbmlt
YXRpb25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07CiAgICAgYm9vbCBtX2ZvcmNlTGluZWFyQW5p
bWF0aW9uQ3VydmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1
aXJlc0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9w
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAxODJmMDdlNjg3NDY0
YTY2ZDYzZDA0M2ZjN2NhNTVkZTYyYjgxZjkxLi5lYTQxZjVhMTQxNjg1ZGJlYWY5MDA5YTFlNDQ3
NjRmNmY4NGUyOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxvYXRQb2kKICAgICBzZXRQcm9wZXJ0eUNo
YW5nZWQoUHJvcGVydHk6Ok1heExheW91dFZpZXdwb3J0T3JpZ2luKTsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUoT3B0aW9uYWw8RmxvYXRTaXplPiB2aWV3cG9ydFNpemUpCit2b2lkIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZShzdGQ6Om9w
dGlvbmFsPEZsb2F0U2l6ZT4gdmlld3BvcnRTaXplKQogewogICAgIGlmICh2aWV3cG9ydFNpemUg
PT0gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggODdiMGM3Yzc2OWZhNWIxMTNiNDVhMDg1YWUz
YjNmNWI3ZTE5MTgzOS4uMDY3YTg4MWZkNjBjMmE0NzM5NmQ5YTRjMzMyNTExMWMzMWQ1NTQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCkBAIC02Myw4ICs2Myw4IEBAIHB1Ymxp
YzoKICAgICBGbG9hdFBvaW50IG1heExheW91dFZpZXdwb3J0T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9tYXhMYXlvdXRWaWV3cG9ydE9yaWdpbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYpOwogCi0gICAgT3B0
aW9uYWw8RmxvYXRTaXplPiBvdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemU7IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZShPcHRpb25hbDxGbG9hdFNpemU+KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUo
KSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplOyB9OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoc3RkOjpvcHRp
b25hbDxGbG9hdFNpemU+KTsKIAogICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGVhZGVySGVp
Z2h0KGludCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9s
YXlvdXRWaWV3cG9ydDsKICAgICBGbG9hdFBvaW50IG1fbWluTGF5b3V0Vmlld3BvcnRPcmlnaW47
CiAgICAgRmxvYXRQb2ludCBtX21heExheW91dFZpZXdwb3J0T3JpZ2luOwotICAgIE9wdGlvbmFs
PEZsb2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZTsKIAogICAgIGZsb2F0
IG1fZnJhbWVTY2FsZUZhY3RvciB7IDEgfTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5j
cHAKaW5kZXggNzQ3MTQ4MmNmNGEzZTA1MzM4NmJiMDhlODdiNWIzNmE1ZWMzNjliYi4uMGVjMjdh
MmUwMWI5ZjY3MTFkMDliMjJjZGZjNjQ4MTVkODU1NGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTIzNSwxNCArMjM1LDE0IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZTo6dHJhdmVyc2VTY3JvbGxpbmdUcmVlKFZpc2l0b3JGdW5jdGlv
biYmIHZpc2l0b3JGdW5jdGlvbikKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dHJhdmVyc2VTY3JvbGxp
bmdUcmVlUmVjdXJzaXZlKFNjcm9sbGluZ1RyZWVOb2RlJiBub2RlLCBjb25zdCBWaXNpdG9yRnVu
Y3Rpb24mIHZpc2l0b3JGdW5jdGlvbikKIHsKICAgICBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29t
bWl0ID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbjsKICAgICBpZiAoaXM8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHNjcm9s
bGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4obm9kZSk7CiAg
ICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5nTm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRp
b24oKTsKICAgICAgICAgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQgPSBzY3JvbGxpbmdOb2RlLnNj
cm9sbGVkU2luY2VMYXN0Q29tbWl0KCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2lu
dD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBs
YXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZT4obm9kZSkpCiAgICAgICAgIGxheW91dFZpZXdwb3J0T3JpZ2luID0gZG93bmNhc3Q8
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkubGF5b3V0Vmlld3BvcnQoKS5s
b2NhdGlvbigpOwogCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpub3Rp
ZnlSZWxhdGVkTm9kZXNSZWN1cnNpdmUoU2Nyb2xsaW5nVHJlZU5vZGUmIG5vZGUpCiAgICAgfQog
fQogCi1PcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWU6OmxhdGNoZWROb2Rl
SUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWU6
OmxhdGNoZWROb2RlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xhdGNoaW5nQ29udHJvbGxl
ci5sYXRjaGVkTm9kZUlEKCk7CiB9CkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWU6OnNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKEZsb2F0UG9pbnQgcG9zaXRpb24pCiAg
ICAgbV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsKIH0KIAot
dm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRHZXN0dXJlU3RhdGUoT3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0R2VzdHVy
ZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0
ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2NrIH07CiAgICAgbV90cmVl
U3RhdGUuZ2VzdHVyZVN0YXRlID0gZ2VzdHVyZVN0YXRlOwogfQogCi1PcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4gU2Nyb2xsaW5nVHJlZTo6Z2VzdHVyZVN0YXRlKCkKK3N0ZDo6b3B0
aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IFNjcm9sbGluZ1RyZWU6Omdlc3R1cmVTdGF0
ZSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9OwogICAgIHJldHVy
biBtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGU7CkBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlOjpzY3JvbGxCeVNpbXVsYXRpbmdXaGVlbEV2ZW50Rm9yVGVzdGluZyhTY3JvbGxp
bmdOb2RlSUQgbm9kZUkKICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4o
Km5vZGUpLnNjcm9sbEJ5KGRlbHRhKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlOjp3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDxGcmFt
ZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit2b2lkIFNjcm9sbGluZ1RyZWU6
OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICBtX3RyZWVTdGF0ZS5kaXNw
bGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
Ojp3aWxsUHJvY2Vzc1doZWVsRXZlbnQoKQogICAgIG1fbGFzdFdoZWVsRXZlbnRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBTY3JvbGxpbmdUcmVl
Ojpub21pbmFsRnJhbWVzUGVyU2Vjb25kKCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNjcm9s
bGluZ1RyZWU6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4gbV90cmVlU3RhdGUubm9taW5hbEZyYW1l
c1BlclNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAppbmRleCBkY2YxNGNkNmI2YmYwNTBiZTc5Nzk2MjY3N2NiYjI5Yjg0NTBjYzczLi41ZDkz
ZTQ0ZGRhYjhmM2U2ZDlmZDk1MDRjNzFmZWUzZjVhZmJkOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVi
bGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlRm9y
SUQoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdDsKIAotICAgIHVzaW5nIFZpc2l0b3JGdW5jdGlvbiA9
IFdURjo6RnVuY3Rpb248dm9pZCAoU2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxpbmdOb2RlVHlwZSwg
T3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UG9pbnQ+
IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47Cisg
ICAgdXNpbmcgVmlzaXRvckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JvbGxpbmdO
b2RlSUQsIFNjcm9sbGluZ05vZGVUeXBlLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9s
bFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2lu
LCBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47CiAgICAgdm9pZCB0cmF2ZXJzZVNjcm9s
bGluZ1RyZWUoVmlzaXRvckZ1bmN0aW9uJiYpOwogCiAgICAgLy8gQ2FsbGVkIGFmdGVyIGEgc2Ny
b2xsaW5nIHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBhIHNjcm9sbCBhbmQgdXBkYXRlZCBpdHMgbGF5
ZXJzLgpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jik7CiAKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdE5vZGUuZ2V0KCk7IH0KLSAgICBPcHRpb25hbDxTY3JvbGxpbmdO
b2RlSUQ+IGxhdGNoZWROb2RlSUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGlu
Z05vZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9k
ZSgpOwogCiAgICAgYm9vbCBoYXNGaXhlZE9yU3RpY2t5KCkgY29uc3QgeyByZXR1cm4gISFtX2Zp
eGVkT3JTdGlja3lOb2RlQ291bnQ7IH0KQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAKICAg
ICBMb2NrJiB0cmVlTG9jaygpIFdURl9SRVRVUk5TX0xPQ0sobV90cmVlTG9jaykgeyByZXR1cm4g
bV90cmVlTG9jazsgfQogCi0gICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0
ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAg
ICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKTsKICAgICAKICAgICBib29sIGhhc1Byb2Nl
c3NlZFdoZWVsRXZlbnRzUmVjZW50bHkoKTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFNjcm9sbFVwZGF0ZSB7CiAgICAgICAgIFNjcm9sbGluZ05vZGVJRCBub2RlSUQg
eyAwIH07CiAgICAgICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIE9wdGlv
bmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOwogICAgICAgICBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uIHVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24geyBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uOjpTeW5jIH07CiAgICAgICAgIAogICAgICAgICBib29sIGNhbk1l
cmdlKGNvbnN0IFNjcm9sbFVwZGF0ZSYgb3RoZXIpIGNvbnN0CkBAIC0yNTEsMTAgKzI1MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgRmxvYXRQb2ludCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpIGNv
bnN0IFdURl9SRVFVSVJFU19MT0NLKG1fdHJlZVN0YXRlTG9jayk7CiAgICAgdm9pZCBzZXRNYWlu
RnJhbWVTY3JvbGxQb3NpdGlvbihGbG9hdFBvaW50KTsKIAotICAgIHZvaWQgc2V0R2VzdHVyZVN0
YXRlKE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7Ci0gICAgT3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSgpOworICAgIHZvaWQgc2V0R2VzdHVy
ZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUoKTsKIAotICAg
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpOworICAg
IHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKCk7
CiAKICAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpIFdURl9SRVFVSVJFU19M
T0NLKG1fdHJlZUxvY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsTm9kZXMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhtX3RyZWVMb2NrKTsKQEAgLTI5NSw4ICsyOTUsOCBAQCBwcml2YXRlOgogICAgICAgICBF
dmVudFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5nUmVnaW9uczsKICAgICAgICAgRmxvYXRQ
b2ludCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbjsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEIHsgMCB9OwotICAgICAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPiBnZXN0dXJlU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25k
PiBub21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Ny
b2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGU7CiAgICAgICAgIEhhc2hTZXQ8U2Nyb2xsaW5n
Tm9kZUlEPiBub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5kaW5nOwogICAgICAgICBIYXNoU2V0PFNj
cm9sbGluZ05vZGVJRD4gbm9kZXNXaXRoQWN0aXZlU2Nyb2xsU25hcDsKICAgICAgICAgSGFzaFNl
dDxTY3JvbGxpbmdOb2RlSUQ+IG5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyMjAzY2UyZjMwYjJlY2U2ZjUyYmZiYzUzYzQ2
OWJmZDc1ZTdkZTU1Li5mNjI2ZDlkNjViZjU4MTE4NTJiZTJiNTEwNGViYjMzZGFiYzYwM2NkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4oY29uc3QgU2Nyb2xsaW5nUwogICAgICAgICBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXpl
ID0gc3RhdGUub3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoKTsKIH0KIAotYm9vbCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0
TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UmVjdD4gb3Zl
cnJpZGVMYXlvdXRWaWV3cG9ydCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9y
dCkKIHsKICAgICByZXR1cm4gcG9zaXRpb24gPT0gY3VycmVudFNjcm9sbFBvc2l0aW9uKCkgJiYg
KCFvdmVycmlkZUxheW91dFZpZXdwb3J0IHx8IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQudmFsdWUo
KSA9PSBtX2xheW91dFZpZXdwb3J0KTsKIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBGbG9hdFJlY3Qg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6bGF5b3V0Vmlld3BvcnRGb3JTY3JvbGxQ
b3NpdGlvbihjb25zdAogICAgIHJldHVybiBsYXlvdXRWaWV3cG9ydDsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3Jv
bGxQb3NpdGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpCit2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OnVwZGF0ZVZpZXdwb3J0Rm9yQ3Vy
cmVudFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91
dFZpZXdwb3J0KQogewogICAgIGlmIChvdmVycmlkZUxheW91dFZpZXdwb3J0KQogICAgICAgICBz
ZXRMYXlvdXRWaWV3cG9ydChvdmVycmlkZUxheW91dFZpZXdwb3J0LnZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDZhZGYwYTU2YzNmMzZlNjliZDE5YjZhZTA2ODNl
ZDZhYzU4MzZmZGMuLjkyMjA0YThmMDMxMmQzMjg1NzhmM2MzOWNiOGZlZDBiNDMzNzdhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVk
OgogICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBzY3JvbGxCZWhhdmlvckZvckZp
eGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2JlaGF2aW9yRm9yRml4ZWQ7IH0KIAogcHJp
dmF0ZToKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9w
dGlvbmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAgIGJvb2wgc2Nyb2xsUG9zaXRpb25BbmRM
YXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBPcHRpb25hbDxG
bG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+KSBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRN
YXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpIG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBsYXlvdXRW
aWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCBzY2FsZSwg
U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzID0gU3RpY2tUb0RvY3VtZW50Qm91bmRzKSBj
b25zdDsKIAogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xheW91dFZpZXdwb3J0OwogICAgIEZsb2F0
UG9pbnQgbV9taW5MYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBGbG9hdFBvaW50IG1fbWF4TGF5
b3V0Vmlld3BvcnRPcmlnaW47Ci0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX292ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX292ZXJyaWRl
VmlzdWFsVmlld3BvcnRTaXplOwogICAgIAogICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZhY3RvciB7
IDEgfTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNo
aW5nQ29udHJvbGxlci5jcHAKaW5kZXggNGFkZDlmYjNmODdlOTZjOTYwYmExMGNhNzdjMjc1NDg0
MjkxOGE0OS4uNWU1ZWZlNjAzNTgyNTBmZTI5ZDMwOTBhMDdlNDViZTRmZTJhMmQ1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5n
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpyZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW4KICAgICB9CiB9CiAKLU9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGlu
Z0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nRGF0YUZvckV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBhbGxvd0xhdGNoaW5nKSBjb25zdAorc3RkOjpv
cHRpb25hbDxTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5k
UHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGlu
Z0RhdGFGb3JFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wg
YWxsb3dMYXRjaGluZykgY29uc3QKIHsKICAgICBpZiAoIWFsbG93TGF0Y2hpbmcpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFNjcm9sbGlu
Z1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+
IFNjcm9sCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8U2Nyb2xsaW5n
Tm9kZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICBpZiAobV9sYXRjaGVkTm9kZUFuZFN0ZXBzKQpA
QCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVM
YXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdAogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6
OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0Nv
bnRyb2xsZXI6OmxhdGNoZWROb2RlQW5kU3RlcHMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3Jv
bGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0
ZXBzPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUFuZFN0ZXBz
KCkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXRjaGVkTm9kZUxvY2sgfTsKICAg
ICByZXR1cm4gbV9sYXRjaGVkTm9kZUFuZFN0ZXBzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxl
ci5oCmluZGV4IDI4OWExYzQwMDg4MTczYjQ4YzNhZTQ1MGQ2NmVmYTFiZTVmNzE1YzguLjY5YmFl
N2VlMWYyNWRiYzdiYzk5NDQ5ODIzY2Y2MWUwZDdmMDc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdD
b250cm9sbGVyLmgKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlY2Vp
dmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4sIGJvb2wgYWxsb3dMYXRjaGluZyk7CiAKLSAgICBPcHRpb25h
bDxTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBzPiBsYXRjaGluZ0RhdGFGb3JFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29sIGFsbG93TGF0Y2hpbmcpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gbGF0Y2hpbmdE
YXRhRm9yRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgYm9vbCBhbGxvd0xhdGNoaW5n
KSBjb25zdDsKICAgICB2b2lkIG5vZGVEaWRIYW5kbGVFdmVudChTY3JvbGxpbmdOb2RlSUQsIE9w
dGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgYm9vbCBhbGxvd0xhdGNoaW5nKTsKIAotICAgIE9wdGlvbmFsPFNjcm9sbGluZ05vZGVJ
RD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQ
cm9jZXNzaW5nU3RlcHM+IGxhdGNoZWROb2RlQW5kU3RlcHMoKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gbGF0Y2hlZE5vZGVBbmRT
dGVwcygpIGNvbnN0OwogCiAgICAgdm9pZCBub2RlV2FzUmVtb3ZlZChTY3JvbGxpbmdOb2RlSUQp
OwogICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9kZSgpOwpAQCAtNjMsOCArNjMsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbGF0Y2hlZE5vZGVJc1JlbGV2YW50KCkgY29uc3Q7CiAKICAgICBtdXRhYmxl
IExvY2sgbV9sYXRjaGVkTm9kZUxvY2s7Ci0gICAgT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFBy
b2Nlc3NpbmdTdGVwcz4gbV9sYXRjaGVkTm9kZUFuZFN0ZXBzIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sYXRjaGVkTm9kZUxvY2spOwotICAgIE9wdGlvbmFsPE9wdGlvblNldDxXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzPj4gbV9wcm9jZXNzaW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IG1fbGF0Y2hlZE5v
ZGVBbmRTdGVwcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbGF0Y2hlZE5vZGVMb2NrKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPj4gbV9wcm9j
ZXNzaW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdExh
dGNoZWROb2RlSW50ZXJhdGlvblRpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5k
ZXggMTIwNGYzM2YxZjA2MTY3M2I0OWZiNGE2Nzg4NzhiN2NlOTk2YWZmYi4uY2VjOWZkNGFjM2Iz
NDQ5OWZkNWIwNWM3N2Y0YjIxNTdiYTBlM2VhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApA
QCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmN1cnJl
bnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoU2Nyb2xsVHlwZSwgU2Nyb2xsCiAgICAgc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKCp0aGlzLCBhY3Rpb24pOwogfQogCi1i
b29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91dFZp
ZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UmVj
dD4pCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExh
eW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PikKIHsKICAgICByZXR1cm4gcG9zaXRpb24gPT0gbV9jdXJyZW50U2Nyb2xs
UG9zaXRpb247CiB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAgICAgcmVwb3NpdGlvblJlbGF0ZWRMYXll
cnMoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6d2FzU2Nyb2xsZWRC
eURlbGVnYXRlZFNjcm9sbGluZyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgT3B0aW9uYWw8
RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0LCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjp3YXNTY3JvbGxlZEJ5RGVsZWdhdGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRW
aWV3cG9ydCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uKQogewogICAgIGJvb2wgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkID0gIXNjcm9sbFBv
c2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChwb3NpdGlvbiwgb3ZlcnJpZGVMYXlvdXRWaWV3
cG9ydCk7CiAgICAgaWYgKCFzY3JvbGxQb3NpdGlvbkNoYW5nZWQgJiYgc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbiAhPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaAppbmRleCA1NWJjZWQzZTBlNjEyMTA2ZDkzZjg1MmVlZjdkNDY0MjEwNTI1
NDM4Li5mZWVlZWI0ZDg2MzYzMTNiNzFhMmNmYmUwOTEwZGUyNzlhZTU3M2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHN0b3BTY3JvbGxBbmltYXRpb25zKCkgeyB9OwogCi0gICAgdm9pZCB3YXNTY3JvbGxlZEJ5RGVs
ZWdhdGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBPcHRpb25hbDxGbG9h
dFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQgPSB7IH0sIFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKTsKKyAgICB2b2lk
IHdhc1Njcm9sbGVkQnlEZWxlZ2F0ZWRTY3JvbGxpbmcoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0ID0geyB9
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbjo6U3luYyk7CiAgICAgCiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAgICAgT3B0
aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiBzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsgfQpA
QCAtMTI0LDggKzEyNCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWRq
dXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBT
Y3JvbGxDbGFtcGluZzo6Q2xhbXBlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VycmVu
dFNjcm9sbFBvc2l0aW9uQ2hhbmdlZChTY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyk7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZs
b2F0UmVjdD4gPSB7IH0pIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxQb3NpdGlvbkFuZExh
eW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZs
b2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiA9IHsgfSkgeyB9CisgICAgdmlydHVhbCBib29sIHNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmll
d3BvcnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9z
aXRpb25TY3JvbGxpbmdMYXllcnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJl
bGF0ZWRMYXllcnMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDJlMGU4MzZlNmU0OTVlOTI4MjEw
MGQyZDY4MDc2MjllODYwN2M3NWQuLjJhYzcyMzRjOTcxNTk1Mjg2ODY0NjlhNmFmNTYzNGY1NDA3
NDY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVk
U2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtVwogICAgIHJldHVybiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7CiB9CiAKLWJvb2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVl
OjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgT3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKK2Jvb2wgVGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgc3RkOjpv
cHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFT
U0VSVChTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVudFRocmVhZCgpKTsKIApAQCAtODUsNyArODUs
NyBAQCBib29sIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRQogICAgIHJldHVybiByZXN1bHQud2FzSGFuZGxl
ZDsKIH0KIAotdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQordm9pZCBUaHJlYWRl
ZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bGluZywgc3RyZWFtIDw8ICJUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9j
ZXNzZWRCeU1haW5UaHJlYWQgLSBnZXN0dXJlU3RhdGUgIiA8PCBnZXN0dXJlU3RhdGUpOwogCkBA
IC0yMDIsNyArMjAyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1Ry
ZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2QKICAgICBpZiAoaXNIYW5k
bGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25h
bDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOwogICAgIGlmIChpczxTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlPihub2RlKSkKICAgICAgICAgbGF5b3V0Vmlld3BvcnRPcmlnaW4g
PSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihub2RlKS5sYXlvdXRW
aWV3cG9ydCgpLmxvY2F0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXggNDA0NTFjYWNjMmE2ZjEzZDhj
NGVhZGIzNzczM2YwODQzNmUxYWYyMi4uMjMyMDgyZDVjMWJmNWE5Nzg0MTNiOGIzYzI2MTdhYjJi
Yzk0ZGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGljOgogCiAgICAgV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+KSBvdmVycmlkZTsK
IAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEFmdGVyTWFpblRocmVhZChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPik7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
Pik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4pOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRo
cmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxTZW5kRXZlbnRU
b01haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3YWl0Rm9yRXZlbnRUb0JlUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAppbmRleCBk
Y2IwNzc4YjQ5ZjIxM2U1YmVkYTZjNGE2NTk3YmIwN2M2OWM2ZDc2Li4yYmQ4MWZjODRmMTkwYTYy
NGU2OTJkYWQ2ZTNiMDVjYWZhMjJlMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApAQCAtNDEs
OCArNDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIGZp
bmFsOwogCiAgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBldmVudCBvbiB0aGUgc2Nyb2xsaW5nIHRo
cmVhZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZCBvciBub3QuCi0gICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBm
aW5hbDsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBm
aW5hbDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPikgZmluYWw7CisgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlN
YWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggNTVh
MGI3Y2FmNjY1ZGY5Yzc5ZDE2ODNhYzM2OTgxMWU4NDBkY2Q0OS4uMGJjYmY2OTM2YzAyOTI2YjQ3
YTEzNDJiNTdjMDY5MTUyYTkzYjYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpwYWdlRGVzdHJveWVkKCkK
ICAgICB9KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNj
cm9sbGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4g
Z2VzdHVyZVN0YXRlKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6d2hlZWxFdmVudFdh
c1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkK
IHsKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkICIgPDwgZ2Vz
dHVyZVN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCmluZGV4IGVi
MTA4ZjY0YzUzMmI5NWE3ZjA3ZGIxZTk1MzBlMmRkYjYzYWRjMTEuLjg5ZjMzNmI2ZTljNjA1YzJm
OTQ0OGNkZjFhY2UyMmU3NDhkNjUyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzTW9tZW50
dW1TY3JvbGxpbmcoKTsKIAogICAgIFJldGFpblB0cjxfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I+IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3I7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
bV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9y
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOwogICAgIEZsb2F0UG9pbnQgbV9pbml0aWFsRGVzdGlu
YXRpb25PcmlnaW47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5j
cHAKaW5kZXggNzUxYmEwMTM2YjU4NTJiMDIxMzZlYjM2NmE0MmYwYWMzODUxYjNiYy4uZmM1MTUx
OThlYTJlMWU4ZDgyYmU3ZWViMmIyMjE2MzllNDExODgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOaWNvc2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogICAgIHNjcm9sbGlu
Z1RyZWUoKS0+Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUoc3RhdGVUcmVlKSk7CiB9CiAKLWJvb2wg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRh
cmdldE5vZGUsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUp
Citib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudEZvclNj
cm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05v
ZGVJRCB0YXJnZXROb2RlLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBn
ZXN0dXJlU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9wYWdlKTsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29z
aWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OndoZWVs
RXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRl
KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6
Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAg
UmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gZG93
bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkpOwogICAgIHRocmVh
ZGVkU2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCh3aGVl
bEV2ZW50LCBnZXN0dXJlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lh
LmgKaW5kZXggNGJmM2NmNDQwOGUzZjNkYzgzMGNmZDVlMzAwMTkyNzQwYjZkOGI0OC4uZTY4MzI1
ZTEyODcyNGI2ODI2MTYxNmU1M2VhNjBlZDkyYWY5ZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yTmljb3NpYS5oCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdO
b2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRo
cmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRy
ZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGQ1MDhiNmY5YzhkMzM4MDBiZTM1NmMxM2IwNzZjOGZh
ZWRhM2UyY2MuLjJmODRiM2M5Y2U2MGQ2ZTNjZjg2ZDQwZmYxNTRmN2ZiN2JmY2FhNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpEcmFnSWNvbkJvdHRvbUluc2V0ID0g
MzsKIAogY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7
CiAKLU9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9u
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ewogICAgIC8vIEZJWE1FOiBUbyBtYXRjaCB0aGUgbWFjT1MgYmVoYXZpb3VyIHdlIHNob3VsZCBy
ZXR1cm4gc3RkOjpudWxsb3B0LgogICAgIC8vIElmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2Ug
YXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKaW5kZXggMWQw
Y2Y0NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0MDdmNi4uZTRmZGE4OTdiOTNmMjk4MDdm
YzI5N2Q1MDA2YjJlYjdjYzdiYTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJv
cnRhYmxlVGFza1F1ZXVlLmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSXQg
aXMgYWxsb3dlZCBmb3IgdGhlIG1haW4gdGhyZWFkIHRhc2sgaGFuZGxlciB0byBhYm9ydCB0aGUg
QWJvcnRhYmxlVGFza1F1ZXVlLiBJbiB0aGF0IGNhc2UsIHRoZSByZXR1cm4KICAgICAvLyB2YWx1
ZSBpcyBkaXNjYXJkZWQgYW5kIHRoZSBjYWxsZXIgcmVjZWl2ZXMgYW4gZW1wdHkgb3B0aW9uYWwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUj4KLSAgICBPcHRpb25hbDxSPiBlbnF1ZXVlVGFza0Fu
ZFdhaXQoV1RGOjpGdW5jdGlvbjxSKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQorICAgIHN0
ZDo6b3B0aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0KFdURjo6RnVuY3Rpb248UigpPiYmIG1h
aW5UaHJlYWRUYXNrSGFuZGxlcikKICAgICB7CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRo
ZSBtYWluIHRocmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9hYm9ydGluZykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Uj4g
cmVzcG9uc2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Uj4gcmVzcG9u
c2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZt
YWluVGhyZWFkVGFza0hhbmRsZXJdKCkgewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0g
bWFpblRocmVhZFRhc2tIYW5kbGVyKCk7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCmluZGV4IDVjYmI3MGFl
ZWUxZDZiOTM0MmYyM2E3ZDVkMTgwNDVlNjRkMWEwY2IuLmUyNzU2NzNjY2I0YjIwNmU3OTRhYmQ2
YTI3YTQ0M2M0YzczYzUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQ
VU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3Bw
CkBAIC0zNSw3ICszNSw3IEBAIENQVU1vbml0b3I6OkNQVU1vbml0b3IoU2Vjb25kcyBjaGVja0lu
dGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmIGV4Y2VlZGVkCiB7CiB9CiAKLXZvaWQg
Q1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoY29uc3QgT3B0aW9uYWw8ZG91YmxlPiYgY3B1TGltaXQp
Cit2b2lkIENQVU1vbml0b3I6OnNldENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiYgY3B1TGltaXQpCiB7CiAgICAgaWYgKG1fY3B1TGltaXQgPT0gY3B1TGltaXQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAppbmRleCAwODhkZjU0M2Uw
NDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2Li40MzhlNzI1MTc3MmJlOGU1YTQ3ODEwNWI1
MjBjYmM1ZGVmZmI1YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVN
b25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25p
dG9yKFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxpbWl0KGNvbnN0IE9wdGlvbmFsPGRvdWJs
ZT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwpAQCAt
NDYsOCArNDYsOCBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgbV9jaGVja0ludGVydmFsOwogICAg
IEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXI7CiAgICAg
VGltZXIgbV90aW1lcjsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7Ci0gICAgT3B0
aW9uYWw8Q1BVVGltZT4gbV9sYXN0Q1BVVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fbGFzdENQVVRpbWU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5
cGUuaAppbmRleCBkMjIzMDE4NDdhMjAyMzZhYzA4ZWIxZDBiMzQ1Y2ViNjUzMTgyMjRmLi41M2I1
YjBjMjQzNGJjYzNmMGI4MDBlYzViNzExODU4YTRkYzk0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRlbnRUeXBlLmgKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxDb250ZW50VHlw
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29u
dGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAg
ICAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCA4OTNhOTQ1
MGE1MjNkN2Y3MjNmYmM0NTY2ZjVhNTJkZGY2NDQ3OGU4Li4zNWQ1YmUzOTRiMmE5OTJjM2QyMzcz
ZWUzYjVmOTgyYWM0MjRmYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNDUsNyAr
NDUsNyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBDb29raWUoKSA9IGRlZmF1bHQ7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxDb29raWU+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29va2llJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OwpAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBT
dHJpbmcgcGF0aDsKICAgICAvLyBDcmVhdGlvbiBhbmQgZXhwaXJhdGlvbiBkYXRlcyBhcmUgZXhw
cmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KICAgICBkb3VibGUg
Y3JlYXRlZCB7IDAgfTsKLSAgICBPcHRpb25hbDxkb3VibGU+IGV4cGlyZXM7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGV4cGlyZXM7CiAgICAgYm9vbCBodHRwT25seSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzZWN1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgc2Vzc2lvbiB7IGZhbHNlIH07CkBA
IC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDb29raWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q29va2llPiBDb29r
aWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb29raWU+IENvb2tp
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29va2llIGNvb2tpZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcAppbmRleCA5Yzg4MTVkZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAw
YjRjNmY2NDVjLi5jMDZiNDljM2Y3MGM3MzdkMmJjM2M5OWRhMTBjODY3YjYyMDkzNDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHVuc2lnbmVkIGNv
dW50RGlnaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXIKIH0KIAogLy8gRGlmZmVyZW5jZXMgZnJvbSBw
YXJzZUludGVnZXI8aW50PjogVGFrZXMgU3RyaW5nUGFyc2luZ0J1ZmZlci4gRG9lcyBub3QgYWxs
b3cgbGVhZGluZyBvciB0cmFpbGluZyBzcGFjZXMuIERvZXMgbm90IGFsbG93IGxlYWRpbmcgIisi
LgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGludD4g
cGFyc2VJbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNp
Z25lZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZUludChTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIHVuc2lnbmVkIG1heGltdW1OdW1iZXJP
ZkRpZ2l0c1RvUGFyc2UpCiB7CiAgICAgaWYgKG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2Ug
PiBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgfHwgIW1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFy
c2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjgsNyArMTI4LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VJ
bnQoU3RyaW5nUGFyc2luZ0J1ZmYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSW50V2l0aGlu
TGltaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgdW5zaWdu
ZWQgbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSwgaW50IG1pbmltdW1WYWx1ZSwgaW50IG1h
eGltdW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGludD4gcGFyc2VJbnRXaXRoaW5MaW1pdHMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1Bh
cnNlLCBpbnQgbWluaW11bVZhbHVlLCBpbnQgbWF4aW11bVZhbHVlKQogewogICAgIGF1dG8gdmFs
dWUgPSBwYXJzZUludChidWZmZXIsIG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpOwogICAg
IGlmICghKHZhbHVlICYmICp2YWx1ZSA+PSBtaW5pbXVtVmFsdWUgJiYgKnZhbHVlIDw9IG1heGlt
dW1WYWx1ZSkpCkBAIC0xODcsMTIgKzE4NywxMiBAQCBzdGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0
ZUxpbWl0cyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXksIGludCBob3VyLCBpbgog
ICAgIHJldHVybiAhaG91ciAmJiAhbWludXRlICYmICFzZWNvbmQgJiYgIW1pbGxpc2Vjb25kOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3VyY2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQor
dGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3VyY2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQog
ewogICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzb3VyY2UsIFsmXShhdXRv
IGJ1ZmZlcikgLT4gT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHsKKyAgICByZXR1cm4gcmVhZENo
YXJhY3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiB7CiAgICAgICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAgICAg
ICAgIGlmICghcGFyc2VGdW5jdGlvbihidWZmZXIsIGRhdGUpIHx8ICFidWZmZXIuYXRFbmQoKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMDAsMzUgKzIwMCwzNSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0
ZUZyb21TdHJpbmcoU3RyaW5nVmlldwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyBzb3VyY2Up
CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbVBhcnNp
bmdNb250aChTdHJpbmdWaWV3IHNvdXJjZSkKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVN0cmlu
Zyhzb3VyY2UsIFtdIChhdXRvJiBidWZmZXIsIGF1dG8mIGRhdGUpIHsKICAgICAgICAgcmV0dXJu
IGRhdGUucGFyc2VNb250aChidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZShTdHJpbmdWaWV3IHNvdXJj
ZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFy
c2luZ0RhdGUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJp
bmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVy
biBkYXRlLnBhcnNlRGF0ZShidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nV2VlayhTdHJpbmdWaWV3IHNvdXJj
ZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFy
c2luZ1dlZWsoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJp
bmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVy
biBkYXRlLnBhcnNlV2VlayhidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nVGltZShTdHJpbmdWaWV3IHNvdXJj
ZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFy
c2luZ1RpbWUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJp
bmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVy
biBkYXRlLnBhcnNlVGltZShidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZVRpbWVMb2NhbChTdHJpbmdW
aWV3IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRz
Ojpmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRl
KSB7CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlRGF0ZVRpbWVMb2NhbChidWZmZXIpOwpAQCAt
NDUxLDggKzQ1MSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0
ZUNvbXBvbmVudHM6OnBhcnNlVGltZShTdHJpbmdQYXJzaW5nQnVmCiAKICAgICAvLyBPcHRpb25h
bCBzZWNvbmQgcGFydC4KICAgICAvLyBEbyBub3QgcmV0dXJuIHdpdGggZmFsc2UgYmVjYXVzZSB0
aGUgcGFydCBpcyBvcHRpb25hbC4KLSAgICBPcHRpb25hbDxpbnQ+IHNlY29uZDsKLSAgICBPcHRp
b25hbDxpbnQ+IG1pbGxpc2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzZWNvbmQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1pbGxpc2Vjb25kOwogCiAgICAgYXV0byB0ZW1wb3JhcnlC
dWZmZXIgPSBidWZmZXI7CiAgICAgaWYgKHNraXBFeGFjdGx5KHRlbXBvcmFyeUJ1ZmZlciwgJzon
KSkgewpAQCAtNTIwLDcgKzUyMCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHBvc2l0aXZlRm1v
ZChkb3VibGUgdmFsdWUsIGRvdWJsZSBkaXZpZGVyKQogICAgIHJldHVybiByZW1haW5kZXIgPCAw
ID8gcmVtYWluZGVyICsgZGl2aWRlciA6IHJlbWFpbmRlcjsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgRj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBjcmVhdGVGcm9tVGltZU9mZnNl
dChkb3VibGUgdGltZU9mZnNldCwgRiYmIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgRj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21UaW1lT2Zmc2V0
KGRvdWJsZSB0aW1lT2Zmc2V0LCBGJiYgZnVuY3Rpb24pCiB7CiAgICAgRGF0ZUNvbXBvbmVudHMg
cmVzdWx0OwogICAgIGlmICghZnVuY3Rpb24ocmVzdWx0LCB0aW1lT2Zmc2V0KSkKQEAgLTUyOCw0
MiArNTI4LDQyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRpYyBPcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gY3JlYXRlRnJvbVRpbWVPZmZzZXQoZG91YmxlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlz
ZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0
ZShkb3VibGUgbXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21UaW1lT2Zmc2V0KG1zLCBbXSAo
YXV0byYgZGF0ZSwgYXV0byBtcykgewogICAgICAgICByZXR1cm4gZGF0ZS5zZXRNaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yRGF0ZShtcyk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRl
VGltZUxvY2FsKGRvdWJsZSBtcykKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVD
b21wb25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91
YmxlIG1zKQogewogICAgIHJldHVybiBjcmVhdGVGcm9tVGltZU9mZnNldChtcywgW10gKGF1dG8m
IGRhdGUsIGF1dG8gbXMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaEZvckRhdGVUaW1lTG9jYWwobXMpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRl
Q29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
TW9udGgoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBv
bmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKQogewog
ICAgIHJldHVybiBjcmVhdGVGcm9tVGltZU9mZnNldChtcywgW10gKGF1dG8mIGRhdGUsIGF1dG8g
bXMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1v
bnRoKG1zKTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21w
b25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1zKQorc3Rk
OjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yV2Vlayhkb3VibGUgbXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21U
aW1lT2Zmc2V0KG1zLCBbXSAoYXV0byYgZGF0ZSwgYXV0byBtcykgewogICAgICAgICByZXR1cm4g
ZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhtcyk7CiAgICAgfSk7CiB9CiAK
LU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25k
c1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4g
RGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykK
IHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVRpbWVPZmZzZXQobXMsIFtdIChhdXRvJiBkYXRlLCBh
dXRvIG1zKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmln
aHQobXMpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBv
bmVudHM6OmZyb21Nb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpCitzdGQ6Om9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1vbnRoc1NpbmNlRXBvY2goZG91
YmxlIG1vbnRocykKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVRpbWVPZmZzZXQobW9udGhzLCBb
XSAoYXV0byYgZGF0ZSwgYXV0byBtb250aHMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TW9u
dGhzU2luY2VFcG9jaChtb250aHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGF0ZUNvbXBvbmVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmgKaW5kZXggMGE5MDIzMTAzMDUyNjdlOWExNDFiMzFjMDhhN2RhYTQyNDQzN2NkYS4uYWE5
NThkNDIxNDRmNGNiNjdmZDM5NzZhNjI0NGE1NGFmMmZmNGRhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oCkBAIC04NywzMSArODcsMzEgQEAgcHVibGljOgogICAg
IFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQgPSBTZWNvbmRGb3JtYXQ6Ok5vbmUpIGNvbnN0
OwogCiAgICAgLy8gU2V0cyB5ZWFyIGFuZCBtb250aC4KLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyk7
CiAgICAgLy8gU2V0cyB5ZWFyLCBtb250aCBhbmQgbW9udGhEYXkuCi0gICAgc3RhdGljIE9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ0RhdGUoU3RyaW5nVmlldyk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nRGF0ZShTdHJpbmdW
aWV3KTsKICAgICAvLyBTZXRzIHllYXIgYW5kIHdlZWsuCi0gICAgc3RhdGljIE9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ1dlZWsoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nV2VlayhTdHJpbmdWaWV3KTsK
ICAgICAvLyBTZXRzIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWxsaXNlY29uZC4KLSAgICBz
dGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nVGltZShTdHJpbmdWaWV3
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbVBhcnNpbmdU
aW1lKFN0cmluZ1ZpZXcpOwogICAgIC8vIFNldHMgeWVhciwgbW9udGgsIG1vbnRoRGF5LCBob3Vy
LCBtaW51dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQuCi0gICAgc3RhdGljIE9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoU3RyaW5nVmlldyk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nRGF0ZVRpbWVM
b2NhbChTdHJpbmdWaWV3KTsKIAogCiAgICAgLy8gRm9yIERhdGUgdHlwZS4gVXBkYXRlcyBtX3ll
YXIsIG1fbW9udGggYW5kIG1fbW9udGhEYXkuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1zKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1Np
bmNlRXBvY2hGb3JEYXRlKGRvdWJsZSBtcyk7CiAgICAgLy8gRm9yIERhdGVUaW1lTG9jYWwgdHlw
ZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUs
IG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJs
ZSBtcyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChkb3VibGUgbXMpOwogICAgIC8vIEZv
ciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQgbV9tb250aC4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgo
ZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJv
bU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChkb3VibGUgbXMpOwogICAgIC8vIEZvciBX
ZWVrIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBtX3dlZWsuCi0gICAgc3RhdGljIE9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91Ymxl
IG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxp
c2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcyk7CiAKICAgICAvLyBGb3IgVGltZSB0
eXBlLiBVcGRhdGVzIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25k
LgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1Np
bmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKIAogICAg
IC8vIEFub3RoZXIgaW5pdGlhbGl6ZXIgZm9yIE1vbnRoIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFu
ZCBtX21vbnRoLgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1vbnRo
c1NpbmNlRXBvY2goZG91YmxlIG1vbnRocyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IGZyb21Nb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpOwogCiAgICAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIDE5NzAtMDEtMDEgMDA6
MDA6MDAgVVRDLgogICAgIC8vIEZvciBhIERhdGVDb21wb25lbnRzIGluaXRpYWxpemVkIHdpdGgg
cGFyc2VEYXRlVGltZUxvY2FsKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKaW5kZXggMjNhMzM4NmJiNTgwNmJhYmRjN2EwOTk4
ZDcxZWViZDc5NGI4MGUxZi4uYTQyYzI5N2NmZTRjZmY0OTA3NWU2ODdmNTk2ZDJlNjdjY2VhYzc4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBh
cmFtZXRlcnMuaApAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycyB7CiAgICAgYm9vbCBoYXNNaWxsaXNlY29uZEZpZWxkIHsgZmFsc2UgfTsKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnM+IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzPiBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBB
dG9tU3RyaW5nIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCA1NWFiZDU2OTk2ZDhkNTM4NWFhN2M2OTA2MjFi
NDljZmRmZTRkNTZkLi5mMzI1NzMyMzRmYTAzZWNjNzYzZDk2YzMwYjZhOTUyYzE2NDQ1ZjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0Rh
dGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBP
cHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50
UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwg
bV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00NCw3ICs0NCw3IEBAIERyYWdEYXRhOjpEcmFn
RGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9u
U2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBs
aWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrLCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
CiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpAQCAt
NTgsNyArNTgsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludAogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+IERyYWdEYXRhOjpjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0pOworICAgIHJldHVybiBQYWdlUGFzdGVib2Fy
ZENvbnRleHQ6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB7IG1fcGFnZUlE
IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaAppbmRleCBkOWNjNmFlM2M3YmRjN2MzZjkxMzdhODY2MzI2ODUzNmQ3YzMwZjI1Li42NjAw
ZGZhN2IxODllMTVmYWI3ZmI3OTZmNjZlZjFhNzlkY2QyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmgKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBE
cmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBGb3JDb2xvckNvbnRy
b2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlv
biBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkg
YXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRp
b25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBz
dGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25T
ZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0
YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0
PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9u
U2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwg
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAg
ICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVj
YXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBu
b3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwogI2lmIFBM
QVRGT1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1h
cCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywg
T3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgY29uc3QgRHJhZ0RhdGFNYXAmIGRyYWdEYXRhTWFwKCk7CiAgICAgdm9pZCBnZXREcmFnRmls
ZURlc2NyaXB0b3JEYXRhKGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSk7CiAgICAgdm9pZCBn
ZXREcmFnRmlsZUNvbnRlbnREYXRhKGludCBzaXplLCB2b2lkKiBkYXRhQmxvYik7CkBAIC0xMTQs
NyArMTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNQcm9taXNlKCkgY29uc3Q7CiAj
ZW5kaWYKIAotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJRDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3Q7CiAKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFn
cz4gbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwog
ICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzazsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CisgICAgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCmluZGV4IDE5MzlmYjkwYzIyNTY0ZDAyY2FkZjY1YmRhZjdmNjVjY2I3
Y2U5YTcuLjkwMzQyOGYzZWE2NDMzYTcwZGMxYjhkNTU4MDFlMzc3NDY1OTZjMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0cnVjdCBT
Y29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKICAgICB9CiAKICAgICBjb25zdCBGcmFtZSYgZnJh
bWU7Ci0gICAgT3B0aW9uYWw8UmVuZGVyUmFuZ2U+IHNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlbmRlclJhbmdlPiBzZWxlY3Rpb247CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGVhN2IzMWVlN2EyZDU4MzZm
ZWRiMTliZWY2ZGQ3OWJkZjFhOTZhMzUuLmMxM2EzYzA1MWJiNjRkYzViZTZjYjM4M2FkYzEwMjA5
NGY0NmJmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0xMDksMTkgKzEw
OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRvckRhdGEoY29uc3QgVGV4dElu
ZGljYXRvckRhdGEmIGRhdGEpIHsgbV9pbmRpY2F0b3JEYXRhID0gZGF0YTsgfQogICAgIGJvb2wg
aGFzSW5kaWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbmRpY2F0b3JEYXRhOyB9Ci0g
ICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2luZGljYXRvckRhdGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JE
YXRhPiBpbmRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2F0b3JEYXRhOyB9CiAK
ICAgICB2b2lkIHNldFZpc2libGVQYXRoKGNvbnN0IFBhdGgmIHBhdGgpIHsgbV92aXNpYmxlUGF0
aCA9IHBhdGg7IH0KICAgICBib29sIGhhc1Zpc2libGVQYXRoKCkgY29uc3QgeyByZXR1cm4gISFt
X3Zpc2libGVQYXRoOyB9Ci0gICAgT3B0aW9uYWw8UGF0aD4gdmlzaWJsZVBhdGgoKSBjb25zdCB7
IHJldHVybiBtX3Zpc2libGVQYXRoOyB9CisgICAgc3RkOjpvcHRpb25hbDxQYXRoPiB2aXNpYmxl
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVBhdGg7IH0KIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZHJhZ0ltYWdlUmVmOyB9CiAgICAgRHJh
Z0ltYWdlUmVmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0ltYWdlUmVmOyB9CiAKIHByaXZh
dGU6CiAgICAgRHJhZ0ltYWdlUmVmIG1fZHJhZ0ltYWdlUmVmOwotICAgIE9wdGlvbmFsPFRleHRJ
bmRpY2F0b3JEYXRhPiBtX2luZGljYXRvckRhdGE7Ci0gICAgT3B0aW9uYWw8UGF0aD4gbV92aXNp
YmxlUGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBtX2luZGljYXRv
ckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQYXRoPiBtX3Zpc2libGVQYXRoOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKaW5kZXggMWQxZjJhNzg5NWJlMTA0ODA5YzQ4YzRk
ZGM4NjhjNWJmZGRkMzhhYy4uMDBmMGNiZDk1OTk0YWNkNzhkZjJmNjI2MDEyNzNhNzllMjhjMGU0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBEcmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZSBwb3Np
dGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAgICAgRmxvYXRQb2ludCBpbWFnZUFuY2hv
clBvaW50OwogCi0gICAgT3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4gc291cmNlQWN0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4gc291cmNlQWN0aW9uOwogICAgIElu
dFBvaW50IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBJbnRQb2ludCBk
cmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBJbnRQb2ludCBkcmFnTG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzOwpAQCAtOTcsNyArOTcsNyBAQCBib29sIERyYWdJdGVtOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0luZGljYXRvckRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGhhc0luZGljYXRvckRhdGEpIHsKLSAgICAgICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRh
dGE+IGluZGljYXRvckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRh
dGE+IGluZGljYXRvckRhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaW5kaWNhdG9yRGF0YTsKICAg
ICAgICAgaWYgKCFpbmRpY2F0b3JEYXRhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTA3LDcgKzEwNyw3IEBAIGJvb2wgRHJhZ0l0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBE
cmFnSXRlbSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVmlzaWJsZVBhdGgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc1Zpc2libGVQYXRoKSB7Ci0gICAg
ICAgIE9wdGlvbmFsPFBhdGg+IHZpc2libGVQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBh
dGg+IHZpc2libGVQYXRoOwogICAgICAgICBkZWNvZGVyID4+IHZpc2libGVQYXRoOwogICAgICAg
ICBpZiAoIXZpc2libGVQYXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCAyODQ1YmZkMjZhM2ViMWUyNTJhOWRjNDcz
MzRiNDc3YmNhZWU4NzU3Li4wYzk4MGFhYjA2ZmMzMThjNDYzODEyYWYwNzQxODVjNmY5MTczYzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBGaWxlU3RyZWFtOjp+RmlsZVN0cmVhbSgpCiAgICAgY2xvc2UoKTsKIH0KIAotbG9uZyBsb25n
IEZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBPcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorbG9uZyBsb25nIEZpbGVTdHJlYW06OmdldFNp
emUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgLy8gQ2hlY2sgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZv
ciB0aGUgcG9zc2libGUgZmlsZSBjaGFuZ2UuCiAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0g
RmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmgKaW5kZXggNWU1ZWUwZTAyNGJlNjUyMDE3MWI0YTcwYmIwODYwODdlYmVj
MGY1MS4uZGYyMjRjZjA3ZjQ0MjhmYmRlOTE1ZjJhZmQ0NmI4MDk2NDI0YTljMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgZmlsZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUg
aGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1l
IGlzIHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJvLgogICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVy
IG9mIGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0xIG90aGVyd2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0
U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
c3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKIAogICAg
IC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRpbmcgc3RhcnRzIGF0IHRoZSBz
cGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLgogICAg
IC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhlcndpc2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggMGVhYWUwYTUyZjljYWM3MjQ5MzM1ZTE3NWQ3MmI0
MTRiN2MyZGJmNC4uZjZjY2UyZWRjOGQ2Y2Y0NzA1OTg1NzA5YjYwOTUxOGZhZmVjOTNmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSA9
IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCkgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaAppbmRl
eCBiZjdkYTEzMjlmM2EzYjAyYWE5MDJmYTIwODZiYTQ1NDE5YTdmODdmLi44ZWY1MzE5NGIzZDM1
OWFmNzg4NjEwYWFkZGI0NmY1NTgxZGExODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgSW1h
Z2VFeHRyYWN0aW9uVGV4dERhdGEgewogICAgIEZsb2F0UXVhZCBub3JtYWxpemVkUXVhZDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0
aW9uVGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uVGV4dERhdGE+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEltYWdlRXh0cmFj
dGlvblRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTU4LDE0ICs1
OCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEltYWdlRXh0cmFjdGlvblRleHRE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgYwogICAgIGVuY29kZXIgPDwgbm9ybWFsaXpl
ZFF1YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEltYWdlRXh0cmFj
dGlvblRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFj
dGlvblRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1h
bGl6ZWRRdWFkOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsK
ICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NCw3ICs4NCw3IEBAIHN0cnVjdCBJ
bWFnZUV4dHJhY3Rpb25MaW5lRGF0YSB7CiAgICAgVmVjdG9yPEltYWdlRXh0cmFjdGlvblRleHRE
YXRhPiBjaGlsZHJlbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8SW1hZ2VFeHRyYWN0aW9uTGluZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9u
TGluZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQpAQCAtMTA5LDE0ICsxMDksMTQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJ
bWFnZUV4dHJhY3Rpb25MaW5lRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGMKICAgICBl
bmNvZGVyIDw8IGNoaWxkcmVuOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25h
bDxJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VFeHRyYWN0aW9uTGluZURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25h
bDxJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VFeHRyYWN0aW9uTGluZURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UXVhZD4gbm9ybWFsaXpl
ZFF1YWQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1hbGl6ZWRRdWFkOwogICAg
IGRlY29kZXIgPj4gbm9ybWFsaXplZFF1YWQ7CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFnZUV4
dHJhY3Rpb25UZXh0RGF0YT4+IGNoaWxkcmVuOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElt
YWdlRXh0cmFjdGlvblRleHREYXRhPj4gY2hpbGRyZW47CiAgICAgZGVjb2RlciA+PiBjaGlsZHJl
bjsKICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBJbWFnZUV4dHJhY3Rpb25SZXN1bHQgewogICAgIH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0
aW9uUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFjdGlvblJlc3VsdD4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW1hZ2VFeHRyYWN0aW9u
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTE1NiwxNSArMTU2LDE1
IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uUmVzdWx0PiBJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25SZXN1bHQ+IEltYWdlRXh0cmFjdGlvblJlc3Vs
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdl
RXh0cmFjdGlvbkxpbmVEYXRhPj4gbGluZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VFeHRyYWN0aW9uTGluZURhdGE+PiBsaW5lczsKICAgICBkZWNvZGVyID4+IGxpbmVzOwogICAg
IGlmICghbGluZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCi0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFjdGlvbkRhdGFE
ZXRlY3RvckluZm8+PiBkYXRhRGV0ZWN0b3JzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElt
YWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+PiBkYXRhRGV0ZWN0b3JzOwogICAgIGRlY29k
ZXIgPj4gZGF0YURldGVjdG9yczsKICAgICBpZiAoIWRhdGFEZXRlY3RvcnMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaAppbmRleCA0YmEw
NTI0NmY3ZWM4NTMzOGU2ODc1MDg1OWVmZjBmMGNhOWIzNDhkLi5hODJiZmEwNDg0ZjBlNWI4NDNh
ODQ2MmUyN2E1ZDcyZWU2NzJhYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MaW5rSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKQEAg
LTM3LDcgKzM3LDcgQEAgc3RydWN0IExpbmtJY29uIHsKICAgICBVUkwgdXJsOwogICAgIExpbmtJ
Y29uVHlwZSB0eXBlOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaXplOwogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhdHRyaWJ1dGVzOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmgKaW5kZXggZDRiMDI5ZjIyMzk3MmI3M2E3YTk5
NzgxZDJjYzE0ZTcyMmFmMzRjMy4uYjRiMjBhYjY1ZmFiZGE2MDBjOTQ5YTkzOTc2M2U0OGViYmJj
ZTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCkBA
IC0zOCw3ICszOCw3IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwog
Ym9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxMb2dDaGFubmVsc1RvQWNjdW11bGF0ZSgpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRp
b25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpu
dWxsb3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggOGNmMDE4N2M3NzAzNDg0
ODg1NzZmZGVmZWQ4N2ZiMzMwNGNlZWI5NC4uNjFmZThkMzc1MjE1ODNkMmQ0NjUxOTM4MDUwMjg1
ZjNjNDM1Nzc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBjbGVhckFsbExvZ0NoYW5uZWxzVG9BY2N1bXVsYXRlKCkKICAgICBsb2dDaGFu
bmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CiB9CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5nPiBsb2dDaGFubmVsU3RyaW5nKQordm9p
ZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bG9nQ2hhbm5lbFN0cmluZykKIHsKICAgICBpZiAoIWxvZ0NoYW5uZWxzTmVlZEluaXRpYWxpemF0
aW9uICYmICFsb2dDaGFubmVsU3RyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaApp
bmRleCAxNTVjOWQ1MWYyNjhkMTRkYmE0NjY5M2I5OThjMjA1MTA3NGU2NDU1Li5kZjQ3N2Y0NGYz
YmVkMzRkY2I4ZGQzZjE5NTA1MGM1NmNiY2NjNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvIDogTWVkaWFDYXBh
YmlsaXRpZXNJbmZvIHsKICAgICBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiBzdXBwb3J0ZWRD
b25maWd1cmF0aW9uOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFi
aWxpdGllc0RlY29kaW5nSW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CkBAIC02MCwxMyArNjAsMTMgQEAgdm9pZCBNZWRpYUNhcGFiaWxpdGllc0Rl
Y29kaW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4g
TWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gTWVkaWFDYXBhYmls
aXRpZXNEZWNvZGluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8g
aW5mbyA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICgh
aW5mbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE1lZGlh
RGVjb2RpbmdDb25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOworICAgIHN0ZDo6
b3B0aW9uYWw8TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRp
b247CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGlmICghc3Vw
cG9ydGVkQ29uZmlndXJhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0VuY29kaW5n
SW5mby5oCmluZGV4IDkxNTg3YmIzOWExNGYwNjEzOWZmZDUyMTE1YWQ0MWJkN2MzZWQ5MTYuLjNh
Y2Y1OWY2OTYzZmU5MDU1NTgzYzlkZDZhZjRlMTFmNDU3NGE2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8uaApA
QCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8gOiBN
ZWRpYUNhcGFiaWxpdGllc0luZm8gewogICAgIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uIHN1
cHBvcnRlZENvbmZpZ3VyYXRpb247CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1l
ZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTYwLDEzICs2MCwxMyBAQCB2b2lkIE1lZGlhQ2FwYWJp
bGl0aWVzRW5jb2RpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2Rp
bmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBNZWRp
YUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8TWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29u
ZmlndXJhdGlvbjsKICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAg
aWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApp
bmRleCA3NzE1YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQwZGZmNzAyMDVlNWI1Li4wNDAyMjMxMDYw
MzExMDk0ODE0MjJkNDJkZmYwMDk5ZWMzNzc2OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApAQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3Qg
TWVkaWFDYXBhYmlsaXRpZXNJbmZvIHsKICAgICBib29sIHBvd2VyRWZmaWNpZW50IHsgZmFsc2Ug
fTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFD
YXBhYmlsaXRpZXNJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NywxOSArNDcs
MTkgQEAgdm9pZCBNZWRpYUNhcGFiaWxpdGllc0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydGVkOwogICAgIGRlY29k
ZXIgPj4gc3VwcG9ydGVkOwogICAgIGlmICghc3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc21vb3RoOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc21vb3RoOwogICAgIGRlY29kZXIgPj4gc21vb3RoOwogICAgIGlmICghc21vb3Ro
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcG93
ZXJFZmZpY2llbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwb3dlckVmZmljaWVudDsKICAg
ICBkZWNvZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAgIGlmICghcG93ZXJFZmZpY2llbnQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1w
bGUuaAppbmRleCAwMmRmNzljNjEwMGNhYzRmZmFlZmM5N2IyNDQ1ZjVjZjVhOWNkYmJmLi44ZGE2
MDM3Nzg4MjQzMzMwYWUyNTBkOWMxMGM3MmVlMDU4OGU3NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBzaXpl
X3QgYnl0ZU9mZnNldCB7IDAgfTsKICAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggeyAwIH07CiAg
ICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNv
bnN0ID0gMDsKIAogICAgIGVudW0gY2xhc3MgVmlkZW9Sb3RhdGlvbiB7CiAgICAgICAgIE5vbmUg
PSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXgg
YWIyZTQwYzE4YjAxYWRiMTUzYWM4NTY0YTEyZGI2YTcwMDFhMDQ3Zi4uZDU2YzMyOGIxNTNmNTRj
MjM2YmZlYTJlMDJhNGM2OWVlNzhmM2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9O
b3dQbGF5aW5nTWFuYWdlci5oCkBAIC02NywxMiArNjcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGVuc3VyZVJlbW90ZUNvbW1hbmRMaXN0ZW5lckNyZWF0ZWQoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKICAgICBX
ZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Ci0gICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1f
bm93UGxheWluZ0luZm87CisgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQ
bGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNy
YzsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07Ci0gICAg
T3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKKyAgICBzdGQ6
Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5aW5nSW5mb0FydHdvcms7CiAgICAgYm9v
bCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggOGM1ZDYxNTk2YjMxZTAzZWEz
NWE0ODA1MWIzNjMyYmY5NGVmMmE1NS4uMDQzOWM4MTg4MWRiNzc0MDU2MWM0ODQ3NGI3N2Y0MDVj
ODdjZGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb20odGhp
cy0+cm9vdCgpLCBhZGFwdGVyKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxJbnRlcnZhbFR5cGU+
IG5leHRJbnRlcnZhbEFmdGVyKGNvbnN0IFQmIHBvaW50KQorICAgIHN0ZDo6b3B0aW9uYWw8SW50
ZXJ2YWxUeXBlPiBuZXh0SW50ZXJ2YWxBZnRlcihjb25zdCBUJiBwb2ludCkKICAgICB7CiAgICAg
ICAgIGF1dG8gbmV4dCA9IHNtYWxsZXN0Tm9kZUdyZWF0ZXJUaGFuRnJvbShwb2ludCwgdGhpcy0+
cm9vdCgpKTsKICAgICAgICAgaWYgKCFuZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcAppbmRleCAyNjEwNGY0M2JkYTYyMWZkYjMxNDIzNzg3YTNkYTU5ZWJhYjZkMTQ0Li4x
NTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtNjIsNyArNjIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCiAKICNlbmRpZgog
Ci1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFzdGVib2FyZDo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJ
dGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0CiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQpAQCAtNzEsNyArNzEsNyBAQCBPcHRpb25h
bDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3Qg
aW5kZXgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2Fy
ZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5k
ZXggMDVjNmFmZTQ1N2ZmOWU5MWRmYjE5MjVlMjQ4YTc3NDFjOWM1NjgyZS4uN2QyNDdkY2QxYTE2
ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaApAQCAtMjEzLDkgKzIxMyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0g
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5
ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVt
SW5kZXggPSBzdGQ6Om51bGxvcHQpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRl
eCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5Xcml0ZVRydXN0d29ydGh5
V2ViVVJMc1Bib2FyZFR5cGUoKTsKIApAQCAtMjkyLDggKzI5Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVSTCYpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxWZWN0b3I8UGFz
dGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0
aWVzKCkgY29uc3Q7Ci0gICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8
c2l6ZV90Pik7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+KTsKIAogICAgIGVudW0gY2xhc3MgUmVhZGVyUmVzdWx0IHsKICAgICAgICAgUmVh
ZFR5cGUsCkBAIC0zMTksNyArMzE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlUmFuZ2VU
b0RhdGFPYmplY3QoY29uc3QgU2ltcGxlUmFuZ2UmLCBGcmFtZSYpOyAvLyBGSVhNRTogTGF5ZXJp
bmcgdmlvbGF0aW9uLgogICAgIHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dFRvRGF0YU9iamVjdChjb25z
dCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOwotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRD
dXN0b21EYXRhPiByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMzQsMTQgKzMzNCwxNCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwogCiAjaWYg
UExBVEZPUk0oR1RLKQotICAgIE9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKICAg
ICBTdHJpbmcgbV9uYW1lOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJp
bmcgbV9wYXN0ZWJvYXJkTmFtZTsKICAgICBpbnQ2NF90IG1fY2hhbmdlQ291bnQ7Ci0gICAgT3B0
aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hlOworICAgIHN0ZDo6
b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hlOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMzMxMGQwYjMzMGVlNTg3MDUxYjc3OTQ5YzAzYzEw
ZDBhMjYyY2VlZi4uZWJkNDU2NzA3MmUwMWMzMjFkMmM3ODQ2MWM3NzM2MDU5NjhlYTczOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApA
QCAtOTcsMjMgKzk3LDIzIEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgY29uc3RleHBy
IHVuc2lnbmVkIG1heFN1cHBvcnRlZERhdGFTZXJpYWxpemF0aW9uVmVyc2lvbk51bWJlciA9IDE7
CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSByZXN1bHQ7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVyc2lvbjsKICAgICBk
ZWNvZGVyID4+IHZlcnNpb247CiAgICAgaWYgKCF2ZXJzaW9uIHx8ICp2ZXJzaW9uID4gbWF4U3Vw
cG9ydGVkRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uTnVtYmVyKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG9yaWdpbjsKICAgICBkZWNvZGVyID4+IG9yaWdpbjsKICAgICBpZiAoIW9yaWdpbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICByZXN1bHQubV9vcmlnaW4gPSBXVEZNb3ZlKCpvcmlnaW4p
OwogCi0gICAgT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHNhbWVPcmlnaW5DdXN0
b21TdHJpbmdEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+
IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhOwogICAgIGRlY29kZXIgPj4gc2FtZU9yaWdpbkN1
c3RvbVN0cmluZ0RhdGE7CiAgICAgaWYgKCFzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBvcmRlcmVk
VHlwZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gb3JkZXJlZFR5cGVzOwog
ICAgIGRlY29kZXIgPj4gb3JkZXJlZFR5cGVzOwogICAgIGlmICghb3JkZXJlZFR5cGVzKQogICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRl
bUluZm8uaAppbmRleCBiMWM3ZDQ3OGYzNzFmNmNjY2Q1NGFkZWZkNjc4ZWEyZDdhNzYyZTBmLi4x
ZTViYzI5M2FkYmNlOWMzYjQzOGU4NTEzZmM5NWUyNTI5NTgwYjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaApAQCAtMzgsMTEgKzM4LDExIEBAIGVu
dW0gY2xhc3MgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSB7CiB9OwogCiBzdHJ1Y3Qg
UHJlc2VudGF0aW9uU2l6ZSB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB3aWR0aDsKLSAgICBPcHRp
b25hbDxkb3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmVz
ZW50YXRpb25TaXplPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBQcmVzZW50YXRpb25TaXplOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPFByZXNlbnRhdGlvblNpemU+IFByZXNlbnRhdGlvblNpemU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcmVzZW50YXRpb25TaXplPiBQcmVzZW50YXRpb25TaXpl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQcmVzZW50YXRpb25TaXplIHJlc3Vs
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aWR0aCkpCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5m
bzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBQYXN0ZWJvYXJkSXRlbUluZm8gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnBhdGhzRm9yRmlsZVVwbG9hZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCmluZGV4IDJjYzliMDA0ZmE3MzNmMjM2NDM0Njg2MjJmYWJjYTUxMzcy
MWJjMTIuLjFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC03Myw4ICs3Myw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggZWQyZWVlZjA5MGNjNmE3MGJjNDAx
ZWUwZWIzMDM4ZDZmOGZjNzdkOS4uZmNlNGNhZGIxMGY4ODFjYmRmYTBiNzY2ZTFkOGIxZTkyM2E0
YWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKLSAgICBjb25z
dCBPcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWlu
VGV4dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhaW5UZXh0PiYgcGxhaW5UZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9wbGFpblRleHQ7IH0KICAgICB2b2lkIHNldFBsYWluVGV4dChQbGFp
blRleHQpOwogCiAgICAgc3RydWN0IFVSTERhdGEgewpAQCAtNzYsMTYgKzc2LDE2IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH07CiAKLSAgICBjb25zdCBPcHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxE
YXRhPiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgdm9pZCBzZXRVUkxE
YXRhKFVSTERhdGEpOwogCi0gICAgY29uc3QgT3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvbnRlbnQ+JiB3ZWJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb250ZW50
OyB9CiAgICAgdm9pZCBzZXRXZWJDb250ZW50KFdlYkNvbnRlbnQpOwogCiBwcml2YXRlOgotICAg
IE9wdGlvbmFsPFBsYWluVGV4dD4gbV9wbGFpblRleHQ7Ci0gICAgT3B0aW9uYWw8VVJMRGF0YT4g
bV91cmw7Ci0gICAgT3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OworICAgIHN0ZDo6
b3B0aW9uYWw8UGxhaW5UZXh0PiBtX3BsYWluVGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERh
dGE+IG1fdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRF
dmVudC5jcHAKaW5kZXggNWFhOWZjODUyMDZmZjE2NzE5MTRhZjIyNmY1OGU4NzJlNThlZDRlYi4u
YzE3OTljYzY3YzU3OTE0Y2MwMjZlYmYyMzAxZjY0MWQ1MmM1ODJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8T3B0aW9uU2V0PFBsYXRm
b3JtRXZlbnQ6Ok1vZGlmaWVyPj4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzX2N1cnJlbnRNb2Rp
ZmllcnM7ICAgIAorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZp
ZXI+PiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNfY3VycmVudE1vZGlmaWVyczsgICAgCiAKIHZv
aWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShPcHRpb25T
ZXQ8TW9kaWZpZXI+IG1vZGlmaWVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKaW5kZXggMWExMzY3ZjdhOWRmMGFiMWFjZTE2ZDAzNjVl
NTVmNjUzOGQwY2JkNi4uZjkwZjFkYWQ2YjdiNGU2NzAzNzQ1YzljYjk3YTMyYzg3MmZhMWFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgK
QEAgLTk0LDkgKzk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhhbmRs
ZWRCeUlucHV0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkQnlJbnB1dE1ldGhvZDsg
fQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotICAgICAgICBjb25z
dCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRp
dFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRVbmRlcmxpbmVzOyB9Ci0gICAg
ICAgIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRTZWxlY3Rpb25SYW5nZVN0YXJ0OyB9Ci0gICAgICAg
IGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2VMZW5ndGg7IH0KKyAgICAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
PiYgcHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRVbmRlcmxpbmVz
OyB9CisgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiBwcmVlZGl0U2VsZWN0
aW9uUmFuZ2VTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlU3Rh
cnQ7IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mIHByZWVkaXRTZWxl
Y3Rpb25SYW5nZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVjdGlvblJhbmdl
TGVuZ3RoOyB9CiAjZW5kaWYKICNpZiBVU0UoQVBQS0lUKQogICAgICAgICBjb25zdCBWZWN0b3I8
S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRzOyB9
CkBAIC0xNjMsOSArMTYzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
aGFuZGxlZEJ5SW5wdXRNZXRob2QgeyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBVU0UoTElCV1BFKQotICAgICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOwotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2VTdGFydDsKLSAgICAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IG1fcHJlZWRpdFVu
ZGVybGluZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVj
dGlvblJhbmdlU3RhcnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRp
dFNlbGVjdGlvblJhbmdlTGVuZ3RoOwogI2VuZGlmCiAjaWYgVVNFKEFQUEtJVCkKICAgICAgICAg
VmVjdG9yPEtleXByZXNzQ29tbWFuZD4gbV9jb21tYW5kczsKQEAgLTE4MSw3ICsxODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNlbmRpZgogICAgICAgICAvLyBUaGUgbW9kaWZp
ZXIgc3RhdGUgaXMgb3B0aW9uYWwsIHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQgaW4gdGhlIFVJIHBy
b2Nlc3Mgb3IgaW4gbGVnYWN5IFdlYktpdC4KLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPE9wdGlv
blNldDxNb2RpZmllcj4+IHNfY3VycmVudE1vZGlmaWVyczsKKyAgICAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8T3B0aW9uU2V0PE1vZGlmaWVyPj4gc19jdXJyZW50TW9kaWZpZXJzOwogICAgIH07
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDZhYjQxZmI3ZTEyOWYwYmU5NWNiZGNhOGZlODFj
ZmFjY2NjM2M0ZGUuLjdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC02Miw4
ICs2Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhpbnQ2NF90IGNoYW5nZUNvdW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGludDY0X3QgY2hhbmdlQ291bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2
NF90IGNoYW5nZUNvdW50KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHBlcmZv
cm1Bc0RhdGFPd25lcihEYXRhT3duZXJUeXBlLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzSWRlbnRpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzSWRlbnRpZmllci5jcHAKaW5kZXggZTlkZDY4
ZGYyZmI0ZWQ2MTdjM2JhZWVmZjM4OWJiN2Q5ODY3ODE0Ni4uODllN2E0ZDAxMDI4NTlhNzNjMzFl
MTg2NjY5OTZlODMyZDhhYWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvY2Vzc0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nl
c3NJZGVudGlmaWVyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIFByb2Nlc3MgewogCi1zdGF0aWMgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+
IGdsb2JhbElkZW50aWZpZXI7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmll
cj4gZ2xvYmFsSWRlbnRpZmllcjsKIAogdm9pZCBzZXRJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJy
ZXJQb2xpY3kuY3BwCmluZGV4IGJlMDQ2MDE1MDU1YTVmYmQ4NDdhNzU3MzJjMjE0OTAyNWVlYzNm
MjYuLmM0OTQwZDYyOTk0Y2YzOGZlMjkyMmQ5MDQ4NmQwOGM1NTBiZjljMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMg
eyBObywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZl
cnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91bGRQYXJzZUxlZ2FjeUtleXdv
cmRzIHNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZl
cnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBT
aG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzIHNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMpCiB7CiAg
ICAgLy8gIm5ldmVyIiAvICJkZWZhdWx0IiAvICJhbHdheXMiIGFyZSBsZWdhY3kga2V5d29yZHMg
dGhhdCB3ZSBzdXBwb3J0IGFuZCBzdGlsbCBkZWZpbmVkIGluIHRoZSBIVE1MIHNwZWNpZmljYXRp
b246CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbWV0YS1yZWZlcnJlcgpA
QCAtNjcsMTIgKzY3LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VS
ZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KICAgICAKLU9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVy
cmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJlclBvbGljeVNvdXJjZSBz
b3VyY2UpCitzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5
KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJlclBvbGljeVNvdXJjZSBzb3VyY2UpCiB7
CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5U291cmNlOjpI
VFRQSGVhZGVyOiB7CiAgICAgICAgIC8vIEltcGxlbWVudGluZyBodHRwczovL3d3dy53My5vcmcv
VFIvMjAxNy9DUi1yZWZlcnJlci1wb2xpY3ktMjAxNzAxMjYvI3BhcnNlLXJlZmVycmVyLXBvbGlj
eS1mcm9tLWhlYWRlci4KLSAgICAgICAgT3B0aW9uYWw8UmVmZXJyZXJQb2xpY3k+IHJlc3VsdDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcmVzdWx0OwogICAgICAgICBm
b3IgKGF1dG8gdG9rZW5WaWV3IDogcG9saWN5U3RyaW5nLnNwbGl0KCcsJykpIHsKICAgICAgICAg
ICAgIGF1dG8gdG9rZW4gPSBwYXJzZVJlZmVycmVyUG9saWN5VG9rZW4oc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVFRQU3BhY2VzKHRva2VuVmlldyksIFNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHM6
Ok5vKTsKICAgICAgICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi52YWx1ZSgpICE9IFJlZmVycmVy
UG9saWN5OjpFbXB0eVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlZmVycmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGlj
eS5oCmluZGV4IGQ1ZDQ5ODQ2NWUxYWJlY2Q4YmVlYTNlNGQ2ZDQwZTQ4MzQ4NzExZWYuLjM4Y2Y0
N2ExZWMyMzY1Zjg4MmU4NzBiNjczNjk1MjVjNTEwZTg0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVmZXJyZXJQb2xpY3kuaApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIFJlZmVy
cmVyUG9saWN5IDogdWludDhfdCB7CiB9OwogCiBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5U291
cmNlIDogdWludDhfdCB7IE1ldGFUYWcsIEhUVFBIZWFkZXIsIFJlZmVycmVyUG9saWN5QXR0cmli
dXRlIH07Ci1PcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeShTdHJp
bmdWaWV3LCBSZWZlcnJlclBvbGljeVNvdXJjZSk7CitzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9s
aWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcsIFJlZmVycmVyUG9saWN5U291cmNl
KTsKIFN0cmluZyByZWZlcnJlclBvbGljeVRvU3RyaW5nKGNvbnN0IFJlZmVycmVyUG9saWN5Jik7
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9t
YWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4
IDFiN2U1ZGMxMjM4YWYwNGZmOWU5MDllOWM0MWJkMDk5OWNkMzJjNTYuLmVjM2UwZmZkM2FmMzU0
NTMyMGMzNzhmODBhODU0MmQ5NzZlODY1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UmVnaXN0cmFibGVEb21haW4uaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJsZURv
bWFpbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlKERlY29kZXImKTsKIAog
cHJvdGVjdGVkOgogCkBAIC0xNDIsOSArMTQyLDkgQEAgdm9pZCBSZWdpc3RyYWJsZURvbWFpbjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gUmVnaXN0cmFibGVEb21haW46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gUmVn
aXN0cmFibGVEb21haW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PFN0cmluZz4gZG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkb21haW47CiAgICAg
ZGVjb2RlciA+PiBkb21haW47CiAgICAgaWYgKCFkb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmNwcAppbmRleCA5ODBmZmU5NTgwMDNlZGFlODZhY2I4OGRiOTQxMjM3Nzli
Mjk3MzBkLi5jZTAwZGYzYWYxMTU5MmEzNTM2YjFhMTYxZWE5NjM5ZGI4NjZlYmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5j
cHAKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGJvb2wgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElET3ZlcnJpZGVXYXNRdWVyaWVkOwogI2VuZGlmCiAKLXN0YXRp
YyBPcHRpb25hbDxpbnQ+JiBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZSgpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxpbnQ+JiBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZSgp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPGludD4+IHBpZDsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxpbnQ+PiBwaWQ7CiAjaWYgIUFTU0VS
VF9NU0dfRElTQUJMRUQKICAgICBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZVdhc1F1
ZXJpZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgc2V0UHJlc2VudGlu
Z0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgcHJlc2VudGluZ0FwcGxpY2F0aW9uUElET3Zl
cnJpZGUoKSA9IHBpZDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBl
PiYgYXV4aWxpYXJ5UHJvY2Vzc1R5cGUoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5
UHJvY2Vzc1R5cGU+JiBhdXhpbGlhcnlQcm9jZXNzVHlwZSgpCiB7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiBhdXhpbGlhcnlQcm9jZXNzVHlwZTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBdXhpbGlhcnlQcm9jZXNzVHlwZT4gYXV4aWxpYXJ5UHJvY2Vzc1R5
cGU7CiAgICAgcmV0dXJuIGF1eGlsaWFyeVByb2Nlc3NUeXBlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKaW5kZXggZDZlOTdlM2EyMDkxNDE4OTE3N2Y2
MDczYTIwMTQ5M2E4NDAxNDExZS4uZTNhMzNjYTlkOTlmMjAwZjBjY2RlNDAxYTBlYzk4YmI0YTg0
MTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaApAQCAt
NTYsNyArNTYsNyBAQCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyZWVuRGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
Y3JlZW5EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdXNpbmcgU2NyZWVuRGF0YU1hcCA9
IEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQsIFNjcmVlbkRhdGE+OwpAQCAtNjYsNyArNjYsNyBA
QCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRh
TWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTY3Jl
ZW5Qcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNjcmVlblByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNzYsMTQgKzc2LDE0IEBAIHZv
aWQgU2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3Jl
ZW5Qcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2Ny
ZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IHByaW1hcnlEaXNwbGF5SUQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gcHJpbWFyeURpc3BsYXlJRDsKICAg
ICBkZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5SUQ7CiAgICAgaWYgKCFwcmltYXJ5RGlzcGxheUlE
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2NyZWVuRGF0
YU1hcD4gc2NyZWVuRGF0YU1hcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFNYXA+IHNj
cmVlbkRhdGFNYXA7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EYXRhTWFwOwogICAgIGlmICghc2Ny
ZWVuRGF0YU1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNiw3MiArMTA2
LDcyIEBAIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5E
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4g
U2NyZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBzY3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRlY29kZXIgPj4gc2NyZWVuQXZhaWxhYmxlUmVj
dDsKICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJlY3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5SZWN0
OwogICAgIGlmICghc2NyZWVuUmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsK
ICAgICBkZWNvZGVyID4+IHNjcmVlbkNvbG9yU3BhY2U7CiAgICAgaWYgKCFzY3JlZW5Db2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8aW50PiBz
Y3JlZW5EZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGg7CiAgICAgZGVj
b2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVlbkRlcHRoKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8aW50PiBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAg
ICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKICAgICBpZiAoIXNjcmVlbkRl
cHRoUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogICAgIGRlY29kZXIgPj4gc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogICAgIGlmICghc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzY3Jl
ZW5IYXNJbnZlcnRlZENvbG9yczsKICAgICBkZWNvZGVyID4+IHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzOwogICAgIGlmICghc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5h
bWljUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5h
bWljUmFuZ2U7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7
CiAgICAgaWYgKCFzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8Ym9vbD4g
c2NyZWVuSXNNb25vY2hyb21lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2NyZWVuSXNNb25v
Y2hyb21lOwogICAgIGRlY29kZXIgPj4gc2NyZWVuSXNNb25vY2hyb21lOwogICAgIGlmICghc2Ny
ZWVuSXNNb25vY2hyb21lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGRpc3BsYXlNYXNrOwogICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNw
bGF5TWFzaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPElP
UmVnaXN0cnlHUFVJRD4gZ3B1SUQ7CisgICAgc3RkOjpvcHRpb25hbDxJT1JlZ2lzdHJ5R1BVSUQ+
IGdwdUlEOwogICAgIGRlY29kZXIgPj4gZ3B1SUQ7CiAgICAgaWYgKCFncHVJRCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPER5bmFtaWNSYW5nZU1vZGU+IHBy
ZWZlcnJlZER5bmFtaWNSYW5nZU1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljUmFuZ2VN
b2RlPiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwogICAgIGRlY29kZXIgPj4gcHJlZmVycmVk
RHluYW1pY1JhbmdlTW9kZTsKICAgICBpZiAoIXByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7
CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7CiAgICAgZGVjb2RlciA+PiBz
Y2FsZUZhY3RvcjsKICAgICBpZiAoIXNjYWxlRmFjdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcAppbmRleCA3ODZjNDk2M2FkZWQwNTBmZWJkM2IyNzY3ZDc3MjEzODIzMzFmMjhk
Li4yMThkYmFhMGU1ZTczZjEyMGU2NGE4Yjg4MWM3N2Q3YjcwYmFkMWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgYXV0byBkZWx0YSA9IGRl
bHRhVG9OZXh0RnJhbWUoKTsKICAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5j
dGlvbigpOwogCi0gICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9j
aXR5LCBPcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0RhdGEpIC0+IGRvdWJsZSB7CisgICAgYXV0
byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFs
PFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91YmxlIHsKICAgICAgICAgaWYgKGF4aXNEYXRh
ICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChkZWx0YSkpIHsKICAgICAgICAgICAg
IGRvdWJsZSBsYXN0VmVsb2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAg
ICAgICAgICBpZiAoKHN0ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2
ZWxvY2l0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmgKaW5kZXggMjA3ZWU0OTgxOGEwNDhmODVmZjY2ZWRiYzlhODE2YzdjMTkxNjhlZS4u
ZjllMDliYWFhODI5OGMwZDQ3NzRkODkwNzc5MDNiOGM4OGQwMjI3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtODAsOCArODAs
OCBAQCBwcml2YXRlOgogICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNG
dW5jdGlvbjsKICAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0
aW9uQ2hhbmdlZEZ1bmN0aW9uOwogCi0gICAgT3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpv
bnRhbERhdGE7Ci0gICAgT3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1fdmVydGljYWxEYXRhOworICAg
IHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CisgICAgc3RkOjpv
cHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAKICAgICBNb25vdG9uaWNUaW1l
IG1fc3RhcnRUaW1lOwogICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+
IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKaW5kZXggOGFiYzhhZmZiMzRiOTZiOWRlZmY5NzU2ODE4NTk2ZTVlOTk4YjIyNS4uYjMw
ZWQzZjNmYTIxZmM5NDU3YzNjZmE5ZWM3ZjBhZWZmMzE1ZGQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIGZsb2F0IFNj
cm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9s
bEV2ZW50QXhpcyBheGlzCiAgICAgaWYgKCFtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNu
YXAoKSkKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldDsK
ICAgICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAgIGlmIChtZXRob2QgPT0gU2Nyb2xsU25hcFBv
aW50U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25hbCkgewogICAgICAgICBGbG9hdFNpemUgc2Ny
b2xsT3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggOTNhZjU4
YjMzM2U4YzRkMzJkZTNkMTI0MDMzYTk1YWVmYmIzMTZhYS4uZmU0NThiMzY4MjA3OWI0OTNiNjgx
OTBjNmFkYzFjNjVlZGYwYjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENv
bnRyb2xsZXIuaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7CiAgICAgdm9p
ZCB1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKICAgICB2b2lk
IHVwZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7
Ci0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzLCBmbG9h
dCBkZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmln
aW5hbE9mZnNldCk7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZl
bnRBeGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0Jp
YXMgeyBOb25lLCBWZXJ0aWNhbCB9OwotICAgIHN0YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rp
b24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25h
bDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBkaXJlY3Rpb25Gcm9t
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwgc3RkOjpvcHRpb25hbDxTY3JvbGxFdmVu
dEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAgICAgc3RhdGlj
IEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDlmNGNlZWUxZjdiYTkzZmRi
ODg1ODcxOTFhYTZiYWM0ZDkwMjg3NDQuLjEwNzhhM2M0NDU5YzcwMzVmN2IzN2E1ZTQ1NWNlODRm
YmJjMTVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTU0NSw3ICs1
NDUsNyBAQCBwcml2YXRlOgogICAgICAgICBGbG9hdFNpemUgdW5vYnNjdXJlZENvbnRlbnRTaXpl
OwogICAgICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0OwogICAgIH07Ci0gICAgT3B0
aW9uYWw8RGVsZWdhdGVkU2Nyb2xsaW5nR2VvbWV0cnk+IG1fZGVsZWdhdGVkU2Nyb2xsaW5nR2Vv
bWV0cnk7CisgICAgc3RkOjpvcHRpb25hbDxEZWxlZ2F0ZWRTY3JvbGxpbmdHZW9tZXRyeT4gbV9k
ZWxlZ2F0ZWRTY3JvbGxpbmdHZW9tZXRyeTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICAvLyBGSVhNRTogZXhwb3NlZENvbnRlbnRSZWN0IGlzIGEgdmVyeSBzaW1pbGFyIGNv
bmNlcHQgdG8gZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgZXhjZXB0IGl0IGRvZXMgbm90IGRpZmZl
cmVudGlhdGUKQEAgLTU1Nyw4ICs1NTcsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9maXhl
ZExheW91dFNpemU7CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKIAotICAgIE9wdGlvbmFs
PEludFNpemU+IG1fZGVmZXJyZWRTY3JvbGxEZWx0YTsgLy8gTmVlZGVkIGZvciBXZWJLaXQgc2Ny
b2xsaW5nCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0
Pj4gbV9kZWZlcnJlZFNjcm9sbE9mZnNldHM7IC8vIE5lZWRlZCBmb3IgcGxhdGZvcm0gd2lkZ2V0
IHNjcm9sbGluZworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9kZWZlcnJlZFNjcm9sbERl
bHRhOyAvLyBOZWVkZWQgZm9yIFdlYktpdCBzY3JvbGxpbmcKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxTY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNldD4+IG1fZGVmZXJyZWRTY3JvbGxPZmZz
ZXRzOyAvLyBOZWVkZWQgZm9yIHBsYXRmb3JtIHdpZGdldCBzY3JvbGxpbmcKIAogICAgIEludFBv
aW50IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAKaW5kZXggMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZhNTkxNjk2
MWY2Yi4uYTE3N2U4MGQ1ZGMzMjFhODg3ZjgwYmZiYjQxNDIyYWEzNTQ0ZTc0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBA
IHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQ
b3NpdGlvbiYgcG9zaXRpb24pCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkubm90aWZ5Q29udGVu
dEFyZWFTY3JvbGxlZChzY3JvbGxQb3NpdGlvbigpIC0gb2xkUG9zaXRpb24pOwogfQogCi1ib29s
IFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+KQorYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KQogewogICAgIGlmICghaXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5k
YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAppbmRleCBkNDgxZjdlZGNiZmJmMzNiZGFiNjYzNjc3YzhmZDUwYjczOGFm
OWE2Li4wMTk1YTE1NTQzNzlhOWMzZTE2OTVmN2M0NGVjZGQzZGVmZDA3N2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGlj
OgogICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4gc29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KICAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIsIFNjcm9sbENsYW1waW5nID0g
U2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+KTsKIAogICAgIGJvb2wgdXNlc1Njcm9sbFNuYXAoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGFlZTBkODc2ZWYz
NjY4YzVhMDE4OWZjMjI3MjQwNzU3MDNhMzIzYjcuLmMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2
NmEyNzFlMWI4YjllMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKLSAgICB2b2lkIHJl
YWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFp
blRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiA9IHN0ZDo6
bnVsbG9wdCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51
bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93
VVJMLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQorICAg
IHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5n
UG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQog
CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikgZmluYWw7CiAgICAgdm9pZCB3
cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1l
LmNwcAppbmRleCBiYzk3ZTRlNGJmNTQyN2VjZWQ3MWY4N2M0ZTFjOGE0ZmM1YjkyZWJhLi4yMDI3
MmJiZTM1NGM0MDE3MjU5NDUyZWRiYzRjZmU5ODlkOGY5MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIGludCBUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFk
anVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLU9wdGlvbmFs
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lOjpjb250cm9sRm9udChDb250cm9sUGFydCwg
Y29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Rm9udENhc2Nh
ZGVEZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250
Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCBkZGMyNjBlM2VlYmEzZTMyZGJjODc3OGVmYTYwZmM1
ZDYzZjcxNGNlLi4xY2Y1NmMyODZmYWJmZjZkNDBiZDc4M2Y5MTQ4OTdkOWQ3MTVmODkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdDsKIAog
ICAgIC8vIFRoZSBmb250IGRlc2NyaXB0aW9uIHJlc3VsdCBzaG91bGQgaGF2ZSBhIHpvb21lZCBm
b250IHNpemUuCi0gICAgdmlydHVhbCBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBj
b250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlw
dGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQg
em9vbUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBUaGUgc2l6ZSBoZXJlIGlzIGluIHpvb21lZCBj
b29yZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXplIGlzIHJldHVybmVkLCBpdCBhbHNvIG5l
ZWRzIHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4KICAgICB2aXJ0dWFsIExlbmd0aFNpemUg
Y29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3Ro
U2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5jcHAKaW5kZXggZTFmNmUyMmEyYTNkZmY2ODQyNjgxMjVjODM4N2Q5N2ZiZDdlOTIx
NS4uZjA3MzQ4ZjgwOGQ3ZjAzMzVkYTg5NmY1ZTY0MDBlYjEzZmVmODk3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RpbWVyLmNwcApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRh
dGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBvbGRUaW1lKQogICAgICAgICByZXR1cm47CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvbGRIZWFwSW5kZXg7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb2xkSGVhcEluZGV4OwogICAgIGlmIChtX2hl
YXBJdGVtLT5pc0luSGVhcCgpKQogICAgICAgICBvbGRIZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5o
ZWFwSW5kZXgoKTsKICNlbmRpZgpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgVGltZXJCYXNlOjp1
cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBvbGRUaW1lKQogICAgICAgICBoZWFwSW5j
cmVhc2VLZXkoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IG5ld0hlYXBJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXdIZWFwSW5kZXg7
CiAgICAgaWYgKG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpCiAgICAgICAgIG5ld0hlYXBJbmRleCA9
IG1faGVhcEl0ZW0tPmhlYXBJbmRleCgpOwogICAgIEFTU0VSVChuZXdIZWFwSW5kZXggIT0gb2xk
SGVhcEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IDU2Zjc2NTc4MWMzYjEzNzRh
MjE2MjU5NWIxYjA5MmI5ZWRkNzU3MDUuLjhlNDVmODdiMjAxYzA2M2FlZTJlOTdiN2RlMjU1YmEz
MTJjNTIwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotICAgIHZpcnR1
YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1lKE1vbm90b25pY1RpbWUp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxNb25vdG9uaWNUaW1lPiBhbGlnbmVkRmlyZVRpbWUoTW9ub3RvbmljVGltZSkgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dDsKICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmluZGV4IDMxNWFlNGIyMDdm
NzBjODdlMzhkZjdiNjg0Mzk1ZWMxZjNjOTJkNTMuLjJiZjZhYzY5ZWFiYWJlMjQyM2M5ZGYxYjRi
ZmNmMjUyNWExM2U3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgICAg
ICBFbmQsCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3Jl
YXRlKGludCBzdGVwcywgT3B0aW9uYWw8U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCisgICAg
c3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoaW50IHN0ZXBzLCBzdGQ6Om9w
dGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcFBvc2l0aW9uKSk7
CiAgICAgfQpAQCAtMjI4LDExICsyMjgsMTEgQEAgcHVibGljOgogICAgIGludCBudW1iZXJPZlN0
ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZTdGVw
cyhpbnQgc3RlcHMpIHsgbV9zdGVwcyA9IHN0ZXBzOyB9CiAKLSAgICBPcHRpb25hbDxTdGVwUG9z
aXRpb24+IHN0ZXBQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcFBvc2l0aW9uOyB9Ci0g
ICAgdm9pZCBzZXRTdGVwUG9zaXRpb24oT3B0aW9uYWw8U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRp
b24pIHsgbV9zdGVwUG9zaXRpb24gPSBzdGVwUG9zaXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRp
b247IH0KKyAgICB2b2lkIHNldFN0ZXBQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlv
bj4gc3RlcFBvc2l0aW9uKSB7IG1fc3RlcFBvc2l0aW9uID0gc3RlcFBvc2l0aW9uOyB9CiAKIHBy
aXZhdGU6Ci0gICAgU3RlcHNUaW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIE9wdGlvbmFsPFN0ZXBQ
b3NpdGlvbj4gc3RlcFBvc2l0aW9uKQorICAgIFN0ZXBzVGltaW5nRnVuY3Rpb24oaW50IHN0ZXBz
LCBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQogICAgICAgICA6IFRp
bWluZ0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCiAgICAgICAgICwgbV9zdGVwcyhzdGVwcykKICAg
ICAgICAgLCBtX3N0ZXBQb3NpdGlvbihzdGVwUG9zaXRpb24pCkBAIC0yNDUsNyArMjQ1LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgaW50IG1fc3RlcHM7Ci0gICAgT3B0aW9uYWw8U3Rl
cFBvc2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlv
bj4gbV9zdGVwUG9zaXRpb247CiB9OwogCiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCmluZGV4IGMyOWI4NTg2NjAyZWNlMTEwYjY2MmM1ODEw
ZTliZTdjNDJhMzE2ZDEuLjRmMDA3OTdiNTlkZjdkZWUzODgwMTdlZmE2NTg2NTNlNzFkM2M1YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFj
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5o
CkBAIC00OCwxNCArNDgsMTQgQEAgc3RydWN0IEF1ZGlvSU9Qb3NpdGlvbiB7CiAgICAgICAgIGVu
Y29kZXIgPDwgdGltZXN0YW1wOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxBdWRpb0lPUG9zaXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEF1ZGlvSU9Qb3NpdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAg
ICBPcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiBwb3NpdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBwb3NpdGlvbjsKICAgICAgICAgaWYg
KCFwb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZXN0YW1wOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PE1vbm90b25pY1RpbWU+IHRpbWVzdGFtcDsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lc3RhbXA7
CiAgICAgICAgIGlmICghdGltZXN0YW1wKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmlu
ZGV4IDhlNjg2ZTQ0N2I5YjY2ZGNlOGFiN2UyMTM3MTRmZGU2MGU5M2JiNWMuLjVmNjE2OWU3MTdm
YWY2MzU5NjY5MTA0Zjc4MjA2ZjVmZDI1NDI1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4m
IHNoYXJlZEF1ZGlvU2Vzc2lvbigpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8QXVk
aW9TZXNzaW9uPj4mIHNoYXJlZEF1ZGlvU2Vzc2lvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+Pj4gc2Vzc2lvbjsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9u
Pj4+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb24uZ2V0KCk7CiB9CiAKQEAgLTE4MCw3ICsx
ODAsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5n
VG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29sPikKK3ZvaWQgQXVkaW9TZXNzaW9uOjpz
ZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKaW5kZXggYjhmN2QzMGY3ZDY1MTA4ZGIzZDBiNzM2OTg4OTdlMzA2MGY5
OGJiOC4uYTk0NzdlMWQwMTcxNmExNDkzNzJhMTI1NDhhY2JiYWM4NTk5NzU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTk3LDcgKzk3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0
ZWRTdGF0ZU9ic2VydmVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9PdXRwdXREZXZp
Y2VDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3Zl
cnJpZGUoT3B0aW9uYWw8Ym9vbD4pOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0Js
dWV0b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAgdmlydHVhbCBib29s
IGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGUGFubmVyLmgKaW5kZXggYzMwNzY2NDM0OTE2NjFhNWY2ZjBmZmUyNTM0NjhlNjkzOGVlMDdj
YS4uYjQyOTQ3ZWZjYzNmMmM4M2EzY2Q2ZDUzNTg5M2Y4YjdjMmM3YTFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtODAsMTEgKzgwLDExIEBAIHBy
aXZhdGU6CiAgICAgQ3Jvc3NmYWRlU2VsZWN0aW9uIG1fY3Jvc3NmYWRlU2VsZWN0aW9uIHsgQ3Jv
c3NmYWRlU2VsZWN0aW9uMSB9OwogCiAgICAgLy8gYXppbXV0aC9lbGV2YXRpb24gZm9yIENyb3Nz
ZmFkZVNlbGVjdGlvbjEuCi0gICAgT3B0aW9uYWw8aW50PiBtX2F6aW11dGhJbmRleDE7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IG1fYXppbXV0aEluZGV4MTsKICAgICBkb3VibGUgbV9lbGV2YXRp
b24xIHsgMCB9OwogCiAgICAgLy8gYXppbXV0aC9lbGV2YXRpb24gZm9yIENyb3NzZmFkZVNlbGVj
dGlvbjIuCi0gICAgT3B0aW9uYWw8aW50PiBtX2F6aW11dGhJbmRleDI7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IG1fYXppbXV0aEluZGV4MjsKICAgICBkb3VibGUgbV9lbGV2YXRpb24yIHsgMCB9
OwogCiAgICAgLy8gQSBjcm9zc2ZhZGUgdmFsdWUgMCA8PSBtX2Nyb3NzZmFkZVggPD0gMS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDU4
ZjBiY2M5MGY3ODg2ZDJlMWI3NjdiZTgzZjE1ODlmNzUxNDliZmUuLjMzMzYwNWU3NWJkMTE4MDU1
YjBjZWE1MDcwNWFhYTdlY2IwNTRlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgTm93UGxheWlu
Z0luZm9BcnR3b3JrIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5n
SW5mb0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdApAQCAtNTgsNyArNTgsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBp
bmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZAog
ICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGltYWdlRGF0YTsKIH0KIAotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29y
az4gTm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBTdHJpbmcgc3JjOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3JjKSkKQEAgLTg2LDcgKzg2
LDcgQEAgc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKICAgICBNZWRpYVVuaXF1ZUlkZW50aWZpZXIg
dW5pcXVlSWRlbnRpZmllcjsKICAgICBib29sIGlzUGxheWluZyB7IGZhbHNlIH07CiAgICAgYm9v
bCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IHsgZmFsc2UgfTsKLSAgICBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CisgICAgc3RkOjpvcHRpb25hbDxO
b3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxh
eWluZ0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CkBAIC0xMTcsNyArMTE3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZv
aWQgTm93UGxheWluZ0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNv
ZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5nIDw8IHVu
aXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zp
c2liaWxpdHkgPDwgYXJ0d29yazsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5l
IE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxO
b3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFN0cmluZyB0aXRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpdGxlKSkKQEAg
LTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8
Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7
CisgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwCmluZGV4IDI5NzI2ZDMxYWUzODk0ZDQzYWE5ODk0YmViMDA4YTQzZjg3ZjRlMDYuLjYy
ODQ3MTcyNjQyNTRmZDY0OGVmZWEwYjE3ODlhZGRiM2VjYmVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAg
LTQwOSw3ICs0MDksNyBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjptYW5hZ2VyKCkKICAgICByZXR1cm4gKm1fbWFuYWdlcjsKIH0KIAotT3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApp
bmRleCA3YWFjNTI0YjQ5NjA1OTZhYmQxMjBmMWEwNTgzMDkxZTIxNTgwODdkLi44MjEyN2E4Nzg4
OWNkMTMzMzI2ZTFlMmUwOGUwOTM5MjczMzhkNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTExOSwxMSArMTE5
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAg
ICAgCiAgICAgc3RydWN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCB7Ci0gICAgICAgIE9wdGlvbmFs
PGRvdWJsZT4gdGltZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZmFzdFNlZWs7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGZhc3RTZWVrOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJlbW90ZUNvbW1hbmRBcmd1bWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlQ29t
bWFuZEFyZ3VtZW50PiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBlbnVtIFJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSA6IHVpbnQ4X3QgewpAQCAtMjAxLDcgKzIwMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyaW5nQXVkaW8oKSBjb25zdCA9IDA7CiAg
ICAgfTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJ
bmZvKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBu
b3dQbGF5aW5nSW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNZWRpYVVzYWdl
SWZDaGFuZ2VkKCkgeyB9CiAKICAgICBNZWRpYVNlc3Npb25JZGVudGlmaWVyIG1lZGlhU2Vzc2lv
bklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2Vzc2lvbklkZW50aWZpZXI7IH0K
QEAgLTI5MSwxMCArMjkxLDEwIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQ6CiAgICAgZW5jb2Rl
ciA8PCB0aW1lIDw8IGZhc3RTZWVrOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxp
bmUgT3B0aW9uYWw8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25h
bDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50PiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDxPcHRpb25h
bDx0eXBlPj4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx0eXBlPj4g
bmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggNmJi
ZjQ2Y2RhMDdkMTY1NzY3ZmEwNjQwNmIyMjNmYzE2MjliNmE0OS4uZDc3OWE4ZmQzM2Q3NzgyMzQ3
MzIxODZkYTJhYTVlZGNjZTIzMTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtNjIs
NyArNjIsNyBAQCBib29sIHZhbGlkYXRlQXVkaW9CdWZmZXJMaXN0KEF1ZGlvQnVmZmVyTGlzdCog
YnVmZmVyTGlzdCkKICAgICBpZiAoIWJ1ZmZlckxpc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHBlY3RlZERhdGFTaXplOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGV4cGVjdGVkRGF0YVNpemU7CiAgICAgY29uc3QgQXVkaW9CdWZmZXIq
IGJ1ZmZlciA9IGJ1ZmZlckxpc3QtPm1CdWZmZXJzOwogICAgIGNvbnN0IEF1ZGlvQnVmZmVyKiBi
dWZmZXJFbmQgPSBidWZmZXIgKyBidWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsKICAgICBmb3Ig
KCA7IGJ1ZmZlciA8IGJ1ZmZlckVuZDsgKytidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgK
aW5kZXggMmM0Yzc3ZmRmMjk3MWEyNzMxYjY2OTYyYmI0ODg0MmJlMmVkNTJmZi4uZGExZmFjZTU3
ZjU0NjE4MzgzZDQzNTk2MjJjMDViNjdmZGM0MGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgK
QEAgLTg3LDggKzg3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHVzaFNhbXBsZXNJbnRlcm5h
bChjb25zdCBBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBNZWRpYVRpbWUmLCBzaXplX3QgZnJhbWVD
b3VudCk7CiAKLSAgICBPcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5wdXRE
ZXNjcmlwdGlvbjsKLSAgICBPcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0
cHV0RGVzY3JpcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24+IG1faW5wdXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKIAogICAgIE1lZGlhVGltZSBob3N0VGlt
ZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYzJiNmMwNGQx
ZjQyMGU2Njk2MTg3MDM2NTkzMWZmMDA0OTA4MmU1OS4uZDczYmE2OTQ4ZjI3YmVmYzU3OGU4YjFi
NjRkMDc3NmIzMjMzNTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzYx
LDcgKzM2MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5
aW5nSW5mbygpCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5v
d1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5v
d1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSkKICAgICAgICAgbm93UGxheWluZ0luZm8gPSBzZXNz
aW9uLT5ub3dQbGF5aW5nSW5mbygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcAppbmRleCBlYzRhZjZi
NmIzMjQ3M2VmYzBjMzVmM2ZjODUyY2M5ZWFiNTk0YzgzLi44NDg1NjczYWZhNTM1N2FiM2Y0YTQ3
NzU3YjUwMDA5YThjMWRjM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgV2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHUKICAgICBzZXRTYW1wbGVDb3VudChzYW1wbGVDb3Vu
dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90
Pj4gY29tcHV0ZUJ1ZmZlclNpemVzKHVpbnQzMl90IG51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVs
cywgdWludDMyX3QgYnl0ZXNQZXJGcmFtZSwgdWludDMyX3QgbnVtYmVyT2ZDaGFubmVsU3RyZWFt
cywgdWludDMyX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gY29tcHV0ZUJ1ZmZlclNpemVzKHVpbnQzMl90IG51bWJl
ck9mSW50ZXJsZWF2ZWRDaGFubmVscywgdWludDMyX3QgYnl0ZXNQZXJGcmFtZSwgdWludDMyX3Qg
bnVtYmVyT2ZDaGFubmVsU3RyZWFtcywgdWludDMyX3Qgc2FtcGxlQ291bnQpCiB7CiAgICAgc2l6
ZV90IHRvdGFsU2FtcGxlQ291bnQ7CiAgICAgYm9vbCByZXN1bHQgPSBXVEY6OnNhZmVNdWx0aXBs
eShzYW1wbGVDb3VudCwgbnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzLCB0b3RhbFNhbXBsZUNv
dW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IGRkNDgyOWQzN2MyM2E2ZDVmMjUwNjMwMDUyYjRiMjBhZWYzZWVkYTEuLjFjNjk5ZmJlZTQ1
OGEzODUyN2E1MDIxZjFmMGNhMDI3ZDJkOWIxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYkF1ZGlvU3JjR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
ZXJ0eUlkLCBHVmFsCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8
R3N0QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYktpdFdlYkF1
ZGlvU3JjKiBzcmMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHc3RCdWZm
ZXI+Pj4gd2ViS2l0V2ViQXVkaW9TcmNBbGxvY2F0ZUJ1ZmZlcnMoV2ViS2l0V2ViQXVkaW9TcmMq
IHNyYykKIHsKICAgICBXZWJLaXRXZWJBdWRpb1NyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IGVkZWYzMDdmMjdhYzNiOGRiZGY4MmE3YmNlNjQz
MjliM2VmZWFjZGEuLmE1MjE1Mzg0NzRjZjcwNmViYjlmMTY1MTUzYjM4ZTIxYjI3MWI0MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25I
ZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogI2lmIEhBVkUoQ0VMRVNU
SUFMKQogICAgIHZvaWQgbWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpOwotICAgIHZvaWQgdXBk
YXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYpOworICAgIHZvaWQgdXBkYXRl
Q2FyUGxheUlzQ29ubmVjdGVkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgdm9pZCBh
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKGJvb2wpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKICAgICBN
ZWRpYVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAotdm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25h
bDxib29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9T
Ojp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGNhclBsYXlJ
c0Nvbm5lY3RlZCkKIHsKICAgICBpZiAoY2FyUGxheUlzQ29ubmVjdGVkKSB7CiAgICAgICAgIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGNhclBsYXlJc0Nvbm5lY3RlZC52YWx1ZSgp
KTsKQEAgLTU4Miw3ICs1ODIsNyBAQCAtICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5n
ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICAgICBpZiAoIV9jYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOwogICAgIGlmIChub3Rp
ZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWRO
b3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgewogICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXND
b25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0
ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsK
ICAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oCmluZGV4IGYwNWJiZDg1MmNj
Yzg4M2Q3Yjg5MjNlZjZiOGQxNTMzMzQyOTc5MDUuLjFhZDhmNjE3YWMyMjJjNDQyOTlmYmI1ZDcy
MDU0NjMyMzViMjBlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBBdWRpb1Nlc3Npb24KICAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NhdGVnb3J5OyB9CiAgICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQo
KSBmaW5hbDsKLSAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9u
YWw8Ym9vbD4pIGZpbmFsOworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlk
ZShzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICB2b2lkIHNldENhdGVnb3J5KENhdGVn
b3J5VHlwZSwgUm91dGVTaGFyaW5nUG9saWN5KSBmaW5hbDsKICAgICBBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jYXRl
Z29yeU92ZXJyaWRlOyB9CiAgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlw
ZSkgZmluYWw7CkBAIC02NywxOSArNjcsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE11dGVk
U3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKICAgICB2b2lkIHJlbW92
ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKIAotICAgIE9w
dGlvbmFsPGJvb2w+IG1fbGFzdE11dGVkU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBt
X2xhc3RNdXRlZFN0YXRlOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdv
cnkgeyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6Tm9uZSB9OwogI2lmIEVOQUJMRShST1VU
SU5HX0FSQklUUkFUSU9OKQogICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2luUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKLSAgICBP
cHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aDsKLSAgICBPcHRpb25hbDxib29sPiBt
X3BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9w
bGF5aW5nVG9CbHVldG9vdGg7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0Js
dWV0b290aE92ZXJyaWRlOwogI2VuZGlmCiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
bV9jYXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsK
ICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTYW1wbGVSYXRlT2JzZXJ2ZXIgeyBmYWxzZSB9OwogICAg
IG11dGFibGUgYm9vbCBtX2hhc0J1ZmZlclNpemVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgbXV0
YWJsZSBPcHRpb25hbDxkb3VibGU+IG1fc2FtcGxlUmF0ZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PHNpemVfdD4gbV9idWZmZXJTaXplOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxkb3VibGU+
IG1fc2FtcGxlUmF0ZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2J1ZmZl
clNpemU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQppbmRleCBmNDEwNjZmZGE0OTk3OTYzNGE3NjI1YTg3Mjdm
YmZkMWI3Y2UyMTU1Li5lNWVlZTk4NTRmMWU0NTEwYmY4NmJjZWNlNWEyODUzMTE4YWE3YzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9u
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIEF1ZGlvRGV2aWNlSUQgZGVmYXVsdERl
dmljZSgpCiB9CiAKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKLXN0YXRpYyBPcHRp
b25hbDxib29sPiBpc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZTsKIAogc3RhdGljIGZsb2F0
IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpCiB7CkBAIC0xNzYsNyArMTc2LDcg
QEAgdm9pZCBBdWRpb1Nlc3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiAjZW5k
aWYKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3Zl
cnJpZGUoT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQ
bGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+IHZhbHVlKQogewog
I2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGlzUGxheWluZ1RvQmx1ZXRvb3Ro
T3ZlcnJpZGUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKaW5kZXggM2EyNTU1NWM0NTA0
ODBkMjliMTQyOTRmYWZhYTk4MjU2N2FhNDg4MC4uYTQ4YzI0MmNiMzRlNzliNzAxMGU0MTcwMzk0
YzEwZGY0NmU1YWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9r
ZW4mKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZT4gbV9jdXJyZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6Tm9uZSB9
OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3VycmVu
dENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKICAgICBXZWFr
SGFzaFNldDxUb2tlbj4gbV90b2tlbnM7CiAgICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+
IG1fZW5xdWV1ZWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5n
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FH
WENvbXBpbGVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuY3BwCmluZGV4IDU4MTY4NTI4MjI1YTA0NzA3NzFmYjdhNWZiM2YwYTJm
ZmYwMmRjOTAuLjRlMjVlZDBkN2NiMjNlZWE5MmVkNDYzMzNhY2MwY2E4MjI3NjMyMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNl
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBP
cHRpb25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CitzdGF0aWMgc3RkOjpvcHRpb25h
bDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CiAKIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29t
cGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvRHJhZ0RhdGFDb2NvYS5tbQppbmRleCBiNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkx
ZWNiMTZjYjQ4NmM5Li4wOWI2N2FmYmZkN2RlZWQxZWM5Nzg2YTQ3YjAxNTMwZjQ0OWQxZTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAg
LTEzMSw3ICsxMzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRp
ZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBk
ZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCitE
cmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9u
RmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlv
bkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6
IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xNDcs
NyArMTQ3LDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRy
YWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRp
b25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0
aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKK0RyYWdEYXRh
OjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxp
Y2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0
aW5hdGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkK
ICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXgg
ODc5MmIxNmJlZDFhMzg2NjViNDBkYzRiNjM2NjA0Mjk5ZmUyMmU1NC4uNmYyOGU4MjQzNjBjY2Qz
MDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZl
cikKIH0KICNlbmRpZgogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImIHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGl0ZW1JbmRleCkKIHsKICAgICBpZiAoIWl0ZW1JbmRleCkgewogICAgICAgICBhdXRvIGZpbGVu
YW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNjE1Y2JiNGExYjAy
YWFiZmI5MWU0OGI1NWRhZTRhMDY3N2U1YjhjNC4uNGFmYTgzZGUwNTIzNjA2OTBkZWE4YTFlNjg1
MmYwZTFhZWE2NDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oaW50NjRfdCBjaGFuZ2VD
b3VudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGludDY0X3QgY2hhbmdlQ291bnQpCiB7
CiAgICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5t
bQppbmRleCAwODliM2Q4MTc5OWNmNWQ0NzRlZDJlYjZhZmY0MDMyNGVjMDI0MzQ5Li5lMDU3Zjk3
ZDE0NDI5YjcyYjI5NTRhYmUxN2Y4Y2E1ODhkZjFhN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5tbQpAQCAtNTYxLDggKzU2MSw4IEBAIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKICAg
ICBUZXh0VHJhY2smIG9mZkl0ZW0gPSBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpOwog
ICAgIFRleHRUcmFjayYgYXV0b21hdGljSXRlbSA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRv
bWF0aWNJdGVtKCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc2VsZWN0ZWRJbmRleDsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gb2ZmSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gc2VsZWN0ZWRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBvZmZJbmRleDsK
IAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVUcmFja3NGb3JN
ZW51LnNpemUoKTsgaW5kZXgrKykgewogICAgICAgICBhdXRvJiB0cmFjayA9IG1fbGVnaWJsZVRy
YWNrc0Zvck1lbnVbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUG93ZXJTb3VyY2VOb3RpZmllci5oCmluZGV4IDBmNmNmZjQ3NmYwMzIyYmEzYTAyZmFmZjM3
YTcxZjBhYThhN2ExY2MuLmEwOTZlMDZhODE5ZDk3MDFlNGQ3NjQ2MzJlNDc2MDU2ODNkMjE2YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5v
dGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIG5v
dGlmeVBvd2VyU291cmNlQ2hhbmdlZCgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBtX3Rva2VuSUQ7
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fdG9rZW5JRDsKICAgICBQb3dlclNvdXJjZU5vdGlm
aWVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KaW5kZXgg
MDdlMGU5NzA2ZDRmZDZmZTRmY2M5MzkyZDkzMWE2OWI3MjExNjA5Ni4uMGNhMWVjN2UwYzhjYmJk
ZjA1NGIyZGMwNGFlZDhmYmUyYmIxMmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KQEAgLTM1
LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8TVJN
ZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWVkaWFSZW1vdGVDb21t
YW5kRm9yUGxhdGZvcm1Db21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUgY29tbWFuZCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFw
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgdXNpbmcgQ29tbWFuZFRvQWN0aW9u
TWFwID0gSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaAppbmRleCA5NzM1MjQy
NzEzYWYwYzA5ZDdiMzVlYTc2ZmM0ZGMzZDBkMDI0NDFjLi43MTczMTQxMzEzYmUyOGQzNmM2YTM4
ZDRlMzhlYTIxODI2NjAwZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TeXN0ZW1CYXR0ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U3lzdGVtQmF0dGVyeS5oCkBAIC0zNiwyMyArMzYsMjMgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
eXN0ZW1IYXNCYXR0ZXJ5KCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0U3lzdGVtSGFzQUMo
KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3lzdGVtSGFzQUMoYm9vbCk7CiBXRUJDT1JFX0VY
UE9SVCBib29sIHN5c3RlbUhhc0FDKCk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxib29sPiBj
YWNoZWRTeXN0ZW1IYXNBQygpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxib29sPiBj
YWNoZWRTeXN0ZW1IYXNBQygpOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTeXN0ZW1CYXR0ZXJ5
U3RhdHVzVGVzdGluZ092ZXJyaWRlcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN5c3RlbUJhdHRl
cnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgc2V0SGFz
QUMoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzQUMoKSB7IHJldHVy
biBtX2hhc0FDOyB9CisgICAgdm9pZCBzZXRIYXNBQyhzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQUMoKSB7IHJldHVybiBtX2hhc0FDOyB9CiAKLSAg
ICB2b2lkIHNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gaGFzQmF0dGVyeSgpIHsgcmV0dXJuICBtX2hhc0JhdHRlcnk7IH0KKyAgICB2b2lkIHNldEhh
c0JhdHRlcnkoc3RkOjpvcHRpb25hbDxib29sPiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGhhc0JhdHRlcnkoKSB7IHJldHVybiAgbV9oYXNCYXR0ZXJ5OyB9CiAKICAgICB2b2lkIHNldENv
bmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBw
cml2YXRlOgotICAgIE9wdGlvbmFsPGJvb2w+IG1faGFzQmF0dGVyeTsKLSAgICBPcHRpb25hbDxi
b29sPiBtX2hhc0FDOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNCYXR0ZXJ5OworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNBQzsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4g
bV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkubW0KaW5kZXggZDQ1MjlhMjBmNTM5Njc1MjE5
OWMwZWNkYWY4Njg1OGRhZDcxNTJiZi4uZGU5YjU5ODFhM2RlZGI2MWViNmNmZjc1OTdiYWZkMGMz
YTAyM2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVt
QmF0dGVyeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0
ZXJ5Lm1tCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IE9wdGlvbmFsPGJvb2w+IGhhc0JhdHRlcnk7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gaGFzQUM7
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBoYXNCYXR0ZXJ5Oworc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaGFzQUM7CiAKIHZvaWQgc2V0U3lzdGVtSGFzQmF0dGVyeShib29sIGJhdHRl
cnkpCiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBzeXN0ZW1IYXNBQygpCiAgICAgcmV0dXJu
ICpoYXNBQzsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gY2FjaGVkU3lzdGVtSGFzQUMoKQorc3RkOjpv
cHRpb25hbDxib29sPiBjYWNoZWRTeXN0ZW1IYXNBQygpCiB7CiAgICAgcmV0dXJuIGhhc0FDOwog
fQpAQCAtMTI1LDE0ICsxMjUsMTQgQEAgU3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlk
ZXMmIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGUKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgU3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlk
ZXM6OnNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9vbD4mJiBoYXNCYXR0ZXJ5KQordm9pZCBTeXN0
ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2V0SGFzQmF0dGVyeShzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgaGFzQmF0dGVyeSkKIHsKICAgICBtX2hhc0JhdHRlcnkgPSBXVEZNb3ZlKGhh
c0JhdHRlcnkpOwogICAgIGlmIChtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2spCiAgICAg
ICAgIG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFjaygpOwogfQogCi12b2lkIFN5c3RlbUJh
dHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzZXRIYXNBQyhPcHRpb25hbDxib29sPiYmIGhh
c0FDKQordm9pZCBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2V0SGFzQUMo
c3RkOjpvcHRpb25hbDxib29sPiYmIGhhc0FDKQogewogICAgIG1faGFzQUMgPSBXVEZNb3ZlKGhh
c0FDKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaAppbmRleCA2MzVkYmJmMGE4N2MxNzRjOTQ3ZDhhNTk4YmZiZjk0MGIwOWJkZjdi
Li4xODU3YWI2MTU3NTYyZGQwZDFlZDI3ZDhkYzUxNjViZTY0MWYxYjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBLZXlTdGF0
dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
Pj47Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBj
aGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25h
bDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB1c2lu
ZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vz
c2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtl
eXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlv
bmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7
CkBAIC05NCwxMyArOTQsMTMgQEAgcHVibGljOgogICAgICAgICBPdGhlciwKICAgICB9OwogCi0g
ICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1l
c3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcg
TG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmLCBzdGQ6Om9wdGlv
bmFsPE1lc3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwog
CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYm
LCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNp
bmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5
U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nl
c3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCmlu
ZGV4IDAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJkMDhiZjZiZWRmYWUuLmEzMDI2MTBkYWRl
YWZjN2UwOGFiNzhkNDJlMmQ4OGExYzA5MDFlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uLmgKQEAgLTYyLDM5ICs2MiwzOSBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAg
ICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5p
dERhdGFUeXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERh
dGFUeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAo
IWluaXREYXRhVHlwZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBhdWRpb0NhcGFiaWxpdGll
czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVk
aW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAg
ICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2
aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFD
YXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9D
YXBhYmlsaXRpZXM7CiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50
PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0RNUmVxdWly
ZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5j
dGl2ZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFs
PENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q0RNUmVxdWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBwZXJz
aXN0ZW50U3RhdGU7CiAgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lv
blR5cGU+PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETVNl
c3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOwogICAgICAgICBkZWNvZGVyID4+IHNlc3Npb25UeXBl
czsKICAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAppbmRleCBjYjUwMDRmM2NkNzhjNjUxYWJiYTEz
NDFkZWY2ZjJlY2I3NzJjMjFiLi5jMjU2MTM5Y2ZjOWFmZjQ5YTVjMTQzOTExZmM3OTc5YmI2M2Fi
ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5IHsKICAgICBTdHJpbmcgY29udGVu
dFR5cGU7CiAgICAgU3RyaW5nIHJvYnVzdG5lc3M7Ci0gICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlv
blNjaGVtZT4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENETUVuY3J5cHRp
b25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00OSwxOSArNDks
MTkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0RNTWVk
aWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjb250ZW50VHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKICAgICAgICAg
aWYgKCFjb250ZW50VHlwZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8U3RyaW5nPiByb2J1c3RuZXNzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gcm9idXN0bmVzczsKICAgICAgICAgZGVjb2RlciA+PiByb2J1c3RuZXNzOwogICAg
ICAgICBpZiAoIXJvYnVzdG5lc3MpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0
aW9uU2NoZW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8Q0RNRW5jcnlw
dGlvblNjaGVtZT4+IGVuY3J5cHRpb25TY2hlbWU7CiAgICAgICAgIGRlY29kZXIgPj4gZW5jcnlw
dGlvblNjaGVtZTsKICAgICAgICAgaWYgKCFlbmNyeXB0aW9uU2NoZW1lKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKaW5kZXggNzQxNTQ0MTM3ZjA0OTM4ZjVkYjAz
ZjU0NTYyNTIzYjMxYjRjNzhlMC4uMTM5MjE0NjJjMTRiNjIwYTllNzI3NjU1ZWQwZDI0YzA4NWU0
ZTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENETVByaXZhdGU6Omlz
UGVyc2lzdGVudFR5cGUoQ0RNU2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1PcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25z
LCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKQorc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKQogewog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0
ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAw
OSBOb3ZlbWJlciAyMDE2CkBAIC0zNTksNyArMzU5LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25z
dAogICAgIC8vIE5PVEU6IENvbnRpbnVlZCBpbiBnZXRDb25zZW50U3RhdHVzKCkuCiB9CiAKLU9w
dGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0
ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE1Qcml2YXRlOjpBdWRpb1ZpZGVvVHlw
ZSB0eXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJp
bGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJh
dGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCitzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRp
ZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE1Qcml2YXRlOjpBdWRpb1ZpZGVvVHlwZSB0eXBlLCBjb25z
dCBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVz
dHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRpZXMtZm9yLWF1ZGlvLXZp
ZGVvLXR5cGUKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgpAQCAt
Mzg3LDcgKzM4Nyw3IEBAIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDMuNC4gSWYgY29udGVudCB0eXBlIGlzIGFu
IGludmFsaWQgb3IgdW5yZWNvZ25pemVkIE1JTUUgdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQg
aXRlcmF0aW9uLgotICAgICAgICBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gY29udGVudFR5
cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKHJlcXVlc3RlZENhcGFiaWxpdHkuY29udGVu
dFR5cGUsIE1vZGU6OlJmYzIwNDUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBhcnNlZENvbnRl
bnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVk
Q2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CiAgICAgICAgIGlmICghY29u
dGVudFR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDNiOTZlYjc0ODRk
Y2ExNzk3NjNiNWM2ZjMyYzU4MTU2NGMxNThkZDYuLjRkNWU3ZjczMTQ5MDNmOGYwYWJhOWNlNmJk
ZGEwZmUyZGUzNDEzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAg
ICBBbGxvd2VkLAogICAgIH07CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPik+
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBM
b2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKIAog
ICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBj
b25zdCA9IDA7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3QgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBDRE1Qcml2YXRlKCk7CkBAIC0xMDAsOCArMTAwLDggQEAgcHJvdGVjdGVk
OgogICAgIH07CiAKICAgICB2b2lkIGRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0
aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmKTsKLSAgICBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBnZXRTdXBwb3J0
ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0
ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYsIExvY2FsU3RvcmFnZUFjY2Vzcyk7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGdldFN1cHBvcnRlZENhcGFi
aWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlLCBjb25zdCBWZWN0b3I8Q0RN
TWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJik7
CisgICAgc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBnZXRTdXBwb3J0
ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0
ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYsIExvY2FsU3RvcmFnZUFjY2Vzcyk7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gZ2V0U3VwcG9ydGVk
Q2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGUsIGNvbnN0IFZlY3Rv
cjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRpZXMsIGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlv
bnMmKTsKIAogICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIENETVJlc3Ry
aWN0aW9ucyYmKT47CiAgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmLCBM
b2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCA1
NTE1ZWU3MDUyNjFhMDgwZWM4Yzk4Njg2ZDgzZDVhMDNhZWYzYTdlLi5lN2Q2N2JmNDNlMDgxODI5
N2U2MzQ2Nzg2OGI2NjBhYTg4YTgyMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9p
ZCBDRE1Qcm94eTo6YWJvcnRXYWl0aW5nRm9yS2V5KCkgY29uc3QKICAgICBtX2tleXNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CiB9CiAKLU9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6
dHJ5V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVBy
b3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFJlZjxL
ZXlIYW5kbGU+PiBDRE1Qcm94eTo6dHJ5V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUm
IGtleUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0
CiB7CiAgICAgc3RhcnRlZFdhaXRpbmdGb3JLZXkoKTsKICAgICAvLyBVbmNvbmRpdGlvbmFsbHkg
c2F5aW5nIHdlIGhhdmUgc3RvcHBlZCB3YWl0aW5nIGZvciBhIGtleSBtZWFucyB0aGF0IGRlY3J5
cHRvcnMgb25seSBnZXQKQEAgLTMyNyw3ICszMjcsNyBAQCBib29sIENETVByb3h5OjprZXlBdmFp
bGFibGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKICAgICByZXR1cm4ga2V5QXZhaWxh
YmxlVW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJv
eHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRy
PENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGNvbnN0IEtl
eUlEVHlwZSYga2V5SUQsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIWtleUF2YWlsYWJsZShrZXlJRCkpIHsKICAgICAgICAgTE9H
KEVNRSwgIkVNRSAtIENETVByb3h5IGtleSBjYWNoZSBkb2VzIG5vdCBjb250YWluIGtleSBJRCAl
cyIsIHZlY3RvclRvSGV4U3RyaW5nKGtleUlEKS5hc2NpaSgpLmRhdGEoKSk7CkBAIC0zMzgsNyAr
MzM4LDcgQEAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IENETVByb3h5OjpnZXRPcldhaXRGb3JL
ZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwKICAgICByZXR1cm4gc3RkOjptYWtlX29w
dGlvbmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAotT3B0aW9uYWw8S2V5SGFuZGxl
VmFsdWVWYXJpYW50PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURU
eXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBj
b25zdAorc3RkOjpvcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRP
cldhaXRGb3JLZXlWYWx1ZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5
RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8ga2V5SGFu
ZGxlID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlELCBXVEZNb3ZlKGNsaWVudCkpKQogICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKCgqa2V5SGFuZGxlKS0+dmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApp
bmRleCA0Njk3YjI1MTdhYTU4ZWY0MzJkZmFlZDQ2MDU5MjBkOTI2NTBjN2I4Li5lNjAzYjI1MjZj
NTRjMjI2ODRhNDhmZjMyMTg4ZmQ0MDdjZmI4YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTE2Myw5ICsxNjMsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4ga2V5SGFuZGxlKGNvbnN0IEtleUlEVHlw
ZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0
OwogICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURUeXBlJikgY29uc3Qg
V1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlzTG9jayk7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRs
ZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94
eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAgIE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+
PiBnZXRPcldhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94
eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAgIE9wdGlvbmFsPEtleUhhbmRsZVZhbHVl
VmFyaWFudD4gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxD
RE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0
cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPEtleUhhbmRsZT4+IGdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmLCBX
ZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJikgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtl
eUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYmKSBjb25zdDsKICAg
ICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wcGVkV2Fp
dGluZ0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0IENETUluc3RhbmNlUHJveHkqIGluc3RhbmNl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IDgwN2M4ZTU2M2I1ZTg3YjQ4MjRkMDNhYjZk
ZjYyMjE0NWI2NzE3ZTEuLjY2YTAxMWVkNGE4YWY4ZDE4OGI2NzhlMjgxOTlkM2VkMTdkNmJjNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJl
c3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVJlc3RyaWN0aW9ucy5oCkBAIC00NiwxOSArNDYsMTkgQEAgc3RydWN0IENETVJlc3RyaWN0
aW9ucyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0aXZlSWRlbnRpZmll
ckRlbmllZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJEZW5pZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVk
OwogICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRTdGF0
ZURlbmllZDsKICAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CiAgICAg
ICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6
OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNl
c3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxI
YXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6
OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBl
czsKICAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICgh
ZGVuaWVkU2Vzc2lvblR5cGVzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBiNmMyYWU5ZjI4YjE4YjlmYTViNGJiZjMz
Mzk0NTM2OGVjNjk5NjZlLi4xNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8S2V5SGFu
ZGxlPj4+IHBhcnNlTGljZW5zZUZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VG
b3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogewogICAgIC8vIElmIHRoZSAna2V5cycg
a2V5IGlzIHByZXNlbnQgaW4gdGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVy
CiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KQEAg
LTQxNCw3ICs0MTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZQogICAgIHJldHVybiByZXNw
b25zZS5jb3B5KCk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5Ojpz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBzZXNzaW9u
IElEIHN0cmluZyBhcyBhbiAzMi1iaXQgaW50ZWdlci4KICAgICBpZiAoIXBhcnNlSW50ZWdlcjx1
aW50MzJfdD4oc2Vzc2lvbklkKSkKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVAogICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSWQpOwogI2VuZGlmCiAgICAgYXV0byBk
aXNwYXRjaENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCAmY2FsbGJhY2tdKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmIGNoYW5nZWRLZXlzLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSB7CisgICAgICAgIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJmNhbGxiYWNrXShib29sIHNlc3Npb25XYXND
bG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAg
ICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25XYXNDbG9zZWQsIGNoYW5nZWRLZXlzID0gV1RG
TW92ZShjaGFuZ2VkS2V5cyksIHN1Y2NlZWRlZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVQKIAogICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ2xlYXJLZXkgLSBzZXNzaW9uICVz
IGhhcyAldSBrZXlzIGFmdGVyIHVwZGF0ZSgpIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCksIG1f
a2V5U3RvcmUubnVtS2V5cygpKTsKIAotICAgICAgICBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
IGNoYW5nZWRLZXlzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hh
bmdlZEtleXM7CiAgICAgICAgIGlmIChrZXlzQ2hhbmdlZCkgewogICAgICAgICAgICAgTE9HKEVN
RSwgIkVNRSAtIENsZWFyS2V5IC0gc2Vzc2lvbiAlcyBoYXMgY2hhbmdlZCBrZXlzIiwgc2Vzc2lv
bklkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcGFyZW50SW5zdGFuY2UoKS5tZXJnZUtl
eXNGcm9tKG1fa2V5U3RvcmUpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRv
IGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBPcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2Vzcykgewor
ICAgICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksICZjYWxsYmFja10oS2V5U3Rh
dHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3
ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9
IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1
Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCAxMDc5MDg2MDgwZjkxMmM3ODk3NDUwY2U2MzU1
NmI3YTAzZjI1NDRjLi45YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3NjI1YzhhNjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAK
IGNsYXNzIENETUluc3RhbmNlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VQcm94
eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcAppbmRleCA2YWViYjA1OTAzZjYzMzQ5ZmY5MzZhNDYyYzdiN2Y3MjU1
ZmIyZTJkLi44OGVmMGZiNDkxZTc2Njg0Nzk1NGEzZWE0ZmQxZmZkN2QyNjNlNmYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2Vu
ZXJpYy5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPE5vZGU+PiBtX21hcDsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJp
bmc+IHJlYWRTdHJpbmcoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVhZFN0cmluZyhXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHNpemVfdD4gc2l6ZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXpl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMg
Ym9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2Rlciwg
S2V5ZWREZWNvZGVyR2VuZQogICAgIGF1dG8ga2V5ID0gcmVhZFN0cmluZyhkZWNvZGVyKTsKICAg
ICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPFQ+IHZhbHVl
OworICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIEtl
eWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiAKICAgICBib29sIG9rID0gdHJ1ZTsKICAgICB3aGlsZSAob2spIHsK
LSAgICAgICAgT3B0aW9uYWw8S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZT4gdHlwZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlPiB0eXBlOwogICAgICAg
ICBkZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTA3LDcgKzEwNyw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2Rlckdl
bmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICAgICAg
b2sgPSBmYWxzZTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHNpemU7CisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICAg
ICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5j
cHAKaW5kZXggNjZjZDY1NzRlZGUzNzVjNThiMDRkMDgxODM0YmQ5MDg2ZjAwOTE5MC4uYzM0MTY1
OTYzNjkzOGI3ODY4MzZiNzkxYzJhYTRlMzlhYzk5ZTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNw
ZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyCiAgICAgcmV0dXJuIGZ1bGxTcGVl
ZFJhdGlvIC0gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRpbykgPD0gMC41ID8gZmxvb3JTcGVlZCA6
IGNlaWxTcGVlZDsKIH0KIAotT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IHJlYXNvbnMsIE9wdGlvbmFs
PEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFt
ZVJhdGVzTmVhcjYwRlBTKQorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVhc29ucywgc3Rk
OjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wg
cHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUykKIHsKICAgICBpZiAocmVhc29ucy5jb250YWlucyhU
aHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcgogICAgIHJl
dHVybiBmcmFtZXNQZXJTZWNvbmQ7CiB9CiAKLVNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZh
bChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFy
NjBGUFMpCitTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxp
bmdSZWFzb24+IHJlYXNvbnMsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFs
RnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAg
aWYgKHJlYXNvbnMuY29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkK
ICAgICAgICAgcmV0dXJuIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFt
ZVJhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1l
UmF0ZS5oCmluZGV4IGIyM2E5Mzg4NjBlNWEyZTIxYzRiNjZjOWFlMjAxMWM3ZmFjOGMzOGQuLmVh
MTg4ZjI2ODEwMDY1MTM4YTVjY2RhMTlhY2ZkNGMxYzZkYzFjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCkBAIC01
Nyw5ICs1Nyw5IEBAIGNvbnN0ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNvbmQgSGFsZlNwZWVkVGhy
b3R0bGluZ0ZyYW1lc1BlclNlY29uZCA9IDMwOwogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vj
b25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3BlZWQoRnJhbWVzUGVyU2Vjb25kKTsKIAog
Ly8gVGhpcyB3aWxsIHJldHVybiBzdGQ6Om51bGxvcHQgaWYgdGhyb3R0bGluZyByZXN1bHRzIGlu
IGEgZnJlcXVlbmN5IDwgMWZwcy4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZyYW1lc1BlclNl
Y29uZD4gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29u
PiwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29s
IHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhy
b3R0bGluZ1JlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJh
bWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpOwogCi1XRUJDT1JF
X0VYUE9SVCBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxp
bmdSZWFzb24+LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUyk7CitXRUJDT1JFX0VYUE9SVCBTZWNv
bmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+LCBz
dGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9v
bCBwcmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTKTsKIAogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVy
U2Vjb25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZEZyb21JbnRlcnZhbChTZWNvbmRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IDc2NDRiNDc1MDBhY2MzMWI5OGM0YTEwOGViZDJiNWNkNzBjZjQ0NjQuLjQwY2ZkZTUzYmY2
OGM4ODVlZGMwYmMyZjJjZTU4M2E4NjIwY2EzMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBCaXRt
YXBJbWFnZTo6U3RhcnRBbmltYXRpb25TdGF0dXMgQml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRB
bmltYXRpb24oKQogICAgIC8vIHRocm91Z2ggdGhlIGNhbGxiYWNrIG5ld0ZyYW1lTmF0aXZlSW1h
Z2VBdmFpbGFibGVBdEluZGV4KCkuIE90aGVyd2lzZSwgYWR2YW5jZUFuaW1hdGlvbigpIHdpbGwg
YmUgY2FsbGVkCiAgICAgLy8gd2hlbiB0aGUgdGltZXIgZmlyZXMgYW5kIG1fY3VycmVudEZyYW1l
IHdpbGwgYmUgYWR2YW5jZWQgdG8gbmV4dEZyYW1lIHNpbmNlIGl0IGlzIG5vdCBiZWluZyBkZWNv
ZGVkLgogICAgIGlmIChzaG91bGRVc2VBc3luY0RlY29kaW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSkg
ewotICAgICAgICBpZiAoZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9w
dGlvbnNBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2Rp
bmdPcHRpb25zKE9wdGlvbmFsPEludFNpemU+KCkpKSkKKyAgICAgICAgaWYgKGZyYW1lSGFzRGVj
b2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChuZXh0RnJhbWUsIG1f
Y3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhzdGQ6Om9wdGlvbmFsPElu
dFNpemU+KCkpKSkKICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAl
cCAtIHVybDogJXMgW2NhY2hlZEZyYW1lQ291bnQgPSAlbGQgbmV4dEZyYW1lID0gJWxkXSIsIF9f
RlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKytt
X2NhY2hlZEZyYW1lQ291bnQsIG5leHRGcmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG5leHRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCk7CkBAIC01ODYsMjUgKzU4NiwyNSBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUaGUgYW5pbWF0ZWQgaW1hZ2UgaGFzIG5vdCBiZWVuIGRpc3Bs
YXllZC4gSW4gdGhpcyBjYXNlLCBlaXRoZXIgdGhlIGZpcnN0IGZyYW1lIGhhcyBub3QgYmVlbiBk
ZWNvZGVkIHlldCBvciB0aGUgYW5pbWF0aW9uIGhhcyBub3Qgc3RhcnRlZCB5ZXQuCi0gICAgICAg
IGJvb2wgZnJhbWVJc0NvbXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBh
dGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBs
aW5nTGV2ZWwsIE9wdGlvbmFsPEludFNpemU+KCkpOwotICAgICAgICBib29sIGZyYW1lSXNCZWlu
Z0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBPcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9v
bCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdM
ZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQmVp
bmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKIAogICAg
ICAgICBpZiAoZnJhbWVJc0NvbXBhdGlibGUpCiAgICAgICAgICAgICBpbnRlcm5hbFN0YXJ0QW5p
bWF0aW9uKCk7CiAgICAgICAgIGVsc2UgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7Ci0gICAg
ICAgICAgICBtX3NvdXJjZS0+cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJy
ZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIE9wdGlvbmFsPEludFNpemU+KCkp
OworICAgICAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4
KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFs
PEludFNpemU+KCkpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpEZWNvZGluZzsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2
ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJy
ZW50U3Vic2FtcGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50U2l6ZT4oKSk7Ci0gICAgYm9vbCBmcmFt
ZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhP
cHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgT3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAg
Ym9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0
aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICBib29sIGZyYW1lSXNCZWlu
Z0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOwogICAgIAog
ICAgIGlmIChmcmFtZUlzQ29tcGF0aWJsZSkKICAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tz
KCk7CiAgICAgZWxzZSBpZiAoIWZyYW1lSXNCZWluZ0RlY29kZWQpIHsKLSAgICAgICAgbV9zb3Vy
Y2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1
cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBPcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgbV9z
b3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBt
X2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOwogICAg
ICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29k
aW5nOwogICAgIH0KIH0KQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbWFn
ZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICsrbV9kZWNvZGVD
b3VudEZvclRlc3Rpbmc7CiAKICAgICAvLyBDYWxsIG1fZGVjb2RpbmdDYWxsYmFja3Mgb25seSBp
ZiB0aGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUuCi0gICAg
aWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50
U2l6ZT4oKSkpCisgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZl
bCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkKICAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJh
Y2tzKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggYWM5Nzg0Y2UwYjE3Njc1MDRiMzcx
MWY3Njg0ZTAxMDNkOGFlZDVkNy4uMmVlODdkNDE0ZDIxNWMxYTM1ZWM4NTYzN2Q3ZWUwZTBmNjMz
NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdXRpKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPnV0aSgpOyB9CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPmZpbGVuYW1lRXh0ZW5z
aW9uKCk7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOyB9Ci0g
ICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3NvdXJjZS0+aG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3Bv
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLT5ob3RTcG90KCk7IH0KIAogICAg
IC8vIEZsb2F0U2l6ZSBkdWUgdG8gb3ZlcnJpZGUuCiAgICAgRmxvYXRTaXplIHNpemUoSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPnNpemUob3JpZW50YXRpb24pOyB9CkBAIC05
NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSGFzQWxwaGFBdEluZGV4KGlu
ZGV4KTsgfQogCiAgICAgYm9vbCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiBt
X3NvdXJjZS0+ZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2Ft
cGxpbmdMZXZlbCk7IH0KLSAgICBib29sIGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0
aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNh
bXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucykgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwg
ZGVjb2RpbmdPcHRpb25zKTsgfQorICAgIGJvb2wgZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VD
b21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUhhc0RlY29k
ZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucyk7IH0KIAogICAgIFN1YnNhbXBsaW5nTGV2ZWwgZnJh
bWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLT5mcmFtZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KGluZGV4KTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCBkYWFiMGEzNTU4ZWRkNWYzZDVl
Y2E3MGJkNjk4ZjQ3MTI3Y2ZmYzBmLi4yMjRjMDdkMWFhYzVjZmQ1NjBjODdhMTE4MjdhOTMwZDMx
YTQ1NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTc0
LDEzICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgQ29sb3IoKSA9IGRlZmF1bHQ7CiAKICAgICBDb2xv
cihTUkdCQTx1aW50OF90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7Ci0gICAgQ29sb3IoT3B0
aW9uYWw8U1JHQkE8dWludDhfdD4+LCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKKyAgICBDb2xv
cihzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+
KiA9IG51bGxwdHI+CiAgICAgQ29sb3IoY29uc3QgQ29sb3JUeXBlJiwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBl
LCBmbG9hdD4+KiA9IG51bGxwdHI+Ci0gICAgQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3JUeXBl
PiYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOworICAgIENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Q29sb3JUeXBlPiYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOwogCiAgICAgZXhwbGljaXQg
Q29sb3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSk7CiAgICAgZXhwbGljaXQgQ29sb3Io
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKQEAgLTEyOSwxMyArMTI5LDEzIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBsaWdodGVuZWQoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBDb2xvciBkYXJrZW5lZCgpIGNvbnN0OwogCi0gICAgQ29sb3IgaW52ZXJ0
ZWRDb2xvcldpdGhBbHBoYShPcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0OworICAgIENvbG9y
IGludmVydGVkQ29sb3JXaXRoQWxwaGEoc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0
OwogICAgIENvbG9yIGludmVydGVkQ29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0Owog
Ci0gICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoT3B0aW9uYWw8ZmxvYXQ+KSBj
b25zdDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzdGQ6Om9wdGlvbmFs
PGZsb2F0PikgY29uc3Q7CiAgICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmxv
YXQpIGNvbnN0OwogCi0gICAgQ29sb3IgY29sb3JXaXRoQWxwaGEoT3B0aW9uYWw8ZmxvYXQ+KSBj
b25zdDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYShzdGQ6Om9wdGlvbmFsPGZsb2F0PikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0
OwogCiAgICAgQ29sb3Igb3BhcXVlQ29sb3IoKSBjb25zdCB7IHJldHVybiBjb2xvcldpdGhBbHBo
YSgxLjBmKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBDb2xvciBzZW1hbnRp
Y0NvbG9yKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGNvbG9yIGlm
IGl0cyB0eXBlIGlzIFNSR0JBPHVpbnQ4X3Q+LgotICAgIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiB0cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVp
bnQ4X3Q+PiB0cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBDb2xvcihjb25zdCBHZGtSR0JBJik7CkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgog
ICAgIGZyaWVuZCBib29sIG91dE9mTGluZUNvbXBvbmVudHNzRXF1YWxJZ25vcmluZ1NlbWFudGlj
Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBPdXRPZkxpbmVDb21wb25lbnRzIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE91dE9mTGluZUNvbXBvbmVudHM+IHsKQEAgLTMy
MSw3ICszMjEsNyBAQCBpbmxpbmUgQ29sb3I6OkNvbG9yKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yLCBP
cHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogICAgIHNldENvbG9yKGNvbG9yLCB0b0ZsYWdzSW5jbHVk
aW5nUHJpdmF0ZShmbGFncykpOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKE9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2lubGluZSBDb2xv
cjo6Q29sb3Ioc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gY29sb3IsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpCiB7CiAgICAgaWYgKGNvbG9yKQogICAgICAgICBzZXRDb2xvcigqY29sb3Is
IHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7CkBAIC0zMzQsNyArMzM0LDcgQEAgaW5s
aW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+
IGZsYWdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0
Pj4qPgotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvclR5cGU+JiBjb2xv
ciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2lubGluZSBDb2xvcjo6Q29sb3IoY29uc3Qgc3Rk
OjpvcHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsK
ICAgICBpZiAoY29sb3IpCiAgICAgICAgIHNldE91dE9mTGluZUNvbXBvbmVudHMoT3V0T2ZMaW5l
Q29tcG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25lbnRzKCpjb2xvcikpLCBDb2xvclNwYWNl
Rm9yPENvbG9yVHlwZT4sIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7CkBAIC00MDcs
NyArNDA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgQ29sb3I6
OnRvQ29sb3JUeXBlTG9zc3koKSBjb25zdAogICAgIH0pOwogfQogCi1pbmxpbmUgQ29sb3IgQ29s
b3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEoT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAor
aW5saW5lIENvbG9yIENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhKHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IGFscGhhKSBjb25zdAogewogICAgIHJldHVybiBhbHBoYSA/IGludmVydGVkQ29sb3JX
aXRoQWxwaGEoYWxwaGEudmFsdWUoKSkgOiAqdGhpczsKIH0KQEAgLTQxNywxMiArNDE3LDEyIEBA
IGlubGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmxvYXQgYW1v
dW50KSBjb25zdAogICAgIHJldHVybiBjb2xvcldpdGhBbHBoYShhbW91bnQgKiBhbHBoYUFzRmxv
YXQoKSk7CiB9CiAKLWlubGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVk
QnkoT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAoraW5saW5lIENvbG9yIENvbG9yOjpjb2xv
cldpdGhBbHBoYU11bHRpcGxpZWRCeShzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkgY29uc3QK
IHsKICAgICByZXR1cm4gYWxwaGEgPyBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShhbHBoYS52
YWx1ZSgpKSA6ICp0aGlzOwogfQogCi1pbmxpbmUgQ29sb3IgQ29sb3I6OmNvbG9yV2l0aEFscGhh
KE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkgY29uc3QKK2lubGluZSBDb2xvciBDb2xvcjo6Y29sb3JX
aXRoQWxwaGEoc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGFscGhhID8gY29sb3JXaXRoQWxwaGEoYWxwaGEudmFsdWUoKSkgOiAqdGhpczsKIH0KQEAgLTQ2
Niw3ICs0NjYsNyBAQCBpbmxpbmUgUGFja2VkQ29sb3I6OlJHQkEgQ29sb3I6OmFzUGFja2VkSW5s
aW5lKCkgY29uc3QKICAgICByZXR1cm4gZGVjb2RlZFBhY2tlZElubGluZUNvbG9yKG1fY29sb3JB
bmRGbGFncyk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ29sb3I6OnRy
eUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5s
aW5lKCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgYXNQYWNrZWRJbmxpbmUoKS52YWx1ZTsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8Q29sb3I+
IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGlzVmFsaWQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IGVlNDMzM2M2NGQ1MzcyMmUzMjRhNTgxNGE2NzE3ZjRiMzdkNzM3MGEuLmY3NWExMzkzNGI1MDkx
N2ZmNzE3YmRkN2I2ODQ2Y2Q5NDk0ZTQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIHN0YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVl
bmNlKGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNvbnN0IFVDCiB9CiAKIC8vIEZJWE1FOiBDYXBp
dGFsaXphdGlvbiBpcyBsYW5ndWFnZS1kZXBlbmRlbnQgYW5kIGNvbnRleHQtZGVwZW5kZW50IGFu
ZCBzaG91bGQgb3BlcmF0ZSBvbiBncmFwaGVtZSBjbHVzdGVycyBpbnN0ZWFkIG9mIGNvZGVwb2lu
dHMuCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIg
YmFzZUNoYXJhY3RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBp
dGFsaXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIpCiB7CiAgICAgaWYgKFVfR0VUX0dDX01BU0so
YmFzZUNoYXJhY3RlcikgJiBVX0dDX01fTUFTSykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNh
cGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRTeW50aGVzaXplKGJvb2wgZG9udFN5bnRoZXNpemVT
bWFsbENhcHMsIGNvbnN0IEZvbnQqIG5leHRGb250LCBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIsIE9w
dGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJp
YW50Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQorc3RhdGljIGJvb2wg
c2hvdWxkU3ludGhlc2l6ZShib29sIGRvbnRTeW50aGVzaXplU21hbGxDYXBzLCBjb25zdCBGb250
KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+
IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50Q2FwcywgYm9vbCBl
bmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQogewogICAgIGlmIChkb250U3ludGhlc2l6ZVNt
YWxsQ2FwcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IGVjMmRhMDIz
OTJmMGFjOWNiODQ0ZGQ0NGMyZmJiYWRiNzVhNjg1OTUuLmViMmQxNjIzYTNhMWRlMjAzMzZmZjI2
ZDI4ZDc5NWQ2MjNkNjJkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcyku
Zmx1c2hDb250ZXh0KCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxv
cHQpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUlt
YWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcyku
Zmx1c2hDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZWNvZGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0RlY29kaW5nT3B0aW9ucy5oCmluZGV4IDg0OTNkM2E1NDY2ZjgxN2E2NDMwYjc3NWY3NDFjYTU1
NWY5ZmU4MWMuLjRkMzNkNjE5NDg4ZTQ3OTViZjJkZDVjYmNhNWM0NjAzYWMyNzA5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5o
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgRGVjb2RpbmdP
cHRpb25zKGNvbnN0IE9wdGlvbmFsPEludFNpemU+JiBzaXplRm9yRHJhd2luZykKKyAgICBEZWNv
ZGluZ09wdGlvbnMoY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZvckRyYXdpbmcp
CiAgICAgICAgIDogbV9kZWNvZGluZ01vZGVPclNpemUoc2l6ZUZvckRyYXdpbmcpCiAgICAgewog
ICAgIH0KQEAgLTEwOCwxMCArMTA4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc1Np
emUoKSAmJiBzaXplRm9yRHJhd2luZygpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEludFNpemU+
IHNpemVGb3JEcmF3aW5nKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNpemVG
b3JEcmF3aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTaXplKCkpOwotICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8T3B0aW9uYWw8SW50U2l6ZT4+KG1fZGVjb2RpbmdNb2RlT3JT
aXplKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+KG1f
ZGVjb2RpbmdNb2RlT3JTaXplKTsKICAgICB9CiAKICAgICBzdGF0aWMgaW50IG1heERpbWVuc2lv
bihjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTMzLDE1ICsxMzMsMTUgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgaGFzU2l6ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaGFzPE9wdGlv
bmFsPEludFNpemU+PigpOworICAgICAgICByZXR1cm4gaGFzPHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4+KCk7CiAgICAgfQogCiAgICAgLy8gRm91ciBzdGF0ZXMgb2YgdGhlIGRlY29kaW5nOgogICAg
IC8vIC0gU3luY2hyb25vdXM6IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMKICAgICAvLyAtIEFz
eW5jaHJvbm91cyArIGFueVNpemU6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzCi0gICAgLy8g
LSBBc3luY2hyb25vdXMgKyBpbnRyaW5zaWNTaXplOiBhbiBlbXB0eSBPcHRpb25hbDxJbnRTaXpl
Pj4KLSAgICAvLyAtIEFzeW5jaHJvbm91cyArIHNpemVGb3JEcmF3aW5nOiBhIG5vbmUgZW1wdHkg
T3B0aW9uYWw8SW50U2l6ZT4+Ci0gICAgdXNpbmcgRGVjb2RpbmdNb2RlT3JTaXplID0gVmFyaWFu
dDxEZWNvZGluZ01vZGUsIE9wdGlvbmFsPEludFNpemU+PjsKKyAgICAvLyAtIEFzeW5jaHJvbm91
cyArIGludHJpbnNpY1NpemU6IGFuIGVtcHR5IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+CisgICAg
Ly8gLSBBc3luY2hyb25vdXMgKyBzaXplRm9yRHJhd2luZzogYSBub25lIGVtcHR5IHN0ZDo6b3B0
aW9uYWw8SW50U2l6ZT4+CisgICAgdXNpbmcgRGVjb2RpbmdNb2RlT3JTaXplID0gVmFyaWFudDxE
ZWNvZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+OwogICAgIERlY29kaW5nTW9kZU9y
U2l6ZSBtX2RlY29kaW5nTW9kZU9yU2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKaW5kZXggN2Rh
MjNmZDgyN2RhYmQ1MTI2YTc3MTgwMWQzZTljZDEyMTdiMmM3Ny4uNzZhMTc4NTk2MTBiNGY2YTlh
MjU4M2MzNTlmYjIzNjE0OWZmMDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1Db2xvclNwYWNlIG1fcGxhdGZvcm1Db2xvclNwYWNl
OwpAQCAtNjEsOSArNjEsOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIg
PDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxh
dGZvcm1Db2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBw
bGF0Zm9ybUNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CiAg
ICAgaWYgKCFwbGF0Zm9ybUNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCBjNjc2OTAwMmEyNTFmYTE1Y2JlOTViMzBhMTk2ODgy
NGIyOTFjMGExLi5jNGNjM2MzNDlkMWYyMTAwNmZjZGU0NzIyZjI1NmFjYTgxMmRjMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBib29sIERpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6cmVtb3ZlQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50
KQogICAgIHJldHVybiByZW1vdmVkOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6bWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hN
b25pdG9yOjptYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QKIHsK
LSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1heEZyYW1lc1BlclNlY29uZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4RnJhbWVzUGVyU2Vjb25kOwogICAgIGZv
ciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBtYXhGcmFtZXNQZXJTZWNvbmQg
PSBzdGQ6Om1heDxGcmFtZXNQZXJTZWNvbmQ+KG1heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigw
KSwgY2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgK
aW5kZXggYTIyYjYzMDU2NjY5NmQyZWY3ZjExNjRmZGViNTBlNzY1N2MxZDJkNS4uN2EzMWU3ZWNm
NDc3MjFiOTk3YjIyZjQ2NWM4ZmUzYzg3YTAwMTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTU4
LDkgKzU4LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlQ2xpZW50KERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCYpOwogCiAgICAgdm9pZCBjbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwotICAgIE9wdGlvbmFsPEZy
YW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7
IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5h
bEZyYW1lc1BlclNlY29uZCgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vj
b25kKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCkBAIC05MiwxNCArOTIs
MTQgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmQoRnJhbWVzUGVyU2Vjb25kKSB7IH0KIAotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNl
Y29uZD4gbWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlTWF4UHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKCk7CiAKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+
IG1fY2xpZW50czsKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBt
X2NsaWVudHNUb0JlTm90aWZpZWQgeyBudWxscHRyIH07CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJ
RCBtX2Rpc3BsYXlJRCB7IDAgfTsKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1fbWF4
Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiBtX21heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKIAogICAgIExv
Y2sgbV9sb2NrOwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQuaAppbmRleCAyZTJhODU0OTBkNDM5NDI4M2QwNmEwMGQ0MWY1ODRjNTEyMTU3
NTk3Li40YjBmNWFmYTJlZGE0MTQ1NTY5YTc1ZWRiMGRmZDJlMmZkZjdlODExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
aXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChjb25zdCBEaXNwbGF5VXBkYXRlJik7CiAKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlEOwogICAgIEZyYW1lc1Bl
clNlY29uZCBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCB7IEZ1bGxTcGVlZEZyYW1lc1BlclNl
Y29uZCB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlci5jcHAKaW5kZXggNjgzNjc3NmU3NmMwM2NiMjYzOTA3ZGYxZGQ4MmQy
YTZkMmI5ZGM0OC4uN2I5YjlkOWI0NDkzYWY4OTZiYmYxNDY0MzMwNmM4M2IzZDVhOTUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbAogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbihjbGllbnQpOwog
fQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZmFjdG9yeSkKK3N0ZDo6b3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpub21p
bmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQs
IERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGZhY3RvcnkpCiB7CiAgICAgYXV0byogbW9u
aXRvciA9IGVuc3VyZU1vbml0b3JGb3JEaXNwbGF5SUQoZGlzcGxheUlELCBmYWN0b3J5KTsKICAg
ICBpZiAobW9uaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaAppbmRleCBjZmFlZmEy
ZWU2OWI2MzQzOTY2ZmY0N2I2ZTllYWJjYzE1NGIwMzk1Li5mNzZlZTMzMWVmNGEyZTdlODdmZDk2
M2Y1NmU2NGFhZmRmZDI3ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCYpOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmKTsKICAgICAKLSAg
ICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNw
bGF5KFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7Cisg
ICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRG
b3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5
Kik7CiAKICAgICB2b2lkIGNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAppbmRleCBhYmJlY2Y2NWE0MmMyNjE2MGFlMjAy
OTU4YmNlODlhNTBiODNiYTk2Li5mODM0MjRlZjAxMDMxZDBiNmIwMmQwNDUyMWU0N2RkMWY2ZTVi
MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
VXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVw
ZGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBEaXNwbGF5VXBkYXRlIHsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHJlbGV2YW50Rm9yVXBkYXRlRnJlcXVlbmN5KEZyYW1lc1BlclNlY29u
ZCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PERpc3BsYXlVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlzcGxheVVwZGF0ZT4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OSwxNCArNTksMTQgQEAgdm9p
ZCBEaXNwbGF5VXBkYXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERpc3BsYXlVcGRhdGU+IERpc3BsYXlVcGRh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEaXNwbGF5VXBkYXRl
PiBEaXNwbGF5VXBkYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gdXBkYXRlSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdXBk
YXRlSW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJbmRleDsKICAgICBpZiAoIXVwZGF0ZUlu
ZGV4KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25kOwogICAgIGRlY29kZXIgPj4gdXBkYXRlc1BlclNlY29u
ZDsKICAgICBpZiAoIXVwZGF0ZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcApp
bmRleCBmMTdhNTg1OWU4Y2U4OTM4YmYxOGMzMDQ4NzliNzEyZDU3ZWMyZjU4Li5lZWQyNGFkN2Uy
MTlhYjU4YTE4ZWNlMWQ3ZDg4NmY0ZjEwYzlhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgRmxv
YXRMaW5lIEZsb2F0TGluZTo6ZXh0ZW5kZWRUb0JvdW5kcyhjb25zdCBGbG9hdFJlY3QmIGJvdW5k
cykgY29uc3QKICAgICByZXR1cm4geyBsZWZ0LCByaWdodCB9OwogfQogCi1jb25zdCBPcHRpb25h
bDxGbG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVyc2VjdGlvbldpdGgoY29uc3QgRmxvYXRMaW5l
JiBvdGhlckxpbmUpIGNvbnN0Citjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IEZsb2F0
TGluZTo6aW50ZXJzZWN0aW9uV2l0aChjb25zdCBGbG9hdExpbmUmIG90aGVyTGluZSkgY29uc3QK
IHsKICAgICBmbG9hdCBkZW5vbWluYXRvciA9ICgobV9zdGFydC54KCkgLSBtX2VuZC54KCkpICog
KG90aGVyTGluZS5zdGFydCgpLnkoKSAtIG90aGVyTGluZS5lbmQoKS55KCkpKSAtICgobV9zdGFy
dC55KCkgLSBtX2VuZC55KCkpICogKG90aGVyTGluZS5zdGFydCgpLngoKSAtIG90aGVyTGluZS5l
bmQoKS54KCkpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0TGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRMaW5lLmgKaW5kZXggMDY4OTUwYzkzMmVjNWExOTcxNjIyYjVmZWY2NmM3ODA5ZTZkZGNmMS4u
NWUxMzcwM2QxNGIyYjQ1MzcyNTJkYjg4YmZiNGZhMmE1ZDk1NzYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKQEAgLTUzLDEwICs1MywxMCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRmxvYXRQb2ludCBwb2ludEF0QWJzb2x1
dGVEaXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAgY29uc3QgRmxvYXRQb2ludCBwb2ludEF0UmVs
YXRpdmVEaXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAgY29uc3QgRmxvYXRMaW5lIGV4dGVuZGVk
VG9Cb3VuZHMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgY29uc3QgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gaW50ZXJzZWN0aW9uV2l0aChjb25zdCBGbG9hdExpbmUmKSBjb25zdDsKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGludGVyc2VjdGlvbldpdGgoY29uc3QgRmxv
YXRMaW5lJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPEZsb2F0TGluZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdExpbmU+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgCiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9zdGFydCB7IDAsIDAgfTsKQEAgLTcw
LDE0ICs3MCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEZsb2F0TGluZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2VuZDsKIH0KIAot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRMaW5lPiBGbG9hdExpbmU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRp
b25hbDxGbG9hdExpbmU+IEZsb2F0TGluZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc3RhcnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBzdGFydDsKICAgICBkZWNvZGVyID4+IHN0YXJ0OwogICAgIGlmICghc3RhcnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7
CiAgICAgaWYgKCFlbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCmluZGV4IGY1ZGNiNDY2NjAyZDNh
MTgzNTFiYjBlNjI5MDk1ZmNjNDE2MDJkNzkuLjBmNjMwM2QyZDFlNDMwN2E1MzNkOTI0MDc5OWVk
OTlhZTdiOWQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UXVhZC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb3VudGVyY2xv
Y2t3aXNlKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPEZsb2F0UXVhZD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3AxOwpAQCAtMTY4LDI0ICsxNjgsMjQgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBGbG9hdFF1YWQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9wNDsKIH0KIAotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRRdWFkPiBGbG9hdFF1YWQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+
IEZsb2F0UXVhZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gcDE7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwMTsKICAgICBkZWNv
ZGVyID4+IHAxOwogICAgIGlmICghcDEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwMjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9p
bnQ+IHAyOwogICAgIGRlY29kZXIgPj4gcDI7CiAgICAgaWYgKCFwMikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAzOworICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gcDM7CiAgICAgZGVjb2RlciA+PiBwMzsKICAgICBpZiAoIXAz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2lu
dD4gcDQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwNDsKICAgICBkZWNvZGVyID4+
IHA0OwogICAgIGlmICghcDQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGU1OTEyYTk5ZDBlNmRkMjBm
MWVkYjMwMGI2Mzk2ZjkxMTkxMzhjYzUuLjE3YTM3YWY4YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNj
NDdmNzkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBA
IC01OCwxMiArNTgsMTIgQEAgY29uc3QgZmxvYXQgZW1waGFzaXNNYXJrRm9udFNpemVNdWx0aXBs
aWVyID0gMC41ZjsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihGb250
KTsKIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2li
aWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNr
LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCitSZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
T3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNp
YmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlh
bCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgbnVsbHB0cikp
OwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwg
T3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9u
dENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRp
YWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlv
bkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRl
bnRpZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwg
b3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlk
ZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQpAQCAtNzcsNyArNzcsNyBA
QCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAgIHJldHVybiBGb250OjpjcmVhdGUoQ2FjaGVk
Rm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoKmN1c3RvbUZvbnREYXRhLCBkZXNjcmlw
dGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCB7IH0sIHsgfSksIG9yaWdpbiwg
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRl
cnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmll
bnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEpCitGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
T3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNp
YmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogICAgIDogbV9wbGF0
Zm9ybURhdGEocGxhdGZvcm1EYXRhKQogICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQpA
QCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBw
YWdlVG9GaWxsLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMCiAgICAgcmV0dXJuIGhh
c0dseXBoczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydElu
ZGV4KFVDaGFyMzIgY29kZVBvaW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb2Rl
UG9pbnRTdXBwb3J0SW5kZXgoVUNoYXIzMiBjb2RlUG9pbnQpCiB7CiAgICAgLy8gRklYTUU6IENv
bnNpZGVyIHJlb3JkZXJpbmcgdGhlc2Ugc28gdGhlIG1vc3QgY29tbW9uIG9uZXMgYXJlIGF0IHRo
ZSBmcm9udC4KICAgICAvLyBEb2luZyB0aGlzIGNvdWxkIGNhdXNlIHRoZSBCaXRWZWN0b3IgdG8g
Zml0IGluc2lkZSBpbmxpbmUgc3RvcmFnZSBhbmQgdGhlcmVmb3JlCkBAIC0yMDAsNyArMjAwLDcg
QEAgc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIg
Y29kZVBvaW50KQogICAgICAgICByZXR1cm4gY29kZVBvaW50OwogICAgIGlmIChjb2RlUG9pbnQg
Pj0gMHg3RiAmJiBjb2RlUG9pbnQgPCAweEEwKQogICAgICAgICByZXR1cm4gY29kZVBvaW50IC0g
MHg3RiArIDB4MjA7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiByZXN1bHQ7CisgICAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGNvZGVQb2ludCkgewogICAgIGNhc2Ug
c29mdEh5cGhlbjoKICAgICAgICAgcmVzdWx0ID0gMHg0MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaAppbmRleCBlNWZhN2FlNDYxNzc0ZWZhZmJjNjNlMGI5MmE0ODRjZTU4
OTQ4ODBjLi43NzhlZjBmMmEyNzMwMmNlODY0MTIwMWQzZjgyMzI5ZmZjMmI3NTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC05NCw5ICs5NCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgTm8KICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9u
dD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2Fs
LCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0g
VmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFs
bGJhY2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMg
UmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2Fj
aGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFs
OjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0
aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CkBAIC0xODcs
NyArMTg3LDcgQEAgcHVibGljOgogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIo
VUNoYXIzMikgY29uc3Q7CiAgICAgR2x5cGggZ2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29u
c3Q7CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKLSAgICBib29s
IHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFy
aWF0aW9uID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHND
b2RlUG9pbnQoVUNoYXIzMiwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogCiAgICAgUmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZv
ckNoYXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3Jt
Rm9udCwgRm9udENhY2hlJikgY29uc3Q7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBiZWdpbm5pbmdH
bHlwaEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJu
aW5nLCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJp
bmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBudWxs
b3B0IGlmIG5vbmUgb2YgdGhlIGdseXBocyBhcmUgT1QtU1ZHIGdseXBocy4KLSAgICBPcHRpb25h
bDxCaXRWZWN0b3I+IGZpbmRPVFNWR0dseXBocyhjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5z
aWduZWQgY291bnQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBmaW5kT1RT
VkdHbHlwaHMoY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIHVuc2lnbmVkIGNvdW50KSBjb25zdDsK
IAogICAgIGJvb2wgaGFzQW55Q29tcGxleENvbG9yRm9ybWF0R2x5cGhzKGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3Jp
ZW50YXRpb25GYWxsYmFjaywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwg
Rm9udENhY2hlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udChjb25zdCBGb250UGxhdGZvcm1E
YXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJh
Y2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgRm9udENhY2hl
Kik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogICAgIHZvaWQgcGxhdGZvcm1HbHlwaElu
aXQoKTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSGFzaE1hcDx1
bnNpZ25lZCwgUmVmUHRyPEdseXBoUGFnZT4+IG1fZ2x5cGhQYWdlczsKICAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRz
TWFwOwogICAgIG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1h
cDsKLSAgICBtdXRhYmxlIEdseXBoTWV0cmljc01hcDxPcHRpb25hbDxQYXRoPj4gbV9nbHlwaFBh
dGhNYXA7CisgICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxQYXRoPj4g
bV9nbHlwaFBhdGhNYXA7CiAgICAgbXV0YWJsZSBCaXRWZWN0b3IgbV9jb2RlUG9pbnRTdXBwb3J0
OwogCiAgICAgbXV0YWJsZSBSZWZQdHI8T3BlblR5cGVNYXRoRGF0YT4gbV9tYXRoRGF0YTsKQEAg
LTMwOSw3ICszMDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0
YT4gbV92ZXJ0aWNhbERhdGE7CiAjZW5kaWYKIAotICAgIG11dGFibGUgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewog
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0zMjcsMTIgKzMyNywx
MiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERlcml2ZWRGb250cz4g
bV9kZXJpdmVkRm9udERhdGE7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIE9w
dGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVBldGl0
ZUNhcHM7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVk
QnlBbGxQZXRpdGVDYXBzOwotICAgIG11dGFibGUgT3B0aW9uYWw8UEFMOjpPVFNWR1RhYmxlPiBt
X290U1ZHVGFibGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxDb21wbGV4Q29sb3JGb3JtYXRHbHlw
aHM+IG1fZ2x5cGhzV2l0aENvbXBsZXhDb2xvckZvcm1hdDsgLy8gU1ZHIGFuZCBzYml4CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxs
Q2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBv
cnRlZEJ5QWxsU21hbGxDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+
IG1fZ2x5cGhzU3VwcG9ydGVkQnlQZXRpdGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxQQUw6Ok9UU1ZHVGFibGU+IG1fb3RTVkdUYWJsZTsKKyAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8Q29tcGxleENvbG9yRm9ybWF0R2x5cGhzPiBtX2dseXBoc1dpdGhD
b21wbGV4Q29sb3JGb3JtYXQ7IC8vIFNWRyBhbmQgc2JpeAogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAppbmRleCBiNTAyZDlmZWQyYWY0ZTc5ZTI5NmRmZmUyZTg2NTdlNDYwNWQ3ODU2Li42ZGNkNTU2
N2EzMmU2OWFlNjAyNmY1OWI0YzU2YTQyY2ZlYWYyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBGb250
Q2FjaGU6OkZvbnRDYWNoZSgpCiAKIEZvbnRDYWNoZTo6fkZvbnRDYWNoZSgpID0gZGVmYXVsdDsK
IAotT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OmFsdGVybmF0ZUZhbWlseU5hbWUo
Y29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQorc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZv
bnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7
CiAgICAgaWYgKGF1dG8gcGxhdGZvcm1TcGVjaWZpY0FsdGVybmF0ZSA9IHBsYXRmb3JtQWx0ZXJu
YXRlRmFtaWx5TmFtZShmYW1pbHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtU3BlY2lm
aWNBbHRlcm5hdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCmluZGV4IDdkYjBiMjk3NjJmYmZkMzlhNTA1ZDdjYmJiZjI4ZWE3MzI2YjUxMGIuLjgxMzcy
YmE5YWQ4NTZkNGE4NTE0NWMwOTViMmZhMjIxOWQ2ZGI1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGlj
OgogICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHJld2Fy
bUluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShE
ZWNvZGVyJik7CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1J
bmZvcm1hdGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3Jt
YXRpb24mKTsKQEAgLTMwNyw4ICszMDcsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0Zm9ybSAodW5jbGVhciB3aGljaCBmdW5j
dGlvbnMgdGhpcyBjb21tZW50IGFwcGxpZXMgdG8pLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZl
YXR1cmVTZXR0aW5ncyosIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogICAg
IAotICAgIHN0YXRpYyBPcHRpb25hbDxBU0NJSUxpdGVyYWw+IGFsdGVybmF0ZUZhbWlseU5hbWUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEFTQ0lJTGl0ZXJhbD4gcGxhdGZv
cm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEFTQ0lJTGl0ZXJhbD4gYWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IHBsYXRmb3JtQWx0ZXJuYXRl
RmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFRpbWVyIG1fcHVyZ2VUaW1lcjsKICAg
ICAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uPiBGb250Q2FjaGU6
OlByZXdhcm1JbmZvcm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uPiBGb250Q2FjaGU6OlByZXdhcm1JbmZv
cm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUHJld2FybUluZm9ybWF0
aW9uIHByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZXdhcm1J
bmZvcm1hdGlvbi5zZWVuRmFtaWxpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGQxZWZjODVlMjBmMDZjODhhN2QxNWQyYzgw
MjVlZWU2ZmI4OTRkNDMuLjAzMGM1NzUwMTUxNTZlMjY2OWQxMDU3NmFiZjgwYWM4NjU5MmFiMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKQEAgLTE4MSw3ICsxODEsNyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0VGV4
dChDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJu
IGxheW91dENvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNpcyk7CiB9CiAK
LUZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBm
cm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitGbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNv
bnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3Ro
KCkpOwogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJv
bSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBGbG9h
dFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjbwogICAgIHJldHVybiBzdGFydFBvaW50IC0gcG9pbnQ7CiB9CiAK
LXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBj
b25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB0bykgY29uc3QKIHsKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAg
ICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9p
bnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxp
c3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2ln
bmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
bikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlz
dD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSk7
CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwpA
QCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRo
SWZBdmFpbGFibGUoZmxvYXQmIHdpZHRoKSBjb25zdAogICAgIHJldHVybiBzdWNjZXNzOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIE9wdGlv
bmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVj
dCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAg
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAg
IGlmIChjb2RlUGF0aChydW4sIGZyb20sIHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKQEAgLTUw
MCw3ICs1MDAsNyBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRo
KCkKICAgICByZXR1cm4gc19jb2RlUGF0aDsKIH0KIAotRm9udENhc2NhZGU6OkNvZGVQYXRoIEZv
bnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmVk
PiBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CitGb250Q2FzY2FkZTo6Q29kZVBh
dGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAg
ICAgaWYgKHNfY29kZVBhdGggIT0gQ29kZVBhdGg6OkF1dG8pCiAgICAgICAgIHJldHVybiBzX2Nv
ZGVQYXRoOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBj
b21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHkKIAog
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbWF5IG5vdCB3b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJr
IHVzZXMgYSBjb21wbGV4IHNjcmlwdCwgYnV0IG5vbmUgb2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBo
YXNpcyBtYXJrcyBkbyBzby4KLU9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBjb25zdAorc3RkOjpv
cHRpb25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjEyLDEzICsxMjEyLDEzIEBAIE9w
dGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShj
b25zdCBBdG9tU3RyaW5nJiBtYXJrCiAgICAgfSBlbHNlCiAgICAgICAgIGNoYXJhY3RlciA9IG1h
cmtbMF07CiAKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IGdseXBoRGF0YShnbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyLCBmYWxzZSwgRW1waGFzaXNNYXJrVmFyaWFudCkpOworICAgIHN0
ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNo
YXJhY3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKICAgICByZXR1cm4gZ2x5cGhE
YXRhLnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogc3RkOjpudWxsb3B0OwogfQogCiBp
bnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9tU3RyaW5nJiBtYXJr
KSBjb25zdAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4g
bWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAo
IW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjMyLDcgKzEyMzIsNyBA
QCBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9tU3RyaW5nJiBt
YXJrKSBjb25zdAogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQoY29uc3Qg
QXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IG1hcmtH
bHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7CisgICAgc3RkOjpvcHRp
b25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEo
bWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQogICAgICAgICByZXR1cm4gMDsKIApAQCAt
MTI0Niw3ICsxMjQ2LDcgQEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtEZXNjZW50KGNv
bnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNN
YXJrSGVpZ2h0KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8
R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmsp
OworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFz
aXNNYXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAg
cmV0dXJuIDA7CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zm
c2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
CiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbVN0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGdseXBo
QnVmZmVyLmlzRmxhdHRlbmVkKCkpOwotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBo
RGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJr
KTsKICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU1Niw3
ICsxNTU2LDcgQEAgc3RydWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewogICAgIGZsb2F0IG1heFg7
CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9h
dCB5LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBvaW50IHAyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9hdFBvaW50IHAxLCBGbG9h
dFBvaW50IHAyKQogewogICAgIGlmICgocDEueSgpIDwgeSAmJiBwMi55KCkgPiB5KSB8fCAocDEu
eSgpID4geSAmJiBwMi55KCkgPCB5KSkKICAgICAgICAgcmV0dXJuIHAxLngoKSArICh5IC0gcDEu
eSgpKSAqIChwMi54KCkgLSBwMS54KCkpIC8gKHAyLnkoKSAtIHAxLnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA4MDI4YjNhZWE2
NjhmZDk3MzAwYWEwZjI0MjU3MzMxMTk3OGFhZmIxLi42M2U3NmNmODQwYzRjMDJiZTg2NGE4NjRm
MTUxOTc5MzYzNDE1ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51bGxwdHIpIGNvbnN0
OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250
Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRv
ID0gc3RkOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZG
b250Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9w
dCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBj
b25zdDsKICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01v
ZGUpOwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWdu
ZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVj
dCYgbGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBmbG9hdCB3aWR0aChUZXh0TGF5b3V0JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bGVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDApOwogCiAgICAgaW50
IG9mZnNldEZvclBvc2l0aW9uKGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7Ci0gICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWdu
ZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7
CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5
b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENh
cHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZv
bnRWYXJpYW50Q2Fwczo6U21hbGw7IH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBt
X2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCiAgICAgLy8gQSBzdGQ6Om51bGxvcHQg
cmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9ybWFsIi4KLSAgICBPcHRpb25h
bDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uLml0YWxpYygpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0YWxpYygpOyB9CiAg
ICAgRm9udFNlbGVjdGlvblZhbHVlIHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uLndlaWdodCgpOyB9CiAgICAgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKTsgfQogCkBAIC0x
OTEsNyArMTkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxp
YXNpbmdBdmFpbGFibGUoKTsKIAogICAgIGVudW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsg
QXV0bywgU2ltcGxlLCBDb21wbGV4LCBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENv
ZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRleHRSdW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9
IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKKyAgICBDb2RlUGF0aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5n
ZUNvZGVQYXRoKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1w
bGU7IH0KICAgICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbik7CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgZmxvYXQgc3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgeyByZXR1cm4gMTQ7IH0KIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlz
cGxheUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNp
Z25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0geyB9LCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gPSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnRO
b3RSZWFkeSkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9y
eURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0
byA9IHsgfSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oV0lO
KSAmJiBVU0UoQ0cpCiAgICAgc3RhdGljIHZvaWQgc2V0Rm9udFNtb290aGluZ0xldmVsKGludCk7
CkBAIC0yMjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25G
b3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRl
UGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2lt
cGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBn
ZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRv
bVN0cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgY2FuUmV0dXJuRmFsbGJhY2tGb250
c0ZvckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dy
YXBoc0luQ29tcGxleFRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaAppbmRleCBmZmYzZTYwZTQwNzk3
YTdkMjU3ZTBiNWE5ZjJhZjI2OTdkMTViZmJiLi5iYjJhMGY2ZDgyZjMxZDY3MmE1MTY5ZWVlYzg3
NTA5OGY0OThkNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgZm9udCBwcm9wZXJ0aWVz
LgotICAgIHN0YXRpYyBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMo
KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250
U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICBzdGF0aWMgRm9udFN0eWxlQXhpcyBpbml0aWFsRm9udFN0eWxlQXhpcygpIHsgcmV0dXJu
IEZvbnRTdHlsZUF4aXM6OnNsbnQ7IH0KICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGlu
aXRpYWxXZWlnaHQoKSB7IHJldHVybiBub3JtYWxXZWlnaHRWYWx1ZSgpOyB9CiAgICAgc3RhdGlj
IEZvbnRTZWxlY3Rpb25WYWx1ZSBpbml0aWFsU3RyZXRjaCgpIHsgcmV0dXJuIG5vcm1hbFN0cmV0
Y2hWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUZvbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmgKaW5kZXggNmYwN2JjNGNiNGY0NjYyZTAxMTY3MGQ4ZjE5MTIwNWE2
ZjBjOTkxMS4uYjgyODI4ZDJiNmQxNmRiMTgyNWRjZTZlNjJiMDk0MzI4Y2JjYTZjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMu
aApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgUGl0Y2ggbV9waXRjaCB7IFVua25v
d25QaXRjaCB9OwogICAgIGJvb2wgbV9pc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07CiAjaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBPcHRpb25hbDxSZWY8VGhyZWFkPj4gbV90aHJlYWQ7CisgICAg
c3RkOjpvcHRpb25hbDxSZWY8VGhyZWFkPj4gbV90aHJlYWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5k
ZXggOTgwNjFlZGIzNGE2NjA4ZDhjNTVmN2Q1NTI2NjFhZGQ2YTk5Y2U5MC4uMTkzOWFmZDYzNWNk
MDU1MmNhM2UwMDdmNGJjNWVmYjU2ZWU4YzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogCiAgICAgZmxvYXQgY29tcHV0ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRl
ZFNpemU7IH0KICAgICB1bnNpZ25lZCBjb21wdXRlZFBpeGVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHVuc2lnbmVkKG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KLSAgICBPcHRpb25hbDxGb250U2Vs
ZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlvblJlcXVl
c3Quc2xvcGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGlj
KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZTsgfQogICAgIEZv
bnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9u
UmVxdWVzdC53aWR0aDsgfQogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodDsgfQogICAgIEZvbnRTZWxlY3Rp
b25SZXF1ZXN0IGZvbnRTZWxlY3Rpb25SZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2Vs
ZWN0aW9uUmVxdWVzdDsgfQpAQCAtMTAwLDkgKzEwMCw5IEBAIHB1YmxpYzoKICAgICBib29sIHNo
b3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRE
aXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZzsgfQogCiAgICAgdm9pZCBzZXRDb21wdXRlZFNpemUo
ZmxvYXQgcykgeyBtX2NvbXB1dGVkU2l6ZSA9IGNsYW1wVG9GbG9hdChzKTsgfQotICAgIHZvaWQg
c2V0SXRhbGljKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKSB7IG1fZm9udFNl
bGVjdGlvblJlcXVlc3Quc2xvcGUgPSBpdGFsaWM7IH0KKyAgICB2b2lkIHNldEl0YWxpYyhzdGQ6
Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKSB7IG1fZm9udFNlbGVjdGlvblJl
cXVlc3Quc2xvcGUgPSBpdGFsaWM7IH0KICAgICB2b2lkIHNldFN0cmV0Y2goRm9udFNlbGVjdGlv
blZhbHVlIHN0cmV0Y2gpIHsgbV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCA9IHN0cmV0Y2g7
IH0KLSAgICB2b2lkIHNldElzSXRhbGljKGJvb2wgaXNJdGFsaWMpIHsgc2V0SXRhbGljKGlzSXRh
bGljID8gT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7IGl0YWxpY1ZhbHVlKCkgfSA6IE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4geyB9KTsgfQorICAgIHZvaWQgc2V0SXNJdGFsaWMo
Ym9vbCBpc0l0YWxpYykgeyBzZXRJdGFsaWMoaXNJdGFsaWMgPyBzdGQ6Om9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4geyBpdGFsaWNWYWx1ZSgpIH0gOiBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4geyB9KTsgfQogICAgIHZvaWQgc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1
ZSB3ZWlnaHQpIHsgbV9mb250U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQgPSB3ZWlnaHQ7IH0KICAg
ICB2b2lkIHNldFJlbmRlcmluZ01vZGUoRm9udFJlbmRlcmluZ01vZGUgbW9kZSkgeyBtX3JlbmRl
cmluZ01vZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSk7IH0KICAgICB2b2lkIHNldFRl
eHRSZW5kZXJpbmdNb2RlKFRleHRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZykgeyBtX3RleHRSZW5k
ZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVuZGVyaW5nKTsgfQpAQCAtMTM5LDcgKzEz
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxGb250RGVzY3JpcHRp
b24+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udERlc2Ny
aXB0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbnZl
c3RpZ2F0ZSBtb3ZpbmcgdGhlc2UgaW50byB0aGVpciBvd24gb2JqZWN0IG9uIHRoZSBoZWFwICh0
byBzYXZlIG1lbW9yeSkuCkBAIC0yNTAsMTY1ICsyNTAsMTY1IEBAIHZvaWQgRm9udERlc2NyaXB0
aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPEZvbnREZXNjcmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0aW9uPiBGb250
RGVzY3JpcHRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgT3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4g
ZmVhdHVyZVNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4g
ZmVhdHVyZVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gZmVhdHVyZVNldHRpbmdzOwogICAgIGlm
ICghZmVhdHVyZVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Rm9udFZhcmlhdGlvblNldHRpbmdzPiB2YXJpYXRpb25TZXR0aW5nczsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRWYXJpYXRpb25TZXR0aW5ncz4gdmFyaWF0aW9uU2V0dGluZ3M7CiAg
ICAgZGVjb2RlciA+PiB2YXJpYXRpb25TZXR0aW5nczsKICAgICBpZiAoIXZhcmlhdGlvblNldHRp
bmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QXRvbVN0
cmluZz4gbG9jYWxlOworICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbG9jYWxlOwogICAg
IGRlY29kZXIgPj4gbG9jYWxlOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPj4g
aXRhbGljOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFs
dWU+PiBpdGFsaWM7CiAgICAgZGVjb2RlciA+PiBpdGFsaWM7CiAgICAgaWYgKCFpdGFsaWMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9u
VmFsdWU+IHN0cmV0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IHN0
cmV0Y2g7CiAgICAgZGVjb2RlciA+PiBzdHJldGNoOwogICAgIGlmICghc3RyZXRjaCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1
ZT4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7
CiAgICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gY29tcHV0ZWRTaXplOworICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNvbXB1dGVkU2l6ZTsKICAgICBkZWNvZGVyID4+IGNvbXB1
dGVkU2l6ZTsKICAgICBpZiAoIWNvbXB1dGVkU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CisgICAg
c3RkOjpvcHRpb25hbDxGb250T3JpZW50YXRpb24+IG9yaWVudGF0aW9uOwogICAgIGRlY29kZXIg
Pj4gb3JpZW50YXRpb247CiAgICAgaWYgKCFvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE5vbkNKS0dseXBoT3JpZW50YXRpb24+IG5vbkNK
S0dseXBoT3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxOb25DSktHbHlwaE9yaWVudGF0
aW9uPiBub25DSktHbHlwaE9yaWVudGF0aW9uOwogICAgIGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhP
cmllbnRhdGlvbjsKICAgICBpZiAoIW5vbkNKS0dseXBoT3JpZW50YXRpb24pCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3aWR0
aFZhcmlhbnQ7CisgICAgc3RkOjpvcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3aWR0aFZhcmlh
bnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7CiAgICAgaWYgKCF3aWR0aFZhcmlhbnQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250UmVuZGVy
aW5nTW9kZT4gcmVuZGVyaW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRSZW5kZXJpbmdN
b2RlPiByZW5kZXJpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nTW9kZTsKICAgICBp
ZiAoIXJlbmRlcmluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7CisgICAgc3RkOjpv
cHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXRleHRSZW5kZXJpbmdNb2RlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFN5bnRoZXNpcz4g
Zm9udFN5bnRoZXNpczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTeW50aGVzaXM+IGZvbnRTeW50
aGVzaXM7CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhlc2lzOwogICAgIGlmICghZm9udFN5bnRo
ZXNpcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRDb21tb25MaWdhdHVyZXM7CiAgICAgZGVj
b2RlciA+PiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOwogICAgIGlmICghdmFyaWFudENvbW1vbkxp
Z2F0dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50RGlzY3JldGlvbmFyeUxp
Z2F0dXJlczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwog
ICAgIGlmICghdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gdmFyaWFu
dEhpc3RvcmljYWxMaWdhdHVyZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudExpZ2F0
dXJlcz4gdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50
SGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlh
bnRMaWdhdHVyZXM+IHZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlczsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAg
ICAgZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgaWYgKCF2YXJp
YW50Q29udGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CisgICAg
c3RkOjpvcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CiAgICAg
ZGVjb2RlciA+PiB2YXJpYW50UG9zaXRpb247CiAgICAgaWYgKCF2YXJpYW50UG9zaXRpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudENh
cHM+IHZhcmlhbnRDYXBzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRDYXBzPiB2YXJp
YW50Q2FwczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRDYXBzOwogICAgIGlmICghdmFyaWFudENh
cHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFy
aWFudE51bWVyaWNGaWd1cmU+IHZhcmlhbnROdW1lcmljRmlndXJlOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnROdW1lcmljRmlndXJlPiB2YXJpYW50TnVtZXJpY0ZpZ3VyZTsKICAgICBk
ZWNvZGVyID4+IHZhcmlhbnROdW1lcmljRmlndXJlOwogICAgIGlmICghdmFyaWFudE51bWVyaWNG
aWd1cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250
VmFyaWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CisgICAgc3RkOjpv
cHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7
CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CiAgICAgaWYgKCF2YXJpYW50
TnVtZXJpY1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gdmFyaWFudE51bWVyaWNGcmFjdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiB2YXJpYW50TnVt
ZXJpY0ZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNGcmFjdGlvbjsKICAg
ICBpZiAoIXZhcmlhbnROdW1lcmljRnJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiB2YXJpYW50TnVt
ZXJpY09yZGluYWw7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFs
PiB2YXJpYW50TnVtZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY09y
ZGluYWw7CiAgICAgaWYgKCF2YXJpYW50TnVtZXJpY09yZGluYWwpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
bz4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJp
YW50TnVtZXJpY1NsYXNoZWRaZXJvPiB2YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRl
Y29kZXIgPj4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIXZhcmlhbnROdW1l
cmljU2xhc2hlZFplcm8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IHZhcmlhbnRBbHRlcm5hdGVzOworICAgIHN0ZDo6
b3B0aW9uYWw8Rm9udFZhcmlhbnRBbHRlcm5hdGVzPiB2YXJpYW50QWx0ZXJuYXRlczsKICAgICBk
ZWNvZGVyID4+IHZhcmlhbnRBbHRlcm5hdGVzOwogICAgIGlmICghdmFyaWFudEFsdGVybmF0ZXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQ+IHZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OworICAgIHN0ZDo6b3B0
aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50PiB2YXJpYW50RWFzdEFzaWFuVmFyaWFu
dDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OwogICAgIGlmICghdmFy
aWFudEVhc3RBc2lhblZhcmlhbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB2YXJpYW50RWFzdEFzaWFuV2lk
dGg7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB2YXJpYW50
RWFzdEFzaWFuV2lkdGg7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7CiAg
ICAgaWYgKCF2YXJpYW50RWFzdEFzaWFuV2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHZhcmlhbnRFYXN0
QXNpYW5SdWJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiB2
YXJpYW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5
OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1YnkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250T3B0aWNhbFNpemluZz4gb3B0aWNhbFNpemluZzsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRPcHRpY2FsU2l6aW5nPiBvcHRpY2FsU2l6aW5nOwogICAg
IGRlY29kZXIgPj4gb3B0aWNhbFNpemluZzsKICAgICBpZiAoIW9wdGljYWxTaXppbmcpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U3R5bGVBeGlzPiBm
b250U3R5bGVBeGlzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxl
QXhpczsKICAgICBkZWNvZGVyID4+IGZvbnRTdHlsZUF4aXM7CiAgICAgaWYgKCFmb250U3R5bGVB
eGlzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QWxsb3dV
c2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzOworICAgIHN0
ZDo6b3B0aW9uYWw8QWxsb3dVc2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzOwogICAgIGRlY29kZXIgPj4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7
CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZERpc2FibGVMaWdhdHVy
ZXNGb3JTcGFjaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkRGlzYWJsZUxpZ2F0
dXJlc0ZvclNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBzaG91bGREaXNhYmxlTGlnYXR1cmVzRm9y
U3BhY2luZzsKICAgICBpZiAoIXNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDc3YWRjMTM3ODc2N2I0Y2Y3YWU1
M2Y1OTk5MTdkMDMyNWI4ZDA1ZTYuLjBkMTE3ZDYwNmE1YzVlMjRjYTQ5ZDA3MTE4YTEwNWZmM2Yz
MDRkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
OwogCi0gICAgY29uc3QgT3B0aW9uYWw8Q3JlYXRpb25EYXRhPiYgY3JlYXRpb25EYXRhKCkgY29u
c3QKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENyZWF0aW9uRGF0YT4mIGNyZWF0aW9uRGF0YSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9jcmVhdGlvbkRhdGE7CiAgICAgfQpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udFdpZHRoVmFyaWFudCBtX3dpZHRoVmFy
aWFudCB7IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCB9OwogICAgIFRleHRSZW5kZXJp
bmdNb2RlIG1fdGV4dFJlbmRlcmluZ01vZGUgeyBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRS
ZW5kZXJpbmcgfTsKIAotICAgIE9wdGlvbmFsPENyZWF0aW9uRGF0YT4gbV9jcmVhdGlvbkRhdGE7
CisgICAgc3RkOjpvcHRpb25hbDxDcmVhdGlvbkRhdGE+IG1fY3JlYXRpb25EYXRhOwogCiAgICAg
Ym9vbCBtX3N5bnRoZXRpY0JvbGQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zeW50aGV0aWNPYmxp
cXVlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKaW5kZXggMzU3YjQwMjNlZTA4ZGEw
Y2RlODk2ODJkOGRjYzc3OGUxYzhlZmUwMy4uMzNkYzQyOWNhOTYyNmE2Y2YyMzNhNjI2NmZmYzE2
OTNjMzFjYWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250U2VsZWN0aW9uQWxnb3JpdGhtOjpGb250U2VsZWN0
aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxD
YXBhYmlsaXRpZXM+JiBjYXBhYmlsaXRpZXMsIE9wdGlvbmFsPENhcGFiaWxpdGllcz4gYm91bmRz
KQorRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6Rm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2Vs
ZWN0aW9uUmVxdWVzdCByZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYgY2FwYWJp
bGl0aWVzLCBzdGQ6Om9wdGlvbmFsPENhcGFiaWxpdGllcz4gYm91bmRzKQogICAgIDogbV9yZXF1
ZXN0KHJlcXVlc3QpCiAgICAgLCBtX2NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpCiB7CkBAIC0x
MzksNyArMTM5LDcgQEAgYXV0byBGb250U2VsZWN0aW9uQWxnb3JpdGhtOjp3ZWlnaHREaXN0YW5j
ZShDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBjb25zdCAtPgogCiBGb250U2VsZWN0aW9uVmFs
dWUgRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6YmVzdFZhbHVlKGNvbnN0IGJvb2wgZWxpbWluYXRl
ZFtdLCBEaXN0YW5jZUZ1bmN0aW9uIGNvbXB1dGVEaXN0YW5jZSkgY29uc3QKIHsKLSAgICBPcHRp
b25hbDxEaXN0YW5jZVJlc3VsdD4gc21hbGxlc3REaXN0YW5jZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PERpc3RhbmNlUmVzdWx0PiBzbWFsbGVzdERpc3RhbmNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gbV9jYXBhYmlsaXRpZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGlmIChlbGltaW5hdGVkW2ldKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGht
LmgKaW5kZXggYmM4ZDdkOWUzOWVjZTMyMjRlYzg4ZjIzODgwOWY5ZmJjNDc1ZTE5OC4uMmJkNzYz
NDkzYzgzNGU5OTE2MGU2ZDkwNDUxZGQyMzA5NzczNjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaApA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFJhd1RhZyB7IFJhd1RhZyB9OwpAQCAtODcsOSArODcsOSBAQCB2b2lkIEZv
bnRTZWxlY3Rpb25WYWx1ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEZvbnRT
ZWxlY3Rpb25WYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZv
bnRTZWxlY3Rpb25WYWx1ZT4gRm9udFNlbGVjdGlvblZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBi
YWNraW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlOjpCYWNraW5nVHlw
ZT4gYmFja2luZzsKICAgICBkZWNvZGVyID4+IGJhY2tpbmc7CiAgICAgaWYgKCFiYWNraW5nKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk2LDcgKzE5Niw3IEBAIGNvbnN0ZXhw
ciBGb250U2VsZWN0aW9uVmFsdWUgaXRhbGljVGhyZXNob2xkKCkKICAgICByZXR1cm4gRm9udFNl
bGVjdGlvblZhbHVlIHsgMjAgfTsKIH0KIAotY29uc3RleHByIGJvb2wgaXNJdGFsaWMoT3B0aW9u
YWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0KQorY29uc3RleHByIGJvb2wgaXNJdGFs
aWMoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRXZWlnaHQpCiB7CiAgICAg
cmV0dXJuIGZvbnRXZWlnaHQgJiYgZm9udFdlaWdodC52YWx1ZSgpID49IGl0YWxpY1RocmVzaG9s
ZCgpOwogfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHN0cnVjdCBGb250U2VsZWN0aW9uUmFuZ2Ugewog
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGRl
Y29kZShEZWNvZGVyJik7CiAKICAgICBWYWx1ZSBtaW5pbXVtIHsgMSB9OwogICAgIFZhbHVlIG1h
eGltdW0geyAwIH07CkBAIC0zNTcsMTQgKzM1NywxNCBAQCB2b2lkIEZvbnRTZWxlY3Rpb25SYW5n
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IEZvbnRTZWxlY3Rpb25SYW5nZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5n
ZT4gRm9udFNlbGVjdGlvblJhbmdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVlPiBtaW5pbXVtOworICAgIHN0ZDo6b3B0
aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlOjpWYWx1ZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+
IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlOjpWYWx1ZT4gbWF4aW11bTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZTo6VmFsdWU+IG1heGltdW07CiAgICAg
ZGVjb2RlciA+PiBtYXhpbXVtOwogICAgIGlmICghbWF4aW11bSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTM4OSw5ICszODksOSBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblJlcXVl
c3QgewogICAgIC8vICJmb250U3R5bGVBeGlzIiBvbiB0aGUgRm9udERlc2NyaXB0aW9uLiBXZSBz
aG91bGQgY29tZSB1cCB3aXRoIGEgdHJpLXN0YXRlIG1lbWJlcgogICAgIC8vIHNvIHRoYXQgaXQn
cyBhIGxvdCBjbGVhcmVyIHdoZXRoZXIgd2UncmUgZGVhbGluZyB3aXRoIGEgIm5vcm1hbCIsICJp
dGFsaWMiIG9yIGV4cGxpY2l0CiAgICAgLy8gIm9ibGlxdWUiIGZvbnQgc3R5bGUuIFNlZSB3ZWJr
aXQub3JnL2IvMTg3Nzc0LgotICAgIE9wdGlvbmFsPFZhbHVlPiBzbG9wZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZhbHVlPiBzbG9wZTsKIAotICAgIHN0ZDo6dHVwbGU8VmFsdWUsIFZhbHVlLCBPcHRp
b25hbDxWYWx1ZT4+IHRpZWQoKSBjb25zdAorICAgIHN0ZDo6dHVwbGU8VmFsdWUsIFZhbHVlLCBz
dGQ6Om9wdGlvbmFsPFZhbHVlPj4gdGllZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
V1RGOjp0aWUod2VpZ2h0LCB3aWR0aCwgc2xvcGUpOwogICAgIH0KQEAgLTQwMyw3ICs0MDMsNyBA
QCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRm9u
dFNlbGVjdGlvblZhbHVlJiBmb250U2VsZQogICAgIHJldHVybiB0czsKIH0KIAotaW5saW5lIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4mIG9wdGlvbmFsRm9udFNlbGVjdGlvblZhbHVlKQoraW5saW5lIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPiYgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUpCiB7CiAgICAgdHMg
PDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUo
KSk7CiAgICAgcmV0dXJuIHRzOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYSwgY29uc3QgRm9udFNl
bGVjdGlvCiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAg
dXNpbmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllczsKICAgICB1c2lu
ZyBSYW5nZSA9IEZvbnRTZWxlY3Rpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25hbFJhbmdlID0g
T3B0aW9uYWw8UmFuZ2U+OworICAgIHVzaW5nIE9wdGlvbmFsUmFuZ2UgPSBzdGQ6Om9wdGlvbmFs
PFJhbmdlPjsKIAogICAgIGNvbnN0ZXhwciBDYXBhYmlsaXRpZXMgY29tcHV0ZUZvbnRTZWxlY3Rp
b25DYXBhYmlsaXRpZXMoKSBjb25zdAogICAgIHsKQEAgLTUwMSw3ICs1MDEsNyBAQCBzdHJ1Y3Qg
Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7
CiAgICAgT3B0aW9uYWxSYW5nZSB3aWR0aDsKQEAgLTUxNywxOSArNTE3LDE5IEBAIHZvaWQgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlv
blNwZWNpZmllZENhcGFiaWxpdGllcz4gRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWxSYW5n
ZT4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4gd2VpZ2h0OwogICAg
IGRlY29kZXIgPj4gd2VpZ2h0OwogICAgIGlmICghd2VpZ2h0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4gd2lkdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxPcHRpb25hbFJhbmdlPiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwog
ICAgIGlmICghd2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbFJhbmdlPiBzbG9wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsUmFu
Z2U+IHNsb3BlOwogICAgIGRlY29kZXIgPj4gc2xvcGU7CiAgICAgaWYgKCFzbG9wZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU1Miw3ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllczsKIAogICAgIEZv
bnRTZWxlY3Rpb25BbGdvcml0aG0oKSA9IGRlbGV0ZTsKLSAgICBGb250U2VsZWN0aW9uQWxnb3Jp
dGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIE9w
dGlvbmFsPENhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzQm91bmRzID0gc3RkOjpudWxsb3B0KTsK
KyAgICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBW
ZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIHN0ZDo6b3B0aW9uYWw8Q2FwYWJpbGl0aWVzPiBjYXBhYmls
aXRpZXNCb3VuZHMgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgc3RydWN0IERpc3RhbmNlUmVzdWx0
IHsKICAgICAgICAgRm9udFNlbGVjdGlvblZhbHVlIGRpc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAppbmRleCA1
Y2NjZmZiYjg1OGQ5MjIyMmFlMzZiN2E1MWNhNjk0MGIyMWMwNGZhLi40MWJkNzVhNmUwZjVmMTNm
NjNjYjUyYzlkMjk4ZDdkODIwMzViYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGb250VGFnZ2VkU2V0
dGluZzxUPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKICAgICBGb250VGFnIG1fdGFnOwpAQCAtMTE2LDI5ICsxMTYsMjkgQEAg
dm9pZCBGb250VGFnZ2VkU2V0dGluZzxUPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dlZFNldHRpbmc8VD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9u
dFRhZ2dlZFNldHRpbmc8VD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPHVpbnQ4X3Q+IGNoYXIwOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gY2hhcjA7CiAg
ICAgZGVjb2RlciA+PiBjaGFyMDsKICAgICBpZiAoIWNoYXIwKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDhfdD4gY2hhcjE7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50OF90PiBjaGFyMTsKICAgICBkZWNvZGVyID4+IGNoYXIxOwogICAgIGlmICghY2hh
cjEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50OF90
PiBjaGFyMjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIyOwogICAgIGRlY29kZXIg
Pj4gY2hhcjI7CiAgICAgaWYgKCFjaGFyMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIzOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhf
dD4gY2hhcjM7CiAgICAgZGVjb2RlciA+PiBjaGFyMzsKICAgICBpZiAoIWNoYXIzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAgc3Rk
OjpvcHRpb25hbDxUPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFs
dWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFRhZ2dlZFNldHRpbmdzPFQ+PiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZvbnRUYWdnZWRTZXR0aW5nczxUPj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAg
ICBWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+IG1fbGlzdDsKQEAgLTIwMyw5ICsyMDMsOSBA
QCB2b2lkIEZvbnRUYWdnZWRTZXR0aW5nczxUPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxGb250VGFnZ2VkU2V0dGluZ3M8VD4+IEZvbnRUYWdnZWRTZXR0aW5nczxUPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nczxU
Pj4gRm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+PiBsaXN0OworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEZvbnRUYWdnZWRTZXR0aW5nPFQ+Pj4gbGlzdDsKICAgICBkZWNvZGVy
ID4+IGxpc3Q7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAKaW5kZXggY2NkM2U4
NTdhNWNhOWNkOGRhMDk2N2MxYWIwOTM0YWZjMzc0YzVlMC4uZDlhODk2MmIwYmIwZTlhN2I4NmM4
NTczMzA4Yjg1ZDk3MmI1ZDFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm91ckNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb3VyQ0MuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
T3B0aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdW
YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSkKIHsKICAgICBhdXRvIGFzY2lpVmFsdWUgPSBzdHJpbmdWYWx1ZS5h
c2NpaSgpOwogICAgIGlmIChhc2NpaVZhbHVlLmxlbmd0aCgpICE9IDQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCmluZGV4IDFjYTAwNTBmZDYxMDJiOTgyZWNkNjIy
MDg3MTkyNjFhMTdhZmQyNDEuLjJhNjRjNGJjMTU0NjNjZWMxNGIzYzJmMzlmMjU0ZmRkMDUzYmYx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCkBAIC00MSw3
ICs0MSw3IEBAIHN0cnVjdCBGb3VyQ0MgewogICAgIH0KIAogICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGb3VyQ0M+IGZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Rm91ckNDPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlID09IG90aGVy
LnZhbHVlOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAKaW5kZXggYzFkYjgx
Mjc3YTk0MDlkMTIxYTU3ZGM4OTUxNjc2YjllM2IxYzg4NC4uNGE3NWIxMTMxMjM1NDU3NTMwYjYw
NzBiZjY5MTI3NGNmYTJjMmUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0
YXRpYyBmbG9hdCBhbmdsZUJldHdlZW5WZWN0b3JzKGNvbnN0IEZsb2F0U2l6ZSYgdSwgY29uc3Qg
RmxvYXRTaXplJiB2KQogICAgIHJldHVybiBtYWduaXR1ZGVzID8gYWNvcyhjbGFtcFRvPGZsb2F0
Pihkb3RQcm9kdWN0KHUsIHYpIC8gbWFnbml0dWRlcywgLTEsIDEpKSA6IDA7CiB9CiAKLVJvdGF0
ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25z
dCBGbG9hdFF1YWQmIHF1YWQsIE9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFkaWFucykK
K1JvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlv
bihjb25zdCBGbG9hdFF1YWQmIHF1YWQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9u
SW5SYWRpYW5zKQogewogICAgIGNvbnN0ZXhwciBhdXRvIHR3b1BpRmxvYXQgPSAyICogcGlGbG9h
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0
cnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5
VXRpbGl0aWVzLmgKaW5kZXggODBkZTEwZWZhZGI5OWM2OGQzZTA1YmI2MTEyMjk3OTk4NDY1ZmRm
Yy4uM2I3MDkxYTg1NDQyYTBmZDNhZDJkN2Q4MmIzZmI1NDJmMGQxZjNiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCkBA
IC02OCw2ICs2OCw2IEBAIHN0cnVjdCBSb3RhdGVkUmVjdCB7CiAgICAgZmxvYXQgYW5nbGVJblJh
ZGlhbnM7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBSb3RhdGVkUmVjdCByb3RhdGVkQm91bmRpbmdS
ZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFkJiwgT3B0aW9uYWw8
ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3RkOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQ
T1JUIFJvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3Rh
dGlvbihjb25zdCBGbG9hdFF1YWQmLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbklu
UmFkaWFucyA9IHN0ZDo6bnVsbG9wdCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCmluZGV4IDk0OTc1MGRiMGU0MDVlYWFjZjRiNWRkYzdk
NzcyMWFjNzFmOGE5ZDIuLmFmZDhiYTI0ZmMxY2RlN2NkYTk2YzcyZTVkNmIzOTBhY2JmNTYyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApA
QCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2VB
dCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07IH0KICAg
ICBHbHlwaEJ1ZmZlck9yaWdpbiBvcmlnaW5BdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5zW2luZGV4XTsgfQogICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHVuY2hl
Y2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX29mZnNl
dHNJblN0cmluZ1tpbmRleF07IH0KLSAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNl
dD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4g
Y2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5n
dGgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09m
ZnNldEF0KGluZGV4KTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHN0ZDo6bWFrZV91bnNpZ25l
ZF90PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pj4ocmVzdWx0KSA+PSBzdHJpbmdMZW5ndGgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NN
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5o
CmluZGV4IGE0NGY2ODRhYzBlMjA3YTFlZTRkOTBmYjU2ZjIwMjFlMGE3NDUxZTYuLjQ0M2M2M2Fi
ZDE3MGM5MDdhYjczYjg1NjMyM2JmMmY5NDYxNjU3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMTUsNyArMTE1LDcg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+
Ojp1bmtub3duTWV0cmljcygpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBjR2x5cGhTaXpl
VW5rbm93biwgY0dseXBoU2l6ZVVua25vd24pOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBPcHRp
b25hbDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0aW9uYWw8UGF0aD4+Ojp1bmtub3duTWV0cmlj
cygpCit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01h
cDxzdGQ6Om9wdGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1ldHJpY3MoKQogewogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBjOGFjMzg2YjgxMTk1NmE3NzZmZWRkZmFlZWYy
MjgyYzk0YWM4NjJkLi45NGUxYTBmNzliNGZlM2ZhMTUyMWU5ZWQ1MjI3OWQ0YmUwMDc4MmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKQogICAgIC0tbV90cmFuc3BhcmVuY3lMYXllckNvdW50OwogfQogCi1G
bG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQg
ZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvKQogewogICAgIC8vIERpc3BsYXkgbGlzdCByZWNvcmRpbmcgZm9yIHRleHQgY29udGVu
dCBpcyBkb25lIGF0IGdseXBocyBsZXZlbC4gU2VlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBo
cy4KICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8p
OwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBoCiAgICAgRm9udENh
c2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1
bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGZvbnQu
ZHJhd0VtcGhhc2lzTWFya3MoKnRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggZmUxNWVhYjA0YjM1ZmVmOGI3NGVlMWY3M2VlOGY4MTlkOTkwOWI3ZC4uYzA0YjAx
ZTdlOGZlODg5NjU1MzhmNWJlYzFiMTFlOWU1MWMyMjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEzNyw3ICsxMzcs
NyBAQCBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgIGJvb2wgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2UgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEb2N1
bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CkBAIC0xNDgsMTQgKzE0OCwxNCBAQCB2b2lkIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERv
Y3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TW9kZT4gbW9kZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPE1vZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlmICghbW9kZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFVzZURhcmtBcHBlYXJhbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFy
a0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAg
ICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNDY4LDkgKzQ2OCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRleHQKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZy
b20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3Rk
OjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBG
b250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29t
cHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGlu
Zyk7CkBAIC02OTQsNyArNjk0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaGljc0Nv
bnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eVRv
VXNlKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIE9wdGlvbmFsPEludGVycG9sYXRp
b25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eSkKKyAgICBleHBsaWNpdCBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIHN0
ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5KQog
ICAgICAgICA6IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihncmFwaGljc0NvbnRleHQs
IGludGVycG9sYXRpb25RdWFsaXR5ID8gaW50ZXJwb2xhdGlvblF1YWxpdHkudmFsdWUoKSA6IGdy
YXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpCiAgICAgewogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCmluZGV4IDU0YjRjMDYyMjI3ZTJmNzZhMGE5ZGNhMjhmNTE2YjJlODA4NDZiMjEuLmZj
MzI5Mjk3NjRmODU1MDlkNzEwY2NlZjQyZGI1MWRiNDNlY2YwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI5
Miw3ICsxMjkyLDcgQEAgcHVibGljOgogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3RyYWN0aW9u
cyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KICAgICAvLyB0aGUgY29u
dGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkLiBU
aGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggZjhlMGI4ZTQ0MTg4
ODA3OGQwZGUxNzkzNmFlYjk2OTNlYjgyMjFkMy4uN2M3ZDRmY2M5ZWQyMjMwZDg3MDk1ZTY3NGU1
OWMyZDE3NTg1ZDA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaApAQCAtNjM0LDggKzYzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1h
dGlvbkV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRXh0ZW50OyB9Ci0gICAgdm9p
ZCBzZXRBbmltYXRpb25FeHRlbnQoT3B0aW9uYWw8RmxvYXRSZWN0PiBhbmltYXRpb25FeHRlbnQp
IHsgbV9hbmltYXRpb25FeHRlbnQgPSBhbmltYXRpb25FeHRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1hdGlvbkV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5pbWF0aW9uRXh0ZW50OyB9CisgICAgdm9pZCBzZXRBbmltYXRpb25FeHRlbnQoc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IGFuaW1hdGlvbkV4dGVudCkgeyBtX2FuaW1hdGlvbkV4dGVudCA9IGFu
aW1hdGlvbkV4dGVudDsgfQogCiAgICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3JhcGhpY3NMYXll
ciYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYpOwogCkBAIC02
OTYsNyArNjk2LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKIAog
ICAgIC8vIElmIHNldCwgb3ZlcnJpZGVzIG1fcG9zaXRpb24uIE9ubHkgdXNlZCBmb3IgY292ZXJh
Z2UgY29tcHV0YXRpb24uCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBv
c2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0
aW9uOwogCiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQgeyAwLjVmLCAwLjVmLCAwIH07
CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKQEAgLTc2OSw3ICs3NjksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgRmxvYXRTaXplIG1fY29udGVudHNUaWxlUGhhc2U7CiAgICAgRmxvYXRTaXplIG1fY29udGVu
dHNUaWxlU2l6ZTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IG1fYmFja2Ryb3BGaWx0ZXJzUmVjdDsK
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fYW5pbWF0aW9uRXh0ZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBtX2FuaW1hdGlvbkV4dGVudDsKIAogICAgIEV2ZW50UmVnaW9uIG1f
ZXZlbnRSZWdpb247CiAjaWYgVVNFKENBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCBlNTgwNTJhM2RjY2VkMDQyNTI3ZmY0
ZTcxNTgwN2I1M2NiYzllYjVhLi42M2NjODhjMmU2MjA4MjcxMGE4MWViNDFjZmJjNWI1NDNiN2Fk
NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9w
dGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1N0cmluZykKK3N0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Nv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogewogICAgIC8vIFRoZSBmb3Jt
YXQgb2YgdGhlICdoZXZjJyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIElTTy9JRUMgMTQ0
OTYtMTU6MjAxNCwgQW5uZXggRS4zLgogICAgIFN0cmluZ1ZpZXcgY29kZWNWaWV3KGNvZGVjU3Ry
aW5nKTsKQEAgLTEwNiwxNCArMTA2LDE0IEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJz
ZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKICAgICByZXR1cm4g
cGFyYW1ldGVyczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0
aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUq
IHBvaW50ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+IGlubGluZSBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIoY29uc3QgVmFsdWVUeXBlKiBw
b2ludGVyKQogewogICAgIGlmICghcG9pbnRlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gKnBvaW50ZXI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxEb1ZpUGFyYW1l
dGVyczo6Q29kZWM+IHBhcnNlRG9WaUNvZGVjVHlwZShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBl
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPFBh
Y2tlZEFTQ0lJTG93ZXJDb2Rlczx1aW50MzJfdD4sIERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gdHlw
ZXNBcnJheVtdID0gewogICAgICAgICB7ICJkdmExIiwgRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpB
VkMxIH0sCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIE9wdGlvbmFsPERvVmlQYXJhbWV0ZXJz
OjpDb2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVy
biBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcih0eXBlc01hcC50cnlHZXQoc3RyaW5nKSk7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gcHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKFN0cmluZ1ZpZXcgcHJvZmlsZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBw
cm9maWxlSURGb3JBbHBoYWJldGljRG9WaVByb2ZpbGUoU3RyaW5nVmlldyBwcm9maWxlKQogewog
ICAgIC8vIFNlZSBUYWJsZSA3IG9mICJEb2xieSBWaXNpb24gUHJvZmlsZXMgYW5kIExldmVscyBW
ZXJzaW9uIDEuMy4yIgogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPFBhY2tlZEFTQ0lJ
TG93ZXJDb2Rlczx1aW50NjRfdD4sIHVpbnQxNl90PiBwcm9maWxlc0FycmF5W10gPSB7CkBAIC0x
NTMsNyArMTUzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZERvVmlQcm9maWxlSUQodWludDE2X3Qg
cHJvZmlsZUlEKQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhpbXVt
TGV2ZWxJREZvckRvVmlQcm9maWxlSUQodWludDE2X3QgcHJvZmlsZUlEKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IG1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCh1aW50MTZf
dCBwcm9maWxlSUQpCiB7CiAgICAgLy8gU2VlIFNlY3Rpb24gNC4xIG9mICJEb2xieSBWaXNpb24g
UHJvZmlsZXMgYW5kIExldmVscyBWZXJzaW9uIDEuMy4yIgogICAgIHN3aXRjaCAocHJvZmlsZUlE
KSB7CkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFByb2ZpbGVJREZvckNv
ZGVjKHVpbnQxNl90IHByb2ZpbGVJRCwgRG9WaVBhcmFtZXRlcnM6OkNvZGVjIGMKICAgICByZXR1
cm4gY29kZWMgPT0gRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpIVkMxIHx8IGNvZGVjID09IERvVmlQ
YXJhbWV0ZXJzOjpDb2RlYzo6SEVWMTsKIH0KIAotT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKK3N0ZDo6b3B0aW9u
YWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNv
ZGVjVmlldykKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSBEb1ZpIGNvZGVjIHN0cmluZyBp
cyBzcGVjaWZpZWQgaW4gIkRvbGJ5IFZpc2lvbiBQcm9maWxlcyBhbmQgTGV2ZWxzIFZlcnNpb24g
MS4zLjIiCiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXgg
YTIwNDU5OGRkMDYzMGM4YzZhNzAzNmQ0YjU4NTMzNGZlZGM1YjdmZi4uNDE1ZTM1OGUzYTA4NTAz
YTE1YmZlMDRiZDk3MjU2MTRkN2I4NWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgSEVW
Q1BhcmFtZXRlcnMgewogICAgIHVpbnQxNl90IGdlbmVyYWxMZXZlbElEQyB7IDAgfTsKIH07CiAK
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1Bh
cmFtZXRlcnMoU3RyaW5nVmlldyk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQ
YXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CiAKIHN0cnVj
dCBEb1ZpUGFyYW1ldGVycyB7CiAgICAgZW51bSBjbGFzcyBDb2RlYyB7IEFWQzEsIEFWQzMsIEhF
VjEsIEhWQzEgfSBjb2RlYzsKQEAgLTQ0LDYgKzQ0LDYgQEAgc3RydWN0IERvVmlQYXJhbWV0ZXJz
IHsKICAgICB1aW50MTZfdCBiaXRzdHJlYW1MZXZlbElEIHsgMCB9OwogfTsKIAotV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhT
dHJpbmdWaWV3KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+
IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggMjQyZmUwNTc4ZmMxNGQyNzA5NjQ2NTM1
MDY3MzUyZjBkYWZlNWVjZi4uZWI4NzkwYjRkMGNjNzNhNDk4MjRlMTNhYmMxMDA5N2EzNTA5OWZi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQogICAgIGZsb2F0IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNjRlYTQ4MzcyNjk2ZGFlOTA1MGJhMDQxMjVhYzIwZmEw
NGUwMGI5Yy4uZjFjN2RiMTNkODU2NTc0YTE0ZDI4OGU3NTQ5ZDhiMGNiZmFiNWU4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMjIs
MTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0g
c3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5v
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJl
c2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQgPSB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpID0gMDsKIAogICAgIC8vIEZJ
WE1FOiBjdXJyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0
cmljdGlvbiB0aGF0IHRoZXkgb25seSB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0M2Y1MmJkNGJk
ODlkNTE2OTUzN2NiOTRjYzg1ZTA1MjljZWY4YzM1Li5hNjJiM2M3YmQ2MzBkYjk4YmMyYWNjYTdi
N2FkNDVhY2EwOTE2YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIHB1dFBpeGVs
QnVmZmVyKCpwaXhlbEJ1ZmZlciwgbG9naWNhbFJlY3QoKSwgSW50UG9pbnQ6Onplcm8oKSwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
dm9pZCogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVy
QmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0
aW9uRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCB2b2lkKiBkYXRhKSBjb25zdAog
ewogICAgIEFTU0VSVChQaXhlbEJ1ZmZlcjo6c3VwcG9ydGVkUGl4ZWxGb3JtYXQoZGVzdGluYXRp
b25Gb3JtYXQucGl4ZWxGb3JtYXQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBlNzNhMmE5ZjNiYmJlMDVi
ODE5MzZiNjhkOTE3YjExY2FkZGMxYWIwLi40MjA5OWQ0ZDM2MjVjNWI5MmRhNDQ5MmMyMjY5Yjcy
NmIwNWIyNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JikgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBv
dXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZv
cm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHBy
b3RlY3RlZDoKICAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKICAgICBJbnRSZWN0IGJhY2tl
bmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5k
U2l6ZSgpKTsgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBn
ZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBk
YXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0LCB2b2lkKiBkYXRhKTsK
IAogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBmOGQ2MDQ1N2IyMTUzNmZmMzk5OTBj
OTg0NmMwNzI0ZmU1ZjdjZjIzLi44NzFjMTAxNWNhNjlmNTgwZTkzMGU2ZWM1MDJlYjQ3YjY1NjY0
YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRnJhbWVNZXRhZGF0
YSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgICAgIE9wdGlv
bmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplOwogICAgIH07CiAKICAgICBzdHJ1Y3QgRnJh
bWVJbmZvIHsKQEAgLTY4LDE0ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8RnJhbWVJ
bmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RnJhbWVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgewotICAgICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQWxwaGE7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGhhc0FscGhhOwogICAgICAgICAgICAgZGVjb2RlciA+PiBoYXNBbHBoYTsKICAgICAg
ICAgICAgIGlmICghaGFzQWxwaGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uOwogICAgICAgICAgICAgZGVjb2RlciA+
PiBkdXJhdGlvbjsKICAgICAgICAgICAgIGlmICghZHVyYXRpb24pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCmlu
ZGV4IGNjM2I2MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEuLjBlYTBhMDMyN2I1
ZmRmOTUyMzMyYzY2NDczZDFmYTgxMzgyMmZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC0xMDEsMTcgKzEwMSwxNyBAQCBJbnRT
aXplIEltYWdlRnJhbWU6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAgICAg
Ci1ib29sIEltYWdlRnJhbWU6Omhhc05hdGl2ZUltYWdlKGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBs
aW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAorYm9vbCBJbWFnZUZyYW1lOjpoYXNO
YXRpdmVJbWFnZShjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1w
bGluZ0xldmVsKSBjb25zdAogewogICAgIHJldHVybiBtX25hdGl2ZUltYWdlICYmICghc3Vic2Ft
cGxpbmdMZXZlbCB8fCAqc3Vic2FtcGxpbmdMZXZlbCA+PSBtX3N1YnNhbXBsaW5nTGV2ZWwpOwog
fQogCi1ib29sIEltYWdlRnJhbWU6Omhhc0Z1bGxTaXplTmF0aXZlSW1hZ2UoY29uc3QgT3B0aW9u
YWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Citib29sIEltYWdl
RnJhbWU6Omhhc0Z1bGxTaXplTmF0aXZlSW1hZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1w
bGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTmF0
aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkgJiYgKG1fZGVjb2RpbmdPcHRpb25zLmlzU3luY2hy
b25vdXMoKSB8fCBtX2RlY29kaW5nT3B0aW9ucy5oYXNGdWxsU2l6ZSgpKTsKIH0KIAotYm9vbCBJ
bWFnZUZyYW1lOjpoYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29u
c3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAorYm9vbCBJbWFnZUZyYW1lOjpo
YXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3Qgc3RkOjpvcHRp
b25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc05hdGl2ZUlt
YWdlKHN1YnNhbXBsaW5nTGV2ZWwpICYmIG1fZGVjb2RpbmdPcHRpb25zLmlzQXN5bmNocm9ub3Vz
Q29tcGF0aWJsZVdpdGgoZGVjb2RpbmdPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCBhYTczYWUzNjM4OWVjMmZhYzQyMWVj
MzVjM2U2YzY3MTgxMWU3YmIzLi4zZjJiMWZjMDk5YTU4ZDU2NGUyMDUzZWVhMzM5YjU3MTAwY2Yz
MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogCiAgICAgdm9pZCBzZXREZW5z
aXR5Q29ycmVjdGVkU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fZGVuc2l0eUNvcnJlY3Rl
ZFNpemUgPSBzaXplOyB9Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2RlbnNpdHlDb3JyZWN0ZWRTaXplOyB9CisgICAgc3RkOjpv
cHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVuc2l0eUNvcnJlY3RlZFNpemU7IH0KIAogICAgIHZvaWQgc2V0RHVyYXRpb24oY29uc3QgU2Vj
b25kcyYgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAgICAgU2Vjb25kcyBk
dXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTc3LDkgKzc3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhh
ID0gaGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gIWhhc01l
dGFkYXRhKCkgfHwgbV9oYXNBbHBoYTsgfQogCi0gICAgYm9vbCBoYXNOYXRpdmVJbWFnZShjb25z
dCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pIGNvbnN0OwotICAgIGJvb2wgaGFz
RnVsbFNpemVOYXRpdmVJbWFnZShjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7
IH0pIGNvbnN0OwotICAgIGJvb2wgaGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhP
cHRpb25zKGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikgY29uc3Q7CisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZShjb25zdCBzdGQ6Om9wdGlv
bmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSkgY29uc3Q7CisgICAgYm9vbCBoYXNGdWxsU2l6
ZU5hdGl2ZUltYWdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9
KSBjb25zdDsKKyAgICBib29sIGhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0
aW9ucyhjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJikgY29uc3Q7CiAgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICFzaXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBEZWNvZGluZ09wdGlvbnMg
bV9kZWNvZGluZ09wdGlvbnM7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24g
eyBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH07Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9kZW5z
aXR5Q29ycmVjdGVkU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fZGVuc2l0eUNv
cnJlY3RlZFNpemU7CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNBbHBo
YSB7IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAppbmRleCAzYzlmNDhmNDU2NDM5MTYxNmRjNmU2
ZmY1ZjhkNWQwZGVjNmY2YjdmLi5hOWNjZTU2NDJjYjc3NjE3N2YyN2I4MThlMTA1OGJmNzNkOTYw
Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBh
aW50aW5nT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IEltYWdlUGFpbnRp
bmdPcHRpb25zIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZS4uLiBSZXN0PgpA
QCAtOTAsMjkgKzkwLDI5IEBAIHZvaWQgSW1hZ2VQYWludGluZ09wdGlvbnM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IEltYWdlUGFpbnRpbmdPcHRpb25zOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IEltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgc3RkOjpvcHRpb25h
bDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgZGVjb2RlciA+PiBj
b21wb3NpdGVPcGVyYXRvcjsKICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7
CisgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAgICBkZWNvZGVyID4+
IGJsZW5kTW9kZTsKICAgICBpZiAoIWJsZW5kTW9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPERlY29kaW5nTW9kZT4gZGVjb2RpbmdNb2RlOworICAgIHN0
ZDo6b3B0aW9uYWw8RGVjb2RpbmdNb2RlPiBkZWNvZGluZ01vZGU7CiAgICAgZGVjb2RlciA+PiBk
ZWNvZGluZ01vZGU7CiAgICAgaWYgKCFkZWNvZGluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbj4g
b3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRh
dGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+PiBvcmllbnRhdGlvbjsKICAgICBpZiAo
IW9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OworICAgIHN0ZDo6
b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OwogICAg
IGRlY29kZXIgPj4gaW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9u
UXVhbGl0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJlc29sdXRpb24uY3BwCmluZGV4IGY3NjYw
YjA5NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5MzguLjhkMzNkMzdiZDFlNDlmZDBiZGMx
ZWVlMTI5MDhhODBhMzY2Y2RkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEludFNpemU+IEltYWdlUmVzb2x1dGlvbjo6ZGVu
c2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBSZXNv
bHV0aW9uTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RkOjpvcHRpb25hbDxJbnRTaXplPiBJbWFnZVJl
c29sdXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgUmVzb2x1dGlvbk1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBpZiAobWV0YWRh
dGEucmVzb2x1dGlvblVuaXQgIT0gUmVzb2x1dGlvblVuaXQ6OkluY2hlcyB8fCBtZXRhZGF0YS5y
ZXNvbHV0aW9uLmlzRW1wdHkoKSB8fCBtZXRhZGF0YS5wcmVmZXJyZWRTaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmgKaW5kZXggZTFhMjYxMzBlYjRjZWNhN2Q1
OTI2NzVhODY5MGFjZGM2NmIyYWNjMC4uNzMyN2YwYjBlNWE5MmE1MjhkZjVlZmUwNzQ1MGNjODQy
OWUzYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VSZXNvbHV0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VSZXNvbHV0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IEltYWdlUmVzb2x1dGlvbiB7
CiAgICAgICAgIFJlc29sdXRpb25Vbml0IHJlc29sdXRpb25Vbml0OwogICAgIH07CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRT
aXplJiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZShjb25zdCBGbG9hdFNp
emUmIHNvdXJjZVNpemUsIGNvbnN0IFJlc29sdXRpb25NZXRhZGF0YSYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCmluZGV4IDVkOTE2YzBmZTVkNzAxOTFiOTJkNDBhYzc5MTRjYmRlNWMw
NDM3MDUuLjQ1ZTRiM2JmMGNjMjFlYWMyY2QzNDNlMDZkZWE1NWI1MDE3ZTBiNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM5
NCw3ICszOTQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgp
CiAgICAgfSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2Rp
bmdBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBPcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZvckRyYXdpbmcpCit2b2lkIEltYWdlU291
cmNlOjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRTaXpl
PiYgc2l6ZUZvckRyYXdpbmcpCiB7CiAgICAgQVNTRVJUKGlzRGVjb2RlckF2YWlsYWJsZSgpKTsK
ICAgICBpZiAoIWhhc0FzeW5jRGVjb2RpbmdRdWV1ZSgpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZv
aWQgSW1hZ2VTb3VyY2U6OnN0b3BBc3luY0RlY29kaW5nUXVldWUoKQogICAgIExPRyhJbWFnZXMs
ICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2RlY29kaW5nIGhhcyBiZWVuIHN0b3Bw
ZWRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNv
bnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQorY29uc3Qg
SW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRnJhbWU6OmRlZmF1bHRGcmFt
ZSgpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIFQgSW1hZ2VTb3VyY2U6Om1ldGFkYXRhQ2FjaGVJZk5l
ZWRlZChUJiBjYWNoZWRWYWx1ZSwgY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBNZXRhCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIEltYWdlU291cmNlOjpmaXJzdEZyYW1lTWV0YWRhdGFDYWNo
ZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlLCBUIChJ
bWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyBjYWNoaW5n
LCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkKK1Qg
SW1hZ2VTb3VyY2U6OmZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFs
dWUsIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgp
IGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKG1fY2FjaGVk
TWV0YWRhdGEuY29udGFpbnMobWV0YWRhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZFZh
bHVlOwpAQCAtNTYwLDcgKzU2MCw3IEBAIFN0cmluZyBJbWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkKICAgICByZXR1cm4gbWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fYWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uLCBTdHJpbmcoKSwgTWV0YWRhdGFUeXBlOjpBY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb24sICZJbWFnZURlY29kZXI6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbik7CiB9
CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpCitzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpCiB7CiAgICAgcmV0dXJuIG1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChtX2hvdFNwb3QsIHsgfSwgTWV0YWRhdGFUeXBlOjpIb3RTcG90LCAm
SW1hZ2VEZWNvZGVyOjpob3RTcG90KTsKIH0KQEAgLTU3MCw3ICs1NzAsNyBAQCBJbWFnZU9yaWVu
dGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbigpCiAgICAgcmV0dXJuIGZpcnN0RnJhbWVN
ZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9vcmllbnRhdGlvbiwgTWV0YWRhdGFUeXBlOjpPcmllbnRh
dGlvbiwgJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRh
ZGF0YSk7CiB9CiAKLU9wdGlvbmFsPEludFNpemU+IEltYWdlU291cmNlOjpkZW5zaXR5Q29ycmVj
dGVkU2l6ZShJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorc3RkOjpvcHRpb25hbDxJbnRT
aXplPiBJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKICAgICBhdXRvIHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlm
TmVlZGVkKG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1ldGFkYXRhVHlwZTo6RGVuc2l0eUNvcnJl
Y3RlZFNpemUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSwgSW1hZ2VGcmFtZTo6
Q2FjaGluZzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6ZSkKQEAgLTU3OSw3ICs1NzksNyBAQCBP
cHRpb25hbDxJbnRTaXplPiBJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbgogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVudGF0aW9uID0gdGhpcy0+b3JpZW50YXRp
b24oKTsKIAotICAgIHJldHVybiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gT3B0
aW9uYWw8SW50U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5zcG9zZWRTaXplKCkpIDogc2l6ZTsKKyAg
ICByZXR1cm4gb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHN0ZDo6b3B0aW9uYWw8
SW50U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5zcG9zZWRTaXplKCkpIDogc2l6ZTsKIH0KIAogSW50
U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQpAQCAt
NjU4LDEyICs2NTgsMTIgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0FscGhhKCk7
CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2Ft
cGxpbmdMZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2
ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgp
Lmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKLWJvb2wgSW1h
Z2VTb3VyY2U6OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykK
K2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2Ft
cGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVj
b2RpbmdPcHRpb25zKQogewogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0RlY29k
ZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNv
ZGluZ09wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kR2VuZXJpY0N1ZS5oCmluZGV4IDMyMTUxOWJlMzIxM2Q5MDZlMWJhMWRmYTg2MjQ5
ZGM2MGFlNjllN2QuLjgxNmRkNWFhMDdjOTFiNGRjOGEzM2RjMzNmMWQ1YzhiNmI3NzRhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWND
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmlj
Q3VlLmgKQEAgLTgxLDg4ICs4MSw4OCBAQCBzdHJ1Y3QgR2VuZXJpY0N1ZURhdGEgewogICAgIFN0
YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6VW5pbml0aWFsaXplZCB9OwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlIDxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVyaWNDdWVEYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVy
aWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxJbmJh
bmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxJbmJh
bmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CiAgICAgZGVjb2RlciA+PiB1bmlxdWVJ
ZDsKICAgICBpZiAoIXVuaXF1ZUlkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxNZWRp
YVRpbWU+IHN0YXJ0VGltZTsKICAgICBkZWNvZGVyID4+IHN0YXJ0VGltZTsKICAgICBpZiAoIXN0
YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE1l
ZGlhVGltZT4gZW5kVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gZW5kVGltZTsK
ICAgICBkZWNvZGVyID4+IGVuZFRpbWU7CiAgICAgaWYgKCFlbmRUaW1lKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50OwogICAgIGlmICghY29udGVudCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gZm9u
dE5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvbnROYW1lOwogICAgIGRlY29kZXIg
Pj4gZm9udE5hbWU7CiAgICAgaWYgKCFmb250TmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gbGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxpbmU7CiAgICAgaWYgKCFsaW5lKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcG9zaXRpb247CiAgICAgZGVjb2RlciA+PiBwb3Np
dGlvbjsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBz
aXplOwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGJhc2VGb250U2l6ZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gYmFz
ZUZvbnRTaXplOwogICAgIGlmICghYmFzZUZvbnRTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gcmVs
YXRpdmVGb250U2l6ZTsKICAgICBpZiAoIXJlbGF0aXZlRm9udFNpemUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENvbG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZvcmVncm91bmRDb2xvcjsKICAgICBkZWNvZGVyID4+
IGZvcmVncm91bmRDb2xvcjsKICAgICBpZiAoIWZvcmVncm91bmRDb2xvcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7
CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGRlY29kZXIg
Pj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGhpZ2hsaWdodENvbG9y
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGhpZ2hsaWdodENvbG9yOwogICAgIGRlY29kZXIg
Pj4gaGlnaGxpZ2h0Q29sb3I7CiAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEFsaWdubWVudD4gYWxpZ25tZW50Owor
ICAgIHN0ZDo6b3B0aW9uYWw8QWxpZ25tZW50PiBhbGlnbm1lbnQ7CiAgICAgZGVjb2RlciA+PiBh
bGlnbm1lbnQ7CiAgICAgaWYgKCFhbGlnbm1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxTdGF0dXM+IHN0YXR1czsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
YXR1cz4gc3RhdHVzOwogICAgIGRlY29kZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKaW5kZXggM2EwMmU1NjA1YWIyOGNhZTM0OTRm
ODg3NWZjNDY1NDNjMzBiYjMwMi4uYWI0M2QxZTQzN2UxMzM0Mjk2ZGI5YjUzMjE1N2QwODA1MGM1
NGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5l
UGF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQ
YXRoRGF0YS5oCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBMaW5lRGF0YSB7CiAgICAgRmxvYXRQ
b2ludCBlbmQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PExpbmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExpbmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
c3RydWN0IEFyY0RhdGEgewpAQCAtNTcsMTQgKzU3LDE0IEBAIHN0cnVjdCBBcmNEYXRhIHsKICAg
ICBUeXBlIHR5cGUgeyBUeXBlOjpBcmNPbmx5IH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFyY0RhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXJjRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKIHN0cnVjdCBNb3ZlRGF0YSB7CiAgICAgRmxvYXRQb2ludCBsb2Nh
dGlvbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW92
ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TW92ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1
Y3QgUXVhZEN1cnZlRGF0YSB7CkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBRdWFkQ3VydmVEYXRh
IHsKICAgICBGbG9hdFBvaW50IGVuZFBvaW50OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxRdWFkQ3VydmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFF1YWRDdXJ2ZURh
dGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1Y3QgQmV6aWVyQ3VydmVEYXRhIHsKQEAg
LTgzLDcgKzgzLDcgQEAgc3RydWN0IEJlemllckN1cnZlRGF0YSB7CiAgICAgRmxvYXRQb2ludCBl
bmRQb2ludDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
QmV6aWVyQ3VydmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlemllckN1cnZlRGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgTW92ZURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtOTEsNyArOTEsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIE1vdmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IGxvY2F0aW9uOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1vdmVEYXRhIGRhdGE7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLmxvY2F0aW9uKSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIExpbmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IGVuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
T3B0aW9uYWw8TGluZURhdGE+IExpbmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8TGluZURhdGE+IExpbmVEYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBMaW5lRGF0YSBkYXRhOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcmNEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHR5cGU7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcmNEYXRhPiBBcmNEYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcmNEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLnN0YXJ0KSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIFF1YWRDdXJ2ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgZW5kUG9pbnQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPFF1YWRDdXJ2ZURhdGE+IFF1YWRDdXJ2ZURhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxRdWFkQ3VydmVE
YXRhPiBRdWFkQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBRdWFk
Q3VydmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0UG9pbnQp
KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQmV6aWVy
Q3VydmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGVuZFBvaW50OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxCZXppZXJD
dXJ2ZURhdGE+IEJlemllckN1cnZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEJlemllckN1cnZlRGF0YT4gQmV6aWVy
Q3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBCZXppZXJDdXJ2ZURh
dGEgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2ludCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXggYzljYmQ4
MWRiMjBhOGI2ZTRlMTFkZDA0N2NhM2I5Y2RkYjI4ZmFkNy4uYWI2MjczOGQ5MTliN2NjMWNhMGM0
NWY3NDhjY2FhNWM5MzEzNTIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFJlY3QuaApAQCAtNjUsMTQgKzY1LDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlv
dXRSZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRQ
b2ludD4gbGF5b3V0UG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gbGF5b3V0UG9pbnQ7CiAgICAg
ICAgIGlmICghbGF5b3V0UG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbGF5b3V0U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBsYXlv
dXRTaXplOwogICAgICAgICBpZiAoIWxheW91dFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5oCmluZGV4IGM1YTc3N2ZkN2Q2MDdiZWMyOTJiMzhhNmJkY2Y0NjI0YjQwZmI1MTAu
LmI4YjI0ZDQzZjIwN2ZhMTI4MzUyYTIzNzI0Y2MwNGZkYWEyMDk1ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTYwLDggKzYw
LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVFeHRlbmRlZFR5cGUoY29u
c3QgQ29udGVudFR5cGUmKTsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5cGVzOwotICAgIE9wdGlvbmFsPEhhc2hN
YXA8U3RyaW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+IG1fY2FjaGVkUmVzdWx0czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5cGVzOworICAg
IHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNoZWRSZXN1bHRzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGY5ODIyZjgxMWRjZjU3ZjhhY2Q4MTkzOWZjYzZk
NzNiZTM0YzkxOGEuLmVkZmQ2YTMwMzhlNzJkYTg0ZDM2Mjc0Yzk0YzJmMDViZGYzNTRiNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTE1NTgsNyArMTU1OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmVuZGVkKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5lbmRlZCgpOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3Mo
KQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVy
Ojp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAgIGlmICghbV9wcml2YXRlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYWExMTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQz
NWJlZDU3YTFjMmEwZS4uYWQyY2MwN2VhNTQxNTk3ODc3OWNkMzA1NGMzZmVhNWEwMTllYjAwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC0xMDcsMjkgKzEwNywyOSBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlv
bmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8Q29udGVu
dFR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKICAgICAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAg
ICAgIGlmICghdXJsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVNvdXJjZTsKICAg
ICAgICAgaWYgKCFpc01lZGlhU291cmNlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU3RyZWFtOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07CiAgICAgICAgIGRlY29kZXIgPj4gaXNNZWRp
YVN0cmVhbTsKICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGVudFR5cGU+PiB0
eXBlc1JlcXVpcmluZ0hhcmR3YXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250
ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZTsKICAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJl
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBw
dWJsaWM6CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzKCk7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpOwogCiAgICAgU3RyaW5nIHNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJl
ZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CkBAIC02NzksOCArNjc5LDggQEAgcHJpdmF0
ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBT
dHJpbmcgbV9rZXlTeXN0ZW07Ci0gICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcj4gbV9hY3RpdmVFbmdpbmVJZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsK
ICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1
dG8gfTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDg3N2Y4YzBl
YmE3ODY3MWNiYzhhYTUyZWY2Nzk0Njc1MWJhYmNiOGMuLjliNTJlMTY0YjI0Nzc3ODBmYjI0ZjU4
ZjhmYTU3OWI1N2IxM2Q5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiB3b3Vs
ZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
IAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOyB9CiAK
QEAgLTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5kZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxWaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKaW5kZXggNmEyNjcwMTYxYzU1NTNhYTBl
MDY4ZGVjN2FjMzViZTM4ZmEzOTA0Ny4uZTI2N2M2NmYxODhjNWI2MjVhY2U1ZWQzOTU0YjQ5OGQ4
YjU1NTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFVc2FnZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVVzYWdlSW5mby5oCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IE1lZGlhVXNhZ2VJbmZvIHsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1l
ZGlhVXNhZ2VJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhVXNhZ2VJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFVc2FnZUlu
Zm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMTQzLDcgKzE0Myw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE1lZGlhVXNhZ2VJbmZvOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2RlciA8PCBpc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxN
ZWRpYVVzYWdlSW5mbz4gTWVkaWFVc2FnZUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUlu
Zm8+IE1lZGlhVXNhZ2VJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNZWRp
YVVzYWdlSW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAppbmRleCA4Y2VlNTU0NzE4NDkyNzFkMDljMmZhMTA4YTVmZTY1NGQyMTk4OTdjLi4xY2E5NzYz
M2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBNb2RlbDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogUmVmUHRy
PE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
c2l6ZV90PiBsZW5ndGg7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aDsKICAgICBk
ZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggNGZhODI3M2NkY2NkOTkwODFiYjJmNDIyZWNmZDExYTczODgw
NmY5NC4uZTVkMWZmOWJjYWVkMDRjZTNjMmVlMDlhMTdmZWE2NDIwOTU0OGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRl
eHQuaApAQCAtMTA1LDExICsxMDUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd1JhaXNl
ZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpIGZp
bmFsIHsgfQogCi0gICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVu
c2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgRmxvYXRT
aXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpu
dWxsb3B0KSBmaW5hbCB7IHJldHVybiB7IH07IH0KIAogICAgIHZvaWQgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFs
IHsgfQogCi0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2ln
bmVkID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9p
ZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250
Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQg
ZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwCmluZGV4IGRhZDY0M2Y3ZjE0NmNkYWQ5NjRhNzU4NmVhODg2MDVkMzY4OTE3OTQuLjU4
MjRkYjUwZDhmYjBkNzc0N2U3ZDRkMWQ1NDdjZDVkMzU2NWYwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgRmxvYXRSZWN0
IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogCiAjaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUGF0aDo6ZmFzdEJvdW5kaW5nUmVjdEZyb21J
bmxpbmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpmYXN0Qm91
bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdAogewogICAgIGlmIChoYXNJbmxpbmVEYXRh
PEFyY0RhdGE+KCkpIHsKICAgICAgICAgYXV0byYgYXJjID0gaW5saW5lRGF0YTxBcmNEYXRhPigp
OwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUFyY0JvdW5kcyhj
b25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cywgZmxvYXQKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFBhdGg6OmJvdW5kaW5nUmVjdEZyb21J
bmxpbmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpib3VuZGlu
Z1JlY3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc0lubGluZURhdGE8QXJj
RGF0YT4oKSkgewogICAgICAgICBhdXRvJiBhcmMgPSBpbmxpbmVEYXRhPEFyY0RhdGE+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5kZXggYTAxNTY0NmM2NzA4NWM0
NTM1ZTY5MzYxY2FmNDU5M2M3YWNiZTJjYi4uNzIxYWZiZmZmNzMxMWU5NWI5MDkzZDU4YjQ2NWM3
NjYxZGVkMDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAt
MjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxQYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhdGg+IGRlY29kZShEZWNv
ZGVyJik7CiAKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEYXRhVHlwZT4gY29uc3QgRGF0YVR5cGUmIGlubGluZURhdGEoKSBjb25zdDsKQEAgLTI0
NSw4ICsyNDUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBEYXRhVHlwZSYgaW5saW5lRGF0
YSgpOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZmFzdEJvdW5kaW5nUmVjdEZyb21JbmxpbmVE
YXRhKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ1JlY3RGcm9tSW5s
aW5lRGF0YSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBmYXN0Qm91bmRp
bmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gYm91bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9p
ZCBtb3ZlVG9TbG93Q2FzZShjb25zdCBGbG9hdFBvaW50Jik7CkBAIC0yOTEsNyArMjkxLDcgQEAg
cHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9jb3B5UGF0aEJlZm9yZU11dGF0aW9uIHsgZmFs
c2UgfTsKICNlbmRpZgogI2lmIFVTRShDQUlSTykKLSAgICBPcHRpb25hbDxWZWN0b3I8UGF0aEVs
ZW1lbnQ+PiBtX2VsZW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhdGhFbGVtZW50
Pj4gbV9lbGVtZW50czsKICNlbmRpZgogfTsKIApAQCAtMzM1LDcgKzMzNSw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgUGF0aDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgfSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBhdGg+IFBh
dGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQ
YXRoIHBhdGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFV0aWxpdGllcy5jcHAKaW5kZXggZTRhM2IxMzE4ZmViODFhZmZhYmI0NmZhZThhM2UwNWM4YWM5
NjUxZi4uODkzYWQ4NDM3ODgwMWFlNWZlZThiNjk3NjNlYTU0YmQwYjFmOTRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAg
LTQ2NCwxMyArNDY0LDEzIEBAIHN0YXRpYyBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBhZGp1c3Rl
ZHRSYWRpaUZvckh1Z2dpbmdDdXJ2ZShjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgcmV0dXJuIHJh
ZGlpOwogfQogICAgIAotc3RhdGljIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29u
KGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYgcG9seSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9s
eWdvbiYgcG9seSkKIHsKICAgICBpZiAocG9seS5zaXplKCkgIT0gNCkKLSAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PigpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdDsKLSAgICBPcHRp
b25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9p
bnQ+IHRvcExlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9seS5zaXplKCk7ICsraSkgewogICAgICAg
ICBjb25zdCBhdXRvJiB0b0VkZ2UgPSBwb2x5W2ldOwogICAgICAgICBjb25zdCBhdXRvJiBmcm9t
RWRnZSA9IChpID4gMCkgPyBwb2x5W2kgLSAxXSA6IHBvbHlbcG9seS5zaXplKCkgLSAxXTsKQEAg
LTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHln
b24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQb2x5Z29uJiBwb2x5KQogICAgICAgICB9CiAgICAg
fQogICAgIGlmICghdG9wTGVmdCB8fCAhYm90dG9tUmlnaHQpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxGbG9hdFJlY3Q+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4oKTsKICAgICByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9tUmlnaHQu
dmFsdWUoKSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCBQYXRoIFBhdGhVdGlsaXRpZXM6OnBh
dGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0
PgogICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgIGNvbnN0IGF1dG8mIHBvbHkgPSBwb2x5cy5h
dCgwKTsKICAgICAvLyBGYXN0IHBhdGggd2hlbiBwb2x5IGhhcyBvbmUgcmVjdCBvbmx5LgotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKICAg
ICBpZiAocmVjdCkKICAgICAgICAgcmV0dXJuIHJvdW5kZWRSZWN0KHJlY3QudmFsdWUoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCA4YzY4NmEx
ZjIyOGM4MDA4NWM0NWU5OWViODBhYzU5Mzg0ZWViZWZhLi4xYzk2MWZiZjQ2ZTgzNmY0MDA3ZTYw
YTk4MTQxZjQ5MTI0YjU0NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBh
cmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgICAgIGJv
b2wgcmVwZWF0WDsKICAgICAgICAgYm9vbCByZXBlYXRZOwpAQCAtMTAzLDE5ICsxMDMsMTkgQEAg
dm9pZCBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRl
cnM+IFBhdHRlcm46OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRl
cm5TcGFjZVRyYW5zZm9ybTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0
dGVyblNwYWNlVHJhbnNmb3JtOwogICAgIGRlY29kZXIgPj4gcGF0dGVyblNwYWNlVHJhbnNmb3Jt
OwogICAgIGlmICghcGF0dGVyblNwYWNlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlcGVhdFg7CiAgICAgZGVjb2RlciA+PiByZXBlYXRYOwogICAgIGlmICghcmVwZWF0
WCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHJl
cGVhdFk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiByZXBlYXRZOwogICAgIGRlY29kZXIgPj4g
cmVwZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAK
aW5kZXggZmE3MTY2MjNlYmUzNzk4ODZlZjBmZWQzMjZmZDU2MDU2M2UzODc4ZC4uOTU1ODA3ZmQz
YTAwMWM2MjJlMmZiOGNjMGI0OTRlZGE4OTRmZjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBDaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJT
aXplKGNvbnN0IFBpeGVsQnVmZgogICAgIHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+
KCkgKiBieXRlc1BlclBpeGVsOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQs
IGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQorc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVk
IGRhdGFCeXRlTGVuZ3RoKQogewogICAgIEFTU0VSVChzdXBwb3J0ZWRQaXhlbEZvcm1hdChmb3Jt
YXQucGl4ZWxGb3JtYXQpKTsKICAgICBBU1NFUlQoY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBz
aXplKS51bnNhZmVHZXQoKSA9PSBkYXRhQnl0ZUxlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmCiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVs
QXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNv
bnN0IEludFNpemUmIHNpemUpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUpCiB7CiAgICAgQVNTRVJUKHN1cHBvcnRlZFBpeGVsRm9ybWF0KGZvcm1hdC5waXhl
bEZvcm1hdCkpOwogCkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvCiAg
ICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9
IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxK
U0M6OkFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5o
CmluZGV4IGMzNTNmZWJkY2RmMzkwMmZmM2M1MmVlMTNjZGFkOWJmOWI5ZTBhNWMuLjEyY2EzYzhj
NzJkOTM3NDY0NWRiNTFjMGMwMGE4ZDRiOWU4NjJkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBQ
aXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkUGl4ZWxGb3Jt
YXQoUGl4ZWxGb3JtYXQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRT
aXplJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0
cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpT
Qzo6QXJyYXlCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25z
dCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNp
emUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRB
cnJheT4mJik7CiAgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25z
dCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwpAQCAtNjIsMTAgKzYyLDEwIEBA
IHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGVGb3JEZWNvZGlu
Zyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBkYXRh
Qnl0ZUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0Jiwg
Y29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29tcHV0ZUJ1
ZmZlclNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CiAKQEAg
LTg1LDkgKzg1LDkgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKIH0KIAot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVy
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1hdDsKICAgICBkZWNvZGVyID4+IGZvcm1h
dDsKICAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk2
LDcgKzk2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIShmb3JtYXQtPnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxJbnRTaXplPiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc2l6
ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmgKaW5kZXggNjA4MmU1Yjg0NjQxMDNlNTFiNDRmZWRmMGE3YmE2
ZGZkNTgwYmZjNy4uZDRmNWIwM2Y2MjJmOWQ3NzY4NWIwZWQ4ZjlhZWE3YTRjZWE3YTYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3Jt
YXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZv
cm1hdC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBQaXhlbEJ1ZmZlckZvcm1hdCB7CiAgICAg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmKTsKQEAgLTQ5LDE5ICs0OSwxOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBp
eGVsQnVmZmVyRm9ybWF0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IGFscGhhRm9ybWF0IDw8IHBpeGVsRm9ybWF0IDw8IGNvbG9yU3BhY2U7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1
ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxBbHBoYVByZW11bHRpcGxp
Y2F0aW9uPiBhbHBoYUZvcm1hdDsKICAgICBkZWNvZGVyID4+IGFscGhhRm9ybWF0OwogICAgIGlm
ICghYWxwaGFGb3JtYXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEZv
cm1hdD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1hdDsKICAgICBpZiAo
IXBpeGVsRm9ybWF0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JT
cGFjZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNv
bG9yU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29s
b3JTcGFjZS5oCmluZGV4IGNiOTcwMTI1YTRiMDRiNDZhNWMzNWJkYWNjNzZmMzA4MDFlMWM2Yjku
LjJjNmEyMjNkOWU2MWI2MjRhZmNmMDdjNDYyNWUzN2FiODdjNDU4M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQ
bGF0Zm9ybUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBkZWNvZGUo
RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIE5hbWUgbV9uYW1lOwpAQCAtNzUsOSArNzUsOSBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBsYXRmb3JtQ29sb3JTcGFjZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX25hbWU7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gUGxhdGZv
cm1Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBQbGF0Zm9ybUNvbG9yU3Bh
Y2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29s
b3JTcGFjZTo6TmFtZT4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFj
ZTo6TmFtZT4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggZmNiZDI3NWY5NWYzMGMyZWJj
MjI0YTNhYzY4NTg1NWRkZTYyNjFkZC4uNjdiNTMyNTU5NDY2ZjY1MzJhMzg2MTE3YzQxOWI0NGM0
MWMwNWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRleHRUcmFjay5oCkBAIC03OCw0OCArNzgsNDggQEAgc3RydWN0IFBsYXRmb3JtVGV4
dFRyYWNrRGF0YSB7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1UZXh0VHJhY2tEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtVGV4dFRyYWNrRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UGxhdGZvcm1UZXh0VHJhY2tEYXRhPiBQbGF0
Zm9ybVRleHRUcmFja0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxQbGF0Zm9ybVRleHRUcmFja0RhdGE+IFBsYXRmb3JtVGV4dFRyYWNrRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CiAgICAgZGVjb2RlciA+PiBsYWJlbDsKICAgICBpZiAo
IWxhYmVsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBsYW5ndWFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFuZ3VhZ2U7CiAgICAg
ZGVjb2RlciA+PiBsYW5ndWFnZTsKICAgICBpZiAoIWxhbmd1YWdlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB1cmw7CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHVybDsKICAgICBkZWNvZGVyID4+IHVybDsKICAgICBpZiAoIXVybCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFRyYWNrTW9kZT4gbW9k
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRyYWNrTW9kZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1v
ZGU7CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8VHJhY2tLaW5kPiBraW5kOworICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tLaW5kPiBr
aW5kOwogICAgIGRlY29kZXIgPj4ga2luZDsKICAgICBpZiAoIWtpbmQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxUcmFja1R5cGU+IHR5cGU7CisgICAgc3Rk
OjpvcHRpb25hbDxUcmFja1R5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlm
ICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGlu
dD4gdW5pcXVlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVuaXF1ZUlkOwogICAgIGRlY29k
ZXIgPj4gdW5pcXVlSWQ7CiAgICAgaWYgKCF1bmlxdWVJZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGlzRGVmYXVsdDsKICAgICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICBpZiAo
IWlzRGVmYXVsdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKaW5kZXgg
NTg0NDgxZTk1NjNmYmNiOTA2YjY3ODM4ODFiOTI5MDM1NTllNWI1Yi4uYjFlODE1ZmI0NDZlNGIy
NmNiNGZiNTg4NjU3Mzg5MjNhMTYyOTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdl
cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgLy8gV2UgY29uc2lkZXIgYWxsIHRoZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3Vu
ZGVkIGFzIGZvbGxvdzogW3N0YXJ0LCBlbmRbCkBAIC05MiwxNCArOTIsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgICAgICBz
dGF0aWMgT3B0aW9uYWw8UmFuZ2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSYW5nZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IHN0YXJ0OwogICAgICAgICAgICAgaWYgKCFzdGFydCkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBlbmQ7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IGVuZDsKICAgICAgICAgICAgIGlmICghZW5kKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xNTAsOSArMTUwLDkgQEAgdm9pZCBQbGF0Zm9ybVRpbWVSYW5n
ZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4gUGxhdGZvcm1UaW1lUmFuZ2Vz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJhbmdlPj4gYnVmZmVyZWQ7CiAgICAgZGVjb2RlciA+PiBidWZmZXJlZDsKICAgICBpZiAo
IWJ1ZmZlcmVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3ZWNiMWM2OTZiMmU4ZjU4OGFlMWRmYWVk
MTc3MDUyMTAwODdjYTJlLi44M2M1ZWQyYWM5MjMxOGU3MDQwYTQ2ZDViZTgwNjNmYTNmZDFhM2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVnaW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZ2lvbj4gZGVjb2RlKERlY29kZXIm
KTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBkZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgUmVnaW9uJik7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90
IHNlZ21lbnRJbmRleCB7IDAgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVj
b2RlciYpOwogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CkBAIC0xMjIsNyArMTIyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZVNoYXBlcyhjb25zdCBTaGFwZSYg
c2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFwZT4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcGU+
IGRlY29kZShEZWNvZGVyJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHZvaWQgZHVtcCgp
IGNvbnN0OwpAQCAtMjE4LDE0ICsyMTgsMTQgQEAgdm9pZCBSZWdpb246OlNwYW46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8UmVnaW9uOjpTcGFuPiBSZWdpb246OlNwYW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxSZWdpb246OlNwYW4+IFJlZ2lvbjo6U3Bhbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8aW50PiB5OworICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiB5OwogICAgIGRlY29kZXIgPj4geTsKICAgICBpZiAoIXkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc2VnbWVudEluZGV4OworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHNlZ21lbnRJbmRleDsKICAgICBkZWNvZGVyID4+IHNlZ21lbnRJbmRl
eDsKICAgICBpZiAoIXNlZ21lbnRJbmRleCkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI0MSwx
NCArMjQxLDE0IEBAIHZvaWQgUmVnaW9uOjpTaGFwZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdpb246OlNo
YXBlPiBSZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8UmVnaW9uOjpTaGFwZT4gUmVnaW9uOjpTaGFwZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGludD4+IHNlZ21lbnRzOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPGludD4+IHNlZ21lbnRzOwogICAgIGRlY29kZXIgPj4gc2VnbWVudHM7CiAgICAg
aWYgKCFzZWdtZW50cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWdpb246OlNwYW4+PiBzcGFuczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWdpb246OlNwYW4+PiBzcGFuczsKICAgICBkZWNvZGVyID4+IHNwYW5zOwogICAgIGlmICgh
c3BhbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNzEsMTQgKzI3MSwxNCBA
QCB2b2lkIFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBib3VuZHM7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiBib3VuZHM7CiAgICAgZGVjb2RlciA+PiBib3VuZHM7CiAgICAgaWYg
KCFib3VuZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxi
b29sPiBoYXNTaGFwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1NoYXBlOwogICAgIGRl
Y29kZXIgPj4gaGFzU2hhcGU7CiAgICAgaWYgKCFoYXNTaGFwZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTI4Niw3ICsyODYsNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgUmVnaW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9
OwogCiAgICAgaWYgKCpoYXNTaGFwZSkgewotICAgICAgICBPcHRpb25hbDxTaGFwZT4gc2hhcGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IHNoYXBlOwogICAgICAgICBkZWNvZGVyID4+
IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTI5OSw3ICsyOTksNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBSZWdpb246
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWdpb24mIHJlZ2lvbikKIHsKLSAgICBPcHRpb25h
bDxSZWdpb24+IGRlY29kZWRSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+IGRlY29k
ZWRSZWdpb247CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkUmVnaW9uOwogICAgIGlmICghZGVjb2Rl
ZFJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA1ODEwMjg2OWE5YzEzNzQ0MGNlYmQw
YTEwMmZkNDVjYTI4OGViYzcwLi44MzJhMjc2ZTdjNjA5MGMxYmFlODMxYjhiZTM4ZmUyMGQ0OTQy
NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIEludFNpemUgU2hhZG93Qmx1cjo6Ymx1cnJlZEVkZ2VT
aXplKCkgY29uc3QKICAgICByZXR1cm4gZWRnZVNpemU7CiB9CiAKLU9wdGlvbmFsPFNoYWRvd0Js
dXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0
JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorc3RkOjpvcHRpb25hbDxT
aGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4gU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBM
YXllckltYWdlUHJvcGVydGllcyBjYWxjdWxhdGVkTGF5ZXJJbWFnZVByb3BlcnRpZXM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCA4N2Y2
NDZlMzRiMDA2YmI0ZThlYTBiMDRhOTA2NDhkZGRmMmJmNTY0Li4wYzk3NmI4NzUxYmQ2ZWZmMGNh
N2FkMjI3ODIzNjYxMjg4YTg4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5oCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZs
b2F0U2l6ZSBsYXllckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkg
dG8gbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgog
ICAgIH07CiAKLSAgICBPcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4g
Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVT
aXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkmKSBjb25zdDsKIAogICAgIHZvaWQgYmx1clNoYWRvd0J1ZmZlcihJbWFnZUJ1ZmZl
ciYgbGF5ZXJJbWFnZSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggNDZiYjZkNDMx
N2JhOWJiZjRlY2IxNjBkNjMwZjc3OWJiZDFiNzQ3Ny4uMmUwYzYxYzM5MGY4OWFiMTJiYTk1Nzg3
YzY0ZTNjZmVlMzk5ZWExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgLy8gT25seSB1c2VkIHRv
IHVwZGF0ZSB0aGUgdGlsZSBjb3ZlcmFnZSBtYXAuIAotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlv
dXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3Bw
CmluZGV4IGQwYjAyYTM0ODJiZjczZDFiM2ZjZWI5MzhlNmU5OWI0MGQxZWE1N2YuLjRkOGVlNjJl
MDFiOGVhZWJhY2M2ZDI4YjNhMDk4NTI5NTJjNWQ4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCkBAIC0zMywxMiAr
MzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDx1aW50NjRfdD4gVHJh
Y2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
VHJhY2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFRyYWNrUHJpdmF0ZUJhc2U6OmRlZmF1bHRFbmFi
bGVkKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gVHJhY2tQcml2YXRlQmFzZTo6ZGVmYXVs
dEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKaW5k
ZXggMzA5OTYxNDIwNDg1NWQ5OTY5ZDA0YzZmMDc5ODNjMjc3NzRlN2YzYi4uMjc4ZjBjNmI3MmMy
ODUwOWQzMDJmNzdiNDdkNjE5MmE3MTlkMDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaApAQCAtNjMsOCArNjMsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4g
ZW1wdHlBdG9tKCk7IH0KIAogICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgoKSBjb25zdCB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gdHJhY2tVSUQoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IGRlZmF1bHRFbmFibGVkKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0RW5hYmxlZCgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCB7IHJldHVybiBN
ZWRpYVRpbWU6Onplcm9UaW1lKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggZjU3NzI0ZDk2NDg2MjYyMDE4ZjNjYmE0
NWIxZjEwMWFhNDE1YjBhZi4uOTJmNDJiNjc3ZDUzZGQ5YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRp
ZXMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29l
ZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogICAgIHJldHVybiBzdGQ6OmJp
bmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5k
KHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRzKTsKIH0KIAotT3B0
aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMo
U3RyaW5nVmlldyBjb2RlY1ZpZXcpCitzdGQ6Om9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogewog
ICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVjVmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4
dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4IDhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRl
NzRlMWQ2NDVjNzIyOGEyMzUuLmI2MTI2NGMwZmYzMjA1YWVkYTBjYjJlMzY0ZmI2ODNmYTkxMDVh
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5oCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RydWN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
IHsKICAgICB1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cyB7IFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6QlRfNzA5XzYgfTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmlu
Z1ZpZXcgY29kZWNTdHJpbmcpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNv
ZGVjU3RyaW5nKTsKIAogc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgIGRvdWJsZSB3
aWR0aCB7IDAgfTsKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhT3ZlcnJp
ZGVzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMg
T3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgewogI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAotICAgICAg
ICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFt
ZTsgXAogICAgICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICAgICAgaWYgKCFuYW1lKSBcCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cy5oCmluZGV4IDBhN2Y2NzNjZTJjMTY0MjY3ZGMxMDBkNWUwMzI4NmNlNTYxZWUzY2UuLmM5YmI1
ZjdiY2NlMTNhZDVlOGI0NjNlMjYxZjA2OGFmNWMxNDk1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcy5oCkBAIC00NywyOSArNDcsMjkgQEAgc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiB0b3RhbFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFt
ZXM7CiAgICAgICAgIGlmICghdG90YWxWaWRlb0ZyYW1lcykKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRyb3BwZWRWaWRlb0Zy
YW1lczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZHJvcHBlZFZpZGVvRnJhbWVz
OwogICAgICAgICBkZWNvZGVyID4+IGRyb3BwZWRWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCFk
cm9wcGVkVmlkZW9GcmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGRl
Y29kZXIgPj4gY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghY29ycnVwdGVkVmlk
ZW9GcmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gdG90YWxGcmFtZURlbGF5OwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxh
eTsKICAgICAgICAgaWYgKCF0b3RhbEZyYW1lRGVsYXkpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkaXNwbGF5Q29tcG9zaXRl
ZFZpZGVvRnJhbWVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBkaXNwbGF5Q29t
cG9zaXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IGRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghZGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IDJjMjM2YjY3ZWNhMGNi
MDBjMjMxMWQ2Nzc4N2U2MTQ4YzViYjMxOGUuLmJlZTIzZWZmMDlkYjM1ZjJiYmJmNTNjYjg1NzYx
YjNmNGQ3ZTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXaWR0aEl0ZXJhdG9y
OjphcHBseUFkZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEdseXBoSW5k
ZXhSYW4KIAogdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGlu
ZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgs
IHVuc2lnbmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyRGVzdGlu
YXRpb25JbmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCkKIHsKLSAgICBWZWN0b3I8T3B0aW9u
YWw8R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhSYW5nZShtX3J1
bi5sZW5ndGgoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHbHlw
aEluZGV4UmFuZ2U+PiBjaGFyYWN0ZXJJbmRleFRvR2x5cGhJbmRleFJhbmdlKG1fcnVuLmxlbmd0
aCgpLCBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3RvcjxmbG9hdD4gYWR2YW5jZVdpZHRocyhtX3J1
bi5sZW5ndGgoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZ2x5cGhCdWZmZXJTdGFydElu
ZGV4OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBzdHJpbmdP
ZmZzZXQgPSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaSwgbV9ydW4ubGVuZ3Ro
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5oCmluZGV4IDZhYTEyY2RkZWNjNjRkYWVkYmZmNzFkZjJlNWIxN2Y1NDdkMjUxNmUuLmY2MDZm
YTIzMjQ5YTZjMTFhZmY5ZjAzOWNiMjY5NjU5N2U2ZWZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKQEAgLTgxLDcgKzgxLDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsKICAgICBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
bGFzdENoYXJhY3RlckluZGV4OwogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlckluZGV4
IHsgMCB9OwogICAgIGZsb2F0IG1fbGVmdG92ZXJKdXN0aWZpY2F0aW9uV2lkdGggeyAwIH07CiAg
ICAgZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCA2YTZkMjJkODFmYTkyMTk5YzE1MTI0Mjg5YTc4YmE3NmMwNGE4NTYyLi5m
MDViMGU1MDQzNjAyODJkZGRlMjg2YjRhZWQzYjI5YjgwNGE0MzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxw
aGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIq
IHBpeAogfQogI2VuZGlmCiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCitzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0
cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKQEAgLTUwOSw3
ICs1MDksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZUlt
cGwoKQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKICAg
ICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JX
ZWJHTDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMo
KS5hbnRpYWxpYXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CmluZGV4IDRiMmY4MTQ2ZTRlYjNlYzY5YmZmYTcwNWYxZjZhOGY3ZTNmYmVkZTYuLjlmYzU3MDNl
YzQ1MGVhMjE3NWU5MThlNmUyZjc5Y2MxMTA5YWMwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMTMzLDggKzEzMyw4IEBAIHN0YXRpYyBTY2hlbWVB
bmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmCiAgICAgU2NoZW1lQW5kS2V5UmVzdWx0IHJlc3VsdDsKICAgICBmb3IgKGF1dG8m
IGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICAg
ICAgT3B0aW9uYWw8Rm91ckNDPiBzY2hlbWU7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4ga2V5SUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm91ckNDPiBzY2hlbWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBrZXlJRDsKIAogICAgICAgICBhdXRv
IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpLCBvZmZzZXQsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgd2hpbGUgKGF1dG8gb3B0aW9u
YWxCb3hUeXBlID0gSVNPQm94OjpwZWVrQm94KHZpZXcsIG9mZnNldCkpIHsKQEAgLTE3MCw3ICsx
NzAsNyBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LU9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1
bHRzID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKQEAgLTE5OCw3ICsx
OTgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlcgogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1PcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRo
ZSBrZXkgSUQuCiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CkBAIC00Mjgs
NyArNDI4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gcmVzcG9uc2Uu
Y29weSgpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vz
c2lvbklkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCAy
MGQ0OWY3YjAxY2U1NDMyYzJmOTgzZjVlNWI2NmNhZGM1ZWUyMzQ5Li4xNDk3NDM5MGY0MGIwM2Ew
Y2I2ZTU1OWM5ZTZjMGZlMDk4YTA0MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaApAQCAtNzMsMTQgKzczLDE0IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlT
dHJlYW1pbmdTY2hlbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAppbmRleCBkODFiY2EzNTQ5MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNm
NzAxYjE1Li4xYjc2M2RkODRhMzhkNzVhYTc1NDRlNDQ5OTQ3ZmI2Y2ZkYjExZTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICAgVmVj
dG9yPGludD4gcHJvdG9jb2xzOwogICAgIH07Ci0gICAgc3RhdGljIE9wdGlvbmFsPEtleVN5c3Rl
bVBhcmFtZXRlcnM+IHBhcnNlS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxLZXlTeXN0ZW1QYXJhbWV0ZXJzPiBwYXJzZUtleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgCiAgICAgTGVnYWN5Q0RNKiBtX2NkbTsK
ICAgICBWZWN0b3I8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyo+IG1fc2Vzc2lvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmlu
ZGV4IDE1MzE2OTFmMzc4MWUxZmZlYzA4ZGZkNzQ3YzE3ZmU2MGJlNGFmNmYuLjg2MDI1ZjJhN2Ix
ODU3OGQ0N2M4MDg5NTE1ZDMxY2FkOWUxYzYxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5n
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
YXV0byBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXJzZUtleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkgLT4gT3B0aW9uYWw8S2V5U3lzdGVtUGFyYW1ldGVycz4KK2F1dG8g
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFyc2VLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pIC0+IHN0ZDo6b3B0aW9uYWw8S2V5U3lzdGVtUGFyYW1ldGVycz4KIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5c3RlbVJFKCJe
Y29tXFwuYXBwbGVcXC5mcHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIEpTQzo6WWFycjo6VGV4
dENhc2VJbnNlbnNpdGl2ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0
cmVhbWluZ1Bzc2hCb3guaAppbmRleCAxNDdjMzc5ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEy
NDk1YWZkLi40ZGFkZDdkMjFlNzFlNGYyOTI5NTQwYTYzNDFiODRjZTEyNWU1ZmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFp
clBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC05Mywx
NyArOTMsMTcgQEAgcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAiZnBzayI7IH0KIAogICAgIGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVz
dEluZm9Cb3gmIHJlcXVlc3RJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SW5mbzsgfQot
ICAgIGNvbnN0IE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveD4mIGFz
c2V0SUQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2V0SUQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJ
U09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3g+JiBjb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlWZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
TGlzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlB
c3NldElkQm94PiYgYXNzZXRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzZXRJRDsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94PiYgY29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgcGFy
c2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBtX3JlcXVlc3RJbmZvOwotICAgIE9w
dGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveD4gbV9hc3NldElEOwotICAg
IE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveD4gbV9jb250ZXh0Owot
ICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVy
c2lvbkxpc3Q7CisgICAgc3RkOjpvcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0
SWRCb3g+IG1fYXNzZXRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5Q29udGV4dEJveD4gbV9jb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAppbmRleCBjOTc5ZWI1NzI3ZGJjMzk2MTcyNWIwNTdjN2IxYTJhMmYzZmFjYmE4Li4x
ZTYyY2NmN2E1YTM3YTM5NWU1M2YyMzNlNjY5NWMyNzM0NDg2YzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKCkK
ICAgICBkaXNjb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4g
bWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KENGQXJyYXlSZWYgY29sb3JBcnJheSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJH
QkNGQXJyYXkoQ0ZBcnJheVJlZiBjb2xvckFycmF5KQogewogICAgIGlmIChDRkFycmF5R2V0Q291
bnQoY29sb3JBcnJheSkgPCA0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmgKaW5kZXggYjFhYTVkZmU1YWE4ZDQ4NjdkNzUyYjRmNGE1YWM4ZjNjNWI3
Y2I3YS4uYmM2NTg3ZTJjODk2NGY3MWU1ZjRhNjUzYjBiYmNiMmQ1NjU0MzFiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oCkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
ZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQo
TGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKE9w
dGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgS2V5
U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+
ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZD
b250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIAotICAgIE9wdGlvbmFs
PENETUtleVN0YXR1cz4gcHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlS
ZXF1ZXN0ICosIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPikgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxDRE1LZXlTdGF0dXM+IHByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQoQVZDb250
ZW50S2V5UmVxdWVzdCAqLCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPikgY29uc3Q7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CkBAIC0yMDcsNyArMjA3LDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1f
aW5zdGFuY2U7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcG9ydEdyb3VwPiBtX2dyb3Vw
OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgT3B0
aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVl
c3Q+IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5
U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNEYXRh
Pj4gbV9leHBpcmVkU2Vzc2lvbnM7CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQ+IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA4NzhmNzIyNTg4MTg4
Mzc3NzlmNGNmYjQ3MDk0YTc5ODE2YzgwZjMwLi42YjliZjIxMGE3MTkyMjc3ZTgxOTRlOTA0ZDk1
YWNlOGRmZTYxMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjg2LDcgKzI4Niw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlUeXBlID0gUmV0YWluUHRyPEFWQ29udGVudEtleVJl
cXVlc3Q+OwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFJldGFpblB0cjxOU0RhdGE+OwogICAgIHVz
aW5nIFJlc3BvbnNlTWFwID0gSGFzaE1hcDxLZXlUeXBlLCBWYWx1ZVR5cGU+OwotICAgIHVzaW5n
IFVwZGF0ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPFJlc3BvbnNlTWFw
PiYmKT47CisgICAgdXNpbmcgVXBkYXRlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxSZXNwb25zZU1hcD4mJik+OwogICAgIFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9y
KHNpemVfdCBudW1iZXJPZkV4cGVjdGVkUmVzcG9uc2VzLCBVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogICAgICAgICA6IG1fbnVtYmVyT2ZFeHBlY3RlZFJlc3BvbnNlcyhudW1iZXJPZkV4cGVj
dGVkUmVzcG9uc2VzKQogICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCkBA
IC04MDksNyArODA5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIG1f
dXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IgPSBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAg
bV91cGRhdGVSZXNwb25zZUNvbGxlY3RvciA9IFdURjo6bWFrZVVuaXF1ZTxVcGRhdGVSZXNwb25z
ZUNvbGxlY3Rvcj4obV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLnNpemUoKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoT3B0aW9uYWw8VXBkYXRlUmVzcG9u
c2VDb2xsZWN0b3I6OlJlc3BvbnNlTWFwPiYmIHJlc3BvbnNlcykgeworICAgICAgICBtX3VwZGF0
ZVJlc3BvbnNlQ29sbGVjdG9yID0gV1RGOjptYWtlVW5pcXVlPFVwZGF0ZVJlc3BvbnNlQ29sbGVj
dG9yPihtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuc2l6ZSgpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChzdGQ6Om9wdGlvbmFsPFVwZGF0ZVJlc3BvbnNl
Q29sbGVjdG9yOjpSZXNwb25zZU1hcD4mJiByZXNwb25zZXMpIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDE0LDcgKzE0MTQsNyBA
QCBzdGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVz
dFN0YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0
YXR1c2VzKE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpIGNvbnN0CitDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNw
bGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKIHsKICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
ZXM7CiAKQEAgLTE0NjAsNyArMTQ2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuCiAgICAg
dXBkYXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChtX2NsaWVudC0+ZGlzcGxheUlEKCkp
OwogfQogCi1PcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRL
ZXlSZXF1ZXN0ICpyZXF1ZXN0LCBPcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlE
KSBjb25zdAorc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNv
bnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlE
PiBkaXNwbGF5SUQpIGNvbnN0CiB7CiAjaWYgSEFWRShBVkNPTlRFTlRLRVlSRVFVRVNUX1BFTkRJ
TkdfUFJPVEVDVElPTl9TVEFUVVMpCiAgICAgaWYgKFtyZXF1ZXN0IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoZXh0ZXJuYWxDb250ZW50UHJvdGVjdGlvblN0YXR1cyldKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggNTgzNjJkYmQyY2Mw
N2QwMWRkZWE2ZTg5MzJkZDQ4ZjcxOGYyOGE5NS4uYTI4ZDRjNDMwMWU2NzI1MDkyOThmNTNjZTdj
N2QyOTRjZjE3OTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgUmVwZXRpdGlvbkNvdW50IHJl
cGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1dGkoKSBjb25zdCBmaW5h
bDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICBPcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIEludFNpemUgZnJh
bWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAg
IERlY29kZU9yZGVyU2FtcGxlTWFwOjppdGVyYXRvciBtX2N1cnNvcjsKICAgICBMb2NrIG1fc2Ft
cGxlR2VuZXJhdG9yTG9jazsKICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9
OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNp
emU+IG1fc2l6ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCmluZGV4IGI0MTJkNWRiZGM1NWU2ODJlM2YwMmNlOTU5N2NkMDgzM2RiNGU0
NjkuLjMwZWVhYWEzNTc0ZDVjZjU3NTMyNTY5NmE1YWRlOTg2ZDg5YmZjNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjUyLDcgKzI1Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV9oYXNBbHBoYSA9IGFscGhhSW5mbyAhPSBrQ0dJbWFnZUFs
cGhhTm9uZSAmJiBhbHBoYUluZm8gIT0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCAmJiBhbHBo
YUluZm8gIT0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3Q7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8
Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFBB
TDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKG1fc2FtcGxlLmdldCgpKQogICAgICAgICAg
ICAgfHwgUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDc1ZmRjNmFhYzZhYjM1Y2U2NGI4Mjc4Y2I1MDBiM2Rh
NjAzNTMyNTguLmM0MjQ4YzlkYjU0ODc4ZmYwODRjYzM5YTM1YjMwMmZhMmFmYjkzYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKQEAgLTIyNCw3ICsyMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKSBmaW5hbDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNB
Y2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBm
aW5hbDsKIAogICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25zdCBmaW5hbDsKIApAQCAt
MzA3LDcgKzMwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAo
Ym9vbCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVSb3RhdGlvblNlc3Npb24oKTsKIAotICAgIE9w
dGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CkBAIC0z
OTcsNyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgbV9jYWNoZWREdXJhdGlvbjsK
ICAgICBtdXRhYmxlIE1lZGlhUGxheWVyOjpDdXJyZW50VGltZURpZENoYW5nZUNhbGxiYWNrIG1f
Y3VycmVudFRpbWVEaWRDaGFuZ2VDYWxsYmFjazsKICAgICBtdXRhYmxlIE1lZGlhVGltZSBtX2Nh
Y2hlZEN1cnJlbnRNZWRpYVRpbWU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxXYWxsVGltZT4gbV93
YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50
IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFi
bGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKQEAgLTQxOCwxMCArNDE4LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBi
b29sIG1fY2FjaGVkQXNzZXRJc0xvYWRlZCB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxib29sPiBtX2NhY2hlZEFzc2V0SXNQbGF5YWJsZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jYWNoZWRBc3NldElzUGxheWFibGU7CiAgICAgYm9vbCBtX211dGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fc2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzIHsgZmFsc2Ug
fTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fdHJhY2tzQXJlUGxheWFibGU7CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdHJhY2tzQXJlUGxheWFibGU7CiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBtdXRhYmxlIGJvb2wgbV9hbGxvd3NX
aXJlbGVzc1ZpZGVvUGxheWJhY2sgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDc4N2Nh
NDVlMzZhYzQxMjVmMjI1ZjUzNGQxNzIzZTU1YThmMDhiMzAuLjkyMWNhZTg4Yjg0NzlhNmUwYjNh
NWU5Y2NhOGIyNzExZmFiMDNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM1Miw3
ICsyMzUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRQ
YXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlv
bmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d291bGRUYWludE9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAogewogICAgIEFWQXNzZXRSZXNv
dXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVzb3VyY2VMb2Fk
ZXI7CiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNV
UkxTZXNzaW9uRW5hYmxlZCgpCkBAIC0zNDE4LDcgKzM0MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZERpc2FibGVTbGVlcChib29sIGZsYWcp
CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
CiB7CiAgICAgaWYgKCFbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
dmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MpXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMmU4YjY4NTQ0M2UwNjM3YzU4NDYyYjM3YmRh
YjYyZGFjZGE4MzE4Ny4uOTAwMTUxNjk5ZGE4MDcwZmU3N2JlNzE0N2M0ZjU4N2JiZTdhYzAyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgog
CiAgICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0
aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3MoKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgb3ZlcnJpZGU7CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGJvb2wgaXNDdXJyZW50UGxheWJh
Y2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCmluZGV4IDdkYTVkMzhkOTJmYzc4ZmFjMGU1YjlhZWI3YzgyZjBlYWQ0MjUxY2EuLjVhNjlh
YTY3OTUxODljYjRlMDc2ZDMxOTQ2OWY5OTY1MDRmZjk0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KQEAgLTcyNCw3ICs3MjQsNyBAQCBzaXplX3QgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0
ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAg
ICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgcmV0dXJuIFZpZGVvUGxh
eWJhY2tRdWFsaXR5TWV0cmljcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IGE0ZWFl
M2MzYjZmZjRhMGI0OGVmMzA4ZTk5MDU4MTZjODFiYmQwN2IuLjIyYTZhZWE4YjE2NGZhMGYxNjZl
ZWE1ODZkZDE4MjZiOGEyZTQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yNDQs
NyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZvbHVtZSB7IDEgfTsKICAgICBEaXNw
bGF5TW9kZSBtX2Rpc3BsYXlNb2RlIHsgTm9uZSB9OwogICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5
YmFja1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwotICAgIE9wdGlvbmFsPENHQWZmaW5l
VHJhbnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOworICAgIHN0ZDo6b3B0aW9uYWw8Q0dBZmZpbmVU
cmFuc2Zvcm0+IG1fdmlkZW9UcmFuc2Zvcm07CiAKICAgICAvLyBVc2VkIG9uIGJvdGggbWFpbiB0
aHJlYWQgYW5kIHNhbXBsZSB0aHJlYWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IGU2NDI2N2IxOTQyZjJhNTg1OWFm
MWE3YTEzZWRkNWY2NDY2YjUxMDEuLmQwM2NkYzhkZDYyNTQxNjA5OWE1MzcxMzVlZTExZWM5MTA3
MzZhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNl
dFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFRp
bWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBA
IC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25h
bDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3RyaW5n
UmVmIGtleSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdl
PiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3RyaW5nUmVmIGtleSkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSA9IGRlZmF1bHQ7CiAgICAgUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCA3ZDZkNTBhNWNmZWFjNWVhNzlkNzA4NTNjMDZiMGQyYWRk
NDg5NzcyLi4xY2E4ZWZlZWQwYmY4NDM5ZDczZTY0NDc1YTI5OTM1YWE0YWMwMDc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC00NjQsNyArNDY0
LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGJ5dGVSYW5nZU9mZnNldEF0dGFjaG1lbnRLZXkoKQog
ICAgIHJldHVybiBrZXk7CiB9CiAKLU9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TWVkaWFT
YW1wbGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KGJ5dGVSYW5nZU9mZnNldEF0dGFj
aG1lbnRLZXkoKSk7CiB9CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBNZWRpYVNhbXBsZUFWRk9i
akM6OnNldEJ5dGVSYW5nZU9mZnNldChzaXplX3QgYnl0ZU9mZnNldCkKICAgICBQQUw6OkNNU2V0
QXR0YWNobWVudChtX3NhbXBsZS5nZXQoKSwgYnl0ZVJhbmdlT2Zmc2V0QXR0YWNobWVudEtleSgp
LCBvZmZzZXROdW1iZXIuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7
CiB9CiAKLU9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudChDRlN0cmluZ1JlZiBrZXkpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJh
bmdlRm9yQXR0YWNobWVudChDRlN0cmluZ1JlZiBrZXkpIGNvbnN0CiB7CiAgICAgYXV0byBieXRl
T2Zmc2V0Q0YgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KFBBTDo6Q01HZXRBdHRhY2ht
ZW50KG1fc2FtcGxlLmdldCgpLCBrZXksIG51bGxwdHIpKTsKICAgICBpZiAoIWJ5dGVPZmZzZXRD
RikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCmluZGV4IDQyZDFlMWQzODFlM2U2OTcwZjg3MTNiZTc5OWRhNmRjZjcwNWMwYzkuLmMy
NmZmY2I4MzExMWVkMDZhZGM5Mjk0ZTZlZmM3MmJlMjQ0NWU3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc2LDcg
KzE3Niw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgRm91ckNoYXJDb2RlIG1fb3JpZ2luYWxD
b2RlYzsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CiAgICAgYm9vbCBtX2lzVmlk
ZW87CiAgICAgYm9vbCBtX2lzQXVkaW87CiAgICAgYm9vbCBtX2lzVGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDg4
NGIwYjI2MzZmNmY0ODQ2MjM2NmQ5MWNlMjQ5NmMxYmI0OTk5YzQuLjdkZTVhY2I5ODY5ZGM4OThj
MDJiMTRiYmZkNjBhYjE5ZDc3MDJlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCi0g
ICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAg
ICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2FpdGluZ0Zv
cktleSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZDAyODYzZjJlN2FjYTRiZjdmNGY0NjJkYWVh
YjBiMjUyOWE0MWVhYS4uYjJkZDVkZjRmNzhhMzdhZjhiYzk5YWFlNWUxNjk3MjRhOThhMTgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwcml2YXRlOgogICAgICAgICB7IH0KIAog
ICAgICAgICBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1ha2VT
dHJpbmcobV9uYW1lLCAnXycsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Byb3BlcnR5KSwgJ18n
LCBtX2luZGV4LCAnXycsIG1fc3ViSW5kZXgpOyB9Ci0gICAgICAgIE9wdGlvbmFsPFNlY29uZHM+
IGNvbXB1dGVkQmVnaW5UaW1lKCkgY29uc3QKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBjb21wdXRlZEJlZ2luVGltZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICht
X2JlZ2luVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fYmVnaW5UaW1lIC0gbV90aW1l
T2Zmc2V0OwpAQCAtNTAwLDcgKzUwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBtX2luZGV4
OwogICAgICAgICBpbnQgbV9zdWJJbmRleDsKICAgICAgICAgU2Vjb25kcyBtX3RpbWVPZmZzZXQg
eyAwX3MgfTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9iZWdpblRpbWU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9iZWdpblRpbWU7CiAgICAgICAgIFBsYXlTdGF0ZSBt
X3BsYXlTdGF0ZSB7IFBsYXlTdGF0ZTo6UGxheVBlbmRpbmcgfTsKICAgICAgICAgYm9vbCBtX3Bl
bmRpbmdSZW1vdmFsIHsgZmFsc2UgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRmYmFhN2Zi
ZGFhMTQ3NDQ2M2MzZTg4ZDZmZGM4NWFmNTNlNWMxMTYuLjliOWUyMGYyZmIzODMyY2FiMjAxNTZk
MTBjZGRlNzM3NTY4OGM1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lk
IFRpbGVDb250cm9sbGVyOjpzZXRWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiB9CiAKLXZvaWQgVGlsZUNvbnRyb2xsZXI6OnNl
dExheW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCit2b2lkIFRpbGVD
b250cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IHJlY3QpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRWaWV3cG9ydFJlY3QpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlQ29udHJvbGxlci5oCmluZGV4IDY4ODcwOTNlM2MzMTA5NTA3YjMxOWU0MWMxYThkMzk0ZGNh
ZmVhMDYuLmM0OWNjZjk4YTRhMzU5Mjk0NzdkOWVmNzQxNGY3ZmIzZmY5Y2JkNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3Qo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Zpc2libGVSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGNv
dmVyYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY292ZXJhZ2VSZWN0OyB9Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2xheW91dFZpZXdwb3J0UmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlv
dXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0UmVjdDsgfQog
CiAgICAgdm9pZCBzZXRUaWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRGb3JUZXN0aW5nKGJvb2wp
IGZpbmFsOwogCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRpbGVkQmFj
a2luZyBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8
RmxvYXRSZWN0PikgZmluYWw7CisgICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+KSBmaW5hbDsKICAgICB2b2lkIHNldENvdmVyYWdlUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFn
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUaWxlZFNj
cm9sbGluZ0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBmaW5hbDsKQEAgLTIx
NCw3ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIaXN0b3JpY2FsVmVs
b2NpdHlEYXRhPiBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGE7IC8vIFVzZWQgd2hlbiB3ZSB0cmFj
ayB2ZWxvY2l0eSBpbnRlcm5hbGx5LgogCiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8v
IE9ubHkgdXNlZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBtX2xheW91dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5IHRoZSB0aWxl
ZCBzY3JvbGxpbmcgaW5kaWNhdG9yLgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xh
eW91dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5k
aWNhdG9yLgogICAgIEZsb2F0UmVjdCBtX2NvdmVyYWdlUmVjdDsKICAgICBJbnRSZWN0IG1fYm91
bmRzQXRMYXN0UmV2YWxpZGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3Bw
CmluZGV4IGQyYzg5ZTRhYTk0Y2RlYzBjMzFjN2I5MzNmNjMzOWFlYTU4NTI5ODguLmUwZTlhYTdk
MDM3NTY5ZWVmYzQxODJhNzBjNjZlN2NkZGZiYzA1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JgogICAgIH0KIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0
YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNv
ZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1h
Z2UuaXNFbXB0eSgpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQogCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0
b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBB
U1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rp
bmcobWltZVR5cGUpKTsKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9fZ2V0X3Rh
cmdldChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmgKaW5kZXggN2I3MDc5ZTg4YWZjNmFlYzE1OTJiZGM2YmFjZjE3YzJmYjJm
NTI5ZS4uMjRiM2M0ZGM1NmZjZTcxMTZiYjg0MzkxYWIzMTAzNjM4YTM1NjJmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
IG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDliNWMwYWQwNzQ0NTE4ODBkZWZkZDNj
NDg5MmU0ZjczYzI4NjQyYzkuLmFkNzE2YjhjNjNiMmFjMDRhOWIzMjBlMDIwY2Y1YTY1YzEzZGQ5
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkKICAgICByZXR1cm4gY29w
eU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
QmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCAwMzcwNzg3YjY5OTljZmRlMDZhZTBm
YTFjZDA2NjYxMzkxNTcyMzljLi4wNjQyMjk3MDM2NzYwZTU5MjQ0NjdjOWY5OGRiM2YxMDUzOTAx
NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0
cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0
aWVzQ2Fpcm8uY3BwCmluZGV4IDVhNGQzYTUwODU5YTVlODQ0YzdmNDI0MTMwNjkxNzE0ODAyYjAx
YzcuLjRkYjYwM2E5NGYzYWYxYjFiY2U5NGFiMGYxYWUzNjA1NGMwMDRmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0
aWVzQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBi
b29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFZlY3Rvcjx1CiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0
cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBDQUlST19TVEFUVVNfU1VDQ0VT
UzsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPikKK1ZlY3Rvcjx1aW50OF90PiBk
YXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlOwog
ICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgJmVuY29kZWRJ
bWFnZSkpCkBAIC03Myw3ICs3Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZh
Y2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvCiAgICAgcmV0
dXJuIGVuY29kZWRJbWFnZTsKIH0KICNlbHNlCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZl
clNpemUpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBH
VW5pcXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6ZSYgYnVmZmVyU2l6ZSkKIHsKICAgICAv
LyBMaXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBlbmNvZGluZyB0eXBlcyBjb21lcyBmcm9tIHRoZSBH
ZGtQaXhidWYgZG9jdW1lbnRhdGlvbi4KICAgICAvLyBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9y
Zy9nZGstcGl4YnVmL3N0YWJsZS9nZGstcGl4YnVmLUZpbGUtc2F2aW5nLmh0bWwjZ2RrLXBpeGJ1
Zi1zYXZlLXRvLWJ1ZmZlcnYKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJ
bWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbgogICAgIHJldHVybiAhZXJyb3I7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJv
X3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2Us
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQog
ewogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGJ1ZmZlcjsKICAgICBnc2l6ZSBidWZmZXJTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oCmluZGV4IDAwNzRjODMwZWI5YzI3
NjU1MDBiNmNjNTM2M2YxOWU3YWIwMDUwNmYuLjA1YzNjYTIxODk1OWJkNjIwYjU2MWQyMjJlOTA0
ZmNmYzY5ODdjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgKQEAgLTM4
LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8dWludDhfdD4gZGF0
YShjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkpOworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9fc3VyZmFjZV90KiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggNTFlMGE4YzBlNjRjMzE0YWVhNmYyNWRlNGEyOTE0
YzlkMTUxNzliNy4uZGFiYzdlNzczNDAwNTUwNDUxZjI3MDRlMTFjODE4ZmNjNmQyYzg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxX
ZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+PjoKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVp
bnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3IpCiB7CiAg
ICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Igc3BhY2Vz
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggYmIwNTYzN2FlZjVjYjVhOTVmYmY4Zjdj
NDBlN2I2M2YwMjIxMWQ2Ni4uYzEyYjJmODBjMGIzMjI4Yzg2MTVmM2I4ODdhYTFlOGVmYTA1YTI2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGlu
ZyhDRlN0cmluZ1JlZiBkCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dC5nZXQoKSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJD
R0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRv
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkgY29uc3QKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgQVNTRVJUX0lNUExJRVMo
IWlzSW5HUFVQcm9jZXNzKCksIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CkBAIC0yMjcsNyArMjI3LDcgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG8KICAgICByZXR1cm4gV2ViQ29yZTo6ZGF0YShpbWFnZS5nZXQoKSwgZGVz
dGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitT
dHJpbmcgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHBy
ZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAg
QVNTRVJUX0lNUExJRVMoIWlzSW5HUFVQcm9jZXNzKCksIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuaAppbmRleCBjMjQ1ZTk0ZmFjMTEzZDVhZTk4NmZjY2JhNzNhN2Y3OWUwZTgzYmRjLi4wNzY5
OWQ3NzAxMmRjODkwNTkwYzVjOGYxZTdiNDU4ZjdkMjhkZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xpcFRvTWFzayhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsKIAot
ICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuY3BwCmluZGV4IDY4NjVmMGJkNDFiYjQ4NDYwZGJhMWY0ZjZiYTU4MDc4NGNj
YWVlNjEuLjUwMDk3NzJkMGIyODU0OWU4NDllODY3ZmQwMTNjZDVjZGZlYWQ4MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fZGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCAwODk3M2YzODE4OWFlNmI2
MGY4MjgwZDAwMzI1ZGJiNDgwYmFlMmY0Li5jODkwZTlmZThmMmU4NjRmNTBiNjg4OWM5ZWI0ZjBm
NTg3MmJiOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcAppbmRleCAwYzcwNmQxODMzOTVkOTU5NjhmYmZiZmM2Yzk3NDA5ZmQ1Yjg5
MjIzLi4wN2EyMDJhMWUzNDg1ZTdiYTUyMDQyN2YwYmYyYjRiZmYyZjFlNzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nKENGU3RyaQogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNH
SW1hZ2VGb3JFbmNvZGluZyhkZXN0aW5hdGlvblVUSSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJG
b3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKIHsKICAg
ICBJT1N1cmZhY2U6OkxvY2tlciBsb2NrKCptX3N1cmZhY2UpOwogICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbG9jay5z
dXJmYWNlQmFzZUFkZHJlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmlu
ZGV4IGVlOWRlZmMyMDg0NzVmYmZiOGU1MWJiN2FmYTQ3MmU4NjY3Zjg1M2MuLjgzYWVjOGNkOTI2
ZGM1NWYxZDY4MjliYjUxMzI4NjNhNTIxMTA3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdDb25zdW1p
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNJblVzZSgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCAxMmIzZTQ2NTFm
NDY4MTc5ZDFhNjY2M2UzYjkwNTBlMDA5NTg0NjVjLi4yNzhiNzQwZTQ0NDIzMjkxNmFhYmU4NjI1
NjA2YWUzZDM4YzVjNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApAQCAtOTYsNyAr
OTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLXN0YXRpYyBib29sIGVuY29kZShDR0ltYWdlUmVm
IGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBjb25zdCBTY29wZWRMYW1iZGE8UHV0Qnl0ZXNDYWxsYmFjaz4mIGZ1bmN0aW9uKQorc3Rh
dGljIGJvb2wgZW5jb2RlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIGRlc3RpbmF0aW9u
VVRJLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1
dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKIHsKICAgICBpZiAoIWltYWdlIHx8ICFkZXN0aW5h
dGlvblVUSSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRp
YyBib29sIGVuY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVU
SSwgT3B0aW9uYWw8ZG91YmxlCiAgICAgcmV0dXJuIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXpl
KGRlc3RpbmF0aW9uLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVs
QnVmZmVyJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikK
K3N0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVk
TGFtYmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1
ZmZlciYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkCiAgICAgcmV0
dXJuIGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1
bmN0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTb3VyY2VE
ZXNjcmlwdGlvbj4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVUb1ZlY3RvcihTb3VyY2Um
JiBzb3VyY2UsIFNvdXJjZURlc2NyaXB0aW9uJiYgc291cmNlRGVzY3JpcHRpb24sIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSkKK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU291
cmNlRGVzY3JpcHRpb24+IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlVG9WZWN0b3IoU291
cmNlJiYgc291cmNlLCBTb3VyY2VEZXNjcmlwdGlvbiYmIHNvdXJjZURlc2NyaXB0aW9uLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
OwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFt
ZSBTb3VyY2VEZXNjcmlwdGlvbj4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiBlbmMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNvdXJj
ZURlc2NyaXB0aW9uPiBzdGF0aWMgU3RyaW5nIGVuY29kZVRvRGF0YVVSTChTb3VyY2UmJiBzb3Vy
Y2UsIFNvdXJjZURlc2NyaXB0aW9uJiYgc291cmNlRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK3RlbXBsYXRlPHR5cGVuYW1lIFNv
dXJjZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+IHN0YXRpYyBTdHJpbmcgZW5jb2RlVG9E
YXRhVVJMKFNvdXJjZSYmIHNvdXJjZSwgU291cmNlRGVzY3JpcHRpb24mJiBzb3VyY2VEZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxp
dHkpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgZG9uZSBtb3JlIGVmZmljaWVudGx5
IHdpdGggYSBzdHJlYW1pbmcgYmFzZTY0IGVuY29kZXIuCiAKQEAgLTIwNywyMiArMjA3LDIyIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+IHN0
YXRpYyBTdHJpbmcgZW5jb2RlVG9EYXRhCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6Iiwg
bWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2RlZERhdGEpKTsKIH0KIAot
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdSZWYgZGVzdGlu
YXRpb25VVEksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRh
KENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIGRlc3RpbmF0aW9uVVRJLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICByZXR1cm4gZW5jb2RlVG9WZWN0b3IoaW1hZ2Us
IGRlc3RpbmF0aW9uVVRJLCBxdWFsaXR5KTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29u
c3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpCitWZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5KQogewogICAgIHJldHVybiBlbmNvZGVUb1ZlY3RvcihwaXhlbEJ1ZmZl
ciwgbWltZVR5cGUsIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgZGF0YVVSTChDR0ltYWdlUmVmIGlt
YWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJlZiBpbWFn
ZSwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAgIHJldHVybiBlbmNvZGVUb0RhdGFV
UkwoaW1hZ2UsIGRlc3RpbmF0aW9uVVRJLCBtaW1lVHlwZSwgcXVhbGl0eSk7CiB9CiAKLVN0cmlu
ZyBkYXRhVVJMKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorU3RyaW5nIGRhdGFVUkwoY29uc3Qg
UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICByZXR1cm4gZW5jb2RlVG9EYXRhVVJMKHBp
eGVsQnVmZmVyLCBtaW1lVHlwZSwgbWltZVR5cGUsIHF1YWxpdHkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5oCmluZGV4IDk5ODMxMTc5NTUzNzExN2Y4YzQ3NmFkYjNlMmUwZjAwN2M2OWI2MDku
LmViMWRiMjhhOTNmYzlkNDJlMjcxNmFkOTVhMmU1MmZlOTI0MTA0MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmgKQEAgLTM4LDExICszOCwxMSBAQCBXRUJDT1JFX0VYUE9SVCB1aW50OF90IHZl
cmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgYgog
Q0ZTdHJpbmdSZWYganBlZ1VUSSgpOwogUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tSW1h
Z2VCdWZmZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEo
Q0dJbWFnZVJlZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSk7Ci1WZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CitWZWN0b3I8dWlu
dDhfdD4gZGF0YShDR0ltYWdlUmVmLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29uc3QgUGl4
ZWxCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSk7CiAKLVN0cmluZyBkYXRhVVJMKENHSW1hZ2VSZWYsIENGU3RyaW5nUmVmIGRlc3Rp
bmF0aW9uVVRJLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHkpOwotU3RyaW5nIGRhdGFVUkwoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworU3RyaW5nIGRhdGFVUkwoQ0dJbWFn
ZVJlZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KTsKK1N0cmluZyBkYXRhVVJMKGNvbnN0IFBp
eGVsQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA2
NWM3YTgyZDQ0ZGU4ZTA0NWI3YmQ4MGRmZjMwZDBiMWNkOWRjNGMwLi5iOGFlMmY3ZmM0Yjc1MjQ0
MzdlYTYzZmFkNGRmOGE0N2ZjM2JmOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xODksNyArMTg5LDcg
QEAgc3RhdGljIGJvb2wgbWF5SGF2ZURlbnNpdHlDb3JyZWN0ZWRTaXplKENGRGljdGlvbmFyeVJl
ZiBpbWFnZVByb3BlcnRpZXMpCiAgICAgICAgICYmIChyZXNvbHV0aW9uWCAhPSBJbWFnZVJlc29s
dXRpb246OkRlZmF1bHRSZXNvbHV0aW9uIHx8IHJlc29sdXRpb25ZICE9IEltYWdlUmVzb2x1dGlv
bjo6RGVmYXVsdFJlc29sdXRpb24pOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVu
c2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9w
ZXJ0aWVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNp
emVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWVzKQogewogICAg
IEFTU0VSVChpbWFnZVByb3BlcnRpZXMpOwogICAgIGF1dG8gZXhpZkRpY3Rpb25hcnkgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1h
Z2VQcm9wZXJ0eUV4aWZEaWN0aW9uYXJ5KTsKQEAgLTM4Nyw3ICszODcsNyBAQCBSZXBldGl0aW9u
Q291bnQgSW1hZ2VEZWNvZGVyQ0c6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKIHsK
ICAgICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGll
c0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5n
ZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKQEAgLTUzMCw3ICs1MzAsNyBAQCBQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaQogICAgICAgICAKICAgICAgICAgaWYgKGRlY29kaW5nT3B0aW9ucy5o
YXNTaXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgICAgICAvLyBTZWUgd2hpY2ggc2l6ZSBpcyBz
bWFsbGVyOiB0aGUgaW1hZ2UgbmF0aXZlIHNpemUgb3IgdGhlIHNpemVGb3JEcmF3aW5nLgotICAg
ICAgICAgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZUZvckRyYXdpbmcgPSBkZWNvZGluZ09wdGlv
bnMuc2l6ZUZvckRyYXdpbmcoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4g
c2l6ZUZvckRyYXdpbmcgPSBkZWNvZGluZ09wdGlvbnMuc2l6ZUZvckRyYXdpbmcoKTsKICAgICAg
ICAgICAgIGlmIChzaXplRm9yRHJhd2luZy52YWx1ZSgpLnVuY2xhbXBlZEFyZWEoKSA8IHNpemUu
dW5jbGFtcGVkQXJlYSgpKQogICAgICAgICAgICAgICAgIHNpemUgPSBzaXplRm9yRHJhd2luZy52
YWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA4MTQ5MGQ4OWRjOTc1OGY4MzI5MDY5MTA2
NzkzN2FkMWRlNTI3NmYwLi45NzQwNzM2YTIxYWM5OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFN0cmluZyB1dGkoKSBj
b25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsK
ICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAg
T3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIGZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCBh
OTc3MTYzYTA5MzAzZGMxYTU3ZmVhMGIwZDRhMzg4YjMyMzIwOTdlLi5kZGRjYWNhN2ZlOTAwOTkw
Yjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5j
cHAKQEAgLTUxLDE0ICs1MSwxNCBAQCBBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
aWQoKSBjb25zdAogICAgIHJldHVybiBtX3RyYWNrSUQ7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90
PiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrVUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tVSUQoKSBjb25zdAogewogICAg
IGlmIChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBtX3Ry
YWNrLnRyYWNrX3VpZC52YWx1ZSgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9w
dGlvbmFsPGJvb2w+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxib29sPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmRlZmF1bHRFbmFi
bGVkKCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkK
ICAgICAgICAgcmV0dXJuIG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNr
UHJpdmF0ZVdlYk0uaAppbmRleCAxMjIyYzQ0OTdlMzk5ZmM5OTA1ZjRjZGNkNTM4MTA0NDg0MDIw
MjAwLi5iM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQxYzdjNGJiNzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0
ZVdlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRp
b1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgQXRvbVN0
cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBmaW5hbDsKICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IGRl
ZmF1bHRFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
dHJhY2tVSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRlZmF1bHRF
bmFibGVkKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVX
ZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggODkx
ZGQ1MzQzZTY5ZWVjZGRkZTA1MDFiZjY0ZTUzMzhiNDY2NTcwNy4uNzA0ZjJkYzJlOTgyNGQ5ZTgx
YjI0NTIzOGU5MDFhYjU2NzM0M2YwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtOTI0
LDEyICs5MjQsMTIgQEAgc3RydWN0IE1pbk1heCB7CiB9OwogCiBzdHJ1Y3QgVmFyaWF0aW9uQ2Fw
YWJpbGl0aWVzIHsKLSAgICBPcHRpb25hbDxNaW5NYXg+IHdlaWdodDsKLSAgICBPcHRpb25hbDxN
aW5NYXg+IHdpZHRoOwotICAgIE9wdGlvbmFsPE1pbk1heD4gc2xvcGU7CisgICAgc3RkOjpvcHRp
b25hbDxNaW5NYXg+IHdlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxNaW5NYXg+IHNsb3BlOwogfTsKIAotc3RhdGljIE9wdGlvbmFsPE1p
bk1heD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYgYXhpcykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25h
cnlSZWYgYXhpcykKIHsKICAgICBDRk51bWJlclJlZiBtaW5pbXVtVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9udFZhcmlhdGlv
bkF4aXNNaW5pbXVtVmFsdWVLZXkpKTsKICAgICBDRk51bWJlclJlZiBtYXhpbXVtVmFsdWUgPSBz
dGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9u
dFZhcmlhdGlvbkF4aXNNYXhpbXVtVmFsdWVLZXkpKTsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHN0
YXRpYyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKQogc3RhdGljIFJldGFpblB0cjxDVEZvbnRS
ZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSwgQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgLy8gRklY
TUU6IFNlZSBjb21tZW50IGluIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWls
eUF0KCkgaW4gRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCi0gICAgT3B0aW9uYWw8U3lzdGVtRm9u
dEtpbmQ+IHN5c3RlbURlc2lnbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN5c3RlbUZvbnRLaW5kPiBz
eXN0ZW1EZXNpZ247CiAKICNpZiBIQVZFKERFU0lHTl9TWVNURU1fVUlfRk9OVFMpCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgInVpLXNlcmlmIikpCkBAIC0x
NDE2LDcgKzE0MTYsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogICAgIHJldHVybiBmb250
Rm9yUGxhdGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwogfQogCi1PcHRpb25hbDxBU0NJSUxpdGVy
YWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRm
b3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGhlaXRpU3RyaW5nW10gPSB7IDB4OWVkMSwgMHg0ZjUzIH07CiAg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIHNvbmd0aVN0cmluZ1tdID0geyAweDViOGIsIDB4NGY1MyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IGYwMTZhNTI1YWZkZDY5OWE1MTNj
M2UwYTlkM2RiNmQzZDFhNGZlNTMuLjVhNGVjZTY5MjgxYTdmNjYxYzI1M2ZmNzk1NjU2NzE3Nzk5
OGNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc3RkOjpzaXplX3Qgc2l6ZT4gaW5saW5l
IHN0ZDo6YXJyYXk8VCwgc2l6ZT4gY28KICAgICByZXR1cm4gY29udmVydEFycmF5PFQ+KGFycmF5
LCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZT4geyB9KTsKIH0KIAotc3RhdGljIGlubGlu
ZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21T
dHJpbmcmIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTeXN0ZW1Gb250S2lu
ZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykKIHsKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiLXdlYmtpdC1zeXN0ZW0t
Zm9udCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywg
Ii1hcHBsZS1zeXN0ZW0iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZkOTZjNDJjMjMyN2NjZjQ5MS4uNzc5ZWJk
MTg5NmJjNTk2ZjcwMzMxOGI4ZThhMWUyYzczMDVmOTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBv
c2l0ZWQoKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiB7CiAgICAg
YXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWluLT5kaXNwbGF5QnVmZmVyKCk7CiAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxp
dGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZD
VXRpbGl0aWVzQ29jb2EuaAppbmRleCAzYWY0NmI1N2E0ZTBjNGM3YjU5ZTFkZjhlZjUzOWM1YzFl
OTg3OWI1Li44NTEyMjg1ODdmNzY0ZThiZGU2NzEyMWVhZDM2NmViZDg4YzNmZjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVz
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZD
VXRpbGl0aWVzQ29jb2EuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBNZWRpYUNhcGFiaWxpdGllc0luZm87CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYsIGJv
b2wgaGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBvcnQpOwotT3B0aW9uYWw8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJz
JiwgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCk7CitzdGQ6Om9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZD
UGFyYW1ldGVycyYsIGJvb2wgaGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBvcnQpOworc3Rk
OjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMo
Y29uc3QgRG9WaVBhcmFtZXRlcnMmLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBw
b3J0KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggYTg4ZmRlOTAxZjUyMjU5
NDRlZjFhOTc0MGNhNTIzODc3MzFjZDA4OC4uZWFjZGY3MDEzNTIwMGRhODQyNzk3YzQwYzYyNTFi
OWVjNzU1NTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4g
dmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Ym9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVk
aWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0
KQogewogICAgIENNVmlkZW9Db2RlY1R5cGUgY29kZWMgPSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZD
OwogICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMg
Q01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUoRG9WaVBhcmFtZXRlcnM6OkNvZGVjIGNvZGVjKQog
ICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50MTZfdD4+IHBhcnNlU3RyaW5n
QXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5LCBjb25zdCB2b2lkKiBrZXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDE2
X3Q+PiBwYXJzZVN0cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3RvcihDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSwgY29uc3Qgdm9pZCoga2V5KQogewogICAgIGF1dG8gdmFsdWUg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXkpOwogICAgIGlmICghdmFsdWUg
fHwgQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKQEAgLTE1Niw3ICsx
NTYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJh
eUZyb21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0b3IoQwogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAK
LU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVEb1ZpUGFyYW1ldGVycyhj
b25zdCBEb1ZpUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJv
b2wgaGRyU3VwcG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxp
ZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29s
IGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIGlmIChoYXNBbHBoYUNo
YW5uZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAppbmRleCBkNWE2MzVmZDE0
OGExYjE0MTdmOTkyZWUyNDJjYzc5OWI0NmQyYjQ2Li5hMGJhZWRlODhhNzU1NjgxZWEyYTRhMTdi
YTNlNmVkM2RmZGM3ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIENNVmlkZW9D
b2RlY1R5cGUgdmlkZW9Db2RlY1R5cGVGcm9tUkZDNDI4MVR5cGUoU3RyaW5nVmlldyB0eXBlKQog
ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZv
PiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlhRGVjb2RpbmdDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmls
aXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlhRGVjb2Rp
bmdDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDVkYTNi
NGJiNjkwOTc3N2NjZGJkMWI5ZDc0YzZlNDBlMTc1ZDI1ZDcuLjMzM2E1ZjEwMTc1NzliNWQ4ZDVi
OGY4Y2ZmYWZlMDVkMTY3MzhmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlRyYWNrRW50cnkm
IHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogCiBwcml2YXRlOgotICAgIG11dGFibGUgT3B0
aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXRv
bVN0cmluZz4gbV9jb2RlYzsKICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CiB9OwogCkBA
IC0xMDYwLDcgKzEwNjAsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIHJldHVybiB0
cmFja0RhdGEtPmNvbnN1bWVGcmFtZURhdGEoKnJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWlu
aW5nLCBDTVRpbWVNYWtlKGJsb2NrLT50aW1lY29kZSArIG1fY3VycmVudFRpbWVjb2RlLCBtX3Rp
bWVzY2FsZSksIGJsb2NrLT5udW1fZnJhbWVzKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2Ft
cGxlQnVmZmVyLCB1aW50NjRfdCB0cmFja0lELCBPcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9m
ZnNldCkKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cHJvdmlkZU1lZGlhRGF0YShSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1ZmZlciwgdWludDY0X3QgdHJhY2tJRCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCkKIHsKICAgICBtX2NhbGxPbkNs
aWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgYnl0ZVJhbmdl
T2Zmc2V0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjaykKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAg
ICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoT3B0
aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCkKIHsKICAgICBpZiAobV9wYWNrZXREZXNj
cmlwdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmgKaW5kZXggMzUxYWJmODE3NDUwYjMwYzcxYjRhMjA2N2FiNGU1MThjNTE1MWE0OS4u
YmU4YTE3YTE0N2FmZjkyNTViYWFjMGExZmVkMTIyMDFjZjIwZDM1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZpbmFs
OwogCi0gICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4sIHVpbnQ2NF90LCBPcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCk7CisgICAgdm9p
ZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZVJhbmdlT2Zmc2V0KTsKIAogICAgIGVudW0gY2xh
c3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1F
cnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgICAg
ICB9CiAKICAgICAgICAgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVy
JiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwg
aW50KSBmaW5hbDsKLSAgICAgICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6
ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQgPSBzdGQ6Om51bGxvcHQpOworICAgICAgICB2b2lk
IGNyZWF0ZVNhbXBsZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGF0ZXN0Qnl0ZVJhbmdl
T2Zmc2V0ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJBdWRpb1RyYWNrRGF0YSI7IH0KQEAg
LTIxNSw4ICsyMTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRh
dGlvblRpbWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwogICAgICAgICBWZWN0
b3I8dWludDhfdD4gbV9wYWNrZXREYXRhOwotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fY3Vy
cmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbV9jdXJyZW50
UGFja2V0U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudFBhY2tl
dEJ5dGVPZmZzZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2N1cnJlbnRQYWNr
ZXRTaXplOwogICAgICAgICBzaXplX3QgbV9wYWNrZXRCeXRlc1JlYWQgeyAwIH07CiAgICAgICAg
IHNpemVfdCBtX2J5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHNpemVfdCBtX3BhcnRpYWxCeXRl
c1JlYWQgeyAwIH07CkBAIC0yNjksOCArMjY5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxV
bmlxdWVSZWY8VHJhY2tEYXRhPj4gbV90cmFja3M7CiAgICAgdXNpbmcgQmxvY2tWYXJpYW50ID0g
VmFyaWFudDx3ZWJtOjpCbG9jaywgd2VibTo6U2ltcGxlQmxvY2s+OwotICAgIE9wdGlvbmFsPEJs
b2NrVmFyaWFudD4gbV9jdXJyZW50QmxvY2s7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3
aW5kVG9Qb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50
QmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwog
ICAgIGZsb2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24geyAyIH07CiAKICAgICBDYWxs
T25DbGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0
aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLmgKaW5kZXggN2NhNTQ5ZjhlOTBhZGRlY2ZhN2FhOGYzZmQyN2FhNmU2Nzdl
ODg4MS4uYzA1ZjZhZjY2ZjZkYTc3OTFjZTQwY2E3ZGQ0NDNmZGViZjVkMGM2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0
ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgp
OwogYm9vbCBpc1ZQOERlY29kZXJBdmFpbGFibGUoKTsKIGJvb2wgaXNWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZFN1cHBvcnRlZChjb25zdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYpOwot
T3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZVZQUGFyYW1ldGVycyhjb25z
dCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYp
Oworc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlVlBQYXJhbWV0
ZXJzKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiwgY29uc3QgVmlkZW9Db25maWd1
cmF0aW9uJik7CiAKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3Jt
YXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVh
ZGVyUGFyc2VyJiwgY29uc3Qgd2VibTo6RWxlbWVudDx3ZWJtOjpDb2xvdXI+Jik7CiAKQEAgLTY0
LDI0ICs2NCwyNCBAQCBzdHJ1Y3QgVlA4RnJhbWVIZWFkZXIgewogICAgIGJvb2wgbmVlZHNDbGFt
cGluZyB7IGZhbHNlIH07CiB9OwogCi1PcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhG
cmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpOworc3RkOjpv
cHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFt
ZURhdGEsIHNpemVfdCBmcmFtZVNpemUpOwogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcihjb25zdCBWUDhGcmFtZUhl
YWRlciYsIGNvbnN0IHdlYm06OkVsZW1lbnQ8d2VibTo6Q29sb3VyPiYpOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBWUDlUZXN0aW5nT3ZlcnJpZGVzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgVlA5
VGVzdGluZ092ZXJyaWRlcyYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEhhcmR3YXJlRGVj
b2RlckRpc2FibGVkKE9wdGlvbmFsPGJvb2w+JiYpOwotICAgIE9wdGlvbmFsPGJvb2w+IGhhcmR3
YXJlRGVjb2RlckRpc2FibGVkKCkgeyByZXR1cm4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsg
fQorICAgIHZvaWQgc2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpvcHRpb25hbDxib29s
PiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhcmR3YXJlRGVjb2RlckRpc2FibGVkKCkg
eyByZXR1cm4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsgfQogCi0gICAgdm9pZCBzZXRWUDlT
Y3JlZW5TaXplQW5kU2NhbGUoT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4mJik7Ci0gICAg
T3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlKCkgIHsg
cmV0dXJuIG1fc2NyZWVuU2l6ZUFuZFNjYWxlOyB9CisgICAgdm9pZCBzZXRWUDlTY3JlZW5TaXpl
QW5kU2NhbGUoc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhT3ZlcnJpZGVzPiYmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IHZwOVNjcmVlblNpemVBbmRTY2FsZSgpICB7
IHJldHVybiBtX3NjcmVlblNpemVBbmRTY2FsZTsgfQogCiAgICAgdm9pZCBzZXRDb25maWd1cmF0
aW9uQ2hhbmdlZENhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToK
LSAgICBPcHRpb25hbDxib29sPiBtX2hhcmR3YXJlRGVjb2RlckRpc2FibGVkOwotICAgIE9wdGlv
bmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVuU2l6ZUFuZFNjYWxlOworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVuU2l6ZUFuZFNjYWxlOwogICAgIFdURjo6
RnVuY3Rpb248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDZlZWQwMTZmMGJkZTA5MjQ0MjY4MDc4ZGJlY2UwNDhi
MzAxZDdlMDUuLmU5Zjg2ZGVhNDM4ZTg5NWU2M2RiZGUwN2M0ZDk1ZjliNWFlZjE4Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCkBAIC01NiwxNCArNTYsMTQgQEAgVlA5VGVzdGluZ092ZXJyaWRl
cyYgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CiAKLXZvaWQgVlA5VGVzdGluZ092ZXJyaWRlczo6c2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJs
ZWQoT3B0aW9uYWw8Ym9vbD4mJiBkaXNhYmxlZCkKK3ZvaWQgVlA5VGVzdGluZ092ZXJyaWRlczo6
c2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGRpc2FibGVk
KQogewogICAgIG1faGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQgPSBXVEZNb3ZlKGRpc2FibGVkKTsK
ICAgICBpZiAobV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrKQogICAgICAgICBtX2NvbmZp
Z3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBWUDlUZXN0aW5nT3ZlcnJpZGVz
OjpzZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4m
JiBvdmVycmlkZXMpCit2b2lkIFZQOVRlc3RpbmdPdmVycmlkZXM6OnNldFZQOVNjcmVlblNpemVB
bmRTY2FsZShzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+JiYgb3ZlcnJpZGVzKQog
ewogICAgIG1fc2NyZWVuU2l6ZUFuZFNjYWxlID0gV1RGTW92ZShvdmVycmlkZXMpOwogICAgIGlm
IChtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2spCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9v
bCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvbnN0IFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkJiBjb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3QgVmlkZW9Db25maWd1
cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRl
b0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
U3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC02MTAsNyArNjEwLDcgQEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb24KICAgICByZXR1
cm4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQo
cmVjb3JkLCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpKTsKIH0KIAotT3B0aW9uYWw8
VlA4RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBz
aXplX3QgZnJhbWVTaXplKQorc3RkOjpvcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhG
cmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCiB7CiAgICAg
Ly8gVlA4IGZyYW1lIGhlYWRlcnMgYXJlIGRlZmluZWQgaW4gUkZDIDYzODY6IDxodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNjM4Nj4uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0u
Y3BwCmluZGV4IDNlYjI4MTg2MDgwMjBmOWY0MGE0ODg2ZTI2NWY1NGU2ZmYyZGMzNWYuLjMwZjgz
MWJjMWZlNGQ2MWQ0YmY2OTkwMDQ2N2IzNjNmYWM2MWVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1By
aXZhdGVXZWJNLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIEF0b21TdHJpbmcgVmlkZW9UcmFja1By
aXZhdGVXZWJNOjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhY2tJRDsKIH0KIAotT3B0aW9u
YWw8dWludDY0X3Q+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tVSUQoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja1VJRCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSkKICAgICAgICAg
cmV0dXJuIG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5h
YmxlZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6
ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNf
cHJlc2VudCgpKQogICAgICAgICByZXR1cm4gbV90cmFjay5pc19lbmFibGVkLnZhbHVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCmluZGV4IDMyMGY4ODhjMTAxZmE2ZjIyMzdjM2FlZTEw
NDczM2U4Y2VlMWIxMzguLmU0ZGY0MWY1YzBlNDc0YzFjZmNmZjMyYzQ1OWM1YmRhYTkxMDA0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVv
VHJhY2tQcml2YXRlV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoK
ICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CiAgICAgQXRvbVN0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IGZpbmFsOwogICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBWaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmluZGV4IDE1M2EzYjA3
MGJjYzQ4NmE5MDc4ZmFhY2I3ODUzZTlhMmMwOTQ2ODUuLjM2ZGQ3NTJhMDA2YzZlOTU1NjUwMDcw
NGZjZDczYmNmYmI5YzAyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
CiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7CiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNw
bGF5OwotICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CisgICAg
c3RkOjpvcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChp
ZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVu
dHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IGVj
NDk4ZDRhZTAzYzNkYTlmZDI0NjY3ZGNlNmY0MzFhMTczN2YxNzQuLjI5YTA3Yzc2YWYwYWRhMTQy
NzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtNDI0LDcg
KzQyNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25h
cnlSZWYgZmVhdHVyZSkKICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmVhdHVy
ZSwga0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSkgJiYgQ0ZEaWN0aW9uYXJ5Q29udGFp
bnNLZXkoZmVhdHVyZSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZE
aWN0aW9uYXJ5UmVmIGZlYXR1cmUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q0ZTdHJp
bmdSZWY+IG9wZW5UeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKIHsKICAgICBB
U1NFUlQoaXNPcGVuVHlwZUZlYXR1cmUoZmVhdHVyZSkpOwogICAgIENGU3RyaW5nUmVmIHRhZyA9
IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShmZWF0dXJlLCBr
Q1RGb250T3BlblR5cGVGZWF0dXJlVGFnKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIGlu
bGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJl
ZiBmZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVW
YWx1ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUodmFsdWUsIGtDRk51
bWJlckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmluZ1JlZj4odGFnKSA6
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUgPyBzdGQ6Om9wdGlvbmFsPENGU3Ry
aW5nUmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFp
cjxpbnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQpAQCAt
NzIzLDcgKzcyMyw3IEBAIFBhdGggRm9udDo6cGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgcmV0dXJuIHsgYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlQ29weShy
ZXN1bHQuZ2V0KCkpKSB9OwogfQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9p
bnQoVUNoYXIzMiBjaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QK
K2Jvb2wgRm9udDo6cGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwg
c3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKHZhcmlh
dGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYyLDE0ICs4NjIsMTQgQEAgYm9vbCBG
b250OjpnbHlwaEhhc0NvbXBsZXhDb2xvckZvcm1hdChHbHlwaCBnbHlwaElEKSBjb25zdAogfQog
I2VuZGlmCiAKLU9wdGlvbmFsPEJpdFZlY3Rvcj4gRm9udDo6ZmluZE9UU1ZHR2x5cGhzKGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgdW5zaWduZWQgY291bnQpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEJpdFZlY3Rvcj4gRm9udDo6ZmluZE9UU1ZHR2x5cGhzKGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgdW5zaWduZWQgY291bnQpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byB0YWJsZSA9IG90U1ZHVGFibGUoKS50YWJsZTsKICAgICBpZiAoIXRhYmxl
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8Qml0VmVjdG9yPiByZXN1bHQ7
CisgICAgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoUEFMOjpzb2Z0TGlua09UU1ZH
T1RTVkdUYWJsZUdldERvY3VtZW50SW5kZXhGb3JHbHlwaCh0YWJsZSwgZ2x5cGhzW2ldKSAhPSBr
Q0ZOb3RGb3VuZCkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmgKaW5kZXggMTE1NmQ3MDJlNjgzZmQ2MjAzZTVjNWJmZjUxYTIyZTVmOTIyNTkwYy4uYmRl
ZGNjZjcwYTg1YjFlNzI4NzAwODQ4OTY2NWY5OTU1YTQ0ZmYwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VSb3RhdGlvblNlc3Np
b25WVChjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFnZUNvbXBh
dGlibGUpOwogICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQoKSA9IGRlZmF1bHQ7CiAKLSAgICBj
b25zdCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+JiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3RyYW5zZm9ybTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3Jt
PiYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KICAgICBjb25zdCBS
b3RhdGlvblByb3BlcnRpZXMmIHJvdGF0aW9uUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
cm90YXRpb25Qcm9wZXJ0aWVzOyB9CiAgICAgY29uc3QgRmxvYXRTaXplJiBzaXplKCkgeyByZXR1
cm4gbV9zaXplOyB9CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsgcmV0dXJu
IG1fcm90YXRlZFNpemU7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJvdGF0
aW9uUHJvcGVydGllcyBtX3JvdGF0aW9uUHJvcGVydGllczsKICAgICBGbG9hdFNpemUgbV9zaXpl
OwotICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgc3RkOjpv
cHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogICAgIE9TVHlwZSBtX3BpeGVs
Rm9ybWF0OwogICAgIElzQ0dJbWFnZUNvbXBhdGlibGUgbV9pc0NHSW1hZ2VDb21wYXRpYmxlOwog
ICAgIEZsb2F0U2l6ZSBtX3JvdGF0ZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA5
OTMyMjI2MmRmNzAyOTA0MDc5M2I2NTkwM2M1NzU1YmJhMjI2ZWQyLi40YWM1ZGIyZTg0ZmU3NDhi
ZDM3NjI3ZTg4NDhhM2E4ZTE0NGNhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMTA1
LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcklmRXhpc3Rz
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEl0
ZW1CdWZmZXImIGl0ZW1CdWZmZXIoKTsKIAotICAgIHZvaWQgYWRkRHJhd2luZ0l0ZW1FeHRlbnQo
T3B0aW9uYWw8RmxvYXRSZWN0PiYmIGV4dGVudCkKKyAgICB2b2lkIGFkZERyYXdpbmdJdGVtRXh0
ZW50KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYmIGV4dGVudCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyk7CiAgICAgICAgIG1fZHJhd2luZ0l0ZW1F
eHRlbnRzLmFwcGVuZChXVEZNb3ZlKGV4dGVudCkpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZh
dGU6CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAgIEZvbnRSZW5k
ZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVy
PiBtX2l0ZW1zOwotICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVt
RXh0ZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJ
dGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGNhY2Y3NjRmNWRlMmM4Y2Y2ZDNmNDAw
MDJmZWFmNWUxMjE2OTFjODUuLmJlZTE5NGQ1MzNhMTkwM2Q2MzRkNjkyZDU2MzNkNzMzMzI2MzA2
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBzdHJ1Y3QgR2x5
cGhzQW5kQWR2YW5jZXMgewogICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXM7
CiAgICAgdW5zaWduZWQgbnVtR2x5cGhzOwogICAgIEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFs
QWR2YW5jZTsKLSAgICBPcHRpb25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7
CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7CiB9
OwogCiBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMgZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggNWM0MjQ1NDEzYjQwMTNiNGJiNTcxODgx
ZDBkYjc2NjRkNTNkNjE2YS4uYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtOTcsNyAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgdmlydHVh
bCBPcHRpb25hbDxzdGQ6OnNpemVfdD4gcmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxzdGQ6OnNpemVfdD4g
cmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+
IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRl
Y29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBl
LCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1ZmZlciBj
b250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSByZWFkd3Jp
dGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IGYyMjJlMjE4M2EzOTEwM2JkNjk4NTM0NDY0ZGYzY2IwYThm
ZjkwN2UuLjU5N2MyYTdhYjdiNzg4ZjJlMTdhNTYxYTAxMTFjM2I4MjY4YTE1NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0
ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdAogewogICAgIEZsb2F0UmVjdCBib3VuZHM7CiAgICAgYm91bmRzLmZpdFRvUG9pbnRzKG1f
cG9pbnQxLCBtX3BvaW50Mik7CkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBEcmF3TGluZXNGb3JU
ZXh0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5k
cmF3TGluZXNGb3JUZXh0KHBvaW50KCksIG1fdGhpY2tuZXNzLCBtX3dpZHRocywgbV9wcmludGlu
ZywgbV9kb3VibGVMaW5lcyk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9y
VGV4dDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gcmV0
dXJuIGEgdmFsdWUgZXF1YWwgdG8gb3IgZW5jbG9zaW5nIHdoYXQgR3JhcGhpY3NDb250ZXh0Ojpj
b21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCkgcmV0dXJucy4KIApA
QCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIH0pOwogfQogCi1PcHRpb25hbDxG
bG9hdFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3QKIHsKICAgICByZXR1cm4gbV9yZWN0OwogfQpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgRHJh
d0ZvY3VzUmluZ1BhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAg
ICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9wYXRoLCBtX3dpZHRoLCBtX29mZnNldCwgbV9jb2xv
cik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdCA9IG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0
KCk7CiAgICAgcmVzdWx0LmluZmxhdGUocGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCk7CkBAIC02NDgs
NyArNjQ4LDcgQEAgdm9pZCBEcmF3Rm9jdXNSaW5nUmVjdHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9yZWN0cywgbV93
aWR0aCwgbV9vZmZzZXQsIG1fY29sb3IpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdG
b2N1c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdDsK
ICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX3JlY3RzKQpAQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1l
Rm9yTWVkaWEmIGl0ZW0pCiB9CiAjZW5kaWYKIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VS
ZWN0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IFN0cm9rZVJlY3Q6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IG1fcmVjdDsKICAgICBib3Vu
ZHMuZXhwYW5kKG1fbGluZVdpZHRoLCBtX2xpbmVXaWR0aCk7CkBAIC04NzgsNyArODc4LDcgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9r
ZVJlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0
cm9rZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQg
dG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBDR1Bh
dGhCeVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQu
c3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC04OTksNyArODk5LDcgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0pCiAgICAg
cmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBTdHJva2VFbGxpcHNlOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gY29u
dGV4dC5zdHJva2VUaGlja25lc3MoKTsKIApAQCAtOTE5LDcgKzkxOSw3IEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBp
dGVtKQogICAgIHJldHVybiB0czsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VMaW5l
Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlTGluZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9
IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYg
aXRlbSkKIAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogCi1PcHRpb25hbDxGbG9hdFJl
Y3Q+IFN0cm9rZUlubGluZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VJbmxpbmVQYXRo
Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBj
b3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0cm9rZVRo
aWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAppbmRleCA4Mzk0YmQzODJmOTI1NWIzOTQzNDIzZDE5M2EwMDljYzc4YTU4NTg1
Li5mOGIwZDA5M2JjNTdiYmVjOWUzNzVkM2NkYzY0NWI1MTAxNTZmZWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI4MCw3ICsyODAsNyBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSk7CiAKQEAgLTM3OCw5ICszNzgsOSBAQCB2b2lkIFNldFN0YXRlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3M+IGNoYW5nZUZsYWdzOworICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOwogICAgIGRlY29kZXIgPj4gY2hhbmdlRmxh
Z3M7CiAgICAgaWYgKCFjaGFuZ2VGbGFncykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTQwMCwxMiArNDAwLDEyIEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Up
KSB7Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBk
ZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAg
ICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDIyLDEyICs0MjIsMTIgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9
CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFBhdHRl
cm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVy
bjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJz
OwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNDM2LDI4ICs0MzYsMjggQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkg
ewotICAgICAgICBPcHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNldDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNldDsKICAgICAgICAgZGVjb2RlciA+PiBz
aGFkb3dPZmZzZXQ7CiAgICAgICAgIGlmICghc2hhZG93T2Zmc2V0KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09m
ZnNldCA9ICpzaGFkb3dPZmZzZXQ7CiAKLSAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0Js
dXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CiAgICAgICAgIGRl
Y29kZXIgPj4gc2hhZG93Qmx1cjsKICAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNo
YWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKIAotICAgICAgICBPcHRpb25hbDxDb2xvcj4gc2hhZG93
Q29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwogICAgICAg
ICBkZWNvZGVyID4+IHNoYWRvd0NvbG9yOwogICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9yOwogCi0gICAgICAgIE9wdGlvbmFsPFNoYWRv
d1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hh
ZG93UmFkaXVzTW9kZT4gc2hhZG93UmFkaXVzTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBzaGFk
b3dSYWRpdXNNb2RlOwogICAgICAgICBpZiAoIXNoYWRvd1JhZGl1c01vZGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDY2LDcgKzQ2Niw3IEBAIE9wdGlvbmFsPFNldFN0
YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYg
KHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHN0cm9r
ZVRoaWNrbmVzczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNz
OwogICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgaWYgKCFzdHJv
a2VUaGlja25lc3MpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDc1LDcg
KzQ3NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpIHsKLSAgICAg
ICAgT3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxUZXh0RHJhd2luZ01vZGVGbGFncz4gdGV4dERyYXdpbmdNb2RlOwog
ICAgICAgICBkZWNvZGVyID4+IHRleHREcmF3aW5nTW9kZTsKICAgICAgICAgaWYgKCF0ZXh0RHJh
d2luZ01vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDg0LDcgKzQ4
NCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBPcHRp
b25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN0
cm9rZUNvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwogICAgICAgICBpZiAo
IXN0cm9rZUNvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ5Myw3
ICs0OTMsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKSB7Ci0gICAgICAgIE9w
dGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZp
bGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmls
bENvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUxMCw3ICs1MTAs
NyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8
V2luZFJ1bGU+IGZpbGxSdWxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxs
UnVsZTsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKICAgICAgICAgaWYgKCFmaWxsUnVs
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01MTksNyArNTE5LDcgQEAg
T3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBPcHRp
b25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBk
ZWNvZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJh
dG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUyOCw3ICs1MjgsNyBA
QCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPEJs
ZW5kTW9kZT4gYmxlbmRNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxl
bmRNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKICAgICAgICAgaWYgKCFibGVu
ZE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTM3LDcgKzUzNyw3
IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0g
ICAgICAgIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBkZWNvZGVyID4+IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHk7CiAgICAgICAgIGlmICghaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01NDYsNyArNTQ2LDcgQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAK
ICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBhbHBoYTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7CiAgICAgICAgIGRlY29kZXIgPj4g
YWxwaGE7CiAgICAgICAgIGlmICghYWxwaGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNTU1LDcgKzU1NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0No
YW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFudGlhbGlhczsKICAgICAgICAgZGVjb2RlciA+
PiBzaG91bGRBbnRpYWxpYXM7CiAgICAgICAgIGlmICghc2hvdWxkQW50aWFsaWFzKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU2NCw3ICs1NjQsNyBAQCBPcHRpb25hbDxT
ZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkU21vb3RoRm9udHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21v
b3RoRm9udHM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3RoRm9udHM7CiAgICAgICAg
IGlmICghc2hvdWxkU21vb3RoRm9udHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNTczLDcgKzU3Myw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250c0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250czsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHM7CiAgICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU4Miw3ICs1ODIsNyBAQCBPcHRpb25hbDxT
ZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CiAgICAgICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjMwLDcgKzYzMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRMaW5lRGFzaD4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTZXRMaW5lRGFzaD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBEYXNoQXJy
YXkgbV9kYXNoQXJyYXk7CkBAIC02NDUsMTQgKzY0NSwxNCBAQCB2b2lkIFNldExpbmVEYXNoOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RGFzaEFycmF5PiBkYXNoQXJyYXk7Cisg
ICAgc3RkOjpvcHRpb25hbDxEYXNoQXJyYXk+IGRhc2hBcnJheTsKICAgICBkZWNvZGVyID4+IGRh
c2hBcnJheTsKICAgICBpZiAoIWRhc2hBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiBkYXNoT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBkYXNoT2Zmc2V0OwogICAgIGlmICgh
ZGFzaE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc5MCw3ICs3OTAs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
aDsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlw
T3V0VG9QYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsaXBPdXRUb1BhdGg+IGRlY29kZShEZWNvZGVyJik7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCkBAIC04MDUsOSArODA1
LDkgQEAgdm9pZCBDbGlwT3V0VG9QYXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENsaXBPdXRUb1BhdGg+IENs
aXBPdXRUb1BhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDbGlw
T3V0VG9QYXRoPiBDbGlwT3V0VG9QYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAg
ICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtODM5LDcgKzgzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxDbGlwUGF0aD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDbGlwUGF0aD4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsKQEAgLTg1NCwxNCArODU0LDE0IEBAIHZv
aWQgQ2xpcFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6
b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRo
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2luZFJ1bGU+
IHdpbmRSdWxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2luZFJ1bGU+IHdpbmRSdWxlOwogICAgIGRl
Y29kZXIgPj4gd2luZFJ1bGU7CiAgICAgaWYgKCF3aW5kUnVsZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTg5MCw3ICs4OTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNl
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uOwpAQCAtOTA1LDE0ICs5MDUsMTQgQEAgdm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVz
dGluYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwogICAg
IGRlY29kZXIgPj4gZGVzdGluYXRpb247CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
Y29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTQ5LDE1ICs5NDksMTUgQEAg
cHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxNj4mIGdseXBocygp
IGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPERyYXdHbHlwaHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0dseXBocz4gZGVj
b2RlKERlY29kZXImKTsKIAogICAgIERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgVmVj
dG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwg
MTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwg
Rm9udFNtb290aGluZ01vZGUpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGb250JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9i
b3VuZHM7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRzOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsK
QEAgLTk4MiwxOSArOTgyLDE5IEBAIHZvaWQgRHJhd0dseXBoczo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEcmF3
R2x5cGhzPiBEcmF3R2x5cGhzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBmb250SWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKICAgICBpZiAoIWZvbnRJZGVu
dGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVj
dG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+PiBnbHlwaHM7CiAgICAgZGVjb2RlciA+PiBnbHlw
aHM7CiAgICAgaWYgKCFnbHlwaHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+PiBhZHZhbmNlczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2Vz
OwogICAgIGRlY29kZXIgPj4gYWR2YW5jZXM7CiAgICAgaWYgKCFhZHZhbmNlcykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwMDIsMTcgKzEwMDIsMTcgQEAgT3B0aW9uYWw8RHJh
d0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGds
eXBocy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gYm91bmRzOwogICAgIGRlY29kZXIgPj4gYm91bmRzOwogICAgIGlmICgh
Ym91bmRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbG9jYWxBbmNob3I7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsb2Nh
bEFuY2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5jaG9yOwogICAgIGlmICghbG9jYWxBbmNo
b3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U21v
b3RoaW5nTW9kZT4gc21vb3RoaW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTbW9vdGhp
bmdNb2RlPiBzbW9vdGhpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gc21vb3RoaW5nTW9kZTsKICAg
ICBpZiAoIXNtb290aGluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
MDQ1LDggKzEwNDUsOCBAQCBwdWJsaWM6CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCiBwcml2YXRlOgogICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKQEAg
LTEwNzksOCArMTA3OSw4IEBAIHB1YmxpYzoKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAogcHJpdmF0ZToKICAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pbWFnZUlkZW50aWZpZXI7CkBAIC0xMTExLDgg
KzExMTEsOCBAQCBwdWJsaWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBtX2ltYWdlSWRlbnRpZmllcjsKQEAgLTExNDAsOCArMTE0MCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAg
ICBmbG9hdCBtX29wYWNpdHk7CkBAIC0xMTU1LDggKzExNTUsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiB9OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBA
IC0xMTc2LDggKzExNzYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAK
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTEyMDEsOCArMTIwMSw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcG9pbnQxOwpAQCAtMTIyOCwxMSArMTIyOCwxMSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdMaW5l
c0ZvclRleHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0xpbmVzRm9yVGV4dD4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsKQEAgLTEyNTUsMzQg
KzEyNTUsMzQgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdMaW5l
c0ZvclRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxEcmF3TGluZXNGb3JUZXh0PiBEcmF3TGluZXNGb3JUZXh0OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBibG9ja0xvY2F0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gYmxvY2tMb2NhdGlvbjsKICAgICBkZWNv
ZGVyID4+IGJsb2NrTG9jYXRpb247CiAgICAgaWYgKCFibG9ja0xvY2F0aW9uKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBsb2NhbEFuY2hv
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9jYWxBbmNob3I7CiAgICAgZGVjb2Rl
ciA+PiBsb2NhbEFuY2hvcjsKICAgICBpZiAoIWxvY2FsQW5jaG9yKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RGFzaEFycmF5PiB3aWR0aHM7CisgICAgc3Rk
OjpvcHRpb25hbDxEYXNoQXJyYXk+IHdpZHRoczsKICAgICBkZWNvZGVyID4+IHdpZHRoczsKICAg
ICBpZiAoIXdpZHRocykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPGZsb2F0PiB0aGlja25lc3M7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gdGhpY2tuZXNz
OwogICAgIGRlY29kZXIgPj4gdGhpY2tuZXNzOwogICAgIGlmICghdGhpY2tuZXNzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcHJpbnRpbmc7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBwcmludGluZzsKICAgICBkZWNvZGVyID4+IHByaW50aW5n
OwogICAgIGlmICghcHJpbnRpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBkb3VibGVMaW5lczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRv
dWJsZUxpbmVzOwogICAgIGRlY29kZXIgPj4gZG91YmxlTGluZXM7CiAgICAgaWYgKCFkb3VibGVM
aW5lcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMTgsOCArMTMxOCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwpAQCAtMTM0Miw4ICsxMzQyLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0
UmVjdCBtX3JlY3Q7CkBAIC0xMzY4LDEyICsxMzY4LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBQ
YXRoJiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdQYXRoPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERyYXdQYXRo
PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5k
aW5nUmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBt
X3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUGF0aCBtX3BhdGg7
CkBAIC0xMzg2LDkgKzEzODYsOSBAQCB2b2lkIERyYXdQYXRoOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdQ
YXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERy
YXdQYXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8UGF0aD4gcGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2Rl
ciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTE0MjQsMTIgKzE0MjQsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IENvbG9yJiBjb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0ZvY3Vz
UmluZ1BhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUGF0aCBtX3BhdGg7CkBAIC0xNDQ4
LDI0ICsxNDQ4LDI0IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1BhdGg6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RHJh
d0ZvY3VzUmluZ1BhdGg+IERyYXdGb2N1c1JpbmdQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IERyYXdGb2N1c1JpbmdQYXRoOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAg
IHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYg
KCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Zmxv
YXQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAgIGRlY29kZXIg
Pj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
b2Zmc2V0OwogICAgIGRlY29kZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAg
aWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE0ODgsMTEgKzE0
ODgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxE
cmF3Rm9jdXNSaW5nUmVjdHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1JlY3RzPiBkZWNvZGUo
RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fcmVjdHM7CkBA
IC0xNTExLDI0ICsxNTExLDI0IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1JlY3RzOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPERyYXdGb2N1c1JpbmdSZWN0cz4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1JlY3RzPiBEcmF3Rm9jdXNS
aW5nUmVjdHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3Rv
cjxGbG9hdFJlY3Q+PiByZWN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+
PiByZWN0czsKICAgICBkZWNvZGVyID4+IHJlY3RzOwogICAgIGlmICghcmVjdHMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gd2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBp
ZiAoIXdpZHRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
ZmxvYXQ+IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CiAgICAgZGVj
b2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxD
b2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTU1MSw4ICsxNTUxLDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3Jl
Y3Q7CkBAIC0xNTc1LDExICsxNTc1LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4g
bV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rmls
bFJlY3RXaXRoQ29sb3I+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsbFJlY3RXaXRoQ29sb3I+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTE1OTQsMTQgKzE1
OTQsMTQgQEAgdm9pZCBGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUmVjdFdp
dGhDb2xvcj4gRmlsbFJlY3RXaXRoQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxGaWxsUmVjdFdpdGhDb2xvcj4gRmlsbFJlY3RXaXRoQ29sb3I6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAg
aWYgKCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
Q29sb3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29k
ZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTE2MjIsMTEgKzE2MjIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBt
X3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dDsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGaWxs
UmVjdFdpdGhHcmFkaWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwpAQCAtMTY0MSw5
ICsxNjQxLDkgQEAgdm9pZCBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxs
UmVjdFdpdGhHcmFkaWVudD4gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gRmlsbFJlY3RXaXRo
R3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gcmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAgICBkZWNv
ZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTY3NiwxMSArMTY3NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZpbGxD
b21wb3NpdGVkUmVjdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxsQ29tcG9zaXRlZFJlY3Q+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTE2OTksMjQgKzE2
OTksMjQgQEAgdm9pZCBGaWxsQ29tcG9zaXRlZFJlY3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbENvbXBv
c2l0ZWRSZWN0PiBGaWxsQ29tcG9zaXRlZFJlY3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxGaWxsQ29tcG9zaXRlZFJlY3Q+IEZpbGxDb21wb3NpdGVkUmVjdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsK
ICAgICBpZiAoIXJlY3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxDb2xvcj4gY29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAg
ZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOwogICAgIGRlY29kZXIgPj4gb3A7CiAgICAg
aWYgKCFvcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEJs
ZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1v
ZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQyLDEyICsxNzQyLDEyIEBAIHB1YmxpYzoK
ICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ibGVuZE1vZGU7IH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmlsbFJvdW5k
ZWRSZWN0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVjdD4gZGVjb2RlKERlY29kZXImKTsKIAog
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQogCiBwcml2YXRlOgogICAgIEZs
b2F0Um91bmRlZFJlY3QgbV9yZWN0OwpAQCAtMTc2NCwxOSArMTc2NCwxOSBAQCB2b2lkIEZpbGxS
b3VuZGVkUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUm91bmRlZFJlY3Q+IEZpbGxSb3VuZGVkUmVj
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVj
dD4gRmlsbFJvdW5kZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxGbG9hdFJvdW5kZWRSZWN0PiByZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSb3Vu
ZGVkUmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAg
ICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBi
bGVuZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODAyLDEyICsxODAyLDEyIEBAIHB1
YmxpYzoKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xODI0LDE5ICsxODI0LDE5IEBAIHZvaWQgRmlsbFJlY3RX
aXRoUm91bmRlZEhvbGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+IEZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0
OwogICAgIGlmICghcmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRIb2xlUmVjdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRIb2xlUmVjdDsKICAgICBkZWNvZGVyID4+IHJv
dW5kZWRIb2xlUmVjdDsKICAgICBpZiAoIXJvdW5kZWRIb2xlUmVjdCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29s
b3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODgzLDggKzE4ODMsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91
bmRpbmdSZWN0KCk7IH0KIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
QEAgLTE5MDgsMTIgKzE5MDgsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IFBhdGgmIHBhdGgoKSBj
b25zdCB7IHJldHVybiBtX3BhdGg7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8RmlsbFBhdGg+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsbFBhdGg+IGRlY29kZShEZWNv
ZGVyJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91
bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsKQEAgLTE5MjYsOSAr
MTkyNiw5IEBAIHZvaWQgRmlsbFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbFBhdGg+IEZpbGxQYXRo
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RmlsbFBhdGg+IEZpbGxQ
YXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRo
OworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAg
ICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk1MSw4ICsx
OTUxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgog
ICAgIEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xOTc5LDcgKzE5NzksNyBAQCBwdWJsaWM6CiAgICAg
SW50UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAg
IEludFJlY3QgbV9zcmNSZWN0OwpAQCAtMTk5NCwxNCArMTk5NCwxNCBAQCB2b2lkIEdldFBpeGVs
QnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQ
aXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW50
UmVjdD4gc3JjUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CiAgICAg
ZGVjb2RlciA+PiBzcmNSZWN0OwogICAgIGlmICghc3JjUmVjdCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3Jt
YXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9ybWF0Owog
ICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwogICAgIGlmICghb3V0cHV0Rm9ybWF0KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAzMCwxMSArMjAzMCwxMSBAQCBwdWJsaWM6
CiAgICAgSW50UG9pbnQgZGVzdFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0K
ICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RGb3JtYXQ7IH0KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rl
c3RQb2ludCwgbV9zcmNSZWN0LnNpemUoKSB9fTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4ge3sgbV9kZXN0UG9pbnQsIG1fc3JjUmVjdC5zaXplKCkgfX07IH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHV0UGl4ZWxC
dWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgSW50UmVjdCBtX3NyY1JlY3Q7CkBAIC0yMDUzLDEyICsyMDUzLDEyIEBAIHZv
aWQgUHV0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IFB1dFBpeGVs
QnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxC
dWZmZXI+IFB1dFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4g
c3JjUmVjdDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gZGVzdFBvaW50OwotICAgIE9wdGlvbmFs
PEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBzcmNS
ZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGRlc3RQb2ludDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3JtYXQ7CiAKICAgICBkZWNvZGVy
ID4+IHBpeGVsQnVmZmVyOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCkBAIC0yMDk1LDggKzIwOTUs
OCBAQCBwdWJsaWM6CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IHsgbV9kZXN0aW5hdGlvbiB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiB7IG1fZGVzdGluYXRpb24gfTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CkBAIC0yMTIxLDggKzIxMjEsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTIxNDYsOCArMjE0Niw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBGbG9hdFBvaW50IG1fc3RhcnQ7CkBAIC0yMTc0LDggKzIxNzQsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiB9OwogCiAjZW5k
aWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCkBAIC0yMTk5LDEyICsyMTk5LDEyIEBAIHB1
YmxpYzoKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN0cm9rZVBhdGg+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U3Ryb2tlUGF0aD4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBQYXRoIG1f
cGF0aDsKQEAgLTIyMTcsOSArMjIxNyw5IEBAIHZvaWQgU3Ryb2tlUGF0aDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxTdHJva2VQYXRoPiBTdHJva2VQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8U3Ryb2tlUGF0aD4gU3Ryb2tlUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHBh
dGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTIyNDIsOCArMjI0Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV9yZWN0OwpAQCAtMjI2NCw4ICsyMjY0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAzZjZiYmJkNWQ4ODdkZTU4NmRlNzA4
YTExZjM3YWFlMDg0NTMxZjRlLi5kNzZlOWIyNDMxNGM1MTcyZDU0Y2NlMTMyZWQyMWFlMGMzYzJm
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTU2LDExICs1
NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgVmFsdWUgewogICAgICAgICBJdGVtSGFuZGxl
IGl0ZW07Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1
ZmZlciB7IDAgfTsKICAgICB9OwogCi0gICAgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNv
bnN0CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZv
ckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwogICAg
IHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IG1fY3VycmVudEV4dGVudDsKICAgICBzaXplX3QgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciB7IDAgfTsKICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODJiMmM3YWI2NTEzODIxMGJmM2I2NTRl
NTkyZWQzMDcxZTRmODEwYS4uOWUyMDE2ZTFkMWY1NzdmMzU4YzU5N2U3OGY4NGU3NjBhNjMzODg4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTY3LDcg
KzU2Nyw3IEBAIHZvaWQgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6cm90YXRlKGZsb2F0IGFuZ2xl
SW5SYWRpYW5zKQogICAgIEFmZmluZVRyYW5zZm9ybSByb3RhdGlvbjsKICAgICByb3RhdGlvbi5y
b3RhdGUoYW5nbGVJbkRlZ3JlZXMpOwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9y
bT4gaW52ZXJzZSA9IHJvdGF0aW9uLmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxB
ZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSByb3RhdGlvbi5pbnZlcnNlKCkpCiAgICAgICAgIGNs
aXBCb3VuZHMgPSBpbnZlcnNlLnZhbHVlKCkubWFwUmVjdChjbGlwQm91bmRzKTsKIH0KIApAQCAt
NTc5LDcgKzU3OSw3IEBAIHZvaWQgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6c2NhbGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogCiB2b2lkIFJlY29yZGVyOjpDb250ZXh0U3RhdGU6OnNldENUTShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKLSAgICBPcHRpb25hbDxBZmZpbmVUcmFu
c2Zvcm0+IGludmVyc2VUcmFuc2Zvcm1Gb3JDbGlwQm91bmRzOworICAgIHN0ZDo6b3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlVHJhbnNmb3JtRm9yQ2xpcEJvdW5kczsKICAgICBpZiAo
YXV0byBvcmlnaW5hbENUTUludmVyc2UgPSBjdG0uaW52ZXJzZSgpKQogICAgICAgICBpbnZlcnNl
VHJhbnNmb3JtRm9yQ2xpcEJvdW5kcyA9IG9yaWdpbmFsQ1RNSW52ZXJzZS0+bXVsdGlwbHkobWF0
cml4KS5pbnZlcnNlKCk7CiAKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFJlY29yZGVyOjpDb250
ZXh0U3RhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKICAg
ICBjdG0gKj0gbWF0cml4OwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52
ZXJzZSA9IG1hdHJpeC5pbnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJh
bnNmb3JtPiBpbnZlcnNlID0gbWF0cml4LmludmVyc2UoKSkKICAgICAgICAgY2xpcEJvdW5kcyA9
IGludmVyc2UudmFsdWUoKS5tYXBSZWN0KGNsaXBCb3VuZHMpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggNjQ4YjQ0MDQwNmJlMjM3NjMyZTVkMjY1
ZTU3OWNmNWUyZDU3M2RhNy4uZjM3MGI0MTE4ZDAyNDNhMWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0
ZW0pCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAg
ICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291
cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsK
QEAgLTY3LDcgKzY3LDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxp
bmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBs
eU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUlt
YWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgYXV0byYg
bmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRp
ZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKQEAgLTc4LDcgKzc4LDcg
QEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVy
OwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRT
dGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hN
YXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGF1dG8mIHNldFN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgaW5saW5l
IHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3Rh
dGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250
cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRl
bSkKIHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNv
dXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwpAQCAtMTEzLDcgKzEx
Myw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRp
ZmllcjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1I
YW5kbGUgaXRlbSkKK3N0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdh
dGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApp
bmRleCA2YjhiZjQ0NjI4MmM0ZWE2ZWY1NGY0OWIyZTJmYmFkNzliZmQxYWQwLi4xNjYyN2EwMjA2
ZTMwOTI0M2Y4YjdiZDE4Y2RiM2RhNTg2MDc4YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKQEAgLTQ4LDggKzQ4LDggQEAgZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVh
c29uIDogdWludDhfdCB7CiBzdHJ1Y3QgUmVwbGF5UmVzdWx0IHsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5NZW1vcnlEaXNwbGF5TGlzdD4gdHJhY2tlZERpc3BsYXlMaXN0OwogICAgIHNpemVfdCBu
dW1iZXJPZkJ5dGVzUmVhZCB7IDAgfTsKLSAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyOwotICAgIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbmV4dERlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgU3RvcFJlcGxh
eVJlYXNvbiByZWFzb25Gb3JTdG9wcGluZyB7IFN0b3BSZXBsYXlSZWFzb246OlJlcGxheWVkQWxs
SXRlbXMgfTsKIH07CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0
aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25h
bDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1f
Y29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVm
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDEyYjAy
NjVhOWM5MDNkMTFjOWZkOWMxNzY2OTAwNTgyYzRkMGY4YmYuLmVjYTUzNTg2MjliMDI3YTM2ZWQ4
N2U2OWQ0Mzk4MDE0N2UxNjdiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKLU9wdGlvbmFsPHN0ZDo6c2l6ZV90PiBJbk1lbW9yeURpc3BsYXlM
aXN0OjpXcml0aW5nQ2xpZW50OjpyZXF1aXJlZFNpemVGb3JJdGVtKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OnNpemVfdD4g
SW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6cmVxdWlyZWRTaXplRm9ySXRlbShj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QKIHsKICAgICByZXR1
cm4gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRpc3BsYXlMaXN0SXRlbSk7CiB9CkBA
IC00MSw3ICs0MSw3IEBAIHZvaWQgSW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6
ZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBs
b2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQogCi1PcHRpb25hbDxJdGVtSGFuZGxlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVj
b2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUg
dHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+
IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50Ojpk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlw
ZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKIHsKICAgICBjb25zdCBJdGVtSGFuZGxl
IGRhdGFIYW5kbGUgeyBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKSB9OwogICAgIEFTU0VSVF9V
TlVTRUQoZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCA+PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUlu
Qnl0ZXMoZGF0YUhhbmRsZS50eXBlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5oCmluZGV4IDFjYzA4YWZhYmZmMmRhNTdjMWMyZDE4ZDg5NmZkY2Y5NWRjYWEzZDEuLjdh
N2YwNjBjM2ZlOGE5NTc5MzlhMjFiZDMzZjEzZGQzMmZmYmI5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0luTWVtb3J5RGlzcGxheUxpc3QuaApAQCAtNDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBXcml0aW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJXcml0
aW5nQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29u
c3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikg
Y29uc3QgZmluYWw7CiAgICAgICAgIHZvaWQgZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mLCB1aW50OF90KikgY29uc3QgZmluYWw7CiAgICAgfTsKIAogICAgIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGll
bnQgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgotICAg
ICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSwgdWludDhfdCopIGZpbmFsOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlLCB1aW50OF90KikgZmluYWw7CiAgICAg
fTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBlMjU5NjE3ZDExNDk4YWYwZjgw
ODMzMmI5MmE0YjNlN2Y5Y2ZjMzdlLi5mZDc3NGNhOTNhZjYxMTQ0MzIzZDY2NDE5Mzc3MzQ0M2Yx
ZDBhMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgSW1hZ2VCdWZm
ZXIqIEZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIHJldHVybiBtX2ltYWdl
QnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRl
ckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFs
PERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK1JlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVj
dCwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAg
ICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVm
ZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAg
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3Vs
dChjb25zdCBJbnRSZWN0JiByZWN0LAogICAgIHJldHVybiBwaXhlbEFycmF5OwogfQogCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChj
b25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9y
U3BhY2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlw
bGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxl
ZFNpemUpKTsKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBs
eWluZ0FscGhhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbQogI2Vu
ZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENv
bG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBp
eGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJm
b3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8g
aXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YQogICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JT
cGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBo
YUZvcm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZl
cnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRh
cmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYg
cmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK3N0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBi
ZSBkb25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00
OTEsNyArNDkxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZl
clRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3QKICAgICBjb3B5SW1hZ2VCeXRl
cyhjb252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwog
fQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5t
dWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKICAgICAKQEAgLTUzMCw3ICs1MzAsNyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRB
cnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAgY29weUltYWdlQnl0ZXMobV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLXZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJl
c3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3Qs
IHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogewogICAg
IEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTU4NCw3ICs1ODQsNyBAQCBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgp
CiB7CiAgICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlVW5tdWx0aXBs
aWVkSW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOwogCkBAIC02MDMsNyArNjAzLDcg
QEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KCkKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0
OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewogICAgIExPRyhGaWx0ZXJzLCAi
RmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRl
ck5hbWUoKSwgdGhpcyk7CiAKQEAgLTYyMiw3ICs2MjIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKICAgICBy
ZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0
OjpyZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCitib29sIEZpbHRlckVmZmVj
dDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNF
KENHKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHdlIG5lZWQgdGhl
IHN0ZXAgb2YgYW4gZXh0cmEgY29sb3Igc3BhY2UgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5k
ZXggYTM3MDAwYTNjYzA5NTM1ZDAxYzllMGQ2N2QzZjA3NGI4NTA4NDBkMy4uYjRhZDlhZGMwNDYy
ODJmMGRhZTI4YWQxNGQ2Nzg2ZTgwZDY1M2FlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04NCwxMCAr
ODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAg
ICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRS
ZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0g
c3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGll
ZFJlc3VsdChjb25zdCBJbnRSZWN0Jiwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11
bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25D
b2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkUmVz
dWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIHN0ZDo6
b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9p
ZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IGNvbnN0IEludFJlY3QmLCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKCkgeyBy
ZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0RWZmZWN0KHVu
c2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1iZXJPZkVmZmVjdElucHV0cygpIGNvbnN0
IHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsgfQpAQCAtMTg3LDggKzE4Nyw4IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCA9IDA7
CiAKICAgICBJbWFnZUJ1ZmZlciogY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Ci0gICAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgY3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KCk7CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdp
bGwgb25seSBvcGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAogICAg
IC8vIGFscGhhIGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBo
YV0uCkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29weUltYWdlQnl0
ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdm9pZCBjb3B5Q29udmVydGVk
SW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENs
YW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VD
b252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pOwotICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZl
ciYpOworICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0
ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7CisgICAgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1
ZmZlciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3IgbV9pbnB1dEVmZmVjdHM7CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VC
dWZmZXJSZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQ7CiAKICAgICBJbnRSZWN0IG1fYWJzb2x1dGVQYWludFJlY3Q7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggN2YwODA4ZGIwMmFlNGZlOWQwMDg5YTZj
MDZlY2Q3MzU4YmRhZjY4Zi4uMzIwZTI0MGU0YTNhNzYzZjhmMjc5NDhiN2FhM2YzNzM3MTEyN2Nj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgcmV0dXJuIHBsYXRmb3JtRGF0YTsKIH0KIAotT3B0
aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFt
ZShjb25zdCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6
cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAK
aW5kZXggZTc5MTk3OWM0ODE3ZTExYmM5MmEwMGVkODQ4NzQ1ODdjODBhZjhkMC4uNTVkYTlhOTMw
NWM2YTdiYjYyN2NiOTQwOGQ2NGM2MzdhM2Y5Mzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9u
dERhdGFGcmVlVHlwZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGZsb2F0IHNjYWxlZEZv
bnRTY2FsZUZhY3RvcihjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250KQogICAgIHJldHVy
biB4U2NhbGUgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRldGVybWluYW50IC8geFNjYWxlKSA6
IDAuOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1BlckVtKEZUX0Zh
Y2UgZnJlZVR5cGVGYWNlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0
c1BlckVtKEZUX0ZhY2UgZnJlZVR5cGVGYWNlKQogewogICAgIGlmIChmcmVlVHlwZUZhY2UtPnVu
aXRzX3Blcl9FTSkKICAgICAgICAgcmV0dXJuIGZyZWVUeXBlRmFjZS0+dW5pdHNfcGVyX0VNOwpA
QCAtMTE0LDEwICsxMTQsMTAgQEAgdm9pZCBGb250OjpwbGF0Zm9ybUluaXQoKQogICAgIGZsb2F0
IGRlc2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGZvbnRFeHRlbnRzLmRlc2NlbnQpOwog
ICAgIGZsb2F0IGNhcEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZm9udEV4dGVudHMu
aGVpZ2h0KTsKICAgICBmbG9hdCBsaW5lR2FwID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChmb250
RXh0ZW50cy5oZWlnaHQgLSBmb250RXh0ZW50cy5hc2NlbnQgLSBmb250RXh0ZW50cy5kZXNjZW50
KTsKLSAgICBPcHRpb25hbDxmbG9hdD4geEhlaWdodDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
dW5pdHNQZXJFbTsKLSAgICBPcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lUG9zaXRpb247Ci0gICAg
T3B0aW9uYWw8ZmxvYXQ+IHVuZGVybGluZVRoaWNrbmVzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiB4SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHVuaXRzUGVyRW07Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gdW5kZXJsaW5lVGhpY2tuZXNzOwogCiAgICAgewogICAgICAgICBDYWlyb0Z0
RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkp
OwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgRm9udDo6dmFyaWFudENhcHNTdXBwb3J0c0NoYXJh
Y3RlckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMgZm9udFZhcmlhbnRDCiAgICAgfQogfQog
Ci1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0ZXIs
IE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZvcm1T
dXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMy
PiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VM
b2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKICAgICBpZiAoRlRfRmFjZSBmYWNl
ID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKaW5k
ZXggNTZlMGFkNjA5MjI2MzNiZTViNjRkMWVmY2QyNGNhMTRmODJkM2M4Mi4uYzI3NjE3ZmM4MDgy
NTk3YTI3OTMyMzY0OWI2M2U3MmUzYjUzMDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEFsbG9jYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaApA
QCAtNDIsMTMgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91cEFs
bG9jYXRvcj4gY3JlYXRlKEdQVUVycm9yU2NvcGVzJik7CiAKICAgICBzdHJ1Y3QgQXJndW1lbnRC
dWZmZXJPZmZzZXRzIHsKLSAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+
IHZlcnRleDsKLSAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IGZyYWdt
ZW50OwotICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gdmVydGV4Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0PiBmcmFnbWVudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsK
ICAgICB9OwogCiAjaWYgVVNFKE1FVEFMKQotICAgIE9wdGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zm
c2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwg
TVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRl
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRT
ZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVy
ICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKTsKICNlbmRpZgogCiAgICAg
dm9pZCB0cnlSZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURldmljZS5oCmluZGV4IGViNzcxYzkyZjI2ZGYzZGM3ZWVmMTM2NGVkM2QwMWMwMWUy
ZjEyNDQuLmJmMTJlODA3NTMyNGJjZmM0YTNiZTMwYmI0NGY3NmQ0MjIyMmIwNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKQEAgLTY5
LDcgKzY5LDcgQEAgZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247CiAKIGNsYXNzIEdQ
VURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxHUFVEZXZpY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVURldmljZT4g
dHJ5Q3JlYXRlKGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwogICAgIHN0YXRpYyB2b2lkIHByZXdhcm0oKTsK
IAogICAgIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJE
ZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3BlcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2Nv
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNj
b3Blcy5jcHAKaW5kZXggZTI5MjZiZDAwNzdmOTM1NzA0YmZhNWQxZjJjYThjNTE0ZjkwN2M4Zi4u
MmJlZTljZjFiZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hFcnJvclNjb3BlKEdQ
VUVycm9yRmlsdGVyIGZpbHRlcikKICAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3Bl
IHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKLU9wdGlvbmFsPEdQVUVycm9yPiBHUFVF
cnJvclNjb3Blczo6cG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQorc3RkOjpvcHRp
b25hbDxHUFVFcnJvcj4gR1BVRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWls
TWVzc2FnZSkKIHsKICAgICBpZiAobV9lcnJvclNjb3Blcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
ZmFpbE1lc3NhZ2UgPSAiTm8gZXJyb3Igc2NvcGUgZXhpc3RzISI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCmluZGV4IDRk
NGZkNWEwYjIyNmFkMjQ2MGQzNWNmNGM5ZDg0OWI1MTBiYjgzMjQuLjIxZmE2MTAwMzgxZmQyMGFj
ODM1NGM2MDhlMGFiMDg0NjZhMWRjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUoVW5jYXB0dXJlZEVy
cm9yQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVy
KTsKLSAgICBPcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNz
YWdlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmluZyYg
ZmFpbE1lc3NhZ2UpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYsIEdQ
VUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwogICAgIHZvaWQgZ2Vu
ZXJhdGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYpOwpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBFcnJvclNjb3BlIHsKICAgICAgICAgY29uc3QgR1BV
RXJyb3JGaWx0ZXIgZmlsdGVyOwotICAgICAgICBPcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yOwogICAgIH07CiAKICAgICBHUFVF
cnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmgKaW5kZXggYTY4MGViNzYzYjJhZDdlZWQ3Yjg5MDZhNjIxMDQ2MDNhMjcyOTkxYy4u
ODhiY2ViMzkyNmM0ZDdkNjk5NTY1NzczMzQ5YmVjNDU0MGIyMTAzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NEZXB0aFMK
IAogc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKICAgICBWZWN0b3I8R1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0gICAgT3B0
aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50OworICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCA3OGNiMTFiOGY1
NTUyN2FhOTEyYjM4NGMyNjFmZTEyZTRiYjUwM2MyLi45YzU2ODljYzQwNTg0ZWFmMTMwZjFiZDI2
MTA0NzVjNWRkM2IzMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7CisgICAgYm9vbCByZWNvbXBpbGUoY29u
c3QgR1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3Rh
Z2UsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdt
ZW50U3RhZ2UpOwogCiAjaWYgVVNFKE1FVEFMKQogICAgIE1UTERlcHRoU3RlbmNpbFN0YXRlICpk
ZXB0aFN0ZW5jaWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0
KCk7IH0KICNlbmRpZgogICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUqIHBsYXRmb3JtUmVuZGVy
UGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7
IH0KICAgICBHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbWl0aXZlVG9wb2xvZ3k7IH0KLSAgICBPcHRpb25hbDxHUFVJbmRleEZvcm1h
dD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4Rm9ybWF0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4Rm9ybWF0OyB9CiAKIHByaXZhdGU6CiAjaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRl
clBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5k
ZXJQaXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBPcHRpb25hbDxHUFVJ
bmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mLCBjb25zdCBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoUmV0
YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiYmLCBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21h
cnRQdHImJiwgR1BVUHJpbWl0aXZlVG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3Jt
YXQ+LCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiwgY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSYpOwogCiAgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0
YXRlPiBtX2RlcHRoU3RlbmNpbFN0YXRlOwogI2VuZGlmIC8vIFVTRShNRVRBTCkKICAgICBQbGF0
Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOwogICAg
IEdQVVByaW1pdGl2ZVRvcG9sb2d5IG1fcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgT3B0aW9uYWw8
R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxHUFVJbmRl
eEZvcm1hdD4gbV9pbmRleEZvcm1hdDsKIAogICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3Bl
Y3RvciByZWNvbXBpbGF0aW9uLgogICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4gbV9sYXlv
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKaW5kZXggNjcyOGE3MzA1NWRi
MGU3ZGM2M2Q4MDg5OGEzNTE2Y2NhOWNiMmUyOC4uMWE3ZWJkNmU5YzYyZGExOWY5ZDk4YmViZjFm
YzliZDZjODg2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAt
NDgsMTIgKzQ4LDEyIEBAIGVudW0gY2xhc3MgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgewogc3RydWN0
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewogICAgIEdQVVByaW1pdGl2ZVRvcG9s
b2d5IHByaW1pdGl2ZVRvcG9sb2d5OwogICAgIFZlY3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRv
cj4gY29sb3JTdGF0ZXM7Ci0gICAgT3B0aW9uYWw8R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlw
dG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVURlcHRoU3RlbmNp
bFN0YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3RhdGU7CiAgICAgR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yIHZlcnRleElucHV0OwogfTsKIAogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8R1BV
UGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Im
JiB2ZXJ0ZXgsIE9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFn
bWVudCwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgYmFzZSkKKyAgICBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxh
eW91dCwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4LCBzdGQ6Om9wdGlv
bmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudCwgY29uc3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgYmFzZSkKICAgICAgICAgOiBHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlIHsgV1RGTW92ZShsYXlvdXQpIH0KICAgICAgICAgLCBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JCYXNlKGJhc2UpCiAgICAgICAgICwgdmVydGV4U3RhZ2UoV1RGTW92
ZSh2ZXJ0ZXgpKQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbgogICAg
IH0KIAogICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAg
ICBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7
CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdt
ZW50U3RhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zLmgKaW5kZXggMWY1ZTg4ZDQ0MzZiNTFhODlkNjQ2OTc1OTY5OGFiZGNkNTJlYTM5
MC4uYmVkZjZmY2M3YmZhNmVkNzJmZDBkOThiM2Q5MjNhNzU1NTY4MWIwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1
ZXN0QWRhcHRlck9wdGlvbnMuaApAQCAtMzcsNyArMzcsNyBAQCBlbnVtIGNsYXNzIEdQVVBvd2Vy
UHJlZmVyZW5jZSB7CiB9OwogCiBzdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAg
ICBPcHRpb25hbDxHUFVQb3dlclByZWZlcmVuY2U+IHBvd2VyUHJlZmVyZW5jZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJlbmNlOwogfTsKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaAppbmRl
eCA2YmY5NmM0ZjBhOTRkZjM3NDBiYzk3OTE3YWZmZTY3ZWJkZWU2YmI5Li45ODIzMmZlNTk5MTVl
ZjVhOTFhOGFhNWFhNThlNzRjMDY0MzlkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRv
ci5oCkBAIC0zOSw3ICszOSw3IEBAIGVudW0gY2xhc3MgR1BVSW5kZXhGb3JtYXQgewogCiBzdHJ1
Y3QgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHsKICAgICBHUFVJbmRleEZvcm1hdCBpbmRleEZv
cm1hdDsKLSAgICBWZWN0b3I8T3B0aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZl
cnRleEJ1ZmZlcnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVz
Y3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KaW5kZXggNDhmYjAy
ZGZjOTQyNDAxMTlmMjZkNGMwMGRkZWZiZjU1MzgxNGYzZi4uNjMxNDc0Y2E3OTk4Nzg3ZDAwNTJm
NzE2NmJkNzVjYTk3NDBhZGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxv
Y2F0b3JNZXRhbC5tbQpAQCAtNDcsNyArNDcsNyBAQCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQ
VUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQogCiAjaWYgVVNFKE1F
VEFMKQogCi1PcHRpb25hbDxHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zm
c2V0cz4gR1BVQmluZEdyb3VwQWxsb2NhdG9yOjphbGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFy
Z3VtZW50RW5jb2RlciAqdmVydGV4LCBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExB
cmd1bWVudEVuY29kZXIgKmNvbXB1dGUpCitzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9j
YXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9j
YXRlQW5kU2V0RW5jb2RlcnMoTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50
RW5jb2RlciAqZnJhZ21lbnQsIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZSkKIHsKICAgICBp
ZDxNVExEZXZpY2U+IGRldmljZSA9IG5pbDsKICAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVj
a2VkPE5TVUludGVnZXI+KG1fbGFzdE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3Vw
TGF5b3V0TWV0YWwubW0KaW5kZXggYTkwZWNkYjQyNTliOTc3M2MzZDE3M2ZmNzcyNzI4YjFkNGE2
NmJkNS4uOTc5YWNmNzg2YmJiZWU3YTkxYTA3YTM0NmU3ZjAxZTRlMWMwMGRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91
cExheW91dE1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIFJl
ZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKGNv
bnN0IEdQVURldmljZSYgZGV2aWNlCiAgICAgdW5zaWduZWQgaW50ZXJuYWxOYW1lID0gMDsKICAg
ICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aEJhc2UgPSBkZXNjcmlwdG9yLmJpbmRpbmdzLnNpemUo
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGJpbmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7
Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OwogICAgICAgICBhdXRvIGludGVybmFsRGV0YWls
cyA9IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMg
ewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
R1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwu
bW0KaW5kZXggYTllYzE3YjhjYzA0ZGQyNTJlZDYxZjc3ZWVmNWI3MTgxY2JjYTBiZC4uZGUzNDQy
NmI0ZTU0OGUwMGE1NWIzZWI1NTkyMmY5M2ZhMTc3ZjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3Jv
dXBNZXRhbC5tbQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ci1zdGF0aWMgT3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZl
ckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciog
Y29uc3QgZnVuY3Rpb25OYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGlu
Zz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQogewogI2lmIExPR19E
SVNBQkxFRAogICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGlu
ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCmluZGV4IDc5YTk5ZGM1YzRiNjY4MzY5NzE4ODg4NDQ4
NDM3MGEyMzAxZTcxMzIuLmE5Y2EzNzhhMGVhZmRiM2ZhNjM2M2VkYTFmYTBjMGZmMWYxOTM5MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0KQEAgLTY0LDcgKzY0
LDcgQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqY29tcHV0
ZU1ldGFsTGlicmFyeSwgTVRMQ29tcHV0ZVBpcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIE9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNv
bnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0ZVN0YWdlLCBjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogbXRsRGVzY3Jp
cHRvciwgT3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERl
c2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3Rk
OjpvcHRpb25hbDxXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3Jp
cHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIFJldGFpblB0cjxNVExM
aWJyYXJ5PiBjb21wdXRlTGlicmFyeTsKICAgICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7CkBA
IC0xMTksNyArMTE5LDcgQEAgc3RydWN0IENvbnZlcnRSZXN1bHQgewogICAgIFdITFNMOjpDb21w
dXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxD
b252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Q29udmVydFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKICAgICBSZXRhaW5QdHI8TVRM
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKIApAQCAtMTM2LDcgKzEz
Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlCiAKICAgICBib29sIGlzV2hsc2wgPSBjb21w
dXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwogCi0gICAgT3B0aW9uYWw8V0hMU0w6OkNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB3aGxzbERlc2NyaXB0b3I7CiAg
ICAgaWYgKGlzV2hsc2wpCiAgICAgICAgIHdobHNsRGVzY3JpcHRvciA9IFdITFNMOjpDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKCk7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdHJ1Y3QgQ3JlYXRl
UmVzdWx0IHsKICAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7
CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8Q3JlYXRlUmVzdWx0PiB0cnlDcmVhdGVNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3JlYXRlUmVzdWx0PiB0cnlDcmVhdGVNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKICAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZp
Y2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVEZXZpY2VNZXRhbC5tbQppbmRleCBhNGYyYTgxZmRjZTI5Nzg2YmEzNDA1OWIwZWNhZjVhOTg3
NjMyYTAzLi5hMzhmNjk1YTg3MzAyZjk1MDExMjNlOGI1ZTNmMmE5YWMwZTBjOGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNl
TWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVURldmljZU1ldGFsLm1tCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgR1BVRGV2aWNlOjpwcmV3
YXJtKCkKICNlbmRpZgogfQogCi1SZWZQdHI8R1BVRGV2aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0
ZShjb25zdCBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQorUmVm
UHRyPEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQogewogICAgIFJldGFpblB0cjxNVExE
ZXZpY2U+IGRldmljZVB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFs
Q29udmVydExheW91dC5jcHAKaW5kZXggMzU0YzZhMmE5ZjUzMzkwOTY0OTlhYTdiYmI0YWQ2YmFi
OTdhODA2Ny4uNWVlMDk4OGM5MzBhMDBiNzQ2Nzc3YzdhMDZiN2Q5ZDFmNDEzMTY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVs
aW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCkBAIC00
NSwyNCArNDUsMjQgQEAgc3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZl
cnRTaGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiBj
b252ZXJ0QmluZGluZ1R5cGUoR1BVQmluZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRh
aWxzIGludGVybmFsQmluZGluZ0RldGFpbHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6
QmluZGluZzo6QmluZGluZ0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBM
YXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlscykKIHsK
LSAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBM
YXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpVbmlmb3JtQnVmZmVyIHVuaWZvcm1CdWZm
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAg
ICAgICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZm
ZXIuaW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0
OjpEeW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRp
bmdEZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1VuaWZv
cm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxz
PiB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91
cExheW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRh
aWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpv
cHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJu
IHsgV0hMU0w6OlNhbXBsZXJCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBM
YXlvdXQ6OlNhbXBsZWRUZXh0dXJlKSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGlu
Z0RldGFpbHM+IHsKKyAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVy
ZSkgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAg
ICAgICAgcmV0dXJuIHsgV0hMU0w6OlRleHR1cmVCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShH
UFVCaW5kR3JvdXBMYXlvdXQ6OlN0b3JhZ2VCdWZmZXIgc3RvcmFnZUJ1ZmZlcikgLT4gT3B0aW9u
YWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRH
cm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewogICAgICAgICByZXR1cm4geyBXSExT
TDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFt
ZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZm
ZXIpIC0+IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4geworICAgIH0s
IFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9w
dGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKIH0KIAotT3B0
aW9uYWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91
dCYgbGF5b3V0KQorc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNv
bnN0IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgV0hMU0w6OkxheW91dCByZXN1
bHQ7CiAgICAgaWYgKGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxp
bmVNZXRhbENvbnZlcnRMYXlvdXQuaAppbmRleCA4ZTI5ZDkzYWYwMjVlYTJlMWE2MTFjY2FmMzky
ZTAwY2MxNmJiNjIwLi44MDUxZWUzZjdlZTExOTYxMWJjOTk4MTM0N2UxMzBiMDMwNTJmZTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVVBpcGVsaW5lTGF5
b3V0OwogCi1PcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBp
cGVsaW5lTGF5b3V0Jik7CitzdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlv
dXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tCmluZGV4IGE4NDdjZTAzZjUyZjlhMjU2ZDkxMjAzMmVlM2RiMmJj
ODg0Zjk5MWEuLjhiM2JjNzc4YTYxMjJlNGE0MWMxYmM3YmZhODc1NmFkZmUwM2ZkMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAg
c3RhdGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhG
b3JtYXQgdmVydGV4Rm9ybWF0KQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFdITFNMOjpU
ZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1h
dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4
dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKQEAgLTE0OSw3ICsx
NDksNyBAQCBzdGF0aWMgTVRMVmVydGV4U3RlcEZ1bmN0aW9uIG10bFN0ZXBGdW5jdGlvbkZvckdQ
VUlucHV0U3RlcE1vZGUoR1BVSW5wdXRTdGVwTW9kZQogLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRv
IEdQVUxpbWl0cyB3aGVuIHRoYXQgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCiBjb25zdGV4cHIg
dW5zaWduZWQgbWF4VmVydGV4QXR0cmlidXRlcyA9IDE2OwogCi1zdGF0aWMgYm9vbCB0cnlTZXRW
ZXJ0ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE1U
TFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgT3B0aW9uYWw8V0hMU0w6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzKQorc3RhdGljIGJvb2wgdHJ5U2V0VmVydGV4SW5wdXQoY29uc3QgR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBNVExSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgKm10bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQogewogICAgIGNvbnN0IGF1dG8mIGJ1ZmZlcnMgPSBkZXNjcmlwdG9yLnZlcnRleEJ1ZmZlcnM7
CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgTVRMQmxlbmRGYWN0b3IgbXRsQmxlbmRGYWN0
b3JGb3JHUFVCbGVuZEZhY3RvcihHUFVCbGVuZEZhY3RvciBmYWN0b3IpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IFZl
Y3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIE9wdGlvbmFsPFdITFNM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2Nv
cGVzJiBlcnJvclNjb3BlcykKK3N0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IFZl
Y3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIHN0ZDo6b3B0aW9uYWw8
V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJy
b3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbWF4
aW11bSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgcGVyIHJlbmRlciBwYXNzIGZyb20gR1BV
TGltaXRzLgogICAgIGlmIChjb2xvclN0YXRlcy5zaXplKCkgPiA0KSB7CkBAIC0zNzgsNyArMzc4
LDcgQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqdmVydGV4
TWV0YWxMaWJyYXJ5LCBNVExMaWJyYXJ5ICpmcmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBPcHRpb25hbDxXSExTTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYg
ZXJyb3JTY29wZXMpCitzdGF0aWMgYm9vbCB0cnlTZXRGdW5jdGlvbnMoY29uc3QgR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9y
LCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERl
c2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKICAgICBSZXRhaW5QdHI8
TVRMTGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21lbnRMaWJyYXJ5OwogICAgIFN0cmluZyB2
ZXJ0ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9pbnQ7CkBAIC00NTksNyArNDU5LDcgQEAg
c3RhdGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IoY28KICAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhTdGFnZS5t
b2R1bGUtPndobHNsTW9kdWxlKCk7CiAKICAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1ldGFsIHBp
cGVsaW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIE9wdGlvbmFs
PFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRvcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3Jp
cHRvcjsKICAgICBpZiAoaXNXaGxzbCkKICAgICAgICAgd2hsc2xEZXNjcmlwdG9yID0gV0hMU0w6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwogCkBAIC01MzAsNyArNTMwLDcgQEAgUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxp
bmUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5w
cmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVz
Y3JpcHRvci5sYXlvdXQsIGRlc2NyaXB0b3IpKTsKIH0KIAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQ
VVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0
ZW5jaWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQ
cmltaXRpdmVUb3BvbG9neSB0b3BvbG9neSwgT3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1h
dCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0LCBjb25zdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9yQmFzZSkKK0dQVVJlbmRl
clBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3Rh
dGU+JiYgZGVwdGhTdGVuY2lsLCBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4mJiBw
aXBlbGluZSwgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgdG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BV
SW5kZXhGb3JtYXQ+IGZvcm1hdCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5
b3V0LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlw
dG9yQmFzZSkKICAgICA6IEdQVVBpcGVsaW5lKCkKICAgICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUo
V1RGTW92ZShkZXB0aFN0ZW5jaWwpKQogICAgICwgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdU
Rk1vdmUocGlwZWxpbmUpKQpAQCAtNTQzLDcgKzU0Myw3IEBAIEdQVVJlbmRlclBpcGVsaW5lOjpH
UFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhT
dGVuCiAKIEdQVVJlbmRlclBpcGVsaW5lOjp+R1BVUmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7
CiAKLWJvb2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIE9wdGlv
bmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKQorYm9v
bCBHUFVSZW5kZXJQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25h
bDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKIHsKICAg
ICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5
b3V0LmdldCgpKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFnZSks
IG1fcmVuZGVyRGVzY3JpcHRvckJhc2UpOwogICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJv
clNjb3Blczo6Y3JlYXRlKFtdIChHUFVFcnJvciYmKSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFp
bk1ldGFsLm1tCmluZGV4IDY1NmYxNDhjZDczMTRkMTdkOWZiYzQzYmE3YzIyZjFiNmIwZGEwYWEu
LjY1ZDA1MDNhOTY1MGQ4ZjdmNTc3YWQ0NjYyZDZiNTQ5OWI0NjRkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRh
bC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
U3dhcENoYWluTWV0YWwubW0KQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgT3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVs
Rm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRM
UGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQg
Zm9ybWF0KQogewogICAgIGF1dG8gbXRsRm9ybWF0ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3Jt
YXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoZm9ybWF0KSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmluZGV4IGFjMmM0MmJmNjBjMjM2MzQ5YWY4NmNjMGIw
ZDE2YzQ0ODg1ZGUyMGIuLjQ3MmQ0ODk2MjVmM2QwN2JmYjAxZGQ5ZTAzODhlODAxMmZiNTM4ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVUZXh0dXJlTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgTVRM
VGV4dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBH
UFVUZXh0dXJlRGVzYwogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVVc2Fn
ZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRl
eHR1cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZv
ckdQVVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBm
bGFncywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQogewogI2lmIExPR19ESVNBQkxF
RAogICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVRGV2aWNlRGF3bi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcApp
bmRleCBhN2JmYjE5MDk3MjAzMWI3NWY4ZWNkYTQwOTYzZjhmZDljMDg2MGQ0Li5iOWQzMjg3ODBh
ZTU5ZGJmNTQyYTg0MWFhM2VkZjQzZjEzZWJhNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxHUFVEZXZp
Y2U+IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucz4mIG9wdGlvbnMpCitSZWZQdHI8R1BVRGV2aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0
ZShjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMp
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGlwZWxpbmVE
YXduLmNwcAppbmRleCAxN2EzMWFiNjYyMGViNDIwNDU4OWFjOTNiZTg5MWNjMjFlZTMxZWE3Li5j
NTJmZTFlYzA0ZmExY2Y5NWY3MzE2OGI0YTllNWRmODMwNTk0ZDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURh
d24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQ
VVJlbmRlclBpcGVsaW5lRGF3bi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLAogCiBHUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBpcGVsaW5lKCkgPSBkZWZh
dWx0OwogCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNl
JiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBP
cHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkK
K2Jvb2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIHN0ZDo6b3B0
aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50U3RhZ2UpCiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5j
cHAKaW5kZXggYzM5N2FjMGE0NjFiYjRkZjU5ZmZjOGRhZTNkZWU0NWM4ODFlNmFhOS4uNGNmYTRm
ZDg0YmNmYWE5N2RjNGY3M2UxYmRhZTFiNThmMjliMzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCB3ZWJLaXRHTFZpZGVv
U2lua0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpF
Q1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CiAKLU9wdGlvbmFsPEdSZWZQdHI8R3N0
Q29udGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hhciogY29udGV4dFR5cGUpCitzdGQ6
Om9wdGlvbmFsPEdSZWZQdHI8R3N0Q29udGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hh
ciogY29udGV4dFR5cGUpCiB7CiAgICAgYXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCk7CiAgICAgYXV0byogZ3N0R0xEaXNw
bGF5ID0gc2hhcmVkRGlzcGxheS5nc3RHTERpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAKaW5kZXggNTU1OGJmYjMyZTkxOTA1Y2Y2Zjk5MjUwZmY3M2ZjY2YyMGRkYjU5Ny4uZDE4
ODg3ZjUxMmRiZjU2MjUwZDkyMzI4N2U2OTI1NGIxYWNlOThkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1h
dEZyb21DYXBzKGNvbnN0IEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0
aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykKK3N0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogewogICAg
IGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7
CiAgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9u
LCB0aGVzZSBhcmUgbm90IGEgdmlkZW8gY2FwcyIpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wg
YXJlRW5jcnlwdGVkQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gc19VSVByb2Nlc3NDb21tYW5kTGluZU9wdGlvbnM7
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gc19VSVByb2Nlc3NDb21tYW5k
TGluZU9wdGlvbnM7CiB2b2lkIHNldEdTdHJlYW1lck9wdGlvbnNGcm9tVUlQcm9jZXNzKFZlY3Rv
cjxTdHJpbmc+JiYgb3B0aW9ucykKIHsKICAgICBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5lT3B0aW9u
cyA9IFdURk1vdmUob3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggYTMxNDlh
MzZjN2YwOTU2MWEwYzMxZWY4MWMyMzI0ZDkwZTI2NzNmOC4uMmRhNWM2ZGZjYWRhYTY5MTQ1MDlm
MmI0N2M3OTFmNDgwOGJjZmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtNjIsNyAr
NjIsNyBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1
aW50IG1pbm9yLCBndWludCBtaWNybykKIEdzdFBhZCogd2Via2l0R3N0R2hvc3RQYWRGcm9tU3Rh
dGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqLCBjb25zdCBnY2hhciogbmFtZSwgR3N0
UGFkKiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgZ2V0VmlkZW9TaXplQW5kRm9y
bWF0RnJvbUNhcHMoY29uc3QgR3N0Q2FwcyosIFdlYkNvcmU6OkludFNpemUmLCBHc3RWaWRlb0Zv
cm1hdCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJh
dGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKLU9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0Vmlk
ZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyopOworc3RkOjpvcHRpb25hbDxGbG9h
dFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGNvbnN0IEdzdENhcHMqKTsKIGJvb2wg
Z2V0U2FtcGxlVmlkZW9JbmZvKEdzdFNhbXBsZSosIEdzdFZpZGVvSW5mbyYpOwogI2VuZGlmCiBj
b25zdCBjaGFyKiBjYXBzTWVkaWFUeXBlKGNvbnN0IEdzdENhcHMqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggYTdmMjM0OGE1ZmM2ZTA5M2JiMzQw
NTA4Y2Y3YzczZGIzZTg2NDk1MS4uZTlkZmJhMGE3YzY3NWJkMmU5ZGZmYzhlMTY0NWRjZmNmZjEw
MTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCBHTGlzdCogR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50
RmFjdG9yaWVzOjpmYWN0b3J5KEdTdHJlYW1lclJlZ2lzdHJ5U2NhbgogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0
cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVz
OjpoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGUgZmFjdG9yeVR5
cGUsIGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdh
cmVDbGFzc2lmaWVyIHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyLCBPcHRpb25hbDxWZWN0
b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0CitHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVu
dEZhY3Rvcmllczo6aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBl
IGZhY3RvcnlUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBFbGVtZW50RmFjdG9yaWVzOjpD
aGVja0hhcmR3YXJlQ2xhc3NpZmllciBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0CiB7CiAgICAg
YXV0byogZWxlbWVudEZhY3RvcmllcyA9IGZhY3RvcnkoZmFjdG9yeVR5cGUpOwogICAgIGlmICgh
ZWxlbWVudEZhY3RvcmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIu
aAppbmRleCBmNzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0MzUyM2EzOTE5MDA0ZjFkLi43YjUxYjZl
M2JjM2Q1NzM3NWY1N2UxOTlkMzY5Yjc5OGE5ODU1Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgR0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAKICAgICAgICAgZW51bSBjbGFzcyBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsKLSAgICAgICAgUmVnaXN0cnlMb29rdXBS
ZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5n
LCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywg
T3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9
IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gZGlzYWxsb3dlZExpc3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgICAgIEdMaXN0
KiBhdWRpb0RlY29kZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CiAgICAgICAgIEdMaXN0KiBhdWRp
b1BhcnNlckZhY3RvcmllcyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0ZyYW1lSG9sZGVyLmNwcAppbmRleCBlZWYxMjc0YmVkZjJjYTEwYTg0MzU1NDZhYTI2MTIy
YThjZGI1ZGI0Li4zOTI5ZmJiM2YxNzRiY2JjZDhkMjc2ZTBjZGIzM2YzMzE3MDg0ZGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9GcmFtZUhvbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0
VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBsZSwgT3B0aW9uYWw8R3N0VmlkZW9EZWNv
ZGVyUGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3JtLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCkKK0dzdFZpZGVvRnJhbWVIb2xkZXI6OkdzdFZpZGVv
RnJhbWVIb2xkZXIoR3N0U2FtcGxlKiBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8R3N0VmlkZW9EZWNv
ZGVyUGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3JtLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCkKICAgICA6IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0o
dmlkZW9EZWNvZGVyUGxhdGZvcm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoR1NUX0lTX1NBTVBM
RShzYW1wbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5oCmlu
ZGV4IDcxNDlhYjU4ZTgxYzc2ODE4MTljNThlNzUzYTFiODgzZWMzMWEzNDEuLmVjZDFiMTliNjE3
NmVhNGNlM2MxN2U5ZjI1YzQzMThkM2YzNGJkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvRnJhbWVIb2xkZXIuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdzdFZpZGVvRnJhbWVIb2xkZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OlVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgewogcHVibGljOgotICAg
IGV4cGxpY2l0IEdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlKiwgT3B0aW9uYWw8R3N0Vmlk
ZW9EZWNvZGVyUGxhdGZvcm0+LCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBib29sIGdzdEdMRW5h
YmxlZCk7CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqLCBzdGQ6
Om9wdGlvbmFsPEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtPiwgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cywgYm9vbCBnc3RHTEVuYWJsZWQpOwogICAgIHZpcnR1YWwgfkdzdFZpZGVvRnJhbWVIb2xkZXIo
KTsKIAogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCkBAIC02Myw3ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgR3N0VmlkZW9GcmFtZSBtX3ZpZGVvRnJhbWUgeyB9OwogICAg
IEludFNpemUgbV9zaXplOwogICAgIGJvb2wgbV9oYXNBbHBoYUNoYW5uZWw7Ci0gICAgT3B0aW9u
YWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07CisgICAg
c3RkOjpvcHRpb25hbDxHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0
Zm9ybTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fZmxhZ3MgeyB9OwogICAgIEdMdWlu
dCBtX3RleHR1cmVJRCB7IDAgfTsKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDkxZjkyY2JiY2NjOGIyNmVmMDc1YzcwYzg1NTBm
OWE4NWE4OWU0ZTQuLjFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsK
ICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBzaXplKCk7IH0KICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdCBmaW5hbCB7IHJldHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQpAQCAtMTMxLDcg
KzEzMSw3IEBAIHByaXZhdGU6CiAgICAgRGVjb2RlT3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1f
Y3Vyc29yOwogICAgIExvY2sgbV9zYW1wbGVHZW5lcmF0b3JMb2NrOwogICAgIGJvb2wgbV9lb3Mg
eyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IG1fc2l6ZTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI+IG1faW5uZXJEZWNvZGVyOwogICAg
IENvbmRpdGlvbiBtX3NhbXBsZUNvbmRpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjgwOTEzOTVjZGUzM2RiMTkxMDdlNDc1ZTA4
MjYyYTEyZDJmMWRkNC4uNDdkYTE3MzQ0ZTIzZDg4OTc4M2JhZjEyMzdlNmZkMjc1NmZiMTExOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTgwNCw3ICs4MDQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiByZXNvbHZlZE9yaWdpbi0+aXNT
YW1lU2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8
Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKSBjb25zdAogewogICAgIEdTVF9UUkFDRV9PQkpFQ1QocGlwZWxpbmUoKSwg
IkNoZWNraW5nICV1IG9yaWdpbnMiLCBtX29yaWdpbnMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8m
IHJlc3BvbnNlT3JpZ2luIDogbV9vcmlnaW5zKSB7CkBAIC0yODYxLDcgKzI4NjEsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShGdW5j
dGlvbjx2b2lkKCk+JiYgdGFzawogICAgIGlmICghbV9waXBlbGluZSB8fCBtX2RpZEVycm9yT2Nj
dXIgfHwgbV9pc1NlZWtpbmcgfHwgbV9pc1BhdXNlZCB8fCAhbV9wbGF5YmFja1JhdGUgfHwgIWN1
cnJlbnRUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9u
YWw8RnVuY3Rpb248dm9pZCgpPj4gdGFza1RvU2NoZWR1bGU7CisgICAgc3RkOjpvcHRpb25hbDxG
dW5jdGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsKICAgICB7CiAgICAgICAgIGF1dG8gdGFz
a0F0TWVkaWFUaW1lU2NoZWR1bGVyID0gaG9sZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVs
ZXJEYXRhTXV0ZXgpOwogICAgICAgICB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXItPnNldFRhc2so
V1RGTW92ZSh0YXNrKSwgdGltZSwKQEAgLTM1NTQsNyArMzU1NCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVt
ZSogdm9sdW1lCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fdm9sdW1lRWxlbWVudC5n
ZXQoKSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0sobXV0ZUNoYW5nZWRDYWxsYmFjayksIHRo
aXMpOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6
b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgaWYgKCF3ZWJr
aXRHc3RDaGVja1ZlcnNpb24oMSwgMTgsIDApICYmICFtX2Zwc1NpbmspCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggODAzOTFkOTE2NzY1NDU0NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uODZm
ZjliMTJkYmY5NTk3MTQ1ZTI5YzQ1ZmRmN2NmMzBhMjg3N2FhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxk
VGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKSBmaW5hbDsKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYVBsYXllcjo6TW92
aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKICAgICB2b2lkIGFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVGFza0F0TWVk
aWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAK
QEAgLTMyNiw3ICszMjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmPE1haW5UaHJlYWROb3RpZmll
cjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKICAgICBNZWRpYVBsYXllciog
bV9wbGF5ZXI7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxN
ZWRpYVRpbWU+IG1fY2FjaGVkUG9zaXRpb247CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE1l
ZGlhVGltZT4gbV9jYWNoZWRQb3NpdGlvbjsKICAgICBtdXRhYmxlIE1lZGlhVGltZSBtX2NhY2hl
ZER1cmF0aW9uOwogICAgIGJvb2wgbV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0
aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNDaGFuZ2luZ1JhdGUgeyBmYWxzZSB9OwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNXYWl0aW5nRm9yS2V5IHsg
ZmFsc2UgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+
IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07CisgICAgc3RkOjpvcHRpb25hbDxHc3RWaWRlb0RlY29k
ZXJQbGF0Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0Zm9ybTsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXIgewpAQCAtNDAzLDEyICs0MDMsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fdGFzayA9IFdURk1vdmUodGFzayk7CiAgICAgICAgICAgICBtX3Bs
YXliYWNrRGlyZWN0aW9uID0gcGxheWJhY2tEaXJlY3Rpb247CiAgICAgICAgIH0KLSAgICAgICAg
T3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gY2hlY2tUYXNrRm9yU2NoZWR1bGluZyhjb25zdCBN
ZWRpYVRpbWUmIGN1cnJlbnRUaW1lKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEZ1bmN0aW9uPHZv
aWQoKT4+IGNoZWNrVGFza0ZvclNjaGVkdWxpbmcoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGlt
ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX3RhcmdldFRpbWUuaXNWYWxpZCgpIHx8
ICFjdXJyZW50VGltZS5pc0Zpbml0ZSgpCiAgICAgICAgICAgICAgICAgfHwgKG1fcGxheWJhY2tE
aXJlY3Rpb24gPT0gRm9yd2FyZCAmJiBjdXJyZW50VGltZSA8IG1fdGFyZ2V0VGltZSkKICAgICAg
ICAgICAgICAgICB8fCAobV9wbGF5YmFja0RpcmVjdGlvbiA9PSBCYWNrd2FyZCAmJiBjdXJyZW50
VGltZSA+IG1fdGFyZ2V0VGltZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZ1
bmN0aW9uPHZvaWQoKT4+KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
RnVuY3Rpb248dm9pZCgpPj4oKTsKICAgICAgICAgICAgIG1fdGFyZ2V0VGltZSA9IE1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUoKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fdGFzayk7CiAg
ICAgICAgIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDY0
X3QgbV9yZWFkUG9zaXRpb25BdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MgeyAwIH07CiAKICAgICBI
YXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG1fb3JpZ2luczsKLSAgICBP
cHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzVGFpbnRlZE9yaWdpbiB7IHN0ZDo6bnVsbG9wdCB9Owog
CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1NpbmsgeyBudWxscHRyIH07CiAgICAgdWlu
dDY0X3QgbV90b3RhbFZpZGVvRnJhbWVzIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3Ry
ZWFtZXIuaAppbmRleCA4NTgyY2I2NjI1MDlhOGQyZmI1MDcyODE5OTU3MjMyMWViMTM1YmM1Li44
ZjYwZDhhZjk1ZWNiZmUxNDc2NjU1MDUxMjU0NTZhZTk4Y2ZkNWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgUmVmPE1l
ZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbGFnczsgfQog
ICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+
IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCAyNmI4NmE1ZDA3NWZhNTYwYzVmYTg5ZjY0NTk2
MjYwYWUyYjgxMTBmLi5hZGJkYzViMDhmOWI2NjMzMTc5YjE3Mjg5YzIwMjBhMDM2ZTE2YmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAgICAgICAgICAgY2xvc2UoKmZk
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1h
cCgpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgp
CiAgICAgewogICAgICAgICBmZCA9IG1lbWZkX2NyZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1G
RF9DTE9FWEVDKTsKICAgICAgICAgaWYgKCpmZCA9PSAtMSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBz
dHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxpbnQzMl90PiBmZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGZkOwog
ICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4gYnVmZmVyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94
eUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVByb3h5Q2xlYXJLZXkuaAppbmRleCBlM2Q5N2E1YzllZDdmZmIxNzVhMTM4MGVmZTVh
MWMyMGUxMDgxNDk1Li5mZjc0YjFlNjMzYTEzNTc2NWMxZmJlZjFiODJiY2RhYjhlMDg5ZDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbG9zZUdDcnlwdEhhbmRsZSgpOwogCiAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWV0aGluZyBpbiBXZWJDb3JlIGZvciBjcnlwdG8uLi4K
LSAgICBPcHRpb25hbDxnY3J5X2NpcGhlcl9oZF90PiBtX2dDcnlwdEhhbmRsZSB7IHN0ZDo6bnVs
bG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5k
bGUgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhU
ZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCA0MDFj
MjdlYmI3OGFkNmE5M2MyOWI0ZWQzZTliMjAwMjYxZWUyMzk5Li5hYWRlOGE2ZjZlYTAyN2I5ZTk5
ZGEzN2UwMDc3MjE2Yzc5ODBkZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRD
b250cm9sbGVySGFyZkJ1enouY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIFZlY3Rvcjxo
Yl9mZWF0dXJlX3QsIDQ+IGZvbnRGZWF0dXJlcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgRm9udFAKICAgICByZXR1cm4gZmVhdHVyZXM7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxVU2Ny
aXB0Q29kZT4gY2hhcmFjdGVyU2NyaXB0KFVDaGFyMzIgY2hhcmFjdGVyKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VVNjcmlwdENvZGU+IGNoYXJhY3RlclNjcmlwdChVQ2hhcjMyIGNoYXJhY3RlcikK
IHsKICAgICBVRXJyb3JDb2RlIGVycm9yQ29kZSA9IFVfWkVST19FUlJPUjsKICAgICBVU2NyaXB0
Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjaGFyYWN0ZXIsICZlcnJvckNvZGUpOwpA
QCAtNDE2LDcgKzQxNiw3IEBAIHN0cnVjdCBIQlJ1biB7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0
OwogfTsKIAotc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxIQlJ1bj4gZmluZE5leHRSdW4oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IoY2hhcmFjdGVycyArIG9mZnNldCwgb2Zmc2V0LCBs
ZW5ndGgsIGxlbmd0aCk7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXI7CkBAIC00NTYsMTAgKzQ1Niwx
MCBAQCBzdGF0aWMgT3B0aW9uYWw8SEJSdW4+IGZpbmROZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1
cnJlbnRTY3JpcHQgIT0gbmV4dFNjcmlwdCAmJiAhdXNjcmlwdF9oYXNTY3JpcHQoY2hhcmFjdGVy
LCBjdXJyZW50U2NyaXB0LnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhC
UnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNj
cmlwdC52YWx1ZSgpIH0pOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SEJSdW4+
KHsgc3RhcnRJbmRleCwgdGV4dEl0ZXJhdG9yLmN1cnJlbnRJbmRleCgpLCBjdXJyZW50U2NyaXB0
LnZhbHVlKCkgfSk7CiAgICAgfQogCi0gICAgcmV0dXJuIE9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0
SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgp
IH0pOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJ
dGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgpIH0pOwogfQogCiBz
dGF0aWMgaGJfc2NyaXB0X3QgZmluZFNjcmlwdEZvclZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb24o
aGJfZmFjZV90KiBmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCmluZGV4IDJiNWY1
MjRmZDE3NTIxMDg0MmE5ZmM4ZWNhY2UzMTE1NzY3ZTkxYmUuLjQ3NTUwODY0MTEzZGU4MDkwODRj
ZTg3YjZhOTI3ZGIzNGY3MDY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBib29s
IHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wTm90aWZp
Y2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBk
aXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOwog
CiAgICAgUmV0YWluUHRyPFdlYkRpc3BsYXlMaW5rSGFuZGxlcj4gbV9oYW5kbGVyOwogICAgIERp
c3BsYXlVcGRhdGUgbV9jdXJyZW50VXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mu
bW0KaW5kZXggZTUxNmY4MTY5YjA1NzFiZGUzYmJjODMxYjE0YjI0YWE2NzM4ZmJkZS4uNjYyMmI0
YWI5YWFiNjhhZjRmYTU3OWRmYThkMmMyMDdmNTk2N2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAgIG1fZGlzcGxheUxpbmtJc0Fj
dGl2ZSA9IGZhbHNlOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5v
bWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIHJldHVybiBEaXNwbGF5TGlua0ZyYW1lc1Bl
clNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaAppbmRleCBlY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5ODA5OWVjOGRhYzJkLi44NzBi
ZGM4MGYzNTUxMGQzNjJlNTM0MzM5ZGE5NjBhNzBmYmJiNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkg
PSBkZWZhdWx0OwogCi0gICAgdXNpbmcgUGVla1Jlc3VsdCA9IE9wdGlvbmFsPHN0ZDo6cGFpcjxG
b3VyQ0MsIHVpbnQ2NF90Pj47CisgICAgdXNpbmcgUGVla1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEZvdXJDQywgdWludDY0X3Q+PjsKICAgICBzdGF0aWMgUGVla1Jlc3VsdCBwZWVr
Qm94KEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCBvZmZzZXQpOwogICAgIHN0YXRpYyBzaXplX3Qg
bWluaW11bUJveFNpemUoKSB7IHJldHVybiAyICogc2l6ZW9mKHVpbnQzMl90KTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCmluZGV4
IDc2YzU0ZGYxMGVhMjQ1MzEzODIzYTM1YzIyNTNkOTVhZDAyYTRjNGUuLjgwZjUwNzhiZDM4YTcy
OWFmZTAzZjI0YjM5NmVkOTdjMTYwYjA5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIEpT
Qzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1J
RChKU0M6OkRhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCBvZmZzZXQpCitzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVr
U3lzdGVtSUQoSlNDOjpEYXRhVmlldyYgdmlldywgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIGF1
dG8gcGVla1Jlc3VsdCA9IElTT0JveDo6cGVla0JveCh2aWV3LCBvZmZzZXQpOwogICAgIGlmICgh
cGVla1Jlc3VsdCB8fCBwZWVrUmVzdWx0LnZhbHVlKCkuZmlyc3QgIT0gYm94VHlwZU5hbWUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaAppbmRl
eCAxMTI3ODBhYmNkNWYyZjllZGEyYTcyNzU2NTIwZjlhZTgxNzcwZjNhLi42OGUxNzJhNTgxNGIy
ZTFmMDk0NGFkNDcwNTZmNDJkZDI3ZGMxYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBLZXlJRCA9IFZlY3Rvcjx1aW50OF90PjsKICAgICBzdGF0aWMgRm91ckNDIGJveFR5
cGVOYW1lKCkgeyByZXR1cm4gInBzc2giOyB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQo
SlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4g
c3lzdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlEOyB9CiAgICAgVmVjdG9yPEtleUlE
PiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJv
eC5oCmluZGV4IDgyMzk3NDIwNDZhMjZhOTJkOGJhN2I3OWExMWM5ZWFmZTJmZWQ5OWEuLjZiMzVj
NTg2YjY0ZmVkMWM2ODU0NzUxODY1MzI4NDU0MDBlYzQ2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9u
Qm94LmgKQEAgLTMzLDggKzMzLDggQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNy
eXB0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7IH0KIAotICAgIE9wdGlvbmFs
PGludDhfdD4gZGVmYXVsdENyeXB0Qnl0ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
Q3J5cHRCeXRlQmxvY2s7IH0KLSAgICBPcHRpb25hbDxpbnQ4X3Q+IGRlZmF1bHRTa2lwQnl0ZUJs
b2NrKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0U2tpcEJ5dGVCbG9jazsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8aW50OF90PiBkZWZhdWx0Q3J5cHRCeXRlQmxvY2soKSBjb25zdCB7IHJldHVybiBt
X2RlZmF1bHRDcnlwdEJ5dGVCbG9jazsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50OF90PiBkZWZh
dWx0U2tpcEJ5dGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7
IH0KICAgICBpbnQ4X3QgZGVmYXVsdElzUHJvdGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZh
dWx0SXNQcm90ZWN0ZWQ7IH0KICAgICBpbnQ4X3QgZGVmYXVsdFBlclNhbXBsZUlWU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBlclNhbXBsZUlWU2l6ZTsgfQogICAgIFZlY3Rvcjx1aW50
OF90PiBkZWZhdWx0S0lEKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0S0lEOyB9CkBAIC00Myw4
ICs0Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3
JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxpbnQ4X3Q+IG1f
ZGVmYXVsdENyeXB0Qnl0ZUJsb2NrOwotICAgIE9wdGlvbmFsPGludDhfdD4gbV9kZWZhdWx0U2tp
cEJ5dGVCbG9jazsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDhfdD4gbV9kZWZhdWx0Q3J5cHRCeXRl
QmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ4X3Q+IG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7
CiAgICAgaW50OF90IG1fZGVmYXVsdElzUHJvdGVjdGVkIHsgMCB9OwogICAgIGludDhfdCBtX2Rl
ZmF1bHRQZXJTYW1wbGVJVlNpemUgeyAwIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVmYXVs
dEtJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRD
dWUuaAppbmRleCBlMjBiMTkxNzZjOTNmMzIyNmEyNmZiM2ZlMDcwN2JiMGQ3M2RkMzQ5Li5mZWM4
MGZmOTU5Y2Y2OTIxZjkwMGU5MjZiOTk2MGVlOTYwY2QwZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC03MCwzOSArNzAsMzkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxJU09XZWJWVFRDdWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElTT1dlYlZUVEN1ZT4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOwogICAg
ICAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIGlmICghcHJlc2VudGF0
aW9uVGltZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRp
bWU+IGR1cmF0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAo
IWR1cmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHNvdXJjZUlEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c291cmNlSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gc291cmNlSUQ7CiAgICAgICAgIGlmICghc291
cmNlSUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlk
ZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsU3RhcnRUaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxT
dGFydFRpbWU7CiAgICAgICAgIGlmICghb3JpZ2luYWxTdGFydFRpbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc2V0dGluZ3M7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzZXR0aW5nczsKICAgICAgICAgZGVjb2Rl
ciA+PiBzZXR0aW5nczsKICAgICAgICAgaWYgKCFzZXR0aW5ncykKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdWVUZXh0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VlVGV4dDsKICAgICAgICAgZGVjb2RlciA+PiBj
dWVUZXh0OwogICAgICAgICBpZiAoIWN1ZVRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tCmluZGV4IDA3YWFlOGFmZmNiMjQ4NTMwOThkYjZhMDFkMTVjYzlkMjljMTRjNTEuLjgw
Yjg0ZWE4YmQxMGY0OTE5Zjg3OTdjZDJjMzZmMzVmZGI5MzUxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTY0LDcgKzY0LDcg
QEAgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpCiAgICAgcmV0dXJuIHVzZU9sZEFx
dWFGb2N1c1JpbmdDb2xvcjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBt
YWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICpjb2xvcikKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9y
ICpjb2xvcikKIHsKICAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRs
ZSBjb2xvciBzcGFjZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5jcHAKaW5kZXggYjY1ZDgxNzczNzkzNjQ2NmEwZTkwZDVhMGM3MTc2YWM0MTg5M2I0Ni4uZDEy
OWQxYTdiZWUzZjcyNzZiZmQ0MGRjNzAzNmIxMTUyMmFhMDY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIExl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
CiAgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5h
bEZyYW1lc1BlclNlY29uZCgpCitzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gTGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgp
CiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGluaygpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IGEy
ZGJjNTg3ZTIwZTZmY2M1NTZmNzAzZGQxM2VjMjQ2MzI4YjAxNWYuLjllZTA3NzhhMTIxNDM4YWNh
N2NkYWE4YWQ1NDY1NmUwMGMwNDI3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnRO
b3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25N
ZWNoYW5pc20oKSBmaW5hbDsKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlO
b21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQ
ZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CiAgICAgCiAg
ICAgYm9vbCBlbnN1cmVEaXNwbGF5TGluaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCmluZGV4
IGQ4Y2QxZGMxYzEwYTU5NDJiNWI4MmY1OGY1ODBiZjU0YzNjNzEyYWEuLjAxZmRmZjY3NjkxMDhk
MGVkY2Q1Nzg0Zjc4M2IwMjkzM2U4YTEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCkBAIC0z
Myw5ICszMyw5IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFuaW1hdGlvblN0YXRlIHsgUGxh
eWluZywgUGF1c2VkLCBTdG9wcGVkIH07CiAKICAgICBzdHJ1Y3QgQXBwbGljYXRpb25SZXN1bHQg
ewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJhbnNm
b3JtOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG9wYWNpdHk7Ci0gICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IGZpbHRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+IHRyYW5zZm9ybTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG9wYWNpdHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz4gZmlsdGVyczsKICAgICAgICAgYm9vbCBoYXNSdW5uaW5nQW5p
bWF0aW9ucyB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKaW5kZXggODI1MWJlZTIyN2JmNjkzYTExMWZhMWQwYjc0ZjI4OGFiOWU4ZjY1My4u
MGFiZmI2MDExY2EzMjc5NGRhY2FhMTI2NDVlM2U0M2U4NmE2NmFjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBpbWFnZUIKICAgICBwYWludFRvQ2FudmFzKGNvbnRleHRBdHRyaWJ1dGVzKCksIFdURk1v
dmUoKnBpeGVsQnVmZmVyKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXIu
Y29udGV4dCgpKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkKK3N0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb1BpeGVsQnVmZmVyKCkKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBp
ZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCkBAIC0yMzUsNyArMjM1
LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmUKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jl
c3VsdHNGb3JQYWludGluZygpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQorc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJp
bmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNDQsNyArMjQ0LDcgQEAgT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVz
dWx0c0ZvclBhaW50aW5nKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29t
cG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmco
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yNTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygKIH0K
IAogI2lmICFQTEFURk9STShDT0NPQSkKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMo
KQogewogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBkOGMxNmMyMDMxYjgyMTA2MGFiYzQ2MGZiNDM3NWI4
NWRjOTFhYjQ0Li5iYjMzYTExNGRjN2Y3ZDJmY2Y3MzhiMDc5NzBiZGMwNmRkNzY4MzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwogCiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFs
OwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwotICAgIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOworICAg
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRp
bmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3Vs
dHNGb3JQYWludGluZygpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKQEAgLTU1Myw5ICs1NTMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tH
UFVTdGF0dXMoKTsKIAogCi0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdS
ZXN1bHRzKCk7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0
cygpOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRz
KCk7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHMo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCk7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lk
IHByZXBhcmVUZXh0dXJlSW1wbCgpOwpAQCAtNjQ0LDggKzY0NCw4IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkdMRVNo
YWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG1hcHBlZFN5
bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLCBzaXplX3QgY291bnQsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG9yaWdpbmFsU3ltYm9sTmFtZShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1hcHBlZFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW5hbFN5bWJvbEluU2hhZGVyU291
cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hcHBlZFN5bWJv
bEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5
bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIs
IEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFkZXJzOwogI2VuZGlm
IC8vICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCmluZGV4IDE4NDFjNTFlYzcyMTViOTk1M2M3ZmYyNDI0OTYyYzJhNjc4M2IyZmIuLjJlNDZi
NjE1MzZjODM1ZGZjYWNmOWY3OWUxMGU2ZDU5YWU3YTM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkK
IHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNy
ZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMzdlNGY4MzM2Mzg0NDhh
NGNhMjc0ZDBkNTE3ODVjMmQ3NDdhYTIxOC4uNzI2ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2
YjkxN2QyYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24uY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZVRleHR1cmUoKQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKK3N0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVu
ZGVyaW5nUmVzdWx0cygpCiB7CiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAg
IGlmIChjb250ZXh0QXR0cmlidXRlcygpLmFudGlhbGlhcykgewpAQCAtOTE1LDcgKzkxNSw3IEBA
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICByZXR1cm4gbWFrZVN0cmluZygid2ViZ2xfIiwgaGV4KG51bWJlciwgTG93ZXJjYXNlKSk7CiB9
CiAKLU9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJv
bEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5
bWJvbFR5cGUgc3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxT
dHJpbmc+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xJblNoYWRlclNvdXJj
ZU1hcChQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJv
bFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVy
U291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNl
TWFwLmVuZCgpKQpAQCAtOTczLDcgKzk3Myw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEFOR0xFCiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Om9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBz
aGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdp
bmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEFOR0xF
U2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
YXV0byByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAgICAgaWYgKHJl
c3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcAppbmRleCAyMjU1NjhjNjQ1ZDZhMzQ1MjQ4ZWU5OWVjZTQ5NDY5NTc0
M2NiMDY0Li4zODY0MTk4Zjc0YTU5MmJhNDI5YzZkMGE4YmM2MWRlODFhMzhmNjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQorc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKaW5kZXggZDNjZjgxMDAzOWU2MjZi
MDNhNmU1NzdmMzgyMTBiZDQ0YjBiNTU1OC4uMjcxZTRmZGYyOTMzZjFkMDFjZmRkYzJjMTNlYmQ1
ZDc4ZTVkYjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0ludmVydGlibGUoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OmlzZmluaXRlKGRldGVybWluYW50KSAmJiBkZXRlcm1pbmFudCAhPSAwOwogfQog
Ci1PcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZl
cnNlKCkgY29uc3QKIHsKICAgICBkb3VibGUgZGV0ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zvcm0p
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkZXRlcm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQgPT0g
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCmluZGV4IDhjNDBkYzFmNjA4MmNkMzQ5OTY3ZTg3
ZjkwZTI5NjdkMDU3ZGRhNTUuLmQwODY4MjI0MjgyMDcyZDc3ZmU2NWM2NjczNzAxMmQxMzY5NDE4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgeVNjYWxlKCkgY29uc3Q7CiAKICAgICBib29s
IGlzSW52ZXJ0aWJsZSgpIGNvbnN0OyAvLyBJZiB5b3UgY2FsbCB0aGlzIHRoaXMsIHlvdSdyZSBw
cm9iYWJseSBkb2luZyBpdCB3cm9uZy4KLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBibGVuZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9n
cmVzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggN2Q2NDEzMGI5Yjg5Zjgw
MjRkOTUxOTFkMjI5Yzk4MzVjY2M5NTI3Ny4uODI4ZDkyZWJlYzAyM2E0ZWIzM2UwOWE5NWU0OTE3
NjBlOTRiMmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBl
ZCkgY29uc3QKICAgICByZXR1cm4gcXVhZDsKIH0KIAotT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAor
c3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlR
dWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0NsYW1wZWQpCiAgICAg
ICAgICp3YXNDbGFtcGVkID0gZmFsc2U7CkBAIC0xOTYsNyArMTk2LDcgQEAgT3B0aW9uYWw8Rmxv
YXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFt
cGVkKSBjb25zdAogICAgIHJldHVybiBxdWFkOwogfQogCi12b2lkIFRyYW5zZm9ybVN0YXRlOjpz
ZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBPcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFk
KQordm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFkKQogewogICAgIGlmICghcXVhZCkgewogICAg
ICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCA4YWEzM2U4ZTYxOWViZDAzMDJlNTgz
YTUyYzM3MWQ1NWMzNjczYWM3Li5hOGFjNTQ4OTE4YmFiMGRhNGQ4ZWFjNWJkMzg2ZGY2MDE3ODgz
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTU2Nyw3
ICsxNTY3LDcgQEAgYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxlKCkgY29u
c3QKICAgICByZXR1cm4gZmFicyh0eXBlID09IFR5cGU6OkFmZmluZSA/IChtMTEoKSAqIG0yMigp
IC0gbTEyKCkgKiBtMjEoKSkgOiBXZWJDb3JlOjpkZXRlcm1pbmFudDR4NChtX21hdHJpeCkpID49
IFNNQUxMX05VTUJFUjsKIH0KIAotT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAg
ICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6SWRlbnRp
dHlPclRyYW5zbGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5k
ZXggNWY3MjVhZDY2ZWY3NzA5MWU5ZmIwNjYwOThiOGRhNzU4ZjVhZjkwZi4uOTc5MjJhODY3NmNk
MTQzMzk0YWI4YzBmN2ZiYTA5MDc5MzU1ZjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaApAQCAtMjg2LDcgKzI4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbnZlcnRp
YmxlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25N
YXRyaXg+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlKCkgY29uc3Q7CiAKICAgICAvLyBEZWNvbXBv
c2UgdGhlIG1hdHJpeCBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMuCiAgICAgc3RydWN0IERlY29t
cG9zZWQyVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDgxNDVjNDdmZjkxZDg3YWQ2NDRkZDA0ZGEyN2Jk
NzUxZTEzZmFmYzEuLmRmOTE3ZmJjOWI0NDM3OGU3NDg3MmU1ZjI0ZWIzNjZjN2ZmZjViOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCkBAIC02OTIsNyArNjkyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9y
bURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6
cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKK3N0
ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgc3dpdGNoIChmYW1pbHlO
YW1lLmxlbmd0aCgpKSB7CiAgICAgLy8gT24gV2luZG93cywgd2UgZG9uJ3Qgc3VwcG9ydCBiaXRt
YXAgZm9udHMsIGJ1dCBsZWdhY3kgY29udGVudCBleHBlY3RzIHN1cHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCBhZDk1NTRjMDUwYWVlMmUxMGVjMTUzNTll
YjhiNDg1ZDM1MGNkYTRkLi5mYTIwODdlZTIxMWUzOWQ2MzM4MmRlZjgzN2RhMGZiYzQ2YTA2N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTI5NCwxOSArMjk0
LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1TdHJpbmcgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJp
bmcmLCBPcHRpb25hbDxkb3VibGU+LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcg
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4sIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAiZGF0YTosIl9zOwogfQogCi1WZWN0b3I8dWludDhf
dD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXggMDViOGNhMmEy
YTgzOWVhZGViZDM0MGNmNDUyODM3MzBjNmFkYTk0OC4uNTQyZWNiZWFmMGMxZTg1ODljYjJiZTI1
OWQzNTJmYzY4MGM0NTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAg
LTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcAppbmRleCBiN2Y4NDJiNjk3NmJjMGVlYTdjMzA3YzcyZGJjY2Yw
YWQ5ZGE0YWNjLi45YzEwYTQ2NGEzYTkzMDllN2I1NGNhZTI4YTdiYzU2Nzc1ZGU3OTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZXBldGl0aW9uQ291
bnQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0
dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6aG90U3BvdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggN2UxNzdiNzk5NWI0ZGM0MzY4
YzBkOTBmMDc0NzllZDVlZjE0Yzc1OC4uNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0M2NiYTIzZDAz
MDAxNmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CiAKICAgICBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2lt
cGxlRm9udERhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKaW5kZXggZTZlMjQyNzQyZmIyODFlZWI5
Y2ViNzZiMzZhNDQwY2E0YTdlZjVmOS4uNmZkM2QzYzU5NTI2MDg5Nzg3YTk5MjA0ZjJjNzA5MzVi
ODIxYjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1NpbXBsZUZvbnREYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNhaXJvV2luLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgRm9udDo6ZGV0ZXJtaW5lUGl0Y2goKQogICAgIFJlc3RvcmVEQyhkYywgLTEpOwog
fQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0
ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZv
cm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hh
cjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhcmlhdGlvbiA/IGZhbHNlIDog
Z2x5cGhGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKaW5k
ZXggMjM4YzY0OTU0ODJhN2Y5NmM2ZTA0ZGZjNTc3NTI5ZWJiNDRjNWI5NC4uNzVhYTAxYTZmMWM4
MTllZGVjN2MxMmY1NjllMzM0YzVjY2M5NDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9z
aXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXBwb3J0c1hDb21wb3NpdGUudmFsdWUoKTsKIH0K
IAotYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+
JiBkYW1hZ2VFdmVudEJhc2UsIE9wdGlvbmFsPGludD4mIGRhbWFnZUVycm9yQmFzZSkgY29uc3QK
K2Jvb2wgUGxhdGZvcm1EaXNwbGF5WDExOjpzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxp
bnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNl
KSBjb25zdAogewogICAgIGlmICghbV9zdXBwb3J0c1hEYW1hZ2UpIHsKICAgICAgICAgbV9zdXBw
b3J0c1hEYW1hZ2UgPSBmYWxzZTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFBsYXRmb3JtRGlz
cGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwg
T3B0aW9uYQogICAgIHJldHVybiBtX3N1cHBvcnRzWERhbWFnZS52YWx1ZSgpOwogfQogCi1ib29s
IFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNHTFgoT3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JC
YXNlKSBjb25zdAorYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzR0xYKHN0ZDo6b3B0
aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25zdAogewogI2lmIFVTRShHTFgpCiAgICAgaWYg
KCFtX3N1cHBvcnRzR0xYKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKaW5kZXggYjQyNTViMTA2YzU2MGJj
YTFjYmUwMjZhZWNlMDlkNjQ3YTIxYzA4Yi4uZjg3NzEyZGFlYmY2MTYyODFkNDc3MWJkNzYwZDgz
MTFhNDJmNzZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
eDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6
CiAgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KICAg
ICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNv
bnN0OwotICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50
QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNlKSBjb25zdDsKLSAgICBib29sIHN1
cHBvcnRzR0xYKE9wdGlvbmFsPGludD4mIGdseEVycm9yQmFzZSkgY29uc3Q7CisgICAgYm9vbCBz
dXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6
b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNlKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRz
R0xYKHN0ZDo6b3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBQbGF0Zm9ybURpc3BsYXlYMTEoOjpEaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsK
QEAgLTY1LDEzICs2NSwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICA6OkRpc3BsYXkqIG1f
ZGlzcGxheSB7IG51bGxwdHIgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9y
dHNYQ29tcG9zaXRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hEYW1h
Z2U7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fZGFtYWdlRXZlbnRCYXNlOwotICAgIG11
dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUVycm9yQmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hDb21wb3NpdGU7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYRGFtYWdlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxpbnQ+IG1fZGFtYWdlRXZlbnRCYXNlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+
IG1fZGFtYWdlRXJyb3JCYXNlOwogI2lmIFVTRShHTFgpCi0gICAgbXV0YWJsZSBPcHRpb25hbDxi
b29sPiBtX3N1cHBvcnRzR0xYOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2dseEVycm9y
QmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c0dMWDsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2dseEVycm9yQmFzZTsKICNlbmRpZgogICAg
IG11dGFibGUgdm9pZCogbV92aXN1YWwgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGZiZTcxOTg4MzI3YWQwZDA0
YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIuLmZlZThhODUwMDkxMjFlYWIyZTRjYjZhMThkYWFmZWU3
MTRkNTk2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAKQEAgLTI1NiwxMiArMjU2LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogfQogI2VuZGlmCiAKLXZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9s
aWN5LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PikKIHsKICAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnJlYWRUZXh0RnJvbUNsaXBib2FyZChtX25hbWUpOwogfQogCi12b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRl
bnRSZWFkaW5nUG9saWN5IHBvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewogICAgIHJl
YWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyLCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PikKIHsKICAgICBpZiAobV9zZWxlY3Rpb25EYXRhKSB7CiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZmlsZVBhdGggOiBtX3NlbGVjdGlvbkRhdGEtPmZpbGVuYW1lcygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTlkNmEyMWUyMTg3MDZlZDk3ZWI3MTlhMmNkNTM2
MGJhM2MwOTY2YS4uMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRo
ZSBhcmd1bWVudAogICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZh
bHNlLgotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3Bv
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAg
Ym9vbCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOwogICAgIEltYWdlT3JpZW50YXRpb24g
bV9vcmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxJbnRTaXplPiBtX2RlbnNpdHlDb3JyZWN0ZWRT
aXplOworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGQyNWNmZTZiMjE4ZjRiNjhiODI2Mzlh
ODBmZDRiNDMxZGIxOWMuLjg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBJ
Q09JbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rl
cjo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29k
ZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdoZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZh
dWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aAogICAg
IC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFtZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5
IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwpAQCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFs
PEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogICAgIHJldHVybiBo
b3RTcG90QXRJbmRleCgwKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rl
cjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQ
b2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiB7CiAgICAgaWYgKGluZGV4ID49IG1fZGlyRW50cmllcy5zaXplKCkgfHwgbV9maWxlVHlwZSAh
PSBDVVJTT1IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMmQ5ZjlhMzNiMTVhMjA1Mjg0M2JjNmZmMzYyODZjMGQyMjdlNDk4MC4uZmI3
YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgzZmY0MzJhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXZvaWQgYWNjZXNzaW5n
IGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20KICAgICAv
LyBpbnNpZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAgYm9vbCBzZXRGYWlsZWQoKSBmaW5hbDsKLSAg
ICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBl
bnVtIEltYWdlVHlwZSB7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBy
b2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBm
b3IgfGluZGV4fCwgcmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUgaXMgbm9uZS4KLSAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAg
Ly8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBv
ZmZzZXQgaW50bwogICAgIC8vIHxkYXRhfC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaAppbmRleCBjZTg1NTQ4Mjc0MzY4MDgxZmI3
OGIyYWY0MDk3MjQ1ODBiYWQ3NDc5Li5mNWY0YzE0NGYzZGNkYjJhYWRjNzVlMDllMGE0OTA1Yjll
ZjllZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90
aW9uQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1v
dGlvbkNsaWVudElPUy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBEZXZpY2VNb3Rp
b25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VNb3Rp
b25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1vdGlvbkNoYW5n
ZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgT3B0aW9u
YWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7
CisgICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdl
YkNvcmVNb3Rpb25NYW5hZ2VyKiBtX21vdGlvbk1hbmFnZXIgeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5tbQpp
bmRleCA1MzhmZDI2ODg0NjVhZTM4OWYzNjBlMDYyZDI1Zjk3MGFiN2NiZDFiLi4zNGI2OThiYjYx
YjZiYmRiYjYzMDNkYmFhMTUwMjJkZTA2M2Y4Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MubW0KQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6OmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0
cm95ZWQoKQogICAgIFttX21vdGlvbk1hbmFnZXIgcmVtb3ZlTW90aW9uQ2xpZW50OnRoaXNdOwog
fQogCi12b2lkIERldmljZU1vdGlvbkNsaWVudElPUzo6bW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBP
cHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4geVJvdGF0aW9u
UmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQordm9pZCBEZXZpY2VNb3Rpb25D
bGllbnRJT1M6Om1vdGlvbkNoYW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNj
ZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJs
ZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHhS
b3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkKIHsKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oCmluZGV4IGE0MWI5ZDI1YzM1
MjRmZWUyYzExZDgyZDIwNGNlZDU4NGIyYjdlMTcuLjliM2FjNmRiZjQ3MWIxMTNiN2E1MjMzZWJm
MGNkNGNiOWM5NmVlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZ0RldmljZU1vdGlvbihN
b3Rpb25NYW5hZ2VyQ2xpZW50JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVu
dGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBk
b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFs
PGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
TW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpv
cHRpb25hbDxkb3VibGU+KSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAppbmRleCA1NzYxNmU4MTU0YzdmOGFlMjBjYTJiMWFi
MjM0NGZjZDVhNjQyMjQxLi5mZmNkNWZjYjUxZjczOTQ3MTY5YTY0OWRiMTQzYjQ3MWJhYTdjMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCkBA
IC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbnN1cmUgdGhlcmUgYXJlIG5vIGFz
eW5jIGNhbGxzIG9uIGEgZGVhZCB0aWxlIGNhY2hlLgogICAgIFJldGFpblB0cjxMZWdhY3lUaWxl
Q2FjaGVUb21ic3RvbmU+IG1fdG9tYnN0b25lOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBt
X292ZXJyaWRlVmlzaWJsZVJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fb3Zl
cnJpZGVWaXNpYmxlUmVjdDsKIAogICAgIEludFNpemUgbV90aWxlU2l6ZSB7IDUxMiwgNTEyIH07
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVk
RGV2aWNlTW9kZWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVkRGV2
aWNlTW9kZWwubW0KaW5kZXggNzEwNjZmYjg2MGFjNzVlZjdlOTE2OGY4Yjg2Y2JkZjIyY2M2YjUx
ZC4uOWZhNmE3NDM3MDFjN2MyNTA4ZjhjZDZkNmRhMTg1ZjE4NWVkODFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsaXplZERldmljZU1vZGVsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb2NhbGl6ZWREZXZpY2VNb2RlbC5tbQpAQCAt
MzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZpY2VNb2RlbCgpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxTdHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZpY2VNb2RlbCgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE9wdGlvbmFsPFN0cmluZz4+IGRldmljZU1vZGVsOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IGRldmljZU1vZGVsOwogICAgIHJl
dHVybiBkZXZpY2VNb2RlbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL01vdGlvbk1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Nb3Rpb25NYW5hZ2VyQ2xpZW50LmgKaW5kZXggOTk4NjAyMjA2NTdiNmUwMmUzNDJhZjEzZmY0
M2FhMWQ2MDQyMTUzNS4uNTMxMzI5ODJmYTUwOGE0YmM5MjY4ZDU1OTg1ZDk2Mjc1YTVlMjQ3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL01vdGlvbk1hbmFnZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTW90aW9uTWFuYWdlckNsaWVu
dC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Nb3Rpb25NYW5hZ2Vy
Q2xpZW50KCkgeyB9OwogCiAgICAgdmlydHVhbCB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91Ymxl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgeyB9CiB9OwogCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAyZGUx
YmNiMDg3ZjUzY2RiZjYzZDAxZDNhYzI5MDRjYmQ4ODk4Y2NhLi45MDllOGU3NjhhZGI2OGJhYjI4
NDQ1ZDI4MjczNjBhM2YzZmEyMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2Fu
U21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kg
YWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQordm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kg
YWxsb3dVUkwsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgYXV0byBp
dGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlX29yKDApOwogCkBAIC0zMTAsNyArMzEw
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5
LCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBw
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgcmVhZGVyLmNv
bnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAgICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGll
cygpKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZp
ZGVsaXRpZXMoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgp
Cit2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ks
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgQVNTRVJUKHJlc3BlY3Rz
VVRJRmlkZWxpdGllcygpKTsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBjMmM4OGYwZDJkNDBlZWIw
ZDkwZDNlNGUwMTRmZDQwMDcxZDZjMWMxLi5kZjU5NmVmYWVlZjNkNWY5NzE1N2E5MWE5ODlkMDk5
Y2JjMTA1ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKFVJ
UHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZ
TEVfQU5EX1RFQU1fREFUQQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0
X3QgY2hhbmdlQ291bnQpCitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50
NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZv
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV8KICAg
ICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID0gcGFzdGVib2FyZEl0ZW1QcmVzZW50
YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwogI2Vu
ZGlmCiAgICAgaWYgKCFDR1NpemVFcXVhbFRvU2l6ZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSwgQ0dTaXplWmVybykpIHsKLSAgICAgICAgYXV0byBhZGp1c3RlZFByZWZl
cnJlZFByZXNlbnRhdGlvbkhlaWdodCA9IFtdKGF1dG8gaGVpZ2h0KSAtPiBPcHRpb25hbDxkb3Vi
bGU+IHsKKyAgICAgICAgYXV0byBhZGp1c3RlZFByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA9
IFtdKGF1dG8gaGVpZ2h0KSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAgICAg
aWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKCkgJiYgIUlPU0FwcGxpY2F0aW9uOjpp
c01haWxDb21wb3NpdGlvblNlcnZpY2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyBoZWln
aHQgfTsKICAgICAgICAgICAgIC8vIE1haWwncyBtYXgtd2lkdGg6IDEwMCU7IGRlZmF1bHQgc3R5
bGUgaXMgaW4gY29uZmxpY3Qgd2l0aCB0aGUgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzaXplIGFu
ZCBjYW4gbGVhZCB0byB1bmV4cGVjdGVkbHkgc3RyZXRjaGVkIGltYWdlcy4gTm90IHNldHRpbmcg
dGhlIGhlaWdodCBmb3JjZXMgbGF5b3V0IHRvIHByZXNlcnZlIHRoZSBhc3BlY3QgcmF0aW8uCkBA
IC0yODEsNyArMjgxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICNl
bHNlCiAKLU9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgaW50NjRfdCkKK3N0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90LCBpbnQ2NF90KQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCmlu
ZGV4IDEwMzJlZDU5OTUwY2RiYzRlNjY1ZjNhYjVlYjgxMGQ2YjYzOWE4OWMuLjk5MDJjMmEzZjQz
YjJhMzk0MTk1MTMxNGEzZDNmYzA3MTdhMDg5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNSdWJ5VGV4dCB7IGZhbHNlIH07CiAgICAgaW50IG1fcGFnZU51bWJl
ciB7IDAgfTsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8SW50UmVjdD4gbV9jYWNoZWRFbmNsb3Np
bmdSZWN0OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBtX2NhY2hlZEVuY2xv
c2luZ1JlY3Q7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgU2VsZWN0aW9uR2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDVlNGJjOWY4NzIxNjdhMGEzZDE5NGU4ZTVmYTdmNGI4Mzg5Zjk5N2YuLmYx
MzBjOTkzZWIyY2FhYTAwN2YyNGY0Nzc3NjkxNzA1MjMyNWQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KQEAgLTE2MzQsNyArMTYzNCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogICAg
IHJldHVybiBoYXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpICYmIFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5
aW5nXTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBv
cnRlZDsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBv
cnRlZDsKIAogdm9pZCBXZWJDb3JlOjpzZXRTdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoYm9vbCBp
c1N1cHBvcnRlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9Q
YXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCA1OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4
OTVhNWEyMWI1Li40ZDg1ODJhMDJjODcxZTc5MjViMDcxNDU4NTIzYjgyZmRkMTlkOGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUu
Y3BwCkBAIC05NiwxNyArOTYsMTcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJp
bmcmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9w
dGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKaW5kZXggYzE0ZTE4Mzg2ODU0
NTEyZGQ3MWYxYmZlZTYzZWE2ZWRhZWJlZmYxNi4uNzdjNjUyMjI3MjI5NjQzMDIxMjFlNmNlNTg3
NTkwY2MzNmFmNDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05T
U2Nyb2xsZXJJbXBEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05T
U2Nyb2xsZXJJbXBEZXRhaWxzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHNldFVzZU92ZXJsYXlTY3JvbGxiYXJzKGJvb2wpOwogICAgIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gbV91c2VPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZU92ZXJsYXlTY3JvbGxiYXJzOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRh
aWxzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxz
Lm1tCmluZGV4IGEyMjk2NDk0NTBkYjEwNGZiZTNmMzFiMTM3ZTc2OTJhM2JhNWFmOGUuLjQ2Y2I0
YjRkMDBhMzRmZmZhMDk1ZDJjNTc4MmQ0MjkwY2VhODA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxib29sPiBTY3JvbGxlclN0
eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJzOworc3RkOjpvcHRpb25hbDxib29sPiBTY3JvbGxl
clN0eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJzOwogCiBOU1Njcm9sbGVyU3R5bGUgU2Nyb2xs
ZXJTdHlsZTo6cmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMTEwZGQyNTEwYjg1ZjEwNmQzYzkx
NTgxMTBkMDgwZDU4MGUyOGFiNy4uNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2
YTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
QEAgLTMyMywyMSArMzIzLDIxIEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAo
aXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICByZXR1
cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwg
UGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlw
ZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBz
dHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0
cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCk7CiAgICAgcmV0dXJuIHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlw
ZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxv
d1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxv
d1VSTCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKICAgICBhdXRvJiBzdHJh
dGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIH0KIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgp
Cit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
ciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aXRlbUluZGV4KQogewogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggNTQ4MjNhMmQxNTVmZGJiMjU2
Yzg0NjZjNWExM2I4NTM2YjYxNmZkNy4uMzBhNmFhODhjNWNlODEwMDJhN2JlZjMyYWJiZjBmNTU5
ZTViMWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC01MzAsNyArNTMwLDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1E
YXRhKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XTsKIH0KIAotT3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBpbnQ2NF90IGNoYW5nZUNvdW50KQorc3RkOjpvcHRp
b25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAg
aWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQ29udHJvbGxlci5tbQppbmRleCBlNTJkNmJhMmQxZTViYWE3YzBiMzQyODVmMDA3ZDA5NmIw
MjYyYjIzLi44NzAzOGI1OWQ5MjAwMmJjZTRjY2QxNGZmMTM5ZGU4YWJlMmM1YzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzE5
LDcgKzMxOSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsCiAgICAgcmV0dXJuIHsgZGVsdGFY
LCBkZWx0YVkgfTsKIH0KIAotT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9s
bGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlhcykK
K3N0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rp
b25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9w
dGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAg
IC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5n
bGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IK
ICAgICAvLyBoYXMgc21hbGwgZGVsdGFzIG9uIGJvdGggYXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggMmNhNTI2YmUzODdmODUzNTc3YWUzNTdjM2JjNzM4NDRk
M2VhY2YzMS4uNTkxMTFjZWNhODAyMmM5NzQ5ODk0YjBiMTM5OGEzNzc2NzAyZTQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29u
c3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9s
Rm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNv
bnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0
b3IpIGNvbnN0IGZpbmFsOwogCiAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFy
dCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3QgZmluYWw7CiAgICAgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJv
bFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IGY3ZGMyMjAwYzdkNWI0YjNhYmNjMTAyZDc5ZTJlYmNhY2Y5OWFlMjQuLmJlMTM3ODkx
NjdhMGVjYTUyNWExNmE5ODRjZTY4NDE0OWQyMWYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KQEAgLTc5MCw3ICs3OTAsNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2Vs
aW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiAgICAgcmV0dXJu
IFRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChwYXJ0KTsKIH0KIAotT3B0aW9uYWw8
Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0
IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAor
c3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZv
bnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBQdXNoQnV0dG9u
UGFydDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAppbmRleCBkMDk1NTY0NDQ0MGYyYmFk
MzIyMjIwN2E1MTI2MzRlYzYxNDI1ZWE3Li45ZWFkMDg4MWYzODQyNzgxMzExMGRlY2Q1OTVjYmRi
MzNmNTVmMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaApAQCAtMzMsMTIgKzMzLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdWRpb0NvbmZpZ3VyYXRpb24gewogICAg
IFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgY2hhbm5lbHM7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IGJpdHJhdGU7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7Ci0g
ICAgT3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRlcmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiaXRyYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGF0aWFsUmVuZGVyaW5nOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDI5ICs1MiwyOSBAQCB2b2lkIEF1ZGlvQ29uZmln
dXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmln
dXJhdGlvbj4gQXVkaW9Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICgh
Y29udGVudFR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGNoYW5uZWxzOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjaGFubmVsczsK
ICAgICBkZWNvZGVyID4+IGNoYW5uZWxzOwogICAgIGlmICghY2hhbm5lbHMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRfdD4+IGJp
dHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0
ZTsKICAgICBkZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBz
YW1wbGVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx1aW50MzJfdD4+IHNh
bXBsZVJhdGU7CiAgICAgZGVjb2RlciA+PiBzYW1wbGVSYXRlOwogICAgIGlmICghc2FtcGxlUmF0
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFs
PGJvb2w+PiBzcGF0aWFsUmVuZGVyaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxib29sPj4gc3BhdGlhbFJlbmRlcmluZzsKICAgICBkZWNvZGVyID4+IHNwYXRpYWxSZW5kZXJp
bmc7CiAgICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAppbmRleCBhYTkwOWQzOGExYjdiY2FkODAx
YzAyNTA2M2E1ZmE1MDYwMWI1OWIyLi4zNTcxMjNhNDc5YzBiZjA2MGU4ZmViZjk0YjQwNjY3MzAw
OGE4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtMzIsMTEgKzMyLDExIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYUNvbmZpZ3VyYXRpb24gewotICAg
IE9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87Ci0gICAgT3B0aW9uYWw8QXVkaW9D
b25maWd1cmF0aW9uPiBhdWRpbzsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlv
bj4gdmlkZW87CisgICAgc3RkOjpvcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUNvbmZp
Z3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lk
IE1lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1l
ZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PE1lZGlhQ29uZmlndXJhdGlvbj4gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxPcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+PiB2
aWRlbzsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9u
Pj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRlbzsKICAgICBpZiAoIXZpZGVvKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25m
aWd1cmF0aW9uPj4gYXVkaW87CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEF1ZGlv
Q29uZmlndXJhdGlvbj4+IGF1ZGlvOwogICAgIGRlY29kZXIgPj4gYXVkaW87CiAgICAgaWYgKCFh
dWRpbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYURl
Y29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IDIyNjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2
MDM1YWQ3MWVmNDYuLmZlYmM4YWRmM2E0MjRjY2UzMmFkNWMxOGJhM2RjMjUwZTdmY2FlZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RGVjb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtMzYsNyArMzYs
NyBAQCBzdHJ1Y3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24gOiBNZWRpYUNvbmZpZ3VyYXRp
b24gewogICAgIGJvb2wgY2FuRXhwb3NlVlA5IHsgdHJ1ZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NywxOCArNDcsMTggQEAgdm9pZCBN
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbj4gTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFE
ZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1
dG8gbWVkaWFDb25maWd1cmF0aW9uID0gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxNZWRpYURlY29kaW5nVHlwZT4gdHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsK
ICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxib29sPiBjYW5FeHBvc2VWUDk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5FeHBv
c2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBvc2VWUDk7CiAgICAgaWYgKCFjYW5FeHBvc2VW
UDkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNv
ZGluZ0NvbmZpZ3VyYXRpb24uaAppbmRleCAxNjVkYzRmMmY4NjZiOTUyMjBjN2JhNjYwYzhkNDcx
ZTAxODdjZTdkLi4xOWI3Zjc0YzJkMTU4ZDUxZWQ5OTU3MjI0MzRjOTU0MzkzZWM1ZjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcg
QEAgc3RydWN0IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uIDogTWVkaWFDb25maWd1cmF0aW9u
IHsKICAgICBNZWRpYUVuY29kaW5nVHlwZSB0eXBlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NSwxMyArNDUsMTMgQEAgdm9pZCBNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJh
dGlvbj4gTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFFbmNvZGlu
Z0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gbWVk
aWFDb25maWd1cmF0aW9uID0gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxNZWRpYUVuY29kaW5nVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBp
ZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmln
dXJhdGlvbi5oCmluZGV4IDdhOTViZmIyOGE5MTgyZDkzYWFhYjg0NWEzNDhjOWM5Y2U4NTQxMGIu
LmM4N2Q5NzQ4YmY1YjlkMDY3NmIxYjczNzJjM2YzNjIyMzA4Y2IyOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVv
Q29uZmlndXJhdGlvbi5oCkBAIC0zOSwxMyArMzksMTMgQEAgc3RydWN0IFZpZGVvQ29uZmlndXJh
dGlvbiB7CiAgICAgdWludDMyX3QgaGVpZ2h0OwogICAgIHVpbnQ2NF90IGJpdHJhdGU7CiAgICAg
ZG91YmxlIGZyYW1lcmF0ZTsKLSAgICBPcHRpb25hbDxib29sPiBhbHBoYUNoYW5uZWw7Ci0gICAg
T3B0aW9uYWw8Q29sb3JHYW11dD4gY29sb3JHYW11dDsKLSAgICBPcHRpb25hbDxIZHJNZXRhZGF0
YVR5cGU+IGhkck1ldGFkYXRhVHlwZTsKLSAgICBPcHRpb25hbDxUcmFuc2ZlckZ1bmN0aW9uPiB0
cmFuc2ZlckZ1bmN0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxwaGFDaGFubmVsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JHYW11dD4gY29sb3JHYW11dDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRhdGFUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8
VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5jdGlvbjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZpZGVvQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CkBAIC02Myw0OSArNjMsNDkgQEAgdm9pZCBWaWRlb0NvbmZpZ3VyYXRpb246
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBWaWRlb0NvbmZpZ3VyYXRpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+
IFZpZGVvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29u
dGVudFR5cGU7CiAgICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKICAgICBpZiAoIWNvbnRlbnRU
eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDMy
X3Q+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoOwogICAgIGRlY29k
ZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaGVpZ2h0OwogICAgIGRlY29kZXIgPj4gaGVpZ2h0OwogICAgIGlmICghaGVpZ2h0
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IGJpdHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYml0cmF0ZTsKICAgICBkZWNv
ZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXJhdGU7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBkZWNvZGVyID4+IGZyYW1lcmF0ZTsKICAgICBp
ZiAoIWZyYW1lcmF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7CiAgICAgZGVjb2RlciA+PiBhbHBoYUNoYW5u
ZWw7CiAgICAgaWYgKCFhbHBoYUNoYW5uZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxDb2xvckdhbXV0Pj4gY29sb3JHYW11dDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8Q29sb3JHYW11dD4+IGNvbG9yR2FtdXQ7CiAgICAg
ZGVjb2RlciA+PiBjb2xvckdhbXV0OwogICAgIGlmICghY29sb3JHYW11dCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPEhkck1ldGFkYXRhVHlw
ZT4+IGhkck1ldGFkYXRhVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SGRy
TWV0YWRhdGFUeXBlPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRh
dGFUeXBlOwogICAgIGlmICghaGRyTWV0YWRhdGFUeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4+IHRyYW5z
ZmVyRnVuY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFRyYW5zZmVyRnVu
Y3Rpb24+PiB0cmFuc2ZlckZ1bmN0aW9uOwogICAgIGRlY29kZXIgPj4gdHJhbnNmZXJGdW5jdGlv
bjsKICAgICBpZiAoIXRyYW5zZmVyRnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaAppbmRleCBkZTc0ODQzODhh
Y2UyMWFkMTU0YmFiYzIxY2Q0YTVhNWUzNDVkNmJhLi5iM2FjNGZjNTgyNzUxOGE1Y2UzNjQ0YzRh
YTQ5ZWI1ZmQ1NDcxNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgK
QEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMgewogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25kOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB2
aWRlb0JpdHNQZXJTZWNvbmQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGJpdHNQZXJTZWNvbmQ7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZpZGVvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBiaXRzUGVyU2Vjb25kOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUwLDIzICs1MCwyMyBAQCBpbmxpbmUgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotaW5saW5lIE9wdGlvbmFsPE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBTdHJpbmcgbWltZVR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDx1bnNpZ25lZD4+IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVj
b2RlciA+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFhdWRpb0JpdHNQZXJTZWNvbmQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1
bnNpZ25lZD4+IHZpZGVvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRl
b0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJp
dHNQZXJTZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4g
Yml0c1BlclNlY29uZDsKICAgICBkZWNvZGVyID4+IGJpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFi
aXRzUGVyU2Vjb25kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggZTNjMjJkNmFlZDllNmNl
OWRkMjhjODg3ODJiZTYxOTZiZjdiNjZiZS4uNjRkZjc1MDJlMWIzMTViOWE4ZGQyOTA4ZjI0OGNl
YTE1YmYxMDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxv
Y2tCdWZmZXJTaXplIHsgMCB9OwogICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyIHsgMCB9OwogICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGUgeyBr
QXVkaW9Gb3JtYXRNUEVHNEFBQyB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJp
dFJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRCaXRSYXRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMWI5ODUwYWVhNDI1MjZkYmY1YjY2YTA4NWU4NTk5Yjc2NmMxNzJiLi40NjU1
Y2NlMDJhNmVmNWNiZDg2NWM0Yzg5ZTJkMGMxOWEzY2Q4YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTM5LDcgKzEzOSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRmx1c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkU3RvcEFmdGVyRmx1c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fZmlyc3RWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxDR0FmZmluZVRy
YW5zZm9ybT4gbV92aWRlb1RyYW5zZm9ybTsKKyAgICBzdGQ6Om9wdGlvbmFsPENHQWZmaW5lVHJh
bnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOwogICAgIENNVGltZSBtX3Jlc3VtZWRWaWRlb1RpbWUg
eyBrQ01UaW1lWmVybyB9OwogICAgIENNVGltZSBtX2N1cnJlbnRWaWRlb0R1cmF0aW9uIHsga0NN
VGltZVplcm8gfTsKICAgICBDTVRpbWUgbV9jdXJyZW50QXVkaW9TYW1wbGVUaW1lIHsga0NNVGlt
ZVplcm8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
CmluZGV4IGViYzY5Mzg1NTgyNzkzODhjOTc4MzMxMzdjNTU5OWM4MjM1Njk0OWIuLjU4OTM1MTM2
MDA1ZjY4NThhNjI3YjY1YmNhMjU3MjNkYmUzNDFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKICAgICBmbG9hdCBtX21heEtleUZyYW1l
SW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OwogICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJh
dGUgeyAzMCB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJpdFJhdGU7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRCaXRSYXRlOwogICAgIFByb2ZpbGUgbV9w
cm9maWxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZS5oCmluZGV4IDViODFhNDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2
YTM4ZmRhYzEuLjE1YzM1NDE1MWM5YWMyOGM0NWI2Y2U1NDE4ZWYxYzVjMjNjMDJiMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
LmgKQEAgLTkwLDQ0ICs5MCw0NCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50
SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAgICAgICBpZiAoIXBlcnNp
c3RlbnRJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVs
OwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGdy
b3VwSWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBncm91cElkOwogICAgICAgICBk
ZWNvZGVyID4+IGdyb3VwSWQ7CiAgICAgICAgIGlmICghZ3JvdXBJZCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVu
YWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNEZWZhdWx0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKICAgICAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7
CiAgICAgICAgIGlmICghaXNEZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlPiB0eXBlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU+IHR5cGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01vY2tEZXZp
Y2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNNb2NrRGV2aWNlOwogICAgICAgICBk
ZWNvZGVyID4+IGlzTW9ja0RldmljZTsKICAgICAgICAgaWYgKCFpc01vY2tEZXZpY2UpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENhcHR1cmVE
ZXZpY2U+IGRldmljZSA9IHt7IFdURk1vdmUoKnBlcnNpc3RlbnRJZCksIFdURk1vdmUoKnR5cGUp
LCBXVEZNb3ZlKCpsYWJlbCksIFdURk1vdmUoKmdyb3VwSWQpIH19OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IGRldmljZSA9IHt7IFdURk1vdmUoKnBlcnNpc3RlbnRJZCks
IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpsYWJlbCksIFdURk1vdmUoKmdyb3VwSWQpIH19Owog
ICAgICAgICBkZXZpY2UtPnNldEVuYWJsZWQoKmVuYWJsZWQpOwogICAgICAgICBkZXZpY2UtPnNl
dElzRGVmYXVsdCgqaXNEZWZhdWx0KTsKICAgICAgICAgZGV2aWNlLT5zZXRJc01vY2tEZXZpY2Uo
KmlzTW9ja0RldmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IGViYmRjNTYzZDk3NDhmNjVlOWY0
ZTY2ZDM4YTJlN2QyZjNiMTBlY2IuLmZlNzY5N2Y4NTdjMzU4YzkxY2EwZmZjYTViZjBjY2JjNzc0
YWYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25z
dCBNZWRpYUNvbnMKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9u
YWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0
aW9uYWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgpAQCAtMjQ4
LDcgKzI0OCw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQogfQogCi12b2lkIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJh
aW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3Ry
YWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQog
ewogICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkFzcGVjdFJhdGlvOgpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBP
cHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQo
TWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0
cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNl
dChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPEJvb2xl
YW5Db25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlw
ZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKQEAg
LTMwNiw3ICszMDYsNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVk
aWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYQogICAgIH0KIH0KIAotdm9p
ZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29u
c3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3Zv
aWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWlu
dCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IGViMjk0OWY0ZTdjNWVkOWI1
N2Q1M2NlOWZjZDc3NTNhN2M0YmRmNzUuLmUyYWFmMjc3MTAyNmNjMThiNzgwZDlhNzg2MWFjMzE5
MTQ1NDdmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTI5MywxMSArMjkzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFs
dWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMoVmFsdWVUeXBlIGN1cnJlbnQsIGNvbnN0IFZl
Y3RvcjxWYWx1ZVR5cGU+JiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIGNvbnN0CisgICAgc3Rk
OjpvcHRpb25hbDxWYWx1ZVR5cGU+IHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZh
bHVlVHlwZSBjdXJyZW50LCBjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmls
aXR5VmFsdWVzKSBjb25zdAogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1
ZTsKLSAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtaW47Ci0gICAgICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gbWF4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtaW47CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmFsdWVUeXBlPiBtYXg7CiAKICAgICAgICAgaWYgKG1fZXhhY3QpIHsKICAgICAgICAgICAg
IEFTU0VSVChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMuY29udGFpbnMobV9leGFjdC52YWx1ZSgp
KSk7CkBAIC0zOTcsMTAgKzM5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWluOwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4g
bV9tYXg7Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gbV9pZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV9taW47Cisg
ICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWF4OworICAgIHN0ZDo6b3B0aW9uYWw8VmFs
dWVUeXBlPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOwog
fTsKIAogY2xhc3MgSW50Q29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWlu
dDxpbnQ+IHsKQEAgLTUzNiw4ICs1MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dBc0Jvb2xl
YW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxib29sPiBtX2V4YWN0OwotICAg
IE9wdGlvbmFsPGJvb2w+IG1faWRlYWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2V4YWN0
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pZGVhbDsKIH07CiAKIGNsYXNzIFN0cmluZ0Nv
bnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKQEAgLTY1NCwyNyArNjU0LDI3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFD
b25zdHJhaW50VHlwZSwgT3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlw
ZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6
b3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQo
TWVkaWFDb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9w
dGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYp
OwogCi0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoOyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3Ry
YWludD4gc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2hlaWdodDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gc2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
SW50Q29uc3RyYWludD4gc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsg
fQogCi0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9Ci0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4g
ZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KLSAgICBPcHRpb25hbDxE
b3VibGVDb25zdHJhaW50PiB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50
PiBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RG91YmxlQ29uc3RyYWludD4gdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7
IH0KIAotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0aW9uOyB9Ci0gICAgT3B0aW9uYWw8Qm9vbGVh
bkNvbnN0cmFpbnQ+IGRpc3BsYXlTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3Vy
ZmFjZTsgfQotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBsb2dpY2FsU3VyZmFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFN1cmZhY2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJv
b2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hv
Q2FuY2VsbGF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gZGlz
cGxheVN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdXJmYWNlOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbG9naWNhbFN1cmZhY2UoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2ljYWxTdXJmYWNlOyB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50
PiBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgT3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlk
OyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZ3JvdXBJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JvdXBJZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZmFj
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlk
OyB9CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBncm91cElkKCkgY29uc3Qg
eyByZXR1cm4gbV9ncm91cElkOyB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CkBAIC02OTYsNyArNjk2LDcg
QEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8IG1fZ3JvdXBJZDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAgbWFwOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX3dpZHRo
KSkKQEAgLTczMywyMiArNzMzLDIyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
T3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJh
aW50PiBtX2hlaWdodDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7
Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9zYW1wbGVTaXplOwotCi0gICAgT3B0aW9u
YWw8RG91YmxlQ29uc3RyYWludD4gbV9hc3BlY3RSYXRpbzsKLSAgICBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiBtX2ZyYW1lUmF0ZTsKLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBt
X3ZvbHVtZTsKLQotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBtX2VjaG9DYW5jZWxs
YXRpb247Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZGlzcGxheVN1cmZhY2U7
Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fbG9naWNhbFN1cmZhY2U7Ci0KLSAg
ICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBtX2ZhY2luZ01vZGU7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJh
aW50PiBtX2dyb3VwSWQ7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3dpZHRo
OworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9oZWlnaHQ7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxJ
bnRDb25zdHJhaW50PiBtX3NhbXBsZVNpemU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNv
bnN0cmFpbnQ+IG1fYXNwZWN0UmF0aW87CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJh
aW50PiBtX2ZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1f
dm9sdW1lOworCisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbV9lY2hvQ2Fu
Y2VsbGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZGlzcGxh
eVN1cmZhY2U7CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbV9sb2dpY2Fs
U3VyZmFjZTsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9mYWNpbmdN
b2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZ3JvdXBJZDsKIH07CiAKIGNsYXNz
IEZsYXR0ZW5lZENvbnN0cmFpbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAppbmRleCA1OWQ1ZmEzZjM3MmU0
YWU3MTg1NTA4NDI1N2FkNDY0Y2JiMzFkMjkzLi42ODUwYWRiMGQyMThjZGFjYzM3ZTFkMmQ0N2E4
YjE4MjdlMjY4MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3Qg
TWVkaWFTdHJlYW1SZXF1ZXN0IHsKICAgICAgICAgZW5jb2RlciA8PCBpc1VzZXJHZXN0dXJlUHJp
dmlsZWRnZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxNZWRpYVN0cmVhbVJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYVN0cmVh
bVJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgTWVkaWFT
dHJlYW1SZXF1ZXN0IHJlcXVlc3Q7CiAgICAgICAgIGlmIChkZWNvZGVyLmRlY29kZShyZXF1ZXN0
LnR5cGUpICYmIGRlY29kZXIuZGVjb2RlKHJlcXVlc3QuYXVkaW9Db25zdHJhaW50cykgJiYgZGVj
b2Rlci5kZWNvZGUocmVxdWVzdC52aWRlb0NvbnN0cmFpbnRzKSAmJiBkZWNvZGVyLmRlY29kZShy
ZXF1ZXN0LmlzVXNlckdlc3R1cmVQcml2aWxlZGdlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmlu
ZGV4IDFlOTUxNDE2MDAzMzY0ZWRhYmEwNGViY2I1ZjdiYWZlNzRiMWU3ZDIuLmRmZTk2ZTEyOTlk
MGUyZDNkODlmNTY0YTM0MDAwNzc1NDU0MWJhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBA
IC0zNSwxOCArMzUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJUQ0RhdGFD
aGFubmVsSW5pdCB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gb3JkZXJlZDsKLSAgICBPcHRpb25hbDx1
bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRpbWU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQg
c2hvcnQ+IG1heFJldHJhbnNtaXRzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3JkZXJlZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhQYWNrZXRMaWZlVGltZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhSZXRyYW5zbWl0czsKICAgICBTdHJp
bmcgcHJvdG9jb2w7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbmVnb3RpYXRlZDsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZCBzaG9ydD4gaWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBuZWdvdGlhdGVk
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IGlkOwogICAgIFJUQ1ByaW9yaXR5
VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07CiAKICAgICBSVENEYXRhQ2hh
bm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENE
YXRhQ2hhbm5lbEluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUgUlRDRGF0YUNo
YW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAgLTYx
LDE5ICs2MSwxOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFJUQ0RhdGFDaGFubmVs
SW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBvcmRl
cmVkIDw8IG1heFBhY2tldExpZmVUaW1lIDw8IG1heFJldHJhbnNtaXRzIDw8IHByb3RvY29sIDw8
IG5lZ290aWF0ZWQgPDwgaWQgPDwgcHJpb3JpdHk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gUlRDRGF0YUNoYW5uZWxJbml0OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8UlRDRGF0YUNoYW5uZWxJbml0PiBSVENEYXRhQ2hhbm5lbEluaXQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGJvb2w+IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9y
ZGVyZWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9y
dD4gbWF4UGFja2V0TGlmZVRpbWU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4g
bWF4UGFja2V0TGlmZVRpbWU7CiAgICAgZGVjb2RlciA+PiBtYXhQYWNrZXRMaWZlVGltZTsKICAg
ICBpZiAoIW1heFBhY2tldExpZmVUaW1lKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzOwogICAgIGRlY29kZXIgPj4gbWF4UmV0cmFu
c21pdHM7CiAgICAgaWYgKCFtYXhSZXRyYW5zbWl0cykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTgyLDE3ICs4MiwxNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxSVENEYXRh
Q2hhbm5lbEluaXQ+IFJUQ0RhdGFDaGFubmVsSW5pdDo6ZGVjb2RlKAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gbmVnb3RpYXRlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZ290aWF0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBuZWdvdGlhdGVkOwogICAgIGlmICghbmVnb3RpYXRlZCkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKICAgICBkZWNvZGVyID4+IGlkOwogICAgIGlm
ICghaWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxSVENQcmlvcml0eVR5
cGU+IHByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UlRDUHJpb3JpdHlUeXBlPiBwcmlvcml0
eTsKICAgICBkZWNvZGVyID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3JpdHkpCiAgICAgICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCmluZGV4IGY2M2Q4ZjY2MGRl
NDI1ZTk1OWU3MzI2NzBkNzk3MzU5ZTU2NjE5ODQuLmYwNzA0MDM1NmZiMmI2NmI5MGRjNzM0YjNi
YzQ0NmY3MDllNDZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCkBAIC0zNiw3ICsz
Niw3IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgewogICAgIFJUQ0RhdGFDaGFu
bmVsTG9jYWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ2LDE0ICs0NiwxNCBAQCBpbmxpbmUgdm9p
ZCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotaW5saW5lIE9wdGlvbmFsPFJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllcj4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
cj4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8UlRDRGF0YUNo
YW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9u
YWw8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gY2hhbm5lbElkZW50aWZpZXI7CiAgICAgaWYgKCFjaGFubmVsSWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1J0cENvZGVjQ2FwYWJpbGl0eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKaW5k
ZXggZGE5ZDRkNzk5ZTAzMzMyNTM1YjQ5N2NiZGY5MTNlNTY3OWM2Y2E2MS4uZDE1YTQ1NjViODQz
MWUzOWM0NDA0YjQxZjY4Mzc4ODNkY2IxNjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJUQ1J0cENvZGVjQ2Fw
YWJpbGl0eSB7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwogICAgIHVuc2lnbmVkIGxvbmcgY2xvY2tS
YXRlIHsgMCB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjaGFubmVsczsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjaGFubmVsczsKICAgICBTdHJpbmcgc2RwRm10
cExpbmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IGYzYTNh
NmJmOTc2Y2I5YzE2NzA4YTY5ZmRiODEwMjE3YWQ5ZWQyNWQuLjY4YmMwZjdjOTFlYjBmNTI2MjBh
NzkyMTdjMjQxMTQxYTdlYTRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gd2VicnRjOjpPYnNlcnZlckludGVy
ZmFjZSBBUEkKICAgICB2b2lkIE9uQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4gbV92aWRl
b1RyYWNrOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDk0MTZkZDgzZjM0ODZkNzcxNjlmMTdkNjZiMjYyYWZhYmYwYWM5MGEuLjIwMzVjNjc1
ZWY3MmM3MWUyNWQ3MGM4YzEzYTIyMDk0YjU3MjFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVG
YWlsZWQoKQogICAgIH0pOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxk
b3VibGU+KQorYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPikKIHsKICAgICAvLyBUaGUgc2l6ZSBhbmQgZnJhbWUgcmF0ZSBhcmUgd2l0aGluIHRo
ZSBjYXBhYmlsaXR5IGxpbWl0cywgc28gdGhleSBhcmUgc3VwcG9ydGVkLgogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQsIE9wdGlvbmFsPElu
dENvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQsIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+
IGZyYW1lUmF0ZUNvbnN0cmFpbnQsIFN0cmluZyYgYmFkQ29uc3RyYWludCwgZG91YmxlJiBkaXN0
YW5jZSkKK2Jvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50LCBzdGQ6Om9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQsIHN0ZDo6b3B0aW9uYWw8RG91Ymxl
Q29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCwgU3RyaW5nJiBiYWRDb25zdHJhaW50LCBk
b3VibGUmIGRpc3RhbmNlKQogewogICAgIGlmICghd2lkdGhDb25zdHJhaW50ICYmICFoZWlnaHRD
b25zdHJhaW50ICYmICFmcmFtZVJhdGVDb25zdHJhaW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTMxMSw3ICszMTEsNyBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogCiAgICAgZGlzdGFu
Y2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aDsKICAgICBpZiAo
d2lkdGhDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c1dpZHRoKCkpIHsKICAgICAg
ICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9IGZpdG5lc3NEaXN0YW5jZSgqd2lkdGhDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3RyYWludERpc3RhbmNlKSkgewpA
QCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlKE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4g
aGVpZ2h0OwogICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0
c0hlaWdodCgpKSB7CiAgICAgICAgIGRvdWJsZSBjb25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNz
RGlzdGFuY2UoKmhlaWdodENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoc3RkOjppc2luZihjb25z
dHJhaW50RGlzdGFuY2UpKSB7CkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4g
d2lkdGgKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CiAgICAgaWYgKGZyYW1lUmF0
ZUNvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpIHsKICAgICAg
ICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9IGZpdG5lc3NEaXN0YW5jZSgqZnJhbWVSYXRl
Q29uc3RyYWludCk7CiAgICAgICAgIGlmIChzdGQ6OmlzaW5mKGNvbnN0cmFpbnREaXN0YW5jZSkp
IHsKQEAgLTUxMiw3ICs1MTIsNyBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVz
c0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVU
eXBlIGN1cnJlbnQsIE9wdGlvbmFsPFZlY3RvcjxWYWx1ZVR5cGU+PiBkaXNjcmV0ZUNhcGFiaWxp
dHlWYWx1ZXMsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1h
eCwgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlLCB2b2lkIChSZWFsdGltZU1lZGlhU291cmNl
OjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVU
eXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRlQ2Fw
YWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFiaWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBhYmls
aXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQogewogICAgIGlmIChkaXNjcmV0ZUNhcGFiaWxp
dHlWYWx1ZXMpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN0cmFpbnQudmFsdWVGb3JEaXNj
cmV0ZUNhcGFiaWxpdHlWYWx1ZXMoY3VycmVudCwgKmRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyk7
CkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlOdW1lcmljQ29uc3RyYWludChj
b25zdCBOdW1lcmljQ29uc3RyYWludDxWYWx1ZVR5cGU+JiBjb25zdHJhaW4KICAgICAgICAgKHNv
dXJjZS4qYXBwbGllcikodmFsdWUpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRp
b25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAg
ICBJbnRTaXplIHNpemU7CiAgICAgaWYgKHdpZHRoKQpAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25z
dHJhaW50JiBjb25zdHJhaW50CiAKICAgICBhdXRvJiBjYXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBh
YmlsaXRpZXMoKTsKIAotICAgIE9wdGlvbmFsPGludD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IHdpZHRoOwogICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQg
PSBjb25zdHJhaW50cy5maW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKSkgewogICAgICAg
ICBBU1NFUlQoY29uc3RyYWludC0+aXNJbnQoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMu
c3VwcG9ydHNXaWR0aCgpKSB7CkBAIC05MDAsNyArOTAwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0
cmFpbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6SGVp
Z2h0KSkgewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNJbnQoKSk7CiAgICAgICAgIGlm
IChjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQoKSkgewpAQCAtOTA5LDcgKzkwOSw3IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRD
b25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxk
b3VibGU+IGZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwog
ICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50cy5m
aW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZSkpIHsKICAgICAgICAgQVNTRVJUKGNv
bnN0cmFpbnQtPmlzRG91YmxlKCkpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRz
RnJhbWVSYXRlKCkpIHsKQEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWlu
dAogICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsKIH0KIAotT3B0aW9uYWw8UmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXBwbHlDb25zdHJhaW50c0Vycm9yPiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQorc3RkOjpv
cHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlOjpBcHBseUNvbnN0cmFpbnRzRXJyb3I+IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzLmlzVmFsaWQpOwogCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUo
aW50IHJhdGUpCiAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsKIH0KIAotT3B0aW9uYWw8VmVj
dG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3Jl
dGVTYW1wbGVSYXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAg
LTEwNzIsNyArMTA3Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6
ZShpbnQgc2l6ZSkKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVNpemUpOwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVTaXplcygpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGltZU1lZGlhU291cmNlOjpkaXNj
cmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCmluZGV4IDdjZGEzMzJkZDcyMDAyNjQ3ZmFjMDA4OWM1MGRhMDk0MmJm
OGJlM2EuLjYxMjkyNmM1MWMwY2FjOWNmNGMxOTNkODQ4MTNmYWIzYWQ4ZTVjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgKQEAgLTE2NiwxMSArMTY2LDExIEBAIHB1YmxpYzoKIAogICAgIGludCBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgdm9pZCBzZXRTYW1w
bGVSYXRlKGludCk7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVT
YW1wbGVSYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50
Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0OwogCiAgICAgaW50IHNhbXBsZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7IH0KICAgICB2b2lkIHNldFNhbXBsZVNpemUoaW50
KTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0
ZVNhbXBsZVNpemVzKCkgY29uc3Q7CiAKICAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KICAgICB2b2lkIHNldEVjaG9DYW5jZWxs
YXRpb24oYm9vbCk7CkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcg
YmFkQ29uc3RyYWludDsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgfTsKLSAgICB1c2lu
ZyBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8QXBwbHlDb25zdHJhaW50c0Vycm9yPiYmKT47CisgICAgdXNpbmcgQXBwbHlDb25zdHJhaW50
c0hhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXBwbHlDb25z
dHJhaW50c0Vycm9yPiYmKT47CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYpOwotICAgIE9w
dGlvbmFsPEFwcGx5Q29uc3RyYWludHNFcnJvcj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJik7CisgICAgc3RkOjpvcHRpb25hbDxBcHBseUNvbnN0cmFpbnRzRXJyb3I+
IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogCiAgICAgYm9vbCBz
dXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKICAg
ICBib29sIHN1cHBvcnRzQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKTsKQEAgLTIz
MSwxMCArMjMxLDEwIEBAIHByb3RlY3RlZDoKICAgICBkb3VibGUgZml0bmVzc0Rpc3RhbmNlKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50KGNvbnN0IE1l
ZGlhQ29uc3RyYWludCYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50Jik7Ci0gICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9u
YWw8SW50Q29uc3RyYWludD4gd2lkdGgsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwg
T3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4sIFN0cmluZyYsIGRvdWJsZSYgZml0bmVzc0Rpc3Rh
bmNlKTsKKyAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPElu
dENvbnN0cmFpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiwgU3RyaW5nJiwgZG91YmxlJiBmaXRuZXNz
RGlzdGFuY2UpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShP
cHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91Ymxl
Pik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pOworICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAog
ICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKICAgICB2b2lkIG5vdGlmeU11dGVkQ2hh
bmdlKGJvb2wgbXV0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4
IGIyNjhiMmI1NTI3ZGZlMjUyZTYxZWY0ZTJlOGYzMDZhOTczYjcxMDMuLjAzMWQ1YTZkOGJiYzM5
ZWNhMGI5YzEyMmRjY2IxMTZmMjM1ZjY4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlOjp1cGRhdGVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdAogICAg
IGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoeyBtaW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJh
bWVSYXRlIH0pOwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0
c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1l
UmF0ZSkKIHsKICAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMTIsNyArMjEyLDcgQEAgYm9vbCBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZTo6cHJlc2V0U3VwcG9ydHNGcmFtZVJhdGUoUmVmUHRyPFZpZGVvUHJlc2V0PiBw
cmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnN1cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50
PiBoZWlnaHQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgSW50U2l6ZSYpPiYmIGZ1bmN0aW9u
KQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNDYXB0dXJlU2l6ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgSW50U2l6ZSYpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IHdpZHRoLnZhbHVlKCks
IGhlaWdodC52YWx1ZSgpIH0pOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbmxpbmUgZG91
YmxlIGZyYW1lUmF0ZUZyb21QcmVzZXQoY29uc3QgVmlkZW9QcmVzZXQmIHByZXNldCwgZG91Ymxl
IGN1cnJlCiAgICAgcmV0dXJuIGN1cnJlbnRGcmFtZVJhdGUgPj0gbWluRnJhbWVSYXRlICYmIGN1
cnJlbnRGcmFtZVJhdGUgPD0gbWF4RnJhbWVSYXRlID8gY3VycmVudEZyYW1lUmF0ZSA6IG1heEZy
YW1lUmF0ZTsKIH0KIAotT3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1
cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFN1cHBv
cnRlZFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRXaWR0aCwgT3B0aW9u
YWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gcmVxdWVzdGVkRnJhbWVS
YXRlKQorc3RkOjpvcHRpb25hbDxSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6Q2FwdHVyZVNp
emVBbmRGcmFtZVJhdGU+IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U3VwcG9ydGVk
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gcmVxdWVzdGVkV2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXF1
ZXN0ZWRGcmFtZVJhdGUpCiB7CiAgICAgaWYgKCFyZXF1ZXN0ZWRXaWR0aCAmJiAhcmVxdWVzdGVk
SGVpZ2h0ICYmICFyZXF1ZXN0ZWRGcmFtZVJhdGUpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0z
NjEsNyArMzYxLDcgQEAgT3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1
cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvQ2FwdHUKICAgICByZXR1cm4gQ2FwdHVy
ZVNpemVBbmRGcmFtZVJhdGUgeyBXVEZNb3ZlKHJlc2l6ZVByZXNldCksIHJlc2l6ZVNpemUsIGNh
cHR1cmVGcmFtZVJhdGUgfTsKIH0KIAotdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhl
aWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0
ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCBTaXpl
QW5kRnJhbWVSYXRlIHsgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlIH0pOwogCkBAIC00MDMsNyAr
NDAzLDcgQEAgdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNh
bXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW0KICAgICB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShzYW1wbGUpOwogfQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpjbGllbnRV
cGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+
IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IFdlIG9ubHkgY2hhbmdlIHNldHRpbmdz
IGlmIGNhcHR1cmUgcmVzb2x1dGlvbiBpcyBiZWxvdyByZXF1ZXN0ZWQgb25lLiBXZSBzaG91bGQg
Z2V0IHRoZSBiZXN0IHByZXNldCBmb3IgYWxsIGNsaWVudHMuCiAgICAgYXV0byYgc2V0dGluZ3Mg
PSB0aGlzLT5zZXR0aW5ncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXgg
Mjc3MjE5ZTFlYTM2ZjA0MTFhMWEzZTY2N2EwNWMyNGNlNzBiMzg3NS4uZDAzNGE4MDM1MDk1NDMx
OTJlY2E4NjAwNTE5ZWJkY2UyMGUyYzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAg
IHZpcnR1YWwgflJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKCk7CiAKLSAgICB2b2lkIGNsaWVu
dFVwZGF0ZWRTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGlu
dD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSk7CisgICAgdm9pZCBjbGllbnRV
cGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0
aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpOwogCi0g
ICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0
aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pIG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQogCkBAIC01NSw3ICs1NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNhbHQpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9Qcm9kdWNl
RGF0YSgpOwotICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRo
LCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JikgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJhdGVXaXRoUHJlc2V0KGRvdWJsZSwgUmVm
UHRyPFZpZGVvUHJlc2V0PikgeyB9OwpAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgICAg
ICBJbnRTaXplIHJlcXVlc3RlZFNpemU7CiAgICAgICAgIGRvdWJsZSByZXF1ZXN0ZWRGcmFtZVJh
dGUgeyAwIH07CiAgICAgfTsKLSAgICBib29sIHN1cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9uYWw8
aW50PiwgT3B0aW9uYWw8aW50PiwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBJbnRTaXplJik+
JiYpOwotICAgIE9wdGlvbmFsPENhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVk
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgYm9vbCBzdXBwb3J0c0NhcHR1cmVTaXplKHN0ZDo6
b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IEludFNpemUmKT4mJik7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlU2l6ZUFuZEZyYW1l
UmF0ZT4gYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwog
ICAgIGJvb2wgcHJlc2V0U3VwcG9ydHNGcmFtZVJhdGUoUmVmUHRyPFZpZGVvUHJlc2V0PiwgZG91
YmxlKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtOTMsOSArOTMsOSBAQCBwcml2
YXRlOgogfTsKIAogc3RydWN0IFNpemVBbmRGcmFtZVJhdGUgewotICAgIE9wdGlvbmFsPGludD4g
d2lkdGg7Ci0gICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBm
cmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKIAog
ICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b0pTT05PYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggZDE2NmM4YmY1
ZmU5ODQwMjc2YTJhODg0N2I3NjdkNTQwY2ViNDdkOS4uODZhOWJlMTVmMDE2NGE0ZTZmODNjNWIx
NmE1ZGY5ZTM2NmNiMWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTczLDEyICs3Mywx
MiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKICAgICBt
X3NvdXJjZS0+c3RvcCgpOwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCitib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7
CiAgICAgcmV0dXJuIG1fc291cmNlLT5zdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhl
aWdodCwgZnJhbWVSYXRlKTsKIH0KIAotdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXpl
QW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBP
cHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3ZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgaWYg
KCF3aWR0aCAmJiAhaGVpZ2h0KSB7CiAgICAgICAgIHdpZHRoID0gc2l6ZSgpLndpZHRoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZp
ZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZVZpZGVvU291cmNlLmgKaW5kZXggMDYyYWE4ZmI1ZDhlODgzY2UzM2FiNzVlMWQyYzIxMDdhNzY4
YzZjNC4uM2UxOGNlNWZmNTc1OGEyZDA2Njc1YzJiZjk3ZTY2M2Y1OTlkZTU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2UKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8
ZG91YmxlPiBmcmFtZVJhdGUpIGZpbmFsOwotICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShP
cHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGUpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0
ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkgZmluYWw7CisgICAgdm9pZCBzZXRTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkgZmluYWw7CiAgICAgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IGNsb25lKCkgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0VG9FbmQoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIGNhbGxpbmdPYnNlcnZlcikgZmluYWw7CiAgICAg
dm9pZCBzdG9wQmVpbmdPYnNlcnZlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKaW5kZXggYTg0OWM0YzZlYWFhMjllZGMw
NGYwMTQ5NzFlOGUzZDlkMGQ5MTkxZC4uZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdh
OGIwYThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
VmlkZW9QcmVzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9W
aWRlb1ByZXNldC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBGcmFtZVJhdGVSYW5nZSB7CiAg
ICAgZG91YmxlIG1heGltdW07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUxLDE0ICs1
MSwxNCBAQCB2b2lkIEZyYW1lUmF0ZVJhbmdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGcmFtZVJhdGVSYW5n
ZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVt
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBt
YXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtOwogICAgIGRlY29kZXIg
Pj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBWaWRlb1ByZXNldERhdGEgewogICAgIFZlY3Rv
cjxGcmFtZVJhdGVSYW5nZT4gZnJhbWVSYXRlUmFuZ2VzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9QcmVzZXREYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTgyLDE0ICs4MiwxNCBAQCB2b2lkIFZpZGVvUHJlc2V0RGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8VmlkZW9QcmVzZXREYXRhPiBWaWRlb1ByZXNldERhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IFZpZGVvUHJlc2V0RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwog
ICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+IGZyYW1lUmF0ZVJhbmdlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+IGZyYW1lUmF0ZVJhbmdlczsKICAgICBkZWNv
ZGVyID4+IGZyYW1lUmF0ZVJhbmdlczsKICAgICBpZiAoIWZyYW1lUmF0ZVJhbmdlcykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCAzNTIwZDVjMzgxNmE4YTFiM2U0MzYyOWRiYzczMjQ1
OGIwYWJiZDQ4Li43YzQyZmY5YmI1MDczNzBkOGQyNTBlMWZkN2IwOGFkNmEyODhlYTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC00
OSw4ICs0OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3Zl
cnJpZGU7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZTsg
fQogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
PiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVu
dFNldHRpbmdzOwogCiBwcml2YXRlOgogICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCmluZGV4IDA4NWJiMDc5MDM0MTgzNzU5YzI5NGJjNWM1NjBmZWJkOTcwMTRlNzEuLjNm
OWRkNThhOTBmOTdlOGFlM2IwM2UzMmJkM2Y0YjUyZWEzMzhkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkKICAgICAgICAgZ3N0X2RldmljZV9tb25pdG9yX3N0b3AobV9kZXZpY2VN
b25pdG9yLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0
cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6OmdzdHJlYW1lckRldmljZVdpdGhVSUQoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4g
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6OmdzdHJlYW1lckRldmljZVdpdGhVSUQoY29u
c3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKICAgICBjYXB0dXJlRGV2aWNlcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGE2
MDM2M2IzYTEwYWM3NzdjOGM0Y2FkZjJhY2IzYjVlODNlMTU0NzguLjhjZTFiYTk0YjdhMDZjMjhl
MmNkNmI4MGViZGZiZGY5NTkxMWRlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyIDogcHVibGljIENh
cHR1cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB+R1N0cmVhbWVyQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKTsKLSAgICBPcHRpb25hbDxHU3RyZWFtZXJDYXB0dXJlRGV2aWNlPiBnc3RyZWFt
ZXJEZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8R1N0cmVh
bWVyQ2FwdHVyZURldmljZT4gZ3N0cmVhbWVyRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmKTsK
IAogICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5h
bDsKICAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaApp
bmRleCBhNjU1MDRkOWI4NjA2MzNjNTMxMWM5NGIyYmI3NWM5MjMwMGI1ZWFjLi4yZjA3NGZhZjE0
NDM1NDAxMGJjYWI3ZTU0Y2RiOWVjMDVmMWQyOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC01Myw4ICs1Myw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygpIG92ZXJyaWRlOwogCiAKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1
cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAg
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1l
ci5oCmluZGV4IDM2N2EwZjg2ZGQwODdlZDY1M2RmOGFhNmIwN2RkZTg5NmY4MjIyNjcuLmRlNTU2
MTNiZjgyZjRlMGRhNmRjNzc3MWEzNTEwYzI3M2U2MDNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5oCkBAIC00OCw3ICs0
OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faXNJbnRlcnJ1cHRlZDsgfTsKICAgICB2b2lkIHNldEludGVycnVwdGVkRm9yVGVzdGlu
Zyhib29sKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+IG1fc3RyZWFtRm9ybWF0OworICAgIHN0ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9zdHJlYW1Gb3JtYXQ7CiAgICAgVmVjdG9yPGZsb2F0PiBtX2Jp
cEJvcEJ1ZmZlcjsKICAgICB1aW50MzJfdCBtX21heGltaXVtRnJhbWVDb3VudDsKICAgICB1aW50
NjRfdCBtX3NhbXBsZXNFbWl0dGVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggN2FiOTUwZDY1ZDVmODA2NjZmMWY0MGQz
ZDA4Njc5ZjNhODFjMDg1OC4uMzc0M2ZkODJjZjI1ZmE3ZjgwYzJhM2UzOGI4ZWZjMTIzODdjNTU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWw7CiAgICAgdm9pZCBjb21wdXRlQ2FwdHVyZURl
dmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIHNwZWFrZXJEZXZpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zcGVh
a2VyRGV2aWNlczsgfQotICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYp
OworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7CiAKLSAg
ICBPcHRpb25hbDxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRldmlj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRldmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7
CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKCk7CiAKQEAgLTcw
LDkgKzcwLDkgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgQXVkaW9TZXNzaW9uU3RhdGUg
eyBOb3ROZWVkZWQsIEluYWN0aXZlLCBBY3RpdmUgfTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxD
YXB0dXJlRGV2aWNlPj4gbV9kZXZpY2VzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENhcHR1
cmVEZXZpY2U+PiBtX2RldmljZXM7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fc3BlYWtl
ckRldmljZXM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZT4+IG1fYXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPj4gbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlczsKICAgICBSZXRhaW5QdHI8V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0
ZW5lcj4gbV9saXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8QVZBdWRpb1Nlc3Npb24+IG1fYXVkaW9T
ZXNzaW9uOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdXBkYXRlRGV2aWNlU3RhdGVR
dWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggYWU2YWQ4ZmE1MGEzOGJiM2IwN2Y5YTZkYjQyM2E5MTJkYmQyMTdjZC4uYzcw
Nzk5N2M4M2FjNjM1NTU4MTMxNDIyNTVjYjUzOTJlYzU3MTlmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEyMiw3ICsxMjIs
NyBAQCBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzKAogICAgIHJldHVybiBtX2RldmljZXMudmFsdWUo
KTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpOwogICAgIGZvciAoYXV0byYg
ZGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1
cmVEZXZpY2VXaXRoUGVyCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjphdWRpb1Nlc3Npb25EZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQp
CitzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9TZXNzaW9uRGV2aWNlV2l0aFVJRChjb25zdCBT
dHJpbmcmIGRldmljZUlEKQogewogICAgIGlmICghbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
cykKICAgICAgICAgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA1Y2NlOWYx
YTU4ZjEyNjRhMWY5YmYxZWRlYjlkMWMyNDljMjFlYzNhLi5jNjQ0ODFkZDE5NGRkN2Q5OTI2Mzgx
OWQ2OGFkMDg4ZWY4MjQ0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbWFwcGVkQnVmZmVyLT5zaXplKCk7
IH0KIAogICAgIGNvbnN0IEdzdEJ1ZmZlciogZ2V0QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZ3N0
X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsgfQotICAgIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gZ2V0VmlkZW9SZXNvbHV0
aW9uRnJvbUNhcHMoZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSkpOyB9CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0
dXJuIGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1w
bGUuZ2V0KCkpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgR1N0cmVhbWVyRW5jb2RlZEltYWdlQnVm
ZmVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggZTg2NGNkM2U3MjlkNDFiZDM1MGFkMTYxNDFhOGRmM2M0MjY5N2I4NC4uN2JhN2YyMmQ3MjBj
NWM5NjMwNGU5M2JjNzE4ODlmYTFmYjZhOTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6
cHJlcGFyZUNlcnRpZmljYXRlR2VuZXJhdG9yKEZ1bmN0aW9uPHZvaWQocnRjOjpSVENDZXJ0aWYK
ICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxjcmlja2V0OjpNZWRpYVR5cGU+
IHR5cGVGcm9tS2luZChjb25zdCBTdHJpbmcmIGtpbmQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0
aW9uYWw8Y3JpY2tldDo6TWVkaWFUeXBlPiB0eXBlRnJvbUtpbmQoY29uc3QgU3RyaW5nJiBraW5k
KQogewogICAgIGlmIChraW5kID09ICJhdWRpbyJfcykKICAgICAgICAgcmV0dXJuIGNyaWNrZXQ6
Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTzsKQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyBmcm9tU3RkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLmxlbmd0aCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDx1aW50MTZfdD4gdG9DaGFubmVscyhhYnNsOjpv
cHRpb25hbDxpbnQ+IG51bUNoYW5uZWxzKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiB0b0NoYW5uZWxzKGFic2w6Om9wdGlvbmFsPGludD4gbnVtQ2hhbm5lbHMpCiB7CiAg
ICAgaWYgKCFudW1DaGFubmVscykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQxNCw3ICs0MTQs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cENhcGFiaWxpdGllcyB0b1JUQ1J0cENhcGFiaWxpdGll
cyhjb25zdCB3ZWJydGM6OlJ0cENhcGFiaWxpdAogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9
CiAKLU9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gTGliV2ViUlRDUHJvdmlkZXI6OnJlY2Vp
dmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRw
Q2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRlcjo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMoY29u
c3QgU3RyaW5nJiBraW5kKQogewogICAgIGF1dG8gbWVkaWFUeXBlID0gdHlwZUZyb21LaW5kKGtp
bmQpOwogICAgIGlmICghbWVkaWFUeXBlKQpAQCAtNDI3LDcgKzQyNyw3IEBAIE9wdGlvbmFsPFJU
Q1J0cENhcGFiaWxpdGllcz4gTGliV2ViUlRDUHJvdmlkZXI6OnJlY2VpdmVyQ2FwYWJpbGl0aWVz
KGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHRvUlRDUnRwQ2FwYWJpbGl0aWVzKGZhY3RvcnktPkdl
dFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKCptZWRpYVR5cGUpKTsKIH0KIAotT3B0aW9uYWw8UlRD
UnRwQ2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRlcjo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNv
bnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBMaWJX
ZWJSVENQcm92aWRlcjo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKIHsK
ICAgICBhdXRvIG1lZGlhVHlwZSA9IHR5cGVGcm9tS2luZChraW5kKTsKICAgICBpZiAoIW1lZGlh
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNTA1YWM3ZjIwMGY5
MTViMWE5YzZlODRkNTYxY2E0MjBjMGUzMzUwNi4uMjM1Njc4OGQ1MWZlZDRiNWZmYTdiMGMzOTNl
MzQ4ZmE0NWZiODFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTEy
NCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGJhY2sgaXMgZXhlY3V0ZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KICAgICB2b2lkIHByZXBhcmVDZXJ0aWZpY2F0ZUdlbmVyYXRvcihG
dW5jdGlvbjx2b2lkKHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImKT4mJik7CiAKLSAgICBP
cHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IHJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0
cmluZyYga2luZCk7Ci0gICAgT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBzZW5kZXJDYXBh
YmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENh
cGFiaWxpdGllcz4gcmVjZWl2ZXJDYXBhYmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gc2VuZGVyQ2FwYWJpbGl0aWVzKGNv
bnN0IFN0cmluZyYga2luZCk7CiAKICAgICB2b2lkIGNsZWFyRmFjdG9yeSgpIHsgbV9mYWN0b3J5
ID0gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDBlNDFjYzQx
M2Y4NDNmYTAzOThhMWExNzI0NDBkMWUyNjc3YjI3ZTQuLjNjNjYyMzNmNTk0MTU5ZWQ1MWY3N2I2
MmQ0ZGEzMjdhY2I5ZjcwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0xMjYs
OCArMTI2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsK
ICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3NhbXBsZVJvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKIAotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAgT3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRp
b25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmls
aXRpZXM7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVy
PiBtX29iamNPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNz
aW9uOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2U+IG1fZGV2aWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4IDYzOTYwYzQ1N2I1YTkzMmY5ZDc5ZTNiYTFj
ZWNlYTdkMTExNWQ1NDkuLjZlMjZjOGZhNGVjZDMwYWMxZTUyZmVjMzhhZjU3ZDBlMzNkOWJjMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCBzdGF0aWMgYm9vbCBnZXREZXZpY2VJbmZvKHVpbnQzMl90IGRldmljZUlELCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIFN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25h
bDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUo
dWludDMyX3QgZGV2aWNlSUQsIERldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElE
KQorc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSUQsIERldmljZVR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBncm91cElEKQogewogICAgIEFTU0VSVCh0eXBlID09IENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6Ok1pY3JvcGhvbmUgfHwgdHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTcGVha2VyKTsKICAgICBTdHJpbmcgcGVyc2lzdGVudElEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlLmgKaW5kZXggY2RlOTFjMTg0NjEwMTQ1OGIxZTFkZWZlYjRiNzMxMmU0YTE1MzI5
Ni4uMjAzNDQ3OWY0ZTczYTE3OTYwNzFmZjFhODdhODFkYTc1Njg2ZjIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2aWNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4g
Y3JlYXRlKHVpbnQzMl90LCBEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmIGdyb3VwSUQpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50
MzJfdCwgRGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElEKTsKICAgICB2aXJ0dWFsIH5D
b3JlQXVkaW9DYXB0dXJlRGV2aWNlKCkgPSBkZWZhdWx0OwogCiAgICAgdWludDMyX3QgZGV2aWNl
SUQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBlZWI3MDA4ZjViMDk3N2ViNjMyMDE3YTNm
YmMwODE2N2FjZjljZTBmLi40ZGUwMGM5MDU3NThkMjQ2NWZhYjNhZTVlMTkwZjI1NzhiOThiYmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMoKQogICAgIHJldHVybiBtX2NhcHR1cmVE
ZXZpY2VzOwogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGRldmljZUlEKQogewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKTsKICAgICBmb3IgKGF1dG8mIGRldmlj
ZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKQEAgLTI0OCw3ICsyNDgsNyBAQCBWZWN0b3I8Q29yZUF1
ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVk
aW9DYXB0dXJlRAogICAgIHJldHVybiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzOwogfQogCi1P
cHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3Rk
OjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQog
ewogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKSkgewog
ICAgICAgICBpZiAoZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09IGRldmljZUlEICYmIGRldmljZS5l
bmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmlu
ZGV4IDZhYWMxNTQ1NmM5MGE2YWJkOTFhNDMyZTg3ZDhjY2ZjMjk5YTI0YTYuLmIzMjA5NjUwYzA1
YTQ0MmI5MmQyOGNiMzRmNjdhM2NiNGY3MDFlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXImIHNpbmdsZXRvbigpOwogCiAgICAgY29u
c3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsOwotICAgIE9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8
Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBPcHRpb25hbDxDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlPiBjb3JlQXVkaW9EZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYpOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gY29yZUF1ZGlvRGV2aWNlV2l0
aFVJRChjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHNw
ZWFrZXJEZXZpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zcGVha2VyRGV2aWNlczsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDQyZTE4NDU2NjJm
NmIyMDFlNWNhYjY5YjlkMDhmMTExMzdiNzEzMmEuLjAzZjNlNjJhMjYzN2MzZTkwMWJhZjY5NGQz
YzUyNjVlZmE3NGFlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pb1VuaXRTdGFydGVkIHsgZmFs
c2UgfTsKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5n
czsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICB2b2lkIGNoZWNrVGltZXN0YW1wcyhjb25zdCBB
dWRpb1RpbWVTdGFtcCYsIHVpbnQ2NF90LCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmgKaW5kZXggNGI1NTVkNGM3Y2UzM2EwNTNkMjQzN2MzNmRlYzk5MWYxNmQyODU0Yy4u
NWVjM2Q4ZWM5YjdlZTNlYjU1MWQwYzA5ZWE5MzEwNWE2ZDg3OGIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxheVNhbXBsZXMoU2Vjb25kcykgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcnJ1cHRlZEZvclRl
c3RpbmcoYm9vbCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVT
YW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAs
IDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50
Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAx
NjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9CiAKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7CkBAIC05
NCw4ICs5NCw4IEBAIHByaXZhdGU6CiAKICAgICB1aW50MzJfdCBtX2NhcHR1cmVEZXZpY2VJRCB7
IDAgfTsKIAotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1f
Y2FwYWJpbGl0aWVzOwotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4g
bV9jdXJyZW50U2V0dGluZ3M7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKICAgICBib29sIG1faXNS
ZWFkeVRvU3RhcnQgeyBmYWxzZSB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAKaW5kZXggZTIwOWMxNjk5YmFjMzkyMjczZTNiYWQ3MGVmNjNhZGZmYWMx
ODEzYy4uMmZlZjhiYjE3MzdjZjllMTVlZTJlMDM1N2QyOGViMjAyZjJmMjEyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
TWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZv
aWQgRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnVwZGF0ZVdpbmRvd0NhcHR1cmVEZXZpY2Vz
KCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3Ry
aW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0
IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBTY3Jl
ZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KGRldmljZUlEKTsKQEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlz
cGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICNl
bmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJD
b2NvYTo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBXaW5kb3dEaXNw
bGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmlj
ZUlEKTsKQEAgLTkyLDcgKzkyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICNlbmRpZgog
fQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6
Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGlkKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNw
bGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQogewogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaAppbmRleCBlNjdjOGVlNDgy
ZTVlM2I2ZmFiOTcxZGQ5NTM2MTc4OWI0MmMwODBjLi4yOGZmZjQwYTc5NzEzNzA2OTY2OTA0ODU3
NDMzMmQ4ZWIyMmVmM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2Eu
aApAQCAtNDUsOSArNDUsOSBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgVmVjdG9yPENhcHR1cmVE
ZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZSwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7Ci0gICAg
T3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0
dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJik7CiAKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2Vz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IDBiNmIyNDRh
NDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMuLjdkZWY2Y2YxN2JjOGQ1ODFjM2U2Yjkz
YWJhOTE5ZDRjNmEzOGE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
aApAQCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIAog
ICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKLSAgICBPcHRpb25hbDxSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7
CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVu
dFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzOwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7
IE1vbm90b25pY1RpbWU6Om5hbigpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFj
LmgKaW5kZXggYjYwNzllODM2YjhlM2ExYWU5ZTkyNjBmYTIzMDI2YjM2NjY3ZDk5ZS4uODU0Y2Fi
ZDZmOWFkYTYzN2M4MTk2NjMwMjg5NTZhZmFlODdlNmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
U2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjKHVpbnQzMl90KTsKICAgICB+U2NyZWVuRGlzcGxheUNh
cHR1cmVyTWFjKCk7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVu
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2NyZWVuQ2FwdHVyZURl
dmljZXMoVmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCA4ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4
ZjA1NTI4NjMxMmUyLi4yZGNlNTQxY2NmNzgwMmJjYWEzYTM3MTZiNTJhMTA0YmNkMTZhZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAg
c2l6ZV90IENHRGlzcGxheU1vZGVHZXRQaXhlbHNIaWdoKENHRGlzcGxheU1vZGVSZWYpOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4g
dXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPENHRGlyZWN0RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNw
bGF5SUQgZGlzcGxheUlEKQogewogICAgIHVpbnQzMl90IGRpc3BsYXlDb3VudCA9IDA7CiAgICAg
YXV0byBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlMaXN0KDAsIG51bGxwdHIsICZkaXNwbGF5Q291
bnQpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpu
ZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIERpc3BsCiAgICAgbV9j
dXJyZW50RnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1lKTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAgYXV0byBkaXNwbGF5
SUQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKICAgICBpZiAoIWRpc3BsYXlJ
RCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oCmluZGV4IGI2NGVj
N2Y4MTRiMjZiNmJkZjEwMTc4NWJiNGNmY2Y1NDg3NzdjOWIuLjdmYzA3MjVmYmJmYTNmYTZlYjIy
YzdmNGQxYTA5ZWRkYTk1NzRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckNvY29hLmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbG9jazsKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKIAotICAg
IE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwot
ICAgIE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERl
c2NyaXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBt
X291dHB1dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdWRpb0J1ZmZlckxp
c3Q+IG1fYXVkaW9CdWZmZXJMaXN0OwogICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+
IG1fZGF0YVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5oCmluZGV4
IGRlY2I2MmIzODg2YzBlN2U2Njc5OWJiZjk5ZmM3ZmUxMzVjZDlhYWMuLmVmOWY0MjhmYWZmYjlj
MTljY2QyNzhmYWJjYjJjOTdkMGIzYmI5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1
cmVyTWFjLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdpbmRvd0Rp
c3BsYXlDYXB0dXJlck1hYyh1aW50MzJfdCk7CiAgICAgdmlydHVhbCB+V2luZG93RGlzcGxheUNh
cHR1cmVyTWFjKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IHdpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHdpbmRvd0NhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbmRv
d0NhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rp
c3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggNDE4ZjY5MzdkZTZjMTA3YWQ1
ZDhhYmQwNGZkZGE0OTA1YjAxMGI5Zi4uNzhiYmNhZDEzOTk4NjJmNTViOTcwYmU0NzdmMjUxNGM0
ZjM0ODQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC0xMzQs
NyArMTM0LDcgQEAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBX
aW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OmdlbmVyYXRlRnIKICAgICByZXR1cm4gRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSB7IFJldGFpblB0cjxDR0ltYWdlUmVm
PiB7IHdpbmRvd0ltYWdlKCkgfSB9OwogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBXaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KGNvbnN0IFN0cmluZyYgaWRTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFdp
bmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJiBpZFN0cmluZykKIHsKICAgICBhdXRvIHdpbmRvd0lEID0gcGFyc2VJ
bnRlZ2VyPHVpbnQzMl90PihpZFN0cmluZyk7CiAgICAgaWYgKCF3aW5kb3dJRCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwCmluZGV4IGNiZDZhZDJmM2VlZDExYWJlODAyMTIyMzhkY2UzZTAwZjA4YjQzZjQuLjlkNWVm
YzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTQzOAogfQogCi1PcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQog
ewogICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDk5N2QxNTRkZGZm
ODRjZjQ0OGZjODQwMTYwNjgzOTUyOTkyYmVkNTUuLmZlMzI3NTk2YTJmMGRiZTM2ZDFkNjgyZmZi
OTQ0YjI0OTcxYjAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogCkBAIC03Niw3
ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckVycm9yKCk7CiAKICAgICBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICBPcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAg
IFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCmluZGV4IDVm
YTc5YTlhYjUzOGJkNjQ5ZGE0ZTJkNTMyMThkODk4NTQ3MjFjZTYuLjQ2N2Q5MTM5NDQ0M2VmYTI4
MzYzYTg2YThkNTRmZDJjNDQ1ODUzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtNDMsOSArNDMsOSBAQCBzdHJ1Y3QgTW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWljcm9waG9uZVBy
b3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBs
ZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdFNhbXBsZVJhdGUpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtNjMsMTQgKzYzLDE0IEBAIHN0cnVjdCBNb2NrU3BlYWtlclBy
b3BlcnRpZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxNb2NrU3BlYWtlclByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tTcGVha2VyUHJvcGVydGllcz4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQzMl90PiBk
ZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0
U2FtcGxlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBkZWZhdWx0U2FtcGxlUmF0ZTsKICAgICAg
ICAgaWYgKCFkZWZhdWx0U2FtcGxlUmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByZWxhdGVkTWljcm9waG9uZUlkOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVsYXRlZE1pY3JvcGhvbmVJZDsKICAgICAgICAg
ZGVjb2RlciA+PiByZWxhdGVkTWljcm9waG9uZUlkOwogICAgICAgICBpZiAoIXJlbGF0ZWRNaWNy
b3Bob25lSWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTQsMjQgKzk0
LDI0IEBAIHN0cnVjdCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7CiAgICAgfQogCiAgICAgdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1vY2tDYW1lcmFQcm9wZXJ0
aWVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
b2NrQ2FtZXJhUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJhbWVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1
bHRGcmFtZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZhY2luZ01vZGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZh
Y2luZ01vZGU7CiAgICAgICAgIGRlY29kZXIgPj4gZmFjaW5nTW9kZTsKICAgICAgICAgaWYgKCFm
YWNpbmdNb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRhPj4gcHJlc2V0czsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRhPj4gcHJlc2V0czsKICAgICAgICAgZGVjb2Rl
ciA+PiBwcmVzZXRzOwogICAgICAgICBpZiAoIXByZXNldHMpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBm
aWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTEzNSwxOCArMTM1LDE4IEBAIHN0cnVjdCBNb2NrRGlzcGxheVByb3Bl
cnRpZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRp
YyBPcHRpb25hbDxNb2NrRGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tEaXNwbGF5UHJvcGVydGllcz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xv
cjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwogICAgICAgICBkZWNv
ZGVyID4+IGZpbGxDb2xvcjsKICAgICAgICAgaWYgKCFmaWxsQ29sb3IpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRT
aXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRTaXplOwogICAgICAg
ICBkZWNvZGVyID4+IGRlZmF1bHRTaXplOwogICAgICAgICBpZiAoIWRlZmF1bHRTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxNyw5ICsyMTcsOSBAQCBzdHJ1Y3Qg
TW9ja01lZGlhRGV2aWNlIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvcGVy
dGllcywgdHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2
aWNlPiBkZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVy
c2lzdGVudElkLCBTdHJpbmcmJiBsYWJlbCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
TWVkaWFEZXZpY2U+IGRlY29kZU1vY2tNZWRpYURldmljZShEZWNvZGVyJiBkZWNvZGVyLCBTdHJp
bmcmJiBwZXJzaXN0ZW50SWQsIFN0cmluZyYmIGxhYmVsKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9wZXJ0
aWVzPiBwcm9wZXJ0aWVzOwogICAgICAgICBkZWNvZGVyID4+IHByb3BlcnRpZXM7CiAgICAgICAg
IGlmICghcHJvcGVydGllcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
MjcsMTkgKzIyNywxOSBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2
aWNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
b2NrTWVkaWFEZXZpY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBwZXJzaXN0ZW50SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAg
ICAgICBpZiAoIXBlcnNpc3RlbnRJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAo
IWxhYmVsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDx1aW50OF90PiBpbmRleDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBpbmRl
eDsKICAgICAgICAgZGVjb2RlciA+PiBpbmRleDsKICAgICAgICAgaWYgKCFpbmRleCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggZDdlZGFlZmI4NWEy
MzMzMDllNzUxZmE2MzAwODgxMzg2OWQ1MDI0YS4uZjBkYWRmNzFkMmQwMzUzNWE2ODJlNTBjNzli
OTQyNDJkMDg2OGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNzUsOCArNzUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgbV9jaGFubmVsQ291bnQgeyAyIH07CiAKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0g
ICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5n
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1f
Y2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAogICAgIFJ1bkxvb3A6OlRpbWVy
PE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcAppbmRleCAyMmU0YTE3N2M3NTA0YWU3NzZlMjhjYTY0NWZkZjU0M2QxZWRhOTI1Li4zNjZh
MTc4NTczZmYwMGQxNmRjODc3NzExNzM4Y2M4OGQzN2M4MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnJlbW92ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoKTsKIH0KIAotT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZCkK
K3N0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAg
ICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCBPcHRpb25hbDxN
b2NrTWVkaWFEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNl
V2l0aFBlcnNpc3RlbgogICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CiB9CiAKLU9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgaWQpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKCFp
ZC5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggYzM3YzJhYzY3MDAz
YzBmNGY5OGMyMGY1OWIxMjgyODlmMDg1NWJkYS4uYjc4ZGZjYWE0YWQ1ZDdiMTVkMjI0M2ZmNmUz
YWZmZjZhNTFhOGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTcsOCArNTcsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgdmlkZW9EZXZpY2Vz
KCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgZGlzcGxheURldmljZXMoKTsK
IAotICAgIHN0YXRpYyBPcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVy
c2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFE
ZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Q2FwdHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVy
biBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KICAgICBDYXB0dXJlRGV2aWNlTWFuYWdl
ciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIG1fdmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjsgfQpAQCAtNzUsMTcgKzc1LDE3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgTW9j
a0F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1h
bmFnZXIgewogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6bWljcm9waG9uZURldmljZXMoKTsgfQotICAgICAgICBPcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCh0eXBlLCBp
ZCk7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNl
V2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgaWQpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpj
YXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCh0eXBlLCBpZCk7IH0KICAgICB9OwogICAgIGNs
YXNzIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyIHsKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZpZGVvRGV2aWNlcygpOyB9Ci0gICAgICAgIE9wdGlvbmFsPENhcHR1
cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUs
IGlkKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07CiAgICAg
Y2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBDYXB0
dXJlRGV2aWNlTWFuYWdlciB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgVmVjdG9yPENh
cHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2aWNlcygpOyB9Ci0gICAgICAgIE9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KHR5cGUsIGlkKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07
CiAKICAgICBNb2NrQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDIwNzNhNmMzYzJmZGE4NjQyZTVmY2Y1NWE1
M2I3OWQ2MjJmZGEzNzcuLjU5NGVjMmIyNTg4MTQzZjY3Y2FkYjM2Zjk0NWY2MzI5N2Y0NDU3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYg
bmFtCiAgICAgbV9maWxsQ29sb3IgPSBwcm9wZXJ0aWVzLmZpbGxDb2xvcjsKIH0KIAotYm9vbCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFs
PGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IHJhdGUp
Citib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgc3BsaXR0
aW5nIG1vY2sgZGlzcGxheSBpbnRvIGFub3RoZXIgY2xhc3Mgc28gd2UgZG9uJ3QgZG9uJ3QgaGF2
ZSB0byBkbyB0aGlzIHNpbGx5IGRhbmNlCiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgUmVhbHRpbWVW
aWRlb1NvdXJjZSBpbmhlcml0YW5jZS4KQEAgLTEwMyw3ICsxMDMsNyBAQCBib29sIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aQogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgcmF0ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0
aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKK3ZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmF0
ZSkKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgc3BsaXR0aW5nIG1vY2sgZGlzcGxheSBpbnRv
IGFub3RoZXIgY2xhc3Mgc28gd2UgZG9uJ3QgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIHNpbGx5IGRh
bmNlCiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgUmVhbHRpbWVWaWRlb1NvdXJjZSBpbmhlcml0YW5j
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaAppbmRleCBmYTAxMGMwMzc2NGJhYjgwOGFmMDFmNGM5YjkwM2Y3YTBlOTFm
MjlkLi5mMDVlNWEzMjZlYzJkMzQwNWYyOWVlZmFhMGVhYjUyMWIxYjU0NjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQot
ICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9w
dGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICB2b2lkIHNl
dFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIHNldFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIHZvaWQgc2V0RnJhbWVSYXRlV2l0
aFByZXNldChkb3VibGUsIFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwogCiAKQEAgLTExMyw4
ICsxMTMsOCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9mcmFtZU51bWJlciB7IDAgfTsK
ICAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gbV9lbWl0RnJhbWVU
aW1lcjsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2Nh
cGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1f
Y3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIENv
bG9yIG1fZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgTW9ja01lZGlhRGV2aWNlIG1f
ZGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRl
eCA4NjY3N2FlZmY2ODJkODNhYTIzOGUwODlmYjg2YzFmMDk3YzY4ZmNkLi5iMzMxZWYxMjk1NTdj
MDBjOTkzM2QzYTA0ZDI0NWE0OTYwZWY5N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQoKQogICAgICAgICB9KTsKIH0KIAotT3B0aW9u
YWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6dmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUg
PyBtX21lZGlhU291cmNlUHJpdmF0ZS0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBz
dGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgK
aW5kZXggMzI1NGRhNWZiZjUzYzUyMDc5OGNkYTgwYmM5NDc4OTAyYWIxYzYyYS4uNjM4ODBmYjYw
YWY5ODFkMmJjYTE4NTk2ZjY1YmI4NmRkZTk4ODVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2UuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
TWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3MoKSBvdmVycmlkZTsKIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAg
ICBSZWZQdHI8TW9ja01lZGlhU291cmNlUHJpdmF0ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcAppbmRleCA3NDI4MDJjNmM1OWRkMzE0
MmM0MDZmOWM3MmZjN2Y3OGI4YWM4N2VlLi42YzkxN2U0MzVhYWE0NDVmODY4OWJlYWVlNDQ1OGUx
MmYyNDljMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTE4
MSw3ICsxODEsNyBAQCBNZWRpYVRpbWUgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6Y3VycmVudE1l
ZGlhVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLmN1cnJlbnRNZWRpYVRpbWUoKTsK
IH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQorc3RkOjpvcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcyB7CiAgICAgICAgIG1fdG90YWxWaWRlb0ZyYW1lcywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmgKaW5kZXggMTIzYjY4MzhkY2Y1ZTRlZmQ1YTU1MzQ0YWJhM2YxYWZj
NDI5MzMwNS4uYmY5ZmRlMWYzODE4YTAwMjIxZDI2ZDk2YTlhYWUyYThhZWY2NmQ4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFT
b3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIE1lZGlhVGltZSBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQp
OwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRl
b1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKTsKIAogICAgIHZvaWQgaW5jcmVtZW50VG90YWxWaWRl
b0ZyYW1lcygpIHsgKyttX3RvdGFsVmlkZW9GcmFtZXM7IH0KICAgICB2b2lkIGluY3JlbWVudERy
b3BwZWRGcmFtZXMoKSB7ICsrbV9kcm9wcGVkVmlkZW9GcmFtZXM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggODhjZjFiZjJhYWE4NjkzNGNjYTgyYzRmY2Fh
NDkxZDc1YTA2Yzg4NS4uNDM4NDBhM2Q2MWU5N2VjZDFhYzE5ZmU3MzY1Yjk4YWNkN2YxNjY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBw
cmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0K
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9m
ZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgb3ZlcnJpZGUgeyBtX2Jv
eC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zmc2V0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5oCmluZGV4IDI4YTJiNTYyMTgyYWE1ODAzMTkyZjdjYzEzY2NhYWUxY2NlOTczNTcu
LmRmYmYzNmExZWM2NzRmM2JkODBiMjhhYWU4MDE5ODllNTllNjE0NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX21pbmltdW1VcGNvbWlu
Z1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7CiAgICAgVmVjdG9yPGNoYXI+IG1faW5wdXRC
dWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRl
eCA3NDY3MzcwYTY0MjdmMTZhYzVjMjM2MDcxMDYwYThiNDI5OTM5YTlhLi5lYzgwNzlhZWY3YTRk
N2VkZWU3MzhkNzFlN2JlMThkNTY1ZGU1ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUo
KQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgp
CiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJl
bnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2Ug
aGF2ZSBhIHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggOGZjYmU4YzExZjIxMzQ4Y2VmZTQ4
ZWQwMjY2NWM1NWQ2MzY5Njc3Mi4uNWE4NjM5NzRhZjNlNTE0MmI5M2RmMTBlZmFlZTk0NzM4NzBm
OGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFN0cmluZyYgcGF0aCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCk7Ci0gICAg
T3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpOworICAgIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpOwogCiAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJldm9r
ZUZpbGVBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCA2M2JlZTFk
ZDYxZWFmZmVlY2IwYzZmMzc3NjU5OWU2YTAyYzM4NGNiLi5hZDMwYzY5MTBhMTJjOTgxZjgwYjQ3
MTMyYTk3MGNmMTRkZjMxN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0z
NywxMiArMzcsMTIgQEAgc3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAg
ICBVUkwgZmlyc3RQYXJ0eTsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIFVS
TCB1cmw7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IFVSTCBmaXJzdFBhcnR5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkpCkBA
IC03MSwxMiArNzEsMTIgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIg
Pj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaAppbmRleCBlNjNh
N2IwYTkxNjc3ZGY3NGZhMmNkNWE2YzcwNzJmZDE3Njc5ZmQzLi40MzJmZDMwOTE3ZGZjYTg1ZTY4
ZDVhY2QxMjkzYTQyMzgxNTUxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJUEFkZHJl
c3MgewogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxJUEFkZHJlc3M+IGZyb21Tb2NrQWRk
ckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SVBBZGRyZXNzPiBmcm9tU29ja0FkZHJJbjYoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luNiYp
OwogICAgIGV4cGxpY2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3QgaW5fYWRkciYgYWRkcmVzcykK
ICAgICAgICAgOiBtX2FkZHJlc3MoYWRkcmVzcykKICAgICB7CkBAIC03MCw3ICs3MCw3IEBAIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWlu
dDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi1pbmxpbmUgT3B0
aW9uYWw8SVBBZGRyZXNzPiBJUEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qg
c29ja2FkZHJfaW42JiBhZGRyZXNzKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBJ
UEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42JiBhZGRy
ZXNzKQogewogICAgIGlmIChhZGRyZXNzLnNpbjZfZmFtaWx5ID09IEFGX0lORVQ2KQogICAgICAg
ICByZXR1cm4gSVBBZGRyZXNzIHsgYWRkcmVzcy5zaW42X2FkZHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggNzFlZTZh
ZWVmMmMzMzEwZTFmNTg2YTgwZTE5NWMxMTVjNmVkNTJkYS4uOTk1OWVhNjYzYzAxNTA0YmZhYjMx
MWVmOTgxMzBhZTQ5YWNiNzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFdvcmtR
dWV1ZSYgZGVjb2RlUXVldWUoKQogCiBzdGF0aWMgUmVzdWx0IHBhcnNlTWVkaWFUeXBlKGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIGlmIChPcHRpb25hbDxQYXJzZWRDb250ZW50VHlw
ZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKG1lZGlhVHlw
ZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IHBhcnNlZENvbnRl
bnRUeXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShtZWRpYVR5cGUpKQogICAgICAgICBy
ZXR1cm4geyBwYXJzZWRDb250ZW50VHlwZS0+bWltZVR5cGUoKSwgcGFyc2VkQ29udGVudFR5cGUt
PmNoYXJzZXQoKSwgcGFyc2VkQ29udGVudFR5cGUtPnNlcmlhbGl6ZSgpLCB7IH0gfTsKICAgICBy
ZXR1cm4geyAidGV4dC9wbGFpbiJfcywgIlVTLUFTQ0lJIl9zLCAidGV4dC9wbGFpbjtjaGFyc2V0
PVVTLUFTQ0lJIl9zLCB7IH0gfTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFNjaGVkdQogICAgICk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVUYXNrJiB0YXNrLCBNb2RlIG1vZGUpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVU
YXNrJiB0YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBN
b2RlOjpGb3JnaXZpbmdCYXNlNjQ6CkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBkZWNvZGVFc2NhcGVkKGNvbnN0IERlY29kZVRhc2smIHRhc2spCiAgICAgcmV0dXJu
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0FzRGF0YSh0YXNrLmVuY29kZWREYXRhLCBlbmNvZGlu
Zyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXN1bHQ+IGRlY29kZVN5bmNocm9ub3VzbHkoRGVj
b2RlVGFzayYgdGFzaywgTW9kZSBtb2RlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiBk
ZWNvZGVTeW5jaHJvbm91c2x5KERlY29kZVRhc2smIHRhc2ssIE1vZGUgbW9kZSkKIHsKICAgICBp
ZiAoIXRhc2sucHJvY2VzcygpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjEy
LDcgKzIxMiw3IEBAIHZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNv
bnRleHQmIHNjaGVkdWxlQ29udGV4dCwgTW9kZSBtb2RlLCBECiAgICAgfSk7CiB9CiAKLU9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBNb2RlIG1vZGUpCitzdGQ6Om9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBNb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE0NzY5ODVhNzM5NDRmMDZhNWE1MGZh
MGVkOGQ4MTczMzQ5ZmYyNWQuLjk0NzI4NjNiM2IwMWYwOTMxYzFjOTQ0NDU3YmI0YjRjZmU4NGNm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFJlc3VsdCB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiB9OwogCi11c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZCAoT3B0aW9uYWw8UmVzdWx0Pik+OwordXNpbmcgRGVjb2RlQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVzdWx0Pik+Owogc3Ry
dWN0IFNjaGVkdWxlQ29udGV4dCB7CiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgU2No
ZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRQYWlyczsKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0
IFNjaGVkdWxlQ29udGV4dCB7CiAKIGVudW0gY2xhc3MgTW9kZSB7IExlZ2FjeSwgRm9yZ2l2aW5n
QmFzZTY0IH07CiB2b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQm
LCBNb2RlLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYsIE1vZGUpOworV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxSZXN1bHQ+IGRlY29kZShjb25zdCBVUkwmLCBNb2RlKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDBmZTk0ZjQy
OWQ3Y2M0MDRjM2U1ZDIxYTgzYjI1MmQ2YjE4YzZiNzIuLmI3N2Y5MDA3ODE5ZmZlYzI5NWI2MDUy
OTQ4YWU5OTRkYWUyNDYxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2Fs
bFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEZp
bGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0
YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOwogICAgIG1fbGVuZ3RoSW5C
eXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCA5ZGFjNjBlN2FkM2JlNDk1MGY2OTc5YmM2ZjQzYjZjNzYwOWY0Y2ViLi44
ZjIyMTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBPcHRp
b25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICBGb3JtRGF0
YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0
X3QgZmlsZUxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSkKICAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBm
aWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfSkgeyB9
CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxvYlVSTCkKICAgICAg
ICAgOiBkYXRhKEVuY29kZWRCbG9iRGF0YSB7IGJsb2JVUkwgfSkgeyB9CkBAIC01OSw5ICs1OSw5
IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBk
YXRhOwogICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8Rm9ybURhdGFFbGVtZW50PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3JtRGF0YUVsZW1lbnQ+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8RGF0YT4g
ZGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEYXRhPiBkYXRhOwogICAgICAgICBkZWNvZGVy
ID4+IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC03Miw3ICs3Miw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAg
ICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0IHsgMCB9OwogICAg
ICAgICBpbnQ2NF90IGZpbGVMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogCiAgICAgICAgIGJvb2wgZmls
ZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdDsKIApAQCAtOTIsMjQg
KzkyLDI0IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICB7CiAgICAgICAgICAg
ICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVTdGFydCA8PCBmaWxlTGVuZ3RoIDw8IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IGZpbGVuYW1lOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBPcHRp
b25hbDxpbnQ2NF90PiBmaWxlU3RhcnQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IGZpbGVTdGFydDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZVN0YXJ0OwogICAgICAg
ICAgICAgaWYgKCFmaWxlU3RhcnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0
aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gZmlsZUxlbmd0aDsKICAgICAgICAgICAgIGlmICghZmlsZUxlbmd0
aCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xMzUsOSArMTM1LDkgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsOwogICAgICAgICB9Ci0gICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxFbmNvZGVkQmxvYkRhdGE+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbmNvZGVkQmxvYkRhdGE+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IHVybDsKICAgICAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCBh
cHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPGNoYXI+IGZsYXR0ZW4oKSBjb25zdDsgLy8gb21pdHMgZmlsZXMK
QEAgLTI3MSw3ICsyNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNTdHJlYW0geyBm
YWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwogICAgIGJvb2wgbV9jb250YWlu
c1Bhc3N3b3JkRGF0YSB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx1aW50NjRfdD4g
bV9sZW5ndGhJbkJ5dGVzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9s
ZW5ndGhJbkJ5dGVzOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0
YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGY0NDIxNzA4ZTE1NjQ5ZWIxMDBlZDk4YTJjNDc0
ZTQ3OGFmYTQ0YzMuLmZhMDM3ZmNmOTY4MTczYzBjYTkzZDQ3MWMzZGQ0MWRjNDg3MGIwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBDb21tb25IZWFkZXIgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CiAg
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29t
bW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21tb25IZWFkZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiBrZXkgPT0gb3RoZXIua2V5ICYmIHZhbHVlID09IG90aGVyLnZhbHVlOyB9
CiAgICAgfTsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgICAgIFVuY29tbW9uSGVh
ZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpICwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVuY29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYp
OworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VW5jb21tb25IZWFkZXI+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFVuY29tbW9uSGVhZGVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4ga2V5ID09IG90
aGVyLmtleSAmJiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsgfQogICAgIH07CkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBzdHJ1Y3QgS2V5VmFsdWUgewogICAgICAgICAgICAgU3Ry
aW5nIGtleTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBI
ZWFkZXJOYW1lOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyTmFtZT4ga2V5
QXNIVFRQSGVhZGVyTmFtZTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgfTsK
IApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1hdXRvIEhUVFBIZWFkZXJNYXA6OkNvbW1vbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpIC0+IE9wdGlvbmFsPENvbW1vbkhlYWRlcj4KK2F1dG8gSFRUUEhlYWRlck1hcDo6Q29t
bW9uSGVhZGVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxDb21t
b25IZWFkZXI+CiB7CiAgICAgSFRUUEhlYWRlck5hbWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG5hbWUpKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6VW5j
b21tb25IZWFkZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KLWF1dG8gSFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxVbmNvbW1vbkhlYWRlcj4KK2F1dG8g
SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAt
PiBzdGQ6Om9wdGlvbmFsPFVuY29tbW9uSGVhZGVyPgogewogICAgIFN0cmluZyBuYW1lOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGEzMmFkNzc0ODZmNjA3ZmVkN2Q4NjVlMGNk
NDliYzYzOTNiYTA5ODEuLjFiYzhhZDRjYjA0MGFmZTJmMzQ4MzY1MGY5ZmM5NmExZTY4YjE3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3Qg
Y2hhciogcCwgc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4gczsKIH0KIAotT3B0aW9uYWw8V2Fs
bFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBkb3Vi
bGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBvY2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmluZGV4IDcxMDI1NTdlZDEzYmYxOGVlNGU0ODBm
YmRlMDkzZDI5NDQ4MTVkOGEuLmE4NjllZjc5YmI1ZDIxYmEzOWJiMmMwNmU5Y2U4Y2YzZDM4Zjk4
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgK
QEAgLTc3LDcgKzc3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihj
b25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihTdHJpbmdWaWV3KTsKLU9wdGlv
bmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBmaWxlbmFt
ZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBT
dHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTU0
LDcgKzE1NCw3IEBAIGJvb2wgYWRkVG9BY2Nlc3NDb250cm9sQWxsb3dMaXN0KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
SGFzaFR5cGUgPSBEZWZhdWx0SGFzaDxTdHJpbmc+PgotT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcs
IEhhc2hUeXBlPj4gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0KGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZywgSGFzaFR5cGU+PiBwYXJzZUFjY2Vz
c0NvbnRyb2xBbGxvd0xpc3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmcsIEhhc2hUeXBlPiBzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRp
b24uaAppbmRleCA2MTk1OWNjZDE0MDNhODcyNjZhNjA2YThmNzdjMDg1MmQ1NjVmYTU3Li45MjEy
M2FiZTlmZTQ1M2JlOTU3ODg5MDI4ZGQ2ZGQzNDNkMWIyODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaApA
QCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24gewog
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtZXRyaWNzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHN0cnVjdCBOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHsKQEAgLTU5LDcgKzU5LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTmV0d29ya1RyYW5zYWN0aW9uSW5m
b3JtYXRpb246OmVuY29kZShFbmNvZGUKICAgICBlbmNvZGVyIDw8IG1ldHJpY3M7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25J
bmZvcm1hdGlvbj4gTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8
TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0
aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOZXR3b3JrVHJhbnNhY3Rpb25J
bmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IDg3OTMwMDQ4ZjRmZDE4
ZDYwOThhZjdkZTRkYTI1YmU1MzJkZjU5MzEuLjNmYzI1OTg2OGI2Y2I0ODZmNzQxNGZkYjJhMWQw
ZjI2ZWNmMTVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBuZXR3b3JrQ2hhbmdlZENhbGxiYWNrKE5ldHdvcmtTdGF0ZU5vdGlmaWVy
Kik7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPGJvb2w+IG1faXNPbkxpbmU7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBtX2lzT25MaW5lOwogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+PiBtX2xpc3RlbmVyczsKICAgICBUaW1lciBtX3VwZGF0ZVN0YXRlVGltZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcAppbmRleCBkZjBmYWU5ZTBkNDRiZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5
NzFlLi4wMzI0MDg4YjA0NWZmODE2M2ZmM2MzZjQ2MmRmZjc1MzY0ZTc2NTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6aGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRAog
ICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBy
ZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
cmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyk7CiB9CiAgICAgCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0Citib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSBjb25zdAogewogICAgIGlmIChzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyA9PSBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6WWVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzgsMTQgKzE3OCwxNCBAQCBib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcoYwogICAgIHJldHVybiB0b3BGcmFtZURvbWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAo
bV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9wRnJhbWVEb21haW4pICYmIG1fYXBwQm91bmRE
b21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWluKSk7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyAmJiBzaG91bGRCbG9j
a0Nvb2tpZXMocmVxdWVzdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykpCiAgICAgICAgIHJldHVybiBtX2NhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
c2Vjb25kcykKIHsKICAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzID0gc2Vjb25kczsK
ICAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgPSBzZWNvbmRzID8gU2Vjb25k
cyB7IHNlY29uZHMtPnNlY29uZHMoKSAvIDcuIH0gOiBzZWNvbmRzOwpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudENyb3NzUGFnZVN0b3JhZ2VBY2Nl
c3MoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsK
ICAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBWZWN0b3I8U3RyaW5n
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3QKICAgICByZXR1cm4gZW50cmllczsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9n
aW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJj
ZURvbWFpbikpIHsKICAgICAgICAgZ3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGZpcnN0UGFy
dHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMoKQogfQogI2VuZGlmCiAKLU9w
dGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNh
cChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9u
YXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsKQEAgLTQxMCw3
ICs0MTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvcwogICAgIHJldHVybiBsb2dpbkRvbWFp
bk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKHRvcEZyYW1lRG9tYWluLCByZXNvdXJjZURvbWFpbik7
CiB9CiAKLU9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0
UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQorc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dWJSZXNvdXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKIHsKICAgICBhdXRvIGl0ID0gc3Rv
cmFnZUFjY2Vzc1F1aXJrcygpLmZpbmQodG9wRnJhbWVEb21haW4pOwogICAgIGlmIChpdCAhPSBz
dG9yYWdlQWNjZXNzUXVpcmtzKCkuZW5kKCkpCkBAIC00MTgsNyArNDE4LDcgQEAgT3B0aW9uYWw8
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVz
b3VyY2VEb21haW5zSW4KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExv
Z2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BEb21haW4sIGNvbnN0IFN1YlJlc291
cmNlRG9tYWluJiBzdWJEb21haW4pCitzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY29uc3QgVG9w
RnJhbWVEb21haW4mIHRvcERvbWFpbiwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHN1YkRvbWFp
bikKIHsKICAgICBpZiAoc3ViRG9tYWluLnN0cmluZygpID09ICJzb255LmNvbSJfcyAmJiB0b3BE
b21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0aW9uLmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5jb20iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
OTliNTMxZjk3YTlhYjIyNWVhOTQyMGM1MWZiN2VmMzkyNDA5MGM2ZS4uYjc2ZDMxYWI1Y2ExZTJh
M2NkNTAyY2JjNWQ4ZDlkZWM4NmIyNzc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xNTcsNyArMTU3
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b29raWUoY29uc3QgQ29va2llJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVz
KGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91
bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBD
b29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoKTsKQEAgLTE2NywxMSArMTY3LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZl
Y3RvcjxDb29raWU+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNo
Q29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBkb21Db29raWVzRm9ySG9zdChjb25z
dCBTdHJpbmcmIGhvc3QpOwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdMb2dnaW5n
RW5hYmxlZChib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJM
JiByZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3Ry
aWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTIwMSwyNSArMjAxLDI1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvbWFpbnNX
aXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBT
dWJSZXNvdXJjZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50Q3Jvc3NQ
YWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNl
RG9tYWluJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhPcHRpb25hbDxTZWNvbmRzPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJv
bVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFn
ZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+JiBzdG9yYWdlQWNjZXNzUXVp
cmtzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVy
YWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4+IHN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFy
dHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3ViUmVzb3VyY2VEb21h
aW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGxvZ2luRG9tYWluTWF0Y2hl
c1JlcXVlc3RpbmdEb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJs
ZURvbWFpbj4gZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYs
IGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4o
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpOwogCiAjZW5k
aWYKICAgICAKQEAgLTIzMSwxMCArMjMxLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVk
ZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IGh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdl
UmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5T
VVJMICopIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJ
VFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBSZXRh
aW5QdHI8TlNBcnJheT4gaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwg
TlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5T
VVJMICopIGNvbnN0OworICAgIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
U2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7
CiAgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBT
YW1lU2l0ZUluZm8mKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICopIGNvbnN0OwogI2VuZGlmCkBAIC0yNzMsNyAr
MjczLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIGJvb2wgbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAgICAg
Ym9vbCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQgPSBmYWxz
ZTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRF
eGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29uc3Q7CiAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKQEAgLTI4MSw5ICsyODEsOSBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8RnJhbWVJZGVudGlmaWVyLCBS
ZWdpc3RyYWJsZURvbWFpbj4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFz
aE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxUb3BG
cmFtZURvbWFpbiwgSGFzaFNldDxTdWJSZXNvdXJjZURvbWFpbj4+IG1fcGFpcnNHcmFudGVkQ3Jv
c3NQYWdlU3RvcmFnZUFjY2VzczsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Fn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Fn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyB7IH07CisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVnaXN0cmFibGVE
b21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNl
OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uVGVzdE1vZGUgPSBmYWxz
ZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
RlVSTENPTk5FQ1RJT04pCi1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKK1dF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxI
VFRQQ29va2llQWNjZXB0UG9saWN5PiA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBl
LmNwcAppbmRleCA4NjMxNGM0NjQzZWQ5Yjc0MjFkMzg2Y2U1ZTRiNjMyNDliM2UyNjM3Li40ZWU2
MjcyNDQwMDJiN2RjNDY3N2YzOWU5NGEyOGE2OTIzNDRiNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzI3
LDcgKzMyNyw3IEBAIGJvb2wgUGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVudFR5cGUoTW9k
ZSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxQYXJzZWRDb250ZW50VHlw
ZT4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBN
b2RlIG1vZGUpCitzdGQ6Om9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBQYXJzZWRDb250ZW50
VHlwZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE1vZGUgbW9kZSkKIHsKICAg
ICBQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZShtb2RlID09IE1vZGU6OlJmYzIw
NDUgPyBjb250ZW50VHlwZSA6IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhjb250
ZW50VHlwZSkpOwogICAgIGlmICghcGFyc2VkQ29udGVudFR5cGUucGFyc2VDb250ZW50VHlwZSht
b2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuaAppbmRleCA5NWVkYTJmYzEyNTk5ODcyMjQzZTZkYjg3YzE4MjQ2ZWM2NGVkNDk0
Li5kMjJiOTcyNTJlOWNiM2ZkMjFiOGQ1OTRhNWJhOGQ0NDNiYTUwYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oCkBAIC00
NSw3ICs0NSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25pZmYpOwogLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBjb21tZW50cy4KIGNsYXNzIFBhcnNlZENvbnRlbnRUeXBlIHsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmLCBNb2RlID0gTW9kZTo6TWltZVNuaWZmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25pZmYpOwogICAgIFBhcnNlZENvbnRlbnRUeXBlKFBh
cnNlZENvbnRlbnRUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAppbmRleCBjMTk0MmFmZDc4NGY5
ODJiZDJkYTFjZWMwYjJiNmQxZjVkNGY4M2E3Li42ZGRmODllMzUxODk2ZGZiYzNlMzQxZjk0MDNl
MWI1ZmU4MjBmZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBQYXJzZWRSZXF1ZXN0
UmFuZ2U6OnBhcnNlKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVl
c3RSYW5nZT4gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShTdHJpbmdWaWV3IGlucHV0KQogewog
ICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMzI3NlY3Rpb24tMi4xIGJ1
dCBhc3N1bWluZyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIGJlZ2luIGFuZCBhbiBlbmQgb3IgcGFy
c2luZyB3aWxsIGZhaWwKICAgICBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoU3RyaW5nVmlldygiYnl0
ZXM9Il9zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bh
cnNlZFJlcXVlc3RSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRSZXF1ZXN0UmFuZ2UuaAppbmRleCAxMTVjZmMyZWQ4ZDYyMWI1NDhmYWZjMTAwOTM0NmQ1Zjk5
YmMwZWZiLi4zODU1MzRmNTFmM2FjZDJiZDk0MTZjYWU1NzM1NjY1YWY0MjdhNzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdl
LmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGFyc2Vk
UmVxdWVzdFJhbmdlIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9u
YWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyBy
ZXR1cm4gcGFyc2UoU3RyaW5nVmlldyhzdHJpbmcpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVlc3RSYW5nZT4gcGFyc2UoU3RyaW5nVmlldyk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gcGFyc2UoU3RyaW5nVmlldyhzdHJpbmcpKTsgfQog
CiAgICAgY29uc3Qgc2l6ZV90IGJlZ2luIHsgMCB9OwogICAgIGNvbnN0IHNpemVfdCBlbmQgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IGU1MTQ3ZDJhYTdkNjE2NjZkY2VkN2MyNjE4YzIxYWMwZjUyNjA3NjAuLjk3
Zjg1MzAwMTViMGEyM2FhZGFhNjVhMGYxOGM5ZTJlZmEzZWJmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTcsNyAr
MTU3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlvbkgKIHsKICAgICBpZiAocmVzcG9uc2UuaXNI
VFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwotICAgICAgICBP
cHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwogICAgICAgICBpZiAocG9ydCAmJiAhV1RG
Ojppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkp
IHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAi
Q2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYzMzNDNmMmZl
MDRmMmFkZDM1OGIxZWQzYjFjNmJiNTM4Y2NiOTY0Li45YjA0YmEyYzQ4OGQyZTk1NDgwOTY2YTI2
MjQ0ODNkOWRhOTQ2ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNyb3Nz
T3JpZ2luKTsKIAotICAgIE9wdGlvbmFsPENyZWRlbnRpYWw+IGdldENyZWRlbnRpYWwoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCk7CisgICAgc3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBn
ZXRDcmVkZW50aWFsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wpOwogICAgIHZvaWQgcmVz
dGFydFJlcXVlc3RXaXRoQ3JlZGVudGlhbChjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBD
cmVkZW50aWFsJik7CiAKICAgICB2b2lkIGhhbmRsZURhdGFVUkwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXgg
ZWFlMDU2OTk5MTRjNTI0YjcwNTkxOTQ4M2Y3M2RkNjBkZDUzN2UyNS4uMjcwZmFkMDRmZDFlNWIz
ZWE2Mjk0MWNlODA5NTNhZWZlNTlmM2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTE3NCw3ICsxNzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWF0b3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikgeyBtX2luaXRpYXRvcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAg
ICAvLyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgSW5zcGVjdG9yIHRvIGJlIGFibGUg
dG8gaWRlbnRpZnkgdGhlIG5vZGUgdGhhdCBpbml0aWF0ZWQgdGhpcyByZXF1ZXN0LgotICAgIGNv
bnN0IE9wdGlvbmFsPGludD4mIGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllcjsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8aW50PiYgaW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyOyB9CiAg
ICAgdm9pZCBzZXRJbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllcihpbnQgaW5zcGVjdG9y
SW5pdGlhdG9yTm9kZUlkZW50aWZpZXIpIHsgbV9pbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRp
ZmllciA9IGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyOyB9CiAKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJvdGVjdGVkOgogICAgIFNhbWVTaXRl
RGlzcG9zaXRpb24gbV9zYW1lU2l0ZURpc3Bvc2l0aW9uIHsgU2FtZVNpdGVEaXNwb3NpdGlvbjo6
VW5zcGVjaWZpZWQgfTsKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5IHsgUmVz
b3VyY2VMb2FkUHJpb3JpdHk6OkxvdyB9OwogICAgIFJlcXVlc3RlciBtX3JlcXVlc3RlciB7IFJl
cXVlc3Rlcjo6VW5zcGVjaWZpZWQgfTsKLSAgICBPcHRpb25hbDxpbnQ+IG1faW5zcGVjdG9ySW5p
dGlhdG9yTm9kZUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1faW5zcGVjdG9y
SW5pdGlhdG9yTm9kZUlkZW50aWZpZXI7CiAgICAgYm9vbCBtX2FsbG93Q29va2llcyA6IDE7CiAg
ICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA6IDE7CiAgICAgbXV0YWJs
ZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA6IDE7CkBAIC0yNjAsNyArMjYwLDcgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOwogICAgIGJvb2wgbV9pc0FwcEJv
dW5kIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgT3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87CisgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1Q
cmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAt
MzAwLDc5ICszMDAsNzkgQEAgQUxXQVlTX0lOTElORSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6
OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CiBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBtX3VybCA9IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IHRpbWVvdXRJbnRlcnZhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
dGltZW91dEludGVydmFsOwogICAgIGRlY29kZXIgPj4gdGltZW91dEludGVydmFsOwogICAgIGlm
ICghdGltZW91dEludGVydmFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV90aW1lb3V0
SW50ZXJ2YWwgPSBXVEZNb3ZlKCp0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsK
ICAgICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFVSTCh7IH0sICpmaXJzdFBhcnR5Rm9yQ29va2ll
cyk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGh0dHBNZXRob2Q7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGh0dHBNZXRob2Q7CiAgICAgZGVjb2RlciA+PiBodHRwTWV0aG9kOwogICAgIGlm
ICghaHR0cE1ldGhvZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1faHR0cE1ldGhvZCA9
IFdURk1vdmUoKmh0dHBNZXRob2QpOwogCi0gICAgT3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gZmll
bGRzOworICAgIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gZmllbGRzOwogICAgIGRlY29k
ZXIgPj4gZmllbGRzOwogICAgIGlmICghZmllbGRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9odHRwSGVhZGVyRmllbGRzID0gV1RGTW92ZSgqZmllbGRzKTsKIAotICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBhcnJheTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBhcnJheTsKICAgICBkZWNvZGVyID4+IGFycmF5OwogICAgIGlmICghYXJyYXkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5ID0gV1RGTW92ZSgqYXJyYXkpOwogCi0gICAgT3B0aW9uYWw8UmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9saWN5OwogICAgIGRlY29kZXIgPj4gY2FjaGVQ
b2xpY3k7CiAgICAgaWYgKCFjYWNoZVBvbGljeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IG1fY2FjaGVQb2xpY3kgPSAqY2FjaGVQb2xpY3k7CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxv
d0Nvb2tpZXM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd0Nvb2tpZXM7CiAgICAgZGVj
b2RlciA+PiBhbGxvd0Nvb2tpZXM7CiAgICAgaWYgKCFhbGxvd0Nvb2tpZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBtX2FsbG93Q29va2llcyA9ICphbGxvd0Nvb2tpZXM7CiAKLSAgICBP
cHRpb25hbDxTYW1lU2l0ZURpc3Bvc2l0aW9uPiBzYW1lU2l0ZURpc3Bvc2l0aW9uOworICAgIHN0
ZDo6b3B0aW9uYWw8U2FtZVNpdGVEaXNwb3NpdGlvbj4gc2FtZVNpdGVEaXNwb3NpdGlvbjsKICAg
ICBkZWNvZGVyID4+IHNhbWVTaXRlRGlzcG9zaXRpb247CiAgICAgaWYgKCFzYW1lU2l0ZURpc3Bv
c2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0aW9u
ID0gKnNhbWVTaXRlRGlzcG9zaXRpb247CiAKLSAgICBPcHRpb25hbDxib29sPiBpc1RvcFNpdGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1RvcFNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1Rv
cFNpdGU7CiAgICAgaWYgKCFpc1RvcFNpdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X2lzVG9wU2l0ZSA9ICppc1RvcFNpdGU7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlv
cml0eT4gcHJpb3JpdHk7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4g
cHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9wcmlvcml0eSA9ICpwcmlvcml0eTsKIAotICAg
IE9wdGlvbmFsPFJlcXVlc3Rlcj4gcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVz
dGVyPiByZXF1ZXN0ZXI7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0ZXI7CiAgICAgaWYgKCFyZXF1
ZXN0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RlciA9ICpyZXF1ZXN0
ZXI7CiAKLSAgICBPcHRpb25hbDxib29sPiBpc0FwcEJvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNBcHBCb3VuZDsKICAgICBkZWNvZGVyID4+IGlzQXBwQm91bmQ7CiAgICAgaWYgKCFp
c0FwcEJvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDUy
NjUzMjMzMDE3MGUxNmYxOTAyOGFkOTM5M2JjNGIwNjQ0ODdlZDQuLjE5ZjI0MGEyZTAwZTk4ZDMz
OTA2MDI4ZjdiNWYzZDE3MGNiNGM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC02NzksMjEgKzY3
OSwyMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpoYXNDYWNoZVZhbGlkYXRvckZpZWxk
cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpMYXN0TW9kaWZpZWQpLmlzRW1wdHkoKSB8fCAhbV9odHRwSGVhZGVyRmllbGRzLmdldChI
VFRQSGVhZGVyTmFtZTo6RVRhZykuaXNFbXB0eSgpOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAg
ICAgIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpOwogICAgIHJldHVybiBtX2NhY2hlQ29u
dHJvbERpcmVjdGl2ZXMubWF4QWdlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3RhbGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3Rh
bGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2FjaGVD
b250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsKICAg
ICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLnN0YWxlV2hpbGVSZXZhbGlkYXRlOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCiB7CiAg
ICAgU3RyaW5nIGhlYWRlclZhbHVlID0gaGVhZGVycy5nZXQoaGVhZGVyTmFtZSk7CiAgICAgaWYg
KGhlYWRlclZhbHVlLmlzRW1wdHkoKSkKQEAgLTcwNSw3ICs3MDUsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycywgSAogICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAot
T3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QK
IHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNzE2LDcgKzcxNiw3IEBA
IE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGF0ZTsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmFnZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IFJlc291cmNlUmVzcG9u
c2VCYXNlOjphZ2UoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwog
CkBAIC03MzEsNyArNzMxLDcgQEAgT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1PcHRpb25hbDxXYWxsVGlt
ZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxh
enlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC03NDIsNyArNzQyLDcgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QKICAgICByZXR1
cm4gbV9leHBpcmVzOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJh
c2U6Omxhc3RNb2RpZmllZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21t
b25GaWVsZHNPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDBlOTdmZWU5YzZkNjVhMzgyZDZiYzU2
MTZmZmE5MWRlNzc2Yjc3MWIuLmY1YzA5NzBiMDMxYTJlOWUyYTE3NmFmODFlNmNmNTEwYWNlNGNi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBTdHJp
bmcgaHR0cFN0YXR1c1RleHQ7CiAgICAgICAgIFN0cmluZyBodHRwVmVyc2lvbjsKICAgICAgICAg
SFRUUEhlYWRlck1hcCBodHRwSGVhZGVyRmllbGRzOwotICAgICAgICBPcHRpb25hbDxOZXR3b3Jr
TG9hZE1ldHJpY3M+IG5ldHdvcmtMb2FkTWV0cmljczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxO
ZXR3b3JrTG9hZE1ldHJpY3M+IG5ldHdvcmtMb2FkTWV0cmljczsKICAgICAgICAgVHlwZSB0eXBl
OwogICAgICAgICBUYWludGluZyB0YWludGluZzsKICAgICAgICAgYm9vbCBpc1JlZGlyZWN0ZWQ7
CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUlu
Zm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUo
aW5mbyk7IH0KLSAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9OwogICAgIGJvb2wgdXNlZExlZ2FjeVRMUygpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlZExlZ2FjeVRMUyA9PSBVc2VkTGVnYWN5VExTOjpZZXM7IH0KICAg
ICB2b2lkIHNldFVzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUyB1c2VkKSB7IG1fdXNlZExlZ2Fj
eVRMUyA9IHVzZWQ7IH0KICAgICAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zSW1tdXRh
YmxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZVZhbGlkYXRvckZp
ZWxkcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29uZHM+IGNhY2hl
Q29udHJvbE1heEFnZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29u
ZHM+IGNhY2hlQ29udHJvbFN0YWxlV2hpbGVSZXZhbGlkYXRlKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxTZWNvbmRzPiBhZ2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxXYWxsVGltZT4gZXhwaXJlcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPFdhbGxUaW1lPiBsYXN0TW9kaWZpZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY2FjaGVDb250cm9sU3RhbGVX
aGlsZVJldmFsaWRhdGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBkYXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBleHBpcmVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gbGFzdE1vZGlmaWVkKCkgY29uc3Q7CiAgICAgY29uc3QgUGFyc2VkQ29u
dGVudFJhbmdlJiBjb250ZW50UmFuZ2UoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNl
IDogdWludDhfdCB7IFVua25vd24sIE5ldHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJW
YWxpZGF0aW9uLCBNZW1vcnlDYWNoZSwgTWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24sIFNlcnZp
Y2VXb3JrZXIsIEFwcGxpY2F0aW9uQ2FjaGUsIERPTUNhY2hlLCBJbnNwZWN0b3JPdmVycmlkZSB9
OwpAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0
cEhlYWRlckZpZWxkczsKICAgICBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2Fk
TWV0cmljczsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRp
ZmljYXRlSW5mbzsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBt
X2NlcnRpZmljYXRlSW5mbzsKIAogcHJpdmF0ZToKICAgICBtdXRhYmxlIE1hcmthYmxlPFNlY29u
ZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2FnZTsKQEAgLTMyMCw3ICszMjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNwb25zZSkKIHsKICAg
ICBBU1NFUlQocmVzcG9uc2UubV9pc051bGwpOwotICAgIE9wdGlvbmFsPGJvb2w+IHJlc3BvbnNl
SXNOdWxsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzcG9uc2VJc051bGw7CiAgICAgZGVj
b2RlciA+PiByZXNwb25zZUlzTnVsbDsKICAgICBpZiAoIXJlc3BvbnNlSXNOdWxsKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMjksNDMgKzMyOSw0MyBAQCBib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZUJhc2UmIHJl
c3BvbgogCiAgICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFVS
TD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX3Vy
bCA9IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKICAgICBkZWNvZGVyID4+IG1pbWVUeXBl
OwogICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25z
ZS5tX21pbWVUeXBlID0gV1RGTW92ZSgqbWltZVR5cGUpOwogCi0gICAgT3B0aW9uYWw8aW50NjRf
dD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OwogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzcG9uc2UubV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSAqZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdGV4dEVuY29kaW5nTmFtZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IHRleHRFbmNvZGluZ05hbWU7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0RW5jb2RpbmdOYW1lOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1fdGV4dEVuY29kaW5nTmFtZSA9IFdURk1v
dmUoKnRleHRFbmNvZGluZ05hbWUpOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0cFN0
YXR1c1RleHQ7CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBodHRwU3RhdHVzVGV4dDsK
ICAgICBkZWNvZGVyID4+IGh0dHBTdGF0dXNUZXh0OwogICAgIGlmICghaHR0cFN0YXR1c1RleHQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2h0dHBTdGF0dXNUZXh0ID0g
V1RGTW92ZSgqaHR0cFN0YXR1c1RleHQpOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0
cFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBodHRwVmVyc2lvbjsKICAg
ICBkZWNvZGVyID4+IGh0dHBWZXJzaW9uOwogICAgIGlmICghaHR0cFZlcnNpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2h0dHBWZXJzaW9uID0gV1RGTW92ZSgqaHR0
cFZlcnNpb24pOwogCi0gICAgT3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gaHR0cEhlYWRlckZpZWxk
czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IGh0dHBIZWFkZXJGaWVsZHM7CiAg
ICAgZGVjb2RlciA+PiBodHRwSGVhZGVyRmllbGRzOwogICAgIGlmICghaHR0cEhlYWRlckZpZWxk
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzczLDU2ICszNzMsNTYgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9u
c2VCYXNlJiByZXNwb24KIAogICAgIC8vIFRoZSBuZXR3b3JrTG9hZE1ldHJpY3MgaW5mbyBpcyBv
bmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9yZWQgaW4gZGlzayBjYWNoZS4KICAgICBpZiBj
b25zdGV4cHIgKERlY29kZXI6OmlzSVBDRGVjb2RlcikgewotICAgICAgICBPcHRpb25hbDxCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPj4gbmV0d29ya0xvYWRNZXRyaWNzOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+PiBuZXR3b3JrTG9hZE1ldHJpY3M7CiAgICAg
ICAgIGRlY29kZXIgPj4gbmV0d29ya0xvYWRNZXRyaWNzOwogICAgICAgICBpZiAoIW5ldHdvcmtM
b2FkTWV0cmljcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzcG9uc2Uu
bV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBXVEZNb3ZlKCpuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPHNob3J0PiBodHRwU3RhdHVzQ29kZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNob3J0PiBodHRwU3RhdHVzQ29kZTsKICAgICBkZWNvZGVyID4+IGh0dHBTdGF0dXNDb2Rl
OwogICAgIGlmICghaHR0cFN0YXR1c0NvZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlID0gV1RGTW92ZSgqaHR0cFN0YXR1c0NvZGUpOwogCi0g
ICAgT3B0aW9uYWw8T3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPj4gY2VydGlmaWNhdGVJbmZvOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+PiBjZXJ0aWZp
Y2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2NlcnRp
ZmljYXRlSW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CiAKLSAgICBPcHRpb25hbDxT
b3VyY2U+IHNvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZT4gc291cmNlOwogICAgIGRl
Y29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzcG9uc2UubV9zb3VyY2UgPSBXVEZNb3ZlKCpzb3VyY2UpOwogCi0gICAgT3B0aW9u
YWw8VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+IHR5cGU7CiAgICAgZGVjb2Rl
ciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
c3BvbnNlLm1fdHlwZSA9IFdURk1vdmUoKnR5cGUpOwogCi0gICAgT3B0aW9uYWw8VGFpbnRpbmc+
IHRhaW50aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VGFpbnRpbmc+IHRhaW50aW5nOwogICAgIGRl
Y29kZXIgPj4gdGFpbnRpbmc7CiAgICAgaWYgKCF0YWludGluZykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcgPSBXVEZNb3ZlKCp0YWludGluZyk7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBp
c1JlZGlyZWN0ZWQ7CiAgICAgZGVjb2RlciA+PiBpc1JlZGlyZWN0ZWQ7CiAgICAgaWYgKCFpc1Jl
ZGlyZWN0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJl
Y3RlZCA9IFdURk1vdmUoKmlzUmVkaXJlY3RlZCk7CiAKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5
VExTPiB1c2VkTGVnYWN5VExTOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNl
ZExlZ2FjeVRMUzsKICAgICBkZWNvZGVyID4+IHVzZWRMZWdhY3lUTFM7CiAgICAgaWYgKCF1c2Vk
TGVnYWN5VExTKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV91c2VkTGVn
YWN5VExTID0gV1RGTW92ZSgqdXNlZExlZ2FjeVRMUyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBp
c1JhbmdlUmVxdWVzdGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSYW5nZVJlcXVlc3Rl
ZDsKICAgICBkZWNvZGVyID4+IGlzUmFuZ2VSZXF1ZXN0ZWQ7CiAgICAgaWYgKCFpc1JhbmdlUmVx
dWVzdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggYjAzZjJkMjE4
ODY1MTRjMjhlYjA5Mzc0ODFiYzBhOTM1M2QwY2Q2MC4uZDZjOGNiOTAxNzBmZWRmYzFiNTVjZTVk
N2VjZDgyZjVjZjgwYTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgRnVuY3Rpb248dm9pZAogICAgIHBsYXRmb3JtU2VuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5k
c2hha2UsIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYmIGhlYWRlckZp
ZWxkUHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFr
ZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJG
aWVsZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8IG1fc3RhdGUgPT0gQ2xvc2luZykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApp
bmRleCA0MTZlNTlhOTM0YTJiNGFhMTMzNTIwYTQ0M2YwYTEwNjExZGY3NzFhLi5jYTExYTYxM2E2
OTEwZDg2NmI4NTk3ZTJhMjgyMzQ0ZGQyZTBlNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+KTsKLSAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
T3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgYm9vbCk+KTsKKyAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFr
ZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiwgRnVuY3Rp
b248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8gRGlzY29ubmVjdCBh
ZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7
CiAgICAgdmlydHVhbCBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSA9IDA7CkBAIC02Myw3ICs2Myw3
IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNo
YWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOwogCiAgICAgVVJMIG1fdXJs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbC5jcHAKaW5kZXggNzBmZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRm
YWM4NzgzYTVjMi4uYzVmMmVhNzgwY2I3YmY1ODBiNmMwYzYwODhhZDBmYjUxM2JiNWQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBzaXplX3QgcmVtb3Zl
VGVybWluYXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoCiAgICAgcmV0dXJuIGRhdGFMZW5ndGggLSAyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8c3Rk
OjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFG
b3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFBy
b3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWly
PFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTgog
ICAgIHJldHVybiBzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IGRhdGEsIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCB9OwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBs
YXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxk
UHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rpb248dm9pZChi
b29sLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29va2llRGF0YTsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUlu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
LmgKaW5kZXggY2VkYjBkMDJiNDJlZTEyZDg3OTJmMzk5YmIyMDVmNjlhOThjZTQwNi4uOTE5Mzcw
YTBiY2RlNjAyNjM0MTI4YzkyZGVhOGJiMzQyZDE2NmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0
ZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBj
b25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBl
OjpOb25lOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2Ugewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYpOwotICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGOjpQZXJzaXN0ZW5jZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0
ZUluZm9DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRp
ZmljYXRlSW5mb0NGTmV0LmNwcAppbmRleCAyMDFmYmQ5N2VmYmYzYTkwYzQ4OTAxOWE3NWQ2OWUy
ODllYjE5ZTU5Li5kMDZhODUwYWVlMGNkMGVhYjk0OTQ1ZTk0ZTQ5MjVkMGQyZjRkNjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5m
b0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRp
ZmljYXRlSW5mb0NGTmV0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgQ2VydGlmaWNhdGVJ
bmZvOjpjb250YWluc05vblJvb3RTSEExU2lnbmVkQ2VydGlmaWNhdGUoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBDZXJ0aWZpY2F0
ZUluZm86OnN1bW1hcnkoKSBjb25zdAorc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+
IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgYXV0byBjaGFpbiA9IGNl
cnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQpAQCAtMjAxLDkgKzIwMSw5IEBAIHN0
YXRpYyB2b2lkIGVuY29kZUNGRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkK
ICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlUHRyLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJl
Zj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogCiAgICAgaWYgKFVOTElLRUxZKCFpc0luQm91
bmRzPHNpemVfdD4oKnNpemUpKSkKQEAgLTIyOSw5ICsyMjksOSBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVTZWNUcnVzdFJlZihFbmNvZGVyJiBlbmNvZGVyLCBTZWNUcnVzdFJlZiB0cnVzdCkKICAgICBl
bmNvZGVDRkRhdGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxS
ZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVTZWNUcnVzdFJlZihEZWNvZGVyJiBkZWNvZGVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFNlY1RydXN0UmVmPj4gZGVjb2RlU2Vj
VHJ1c3RSZWYoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxib29sPiBoYXNUcnVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1RydXN0OwogICAgIGRlY29kZXIgPj4gaGFz
VHJ1c3Q7CiAgICAgaWYgKCFoYXNUcnVzdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKEVu
Y29kZXImIGVuY29kZXIsIENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbgogICAgIH0KIH0KIAot
c3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxDRkFycmF5UmVmPj4gZGVjb2RlQ2VydGlmaWNhdGVD
aGFpbihEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENG
QXJyYXlSZWY+PiBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
c2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMzEyLDkgKzMxMiw5IEBAIHZvaWQgQ29kZXI8V2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkNlCiAgICAgfQogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVy
PFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZvVHlwZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJ
bmZvVHlwZTsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUluZm9UeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCBhNTFiZGI4ZTMyNWIzMzc2ZDE0
YzZmNGY1ZTgwN2QzODFkYmI4ZDZlLi44MjcyZjc2ZDM4N2QxOWYxNWY5MzliM2I3Y2E0NGVhYmMw
Yzk3MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtNzks
NyArNzksNyBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSB0b0NGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENvbwogICAgIHJldHVybiBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1SZXRhaW5QdHI8Q0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGlj
eSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxIVFRQQ29va2ll
QWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vz
c2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsK
ICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRy
dWUgfTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVJl
Zj4gcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgQ0ZVUkxSZWYgdQogICAgIHJl
dHVybiBjb29raWU7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
Piwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAogewogICAgIGF1dG8gdXJsQ0YgPSB1cmwuY3JlYXRlQ0ZVUkwoKTsKICAgICBhdXRvIGNv
b2tpZSA9IHBhcnNlRE9NQ29va2llKGNvb2tpZVN0cmluZywgdXJsQ0YuZ2V0KCkpOwpAQCAtMjY5
LDcgKzI2OSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVm
IGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yODQsNyArMjg0LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0zMTYsNyArMzE2LDcg
QEAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZUFj
Y2VwdFBvbGljeSgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaAppbmRleCBkNjc3MjgwZDJiNWU3YjA1M2EyNDBjMTU1ZDY0YmM4ODFmMTczN2JiLi43MzMw
YWE5MzM5MjQ3OTFmMTI5MmMwODQ3OTIxZTNiMzY3NDkzZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaApAQCAtNTQsMTEgKzU0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRMZWdhY3lUTFNFbmFibGVkKGJvb2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVu
Y3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0
Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29u
c3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9p
ZChib29sLCBib29sKT4mJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2
b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ2xvc2UoKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5k
SW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0Rh
dGEoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3Qg
VVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYs
IGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAppbmRleCBlNjdlODNjNmIxNmVmYmNjMjU4MmMzYTg2MjQyZjU1ZjljNGI1MmUx
Li42MjU0ODViZjFjMGU4ZTU4MTliZjY1NDA1NWJkMzg2NDM3MTgzYTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03MTQsNyArNzE0LDcgQEAgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRsZUltcGwoKQogICAgIEFTU0VSVCghbV9wYWNS
dW5Mb29wU291cmNlKTsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFtX3dyaXRlU3RyZWFtKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCmluZGV4IDhh
NTA2NTBjZWE4NjJlMTU1ZjI1MzNiNGZkZDczOWY3YjgzYzE2ZDkuLjEwZWM3NWE3ZWVlODc4NDFj
ZTAxMmI5YWYxOWI0NjcwYjBjMTkyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpAQCAtODQsNyArODQsNyBAQCBzdGF0
aWMgZG91YmxlIGNvb2tpZUNyZWF0ZWQoTlNIVFRQQ29va2llICpjb29raWUpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29r
aWUgKmNvb2tpZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29va2llRXhwaXJ5KE5T
SFRUUENvb2tpZSAqY29va2llKQogewogICAgIE5TRGF0ZSAqZXhwaXJ5RGF0ZSA9IGNvb2tpZS5l
eHBpcmVzRGF0ZTsKICAgICBpZiAoIWV4cGlyeURhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCBkOTc4MmJiMTA3MDQ2NjI1YWQwOTJjZGFmNTIxMTlmNDE0YTky
Y2RiLi41OWM1NjI3YzQ2ZGE5NmM2NjliZjM4MDA4M2Y2Yjc3YzdlNmExZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCBDb29raWVT
dG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZU9ic2Vy
dmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFnZU9ic2VydmVyOwogfQogCi1S
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7
CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFn
ZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1
ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAgLTI1MSwxMCArMjUxLDEwIEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0aWVzKGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvCiB9CiAjZW5kaWYKIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBj
b29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5T
VVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVT
aXRlSW5mbywgTlNTdHJpbmcgKnBhcnRpdGlvbiA9IG51bGxwdHIpCitzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGNvb2tpZXNGb3JVUkwoTlNIVFRQQ29va2llU3RvcmFnZSAqc3RvcmFnZSwgTlNV
UkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTYW1l
U2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TU3RyaW5nICpwYXJ0aXRpb24gPSBudWxscHRyKQog
ewotICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVSTDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0
aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1c2UgT3B0aW9uYWw8PiB0byBlbnN1cmUgdGhp
cyBpbnZhcmlhbnQuCi0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TQXJyYXk+PiBjb29raWVzUHRy
OworICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVSTDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0
aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1c2Ugc3RkOjpvcHRpb25hbDw+IHRvIGNoZWNr
IHRoaXMgaW52YXJpYW50IGFuZCBjcmFzaCBpZiBpdCdzIG5vdCBtZXQuCisgICAgc3RkOjpvcHRp
b25hbDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvb2tpZXNQdHI7CiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29v
a2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsKICAgICB9OwpAQCAtMzAzLDcgKzMwMyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBD
b29raWVTdG9yYWdlUmVmIGNvb2tpZVN0CiAjZW5kaWYKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAorUmV0YWluUHRy
PE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlm
ICghY29va2llU3RvcmFnZSkgewpAQCAtMzMxLDcgKzMzMSw3IEBAIE5TSFRUUENvb2tpZSAqTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29v
a2llICpjCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK1JldGFp
blB0cjxOU0FycmF5PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91
bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTM0NCw3ICszNDQsNyBAQCBSZXRhaW5Q
dHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgYwogICAgIHJldHVybiBodHRwQ29va2llc0ZvclVSTChjb29raWVTdG9y
YWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGlu
Y2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIApAQCAtMzkyLDEyICszOTIs
MTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29r
aWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJl
Q29va2llcywgc2hvdWxkQXNrSVRQLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKTsKIH0KQEAgLTQwNyw3ICs0MDcsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbgogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0
UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVy
bCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5j
bHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsK
IH0KIAotc3RhdGljIE5TSFRUUENvb2tpZSAqcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0
cmluZywgTlNVUkwqIGNvb2tpZVVSTCwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUp
CitzdGF0aWMgTlNIVFRQQ29va2llICpwYXJzZURPTUNvb2tpZShTdHJpbmcgY29va2llU3RyaW5n
LCBOU1VSTCogY29va2llVVJMLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1l
KQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBPbiAxMC41LCBOU0hUVFBDb29r
aWVTdG9yYWdlIHdvdWxkIHN0b3JlIGFuIGVtcHR5IGNvb2tpZSwKICAgICAvLyB3aGljaCB3b3Vs
ZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgpAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyBOU0hU
VFBDb29raWUgKnBhcnNlRE9NQ29va2llKFN0cmluZyBjb29raWVTdHJpbmcsIE5TVVJMKiBjb29r
aWVVUkwsIE9wdGlvCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIApA
QCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAKICAgICBOU1VSTCAq
Y29va2llVVJMID0gdXJsOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY29va2llQ2FwOworICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY29va2llQ2FwOwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgY29va2llQ2FwID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdp
c3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKICNlbmRpZgpAQCAtNDkwLDcg
KzQ5MCw3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVBY2NlcHRQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpOZXZlcjsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5oCmluZGV4IDBkYjg3NzRmODVhMzYzY2M1YTMyNWYyZjkzZWJiZGU3NWE4ZmM5MjYu
LjAwYzIwMDAyNTE1OTkxYWMwZGQ0ZWQzMDkxM2IyMmRkYzY4YWNlNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERh
dGE7CiAgICAgY2xhc3MgTWVkaWFSZXNvdXJjZUNsaWVudDsKICAgICB2b2lkIGdpdmVSZXNwb25z
ZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0YSYpOwotICAgIHZvaWQgZ2l2ZVJlc3BvbnNl
VG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KiwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiwgT3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBl
eHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJik7CisgICAgdm9pZCBnaXZl
UmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRh
Jik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERhdGE+PiBtX21hcDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZmRlMGZmY2RiZjRkYWZhOWIy
Y2IwNDUwYzU5MDRlNWM4ZWNmZWM2Zi4uNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVh
ZjdkZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNzMsNyArNzMsNyBA
QCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFuZ2VSZXNwb25zZUdlbmVyYXRvcigpCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAotc3RhdGljIFJlc291cmNlUmVzcG9uc2Ugc3lu
dGhlc2l6ZWRSZXNwb25zZUZvclJhbmdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFs
UmVzcG9uc2UsIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcGFyc2VkUmVxdWVzdFJhbmdlLCBP
cHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkKK3N0YXRpYyBSZXNvdXJjZVJlc3Bv
bnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHBhcnNlZFJlcXVlc3RS
YW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gYmVnaW4gPSBwYXJzZWRSZXF1ZXN0UmFu
Z2UuYmVnaW47CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKICAgICBkYXRh
LT50YXNrRGF0YS5yZW1vdmUodGFzayk7CiB9CiAKLXZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIE9w
dGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQor
dm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFy
c2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29u
dGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7CkBAIC0xNjMsMTMgKzE2MywxMyBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgIH0KIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25z
dCBEYXRhJiBkYXRhKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCiAg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgLy8gRklYTUU6IFJlc291
cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIE9w
dGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCisgICAg
Ly8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBz
aG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRo
aXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3Jp
Z2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKICAgICBpZiAoZXhwZWN0ZWRD
b250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAppbmRleCBjNjBmMWI0
MGUyYjEzNDIxMTEyZjU4MGZhMDNkNTEwY2FmNGNkOGI3Li44MTNkMmI1NDkxYTU1NDg5OGEzZjQ5
NGM4YTM1NmEzZTQyYTBjOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaApAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogICAgIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgcHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkoY29uc3QgVVJMJiwgYm9vbCBpc0ZvclByb3h5KTsK
ICAgICBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25z
dCBDdXJsUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgUHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZUZvclNlcnZlclRydXN0KGNvbnN0IFVSTCYsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYpOwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBkZXRlcm1pbmVQcm94eVBv
cnQoY29uc3QgVVJMJik7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGV0ZXJtaW5lUHJv
eHlQb3J0KGNvbnN0IFVSTCYpOwogICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lRnJvbUN1cmxBdXRoKGxvbmcpOwogICAgIFN0cmluZyBw
YXJzZVJlYWxtKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHJlbW92ZUxlYWRp
bmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAKaW5kZXggOTNjZDg4ZjMwYTY3OTc2NGE5ODhjNDhlM2VmOWY4M2VmMjQ4N2I5
Yi4uMGZmOTFiYjRmOTQxN2M3OTI3OTM5YTcxMzFiNzIzOTBkYzBiODE4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUHJvdGVjdGlv
blNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJU
cnVzdChjb25zdCBVUkwKICAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9T
dHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlX29yKDApKSwgc2VydmVyVHlwZSwg
U3RyaW5nKCksIGF1dGhlbnRpY2F0aW9uU2NoZW1lLCBjZXJ0aWZpY2F0ZUluZm8pOwogfQogCi1P
cHRpb25hbDx1aW50MTZfdD4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmRldGVybWluZVByb3h5
UG9ydChjb25zdCBVUkwmIHVybCkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpkZXRlcm1pbmVQcm94eVBvcnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IHNvY2tzUG9ydCA9IDEwODA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRl
eCBkY2EyMGJhM2M1NDIxNjBhMzE4NTcwYzY3ZGE1MjBkN2YzY2YyYTcwLi5mMjY4ZTNiOTE1MThh
YzFjM2ZkZjA1YmRlNzNlOGFmNTY2NThmYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmlj
YXRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KIAotICAgIE9w
dGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3VtbWFyeSgpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3Q7CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlQ2hhaW4uaXNFbXB0eSgpOyB9CiAK
QEAgLTgyLDIxICs4MiwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8+IHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgY2VydGlmaWNhdGU7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPGludD4gdmVyaWZpY2F0aW9uRXJyb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB2ZXJpZmljYXRpb25FcnJvcjsKICAgICAgICAgZGVjb2RlciA+PiB2ZXJpZmljYXRpb25FcnJv
cjsKICAgICAgICAgaWYgKCF2ZXJpZmljYXRpb25FcnJvcikKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBudW1PZkNlcnRzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtT2ZDZXJ0czsKICAgICAgICAgZGVjb2RlciA+
PiBudW1PZkNlcnRzOwogICAgICAgICBpZiAoIW51bU9mQ2VydHMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2Vy
dGlmaWNhdGVDaGFpbiBjZXJ0aWZpY2F0ZUNoYWluOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bU9mQ2VydHMudmFsdWUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZT4gY2VydGlmaWNhdGU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlOwogICAg
ICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGVjMGY0YmEwY2JlNDFmZDFlY2U4
YWI4ZmYyZjgzNjVmYjZhMGE5YjguLmUwZWVmNjg4MGYyYjY3ZTA5ZTIzM2RlYzc0NWJkMDgzNDg3
OWFhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
ZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQ2VydGlm
aWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShj
b25zdCB1aW50OF90KiBidWYKICAgICByZXR1cm4gY2VydGlmaWNhdGU7CiB9CiAKLU9wdGlvbmFs
PENlcnRpZmljYXRlU3VtbWFyeT4gQ2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBDZXJ0aWZpY2F0ZUluZm86OnN1bW1hcnko
KSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZpY2F0ZUNoYWluLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGRiYjA1ODM4NWRhYjdiNmUzOTVlMTU5
ZDU4MWNmOTA3NDdiZDE2MGEuLjNjNGFkYTNlNTBiYmM3N2Q4YmRkZWQwMmYwMWUyYzdlNjYwMDBm
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0Nv
b2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FM
SVRFX1JPVzsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFy
Y2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBj
b25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1
cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHJlcXVlc3RVcmwsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGh0dHBP
bmx5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mIHNlc3Npb24pCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUzMCw3ICs1MzAs
NyBAQCBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAg
ICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuc3RlcCgpKTsKIH0KIAot
Ym9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2Us
IE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQorYm9vbCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gY2FwcGVkTGlmZXRpbWUpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCAwOTFlOTQ3NzcxODZk
YjljNjA0OGYxNzc0YTc0ZmNmMTU5YWU0NTY3Li5jNGViNjdkNmY3YzMzNDA3NmIzMmI3OThkY2Vh
NDBiNTcwNjgxZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaApAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgQ29va2ll
QWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0UG9saWN5
OyB9CiAKICAgICBIYXNoU2V0PFN0cmluZz4gYWxsRG9tYWlucygpOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiBodHRwT25seSwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxD
b29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBj
YXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgYm9vbCBzZXRDb29raWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNl
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gc3RkOjpudWxsb3B0KTsK
ICAgICBib29sIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKIAogICAgIGJvb2wgZGVsZXRlQ29v
a2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IGUz
NTA0NDgyMDYyMWZiZjc5MmNlZDcwNmQxZDAxNGZjZTNkMzUwZGMuLjM5ZDMyNWJkMDY5MmI0NmY2
NTQzNTY2ZTk1YjRhZTg5MTZjOTIyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTgxLDEzICs4MSwxMyBAQCBib29s
IGRvbWFpbk1hdGNoKGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBjb25zdCBTdHJpbmcmIGhv
c3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJz
ZUV4cGlyZXNNUyhjb25zdCBjaGFyKiBleHBpcmVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBwYXJzZUV4cGlyZXNNUyhjb25zdCBjaGFyKiBleHBpcmVzKQogewogICAgIGRvdWJsZSB0
bXAgPSBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZXhwaXJlcyk7
CiAgICAgaWYgKGlzbmFuKHRtcCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
T3B0aW9uYWw8ZG91YmxlPiB7dG1wfTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxkb3VibGU+
IHt0bXB9OwogfQogCiBzdGF0aWMgdm9pZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3Ry
aW5nJiBhdHRyaWJ1dGUsIGJvb2wmIGhhc01heEFnZSwgQ29va2llJiByZXN1bHQpCkBAIC0xMzcs
NyArMTM3LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKICAgICB9CiB9CiAKLU9wdGlvbmFs
PENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQorc3Rk
OjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2ll
TGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5sZW5ndGgoKSA+PSBNQVhfQ09PS0lFX0xJTkUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAppbmRleCA5NTZjMTUzYTkzYmYzMDE3NDNi
OGVlYWRjMTE5MDAwMTdmNTEyM2VjLi44NGQzOGRmN2UwYmVjNzM0YTgzNDMyMDkzNDVjZmU4ZDdm
ODUwZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVVdGlsLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IENvb2tpZTsKIAogbmFtZXNwYWNl
IENvb2tpZVV0aWwgewogCi1PcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0
IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0
IFN0cmluZyYpOwogCiBib29sIGlzSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCBmZmU3NzBhZGI4ZjJiMWNmMDYwMGVjZDMxM2I4M2Y5MDk0NjU3ODgxLi5jMzY4NTViNWFj
N2U5ZjgzYzdiYmUyZDYyZDY4OTI1NDY0ZjgxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIHJlYWQoY29uc3QgY2hhciogbmFtZSkgeyByZXR1
cm4gOjpnZXRlbnYobmFtZSk7IH0KICAgICBib29sIGRlZmluZWQoY29uc3QgY2hhciogbmFtZSkg
eyByZXR1cm4gcmVhZChuYW1lKSAhPSBudWxscHRyOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBPcHRpb25hbDxUPiByZWFkQXMoY29uc3QgY2hhciogbmFtZSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFQ+IHJlYWRBcyhjb25zdCBjaGFyKiBuYW1lKQogICAg
IHsKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHZhbHVlU3RyID0gcmVhZChuYW1lKSkgewogICAg
ICAgICAgICAgVCB2YWx1ZTsKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIEN1cmxIYW5kbGU6OmVu
YWJsZUNvbm5lY3Rpb25Pbmx5KCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJM
T1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xKTsKIH0KIAotT3B0aW9uYWw8
U3RyaW5nPiBDdXJsSGFuZGxlOjpnZXRQcm94eVVybCgpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Q3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogewogICAgIGF1dG8mIHByb3h5ID0gQ3VybENvbnRl
eHQ6OnNpbmdsZXRvbigpLnByb3h5U2V0dGluZ3MoKTsKICAgICBpZiAocHJveHkubW9kZSgpID09
IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQpAQCAtNjgxLDcgKzY4MSw3IEBAIE9w
dGlvbmFsPFN0cmluZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogICAgIHJldHVybiBwcm94
eS51cmwoKTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2Rl
KCkKK3N0ZDo6b3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2RlKCkKIHsK
ICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjk0
LDcgKzY5NCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgp
CiAgICAgcmV0dXJuIHJlc3BvbnNlQ29kZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRs
ZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKK3N0ZDo6b3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6
Z2V0SHR0cENvbm5lY3RDb2RlKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxI
YW5kbGU6OmdldEh0dHBDb25uZWN0Q29kZSgpCiAgICAgcmV0dXJuIGh0dHBDb25uZWN0Q29kZTsK
IH0KIAotT3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkK
K3N0ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkK
IHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
NzIxLDcgKzcyMSw3IEBAIE9wdGlvbmFsPGxvbmcgbG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVu
dExlbmd0aCgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY29udGVudExlbmd0
aCk7CiB9CiAKLU9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQor
c3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwQXV0aEF2YWlsKCkKIHsKICAg
ICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzM0LDcg
KzczNCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQog
ICAgIHJldHVybiBodHRwQXV0aEF2YWlsYWJsZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhh
bmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQorc3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxl
OjpnZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBPcHRpb25hbDxsb25nPiBDdXJs
SGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiAgICAgcmV0dXJuIHByb3h5QXV0aEF2YWlsYWJs
ZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cFZlcnNpb24oKQorc3Rk
OjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwVmVyc2lvbigpCiB7CiAgICAgaWYg
KCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc2MCw3ICs3NjAs
NyBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwVmVyc2lvbigpCiAgICAgcmV0
dXJuIHZlcnNpb247CiB9CiAKLU9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRs
ZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kcyYgZG9tYWluTG9va3Vw
U3RhcnQpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0
TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kcyYgZG9tYWluTG9va3VwU3RhcnQp
CiB7CiAgICAgZG91YmxlIG5hbWVMb29rdXAgPSAwLjA7CiAgICAgZG91YmxlIGNvbm5lY3QgPSAw
LjA7CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmkKICAgICB9CiB9
CiAKLU9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gQ3VybEhhbmRsZTo6Y2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBDdXJsSGFuZGxlOjpjZXJ0
aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIGlmICghbV9zc2xWZXJpZmllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggZjFkMTVkNWY1YjMzZjU5MTdlYWI1YzExZDYw
YmM5NGJlNGIwODYwNi4uMmQ2NTNjYTNmZjk4M2RmYWM4YWEzZTNkNGMyZTkzMWU3Yjk1MWJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKQEAgLTI4OSwxOCArMjg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnQ2Fs
bGJhY2tGdW5jdGlvbihjdXJsX2RlYnVnX2NhbGxiYWNrLCB2b2lkKik7CiAKICAgICAvLyBTdGF0
dXMKLSAgICBPcHRpb25hbDxTdHJpbmc+IGdldFByb3h5VXJsKCk7Ci0gICAgT3B0aW9uYWw8bG9u
Zz4gZ2V0UmVzcG9uc2VDb2RlKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0SHR0cENvbm5lY3RD
b2RlKCk7Ci0gICAgT3B0aW9uYWw8bG9uZyBsb25nPiBnZXRDb250ZW50TGVuZ3RoKCk7Ci0gICAg
T3B0aW9uYWw8bG9uZz4gZ2V0SHR0cEF1dGhBdmFpbCgpOwotICAgIE9wdGlvbmFsPGxvbmc+IGdl
dFByb3h5QXV0aEF2YWlsKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0SHR0cFZlcnNpb24oKTsK
LSAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGdldE5ldHdvcmtMb2FkTWV0cmljcyhj
b25zdCBXVEY6OlNlY29uZHMmIGRvbWFpbkxvb2t1cFN0YXJ0KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZ2V0UHJveHlVcmwoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldFJlc3Bv
bnNlQ29kZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZz4gZ2V0SHR0cENvbm5lY3RDb2RlKCk7
CisgICAgc3RkOjpvcHRpb25hbDxsb25nIGxvbmc+IGdldENvbnRlbnRMZW5ndGgoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGxvbmc+IGdldEh0dHBBdXRoQXZhaWwoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGxvbmc+IGdldFByb3h5QXV0aEF2YWlsKCk7CisgICAgc3RkOjpvcHRpb25hbDxsb25nPiBnZXRI
dHRwVmVyc2lvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBnZXRO
ZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgV1RGOjpTZWNvbmRzJiBkb21haW5Mb29rdXBTdGFydCk7
CiAgICAgdm9pZCBhZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKIAogICAgIGludCBzc2xFcnJvcnMoKSBjb25zdDsKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0
ZUluZm8+IGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKIAogICAgIHN0YXRpYyBsb25nIGxv
bmcgbWF4Q3VybE9mZlQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAppbmRleCA3OWRkYzM5OTI4
YTgzOWNjYTc1NmQ4MjBjNGJlMWNlNGFkZWUzZGRjLi4yODk1OGE5Y2RiZWRiZWRlMjIyYWQ3Zjdi
OGVkODBkOTkyNTgzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21wdXRlQ29udGVudExlbmd0aCgpCiAgICAg
ICAgIG1fdG90YWxTaXplICs9IGVsZW1lbnQubGVuZ3RoSW5CeXRlcygpOwogfQogCi1PcHRpb25h
bDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBz
aXplKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFy
KiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9mb3JtRGF0YSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBPcHRpb25hbDxzaXplX3Q+
IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogICAg
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUgLSB0b3RhbFJlYWRCeXRlczsKICAgICAgICAg
Y2hhciogYnVmZmVyUG9zaXRpb24gPSBidWZmZXIgKyB0b3RhbFJlYWRCeXRlczsKIAotICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IHJlYWRCeXRlcyA9IHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRCeXRlcyA9IHN3aXRjaE9uKGVsZW1lbnQu
ZGF0YSwKICAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8
c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWQoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6
ZSkKICAgICByZXR1cm4gdG90YWxSZWFkQnl0ZXM7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gQ3Vy
bEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkRmlsZURhdGEmIGZpbGVEYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQorc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21GaWxlKGNvbnN0IEZv
cm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSwgY2hhciogYnVmZmVyLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBpZiAobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVEYXRhLmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQpOwpAQCAtMTczLDcgKzE3Myw3IEBAIE9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3Ry
ZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkCiAgICAgcmV0
dXJuIHJlYWRCeXRlczsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06
OnJlYWRGcm9tRGF0YShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEsIGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IHNpemUpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFk
RnJvbURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBz
aXplKQogewogICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGRhdGEuc2l6ZSgpIC0gbV9kYXRhT2Zm
c2V0OwogICAgIGNvbnN0IGNoYXIqIGVsZW1lbnRCdWZmZXIgPSBkYXRhLmRhdGEoKSArIG1fZGF0
YU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRm9ybURhdGFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaAppbmRleCAwOTNiMjk3MTQ0NjhlZDQzYWQ3NDgyZWJk
MDJmZmY3YzI4OTBmMDE0Li5iOWExMDBkYzhkZjVhZGEzZmVjMWQ0NDE1OWE5MTJhOWEwMzdhNDA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAgIGJv
b2wgc2hvdWxkVXNlQ2h1bmtUcmFuc2ZlcigpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bFNpemUoKTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gcmVhZChjaGFyKiwgc2l6ZV90KTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcmVhZChjaGFyKiwgc2l6ZV90KTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxSZWFkU2l6ZSgpIHsgcmV0dXJuIG1fdG90YWxSZWFkU2l6ZTsgfQog
CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUNvbnRlbnRMZW5ndGgoKTsKIAotICAgIE9wdGlv
bmFsPHNpemVfdD4gcmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZp
bGVEYXRhJiwgY2hhciosIHNpemVfdCk7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbURh
dGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hhciosIHNpemVfdCk7CisgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHJlYWRGcm9tRmlsZShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxl
RGF0YSYsIGNoYXIqLCBzaXplX3QpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJv
bURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hhciosIHNpemVfdCk7CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IG1fZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCA3MDI0
ZWM3YzFlYjgyYjVjYjIzZGE1ODBiMmUzNmJhYjEwZGVkM2IwLi5mZTQxMDc2ZDc2YmFhZDIxYmNk
ZGM0YTBlMmFkM2I3NjdkNTIxNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOwogfQogCi1PcHRpb25hbDxT
dHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVz
cG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGZvciAoYXV0byBoZWFkZXIgOiByZXNwb25zZS5oZWFkZXJzKSB7CiAgICAgICAgIGF1dG8gc3Bs
aXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIpOwpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25h
bDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJs
UmVzcG9uc2UmIHJlc3BvbgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFs
PFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Vy
bE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsZW5ndGggPSBz
dHJsZW4oImJvdW5kYXJ5PSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA3MjBjNjk4MGVk
ZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxLi42ZWQ1NTZmNDJhMDU5MDFiMTliMGYxMDNi
MjJjNmE0OWYzMjYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTU3LDggKzU3LDggQEAg
cHJpdmF0ZToKICAgICAgICAgRW5kCiAgICAgfTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJp
bmc+IGV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnkoY29u
c3QgQ3VybFJlc3BvbnNlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBleHRy
YWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIHBy
b2Nlc3NDb250ZW50KCk7CiAgICAgYm9vbCBjaGVja0ZvckJvdW5kYXJ5KHNpemVfdCYgYm91bmRh
cnlTdGFydFBvc2l0aW9uLCBzaXplX3QmIGxhc3RQYXJ0aWFsTWF0Y2hQb3NpdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94
eVNldHRpbmdzLmNwcAppbmRleCBkZTA5MjdmZTFhM2E2ZGEzMTc4MGM1ODQ5NTNhMGE5NjBkNGUx
Yzk3Li5kNzQyM2IyOTBhMjhjNWUwMThjY2QyZmM5NWIzZWNmNWQ2YTAwMzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlT
ZXR0aW5ncy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJveHlQb3J0ID0gMTA4MDsKIAotc3RhdGljIE9w
dGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMJik7CitzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCYpOwogCiBDdXJsUHJveHlT
ZXR0aW5nczo6Q3VybFByb3h5U2V0dGluZ3MoVVJMJiYgcHJveHlVcmwsIFN0cmluZyYmIGlnbm9y
ZUhvc3RzKQogICAgIDogbV9tb2RlKE1vZGU6OkN1c3RvbSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9v
bCBwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseShjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gdXJs
LnByb3RvY29sSXMoInNvY2tzNCIpIHx8IHVybC5wcm90b2NvbElzKCJzb2NrczRhIikgfHwgdXJs
LnByb3RvY29sSXMoInNvY2tzNSIpIHx8IHVybC5wcm90b2NvbElzKCJzb2NrczVoIik7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFByb3h5UG9ydChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBhdXRvIHBvcnQgPSB1cmwucG9ydCgpOwogICAgIGlmIChwb3J0KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0
IFVSTCYgdXJsKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBVUkwgJnVybCkKIHsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSB8fCB1cmwuaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcAppbmRleCA2OWVjMjYyZGNiMmJlODI2YTg4YjgwMDk3ZmQw
OTdmNDRkYTM2NGM4Li42M2Y4MTRhNWJkOGE0MWE0YmFjMmEwNzkxMzA1MTg1YWQxMWRiNGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xIYW5kbGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ3VybFNTTEhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluCiAg
ICAgbV9hbGxvd2VkQ2xpZW50SG9zdHMuc2V0KGhvc3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7
IGNlcnRpZmljYXRlLCBrZXkgfSk7CiB9CiAKLU9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVu
dENlcnRpZmljYXRlPiBDdXJsU1NMSGFuZGxlOjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25z
dCBTdHJpbmcmIGhvc3ROYW1lKSBjb25zdAorc3RkOjpvcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpD
bGllbnRDZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9h
bGxvd2VkQ2xpZW50SG9zdHNMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5oCmluZGV4IDIyNjlkOTViYWNhODdhYjVm
MTM4ZGRiNjU3YmVkYjZiNDZmN2M1OTkuLmUwNzY4YTEyZTcyOGQzMjcwYWVmNDIxZmUwNzMwN2Rm
YzYwMmM0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTU0xIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5JZ25vcmVBbnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBPcHRpb25hbDxD
bGllbnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50
Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgTkVFRF9P
UEVOU1NMX1RIUkVBRF9TVVBQT1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggYjI0ZTliNmVkOWQ0NTAzY2M0MDU4MjAwNDU5ZTc5MWQwMTc4N2Y1OS4uNzYxOGRjYTQ0
ZDAwNDFkM2YzNzY0NTg3ZTE1ZjQwYzVjZTNjOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtNTcsOCArNTcsOCBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgog
ewogICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsKIAotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkg
PSBmb3JIVFRQSGVhZGVyID8gc3RkOjpudWxsb3B0IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9
OwotICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxv
cHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07CisgICAgYXV0byBzZWFyY2hIVFRQT25seSA9
IGZvckhUVFBIZWFkZXIgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgZmFs
c2UgfTsKKyAgICBhdXRvIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpu
dWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7IGZhbHNlIH07CiAKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5
LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIHN0ZDo6bnVsbG9wdCkpIHsKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7CkBAIC05NSwxMyArOTUsMTMgQEAg
Q29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25z
dAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lk
ZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lkZUNvb2tp
ZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlm
ZXRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRM
aWZldGltZSA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlw
dCwgY2FwcGVkTGlmZXRpbWUpOwogfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dAogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBz
ZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4g
eyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNl
IH07CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nv
b2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBhdXRvIGNvb2tpZXMgPSBjb29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0KTsKICAgICBpZiAoIWNvb2tpZXMpCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIFdlYktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2ll
cyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4geyBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKSwgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cAppbmRleCA4MTY0MjdiMGViNmUyODEwOWVhMjM3YjEyYWJkMzdiNjM3MzVlYjhhLi5mMTdmOGNi
ZjhkZmVhYTk2MDcxM2FkOGE0MDRiYzMxOGYxN2Q4NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOjpCSU9fZnJlZShtX2Jpbyk7CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBjb25z
dAorICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKICAgICAgICAg
YXV0byBsZW5ndGggPSA6OkJJT19nZXRfbWVtX2RhdGEobV9iaW8sICZkYXRhKTsKQEAgLTE1OCw3
ICsxNTgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlm
aWNhdGU+IHBlbURhdGFGcm9tQ3R4KFg1MDlfU1RPUkVfQwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJ
bmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCiB7CiAg
ICAgaWYgKCFjdHgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTUsNyArMjE1
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRTdWJqZWN0TmFtZShjb25zdCBYNTA5KiB4NTA5KQogICAg
IHJldHVybiBiaW8uZ2V0RGF0YUFzU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNv
bmRzPiBjb252ZXJ0QVNOMVRpbWVUb1NlY29uZHMoY29uc3QgQVNOMV9USU1FKiBhbnMxVGltZSkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNvbnZlcnRBU04xVGltZVRvU2Vjb25kcyhj
b25zdCBBU04xX1RJTUUqIGFuczFUaW1lKQogewogICAgIGlmICghYW5zMVRpbWUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIHZvaWQgZ2V0
U3ViamVjdEFsdE5hbWUoY29uc3QgWDUwOSogeDUwOSwgVmVjdG9yPFN0cmluZz4mIGRuc05hbWVz
LCBWZWN0b3IKICAgICB9CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFy
eT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pCiB7CiAgICAgQklPIGJpbyB7IHBlbSB9OwogICAgIGF1
dG8geDUwOSA9IGJpby5yZWFkWDUwOSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmgKaW5kZXggZWZjZGU5ODdiNjAwZDQxOGMz
OTkwMDVmNmNjNTI4NTI1YjZkYzA4MC4uNjhjNTU2MWY0ZTM3NmIzMGZlYTNlNmM4ODRjZTk2ZGVk
OTUwOTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L09wZW5TU0xIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvT3BlblNTTEhlbHBlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBPcGVuU1NM
IHsKIAotT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBjcmVhdGVDZXJ0aWZpY2F0
ZUluZm8oWDUwOV9TVE9SRV9DVFgqKTsKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3Vt
bWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pOworc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGNyZWF0ZUNlcnRpZmljYXRlSW5m
byhYNTA5X1NUT1JFX0NUWCopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1
bW1hcnk+IGNyZWF0ZVN1bW1hcnlJbmZvKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGVtKTsKIAog
fSAvLyBuYW1lc3BhY2UgT3BlblNTTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBiNzE1ODYz
NzJhYjY2YjhmMWFhZjU4MzQwMTVmOWQ3NDhmYThlZWYyLi4yZTE4YTI3OTY0ZmQ4MTkxZTQ2ZThk
N2IzNTY2N2I5YTMzOTAxNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMzI1LDcgKzMy
NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotT3B0aW9uYWw8Q3JlZGVudGlhbD4gUmVzb3VyY2VIYW5kbGU6OmdldENyZWRlbnRpYWwo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQorc3RkOjpvcHRp
b25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21f
cGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhl
IGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1MSHR0cFJlcXVlc3Qub3BlbigpLgogICAgIENyZWRlbnRp
YWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggZmFkNGVmOTE5ODEx
OGY1ZTZlNWVkN2QzYzE0Yjk5ZTU3NDU5MzQ1MS4uMmQwNTg0ZGFiNWNmZjZkMTQ5MDYyOTY0MmJh
ZWE2NTJmYWVhMDAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC00OSwxNCArNDks
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7CiAKICAgICBz
aXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogCiAgICAgdm9pZCBkaWRPcGVuKEN1cmxTdHJl
YW1JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA4
YmViM2I1M2I5ZGJlNGE2NDdjYmIzMTczMWQxNmE5NTMwZmZkMzRjLi4yZmVjZTAyOGVmZmRiZTg4
NTE4ZWM3YjhiZTI1OWIwYTA5MDg2Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tl
dFN0cmVhbUhhbmRsZUltcGwoKQogICAgIGRlc3RydWN0U3RyZWFtKCk7CiB9CiAKLU9wdGlvbmFs
PHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChpc1N0cmVhbUludmFsaWRhdGVkKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IGI0ZTUzZWRl
NTAxZDQ4MWM1NDIwYmQyODNhMmQwYTc1MTEwODBmMjEuLmU2YzU2Y2Y4MGUyMzEzMjg3MWM4MTQw
Nzk1YzUxMjFhYWQ3M2IxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiAgICAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gbV9yZXF1ZXN0UmVzdWx0OwogICAgIFJldGFpblB0cjxOU0NhY2hlZFVS
TFJlc3BvbnNlPiBtX2NhY2hlZFJlc3BvbnNlUmVzdWx0OwotICAgIE9wdGlvbmFsPFNjaGVkdWxl
UGFpckhhc2hTZXQ+IG1fc2NoZWR1bGVkUGFpcnM7CisgICAgc3RkOjpvcHRpb25hbDxTY2hlZHVs
ZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFBhaXJzOwogICAgIEJPT0wgbV9ib29sUmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGIxMWZhNzdkMWJmNDdhNGMwNDAzMmY1MWZkNGRmOTQ2
N2YyMTllMS4uNGJkM2ZlOWZkZGVkMGE5ZWVhZGNmNWUyNzBiYTM1OTUyOGYxZDFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotc3RhdGljIGJvb2wgc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKGNvbnN0IE9wdGlv
bmFsPFNjaGVkdWxlUGFpckhhc2hTZXQ+JiBwYWlycykKK3N0YXRpYyBib29sIHNjaGVkdWxlZFdp
dGhDdXN0b21SdW5Mb29wTW9kZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNjaGVkdWxlUGFpckhhc2hT
ZXQ+JiBwYWlycykKIHsKICAgICBpZiAoIXBhaXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvLmgKaW5kZXggY2IyNjA4NDY2NmI3MmU5YzhhZWY3ZTQwMjZkZGRmZTdlYjViYjg4Yy4u
NDkwZDk2NzY1NDg4NGUwODhkODAwOWU0ZWNhMDlmM2JjMTYyOTFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFT
aWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7
IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3VtbWFyeSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQo
KTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2VydGlmaWNhdGU7IH0KIApAQCAtNzgsOSArNzgsOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiB7CiAgICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0YSwgYnl0ZUFycmF5LT5sZW4pOwogICAgIH0K
IAotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+PiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBzaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzaXplOwogICAgICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xNDQsOSArMTQ0LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pj4gY2VydGlmaWNhdGVzRGF0YUxpc3Q7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0J5dGVBcnJheT4+PiBjZXJ0aWZpY2F0
ZXNEYXRhTGlzdDsKICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAg
ICAgICAgaWYgKCFjZXJ0aWZpY2F0ZXNEYXRhTGlzdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0
KCkpOwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0bHNFcnJvcnM7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRsc0Vycm9yczsKICAgICAgICAgZGVjb2RlciA+PiB0bHNF
cnJvcnM7CiAgICAgICAgIGlmICghdGxzRXJyb3JzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlMGU4ODJh
MzhiYjk5MTZhZWZmNDljOTFkZWEyYmViNTNjZGU5MmIwLi5kNDAxNmY4NmI0OTAzYTI1ODg2Mjkx
NDQ5MDY1YmFiZDU0NjgyNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3QgZ2NoYXIqIG5hbWUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91
bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAKQEAgLTU3MSw3
ICs1NzEsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKK3N0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBi
b29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxk
QXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTYy
OCwxMiArNjI4LDEyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
U2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3Ry
aW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVz
IH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQs
IGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSBjb25zdAogewogICAgIC8vIFNlY3VyZSBjb29raWVzIHdpbGwgc3RpbGwgb25s
eSBiZSBpbmNsdWRlZCBpZiB1cmwncyBwcm90b2NvbCBpcyBodHRwcy4KICAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFt
ZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmlu
ZGV4IDNlY2Y4NjYwMDVkYTZkYTljZWM3Yzc5MzBlNmE0ZjkzY2IzOWQ2ZTAuLjg4ZGYzNzQ4ZTk4
MGEyMmU3MWJkODM1ODY0Y2FmMjRiNmI3ZWE1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3Qg
dWludDhfdCosIHNpemVfdCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWwKKyAgICB2b2lkIHBs
YXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCwgYm9vbCk+JiYpIGZpbmFsCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTcyOTIxYzM2NjdlMDUw
ZTJkZWJiNDRhMTc3MDRiOGQ3OTg2MDI0MS4uNWI5MTFkNzQyMGU2ZTg1ZWM4ZWFjYjcxNmZlODRm
ZDJhYTcyNDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCB2
b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQogICAgIG1faWdub3JlVExTRXJyb3JzID0gaWdub3JlVExTRXJyb3JzOwogfQogCi1P
cHRpb25hbDxSZXNvdXJjZUVycm9yPiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3Jz
KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9y
PiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxz
RXJyb3JzKQogewogICAgIGlmIChtX2lnbm9yZVRMU0Vycm9ycyB8fCAhdGxzRXJyb3JzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDVhNDg0OTM2
YzA3NmRhZTYzZjM0N2JlNWRhZGQyMmQzYzhlZmY3YjEuLjhjMzMyMmE2M2RjZDRjM2FlNTlmNDBl
ZjlmOTg4YTRiZjU2OTVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJpbmcmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wpOwotICAgIE9w
dGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYsIEdUbHNDZXJ0
aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291
cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBo
b3N0KTsKIAogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0cmlu
Zz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcAppbmRleCA2YzNkM2E4ZGY2MDgwZWEzOWViNzJmNTFjYzdlYTc0MzQwYWM1YzY3Li4yMzc4
ZGM4MWVlODcyZjg1NGI5MzIzMDg4NmE1ZTNjMWZmN2NiZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCkBAIC0xMTQsMTIgKzExNCwx
MiBAQCB1aW50NjRfdCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotT3B0aW9uYWw8V2Fs
bFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxpdGVGaWxlU3lzdGVtOjpk
YXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpmaWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KIAotT3B0aW9uYWw8
V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gU1FMaXRlRmlsZVN5
c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7
CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmlu
ZGV4IGVhMmYxNjk5MzBkNTRmM2RiYTk5MDdkODhmMmJjY2Y3NjNjZGJiYzYuLmM2OGQ5YzdlN2Fm
OTg5NzZhMWVkM2RjYjZmMmFjZmU0YjZjZjVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaApAQCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VG
aWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxXYWxsVGltZT4g
ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRhYmFzZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOwogCiBwcml2YXRlOgogICAgIC8vIGRvIG5vdCBpbnN0YW50aWF0
ZSB0aGlzIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Vu
Y29kaW5nVGFibGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdU
YWJsZXMuY3BwCmluZGV4IDY1NWRmNTYyMmUxYzMwNTJkYzUxY2U4ZDFiYzc1OTViN2E0NDRmZTMu
LjExNTI2N2Y5NGY2YWNlNTMxZjcwODk3MDcwMzY4NGRkZGU3N2Y0MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwCkBAIC03MDc0LDcgKzcw
NzQsNyBAQCBjb25zdCBzdGQ6OmFycmF5PHN0ZDo6cGFpcjx1aW50MTZfdCwgVUNoYXI+LCAxNzA0
OD4mIGV1Y0tSKCkKICAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAg
ICAgICAgYXV0byBpY3VDb252ZXJ0ZXIgPSBJQ1VDb252ZXJ0ZXJQdHIgeyB1Y252X29wZW4oIndp
bmRvd3MtOTQ5IiwgJmVycm9yKSB9OwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7
Ci0gICAgICAgIGF1dG8gZ2V0UGFpciA9IFtpY3VDb252ZXJ0ZXIgPSBXVEZNb3ZlKGljdUNvbnZl
cnRlcildICh1aW50MTZfdCBwb2ludGVyKSAtPiBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDE2X3Qs
IFVDaGFyPj4geworICAgICAgICBhdXRvIGdldFBhaXIgPSBbaWN1Q29udmVydGVyID0gV1RGTW92
ZShpY3VDb252ZXJ0ZXIpXSAodWludDE2X3QgcG9pbnRlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8dWludDE2X3QsIFVDaGFyPj4gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90
LCAyPiBpY3VJbnB1dCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvaW50ZXIgLyAxOTB1ICsgMHg4
MSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvaW50ZXIgJSAxOTB1ICsgMHg0MSkgfTsKICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aWN1SW5wdXQuZGF0YSgpKTsKICAgICAgICAgICAgIFVDaGFyIGljdU91dHB1dFsyXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaAppbmRleCBlNWJkNTIy
ZjhhNjhkY2VmOGViZGY0ODk2ZTliMTI2NzA3NmIxZTA3Li5kN2FiNjg3ZDRmYWFlNTkzYjJhMDQ0
NzNhMDQ5NzQwOWFkMjFjODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0VuY29kaW5nVGFibGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9F
bmNvZGluZ1RhYmxlcy5oCkBAIC00OCw3ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxl
Y3Rpb25UeXBlPiB2b2lkIHNvcnRCeUZpcnN0KENvbGxlY3Rpb25UeXBlJik7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBzdGFibGVTb3J0QnlGaXJzdChDb2xsZWN0aW9u
VHlwZSYpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IGJvb2wgaXNTb3J0ZWRC
eUZpcnN0KGNvbnN0IENvbGxlY3Rpb25UeXBlJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0
aW9uVHlwZT4gYm9vbCBzb3J0ZWRGaXJzdHNBcmVVbmlxdWUoY29uc3QgQ29sbGVjdGlvblR5cGUm
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlLCB0eXBlbmFtZSBLZXlUeXBlPiBz
dGF0aWMgYXV0byBmaW5kRmlyc3RJblNvcnRlZFBhaXJzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBj
b2xsZWN0aW9uLCBjb25zdCBLZXlUeXBlJikgLT4gT3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdp
bihjb2xsZWN0aW9uKS0+c2Vjb25kKT47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlw
ZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWlycyhj
b25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgY29uc3QgS2V5VHlwZSYpIC0+IHN0ZDo6
b3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKS0+c2Vjb25kKT47CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1
dG8gZmluZEluU29ydGVkUGFpcnMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNv
bnN0IEtleVR5cGUmKSAtPiBzdGQ6OnBhaXI8ZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9u
KSksIGRlY2x0eXBlKHN0ZDo6YmVnaW4oY29sbGVjdGlvbikpPjsKIAogI2lmICFBU1NFUlRfRU5B
QkxFRApAQCAtMTEyLDcgKzExMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBl
PiBib29sIHNvcnRlZEZpcnN0c0FyZVVuaXF1ZShjb25zdCBDb2xsZWN0aW9uVHlwCiAgICAgcmV0
dXJuIHN0ZDo6YWRqYWNlbnRfZmluZChzdGQ6OmJlZ2luKGNvbGxlY3Rpb24pLCBzdGQ6OmVuZChj
b2xsZWN0aW9uKSwgRXF1YWxGaXJzdCB7IH0pID09IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3Rh
dGljIGF1dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWlycyhjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29s
bGVjdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5KSAtPiBPcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJl
Z2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgordGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5
cGUsIHR5cGVuYW1lIEtleVR5cGU+IHN0YXRpYyBhdXRvIGZpbmRGaXJzdEluU29ydGVkUGFpcnMo
Y29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNvbnN0IEtleVR5cGUmIGtleSkgLT4g
c3RkOjpvcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJlZ2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgog
ewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19pbnRlZ3JhbF92PEtleVR5cGU+KSB7CiAgICAg
ICAgIGlmIChrZXkgIT0gZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKS0+Zmlyc3QpKGtl
eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCA0
ZjZjM2U3OTMwODI4ZTE2NmY1Y2E3Yzg5NmFmNDg2YTY4ZjM2MmM0Li44ZjZjOGMwOWY5NzFkNTNm
NDJmOGNjYWUzMTI4MGMxNzNmZjk0ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmgKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVx
dWVzdERhdGEgewogICAgIGZyaWVuZCBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsgLy8gRm9yIGFj
Y2VzcyB0byBtX2lkZW50aWZpZXIuCiBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nUmVxdWVzdERh
dGEoKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEoT3B0aW9uYWw8VGV4
dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4
dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIFRleHRDaGVja2lu
Z1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQorICAgIFRleHRDaGVja2luZ1JlcXVlc3REYXRhKHN0
ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlw
ZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQogICAgICAgICA6IG1fdGV4
dCB7IHRleHQgfQogICAgICAgICAsIG1faWRlbnRpZmllciB7IGlkZW50aWZpZXIgfQogICAgICAg
ICAsIG1fcHJvY2Vzc1R5cGUgeyBwcm9jZXNzVHlwZSB9CkBAIC05NiwxNCArOTYsMTQgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRl
bnRpZmllcj4gaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHRleHQo
KSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlw
ZT4gY2hlY2tpbmdUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tpbmdUeXBlczsgfQogICAg
IFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9jZXNzVHlwZTsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgT3B0aW9u
YWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiAg
ICAgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1By
b2Nlc3NJbmNyZW1lbnRhbCB9OwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2No
ZWNraW5nVHlwZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNDSksuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNDSksuY3BwCmluZGV4IDIxMTdlMWE0YjkwNTIzMzFjZGNkNjQxMjI0ZTc2MzUwYjJlOWVkMTku
LmZmOWY4ZWNiM2E3YjcxNDE3YmNjNzY2OTlmZWFmYjUyMWQwNGMxYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKQEAgLTIxOSwxMiArMjE5LDEy
IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmRlY29kZUNvbW1vbihjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNoYXI+IGNvZGVQb2ludEpJUzAyMDgodWludDE2X3Qg
cG9pbnRlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFVDaGFyPiBjb2RlUG9pbnRKSVMwMjA4KHVp
bnQxNl90IHBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIGZpbmRGaXJzdEluU29ydGVkUGFpcnMoamlz
MDIwOCgpLCBwb2ludGVyKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFVDaGFyPiBjb2RlUG9pbnRK
SVMwMjEyKHVpbnQxNl90IHBvaW50ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcj4gY29k
ZVBvaW50SklTMDIxMih1aW50MTZfdCBwb2ludGVyKQogewogICAgIHJldHVybiBmaW5kRmlyc3RJ
blNvcnRlZFBhaXJzKGppczAyMTIoKSwgcG9pbnRlcik7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAg
U3RyaW5nIFRleHRDb2RlY0NKSzo6aXNvMjAyMkpQRGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoLCBib29sIGYKICAgICAgICAgICAgIHJldHVybiBTYXdFcnJvcjo6WWVz
OwogICAgICAgICBjYXNlIElTTzIwMjJKUERlY29kZXJTdGF0ZTo6RXNjYXBlOiB7CiAgICAgICAg
ICAgICB1aW50OF90IGxlYWQgPSBzdGQ6OmV4Y2hhbmdlKG1fbGVhZCwgMHgwMCk7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxJU08yMDIySlBEZWNvZGVyU3RhdGU+IHN0YXRlOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxJU08yMDIySlBEZWNvZGVyU3RhdGU+IHN0YXRlOwogICAgICAgICAgICAg
aWYgKGxlYWQgPT0gMHgyOCkgewogICAgICAgICAgICAgICAgIGlmIChieXRlID09IDB4NDIpCiAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gSVNPMjAyMkpQRGVjb2RlclN0YXRlOjpBU0NJSTsK
QEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTxzdGQ6OnBhaXI8dWlu
dDMyX3QsIFVDaGFyMzI+LCAyMDc+JiBnYjE4MDMwUmFuZ2VzKCkKIH0KIAogLy8gaHR0cHM6Ly9l
bmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2luZGV4LWdiMTgwMzAtcmFuZ2VzLWNvZGUtcG9pbnQK
LXN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29kZVBvaW50KHVpbnQzMl90
IHBvaW50ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29k
ZVBvaW50KHVpbnQzMl90IHBvaW50ZXIpCiB7CiAgICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYg
cG9pbnRlciA8IDE4OTAwMCkgfHwgcG9pbnRlciA+IDEyMzc1NzUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0NKSy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksu
aAppbmRleCBiZmJlYzVhMDI0NTlmN2Q5N2NkMGM1ZTQ4NzM1ZDgyZjY3NWUzMTY5Li44YjcwNjZh
ZjUzYTA3NGI2MTViODI5NjYwZWZhZDNhMmZkYzQ4MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmgKQEAgLTYxLDE0ICs2MSwxNCBAQCBwcml2YXRlOgog
ICAgIElTTzIwMjJKUERlY29kZXJTdGF0ZSBtX2lzbzIwMjJKUERlY29kZXJTdGF0ZSB7IElTTzIw
MjJKUERlY29kZXJTdGF0ZTo6QVNDSUkgfTsKICAgICBJU08yMDIySlBEZWNvZGVyU3RhdGUgbV9p
c28yMDIySlBEZWNvZGVyT3V0cHV0U3RhdGUgeyBJU08yMDIySlBEZWNvZGVyU3RhdGU6OkFTQ0lJ
IH07CiAgICAgYm9vbCBtX2lzbzIwMjJKUE91dHB1dCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8
dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlOworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlOwogCiAgICAgdWludDhf
dCBtX2diMTgwMzBGaXJzdCB7IDB4MDAgfTsKICAgICB1aW50OF90IG1fZ2IxODAzMFNlY29uZCB7
IDB4MDAgfTsKICAgICB1aW50OF90IG1fZ2IxODAzMFRoaXJkIHsgMHgwMCB9OwogCiAgICAgdWlu
dDhfdCBtX2xlYWQgeyAweDAwIH07Ci0gICAgT3B0aW9uYWw8dWludDhfdD4gbV9wcmVwZW5kZWRC
eXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbV9wcmVwZW5kZWRCeXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEYxNi5oCmluZGV4IGQ4Y2QxZTY2M2MwM2IwYmU4ZDkzMDgyMTg3OGEzYjkwMjA5
NDI0NzkuLjkwODc3ZmIyNWQ3ZWFkNDE2ZGEzYzc3OGM5ZGI0MjAwMGM2NzY1NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmgKQEAgLTQzLDggKzQz
LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVu
ZW5jb2RhYmxlSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBtX2xpdHRsZUVuZGlh
bjsKLSAgICBPcHRpb25hbDx1aW50OF90PiBtX2xlYWRCeXRlOwotICAgIE9wdGlvbmFsPFVDaGFy
PiBtX2xlYWRTdXJyb2dhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBtX2xlYWRCeXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IG1fbGVhZFN1cnJvZ2F0ZTsKICAgICBib29sIG1f
c2hvdWxkU3RyaXBCeXRlT3JkZXJNYXJrIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IDgxZDIyZjJkMzA1YmQ4ZWNiNGEwOTA2YTMx
ZTBhZGYyYjE3MTNlYjQuLjI5YWJhYmE0MTIwZmY1ZmZlYTNmN2U0NzAyNzRhYzUyYzU1N2Q1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtMjY4LDcgKzI2
OCw3IEBAIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZvbnRWYXJpYW50U2V0dGluZ3M+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIC8v
IEZJWE1FOiB0aGlzIHdvdWxkIGJlIG11Y2ggbW9yZSBjb21wYWN0IHdpdGggYml0ZmllbGRzLgog
ICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlczsKQEAgLTMwOSw3OSArMzA5
LDc5IEBAIHZvaWQgRm9udFZhcmlhbnRTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFu
dFNldHRpbmdzPiBGb250VmFyaWFudFNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4gRm9udFZhcmlhbnRTZXR0aW5nczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdh
dHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGln
YXR1cmVzPiBjb21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBjb21tb25MaWdhdHVyZXM7
CiAgICAgaWYgKCFjb21tb25MaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gZGlzY3JldGlvbmFyeUxpZ2F0
dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAg
ICBpZiAoIWRpc2NyZXRpb25hcnlMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gaGlzdG9yaWNhbExpZ2F0
dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2Fs
TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAo
IWhpc3RvcmljYWxMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0ZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0
ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKICAgICBpZiAoIWNvbnRl
eHR1YWxBbHRlcm5hdGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udFZhcmlhbnRQb3NpdGlvbj4gcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxG
b250VmFyaWFudFBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBkZWNvZGVyID4+IHBvc2l0aW9uOwog
ICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGb250VmFyaWFudENhcHM+IGNhcHM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFy
aWFudENhcHM+IGNhcHM7CiAgICAgZGVjb2RlciA+PiBjYXBzOwogICAgIGlmICghY2FwcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsKICAgICBkZWNvZGVyID4+IG51bWVyaWNGaWd1
cmU7CiAgICAgaWYgKCFudW1lcmljRmlndXJlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gbnVtZXJpY1NwYWNp
bmc7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiBudW1lcmlj
U3BhY2luZzsKICAgICBkZWNvZGVyID4+IG51bWVyaWNTcGFjaW5nOwogICAgIGlmICghbnVtZXJp
Y1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxG
b250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gbnVtZXJpY0ZyYWN0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24+IG51bWVyaWNGcmFjdGlvbjsKICAgICBk
ZWNvZGVyID4+IG51bWVyaWNGcmFjdGlvbjsKICAgICBpZiAoIW51bWVyaWNGcmFjdGlvbikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY09yZGluYWw+IG51bWVyaWNPcmRpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbD4gbnVtZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiBudW1lcmlj
T3JkaW5hbDsKICAgICBpZiAoIW51bWVyaWNPcmRpbmFsKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IG51
bWVyaWNTbGFzaGVkWmVybzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1Ns
YXNoZWRaZXJvPiBudW1lcmljU2xhc2hlZFplcm87CiAgICAgZGVjb2RlciA+PiBudW1lcmljU2xh
c2hlZFplcm87CiAgICAgaWYgKCFudW1lcmljU2xhc2hlZFplcm8pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVy
bmF0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVybmF0
ZXM7CiAgICAgZGVjb2RlciA+PiBhbHRlcm5hdGVzOwogICAgIGlmICghYWx0ZXJuYXRlcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudD4gZWFzdEFzaWFuVmFyaWFudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudD4gZWFzdEFzaWFuVmFyaWFudDsKICAgICBkZWNvZGVyID4+
IGVhc3RBc2lhblZhcmlhbnQ7CiAgICAgaWYgKCFlYXN0QXNpYW5WYXJpYW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5X
aWR0aD4gZWFzdEFzaWFuV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RB
c2lhbldpZHRoPiBlYXN0QXNpYW5XaWR0aDsKICAgICBkZWNvZGVyID4+IGVhc3RBc2lhbldpZHRo
OwogICAgIGlmICghZWFzdEFzaWFuV2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1Ynk7
CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1
Ynk7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNpYW5SdWJ5OwogICAgIGlmICghZWFzdEFzaWFuUnVi
eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQxOSw3ICs0MTksNyBAQCBzdHJ1
Y3QgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7
CiAKICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7CiAgICAgRm9udFZh
cmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKQEAgLTQzNywyNCArNDM3LDI0
IEBAIHZvaWQgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Rm9udFZh
cmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1
ZXM+IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsK
ICAgICBkZWNvZGVyID4+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBpZiAoIWNvbW1vbkxpZ2F0dXJl
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJp
YW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2Rl
ciA+PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0
dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+
PiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGlmICghaGlzdG9yaWNhbExpZ2F0dXJlcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGln
YXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJp
YW50TGlnYXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IGNvbnRl
eHR1YWxBbHRlcm5hdGVzOwogICAgIGlmICghY29udGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NzgsNyArNDc4LDcgQEAgc3RydWN0IEZvbnRWYXJp
YW50TnVtZXJpY1ZhbHVlcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNWYWx1ZXM+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9u
dFZhcmlhbnROdW1lcmljVmFsdWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlIGZpZ3VyZTsKICAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNw
YWNpbmc7CkBAIC00OTgsMjkgKzQ5OCwyOSBAQCB2b2lkIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVl
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNWYWx1ZXM+IEZvbnRWYXJpYW50TnVt
ZXJpY1ZhbHVlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50TnVtZXJpY1ZhbHVlcz4gRm9udFZhcmlhbnROdW1lcmljVmFsdWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+
IGZpZ3VyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gZmln
dXJlOwogICAgIGRlY29kZXIgPj4gZmlndXJlOwogICAgIGlmICghZmlndXJlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3Bh
Y2luZz4gc3BhY2luZzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNp
bmc+IHNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBzcGFjaW5nOwogICAgIGlmICghc3BhY2luZykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IGZyYWN0aW9uOwogICAg
IGlmICghZnJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiBvcmRpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4gb3JkaW5hbDsKICAgICBkZWNvZGVyID4+IG9y
ZGluYWw7CiAgICAgaWYgKCFvcmRpbmFsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IHNsYXNoZWRaZXJv
OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IHNsYXNo
ZWRaZXJvOwogICAgIGRlY29kZXIgPj4gc2xhc2hlZFplcm87CiAgICAgaWYgKCFzbGFzaGVkWmVy
bykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdHJ1
Y3QgRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7
CiAKICAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFudDsKICAgICBGb250VmFy
aWFudEVhc3RBc2lhbldpZHRoIHdpZHRoOwpAQCAtNTU2LDE5ICs1NTYsMTkgQEAgdm9pZCBGb250
VmFyaWFudEVhc3RBc2lhblZhbHVlczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lh
blZhbHVlcz4gRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcz4gRm9udFZhcmlh
bnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudDsKICAgICBkZWNvZGVyID4+
IHZhcmlhbnQ7CiAgICAgaWYgKCF2YXJpYW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gd2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB3aWR0aDsKICAgICBkZWNv
ZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CisgICAg
c3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CiAgICAgZGVjb2Rl
ciA+PiBydWJ5OwogICAgIGlmICghcnVieSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDllMjg3
ODNlNmUxYWMxMzU5NzBiMDZkNDIwZjVlYzY0YTZiOTlmYTEuLjU3OWExMTI1NzlhZjM5ZmMxMmVm
MDI0OTc5ZDgxZmM1NWFmMzZjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdEYXRhV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQor
RHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggOWNk
YTM0OTJiNjk2NTY4MjhkNjFlNTYzODRlYzE2NWI2ZDE5ZWM2Yy4uYzU1YTljYTFkYjc3MDY5NmY0
ZDJlMDVkMDM2MDhlNWY2OWNlYzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyB2b2lkIGFkZE1p
bWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JN
QVRFVEMmCiAgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CiB9CiAKLU9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKQorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVh
ZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKIHsKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2
YWlsYWJsZShDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0KSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9v
d25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEo
Q3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCkpIHsKQEAgLTI2OSw3ICsyNjksNyBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9y
aWdpbikKIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKIAot
ICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3Rl
Ym9hcmRDdXN0b21EYXRhKCk7CisgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwogCiAgICAgaWYgKGN1
c3RvbURhdGEgJiYgY3VzdG9tRGF0YS0+b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdHlwZSA6IGN1c3RvbURhdGEtPm9yZGVyZWRUeXBlcygpKQpAQCAtMzE3
LDcgKzMxNyw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiB7Ci0gICAg
T3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IGN1c3RvbURhdGEgPSByZWFkUGFzdGVib2Fy
ZEN1c3RvbURhdGEoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBj
dXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CiAKICAgICBpZiAoY3VzdG9t
RGF0YSkKICAgICAgICAgcmV0dXJuIGN1c3RvbURhdGEtPm9yaWdpbigpOwpAQCAtMzQ3LDcgKzM0
Nyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKQogewotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRh
ID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CisgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwog
CiAgICAgaWYgKGN1c3RvbURhdGEpCiAgICAgICAgIHJldHVybiBjdXN0b21EYXRhLT5yZWFkU3Ry
aW5nSW5DdXN0b21EYXRhKHR5cGUpOwpAQCAtMzcwLDcgKzM3MCw3IEBAIFBhc3RlYm9hcmQ6OkZp
bGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAgICAgcmV0dXJu
IHJlYWRlci5jb3VudCA/IEZpbGVDb250ZW50U3RhdGU6Ok1heUNvbnRhaW5GaWxlUGF0aHMgOiBG
aWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIsIE9wdGlvbmFsPHNpemVfdD4pCit2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+KQogewogI2lmIFVTRShDRikKICAgICBpZiAobV9kYXRhT2JqZWN0KSB7
CkBAIC04MzQsNyArODM0LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQog
ICAgIHJldHVybiA6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKFdlYlNtYXJ0UGFzdGVGb3Jt
YXQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgaWYgKDo6SXNDbGlwYm9h
cmRGb3JtYXRBdmFpbGFibGUoQ0ZfVU5JQ09ERVRFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293
bmVyKSkgewogICAgICAgICBpZiAoSEFORExFIGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShD
Rl9VTklDT0RFVEVYVCkpIHsKQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKQogewogfQogCi12b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApp
bmRleCAyZmMyMTExNTdkYTNlMWJmZTBkZjFhNWZiMGM2MjliY2E4MDgzN2UxLi41NWY2ZDVkOWIx
YTViYjEyZDMyNzMyMDdhMGZiNjMyNmFmZjFlZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAgIC8vIHdoZW4g
dGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIg
c2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmlj
YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRo
LCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwg
dWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUxheWVyKExheWVySGFuZGxlKSA9IDA7CiAKICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9OwogCiAg
ICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RmxvYXRRdWF0ZXJuaW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWF0ZXJuaW9uPiBk
ZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9OwogCiAgICAgICAgIHN0cnVjdCBQb3NlIHsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBGbG9hdFF1YXRlcm5pb24gb3Jp
ZW50YXRpb247CiAKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxQb3NlPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UG9zZT4gZGVjb2RlKERl
Y29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgRm92IHsKQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCByaWdodCB7IDAuMGYgfTsKIAogICAg
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEZvdj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvdj4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAg
fTsKIAogICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9qZWN0aW9uTWF0cml4U2l6
ZSA9IDE2OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFByb2plY3Rp
b24gcHJvamVjdGlvbiA9IHsgbnVsbHB0ciB9OwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Vmlldz4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZpZXc+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0
IFN0YWdlUGFyYW1ldGVycyB7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGJvdW5kczsKIAogICAgICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN0YWdlUGFyYW1l
dGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0YWdlUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXIm
KTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgTGF5ZXJEYXRhIHsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExheWVyRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPExheWVyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBz
dHJ1Y3QgSW5wdXRTb3VyY2VCdXR0b24gewpAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlIHsgWFJUYXJnZXRSYXlNb2Rl
OjpHYXplIH07CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm9maWxlczsKICAgICAgICAg
ICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3JpZ2luOwotICAgICAgICAgICAgT3B0aW9uYWw8
SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJ
bnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47CiAgICAgICAgICAgICBWZWN0b3I8SW5wdXRTb3Vy
Y2VCdXR0b24+IGJ1dHRvbnM7CiAgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGF4ZXM7CiAgICAg
ICAgIH07CkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgICAgICBib29sIHNob3VsZFJl
bmRlciB7IGZhbHNlIH07CiAgICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWUgeyAwIH07
CiAgICAgICAgIFBvc2Ugb3JpZ2luOwotICAgICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5z
Zm9ybTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKICAgICAg
ICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOwogICAgICAgICBIYXNoTWFwPExheWVySGFuZGxlLCBMYXllckRhdGE+IGxheWVyczsK
QEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZyYW1lRGF0YSBjb3B5KCkgY29u
c3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RnJhbWVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGcmFtZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclZpZXcgewpAQCAtMjk0LDcgKzI5NCw3IEBAIHZv
aWQgRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEZXZp
Y2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uPiBEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRR
dWF0ZXJuaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj4gRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVh
dGVybmlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRGV2aWNlOjpGcmFtZURh
dGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRlcm5pb247CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmbG9hdFF1YXRlcm5pb24ueCkpCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEZXZpY2U6
OkZyYW1lRGF0YTo6UG9zZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4g
RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3Nl
IHBvc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NlLnBvc2l0aW9uKSkKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE6OkZvdj4gRGV2aWNlOjpGcmFtZURhdGE6OkZvdjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpGb3Y+IERldmlj
ZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIERldmlj
ZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LnVwKSkK
QEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpWaWV3OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpWaWV3PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRh
OjpWaWV3PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgdmlldzsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHZpZXcub2Zmc2V0KSkKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lk
IERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz4gRGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFy
YW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6
RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM+IERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFt
ZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkKQEAgLTQzNyw3ICs0MzcsNyBAQCB2
b2lkIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpG
cmFtZURhdGE6OkxheWVyRGF0YT4gRGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXll
ckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5
ZXJEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJEYXRhLm9wYXF1ZVRleHR1cmUp
KQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSBmcmFtZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEu
aXNUcmFja2luZ1ZhbGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IDU1NTEyYWNlMDAzMjA1ZTY1M2Jh
MTgxOWQ5YjAzNjhhNTUxZjZkYmUuLjU2ZDczOTJlNzdiZTUxMjVjMmI0YjY0YjVhNWMwOTRmYTU3
YjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUklucHV0U291cmNlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFhyUmVzdWx0IE9wZW5Y
UklucHV0U291cmNlOjpzdWdnZXN0QmluZGluZ3MoU3VnZ2VzdGVkQmluZGluZ3MmIGJpbmRpbmdz
KSBjb25zdAogICAgIHJldHVybiBYUl9TVUNDRVNTOwogfQogCi1PcHRpb25hbDxEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShY
clNwYWNlIGxvY2FsU3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBPcGVuWFJJbnB1
dFNvdXJjZTo6Z2V0SW5wdXRTb3VyY2UoWHJTcGFjZSBsb2NhbFNwYWNlLCBjb25zdCBYckZyYW1l
U3RhdGUmIGZyYW1lU3RhdGUpIGNvbnN0CiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlIGRhdGE7CiAgICAgZGF0YS5oYW5kZW5lc3MgPSBtX2hhbmRlbmVzczsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5Y
UklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShYclNwYQogICAgICAgICBkYXRhLmdyaXBPcmln
aW4gPSBncmlwUG9zZTsKIAogICAgIC8vIEJ1dHRvbnMuCi0gICAgVmVjdG9yPE9wdGlvbmFsPERl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4+IGJ1dHRvbnM7CisgICAgVmVjdG9y
PHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPj4gYnV0
dG9uczsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBvcGVuWFJCdXR0b25UeXBlcykgCiAgICAgICAg
IGJ1dHRvbnMuYXBwZW5kKGdldEJ1dHRvbih0eXBlKSk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNl
OjpnZXRJbnB1dFNvdXJjZShYclNwYQogICAgIH0KIAogICAgIC8vIEF4ZXMuCi0gICAgVmVjdG9y
PE9wdGlvbmFsPFhyVmVjdG9yMmY+PiBheGVzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFhy
VmVjdG9yMmY+PiBheGVzOwogICAgIGZvciAoYXV0byYgdHlwZSA6IG9wZW5YUkF4aXNUeXBlcykg
CiAgICAgICAgIGF4ZXMuYXBwZW5kKGdldEF4aXModHlwZSkpOwogCkBAIC0yODksNyArMjg5LDcg
QEAgWHJSZXN1bHQgT3BlblhSSW5wdXRTb3VyY2U6OmdldFBvc2UoWHJTcGFjZSBzcGFjZSwgWHJT
cGFjZSBiYXNlU3BhY2UsIGNvbnN0IFhyRnIKICAgICByZXR1cm4gWFJfU1VDQ0VTUzsKIH0KIAot
T3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJbnB1
dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUgYnV0dG9uVHlwZSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJ
bnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUgYnV0dG9uVHlwZSkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gbV9idXR0b25BY3Rpb25zLmZpbmQoYnV0dG9uVHlwZSk7CiAgICAg
aWYgKGl0ID09IG1fYnV0dG9uQWN0aW9ucy5lbmQoKSkKQEAgLTMxMyw3ICszMTMsNyBAQCBPcHRp
b25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IE9wZW5YUklucHV0U291
cmNlOjpnZXRCdXR0b24oT3BlbgogICAgIHJldHVybiBoYXNWYWx1ZSA/ICBzdGQ6Om1ha2Vfb3B0
aW9uYWwocmVzdWx0KSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8WHJWZWN0b3IyZj4g
T3BlblhSSW5wdXRTb3VyY2U6OmdldEF4aXMoT3BlblhSQXhpc1R5cGUgYXhpc1R5cGUpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFhyVmVjdG9yMmY+IE9wZW5YUklucHV0U291cmNlOjpnZXRBeGlzKE9w
ZW5YUkF4aXNUeXBlIGF4aXNUeXBlKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX2F4aXNBY3Rp
b25zLmZpbmQoYXhpc1R5cGUpOwogICAgIGlmIChpdCA9PSBtX2F4aXNBY3Rpb25zLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRT
b3VyY2UuaAppbmRleCAxYmRjMWJiY2YzOGExY2MxM2EyZjJhZTU4ODE0MjhlOWQ3MDUwOGJkLi43
N2M3NzllZmJkOWZkZTc5ZTllMDU2ZDExYzc5N2E4MDA1NDdhMjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuaApAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfk9wZW5YUklucHV0U291cmNlKCk7CiAKICAgICBY
clJlc3VsdCBzdWdnZXN0QmluZGluZ3MoU3VnZ2VzdGVkQmluZGluZ3MmKSBjb25zdDsKLSAgICBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IGdldElucHV0U291cmNlKFhy
U3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBnZXRJbnB1dFNvdXJjZShYclNwYWNlLCBjb25z
dCBYckZyYW1lU3RhdGUmKSBjb25zdDsKICAgICBYckFjdGlvblNldCBhY3Rpb25TZXQoKSBjb25z
dCB7IHJldHVybiBtX2FjdGlvblNldDsgfQogICAgIFhyUmVzdWx0IHVwZGF0ZUludGVyYWN0aW9u
UHJvZmlsZSgpOwogCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgWHJSZXN1bHQgY3Jl
YXRlQmluZGluZyhjb25zdCBjaGFyKiBwcm9maWxlUGF0aCwgWHJBY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgYmluZGluZ1BhdGgsIFN1Z2dlc3RlZEJpbmRpbmdzJikgY29uc3Q7CiAKICAgICBYclJlc3Vs
dCBnZXRQb3NlKFhyU3BhY2UsIFhyU3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYsIERldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKSBjb25zdDsKLSAgICBPcHRpb25hbDxEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IGdldEJ1dHRvbihPcGVuWFJCdXR0b25UeXBl
KSBjb25zdDsKLSAgICBPcHRpb25hbDxYclZlY3RvcjJmPiBnZXRBeGlzKE9wZW5YUkF4aXNUeXBl
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZUJ1dHRvbj4gZ2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8WHJWZWN0b3IyZj4gZ2V0QXhpcyhPcGVuWFJBeGlzVHlwZSkgY29uc3Q7CiAgICAgWHJS
ZXN1bHQgZ2V0QWN0aW9uU3RhdGUoWHJBY3Rpb24sIGJvb2wqKSBjb25zdDsKICAgICBYclJlc3Vs
dCBnZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgZmxvYXQqKSBjb25zdDsKICAgICBYclJlc3VsdCBn
ZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgWHJWZWN0b3IyZiopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5jcHAKaW5kZXggYWZlMzQ3
M2EwZWYwZDBkNjFjZDRkZmRmYmY4NDc1ZGJkZTNmNWJkZi4uODk2NzExYzBhY2MyM2E5NWVlYTAy
YmE1YjI4MDg4NzVkM2RmMzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIE9wZW5YUkxheWVyUHJv
amVjdGlvbjo6T3BlblhSTGF5ZXJQcm9qZWN0aW9uKFVuaXF1ZVJlZjxPcGVuWFJTd2FwY2hhaW4+
JiYgc3dhcGNoCiB7CiB9CiAKLU9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+
IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgpCitzdGQ6Om9wdGlvbmFsPERldmlj
ZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFt
ZSgpCiB7CiAgICAgYXV0byB0ZXh0dXJlID0gbV9zd2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOwog
ICAgIGlmICghdGV4dHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUkxheWVyLmgKaW5kZXggODg1ZWExZTVjMGE0ZTUxNjM3Nzc5Yzg5NjkwOTA1ODk5ZjFm
NmU5Zi4uNjJmOTExODQwNzJhODUzYTVmZTllMTBhMzExNTAzODcyZDFjNDE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKQEAgLTM3LDcg
KzM3LDcgQEAgY2xhc3MgT3BlblhSTGF5ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk9wZW5Y
UkxheWVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxEZXZpY2U6OkZyYW1l
RGF0YTo6TGF5ZXJEYXRhPiBzdGFydEZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBzdGFydEZyYW1lKCkgPSAwOwogICAg
IHZpcnR1YWwgWHJDb21wb3NpdGlvbkxheWVyQmFzZUhlYWRlciogZW5kRnJhbWUoY29uc3QgRGV2
aWNlOjpMYXllciYsIFhyU3BhY2UsIGNvbnN0IFZlY3RvcjxYclZpZXc+JikgPSAwOwogCiBwcm90
ZWN0ZWQ6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3BlblhSTGF5
ZXJQcm9qZWN0aW9uKFVuaXF1ZVJlZjxPcGVuWFJTd2FwY2hhaW4+JiYpOwogCi0gICAgT3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgp
IGZpbmFsOwogICAgIFhyQ29tcG9zaXRpb25MYXllckJhc2VIZWFkZXIqIGVuZEZyYW1lKGNvbnN0
IERldmljZTo6TGF5ZXImLCBYclNwYWNlLCBjb25zdCBWZWN0b3I8WHJWaWV3PiYpIGZpbmFsOwog
CiAgICAgVW5pcXVlUmVmPE9wZW5YUlN3YXBjaGFpbj4gbV9zd2FwY2hhaW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCmlu
ZGV4IGZlOWRhYzkxYWZmZTJiNjM2N2MyZmJiOTc5NzA0MTNmNjA2NDk5OWEuLmI3MmMxNjZmNmZl
OTZhNDRjOGIzODNiODU0NzQ1MzA5MzlkMWNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCkBAIC03Niw3ICs3Niw3
IEBAIE9wZW5YUlN3YXBjaGFpbjo6fk9wZW5YUlN3YXBjaGFpbigpCiAgICAgICAgIHhyRGVzdHJv
eVN3YXBjaGFpbihtX3N3YXBjaGFpbik7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+
IE9wZW5YUlN3YXBjaGFpbjo6YWNxdWlyZUltYWdlKCkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1H
TE9iamVjdD4gT3BlblhSU3dhcGNoYWluOjphY3F1aXJlSW1hZ2UoKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9hY3F1aXJlZFRleHR1cmUgLCAiRXhwZWN0ZWQgbm8gYWNx
dWlyZWQgaW1hZ2VzLiBSZWxlYXNlSW1hZ2Ugbm90IGNhbGxlZD8iKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5oCmluZGV4IGJk
OGQzMTcyZTVkMzA0YWM0NGFmYmM2ZmExN2E1M2Q2ZDNiYzE3YTMuLjZlNTAyMDA1MzhjZDNiYmVl
ZTMzNWI0OGMzZjg5Njc1YmZjZTIyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8T3BlblhSU3dhcGNoYWluPiBjcmVhdGUoWHJJ
bnN0YW5jZSwgWHJTZXNzaW9uLCBjb25zdCBYclN3YXBjaGFpbkNyZWF0ZUluZm8mKTsKICAgICB+
T3BlblhSU3dhcGNoYWluKCk7CiAKLSAgICBPcHRpb25hbDxQbGF0Zm9ybUdMT2JqZWN0PiBhY3F1
aXJlSW1hZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IGFjcXVpcmVJ
bWFnZSgpOwogICAgIHZvaWQgcmVsZWFzZUltYWdlKCk7CiAgICAgWHJTd2FwY2hhaW4gc3dhcGNo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwY2hhaW47IH0KICAgICBpbnQzMl90IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVJbmZvLndpZHRoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggMDhl
YjdiMDg1MzIyZTQ1YzdkODQwM2E0MDdjYjRjMDExYzhmYTE5Yy4uZGUxZWNlYWUwY2M2ZjgwYmUy
MGVkYWU5OGI3NTViOTFhNzI4MWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMzA2LDkgKzMwNiw5IEBA
IFZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2Rl
IG1vZGUpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXdzOwogfQogCi1PcHRpb25hbDxMYXllckhhbmRs
ZT4gT3BlblhSRGV2aWNlOjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVp
bnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3N0ZDo6b3B0aW9uYWw8TGF5ZXJIYW5kbGU+IE9w
ZW5YUkRldmljZTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJf
dCBoZWlnaHQsIGJvb2wgYWxwaGEpCiB7Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGhhbmRs
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheWVySGFuZGxlPiBoYW5kbGU7CiAKICAgICBCaW5hcnlT
ZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIHdpZHRoLCBo
ZWlnaHQsIGFscGhhLCAmaGFuZGxlLCAmc2VtYXBob3JlXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5k
ZXggY2RiNjM2NmU5MTk2MzFiYWI1NmE5YThlNWFjNjU5ZWExMWU5OGE1YS4uM2JmN2YwOGQ2NmQ2
OWVmYjk1NzhmMTliNzBiN2QxZjU4NTdmZDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0b3I8RGV2aWNlOjpMYXllcj4mJikgZmlu
YWw7CiAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7
Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVMYXll
cihMYXllckhhbmRsZSkgZmluYWw7CiAKICAgICAvLyBDdXN0b20gbWV0aG9kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCBkY2IwZTUzYzI3Mzc5MGY2MTMyZmFhNzJjNGQ2YjY3
ZmY5NTI4N2NjLi5iN2YzOTllMTkyODhiODAzZDA5MjQ3NzQzZDQ1NjRkN2QyNWRjNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllciB7CiAgICAgU3RyaW5nIHBsdWdpbklkZW50aWZpZXI7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNl
IGluIHRoZSBmdXR1cmUKQEAgLTEyMCwxMSArMTIwLDExIEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6
CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogCiAgICAgc3Ry
dWN0IENhY2hlZFZpc2libGVQbHVnaW5zIHsKICAgICAgICAgVVJMIHBhZ2VVUkw7Ci0gICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxQbHVnaW5JbmZvPj4gcGx1Z2luTGlzdDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGx1Z2luSW5mbz4+IHBsdWdpbkxpc3Q7CiAgICAgfTsKICAgICBtdXRh
YmxlIENhY2hlZFZpc2libGVQbHVnaW5zIG1fY2FjaGVkVmlzaWJsZVBsdWdpbnM7CiB9OwpAQCAt
MTM2LDE0ICsxMzYsMTQgQEAgaW5saW5lIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgVmVj
dG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+JiBwbHVnaW5JZGUKICAgICB9KSAhPSBub3RG
b3VuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+IFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0
aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtYXRj
aGluZ0RvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF0Y2hpbmdEb21haW47CiAg
ICAgZGVjb2RlciA+PiBtYXRjaGluZ0RvbWFpbjsKICAgICBpZiAoIW1hdGNoaW5nRG9tYWluKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBwbHVn
aW5JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gcGx1Z2luSWRlbnRpZmllcjsKICAgICBpZiAoIXBsdWdpbklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCAyNTZlMTUyYmU2YTRmNGNhZDVjOTRkYWFj
MWI1YzE3YzY1ZTVjZWNhLi41MGYzODhmNTNhY2JmMzljNDg2ZDc5YzhhNDgzNjVhZGU1NDU4Y2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CiAgICAgdm9p
ZCBjbGVhclBhZ2VzUGx1Z2luRGF0YSgpOwogCi0gICAgdmlydHVhbCBWZWN0b3I8UGx1Z2luSW5m
bz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXI+PiYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5JbmZv
KFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4m
KSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbklu
Zm8oUGFnZSYsIGNvbnN0IFVSTCYpID0gMDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXggZDY4NmZhYzk3MDc4MGVmNzk4MjA2
Y2M5MGY1NzAwM2FiZDAxM2NkZC4uM2FhZTVhODY4NTU0ZTYyOTgwMTUwODk3NGQ0OGMyOTBiMDlj
Y2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAK
QEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICBm
bG9hdCB0b3RhbFJlbGF0aXZlID0gMDsKICAgICBpbnQgbnVtRml4ZWQgPSAwOwogICAgIHNpemVf
dCBudW1iZXJPZk5vbkVtcHR5QXV0byA9IDA7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHRvdGFsQXV0
bzsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB0b3RhbEF1dG87CiAgICAgZmxvYXQgdG90YWxG
aXhlZCA9IDA7CiAgICAgZmxvYXQgdG90YWxQZXJjZW50ID0gMDsKICAgICBmbG9hdCBhbGxvY0F1
dG8gPSAwOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQo
KQogICAgIGlmIChhdmFpbGFibGUgPiAwICYmIG51bWJlck9mTm9uRW1wdHlBdXRvKSB7CiAgICAg
ICAgIEFTU0VSVCh0b3RhbEF1dG8pOwogICAgICAgICBhdmFpbGFibGUgKz0gYWxsb2NBdXRvOyAv
LyB0aGlzIGdldHMgcmVkaXN0cmlidXRlZC4KLSAgICAgICAgYXV0byBlcXVhbFdpZHRoRm9yWmVy
b0xlbmd0aENvbHVtbnMgPSBPcHRpb25hbDxmbG9hdD4geyB9OworICAgICAgICBhdXRvIGVxdWFs
V2lkdGhGb3JaZXJvTGVuZ3RoQ29sdW1ucyA9IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsgfTsKICAg
ICAgICAgaWYgKCEqdG90YWxBdXRvKSB7CiAgICAgICAgICAgICAvLyBBbGwgY29sdW1ucyBpbiB0
aGlzIHRhYmxlIGFyZSAobm9uLWVtcHR5KXplcm8gbGVuZ3RoIHdpdGggJ3dpZHRoOiBhdXRvJy4K
ICAgICAgICAgICAgIGVxdWFsV2lkdGhGb3JaZXJvTGVuZ3RoQ29sdW1ucyA9IGF2YWlsYWJsZSAv
IG51bWJlck9mTm9uRW1wdHlBdXRvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgK
aW5kZXggYWZiNzAwNDY4OGM0MTJlNjI2NGFhZmIyZGUxZThjZTE0MjQ2ZDIyNC4uZjAzY2QxODE3
YzU5MDI5NWNhNzg1OTRkYTA5M2NjOWZkOGUxMjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QnJlYWtMaW5lcy5oCkBAIC05MCw3ICs5MCw3IEBAIGlubGluZSBib29sIG5lZWRzTGluZUJyZWFr
SXRlcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvciwgQ2Fu
VXNlU2hvcnRjdXQgY2FuVXNlU2hvcnRjdXQ+CiBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0
IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwogCiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFz
dENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAxID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAy
XSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRv
TGFzdENoYXJhY3RlcigpKTsKICAgICBDaGFyYWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFy
dFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxD
aGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwpAQCAtMTk0
LDExICsxOTQsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkJyZWFr
Q2hhcmFjdGVyKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAvLyBGSVhNRTogQ2Fu
L1Nob3VsZCB3ZSBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIFNoYXJlZCBJdGVyYXRvciAocGVyZm9y
bWFuY2UgaXNzdWUpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Nzg3NgogICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXRlcmF0b3Io
c3RyaW5nVmlldyk7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHQgPSB1YnJrX2ZvbGxvd2lu
ZyhpdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bmV4dCA9IHVicmtfZm9sbG93aW5nKGl0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKICAgICByZXR1
cm4gbmV4dC52YWx1ZV9vcihzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5z
aWduZWQgc3RhcnRQb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBi
b29sIGJyZWFrTkJTUCwgYm9vbCBjYW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJv
b2wgYnJlYWtBbnl3aGVyZSkKK2lubGluZSBib29sIGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJ
dGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBj
YW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkKIHsK
ICAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxlLnZhbHVlKCkgPj0gc3RhcnRQ
b3NpdGlvbikKICAgICAgICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gPT0gbmV4dEJyZWFrYWJsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKaW5kZXggMTc2OTQ3MjJlNzE2MDEw
MmI3YTAyYzIzMzFiYWY0ZDZmN2M5ODg1ZC4uNzUyNjE3NzA4ZjE2Zjg5MjJmZDAwYWU5NzkxYjlj
ZGFmNjAzMDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVl
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKQEAgLTM0
LDcgKzM0LDcgQEAgc3RydWN0IENTU1ZhbHVlS2V5IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENTU1Zh
bHVlS2V5PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlS2V5PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
dW5zaWduZWQgY3NzVmFsdWVJRDsKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlOwpAQCAtNTUs
MTcgKzU1LDE3IEBAIHZvaWQgQ1NTVmFsdWVLZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q1NTVmFsdWVLZXk+
IENTU1ZhbHVlS2V5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q1NT
VmFsdWVLZXk+IENTU1ZhbHVlS2V5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gY3NzVmFsdWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBjc3NWYWx1ZUlEOwogICAgIGRlY29kZXIgPj4gY3NzVmFsdWVJRDsKICAgICBpZiAoIWNzc1Zh
bHVlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
dXNlRGFya0FwcGVhcmFuY2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VEYXJrQXBwZWFy
YW5jZTsKICAgICBkZWNvZGVyID4+IHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghdXNlRGFy
a0FwcGVhcmFuY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8
Ym9vbD4gdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbDsKICAgICBkZWNvZGVyID4+IHVzZUVs
ZXZhdGVkVXNlckludGVyZmFjZUxldmVsOwogICAgIGlmICghdXNlRWxldmF0ZWRVc2VySW50ZXJm
YWNlTGV2ZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IGM2MmE2Zjk3MjlmMDJkZTU5ZTM0NzE4NDEwNGQ5Nzk2
YmUwYzViMWQuLjcyOThiOWE1OWY4NTM1NzQ0ZTM3NmQ5MTk2MzE5ZThiZTdiYjkwZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCkBAIC05NCw3ICs5NCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxFdmVudFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFdmVudFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBkZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
RXZlbnRSZWdpb24mKTsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgUmVnaW9u
IG1fbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKICNlbmRpZgogI2lmIEVOQUJM
RShFRElUQUJMRV9SRUdJT04pCi0gICAgT3B0aW9uYWw8UmVnaW9uPiBtX2VkaXRhYmxlUmVnaW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiBtX2VkaXRhYmxlUmVnaW9uOwogI2VuZGlmCiB9
OwogCkBAIC0xMzgsOSArMTM4LDkgQEAgdm9pZCBFdmVudFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxF
dmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPFJlZ2lvbj4gcmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVn
aW9uPiByZWdpb247CiAgICAgZGVjb2RlciA+PiByZWdpb247CiAgICAgaWYgKCFyZWdpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDksMTQgKzE0OSwxNCBAQCBPcHRpb25h
bDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGV2ZW50UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92ZSgqcmVnaW9uKTsKIAogI2lmIEVOQUJMRShX
SEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvbmFsPFJlZ2lvbj4gd2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiB3aGVlbEV2ZW50TGlzdGVuZXJS
ZWdpb247CiAgICAgZGVjb2RlciA+PiB3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgaWYg
KCF3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBldmVudFJlZ2lvbi5tX3doZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbiA9IFdURk1vdmUo
KndoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CiAKLSAgICBPcHRpb25hbDxSZWdpb24+IG5vblBh
c3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+
IG5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgZGVjb2RlciA+PiBub25Q
YXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOwogICAgIGlmICghbm9uUGFzc2l2ZVdoZWVs
RXZlbnRMaXN0ZW5lclJlZ2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2
NSw3ICsxNjUsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lP
TlMpCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbj4+IHRvdWNoQWN0aW9uUmVnaW9uczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWdpb24+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAg
ZGVjb2RlciA+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAgaWYgKCF0b3VjaEFjdGlvblJlZ2lv
bnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0
aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxSZWdpb24+PiBlZGl0YWJsZVJlZ2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8UmVnaW9uPj4gZWRpdGFibGVSZWdpb247CiAgICAgZGVjb2RlciA+PiBlZGl0YWJsZVJl
Z2lvbjsKICAgICBpZiAoIWVkaXRhYmxlUmVnaW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9v
bCBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEV2ZW50UmVnaW9uJiBldmVu
dFJlZ2lvbikKIHsKLSAgICBPcHRpb25hbDxFdmVudFJlZ2lvbj4gZGVjb2RlZEV2ZW50UmVnaW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRSZWdpb24+IGRlY29kZWRFdmVudFJlZ2lvbjsKICAg
ICBkZWNvZGVyID4+IGRlY29kZWRFdmVudFJlZ2lvbjsKICAgICBpZiAoIWRlY29kZWRFdmVudFJl
Z2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0MjljMGE5MjZmNzlhZWE2MjQ1NjBjNmExZWEzYmQw
ZTUyOTI2Mjg0Li4zM2UxNzZlMzFiNDkxYjQ0ZDU5NGU5ODQwMTgzYmU4MTVjNDc2M2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjI4LDgg
KzIyOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxjb25zdCBSZW5kZXJCbG9j
a0Zsb3c+IG1fcmVuZGVyZXI7CiAgICAgTGF5b3V0VW5pdCBtX2JlbG93TG9naWNhbEhlaWdodDsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX25leHRMb2dpY2FsQm90dG9tOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1fbmV4dExvZ2ljYWxCb3R0b207CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBtX25leHRTaGFwZUxvZ2ljYWxCb3R0b207CiB9OwogCiBpbmxpbmUgdm9pZCBG
aW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6OmNvbGxlY3RJZk5lZWRlZChjb25zdCBJ
bnRlcnZhbFR5cGUmIGludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDllYzNmNTI5NWY4OGIyMWFlNjQ0Y2IwNWRkOGFk
OWYxNDk1ZWMyYTYuLjRhNTYyNDI3OWU4YjQ0OTRkMDFkOGUwZjg3YTFkMzBkZTk1MDA2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmkKICAgICByZXR1cm4gZGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQuaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJp
ZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRp
bmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggM2I0MmE1Y2Y3Y2Uy
NjYyNjFlM2RjNzkyM2M4NGI4ZWIxM2M5Y2E5MC4uZDc1NzhkOWZhMzAyMzliYTZjNzZkMTE0Y2Q1
NDNmMjBhMjdiNGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRM
YXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91
dEZ1bmN0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIExheW91dFVuaXQgbWFyZ2luTG9naWNhbFNp
emVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uCiBi
b29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gm
KTsKIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChj
b25zdCBSZW5kZXJHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hp
bGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKLU9wdGlvbmFs
PExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcAppbmRleCAzMTQyNjUzMWUyOWE4ZWY0OTBiMmNhMzg0ZWQ5NTU4Yzc0OGRkYmFlLi5k
YTg5MTNkYmU3YmJjOTQ1YWM1YzVkYzk3NmE5MzY3ZWE5MTFjMjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIEdyaWRUcmFjazo6Z3Jvd1RlbXBTaXplKGNvbnN0IExheW91dFVu
aXQmIHRlbXBTaXplKQogICAgIG1fdGVtcFNpemUgKz0gdGVtcFNpemU7CiB9CiAKLXZvaWQgR3Jp
ZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1p
dENhcCkKK3ZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQogewogICAgIEFTU0VSVCghZ3Jvd3RoTGltaXRDYXAg
fHwgZ3Jvd3RoTGltaXRDYXAudmFsdWUoKSA+PSAwKTsKICAgICBtX2dyb3d0aExpbWl0Q2FwID0g
Z3Jvd3RoTGltaXRDYXA7CkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xl
YXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5k
ZXIKICAgICByZXR1cm4gaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjaGlsZCwg
ZGlyZWN0aW9uKSB8fCBoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNoaWxkKGNoaWxkLCBk
aXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorc3RhdGljIHZvaWQg
c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94
JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBzaXplKQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykK
ICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoc2l6ZSk7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3IK
IAogLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIHByaXZhdGUuCiAKLXZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKQordm9pZCBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG06OnNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkKIHsKICAgICBpZiAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIG1fZnJlZVNwYWNlQ29sdW1ucyA9IGZy
ZWVTcGFjZTsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAg
ICAgICAgbV9mcmVlU3BhY2VSb3dzID0gZnJlZVNwYWNlOwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmF2YWlsYWJsZVNwYWNlKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjphdmFpbGFi
bGVTcGFjZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwogICAgIHJldHVybiBh
dmFpbGFibGVTcGFjZShtX2RpcmVjdGlvbik7CiB9CiAKLXZvaWQgR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtOjpzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKQog
ewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgbV9hdmFpbGFibGVT
cGFjZUNvbHVtbnMgPSBhdmFpbGFibGVTcGFjZTsKQEAgLTU1MSwxMiArNTUxLDEyIEBAIHZvaWQg
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8
R3JpZFRyYWNrKj4mIHRyYWNrCiAgICAgICAgIHRyYWNrLT5zZXRQbGFubmVkU2l6ZSh0cmFjay0+
cGxhbm5lZFNpemUoKSA9PSBpbmZpbml0eSA/IHRyYWNrLT50ZW1wU2l6ZSgpIDogc3RkOjptYXgo
dHJhY2stPnBsYW5uZWRTaXplKCksIHRyYWNrLT50ZW1wU2l6ZSgpKSk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFC
cmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25z
dCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBj
b25zdAogewogICAgIGNvbnN0IEdyaWRTcGFuJiBzcGFuID0gbV9ncmlkLmdyaWRJdGVtU3Bhbihj
aGlsZCwgZGlyZWN0aW9uKTsKICAgICBMYXlvdXRVbml0IGdyaWRBcmVhU2l6ZTsKICAgICBib29s
IGdyaWRBcmVhSXNJbmRlZmluaXRlID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlU2l6ZSA9IGF2YWlsYWJsZVNwYWNlKGRpcmVjdGlvbik7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplID0gYXZhaWxhYmxlU3BhY2UoZGlyZWN0aW9u
KTsKICAgICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IHNwYW4pIHsKICAgICAgICAgLy8gV2Ug
bWF5IG5lZWQgdG8gZXN0aW1hdGUgdGhlIGdyaWQgYXJlYSBzaXplIGJlZm9yZSBydW5uaW5nIHRo
ZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtIGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIHByZS1sYXlv
dXQgb2Ygb3J0aG9nb25hbCBpdGVtcy4KICAgICAgICAgLy8gV2UgY2Fubm90IHVzZSB0cmFja3Mo
ZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9uXS5jYWNoZWRUcmFja1NpemUoKSBiZWNhdXNlIHRyYWNr
cyhkaXJlY3Rpb24pIGlzIGVtcHR5LCBzaW5jZSB3ZSBhcmUgZWl0aGVyIHBlcmZvcm1pbmcgcHJl
LWxheW91dApAQCAtNTc3LDcgKzU3Nyw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoCiAgICAg
cmV0dXJuIGdyaWRBcmVhU2l6ZTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmdyaWRBcmVhQnJl
YWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRDb250ZW50QWxpZ25tZW50T2Zm
c2V0ID0KICAgICAgICAgZGlyZWN0aW9uID09IEZvckNvbHVtbnMgJiYgKG1fc2l6aW5nU3RhdGUg
PT0gUm93U2l6aW5nRmlyc3RJdGVyYXRpb24gfHwgbV9zaXppbmdTdGF0ZSA9PSBSb3dTaXppbmdF
eHRyYUl0ZXJhdGlvbkZvclNpemVDb250YWlubWVudCk7CkBAIC04MjYsNyArODI2LDcgQEAgTGF5
b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluU2l6ZUZvckNoaWxk
KFJlbmRlckJveCYgY2hpbGQpIGMKICAgICAgICAgcmV0dXJuIG1pblNpemU7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3JpZEFyZWFTaXplID0gbV9hbGdvcml0aG0uZ3JpZEFy
ZWFCcmVhZHRoRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyaWRBcmVhU2l6ZSA9IG1fYWxnb3JpdGhtLmdyaWRBcmVh
QnJlYWR0aEZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbik7CiAgICAgcmV0dXJu
IG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgZ3JpZEFyZWFTaXpl
KSArIGJhc2VsaW5lU2hpbTsKIH0KIApAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpjb3B5QmFzZWxpbmVJdGVtc0NhY2hlKGNvbnN0IEdyaWRUcmFja1Np
emluZ0FsZ29yCiAgICAgICAgIG1fcm93QmFzZWxpbmVJdGVtc01hcCA9IHNvdXJjZS5tX3Jvd0Jh
c2VsaW5lSXRlbXNNYXA7CiB9CiAKLWJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRl
Z3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJl
bmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRlU2l6ZSkgY29uc3QKK2Jvb2wgR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtU3RyYXRlZ3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVTaXplKSBjb25zdAog
ewogICAgIGlmICghb3ZlcnJpZGVTaXplKQogICAgICAgICBvdmVycmlkZVNpemUgPSBtX2FsZ29y
aXRobS5ncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjaGlsZCwgZGlyZWN0aW9uKTsKQEAgLTkwOSw3
ICs5MDksNyBAQCBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojp1cGRhdGVP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpegogICAgIHJldHVybiB0cnVlOwogfQog
Ci1MYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5OjptaW5Mb2dpY2Fs
U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXpl
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAorTGF5b3V0VW5pdCBH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChS
ZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAogewogICAgIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZs
b3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5z
KTsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0
aW9uOwpAQCAtOTI4LDggKzkyOCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxh
eW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJp
ZGVTaXplSGFzQ2hhbmdlZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXhpbWl6ZVRyYWNr
cyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpIG92
ZXJyaWRlOwotICAgIGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+
JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1h
eGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiYgZnJlZVNwYWNlKSBvdmVycmlkZTsKKyAgICBkb3VibGUgZmluZFVzZWRGbGV4RnJhY3Rpb24o
VmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHJlY29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3Vi
bGUmIGZsZXhGcmFjdGlvbiwgTGF5b3V0VW5pdCYgdG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIExheW91dFVuaXQgZnJlZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0NvbXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCpyZW5kZXJHcmlk
KCkpOyB9CkBAIC05NDIsNyArOTQyLDcgQEAgdm9pZCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5Ojps
YXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRhdGlvbihSZW5kZXJCb3gmIGNoaWwKICAgICBj
aGlsZC5sYXlvdXRJZk5lZWRlZCgpOwogfQogCi12b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6
Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFsPExheW91
dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGltaXpl
VHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4mIGZyZWVTcGFjZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZnJlZVNwYWNlKTsKICAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogdHJhY2tzKQpAQCAtOTU2LDcgKzk1Niw3IEBAIHN0YXRpYyBpbmxpbmUg
ZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0cmFjaykKICAg
ICByZXR1cm4gdHJhY2suYmFzZVNpemUoKSAvIHN0ZDo6bWF4PGRvdWJsZT4oMSwgZmxleEZhY3Rv
cik7CiB9CiAKLWRvdWJsZSBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFj
dGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFj
ZSkgY29uc3QKK2RvdWJsZSBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFj
dGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJl
ZVNwYWNlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmVlU3BhY2UpOwogICAgIGF1dG8g
YWxsVHJhY2tzID0gbV9hbGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbik7CkBAIC0xMDI1LDEyICsx
MDI1LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEdyaWRJdGVtRm9y
TWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdl
ZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRy
YWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpIG92ZXJyaWRlOwotICAgIGRv
dWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVk
VHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1heGltaXplVHJhY2tzKFZl
Y3RvcjxHcmlkVHJhY2s+Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiYgZnJlZVNwYWNlKSBv
dmVycmlkZTsKKyAgICBkb3VibGUgZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVk
PiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIHJlY29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3VibGUmIGZsZXhGcmFjdGlv
biwgTGF5b3V0VW5pdCYgdG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVu
aXQgZnJlZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTGF5b3V0VW5pdCBtaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIGNv
bnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVT
aXplKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxTaXplRm9yQ2hp
bGQoUmVuZGVyQm94JiwgY29uc3QgTGVuZ3RoJiBjaGlsZE1pblNpemUsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Nv
bXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiB9OwogCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBMYXlvdXRVbml0IEluZGVmaW5pdGVTaXplU3Ry
YXRlZ3k6OmZyZWVTcGFjZUZvclN0cmV0Y2hBdXRvVHJhY2tzU3RlcCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1pblNpemUudmFsdWUoKSAtIGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpOwogfQogCi1MYXlv
dXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRl
ckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBhdmFpbGFibGVTaXplKSBjb25zdAorTGF5b3V0VW5pdCBEZWZpbml0ZVNpemVTdHJhdGVn
eTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgm
IGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBj
b25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlv
biA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5k
ZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZmxvd0F3YXJlRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIGRpcmVjdGlvbigpKTsKQEAgLTEw
NTcsNyArMTA1Nyw3IEBAIExheW91dFVuaXQgRGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1pbkxvZ2lj
YWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QKICAgICByZXR1cm4gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQs
IGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZSk7CiB9CiAKLXZvaWQgRGVmaW5pdGVTaXplU3Ry
YXRlZ3k6Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFs
PExheW91dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lkIERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptYXhp
bWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+JiBmcmVlU3BhY2UpCiB7CiAgICAgc2l6ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6
ZSgpOwogICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0cmFja3NGb3JEaXN0cmlidXRpb24odHJhY2tz
U2l6ZSk7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lkIERlZmluaXRlU2l6ZVN0cmF0ZWd5Ojps
YXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRhdGlvbihSZW5kZXJCb3gmIGNoaWxkLAogICAg
IGNoaWxkLmxheW91dElmTmVlZGVkKCk7CiB9CiAKLWRvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVn
eTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkgY29u
c3QKK2RvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVj
dG9yPHVuc2lnbmVkPiYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdAogewogICAgIEdyaWRTcGFuIGFs
bFRyYWNrc1NwYW4gPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbV9h
bGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbikuc2l6ZSgpKTsKICAgICBBU1NFUlQoZnJlZVNwYWNl
KTsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpy
ZXNvbHZlSW50cmluc2ljVHJhY2tTaXplcygpCiAgICAgaGFuZGxlSW5maW5pdHlHcm93dGhMaW1p
dCgpOwogfQogCi12b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c3RyZXRjaEZsZXhpYmxl
VHJhY2tzKE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpzdHJldGNoRmxleGlibGVUcmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBmcmVlU3BhY2UpCiB7CiAgICAgaWYgKG1fZmxleGlibGVTaXplZFRyYWNrc0luZGV4Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4Miw3ICsxMjgyLDcgQEAgYm9vbCBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG06OmlzVmFsaWRUcmFuc2l0aW9uKCkgY29uc3QKIAogLy8gR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtIEFQSS4KIAotdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIG51
bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uIHNpemluZ09wZXJhdGlvbiwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlU3BhY2UpCit2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0
dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgbnVtVHJhY2tz
LCBTaXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGF2YWlsYWJsZVNwYWNlKQogewogICAgIEFTU0VSVChtX25lZWRzU2V0dXApOwogICAgIG1f
ZGlyZWN0aW9uID0gZGlyZWN0aW9uOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgdm9pZCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSgq
dGhpcyk7CiAKICAgICAvLyBTdGVwIDEuCi0gICAgY29uc3QgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW5pdGlhbEZyZWVTcGFjZSA9IGZyZWVTcGFjZShtX2RpcmVjdGlvbik7CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbml0aWFsRnJlZVNwYWNlID0gZnJlZVNwYWNlKG1fZGly
ZWN0aW9uKTsKICAgICBpbml0aWFsaXplVHJhY2tTaXplcygpOwogCiAgICAgLy8gU3RlcCAyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5oCmluZGV4IDg5NjA4MTg1ODFlZmJjZGVkMmIzM2VjMDE2YTFmNmI4NGI5ZWE2MTYuLjZlNGNm
ODNmNjBhN2I1Y2VlMTI1YWU1OGM0OTBmZTdmMjgzNjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKQEAgLTcwLDggKzcw
LDggQEAgcHVibGljOgogICAgIGJvb2wgaW5maW5pdGVseUdyb3dhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmZpbml0ZWx5R3Jvd2FibGU7IH0KICAgICB2b2lkIHNldEluZmluaXRlbHlHcm93YWJs
ZShib29sIGluZmluaXRlbHlHcm93YWJsZSkgeyBtX2luZmluaXRlbHlHcm93YWJsZSA9IGluZmlu
aXRlbHlHcm93YWJsZTsgfQogCi0gICAgdm9pZCBzZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxM
YXlvdXRVbml0Pik7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3Jvd3RoTGltaXRDYXAoKSBj
b25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2FwOyB9CisgICAgdm9pZCBzZXRHcm93dGhMaW1p
dENhcChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsg
fQogCiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXplKCkgY29uc3QgeyBy
ZXR1cm4gKm1fY2FjaGVkVHJhY2tTaXplOyB9CiAgICAgdm9pZCBzZXRDYWNoZWRUcmFja1NpemUo
Y29uc3QgR3JpZFRyYWNrU2l6ZSYpOwpAQCAtODUsOSArODUsOSBAQCBwcml2YXRlOgogICAgIExh
eW91dFVuaXQgbV9ncm93dGhMaW1pdCB7IDAgfTsKICAgICBMYXlvdXRVbml0IG1fcGxhbm5lZFNp
emUgeyAwIH07CiAgICAgTGF5b3V0VW5pdCBtX3RlbXBTaXplIHsgMCB9OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IG1fZ3Jvd3RoTGltaXRDYXA7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBtX2dyb3d0aExpbWl0Q2FwOwogICAgIGJvb2wgbV9pbmZpbml0ZWx5R3Jvd2FibGUgeyBm
YWxzZSB9OwotICAgIE9wdGlvbmFsPEdyaWRUcmFja1NpemU+IG1fY2FjaGVkVHJhY2tTaXplOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R3JpZFRyYWNrU2l6ZT4gbV9jYWNoZWRUcmFja1NpemU7CiB9Owog
CiBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gZmluYWwgewpAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uLCBPcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSk7CisgICAgdm9pZCBzZXR1cChHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKTsKICAgICB2b2lkIHJ1bigpOwog
ICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRVbml0IG1heENvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDb250ZW50U2l6ZTsg
fTsKIAogICAgIExheW91dFVuaXQgYmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmLCBHcmlkQXhpcykgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
R3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRl
ZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICB2b2lkIGNhY2hlQmFzZWxpbmVBbGlnbmVkSXRlbShj
b25zdCBSZW5kZXJCb3gmLCBHcmlkQXhpcyk7CiAgICAgdm9pZCBjb3B5QmFzZWxpbmVJdGVtc0Nh
Y2hlKGNvbnN0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYsIEdyaWRBeGlzKTsKQEAgLTEyNCwx
MSArMTI0LDExIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gbV9jb2x1bW5zIDogbV9yb3dzOyB9CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFj
az4mIHRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdCB7IHJl
dHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IG1fY29sdW1ucyA6IG1fcm93czsgfQogCi0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9m
cmVlU3BhY2VDb2x1bW5zIDogbV9mcmVlU3BhY2VSb3dzOyB9Ci0gICAgdm9pZCBzZXRGcmVlU3Bh
Y2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBt
X2ZyZWVTcGFjZUNvbHVtbnMgOiBtX2ZyZWVTcGFjZVJvd3M7IH0KKyAgICB2b2lkIHNldEZyZWVT
cGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4p
OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyBtX2F2YWlsYWJsZVNwYWNlQ29sdW1ucyA6IG1fYXZhaWxhYmxlU3BhY2VSb3dzOyB9
Ci0gICAgdm9pZCBzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9w
dGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWls
YWJsZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0
dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9hdmFpbGFibGVTcGFjZUNvbHVtbnMgOiBt
X2F2YWlsYWJsZVNwYWNlUm93czsgfQorICAgIHZvaWQgc2V0QXZhaWxhYmxlU3BhY2UoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKIAogICAgIExh
eW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29uc3Q7CiAKQEAgLTEzOSw3ICsxMzks
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlU3BhY2UoKSBjb25zdDsKICAgICBib29sIGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNB
dXRvKGNvbnN0IEdyaWRMZW5ndGgmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0Owog
ICAgIEdyaWRUcmFja1NpemUgY2FsY3VsYXRlR3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAgICAgY29uc3QgR3Jp
ZFRyYWNrU2l6ZSYgcmF3R3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVu
c2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZSA8VHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZSBwaGFzZT4gdm9pZCBp
bmNyZWFzZVNpemVzVG9BY2NvbW1vZGF0ZVNwYW5uaW5nSXRlbXMoY29uc3QgR3JpZEl0ZW1zU3Bh
bkdyb3VwUmFuZ2UmIGdyaWRJdGVtc1dpdGhTcGFuKTsKICAgICBMYXlvdXRVbml0IGl0ZW1TaXpl
Rm9yVHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZShUcmFja1NpemVDb21wdXRhdGlvblBoYXNlLCBS
ZW5kZXJCb3gmKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8VHJhY2tTaXplQ29tcHV0YXRpb25QaGFz
ZSBwaGFzZT4gdm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4m
IHRyYWNrcywgVmVjdG9yPEdyaWRUcmFjayo+KiBncm93QmV5b25kR3Jvd3RoTGltaXRzVHJhY2tz
LCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpIGNvbnN0OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlQmFzZWxpbmVBbGlnbm1l
bnRDb250ZXh0KCk7CiAgICAgdm9pZCB1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoY29u
c3QgUmVuZGVyQm94JiwgR3JpZEF4aXMpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gbWV0aG9kIGF0IHRoaXNlIGxldmVsLgogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNrU2l6
ZXMoKTsKICAgICB2b2lkIHJlc29sdmVJbnRyaW5zaWNUcmFja1NpemVzKCk7Ci0gICAgdm9pZCBz
dHJldGNoRmxleGlibGVUcmFja3MoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKTsKKyAg
ICB2b2lkIHN0cmV0Y2hGbGV4aWJsZVRyYWNrcyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZy
ZWVTcGFjZSk7CiAgICAgdm9pZCBzdHJldGNoQXV0b1RyYWNrcygpOwogCiAgICAgLy8gU3RhdGUg
bWFjaGluZS4KQEAgLTE4NywxMSArMTg3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YXNTZXR1
cCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJhdGVneTsgfQogICAgIGJvb2wgbV9uZWVkc1NldHVw
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9oYXNQZXJjZW50U2l6ZWRSb3dzSW5kZWZpbml0ZUhlaWdo
dCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZVJv
d3M7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZUNvbHVtbnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJsZVNwYWNlUm93czsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZhaWxhYmxlU3BhY2VDb2x1bW5zOwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9mcmVlU3BhY2VDb2x1bW5zOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fZnJlZVNwYWNlUm93czsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IG1fZnJlZVNwYWNlQ29sdW1uczsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fZnJl
ZVNwYWNlUm93czsKIAogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBib3RoIGFsaXZlIGluIG9yZGVy
IHRvIHByb3Blcmx5IHNpemUgZ3JpZHMgd2l0aCBvcnRob2dvbmFsCiAgICAgLy8gd3JpdGluZyBt
b2Rlcy4KQEAgLTI1NCw4ICsyNTQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG1TdHJhdGVneSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+
JiBmcmVlU3BhY2UpID0gMDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlv
bihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNr
PiYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4mIGZyZWVTcGFjZSkgPSAwOworICAgIHZpcnR1
YWwgZG91YmxlIGZpbmRVc2VkRmxleEZyYWN0aW9uKFZlY3Rvcjx1bnNpZ25lZD4mIGZsZXhpYmxl
U2l6ZWRUcmFja3NJbmRleCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2UpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVjb21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0aW9u
LCBMYXlvdXRVbml0JiB0b3RhbEdyb3d0aCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBmcmVlU3BhY2VGb3JTdHJldGNoQXV0b1RyYWNrc1N0ZXAoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzQ29tcHV0aW5nU2l6ZUNvbnRhaW5tZW50KCkgY29uc3QgPSAwOwpAQCAt
MjY0LDExICsyNjQsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5KEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtKQogICAgICAgICA6
IG1fYWxnb3JpdGhtKGFsZ29yaXRobSkgeyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWlu
TG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmLCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6
ZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiwgY29uc3QgTGVu
Z3RoJiBjaGlsZE1pblNpemUsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6
ZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1
dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3QgPSAw
OwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29u
c3Q7Ci0gICAgYm9vbCB1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExh
eW91dFVuaXQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHVwZGF0ZU92ZXJyaWRp
bmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICAvLyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWNjZXNzb3JzIGZv
ciBzdWJjbGFzc2VzLgogICAgIExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9hbGdvcml0aG0uY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7IH0KQEAgLTI3
Niw3ICsyNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZG91YmxlIGZpbmRGclVuaXRTaXplKGNvbnN0
IEdyaWRTcGFuJiB0cmFja3NTcGFuLCBMYXlvdXRVbml0IGxlZnRPdmVyU3BhY2UpIGNvbnN0IHsg
cmV0dXJuIG1fYWxnb3JpdGhtLmZpbmRGclVuaXRTaXplKHRyYWNrc1NwYW4sIGxlZnRPdmVyU3Bh
Y2UpOyB9CiAgICAgdm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNr
Kj4mIHRyYWNrcywgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKSBjb25zdCB7IG1f
YWxnb3JpdGhtLmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzPE1heGltaXplVHJhY2tzPih0cmFja3Ms
IG51bGxwdHIsIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7IH0KICAgICBjb25zdCBSZW5kZXJHcmlk
KiByZW5kZXJHcmlkKCkgY29uc3QgeyByZXR1cm4gbV9hbGdvcml0aG0ubV9yZW5kZXJHcmlkOyB9
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2FsZ29yaXRobS5hdmFpbGFibGVTcGFjZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmF2YWls
YWJsZVNwYWNlKCk7IH0KIAogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgbV9hbGdvcml0
aG07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmNwcAppbmRleCBmZjkwNDUwYjgxZTIxN2RhOTA1MjU5YTg5NDhmMGMxZDZh
OGM2OTE4Li42MzE2YjNhODJmNzg2Y2M0M2E2YzkwODMyNDEyNGJlNmYyZWRjM2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6Zmxh
dHRlbigpCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UgPSB0LmludmVyc2UoKSkgeworICAgIGlmIChz
dGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlID0gdC5pbnZlcnNlKCkp
IHsKICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlLnZhbHVlKCkucHJvamVjdFBv
aW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IGludmVy
c2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJRdWFkKTsKICAgICAgICAgbV9sYXN0
UGxhbmFyQXJlYSA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJBcmVh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9s
bGVyLmNwcAppbmRleCA4OWFiY2E5YTRmMTA0ZDQ1NTc4Mjg3ZDkxZDg3OGI1YjA2NmRhZWVkLi43
ZmM2ZDZkMzRmZmE3MTNlYjBlZGY5ZWJkNGI1ZmVlZTBlMTU3MGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdChsb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLU9w
dGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRl
cnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGQ6
Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpp
bnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
CiAgICAgc3dpdGNoIChzdHlsZS5pbWFnZVJlbmRlcmluZygpKSB7CiAgICAgY2FzZSBJbWFnZVJl
bmRlcmluZzo6T3B0aW1pemVTcGVlZDoKQEAgLTEyMCw3ICsxMjAsNyBAQCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShHcmFwaGljcwogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BE
RkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdDsKIAotICAgIGlmIChPcHRpb25h
bDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlv
blF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHlsZSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlv
blF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHlsZSgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxl
SW50ZXJwb2xhdGlvbi52YWx1ZSgpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRvIHVzZSB0aGUgdW56
b29tZWQgaW1hZ2Ugc2l6ZSwgc2luY2UgaWYgYSBmdWxsIHBhZ2Ugem9vbSBpcyBpbiBlZmZlY3Qs
IHRoZSBpbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlD
b250cm9sbGVyLmgKaW5kZXggY2Q5N2NjN2MyNDQxZGQ5ZmYzMmNiNjNlMjQwYmIwMTM1YmQ0ZWMy
YS4uMTlhY2Q1ZTU2OTk3OTcyY2YyNjQyZDk4ZjA5N2RlYjRhMzFkZTllYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCkBAIC00Myw3
ICs0Myw3IEBAIGNsYXNzIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAg
c3RhdGljIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1h
Z2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYpOwogCiAgICAgdm9pZCBy
ZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsg
cmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
aAppbmRleCBkNjRjNzIzNDUyZmMzN2I3MzdhYzlhMDgxZjliZjE3MjhhZDVmMjk4Li5iMzMzZmNh
ODg4Njk0OTM5ZjE5NjIxYTE3ZjU0YTI2MmQ3M2VmM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5oCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZVBhcmVudENoaWxkTGlzdCgpOwogI2VuZGlmCiAKLSAgICBib29sIHZpc2libGVUb0hpdFRl
c3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxs
b3B0KSBjb25zdAorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhzdGQ6Om9wdGlvbmFsPEhp
dFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYTNjZGRjNjRhOGRhMzMwZjQ3NmQyZDIw
MzM4OTk1NmExOGQ1NWQzNS4uOGUzOGJjZjA5ZWQ0YjA1MzBjNDNmMmRmYTdhYWExNzkwM2M5ZmQ2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJv
dmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94
PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICgqbWFya0V4aXN0c0FuZElzQWJvdmUgIT0gY2hpbGRM
aW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBl
bHNlCkBAIC05MzEsNyArOTMxLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVGV4
dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXAKICAgICBpbnQg
bGVmdEdseXBoT3ZlcmZsb3cgPSAtc3Ryb2tlT3ZlcmZsb3cgLSBsZWZ0R2x5cGhFZGdlOwogICAg
IGludCByaWdodEdseXBoT3ZlcmZsb3cgPSBzdHJva2VPdmVyZmxvdyArIHJpZ2h0R2x5cGhFZGdl
OwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gdGV4dEJv
eC5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSkpIHsKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IHRleHRCb3guZW1waGFzaXNN
YXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpKSB7CiAgICAgICAgIGludCBlbXBoYXNpc01h
cmtIZWlnaHQgPSBsaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQobGlu
ZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAgICAgIGlmICgqbWFya0V4aXN0
c0FuZElzQWJvdmUgPT0gIWxpbmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAg
ICAgICAgICAgICB0b3BHbHlwaE92ZXJmbG93ID0gc3RkOjptaW4odG9wR2x5cGhPdmVyZmxvdywg
LWVtcGhhc2lzTWFya0hlaWdodCk7CkBAIC0xNjE5LDcgKzE2MTksNyBAQCBMYXlvdXRVbml0IElu
bGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBh
bGxvd2VkUG9zaQogCiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUgPSBjaGlsZC0+bGlu
ZVN0eWxlKCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92
ZSA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjaGlsZExpbmVTdHlsZSk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5l
bXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKICAgICAgICAgICAg
IGlmIChtYXJrRXhpc3RzQW5kSXNBYm92ZSAmJiAqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjaGls
ZC0+bG9naWNhbFRvcCgpIC0gY2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01h
cmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKQEAgLTE2
NjcsNyArMTY2Nyw3IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5u
b3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zCiAKICAgICAgICAgaWYgKGlz
PElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4o
KmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICEqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGlu
ZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNNYXJrIHsgY2hpbGQtPmxvZ2ljYWxCb3R0b20o
KSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxk
TGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkw
YTUxZjkyNWNjMmQ3ZS4uNjhlM2FjMmZmYzkxZTZmNDNhNmNiMzk5NDZhNGJhOTNlMGRhZmRlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlVG8ob2JqZWN0LCAwKTsKICAgICB9CiAKLSAgICB2
b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBt
b3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7
CiAgICAgICAgIHNldFJlbmRlcmVyKCZvYmplY3QpOwogICAgICAgICBzZXRPZmZzZXQob2Zmc2V0
KTsKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgdm9pZCBzZXRPZmZzZXQodW5zaWduZWQgcG9zaXRpb24p
OwogICAgIFJlbmRlckVsZW1lbnQqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KLSAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247IH0KLSAgICB2b2lkIHNldE5leHRCcmVha2FibGVQ
b3NpdGlvbihPcHRpb25hbDx1bnNpZ25lZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9z
aXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVh
a2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9
CisgICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24oc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAg
IGJvb2wgcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJz
VG9FbmRPZlByZXZpb3VzTm9kZTsgfQogICAgIHZvaWQgc2V0UmVmZXJzVG9FbmRPZlByZXZpb3Vz
Tm9kZSgpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJFbGVtZW50
KiBtX3Jvb3QgeyBudWxscHRyIH07CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVs
bHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOwog
ICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAgICAgLy8gVGhlcmUgYXJlIGEgY291cGxlIHBs
YWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVudCBhbiBJbmxpbmVJdGVyYXRvci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1YTc0OTI2MDc0YmQx
YzEyNzI2ZjcwYWIxMzM2M2FjZWZhNGU1M2E2Li44ZTk4NzZiYjNjNDUyYWE2YWY0ZDFhNzkxNzcw
MTE0YWNkNjMwMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorc3RkOjpv
cHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3Zl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBh
cmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01h
cmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBGbG9hdFIKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
dGhpcy0+bGluZVN0eWxlKCk7CiAKICAgICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwot
ICAgIE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZW1waGFzaXNNYXJrRXhp
c3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4
aXN0c0FuZElzQWJvdmUgPSBlbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSk7
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrID0gbWFya0V4aXN0c0FuZElzQWJv
dmUgPyBsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpIDogbnVsbEF0b20oKTsKICAg
ICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCiAgICAgICAgIGVtcGhhc2lzTWFya09mZnNl
dCA9ICptYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkg
LSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1waGFzaXNNYXJrKSA6IGZvbnQuZm9udE1ldHJp
Y3MoKS5kZXNjZW50KCkgKyBmb250LmVtcGhhc2lzTWFya0FzY2VudChlbXBoYXNpc01hcmspOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNjU0ZDg3N2FkOGYw
M2U3YzVlNWQ4NTg3NWEyMGEzMjk0YzBhZDQ2Ni4uYTRlZWE4OWUzNzBiMDU5OTBhZDU2ODhlZWU1
YjgwMWEzOTdmYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQo
KSBjb25zdCBmaW5hbDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKIAogICAgIExheW91dFJlY3QgbG9naWNhbE92ZXJmbG93UmVjdCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0TG9naWNhbE92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJGcmFnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAppbmRleCAyMjgyYTRlY2U5ODgyZmU4OWM4YmVk
MmVjOTZiYWEzYjMxNjlkMjI2Li4wYmFlODAwNTMyOWVlYTg4NTcyMWQyYzllNTQ0NzcyYjk0ZGIw
OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJGcmFnbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckZyYWdtZW50LmgKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgTGF5ZXJGcmFnbWVudCB7CiBwdWJsaWM6CiAgICAgTGF5ZXJGcmFnbWVu
dCgpID0gZGVmYXVsdDsKICAgICAKLSAgICB2b2lkIHNldFJlY3RzKGNvbnN0IExheW91dFJlY3Qm
IGJvdW5kcywgY29uc3QgQ2xpcFJlY3QmIGJhY2tncm91bmQsIGNvbnN0IENsaXBSZWN0JiBmb3Jl
Z3JvdW5kLCBjb25zdCBPcHRpb25hbDxMYXlvdXRSZWN0PiYgYmJveCkKKyAgICB2b2lkIHNldFJl
Y3RzKGNvbnN0IExheW91dFJlY3QmIGJvdW5kcywgY29uc3QgQ2xpcFJlY3QmIGJhY2tncm91bmQs
IGNvbnN0IENsaXBSZWN0JiBmb3JlZ3JvdW5kLCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFJl
Y3Q+JiBiYm94KQogICAgIHsKICAgICAgICAgbGF5ZXJCb3VuZHMgPSBib3VuZHM7CiAgICAgICAg
IGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZDsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50ID0gZmFsc2U7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0UmVjdD4gYm91bmRpbmdCb3g7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0
PiBib3VuZGluZ0JveDsKIAogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7CiAgICAgQ2xpcFJl
Y3QgYmFja2dyb3VuZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
aW5kZXggZGI4NDlhNGZiY2JmZWM0ODA4MDRlNDdjZDkyZWU3YWZjZjEyZjZmYS4uYmI0NmY3YTY3
OTQ1ZjVmZjUxZjc0NTcxN2Q3ZmJiNmUxZmY0MzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NYXJrZWRUZXh0LmNwcApAQCAtNjgsNyArNjgsNyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gc3Vi
ZGl2aWRlKGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIE92ZXJsYXBTdHJh
dAogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBudW1iZXJPZk9mZnNldHM7ICsraSkgewog
ICAgICAgICBpZiAob2Zmc2V0c1tpXS52YWx1ZSA+IG9mZnNldHNbaSAtIDFdLnZhbHVlKSB7CiAg
ICAgICAgICAgICBpZiAob3ZlcmxhcFN0cmF0ZWd5ID09IE92ZXJsYXBTdHJhdGVneTo6RnJvbnRt
b3N0KSB7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb250bW9zdDsKKyAg
ICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9udG1vc3Q7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFy
a2VkVGV4dCkgJiYgKCFmcm9udG1vc3QgfHwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlID4g
b2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyb250bW9zdCA9IGo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4
dFN0eWxlLmgKaW5kZXggYjkyZDJlMDE0NWNmMzAzYzU3M2ZiYjAxNzk5YzU1MWFiMTA5YzU2OC4u
YWYxYTY1ZjJhZmUyZjY3MjdmOTRjY2ZkZmExZDRlMmFkODY1MGJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0U3R5bGUuaApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3Qg
TWFya2VkVGV4dFN0eWxlIHsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgVGV4dFBh
aW50U3R5bGUgdGV4dFN0eWxlczsKICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyB0
ZXh0RGVjb3JhdGlvblN0eWxlczsKLSAgICBPcHRpb25hbDxTaGFkb3dEYXRhPiB0ZXh0U2hhZG93
OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsKICAgICBmbG9hdCBh
bHBoYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDcxMGMxMDFmMjNkMWQwNjg4OGZjYTNmNDIzNGI3NGU3MjFiOTRmNGIuLjNhYjYyNjcwZjA1YzYx
YzllODBjYTA0YThhYjBiYTY2NWZiYThlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0
IG1fcGFnZUxvZ2ljYWxPZmZzZXQ7CiAgICAgTGF5b3V0VW5pdCBtX2ludHJpbnNpY0JvcmRlckZv
ckZpZWxkc2V0OwogICAgIAotICAgIE9wdGlvbmFsPFdlYWtQdHI8UmVuZGVyRnJhZ21lbnRlZEZs
b3c+PiBtX2VuY2xvc2luZ0ZyYWdtZW50ZWRGbG93OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vha1B0
cjxSZW5kZXJGcmFnbWVudGVkRmxvdz4+IG1fZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3c7CiB9Owog
CiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyQmxvY2tSYXJlRGF0YT4+IFJlbmRlckJsb2NrUmFyZURhdGFNYXA7CkBAIC0yNDQwLDE2ICsy
NDQwLDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoUmVuZGVyT2JqZWN0JiBjaGlsZCwgTGF5b3V0CiAgICAgCiAgICAgLy8gVGhlIHByZWZl
cnJlZCB3aWR0aHMgb2YgZmxleGJveCBjaGlsZHJlbiBzaG91bGQgbmV2ZXIgZGVwZW5kIG9uIG92
ZXJyaWRpbmcgc2l6ZXMuIFRoZXkgc2hvdWxkCiAgICAgLy8gYWx3YXlzIGJlIGNvbXB1dGVkIHdp
dGhvdXQgcmVnYXJkIGZvciBhbnkgb3ZlcnJpZGVzIHRoYXQgYXJlIHByZXNlbnQuCi0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0hlaWdodDsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBvdmVycmlkaW5nV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVy
cmlkaW5nSGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ1dp
ZHRoOwogICAgIAogICAgIGlmIChjaGlsZC5pc0JveCgpKSB7CiAgICAgICAgIGF1dG8mIGJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQpOwogICAgICAgICBpZiAoYm94LmlzRmxleEl0ZW0o
KSkgewogICAgICAgICAgICAgaWYgKGJveC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQot
ICAgICAgICAgICAgICAgIG92ZXJyaWRpbmdIZWlnaHQgPSBPcHRpb25hbDxMYXlvdXRVbml0Pihi
b3gub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgb3ZlcnJpZGlu
Z0hlaWdodCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oYm94Lm92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKGJveC5oYXNPdmVycmlkaW5nTG9naWNhbFdpZHRo
KCkpCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGluZ1dpZHRoID0gT3B0aW9uYWw8TGF5b3V0VW5p
dD4oYm94Lm92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgICAgICAgICAgb3ZlcnJp
ZGluZ1dpZHRoID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pihib3gub3ZlcnJpZGluZ0xvZ2lj
YWxXaWR0aCgpKTsKICAgICAgICAgICAgIGJveC5jbGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjU0MSw3ICsyNTQxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29s
IGZpcnN0TGkKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNj
cm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAg
IH07CiAKLSAgICAgICAgYXV0byBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRp
b25hbDxMYXlvdXRVbml0PigpIDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOworICAg
ICAgICBhdXRvIGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4oKSA6IGlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChpc0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAv
LyBIaXN0b3JpY2FsbHksIHdlIGRpZCB0aGlzIGNoZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQg
d2UgY2FuJ3QKQEAgLTI1NTEsNyArMjU1MSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpCiAg
ICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgdXNlIHRoaXMgZm9yIGFsbCB1c2VzIG9m
IGRlcHJlY2F0ZWQgZmxleGJveC4KICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZDb250
ZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5n
VG9wKCkgKyBjb250ZW50SGVpZ2h0KCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkg
KyBjb250ZW50V2lkdGgoKTsKICAgICAgICAgICAgIGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGlu
ZVBvcy52YWx1ZSgpID4gYm90dG9tT2ZDb250ZW50KQotICAgICAgICAgICAgICAgIGJhc2VsaW5l
UG9zID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVBv
cyA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YmFzZWxpbmVQb3MpCiAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxM
aW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSAr
IGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0yNTc2LDEzICsyNTc2LDEzIEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJz
dExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVp
Z2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cykpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChzaG91bGRBcHBseUxheW91dENvbnRh
aW5tZW50KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPExheW91dFVuaXQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3Vy
cjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5p
c0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKQEAgLTI1OTEsMTYgKzI1OTEsMTYg
QEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVE
aXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQo
KnRoaXMpKQogICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3go
KnRoaXMsIGxpbmVEaXJlY3Rpb24pICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUg
PyBtYXJnaW5Cb3R0b20oKSA6IG1hcmdpbkxlZnQoKSk7CiAKICAgICBpZiAoaXNXcml0aW5nTW9k
ZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRV
bml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAg
ICAgYm9vbCBoYXZlTm9ybWFsRmxvd0NoaWxkID0gZmFsc2U7CiAgICAgZm9yIChhdXRvKiBib3gg
PSBsYXN0Q2hpbGRCb3goKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7
CkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZQogICAgICAgICAg
ICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9Owog
ICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Jl
bmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQp
CkBAIC0zMjIyLDkgKzMyMjIsOSBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiAoYm9vbClhdmFpbGFibGVMb2dpY2FsSGVpZ2h0
Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9u
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKSBjb25zdAogewotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKICAgICAKICAgICAvLyBGb3IgYW5vbnltb3VzIGJs
b2NrcyB0aGF0IGFyZSBza2lwcGVkIGR1cmluZyBwZXJjZW50YWdlIGhlaWdodCBjYWxjdWxhdGlv
biwKICAgICAvLyB3ZSBjb25zaWRlciB0aGVtIHRvIGhhdmUgYW4gaW5kZWZpbml0ZSBoZWlnaHQu
CkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIDBfbHUpOwogICAgICAgICBhdmFpbGFibGVIZWlnaHQg
PSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0
KCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfSBlbHNlIGlmIChzdHlsZVRvVXNl
LmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewotICAgICAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY29tcHV0ZVBlcmNlbnRhZ2VM
b2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgaWYg
KGhlaWdodFdpdGhTY3JvbGxiYXIpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEJv
eEhlaWdodFdpdGhTY3JvbGxiYXIgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhoZWlnaHRXaXRoU2Nyb2xsYmFyLnZhbHVlKCkpOwogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBhZGp1c3QgZm9yIG1pbi9tYXggaGVpZ2h0IGJlY2F1c2UgdGhpcyBtZXRob2QgZG9l
cyBub3QKQEAgLTM1MDMsNyArMzUwMyw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVz
dEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnCiAgICAg
cmV0dXJuIHN0ZDo6bWF4KGhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJC
bG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlJ3JlIGRv
aW5nIHRoaXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMgZXZlbiB0aG91Z2ggaXQncyBxdWVzdGlv
bmFibGUuCiAgICAgLy8gU2hvdWxkbid0IGhlaWdodDoxMDBweCBtZWFuIHRoZSBmaWVsZHNldCBj
b250ZW50IGdldHMgMTAwcHggb2YgaGVpZ2h0IGV2ZW4gaWYgdGhlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGVmYzAxNTRkYjg2ODc5ZGYzMzcwYWY5NzNmNjI5ZTA0
Zjg1YjY4NjEuLmJlZDU4ZjNlOThlOWNkZGI3ZmY3NjNjYjcyMzQ2NTljN2FhYjlhNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMjksNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBM
YXlvdXRVbml0IGJvcmRlckJlZm9yZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQg
YWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdo
dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0IG92
ZXJyaWRlOworICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JC
b3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgcGFpbnRFeGNsdWRlZENoaWxkcmVuSW5Cb3JkZXIoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKICAgICAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIGxvZ2ljYWwgd2lk
dGgvaGVpZ2h0IGFuZCBtYXJnaW5zIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxv
dyBkaXJlY3Rpb24uCkBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd05lZWRzVXBkYXRlKCkgY29uc3Q7CiAgICAg
dm9pZCByZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVz
Y2VuZGFudHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cqID0gbnVsbHB0cikgZmluYWw7CiAKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNv
bXB1dGF0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZXNldENoaWxkTG9naWNhbEhlaWdodEJlZm9yZUxheW91dChjb25zdCBSZW5kZXJCb3gm
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5k
QW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxs
ZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxh
eWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBi
ZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNjJkZTQxNjViNjEzZWMz
Y2YwOTM4ZGQxYzA3Y2Y1OWNjNDE0MWU5MC4uYTIwYzg1Zjg4NDAwZTM2MTI3NWVlZTRhY2QzOGZk
NDFmZGM1ZmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNv
bHVtbkNvdW50QW5kV2lkdGgoKQogICAgIHNldENvbXB1dGVkQ29sdW1uQ291bnRBbmRXaWR0aChk
ZXNpcmVkQ29sdW1uQ291bnQsIGRlc2lyZWRDb2x1bW5XaWR0aCk7CiB9CiAKLWJvb2wgUmVuZGVy
QmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1ucyhPcHRpb25hbDx1bnNpZ25lZD4gZGVzaXJlZENv
bHVtbkNvdW50KSBjb25zdAorYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1bW5z
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QKIHsKICAg
ICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBub3Qgc3VwcG9zZWQgdG8gY3JlYXRlIG11bHRp
Y29sIGNvbnRleHQuCiAgICAgaWYgKGlzRmlsZVVwbG9hZENvbnRyb2woKSB8fCBpc1RleHRDb250
cm9sKCkgfHwgaXNMaXN0Qm94KCkpCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMYXlvdXRVbgogICAgIH0KIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tG
bG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSAmJiAhaXNHcmlkSXRlbSgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzE1NSw3ICszMTU1LDcgQEAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmly
c3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxp
bmVUeXBlKCkpIH07CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25z
dAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBp
ZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
aW5kZXggNmE0MmFhYWQ0MWM1NWQ0NWE1MzFiYTVhMDBmNjA1MTBhZWEzY2JiMi4uY2QwMDk2NWRh
ZWY5Yzk3M2FhNWFjZDY0NjA4NjIwODJmMGIyODhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjczLDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cqIG11bHRpQ29sdW1uRmxvd1Nsb3dDYXNlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3coUmVuZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAgICAg
dm9pZCBjbGVhck11bHRpQ29sdW1uRmxvdygpOwotICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMo
T3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgYm9vbCB3aWxsQ3JlYXRlQ29sdW1ucyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBk
ZXNpcmVkQ29sdW1uQ291bnQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0NvbHVtbnMoaW50KSBjb25zdDsKIAogICAgIGJvb2wgY29udGFpbnNGbG9hdHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGlu
Z09iamVjdHMtPnNldCgpLmlzRW1wdHkoKTsgfQpAQCAtNDUyLDggKzQ1Miw4IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CiAKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
bGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBpc011bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bXVsdGlDb2x1bW5GbG93KCk7IH0KICAgICAKQEAgLTUzNiw3ICs1MzYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIG92ZXJyaWRlOwogCiBwdWJsaWM6Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJv
b2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRG
b3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0IHsgcmV0dXJuIHsgfTsg
fQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCAv
KiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICovLCBmbG9hdCYgLyogbG9naWNhbExlZnQgKi8s
IGZsb2F0JiAvKiBsb2dpY2FsV2lkdGggKi8pIGNvbnN0IHsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA3Njk1YjEyY2UxZTNkMTQ5ZmFhNGQ5
YTVhNGJhMmY5MTA1OGVlM2RjLi41Njc0OWFhMDdjYzUzYzJiZDIwOTZhM2Y1OWFiYjdiZWM2ZWJk
NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTAxLDcgKzEw
MSw3IEBAIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkaW5nTG9naWNhbEhlaWdodE1h
cCA9IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGluZ0xvZ2ljYWxX
aWR0aE1hcCA9IG51bGxwdHI7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcmUgdGhlc2UgYmFz
ZWQgb24gcGh5c2ljYWwgZGlyZWN0aW9uLgotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQm94KiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwor
dHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25h
bFNpemVNYXAqIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRN
YXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOwogCkBAIC02
NzEsMTEgKzY3MSwxMSBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdp
ZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbAogICAgIHJldHVybiBzdGQ6
Om1heChsb2dpY2FsV2lkdGgsIGNvbXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50VXNpbmcoTWlu
U2l6ZSwgbWluTGVuZ3RoLCBhdmFpbGFibGVXaWR0aCwgY2IsIGZyYWdtZW50KSk7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50
SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWln
aHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxN
YXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRV
bml0PiBtYXhIID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNl
LmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVz
aW5nKE1heFNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2Fs
SGVpZ2h0LCBtYXhILnZhbHVlKCkpOwogICAgIH0KICAgICBhdXRvIGxvZ2ljYWxNaW5IZWlnaHQg
PSBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5IZWlnaHQoKTsKQEAgLTY4MywxOSArNjgzLDE5IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBPCiAgICAgICAgIGxvZ2ljYWxNaW5IZWlnaHQgPSBMZW5ndGgo
KmludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAobG9n
aWNhbE1pbkhlaWdodC5pc01pbkNvbnRlbnQoKSB8fCBsb2dpY2FsTWluSGVpZ2h0LmlzTWF4Q29u
dGVudCgpKQogICAgICAgICBsb2dpY2FsTWluSGVpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAgaWYgKE9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0VXNpbmcoTWluU2l6ZSwgbG9naWNhbE1pbkhlaWdodCwgaW50cmluc2ljQ29udGVudEhl
aWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRMb2dpY2Fs
SGVpZ2h0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBsb2dpY2FsTWluSGVp
Z2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxv
Z2ljYWxIZWlnaHQsIGNvbXB1dGVkTG9naWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4g
bG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRp
b25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNp
Y0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9V
c2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhI
ZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6
ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQp
KQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWlnaHQsIG1h
eEgudmFsdWUoKSk7CiAgICAgfQotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNp
emUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0
KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dp
Y2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9V
c2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkQ29udGVudExvZ2ljYWxIZWln
aHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CiB9CkBAIC0xMjAyLDcgKzEy
MDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBj
b25zdAogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpKTsK
ICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKQpAQCAtMTIxMCw3ICsxMjEwLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKICAgICAg
ICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwLT5n
ZXQodGhpcyk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkKQEAgLTEyNDAsMTMgKzEyNDAsMTMgQEAgYm9vbCBSZW5kZXJC
b3g6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3QKICAg
ICAgICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAg
JiYgZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5jb250
YWlucyh0aGlzKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsV2lkdGgoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICByZXR1cm4gZ092ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5nZXQodGhpcyk7CiB9CiAKLU9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBj
b25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKQEAgLTEyNjIsMTQgKzEyNjIsMTQgQEAg
Ym9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpz
ZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChPcHRpb25hbDxM
YXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBsb2dpY2FsV2lkdGgpCiB7CiAgICAgaWYgKCFnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGhNYXApCiAgICAgICAgIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxXaWR0aE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKICAg
ICBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAtPnNldCh0
aGlzLCBsb2dpY2FsV2lkdGgpOwogfQogCi12b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGxv
Z2ljYWxIZWlnaHQpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhl
aWdodCkKIHsKICAgICBpZiAoIWdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHRNYXApCiAgICAgICAgIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHRNYXAgPSBuZXcgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7CkBAIC0xMzI4LDcg
KzEzMjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IGNvbXB1dAogICAgIHJldHVybiBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRMb2dpY2FsV2lkdGgsIG9y
aWdpbmFsVHlwZSwgZmFsc2UgfSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RD
b250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBo
ZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNv
bnN0CiB7CiAgICAgaWYgKCFoZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjMzNyw3ICsy
MzM3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVjdFVzaW5nUGFp
bnRPZmZzZXQoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0
OwogfQogCi1PcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckJveDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKICAg
ICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4
L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAg
ICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBo
YXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9y
ZSBhcHByb3ByaWF0ZQpAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bmkKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7CiAgICAgICAgICAgICAvLyBDYWxs
ZXJzIHBhc3NpbmcgTGF5b3V0VW5pdDo6bWF4KCkgZm9yIGxvZ2ljYWxIZWlnaHQgbWVhbnMgYW4g
aW5kZWZpbml0ZSBoZWlnaHQsIHNvCiAgICAgICAgICAgICAvLyB0cmFuc2xhdGUgdGhpcyB0byBh
IG51bGxvcHQgaW50cmluc2ljIGhlaWdodCBmb3IgZnVydGhlciBsb2dpY2FsIGhlaWdodCBjb21w
dXRhdGlvbnMuCi0gICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNIZWln
aHQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0hlaWdo
dDsKICAgICAgICAgICAgIGlmIChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAhPSBMYXlvdXRVbml0
OjptYXgoKSkKICAgICAgICAgICAgICAgICBpbnRyaW5zaWNIZWlnaHQgPSBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudDsKICAgICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZy
b21Bc3BlY3RSYXRpbygpKSB7CkBAIC0zMDA2LDIxICszMDA2LDIxIEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFdpdGhvdXRMYXlvdXQoKSBjb25zdAogICAgIHJl
dHVybiBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUs
IGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3Ro
JiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdo
dCkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9
IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUs
IGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9n
aWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdo
dCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVU
eXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFs
PExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2lj
Q29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCkpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50
SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRV
bml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6
aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29u
dGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29k
ZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgpAQCAtMzAzNSwxMCArMzAzNSwxMCBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdo
dFVzaW5nKExlbmd0aAogICAgIHJldHVybiAwX2x1OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlv
dXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAg
aWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6
ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSA6
IHN0ZDo6bnVsbG9wdDsKICAgICAvLyBGSVhNRTogVGhlIENTUyBzaXppbmcgc3BlYyBpcyBjb25z
aWRlcmluZyBjaGFuZ2luZyB3aGF0IG1pbi1jb250ZW50L21heC1jb250ZW50IHNob3VsZCByZXNv
bHZlIHRvLgogICAgIC8vIElmIHRoYXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBj
aGFuZ2UuCiAgICAgaWYgKGhlaWdodC5pc0ludHJpbnNpYygpIHx8IGhlaWdodC5pc01pbkludHJp
bnNpYygpKQpAQCAtMzEwMiw5ICszMTAyLDkgQEAgc3RhdGljIGJvb2wgdGFibGVDZWxsU2hvdWxk
SGF2ZVplcm9Jbml0aWFsU2l6ZShjb25zdCBSZW5kZXJCbG9jayYgYmxvY2ssIGNvbnN0IFIKICAg
ICByZXR1cm4gc2Nyb2xsc092ZXJmbG93WSAmJiAhY2hpbGQuc2hvdWxkVHJlYXRDaGlsZEFzUmVw
bGFjZWRJblRhYmxlQ2VsbHMoKSAmJiAoIWNlbGwuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNB
dXRvKCkgfHwgIWNlbGwudGFibGUoKS0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkp
OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdo
dERlc2NlbmRhbnRzIHVwZGF0ZURlc2NlbmRhbnRzKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBM
ZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzIHVwZGF0ZURl
c2NlbmRhbnRzKSBjb25zdAogewotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhl
aWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKIAog
ICAgIGJvb2wgc2tpcHBlZEF1dG9IZWlnaHRDb250YWluaW5nQmxvY2sgPSBmYWxzZTsKICAgICBS
ZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKQEAgLTMxMzQsNyArMzEzNCw3IEBA
IE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2Fs
SGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAgICAgICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRo
ZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBvciBub3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vy
c2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJy
ZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2
ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9u
YWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092
ZXJmbG93WSgpKSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5vdmVycmlkaW5nTG9naWNhbEhl
aWdodCgpIC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgpIC0gY2ItPmNvbXB1dGVkQ1NT
UGFkZGluZ0FmdGVyKCkgLSBjYi0+Ym9yZGVyQmVmb3JlKCkgLSBjYi0+Ym9yZGVyQWZ0ZXIoKTsK
ICAgICAgICAgfQpAQCAtMzIyMCw3ICszMjIwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoVHlwZSwgTGVuZ3QK
ICAgICByZXR1cm4gMDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4pIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+KSBjb25zdAogewogICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkpKTsKIH0KQEAgLTMz
MDQsNyArMzMwNCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiB7CiAgICAgQVNTRVJUKGhl
aWdodFR5cGUgPT0gTWluU2l6ZSB8fCBoZWlnaHRUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUg
fHwgIWxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpOwogICAgIGlmIChoZWlnaHRUeXBlID09IE1pblNp
emUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlvbmFsPExheW91dFVuaXQ+KDApKTsK
KyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5n
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkpOwogCiAgICAgc3dpdGNoIChsb2dpY2FsSGVp
Z2h0LnR5cGUoKSkgewogICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CkBAIC0zMzE5LDcgKzMz
MTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExlbgogICAgICAgICAgICAgY29udGFpbmVyID0g
Y29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhh
c1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgPSBjb250YWluZXItPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLSAgICAgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHN0cmV0Y2hlZEhlaWdodDsKICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2NrPihj
b250YWluZXIpKSB7CiAgICAgICAgICAgICBhdXRvKiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPihjb250YWluZXIpOwogICAgICAgICAgICAgYmxvY2stPmFkZFBlcmNlbnRIZWlnaHREZXNj
ZW5kYW50KCpjb25zdF9jYXN0PFJlbmRlckJveCo+KHRoaXMpKTsKQEAgLTM0MDgsNyArMzQwOCw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29u
c3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpCiAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChoLCBhdmFpbGFibGVI
ZWlnaHQpKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5j
bHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRl
Q29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXpl
LCBoLCBzdGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4o
MCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVk
aW5nU2Nyb2xsYmFyKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhN
RTogQ2hlY2sgbG9naWNhbFRvcC9sb2dpY2FsQm90dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRs
ZSB2ZXJ0aWNhbCB3cml0aW5nLW1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggMWRkNjg4ODQxZmYxYTMyMjQyNjJhNDNhOGVhZDM4N2ExNjFjNTllYi4uNzJmNDQ5MzRl
ZjQ3NzUxYjcwZDE0ZWI2ODFjZDhjMWY2YjVmMGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaApAQCAtODcsOCArODcsOCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIEFs
bG93SW50cmluc2ljIHsgWWVzLCBObyB9OwogICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNh
bFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQsIExheW91dFVuaXQsIFJlbmRlckJs
b2NrJiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqLCBBbGxvd0ludHJpbnNpYyA9IEFsbG93SW50
cmluc2ljOjpZZXMpIGNvbnN0OwotICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbEhlaWdo
dEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJhaW5D
b250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWln
aHQpIGNvbnN0OworICAgIExheW91dFVuaXQgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWln
aHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CiAKICAgICB2b2lkIHNldExvZ2lj
YWxMZWZ0KExheW91dFVuaXQgbGVmdCkKICAgICB7CkBAIC0zMjMsMTYgKzMyMywxNiBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bWF4KExheW91dFVuaXQoKSwgb3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgp
IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpIC0gc2Nyb2xsYmFyTG9naWNhbFdpZHRo
KCkpOyB9CiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om1heChMYXlvdXRVbml0KCksIG92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNh
bEhlaWdodCgpKTsgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNv
bnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBib29sIGhhc092ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoT3B0aW9u
YWw8TGF5b3V0VW5pdD4pOwotICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2b2lkIHNldE92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4pOworICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4pOwogICAgIHZvaWQgY2xl
YXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemUoKTsKICAgICB2b2lkIGNsZWFy
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTM0
OSw3ICszNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IGZpZWxkc2V0cyB0
byBzdWJ0cmFjdCBvdXQgdGhlIGludHJpbnNpYyBib3JkZXIuCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBo
ZWlnaHQpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZv
ckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgewogICAgICAgICBMYXlvdXRVbml0IG1fYmVm
b3JlOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hX
cmFwcGVyKCk7CiAKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJs
ZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBM
YXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNp
YmxlUmVjdENvbnRleHQpIGNvbnN0CiBvdmVycmlkZTsKICAgICB2b2lkIHJlcGFpbnREdXJpbmdM
YXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWlu
dE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNjZW5kYW50cyk7CkBAIC00NDAsOSAr
NDQwLDkgQEAgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2
b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1h
cmdpbkVuZCwgY29uc3QgUmVuZGVyQmxvY2smIGNiLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciop
IGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVz
aW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhl
aWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRBbmRT
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6
ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhl
aWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5kU2Ny
b2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsK
ICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBl
LCBMZW5ndGggd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBT
aG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwogICAgIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBMZW5ndGgg
aGVpZ2h0KSBjb25zdDsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG92ZXJyaWRlOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJl
c3BlY3RpbmdNaW5NYXhIZWlnaHQoVCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiBjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0
KGxvZ2ljYWxIZWlnaHQpKTsgfQogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0
RGVzY2VuZGFudHMgeyBZZXMgLCBObyB9OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVy
Y2VudGFnZUhlaWdodERlc2NlbmRhbnRzID0gVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRh
bnRzOjpZZXMpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBl
cmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBVcGRhdGVQZXJjZW50
YWdlSGVpZ2h0RGVzY2VuZGFudHMgPSBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHM6
OlllcykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlKSBj
b25zdDsKQEAgLTU0Miw4ICs1NDIsOCBAQCBvdmVycmlkZTsKICAgICAKICAgICBSZW5kZXJMYXll
ciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQg
c2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJs
b2NrLgorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsgfQorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExp
bmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNv
bXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgogCiAgICAgYm9vbCBzaHJp
bmtUb0F2b2lkRmxvYXRzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0OwpAQCAtNjg4LDcgKzY4OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYsIFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyKiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0
aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyQW5k
UGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
SW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExl
bmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0
VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVu
Z3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3Qg
eyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCmluZGV4IDg3MTFiYjk1ZWUzZGM2Nzk0N2UzMjk3MWIxYmU5ZWI3ZWViMmMzM2YuLmQ2YWQ2
OGQ1MzE1YmVlMGYwMmUyYTAyNjM0YzRhOTFjNjUwYzQ5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTg3Niw3ICsxODc2
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVkZ2Vz
ID0gdHJ1ZTsKICAgICBpbnQgbnVtRWRnZXNWaXNpYmxlID0gNDsKICAgICBib29sIGFsbEVkZ2Vz
U2hhcmVDb2xvciA9IHRydWU7Ci0gICAgT3B0aW9uYWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxlU2lk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAgQm94
U2lkZVNldCBlZGdlc1RvRHJhdzsKIAogICAgIGZvciAoYXV0byBzaWRlIDogYWxsQm94U2lkZXMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4YjcwODMwZjFmNWMwMC4uOWIxNWViOTc0
MzdjOGU3Njk3ZTQ3ODZmNTY1ZmUyNzY1M2Y4YjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIzOCw4ICsyMzgsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAt
MV9sdTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gLTFfbHU7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQogICAgIHZpcnR1YWwgYm9vbCBo
YXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAppbmRleCA0NDBiNzljZDAzMjQ4OGUx
YjdhNzQ2ZjdiNjE4Yzk5MzFlZThhNjhjLi42ZWNjMGRlMzk3MmQyNzkwNjNmM2M1ZTczN2E3NTg4
MTNmNzQzYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5l
VGV4dC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgZmxvYXQgUmVuZGVyQ29tYmluZVRleHQ6OndpZHRo
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUKICAgICBy
ZXR1cm4gUmVuZGVyVGV4dDo6d2lkdGgoZnJvbSwgbGVuZ3RoLCBmb250LCB4UG9zaXRpb24sIGZh
bGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogfQogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBS
ZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5lVGV4dDo6
Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogewogICAg
IGlmICghbV9pc0NvbWJpbmVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCA4M2I4NDc1MzJm
NDUwZmVlY2UyNDQ1M2VmZTA3ODQ2MTU2ODI0ZjQ5Li4xNTg1MGYxNWEzNWYxMzJjYzZmZWUyYTk4
YmFiZTMwYjFiMWE1NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ29tYmluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgVGV4dCYgdGV4dE5vZGUo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKICAgICB2b2lkIGNvbWJpbmVUZXh0SWZOZWVkZWQoKTsKLSAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gY29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0KSBjb25zdDsKICAgICBTdHJpbmcgY29tYmluZWRTdHJpbmdGb3JSZW5k
ZXJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQ29tYmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5lZFRleHRXaWR0aChjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBkM2FjMGMzNjFlMGNmNWUwNThkNzg0Y2Yy
MTAyY2M2OWI2ZjRlNThjLi42MzFmYzFkNDVlNDE1OGU4OTAxM2IwMjM0ODI1NjU2YzI0MWFjYjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgc3RydWN0IENvdW50ZXJQbGFuIHsKICAgICBpbnQgdmFsdWU7CiB9OwogCi1z
dGF0aWMgT3B0aW9uYWw8Q291bnRlclBsYW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q291bnRlclBsYW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVy
YXRpbmcgbm9kZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KICAgICBFbGVtZW50
KiBnZW5lcmF0aW5nRWxlbWVudCA9IHJlbmRlcmVyLmdlbmVyYXRpbmdFbGVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiYmNjYjcxN2E1N2JkM2E1
ZGMwMjE4ODZmMTJhOWVkM2QzYjE0MmU5Li5jMmUwNGJlOTYxYzExNWU1ZDA5MDVmMTJiMzhlMmQy
ZTE1NjJjNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAg
LTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gc3R5bGUoKS5vcGFjaXR5KCkgPCAxLjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVU
b0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3Rk
OjpudWxsb3B0KSBjb25zdAorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhzdGQ6Om9wdGlv
bmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNTk2YTNhZjlhYWY4NjdiM2FjNDE2
YTA3MjZlNzNkMmRiMGZlZDQ5OS4uYzQ0NjA1ODM4NzNmMGQwNmU3OTEyOGMzNDExOWViMGRlYjg1
M2U4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCkBAIC0xNjIsMTAgKzE2MiwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbgogICAgIHJl
dHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1h
cmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5G
bG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1l
bnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJh
c2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGls
ZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4NCwxNCArMTg0LDE0IEBAIE9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4oKTsKIAogICAgIGlmICghaXNDb2x1bW5GbG93KCkgJiYgIW1haW5BeGlzSXNDaGlsZElu
bGluZUF4aXMoKmJhc2VsaW5lQ2hpbGQpKQogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChj
cm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5s
b2dpY2FsVG9wKCkpLnRvSW50KCkgfTsKICAgICBpZiAoaXNDb2x1bW5GbG93KCkgJiYgbWFpbkF4
aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCiAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0IHsgKG1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKS50b0ludCgpIH07CiAKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0
TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVCb3hCYXNlbGluZSBhbmQg
c3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcgbW9kZSByb290LgogICAgICAgICAv
LyBUaGlzIHdvdWxkIGFsc28gZml4IHNvbWUgY2FzZXMgd2hlcmUgdGhlIGZsZXhib3ggaXMgb3J0
aG9nb25hbCB0byBpdHMgY29udGFpbmVyLgpAQCAtMjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyAoYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQt
PmxvZ2ljYWxUb3AoKSkudG9JbnQoKSB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0
TGluZUJhc2VsaW5lKCk7CiB9CkBAIC00OTUsNyArNDk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6Y2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGgoY29uc3QgUmVuZGVyQm94JiBj
aGlsZCkKICAgICBpZiAoY2hpbGRDcm9zc1NpemVJc0RlZmluaXRlKGNoaWxkLCBjaGlsZC5zdHls
ZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAgICAgICAgcmV0dXJuIGNoaWxkLmxvZ2ljYWxXaWR0aCgp
OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY2hpbGRPdmVycmlkaW5nV2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjaGlsZE92ZXJyaWRpbmdXaWR0aDsKICAgICBpZiAo
Y2hpbGQuaGFzT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgpKSB7CiAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IGNsZWFyIHBvdGVudGlhbCBvdmVycmlkZXMgdG8gY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0
aCBvdGhlcndpc2UgaXQnbGwgcmV0dXJuIHRoZSBvdmVycmlkZSBzaXplLgogICAgICAgICBjaGls
ZE92ZXJyaWRpbmdXaWR0aCA9IGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKTsKQEAgLTU1
Niw3ICs1NTYsNyBAQCBzdGF0aWMgYm9vbCBjaGlsZEhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpCiAgICAgcmV0dXJuIGNoaWxkLmhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkg
fHwgY2hpbGQuc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpOwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSkKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhp
c0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIHNpemUpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIGhvcml6b250YWwgZmxvdywg
dGhhdCBtZWFucyB0aGUgbWFpbiBzaXplIGlzIHRoZSB3aWR0aC4KICAgICAvLyBUaGF0J3MgdGhl
IGxvZ2ljYWwgd2lkdGggZm9yIGhvcml6b250YWwgd3JpdGluZyBtb2RlcywgYW5kIHRoZSBsb2dp
Y2FsCkBAIC01NzIsNyArNTcyLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGli
bGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYKICAgICAgICAg
Ly8gaWYgbmVjZXNzYXJ5IChzZWUgQ29tcHV0ZU5leHRGbGV4TGluZSBhbmQgdGhlIGNhbGwgdG8K
ICAgICAgICAgLy8gY2hpbGRIYXNJbnRyaW5zaWNNYWluQXhpc1NpemUpIHNvIHdlIGNhbiBiZSBz
dXJlIHRoYXQgdGhlIHR3byBoZWlnaHQKICAgICAgICAgLy8gY2FsbHMgaGVyZSB3aWxsIHJldHVy
biB1cC10by1kYXRlIGRhdGEuCi0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9
IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVk
Q2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodChjaGlsZCkpOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNh
bEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNh
bEhlaWdodChjaGlsZCkpOwogICAgICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgICAgIHJldHVy
biBoZWlnaHQ7CiAgICAgICAgIHJldHVybiBoZWlnaHQudmFsdWUoKSArIGNoaWxkLnNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBib29sIFJlbmRlckZsZXhpYmxl
Qm94Ojp1c2VDaGlsZEFzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgcmV0
dXJuIGNoaWxkQ3Jvc3NTaXplSXNEZWZpbml0ZShjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoRm9yQ2hp
bGQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgY2hpbGQpKTsKIH0KIAotLy8gRklYTUU6IGNvbXB1dGVN
YWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nIG1heSBuZWVkIHRvIHJldHVybiBhbiBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbiB0aGUgZnV0dXJlCisvLyBGSVhNRTogY29tcHV0ZU1haW5TaXplRnJv
bUFzcGVjdFJhdGlvVXNpbmcgbWF5IG5lZWQgdG8gcmV0dXJuIGFuIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW4gdGhlIGZ1dHVyZQogLy8gcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluZGVmaW5p
dGUgc2l6ZXMgYXMgMC8tMS4KIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVN
YWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0
aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0CiB7CkBAIC04MTksNyArODE5LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmco
Y29uc3QgUmVuZGVyQm8KICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH07CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjcm9zc1NpemU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBjcm9zc1NpemU7CiAgICAgaWYgKGNyb3NzU2l6ZUxlbmd0aC5pc0ZpeGVkKCkpCiAgICAgICAg
IGNyb3NzU2l6ZSA9IGFkanVzdEZvckJveFNpemluZyhjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoKTsK
ICAgICBlbHNlIGlmIChjcm9zc1NpemVMZW5ndGguaXNBdXRvKCkpIHsKQEAgLTEyMDksNyArMTIw
OSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFy
Z2lucygpCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JN
aW5BbmRNYXgoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAg
TGVuZ3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
bWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21w
dXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsKICAgICAgICAg
Y2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRT
aXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmlu
ZGV4IDY0YmE4Njc5MmVhMmI5NjM3OTQ3MGUxNTE1MDBlMzE2MTg5MjliZDAuLmZjY2I0MDdiNzEx
NDRlYTA0NGZmY2U0ZWNmYzE4MjAzMWM3NjNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4oY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pIG92
ZXJyaWRlOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtYWlu
QXhpc0V4dGVudCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY3Jvc3NBeGlzQ29udGVudEV4dGVu
dCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFpbkF4aXNDb250ZW50RXh0ZW50KExheW91dFVu
aXQgY29udGVudExvZ2ljYWxIZWlnaHQpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIHNpemUpOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZU1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUsIGNvbnN0IExl
bmd0aCYgc2l6ZSk7CiAgICAgV3JpdGluZ01vZGUgdHJhbnNmb3JtZWRXcml0aW5nTW9kZSgpIGNv
bnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyU3RhcnQoKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckVuZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDhiZmFjYzZlZjBhNjk0MWUzNDBhZWQ4OTZkM2Y2ZTE4
MjVjOGMxZjQuLjIwOTljNGJkNWQ1NjYyYzI3ZjZhNGJjOTE1NGE1NmRmODgxYmI4ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBi
b29sIFJlbmRlckdyaWQ6Om5hbWVkR3JpZExpbmVzRGVmaW5pdGlvbkRpZENoYW5nZShjb25zdCBS
ZW5kZXJTdHlsZSYgb2xkU3R5bGUpCiAKIC8vIFRoaXMgbWV0aG9kIG9wdGltaXplcyB0aGUgZ3V0
dGVycyBjb21wdXRhdGlvbiBieSBza2lwaW5nIHRoZSBhdmFpbGFibGUgc2l6ZQogLy8gY2FsbCBp
ZiBnYXBzIGFyZSBmaXhlZCBzaXplIChpdCdzIG9ubHkgbmVlZGVkIGZvciBwZXJjZW50YWdlcyku
Ci1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjphdmFpbGFibGVTcGFjZUZvckd1dHRl
cnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6YXZhaWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4
aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExl
bmd0aCA9IGlzUm93QXhpcyA/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgp
OwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIG1fYmFzZWxpbmVJdGVtc0NhY2hlZCA9
IGZhbHNlOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRHYXAoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6
ZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNp
emUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdmFpbGFibGVTaXplIHx8ICphdmFpbGFibGVTaXpl
ID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYgZ2FwTGVuZ3RoID0gZGlyZWN0aW9uID09IEZv
ckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwpAQCAtMzM3
LDcgKzMzNyw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEl0ZW1PZmZzZXQoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9u
ID09IEZvclJvd3MgPyBtX29mZnNldEJldHdlZW5Sb3dzLmRpc3RyaWJ1dGlvbk9mZnNldCA6IG1f
b2Zmc2V0QmV0d2VlbkNvbHVtbnMuZGlzdHJpYnV0aW9uT2Zmc2V0OwogfQogCi1MYXlvdXRVbml0
IFJlbmRlckdyaWQ6Omd1dHRlcnNTaXplKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3Bhbiwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyR3JpZDo6Z3V0dGVyc1NpemUoY29uc3QgR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0CiB7CiAgICAgaWYgKHNw
YW4gPD0gMSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OmNvbXB1dGVUcmFja1NpemVzRm9ySW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtJiBhbAogICAgIEFTU0VSVChhbGdvcml0aG0udHJhY2tzQXJlV2lkZXJUaGFu
TWluVHJhY2tCcmVhZHRoKCkpOwogfQogCi11bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0Cit1bnNpZ25lZCBSZW5kZXJH
cmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29u
c3QKIHsKICAgICBBU1NFUlQoIWF2YWlsYWJsZVNpemUgfHwgYXZhaWxhYmxlU2l6ZS52YWx1ZSgp
ICE9IC0xKTsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpA
QCAtNDcwLDggKzQ3MCw4IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0
VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgYm9vbCBuZWVk
c1RvRnVsZmlsbE1pbmltdW1TaXplID0gZmFsc2U7CiAgICAgaWYgKCFhdmFpbGFibGVTaXplKSB7
CiAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4U2l6ZSA9IGlzUm93QXhpcyA/IHN0eWxlKCkubG9n
aWNhbE1heFdpZHRoKCkgOiBzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKTsKLSAgICAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZTsKLSAgICAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTWF4U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZU1heFNpemU7CiAgICAgICAgIGlmICht
YXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmIChtYXhTaXplLmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJs
ZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZyk7CkBAIC00ODMsNyArNDgzLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWMKICAgICAgICAgaWYgKCFhdmFpbGFibGVNYXhTaXplICYmICFtaW5TaXplLmlzU3BlY2lmaWVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKIAotICAg
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVNaW5TaXplOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZU1pblNpemU7CiAgICAgICAgIGlmIChtaW5T
aXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmICghY29udGFpbmluZ0Jsb2NrQXZh
aWxhYmxlU2l6ZSAmJiBtaW5TaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2Fs
SGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7CkBAIC01OTIsNyAr
NTkyLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y2xhbXBBdXRvUmVwZWF0VHJhY2tzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHUKIC8vIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpIGRvZXMgYWx3YXlzIHJldHVybiBhIHZhbHVlIGV2ZW4gaWYgd2UgY2Fubm90IHJlc29sdmUg
aXQgbGlrZSB3aGVuCiAvLyBjb21wdXRpbmcgdGhlIGludHJpbnNpYyBzaXplIChwcmVmZXJyZWQg
d2lkdGhzKS4gVGhhdCdzIHdoeSB3ZSBwYXNzIHRoZSByZXNwb25zaWJpbGl0eSB0byB0aGUKIC8v
IGNhbGxlciB3aG8gZG9lcyBrbm93IHdoZXRoZXIgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRo
IGlzIGluZGVmaW5pdGUgb3Igbm90Lgotdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25Hcmlk
KEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBPcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0Cit2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRl
bXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTG9naWNhbFdpZHRoKSBjb25zdAogewogICAgIEdyaWQm
IGdyaWQgPSBhbGdvcml0aG0ubXV0YWJsZUdyaWQoKTsKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0
Q29sdW1ucyA9IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoRm9yQ29sdW1ucywgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGF0aWMgY29uc3QgU3R5bGVD
b250ZW50QWxpZ25tZW50RGF0YSYgY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgp
CiAgICAgcmV0dXJuIG5vcm1hbEJlaGF2aW9yOwogfQogCi1zdGF0aWMgYm9vbCBvdmVycmlkZVNp
emVDaGFuZ2VkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBoZWlnaHQpCitzdGF0aWMgYm9vbCBvdmVycmlkZVNpemVDaGFuZ2VkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
KQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgcmV0dXJuICFj
aGlsZC5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIHx8
IGNoaWxkLm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgIT0g
d2lkdGg7CkBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIGJvb2wgaGFzUmVsYXRpdmVCbG9ja0F4
aXNTaXplKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgY2gKICAgICBy
ZXR1cm4gR3JpZExheW91dEZ1bmN0aW9uczo6aXNPcnRob2dvbmFsQ2hpbGQoZ3JpZCwgY2hpbGQp
ID8gY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsV2lkdGgoKSB8fCBjaGlsZC5zdHlsZSgpLmxvZ2lj
YWxXaWR0aCgpLmlzQXV0bygpIDogY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCk7CiB9
CiAKLXZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlR3JpZEFyZWFMb2dpY2FsU2l6ZShSZW5kZXJCb3gm
IGNoaWxkLCBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aGVpZ2h0KSBjb25zdAordm9pZCBSZW5kZXJHcmlkOjp1cGRhdGVHcmlkQXJlYUxvZ2ljYWxTaXpl
KFJlbmRlckJveCYgY2hpbGQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAogewogICAgIC8vIEJlY2F1c2UgdGhl
IGdyaWQgYXJlYSBjYW5ub3QgYmUgc3R5bGVkLCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdAogICAg
IC8vIHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgpAQCAtMTI2
NCw3ICsxMjY0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGkKICAgICByZXR1cm4gYmFzZWxp
bmUudmFsdWUoKSArIChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6
IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dy
aXRpbmdNb2RlUm9vdCgpIHx8ICFtX2dyaWQuaGFzR3JpZEl0ZW1zKCkgfHwgc2hvdWxkQXBwbHlM
YXlvdXRDb250YWlubWVudCgqdGhpcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xMzAwLDcgKzEzMDAsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNl
bGluZUNoaWxkLT5sb2dpY2FsVG9wKCkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFz
ZWxpbmUoKTsKIH0KQEAgLTE1NjgsNyArMTU2OCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6
Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwK
ICAgICBlbHNlIHsKICAgICAgICAgZW5kID0gcG9zaXRpb25zW2VuZExpbmVdOwogICAgICAgICAv
LyBUaGVzZSB2ZWN0b3JzIHN0b3JlIGxpbmUgcG9zaXRpb25zIGluY2x1ZGluZyBnYXBzLCBidXQg
d2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoZW0gZm9yIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZC4KLSAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZUZvckd1dHRlcnMgPSBhdmFp
bGFibGVTcGFjZUZvckd1dHRlcnMoZGlyZWN0aW9uKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVTaXplRm9yR3V0dGVycyA9IGF2YWlsYWJsZVNwYWNlRm9yR3V0
dGVycyhkaXJlY3Rpb24pOwogICAgICAgICBpZiAoZW5kTGluZSA+IDAgJiYgZW5kTGluZSA8IGxh
c3RMaW5lKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZ3JpZC5uZWVkc0l0ZW1zUGxhY2VtZW50
KCkpOwogICAgICAgICAgICAgZW5kIC09IGd1dHRlcnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCBl
bmRMaW5lIC0gMSwgMiwgYXZhaWxhYmxlU2l6ZUZvckd1dHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZWZiMTA2NDMzYjQ3MzUwZjFiMzE5YzgzZjA2YWY0ZDRm
MjBlYWM4OS4uOGMxMTExMjNmOTM4YTM5ZmVmZDRjODMwOTRmNDliNmUzYzI5MmMyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFN0YXJ0Rm9yRGlyZWN0aW9uKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5leHBsaWNpdEdy
aWRTdGFydChkaXJlY3Rpb24pOyB9CiAKICAgICAvLyBSZXF1aXJlZCBieSBHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uIEtlZXAgdGhlbSB1bmRlciBjb250cm9sLgotICAgIExheW91dFVuaXQgZ3V0
dGVyc1NpemUoY29uc3QgR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVT
aXplKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGd1dHRlcnNTaXplKGNvbnN0IEdyaWQmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3Bhbiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKICAgICBMYXlv
dXRVbml0IGdyaWRJdGVtT2Zmc2V0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAK
LSAgICB2b2lkIHVwZGF0ZUdyaWRBcmVhTG9naWNhbFNpemUoUmVuZGVyQm94JiwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gd2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7Cisg
ICAgdm9pZCB1cGRhdGVHcmlkQXJlYUxvZ2ljYWxTaXplKFJlbmRlckJveCYsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBj
b25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmKSBjb25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBS
ZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcywgQWxsb3dlZEJhc2VMaW5lID0gQm90aExpbmVzKSBj
b25zdDsKIApAQCAtOTYsMTIgKzk2LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmQWxpZ25t
ZW50Q2hhbmdlZFRvU3RyZXRjaChHcmlkQXhpcywgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlckJveCYpIGNvbnN0Owog
ICAgIGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRGcm9tU3RyZXRjaChHcmlkQXhpcywgY29uc3Qg
UmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0
IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
U3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIGJvb2wgZXhwbGljaXRHcmlkRGlkUmVzaXpl
KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgYm9vbCBuYW1lZEdyaWRMaW5lc0RlZmlu
aXRpb25EaWRDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAotICAgIHVuc2lnbmVk
IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBP
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKKyAgICB1bnNpZ25lZCBj
b21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKIAogICAgIHVuc2ln
bmVkIGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2ln
bmVkIGF1dG9SZXBlYXRUcmFja3MpIGNvbnN0OwogCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChjb25zdCBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0mKSBjb25zdDsKIAotICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpIGNvbnN0OworICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0
b3IoR3JpZCYpIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25z
dDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNv
bnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwpAQCAtMTcwLDE1ICsxNzAsMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJnaW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVy
Qm94Jik7CiAKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0lubGluZUJhc2Vs
aW5lQWxpZ25lZENoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5p
dCBjb2x1bW5BeGlzQmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IHJvd0F4aXNCYXNlbGluZU9mZnNldEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG5v
bkNvbGxhcHNlZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIHVu
c2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWQmKSBj
b25zdDsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIENvbnRlbnRBbGlnbm1lbnRE
YXRhIG1fb2Zmc2V0QmV0d2VlbkNvbHVtbnM7CiAgICAgQ29udGVudEFsaWdubWVudERhdGEgbV9v
ZmZzZXRCZXR3ZWVuUm93czsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gq
LCBPcHRpb25hbDxzaXplX3Q+PiBPdXRPZkZsb3dQb3NpdGlvbnNNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6b3B0aW9uYWw8c2l6ZV90Pj4gT3V0T2ZGbG93
UG9zaXRpb25zTWFwOwogICAgIE91dE9mRmxvd1Bvc2l0aW9uc01hcCBtX291dE9mRmxvd0l0ZW1D
b2x1bW47CiAgICAgT3V0T2ZGbG93UG9zaXRpb25zTWFwIG1fb3V0T2ZGbG93SXRlbVJvdzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYmVhNDYzYjk5ZWY3
MjgzNDA0MTI5MGRmM2EzOWM0OWE2YjI4MTQ2Yi4uNmRiNGU5ZGFmOWRlYzJiZGIzMWI1NWMyNDE4
ZTNlYzFjOTM2NTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0yNjcsNyArMjY3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWwKICAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChzaG91bGRDb21wdXRl
UHJlZmVycmVkKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckltYWdlOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoKSBjb25zdAogewog
ICAgIGlmIChzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggYmFkMGFkZDA0NmJiOTI1YTlm
MmZjYmJkNjU3ZTA1YThiNmFlMTAyMS4uOGNkYTRmZjJiMWNlMjY0OGZlOGIyMjQ3Mzk2YjZiOTE0
NTQ3MjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEzNiw3
ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHMgfHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAg
IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVm
ZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
VXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBl
c3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1MjliMWM2NzA4OTQ4MDllMjc4Yzc1ZjZlZjNk
YmQ0Zjc0NzI5Mjk1Li42NWZkNzc4ODc3YWJhYWViNGI1ZDAyNTc4MjhmNTk2ZjUyZWYxZWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTI5LDcgKzky
OSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjb21wdXRlVmlzaWJsZVJlY3RVc2luZ1Bh
aW50T2Zmc2V0KGNvbnN0IExheW91dFJlY3QmIHJlCiAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVySW5saW5lOjpjb21wdXRlVmlzaWJsZVJl
Y3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJJbmxpbmU6OmNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgLy8gUmVwYWludCBvZmZzZXQgY2FjaGUgaXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxh
dGl2ZSByZXBhaW50aW5nCiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0
KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpICYmICFjb250YWluZXIgJiYgIWNvbnRleHQu
b3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNp
dmVJbnRlcnNlY3Rpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmlu
ZGV4IGEyZmM4MTNhM2Q3YWM5ZTg3NDc4OGY5YmVhYTEyZjRjNDUxYTdjMjguLjI1MmUxOTg4ODE5
YjJkN2M0MDExNGI2NjBlOWNiY2Y3ZTc2ZmZjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNv
bnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5
b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJs
ZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVWaXNpYmxl
UmVjdFVzaW5nUGFpbnRPZmZzZXQoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogCiAgICAgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCog
d2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMTg1ZjZjZjZhOWE5M2ZlODA3OWVjNDM1YzZlYTQ2YjE2Zjc4YjhiZC4u
YzEzMzRlZWE4MGZkMmNhNjEzYWU1YjVkY2NiMGIxOWE1ZjVkYjhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MDczLDcgKzQwNzMsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBS
ZW5kZXJMYXllciogY29udAogCiAgICAgLy8gQ2hlY2sgZm9yIGhpdCB0ZXN0IG9uIGJhY2tmYWNl
IGlmIGJhY2tmYWNlLXZpc2liaWxpdHkgaXMgJ2hpZGRlbicKICAgICBpZiAobG9jYWxUcmFuc2Zv
cm1TdGF0ZSAmJiByZW5kZXJlcigpLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFj
a2ZhY2VWaXNpYmlsaXR5OjpIaWRkZW4pIHsKLSAgICAgICAgT3B0aW9uYWw8VHJhbnNmb3JtYXRp
b25NYXRyaXg+IGludmVydGVkTWF0cml4ID0gbG9jYWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+IGludmVydGVkTWF0cml4ID0gbG9jYWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CiAgICAgICAgIC8vIElmIHRoZSB6LXZlY3RvciBv
ZiB0aGUgbWF0cml4IGlzIG5lZ2F0aXZlLCB0aGUgYmFjayBpcyBmYWNpbmcgdG93YXJkcyB0aGUg
dmlld2VyLgogICAgICAgICBpZiAoaW52ZXJ0ZWRNYXRyaXggJiYgaW52ZXJ0ZWRNYXRyaXgudmFs
dWUoKS5tMzMoKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NzIsNyAr
NDY3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKQog
ICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRSZWN0YW5nbGUocmVjdCk7CiB9CiAKLWJvb2wgUmVu
ZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91
bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3QgT3B0aW9uYWw8
TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94KSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6
aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91
dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCkgY29uc3QKIHsKICAgICAvLyBBbHdheXMgZXhhbWlu
ZSB0aGUgY2FudmFzIGFuZCB0aGUgcm9vdC4KICAgICAvLyBGSVhNRTogQ291bGQgZWxpbWluYXRl
IHRoZSBpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkgY2hlY2sgaWYgd2UgZml4IGJhY2tncm91
bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVyVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCA5NTJhZTRkM2Y3ZWE2MGE5Y2JjYjY4MWQ2NzJmZjUwMjkwZGUx
NmJhLi5jOWFmYzFlMWJkMjEwOTkwYjAzMTY5MTUwNDRmNDJlMmQ2NzBhOWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlbmRlckxheWVyKiBwYWludE9yZGVyUGFyZW50KCkgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXllclJlcGFpbnRSZWN0cz4gcmVwYWludFJlY3RzKCkgY29uc3QKKyAgICBzdGQ6Om9w
dGlvbmFsPExheWVyUmVwYWludFJlY3RzPiByZXBhaW50UmVjdHMoKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKG1fcmVwYWludFJlY3RzVmFsaWQpCiAgICAgICAgICAgICByZXR1cm4gbV9yZXBh
aW50UmVjdHM7CkBAIC02NzIsNyArNjcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcENyb3Nz
ZXNQYWludGluZ0JvdW5kYXJ5KCkgY29uc3Q7CiAKICAgICAvLyBQYXNzIG9mZnNldEZyb21Sb290
IGlmIGtub3duLgotICAgIGJvb2wgaW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25z
dCBPcHRpb25hbDxMYXlvdXRSZWN0PiYgY2FjaGVkQm91bmRpbmdCb3ggPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OworICAgIGJvb2wgaW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
bGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICBlbnVtIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZyB7CiAgICAgICAg
IEluY2x1ZGVTZWxmVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKQEAgLTc5
Niw4ICs3OTYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygp
IGNvbnN0OwogCiAgICAgLy8gTGF5ZXJzIHdpdGggdGhlIHNhbWUgU2Nyb2xsaW5nU2NvcGUgYXJl
IHNjcm9sbGVkIGJ5IHNvbWUgY29tbW9uIGFuY2VzdG9yIHNjcm9sbGVyLiBVc2VkIGZvciBhc3lu
YyBzY3JvbGxpbmcuCi0gICAgT3B0aW9uYWw8U2Nyb2xsaW5nU2NvcGU+IGJveFNjcm9sbGluZ1Nj
b3BlKCkgY29uc3QgeyByZXR1cm4gbV9ib3hTY3JvbGxpbmdTY29wZTsgfQotICAgIE9wdGlvbmFs
PFNjcm9sbGluZ1Njb3BlPiBjb250ZW50c1Njcm9sbGluZ1Njb3BlKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50c1Njcm9sbGluZ1Njb3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdT
Y29wZT4gYm94U2Nyb2xsaW5nU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2JveFNjcm9sbGluZ1Nj
b3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdTY29wZT4gY29udGVudHNTY3JvbGxp
bmdTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTY3JvbGxpbmdTY29wZTsgfQogCiAg
ICAgYm9vbCBwYWludHNXaXRoVHJhbnNwYXJlbmN5KE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBw
YWludEJlaGF2aW9yKSBjb25zdAogICAgIHsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGNoaWxkIGxheWVycyB0aGF0IGNhbm5vdCBjcmVh
dGUgc3RhY2tpbmcgY29udGV4dHMgYW5kIGFwcGVhciBpbiBub3JtYWwgZmxvdyBvcmRlci4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fbm9ybWFsRmxvd0xpc3Q7
CiAKLSAgICAvLyBPbmx5IHZhbGlkIGlmIG1fcmVwYWludFJlY3RzVmFsaWQgaXMgc2V0IChPcHRp
b25hbDw+IG5vdCB1c2VkIHRvIGF2b2lkIHBhZGRpbmcpLgorICAgIC8vIE9ubHkgdmFsaWQgaWYg
bV9yZXBhaW50UmVjdHNWYWxpZCBpcyBzZXQgKHN0ZDo6b3B0aW9uYWw8PiBub3QgdXNlZCB0byBh
dm9pZCBwYWRkaW5nKS4KICAgICBMYXllclJlcGFpbnRSZWN0cyBtX3JlcGFpbnRSZWN0czsKIAog
ICAgIC8vIE91ciBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mZnNldC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZmRkZTA0MGVm
MWVkMjEzZDNiMTUzZjNjMGVmMjE4NDI0NmJhYTBjMi4uOGNiZWJkMzJhMTgwNDVhZWU5NDE1NWJl
OWQ5YmYwNzJhYzAwZmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTExOTYsOSArMTE5Niw5IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXIudmFsdWUoKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFyZW50R3JhcGhpY3NMYXllcjsKLSAgICBPcHRp
b25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFNpemU+IG1fZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbVBhcmVudEdyYXBoaWNzTGF5ZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKICAgICAK
ICAgICBjb25zdCBSZW5kZXJMYXllciYgbV9yZW5kZXJMYXllcjsKICAgICBjb25zdCBSZW5kZXJM
YXllciogbV9jb21wb3NpdGluZ0FuY2VzdG9yOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyKiBjb21w
b3NpdGVkQW5jZXN0b3IpCiAgICAgICAgIG1fY29udGVudHNDb250YWlubWVudExheWVyLT5zZXRT
aXplKHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC5zaXplKCkpOwogICAgIH0KIAotICAgIGF1dG8g
Y29tcHV0ZUFuaW1hdGlvbkV4dGVudCA9IFsmXSAoKSAtPiBPcHRpb25hbDxGbG9hdFJlY3Q+IHsK
KyAgICBhdXRvIGNvbXB1dGVBbmltYXRpb25FeHRlbnQgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IHsKICAgICAgICAgTGF5b3V0UmVjdCBhbmltYXRlZEJvdW5kczsKICAgICAg
ICAgaWYgKGlzUnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uICYmIG1fb3duaW5n
TGF5ZXIuZ2V0T3ZlcmxhcEJvdW5kc0luY2x1ZGluZ0NoaWxkcmVuQWNjb3VudGluZ0ZvclRyYW5z
Zm9ybUFuaW1hdGlvbnMoYW5pbWF0ZWRCb3VuZHMsIFJlbmRlckxheWVyOjpJbmNsdWRlQ29tcG9z
aXRlZERlc2NlbmRhbnRzKSkKICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoYW5pbWF0ZWRC
b3VuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAppbmRleCA0MTNhNmUwZjA0Zjg1YzdkNmMwZWQ3ODJhZTJiZGI3ZjU0OTMxZTM2
Li5jMDM2ZDg1ODNiMzNiY2Q3OTU2MjAyMzUxZTM0ZTkxZDdmMDE3ZWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmlu
Z0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBz
dHJ1Y3QgU2Nyb2xsaW5nVHJlZVN0YXRlIHsKLSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+
IHBhcmVudE5vZGVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gcGFyZW50
Tm9kZUlEOwogICAgIHNpemVfdCBuZXh0Q2hpbGRJbmRleCB7IDAgfTsKICAgICBib29sIG5lZWRT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNVcGRhdGUgeyBmYWxzZSB9OwogfTsKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlRXZlbnRSZWdpb25z
KCkKICNlbmRpZgogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBmcmFtZUhv
c3RpbmdOb2RlRm9yRnJhbWUoRnJhbWUmIGZyYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Ny
b2xsaW5nTm9kZUlEPiBmcmFtZUhvc3RpbmdOb2RlRm9yRnJhbWUoRnJhbWUmIGZyYW1lKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSB8fCAhZnJhbWUudmlldygpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMjMzNiw3ICsyMzM2LDcgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZsYWdzIGZsYWdzKQogICAgIHJldHVybiBsYXll
clRyZWVUZXh0OwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cGxhdGZvcm1MYXllclRyZWVBc1RleHQoRWxlbWVudCYgZWxlbWVudCwgT3B0aW9uU2V0PFBsYXRm
b3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+IGZsYWdzKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1MYXllclRyZWVBc1RleHQoRWxlbWVudCYgZWxl
bWVudCwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+IGZsYWdzKQogewog
ICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNv
bXBvc2l0b3IgIiA8PCB0aGlzIDw8ICIgcGxhdGZvcm1MYXllclRyZWVBc1RleHQiKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDU3M2Q1YjAxOGVlOTllNjM1M2VmYTU5NzdiMmYzMTA4MzY0ZDg5MDQuLmQ2YmJmMmYzODc5ZTFl
OTUzOTMzNGM5OWFiMWJiOTE4YWU1ZTJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBj
b25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJU
cmVlRmxhZ3MgPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTdHJpbmc+IHBsYXRm
b3JtTGF5ZXJUcmVlQXNUZXh0KEVsZW1lbnQmLCBPcHRpb25TZXQ8UGxhdGZvcm1MYXllclRyZWVB
c1RleHRGbGFncz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBw
bGF0Zm9ybUxheWVyVHJlZUFzVGV4dChFbGVtZW50JiwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJU
cmVlQXNUZXh0RmxhZ3M+KTsKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgZmxvYXQgY29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhj
b25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOWQyZDY4ODMz
MDkxOWY0ZmU4YjFmMzNlNDcyZTcwZGVlNzAwZDZlNC4uOTlkYjY2NjYxMGY3Nzg1YzY0ZWU1OWVi
ZjRhMmJkZTM4NTZiNjIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNv
bnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3RzKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5
ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3Rz
KCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0
cygpIDogc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXggNDlmMThhMTE5OWEyZDc4YTUzZGRkNWM2YWYz
ZDdmZjhkYzViMTkzZC4uZDExOGRjODFhNmE3YzYwYmI0M2IyNzFjNzM1YjIxZDY2OThjODcxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkUGxhY2VWZXJ0
aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5ZXJSZXBhaW50
UmVjdHM+IGxheWVyUmVwYWludFJlY3RzKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXll
clJlcGFpbnRSZWN0cz4gbGF5ZXJSZXBhaW50UmVjdHMoKSBjb25zdDsKIAogICAgIGJvb2wgc3Rh
cnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IEtl
eWZyYW1lTGlzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYW5pbWF0aW9uUGF1c2VkKGRvdWJsZSB0
aW1lT2Zmc2V0LCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4
IGNkZTQ1NzFmZDQ5NjRlY2Y1YTc1OGU4YmEwOTAxZDc3ZjAxYzI3ZWEuLmI0MGQwYjg5MWQyNGM5
YmJkMWZjYTkzZjQ0NzdmN2VkNThlYzNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIwNSw3ICsyMDUs
NyBAQCBib29sIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVzZXNBc3luY1Njcm9sbGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuY29tcG9zaXRvcigpLnVzZUNvb3JkaW5hdGVkU2Ny
b2xsaW5nRm9yTGF5ZXIobV9sYXllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYTo6c2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9u
PiBwb3NpdGlvbikKK3ZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0UG9zdExheW91
dFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+IHBvc2l0aW9uKQog
ewogICAgIG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uID0gcG9zaXRpb247CiB9CkBAIC00ODIs
NyArNDgyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbGluZ05vZGVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuYmFja2luZygpLT5zY3Jv
bGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZyk7CiB9
CiAKLWJvb2wgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNj
cm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIFJlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgaWYgKCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRh
YmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MzgsNyArMTczOCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6cGFuU2Nyb2xsRnJvbVBvaW50KGNvbnN0IEludFBv
aW50JiBzb3VyY2VQb2ludCkKICAgICBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGFkanVzdGVkU2Nyb2xs
RGVsdGEoZGVsdGEpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFu
Z2VPcHRpb25zJiBvcHRpb25zLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpCitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9s
bFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFs
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KQogewogICAgIEFTU0VSVCht
X2xheWVyLmFsbG93c0N1cnJlbnRTY3JvbGwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGFlNDcxOTkzNzIz
ZGY4YWYwOTdmZDUwOTc2OTg5OGI4N2U3NTZiNDAuLjE4MDBkOGZkMzI5YzI0N2U0ZTA1ZTMyYjc1
OGIxOGExMzg2OTVjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnJlZ2lzdGVyQXNUb3VjaEV2ZW50TGlzdGVuZXJGb3JTY3JvbGxpbmcoKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xs
UG9zaXRpb24+KTsKKyAgICB2b2lkIHNldFBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbihzdGQ6Om9w
dGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRTY3JvbGxQ
b3NpdGlvbklmTmVlZGVkKCk7CiAKICAgICBpbnQgc2Nyb2xsV2lkdGgoKSBjb25zdDsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQogICAgIFNjcm9sbGFibGVBcmVh
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBoYW5k
bGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CisgICAgYm9vbCBoYW5kbGVXaGVl
bEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKICAgICBib29sIGlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKICAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkg
Y29uc3QgZmluYWw7CkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlck92ZXJmbG93U2Nyb2xsKCk7CiAgICAgdm9pZCB1cGRhdGVMYXll
clBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwoKTsKIAotICAgIE9wdGlvbmFsPExheW91dFJl
Y3Q+IHVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
cyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2Fs
RXhwb3NlUmVjdCk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQ
b3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRS
ZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGFkanVzdEZvcklPU0NhcmV0V2hlblNj
cm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5n
OyB9CkBAIC0yODUsNyArMjg1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlbmRlckxheWVyJiBtX2xh
eWVyOwogICAgIFNjcm9sbFBvc2l0aW9uIG1fc2Nyb2xsUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8
U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uOwogCiAgICAg
Ly8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3ZSBoYXZlIGEgcGFpciBvZiBzY3JvbGxiYXJz
LgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyNmJiM2NiZTJmODlmOTM2NDA2NzA3M2JkOGUwYWE1
MDNjOTk3ZmQ4Li4xZGU2OWQ2OTM2ZWE1MDg5ZThlMGU2YzJkMWFjMGQ1ZDQ3NjkxZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKG1f
b3B0aW9uc0NoYW5nZWQpIHsKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwogICAgICAgICBhdXRv
JiBub3JtYWxGb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICBPcHRpb25hbDxG
b250Q2FzY2FkZT4gYm9sZEZvbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+
IGJvbGRGb250OwogICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCku
bGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0OwogICAgICAgICAgICAgV1RG
OjpGdW5jdGlvbjxjb25zdCBGb250Q2FzY2FkZSYoKT4gc2VsZWN0Rm9udCA9IFsmbm9ybWFsRm9u
dF0gKCkgLT4gY29uc3QgRm9udENhc2NhZGUmIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCmluZGV4IDlmOTNkMThlNDFkYzljNzNiOWU1OTYyOTU5ZTYwNmE1NWVmMGFk
MDEuLmNhYmVjMjg4MzkyZTcxZDFmMjFkOWVkZGI2YTZjNjQxZWMyOWIyYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTgwLDggKzE4MCw4IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fb3B0aW9uc1dpZHRoOwogICAgIGludCBtX2luZGV4T2Zmc2V0OwogCi0g
ICAgT3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1Rv
cEFyZWE7Ci0gICAgT3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ0JvdHRvbUFyZWE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4g
bV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhOwogCiAgICAg
UmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCmluZGV4IGRkOWM5ZDNlMDIzYjc4NWZmN2NhNTcwNzU4ODNjMDcx
NmM4OTEzZTkuLmJhMjJhNDJmZWM3MTllY2IxZmRmMWNlODU2MWMwOGNkZDRlNThjZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtMzEwLDcgKzMx
MCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmV4cGxpY2l0VmFsdWVDaGFuZ2VkKCkKICAgICAg
ICAgaXRlbS0+dXBkYXRlVmFsdWUoKTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0RXhw
bGljaXRWYWx1ZShPcHRpb25hbDxpbnQ+IHZhbHVlKQordm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0
RXhwbGljaXRWYWx1ZShzdGQ6Om9wdGlvbmFsPGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1
ZSkgewogICAgICAgICBpZiAoIW1fdmFsdWVXYXNTZXRFeHBsaWNpdGx5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAppbmRleCBkNmQ5YjNlNzJiMTAwYzFkMjZmOTNh
ZDNmYTBiMWI3ZjFlYjcxZGU5Li44NGMyMmEwMTgyYzQyYjIwZjljOGViODVhMjE2MTFmNjZiZGQz
ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDAs
OCArNDAsOCBAQCBwdWJsaWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVWYWx1ZSgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZVdhc1NldEV4cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9
Ci0gICAgdm9pZCBzZXRFeHBsaWNpdFZhbHVlKE9wdGlvbmFsPGludD4pOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4
cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9CisgICAgdm9pZCBzZXRFeHBsaWNp
dFZhbHVlKHN0ZDo6b3B0aW9uYWw8aW50Pik7CiAKICAgICB2b2lkIHNldE5vdEluTGlzdChib29s
IG5vdEluTGlzdCkgeyBtX25vdEluTGlzdCA9IG5vdEluTGlzdDsgfQogICAgIGJvb2wgbm90SW5M
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9ub3RJbkxpc3Q7IH0KQEAgLTgzLDcgKzgzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV4cGxpY2l0VmFsdWVDaGFuZ2VkKCk7CiAKICAgICBXZWFrUHRyPFJl
bmRlckxpc3RNYXJrZXI+IG1fbWFya2VyOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX3Zh
bHVlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+IG1fdmFsdWU7CiAgICAgYm9vbCBt
X3ZhbHVlV2FzU2V0RXhwbGljaXRseSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25vdEluTGlzdCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApp
bmRleCBhNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjLi4zYzAyYzkwMmFm
NmIzNTIzZWY4Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI5LDggKzEyOSw4IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9u
KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJs
b2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAogICAgIHZvaWQgZ2V0SXRl
bUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiwgYm9vbCYgaXRlbUhh
c0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9uZWVkc09wdGlvbnNXaWR0aFVwZGF0ZTsKICAgICBpbnQgbV9vcHRp
b25zV2lkdGg7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1fbGFzdEFjdGl2ZUluZGV4OworICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBtX2xhc3RBY3RpdmVJbmRleDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gbV9vcHRpb25TdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmUwZWRmM2M1YjMzNjgwMjBiMWIwNTI0NjFjN2FiNWJj
MDc0NmVhLi4wZGNmYmNmNjAxZDM3OGUyODZjODE4MmM0ZmRjODZhMDJkYTM5OTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtOTk0LDcgKzk5NCw3IEBA
IEZsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QKICAgICByZXR1cm4gKmNvbXB1dGVGbG9hdFZpc2libGVS
ZWN0SW5Db250YWluZXIocmVjdCwgcmVwYWludENvbnRhaW5lciwgdmlzaWJsZVJlY3RDb250ZXh0
Rm9yUmVwYWludCgpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyT2JqZWN0Ojpj
b21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBj
b250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJPYmplY3Q6OmNv
bXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1
cm4gcmVjdDsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
ck9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjCiAg
ICAgcmV0dXJuIHBhcmVudC0+Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoYWRqdXN0ZWRS
ZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRl
ck9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiwgVmlzaWJsZVJlY3RDb250ZXh0KSBj
b25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0
VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdAogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiZmE4NDhjNjIzZjEwMzJiODg4OGRlMzdkY2JiN2M1
NWNmZDAwYjFmLi5hYzIyN2I3MzgwNTc2MGRiMGQwMjYwYWNhNTcwOWE4YjFjNjAzMjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02NDYsOCArNjQ2LDggQEAg
cHVibGljOgogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBz
cGFjZSwgY29tcHV0ZSB0aGUgbG9jYXRpb24gaW4gY29udGFpbmVyIHNwYWNlIHdoZXJlIHRoaXMg
cmVjdCBpcyB2aXNpYmxlLAogICAgIC8vIHdoZW4gY2xpcHBpbmcgYW5kIHNjcm9sbGluZyBhcyBz
cGVjaWZpZWQgYnkgdGhlIGNvbnRleHQuIFdoZW4gdXNpbmcgZWRnZS1pbmNsdXNpdmUgaW50ZXJz
ZWN0aW9uLCByZXR1cm4gc3RkOjpudWxsb3B0CiAgICAgLy8gcmF0aGVyIHRoYW4gYW4gZW1wdHkg
cmVjdCBpZiB0aGUgcmVjdCBpcyBjb21wbGV0ZWx5IGNsaXBwZWQgb3V0IGluIGNvbnRhaW5lciBz
cGFjZS4KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0OwotICAgIHZp
cnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
Tm9uRW1wdHlWaXNpYmxlUmVjdFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNTFkN2M1Yzc4
MzYyYjNhYWUzNzBjZDExZTBhMWY5MjFiNDdiOWUyOC4uYzQwMWNhNTI3ODgyMGZkZDVjYWJkYmMx
M2FlZjE2MzZlODNjN2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCkBAIC01NjMsNyArNTYzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAg
ICAgICAgICAgIC8vIG9mICd3aWR0aCcgaXM6ICh1c2VkIGhlaWdodCkgKiAoaW50cmluc2ljIHJh
dGlvKQogICAgICAgICAgICAgaWYgKGludHJpbnNpY1JhdGlvICYmICgoY29tcHV0ZWRIZWlnaHRJ
c0F1dG8gJiYgIWhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0ludHJpbnNpY0hlaWdodCkgfHwgIWNv
bXB1dGVkSGVpZ2h0SXNBdXRvKSkgewogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZXN0aW1h
dGVkVXNlZFdpZHRoID0gaGFzSW50cmluc2ljV2lkdGggPyBMYXlvdXRVbml0KGNvbnN0cmFpbmVk
U2l6ZS53aWR0aCgpKSA6IGNvbXB1dGVDb25zdHJhaW5lZExvZ2ljYWxXaWR0aChzaG91bGRDb21w
dXRlUHJlZmVycmVkKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQg
PSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+KGVzdGlt
YXRlZFVzZWRXaWR0aCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
Pihlc3RpbWF0ZWRVc2VkV2lkdGgpKTsKICAgICAgICAgICAgICAgICBCb3hTaXppbmcgYm94U2l6
aW5nID0gQm94U2l6aW5nOjpDb250ZW50Qm94OwogICAgICAgICAgICAgICAgIGlmIChzdHlsZSgp
Lmhhc0FzcGVjdFJhdGlvKCkpCiAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZyA9IHN0eWxl
KCkuYm94U2l6aW5nRm9yQXNwZWN0UmF0aW8oKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMg
aW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUhlaWdodEZvclJhdGlvKExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYQogICAgIHJldHVybiBMYXlvdXRVbml0KHJvdW5kKGxvZ2ljYWxXaWR0
aCAvIGFzcGVjdFJhdGlvKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNl
ZFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0
aCkgY29uc3QKIHsKICAgICAvLyAxMC41IENvbnRlbnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJv
cGVydHk6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhl
aWdodAogICAgIGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggNTJjZTY0OWIxM2Y0ZGQyOWRiMGExMjU3
MzgyNjMxMDdmYWZjNmNkNy4uMWM3ZDM1NDdmZDRhZWJiMTk2MmYzZWM3MmY0MTYzNTY3MmZkOGY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMxLDcg
KzMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVy
cmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVz
ZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0
aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExh
eW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiByZXBsYWNlZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCmluZGV4IDFkZjY3ZDA5NzgzZjdm
Y2M1N2MyNmMxNGZkYTAyNjk1YTMzMzZjZTkuLjI1OGJkZTgyMjAyZjc3NDQ3M2Y4NmY5ODJlODY2
NWFiNzgxYmU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5QmFzZTo6cnVi
eVJ1bigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHBhcmVudCgp
KTsKIH0KIAotT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gUmVuZGVyUnVieUJhc2U6Om92ZXJyaWRl
VGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gUmVuZGVyUnVieUJhc2U6Om92ZXJyaWRlVGV4
dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QKIHsK
ICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXggNmYzMmViODJiZTc3ZDk1ZWI5YmZlMWZhNzc2
YzRhYmY5MTNhNjllZS4uMTIyMTY3ZmFjOTk1MTkzMWNiMTg5OTMyMzIzODU2MTQwZWRkYjI3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPFRleHRBbGlnbk1vZGU+IG92ZXJyaWRlVGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRz
V2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0QWxp
Z25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJl
YWspIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJv
dW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBm
bG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1faW5pdGlh
bE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCmlu
ZGV4IGU2NDc0NWI3ODNlMjM3NGY5OTUxOWM1Nzk2ZGUzNDUwNGYwMWZlNzIuLmU0MzkzNzE0YTUw
OGM4ZGNlY2IyNDY4MGNjZjAzODRkZGI2ODQ0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlUZXh0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFJlbmRlclJ1YnlU
ZXh0Ojppc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkLCBjb25zdCBSZW5k
ZXJTdHlsZQogICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpOwogfQogCi1PcHRpb25hbDxUZXh0
QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6b3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShi
b29sKSBjb25zdAorc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6
b3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShib29sKSBjb25zdAogewogICAgIFRleHRBbGln
bk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBpcyBib2d1cyBzaW5jZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwgdmFsdWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCmluZGV4IDQ2NzI2OTRlNzNm
ODdiZTQ0NTMyOTIzOWJmN2E3Y2YyMTAzYTI0OWIuLjYyYzVlZTZlYmI0NmY1MTBlYTFiMjc4M2Iw
YjhhMWM4YTUxNzczZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gb3ZlcnJpZGVU
ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRBbGlnbk1vZGU+IG92ZXJyaWRlVGV4dEFsaWdubWVu
dEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92
ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5k
ZXggZjkyYzkzMTcxZWI5YzJiMDIxOTQxMjY5ZjcwOTQ1YmMzODZjNzkzOS4uZjQ2Zjk4OTIyYjI0
Nzg0MGVjOTY0ZWU2NGYzYTZkNzIzZWRlMjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCkBAIC0xNDk4LDMyICsxNDk4LDMyIEBAIExheW91dFVuaXQgUmVuZGVy
VGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlclRhYmxlOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBUYWJsZXMgYXJlIHNraXBwZWQgd2hlbiBjb21wdXRp
bmcgYW4gaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUuCi0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAot
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIGlzIHRoZSBz
YW1lIGFzIHRoZSAnaW5saW5lLXRhYmxlJyBiYXNlbGluZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NT
IDIuMQogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRoZSBiYXNlbGluZSBvZiBhICd0YWJsZScgb25s
eSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8gVGhpcyBpcyBhbHNvIG5lZWRlZCB0byBwcm9w
ZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBj
aGlsZC4KIAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8IHNob3VsZEFwcGx5TGF5b3V0
Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4o
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIHJl
Y2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAogICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiog
dG9wTm9uRW1wdHlTZWN0aW9uID0gdGhpcy0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7CiAgICAgaWYg
KCF0b3BOb25FbXB0eVNlY3Rpb24pCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAg
aWYgKGF1dG8gYmFzZWxpbmUgPSB0b3BOb25FbXB0eVNlY3Rpb24tPmZpcnN0TGluZUJhc2VsaW5l
KCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pih0b3BOb25FbXB0eVNlY3Rp
b24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSAr
IGJhc2VsaW5lLnZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IEEgdGFibGUgcm93IGFsd2F5cyBo
YXMgYSBiYXNlbGluZSBwZXIgQ1NTIDIuMS4gV2lsbCB0aGlzIHJldHVybiB0aGUgcmlnaHQgdmFs
dWU/Ci0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJUYWJsZTo6b3Zl
cmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiBmcmFnbWVudCwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZh
bmN5LCBQYWludFBoYXNlIHBoYXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuaAppbmRleCBhZjU3MzI3Y2ZmYjBjODA5M2I2YjBkYmFhYzM1ZDMwNzI1ZDM2NDhkLi42
M2IxNzk4MGE0YTJkNGM1MTVhY2RjNzlhZjRkMmY5MzdmMDJmNWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjk2LDggKzI5Niw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAKICAgICBSZW5kZXJUYWJsZUNvbCogc2xvd0NvbEVs
ZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFydEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IDBlM2Q1ODRmNmE0ZGExYjEwODk3Y2Q2MDkyOWQxNWIzMGQ1MzQ1MjIuLjRlM2ZmZThjMTQ1NTE1
Nzg3OTA5MjJiMjczODRhMmJkZThjNDQ4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmUKICAgICByZXR1cm4gY29tcHV0ZVJlY3QociwgcmVwYWludENvbnRhaW5lciwgY29u
dGV4dCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4
dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVGFibGVDZWxsOjpjb21w
dXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250
ZXh0KSBjb25zdAogewogICAgIGlmIChjb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJu
IHJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXgg
NzIwYjQ0YWY5NmU3MTc5YmU3YTk1Yjk0OWI1ZTJkZDhiNWFmNWUwNy4uOTA4YjRjNTI0ZGI5NDQ2
MjViOWUyYmNlNDJmMDcxNDdiY2UxN2EwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBi
b3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9
IDApIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0
VW5pdCBib3JkZXJIYWxmTGVmdChib29sIG91dGVyKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJv
cmRlckhhbGZSaWdodChib29sIG91dGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggYzNhMDEzOTZhMmJlZjMxMDZlYTk3
NzFiZGZiOTBmMWY2NGRiNWYwOS4uOTcxMmFlYmExMzA4YjdjMmJmODAxODk3ZGFkMTk3MWFlZjVi
ZDRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKQEAgLTg2NywxNiArODY3LDE2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNh
bGNPdXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVu
ZCgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2dyaWQu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIExheW91dFVuaXQgZmly
c3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAgaWYgKGZpcnN0TGluZUJh
c2VsaW5lKQogICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyBtX3Jvd1Bvc1swXTsK
IAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHJlc3VsdDsKICAgICBjb25zdCBSb3cmIGZpcnN0Um93ID0gbV9ncmlkWzBdLnJv
dzsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpcnN0Um93LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QmIGNzID0gZmlyc3RSb3cuYXQoaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggZjk2NjdmZmFlYzI4
MDA2YTQyZjg0YWQxY2M1MTA4YjM0YWFiMmYzZi4uODVjYjEyZGI5M2JiMTkyYWZiNjU2YjE2MTRk
MjlmMmRkNjNlZTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGFibGVSb3cq
IGZpcnN0Um93KCkgY29uc3Q7CiAgICAgUmVuZGVyVGFibGVSb3cqIGxhc3RSb3coKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCosIFJl
bmRlclRhYmxlUm93KiByb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggNjQ1YTNlYjVjZTQ5YWQ1YjYyYzI0YzYwZmEzYWQ3ZDQxNjU1MTY3OS4uMTJkM2Vm
ZmNhYTVmZDA2YmFjNmYyMTczZGY1NGUwN2MyNGUwNDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgYm9vbCBpc1NwYWNlID0gZmFsc2U7CiAgICAgYm9vbCBmaXJzdFdvcmQgPSB0
cnVlOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bmV4dEJyZWFrYWJsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxl
OwogICAgIHVuc2lnbmVkIGxhc3RXb3JkQm91bmRhcnkgPSAwOwogCiAgICAgV29yZFRyYWlsaW5n
U3BhY2Ugd29yZFRyYWlsaW5nU3BhY2Uoc3R5bGUpOwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgbWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVy
IDwgMCA/IDIgOiBhZnRlcjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhM
ZWZ0T3ZlcmZsb3c7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZs
b3c7CiAKICAgICBib29sIGJyZWFrTkJTUCA9IHN0eWxlLmF1dG9XcmFwKCkgJiYgc3R5bGUubmJz
cE1vZGUoKSA9PSBOQlNQTW9kZTo6U3BhY2U7CiAgICAgCkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2
b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRX
aWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldpZHRoID0g
MDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuZ3RoKSAmJiBpc1NwYWNlQWNj
b3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CiAgICAgICAgICAgICBmbG9hdCB3OwotICAgICAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAg
aWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdv
cmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwogICAgICAgICAgICAgaWYgKHdv
cmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIFJlbmRlclRl
eHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNl
dDxjb25zdCBGbwogCiAgICAgICAgICAgICAgICAgaWYgKHN1ZmZpeFN0YXJ0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBPcHRp
b25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQpAQCAtMTc3NSw3
ICsxNzc1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENo
YXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKICAgICBzZWN1cmVUZXh0VGltZXIt
PnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCi1TdHJpbmdWaWV3
IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wKSBjb25zdAorU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVk
IHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewogICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0KCkubGVuZ3RoKCkpOwogICAgIEFT
U0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aAppbmRleCAxYjJiZDNlZTQ2NmNiNjU2ZjYzZjkwYzIxNmVmYzlkOWJiNjVmNGVjLi45ZDYxN2M0
N2IxYjZkNzNjZTBhZjEzODFiYWEwYzgzNDA1NjU4NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHVz
ZXNDb21wbGV4TGluZUxheW91dFBhdGgoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgc3RyaW5n
Vmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQg
PSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
ICAgICAKICAgICBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDZhMzdiMGIzZTdkNjYwMmQ1N2U2NWY2NjY1ZTdj
N2E1NTMwYjJhZTEuLjJlOTA1MzRmZmQ4ZGE4M2I3ZGM1NGQ0NmZhN2RlZjE2MzE5YmJiNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC05OCw4
ICs5OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsK
ICAgICB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5s
aW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0
aW9uKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KaW5kZXggMTE4MDc5NGM2M2E4MmUyMGFmZjVlZDM3OTAzMmQyMTBkMWMzYmFk
Yy4uZjJkYTY5ZGM4NjFlODcyOWUzYzRjMmE5OTIyYmYxMzM3YzI1NTM1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTIyOSw5ICsxMjI5LDkgQEAg
Q29sb3IgUmVuZGVyVGhlbWVJT1M6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoT3B0aW9uU2V0PFN0eWxlQ28KICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvcj4mIGNhY2hlZEZvY3VzUmluZ0NvbG9yKCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgY2FjaGVkRm9jdXNSaW5nQ29sb3IoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxDb2xvcj4+IGNvbG9yOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPENvbG9yPj4gY29sb3I7CiAgICAgcmV0
dXJuIGNvbG9yOwogfQogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9y
PENTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbj4mIGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZv
cm1hdAogICAgIHJldHVybiBjc3NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb25MaXN0OwogfQog
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZVN5
c3RlbUNvbG9ySW5mb3JtYXRpb24oQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uIHN5c3Rl
bUNvbG9ySW5mb3JtYXRpb24sIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCitzdGF0aWMgaW5saW5l
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJ
bmZvcm1hdGlvbihDU1NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24gc3lzdGVtQ29sb3JJbmZv
cm1hdGlvbiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKIHsKICAgICBpZiAoYXV0byBjb2xvciA9
IHd0Zk9iakNNc2dTZW5kPFVJQ29sb3IgKj4oUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSwgc3lzdGVt
Q29sb3JJbmZvcm1hdGlvbi5zZWxlY3RvcikpIHsKICAgICAgICAgQ29sb3Igc3lzdGVtQ29sb3Ig
PSB7IGNvbG9yLkNHQ29sb3IsIENvbG9yOjpGbGFnczo6U2VtYW50aWMgfTsKQEAgLTEzNTcsNyAr
MTM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNT
U1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbihDU1NWCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlE
KENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VF
bGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiBz
eXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1c2VE
YXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKIHsKICAg
ICBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24gbG9jYWxUcmFpdENvbGxlY3Rpb24odXNlRGFy
a0FwcGVhcmFuY2UsIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDIzNjQxZmRmZDE3ZDZlMzBmMTE3YThk
NDU4NmMyYjdjMzMwZGE3MDQuLjM1ZTNmNDgxOTJiZDhhNzNjZmI5OWE4YmZkZWVlN2JlNzQ2NjU4
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUxMyw3ICs1
MTMsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3QW5kQ29tcG9zaXRlZExheWVycygp
CiAgICAgICAgIGNvbXBvc2l0b3IucmVwYWludENvbXBvc2l0ZWRMYXllcnMoKTsKIH0KIAotT3B0
aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWlu
ZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiBh
IGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5k
ZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNDE2NzMxYmJkNTZjNDY2MDA4Yzk1
MjRhY2EyMzgxZTI3ZTJjZTk4Mi4uNmY0ZWFiYWMyMWFhZTFiNTBhZmVlZTA2NGQ4MzQ4NWRkMWNk
NmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3Np
dGVkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkRnJhbWU7IH0KICAgICB2b2lkIHNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JO
b25Db21wb3NpdGVkRnJhbWUoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc0V2ZW50UmVnaW9u
VXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lID0gdmFsdWU7IH0KIAotICAgIE9wdGlvbmFsPExh
eW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29u
dGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21w
dXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludFJvb3RDb250ZW50cygpOwogICAgIHZvaWQgcmVwYWlu
dFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIHZvaWQgcmVwYWlu
dFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PFJlbmRlckJveCo+IG1fcmVuZGVyZXJzTmVlZGluZ0xhenlSZXBhaW50Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+IG1faW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjsKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX3BhZ2VMb2dpY2FsU2l6
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fcGFnZUxvZ2ljYWxTaXplOwogICAg
IGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJMYXllckNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCAw
MDgyNmFhMzJiMzg4YWMwOGZkMjZhMDdhMDAxMDgyNjk5MGZiZjcyLi41ZDk4YTk2MWVhNWVmOTJj
NWU5MDNmNzI2YmJmZGY5ZTZlYWVlZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIGJvb2wg
VGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBv
dGhlcikgY29uc3QKICAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5l
U3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGluZVN0eWxlICYmIGxpbmV0aHJv
dWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKIH0KIAotVGV4dERlY29yYXRpb25Q
YWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiBy
ZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIE9wdGlv
bmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlv
blBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0
TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiBzdHls
ZXMpCiAgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0IH0KICAgICAsIG1fZGVjb3JhdGlvbnMgeyBk
ZWNvcmF0aW9ucyB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRp
b24oKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmgKaW5kZXggMTIzNjZmODVmZTg2ZTg2YzRjN2ZjMzgxZTc3ZjQwMGJmODJiNDZmYi4uMjYy
ZGVkYzdhNWJmYTYwZmI4MTZhMjMxMDM2NjhjNmMxNzM0MjNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERlY29yYXRpb25QYWludGVyIHsKIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0Nv
bnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5k
ZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmLCBPcHRpb25hbDxT
dHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhp
Y3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3Qg
UmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpv
cHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKICAgICAKICAgICB2b2lkIHNldElubGlu
ZVRleHRCb3goY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeyBtX2lubGluZVRl
eHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBp
c0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCmluZGV4IGNhMTIzZDQ4MzQ2NTJh
OWE0Y2FjMWFiMGY3ODdmMGZkNzY0NDk1NGIuLmE3OTRkNGVkZjAyYjQzYTAxZWI3NDBlYzcwMTBj
ZjkyNzIwYzAxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRT
dHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lCiAgICAgcmV0
dXJuIHBhaW50U3R5bGU7CiB9CiAKLVRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9u
UGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgT3B0aW9uYWw8U2hhZG93RGF0YT4mIHNlbGVjdGlvblNoYWRv
dykKK1RleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHlsZShjb25zdCBU
ZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgc3RkOjpvcHRpb25hbDxTaGFkb3dEYXRhPiYgc2VsZWN0aW9uU2hhZG93KQogewogICAgIFRl
eHRQYWludFN0eWxlIHNlbGVjdGlvblBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAppbmRleCA4YTUwMmI4OGYyZTJm
OTM3ZDk2MjkzZjI3YTMxMDFhYjQxYzYzOTUxLi44YmRmNjU3MjNlM2VmZGRlZjQzMjBkNjNiMzll
NWQ2ODcwNmMyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUu
aApAQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUgewogCiBib29sIHRleHRD
b2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xv
ciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcik7CiBUZXh0UGFpbnRTdHlsZSBjb21wdXRl
VGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFBh
aW50SW5mbyYpOwotVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxl
KGNvbnN0IFRleHRQYWludFN0eWxlJiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUGFpbnRJbmZvJiwgT3B0aW9uYWw8U2hhZG93RGF0YT4mIHNlbGVjdGlvblNo
YWRvdyk7CitUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29u
c3QgVGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBQYWludEluZm8mLCBzdGQ6Om9wdGlvbmFsPFNoYWRvd0RhdGE+JiBzZWxlY3Rpb25T
aGFkb3cpOwogCiBlbnVtIEZpbGxDb2xvclR5cGUgeyBVc2VOb3JtYWxGaWxsQ29sb3IsIFVzZUVt
cGhhc2lzTWFya0NvbG9yIH07CiB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBUZXh0UGFpbnRTdHlsZSYsIEZpbGxDb2xvclR5cGUgPSBVc2VOb3JtYWxG
aWxsQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0Nv
bnRleHQuaAppbmRleCBmMzM5ZWY4OTIwYzA0M2YyMjRlMDRlNjk2Y2QyZDcyZDcxZTQ0MzExLi4z
Y2RlNzM2ODVjNDEwZWVhMjdkOWMyMzE1MTQyMjQ1MzA0YjI0NmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBA
QCBzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2UgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFdvcmRU
cmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZs
b2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cykKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250
cykKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6
OkluaXRpYWxpemVkKQogICAgICAgICAgICAgcmV0dXJuIG1fd2lkdGg7CkBAIC04OCw3ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5p
bml0aWFsaXplZCwgSW5pdGlhbGl6ZWQgfTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHls
ZTsKICAgICBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFj
ZVN0YXRlOjpVbmluaXRpYWxpemVkIH07Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKIH07CiAKIGNsYXNzIEJyZWFraW5nQ29u
dGV4dCB7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2hhbmdzQXRFbmQg
PSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRo
KFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBjb21taXRM
aW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zm
c2V0ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAg
IG1fbGluZUJyZWFrLm1vdmVUbyhvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTU2OSw3
ICs1NjksNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVDaGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hp
dGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdoaXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29s
bGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFy
YWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0
KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVI
eXBoZW5hdGVkTGluZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1T
dWZmaXhMaW1pdCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3Ms
IGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzRml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdo
aXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3BhY2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVC
cmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQp
CitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWdu
ZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lc0xpbWl0LCBpbnQgbWluaW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0
LCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgZmxvYXQgYXZh
aWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwg
aW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewog
ICAgIC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4K
ICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoOwpAQCAtNjQyLDcgKzY0Miw3IEBAIGlu
bGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRz
V2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0g
bGFzdFNwYWNlOwogICAgIAogICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAg
IE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CiAgICAgaWYgKGN1cnJlbnRDaGFyYWN0
ZXIgPT0gJyAnKQogICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5n
U3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lk
dGgpCkBAIC03ODIsNyArNzgyLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAg
ICAgIG1pZFdvcmRCcmVhayA9IG1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSArIHdyYXBXICsgY2hh
cldpZHRoID4gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpOwogICAgICAgICB9CiAKLSAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0
QnJlYWthYmxlUG9zaXRpb24oKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4
dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOwog
ICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0gV2hp
dGVTcGFjZTo6UHJlICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5m
by5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxlUG9z
aXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3Jkcywg
YnJlYWtBbnl3aGVyZSkKICAgICAgICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVu
czo6Tm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1lTm9kZSgpICE9IHNvZnRIeXBoZW4p
KSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWthYmxlUG9zaXRpb24obmV4dEJyZWFr
YWJsZVBvc2l0aW9uKTsKQEAgLTg4NCw3ICs4ODQsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9v
bAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RC
cmVha2luZ1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uID0gbnVsbHB0cjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVhay5vZmZzZXQoKSB8fCBtX2xp
bmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0aW9uID0gbV9saW5lQnJlYWsub2Zmc2V0KCk7CkBAIC04
OTUsNyArODk1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9ICZyZW5kZXJlcjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QnJl
YWtpbmdQb3NpdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPFVD
aGFyPiBjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9z
aXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBsYXN0IGJyZWFraW5n
IHBvc2l0aW9uIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgY29udGV4dCwgd2Ug
bmVlZCB0byBsb29rIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlIHByZXZpb3VzIG5vbi1lbXB0eSB0ZXh0IHJlbmRlcmVyLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEJyZWFraW5nUG9zaXRpb24udmFsdWUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAK
aW5kZXggZjE2NmYzYjlhYmIyYjNmN2E5NDUyNDE2ZmIwNTYyYjg4YWI0NmI4OS4uYzMzM2Q1ZmM3
Njg5MGI5NjJhMjlmNDlmZTFiZmIzYjEyODIzOTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lk
IE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICAvLyBUaGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBi
ZWhhdmlvci4KICAgICBhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpLT5lbGVtZW50KCk7CiAgICAgaWYgKGlzPE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7
Ci0gICAgICAgIE9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBtYXRoVmFyaWFu
dCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWRNYXRoVmFyaWFu
dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBt
YXRoVmFyaWFudCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWRN
YXRoVmFyaWFudCgpOwogICAgICAgICBpZiAobWF0aFZhcmlhbnQpCiAgICAgICAgICAgICBtX21h
dGhWYXJpYW50ID0gbWF0aFZhcmlhbnQudmFsdWUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGNk
OTZiZDVhN2NjZDFkYjY5Yjg0OWQ2MDcwY2YxMjBmNWZmM2M0N2EuLjE5NTJhZjFhZjkzZmMzNzI3
YzAwZjE4NzEyNDUwODUwYjgzMjQ2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAg
TGF5b3V0VW5pdCB0b1VzZXJVbml0cyhjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIGxlbmd0
aCwgY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICB9CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgLy8gQnkgZGVmYXVsdCB0aGUgdmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+
IGlzIGFsaWduZWQgb24gdGhlIG1hdGggYXhpcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0
aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hCYXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUg
YmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBhIDx0YWJsZT4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMzVmNjdh
OTI4Y2U1MjQxNmFkMGVkYTI1OWM3ZGJmOTVlZjliZDQzZi4uMmZjOGExNmIxM2IwMDRlOWExZGU1
Y2U0ZDk3N2Y0MjI2Y2RhMTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1M
U3R5bGU+IG1fbWF0aE1MU3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCBhZjM3NDk0NjFl
ZTI0NjU0NDE4MzUxZDcyMzljMDgzZTZmNTI4YzdkLi5iM2I0MzcyMzRlNTc0OGU2OGQyOGQ3NDE4
ZmVlOTQ4YmE4YWRhYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0
ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgbG9naWNhbFdpZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkpKSkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlm
IChpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgcm91bmRmKHN0YXRpY19j
YXN0PGZsb2F0PihmcmFjdGlvbkFzY2VudCgpKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCAyN2YxNGQ3
NWYwZTI4ODgzZWNhM2YwMTIxOTdmMTc2YWY5ZTFjYmUxLi5mODc1NjI3ZjQ4YTI1NWRkMTcxY2U5
MTM4NjgzYWE2MTc5ZDE5MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAg
ICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCmluZGV4IGE0MTlhOWQyZmI3NDE4MDE2Yzg1NmViMjRlMDdmY2QyM2VkNjg1NTEuLmZmNDFj
NTA4MTBjNmM5OTAwOTY0NjIyMTYwMTUwNTM1ZDAwYzkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGlj
YWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERl
cHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhP
cGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1P
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3Io
KSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChz
dGF0aWNfY2FzdDxmbG9hdD4obV9tYXRoT3BlcmF0b3IuYXNjZW50KCkgLSB2ZXJ0aWNhbFN0cmV0
Y2hlZE9wZXJhdG9yU2hpZnQoKSkpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGZlODlhYTFhZjI2YTA3
YzAxNjAzZmUxNzljNzJlODlmNjk3Mjc4NjkuLjUyMTgxYjQ2ZDBjZGJlN2I0NWNmZDdmOWYzMWZi
YWEyNzEyZTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJhdG9yKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAg
ICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJNYXRoTUxPcGVyYXRvcio+KHRoaXMpOyB9CiAK
ICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQ
YWRkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQ
YWRkZWQuY3BwCmluZGV4IDc5MGFmN2FhMzZkZWE2MjE0OGNhMzllN2U1MDNlM2NhMzJiYzJjYTgu
LjFkNGYwYTVhNTBhN2E1M2QxZmU2Nzc2MjljNjljOWNlODdmZjUxOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAK
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFBhZGRlZDo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhN
TFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIC8vIFdlIHRyeSBhbmQg
Y2FsY3VsYXRlIHRoZSBiYXNlbGluZSBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hp
bGQuCiAgICAgTGF5b3V0VW5pdCBhc2NlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCA5M2IzNjZlY2ZlNjJhZTcw
ZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2Li43NDg4NWYzNGEzYTZhMDVmYTk3Yzk5MzlkM2VhNWM4
NGM2YTFhNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFBhZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgTGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAKaW5kZXggODk3NTc4MjRlMzA5YjIxMDNhZGM3YWI5YTg3ZWE2Nzk2ODFhNTgzMS4uYTE2
NTBhMThiYmNmMWQ3YjcxZGIzNmVlMjg1NGYwZjEwMzRjNjBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTEg
KzUyLDExIEBAIE1hdGhNTFJvd0VsZW1lbnQmIFJlbmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxSb3c6
OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFz
ZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0
aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFz
ZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCmluZGV4IDE2OTU2NDI5MDUzZWQ2NGZj
N2Y4NzA4OTA0YzA5OGQyNGQyMzA0NDIuLjM3YmI2MGFhNzY3NTJkZTEyNjQwNjE5OTgxNDk3Njgz
MDFlODk1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBzdHJldGNoVmVydGljYWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbigpOwogICAgIHZvaWQg
Z2V0Q29udGVudEJvdW5kaW5nQm94KExheW91dFVuaXQmIHdpZHRoLCBMYXlvdXRVbml0JiBhc2Nl
bnQsIExheW91dFVuaXQmIGRlc2NlbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggNGIwMWVj
MjI2YWUzNmNjNTk1NDhjZjkyN2NlOGZjMTZhM2VjMWIzNy4uNjA5NDM4OGEzMWIyYzFkMWE5MjU4
OTIyOTcyZTBmMTFkOGM5YThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJl
bmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp1bmVtYmVsbGlzaGVkT3Bl
cmF0b3IoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oYmFz
ZSktPnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwogfQogCi1PcHRpb25hbDxSZW5kZXJNYXRoTUxT
Y3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVB
bmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpCitzdGQ6Om9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlw
dHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuZEdl
dFJlZmVyZW5jZUNoaWxkcmVuKCkKIHsKICAgICAvLyBBbGwgc2NyaXB0ZWQgZWxlbWVudHMgbXVz
dCBoYXZlIGF0IGxlYXN0IG9uZSBjaGlsZC4KICAgICAvLyBUaGUgZmlyc3QgY2hpbGQgaXMgdGhl
IGJhc2UuCkBAIC0xNDYsNyArMTQ2LDcgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6
UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9mU2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2Ny
aXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZl
biA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxsb3B0
OyAvLyBXZSB2ZXJpZnkgMmIpLgorICAgICAgICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4g
PyBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxs
b3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgogICAgIH0KICAgICB9CiAKQEAgLTQ2NiwxMSArNDY2LDEx
IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3go
KTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogICAgIHJldHVy
biBMYXlvdXRVbml0IHsgcm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2lj
YWxUb3AoKSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCA5ZDIzYWJlMzk0MGY1MmZmNmVjNjRmM2Rl
NzhiZjFkM2I2Mzk3MmY2Li5hZGI5MmZlNDg0YmYyMGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1MzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaApAQCAtNTAsMTQgKzUwLDE0IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAg
IHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsKICAg
ICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CiAgICAgICAgIFJlbmRlckJveCog
Zmlyc3RQb3N0U2NyaXB0OwogICAgICAgICBSZW5kZXJCb3gqIGZpcnN0UHJlU2NyaXB0OwogICAg
IH07Ci0gICAgT3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJl
bmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2YWxp
ZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCk7CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFmdGVy
U2NyaXB0KCk7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVyZW5j
ZUNoaWxkcmVuJik7CiAgICAgc3RydWN0IFZlcnRpY2FsUGFyYW1ldGVycyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmlu
ZGV4IGY5MjQ2NTcxMmRiNzhkZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IuLmY0YTNjZDhhZTBk
ZTIyNmNiZGZkMzQwODVkZDY4MGRkZmNhZGNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwogICAgIGdl
dFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggNzI1ZDRmMjBh
MzI1YWJjYTFmZGM4NGMwNzM1NWIxMzJkNTY1NmIxNC4uMTk1OTI4NjQ5YTUxOWEwOWYxMmZjYmQ2
ZTg1YzU0Y2FjNTE2NTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFs
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29uc3Q7CiAgICAgdm9p
ZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYg
ZGVwdGgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA1ZjljZmIzYzk3ODhkZDZhM2FjMTQwNjE0MWRl
YjM0NDA1M2JkMTllLi43Y2M5YjdkNDE2MjQ5NTQwMGE1ODVjMTQ1YzQyNzRiZTQ3MzBlNzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVw
ZGF0ZUZyb21FbGVtZW50KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGlydHkoKTsKIH0KIAot
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2lu
dCkgewogICAgICAgICBhdXRvIG1hdGhWYXJpYW50R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwg
bV9tYXRoVmFyaWFudElzTWlycm9yZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IDhjYjIxZWZlZmNkMTM4NTY4ZGQ1
YWQ1MDEzNmZmMmM0ZDk5Yjg0MmIuLmY4MzllZWMwMzUxMjk1ZDg2YzE0MjYyNDMyMDQyODA3Mjg2
Yjc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSA9IHRydWU7CiAg
ICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KLSAgICBP
cHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07
CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3Rk
OjpudWxsb3B0IH07CiAgICAgYm9vbCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAppbmRl
eCAxNDAyNDkxZTA4YWY5NzA0MTI4ZjcxMmUyYThkZGYyMjhkOTMzZWRkLi4wZTMyYmYyNDg2OWJk
YmE4Y2YwYzg1YWVkODM4YjAyY2JlZTlhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaApAQCAtMjYsOCArMjYsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ291bnRlckRpcmVjdGl2ZXMgewotICAgIE9wdGlv
bmFsPGludD4gcmVzZXRWYWx1ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGluY3JlbWVudFZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXNldFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBpbmNyZW1lbnRWYWx1ZTsKIH07CiAKIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAppbmRleCBkMjA0
MTg5ODY3MTkzYzllNDE1ZDc5NWUxMmVjYjQwYzE5MDRlNDY0Li5lNmNjOTYxN2I5MDFiNDJhMGVh
MzQzMjU3YmYxZjhkMTUxZGVlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU9wdGlvbmFsPGludD4gR3JpZFBvc2l0aW9uOjpnTWF4UG9zaXRpb25Gb3JUZXN0
aW5nOworc3RkOjpvcHRpb25hbDxpbnQ+IEdyaWRQb3NpdGlvbjo6Z01heFBvc2l0aW9uRm9yVGVz
dGluZzsKIHN0YXRpYyBjb25zdCBpbnQga0dyaWRNYXhQb3NpdGlvbiA9IDEwMDAwMDA7CiAKIHZv
aWQgR3JpZFBvc2l0aW9uOjpzZXRFeHBsaWNpdFBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBuYW1lZEdyaWRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0dyaWRQb3NpdGlvbi5oCmluZGV4IDEwYTg5OWJjNjc4ODNmNGQ2MTA2NWFiYzMyZjhiZDg0NGQ1
OWM0MjMuLjI1MjdmN2M3M2Y3ZTQzMDY5NTY3ODZiNWU1MThiNjRkZWE0YmFiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heFBvc2l0
aW9uRm9yVGVzdGluZyh1bnNpZ25lZCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIE9wdGlvbmFs
PGludD4gZ01heFBvc2l0aW9uRm9yVGVzdGluZzsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxp
bnQ+IGdNYXhQb3NpdGlvbkZvclRlc3Rpbmc7CiAKICAgICB2b2lkIHNldEludGVnZXJQb3NpdGlv
bihpbnQgaW50ZWdlclBvc2l0aW9uKSB7IG1faW50ZWdlclBvc2l0aW9uID0gY2xhbXBUbyhpbnRl
Z2VyUG9zaXRpb24sIG1pbigpLCBtYXgoKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCAxNDEzNzllZGE0ZjBmYTZkNmUzY2Rm
ZmZmN2FiOTE0ZjViNDIwNTc0Li4zYjdkOWYxZDk2NDkyODRiNzVmODk4ZGYwYzgyY2YyOWQyNTNm
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuaApAQCAtODIsNyArODIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsUGllY2UoSW1hZ2VQ
aWVjZSBwaWVjZSkKICAgICByZXR1cm4gcGllY2UgPT0gTGVmdFBpZWNlIHx8IHBpZWNlID09IFJp
Z2h0UGllY2UgfHwgcGllY2UgPT0gTWlkZGxlUGllY2U7CiB9CiAKLWlubGluZSBPcHRpb25hbDxC
b3hTaWRlPiBpbWFnZVBpZWNlSG9yaXpvbnRhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBp
ZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9PSBUb3BMZWZ0UGllY2UgfHwgcGllY2UgPT0g
VG9wUGllY2UgfHwgcGllY2UgPT0gVG9wUmlnaHRQaWVjZSkKICAgICAgICAgcmV0dXJuIEJveFNp
ZGU6OlRvcDsKQEAgLTkzLDcgKzkzLDcgQEAgaW5saW5lIE9wdGlvbmFsPEJveFNpZGU+IGltYWdl
UGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxT
aWRlKEltYWdlUGllY2UgcGllY2UpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBpbWFn
ZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiB7CiAgICAgaWYgKHBpZWNlID09
IFRvcExlZnRQaWVjZSB8fCBwaWVjZSA9PSBMZWZ0UGllY2UgfHwgcGllY2UgPT0gQm90dG9tTGVm
dFBpZWNlKQogICAgICAgICByZXR1cm4gQm94U2lkZTo6TGVmdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI2YTc3YmEwOTQ1Yjk4MGEz
OGNjM2Y1ZGE1OTI0MzA5YzQwNTBmOTIuLmFjZGRmZDAzMWYyYjI5N2U5NTM1YjI2MmI4NWFiYTdh
NzQ4ZmJmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4
dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OwogfQogCi1ib29sIFJlbmRlclN0eWxlOjppc0lkZW1w
b3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3Zl
cnJpZGVTdGF0dXMpIGNvbnN0Citib29sIFJlbmRlclN0eWxlOjppc0lkZW1wb3RlbnRUZXh0QXV0
b3NpemluZ0NhbmRpZGF0ZShzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0
YXR1cykgY29uc3QKIHsKICAgICAvLyBSZWZlciB0byA8cmRhcjovL3Byb2JsZW0vNTE4MjYyNjY+
IGZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBob3cgdGhpcyBmdW5jdGlvbiB3YXMgZ2Vu
ZXJhdGVkLgogICAgIGF1dG8gZmllbGRzID0gT3B0aW9uU2V0PEF1dG9zaXplU3RhdHVzOjpGaWVs
ZHM+Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3MuYXV0b3NpemVTdGF0dXMpOwpAQCAtMTkyOCw3
ICsxOTI4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFN0cmV0Y2goRm9udFNlbGVjdGlv
blZhbHVlIHZhbHVlKQogICAgIGZvbnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0
b3IpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRGb250SXRhbGljKE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4gdmFsdWUpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250SXRhbGljKHN0
ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB2YWx1ZSkKIHsKICAgICBGb250U2VsZWN0
b3IqIGN1cnJlbnRGb250U2VsZWN0b3IgPSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwog
ICAgIGF1dG8gZGVzY3JpcHRpb24gPSBmb250RGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMWE3NTYzZDA2MWNlZWI5ZmEz
NmRiNzVhODVkMzhmYjI5ODNjNDAyZi4uOTNkOTU3MWU2ZGU1NTU3YTc2Y2QwNDk1ZDQyNTU5MGI2
YTBmZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdz
IGZvbnRWYXJpYXRpb25TZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigp
LnZhcmlhdGlvblNldHRpbmdzKCk7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgZm9udFdlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpOyB9CiAgICAgRm9u
dFNlbGVjdGlvblZhbHVlIGZvbnRTdHJldGNoKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0
aW9uKCkuc3RyZXRjaCgpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250
SXRhbGljKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCk7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udEl0YWxpYygpIGNvbnN0IHsg
cmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpOyB9CiAKICAgICBjb25zdCBMZW5ndGgm
IHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7
IH0KICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRBbGlnbk1vZGU+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQpAQCAtNzc5
LDcgKzc3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIFRl
eHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgQXV0b3NpemVTdGF0dXMgYXV0b3Np
emVTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlzSWRlbXBvdGVudFRleHRBdXRvc2l6aW5nQ2Fu
ZGlkYXRlKE9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW1wb3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0
ZShzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIFRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0U2VjdXJpdHk+KG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTZWN1cml0eSk7IH0KQEAgLTk3MSw3ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZhcmlhdGlvblNldHRpbmdzKTsKICAgICB2
b2lkIHNldEZvbnRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKTsKICAgICB2b2lkIHNldEZvbnRT
dHJldGNoKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0gICAgdm9pZCBzZXRGb250SXRhbGljKE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOworICAgIHZvaWQgc2V0Rm9udEl0YWxpYyhzdGQ6Om9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOwogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvciYpOwogICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCA0NDBmNGEz
ZDUyMzJhYWQwMDY2MGQ4YjI4NDE3MTFmM2VhYWNhMmE2Li5iYTU4NGI0MmRmNjM2NjczY2VkNzg0
NzUyNGNhMjg1ZGU3MGY2YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYWRvd0RhdGEuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEo
Y29uc3QgU2hhZG93RGF0YSYgbykKIHsKIH0KIAotT3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93
RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0YSogZGF0YSkKK3N0ZDo6b3B0aW9uYWw8U2hhZG93
RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0YSogZGF0YSkKIHsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCBhZjU5YTQxYWM0NGNjODhjNmNjMjk1
MTIyOWQzMGUzYjE4OGZhMGU3Li5kY2NhMzI1MTM0NGRiMTA0Mjg5MTA5MTgzYTE0Yzg5M2E5ODFl
Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFNoYWRvd0RhdGEoY29uc3QgU2hh
ZG93RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTaGFkb3dEYXRhPiBjbG9uZShjb25zdCBT
aGFkb3dEYXRhKik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhZG93RGF0YT4gY2xvbmUo
Y29uc3QgU2hhZG93RGF0YSopOwogCiAgICAgU2hhZG93RGF0YSYgb3BlcmF0b3I9KFNoYWRvd0Rh
dGEmJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvVGV4dFNpemVBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuY3BwCmluZGV4IDJkZjNiZTA3MjA0MGZkMjAwZDVjNmY2
NzAxNDJlMTEyNWJlZjczZjIuLjA0ZjJiYWZjM2YzOTQzMGI2NWNmM2VlNGM5NjRiNDhkZjlmMTRj
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFk
anVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6
ZUFkanVzdG1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgQXV0b3NpemVTdGF0dXM6OnBy
b2JhYmx5Q29udGFpbnNBU21hbGxGaXhlZE51bWJlck9mTGluZXMoY29uc3QgUmVuZGVyU3R5bGUm
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIG1heEhlaWdodCA9IHN0eWxlLm1h
eEhlaWdodCgpOwotICAgIE9wdGlvbmFsPExlbmd0aD4gaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0aDsK
ICAgICBpZiAobWF4SGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgaGVpZ2h0T3JNYXhIZWlnaHRB
c0xlbmd0aCA9IHN0eWxlLm1heEhlaWdodCgpOwogICAgIGVsc2UgaWYgKHN0eWxlLmhlaWdodCgp
LmlzRml4ZWQoKSAmJiAoIW1heEhlaWdodC5pc1NwZWNpZmllZCgpIHx8IG1heEhlaWdodC5pc1Vu
ZGVmaW5lZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9U
ZXh0VW5kZXJsaW5lT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4
dFVuZGVybGluZU9mZnNldC5oCmluZGV4IDgwN2U0ZGI4Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4
MGFmOTI0OTkuLjk2MWU3YjJkOTMxMmQyYTE5OTBkOGVhYjU2NjkwMzBkYzkzMjVhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZz
ZXQuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9sZW5ndGggPSAw
OwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBtX2xlbmd0aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtX2xlbmd0aDsKIH07CiAKIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBvZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAppbmRleCA0MzBiNGI5MDM3Y2ZjYmNiNmY3ZjNhZTU5YzViMTNhN2UxYmU0OWQxLi5j
ZDMwOWIyZDkzOWJkNDg1Mjg0NDBkOWRiNWZiMDkxM2ZhMGZiODNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
QEAgLTk4LDE0ICs5OCwxNCBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iagogICAgIHJldHVybiBT
VkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVw
YWludENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJs
ZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNW
R1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoKnRoaXMs
IHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5l
ciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91
dFJlY3Q+IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdElu
Q29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAg
ICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCAzMzUzMmQ5YmVmMDY2OTg2ZWEzZTVmN2Rl
MWUxNmIwZjM5ZGVhZTY1Li4zY2YwNTk5OTZhNTMyNTYyNTA5OTdlZWZhMzlkYzU1NDUxNDJlMTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlz
aWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0
PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBj
b250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29s
IHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMzA0OTY5ZGFlZjY5ZGEzZDdmOTVmYmMzNjk1Zjdj
NDQwNjYwNmZhYy4uNTc1M2UzYjlhM2NiYzIwYWExNmVlMTcyMjgxNThkODlkNGFhNDVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZQogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWlu
dENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHSW5saW5lOjpj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRl
eHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdJbmxp
bmU6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWluZXIs
IGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmgKaW5kZXggZmQ3MmRlODY3OTczZDBmOGE1YWU5ZDcyMzNlZjQ3OWQ5YzcwNzI5Mi4u
YTllOWY5NjZmMWUwN2QxZGU1MWU1ZjdjM2E1ZDk1YTdlNjVkY2NkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkg
Y29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250
ZXh0KSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZp
c2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNv
bnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAK
aW5kZXggYzk1ZTFhMWFmOTRiZWI4YzE5MjA3ZjBmOWM3MWU2YWQ2OTQ3NTNkZi4uZTI4OTczMjQ4
NGNiNWYwMmFhMTliYmIyNmI1NzNhNDM3NmY2MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVj
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWMKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9y
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoKnRoaXMsIHJlcGFpbnRDb250YWluZXIp
OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29u
dGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RD
b250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNv
bXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwg
Y29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKaW5kZXggMWViODY0NjM5YzgyMGRmMDAyMDMwNDExMDNiODM2Mjg1
ZDM3ZDRhMy4uNjI2MjE4NDQzYzMxZDE3Y2JkNzEzZGViMTM3YmJjNDE5YWU3ZGNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBS
ZW5kZXJFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJlbmRlclNWR01vZGVs
T2JqZWN0KTsKIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RD
b250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVG
bG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZp
bmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICBMYXlv
dXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwKikgY29uc3QgZmlu
YWw7CiAKICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDQ3YjI1YTEwYTcyODY0
OTBiYjUxMTg1NGExYmM0NzJmOGUyOGJhODAuLjNmOTg3MjkxODhhMDE4ODkxOTIxMmNmYjQ4NmZk
ZTkzODFiMGQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBpbnRyaW5zaWNSYXRp
b1ZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnRyaW5zaWNSYXRpb1ZhbHVlOwog
ICAgIGlmICghaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIGludHJpbnNpY1JhdGlv
VmFsdWUgPSBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGludHJp
bnNpY1NpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBAIExheW91
dFVuaXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENv
bXB1dGVQcmVmZXJyZWQgc2hvCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGgoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxM
YXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlclNW
R1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB3ZSdyZSBlbWJl
ZGRlZCB0aHJvdWdoIFNWR0ltYWdlIChib3JkZXItaW1hZ2UvYmFja2dyb3VuZC1pbWFnZS88aHRt
bDppbWc+Ly4uLikgd2UncmUgZm9yY2VkIHRvIHJlc2l6ZSB0byBhIHNwZWNpZmljIHNpemUuCiAg
ICAgaWYgKCFtX2NvbnRhaW5lclNpemUuaXNFbXB0eSgpKQpAQCAtMzY4LDcgKzM2OCw3IEBAIExh
eW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
UmVjdChlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRSZWN0KSwgcmVwYWludENvbnRhaW5lciwgY29u
dGV4dCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZs
b2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRl
eHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0
ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkgb3VyIGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2Vw
dCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBvdXIgc2hhZG93LCAKICAgICAvLyBhbmQgdGhl
biBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5kbGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJv
eCBtb2RlbCBiaXRzCkBAIC0zOTQsNyArMzk0LDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5k
ZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2EK
ICAgICAgICAgYWRqdXN0ZWRSZWN0LnVuaXRlKGRlY29yYXRlZFJlcGFpbnRSZWN0KTsKICAgICB9
CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdEluQ29udGFpbmVyID0gUmVuZGVy
UmVwbGFjZWQ6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGVuY2xvc2luZ0ludFJlY3Qo
YWRqdXN0ZWRSZWN0KSwgY29udGFpbmVyLCBjb250ZXh0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiByZWN0SW5Db250YWluZXIgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVZp
c2libGVSZWN0SW5Db250YWluZXIoZW5jbG9zaW5nSW50UmVjdChhZGp1c3RlZFJlY3QpLCBjb250
YWluZXIsIGNvbnRleHQpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCpyZWN0SW5Db250YWlu
ZXIpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDNkZmQyNTdkMjU1NGE2N2MwNDAxZDU1OThm
NGJhOWRlMjJlZDQ2MmEuLmQ0ZTVlMWU0OTViOGI4MmIzZWQxYWNkZGI5NWU2NzI0NjVhZDBkZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQogCiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21w
dXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0g
c3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2Vk
V2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAogICAgIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVy
cmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggMmEzNTMwOTg3ZjQwZGE5N2RhZTQyMWQ1MGVkM2Q0
NjcyNTdkNTA0ZC4uNjRhZmVhNjRiOGFiNjBkMWI2OWU0NmE2ZmVhY2Q3YTA5OTNhZTQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAg
LTE4NSw3ICsxODUsNyBAQCBQYXRoKiBSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVBh
dGgoY29uc3QgUGF0aCogcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNmbwogCiBib29sIFJlbmRlclNW
R1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KEFmZmluZVRyYW5zZm9ybSYgc3Ry
b2tlVHJhbnNmb3JtLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyKQogewot
ICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0cm9rZVRyYW5zZm9ybS5p
bnZlcnNlKCk7CisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBz
dHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpOwogICAgIGlmICghaW52ZXJzZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC00MjAsNyArNDIwLDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1NoYXBl
OjpjYWxjdWxhdGVTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgaWYgKHN0eWxlKCkuc3Zn
U3R5bGUoKS5oYXNTdHJva2UoKSkgewogICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgp
KSB7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5v
blNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IGludmVyc2UgPSBub25TY2FsaW5nVHJhbnNmb3JtLmludmVyc2UoKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0g
bm9uU2NhbGluZ1RyYW5zZm9ybS5pbnZlcnNlKCkpIHsKICAgICAgICAgICAgICAgICBQYXRoKiB1
c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5nVHJh
bnNmb3JtKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0ID0g
dXNlUGF0aC0+c3Ryb2tlQm91bmRpbmdSZWN0KEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+IHsgW3RoaXNdIChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0
LCBzdHlsZSgpLCAqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcAppbmRleCBmYmU5ZjRmYTlkNjgwYTM3YWU2ZmQzOGNiNjIzMTg0MGQ5YmE2
YmQ5Li4wZjI4MzU4NTc3ZWIwMTY0MTQ2ZGU4ZmRjOWU0YzMwYmE4YjRlYTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTkyLDE1ICs5
MiwxNSBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgIHJldHVybiBTVkdSZW5kZXJTdXBw
b3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5l
cik7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNv
bnN0CiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxv
YXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2li
bGVSZWN0SW5Db250YWluZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRq
dXN0ZWRSZWN0KQogICAgICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRS
ZWN0KTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+
IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCBy
ZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCAzMzg4MzFmNDk4ZGY5YTBmYmM0M2YyZWQxM2I3Nzlk
NjcxZDk4NTY0Li41ZTk1Y2IxOTM3MmE3NzUxZjU3NWJjM2RlOThjZGI2ODIwNDQ4NWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzgsOCAr
NzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFs
PExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDcxODUzMjZiNjBj
NDM4MjZjZTUwZmMyNWM0NGQ4OGU1ZDBjMjhiOGUuLjE1NGY1M2Q1MjZlOWZkMjE0MGYxYTAwOTY4
ZjljNWIyMTJlNGJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNjUsNyArNjUsNyBAQCBMYXlvdXRSZWN0IFNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckVsZW1l
bnQmCiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXIuY29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQocmVwYWludFJlY3QsIHJlcGFpbnRDb250YWluZXIpKTsKIH0KIAotT3B0
aW9uYWw8RmxvYXRSZWN0PiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVy
T2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkKK3N0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNp
YmxlUmVjdENvbnRleHQgY29udGV4dCkKIHsKICAgICAvLyBFbnN1cmUgb3VyIHBhcmVudCBpcyBh
biBTVkcgb2JqZWN0LgogICAgIEFTU0VSVChyZW5kZXJlci5wYXJlbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmluZGV4IGU4MTU3MDU4
ZDdjNWM0YWE5ODdjYzE0NGVlYjY3M2JlMTY5NmZlOGQuLmY2ZWYyOGYwNzQ5Y2M2ZGMwODExZjQy
NTBjMzI1ZTZiMTY2ZDc3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElt
cG9ydGFudCBmdW5jdGlvbnMgdXNlZCBieSBuZWFybHkgYWxsIFNWRyByZW5kZXJlcnMgY2VudHJh
bGl6aW5nIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIC8gcmVwYWludCByZWN0IGNhbGN1bGF0
aW9ucwogICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIpOwotICAgIHN0YXRpYyBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2li
bGVSZWN0SW5Db250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpW
aXNpYmxlUmVjdENvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVy
LCBSZW5kZXJPYmplY3Q6OlZpc2libGVSZWN0Q29udGV4dCk7CiAgICAgc3RhdGljIGNvbnN0IFJl
bmRlckVsZW1lbnQmIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyRWxlbWVudCYs
IEFmZmluZVRyYW5zZm9ybSAmKTsKICAgICBzdGF0aWMgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNl
c3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCk7CiAgICAgc3Rh
dGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAKaW5kZXggZDNhZjI5Mzk5N2Q4Mzc4NmVjZWM1YmU4MTc3MzZhMDk3
Yjg3YmY0Yi4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4NmY1N2FiYTY0NGI2ZTAzZTVlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY5LDcg
KzE2OSw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3Bl
Y3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgYm9vbCBhbHRlclN0YXJ0UG9z
aXRpb24gPSB0cnVlOwogICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlvbiA9IHRydWU7CiAKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbGFzdFBvc2l0aW9uT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGxhc3RQb3NpdGlvbk9mZnNldDsKICAgICBmb3IgKDsgdGV4dE1ldHJpY3NPZmZz
ZXQgPCB0ZXh0TWV0cmljc1NpemUgJiYgcG9zaXRpb25PZmZzZXQgPCBwb3NpdGlvblNpemU7ICsr
dGV4dE1ldHJpY3NPZmZzZXQpIHsKICAgICAgICAgU1ZHVGV4dE1ldHJpY3MmIG1ldHJpY3MgPSB0
ZXh0TWV0cmljc1ZhbHVlc1t0ZXh0TWV0cmljc09mZnNldF07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4
IGEzNDdkMzE1NTMzYzhhYjliMjg1YzBmNzAwYzJkMGIyMjc2YTQ3NDUuLjNkY2Q3ZGZjMTkyMmE5
NjFjM2RlMDk0NmM4OGUxMGE2MjFiNmVjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtNzgwLDcgKzc4
MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9y
SW5saW5lQ2hpbGRyZW5JZk5lZWRlZChSZW5kZXJFCiAgICAgLy8gb3RoZXJ3aXNlIHdlIGNhbiBw
cm9jZWVkIHRvIHN0cmlwcGluZyBzb2xpdGFyeSBhbm9ueW1vdXMgd3JhcHBlcnMgZnJvbSB0aGUg
aW5saW5lcy4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gaGFuZGxlIHNwbGl0IGlubGlu
ZXMgaGVyZSAtIHdlIGV4Y2x1ZGUgdGhlbSBhdCB0aGUgbW9tZW50IGJ5IHJldHVybmluZwogICAg
IC8vIGlmIHdlIGZpbmQgYSBjb250aW51YXRpb24uCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxk
QWxsQ2hpbGRyZW5CZUlubGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENo
aWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gYmxvY2tQYXJlbnQuZmly
c3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewog
ICAgICAgICBpZiAoY3VycmVudC0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkgfHwgY3VycmVudC0+c3R5
bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0x
MDA0LDcgKzEwMDQsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpyZXBvcnRWaXN1YWxseU5v
bkVtcHR5Q29udGVudChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbgogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChpczxSZW5kZXJTVkdSb290PihjaGlsZCkpIHsKLSAgICAgICAgYXV0
byBmaXhlZFNpemUgPSBbXSAoY29uc3QgYXV0byYgcmVuZGVyZXIpIC0+IE9wdGlvbmFsPEludFNp
emU+IHsKKyAgICAgICAgYXV0byBmaXhlZFNpemUgPSBbXSAoY29uc3QgYXV0byYgcmVuZGVyZXIp
IC0+IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gewogICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBy
ZW5kZXJlci5zdHlsZSgpOwogICAgICAgICAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlzRml4ZWQo
KSB8fCAhc3R5bGUuaGVpZ2h0KCkuaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlci5oCmluZGV4IGI3ZjBhZGViMTc1YWU4NTI3MGI0OGUyMmQyZTEzNTdiNmNjNDYy
MmEuLjlkNGYzZDVmMDY3MTEwZTRmODJhZTdiZmI2ODVlNjQ3YjMzZmEzZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5o
CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFBhcmVudCB7CiAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IFN0eWxlOjpFbGVt
ZW50VXBkYXRlcyogdXBkYXRlcyB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8UmVuZGVy
VHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRpb247CiAKICAgICAgICAgYm9vbCBk
aWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICAgICAgUmVuZGVy
T2JqZWN0KiBwcmV2aW91c0NoaWxkUmVuZGVyZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcAppbmRleCAzNzFkMzNiNmYxNTY3
N2I3MWNiOTUwMGU5MmVlMjA5MzIzZTIzNmI0Li43MTgyNTk2NGE4NGExNDU2NjM0YWZjOTFkMDQ3
ODQwYTVlOGMzNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VR
dW90YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3Rh
TWFuYWdlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b24gU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWEKICAg
ICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3BhY2VSZXF1ZXN0ZWQsICZzZW1hcGhv
cmVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIFN0b3Jh
Z2VRdW90YU1hbmFnZXIgYXNrcyBmb3IgcXVvdGEgaW5jcmVhc2UgJSIgUFJJdTY0LCB0aGlzLCBz
cGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIG1fcXVvdGFJbmNyZWFzZVJlcXVlc3RlcihtX3F1b3Rh
LCBtX3VzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCAmc2VtYXBob3JlXShPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IG11dGFibGUgeworICAgICAgICBtX3F1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIobV9xdW90YSwgbV91
c2FnZSwgc3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgJnNlbWFwaG9yZV0oc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IG11dGFibGUgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gU3RvcmFn
ZVF1b3RhTWFuYWdlciByZWNlaXZlcyBxdW90YSBpbmNyZWFzZSByZXNwb25zZSAlIiBQUkl1NjQs
IHRoaXMsIG5ld1F1b3RhID8gKm5ld1F1b3RhIDogMCk7CiAgICAgICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VRdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFu
YWdlci5oCmluZGV4IDViMzU2NTcyZDQ4YmI0Mjc1OWNhMWVmNWE0NTkwYzhjMDIzNjRlNzguLjFl
NzU0ZTM0MGZiMDBhYTY5MWQzNzQ5MjQ4NTg0ZDkwNzZjYzgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFN0b3JhZ2VRdW90YU1hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFn
ZVF1b3RhTWFuYWdlcj4sIHB1CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdXNpbmcgVXNhZ2VHZXR0ZXIgPSBGdW5jdGlvbjx1aW50NjRfdCgpPjsKLSAgICB1c2lu
ZyBRdW90YUluY3JlYXNlUmVxdWVzdGVyID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik+OworICAgIHVz
aW5nIFF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFz
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYpPjsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFN0b3JhZ2VRdW90YU1hbmFnZXI+IGNyZWF0
ZSh1aW50NjRfdCBxdW90YSwgVXNhZ2VHZXR0ZXImJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RlciYm
KTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90
YUZyb21QZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyByZXR1cm4gcXVvdGEgLyAxMDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDA1ZTI4NDNkYzFmMTYxZDJhMWM0YTlhNWUzNTkyZDJiNjY0MDU4MGYuLjdjNjU0NmNlOWEzM2Jm
YTAwMmM4MGEzMmRkZGY0M2ZiYzczZWVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25Pcmln
aW4gZGVjbGFyYQogICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKGRlY2xhcmF0aW9uT3JpZ2luKTsK
IH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVj
bGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFNjb3BlT3JkaW5hbD4g
ZnJvbVNjb3BlKQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVs
ZXMoRGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2Nv
cGVPcmRpbmFsPiBmcm9tU2NvcGUpCiB7CiAgICAgaWYgKG1fbW9kZSAhPSBTZWxlY3RvckNoZWNr
ZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcykKICAgICAgICAgZGVjbGFyYXRpb25zRm9yT3JpZ2lu
KG1fcmVzdWx0LCBkZWNsYXJhdGlvbk9yaWdpbikucmVzZXJ2ZUNhcGFjaXR5KG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aAppbmRleCAxYjMzMmZkYzAxMjYxODcwN2IwM2I3MDkxNzBjMGZmYWYyZDgxMmZjLi4yMzkyZTBi
NzQ0MjE0YWUyZTc1MTZmZTVmZDhhMmY0ZGQ5ODk2NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU2NvcGVS
dWxlU2V0czsKIAogY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3QgewogcHVibGljOgotICAgIFBz
ZXVkb0VsZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9s
bGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6bnVsbG9wdCkKKyAgICBQc2V1ZG9FbGVt
ZW50UmVxdWVzdChQc2V1ZG9JZCBwc2V1ZG9JZCwgc3RkOjpvcHRpb25hbDxTdHlsZVNjcm9sbGJh
clN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBwc2V1ZG9J
ZChwc2V1ZG9JZCkKICAgICAgICAgLCBzY3JvbGxiYXJTdGF0ZShzY3JvbGxiYXJTdGF0ZSkKICAg
ICB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBQc2V1ZG9JZCBwc2V1
ZG9JZDsKLSAgICBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFyU3RhdGU+IHNjcm9sbGJhclN0YXRlOwog
ICAgIEF0b21TdHJpbmcgaGlnaGxpZ2h0TmFtZTsKIH07CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgRGVjbGFyYXRpb25PcmlnaW4geyBVc2VyQWdlbnQsIFVz
ZXIsIEF1dGhvciB9OwogICAgIHN0YXRpYyBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+JiBkZWNs
YXJhdGlvbnNGb3JPcmlnaW4oTWF0Y2hSZXN1bHQmLCBEZWNsYXJhdGlvbk9yaWdpbik7CiAgICAg
dm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4pOwotICAg
IHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFNj
b3BlT3JkaW5hbD4gZm9yU2NvcGUgPSB7IH0pOworICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVs
ZXMoRGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2NvcGVPcmRpbmFsPiBmb3JTY29w
ZSA9IHsgfSk7CiAKICAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVEYXRhJiwgdW5z
aWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5hbCk7CiAgICAgdm9pZCBhZGRNYXRjaGVkUHJv
cGVydGllcyhNYXRjaGVkUHJvcGVydGllcyYmLCBEZWNsYXJhdGlvbk9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5kZXggZTNmZWM1Y2Q1NzAyMmFlYjNlOGU4OGFkZjVh
Y2QwYzZhZjNlYWY3ZS4uMTI0MDI3YTFjYjc3MTE1NDM1M2QwOGRhZDAzY2RiNDQxMTY0M2Q3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0
aWMgYm9vbCBpc1NpYmxpbmdPclN1YmplY3QoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZShjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50KQorUnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgc3RkOjpvcHRp
b25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCkKICAgICA6IHN0eWxlUnVsZSgmcnVsZURh
dGEuc3R5bGVSdWxlKCkpCiAgICAgLCBzZWxlY3RvckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5k
ZXgoKSkKICAgICAsIHNlbGVjdG9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCAxY2QyZTNmZjU3YzBiZTlhYzcz
ZmIxOGFjNjVkYjc5NTc0OTE2NGFhLi5jYTU2M2FlNzZjNDNiM2I5ZTJkYWJjMGViZGM2ZTQzODI1
Zjk0MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTQwLDE3ICs0MCwxNyBA
QCBlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3QgeyBTdWJqZWN0LCBQYXJlbnQsIEFu
Y2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbgogY29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVu
dENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwog
CiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewotICAgIFJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiwg
T3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUnVsZUZlYXR1cmUo
Y29uc3QgUnVsZURhdGEmLCBzdGQ6Om9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgUmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4gc3R5bGVSdWxlOwogICAgIHVpbnQx
Nl90IHNlbGVjdG9ySW5kZXg7IC8vIEtlZXAgaW4gc3luYyB3aXRoIFJ1bGVEYXRhJ3Mgc2VsZWN0
b3JJbmRleCBzaXplLgogICAgIHVpbnQxNl90IHNlbGVjdG9yTGlzdEluZGV4OyAvLyBLZWVwIGlu
IHN5bmMgd2l0aCBSdWxlRGF0YSdzIHNlbGVjdG9yTGlzdEluZGV4IHNpemUuCi0gICAgT3B0aW9u
YWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TWF0
Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJ1
bGVGZWF0dXJlKSA8PSAxNiwgIlJ1bGVGZWF0dXJlIGlzIGEgZnJxdWVudGx5IGFsb2NhdGVkIG9i
amVjdC4gS2VlcCBpdCBzbWFsbC4iKTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlV2l0aEludmFsaWRh
dGlvblNlbGVjdG9yIDogcHVibGljIFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxlRmVhdHVyZVdpdGhJ
bnZhbGlkYXRpb25TZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgZGF0YSwgT3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBp
bnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpCisgICAgUnVsZUZlYXR1cmVXaXRoSW52YWxp
ZGF0aW9uU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBp
bnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpCiAgICAgICAgIDogUnVsZUZlYXR1cmUoZGF0
YSwgV1RGTW92ZShtYXRjaEVsZW1lbnQpKQogICAgICAgICAsIGludmFsaWRhdGlvblNlbGVjdG9y
KGludmFsaWRhdGlvblNlbGVjdG9yKQogICAgIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApp
bmRleCA2MjU4Y2Q2NDRmZDU0YjhhMzM4NTZhODMzNjg5NjcxOGE4MGM2MjgyLi40ZGU3M2E2Mjgx
ZGQ5NzA2N2E0MTlmYWRlZWZhM2UwNDg2NWRhYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNw
cApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgUnVsZVNldDo6dHJhdmVyc2VSdWxlRGF0YXMoRnVu
Y3Rpb24mJiBmdW5jdGlvbikKICAgICB0cmF2ZXJzZVZlY3RvcihtX3VuaXZlcnNhbFJ1bGVzKTsK
IH0KIAotT3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUnVsZVNl
dDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIGV2YWx1YXRvcikKK3N0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9u
Q2hhbmdlcz4gUnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1l
ZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKIHsKICAgICBhdXRvIGNvbGxlY3RlZENoYW5n
ZXMgPSBldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoZXZhbHVhdG9yLCAwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5oCmluZGV4IGRjOTIyNDIxNjExN2EwYjJkNWM4ODBkOTU1ZTJiNTNlN2M0
YzJhNWQuLjZmMzcwYWE2ZWE0MzY1YWM5YjM0NDI2ZWUyNGE5YzEzNWM0ODQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlU2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWV3
cG9ydERlcGVuZGVudE1lZGlhUXVlcmllczsgfQogCi0gICAgT3B0aW9uYWw8RHluYW1pY01lZGlh
UXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRp
YVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJik7CiAKICAgICBjb25zdCBSdWxlRmVhdHVyZVNldCYg
ZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQWRqdXN0ZXIuaAppbmRleCBhYzg0MTI1MGM0NTkyZGI2NDY2Zjc0MmIzOTJkZTFmODNl
YjE1NGQyLi4xOTEzMWU1ODBmNTY0NWFlYTIyMzI4Mjk0ZTlkNzYxZWJmODM1ZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgc3RydWN0IEFkanVzdG1lbnRGb3JUZXh0
QXV0b3NpemluZyB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBuZXdGb250U2l6ZTsKLSAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IG5ld0xpbmVIZWlnaHQ7Ci0gICAgICAgIE9wdGlvbmFsPEF1dG9z
aXplU3RhdHVzPiBuZXdTdGF0dXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG5ld0Zv
bnRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBuZXdMaW5lSGVpZ2h0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBuZXdTdGF0dXM7CiAgICAgICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBuZXdGb250U2l6ZSB8fCBuZXdM
aW5lSGVpZ2h0IHx8IG5ld1N0YXR1czsgfQogICAgIH07CiAgICAgc3RhdGljIEFkanVzdG1lbnRG
b3JUZXh0QXV0b3NpemluZyBhZGp1c3RtZW50Rm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCmluZGV4IDFkNDRhZWRiNjVjMzAyNWU2MWE2MTYxNmQ2OWRjZjE1MDQ2
ZmMyYWMuLmJmNTI3NDRhMzg0MDMyZjBjNjM1OGYwNzQxYmJhZThiYmYxZWJiZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xMTcsMTIgKzEx
NywxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0
R3JpZFRyYWNrU2l6ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlv
bj4gY29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlv
bihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBHcmlkQXV0b0Zs
b3cgY29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gY29udmVy
dFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4g
Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRp
YyBib29sIGNvbnZlcnRUb3VjaENhbGxvdXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKICNlbmRpZgpAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBj
b252ZXJ0U21vb3RoU2Nyb2xsaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShj
b25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZv
bnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29u
dmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250
U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRXZWlnaHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRj
aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0
aW9uVmFsdWUgY29udmVydEZvbnRTdHlsZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxp
Z25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhP
cmllbnRhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBH
bHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVy
dExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBs
aWVyID0gMS5mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5l
SGVpZ2h0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9
IDEuZik7CiAgICAgc3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICAKICAgICBzdGF0aWMgQnJlYWtCZXR3
ZWVuIGNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBpbmxpbmUgR3JpZFRyYWNrU2l6ZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIHJl
dHVybiBjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCBidWlsZGVyU3RhdGUpOwogfQogCi1pbmxp
bmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBv
c2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3Np
dGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgR3JpZFBv
c2l0aW9uIGdyaWRQb3NpdGlvbjsKICAgICBpZiAoY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBn
cmlkUG9zaXRpb24pKQpAQCAtMTIwNSw5ICsxMjA1LDkgQEAgaW5saW5lIENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEgQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdp
dGgKICAgICByZXR1cm4gYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5j
b3B5V2l0aEFkanVzdGVkWm9vbSh6b29tKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxMZW5n
dGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0
aD4gd29yZFNwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFs
KQogICAgICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmco
KTsKQEAgLTEyMjEsNyArMTIyMSw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgcmV0
dXJuIHdvcmRTcGFjaW5nOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKQEAgLTEyMzUsMTAgKzEyMzUsMTAgQEAgaW5saW5l
IE9wdGlvbmFsPGZsb2F0PiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoQnVp
bGRlclN0YXRlJiBidWlsZGUKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCi0gICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwgMCA/IE9wdGlvbmFsPGZsb2F0PihzdGQ6Om51
bGxvcHQpIDogT3B0aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKKyAgICByZXR1cm4gcGVyc3Bl
Y3RpdmUgPCAwID8gc3RkOjpvcHRpb25hbDxmbG9hdD4oc3RkOjpudWxsb3B0KSA6IHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBMZW5n
dGggbGVuZ3RoID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9M
ZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3Vs
YXRlZENvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCku
Y29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgIGlmIChsZW5ndGguaXNVbmRlZmluZWQo
KSkKQEAgLTEyNDYsNyArMTI0Niw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYKICAgICByZXR1
cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEZpbHRl
ck9wZXJhdGlvbnM+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
RmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGlmIChidWlsZGVyU3RhdGUuY3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3BlcmF0aW9ucykpCkBAIC0xMzA4LDcgKzEzMDgsNyBA
QCBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDUwogfQogCiAvLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMg
dG8gcGFyc2VkIGFuZCB2YWxpZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN0ZDo6bnVsbG9wdCBp
ZiB0aGUgaW5wdXQgd2FzICJub3JtYWwiLgotaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsK
ICAgICBjb25zdCBhdXRvJiBmb250U3R5bGVWYWx1ZSA9IGRvd25jYXN0PENTU0ZvbnRTdHlsZVZh
bHVlPih2YWx1ZSk7CkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBpbmxpbmUgR2x5cGhPcmllbnRhdGlv
biBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVy
UwogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihidWlsZGVyU3RhdGUsIHZhbHVl
KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggN2YwMWY5Y2JhNTA5YzNj
N2Q5YThlNGM3OTE3Njc0MDE0M2U4ZDU4OC4uZjZlNmY3YTgyNzA3OWQ2NGY3M2U4MTYwNmMxYzY3
ZDgzNjRmOWRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
QEAgLTcyNyw3ICs3MjcsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVMaW5lSGVpZ2h0
TXVsdGlwbGllckR1ZVRvRm9udFNpemUoY29uc3QgRG9jdW1lbnQmIGRvYwogCiBpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhl
aWdodCA9IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwg
dmFsdWUsIDEpOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgMSk7CiAg
ICAgaWYgKCFsaW5lSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggNDM2ODcwOTI1NDcwNWVh
MDljMjliZjlhZTI5ZmJiZWU5MTIxN2RlMS4uNzFjNzRjYjA2MjQ1MmJkYzAxOWEwMDc3NDlhOTQ4
MzZkNDZhM2FiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJvb2wgdXNlRml4ZWREZWZhdWx0
U2l6ZShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiAgICAg
cmV0dXJuIGZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpID09IDEgJiYgZm9udERlc2NyaXB0
aW9uLmZpcnN0RmFtaWx5KCkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpNb25vc3BhY2VGYW1pbHkpOwogfQogCi1PcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZv
ckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYm
IGZvbnREZXNjcmlwdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6
b3B0aW9uYWw8Rm9udENhc2NhZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZv
bnRSYXcsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiBmb250RGVzY3JpcHRpb24sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQuY3NzRm9udFNl
bGVjdG9yKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVGb3JGb250UmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250
UmF3LmgKaW5kZXggMmJjZmNiZmFkZDQ1MjdjM2ExYjJlYjY4ZjJjOGViNWZlOWU5ZmEzNi4uNGZi
M2NmODAyOTZiMGQxNGRhNGVjODE3ZmUzMmQ1ZGE2NjRjMmFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1
Y3QgRm9udFJhdzsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAotT3B0aW9uYWw8Rm9udENhc2NhZGU+
IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJh
dyYsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwor
c3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3JiwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggYzFkYmZmY2RjNDZjMDY5YTQ5NTFkYzA3ZjQ5OWE4M2E2YTRjMDY2
My4uM2RjMzU1OTA2NmZkMGE4ODliZmQ3MWVlNmYxZDBiNjA3NzM4OGM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCBib29sIFJlc29s
dmVyOjpoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcnVsZVNldHMuaGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKTsKIH0KIAotT3B0
aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUmVzb2x2ZXI6OmV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcmllcygpCitzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5
RXZhbHVhdGlvbkNoYW5nZXM+IFJlc29sdmVyOjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJpZXMo
KQogewogICAgIHJldHVybiBtX3J1bGVTZXRzLmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxl
cyhtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
ci5oCmluZGV4IDY5NzdjYzdhM2U3ZjBkY2FiYmFkNDg4YjY2NzM0NDM2MmVhMDQzYzkuLmIyZGU5
ZmVkNDczZDY1ZTU1YWI3YTBhOWI3N2NhNWEzZjVkMmVkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVyLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNT
ZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0
OwotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcmllcygpOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlh
UXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyaWVzKCk7CiAK
ICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBiYTc2NzJkZDA4NDA3ZjRkNWRiODVmM2E0
MjY3Y2NkNDYyMDIwNmEwLi5jOWI2OTYzZWJiNDgxNzc5YTgwMzc3ZmVkMjViZmNmODY1MGI3OGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOwogCi0gICAgT3B0
aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VXBk
YXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOwogCiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFi
aWxpdHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0
cy5jcHAKaW5kZXggZTdmNjI0MzY0YjY2YjczYmMzZjY2MmU1NjYzNWMzZGZhMWQyZjk4NS4uYTli
YTY3MzIzNmNlNDU1OGJjNzU0NDQwNzY2ZDk0YjMzOWRhNmRlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBT
Y29wZVJ1bGVTZXRzOjpoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRp
b25DaGFuZ2VzPiBTY29wZVJ1bGVTZXRzOjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMo
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9yKQorc3RkOjpvcHRpb25hbDxEeW5h
bWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBTY29wZVJ1bGVTZXRzOjpldmFsdWF0ZUR5
bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9y
KQogewotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2
YWx1YXRpb25DaGFuZ2VzOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFs
dWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGlvbkNoYW5nZXM7CiAKICAgICBhdXRvIGV2YWx1YXRlID0g
WyZdKGF1dG8qIHJ1bGVTZXQpIHsKICAgICAgICAgaWYgKCFydWxlU2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRleCA3OWJiZGQxZjJlMWU3ZTA2MWRmMjc1
NWQxMGFlMTQzM2E3YWE2MWQ2Li44N2E3ODllZmJiOTQ3OTZlODEwZTdhYTM2YjRjOTFmYmM0YzQy
NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApAQCAtNzks
NyArNzksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFR
dWVyaWVzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRp
b25DaGFuZ2VzPiBldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0
aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImKTsKIAogICAgIFJ1bGVGZWF0dXJlU2V0JiBtdXRhYmxlRmVhdHVyZXMoKTsK
IApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+PiBtX2F0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+PiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBt
X3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHM7CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNG
b3JTdHlsZUF0dHJpYnV0ZTsKIAogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWZhdWx0U3R5bGVW
ZXJzaW9uT25GZWF0dXJlQ29sbGVjdGlvbiB7IDAgfTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
dXNlckFnZW50TWVkaWFRdWVyeVJ1bGVDb3VudE9uVXBkYXRlIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IGRiYzAzM2VlMGM1NTdmYWE5YWRm
NDUzMmY3MDAyZmU2NzdlNjU1MTYuLmNlZjhmMGMzZjg5NzA1ZDIyNzA3OTNjZGY1OGNlYmMxYTc1
ZmFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAg
LTI3Myw3ICsyNzMsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNj
ZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9OwogfQogCi1PcHRpb25h
bDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBw
c2V1ZG9JZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNv
bHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxl
bWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBz
ZXVkb0lkOjpNYXJrZXIgJiYgZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpMaXN0SXRlbSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IDlhZDZiMGQ1NWEzNGJmNDFmZmMyMjIyYmQ0NTAy
YWZmZjI1N2Q5MmQuLjY3ZWExNzcyMTdjMzRhOWIwNTJhODAyZWUyNmNmMjlhNWUyNjkwODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaApAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIEVsZW1lbnRVcGRhdGVzIHJlc29sdmVFbGVtZW50KEVsZW1lbnQmKTsK
IAogICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBTdHlsZWFibGUmLCBDaGFuZ2UsIGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJv
eFN0eWxlKTsKLSAgICBPcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUo
RWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CisgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihUcmVlUmVzb2x2ZXJTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuaAppbmRleCA5OWNlMTNmNjE3YjBlZjVhMDFkZTEzNGU4NDQxMWJlZWM5MzlmYmRkLi4wMmM2
NTMzODNjZDQ4ZWRmN2RhMDI5MDJmNDJhN2Q0NWVlZDJiZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmgKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKIHN0
cnVjdCBUZXh0VXBkYXRlIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07Ci0gICAg
T3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPj4gaW5oZXJpdGVkRGlzcGxheUNv
bnRlbnRzU3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+PiBpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZTsKIH07CiAKIGNsYXNzIFVwZGF0ZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcAppbmRleCBiNjQ1ODM4YTUwOWM5NDk4MjVjNjhl
MzlmYjE2YWU0MGVmMjEyMmFlLi4wZDdjN2Q1YTA1OWJhZGI4ODE0N2Y5YTVhMWQyOTcyZGEyNDdk
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2
b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZAogICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRh
aW5BbGwpIHsKICAgICAgICAgYXV0byBudW1iZXJPZlByb3BlcnRpZXMgPSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOwogICAgICAgICBmb3IgKGludCBwcm9wZXJ0eUlu
ZGV4ID0gMDsgcHJvcGVydHlJbmRleCA8IG51bWJlck9mUHJvcGVydGllczsgKytwcm9wZXJ0eUlu
ZGV4KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBpc1Nob3J0aGFuZDsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNTaG9ydGhhbmQ7CiAgICAgICAgICAgICBhdXRvIHBy
b3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChwcm9wZXJ0
eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQgJiYgKmlz
U2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFi
bGUuaAppbmRleCA2NGMxMWE5NTZlMmQ2OWE3OTdmYzBiZTYwOTA1YjEyZDNlZWU3ZjNiLi5mMzE4
YTE3OGNiMTdkN2E5MzM3YzYzYTMyYjlmNTE0ODljYjAwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZWFibGUuaApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgU3R5bGVhYmxlIHsKICAgICAgICAgcmV0
dXJuIFN0eWxlYWJsZShlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJlcihjb25z
dCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZyb21FbGVtZW50KCplbGVtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FFbGVtZW50LmgKaW5kZXggOGU3YzE5ZDlkZmYyNWZkY2IyNGRiYjQ0ZDQ1NmIyMWYzODBl
Zjg5MS4uYjZhNGU4YzUyNzY4NWZmMjY2MTE2NGJmOTMxODdmZmExNDU5OTMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZH
QW5pbWF0ZWRTdHJpbmc+IG1fdGFyZ2V0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlz
KSB9OwogCiAgICAgLy8gVGhpcyBpcyBjb21wdXRlZCBvbmx5IG9uY2UgYW5kIG11c3Qgbm90IGJl
IGFmZmVjdGVkIGJ5IHN1YnNlcXVlbnQgVVJMIGNoYW5nZXMuCi0gICAgbXV0YWJsZSBPcHRpb25h
bDxTaGFyZWRTdHJpbmdIYXNoPiBtX3N0b3JlZFZpc2l0ZWRMaW5rSGFzaDsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkU3RyaW5nSGFzaD4gbV9zdG9yZWRWaXNpdGVkTGlua0hhc2g7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3JlbExpc3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCBjOTI0ZTVk
NzQyM2FmYTY4NWVmZTU0YzQ2MTIyZGY0MDRhOTJmNmYxLi4wYjM5ZjAyNjMxMzEwMGI4ZmU3ZmUw
Mjk3NmZiOGNhNTk2Y2U3MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlOjpzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpCiAgICAgICAgIGFu
aW1hdG9yLT5zdG9wKHRhcmdldEVsZW1lbnQpOwogfQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICAvLyBGSVhNRTogQSByZXR1cm4gdmFs
dWUgb2YgZmxvYXQgaXMgbm90IGVub3VnaCB0byBzdXBwb3J0IHBhY2VkIGFuaW1hdGlvbnMgb24g
bGlzdHMuCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggZDEzM2U2MTIzMzM0MTQ2ZDUxNWY5NjZkODNlZTk4
YjJiMDIyOTk0ZS4uYjUxYzZiMDc2YTU1OTI2MmYyYzAzNmUyNzQ3ZjU3MGNmZmFjOGFkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaApAQCAtNTcsMTIgKzU3
LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBy
b2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJl
c3VsdHNUb1RhcmdldCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5j
ZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBoYXNJbnZhbGlkQ1NTQXR0cmlidXRlVHlwZSgpIGNvbnN0OwogCiAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IG1fYW5pbWF0b3I7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2hhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggZGU0MThkMzFkM2RjOTQxOGU5Yjc0ZWRl
MDBhNzYwOWI3M2IwMWEwMS4uMzc3ZDc5YTBkMzFlMGFmYjViYzhkODJlNGZkMGU2MTI2ZGNkM2Q4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQoKQogICAgIH0KIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogewogICAgIGF1dG8gZnJvbSA9IHBhcnNlUG9pbnQo
ZnJvbVN0cmluZyk7CiAgICAgaWYgKCFmcm9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRleCA3YjAyNGYyOGZhNDI3MzUyNjZiM2ZhNTcxMjZhM2Jk
MmRhNzAwY2JmLi5mZWI4ZTBkODQ1Mjg1ZTgwZWFlODY1MjRjYTBkMzRjMzlkMDg3NGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaApAQCAtNDgsNyAr
NDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIAogICAgIGVudW0gUm90
YXRlTW9kZSB7CiAgICAgICAgIFJvdGF0ZUFuZ2xlLApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRl
OgogICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0
by9mcm9tIGNvb3JkcyBhcyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24n
dCBlaXRoZXIpCiAgICAgRmxvYXRQb2ludCBtX2Zyb21Qb2ludDsKICAgICBGbG9hdFBvaW50IG1f
dG9Qb2ludDsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b247CiAKICAgICBQYXRoIG1fcGF0aDsKICAgICBQYXRoIG1fYW5pbWF0aW9uUGF0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCA2OTIzYTBiYjg1ZWM3
OWFhY2NiNDlkZjlmNDljZTllNGRjMmU2NzNlLi5mYjkxYWQyNTRmNDEzZWRlNGE4NTRiMjFhYTdm
MzZhN2VlY2Q4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
Y3BwCkBAIC03OSwxMiArNzksMTIgQEAgZmFpbDoKICAgICByZXN1bHQuY2xlYXIoKTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmlu
Z1ZpZXcgc3RyaW5nKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVuaXRCZXppZXI+PiBw
YXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENo
YXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxW
ZWN0b3I8VW5pdEJlemllcj4+IHsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5n
KHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxVbml0QmV6
aWVyPj4gewogICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKIAogICAgICAg
ICBWZWN0b3I8VW5pdEJlemllcj4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmgKaW5kZXggZmNmOGFmNjUyYjVjYTQyZTMxMGI1YTQ1ZTIzMTU1ODk1ZWJhOGIy
OS4uNTU1N2QzZmE4OGExMDIxOWFiZTVjODdiZjg5OGJjNzVkMDZjMDVlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQpID0gMDsKLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
IC8qZnJvbVN0cmluZyovLCBjb25zdCBTdHJpbmcmIC8qdG9TdHJpbmcqLykgPSAwOworICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8pID0gMDsKIAogICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtleVRpbWVzKCkgY29uc3Q7CiAgICAgdm9pZCBjdXJyZW50
VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQ
ZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYgdG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDdkMmI5ZGE3ZTQwMzE4MjgwMGY0NTkwNjhjZjEwOTNjMTdkOTYzMzkuLmEwMjA2
NDlmMTg3YzZmZDc0ODJkOGJjNTQ3ZDc5NDY0NmE3ZmM1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50
PiYgU1ZHRWxlbWVudDo6aW5zdGFuY2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0
YS0+aW5zdGFuY2VzKCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRWxlbWVudDo6Z2V0
Qm91bmRpbmdCb3goKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6
OmdldEJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50
PigqdGhpcykpIHsKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxl
dGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgcHJvcGVydHlBbmlt
YXRvckZhY3RvcnkoKS5hbmltYXRvcldpbGxCZURlbGV0ZWQoYXR0cmlidXRlTmFtZSk7CiB9CiAK
LU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikK
K3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqKQogewogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGluIGEgPHVzZT4gdHJlZSB3ZSBnZXQg
dGhlIHN0eWxlIGZyb20gdGhlIGRlZmluaXRpb24gdHJlZS4KICAgICBpZiAoYXV0byBzdHlsZUVs
ZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5YzRkYmE3NjdhZDdjM2MzNjU1ODAzYzAxM2YzMmYwYmNh
MTU3ZTc5Li45MjgwNWZhOTJlZjlkNjllYjc0NTFiZmE5ZDE4ZTAzM2U2NmQyNjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBp
bnN0YW5jZXMgb2YgYW4gZWxlbWVudCBhcmUgY2xvbmVzIG1hZGUgaW4gc2hhZG93IHRyZWVzIHRv
IGltcGxlbWVudCA8dXNlPi4KICAgICBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgaW5z
dGFuY2VzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94KCkg
Y29uc3Q7CiAKICAgICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiByZWZlcmVuY2luZ0VsZW1lbnRz
KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSZWZlcmVuY2luZ0VsZW1lbnQoU1ZHRWxlbWVudCYpOwpA
QCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29ycmVzcG9uZGluZ0Vs
ZW1lbnQoU1ZHRWxlbWVudCopOwogCi0gICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKIAogICAgIHN0YXRpYyBRdWFsaWZpZWROYW1lIGFuaW1hdGFibGVBdHRyaWJ1dGVGb3JO
YW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guY3BwCmluZGV4IGU2MWU2MWFmZWVkYWEzYTU2YTQ3NWJjYTU5NTFiMGNh
ZTAwZjA1MDEuLmUwYTAzMTJjMzc0ZmE3MGJiNDQwNDk2MTMzZDNkN2EyMGI0OWZkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCkBAIC04NSwyNCArODUsMjQgQEAgYm9v
bCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZs
b2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goU3RyaW5nVmlldyB2YWx1ZSkK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChT
dHJpbmdWaWV3IHZhbHVlKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmco
dmFsdWUsIFsmXShhdXRvIGJ1ZmZlcikgewogICAgICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2Vu
ZXJpYyhidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0ZpdFRv
Vmlld0JveDo6cGFyc2VWaWV3Qm94KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIs
IGJvb2wgdmFsaWRhdGUpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94
OjpwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlciwgYm9vbCB2
YWxpZGF0ZSkKIHsKICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2VuZXJpYyhidWZmZXIsIHZhbGlk
YXRlKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyLCBib29sIHZhbGlkYXRlKQor
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KFN0
cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIsIGJvb2wgdmFsaWRhdGUpCiB7CiAgICAg
cmV0dXJuIHBhcnNlVmlld0JveEdlbmVyaWMoYnVmZmVyLCB2YWxpZGF0ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9W
aWV3Qm94OjpwYXJzZVZpZXdCb3hHZW5lcmljKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlciwgYm9vbCB2YWxpZGF0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveEdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBi
b29sIHZhbGlkYXRlKQogewogICAgIFN0cmluZ1ZpZXcgc3RyaW5nVG9QYXJzZSA9IGJ1ZmZlci5z
dHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAppbmRleCBhZTg4Y2IwNWVhYWU5NGExMzhlZTg0ZjZhYmZiMWE0Y2FhMzgwNDZi
Li5lYjUyM2VkN2ZkY2MxZjdiNWJiOGRhMmFkMzg2YjhhNzNkZTZhMjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC02NCwxMiArNjQsMTIgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNl
Vmlld0JveChTdHJpbmdWaWV3KTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0Jv
eChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVD
aGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gcGFyc2VWaWV3Qm94KFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mLCBib29sIHZhbGlkYXRl
ID0gdHJ1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJp
bmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKIAogcHJpdmF0
ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxGbG9hdFJl
Y3Q+IHBhcnNlVmlld0JveEdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VWaWV3Qm94R2VuZXJpYyhTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwog
CiAgICAgUmVmPFNWR0FuaW1hdGVkUmVjdD4gbV92aWV3Qm94OwogICAgIFJlZjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKaW5kZXggNjgwN2Y2YmI0YjJkODQ0MDAxNTQ5MGRkZWUz
ZTljMWY0ZWQ1MDgyZi4uZDBlMzY4ZmE3NTQwYjMzMTQzNTUyOTgwYzY3YTcwNWMyMTU3MzQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
UmVmPFNWR0hLZXJuRWxlbWVudD4gU1ZHSEtlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdIS2Vy
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8U1ZHS2VybmluZ1Bh
aXI+IFNWR0hLZXJuRWxlbWVudDo6YnVpbGRIb3Jpem9udGFsS2VybmluZ1BhaXIoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTVkdLZXJuaW5nUGFpcj4gU1ZHSEtlcm5FbGVtZW50OjpidWlsZEhvcml6
b250YWxLZXJuaW5nUGFpcigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGJlIHNo
YXJlZCB3aXRoIFNWR1ZLZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyPwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKaW5kZXggOTA4OTBiMjMwNTFmN2Q1NTMwOTY2
ZmFiNjMyMWNkMjJmMjdmNjdkNy4uNTk3MTJlYjM1ZDFlN2QzMzdkZTQxY2M4NTJlOWU0N2I0NjUw
ZDhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBA
QCBjbGFzcyBTVkdIS2VybkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTVkdIS2VybkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBidWls
ZEhvcml6b250YWxLZXJuaW5nUGFpcigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHS2Vy
bmluZ1BhaXI+IGJ1aWxkSG9yaXpvbnRhbEtlcm5pbmdQYWlyKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgU1ZHSEtlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKaW5kZXggNzc0ZjQzZWRkNGExZTY0NWRk
YTYzNDA4NTMyM2E3NzJhYWQyMmUzNC4uMzkwNjEzMzJjYzJmZWE2OWEyZTliOTRhNWU5NDkwMDBk
Njk4YmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCkBAIC0xODEsNyAr
MTgxLDcgQEAgU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkcKICAgICBzZXRWYWx1ZShjb250ZXh0LCB2
YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFNWR0xlbmd0aFZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSwgU3RyaW5nVmlldyB2YWx1ZUFzU3RyaW5n
KQorc3RkOjpvcHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIFN0cmluZ1ZpZXcgdmFsdWVBc1N0cmluZykKIHsK
ICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGggeyBsZW5ndGhNb2RlIH07CiAgICAgaWYgKGxlbmd0
aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAppbmRleCAzN2ZhMjUyZTBiZDY0ODlhNWIxY2EyYzA2ZGQ5
ZWFkYjdkYjNmNGE5Li40NDhiOTRmYzY1ODg0NDE0NGVlOGMzNDhlMTZlZTZmNGNhMWNhOGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgU1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5n
dGhUeXBlLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIFNWR0xl
bmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSA9
IFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90
aGVyKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gY29uc3RydWN0KFNW
R0xlbmd0aE1vZGUsIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR0xl
bmd0aFZhbHVlPiBjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZSwgU3RyaW5nVmlldyk7CiAgICAgc3Rh
dGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBTdHJpbmdWaWV3LCBT
VkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgPSBTVkdMZW5ndGhO
ZWdhdGl2ZVZhbHVlc01vZGU6OkFsbG93KTsKICAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgYmxl
bmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywg
ZmxvYXQgcHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFy
c2VyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
Y3BwCmluZGV4IGU1NDY1MzVmZjgwYjRkMWYxZTg2M2VmZDBjOGIyYzQxN2U5YWU1ZDcuLjdmMGU0
NTk5YTQwOTVmYTA0MmJiM2RlNTFmZjljZWU3ZDJmZjY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBGbG9hdFR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUmFuZ2UoY29uc3QgRmxv
YXRUeXBlJiB4CiAvLyBhdCBhIGhpZ2hlciBwcmVjaXNpb24gaW50ZXJuYWxseSwgd2l0aG91dCBh
bnkgdW5uZWNlc3NhcnkgcnVudGltZSBjb3N0IG9yIGNvZGUKIC8vIGNvbXBsZXhpdHkuCiAvLyBG
SVhNRTogQ2FuIHRoaXMgYmUgc2hhcmVkL3JlcGxhY2VkIHdpdGggbnVtYmVyIHBhcnNpbmcgaW4g
V1RGPwotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlw
ZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRUeXBlPiBnZW5lcmljUGFyc2VOdW1iZXIo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGlu
Z1BvbGljeSBza2lwID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZsb2F0VHlwZT4gZ2VuZXJpY1BhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCA9
IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKQogewogICAgIEZsb2F0VHlwZSBudW1iZXIgPSAw
OwogICAgIEZsb2F0VHlwZSBpbnRlZ2VyID0gMDsKQEAgLTEzOSwxOSArMTM5LDE5IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4g
c3RhdGljIE9wdGlvbmFsPEZsCiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIAotT3B0aW9uYWw8Zmxv
YXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIsIFN1ZmZp
eFNraXBwaW5nUG9saWN5IHNraXApCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihT
dHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBz
a2lwKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKIH0K
IAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+
JiBidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5IHNraXApCitzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyLCBTdWZmaXhT
a2lwcGluZ1BvbGljeSBza2lwKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVm
ZmVyLCBza2lwKTsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKK3N0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBp
bmdQb2xpY3kgc2tpcCkKIHsKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0
cmluZywgW3NraXBdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxmbG9hdD4geworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbc2tpcF0oYXV0byBidWZmZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsKICAgICAgICAgYXV0byByZXN1bHQgPSBnZW5lcmljUGFy
c2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKICAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjEsNyArMTYxLDcgQEAgT3B0aW9u
YWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tp
cHBpbmdQb2xpY3kgc2tpcCkKIAogLy8gb25seSB1c2VkIHRvIHBhcnNlIGxhcmdlQXJjRmxhZyBh
bmQgc3dlZXBGbGFnIHdoaWNoIG11c3QgYmUgYSAiMCIgb3IgIjEiCiAvLyBhbmQgbWlnaHQgbm90
IGhhdmUgYW55IHdoaXRlc3BhY2UvY29tbWEgYWZ0ZXIgaXQKLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZm
ZXIuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4MiwyMiArMTgy
LDIyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBn
ZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpCiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLU9w
dGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyKQorc3RkOjpvcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlQXJjRmxhZyhidWZm
ZXIpOwogfQogCi1PcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxVQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGdlbmVyaWNQYXJz
ZUFyY0ZsYWcoYnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+
IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQorc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51
bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPHN0ZDo6
cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2lu
ZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9h
dCwgZmxvYXQ+PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAg
ICAgIGlmICgheCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTYsMTIg
KzIxNiwxMiBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJP
cHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdAogICAgIH0pOwogfQogCi1PcHRpb25h
bDxGbG9hdFBvaW50PiBwYXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcp
CiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0
byBidWZmZXIpIC0+IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHsKKyAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4gewogICAgICAgICBpZiAoIXNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjM2LDkgKzIzNiw5IEBA
IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5n
KQogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJz
aW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEZsb2F0UmVjdD4geworICAg
IHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikg
LT4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzKGJ1ZmZlcik7CiAgICAgICAgIAogICAgICAgICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZm
ZXIpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNv
bnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxT
dHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gcGFyc2VHbHlwaE5hbWUoY29uc3QgU3RyaW5nVmlldyYg
c3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNz
aW5nLgogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJz
ZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiAKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VV
bmljb2RlUmFuZ2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmlj
b2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4gYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGhSZW1h
aW5pbmcoKTsKICAgICBpZiAobGVuZ3RoIDwgMiB8fCBidWZmZXJbMF0gIT0gJ1UnIHx8IGJ1ZmZl
clsxXSAhPSAnKycpCkBAIC0zNjEsNyArMzYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UK
ICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2Vz
LCBIYXNoU2V0PFN0cmluZz4+PiBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhh
c2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBt
aXNzaW5nLgogCkBAIC0zOTMsNyArMzkzLDcgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVS
YW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY28KICAg
ICB9KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFBv
aW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBh
dXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgIGlmICgheCkKQEAgLTQwNiwxMiArNDA2
LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8
RmxvYXRQb2ludD4gZ2VuZXJpY1BhcnNlRmxvYXRQCiAgICAgcmV0dXJuIEZsb2F0UG9pbnQgeyAq
eCwgKnkgfTsKIH0KIAotT3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewog
ICAgIHJldHVybiBnZW5lcmljUGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZsb2F0UG9pbnQoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNl
RmxvYXRQb2ludChidWZmZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGll
cy5oCmluZGV4IDI3ZmE5ZDRkMTk3ZDc3NzQ0MjY4ZDVjNGE4Mzg3YzAzODFlODQxN2QuLmFiZGMw
Yjk2ZjRiODc5YjExM2U1ZmNkMzIxNGJiM2I1ODBiNzg1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmgKQEAgLTM3LDIzICszNywyMyBAQCBlbnVtIGNsYXNzIFN1ZmZp
eFNraXBwaW5nUG9saWN5IHsKICAgICBTa2lwCiB9OwogCi1PcHRpb25hbDxmbG9hdD4gcGFyc2VO
dW1iZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9
IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKTsKLU9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3Vm
Zml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNv
bnN0IFN0cmluZ1ZpZXcmLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9IFN1ZmZpeFNraXBwaW5nUG9s
aWN5OjpTa2lwKTsKK3N0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNp
bmdCdWZmZXI8TENoYXI+JiwgU3VmZml4U2tpcHBpbmdQb2xpY3kgPSBTdWZmaXhTa2lwcGluZ1Bv
bGljeTo6U2tpcCk7CitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQ
b2xpY3k6OlNraXApOworc3RkOjpvcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3Ry
aW5nVmlldyYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNr
aXApOwogCi1PcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRp
b25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcm
KTsKIAotT3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENo
YXI+Jik7Ci1PcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQ
YXJzaW5nQnVmZmVyPFVDaGFyPiYpOwogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZVBvaW50
KGNvbnN0IFN0cmluZ1ZpZXcmKTsKLU9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25z
dCBTdHJpbmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmKTsKIAotT3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0
cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Ci1PcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZs
b2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Citz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVm
ZmVyPFVDaGFyPiYpOwogCi1PcHRpb25hbDxzdGQ6OnBhaXI8VW5pY29kZVJhbmdlcywgSGFzaFNl
dDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyhjb25zdCBTdHJpbmdWaWV3Jik7
Ci1PcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3Ry
aW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpOworc3Rk
OjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKIAogCiAvLyBTVkcgYWxsb3dzIHNldmVyYWwgZGlmZmVyZW50IHdoaXRlc3BhY2UgY2hh
cmFjdGVyczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCmluZGV4IDUxNTBjODI3
ZDU0NjNjOTYyMDE3OTFhZjk0NGU3Y2VlN2FiODllZTguLjM0NzgxZDAzZmQ5YjJmMjUyODMzZmM2
MWI1NjI0NTQ1NThjOGUzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
QmxlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApA
QCAtMTIwLDcgKzEyMCw3IEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb24+IHVzaW5nIEludm9rZVJlc3VsdCA9IHR5cGVuYW1lIHN0ZDo6aW52b2tl
X3Jlc3VsdF90PEZ1bmN0aW9uLCBTVkdQYXRoU291cmNlPjo6dmFsdWVfdHlwZTsKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uPiB1c2luZyBSZXN1bHRQYWlyID0gc3RkOjpwYWlyPEludm9rZVJl
c3VsdDxGdW5jdGlvbj4sIEludm9rZVJlc3VsdDxGdW5jdGlvbj4+OwotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rpb24+IHN0YXRpYyBPcHRpb25hbDxSZXN1bHRQYWlyPEZ1bmN0aW9uPj4gcHVsbEZy
b21Tb3VyY2VzKFNWR1BhdGhTb3VyY2UmIGZyb21Tb3VyY2UsIFNWR1BhdGhTb3VyY2UmIHRvU291
cmNlLCBGdW5jdGlvbiYmIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdFBhaXI8RnVuY3Rpb24+PiBwdWxsRnJvbVNvdXJjZXMo
U1ZHUGF0aFNvdXJjZSYgZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSYgdG9Tb3VyY2UsIEZ1bmN0
aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgSW52b2tlUmVzdWx0PEZ1bmN0aW9uPiBmcm9tUmVzdWx0
OwogICAgIGlmIChmcm9tU291cmNlLmhhc01vcmVEYXRhKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IGRmNTY3YTYzYTlkOWFkODNh
MGNjNjU0ZTNkYjljZWU2OTU4N2E4OTguLjk0NmVlMDQ3Y2UwOTAzODVjNzM5Y2NhY2RkMzQ3ZjVh
NzhlZWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291
cmNlLmNwcApAQCAtMzksNDAgKzM5LDQwIEBAIFNWR1BhdGhTZWdUeXBlIFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdTZWdtZW50VHlwZSgpKTsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZVNWR1NlZ21l
bnRUeXBlKCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdTZWdtZW50VHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNl
TW92ZVRvU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21l
bnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogewogICAg
IE1vdmVUb1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZs
b2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNv
dXJjZTo6TGluZVRvU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRv
U2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogewogICAgIExpbmVU
b1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZsb2F0UG9p
bnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxp
bmVUb0hvcml6b250YWxTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVU
b0hvcml6b250YWxTZWdtZW50KCkKIHsKICAgICBMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCBzZWdt
ZW50OwogICAgIHNlZ21lbnQueCA9IHJlYWRGbG9hdCgpOwogICAgIHJldHVybiBzZWdtZW50Owog
fQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1Bh
dGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCitzdGQ6Om9w
dGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudD4gU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKIHsKICAgICBMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnkgPSByZWFkRmxvYXQoKTsKICAg
ICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1
YmljU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU2Vn
bWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+
IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogewog
ICAgIEN1cnZlVG9DdWJpY1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnBvaW50MSA9IHJl
YWRGbG9hdFBvaW50KCk7CkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZl
CiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkKIHsKICAgICBDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50
IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5wb2ludDIgPSByZWFkRmxvYXRQb2ludCgpOwpAQCAtODks
NyArODksNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdt
ZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFycwogICAgIHJldHVybiBzZWdtZW50Owog
fQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQorc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQogewogICAg
IEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5wb2ludDEgPSBy
ZWFkRmxvYXRQb2ludCgpOwpAQCAtOTcsMTQgKzk3LDE0IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VDCiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpCiB7CiAgICAgQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50
ID0gcmVhZEZsb2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VBcmNUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21l
bnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiB7CiAgICAg
QXJjVG9TZWdtZW50IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5yeCA9IHJlYWRGbG9hdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaAppbmRleCAyNjRkZmYy
NTU4ZTQwMzViZmQ5MWRiMDdkMThlNGM1NmRjZGJjNmExLi5iNWU5NDMzOTlmMmRkZTNkODEzOGE3
YWEwNGNiNmUwZTIxZjEzYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UuaApAQCAtMzQsMTYgKzM0LDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3Zl
VG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgU1ZHUGF0aFNlZ1R5cGUg
bmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxNb3Zl
VG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5l
VG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5l
VG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFs
OwotICAgIE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNh
bFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJz
ZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNT
bW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKLSAg
ICBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdt
ZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0
aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRv
VmVydGljYWxTZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdt
ZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50
PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsOwogCiAjaWYg
Q09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3QuaAppbmRleCBjZTg3YjBiNjJlNjY5Zjg3ZDMzOTQzNGM0NGYwNzQ1
YjVkOWM1NzBkLi4xNmIzNTRlMjkxYzc4ZWQxYmU3OTQ0YzM4MjMxNDAxNjU4ODUxODI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaApAQCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gbV9wYXRoQnl0ZVN0cmVhbTsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPFBhdGg+IG1fcGF0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
UGF0aD4gbV9wYXRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFNvdXJjZS5jcHAKaW5kZXggNjY0NWM2NzNjZjY0N2Q0ZDJjNTMwNDBiNTVjNTU2NDA3YzNkNmZi
NC4uZWJmOTM3YjhkZTllNThmYWM5MWQzMTU0ODY1MWMyMzU5MjE5Y2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNW
R1BhdGhTZWdUeXBlIFNWR1BhdGhTZWdMaXN0U291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2Vn
VHlwZSkKICAgICByZXR1cm4gcGF0aFNlZ1R5cGU7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTZWdU
eXBlPiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSgpCitzdGQ6Om9w
dGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdt
ZW50VHlwZSgpCiB7CiAgICAgbV9zZWdtZW50ID0gbV9wYXRoU2VnTGlzdC5hdChtX2l0ZW1DdXJy
ZW50KTsKICAgICBTVkdQYXRoU2VnVHlwZSBwYXRoU2VnVHlwZSA9IHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdUeXBlPihtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkpOwpAQCAtNTYsNyArNTYsNyBAQCBP
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlU1ZHU2Vn
bWVudFR5cGUoKQogICAgIHJldHVybiBwYXRoU2VnVHlwZTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0
aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlTW92ZVRv
U2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogewogICAgIEFTU0VSVCht
X3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNl
Z01vdmVUb0FicyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ01vdmVUb1Jl
bCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21l
bnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoCiAgICAgcmV0dXJu
IHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VM
aW5lVG9TZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50KTsKICAgICBBU1NFUlQobV9z
ZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9BYnMgfHwgbV9zZWdtZW50LT5w
YXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9SZWwpOwpAQCAtNzgsNyArNzgsNyBAQCBPcHRp
b25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6
cGFyc2VMaW5lVG9TZWdtZW50KAogICAgIHJldHVybiBzZWdtZW50OwogfQogCi1PcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2U6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBh
cnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwog
ICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0xpbmVUb0hvcml6
b250YWxBYnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9Ib3Jp
em9udGFsUmVsKTsKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmUKICAg
ICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVy
dGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNl
Z21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21l
bnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7
CiAgICAgQVNTRVJUKG1fc2VnbWVudCk7CiAgICAgQVNTRVJUKG1fc2VnbWVudC0+cGF0aFNlZ1R5
cGUoKSA9PSBQYXRoU2VnTGluZVRvVmVydGljYWxBYnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlw
ZSgpID09IFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0
aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlz
dFNvdXJjZTo6cGFyc2VMaW5lVG8KICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6
OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9D
dWJpY1NlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3Nl
Z21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FicyB8fCBtX3NlZ21l
bnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbCk7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZH
UGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVUb0MKICAgICByZXR1cm4gc2VnbWVudDsKIH0K
IAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZH
UGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6
Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1Bh
dGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKQogewogICAg
IEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkg
PT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBl
KCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbCk7CkBAIC0xMjUsNyArMTI1LDcgQEAg
T3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0
aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3UKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0
U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNl
OjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50
KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1JlbCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1
cnYKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdt
ZW50KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhT
ZWdMaXN0U291cmNlOjpwYXIKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VBcmNU
b1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiB7CiAgICAgQVNTRVJUKG1f
c2VnbWVudCk7CiAgICAgQVNTRVJUKG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2Vn
QXJjQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQXJjUmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKaW5kZXggOTA2NzUyMDczMmVh
MjkyZWRjNGUxMWYyN2ZhNDgwMDkxZjgyMjY4Ny4uMTFkZGJmZTc5OTAzNzE4ZThkNWQxYzU4N2U2
NDZhMDM5ZjhkOTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNl
LmgKQEAgLTM4LDE2ICszOCwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbW92ZVRvTmV4dFRva2Vu
KCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5k
KFNWR1BhdGhTZWdUeXBlKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBw
YXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TW92ZVRvU2VnbWVudD4g
cGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGluZVRvU2VnbWVudD4g
cGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRp
b25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3Vi
aWNTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBm
aW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEFyY1Rv
U2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNW
R1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2Vn
bWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRv
UXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFy
Y1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5hbDsKIAogICAgIGNvbnN0IFNWR1Bh
dGhTZWdMaXN0JiBtX3BhdGhTZWdMaXN0OwogICAgIFJlZlB0cjxTVkdQYXRoU2VnPiBtX3NlZ21l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAppbmRleCA2MDJhNThhODhjZTczY2Q4MDlm
N2VhZGE4OTU4Y2UxMmIwNzNkM2ZhLi43OTY2MDM0YzY2YTNmNmVmYjZhYjM5NjhkNDk2Nzg5MWY3
ZjYwNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU291cmNlLmgKQEAgLTM1LDUxICszNSw1MSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigpID0gMDsKICAgICB2
aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3Vz
Q29tbWFuZCkgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFy
c2VTVkdTZWdtZW50VHlwZSgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSA9IDA7CiAKICAgICBzdHJ1Y3QgTW92ZVRv
U2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQ7CiAgICAgfTsKLSAgICB2
aXJ0dWFsIE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpID0gMDsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdt
ZW50KCkgPSAwOwogCiAgICAgc3RydWN0IExpbmVUb1NlZ21lbnQgewogICAgICAgICBGbG9hdFBv
aW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMaW5lVG9TZWdt
ZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpID0gMDsKIAogICAgIHN0cnVjdCBM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCB7CiAgICAgICAgIGZsb2F0IHggPSAwOwogICAgIH07Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9I
b3Jpem9udGFsU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSA9IDA7CiAK
ICAgICBzdHJ1Y3QgTGluZVRvVmVydGljYWxTZWdtZW50IHsKICAgICAgICAgZmxvYXQgeSA9IDA7
CiAgICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFy
c2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7
CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1YmljU2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQxOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MjsKICAgICAgICAgRmxvYXRQb2ludCB0
YXJnZXRQb2ludDsKICAgICB9OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8Q3VydmVUb0N1YmljU2Vn
bWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSA9
IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCB7CiAgICAgICAgIEZs
b2F0UG9pbnQgcG9pbnQyOwogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1
cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dCgpID0gMDsKIAogICAgIHN0cnVjdCBDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCB7CiAgICAgICAg
IEZsb2F0UG9pbnQgcG9pbnQxOwogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAg
IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSA9
IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgewogICAgICAg
ICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
U2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSA9IDA7
CiAKICAgICBzdHJ1Y3QgQXJjVG9TZWdtZW50IHsKICAgICAgICAgZmxvYXQgcnggPSAwOwpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgc3dlZXAgPSBmYWxzZTsKICAgICAg
ICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKICAgICB9OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8
QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcAppbmRleCA5YmJlOTMzOWQ2MmE1ZjIzMmJjZmEwODlmOGY2NzMwMWJhNGUyZTg0Li5m
ZjFiZjJhOTE2MDU4M2Q5ZjNmNDQ1MmY0Y2M2YTE2ZWEyZjZjMjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZH
UGF0aFN0cmluZ1NvdXJjZTo6bW92ZVRvTmV4dFRva2VuKCkKICAgICByZXR1cm4gc2tpcE9wdGlv
bmFsU1ZHU3BhY2VzKG1fYnVmZmVyMTYpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBuZXh0Q29tbWFuZEhlbHBl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIFNWR1BhdGhTZWdU
eXBlIHByZXZpb3VzQ29tbWFuZCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gbmV4dENvbW1hbmRIZWxwZXIoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBTVkdQYXRoU2VnVHlwZSBw
cmV2aW91c0NvbW1hbmQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIHJlbWFpbmluZyBjb29yZGluYXRl
cyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgogICAgIGlmICgoKmJ1ZmZlciA9PSAnKycgfHwgKmJ1
ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAnLicgfHwgaXNBU0NJSURpZ2l0KCpidWZmZXIpKQpA
QCAtODYsNyArODYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGPiBkZWNsdHlwZShhdXRvKSBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzZShGJiYgZnVuY3RvcikKICAgICByZXR1cm4gZnVuY3Rvciht
X2J1ZmZlcjE2KTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlw
ZT4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSgpCiB7CiAgICAgcmV0
dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gU1ZHUGF0aFNlZ1R5cGUgewogICAgICAgICBh
dXRvIGNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0xMzcsOSArMTM3LDkgQEAgT3B0aW9uYWw8U1ZH
UGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQog
ICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVU
b1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlv
bmFsPE1vdmVUb1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAt
PiBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2lu
dCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1MCw5ICsxNTAsOSBAQCBPcHRp
b25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpw
YXJzZU1vdmVUb1NlZ21lbnQoKQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNl
OjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQo
KQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShh
dXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFy
c2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHsKICAg
ICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAg
ICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE2Myw5ICsxNjMsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBT
VkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogICAgIH0pOwogfQogCi1P
cHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0
cmluZ1NvdXJjZTo6cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291
cmNlOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKIHsKLSAgICByZXR1cm4gcGFyc2Uo
W10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gewor
ICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8TGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVy
KTsKICAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE3Niw5ICsxNzYsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVAogICAgIH0pOwogfQogCi1P
cHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhTdHJp
bmdTb3VyY2U6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpw
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8m
IGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvVmVydGljYWxTZWdtZW50PiB7CisgICAgcmV0dXJu
IHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNl
Z21lbnQ+IHsKICAgICAgICAgYXV0byB5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAg
aWYgKCF5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4OSw5ICsxODks
OSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVgogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJz
ZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1Nl
Z21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFs
PEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVy
KSAtPiBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byBw
b2ludDEgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIE9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3Vy
Y2U6OnBhcnNlQ3VydmVUb0N1CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3Vy
dmVUb0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVU
b0N1YmljU21vb3RoU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZl
cikgLT4gT3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4geworICAgIHJldHVybiBw
YXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3Ro
U2VnbWVudD4gewogICAgICAgICBhdXRvIHBvaW50MiA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIp
OwogICAgICAgICBpZiAoIXBvaW50MikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yMzAsOSArMjMwLDkgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXIKICAgICB9KTsKIH0K
IAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQorc3RkOjpvcHRp
b25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmlu
Z1NvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBh
cnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+
IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEN1
cnZlVG9RdWFkcmF0aWNTZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcG9pbnQxID0gcGFyc2VGbG9h
dFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQxKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTI0OCw5ICsyNDgsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNl
OjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2
ZQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFk
cmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlVG9RdWFk
cmF0aWNTbW9vdGhTZWdtZW50KCkKIHsKLSAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVy
KSAtPiBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4geworICAgIHJldHVy
biBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQ
b2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2MSw5ICsyNjEsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291
cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6
cGFycwogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+
IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQXJjVG9TZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUFy
Y1RvU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0
aW9uYWw8QXJjVG9TZWdtZW50PiB7CisgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikg
LT4gc3RkOjpvcHRpb25hbDxBcmNUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byByeCA9IHBhcnNl
TnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICghcngpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgKaW5kZXgg
Zjg4YjFhM2MzM2IyYzA4ZGJlNjU3NzBiZDY3NzgyMWU2MzUyN2JjYS4uZDFmMzhmMTQ1ODYxMzQz
ZTRkZmFlZDQ0ZDMxMDk3MDM5Nzg4ZDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTdHJpbmdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0
cmluZ1NvdXJjZS5oCkBAIC0zNSwxNiArMzUsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdmVU
b05leHRUb2tlbigpIGZpbmFsOwogICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1Bh
dGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxTVkdQYXRo
U2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpIGZpbmFsOwotICAgIE9wdGlvbmFsPE1vdmVU
b1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVU
b1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVU
b0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7
Ci0gICAgT3B0aW9uYWw8TGluZVRvVmVydGljYWxTZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2Fs
U2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9DdWJpY1Nt
b290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsOwotICAg
IE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21l
bnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRp
b25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJjVG9TZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBm
aW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVUb0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxp
bmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21l
bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+
IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50
PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJjVG9TZWdtZW50KCkgZmluYWw7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gZGVjbHR5cGUoYXV0bykgcGFyc2UoRnVuY3Rpb24m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUuaAppbmRleCA3NmM4ODgzOTc2NzYxM2UzOTFlOGRmNDE1ZDY0YWJkYmI2ODQ5YzAxLi41MTQw
ZjY5ZGY4Mjc2YjVlNzQzNmIyOGZkNTRjODMxN2MyOTlhYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiB0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWU+IHsKICAgICBzdGF0aWMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSgp
OyB9CiAgICAgc3RhdGljIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUo
c3RyaW5nKTsgfQotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5p
dGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAppbmRleCBlNWI4ZmVkZDAyZjM0ZWYxOWJkN2NlYzZiYTc4MmU4MDk3NjM5NzA0Li4xOGMzM2I3
Y2M5YzNmZmIyN2E0ZGNmMWYwYWZjZDlkMjgwYmQ3YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0
ZToKIAogICAgIHVpbnQzMl90IGNhbGN1bGF0ZUNoZWNrc3VtKHNpemVfdCBzdGFydGluZ09mZnNl
dCwgc2l6ZV90IGVuZGluZ09mZnNldCkgY29uc3Q7CiAKLSAgICB2b2lkIHByb2Nlc3NHbHlwaEVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0
IFNWR0dseXBoRWxlbWVudCosIGZsb2F0IGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQg
ZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5nJiBjb2RlcG9pbnRzLCBPcHRpb25h
bDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7CisgICAgdm9pZCBwcm9jZXNzR2x5cGhFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdH
bHlwaEVsZW1lbnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1
bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKFNWR1RvT1RG
Rm9udENvbnZlcnRlcjo6KkZvbnRBcHBlbmRpbmdGdW5jdGlvbikoKTsKICAgICB2b2lkIGFwcGVu
ZFRhYmxlKGNvbnN0IGNoYXIgaWRlbnRpZmllcls0XSwgRm9udEFwcGVuZGluZ0Z1bmN0aW9uKTsK
QEAgLTIyNCwxMyArMjI0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZFZhbGlkQ0ZG
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAgVmVjdG9yPGNoYXI+IHRyYW5zY29kZUdseXBo
UGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhF
bGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3Q7CisgICAgVmVj
dG9yPGNoYXI+IHRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1l
bnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4m
IGJvdW5kaW5nQm94KSBjb25zdDsKIAogICAgIHZvaWQgYWRkQ29kZXBvaW50UmFuZ2VzKGNvbnN0
IFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PEdseXBoPiYgZ2x5cGhTZXQpIGNvbnN0OwogICAgIHZv
aWQgYWRkQ29kZXBvaW50cyhjb25zdCBIYXNoU2V0PFN0cmluZz4mIGNvZGVwb2ludHMsIEhhc2hT
ZXQ8R2x5cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAgICAgdm9pZCBhZGRHbHlwaE5hbWVzKGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgZ2x5cGhOYW1lcywgSGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBj
b25zdDsKICAgICB2b2lkIGFkZEtlcm5pbmdQYWlyKFZlY3RvcjxLZXJuaW5nRGF0YT4mLCBTVkdL
ZXJuaW5nUGFpciYmKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzaXplX3QgYXBw
ZW5kS0VSTlN1YnRhYmxlKE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2Vybmlu
Z1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVyYWdlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzaXplX3QgYXBwZW5kS0VSTlN1YnRhYmxlKHN0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1Bh
aXI+IChUOjoqYnVpbGRLZXJuaW5nUGFpcikoKSBjb25zdCwgdWludDE2X3QgY292ZXJhZ2UpOwog
ICAgIHNpemVfdCBmaW5pc2hBcHBlbmRpbmdLRVJOU3VidGFibGUoVmVjdG9yPEtlcm5pbmdEYXRh
PiwgdWludDE2X3QgY292ZXJhZ2UpOwogCiAgICAgdm9pZCBhcHBlbmRMaWdhdHVyZVN1YnRhYmxl
KHNpemVfdCBzdWJ0YWJsZVJlY29yZExvY2F0aW9uKTsKQEAgLTEwNTMsNyArMTA1Myw3IEBAIHZv
aWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphZGRLZXJuaW5nUGFpcihWZWN0b3I8S2VybmluZ0Rh
dGE+JiBkYXRhLCBTVkdLZXJuaW5nCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgc2l6ZV90IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kS0VSTlN1YnRhYmxlKE9w
dGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVp
bnQxNl90IGNvdmVyYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTVkdU
b09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5TdWJ0YWJsZShzdGQ6Om9wdGlvbmFsPFNWR0tl
cm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVy
YWdlKQogewogICAgIFZlY3RvcjxLZXJuaW5nRGF0YT4ga2VybmluZ0RhdGE7CiAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8VD4obV9mb250RWxlbWVudCkpIHsKQEAgLTEx
MzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jZmZEYXRhLmFwcGVuZChyTW92ZVRv
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kaW5nQm94KCkgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3goKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fYm91bmRpbmdCb3g7CiAgICAgfQpAQCAtMTIyNywxMSArMTIyNywx
MSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxjaGFyPiYgbV9jZmZEYXRhOwogICAgIEZsb2F0UG9p
bnQgbV9zdGFydGluZ1BvaW50OwogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50OwotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbV9ib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbV9ib3VuZGluZ0JveDsKICAgICBmbG9hdCBtX3VuaXRzUGVyRW1TY2FsYXI7CiB9OwogCi1W
ZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZs
b2F0IHdpZHRoLCBjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwg
T3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0CitWZWN0b3I8Y2hhcj4gU1ZH
VG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25z
dCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3QKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0
OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBWZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVy
dGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25zdCBTVkdFbAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5
cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBj
b25zdCBTVkdHbHlwaEVsZW1lbnQqIGdseXBoRWxlbWVudCwgZmxvYXQgZGVmYXVsdEhvcml6b250
YWxBZHZhbmNlLCBmbG9hdCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNv
ZGVwb2ludHMsIE9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KQordm9pZCBTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5
cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCogZ2x5cGhFbGVt
ZW50LCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+JiBib3VuZGluZ0JveCkKIHsKICAgICBib29sIG9rOwogICAgIGZsb2F0IGhvcml6b250YWxB
ZHZhbmNlID0gc2NhbGVVbml0c1BlckVtKGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0cikudG9G
bG9hdCgmb2spKTsKQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVy
dGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5n
CiAgICAgICAgIHZlcnRpY2FsQWR2YW5jZSA9IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2U7CiAgICAg
bV9hZHZhbmNlSGVpZ2h0TWF4ID0gc3RkOjptYXgobV9hZHZhbmNlSGVpZ2h0TWF4LCB2ZXJ0aWNh
bEFkdmFuY2UpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbHlwaEJvdW5kaW5nQm94Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbHlwaEJvdW5kaW5nQm94OwogICAgIGF1dG8g
cGF0aCA9IHRyYW5zY29kZUdseXBoUGF0aHMoaG9yaXpvbnRhbEFkdmFuY2UsIGdseXBoT3JNaXNz
aW5nR2x5cGhFbGVtZW50LCBnbHlwaEJvdW5kaW5nQm94KTsKICAgICBpZiAoIXBhdGguc2l6ZSgp
KSB7CiAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHVzZSBhIGZhbGxiYWNrIGZvbnQgcmF0aGVy
IHRoYW4gdXNlIGEgZm9udCB3aXRob3V0IGFsbCBpdHMgZ2x5cGhzLgpAQCAtMTQwMiw3ICsxNDAy
LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3Qg
U1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogCiAgICAgcG9wdWxhdGVFbXB0eUdseXBoQ2hh
clN0cmluZyhtX2VtcHR5R2x5cGhDaGFyU3RyaW5nLCBzX291dHB1dFVuaXRzUGVyRW0pOwogCi0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gYm91bmRpbmdCb3g7CiAgICAgaWYgKG1fbWlzc2luZ0dseXBoRWxlbWVudCkKICAg
ICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhFbGVtZW50LCBudWxscHRy
LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIFN0cmlu
ZygpLCBib3VuZGluZ0JveCk7CiAgICAgZWxzZSB7CkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBib29s
IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29udmVydFNWR1RvT1RGRm9udCgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChj
b25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXI+
PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252ZXJ0ZXIoZWxlbWVudCk7CiAgICAgaWYgKGNv
bnZlcnRlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RG
Rm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmgKaW5kZXggMzhiOTFkZDM1NmVmMTNmYTY1MDkxZTg0MWRiNWVhODA3Mzk2MjkzOS4uODc1
MTkxMzRiNzI2ODYzZDA5Y2QxM2NjMjg3YWJjMzg1NTJhNGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBAIC0zMSw2ICszMSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQ7CiAKLU9wdGlvbmFsPFZlY3Rvcjxj
aGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpv
cHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVs
ZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuY3BwCmluZGV4IDg5Y2JkNzk2MzNiNzYwYjEwN2MwMDRhNGYyYTVjMjBjNmM0
Mjg3ZjYuLjUxMzJiYmVkNzVkMTFlZTBhZDU5ZmM1MGU3ZThiMWRlZWM3M2NmN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGludCBwYXJzZVRyYW5zZm9ybVBhcmFt
TGlzdChTdHJpbmdQYXJzaW4KIHN0YXRpYyBjb25zdGV4cHIgaW50IHJlcXVpcmVkVmFsdWVzRm9y
VHlwZVtdID0gIHsgMCwgNiwgMSwgMSwgMSwgMSwgMSB9Owogc3RhdGljIGNvbnN0ZXhwciBpbnQg
b3B0aW9uYWxWYWx1ZXNGb3JUeXBlW10gPSAgeyAwLCAwLCAxLCAxLCAyLCAwLCAwIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zv
cm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZUdlbmVyaWMoU1ZHVHJhbnNmb3JtVmFsdWU6OlNW
R1RyYW5zZm9ybVR5cGUgdHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU+IHBhcnNlVHJhbnNmb3JtVmFsdWVHZW5lcmljKFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIFN0cmluZ1BhcnNpbmdCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAodHlwZSA9PSBTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlPiBwYXJzZVRyYW5zZm8KICAgICByZXR1
cm4gdHJhbnNmb3JtOwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNm
b3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNm
b3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zv
cm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQ
YXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9y
bVZhbHVlR2VuZXJpYyh0eXBlLCBidWZmZXIpOwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlw
ZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVy
biBwYXJzZVRyYW5zZm9ybVZhbHVlR2VuZXJpYyh0eXBlLCBidWZmZXIpOwogfQpAQCAtMTYzLDcg
KzE2Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4
cHIgQ2hhcmFjdGVyVHlwZSB0cmFuc2xhdGVEZXNjW10KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSByb3RhdGVEZXNjW10gPSAg
eydyJywgJ28nLCAndCcsICdhJywgJ3QnLCAnZSd9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG1hdHJpeERlc2NbXSA9ICB7
J20nLCAnYScsICd0JywgJ3InLCAnaScsICd4J307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
VHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFy
c2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTg4LDE5ICsxODgsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm0K
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBl
KFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3Ry
aW5nLCBbXShhdXRvIGJ1ZmZlcikgewogICAgICAgICByZXR1cm4gcGFyc2VUcmFuc2Zvcm1UeXBl
KGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdU
cmFuc2Zvcm1UeXBlPiBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3Jt
VHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBw
YXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5z
Zm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6
OnBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKGJ1ZmZlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAppbmRleCBiNWIzYWFkOWEzMWU1NTRmMGY0NWQ0
M2RjMmJhMGVlYTg1MDk2NTFkLi5iMDVkN2QzMzAzNTEwNDQ3MmZjOWI0OTRjZjkzMWE4NTQzM2Q0
OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKQEAgLTMxLDEyICszMSwx
MiBAQCBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDogcHVibGljIFNWR0xvY2F0YWJsZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtYWJsZSgpOwogCi0gICAgc3RhdGljIE9wdGlv
bmFsPFNWR1RyYW5zZm9ybVZhbHVlPiBwYXJzZVRyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZh
bHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFy
c2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdU
cmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKIAotICAgIHN0YXRp
YyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFu
c2Zvcm1UeXBlKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TENoYXI+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdUcmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBwYXJz
ZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VU
cmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1T
Y29wZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyB9
CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKaW5kZXggZGQxYjg5
MjBjZDZmMGMwYjg1NmM4ZjJiNDYzNGJhZGE4Y2JhYTA3ZC4uYjQzZTFmMzk0NTUyMTcwMzMxNDNh
MDE3OTg3YjA0MDM3OTBiOWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdWS2VybkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
T3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZLZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtl
cm5pbmdQYWlyKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZLZXJu
RWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogQ2FuIHRoaXMgYmUgc2hhcmVkIHdpdGggU1ZHSEtlcm5FbGVtZW50OjpidWlsZFZlcnRpY2Fs
S2VybmluZ1BhaXI/CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCA0NjIy
N2RkNjQxMmJkMGQ3ZTYwMWUwNTc1ZjBmOTI4ZGFmZDVjNzE5Li40NTExMGJhMGMyZWM3ZGQ0NGFi
YzJmMDJmOTg0OGZhZWFlNTBiMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vktlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5o
CkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIFNWR1ZLZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBT
VkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1ZLZXJuRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgT3B0aW9uYWw8U1ZH
S2VybmluZ1BhaXI+IGJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IGJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFNWR1ZLZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCBkMjdmOGU1
MjJkNzQ2MWU2ZGY5MTc4MGM1Yzk3OTdkMDg5MWExMjI1Li5lMTBlNjg4Mzc4YTg1ZjQzYzRmZWFj
ZDNkNTdlNmIwZDJmMDEwOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9v
bUFuZFBhbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBkaXNhYmxlW10gPSB7
ICdkJywgJ2knLCAncycsICdhJywgJ2InLCAnbCcsICdlJyB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG1hZ25pZnlbXSA9
IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knIH07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFy
c2Vab29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBi
dWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgaWYgKHNraXBDaGFyYWN0
ZXJzRXhhY3RseShidWZmZXIsIGRpc2FibGU8Q2hhcmFjdGVyVHlwZT4pKQogICAgICAgICByZXR1
cm4gU1ZHWm9vbUFuZFBhbkRpc2FibGU7CkBAIC00MSwxMiArNDEsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBw
YXJzZVpvb21BbmQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxTVkda
b29tQW5kUGFuVHlwZT4gU1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNp
bmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBl
PiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hh
cj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhidWZmZXIp
OwogfQogCi1PcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gU1ZHWm9vbUFuZFBhbjo6cGFyc2Va
b29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFNWR1pvb21BbmRQYW5UeXBlPiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2Vab29t
QW5kUGFuR2VuZXJpYyhidWZmZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1pvb21BbmRQYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKaW5k
ZXggMzI2ODMyMTE4NTE0YWU5YjcyM2NiYzc0NmZmYTA5MWU4MGQ5Y2UzYi4uYTEyYjQ2YzI3ZjZi
M2FmNTI5Mzc4NWFjMjUzNmNiMTliNDE0YzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdab29tQW5k
UGFuKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBl
PiBwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IHBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQ
YW5UeXBlPiBwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFu
KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7CiAKIHByaXZhdGU6CiAgICAgU1ZHWm9vbUFu
ZFBhblR5cGUgbV96b29tQW5kUGFuIHsgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHWm9vbUFuZFBhblR5
cGU+Ojppbml0aWFsVmFsdWUoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IDkwZDUy
ODY4YWNjMzIxNzcyNTk4NGViYWY0ZDFjNDY2NGMwZWE1MTIuLjVlZGYxYjU1OTk0YjJiMzVhNWRi
NzYzMDExNmVkZDA0MDYwZGQyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTk5LDcg
Kzk5LDcgQEAgcHVibGljOgogICAgIC8vIE1hbmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0
aGUgb3duZXIuCiAgICAgdm9pZCBzZXREaXJ0eSgpIG92ZXJyaWRlIHsgbV9zdGF0ZSA9IFNWR1By
b3BlcnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQotICAgIE9wdGlv
bmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByaW1pdGl2ZVByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKaW5kZXggZWUxMWU2ZThiNjMxNGNkYjA4OWI4YjMy
ZGI2OWUwMzU5NWFlMGM0ZS4uZDMxY2RlMzY3NGYwOWM2MjlmOWFiY2UxYzA2OTkwNTAxMWQyMTVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cmltaXRpdmVQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KICAgICB2b2lk
IHNldERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNldERpcnR5KCk7IH0KICAgICBib29s
IGlzRGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsg
fQotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3lu
Y2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0K
IAogICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgog
ICAgIGNvbnN0IFByb3BlcnR5VHlwZSYgY3VycmVudFZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAppbmRleCBk
MDFjYTRmYmRkODY0ZmIxNDE5NDE4OTcyMTMxY2I4YzNlMTFkZDM3Li43MWRkNDJhOWVjN2E0NDIz
OWJhZjBmOGI4MTc0YTM3MTBjODVjNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBDb250cm9sIHRoZSBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiB0aGUgYXR0cmli
dXRlIGFuZCBpdHMgcmVmbGVjdGlvbiBpbiBiYXNlVmFsLgogICAgIHZpcnR1YWwgYm9vbCBpc0Rp
cnR5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlydHko
KSB7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5j
aHJvbml6ZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIAogICAgIC8vIENvbnRyb2wg
dGhlIGFuaW1hdGlvbiBsaWZlIGN5Y2xlLgogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7
IHJldHVybiBtX2FuaW1hdG9ycy5jb21wdXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5o
CmluZGV4IDNlZDllZjAwN2M4MTZkNjYwY2Q1YWIxMDE2YWIyMTI3MTMzN2VmODAuLmNiMDcwZDBi
NTI0YzIzZTE5YTEzMzRhM2I2ZjAzYzNhMjFiZGUxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5o
CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbmNlLT5pbnN0YW5j
ZVN0b3BBbmltYXRpb24oKnRoaXMpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxj
dWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fZnVuY3Rpb24uY2FsY3VsYXRlRGlzdGFuY2UodGFyZ2V0RWxlbWVudCwg
ZnJvbSwgdG8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oCmluZGV4IDgyNGFiNDk2N2FhNmIxN2ZhOWQ4
NjNkZWUwZmJkZjZlYThmYjU2MTUuLmY1NDY2MDhlNWU2NmU0YjUwYjBjODg3MDMzMmMzOGY4Mjdl
MjhmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
TWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KICAgICB2b2lkIHNldERp
cnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNldERpcnR5KCk7IH0KICAgICBib29sIGlzRGly
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsgfQotICAg
IE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VW
YWwtPnN5bmNocm9uaXplKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25p
emUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KIAogICAg
IC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgogICAgIGNv
bnN0IExpc3RUeXBlJiBjdXJyZW50VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWly
QWNjZXNzb3JJbXBsLmgKaW5kZXggOTM0YWMxZDNkYTJhOTZkNWQ2ODk3ZTVjOTQ3NDk2NGVkOGM3
ODc4MC4uYzczMGQ3ZTg5YjUzMDQ2MzE3NTc0YjEzYWIyYWQ0YzExMzYyN2UwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
Y2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGFuaW1hdGVkUHJvcGVydHkuc2V0RGlydHkoKTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZp
bmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlw
ZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBib29sIGRpcnR5MSA9IHByb3Bl
cnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIo
b3duZXIpLT5pc0RpcnR5KCk7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdGV4
cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigp
IHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZEludGVnZXJQYWly
QWNjZXNzb3IsIHByb3BlcnR5MSwgcHJvcGVydHkyPigpOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmIG93bmVyKSBjb25zdCBm
aW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5
cGUmIG93bmVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9w
ZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHky
KG93bmVyKS0+aXNEaXJ0eSgpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRv
bigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZE51bWJlclBh
aXJBY2Nlc3NvciwgcHJvcGVydHkxLCBwcm9wZXJ0eTI+KCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0
IGZpbmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVy
VHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBib29sIGRpcnR5MSA9IHBy
b3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0
eTIob3duZXIpLT5pc0RpcnR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCmluZGV4IDg4MWM0ZDBhNTEwZGI0
NWRlODg0MGExMzQ3NzYwZTJkMmI5NjdiMDUuLjMyMjA1N2RlMDQ0MDZmZjdlZTVmOTUwMjgxYjE5
NmUyZDBlYmJkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICAvLyBNYW5hZ2luZyB0aGUgcmVsYXRpb25zaGlwIHdpdGggdGhlIG93bmVyLgogICAgIHZv
aWQgc2V0RGlydHkoKSBvdmVycmlkZSB7IG1fYmFzZVZhbC0+c2V0RGlydHkoKTsgfQogICAgIGJv
b2wgaXNEaXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+aXNEaXJ0eSgp
OyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
eW5jaHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsg
fQogCiAgICAgLy8gVXNlZCBieSBSZW5kZXJTVkdFbGVtZW50cyBhbmQgRHVtcFJlbmRlclRyZWUu
CiAgICAgY29uc3QgVmFsdWVUeXBlJiBjdXJyZW50VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRp
dGl2ZVZhbHVlRnVuY3Rpb24uaAppbmRleCAyZWMyM2QzNzQ1MTEzZDEwMWVkODJjOGE4YWEwOGYx
ZjIwNzIzNWJkLi44NTgxOGI4MzdjMWFlYzhmZmU0NjkxZjM0MTViY2ZiYTEyN2FjMmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBWYWx1ZVR5cGUgbV9mcm9tOwogICAgIFZhbHVlVHlwZSBtX3RvOwotICAgIE9w
dGlvbmFsPFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlvbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKaW5kZXggNTQ4YjkzOWYxOGE2YzczZjdjYjFh
YmM3Y2Y3ZDU4M2I3MmJlOTBkMC4uMDAyYTI4MTY2NzNkYjMwMzQwOTdhMmYyY2M5ZTUxYzYwNjM2
MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6Y29sb3JGcm9t
U3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKICAgICByZXR1cm4geyB9Owog
fQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxh
dGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcm
IHRvKSBjb25zdAorc3RkOjpvcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0
aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBj
b25zdCBTdHJpbmcmIHRvKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZUludGVn
ZXI8aW50Pih0bykudmFsdWVfb3IoMCkgLSBwYXJzZUludGVnZXI8aW50Pihmcm9tKS52YWx1ZV9v
cigwKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXgg
OTY5Nzk5YmIwMGI1ZmRkOTk2NTE4NGJmYjdlMmY2NzI0MDQwMTUyMC4uMDM3ZDcyMjgyZTA0NjEx
MWNkZTBlNDQyYWUwNGZjNWUzMWVmN2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFuaW1hdGVk
ID0gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KHN0ZDo6bHJvdW5k
KHJlZCksIHN0ZDo6bHJvdW5kKGdyZWVuKSwgc3RkOjpscm91bmQoYmx1ZSksIHN0ZDo6bHJvdW5k
KGFscGhhKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNl
KFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIENvbG9yIGZyb21Db2xvciA9IENTU1BhcnNlcjo6cGFyc2VD
b2xvcihmcm9tLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNW
YWxpZCgpKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYW5pbWF0ZWQgPSBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihCYXNlOjphbmltYXRlKHByb2dyZXNzLCByZXBlYXRDb3Vu
dCwgbV9mcm9tLCBtX3RvLCB0b0F0RW5kT2ZEdXJhdGlvbigpLCBhbmltYXRlZCkpKTsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZEZyb21B
bmRUb1ZhbHVlcyhTVkdFbGVtZW50KikgZmluYWwKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGFuaW1hdGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwg
bV9sZW5ndGhNb2RlIH07CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURp
c3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29u
c3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBj
YWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcm
IGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGF1
dG8gZnJvbUxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CkBAIC0y
MzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICBhbmltYXRlZCA9IEJhc2U6OmFuaW1hdGUo
cHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCBtX3RvLCB0b0F0RW5kT2ZEdXJhdGlvbigpLCBh
bmltYXRlZCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNl
KFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZU51bWJlcih0bykudmFs
dWVfb3IoMCkgLSBwYXJzZU51bWJlcihmcm9tKS52YWx1ZV9vcigwKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgK
aW5kZXggOTAwNThhNTJhNmNmMGMxOTdjM2ZiZWMzOGM5NTcxNzc5ZGVkZDBmOS4uZTNjMjgxOTlm
ZTg0YTI3YmNjMzkwZTJjNzNhOGRlYzEwNGIxNzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25GdW5jdGlvbi5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4g
eyB9OyB9CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0aW9uRnVuY3Rpb24oQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlKQogICAgICAgICA6IG1fYW5pbWF0aW9uTW9kZShhbmltYXRpb25Nb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRl
QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFu
aW1hdG9yLmgKaW5kZXggZDliMjAzNjAyYzZmOWY1NTk3NTgwZWU0Y2ZlOWQ0ZTBjNTA5YjQ4MS4u
ZTY5ZTE4YzEwMDJjMGIwNmM2M2I0NTQ3Y2ZjNGM1ZWY4N2QxNTZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSA9
IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4g
eyB9OyB9CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5p
YW10b3IoY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggMzNhZjViZWY5MjMwYTZmZTU0
OWY3YjE3OTVhMDJiYzVmODUzY2UwZC4uMTYzN2Y3ZTI0MDJiYTQwZWVlYjA0MzMxZGFkMDFjYzI2
Nzk0YzBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVt
YmVyQWNjZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1i
ZXJBY2Nlc3Nvci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
bWF0Y2hlcyhjb25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwg
Y29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldERpcnR5KGNvbnN0IE93bmVyVHlwZSYsIFNWR0FuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHkpIGNvbnN0IHsgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgp
OyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVy
VHlwZSYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5p
bWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBB
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYs
IFNWR0F0dHJpYnV0ZUFuaW1hdG9yJikgY29uc3QgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IDhl
MmY3NmRjYWI0ZTkwZmIzOGViMzM5NjllYTY1YzA3MDIyNDUzODcuLjM3NjA3NTBkMmQ3NGIyNDMy
ZGNiMDE5YWE5NzdhZWUwMjBlMTIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcHJvcGVydHkob3duZXIpLT5kZXRhY2goKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIp
IGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNv
bnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gcHJvcGVydHkob3duZXIpLT5zeW5jaHJvbml6ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4IGNlM2MyYjI3MWQ5YTIzMGI0ZWQw
MGMwOWVmMWU3MThlNTk5NTYwN2MuLjZlY2JkODQ1MDVhODU4MTJhYTFmMjJjMTUzYjc2YjFmNGQ5
YTdlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0
dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaGVyZS4KICAgICBib29sIGlzRGlydHkoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgdm9p
ZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9Ci0gICAg
T3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFNWR1Byb3BlcnR5
U3RhdGU6OkNsZWFuKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaAppbmRl
eCBkOGU4ZWMxNzYzYzkyMDI5YTE5Njg5YmU1N2U2NTFlYjhhYjUwZTgyLi5kYjliN2VmNjNmOWRm
ZDExNzgwMGEyNTFmN2M1OTM5MzM1MTVlNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oCkBAIC02NSw3ICs2NSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmVtb3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KHRhcmdldEVsZW1l
bnQpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYg
dG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlz
dGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25z
dCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZnVu
Y3Rpb24uY2FsY3VsYXRlRGlzdGFuY2UodGFyZ2V0RWxlbWVudCwgZnJvbSwgdG8pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5LmgKaW5kZXggZDQyY2IxNTVjMDVhNTc4NzQzZGM2M2MxMmE5MmNmYTcwNDFj
NDI4Yy4uMzg4YmZkMGIwYWU1NmMyYTNmN2UzYTk4MWYxYjYyZGE3MzVjYzdkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5LmgKQEAgLTIyMyw5ICsyMjMsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBGaW5kcyB0aGUg
cHJvcGVydHkgd2hvc2UgbmFtZSBpcyBhdHRyaWJ1dGVOYW1lIGFuZCByZXR1cm5zIHRoZSBzeW5j
aHJvbml6ZQogICAgIC8vIHN0cmluZyB0aHJvdWdoIHRoZSBhc3NvY2lhdGVkIFNWR01lbWJlckFj
Y2Vzc29yLgotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsdWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICAgICAgZW51bWVyYXRlUmVjdXJz
aXZlbHkoWyZdKGNvbnN0IGF1dG8mIGVudHJ5KSAtPiBib29sIHsKICAgICAgICAgICAgIGlmICgh
ZW50cnkua2V5Lm1hdGNoZXMoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVJlZ2lzdHJ5LmgKaW5kZXggZmVhOTNjZmZmN2IyZTEzZjE4NDBjM2ZlY2VkZDc2YTEwZDBkMWU4
OS4uNzNmMmU4YWYyNTYyYzdiODI3NWE5ZGY2OWRkYzBkZjQyOTI3ODI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaApAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIHByb3BlcnR5
QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRQ
cm9wZXJ0RGlydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU3RyaW5nPiBzeW5jaHJvbml6ZUFsbEF0dHJp
YnV0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCA2MzMwYzNj
NDRhMDJhYTg1NTRkMWYyNzZlNTk3MTY1MmRmNmI2Y2NiLi4xMTA0ZDkzYTcxM2I5ZDUwYjMxYWM3
ZDQyZmI5NTY1NjI0ZjVhOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTM4LDcgKzM4LDcgQEAgdGVtcGxhdGU8Pgogc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+IHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZyA9PSAidHJ1ZSI7IH0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8Ym9vbD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7
IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGJvb2wgdHlwZSkgeyByZXR1cm4gdHlwZSA/
ICJ0cnVlIiA6ICJmYWxzZSI7IH0KIH07CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgdGVtcGxhdGU8Pgog
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yPiB7CiAgICAgc3RhdGljIENvbG9yIGluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICBzdGF0aWMgQ29sb3IgZnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0
cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29sb3I+IHBh
cnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgQ29sb3IgY29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3Ioc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgaWYgKCFjb2xv
ci5pc1ZhbGlkKCkpCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxD
b2xvcj4gewogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHVuc2lnbmVkPiB7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7
IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcGFyc2UoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBp
bml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcodW5zaWduZWQgdHlw
ZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KIH07CiAKQEAgLTY3LDcgKzY3LDcg
QEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGludD4gewogICAgIHN0YXRp
YyBpbnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBpbnQgZnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KIH07CiAKQEAg
LTgxLDcgKzgxLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxpbnQsIGlu
dD4+IHsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6cm91bmQocmVzdWx0LT5maXJzdCkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0ZDo6cm91bmQocmVzdWx0LT5zZWNvbmQpKSk7CiAgICAgfQotICAgIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxW
YWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4g
cGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoc3RkOjpwYWlyPGludCwgaW50PikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KIH07CiAKQEAgLTkyLDcgKzkyLDcgQEAgc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPGZsb2F0PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXIoc3Ry
aW5nKS52YWx1ZV9vcigwKTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBwYXJz
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcp
OwogICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8c3Rk
OjpwYWlyPGZsb2F0LCBmbG9hdD4+IHsKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZU51bWJl
ck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVfb3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
eyB9KTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+
PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZh
bHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogfTsK
IApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxGbG9hdFBvaW50
PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZs
b2F0UG9pbnQgeyB9KTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBh
cnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VQb2ludChz
dHJpbmcpOwogICAgIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8RmxvYXRSZWN0PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZyku
dmFsdWVfb3IoRmxvYXRSZWN0IHsgfSk7CiAgICAgfQotICAgIHN0YXRpYyBPcHRpb25hbDxGbG9h
dFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJz
ZVJlY3Qoc3RyaW5nKTsKICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxhdGU8Pgogc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlh
bFZhbHVlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQotICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcm
IHN0cmluZykgeyByZXR1cm4gc3RyaW5nOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsg
cmV0dXJuIHN0cmluZzsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJWaWV3SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9G
YWtlWFJWaWV3SW5pdC5oCmluZGV4IDY0YTYzNGM0MzBiNGFhNjEzOTM0Y2Y1YmMwYzkxOGJhN2M3
M2QyMTcuLjE0OWNlZWQ5MzFlMTM3NmZhMGEzOGEzNzAzYTBjNjFjOTk2ZDRiYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSVmlld0luaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0
IEZha2VYUlZpZXdJbml0IHsKICAgICBWZWN0b3I8ZmxvYXQ+IHByb2plY3Rpb25NYXRyaXg7CiAg
ICAgRGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uOwogICAgIEZha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdCB2aWV3T2Zmc2V0OwotICAgIE9wdGlvbmFsPEZpZWxkT2ZWaWV3SW5pdD4gZmllbGRPZlZp
ZXc7CisgICAgc3RkOjpvcHRpb25hbDxGaWVsZE9mVmlld0luaXQ+IGZpZWxkT2ZWaWV3OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDEwYTNlMjBjZGYxYjgxYTc4NjhiOWU3NGQ0MDE0ZjcxMjE5YTJjM2UuLmY1NjJiMWVl
M2E3ZmU5NGMwMGFkNGY4YmQyMjQ5ODRjZGJmOGI2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGJvb2wgSW50ZXJuYWxzOjphcmVUaW1l
cnNUaHJvdHRsZWQoKSBjb25zdAogICAgIHJldHVybiBjb250ZXh0RG9jdW1lbnQoKS0+aXNUaW1l
clRocm90dGxpbmdFbmFibGVkKCk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB2
YWx1ZSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
KHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHZhbHVlKQogewogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5wYWdlKCkpCkBAIC0xMzk5LDcgKzEzOTksNyBAQCB2b2lkIEludGVybmFs
czo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90
dGxpbmdCZWhhdgogICAgIH0KIH0KIAotT3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxp
bmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4g
SW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50
KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENv
bG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAo
dHJhbnNwYXJlbnQpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKICAgICBkb2N1bWVudC0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKQEAgLTM1ODYsNyArMzU4Niw3IEBAIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OnJlbmRlcmluZ1VwZGF0ZUNvdW50KCkKICAgICByZXR1
cm4gZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKE9wdGlv
bmFsPENvbXBvc2l0aW5nUG9saWN5PiBwb2xpY3lPdmVycmlkZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEludGVybmFsczo6c2V0Q29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZShzdGQ6Om9wdGlvbmFsPENv
bXBvc2l0aW5nUG9saWN5PiBwb2xpY3lPdmVycmlkZSkKIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAtMzYwOSw3ICsz
NjA5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRDb21wb3NpdGluZ1BvbGlj
eU92ZXJyaWRlKE9wdGlvbmFsPENvbXBvc2l0aW5nUG8KICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25PcjxPcHRpb25hbDxJbnRlcm5hbHM6OkNvbXBvc2l0aW5nUG9saWN5Pj4gSW50ZXJu
YWxzOjpjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKCkgY29uc3QKK0V4Y2VwdGlvbk9yPHN0ZDo6
b3B0aW9uYWw8SW50ZXJuYWxzOjpDb21wb3NpdGluZ1BvbGljeT4+IEludGVybmFsczo6Y29tcG9z
aXRpbmdQb2xpY3lPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
Y29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTQ5NzIsNyArNDk3Miw3
IEBAIGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxlbWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBtZWRpYSkKIH0KICNlbmRpZgogCi1FeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6
OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5n
KQorRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92
ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5nKQogewogI2lmIEVOQUJMRShST1VU
SU5HX0FSQklUUkFUSU9OKQogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldElz
UGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoaXNQbGF5aW5nKTsKQEAgLTUwNTgsNyArNTA1OCw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpwb3N0VGFzayhSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxi
YWNrKQogICAgIH0pOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VGFza1NvdXJjZT4gdGFza1NvdXJj
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB0YXNrU291cmNlTmFtZSkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFRhc2tTb3VyY2U+IHRhc2tTb3VyY2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFz
a1NvdXJjZU5hbWUpCiB7CiAgICAgaWYgKHRhc2tTb3VyY2VOYW1lID09ICJET01NYW5pcHVsYXRp
b24iKQogICAgICAgICByZXR1cm4gVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uOwpAQCAtNTc0
OCwxMiArNTc0OCwxMiBAQCBib29sIEludGVybmFsczo6Y2Fwc0xvY2tJc09uKCkKICAgICByZXR1
cm4gV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgp
OwogfQogCi1hdXRvIEludGVybmFsczo6cGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1Zp
ZXcgc3RyaW5nKSAtPiBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0PgorYXV0byBJbnRlcm5hbHM6
OnBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gc3RkOjpvcHRp
b25hbDxIRVZDUGFyYW1ldGVyU2V0PgogewogICAgIHJldHVybiBXZWJDb3JlOjpwYXJzZUhFVkND
b2RlY1BhcmFtZXRlcnMoc3RyaW5nKTsKIH0KIAotYXV0byBJbnRlcm5hbHM6OnBhcnNlRG9WaUNv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gT3B0aW9uYWw8RG9WaVBhcmFtZXRl
clNldD4KK2F1dG8gSW50ZXJuYWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBzdHJpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4KIHsKICAgICBhdXRv
IHBhcnNlUmVzdWx0ID0gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKHN0cmluZyk7
CiAgICAgaWYgKCFwYXJzZVJlc3VsdCkKQEAgLTU3NzgsNyArNTc3OCw3IEBAIGF1dG8gSW50ZXJu
YWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlv
bmFsPERvVmlQYXJhCiAgICAgcmV0dXJuIGNvbnZlcnRlZFJlc3VsdDsKIH0KIAotT3B0aW9uYWw8
VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IEludGVybmFsczo6cGFyc2VWUENvZGVjUGFyYW1l
dGVycyhTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQ+IEludGVybmFsczo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0
cmluZykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyhzdHJp
bmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNGY4ODE2NmIyODUzZjBl
MzFlNDBjYjQyZGI0Mjg3Yzk0ZGU0MzQ0Yy4uMWRiNjRiZjViMjk0M2U2Yjg2YTJlYWNmY2M2MmUx
ZTBhMTE4ODI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMzMsOCArMjMz
LDggQEAgcHVibGljOgogICAgIGJvb2wgYXJlVGltZXJzVGhyb3R0bGVkKCkgY29uc3Q7CiAKICAg
ICBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsgUmVzcG9uc2l2ZSwgVW5yZXNwb25zaXZl
IH07Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPik7Ci0gICAgT3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2
b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxFdmVu
dFRocm90dGxpbmdCZWhhdmlvcj4pOworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoKSBjb25zdDsKIAogICAg
IC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVk
PiBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpIGNvbnN0OwpAQCAtNTc2LDgg
KzU3Niw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gcmVuZGVyaW5nVXBk
YXRlQ291bnQoKTsKIAogICAgIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgeyBOb3JtYWwsIENvbnNl
cnZhdGl2ZSB9OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENvbXBvc2l0aW5nUG9saWN5T3Zl
cnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+KTsKLSAgICBFeGNlcHRpb25PcjxPcHRp
b25hbDxDb21wb3NpdGluZ1BvbGljeT4+IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25z
dDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+KTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPENvbXBvc2l0aW5nUG9saWN5Pj4gY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZSgpIGNv
bnN0OwogCiAgICAgdm9pZCB1cGRhdGVMYXlvdXRBbmRTdHlsZUZvckFsbEZyYW1lcygpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0Fu
ZFJ1blBvc3RMYXlvdXRUYXNrcyhOb2RlKik7CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE92ZXJyaWRlUHJlZmVycmVkRHluYW1pY1JhbmdlTW9k
ZShIVE1MTWVkaWFFbGVtZW50JiwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9v
bD4pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAKICAgICBib29sIGlzU2VsZWN0UG9wdXBWaXNpYmxl
KEhUTUxTZWxlY3RFbGVtZW50Jik7CiAKQEAgLTk3NywxNyArOTc3LDE3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNhcHNMb2NrSXNPbigpOwogICAgICAgICAKICAgICB1c2luZyBIRVZDUGFyYW1ldGVy
U2V0ID0gV2ViQ29yZTo6SEVWQ1BhcmFtZXRlcnM7Ci0gICAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRl
clNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0
aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1Zp
ZXcpOwogCiAgICAgc3RydWN0IERvVmlQYXJhbWV0ZXJTZXQgewogICAgICAgICBTdHJpbmcgY29k
ZWNOYW1lOwogICAgICAgICB1aW50MTZfdCBiaXRzdHJlYW1Qcm9maWxlSUQ7CiAgICAgICAgIHVp
bnQxNl90IGJpdHN0cmVhbUxldmVsSUQ7CiAgICAgfTsKLSAgICBPcHRpb25hbDxEb1ZpUGFyYW1l
dGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CisgICAgc3RkOjpv
cHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7CiAKICAgICB1c2luZyBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCA9IFdlYkNvcmU6
OlZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkOwotICAgIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOworICAgIHN0
ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyk7CiAKICAgICBzdHJ1Y3QgQ29va2llRGF0YSB7CiAgICAgICAgIFN0
cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRl
eCAzZWIxMWYwMGI0OTRkZjAyNzU5YjJiZTBhNjIxNzc5YjNhMTJkMTE0Li45OTJlNGMxM2E3ZWU4
ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2VlMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBN
b2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc2Vzc2lvbklkLCAidmFsaWQtbG9hZGVkLXNlc3Npb24iKSkKICAgICAgICAgcmV0
dXJuIHNlc3Npb25JZDsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiBjaGFuZ2VkS2V5czsKKyAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdl
ZEtleXM7CiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygia2V5cy1jaGFu
Z2VkIl9zKSkpIHsKICAgICAgICAgY29uc3QgYXV0byoga2V5cyA9IGZhY3RvcnktPmtleXNGb3JT
ZXNzaW9uV2l0aElEKHNlc3Npb25JRCk7CiAgICAgICAgIGlmIChrZXlzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzcwYjZlMjgwZDkxZGJhNjc5YWI0MGM1
YzY0NjRjY2JjMzkwMjZjMS4uZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5MzUwYTk2ODY5OGUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTIzLDcgKzEy
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcAppbmRleCA0MDE0ZDBiZThmNjRmMWNlY2UzMTY4NGU3ZjQ5NDZlODg5N2Q5
NDY0Li4wOGY0NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0NmU5NTNjODFmYWQ5YzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiB7CiB9CiAKLU9w
dGlvbmFsPEV4Y2VwdGlvbj4gTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpyZXN1bHQoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6cmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAobV9mYWlsQ29tbWFuZHMpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtNTksNyArNTksNyBAQCBP
cHRpb25hbDxFeGNlcHRpb24+IE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVzdWx0KCkg
Y29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIE1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJik+JiYgY2FsbGJhY2spCit2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewog
ICAgICAgICBjYWxsYmFjayhyZXN1bHQoKSk7CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgpCiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZ
U19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgdGltZSk7CiAgICAgbV9jb250ZXh0LT5w
b3N0VGFzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHQKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNh
bGxiYWNrKQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewpAQCAtODYsNyArODYsNyBAQCB2b2lkIE1vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEV4Y2VwdGlvbgogICAgIH0pOwogfQogCi12b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmIGNhbGxiYWNrKQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxi
YWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAg
bV9jb250ZXh0LT5wb3N0VGFzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW8KICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBB
TFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fY29udGV4dC0+cG9z
dFRhc2soW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4m
KQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2Vk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpCiB7CiAgICAgQUxXQVlT
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3N0YXRlQ2hhbmdlTGlzdGVu
ZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5n
ZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25D
b29yZGluYXRvci5oCmluZGV4IGQzYjg2MzBiYjQ4MDYyN2RjYzQ2NzEwNjNiY2VmN2NlMTAxOWRj
ZmEuLmIyYzAwOWI4OGEwMDc2NmFkNzFhNThkNGQ4MzkyOTczYzVjODAyOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApA
QCAtNDksMTUgKzQ5LDE1IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJNb2NrIENvb3JkaW5hdG9yIjsgfQogCi0gICAgdm9pZCBqb2lu
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7
CisgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxlYXZlKCkgZmluYWw7CiAKLSAgICB2b2lk
IHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQg
c2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0VHJhY2so
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7CisgICAgdm9pZCBwb3NpdGlv
blN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKSBm
aW5hbDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUp
IGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUGxheWJh
Y2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RXhjZXB0aW9uPiByZXN1bHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4gcmVzdWx0KCkgY29uc3Q7CiAKICAgICBSZWY8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OwogICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4gbV9zdGF0ZUNoYW5nZUxpc3Rl
bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggOGQ3M2IxY2E4NWFlNTY0OTU1ZTg0YTg2OWJlOGZkZjNhNGFjOWRiZS4uMTVk
Mzk2ZTc2Njk3OTQ5NmQzN2ExYjFhYWU5OTU5NzRlNzgzMDAyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3IoUGFnZSYg
cGFnZSkKICAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2EiKTsKIH0KIAot
T3B0aW9uYWw8U3RyaW5nPiBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50
TmV0d29yayhjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKQorc3RkOjpvcHRpb25hbDxTdHJp
bmc+IE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0
IFN0cmluZyYgcGF5bWVudE5ldHdvcmspCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2F2YWlsYWJs
ZVBheW1lbnROZXR3b3Jrcy5maW5kKHBheW1lbnROZXR3b3JrKTsKICAgICBpZiAocmVzdWx0ID09
IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmVuZCgpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZv
aWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHNoaXBwaW5nTWV0aG9kVXBkYXRlKQordm9pZCBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6
b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiBzaGlwcGluZ01ldGhvZFVw
ZGF0ZSkKIHsKICAgICBpZiAoIXNoaXBwaW5nTWV0aG9kVXBkYXRlKQogICAgICAgICByZXR1cm47
CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIFZlY3RvcjxNb2NrUGF5bWVudEVycm9yPiBjb252
ZXJ0KFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JiYgZXJyb3JzKQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
JiYgc2hpcHBpbmdDb250YWN0VXBkYXRlKQordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hp
cHBpbmdDb250YWN0VXBkYXRlPiYmIHNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKIHsKICAgICBpZiAo
IXNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTCiAjZW5kaWYKIH0KIAotdm9pZCBNb2NrUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHBheW1lbnRNZXRob2RVcGRhdGUpCit2b2lkIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiBwYXltZW50TWV0aG9kVXBk
YXRlKQogewogICAgIGlmICghcGF5bWVudE1ldGhvZFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5CiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHBheW1lbnRNZXRob2RNb2RlVXBkYXRlKQordm9pZCBN
b2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0
ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiBwYXltZW50TWV0
aG9kTW9kZVVwZGF0ZSkKIHsKICAgICBpZiAoIXBheW1lbnRNZXRob2RNb2RlVXBkYXRlKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBNb2NrUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5jZWxQYXltZW50KCkKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYmIHJlc3VsdCkKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxl
dGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiYmIHJlc3VsdCkKIHsKICAgICBhdXRvIGlzRmluYWxTdGF0ZSA9IGlzRmluYWxTdGF0ZVJlc3Vs
dChyZXN1bHQpOwogICAgIG1fZXJyb3JzID0gY29udmVydChXVEZNb3ZlKHJlc3VsdC0+ZXJyb3Jz
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5o
CmluZGV4IDJkZTUxMzI4YTc2MDY3OWZhM2I2MmQ4ZThkNWY2OWM4ZTI2YmUwNGEuLmFmOWRhZTRl
NWUxMWE4MTM2ZWZkMzY0NDQzNmNmNWRmY2IwNmJmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCkBAIC04MSwxOSArODEsMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVyZWYoKSBjb25zdCB7IH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25h
bDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIGZpbmFsOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25z
dCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JikgZmluYWw7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25z
dCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgZmluYWw7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+
JiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0
aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIGZpbmFsOwotICAgIHZvaWQg
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZT4mJikgZmluYWw7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgZmlu
YWw7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dE1ldGhvZFVwZGF0ZT4mJikgZmluYWw7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01F
VEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBmaW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVf
UEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9u
KE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdD4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yRGVzdHJveWVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRFcnJvci5oCmluZGV4IDViYzFjYTExOTYzMTNiMzgwODQxYjQ1ZGQ3M2M1MDQzMmYw
NjJiNTUuLjZhNWI3MmY0MmI5Yjg0NThkZWE0ZWYyMWM5ZWY1OGQwYmQyYjZmZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNb2NrUGF5bWVudEVycm9yIHsKICAgICBBcHBsZVBh
eUVycm9yQ29kZSBjb2RlOwogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIE9wdGlvbmFsPEFwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKaW5kZXggMGM1MjVhZmZmM2M0NzA4ZGEz
NTA4ZDBiYWYxY2NjODE0YzkyNTJlZS4uNTA1NTFmOTY0MGRjNmQ4NTFiYTY3MzNjNjgzOWVkYzQz
NzYxNzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgcHJl
ZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TG9jYWxDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBz
dHJ1Y3QgSGlkQ29uZmlndXJhdGlvbiB7CkBAIC05NCw3ICs5NCw3IEBAIHN0cnVjdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBzdXBwb3J0Q2xpZW50
UGluIHsgZmFsc2UgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxIaWRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxIaWRDb25maWd1
cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgTmZjQ29uZmln
dXJhdGlvbiB7CkBAIC0xMDQsMTYgKzEwNCwxNiBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIGJvb2wgbXVsdGlwbGVQaHlzaWNhbFRhZ3MgeyBm
YWxzZSB9OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIGJvb2wgc2lsZW50RmFpbHVyZSB7IGZh
bHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPiBsb2NhbDsKLSAgICBPcHRp
b25hbDxIaWRDb25maWd1cmF0aW9uPiBoaWQ7Ci0gICAgT3B0aW9uYWw8TmZjQ29uZmlndXJhdGlv
bj4gbmZjOworICAgIHN0ZDo6b3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPiBsb2NhbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEhpZENvbmZpZ3VyYXRpb24+IGhpZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEyMyw0MSArMTIzLDQxIEBAIHZv
aWQgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRp
b24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bENvbmZpZ3VyYXRpb24gcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvbj4g
dXNlclZlcmlmaWNhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJWZXJpZmljYXRpb24+IHVz
ZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlm
ICghdXNlclZlcmlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9ICp1c2VyVmVyaWZpY2F0aW9uOwogCi0gICAgT3B0aW9u
YWw8Ym9vbD4gYWNjZXB0QXR0ZXN0YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhY2Nl
cHRBdHRlc3RhdGlvbjsKICAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOwogICAgIGlm
ICghYWNjZXB0QXR0ZXN0YXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOwogCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBwcml2YXRlS2V5QmFzZTY0OwogICAgIGRlY29kZXIgPj4gcHJpdmF0ZUtleUJhc2U2NDsKICAg
ICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpwcml2YXRlS2V5QmFzZTY0KTsK
IAotICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYgKCF1c2VyQ2VydGlmaWNhdGVCYXNlNjQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJDZXJ0aWZpY2F0ZUJh
c2U2NCA9IFdURk1vdmUoKnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxT
dHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+
PiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OwogICAgIGlmICghaW50ZXJtZWRpYXRl
Q0FDZXJ0aWZpY2F0ZUJhc2U2NCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKmludGVybWVk
aWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVmZXJy
ZWRDcmVkZW50aWFsSWRCYXNlNjQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHByZWZlcnJl
ZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRpYWxJ
ZEJhc2U2NDsKICAgICBpZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVy
JiBlbmNvZAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxvYWRCYXNlNjQpKQpAQCAtMjA4LDcg
KzIwOCw3IEBAIHZvaWQgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmND
b25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25m
aWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
TmZjQ29uZmlndXJhdGlvbiByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZXJyb3IpKQpAQCAtMjI5LDI5ICsyMjksMjkgQEAgdm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHJlc3Vs
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNpbGVudEZhaWx1cmU7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaWxlbnRGYWlsdXJlOwogICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKICAg
ICBpZiAoIXNpbGVudEZhaWx1cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxMb2NhbENvbmZpZ3VyYXRpb24+PiBsb2NhbDsKICAgICBkZWNvZGVyID4+IGxv
Y2FsOwogICAgIGlmICghbG9jYWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmxvY2FsID0gV1RGTW92ZSgqbG9jYWwpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8
SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKICAgICBkZWNvZGVyID4+IGhpZDsKICAgICBpZiAoIWhp
ZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaGlkID0gV1RGTW92
ZSgqaGlkKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7
CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7
CiAgICAgZGVjb2RlciA+PiBuZmM7CiAgICAgaWYgKCFuZmMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5k
ZXggYTBhMzljZmI1YzY0ZDU2NGY2ZDE3NmU5ZjkzNGRkZjU5N2U1MDZlOC4uMDRmNDBlOTZjZDhh
ZGU4NDhiMDBlMGY5Y2VkMDZiZjFkNzk1YmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2
aWNlOjpzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShjb25zdCBWZWN0b3I8RmFrZVhSQm91bmRzUG9p
bnQ+JgogICAgICAgICBtX2ZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuYm91bmRzLmFwcGVuZCh7
IHN0YXRpY19jYXN0PGZsb2F0Pihwb2ludC54KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50Lnop
IH0pOwogfQogCi12b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4oY29uc3Qg
T3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYgb3JpZ2luKQordm9pZCBTaW11bGF0ZWRYUkRldmlj
ZTo6c2V0Vmlld2VyT3JpZ2luKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYg
b3JpZ2luKQogewogICAgIGlmIChvcmlnaW4pIHsKICAgICAgICAgbV9mcmFtZURhdGEub3JpZ2lu
ID0gKm9yaWdpbjsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgbV9m
cmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJGcmFtZVRpbWUpOwogfQogCi1PcHRpb25hbDxQ
bGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNyZWF0ZUxheWVyUHJv
amVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQorc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29s
IGFscGhhKQogewogICAgIHVzaW5nIEdMID0gR3JhcGhpY3NDb250ZXh0R0w7CiAgICAgaWYgKCFt
X2dsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggZjU5N2Iz
ZDkxOTJjN2Y2MjcyMTU3ODM2NTYzM2EyNzY0MDYwY2U3ZS4uYzA4NmQ5Y2ZkYzczN2IxZDJjMTk0
NWIxMWE2ZTYwY2Y4YTVjOTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBYUkV5ZSBleWUoKSBjb25zdCB7
IHJldHVybiBtX2V5ZTsgfQogICAgIGNvbnN0IFBvc2UmIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgMTY+JiBwcm9qZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8Rm92
PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Zvdjt9CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxGb3Y+JiBmaWVsZE9mVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZm92O30KIAogICAg
IHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJWaWV3SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiByZXNv
bHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJlc29sdXRpb247IH0KICAgICB2b2lkIHNldE9mZnNl
dChQb3NlJiYgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gV1RGTW92ZShvZmZzZXQpOyB9CkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRpb24g
bV9yZXNvbHV0aW9uOwogICAgIFBvc2UgbV9vZmZzZXQ7CiAgICAgc3RkOjphcnJheTxmbG9hdCwg
MTY+IG1fcHJvamVjdGlvbjsKLSAgICBPcHRpb25hbDxGb3Y+IG1fZm92OworICAgIHN0ZDo6b3B0
aW9uYWw8Rm92PiBtX2ZvdjsKIH07CiAKIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAg
ICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2b2lkIHNldFZpZXdzKFZlY3RvcjxGcmFtZURh
dGE6OlZpZXc+JiYpOwogICAgIHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoY29uc3QgVmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50PiYpOwotICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKGNvbnN0
IE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mKTsKLSAgICB2b2lkIHNldEZsb29yT3JpZ2luKE9w
dGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mJiBvcmlnaW4pIHsgbV9mcmFtZURhdGEuZmxvb3JUcmFu
c2Zvcm0gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihjb25z
dCBzdGQ6Om9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mKTsKKyAgICB2b2lkIHNldEZsb29yT3Jp
Z2luKHN0ZDo6b3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYmIG9yaWdpbikgeyBtX2ZyYW1lRGF0
YS5mbG9vclRyYW5zZm9ybSA9IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQgc2V0RW11bGF0
ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7IG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRl
ZCA9IGVtdWxhdGVkOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9u
KGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBvcnRzU2h1dGRvd25O
b3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBz
aW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3Bh
Y2VUeXBlKSBmaW5hbCB7IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0
YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIE9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qg
d2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEpIGZpbmFsOwogICAgIHZvaWQg
ZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIGZpbmFsOwogCiAgICAgdm9pZCBz
dG9wVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0
Q29udHJvbGxlci5oCmluZGV4IDUzOTU5ZTU1YTk4MmMyYmRlMTg2ZmIyODhmMTVmYTkwMWMyZDU5
MTQuLmU1OWRjMDIxZGNlYTM5N2MzMWM2MzQ1YTVmODYyMzNlMTM5ZDNhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNjQs
OCArNjQsOCBAQCBwcml2YXRlOgogICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9y
bVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7CiAK
ICAgICBzdHJ1Y3QgQnV0dG9uT3JQbGFjZWhvbGRlciB7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOwotICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBheGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9u
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxmbG9hdD4+IGF4ZXM7CiAgICAgfTsKICAg
ICBCdXR0b25PclBsYWNlaG9sZGVyIGdldEJ1dHRvbk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9u
U3RhdGVJbml0OjpUeXBlKSBjb25zdDsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IFhSVGFyZ2V0UmF5TW9kZSBtX3RhcmdldFJheU1vZGUgeyBYUlRhcmdldFJheU1vZGU6OkdhemUg
fTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOwogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb2ludGVyT3JpZ2luOwotICAgIE9wdGlv
bmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3Jp
cE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3JpcE9yaWdpbjsKICAgICBIYXNoTWFwPEZha2VYUkJ1dHRv
blN0YXRlSW5pdDo6VHlwZSwgRmFrZVhSQnV0dG9uU3RhdGVJbml0LCBXVEY6OkludEhhc2g8RmFr
ZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGYWtl
WFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1dHRvbnM7CiAgICAgYm9vbCBtX2Nvbm5lY3Rl
ZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1dlYlhSVGVzdC5oCmluZGV4IDhlOTU3NWJjNGU5OWQyYjYzMDI3NzQ2YjNiZjRk
NjcyNmM5Mzc1ZWYuLjc5ODRkMjE2ODdmM2Q3NGY2NGUwMDEzZGE0Yjg2NTU0MmRjYmRhODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIGNsYXNzIFdl
YlhSVGVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVGVzdD4gewogcHVibGljOgog
ICAgIHN0cnVjdCBGYWtlWFJEZXZpY2VJbml0IHsKICAgICAgICAgYm9vbCBzdXBwb3J0c0ltbWVy
c2l2ZSB7IGZhbHNlIH07Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxYUlNlc3Npb25Nb2RlPj4g
c3VwcG9ydGVkTW9kZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFhSU2Vzc2lvbk1v
ZGU+PiBzdXBwb3J0ZWRNb2RlczsKICAgICAgICAgVmVjdG9yPEZha2VYUlZpZXdJbml0PiB2aWV3
czsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8SlNDOjpKU1ZhbHVlPj4gc3VwcG9ydGVkRmVh
dHVyZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEpTQzo6SlNWYWx1ZT4+IHN1cHBv
cnRlZEZlYXR1cmVzOwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2lu
dD4+IGJvdW5kc0Nvb3JkaW5hdGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGYWtl
WFJCb3VuZHNQb2ludD4+IGJvdW5kc0Nvb3JkaW5hdGVzOwogCi0gICAgICAgIE9wdGlvbmFsPEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gZmxvb3JPcmlnaW47Ci0gICAgICAgIE9wdGlvbmFsPEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gdmlld2VyT3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gZmxvb3JPcmlnaW47CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0PiB2aWV3ZXJPcmlnaW47CiAgICAgfTsK
IAogICAgIHN0YXRpYyBSZWY8V2ViWFJUZXN0PiBjcmVhdGUoV2Vha1B0cjxXZWJYUlN5c3RlbT4m
JiBzeXN0ZW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJUZXN0KFdURk1vdmUoc3lzdGVt
KSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdW
aXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KaW5kZXggOGJiMTAxZTFj
ZTk4ZGE3YzA0MWM1MmExNWE4ZWYxNDVmOTExNjA2NS4uMTZjMzQ4NjNkY2MzZDUxYjE1ZGQ3Zjkz
NDBlZTI3YTYwY2ZiNDc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQpA
QCAtNTMsNyArNTMsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0
aW9uT3ZlcmxheSB7CiAKICsgKEJPT0wpc2hvdWxkSWRlbnRpZnlXZWJWaWV3cwogewotICAgIHN0
YXRpYyBPcHRpb25hbDxCT09MPiBzaG91bGRJZGVudGlmeVdlYlZpZXdzOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEJPT0w+IHNob3VsZElkZW50aWZ5V2ViVmlld3M7CiAgICAgaWYgKCFzaG91
bGRJZGVudGlmeVdlYlZpZXdzKQogICAgICAgICBzaG91bGRJZGVudGlmeVdlYlZpZXdzID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdERl
YnVnSWRlbnRpZnlXZWJWaWV3cyJdOwogICAgIHJldHVybiAqc2hvdWxkSWRlbnRpZnlXZWJWaWV3
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDUzOTU2OGY1OTEzYjRiNWMyODZlNzM2MDRl
NjUzMjEyNDk5NzViYzkuLjg4MWRiYmViYTEyODUyODQ4ZDIwYTdjYzQ3ODJkNzZhMjBkNDIzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFdvcmtlckds
b2JhbFNjb3BlUHJveHkmIG1fY29udGV4dFByb3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhl
IHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4KLSAgICBPcHRpb25hbDxDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKICAg
ICBNb25vdG9uaWNUaW1lIG1fd29ya2VyQ3JlYXRpb25UaW1lOwogICAgIGJvb2wgbV9zaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggMmNkYjc1NTc5NThiYzg5M2UyNjZkNmZiOWMwY2VjMTc2NzBmMjkwYS4uMTNk
ZjE3MzZmYTNlYThiMGQ2MTNiYWI3OGRjMmZjNmJkZGI3ZWMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29ya2VyU2NyaXB0RmV0Y2hlciYKICAgICB9CiB9
CiAKLXZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRl
TW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzIGNy
ZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFscyBjcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhj
ZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yIH0pOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0
IFVSTCYgbW9kdWxlVVJMCiAgICAgewogICAgICAgICBhdXRvJiBwcm9taXNlID0gSlNFeGVjU3Rh
dGU6OmxvYWRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBtb2R1bGVVUkwuc3RyaW5nKCksIEpTQzo6SlNT
Y3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZSh2bSwgbWFrZVJlZihzY3JpcHRGZXRjaGVyLT5w
YXJhbWV0ZXJzKCkpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZSh2bSwgeyBzY3JpcHRG
ZXRjaGVyLnB0cigpIH0pKTsKIAotICAgICAgICBhdXRvIHRhc2sgPSBjcmVhdGVTaGFyZWRUYXNr
PHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11
dGFibGUgeworICAgICAgICBhdXRvIHRhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYpPihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7
CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGE1YzFhMWRkYTVkNmQwMmU4NTZm
ZjVhNjBiZDc5YTRhNjg1NDU0YTcuLjMwNGFjNDAzMzRjMDYyZjdlYjRiZmU1OWUzNTg3NjljYjc0
Yzk2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbGlua0FuZEV2YWx1YXRlTW9kdWxlKFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxs
cHRyKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IGxvYWRNb2R1bGVTeW5jaHJvbm91c2x5
KFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAKLSAgICB2
b2lkIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmKTsKKyAgICB2b2lkIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1v
ZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxTY29wZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCmluZGV4IDBmMTk0NTQ0OGM0NWNiMTExZGNjNGEyNWE2YzlhYmY2ZjE2NDRkZWEuLmZi
MDcyY2MxOGM5MWZlMTEwZTRhZGVlYTgzMzI4OWMyODNiYjZkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29y
a2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKQogCiBXb3JrZXJTY3JpcHRMb2Fk
ZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKLU9wdGlvbmFsPEV4Y2VwdGlv
bj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRp
b25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hP
cHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2Vt
ZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGJkZDYwMTdkZjQ2
Y2M5ZjQ2ZGUwZGFhZGE3ZDM1YzlmODZiMzRjYmQuLmQzMzdjNTAzNmRhYzBmNjc1YTFjOTIzZDhk
ZTY0M2ZmMTM1MzNjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdvcmtlclNjcmlwdExvYWRlcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXhjZXB0
aW9uPiBsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJM
JiwgRmV0Y2hPcHRpb25zOjpNb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9kZSwgRmV0Y2hPcHRp
b25zOjpDYWNoZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJzTW9kZSwgV29y
a2VyU2NyaXB0TG9hZGVyQ2xpZW50JiwgU3RyaW5nJiYgdGFza01vZGUpOwogCiAgICAgdm9pZCBu
b3RpZnlFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IDQ0MmQyZGQyZDhhYjc3NzE2NzYxYWEzOWUyYTJiMmMwNDE5OTVkMTIuLmY3YjJhNTBkZTk3Nzg2
MWJiZTZiYTI4OWQ1MjliZDhiODExMTA2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVh
dGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgICAgIHNv
dXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKICAgICAgICAgTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCByZXN1bHQgPSBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+bG9hZE1vZHVsZVN5
bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQoKSwgc291cmNlQ29kZSk7CiAgICAgICAgIGlm
IChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgewotICAgICAgICAgICAgaWYgKE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJv
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5jb25zb2xlTWVzc2FnZSkKKyAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRG
ZXRjaGVyLT5lcnJvcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9h
ZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNz
YWdlKQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25NZXNzYWdlID0gbWVzc2FnZS0+bWVz
c2FnZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bk1lc3NhZ2UgPSAiSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIl9zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdl
RXZlbnQuY3BwCmluZGV4IGU2YWJiMTQ1MDQ0M2YyZWQ4NDRiMjlhODM5YjYzMzgwNWI5NmI1YTUu
LmJmZjI3MmNmMTZjMDZhZjNlMTEwZTg5N2FiYmM0MjNiZmQ5MjNlMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudCk7CiAKLVJlZjxFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50PiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQorUmVmPEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQ+IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFdU
Rk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92
ZShwb3J0cykpKTsKIH0KQEAgLTUwLDcgKzUwLDcgQEAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QK
IHsKIH0KIAotRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMp
CitFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQog
ICAgIDogRXh0ZW5kYWJsZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1YmJs
ZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAg
ICAsIG1fb3JpZ2luKG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCmluZGV4IDllNmNiZjJlY2QzMzBlOTU0
NDgzYTFjMzgyYTIyY2Q4NzIyMzlmZmMuLmY2NzQ1MjQ0NTQ4NmIzYWRhYzY2ZDUxMjM1MWQ1ZDcy
ZGY4OGNkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBT
dHJpbmcgbGFzdEV2ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZl
bnRTb3VyY2U+IHNvdXJjZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50U291cmNlPiBzb3VyY2U7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiBwb3J0czsKICAgICB9OwogCkBAIC02MywyNiArNjMsMjYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KHN0YXRlLCB0eXBlLCBp
bml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJl
ZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFs
PEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIH5FeHRlbmRhYmxlTWVzc2FnZUV2ZW50KCk7CiAKICAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBj
b25zdCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsg
fQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7
IHJldHVybiBtX3BvcnRzOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEV4dGVuZGFibGVNZXNzYWdlRXZlbnRJbnRlcmZhY2VUeXBl
OyB9CiAKIHByaXZhdGU6CiAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwotICAg
IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0
aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYpOworICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNl
PiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAKICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFN0cmlu
ZyBtX2xhc3RFdmVudElkOwotICAgIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3Vy
Y2U+IG1fc291cmNlOworICAgIHN0ZDo6b3B0aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNv
dXJjZT4gbV9zb3VyY2U7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1fcG9ydHM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IDc4ZDBhMzMyMGI3MWY1MDU1YzYzYzIyYWM0ZWUzNTRmNjZl
NTlmMGIuLmY5NTNjYWUzMjcwMTUxNDFkMzQwZGYzNzVhOGI2NWZmZTM1NjRmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXMKICAgICAgICAg
Y29udGFpbmVyLT5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURh
dGEpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4m
IHNlcnZpY2VXb3JrZXJEYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAzY2I1YjBjYmJhY2E1NDhjYzgyMzU2Y2JhMjFhOGE2NTgwMTIwOWUzLi41ZDBiZGYz
ZDE5ZmIwOWI4MjE1OGNhZThiM2ViOTI5MjM3MjllMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Nyw3ICs1Nyw3
IEBAIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXQ2xpZW50
Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xp
ZW50Q29ubmVjdGlvbigpOwogCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
PiYmKT47CisgICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsK
ICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0JikgPSAwOwpAQCAtOTYsNyArOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3Jr
ZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGRO
b3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4p
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0ZSwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJT
dGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSZWdpc3RyYXRpb25MYXN0VXBkYXRlVGltZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgV2FsbFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAwMzMwYjQ5YmRjMTQ0
MGE0NzI4OGUzNWY5MjAyNzdlZjZhYjUzM2E2Li4zM2Q5ODM4NDI0Y2I4ZjJjMWFlMWRhZDVmOGFm
YmUxNDkwMTkyM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSBmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTV0NsaWVudENvbm5lY3Rpb24mKTsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjEsMjkgKzYx
LDI5IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBl
OwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBl
PiBmcmFtZVR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlPiBmcmFtZVR5cGU7CiAgICAgZGVjb2RlciA+PiBmcmFtZVR5cGU7CiAgICAgaWYgKCFmcmFt
ZVR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+
IHVybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwog
ICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwCmluZGV4IDM1NTg0Yjhh
ZjA0YzUyYjc2ODBjZDZiODc5NDVhNzY0ODhmMmE0ZWEuLmJjZjMzMzQzOTE5ZjYwNjZlNzQyNjM3
ZGMxM2U5MmQxYzNkZGZmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgY291bnRlciA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oCmluZGV4IGQ2MzgxZDdkNWJjOTJmZWI3ZjllMDY4YzM3YTNhNGU0MjE4
ODE2MDMuLmJjZTI3Y2NlMzA2OTY4M2E4OWVkNDFmNmE3NDZmNjQ0YmIyMmRlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC00MCwxMCArNDAsMTAgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCksICctJywgY29udGV4dElkZW50aWZpZXIudG9VSW50
NjQoKSk7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGIpCkBAIC01OCwxNCArNTgsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4g
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIXNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RG9jdW1lbnRJZGVudGlm
aWVyPiBjb250ZXh0SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPERvY3VtZW50SWRlbnRp
Zmllcj4gY29udGV4dElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0SWRlbnRpZmll
cjsKICAgICBpZiAoIWNvbnRleHRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgKaW5kZXggZDAxODdjOTg3M2EyODFh
NGUyYjcyOThjYzJjMzU5YzAzOGRkZDQ0Yy4uMzk0ZDlhZjg2MTVkNmU1MmM2MDE1NTM0MDg2YmE2
YjBhYzFkM2RiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICBTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlIHsgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRv
dyB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRRdWVyeU9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgpAQCAtNDcsMTQgKzQ3LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5
T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucz4gU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8Ym9vbD4gaW5jbHVkZVVuY29udHJvbGxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAgZGVjb2RlciA+PiBpbmNsdWRlVW5jb250cm9s
bGVkOwogICAgIGlmICghaW5jbHVkZVVuY29udHJvbGxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVj
b2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuY3BwCmluZGV4IGJhNDJlYTIzOGRjNmY4NTY0OTc3ZGUzODgwMjIzMDVlNmZm
NWEwNjQuLmM4MjcyMGVhNzY0MTA5ZWQzYjIwZWI0ZDY2NjQ2NTI4YzFkY2FmNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERhdGEpCitzdGF0aWMgaW5saW5lIHZv
aWQgZGlkRmluaXNoR2V0UmVxdWVzdChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBE
ZWZlcnJlZFByb21pc2UmIHByb21pc2UsIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERhdGEpCiB7CiAgICAgaWYgKGNsaWVudERhdGEu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxl
YXNlRXhjZXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGE1ODBkYjdmMmI2NjZiNmMx
M2I4OTRlYTQwMzlmNDJhMzM3M2MxY2EuLjY4NmI0ZWRhN2M2NjI1OGY1OTI4ZmJhMGIzZGQzMDY4
NzdlYzYxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xp
ZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRl
LCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQor
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgaWRlbnRpZmllciwgc3RhdGUsIHNlcnZp
Y2VXb3JrZXJEYXRhID0gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsgc2VydmljZVdvcmtl
ckRhdGEgfV0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSA9IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsg
c2VydmljZVdvcmtlckRhdGEgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFNlcnZpY2VX
b3JrZXI+IHNlcnZpY2VXb3JrZXI7CiAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyRGF0YSkKICAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXIgPSBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyRGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgKaW5kZXggMzRhMGViZjc3MzU2Y2RmODY2Y2E2MjNmMWIwMjBiODA2M2YxNWViNS4u
MWUyMDU5ODliMzI3MjAyYTRlYTZjNWMyYjgxZWNjY2JkYzI1ZDEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbihj
b25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbihjb25z
dCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci0gICAgdm9pZCB1
cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyRGF0YT4mKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3Rh
dGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CiAgICAgdm9pZCB1
cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0
YXRlKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRj
aENvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDJkYTJkYmIx
NTM2ZTk4MDA1NWJmOTRjMDZiNmNiMjRkMjU3YzEyNTUuLjNkN2NkMTdhOGJjMDlkYWVhYTZlMGVi
ZjkwYTA1OWE3YzcwOWEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTUyLDE5ICs1MiwxOSBA
QCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICAgICAgICAgIGVuY29kZXIg
PDwgc2NyaXB0IDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNj
cmlwdDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAg
ICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIE9wdGlv
bmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVz
cG9uc2VVUkw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOwogICAgICAgICAg
ICAgaWYgKCFyZXNwb25zZVVSTCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBt
aW1lVHlwZTsKICAgICAgICAgICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7CiAgICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENv
cHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKLSAgICBPcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSByZWdpc3RyYXRpb247
CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAg
ICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKQEAgLTg5LDExICs4OSwxMSBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIE9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VN
YXA7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiB9OwpAQCAtMTA2LDE0ICsxMDYsMTQgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4+
IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAg
ICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVn
aXN0cmF0aW9uOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uOwogICAgIGlmICghcmVnaXN0
cmF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTIyLDcgKzEyMiw3IEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNjcmlwdEJ1
ZmZlcj4gc2NyaXB0OworICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAg
ICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
YwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CisgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmlj
YXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKICAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKaW5kZXggYmM1NmU5
YjAzZGQwYmZmYTAyYzZhZjNhMGY2NjQ2YWVmODA0Y2JhYS4uY2UzNjFkM2YzZDBmMzg3M2E4NmRj
OGE5MzhiYWYwM2YxZDE2NGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNlcnZp
Y2VXb3JrZXJEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTQsMjkgKzU0LDI5IEBAIHZv
aWQgU2VydmljZVdvcmtlckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IFNl
cnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckRhdGE+IFNlcnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gaWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+IHNjcmlwdFVSTDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gc2NyaXB0VVJMOwogICAgIGRlY29kZXIgPj4gc2NyaXB0
VVJMOwogICAgIGlmICghc2NyaXB0VVJMKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclN0YXRlPiBzdGF0ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJTdGF0ZT4gc3RhdGU7CiAgICAgZGVjb2RlciA+PiBzdGF0ZTsKICAg
ICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8V29ya2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7
CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiByZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGlmICghcmVnaXN0cmF0
aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQuaAppbmRleCAzYmQwN2IzY2Y2MTUwZjNiNjIyNmVhMzQ0OTc2ZWYwZmZiODdkMmJmLi5kMzRi
NTI4MTNlMWE3NzE4MWJlYjVjMjJmNGU2ZDNhZmYxM2I4ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoUmVzdWx0OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29sIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNyArODUsNyBAQCBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjcmlwdEVycm9yKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
Y2VydGlmaWNhdGVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggYjZj
OTU2MzM4ZTFkZmQyMTFkYWMxN2MyYjMxMDU5NTMyOWY4MTg2Yi4uMDI1MTBjZGEyZWNiN2UyNDU1
NTZmMzYxYjViZTJhMDYyMDA1ZmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTYyLDcgKzYyLDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29s
YXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckpv
YkRhdGEoKSA9IGRlZmF1bHQ7CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgU2VydmljZVdvcmtlckpv
YkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJK
b2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGll
bnRDcmVhdGlvblVSTCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwog
ICAgIGlmICghdG9wT3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE4
LDcgKzExOCw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICBzd2l0Y2ggKGpvYkRhdGEu
dHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOiB7Ci0gICAg
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiByZWdpc3RyYXRp
b25PcHRpb25zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25PcHRpb25zPiByZWdpc3RyYXRpb25PcHRpb25zOwogICAgICAgICBkZWNvZGVyID4+IHJlZ2lz
dHJhdGlvbk9wdGlvbnM7CiAgICAgICAgIGlmICghcmVnaXN0cmF0aW9uT3B0aW9ucykKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgK
aW5kZXggN2E3ZDY0ODUzZGRjNDcxNmRlMjVkZTA3YTdmMGY3MWEwN2NkMGQyZC4uNzI1YTgzYWMy
MTBhZmZiMTI5YzBlNTg2MTg2ZTE5YmUyZDA3ODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgYSwg
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBiKQpAQCAtNTYsMTQgKzU2LDE0
IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI+IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYklkZW50aWZpZXI+IGpvYklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllcj4gam9iSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGpv
YklkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKaW5kZXggZDQwNjY5ZDNm
NjMyNjlkMGZhY2I3NWJmZWU0MGI1NzYzMDQzM2MxMy4uMGNhNTg1MGI1Y2NlZDUxN2Q0MzZjYjc4
MGFlY2RlZGYwOTc4MzIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCkBAIC0z
OCw5ICszOCw5IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zCiAgICAgICAgIHNjb3BlVVJMLmlz
b2xhdGVkQ29weSgpLAogICAgICAgICB1cGRhdGVWaWFDYWNoZSwKICAgICAgICAgbGFzdFVwZGF0
ZVRpbWUsCi0gICAgICAgIGluc3RhbGxpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAot
ICAgICAgICB3YWl0aW5nV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KHdhaXRp
bmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9wdCwKLSAgICAgICAgYWN0aXZl
V29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KGFjdGl2ZVdvcmtlci0+aXNvbGF0
ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICBpbnN0YWxsaW5nV29ya2VyID8gc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRD
b3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICB3YWl0aW5nV29ya2VyID8gc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4od2FpdGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDog
c3RkOjpudWxsb3B0LAorICAgICAgICBhY3RpdmVXb3JrZXIgPyBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPihhY3RpdmVXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9w
dCwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCmluZGV4IDlmNTNmYWQy
YWI1YWVjYTY2YjIyNmQ1Njk2MzMyMjIwYjViNGM1ZjQuLjNmZjQwNDlmNTJkNGIzMTM3ZTJhNDdj
ZGQyMzE0ZTc3NjkzYjhjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCkBAIC00NSwx
NCArNDUsMTQgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsKICAgICBT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGU7CiAgICAgV2FsbFRpbWUg
bGFzdFVwZGF0ZVRpbWU7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gaW5zdGFs
bGluZ1dvcmtlcjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd2FpdGluZ1dvcmtl
cjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gYWN0aXZlV29ya2VyOworICAgIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IGluc3RhbGxpbmdXb3JrZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd2FpdGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBhY3RpdmVXb3JrZXI7CiAKICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiAKQEAgLTYzLDQ0ICs2Myw0NCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4ga2V5OworICAgIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4ga2V5OwogICAgIGRlY29kZXIgPj4g
a2V5OwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAot
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBpZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRl
bnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFVS
TD4gc2NvcGVVUkw7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHNjb3BlVVJMOwogICAgIGRlY29k
ZXIgPj4gc2NvcGVVUkw7CiAgICAgaWYgKCFzY29wZVVSTCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBk
YXRlVmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAg
aWYgKCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPGRvdWJsZT4gcmF3V2FsbFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHJhd1dhbGxUaW1lOwogICAgIGRlY29kZXIgPj4gcmF3V2FsbFRpbWU7CiAgICAgaWYgKCFyYXdX
YWxsVGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gaW5zdGFsbGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+PiBpbnN0YWxsaW5nV29ya2Vy
OwogICAgIGRlY29kZXIgPj4gaW5zdGFsbGluZ1dvcmtlcjsKICAgICBpZiAoIWluc3RhbGxpbmdX
b3JrZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IHdhaXRpbmdXb3JrZXI7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gd2FpdGluZ1dvcmtlcjsKICAgICBk
ZWNvZGVyID4+IHdhaXRpbmdXb3JrZXI7CiAgICAgaWYgKCF3YWl0aW5nV29ya2VyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+PiBhY3RpdmVXb3JrZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJEYXRhPj4gYWN0aXZlV29ya2VyOwogICAgIGRlY29kZXIgPj4gYWN0aXZl
V29ya2VyOwogICAgIGlmICghYWN0aXZlV29ya2VyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDcwNWIyZWY1NjAzNGZjNGNh
NjNmNWJlNzBjYTcwZmNhMTllODk4MjUuLjQ4ZTg0MzBmMDY3MWYyMjUyNTE3ZmZkMzYwNjVkZTA2
Mjc5MjZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgU3RyaW5nIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnRvRGF0YWJhc2VLZXkoKSBj
b25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKG1fdG9wT3JpZ2luLnByb3RvY29sLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIG1fdG9wT3JpZ2luLmhvc3QsIHNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJh
dG9yQ2hhcmFjdGVyLCBtX3Njb3BlLnN0cmluZygpKTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURh
dGFiYXNlS2V5KGNvbnN0IFN0cmluZyYga2V5KQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJh
c2VLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byBmaXJzdCA9IGtleS5maW5kKHNl
cGFyYXRvckNoYXJhY3RlciwgMCk7CiAgICAgYXV0byBzZWNvbmQgPSBrZXkuZmluZChzZXBhcmF0
b3JDaGFyYWN0ZXIsIGZpcnN0ICsgMSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6
ZnJvbURhdGFiYXMKICAgICBpZiAoZmlyc3QgPT0gc2Vjb25kIHx8IHNlY29uZCA9PSB0aGlyZCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBz
aG9ydFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gc2hvcnRQb3J0OwogCiAgICAg
Ly8gSWYgdGhlcmUncyBhIGdhcCBiZXR3ZWVuIHRoaXJkIGFuZCBzZWNvbmQsIHdlIGV4cGVjdCB0
byBoYXZlIGEgcG9ydCB0byBkZWNvZGUKICAgICBpZiAodGhpcmQgLSBzZWNvbmQgPiAxKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCBkMGY5YjQ0NWI1MjQzZTkzMDkwMzA4ZDdhMWUz
N2FkNGJkZWYxMDdjLi5jNWM0OTUxNDg0MDY5ZTk1YjZiYzc2MDg4YmQzMDc0Y2NlNjJmOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgU3RyaW5nIHRvRGF0YWJhc2VLZXkoKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gZnJvbURh
dGFiYXNlS2V5KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IGZyb21EYXRhYmFzZUtleShjb25zdCBTdHJpbmcmKTsK
IAogI2lmICFMT0dfRElTQUJMRUQKICAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OwpA
QCAtODEsOSArODEsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0
YT4gdG9wT3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BP
cmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9u
cy5oCmluZGV4IGZlMDJiZjdmY2Q1ZjE1ODllMTJiNWJhMjY5MDYyMjU3Yzc0ZDU4OTIuLmM4ZDc3
MThkZWU3NWFkYTBiMjU2ZTk1ZjU4Nzc5OTEyMzhlZDNhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uT3B0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uT3B0aW9ucyB7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDE5ICs1MiwxOSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25PcHRpb25zPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9uczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9uczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzY29wZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAo
IXNjb3BlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V29y
a2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAg
ZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBkYXRl
VmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+
IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgaWYg
KCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggZWVkM2Y5Mjk3Y2QyMzBhNDJlOTZlMmNlMjc0ZTk4YjA2M2JkOTcy
Ny4uMmUyNGYyNjQ3ZmViMmMwZTAxNjVmNTk5OTk2NWU3ZjVlYTAwMGEwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIFdvcmtlclNXQ2xpZW50Q29ubmVj
dGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlYwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4s
IGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RvcE9yaWdpbiA9IHRvcE9yaWdp
bi5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShkYXRhKSwgaWRlbnRpZmll
ciwgdXNlckFnZW50ID0gY3Jvc3NUaHJlYWRDb3B5KHVzZXJBZ2VudCldIHsKICAgICAgICAgYXV0
byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBiNDE3OTEzMjA2OGE4
MTBhNDk1NGIzMmEzMDMyMGY0Yjc2MmU4MDc5Li5jODZlZTQ1NWQzMTMyOTU3ZjI5NzlmZGZkZDhi
MDJlODkxZTBjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgU2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsKICAgICBTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCAxOGM4MjljNDhlNzhjMzkzZDNmMWY1
ZDhmOTA0ZDE4MTM1YTI1YjRiLi5hN2RhMDBkOTZjMDBkZGQ4OTA2ZDgyNzVmNmRhMmRjNDg5YjM2
YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNXQ29u
dGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlclRocmVhZEZvckluc3RhbGwoUmVmPFNl
cnZpY2VXb3JrZXJUaAogICAgIH0pOwogfQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0
ZWRTZXJ2aWNlV29ya2VyKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4g
am9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRs
ZUZldGNoKQordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydGVkU2VydmljZVdvcmtlcihzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQogewogICAg
IGlmIChtX3NlcnZpY2VXb3JrZXJDcmVhdGlvbkNhbGxiYWNrKQogICAgICAgICBtX3NlcnZpY2VX
b3JrZXJDcmVhdGlvbkNhbGxiYWNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDRkMDhlNzZiYzlkNjA2MzljZTBkOWFmNGM5OWEwN2E5
ZTExYmU0ODIuLjE5MTA1MjdhY2QwOTJiNjIzOGUwYjkwZWE4MjAzOGYyMjJkZDMyYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKQEAgLTUyLDE2ICs1MiwxNiBAQCBwdWJsaWM6CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5k
bGVGZXRjaCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRv
U3RhcnQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2Vy
dmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtlclRlcm1p
bmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgPSAwOwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAgIHVzaW5n
IEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9w
dGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1
bHQ7CiAKLSAgICB2b2lkIHN0YXJ0ZWRTZXJ2aWNlV29ya2VyKE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRsZUZldGNoKTsKKyAgICB2b2lkIHN0
YXJ0ZWRTZXJ2aWNlV29ya2VyKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9u
TWVzc2FnZSwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9UZXJtaW5hdGUoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCiAgICAgdm9pZCBzdG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYs
IFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApp
bmRleCA2Yjk0NzJkMDAzN2Y2MWZlOWI3NTJkNDY0YWMxNTljNzdlMjk2NzM3Li5kMjI1MzY1MDU5
MDVhYWRmMWQ0ODJlOTA1Njg1MjVmY2Q2YWI5Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFNlcnZp
Y2VXb3JrZXJGZXRjaCB7CiAKIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRw
LWZldGNoIHN0ZXAgMy4zCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZh
bGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0
aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQorc3RhdGlj
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBG
ZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQogewogICAgIGlmIChyZXNwb25zZS50eXBl
KCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpCiAgICAgICAgIHJldHVybiBSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCks
ICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3b3JrZXIgaXMgYW4gZXJyb3IiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgdm9p
ZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRj
aFJlc3BvbnNlPiwgUgogICAgIH0pOwogfQogCi12b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8
Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucykKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgYXV0
byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3Vh
cmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygp
IH0pOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENs
aWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBB
U1NFUlQoZ2xvYmFsU2NvcGUucmVnaXN0cmF0aW9uKCkuYWN0aXZlKCktPnN0YXRlKCkgPT0gU2Vy
dmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOwogCiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1
ZXN0Lmh0dHBCb2R5KCk7Ci0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OworICAgIHN0ZDo6
b3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEt
PmlzRW1wdHkoKSkgewogICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xv
YmFsU2NvcGUsICpmb3JtRGF0YSk7CiAgICAgICAgIGlmICghYm9keSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaAppbmRleCAzMTU1ZDU2ZTlmZDZlOTJiZDYyMDgwYTc2YTQ3NDViMzg3ZWE0OTFiLi5j
MjczNWRlODdmOGJlZDE4NTc3YmZjYzZjODliYWJmNDM2Y2YyZjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgPSAwOwogfTsKIAotdm9pZCBkaXNwYXRjaEZldGNoRXZl
bnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYg
cmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxD
bGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNTAxZDJlZDhiOGE4ODNjMTBmNTg2NTFiZDg4
NmRkZDQzMDY4YzIxMS4uMWUyNzc2Zjg4M2UxMTNiNDMyZDk4N2VkOGM1ZjZkNjZhNDE5YWQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAgICAgV29ya2VyVGhyZWFkOjpydW5F
dmVudExvb3AoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucykKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVu
dChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykK
IHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSkpOwogICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50ID0gV1RGTW92ZShj
bGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0g
V1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpXSgpIG11dGFibGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IGJlMTdiMmI4NTM5MTY5NWUxYTkwZjY3NTUw
MTc3Mjc1NDg1ZjY1ZWIuLmZjMmIxN2E1N2U5NjNjNDcxMzMwY2EyNmVhNWI2MmNjNzI0Yjk0NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxs
UG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5n
JiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZl
dGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3Ry
aW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvUG9z
dE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50
RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50
KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAKICAgICBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGFJZGVu
dGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhSWRlbnRpZmll
cjsgfQogICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoKCkgY29uc3QgeyByZXR1cm4gbV9kb2VzSGFu
ZGxlRmV0Y2g7IH0KIAogICAgIHZvaWQgc3RhcnRGZXRjaEV2ZW50TW9uaXRvcmluZygpOwpAQCAt
OTQsOCArOTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbEV2ZW50VGltZXJGaXJlZCgp
OwogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IG1fam9iRGF0
YUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX2Rh
dGE7IC8vIEJlY29tZXMgc3RkOjpudWxsb3B0IGFmdGVyIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4gbV9qb2JEYXRhSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9kYXRhOyAvLyBCZWNvbWVzIHN0ZDo6bnVsbG9w
dCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQuCiAg
ICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2Rv
ZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCmluZGV4IGY3NzNhY2QzNWNiMDI1ZjY2Yzc2YzYzZGJhMTU4MjIwYTFmODM2MTkuLjcy
Mjg1ZmRjODM5OWZjMzRiNTRlOTM2MDQ5MTNmYTFhM2ZjNTQ5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkK
ICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwg
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQordm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlv
bnMpCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c3RhcnRGZXRjaCAlbGx1IiwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDFmZDVkYWIzNjExMmE2NjFl
NjEyZDhiNGIxNjg1ZWMxZDJmYzE4YzAuLmM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUxNThjMzhl
MjAwYzEwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVm
PFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBG
ZXRjaE9wdGlvbnMmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0
aW9ucyYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbEZldGNoKFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBjOWVjYjM1NTBmMDk3OTg1ZTA2YWRkYmQ5
ODY4ZDkwZDk0OTM5OTQ1Li4zMWY1ODVmN2I3Y2MxNTJiODYzMmI4ODcyMmQ0MjA4Y2M4NDMxODFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTEwLDE0ICsxMTAsMTQgQEAgc3Ry
dWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7CiAgICAgICAgIGVuY29kZXIgPDwgcmVzcG9u
c2VVUkwgPDwgbWltZVR5cGU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsK
ICAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOwog
ICAgICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgU3RyaW5nIHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmco
U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNvbnN0IFN0cmluZyYgdXBkYXRlKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1Vw
ZGF0ZVZpYUNhY2hlKGNvbnN0IFN0cmluZyYgdXBkYXRlKQogewogICAgIGlmICh1cGRhdGUgPT0g
IkltcG9ydHMiKQogICAgICAgICByZXR1cm4gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpJ
bXBvcnRzOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgd29ya2VyVHlwZVRvU3Ry
aW5nKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V29ya2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHN0
cmluZ1RvV29ya2VyVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0g
IkNsYXNzaWMiKQogICAgICAgICByZXR1cm4gV29ya2VyVHlwZTo6Q2xhc3NpYzsKQEAgLTM1NCw3
ICszNTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V29ya2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwdXNoQ2hhbmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXksIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+
JiBjaGFuZ2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cHVzaENoYW5nZXMoY29u
c3QgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFuZ2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IHVwZGF0ZWRSZWdpc3RyYXRpb25zOwogICAgIFZlY3RvcjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiByZW1vdmVkUmVnaXN0cmF0aW9uczsKQEAgLTUx
NCw3ICs1MTQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMo
KQogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVSTCB7IFVSTCgpLCBzcWwtPmNvbHVtblRleHQo
NikgfTsKICAgICAgICAgYXV0byB3b3JrZXJUeXBlID0gc3RyaW5nVG9Xb3JrZXJUeXBlKHNxbC0+
Y29sdW1uVGV4dCg3KSk7CiAKLSAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcgPSBz
cWwtPmNvbHVtbkJsb2JWaWV3KDgpOwogICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YVZpZXcuc2l6ZSgpKSB7CiAgICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuZGF0YSgpLCBjb250ZW50
U2VjdXJpdHlQb2xpY3lEYXRhVmlldy5zaXplKCkpOwpAQCAtNTMxLDcgKzUzMSw3IEBAIFN0cmlu
ZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gc2Ny
aXB0UmVzb3VyY2VNYXBEYXRhVmlldyA9IHNxbC0+Y29sdW1uQmxvYlZpZXcoMTApOwogICAgICAg
ICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhVmlldy5zaXplKCkpIHsKICAgICAgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJl
c291cmNlTWFwRGF0YVZpZXcuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGFWaWV3LnNpemUo
KSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRy
aWJ1dGVzPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlw
dFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAg
IGlmICghc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cykgewogICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRT
Y3JpcHRzIik7CkBAIC01NDEsNyArNTQxLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGVJ
bmZvRGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDExKTsKLSAgICAgICAgT3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKICAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFW
aWV3LmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YVZpZXcuc2l6ZSgpKTsKICAgICAgICAgY2Vy
dGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmgKaW5kZXggNTcwNzUyNjY5NjIxZGIzNDI4NzdhZjM0YzcxZTQ1Yjk4YjkwYTE5ZC4uNmIx
Y2YwYjJjMDg0NTNhZjYyZTU5MmU0ZTcwYTU3YWM2NDgwYTVlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVnaXN0cmF0aW9uRGF0
YWJhc2UoKTsKIAotICAgIHZvaWQgcHVzaENoYW5nZXMoY29uc3QgSGFzaE1hcDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+PiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBwdXNoQ2hhbmdlcyhjb25z
dCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgY2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaApp
bmRleCBiYTExMzExNWE2NTQxMmZkZTJkZmRhYjYxNjZlNWY2ZTA4NzIzOTZkLi4zYjNjZDk4N2I3
MWU0MjQ3MWYxZTIyNjY3NTA3MDU5NDkxZTJjYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCkBAIC03
Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFJlZjxS
ZWdpc3RyYXRpb25EYXRhYmFzZT4gbV9kYXRhYmFzZTsKIAotICAgIEhhc2hNYXA8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4g
bV91cGRhdGVkUmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV91cGRh
dGVkUmVnaXN0cmF0aW9uczsKICAgICBUaW1lciBtX2RhdGFiYXNlUHVzaFRpbWVyOwogCiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZjdhZjA3ZDFiNGE5Yzc1NDM3
OGRlMjM2ZTRhNGZiOWZlMWYyZGIyMS4uN2I5YjVmYmZmMTM0NWMxMmYzMTExYjU4Y2I2N2U2YmNh
YWFlNjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVy
Ojp3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIHdvcmtlcjsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyOjpzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50
T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBjbGllbnRJZGVudGlmaWVyKSBjb25zdAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2luQnlJRChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOwogICAgIGlm
IChpdGVyYXRvciA9PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKQpAQCAtNDk5
LDcgKzQ5OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNo
RmluaXNoZWQocmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYg
am9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlk
ZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CkBAIC01MTUs
NyArNTE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29u
c3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICBqb2JRdWV1ZS0+c2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoKmpvYkRhdGFJZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmll
cigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
Y29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlk
ZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRD
b250ZXh0U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlciYgd29ya2VyKQogewog
ICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTUzNyw3ICs1
MzcsNyBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVQcmVpbnN0YWxsYXRpb25Xb3JrZXIoU1dT
ZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRQcmVJbnN0YWxs
YXRpb25Xb3JrZXIobnVsbHB0cik7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3Rh
bGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0
YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkK
K3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewogICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxsOiBGaW5pc2hlZCBp
bnN0YWxsIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1LCBzdWNjZXNzIGlzICVkIiwgdGhpcywgd29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB3YXNTdWNjZXNzZnVsKTsKIApAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdURjo6RnVuCiAgICAgfQogfQogCi1PcHRpb25hbDxF
eGNlcHRpb25EYXRhPiBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3N0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4gU1dTZXJ2ZXI6OmNsYWltKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gd29ya2VyLnJlZ2lzdHJhdGlv
bigpOwogICAgIGlmICghcmVnaXN0cmF0aW9uIHx8ICZ3b3JrZXIgIT0gcmVnaXN0cmF0aW9uLT5h
Y3RpdmVXb3JrZXIoKSkKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFNXU2VydmVyOjp1cGRhdGVB
cHBCb3VuZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
TAogICAgIH0KIH0KIAotdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBk
YXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYm
IHVzZXJBZ2VudCkKK3ZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChD
bGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0
YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmlu
ZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50
aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCBiYTM3Y2VhOTEyOTdkNjQ5OWFhMmE5ZWJkODgyODZjNDk0ZjY5NjFlLi5j
ZDYyMjY2MzdhMjUxNmJmM2ZjNTAxZWM2MWEyNjFkMjkzNmZiMjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBj
bGllbnQgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9u
U3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUlu
Q2xpZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVnaXN0cmF0aW9u
TGFzdFVwZGF0ZVRpbWUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdhbGxU
aW1lKSA9IDA7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVy
V29ya2VyKiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdv
cmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdp
dGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRVc2Vy
QWdlbnQoY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dT
ZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKQEAgLTE3MiwxNyArMTcyLDE3IEBAIHB1YmxpYzoK
IAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9y
ZTsgfQogCi0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBPcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2Vy
Jik7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZl
cldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29y
a2VyJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYp
OwogICAgIHZvaWQgbWF0Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYpOwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+IGNsYWltKFNXU2VydmVyV29ya2VyJik7
CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiBjbGFpbShTV1NlcnZlcldvcmtlciYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2Vy
dmVycygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVz
ZXJBZ2VudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5n
JiYgdXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKTsKIAogICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qKT47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwCmluZGV4IDNmMjg1N2M1MDU0ODNkMmE3MzBlMmEwOTczMzZhYmE2ZWM4NTBk
YmQuLjEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5N2Q1MDRhNTM2Njc3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0CiAgICAgICAgIGJyZWFrOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4gc2VydmljZVdvcmtlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4gc2VydmljZVdvcmtlckRhdGE7CiAgICAgaWYgKHdvcmtlcikKICAgICAgICAgc2Vydmlj
ZVdvcmtlckRhdGEgPSB3b3JrZXItPmRhdGEoKTsKIApAQCAtMTQ2LDE1ICsxNDYsMTUgQEAgdm9p
ZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Zm9yRWFjaENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKFNXU2VydmVyOjoKIAogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OmRhdGEoKSBjb25zdAogewotICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2VyRGF0YTsKICAgICBpZiAobV9pbnN0YWxsaW5n
V29ya2VyKQogICAgICAgICBpbnN0YWxsaW5nV29ya2VyRGF0YSA9IG1faW5zdGFsbGluZ1dvcmtl
ci0+ZGF0YSgpOwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3Jr
ZXJEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3Jr
ZXJEYXRhOwogICAgIGlmIChtX3dhaXRpbmdXb3JrZXIpCiAgICAgICAgIHdhaXRpbmdXb3JrZXJE
YXRhID0gbV93YWl0aW5nV29ya2VyLT5kYXRhKCk7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyRGF0YT4gYWN0aXZlV29ya2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJEYXRhPiBhY3RpdmVXb3JrZXJEYXRhOwogICAgIGlmIChtX2FjdGl2ZVdvcmtlcikKICAgICAg
ICAgYWN0aXZlV29ya2VyRGF0YSA9IG1fYWN0aXZlV29ya2VyLT5kYXRhKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiMDU2MjhmNDAwZWE5ZDljNjM3
ZmMzYWI0NTdmMDA0ZmRjNWYyODA1Li44NTAyNjA0MWQ4OTdmYzE2Y2I0MmQwMjE5ZDg4NmM3N2M3
OWJkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01
MCwxOSArNTAsMTkgQEAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkKIHsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
dm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYg
am9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtl
ciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKQogICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0
Y2gpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBq
b2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQogewogICAgIGlmIChhdXRvKiB3b3JrZXIg
PSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSkKICAgICAgICAgd29ya2VyLT5zY3JpcHRDb250ZXh0U3RhcnRlZChqb2JE
YXRhSWRlbnRpZmllciwgZG9lc0hhbmRsZUZldGNoKTsKIH0KICAgICAKLXZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVs
KQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoY29u
c3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRh
SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikpCiAgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoSW5zdGFsbChqb2JEYXRhSWRlbnRpZmll
ciwgd2FzU3VjY2Vzc2Z1bCk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV28KICAgICB9CiB9CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8q
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHNlcnZlciA9IHdvcmtlciA/IHdvcmtl
ci0+c2VydmVyKCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggYThiYjA3MGVjZGY2ZjY1ZWRhMjRlNTgyNmQ4NmQ3M2NkZDI3ZjZjYS4uN2Q1Yzhm
MTQ5YjczMzFkNDBhNGEyZWFjYWQ5ZDY0YjQyMDAxYzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NywyMCArNTcsMjAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENs
aWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwogCiAgICAgLy8gTWVz
c2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFy
dGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4m
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRG
aW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZl
bnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlw
dFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMjQwNTI5ODc4YjdiYmEyZDVjOGRlMjVj
Y2FjMTZmNDYwMGNmOWNmZC4uNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKICAgICBy
ZXR1cm4gbV9zZXJ2ZXIgPyBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4m
IGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJU
KG1fc2VydmVyKTsKICAgICBpZiAobV9zZXJ2ZXIpCiAgICAgICAgIG1fc2VydmVyLT5zY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMsIG1lc3NhZ2UpOwog
fQogCi12b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwg
Ym9vbCBkb2VzSGFuZGxlRmV0Y2gpCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0
U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkKIHsKICAgICBtX3No
b3VsZFNraXBIYW5kbGVGZXRjaCA9ICFkb2VzSGFuZGxlRmV0Y2g7CiAgICAgQVNTRVJUKG1fc2Vy
dmVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZQogICAgICAg
ICBtX3NlcnZlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlz
KTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFs
bChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpv
YkRhdGFJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7CiAgICAgaWYgKHN0YXRlID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVk
dW5kYW50KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRU
ZXJtaW5hdGVkKCkKICAgICAgICAgbV9zZXJ2ZXItPndvcmtlckNvbnRleHRUZXJtaW5hdGVkKCp0
aGlzKTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29y
a2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJiBjbGllbnRJZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBjbGllbnRJZCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9zZXJ2ZXIpOwogICAgIGlmICghbV9zZXJ2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggZDg2M2UyNTI0
MDlmZDI3NWMwNzM1YzZlMGQ3OWQwODk0YTMzNzc0ZS4uYmU1NWVlYjFhYTJmZTYyYjYxNzIxZTkz
MzEwYjBjYTRkYTEyOWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtOTUsMTIgKzk1LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRp
bmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdFdmVudHMoYm9vbCk7CiAKLSAgICB2
b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiYsIGJvb2wgZG9lc0hhbmRsZUZldGNoKTsKLSAgICB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIGJv
b2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChj
b25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCBkb2Vz
SGFuZGxlRmV0Y2gpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBib29sIHdhc1N1Y2Nlc3NmdWwp
OwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1p
bmF0ZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNo
QWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZl
bnRzIHsgZmFsc2UgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vdFJ1bm5pbmcgfTsK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CiAgICAgUmVnaXN0cmFibGVE
b21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAgICBib29sIG1faXNTa2lwV2FpdGluZ0ZsYWdT
ZXQgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4g
bV93aGVuQWN0aXZhdGVkSGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCmlu
ZGV4IDJkYzhlODc3NmU3MTQxN2Y1Nzc1ODg4YThkOTIyYTExYzFlNzg3NzAuLjc0NTZiZTQzNjdk
MmQzNmJlMTQwM2QzNjQ1M2JlMGFlYzY3Y2I0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV29ya2xldDo6YWRkTW9kdWxlKGNvbnN0IFN0
cmluZyYgbW9kdWxlVVJMU3RyaW5nLCBXb3JrbGV0T3B0aW9ucyYmIG9wdGlvbnMsCiAKICAgICBm
b3IgKGF1dG8mIHByb3h5IDogbV9wcm94aWVzKSB7CiAgICAgICAgIHByb3h5LT5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbcGVuZGluZ1Rhc2tzID0gcGVuZGluZ1Rhc2tzLmNv
cHlSZWYoKSwgbW9kdWxlVVJMID0gbW9kdWxlVVJMLmlzb2xhdGVkQ29weSgpLCBjcmVkZW50aWFs
cyA9IG9wdGlvbnMuY3JlZGVudGlhbHMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuZmV0Y2hB
bmRJbnZva2VTY3JpcHQobW9kdWxlVVJMLCBjcmVkZW50aWFscywgW3BlbmRpbmdUYXNrcyA9IFdU
Rk1vdmUocGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0
aXZpdHkpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuZmV0Y2hBbmRJbnZv
a2VTY3JpcHQobW9kdWxlVVJMLCBjcmVkZW50aWFscywgW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUo
cGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkp
XShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGlu
Z1Rhc2tzKSwgZXhjZXB0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGV4Y2VwdGlvbiksIHBlbmRpbmdB
Y3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRp
bmdUYXNrcy0+YWJvcnQoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYWUwZTMzODkxZGJjODlmMTQ2
ODdkNDE0ODAyYWFhMTJkMGQ4NGZmLi5hODIyMDVhYmJkN2U3YTgwM2M1Y2FkZWI2NzNiYmY5MWY1
NWQzMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBSZWZlcnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2Nv
cGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6Ok5v
UmVmZXJyZXI7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNj
cmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVu
dGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9r
ZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3Jl
ZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIHNjcmlwdCgpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlVVJMLCBjcmVkZW50
aWFscywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA2NTJhM2I2YmRkOWY1NTE4NDc5YTNmYThl
YjlhZjljOWU2ZGRiZDcxLi43ZWUzOGIyNjgzNmVjYWRjYzg3NzNkYjBmZWViZjczMTQxZWNkYWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKTsKKyAgICB2b2lkIGZldGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVS
TCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAKICAgICBEb2N1bWVudCogcmVzcG9uc2libGVE
b2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBjb25zdCBEb2N1bWVu
dCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7
IH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fdXJsOwogICAgIEpT
Qzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7Ci0gICAgT3B0aW9uYWw8U2NyaXB0U291
cmNlQ29kZT4gbV9jb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9j
b2RlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgK
aW5kZXggYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNy4uYWZjOTAwMWE3
NjE2M2I2NWM4ZDNiY2E3M2UxN2Q4OTk2YzMzNmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAg
ICAgaW50IG1fZXJyb3JDb3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxUZXh0UG9zaXRpb24+IG1f
bGFzdEVycm9yUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxUZXh0UG9zaXRpb24+IG1fbGFz
dEVycm9yUG9zaXRpb247CiAgICAgU3RyaW5nQnVpbGRlciBtX2Vycm9yTWVzc2FnZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBkODUyNDRjYTcyMDViMmFm
NzBhY2UyOTE1YjQ1YTU1N2M4Njc1MjA5Li4xN2Y2ZjQ2MGE4M2U5ZjJmNDQ0ZDU4MTQzNjVmYzFk
NDQ5NzgyZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwNSw3
ICs0MDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgcmV0dXJuIG9wZW4obWV0aG9k
LCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jKTsKIH0KIAotT3B0aW9uYWw8RXhjZXB0aW9uT3I8
dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKK3N0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKIHsKICAgICAv
LyBBIHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBzaG91bGQg
bm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0aGF0IHZhbHVlIHRvIHRoZSBj
YWxsZXIuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFu
ZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0aG0uCkBAIC00MzksNyArNDM5
LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBYTUxIdHRwUmVxdWVzdDo6c2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYgc2VuZFR5cGUpCitF
eGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChzdGQ6Om9wdGlvbmFsPFNlbmRU
eXBlcz4mJiBzZW5kVHlwZSkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kWE1MSHR0cFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1cmwoKS5zdHJpbmco
KSk7CiAgICAgbV91c2VyR2VzdHVyZVRva2VuID0gVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJl
bnRVc2VyR2VzdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1NzZh
MmVkNDhlYzI1Y2FmMmVjMjdhYTQyYTg5YjMxOTc0MzFhY2VjLi41Njg3YjhiOTQ2MWQyMDcxOWI5
NDE0NjZlOGU2YTljNTJlY2IxNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApA
QCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gb3Blbihjb25z
dCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0
cmluZyYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNz
d29yZCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoc3RkOjpvcHRpb25hbDxTZW5kVHlwZXM+JiYp
OwogICAgIHZvaWQgYWJvcnQoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRSZXF1ZXN0SGVh
ZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gb3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAg
LTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJc0RvbmUoYm9vbCkgZmluYWw7CiAK
LSAgICBPcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gcHJlcGFyZVRvU2VuZCgpOworICAgIHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IHByZXBhcmVUb1NlbmQoKTsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZW5kKERvY3VtZW50Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2Vu
ZChjb25zdCBTdHJpbmcmID0geyB9KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKEJsb2Im
KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWY8WE1MSHR0cFJlcXVl
c3Q+IHByb3RlY3RlZFRoaXM7IC8vIEtlZXAgb2JqZWN0IGFsaXZlIHdoaWxlIGxvYWRpbmcgZXZl
biBpZiB0aGVyZSBpcyBubyBsb25nZXIgYSBKUyB3cmFwcGVyLgogICAgICAgICBSZWY8VGhyZWFk
YWJsZUxvYWRlcj4gbG9hZGVyOwogICAgIH07Ci0gICAgT3B0aW9uYWw8TG9hZGluZ0FjdGl2aXR5
PiBtX2xvYWRpbmdBY3Rpdml0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRpbmdBY3Rpdml0eT4g
bV9sb2FkaW5nQWN0aXZpdHk7CiAKICAgICBTdHJpbmcgbV9yZXNwb25zZUVuY29kaW5nOwogCkBA
IC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIE1vbm90b25pY1RpbWUgbV9zZW5kaW5n
VGltZTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKICAgICBSZWZQ
dHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOwogICAgIGJvb2wgbV9oYXNS
ZWxldmFudEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwMjdkZGUzOGUwOTU3Y2M0MWNiODZi
NjYyYmM3Y2ZmYzM0MmQzZDU1Li4xY2RhOTdjMTc2NTA2ZDk1ZDZiMjExZTEyMTE2ZmUyNjg3ZjFk
YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
CkBAIC0xOTAsNiArMTkwLDYgQEAgcHJpdmF0ZToKIHhtbERvY1B0ciB4bWxEb2NQdHJGb3JTdHJp
bmcoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogI2VuZGlmCiAKLU9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBw
YXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+PiBwYXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAxMTVhYmIxYmJlNDJiOThiOWU0MGI3YjEz
N2FlZDQ2YzRmM2Y3ZDI1Li4xZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5Nzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBib29sIFhNTERvY3VtZW50UGFy
c2VyOjphcHBlbmRGcmFnbWVudFNvdXJjZShjb25zdCBTdHJpbmcmIGNodW5rKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi11c2luZyBBdHRyaWJ1dGVQYXJzZVN0YXRl
ID0gT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+OwordXNpbmcgQXR0cmlidXRlUGFy
c2VTdGF0ZSA9IHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+OwogCiBzdGF0
aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNv
bnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogLyp4bWxQcmVmaXgqLywg
Y29uc3QgeG1sQ2hhciogLyp4bWxVUkkqLywgaW50IC8qbnVtTmFtZXNwYWNlcyovLCBjb25zdCB4
bWxDaGFyKiogLypuYW1lc3BhY2VzKi8sIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgLypudW1EZWZh
dWx0ZWQqLywgY29uc3QgeG1sQ2hhcioqIGxpYnhtbEF0dHJpYnV0ZXMpCiB7CkBAIC0xNDc5LDcg
KzE0NzksNyBAQCBzdGF0aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50TnNIYW5kbGVyKHZv
aWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHhtbExvYwogICAgIH0KIH0KIAotT3B0aW9uYWw8
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3N0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQXR0cmli
dXRlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSAi
PD94bWwgdmVyc2lvbj1cIjEuMFwiPz48YXR0cnMgIiArIHN0cmluZyArICIgLz4iOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJEcml2ZXIvQWN0
aW9ucy5oCmluZGV4IDMwMjRmMmQwMGNkZWY2YzE0YzJjNzM4YzRkMTI2ZmExYjRhODcwY2IuLmJh
YmI1NGVmMjI2NTZhN2UwNjllYzk3MDAwZWZhZTUyNGQzNWExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQWN0aW9ucy5oCkBA
IC0zNiw3ICszNiw3IEBAIHN0cnVjdCBJbnB1dFNvdXJjZSB7CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsgTm9uZSwgS2V5LCBQb2ludGVyLCBXaGVlbCB9OwogCiAgICAgVHlwZSB0eXBlOwotICAgIE9w
dGlvbmFsPFBvaW50ZXJUeXBlPiBwb2ludGVyVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvaW50
ZXJUeXBlPiBwb2ludGVyVHlwZTsKIH07CiAKIHN0cnVjdCBQb2ludGVyUGFyYW1ldGVycyB7CkBA
IC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBQb2ludGVyT3JpZ2luIHsKICAgICBlbnVtIGNsYXNzIFR5
cGUgeyBWaWV3cG9ydCwgUG9pbnRlciwgRWxlbWVudCB9OwogCiAgICAgVHlwZSB0eXBlOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBl
bGVtZW50SUQ7CiB9OwogCiBzdHJ1Y3QgQWN0aW9uIHsKQEAgLTY0LDE3ICs2NCwxNyBAQCBzdHJ1
Y3QgQWN0aW9uIHsKICAgICBTdHJpbmcgaWQ7CiAgICAgVHlwZSB0eXBlOwogICAgIFN1YnR5cGUg
c3VidHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZHVyYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gZHVyYXRpb247CiAKLSAgICBPcHRpb25hbDxQb2ludGVyVHlwZT4gcG9p
bnRlclR5cGU7Ci0gICAgT3B0aW9uYWw8TW91c2VCdXR0b24+IGJ1dHRvbjsKLSAgICBPcHRpb25h
bDxQb2ludGVyT3JpZ2luPiBvcmlnaW47Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4geDsKLSAgICBP
cHRpb25hbDxpbnQ2NF90PiB5OwotICAgIE9wdGlvbmFsPGludDY0X3Q+IGRlbHRhWDsKLSAgICBP
cHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7CisgICAgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4g
cG9pbnRlclR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRvbj4gYnV0dG9uOworICAg
IHN0ZDo6b3B0aW9uYWw8UG9pbnRlck9yaWdpbj4gb3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4geDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHk7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBkZWx0YVg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGtleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
a2V5OwogfTsKIAogfSAvLyBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
Q2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NhcGFiaWxpdGllcy5oCmluZGV4IDBi
NmYzYjM4N2JiODI5YzFiNGM2MjNmMWE3MDU1ZTFhYzFkMjhiMjQuLjc1Y2NiYTFhNTVkMWY2MzNk
NTdhOWI3YzA4MzA5YzRjZWQ1ZjlhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2Fw
YWJpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9DYXBhYmlsaXRpZXMuaApAQCAtMzQs
OSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAKIHN0cnVjdCBUaW1lb3V0cyB7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBzY3JpcHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBwYWdlTG9h
ZDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGltcGxpY2l0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzY3JpcHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhZ2VMb2FkOworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbXBsaWNpdDsKIH07CiAKIGVudW0gY2xhc3MgUGFnZUxvYWRT
dHJhdGVneSB7CkBAIC01NSwzNyArNTUsMzcgQEAgZW51bSBjbGFzcyBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciB7CiAKIHN0cnVjdCBQcm94eSB7CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBhdXRvY29uZmlnVVJMOwotICAgIE9wdGlvbmFsPFVSTD4gZnRwVVJMOwotICAg
IE9wdGlvbmFsPFVSTD4gaHR0cFVSTDsKLSAgICBPcHRpb25hbDxVUkw+IGh0dHBzVVJMOwotICAg
IE9wdGlvbmFsPFVSTD4gc29ja3NVUkw7Ci0gICAgT3B0aW9uYWw8dWludDhfdD4gc29ja3NWZXJz
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhdXRvY29uZmlnVVJMOworICAgIHN0ZDo6
b3B0aW9uYWw8VVJMPiBmdHBVUkw7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBVUkw7Cisg
ICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzVVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBz
b2Nrc1VSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHNvY2tzVmVyc2lvbjsKICAgICBW
ZWN0b3I8U3RyaW5nPiBpZ25vcmVBZGRyZXNzTGlzdDsKIH07CiAKIHN0cnVjdCBDYXBhYmlsaXRp
ZXMgewotICAgIE9wdGlvbmFsPFN0cmluZz4gYnJvd3Nlck5hbWU7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBicm93c2VyVmVyc2lvbjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsK
LSAgICBPcHRpb25hbDxib29sPiBhY2NlcHRJbnNlY3VyZUNlcnRzOwotICAgIE9wdGlvbmFsPGJv
b2w+IHN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHk7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc2V0V2lu
ZG93UmVjdDsKLSAgICBPcHRpb25hbDxUaW1lb3V0cz4gdGltZW91dHM7Ci0gICAgT3B0aW9uYWw8
UGFnZUxvYWRTdHJhdGVneT4gcGFnZUxvYWRTdHJhdGVneTsKLSAgICBPcHRpb25hbDxVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I7Ci0gICAgT3B0aW9uYWw8
UHJveHk+IHByb3h5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBicm93c2VyTmFtZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYnJvd3NlclZlcnNpb247CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFjY2VwdElu
c2VjdXJlQ2VydHM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzdHJpY3RGaWxlSW50ZXJhY3Rh
YmlsaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2V0V2luZG93UmVjdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRpbWVvdXRzPiB0aW1lb3V0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VMb2Fk
U3RyYXRlZ3k+IHBhZ2VMb2FkU3RyYXRlZ3k7CisgICAgc3RkOjpvcHRpb25hbDxVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I7CisgICAgc3RkOjpvcHRpb25h
bDxQcm94eT4gcHJveHk7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAg
T3B0aW9uYWw8U3RyaW5nPiBicm93c2VyQmluYXJ5OwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBicm93c2VyQXJndW1lbnRzOwotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+Pj4gY2VydGlmaWNhdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBi
cm93c2VyQmluYXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJyb3dzZXJB
cmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4+IGNlcnRpZmljYXRlczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBPcHRp
b25hbDxib29sPiB1c2VPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHVzZU92ZXJsYXlTY3JvbGxiYXJzOwogI2VuZGlmCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRf
U0VSVkVSKQotICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0QWRkcjsKLSAgICBPcHRpb25hbDxp
bnQ+IHRhcmdldFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldEFkZHI7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRhcmdldFBvcnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDA4MzFhZjcxMjFhMWY5MGIwN2M2YzhjYWM0ODE3NmQ1
OTA1YTI2NDMuLjM1M2RhMGMzZjIzMzMzM2JkNjM0NTI2ZjhjOGRiMzQyOTY1ZmQyODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIFByb3RvY29s
RXJyb3JDb2RlIHsKICAgICBTZXJ2ZXJFcnJvciA9IC0zMjAwMAogfTsKIAotQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBPcHRpb25hbDxF
cnJvckNvZGU+IGVycm9yQ29kZSkKK0NvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRy
PEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvZGU+IGVycm9yQ29k
ZSkKICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkKIHsKICAgICBpZiAoIW1fZXJyb3JDb2Rl
KSB7CkBAIC0xMTksNyArMTE5LDcgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQ
dHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBPcHRpb25hbDxFcnJvckNvZGU+IGUKICAgICB9CiB9
CiAKLUNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoRXJyb3JDb2RlIGVycm9yQ29kZSwgT3B0
aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UpCitDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0
KEVycm9yQ29kZSBlcnJvckNvZGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2Up
CiAgICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUpCiAgICAgLCBtX2Vycm9yTWVzc2FnZShlcnJv
ck1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQu
aCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCmluZGV4IDViNDM1NWQ3MzUyZjkx
NjQ4YmZjMjQ1ZDgwNjUwMTJiYWI2ODk0YWQuLjI5ZGRhNzU5MzA5ZTYxMjdlNjJkNzFkMDQ5N2Zi
MTU2OTM1NDgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5o
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvbW1hbmRSZXN1bHQoV1RGTW92ZShyZXN1bHQpLCBD
b21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcik7CiAgICAgfQogCi0gICAgc3Rh
dGljIENvbW1hbmRSZXN1bHQgZmFpbChFcnJvckNvZGUgZXJyb3JDb2RlLCBPcHRpb25hbDxTdHJp
bmc+IGVycm9yTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGF0aWMgQ29tbWFuZFJlc3Vs
dCBmYWlsKEVycm9yQ29kZSBlcnJvckNvZGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1l
c3NhZ2UgPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbWFuZFJlc3Vs
dChlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfQpAQCAtODIsMTYgKzgyLDE2IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhIW1fZXJyb3JDb2RlOyB9
CiAgICAgRXJyb3JDb2RlIGVycm9yQ29kZSgpIGNvbnN0IHsgQVNTRVJUKGlzRXJyb3IoKSk7IHJl
dHVybiBtX2Vycm9yQ29kZS52YWx1ZSgpOyB9CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nKCkgY29u
c3Q7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IEFTU0VSVChp
c0Vycm9yKCkpOyByZXR1cm4gbV9lcnJvck1lc3NhZ2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZXJyb3JNZXNzYWdlKCkgY29uc3QgeyBBU1NFUlQoaXNFcnJvcigpKTsgcmV0dXJuIG1f
ZXJyb3JNZXNzYWdlOyB9CiAgICAgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mIGFkZGl0aW9u
YWxFcnJvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQWRkaXRpb25hbERhdGE7IH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiwgT3B0aW9uYWw8RXJyb3JDb2RlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgZXhwbGljaXQgQ29t
bWFuZFJlc3VsdChFcnJvckNvZGUsIE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOwor
ICAgIGV4cGxpY2l0IENvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmLCBzdGQ6Om9w
dGlvbmFsPEVycm9yQ29kZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0IENvbW1hbmRS
ZXN1bHQoRXJyb3JDb2RlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOwog
CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiBtX3Jlc3VsdDsKLSAgICBPcHRpb25hbDxFcnJvckNv
ZGU+IG1fZXJyb3JDb2RlOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9lcnJvck1lc3NhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxFcnJvckNvZGU+IG1fZXJyb3JDb2RlOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2Vycm9yTWVzc2FnZTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBtX2Vy
cm9yQWRkaXRpb25hbERhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0hU
VFBTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZlci5oCmluZGV4IDRiNGEyZTIy
N2YzNDg5NzZlZmI5NmE3OGI5YzA1MWI2NWM3Mzc4MzEuLjg0NzMyMzY1MDA0YTc2MTBjZGZiMTEz
MGNkYzg4ZTJkN2MyZGJiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZlci5oCkBAIC03NSw3ICs3NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50JiwgQ29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRDbG9zZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCkgZmlu
YWw7CiAKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY2xpZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudDsKICAgICBIVFRQUGFyc2VyIG1fcGFyc2VyOwog
I2VuZGlmCiB9OwpAQCAtODksMTIgKzg5LDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBIVFRQ
U2VydmVyKEhUVFBSZXF1ZXN0SGFuZGxlciYpOwogICAgIH5IVFRQU2VydmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgYm9vbCBsaXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWdu
ZWQgcG9ydCk7CisgICAgYm9vbCBsaXN0ZW4oY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBo
b3N0LCB1bnNpZ25lZCBwb3J0KTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAogcHJpdmF0ZToK
ICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCi0gICAgT3B0aW9uYWw8Q29ubmVjdGlv
bklEPiBkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIFBsYXRmb3JtU29j
a2V0VHlwZSkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSBmaW5h
bDsKICAgICB2b2lkIGRpZENoYW5nZVN0YXR1cyhSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dCYsIENvbm5lY3Rpb25JRCwgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Okxpc3RlbmVy
OjpTdGF0dXMpIGZpbmFsOwogI2VuZGlmCiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCi0gICAgT3B0aW9uYWw8
Q29ubmVjdGlvbklEPiBtX3NlcnZlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4g
bV9zZXJ2ZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDIwZmM5ODdhNGE4
YmY3YmY0YTFlY2IwODQ5YTNkYjYyMzU3YjE4OTUuLjc4NGYyMWYzMDA0OGJiZmVlZTRjMTk4ZmQ2
MzMyMDY3MDE0Y2JmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtODEsNyArODEsNyBAQCBib29s
IFNlc3Npb246OmlzQ29ubmVjdGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9ob3N0LT5pc0Nvbm5l
Y3RlZCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBmaXJzdFdpbmRvd0hhbmRsZUlu
UmVzdWx0KEpTT046OlZhbHVlJiByZXN1bHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGZpcnN0V2luZG93SGFuZGxlSW5SZXN1bHQoSlNPTjo6VmFsdWUmIHJlc3VsdCkKIHsKICAgICBh
dXRvIGhhbmRsZXMgPSByZXN1bHQuYXNBcnJheSgpOwogICAgIGlmIChoYW5kbGVzICYmIGhhbmRs
ZXMtPmxlbmd0aCgpKSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hU
b0Jyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dCwgRnVuY3Rpb248
dm8KICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0cmF0
ZWd5U3RyaW5nKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9h
ZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIWNhcGFiaWxpdGllcygpLnBhZ2VM
b2FkU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBTZXNzaW9uOjphY2NlcHRBbmROb3RpZnlBbGVydChGdW5jdGlvbjx2b2lkIChD
b21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb24KIHZvaWQgU2Vzc2lvbjo6cmVwb3J0VW5leHBl
Y3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGdldEFsZXJ0VGV4dChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgewotICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IGFsZXJ0VGV4dDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGFsZXJ0VGV4dDsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAg
ICAgICBhdXRvIHZhbHVlU3RyaW5nID0gcmVzdWx0LnJlc3VsdCgpLT5hc1N0cmluZygpOwogICAg
ICAgICAgICAgaWYgKCEhdmFsdWVTdHJpbmcpCkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBTZXNz
aW9uOjpnZXRXaW5kb3dIYW5kbGVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBTZXNzaW9uOjpuZXdXaW5kb3coT3B0
aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbjo6bmV3V2luZG93KHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6Ok5vU3VjaFdpbmRvdykpOwpAQCAtODMxLDcgKzgzMSw3IEBAIHZv
aWQgU2Vzc2lvbjo6Z2V0V2luZG93UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vzc2lvbjo6c2V0V2lu
ZG93UmVjdChPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8
ZG91YmxlPiB3aWR0aCwgT3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb246OnNldFdp
bmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWln
aHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpOb1N1Y2hXaW5kb3cpKTsKQEAgLTEwMDMsNyArMTAwMyw3IEBAIFN0cmluZyBTZXNzaW9uOjpl
eHRyYWN0RWxlbWVudElEKEpTT046OlZhbHVlJiB2YWx1ZSkKICAgICByZXR1cm4gZWxlbWVudElE
OwogfQogCi12b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucywgRnVuY3Rp
b248dm9pZCAoT3B0aW9uYWw8UmVjdD4mJiwgT3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVs
ZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8
UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fdG9wbGV2ZWxCcm93
c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTEwMjUsOCArMTAyNSw4IEBAIHZvaWQgU2Vzc2lv
bjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNl
dDxFbGVtZW50TGF5CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBP
cHRpb25hbDxpbnQ+IGVsZW1lbnRYOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1lbnRZOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFg7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBlbGVtZW50WTsKICAgICAgICAgYXV0byBlbGVtZW50UG9zaXRpb24gPSByZWN0T2Jq
ZWN0LT5nZXRPYmplY3QoIm9yaWdpbiJfcyk7CiAgICAgICAgIGlmIChlbGVtZW50UG9zaXRpb24p
IHsKICAgICAgICAgICAgIGVsZW1lbnRYID0gZWxlbWVudFBvc2l0aW9uLT5nZXRJbnRlZ2VyKCJ4
Il9zKTsKQEAgLTEwMzcsOCArMTAzNyw4IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRM
YXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1l
bnRXaWR0aDsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBlbGVtZW50SGVpZ2h0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gZWxlbWVudEhlaWdodDsKICAgICAgICAgYXV0byBlbGVtZW50U2l6ZSA9IHJlY3RPYmplY3Qt
PmdldE9iamVjdCgic2l6ZSJfcyk7CiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSkgewogICAgICAg
ICAgICAgZWxlbWVudFdpZHRoID0gZWxlbWVudFNpemUtPmdldEludGVnZXIoIndpZHRoIl9zKTsK
QEAgLTEzNTksNyArMTM1OSw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QoY29uc3Qg
U3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9
LCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4mJiwgYm9vbCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgeworICAgICAgICBjb21wdXRlRWxlbWVudExh
eW91dChlbGVtZW50SUQsIHsgfSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBz
dGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9y
KSB7CiAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW4KICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVwbG9hZFR5
cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChjb25zdCBSZWZQdHI8
SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkKK3N0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVw
bG9hZFR5cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChjb25zdCBS
ZWZQdHI8SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkKIHsKICAgICBpZiAoIXJlc3VsdFZhbHVl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTczMCw3ICsxNzMwLDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9
IHsgRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgRWxlbWVudExh
eW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlcyB9OwotICAgICAgICAgICAgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcywg
ZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwg
Ym9vbCBpc09ic2N1cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0
aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghcmVjdCB8
fCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsZWFyKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRp
b25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkIH07Ci0g
ICAgICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+
JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9u
cywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0
ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJy
b3IpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTUzLDEzICsyMTUzLDEzIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc2V0IHN0aWNreSBtb2RpZmllcnMgaWYgbmVlZGVkLgogICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6OlNoaWZ0KQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJTaGlmdCJf
cykgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7
IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPigiU2hpZnQiX3MpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0aWNreU1vZGlmaWVycyAmIEtleU1vZGlmaWVyOjpDb250cm9sKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJDb250cm9s
Il9zKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMuYXBwZW5k
KHsgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+KCJDb250cm9sIl9zKSB9KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdGlja3lNb2RpZmllcnMgJiBLZXlNb2RpZmllcjo6QWx0ZXJuYXRlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVy
YWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJB
bHRlcm5hdGUiX3MpIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9u
cy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIkFsdGVybmF0ZSJfcykgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6Ok1ldGEpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJk
SW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFN0cmlu
Zz4oIk1ldGEiX3MpIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9u
cy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIk1ldGEiX3MpIH0pOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25z
KFdURk1vdmUoaW50ZXJhY3Rpb25zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAt
MjM4MCw3ICsyMzgwLDcgQEAgdm9pZCBTZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlv
bnMoVmVjdG9yPEtleWJvYXJkSW50ZXJhY3Rpb24+JiYgaW50ZXJhY3QKICAgICB9KTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPFNlc3Npb246OkNvb2tpZT4gcGFyc2VBdXRvbWF0aW9uQ29va2llKGNv
bnN0IEpTT046Ok9iamVjdCYgY29va2llT2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vz
c2lvbjo6Q29va2llPiBwYXJzZUF1dG9tYXRpb25Db29raWUoY29uc3QgSlNPTjo6T2JqZWN0JiBj
b29raWVPYmplY3QpCiB7CiAgICAgU2Vzc2lvbjo6Q29va2llIGNvb2tpZTsKIApAQCAtMjU5OCw3
ICsyNTk4LDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotSW5wdXRT
b3VyY2UmIFNlc3Npb246OmdldE9yQ3JlYXRlSW5wdXRTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwg
SW5wdXRTb3VyY2U6OlR5cGUgdHlwZSwgT3B0aW9uYWw8UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBl
KQorSW5wdXRTb3VyY2UmIFNlc3Npb246OmdldE9yQ3JlYXRlSW5wdXRTb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgSW5wdXRTb3VyY2U6OlR5cGUgdHlwZSwgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlw
ZT4gcG9pbnRlclR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2FjdGl2ZUlucHV0U291
cmNlcy5hZGQoaWQsIElucHV0U291cmNlKCkpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKQEAgLTI5MjQsNyArMjkyNCw3IEBAIHZvaWQgU2Vzc2lvbjo6c2VuZEFsZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+CiAgICAgfSk7
CiB9CiAKLXZvaWQgU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVt
ZW50SUQsIE9wdGlvbmFsPGJvb2w+IHNjcm9sbEludG9WaWV3LCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uOjp0YWtlU2Ny
ZWVuc2hvdChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElELCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHNjcm9sbEludG9WaWV3LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgoZWxlbWVudElEICYmICFtX2N1cnJlbnRCcm93
c2luZ0NvbnRleHQpIHx8ICghZWxlbWVudElEICYmICFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6Tm9TdWNoV2luZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCmluZGV4IDQ1
ZDIwM2Q2NmRiMmMyODEwZmMyODY0ODhjNTY2ODBhNzIzZWY5NTYuLmFmNjUxNTY5MGFmNDU5NmNh
ZWZmNDk1ODhiNTI0YzE0OTI2ZDNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCkBAIC02MiwxNSArNjIsMTUg
QEAgcHVibGljOgogICAgIHN0cnVjdCBDb29raWUgewogICAgICAgICBTdHJpbmcgbmFtZTsKICAg
ICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHBhdGg7Ci0gICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gZG9tYWluOwotICAgICAgICBPcHRpb25hbDxib29sPiBzZWN1
cmU7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGh0dHBPbmx5OwotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gZXhwaXJ5OwotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNhbWVTaXRlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGF0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGRvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzZWN1cmU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaHR0cE9ubHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGV4cGlyeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbWVTaXRl
OwogICAgIH07CiAKLSAgICBJbnB1dFNvdXJjZSYgZ2V0T3JDcmVhdGVJbnB1dFNvdXJjZShjb25z
dCBTdHJpbmcmIGlkLCBJbnB1dFNvdXJjZTo6VHlwZSwgT3B0aW9uYWw8UG9pbnRlclR5cGU+KTsK
KyAgICBJbnB1dFNvdXJjZSYgZ2V0T3JDcmVhdGVJbnB1dFNvdXJjZShjb25zdCBTdHJpbmcmIGlk
LCBJbnB1dFNvdXJjZTo6VHlwZSwgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4pOwogCiAgICAg
dm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJl
c3VsdCYmKT4mJik7CiAgICAgdm9pZCBjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAgLTg4LDExICs4OCwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbG9zZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYp
PiYmKTsKICAgICB2b2lkIHN3aXRjaFRvV2luZG93KGNvbnN0IFN0cmluZyYgd2luZG93SGFuZGxl
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGdldFdpbmRv
d0hhbmRsZXMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9pZCBu
ZXdXaW5kb3coT3B0aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBuZXdXaW5kb3coc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHR5cGVIaW50LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lk
IHN3aXRjaFRvRnJhbWUoUmVmUHRyPEpTT046OlZhbHVlPiYmLCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHN3aXRjaFRvUGFyZW50RnJhbWUoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRXaW5kb3dSZWN0KEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwotICAgIHZvaWQgc2V0V2luZG93UmVjdChP
cHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91YmxlPiB3
aWR0aCwgT3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQmJik+JiYpOworICAgIHZvaWQgc2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3Vs
dCYmKT4mJik7CiAgICAgdm9pZCBtYXhpbWl6ZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIG1pbmltaXplV2luZG93KEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQgZnVsbHNjcmVlbldpbmRvdyhGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhY2NlcHRBbGVydChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsK
ICAgICB2b2lkIGdldEFsZXJ0VGV4dChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
KTsKICAgICB2b2lkIHNlbmRBbGVydFRleHQoY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdChPcHRpb25hbDxT
dHJpbmc+IGVsZW1lbnRJRCwgT3B0aW9uYWw8Ym9vbD4gc2Nyb2xsSW50b1ZpZXcsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3Qoc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGVsZW1lbnRJRCwgc3RkOjpvcHRpb25hbDxib29sPiBzY3JvbGxJ
bnRvVmlldywgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgU2Vzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+JiYpOwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0
UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhh
bmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAg
IHZvaWQgaGFuZGxlVW5leHBlY3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmKTsKQEAgLTE3MCwxMSArMTcwLDExIEBAIHByaXZhdGU6CiAgICAgICAgIFNjcm9s
bEludG9WaWV3SWZOZWVkZWQgPSAxIDw8IDAsCiAgICAgICAgIFVzZVZpZXdwb3J0Q29vcmRpbmF0
ZXMgPSAxIDw8IDEsCiAgICAgfTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFJlY3Q+JiYsIE9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmKT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+LCBG
dW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+
JiYsIGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpPiYmKTsKIAogICAgIHZvaWQgZWxlbWVu
dElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJik7CiAgICAgZW51bSBjbGFzcyBGaWxlVXBsb2FkVHlwZSB7IFNpbmds
ZSwgTXVsdGlwbGUgfTsKLSAgICBPcHRpb25hbDxGaWxlVXBsb2FkVHlwZT4gcGFyc2VFbGVtZW50
SXNGaWxlVXBsb2FkUmVzdWx0KGNvbnN0IFJlZlB0cjxKU09OOjpWYWx1ZT4mKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZpbGVVcGxvYWRUeXBlPiBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQo
Y29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYpOwogICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVu
dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYm
KT4mJik7CiAgICAgdm9pZCBzZXRJbnB1dEZpbGVVcGxvYWRGaWxlcyhjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG11bHRpcGxlLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGRpZFNldElucHV0RmlsZVVwbG9hZEZp
bGVzKGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE4NSw4ICsxODUsOCBAQCBwcml2YXRlOgogICAg
IGVudW0gY2xhc3MgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgeyBLZXlQcmVzcywgS2V5UmVsZWFz
ZSwgSW5zZXJ0QnlLZXkgfTsKICAgICBzdHJ1Y3QgS2V5Ym9hcmRJbnRlcmFjdGlvbiB7CiAgICAg
ICAgIEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlIHR5cGUgeyBLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTo6SW5zZXJ0QnlLZXkgfTsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwotICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IGtleTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRl
eHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBrZXk7CiAgICAgfTsKICAgICBlbnVt
IEtleU1vZGlmaWVyIHsKICAgICAgICAgTm9uZSA9IDAsCkBAIC0yMDMsOCArMjAzLDggQEAgcHJp
dmF0ZToKIAogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIFN0cmluZyBzdWJ0eXBlOwotICAg
ICAgICBPcHRpb25hbDxNb3VzZUJ1dHRvbj4gcHJlc3NlZEJ1dHRvbjsKLSAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBwcmVzc2VkS2V5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9u
PiBwcmVzc2VkQnV0dG9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc3NlZEtl
eTsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IHByZXNzZWRWaXJ0dWFsS2V5czsKICAgICB9Owog
ICAgIElucHV0U291cmNlU3RhdGUmIGlucHV0U291cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCk7
CkBAIC0yMTMsOSArMjEzLDkgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9zY3JpcHRUaW1lb3V0
OwogICAgIGRvdWJsZSBtX3BhZ2VMb2FkVGltZW91dDsKICAgICBkb3VibGUgbV9pbXBsaWNpdFdh
aXRUaW1lb3V0OwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4
dDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY3VycmVudEJyb3dzaW5nQ29udGV4dDsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IG1fY3VycmVudFBhcmVudEJyb3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2N1cnJlbnRQYXJlbnRCcm93c2luZ0NvbnRleHQ7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIElucHV0U291cmNlPiBtX2FjdGl2ZUlucHV0U291cmNlczsKICAgICBIYXNoTWFwPFN0
cmluZywgSW5wdXRTb3VyY2VTdGF0ZT4gbV9pbnB1dFN0YXRlVGFibGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oIGIvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uSG9zdC5oCmluZGV4IGFmYzBiYWE4MGRjZWMwNmM1ZDA2OTE4MWM4Y2JmMTJmZDY3OWE2OGIu
LjY4OGYzZjljZmM4NjE1MDc3ZjQ5NDUyYWVkYWFmYzBmMWY5M2M3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b25Ib3N0LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBjb25zdCBDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAK
LSAgICB2b2lkIGNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvcik+JiYpOwotICAgIHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2
b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9Ccm93
c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOworICAg
IHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIHN0cnVjdCBDb21tYW5kUmVzcG9uc2UgewogICAg
ICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXNwb25zZU9iamVjdDsKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKICNpZiBVU0UoR0xJQikKICAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVj
dGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBtZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2b2lkIGNvbm5l
Y3Rpb25EaWRDbG9zZSgpOwotICAgIHZvaWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChP
cHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJik7CisgICAgdm9pZCBsYXVuY2hCcm93c2VyKEZ1bmN0
aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOwogICAgIHZvaWQgY29u
bmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4m
Jik7CiAgICAgYm9vbCBtYXRjaENhcGFiaWxpdGllcyhHVmFyaWFudCopOwogICAgIGJvb2wgYnVp
bGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJpYW50QnVpbGRlciopIGNvbnN0OwpAQCAtMTA1LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZFNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKICAgICB2b2lkIHJlY2VpdmVkU3RhcnRBdXRvbWF0aW9u
U2Vzc2lvblJldHVybihjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxUYXJnZXQ+PiBwYXJzZVRhcmdldExpc3QoY29uc3Qgc3RydWN0IEV2ZW50Jik7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8VGFyZ2V0Pj4gcGFyc2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBF
dmVudCYpOwogICAgIHZvaWQgc2V0VGFyZ2V0TGlzdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIFZl
Y3RvcjxUYXJnZXQ+JiYpOwogI2VuZGlmCiAKQEAgLTExOCwxNSArMTE4LDE1IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxsb25nLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzcG9uc2UmJik+PiBt
X2NvbW1hbmRSZXF1ZXN0czsKIAogI2lmIFVTRShHTElCKQotICAgIEZ1bmN0aW9uPHZvaWQgKGJv
b2wsIE9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOwor
ICAgIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRT
ZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gbV9icm93
c2VyOwogICAgIFJlZlB0cjxTb2NrZXRDb25uZWN0aW9uPiBtX3NvY2tldENvbm5lY3Rpb247CiAg
ICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7CiAjZWxpZiBVU0UoSU5TUEVD
VE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5nIG1fdGFyZ2V0SXA7CiAgICAgdWludDE2X3Qg
bV90YXJnZXRQb3J0IHsgMCB9OwotICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCwgT3B0aW9uYWw8U3Ry
aW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgT3B0aW9uYWw8SW5z
cGVjdG9yOjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CisgICAgRnVuY3Rpb248dm9pZChib29s
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVy
OworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDQ2
OGM4ODk3MzMwNWFhNTQyZTFhODI2ZTkwNDIzNjVmNmViZGNmMDMuLjNiNTQ1MTM0MzAyMDM1ZTgx
MTk2MzlhYjBjYTRiMjJkNjk3NDM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGNv
bnN0IGNoYXIqIHByb2dyYW1OYW1lKQogaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU3RyaW5nIHBvcnRTdHJpbmc7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBob3N0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBob3N0OwogI2lmIFVTRShJ
TlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlm
IChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQURE
UiIpKQpAQCAtMjEzLDcgKzIxMyw3IEBAIGNvbnN0IFdlYkRyaXZlclNlcnZpY2U6OkNvbW1hbmQg
V2ViRHJpdmVyU2VydmljZTo6c19jb21tYW5kc1tdID0gewogICAgIHsgSFRUUE1ldGhvZDo6R2V0
LCAiL3Nlc3Npb24vJHNlc3Npb25JZC9lbGVtZW50LyRlbGVtZW50SWQvZGlzcGxheWVkIiwgJldl
YkRyaXZlclNlcnZpY2U6OmlzRWxlbWVudERpc3BsYXllZCB9LAogfTsKIAotT3B0aW9uYWw8V2Vi
RHJpdmVyU2VydmljZTo6SFRUUE1ldGhvZD4gV2ViRHJpdmVyU2VydmljZTo6dG9Db21tYW5kSFRU
UE1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhvZCkKK3N0ZDo6b3B0aW9uYWw8V2ViRHJpdmVyU2Vy
dmljZTo6SFRUUE1ldGhvZD4gV2ViRHJpdmVyU2VydmljZTo6dG9Db21tYW5kSFRUUE1ldGhvZChj
b25zdCBTdHJpbmcmIG1ldGhvZCkKIHsKICAgICBhdXRvIGxvd2VyQ2FzZU1ldGhvZCA9IG1ldGhv
ZC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlmIChsb3dlckNhc2VNZXRob2QgPT0g
ImdldCIpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZW5kUmVz
cG9uc2UoRnVuY3Rpb248dm9pZCAoSFRUUFJlcXVlc3RIYW5kbGVyOjpSZXNwb25zZSYKICAgICBy
ZXBseUhhbmRsZXIoeyByZXN1bHQuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2VPYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKSwgImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiX3Mg
fSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNv
bnN0IEpTT046OlZhbHVlJiB2YWx1ZSwgZG91YmxlIG1pbkFsbG93ZWQgPSAwLCBkb3VibGUgbWF4
QWxsb3dlZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2
YWx1ZSwgZG91YmxlIG1pbkFsbG93ZWQgPSAwLCBkb3VibGUgbWF4QWxsb3dlZCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiB7CiAgICAgYXV0byBudW1iZXIgPSB2YWx1ZS5hc0Rv
dWJsZSgpOwogICAgIGlmICghbnVtYmVyKQpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2YWx1
ZSwgZG91YmxlIG1pCiAgICAgcmV0dXJuICpudW1iZXI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1
aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byBudW1iZXIgPSB2YWx1ZUFzTnVtYmVySW5SYW5nZSh2YWx1ZSwgMCwgbWF4U2FmZUlu
dGVnZXIpOwogICAgIGlmICghbnVtYmVyKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBPcHRp
b25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiAKIGVudW0g
Y2xhc3MgSWdub3JlVW5rbm93blRpbWVvdXQgeyBObywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25h
bDxUaW1lb3V0cz4gZGVzZXJpYWxpemVUaW1lb3V0cyhKU09OOjpPYmplY3QmIHRpbWVvdXRzT2Jq
ZWN0LCBJZ25vcmVVbmtub3duVGltZW91dCBpZ25vcmVVbmtub3duVGltZW91dCkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFRpbWVvdXRzPiBkZXNlcmlhbGl6ZVRpbWVvdXRzKEpTT046Ok9iamVjdCYg
dGltZW91dHNPYmplY3QsIElnbm9yZVVua25vd25UaW1lb3V0IGlnbm9yZVVua25vd25UaW1lb3V0
KQogewogICAgIC8vIMKnOC41IFNldCBUaW1lb3V0cy4KICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0bWwjZGZuLWRlc2VyaWFsaXplLWFzLWEt
dGltZW91dApAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxUaW1lb3V0cz4gZGVz
ZXJpYWxpemVUaW1lb3V0cyhKU09OOjpPYmplY3QmIHRpbWVvdXRzT2JqZWN0LCBJZ25vCiAgICAg
cmV0dXJuIHRpbWVvdXRzOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXpl
UHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiB7CiAgICAg
Ly8gwqc3LjEgUHJveHkuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8j
cHJveHkKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFs
aXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gZGVzZXJpYWxpemVQ
YWdlTG9hZFN0cmF0ZWd5KGNvbnN0IFN0cmluZyYgcGFnZUxvYWRTdHJhdGVneSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+IGRlc2VyaWFsaXplUGFnZUxvYWRTdHJhdGVn
eShjb25zdCBTdHJpbmcmIHBhZ2VMb2FkU3RyYXRlZ3kpCiB7CiAgICAgaWYgKHBhZ2VMb2FkU3Ry
YXRlZ3kgPT0gIm5vbmUiKQogICAgICAgICByZXR1cm4gUGFnZUxvYWRTdHJhdGVneTo6Tm9uZTsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gZGVz
ZXJpYWxpemVQYWdlTG9hZFN0cmF0ZWd5KGNvbnN0IFN0cmluZyYgcGFnZQogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cj4gZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcihjb25zdCBTdHJpbmcmIHVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I+IGRlc2VyaWFsaXplVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IoY29uc3QgU3RyaW5n
JiB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcikKIHsKICAgICBpZiAodW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3IgPT0gImRpc21pc3MiKQogICAgICAgICByZXR1cm4gVW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3I6OkRpc21pc3M7CkBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpj
b25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwK
ICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgc2Vzc2lvbkhvc3RQdHItPnNl
dEhvc3RBZGRyZXNzKG1fdGFyZ2V0QWRkcmVzcywgbV90YXJnZXRQb3J0KTsKICNlbmRpZgotICAg
IHNlc3Npb25Ib3N0UHRyLT5jb25uZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0
ID0gV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Np
b25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJsZSB7CisgICAgc2Vzc2lvbkhvc3RQdHItPmNv
bm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpTZXNzaW9uTm90Q3JlYXRlZCwgbWFrZVN0cmluZygiRmFpbGVkIHRvIGNvbm5lY3QgdG8g
YnJvd3NlcjogIiwgZXJyb3IudmFsdWUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
OCw3ICs4MzgsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVj
dG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogdm9pZCBXZWJEcml2ZXJTZXJ2
aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlz
dCwgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25Ib3N0PiYmIHNlc3Npb25Ib3N0LCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8q
IHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7Ci0gICAgc2Vzc2lvbkhvc3RQdHIt
PnN0YXJ0QXV0b21hdGlvblNlc3Npb24oW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3Zl
KGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGNhcGFi
aWxpdGllc0RpZE1hdGNoLCBPcHRpb25hbDxTdHJpbmc+IGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7
CisgICAgc2Vzc2lvbkhvc3RQdHItPnN0YXJ0QXV0b21hdGlvblNlc3Npb24oW3RoaXMsIGNhcGFi
aWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdU
Rk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGNhcGFiaWxpdGllc0RpZE1hdGNoLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvciwgZXJyb3JNZXNzYWdlLnZhbHVlKCkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgV2ViRHJpdmVy
U2VydmljZTo6c2V0V2luZG93UmVjdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMs
IEZ1bmN0aW9uCiB7CiAgICAgLy8gwqcxMC43LjIgU2V0IFdpbmRvdyBSZWN0LgogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNzZXQtd2lu
ZG93LXJlY3QKLSAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB3aWR0aDsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcmFtZXRlcnMtPmdldFZhbHVl
KCJ3aWR0aCJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJlcklu
UmFuZ2UoKnZhbHVlKSkKICAgICAgICAgICAgIHdpZHRoID0gbnVtYmVyOwpAQCAtMTEwNCw3ICsx
MTA0LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZXRXaW5kb3dSZWN0KFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb24KICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gaGVpZ2h0OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+
Z2V0VmFsdWUoImhlaWdodCJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVB
c051bWJlckluUmFuZ2UoKnZhbHVlKSkKICAgICAgICAgICAgIGhlaWdodCA9IG51bWJlcjsKQEAg
LTExMTMsNyArMTExMyw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c2V0V2luZG93UmVjdChS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB4OworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB4OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+
Z2V0VmFsdWUoIngiX3MpKSB7CiAgICAgICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlQXNOdW1i
ZXJJblJhbmdlKCp2YWx1ZSwgSU5UX01JTikpCiAgICAgICAgICAgICB4ID0gbnVtYmVyOwpAQCAt
MTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZXRXaW5kb3dSZWN0KFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb24KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBPcHRpb25hbDxkb3VibGU+IHk7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHk7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJhbWV0ZXJzLT5n
ZXRWYWx1ZSgieSJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJl
ckluUmFuZ2UoKnZhbHVlLCBJTlRfTUlOKSkKICAgICAgICAgICAgIHkgPSBudW1iZXI7CkBAIC0x
MjE1LDcgKzEyMTUsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6Om5ld1dpbmRvdyhSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uPHZvaQogICAgIGlmICghZmluZFNl
c3Npb25PckNvbXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZUhpbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFy
YW1ldGVycy0+Z2V0VmFsdWUoInR5cGUiX3MpKSB7CiAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcg
PSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCEhdmFsdWVTdHJpbmcpIHsKQEAgLTEy
OTMsNyArMTI5Myw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c3dpdGNoVG9QYXJlbnRGcmFt
ZShSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1CiAgICAgfSk7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRFbGVtZW50T3JDb21wbGV0ZVdpdGhFcnJvcihKU09O
OjpPYmplY3QmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiBj
b21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmluZEVsZW1l
bnRPckNvbXBsZXRlV2l0aEVycm9yKEpTT046Ok9iamVjdCYgcGFyYW1ldGVycywgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8g
ZWxlbWVudElEID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoImVsZW1lbnRJZCJfcyk7CiAgICAgaWYg
KGVsZW1lbnRJRC5pc0VtcHR5KCkpIHsKQEAgLTE3MTgsNyArMTcxOCw3IEBAIHZvaWQgV2ViRHJp
dmVyU2VydmljZTo6Z2V0TmFtZWRDb29raWUoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0
ZXJzLCBGdW5jdGlvCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTZXNzaW9uOjpDb29r
aWU+IGRlc2VyaWFsaXplQ29va2llKEpTT046Ok9iamVjdCYgY29va2llT2JqZWN0KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6Q29va2llPiBkZXNlcmlhbGl6ZUNvb2tpZShKU09OOjpP
YmplY3QmIGNvb2tpZU9iamVjdCkKIHsKICAgICBTZXNzaW9uOjpDb29raWUgY29va2llOwogCkBA
IC0xODM2LDcgKzE4MzYsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmRlbGV0ZUFsbENvb2tp
ZXMoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdAogICAgIH0pOwogfQog
Ci1zdGF0aWMgYm9vbCBwcm9jZXNzUGF1c2VBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVt
LCBBY3Rpb24mIGFjdGlvbiwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGlj
IGJvb2wgcHJvY2Vzc1BhdXNlQWN0aW9uKEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgQWN0aW9u
JiBhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQogewogICAgIGF1
dG8gZHVyYXRpb25WYWx1ZSA9IGFjdGlvbkl0ZW0uZ2V0VmFsdWUoImR1cmF0aW9uIl9zKTsKICAg
ICBpZiAoIWR1cmF0aW9uVmFsdWUpCkBAIC0xODUyLDcgKzE4NTIsNyBAQCBzdGF0aWMgYm9vbCBw
cm9jZXNzUGF1c2VBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlv
biwgT3B0aW9uYQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8QWN0aW9u
PiBwcm9jZXNzTnVsbEFjdGlvbihjb25zdCBTdHJpbmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlv
bkl0ZW0sIE9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2Jq
ZWN0JiBhY3Rpb25JdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsK
ICAgICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVtLmdldFN0cmluZygidHlwZSJfcyk7CiAgICAg
aWYgKHN1YnR5cGUgIT0gInBhdXNlIikgewpAQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIE9w
dGlvbmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6
T2JqZWN0JiBhY3Rpb24KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
QWN0aW9uPiBwcm9jZXNzS2V5QWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYg
YWN0aW9uSXRlbSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzS2V5QWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046
Ok9iamVjdCYgYWN0aW9uSXRlbSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2Up
CiB7CiAgICAgQWN0aW9uOjpTdWJ0eXBlIGFjdGlvblN1YnR5cGU7CiAgICAgYXV0byBzdWJ0eXBl
ID0gYWN0aW9uSXRlbS5nZXRTdHJpbmcoInR5cGUiX3MpOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAg
c3RhdGljIE1vdXNlQnV0dG9uIGFjdGlvbk1vdXNlQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAg
ICByZXR1cm4gTW91c2VCdXR0b246Ok5vbmU7CiB9CiAKLXN0YXRpYyBib29sIHByb2Nlc3NQb2lu
dGVyTW92ZUFjdGlvbihKU09OOjpPYmplY3QmIGFjdGlvbkl0ZW0sIEFjdGlvbiYgYWN0aW9uLCBP
cHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgYm9vbCBwcm9jZXNzUG9pbnRl
ck1vdmVBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYgKGF1dG8gZHVyYXRp
b25WYWx1ZSA9IGFjdGlvbkl0ZW0uZ2V0VmFsdWUoImR1cmF0aW9uIl9zKSkgewogICAgICAgICBh
dXRvIGR1cmF0aW9uID0gdW5zaWduZWRWYWx1ZSgqZHVyYXRpb25WYWx1ZSk7CkBAIC0xOTg2LDcg
KzE5ODYsNyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzUG9pbnRlck1vdmVBY3Rpb24oSlNPTjo6T2Jq
ZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgTwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzUG9pbnRlckFjdGlvbihjb25zdCBTdHJp
bmcmIGlkLCBQb2ludGVyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSlNPTjo6T2JqZWN0JiBhY3Rp
b25JdGVtLCBPcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxBY3Rpb24+IHByb2Nlc3NQb2ludGVyQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIFBvaW50
ZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBKU09OOjpPYmplY3QmIGFjdGlvbkl0ZW0sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQogewogICAgIEFjdGlvbjo6U3VidHlwZSBh
Y3Rpb25TdWJ0eXBlOwogICAgIGF1dG8gc3VidHlwZSA9IGFjdGlvbkl0ZW0uZ2V0U3RyaW5nKCJ0
eXBlIl9zKTsKQEAgLTIwNDMsNyArMjA0Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxBY3Rpb24+IHBy
b2Nlc3NQb2ludGVyQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIFBvaW50ZXJQYXJhbWV0ZXJzCiAg
ICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc1do
ZWVsQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgT3B0
aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QWN0aW9u
PiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3Rp
b25JdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBBY3Rp
b246OlN1YnR5cGUgYWN0aW9uU3VidHlwZTsKICAgICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVt
LmdldFN0cmluZygidHlwZSJfcyk7CkBAIC0yMDk3LDcgKzIwOTcsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2Jq
ZWN0JiBhY3RpbwogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQb2lu
dGVyUGFyYW1ldGVycz4gcHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKEpTT046Ok9iamVjdCYgYWN0
aW9uU2VxdWVuY2UsIE9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFBvaW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9pbnRlclBhcmFtZXRlcnMoSlNP
Tjo6T2JqZWN0JiBhY3Rpb25TZXF1ZW5jZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1l
c3NhZ2UpCiB7CiAgICAgUG9pbnRlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjEyOSw3
ICsyMTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvaW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9p
bnRlclBhcmFtZXRlcnMoSlNPTjo6T2JqZWN0JiBhY3Rpb24KICAgICByZXR1cm4gcGFyYW1ldGVy
czsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9jZXNzSW5wdXRBY3Rp
b25TZXF1ZW5jZShTZXNzaW9uJiBzZXNzaW9uLCBKU09OOjpWYWx1ZSYgYWN0aW9uU2VxdWVuY2VW
YWx1ZSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEFjdGlvbj4+IHByb2Nlc3NJbnB1dEFjdGlvblNlcXVlbmNlKFNlc3Npb24mIHNl
c3Npb24sIEpTT046OlZhbHVlJiBhY3Rpb25TZXF1ZW5jZVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBhdXRvIGFjdGlvblNlcXVlbmNlID0gYWN0aW9u
U2VxdWVuY2VWYWx1ZS5hc09iamVjdCgpOwogICAgIGlmICghYWN0aW9uU2VxdWVuY2UpIHsKQEAg
LTIxNTgsOCArMjE1OCw4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8QWN0aW9uPj4gcHJvY2Vz
c0lucHV0QWN0aW9uU2VxdWVuY2UoU2Vzc2lvbiYgc2Vzc2lvbiwgSlNPCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+
IHBhcmFtZXRlcnM7Ci0gICAgT3B0aW9uYWw8UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlOworICAg
IHN0ZDo6b3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgc3RkOjpv
cHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5cGU7CiAgICAgaWYgKGlucHV0U291cmNlVHlw
ZSA9PSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcikgewogICAgICAgICBwYXJhbWV0ZXJzID0g
cHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKCphY3Rpb25TZXF1ZW5jZSwgZXJyb3JNZXNzYWdlKTsK
ICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQpAQCAtMjE5NCw3ICsyMTk0LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9jZXNzSW5wdXRBY3Rpb25TZXF1ZW5jZShTZXNzaW9u
JiBzZXNzaW9uLCBKU08KICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KIAotICAgICAgICBPcHRpb25hbDxBY3Rpb24+IGFjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxBY3Rpb24+IGFjdGlvbjsKICAgICAgICAgaWYgKGlucHV0U291cmNlVHlwZSA9PSBJbnB1
dFNvdXJjZTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIGFjdGlvbiA9IHByb2Nlc3NOdWxsQWN0
aW9uKGlkLCAqYWN0aW9uSXRlbSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgZWxzZSBpZiAoaW5w
dXRTb3VyY2VUeXBlID09IElucHV0U291cmNlOjpUeXBlOjpLZXkpCkBAIC0yMjI1LDcgKzIyMjUs
NyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OnBlcmZvcm1BY3Rpb25zKFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3RpbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGVycm9yTWVzc2FnZTsKICAgICBWZWN0b3I8VmVjdG9yPEFjdGlvbj4+IGFjdGlvbnNCeVRp
Y2s7CiAgICAgdW5zaWduZWQgYWN0aW9uc0FycmF5TGVuZ3RoID0gYWN0aW9uc0FycmF5LT5sZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0FycmF5TGVuZ3RoOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5oIGIv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKaW5kZXggMGYzOGNiMDI5MDg3OTY3
MjQzM2E0Mzc3YWZkMTk3NjdiZGExMmI5NC4uZTQyZDI3ZjcxZmZjMDVkZjRlNjI4MmFlNDczZTlj
MDE5NTY2OTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRpYyBjb25zdCBDb21tYW5kIHNfY29tbWFu
ZHNbXTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxIVFRQTWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0
aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIVFRQ
TWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKTsKICAgICBz
dGF0aWMgYm9vbCBmaW5kQ29tbWFuZChIVFRQTWV0aG9kLCBjb25zdCBTdHJpbmcmIHBhdGgsIENv
bW1hbmRIYW5kbGVyKiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcmFtZXRlcnMpOwogCiAg
ICAgdm9pZCBuZXdTZXNzaW9uKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RH
bGliLmNwcAppbmRleCAyNjQxMGJmZTdhZTMzZjFiNTZmNzdmYTk5OTUxMDZlZjg0N2MxMmQwLi5l
NjI2YTE3YTQxZTVlNDMyYTA3OWVhNGNlNDcwZTZmOWFkZjVjNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtOTMsNyArOTMsNyBAQCBjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFNlc3Npb25Ib3N0OjptZXNzYWdlSGFuZGxl
cnMoKQogICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7CiB9CiAKLXZvaWQgU2Vzc2lvbkhvc3Q6
OmNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2Vy
KEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgbGF1bmNoQnJvd3NlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQo
KSBjb25zdAogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEo
U2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNoYXI+JiYgaW5zcGVjdG9yQWRk
cmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNE
YXRhKFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGluc3BlY3Rv
ckFkZHJlc3MsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9u
SG9zdChzZXNzaW9uSG9zdCkKICAgICAgICAgLCBpbnNwZWN0b3JBZGRyZXNzKFdURk1vdmUoaW5z
cGVjdG9yQWRkcmVzcykpCiAgICAgICAgICwgY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCkBAIC0x
MTcsNyArMTE3LDcgQEAgc3RydWN0IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgewogICAgIFNl
c3Npb25Ib3N0KiBzZXNzaW9uSG9zdDsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGluc3BlY3RvckFk
ZHJlc3M7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOwotICAgIEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiBjb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKIHN0YXRpYyBndWludDE2IGZyZWVQb3J0KCkKQEAgLTEzMiw3ICsxMzIs
NyBAQCBzdGF0aWMgZ3VpbnQxNiBmcmVlUG9ydCgpCiAgICAgcmV0dXJuIGdfaW5ldF9zb2NrZXRf
YWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcy5nZXQoKSkpOwog
fQogCi12b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uSG9z
dDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJy
b3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2FuY2VsbGFibGUgPSBhZG9wdEdS
ZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzc0xhdW5jaGVy
PiBsYXVuY2hlciA9IGFkb3B0R1JlZihnX3N1YnByb2Nlc3NfbGF1bmNoZXJfbmV3KEdfU1VCUFJP
Q0VTU19GTEFHU19OT05FKSk7CkBAIC0zMDEsNyArMzAxLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6
YnVpbGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJpYW50QnVpbGRlciogYnVpbGRlcikgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9u
U2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oRnVu
Y3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQobV9zb2NrZXRDb25uZWN0aW9uKTsKICAgICBBU1NFUlQoIW1f
c3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA4MTFiMWY2OWRiZDFhYzE3ZTJhNjRlZWQ3ZmM5
YWFmYzZlMmY0MDM2Li43OWI3Y2E0YjJkMTMzMjJiMGRlODgzMmEyMzgyMTgwZTMyYTA0MmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtMjks
NyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAotYm9vbCBIVFRQU2VydmVyOjps
aXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKK2Jvb2wg
SFRUUFNlcnZlcjo6bGlzdGVuKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5z
aWduZWQgcG9ydCkKIHsKICAgICBhdXRvJiBlbmRwb2ludCA9IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpzaW5nbGV0b24oKTsKIApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEhUVFBTZXJ2
ZXI6OmRpc2Nvbm5lY3QoKQogICAgIGVuZHBvaW50LmRpc2Nvbm5lY3QobV9zZXJ2ZXIudmFsdWUo
KSk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gSFRUUFNlcnZlcjo6ZG9BY2NlcHQoUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVuZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUg
c29ja2V0KQorc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IEhUVFBTZXJ2ZXI6OmRvQWNjZXB0
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiBlbmRwb2ludCwgUGxhdGZvcm1Tb2NrZXRU
eXBlIHNvY2tldCkKIHsKICAgICBpZiAoYXV0byBpZCA9IGVuZHBvaW50LmNyZWF0ZUNsaWVudChz
b2NrZXQsIG1fcmVxdWVzdEhhbmRsZXIpKSB7CiAgICAgICAgIG1fcmVxdWVzdEhhbmRsZXIuY29u
bmVjdChpZC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nl
c3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0
U29ja2V0LmNwcAppbmRleCAzMTMwNWE0ZDQ3NDY4NzQwZDE4OGE5YzdmN2I3YThmZjc0ZDRmMzdj
Li4wZjY1NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3YmYxZDYxMjBjYWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2
ZW50KQogICAgIHNlbmQobV9jbGllbnRJRC52YWx1ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtZXNzYWdlLmRhdGEoKSksIG1lc3NhZ2UubGVuZ3RoKCkpOwogfQogCi12b2lk
IFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uSG9zdDo6Y29u
bmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3Ip
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFN0cmluZyB0YXJnZXRJcDsKICAgICB1aW50
MTZfdCB0YXJnZXRQb3J0ID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6
ZGlkQ2xvc2UoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIEluc3Bl
Y3RvcjoKICAgICBtX2NsaWVudElEID0gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0
b3I8U2Vzc2lvbkhvc3Q6OlRhcmdldD4+IFNlc3Npb25Ib3N0OjpwYXJzZVRhcmdldExpc3QoY29u
c3Qgc3RydWN0IEV2ZW50JiBldmVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFNlc3Npb25Ib3N0
OjpUYXJnZXQ+PiBTZXNzaW9uSG9zdDo6cGFyc2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVu
dCYgZXZlbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRhcmdldExpc3RKU09OKCpldmVu
dC5tZXNzYWdlKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNl
c3Npb25Ib3N0OjpyZWNlaXZlZFN0YXJ0QXV0b21hdGlvblNlc3Npb25SZXR1cm4oY29uc3Qgc3Ry
dWN0IEV2ZW50JikKICAgICBtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbiA9IFN0cmluZzo6
ZnJvbVVURjgoIlRPRE8vYnJvd3NlclZlcnNpb24iKTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6
c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJp
bmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21h
dGlvblNlc3Npb24oRnVuY3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc291
cC9IVFRQU2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvdXAvSFRUUFNlcnZlclNv
dXAuY3BwCmluZGV4IGQ5NTViNTc3ZTMyODBlYTFhZGFhNmRjOTEwMTNhMmFjMjFkYjk1MDcuLjQz
OTRjZjFhMDEyNGM2ZjgxMTA4YjAwOTZhNTdkNTQ1YTQxNzQ2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvc291cC9IVFRQU2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9zb3VwL0hUVFBTZXJ2ZXJTb3VwLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViRHJpdmVyIHsKIAotc3RhdGljIGJvb2wgc291cFNlcnZlckxpc3RlbihTb3VwU2VydmVyKiBz
ZXJ2ZXIsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGhvc3QsIHVuc2lnbmVkIHBvcnQsIEdFcnJv
cioqIGVycm9yKQorc3RhdGljIGJvb2wgc291cFNlcnZlckxpc3RlbihTb3VwU2VydmVyKiBzZXJ2
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCwgR0Vy
cm9yKiogZXJyb3IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gb3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigwKTsKICAgICBpZiAoIWhvc3QgfHwgaG9zdC52
YWx1ZSgpID09ICJsb2NhbCIpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29sIHNvdXBTZXJ2
ZXJMaXN0ZW4oU291cFNlcnZlciogc2VydmVyLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBob3N0
LCB1CiAgICAgcmV0dXJuIHNvdXBfc2VydmVyX2xpc3RlbihzZXJ2ZXIsIGFkZHJlc3MuZ2V0KCks
IG9wdGlvbnMsIGVycm9yKTsKIH0KIAotYm9vbCBIVFRQU2VydmVyOjpsaXN0ZW4oY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKK2Jvb2wgSFRUUFNlcnZlcjo6bGlz
dGVuKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKIHsK
ICAgICBtX3NvdXBTZXJ2ZXIgPSBhZG9wdEdSZWYoc291cF9zZXJ2ZXJfbmV3KCJzZXJ2ZXItaGVh
ZGVyIiwgIldlYktpdFdlYkRyaXZlciIsIG51bGxwdHIpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXgg
MDE2ODcyODNmYWUzZTNmMzE0YzkyM2EzZjMxZTgxZmZhZjBkM2E2NC4uMTM5OTYxZGU2MWU2NWU5
ZWM4YWY0ZWQwYzRhOGE4MmE0MmY1YTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBHUFVQcm9jZXNzOjp+R1BVUHJvY2VzcygpCiB7
CiB9CiAKLXZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVByb2Nlc3M6OmNyZWF0
ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwg
dGhpcywgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBj
cmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
LmgKaW5kZXggYmQyMmZmZTczMGNhNzUzZDgxYWE3NzZiOTRlY2YxMjcwYjU5M2JhMS4uNGY1ZGZm
NzQ4NmJjYTNkM2I1MjYwOTkwYzAyNTE4MTMwNjRhYjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1l
c3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGluaXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIGFkZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyYmKTsKICAgICB2
b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEyOWJlOGRlOGMzMzc0Nzcw
YjdlNTYxZWNmMmYwYTQ5NTRiNDFiNmYuLmJhYTkxN2M0NTU2MGNkMTQxNDVkMTE1ZmQ4MmU0Y2Zj
ZDE2MjBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBHUFVQcm9jZXNzIHsKICAg
ICBJbml0aWFsaXplR1BVUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKLSAgICBDcmVhdGVHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRh
Y2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKKyAgICBDcmVhdGVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAgICAgUHJvY2Vzc0RpZFRy
YW5zaXRpb25Ub0ZvcmVncm91bmQoKQogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3Jv
dW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBiNDk3MTJjZjk0YjNhNWM4YzcwYWYwNWNmNzli
N2JkMjVjNGI2NGM2Li5kZjRiYTIwZGEyNWQ1MGJkNmYyNzU1NjAwMTEyMzlkNDZlNmQ0Y2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC03NywzMiArNzcsMzIgQEAgYm9vbCBHUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBHUFVQcm9jZXNz
Q3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKFNBTkRCT1hfRVhURU5TSU9O
U19GT1JfQ0FDSEVfQU5EX1RFTVBfRElSRUNUT1JZX0FDQ0VTUykKLSAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmVzdWx0LmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29k
ZXIgPj4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25I
YW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+
IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBjb21waWxl
clNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghY29tcGlsZXJTZXJ2aWNlRXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5jb21waWxlclNl
cnZpY2VFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4g
ZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAg
IGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1
bHQuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXMpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7
CiAgICAgZGVjb2RlciA+PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFk
eW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMuaAppbmRleCAxMmFlZDZjYTNhMmExOWMxYWRkYWExZjM1NWY5NDRkNTgzZTY4ZjczLi5kYWQ3
ZmNhZjA2MjQ5MmE3ODk1MzQ5M2IxYjVlNmRlZTkwZjgwZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5oCkBAIC01
MSwyNSArNTEsMjUgQEAgc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdQ
VVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFD
YWNoZURpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1lZGlhQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAg
ICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlh
Q2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeVNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeVNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgICAgIE9wdGlvbmFsPFN0
cmluZz4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggOWNlNDU2NTk0ZDU3ZmRiYTIwMGNkMTBi
MTE3NzYxYjcyYzQzMGFlOS4uZmRmZjM4OGE5MTc5YzJjYTczMDk2YmQ5MjU1Yjk3YjZkYmU5MDEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1PcHRpb25hbDxzaXplX3Q+
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFt
b3VudCkKIHsKICAgICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRC
eXRlcy5leGNoYW5nZVN1YihhbW91bnQpOwogICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVh
ZEJ5dGVzIDwgYW1vdW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggZWE3NjRmZGY3ZDY2
OGU1MDdjMzdmZjM1OWQ5OTlmMWFhZGJhZTQwMC4uN2U5N2U0OGU3ZGY0NGRiM2QxOWJkYThmMmNk
N2UwYjBjYzk4ZDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkpOwogICAgIH0KIAotICAgIE9w
dGlvbmFsPHNpemVfdD4gYWR2YW5jZShzaXplX3QgYW1vdW50KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYWR2YW5jZShzaXplX3QgYW1vdW50KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRXYWl0aW5nKCkKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RvcFdhaXRp
bmdGYWlsdXJlUmVhc29uIDogdWludDhfdCB7IEludmFsaWRXYWl0aW5nU3RhdHVzIH07Ci0gICAg
RXhwZWN0ZWQ8T3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJ
bmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5nRmFpbHVyZVJlYXNvbj4gc3RvcFdhaXRpbmcoKQorICAg
IEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJl
YWRpbmdJbmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5nRmFpbHVyZVJlYXNvbj4gc3RvcFdhaXRpbmco
KQogICAgIHsKICAgICAgICAgYXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CiAgICAgICAg
IGF1dG8gcHJldmlvdXNTdGF0dXMgPSBoZWFkZXIud2FpdGluZ1N0YXR1cy5leGNoYW5nZShzdGF0
aWNfY2FzdDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1c1N0b3JhZ2VUeXBl
PihTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6Tm90V2FpdGluZykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggMTU1M2RlZjAyNWZmZjkwZjEzNzVmNTEwZDUw
Y2E0NWQyYzUxMzU0ZS4uN2QyYTU3MjMzZWQ2MTI0NTA2MTc4OTU1NzFkMjUwMjI3N2FlNTI4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1IKICAgICBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRl
eHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKICAgICAvLyBGSVhNRTogV2UgZG8gbm90IGhhdmUgZnVuY3Rpb25p
bmcgcmVhZC93cml0ZSBmZW5jZXMgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4gVGh1cyB0aGlz
IGlzIHN5bmNocm9ub3VzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA1NjJjMmViODM0NTY5
OGUyYmE1OTY3NDU1MWZlMDM0NDE1ZTA1ZjlmLi4wMjNlYTA5NjZiZDM1MzJkOGVmNTRiNWVmNDUw
ZGZkNDJjNzVjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTA1LDcgKzEwNSw3IEBA
IHByb3RlY3RlZDoKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCi0gICAgdm9pZCBwYWludFBpeGVsQnVmZmVyVG9JbWFn
ZUJ1ZmZlcihPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVmUHRyPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3Ry
ZWFtQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpp
bmRleCA5M2I0ODY3NDNmZjFlY2M1NGJkMWViYzZmMGI3OTE4ZWIyN2M3ZmVkLi4xNmIzZTllODI2
ZWE0MTdkYmUyYzczZTJkZWM3MTM4MzliN2Y2NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yODQsNyArMjg0LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgTXVsdGlE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKICAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzQU5HTEUodWludDMyX3QgbW9kZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCiAgICAgdm9p
ZCBNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5z
dGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4g
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggZGVmMjY2MTVhY2Y3MTcy
ZTI1YTI3MGQyNGQ4ZjQ3NjlkMWMzZDMzOC4uZDFjMzI5MDUxN2QyOTZjNTFlMzU2ZThiNGU1NzBj
MDY3YmI3NzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgKQEAgLTEzNzksOSArMTM3OSw5IEBACiAgICAgICAgIGFzc2VydElzQ3Vy
cmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSks
IG9mZnNldHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THNpemVpKj4oaW5zdGFuY2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwg
ZHJhd2NvdW50KTsKICAgICB9Ci0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9QaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGl4ZWxCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiByZXR1cm5WYWx1ZSA9IHsg
fTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIo
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGI5OTJjNzZkZjRiN2QzYjg2NTMwY2I4YWJmM2NiYTll
N2E2NTY4OGMuLmNiNTAxMTY3YjRkZDU3MmM0YzVjMjk4MTM4MmYxMjZjYjI5NzhmZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbgogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBH
UFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBzdGQ6Om51bGxvcHQgfX07CiB9
CiAKLU9wdGlvbmFsPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlckhlbHBlcihzaXplX3QgYnl0
ZUNvdW50KQorc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIo
c2l6ZV90IGJ5dGVDb3VudCkKIHsKICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVF
KCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IHx8IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxC
dWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgc3RkOjpudWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNo
bWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFscmVhZHkgYmlnIGVub3VnaCB0byBoYW5kbGUg
dGhlIHJlcXVlc3QiKTsKIApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKICAgICBtX2dldFBp
eGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KE9wdGlvbmFsPFdl
YkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVD
SyhtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LCAiV2UgY2FuJ3QgcnVuIGdldFBpeGVsQnVm
ZmVyIHdpdGhvdXQgYSBidWZmZXIgdG8gd3JpdGUgaW50byIpOwogCkBAIC0zOTIsNyArMzkyLDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hh
cmVkTWVtb3J5KE9wdGlvbmFsPFdlYkNvcmUKICAgICBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3Jl
LnNpZ25hbCgpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00MDIsNyArNDAyLDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3AKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVy
bFN0cmluZykpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRh
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4
X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcigpCiAgICAgbV9jdXJyZW50TWFza0ltYWdlQnVmZmVy
ID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK3N0ZDo6b3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVt
VHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKIHsKICAgICAvKiBUaGlzIG5lZWRz
IHRvIG1hdGNoICgxKSBpc0lubGluZUl0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwg
KDIpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmVuY29kZUl0ZW0oKSwKICAgICAgKiBhbmQgKDMp
IGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhl
IGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNThkY2Y4
OGJkMDFmYWVhNGM5ODlmZTIwMWMyODA2MDU1ZWVmYWQwNi4uNzM0MjdhOTY0Zjc0NTEyMWJhZmEx
MTllZWY0ZmViMzMzYjRjOTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKTsKIAotICAg
IHZvaWQgcG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeShPcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJik7CisgICAgdm9pZCBwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVk
TWVtb3J5KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYpOwogCiAgICAgYm9v
bCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCkBAIC05OCwxMCArOTgs
MTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYp
OwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRl
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVy
cmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVh
dGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9j
YXRpb24pCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKICAgICB7CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRh
LCBsZW5ndGgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5l
ZWQgdG8ga25vdyB0aGF0IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2Vy
dmVkIGZvciB0aGUgdHlwZS4KQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRp
YWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKLSAgICBPcHRpb25hbDxTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIo
c2l6ZV90IGJ5dGVDb3VudCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5
dGVDb3VudCk7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VtYXBob3JlRm9yR2V0UGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9y
eUFuZFNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IElQ
Qzo6U2VtYXBob3JlJik+JiYpOwogICAgIHZvaWQgZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVk
TWVtb3J5KCk7Ci0gICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0RGF0YUZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3Rvcjx1aW50OF90PiYmKT4mJik7CisgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9p
ZCBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwogICAgIHZv
aWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNv
cmU6OkZvbnQ+JiYpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3Qg
UGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsKICAgICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3Nh
Z2VBcmd1bWVudHMgYXJndW1lbnRzOwotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwogCiAgICAgICAgIGJvb2wgc2hvdWxk
UGVyZm9ybVdha2V1cChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgY29uc3QKICAgICAgICAgewpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAg
UmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlczsKLSAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVu
ZGluZ1dha2V1cEluZm87CisgICAgc3RkOjpvcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZTsKICAgICBJUEM6OlNlbWFwaG9yZSBtX2dldFBpeGVsQnVmZmVyU2Vt
YXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRN
ZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGExZTM1
YWQ1MDM5YTRiNTQ5NDI5YmI0ZTg5YWM5M2Y2YWNkZTUzMDguLjRiM2ZlOWEwMjYyZThhNTQ5MTg1
MmM2ZDZhMDQwNDVkNmE2OTYzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCkBAIC0yOSw4ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgewogICAgIFNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKCkgLT4gKElQQzo6U2VtYXBob3Jl
IHNlbWFwaG9yZSkgU3luY2hyb25vdXMKICAgICBVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv
cmVGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQpIC0+IChXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKSBTeW5j
aHJvbm91cwogICAgIERlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSgpCi0gICAgR2V0
RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgLT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzCi0g
ICAgR2V0RGF0YUZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CisgICAgR2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIGVudW06dWludDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHVybFN0cmluZykg
U3luY2hyb25vdXMKKyAgICBHZXREYXRhRm9ySW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKFZlY3Rvcjx1aW50OF90
PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIEdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVy
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMKICAg
ICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDhh
YWI3OGY2NWJhNGUwN2ViYzg4NjkwZTgwZjRhMWRhOTZkOGVlYjMuLjQ0YTI3ODI2NTJhOGZlYjEz
ZDVkNGNhNzU1MTAxZjBmM2ViZWRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNDUsMjQgKzQ1LDI0IEBAIHN0cnVjdCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgZW5jb2RlciA8
PCBpZGVudGlmaWVyIDw8IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlIDw8IHBhZ2VQcm94eUlE
IDw8IHBhZ2VJRDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAg
ICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxJUEM6
OlNlbWFwaG9yZT4gcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SVBDOjpTZW1hcGhvcmU+IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAg
ICBkZWNvZGVyID4+IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAgICBpZiAoIXJl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJ
RDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJv
eHlJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYWdlUHJveHlJRDsKICAgICAgICAgaWYgKCFwYWdl
UHJveHlJRCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgICAgICBkZWNvZGVyID4+
IHBhZ2VJRDsKICAgICAgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRp
YWxpemF0aW9uU2VnbWVudEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9J
bml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKaW5kZXggZDEyNzlhNDU0ZmVlODRlMDU3ZWQzYWZi
MTBiNmI1Y2RiMjUzODg0Ni4uYjEzMDkwN2UxOWY2YzE5NzUzZjJhNWM2ZmNiODYwYTA1ZjIyZWQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0
aW9uU2VnbWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5p
dGlhbGl6YXRpb25TZWdtZW50SW5mby5oCkBAIC01MiwxNCArNTIsMTQgQEAgc3RydWN0IEluaXRp
YWxpemF0aW9uU2VnbWVudEluZm8gewogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxUcmFja0luZm9ybWF0aW9uPiBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHJh
Y2tJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIE9wdGlvbmFsPE1lZGlhRGVzY3JpcHRpb25JbmZvPiBtZWRpYURlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gbWVkaWFEZXNj
cmlwdGlvbjsKICAgICAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAg
ICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRpb25hbDxUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyPiBpZGVudGlmaWVyOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgICAgICAgICAgZGVjb2RlciA+PiBp
ZGVudGlmaWVyOwogICAgICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NSwyNCArODUsMjQgQEAgc3RydWN0IEluaXRpYWxp
emF0aW9uU2VnbWVudEluZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PgotICAgIHN0YXRpYyBPcHRpb25hbDxJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbml0aWFsaXphdGlv
blNlZ21lbnRJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFU
aW1lPiBkdXJhdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKICAgICAgICAgaWYg
KCFkdXJhdGlvbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRpb24+PiBhdWRpb1RyYWNrczsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZvcm1hdGlvbj4+IGF1ZGlvVHJhY2tzOwogICAg
ICAgICBkZWNvZGVyID4+IGF1ZGlvVHJhY2tzOwogICAgICAgICBpZiAoIWF1ZGlvVHJhY2tzKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0
b3I8VHJhY2tJbmZvcm1hdGlvbj4+IHZpZGVvVHJhY2tzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGRlY29kZXIg
Pj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGlmICghdmlkZW9UcmFja3MpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9y
bWF0aW9uPj4gdGV4dFRyYWNrczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJ
bmZvcm1hdGlvbj4+IHRleHRUcmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gdGV4dFRyYWNrczsK
ICAgICAgICAgaWYgKCF0ZXh0VHJhY2tzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDEzNjg5M2EwY2QzOTBkNDkw
NmMwOGNhNjI2OGMzYWIyMTQxYTJmNWEuLjgwNjE0NjE3NzBmM2VlODc0M2FhNjIxYjdhOGQwMzM1
ZjExMTYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtODksNyArODks
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0
cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBzYW5pdGl6ZWRSZXNw
b25zZS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRp
bWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1f
c2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3BvbnNl
LnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGJv
b2wgc2Vzc2lvbkNsb3NlZCwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1l
c3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNl
cyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQg
PT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9uKHR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQs
IG9yaWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFs
PGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0
YWJsZSB7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lv
bklkLCBvcmlnaW4sIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKHN0ZDo6b3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb25UaW1lLCBzdGQ6Om9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5
U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3Vj
Y2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkLCBmYWlsdXJlKTsKICAgICB9
KTsKIH0KQEAgLTExNSw4ICsxMTUsOCBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShz
ZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIE9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lv
bnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKICAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA1MThmY2FjZDFhZDIxYjk1MjA2ZDFj
OTkyNzVkMWJkYTYxNzJmNmVlLi44YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1
NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZTsKICAgICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTsKICAgICB1c2luZyBMaWNlbnNlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OwotICAgIHVzaW5nIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3Rh
dHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJv
b2wpPjsKLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0
aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBzdGQ6
Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYm
LCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1
c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgYm9vbCk+
OwogICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OwogCiAgICAgLy8gTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCAxNjE4NzJlYjBjNmYwM2M0M2I5YTgwMGU0OTViNzE1NmI2YzM0
NmM0Li42MTJlYWEzOGFkZDI2NDNjZDYxOTgyYTBhN2RlZjU4ZTM0NTBmOGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNywxMCArMjcsMTAg
QEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgUmVxdWVzdExpY2Vuc2UoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpM
aWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGluaXREYXRhKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IG1lc3NhZ2UsIFN0cmlu
ZyBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCi0gICAgVXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBy
ZXNwb25zZSkgLT4gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxk
b3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwotICAgIExvYWRT
ZXNzaW9uKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3Ry
aW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBB
c3luYworICAgIFVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgcmVz
cG9uc2UpIC0+IChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5
bmMKKyAgICBMb2FkU2Vzc2lvbihXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VU
eXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4pIC0+IChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5bmMKICAgICBDbG9zZVNlc3Npb24oU3RyaW5n
IHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKLSAgICBSZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vz
c2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBtZXNzYWdlLCBib29sIHN1Y2NlZWRl
ZCkgQXN5bmMKKyAgICBSZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwog
ICAgIFN0b3JlUmVjb3JkT2ZLZXlVc2FnZShTdHJpbmcgc2Vzc2lvbklkKQogICAgIERpc3BsYXlJ
RENoYW5nZWQodWludDMyX3QgZGlzcGxheUlEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggZTg1ZTAxMzhhODg2NzA0OGI1
MTJjYTRkOWUxZTJmNmRlMDc5ZjA1OS4uNWU1NGU4MjNkN2U3N2NiYjYwN2Q1NjEyNmEyOTI2ZTI0
NmFmYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90
ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uCiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLU9w
dGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETVByb3h5Ojpz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA4NjYwYWRjN2Iw
OTBiNWJjNmQzOTg4YWIzMGIwMDZjNThiNmEzZjBhLi42OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5
NmIyMzQ4MjY0NzBmNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDY2ZjJjMTg0MGE3MzZlYmRhMzAyMzgxMDY2N2U2
Nzg4MjU1Yzg0ZTQuLjEyMTQxZDEyYjZiYmJiYTMyNzA4ZGE0ZjNlYWI4OGM3NjNjM2E4ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNETVBy
b3h5IE5vdFJlZkNvdW50ZWQgewotICAgIEdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oc3RydWN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nl
c3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAgR2V0U3VwcG9ydGVkQ29uZmlndXJhdGlv
bihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGVDb25m
aWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNj
ZXNzIGFjY2VzcykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbj4gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENyZWF0ZUluc3Rh
bmNlKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKSBTeW5jaHJvbm91cwogICAgIExvYWRBbmRJbml0aWFsaXplKCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCmluZGV4IGQ3NmZjZjFhNmZjODE2NmU1MzRhOTVkZjIyNTM2MGViNjRmODRj
MWQuLjk2ODNlZGUwOWY5NmZjZDlkMTkzZjM0MmZiNWYwOGNiYWFiMjlmNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmNwcApAQCAtNDUsMTEgKzQ1LDExIEBAIFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCiB7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246
OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKIAot
ICAgIE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29k
ZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShpbWFnZURlY29kZXJJZGVudGlmaWVyKSk7CiAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGkKICAgICBtX2ltYWdlRGVjb2RlcnMu
Z2V0KGlkZW50aWZpZXIpLT5zZXRFeHBlY3RlZENvbnRlbnRTaXplKGV4cGVjdGVkQ29udGVudFNp
emUpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3Qg
ZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8
VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3Vu
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBp
ZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSkgewpAQCAtMTA2LDE4ICsx
MDYsMTggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnMKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9
IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdl
RGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7CiAgICAgaWYgKGZyYW1lQ291
bnQpCiAgICAgICAgIGZyYW1lSW5mb3MgPSBpbWFnZURlY29kZXItPmZyYW1lSW5mb3MoKTsKIAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lQ291bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBp
bWFnZURlY29kZXItPmhhc1RyYWNrKCksIFdURk1vdmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikp
OwotICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICgh
bV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXggMTFiM2FlMTllNjRiOTNkN2Y0
NGY1ZmE2ZTg3Y2EyYzQ3ZTRlOGMzNi4uZTJjMTExYzQwYTRkMzQyOTExZGY0YTE5YWYxYWIwZjU3
MTgxYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIHZvaWQgY3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0
ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKTsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3Qg
ZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYm
KT4mJik7CisgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAog
ICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDI4NDdjNTYyYzNmY2NiYmMzOWRlOWZkZjk3NDRkNTJmZjdkZGZhMTguLjE5OGIyYjIzY2U2ZmMw
ZjRmZjMyMzgzNjUzODZhODZmYzk0ZGFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI4LDExICsyOCwxMSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBTdHJpbmcgbWltZVR5cGUpIC0+IChPcHRpb25hbDxX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwor
ICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNvZGVyKFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBlY3RlZENv
bnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJD
b3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCi0gICAg
Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5k
UmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFj
ZSkgU3luY2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUg
c2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmln
aHQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAwZThhODFjNjU2ZGM4NTAxNDgzOTY2YzBmYWIwZDEw
ZDhiN2QwYWM4Li42YWE0ZDFlNzJhOGNlMjllYTdlZmEyOGRkYjliMzc0ZjE4ZjNkNWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAtNTgsNyArNTgsNyBAQCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoKQogICAgICAgICBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgcHJveHkua2V5LnRvVUludDY0KCkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRp
b25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24p
Cit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBvcHRp
b25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXImJik+JiYgY29tcGxldGlvbikKIHsKICAgICBhdXRvIHByaXZhdGVDRE0gPSBMZWdhY3lD
RE06OmNyZWF0ZShrZXlTeXN0ZW0pOwogICAgIGlmICghcHJpdmF0ZUNETSkgewpAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZQogICAgIGNvbXBsZXRpb24oV1RGTW92ZShp
ZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKIHsKICAgICBpZiAobWltZVR5cGUp
CiAgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjprZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBl
KGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKaW5kZXggMTEz
ZmE5NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5MWQxNTNiMi4uZDg3NDlkZTEwMWE5NjhlYWEw
MDFjN2IxYmRlZTE4ODY3MzhmODI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApAQCAtNzMs
OCArNzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJik7Ci0g
ICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9u
YWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1l
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBXZWFrUHRyPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAg
ICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1Qcm94eT4+IG1fcHJveGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJjZWQzYzFhMmI4NzJkMDY0MzFkY2Q3OTljMzQyNGRkODQx
MDE5MTEuLmUxYTZjM2NkMGEyYzZiZmE5ZjYwZTNkYmUzZDQ4MTU1NzMzMTA1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsOCArMjQsOCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
SWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwotICAgIFN1cHBvcnRzS2V5U3lzdGVt
KFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJl
c3VsdCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisg
ICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5jcHAKaW5kZXggYzc0NWY3MTdmMjMzNDZiZGZmZjA1ZWQyNDM3ZjZhMWM1NTIxMTQ2
Zi4uYmY1MTc1OTJhMDFlMGVlYWM3YzJjOGM5NTg5NWJjMmZhOGUzNzY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENyZWF0ZVNlc3Npb25DCiAgICAgY2FsbGJh
Y2soV1RGTW92ZShpZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6
OnNldFBsYXllcklkKE9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkK
K3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8TWVk
aWFQbGF5ZXJJZGVudGlmaWVyPiYmIHBsYXllcklkKQogewogICAgIGlmICghcGxheWVySWQpCiAg
ICAgICAgIG1fcGxheWVySWQgPSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDQyZDA5NDE1ODZiNThiMTRh
MzAyMmRjYzBjYTY1YmVlMjBlNzYwZTYuLmUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1
OTJhZDg3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFj
ayYmKTsKICAgICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKICAgICB2b2lkIGNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOwotICAg
IHZvaWQgc2V0UGxheWVySWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiYmKTsKKyAgICB2b2lkIHNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8vIExlZ2FjeUNETUNsaWVudAogICAgIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVn
YWN5Q0RNKikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YzRjZjQ1ZDMyZTkwMzJiZWQzODY3ZjMyM2FkMDVlMzU5OTFhY2JiNS4uOGVjNmIzYjdhYWVmNmIx
YjVmZDZmMGUzODU3ZmRjNTFhMmFmNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90
UmVmQ291bnRlZCB7CiAgICAgU3VwcG9ydHNNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChi
b29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCi0gICAgU2V0UGxheWVySWQoT3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkKKyAgICBTZXRQbGF5
ZXJJZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVy
SWQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA4ZWU5ZWU4
ZTEzMjI0MjQxNDY2NmU4YmVkYzk4ZmQ2NGUyMjFkMDBmLi45M2IyZmY3NDFiMWY4MzY5YjIwNTg0
ZTQ5N2U0YTAyMWI5Y2NmNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjUs
NyArNjUsNyBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXko
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXN0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZlcnRUb09wdGlv
bmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKIHsK
ICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oCmluZGV4IGM5MGY1ZGExMzIxMDAxNzU1ZjQwYWFlNDU2ZDk3ZGZhODVjMGJl
OTMuLmYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKQEAgLTc3LDEyICs3NywxMiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBNZXNzYWdl
cwotICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OwogICAgIHZvaWQg
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVs
ZWFzZUtleXMoKTsKLSAgICB1c2luZyBVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmLCB1bnNpZ25lZCBz
aG9ydCwgdWludDMyX3QpPjsKKyAgICB1c2luZyBVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCwgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYs
IHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OwogICAgIHZvaWQgdXBkYXRlKElQQzo6U2hhcmVk
QnVmZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQ2FjaGVk
S2V5Rm9yS2V5SURDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYmKT47CisgICAgdXNpbmcgQ2FjaGVkS2V5Rm9yS2V5SURDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckNvcHk+JiYpPjsKICAgICB2b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwg
Q2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmKTsKIAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhNmNjNzZhMWJhZmIyYWM0OTM1MzRiNzE0OWI5NWMyOTU0MGI3
NTRmLi41YWUwYzVmMjVhOWYzMDA4NGQ4NDc4ZWQwMzkwNDZlOGZmZmIyMTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDEwICsyNCwxMCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgaW5pdERhdGEpIC0+IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5l
eHRNZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29k
ZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgU3luY2hyb25vdXMKKyAgICBHZW5lcmF0ZUtleVJlcXVl
c3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgaW5pdERhdGEpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gbmV4dE1lc3NhZ2UsIFN0cmluZyBk
ZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1D
b2RlKSBTeW5jaHJvbm91cwogICAgIFJlbGVhc2VLZXlzKCkKLSAgICBVcGRhdGUoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IHVwZGF0ZSkgLT4gKGJvb2wgc3VjY2VlZGVkLCBPcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVp
bnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCi0gICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3Ry
aW5nIGtleUlkKSAtPiAoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBrZXkpIFN5bmNo
cm9ub3VzCisgICAgVXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weSB1cGRhdGUpIC0+IChib29s
IHN1Y2NlZWRlZCwgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNz
YWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNo
cm9ub3VzCisgICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkKSAtPiAoc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGtleSkgU3luY2hyb25vdXMKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFE
ZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
RGVzY3JpcHRpb24uaAppbmRleCBhMzkwMDFmZmI3OTk1OWJhNzU3OGJiNjAzYmYwZjg4OWE4ZTMx
Y2ZjLi44ZDk5MGM0M2VhNjU4NjFkMDFjN2FmNzY2OGUwMjU1OTU3NGE0NDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0
aW9uLmgKQEAgLTY4LDI0ICs2OCwyNCBAQCBzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm8gewog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25h
bDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFEZXNjcmlwdGlvbkluZm8+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2RlYzsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvZGVjOwogICAgICAgICBkZWNvZGVyID4+IGNvZGVjOwog
ICAgICAgICBpZiAoIWNvZGVjKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDxib29sPiBpc1ZpZGVvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzVmlkZW87CiAgICAgICAgIGRlY29kZXIgPj4gaXNWaWRlbzsKICAgICAgICAgaWYgKCFp
c1ZpZGVvKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxib29sPiBpc0F1ZGlvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXVkaW87
CiAgICAgICAgIGRlY29kZXIgPj4gaXNBdWRpbzsKICAgICAgICAgaWYgKCFpc0F1ZGlvKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBp
c1RleHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNUZXh0OwogICAgICAgICBkZWNv
ZGVyID4+IGlzVGV4dDsKICAgICAgICAgaWYgKCFpc1RleHQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGIwMDc3ZWQxZjZlNDY5MGRhZGVj
NDgxYTU4ZDBjMDliOWVmMWI3MTUuLjRmNThlZDFjNTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQw
NjY4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uJiBjbwogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
bjsKICAgICBpZiAoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewpAQCAtODY4LDcgKzg2OCw3IEBA
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2VuZENhY2hlZFN0YXRlKCkKIH0KIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKE9wdGlvbmFsPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyPiYmIGluc3RhbmNlSWQpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNl
dExlZ2FjeUNETVNlc3Npb24oc3RkOjpvcHRpb25hbDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllcj4mJiBpbnN0YW5jZUlkKQogewogICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5h
Z2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOwogICAgIGlmICghbV9tYW5hZ2VyIHx8
ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKQEAgLTEwMDYsNyArMTAw
Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGVyZm9ybVRhc2tBdE1lZGlhVGlt
ZShjb25zdCBNZWRpYVRpbWUmIHRhc2tUaW1lLCBNCiAgICAgfSwgYWRqdXN0ZWRUYXNrVGltZSk7
CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6d291bGRUYWludE9yaWdpbihzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5Ojp3b3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3BsYXllci0+d291bGRUYWludE9yaWdpbihvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2lu
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZiMGViYjMwOTFkZDA1NGYwZjUwMDNlZDkwZDkx
M2QxM2E0NjE4NzUuLjg2NGUyZTM4YmExZGNhNTlkZDlmZTEzZTlhYmYxMjY4NTQ2YzAyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTEwLDEwICsxMTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBn
ZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAg
dm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9y
UmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1Jhbmdl
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0
SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJik7CisgICAgdm9pZCBwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBm
bG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBp
bmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYmKTsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5k
ZXJpbmcoKTsKIAotICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYp
PiYmKTsKKyAgICB2b2lkIGxvYWQoVVJMJiYsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYp
PiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZvaWQgbG9hZE1lZGlhU291cmNl
KFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGJvb2wgd2ViTVBhcnNlckVuYWJs
ZWQsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2VuZGlmCkBAIC0xNTcsNyAr
MTU3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKLSAgICB2b2lkIHNldExlZ2FjeUNETVNlc3Npb24oT3B0aW9uYWw8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXI+JiYgaW5zdGFuY2VJZCk7CisgICAgdm9pZCBzZXRMZWdhY3lD
RE1TZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI+
JiYgaW5zdGFuY2VJZCk7CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKQEAgLTE4Niw5
ICsxODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWRlb1RyYWNrU2V0U2VsZWN0ZWQoY29uc3Qg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciYsIGJvb2wpOwogICAgIHZvaWQgdGV4dFRyYWNr
U2V0TW9kZShjb25zdCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSk7CiAKLSAgICB1c2luZyBQZXJmb3JtVGFza0F0TWVk
aWFUaW1lQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PE1lZGlhVGltZT4sIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+KT47CisgICAgdXNpbmcgUGVyZm9y
bVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4sIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4p
PjsKICAgICB2b2lkIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiwgTW9u
b3RvbmljVGltZSwgUGVyZm9ybVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHZvaWQgd291bGRUYWludE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJvb2w+KT4mJik7CisgICAgdm9p
ZCB3b3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwogCiAgICAgdm9p
ZCBzZXRWaWRlb1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFsKGRvdWJsZSk7CiAKQEAgLTI5
Niw4ICsyOTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNo
U2VuZFJpZ2h0PiYmKT4mJik7Ci0gICAgdm9pZCBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJik7
CisgICAgdm9pZCBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmKTsKKyAgICB2b2lkIHBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYpOwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgYm9v
bCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFs
PFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyPiBtX2xlZ2FjeVNlc3Npb247CisgICAg
c3RkOjpvcHRpb25hbDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gbV9sZWdhY3lT
ZXNzaW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWNkMTE2OTkwZjdjNzJh
ODVmNzU2ZTkzNDdiOTAwNDg3MzA4YmZhMi4uNzJlOTU0NjlhZDEyMGRiYTc1YjFhYjlkZTlkYWE3
OTc1ZGI4ZDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDkg
KzI0LDkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgUHJlcGFyZUZvclBsYXliYWNrKGJv
b2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQ
cmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRl
cmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpEeW5h
bWljUmFuZ2VNb2RlIG1vZGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYworICAgIFByZXBhcmVGb3JQ
bGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6RHluYW1pY1JhbmdlTW9kZSBtb2RlKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwog
Ci0gICAgTG9hZChVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKKyAgICBMb2FkKFVSTCB1cmws
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lz
dGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBs
YXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBM
b2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IGJvb2wgd2ViTVBhcnNlckVuYWJsZWQsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlm
aWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogI2VuZGlmCkBA
IC03Niw3ICs3Niw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVm
Q291bnRlZCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQot
ICAgIFNldExlZ2FjeUNETVNlc3Npb24oT3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllcj4gaW5zdGFuY2VJZCkKKyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gaW5z
dGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5kaWYKIApAQCAtMTA1LDggKzEwNSw4IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgVmlk
ZW9UcmFja1NldFNlbGVjdGVkKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBib29sIHNlbGVjdGVkKQogICAgIFRleHRUcmFja1NldE1vZGUoV2ViS2l0OjpU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJD
b3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUpCiAKLSAgICBQZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUsIE1vbm90b25pY1RpbWUgbWVzc2FnZVRp
bWUpIC0+IChPcHRpb25hbDxNZWRpYVRpbWU+IG1lZGlhVGltZSwgT3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gbW9ub3RvbmljVGltZSkgQXN5bmMKLSAgICBXb3VsZFRhaW50T3JpZ2luKHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKSAtPiAoT3B0aW9uYWw8Ym9vbD4gd291
bGRUYWludCkgU3luY2hyb25vdXMKKyAgICBQZXJmb3JtVGFza0F0TWVkaWFUaW1lKE1lZGlhVGlt
ZSBtZWRpYVRpbWUsIE1vbm90b25pY1RpbWUgbWVzc2FnZVRpbWUpIC0+IChzdGQ6Om9wdGlvbmFs
PE1lZGlhVGltZT4gbWVkaWFUaW1lLCBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG1vbm90
b25pY1RpbWUpIEFzeW5jCisgICAgV291bGRUYWludE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd291bGRUYWlu
dCkgU3luY2hyb25vdXMKIAogICAgIFNldFZpZGVvUGxheWJhY2tNZXRyaWNzVXBkYXRlSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQogCkBAIC0xMjMsOCArMTIzLDggQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgTmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxN
YWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNocm9ub3VzCi0gICAgUGl4ZWxCdWZmZXJGb3JD
dXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNo
cm9ub3VzCisgICAgTmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIC0+IChzdGQ6Om9wdGlvbmFs
PE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCkgU3luY2hyb25vdXMKKyAgICBQaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCkgLT4gKHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0
KSBTeW5jaHJvbm91cwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1
cmF0aW9uLmgKaW5kZXggMmVmYTE0ZWI3NTMxNGRkOGQ2OWVmNzhhODE0ZjIzYzViNjc0MzY0Ny4u
YWUxZDk5ZmQ2NjEzMDM4ZWY5OGZhN2IyNTViNDlhODVkMTdlM2Y4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKQEAgLTY4LDYxICs2OCw2MSBAQCBzdHJ1Y3QgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gewogICAgIH0KIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByZWZlcnJl
cjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlZmVycmVyOwogICAgICAgICBkZWNv
ZGVyID4+IHJlZmVycmVyOwogICAgICAgICBpZiAoIXJlZmVycmVyKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKICAgICAgICAgZGVjb2Rl
ciA+PiB1c2VyQWdlbnQ7CiAgICAgICAgIGlmICghdXNlckFnZW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IG5ldHdvcmtJbnRlcmZhY2VOYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0ludGVyZmFj
ZU5hbWU7CiAgICAgICAgIGlmICghbmV0d29ya0ludGVyZmFjZU5hbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpD
b250ZW50VHlwZT4+IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IG1lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBkZWNvZGVyID4+
IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBpZiAo
IW1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
cHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwogICAgICAgICBkZWNv
ZGVyID4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwogICAgICAgICBpZiAoIXByZWZl
cnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFja0RhdGE+PiBvdXRPZkJhbmRUcmFja0RhdGE7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrRGF0YT4+
IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBvdXRPZkJhbmRUcmFja0Rh
dGE7CiAgICAgICAgIGlmICghb3V0T2ZCYW5kVHJhY2tEYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47
CiAgICAgICAgIGRlY29kZXIgPj4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYg
KCFkb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRpZmllcjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+
PiBsb2dJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWxvZ0lkZW50aWZpZXIpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVz
ZVBlcnNpc3RlbnRDYWNoZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRVc2VQ
ZXJzaXN0ZW50Q2FjaGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlUGVyc2lzdGVudENh
Y2hlOwogICAgICAgICBpZiAoIXNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNWaWRlbzsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+
IGlzVmlkZW87CiAgICAgICAgIGlmICghaXNWaWRlbykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggZTYyMGEwNWZlZGI1MTZlMTg5NmNmZWVl
M2U2MzI0MTFlMmQwOTQzMS4uNjMwZWJmY2FjMjAwMWMwNjZiOTViNjIyM2QyNjkyMGRhNzkyNmU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlTWVk
aWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiBjb250ZW50CiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+IHNvdXJjZUJ1ZmZlclBy
aXZhdGU7CiAgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3RhdHVzID0gbV9wcml2
YXRlLT5hZGRTb3VyY2VCdWZmZXIoY29udGVudFR5cGUsIG1fd2ViTVBhcnNlckVuYWJsZWQsIHNv
dXJjZUJ1ZmZlclByaXZhdGUpOwogCi0gICAgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcj4gcmVtb3RlU291cmNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUlkZW50aWZpZXI7CiAgICAgaWYg
KHN0YXR1cyA9PSBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1czo6T2spIHsKICAgICAgICAg
YXV0byBpZGVudGlmaWVyID0gUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICAgICAgYXV0byByZW1vdGVTb3VyY2VCdWZmZXJQcm94eSA9IFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjpjcmVhdGUoKm1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwg
c291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNlTm9uTnVsbCgpLCAqbV9yZW1vdGVNZWRpYVBsYXll
clByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDRkYTZiNWFiMmQ2OTQ1ZDdkMjg5NjVlZjE0YWEx
OWI4ZWE4Mzg5ZWYuLmMzZGRmZmE0NGFlNzI0ZDE5MjdlMmU4ZDAxNWFhN2Y1NDdmMzljZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAotICAgIHVzaW5nIEFkZFNvdXJj
ZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OkFkZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRp
Zmllcj4pPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4pPjsKICAgICB2b2lkIGFkZFNv
dXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIEFkZFNvdXJjZUJ1ZmZlckNh
bGxiYWNrJiYpOwogICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwog
ICAgIHZvaWQgYnVmZmVyZWRDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MGQ2NjIwZWJjNWI4
YTMzZmY1ZWY4MjU1NTZiOTEzOWQ5Y2JjMmI2Li5lZDgxMmYyNWIzNGY0NTgxZWQ2ZTY2OWE0ZjIx
YzA0NTZkNTAxOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYs
NyArMjYsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBOb3RSZWZDb3VudGVkIHsK
LSAgICBBZGRTb3VyY2VCdWZmZXIoV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+
IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3Rh
dHVzLCBPcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgQWRkU291cmNlQnVmZmVy
KFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAoZW51bTp1aW50OF90IFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0YXR1cywgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJh
dGlvbikKICAgICBCdWZmZXJlZENoYW5nZWQoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIGJ1
ZmZlcmVkKQogICAgIFNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24u
aAppbmRleCBlOWZkZjcwMTQwMDQwOTk0ZmUwNWRmMWU3OGFiNGU2YjVjM2VmOTRiLi44ZDYzYzNh
MzJhNTJjNTUzOWIzMTE5YjVmMWYyY2MwYmY3YTY5NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtNzEsNzQgKzcxLDc0IEBAIHN0cnVjdCBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gdHJhY2tJZDsKICAgICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKICAgICAgICAgZGVjb2RlciA+
PiBsYWJlbDsKICAgICAgICAgaWYgKCFsYWJlbCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgICAgIGRlY29kZXIgPj4g
bGFuZ3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3VhZ2UpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGluQmFuZE1ldGFkYXRh
VHJhY2tEaXNwYXRjaFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gaW5C
YW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBpbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwogICAgICAgICBpZiAoIWluQmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+
PiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgaWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0
cmFja0luZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdHJhY2tJbmRleDsKICAgICAg
ICAgZGVjb2RlciA+PiB0cmFja0luZGV4OwogICAgICAgICBpZiAoIXRyYWNrSW5kZXgpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4gY3VlRm9ybWF0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4g
Y3VlRm9ybWF0OwogICAgICAgICBkZWNvZGVyID4+IGN1ZUZvcm1hdDsKICAgICAgICAgaWYgKCFj
dWVGb3JtYXQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQ+IGtpbmQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZD4g
a2luZDsKICAgICAgICAgZGVjb2RlciA+PiBraW5kOwogICAgICAgICBpZiAoIWtpbmQpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlz
Q2xvc2VkQ2FwdGlvbnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNDbG9zZWRDYXB0
aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBpc0Nsb3NlZENhcHRpb25zOwogICAgICAgICBpZiAo
IWlzQ2xvc2VkQ2FwdGlvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzU0RIOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzU0RIOwogICAgICAgICBkZWNvZGVyID4+IGlzU0RIOwogICAgICAgICBpZiAoIWlzU0RIKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29s
PiBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzOwogICAgICAgICBkZWNvZGVyID4+IGNvbnRh
aW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAgICAgaWYgKCFjb250YWluc09ubHlGb3JjZWRT
dWJ0aXRsZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50OwogICAgICAgICBkZWNvZGVyID4+IGlzTWFpblBy
b2dyYW1Db250ZW50OwogICAgICAgICBpZiAoIWlzTWFpblByb2dyYW1Db250ZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0Vh
c3lUb1JlYWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNFYXN5VG9SZWFkOwogICAg
ICAgICBkZWNvZGVyID4+IGlzRWFzeVRvUmVhZDsKICAgICAgICAgaWYgKCFpc0Vhc3lUb1JlYWQp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJv
b2w+IGlzRGVmYXVsdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gaXNEZWZhdWx0OwogICAgICAgICBpZiAoIWlzRGVmYXVsdCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24uaAppbmRleCAyOWRmMjM1ZmYxZDMxZTZkZTkyM2JhZWE0YWM3N2Q2MjgxOTg1OThlLi44MzFl
YmE0Mjc4MGI2ZTZjMWMyOGRjZjM1YmJkYzJmZTFiMTVlNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uLmgKQEAgLTYxLDQ5ICs2MSw0OSBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAg
ICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8QXRvbVN0cmluZz4gbGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAg
IGlmICghbGFiZWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhbmd1YWdlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0
b21TdHJpbmc+IGxhbmd1YWdlOwogICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOwogICAgICAg
ICBpZiAoIWxhbmd1YWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGRlY29kZXIg
Pj4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGlmICghc3RhcnRUaW1lVmFyaWFuY2UpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGludD4g
dHJhY2tJbmRleDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRyYWNrSW5kZXg7CiAgICAg
ICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKICAgICAgICAgaWYgKCF0cmFja0luZGV4KQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBl
bmFibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdWRpb1RyYWNr
UHJpdmF0ZTo6S2luZD4gYXVkaW9LaW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kPiBhdWRpb0tpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4g
YXVkaW9LaW5kOwogICAgICAgICBpZiAoIWF1ZGlvS2luZCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2VsZWN0
ZWQ7CiAgICAgICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpLaW5k
PiB2aWRlb0tpbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OktpbmQ+IHZpZGVvS2luZDsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb0tpbmQ7CiAg
ICAgICAgIGlmICghdmlkZW9LaW5kKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
Y29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmluZGV4IDMxMTQ4NmFlNWFkNzY2
NzJmZWIxNDFkNTI5NWU5MDVmNmE4MzNkNTAuLmI4NWJlNmM3YWJmZjVlMzIzNTIwOTIyOGNmMDZk
ODkxNWIzOTM5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9j
b2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBzZXRWaWRlb0lubGluZVNpemVJZlBvc3NpYmxlKExh
eWVySG9zdGluZ0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFdlYgogICAgIFtDQVRyYW5zYWN0aW9u
IGNvbW1pdF07CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBs
YXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSBwcmVm
ZXJyZWREeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExh
eWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9y
UGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlIHBy
ZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShwcml2YXRlTW9kZSk7CiAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9J
bmxpbmVTaXplRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYKICAgICBzZXRWaWRlb0lu
bGluZVNpemVJZlBvc3NpYmxlKCptX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQsIHNpemUpOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9wbGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsK
QEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50
VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJp
Z2h0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAhVVNFKEFWRk9VTkRBVElPTikK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dzdHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9nc3RyZWFtZXIv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggMDk1ZmU1ZGJjZWRmNjhh
MDQyNzFlMzg0YzA0NTg1ZTUzYWY5YmRhYS4uOWVkMGJjODdhNzZlN2U5Njk1YWNiMDA1NzAyMzA1
MTU2NWYxNjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dz
dHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvZ3N0cmVhbWVyL1JlbW90ZU1lZGlhUGxheWVyUHJveHlH
U3RyZWFtZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sLCBib29sLCBmbG9hdCwgV2ViQ29y
ZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXll
ckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJikKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0LCBXZWJDb3Jl
OjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCk+JiYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9wbGF5c3RhdGlvbi9SZW1vdGVNZWRpYVBsYXllclByb3h5UGxheVN0
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlvbi5jcHAKaW5kZXggNjdlMzljNjMyYjdiMDYy
MmM4ZmE2Njk4MjYyN2VmZGNhYTBkMDE3OC4uYTIxOWE4NDI1MjQyZWZlMTNlNGJmYTVjNDllMTFj
ZjY0MzU4NmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3Bs
YXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVy
UHJveHlQbGF5U3RhdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJv
b2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0
LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQp
PiYmKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9v
bCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCwgYm9vbCwgZmxvYXQs
IFdlYkNvcmU6OkR5bmFtaWNSYW5nZU1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4
dElkKT4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5V2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS93aW4vUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eVdpbi5jcHAKaW5kZXggZGE1YmI5ZTc2NmVhYTBkNTMzMTkzZjA2YTViZjk5ZWEzODY5ODE0
ZC4uOThlZDg3NmI5MTFiNDdmYTVhYzE5Nzk1N2FjZDFhMWU2ZWQwNDZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvd2luL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHlXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sLCBib29sLCBmbG9h
dCwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElk
KT4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJv
b2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0
LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRl
eHRJZCk+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5jcHAKaW5kZXggMzhhMDU2ODdiNGRjMjA0YjNjZjFiMGRiMjZlYTRhNGU0NjkyYTNlYi4u
ZjBiZmM4ZmE1ZDMzMDBmNGQwMjI4NDUyNjVjOWEzZDJhY2YyZTYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlKElQQzo6Q29ubmUK
ICAgICAgICAgcmVjb3JkZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihN
ZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29s
IHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiwgU3RyaW5n
JiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25z
dCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmLCBTdHJpbmcmJiwgdW5zaWduZWQs
IHVuc2lnbmVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3Jk
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVk
aWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmll
ciwgcmVjb3JkQXVkaW8sIHJlY29yZFZpZGVvLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuaAppbmRleCA4MThiMDE4ZDJkNjgwMWIwN2VlYTdkNTM3YTg3ODM1Yzg5MjgyZWVlLi4yZjI5
ZmVmMmFmMmQzYzM2MTA5NmIzM2Y5ZjA5ZWUwNzc4NzMwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiwgU3RyaW5nJiYsIHVu
c2lnbmVkLCB1bnNpZ25lZCk+JiYpOworICAgIHZvaWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNv
cmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmLCBTdHJpbmcmJiwg
dW5zaWduZWQsIHVuc2lnbmVkKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggNjcwNGI3MzM4OGU0ODZjNzU4N2E0NWM4NjllODE4ZDMxNDUwYjYw
Ny4uYjQzYjNmNDRlZjIxMWU3ZTdkZWIyZTQ0YTg3NGVlYjI2YWFhYWM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVy
KFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0
aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3Is
IFN0cmluZyBtaW1lVHlwZSwgdW5zaWduZWQgYXVkaW9CaXRSYXRlLCB1bnNpZ25lZCB2aWRlb0Jp
dFJhdGUpIEFzeW5jCisgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVySWRl
bnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbywgc3RydWN0IFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yLCBTdHJpbmcgbWltZVR5cGUsIHVu
c2lnbmVkIGF1ZGlvQml0UmF0ZSwgdW5zaWduZWQgdmlkZW9CaXRSYXRlKSBBc3luYwogICAgIFJl
bGVhc2VSZWNvcmRlcihXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA3YjY3YWZlMjY2NmMwMWI4ZGRiNmE3
NzAwYzMwYTg2ZTE5N2FiODkwLi43YjAxNWU3N2U4YjZkZjA3NDc2OGM1Yzc3ZDQ4NTA2N2YzZjE4
Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xp
ZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CiAKLSAgICB1
c2luZyBMYXllckluaXRpYWxpemF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4pPjsKKyAgICB1c2luZyBMYXllckluaXRp
YWxpemF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
TGF5ZXJIb3N0aW5nQ29udGV4dElEPik+OwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVS
b290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIExheWVySW5pdGlhbGl6YXRpb25DYWxsYmFjayYm
KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5oCmluZGV4IGU4NDM2ZDQ2M2QyNjM3ZTY3MDk5NmM5YzFjZDk2
YTAxMmRhZGVhMTguLjhlNjYyNjdkYzUwMjdmNjIyNmEzY2UzNzZlMjdkZmY1MDQxMzVlNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHVzaW5nIExheWVyQ3JlYXRpb25D
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29u
dGV4dElEPik+JiY7CisgICAgdXNpbmcgTGF5ZXJDcmVhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4pPiYmOwog
ICAgIHZvaWQgY3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwg
Ym9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBMYXllckNyZWF0aW9uQ2FsbGJh
Y2spOwogICAgIHZvaWQgcmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50
aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZWQ1OWQyYjMwY2RmM2QyYjQwYzIwNjgyYzM0Yjk0NDFi
ZmU5ZmEwMS4uOWQxZWM3N2YyMTFmMTg2ZTU4NGEyMWQ2MWI0ZGNmODE5NWVkYzBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZSB7
Ci0gICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyIGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9w
dGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEPiBjb250ZXh0SUQpIEFzeW5jCisg
ICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVy
IGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGNvbnRleHRJRCkgQXN5bmMK
ICAgICBSZWxlYXNlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyIGlkKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAppbmRleCAyMjVmNzFlMjQzZDYzMjM1MTE4YzliYzVjMWE3Yzg0ZmUz
ZTE1YjQ0Li44NDNhY2RjYjRhNGY0NDk3NDkwMmMzY2ZiNWYzNzAyMmZhODY2ODAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
QEAgLTMwNSwyMSArMzA1LDIxIEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCiBzdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRl
eFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKIHsKICAgICBzdGF0aWMgYXV0
byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQ
YWlyPiB7Ci0gICAgICAgIHsgIk9ic2VydmVkRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0
KSB9LAotICAgICAgICB7ICJUb3BMZXZlbERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmlu
ZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2ZWxEb21haW5zLCBzdGQ6Om51bGxvcHQp
IH0sCi0gICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3Rk
OjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShj
cmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0g
ICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1Np
bmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hT
dG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkp
IH0sCi0gICAgICAgIHsgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJ
bmRleFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cywgc3RyaXBJ
bmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0sCi0gICAgICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0
b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykp
IH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6
bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0gICAgICAg
IHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmlu
ZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSkpIH0sCi0gICAgICAgIHsgIk9wZXJhdGluZ0RhdGVzIl9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcElu
ZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRl
cykpIH0sCi0gICAgICAgIHsgIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
LCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpIH0sCi0gICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywg
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1
ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0K
KyAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkg
fSwKKyAgICAgICAgeyAiVG9wTGV2ZWxEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2ZWxEb21haW5zLCBzdGQ6Om51bGxv
cHQpIH0sCisgICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
KSkgfSwKKyAgICAgICAgeyAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlx
dWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKSB9LAorICAgICAgICB7ICJUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwgc3RyaXBJbmRl
eFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCisgICAgICAgIHsg
IlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKKyAgICAgICAgeyAiVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
Pj4oY3JlYXRlVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01h
dGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zy
b20pKSB9LAorICAgICAgICB7ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCBz
dGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0s
CisgICAgICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9w
YWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW5zLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5p
cXVlSW5kZXhTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKSkgfSwKKyAgICAgICAgeyAiU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bnMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpKSB9LAorICAgICAgICB7ICJTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRl
eFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbykpIH0sCisgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNy
ZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tKSkgfSwKKyAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJ
bmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0
ZXMpKSB9LAorICAgICAgICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNo
U3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkpIH0sCisgICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0
ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KSkgfQogICAgIH0pOwogICAgIAogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5k
ZXhRdWVyaWVzOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om9wZW5JVFBEYXRhYmFzZSgpCiAgICAgfQogfQogCi1PcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNr
Rm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJs
ZXNJblNjaGVtYSgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbWlzc2luZ1RhYmxlczsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIDEgZnJv
bSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBhbmQgdGJsX25hbWU9PyJfcyk7CkBA
IC00NzAsMTQgKzQ3MCwxNCBAQCBUYWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaQogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaW5kZXg7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGluZGV4OwogICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+c3RlcCgp
ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRl
eFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAgICAgIGlmICghcmF3SW5kZXguaXNFbXB0
eSgpKQogICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKICAgICB9CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRh
YmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBX
VEZNb3ZlKGluZGV4KSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCkKQEAgLTk5
Miw3ICs5OTIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNo
aXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHN0YXRlbWVudCwgT3B0aW9u
YWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNv
bmREb21haW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZWxhdGlvbnNoaXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHN0YXRl
bWVudCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29uc3QKIHsKICAgICBpZiAoIWZpcnN0RG9tYWlu
SUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhTUUxp
dGVTdGF0ZW1lbnRBdXRvCiAgICAgcmV0dXJuICEhc3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiB9
CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFRvcEZyYW1lRG9tYWluJgogICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMoc2NvcGVkU3Rh
dGVtZW50LCBkb21haW5JRChzdWJGcmFtZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdQogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRX
YXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bk5vd09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bk5vd09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjA2Nyw4ICsy
MDY3LDggQEAgU2Vjb25kcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzdWJGcmFtZURvbWFpbklEID0g
ZG9tYWluSUQoc3ViRG9tYWluKTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9wRnJhbWVEb21h
aW5JRCA9IGRvbWFpbklEKHRvcEZyYW1lRG9tYWluKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzdWJGcmFtZURvbWFpbklEID0gZG9tYWluSUQoc3ViRG9tYWluKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0b3BGcmFtZURvbWFpbklEID0gZG9tYWluSUQodG9wRnJhbWVEb21h
aW4pOwogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFpbklEIHx8ICF0b3BGcmFtZURvbWFpbklEKQog
ICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3Rp
bmdUaW1lc3RhbXAgfTsKQEAgLTIxODAsNyArMjE4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0
IFRvCiAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyByZWRpcmVjdERvbWFp
biB9KSwgKnJlc3VsdC5zZWNvbmQpOwogfQogCi1zdGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorc3Rk
OjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzaG91bGRFbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IoRG9tYWluRAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBE
b21haW5EYXRhJiBzdGF0aXN0aWMpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUo
Y29uc3QgRG9tYWluRGF0YSYgc3RhdGlzdGljKQogewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDAp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDkyLDggKzMwOTIsOCBAQCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YnVpbGRQcml2YXRlQ2xpY2tNZQogICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAh
PSAtMSkKICAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldEF0dHJpYnV0aW9uKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJpb3JpdHkpIH0pOwogCi0gICAgICAgIE9wdGlvbmFs
PFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIE9wdGlvbmFsPFdh
bGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAg
CiAgICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFz
IGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgogICAgICAgICBpZiAoc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCkBAIC0zMTEwLDcgKzMxMTAsNyBAQCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVp
bGRQcml2YXRlQ2xpY2tNZQogICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKIH0KIAotc3RkOjpwYWly
PE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiwgT3B0aW9uYWw8
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiBkZXN0aW5hdGlvblNpdGUpCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlv
blNpdGUpCiB7CiAgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VT
aXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKQEAgLTMxMzQs
MTEgKzMxMzQsMTEgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFByaXYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAg
IHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgIGlmIChmaW5kVW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgdW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbURhdGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwogCi0gICAg
T3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAg
ICBpZiAoZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQogICAgICAgICBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCk7CiAKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlCiAg
ICAgfQogfQogCi1PcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJj
ZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUs
IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorc3RkOjpv
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxT
ZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0
IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewogICAgIC8vIFdlIHNob3Vs
ZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJvbSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNj
aGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCiAgICAgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFs
CiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChPcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW4pCiB7CiAgICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwg
ZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgogICAgIFN0cmluZyBiaW5kUGFyYW1l
dGVyID0gIiUiOwpAQCAtMzQzOSw3ICszNDM5LDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U291
cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgT3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1l
c1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRp
b24pCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQogewogICAgIGF1dG8gc291
cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lz
dHJhYmxlRG9tYWluKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWlu
SUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwpAQCAt
MzQ1Nyw4ICszNDU3LDggQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRv
U2VuZD4sIE9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG8KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1l
VG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsKLSAgICBPcHRpb25hbDxEZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsKICAgICAKICAgICAvLyBB
IHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8g
dGhlIHJlc3BlY3RpdmUgc2l0ZS4KICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3Vi
bGUoMCkgPiAwLjApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IGZkNzFjYzVlN2I5NjA0Yzc4MThmMWI2YWU5YmE1ZDMxNmUyODE4
M2EuLjUxMzM3NmUzMzM2NDgyYWU1ZGE5MWVhYmUwZWQ1NWMwNWZkYjUwNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC02OSw3
ICs2OSw3IEBAIHVzaW5nIERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwog
dXNpbmcgU291cmNlRG9tYWluSUQgPSB1bnNpZ25lZDsKIHVzaW5nIERlc3RpbmF0aW9uRG9tYWlu
SUQgPSB1bnNpZ25lZDsKIAotdHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJp
bmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKK3R5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpv
cHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIAogLy8gVGhpcyBpcyBhbHdheXMg
Y29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFp
biYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2Nv
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKIApAQCAtMTM3LDE2ICsxMzcsMTYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCk7Ci0gICAgT3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEo
KTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGludGVycnVwdCgp
OwogCiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KICAgICB2b2lkIGluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcoKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNV
bnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4g
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6
b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyU2Vu
dEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KSBvdmVy
cmlkZTsKQEAgLTE4OSw4ICsxODksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5zZXJ0T2JzZXJ2
ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25z
dCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIHVuc2lnbmVkKTsK
LSAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBib29sIHJl
bGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgYm9vbCBkb21h
aW5FeGlzdHMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpOwogICAgIHZvaWQg
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgaW50KTsK
QEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50
VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7CiAgICAg
dm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9u
RG9tYWluSUQpOwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQ+LCBPcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4+IGVhcmxpZXN0VGlt
ZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBz
dGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9w
dGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2Vu
ZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwogCiAgICAgc3RydWN0
IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsKQEAgLTIzOCwxMyArMjM4
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJl
Y3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFp
bih1bnNpZ25lZCBwcmltYXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVu
dFJlZGlyZWN0aW9uU291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAg
ICAgdm9pZCBzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
U2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJl
dmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRS
ZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNv
cmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwcnVuZVN0YXRpc3Rp
Y3NJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIGVudW0gY2xhc3MgQWRkZWRSZWNvcmQgeyBObywg
WWVzIH07Ci0gICAgc3RkOjpwYWlyPEFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHN0ZDo6cGFpcjxBZGRlZFJlY29y
ZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVU
VVJOOwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3IoY29uc3QgRG9tYWlu
RGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyk7CiAgICAgYm9vbCBzaG91
bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKGNvbnN0IERvbWFpbkRhdGEmLCBib29sIHNob3VsZENo
ZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwogICAgIGJvb2wgc2hvdWxkRW5mb3JjZVNhbWVTaXRlU3Ry
aWN0Rm9yKERvbWFpbkRhdGEmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwpA
QCAtMjU0LDEyICsyNTQsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGlj
ZXMoKTsKICAgICBib29sIGNyZWF0ZVNjaGVtYSgpOwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtl
RG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBEb21haW5E
YXRhJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwogICAgIAogICAgIHZvaWQgcmVtb3ZlVW5hdHRy
aWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7CiAgICAgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21E
YXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZSk7CiAgICAgU3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUpOwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25h
bDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3RvcnlQ
YXRoOwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKQEAg
LTMxOSw4ICszMTksOCBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogICAgIGJvb2wgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgeyBm
YWxzZSB9OwogICAgIHVuc2lnbmVkIG1fb3BlcmF0aW5nRGF0ZXNTaXplIHsgMCB9OwotICAgIE9w
dGlvbmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGU7Ci0gICAgT3B0
aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7CisgICAgc3Rk
OjpvcHRpb25hbDxPcGVyYXRpbmdEYXRlPiBtX2xvbmdXaW5kb3dPcGVyYXRpbmdEYXRlOworICAg
IHN0ZDo6b3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7
CiAgICAgT3BlcmF0aW5nRGF0ZSBtX21vc3RSZWNlbnRPcGVyYXRpbmdEYXRlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRl
eCA5MzBlMmI0NTUxYWZlMjE5YWQwMTdhZDU0MTUyNTY0NzU4ZmI3MjM1Li5hZDRhM2JiNDdlMGNm
YTI3Mjk3NmFjMzFkNDgxZTU1MDFkZjY0MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIENvb2tp
ZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNvb2tpZUFjY2Vzcyhj
b25zdCBSZXNvdXJjZUxvYWRTCiAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRl
ZDsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYgc3ViRgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9t
cHRXYXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d25Ob3dPckVhcmxpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC05MjksNyArOTI5
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZEVuZm9y
Y2VTYW1lU2l0ZVN0cmljdEZvcihSZXNvdXJjZUwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9w
dGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0
YXRpc3RpYykKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKQogewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNmRjMTRhYWFjMDdjNGFiYjRhMGE0YjZjNDM1
NTliNmQxZjU1OGQ0YS4uNDlkM2Q4MjMyOTE1NTVjNjRiMDQ0YmY4MjNkM2IwMmE2YTNmZWU3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApA
QCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29r
aWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29v
a2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCkBAIC0xMTEsOSArMTEx
LDkgQEAgcHVibGljOgogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90IGlt
cGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgogICAgIHZvaWQgaW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcoKSBvdmVycmlkZSB7IH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+YXR0cmlidXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZSB7IHJldHVybiB7IH07
IH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0
ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVy
cmlkZSB7IH07CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBjbGVhckV4
cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgfTsKICAgICBTdHJpbmcg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9OwogICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92ZXJyaWRlIHsgfTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFs
ZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0
PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBj
b25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWlu
JiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVk
aXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlz
UHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdN
b2RlKCkgb3ZlcnJpZGU7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01lbW9yeVN0
b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogCiAgICAgSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgVW5pcXVlUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+PiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsKICAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRp
bmdEYXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5
ZWUxMWM5MTc1ZjE0MTdkYWY5OGUxNjBlN2JjMjkzNzgyZTViYmRlLi42YTU2MDU2Y2M1OTQ2Mjg0
MjFjZmNjYThmZmQ5MTU2NWY4YWE4NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBw
Qm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAgICAg
dmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRv
cEZyYW1lRG9tYWluJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWlu
JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzU3RhdHVzKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CiAKQEAg
LTIwNiw5ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dC4KICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTZW50
QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpID0gMDsK
QEAgLTIzOCw3ICsyMzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewog
ICAgICAgICBzaXplX3QgcHJ1bmVFbnRyaWVzRG93blRvIHsgODAwIH07CiAgICAgICAgIHNpemVf
dCBtYXhTdGF0aXN0aWNzRW50cmllcyB7IDEwMDAgfTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uOwogICAgICAgICBTZWNvbmRzIG1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9OwogICAgICAgICBTZWNvbmRzIGdy
YW5kZmF0aGVyaW5nVGltZSB7IDI0X2ggKiA3IH07CiAgICAgICAgIFNlY29uZHMgY2FjaGVNYXhB
Z2VDYXBUaW1lIHsgMjRfaCAqIDcgfTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG1fZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBN
b25vdG9uaWNUaW1lIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkOwogICAgIHVpbnQ2
NF90IG1fbGFzdFN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgeyAwIH07Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVz
dElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nU3RhdGlz
dGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiBtX2RlYnVnU3RhdGljUHJldmFsZW50UmVzb3VyY2UgeyBVUkwgeyBVUkwoKSwgImh0dHBz
Oi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyJfcyB9IH07CiAgICAgYm9vbCBtX2RlYnVnTG9nZ2lu
Z0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggZmEwZjk3MmQwZTc2OTY1ZDQwNGRhZjMzNjY1ZjBhMDkwYmY4ZWU4NC4uZDNkZTYwOWFmMjE1
OThlY2VjODk1ZjMyZjBkYWQyYzMwNDFiM2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFJlc291cgogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21h
aW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC00MDAsNyArNDAwLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlz
RXBoZW1lcmFsKCkpOwogCkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25zdCBSZWdpc3Ry
YWIKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywg
cHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7
CiB9CiAKLVN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW5TdG9yYWdlU2Vzc2lvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlKQorU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
blN0b3JhZ2VTZXNzaW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NTY29wZSBzY29wZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC01ODYsNyArNTg2LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3IKICAgICByZXR1cm4gaXNT
dG9yYWdlR3JhbnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTUzMiw3
ICsxNTMyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtBbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEEKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VT
aXRlLCBjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNp
dGUsIGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE2OTMsMTkgKzE2OTMsMTkgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5OjplbmNvZGUKICAgICBlbmNvZGVyIDw8IHRpbWVMYXN0VXBkYXRlZDsK
IH0KIAotYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBP
cHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4KK2F1dG8gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4KIHsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRlY29kZXIgPj4g
ZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRlY29kZWRTdG9yYWdlQWNjZXNzOwogICAgIGRlY29k
ZXIgPj4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2Vz
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlY29uZHM+
IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkZWNv
ZGVkVGltZUxhc3RVcGRhdGVkOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZFRpbWVMYXN0VXBkYXRl
ZDsKICAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNzM0LDE0ICsxNzM0LDE0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
CiAgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsKIH0KIAotYXV0byBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4KK2F1dG8gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4KIHsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRl
Y29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVj
b2RlZEZpcnN0UGFydGllczsKICAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CiAg
ICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0aWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGIx
ZTdjMjMzYTg0NGUwNGJlNzM0OTAzZjI5ODZlYmZhMzU5OWY1NjMuLmM3NmE2YWNhNDg0NTE1MTA1
YjY0OTFlMTNkOGUwNWU0NTczYzQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKIAogICAgICAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBpZ25vcmVzIGRp
ZmZlcmVuY2VzIGluIGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQgaXQgcHJvYmFibHkgc2hvdWxkIGJl
IGEgbmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRvcj09LgogICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkmKSBjb25zdDsKQEAg
LTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBz
dGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAg
ICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzb3J0cyBieSBudW1iZXIgb2YgdW5k
ZXJGaXJzdFBhcnRpZXMsIHNvIGl0IHByb2JhYmx5IHNob3VsZCBiZSBhIG5hbWVkIGZ1bmN0aW9u
LCBub3Qgb3BlcmF0b3I8LgogICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5
RGF0YSYpIGNvbnN0OwpAQCAtMTYwLDkgKzE2MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lz
dHJhYmxlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAg
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzc0luU3RvcmFnZVNlc3Np
b24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9y
YWdlQWNjZXNzU2NvcGUpOworICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFn
ZUFjY2Vzc0luU3RvcmFnZVNlc3Npb24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSk7CiAgICAgdm9pZCBoYXNI
YWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7CiAgICAgdm9pZCBzZXRMYXN0
U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nl
c3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+
JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIGJvb2wgbmVlZHNVc2VySW50ZXJhY3Rpb25RdWlyayhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjQ1LDcgKzI0NSw3
IEBAIHB1YmxpYzoKICAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgogICAgIHZvaWQg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwogICAgIHZv
aWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29u
c3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYpOwor
ICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJik7CiAgICAgdm9p
ZCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKICAg
ICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHBlcmZvcm1EYWlseVRhc2tzKCk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NFcGhl
bWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYpOwogICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckVwaGVtZXJhbChEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDgxN2Y5
Y2Q3N2M5NTBkZTRkN2FkZmRjZWM4MDU3NTEyODdlNzYyZTkuLmE4Yjk0M2E1MjEwOTRjZDEzN2Nl
OThkZmJmNGViYmY3MDM0YzI5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHsK
IH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKICAgICBhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYg
KCFuZXR3b3JrU2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMDFlNTMxYTM4YzA0ZDRhMjkz
Y2YyNDlhNTBhOThlYjg2MDA5MDdiZC4uNmNmODhjYzIzN2ZmYzA2ZDI2M2ZjOGM5NzczNjRmMGJm
MWJlOWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAg
ICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwogCi0gICAgdm9pZCBzdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CisgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNr
KERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9pZCBjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik7CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
LCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGI0OGM4NDNiY2E0OGVhNTk3
YTUwZTE5OTU2M2RmMmExYTk4YTA1ZTYuLjJkMTkxOTBhMzQ3MGRmYjUyMzU4NWYyMmY3ZjQ2NTA1
MGRmMzM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yODMsNyArMjgzLDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUlRDUHJvdmlkZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKIH0KIAogI2lmIEVOQUJMRShXRUJfUlRDKQotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRp
ZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmIGNhbGxiYWNrKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRp
ZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgYXV0byogY29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fbmV0d29ya1Byb2Nlc3Mt
PndlYlByb2Nlc3NDb25uZWN0aW9uKHJlbW90ZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIp
OwogICAgIGlmICghY29ubmVjdGlvblRvV2ViUHJvY2VzcykgewpAQCAtNjAzLDcgKzYwMyw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlbmRIMlBpbmcoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRvKE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RU
byhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJwcmVjb25uZWN0VG86IChwYXJlbnRQSUQ9JWQsIHBh
Z2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50
UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIApAQCAtNjU0LDEyICs2NTQsMTIg
QEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c3RvcmFnZVNlc3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3Rh
cnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9z
ZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN1Z2dlc3RlZE5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCkBAIC03MjIsNyArNzIyLDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXIKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdl
U2Vzc2lvbikKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5
OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tp
bmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJh
Y2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSkKIHsKICAgICBpZiAobV9zZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAppbmRleCA5NDY1YjY4ZjM2YzRlNTllZWFhYzY3NDgxOTA2YTNlMTk1
YzliNDdlLi4zMGI4ZGFlMWI2M2Y2MmFmNzA3N2Q5NTY2Y2IxY2ZjNmZlZDdkYTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJl
c291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSk7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BS
ZXNvdXJjZSk7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9u
Q29kZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYpOwpAQCAtMjEwLDIyICsyMTAsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRQaW5n
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZW5kSDJQaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRz
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJik7Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8o
T3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJik7CiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVkKHVpbnQ2NF90IGxv
YWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZv
aWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBi
cm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NP
cmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYg
cmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7Ci0gICAgdm9pZCBjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4pOworICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+KTsKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXND
T1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOwogCiAgICAgdm9pZCBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFz
a0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNv
cmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBz
ZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQg
Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNo
b3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwog
ICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQotICAgIHZv
aWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmKTsKKyAg
ICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4p
PiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjNjNhNmJhNzFmYWU0MzBiOWQyYTMyNmVjZmI4NmExNGRk
ZDMxOTkzLi4wNjNlZTZhNDYxYmI2OGViZGU3MGM2ZjllZTRlODM5NjFkMDMzNTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMxLDE2ICszMSwxNiBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgQnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHdlYkZyYW1lSUQpCiAgICAgUHJlZmV0Y2hETlMoU3Ry
aW5nIGhvc3RuYW1lKQogICAgIFNlbmRIMlBpbmcoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIFByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50
NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOworICAgIFByZWNvbm5lY3RUbyhzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7CiAgICAgSXNSZXNvdXJjZUxvYWRG
aW5pc2hlZCh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoYm9vbCBpc0Zpbmlz
aGVkKSBBc3luYwogCi0gICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25h
bDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKLSAgICBDb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFs
PFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBlbnVtOmJvb2wgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQogCiAgICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJv
bURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0
UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJs
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykg
U3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVz
KFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5
bmNocm9ub3VzCiAgICAgU2V0UmF3Q29va2llKHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
KQogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKICAgICBEb21D
b29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJv
bm91cwpAQCAtODgsNyArODgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgp
IEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3Vy
Y2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4g
KE9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKKyAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5l
bFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAt
PiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIFVwZGF0
ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwCmluZGV4IDFjOTA1ZDlhOTM1MjcwZDMxYmY1MjQxNTRlY2QzNGFkZjI1MzAw
YzIuLjM4YTYyNTE0OTM5OTZlYzMxNTc3OWYxNGVmMTBjN2QzMDg0ZjVkMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZAogewogICAgIGlmIChyZXNwb25zZS5p
c0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgp
KSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUp
OwogICAgICAgICAgICAgY2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2NjUzZWI4YzFhMzM5ZWU2MWQ0OTAxNDY5
NGNiOWViMTI0MWNjYmQzLi5jZjExNzE4Zjc5ZmFmNWQ2M2I5OThkMGI0YjBlZTY2YWY3M2NmNGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25z
ZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYg
aGVhZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBPcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVu
c2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBt
X21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKQEAgLTEzOCwxMCAr
MTM4LDEwIEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRVUkwgbV9kb2N1bWVudFVSTDsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVy
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gbV9jc3BSZXNwb25zZUhlYWRlcnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7Ci0gICAgT3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4g
bV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVj
a2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKaW5kZXggOGI2MmExZjg0ZTQxODJhZjcxYzRhNjg2ZTkzYTY3NmFkOTUzNGI5
YS4uZjhkNjE3YWU5M2YwZGFhOWU4ZWJlOWI5NzA1NmVmMDAzNmU0ZDM5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbjsKICAgICBXVEY6OlByb2Nlc3NJRCBwYXJlbnRQSUQgeyAwIH07CiAjaWYg
SEFWRShBVURJVF9UT0tFTikKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3JrUHJv
Y2Vzc0F1ZGl0VG9rZW47CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW47CiAjZW5kaWYKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdDsKICAgICBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZm
aW5nUG9saWN5IHsgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQg
fTsKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmls
ZVJlZmVyZW5jZXM7CiAgICAgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQ
cmVjb25uZWN0T25seTo6Tm8gfTsKLSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyOwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW46Ok5vIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CisgICAg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJy
aWVkPiBwY21EYXRhQ2FycmllZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmZjBm
ZjRhZjFjZmNjNzMyMDA5ZjBmOWE2YmQxMWI3NDVhYjBjZjdjLi5iMGYwYzUwMTFiZDQzODU1MzZj
OTBmNDdjNzFmZTc1MDIwZGExOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikK
ICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYsIEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBIVFRQQ29va2llQWNj
ZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rp
b24gPSBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikg
ewpAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnCiAgICAgfQogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vjb25kcyk7CkBAIC03
MDAsNyArNzAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+Y2xlYXJJc29sYXRlZFNlc3Npb25zKCk7CkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBib29sIE5l
dHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxl
ZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTIwODYsNyArMjA4Niw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
CiAgICAgbV9jYWNoZUVuZ2luZXMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIGRvd25sb2FkTWFuYWdlcigp
LnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CkBAIC0yNDg3LDcgKzI0
ODcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJvYwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykKIHsKICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlJlcXVlc3RTdG9yYWdlU3BhY2UgeyBzZXNzaW9uSUQsIG9yaWdp
biwgcXVvdGEsIGN1cnJlbnRTaXplLCBzcGFjZVJlcXVpcmVkIH0sIFdURk1vdmUoY2FsbGJhY2sp
LCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCAwODMzODJjOTlhMDdiMjZmZDU4OTIxYzVjODdlMmE2MWIyMTA3NjFjLi5iOGE3YWQ0
OWNhMTBlZDBmMzNlNjAxN2NkNGQzNmIwMmZlYmQ5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjM1LDcgKzIzNSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNl
c3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHB1YmxpYzoKICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogZmluZENhY2hlRW5naW5l
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUmIGVuc3Vy
ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgRnVuY3Rpb248UmVmPENhY2hlU3Rv
cmFnZTo6RW5naW5lPigpPiYmKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNw
YWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4pPiYmKTsKIAogICAg
IHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBkdW1wUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJik7CkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRs
ZXJzCiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAg
IHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJD
b3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0
ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVu
dGlmeSB3aGljaCBkaXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hl
KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAK
LSAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICB2b2lkIGRv
d25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93
bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MGVhMTJhMGQ0
NGFlZGEyMTQ5MmU4NTI0NzlkNmE4ZGMyMmQ4M2M4Li45MDQ2M2QyNWJkNmE0ODk0YTJlNmU5YzE1
ZjE1ZTJjODI4ODRmMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0
d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAotICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1l
bnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KSBBc3luYwogCiAj
aWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCBpZ25vcmVUTFNFcnJvcnMpCkBAIC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9y
PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IHJlZ2lzdHJhYmxlRG9tYWlucykgLT4gKCkgQXN5bmMKICAgICBSZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJM
IG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0
YVR5cGVzKSAtPiAoKSBBc3luYwogCi0gICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lKQorICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpib29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlk
U3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkg
QXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9v
bCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1l
KCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBV
UkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4g
KCkgQXN5bmMKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIElzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikgLT4gKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+
IChib29sIGlzUHJldmFsZW50KSBBc3luYwogICAgIElzVmVyeVByZXZhbGVudFJlc291cmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0
RG9tYWluKSAtPiAoYm9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5jCi0gICAgU2V0QWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNv
bmRzPiBzZWNvbmRzKSAtPiAoKSBBc3luYworICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNv
bmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFNlY29uZHMgc2Vj
b25kcykgLT4gKCkgQXN5bmMKICAgICBNZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4xLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVu
dCwgdWludDY0X3QgZGF0YVJlY29yZHNSZW1vdmVkKSAtPiAoKSBBc3luYwogICAgIEluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIHVpbnQ2NF90IG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5
bmMKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
c291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMg
ZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRp
YXRlZEJ5VXNlcikKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKCkgQXN5
bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRT
aW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3Vs
ZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmllZFNpbmNlLCBlbnVtOmJvb2wgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVDb29raWVC
bG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
U2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJs
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBbGxUYWJsZXMpIEFzeW5j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDY0NTAyYmUwNDE3MWJkNzM0
ZDZhM2UzN2Q0MGZiMTg3OGFiMTBkZDAuLjNkNGQ3MGYzY2YxN2JlY2U0ZDdhNGI1NWZiMmNlM2Ux
NzA5ZTZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCwyNSAr
ODQsMjUgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5jb29raWVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY29va2llU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gcGFyZW50QnVuZGxlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gcGFyZW50QnVuZGxlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LnBhcmVudEJ1bmRs
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnBhcmVudEJ1bmRsZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IHRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiB0ZW1wRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghdGVtcERp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4+IHdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOwogICAgIGRlY29kZXIgPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAgICAg
aWYgKCF3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBjZjExN2FhOTc1N2YyZjBiZTRlMTUyNTlh
YWI5OGJiMjkxYTFkMGU4Li4wMGVmYzVmMDUwMGJiYmI3MzIxODFkZmI5NjYzMWY3MDJjOGFlZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI2LDIwICsxMjYsMjAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHBjbURhdGFDYXJyaWVkOwogfQogCi1PcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyByZXN1bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5SUQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdlUHJveHlJRDsKICAgICBkZWNv
ZGVyID4+IHdlYlBhZ2VQcm94eUlEOwogICAgIGlmICghd2ViUGFnZVByb3h5SUQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LndlYlBhZ2VQcm94eUlEID0gKndlYlBh
Z2VQcm94eUlEOwogCi0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CiAgICAgZGVjb2RlciA+
PiB3ZWJQYWdlSUQ7CiAgICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xNjQsNyArMTY0LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhU
VFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKIAotICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVx
dWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiByZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAoIXJlcXVlc3RCb2R5
U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5yZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBy
ZXNvdXJjZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gcmVzb3Vy
Y2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIXJlc291cmNlU2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMjMs
NyArMjIzLDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zPiBvcHRpb25z
OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zPiBvcHRpb25zOwogICAgIGRlY29kZXIg
Pj4gb3B0aW9uczsKICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0yMzQsNyArMjM0LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFJlc3RyaWN0
SFRUUFJlc3BvbnNlQWNjZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkUmVzdHJp
Y3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAgICAgZGVjb2RlciA+PiBzaG91bGRSZXN0cmljdEhUVFBS
ZXNwb25zZUFjY2VzczsKICAgICBpZiAoIXNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjQzLDcgKzI0Myw3IEBAIE9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmxp
Z2h0UG9saWN5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PGJvb2w+IHNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5OwogICAg
IGRlY29kZXIgPj4gc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBp
ZiAoIXNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3kpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0yNTIsNDQgKzI1Miw0NCBAQCBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZyYW1lQW5jZXN0b3JPcmlnaW5z
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHBh
Z2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYWdlSGFz
UmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENs
aWVudDsKICAgICBpZiAoIXBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAq
cGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4g
cGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhcmVudEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRG
cmFtZUlEKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuY3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKICAgICAKLSAgICBPcHRpb25hbDxVUkw+IGRvY3VtZW50VVJMOworICAgIHN0
ZDo6b3B0aW9uYWw8VVJMPiBkb2N1bWVudFVSTDsKICAgICBkZWNvZGVyID4+IGRvY3VtZW50VVJM
OwogICAgIGlmICghZG9jdW1lbnRVUkwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3VtZW50VVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdvcmtl
cnNNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29y
a2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgaWYgKCFz
ZXJ2aWNlV29ya2Vyc01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2aWNlV29ya2Vyc01vZGU7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSAqc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI7CiAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8SFRUUEhlYWRlcnNUb0tl
ZXBGcm9tQ2xlYW5pbmc+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBzdGQ6Om9wdGlvbmFsPE9w
dGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4+IGh0dHBIZWFkZXJzVG9LZWVw
OwogICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNUb0tlZXA7CiAgICAgaWYgKCFodHRwSGVhZGVy
c1RvS2VlcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMwMCwyMCArMzAwLDIw
IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRp
b25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAot
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OwogICAgIGRlY29kZXIgPj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAo
IWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSAqaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4+IHBjbURhdGFDYXJyaWVkOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+PiBwY21EYXRhQ2FycmllZDsKICAgICBkZWNvZGVyID4+
IHBjbURhdGFDYXJyaWVkOwogICAgIGlmICghcGNtRGF0YUNhcnJpZWQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggMjA0MTJlMjU2ODQ4
MDgyZDNmZTM0Njg0YjQ2MThlOTYyZWRkZjY5Yi4uZjBlNDIwZjUxMDNlYmQ1MWFmZDdjZTg5Y2Ji
N2IzNWY5NjI1YTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtNDYsNyArNDYsNyBA
QCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyA6IHB1YmxpYyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgewog
cHVibGljOgogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRp
YyBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVj
b2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIGlkZW50aWZpZXIgeyAwIH07CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5
IGZvciB0aGUgc2VuZGVyLgpAQCAtNTQsMjkgKzU0LDI5IEBAIHB1YmxpYzoKICAgICBTZWNvbmRz
IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4gc291cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4g
Y3NwUmVzcG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhlYWRlcnM7CiAgICAgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzOwogICAgIGJvb2wgc2hv
dWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlBy
ZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3kgeyBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3k6
OkNvbnNpZGVyIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9s
aWN5IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Pj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAgYm9vbCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xp
ZW50IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBh
cmVudEZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IHBhcmVudEZyYW1lSUQ7CiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQgeyB0cnVlIH07CiAgICAgVVJMIGRvY3VtZW50VVJMOwogICAgIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdv
cmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpIVFRQSGVhZGVyc1Rv
S2VlcEZyb21DbGVhbmluZz4gaHR0cEhlYWRlcnNUb0tlZXA7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKLSAgICBPcHRp
b25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogICAgIAot
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NiZTMxYzRmMjA1MzA3YjkzNjMz
OTlkMDE5N2E3ZmUwMDMwZDE3Ni4uMDg0YmRlMWIzZmMxYmU2NWM4ZmQ3NDBkYjBiNDIyNTBkY2E2
ODNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gbmV0d29ya1Nl
c3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgp
KTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCkgewot
ICAgICAgICBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keTsKICAgICAg
ICAgaWYgKGF1dG8qIGZvcm1EYXRhID0gcmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gbWF4U2VyaWFsaXplZFJlcXVlc3RTaXplID0gMTAyNCAq
IDEwMjQ7CiAgICAgICAgICAgICBpZiAoZm9ybURhdGEtPmxlbmd0aEluQnl0ZXMoKSA8PSBtYXhT
ZXJpYWxpemVkUmVxdWVzdFNpemUpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGMKICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJl
c291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LCByZXNvdXJjZUxvYWRJbmZvKCksIGNoYWxsZW5nZSksIDApOwogfQogCi1PcHRpb25hbDxTZWNv
bmRzPiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNh
cFZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIGV4aXN0aW5nQ2FjaGVFbnRyeU1h
dGNoZXNOZXdSZXNwb25zZSA9IGZhbHNlOwpAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAgICAgKyttX3JlZGlyZWN0Q291bnQ7CiAgICAgbV9yZWRpcmVjdFJlc3Bv
bnNlID0gcmVkaXJlY3RSZXNwb25zZTsKIAotICAgIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKICAgICAgICAg
ICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3Vs
dC52YWx1ZSgpOwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAg
ICAgY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92
ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBPcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewogICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRJ
c0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKIApAQCAtOTE4LDcgKzkxOCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsK
IH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2FuaXRpemVSZXNwb25zZShjb25zdCBOZXR3b3JrUHJv
Y2VzcyYgcHJvY2VzcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyLCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIGJvb2wg
c2hvdWxkU2FuaXRpemVSZXNwb25zZShjb25zdCBOZXR3b3JrUHJvY2VzcyYgcHJvY2Vzcywgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIsIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFwYWdlSWRlbnRpZmll
ciB8fCBvcHRpb25zLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
cHR5U3RyaW5nIHx8IG9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjk0LDE3ICsxMjk0LDE3IEBAIHN0YXRpYyBTdHJp
bmcgZXNjYXBlRm9ySlNPTihTdHJpbmcgcykKICAgICByZXR1cm4gcy5yZXBsYWNlKCdcXCcsICJc
XFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZXNjYXBlSURG
b3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCitzdGF0aWMgU3RyaW5nIGVz
Y2FwZUlERm9ySlNPTihjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmco
Ik5vbmUiX3MpOwogfQogCi1zdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5n
KCJOb25lIl9zKTsKIH0KIAotc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmco
Ik5vbmUiX3MpOwogfQpAQCAtMTMxOSw3ICsxMzE5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBsb2dDb29raWVJbmZvcm1h
dGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxS
ZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3Jp
Z2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0
KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
dm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6
Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBA
IC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRp
b24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FM
X0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50
ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRl
cm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBA
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmYTBhYjg3YTA3NTZk
ZGVmMThmYTgwNGI4YTgxNjgzMjM2ZTBjMzM5Li5lYzQ0ZTFiNTUyMjNmNzJmZjQ2NDI2NWFkNDQw
ODc5MzAyOTVhNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MgPSBmYWxzZTsgfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIGNvbnRpbnVlV2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE+JiYpOwogICAgIHZvaWQgZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9u
VHlwZSk7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0
ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIApAQCAtMjQ1LDcgKzI0NSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAotICAg
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tl
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0Fj
dGl2aXR5VHJhY2tlcjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcAppbmRleCAxNDM5NjI0Yjc5MjhkMmJlMjFhZTcwM2E4MGFhMzkyMGY1OTBiMmQwLi45ZDI1
NjdhYTJmNTA4Mjg4MjY2MGJkNDBkOTYzNWE5ZTQ5Njk5MGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBA
IHZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oU3RyaW5n
JiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTZXNzaW9uOjpmaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU2Vzc2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KQogewogI2lmIEhBVkUoQ0ZORVRXT1JL
X0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKICAgICBpZiAoIWRlY2x0eXBlKG1fZmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMpOjppc1ZhbGlkS2V5KGZpcnN0UGFydHlIb3N0KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxNzU0
MGQ0NTU0ZmU1YzkzYTMxMDIwYTZmZWNhNzg4ZGQ3NWEwMGE0Li43YWYzZjM2ZjFlNjFjNGMyYjIz
NThlN2Q2ZjhmN2UzN2I5ZTczMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMDcsOSArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAg
dm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFN0cmluZyYmIGZpcnN0UGFydHlIb3N0
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluKTsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBmaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eUhvc3QpOwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEZNb3ZlKGRvbWFpbik7IH07Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB0aGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nOyB9CiAgICAgdm9pZCByZXNldENOQU1FRG9tYWluRGF0YSgpOwog
ICAgIHZvaWQgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0K
ICAgICB2b2lkIHJlbW92ZVByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIqIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRp
b25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Np
b24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnM7Ci0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdoaWxl
UmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZmOGFjMzk2ODI4ZjE4ZmY5MDE4MmQx
YmNmZDUyMjA3YzQyYTMzZDMuLjgyNGMwNjVmYTBmODFhNzYzMWZhZDUyNTRmODc2YjZhMGU2ZjRj
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04OSwxOSArODksMTkg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzOwogfQogCi1PcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKICAgICBkZWNvZGVy
ID4+IHNlc3Npb25JRDsKICAgICBpZiAoIXNlc3Npb25JRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAgIGlmICghYm91
bmRJbnRlcmZhY2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPEFsbG93c0NlbGx1bGFyQWNjZXNzPiBhbGxvd3NDZWxsdWxhckFjY2Vz
czsKKyAgICBzdGQ6Om9wdGlvbmFsPEFsbG93c0NlbGx1bGFyQWNjZXNzPiBhbGxvd3NDZWxsdWxh
ckFjY2VzczsKICAgICBkZWNvZGVyID4+IGFsbG93c0NlbGx1bGFyQWNjZXNzOwogICAgIGlmICgh
YWxsb3dzQ2VsbHVsYXJBY2Nlc3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
MTEsMTg0ICsxMTEsMTg0IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwcm94eUNvbmZpZ3VyYXRpb24pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBz
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAgICAgaWYgKCFhdHRy
aWJ1dGVkQnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxib29sPiBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uOwogICAgIGRlY29k
ZXIgPj4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247CiAgICAgaWYgKCFzaG91bGRMb2dDb29r
aWVJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFVSTD4gaHR0cFByb3h5OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBodHRwUHJveHk7CiAg
ICAgZGVjb2RlciA+PiBodHRwUHJveHk7CiAgICAgaWYgKCFodHRwUHJveHkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+IGh0dHBzUHJveHk7CisgICAg
c3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzUHJveHk7CiAgICAgZGVjb2RlciA+PiBodHRwc1Byb3h5
OwogICAgIGlmICghaHR0cHNQcm94eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBPcHRp
b25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4g
YWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNl
RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBodHRwM0VuYWJsZWQ7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBodHRwM0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBo
dHRwM0VuYWJsZWQ7CiAgICAgaWYgKCFodHRwM0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5Owog
ICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFoc3RzU3RvcmFn
ZURpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNp
ZiBVU0UoU09VUCkKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQ
YXRoOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGlm
ICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8U291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZT4gY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U291cENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZT4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIGRl
Y29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIGlmICghY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAg
ICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGlm
ICghcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZVRMU0Vycm9yczsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZVRMU0Vycm9yczsKICAgICBkZWNvZGVyID4+IGlnbm9y
ZVRMU0Vycm9yczsKICAgICBpZiAoIWlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0
aW5ncz4gcHJveHlTZXR0aW5nczsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3
b3JrUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0
dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0
b3JhZ2VGaWxlOwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5
U2V0dGluZ3M+IHByb3h5U2V0dGluZ3M7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDdXJs
UHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGlu
Z3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGRl
Y29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGlmICghbmV0d29ya0NhY2hlRGly
ZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
OwogICAgIGRlY29kZXIgPj4gZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAg
ICAgaWYgKCFkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGFsbExvYWRzQmxvY2tlZEJ5
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JU
ZXN0aW5nOwogICAgIGRlY29kZXIgPj4gYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKICAgICBpZiAoIWFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiAg
ICAgZGVjb2RlciA+PiBkYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGlmICghZGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxib29sPiBmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOwog
ICAgIGRlY29kZXIgPj4gZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgaWYg
KCFmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsK
ICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKICAgICBpZiAo
IXNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAg
ICBkZWNvZGVyID4+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAgICBpZiAoIXN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0ZXN0U3BlZWRNdWx0aXBsaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRlc3RTcGVlZE11bHRpcGxpZXI7CiAgICAgZGVjb2RlciA+PiB0ZXN0
U3BlZWRNdWx0aXBsaWVyOwogICAgIGlmICghdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBzdXBwcmVzc2Vz
Q29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAg
ZGVjb2RlciA+PiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7
CiAgICAgaWYgKCFzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxv
d3NTZXJ2ZXJQcmVjb25uZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxsb3dzU2VydmVy
UHJlY29ubmVjdDsKICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAg
aWYgKCFhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5l
Y3Rpb247CiAgICAgZGVjb2RlciA+PiByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9u
OwogICAgIGlmICghcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBwcmV2ZW50c1N5
c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJl
dmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHByZXZl
bnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247CiAgICAgaWYgKCFwcmV2ZW50c1N5c3Rl
bUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNr
aW5nUGVybWlzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENy
b3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBkZWNvZGVyID4+IGFwcEhhc1JlcXVl
c3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBpZiAoIWFwcEhhc1JlcXVl
c3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHVzZU5ldHdvcmtMb2FkZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiB1c2VOZXR3b3JrTG9hZGVyOwogICAgIGRlY29kZXIgPj4gdXNlTmV0
d29ya0xvYWRlcjsKICAgICBpZiAoIXVzZU5ldHdvcmtMb2FkZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IGE2OGJiNTMwNzdhMjkwYTBiMjAwNjFkMGZiODc0M2JkZmVjMGFkMTIuLjY2YjFlNDg4MDJhYjE1
NmUyOWEzNDgxY2NmZDE2OWVlODQ0MGUyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKQEAgLTUxLDcgKzUxLDcgQEAgZW51bSBjbGFzcyBBbGxvd3NDZWxsdWxhckFjY2VzcyA6IGJv
b2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKICAgICAKICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQgeyBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIH07CiAgICAg
U3RyaW5nIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCBkYTQwNWQ5YTU5YWVj
ODExMTQwZjlkNTA5MTIxNmNlMzdjOTU3MmMxLi4xZTdiMmNlMTkyZTNhODMwYTk3Y2Y5OTVmMWE0
ODFhZWJiYjIzOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpPcGVuIH07CiAgICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRp
bWVyOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8
dW5zaWduZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xvc2VJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+PiBtX2Nsb3NlSW5mbzsKICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA0
OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRkLi4xNWE5OWVjZTM0YWMxNjAz
NGQ2YmJjOGU0N2MyODllMzhiNmM5MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIHVpbnQ2NF90IGlkZW4KICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpzZW5kSGFuZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
T3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5
LCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFu
ZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxkUHJveHksIHVpbnQ2
NF90IGlkZW50aWZpZXIpCiB7CiAgICAgbV9pbXBsLT5wbGF0Zm9ybVNlbmRIYW5kc2hha2UoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBoZWFkZXJGaWVsZFByb3h5LCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyXSAoYm9vbCBzdWNjZXNzLCBib29sIGRp
ZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0
U3RyZWFtOjpEaWRTZW5kSGFuZHNoYWtlKGlkZW50aWZpZXIsIHN1Y2Nlc3MsIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5
ZmIyMDZmYS4uNjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2UwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB2b2lkIHNlbmREYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHNlbmRIYW5kc2hha2Uo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgdWludDY0X3QpOworICAgIHZvaWQgc2VuZEhhbmRz
aGFrZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIHVpbnQ2NF90KTsKICAgICB2b2lk
IGNsb3NlKCk7CiAgICAgCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0ubWVzc2FnZXMuaW4KaW5kZXggMDA5NTYyYmE1MDI4NWU4YzhjMzNmZDZiODEyZTkxYWM1MDI3
NjJlNC4uMDJlODUxOGIwMWIwMzBmNmViYzdkNjZmMDFlYTI1MDYxMGNhYWU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5tZXNzYWdlcy5pbgpAQCAtMjIsNiArMjIsNiBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3Jr
U29ja2V0U3RyZWFtIHsKICAgICBTZW5kRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgdWlu
dDY0X3QgaWRlbnRpZmllcikKLSAgICBTZW5kSGFuZHNoYWtlKElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBPcHRpb25hbDxXZWJDb3JlOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gaGVh
ZGVyRmllbGRQcm94eSwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBTZW5kSGFuZHNoYWtlKElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5PiBoZWFkZXJGaWVsZFByb3h5LCB1aW50NjRfdCBpZGVudGlmaWVy
KQogICAgIENsb3NlKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA4N2Yx
Mzc0Y2FhNmY1NDgwYjBmMWVjYTk5ZWQyMjg3NTgwMTc3NjRjLi5jYzg3NWExNzhmYmE3Y2FhYzkx
ZTYzNmUyNmE4YzJmODQwNTJhZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBA
IC0zODgsOCArMzg4LDggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZp
cmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAgICAgICAgIGJvb2wgaGFzU2VudEF0dHJp
YnV0aW9uID0gZmFsc2U7CiAKICAgICAgICAgZm9yIChhdXRvJiBhdHRyaWJ1dGlvbiA6IGF0dHJp
YnV0aW9ucykgewotICAgICAgICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRv
U2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuZWFybGllc3RUaW1lVG9TZW5kKCk7Ci0g
ICAgICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludD4gYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCA9IGF0dHJp
YnV0aW9uLnRpbWVzVG9TZW5kKCkuYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCgpOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmli
dXRpb24udGltZXNUb1NlbmQoKS5lYXJsaWVzdFRpbWVUb1NlbmQoKTsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgPSBhdHRyaWJ1dGlvbi50
aW1lc1RvU2VuZCgpLmF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKTsKIAogICAgICAgICAgICAg
aWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQgfHwgIWF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oCmluZGV4IGRhNDE1N2JmODZhYTRkNmUwMmFmOTZmZTkzMTQxZTY4ZjkxYWVjOTguLjM5
MWRmNjNhNjIwNTk1NDlmMGM5ODU1NDNjMGNmNGQ3YjNlNGY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaApAQCAtODIsOCArODIsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lcjsKICAgICBib29sIG1faXNS
dW5uaW5nVGVzdCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxVUkw+IG1fdG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmc7CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAgICBS
ZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFVSTCBhdHRy
aWJ1dGlvblJlcG9ydEF0dHJpYnV0ZU9uVVJMOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxBdHRy
aWJ1dGlvblJlcG9ydFRlc3RDb25maWc+IG1fYXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0
aW9uUmVwb3J0VGVzdENvbmZpZzsKIAogICAgIHN0cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9u
VmFsdWVzIHsKICAgICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbjsKQEAgLTEwMyw3ICsxMDMs
NyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcga2V5SUQ7CiAgICAgfTsKIAotICAgIE9wdGlv
bmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1
ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzsKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZjNjYzY3MDMyMmMwZWVkZDA3ZTNlODcxY2ZiYjFiZjdiY2ZjOWFhNi4uMmNkYTk5NWRlY2Zm
ZmYyZmMxNmU3YjczZWZjOTg3MjM4ZjA1OTAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZl
dGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgY2FjaGVQb2xpY3kp
KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0
YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYgc2Vy
dmljZVdvcmtlckRhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpVcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShpZGVudGlmaWVyLCBzdGF0ZSwgc2VydmljZVdv
cmtlckRhdGEpKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2so
TgogICAgIGlmICghc2VydmVyKCkuY2FuSGFuZGxlU2NoZW1lKGxvYWRlci5vcmlnaW5hbFJlcXVl
c3QoKS51cmwoKS5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBP
cHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI7CiAgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5tb2RlID09IEZldGNoT3B0
aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBsb2FkZXIu
cGFyYW1ldGVycygpLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiA/IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVVSTChyZXF1ZXN0LnVybCgpKSA6IGxvYWRlci5wYXJhbWV0ZXJzKCkudG9wT3JpZ2luLT5k
YXRhKCk7CiAgICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGRvUmVnaXN0cmF0aW9uTWF0Y2hp
bmcodG9wT3JpZ2luLCByZXF1ZXN0LnVybCgpKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZAogICAgIGlmICghZGVzdGluYXRpb25Xb3JrZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGE+IHNvdXJjZURh
dGE7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhPiBzb3VyY2VE
YXRhOwogICAgIFdURjo6c3dpdGNoT24oc291cmNlSWRlbnRpZmllciwgWyZdKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKICAgICAgICAgaWYgKGF1dG8qIHNvdXJjZVdvcmtl
ciA9IHNlcnZlcigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikpCiAgICAgICAgICAgICBzb3VyY2VE
YXRhID0gU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSB7IHNvdXJjZVdvcmtlci0+ZGF0YSgpIH07
CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lz
dHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZEdldFJlZ2lzdHJhdGlvbnMgeyByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25zIH0pOwogfQogCi12
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBk
YXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYm
IHVzZXJBZ2VudCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBTdHJpbmcmJiB1c2VyQWdlbnQpCiB7CiAgICAgYXV0byBjb250ZXh0T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRhdGEudXJsKTsKICAgICBib29sIGlzTmV3
T3JpZ2luID0gV1RGOjphbGxPZihtX2NsaWVudE9yaWdpbnMudmFsdWVzKCksIFsmY29udGV4dE9y
aWdpbl0oYXV0byYgb3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMjA5NWFmZDA3ZDgyY2Q3YmM0OTBmNjFmNGQyNDlkYThkYTRhMzAxMy4uMjY0ZTViMzA0
MzhlZDE2ZDBkMWQyMGIyMzdlMzkzNTY2MTk2ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzb2x2
ZVJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNv
cmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5y
ZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNo
ZSkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJEYXRhPiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNs
aWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlV29ya2Vy
U3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1lKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkgZmluYWw7CkBAIC0xMDMsNyArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lz
dHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CiAgICAgdm9pZCBnZXRS
ZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
T3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0
cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAgIHZv
aWQgdGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHdoZW5TZXJ2aWNl
V29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDRjMTg2Mzc3ZjhlNWZlMmYw
M2IxMzQwMmE5YjM5MDYwMWUzM2I1OTAuLjFjOTQ2YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMy
NTlhYWU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3Qgc2Vy
dmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBVUkwgY2xpZW50VVJMKQogICAgIFdoZW5SZWdp
c3RyYXRpb25SZWFkeSh1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVS
TCBjbGllbnRVUkwpCiAgICAgR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBzZXJ2aWNlUmVnaXN0
cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNvbnRyb2xsaW5nU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyB1c2VyQWdlbnQpCisgICAg
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgdG9wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEg
ZGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4gY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
U3RyaW5nIHVzZXJBZ2VudCkKICAgICBVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChzdHJ1
Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKIAog
ICAgIFRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgd29ya2VySWRlbnRpZmllcikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggODRkN2I0NjlhNzNlNzE4
MDc5MmZlYjNmN2VkZDZmNmUxZGNlMDc1ZC4uM2ZhMGU5OTcwZjI1NTVjYzgwNGI5Mjc0YjBmN2Vk
ZDE5NTcyNTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAot
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQordm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJD
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpbmRD
bGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFz
U2VjdXJpdHlFcnJvciB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBkODk4NmFhNjc4MGQ0NmExNjRmZGFlNzVhZjZlYWFjYmQy
YzEyZGNmLi5iMDExNGQyZjhkNzYxMTdiZDk2MDg5NjU5NjA5M2Q0NTg3YWEwMWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC05MSw3
ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwotICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAg
ICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKICAg
ICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCBkOGQ5NDM0MDg0NWRkODViMzZkYzg5MjlhYjFlNjI3MTg4OTMyODlhLi41NTJjYWU1
ZTIyNDQyNDJkZjUwMzJhMDI4NmYwZmJhZTk5MjQ2NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTI1LDE2ICsyNSwxNiBAQAogbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIE5vdFJlZkNvdW50ZWQgewogICAgICMgV2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMg
Y2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGJ5IFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbgogCi0gICAgU2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFN0cmluZyBtZXNzYWdlKQotICAgIFNjcmlwdENvbnRleHRTdGFydGVkKE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGRvZXNIYW5kbGVGZXRjaCkKLSAgICBEaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpCisgICAgU2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpCisgICAgU2NyaXB0Q29udGV4dFN0YXJ0ZWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRh
dGFJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCisgICAgRGlkRmluaXNoSW5zdGFs
bChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4g
am9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiAgICAgRGlkRmluaXNoQWN0
aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IFNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKICAgICBTa2lwV2Fp
dGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBB
c3luYwogICAgIFdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zIG9wdGlvbnMpOwotICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4gcmVzdWx0KSBBc3luYworICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVS
TCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3Jp
cHQpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFy
dEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAppbmRleCBiYjEyZjM0MjgxNmUyMjcwMzAyZjFkNTE0
YjMxZGU4NGE5ZDA5M2E2Li5hYTA1YzU5OWNjNTQzZWJkZWY1ZjY5OGZlMGExMzE0Y2JlOGU1NzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKICAgICBj
b25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlcyB7IDAgfTsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2RhdGFiYXNlU2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX2RhdGFiYXNlU2l6ZTsKIAogICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhclN0YXRlbWVudDsK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0U3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
CmluZGV4IDNiNmI0MWQxNjUyNzQ0MWNkODM0ZWEzNWRhMTg0YzI4ZWJhMzQ4NjEuLjg2YTVlZGU0
YjM2ODhkYjI2MzYzNDFmMmRkZGNhZGYyZTFiODczNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgT3JpZ2luRGV0YWlscyB7CiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOwot
ICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lOwotICAgICAgICBPcHRpb25h
bDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gY3JlYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2Rp
ZmljYXRpb25UaW1lOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPE9yaWdpbkRldGFpbHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE9yaWdpbkRldGFpbHM+
IGRlY29kZShEZWNvZGVyJik7CiAKICAgICAgICAgT3JpZ2luRGV0YWlscyBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiB7IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNyZWF0
aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9CiAgICAgfTsKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlsczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmln
aW5JZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IDYxMzM1YTc5M2UzNTY4YTNiNWRmZThj
YjU5MDJkNjgxMTAwOTQ3YWMuLjhjNTNmNjY1N2JhMzllMmZkNDIzYTFlNWQ2OTZhZWYzMDVmNzhi
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6
OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlv
biwgU3RvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHN0b3Jh
Z2VBcmVhSW1wbElEKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2lu
KCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBvcHRpb25hbFN0b3JhZ2VB
cmVhSW1wbElEID0gKml0ID09IHNvdXJjZUNvbm5lY3Rpb24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
c3RvcmFnZUFyZWFJbXBsSUQpIDogc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSAq
aXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdG9yYWdlQXJlYUlt
cGxJRCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRp
Zmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xh
dGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcg
PSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSBX
VEZNb3ZlKG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQpXSB7CiAgICAgICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCA3MGE2NWE0YmE2OGY3NzI1YjkwZjUyZjRkN2E5
YzU1ZmQ5NmJjZmVkLi40MjQzZjMyNTczYmRhZDE0NTIxMDdmNTVjODIzMjg5NjFjZDViMGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAotdXNpbmcgQ29ubmVjdFRvU3RvcmFnZUFy
ZWFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8U3RvcmFn
ZUFyZWFJZGVudGlmaWVyPiYpPjsKK3VzaW5nIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyPiYpPjsKIHVzaW5nIEdldFZhbHVlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPjsKIHVzaW5nIEdldE9yaWdp
bnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiYpPjsKIHVzaW5nIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
T3JpZ2luRGV0YWlscz4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2Vz
LmluCmluZGV4IDRlYjljYmM5YmJiZmYyYTAwZDEyN2M2YTJmYWZkNWRlM2U0YWY3OGMuLjZkMDZj
MWQyZGQ3M2RlNTcxZWNhOTZmMDkwYzUwODZhODZjN2NkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXJTZXQgewotICAgIENvbm5lY3RUb0xvY2FsU3Rv
cmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0gICAgQ29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5h
bWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2Vj
dXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
PiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb25uZWN0
VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChPcHRpb25hbDxX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFn
ZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXI+IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5l
Y3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0
YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEp
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdl
QXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9u
U3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFn
ZUFyZWFJZGVudGlmaWVyIHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgogICAgIEdldFZh
bHVlcyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBzdG9yYWdlQXJlYUlEKSAtPiAoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
ICAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFj
ZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFj
ZUlEKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKaW5kZXggNTlhZTQzM2RhNzA3NDFh
NzlmOGMzODE5ZGYzOWFkMTQ0ZGU1MDMzMC4uYWU1ODNhYzllODJjNDkwYmU0MzgzNzI1OTA1NmQ2
Y2ZiYTcyN2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBBc3lu
Y1JldmFsaWRhdGlvbjo6c3RhbGVXaGlsZVJldmFsaWRhdGVFbmRpbmcoKQogICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKFJlc3VsdDo6VGltZW91dCk7CiB9CiAKLUFzeW5jUmV2YWxpZGF0aW9u
OjpBc3luY1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnksIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYgaGFuZGxlcikKK0FzeW5jUmV2YWxpZGF0aW9uOjpBc3lu
Y1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5kbGVyKQogICAgIDogbV90aW1lcigqdGhpcywgJkFz
eW5jUmV2YWxpZGF0aW9uOjpzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuZGluZykKICAgICAsIG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaAppbmRleCBlODk3
NzEwYjY1ZTQ1ZThjODZiNTlhZDJkYjk3OWViY2ZiODAwNmY1Li5hY2Q2YjdhNmVlZTU3MDBmNTI5
YTg5MTg5ZmYxOWY3N2JmODNkNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0FzeW5jUmV2YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgVGltZW91dCwKICAgICAgICAgU3VjY2VzcywKICAgICB9OwotICAgIEFz
eW5jUmV2YWxpZGF0aW9uKENhY2hlJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiYmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzdWx0KT4mJik7CisgICAgQXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUmLCBjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOwog
ICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBjb25zdCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQoKSBj
b25zdCB7IHJldHVybiAqbV9sb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggY2Q2ODBmMDNk
ZjI2MTZlZTljYWEzZmVjYTVjZGE3OTQ0ODk5ZjQ0NS4uNTUwMTkwOTYzNzY0M2Q2MDdjM2E2MTMy
YmM4ZGNhMmViZDEwYTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
CiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGluaXRpYWxp
emUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDAyLDcgKzQwMiw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENhY2hlc0NhbGxiCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGNhY2hlc10oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIx
LDcgKzQyMSw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKCFjYWNoZS0+aXNPcGVuZWQoKSkgewotICAgICAgICBjYWNoZS0+b3BlbihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FjaGUtPm9wZW4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikg
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBFbmdp
bmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjwKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6
cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgRW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Zm9sZGVyUGF0CiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZm9yIChhdXRv
JiBmb2xkZXJQYXRoIDogZm9sZGVyUGF0aHMpIHsKLSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9y
aWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRl
clBhdGhdIChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBt
dXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9s
ZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgaWYgKGZvbGRlck9yaWdpbi0+dG9wT3JpZ2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmln
aW4tPmNsaWVudE9yaWdpbiAhPSBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA0NDA5ZTdiNDk2
YWI4Y2Y2NDZjOWEwZmZhZWRmNTczNGMwZmYxZTg4Li42ZDQ0ODgxMjc5ZDFiOTYyN2E5YTllN2E5
OWIwNWYzZGY2Y2FkMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKICAg
ICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAgICAgdm9pZCB3cml0
ZVNpemVGaWxlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPHVpbnQ2NF90PiByZWFkU2l6ZUZpbGUo
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlYWRT
aXplRmlsZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RQYXRoOyB9CiAgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0
JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7IH0KQEAgLTE1MCw3ICsxNTAs
NyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsK
ICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7
Ci0gICAgT3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3NhbHQ7CisgICAgc3RkOjpvcHRp
b25hbDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKICAgICBIYXNoTWFwPENhY2hlSWRlbnRp
ZmllciwgTG9ja0NvdW50PiBtX2NhY2hlTG9ja3M7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1faW5pdGlhbGl6YXRpb25DYWxsYmFja3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjaz4gbV9wZW5kaW5nV3JpdGVDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCmluZGV4IDFmZWY1ZTYxNmQ3NWM3MDQ3NWNkM2Q3M2MzOTNlY2E5NzczMDhlMzYuLjY0
MDE2YjBjZTIwOTA4OWE5ODFiY2UyMjQ5Nzc4ZjgyYWQ2NDhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZTo6ZmluaXNo
T3BlbmluZyhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaywgT3B0aW9uYWw8RXJyb3I+JiYg
ZXJyb3IpCit2b2lkIENhY2hlOjpmaW5pc2hPcGVuaW5nKENvbXBsZXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrLCBzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKQogewogICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJlY29yZEluZm9ybWF0aW9uPj4gcmVjb3JkczsKICAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogbV9yZWNvcmRzLnZhbHVlcygpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXJyb3I+IG1fZXJyb3I7Cisg
ICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJvcjsKICAgICBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrIG1fY2FsbGJhY2s7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3JlY29yZElkZW50aWZp
ZXJzOwogfTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1
aXJlZC51bnNhZmVHZXQoKSwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVy
ID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZC51bnNh
ZmVHZXQoKSwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVu
dGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYgZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VV
bmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ5OSw3
ICs0OTksNyBAQCB2b2lkIENhY2hlOjpyZW1vdmVGcm9tUmVjb3JkTGlzdChjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiByZWNvcmRJZGVudGlmaWVycykKIAogdm9pZCBDYWNoZTo6d3JpdGVSZWNvcmRU
b0Rpc2soY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBSZWNvcmQm
JiByZWNvcmQsIFJlZjxBc3luY2hyb25vdXNQdXRUYXNrQ291bnRlcj4mJiB0YXNrQ291bnRlciwg
dWludDY0X3QgcHJldmlvdXNSZWNvcmRTaXplKQogewotICAgIG1fY2FjaGVzLndyaXRlUmVjb3Jk
KCp0aGlzLCByZWNvcmRJbmZvcm1hdGlvbiwgV1RGTW92ZShyZWNvcmQpLCBwcmV2aW91c1JlY29y
ZFNpemUsIFt0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShPcHRpb25hbDxFcnJv
cj4mJiBlcnJvcikgeworICAgIG1fY2FjaGVzLndyaXRlUmVjb3JkKCp0aGlzLCByZWNvcmRJbmZv
cm1hdGlvbiwgV1RGTW92ZShyZWNvcmQpLCBwcmV2aW91c1JlY29yZFNpemUsIFt0YXNrQ291bnRl
ciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5zZXRFcnJvcihl
cnJvci52YWx1ZSgpKTsKICAgICB9KTsKQEAgLTU3Nyw5ICs1NzcsOSBAQCBTdG9yYWdlOjpSZWNv
cmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRp
b24sIGNvbnN0CiAgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7IH0sIGhlYWRl
ciwgYm9keSwgeyB9IH07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiBkZWNvZGVET01DYWNoZVJlY29yZChXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD4gZGVjb2RlRE9NQ2FjaGVSZWNvcmQoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXF1ZXN0
SGVhZGVyc0d1YXJkOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVx
dWVzdEhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAg
ICAgaWYgKCFyZXF1ZXN0SGVhZGVyc0d1YXJkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNTkyLDEyICs1OTIsMTIgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICBpZiAo
IUZldGNoT3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVudChkZWNvZGVyLCBvcHRpb25zKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHJlZmVy
cmVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiByZWZlcnJlcjsKICAgICBkZWNvZGVyID4+
IHJlZmVycmVyOwogICAgIGlmICghcmVmZXJyZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVzcG9uc2VIZWFk
ZXJzR3VhcmQ7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXNwb25z
ZUhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAg
IGlmICghcmVzcG9uc2VIZWFkZXJzR3VhcmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICBpZiAoIVJl
c291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVyLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlQm9k
eVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVzcG9uc2VCb2R5U2l6ZTsKICAg
ICBkZWNvZGVyID4+IHJlc3BvbnNlQm9keVNpemU7CiAgICAgaWYgKCFyZXNwb25zZUJvZHlTaXpl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjI4LDIxICs2MjgsMjEgQEAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNh
Y2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICB9fTsKIH0KIAotT3B0aW9uYWw8Q2FjaGU6OkRlY29k
ZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFnZTo6UmVjb3Jk
JiBzdG9yYWdlKQorc3RkOjpvcHRpb25hbDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRl
Y29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiB7CiAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2UuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZS5oZWFkZXIuc2l6ZSgpKTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9u
VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGltZTsKICAgICBkZWNv
ZGVyID4+IGluc2VydGlvblRpbWU7CiAgICAgaWYgKCFpbnNlcnRpb25UaW1lKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAg
aWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkID0gZGVjb2RlRE9NQ2FjaGVS
ZWNvcmQoZGVjb2Rlcik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiByZWNvcmQgPSBkZWNvZGVET01DYWNoZVJlY29yZChkZWNvZGVyKTsKICAgICBp
ZiAoIXJlY29yZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtNjUzLDcgKzY1
Myw3IEBAIE9wdGlvbmFsPENhY2hlOjpEZWNvZGVkUmVjb3JkPiBDYWNoZTo6ZGVjb2RlUmVjb3Jk
SGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYKICAgICB9fTsKIH0KIAotT3B0aW9uYWw8UmVj
b3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKK3N0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZVJlY29yZEhlYWRlcihzdG9yYWdlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDhmNzhkNzcwZGMzMDA2MjMyYTViOTA0MzM5
YzE0MTlmODlmMmExNTIuLmIyMGRjZjdiYzcwY2E2YzNmYjFkYjQ5MTQ1ZmRkZTU2MjU5NzcyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlzcG9zZSgpOwogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwog
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRl
Y29kZShjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShjb25z
dCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOwogICAgIHN0YXRpYyBOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OlJlY29yZCBlbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkJik7CiAKICAgICBzdHJ1Y3QgRGVjb2Rl
ZFJlY29yZCB7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qgc2l6
ZSB7IDAgfTsKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZCByZWNvcmQ7
CiAgICAgfTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3Jk
SGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IE5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7CiAKICAgICBib29sIGhhc1BlbmRpbmdPcGVu
aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gIW1fcGVuZGluZ09wZW5pbmdDYWxsYmFja3Mu
aXNFbXB0eSgpOyB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVjb3Jk
SW5mb3JtYXRpb24gdG9SZWNvcmRJbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkJik7CiAKLSAgICB2b2lkIGZpbmlzaE9wZW5pbmcoV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmLCBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6RXJyb3I+JiYpOworICAgIHZvaWQgZmluaXNoT3BlbmluZyhXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmKTsKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkKGNvbnN0
IFJlY29yZEluZm9ybWF0aW9uJiwgUmVmPFJlYWRSZWNvcmRUYXNrQ291bnRlcj4mJik7CiAKICAg
ICB2b2lkIHJlYWRSZWNvcmRzTGlzdChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDg3NTUxNTNh
YzgzYTk0Yjk1MjJjYjNkZGU4NjI2MzRjMzdkYWY3OTkuLjFhNjgwMDYwZmUzNmJkMmExOGVkMzYy
ZWUyYjllMjJmMWE1NWU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKICAgICBBU1NFUlQobV9wZW5kaW5nV3JpdGlu
Z0NhY2hlc1RvRGlza0NhbGxiYWNrcy5pc0VtcHR5KCkpOwogfQogCi12b2lkIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1
ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1
ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1
ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewpAQCAt
MTA1LDIxICsxMDUsMjEgQEAgdm9pZCBDYWNoZXM6OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50
T3JpZ2luLnByb3RvY29sOwogICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50T3JpZ2luLmhv
c3Q7CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucG9ydDsKLSAgICBtX2Vu
Z2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsg
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2VuZ2lu
ZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsgZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRh
dGEpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3Jp
Z2luKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBk
ZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIgPj4gdG9wT3Jp
Z2luOwogICAgIGlmICghdG9wT3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBjbGllbnRPcmlnaW47
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVudE9y
aWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdp
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lk
IENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgbV9zdG9yYWdlID0gc3RvcmFnZS5yZWxlYXNlTm9uTnVs
bCgpOwogICAgIG1fc3RvcmFnZS0+d3JpdGVXaXRob3V0V2FpdGluZygpOwogCi0gICAgc3RvcmVP
cmlnaW4oW3RoaXNdIChPcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgc3Rv
cmVPcmlnaW4oW3RoaXNdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNo
ZVN0b3JhZ2UsICJDYWNoZXM6OmluaXRpYWxpemUgZmFpbGVkIHN0b3Jpbmcgb3JpZ2luIHdpdGgg
ZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KCplcnJvcikpOwogCkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBDYWNoZXM6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGZpbmQo
bmFtZSkpIHsKLSAgICAgICAgY2FjaGUtPm9wZW4oW2NhY2hlSWRlbnRpZmllciA9IGNhY2hlLT5p
ZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FjaGUtPm9wZW4oW2NhY2hlSWRlbnRpZmll
ciA9IGNhY2hlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0
ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFs
dWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IENhY2hlczo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gbV9lbmdpbmUtPm5l
eHRDYWNoZUlkZW50aWZpZXIoKTsKICAgICBtX2NhY2hlcy5hcHBlbmQoQ2FjaGUgeyAqdGhpcywg
Y2FjaGVJZGVudGlmaWVyLCBDYWNoZTo6U3RhdGU6Ok9wZW4sIFN0cmluZyB7IG5hbWUgfSwgY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpIH0pOwogCi0gICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oT3B0aW9uYWw8RXJy
b3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZUlkZW50aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+
JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhDYWNoZUlkZW50aWZpZXJPcGVy
YXRpb25SZXN1bHQgeyBjYWNoZUlkZW50aWZpZXIsICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBA
IC0zNTksNyArMzU5LDcgQEAgdm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIG1fcmVtb3ZlZENhY2hl
cy5hcHBlbmQoV1RGTW92ZShtX2NhY2hlc1twb3NpdGlvbl0pKTsKICAgICBtX2NhY2hlcy5yZW1v
dmUocG9zaXRpb24pOwogCi0gICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGlkZW50aWZpZXJdKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxl
IHsKKyAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
aWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrKENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCB7IGlkZW50aWZpZXIs
ICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIGlubGlu
ZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYgY2FjaGVzKQogc3Rh
dGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4sIEVy
cm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhKQogewogICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBjb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBj
b3VudDsKICAgICBkZWNvZGVyID4+IGNvdW50OwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERpc2spOwpAQCAtNDIwLDExICs0MjAsMTEg
QEAgc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW0KICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yOjpSZWFkRGlzayk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
KmNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsK
ICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpSZWFkRGlzayk7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdW5pcXVlTmFtZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVuaXF1ZU5hbWU7CiAgICAgICAgIGRlY29kZXIg
Pj4gdW5pcXVlTmFtZTsKICAgICAgICAgaWYgKCF1bmlxdWVOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CkBAIC00OTMsNyArNDkzLDcgQEAg
dm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQogICAgIH0KIAogICAgIG1faXNXcml0aW5nQ2FjaGVzVG9EaXNrID0gdHJ1ZTsKLSAgICBt
X2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2Rl
Q2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKKyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZSht
X3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6
b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBtX2lzV3JpdGluZ0Nh
Y2hlc1RvRGlzayA9IGZhbHNlOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrIGZh
aWxlZCB3cml0aW5nIGNhY2hlcyB0byBkaXNrIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxp
bnQ+KCplcnJvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKaW5kZXggMDYwMWVlNmIyZDc0
ZWMxYmY4NzFiMTRlYmE5ZDFhMjU2ZTQ2OGRlNS4uN2ZmMjFjZTA0MTc5NTg3ZmM0ZmIxNTE5ZWM4
ZWEyYWUxZTg4MWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmLCBTdHJpbmcmJiByb290UGF0aCk7CiAgICAgfkNhY2hlcygpOwog
Ci0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYpOworICAgIHN0YXRpYyB2b2lkIHJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtR
dWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4mJik+JiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYpOwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVDYWNo
ZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsK
IAogICAgIHZvaWQgc3RvcmVPcmlnaW4oV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiByZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gcmVhZE9yaWdpbihjb25zdCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmKTsKIAogICAgIENhY2hlKiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAg
ICAgdm9pZCBjbGVhclBlbmRpbmdXcml0aW5nQ2FjaGVzVG9EaXNrQ2FsbGJhY2tzKCk7CkBAIC0x
MTAsMTAgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2Fj
aGVzOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U+IG1fc3RvcmFnZTsKICAgICBI
YXNoTWFwPE5ldHdvcmtDYWNoZTo6S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4+IG1fdm9sYXRpbGVTdG9yYWdlOwotICAgIG11dGFibGUgT3B0aW9u
YWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3ZvbGF0aWxlU2FsdDsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3ZvbGF0aWxlU2FsdDsKICAgICBWZWN0b3I8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjaz4gbV9wZW5kaW5nSW5p
dGlhbGl6YXRpb25DYWxsYmFja3M7CiAgICAgYm9vbCBtX2lzV3JpdGluZ0NhY2hlc1RvRGlzayB7
IGZhbHNlIH07Ci0gICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+KT4+IG1fcGVuZGluZ1dyaXRpbmdDYWNoZXNUb0Rp
c2tDYWxsYmFja3M7CisgICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4pPj4gbV9wZW5kaW5nV3JpdGluZ0Nh
Y2hlc1RvRGlza0NhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggZjk4ZTNiZTE2OWM1MWEx
OGM5MDVlMTA3ZDk3MjE3MWFmMjUwMzhmZC4uNzk2OGI2YzM1OTRjZjkyMTQ5M2Q0M2E2OGYwMDU1
NGFmYjE0ZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVy
ZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAgICAgbV9jYWNoZXNMb2Nrcy5yZW1vdmUo
cmVmZXJlbmNlUmVzdWx0KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFcnJvcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5
UmVwcmVzZW50YXRpb24oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihtX2Nvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApp
bmRleCA1NjA2MGRiZDc2ZjU1YzFkZDE2YWVlMDYxYTNjOTc3ZDg1N2M2YzUxLi5kODRkMDUyYjIz
NTAxNzE3ZDRkZjUwNWQwNWE0ZmM4YjJiN2E5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmZXJlbmNl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4m
Jik+JiYpOwogICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24oIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCA1OTkyMDBhNjIwMGQxZWFiZThhMjYwNTJiN2EzOTMzMzEyOTUyZDA5Li41ZDIx
ZWVlMzA4MTBhMDU0ODdmMDdhM2UwMzgwYTFjZTNhN2YyNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiw2IEBAIG1l
c3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewogICAgIERlbGV0ZU1hdGNo
aW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucykg
LT4gKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgcmVz
dWx0KSBBc3luYwogICAgIFB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKSAtPiAoV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpIEFzeW5jCiAK
LSAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiBl
cnJvcikgQXN5bmMKKyAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6RXJyb3I+IGVycm9yKSBBc3luYwogICAgIEVuZ2luZVJlcHJlc2VudGF0aW9uKCkg
LT4gKFN0cmluZyByZXByZXNlbnRhdGlvbikgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmNzdmZDExMmEy
ZGEwYjJkZDhkNDY3YjNkNWUzODRmZTk0ZjA4ZGMwLi4xYTU2OGYyZDllNzFhNDU4ZGE1MDdlMGQ5
YTNlZDI3NzUxZmM1NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIGJvb2wg
Y2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBy
ZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVz
dGFtcCwgT3B0aW9uYWw8U2Vjb25kcz4gbWF4U3RhbGUpCitzdGF0aWMgVXNlRGVjaXNpb24gcmVz
cG9uc2VOZWVkc1JldmFsaWRhdGlvbihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3Rh
bXAsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNl
LmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1cm4gVXNlRGVjaXNp
b246OlZhbGlkYXRlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBib29sIGlubGluZSBjYW5S
ZXF1ZXN0VXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NUQUxFX1dISUxFX1JFVkFMSURB
VEUpCi12b2lkIENhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYg
a2V5LCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+JiYgZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQordm9pZCBDYWNoZTo6c3RhcnRBc3luY1JldmFsaWRhdGlvbklm
TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmV0
d29ya0NhY2hlOjpLZXkmIGtleSwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiYmIGVudHJ5LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIG1fcGVuZGlu
Z0FzeW5jUmV2YWxpZGF0aW9ucy5lbnN1cmUoa2V5LCBbJl0gewogICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9uQnlQYWdlLmVuc3VyZShmcmFtZUlELCBb
XSB7CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBDYWNoZTo6YnJvd3NpbmdDb250ZXh0UmVtb3Zl
ZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3IKICNlbmRpZgog
fQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC01MDgsNyArNTA4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb24KICAgICByZXR1cm4gY2FjaGVFbnRyeTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgT3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VD
YXApCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgc3RvcmluZyBy
ZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
LCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5k
ZXggNjAxNjAzYzg5ZWJjNzkyZWUzYTc3YTZlNmFhMjVkMzc0MGIxNDg1OS4uNGJlYzBhYjUzOTQ1
MzY4YjJkYmY2Y2UxMTI3YTliZWU1MDFjNTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xNjUsOSArMTY1LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKLSAgICB2b2lkIHJldHJpZXZlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
RnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1
Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVfUkVWQUxJREFURSkKLSAgICB2
b2lkIHN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4mJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPik7CisgICAgdm9pZCBzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmV0d29ya0NhY2hlOjpLZXkmLCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+JiYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAjZW5kaWYKIAogICAgIHZvaWQgYnJvd3Np
bmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBkdW1wRmlsZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIGRlbGV0
ZUR1bXBGaWxlKCk7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9y
YWdlOwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcAppbmRleCAyY2RjNDIyZjMwOGZhMDBlNjY2NmVhODc1ZWRlZjZmYTViMDM2ZmNmLi5j
MjMwZmI0YmUwMzQ2NDk2NWE1OTU0Y2YyNzMwODYyZWYzNjAyZjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMu
Y3BwCkBAIC00MCwyMCArNDAsMjAgQEAgdm9pZCBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFw
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkhUVFAKICAgICB9CiB9
CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IENvZGVyPFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXA+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SFRUUEhlYWRlck1hcD4gQ29kZXI8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJzU2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJzU2l6ZTsKICAgICBkZWNvZGVyID4+
IGhlYWRlcnNTaXplOwogICAgIGlmICghaGVhZGVyc1NpemUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CiAgICAgZm9y
ICh1aW50NjRfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytpKSB7Ci0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZh
bHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUNvZGVycy5oCmluZGV4IDAwNWIxNTNlMmI3NDVmZDU1N2Y1ZDlhM2E4YzAzYmNlYzlm
NThlYTUuLjg5MjI2ZmE2ZGMxZWYwMTIzNTQ3MzJkMDQzNjg5ZGZiOWFmMjlkZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggNzU4ZTQ1YzQ2OGQ3
NGZjZmZmZTlhNTE5NjA5MmYwNjFjYTA0N2FkMi4uZmZhOTEwNGNkNWNkNjFhZjE2ZDRjYzA4MjJh
MDdkNzMyYjIwZjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTExOCwyMCArMTE4LDIwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJiBzdG9yYWdlCiAgICAgZW50cnktPm1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJl
c3BvbnNlKTsKICAgICBlbnRyeS0+bV9yZXNwb25zZS5zZXRTb3VyY2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUpOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFz
VmFyeWluZ1JlcXVlc3RIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzVmFyeWlu
Z1JlcXVlc3RIZWFkZXJzOwogICAgIGRlY29kZXIgPj4gaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJz
OwogICAgIGlmICghaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICgqaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzKSB7Ci0gICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RI
ZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogICAgICAgICBkZWNvZGVyID4+IHZhcnlp
bmdSZXF1ZXN0SGVhZGVyczsKICAgICAgICAgaWYgKCF2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZW50cnktPm1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzID0gV1RGTW92ZSgqdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNS
ZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVkaXJlY3Q7CiAgICAgaWYgKCFpc1JlZGlyZWN0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYgc3RvcmFnZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2Vjb25kcz4+IG1heEFnZUNhcDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4+IG1heEFnZUNhcDsKICAgICBkZWNvZGVyID4+IG1heEFn
ZUNhcDsKICAgICBpZiAoIW1heEFnZUNhcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmgKaW5kZXggMTNlNzA5MGIwNThhYzI1MmM0MTdlM2QyYWYyNTQ4OTQ0ODkwYTk3Yy4uZGVk
YTg2YTQ0YjYxODQ5ZDZkYmIzZDAxZDM0MjAxOTJlNzcyOTk2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Zhcnlp
bmdSZXF1ZXN0SGVhZGVyczsgfQogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdDsKLSAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiBy
ZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgc2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUoKSBjb25zdDsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCi0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVl
c3Q7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwpAQCAtOTUsNyArOTUsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RvcmFnZTo6UmVjb3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7
IH07CiAgICAgCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9tYXhBZ2VDYXA7CisgICAgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtX21heEFnZUNhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5o
CmluZGV4IDFkMWVhZGEzYzM1OTQwZTY2ZTc1YTRlZjRhZDZjOGM4NjZjNDE3OTMuLjgzZmZjZjY5
NjRlNTU1NzEyZGU5NDQxMzQ3YTEzOGNkZjE3ODU4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaApA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIElPQ2hhbm5l
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJT0NoYW5uZWw+IHsKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBSZWFkLCBXcml0ZSwgQ3JlYXRlIH07Ci0gICAgc3RhdGljIFJl
ZjxJT0NoYW5uZWw+IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlLCBUeXBlIHR5cGUsIE9wdGlvbmFs
PFdvcmtRdWV1ZTo6UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFu
bmVsKGZpbGUsIHR5cGUsIHFvcykpOyB9CisgICAgc3RhdGljIFJlZjxJT0NoYW5uZWw+IG9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlLCBUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpR
T1M+IHFvcyA9IHsgfSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJT0NoYW5uZWwoZmlsZSwgdHlw
ZSwgcW9zKSk7IH0KIAogICAgIC8vIFVzaW5nIG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUg
cmVzdWx0IHRvIHRoZSBtYWluIHF1ZXVlLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIFdv
cmtRdWV1ZTo6bWFpbigpIGluc3RlYWQuCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+
SU9DaGFubmVsKCk7CiAKIHByaXZhdGU6Ci0gICAgSU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIElPQ2hhbm5lbDo6VHlwZSwgT3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+KTsKKyAgICBJ
T0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgSU9DaGFubmVsOjpUeXBlLCBzdGQ6Om9w
dGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7CiAKICNpZiBVU0UoR0xJQikKICAgICB2b2lkIHJlYWRT
eW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBXb3JrUXVldWUmLCBGdW5jdGlvbjx2
b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5t
bQppbmRleCA4OTc5YjE0MzQ0NGFkYzFiNTBmY2I4ZTZlOTE2OGY4NzQyZGZkOTFhLi5hNGU2ODZj
Y2E3NDFkMWFkYWQ3NDI4YTE2MTdlYzkxNjAzY2MxMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ29jb2EubW0KQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGxvbmcgZGlzcGF0Y2hRdWV1ZUlk
ZW50aWZpZXIoV29ya1F1ZXVlOjpRT1MgcW9zKQogICAgIH0KIH0KIAotSU9DaGFubmVsOjpJT0No
YW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVl
dWU6OlFPUz4gcW9zKQorSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPiBxb3MpCiAgICAgOiBt
X3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEN1cmwuY3BwCmluZGV4IDFiZDViZjc0Y2ZhZmQyMTA3OWQzMDVlZGI1MWUxODkzNTllMmVl
M2QuLjNiZjE2NjM1MTQ4YjRmYzQxMDRkZTdlMTBhNWYzNmE5MzA1MGQ1YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotSU9DaGFubmVsOjpJT0NoYW5uZWwoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVldWU6OlFPUz4p
CitJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+KQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQog
ICAgICwgbV90eXBlKHR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAppbmRl
eCBmNTQ2YjM4OGE4ZTdiZDBjOTYyM2I1ZDFlYTdjMmY4Mjg5YmQ5NTI2Li40NjFkODFhNGQ2MTI3
NGYxNDdjNTVkZmYwZWJmNzcwMTkwN2QxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xp
Yi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRp
YyBjb25zdCBzaXplX3QgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSA9IDQwOTY7CiAKLUlPQ2hhbm5l
bDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSwgT3B0aW9uYWw8
V29ya1F1ZXVlOjpRT1M+KQorSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPikKICAgICA6IG1f
cGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4IDU4
ZGQzZTczMzJjYjA5NzhhZDk2Y2I2ZGNiOWFjMGIwNjk1ZTg5N2QuLmY4ZjM0MTBkY2EwNWFhMTk0
MTZjYmM0ODUxNWZhMGVlMzRiY2NlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTE3Myw0MSArMTczLDQx
IEBAIHZvaWQgS2V5OjplbmNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fcGFydGl0aW9uSGFzaDsKIH0KIAotT3B0aW9uYWw8S2V5
PiBLZXk6OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxLZXk+IEtleTo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgS2V5IGtleTsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHBhcnRpdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGFydGl0aW9uOwogICAgIGRlY29kZXIgPj4g
cGFydGl0aW9uOwogICAgIGlmICghcGFydGl0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGtleS5tX3BhcnRpdGlvbiA9IFdURk1vdmUoKnBhcnRpdGlvbik7CiAKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGU7CiAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBrZXkubV90eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV9pZGVudGlmaWVyID0gV1RGTW92
ZSgqaWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHJhbmdlOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICgh
cmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fcmFuZ2UgPSBX
VEZNb3ZlKCpyYW5nZSk7CiAKLSAgICBPcHRpb25hbDxIYXNoVHlwZT4gaGFzaDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEhhc2hUeXBlPiBoYXNoOwogICAgIGRlY29kZXIgPj4gaGFzaDsKICAgICBpZiAo
IWhhc2gpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1faGFzaCA9IFdU
Rk1vdmUoKmhhc2gpOwogCi0gICAgT3B0aW9uYWw8SGFzaFR5cGU+IHBhcnRpdGlvbkhhc2g7Cisg
ICAgc3RkOjpvcHRpb25hbDxIYXNoVHlwZT4gcGFydGl0aW9uSGFzaDsKICAgICBkZWNvZGVyID4+
IHBhcnRpdGlvbkhhc2g7CiAgICAgaWYgKCFwYXJ0aXRpb25IYXNoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggZjUxMTFiZTgzMzI1YTQxNGMyMTJhNWFiOGI0NDhm
OTAzZDJmYWFjNS4uYTEwYTE2MGQ1YTQ2OWU0NTJmZjNkNjc1MGRjNjFmOWZmN2NhODdlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVL
ZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUtleS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaGFzaEFzU3RyaW5nKG1fcGFydGl0aW9uSGFzaCk7
IH0KIAogICAgIHZvaWQgZW5jb2RlKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8S2V5PiBkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEtleT4gZGVjb2RlKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRl
eCA0Yjk4ZDVjMTRjMDhjMTE3YThhNjVjYzQxZjVmY2QxNzIzNGQ3MDk2Li40MDM3NGJhMDhmZTUx
ZGI0ZTQ2ZDNkZDRhODkzOTk4OTUzMGQ3NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxv
YWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUlELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiBjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFJldmFsaWRhdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCitTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZy
YW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
IDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQpAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdQogewogICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJTcGVjdWxhdGl2ZSByZWRpcmVjdCAlcyAtPiAlcyIs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOwogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IG1fY2FjaGUtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9jYWNo
ZS0+c2Vzc2lvbklEKCkpKQogICAgICAgICBtYXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKaW5kZXggZGI1ZGRkYjhlNmZlNGQ1MWQyZWY5MDA4NWE0YjI0YjEzNmI5NGM5YS4uYzBlMWUx
NGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5h
bCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
Pik+OwotICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjpFbnRyeT4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV2YWxp
ZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgU3BlY3VsYXRpdmVMb2FkKENhY2hlJiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Piwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwog
CiAgICAgdmlydHVhbCB+U3BlY3VsYXRpdmVMb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IDk5NTU3ZGEyMjUyYWVlZWY4NjFiNzQ0
MzNiNWIwMTE3M2I2YWE1ODguLmUxYmRmNjlkNjU0NzUwMGUyZTNiNzAzODY4ZWUxM2ZkMTA3NDQ0
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUgRXhwaXJpbmdFbnRyeSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBlbnRyeSwgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZl
VmFsaWRhdGlvblJlcXVlc3QsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hl
ZEhhbmRsZXIpCisgICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRy
eSwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9u
UmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikK
ICAgICAgICAgOiBFeHBpcmluZ0VudHJ5KFdURk1vdmUobGlmZXRpbWVSZWFjaGVkSGFuZGxlcikp
CiAgICAgICAgICwgbV9lbnRyeShXVEZNb3ZlKGVudHJ5KSkKICAgICAgICAgLCBtX3NwZWN1bGF0
aXZlVmFsaWRhdGlvblJlcXVlc3QoV1RGTW92ZShzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0
KSkKQEAgLTE1MywxMiArMTUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bV9lbnRyeSk7CiAgICAgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYg
cmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0
aW9uUmVxdWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYg
cmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0
aW9uUmVxdWVzdDsgfQogICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+
IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291
cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OwogfTsKIAogY2xhc3Mg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlbmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtl
eSYgcmVzb3VyY2VLZXksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVn
aXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAg
IHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtNYWluUmVzb3VyY2VSZXNwb25zZUFzUmVjZWl2ZWQoKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBP
cHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKK3ZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKIHsKICAgICBBU1NFUlQoZW50
cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTQ1Miw3ICs0
NTIsNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVz
dHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25z
dCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgRW50cnkqIGVudHJ5LCBjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlELCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3Vi
cmVzb3VyY2VJbmZvLCBFbnRyeSogZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKG1fY2FjaGUuc2Vzc2lvbklEKCkpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291
cmNlSW5mbyYgc3ViCiAjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUlu
Zm8sIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRl
U3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKCFlbnRyeSB8fCBlbnRyeS0+bmVlZHNWYWxpZGF0
aW9uKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAgc3RhdGljIGJvb2wgY2FuUmV2YWxpZGF0ZShj
b25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgY29uc3QgRW50cnkqIGUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9h
ZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNl
SW5mbywgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3Vi
cmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5z
KGtleSkpCiAgICAgICAgIHJldHVybjsKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVz
b3VyY2VJbmZvJgogICAgIH0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0
YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwg
U3VicmVzb3VyY2VzRW50cnkmIGVudHJ5LCBib29sIHJlcXVlc3RJc0FwcEJvdW5kLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNFbnRyeSYgZW50
cnksIGJvb2wgcmVxdWVzdElzQXBwQm91bmQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZUluZm8gOiBlbnRyeS5zdWJyZXNvdXJjZXMoKSkgewogICAgICAgICBh
dXRvJiBrZXkgPSBzdWJyZXNvdXJjZUluZm8ua2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IGVmNzZhOWFiYmU2ZGM5ODVjN2M2MDZmZGVlNzU0
NmU1ZDdlNjU3ZWUuLjE0NjA4MzYxYWIyNmY3MGY5NGM0YWRjYjJmMzMzZTQ1YTU2NjFlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKENhY2hl
JiwgU3RvcmFnZSYpOwogICAgIH5TcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKCk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJj
ZUtleSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIHZv
aWQgcmVnaXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJRCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CkBAIC02MiwxNCArNjIsMTQgQEAg
cHJpdmF0ZToKICAgICBjbGFzcyBQcmVsb2FkZWRFbnRyeTsKIAogICAgIHN0YXRpYyBib29sIHNo
b3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2
b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0
aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3Qg
S2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBhZGRQcmVsb2FkZWRF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3Qg
U3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICB2b2lkIHJldHJpZXZlRW50cnlGcm9tU3Rv
cmFnZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIHZvaWQgcmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYs
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwotICAgIHZvaWQgcHJlY29ubmVjdEZvclN1YnJl
c291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIEVudHJ5KiwgY29uc3QgR2xvYmFsRnJhbWVJ
RCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCByZXZh
bGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25z
dCBTdWJyZXNvdXJjZUluZm8mLCBFbnRyeSosIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAgICAgYm9vbCBzYXRpc2Z5UGVu
ZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYsIEVudHJ5Kik7CiAgICAgdm9pZCByZXRyaWV2ZVN1YnJl
c291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgV1RGOjpGdW5jdGlvbjx2b2lkIChz
dGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4mJik7Ci0gICAgdm9pZCBzdGFydFNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNF
bnRyeSYsIGJvb2wsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAg
dm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBT
dWJyZXNvdXJjZXNFbnRyeSYsIGJvb2wsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+KTsKIAogICAgIHN0YXRpYyBib29sIGNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0
IFByZWxvYWRlZEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxS
ZXF1ZXN0KTsKICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVj
dWxhdGl2ZUxvYWQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNzRjZGI3ZDEyNTQ3Nzg3ZDA0MWVhZGZjODg0
YWE1ODgwNDY4MmI2MC4uNDZlNTk1MjI5Y2Q4ZmE0YWM1Y2UwNTY4NGE3ZjY1YjMwNjAxYTM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC00NTcsNDkgKzQ1Nyw0OSBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVjb3JkTWV0YURhdGEoUmVjb3JkTWV0YURhdGEmIG1l
dGFEYXRhLCBjbwogICAgIGZpbGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZzdWNjZXNzXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7CiAgICAgICAgIAotICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICAgICAgZGVjb2RlciA+PiBjYWNoZVN0
b3JhZ2VWZXJzaW9uOwogICAgICAgICBpZiAoIWNhY2hlU3RvcmFnZVZlcnNpb24pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb24g
PSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VWZXJzaW9uKTsKIAotICAgICAgICBPcHRpb25hbDxLZXk+
IGtleTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXk+IGtleTsKICAgICAgICAgZGVjb2RlciA+
PiBrZXk7CiAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBtZXRhRGF0YS5rZXkgPSBXVEZNb3ZlKCprZXkpOwogCi0gICAgICAgIE9wdGlvbmFsPFdh
bGxUaW1lPiB0aW1lU3RhbXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVT
dGFtcDsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lU3RhbXA7CiAgICAgICAgIGlmICghdGltZVN0
YW1wKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS50aW1lU3Rh
bXAgPSBXVEZNb3ZlKCp0aW1lU3RhbXApOwogCi0gICAgICAgIE9wdGlvbmFsPFNIQTE6OkRpZ2Vz
dD4gaGVhZGVySGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IGhlYWRl
ckhhc2g7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVySGFzaDsKICAgICAgICAgaWYgKCFoZWFk
ZXJIYXNoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5oZWFk
ZXJIYXNoID0gV1RGTW92ZSgqaGVhZGVySGFzaCk7CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGhlYWRlclNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlclNp
emU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVyU2l6ZTsKICAgICAgICAgaWYgKCFoZWFkZXJT
aXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5oZWFkZXJT
aXplID0gV1RGTW92ZSgqaGVhZGVyU2l6ZSk7CiAKLSAgICAgICAgT3B0aW9uYWw8U0hBMTo6RGln
ZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlI
YXNoOwogICAgICAgICBkZWNvZGVyID4+IGJvZHlIYXNoOwogICAgICAgICBpZiAoIWJvZHlIYXNo
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaCA9
IFdURk1vdmUoKmJvZHlIYXNoKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYm9keVNp
emU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJvZHlTaXplOwogICAgICAgICBk
ZWNvZGVyID4+IGJvZHlTaXplOwogICAgICAgICBpZiAoIWJvZHlTaXplKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5ib2R5U2l6ZSA9IFdURk1vdmUoKmJvZHlT
aXplKTsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0JvZHlJbmxpbmU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaXNCb2R5SW5saW5lOwogICAgICAgICBkZWNvZGVyID4+IGlzQm9k
eUlubGluZTsKICAgICAgICAgaWYgKCFpc0JvZHlJbmxpbmUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01ODksNyArNTg5LDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURh
dGEoY29uc3QgUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhKQogICAgIHJldHVybiBEYXRhKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotT3B0aW9uYWw8QmxvYlN0
b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYgd3Jp
dGVPcGVyYXRpb24pCitzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpz
dG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0aW9uKQogewogICAgIGF1
dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsK
IApAQCAtNjE0LDcgKzYxNCw3IEBAIE9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdl
OjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0CiAgICAgcmV0dXJu
IGJsb2I7CiB9CiAKLURhdGEgU3RvcmFnZTo6ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVj
b3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gYmxvYikKK0RhdGEgU3RvcmFnZTo6ZW5j
b2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdl
OjpCbG9iPiBibG9iKQogewogICAgIEFTU0VSVCghYmxvYiB8fCBieXRlc0VxdWFsKGJsb2IudmFs
dWUoKS5kYXRhLCByZWNvcmQuYm9keSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IGQyZjAwN2U4
MmJiNDA4OTU5ZWM0MDUyNjYwNGVjYzMzMTNkMTVjZmIuLjM4NWI1M2Y4ZWYwN2I3MGM1YjYwMjZm
Mjc2OWEyZjdmMDQ3MWQyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgdGltZVN0YW1wOwogICAgICAgICBEYXRhIGhlYWRlcjsK
ICAgICAgICAgRGF0YSBib2R5OwotICAgICAgICBPcHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlI
YXNoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gYm9keUhhc2g7CiAKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKQEAgLTE0NCw4ICsxNDQsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoV3JpdGVPcGVyYXRpb24oV3JpdGVPcGVyYXRpb24m
LCBpbnQgZXJyb3IgPSAwKTsKIAogICAgIGJvb2wgc2hvdWxkU3RvcmVCb2R5QXNCbG9iKGNvbnN0
IERhdGEmIGJvZHlEYXRhKTsKLSAgICBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVC
b2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJik7Ci0gICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3Qg
UmVjb3JkJiwgT3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEJsb2JTdG9yYWdlOjpCbG9iPiBzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mKTsKKyAg
ICBEYXRhIGVuY29kZVJlY29yZChjb25zdCBSZWNvcmQmLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9y
YWdlOjpCbG9iPik7CiAgICAgdm9pZCByZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mLCBjb25zdCBE
YXRhJik7CiAKICAgICB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IGRm
NGYxNjgxMGY5MzE0YThhZGEzMDBkNDA4MTdkYzc1YTJiNmZkODUuLjRiNWUyZDg3YjdjZDQ2NmQ3
NTdmMDE3YTk1ODVjMWQxNzI4YmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuY3BwCkBAIC01MiwyOSArNTIsMjkgQEAgdm9pZCBTdWJyZXNvdXJjZUluZm86OmVuY29k
ZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgbV9wcmlvcml0eTsKIH0KIAotT3B0aW9uYWw8U3VicmVzb3VyY2VJbmZvPiBTdWJyZXNvdXJj
ZUluZm86OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IFN1YnJlc291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3VicmVzb3VyY2VJbmZvIGluZm87
CiAKLSAgICBPcHRpb25hbDxLZXk+IGtleTsKKyAgICBzdGQ6Om9wdGlvbmFsPEtleT4ga2V5Owog
ICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGluZm8ubV9rZXkgPSBXVEZNb3ZlKCprZXkpOwogCi0gICAgT3B0aW9uYWw8
V2FsbFRpbWU+IGxhc3RTZWVuOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGxhc3RTZWVu
OwogICAgIGRlY29kZXIgPj4gbGFzdFNlZW47CiAgICAgaWYgKCFsYXN0U2VlbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fbGFzdFNlZW4gPSBXVEZNb3ZlKCpsYXN0
U2Vlbik7CiAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gZmlyc3RTZWVuOworICAgIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IGZpcnN0U2VlbjsKICAgICBkZWNvZGVyID4+IGZpcnN0U2VlbjsKICAg
ICBpZiAoIWZpcnN0U2VlbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZv
Lm1fZmlyc3RTZWVuID0gV1RGTW92ZSgqZmlyc3RTZWVuKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGlzVHJhbnNpZW50OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAgICAg
ZGVjb2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsMjUgKzgzLDI1IEBAIE9wdGlvbmFsPFN1YnJlc291
cmNlSW5mbz4gU3VicmVzb3VyY2VJbmZvOjpkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYgZGVjCiAgICAgaWYgKGluZm8ubV9pc1RyYW5zaWVudCkKICAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZShpbmZvKSB9OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNTYW1lU2l0ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzU2FtZVNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1NhbWVTaXRlOwog
ICAgIGlmICghaXNTYW1lU2l0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
bmZvLm1faXNTYW1lU2l0ZSA9IFdURk1vdmUoKmlzU2FtZVNpdGUpOwogCi0gICAgT3B0aW9uYWw8
VVJMPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAg
ICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGluZm8ubV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFdURk1vdmUoKmZpcnN0UGFydHlG
b3JDb29raWVzKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IHJlcXVl
c3RIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gcmVx
dWVzdEhlYWRlcnM7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyczsKICAgICBpZiAoIXJl
cXVlc3RIZWFkZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9y
ZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJzKTsKIAotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICBkZWNvZGVy
ID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3JpdHkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0Vu
dHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdAogICAgIGF1
dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwog
CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFk
ZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7Ci0gICAgT3B0aW9uYWw8VmVj
dG9yPFN1YnJlc291cmNlSW5mbz4+IHN1YnJlc291cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxTdWJyZXNvdXJjZUluZm8+PiBzdWJyZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBzdWJy
ZXNvdXJjZXM7CiAgICAgaWYgKCFzdWJyZXNvdXJjZXMpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IDIzZTczNTBlOTU4ZDYx
NjRkMzdiZTAyYTEyOTQxMmI1YWI4NDkxOGMuLjYwYTQwNjNiMjM0NWQ5MjVlMmM3ODc4NDU5OTIw
ZTEwZjI3ODIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VJbmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFN1YnJlc291cmNlSW5mbz4gZGVjb2Rl
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
dWJyZXNvdXJjZUluZm8+IGRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJik7CiAKICAg
ICBTdWJyZXNvdXJjZUluZm8oKSA9IGRlZmF1bHQ7CiAgICAgU3VicmVzb3VyY2VJbmZvKGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnJlc291cmNl
SW5mbyogcHJldmlvdXNJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBkOTE4MTlmYzE0YzNk
NjVmOTkzOTE3YTRhM2U4OGJkMzZiMDljNmMxLi44NjkyODRjMzZlMTE1YTVlNTU0ZjQ1MmRmYmE1
OGRlZTcyNTAxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVj
dCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBw
dWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorICAg
IHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNu
aWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
LCBwY21EYXRhQ2FycmllZCkpOwogICAgIH0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwg
TmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZv
ckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiYsIGJvb2wgc2hvdWxkQ29udGVu
dFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IDZhZWVhYTFmMGQxYzQ0YjQwY2Y0MDZhNjgxOWM0N2U5NWFhYmY5ZGMuLjU0Nzkw
YmRiOGZhYjgyYmM2MDEwZjE5OGE1MDU4ZTUyYTA1NTU2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVybiBzZXNz
aW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwogfQogCi1OZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0
d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RX
aXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdh
dGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lv
biwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRy
KHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBl
ckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCiAgICAgLCBt
X2ZyYW1lSUQoZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCBkNDJmNjYzZjVhZmIwMGE4
Mjc2NWVjNTI3YjAxZDVjZGI2ZjUxNmQ0Li4wYjY3MWMyOGEyNGJiM2ZhMGUwYWU1M2I1MWQzNWZj
YTdjZGJmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMTIsNyArMTEyLDcgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRh
KCkgY29uc3QKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAgICAgaWYg
KCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KTsKICAgICBpZiAoIWF1ZGl0VG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSYqYXVkaXRU
b2tlbiwgc2l6ZW9mKCphdWRpdFRva2VuKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAppbmRleCAzMGZlNTJm
Y2JhM2RjYmE1ZDFhZmZkODAwMWFkZjNjN2E3OWJjODEzLi4yNDlmMTBmMjEyODVlMDYzM2NhYTIx
ZDkxZWZjNDVjM2Y4MzMxZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtMTAxLDEyICsxMDEsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik7CiAgICAgYm9vbCBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uOyB9CiAgICAgCiAgICAgX05TSFNUU1N0b3JhZ2UgKmhzdHNTdG9yYWdlKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShPcHRpb25hbDxXYWxsVGltZT4s
IE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlTmV0d29ya1dl
YnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDcyNjE1YWM5Y2ZjNjdkNTg4Zjg3MWUz
N2E1NDM0OTU5OGJjMzc0YjAuLjg5NDk1ZmYzODU3MTRhOTI1MDgzN2NhZjAzM2EwYmY4YzczYjUx
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTY2LDcgKzY2LDcgQEAKICNkZWZpbmUgTkVUV09S
S19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiAjZGVmaW5lIE5FVFdPUktfU0VTU0lPTl9DT0NP
QV9BRERJVElPTlNfMgogI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzMK
LXZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURh
dGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KK3ZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4s
IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcigpOyB9CiAjZW5kaWYKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5r
LmgiCkBAIC0xMzU3LDcgKzEzNTcsNyBAQCBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25D
b2NvYTo6U2Vzc2lvblNldDo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1NlcwogICAgIHJl
dHVybiBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOwogfQogCi1TZXNzaW9uV3JhcHBlciYgTmV0
d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQorU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNl
c3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQogewogICAgIGF1dG8gc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluID8gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOwogICAgIGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdl
YkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9nbGliL0ROU0NhY2hlLmNwcAppbmRleCBhOGJlMmYzZDM1ZTBkZDcyYjI0MWM3ZTNkOTU2
NDE3MzljYmUwY2RkLi41OTA0MDBjOWM0YzVlZDAzYzI3MjVhOTQ3MjQyYzk0Y2QyZGVhZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgRE5TQ2FjaGU6OkROU0NhY2hlTWFwJiBETlNDYWNoZTo6bWFwRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgcmV0dXJuIG1fZG5zTWFwOwogfQogCi1PcHRpb25hbDxWZWN0b3I8
R1JlZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBo
b3N0LCBUeXBlIHR5cGUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVz
cz4+PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byYgbWFwID0gbWFwRm9yVHlw
ZSh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9E
TlNDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgK
aW5kZXggNWU3MDcyZGQwNWZmOWMxZjE0MDcwNDZiMjE1NmZiMjUzNjM5Njg0NS4uYjM2NjM3ZDg2
ZWI5OTljM2Y4MTM0MDJlODBmNzcwMmNiZTc2N2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IH5ETlNDYWNoZSgpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IERlZmF1bHQs
IElQdjRPbmx5LCBJUHY2T25seSB9OwotICAgIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0
QWRkcmVzcz4+PiBsb29rdXAoY29uc3QgQ1N0cmluZyYgaG9zdCwgVHlwZSA9IFR5cGU6OkRlZmF1
bHQpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IGxv
b2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBUeXBlID0gVHlwZTo6RGVmYXVsdCk7CiAgICAgdm9p
ZCB1cGRhdGUoY29uc3QgQ1N0cmluZyYgaG9zdCwgVmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNz
Pj4mJiwgVHlwZSA9IFR5cGU6OkRlZmF1bHQpOwogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGEyNGUyNzk5MWEzOWU0ZjQ2M2NkZjNhZTMzODA2ZTc3MDZhZDFlZDEu
LmYxMzYxZmQxMWU0ZGJlZWQzOTRmOTdkOTA0ODMxYzRhMzYxMjZjNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRTdHJlYW0pCiAgICAgZGlzcGF0
Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpk
aWRSZWFkRGF0YVVSTChPcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3VsdCkK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxE
YXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3VsdCkKIHsKICAgICBpZiAoZ19jYW5jZWxsYWJs
ZV9pc19jYW5jZWxsZWQobV9jYW5jZWxsYWJsZS5nZXQoKSkpIHsKICAgICAgICAgZGlkRmFpbChj
YW5jZWxsZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCA1ZGFk
OGJjMGZjMjI1YWQzOTJlZGIyN2I3ZDgwNTQ3NDY0MzRmZWNlLi5lZTk2ZTdkMDliZGRkMDFhOTI5
ODBmMTU0YTBkZTJmYjc1NDAzYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTE3NSw3ICsxNzUsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGVudW1lcmF0ZUZpbGVDaGlsZHJlbkNhbGxiYWNr
KEdGaWxlKiwgR0FzeW5jUmVzdWx0KiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogICAgIHZvaWQg
ZGlkUmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYpOwogCi0gICAgdm9pZCBkaWRSZWFk
RGF0YVVSTChPcHRpb25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmKTsKKyAg
ICB2b2lkIGRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29k
ZXI6OlJlc3VsdD4mJik7CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlE
OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwpAQCAtMTg4LDcgKzE4OCw3
IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxTb3VwTXVsdGlwYXJ0SW5wdXRTdHJlYW0+IG1fbXVs
dGlwYXJ0SW5wdXRTdHJlYW07CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+IG1fcGVuZGluZ1Jlc3VsdDsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiBtX3BlbmRpbmdEYXRhVVJMUmVz
dWx0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OlJlc3VsdD4g
bV9wZW5kaW5nRGF0YVVSTFJlc3VsdDsKICAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgbV9w
cm90ZWN0aW9uU3BhY2VGb3JQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBXZWJDb3JlOjpDcmVkZW50
aWFsIG1fY3JlZGVudGlhbEZvclBlcnNpc3RlbnRTdG9yYWdlOwogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2Rlci5oCmluZGV4IGQyOGEwMzFhODUzZTQ3OTAwNzk4ZDE5NzkwNDhhNGZkM2Fj
ZWM3ODcuLmNjYTBkNjUwNDIzNjJmZTgwMDhlMDRhZjVkODU2ZWM4YjA4MmE1NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
ciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRp
b25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhw
cihIYXNNb2Rlcm5EZWNvZGVyVjxUPikKICAgICAgICAgICAgIHJldHVybiBUOjpkZWNvZGUoZGVj
b2Rlcik7CkBAIC02Niw3ICs2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVn
YWN5RGVjb2RlclY8VD4pCiAgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFQ+IG9wdGlvbmFsID0gVDo6
ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBvcHRpb25hbCA9
IFQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFs
KTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
JnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBUIHJlc3VsdDsK
ICAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpKQpAQCAtMTAxLDkg
KzEwMSw5IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAgICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFQ+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAg
ICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPFQ+KCp2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oKnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2YTg1NmFlZmY0MzRmNDAzNjg2YjgxYjdk
NGE0OWMzNGYyYzhmYTIzLi43NDY0MjgxM2Y0NzgxOTZjMGM3OGNlYjc4N2UzNjZkYzI4ZGM5MjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC00OCw5ICs0OCw5IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8V2Fs
bFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2Rl
cjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorV0FSTl9VTlVTRURfUkVUVVJO
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxkb3VibGU+IHRpbWU7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHRpbWU7CiAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgIGlmICgh
dGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCB0
ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5n
dGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0
KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxs
b2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMg
YmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFp
bjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBpbmxp
bmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVp
bnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotV0FSTl9VTlVTRURfUkVUVVJO
IE9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1l
bnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICB1aW50MzJf
dCBsZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQpAQCAtMTcxLDcgKzE3
MSw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYg
cmVzdWx0KQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJp
bmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8TW9ub3N0YXRlPjo6ZW5jb2RlKEVuY29kZXImLCBjb25zdCBNb25vc3RhdGUmKQog
ewogfQogCi1XQVJOX1VOVVNFRF9SRVRVUk4gT3B0aW9uYWw8TW9ub3N0YXRlPiBBcmd1bWVudENv
ZGVyPE1vbm9zdGF0ZT46OmRlY29kZShEZWNvZGVyJikKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6
Om9wdGlvbmFsPE1vbm9zdGF0ZT4gQXJndW1lbnRDb2RlcjxNb25vc3RhdGU+OjpkZWNvZGUoRGVj
b2RlciYpCiB7CiAgICAgcmV0dXJuIE1vbm9zdGF0ZSB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZmZlM2YyMzk5OTNlOTBhMTgwMGIxZjYxNTcwNTlh
YTIxZWUxOWZmOC4uOTI5MTM0MjFmODZkN2U1ZWVkODdlY2M4NGQ1ZDJiZDA1NWVmNzhhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg5LDcgKzE4OSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc1ZhbGlkKElkZW50
aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gTUFDSF9QT1JUX1ZBTElEKGlkZW50aWZpZXIucG9y
dCk7IH0KICAgICB4cGNfY29ubmVjdGlvbl90IHhwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3hwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBn
ZXRBdWRpdFRva2VuKCk7CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBnZXRBdWRp
dFRva2VuKCk7CiAgICAgcGlkX3QgcmVtb3RlUHJvY2Vzc0lEKCkgY29uc3Q7CiAjZWxpZiBPUyhX
SU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExFIElkZW50aWZpZXI7CkBAIC01NzksNyArNTc5LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8v
IERlY29kZSB0aGUgcmVwbHkuCi0gICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVu
dHM+IHJlcGx5QXJndW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlB
cmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1
bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA3ZWJjYWVmM2ZjMjM0MTVjNTQyOTFh
M2ZhNjZmZjY5ZTA0ZTZlNzc1Li41ZjRlMmE2YWEzYzRkNzM2MThkZGY0ZTkwMzA1ZTdmOTFhMTY3
MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC05NSw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxUPiBvcHRpb25hbDsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gb3B0aW9uYWw7CiAgICAgICAgICAgICAqdGhpcyA+PiBv
cHRpb25hbDsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWwpKSB7CiAgICAgICAg
ICAgICAgICAgbWFya0ludmFsaWQoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPFQ+JiB0KQorICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYg
dCkKICAgICB7CiAgICAgICAgIHVzaW5nIEltcGwgPSBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjsKICAgICAgICAgaWYg
Y29uc3RleHByKEhhc01vZGVybkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKSB7CkBAIC0xNDAsOSAr
MTQwLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRy
dWU7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgT3B0aW9uYWw8VD4g
ZGVjb2RlU2luZ2xlT2JqZWN0KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9m
Qnl0ZXMpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlU2luZ2xlT2JqZWN0KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMpCiAgICAgewotICAgICAg
ICBPcHRpb25hbDxUPiByZXN1bHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gcmVzdWx0Owog
ICAgICAgICBEZWNvZGVyIGRlY29kZXIoc291cmNlLCBudW1iZXJPZkJ5dGVzLCBDb25zdHJ1Y3RX
aXRob3V0SGVhZGVyKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Rm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCBlYzY4ZGZhZGQ5YjdlNGQ3OGFkNzYzZmU2NTg2MTM1
OTQwMDgyMzU1Li5jMGQ0MzdhZTcxN2FiOTJjZGQzNGNhOWVlY2FmMDdiZWRiY2JhN2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTY3
LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8IHNhbmRib3hFeHRlbnNpb25I
YW5kbGVzOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxGb3JtRGF0YVJlZmVyZW5jZT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9ybURh
dGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gaGFzRm9ybURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
Rm9ybURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzRm9ybURhdGE7CiAgICAgICAgIGlmICgh
aGFzRm9ybURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghZm9ybURhdGEpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGVzOwogICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzOwogICAgICAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAppbmRleCAzMTc0ZDQyYTljNTZiNDU0OTBlMTRiZWViNDI5NzYzZjdkMTNjMmIwLi4y
YWIwZmMyNjUzMWM3NzNmNTFkNmQyZDU1ODY4NGJkYTEzNmJiNmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0
IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29k
aW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3Rk
OjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5
cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtF
TFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IGhhbmRsZU1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9i
amVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0
eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25h
bDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3Vt
ZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3Vt
ZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIGhhbmRsZU1l
c3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+
CiBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJlcGx5RW5jb2RlciwgQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFs
PHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1l
bnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1l
bnRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgaGFu
ZGxlTWVzc2FnZVN5bmNocm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRj4KIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIE9wdGlvbmFsPHR5
cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRz
OworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1
bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAg
aWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYs
NyArMTY2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGQKICAgICBpZiAoVU5MSUtFTFkoIWRl
Y29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0
aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBh
cmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTE4
MCwxMiArMTgwLDEyIEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVu
Y3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGxpc3RlbmVySUQ7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsKICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7
CiAgICAgaWYgKCFsaXN0ZW5lcklEKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50
czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJn
dW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAg
IGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERl
Y29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBN
RiBmdW5jdGlvbikKIHsKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwog
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SVBDU2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUu
aAppbmRleCAxNmQwNTY2MzQxMjQwOWNhODhkYTZiNGYyMTgyNDM0MDExMDZmZDhiLi5kMmY0ODM5
NGI0M2NhN2YxY2I5MjA4NmMyNjI1ZDUzYzM4YjYzYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU2Vt
YXBob3JlJiBvcGVyYXRvcj0oU2VtYXBob3JlJiYpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgdm9pZCBzaWduYWwoKTsKICAgICBib29sIHdhaXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKaW5kZXggMmRjZDk1YTdkYTY0ZmU1M2RlYmFlNTlh
ZWU3YzdlNmRlMTU4NTMyNi4uZWQxNjQ0MmNiOTY2ZjAzNDRiYjEwYzFmM2U5MDZiYjhiZTZjZWQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKQEAgLTExOCwx
OSArMTE4LDE5IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPCiBib29sIHB1dEpTVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRBdEluZGV4T3JBcnJheUJ1ZmZlcklmVW5kZWZpbmVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkpTQXJyYXkqLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlLCBj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBFbGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29k
ZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSVBDOjpEZWNvZGVyJiwgSlND
OjpKU0FycmF5Kiwgc2l6ZV90IGN1cnJlbnRJbmRleCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4q
KTsKK3N0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1l
bnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBJUEM6OkRlY29kZXImLCBKU0M6OkpTQXJy
YXkqLCBzaXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiopOwogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVj
b2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBKU0M6OkpTQXJyYXkqIGFycmF5LCBzaXplX3QgY3VycmVudElu
ZGV4LCBzdGQ6OnR1cGxlPD4qKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBw
dXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBKU0M6OkpTQXJyYXkqIGFycmF5LCBz
aXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxlPD4qKQogewogICAgIHJldHVybiBKU0M6OkpT
VmFsdWUgeyBhcnJheSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBF
bGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3Vt
ZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgSlNDOjpKU0FycmF5KiBhcnJheSwgc2l6ZV90IGN1cnJlbnRJbmRleCwgc3Rk
Ojp0dXBsZTxULCBFbGVtZW50cy4uLj4qKQorc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1
dEpTVmFsdWVGb3JEZWNvZGVBcmd1bWVudEluQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIEpTQzo6SlNBcnJheSogYXJyYXksIHNp
emVfdCBjdXJyZW50SW5kZXgsIHN0ZDo6dHVwbGU8VCwgRWxlbWVudHMuLi4+KikKIHsKICAgICBh
dXRvIHN0YXJ0aW5nQnVmZmVyUG9zaXRpb24gPSBkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlv
bigpOwotICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7
CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
cHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgT3B0aW9uYWw8SlNDOjpKU1ZhbHVl
PiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEpTQzo6
SlNWYWx1ZT4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBhdXRvKiBhcnJh
eSA9IEpTQzo6Y29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUFyZ3VtZW50RGVzY3Jp
cHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMuaAppbmRleCA1YWJiODczMjY2ODY2NzU5ZWQ5ZjE4NDZlNGQxOGFhNmNjMDg0OWRl
Li42YjcwYTNhNzE4NGQyNjVmYjAxMGU3OWM3Mzg2MGFmMjZlMjQxMTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMuaApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgRGVjb2RlcjsK
IAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBNZXNzYWdlTmFtZSwgRGVjb2RlciYpOwotT3B0aW9uYWw8SlNDOjpKU1ZhbHVl
PiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCosIE1lc3NhZ2VO
YW1lLCBEZWNvZGVyJik7CitzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFy
Z3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTWVzc2FnZU5hbWUsIERlY29kZXImKTsKK3N0
ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIE1lc3NhZ2VOYW1lLCBEZWNvZGVyJik7CiAKIHN0cnVjdCBBcmd1bWVu
dERlc2NyaXB0aW9uIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwpAQCAtNTAsNyArNTAsNyBAQCBz
dHJ1Y3QgQXJndW1lbnREZXNjcmlwdGlvbiB7CiAgICAgYm9vbCBpc09wdGlvbmFsOwogfTsKIAot
T3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMoTWVzc2FnZU5hbWUpOwotT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRp
b24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSk7CitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zKE1lc3NhZ2VOYW1lKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSk7
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKaW5k
ZXggZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFhM2YxMmFkNzVjOWNjOC4uNWJmOWI5M2VmNDQy
YTNmZDgxZTA1MjU2ZmI4NmY2YjIyZDMxNWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIElQQyB7
CiAKIE1lc3NhZ2VTZW5kZXI6On5NZXNzYWdlU2VuZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIE1l
c3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBs
eUluZm8pCitib29sIE1lc3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmIGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggMGU1YWQzZDk0ODBmZWU5
MzA1NGJkMWNlNDU3ZDAyODM5OWM0ZmZmYS4uYmY2MWZhODc2NzliZDA3NjM3NTNiNDc5NzcwOWFi
MTQ4ODJmZWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVySUQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiA9IHN0ZDo6bnVsbG9wdCk7
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggMDYxNjAxZjcyMTAyOTM0NjBmMjk2NDQ4ZjNlNDE4MDhiM2U4
ZmRjNS4uODM0NmUzOWU4N2E0ZDA1ODI1M2ZlY2VhNjcxYzEzMmU0NzY5ZTFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc2VnbWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSwgMSk7CiB9CiAKLU9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IGYxYzE4ZDY0Mjc2ZTZhMzE5MDExYWNjNDEyYjE2ODExNjVlYzNmZDEuLmMzZjE4M2Iy
ZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlz
RW1wdHkoKSA6IHRydWU7IH0KIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKaW5kZXggZDgxZTU0
NmNiNjJiZmI1Y2EwNmE3YTAwYWM2MDhjNjljODRjZTIyYS4uM2UyYzI0YWM5NDc3ZTg0ZTBiYTM3
MTE0NjQ4MjdiYWFlOGUzOWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNzAsMTIgKzcwLDEyIEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBib29sIHRyeVNlbmRTdHJlYW0oVCYgbWVz
c2FnZSwgU3BhbiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8U2Vu
ZFN5bmNSZXN1bHQ+IHRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiwgVGltZW91dCwgU3BhbiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+
IHRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiwgVGltZW91
dCwgU3BhbiYpOwogICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0KTsKICAgICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJl
YW1NZXNzYWdlKFNwYW4mJik7CiAKLSAgICBPcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVv
dXQpOwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmVBbGwoVGltZW91dCk7CisgICAgc3Rk
OjpvcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVvdXQpOworICAgIHN0ZDo6b3B0aW9uYWw8
U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsKIAogICAgIGVudW0gY2xhc3MgV2FrZVVwU2Vy
dmVyIDogYm9vbCB7CiAgICAgICAgIE5vLApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciBtX2J1ZmZlcjsKLSAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3Jl
OworICAgIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBtX3dha2VVcFNlbWFwaG9yZTsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CkBAIC0xNTYsNyArMTU2LDcgQEAgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFN5bmMoVCYmIG1lc3MKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9wdGlvbmFs
PFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbShUJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYg
cmVwbHksIFRpbWVvdXQgdGltZW91dCwgU3BhbiYgc3BhbikKK3N0ZDo6b3B0aW9uYWw8U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwg
VGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQogewogICAgIC8vIEluIHRoaXMgZnVuY3Rpb24s
IFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2FsbGVyIHNob3Vs
ZCBzdG9wIHByb2Nlc3NpbmcuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0
IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgpA
QCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kCiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24ucHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQogICAgICAg
ICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9OwogCi0gICAgYXV0byByZXN1bHQgPSBbJl0oKSAt
PiBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4geworICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4g
c3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gewogICAgICAgICBTdHJlYW1Db25uZWN0aW9u
RW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUg
fTsKICAgICAgICAgaWYgKCEobWVzc2FnZUVuY29kZXIgPDwgc3luY1JlcXVlc3RJRCA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
ODgsNyArMTg4LDcgQEAgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmQKICAgICBtX2Nvbm5lY3Rpb24u
cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCk7CiAgICAgaWYgKHJlc3VsdCAm
JiAqcmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGRlY29kZXIgPSAqKnJlc3VsdDsKLSAgICAgICAg
T3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3Vt
ZW50czsKICAgICAgICAgZGVjb2RlciA+PiByZXBseUFyZ3VtZW50czsKICAgICAgICAgaWYgKCFy
ZXBseUFyZ3VtZW50cykKICAgICAgICAgICAgIHJldHVybiBTZW5kU3luY1Jlc3VsdCB7IH07CkBA
IC0yMjMsNyArMjIzLDcgQEAgaW5saW5lIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4pCiAgICAgYXV0byByZXN1bHQg
PSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKICAgICBVTlVTRURfVkFSSUFCTEUocmVzdWx0KTsK
IH0KLWlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmUoVGltZW91dCB0aW1lb3V0KQogewogICAgIENsaWVudExpbWl0IGNs
aWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2Fj
cXVpcmUpOwogICAgIC8vIFRoaXMgd291bGQgbWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBh
ZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCkBAIC0yNTMsNyArMjUz
LDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1pbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbChUaW1lb3V0IHRpbWVvdXQpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKFRpbWVvdXQgdGltZW91dCkKIHsKICAgICAvLyBUaGlz
IHdvdWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBp
cyBhIHByb2dyYW1taW5nIGVycm9yLgogICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVk
LCB3ZSBvbmx5IGFzc2VydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKaW5kZXggMDIxMDJmODIyNmQ5Mzc0YTZkNjhhYjA3
MjNlOWVlYjk5MzE3YjcwNS4uZGM2NTU4NjYyNWRmYWE0NjQ4NTNmNjBjZDU5OThkZGI2YmQyYTcz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHAKQEAgLTc3LDEzICs3NywxMyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9j
bGllbnRXYWl0U2VtYXBob3JlOwogfQogCi1PcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVy
PiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXBjSGFu
ZGxlOwogICAgIGlmICghaXBjSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gc2VtYXBob3JlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vt
YXBob3JlPiBzZW1hcGhvcmU7CiAgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CiAgICAgaWYgKCFz
ZW1hcGhvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKaW5kZXggZTUyY2Fi
Mjk4OGRkOGIzOWZmMzM4MDVmNGQzNjliMWI1NGRlMTFiNy4uYmNjZWMwMTgyZDYwNjE3NDUxYTFm
MzY5ZDc4OWE5YTZiNmU3ODcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3Rk
OjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdU
YWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1Rh
ZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgogICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgY2xpZW50V2Fp
dFNlbWFwaG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDhkM2ZmYjQ3YTIwZWQ5ZmVjMjI0NmYxYTU2NmZm
NGMyYjQwMGZiNjcuLjY5NzEyMDk1ZDk2ZGQ3MzAyNTkyNTQ1ODI4Y2U1YzIyMTVmZTExNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjCiAgICAg
bV93b3JrUXVldWUud2FrZVVwKCk7CiB9CiAKLU9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCitz
dGQ6Om9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCiB7CiAgICAgU2VydmVyTGltaXQgc2VydmVy
TGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5n
VGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDM5ODRhMDc4NTI2NzkzNDEzZjIwMWU1MjUwNzFlNTZkOGY2MTc0MmQu
LjNhOGU3YTU2NWU4NDc3YTQ3MDNkZDY3OTFhNWE2MmI3MzVmM2QxODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1aW50OF90KiBkYXRhOwogICAgICAgICBz
aXplX3Qgc2l6ZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKICAgICBTcGFuIGFjcXVpcmVBbGwo
KTsKIAogICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDVlYzhm
ZjMzY2FkZjlkMmY0ZTYxZjZmYmFjZTJkN2RiZjE4YTU4MWUuLjEyZDg2MzJhOTZlMzM3ZGU1ZDUz
NTJiMTMxMmE3ODM5YmFiNjBmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTU5NSw3ICs1OTUsNyBAQCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAg
cmV0dXJuIElkZW50aWZpZXIobV9pc1NlcnZlciA/IG1fcmVjZWl2ZVBvcnQgOiBtX3NlbmRQb3J0
LCBtX3hwY0Nvbm5lY3Rpb24pOwogfQogCi1PcHRpb25hbDxhdWRpdF90b2tlbl90PiBDb25uZWN0
aW9uOjpnZXRBdWRpdFRva2VuKCkKK3N0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gQ29ubmVj
dGlvbjo6Z2V0QXVkaXRUb2tlbigpCiB7CiAgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCmluZGV4IGJjMDhmNjAxYTcx
NTAwN2U1YTcwNzcwYWI4NTM5ODZkMTU5ZTliYjcuLmU0MWE0OTJlZWJjYmJiMjE0YzdlZGY2NTIx
MGFmN2M3YTczZGU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rh
cndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCkBAIC05OCwxMiArOTgsMTIgQEAgdm9p
ZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgY3JlYXRlU2VuZFJpZ2h0KCk7CiB9CiAKLU9wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3Jl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1h
cGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hY2hTZW5kUmlnaHQgc2Vu
ZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8U2VtYXBob3JlPiB7IHN0ZDo6
aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdodCkgfTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9y
ZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVV
bml4LmNwcAppbmRleCBmYTZjOTM2ZmY4MmYwZDY1Y2ViOTdiZmFhZTI3ODhmOGRkODA0ODZiLi4z
YTg4ZmZjMmRmOTlkZWViZDEyNDI0M2Y5MDc3NWY3OTdjZWMxZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJikgY29uc3QKIHsKIH0K
IAotT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKK3N0ZDo6
b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKIHsKICAgICBy
ZXR1cm4gU2VtYXBob3JlIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKaW5kZXggYzllNjU2ZDI2MTY0NTJmNDY1ZWM0OWMw
YWVjMjQxOGJhMzU3ZTY2MS4uMzZkYTQ0Y2Q0Zjg1ZGVjMDI5YTUzZTNiZmI3MzRlMzkxYTYyMGE0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9y
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9y
ZVdpbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29k
ZUhhbmRsZShlbmNvZGVyLCBkdXBsaWNhdGVkSGFuZGxlKTsKIH0KIAotT3B0aW9uYWw8U2VtYXBo
b3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxT
ZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0
byBoYW5kbGUgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVj
b2Rlcik7CiAgICAgaWYgKCFoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ0luaXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRp
YWxpemF0aW9uLmgKaW5kZXggYzk5OGY5Nzk2MWIxODQ0YTZiMGZhYmZmZGU5Y2MyMDRmNDY3NjI3
ZC4uMjU2YTQ1OTczMThkMTFhZGVkZTA3NWIxZTEyMTVmZDYzY2ZlYWY4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKK3ZvaWQgaW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsK
IFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDQxZDg2ZGMyZGU1YWJhZjlmMGM4MTczOWE5YmEx
ODJlOGUzZGZiZjIuLjg1MWYyNTYzM2VjY2EwODI1YjAyYjRmOGM0NzRlN2JiMWJjNmVkNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nQ2hhbm5lbENvdW50ID0gV1RGX0FSUkFZ
X0xFTkdUSChsb2dDaGFubmVscyk7CiBzdGF0aWMgYm9vbCBsb2dDaGFubmVsc05lZWRJbml0aWFs
aXphdGlvbiA9IHRydWU7CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnko
T3B0aW9uYWw8U3RyaW5nPiBsb2dDaGFubmVsU3RyaW5nKQordm9pZCBpbml0aWFsaXplTG9nQ2hh
bm5lbHNJZk5lY2Vzc2FyeShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9nQ2hhbm5lbFN0cmluZykK
IHsKICAgICBpZiAoIWxvZ0NoYW5uZWxzTmVlZEluaXRpYWxpemF0aW9uICYmICFsb2dDaGFubmVs
U3RyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAppbmRleCBjNDZiNWQ1NjU0ZGE2YjM1MWUyNmM2NzcxZWU1MTlmMjRmOGJjMGRmLi5iZTI1YTkx
MGE0ZjRjMmZkMWFiNzg1YTQ0MjZjNTI1ZjMzMDI5NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgT1Mo
V0lORE9XUykKICAgICAgICAgc3RhdGljIHZvaWQgZW5jb2RlSGFuZGxlKElQQzo6RW5jb2RlciYs
IEhBTkRMRSk7Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxIQU5ETEU+IGRlY29kZUhhbmRsZShJ
UEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SEFORExFPiBkZWNv
ZGVIYW5kbGUoSVBDOjpEZWNvZGVyJik7CiAjZW5kaWYKICAgICBwcml2YXRlOgogICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVkTWVtb3J5OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIE9wdGlvbmFsPGludD4g
bV9maWxlRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRv
cjsKICAgICBib29sIG1faXNXcmFwcGluZ01hcCB7IGZhbHNlIH07CiAjZWxpZiBPUyhEQVJXSU4p
CiAgICAgbWFjaF9wb3J0X3QgbV9wb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAppbmRl
eCAwM2NhMzYzMTc2YmQ4YWUxYmE5ZWIyNTAyYjhjZmI4ZTI3OGY1ZGY2Li5kYTZiYmFlNGY1ZGNh
ZGJhYjA4ZmQ2ZWU0ZTk5N2JlMzc4YWFlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hOjpjYW5Vc2VDb3Jl
UHJlZGljdGlvbigpCiAKIGNvbnN0IHN0cnVjdCBzdm1fbW9kZWwqIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2E6OnNpbmdsZXRvblByZWRpY3Rpb25Nb2RlbCgpCiB7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPHN0cnVjdCBzdm1fbW9kZWwqPiBjb3JlUHJlZGljdGlvbk1vZGVsOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBzdm1fbW9kZWwqPiBjb3JlUHJlZGljdGlv
bk1vZGVsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgYXV0byBwYXRoID0gc3RvcmFnZVBhdGgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaAppbmRleCAwNjk3ZjkxOTlmZjMyZDg0YzYxY2NiMTZi
YTM0YjU0MjQ1MmRiNzMwLi4yMmM2YjY1NmNjYWJiMWY3N2VhOTczZjU0NzQ4Y2FhNmY2YWM3ODU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgog
ICAgIENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21w
bGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwot
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+Jik7Cisg
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRf
TUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOworICAg
IHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOwogI2VuZGlmIC8vIEVOQUJM
RShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KaW5kZXggNzkyZGI3MTA3ZjczMzg2
MjcxNzEwYzI2Mjc2NWJkZGZlNTdiNzFmYS4uMDQ1NDFmZjM1MTg5NWFhOGE3OTlmM2Y0ZThkOWEz
ZTgyMGJmYzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCkBAIC0xOTgsNyArMTk4LDcg
QEAgdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGEKICAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uOm1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNl
c3Npb24oKSBlcnJvcjpuaWxdOwogfQogCi12b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAg
ICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsKQEAgLTIx
Niw3ICsyMTYsNyBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQwogICAgIFtwbGF0Zm9ybURlbGVn
YXRlKCkgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOnBheW1lbnRNZXRob2RVcGRhdGUu
Z2V0KCldOwogfQogCi12b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYgcmVzdWx0KQordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6
Y29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQogewogICAgIEFTU0VSVChwbGF0Zm9ybURl
bGVnYXRlKCkpOwogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gdG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKHJlc3VsdC0+c3RhdHVzKSA6IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNTdWNjZXNzOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yCiAg
ICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOnN0YXR1cyBlcnJv
cnM6ZXJyb3JzLmdldCgpXTsKIH0KIAotdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJiB1cGRhdGUp
CiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsK
QEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZQogICAgIFtwbGF0Zm9y
bURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c2hpcHBpbmdDb250
YWN0VXBkYXRlLmdldCgpXTsKIH0KIAotdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsK
ICAgICBBU1NFUlQocGxhdGZvcm1EZWxlZ2F0ZSgpKTsKICAgICBpZiAoIXVwZGF0ZSkgewpAQCAt
MjU4LDcgKzI1OCw3IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViCiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4m
JiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1
cGRhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1v
cnlDb2NvYS5jcHAKaW5kZXggOGRmNjY4ZDBlMzAzNWYwMmY0OWYyYmU2YTFlODczNzBhNzY0ZTlk
NC4uNTBjZjZjYmQxYzdjNGQwNzU3OTgyYmFlZWJjMmI1ZjRjYWI4NDcyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgc3RhdGljIGludCB0b1ZNTWVtb3J5TGVkZ2VyKE1lbW9yeUxlZGdlciBtZW1v
cnlMZWRnZXIpCiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IHNh
ZmVSb3VuZFBhZ2Uoc2l6ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzYWZlUm91bmRQYWdlKHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCByb3VuZGVkU2l6
ZTsKICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhzaXplLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KFBBR0VfTUFTSyksICZyb3VuZGVkU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRleCAxNWI5ZTQyNTY0MjVkNzY4ZGE0YWI5NTQ5
ODNhZmI2YTE2NDNhOTkwLi5jNTUxZmRkMmZmODIwNjNkMWY0ZGY2NzRmNDVmMGQwNjI3ZGNmZjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAK
QEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBnZXREdXBsaWNhdGVkSGFuZGxlKEhBTkRM
RSBzb3VyY2VIYW5kbGUsIERXT1JEIHNvdXJjZVBJRCwgSEFORExFJiBkdQogICAgIHJldHVybiBz
dWNjZXNzOwogfQogCi1PcHRpb25hbDxIQU5ETEU+IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNv
ZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxIQU5ETEU+IFNo
YXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNv
dXJjZUhhbmRsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCA4ZjEzMTdiYzg4NTNmZGVhZTIyNzZkMDc4Yzk4MWQ1ZTZlMjJjZmM1Li4zMWU0OTU3ZWFhYzc0
OGE1ZmIxNzc0Y2QxMzNjYzA3Y2NlZjBhYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTE0Myw4ICsxNDMsOCBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVy
X3R5cGUodHlwZSwga2luZCk6CiBkZWYgcmVwbHlfdHlwZSh0eXBlKToKICAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgogICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+JzoKLSAgICAgICAgcmV0dXJuICdPcHRpb25hbDxJUEM6OkRhdGFSZWZl
cmVuY2U+JworICAgIGlmIHR5cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPic6CisgICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JwogICAgIHJldHVybiB0eXBlCiAKIApAQCAtNjAxLDkgKzYwMSw5IEBAIGRlZiBj
bGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdFeHBlY3Rl
ZCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9FeHBlY3RlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSGFzaE1hcCc6IHsnaGVh
ZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyci
QXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdIYXNoU2V0JzogeydoZWFkZXJzJzogWyc8
d3RmL0hhc2hTZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENv
ZGVycy5oIiddfSwKLSAgICAgICAgJ09wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlv
bmFsLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdzdGQ6
Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0aW9uYWw+J10sICdhcmd1bWVudF9jb2Rlcl9o
ZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7
J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVh
ZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdSZWZQdHInOiB7J2hlYWRlcnMnOiBb
Jzx3dGYvUmVmQ291bnRlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LApAQCAtOTA3LDcgKzkwNyw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1l
c3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3Ig
eCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFy
YW1ldGVycykKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRl
cnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4g
JXM7XG4nICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90
eXBlKHgudHlwZSksIHgubmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBkZWNvZGVyID4+ICVzO1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGlmICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
XG4gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAg
ICAgcmV0dXJuO1xuICAgIH1cbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKCcpCkBAIC0xMTI4LDcgKzExMjgsNyBAQCBkZWYg
Z2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgogCiAKIGRl
ZiBnZW5lcmF0ZV9qc192YWx1ZV9jb252ZXJzaW9uX2Z1bmN0aW9uKHJlc3VsdCwgcmVjZWl2ZXJz
LCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF90eXBlLCBwcmVkaWNhdGU9bGFtYmRhIG1lc3NhZ2U6
IFRydWUpOgotICAgIHJlc3VsdC5hcHBlbmQoJ09wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gJXMoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVy
JiBkZWNvZGVyKVxuJyAlIGZ1bmN0aW9uX25hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RkOjpv
cHRpb25hbDxKU0M6OkpTVmFsdWU+ICVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTWVzc2FnZU5hbWUgbmFtZSwgRGVjb2RlciYgZGVjb2RlcilcbicgJSBmdW5jdGlvbl9uYW1l
KQogICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3aXRj
aCAobmFtZSkge1xuJykKICAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgpAQCAtMTE2MSw3
ICsxMTYxLDcgQEAgZGVmIGdlbmVyYXRlX2pzX3ZhbHVlX2NvbnZlcnNpb25fZnVuY3Rpb24ocmVz
dWx0LCByZWNlaXZlcnMsIGZ1bmN0aW9uX25hbWUsIGFyZ3UKIAogZGVmIGdlbmVyYXRlX2pzX2Fy
Z3VtZW50X2Rlc2NyaXB0aW9ucyhyZWNlaXZlcnMsIGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50c19m
cm9tX21lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtdCi0gICAgcmVzdWx0LmFwcGVuZCgnT3B0aW9u
YWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiAlcyhNZXNzYWdlTmFtZSBuYW1lKVxuJyAl
IGZ1bmN0aW9uX25hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RkOjpvcHRpb25hbDxWZWN0b3I8
QXJndW1lbnREZXNjcmlwdGlvbj4+ICVzKE1lc3NhZ2VOYW1lIG5hbWUpXG4nICUgZnVuY3Rpb25f
bmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
d2l0Y2ggKG5hbWUpIHtcbicpCiAgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKQEAgLTEx
OTYsNyArMTE5Niw3IEBAIGRlZiBnZW5lcmF0ZV9qc19hcmd1bWVudF9kZXNjcmlwdGlvbnMocmVj
ZWl2ZXJzLCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudHNfZnJvbV9tCiAgICAgICAgICAgICAgICAg
aWYgYXJndW1lbnQua2luZC5zdGFydHN3aXRoKCdlbnVtOicpOgogICAgICAgICAgICAgICAgICAg
ICBlbnVtX3R5cGUgPSAnIiVzIicgJSBhcmd1bWVudF90eXBlCiAgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50X3R5cGUgPSBhcmd1bWVudC5raW5kWzU6XQotICAgICAgICAgICAgICAgIGlmIGFy
Z3VtZW50X3R5cGUuc3RhcnRzd2l0aCgnT3B0aW9uYWw8JykgYW5kIGFyZ3VtZW50X3R5cGUuZW5k
c3dpdGgoJz4nKToKKyAgICAgICAgICAgICAgICBpZiBhcmd1bWVudF90eXBlLnN0YXJ0c3dpdGgo
J3N0ZDo6b3B0aW9uYWw8JykgYW5kIGFyZ3VtZW50X3R5cGUuZW5kc3dpdGgoJz4nKToKICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRfdHlwZSA9IGFyZ3VtZW50X3R5cGVbOTotMV0KICAgICAg
ICAgICAgICAgICAgICAgaXNfb3B0aW9uYWwgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICAgICAgeyIlcyIsICIlcyIsICVzLCAlc30sXG4nICUgKGFyZ3VtZW50
Lm5hbWUsIGFyZ3VtZW50X3R5cGUsIGVudW1fdHlwZSBvciAnbnVsbHB0cicsICd0cnVlJyBpZiBp
c19vcHRpb25hbCBlbHNlICdmYWxzZScpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9wYXJzZXJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3BhcnNlcl91bml0dGVzdC5weQppbmRleCBmODZlZDgxZDVjNzY5MTMyYjhkNDQ0OWRkNDgx
NjdiOTNkMjIyNjA0Li5lOTVjM2VjOGYzNGE0ODcyYTYxMDIzNmE1OGM4ZWMxMjMzYWZmNWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5weQpA
QCAtMjkwLDcgKzI5MCw3IEBAIF9leHBlY3RlZF9tb2RlbF90ZXN0X3dpdGhfc3VwZXJjbGFzcyA9
IHsKICAgICAgICAgICAgICAgICAoJ2Jvb2wnLCAndmFsdWUnKSwKICAgICAgICAgICAgICksCiAg
ICAgICAgICAgICAncmVwbHlfcGFyYW1ldGVycyc6ICgKLSAgICAgICAgICAgICAgICAoJ09wdGlv
bmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4nLCAnb3B0aW9uYWxSZXBseScpLAorICAgICAgICAg
ICAgICAgICgnc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JywgJ29wdGlvbmFs
UmVwbHknKSwKICAgICAgICAgICAgICksCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IChOb25l
KSwKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCAw
ODZhZDk5ZmFmNTMxMTEyNGQ2MGVjMjg3MTk1NzY1YWMyYWNkZGY1Li4xM2JhMzdjZjBhYmNlYzE1
MmM1NjNiMWE1MWU4ZTk5NDNkNzY0ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMuY3BwCkBAIC04MCw3ICs4MCw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1PcHRpb25hbDxK
U0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIHN3aXRjaCAobmFtZSkgewogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19Mb2FkVVJMOgpAQCAtMjU1LDcgKzI1NSw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
anNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1l
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBq
c1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxKU0M6
OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE1lc3NhZ2VOYW1lIG5hbWUsIERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
c3dpdGNoIChuYW1lKSB7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTI5MCw3ICsyOTAs
NyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLU9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50
RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1
bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1l
IG5hbWUpCiB7CiAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CkBAIC01OTIsNyArNTkyLDcgQEAgT3B0aW9uYWw8VmVj
dG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVz
c2FnZU5hbWUgbmEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0
b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25z
KE1lc3NhZ2VOYW1lIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0
aW9uPj4gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkK
IHsKICAgICBzd2l0Y2ggKG5hbWUpIHsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xh
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3VwZXJjbGFzcy5tZXNzYWdlcy5pbgppbmRleCA1NTRhYjAxYWE2MDMzNGVhNzg5ZTFlODhj
NGM4NWIxMTExMzk4NmU2Li42M2M2YjBmYmQ2M2FjMjYyNmE3NTY1NDc0NGUzOTU0YzE0OTNhNGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3VwZXJjbGFzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzcy5tZXNzYWdlcy5pbgpAQCAtMjksNSArMjksNSBAQCBt
ZXNzYWdlcyAtPiBUZXN0V2l0aFN1cGVyY2xhc3MgOiBXZWJQYWdlQmFzZSB7CiAgICAgVGVzdEFz
eW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKGludCB2YWx1ZSkgLT4gKGJvb2wgZmxhZykgQXN5bmMg
V2FudHNDb25uZWN0aW9uCiAjZW5kaWYKICAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFy
YW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0
aW9uYWxSZXBseSkgU3luY2hyb25vdXMKKyAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wg
dmFsdWUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxS
ZXBseSkgU3luY2hyb25vdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCA2ZDMzMGJlNDRiYTg4MGE3MzAzY2Y2NWJkNWYwOTU1Yjc2YTY1Y2Zh
Li40NTc1ZTc5ZjYzNWQ2MTBkY2E2ZjQ5MzYwYTM5ZGFhOTg3NmFjMzM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3Nh
Z2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBUZXN0V2l0aFN1cGVyY2xhc3MgewogCiB2b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CiAgICAgZGVjb2Rl
ciA+PiByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC05MCwxNCArOTAsMTQgQEAgdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVAKIAogdm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZsYWc7CiAgICAgZGVjb2RlciA+PiBmbGFnOwogICAgIGlm
ICghZmxhZykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FuY2Vs
UmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiYgZW5jb2QKIAogdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBPcHRpb25hbDxib29sPiBmbGFnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZmxhZzsKICAgICBkZWNvZGVyID4+IGZsYWc7CiAgICAg
aWYgKCFmbGFnKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgVGVzdFN5bmNNZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjCiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1Jl
cGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6
OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlv
bmFsUmVwbHkpCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKIHsK
ICAgICBlbmNvZGVyLmdldCgpIDw8IG9wdGlvbmFsUmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5o
CmluZGV4IDNkZjFjNjhlOTc2YjE5MjU1YjNmZDJiODNkNzFiYjg3MWUwYWQ1ZTEuLjk5YjQ1NjI4
NmU4YTEyZThiYTEzOTU4ODYwMjg3MWUyN2RhM2M2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VzLmgKQEAgLTIxNiw5ICsyMTYsOSBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
VGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJL
aXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
PjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYg
b3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9u
YWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxzdGQ6Om9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4+OwogICAgIGV4
cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKICAgICAgICAgOiBtX2Fy
Z3VtZW50cyh2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlc1Jl
cGxpZXMuaAppbmRleCA0ODIyZTZjZDZhOWY1ZWFmZWYwMDFlYTExNjRiZGVhYWQ2ZTAyMzgyLi4y
M2NiZjQwZjYxYjIxNmNlOTc2N2IxMzU5N2Y2MGNjZjZlNmU5YzAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2Vz
UmVwbGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgVGVz
dEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBmbGEKIAogdXNpbmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90IHJlcGx5KT47CiAKLXVzaW5nIFRlc3RTeW5jaHJv
bm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKK3VzaW5nIFRl
c3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBs
eSk+OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN1cGVyY2xhc3MKIH0gLy8gbmFtZXNwYWNl
IE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUdy
b3VwSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5k
bGUuY3BwCmluZGV4IGM0MTg4MDI3M2YyNGMyZGE3YzNjMDM1ZmE3MTJmZjY0N2Q3NDllYTUuLjY0
ZTAwZGE5ZjY5OWU4OTYyZGNkNWM3NDYwMjkxYjA3MmFkMzVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgUGFnZUdyb3VwSGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogCiBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VH
cm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oldl
YlBhZ2VHcm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdl
R3JvdXBEYXRhOwogICAgIGlmICghd2ViUGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGFj
YTc1NzUxNTMxNWM5YWM0YzQ0MzZhNDQ0OTc4MzZkM2Q5NGQ0NjEuLjljYjg4NzJjYzZhZDU5Zjc5
OTg3YmNkYTRiMDBmOTI5MTYzYWVjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
UGFnZUhhbmRsZS5jcHAKQEAgLTYyLDEyICs2MiwxMiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBP
cHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHBhZ2VQcm94eUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJ
RDsKICAgICBkZWNvZGVyID4+IHBhZ2VQcm94eUlEOwogICAgIGlmICghcGFnZVByb3h5SUQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiB3ZWJQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gd2ViUGFnZUlEOwogICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOwogICAgIGlmICghd2ViUGFn
ZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElTZWN1cml0eU9yaWdpbi5oCmluZGV4IDQ3MWJmZDI3Njg0ZDkyYjVlMjYzMjc1NTQ1MTNmN2M4
OTI3ZjgwOTEuLmYxMzkzMDdlYjllN2NjNDBiM2E1YWYwM2JhMmUwNDk3ZGY4ZTY3NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmln
aW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKFdURjo6VVJMKFdURjo6VVJM
KCksIHN0cmluZykpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4g
Y3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhv
c3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmln
aW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFdURjo6U3RyaW5n
JiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4oeyBwcm90b2NvbCwgaG9zdCwgcG9ydCB9
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5
T3JpZ2luUmVmLmNwcAppbmRleCA0YTE3YzI3YzBhYzI5YTk4MjdlMmQ3NzEyNDdjYmQxYzcxOGRj
YThkLi5iMDMyMjVjMzQ3ZGQzNWZkZjRkZjAyNGMxZjZlYjYxMWIwNjVhN2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAt
NTAsNyArNTAsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZQogCiBXS1NlY3VyaXR5T3JpZ2lu
UmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5n
UmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIE9wdGlvbmFsPHVpbnQxNl90PiB2YWxpZFBvcnQ7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gdmFsaWRQb3J0OwogICAgIGlmIChwb3J0ICYm
IHBvcnQgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQogICAgICAgICB2
YWxpZFBvcnQgPSBwb3J0OwogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpLCB2YWxpZFBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMubW0KaW5kZXggMmQ0MDhkODUxMzBiYWMzNzI2NTg2NGJiNmJjNGIxOTRjZTE0OWM3Yy4uZGE2
MWNhZWEwMzNjMzY5OGYxNjU3YzVjODVkYTc3NTkzOGJlMWZkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUGF5bWVudFNldHVwRmVhdHVyZXM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3BsYXRm
b3JtRmVhdHVyZXM7CiB9CiAKLU9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBQYXltZW50
U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZlYXR1cmVzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNBcnJheT4+IGFsbG93ZWRDbGFzc2VzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaAppbmRleCAyOWM1Yjky
ZWU0ODFhMDgzMDM3NDM5OTBkYzQ5MmRkYzI1OTM5ZmE5Li42MGUyNDk4MDgwNzY1MDYzZDAxODc2
NjQ4MGY1YzZiYzIyMzAxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRh
aW5QdHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNl
dHVwRmVhdHVyZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIE5TQXJyYXkgKnBsYXRm
b3JtRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRmVhdHVyZXMuZ2V0KCk7IH0K
ICAgICBvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4o
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4IDUwY2RkYTUxMWJiOGQwMjVhOGMzZjFi
YzBjMjUzMTAxY2FmMzllNDUuLjFhM2E2OTFiODY1ZTMxOTY3YTk0NjIxZGQzNDdjMWY0NWExNTFh
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CiB9CiAKLU9wdGlvbmFsPFBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gYWxsb3dl
ZENsYXNzZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bldlYktpdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbldlYktpdC5oCmluZGV4IDM0ZTlhOTU1YWNlODVmZTg2MWIzODU5YmY0ZDQ2ZmI3
YmE1Y2I1ZmMuLmMwZTU1ZThiMzYxNmQ0MjZmNmNhMWU1NzdmYTBkMzFiNzY5NjZiNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50
U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cENv
bmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgUEtQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmlu
ZGV4IDkwNWRlYzM1Y2RlZTc4NDA1MWQ4YjcxZjViZDYxMDkyMzc5NWJiMzIuLjY5YjcwOGQ2Mjk1
YmEwYWZkZGQ2MDgwZjMwNzZmOTIzNDc3ZjE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZQogICAgIG1fbWVyY2hh
bnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6VmFsaWRhdGlvbkNv
bXBsZXRlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0
ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5
bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpJZGxlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvCiAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBheW1lbnQgaGFzIGJlZW4gY2FuY2VsZWQgYWxy
ZWFkeS4KICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSkKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5U
X01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0
ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8v
IEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5
LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVD
aGFuZ2UoT3B0aW9uYWw8V2ViQ29yCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1F
TlRfTUVUSE9EX01PREUpCiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQ+JiByZXN1bHQpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpj
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0
aGF0IHRoZSBwYXltZW50IGhhcyBiZWVuIGNhbmNlbGVkIGFscmVhZHkuCiAgICAgaWYgKCFjYW5D
b21wbGV0ZVBheW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDJjZDM5ZDc1NDA2ZTI0
M2NiMjA1OTg1MWRiOGZkYmNhZTQxYzAzODYuLmFiN2RiOGZiYzhlM2M0MWIzMTM0Y2MxZDFkMmE3
Mjg0NjY4NDBkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMTMxLDEzICsxMzEsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJD
b3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RV
cGRhdGU+JiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxl
UGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsK
KyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
TW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBk
YXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKTsKICNl
bmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBj
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0PiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYpOwog
ICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKTsKIApAQCAtMTU5LDIwICsxNTksMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIHBs
YXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxl
dGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVBheW1lbnRN
ZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBk
YXRlPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYp
OworICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKKyAg
ICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRl
UGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZT4mJik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1l
dGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRo
b2RNb2RlVXBkYXRlPiYmKTsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVU
SE9EX01PREUpCi0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+Jik7CisgICAgdm9p
ZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKICAgICB2b2lkIHBsYXRmb3JtSGlk
ZVBheW1lbnRVSSgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxQS1BheW1l
bnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIENsaWVudCYgbV9jbGll
bnQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRpb25J
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0
aW9uSUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhp
bmcncyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGM4NzdkMmQxZmQ0NzIyMTFmYzA1ZWY0N2YyOWU0NmQ1MWE1NzAxYWQuLjI3NDBjOTFmMTIx
YzFjMzEyOGY1NzBhOTllMzEyYzYxOGZhMjJlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiwxMyArMzIsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKICAgICBTaG93UGF5bWVudFVJKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFN0cmluZyBvcmlnaW5hdGluZ1VS
TFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKLSAgICBDb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGU+IHVwZGF0ZSkKLSAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gdXBk
YXRlKQotICAgIENvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IHVwZGF0ZSkKKyAgICBDb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4gdXBkYXRlKQorICAgIENvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
IHVwZGF0ZSkKKyAgICBDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IHVwZGF0ZSkKICNpZiBFTkFC
TEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgQ29tcGxldGVQYXltZW50TWV0
aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiB1cGRhdGUpCisgICAgQ29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+IHVwZGF0
ZSkKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAg
Q29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4gcmVzdWx0KQorICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFi
b3J0UGF5bWVudFNlc3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOGQ3YjVjMzMzNzEwYTZjMmUwNmNmNDJkNzIz
NWZkMTIwNTM2YmYzMC4uNzJhNGZhMWIyZjc5YjczYjA3YjFiMmIyMDY5MDI4MWYzMDNmODhhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKIH0KIAotT3B0aW9uYWw8UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+
PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
Y29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCA3ZTJkZmU2NDZm
MjQxYTJkMjZkZWQxZDNiOTg1NGQzMTMxNjM0NGMyLi4zNzQ1YzBlMDMzNTZjZjhmOWNmNzUyMTcy
OWY5NjgyYTI4MmY3MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQogewogICAgIG1f
YXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50U2Vzc2lvbihyZXN1bHQpOwog
fQpAQCAtMjgyLDI0ICsyODIsMjQgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3IKICAgICBtX2F1
dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1lbnRN
ZXJjaGFudFNlc3Npb24pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVw
ZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihP
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJiB1cGRhdGUp
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBp
bmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRl
ci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVw
ZGF0ZSkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVu
dE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
TW9kZVVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBt
X2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uo
V1RGTW92ZSh1cGRhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDc1ZjIy
ODNlNWQzMjA1YjlhMmFiMDA0YjdjMWQ2ZTEwN2ZjMjlmNWUuLmUzZmVmMmExNWY5MzdhYTE4YmM3
MTA5MjRlOTE4NjM1NzNhZTNhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTIx
LDcgKzEyMSw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgaWYgKHNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0
b3BPcmlnaW5EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BP
cmlnaW5EYXRhOwogICAgIGlmICh0b3BPcmlnaW4pCiAgICAgICAgIHRvcE9yaWdpbkRhdGEgPSAq
dG9wT3JpZ2luOwogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBwYWdlSUQs
IHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5
VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcywgY2hhbGxlbmdlSUQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKaW5kZXggYjgxOGMwN2I3MmU3MWRmZTA4
YTRjYWJiNmJhMzM1M2I4ZTFlMmNlYy4uOTQ4Njk3ZDdhOTFiNTQ2MjhiNDE3NzQ4YjQ5MmVmYTFm
MjgxMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnNodXREb3duKCkKICAgICB0
ZXJtaW5hdGUoKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gQXV4aWxpYXJ5UHJvY2Vzczo6Y3JlYXRlSVBDQ29u
bmVjdGlvblBhaXIoKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBBdXhpbGlhcnlQcm9jZXNzOjpjcmVhdGVJUEND
b25uZWN0aW9uUGFpcigpCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBD
OjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJv
Y2Vzcy5oCmluZGV4IDI3MGM2NjlkYzFhNjJmMDA5ZDM3OWViNGM3M2ZhM2M3OTE5NzdlYmYuLmVk
NTIxYmY1ZGVhZTY5MTkxZmE1ZTkzMmQ0OTY2YThmMmM4MWI3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVtb3J5UHJlc3N1cmVFdmVudChib29sIGlzQ3JpdGljYWwpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3JlYXRlSVBDQ29ubmVjdGlvblBhaXIoKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRPdmVycmlkZVF1YXJhbnRpbmUoKSB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xNjUsNyArMTY1LDcgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogICAgIFN0cmluZyBjbGllbnRJZGVudGlmaWVyOwog
ICAgIFN0cmluZyBjbGllbnRCdW5kbGVJZGVudGlmaWVyOwogICAgIHVpbnQzMl90IGNsaWVudFNE
S1ZlcnNpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nl
c3NJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YTsKICAgICBXZWJDb3JlOjpBdXhpbGlhcnlQcm9jZXNzVHlwZSBwcm9j
ZXNzVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAppbmRleCBlOGZjZmRjYWNhNzNhMDI2
NTQzNmNlMzdiYjU0OTMxYzMxNmM3YzQ2Li4wYWQzMjEzZjE3ZjQwZTkwOGRiNmM2ZTRlYzk1NzE4
ZTdmZjJmMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC04MSw5ICs4MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgZW5jb2RlciA8PCBtX2lkOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDYWxsYmFja0lEPiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxDYWxsYmFja0lEPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKaW5k
ZXggNzExZGZiZTYwMjViOWI0NzBiODk1OWY4YjJmNWYzZDg1NmIyOTRjZS4uNTBkNDA5NmY3MTRj
YWU0ZGM4MWYzZTZiY2IzZWIyNjI1ZDZlZDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApAQCAtMzIsMTQgKzMyLDE0IEBACiBuYW1l
c3BhY2UgSVBDIHsKIAogdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYsIGlkKTsKLU9wdGlvbmFs
PFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFs
bG93ZWRDbGFzc2VzKTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0
KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB1c2luZyBJc09iakNPYmplY3QgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGU8VCAqLCBpZD46OnZhbHVlLCBUICo+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gdm9pZCBlbmNvZGUoRW5jb2RlciYsIFQgKik7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXRhaW5QdHI8VD4mLCBOU0FycmF5
PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gT3B0aW9uYWw8UmV0YWluUHRyPFQ+
PiBkZWNvZGUoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcyA9IEBbIFtU
IGNsYXNzXSBdKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0
PFQ+PiBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dl
ZENsYXNzKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0PFQ+
PiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5PENs
YXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8
VD4+IGRlY29kZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dlZENsYXNzKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UmV0YWluUHRyPFQ+JiByZXN1bHQsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3MKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWU+Ci1PcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCitz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5TQXJy
YXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZU9i
amVjdChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04Miw3
ICs4Miw3IEBAIE9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWU+Ci1PcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFzcykKIHsKICAgICByZXR1cm4g
ZGVjb2RlPFQ+KGRlY29kZXIsIGFsbG93ZWRDbGFzcyA/IEBbIGFsbG93ZWRDbGFzcyBdIDogQFsg
XSk7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPFQ+PiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0PFU+PgotICAgIHN0YXRpYyBPcHRpb25h
bDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJldGFpblB0cjxVPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gSVBDOjpkZWNvZGU8VT4oZGVjb2Rlcik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggYzU0
YjUzYjZmYjYxNDNiYmVkMGI3MDAxYjE3ZDdhMDkyNDhhMDhlOC4uYzg1MTc0OTcwYjllNjA2YTQw
YjAyNGQyNGU1NjRlNDIyYTkyMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlQXJyYXlJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0FycmF5ICphcnJheSkK
ICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVBcnJheUlu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUFycmF5SW50ZXJuYWwo
RGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQogewogICAg
IHVpbnQ2NF90IHNpemU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKQEAgLTI4MCw3
ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVy
JiBlbmNvZGVyLCBOU0NvbG9yICpjb2xvcikKICAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29s
b3IoY29sb3IpOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikp
CkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJu
YWwoRW5jb2RlciYgZW5jb2RlciwgVUlDb2xvciAqY29sb3IpCiAgICAgZW5jb2RlciA8PCBjb2xv
ckZyb21VSUNvbG9yKGNvbG9yKTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIENvbG9yIGNvbG9yOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29sb3IpKQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVE
YXRhSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgTlNEYXRhICpkYXRhKQogICAgIGVuY29kZXIg
PDwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFJldGFpblB0cjxpZD4+IGRlY29kZURhdGFJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURhdGFJbnRlcm5h
bChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZW5jb2RlRGF0ZUludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TRGF0ZSAq
ZGF0ZSkKICAgICBlbmNvZGVyIDw8IChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVj
b2RlciYgZGVjb2RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+
PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRlUmVmPiBkYXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0ZSkpCkBAIC0zNjYs
NyArMzY2LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRGljdGlvbmFyeUludGVybmFsKEVuY29kZXIm
IGVuY29kZXIsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKICAgICB9CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEaWN0aW9uYXJ5SW50ZXJuYWwoRGVjb2RlciYg
ZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlvbmFyeUludGVybmFsKERlY29kZXImIGRl
Y29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICB1aW50NjRfdCBz
aXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBD
b2NvYUZvbnQgKmZvbnQpCiAgICAgZW5jb2RlKGVuY29kZXIsIGZvbnQuZm9udERlc2NyaXB0b3Iu
Zm9udEF0dHJpYnV0ZXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVj
b2RlRm9udEludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZXRhaW5QdHI8aWQ+PiBkZWNvZGVGb250SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0cmlidXRlczsKICAgICBpZiAoIWRlY29k
ZShkZWNvZGVyLCBmb250QXR0cmlidXRlcykpCkBAIC00MTcsNyArNDE3LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGVuY29kZU51bWJlckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TTnVtYmVy
ICpudW1iZXIpCiAgICAgZW5jb2RlciA8PCAoX19icmlkZ2UgQ0ZOdW1iZXJSZWYpbnVtYmVyOwog
fQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU51bWJlcklu
dGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0
YWluUHRyPGlkPj4gZGVjb2RlTnVtYmVySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG51bWJlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG51bWJlcikpCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2VjdXJlQ29k
aW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5TT2JqZWN0LCBOU1NlY3VyZUMKICAg
ICBlbmNvZGVyIDw8IChfX2JyaWRnZSBDRkRhdGFSZWYpW2FyY2hpdmVyIGVuY29kZWREYXRhXTsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
IHsKICAgICBBU1NFUlQoYWxsb3dlZENsYXNzZXMgJiYgYWxsb3dlZENsYXNzZXMuY291bnQpOwog
ICAgIGlmICghYWxsb3dlZENsYXNzZXMgfHwgIWFsbG93ZWRDbGFzc2VzLmNvdW50KQpAQCAtNDgw
LDcgKzQ4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVTdHJpbmdJbnRlcm5hbChFbmNv
ZGVyJiBlbmNvZGVyLCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZzsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVTdHJpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlu
bGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVN0cmluZ0ludGVybmFsKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmc7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBlbmNvZGVVUkxJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAq
VVJMKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdlIENGVVJMUmVmKVVSTDsKIH0KIAotc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVVUkxJbnRlcm5hbChEZWNvZGVy
JiBkZWNvZGVyKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZVVSTEludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShVUkwpKQpAQCAtNTUyLDcgKzU1Miw3
IEBAIHZvaWQgZW5jb2RlT2JqZWN0KEVuY29kZXImIGVuY29kZXIsIGlkIG9iamVjdCkKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2Rl
T2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29k
ZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBib29sIGlzTnVsbDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKaW5kZXggNzM2ZjkwZTEwOGE2MGY3ZTU1
YzlkODgxNDE3N2NjNTYxNjNiYWJjMC4uYTA4ODhmOTE4OTZiNDk1ZGE4MmY5NzBiODZhZDUxMGNm
NWFkM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdCB7
CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdHM7CiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0YURldGVjdGlvblJlc3Vs
dD4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERhdGFE
ZXRlY3Rpb25SZXN1bHQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IDRl
NjA4YjhhYWY1Njg5YjFjMWYwMmRkM2Q3NmE2ZGE2MTk0ZDJmMDMuLjlmOGNjMGM1OTI0NTczYzQx
MjZjMmRhMzFhYzUyODIzODhhN2RjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIERhdGFE
ZXRlY3Rpb25SZXN1bHQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCByZXN1bHRzOwogfQogCi1PcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBE
YXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2Rl
PE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0
Q2xhc3MoKSBdKTsKICAgICBpZiAoIXJlc3VsdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaAppbmRleCA5YWMwNTEyZDBkNGU3
ZTljNGZmZTc5MTA0NDk1NGY1ZGI4MWNlMTQ4Li44YjU4OGRkZTFhZGRhZTRlNzU3YzA4MTVjOWM2
MDlmZWQ4MmIxNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rl
ZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXV4aWxpYXJ5
UHJvY2VzczsKIAogYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Np
b24oKTsKIGJvb2wgaGFzUHJvaGliaXRlZFVzYWdlU3RyaW5ncygpOwotT3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIGJvb2wg
aXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKTsKIHZvaWQgZGV0ZXJtaW5lSVRQ
U3RhdGUoKTsKIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmluZGV4IGYz
MWJjYTFhMDJjMTNhZGY1OTUyN2NjN2JmZGZjY2FhM2Y2ZDJhOWQuLjI5YThkMjhhZjE4ODAwZDI3
MjdhMGI0ZmY5YzUwNDU1ODZmMzA4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogICAgIHJldHVybiBidW5k
bGVJRCA9PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zIHx8IGJ1bmRsZUlEID09
ICJjb20uYXBwbGUuV2ViS2l0LldlYktpdFRlc3RSdW5uZXIiX3MgfHwgYnVuZGxlSUQgPT0gIm9y
Zy53ZWJraXQuV2ViS2l0VGVzdFJ1bm5lckFwcCJfczsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25z
dCBTdHJpbmcmIGJ1bmRsZUlEKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSUQpCiB7CiAgICAgaWYgKGJ1bmRsZUlELmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0
VGV4dE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9w
dGlvbnMuY3BwCmluZGV4IDhmMGI3Njk2ZGM0YWZlMjA2YzcxY2UzZTNjZDlhMmVjMTc0YjE0MzYu
LmM1ZDM2NzJmMThhMTVlNDI4Y2VjNmRhNDU4ZTNjOWMwNTA3NmUyZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2UKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuZWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6Okluc2VydFRleHRP
cHRpb25zPiBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9u
cz4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaAppbmRleCA2MzZl
OTA0ZTMzMjk5NjQ3YTRkOTRjNzc0MzI3YzU4ZjZjZjgyYzM2Li43MmZmZDM1MmZlNzNhM2E2NTQy
NDQ2NjFhYTdiOGEyMDUwOTA0MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0luc2VydFRleHRPcHRpb25zLmgKQEAgLTQzLDYgKzQzLDYgQEAgc3RydWN0IEluc2VydFRleHRP
cHRpb25zIHsKIG5hbWVzcGFjZSBJUEMgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zJik7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9M
b2FkUGFyYW1ldGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTG9hZFBh
cmFtZXRlcnNDb2NvYS5tbQppbmRleCA2ZmY4Mzc4ZGJiNzQ4ZjNkOTAwM2QwYzNiNzgwMWY1YTRi
NDUxNmMzLi5lMjYzZmE4M2ExYTM2OGRmYjE4YTBmYTY5NmQ5MWY0MzdhY2Q2ODc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAg
LTQ5LDIwICs0OSwyMCBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBwYXJhbQogICAgIGlmICghSVBDOjpk
ZWNvZGUoZGVjb2RlciwgcGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbmV0d29ya0V4dGVuc2lvblNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gbmV0d29ya0V4dGVuc2lvblNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghbmV0d29ya0V4dGVuc2lvblNhbmRib3hF
eHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5u
ZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpuZXR3b3Jr
RXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250
ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxl
OwogICAgIGRlY29kZXIgPj4gY29udGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBwYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjb250
ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
PiBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGZyb250
Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghZnJvbnRib2FyZFNlcnZpY2VF
eHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCAxMTBjM2Yx
ZmQyYjBjOGZhMzU0YTVhNzMzMzRjZDVhYjljMDIyNzZhLi5jYTM3ODBiYzg2ZjljMGQ2MjA4ODI3
MjJhZDkzMmMzZmQzMzMyNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4
dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBzdGQ6Om51bGxv
cHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBTYW5kYm94RXh0
ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRi
b3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBz
dGQ6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBT
YW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKICAgICB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1wbCB7IG5ldyBTYW5kYm94RXh0ZW5zaW9u
SW1wbChwYXRoLCB0eXBlLCBhdWRpdFRva2VuLCBmbGFncykgfTsKICAgICAgICAgaWYgKCFpbXBs
LT5tX3Rva2VuKQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIGNoYXIqIHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncykKKyAgICBjaGFyKiBz
YW5kYm94RXh0ZW5zaW9uRm9yVHlwZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0
aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncykKICAgICB7CiAgICAgICAgIHVp
bnQzMl90IGV4dGVuc2lvbkZsYWdzID0gMDsKICAgICAgICAgaWYgKGZsYWdzICYgU2FuZGJveEV4
dGVuc2lvbjo6RmxhZ3M6Ok5vUmVwb3J0KQpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MpCisg
ICAgU2FuZGJveEV4dGVuc2lvbkltcGwoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9w
dGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MpCiAgICAgICAgIDogbV90b2tl
biB7IHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKHBhdGgsIHR5cGUsIGF1ZGl0VG9rZW4sIGZsYWdz
KSB9CiAgICAgewogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSAwOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFuZGxlPgorYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCkBAIC0yMTks
MTYgKzIxOSwxNiBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
IH0KIAotT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsKLSAgICAgICAgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFu
ZGxlOwogICAgICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGEKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBIYW5kbGUmIGhhbmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2Jvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhh
bmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwogICAgIApAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwg
T3B0aW9uYWw8CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0
IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
YXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK1NhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNv
bnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewogICAgIHJldHVy
biBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBGdW5jdGlvbjxib29sKGNvbnN0
IEFTQ0lJTGl0ZXJhbCYsIEhhbmRsZSYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJ
SUxpdGVyYWwmIHNlcnZpY2UsIEhhbmRsZSYgaGFuZGxlKSB7CiAgICAgICAgIGlmICghU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2Vu
LCBoYW5kbGUsIGZsYWdzKSkgewpAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgs
IGF1ZGl0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzcywg
T3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpCitib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
cklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlvS2l0Q2xhc3MsIHN0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpCiB7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsK
IApAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQorU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhpb2tpdENsYXNzZXMsIEZ1bmN0aW9u
PGJvb2woY29uc3QgQVNDSUlMaXRlcmFsJiwgSGFuZGxlJik+KFthdWRpdFRva2VuLCBmbGFnc10g
KGNvbnN0IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcywgSGFuZGxlJiBoYW5kbGUpIHsKICAgICAg
ICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5z
aW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGhhbmRsZSwgZmxhZ3MpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmluZGV4IDQ1NzZiMWY3ZmUxYWM2ZTE0Zjkx
MGE4NDU4NTJkZTRkYTY1YTllNjAuLjk1ODdhMmNlZjJlYmVlZGFmM2RjZGIwYmZjMzFiODBjZTgw
ZWIwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCkBAIC00
NCw3ICs0NCw3IEBAIHN0cnVjdCBYUkRldmljZUluZm8gewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQppbmRleCBiNzY3M2JkMjdlZjAwOTdkNjEw
NTAzMzk3ZWQ5MjMwZDQ1NjJlYTU4Li5jZjA0MWRiOTE5MmJkNTc2MGY5NjU3ZWUzZDFjYmVkN2M4
YmIxM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlu
Zm8ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCkBA
IC0zNyw3ICszNyw3IEBAIHZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXM7CiB9
CiAKLU9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IFhSRGV2aWNlSW5mbzo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBYUkRldmljZUluZm8gZGV2aWNl
RmVhdHVyZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5pZGVudGlm
aWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaAppbmRleCA4
MDFjZTE4NTU0ZDFkZTlmZTIwYzAyZTBhMzI3YTFiNDgwYjYxNTBmLi5iZGE2OTQ5MGJlMGU1NmFj
YmQzZTdkOGNkZDgxMDhlZjVlZDg1MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VQcm94eS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0
aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5h
bCB7IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1l
KFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
T3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMy
X3QsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJI
YW5kbGUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkubW0KaW5kZXggNmJhMDJmYTA0ZDljMTBkMjdhYjI4NDQ0ZGM0MTE0
MWMwZWJjZmU5ZS4uNDcwZDQwZjkzMTkyODI1YzNlMGYxOGZmZWVhNjZmYTUyNmU5OGJiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgWFJEZXZpY2VQcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmlj
ZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsCiAgICAgICAgIG1feHJTeXN0ZW0tPnJlcXVl
c3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtWFI6Okxh
eWVySGFuZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qg
d2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQogewogICAgIHJldHVy
biBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBo
ZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCUmVzdWx0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCUmVzdWx0LmNwcAppbmRleCBm
ZWM2NGMzNzA5NzNiZWE5ZjkzNjBhY2FkYmE1YzQ2NTcyYTJkMTczLi5kMDY0ZGFlMWE1OWQ1Zjhl
ZTVhY2IxZTBjZmRhYjFjMjAxMGM2YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwCkBAIC0zOCwxMyAr
MzgsMTMgQEAgdm9pZCBXZWJJREJSZXN1bHQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAKIGJvb2wgV2ViSURCUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJJREJSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJREJSZXN1
bHREYXRhPiByZXN1bHREYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SURCUmVzdWx0
RGF0YT4gcmVzdWx0RGF0YTsKICAgICBkZWNvZGVyID4+IHJlc3VsdERhdGE7CiAgICAgaWYgKCFy
ZXN1bHREYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0Lm1fcmVzdWx0RGF0
YSA9IFdURk1vdmUoKnJlc3VsdERhdGEpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IGhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKICAgICBkZWNvZGVyID4+IGhhbmRsZXM7CiAgICAg
aWYgKCFoYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcAppbmRleCBmNjA2ZmY0YjgxNGVhNjk0ZDliMjczZGY0
YTNjZDQ0OTZiYjE4ZThhLi42YTVjOGU3NjljNjc2MWI0OTc1ZDgwNDI3MDFiYmZmOWU4OTUwMzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RlYnVnZ2FibGVJbmZvRGF0YS5jcHAKQEAgLTUx
LDI5ICs1MSwyOSBAQCB2b2lkIERlYnVnZ2FibGVJbmZvRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRhcmdldElzU2ltdWxhdG9yOwogfQog
Ci1PcHRpb25hbDxEZWJ1Z2dhYmxlSW5mb0RhdGE+IERlYnVnZ2FibGVJbmZvRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRh
PiBEZWJ1Z2dhYmxlSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZT4gZGVidWdnYWJsZVR5cGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBkZWJ1Z2dhYmxlVHlw
ZTsKICAgICBkZWNvZGVyID4+IGRlYnVnZ2FibGVUeXBlOwogICAgIGlmICghZGVidWdnYWJsZVR5
cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+
IHRhcmdldFBsYXRmb3JtTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0UGxh
dGZvcm1OYW1lOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0UGxhdGZvcm1OYW1lOwogICAgIGlmICgh
dGFyZ2V0UGxhdGZvcm1OYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRCdWlsZFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHRhcmdldEJ1aWxkVmVyc2lvbjsKICAgICBkZWNvZGVyID4+IHRhcmdldEJ1aWxkVmVy
c2lvbjsKICAgICBpZiAoIXRhcmdldEJ1aWxkVmVyc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0UHJvZHVjdFZlcnNpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldFByb2R1Y3RWZXJzaW9uOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0UHJvZHVjdFZlcnNpb247CiAgICAgaWYgKCF0YXJnZXRQcm9kdWN0VmVyc2lv
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHRh
cmdldElzU2ltdWxhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdGFyZ2V0SXNTaW11bGF0
b3I7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRJc1NpbXVsYXRvcjsKICAgICBpZiAoIXRhcmdldElz
U2ltdWxhdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAppbmRleCA3YWI3NTdhMzhhYmM4YzdjYzA0ZjZjYWU5
YTJiODQzNGVhMDI3ODYxLi5iNjk2YmQzODNmYjQyZjI2NDg3NzQwY2MyZTMyM2NlYTMzZTZhMDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaApAQCAtNDksNyAr
NDksNyBAQCBzdHJ1Y3QgRGVidWdnYWJsZUluZm9EYXRhIHsKICAgICBzdGF0aWMgRGVidWdnYWJs
ZUluZm9EYXRhIGVtcHR5KCk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAppbmRleCA5YjlmZDYw
YzMxMDQwOWU1NTFkNDczNzI5YWEyMDdkNWFhMTMzNGFmLi5lMWI1YWExYmE1NWRiZjNlZGVjOTRh
NzM2NWM0MTJhZWZkNzdiNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1
bWVudEVkaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdD
b250ZXh0UmVxdWVzdCB7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsKIAotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiB0ZXh0SW5wdXRDb250ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHRleHRJbnB1dENvbnRleHQ7CiB9
OwogCiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dCB7CkBAIC05MCwyMiArOTAsMjIgQEAg
c3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQgewogbmFtZXNwYWNlIElQQyB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6
UmFuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJh
bmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6VGV4dFJlY3RBbmRSYW5nZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0Jik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IDQxYjkyYWI0NjZi
MzYwYWZhYWJiMTAyNjJhYTAyZDY1YjE2ODMyNWEuLjQ5MDEyZjg0MTlhZjVmNWMzNGMwYTI4NWQw
MzU0M2YwOWMzZmVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0
aW5nQ29udGV4dC5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZAog
ICAgIGVuY29kZXIgPDwgcmFuZ2UubGVuZ3RoOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6UmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gQXJndW1lbnRDb2Rl
cjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZSBy
YW5nZTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+OjplbmNvZGUoRW5jCiAgICAg
ZW5jb2RlciA8PCByZWN0LnJhbmdlOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4
dFJlY3RBbmRSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQ6OlRleHRSZWN0QW5kUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2UgcmVjdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjdC5yZWN0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6
UmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdD
b250ZXh0OjpSYW5nZT4gcmFuZ2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTI3LDQxICsxMjcsNDEgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNvZGVyIDw8IGNvbnRleHQudGV4dFJlY3Rz
OwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+IEFyZ3VtZW50
Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD4gQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgY29udGV4
dDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZv
cmU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0
QmVmb3JlOwogICAgIGRlY29kZXIgPj4gY29udGV4dEJlZm9yZTsKICAgICBpZiAoIWNvbnRleHRC
ZWZvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5jb250ZXh0
QmVmb3JlID0gKmNvbnRleHRCZWZvcmU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFRleHQ7
CiAgICAgaWYgKCFzZWxlY3RlZFRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSAqc2VsZWN0ZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEFmdGVyOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEFmdGVyOwogICAgIGRlY29kZXIg
Pj4gY29udGV4dEFmdGVyOwogICAgIGlmICghY29udGV4dEFmdGVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gKmNvbnRleHRBZnRlcjsK
IAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IG1hcmtlZFRleHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBtYXJrZWRUZXh0Owog
ICAgIGRlY29kZXIgPj4gbWFya2VkVGV4dDsKICAgICBpZiAoIW1hcmtlZFRleHQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5tYXJrZWRUZXh0ID0gKm1hcmtlZFRl
eHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBhbm5vdGF0ZWRU
ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gYW5ub3Rh
dGVkVGV4dDsKICAgICBkZWNvZGVyID4+IGFubm90YXRlZFRleHQ7CiAgICAgaWYgKCFhbm5vdGF0
ZWRUZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuYW5ub3Rh
dGVkVGV4dCA9ICphbm5vdGF0ZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVu
dEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHNlbGVj
dGVkUmFuZ2VJbk1hcmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFJhbmdlSW5NYXJr
ZWRUZXh0OwogICAgIGlmICghc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZAogICAgIGVuY29kZXIgPDwgcmVxdWVzdC50ZXh0SW5wdXRDb250ZXh0OwogfQogCi1PcHRp
b25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0PiBBcmd1bWVudENvZGVy
PFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0OwogCkBAIC0xOTgsNyArMTk4LDcgQEAgT3B0aW9uYWw8
V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD4gQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkRvY3VtZW50RWQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QucmVjdCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJD
b3JlOjpFbGVtZW50Q29udGV4dD4+IG9wdGlvbmFsVGV4dElucHV0Q29udGV4dDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+PiBvcHRpb25h
bFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBvcHRpb25hbFRleHRJbnB1dENvbnRl
eHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJbnB1dENvbnRleHQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFu
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAppbmRleCBjNDQ3
OWUxYTYwNDEzODg5NjQ5OWU5NDkxMWU0MTNjZDQzYTliZDdkLi5kNjNkYzUzOWI0N2ZkMTJmNmQy
ZDkyMTdjY2U3NjhiYzY5NjNhZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUm
IGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIGJhc2UpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFu
Z2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGJhc2UpCiB7CiAgICAg
QVNTRVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CiAgICAgV2ViQ29yZTo6
Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5n
ZS5sZW5ndGggfTsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnMKICAg
ICByZXR1cm4gV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgqcGFyYWdy
YXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSk7CiB9CiAKLUVkaXRpbmdSYW5n
ZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitFZGl0aW5nUmFuZ2UgRWRpdGluZ1Jhbmdl
Ojpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDoKICAgICBlbmNvZGVyIDw8IGVkaXRp
bmdSYW5nZS5sZW5ndGg7CiB9CiAKLU9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1
bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1bWVudENvZGVyPFdlYktp
dDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgZWRpdGluZ1JhbmdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5n
ZS5oCmluZGV4IGYxOWI0NDNmMGRjNzE5YTc0ODM1Yzc4Yzc0YjE2NTNkOTQxMWExNDAuLjIwNWZm
MjYxNzcwYjM1ZWJkNWI5NGY4OWM5NzU4MDAwZmQ0OGFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRpbmdSYW5nZS5oCkBAIC00MSw3ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAotLy8gRklYTUU6IFJl
cGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KKy8vIEZJWE1FOiBSZXBs
YWNlIHRoaXMgd2l0aCBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0
aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91
bmQpCkBAIC01OCw4ICs1OCw4IEBAIHN0cnVjdCBFZGl0aW5nUmFuZ2UgewogICAgIC8vIChub3RG
b3VuZCwgMCkgaXMgbm90YWJseSB2YWxpZC4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiArIGxlbmd0aCA+PSBsb2NhdGlvbjsgfQogCi0gICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiB0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOwotICAgIHN0YXRpYyBFZGl0aW5nUmFuZ2UgZnJvbVJh
bmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpF
ZGl0YWJsZVJvb3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiB0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJv
b3QpOworICAgIHN0YXRpYyBFZGl0aW5nUmFuZ2UgZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBFZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAK
ICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogICAgIEVkaXRpbmdSYW5nZShOU1JhbmdlIHJhbmdlKQpA
QCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgRWRpdGluZ1JhbmdlIHsKIG5hbWVzcGFjZSBJUEMgewog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKaW5kZXggODlmZWRlOTdiODA2ZjIzNzMxMWJkY2Y2NDQ5YjkzNjNhNDIwMTVhNS4uZmRkODdl
ZjhmMmIzMDI3MjM3NDczMTI1ZjQxMmFmZjM0ZmMzNTc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RM
YXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxG
b250QXR0cmlidXRlcz4+IG9wdGlvbmFsRm9udEF0dHJpYnV0ZXM7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPj4gb3B0aW9uYWxGb250QXR0cmlidXRlczsK
ICAgICBkZWNvZGVyID4+IG9wdGlvbmFsRm9udEF0dHJpYnV0ZXM7CiAgICAgaWYgKCFvcHRpb25h
bEZvbnRBdHRyaWJ1dGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dG9yU3RhdGUuaAppbmRleCBlMThmZDA3Y2ZlNjNmYTRlZjI5ZmE1M2U1ZjkwMGFlNWI0ZDdiYjA2
Li40ODgwNTM4ZDU2NGQzMWVmMTZmOTNjOTA2N2RjODZjY2VhNzM4NjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUg
ewogICAgICAgICB1aW50NjRfdCBzdXJyb3VuZGluZ0NvbnRleHRTZWxlY3Rpb25Qb3NpdGlvbiB7
IDAgfTsKICNlbmRpZgogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVz
PiBmb250QXR0cmlidXRlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0
cmlidXRlcz4gZm9udEF0dHJpYnV0ZXM7CiAKICAgICAgICAgYm9vbCBjYW5DdXQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIGNhbkNvcHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAppbmRleCAwNzY0ZGE4YTYwZWNi
Yzg4N2UzNTE3MjFlZDUzODI1MTBkYWI1NzBkLi45NjkwNjYxYjUxMzczMzI2OGIyNmRkN2Q5ZjVl
ODJkY2U0MDY1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIE9wdGlvbkl0ZW06OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwYXJlbnRH
cm91cElEOwogfQogCi1PcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVtOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVt
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE9wdGlvbkl0ZW0gcmVzdWx0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDlkMDE2NDlkZTI5
NTg1OWIyMjMwMTI5N2M4NWJiYzE5MmZjZWY0NzIuLjRkYjhlMzUyNDhiODg5MGYxYzIxOWI4YWJj
OGFmMTAwMjZmOGY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmgKQEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IE9wdGlvbkl0ZW0gewog
ICAgIGludCBwYXJlbnRHcm91cElEIHsgMCB9OwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPE9wdGlvbkl0ZW0+IGRlY29kZShJUEM6
OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxPcHRpb25JdGVtPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CiB9OwogCiB1c2luZyBGb2N1c2VkRWxlbWVudElkZW50aWZpZXIgPSB1
aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggOGRjZjdk
NzQ3YjQwODI3NDlmNTE3ZDg5YmMyMTgzYWY5ZThiNDYwNi4uODUxNmY2MjA5MjM1MjE5MjU5OWQz
ZTJmZmIwNDNmYjY1MTNkODgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJh
bWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5j
cHAKQEAgLTM5LDI5ICszOSwyOSBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwYXJlbnRGcmFtZUlEOwogfQog
Ci1PcHRpb25hbDxGcmFtZUluZm9EYXRhPiBGcmFtZUluZm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGcmFtZUluZm9EYXRhPiBGcmFtZUluZm9EYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGJvb2w+IGlz
TWFpbkZyYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNNYWluRnJhbWU7CiAgICAgZGVj
b2RlciA+PiBpc01haW5GcmFtZTsKICAgICBpZiAoIWlzTWFpbkZyYW1lKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiByZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBy
ZXF1ZXN0OwogICAgIGRlY29kZXIgPj4gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdpbjsKICAgICBkZWNvZGVyID4+IHNlY3Vy
aXR5T3JpZ2luOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBp
ZiAoIWZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBw
YXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBh
cmVudEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggZmViODAwNDU1YTdmNDNjNDQxNWU1ODBlYjk2ZjFlYjhl
MDVjZDQ5My4uZjQ5ZjNhMWRlNDEzMDIzMWVhMTE0NmNmMjI5NThlOTg3MDg5MmE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTMgKzM4LDEzIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGcmFtZUluZm9E
YXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBib29sIGlzTWFpbkZyYW1lIHsgZmFs
c2UgfTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW47Ci0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9G
cmFtZVRyZWVOb2RlRGF0YS5oCmluZGV4IDliN2ZiNjUyMTlkOWY5NDc2NGJhNzFkN2I3Y2QxMDcx
OTdmN2FhN2UuLmYzOTFmODcxOTc3ZTAzNjhmODIyNTg2YmQ1NDg5NjNlYjRmZjhiMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaApAQCAtNDEsMTQgKzQxLDE0IEBA
IHN0cnVjdCBGcmFtZVRyZWVOb2RlRGF0YSB7CiAgICAgICAgIGVuY29kZXIgPDwgY2hpbGRyZW47
CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZyYW1lVHJl
ZU5vZGVEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gaW5mbzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGcmFt
ZUluZm9EYXRhPiBpbmZvOwogICAgICAgICBkZWNvZGVyID4+IGluZm87CiAgICAgICAgIGlmICgh
aW5mbykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAotICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+PiBjaGlsZHJlbjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+PiBjaGlsZHJlbjsKICAgICAg
ICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICAgICAgaWYgKCFjaGlsZHJlbikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCmluZGV4IGJiZDIwZTJmNzhjNzg0N2Vl
OTVkODFkZDNmOTI3Njk2MGE5NDQzN2EuLmYwY2JhZWU5ZWFmYmFiYTc2NzQ1ZDA4MDU2ZDM1MDFj
MjMxNWMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycy5oCkBAIC01MSwyMiArNTEsMjIgQEAgc3RydWN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAjaWYgSEFW
RShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgICAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiB3
ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKICAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9j
ZXNzSWRlbnRpdHlUb2tlbjsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAotICAgICAgICBPcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGVMYW5ndWFnZXM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBkZWNvZGVy
ID4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBpZiAoIW92ZXJyaWRlTGFuZ3VhZ2VzKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZv
clRlc3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0
aW5nOwogICAgICAgICBpZiAoIWlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaAppbmRleCBjNWI3ZDE3MTg2
Yjg3MjliY2M5NWE4MDAzNDI1YzY1N2E0MjMwYWRiLi42ZDQyYmViMTAyNmI2MjYxMmY3ZWQxN2Ji
MTU3NjUwYzNjN2ZjNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0
IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIHsKICAgICBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uIHJlYXNvbiB7IEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH07CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdl
QXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTU3LDI0ICs1NywyNCBAQCB2b2lkIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1l
bnRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQcm9jZXNz
V2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBpdGVt
QnVmZmVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gaXRlbUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBpZiAoIWl0ZW1CdWZmZXJJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBvZmZzZXQ7CiAgICAgZGVjb2Rl
ciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBkZXN0aW5hdGlvbkltYWdlQnVmZmVy
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlm
aWVyOwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwUmVh
c29uPiByZWFzb247CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwUmVhc29uPiBy
ZWFzb247CiAgICAgZGVjb2RlciA+PiByZWFzb247CiAgICAgaWYgKCFyZWFzb24pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9H
YW1lcGFkL0dhbWVwYWREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2Ft
ZXBhZERhdGEuY3BwCmluZGV4IDQ3NGE1NDNkMjZiZmM5ZWFkYmIxM2JlNGUwNmIyZjE5YTRjYzc3
ODkuLmZlY2Q2MThlNTJlOWJlNGVhZDg4ZWMwNzkwMjEzMGM0YWIxMzY5N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgR2FtZXBhZERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2luZGV4IDw8IG1faWQgPDwgbV9tYXBwaW5nIDw8IG1fYXhpc1ZhbHVl
cyA8PCBtX2J1dHRvblZhbHVlcyA8PCBtX2xhc3RVcGRhdGVUaW1lOwogfQogCi1PcHRpb25hbDxH
YW1lcGFkRGF0YT4gR2FtZXBhZERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPEdhbWVwYWREYXRhPiBHYW1lcGFkRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBHYW1lcGFkRGF0YSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5tX2lzTnVsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9H
YW1lcGFkL0dhbWVwYWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVw
YWREYXRhLmgKaW5kZXggNzk5MmMxODBhNTMwOWFhYTNiMjA2NTkwMTI0MmEyYTlkZDJiYzQ4MS4u
MWFiYmIzOGQ0MTczOTBlOTczOGMxOTFkMmQwZWM4OTczNDE5NWVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgR2FtZXBhZERhdGEodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IFN0cmluZyYgbWFwcGluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZEdhbWVwYWRWYWx1
ZT4mIGF4aXNWYWx1ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRHYW1lcGFkVmFsdWU+
JiBidXR0b25WYWx1ZXMsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUpOwogCiAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdhbWVw
YWREYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
R2FtZXBhZERhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDlmMGY3MzNhMDBhYjg2MWM4Yzc2NTJmNmQ1MGQxMGM4YTU2NzRjY2Yu
LmUzZGQ4MDFmZDI0MTlmZDhmOTZiMzE1ODM4NmNlMTViOTMzODE3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRh
dGEpCiAKICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKICAgICAgICAgLy8gRm9ybURhdGFSZWZlcmVu
Y2UgZW5jb2RlciAvIGRlY29kZXIgdGFrZXMgY2FyZSBvZiBwYXNzaW5nIGFuZCBjb25zdW1pbmcg
dGhlIG5lZWRlZCBzYW5kYm94IGV4dGVuc2lvbnMuCi0gICAgICAgIE9wdGlvbmFsPElQQzo6Rm9y
bURhdGFSZWZlcmVuY2U+IGZvcm1EYXRhUmVmZXJlbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+IGZvcm1EYXRhUmVmZXJlbmNlOwogICAgICAgICBkZWNv
ZGVyID4+IGZvcm1EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoIWZvcm1EYXRhUmVmZXJlbmNl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODMsNyArODMsNyBAQCBib29sIExvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYg
ZGF0YSkKICAgICAgICAgZGF0YS5yZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhUmVmZXJlbmNl
LT50YWtlRGF0YSgpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBk
YXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVS
TFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+PiB3ZWJzaXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+PiB3ZWJzaXRlUG9saWNpZXM7CiAg
ICAgZGVjb2RlciA+PiB3ZWJzaXRlUG9saWNpZXM7CiAgICAgaWYgKCF3ZWJzaXRlUG9saWNpZXMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIExvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0
YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubG9ja0JhY2tGb3J3YXJkTGlzdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZGVjb2RlciA+PiBjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3Rvcnk7CiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmlu
ZGV4IGRlNTQ5ZTg0NTQ1MGIxOGQ1NGY1NjU5MTNhMzk1NDNjMTczNzMwNjkuLjJmMGRmZDIzMWY1
ZWU2M2FmODUyNzg3MmU1OGIxMzhkYTJmZTdhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuaApAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAg
IFN0cmluZyB1bnJlYWNoYWJsZVVSTFN0cmluZzsKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkxTdHJpbmc7CiAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXM7CiAKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OwogICAgIGJvb2wgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHsgZmFsc2UgfTsKQEAgLTcwLDE1ICs3MCwxNSBAQCBzdHJ1Y3QgTG9hZFBh
cmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29y
ZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBs
b2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsK
ICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotICAgIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7
CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOwotICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGU7
CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRlbnRGaWx0
ZXJFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggZmQy
YjU1ZjQwZmRkM2Q4MmQ2ZDY5NDdkYzMzYWQzMWYyNGY0YzFjNy4uZWU4Y2FjMWM5ODAwMzljNGEz
NmRlNTUwMWFiN2YxMzVlNzEwZDA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaApAQCAtNjgsMTQgKzY4LDE0IEBAIHB1YmxpYzoKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiwgY29u
c3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcyk7Ci0gICAgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYpOworICAgIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5n
ZT4mJik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYg
a2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1
YWxLZXlDb2RlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzLCBib29sIGlzS2V5cGFkLCBPcHRp
b25TZXQ8TW9kaWZpZXI+KTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW51bSBj
bGFzcyBIYW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICosIEhhbmRsZWRCeUlucHV0TWV0aG9kKTsKICNl
bGlmIFVTRShMSUJXUEUpCiAgICAgZW51bSBjbGFzcyBIYW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJv
b2wgeyBObywgWWVzIH07Ci0gICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lu
cHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5nJiwgSGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlv
bmFsPEVkaXRpbmdSYW5nZT4mJik7CisgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qg
d3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5nJiwgSGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYpOwogI2VsaWYgUExBVEZPUk0oV0lO
KQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0s
IExQQVJBTSwgVmVjdG9yPE1TRz4mJiBwZW5kaW5nQ2hhckV2ZW50cyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCA5YjhkZDQyYjJlM2Nj
MmU2ZjZjMjRiMjEwNGM2ODJjYjhmOThlYTczLi4wMDE1NThkZDU4ZjRkODVmMzYwZDU3MTFjYWEw
M2RiMzM4ODkwMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJN
b3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVu
dC5oCkBAIC02NCw5ICs2NCw5IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KE5T
RXZlbnQgKiwgTlNFdmVudCAqbGFzdFByZXNzdXJlRXZlbnQsIE5TVmlldyAqKTsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNl
RXZlbnQmKTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiwgaW50LCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50
KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4pOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBz
aG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNl
dDxNb2RpZmllcj4gbW9kaWZpZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+LCBXZWJD
b3JlOjpQb2ludGVySUQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpOworICAgIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4g
bW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4sIFdlYkNvcmU6OlBv
aW50ZXJJRCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSk7CiAgICAgZXhwbGljaXQgTmF0aXZl
V2ViTW91c2VFdmVudChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRl
eCBjZmU4ZjNlMzRmM2E4OTdmMjhjMTYyZjBhNjdmYjY2ZDc3YTE1Y2UzLi5lMzRhYzVlNTdmNDEx
ZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTcwLDI0ICs3MCwyNCBAQCBzdHJ1
Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogICAgICAgICBlbmNvZGVyIDw8IGNv
bnRleHREYXRhOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNMb2Fk
ZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVz
dGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKLSAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CiAgICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8UmVxdWVz
dERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRhOwogICAgICAgICBpZiAoIWNvbnRleHREYXRh
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAppbmRleCA4MDQxNDE0ZWI1MDBiNmRjMDM2NWM1
OWU4NzMxYzAwZDQzNTljNThlLi5mYTBjYTM3NGJlNWJkYTg0NTA0NGQzM2JjYTFlM2YzZGRkNDJi
ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKIH0KIAotT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25B
Y3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlv
blR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYXZpZ2F0aW9uVHlwZSkpCkBAIC03NSwx
MiArNzUsMTIgQEAgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rp
b25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN5bnRoZXRpY0NsaWNrVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXI7CiAgICAgaWYgKCF1c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxib29sPiBjYW5IYW5kbGVSZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gY2FuSGFuZGxlUmVxdWVzdDsKICAgICBkZWNvZGVyID4+IGNhbkhhbmRsZVJlcXVl
c3Q7CiAgICAgaWYgKCFjYW5IYW5kbGVSZXF1ZXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtODksNyArODksNyBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2
aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBkb3dubG9hZEF0
dHJpYnV0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZG93bmxvYWRBdHRyaWJ1dGU7CiAg
ICAgZGVjb2RlciA+PiBkb3dubG9hZEF0dHJpYnV0ZTsKICAgICBpZiAoIWRvd25sb2FkQXR0cmli
dXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTgsMzcgKzk4LDM3IEBAIE9w
dGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNSZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVkaXJlY3Q7CiAgICAgaWYgKCFp
c1JlZGlyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGRlY29kZXIgPj4gdHJlYXRBc1Nh
bWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGlmICghdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9u
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFz
T3BlbmVkRnJhbWVzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzT3BlbmVkRnJhbWVzOwog
ICAgIGRlY29kZXIgPj4gaGFzT3BlbmVkRnJhbWVzOwogICAgIGlmICghaGFzT3BlbmVkRnJhbWVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gb3Bl
bmVkQnlET01XaXRoT3BlbmVyOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3BlbmVkQnlET01X
aXRoT3BlbmVyOwogICAgIGRlY29kZXIgPj4gb3BlbmVkQnlET01XaXRoT3BlbmVyOwogICAgIGlm
ICghb3BlbmVkQnlET01XaXRoT3BlbmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiByZXF1ZXN0ZXJPcmln
aW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHJlcXVl
c3Rlck9yaWdpbjsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Rlck9yaWdpbjsKICAgICBpZiAoIXJl
cXVlc3Rlck9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiB0YXJnZXRC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPj4gdGFyZ2V0QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI7CiAgICAgaWYgKCF0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4+IHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI+PiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJj
ZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xNDEsMTIgKzE0MSwxMiBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2
aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobG9ja0JhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNsaWVudFJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OwogICAgIGRlY29kZXIgPj4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
OwogICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBkZWNvZGVyID4+IHByaXZhdGVDbGlja01lYXN1
cmVtZW50OwogICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW9uQWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRh
dGEuaAppbmRleCAzMTlmMmY5ODJmYzUwYWIzNDBiNGM2Mjg1Zjc5MWUwZTRlNTNiYzYxLi4yOTE2
MTk3ZWIxY2JlMjI2YTY1YjUwNjRiMzE5OWQ3MjNlOWY1NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25B
Y3Rpb25EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIFdl
YkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlIHsgV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGU6Ok90aGVyIH07CiAgICAgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzOwpAQCAtNTcsMTIgKzU3LDEyIEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAg
ICAgYm9vbCBoYXNPcGVuZWRGcmFtZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgb3BlbmVkQnlET01X
aXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcmVx
dWVzdGVyT3JpZ2luOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBzb3VyY2VCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2Vi
Q29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8g
fTsKICAgICBXVEY6OlN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHByaXZhdGVDbGlja01l
YXN1cmVtZW50OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKaW5kZXggM2U0MjcwZGNhZjMwZjg2
MzllZmUxMjYyNTM2YmE5ZTZmNWRkMGI5Zi4uNWY5M2RjNTRjMjU2NTg3NjI5NGJkMWM2YmIxM2Q1
OGZlMmQyODQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtUG9wdXBNZW51RGF0YT4gUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0
YTsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXggMDY2NGYyYzViMmJlZjdiZDQ3ZTJiM2Q5
MjE1ZTY2NWE0MmU4MDkwNS4uMjg5NDQyZWU1MmU4ZjM0ZmUxMTI1MjlhNDRlMWY4YzFkMDBiYThm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKQEAg
LTQyLDcgKzQyLDcgQEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAKICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEZvbnRJ
bmZvIGZvbnRJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
UElkZW50aWZpZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVu
dGlmaWVyRGF0YS5jcHAKaW5kZXggMjY2ODhlOTkxN2RlZTVkZGE1NjM0ODQ3NzJkMjUyZjExNGFk
OWQxMS4uYTI5Yjg0YzQxNzRhNjUxOGJiNThlYzYzNGE2Y2IxOTY4MmRmMzNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgTlBJZGVudGlmaWVyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8PCBtX251bWJlcjsKIH0KIAotT3B0aW9u
YWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVy
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOUElkZW50aWZpZXJE
YXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzU3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0
YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKaW5k
ZXggMDhlYTc0NjNmOGFhODVlZGJkYjIxMjhhZTI2YTBiNzdkY2EyZGM4ZS4uYzRhYTI0ZjExMDE2
ZmExNmNlMTljZTU0MzgwYzRkNzk0NDRmYWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIE5QSWRlbnRpZmllciBjcmVhdGVOUElkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxOUElkZW50
aWZpZXJEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TlBJZGVudGlmaWVyRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBWYXJpYW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05Q
VmFyaWFudERhdGEuY3BwCmluZGV4IGUwZGViMzYwMjY4MGI5ODRlYzVhOTBhMzRmYzRlNzhjZjBh
NzM4MTQuLjNkYjkyYmRjOTQwNjdhMTJmZDY4NTJhNjE3OTZkMWVhYWEwMTA0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmNwcApAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgTlBWYXJpYW50RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICB9CiB9CiAKLU9wdGlvbmFsPE5QVmFyaWFudERhdGE+IE5QVmFyaWFudERh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5QVmFyaWFu
dERhdGE+IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgTlBWYXJpYW50RGF0YSByZXN1bHQ7CiAgICAgdWludDMyX3QgdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmgKaW5kZXggNjFlOTRkMjk4NWEzNTQx
OTQ4ZWYwZDUwNjVhY2U3NGI1Y2JlNGYxNC4uYzU4ZTJkNTA0YmFkOWI3NDZkNjM3NDI1NzkwNWNj
ZTM4ZmI3M2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZh
cmlhbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnRE
YXRhLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxOUFZhcmlhbnREYXRh
PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TlBWYXJp
YW50RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIHVpbnQzMl90
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDE5MDExMjIx
ZGNmYjVhNDNmOWJkMDNiOWRmMmUwYjg1YjE0OWUzNTAuLmMzZTZlMGE5ZDgxOTE1NmQ2NTQyZTc1
NmFlYTdmOTc1M2U1NjJmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGlj
eURlY2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApA
QCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsg
fTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBz
dGQ6Om51bGxvcHQgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uIHsg
V2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRCB7IHN0ZDo6bnVs
bG9wdCB9OwotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
c0RhdGEgeyBzdGQ6Om51bGxvcHQgfTsKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGEgeyBz
dGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApAQCAtNTUsMzkgKzU1LDM5IEBAIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UG9saWN5RGVj
aXNpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBvbGljeURlY2lzaW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVjb2RlZElkZW50aWZp
ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
PiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSWRlbnRpZmll
cjsKICAgICAgICAgaWYgKCFkZWNvZGVkSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4+IGRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAg
ZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAg
aWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5QWN0
aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBvbGljeUFjdGlvbj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBk
ZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBpZiAoIWRlY29kZWRQb2xpY3lBY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBkZWNvZGVkTmF2aWdhdGlvbklEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBkZWNvZGVkTmF2aWdhdGlvbklEOwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWROYXZpZ2F0
aW9uSUQ7CiAgICAgICAgIGlmICghZGVjb2RlZE5hdmlnYXRpb25JRCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RG93bmxvYWRJ
RD4+IGRlY29kZWREb3dubG9hZElEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9u
YWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3dubG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IGRl
Y29kZWREb3dubG9hZElEOwogICAgICAgICBpZiAoIWRlY29kZWREb3dubG9hZElEKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPj4gZGVjb2Rl
ZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFdlYnNpdGVQ
b2xpY2llc0RhdGE7CiAgICAgICAgIGlmICghZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SVENOZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsu
Y3BwCmluZGV4IGI4NGFmMzdiNzE4ZmFlOGFhYjAzZDUwZWM2ZjJmZGFkMzIxODljOTguLjE4OTNi
YzdmZWRiZGE1MWI2OTljMzIwNjVjYjA2YTRjM2M3YTdkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JU
Q05ldHdvcmsuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHJ0Yzo6TmV0d29yayBSVENOZXR3b3JrOjp2
YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcms7CiB9CiAKLWF1dG8gUlRDTmV0d29yazo6
SVBBZGRyZXNzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxJUEFk
ZHJlc3M+CithdXRvIFJUQ05ldHdvcms6OklQQWRkcmVzczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+CiB7CiAgICAgSVBBZGRyZXNzIHJl
c3VsdDsKICAgICBpbnQgZmFtaWx5OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHJ0Yzo6U29ja2V0QWRk
cmVzcyBSVENOZXR3b3JrOjppc29sYXRlZENvcHkoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiB2
YWx1ZSkKICAgICByZXR1cm4gcnRjOjpTb2NrZXRBZGRyZXNzKGNvcHkpOwogfQogCi1hdXRvIFJU
Q05ldHdvcms6OlNvY2tldEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+
IE9wdGlvbmFsPFNvY2tldEFkZHJlc3M+CithdXRvIFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3M6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U29ja2V0QWRk
cmVzcz4KIHsKICAgICBTb2NrZXRBZGRyZXNzIHJlc3VsdDsKICAgICB1aW50MTZfdCBwb3J0OwpA
QCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8gUlRDTmV0d29yazo6U29ja2V0QWRkcmVzczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8U29ja2V0CiAgICAgaWYgKGlzVW5y
ZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIE9wdGlvbmFsPElQQWRkcmVz
cz4gaXBBZGRyZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBpcEFkZHJlc3M7CiAg
ICAgZGVjb2RlciA+PiBpcEFkZHJlc3M7CiAgICAgaWYgKCFpcEFkZHJlc3MpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBSVENOZXR3b3JrOjpT
b2NrZXRBZGRyZXNzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgUlRDTmV0d29yazo6SVBBZGRyZXNzKHZhbHVlLmlwYWRkcigpKTsKIH0KIAotT3B0
aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBSVENOZXR3b3JrIHJlc3VsdDsKICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgbmFtZSwgZGVzY3JpcHRpb247CkBAIC0xNzcsNyArMTc3LDcgQEAgT3B0aW9uYWw8
UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBzdGQ6OnN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkZXNjcmlwdGlvbi5kYXRhKCkpLCBkZXNjcmlwdGlvbi5zaXpl
KCkpOwotICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gcHJlZml4OworICAgIHN0ZDo6b3B0aW9uYWw8
SVBBZGRyZXNzPiBwcmVmaXg7CiAgICAgZGVjb2RlciA+PiBwcmVmaXg7CiAgICAgaWYgKCFwcmVm
aXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMDIsNyArMjAyLDcgQEAgT3B0
aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaXBzLnJlc2VydmUo
bGVuZ3RoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyArK2lu
ZGV4KSB7Ci0gICAgICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gYWRkcmVzczsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxJUEFkZHJlc3M+IGFkZHJlc3M7CiAgICAgICAgIGRlY29kZXIgPj4gYWRkcmVz
czsKICAgICAgICAgaWYgKCFhZGRyZXNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuaAppbmRleCBmOWNlOWFiNzk4NWM5MGVkOTVjZWI4
YjMyYzBjMjNlMjZkMGQ4MzJhLi4yNDg5NDFhOTcwMWQyNDI1MjhmN2U3ODBlMDMyMGY5YmNiNGQ3
YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUlRDTmV0d29yay5oCkBAIC00NiwxNCArNDYsMTQgQEAgc3Ry
dWN0IFJUQ05ldHdvcmsgewogICAgIHJ0Yzo6TmV0d29yayB2YWx1ZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJU
Q05ldHdvcms+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSVENOZXR3b3JrPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBzdHJ1Y3QgSVBBZGRy
ZXNzIHsKICAgICAgICAgSVBBZGRyZXNzKCkgPSBkZWZhdWx0OwogICAgICAgICBleHBsaWNpdCBJ
UEFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHJlc3MpOiB2YWx1ZShhZGRyZXNzKSB7
IH0KIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAg
c3RhdGljIE9wdGlvbmFsPElQQWRkcmVzcz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
IAogICAgICAgICBydGM6OklQQWRkcmVzcyB2YWx1ZTsKICAgICB9OwpAQCAtNjUsNyArNjUsNyBA
QCBzdHJ1Y3QgUlRDTmV0d29yayB7CiAgICAgICAgIGV4cGxpY2l0IFNvY2tldEFkZHJlc3MoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKTogdmFsdWUoYWRkcmVzcykgeyB9CiAKICAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBP
cHRpb25hbDxTb2NrZXRBZGRyZXNzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNvY2tldEFkZHJlc3M+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
IAogICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MgdmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKaW5kZXggOWUyOTgzMDEyZDMzNTQ2M2VkZjUy
NzdjMmI1N2UyOWM0MzgwYmQ4OC4uMzU2ZjEwZDRhMmU4ODVmZTIwMzMxYmJhNDI2NGRlODkwMDc1
ZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgdm9pZCBSVENQYWNrZXRPcHRpb25zOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5wYWNrZXRfdGltZV9wYXJhbXMu
c3J0cF9wYWNrZXRfaW5kZXg7CiB9CiAKLU9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1Bh
Y2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1BhY2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgcnRjOjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zIHBhcmFtczsKICAg
ICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsKQEAgLTU4LDE5ICs1OCwxOSBAQCBPcHRpb25h
bDxSVENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIG9wdGlvbnMuZHNj
cCA9IGRzY3A7CiAKLSAgICBPcHRpb25hbDxpbnQzMl90PiBwYWNrZXRJZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IHBhY2tldElkOwogICAgIGRlY29kZXIgPj4gcGFja2V0SWQ7CiAgICAg
aWYgKCFwYWNrZXRJZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBvcHRpb25z
LnBhY2tldF9pZCA9IHBhY2tldElkLnZhbHVlKCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJ0cFNl
bmR0aW1lRXh0ZW5zaW9uSWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHJ0cFNlbmR0aW1lRXh0
ZW5zaW9uSWQ7CiAgICAgZGVjb2RlciA+PiBydHBTZW5kdGltZUV4dGVuc2lvbklkOwogICAgIGlm
ICghcnRwU2VuZHRpbWVFeHRlbnNpb25JZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbXMucnRwX3NlbmR0aW1lX2V4dGVuc2lvbl9pZCA9IHJ0cFNlbmR0aW1lRXh0ZW5z
aW9uSWQudmFsdWUoKTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IHNydHBBdXRoVGFnTGVuZ3Ro
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gc3J0cEF1dGhUYWdMZW5ndGg7CiAgICAgZGVj
b2RlciA+PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBpZiAoIXNydHBBdXRoVGFnTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODUsNyArODUsNyBAQCBPcHRpb25hbDxS
VENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICBtZW1jcHkocGFyYW1zLnNydHBfYXV0aF9rZXkuZGF0YSgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcnRwQXV0aEtleS5kYXRhKCkpLCBzcnRwQXV0aEtl
eS5zaXplKCkgKiBzaXplb2YoY2hhcikpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGludDY0X3Q+
IHNydHBQYWNrZXRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHNydHBQYWNrZXRJ
bmRleDsKICAgICBkZWNvZGVyID4+IHNydHBQYWNrZXRJbmRleDsKICAgICBpZiAoIXNydHBQYWNr
ZXRJbmRleCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JUQ1BhY2tldE9wdGlvbnMuaAppbmRleCA1ZWY2ZDlmZDVhNmE2Zjk5N2UxZjNiMjNjYmIxYmJm
ZTFiNDAzNzdhLi5kYjNiZGM2ZTI0M2UyYTUyNzY4ZDU3ODM0NWU5YWIzYzBjZTcyMWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQYWNrZXRPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5oCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUlRDUGFja2V0T3B0aW9ucyB7CiAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1BhY2tl
dE9wdGlvbnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSVENQYWNrZXRPcHRpb25zPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBydGM6OlBh
Y2tldE9wdGlvbnMgb3B0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKaW5kZXggYjEyMzZkMjNhMGNmYjJhOGRjOGFkYjFmY2M5YmE5MjQ5MTI2
MWRlNi4uMWMxMmU5ODRlZWY0OTAwZDg5N2IxNThhMTg0YmM4ZWZjYWI2ZmNkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtOTksNyArOTksNyBA
QCBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRp
b25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxC
dWZmZXI+IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDFmMTkwNDNhYWE0
YWE4OWEwOGY0MzU3ZDQ5MzRhNWZiNzczOGE3NDQuLjhjNmRiZTEwYmFhNjg0YzU2Zjc1NjI4NjEx
NzNmMjU4MGRmZDViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGVzZSBhbGwg
QVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVs
QnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYg
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAppbmRleCA3NTIzY2I3OWI4OWEzMjQyNTFiMWM4ODMyZjNlYjUwNmJiOGU4YTU5
Li5hZTlkMmY4ODY1MDVjMjA1ZmMxYWFmY2QyMjAwZGM2ZTZlNDMwZDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgQnVmZmVy
IG1fZnJvbnRCdWZmZXI7CiAgICAgQnVmZmVyIG1fYmFja0J1ZmZlcjsKICAgICBCdWZmZXIgbV9z
ZWNvbmRhcnlCYWNrQnVmZmVyOwotICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZT4gbV9idWZmZXJIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGU+IG1fYnVmZmVySGFuZGxlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRo
cmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IG1fZnJvbnRCdWZmZXJGbHVzaGVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggYjdhMjhkZDc1NzRhNTczODMzNmY2NjFlNDgz
NzBkZWJjYTJmOTUwMi4uZDBkYWRjNzIyNmIxYTI0ZWU2Mzc5ZDIxNThhOTc4Mzc3ZDI5MjQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsK
IAotICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOworICAgIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oCmluZGV4IDhhZTJkYWJkYjc5ZDdlM2U2ZDM5ZDYwYjM5YmJkNWM1ZTIwMzA4MzAuLjljZjI3
ZTFmNGM0ODVmOTI1YWUyZDhkZjFhNzcxYTFkMTgyODU3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBMYXll
ckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgdHlwZTsKQEAgLTMwNSw3ICsz
MDUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0ZS52YWx1ZSgpOyB9CiAgICAgdm9pZCBzZXRFZGl0b3JT
dGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpIHsgbV9lZGl0b3JTdGF0ZSA9IGVk
aXRvclN0YXRlOyB9CiAKLSAgICBPcHRpb25hbDxEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ+
IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlSUQ+IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9CiAgICAgdm9pZCBzZXREeW5hbWljVmll
d3BvcnRTaXplVXBkYXRlSUQoRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEIHJlc2l6ZUlEKSB7
IG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0gcmVzaXplSUQ7IH0KICAgICAKIHByaXZh
dGU6CkBAIC0zNDUsOCArMzQ1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld3BvcnRNZXRh
VGFnQ2FtZUZyb21JbWFnZURvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNJblN0YWJs
ZVN0YXRlIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFsPEVkaXRvclN0YXRlPiBtX2VkaXRvclN0
YXRlOwotICAgIE9wdGlvbmFsPER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRD4gbV9keW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxFZGl0b3JTdGF0ZT4gbV9l
ZGl0b3JTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJ
RD4gbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAwZmZjODJiNDk3
ZTU2YTJlZjFlOWI0MjkxOWE2MGMwYjVlMDVkNGM1Li4zMDYxNGVmMjJlYWMzZTczOGIxNTgzOTFj
NDVjZTM4YmY4MWM4YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3Jl
YXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlCiAjZW5kaWYKIH0KIAotYXV0
byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPExheWVyQ3JlYXRpb25Qcm9w
ZXJ0aWVzPgorYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblBy
b3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+CiB7CiAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMg
cmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmxheWVySUQpKQpAQCAtNTU0
LDcgKzU1NCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVz
dWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRXZlbnRSZWdpb25DaGFuZ2VkKSB7Ci0gICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkV2ZW50UmVnaW9uPiBldmVudFJlZ2lvbjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFdmVudFJlZ2lvbj4gZXZlbnRSZWdpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gZXZlbnRSZWdpb247CiAgICAgICAgIGlmICghZXZlbnRSZWdpb24pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVl
VHIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzSW5TdGFibGVTdGF0ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFuc2FjdGlvbkNh
bGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKICAgICBkZWNvZGVyID4+IGNhbGxiYWNrSURz
OwogICAgIGlmICghY2FsbGJhY2tJRHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCA1
ZDRhOTc4OGY0MzZkNjg3NmY0YWRjZWM4YTJjMmIyYjliYzExNTdmLi5iZTBlMjhiOTI1ZmU3MTRh
YTZlMjE1N2ZhNDlmYTc4NDI5NWU2ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFMKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQsIEZsb2F0UmVjdCwgc2V0TGF5b3V0Vmll
d3BvcnQpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luLCBGbG9hdFBvaW50LCBzZXRNaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbikKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4sIEZsb2F0UG9pbnQsIHNldE1h
eExheW91dFZpZXdwb3J0T3JpZ2luKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSwgT3B0aW9u
YWw8RmxvYXRTaXplPiwgc2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpCisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplLCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4sIHNldE92ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplKQogCiAgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpIHsKICAgICAg
ICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nVUlTdGF0ZS5jcHAKaW5kZXggZThlYTM4Nzk1YjVkOTE3MWFjMGNjZTM2MTYzNmY0Yzk1ZmNj
NmNiNS4uNzA0MzVhOThlZTg0ODRkOGI1ZGVhNDc2YzhmNzBkOWNkMDI0OGE1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJ
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFJlbW90ZVNjcm9s
bGluZ1VJU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAg
IGVuY29kZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVVc2VyU2Nyb2xsczsKIH0KIAotT3B0aW9uYWw8
UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0
ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlIHVpU3RhdGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
VUlTdGF0ZS5oCmluZGV4IDU0NWJmYzUzOWIyMjMxMDk5ZmMxNjVmYjMyYzg0Mzc0NzIyNjZiMmUu
LjdiNTZkYjdiNzdlOGFlNWFkMDVkYTRkNzQxNzAwNjQ3YjkwYTI1NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ1VJU3RhdGUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1v
dGVTY3JvbGxpbmdVSVN0YXRlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OwogCiAgICAgT3B0aW9uU2V0PENoYW5nZXM+IGNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2No
YW5nZXM7IH0KICAgICB2b2lkIGNsZWFyQ2hhbmdlcygpIHsgbV9jaGFuZ2VzID0geyB9OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmgKaW5kZXggMDA4NjVjNjlkYmJkNjI0
Y2Q1Mjc0Yjk1M2UzZmVlMDdhMmVmMThjNC4uNGFhZTEzNDhjOGNhNzZiY2Q5MDZiMDE0ZGMzZDNl
MzdiZTBkNDJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaApAQCAt
NTQsOCArNTQsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyB7CiAgICAgfTsKICAgICAKICAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUxvYWRJRDsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOwogICAgIFVSTCBvcmlnaW5hbFVS
TDsKICAgICBTdHJpbmcgb3JpZ2luYWxIVFRQTWV0aG9kOwogICAgIFdhbGxUaW1lIGV2ZW50VGlt
ZXN0YW1wOwpAQCAtNzQsNDQgKzc0LDQ0IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHsKICAg
ICAgICAgZW5jb2RlciA8PCB0eXBlOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxSZXNv
dXJjZUxvYWRJbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZEluZm8+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gcmVzb3VyY2VMb2FkSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IHJlc291cmNlTG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IHJlc291
cmNlTG9hZElEOwogICAgICAgICBpZiAoIXJlc291cmNlTG9hZElEKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICAgICAgZGVjb2Rl
ciA+PiBmcmFtZUlEOwogICAgICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgICAg
ICBkZWNvZGVyID4+IHBhcmVudEZyYW1lSUQ7CiAgICAgICAgIGlmICghcGFyZW50RnJhbWVJRCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8VVJM
PiBvcmlnaW5hbFVSTDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVUkw+IG9yaWdpbmFsVVJMOwog
ICAgICAgICBkZWNvZGVyID4+IG9yaWdpbmFsVVJMOwogICAgICAgICBpZiAoIW9yaWdpbmFsVVJM
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IG9yaWdpbmFsSFRUUE1ldGhvZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbmFsSFRUUE1ldGhvZDsKICAgICAgICAgZGVjb2RlciA+PiBvcmlnaW5hbEhUVFBNZXRo
b2Q7CiAgICAgICAgIGlmICghb3JpZ2luYWxIVFRQTWV0aG9kKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZXZlbnRUaW1lc3Rh
bXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV2ZW50VGltZXN0YW1wOwogICAg
ICAgICBkZWNvZGVyID4+IGV2ZW50VGltZXN0YW1wOwogICAgICAgICBpZiAoIWV2ZW50VGltZXN0
YW1wKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxib29sPiBsb2FkZWRGcm9tQ2FjaGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9h
ZGVkRnJvbUNhY2hlOwogICAgICAgICBkZWNvZGVyID4+IGxvYWRlZEZyb21DYWNoZTsKICAgICAg
ICAgaWYgKCFsb2FkZWRGcm9tQ2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VHlwZT4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggZjNm
OWU2ZjUxM2FkMmZkODQxZGE5OTE1MTg0OGVjZWMzNzE0NjgxNC4uOTdkNTE0ODc0ZGQ2MGQ1OTdj
ZmY3ODM4Y2Q4MzY5NzJmYTlhZDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC03MCw3MSArNzAsNzEg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAgICAgICAgZW5j
b2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGRpcmVjdG9yeTsKICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3Rvcnk7CiAgICAgICAg
IGlmICghZGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgCi0gICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IGRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBl
bmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxl
ZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNJdHBTdGF0
ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGlmICghaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+
IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFi
bGVMb2dUZXN0aW5nRXZlbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlTG9nVGVzdGluZ0V2
ZW50OwogICAgICAgICBpZiAoIWVuYWJsZUxvZ1Rlc3RpbmdFdmVudCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRJbmNsdWRlTG9j
YWxob3N0OwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAg
ICAgIGlmICghc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlRGVidWdNb2RlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZURlYnVnTW9kZTsKICAgICAgICAgZGVjb2Rl
ciA+PiBlbmFibGVEZWJ1Z01vZGU7CiAgICAgICAgIGlmICghZW5hYmxlRGVidWdNb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlOwogICAgICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkPiBzYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZD4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7
CiAgICAgICAgIGlmICghc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKLSAgICAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU+IGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZTsKICAgICAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsK
ICAgICAgICAgaWYgKCFmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluOwogICAgICAgICBkZWNvZGVyID4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bjsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWlu
czsKICAgICAgICAgZGVjb2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CiAgICAgICAgIGlmICghYXBw
Qm91bmREb21haW5zKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBkZWNvZGVyID4+IG1hbnVhbFByZXZh
bGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVudFJlc291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hF
eHRlbnNpb24uaAppbmRleCAyNjVhZjhkM2YxNTdjMWFkNDUxZmVhOTIyY2RjNmI3ZjAzNmVlM2Uy
Li42NGVhZDgyMzI5YzZhMWMzYzEyZGZiYjY1ZTJhMTUxZDg1NTBjNjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfkhhbmRsZSgpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8SGFuZGxlPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gZGVjb2RlKElQQzo6RGVj
b2RlciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNhbmRib3hFeHRl
bnNpb247CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBIYW5kbGUq
IGVuZCgpIGNvbnN0OwogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPEhh
bmRsZUFycmF5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZUFycmF5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBwcml2YXRl
OgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCkBAIC0xMTksMTEgKzExOSwxMSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBUeXBlLCBIYW5kbGUmKTsKICAgICBzdGF0aWMgYm9vbCBjcmVh
dGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcywg
SGFuZGxlJik7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBPcHRpb25hbDxhdWRpdF90
b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAg
ICBzdGF0aWMgSGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVj
dG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQp
OworICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIGJv
b2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1
ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvcklP
S2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwot
ICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3NlcywgT3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3Rh
dGljIGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwg
aW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgSGFuZGxlQXJyYXkgY3Jl
YXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNl
dDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5kaWYKICAgICB+U2FuZGJveEV4dGVuc2lv
bigpOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKIGlubGluZSBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9Ci1pbmxpbmUgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRl
Y29kZXImKSB7IHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgeyB9OyB9CitpbmxpbmUg
c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFu
ZGxlQXJyYXkoKSB7IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhh
bmRsZUFycmF5KCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6YWxsb2NhdGUoc2l6ZV90KSB7IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5kKCkg
eyByZXR1cm4gJgogaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gJm1fZW1wdHlI
YW5kbGU7IH0KIGlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiAmbV9lbXB0eUhhbmRs
ZTsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgLT4gT3B0aW9uYWw8SGFuZGxlQXJyYXk+
IHsgcmV0dXJuIHsgSGFuZGxlQXJyYXkoKSB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlQXJyYXk+IHsgcmV0dXJuIHsgSGFuZGxlQXJyYXkoKSB9OyB9CiBpbmxpbmUgUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUsIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVS
ZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikgeyByZXR1cm4geyB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCmluZGV4IGZjMzBlNTg4YzM0OTgyN2Iz
YmZiZWRiZjY5Y2JhNmU3Y2FmYTYzYWMuLjc3MzIxOWY3ZWUwMGI2N2IzYjVkMTViNzk0YTI1MWRi
Mzk1ZjMyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgdm9pZCBTZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwog
ICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVu
dFJ1bGVMaXN0czsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFj
b250ZW50UnVsZUxpc3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5o
CmluZGV4IDZkNTA5N2RkZWI5NWE5OTU5ZDg1ZDZkYjMzMjc5ZTBkY2E5NGJjZTkuLjQxNzNiM2Jl
MzFhMGZhM2JlMzk0MmNkYTVlNmE0OWRkOTUwN2E2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOwogc3RydWN0IFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmluZGV4IDZhYmM4NGRhY2QxMDZhYjVlNzkzMmY0
M2Y0ZTZjOGQxNDZhZjU5MzQuLmEwOGRkMTVkMzUxNzc2ZjM1NDlmMzQxYmQxMWZiZGRiZjI5Mzk4
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBzdGF0aWMgYm9vbCBpc1ZhbGlkRW51bShIVFRQQm9keTo6RWxlbWVudDo6VHlwZSB0eXBlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYXV0byBIVFRQQm9keTo6RWxlbWVudDo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8RWxlbWVudD4KK2F1dG8gSFRUUEJvZHk6
OkVsZW1lbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
RWxlbWVudD4KIHsKICAgICBFbGVtZW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC50eXBlKSB8fCAhaXNWYWxpZEVudW0ocmVzdWx0LnR5cGUpKQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgRnJhbWVTdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IGNoaWxkcmVuOwogfQogCi1PcHRpb25hbDxGcmFtZVN0YXRlPiBG
cmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxG
cmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIEZyYW1lU3RhdGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVy
bFN0cmluZykpCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVzdWx0KQogewogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnRpdGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlv
bmFsPEZyYW1lU3RhdGU+IG1haW5GcmFtZVN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVT
dGF0ZT4gbWFpbkZyYW1lU3RhdGU7CiAgICAgZGVjb2RlciA+PiBtYWluRnJhbWVTdGF0ZTsKICAg
ICBpZiAoIW1haW5GcmFtZVN0YXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBh
Z2VTdGF0ZSYgcmVzdWx0KQogICAgICAgICByZXN1bHQuc2Vzc2lvblN0YXRlT2JqZWN0ID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUod2lyZUJ5dGVz
KSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeT4g
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k+IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAg
ZGVjb2RlciA+PiBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGlmICghc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAot
T3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSByZXN1bHQ7
CiAKQEAgLTI1MCwxNCArMjUwLDE0IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0U3RhdGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjdXJyZW50SW5k
ZXg7CiB9CiAKLU9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBCYWNrRm9yd2FyZExpc3RT
dGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QmFja0Zv
cndhcmRMaXN0U3RhdGU+IEJhY2tGb3J3YXJkTGlzdFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU+PiBpdGVtczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+PiBpdGVtczsKICAgICBkZWNvZGVyID4+IGl0ZW1zOwogICAgIGlmICghaXRlbXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gY3Vy
cmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGN1cnJlbnRJbmRleDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRJbmRleCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggMDM2MDIzNjk4
NzVmOGM1NzkyYWQ5MWRlMmI2ZDQxYTEyNDIxM2IzZi4uNGU2ZDYyNTlhY2E1NGE0YTYwOGIzNzFj
MTdlMWVjMzkyNGU5MDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgSFRUUEJvZHkgewogICAgIHN0
cnVjdCBFbGVtZW50IHsKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnQ+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKIAogICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICAgICAgRGF0YSwKQEAg
LTY1LDggKzY1LDggQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgLy8gRmlsZS4KICAgICAg
ICAgU3RyaW5nIGZpbGVQYXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKLSAgICAgICAg
T3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+
IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gZmlsZUxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAgICAgICBTdHJp
bmcgYmxvYlVSTFN0cmluZzsKQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKIGNs
YXNzIEZyYW1lU3RhdGUgewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxGcmFtZVN0YXRlPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RnJhbWVTdGF0ZT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgdG8gaGVscCBkZWJ1ZyA8cmRhcjov
L3Byb2JsZW0vNDg2MzQ1NTM+LgogICAgIEZyYW1lU3RhdGUoKSB7IFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsgfQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHJlZmVycmVyOwogICAgIFN0cmluZyB0YXJnZXQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHN0YXRlT2JqZWN0RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gc3RhdGVPYmplY3REYXRhOwogCiAgICAgaW50NjRfdCBkb2N1bWVudFNlcXVlbmNlTnVtYmVy
IHsgMCB9OwogICAgIGludDY0X3QgaXRlbVNlcXVlbmNlTnVtYmVyIHsgMCB9OwpAQCAtMTA2LDcg
KzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiB7
IHRydWUgfTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgeyAwIH07CiAKLSAgICBPcHRpb25h
bDxIVFRQQm9keT4gaHR0cEJvZHk7CisgICAgc3RkOjpvcHRpb25hbDxIVFRQQm9keT4gaHR0cEJv
ZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUuCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdHJ1Y3QgUGFnZVN0YXRl
IHsKIAogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB7CiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAg
ICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpZGVudGlmaWVyOwogCkBAIC0x
NDksMTAgKzE0OSwxMCBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKIAogc3Ry
dWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0U3RhdGU+IGRlY29k
ZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxCYWNrRm9yd2FyZExp
c3RTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZT4gaXRlbXM7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGN1cnJlbnRJbmRl
eDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjdXJyZW50SW5kZXg7CiB9OwogCiBzdHJ1
Y3QgU2Vzc2lvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CmluZGV4IDA0NjRhMjBkNDBkZGIzMGFlYTIwMWM2NGVkMGUyMjJhYmExNGJjNzYuLmY2YTVjNzU2
ZTJmMjdmY2EwNTE0OGY2NmM2MWFiZDc0NGU2OGEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcApAQCAtODcsMTIgKzg3LDEyIEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+
IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgIGlmICghY29sb3JT
cGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFx
dWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc09wYXF1ZTsKICAgICBkZWNvZGVyID4+IGlz
T3BhcXVlOwogICAgIGlmICghaXNPcGFxdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggMDM2MjFiNDIxZTliZGQzOTZjNTBm
NWZhOTM3YmM1ZGU2Zjg1OThhZC4uZTYzOGU4NjgxMWQ0NzlmZjdlNzk5NGUzMzk0ZTZhZDU0MzRh
NmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTUyLDcgKzUy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IENvbmZpZ3VyYXRpb24gewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBib29sIGlzT3BhcXVl
IHsgZmFsc2UgfTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgICAgIG11dGFibGUgSEFORExFIHNo
YXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGJhOTkzN2E5ZGM4MTMzODUyYzFmYzM1Zjg4
OWNjMTFhZjZmYmM4YmUuLmI1NzQzNTRhNTQ5MmRjYWE3ZDExOGJmMTQ2N2Y0NWU5MTRiOGZmNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHByaW9yaXR5OwogfQogCi1PcHRp
b25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51SXRlbURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRh
PiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBUb3VjaEJhck1lbnVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJh
ck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURh
dGEuaAppbmRleCBiMzBmODJiODU0MDRmNzEyY2JkMDc3MWVhZWMyMTllOWY4MWU5NTNkLi40OTgx
MzJhMGEzNWVkZjNkM2NmNTkzZDA2Yjg2MTQxNjdhNGY2YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFRv
dWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBleHBsaWNpdCBUb3VjaEJhck1lbnVJdGVtRGF0YShj
b25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpID0gZGVmYXVsdDsKICAgICAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VG91Y2hCYXJN
ZW51SXRlbURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogICAgIAog
ICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07CiAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgKaW5kZXggNTM2NDA4OTQwOGUx
NjFjZmIzYzAwNmE0MjMzMmZjNjgzZTMyNDY2OS4uZDlmN2NhZGQ0ZDE1YTk2MDkzNGExNzMxNGNm
NTk5NTI2OWRiMDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVHJhbnNhY3Rp
b25JRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0aW9uSUQuaApAQCAtNDgs
OSArNDgsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkSWRlbnRpZmllcihtX2lk
ZW50aWZpZXIpKTsKICAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNb25vdG9uaWNPYmpl
Y3RJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNPYmplY3RJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRl
bnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAKaW5kZXggYWNjMmViODkz
NGFjMWM3OGFiMDgxYjJkMjE2NWI4ZDU0OTc2NDI0MC4uZDVjYTNiYmZlMDgwYmU3ZTg3MDJjNTIy
NTViOTViOWI4ZWI5OWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIHZvaWQgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBmcmFtZUluZm87CiB9CiAKLU9wdGlvbmFsPFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
PiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBo
YW5kbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGhhbmRsZXJJZGVudGlmaWVyOwogICAg
IGlmICghaGFuZGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFza0lkZW50
aWZpZXI7CiAgICAgaWYgKCF0YXNrSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxib29sPiBoYXNIVFRQQm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGhhc0hUVFBCb2R5OwogICAgIGRlY29kZXIgPj4gaGFzSFRUUEJvZHk7CiAgICAgaWYgKCFoYXNI
VFRQQm9keSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTcyLDcgKzcyLDcgQEAg
T3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1v
dmUoZm9ybURhdGEpKTsKICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4g
ZnJhbWVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOwog
ICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOwogICAgIGlmICghZnJhbWVJbmZvKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzLmgKaW5kZXggNTczNmQ4MmNkMWRhNjQwMDQyZWRiMTZjYzg4MWM5MDNiMzk2
ZWY3Yi4uNjc4MjM5NmIwZjlkMDliM2JlZDJlZjQ5YmNiZDVjYzk1M2M2ZDU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyB7CiAgICAgRnJhbWVJbmZvRGF0
YSBmcmFtZUluZm87CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVy
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xs
ZXJQYXJhbWV0ZXJzLmNwcAppbmRleCBlM2M5Y2RiYjZiN2ZjMDJmMzNkOGZiYjhjZGI5ODVhZjFh
MGNkNWRjLi5mMDcwYTY0OWRjMjZhNmViOWMxZjc1NDE1YjM4NWRjM2M3ZjdkMmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJh
bWV0ZXJzLmNwcApAQCAtNDQsMzUgKzQ0LDM1IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVy
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgog
fQogCi1PcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiBVc2VyQ29udGVu
dENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiBVc2VyQ29udGVudENv
bnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXI7Cisg
ICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPHN0
ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+Pj4gdXNlckNvbnRlbnRXb3Js
ZHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4+PiB1c2VyQ29udGVudFdvcmxkczsKICAgICBkZWNvZGVyID4+IHVzZXJD
b250ZW50V29ybGRzOwogICAgIGlmICghdXNlckNvbnRlbnRXb3JsZHMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+
PiB1c2VyU2NyaXB0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0
YT4+IHVzZXJTY3JpcHRzOwogICAgIGRlY29kZXIgPj4gdXNlclNjcmlwdHM7CiAgICAgaWYgKCF1
c2VyU2NyaXB0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRp
b25hbDxWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPj4gdXNlclN0eWxlU2hlZXRzOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4+IHVzZXJTdHlsZVNo
ZWV0czsKICAgICBkZWNvZGVyID4+IHVzZXJTdHlsZVNoZWV0czsKICAgICBpZiAoIXVzZXJTdHls
ZVNoZWV0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25h
bDxWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPj4gbWVzc2FnZUhhbmRsZXJzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4+IG1l
c3NhZ2VIYW5kbGVyczsKICAgICBkZWNvZGVyID4+IG1lc3NhZ2VIYW5kbGVyczsKICAgICBpZiAo
IW1lc3NhZ2VIYW5kbGVycykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVM
aXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5oCmluZGV4IGFlOTE4YjllNzYzOTRmNGUy
OWM1N2U5NTdkNjI2NTU4NmYxNjBjYjIuLjAzMGZkZGQ3YmE2MTUzYWQ2NDc4YTU5ZTM2NDVlYmZh
Y2Y4NWFlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29u
dHJvbGxlclBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRyb2xsZXJQYXJhbWV0ZXJzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFVzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgewogI2VuZGlmCiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9s
bGVyUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEu
Y3BwCmluZGV4IDFiNmRiZmFlNDMwODQ3YzNkZTEwYWZjODBiZTJjOGI2ZWQ4MjI0MzkuLjNiNTQw
NDU1ZTYyMDFmNDM1Yzk1ZDJmYmJkYzM0Y2Y5Mjg1ODA0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2Vy
RGF0YS5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQpCiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6Q2VydGlmaWNhdGVJbmZvOiB7Ci0g
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZv
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOwogICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKICAgICAgICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCmluZGV4IDZiNmUx
ZWVhOTE0NDFlOTgwODUwYWQxZTNjNGM2N2FkYTc0YWYxOWEuLjdhYTY1YWUwZjJjZmMyNDgyNWNm
MmYzOWI2MDkzNmYzNWQ2YTEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdENvdW50cy5oCkBAIC00MSwxNCArNDEsMTQgQEAgc3RydWN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyB7CiAgICAgICAgIGVuY29kZXIgPDwgZm9yd2FyZENvdW50OwogICAg
IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM+IGRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGJhY2tDb3VudDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gYmFja0NvdW50OwogICAgICAgICBkZWNvZGVyID4+IGJhY2tDb3VudDsK
ICAgICAgICAgaWYgKCFiYWNrQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmb3J3YXJkQ291bnQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsKICAgICAgICAgZGVjb2RlciA+PiBm
b3J3YXJkQ291bnQ7CiAgICAgICAgIGlmICghZm9yd2FyZENvdW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmluZGV4IDkyYzg2MzcwNGQ5N2ZhYWZjMjgx
YTM5NzQxNjExMjM1ZGEwYjMxMzAuLmFjMDJkNmQ0YWNmMjJhNzU4YTNjNjgyOGJjNmMwMWE2OWFm
OWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtNTgsNTQgKzU4LDU0IEBAIHZvaWQgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKIH0KIAotT3B0aW9u
YWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
ZGF0YSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbmRpdGlv
bnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBj
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBjb25kaXRp
b25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgaWYgKCFjb25kaXRpb25zQXBwbHlPbmx5
VG9Eb21haW5PZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gYWN0aW9uc09mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBhY3Rpb25zT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gYWN0aW9uc09mZnNldDsKICAgICBpZiAo
IWFjdGlvbnNPZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gYWN0aW9uc1NpemU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
YWN0aW9uc1NpemU7CiAgICAgZGVjb2RlciA+PiBhY3Rpb25zU2l6ZTsKICAgICBpZiAoIWFjdGlv
bnNTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0
OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7
CiAgICAgaWYgKCFmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4g
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGlmICghZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCFmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIg
Pj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGlmICghZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAg
ICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCF0b3BV
UkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIGRl
Y29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICBpZiAoIXRvcFVSTEZpbHRl
cnNCeXRlY29kZVNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCmlu
ZGV4IDFmMDMxMzEwMWI3YWVjMGZmNmFjZDg0MGRhMzExZTI0ZTZmNGFlNmQuLmE0YTI0MmI5N2M1
MDVlZTgxNTE2ZWVlMzliNTNjMDBhNDQ5YzczOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBkYXRhOwogICAgIHVuc2lnbmVkIGNvbmRpdGlvbnNBcHBseU9ubHlU
b0RvbWFpbk9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4
dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggNjRjMTU3Y2U0N2M5ZGIwNDFjMzE4OTdkODFiY2E2YjA3
N2I3ZmE3YS4uNTk4YTg3N2U5ZjYxNjhlMWFmNDgyZmU3ODcwY2VkNWExZDQ0MzI4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3N1Ym1lbnU7CiB9CiAKLU9w
dGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCkBAIC0xMzksNyArMTM5LDcgQEAgT3B0aW9uYWw8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4gV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZGVudGF0aW9uTGV2ZWwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OwogICAgIGRlY29kZXIgPj4gc3VibWVudTsK
ICAgICBpZiAoIXN1Ym1lbnUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgKaW5kZXggMTU0Mjc4MmEy
NzIwNzAxYTlkM2JkYTQ5ZWVlMGM1NDAzYzVjMDFmYy4uYmViOTljZjkxNWZmOTM3ODNkNmE2MjRj
NThlZTI3ZDFkYzhhZDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbURhdGEuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2Vy
RGF0YShBUEk6Ok9iamVjdCopOwogICAgIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTI5ZWZlZjFkNzI5OTFkMTRjZTVhYjE5
ZTM2MzExMmEwOTE4OTE4YS4uZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxs
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxs
OwogICAgIGlmICghaXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzgsMTQgKzI3
OCwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhbmdlLmxlbmd0aCk7CiB9CiAKLU9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJh
bmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOwogICAgIGRl
Y29kZXIgPj4gbG9jYXRpb247CiAgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5ndGg7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjk5LDE0ICsyOTks
MTQgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE8KICAgICBlbmNvZGVyIDw8IGluZm8ubmFtZTsK
IH0KIAotYXV0byBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bz4KK2F1dG8gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mbz4KIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBu
YW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9N
Q2EKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1l
bnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkK
QEAgLTM1NSw3ICszNTUsNyBAQCBPcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUoRAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CiAgICAgZGVjb2RlciA+PiBvcHRp
b25zOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTQxNCw3ICs0MTQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRXZlbnRUcgogCiBib29sIEFyZ3VtZW50
Q29kZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRXZl
bnRUcmFja2luZ1JlZ2lvbnMmIGV2ZW50VHJhY2tpbmdSZWdpb25zKQogewotICAgIE9wdGlvbmFs
PFJlZ2lvbj4gYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxS
ZWdpb24+IGFzeW5jaHJvbm91c0Rpc3BhdGNoUmVnaW9uOwogICAgIGRlY29kZXIgPj4gYXN5bmNo
cm9ub3VzRGlzcGF0Y2hSZWdpb247CiAgICAgaWYgKCFhc3luY2hyb25vdXNEaXNwYXRjaFJlZ2lv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc0LDcgKzU3NCw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0
ZXBzVGltaW5nRnVuCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1TdGVwcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQ
b3NpdGlvbj4gc3RlcFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5j
dGlvbjo6U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGVwUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYyOCw3ICs2Mjgs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENv
ZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludCk7CiB9CiAKLU9wdGlv
bmFsPEZsb2F0UG9pbnQ+IEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBBcmd1bWVudENvZGVyPEZsb2F0
UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBGbG9hdFBvaW50IGZsb2F0
UG9pbnQ7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUo
ZGVjb2RlciwgZmxvYXRQb2ludCkpCkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFJlY3QmIGZsb2F0
UmVjdCkKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUo
ZGVjb2RlciwgZmxvYXRSZWN0KTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBBcmd1bWVudENv
ZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IEFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0UmVjdDsKICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50
Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0UmVjdCkpCkBAIC03MDksNyAr
NzA5LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFZpZXdwb3J0QXJndW1lbnQKICAgICByZXR1cm4gU2ltcGxlQXJndW1l
bnRDb2RlcjxWaWV3cG9ydEFyZ3VtZW50cz46OmRlY29kZShkZWNvZGVyLCB2aWV3cG9ydEFyZ3Vt
ZW50cyk7CiB9CiAKLU9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZp
ZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRB
cmd1bWVudHM7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRz
Pjo6ZGVjb2RlKGRlY29kZXIsIHZpZXdwb3J0QXJndW1lbnRzKSkKQEAgLTczOSw3ICs3MzksNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SW50UG9pbnQmIGludFBvaW50KQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEludFBv
aW50Pjo6ZGVjb2RlKGRlY29kZXIsIGludFBvaW50KTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRQb2ludCBpbnRQb2ludDsK
ICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2Rlciwg
aW50UG9pbnQpKQpAQCAtNzU3LDcgKzc1Nyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbnRSZWN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEludFJlY3QmIGludFJlY3QpCiAgICAgcmV0dXJu
IFNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29kZShkZWNvZGVyLCBpbnRSZWN0KTsK
IH0KIAotT3B0aW9uYWw8SW50UmVjdD4gQXJndW1lbnRDb2RlcjxJbnRSZWN0Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IEFyZ3VtZW50Q29kZXI8SW50
UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEludFJlY3QgcmVjdDsKICAg
ICBpZiAoIWRlY29kZShkZWNvZGVyLCByZWN0KSkKQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbnRTaXplJiBp
bnRTaXplKQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUo
ZGVjb2RlciwgaW50U2l6ZSk7CiB9CiAKLU9wdGlvbmFsPEludFNpemU+IEFyZ3VtZW50Q29kZXI8
SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJbnRTaXpl
PiBBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBJbnRTaXplIGludFNpemU7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+
OjpkZWNvZGUoZGVjb2RlciwgaW50U2l6ZSkpCkBAIC04MTUsMTQgKzgxNSwxNCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlY2VudFNlYXJjaCYgcgogICAgIGVuY29kZXIgPDwgcmVjZW50U2VhcmNoLnN0cmluZyA8PCBy
ZWNlbnRTZWFyY2gudGltZTsKIH0KIAotT3B0aW9uYWw8UmVjZW50U2VhcmNoPiBBcmd1bWVudENv
ZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNvZGVyID4+IHN0cmluZzsKICAgICBpZiAo
IXN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25h
bDxXYWxsVGltZT4gdGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiB0aW1lOwogICAg
IGRlY29kZXIgPj4gdGltZTsKICAgICBpZiAoIXRpbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1pbWVDbGFzc0lu
Zm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWltZUNsYXNzSW5mbyYKICAgICBl
bmNvZGVyIDw8IG1pbWVDbGFzc0luZm8udHlwZSA8PCBtaW1lQ2xhc3NJbmZvLmRlc2MgPDwgbWlt
ZUNsYXNzSW5mby5leHRlbnNpb25zOwogfQogCi1PcHRpb25hbDxNaW1lQ2xhc3NJbmZvPiBBcmd1
bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8TWltZUNsYXNzSW5mbz4gQXJndW1lbnRDb2RlcjxNaW1lQ2xhc3NJbmZvPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTWltZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZv
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNsYXNzSW5mby50eXBlKSkKQEAgLTkwNCw3
ICs5MDQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBQbHVnaW5JbmZvJiBwbHVnaQogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OlBsdWdpbkluZm8+IEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5JbmZvPiBBcmd1
bWVudENvZGVyPFBsdWdpbkluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQ
bHVnaW5JbmZvIHBsdWdpbkluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZv
Lm5hbWUpKQpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5j
b2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZ2Up
CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAgIGRlY29kZXIg
Pj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZGlkQ3JlYXRlR3JhcGhpY3ND
b250ZXh0IHx8ICEqZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTE3LDI5ICsxMTE3LDI5IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+CiAgICAg
ZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIGZvbnQpOwogfQogCi1PcHRpb25hbDxSZWY8Rm9u
dD4+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFJlZjxGb250Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250OjpPcmlnaW4+IG9yaWdpbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6Ok9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4g
b3JpZ2luOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udDo6SW50ZXJzdGl0aWFsPiBpc0ludGVyc3RpdGlhbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnQ6OkludGVyc3RpdGlhbD4gaXNJbnRlcnN0aXRpYWw7CiAgICAgZGVj
b2RlciA+PiBpc0ludGVyc3RpdGlhbDsKICAgICBpZiAoIWlzSW50ZXJzdGl0aWFsKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udDo6VmlzaWJpbGl0eT4g
dmlzaWJpbGl0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6OlZpc2liaWxpdHk+IHZpc2liaWxp
dHk7CiAgICAgZGVjb2RlciA+PiB2aXNpYmlsaXR5OwogICAgIGlmICghdmlzaWJpbGl0eSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnQ6Ok9yaWVudGF0
aW9uRmFsbGJhY2s+IGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7CisgICAgc3RkOjpvcHRpb25h
bDxGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrPiBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwog
ICAgIGRlY29kZXIgPj4gaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjazsKICAgICBpZiAoIWlzVGV4
dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1JlcnNvdWNl
SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcmVuZGVyaW5n
UmVyc291Y2VJZGVudGlmaWVyOwogICAgIGlmICghcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNlbGVjdGlvbkcKICAgICBlbmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5Lmlz
SG9yaXpvbnRhbCgpOwogfQogCi1PcHRpb25hbDxTZWxlY3Rpb25HZW9tZXRyeT4gQXJndW1lbnRD
b2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTZWxlY3Rpb25HZW9tZXRyeT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRy
eT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNlbGVjdGlvbkdlb21ldHJ5IHNl
bGVjdGlvbkdlb21ldHJ5OwogICAgIEZsb2F0UXVhZCBxdWFkOwpAQCAtMTMzMSw3ICsxMzMxLDcg
QEAgT3B0aW9uYWw8U2VsZWN0aW9uR2VvbWV0cnk+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2Vv
bWV0cnk+OjpkZWNvZGUoRGVjb2RlciYgZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRRdWFkKHF1YWQpOwogCi0gICAgT3B0aW9uYWw8U2Vs
ZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9yOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9yOwogICAgIGRlY29kZXIgPj4gYmVoYXZp
b3I7CiAgICAgaWYgKCFiZWhhdmlvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE0ODEsNyArMTQ4MSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxDb21wb3NpdGlvblVuZGVybGluZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDb21wb3NpCiAgICAgZW5jb2RlciA8PCB1bmRlcmxpbmUuY29sb3I7CiB9CiAKLU9w
dGlvbmFsPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0
aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBvc2l0aW9uVW5kZXJsaW5lPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29tcG9zaXRpb25VbmRlcmxpbmUgdW5kZXJsaW5l
OwogCkBAIC0xNTQ3LDExICsxNTQ3LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURl
dGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjdXJyZW50VXNhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+IGNyZWF0aW9uVGltZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNyZWF0
aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmljYXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNh
dGlvblRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RpZmljYXRpb25UaW1lKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODA1LDE0ICsxODA1LDE0IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBEaWN0YXRpCiAgICAgZW5jb2RlciA8PCBhbHRlcm5hdGl2ZS5yYW5nZSA8PCBhbHRlcm5h
dGl2ZS5jb250ZXh0OwogfQogCi1PcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gQXJndW1l
bnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxEaWN0YXRpb25Db250ZXh0PiBj
b250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8RGljdGF0aW9uQ29udGV4dD4gY29udGV4dDsKICAg
ICBkZWNvZGVyID4+IGNvbnRleHQ7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTkxMCwxOSArMTkxMCwxOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0
YWlsJgogICAgIGVuY29kZXIgPDwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKIH0KIAotT3B0aW9u
YWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29k
ZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJh
bmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
Z3Vlc3NlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwogICAg
IGRlY29kZXIgPj4gZ3Vlc3NlczsKICAgICBpZiAoIWd1ZXNzZXMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJEZXNjcmlwdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckRlc2NyaXB0aW9uOwogICAgIGRlY29kZXIgPj4g
dXNlckRlc2NyaXB0aW9uOwogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFRleHQKIAogYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQog
ewotICAgIE9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyPiBpZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xOTY4LDIzICsxOTY4LDIzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENo
ZWNrCiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CiAKLU9wdGlvbmFsPFRl
eHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFs
PENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFp
bD4+IGRldGFpbHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRl
dGFpbHM7CiAgICAgZGVjb2RlciA+PiBkZXRhaWxzOwogICAgIGlmICghZGV0YWlscykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcmVwbGFjZW1l
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlcGxhY2VtZW50OwogICAgIGRlY29kZXIg
Pj4gcmVwbGFjZW1lbnQ7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTIwMjksNyArMjAyOSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2Vy
U3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNl
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKICAgICBk
ZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb24+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGMKIAogV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8V2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9uPiYgdmFsdWUpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwogICAgIGlm
ICghaXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDAyLDE2ICsyNDAyLDE2IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxCbG9iUGFydD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBCbG9iUGFydCYgYmxvYlBhcnQpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LU9wdGlvbmFsPEJsb2JQYXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEJsb2JQYXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQ
YXJ0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QmxvYlBhcnQ6
OlR5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxCbG9iUGFydDo6VHlwZT4gdHlwZTsKICAg
ICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgc3dpdGNoICgqdHlwZSkgewogICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6
OkRhdGE6IHsKLSAgICAgICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsKICAgICAgICAgZGVjb2RlciA+
PiBkYXRhOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMjQ0NSw3ICsyNDQ1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0
b3JEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRJbmRpY2EKICAgICBl
bmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCkpOwogfQogCi1PcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0
YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0
SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFRleHRJbmRp
Y2F0b3JEYXRhIHRleHRJbmRpY2F0b3JEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4
dEluZGljYXRvckRhdGEuc2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpCkBAIC0y
NTUwLDcgKzI1NTAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGljdGlvbmFyeVBvcHVwSW5mbz46
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERpY3Rpb25hcgogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9w
dGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yOworICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3I7CiAgICAgZGVjb2RlciA+PiB0ZXh0
SW5kaWNhdG9yOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjYzNywxMCArMjYzNywxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDbwogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIHN0YXRpc3RpY3M7Ci0gICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmFibGVEb21haW47CiAgICAg
aWYgKCFyZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTI2NjQsNTIgKzI2NjQsNTIgQEAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKEQKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0gICAgT3B0aW9uYWw8
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGlj
cy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9wIGZyYW1lIHN0YXRzCi0gICAg
T3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG87CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG87CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogCi0gICAgT3B0aW9u
YWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2RlciA+PiB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb207CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20gPSBXVEZNb3ZlKCp0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCi0gICAg
T3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pj4gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0czsKICAgICBkZWNvZGVyID4+IHRvcEZy
YW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CiAgICAgaWYgKCF0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3Rp
Y3MudG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyA9IFdURk1vdmUoKnRvcEZyYW1lTG9h
ZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKLSAgICBPcHRp
b25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJm
cmFtZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGRlY29kZXIgPj4gc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluczsKICAgICBpZiAoIXN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgqc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7
CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zOworICAgIHN0ZDo6
b3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zOwogICAgIGlmICghc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsK
IAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgZGVjb2RlciA+PiBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGlmICghc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvKTsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb207CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAg
IGRlY29kZXIgPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGlmICghc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMjc1OCw3ICsyNzU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhQ29uc3RyYWlu
dHM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6TWUKIAogYm9vbCBB
cmd1bWVudENvZGVyPE1lZGlhQ29uc3RyYWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IG1hbmRhdG9yeUNvbnN0cmFpbnRz
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIGRlY29kZXIgPj4gbWFuZGF0b3J5Q29uc3RyYWlu
dHM7CiAgICAgaWYgKCFtYW5kYXRvcnlDb25zdHJhaW50cykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjgxNCwxNCArMjgxNCwxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtl
ck9yQ2xpZW50RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlVwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXNTZXJ2aWNlV29ya2VyRGF0YSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyRGF0YSkgewotICAgICAgICBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiB3b3JrZXJEYXRh
OwogICAgICAgICBpZiAoIXdvcmtlckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgZGF0YSA9IFdURk1vdmUoKndvcmtlckRhdGEpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOwogICAg
ICAgICBkZWNvZGVyID4+IGNsaWVudERhdGE7CiAgICAgICAgIGlmICghY2xpZW50RGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NDcsMTQgKzI4NDcsMTQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgU2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGlzU2VydmljZVdvcmtl
cklkZW50aWZpZXIpIHsKLSAgICAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+
IHdvcmtlcklkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklk
ZW50aWZpZXI+IHdvcmtlcklkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gd29ya2VySWRl
bnRpZmllcjsKICAgICAgICAgaWYgKCF3b3JrZXJJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIGlkZW50aWZpZXIgPSBXVEZNb3ZlKCp3b3JrZXJJZGVudGlm
aWVyKTsKICAgICB9IGVsc2UgewotICAgICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKICAgICAgICAgZGVj
b2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODcyLDE0ICsyODcyLDE0IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBNZWRpYVNlCiAgICAgZW5jb2RlciA8PCBvcHRpb24udHlwZTsKIH0KIAotT3B0
aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb24+IEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25P
cHRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGRpc3BsYXlOYW1lOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkaXNwbGF5TmFtZTsKICAgICBkZWNvZGVyID4+IGRp
c3BsYXlOYW1lOwogICAgIGlmICghZGlzcGxheU5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU+IHR5
cGU7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZT4gdHlwZTsK
ICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHQK
ICAgICBlbmNvZGVyIDw8ICpvcmlnaW47CiB9CiAgICAgCi1PcHRpb25hbDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29k
ZXIpOwogICAgIGlmICghb3JpZ2luKQpAQCAtMjkzNCw3ICsyOTM0LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZv
bnRBdHRyaWJ1dGUKICAgICB9CiB9CiAKLU9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVu
dENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
IApAQCAtMjk3OCw3ICsyOTc4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT46OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBlbmNv
ZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5nZXQoKSB9OwogfQogCi1PcHRpb25hbDxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVy
KSkKQEAgLTMwMDgsNyArMzAwOCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGUoRW5jb2RlciYgZW5jCiAgICAgICAg
IGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB2YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGhhc1BsYXRmb3JtRGF0YTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkpCkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQpAQCAtMzA0NSw3ICszMDQ1LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFIKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LnB0cigpKTsKIH0KIAotT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQpAQCAtMzA3NCw3ICszMDc0LDcgQEAgc3RhdGljIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUo
Y29uc3QgU2NyaXAKICAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFz
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoRGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSB8fCBo
YW5kbGUuaXNOdWxsKCkpCkBAIC0zMTAwLDEwICszMTAwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
V2ViQ29yCiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHNjcmlwdC5idWZmZXIoKSk7
CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlvbmFsPGJvb2w+IGlzU2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
ICAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQog
ICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0
eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCkBAIC0zMTYyLDcgKzMxNjIsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCkBAIC0zMjExLDcg
KzMyMTEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+OjplbmNvZGU8RW5jb2Rlcj4oRW5jbwogdGVtcGxhdGUKIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZTxT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwogCi1PcHRpb25hbDxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJ
bmZvLm5hbWUpKQpAQCAtMzIzMywxMyArMzIzMywxMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8SW1h
Z2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
bwogICAgIGVuY29kZXIgPDwgaW5mby5ub3JtYWxpemVkUXVhZHM7CiB9CiAKLU9wdGlvbmFsPElt
YWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IEFyZ3VtZW50Q29kZXI8SW1hZ2VFeHRyYWN0
aW9uRGF0YURldGVjdG9ySW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvPiBBcmd1bWVudENvZGVyPEltYWdl
RXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCByZXN1bHQpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UXVhZD4+IG5vcm1hbGl6ZWRRdWFk
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFF1YWQ+PiBub3JtYWxpemVkUXVhZHM7
CiAgICAgZGVjb2RlciA+PiBub3JtYWxpemVkUXVhZHM7CiAgICAgaWYgKCFub3JtYWxpemVkUXVh
ZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiMGMyNjM2MzI3M2ZhMjE0MGVhNjU5Yzg2
Y2ZjNTA4ZDMyOGRiYWQuLmRhZTgwZmY3ZGQyNTQyODkxMjFiNDEzNDBiNzdkMGY5YzRmNTA2MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0y
MzAsNyArMjMwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnM+IHsKQEAgLTI0MCwyMiArMjQwLDIyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM+IHsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8m
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VG91Y2hBY3Rp
b25EYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpUb3VjaEFjdGlvbkRhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6VG91Y2hB
Y3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlRvdWNoQWN0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RXZlbnRUcmFja2luZ1JlZ2lvbnM+IHsK
QEAgLTI5Niw3ICsyOTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbz4gewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpGbG9hdFBvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UG9p
bnQzRD4gewpAQCAtMzA3LDcgKzMwNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6RmxvYXRQb2ludDNEPiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZsb2F0UmVjdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogICAgIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9h
dEJveEV4dGVudD4gewpAQCAtMzI5LDcgKzMyOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4gewogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsK
ICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
ICNlbmRpZgpAQCAtMzQyLDIwICszNDIsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXM+IHsKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SW50UG9pbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkludFJl
Y3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFJlY3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SW50UmVjdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SW50U2l6ZT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRTaXplPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkludFNpemU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkxheW91dFNpemU+IHsKQEAgLTM4MCwxMiArMzgwLDEyIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VmVsb2NpdHlEYXRhPiB7
CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWltZUNsYXNzSW5m
bz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWlt
ZUNsYXNzSW5mbyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpNaW1lQ2xhc3NJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1p
bWVDbGFzc0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBsdWdpbkluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6UGx1Z2luSW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5JbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZT4gewpAQCAtNDE0LDkgKzQxNCw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q3Vyc29yPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkZvbnQ+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpGb250Pj4gZGVjb2RlKERlY29kZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYp
OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4g
ewpAQCAtNDU0LDM0ICs0NTQsMzQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
VEY6Ok1hY2hTZW5kUmlnaHQ+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDR1BvaW50PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR1BvaW50KTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8Q0dQb2ludD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
R1BvaW50PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxDR1NpemU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIENHU2l6
ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENHU2l6ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxDR1NpemU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHUmVjdD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgQ0dSZWN0KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dSZWN0PiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENHUmVjdD4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q0dBZmZpbmVU
cmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIENHQWZmaW5lVHJh
bnNmb3JtKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Vs
ZWN0aW9uR2VvbWV0cnkmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9u
R2VvbWV0cnk+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodD4gewpAQCAtNTI3LDEzICs1MjcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudD4gewogI2lmIFVTRShDVVJMKQogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncz4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3MmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5U2V0
dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q3VybFByb3h5U2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHM+IHsKQEAgLTU0Myw3ICs1NDMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewpAQCAtNTY4LDcgKzU2
OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWw+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhbW1hckRldGFpbD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YT4gewpAQCAtNTc4LDcgKzU3OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE+IHsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gewpAQCAtNjI1LDcgKzYyNSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbj4+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpCbG9iUGFydD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6QmxvYlBhcnQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6QmxvYlBhcnQ+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Qmxv
YlBhcnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpAQCAtNjM3LDcgKzYzNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPiB7CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRh
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvPiB7CkBAIC02NTgsNyArNjU4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlY2VudFNlYXJjaD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OlJlY2VudFNlYXJjaD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IHsK
QEAgLTY2OCwzNCArNjY4LDM0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gZGVj
b2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50PiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnQ+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRDb250
YWN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0PiB7CkBAIC03MTQsMTIgKzcxNCwxMiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudAogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheUVycm9yPj4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5RXJyb3I+Jik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheUVycm9yPj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlFcnJvcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3I+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3Im
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFNlc3Npb25FcnJvcj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
U2Vzc2lvbkVycm9yPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogI2VuZGlmCkBAIC03NTIsNyAr
NzUyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0
aW9uT3B0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvPiB7CkBAIC03NjIsMjEg
Kzc2MiwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Jik7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUo
RGVjb2RlciYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29y
ZTo6Rm9udEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
b250QXR0cmlidXRlcz4gZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpGb250
QXR0cmlidXRlcyYpOwogfTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpA
QCAtNzg0LDMyICs3ODQsMzIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKICNpZiBFTkFCTEUoVklERU8pCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVWYWx1ZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+
IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUpOwogfTsKICNlbmRpZgogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhRGV0ZWN0b3JFbGVtZW50SW5mbz4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGF0YURldGVj
dG9yRWxlbWVudEluZm8mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RGF0YURldGVj
dG9yRWxlbWVudEluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiAjZW5kaWYKQEAgLTgxNywxNCArODE3LDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IHsKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKICNlbmRpZgog
CiAjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKQEAgLTgzMiwxMyArODMyLDEzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbj4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKICNlbmRpZgogCkBAIC04NDYsNyArODQ2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlv
bkRhdGFEZXRlY3RvckluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8mKTsKLSAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRh
dGFEZXRlY3RvckluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3Rv
ckluZm8+IGRlY29kZShEZWNvZGVyJik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1E
YXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJ
bmZvJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApp
bmRleCBhOTY4Zjg0ZjlhYmVmZjU1ZWI0ZGNhNWRhM2E0MDZlMjlkNWI3MTA5Li5mMTI4MWIwYTkx
YmZjMzk1NzgxMzIzZjdiOWM4YjYwNjUyMWU5M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgog
ICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0
dWRlOyB9CiAgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0
aW9uLmxvbmdpdHVkZTsgfQogICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9Ci0gICAgT3B0aW9uYWw8
ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24u
YWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmhlYWRpbmc7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+
IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlv
bi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
KCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9z
aXRpb24uaGVhZGluZzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLnNwZWVkOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgY29yZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b3JlUG9zaXRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IGI2MmRiMzdmMTY4ZjY3ODc1Nzc4NTJlYTJjNjQ5MmJhYTVlOGRiODMu
LjAyYWY3M2VmM2I3MzYxNzRhNmJmNDUzYTVlYzZiYmEwNzNkY2MwMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTE4OSw3ICsxODksNyBA
QCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoaGFzTGlua1RleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgaWYgKCFpbmRpY2F0b3JEYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNw
cAppbmRleCBiYzQzMjIyODY0ODRlNmFmZGQ0OTM1M2ZhZTZhOGZiM2NkNWU2NmYyLi5hNzBlYjc2
YzVjMjJhMmM3NzljMzA4NzQ0MzNhYzE5MDM2YjVmMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJLZXlib2FyZEV2ZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJLZXlib2FyZEV2ZW50
OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmCiAKICNlbGlmIFBMQVRGT1JNKEdUSykKIAotV2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5
Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQg
d2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFu
ZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBw
cmVlZGl0U2VsZWN0aW9uUmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNL
ZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAp
CitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBT
dHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRp
dmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxp
bmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2Rp
Zmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBl
LCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV91bm1v
ZGlmaWVkVGV4dCh0ZXh0KQpAQCAtMTAzLDcgKzEwMyw3IEBAIFdlYktleWJvYXJkRXZlbnQ6Oldl
YktleWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYKIAogI2VsaWYgVVNFKExJQldQRSkKIAotV2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5Ym9hcmRF
dmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93
c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGlu
ZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0
U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZp
ZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2
ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJ
bnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRl
cmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4m
JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmll
cj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBt
b2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV91bm1vZGlm
aWVkVGV4dCh0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9h
cmRFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5oCmluZGV4
IGNiODAyOWRjNDZkYzI1MzFmNWNjMjM0MDlkYzZkMmYxMWQ1YTNiNDkuLjdhNTg5M2ViNjhhZDI0
Y2Y5MmM4MzIwNzA0ODU0ODliN2NmYWZhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXli
b2FyZEV2ZW50LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBwdWJsaWM6CiAjaWYgVVNFKEFQUEtJVCkK
ICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29k
ZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2Rl
LCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBi
b29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwgT3B0aW9u
U2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbGlmIFBMQVRGT1JNKEdUSykK
LSAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVy
LCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJv
b2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiwgVmVjdG9yPFN0cmlu
Zz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRp
bWUgdGltZXN0YW1wKTsKKyAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5n
JiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmly
dHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9w
dGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFdlYktleWJvYXJkRXZlbnQoVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBTdHJpbmcmIHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmly
dHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgaW50IG1hY0NoYXJDb2RlLCBi
b29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBh
ZCwgYm9vbCBpc1N5c3RlbUtleSwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0
YW1wKTsKICNlbGlmIFVTRShMSUJXUEUpCi0gICAgV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNv
bnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1l
IHRpbWVzdGFtcCk7CisgICAgV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYg
a2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1
YWxLZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIHN0ZDo6b3B0aW9uYWw8RWRpdGlu
Z1JhbmdlPiYmLCBib29sIGlzS2V5cGFkLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0
aW1lc3RhbXApOwogI2Vsc2UKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFy
Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXks
IE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZW5kaWYKQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOyB9CiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspIHx8IFVTRShMSUJXUEUpCi0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mIHByZWVkaXRVbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1
cm4gbV9wcmVlZGl0VW5kZXJsaW5lczsgfQotICAgIGNvbnN0IE9wdGlvbmFsPEVkaXRpbmdSYW5n
ZT4mIHByZWVkaXRTZWxlY3Rpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVj
dGlvblJhbmdlOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBt
X3ByZWVkaXRVbmRlcmxpbmVzOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFu
Z2U+JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRTZWxl
Y3Rpb25SYW5nZTsgfQogI2VuZGlmCiAjaWYgVVNFKEFQUEtJVCkKICAgICBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bW1hbmRzOyB9CkBAIC05NSw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhbmRsZWRC
eUlucHV0TWV0aG9kIHsgZmFsc2UgfTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgVVNF
KExJQldQRSkKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4gbV9w
cmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOworICAgIHN0ZDo6b3B0
aW9uYWw8RWRpdGluZ1JhbmdlPiBtX3ByZWVkaXRTZWxlY3Rpb25SYW5nZTsKICNlbmRpZgogI2lm
IFVTRShBUFBLSVQpCiAgICAgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gbV9jb21t
YW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggYWI4NjliNDEwNzdiMmRiYTI4MWQ0MmMxNDYxZDllZTNkOWFlODgzMS4u
OWU3YjdmMmZiZGExMDdkMWNkOTAwMjQ4YTVkOWI2YWM2YmE3MjlkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTE5OSwx
NyArMTk5LDE3IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdpbmdBcmVh
VHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RHJhd2lu
Z0FyZWFJZGVudGlmaWVyPiBkcmF3aW5nQXJlYUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxEcmF3aW5nQXJlYUlkZW50aWZpZXI+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBkZWNv
ZGVyID4+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBpZiAoIWRyYXdpbmdBcmVhSWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmRyYXdp
bmdBcmVhSWRlbnRpZmllciA9ICpkcmF3aW5nQXJlYUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5SWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlUHJveHlJZGVudGlmaWVyOwogICAgIGlmICghd2ViUGFn
ZVByb3h5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBXVEZNb3ZlKCp3ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKTsKLSAgICBPcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBwYWdlR3JvdXBEYXRhOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gcGFnZUdyb3VwRGF0YTsKICAgICBk
ZWNvZGVyID4+IHBhZ2VHcm91cERhdGE7CiAgICAgaWYgKCFwYWdlR3JvdXBEYXRhKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM5LDE5ICsyMzksMTkgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5hdGlv
bkxpbmVHcmlkRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNl
ckFnZW50OwogICAgIGRlY29kZXIgPj4gdXNlckFnZW50OwogICAgIGlmICghdXNlckFnZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXNlckFnZW50ID0g
V1RGTW92ZSgqdXNlckFnZW50KTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGl0ZW1TdGF0ZXNXZXJl
UmVzdG9yZWRCeUFQSVJlcXVlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpdGVtU3RhdGVz
V2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0OwogICAgIGRlY29kZXIgPj4gaXRlbVN0YXRlc1dlcmVS
ZXN0b3JlZEJ5QVBJUmVxdWVzdDsKICAgICBpZiAoIWl0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQ
SVJlcXVlc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5p
dGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0ID0gKml0ZW1TdGF0ZXNXZXJlUmVzdG9y
ZWRCeUFQSVJlcXVlc3Q7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlPj4gaXRlbVN0YXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+PiBpdGVtU3RhdGVzOwogICAgIGRlY29kZXIgPj4gaXRlbVN0YXRlczsK
ICAgICBpZiAoIWl0ZW1TdGF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
NzYsNyArMjc2LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFWb2x1bWUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzPiBtdXRlZFN0YXRlRmxhZ3M7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3M+IG11dGVkU3RhdGVGbGFnczsKICAgICBkZWNvZGVyID4+
IG11dGVkU3RhdGVGbGFnczsKICAgICBpZiAoIW11dGVkU3RhdGVGbGFncykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVo
YXZpb3IpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8dWludDMyX3Q+PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPHVpbnQzMl90Pj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGRl
Y29kZXIgPj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGlmICghc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzE4LDE0ICszMTgsMTQg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50Owor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29k
ZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGlmICghaGFzUmVzb3VyY2VMb2FkQ2xp
ZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuaGFzUmVz
b3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+PiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsK
ICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0z
NDUsNyArMzQ1LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRD
b25maWd1cmF0aW9uVmlld1NpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPj4gb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+PiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogICAgIGRl
Y29kZXIgPj4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKICAgICBpZiAoIW92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNTMsNyAr
MzUzLDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheT4+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+
PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBhdHRh
Y2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFhdHRhY2htZW50RWxlbWVu
dEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zODgs
MjYgKzM4OCwyNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KLSAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVkaWFFeHRlbnNpb25IYW5kbGVzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IG1lZGlhRXh0
ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IG1lZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBpZiAoIW1lZGlhRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKm1lZGlh
RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7
CiAgICAgZGVjb2RlciA+PiBtZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIW1l
ZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCptZWRp
YUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAgICAgLy8gRklYTUUoMjA3NzE2KTogRW5kIHJlZ2lv
biB0byByZW1vdmUuCiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNv
ZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdUlPS2l0RXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmdwdUlPS2l0RXh0ZW5zaW9uSGFu
ZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1
TWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBn
cHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdU1hY2hFeHRlbnNpb25IYW5kbGVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDE1LDcgKzQxNSw3IEBAIE9wdGlv
bmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kCiAjZW5kaWYKIAogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNU
UlkpCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZm9u
dE1hY2hFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFmb250TWFjaEV4dGVu
c2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxkb3VibGU+PiBjcHVMaW1pdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4gY3B1TGltaXQ7CiAgICAg
ZGVjb2RlciA+PiBjcHVMaW1pdDsKICAgICBpZiAoIWNwdUxpbWl0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtNDU3LDE0ICs0NTcsMTQgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiB1cmxTY2hlbWVzV2l0aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0
b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGRlY29kZXIgPj4gdXJsU2NoZW1lc1dpdGhMZWdhY3lD
dXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGlmICghdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0
b21Qcm90b2NvbEhhbmRsZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMudXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzID0gV1RG
TW92ZSgqdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKTsKIAogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Pj4gYXBwbGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4+IGFw
cGxpY2F0aW9uTWFuaWZlc3Q7CiAgICAgZGVjb2RlciA+PiBhcHBsaWNhdGlvbk1hbmlmZXN0Owog
ICAgIGlmICghYXBwbGljYXRpb25NYW5pZmVzdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTQ3OSwxOSArNDc5LDE5IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFj
ZXNFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IHVzZXJDb250ZW50Q29udHJvbGxlclBh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0
ZXJzPiB1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gdXNl
ckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVyczsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJv
bGxlclBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzID0gV1RGTW92ZSgqdXNlckNvbnRl
bnRDb250cm9sbGVyUGFyYW1ldGVycyk7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+PiBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgZGVjb2RlciA+PiBiYWNr
Z3JvdW5kQ29sb3I7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3ZlKCpi
YWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+PiBvbGRQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFn
ZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNTAwLDM3ICs1MDAsMzcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNvcnNE
aXNhYmxpbmdQYXR0ZXJuczsKICAgICBkZWNvZGVyID4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
ICAgICBpZiAoIWNvcnNEaXNhYmxpbmdQYXR0ZXJucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNv
cnNEaXNhYmxpbmdQYXR0ZXJucyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291
cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGRl
Y29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFsb2Fkc1N1YnJlc291cmNlcykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVz
b3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SGFz
aFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBk
ZWNvZGVyID4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgaWYgKCFhbGxvd2VkTmV0d29ya0hv
c3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9ICphbGxvd2VkTmV0d29ya0hvc3RzOwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBk
ZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGlm
ICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsK
ICAgICAKLSAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkOwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1l
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgZGVj
b2RlciA+PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgaWYgKCFwcm9jZXNzRGlzcGxheU5hbWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMTNmYTMwZWYxNjZiMDhhNTJhMzk0
OTVhMWNmNjcxMDEwNjRkMzBkYS4uZDViMTNkMmIwOTE1YjQ4ZWNlOWJmNmRlOTZlODdiYTU5MDk0
ZWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3U2l6ZTsKIApAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiB2aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyOwogICAgIGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtMTIwLDEzICsx
MjAsMTMgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6
OkludFNpemUgbWluaW11bVNpemVGb3JBdXRvTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNpemUg
c2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAgICAgYm9vbCBhdXRvU2l6aW5nU2hv
dWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRTaXplPiB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOwogICAgIAogICAgIFdl
YkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiwgYnV0IHdlIHdvdWxkIG5lZWQgdG8KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+LCBidXQg
d2Ugd291bGQgbmVlZCB0bwogICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgZW51bXMgaW5zaWRlIE9w
dGlvbmFscyB3aGVuIGVuY29kaW5nIGFuZCBkZWNvZGluZy4gCi0gICAgT3B0aW9uYWw8dWludDMy
X3Q+IHNjcm9sbGJhck92ZXJsYXlTdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBz
Y3JvbGxiYXJPdmVybGF5U3R5bGU7CiAKICAgICBib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25k
UGFnZTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKICAgICBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsIHsgZmFsc2UgfTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCkBAIC0xNTIsMTAgKzE1MiwxMCBA
QCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgZG91YmxlIHZpZXdwb3J0
Q29uZmlndXJhdGlvbkxheW91dFNpemVTY2FsZUZhY3RvcjsKICAgICBkb3VibGUgdmlld3BvcnRD
b25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSB2aWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3U2l6ZTsKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBvdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gYXR0YWNobWVudEVsZW1lbnRF
eHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemU7
CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVz
OwogI2VuZGlmCiAjaWYgSEFWRShTVEFUSUNfRk9OVF9SRUdJU1RSWSkKLSAgICBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0
ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBmb250TWFjaEV4dGVuc2lvbkhh
bmRsZTsKICNlbmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VOVF9DT0xPUlMpCiAgICAgV2ViQ29yZTo6
Q29sb3IgYWNjZW50Q29sb3I7CkBAIC0xOTQsMTMgKzE5NCwxMyBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4gb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQ7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0OwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90PiB1cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzV2l0
aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4gYXBw
bGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3Q+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgbmVlZHNG
b250QXR0cmlidXRlcyB7IGZhbHNlIH07CkBAIC0yMTEsMTUgKzIxMSwxNSBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJQYXJh
bWV0ZXJzIHVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM7CiAKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvbGRQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb2xkUGFnZUlEOwogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwogICAgIGJvb2wgdXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBsb2Fk
c1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRleCBiMDlmMWMyOWE3MjEw
NTk1MDMzNzFjOWFlZGNhYTBhNzM1ZDRjNTljLi42NDhkMDIzMGNmOWQ1MWNiYTk2ZjZkNjIzYjAz
YTM4OGQ4MjRiNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3Jv
dXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNw
cApAQCAtMzYsMTQgKzM2LDE0IEBAIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHBhZ2VHcm91cElEOwogfQog
Ci1PcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQ
YWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlR3JvdXBJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlR3JvdXBJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VHcm91cElEOwogICAgIGlmICghcGFnZUdyb3VwSUQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmgKaW5kZXggYzJjYjYyMTljNDAxMzc0YTg4MWUwYjk4NmM4NWM3NGQ4YTJkYWI0YS4uOGNm
ODViMzQwYzExMzQ3ZmE4Mzg1MDUyNzM2ZmI0OWJmMzAwMGZhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5j
b2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3Vw
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxh
dGZvcm1Ub3VjaFBvaW50LmNwcAppbmRleCA5ZDQ0MDZhNDBhNGZhZGRmYjMwYzJlNjAxODVmMjhm
M2FhMzJmODc5Li41OTA0ZjEyNmFlOWJmNzE2NWNmMDA0YzYzYzE3ZGNkMDczMGU4NjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2ZvcmNlOwogfQogCi1PcHRpb25h
bDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2lkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBv
cHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCmluZGV4
IDEzODE2NWEzNTA0NTRhNWUzNjJmN2FiNjkwMDRiMzJlOGZlMzkzMmIuLmYwMDQ1NGViNzI5NjM3
MDBjMTIzY2JkMTQ0ODZlM2YyOWFmMzhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBvcHVwSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJ
dGVtLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYlBvcHVwSXRlbTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1faXNTZWxlY3RlZDsKIH0K
IAotT3B0aW9uYWw8V2ViUG9wdXBJdGVtPiBXZWJQb3B1cEl0ZW06OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBJdGVtOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFR5cGUgdHlwZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRl
eCA0ZjEyYzRiNWM5YmVhNmJhMTUxNjY1OWJiZDBmOGYxNzM1N2FjZDViLi4yYzM3NTQ1ZWNjNmM3
MmY4ZGZmYjNiMDgxYWU1OWVlNmI3OTI1N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQb3B1cEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0
ZW0uaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKICAgICBXZWJQb3B1
cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBi
b29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25z
dCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVs
LCBib29sIGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fdGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKaW5kZXggY2U1NmY5Y2Q0
NjI4NjA5NGM2ZTQxNDEwZWViYjRmOTQ5ZDdlZmU3OS4uOWQ2ZmQxOWVlYTdkNjA2MjNiMmE0NjBj
MWM5YjcyYWZiODQ4Njg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFZhbHVlTWFwPiB2YWx1ZXM7CisgICAgc3RkOjpv
cHRpb25hbDxWYWx1ZU1hcD4gdmFsdWVzOwogICAgIGRlY29kZXIgPj4gdmFsdWVzOwogICAgIGlm
ICghdmFsdWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0Lm1fdmFsdWVzID0g
V1RGTW92ZSgqdmFsdWVzKTsKIAotICAgIE9wdGlvbmFsPFZhbHVlTWFwPiBvdmVycmlkZGVuRGVm
YXVsdHM7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZU1hcD4gb3ZlcnJpZGRlbkRlZmF1bHRzOwog
ICAgIGRlY29kZXIgPj4gb3ZlcnJpZGRlbkRlZmF1bHRzOwogICAgIGlmICghb3ZlcnJpZGRlbkRl
ZmF1bHRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIyOTdiZWUyOTc3
ODVhOThiMWIyNTk4YTZhZmQ0MjcwNTA4YmNhMWIuLjJmYzBlMGE1MDliNzRmY2QxMmIyY2ExMmE2
NDlkZTVlMDE2YmNjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0yMDksMTMgKzIwOSwxMyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFdlYlByb2Nlc3NDcmVhdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pbmpl
Y3RlZEJ1bmRsZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBpbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGluamVj
dGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGluamVjdGVkQnVu
ZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWluamVjdGVkQnVuZGxlUGF0aEV4dGVu
c2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaW5qZWN0ZWRCdW5kbGVQYXRo
RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5PiBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gYWRkaXRpb25hbFNhbmRib3hFeHRl
bnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25I
YW5kbGVzOwogICAgIGlmICghYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjUsMTkgKzIyNSwxOSBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nl
c3NDcmVhdAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKLSAgICBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3ND
cmVhdAogCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBlbmFibGVSZW1v
dGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIWVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vz
c0NyZWF0CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0gICAgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBhdWRpb0NhcHR1cmVFeHRlbnNpb25IYW5kbGU7CisgICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGF1ZGlvQ2FwdHVyZUV4dGVuc2lv
bkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBpZiAoIWF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IHVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gdWlQcm9jZXNzQnVuZGxl
UmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gdWlQcm9jZXNzQnVu
ZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghdWlQcm9jZXNzQnVuZGxl
UmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MDUsNyArNDA1LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0
aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVu
UHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHNjcmVlblByb3BlcnRpZXM7CiAgICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjYsNTIgKzQyNiw1
MiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
Pj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAg
ICBpZiAoIXdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyA9IFdURk1vdmUoKndl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5z
aW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWNvbXBpbGVyU2VydmljZUV4
dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmNv
bXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpjb21waWxlclNlcnZpY2VF
eHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4gY29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4g
Y29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvbnRhaW5l
ck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjb250YWluZXJNYW5hZ2VyRXh0ZW5z
aW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5jb250YWlu
ZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY29udGFpbmVyTWFuYWdlckV4dGVu
c2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0
ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIW1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCptb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9u
SGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+PiBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+
IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbGF1bmNoU2VydmljZXNF
eHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmxh
dW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRl
bnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkaWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgZGVjb2RlciA+PiBkaWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkaWFn
bm9zdGljc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJh
bWV0ZXJzLmRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmRpYWdub3N0aWNz
RXh0ZW5zaW9uSGFuZGxlcyk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhh
bmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4g
ZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZHluYW1pY01hY2hF
eHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lv
bkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMpOwogCi0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGR5bmFtaWNJT0tpdEV4dGVu
c2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IGR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzksMTMgKzQ3OSwxMyBAQCBib29s
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBP
cHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c3lzdGVtSGFzQmF0dGVyeTsKICAgICBkZWNvZGVyID4+IHN5c3RlbUhhc0JhdHRlcnk7CiAgICAg
aWYgKCFzeXN0ZW1IYXNCYXR0ZXJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1l
dGVycy5zeXN0ZW1IYXNCYXR0ZXJ5ID0gV1RGTW92ZSgqc3lzdGVtSGFzQmF0dGVyeSk7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNBQzsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN5
c3RlbUhhc0FDOwogICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQUM7CiAgICAgaWYgKCFzeXN0ZW1I
YXNBQykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDk5LDEzICs0OTksMTMgQEAgYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJQcm9jZXNzQ3JlYXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3Vw
cG9ydHNQaWN0dXJlSW5QaWN0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OkNTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcD4g
Y3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OkNTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcD4gY3NzVmFsdWVUb1N5c3RlbUNv
bG9yTWFwOwogICAgIGRlY29kZXIgPj4gY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOwogICAgIGlm
ICghY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cGFyYW1ldGVycy5jc3NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAgPSBXVEZNb3ZlKCpjc3NWYWx1ZVRv
U3lzdGVtQ29sb3JNYXApOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGZvY3VzUmlu
Z0NvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGZvY3VzUmluZ0NvbG9y
OwogICAgIGRlY29kZXIgPj4gZm9jdXNSaW5nQ29sb3I7CiAgICAgaWYgKCFmb2N1c1JpbmdDb2xv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBFTkFCTEUoQ0ZQUkVGU19E
SVJFQ1RfTU9ERSkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheT4+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+PiBwcmVmZXJlbmNl
c0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhh
bmRsZXM7CiAgICAgaWYgKCFwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgT3B0aW9uYWw8Ym9vbD4gdXNlU3lzdGVt
QXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsKICAgICBkZWNvZGVyID4+IHVzZVN5c3RlbUFwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzOwogICAgIGlmICghdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9s
bGJhcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBIQVZFKENBVEFMWVNUX1VTRVJfSU5URVJG
QUNFX0lESU9NX0FORF9TQ0FMRV9GQUNUT1IpCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPGludDY0
X3QsIGRvdWJsZT4+IG92ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGU7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50NjRfdCwgZG91YmxlPj4gb3ZlcnJpZGVVc2VySW50ZXJm
YWNlSWRpb21BbmRTY2FsZTsKICAgICBkZWNvZGVyID4+IG92ZXJyaWRlVXNlckludGVyZmFjZUlk
aW9tQW5kU2NhbGU7CiAgICAgaWYgKCFvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjk1NGFjMjYxYmMzODMzNWU3ZDFm
ZDJiYTRlMzU0NTllYTdlZTg4Yy4uNmRhNjM0ZWE3ODM2YzY3NWVkODcyYjc0N2E4Y2M3Yzk1MmJk
ZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtMTk2LDE1ICsxOTYsMTUgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIENTdHJpbmcgaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZTsK
ICNlbmRpZgogCi0gICAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBjb21waWxl
clNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7Ci0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9u
SGFuZGxlOwotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbGF1bmNoU2Vy
dmljZXNFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5k
bGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxhdW5jaFNl
cnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUp
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHByZWZlcmVuY2Vz
RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAjZW5kaWYKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMuaAppbmRleCAxZGE1ZTMwYTI0MzZlOWYwZmI1YzAwMzkwMDIxZTlmNDNlMDhkN2ZhLi5m
ZjZhZjdiNmVjNDExN2I2MWI3NDA5MTRjNzJjNzdjMTY4YzcxZTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTU1
LDcgKzU1LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBi
b29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODAsOSArODAs
OSBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25J
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CiAgICAgZGVj
b2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9uSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC05MSw3ICs5MSw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTA0
LDcgKzEwNCw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZWRpYUNhY2hlRGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTEzLDcgKzExMyw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBt
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMiwyMyArMTIyLDIzIEBA
IE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgZGVjb2Rl
ciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmICghdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICAgICBkZWNvZGVyID4+
IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAgIGlmICghZG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9u
YWw8SGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+PiBkb21haW5zV2l0
aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8VG9wRnJhbWVE
b21haW4sIFN1YlJlc291cmNlRG9tYWluPj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7
CiAgICAgZGVjb2RlciA+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICAgICBpZiAo
IWRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVudC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVudC5oCmluZGV4IDM3OWIwNDljNWVkN2Mw
MzdiYzgzZTM1NjZhMWY0NzBiNGE1ODc2YzYuLjhjMWNjYzE3OGYyZWQxMjA4MDg0NWNmODMxMTZh
MzRkNDA3OTkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlRvdWNoRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJUb3VjaEV2ZW50LmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1U
b3VjaFBvaW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9pZGVudGlmaWVyIHsgMCB9OwpAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFN0YXRlKFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0K
IAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRp
b25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5j
cHAKaW5kZXggNjgwYjYyZjIxNjcwOTBkMDgzMGQ4NTlhNmRlZmM2Yzk3MTcyOGRhYi4uMDhmOTAx
NTBkYWJiM2VjNTlhY2I1NjJjZmVjYzA4YzFhZDQ4OWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3Bw
CkBAIC0zNywxOSArMzcsMTkgQEAgdm9pZCBXZWJVc2VyU2NyaXB0RGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQ7CiB9CiAK
LU9wdGlvbmFsPFdlYlVzZXJTY3JpcHREYXRhPiBXZWJVc2VyU2NyaXB0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IFdl
YlVzZXJTY3JpcHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxD
b250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlw
dD4gdXNlclNjcmlwdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVz
ZXJTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiB1c2VyU2NyaXB0OwogICAgIGlmICghdXNlclNjcmlw
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lk
IFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0OwogfQogCi1PcHRpb25hbDxXZWJVc2Vy
U3R5bGVTaGVldERhdGE+IFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViVXNlclN0eWxlU2hlZXREYXRhPiBXZWJVc2Vy
U3R5bGVTaGVldERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPENv
bnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+
IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxkSWRlbnRpZmllcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTkxLDE5ICs5MSwxOSBAQCB2b2lkIFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IG5hbWU7CiB9CiAKLU9wdGlvbmFsPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0
YT4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9u
YWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gd29ybGRJZGVudGlmaWVyOwogICAgIGlmICghd29ybGRJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAg
ICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aAppbmRleCBkMTU0ZjIwYTkxYzE4MGRlMjQwZmI1NDg4ZDRkNzg3YzIxNTU1M2NhLi5kYWYxYWFk
MjFhNWM3ZmIxYzQzYjM5NTIwMzAzYzM1NzVlYjU5NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlVzZXJTY3JpcHRE
YXRhIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKICAgICBDb250ZW50V29ybGRJZGVudGlm
aWVyIHdvcmxkSWRlbnRpZmllcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IFdlYlVzZXJTY3Jp
cHREYXRhIHsKIAogc3RydWN0IFdlYlVzZXJTdHlsZVNoZWV0RGF0YSB7CiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYlVzZXJTdHls
ZVNoZWV0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAg
dWludDY0X3QgaWRlbnRpZmllcjsKICAgICBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRl
bnRpZmllcjsKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFdlYlVzZXJTdHlsZVNoZWV0RGF0YSB7
CiAKIHN0cnVjdCBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEgewogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgQ29udGVudFdvcmxkSWRlbnRpZmll
ciB3b3JsZElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJX
aGVlbEV2ZW50Q29hbGVzY2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnRDb2FsZXNjZXIuY3BwCmluZGV4IGM0ZjgzZWMyNjlmN2Y3YzFjZjI2MTEyODk2Yzg0Yjc5ZGRl
MjE5YjMuLjJkNDQ3NzE4NzljYzA1YzEzYTEzNTEyMzA3MmJkYTYzNTYyYzQyMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCkBAIC0xMTIs
NyArMTEyLDcgQEAgYm9vbCBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNwYXRjaEV2
ZW50Tm93KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBtX3doZWVsRXZl
bnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZDsKIH0KIAotT3B0
aW9uYWw8V2ViV2hlZWxFdmVudD4gV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6bmV4dEV2ZW50VG9E
aXNwYXRjaCgpCitzdGQ6Om9wdGlvbmFsPFdlYldoZWVsRXZlbnQ+IFdlYldoZWVsRXZlbnRDb2Fs
ZXNjZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQogewogICAgIGlmIChtX3doZWVsRXZlbnRRdWV1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgKaW5kZXggMzVjZGM3NjAwNTlkODc5
YTg5NmU1MzRlYjI2ZDhlNzZhNjRmYjQ3NS4uZGYxMDlmY2QwZTcyZDRlMWJhYTMwY2QxY2Q4MjE3
MmE0M2YzN2QxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVu
dENvYWxlc2Nlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2Fs
ZXNjZXIuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyIHsK
IHB1YmxpYzoKICAgICAvLyBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdXNlIG5leHRFdmVudFRvRGlz
cGF0Y2goKSB0byBnZXQgdGhlIGV2ZW50IHRvIGRpc3BhdGNoLgogICAgIGJvb2wgc2hvdWxkRGlz
cGF0Y2hFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7Ci0gICAgT3B0aW9uYWw8V2Vi
V2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgpOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
V2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgpOwogCiAgICAgTmF0aXZlV2ViV2hlZWxF
dmVudCB0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggOGRmYWEzZGM5MDkw
NGEyYmMxZjFhYjNhMjIxNzRiZDFiNTBlOWU4MS4uZDhhNDU4NDM5MzhkNzgzMGJkNzAzZGZjZTg1
ZjU0Y2M4MWY4NzhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcApAQCAtNDIsMTEgKzQyLDExIEBAIHZvaWQgV2Vic2l0ZURhdGE6OkVu
dHJ5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
c2l6ZTsKIH0KIAotYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpIC0+IE9wdGlvbmFsPEVudHJ5PgorYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RW50cnk+CiB7CiAg
ICAgRW50cnkgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBkZWNvZGVyID4+IHNlY3Vy
aXR5T3JpZ2luRGF0YTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5oCmluZGV4IDZmZmQ0MmNkZWQ5MGVhYWRjYzY0NmNjNDMwMzE4MDI1Mzc0YmFk
ZDQuLjY0OTE0MjY2ZTRhZjY4NzZkYjBjZTU0ZWRlZTJlMDMxYTk1ZTJhODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaApAQCAtNTEsNyArNTEs
NyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBFbnRyeSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpFbnRyeT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YTo6RW50cnk+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKICAgICB9OwogCiAgICAgV2Vic2l0ZURhdGEgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggY2IyZTY3MGYxNTc0NTUxMzFkM2VkYTUyZTNiYzMzZjg0
YjE4MDJjNy4uNDkxMjE2NmM5Yzk4OGMzOTk0Njg1MjlhZTk3YjUwN2Y0Njc4OTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNw
cApAQCAtNTQsOTEgKzU0LDkxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwZXJUaGly
ZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfQogCi1PcHRpb25hbDxXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCi0gICAgT3B0
aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnM7CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMgPSBXVEZNb3ZlKCpuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpOwogCi0gICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gdWlQcm9jZXNzQ29va2llU3RvcmFn
ZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRp
ZmllcjsKICAgICBpZiAoIXVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3Rv
cmFnZUlkZW50aWZpZXIgPSBXVEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmll
cik7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3Jh
Z2VQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3Rv
cmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBp
bmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBpbmRleGVkRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIAotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFpbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIE9wdGlvbmFsPFN0cmluZz4g
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgaWYgKCFzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdURk1v
dmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOwogICAgIAotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOwogICAgIGRlY29kZXIgPj4gc2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7CiAgICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRlY29k
ZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5KTsKIAotICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJP
cmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdl
UXVvdGEgPSAqcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBkZWNvZGVyID4+IHBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggYTQ5
YmFmOGEyYTIyNGYyN2JlZjBhNmZiZDNlZmQ0YTBkMmE3MzExYy4uMmEyMmQ5NGUxMGJkNWNiZGEz
OTQwZDJhNGJiYWUyYTdlNzRhNGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgfldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KCk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nv
b2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb29r
aWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5jcHAKaW5kZXggNGE1ZmUxNGYyZWE0Zjg1OGZkYTJjN2RlYTljZGY3
OGJmMWEzYWVmNC4uMzhhZmJiNmE4OTZkNDVmOTdmNTY0NWIzMmZjNDdmMmFiY2MyNzBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKQEAgLTU2LDkx
ICs1Niw5MSBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpZGVtcG90ZW50TW9kZUF1dG9zaXppbmdP
bmx5SG9ub3JzUGVyY2VudGFnZXM7CiB9CiAKLU9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gY29udGVudEJs
b2NrZXJzRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50QmxvY2tlcnNFbmFibGVkOwogICAgIGlmICgh
Y29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxXZWJzaXRlQXV0b3BsYXlQb2xpY3k+IGF1dG9wbGF5UG9saWN5Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRvcGxheVBvbGljeTsK
ICAgICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5OwogICAgIGlmICghYXV0b3BsYXlQb2xpY3kp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25Q
ZXJtaXNzaW9uU3RhdGU+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlPiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwogICAgIGRl
Y29kZXIgPj4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZTsKICAgICBpZiAo
IWRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0
ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgc3RkOjpvcHRpb25h
bDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7
CiAgICAgZGVjb2RlciA+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiAgICAgaWYgKCFhbGxvd2Vk
QXV0b3BsYXlRdWlya3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4+IGN1c3RvbUhlYWRl
ckZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJG
aWVsZHM+PiBjdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgZGVjb2RlciA+PiBjdXN0b21IZWFkZXJG
aWVsZHM7CiAgICAgaWYgKCFjdXN0b21IZWFkZXJGaWVsZHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9wVXBQb2xpY3k+IHBvcFVwUG9saWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvcFVwUG9saWN5PiBwb3BVcFBvbGljeTsKICAg
ICBkZWNvZGVyID4+IHBvcFVwUG9saWN5OwogICAgIGlmICghcG9wVXBQb2xpY3kpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbVVzZXJB
Z2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50OwogICAgIGRl
Y29kZXIgPj4gY3VzdG9tVXNlckFnZW50OwogICAgIGlmICghY3VzdG9tVXNlckFnZW50KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21V
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgZGVjb2RlciA+PiBjdXN0
b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKICAgICBpZiAoIWN1c3RvbVVzZXJBZ2Vu
dEFzU2l0ZVNwZWNpZmljUXVpcmtzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CiAgICAgZGVjb2RlciA+PiBj
dXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKICAgICBpZiAoIWN1c3RvbU5hdmlnYXRvclBsYXRmb3Jt
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2Vic2l0ZU1l
dGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGRlY29k
ZXIgPj4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGlmICghbWV0YVZpZXdwb3J0UG9saWN5KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2Vic2l0ZU1lZGlh
U291cmNlUG9saWN5PiBtZWRpYVNvdXJjZVBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVNZWRpYVNvdXJjZVBvbGljeT4gbWVkaWFTb3VyY2VQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBt
ZWRpYVNvdXJjZVBvbGljeTsKICAgICBpZiAoIW1lZGlhU291cmNlUG9saWN5KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVTaW11bGF0ZWRN
b3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9s
aWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0
Y2hQb2xpY3k+IHNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k7CiAgICAgZGVjb2Rl
ciA+PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5OwogICAgIGlmICghc2ltdWxh
dGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9s
aWN5PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5OworICAgIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k+IGxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBsZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoUG9saWN5OwogICAgIGlmICghbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJv
b2w+IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcms7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBhbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrOwogICAgIGRlY29kZXIgPj4gYWxs
b3dDb250ZW50Q2hhbmdlT2JzZXJ2ZXJRdWlyazsKICAgICBpZiAoIWFsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmspCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdD4gYWxsb3dzQ29udGVudEphdmFT
Y3JpcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlw
dD4gYWxsb3dzQ29udGVudEphdmFTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiBhbGxvd3NDb250ZW50
SmF2YVNjcmlwdDsKICAgICBpZiAoIWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TW91c2VFdmVudFBv
bGljeT4gbW91c2VFdmVudFBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vdXNl
RXZlbnRQb2xpY3k+IG1vdXNlRXZlbnRQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtb3VzZUV2ZW50
UG9saWN5OwogICAgIGlmICghbW91c2VFdmVudFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09u
bHlIb25vcnNQZXJjZW50YWdlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRN
b2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBkZWNvZGVyID4+IGlkZW1w
b3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBpZiAoIWlkZW1w
b3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlcykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQ
b2xpY2llc0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEu
aAppbmRleCAzYThjODUwYWI1MTkzODdlOGJiZTA2YTkwNDA4MTIxNDY2ODRjNmZhLi5lMGY2Nzk0
NWU3NWM2YTMzNTVjMWQ0OTMxYzlhMGRhMThhYmFmZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBXZWJzaXRl
UG9saWNpZXNEYXRhIHsKICAgICBib29sIGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25v
cnNQZXJjZW50YWdlcyB7IGZhbHNlIH07CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA1
Yzk5M2U3MjQ5NDMxNjczODBhOGQ1ZjMzNTdmMDhiZGYxNWEyMzg3Li4zZGYzMjM5NzE5YjVjNGEw
MDIxM2M2MDU4N2FmMTk5YjBjMDg1NjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9B
cmd1bWVudENvZGVyc0NGLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHRlbXBsYXRlIHZvaWQgQXJn
dW1lbnRDb2RlcjxDRlR5cGVSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0
cmVhbUNvCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0KQogewotICAg
IE9wdGlvbmFsPENGVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENGVHlwZT4gdHlwZTsK
ICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yTnVtYmVyVHlwZShD
Rk51bWJlclR5cGUgbnVtYmVyVHlwZSkKIAogYm9vbCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxD
Rk51bWJlclJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IG51bWJlclR5cGVGcm9tSVBD
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21JUEM7CiAgICAgZGVj
b2RlciA+PiBudW1iZXJUeXBlRnJvbUlQQzsKICAgICBpZiAoIW51bWJlclR5cGVGcm9tSVBDIHx8
ICpudW1iZXJUeXBlRnJvbUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYxMCw3ICs2MTAsNyBAQCB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZT
dHJpbmdSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbQogCiBib29s
IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5nUmVmPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiByZXN1bHQpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGVuY29kaW5nRnJvbUlQQzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBl
bmNvZGluZ0Zyb21JUEM7CiAgICAgZGVjb2RlciA+PiBlbmNvZGluZ0Zyb21JUEM7CiAgICAgaWYg
KCFlbmNvZGluZ0Zyb21JUEMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmlu
ZGV4IGFlOWM5NjllZjg5YjQ1YjFlZWM3MzYyNTNlMGFmZTQzOTI0ZDdhY2MuLjZiNGMwNmFlMWZm
NjY3ZGFmZTExZDdkODZkMjUwMmYyMDI2ZTI1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTkxLDcg
KzE5MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJsUHJveHlTCiAgICAgZW5jb2RlciA8PCBzZXR0aW5n
cy5pZ25vcmVIb3N0cygpOwogfQogCi1PcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1l
bnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0
aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEN1cmxQcm94eVNldHRpbmdz
OjpNb2RlIG1vZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RlKSkKQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVl
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1
ZTo6UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBl
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xp
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAK
aW5kZXggMThmZWJiOGIzODJmNjY0Njc3MjJkNjNmODI2ZTBmZDVkMzFjMjk3NS4uYmUyN2M2NTQy
ZWQ3NGIwZTg3MjQ4Y2ExM2U2Mzk2YzVjYmEyYTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgR1JlZlB0cjxHVmFyaWFudAogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZ192YXJpYW50X2dldF9kYXRhKHZhcmlhbnQuZ2V0KCkpKSwg
Z192YXJpYW50X2dldF9zaXplKHZhcmlhbnQuZ2V0KCkpKTsKIH0KIAotT3B0aW9uYWw8R1JlZlB0
cjxHVmFyaWFudD4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IEFyZ3VtZW50
Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBDU3RyaW5nIHZhcmlhbnRUeXBlU3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFy
aWFudFR5cGVTdHJpbmcpKQpAQCAtNjIsNyArNjIsNyBAQCBPcHRpb25hbDxHUmVmUHRyPEdWYXJp
YW50Pj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50Pj46OmRlY29kZShEZWNvZGVyJiBk
ZQogCiAgICAgR1VuaXF1ZVB0cjxHVmFyaWFudFR5cGU+IHZhcmlhbnRUeXBlKGdfdmFyaWFudF90
eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4g
Ynl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPEdSZWZQdHI8R1ZhcmlhbnQ+ID4oZ192YXJpYW50X25ld19m
cm9tX2J5dGVzKHZhcmlhbnRUeXBlLmdldCgpLCBieXRlcy5nZXQoKSwgRkFMU0UpKTsKKyAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50PiA+KGdfdmFyaWFudF9uZXdfZnJv
bV9ieXRlcyh2YXJpYW50VHlwZS5nZXQoKSwgYnl0ZXMuZ2V0KCksIEZBTFNFKSk7CiB9CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlKQpAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIEdSZWZQdHI8RwogICAgIH0KIH0KIAotT3B0aW9uYWw8
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1Rsc0NlcnRp
ZmljYXRlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgdWludDMyX3QgY2hhaW5MZW5ndGg7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFpbkxlbmd0aCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuaAppbmRleCA0M2QwZWM0MWIwYjQ2YWVl
NjgwMGVhNDliZGI5MmY4YzJhODI3Nzc3Li42YjA2YWM4MmJlZjVkZDk0N2EzYTI4YzA5ZmQxMGM5
Y2QzMjQ4MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2Rl
cnNHTGliLmgKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50Pj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgR1JlZlB0cjxHVmFyaWFudD4pOwotICAgIHN0YXRpYyBPcHRp
b25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0
ZT4pOwotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1JlZlB0cjxHVGxzQ2VydGlm
aWNhdGU+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAppbmRleCA0MTBm
OGZhMzhjOGYwYTM3OTNlZGRmNDAxYzFlNThjMGVkMWNiYmJjLi5hYTIzNDk4MmNiMzQzYjA0NmJl
ZWQ1YWE0N2QxZGU2NWM5YzljNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
SW5wdXRNZXRob2RTdGF0ZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIElucHV0TWV0aG9k
U3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBoaW50czsKIH0KIAotT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SW5wdXRNZXRo
b2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGUucHVycG9zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lu
cHV0TWV0aG9kU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RT
dGF0ZS5oCmluZGV4IDY4YzEyYzk0Yzc0YmVjYmQ5OTY2MmNmYmNiOGEwYzg4ODZkZTNhZmIuLmFj
N2EzOWZkZGRkMThlMWVjNWM0NDk1OTczYmQwMGJiMWMwYmU3MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCkBAIC02OCw3ICs2OCw3IEBAIHN0cnVj
dCBJbnB1dE1ldGhvZFN0YXRlIHsKICAgICB2b2lkIGFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVU
eXBlKFdlYkNvcmU6OkF1dG9jYXBpdGFsaXplVHlwZSk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElucHV0TWV0
aG9kU3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIFB1cnBvc2UgcHVycG9zZSB7
IFB1cnBvc2U6OkZyZWVGb3JtIH07CiAgICAgT3B0aW9uU2V0PEhpbnQ+IGhpbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAppbmRleCBhNzM5ZTgyNmJlNDg5Mjcz
ZWRmYTlhMjEwNzZhMDU1NmY5YTM2NDhlLi4zMGY2MDFiNDI0ZjUwMjE1NGQxMzI5ODliMzU0Zjdk
YzNkNTgwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNz
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIFVzZXJNZXNzYWdlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXR0YWNobWVudHM7CiB9CiAKLU9wdGlvbmFs
PFVzZXJNZXNzYWdlPiBVc2VyTWVzc2FnZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIFVzZXJNZXNzYWdlIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKQEAgLTY5LDcgKzY5LDcgQEAgT3B0aW9uYWw8VXNlck1l
c3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHJlc3VsdC50eXBlID09IFR5cGU6OkVy
cm9yKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBlcnJvckNvZGU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGVycm9yQ29kZTsKICAgICAgICAgZGVjb2RlciA+PiBlcnJv
ckNvZGU7CiAgICAgICAgIGlmICghZXJyb3JDb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTc4LDEzICs3OCwxMyBAQCBPcHRpb25hbDxVc2VyTWVzc2FnZT4gVXNlck1l
c3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IHBhcmFtZXRlcnM7
CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gcGFyYW1ldGVyczsKICAgICBk
ZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gV1RGTW92ZSgqcGFyYW1l
dGVycyk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNobWVu
dHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNobWVu
dHM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50czsKICAgICBpZiAoIWF0dGFjaG1lbnRzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2Vy
TWVzc2FnZS5oCmluZGV4IDk1OTVlMjFlYjNmMDlkZmZmMjY3MTczM2Q1YjdlM2UzZmMyN2JiY2Qu
LmE5NmIwNGM4YjFkZDhlNzEwZDUzOTE1YzFmNzhiNTUyMWRlNGRiZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmgKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFVzZXJN
ZXNzYWdlIHsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxVc2VyTWVzc2FnZT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOwogCiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6TnVsbCB9OwogICAgIENTdHJpbmcgbmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4
IDczNTI4ODlhZjNkZDgzNmIwZmMwOTg1NWIzZTQ2Y2NhYzFjMTJjMmQuLjI1YTMwN2YzODI5ZTky
NzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNl
bGVjdGlvbkRhdGEmCiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7CiB9CiAKLU9wdGlv
bmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTZWxl
Y3Rpb25EYXRhIHNlbGVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuaAppbmRleCAyYTE3NWU2ZWY1NGYzYzNmMTM3MTAxMzE0MTg2NzE0ZWQxOTVk
ZTgyLi5kZTJhMGZlNjI0NGI4NTUyMWI3NjM2ZGIwZGM5MjNjOWVlNGM3MTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaApAQCAtNDUsNyArNDUsNyBA
QCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R3RrUGFn
ZVNldHVwPiYpOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAKaW5kZXggODNjYjQxYTRiMGJmY2Y5MjA2ZWJjMjI3NGE1MTNh
M2UwYTUxNWQ5Zi4uYzIwNDYzNzc3NGVlODAzZWFjNDJhMzRjZGU3OWFhNTU2ZjE0M2I4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50R3RrLmNwcApAQCAtMzksNyArMzksNyBAQCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZQogewog
fQogCi1OYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0
IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHByZWVk
aXRTZWxlY3Rpb25SYW5nZSkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJv
YXJkRXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIHN0ZDo6b3B0aW9u
YWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rpb25SYW5nZSkKICAgICA6IFdlYktleWJv
YXJkRXZlbnQoV2ViRXZlbnQ6OktleURvd24sIHRleHQsICJVbmlkZW50aWZpZWQiX3MsICJVbmlk
ZW50aWZpZWQiX3MsICJVKzAwMDAiX3MsIDIyOSwgR0RLX0tFWV9Wb2lkU3ltYm9sLCB0cnVlLCBX
VEZNb3ZlKHByZWVkaXRVbmRlcmxpbmVzKSwgV1RGTW92ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2Up
LCB7IH0sIGZhbHNlLCB7IH0sIFdhbGxUaW1lOjpub3coKSkKIHsKIH0KQEAgLTUwLDcgKzUwLDcg
QEAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY28KIH0KIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoZXZlbnQudHlwZSgpLCBldmVudC50ZXh0KCksIGV2
ZW50LmtleSgpLCBldmVudC5jb2RlKCksIGV2ZW50LmtleUlkZW50aWZpZXIoKSwgZXZlbnQud2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCksIGV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCksIGV2ZW50
LmhhbmRsZWRCeUlucHV0TWV0aG9kKCksIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+KGV2ZW50LnByZWVkaXRVbmRlcmxpbmVzKCkpLCBPcHRpb25hbDxFZGl0
aW5nUmFuZ2U+KGV2ZW50LnByZWVkaXRTZWxlY3Rpb25SYW5nZSgpKSwgVmVjdG9yPFN0cmluZz4o
ZXZlbnQuY29tbWFuZHMoKSksIGV2ZW50LmlzS2V5cGFkKCksIGV2ZW50Lm1vZGlmaWVycygpLCBl
dmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoZXZlbnQudHlwZSgpLCBl
dmVudC50ZXh0KCksIGV2ZW50LmtleSgpLCBldmVudC5jb2RlKCksIGV2ZW50LmtleUlkZW50aWZp
ZXIoKSwgZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksIGV2ZW50Lm5hdGl2ZVZpcnR1YWxL
ZXlDb2RlKCksIGV2ZW50LmhhbmRsZWRCeUlucHV0TWV0aG9kKCksIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4oZXZlbnQucHJlZWRpdFVuZGVybGlu
ZXMoKSksIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPihldmVudC5wcmVlZGl0U2VsZWN0aW9u
UmFuZ2UoKSksIFZlY3RvcjxTdHJpbmc+KGV2ZW50LmNvbW1hbmRzKCkpLCBldmVudC5pc0tleXBh
ZCgpLCBldmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGltZXN0YW1wKCkpCiAgICAgLCBtX25hdGl2
ZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVF
dmVudCgpKSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggOGRiZTdhZDcxYzNkZDBmOWJjYWEx
Yzc0YzE0YjFjYWVhNGEzMGY5Ni4uN2NjNjU3MzljMzIwY2I0MzEyZDlkNzA1Mjg0MjIwYTM4M2Ew
MjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNl
RXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiBldmVu
dCwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0
YSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2
ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gZGVsdGEpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
TW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50LCBkZWx0YSkpCiAgICAgLCBtX25hdGl2
ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKIHsKIH0KIAotTmF0aXZlV2ViTW91c2VFdmVu
dDo6TmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb3NpdGlvbiwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRTaXplPiBkZWx0YSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGlu
dCBldmVudENsaWNrQ291bnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0
YSkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2
ZW50KGV2ZW50LCBwb3NpdGlvbiwgcG9zaXRpb24sIGV2ZW50Q2xpY2tDb3VudCwgZGVsdGEpKQog
ICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CkBAIC00OCw3ICs0
OCw3IEBAIE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKQogewogfQogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpO
YXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8
TW9kaWZpZXI+IG1vZGlmaWVycywgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSwg
V2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSkK
K05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0
b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50
IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0U2l6ZT4gZGVsdGEsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQs
IGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpCiAgICAgOiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1
dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YS52YWx1ZV9vcihX
ZWJDb3JlOjpGbG9hdFNpemUoKSkud2lkdGgoKSwgZGVsdGEudmFsdWVfb3IoV2ViQ29yZTo6Rmxv
YXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSwgMCwgTm9UYXAsIHBvaW50ZXJJZCwgcG9pbnRlclR5cGUpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGRlYjM2OTM4NjVjMTc3
NWQ5M2QwNDFhYTQyMzkzMzc2YzhjN2RlY2MuLjhkNjI2OTBmNDNjZjVmZWE2OWI4ZjkwYzg3Y2Fm
NmQ1MTA2NWFkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIGlubGluZSBzaG9ydCBwcmVzc2VkTW91
c2VCdXR0b25zKEdka01vZGlmaWVyVHlwZSBzdGF0ZSkKICAgICByZXR1cm4gYnV0dG9uczsKIH0K
IAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29u
c3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3VycmVudENsaWNrQ291bnQsIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gZGVsdGEpCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGludCBjdXJyZW50Q2xpY2tDb3VudCwgc3Rk
OjpvcHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQogewogICAgIGRvdWJsZSB4LCB5OwogICAgIGdk
a19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFdl
Yk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdk
a0V2ZW50KiBldmVudCwgaW50IGN1CiAgICAgcmV0dXJuIGNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZl
bnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0sIHsgY2xhbXBUb0lu
dGVnZXIoeFJvb3QpLCBjbGFtcFRvSW50ZWdlcih5Um9vdCkgfSwgY3VycmVudENsaWNrQ291bnQs
IGRlbHRhKTsKIH0KIAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGN1cnJlbnRDbGlja0NvdW50LCBP
cHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQorV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGN1cnJlbnRD
bGlja0NvdW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gZGVsdGEpCiB7CiAjaWYgVVNFKEdU
SzQpCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBOYXRpdmVXZWJNb3VzZUV2ZW50IHJl
cHJlc2VudGluZyBhIGNyb3NzaW5nIGV2ZW50IGlzIGNvcGllZC4KQEAgLTI2NCw3ICsyNjQsNyBA
QCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25z
dCBHZGtFdmVudCogZXZlbnQsIFdlYldoZQogCiBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0IEludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJXaGVlbEV2
ZW50OjpQaGFzZSBwaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZSkKIHsK
LSAgICBPcHRpb25hbDxGbG9hdFNpemU+IHdoZWVsVGlja3M7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IHdoZWVsVGlja3M7CiAgICAgR2RrU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsK
ICAgICBpZiAoIWdka19ldmVudF9nZXRfc2Nyb2xsX2RpcmVjdGlvbihldmVudCwgJmRpcmVjdGlv
bikpIHsKICAgICAgICAgZGlyZWN0aW9uID0gR0RLX1NDUk9MTF9TTU9PVEg7CkBAIC0zMzQsNyAr
MzM0LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdAogICAgICAgICB3YWxsVGltZUZvckV2ZW50
KGV2ZW50KSk7CiB9CiAKLVdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYg
cHJlZWRpdFNlbGVjdGlvblJhbmdlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKQorV2ViS2V5
Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
R2RrRXZlbnQqIGV2ZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgaGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVl
ZGl0VW5kZXJsaW5lcywgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVj
dGlvblJhbmdlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKQogewogICAgIGd1aW50IGtleXZh
bDsKICAgICBnZGtfZXZlbnRfZ2V0X2tleXZhbChldmVudCwgJmtleXZhbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMTlmODg2YWQ1NmM5NzY2ZDdl
YmQ5OTg5YzVjYWRhOTZhMDllNjBmOS4uNzliYTc0ZTc5MTRhNzQ3ZjlhYWE4MDc5NDA3NDZmNTNl
OWFiZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApA
QCAtNDQsMTUgKzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFdmVudEZh
Y3RvcnkgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNl
RXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4p
OwotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2Rr
RXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgaW50LCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKKyAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNy
ZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0U2l6ZT4pOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZl
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBj
cmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdlYldoZWVs
RXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCosIFdlYldoZWVsRXZlbnQ6
OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKTsKICAgICBzdGF0aWMg
V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVs
RXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBo
YXNlIG1vbWVudHVtUGhhc2UpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldo
ZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tz
LCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFz
ZSk7Ci0gICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlv
bmFsPEVkaXRpbmdSYW5nZT4mJiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcyk7CisgICAgc3Rh
dGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVu
dCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25h
bDxFZGl0aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpOwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hF
dmVudChjb25zdCBHZGtFdmVudCosIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiYpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDVjMTk5NTgyODVmZmE2NWI3Y2ZiN2Jj
MjA1YTg5MzE4MDgwYWEwNTYuLmJiMDBjNDYxZDEyMjJmZDVmYWFlNzMyNjRmYmZiNTRhMWUyMzE5
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QgcmVxdWVzdDsKIAogICAgIGJvb2wgY2FuQmVWYWxpZCB7IHRydWUgfTsKLSAgICBP
cHRpb25hbDxib29sPiBub2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG5vZGVBdFBvc2l0aW9uSGFzRG91YmxlQ2xpY2tIYW5kbGVyOwog
ICAgIGJvb2wgaXNTZWxlY3RhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzU2VsZWN0ZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgcHJlZmVyc0RyYWdnaW5nT3ZlclRleHRTZWxlY3Rpb24geyBmYWxz
ZSB9OwpAQCAtODgsNyArODgsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24gewogICAgIGZsb2F0IGNhcmV0SGVpZ2h0IHsgMCB9OwogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBsaW5lQ2FyZXRFeHRlbnQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDdXJzb3I+IGN1
cnNvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkN1cnNvcj4gY3Vyc29yOwogCiAgICAg
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgbGlua0luZGljYXRvcjsKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCkBAIC05Niw4ICs5Niw4IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGRhdGFEZXRlY3RvclJlc3Vs
dHM7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVt
ZW50Q29udGV4dDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gaW1hZ2VF
bGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiBlbGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBpbWFnZUVsZW1lbnRDb250ZXh0OwogCiAgICAgLy8gQ29weSBjb21wYXRpYmxlIG9wdGlv
bmFsIGJpdHMgZm9yd2FyZCAoZm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgYSBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbgogICAgIC8vIHdpdGggc25hcHNob3RzIGluIGl0LCBhbmQgcGVy
Zm9ybSBhbm90aGVyIHJlcXVlc3QgZm9yIHRoZSBzYW1lIHBvaW50IHdpdGhvdXQgcmVxdWVzdGlu
ZyB0aGUgc25hcHNob3RzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IDE1NzI1YmM2YWRj
NzEwODdlMjA1ZTEwM2RmZThjMWJkMzY1YzNhYzUuLmU0ZDA5NDIzYjgyN2FjNjYzNzYzM2E1Y2Zi
YWI1ZWIwNGRhZTEwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTE3Myw3ICsxNzMs
NyBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmN1cnNvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gbGlua0luZGljYXRvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBsaW5rSW5kaWNhdG9yOwogICAgIGRlY29k
ZXIgPj4gbGlua0luZGljYXRvcjsKICAgICBpZiAoIWxpbmtJbmRpY2F0b3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29y
cmVjdGlvbkNvbnRleHQuaAppbmRleCA5NGE5YzUwYzRiNDc1YWU4ODNkODdkMjk5MWIwNjhlZDBm
MTBhZjQ0Li4xMDE2M2ZlN2RlOGYyY2YxMGIyN2MyZTM0N2YxNDBmNWFlNzI5MGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgewogICAg
IEVkaXRpbmdSYW5nZSBtYXJrZWRUZXh0UmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dD4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01Myw3ICs1Myw3IEBAIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikKICAgICBlbmNvZGVyIDw8IG1hcmtlZFRleHRSYW5nZTsKIH0KIAotdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0PiBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvcnJlY3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb3JyZWN0aW9uLmNvbnRleHRCZWZvcmUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oCmluZGV4IGQ3NDAxNGQ1NzM4OWE1YjBiMmJlNGNj
ZTYxN2I4OTQ2YTAxNjkxOTguLjZiODFkMzE3OGIwYTJkNWE4YTRlMjE3MmQ4MzBmYzY0OTFlNjc5
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YSB7CiAg
ICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJBdXRvY29y
cmVjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEubW0KaW5kZXggYzEyODdkMWI3NjEwZmY1YjIyNTBlNTNmNzBkN2Q1MGU1YWMzZmVjMi4u
OGE5ZmUzMWM1NzgzODNmYjczMTc2ZWEwOThhMzFjYTg3ODJjOGNiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCkBAIC00NCw5ICs0
NCw5IEBAIHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnQuZ2V0KCkpOwogfQog
Ci1PcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQXV0b2NvcnJl
Y3Rpb25EYXRhPiBXZWJBdXRvY29ycmVjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UmVjdD4+IHRleHRSZWN0czsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiB0ZXh0UmVjdHM7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0UmVjdHM7CiAgICAgaWYgKCF0ZXh0UmVjdHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5
LmgKaW5kZXggMjYxMGMxMTRhNzI2N2U1ZWZjZTJiNjlmOTFiYjgyZWY5ZjE4YmE2Yy4uOTA3NTFk
ODdkODJiZDYwMzhmNTcxMGNjM2I1MzBhMTBhNWJkMWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KDo6
V2ViRXZlbnQgKik7CiAKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xM
X0VWRU5UX0hBTkRMSU5HKQotICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQgY3JlYXRl
V2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcsIE9wdGlv
bmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhhc2UgPSBzdGQ6Om51
bGxvcHQpOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxF
dmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcsIHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZSA9IHN0ZDo6bnVsbG9w
dCk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlm
aWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQppbmRleCBhZGJkNTE1
OGUzM2ZmNDg2ZGRjNDE0MmI2ZTZhMWYzNjk2M2I4M2Q4Li4yZTM5MzNiY2JlMzY3MmQyNzNiZmZj
MzkxMTMzZGNlMTJjMjIyNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViSU9TRXZlbnRGYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJ
T1NFdmVudEZhY3RvcnkubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50OjpQaGFzZSB0b1dlYlBoYXNlKFVJU2Nyb2xsUGhhc2UgcGhhc2UpCiAgICAgfQog
fQogCi1XZWJLaXQ6OldlYldoZWVsRXZlbnQgV2ViSU9TRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJX
aGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZW50LCBVSVZpZXcgKmNvbnRlbnRWaWV3LCBPcHRp
b25hbDxXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlPiBvdmVycmlkZVBoYXNlKQorV2ViS2l0
OjpXZWJXaGVlbEV2ZW50IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChV
SVNjcm9sbEV2ZW50ICpldmVudCwgVUlWaWV3ICpjb250ZW50Vmlldywgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlPiBvdmVycmlkZVBoYXNlKQogewogICAgIFdlYkNv
cmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtl
dmVudCBsb2NhdGlvbkluVmlldzpjb250ZW50Vmlld10pOwogICAgIENHVmVjdG9yIGRlbHRhVmVj
dG9yID0gW2V2ZW50IF9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6Y29udGVudFZpZXdd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQ
b2ludElPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBv
aW50SU9TLmNwcAppbmRleCBlNGM4MTFiMTdjYzBiOGE4MzIxYzc3NDYwZDVhMWQ1MzQ4YjEyN2Ex
Li4wM2UxMTgxNTRmNmJiNWI3MDRiNGVjYjgzZDNkOTU0M2Y4YzVhNWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcApA
QCAtNDksNyArNDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgogfQogCi1PcHRpb25hbDxXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViUGxh
dGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X2lkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBy
ZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW0KaW5kZXggNGNlZWUwM2Q3YjAwMzk3Y2Mx
MTZjMGM2NGJlNWM1ZmI2ZWI4MDdiMC4uYWFmY2E2NWU0Y2VlMjEzOGJiMDJkODJkMmNjMjE3ZWY0
ZTM1MDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
UHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCkBAIC00NCw5ICs0NCw5IEBAIGJvb2wgZGVm
YXVsdFRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlKCkKICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLXN0YXRpYyBPcHRpb25h
bDxib29sPiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29s
PiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9w
dGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxz
dGQ6Om9wdGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0OwogICAgIHJldHVybiBhbGxvd3NSZXF1
ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggNDE5MmVhNGEzMDBjZWMzMzlk
NDVmMGE3NWZmY2I3NjNjM2E2OWY4Yy4uODJiYzZjYTFiZTkwYTkxYmI2MTg5M2ZlNDRlNWRiMzQ1
NWIzYmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xpYndw
ZS9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TGliV1BFLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBIYW5kbGVkQnlJbnB1dE1ldGhvZCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0
VW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rpb25SYW5n
ZSkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0
IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgSGFu
ZGxlZEJ5SW5wdXRNZXRob2QgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywg
c3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlKQogICAg
IDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoZXZlbnQsIHRleHQsIGhhbmRsZWRCeUlucHV0TWV0aG9kID09IEhhbmRsZWRCeUlucHV0TWV0
aG9kOjpZZXMsIFdURk1vdmUocHJlZWRpdFVuZGVybGluZXMpLCBXVEZNb3ZlKHByZWVkaXRTZWxl
Y3Rpb25SYW5nZSkpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGli
d3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2Vi
RXZlbnRGYWN0b3J5LmNwcAppbmRleCAyMTIyNjllMzAyOWMwZTAzMGQ2YjdkNTc0ZGJkMDQ5Y2Iw
MjdmNDE2Li5hMzM5MmVmMmVjYWVmMWNjNDdjZjkwOWI1MzkwYzgwMGZlMjE5ZTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIFdhbGxUaW1lIHdhbGxUaW1lRm9yRXZlbnRUaW1lKHVpbnQ2NF90IG1zVGlt
ZVN0YW1wKQogICAgIHJldHVybiBmaXJzdEV2ZW50V2FsbFRpbWUgKyBTZWNvbmRzKGRlbHRhIC8g
MTAwMC4pOwogfQogCi1XZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBP
cHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlKQorV2ViS2V5Ym9h
cmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0IHdw
ZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBo
YW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRp
bmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpCiB7CiAgICAgcmV0dXJuIFdlYktleWJv
YXJkRXZlbnQoZXZlbnQtPnByZXNzZWQgPyBXZWJFdmVudDo6S2V5RG93biA6IFdlYkV2ZW50OjpL
ZXlVcCwKICAgICAgICAgdGV4dC5pc051bGwoKSA/IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXlfY29kZSkgOiB0ZXh0LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGVkZTFk
M2ViMTMxZTkxYTJkOTQ4N2UzMTgwMTQzMGMwNDJlMzBlNGMuLjZlZDY5ZmJkYTY0NjdmMmFhZDU1
NGM3MWExMTU4NDUwY2Q4NDhkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xp
YndwZS9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
V2ViRXZlbnRGYWN0b3J5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYktleWJvYXJk
RXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgT3B0aW9uYWw8RWRpdGlu
Z1JhbmdlPiYmKTsKKyAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRfZXZlbnQqLCBjb25zdCBTdHJpbmcmLCBi
b29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4+JiYsIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmKTsK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVf
aW5wdXRfcG9pbnRlcl9ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBzdGF0
aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhp
c19ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwg
V2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZSk7CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KaW5kZXggMWM4NTU3MWJkZGQ4Y2Q1NGEwMTI2NTZlYjcwMGRiZDQyOTE2MDVjYS4uNGQyZmM0
NDUzN2MwYjYwMGYyNWEwOTJmZjc5YjUzNDY3MTllMjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBz
dGF0aWMgdm9pZCBzZXROb3RpZnlPcHRpb25zKCkKIH0KIAogI2lmIFVTRShDQUNIRV9DT01QSUxF
RF9TQU5EQk9YKQotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gZmlsZUNvbnRlbnRzKGNv
bnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRMb2NrID0gZmFsc2UsIE9wdGlvblNldDxGaWxl
U3lzdGVtOjpGaWxlTG9ja01vZGU+IGxvY2tNb2RlID0gRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
OjpFeGNsdXNpdmUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGZpbGVDb250
ZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkTG9jayA9IGZhbHNlLCBPcHRpb25T
ZXQ8RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSA9IEZpbGVTeXN0ZW06OkZpbGVM
b2NrTW9kZTo6RXhjbHVzaXZlKQogewogICAgIEZpbGVIYW5kbGUgZmlsZSA9IHNob3VsZExvY2sg
PyBGaWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCwgbG9ja01v
ZGUpIDogRmlsZUhhbmRsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwog
ICAgIGZpbGUub3BlbigpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBwcm9jZXNzU3RvcmFnZUNsYXNzKFdlYkNvcmU6OkF1eGlsaWFyeVByb2Nlc3NUeXBlIHR5cGUp
CiB9CiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotc3RhdGljIE9wdGlvbmFs
PENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIGluaXRpYWxpemF0aW9uUGFyYW1ldGVycywgY29uc3Qg
U2FuZGJveFBhcmFtZXRlcnNQdHImIHNhbmRib3hQYXJhbWV0ZXJzLCBjb25zdCBTdHJpbmcmIHBy
b2ZpbGVPclByb2ZpbGVQYXRoLCBib29sIGlzUHJvZmlsZVBhdGgpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxDU3RyaW5nPiBzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMsIGNv
bnN0IFNhbmRib3hQYXJhbWV0ZXJzUHRyJiBzYW5kYm94UGFyYW1ldGVycywgY29uc3QgU3RyaW5n
JiBwcm9maWxlT3JQcm9maWxlUGF0aCwgYm9vbCBpc1Byb2ZpbGVQYXRoKQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5jb3VudCgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgK
aW5kZXggY2Y0YjQ3YTYzY2E4ZmY2MGY4M2M0NmY5ZGQxMzg0YTc5MThhMmM4OC4uMzdlNGFkNDI3
NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBDb25kaXRpb24gbV9wYXJzZVRy
YWNrc0NvbmRpdGlvbjsKICAgICBMb2NrIG1fcGFyc2VUcmFja3NMb2NrOwogICAgIE1lZGlhVGlt
ZSBtX2R1cmF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wYXJzZVRyYWNrc0xvY2spOwotICAg
IE9wdGlvbmFsPE9TU3RhdHVzPiBtX3BhcnNlVHJhY2tzU3RhdHVzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9wYXJzZVRyYWNrc0xvY2spOworICAgIHN0ZDo6b3B0aW9uYWw8T1NTdGF0dXM+IG1fcGFy
c2VUcmFja3NTdGF0dXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAg
ICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0
ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBlNGJlZjIzYzZlZWFkNzA2NzVhNDRkNDQzMWY5MWQw
NTgyZDU4MDk5Li4wMDM0NjhiZTBiMzcxN2ZkMGY1NGMyOWFmNGNiYzE0NjNiODlkODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRl
UmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVS
YW5nZTsgfQogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CiAgICAgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCmluZGV4IGU1NDNlMDNlMmY0ZWYwNDU3YzIxN2VmYzYwMzAzODMxYzY2OWZmMzku
LmYyNDk3NWIxOWEwOTVlZGE3MGM3NGEyM2NlOTM3NzdmNWU2NTBmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMTM4LDEyICsxMzgsMTIgQEAgTWVkaWFTYW1wbGVDdXJz
b3I6Ok1lZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVkaWFT
YW1wbGVDdXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3JkZXJlZE1hcD4KLU9wdGlvbmFsPHR5
cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yPiBNZWRpYVNhbXBsZUN1cnNvcjo6bG9jYXRlSXRl
cmF0b3IoT3JkZXJlZE1hcCYgc2FtcGxlcywgYm9vbCBoYXNBbGxTYW1wbGVzKSBjb25zdAorc3Rk
OjpvcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gTWVkaWFTYW1wbGVDdXJz
b3I6OmxvY2F0ZUl0ZXJhdG9yKE9yZGVyZWRNYXAmIHNhbXBsZXMsIGJvb2wgaGFzQWxsU2FtcGxl
cykgY29uc3QKIHsKICAgICBBU1NFUlQobV9sb2NhdG9yTG9jay5pc0xvY2tlZCgpKTsKICAgICB1
c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fbG9jYXRvciwKLSAgICAgICAgWyZdKGNvbnN0IE1lZGlhVGltZSYg
cHJlc2VudGF0aW9uVGltZSkgLT4gT3B0aW9uYWw8SXRlcmF0b3I+IHsKKyAgICAgICAgWyZdKGNv
bnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSkgLT4gc3RkOjpvcHRpb25hbDxJdGVyYXRv
cj4gewogICAgICAgICAgICAgYXNzZXJ0SXNIZWxkKG1fbG9jYXRvckxvY2spOwogICAgICAgICAg
ICAgYXV0byBpdGVyYXRvciA9IHVwcGVyQm91bmQoc2FtcGxlcywgcHJlc2VudGF0aW9uVGltZSk7
CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gc2FtcGxlcy5iZWdpbigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxl
Q3Vyc29yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVDdXJzb3IuaAppbmRleCBiNzU2ZTI2ZDg3YWYzNWE5MzU3MWEyZGI0OGNhMzFiM2Nk
OTliYmY3Li42NjVkMDAzNWRiMGVmYTIzYTgxY2ZiNThkMDExNjZjZDA4MDFkODI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1w
bGVDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIE1l
ZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYmLCBNZWRpYVRyYWNrUmVhZGVyJiwgTG9jYXRvcik7
CiAgICAgTWVkaWFTYW1wbGVDdXJzb3IoQWxsb2NhdG9yJiYsIGNvbnN0IE1lZGlhU2FtcGxlQ3Vy
c29yJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmRlcmVkTWFwPiBPcHRpb25hbDx0eXBl
bmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRlSXRlcmF0b3IoT3JkZXJlZE1hcCYsIGJv
b2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JkZXJlZE1hcD4gc3RkOjpvcHRpb25hbDx0eXBlbmFt
ZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRlSXRlcmF0b3IoT3JkZXJlZE1hcCYsIGJvb2wg
aGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7CiAg
ICAgV2ViQ29yZTo6TWVkaWFTYW1wbGUqIGxvY2F0ZU1lZGlhU2FtcGxlKFdlYkNvcmU6OlNhbXBs
ZU1hcCYsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2Nh
dG9yTG9jayk7CiAgICAgVGltaW5nIGxvY2F0ZVRpbWluZyhXZWJDb3JlOjpTYW1wbGVNYXAmLCBi
b29sIGhhc0FsbFNhbXBsZXMpIGNvbnN0IFdURl9SRVFVSVJFU19MT0NLKG1fbG9jYXRvckxvY2sp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFUcmFja1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAKaW5kZXggOWFlM2QwNTAyYWRiZGVjZmVk
YjJlNmNiYmY3YWQ2MmVlM2ZiOGUzNC4uNTRiMzEyOTliMzhhM2FiNzRiMmMwODFmMjlkOTFiOGIw
NzM4OGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtNTksNyArNTksNyBA
QCBDb3JlTWVkaWFXcmFwcGVkPE1lZGlhVHJhY2tSZWFkZXI+KiBNZWRpYVRyYWNrUmVhZGVyOjp1
bndyYXAoQ01CYXNlT2JqZWN0UmVmIG9iagogICAgIHJldHVybiB1bndyYXAoY2hlY2tlZF9jZl9j
YXN0PFdyYXBwZXJSZWY+KG9iamVjdCkpOwogfQogCi1SZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4g
TWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVk
aWFGb3JtYXRSZWFkZXImIGZvcm1hdFJlYWRlciwgQ01NZWRpYVR5cGUgbWVkaWFUeXBlLCB1aW50
NjRfdCB0cmFja0lELCBPcHRpb25hbDxib29sPiBlbmFibGVkKQorUmVmUHRyPE1lZGlhVHJhY2tS
ZWFkZXI+IE1lZGlhVHJhY2tSZWFkZXI6OmNyZWF0ZShBbGxvY2F0b3ImJiBhbGxvY2F0b3IsIGNv
bnN0IE1lZGlhRm9ybWF0UmVhZGVyJiBmb3JtYXRSZWFkZXIsIENNTWVkaWFUeXBlIG1lZGlhVHlw
ZSwgdWludDY0X3QgdHJhY2tJRCwgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgKGFsbG9jYXRvcikgTWVkaWFUcmFja1JlYWRlcihXVEZNb3Zl
KGFsbG9jYXRvciksIGZvcm1hdFJlYWRlciwgbWVkaWFUeXBlLCB0cmFja0lELCBlbmFibGVkKSk7
CiB9CkBAIC03MCw3ICs3MCw3IEBAIFdvcmtRdWV1ZSYgTWVkaWFUcmFja1JlYWRlcjo6c3RvcmFn
ZVF1ZXVlKCkKICAgICByZXR1cm4gcXVldWU7CiB9CiAKLU1lZGlhVHJhY2tSZWFkZXI6Ok1lZGlh
VHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYgYWxsb2NhdG9yLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRl
ciYgZm9ybWF0UmVhZGVyLCBDTU1lZGlhVHlwZSBtZWRpYVR5cGUsIHVpbnQ2NF90IHRyYWNrSUQs
IE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCitNZWRpYVRyYWNrUmVhZGVyOjpNZWRpYVRyYWNrUmVh
ZGVyKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVkaWFGb3JtYXRSZWFkZXImIGZvcm1h
dFJlYWRlciwgQ01NZWRpYVR5cGUgbWVkaWFUeXBlLCB1aW50NjRfdCB0cmFja0lELCBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGVuYWJsZWQpCiAgICAgOiBDb3JlTWVkaWFXcmFwcGVkKFdURk1vdmUoYWxs
b2NhdG9yKSkKICAgICAsIG1fdHJhY2tJRCh0cmFja0lEKQogICAgICwgbV9tZWRpYVR5cGUobWVk
aWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmgKaW5kZXggOTIwYmJhMWI5Y2M2OGRmZTY3
ODIzMzJjMGJlMTY1OWI4NzkwZDhjNi4uMTIwNWJjMjZkYWZlZTdkZDRmZGNhN2M4NjYzODE4ZmQ4
Zjg5NzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQ29yZU1lZGlhV3JhcHBlZDxNZWRpYVRyYWNrUmVhZGVyPiogdW53
cmFwKENNQmFzZU9iamVjdFJlZik7CiAgICAgc3RhdGljIFdURjo6V29ya1F1ZXVlJiBzdG9yYWdl
UXVldWUoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4gY3JlYXRlKEFs
bG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50NjRf
dCwgT3B0aW9uYWw8Ym9vbD4pOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4g
Y3JlYXRlKEFsbG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBl
LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxib29sPik7CiAKICAgICB1aW50NjRfdCB0cmFja0lE
KCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CiAgICAgQ01NZWRpYVR5cGUgbWVkaWFUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB1c2luZyBDb3JlTWVkaWFXcmFwcGVkPE1lZGlhVHJhY2tSZWFkZXI+
Ojp1bndyYXA7CiAKLSAgICBNZWRpYVRyYWNrUmVhZGVyKEFsbG9jYXRvciYmLCBjb25zdCBNZWRp
YUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50NjRfdCwgT3B0aW9uYWw8Ym9vbD4pOwor
ICAgIE1lZGlhVHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYsIGNvbnN0IE1lZGlhRm9ybWF0UmVhZGVy
JiwgQ01NZWRpYVR5cGUsIHVpbnQ2NF90LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAogICAgIC8v
IENNQmFzZUNsYXNzCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiV2ViS2l0OjpNZWRpYVRyYWNrUmVhZGVyIl9zOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCA3MGE1YzgwNDQ2Y2VjOGVlZTQ3MzU2
OTNlMWM4NmU0YjYzMTU4M2NjLi4zYmNlMDE0MDY3ZWRkYzhjNTI0ZGY4ZjA4OTZmZjEzM2FmYjVm
OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBo
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAg
LTEwOSw3ICsxMDksNyBAQCBlbnVtIGNsYXNzIE9iakNUeXBlIDogdWludDhfdCB7CiAgICAgV0tU
eXBlUmVmV3JhcHBlciwKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21P
YmplY3QoaWQgb2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9t
T2JqZWN0KGlkIG9iamVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKIApAQCAtMzA3LDExICsz
MDcsMTEgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYWdlUHJveHlJ
RDsKICAgICAgICAgaWYgKCFwYWdlUHJveHlJRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOwog
ICAgICAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKICAgICAgICAgaWYgKCF3ZWJQYWdlSUQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvUERGQ29udGV4dE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250
ZXh0TWVudS5oCmluZGV4IDgxY2RiZTgwMWMyZmNjNzZjYjk4YmQzMzYxMzNhMjdkNWFjOWMwZjcu
LjVmYTkwZDM2OGM1ODM4NWRjNWVlNDBmYTE5ODg5ZmM0YjNhMTkyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCkBAIC00MSwzNCArNDEsMzQgQEAgc3RydWN0
IFBERkNvbnRleHRNZW51SXRlbSB7CiAgICAgICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgZW5hYmxl
ZCA8PCBzZXBhcmF0b3IgPDwgc3RhdGUgPDwgaGFzQWN0aW9uIDw8IHRhZzsKICAgICB9CiAgICAg
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBERkNvbnRleHRN
ZW51SXRlbT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UERGQ29udGV4dE1lbnVJdGVtPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdGl0bGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAgICAgICAgZGVjb2RlciA+PiB0
aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAg
IGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2VwYXJhdG9yOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHNlcGFyYXRvcjsKICAgICAgICAgZGVjb2RlciA+PiBzZXBhcmF0b3I7CiAgICAgICAgIGlmICgh
c2VwYXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxpbnQ+IHN0YXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gc3RhdGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3RhdGU7CiAgICAgICAgIGlmICghc3RhdGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0FjdGlv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBY3Rpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gaGFzQWN0aW9uOwogICAgICAgICBpZiAoIWhhc0FjdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0YWc7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiB0YWc7CiAgICAgICAgIGRlY29kZXIgPj4gdGFnOwogICAgICAg
ICBpZiAoIXRhZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCwyNiAr
ODAsMjYgQEAgc3RydWN0IFBERkNvbnRleHRNZW51SXRlbSB7CiBzdHJ1Y3QgUERGQ29udGV4dE1l
bnUgewogICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogICAgIFZlY3RvcjxQREZDb250ZXh0
TWVudUl0ZW0+IGl0ZW1zOwotICAgIE9wdGlvbmFsPGludD4gb3BlbkluUHJldmlld0luZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAgICAgCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgcG9pbnQgPDwgaXRlbXMgPDwgb3BlbkluUHJldmll
d0luZGV4OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UERGQ29udGV4dE1lbnU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBERkNvbnRleHRNZW51
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBwb2ludDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4gcG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gcG9pbnQ7CiAgICAgICAgIGlmICghcG9p
bnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+PiBpdGVtczsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UERGQ29udGV4dE1lbnVJdGVtPj4gaXRlbXM7CiAgICAgICAgIGRlY29kZXIgPj4g
aXRlbXM7CiAgICAgICAgIGlmICghaXRlbXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGludD4+IG9wZW5JblByZXZpZXdJbmRl
eDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGludD4+IG9wZW5JblByZXZp
ZXdJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAgICAgICAg
IGlmICghb3BlbkluUHJldmlld0luZGV4KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cAppbmRleCBkOGJhZjlmZWM5YTE3MzM0MjczMWIwZDRmMzBhYmVjMGFiOTE2ZWE4Li5lYzE3M2Ey
YzVkYzJiNTRmOWYyYTRlOWI5YzVjN2M2ODI5ZjYyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZv
aWQgU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICAgICAgZW5jb2RlciA8PCBtX3Jlc3VsdE9iamVjdDsKIH0KIAotT3B0aW9uYWw8U2Vj
SXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJl
c3BvbnNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpbnQ2NF90
IHJlc3VsdENvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHRDb2RlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCmluZGV4IGUzNzFj
MTc1MzIxY2JjYjdjNjc2OWY5YTk5NzZhODVlZDVkODkxODEuLjk5NzEzMjRkOWU4YmJlZjk5ZWQ3
MGU3MzJhYzBhYzRiOTdhZmNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9TZWNJdGVtUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Nl
Y0l0ZW1SZXNwb25zZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgU2VjSXRl
bVJlc3BvbnNlRGF0YShPU1N0YXR1cywgUmV0YWluUHRyPENGVHlwZVJlZj4mJiByZXN1bHQpOwog
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0T2JqZWN0KCkgeyByZXR1cm4g
bV9yZXN1bHRPYmplY3Q7IH0KICAgICBPU1N0YXR1cyByZXN1bHRDb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHRDb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNw
cAppbmRleCBlZmUyZjIyMzc3ZWViYTkyM2VlYWFlNzI4YjFhODZkYTk1ZTkxMzEyLi41MTllZGMy
ZGQ5MGJjZThlZGVmYTFjMGU4ZDliNTA4NzZmZGM5YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgc3RhdGljIFdlYWtQdHI8TmV0
d29ya1Byb2Nlc3M+JiBnbG9iYWxOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIG5ldHdvcmtQ
cm9jZXNzLmdldCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4g
c2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwg
Q0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gg
PSAwKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0
ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9u
YXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewot
ICAgIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2U7CiAKICAgICBpZiAoUnVuTG9vcDo6
aXNNYWluKCkpIHsKICAgICAgICAgaWYgKCFnbG9iYWxOZXR3b3JrUHJvY2VzcygpLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6
U2VjSXRlbVJlcXVlc3RTeW5jKFNlY0l0ZW1SZXF1ZXN0RGF0YShyZXF1ZXN0VHlwZSwgcXVlcnks
IGF0dHJpYnV0ZXNUb01hdGNoKSksIE1lc3NhZ2VzOjpTZWNJdGVtU2hpbVByb3h5OjpTZWNJdGVt
UmVxdWVzdFN5bmM6OlJlcGx5KHJlc3BvbnNlKSwgMCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCA1NmI1OGY4MzQ1
YmVmMmIyNzZmNDM4ZGQ4NzMxM2Q4YmYyZGI5ZGNhLi4xZGRjOTE4ZWYxMWU2YjJlZWMzOTExNjU3
OGY2M2YxYTIxOTFlMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4MCwxNCArMjgwLDE0IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViCiAgICAgZW5jb2RlciA8PCBrZXlwcmVzc0NvbW1hbmQuY29tbWFuZE5h
bWUgPDwga2V5cHJlc3NDb21tYW5kLnRleHQ7CiB9CiAgICAgCi1PcHRpb25hbDxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleXByZXNz
Q29tbWFuZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbW1hbmROYW1lOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb21tYW5kTmFtZTsKICAgICBkZWNvZGVyID4+IGNv
bW1hbmROYW1lOwogICAgIGlmICghY29tbWFuZE5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDMsMTQgKzMwMywxNCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q0dSZWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENHUmVjdCByZWN0
KQogICAgIGVuY29kZXIgPDwgcmVjdC5vcmlnaW4gPDwgcmVjdC5zaXplOwogfQogCi1PcHRpb25h
bDxDR1JlY3Q+IEFyZ3VtZW50Q29kZXI8Q0dSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPENHUmVjdD4gQXJndW1lbnRDb2RlcjxDR1JlY3Q+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxDR1BvaW50PiBvcmlnaW47CisgICAgc3Rk
OjpvcHRpb25hbDxDR1BvaW50PiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47CiAgICAg
aWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxDR1NpemU+
IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+IHNpemU7CiAgICAgZGVjb2RlciA+PiBz
aXplOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTMyMyw3ICszMjMs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dTaXplPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IENHU2l6ZSBzaXplKQogICAgIGVuY29kZXIgPDwgc2l6ZS53aWR0aCA8PCBzaXplLmhlaWdodDsK
IH0KIAotT3B0aW9uYWw8Q0dTaXplPiBBcmd1bWVudENvZGVyPENHU2l6ZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDR1NpemU+IEFyZ3VtZW50Q29kZXI8Q0dTaXpl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ0dTaXplIHNpemU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzaXplLndpZHRoKSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q0dQb2ludD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDR1BvaW50IHBv
aW50KQogICAgIGVuY29kZXIgPDwgcG9pbnQueCA8PCBwb2ludC55OwogfQogCi1PcHRpb25hbDxD
R1BvaW50PiBBcmd1bWVudENvZGVyPENHUG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8Q0dQb2ludD4gQXJndW1lbnRDb2RlcjxDR1BvaW50Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgQ0dQb2ludCBwb2ludDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBvaW50LngpKQpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxD
R0FmZmluZVRyYW5zZm9ybT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDR0FmZmluZVRyYW5z
Zm9yCiAgICAgZW5jb2RlciA8PCB0cmFuc2Zvcm0uYSA8PCB0cmFuc2Zvcm0uYiA8PCB0cmFuc2Zv
cm0uYyA8PCB0cmFuc2Zvcm0uZCA8PCB0cmFuc2Zvcm0udHggPDwgdHJhbnNmb3JtLnR5OwogfQog
Ci1PcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5z
Zm9ybT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDR0FmZmluZVRy
YW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5zZm9ybT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybS5hKSkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKAogICAgICAgICBlbmNvZGVPYmplY3QoZW5jb2RlciwgdmFsdWUubmF0
aXZlVmFsdWUoKS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRm
b3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQog
ewogICAgIEFTU0VSVChwbGF0Zm9ybVR5cGUgPT0gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6Ok9iakMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXggYjRlMDUxNTk0NzU1N2Yy
MDQyN2M5OTEyMmIzOWUwMDcyNDc1YTQ4Mi4uODgzYmJhZDJkODYzN2RmZTVmMjQwN2E2YTQ4YWUy
MTQ4OWZiNDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRl
c3RSZXN1bHREYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRh
OjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYkhpdFRlc3RSZXN1bAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzRGV0ZWN0ZWREYXRhVGV4dEluZGlj
YXRvcikgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5k
aWNhdG9yRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBpbmRpY2F0b3JEYXRhOwog
ICAgICAgICBpZiAoIWluZGljYXRvckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlv
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKaW5kZXggY2JlYjQwMGRhY2U1
NmI4ODJkMmU3YzQ0M2FlZGRiN2JlNDlkOWZmNy4uMDU0M2JjNjYzNGU2MzgzMWNmOWYyMThkYWI3
ZWUzZGVmNDZhOWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRp
b24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1bWVudENvZGVyc1BsYXlTdGF0aW9uLmNw
cApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IEZvbnRBdHRyaQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2Rl
cjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJp
YnV0ZXMmKQorc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250
QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJpYnV0ZXMm
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPEZvCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29k
ZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDk4N2Y4
YjU1NTIxODFhMjg4M2IxYTY0NDQ1ZDhmYTY4MWMwZTk3ZmIuLmY5MTYyMjBjNDNmOGUxM2EwNjQz
OGVkNDM4N2Y5NmM0MjY1NjdiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3Nv
dXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IENlcnRpZmljYXRlSQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJ
bmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvKQogewotICAgIE9wdGlvbmFsPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj4gY2VydGlm
aWNhdGU7CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IGNlcnRp
ZmljYXRlOwogICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29u
c3QgRm9udEF0dHJpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZv
bnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlY29kZXImLCBGb250QXR0cmlidXRlcyYpCitzdGQ6Om9wdGlvbmFsPEZvbnRBdHRy
aWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImLCBGb250QXR0cmlidXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBS
ZWY8Rm9udD4mKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDxGb250
UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2Rl
cjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMSw3ICsyMzEs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29k
ZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6
UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9Td2lmdE92ZXJsYXkvT2JqZWN0
aXZlQ0Jsb2NrQ29udmVyc2lvbnMuc3dpZnQgYi9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9T
d2lmdE92ZXJsYXkvT2JqZWN0aXZlQ0Jsb2NrQ29udmVyc2lvbnMuc3dpZnQKaW5kZXggNTUyYWM2
ZmQ5YmU4NjJiYzc0ODg0MWUzZTczM2FmNzZlMjUwM2E5OS4uZjZlZTQzYTU3OTdlYzYwMDRiYThl
YTJhNmQ0OGU4N2QzNDI1Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Td2lmdE92ZXJs
YXkvU3dpZnRPdmVybGF5L09iamVjdGl2ZUNCbG9ja0NvbnZlcnNpb25zLnN3aWZ0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1N3aWZ0T3ZlcmxheS9PYmplY3RpdmVDQmxvY2tDb252
ZXJzaW9ucy5zd2lmdApAQCAtNzAsNyArNzAsNyBAQCBlbnVtIE9iakNCbG9ja0NvbnZlcnNpb24g
ewogICAgIC8vLyBDb252ZXJ0cyBhIGJsb2NrIGZyb20gYChSZXN1bHQ8VmFsdWUsIEVycm9yPikg
LT4gVm9pZGAgdG8gYChWYWx1ZT8sIEVycm9yKSAtPiBWb2lkYC4KICAgICAvLy8KICAgICAvLy8g
VGhpcyBwZXJmb3JtcyB0aGUgc2FtZSBjb252ZXJzaW9uIGFzIGBTZWxmLmV4Y2x1c2l2ZShfOilg
LCBidXQgaWYgdGhlIHJlc3VsdCBibG9jayBpcyBjYWxsZWQKLSAgICAvLy8gd2l0aCBgKG5pbCwg
bmlsKWAgdGhlbiBgaGFuZGxlcmAgaXMgY2FsbGVkIHdpdGggYC5zdWNjZXNzKE9wdGlvbmFsPEFu
eT4ubm9uZSBhcyBBbnkpYC4gVGhpcworICAgIC8vLyB3aXRoIGAobmlsLCBuaWwpYCB0aGVuIGBo
YW5kbGVyYCBpcyBjYWxsZWQgd2l0aCBgLnN1Y2Nlc3Moc3RkOjpvcHRpb25hbDxBbnk+Lm5vbmUg
YXMgQW55KWAuIFRoaXMKICAgICAvLy8gaXMgYSBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGZvciBo
dHRwOi8vd2Via2l0Lm9yZy9iLzIxNjE5OCwgYW5kIHNob3VsZCBub3QgYmUgYWRvcHRlZCBieQog
ICAgIC8vLyBuZXcgY29kZS4KICAgICBzdGF0aWMgZnVuYyBib3hpbmdOaWxBc0FueUZvckNvbXBh
dGliaWxpdHkoXyBoYW5kbGVyOiBAZXNjYXBpbmcgKFJlc3VsdDxBbnksIEVycm9yPikgLT4gVm9p
ZCkgLT4gKEFueT8sIEVycm9yPykgLT4gVm9pZCB7CkBAIC04MCw3ICs4MCw3IEBAIGVudW0gT2Jq
Q0Jsb2NrQ29udmVyc2lvbiB7CiAgICAgICAgICAgICB9IGVsc2UgaWYgbGV0IHN1Y2Nlc3MgPSB2
YWx1ZSB7CiAgICAgICAgICAgICAgICAgaGFuZGxlciguc3VjY2VzcyhzdWNjZXNzKSkKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlciguc3VjY2VzcyhPcHRpb25h
bDxBbnk+Lm5vbmUgYXMgQW55KSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyKC5zdWNjZXNzKHN0
ZDo6b3B0aW9uYWw8QW55Pi5ub25lIGFzIEFueSkpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9UZXN0cy9XZWJL
aXRUZXN0cy5zd2lmdCBiL1NvdXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRl
c3RzLnN3aWZ0CmluZGV4IDcwNTA0MmNkM2U5ZDQ3ZDNhOWNjZDRmNzcyOWNjZjJhMDMwOTkxZDgu
LmVjMWNhZjhhZWIwNGE2YzRiZjQ1OWRjOGRlYTJkZTg3NTZlMzczN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRlc3RzLnN3aWZ0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRlc3RzLnN3aWZ0CkBAIC00MCw3
ICs0MCw3IEBAIGNsYXNzIFdlYktpdFRlc3RzOiBYQ1Rlc3RDYXNlIHsKICAgICBmdW5jIHRlc3RX
S1BERkNvbmZpZ3VyYXRpb25SZWN0KCkgewogICAgICAgICBsZXQgY29uZmlndXJhdGlvbiA9IFdL
UERGQ29uZmlndXJhdGlvbigpCiAKLSAgICAgICAgWENUQXNzZXJ0KHR5cGUob2Y6IGNvbmZpZ3Vy
YXRpb24ucmVjdCkgPT0gT3B0aW9uYWw8Q0dSZWN0Pi5zZWxmKQorICAgICAgICBYQ1RBc3NlcnQo
dHlwZShvZjogY29uZmlndXJhdGlvbi5yZWN0KSA9PSBzdGQ6Om9wdGlvbmFsPENHUmVjdD4uc2Vs
ZikKIAogICAgICAgICBjb25maWd1cmF0aW9uLnJlY3QgPSBuaWwKICAgICAgICAgWENUQXNzZXJ0
RXF1YWwoY29uZmlndXJhdGlvbi5yZWN0LCBuaWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYTI3ZDEyNTRiZTc2NTgyZGVjODE2ZmUzYmQ5
MzY2YjY3MzNmMDBkYi4uNmUyMWY2ZjljZDQ2OTVkYTVlOTM3Yzk0YWM2ZmQyMzY1YzYyZTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
OTMsNyArOTMsNyBAQCBXVEY6OlN0cmluZyBBdHRhY2htZW50OjpmaWxlTmFtZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVT
aXplRm9yRGlzcGxheSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50
OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCA3
YmE0NGZhYzg5MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzLi5hZmE5MjljZjA5M2QyMmVj
NzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9y
RGlzcGxheSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9y
RGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhh
c0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFn
ZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0Vu
Y2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IGY0NjkxMTY3NmNkOThhNmExNzQ3
ZTgwMWU4OGRiMjhjZjFmYzlhMDMuLjA5NGE4N2QxMTI5NDU5MzllYzE2YTA2MzkyOWUwNmNkNGI2
ODQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBtZXNzYWdlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJl
dHVybiBXVEY6OlN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJJbnB1dEZvckN1
cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24m
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVudEphdmFTY3Jp
cHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPEphdmFTY3JpcHREaWFsb2dUeXBlPiB0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxv
Z09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEJyb3dzaW5nQ29udGV4
dFByZXNlbnRhdGlvbiBjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIEJyb3dzaW5nQ29u
dGV4dFByZXNlbnRhdGlvbjo6V2luZG93OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA4ZGJl
Nzk1ZWQ5ZWEzNGJmZWUzZjEyOTY1ZTVmMDMzMDBkYmZhOTIyLi5mZmVlMDYxMTQ2MGJjMWVkYmFk
YWFkYTc5ZDhkZWY4NmRmMjk5NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Rh
dGljIE9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxp
c3RNZXRhRGF0YShjb25zdCBUJiBmaWxlRGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zdCBU
JiBmaWxlRGF0YSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBDb250ZW50UnVs
ZUxpc3RNZXRhRGF0YSBtZXRhRGF0YTsKQEAgLTE1OCw0MyArMTU4LDQzIEBAIHN0YXRpYyBPcHRp
b25hbDxDb250ZW50UnVsZUxpc3RNZXRhRGF0YT4gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURh
dGEoY29uc3QgVCYKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
ZGF0YSwgc2l6ZSk7CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gdmVyc2lv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdmVyc2lvbjsKICAgICAgICAgZGVj
b2RlciA+PiB2ZXJzaW9uOwogICAgICAgICBpZiAoIXZlcnNpb24pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLnZlcnNpb24gPSBXVEZNb3ZlKCp2ZXJzaW9uKTsK
IAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc291cmNlU2l6ZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gc291cmNlU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VT
aXplOwogICAgICAgICBpZiAoIXNvdXJjZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIG1ldGFEYXRhLnNvdXJjZVNpemUgPSBXVEZNb3ZlKCpzb3VyY2VTaXplKTsKIAot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYWN0aW9uc1NpemU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGFjdGlvbnNTaXplOwogICAgICAgICBkZWNvZGVyID4+IGFjdGlvbnNT
aXplOwogICAgICAgICBpZiAoIWFjdGlvbnNTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBtZXRhRGF0YS5hY3Rpb25zU2l6ZSA9IFdURk1vdmUoKmFjdGlvbnNTaXplKTsK
IAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
bWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgq
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKIAotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7
CiAgICAgICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwog
ICAgICAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25z
Qnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
KTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNv
ZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25kaXRpb25lZEZpbHRl
cnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gY29uZGl0aW9uZWRGaWx0ZXJzQnl0
ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURhdGEuY29uZGl0aW9uZWRG
aWx0ZXJzQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVT
aXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY29uZGl0aW9uc0FwcGx5T25seVRv
RG9tYWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb25kaXRpb25zQXBwbHlP
bmx5VG9Eb21haW47CiAgICAgICAgIGRlY29kZXIgPj4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9t
YWluOwogICAgICAgICBpZiAoIWNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdHJ1Y3QgTWFwcGVkRGF0YSB7
CiAgICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZGF0YTsKIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3Ry
aW5nJiBwYXRoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFwcGVkRGF0YT4gb3BlbkFuZE1hcENv
bnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgcGF0aCkKIHsKICAgICBGaWxlU3lzdGVt
OjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKICAgICBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YSBmaWxlRGF0YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDJhMjAzNzY1NDU4ZGI1NGI3YmRkMzk5MmY1
OTE5OWJhZTI2YmE4NWYuLjMzODE5NzgzMjYzMmVmMTMyNmEzOWFkMjI3M2Q4MTI4YjYyOWQwMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0CiAg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmNyZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lk
ZW50aWZpZXIsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3Jp
cHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlP
cmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkKSk7CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPCiAg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KG1faWRlbnRpZmllciwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25z
dCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0
LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEluc3BlY3RvckV4dGVuc2lv
bjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVD
YWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggNWRiNDMxY2Zi
MjQyOTRhOTRmYjIzNDBlYjI0MjQwOWQ5NzFiYzlmNS4uNWVlMDk2ZGMyMWY2MjAyNjdjN2YwNDg5
NjAzZjEyOWFkNzY1OGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBj
b25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNj
cmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6
OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdl
bnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Cisg
ICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGln
bm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7CiAKICAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPElu
c3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaAppbmRleCBjZGFkOTc4MmRhYjY2N2UwYjdkM2NjMmIxYTljYzI2ODVm
YTljZDNiLi5iMDM3ZTY1NjBjNjliYmIyOTUwMGFlZjcwNWViYWI0ZTQ1NmQ3ZDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTEwNSwxMyArMTA1
LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0OyB9CiAgICAgdm9p
ZCBzZXRDdXJyZW50UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
Y3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IGN1cnJlbnRSZXF1ZXN0UHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50
aWZpZXI7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBj
dXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyOyB9CiAKICAgICBib29sIGN1cnJlbnRSZXF1ZXN0SXNS
ZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5hdmlnYXRpb25BY3Rpb24uaXNSZWRpcmVj
dDsgfQogCiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV90YXJnZXRJdGVtLmdldCgpOyB9CiAgICAgV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbUl0ZW0uZ2V0
KCk7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZy
YW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRG
cmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7
IH0KICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHJlbG9hZEl0ZW0oKSBjb25z
dCB7IHJldHVybiBtX3JlbG9hZEl0ZW0uZ2V0KCk7IH0KIAogICAgIHZvaWQgYXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURhdGE+JiBzdWJzdGl0dXRlRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGE7IH0KIAotICAgIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0aW9uQWN0aW9uLnByaXZhdGVDbGlj
a01lYXN1cmVtZW50OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0TmF2aWdhdGlvbkFjdGlvbi5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfQogCiAg
ICAgdm9pZCBzZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eVZhcmlhbnQmJiBhY3Rpdml0eSkgeyBtX2NsaWVudE5hdmlnYXRpb25BY3Rp
dml0eSA9IFdURk1vdmUoYWN0aXZpdHkpOyB9CiAKQEAgLTE3OSwxMyArMTc5LDEzIEBAIHByaXZh
dGU6CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X2N1cnJlbnRSZXF1ZXN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
PiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gbV9jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlm
aWVyOwogICAgIFZlY3RvcjxXVEY6OlVSTD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV90YXJnZXRJdGVtOwogICAgIFJlZlB0
cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fZnJvbUl0ZW07CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9yZWxvYWRJdGVtOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gbV9iYWNrRm9yd2FyZEZy
YW1lTG9hZFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiBtX3N1YnN0
aXR1dGVEYXRhOwogICAgIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbV9sYXN0TmF2aWdh
dGlvbkFjdGlvbjsKICAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgbV9vcmlnaW5hdGluZ0ZyYW1l
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFj
dGlvbi5oCmluZGV4IGEwMThlNzQ1NDJiN2RiMTEzZTMyMTRkZDU2MWU4NmI1ZWM4OThlODQuLmVm
ZGVhMmQyNDdiYTNkZWI3ZDlhOTllYzFiYjZjYTBiOWEwMzgwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZUluZm8qIHNvdXJjZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VGcmFtZS5nZXQoKTsgfQogICAgIEZyYW1lSW5mbyogdGFyZ2V0RnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldEZyYW1lLmdldCgpOyB9Ci0gICAgT3B0aW9uYWw8V1RGOjpT
dHJpbmc+IHRhcmdldEZyYW1lTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0RnJhbWVOYW1l
OyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAg
IGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuICFtX29yaWdpbmFs
VVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVxdWVzdC51cmwoKTsgfQpAQCAtNzQs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGE7IH0KICAgICAK
IHByaXZhdGU6Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwg
QVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0
RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXVEY6
OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8VXNlcklu
aXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG1h
aW5GcmFtZU5hdmlnYXRpb24pCisgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3Vy
Y2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6
U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Ms
IFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1l
KHNvdXJjZUZyYW1lKQogICAgICAgICAsIG1fdGFyZ2V0RnJhbWUodGFyZ2V0RnJhbWUpCiAgICAg
ICAgICwgbV90YXJnZXRGcmFtZU5hbWUodGFyZ2V0RnJhbWVOYW1lKQpAQCAtODcsMTQgKzg3LDE0
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgT3B0aW9uYWw8
V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBM
aW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikK
KyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1l
SW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1l
TmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwm
IG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0
ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0
aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJh
bWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3Vs
ZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAg
ICB7CiAgICAgfQogCiAgICAgUmVmUHRyPEZyYW1lSW5mbz4gbV9zb3VyY2VGcmFtZTsKICAgICBS
ZWZQdHI8RnJhbWVJbmZvPiBtX3RhcmdldEZyYW1lOwotICAgIE9wdGlvbmFsPFdURjo6U3RyaW5n
PiBtX3RhcmdldEZyYW1lTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiBtX3Rh
cmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgV1RGOjpVUkwgbV9vcmlnaW5hbFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggYTk5NTdhYTc1YzY3ODdkZGNm
YTA1MmExMjNkOWJhYzRiYzZkNzNlMi4uODE1ZjdmZDA3NDQ3OGM3N2RhMzQ5NzY0NjUyN2JhNWMy
NGZlNDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKCkgeyByZXR1cm4gbV9pbml0aWFsQ2FwaXRhbGl6YXRp
b25FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKGJv
b2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkgeyBtX2luaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQgPSBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOyB9CiAKLSAgICBPcHRpb25h
bDxkb3VibGU+IGNwdUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jcHVMaW1pdDsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3B1TGltaXQ7
IH0KICAgICB2b2lkIHNldENQVUxpbWl0KGRvdWJsZSBjcHVMaW1pdCkgeyBtX2NwdUxpbWl0ID0g
Y3B1TGltaXQ7IH0KIAogICAgIGJvb2wgd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdzsgfQpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRzU3VicmVz
b3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N1YnJlc291cmNlczsgfQogICAgIHZvaWQg
c2V0TG9hZHNTdWJyZXNvdXJjZXMoYm9vbCBsb2FkcykgeyBtX2xvYWRzU3VicmVzb3VyY2VzID0g
bG9hZHM7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEhhc2hTZXQ8V1RGOjpTdHJpbmc+PiYgYWxs
b3dlZE5ldHdvcmtIb3N0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZE5ldHdvcmtIb3N0czsg
fQotICAgIHZvaWQgc2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhPcHRpb25hbDxIYXNoU2V0PFdURjo6
U3RyaW5nPj4mJiBob3N0cykgeyBtX2FsbG93ZWROZXR3b3JrSG9zdHMgPSBXVEZNb3ZlKGhvc3Rz
KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXVEY6OlN0cmluZz4+JiBhbGxv
d2VkTmV0d29ya0hvc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOyB9
CisgICAgdm9pZCBzZXRBbGxvd2VkTmV0d29ya0hvc3RzKHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxX
VEY6OlN0cmluZz4+JiYgaG9zdHMpIHsgbV9hbGxvd2VkTmV0d29ya0hvc3RzID0gV1RGTW92ZSho
b3N0cyk7IH0KIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIGlnbm9y
ZXNBcHBCb3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNBcHBCb3VuZERvbWFp
bnM7IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0c0ZvclBh
aW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9kcmF3c0Jh
Y2tncm91bmQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBm
YWxzZSB9OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3k7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAg
V1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgYm9vbCBtX2xvYWRzU3VicmVz
b3VyY2VzIHsgdHJ1ZSB9OwotICAgIE9wdGlvbmFsPEhhc2hTZXQ8V1RGOjpTdHJpbmc+PiBtX2Fs
bG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdURjo6U3RyaW5n
Pj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKaW5kZXggYmZkNzVkYmViODNmN2I0Y2JiODMzNTg3NDM5ODQ0OTM2ZGFmZTM2
NS4uOWZiMmQ2M2Y2MTRlMWVkNzlkYTNmYmExODI2ZTg5ZmM1YmQ3MzdiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtMTY1LDExICsxNjUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbiB7IHRydWUgfTsKICAgICBib29sIG1fc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcyB7IERFRkFVTFRfQ0FQVFVSRV9ESVNQTEFZX0lOX1VJX1BS
T0NFU1MgfTsKICAgICBQcm9jZXNzSUQgbV9wcmVzZW50aW5nQXBwbGljYXRpb25QSUQgeyBnZXRD
dXJyZW50UHJvY2Vzc0lEKCkgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX3Byb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbkZyb21DbGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3Byb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQ7CiAgICAgYm9vbCBtX3Byb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0dXJlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fs
d2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9w
cm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyIHsgZmFsc2UgfTsKLSAgICBPcHRpb25h
bDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlD
bGllbnQ7CiAgICAgYm9vbCBtX3VzZXNXZWJQcm9jZXNzQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV91c2VzQmFja0ZvcndhcmRDYWNoZSB7IHRydWUgfTsKICAgICBib29sIG1fY2xpZW50V291
bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4
IGViMDIzMzc1YjY0NGZlOGI4MTk5OTA2YmM4ODNlMGJiNDhlNWE0ODcuLjkzOGFiOWQ0YmVmNDY1
YTM3MmZmMDQ4MDQ0OTFhODYwNTc2NGFkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8uaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9pbmZvKFdURk1vdmUoaW5mbykpIHsgfQogCiAgICAgV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUxvYWRJRCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5yZXNvdXJjZUxvYWRJRDsgfQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFtZUlEOyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmZvLnBhcmVudEZyYW1lSUQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFt
ZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVu
dEZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8ucGFyZW50RnJhbWVJRDsgfQogICAgIGNv
bnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5vcmlnaW5h
bFVSTDsgfQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEhUVFBNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX2luZm8ub3JpZ2luYWxIVFRQTWV0aG9kOyB9CiAgICAgV2FsbFRpbWUgZXZl
bnRUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2luZm8uZXZlbnRUaW1lc3RhbXA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDdiMjY5YWIwNzQyNjcz
MGM4NTI1NjkyMTZlMmE5MGM5MmU2MDEzODcuLmI3YmQwOTg1NDgxY2VhODFmM2U5YzQ2ZjhmZDU4
YjJiNmMzZTcxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMzAyOCw3ICszMDI4LDcgQEAgdm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2Io
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWYKIHsKICAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHRv
SW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgeworICAgIHRvSW1w
bChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAg
IGJsb2NrKCk7CiAgICAgfSk7CiAjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1BhZ2VQcml2YXRlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvcGxheXN0YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNwcAppbmRleCAzNTVmZmNk
OTJlZDQ3OGNiZDExNzg0MmUxY2JiY2U3NzFjZmNkM2I5Li5jODcyZTY4NjMzYzBkZjgzMGVjNmMy
ZDM2NGJjN2ZmMjAyYmI5Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLUGFnZVByaXZhdGVQbGF5U3Rh
dGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUg
PHdwZS93cGUuaD4KIAotc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKGNhaXJvX3QqIGN0
eCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitzdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQo
Y2Fpcm9fdCogY3R4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dy
b3VuZENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghYmFj
a2dyb3VuZENvbG9yIHx8IGJhY2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpKQogICAg
ICAgICByZXR1cm47CkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgV0tQYWdlSGFuZGxlS2V5Ym9hcmRF
dmVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tLZXlib2FyZEV2ZW50IGV2ZW50KQogICAgIH0KIAog
ICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRC
eUlucHV0TWV0aG9kID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRo
b2Q6Ok5vOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGlu
ZT4+IHByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1Jhbmdl
PiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBwcmVlZGl0VW5kZXJsaW5lczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CiAgICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCgmd3BlRXZlbnQsICIiLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgV1RGTW92ZShw
cmVlZGl0VW5kZXJsaW5lcyksIFdURk1vdmUocHJlZWRpdFNlbGVjdGlvblJhbmdlKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQppbmRleCAyMzdmYjdlZmFmNTdmZWQyNzQ2Yjg2N2JjZDQwODM1NzNkMjlj
ZDRhLi5jZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICBzZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBlcik7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2
NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAorc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKIHsKICAg
ICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWRiYjJkYTI3MWMz
MWUwNTU0OTQ3MjU3MDMzOTBjYWRjOTUzNmFhOS4uZTYwNDBjZTAyNGQwYmFiZjQ0ZGNhNmMxMTRm
ZDE2MmMyMTQ1M2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xMDk5LDcgKzEwOTksNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YQogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBcmd1bWVu
dFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01hcDsKICAgICBpZiAoYXNBc3luY0Z1bmN0
aW9uKQogICAgICAgICBhcmd1bWVudHNNYXAgPSBXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01h
cCB7IH07CiAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKQEAgLTExMzAsNyArMTEz
MCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwogICAgIGlm
IChmcmFtZSkgewogICAgICAgICBpZiAodWludDY0X3QgaWRlbnRpZmllciA9IGZyYW1lLl9oYW5k
bGUuZnJhbWVJRCkKICAgICAgICAgICAgIGZyYW1lSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyKTsKQEAgLTE1ODEsNyArMTU4
MSw3IEBAIC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxT
Y2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiAgICAgcmV0dXJuIGhhbmRsZXIgPyBoYW5kbGVy
LT5hcGlIYW5kbGVyKCkgOiBuaWw7CiB9CiAKLS0gKE9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9u
Rm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nCistIChzdGQ6Om9wdGlv
bmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JU
ZXN0aW5nCiB7CiAgICAgcmV0dXJuIF9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNv
bXBsZXRpb25Gb3JUZXN0aW5nOwogfQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiBmbG9hdFJlY3Q7CiAgICAgaWYgKHBkZkNvbmZpZ3VyYXRpb24gJiYgIUNHUmVjdElz
TnVsbChwZGZDb25maWd1cmF0aW9uLnJlY3QpKQogICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3Jl
OjpGbG9hdFJlY3QocGRmQ29uZmlndXJhdGlvbi5yZWN0KTsKIApAQCAtMTk3Niw3ICsxOTc2LDcg
QEAgLSAodm9pZClfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOihpZCA8X1dLVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogICAgIF90ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiYgaW5mbykKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPj4gY3JlYXRlVXNlckluZm8oY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFu
aXB1bGF0aW9uVG9rZW5JbmZvPiYgaW5mbykKIHsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJl
dHVybiB7IH07CkBAIC0yOTUwLDcgKzI5NTAsNyBAQCAtICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1h
bmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tBcHBsaWNhdGlvbk1hbgog
ewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCi0gICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CisgICAgX3BhZ2UtPmdldEFwcGxp
Y2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0PiYgbWFuaWZlc3QpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgICAgICBpZiAobWFuaWZlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGFwaU1hbmlmZXN0
ID0gQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUoKm1hbmlmZXN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggNDU2MWM1Njg2ODJhNTI3NzQ3ZDZhNTE1ZWEzZjg4ZTc5MjkzYTAy
Ni4uZGI3Mzg2OWYzNTc1MzE4MTE5ZjRlNjA0OWEyMDFjM2FmNGYwOTdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KQEAgLTEyNiw3ICsxMjYsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfcmVsYXRlZFdlYlZp
ZXc7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmln
YXRpb25HZXN0dXJlczsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9ncm91cElkZW50aWZpZXI7
Ci0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TU3RyaW5nPj4gX2FwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxOU1N0cmluZz4+IF9hcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luY3JlbWVudGFsUmVu
ZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRh
dGlvbjsKICAgICBCT09MIF9wcmludHNCYWNrZ3JvdW5kczsKQEAgLTk1Miw3ICs5NTIsNyBAQCAt
ICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXR0ZXJucwogCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3JrOihCT09MKWxvYWRzCiB7Ci0g
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxvYWRzID8gc3Rk
OjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7
IH0gfSk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxv
YWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHsgSGFz
aFNldDxTdHJpbmc+IHsgfSB9KTsKIH0KIAogLSAoQk9PTClfbG9hZHNGcm9tTmV0d29yawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAppbmRleCA3MWU2OTY5NjIwZWY3OWMxNGU2MjYwZmUyMWVkNmQ1YmU0YTVhNmQyLi5iOTE5
ZGQ5NzhmZDZiNDVlMjI4MDk0ZjE5YTc0N2UwOGU3ZmM5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMTI2
LDcgKzEyNiw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKIAogICAgIFJldGFpblB0
cjxXS1NhZmVCcm93c2luZ1dhcm5pbmc+IF9zYWZlQnJvd3NpbmdXYXJuaW5nOwogCi0gICAgT3B0
aW9uYWw8Qk9PTD4gX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZv
clRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25hbDxCT09MPiBfcmVzb2x1dGlvbkZvclNoYXJlU2hl
ZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKIAogICAgIF9XS1NlbGVjdGlvbkF0dHJp
YnV0ZXMgX3NlbGVjdGlvbkF0dHJpYnV0ZXM7CiAgICAgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMgX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM7CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8X1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIAotICAgIE9wdGlvbmFsPENH
U2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRTaXplPiBfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZTsKLSAgICBPcHRpb25hbDxDR1NpemU+IF9t
YXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PENHU2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplOworICAgIHN0ZDo6b3B0aW9u
YWw8Q0dTaXplPiBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZTsK
ICAgICBDR1JlY3QgX2lucHV0Vmlld0JvdW5kc0luV2luZG93OwogCiAgICAgQ0dGbG9hdCBfdmll
d3BvcnRNZXRhVGFnV2lkdGg7CkBAIC0xNzgsNyArMTc4LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVD
b250cm9sbGVyOwogCiAgICAgVUlJbnRlcmZhY2VPcmllbnRhdGlvbiBfaW50ZXJmYWNlT3JpZW50
YXRpb25PdmVycmlkZTsKICAgICBCT09MIF9vdmVycmlkZXNJbnRlcmZhY2VPcmllbnRhdGlvbjsK
LSAgICBPcHRpb25hbDxpbnQzMl90PiBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uOwogCiAgICAg
Qk9PTCBfYWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdDsKIApAQCAtMTk2LDE1ICsxOTYsMTUgQEAg
Y2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAgIFVJRWRnZUluc2V0cyBfYW5pbWF0ZWRS
ZXNpemVPbGRPYnNjdXJlZEluc2V0czsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfcmVzaXplQW5p
bWF0aW9uVmlldzsKICAgICBDR0Zsb2F0IF9sYXN0QWRqdXN0bWVudEZvclNjcm9sbGVyOwotICAg
IE9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblZpc2libGVDb250ZW50UmVjdDsKLSAgICBPcHRpb25h
bDxDR1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxDR1JlY3Q+IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxD
R1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3Q7CiAKICAgICBCT09MIF9jb21taXRE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gX3Njcm9sbE9mZnNldFRvUmVzdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmU7CiAgICAgV2ViQ29yZTo6RmxvYXRCb3hF
eHRlbnQgX29ic2N1cmVkSW5zZXRzV2hlblNhdmVkOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRQb2ludD4gX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmU7Ci0gICAgT3B0aW9uYWw8V2Vi
S2l0OjpUcmFuc2FjdGlvbklEPiBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IF91bm9ic2N1cmVkQ2VudGVy
VG9SZXN0b3JlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUcmFuc2FjdGlvbklEPiBfZmly
c3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsKICAgICBkb3VibGUgX3NjYWxlVG9SZXN0
b3JlOwogCiAgICAgQk9PTCBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CkBA
IC0yNDEsNyArMjQxLDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wg
X2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIE9wdGlvblNldDxXZWJLaXQ6OlZp
ZXdTdGFiaWxpdHlGbGFnPiBfdmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVTY2hlZHVsZWQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZT4gX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7
CiAgICAgdWludDY0X3QgX3doZWVsRXZlbnRDb3VudEluQ3VycmVudFNjcm9sbEdlc3R1cmU7CiAK
ICAgICBfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgX2RyYWdJbnRlcmFjdGlvblBvbGljeTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgTW9ub3Rv
bmljVGltZSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKICAgICBN
b25vdG9uaWNUaW1lIF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOwogCi0gICAg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlV2l0aFBlbmRpbmdDb21taXQ7CisgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBf
dGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdDsKIAog
ICAgIE5TVUludGVnZXIgX2ZvY3VzUHJlc2VydmF0aW9uQ291bnQ7CiAgICAgTlNVSW50ZWdlciBf
YWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgY2xhc3Mg
Vmlld0dlc3R1cmVDb250cm9sbGVyOwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5n
OwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uOwogCi0tIChPcHRpb25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlh
dGVDb21wbGV0aW9uRm9yVGVzdGluZzsKKy0gKHN0ZDo6b3B0aW9uYWw8Qk9PTD4pX3Jlc29sdXRp
b25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3Rpbmc7CiAKIC0gKFdLUGFn
ZVJlZilfcGFnZUZvclRlc3Rpbmc7CiAtIChOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4p
X3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdUZXN0aW5nLm1tCmluZGV4IGY2ZmI1YTE1NjY2MGU2YjBiNWZkYWU1YTJhY2Y1ZDRkNzFk
NmM5MWIuLmQwM2ViNTFkMTZkYTMyMjdmZDU2YzcyNDkyZWIyYTM0YTJmYWI0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5n
Lm1tCkBAIC00MjAsNyArNDIwLDcgQEAgLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHBsYXlT
ZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAg
ICB2b2lkIHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjaykgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0
b3JDbGllbnQgPSBjbGllbnQoKSkKICAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+
cGxheVNlc3Npb24oV1RGTW92ZShhdFRpbWUpLCBXVEZNb3ZlKGhvc3RUaW1lKSwgV1RGTW92ZShj
YWxsYmFjaykpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIC0gKHZvaWQpX2NyZWF0ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yCiAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KGJvb2wgc3VjY2VzcykgY29uc3QK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQoYm9v
bCBzdWNjZXNzKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6
OkludmFsaWRTdGF0ZUVycm9yIH0gfTsKQEAgLTUyMiw3ICs1MjIsNyBAQCAtICh2b2lkKV9jcmVh
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvcgogICAgICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBv
c2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mIHN0
YXRlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAg
ICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6bmlsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCA2Y2ZlYjllY2M0ZGI4MTFkNzVjM2Ni
Y2YzN2NiZTJiZTRkNTlhM2I5Li4yZjdhNjlkZmRhZjdlMTExMTBjNzc1NTY4YTNhY2IzYzdmMGRh
NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC0zNiw3ICszNiw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRlRGF0YVJlY29yZD4gewog
ICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLV2Vic2l0ZURhdGFSZWNvcmQ7CiB9OwogCi1zdGF0
aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNT
dHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJz
aXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUp
CiB7CiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOldLV2Vic2l0ZURh
dGFUeXBlQ29va2llc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQppbmRleCBmZWVhNmUyOTVmZThkYjE2MmNkODdiZTQxN2ViMmExMTVkYWRh
YWRhLi42MTQ3ZDQwMzQyMTlhYzMyYTljOGY4NmNiZmQ1ODdmY2FmOTE4ZDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVPcmln
aW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VS
ZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZU9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
ICAgICB7CiAgICAgICAgIGlmICghbV9oYXNSZXF1ZXN0U3RvcmFnZVNwYWNlU2VsZWN0b3IgfHwg
IW1fZGVsZWdhdGUpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQppbmRleCAzYmFiZWJmODE1N2EzYWY5ZmU5OTE0NzNjZWUwNzkyZTg0YTkw
MjY0Li40NjU2MWQzNDMxNGE3OWQ0MmM1N2U1OWJmNzkyN2FkMWZhNDUxMDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW0KQEAgLTgzLDggKzgzLDggQEAgLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZToo
TlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3UKIAog
LSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6
KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRleHRT
ZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TRGljdGlv
bmFyeSAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxG
cmFtZVVSTCA9IGZyYW1lVVJMID8gc3RkOjptYWtlX29wdGlvbmFsKFVSTChmcmFtZVVSTCkpIDog
c3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlP
cmlnaW4gPSBjb250ZXh0U2VjdXJpdHlPcmlnaW4gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJMKGNv
bnRleHRTZWN1cml0eU9yaWdpbikpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJM
KGZyYW1lVVJMKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gc3RkOjpt
YWtlX29wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IHN0ZDo6bnVsbG9wdDsK
ICAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJh
bWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRl
bnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwpAQCAtMTA0LDggKzEwNCw4IEBAIC0gKHZvaWQp
ZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VSTCAq
KWZyYW1lVVJMIGNvbnRlCiAKIC0gKHZvaWQpcmVsb2FkSWdub3JpbmdDYWNoZTooQk9PTClpZ25v
cmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICopdXNlckFnZW50IGluamVjdGVkU2NyaXB0OihO
U1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFs
VXNlckFnZW50ID0gdXNlckFnZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKFN0cmluZyh1c2VyQWdl
bnQpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IHN0ZDo6bWFrZV9vcHRpb25hbChTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
b3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5n
KHVzZXJBZ2VudCkpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBv
cHRpb25hbEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBzdGQ6Om1ha2Vfb3B0aW9u
YWwoU3RyaW5nKGluamVjdGVkU2NyaXB0KSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lv
bi0+cmVsb2FkSWdub3JpbmdDYWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9w
dGlvbmFsSW5qZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBj
YXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0g
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4
IDBlMzQ5NGIzNzFhNWZmYmQ2Yzk4N2VlYTRkOTZkMDAwYTc0ZTk2YTUuLjFlODI3MDEzYzYwM2Fl
OGJkNDNkNzk4MTcwZGViOThmYzMxNTM4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTU3LDcgKzU3LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JX
S1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktp
dDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5
bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJhc2VVUkws
IG1ha2VWZWN0b3I8U3RyaW5nPihpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0
b3I8U3RyaW5nPihleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBBUEk6OnRvV2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSwgd2ViVmlldyA/IE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPihbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6
IHN0ZDo6bnVsbG9wdCB9LCBjb250ZW50V29ybGQgPyAqY29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkIDogQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+
KGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNl
clN0eWxlTGV2ZWwobGV2ZWwpLCB3ZWJWaWV3ID8gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4oW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQoKSkgOiBzdGQ6Om51bGxvcHQg
fSwgY29udGVudFdvcmxkID8gKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCA6IEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGIyMGNjMjljOGQ0Y2RkNDRhZGEwODU0N2Ri
NzJiNTc3NjQ3ZTY0ZjYuLmMwMTE4MjBkZGRmMGNiMjc4MzFkZGFmMmM4ZWUyM2RkOGNiNjlhNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGlj
IFZlY3RvcjxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gcHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudD4gYXV0aGVudGljYXRvckF0
dGFjaG1lbnQoX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBz
d2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
QWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggZDY0YTE4MzgwMjJmYWMwMjQ0YmJmNTZhODc2YzkzOWEyY2I2NmRhZi4uMmY0
ODkzODc1MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yODUsNyArMjg1
LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCkKICAg
ICBtX2NsZWFyTG9hZGVkSWNvbnNUaW1lci5zdGFydE9uZVNob3QobG9hZGVkSWNvbkV4cGlyYXRp
b25UaW1lKTsKIH0KIAotT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29uSURGb3JJ
Y29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9vbCYgZXhwaXJlZCkKK3N0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgYm9vbCYgZXhwaXJlZCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAgICAgQVNTRVJUKG1fZGIuaXNPcGVuKCkpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIE9wdGlvbmFs
PGludDY0X3Q+IEljb25EYXRhYmFzZTo6aWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwsIGJvb2wmIGV4CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8aW50NjRfdD4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
cmVzdWx0OwogICAgIGlmIChtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKSB7CiAgICAgICAgIHJlc3VsdCA9IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMCk7CiAgICAgICAgIGV4cGlyZWQgPSBtX2ljb25JREZvckljb25VUkxT
dGF0ZW1lbnQtPmNvbHVtbkludDY0KDEpIDw9IGZsb29yKChXYWxsVGltZTo6bm93KCkgLSBpY29u
RXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKTsKQEAgLTM2Niw3
ICszNjYsNyBAQCBWZWN0b3I8dWludDhfdD4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2NF90
IGljb25JRCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxpbnQ2NF90PiBJY29u
RGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGljb25EYXRhKQorc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZElj
b24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRhKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4o
KSk7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgIEFTU0VS
VChpc01haW5SdW5Mb29wKCkpOwogCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVk
Q29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIHRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKS5z
ZWNvbmRzU2luY2VFcG9jaCgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBpY29uSUQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gaWNvbklEOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gaWNvbkRhdGE7CiAgICAgICAgIFN0cmluZyBpY29uVVJMOwogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4
IDZkZGQ4YWE4ZWY1NTZlYjZmNDE4MzM1Y2RlOTZmZTI3M2U5NmNmZDIuLjBlN2JjYzdlYzYzZGYy
NTI3MmZjYzUxMzg2MWZjYjk4MWM4NGVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC01OSwxMCArNTksMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyU3RhdGVtZW50cygpOwogICAgIHZvaWQgY2xlYXJMb2FkZWRJY29uc1Rp
bWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7Ci0gICAg
T3B0aW9uYWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBl
eHBpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGljb25JREZvckljb25VUkwoY29u
c3QgU3RyaW5nJiwgYm9vbCYgZXhwaXJlZCk7CiAgICAgYm9vbCBzZXRJY29uSURGb3JQYWdlVVJM
KGludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YShp
bnQ2NF90KTsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxjaGFyPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gYWRkSWNvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHVwZGF0ZUljb25U
aW1lc3RhbXAoaW50NjRfdCBpY29uSUQsIGludDY0X3QgdGltZXN0YW1wKTsKICAgICB2b2lkIGRl
bGV0ZUljb24oaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4IDMzYTQ1YmNiZmYwYTY2MWUxOTY0Njkw
M2E2ZjViNTk4MjU4M2Q0YTIuLjFlZTZhZDI3OTkzYTk3MjMyZmI1Yjk1ODAzZjMxMDFjMThhMThj
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0
aG9kRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250
ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwogICAgIFdlYktpdElucHV0TWV0aG9kQ29u
dGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCi0gICAg
dm9pZCBzZXRTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKKyAgICB2b2lkIHNl
dFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgdXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50OwpAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBwbGF0Zm9ybVRyYW5zZm9y
bUN1cnNvclJlY3RUb1ZpZXdDb29yZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAg
ICAgYm9vbCBwbGF0Zm9ybUV2ZW50S2V5SXNLZXlQcmVzcyhQbGF0Zm9ybUV2ZW50S2V5KikgY29u
c3Q7CiAKLSAgICBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBtX3N0YXRlOworICAgIHN0ZDo6
b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9zdGF0ZTsKICAgICBHUmVmUHRyPFdlYktpdElu
cHV0TWV0aG9kQ29udGV4dD4gbV9jb250ZXh0OwogCiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IDUwMWE3MDgxZjlmNzI5Njc2ZmNkY2IyNjkxYmJiYjMy
NDZkMjBlMGYuLmUyMDJmMGVlMGM4NDZhOTU2Zjc4ZmRkZDg3MmY3ZTQ4ZDljOTg0ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0
aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtNzAsOSArNzAsOSBAQCBzdHJ1Y3QgX1dl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUgewogICAgIGJvb2wgaGFuZGxlZFJlcXVl
c3Q7CiAgICAgQ1N0cmluZyBob3N0OwogICAgIENTdHJpbmcgcmVhbG07Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q3JlZGVudGlhbD4gcHJvcG9zZWRDcmVkZW50aWFsOwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkNyZWRlbnRpYWw+IGFjY2VwdGVkQ3JlZGVudGlhbDsKLSAgICBPcHRpb25hbDxib29s
PiBjYW5TYXZlQ3JlZGVudGlhbHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50
aWFsPiBwcm9wb3NlZENyZWRlbnRpYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVk
ZW50aWFsPiBhY2NlcHRlZENyZWRlbnRpYWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5T
YXZlQ3JlZGVudGlhbHM7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNmZmZmU1OWRkZDYyNzRjMDQx
ZDkyMGNhMzI5Njc3ODRhZTBjZWMzNS4uZDU5ZjIzODM5OWE4NjI5YjYyMTUwODkzZjU3MjgzN2U3
NGNlNDYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRDdXJyZW50U2NyaXB0RGlhbG9nVXNlcklu
cHV0KHdlYlZpZXcsIHVzZXJJbnB1dCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRK
YXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5
JiBwYWdlKSBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlh
bG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRX
ZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndlYkNvbnRleHQsICZwYWdlKTsKICAgICAg
ICAgaWYgKCF3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZGIxMzhiYTg0
NWYxNzJjZGVhYjQyZTQ2MGM0ZjM0YWRmYThiOTkyMS4uNGZlZGZhZmE4OWY0YzQ5MDE1NDU3ZmI1
OTNiYTA3YmE3NDBjNWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNTQsNyAr
MjU0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RhcnQoV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9j
bHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwog
ICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9Ci0gICAgbWFu
YWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7Cisg
ICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4g
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICB3ZWJraXRfZ2VvbG9j
YXRpb25fbWFuYWdlcl9mYWlsZWQobWFuYWdlciwgZXJyb3ItPmRhdGEoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNjY1ZTBlZTc2MWQ0MjI5ZGI4MGVjODQx
OGQyNzgxZTU2MDNjYzRmNS4uMjQwZGMyYzMxNDI3Y2U1NWQzYTg5NDk2N2U1OWU2Y2NkMzFmMWRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtODcsNyArODcsNyBAQCBXZWJLaXRTZWN1cml0eU9y
aWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoY29uc3QgZ2NoYXIqIHByb3RvY29sLCBj
b25zdCBnYwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByb3RvY29sLCBudWxscHRyKTsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChob3N0LCBudWxscHRyKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQxNl90PiBvcHRpb25hbFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gb3B0aW9u
YWxQb3J0OwogICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCBwcm90b2NvbCkpCiAgICAgICAgIG9wdGlvbmFsUG9ydCA9IHBvcnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
NjczZDk1NGM3ZWExZWEwZWY4NDNhZTUzNDZkNTAxNWRmYzNlMDE3ZC4uZDQ2ZTAzMzhmNjMzNWZh
NGU1ODFhZTNmZTgzMmM0NDVlYjAwYmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI1NjEsNyArMjU2MSw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgICAgIHdlYmtpdFNjcmlwdERpYWxvZ0Rpc21pc3Mod2ViVmlldy0+cHJp
di0+Y3VycmVudFNjcmlwdERpYWxvZyk7CiB9CiAKLU9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxv
Z1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQorc3RkOjpvcHRpb25hbDxXZWJLaXRTY3JpcHREaWFsb2dUeXBlPiB3ZWJr
aXRXZWJWaWV3R2V0Q3VycmVudFNjcmlwdERpYWxvZ1R5cGUoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKICAgICBpZiAoIXdlYlZpZXctPnByaXYtPmN1cnJlbnRTY3JpcHREaWFsb2cpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yODIwLDcgKzI4MjAsNyBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KICNl
bmRpZgogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5
UHJlc3MoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25h
bDxWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHVuZGVybGluZXMsIE9wdGlvbmFsPEVk
aXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdT
eW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25S
YW5nZSkKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTeW50aGVz
aXplQ29tcG9zaXRpb25LZXlQcmVzcyhXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgdGV4
dCwgV1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RGTW92ZShzZWxlY3Rpb25SYW5nZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggM2YxMzc1MzhiYWExYTM0MzM3NzkyYTVhYzA4YmEwZWM4ZTVlMGIwNy4uMGQ5
OGE5ZWQ2MDYxNmM3YTg5MzczNmI3OTVhZGY5MGYyYjdiMzNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC02Niw3ICs2Niw3IEBAIFN0cmluZyB3ZWJraXRXZWJWaWV3R2V0Q3VycmVudFNjcmlwdERpYWxv
Z01lc3NhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3U2V0Q3VycmVudFNj
cmlwdERpYWxvZ1VzZXJJbnB1dChXZWJLaXRXZWJWaWV3KiwgY29uc3QgU3RyaW5nJik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdBY2NlcHRDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZp
ZXcqKTsKLU9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRD
dXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJWaWV3Kik7CitzdGQ6Om9wdGlvbmFsPFdl
YktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9n
VHlwZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJl
cXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0Kik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGlj
eURlY2lzaW9uVHlwZSwgV2ViS2l0UG9saWN5RGVjaXNpb24qKTsKIHZvaWQgd2Via2l0V2ViVmll
d01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRU
ZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAppbmRleCBiNWZj
YmYwOWQ5OTNkMjM4NjFjNmI4OTJiNDcyMDJiNDdjN2QyNGQzLi45MmZjMDFhOGNlYWI1NDM0YzZm
M2FmNDI2ZDFlNzhjOTQyM2EyNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0RyYWdTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBH
UmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2RyYWc7CiAjZW5kaWYKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
LmgKaW5kZXggZTllNDhmYjA4N2ZlYjdkOWE2M2IyNzk4N2YyOWRmY2I2YWUwMzg3MS4uMDY4Mjk1
OTBjZmRmMmZlM2RiMWE2MmMyMzc4OGUwN2ZmODA1NjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUGVyZm9ybUFjdGlvbigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWNjZXB0
KFBsYXRmb3JtRHJvcENvbnRleHQqLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gPSBzdGQ6
Om51bGxvcHQsIHVuc2lnbmVkID0gMCk7CisgICAgdm9pZCBhY2NlcHQoUGxhdGZvcm1Ecm9wQ29u
dGV4dCosIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+ID0gc3RkOjpudWxsb3B0LCB1
bnNpZ25lZCA9IDApOwogICAgIHZvaWQgZW50ZXIoV2ViQ29yZTo6SW50UG9pbnQmJiwgdW5zaWdu
ZWQgPSAwKTsKICAgICB2b2lkIHVwZGF0ZShXZWJDb3JlOjpJbnRQb2ludCYmLCB1bnNpZ25lZCA9
IDApOwogICAgIHZvaWQgbGVhdmUoKTsKQEAgLTc5LDEwICs3OSwxMCBAQCBwcml2YXRlOgogI2Vs
c2UKICAgICBHUmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2Ryb3A7CiAjZW5kaWYKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbV9wb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBtX3Bvc2l0aW9uOwogICAgIHVuc2lnbmVkIG1fZGF0YVJlcXVlc3RD
b3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVj
dGlvbkRhdGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9vcGVyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlv
bkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX29wZXJh
dGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxs
YWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCmluZGV4IDhjZmE3MGI4MjhhMjA0NTNiNzkzMzhkZDBiNGNmNDViMzlm
N2MwYmEuLjVhMjE5YWUzOWY0ZDFmMmZhOWRlYWEyZTZmY2RlNGQ1NTAzMGQ1M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIERyb3BUYXJnZXQ6On5Ecm9wVGFyZ2V0KCkKICAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV93ZWJWaWV3LCB0aGlzKTsKIH0KIAotdm9pZCBE
cm9wVGFyZ2V0OjphY2NlcHQoR2RrRHJhZ0NvbnRleHQqIGRyb3AsIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKK3ZvaWQgRHJvcFRhcmdldDo6YWNj
ZXB0KEdka0RyYWdDb250ZXh0KiBkcm9wLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKIHsKICAgICBpZiAobV9sZWF2ZVRpbWVyLmlzQWN0
aXZlKCkpIHsKICAgICAgICAgbV9sZWF2ZVRpbWVyLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXggMjQwNmUwZjg2
NzM2ZTVkOTAyZWFlMTNhMGI5MTA0MTNjYjEwZjdiZC4uYWJiYWNhMjljNzQxMTFkY2MwOTM1NzM5
NDkzYjkzYzc0NDUyNTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBEcm9wVGFyZ2V0Ojp+
RHJvcFRhcmdldCgpCiAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwobV9jYW5jZWxsYWJsZS5nZXQo
KSk7CiB9CiAKLXZvaWQgRHJvcFRhcmdldDo6YWNjZXB0KEdka0Ryb3AqIGRyb3AsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQpCit2b2lkIERyb3BUYXJnZXQ6
OmFjY2VwdChHZGtEcm9wKiBkcm9wLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBw
b3NpdGlvbiwgdW5zaWduZWQpCiB7CiAgICAgbV9kcm9wID0gZHJvcDsKICAgICBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IDJmYmNiMzI3NDBkZmQ3MjhjZTM5YWJjN2MzMzkwNWNlMTlm
NGU5MzMuLmNiMWFkODM4MWZlYTNiZGY0NDA5MjZlYTQ2ODViZDE1NThiZDE0ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdl
KCkKICAgICAgICAgd2Via2l0V2ViVmlld1NlbGVjdGlvbkRpZENoYW5nZShXRUJLSVRfV0VCX1ZJ
RVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVJlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJ
bXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJl
Y3QpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hv
dChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0
dXJuIHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChXRUJLSVRfV0VCX1ZJRVdfQkFT
RShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKGNsaXBSZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMjg0NWVkODc3ZTk5
ZWIyMmVjYjJjOWExNDRlNzMzNDg2ZDVhNGE3MC4uNTZmNTk0ZmFhNmI2NDljYWJkMjk4NzU0ZDdk
YTJmMjU4YmYzNzBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBzZWxl
Y3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtl
Vmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9w
dXBNZW51LmNwcAppbmRleCBiZWY4MzRiZjQ2Yjc4M2E2OGM4Yjc5NWQ4YjE1N2M3NDJiZDYzYmFh
Li4yMDJkZDA5YzIyYWJjY2Q3YTYyZDUxZjU2ZTZjMjA5Y2NjODExODEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51OjpjYW5jZWxUcmFja2luZygpCiAgICAg
bV9tZW51ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRl
bShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KQordm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFj
dGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgV2Vi
UG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbShpdGVtSW5kZXgpOwogICAgIGlmIChtX21l
bnUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVw
TWVudS5oCmluZGV4IDUyMmMyYzZmZDNlYmEwOTdkMGYyYzU5YWEyMDE4NmYyODMwYzg4NjcuLjQ5
MDdhOTZhZTk1OGVlYTliMDBhNmEzNWE2ZTIxZjRjYjg5ODhjNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUuaApAQCAtMzQsNyArMzQs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJLaXRQb3B1cE1lbnUoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2b2lkIGFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFjdGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVt
SW5kZXgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdlYktpdFBvcHVwTWVudShHdGtXaWRn
ZXQqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGY1NzM3ZWQ5
YjMyNDk5MTViYjQ0MTZhOTI1NjNlNGI1OGFhNjVkMmEuLjk4N2YyNGZiMTIyY2ZmY2I5ZWU4NDFk
OGEzYjEwMGI3MTkyYzZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yIGtl
eUJpbmRpbmdUcmFuc2xhdG9yOwogICAgIFRvdWNoRXZlbnRzTWFwIHRvdWNoRXZlbnRzOwogICAg
IEludFNpemUgY29udGVudHNTaXplOwotICAgIE9wdGlvbmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90
aW9uRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxNb3Rpb25FdmVudD4gbGFzdE1vdGlvbkV2ZW50
OwogICAgIGJvb2wgaXNCbGFuazsKICAgICBib29sIHNob3VsZE5vdGlmeUZvY3VzRXZlbnRzIHsg
dHJ1ZSB9OwogCkBAIC0xMTIzLDcgKzExMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZUhhbmRsZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZAog
ICAgIEFTU0VSVCghcHJpdi0+ZGlhbG9nKTsKIAogICAgIGludCBjbGlja0NvdW50ID0gMDsKLSAg
ICBPcHRpb25hbDxGbG9hdFNpemU+IG1vdmVtZW50RGVsdGE7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IG1vdmVtZW50RGVsdGE7CiAgICAgR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGdk
a19ldmVudF9nZXRfZXZlbnRfdHlwZShldmVudCk7CiAgICAgc3dpdGNoIChldmVudFR5cGUpIHsK
ICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CkBAIC0xMjU5LDcgKzEyNTksNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRJbnZlcnREaXJlY3Rpb25Gb3JTY3JvbGxFdmVudChXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6SXNTY3JvbGxiYQogfQogCiAjaWYgIVVTRShHVEs0KQotc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gcGhhc2Ug
PSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNlPiBtb21lbnR1bSA9
IHN0ZDo6bnVsbG9wdCkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxF
dmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50KiBldmVudCwgc3Rk
OjpvcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIHN0
ZDo6b3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IG1vbWVudHVtID0gc3RkOjpudWxsb3B0
KQogewogICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYmtpdFdlYlZp
ZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZpZXdCYXNlKTsKICAgICBpZiAoY29udHJv
bGxlciAmJiBjb250cm9sbGVyLT5pc1N3aXBlR2VzdHVyZUVuYWJsZWQoKSkgewpAQCAtMTQ3MSw3
ICsxNDcxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZG91YmxlIHgKICAgICB9CiAKICAgICBhdXRvKiBl
dmVudCA9IGd0a19ldmVudF9jb250cm9sbGVyX2dldF9jdXJyZW50X2V2ZW50KGNvbnRyb2xsZXIp
OwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAgICBNb3Rpb25FdmVudCBtb3Rpb25FdmVu
dChGbG9hdFBvaW50KHgsIHkpLCBGbG9hdFBvaW50KHgsIHkpLCBnZGtfZXZlbnRfZ2V0X21vZGlm
aWVyX3N0YXRlKGV2ZW50KSk7CiAgICAgaWYgKHByaXYtPmxhc3RNb3Rpb25FdmVudCkKICAgICAg
ICAgbW92ZW1lbnREZWx0YSA9IG1vdGlvbkV2ZW50LnBvc2l0aW9uIC0gcHJpdi0+bGFzdE1vdGlv
bkV2ZW50LT5wb3NpdGlvbjsKQEAgLTIzODIsNyArMjM4Miw3IEBAIGJvb2wgd2Via2l0V2ViVmll
d0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKICAgICByZXR1
cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdyk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhv
ZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW5w
dXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1l
dGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgc3RkOjpvcHRp
b25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNl
LT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CkBA
IC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKHsgfSk7CiB9CiAKLVJl
ZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBz
aG90KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW50UmVj
dD4mJiBjbGlwUmVjdCkKK1JlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmll
d0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiYmIGNsaXBSZWN0KQogewogICAgIFdlYlBhZ2VQcm94
eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkuZ2V0KCk7CiAKQEAg
LTI2MzEsNyArMjYzMSw3IEBAIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogd2Via2l0V2ViVmll
d0Jhc2VHZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0V2ViVmlld0JhCiAgICAgcmV0dXJuIHdl
YlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5jb250ZXh0KCk7CiB9CiAKLXZvaWQg
d2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFu
Z2U+JiYgc2VsZWN0aW9uUmFuZ2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUNv
bXBvc2l0aW9uS2V5UHJlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBT
dHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4m
JiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5n
ZSkKIHsKICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2
ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGV4dCwgV1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RG
TW92ZShzZWxlY3Rpb25SYW5nZSkpKTsKIH0KQEAgLTI2OTgsNyArMjY5OCw3IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTeW50aGVzaXplTW91c2VFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIE1vdXNlCiAgICAgaWYgKGJ1dHRvbnMgJiBHREtfQlVUVE9OM19NQVNLKQogICAg
ICAgICB3ZWJFdmVudEJ1dHRvbnMgfD0gMjsKIAotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92
ZW1lbnREZWx0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsK
ICAgICBXZWJFdmVudDo6VHlwZSB3ZWJFdmVudFR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgY2FzZSBNb3VzZUV2ZW50VHlwZTo6UHJlc3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAx
MTUwZGI2NWUwMGVjZjZmYjI0ZjYyMTNhMGZiYjY1MjZlMDU5ZTk4Li5hNDg1MzkzOTliMDdmYzYz
NDUwM2NkZTU4YzJhZWM2NGFiMGIzY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTU5LDcg
KzU5LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdlYktp
dFdlYlZpZXdCYXNlKiwgdW5zaWduZWQgc2l6ZSk7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0
QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrKiB3ZWJr
aXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0V2ViVmlld0Jhc2Uq
KTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWVudUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0
ZShXZWJLaXRXZWJWaWV3QmFzZSosIE9wdGlvbmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4m
Jik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJW
aWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFz
ZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldENvbnRlbnRzU2l6ZShXZWJLaXRXZWJWaWV3
QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIApAQCAtODcsNyArODcsNyBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmLCBPcAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJWaWV3QmFzZSopOwogI2VuZGlmCiAKLVJlZlB0cjxX
ZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdl
YktpdFdlYlZpZXdCYXNlKiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CitSZWZQdHI8
V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChX
ZWJLaXRXZWJWaWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RW5hYmxlQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZShXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZW5hYmxlZCk7CiBXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlciogd2Via2l0V2ViVmlld0Jhc2VWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAogdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVNldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCopOwogV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiB3ZWJraXRX
ZWJWaWV3QmFzZUdldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKFdlYktpdFdl
YlZpZXdCYXNlKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4m
Jik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3Mo
V2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OkVkaXRpbmdSYW5nZT4mJik7CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNYWtlQmxhbmso
V2ViS2l0V2ViVmlld0Jhc2UqLCBib29sKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlR3Jh
YmJlZFRvdWNoKFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAppbmRleCBiNGQ2YjgzYjc1YzQzNmEyMzUwZTk1YmZj
ZTBjMTg4YmNhNDUxNmQ1Li4yODRkOWU2MDg0ZThkN2RkM2VkZWYzM2Q2OWI0NGVlNDRkYzk2NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgK
QEAgLTU3LDggKzU3LDggQEAKIC0gKHZvaWQpX2xheWVyVHJlZUNvbW1pdENvbXBsZXRlOwogCiAt
ICh2b2lkKV9jb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGU7Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVNj
cm9sbFBvc2l0aW9uOihPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PilzY3JvbGxQb3NpdGlv
biBzY3JvbGxPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpc2Nyb2xsT3JpZ2luIHByZXZpb3Vz
T2JzY3VyZWRJbnNldDooV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQpaW5zZXRzIHNjYWxlOihkb3Vi
bGUpc2NhbGU7Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVN0YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiljZW50ZXIgc2NhbGU6KGRvdWJsZSlzY2FsZTsg
Ly8gRklYTUU6IG5lZWRzIHNjcm9sbCBvcmlnaW4/CistICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9s
bFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0
aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlv
dXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJveEV4dGVudClpbnNldHMgc2NhbGU6KGRv
dWJsZSlzY2FsZTsKKy0gKHZvaWQpX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUp
c2NhbGU7IC8vIEZJWE1FOiBuZWVkcyBzY3JvbGwgb3JpZ2luPwogCiAtIChSZWZQdHI8V2ViS2l0
OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDNmNTQxNzUzNjM2ZWRjOGY3
NjNmZDIyNzEwNTUyOGNiMmQ0NmJkNTAuLjM5NGVlZjkxY2E5YTEzZWRhYmZmN2Q3ZTVlNzc4NGZm
ZGY0ZWE4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCkBAIC05NTYsNyArOTU2LDcgQEAgLSAodm9pZClfY291bGROb3RSZXN0b3JlUGFn
ZVN0YXRlCiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+ZGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCk7CiB9CiAKLS0gKHZvaWQpX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246KE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29y
ZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudClvYnNjdXJlZEluc2V0cyBzY2FsZTooZG91YmxlKXNjYWxlCistICh2
b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2lu
dClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJveEV4
dGVudClvYnNjdXJlZEluc2V0cyBzY2FsZTooZG91YmxlKXNjYWxlCiB7CiAgICAgaWYgKF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICE9IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZTo6Tm90UmVzaXppbmcpIHsKICAgICAgICAgLy8gRGVmZXIgc2Nyb2xsIHBvc2l0aW9uIHJlc3Rv
cmF0aW9uIHVudGlsIGFmdGVyIHRoZSBjdXJyZW50IHJlc2l6ZSBjb21wbGV0ZXMuCkBAIC05ODAs
NyArOTgwLDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VTY3JvbGxQb3NpdGlvbjooT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRQb2ludD4pc2Nyb2xsUG9zaXRpb24KICAgICBfc2NhbGVUb1Jlc3RvcmUg
PSBzY2FsZTsKIH0KIAotLSAodm9pZClfcmVzdG9yZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRl
cjooT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2Nh
bGUKKy0gKHZvaWQpX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGUKIHsK
ICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0gV2ViS2l0OjpEeW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAgICAvLyBEZWZlciBzY3JvbGwg
cG9zaXRpb24gcmVzdG9yYXRpb24gdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVzaXplIGNvbXBs
ZXRlcy4KQEAgLTE0NjAsNyArMTQ2MCw3IEBAIC0gKHZvaWQpX3NldE9wYXF1ZUludGVybmFsOihC
T09MKW9wYXF1ZQogICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghb3BhcXVlKQogICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CiAgICAgX3BhZ2UtPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29s
b3IpOwpAQCAtMTY3NCw3ICsxNjc0LDcgQEAgLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OigKICAgICBi
b29sIGhhc0FjdGl2ZVdoZWVsSGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhXZWJD
b3JlOjpFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6Tm9uUGFzc2l2ZVdoZWVsKTsKICAgICBib29s
IGlzQ2FuY2VsYWJsZSA9IGhhc0FjdGl2ZVdoZWVsSGFuZGxlcnMgJiYgKCFfY3VycmVudFNjcm9s
bEdlc3R1cmVTdGF0ZSB8fCBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSA9PSBXZWJDb3JlOjpX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0
OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhhc2U7CiAgICAgLy8gVGhl
IGZpcnN0IGV2ZW50IHdpdGggbm9uLXplcm8gZGVsdGEgaW4gYSBnaXZlbiBnZXN0dXJlIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIHRoZQogICAgIC8vICJCZWdhbiIgZXZlbnQgaW4gdGhlIFdlYkNvcmUg
c2Vuc2UgKGUuZy4gZm9yIGRlY2lkaW5nIGNhbmNlbGFiaWxpdHkpLiBOb3RlIHRoYXQKICAgICAv
LyB0aGlzIG1heSBub3QgYmUgYSBVSVNjcm9sbFBoYXNlQmVnaW4gZXZlbnQsIG5vciBldmVuIG5l
Y2Vzc2FyaWx5IHRoZSBmaXJzdCBVSVNjcm9sbFBoYXNlQ2hhbmdlZCBldmVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5oCmluZGV4IDcxZGIxMWNl
YmFkNjVmYWU2NWY5Y2NiMzc4OGUxMzA2YzhiYzc0NWIuLjIwYmIzNWY4MGUzNTYwYzU0NzljMzUz
NDI5MDk5MzU1M2I3ZGJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tXZWJWaWV3TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1dlYlZpZXdNYWMuaApAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxUeXBlcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgog
Ci1fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+KTsKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlKTsKK19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSB0b0FQSVNjcm9sbGJhclN0eWxlKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPik7CitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUo
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKTsKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLSW50
ZXJuYWxNYWMpIDxXZWJWaWV3SW1wbERlbGVnYXRlLCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZT4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQppbmRl
eCBhNmUyMGE1MzllMGI3NzI5MmFhMGRlYzNkYTg5ZjBmNjE2NWFkOWNjLi4zNWU1YjViOWMzNjhj
MmUzYWEzN2M0NDJiOTFkNTJhMTFjMzJjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQpAQCAtNDMsNyArNDMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1RleHRGaW5k
ZXJTUEkuaD4KIAotX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHRvQVBJU2Nyb2xsYmFyU3R5bGUo
T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5
bGUpCitfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY29yZVNjcm9sbGJhclN0eWxl
KQogewogICAgIGlmICghY29yZVNjcm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm4gX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlQXV0b21hdGljOwpAQCAtNjAsNyArNjAsNyBAQCBfV0tPdmVybGF5
U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5UwogICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVBdXRvbWF0
aWM7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3Jl
U2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJhclN0eWxlKQor
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHRvQ29yZVNjcm9s
bGJhclN0eWxlKF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSBzY3JvbGxiYXJTdHlsZSkKIHsKICAg
ICBzd2l0Y2ggKHNjcm9sbGJhclN0eWxlKSB7CiAgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFy
U3R5bGVEYXJrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcAppbmRleCBlYjNiZTY1N2RlODIxODEyOTZhNmFmYzU1MDcyNTQ4ZDZiMmVh
MzNlLi43ZGZlM2VmNDAxYWEyMGQ2MzM3NzE1MmM4NzlmYmQ0NGQ4M2QxN2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
NDM0LDcgKzQzNCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3
KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsCiAgICAgbV92aWV3LmRpZFJl
Y2VpdmVVc2VyTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRl
KQogewogICAgIG1fdmlldy5zZXRJbnB1dE1ldGhvZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaApp
bmRleCBhMjVhMWNiMTdmNDUxNjUwMzk2ZjM4YTBlMGZiMmZiMmVmZjY0NTJmLi44YWI4ZGI3MTVk
YjY0NjE2YTE1YTA2YmIyYjQ3NjBhNDBhZDVmMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsKLSAgICB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CisgICAgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7
CiAKIHByaXZhdGU6CiAgICAgLy8gUGFnZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggZGMyYjhhOGE2NTYwYmY0OTE1ZTBkMDU1NjEzOTFi
MDJmYTBjN2Y3Ny4uMjI2ODY3NGYyMTc5ZmUwOTk0ZjgwYzM3NDgyYjBjNmU3NmFmMmQyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0yOTEsNyAr
MjkxLDcgQEAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBWaWV3OjppbnB1dE1ldGhvZENvbnRl
eHQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0TWV0aG9kRmlsdGVyLmNvbnRleHQoKTsKIH0K
IAotdm9pZCBWaWV3OjpzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3Rh
dGU+JiYgc3RhdGUpCit2b2lkIFZpZXc6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25h
bDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIG1faW5wdXRNZXRob2RGaWx0ZXIu
c2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgVmll
dzo6aGFuZGxlS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBl
dmVudCkKICAgICBwYWdlKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQoZXZlbnQsIGV2ZW50LT5wcmVzc2VkID8gZmlsdGVyUmVzdWx0LmtleVRleHQg
OiBTdHJpbmcoKSwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6
Ok5vLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi12b2lkIFZpZXc6OnN5bnRo
ZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBPcHRpb25h
bDxFZGl0aW5nUmFuZ2U+JiYgc2VsZWN0aW9uUmFuZ2UpCit2b2lkIFZpZXc6OnN5bnRoZXNpemVD
b21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYgdGV4dCwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHVuZGVybGluZXMsIHN0ZDo6b3B0
aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHNlbGVjdGlvblJhbmdlKQogewogICAgIC8vIFRoZSBXaW5k
b3dzIGNvbXBvc2l0aW9uIGtleSBldmVudCBjb2RlIGlzIDI5OSBvciBWS19QUk9DRVNTS0VZLiBX
ZSBuZWVkIHRvCiAgICAgLy8gZW1pdCB0aGlzIGNvZGUgZm9yIHdlYiBjb21wYXRpYmlsaXR5IHJl
YXNvbnMgd2hlbiBrZXkgZXZlbnRzIHRyaWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XUEVWaWV3LmgKaW5kZXggYjk0ODUyNTU0MzEzZWNlZGMwZWFkZWUwNjFjNGRmNmY2NzU1
NmM1MC4uNGFlMGNhOGE3YmJjMGZkODMzMWQ0ZThlYjIzMjk1YWVmZDBhZjA3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTgyLDggKzgyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0Kik7CiAgICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBpbnB1dE1ldGhvZENvbnRl
eHQoKSBjb25zdDsKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8V2ViS2l0
OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKLSAgICB2b2lkIHN5bnRoZXNpemVDb21wb3NpdGlvbktl
eVByZXNzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZT4+JiYsIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiYmKTsKKyAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9k
U3RhdGU+JiYpOworICAgIHZvaWQgc3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoY29uc3Qg
U3RyaW5nJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+PiYmLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiYmKTsKIAogICAgIHZv
aWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNwcAppbmRleCA5OTE2ZjNkN2EwNzg3YmMxZTMz
NmIzNDU4ZTY0MDQxYzE3ODY0MmRkLi44Y2RiZmYzMTE2N2VhYTczYzE3NTEzNGFmYTdmYTE5MmRk
YWUzMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRQb3B1cE1lbnUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51Ojpz
ZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRleCkKICAgICBtX3NlbGVjdGVkSXRlbSA9IGl0ZW1J
bmRleDsKIH0KIAotdm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1
bnNpZ25lZD4gaXRlbUluZGV4KQordm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRl
eC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9vcigtMSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5oCmluZGV4IGNmYjliY2I4
YWNlM2NlN2I5NjMwZWJhZWFjZGIzY2U5YTIxMjBkYmIuLmYzZjVlYjkyN2MzNDI1MmUxZGI2YThh
NGNhMDA3MWEyODhlMjYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0UG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRQb3B1cE1lbnUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgfldl
YktpdFBvcHVwTWVudSgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc2VsZWN0SXRlbSh1bnNpZ25l
ZCBpdGVtSW5kZXgpOwotICAgIHZvaWQgYWN0aXZhdGVJdGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBp
dGVtSW5kZXgpOworICAgIHZvaWQgYWN0aXZhdGVJdGVtKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGl0ZW1JbmRleCk7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0UG9wdXBNZW51KFdLV1BFOjpWaWV3
JiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYpOwpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKICAgICBHUmVmUHRyPFdlYktpdE9wdGlvbk1l
bnU+IG1fbWVudTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3RlZEl0ZW07CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3RlZEl0ZW07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAppbmRleCBlMzVlNTE0YjMz
MmJkM2UwYjM5MWMyNWEzYWY3MDY0NWQ5YzliMjdiLi5iNDEwNGI5MmU1ODVmNDY1Yzk4MzZkYTZm
NGEzMTVhYmE2YzYyMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05l
eHRLZXlGcmFtZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0cmFuc2l0aW9uQmV0
d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFt
ZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICB0cmFuc2l0
aW9uQmV0d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9r
ZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgewog
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKQogICAg
IGF1dG8mIHBvc3RTdGF0ZUVudHJ5ID0gbmV4dEtleUZyYW1lLnN0YXRlc1ttX2lucHV0U291cmNl
U3RhdGVJbmRleF07CiAgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0U291cmNlID0gcG9z
dFN0YXRlRW50cnkuZmlyc3Q7CiAKLSAgICB0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKGlu
cHV0U291cmNlLCBwb3N0U3RhdGVFbnRyeS5zZWNvbmQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7
CisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShpbnB1dFNvdXJjZSwgcG9zdFN0YXRl
RW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShzdGQ6
Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAgIGlmIChl
cnJvcikgewogICAgICAgICAgICAgYXV0byBmaW5pc2ggPSBzdGQ6OmV4Y2hhbmdlKG1fa2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwogICAgICAgICAgICAgZmlu
aXNoKGVycm9yKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZQog
ICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CiB9CiAKLXZvaWQgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpyZXNvbHZlTG9jYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9u
LCBNb3VzZU1vdmVPcmlnaW4gb3JpZ2luLCBPcHRpb25hbDxTdHJpbmc+IG5vZGVIYW5kbGUsIEZ1
bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgT3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnJlc29sdmVMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y3VycmVudExvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgTW91c2VNb3ZlT3JpZ2luIG9yaWdpbiwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5vZGVIYW5k
bGUsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBzdGQ6
Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJl
bnRMb2NhdGlvbiwgc3RkOjpudWxsb3B0KTsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6cmVzb2x2ZUxvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjdXJyZW50TAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNb3VzZU1vdmVP
cmlnaW46OkVsZW1lbnQ6IHsKLSAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZpZXdDZW50ZXJQ
b2ludE9mRWxlbWVudChtX3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1ZSgpLCBbZGVz
dGluYXRpb24gPSBsb2NhdGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2Vu
dGVyUG9pbnQsIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudCht
X3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1ZSgpLCBbZGVzdGluYXRpb24gPSBsb2Nh
dGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwg
c3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQsIGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDks
NyArMjQ5LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1
dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKIAogICAgIExPRyhBdXRvbWF0aW9u
LCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogdHJhbnNpdGlvbiBzdGFydGVkIGJldHdl
ZW4gaW5wdXQgc291cmNlIHN0YXRlczogWyVkLiVkXSAtLT4gJWQuJWQiLCB0aGlzLCBtX2tleWZy
YW1lSW5kZXggLSAxLCBtX2lucHV0U291cmNlU3RhdGVJbmRleCwgbV9rZXlmcmFtZUluZGV4LCBt
X2lucHV0U291cmNlU3RhdGVJbmRleCk7CiAKLSAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gW3RoaXMsICZpbnB1dFNvdXJjZSwgJm5ld1N0YXRl
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFt0aGlzLCAmaW5wdXRT
b3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNp
bXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJ
T05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAg
ICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQo
KSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3Bv
cnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3Vy
Y2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmlu
aXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxv
Y2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRp
b24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVI
YW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZl
bnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRv
bWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1
dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1RPVUNIX0lOVEVSQUNUSU9OUykKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVM
b2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0
aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2Rl
SGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAg
ICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2lu
dCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3
cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVk
ID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
ICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFC
TEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9u
LnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1
ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEs
ICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRp
b24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwg
Yi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRs
ZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERp
c3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNo
RmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0NTAs
NyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNl
VG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnJ1bihPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMs
IEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+JiYga2V5
RnJhbWVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4m
IGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKICAgICBpZiAoaXNBY3RpdmUoKSkg
ewpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpjYW5j
ZWwoKQogICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1Jf
V0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKIH0KIAotdm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKQordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNoaW5n
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCiB7CiAgICAgbV9r
ZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmgKaW5kZXggNjk4MjIyMmU2YjlmYTI1ZGFiYTM0NDc3MDZkMTBlYmQ5ZjQ4M2E4MS4u
NzgwMmVkMTMwZjgyNzY1YzQ3ZTE1ZTUzYTk0ZDIwYThkMWI3ZTk3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3MgVmlydHVhbEtleTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOwotdXNpbmcg
QXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47Cit1c2luZyBBdXRvbWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OwogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKQEAg
LTgxLDEyICs4MSwxMiBAQCBlbnVtIGNsYXNzIFRvdWNoSW50ZXJhY3Rpb24gewogc3RydWN0IFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGUgewogICAgIENoYXJLZXlTZXQgcHJlc3NlZENoYXJLZXlz
OwogICAgIFZpcnR1YWxLZXlNYXAgcHJlc3NlZFZpcnR1YWxLZXlzOwotICAgIE9wdGlvbmFsPE1v
dXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247Ci0gICAgT3B0aW9uYWw8TW91c2VNb3ZlT3Jp
Z2luPiBvcmlnaW47Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRTaXplPiBzY3JvbGxEZWx0YTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247CisgICAgc3Rk
OjpvcHRpb25hbDxNb3VzZU1vdmVPcmlnaW4+IG9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbm9kZUhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBs
b2NhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHNjcm9sbERlbHRh
OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CiAKICAgICBzdGF0aWMgU2lt
dWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlRm9yU291cmNlVHlwZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZVR5cGUpOwogfTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91
c2VJbnRlcmFjdGlvbiwgTW91c2VCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbkluVmlldywgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5U
RVJBQ1RJT05TKQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVUb3VjaEludGVyYWN0aW9u
KFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBsb2NhdGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25D
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZVRv
dWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91Y2hJbnRlcmFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1
cmF0aW9uLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJ
bnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYsIEF1dG9tYXRp
b25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVs
dGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAjZW5kaWYKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVBy
b3h5JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBu
b2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIE9w
dGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudChXZWJQYWdlUHJveHkmLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYgbm9k
ZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4s
IHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmKSA9IDA7CiAgICAgfTsK
IAogICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQpA
QCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIoKTsKIAotICAgIHZvaWQgcnVuKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9t
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJ1bihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYm
IGtleUZyYW1lcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTY0LDE3ICsx
NjQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNl
U3RhdGUoKTsKICAgICB2b2lkIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVk
SW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoT3B0
aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pOworICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hp
bmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik7CiAKICAgICB2b2lkIGtl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpOwogICAgIGJvb2wgaXNLZXlGcmFt
ZVRyYW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCByZXNvbHZlTG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4sIE9wdGlvbmFsPFN0cmluZz4g
bm9kZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYpOworICAgIHZvaWQgcmVzb2x2ZUxv
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjdXJyZW50TG9jYXRpb24sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50Piwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+JiYpOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBtX2ZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IG1fZnJhbWVJRDsKICAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKICAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcjsKICAgICBSdW5Mb29wOjpUaW1l
cjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25U
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYjUwMDU4NTk0Y2Q3OTA1NTIyM2UyN2U3
ZjU1ZTAzNDIyMDY5YjUyNi4uNjU5NDBiZjg4ZDA0ZjZjNTMwZTc1MDI2MmFmYWJkMWY3YzNkMGJm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpkaWREZXN0cm95RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiAgICAgICAgIG1faGFuZGxlV2ViRnJhbWVNYXAucmVtb3ZlKGhhbmRsZSk7CiB9CiAKLU9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURGb3JI
YW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1lTm90Rm91bmQpCitzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURG
b3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1lTm90Rm91bmQpCiB7CiAg
ICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0yMTgsNyArMjE4LDcgQEAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcKICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7CiB9CiAKLVN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2Vi
RnJhbWVJRChPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpCitTdHJpbmcgV2ViQXV0
b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQoc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEIHx8ICEqZnJhbWVJRCkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlv
biB0b1Byb3RvY29sKEEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGVCcm93c2luZ0NvbnRleHQoT3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0
aW9uPiYmIHByZXNlbnRhdGlvbkhpbnQsIFJlZjxDcmVhdGVCcm93c2luZ0NvbnRleHRDYWxsYmFj
az4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5n
Q29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJy
b3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiBwcmVzZW50YXRpb25IaW50LCBSZWY8Q3JlYXRl
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBpZiAoIW1fY2xpZW50KQpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldFdpbmRvd0ZyYW1l
T2ZCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3Jp
Z2luLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgT3B0aW9uYWw8ZG91Ymxl
PiB4OwotICAgIE9wdGlvbmFsPGRvdWJsZT4geTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geTsKICAgICBpZiAob3JpZ2luKSB7CiAgICAg
ICAgIHggPSBvcmlnaW4tPmdldERvdWJsZSgieCJfcyk7CiAgICAgICAgIGlmICgheCkKQEAgLTM5
NCw4ICszOTQsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9m
QnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdAogICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwg
IlRoZSAneScgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gaGVpZ2h0OwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIHdpZHRoID0gc2l6ZS0+Z2V0
RG91YmxlKCJ3aWR0aCJfcyk7CiAgICAgICAgIGlmICghd2lkdGgpCkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29u
dGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhh
bmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3ks
IE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPFdhaXRGb3JO
YXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhh
bmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJh
dGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJl
ZjxXYWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250
ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXhpdEZ1bGxTY3JlZW5Gb3JQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYpCiAgICAgICAgIG1fd2luZG93U3RhdGVUcmFuc2l0aW9uQ2FsbGJhY2soV2luZG93VHJh
bnNpdGlvbmVkVG9TdGF0ZTo6VW5mdWxsc2NyZWVuKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9h
ZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgT3B0aW9uYWw8ZG91YmxlPiYm
IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8TmF2aWdhdGVCcm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJv
d3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dz
aW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9w
dGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQ
YWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNh
bGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRs
ZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdQogICAgIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFn
ZSwgcGFnZUxvYWRTdHJhdGVneSwgcGFnZUxvYWRUaW1lb3V0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0
KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhh
bmRsZSYgaGFuZGxlLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgT3B0aW9uYWw8ZG91
YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRl
eHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFj
a0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9h
ZFN0cmF0ZWd5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBvcHRpb25hbFBhZ2VMb2FkVGltZW91
dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAg
ICAgaWYgKCFwYWdlKQpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0
cmF0ZWd5LCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5k
bGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3Ry
YXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBPcHRpb25hbDxkb3VibGU+JiYgb3B0
aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5C
cm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiBvcHRpb25hbFBhZ2VMb2FkU3Ry
YXRlZ3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBS
ZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAg
ICBpZiAoIXBhZ2UpCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoK
ICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoKnBhZ2UsIHBhZ2VMb2FkU3Ry
YXRlZ3ksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIE9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+
JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBPcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQ
YWdlTG9hZFRpbWVvdXQsIFJlZjxSZWxvYWRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5k
bGUmIGhhbmRsZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxSZWxvYWRCcm93c2lu
Z0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC05NDIs
NyArOTQyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlUnVuT3BlblBhbmVs
KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2UKICAgICBtX2RvbWFpbk5vdGlmaWVy
LT5maWxlQ2hvb3NlckRpc21pc3NlZChicm93c2luZ0NvbnRleHRIYW5kbGUsIGZhbHNlLCBXVEZN
b3ZlKHNlbGVjdGVkRmlsZXMpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgUmVmPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywg
T3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25h
bDxkb3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1RpbWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlm
ICghcGFnZSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjbwogICAg
ICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxl
JiBmcmFtZUhhbmRsZSwgT3B0aW9uYWw8aW50PiYmIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3Ry
aW5nJiBvcHRpb25hbE5hbWUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok5vZGVIYW5kbGUmIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFu
ZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNv
bHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBz
dGQ6Om9wdGlvbmFsPGludD4mJiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyYgb3B0aW9u
YWxOYW1lLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxl
JiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIGlmICghb3B0aW9uYWxPcmRpbmFsICYmICFvcHRpb25hbE5h
bWUgJiYgIW9wdGlvbmFsTm9kZUhhbmRsZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIkNvbW1hbmQgbXVzdCBz
cGVjaWZ5IGEgY2hpbGQgZnJhbWUgYnkgb3JkaW5hbCwgbmFtZSwgb3IgZWxlbWVudCBoYW5kbGUu
Iik7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXUKICAgICBpZiAo
ZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
RnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPik+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tdKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQp
IG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPik+IGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tdKHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkgewogICAgICAg
ICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjksNyArMTAy
OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRs
ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBCiAgICAgaWYgKGZyYW1lTm90Rm91bmQpCiAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwog
Ci0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKKyAgICBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBl
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQxLDcgKzEwNDEsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QQogICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdl
LT53ZWJQYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29y
ZGluYXRlU3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVT
eXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvb3JkaW5hdGVT
eXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKICAg
ICBzd2l0Y2ggKGNvb3JkaW5hdGVTeXN0ZW0pIHsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW06OlBhZ2U6CkBAIC0xMDU2LDcgKzEwNTYs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gcHJvdG9jb2xTdHJpbmdUb0Nv
b3JkaW5hdGVTeXN0ZW0oSW5zcGVjdG9yOjpQcgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpGcmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIE9wdGlvbmFsPGJvb2w+JiYgb3B0
aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVF
bGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFu
ZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBu
b2RlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29yZGluYXRlU3lzdGVt
IGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+
JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9y
SGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTA2Nywx
MSArMTA2NywxMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbQogICAgIGlmIChmcmFtZU5vdEZv
dW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZv
dW5kKTsKIAotICAgIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IGNvb3JkaW5hdGVTeXN0ZW0g
PSBwcm90b2NvbFN0cmluZ1RvQ29vcmRpbmF0ZVN5c3RlbShjb29yZGluYXRlU3lzdGVtVmFsdWUp
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gY29vcmRpbmF0ZVN5c3RlbSA9
IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSk7
CiAgICAgaWYgKCFjb29yZGluYXRlU3lzdGVtKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRl
ciAnY29vcmRpbmF0ZVN5c3RlbScgaXMgaW52YWxpZC4iKTsKIAotICAgIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFj
a10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3Vy
ZWQpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+LCBib29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JU
eXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYQogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbY2FsbGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxlIHsKKyAgICBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4gY29tcGxl
dGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUp
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFj
ay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9y
VHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c2V0RmlsZXNUb1NlbGVjdEYKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIFNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwg
IlRoZSBwYXJhbWV0ZXIgJ2ZpbGVDb250ZW50cycgY29udGFpbnMgYSBub24tc3RyaW5nIHZhbHVl
LiIpOwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxGaWxlUGF0aCA9IHBsYXRmb3Jt
R2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShmaWxlbmFtZSwgZmlsZURhdGEpOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9jYWxGaWxlUGF0aCA9IHBsYXRmb3JtR2Vu
ZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShmaWxlbmFtZSwgZmlsZURhdGEpOwogICAg
ICAgICBpZiAoIWxvY2FsRmlsZVBhdGgpCiAgICAgICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJUaGUgcmVtb3RlIGZpbGUg
Y291bGQgbm90IGJlIHNhdmVkIHRvIGEgbG9jYWwgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsKIApA
QCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0RmlsZXNG
b3JJbnB1dEZpbGVVcGxvYWQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICAgICAgbmV3
RmlsZUxpc3QuYXBwZW5kKGZpbGVuYW1lKTsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgewogICAgICAg
ICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RS
SU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6Z2V0QWxsQ29va2llcyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjoK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiBjb21w
bGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdf
Rk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
ZWxldGVTaW5nbGVDb29raWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdAogICAg
IGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
clR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNTY2LDkgKzE1NjYsOSBAQCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcgogfQogCiAvLyBN
QVJLOiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBBUEkKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVBy
b3h5JiBwYWdlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0
aW9uPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBPcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQcm94eSYg
cGFnZSwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRS
ZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBkaWRDb21wdXRlRWxlbWVu
dExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QsIE9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCkgbXV0YWJs
ZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4g
aW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBl
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJ
T05fQ09NTUFORF9FUlJPUl9XSVRIX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cmVzZXRDbGlja0NvdW50KCkKICAgICBtX2xhc3RDbGlja1Bvc2l0aW9uID0geyB9OwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBt
b3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwg
Y29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgY29uc3Qg
U3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBw
YWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VCdXR0b24sIGxvY2F0
aW9uSW5WaWV3cG9ydCwgcG9pbnRlclR5cGVdKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFt
ZSkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2xpcHBlZFggPSBzdGQ6Om1pbihzdGQ6Om1heCgw
LjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXdwb3J0LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53
aWR0aCgpKTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3Vy
IGNvbW1hbmQncyBjb21wbGV0aW9uIGhhbmRsZXIuCi0gICAgICAgIGF1dG8gbW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUg
eworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXJyb3IpOwogICAgICAgICB9OwogCkBAIC0xNjQyLDcgKzE2NDIsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBNb3VzZUludAogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11
bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9u
IGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc3VhbFZpZXdwb3J0Qm91bmRzID0gV2ViQ29yZTo6RmxvYXRSZWN0KHsgfSwgcGFnZS51bm9i
c2N1cmVkQ29udGVudFJlY3QoKS5zaXplKCkpOwpAQCAtMTY1Myw3ICsxNjUzLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYgcGFnZSwgVG91Y2hJbnQKICNlbmRpZgogCiAgICAgbV9zaW11bGF0aW5nVG91Y2hJbnRlcmFj
dGlvbiA9IHRydWU7Ci0gICAgcGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIGxvY2F0aW9uSW5WaWV3cG9ydCwgZHVyYXRpb24sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBt
dXRhYmxlIHsKKyAgICBwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihwYWdlLCBpbnRl
cmFjdGlvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBkdXJhdGlvbiwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIG1fc2ltdWxhdGluZ1RvdWNoSW50ZXJhY3Rpb24gPSBmYWxzZTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgIH0pOwpAQCAtMTY2MSwxMCAr
MTY2MSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJh
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludAogI2VuZGlmIC8vIEVOQUJMRShXRUJE
UklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FS
RF9JTlRFUkFDVElPTlMpCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBXVEY6OlZhcmlhbnQ8VmlydHVhbEtleSwgQ2hhcktleT4mJiBrZXksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBp
bnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYga2V5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxs
YmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KLSAgICBhdXRvIGtleWJv
YXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9y
KSBtdXRhYmxlIHsKKyAgICBhdXRvIGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9u
YWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgfTsKIApAQCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgV2UKICAgICAgICAgfQogCiAgICAgICAgIC8vIEJyaWRnZSB0aGUg
Zmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KLSAg
ICAgICAgYXV0byB3aGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gd2hlZWxFdmVudHNGbHVzaGVk
Q2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgIH07CiAKQEAg
LTE3ODEsNyArMTc4MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3Vz
ZUludGVyYWN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAKICAgICAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbG9jYXRpb25JblZpZXdwb3J0ID0gV2ViQ29yZTo6SW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50PihmbG9hdFgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0WSkpOwogCi0gICAg
ICAgIGF1dG8gbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2Us
IGZsb2F0WCwgZmxvYXRZXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
eworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBwYWdlLCBmbG9hdFgsIGZsb2F0WV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPiBlcnJvcikgewogICAgICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBlbHNlIHsKQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sCiAKICAgICAgICAgYXV0byB2aXJ0dWFsS2V5U3RyaW5nID0gaW50ZXJhY3Rpb25PYmpl
Y3QtPmdldFN0cmluZygia2V5Il9zKTsKICAgICAgICAgaWYgKCEhdmlydHVhbEtleVN0cmluZykg
ewotICAgICAgICAgICAgT3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4odmlydHVhbEtleVN0
cmluZyk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXkg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk+KHZp
cnR1YWxLZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYgKCF2aXJ0dWFsS2V5KQogICAgICAgICAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFs
aWRQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1l
dGVyIGhhcyBhbiBpbnZhbGlkICdrZXknIHZhbHVlLiIpOwogCkBAIC0xODczLDcgKzE4NzMsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbAogICAgIGlmICghYWN0aW9uc1RvUGVyZm9ybS5zaXpl
KCkpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludGVybmFsRXJyb3IsICJObyBhY3Rpb25zIHRvIHBlcmZvcm0uIik7CiAKLSAgICBhdXRvIGtl
eWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2Up
XShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgIGF1dG8ga2V5
Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigqcGFnZSld
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVl
KCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAgICAgZWxzZQpAQCAtMTk1MSw3ICsxOTUxLDcg
QEAgc3RhdGljIFZpcnR1YWxLZXkgbm9ybWFsaXplZFZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkp
CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNoYXIzMj4gcHJlc3NlZENoYXJLZXkoY29u
c3QgU3RyaW5nJiBwcmVzc2VkQ2hhcktleVN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFVD
aGFyMzI+IHByZXNzZWRDaGFyS2V5KGNvbnN0IFN0cmluZyYgcHJlc3NlZENoYXJLZXlTdHJpbmcp
CiB7CiAgICAgc3dpdGNoIChwcmVzc2VkQ2hhcktleVN0cmluZy5sZW5ndGgoKSkgewogICAgIGNh
c2UgMToKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBl
cmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBub24tc3RyaW5nIHZpcnR1YWwga2V5
IHZhbHVlLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPFZpcnR1YWxLZXk+IHBh
cnNlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiBwYXJzZWRWaXJ0dWFsS2V5ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5PihwcmVzc2VkVmlydHVh
bEtleVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVmlydHVhbEtleSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJFbmNvdW50ZXJlZCBhbiB1bmtub3duIHZp
cnR1YWwga2V5IHZhbHVlLiIpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0yMTUxLDcg
KzIxNTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIH0KIAogICAgIC8vIERlbGVn
YXRlIHRoZSByZXN0IG9mIMKnMTcuNCBEaXNwYXRjaGluZyBBY3Rpb25zIHRvIHRoZSBkaXNwYXRj
aGVyLgotICAgIGlucHV0RGlzcGF0Y2hlci5ydW4oZnJhbWVJRCwgV1RGTW92ZShrZXlGcmFtZXMp
LCBtX2lucHV0U291cmNlcywgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4g
ZXJyb3IpIHsKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKGZyYW1lSUQsIFdURk1vdmUoa2V5RnJh
bWVzKSwgbV9pbnB1dFNvdXJjZXMsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAg
ICAgZWxzZQpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjoKICAg
ICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0
Y2hlckZvclBhZ2UoKnBhZ2UpOwogICAgIGlucHV0RGlzcGF0Y2hlci5jYW5jZWwoKTsKICAgICAK
LSAgICBpbnB1dERpc3BhdGNoZXIucnVuKGZyYW1lSUQsIFdURk1vdmUoa2V5RnJhbWVzKSwgbV9p
bnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKSB7CisgICAgaW5wdXREaXNwYXRjaGVyLnJ1bihmcmFtZUlELCBXVEZNb3ZlKGtleUZy
YW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7
CiAgICAgICAgIGVsc2UKQEAgLTIxOTAsNyArMjE5MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9BQ1RJT05TX0FQSSkKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYgbm9kZUhh
bmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIE9w
dGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90
Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2Ny
ZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHRIYW5kbGUmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
b3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0
aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhh
bmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMjIwNSw3ICsyMjA1LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjoKICAgICBib29sIGNsaXBUb1ZpZXdwb3J0ID0gb3B0aW9uYWxDbGlwVG9WaWV3
cG9ydCA/ICpvcHRpb25hbENsaXBUb1ZpZXdwb3J0IDogZmFsc2U7CiAKICNpZiBQTEFURk9STShH
VEspCi0gICAgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmLCBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRSZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNv
dCA9IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiBy
ZWN0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJiBjYWxsYmFjaykgeworICAgIEZ1bmN0
aW9uPHZvaWQoV2ViUGFnZVByb3h5Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYm
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNvdCA9IFtdKFdl
YlBhZ2VQcm94eSYgcGFnZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmIHJlY3Qs
IFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIHBhZ2Uu
Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbcGFnZSA9IG1ha2VSZWYocGFnZSksIHJl
Y3QgPSBXVEZNb3ZlKHJlY3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQogICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwpAQCAtMjIxNCw3ICsyMjE0LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAgICAgICAgICAgIGlmICghc25hcHNob3QpCiAgICAg
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJv
cik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBw
bGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKCpzbmFwc2hvdCk7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKCpzbmFwc2hvdCk7CiAgICAgICAgICAgICBpZiAoIWJhc2U2NEVuY29k
ZWREYXRhKQogICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KEludGVybmFsRXJyb3IpOwogCkBAIC0yMjI3LDcgKzIyMjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtwYWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrLCB0YWtlVmlld1NuYXBzb3Qg
PSBXVEZNb3ZlKHRha2VWaWV3U25hcHNvdCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBX
ZWJDb3JlOjpJbnRSZWN0JiYgcmVjdCkgbXV0YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3BhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJhY2ssIHRha2VWaWV3U25h
cHNvdCA9IFdURk1vdmUodGFrZVZpZXdTbmFwc290KV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCYmIHJlY3QpIG11dGFibGUgewogICAgICAgICBpZiAo
ZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZP
Ul9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
VGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERh
dGEgPSBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGltYWdlRGF0YUhhbmRsZSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWREYXRhID0gcGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YShpbWFnZURhdGFIYW5kbGUpOwogICAgIGlmICghYmFzZTY0RW5j
b2RlZERhdGEpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVy
bmFsRXJyb3IpOwogCkBAIC0yMjY0LDE5ICsyMjY0LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJl
YWJsCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCi1PcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1H
ZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmKQorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQ
TkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0
Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JSZW1vdGVGaWxlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAppbmRleCA4YjcxYTg4M2U4MzVmNWJjMjY0MjA2YmYxNTFjY2ZkMzViOWM0ZWFkLi4x
YzcyODFjYWIwMDM5OGNlY2I4NGU1ZTI2YTA0OWM5ODhkNjY3MGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgQXV0b21h
dGlvbkNvbW1hbmRFcnJvciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlIHR5cGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdl
IHsgc3RkOjpudWxsb3B0IH07CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBz
dGQ6Om51bGxvcHQgfTsKICAgICAKICAgICBBdXRvbWF0aW9uQ29tbWFuZEVycm9yKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBlKQogICAgICAgICA6IHR5
cGUodHlwZSkgeyB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZygpOwogfTsKIAotdXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0g
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJy
b3I+KT47Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+Owog
CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNzaW9uPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0xNTAsNyArMTUw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIE1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbG9jYXRpb25JblZpZXcsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUsIEF1dG9tYXRp
b25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9V
Q0hfSU5URVJBQ1RJT05TKQotICAgIHZvaWQgc2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0
aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdl
UHJveHkmLCBUb3VjaEludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRp
b25JblZpZXcsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRf
SU5URVJBQ1RJT05TKQogICAgIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIFdURjo6VmFyaWFudDxWaXJ0dWFsS2V5LCBD
aGFyS2V5PiYmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CkBAIC0xNTgsNyArMTU4
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQog
ICAgIHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
ZGVsdGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgotICAgIHZvaWQg
dmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudChXZWJQYWdlUHJveHkmLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpOb2RlSGFuZGxlJiwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJik7CisgICAgdm9p
ZCB2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQcm94eSYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4pPiYmKTsKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCiAKQEAg
LTE2OSwyNiArMTY5LDI2IEBAIHB1YmxpYzoKICAgICAvLyBQbGF0Zm9ybTogR2VuZXJpYwogICAg
IHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0cyhSZWY8R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNr
PiYmKTsKICAgICB2b2lkIGdldEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8R2V0QnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgY3JlYXRlQnJvd3NpbmdDb250ZXh0KE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNl
bnRhdGlvbj4mJiwgUmVmPENyZWF0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2
b2lkIGNyZWF0ZUJyb3dzaW5nQ29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiwgUmVmPENyZWF0
ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IGNsb3NlQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYpOwogICAgIHZvaWQg
c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmLCBSZWY8U3dpdGNoVG9Ccm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJik7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3JpZ2luLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNp
emUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwogICAg
IHZvaWQgbWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8TWF4aW1pemVX
aW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKICAgICB2b2lkIGhpZGVXaW5kb3dP
ZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpC
cm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8SGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYpOwotICAgIHZvaWQgbmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBh
Z2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJl
ZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lkIGdvQmFja0lu
QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBw
YWdlTG9hZFRpbWVvdXQsIFJlZjxHb0JhY2tJbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsK
LSAgICB2b2lkIGdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYs
IE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0ZvcndhcmRJbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lkIHJlbG9hZEJyb3dzaW5nQ29udGV4dChj
b25zdCBTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5PiYmLCBPcHRpb25hbDxkb3VibGU+JiYgcGFnZUxvYWRUaW1lb3V0LCBS
ZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgd2FpdEZvck5h
dmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkZyYW1lSGFuZGxlJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmIHBhZ2VMb2FkVGlt
ZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNrPiYmKTsKLSAgICB2
b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwg
UmVmPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0
LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJik7CisgICAgdm9pZCBu
YXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYm
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJy
b3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250
ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgcGFn
ZUxvYWRUaW1lb3V0LCBSZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJik7Cisg
ICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmLCBzdGQ6Om9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+
JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHBhZ2VMb2FkVGltZW91dCwgUmVmPEdvRm9yd2Fy
ZEluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOworICAgIHZvaWQgcmVsb2FkQnJvd3NpbmdD
b250ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYg
cGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwor
ICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxXYWl0Rm9yTmF2aWdhdGlvblRv
Q29tcGxldGVDYWxsYmFjaz4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRs
ZSYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1RpbWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKTsKICAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0
aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dEhhbmRsZSYsIFJlZjxKU09OOjpPYmplY3Q+JiYgcmVxdWVzdGVkUG9zaXRpb24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBSZWY8SlNPTjo6QXJyYXk+JiYga2V5TW9k
aWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4mJik7CiAgICAgdm9p
ZCBwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgUmVmPEpTT046OkFycmF5PiYmIGlu
dGVyYWN0aW9ucywgUmVmPFBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmKTsK
ICAgICB2b2lkIHBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgUmVmPEpTT046OkFycmF5PiYm
IHNvdXJjZXMsIFJlZjxKU09OOjpBcnJheT4mJiBzdGVwcywgUmVmPFBlcmZvcm1JbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5j
ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRs
ZSYsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpOwotICAgIHZvaWQg
dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RnJhbWVIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpO
b2RlSGFuZGxlJiwgT3B0aW9uYWw8Ym9vbD4mJiBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBPcHRp
b25hbDxib29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIE9wdGlvbmFsPGludD4mJiBv
cmRpbmFsLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFj
az4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBS
ZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFt
ZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFt
ZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG9yZGluYWwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIFJl
ZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKTsKICAgICB2b2lkIHJlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpC
cm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpGcmFtZUhhbmRsZSYsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4m
Jik7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBPcHRpb25hbDxib29sPiYmIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5h
dGVTeXN0ZW0sIFJlZjxDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmKTsKKyAgICB2b2lk
IGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6Tm9kZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29yZGluYXRlU3lzdGVt
LCBSZWY8Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBzZWxlY3RP
cHRpb25FbGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dz
aW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9k
ZUhhbmRsZSYsIFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8Ym9vbD4gaXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IGRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmKTsKQEAgLTIwNSw3ICsyMDUsNyBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBz
ZXRTZXNzaW9uUGVybWlzc2lvbnMoUmVmPEpTT046OkFycmF5PiYmKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB2b2lkIGluc3BlY3RCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgT3B0aW9uYWw8Ym9v
bD4mJiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBSZWY8SW5zcGVjdEJyb3dzaW5nQ29udGV4dENhbGxi
YWNrPiYmKTsKKyAgICB2b2lkIGluc3BlY3RCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2s+JiYpOwogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0aW9uIFN1cHBv
cnQuCkBAIC0yMjcsOCArMjI3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZv
clBhZ2UoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKTsKICAg
ICB2b2lkIGdldE5leHRDb250ZXh0KFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiwgVmVjdG9y
PFJlZjxXZWJQYWdlUHJveHk+PiYmLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ+PiwgUmVmPFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpHZXRCcm93c2luZ0NvbnRleHRzQ2FsbGJhY2s+JiYpOwogCi0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYs
IGJvb2wmIGZyYW1lTm90Rm91bmQpOwotICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZUlEKE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYs
IGJvb2wmIGZyYW1lTm90Rm91bmQpOworICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZUlEKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik7CiAgICAgU3RyaW5nIGhhbmRs
ZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2ViRnJhbWVQcm94eSYpOwogCiAgICAgdm9pZCB3YWl0
Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CkBAIC0yNTgsNyArMjU4
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJB
Q1RJT05TKQogICAgIC8vIFNpbXVsYXRlcyBhIHNpbmdsZSB0b3VjaCBwb2ludCBiZWluZyBwcmVz
c2VkLCBtb3ZlZCwgYW5kIHJlbGVhc2VkLgotICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZVRvdWNo
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91Y2hJbnRlcmFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRp
b24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHBsYXRmb3JtU2lt
dWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIFNp
bXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIga2V5IGJlaW5nIHByZXNzZWQvcmVsZWFz
ZWQsIHN1Y2ggYXMgJ2EnLCBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFs
bG93ZWQgYnkgdGhlIHByb3RvY29sLgpAQCAtMjcxLDE5ICsyNzEsMTkgQEAgcHJpdmF0ZToKICNl
bmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKIAogICAgIC8vIEdl
dCBiYXNlNjQtZW5jb2RlZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgotICAgIHN0YXRpYyBPcHRp
b25hbDxTdHJpbmc+IHBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9y
bUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNo
b3QmKTsKIAogICAgIC8vIFNhdmUgYmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cyB0byBhIGxv
Y2FsIGZpbGUgcGF0aCBhbmQgcmV0dXJuIHRoZSBwYXRoLgogICAgIC8vIFRoaXMgcmV1c2VzIHRo
ZSBiYXNlbmFtZSBvZiB0aGUgcmVtb3RlIGZpbGUgcGF0aCBzbyB0aGF0IHRoZSBmaWxlbmFtZSBl
eHBvc2VkIHRvIERPTSBBUEkgcmVtYWlucyB0aGUgc2FtZS4KLSAgICBPcHRpb25hbDxTdHJpbmc+
IHBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShjb25zdCBTdHJpbmcm
IHJlbW90ZUZpbGVQYXRoLCBjb25zdCBTdHJpbmcmIGJhc2U2NEVuY29kZWRGaWxlQ29udGVudHMp
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0
aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxlUGF0aCwgY29uc3QgU3RyaW5n
JiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IC8vIFRoZSB0eXBlIHBhcmFtZXRlciBvZiB0aGUgTlNBcnJheSBhcmd1bWVudCBpcyBwbGF0Zm9y
bS1kZXBlbmRlbnQuCiAgICAgdm9pZCBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFn
ZVByb3h5JiwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKTsKIAotICAgIE9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5KSBjb25zdDsKLSAgICBPcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlRm9y
VmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmll
cnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXkpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7
IG51bGxwdHIgfTsKQEAgLTMwNywxMyArMzA3LDEzIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29u
dGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1f
cGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9L
RVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVu
ZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJ
T05TKQotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+
IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4pPj4gbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdXaGVlbEV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX25leHRFdmFs
dWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlv
blNlc3Npb25DYWlyby5jcHAKaW5kZXggOWY2YmQwMTkwODk5NzgxMzg4ODMzMjgzMWMxNzBlYTBk
MzRlOWE3Yi4uYmMxNjE4M2I4NzA4YTIxOTkxNjExMDNlN2Q5ZmNmNDQ2NTZkNjk5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMg
T3B0aW9uYWw8U3RyaW5nPiBiYXNlNjRFbmNvZGVkUE5HRGF0YShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRh
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKIHsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcocG5nRGF0YSk7CiB9CiAKLU9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5H
RGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKQEAgLTYyLDcgKzYyLDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRF
bmNvZGVkUE5HRGF0YShjb25zdCBTaGEKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEo
c3VyZmFjZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JiBz
bmFwc2hvdCkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxh
dGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmIHNuYXBzaG90
KQogewogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEo
c25hcHNob3Quc3VyZmFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2Nv
YS5tbQppbmRleCA4YTE1ZmU2Y2Y1NDQ0MzFlOWM2NDVkN2Q4YWNlMzAyY2RjMGQxN2E5Li45ZDE1
NTkyMWJiMDg4MDFhZDJiYzY4ZmU5YjdkNDhjMmNlZDc3ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFIYW5kbGUpCitzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkKIHsKICAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCkBA
IC01OSw3ICs1OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJl
dHVybiBTdHJpbmcoW2ltYWdlRGF0YSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0p
OwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
bmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxl
UGF0aCwgY29uc3QgU3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKQorc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxG
aWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxlUGF0aCwgY29uc3Qg
U3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKQogewogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGZpbGVDb250ZW50cyA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0
RW5jb2RlZFN0cmluZzpiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzIG9wdGlvbnM6MF0pOwogICAg
IGlmICghZmlsZUNvbnRlbnRzKSB7CkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4g
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVt
b3RlRmlsCiAgICAgcmV0dXJuIFN0cmluZyhsb2NhbEZpbGVQYXRoKTsKIH0KIAotT3B0aW9uYWw8
dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVh
bEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGtleSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CkBAIC0xOTcsNyArMTk3LDcgQEAgT3B0aW9u
YWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJ
bnNwZWN0b3I6OlByb3RvY28KICAgICB9CiB9CiAKLU9wdGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXkga2V5KSBjb25zdAogewogICAgIHN3aXRjaCAoa2V5KSB7CiAgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBs
eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggYjg1NDRmZmE0NWQ4MmIx
MDI5MTkyOTNmYWNlYTY3MTYxZTE3ZmMzYy4uNmY1MjVkYTBiYTI1NWMyYjE1MzM2MDMzOWZiNTAy
YWRlNTJiM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KQEAgLTc2LDgg
Kzc2LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWcKICAgICAvLyBVSUtpdCBkb2VzIG5vdCBz
ZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFyZHdhcmUga2V5Ym9h
cmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJzIGFuZCBXZWJDb3Jl
IG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAvLyBTeW50aGVzaXplIGEg
c2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBjb2RlIGlzIGluZmVycmVk
LgotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBj
aGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnM7CiAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmll
cnMuCiAgICAgV1RGOjpzd2l0Y2hPbihrZXksCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoSW50ZXJhY3Rpb24gaW50
ZXJhY3Rpb24pCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkm
IHBhZ2UsIFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBsb2NhdGlvbkluVmlld3BvcnQsIE9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgVG91Y2hJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkdXJh
dGlvbiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25PblNjcmVlbiA9IHBhZ2Uuc3luY1Jvb3RW
aWV3VG9TY3JlZW4oSW50UmVjdChsb2NhdGlvbkluVmlld3BvcnQsIEludFNpemUoKSkpLmxvY2F0
aW9uKCk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMsIHN0cmVh
bSA8PCAicGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb246IGludGVyYWN0aW9uPSIgPDwg
aW50ZXJhY3Rpb24gPDwgIiwgbG9jYXRpb25JblZpZXdwb3J0PSIgPDwgbG9jYXRpb25JblZpZXdw
b3J0IDw8ICIsIGxvY2F0aW9uT25TY3JlZW49IiA8PCBsb2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1
cmF0aW9uPSIgPDwgZHVyYXRpb24udmFsdWVfb3IoMF9zKS5zZWNvbmRzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNl
c3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJB
dXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQppbmRleCA3OGFkZmM2MGQwMmMxNTg3ODFjMWJjYWMyNzg1
MGNmOWQxMWNlMjY5Li41ZmNkODFkMTRmZjI2YzFmNGRhYzc2NTg3ZDhiYjc1YjQ0NzY1ZTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtNDQsNyArNDQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI3ByYWdtYSBtYXJrIENvbW1hbmRzIGZvciAnUExBVEZP
Uk0oTUFDKScKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29u
dGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmIGhhbmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBS
ZWY8SW5zcGVjdEJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGhhbmRsZSwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNjMz
LDggKzYzMyw4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnCiAgICAgYm9vbCBpc1N0aWNreU1v
ZGlmaWVyID0gZmFsc2U7CiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVy
cyA9IDA7CiAgICAgaW50IGtleUNvZGUgPSAwOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJD
b2RlOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
aWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CiAKICAgICBXVEY6OnN3aXRjaE9uKGtl
eSwKICAgICAgICAgWyZdIChWaXJ0dWFsS2V5IHZpcnR1YWxLZXkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI3ZDZhNmNl
NjA2NWY3ZjIyZTkxMDU5ZTM2ZGRkNDQwNTYxN2E1NWUuLjExNDBkNmM4MWUzN2YyYzhjZmNmMzYx
NzgxZjNiOTkyNzBlODhjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9u
YWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50
NjRfdD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQorYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgdHVybiB0aGlzIGludG8gYSBSRUxFQVNFX0FTU0VSVCgpLgogICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAppbmRleCAxMjI0N2NlYTlhNTVhODdkOWU4ZjgzZTkzZmM5ODIwZDE5ODU1
ZjhlLi45YWI2MjhhNmZkMWM5YzRjZTM0NGZkNThjNTFiNzlhYzc3ZDBjZDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTE3LDcg
KzExNyw3IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNz
SWRlbnRpZmllcigpIDogMDsgfQogCiAgICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6OlRlcm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3Nh
Z2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4s
IE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rlciop
PiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gc3RkOjpudWxsb3B0LCBTaG91bGRTdGFy
dFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5OjpZZXMpOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5
bmNSZXBseUluZm8gPSBzdGQ6Om51bGxvcHQsIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAKICAg
ICB2b2lkIHJlcGx5VG9QZW5kaW5nTWVzc2FnZXMoKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdHJ1Y3QgUGVuZGluZ01lc3NhZ2UgewogICAgICAgICBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyOwogICAgICAgICBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiBzZW5kT3B0aW9uczsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+IGFzeW5jUmVwbHlJbmZvOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiBhc3luY1JlcGx5SW5mbzsKICAgICB9OwogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYp
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IGRlNDBmYzhmMzE3Njk3NWIxNTJj
NGVmYWE0MDE1N2M5NGYyZmE5ZjIuLjljYWI5MjY4ZDAwOTU5YzFiYmQ4NjUyYzk2OTk2ZTI0MTYy
NjNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Np
b24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgbWVzc2FnZU9mQ3VycmVu
dEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJv
eHkmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0
UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9n
T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0
RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21h
dGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICBBUEk6OkF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gY3VycmVudFByZXNl
bnRhdGlvbk9mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYlBhZ2VQcm94eSYpIG92ZXJy
aWRlOwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+
PiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCBkZjE2MTM4YzU0NjBjZTViMTVkYWVh
OGU4YmE4MjA4YmE5MjJkYmE3Li4zNzE0NGExOWJjMGZkNDQxMDhiYjlmOWM2OTEwZWFkNjkxYmZl
OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25Q
YWdlKFdlYkF1CiAgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3
cmFwcGVyKHNlc3Npb24pIHNldFVzZXJJbnB1dDp2YWx1ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxBUEk6
OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9X
S0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlwdERpYWxvZ1R5cGUgdHlwZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dU
eXBlPiB0b0ltcGwoX1dLQXV0b21hdGlvblNlc3Npb25KYXZhU2NyaXB0RGlhbG9nVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgX1dLQXV0b21hdGlvblNlc3Npb25K
YXZhU2NyaXB0RGlhbG9nVHlwZU5vbmU6CkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIEFQSTo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiB0b0lt
cGwoX1dLQXV0b20KICAgICB9CiB9CiAKLU9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlw
ZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNl
c3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3N0ZDo6b3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IEF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50Ojp0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vz
c2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBwYWdlKQogewogICAgIGlmIChhdXRvIHdlYlZp
ZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLnR5cGVP
ZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKICAgICAgICAgcmV0dXJuIHRvSW1w
bChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSB0
eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaAppbmRleCBhMmQzNjZjYTM1OGY4ZmFhMjg5MmU1NTUwNDRhY2UxNGUzMDYzZmM0Li42
ZDk2NzEzMTA1ZjFhYTRlNWU0OTA0Y2FjYWM3NWQwZDkxMDM5NzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBi
ZSBmaXhlZCBsYXRlci4KICAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVs
dExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQogCi0gICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChPcHRpb25hbDxYUkRldmljZUluZm8+KT47CisgICAgdXNpbmcg
RGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNl
SW5mbz4pPjsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5m
b0NhbGxiYWNrJiYpID0gMDsKIAogICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5t
bQppbmRleCBmYzI4NmI5ODU2NmQ4YjA1NjZjNjlmNmY3ZjZjYTI0ZTQ3YWQ0Mzk1Li5iN2YzZDdm
NDk4YzZiYzMxZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHhy
Q29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUlu
Zm8pIG11dGFibGUgeworICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlv
bmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIWRldmljZUluZm8pIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UHJlZmVyZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJl
ZmVyZW5jZU9ic2VydmVyLm1tCmluZGV4IGU1ZjcxYzU2NDBiMzliNGVlMzJlNTQwYjkwMGRiMTQ3
NzM2YTk3ZGQuLmU0YTYyODVmYTA3MDBjNTE0MTg5NTI5NTFjOWU5YjVkMzkyZWY3OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0KQEAgLTE3Niw3ICsxNzYsNyBAQCAtICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3Ry
aW5nICopZG9tYWluIGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOgogewogI2lmIEVO
QUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZG9tYWluID0gcmV0YWluUHRyKGRvbWFpbiksIGtleSA9IHJldGFpblB0cihrZXkpLCBlbmNvZGVk
VmFsdWUgPSByZXRhaW5QdHIoZW5jb2RlZFZhbHVlKV0gewotICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGVuY29kZWRTdHJpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVk
U3RyaW5nOwogICAgICAgICBpZiAoZW5jb2RlZFZhbHVlKQogICAgICAgICAgICAgZW5jb2RlZFN0
cmluZyA9IFN0cmluZyhlbmNvZGVkVmFsdWUuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBkNTdjY2FhNzU5NmFkN2M2ZTU0YmRhYTZl
YTQ5OWQ1MzQ0NzlmODZlLi5lY2Y3MjEzODU4YjhkN2IzZWIyYTU0ZjNiM2E4YzEyZWVkNGJkZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEx
NDAsNyArMTE0MCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
bWFpbkZyYW1lSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBtYWluRnJhbWVJRDsKICAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IGZyYW1lLnBh
Z2UoKSA/IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQogICAgICAgICAgICAg
bWFpbkZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQoKTsKICAgICAgICAgRnJhbWVJbmZvRGF0
YSBmcmFtZUluZm8geyBmcmFtZS5pc01haW5GcmFtZSgpLCB7IH0sIHVzZXJNZWRpYU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLCBmcmFtZS5mcmFtZUlEKCksIG1haW5GcmFtZUlEIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KaW5kZXggNDYyZDVmMTlkNGMzOTAwZDE1NzI3ZDQ3MGZmY2YxNDRhODU3
NWE4Zi4uYjU3MDVkOGJiYjc5Yzc1Njk2YTM5OGViZjNmZDJjOTYyZjM3ZWU3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBvcHRpb25h
bFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG9wdGlvbmFsU2l6ZTsKICAgICBp
ZiAoIXNpemUuaXNFbXB0eSgpKQogICAgICAgICBvcHRpb25hbFNpemUgPSBzaXplOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCmluZGV4IDQ0
ZmUzNWU4NTRjZDUzZDBjYTBhYzk1NTE3YmQzYjgzMTZmNjlhMjMuLjdhMThhNjE4NGEwNGFhMzdi
YjZkMzI4YTgxN2IwYTBhM2UwM2NiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLQ29udGFjdFBpY2tlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBDb250YWN0
c1JlcXVlc3REYXRhOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS1dlYlZpZXcg
Kil2aWV3OwogCi0tICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6
OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXByZXNlbnRXaXRoUmVxdWVz
dERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNv
bXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkPFdLQ29udGFjdFBpY2tlckRlbGVnYXRl
PiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tDb250YWN0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250
YWN0UGlja2VyLm1tCmluZGV4IDI3Y2ZlNTY0NWIzNmJmMDlhMzVlMzZiZmI3NzY0YTk2ZDdjMTJh
ODAuLjAxOTYzMWY2OTkzMjMxMTcxNDQ4ZjFmZmVkZTBiNjk0NDgzMWFiNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KQEAgLTEyMyw3
ICsxMjMsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250YWN0UGlja2VyIHsKICAgICBXZWFrT2Jq
Q1B0cjxpZDxXS0NvbnRhY3RQaWNrZXJEZWxlZ2F0ZT4+IF9kZWxlZ2F0ZTsKIAogICAgIFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0UHJvcGVydHk+IF9wcm9wZXJ0aWVzOwotICAgIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYm
KT4gX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiBfY29tcGxldGlv
bkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8V0tDTkNvbnRhY3RQaWNrZXJEZWxlZ2F0ZT4gX2Nv
bnRhY3RQaWNrZXJEZWxlZ2F0ZTsKICNpZiBIQVZFKENOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9M
TEVSKQpAQCAtMTUxLDcgKzE1MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdL
V2ViVmlldyAqKXZpZXcKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwcmVzZW50V2l0
aFJlcXVlc3REYXRhOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVy
CistICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3Rz
UmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+
PiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9wcm9wZXJ0aWVzID0gcmVxdWVzdERh
dGEucHJvcGVydGllczsKICAgICBfY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggZTc4ZWViZTcwNTVkYjA4MDdiN2Q3ZDI3NTRlNTdlMjU0ZmVk
YzI5Mi4uN2Y1MzkwMzY1MDMwZmJmMmI0NWQyMTA2NmZlOThjOGFhMzhhOWZlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAg
LTU2OCw3ICs1NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdH
cm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8U2hh
cmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgo
Y29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cywgY29uc3Qgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA1ZmFjNjYyYzkyYmVhNjZiNWRkZWQ5Yzdm
ZTU0Y2I0YjAwNTIyODJiLi42Y2QwYzAxMzZlMWY4ZDliYjI0Njc5YWYyMjU1MWFhN2Q2NmU5MzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTczMCw3ICs3MzAsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjppc1VS
TEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB9CiAKICNpZiBI
QVZFKENWRElTUExBWUxJTkspCi1PcHRpb25hbDx1bnNpZ25lZD4gV2ViUHJvY2Vzc1Bvb2w6Om5v
bWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFdlYlByb2Nlc3NQb29sOjpub21p
bmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCiB7CiAgICAgZm9yIChhdXRvJiBkaXNwbGF5TGluayA6IG1fZGlzcGxheUxpbmtz
KSB7CiAgICAgICAgIGlmIChkaXNwbGF5TGluay0+ZGlzcGxheUlEKCkgPT0gZGlzcGxheUlEKQpA
QCAtODg4LDcgKzg4OCw3IEBAIE5TU2V0ICpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNG
b3JQYXJhbWV0ZXJDb2RpbmcoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNU
X01PREUpCi12b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29u
c3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiBlbmNvZGVkVmFsdWUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRWYWx1
ZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNzJmNTAxN2VkMDQ2ZDhlNGQxOWI2NzRlNTJiN2NiYmEyNzcxNDkwYy4uN2ViN2IyM2Y0NDQy
NTU2ZGI4NWZkMDU3NzNlMjQ2ZGE4Yjk5YmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMjYsOCArMzI2LDggQEAgcHVibGljOgogICAgIF9X
S1JlY3RFZGdlIHJ1YmJlckJhbmRpbmdFbmFibGVkKCk7CiAgICAgdm9pZCBzZXRSdWJiZXJCYW5k
aW5nRW5hYmxlZChfV0tSZWN0RWRnZSk7CiAKLSAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0
eWxlKTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJs
YXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0
eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxi
YXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5
bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBiZWdpbkRlZmVy
cmluZ1ZpZXdJbldpbmRvd0NoYW5nZXMoKTsKICAgICAvLyBGSVhNRTogTWVyZ2UgdGhlc2UgdHdv
PwpAQCAtODU3LDcgKzg1Nyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxl
bmFtZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZFVSTDsKIAotICAgIE9wdGlvbmFsPE5TSW50ZWdl
cj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdl
cj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIAogICAgIENHRmxvYXQgbV90b3RhbEhlaWdo
dE9mQmFubmVycyB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCAxNmZiZjhmOGNiNWU4ZjQ2MzE3OWU3NDYyZDE5N2I4ZWM1YmMyZDFi
Li5iZTY3YjBmNDRmY2EyOTcyYzZjNTA0Y2NjMjY2MGZmODA4MzRkNDA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTU1NCw3ICsxNTU0LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIAogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogewotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghZHJhd3NCYWNrZ3Jv
dW5kKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpD
b2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgbV9wYWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
YmFja2dyb3VuZENvbG9yKTsKQEAgLTIwMDEsNyArMjAwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnVwZGF0ZVZpZXdFeHBvc2VkUmVjdCgpCiAgICAgaWYgKG1fdXNlQ29udGVudFByZXBhcmF0aW9u
UmVjdEZvclZpc2libGVSZWN0KQogICAgICAgICBleHBvc2VkUmVjdCA9IENHUmVjdFVuaW9uKG1f
Y29udGVudFByZXBhcmF0aW9uUmVjdCwgZXhwb3NlZFJlY3QpOwogCi0gICAgbV9wYWdlLT5zZXRW
aWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+KGV4cG9zZWRSZWN0KSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgbV9wYWdlLT5zZXRW
aWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGJvb2wgY2xpcHNUb1Zpc2libGVSZWN0
KQpAQCAtMjU1MSwxMiArMjU1MSwxMiBAQCBOU0NvbG9yICpXZWJWaWV3SW1wbDo6cGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihj
b2xvcik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShP
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBt
X3BhZ2UtPnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzY3JvbGxiYXJTdHlsZSk7CiB9CiAKLU9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJs
YXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+b3ZlcmxheVNjcm9sbGJhclN0eWxlKCk7CiB9CkBAIC00
MTE0LDcgKzQxMTQsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50
ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKIH0KIAotc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBOU0RyYWdPcGVy
YXRpb24ga2l0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbikKIHsKICAgICBpZiAoIWRyYWdPcGVyYXRpb24pCiAgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmNwcAppbmRleCBkZWM5ZjFjOGJhYWE4ZTI5ODcyNzJjMmRmNWEyM2FjM2RlMjk3YzRmLi5lNDlh
NGQ3ZWViODNhNmI3ZjI1NmRmZGM1YjJjYWU2YTViM2Q0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCBJUEM6OkNv
bm5lY3Rpb24qIERyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gcHJvY2VzcygpLmNvbm5lY3Rpb24oKTsKIH0KIAotYm9vbCBEcmF3aW5n
QXJlYVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBh
c3luY1JlcGx5SW5mbykKK2Jvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucywgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICBy
ZXR1cm4gcHJvY2VzcygpLnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25z
LCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMDgyYjBjMDExZDFlMzhhNzkxNTU0MGRlMTBjMTNjNzEx
OGNlOGE2Zi4uODI2YzQxN2M2YzliYTFjN2U2YzJjMzJhNmFiMGYzYWI4ZDcyZjBlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTQwLDcgKzE0MCw3
IEBAIHByaXZhdGU6CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9VSW50NjQoKTsgfQotICAg
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCkBAIC0xNTIsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSdW5Mb29wOjpUaW1l
cjxEcmF3aW5nQXJlYVByb3h5PiBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcjsKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3Nl
ZFJlY3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLmgKaW5kZXggMGFjNDdiZDMxNGE5
OGJiY2M1MGY2ZTJiY2RkOWI3ODgxYmRiOWZkMi4uNDFlZGQwZjkwNWZlZDQ0ZTQ1ZGRhODFmN2Rl
OWMzOWZlMzk1ZTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dt
ZW50U3RhdGVUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50
U3RhdGVUcmFja2VyLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYWtIYXNo
U2V0PENsaWVudD4gbV9jbGllbnRzOwogICAgIFJldGFpblB0cjxSQlNQcm9jZXNzTW9uaXRvcj4g
bV9wcm9jZXNzTW9uaXRvcjsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFN0YXRlPiBtX3N0YXRlOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTdGF0ZT4gbV9zdGF0ZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggZTI3M2FmYzZlZjY2YjVi
YzJiMDk1MzNhYjhkYTI0NDkwY2U1YjAzYy4uNDc5OGQ3NzdiZTZjZmU3NTdmYmRkY2FkMDk5Zjkw
ZGU4Y2I0ZTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgK
QEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gJnRhZzsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOworICAgIHN0ZDo6
b3B0aW9uYWw8Q2FsbGJhY2tGdW5jdGlvbj4gbV9jYWxsYmFjazsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggM2UyNjRmZDc2MTdmYTFjZTc4YjNmZTE3NWE0MTU3MDJiMDcyM2Y3Zi4uMjM1MTJhZjBm
MWQ1ZWFmMWZlYThlZmMzYjg1Yzk0MmM2YmY1MzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2Ny
aXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklE
LCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVS
TD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZh
bHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5k
SGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgc2Ny
aXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2lu
c3BlY3RvclBhZ2UpIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMtPm1f
aW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIHtleHRlbnNp
b25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VD
b250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25zdCBP
cHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+JiBkZXRhaWxzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNp
b24oY29uc3QgSW4KICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
aW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiB1c2Vy
QWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1
bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1
c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAh
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlbG9hZEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtl
eHRlbnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9u
YWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICB3
ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAppbmRleCBhNWZi
M2U1YjlmZjhmODk4OGJlNGEwYmYzYWI3NDBmNTBjYmFlYjk5Li5mMjk0NzgxNTQ2NWZhMDVlMzNm
MDBlZDVmZTY0M2EyODk3MGRkYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJl
ZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1l
LCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFs
PFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNv
bnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9y
OjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+
JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZy
YW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1
bHQpPiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVj
dG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKICAgICAvLyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBkaWRT
aG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAKaW5kZXggMmE0YmM4ZmYx
MmVmYmVkOTgzMjZjMGM2MDZhNDQyZjE3OWE3ZjJhZC4uNTcyZDIzNWM2ZDFmMTRkY2UyMTIyODkx
OTM1M2I3MzQ0YTkwM2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6dGltZWxpbmVSZWNvcmRpbmdDaGFuZ2VkKGJvb2wg
YWN0aXZlKQogICAgIG1faXNQcm9maWxpbmdQYWdlID0gYWN0aXZlOwogfQogCi12b2lkIFdlYklu
c3BlY3RvclVJUHJveHk6OnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwg
T3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKK3ZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6
c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6
RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgc3dpdGNoIChkZXZlbG9wZXJQcmVmZXJlbmNlKSB7
CiAgICAgY2FzZSBJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5oCmluZGV4IDQxZDli
YTRhNDhlMTNiZTk3MTgxM2ZjMTgyM2MyMmQzMWQ0YTI5NDUuLjI5MjE0ZDU2ZGZiNmZjYjkwMGY5
OWUyNmRkOTVlODcxZGY2ZmJkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkuaApAQCAtMjU3LDcgKzI1Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJik7CiAgICAgdm9pZCBlbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sKTsKICAg
ICB2b2lkIHRpbWVsaW5lUmVjb3JkaW5nQ2hhbmdlZChib29sKTsKLSAgICB2b2lkIHNldERldmVs
b3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3Bl
clByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+KTsKKyAgICB2b2lkIHNldERldmVsb3BlclByZWZl
cmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVu
Y2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBmNDg4NjQ2NmNhYzJkYTAyOTAxZjNiMTQ3MTE1YjdjM2I0ZjVmNjdkLi4wNjE3MWIyN2Nk
NGEzN2ZkNjQxZjM3NWUwYzVhOTAzZmE5M2Y5NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSVBy
b3h5IHsKICAgICBTaG93Q2VydGlmaWNhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRp
ZmljYXRlSW5mbykKICAgICBFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sIGFjdGl2ZSkKICAg
ICBUaW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBhY3RpdmUpCi0gICAgU2V0RGV2ZWxvcGVy
UHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2ZWxvcGVyUHJl
ZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVl
KQorICAgIFNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwgc3RkOjpvcHRp
b25hbDxib29sPiBvdmVycmlkZVZhbHVlKQogCiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0
cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiAgICAg
QXBwZW5kKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JDbGllbnQuaAppbmRleCA3OWVhYzFhYmY5ODA0ODIxYTcwM2NjZmMyYmNhNzlhY2FjOGFj
YWE3Li5iNDRkMjE0ZjE3NzUzMDc1ZDQwNDAwNTU5YTljYTZkYmY0ZGZhM2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAg
IFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKICAgICBSZW1vdGVJbnNwZWN0b3JPYnNlcnZl
ciYgbV9vYnNlcnZlcjsKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY29ubmVjdGlvbklE
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX2Nvbm5lY3Rpb25JRDsKICAgICBI
YXNoTWFwPENvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4+IG1fdGFyZ2V0czsKICAgICBIYXNo
TWFwPHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdldElEPiwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUluc3BlY3RvclByb3h5Pj4gbV9pbnNwZWN0b3JQcm94eU1hcDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
c29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNDE4ODc4NjUz
OTM2ZDQyYWZmMWQ0ZDllMDEyMzcxZDE0MGMwMzlhNi4uYTBhYzkyYWI5OTliYzYxM2U0MjA1ODg2
MzYxMDk2NGNhZDEzNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9u
PHZvaWQoKT4gbV9sb2FkZWRDYWxsYmFjazsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxJbnNwZWN0
b3I6OkRlYnVnZ2FibGVUeXBlPiBwYXJzZURlYnVnZ2FibGVUeXBlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIGRlYnVnZ2FibGVUeXBlU3RyaW5nKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpEZWJ1Z2dhYmxlVHlwZT4gcGFyc2VEZWJ1Z2dhYmxlVHlwZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBkZWJ1Z2dhYmxlVHlwZVN0cmluZykKIHsKICAgICBpZiAoZGVidWdnYWJsZVR5cGVT
dHJpbmcgPT0gIml0bWwiX3MpCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkRlYnVnZ2FibGVU
eXBlOjpJVE1MOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggNDJmNGQ4MzQ0MTFjOWI0
MWZkMjQ5MTFhYzY4NGQzOTUxNTljYzhhZi4uYjBkMDc5ZmRkNjJmYTRmYTJkOWVjOGVkOWFlNjRj
NWNiYWE5NWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogI2lmIE9TKExJTlVYKQogc3RhdGljIGJvb2wgaXNGbGF0cGFr
U3Bhd25Vc2FibGUoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVy
biAqcmV0OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBib29sIGlzRmxhdHBha1NwYXduVXNh
YmxlKCkKICNpZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogc3RhdGljIGJvb2wgaXNJbnNp
ZGVEb2NrZXIoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVybiAq
cmV0OwogCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIGlzSW5zaWRlRG9ja2VyKCkKIAog
c3RhdGljIGJvb2wgaXNJbnNpZGVGbGF0cGFrKCkKIHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9v
bD4gcmV0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJldDsKICAgICBpZiAocmV0
KQogICAgICAgICByZXR1cm4gKnJldDsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgYm9vbCBp
c0luc2lkZUZsYXRwYWsoKQogCiBzdGF0aWMgYm9vbCBpc0luc2lkZVNuYXAoKQogewotICAgIHN0
YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
cmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVybiAqcmV0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3Bw
CmluZGV4IDFkNTJkNDMwMDhhYTMyMmU3NWJjNDQ5ZjAzN2RiYTUxYjJmNmM2ZjguLmVkMTQ0NDlj
YmYzZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC01
MiwxOSArNTIsMTkgQEAgYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9uU3RhdGUKICAgICBpZiAoIWRlY29kZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0
YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJk
TGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICAqZGVjb2RlciA+PiBiYWNrRm9y
d2FyZExpc3RTdGF0ZTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdFN0YXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlID0gV1RG
TW92ZSgqYmFja0ZvcndhcmRMaXN0U3RhdGUpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJl
bmRlclRyZWVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlbmRlclRyZWVTaXpl
OwogICAgICpkZWNvZGVyID4+IHJlbmRlclRyZWVTaXplOwogICAgIGlmICghcmVuZGVyVHJlZVNp
emUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNp
emUgPSAqcmVuZGVyVHJlZVNpemU7CiAKLSAgICBPcHRpb25hbDxVUkw+IHByb3Zpc2lvbmFsVVJM
OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBwcm92aXNpb25hbFVSTDsKICAgICAqZGVjb2RlciA+
PiBwcm92aXNpb25hbFVSTDsKICAgICBpZiAoIXByb3Zpc2lvbmFsVVJMKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaAppbmRleCBlMDJh
NGY1ODlmNGM2NWRiYTEyNmIxNDgwYjAyNTE1ZmNhMjA2NmQzLi5lY2EyMGYyNjJiMmIyYzZlNDdm
ZjY4ZjkxMGE1YzQ3YTE4ZjIwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2
YXRlLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi11c2luZyBNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPjsKK3VzaW5nIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT47CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlCiAgICAgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoTWVkaWFT
ZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VHJhY2soY29uc3QgU3RyaW5nJiwgTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5k
bGVyJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVD
aGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlh
L1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjJhMmNlYzc2ZDRkYzBmZWYwMDQ1ZTA4Yjk4ODRmZGVmN2EzNmIyZS4uMDkxY2I4ZmQ2MWI2
OTQzODczMzMwMTcwZDcxZjc0MDhiODdlMWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpqb2luKE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGwK
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRl
bnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBl
eGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRpbWUsIE1l
ZGlhU2VzcwogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlT
X0xPRyhpZGVudGlmaWVyLCB0aW1lKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVr
VG8odGltZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmll
ciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE9wdGlv
bmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
Y29vcmRpbmF0ZVBsYXkoTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsCiAgICAgYXV0byBpZGVudGlm
aWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAg
bV9wcml2YXRlQ29vcmRpbmF0b3ItPnBsYXkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRp
b24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKICAg
ICB9KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZShNZWRpYVNlc3Npb25Db21tYW5kQ29tcAogICAgIGF1
dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
KTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wYXVzZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wYXVzZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25E
YXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmll
ciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNl
cHRpb24pKTsKICAgICB9KTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYg
dHJhY2ssCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNf
TE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldFRyYWNrKHRy
YWNrLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8
RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFi
bGUgewogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cG9zaXRpb25TdGF0ZUNo
YW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUp
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBvc2l0aW9uU3RhdGVD
aGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYg
c3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+cG9zaXRpb25TdGF0ZUNoYW5nZWQoc3RhdGUpOwpAQCAtMTU5LDcgKzE1OSw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2Vla1Nlc3Npb25U
b1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpCiAgICAgbV93ZWJQYWdlUHJveHkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6U2Vla1Nl
c3Npb25Ub1RpbWUgeyB0aW1lIH0sIGNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpwbGF5U2Vzc2lvbihPcHRpb25hbDxkb3VibGU+IGF0VGlt
ZSwgT3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBsYXlTZXNzaW9uIHsgV1RGTW92ZShhdFRpbWUp
LCBXVEZNb3ZlKGhvc3RUaW1lKSB9LCBjYWxsYmFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5LmgKaW5kZXggMTA1NGJhODZhNzBmNjljNWI0MDNiZTdmNjEzMDJiZjFhYjFj
OWZhNy4uODQ4OGY4OGI5YTllMjBjYzZlZjRiZDgwMDYwODUwODllYjUxNzI3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaApAQCAtNzAsMTQgKzcwLDE0IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb29yZGluYXRlUGxheShNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhh
bmRsZXImJik7CiAgICAgdm9pZCBjb29yZGluYXRlUGF1c2UoTWVkaWFTZXNzaW9uQ29tbWFuZENv
bXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgY29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0
cmluZyYsIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lk
IHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRp
b25TdGF0ZT4mKTsKKyAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYpOwogICAgIHZvaWQgcmVhZHlTdGF0
ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSk7CiAgICAgdm9pZCBwbGF5
YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKTsKICAg
ICB2b2lkIHRyYWNrSWRlbnRpZmllckNoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBN
ZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUo
ZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lk
IHBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhv
c3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CiAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjb29yZGluYXRvclN0YXRl
Q2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGQ1Njk4MTVmYWJmNWU1Y2MwZmI0OTNjZTliOTdmZmE1MDY3MjA3YjguLjQ1OTUzYmU4ZDJhNzk5
MjFmN2VhMWIyNTczNTQzMjg4ZDdhODI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsMTkgKzI2LDE5IEBACiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7
CiAKLSAgICBKb2luKCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9y
KSBBc3luYworICAgIEpvaW4oKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiBlcnJvcikgQXN5bmMKIAogICAgIExlYXZlKCkKIAotICAgIENvb3JkaW5hdGVTZWVrVG8o
ZG91YmxlIHRpbWUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikg
QXN5bmMKKyAgICBDb29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKIAotICAgIENvb3JkaW5hdGVQ
bGF5KCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9yKSBBc3luYwor
ICAgIENvb3JkaW5hdGVQbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4gZXJyb3IpIEFzeW5jCiAKLSAgICBDb29yZGluYXRlUGF1c2UoKSAtPiAoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5jCisgICAgQ29vcmRpbmF0ZVBhdXNl
KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5j
CiAKLSAgICBDb29yZGluYXRlU2V0VHJhY2soU3RyaW5nIHRyYWNrSWRlbnRpZmllcikgLT4gKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9yKSBBc3luYworICAgIENvb3JkaW5h
dGVTZXRUcmFjayhTdHJpbmcgdHJhY2tJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKIAotICAgIFBvc2l0aW9uU3RhdGVDaGFu
Z2VkKE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4gc3RhdGUpOworICAgIFBv
c2l0aW9uU3RhdGVDaGFuZ2VkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0
YXRlPiBzdGF0ZSk7CiAKICAgICBSZWFkeVN0YXRlQ2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL01lZGlhVXNhZ2VNYW5hZ2VyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL01lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Eu
aAppbmRleCAyNzk1YTBlNGE3MGJmODVlNWExNGU5NDA0Y2MyNzFkNjlmZjhmYTQ5Li5kODljMTZj
ZTY2NjE0MGEzOGYwYzhjYTE5NTcwN2VkZDE1YTRiNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9NZWRpYVVzYWdlTWFuYWdlckNvY29hLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvTWVkaWFVc2FnZU1hbmFnZXJDb2Nv
YS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZp
ZXI7CiAgICAgICAgIFVSTCBwYWdlVVJMOwotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpNZWRp
YVVzYWdlSW5mbz4gbWVkaWFVc2FnZUluZm87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZvOwogICAgICAgICBSZXRhaW5QdHI8VVNW
aWRlb1VzYWdlPiB1c2FnZVRyYWNrZXI7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOTg2
MmVmMjU5NTlkYTFjMjZmNWE0MmNjOTNmODg0Njk2ODRkNmFiYy4uOGU2NjA2N2I3ZjU1YzQyNTYw
YzQyOTk0MjY1MGRjY2I3ODY4ZGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICBzdG9yZS0+Y2xpZW50KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiYgdG9wT3JpZ2lu
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIGJvb2wg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKICAg
ICBXZWFrUHRyPFNlY0tleVByb3h5U3RvcmU+IHNlY0tleVByb3h5U3RvcmU7CkBAIC00ODMsNyAr
NDgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHAKICAgICBwYWdlLT5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZShtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmljYW50
RmlndXJlcywgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiYmIGh0dHBCb2R5KQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURh
dGFSZWZlcmVuY2U+JiYgaHR0cEJvZHkpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTY1OSw3ICs2NTksNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0xvY2FsU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6Okhhc0xvY2FsU3RvcmFnZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
YWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRT
aWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0kKIH0K
ICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0
X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRf
dD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0
X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKICAgICBhdXRvKiBzdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCk7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA1ZGM4
ZjIxZDAzZjY0MzFiMGJlMmEwMDI2YWI4ZDI1YjQ0MGFjYjkuLjZiY2ZlMWVlM2ZjYzNlZTYxY2Rh
YWI2NjI0ZTIzYjdjMjgxYTA3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vz
c2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VDb2x1bW5zRm9yVGFibGUoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNl
Y29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50
LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5z
aWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6
OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6
U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTcyLDcg
KzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAotICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgT3B0
aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4mJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRE
aWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2U+JiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZv
aWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYp
OwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KTsKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBib29sLCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgc2V0V2ViUHJvY2Vzc0hh
c1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wpOwpAQCAtMzE2LDcgKzMx
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNl
UmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cXVvdGEpPiYmKTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmVGcm9t
U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBuZXR3b3JrQXNzZXJ0
aW9uOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25zOwogICAgIH07
Ci0gICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7CisgICAgc3Rk
OjpvcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQ
Q0V2ZW50SGFuZGxlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTA0MWMx
MWFmNWIzMWMzMDNjYWExODEyZjIwYWUxNjE3YjczNTRlZi4uM2RlOTM1NmQ5MThiMzRjZjIwYzdk
NWQxOWFmN2ExYjBhZGE0N2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFs
bGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCisg
ICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVp
bnQ2NF90IGNoYWxsZW5nZUlEKQogICAgIE5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBEaWROZWdvdGlhdGVNb2Rlcm5UTFMoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVVJMIHVybCkKIApAQCAtNjcsOSAr
NjcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERv
bWFpbnMpIEFzeW5jCiAjZW5kaWYKIAotICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVk
KSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIFJlcXVlc3RTdG9y
YWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50
NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IEFzeW5jCiAgICAgCi0gICAgUmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJj
ZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keSkKKyAgICBSZXNv
dXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8SVBD
OjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2FkRGlkUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdl
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3Ry
dWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9X
S1BERkhVRFZpZXcubW0KaW5kZXggMWE2NDY2MDViYjU5N2M4ODU5NmE3MmZiOGI2Mjk5ZmU0NWEy
ZTRhMy4uNmM0NjUwM2Y5ODdiMGYxMjY1ZTkzOGIxZTBiNWY4MjQ1NWEzMzZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZlbnQKICAgICBfYWN0aXZlQ29udHJvbCA9
IG5pbDsKIH0KIAotLSAoT3B0aW9uYWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJbmRleEZvckV2ZW50
OihOU0V2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJ
bmRleEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKIHsKICAgICBDR1BvaW50IGluaXRpYWxQb2lu
dCA9IE5TUG9pbnRUb0NHUG9pbnQoZXZlbnQubG9jYXRpb25JbldpbmRvdyk7CiAgICAgaW5pdGlh
bFBvaW50LnggLT0gW19sYXllciBmcmFtZV0ub3JpZ2luLng7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggMzFiODA4MDA5YjA3NzdhMWJhMDZkNTI4NmVhZDdmMmYwMDI3M2Qx
Mi4uZTcyMmI0MDNhNzdkM2ZhZmQ4MzZjMjhkZGZjZTZhZThiMzRiNWQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNv
cmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKQEAgLTMxNSw3ICszMTUsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0g
ICAgdmlydHVhbCBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFs
PFdlYkNvcmU6OkludFJlY3Q+JiYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKSA9
IDA7CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCkBAIC00NTAsOCArNDUwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBsYXllclRyZWVDb21taXRDb21wbGV0ZSgpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBjb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc3RvcmVQYWdlU3RhdGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Ny
b2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUg
c2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBjZW50ZXIsIGRvdWJsZSBzY2FsZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNj
cm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRz
T25TYXZlLCBkb3VibGUgc2NhbGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VD
ZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwg
ZG91YmxlIHNjYWxlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKGNv
bnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBi
b29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3Vz
aW5nRWxlbWVudCgpID0gMDsKQEAgLTU4Nyw3ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEhhbmRsZURyYWdTdGFydFJlcXVlc3QoYm9vbCBzdGFydGVkKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRk
ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25h
bDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0NhcmV0UmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2FyZXRSZWN0KSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDc5ZjMxYzYwNDE0
ZmZiNDY1MDFjZDI1YTY0YTZiZTc2NjM1ZTQ2ZTcuLjBiZjBiZjRkNDE3OTg0Mjg5N2IzZjU4Nzgy
ZDJlOTUwODI4NDNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBib29sIFBsdWdpbklu
Zm9TdG9yZTo6aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
VVJMJiBwbHVnaQogICAgIH0pICE9IG5vdEZvdW5kOwogfQogCi1PcHRpb25hbDxWZWN0b3I8U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnMoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRp
Zmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKQogewog
ICAgIGlmICghbV9zdXBwb3J0ZWRQbHVnaW5zKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmgKaW5kZXggNzVhZTZiYjYyZDg0Y2E0MTlkMjhmZmRmNjgwMDJmMGZmMmVkZDRmOC4uMzA5Yjgw
NTZiNTIwZmRiYWZhMmUzMjM1NTBlOGJiMzZjNWNlZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBkZWZhdWx0TG9hZFBv
bGljeUZvclBsdWdpbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAKICAgICBib29sIGlzU3Vw
cG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJM
LCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBVUkwmIHBhZ2VVUkwpOwotICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGluZ0RvbWFp
biwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVzLCBIYXNo
U2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMo
KSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQogCkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2lu
KGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVS
TCYgcGx1Z2luVVJMKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW4+PiBt
X3N1cHBvcnRlZFBsdWdpbnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1
Z2luPj4gbV9zdXBwb3J0ZWRQbHVnaW5zOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCmluZGV4IGE4YzAy
ODc1ZTNjYWU5NDMzODA1ZGY4OTRjNmU2MTk2M2JhZjllMDMuLmJkNjg1ZTdjY2IxN2NmMmQ4M2I1
MmQ0NmQ3MjBmYTZjNTllZmI0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRp
bWVyPFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcjsKICAg
ICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7CiAg
ICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOwot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEOwogICAg
IGJvb2wgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGFjZmY5
MGM4OGZkYWU3NmIyOWM0N2VlODIyNjQzNWNjYzBjZDZkNDUuLjBmZTYyZGM5Yzk2OWVjZTg1OGEx
MGZjOGEwMDA4MTdiZWI0YzZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiB3ZWJzCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZyZWV6ZUxheWVy
VHJlZUR1ZVRvU3dpcGVBbmltYXRpb24oKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6Iik7CiAKICAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwg
bmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwg
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0
TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCi12
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCCiAgICAgICAgIHJldHVybiAmaXRl
bSAhPSB0YXJnZXRJdGVtOwogICAgIH0pOwogICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhOwogICAgIGlmICh3ZWJzaXRlUG9saWNp
ZXMpCiAgICAgICAgIHdlYnNpdGVQb2xpY2llc0RhdGEgPSB3ZWJzaXRlUG9saWNpZXMtPmRhdGEo
KTsKICAgICAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpn
b1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQgogICAg
IG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKLWlubGluZSBib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBPcHRpb25hbDx1aW50NjRfdD4mIG5hdmlnYXRpb25JRCkKK2lubGluZSBib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEKQogewogICAg
IC8vIElmIHRoZSBwcmV2aW91cyBwcm92aXNpb25hbCBsb2FkIHVzZWQgYW4gZXhpc3RpbmcgcHJv
Y2Vzcywgd2UgbWF5IHJlY2VpdmUgbGVmdG92ZXIgSVBDIGZvciBhIHByZXZpb3VzIG5hdmlnYXRp
b24sIHdoaWNoIHdlIG5lZWQgdG8gaWdub3JlLgogICAgIGlmICghbV9tYWluRnJhbWUgfHwgbV9t
YWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFtZUlEKQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5m
byksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9y
LCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8Lgog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJh
bWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xp
Y3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFt
ZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJh
bWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGlu
Z0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKQEAgLTU5MCw3ICs1OTAsNyBAQCB1aW50NjRfdCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVy
biBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9w
dGlvbnMsIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCiB7CiAgICAgLy8gU2Vu
ZCBtZXNzYWdlcyB2aWEgdGhlIFdlYlByb2Nlc3NQcm94eSBpbnN0ZWFkIG9mIHRoZSBJUEM6OkNv
bm5lY3Rpb24gc2luY2UgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5IGltcGxlbWVudHMgcXVldWVpbmcg
b2YgbWVzc2FnZXMKICAgICAvLyB3aGlsZSB0aGUgcHJvY2VzcyBpcyBzdGlsbCBsYXVuY2hpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCA1YzNiNmZiMGQxNjEzMWNiOTcyMDcwYjMxMGQxMDI1ZGY3ZjA1NzAxLi44MzFjNzljMTgyYjcx
ZmE2OWRlNWNhMTIxNWExZDRiYmQ2NTAzMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk4LDggKzk4LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6
Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGEo
QVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51
bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTExNSwxMCArMTE1LDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8s
Ci0gICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0
IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHBy
b3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2ls
bENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nlc3MoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNj
aGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2Fy
ZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAg
ICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYpOwotICAgIGJvb2wgdmFsaWRhdGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBib29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2Vi
UGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
Y3BwCmluZGV4IDlkZjkxNGQ1ZGFjNTk1NGJmM2MyYmM1ZTBiZWNmYTYxOTUzMzMxODguLjhkMzM3
Y2UxNzM3ZDZhNzk0N2IyYzI4MzJiODE5YjY3MTUzNjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRp
Y2VzRGlkQ2hhbmdlKFdlYkNvcmU6OgogfQogCiAvLyBUaGlzIGNvbWVzIGZyb20gdGhlIHNjcm9s
bGluZyB0cmVlLgotdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxp
bmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsZWROb2RlSUQsIGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50
PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIHNjcm9s
bGVkTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICAv
LyBTY3JvbGwgdXBkYXRlcyBmb3IgdGhlIG1haW4gZnJhbWUgYXJlIHNlbnQgdmlhIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpCiAgICAgLy8gc28gZG9uJ3Qgc2VuZCB0
aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aAppbmRleCAwZTU2ZTQ5YWE3MmQzYzhlYzU2NTQyYzQ1MjAzNjQzMTFjNTBiMTgyLi4wMzE2NzVk
ZDk2NjliYmQyNDZkNThmMDk2OGQzMWM4ODkxOTBiMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKIAogICAgIC8v
IEluZm9ybSB0aGUgd2ViIHByb2Nlc3MgdGhhdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQg
KGNhbGxlZCBmcm9tIHRoZSBzY3JvbGxpbmcgdHJlZSkKLSAgICB2b2lkIHNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbik7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChXZWJDb3Jl
OjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG5ld1Njcm9sbFBv
c2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRW
aWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAg
ICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFdlYkNv
cmU6OlNjcm9sbFR5cGUsIFdlYkNvcmU6OlNjcm9sbENsYW1waW5nKTsKIAogICAgIFdlYkNvcmU6
OlRyYWNraW5nVHlwZSBldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50TmFtZSwgV2ViQ29yZTo6SW50UG9pbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z1RyZWUuY3BwCmluZGV4IDU0ZDQwZjhmZTIxN2VmY2FmOTU1Njg0YWQ5ODBkMTBjMzRhMTljN2Eu
LjU0MjNkYzZlNmNkMDczYjkwNTM2YTUwM2VlMGU2MmFkZDlkMmQ3NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdU
cmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBub2RlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAgIGxheW91dFZpZXdwb3J0T3JpZ2luID0gZG93
bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkubGF5b3V0Vmlld3Bv
cnQoKS5sb2NhdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1hYy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxlclBhaXJNYWMuaAppbmRleCBiMzEwYjEw
OGQyMDcyZDBhNmUyNGM5NTc5ZTM1YjNkMzUyOTJhYmRhLi4zMTY4OTFkOTM4MzU2Zjg3M2M2MmJl
MjZkMjcwNTdkNTk0ZDJmOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsZXJQYWlyTWFjLmgKQEAgLTc5LDcg
Kzc5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVu
dFJlY3Q7CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gbV9sYXN0U2Nyb2xsUG9zaXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBtX2xhc3RTY3JvbGxQb3Np
dGlvbjsKIAogICAgIFJldGFpblB0cjxOU1Njcm9sbGVySW1wUGFpcj4gbV9zY3JvbGxlckltcFBh
aXI7CiAgICAgUmV0YWluUHRyPFdLU2Nyb2xsZXJJbXBQYWlyRGVsZWdhdGU+IG1fc2Nyb2xsZXJJ
bXBQYWlyRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDkyZGM0ODhk
NDhkZTIyZmQ5NThkOWFhOThjN2JhOTFkMDJiMjU5YjMuLjJlMGI1OGU1YjkzNTNkZWE1NTAzNjBk
ZDZiMzRjMTQ4NDVlMjJhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC0xNzEs
NyArMTcxLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250
aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KCk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJy
ZW50UmVxdWVzdChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmIGVy
cm9yKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1
cnJlbnRSZXF1ZXN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICBh
dXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaAppbmRleCA0MGE5ZjI5MDdlNTE4YmMxNzhmMjg2OTRhYThkZjlkNWZlZTRjNTQx
Li4xMDRhYjQ1ZWMxNTFmNzNiMGZkNTQ4NmJjMzY5NjM4ZDM2YzA3NGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE5l
eHRSZXF1ZXN0KCk7CiAgICAgdm9pZCBzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KCk7CiAgICAgdm9p
ZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Ci0gICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRS
ZXF1ZXN0KE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lv
bihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCmluZGV4IDkyNjVkZmFjN2QwZGNiMDNkZGNhY2YzNjRlNGU2Nzg5MTIyOTg5
NjUuLjI4YWViNTg3YWMxMzlkOTI1ODQzYmU3NmYyNDE2MTU3NmJlYWRjN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9jb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJSZXF1ZXN0IGlz
IGNhbmNlbGxlZCJfcyB9KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBsZXRlKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCisgICAgdm9pZCBjb21wbGV0
ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3Ip
CiAgICAgewogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5jcHAKaW5kZXggNWQ5NjJkNzNkZTRlZDAzMzZhY2E1MzU2NzMxYzQ1Njg5
ZWJiOWVmYS4uOTY3ZmM2NWM5ZTAyMzExMTI4YzUxYjFiNTM2NmVmN2E5YjJiMDlhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFs
aWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgICAgIG1f
cmVjb2duaXplci0+YWJvcnQoKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSB0eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJv
ciwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+
IHJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0
KQogewogICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCB0eXBlKTsKICAgICBpZiAodHlwZSA9PSBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggNTA2MTE5YWViZjgy
YjNkZGM5ZTQzMTZlZjQxOTdiOTc2N2M2YjA0ZC4uZGUyMGQ0ZWEyNTNkY2E3MmI2YjU3ZGY3Njc5
OTc0NjFlMjk4NGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwotICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+ID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggYzdj
MWNhYzlkNWE4MTQxZTVlYWI4M2I1ZWRhNDRkMWNiOWRmZWIxYy4uM2I2ODFlNWU5MWJiZmU1MDkz
ZWU4N2M4ZjU3ZjQ5ZDJhZGFhYWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdWludDY0X3QgU3VzcGVu
ZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fd2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAKLWJvb2wgU3VzcGVuZGVkUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRp
b25zLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIC8vIFNlbmQg
bWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0aGUgSVBDOjpDb25u
ZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRzIHF1ZXVlaW5nIG9m
IG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNoaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBlOGMw
OTUzMzE2NWQ3Y2RlZTliOGU5ZDA4ODkxODBjZmFiZmMxOTZiLi5mNDRhYjNhZjU4OTcwOGNkYjlm
MjQ5ZWRiNWI0MWM0ZmJkMDE3NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZp
bmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAg
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93
ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzRkMmUx
MWU1NzZiYTc4YmMzODk3MGM1OTcxMTlmOWQ4NDVkMzY5ZS4uYmY2NWQzNjQ2NDJiNTZmZjhlM2Y0
YjdiZTllMjkzNGQ5NDQwNDU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgfSk7CiB9
CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlc2V0QWNj
ZXNzKE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkKK3ZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlc2V0QWNjZXNzKHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlEKQogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgZnJhbWVJRCA/IGZyYW1lSUQtPmxvZ2dpbmdTdHJpbmco
KSA6IFN0cmluZyB7IH0pOwpAQCAtODQyLDcgKzg0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKEZy
YW1lCiAjZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
IGVuYWJsZWQpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpz
ZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiBl
bmFibGVkKQogewogICAgIG1fbW9ja0RldmljZXNFbmFibGVkT3ZlcnJpZGUgPSBlbmFibGVkOwog
ICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAppbmRleCBjMTQyZTM1NWI3YzY5ZjA1OGE4ZDllZGNhNzE4ZDY2NDZjZWU1OTVhLi5hYjgxOWRi
OTZiOGYzYjMxMjkxZWU1ZDRmZmViOGU1NjUzYzFiYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiAgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAKLSAgICB2
b2lkIHJlc2V0QWNjZXNzKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZy
YW1lSUQgPSB7IH0pOworICAgIHZvaWQgcmVzZXRBY2Nlc3Moc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlEID0geyB9KTsKICAgICB2b2lkIHZpZXdJc0Jl
Y29taW5nVmlzaWJsZSgpOwogCiAgICAgdm9pZCBncmFudFJlcXVlc3QoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSYpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBy
b21wdAogICAgIH07CiAKLSAgICB2b2lkIHNldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVy
cmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAgICAgYm9vbCBoYXNQZW5kaW5nQ2Fw
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0NhcHR1cmU7IH0KIAogICAgIHZvaWQg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCB7IGZhbHNlIH07
CiAjZW5kaWYKICAgICB1aW50NjRfdCBtX2hhc1BlbmRpbmdDYXB0dXJlIHsgMCB9OwotICAgIE9w
dGlvbmFsPGJvb2w+IG1fbW9ja0RldmljZXNFbmFibGVkT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX21vY2tEZXZpY2VzRW5hYmxlZE92ZXJyaWRlOwogfTsKIAogU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpSZXF1ZXN0QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAppbmRleCA4MzQ0ZmRkNDEyYzU5NjdmYzI1NDg0YmJhN2NmMzA1ZWJhMzM1OTEzLi40NjIzYmE4
MzVlYWQ5YzljOTcxNDVmYzJiMTFkYWZhOGVjMTA1OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSB7CiBjb25zdCB1bnNp
Z25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKIC8vIEZJWE1FKDE4ODYyNSk6IFN1cHBv
cnQgQkxFIGF1dGhlbnRpY2F0b3JzLgotc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFu
c3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0
aGVudGljYXRvclNlbGVjdGlvbikKK3N0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNw
b3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYg
YXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoIWF1dGhlbnRpY2F0b3JTZWxlY3Rpb24gfHwgIWF1
dGhlbnRpY2F0b3JTZWxlY3Rpb24tPmF1dGhlbnRpY2F0b3JBdHRhY2htZW50KSB7CkBAIC04Nyw3
ICs4Nyw3IEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxl
Y3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAvLyBJZiBpdCBpcyBub3Qgc3BlY2lm
aWVkIG9yIGFueSBvZiBpdHMgY3JlZGVudGlhbHMgZG9lc24ndCBzcGVjaWZ5IGl0cyBvd24uIFdl
IHNob3VsZCBkaXNjb3ZlciBhbGwuCiAvLyBUaGlzIGlzIGEgdmFyaWFudCBvZiBTdGVwLiAxOC4q
LjQgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2Rpc2NvdmVyLWZyb20tZXh0
ZXJuYWwtc291cmNlCiAvLyBhcyBvZiA3IEF1Z3VzdCAyMDE4Lgotc3RhdGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiYgYWxsb3dDcmVkZW50aWFscywgY29uc3QgT3B0
aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+JiBhdXRoZW50aWNhdG9yQXR0YWNobWVudCkK
K3N0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3Bv
cnRzKGNvbnN0IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4mIGFsbG93Q3Jl
ZGVudGlhbHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+JiBh
dXRoZW50aWNhdG9yQXR0YWNobWVudCkKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkpIHsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9y
dFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogfQogCiAvLyBPbmx5
IHJvYW1pbmcgYXV0aGVudGljYXRvcnMgYXJlIHN1cHBvcnRlZCBmb3IgR29vZ2xlIGxlZ2FjeSBB
cHBJRCBzdXBwb3J0Lgotc3RhdGljIHZvaWQgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9y
dEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHM+JiBleHRlbnNpb25zLCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0JiB0
cmFuc3BvcnRzKQorc3RhdGljIHZvaWQgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4
dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cz4mIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQm
IHRyYW5zcG9ydHMpCiB7CiAgICAgaWYgKCFleHRlbnNpb25zKSB7CiAgICAgICAgIC8vIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIHNob3VsZCBhbHdheXMgc2V0IGl0LgpAQCAtMTkz
LDcgKzE5Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QoV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIENhCiAgICAgcnVuUHJlc2VudGVyKCk7
CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFn
ZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJh
bWVJRCkKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFn
ZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
JiBmcmFtZUlEKQogewogICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzdGFydERpc2NvdmVyeShjb25zdCBUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMpCiAKIHZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmluaXRUaW1lT3V0VGltZXIoKQogewotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiB0aW1lT3V0SW5NczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1l
T3V0SW5NczsKICAgICBXVEY6OnN3aXRjaE9uKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMs
IFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7
CiAgICAgICAgIHRpbWVPdXRJbk1zID0gb3B0aW9ucy50aW1lb3V0OwogICAgIH0sIFsmXShjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGY3ZjM0MzBjYWFkN2I3MjA5OGM4MjFhZjczMjQ5
NTM0N2QxZTQyZWIuLjRkYjFkOWI1ZWVlMWVhNmZjNDNjZWM0NjQ3YTVhNTc4MjcxZDAyOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2
b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmLCBDYWxsYmFj
ayYmKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXImLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENhbGxl
ZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHkuCisgICAgdm9pZCBjYW5jZWxSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENhbGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9X
ZWJQcm9jZXNzUHJveHkuCiAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IEFQSTo6V2ViQXV0
aGVudGljYXRpb25QYW5lbCYpOyAvLyBDYWxsZWQgZnJvbSBwYW5lbCBjbGllbnRzLgogICAgIHZv
aWQgY2FuY2VsKCk7IC8vIENhbGxlZCBmcm9tIHRoZSBwcmVzZW50ZXIuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAxYWFjMWNhMjYxZWMzYTljMjk3YjFj
OTNiMzM0MDgzMjJmN2RiZWQ2Li5jOGEzNmMxMjM5OTE4Zjg0NzRhZGMyMjRlYTRkM2Q5ZjIxYTlj
ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xMTYs
NyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IHRvQXJyYXlCdWZmZXIo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRl
bnRpYWxzKGNvbnN0IFN0cmluZyYgcnBJZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGlh
bHMoY29uc3QgU3RyaW5nJiBycElkKQogewogICAgIC8vIFNlYXJjaCBLZXljaGFpbiBmb3IgZXhp
c3RpbmcgY3JlZGVudGlhbCBtYXRjaGVkIHRoZSBSUCBJRC4KICAgICBhdXRvIHF1ZXJ5ID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggODQ4ZjUzMTljODY3YzczOGU0NmUxN2U5NjE2
ZTE2Mzg2ZGQxOTEyMi4uMDA2NTRlNDI1ZWI5M2Y0NGE1YjEzNjYxZjgxOGM0MTJlNWM5YmUyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIs
NyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChtX3N0YWdlID09
IE1vY2s6OkhpZFN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6
Ok1zZykgewogICAgICAgICAvLyBGSVhNRSgyMDU4MzkpOgogICAgICAgICBWZWN0b3I8dWludDhf
dD4gaW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggODhi
Mjg0ZjU0YWIwZDhmM2ZjMzE4ODlmMDM5Y2Y5OTNiMzYwNzRjNC4uNWI4ODI0YzQxNDFmOTgwNDM4
NTQ2MWU2NzMyMmQ4YmM2MjFiZDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVGZWVkUmVw
b3J0cygpOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biBtX2NvbmZpZ3VyYXRpb247Ci0gICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1f
cmVxdWVzdE1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4g
bV9yZXF1ZXN0TWVzc2FnZTsKICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWRTdGFnZSBtX3N0YWdlIHsgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U6OkluZm8gfTsKICAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdWJTdGFnZSBtX3N1YlN0YWdlIHsgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U6Oklu
aXQgfTsKICAgICB1aW50MzJfdCBtX2N1cnJlbnRDaGFubmVsIHsgZmlkbzo6a0hpZEJyb2FkY2Fz
dENoYW5uZWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCmluZGV4IGRiZmJlNjM5
N2ZjMTIwMTU5OTQwMjk3NmNjNzdjNGMzZjU1MWViODMuLjVjYmE0YmUzZjJmZDljNGU4YTFjZDUw
ZjkxZDBiOTRkZjZlYjE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcApAQCAt
MTgyLDcgKzE4Miw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrCiAKICAgICBhdXRvIGluaXRD
b21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtJbml0LCBtX25vbmNlKTsKICAgICBBU1NFUlQoaW5pdENvbW1hbmQpOwotICAg
IG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11
dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2Fn
ZT4mJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2sKICAgICB9KTsKIH0KIAotdm9pZCBD
dGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRv
SGlkTWVzc2FnZT4mJiBtZXNzYWdlKQordm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVy
Q2hhbm5lbEFsbG9jYXRlZChzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2Up
CiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVB
ZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAg
Ly8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuCiAgICAgYXV0
byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBwcm90b2NvbCgpID09
IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgPyBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IgOiBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgbV9yZXF1ZXN0RGF0YSk7CiAgICAgQVNTRVJUKGNt
ZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11
dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVz
cG9uc2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDcgKzIzMCw3
IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0
aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAgfSk7CiB9CiAKLXZvaWQgQ3RhcEhpZERy
aXZlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hp
ZE1lc3NhZ2U+JiYgbWVzc2FnZSkKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJl
c3BvbnNlUmVjZWl2ZWQoc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNz
YWdlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkeSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRleCBiZmIyMTNkNzQ0ZDJlMTYwOWQzYmEz
YjRiZDM2NzQxMWZkMzcyMTM3Li41OTNmYTk4ODBkOTUwNTBlZGI3MzRkNTkzOTE0MWU5YjlkZWU1
YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2
YXRlOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV29ya2VyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5nIE1lc3NhZ2VD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYp
PjsKKyAgICAgICAgdXNpbmcgTWVzc2FnZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9w
dGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKT47CiAKICAgICAgICAgZW51bSBjbGFzcyBT
dGF0ZSA6IHVpbnQ4X3QgIHsKICAgICAgICAgICAgIElkbGUsCkBAIC04MiwxMyArODIsMTMgQEAg
cHJpdmF0ZToKIAogICAgICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKLSAgICAgICAgT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7Ci0gICAgICAgIE9wdGlv
bmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3Jlc3BvbnNlTWVzc2FnZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXNwb25zZU1lc3NhZ2U7
CiAgICAgICAgIE1lc3NhZ2VDYWxsYmFjayBtX2NhbGxiYWNrOwogICAgIH07CiAKLSAgICB2b2lk
IGNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNz
YWdlPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFs
PGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDaGFubmVs
QWxsb2NhdGVkKHN0ZDo6b3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworICAgIHZv
aWQgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRv
SGlkTWVzc2FnZT4mJik7CiAgICAgdm9pZCByZXR1cm5SZXNwb25zZShWZWN0b3I8dWludDhfdD4m
Jik7CiAgICAgdm9pZCByZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA0YzU0YzZhZjA3MDFjYzliM2YyNmNkYTM1NTE2MGQz
NWQzNTFjNDA0Li5lMGU5NDRkMTJkZmMxMmJjNmNlY2YwMzk2MjE5ZjUzMzQzNDJiNDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShC
YWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdAogICAgICAgICBiYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBPYmpl
Y3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlw
ZT46OmdlbmVyYXRlKCkgfTsKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSks
IG1fcGFnZS0+aWRlbnRpZmllcigpKSk7CiAgICAgfQotICAgIG1fY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9uYWw8c2l6ZV90PigqYmFja0Zv
cndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2N1cnJl
bnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA/IHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9y
d2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9t
IHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IGRmMWIxODUx
ZDQyZTZiMjQyOGE3Y2M4MTM4ZWM2YWU3MGJmMmI4MGIuLjQxY2YzZTIwNDRkYWZiOWMzNjM4M2Yy
OWE5ZDAxNGM0MjNhOTJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yIG1fZW50cmllczsKLSAg
ICBPcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2N1cnJlbnRJbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eS5jcHAKaW5kZXggZGFiMzJlMDQ5M2U2YTZlYzdhMTU1NjU5MDQyMzBhZDVjY2Q5NjMwNC4uZjhm
MmZkMDNjZDFhZTIyZTk4OTgwOGUxZTAzYWNmMThhMTQyNjUyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5KFJlcGx5JiYgcmVwbHksIFNob3VsZEV4CiAKIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eTo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSgpID0gZGVmYXVsdDsK
IAotdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmRpZFJlY2VpdmVBcHBCb3VuZERv
bWFpblJlc3VsdChPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpk
aWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCmluZGV4IDg5NTgzMGM4ZTM2OTU3MzRi
YmJmMWJhYWM1NTRjOTM0NjNiYjA1MzEuLjg5ZTI3ZmI1M2YwZjU1YTA1MzFjYjdkMTgzMzYyMjFl
YmMzNGNmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIGVudW0gY2xhc3MgU2hvdWxk
RXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgOiBib29sIHsgTm8sIFllcyB9OwogY2xhc3MgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6RnJhbWVQb2xpY3lMaXN0ZW5lcj4gewogcHVibGljOgogCi0gICAgdXNpbmcg
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8
U2FmZUJyb3dzaW5nV2FybmluZz4mJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+KT47CisgICAgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pPjsKICAgICBzdGF0aWMgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFJlcGx5JiYgcmVwbHksIFNob3VsZEV4cGVjdFNhZmVC
cm93c2luZ1Jlc3VsdCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIFNob3VsZEV4cGVjdEFwcEJv
dW5kRG9tYWluUmVzdWx0IGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KFdURk1v
dmUocmVwbHkpLCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFwcEJvdW5kRG9tYWlu
UmVzdWx0KSk7CkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaWdub3JlKCk7
CiAgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0cyhSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXBwQm91bmREb21haW5S
ZXN1bHQoT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5KFJlcGx5JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0
QXBwQm91bmREb21haW5SZXN1bHQpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ+PiBtX3Bv
bGljeVJlc3VsdDsKLSAgICBPcHRpb25hbDxSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4+IG1f
c2FmZUJyb3dzaW5nV2FybmluZzsKLSAgICBPcHRpb25hbDxPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+LCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50Pj4gbV9wb2xpY3lSZXN1bHQ7CisgICAgc3RkOjpvcHRpb25h
bDxSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4+IG1fc2FmZUJyb3dzaW5nV2FybmluZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
PiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgUmVwbHkgbV9yZXBseTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggNWVmMDI5
MWI1NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUyYS4uMzU3NWFhMzE5NDMyODVhMzc3NTFm
NGIyMTNmYTBkYTFlOTNiMGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAKQEAgLTE5MiwxMSArMTkyLDExIEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hh
bmdlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAK
LVdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6Oldl
YnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZl
QnJvd3NpbmdXYXJuaW5nPiYmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQgZXhw
ZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCBl
eHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCkKK1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYg
V2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFNo
b3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIFNo
b3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0IGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
KQogewogICAgIGlmIChtX2FjdGl2ZUxpc3RlbmVyKQogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVy
LT5pZ25vcmUoKTsKLSAgICBtX2FjdGl2ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5OjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFBvbGljeUFjdGlv
biBhY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJy
b3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7
CisgICAgbV9hY3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3Jl
YXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9saWNpZXMsIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5nV2FybmluZyksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyID0gbnVsbHB0cjsKICAg
ICB9LCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA4MWNlYTIxNjg5
MDVhNGM3NDIzN2Y1MTVlYzA5OTNiZjU2ODA3ZDRkLi4zOTFiMDI3MzYyODM0MWVkYWE4ODMwYjM3
NGYwZmIxMzEyNDAxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0
YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93
c2luZ1dhcm5pbmc+JiYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+JiYs
IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0QXBwQm91bmREb21h
aW5SZXN1bHQpOworICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik+JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxk
RXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSB7IG1fY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZShjb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmZjQ3NmY1NDIxMTg4OWY3MTc4MGQ5ZTIzZWUzMzI5ZjIx
YzNjYzMxLi43NDkzNmU0NWEwZDgzODNhOGI0YjNkNmQ1NzhjOWJkMjJiZTNmYTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5kaWYKLSAgICBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFBvc2l0aW9uOyB9CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAgIHVz
aW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1
ZXN0ZXJzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4g
bV9wcm92aWRlcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YT4gbV9sYXN0UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFmZDc2Mjdj
OTAwN2M3NDRkNjI1MDA3ZTE1MmE2ZjYxYWMxZmJkZDIuLmUzZjgwMTQ3MTU2ZjUzN2U3ZDYyYjlm
Y2ZiMjJkMmQyZWE1ZjVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2Fn
ZS5tZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXMobWVzc2FnZS5tZXNzYWdlQm9keS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKLWJvb2wgV2ViUGFn
ZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkKK2Jvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXll
ckZsdXNoIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKQogewogICAgIG1f
c3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiAgICAgbV9sYXN0
U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIpOwogCkBAIC0x
ODc0LDcgKzE4NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3RlSW5zcGVjdG9ySW5mb3Jt
YXRpb25EaWRDaGFuZ2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xvcikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qgc3RkOjpvcHRpb25hbDxDb2xvcj4mIGNvbG9y
KQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYwMCw3ICsyNjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRy
YWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxl
SW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IEludFJlY3Qm
IGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hh
bmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1
dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5z
ZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKICAgICBt
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJhZ09wZXJhdGlvbjsKICAgICBtX2N1cnJlbnREcmFn
SGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRob2Q7CkBAIC0yNzQ3LDcgKzI3NDcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICAg
ICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gc2FuZGJveEV4dGVuc2lvbnM7
CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gc2FuZGJv
eEV4dGVuc2lvbnM7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0
RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6
TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9C
dXR0b247CkBAIC0zMjgxLDcgKzMyODEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFBy
b3RvY29sQXNBcHBCb3VuZChjb25zdCBVUkwmIHJlcXVlc3RVUkwpCiAgICAgcmV0dXJuIHJlcXVl
c3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzRGF0YSgpIHx8
IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkg
fHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgpOwogfQogCi1ib29sIFdlYlBhZ2VQ
cm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQo
Ym9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK2Jvb2wg
V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBl
cm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiB7CiAgICAgaWYgKGlzRnVsbFdlYkJyb3dzZXIoKSkgewogICAgICAgICBpZiAoaGFz
UHJvaGliaXRlZFVzYWdlU3RyaW5ncygpKQpAQCAtMzQxNCw3ICszNDE0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEEKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBvcHRpb25hbEhh
bmRsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG9w
dGlvbmFsSGFuZGxlOwogICAgICAgICBpZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKICAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvY2VzcyB0byBiZSB1c2VkIGZvciB0aGUgbmF2aWdhdGlv
biBkb2VzIG5vdCBnZXQgc2h1dERvd24gbm93IGR1ZSB0byBkZXN0cm95aW5nIFN1c3BlbmRlZFBh
Z2VQcm94eSBvciBQcm92aXNpb25hbFBhZ2VQcm94eSBvYmplY3RzLgogICAgICAgICAgICAgYXV0
byBwcmV2ZW50TmF2aWdhdGlvblByb2Nlc3NTaHV0ZG93biA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9u
LT5zaHV0ZG93blByZXZlbnRpbmdTY29wZSgpOwpAQCAtMzQ0Miw3ICszNDQyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIEEKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVz
LCBWYXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+PiYmIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFu
dDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
Pj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlciwgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
ICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVy
KCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwpAQCAtMzQ1NCw3ICszNDU0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJ
Z25vcmUgJiYgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9PSBXaWxsQ29udGludWVMb2Fk
SW5OZXdQcm9jZXNzOjpObyAmJiBuYXZpZ2F0aW9uICYmIG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpID09IG1fcGFnZUxvYWRTdGF0ZS5wZW5kaW5nQVBJUmVxdWVzdCgpLm5hdmlnYXRpb25JRCkK
ICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rp
b24pOwogCi0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQ7CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgog
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1l
SW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOwpAQCAtMzQ4MSwxOSArMzQ4MSwxOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1
ZXN0ID0geyB9OwogICAgIH0KICAgICAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiB3ZWJzaXRlUG9saWNpZXNEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YTsKICAgICBpZiAod2Vic2l0ZVBvbGljaWVzKQogICAg
ICAgICB3ZWJzaXRlUG9saWNpZXNEYXRhID0gd2Vic2l0ZVBvbGljaWVzLT5kYXRhKCk7CiAKICAg
ICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzRGF0YSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBmcmFtZUxv
YWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywg
Ym9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBX
ZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJh
bWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVu
dFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3Byb3Zp
c2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0
UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzcygp
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBt
YWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBt
X21haW5GcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0gJm1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkpOwogCkBAIC0zNTU5LDcgKzM1NTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgcwogICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNE
YXRhOwogICAgICAgICBpZiAod2Vic2l0ZVBvbGljaWVzKQogICAgICAgICAgICAgd2Vic2l0ZVBv
bGljaWVzRGF0YSA9IHdlYnNpdGVQb2xpY2llcy0+ZGF0YSgpOwogCkBAIC0zODgzLDcgKzM4ODMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IpCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPmRldmljZVNjYWxlRmFjdG9y
RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAgIG1fZGlzcGxheUlEID0gZGlzcGxheUlEOwog
CkBAIC0zOTYxLDcgKzM5NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRT
aXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdF
eHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAgICBpZiAobV92aWV3RXhwb3Nl
ZFJlY3QgPT0gdmlld0V4cG9zZWRSZWN0KQogICAgICAgICByZXR1cm47CkBAIC00MjUxLDcgKzQy
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzdGQ6Om51bGxvcHQsIEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5n
IHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgog
ICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTQyNjUsNyArNDI2NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAgICAgICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKICNlbmRpZgogCi0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBX
VEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBX
VEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4mJiBkZXRhaWxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGRldGFpbHMpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbihtYWtlVW5leHBl
Y3RlZChXVEZNb3ZlKCpkZXRhaWxzKSkpOwogICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0Vt
cHR5KCkpCkBAIC00MzE5LDkgKzQzMTksOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxp
bmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZwogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpPiB0b0FQ
SURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxi
YWNrKQorc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVu
Y2U+JiBkYXRhKSBtdXRhYmxlIHsKKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFjayhkYXRhID8gQVBJOjpEYXRhOjpjcmVhdGUoZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpIDogbnVsbHB0cik7CiAgICAgfTsKIH0KQEAgLTQ3
NjAsNyArNDc2MCw3IEBAIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWluCiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNl
RXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3Rk
OjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29y
ZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJk
LCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlz
IG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDgxNiw3
ICs0ODE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBmcmFtZS0+ZGlkQ29tbWl0
TG9hZChtaW1lVHlwZSwgd2ViQ2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50
KTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgICAgICBpZiAobV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKICAgICAgICAgZWxzZSBpZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0
aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpKQpAQCAtNTE3MiwxNCArNTE3MiwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29s
LCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
LCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBz
dGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUo
b3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVj
dFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywKLSAgICBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
bywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
CiB7CkBAIC01MTk1LDcgKzUxOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUs
IG5hdmlnYXRpb25JRD0lbGx1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCk7CkBAIC01Mjk0LDcgKzUyOTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
IHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQ6OlllczsKICNlbmRpZgogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2Vu
ZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9i
amVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZp
Z2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCld
IChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNp
ZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFp
bikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0l
bGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJu
aW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgp
LCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQp
cG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7
CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9u
QWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIG11dGFibGUgewpAQCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29u
c3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywg
c3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwK
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKQEAgLTU0NjMsNyArNTQ2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwKICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBmcmFtZUlELCBpc01haW5GcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFp
bkZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUlu
Zm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlk
ZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIApAQCAtNTQ5Miw3ICs1NDkyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWUKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZy
YW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwg
bnVsbHB0ciwgZnJhbWVOYW1lLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIFVSTCB7IH0sIHNo
b3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKICAgICAK
LSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclBy
b3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxp
c3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgIGF1dG8g
bGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwg
ZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNl
IGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXku
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTU1MzEsNyAr
NTUzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgYXV0byBuYXZpZ2F0aW9uUmVz
cG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2Us
IGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogCiAgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIs
IGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBw
cm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBwcm9jZXNzLCBu
YXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNp
dGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3Nl
cnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRz
IG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJv
d3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC02MDgxLDcgKzYwODEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbAogICAgIHBhZ2VDbGllbnQoKS5zaG93U2hhcmVTaGVl
dChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJlZmVyZW5jZXMtPmNvbnRhY3RQ
aWNrZXJBUElFbmFibGVkKCkpOwogICAgIHBhZ2VDbGllbnQoKS5zaG93Q29udGFjdFBpY2tlcihy
ZXF1ZXN0RGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNjUyNCw3ICs2NTI0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBpdGVt
ID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGluZGV4KSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlEKCkpOwpAQCAtNjYzMiw3ICs2NjMyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgbV9maW5kQ2xpZW50LT5kaWRGYWlsVG9GaW5kU3RyaW5nKHRoaXMsIHN0cmluZyk7CiB9CiAK
LWJvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRp
b24+IHNlbmRPcHRpb25zLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewog
ICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CkBAIC02Nzg1LDcgKzY3ODUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwogICAgIH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJbmZv
PiBkb3dubG9hZEluZm87CisgICAgc3RkOjpvcHRpb25hbDxEb3dubG9hZEluZm8+IGRvd25sb2Fk
SW5mbzsKIAogICAgIHN3aXRjaCAoaXRlbS5hY3Rpb24oKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtNzQ3Myw3ICs3NDczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ1Njcm9sbGluZ0V2
ZW50KHVpbnQzMl90IGV2ZW50VHlwZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAKICAgICB9CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNlZEZy
YW1lQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQp
CiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIG1fZm9jdXNlZEZyYW1lID0gbnVsbHB0
cjsKQEAgLTgxMDQsNyArODEwNCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uTWFuaWZlc3QgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZlc3QoKSA/
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KG1fY29uZmlndXJhdGlvbi0+
YXBwbGljYXRpb25NYW5pZmVzdCgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkpIDogc3RkOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IG1fY29uZmlndXJhdGlv
bi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS0+YXBw
bGljYXRpb25NYW5pZmVzdCgpKSA6IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcGFyYW1l
dGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzOwpAQCAtODM1
Miw3ICs4MzUyLDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdl
YlBhZ2VQcm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAgICByZXR1cm4gKm1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IGVuYWJs
ZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZCkKIHsKICAgICB1c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS5zZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUo
ZW5hYmxlZCk7CiB9CkBAIC04NzczLDcgKzg3NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYg
cAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4m
IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+
JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CkBAIC04OTgyLDcgKzg5ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi1SZWZQ
dHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJveHk6OnRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8
V2ViQ29yZTo6SW50UmVjdD4mJiBjbGlwUmVjdCkKK1JlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBh
Z2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+
JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90
KFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KQEAgLTkwMjUsNyArOTAyNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBp
bm5pbmcpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihwaW5uaW5nKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Ny
b2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3Jv
bGxiYXJTdHlsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0
eWxlKQogewogICAgIGlmICghbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgJiYgIXNjcm9sbGJhclN0
eWxlKQogICAgICAgICByZXR1cm47CkBAIC05MDM1LDcgKzkwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdAogCiAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzY3JvbGxiYXJTdHls
ZTsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlOwogICAg
IGlmIChzY3JvbGxiYXJTdHlsZSkKICAgICAgICAgc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgp
KTsKIApAQCAtMTAwODksNyArMTAwODksNyBAQCBSZWY8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdl
UHJveHk6OmVuc3VyZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogI2VuZGlm
IC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25N
YW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQpAQCAtMTA1ODAsNyArMTA1ODAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTA0ODVh
M2Q2Y2ZjOTY1ZGQ0ZDkwMmQ0MWJlMzZiOTE4OTI4MzJjNC4uNzFmZTU4NWNiNTdlZjM4ZThlNDI5
OTE1YzBlM2M4YjlmMjcwNzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTY5NSw4ICs2OTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWxlZ2F0ZXNTY3Jv
bGxpbmcoYm9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcpIHsgbV9kZWxlZ2F0ZXNTY3JvbGxpbmcgPSBk
ZWxlZ2F0ZXNTY3JvbGxpbmc7IH0KICAgICBib29sIGRlbGVnYXRlc1Njcm9sbGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAKLSAgICB2b2lkIHNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmIG1lYXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1l
YXN1cmVtZW50KTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50OyB9CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIG1l
YXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVt
ZW50KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KIAogICAgIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoTW9kZSA6IGJvb2wgeyBEZWZlcnJhYmxlLCBJbW1lZGlhdGUgfTsKICAgICBl
bnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VSZXBseU1vZGUgOiBib29sIHsgQXN5bmNocm9u
b3VzLCBTeW5jaHJvbm91cyB9OwpAQCAtNzMwLDcgKzczMCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlvbik7CiAK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gY2FjaGVkRm9udEF0dHJpYnV0
ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRGb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVzPiBjYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydDsgfQogCiAjaWYgSEFW
RShUT1VDSF9CQVIpCiAgICAgY29uc3QgVG91Y2hCYXJNZW51RGF0YSYgdG91Y2hCYXJNZW51RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hCYXJNZW51RGF0YTsgfQpAQCAtNzYxLDcgKzc2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JlZW5Jc0JlaW5nQ2FwdHVyZWQo
Ym9vbCk7CiAKLSAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
bGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CiAgICAgdm9pZCByZW1vdmVU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9
CkBAIC03OTEsNyArNzkxLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1Vbm9ic2N1cmVkU2l6
ZTsgfQogICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CiAgICAgaW50MzJf
dCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247
IH0KLSAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CisgICAgdm9pZCBzZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHM+Jik7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKFRyYW5zYWN0aW9uSUQpOwogCiAg
ICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVy
ZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+KT4mJik7CkBAIC04NjgsOSArODY4LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
SGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7CiAgICAgdm9pZCBy
ZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2b2lkIHJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7
Ci0gICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYm
IHJlcGx5KTsKKyAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGE+KT4mJiByZXBseSk7CiAgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CisgICAgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFw
c2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZURyb3AoKTsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC04ODcsNyArODg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAgICAgdm9pZCBkZWxldGVTdXJy
b3VuZGluZyhpbnQ2NF90IG9mZnNldCwgdW5zaWduZWQgY2hhcmFjdGVyQ291bnQpOwogCi0gICAg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwor
ICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3Rh
dGU+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkBAIC05NTUsOCArOTU1LDggQEAg
cHVibGljOgogICAgIHZvaWQgdGhlbWVEaWRDaGFuZ2UoKTsKICNlbmRpZgogCi0gICAgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgUGxhdGZvcm1W
aWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHB1YmxpYzoKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgc2V0Q3VzdG9tRGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpOwotICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOwog
ICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wpOwpAQCAtMTA1NSw4ICsxMDU1LDggQEAgcHVibGljOgogICAg
IGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZpeGVkTGF5b3V0OyB9
OwogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplOyB9OwogCi0gICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJl
Y3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdFeHBvc2Vk
UmVjdDsgfQorICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZp
ZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAKICAg
ICB2b2lkIHNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wpOwogICAgIHZvaWQg
c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wpOwpAQCAtMTE4Miw3ICsxMTgyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgZm9y
Y2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBmbG9hdCBoZWFk
ZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgcHVibGljOgog
CiAgICAgY2xhc3MgUG9saWN5RGVjaXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
LCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdh
dGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lE
ZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsg
fSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwogICAgIHZvaWQgcmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGlj
aWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9y
d2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
KTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EcmFnT3Bl
cmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAK
LSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNl
SXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlZGl0YWJsZUVsZW1lbnRSZWN0KTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBXZWJDb3JlOjpE
cmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlv
blJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwogICAg
IHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBk
cmFnQ2FuY2VsbGVkKCk7CkBAIC0xMjg4LDcgKzEyODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
YXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGN1cnJlbnREcmFnT3Bl
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFn
SXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJ
bnB1dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVk
OyB9CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludElu
Zm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjZW5kaWYK
QEAgLTEzNjYsNyArMTM2Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBERktJ
VF9QTFVHSU4pCi0gICAgdm9pZCBzaG93UERGQ29udGV4dE1lbnUoY29uc3QgV2ViS2l0OjpQREZD
b250ZXh0TWVudSYsIFBERlBsdWdpbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8aW50MzJfdD4mJik+JiYpOworICAgIHZvaWQgc2hvd1BERkNvbnRleHRNZW51KGNv
bnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmLCBQREZQbHVnaW5JZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4mJik+JiYpOwogI2VuZGlmCiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsgfQogCkBAIC0xNDQ4LDggKzE0NDgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVo
YXZpb3I7IH0KIAotICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdl
YkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gb3ZlcmxheVNjcm9sbGJhclN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxi
YXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5
U2Nyb2xsYmFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsg
fQogCiAgICAgLy8gV2hlbiB0aGUgc3RhdGUgb2YgdGhlIHdpbmRvdyBjaGFuZ2VzIHN1Y2ggdGhh
dCB0aGUgV2ViUGFnZSBuZWVkcyBpbW1lZGlhdGUgdXBkYXRlLCB0aGUgVUlQcm9jZXNzIHNlbmRz
IGEgbmV3CiAgICAgLy8gQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIHRvIHRoZSBXZWJQcm9jZXNzIHRo
cm91Z2ggdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZS4gVGhlIFVJUHJvY2VzcyB3aWxsIHdh
aXQgdGlsbCBpdApAQCAtMTQ2MSwxMCArMTQ2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNv
cmRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsKICAgICB2b2lkIHN1cHByZXNzTmV4dEF1
dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCgpIHsgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0
aWNOYXZpZ2F0aW9uU25hcHNob3QgPSB0cnVlOyB9CiAgICAgdm9pZCByZWNvcmROYXZpZ2F0aW9u
U25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwotICAgIHZvaWQgcmVxdWVzdEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25h
bDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYmKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZp
ZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKTsKKyAgICBSZWZQdHI8Vmll
d1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVj
dD4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtMTY5NSw3ICsxNjk1
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJik7CisgICAg
dm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKICNlbmRp
ZgogCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3Q7CkBA
IC0xNzE5LDcgKzE3MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDdXJyZW50TW9kaWZp
ZXJTdGF0ZSgpOwogCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lk
IGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmKTsK
IAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVuIHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQ
cm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRh
dGEmKTsKQEAgLTE3MjksMTMgKzE3MjksMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0g
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwor
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiA9IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
LSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQs
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1Rv
SXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMmKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0Rl
bGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVk
UmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCkBA
IC0xNzg3LDcgKzE3ODcsNyBAQCBwdWJsaWM6CiAgICAgVVJMIGN1cnJlbnRSZXNvdXJjZURpcmVj
dG9yeVVSTCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNl
dE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAg
dm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxi
b29sPik7CiAgICAgdm9pZCB3aWxsU3RhcnRDYXB0dXJlKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAK
QEAgLTE4MzAsMTIgKzE4MzAsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNET01XaW5k
b3dSZXNpemVFdmVudCgpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9
CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsgfQogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc0ZvcmNlZElu
dG9BcHBCb3VuZE1vZGVUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwot
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CiAjZWxz
ZQotICAgICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
ICAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTg5OCw3ICsxODk4LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29y
ZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7CiAgICAgdm9pZCBzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKTsKLSAgICB2b2lkIHJlc3RvcmVB
cHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7
CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVj
dG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAgICAgdm9pZCBzZXRBcHBIaWdobGlnaHRzVmlzaWJp
bGl0eShjb25zdCBXZWJDb3JlOjpIaWdobGlnaHRWaXNpYmlsaXR5KTsKICNlbmRpZgogCkBAIC0x
OTU1LDcgKzE5NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
OwogICAgIHZvaWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAK
LSAgICBib29sIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1
c2gpOworICAgIGJvb2wgc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRp
b24mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKTsKIAogICAgIGVudW0gY2xhc3MgUmVzZXRTdGF0ZVJlYXNvbiB7CiAgICAg
ICAgIFBhZ2VJbnZhbGlkYXRlZCwKQEAgLTE5NjgsNyArMTk2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCkBAIC0xOTk0LDcgKzE5OTQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2
ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFt
ZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRh
Jik7CkBAIC0yMDE3LDEzICsyMDE3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95
TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJv
eHkmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAg
ICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFt
ZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0Rl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0yMDc4LDcgKzIwNzgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAgICAgYm9v
bCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpOworICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6
Q29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJik7CiAgICAgdm9pZCBwcmludEZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4
cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVv
dGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFEZWxheWVkUmVwbHkmJik7CkBAIC0yMTc1
LDcgKzIxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEJhY2svRm9yd2FyZCBsaXN0IG1hbmFnZW1l
bnQKICAgICB2b2lkIGJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUm
Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyYpPiYmKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7CisgICAgdm9pZCBiYWNrRm9yd2FyZEl0
ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7CiAgICAgdm9p
ZCBiYWNrRm9yd2FyZExpc3RDb3VudHMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRMaXN0Q291bnRzRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRDbGVhcigp
OwogCkBAIC0yMjY0LDcgKzIyNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3RyaW5n
Rm9yRmluZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCi0gICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4mKTsKKyAgICB2
b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOwogCkBAIC0yMzA0LDggKzIzMDQsOCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKIAogICAgIHZvaWQgY291bGROb3RSZXN0b3Jl
UGFnZVN0YXRlKCk7Ci0gICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBz
Y3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0
c09uU2F2ZSwgZG91YmxlIHNjYWxlKTsKLSAgICB2b2lkIHJlc3RvcmVQYWdlQ2VudGVyQW5kU2Nh
bGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4sIGRvdWJsZSBzY2FsZSk7CisgICAgdm9p
ZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Ny
b2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUg
c2NhbGUpOworICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBkb3VibGUgc2NhbGUpOwogCiAgICAgdm9pZCBkaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgZ2VvbWV0cmll
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBib29s
IG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZyk7CiAKQEAgLTI0NzcsNyArMjQ3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwogICAgICAgICAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0g
ICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRl
ZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4pOworICAgIGJvb2wgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFu
ZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogI2VuZGlmCiAKICAgICBzdGF0aWMg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5k
Ym94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmKTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6SW5wdXRNb2RlPiBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2U7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpJbnB1dE1vZGU+IG1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZTsKICAg
ICBUcmFuc2FjdGlvbklEIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklkQWZ0ZXJEaWRDb21t
aXRMb2FkOwogICAgIGludDMyX3QgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKICAgICBib29s
IG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgeyBmYWxzZSB9OwpAQCAtMjYyOCw3ICsy
NjI4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5PiBtX29wZW5pbmdBcHBMaW5rQWN0aXZpdHk7CiAjZW5kaWYKICAg
ICBib29sIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBtX2NwdUxpbWl0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2Nw
dUxpbWl0OwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0Owog
ICAgICAgICAKICAgICBib29sIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24geyBmYWxzZSB9
OwpAQCAtMjY1Miw3ICsyNjUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9wbHVnaW5TY2Fs
ZUZhY3RvciB7IDEgfTsKICAgICBkb3VibGUgbV92aWV3U2NhbGVGYWN0b3IgeyAxIH07CiAgICAg
ZmxvYXQgbV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvciB7IDEgfTsKLSAgICBPcHRpb25hbDxm
bG9hdD4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBtX2N1c3RvbURldmljZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fdG9wQ29udGVudEluc2V0
IHsgMCB9OwogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBMYXll
ckhvc3RpbmdNb2RlOjpJblByb2Nlc3MgfTsKQEAgLTI2NjcsNyArMjY2Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9maXhlZExheW91dFNpemU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiBtX3ZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV92aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29sIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFs
U2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xs
ZXIgeyBmYWxzZSB9OwpAQCAtMjcwNiw3ICsyNzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJXaGVlbEV2ZW50Q29hbGVzY2VyPiBtX3doZWVsRXZlbnRDb2FsZXNjZXI7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRD4gbV9kaXNwbGF5SUQ7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRD4gbV9kaXNwbGF5
SUQ7CiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5
IG1fd2hlZWxFdmVudEFjdGl2aXR5SHlzdGVyZXNpczsKICNlbmRpZgpAQCAtMjc3NSw3ICsyNzc1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5k
Q29sb3I7CiAKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VD
b3VudCB7IDAgfTsKIApAQCAtMjc4NCw3ICsyNzg0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJhZyBkZXN0aW5hdGlvbiBkZXRhaWxzIGFy
ZSBkZWxpdmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLAogICAgIC8vIHNvIHdlIHBy
ZXNlcnZlIHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBuZXh0IGRyYWdnaW5nIGRlbGVnYXRlIGNh
bGwgaXMgbWFkZS4KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX2N1cnJl
bnREcmFnT3BlcmF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0
aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsgZmFs
c2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCB7IDAgfTsKQEAgLTI4MzYsNyArMjgzNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX21pbmltdW1TaXplRm9yQXV0b0xheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpJbnRTaXplPiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHM7CiAKICAgICAvLyBWaXN1YWwgdmlld3BvcnRzCiAgICAgV2ViQ29yZTo6TGF5b3V0U2l6ZSBt
X2Jhc2VMYXlvdXRWaWV3cG9ydFNpemU7CkBAIC0yODcxLDcgKzI4NzEsNyBAQCBwcml2YXRlOgog
ICAgIFZpc2libGVXZWJQYWdlVG9rZW4gbV92aXNpYmxlUGFnZVRva2VuOwogICAgICAgICAKICAg
ICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
eyBXZWJDb3JlOjpEb05vdFBpbiB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwog
CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fY3VycmVudEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApAQCAtMjkwMyw3ICsyOTAz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV92aWV3cG9ydENvbmZpZ3Vy
YXRpb25WaWV3TGF5b3V0U2l6ZTsKICAgICBkb3VibGUgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25M
YXlvdXRTaXplU2NhbGVGYWN0b3IgeyAxIH07CiAgICAgZG91YmxlIG1fdmlld3BvcnRDb25maWd1
cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoIHsgMCB9OwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gbV9vdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
MjkxMyw3ICsyOTEzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGFzdE9ic2VydmVkU3RhdGVX
YXNCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0OwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICBib29sIG1faXNQb2ludGVyTG9ja1BlbmRpbmcgeyBmYWxzZSB9OwpAQCAtMjkzOCw5ICsyOTM4
LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFnZURlYnVnZ2FibGU+IG1f
aW5zcGVjdG9yRGVidWdnYWJsZTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8U3BlbGxEb2N1bWVu
dFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOworICAgIHN0ZDo6b3B0aW9uYWw8U3BlbGxEb2N1bWVu
dFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOwogCi0gICAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4g
bV9wYWdlTG9hZFN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdl
TG9hZFN0YXJ0OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ByZXZpb3VzbHlWaXNpdGVkUGF0aHM7
CiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJveHk+IG1fcmVzZXRSZWNlbnRDcmFzaENv
dW50VGltZXI7CkBAIC0yOTc3LDcgKzI5NzcsNyBAQCBwcml2YXRlOgogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhh
bmRsZXI7CiAgICAgfTsKLSAgICBPcHRpb25hbDxTcGVlY2hTeW50aGVzaXNEYXRhPiBtX3NwZWVj
aFN5bnRoZXNpc0RhdGE7CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hTeW50aGVzaXNEYXRhPiBt
X3NwZWVjaFN5bnRoZXNpc0RhdGE7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPiBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI7CkBAIC0zMDEyLDggKzMwMTIsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
ICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFs
c2UgfTsKICNlbmRpZgpAQCAtMzAyOCw3ICszMDI4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjM0MmMwZTY5NjRl
MWMxZmEzYjMzYjU2OTg3NWEyMjIwNDkwOTVkYS4uOWIwNGFhMzMxYmIwN2JhYjYyOGNmYjFjNTJl
Nzg5MGM5NDA4ZGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVy
ZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVy
cykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMp
IFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZSgpCiAgICAgUnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNo
cm9ub3VzCkBAIC00NCw3ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U2V0U3RhdHVzVGV4dChTdHJpbmcgc3RhdHVzVGV4dCkKICAgICBTZXRGb2N1cyhib29sIGZvY3Vz
ZWQpCiAgICAgVGFrZUZvY3VzKHVpbnQ4X3QgZGlyZWN0aW9uKQotICAgIEZvY3VzZWRGcmFtZUNo
YW5nZWQoT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKQorICAgIEZv
Y3VzZWRGcmFtZUNoYW5nZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQpCiAgICAgU2V0UmVuZGVyVHJlZVNpemUodWludDY0X3QgdHJlZVNpemUpCiAgICAg
U2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKQogICAgIEdldFRv
b2xiYXJzQXJlVmlzaWJsZSgpIC0+IChib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkgU3luY2hyb25v
dXMKQEAgLTY5LDcgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBQYWdl
RGlkU2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAgIFJ1bk9wZW5Q
YW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBmcmFtZUluZm8sIHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
IHBhcmFtZXRlcnMpCiAgICAgU2hvd1NoYXJlU2hlZXQoc3RydWN0IFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhKSAtPiAoYm9vbCBncmFudGVkKSBBc3luYwotICAgIFNo
b3dDb250YWN0UGlja2VyKHN0cnVjdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhIHJlcXVl
c3REYXRhKSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4gaW5mbykg
QXN5bmMKKyAgICBTaG93Q29udGFjdFBpY2tlcihzdHJ1Y3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSkgLT4gKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNv
bnRhY3RJbmZvPj4gaW5mbykgQXN5bmMKICAgICBQcmludEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTdHJpbmcgdGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZGZGaXJz
dFBhZ2VTaXplKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIFJ1bk1vZGFsKCkKICAgICBOb3RpZnlT
Y3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsZXJUaHVt
YikKQEAgLTEwOCw4ICsxMDgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAg
IyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEs
IHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGlj
eURlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVj
aXNpb24gUG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogCkBAIC0xMzMsNyArMTMzLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIGVudW06Ym9vbCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51
ZUxvYWRpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNb3VzZUV2
ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAg
ICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgU2V0SW5wdXRNZXRo
b2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+IHN0YXRlKTsKKyAgICBT
ZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRl
PiBzdGF0ZSk7CiAjZW5kaWYKIAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKICAgICBCYWNr
Rm9yd2FyZEFkZEl0ZW0oc3RydWN0IFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0
ZW1TdGF0ZSkKICAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCi0gICAgQmFja0ZvcndhcmRJdGVtQXRJ
bmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkgU3luY2hyb25vdXMKKyAgICBCYWNrRm9yd2FyZEl0ZW1B
dEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQpIFN5bmNocm9ub3VzCiAgICAgQmFja0Zvcndh
cmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRDbGVhcigpCiAgICAgV2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpCkBAIC0zMDQsNyArMzA0LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNz
YWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24s
IGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0
aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJl
Y3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhv
ZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0
IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMzIzLDcgKzMyMyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkSGFuZGxlRHJhZ1N0YXJ0UmVx
dWVzdChib29sIHN0YXJ0ZWQpCiAgICAgRGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVl
c3QoYm9vbCBhZGRlZCkKICAgICBXaWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQotICAgIERp
ZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPiB0ZXh0SW5kaWNhdG9yKQorICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3IpCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzkwLDggKzM5MCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvdWxkTm90
UmVzdG9yZVBhZ2VTdGF0ZSgpCi0gICAgUmVzdG9yZVBhZ2VTdGF0ZShPcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxP
cmlnaW4sIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRv
dWJsZSBzY2FsZSkKLSAgICBSZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+IHVub2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKKyAgICBSZXN0
b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9z
aXRpb24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luLCBXZWJDb3JlOjpSZWN0RWRn
ZXM8ZmxvYXQ+IG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpCisgICAgUmVzdG9y
ZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHVu
b2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKICAgICBEaWRHZXRUYXBIaWdobGlnaHRHZW9t
ZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+IGdlb21ldHJpZXMsIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJh
ZGl1cywgV2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBi
b3R0b21MZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzLCBib29s
IG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZykKIAogICAgIEVsZW1lbnREaWRGb2N1cyhzdHJ1
Y3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uIGluZm9ybWF0aW9uLCBib29sIHVz
ZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKLSAgICBTaG93UERGQ29u
dGV4dE1lbnUoc3RydWN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUgY29udGV4dE1lbnUsIFdlYktp
dDo6UERGUGx1Z2luSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8aW50MzJfdD4g
c2VsZWN0ZWRJdGVtKSBTeW5jaHJvbm91cworICAgIFNob3dQREZDb250ZXh0TWVudShzdHJ1Y3Qg
V2ViS2l0OjpQREZDb250ZXh0TWVudSBjb250ZXh0TWVudSwgV2ViS2l0OjpQREZQbHVnaW5JZGVu
dGlmaWVyIGlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IHNlbGVjdGVkSXRl
bSkgU3luY2hyb25vdXMKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRl
eCA0YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAzMWQ5NTA2MWY5MGNjLi4xNjg2MTc0ZGMwODM4
ODBlMGI2NTU5NjI2NDY2YWEyNTMyOGE1ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNz
UHJveHkqIFdlYlBhc3RlYm9hcmRQcm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3RpbwogI2lmICFQTEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEsp
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwg
Y29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
JiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIH0KIAogI2lmICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVf
dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIH0KIAogI2VuZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpj
b250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAppbmRleCAyNTEyNGIyZmE3NzdlYzBkYjEwZjZlMWIxM2VlNGIyMGFhOGY1ZDEy
Li5iOTNmZGM3NjBlNjQ0ZDBmZWIxNWI1OWVhMjNjMTgxYzU4ZWE1ZjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtODQsNDIgKzg0LDQyIEBA
IHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwotICAgIHZvaWQgd3JpdGVXZWJDb250ZW50
VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+KTsKLSAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsK
LSAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7Ci0gICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsK
KyAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2
b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVTdHJpbmdU
b1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXROdW1iZXJP
ZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0
cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZENoYW5nZUNvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYp
PiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGFk
ZFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+
JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZENvbG9y
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBz
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXROdW1iZXJP
ZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAg
dm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
Jik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50KElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb2xvciYmKT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGFkZFBhc3RlYm9hcmRU
eXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Cisg
ICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZENv
bG9yKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYp
OworICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CiAj
ZW5kaWYKIAotICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwotICAg
IHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24m
LCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
Jik7CisgICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7CisgICAgdm9p
ZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYpOwogCi0gICAgdm9pZCB3
cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJik7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCB1cmxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKKyAgICB2b2lkIHdyaXRlQ3Vz
dG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYpOworICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGNvbnRhaW5zU3RyaW5n
U2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgdXJs
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGdldFR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE1vZGlmeUNvbnRl
bnRzT2ZQYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgcHJldmlvdXNDaGFuZ2VDb3VudCwgaW50NjRfdCBuZXdDaGFuZ2VDb3Vu
dCk7CiAKICAgICBlbnVtIGNsYXNzIFBhc3RlYm9hcmRBY2Nlc3NUeXBlIDogdWludDhfdCB7IFR5
cGVzLCBUeXBlc0FuZERhdGEgfTsKLSAgICBPcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4g
YWNjZXNzVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRBY2Nlc3NUeXBlPiBhY2Nlc3NU
eXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIGNvbnN0
OwogICAgIHZvaWQgZ3JhbnRBY2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgUGFzdGVib2FyZEFjY2Vzc1R5cGUpOwogCi0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RGF0YU93bmVyVHlwZT4gZGV0ZXJtaW5lRGF0YU93bmVyKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgUGFzdGVib2FyZEFjY2Vzc0ludGVudCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpEYXRhT3duZXJUeXBlPiBkZXRlcm1pbmVEYXRhT3duZXIoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQpIGNvbnN0OwogI2VuZGlm
CiAKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IG1fd2ViUHJvY2Vzc1Byb3h5U2V0
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBncmFudEFjY2Vz
cyhXZWJQcm9jZXNzUHJveHkmLCBQYXN0ZWJvYXJkQWNjZXNzVHlwZSk7CiAgICAgICAgIHZvaWQg
cmV2b2tlQWNjZXNzKFdlYlByb2Nlc3NQcm94eSYpOwotICAgICAgICBPcHRpb25hbDxQYXN0ZWJv
YXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShXZWJQcm9jZXNzUHJveHkmKSBjb25zdDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShXZWJQcm9j
ZXNzUHJveHkmKSBjb25zdDsKICAgICB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBQYXN0ZWJvYXJk
QWNjZXNzSW5mb3JtYXRpb24+IG1fcGFzdGVib2FyZE5hbWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDdiMzdjMGVlZTEwOTQ1ZjYzNWMzYjI1ZWM1MWQz
M2IzNWIxNGYzMi4uMmY4NjdlMTAyMTUwMmFkMjk3ZTc2NTliMzdhMjQ2MTg2OTgwYmYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjIsNDIgKzIyLDQyIEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9h
cmRQcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdy
aXRlVVJMVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3Ry
dWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHND
b25uZWN0aW9uCi0gICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0
ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorICAgIFdyaXRlVVJM
VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1
Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdh
bnRzQ29ubmVjdGlvbgorICAgIFdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAgVXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkKICNlbmRpZgogCi0gICAgV3JpdGVDdXN0b21EYXRhKFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4gZGF0YSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0g
ICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgotICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShTdHJpbmcgdHlwZSwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRl
Q3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgb3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgSW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcg
c3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5n
IHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9y
VHlwZShTdHJpbmcgdHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9h
cmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBu
dW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJv
YXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBh
c3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoV2ViQ29yZTo6Q29sb3IgY29sb3IpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAg
IEdldFBhc3RlYm9hcmRVUkwoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCi0gICAgQWRkUGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2Vi
Q29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNo
YW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJk
Q29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpDb2xvciBjb2xvciwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgc3RyaW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VD
b3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29udGFpbnNVUkxTdHJpbmdT
dWl0YWJsZUZvckxvYWRpbmcoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIFVSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+
IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZp
bGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1lcywgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlw
ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4g
c3RyaW5ncykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2
NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0
ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEFk
ZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBh
c3RlYm9hcmRUeXBlcywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
CisgICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0
cmluZz4gcGFzdGVib2FyZFR5cGVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZENvbG9yKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgc3Ry
aW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChp
bnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hh
bmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbnRhaW5zVVJMU3Ry
aW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFVSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2Fu
dHNDb25uZWN0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiNTI0YzI0ZDE4OWE1ZDA3M2M2ZTMw
OWY1YTEyOWI2NjAxODEzMzY5Li5jMTMzMGU3NDM3ZWY5MzJiNmQ1MzJhMDFiNDU0NTZkNjEwMzY4
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
MTU5LDcgKzExNTksNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQo
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogewogICAgIGF1dG8mIGRv
d25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5p
dGlhdGluZ1BhZ2UsIHsgfSk7CiAKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewog
ICAgICAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJv
eHkpOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZmYjIyNzRmZTk4MGY0MWM0OWE2MTQ4NDc3ZTc2ZjUy
ODYwMmM1ODQuLjg0N2VlMDJkMjc1ZjIxNWE4NzNlZTVjMjU0YjQ5MzFlZmNiNmJkNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM4LDcgKzIzOCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9pZCBzdGFydERpc3BsYXlMaW5rKElQQzo6
Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCk7CiAgICAgdm9pZCBzdG9wRGlzcGxheUxp
bmsoSVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxpbmtPYnNlcnZlcklELCBXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9pZCBzZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZChJUEM6OkNvbm5lY3Rpb24mLCBEaXNwbGF5TGlua09ic2VydmVySUQsIFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpOwpAQCAtNDk4LDcg
KzQ5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCkgeyByZXR1cm4gc191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOyB9
CiAKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKLSAgICB2b2lkIG5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSk7CisgICAgdm9pZCBub3RpZnlQcmVm
ZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFBMQVlTVEFUSU9OKQpAQCAtNjA2LDcgKzYwNiw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKTsKICAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBP
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzOwogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2Vy
dGlvbj4gZ3B1UHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb247CiAjZW5kaWYKICAgICB9Owot
ICAgIE9wdGlvbmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5
OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlh
QWN0aXZpdHk7CiAKICNpZiBQTEFURk9STShQTEFZU1RBVElPTikKICAgICBpbnQzMl90IG1fdXNl
cklkIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGQ2YmIzMzczN2JiZjk5ZGM3NDNhNzc3NzZmMzUxMDhmMzllNmM2ZWEuLjQ0NzIxNmI1
YzlmYTQyODY2MGYwMzBkN2E5NTk5YTJlMmM3OGZjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiBpdGVtCiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8UGx1Z2luSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8UGx1Z2luSW5mbz4m
JiBhcHBsaWNhdGlvblBsdWdpbnMsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQ
bHVnaW5JZGVudGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2lucyhib29sIHJlZnJl
c2gsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFBsdWdpbkluZm8+JiYgcGx1Z2lucywg
VmVjdG9yPFBsdWdpbkluZm8+JiYgYXBwbGljYXRpb25QbHVnaW5zLCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVn
aW5JZGVudGlmaWVycyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlZnJlc2gp
CiAgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBsdWdpbkluZm9TdG9yZSgpLnJlZnJlc2goKTsKQEAg
LTE5MzYsNyArMTkzNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdv
cmtlcnMoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29u
dGVudFJ1bGVMaXN0c0Zyb21JZGVudGlmaWVyKGNvbnN0IE9wdGlvbmFsPFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI+JiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQorc3Rh
dGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzRnJvbUlkZW50aWZpZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiYgdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcikKIHsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IGUyNTM4NzY2MWI0NjM2OTBhYjQ4OGFhZThkYTM2NDkwYTlj
OWZhNTMuLjU1YzU4YzQzY2E3YTk2YTdjOTM2ODE2MTZlMzgyODY2MGIxMDZmN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00NTUsNyArNDU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFBsdWdpbnMKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICB2b2lkIGdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYmIHBsdWdpbnMsIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYmIGFwcGxpY2F0aW9uUGx1Z2lucywgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYmKT4mJik7CisgICAgdm9pZCBnZXRQbHVn
aW5zKGJvb2wgcmVmcmVzaCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mJiBhcHBs
aWNhdGlvblBsdWdpbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiYmKT4mJik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5
JiYpOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywg
dWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwOwogCi0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW47CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAg
ICBib29sIG1faXNJblByb2Nlc3NDYWNoZSB7IGZhbHNlIH07CiAKICAgICBlbnVtIGNsYXNzIE5v
T3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwpAQCAtNjI0LDcgKzYyNCw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9oYXNNYW5hZ2VkU2Vzc2lv
blNhbmRib3hBY2Nlc3MgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgT3B0aW9uYWw8VXNlTGF6eVN0
b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkOworICAgIHN0
ZDo6b3B0aW9uYWw8VXNlTGF6eVN0b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVy
V2hlbkxhdW5jaGVkOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2JhY2tncm91bmRBY3Rp
dml0eUZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CkBAIC02NDIsNyArNjQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5Owog
ICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAg
ICB9OwotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpT
bGVlcERpc2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlz
YWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwogCkBAIC02NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVW5pcXVlUmVmPFByb2Nlc3NBc3NlcnRpb24+IGFzc2VydGlvbjsKICAgICAgICAg
V2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFUb2tlbiB0b2tlbjsKICAgICB9OwotICAgIE9wdGlv
bmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5OworICAgIHN0
ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7
CiAKICAgICBTaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50ZXIgbV9zaHV0ZG93blByZXZlbnRp
bmdTY29wZUNvdW50ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYTY0MjNjYWI1OWJlMDAzYzI2ZDg4YTlmYjg1
ODRkNTdmNGFjNTkxLi4wY2FmNjExNjQzOGZlZDUxOGQ1Y2JkZjdiZDk2MjhjNThjODY1YzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMyw3ICszMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAKICAgICAjIFBsdWdpbiBtZXNzYWdlcy4KICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
YXBwbGljYXRpb25QbHVnaW5zLCBzdHJ1Y3QgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycykgU3luY2hy
b25vdXMKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gYXBwbGljYXRp
b25QbHVnaW5zLCBzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKSBTeW5jaHJvbm91
cwogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICBHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBiMzk3OGYyNGU0YWI5NDY5ODI0NTc0OGQxYTdi
Y2FmNWM2MWNjZTNjLi4wNGM4NWViZGQyMzM1NGM3NDViOTZmZDZkMTM0YmI4NmNkM2ZhYjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC01NDgsNyArNTQ4LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFMKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9t
YWluc0lmSW5pdGlhbGl6ZWQoKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zSWZJbml0aWFs
aXplZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoIWhhc0lu
aXRpYWxpemVkQXBwQm91bmREb21haW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKaW5kZXggYzM1MjYxMmZmYzk5
ZTQwOWI1MzUzZThkOWViZWRlYzdjMTA3OWQ1MC4uZjdhMDkzM2FkY2IyOTU1NWIzMDUxMDczZTcz
MWFkNDBkMWY3YmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgICAgIHVpbnQ2NF90IHRvdGFsU2l6ZTsKICAgICAgICAg
SGFzaE1hcDx1bnNpZ25lZCwgdWludDY0X3Q+IHR5cGVTaXplczsKICAgICB9OwotICAgIE9wdGlv
bmFsPFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxTaXplPiBzaXplOwogCiAgICAgSGFz
aFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGNvb2tpZUhvc3ROYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAwMzRiY2E1NDI5OTE1NTdm
ZDc2MGFiYTIwNTJjODY3ODI1YWU2ZjVkLi4xN2FhZDA1N2EzNDE0ZmI5ODQ1ZTk5MmEzYTcyMDUx
MmJiOGI2MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zOTAsNyArMzkwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQotICAgIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3Vu
ZERvbWFpbnNJZkluaXRpYWxpemVkKCk7CiAgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBzdGQ6
OmF0b21pYzxib29sPiBpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQgPSBmYWxzZTsKICAg
ICBzdGF0aWMgdm9pZCBmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNG
b3JJVFAoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPiBtX3NvQXV0aG9yaXphdGlvbkNv
b3JkaW5hdG9yOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRl
ZC4KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IDFiNTdkNmI3MTE2
MzEwNzJlNjUxMTRkOGQxYTQ1NDFlMTZkNDExZDYuLmY3YzY4M2ZmNzE2M2ZhMjYzOTgyMDA3ZmIw
ZjA2MjZlYWRiMmRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2Vic2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlU3BhY2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVPcmlnaW4sIHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lT3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5k
ZXggMzFkMjkwOTE5ODVmMzRhNjUxMzRhMmIwZTdjYjNhY2UxZGFlNDQxZC4uYjVlNDhlNmM2MWE4
YTNmNGI0MGI4NDExMmM0MDEwMTAxYzRkNWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIo
KTsKICAgICB+R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKIAotICAgIHVzaW5nIFVwZGF0
ZU5vdGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSYmLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJvcik+OworICAgIHVzaW5nIFVwZGF0ZU5v
dGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSYmLCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IGVycm9yKT47CiAgICAgdm9pZCBzdGFydChV
cGRhdGVOb3RpZnlGdW5jdGlvbiYmKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlHTGliLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHlHTGliLmNwcAppbmRleCA2NWU1YjdlNWFiNzYzNTAzYjJlN2FhMDU4YWMzNjBh
OWZlZmEwZGVjLi4wMDNiMDIxNTYwY2IyMmE2ZDlhZDg5MDJmZmFhZWFiNTNkYTkxODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eUdMaWIuY3BwCkBAIC0y
OSw3ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwbGF0Zm9ybVZhbGlkYXRlVXNlck1lZGlhUmVx
dWVzdENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OlZhbGlkQ29uc3RyYWlu
dHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZh
bGlkQ29uc3RyYWludHNIYW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIFN0cmluZyYmIGRldmljZUlE
SGFzaFNhbHQpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZhbGlkYXRlVXNl
ck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzKG1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QtPnVzZXJS
ZXF1ZXN0KCksIGRldmljZUlESGFzaFNhbHQpLCBbdmFsaWRIYW5kbGVyID0gV1RGTW92ZSh2YWxp
ZEhhbmRsZXIpLCBpbnZhbGlkSGFuZGxlciA9IFdURk1vdmUoaW52YWxpZEhhbmRsZXIpXShzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2
aWRlb0RldmljZXMsIE9wdGlvbmFsPFN0cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBt
dXRhYmxlIHsKKyAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VmFsaWRhdGVVc2VyTWVk
aWFSZXF1ZXN0Q29uc3RyYWludHMobV9jdXJyZW50VXNlck1lZGlhUmVxdWVzdC0+dXNlclJlcXVl
c3QoKSwgZGV2aWNlSURIYXNoU2FsdCksIFt2YWxpZEhhbmRsZXIgPSBXVEZNb3ZlKHZhbGlkSGFu
ZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RGTW92ZShpbnZhbGlkSGFuZGxlcildKHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBpbnZhbGlkQ29uc3RyYWludCwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2U+IGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IHZpZGVv
RGV2aWNlcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChpbnZhbGlkQ29uc3RyYWludCkKICAgICAgICAgICAgIGlu
dmFsaWRIYW5kbGVyKCppbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMDdmZTI5NjhjOTY2YzUyMzhiMjExNTQ2YTZkMWNlMGU4
NTg4NDE3Yy4uODE3MWVmNjJjYzc3YzBiMTEyZmRlNjFjOTM2Y2YzYjBkZmQ3YTVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZW51bSBjbGFzcyBXYXlsYW5kSW1wbCB7
IFVuc3VwcG9ydGVkLCBFR0wsIFNITSB9Owotc3RhdGljIE9wdGlvbmFsPFdheWxhbmRJbXBsPiBz
X3dheWxhbmRJbXBsOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2F5bGFuZEltcGw+IHNfd2F5bGFu
ZEltcGw7CiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQogc3RhdGljIGJvb2wgaXNFR0xJbWFnZUF2
YWlsYWJsZShib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAppbmRl
eCA2MGJhMDcyNmNkZjVkNWU0NmU5ZWE5NDhiMGUyZjFlNDBhNzRmYzEzLi5iZDI0OGY4NzQzODBh
M2FmYmEzZjY3YmE4NTBkOWYyYzgxNTQ3MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTUz
LDEwICs1MywxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE9wdGlvbmFsPGlu
dD4gc19kYW1hZ2VFdmVudEJhc2U7Ci1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUVycm9y
QmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CitzdGF0
aWMgc3RkOjpvcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXJyb3JCYXNlOwogI2lmIFVTRShHTFgpCi1z
dGF0aWMgT3B0aW9uYWw8aW50PiBzX2dseEVycm9yQmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PGludD4gc19nbHhFcnJvckJhc2U7CiAjZW5kaWYKIAogY2xhc3MgWERhbWFnZU5vdGlmaWVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRlVGltZVBpY2tl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJH
dGsuY3BwCmluZGV4IDQzYTkwNDU3NzgzNjJiNDRmZTQ3MWI1NGQ0MzhjNjJlYjhiY2M4MTQuLjJh
YzE1YzlkN2YxZjE5OTQ3YjQ0OTc5NDg2MjU1NWU5MTNlMjExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRlVGltZVBpY2tlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlja2VyR3RrLmNwcApAQCAtOTEs
NyArOTEsNyBAQCBzdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmluZyhjb25zdCBXZWJDb3JlOjpEYXRl
Q29tcG9uZW50cyYgdGltZSwgV2ViQ29yZTo6U2Vjb25kRgogICAgIHJldHVybiB7IH07CiB9CiAK
LXN0YXRpYyBTdHJpbmcgY2FsZW5kYXJEYXRlVG9TdHJpbmcoaW50IHllYXIsIGludCBtb250aCwg
aW50IGRheSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM+JiBkYXRlLCBX
ZWJDb3JlOjpTZWNvbmRGb3JtYXQgc2Vjb25kRm9ybWF0KQorc3RhdGljIFN0cmluZyBjYWxlbmRh
ckRhdGVUb1N0cmluZyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkRhdGVDb21wb25lbnRzPiYgZGF0ZSwgV2ViQ29yZTo6U2Vjb25kRm9y
bWF0IHNlY29uZEZvcm1hdCkKIHsKICAgICBhdXRvIHR5cGUgPSBkYXRlID8gZGF0ZS0+dHlwZSgp
IDogV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOwogICAgIHN3aXRjaCAodHlwZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlj
a2VyR3RrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJH
dGsuaAppbmRleCBmN2VhMGQyZTRmZjdjODVjYTk0Y2YyZjQ3ZTc0NTBmZTQ2NzViZTQzLi40Zjcz
Nzk2ZTE3NDkwZmVkZmYxY2NlZTNkMjc5OTcxNDNkODRhMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuaApAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOgogCiAgICAgR3RrV2lkZ2V0KiBtX3BvcG92ZXIgeyBudWxscHRyIH07CiAg
ICAgR3RrV2lkZ2V0KiBtX2NhbGVuZGFyIHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRhdGVDb21wb25lbnRzPiBtX2N1cnJlbnREYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM+IG1fY3VycmVudERhdGU7CiAgICAgV2ViQ29yZTo6U2Vjb25k
Rm9ybWF0IG1fc2Vjb25kRm9ybWF0IHsgV2ViQ29yZTo6U2Vjb25kRm9ybWF0OjpOb25lIH07CiAg
ICAgYm9vbCBtX2luVXBkYXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IGVhOTE2YTdkMThiNTJjZmNmYzI3
OWNhYWQxOTViYTY5YWNmMTgxMjEuLjVjMGVlZjI3NzZlODNmYjZkMWViMjNkNmU2MzY1ZmZjMDg0
MzAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0
b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYsIGNvbnN0IEVkaXRvclN0YXRlJiBuCiAgICAgcGFn
ZUNsaWVudCgpLnNlbGVjdGlvbkRpZENoYW5nZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQor
dm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1
dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRN
ZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0
YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFz
dGVib2FyZFByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0
ZWJvYXJkUHJveHlHdGsuY3BwCmluZGV4IDY3ZGNhNDcyMzc0YWYwODMyYWNiNWQwODkzNGY3YjM4
ZWU1OTFiN2MuLjJmMWMzYjVlNzEyMmMzNmViMmFhMGVlZDUwNDFjZTg0NzI2MzMyOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlH
dGsuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpkaWREZXN0
cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgICAgIG1fcHJpbWFyeVNlbGVjdGlv
bk93bmVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9y
RE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGNsaXBib2FyZCA9IENsaXBib2FyZDo6
Z2V0KHBhc3RlYm9hcmROYW1lKTsKICAgICBjbGlwYm9hcmQucmVhZEJ1ZmZlcihQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3JpZ2luLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
JiBidWZmZXIpIG11dGFibGUgewpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3Rv
bURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRh
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkgfHwgZGF0YS5zaXplKCkgPiAx
KSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBjdXN0b20gaXRl
bSBpbiB0aGUgY2xpcGJvYXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKaW5kZXggNGEzZGEyZDU2YzUzMzZjM2Y0ODA1MTQ5
M2ZlMTNkYmQxMzRkMjA3Mi4uNmRhNjIyMTc3OWY3MDZmNjllZmZiNmM0ZTFjOTFmYTEzYWE0MjNi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51
UHJveHlHdGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6
OnNlbGVjdEl0ZW0odW5zaWduZWQgaXRlbUluZGV4KQogICAgIG1fc2VsZWN0ZWRJdGVtID0gaXRl
bUluZGV4OwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0
aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFj
dGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRo
aXMsIGl0ZW1JbmRleC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9vcigtMSkpKTsKQEAg
LTQyOCw3ICs0MjgsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjYW5jZWxUcmFja2lu
ZygpCiAgICAgaGlkZVBvcHVwTWVudSgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gV2ViUG9w
dXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQz
Ml90IHRpbWUpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQb3B1cE1lbnVQcm94eUd0azo6
dHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGltZSkKIHsKICAg
ICBndW5pY2hhciBrZXljaGFyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGtleXZhbCk7CiAgICAg
aWYgKCFnX3VuaWNoYXJfaXNwcmludChrZXljaGFyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmgKaW5kZXggOTYzNTZkOGM5ZGZmOTBk
YzZiY2M5NzdiMDgzZjc2ZmIzNjJhM2Q3OS4uMzk2ZjM3M2NkNzU3NjFhMmEyYjMzNTIzNGUzNzhl
ZmIyNjcxNjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBv
cHVwTWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBv
cHVwTWVudVByb3h5R3RrLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2Fu
Y2VsVHJhY2tpbmcoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RJdGVtKHVu
c2lnbmVkIGl0ZW1JbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGFjdGl2YXRlSXRlbShPcHRpb25h
bDx1bnNpZ25lZD4gaXRlbUluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZhdGVJdGVtKHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCk7CiAKICAgICBib29sIGhhbmRsZUtleVBy
ZXNzKHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGltZXN0YW1wKTsKICAgICB2b2lkIGFjdGl2
YXRlU2VsZWN0ZWRJdGVtKCk7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVQb3B1cE1lbnUoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQzMl90IHNlbGVj
dGVkSW5kZXgpOwogICAgIHZvaWQgc2hvdygpOwogICAgIGJvb2wgYWN0aXZhdGVJdGVtQXRQYXRo
KEd0a1RyZWVQYXRoKik7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHR5cGVBaGVhZEZpbmRJbmRl
eCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQzMl90IHRpbWVzdGFtcCk7CisgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3Qg
dGltZXN0YW1wKTsKICAgICBib29sIHR5cGVBaGVhZEZpbmQodW5zaWduZWQga2V5dmFsLCB1aW50
MzJfdCB0aW1lc3RhbXApOwogCiAjaWYgIVVTRShHVEs0KQpAQCAtODYsNyArODYsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBWZWN0b3I8R1VuaXF1ZVB0cjxHdGtUcmVlUGF0aD4+IG1fcGF0
aHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0ZWRJdGVtOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0ZWRJdGVtOwogCiAgICAgLy8gVHlwZWFoZWFkIGZpbmQu
CiAgICAgZ3VuaWNoYXIgbV9yZXBlYXRpbmdDaGFyYWN0ZXIgeyAnXDAnIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgK
aW5kZXggNDkyYjAwNDQ0ZjQyZjg4NmZiZjhmYjk3MWZkNDJkZWJkMWZkOWM2YS4uMjI4NzI5Mjky
ZGY5ZTNhYjA1YzU3MDE0YTFiYzQ1NjI3NjNhMDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaApAQCAtNTAsOCAr
NTAsOCBAQCBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAgICBDR1BvaW50IGFkanVzdGVkT3Jp
Z2luIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1JlY3QgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZp
ZXdDb29yZGluYXRlcyB7IENHUmVjdFplcm8gfTsKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaW1h
Z2U7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRh
dGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF0aD4gdmlzaWJsZVBhdGg7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5kaWNhdG9yRGF0YTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhdGg+IHZpc2libGVQYXRoOwogICAgIFN0cmluZyBsaW5r
VGl0bGU7CiAgICAgVVJMIGxpbmtVUkw7CiAgICAgYm9vbCBwb3NzaWJseU5lZWRzRHJhZ1ByZXZp
ZXdVcGRhdGUgeyB0cnVlIH07CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwotICAgIE9w
dGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRl
bSAqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJh
Z1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBjb25zdDsKICAgICBVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJdGVtICopIGNvbnN0OwogICAgIEJsb2Nr
UHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopPiBkcm9wUHJldmlld1Byb3ZpZGVyKFVJ
RHJhZ0l0ZW0gKik7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIEJsb2NrUHRy
PHZvaWQoKT4gbV9kcmFnQ2FuY2VsU2V0RG93bkJsb2NrOwogICAgIEJsb2NrUHRyPHZvaWQoTlNB
cnJheTxVSURyYWdJdGVtICo+ICopPiBtX2FkZERyYWdJdGVtQ29tcGxldGlvbkJsb2NrOwogCi0g
ICAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBtX3N0YWdlZERyYWdTb3VyY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IG1fc3RhZ2VkRHJhZ1NvdXJjZTsKICAgICBWZWN0
b3I8RHJhZ1NvdXJjZVN0YXRlPiBtX2FjdGl2ZURyYWdTb3VyY2VzOwogICAgIFZlY3RvcjxJdGVt
QW5kUHJldmlld1Byb3ZpZGVyPiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVyczsKICAgICBW
ZWN0b3I8SXRlbUFuZFByZXZpZXc+IG1fZGVmYXVsdERyb3BQcmV2aWV3czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
CmluZGV4IGY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3Y2RhYTdlZDRkZWZiODguLjc0MDNiMzU2
ZGYyNzQxZjAxOGUzMGVhNTIxYjRlOGFlNzBhMTM5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMTUx
LDcgKzE1MSw3IEBAIHN0YXRpYyBib29sIGNhblVwZGF0ZVByZXZpZXdGb3JBY3RpdmVEcmFnU291
cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFj
dGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHJhZ0l0ZW0gKml0ZW0pIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPERyYWdTb3VyY2VTdGF0ZT4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjphY3RpdmVEcmFn
U291cmNlRm9ySXRlbShVSURyYWdJdGVtICppdGVtKSBjb25zdAogewogICAgIGlmICghW2l0ZW0u
cHJpdmF0ZUxvY2FsQ29udGV4dCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkNjM4OGMwODUwMTc5ZDk2YWEzMGM3Mjc0ZTU5
MGMzZWNlMTVhNTMyLi4yNmI3NDEyNmVmM2M4MDM2ZDE5MzA4YzY3MWFiYTUwODk5YTA5YWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApA
QCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1ha2VWaWV3QmxhbmsoYm9v
bCkgZmluYWw7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9w
dGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25h
cHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29tbWl0UG90
ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7CkBAIC0xNzUsOCArMTc1LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGVmZmVjdGl2ZVVzZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgY291bGROb3RSZXN0b3JlUGFnZVN0YXRlKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmLCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2Fs
ZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50Piwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50
JiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiwgZG91YmxlKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24m
LCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNl
dDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUlucHV0Q29udGV4
dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudCgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEFQSTo6T3BlblBhbmVs
UGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6Q29udGFjdEluZm8+PiYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGFjdFBp
Y2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
RHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2
b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBi
b29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZp
ZXdwb3J0TWF4aW11bVNjYWxlLCBib29sIG5vZGVJc1Jvb3RMZXZlbCkgb3ZlcnJpZGU7CkBAIC0y
NzMsNyArMjczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFn
SXRlbXNSZXF1ZXN0KGJvb2wgYWRkZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGlt
YWdlKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVF
ZGl0RHJhZ1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNh
cmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGU0MjhkYWMwYTBiNDJmZmQ2ZDgyYzI5
ZDY3YzM3NzFiNWY2NTE4ZWMuLmJhZGJlZmI2Y2NiNTYzNGFmZWJlOGExMjZiOWE3ODlhNWIyMzdh
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTU2OSw3ICs1NjksNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90
KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdl
Q2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJl
Y3Q+JiYpCiB7CiAgICAgcmV0dXJuIFttX3dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdOwogfQpA
QCAtNjA0LDEyICs2MDQsMTIgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y291bGROb3RSZXN0b3Jl
UGFnZVN0YXRlKCkKICAgICBbbV93ZWJWaWV3IF9jb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGVdOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZElu
c2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVzdG9yZVBh
Z2VTdGF0ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKQogewog
ICAgIFttX3dlYlZpZXcgX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246c2Nyb2xsUG9zaXRpb24g
c2Nyb2xsT3JpZ2luOnNjcm9sbE9yaWdpbiBwcmV2aW91c09ic2N1cmVkSW5zZXQ6b2JzY3VyZWRJ
bnNldHNPblNhdmUgc2NhbGU6c2NhbGVdOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0
b3JlUGFnZUNlbnRlckFuZFNjYWxlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRl
ciwgZG91YmxlIHNjYWxlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVzdG9yZVBhZ2VDZW50ZXJB
bmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91Ymxl
IHNjYWxlKQogewogICAgIFttX3dlYlZpZXcgX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRD
ZW50ZXI6Y2VudGVyIHNjYWxlOnNjYWxlXTsKIH0KQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFBh
Z2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJM
JiBzaGFyZURhdGEsIFdURgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9zaG93Q29udGFjdFBpY2tlcjpyZXF1ZXN0
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CkBA
IC05MjIsNyArOTIyLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6d2lsbFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90KCkKICAgICBbbV9jb250ZW50VmlldyBfd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBz
aG90XTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JE
YXRhPiBkYXRhKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRSZWNlaXZlRWRpdERyYWdTbmFw
c2hvdDpkYXRhXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FjdGlvblNoZWV0QXNzaXN0YW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5oCmluZGV4IDZhODg1Njk1MzFhODNiMWRkNmY3MWUxMDU4MDRh
ZmZkMmY2N2MyNDMuLjQzYTQ3MzQ1OTAzOGY3MjBkOThhZjMwMTFjNDAxZTkyMTMxZjk5MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQuaApAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tF
bGVtZW50QWN0aW9uVHlwZSk7CiAKIEBwcm90b2NvbCBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVs
ZWdhdGUgPE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tIChPcHRpb25hbDxXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQ7CistIChzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0
aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lz
dGFudCAqKWFzc2lzdGFudDsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgcGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVldEFj
dGlvbilhY3Rpb247CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMb2NhdGlvbjooQ0dQb2ludClsb2Nh
dGlvbjsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDooQ0dS
ZWN0KWJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggYjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUx
NjQwMzRhZDhjZjBlYWQ3YS4uMjUyN2UwZWZlNDc5YzNjNjk1ODc3OTU1YTlkMWY0MTQ5YjcxMjU5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0KQEAgLTk4LDcgKzk4LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgewogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0FjdGlvblNoZWV0QXNzaXN0
YW50RGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXQ+IF9p
bnRlcmFjdGlvblNoZWV0OwogICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4g
X2VsZW1lbnRJbmZvOwotICAgIE9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24+IF9wb3NpdGlvbkluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4gX3Bvc2l0aW9uSW5mb3JtYXRp
b247CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQog
ICAgIFJldGFpblB0cjxVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24+IF9kYXRhRGV0ZWN0b3JDb250
ZXh0TWVudUludGVyYWN0aW9uOwpAQCAtMzMzLDcgKzMzMyw3IEBAIC0gKHZvaWQpaW50ZXJhY3Rp
b25EaWRTdGFydFdpdGhQb3NpdGlvbkluZm9ybWF0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mCiAjZW5kaWYKIH0KIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbj4pY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KKy0gKHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pY3VycmVudFBv
c2l0aW9uSW5mb3JtYXRpb24KIHsKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKaW5kZXggN2M3ZjU4OGQyMDBhZWNhNmVmNGQxNGE2YmU1M2I5NjZkOTlmNDQz
OS4uYWViNDQ0MjkwZGI2NzY1Mjg4M2RhMDBlNTUzZmZhMWM2ZTQ3OWI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aApAQCAtMjk4LDcgKzI5OCw3IEBAIHVzaW5nIEltYWdlRXh0cmFjdGlvblJlcXVlc3RJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0CiAjaWYgSEFWRShV
SV9QT0lOVEVSX0lOVEVSQUNUSU9OKQogICAgIFJldGFpblB0cjxVSVBvaW50ZXJJbnRlcmFjdGlv
bj4gX3BvaW50ZXJJbnRlcmFjdGlvbjsKICAgICBCT09MIF9oYXNPdXRzdGFuZGluZ1BvaW50ZXJJ
bnRlcmFjdGlvblJlcXVlc3Q7Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEJsb2NrUHRyPHZvaWQoVUlQb2ludGVyUmVnaW9uICop
Pj4+IF9kZWZlcnJlZFBvaW50ZXJJbnRlcmFjdGlvblJlcXVlc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCwgQmxvY2tQ
dHI8dm9pZChVSVBvaW50ZXJSZWdpb24gKik+Pj4gX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9u
UmVxdWVzdDsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Np
c3RhbnQ+IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ7CkBAIC0zODIsMTAgKzM4MiwxMCBAQCB1
c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8
SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogICAgIFdlYktpdDo6V0tTZWxlY3Rpb25EcmF3aW5nSW5m
byBfbGFzdFNlbGVjdGlvbkRyYXdpbmdJbmZvOwogICAgIFJldGFpblB0cjxXS1RleHRSYW5nZT4g
X2NhY2hlZFNlbGVjdGVkVGV4dFJhbmdlOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdD4gX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdD4gX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owog
CiAgICAgdWludDY0X3QgX3Bvc2l0aW9uSW5mb3JtYXRpb25DYWxsYmFja0RlcHRoOwotICAgIFZl
Y3RvcjxPcHRpb25hbDxJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdEFuZENhbGxiYWNrPj4g
X3BlbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uSGFuZGxlcnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3RBbmRDYWxsYmFjaz4+IF9wZW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvbkhhbmRsZXJzOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPiBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI7
CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogCiAgICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlOwogCi0gICAgT3B0aW9uYWw8VUNoYXIzMj4gX2xhc3RJbnNlcnRlZENoYXJhY3Rl
clRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxV
Q2hhcjMyPiBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNl
bGVjdGlvbjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgV2ViS2l0OjpEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTsKQEAgLTQ4Niw4ICs0
ODYsOCBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQogICAgIFJldGFpblB0cjxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyPiBf
aW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25UaW1lb3V0R2VzdHVyZVJlY29n
bml6ZXI7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRp
Zmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRl
bnRpZmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBfZWxlbWVudFBlbmRpbmdJbWFn
ZUV4dHJhY3Rpb247CiAgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoV2ViS2l0OjpQcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbik+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0
cmFjdGlvbjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBSZXRhaW5QdHI8VUlNZW51PiBf
aW1hZ2VFeHRyYWN0aW9uQ29udGV4dE1lbnU7CkBAIC02MDcsNyArNjA3LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9PTClo
YXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qgcm91
dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcG9saWN5IHJvdXRp
bmdDb250ZXh0VUlEOihOU1N0cmluZyAqKWNvbnRleHRVSUQ7CiAtICh2b2lkKV9zaG93UnVuT3Bl
blBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgZnJhbWVJbmZvOihj
b25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmKWZyYW1lSW5mbyByZXN1bHRMaXN0ZW5lcjooV2Vi
S2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KilsaXN0ZW5lcjsKIC0gKHZvaWQp
X3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilz
aGFyZURhdGEgaW5SZWN0OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNv
bXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfc2hvd0NvbnRhY3RQaWNrZXI6KGNvbnN0IFdlYkNv
cmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRh
Y3RJbmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9zaG93Q29udGFjdFBp
Y2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYpcmVxdWVzdERhdGEgY29t
cGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwog
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWZpbGVQaWNrZXJBY2NlcHRlZFR5cGVJZGVudGlmaWVy
czsKIC0gKHZvaWQpZGlzbWlzc0ZpbGVQaWNrZXI7CiAtICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVu
dDooOjpXZWJFdmVudCAqKWV2ZW50IGV2ZW50V2FzSGFuZGxlZDooQk9PTClldmVudFdhc0hhbmRs
ZWQ7CkBAIC02NjUsNyArNjY1LDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQp
X2RpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0OihCT09MKWFkZGVkOwogLSAodm9p
ZClfc3RhcnREcmFnOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2UgaXRlbTooY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mKWl0ZW07CiAtICh2b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3Q7Ci0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdT
bmFwc2hvdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YTsK
IC0gKHZvaWQpX2RpZENoYW5nZURyYWdDYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1JlY3QgY3Vy
cmVudFJlY3Q6KENHUmVjdClyZWN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQ0NTcz
NDA0ZGNkMGJlNzNmYmI4ZWUwODI0NTJmNTIzZDAwNGNhOTcuLmE4NGU4ZDY5NWE4ZmUxMjg1YjMy
ZWU4OGExMmRkNjIzOTM0NDlkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcg
QEAgLSAodm9pZClzaGFyZVNoZWV0OihXS1NoYXJlU2hlZXQgKilzaGFyZVNoZWV0IHdpbGxTaG93
QWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWEKIAogI2VuZGlmCiAKLS0gKHZvaWQpX3Nob3dDb250
YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0
YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCist
ICh2b2lkKV9zaG93Q29udGFjdFBpY2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYpcmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYm
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgSEFWRShDT05UQUNUU1VJKQogICAgIF9jb250YWN0
UGlja2VyID0gYWRvcHROUyhbW1dLQ29udGFjdFBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNl
bGYud2ViVmlld10pOwpAQCAtNzQwMCw3ICs3NDAwLDcgQEAgLSAoQk9PTClpc0FueVRvdWNoT3Zl
ckFjdGl2ZUFyZWE6KE5TU2V0ICopdG91Y2hlcwogCiAjcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRh
dGlvbiBvZiBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUuCiAKLS0gKE9wdGlvbmFsPFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRp
b25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lz
dGFudAorLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsKICAgICBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5w
b2ludCk7CiAgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOwpAQCAtODAxNyw3ICs4
MDE3LDcgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Np
b246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8KICAgICAgICAgKm91dEdsb2JhbFBvaW50
ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1zdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRy
b3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRp
b25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IG9wZXJhdGlvbikKIHsKICAgICBpZiAob3BlcmF0aW9uKSB7CiAgICAgICAgIGlmICgq
b3BlcmF0aW9uID09IFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmUpCkBAIC04MDI4LDcgKzgw
MjgsNyBAQCBzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJh
Z09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcgogICAgIHJldHVybiBVSURyb3BPcGVyYXRp
b25DYW5jZWw7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBj
b3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9w
ZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNv
cmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJhdGlvbiBkcm9wT3Bl
cmF0aW9uKQogewogICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgewogICAgIGNhc2UgVUlEcm9w
T3BlcmF0aW9uQ2FuY2VsOgpAQCAtODExMiw3ICs4MTEyLDcgQEAgLSAodm9pZClfd2lsbFJlY2Vp
dmVFZGl0RHJhZ1NuYXBzaG90CiAgICAgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90ID0gWUVT
OwogfQogCi0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGEKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRh
CiB7CiAgICAgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90ID0gTk87CiAKQEAgLTgxMjMsNyAr
ODEyMyw3IEBAIC0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQogICAgICAgICBhY3Rpb24oKTsKIH0KIAot
LSAodm9pZClfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6KE9wdGlvbmFsPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2b2lkKV9kZWxpdmVyRGVsYXllZERy
b3BQcmV2aWV3SWZQb3NzaWJsZTooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4pZGF0YQogewogICAgIGlmICghX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90KQogICAg
ICAgICByZXR1cm47CkBAIC04NTgzLDcgKzg1ODMsNyBAQCAtICh2b2lkKXNlbGVjdFBvc2l0aW9u
QXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJl
cQogCiAtICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOihDR1NpemUpc2l6ZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlUZXh0UGxhY2Vob2xkZXIgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6Oklu
dFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNl
bGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYgcGxhY2Vob2xkZXIpIHsK
KyAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgeyBzaXpl
IH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgewogICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmIHx8ICFbc3Ryb25nU2VsZiB3ZWJWaWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRleCA3YjY1
MDVmYTc4ZTY2MzE0Njc5ZDQ4ZjY2ZWMyZDkwZGFkNzE0NGMzLi4zOTI3ZTJjY2QxY2ExMTViMDA2
ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTk3LDcgKzk3
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciB7CiAgICAg
aWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlSW50ZXJuYWw+IF9zY3JvbGxhYmxlOwogICAgIFJldGFp
blB0cjxDQURpc3BsYXlMaW5rPiBfZGlzcGxheUxpbms7CiAKLSAgICBPcHRpb25hbDxXZWJLaXQ6
OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6S2V5Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xsOwogCiAgICAgQk9PTCBfc2Nyb2xsVHJp
Z2dlcmluZ0tleUlzUHJlc3NlZDsKIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBXZWJDb3Jl
OjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIH0KIH0KIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRT
Y3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKill
dmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJl
UmVjb2duaXplci5tbQppbmRleCAyODFjMmZjOGEwZDA5ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRk
NTdhLi45NDg0MzlhN2MyYTY1MGNjMzlhMzdhYWY3ZWEyNDdhMmFkZjM2MzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIubW0KQEAgLTY5LDggKzY5LDggQEAgQGltcGxlbWVudGF0aW9uIFdLTW91c2VHZXN0dXJlUmVj
b2duaXplciB7CiAgICAgQk9PTCBfdG91Y2hpbmc7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50PiBfbGFzdEV2ZW50OwotICAgIE9wdGlvbmFsPENHUG9p
bnQ+IF9sYXN0TG9jYXRpb247Ci0gICAgT3B0aW9uYWw8VUlFdmVudEJ1dHRvbk1hc2s+IF9wcmVz
c2VkQnV0dG9uTWFzazsKKyAgICBzdGQ6Om9wdGlvbmFsPENHUG9pbnQ+IF9sYXN0TG9jYXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxVSUV2ZW50QnV0dG9uTWFzaz4gX3ByZXNzZWRCdXR0b25NYXNr
OwogfQogCiAtICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wpZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggZDAxMDJiYzhlNjQ4MWYyNDQ1NjUyYWI2Mjg4
NTcxNDQwMTE5N2E4Ny4uYjllNTBhOWMzMjgzY2U3YWZkMTMxOTU4ZWY2ZDBkYWNjMWE0MDNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC02MSw3ICs2MSw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcgewogICAgIE5TVUludGVnZXIgX2ZpbmRTdHJp
bmdDb3VudDsKICAgICBOU1VJbnRlZ2VyIF9maW5kU3RyaW5nTWF4Q291bnQ7CiAgICAgUmV0YWlu
UHRyPFVJVmlldz4gX2ZpeGVkT3ZlcmxheVZpZXc7Ci0gICAgT3B0aW9uYWw8TlNVSW50ZWdlcj4g
X2ZvY3VzZWRTZWFyY2hSZXN1bHRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5TVUludGVnZXI+
IF9mb2N1c2VkU2VhcmNoUmVzdWx0SW5kZXg7CiAgICAgTlNJbnRlZ2VyIF9mb2N1c2VkU2VhcmNo
UmVzdWx0UGVuZGluZ09mZnNldDsKICAgICBSZXRhaW5QdHI8UERGSG9zdFZpZXdDb250cm9sbGVy
PiBfaG9zdFZpZXdDb250cm9sbGVyOwogICAgIENHU2l6ZSBfb3ZlcmxhaWRBY2Nlc3NvcnlWaWV3
c0luc2V0OwpAQCAtNTE4LDcgKzUxOCw3IEBAIC0gKHZvaWQpcGRmSG9zdFZpZXdDb250cm9sbGVy
RXh0ZW5zaW9uUHJvY2Vzc0RpZENyYXNoOihQREZIb3N0Vmlld0NvbnRyb2xsZXIgKiljCiAKICNw
cmFnbWEgbWFyayBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKIAotLSAoT3B0aW9uYWw8
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pcG9zaXRpb25JbmZvcm1h
dGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50CistIChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudAogewogICAgIHJldHVybiBfcG9zaXRpb25J
bmZvcm1hdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaApp
bmRleCBkZGI2YzBjZmFmOGNlMzA2YjQyODM5MGU1M2NmZmRlZjlkY2RhZTMzLi43MGIxZjk0YTc2
OWFlN2NmMmMwMDg3NzdiNzI4ODUwZDA1MjVmYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgLy8gV2ViQ29yZTo6V2ViQ29yZU1vdGlvbk1hbmFnZXJDbGllbnQKICAgICB2b2lkIG9yaWVu
dGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgZmlu
YWw7Ci0gICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUsIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4sIE9w
dGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgbW90aW9uQ2hhbmdlZChkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tCmluZGV4IDJjNjA3M2I3YjQ1YjI4M2VkN2Fm
YmQ5MjI4NjFhNGM4YzczOWYxZjUuLjEzNjc3NjNhNGM2NTkyNzRiM2QwNTUwMGQxYmI2NDExMzVm
OTM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbQpAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eTo6b3JpZW50YXRpb25DaGFuZ2VkKGRvdWJsZSBhbHBoYSwgZAogICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpEZXZpY2VPcmllbnRh
dGlvbkNoYW5nZWQoYWxwaGEsIGJldGEsIGdhbW1hLCBjb21wYXNzSGVhZGluZywgY29tcGFzc0Fj
Y3VyYWN5KSk7CiB9CiAKLXZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Ojptb3Rpb25DaGFuZ2VkKGRvdWJsZSB4QWNjZWxlcmF0aW9uLCBkb3VibGUgeUFjY2VsZXJh
dGlvbiwgZG91YmxlIHpBY2NlbGVyYXRpb24sIGRvdWJsZSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwgZG91YmxlIHlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgekFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIE9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0
ZSwgT3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IHpSb3Rh
dGlvblJhdGUpCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eTo6
bW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24s
IGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHlSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB6Um90YXRpb25SYXRlKQogewogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpEZXZpY2VNb3Rpb25DaGFuZ2VkKHhBY2NlbGVy
YXRpb24sIHlBY2NlbGVyYXRpb24sIHpBY2NlbGVyYXRpb24sIHhBY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgekFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIHhSb3RhdGlvblJhdGUsIHlSb3RhdGlvblJhdGUsIHpSb3RhdGlvblJh
dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCmluZGV4IDgxMGJlMTdjMWM5NmQ2OWMyZTQ5ZTllMzdhOGFmOWU5NmZlNjRjN2UuLjIwZjIw
MzNmOWQ3NDFlNzE1YTRiYzNjZTE0ZjIwZGE5NGVjMjc4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlv
bmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soeyB9KTsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3BvcnRBcmd1bWVudHMpCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBzdGQ6Om9w
dGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAgaWYg
KHZpZXdwb3J0QXJndW1lbnRzID09IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNl
U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0
KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAt
ODYwLDEyICs4NjAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdWxkTm90UmVzdG9yZVBhZ2VT
dGF0ZSgpCiAgICAgcGFnZUNsaWVudCgpLmNvdWxkTm90UmVzdG9yZVBhZ2VTdGF0ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVBhZ2VTdGF0ZShPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Ny
b2xsT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJbnNldHNP
blNhdmUsIGRvdWJsZSBzY2FsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlUGFnZVN0YXRl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRC
b3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLnJlc3RvcmVQYWdlU3RhdGUoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbE9yaWdpbiwg
b2JzY3VyZWRJbnNldHNPblNhdmUsIHNjYWxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gY2Vu
dGVyLCBkb3VibGUgc2NhbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVBhZ2VDZW50ZXJB
bmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91Ymxl
IHNjYWxlKQogewogICAgIHBhZ2VDbGllbnQoKS5yZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKGNl
bnRlciwgc2NhbGUpOwogfQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG8KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkKICAgICBwYWdlQ2xpZW50KCkud2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFs
PFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRSZWNlaXZl
RWRpdERyYWdTbmFwc2hvdChkYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCmluZGV4
IDQ3ZjA0NTkzM2ZkMTY3NWJjYTViMjkwZmJjOWEwMjNmYzgzOGUyNmIuLmZhMDQxNmI3NTU0MTg2
Y2Q3NmM1ODU4NWYzYmI0MjI0MWM3NDFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQpA
QCAtNzgsNyArNzgsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGU+
PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc3VibWl0QWN0aW9uTmFtZTsK
ICAgICBSZXRhaW5QdHI8UFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXI+IF9jcm93bklucHV0U2VxdWVu
Y2VyOwotICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9pbml0aWFsU2Nyb2xsVmlld0NvbnRlbnRPZmZz
ZXQ7CisgICAgc3RkOjpvcHRpb25hbDxDR1BvaW50PiBfaW5pdGlhbFNjcm9sbFZpZXdDb250ZW50
T2Zmc2V0OwogICAgIEJPT0wgX2hhc1BlbmRpbmdGb2N1c1JlcXVlc3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpYndwZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJX
UEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94
eUxpYldQRS5jcHAKaW5kZXggOWE1NzZhMmM5NmJiNTlmZjlkMGIzYjk5MjM5Y2VkNTUyZjU4Yzdm
OC4uMDZjYzlhNmExNzRhMTMzMjNlNWQ1YTRlODY2OTQ0MGNlNjIxZmRkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94
eUxpYldQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmcKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVj
dGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKCkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCmluZGV4IDBlN2Q0OTQxMGNkNjcx
OWQ0MmYwMTE3ODJjYWRhZThlMGU0ZjE2NDUuLjk3MTM0NDk2ZjYxNzE0ZjRhNDEwYzlkM2JhOWM4
NDg0MzNjMzJhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5r
LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRGlzcGxheUxpbms6Om5vdGlmeU9ic2VydmVy
c0Rpc3BsYXlXYXNSZWZyZXNoZWQoKQogICAgIExvY2tlciBsb2NrZXIgeyBtX29ic2VydmVyc0xv
Y2sgfTsKIAogICAgIGF1dG8gbWF4RnJhbWVzUGVyU2Vjb25kID0gW10oY29uc3QgVmVjdG9yPE9i
c2VydmVySW5mbz4mIG9ic2VydmVycykgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1BlclNl
Y29uZDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4KG9ic2VydmVy
c01heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKTsKICAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZy5jcHAKaW5kZXggZWFkYWQ0ZThmYTMzNjY1ODQ3ZTE3MmZmNWU5MmMwZTQ2Yjlh
MTU2MS4uMmVhN2VkYjRjNWJhYWRmOTY3MDZmZmIxZjI3MjViNjljNWY1MmU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9y
eUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlv
bmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+
Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQogICAgIHsKICAgICAgICAg
dWludDMyX3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdW5kZXJseWlu
Z0VudW1WYWx1ZTsKQEAgLTc5OCw3ICs3OTgsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgdm9pZCBk
ZWNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YURlY29kZXImIGRlY29kZXIsIEhU
VFBCb2R5OjpFbGVtZW50JiBmb3JtRGF0YUVsZW1lbnQpCiB7Ci0gICAgT3B0aW9uYWw8Rm9ybURh
dGFFbGVtZW50VHlwZT4gZWxlbWVudFR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxGb3JtRGF0YUVs
ZW1lbnRUeXBlPiBlbGVtZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGVsZW1lbnRUeXBlOwogICAg
IGlmICghZWxlbWVudFR5cGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggOWQ0YTAxMzE0ODk0M2Y5YmQz
OWFiN2Q3MmQyODNjMDM4ZDM0YzM1My4uODk0NDJjZDkyMzMyNjRkMDliZTBlMzgwY2M2NjAxM2Yz
ZGQ5MjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0
aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFZpZXdTbmFw
c2hvdD4gdGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNQUNfR0VTVFVS
RV9FVkVOVFMpCiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDMzNjQyYzJmMzUyM2Y2
YTBjYWZhMTM3MzNkY2E2OTdlNGM1NTJkNDYuLmM0YzA1NGZkNWRiM2Y3YWM4NzhmOThkMzFlZDk5
MmY0NThhMDEyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTYyNSw3ICs2MjUsNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1w
bDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW1wbC0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogfQogCi1SZWZQdHI8Vmll
d1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRh
a2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKQogewogICAg
IHJldHVybiBtX2ltcGwtPnRha2VWaWV3U25hcHNob3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcAppbmRleCA0OTQxOTA4NThiN2I0
NzliZmE3OWQ5MzAxYmYzYWE5MDIwN2M4MjNjLi5hZjhiZDlhZDYyYTllYjM3NzY4OWY0NjYyMmY5
NzYxZGMzOTFjNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0
ZW1TaGltUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIGNv
bm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTZWNJdGVtU2hp
bVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQog
Ci12b2lkIFNlY0l0ZW1TaGltUHJveHk6OnNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1
ZXN0RGF0YSYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVt
UmVzcG9uc2VEYXRhPiYmKT4mJiByZXNwb25zZSkKK3ZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6c2Vj
SXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYgcmVz
cG9uc2UpCiB7CiAgICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUoKSkgewogICAgIGNhc2UgU2VjSXRl
bVJlcXVlc3REYXRhOjpJbnZhbGlkOgpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNlY0l0ZW1TaGlt
UHJveHk6OnNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCwg
Q29tcGxldAogICAgIH0KIH0KIAotdm9pZCBTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVz
dFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRl
bVJlcXVlc3REYXRhJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vj
SXRlbVJlcXVlc3QoZGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKaW5kZXggODFlNDIx
YzZhYzk0MDE5NGI3MWIxYzliOTc4MzBhMzg1M2UzYTgyNi4uYjQ2YjU4OWFlMDNjMmRmNzVjOWI1
ZDk5M2MzYjE0Nzc3MjkxN2Q4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBzZWNJdGVtUmVxdWVzdChjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmKTsKLSAgICB2b2lk
IHNlY0l0ZW1SZXF1ZXN0U3luYyhjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmKTsKKyAgICB2
b2lkIHNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYmKT4mJik7Cisg
ICAgdm9pZCBzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYp
PiYmKTsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAwZmI1NzA5OGM0NzViNGRhZGNlYTJmN2JkY2RlMWMxYjgzOWNjOWNlLi5kOTc1NmEzMDll
YjE4NGIzYWYwNGRhNzQxM2Q1NTNhZTUwMzE2ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMs
OCArMjMsOCBAQAogbWVzc2FnZXMgLT4gU2VjSXRlbVNoaW1Qcm94eSB7CiAKICNpZiBFTkFCTEUo
U0VDX0lURU1fU0hJTSkKLSAgICBTZWNJdGVtUmVxdWVzdFN5bmMoV2ViS2l0OjpTZWNJdGVtUmVx
dWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0
YT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCi0gICAgU2VjSXRlbVJlcXVlc3QoV2ViS2l0OjpTZWNJ
dGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U2VjSXRlbVJlc3Bv
bnNlRGF0YT4gcmVzcG9uc2UpIEFzeW5jCisgICAgU2VjSXRlbVJlcXVlc3RTeW5jKFdlYktpdDo6
U2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3QpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U2Vj
SXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCisgICAgU2VjSXRlbVJlcXVl
c3QoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VEYXRhPiByZXNwb25zZSkgQXN5bmMKICNlbmRpZgogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCmluZGV4IGQ1ZDljODA0OGM0NzUxODBiMjVmMWUyYTMxYTVlODdkNmM1YzhkYTAu
LjMyM2JkMzU5N2Y0OTQ2ZWI3MWUwNDYyZDE5NzIyZWFlNWJhYjA3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBA
IC01MDcsNyArNTA3LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0
TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnUKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gcmV2ZWFsSW1hZ2VJ
dGVtOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gcmV2ZWFsSW1h
Z2VJdGVtOwogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgZmlsdGVyZWRJdGVt
cy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoYXV0byYgaXRlbSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMjE3ZTlkY2Y4MDk0MmY3
MmY5YzYyOTY0YjUxMmY2ZDM5YmM0ZTRmNi4uNjU3ZWM0MDJjYmQxNTA3NWIxZjgyNDRiOTM4MzQ4
ZmViY2EzOWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om9wZW5QREZG
cm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKEZyYW1lSW5mb0RhdGEKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51
LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNv
bnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIWNvbnRleHRNZW51Lml0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4IDc5ZDA1YWE5MTkwYWVjMDM2YzUyOTU1
MWY4MDdmNmE5Y2Q4ODg2MDEuLmRjZWE5YzFkY2VkMWQxNDBmYTAxYTg1ZGU4OWJmZmRkN2Y1YjU3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlX
UEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2Vi
VmlldyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRo
UmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1dE1ldGhvZFN0YXRlKHN0
ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKICAgICBzdGF0aWNfY2Fz
dDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZN
b3ZlKHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRoblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Qcm9jZXNzLmNwcAppbmRleCBkMmUwZTk5MjUyMTQ2ZjY0NDE5MjQzYWYyMWYwOTNkZWFl
NDk5NzFiLi5iMzU1ODVmYjU4NjFiNTkyNDM2Mjc3ZGYyNDRkMTEyNGYwMDYwMDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgV2ViQXV0aG5Qcm9jZXNzOjp+V2ViQXV0aG5Qcm9jZXNzKCkKIHsKIH0K
IAotdm9pZCBXZWJBdXRoblByb2Nlc3M6OmNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dGhuUHJvY2Vzczo6Y3JlYXRlV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzKFBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gaXBjQ29ubmVjdGlvbiA9IGNyZWF0ZUlQQ0Nvbm5lY3Rpb25QYWlyKCk7CiAgICAgaWYg
KCFpcGNDb25uZWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRoblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuUHJvY2Vzcy5oCmluZGV4IGVlMWVkZmM1MDdiMjQzNjQzNTczNDNkM2I1Y2I3Nzk0ODI3
ZjE1NTAuLjVhYzlmYzgyOWE1YzA0NGFiZTZjOGNjMzYzN2M2NjdmYTI5YTQ2YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5oCkBAIC03OSw3
ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBp
bml0aWFsaXplV2ViQXV0aG5Qcm9jZXNzKFdlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKLSAgICB2b2lkIGNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9p
ZCBwcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpOwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5YTA5MjEy
NTJiZmM4OGY3YWViNzM2MTk0YmViZTZiZDI2MDc0YWEzLi4yNjc3Y2FmODNmNmU0Y2NmZjY1ZTVh
N2ExYmU5NmE5MDEwMGQ1ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRoblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBA
IG1lc3NhZ2VzIC0+IFdlYkF1dGhuUHJvY2VzcyB7CiAgICAgSW5pdGlhbGl6ZVdlYkF1dGhuUHJv
Y2VzcyhzdHJ1Y3QgV2ViS2l0OjpXZWJBdXRoblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9y
IGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVy
KSBBc3luYworICAgIENyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogICAgIFByb2Nl
c3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKICAgICBQcm9jZXNzRGlkVHJhbnNpdGlvblRv
QmFja2dyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGE0YjNmYzU0YmUwY2YxNWZl
NWMyOWY0YjEwNDRiZGU2MTE2ZWEyNjEuLmNlYzIzNGFmYTI4MTgyNWVkYzlmOTExZjE4YTE1NDkz
NDM0MzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKQog
I2VuZGlmCiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxp
ZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5l
dHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykKIHsKICAgICBpZiAoIW1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzKQogICAgICAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrcyA9
IHBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzKCk7CkBAIC0xMTMsMzEgKzExMywzMSBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hh
bnRTZXNzaW9uKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihXVEZNb3ZlKHVwZGF0ZSkpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDb21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxl
UGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVQYXlt
ZW50TWV0aG9kTW9kZUNoYW5nZShXVEZNb3ZlKHVwZGF0ZSkpKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mJiByZXN1bHQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRlUGF5bWVudFNlc3Npb24ocmVzdWx0KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggNTNmMWQ4MjAwZDA3Mzk0MGQ3NjI3YTA3ZWZjOTJl
NzE3Njg1M2FjNy4uYzgxZjJiNGM0ZTUxNWJkZWYwMTMyYjJiMTcxMTlkZjUyYTFkNjNjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaApAQCAtNTksMTkgKzU5LDE5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICAvLyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNo
b3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlT
aGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBh
eW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1l
dGhvZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0
aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZ
TUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWJvcnRQYXlt
ZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSBv
dmVycmlkZTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUGFnZSYgbV93
ZWJQYWdlOwogCi0gICAgT3B0aW9uYWw8QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzU2V0PiBtX2F2
YWlsYWJsZVBheW1lbnROZXR3b3JrczsKKyAgICBzdGQ6Om9wdGlvbmFsPEF2YWlsYWJsZVBheW1l
bnROZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMTNm
YzU2NTRiYTM5NmM5MTJkNTkzYzU2OTdkOTIwNzUxZDQ4MjNlYy4uYWZkY2UzZTdjYzAyZDI4Njc0
MDliOTY3ZWZhNWUwZmI5ZmYxNmYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHAKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6Ondp
bGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZAogICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gb3B0aW9uYWxGcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgT3B0
aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IG9wdGlvbmFsRnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVj
dG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KFdlYkNvcmU6OkZyYW1lSWRlbgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQsIGVycm9yVHlw
ZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNTAw
LDcgKzUwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxk
RnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGNo
aWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBj
b252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAg
IHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNv
cmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6
OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNjU0LDcgKzY1NCw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBtYWlu
VmlldyA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCiAgICAgV2Vi
Q29yZTo6SW50UmVjdCByZXN1bHRFbGVtZW50Qm91bmRzOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50ZXJQb2ludDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50ZXJQb2ludDsKICAgICBib29sIGlzT2Jz
Y3VyZWQgPSBmYWxzZTsKIAogICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkgewpAQCAtNzI5
LDcgKzcyOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1l
bnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQ
b2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1l
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc5LDcgKzc3OSw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9h
ZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIFZlY3RvcjxTdHJpbmc+JiYg
ZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxl
c0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhh
bmRsZSwgVmVjdG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtODQxLDkgKzg0MSw5IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0
IHNuYXBzaG90RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0
YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3Qo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKLSAgICBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KHBhZ2VJRCwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIFtwYWdlSUQsIGZy
YW1lSUQsIGNhbGxiYWNrSURdIChPcHRpb25hbDxTdHJpbmc+IGVycm9yU3RyaW5nLCBXZWJDb3Jl
OjpJbnRSZWN0JiYgcmVjdCkgeworICAgIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QocGFnZUlE
LCBmcmFtZUlELCBub2RlSGFuZGxlLCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3
cG9ydCwgW3BhZ2VJRCwgZnJhbWVJRCwgY2FsbGJhY2tJRF0gKHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBlcnJvclN0cmluZywgV2ViQ29yZTo6SW50UmVjdCYmIHJlY3QpIHsKICAgICAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hv
dChjYWxsYmFja0lELCBoYW5kbGUsICplcnJvclN0cmluZyksIDApOwpAQCAtODY3LDcgKzg2Nyw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6c25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9v
bCBjbGlwVG9WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIFdlYkNvcmU6
OkludFJlY3QoZnJhbWUtPmNvcmVGcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmRvY3VtZW50
VG9DbGllbnRSZWN0KHNuYXBzaG90UmVjdCkpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpn
ZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTM3LDcg
KzkzNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZy
YW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJ
RCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXgg
YzU5ZTI0NzQ0ZTVhZGVjNjg0OGQ5ZmFjMmExYjc2YWYwZjgwZWIxZC4uMDFiMWM0MjkyNzkwZDAy
NzRiMDliNGMyYjFmMGY2NjRkZTRkOGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
aApAQCAtNzAsMTggKzcwLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIENh
bGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9y
PFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQs
IE9wdGlvbmFsPGRvdWJsZT4gY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4pPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJik7Ci0gICAgdm9pZCByZXNvbHZl
UGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOwotICAgIHZvaWQgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0g
ICAgdm9pZCBzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUs
IFZlY3RvcjxTdHJpbmc+JiYgZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJv
b2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCYmKT4mJik7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIGNvb2tp
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAg
IHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+
JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmKTsKKyAgICB2b2lk
IHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50
UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2
b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBz
ZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVj
dG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNj
cmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+JiYpOworICAgIHZvaWQgZ2V0
Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVs
ZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklk
ZW50aWZpZXI7CiAgICAgSlNDOjpQcml2YXRlTmFtZSBtX3NjcmlwdE9iamVjdElkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCA1
OWUzMDhmNmI4YjU5YWFjNzdkZmRkOGQ5NGFiMmFhM2ZkOGRlYzA3Li5hOGQ5ZGRlNzU1NTlkNWE4
OWE1YTI2YzFhMzQ5ZDEwMTY5YmZkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIzICsyMSwyMyBAQAogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgewot
ICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+IGNhbGxiYWNrVGltZW91dCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNo
aWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhh
bmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKSBBc3luYwotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFy
ZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBBc3luYworICAg
IFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgdWlu
dDMyX3Qgb3JkaW5hbCkgLT4gKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBBc3luYworICAgIFJl
c29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgQXN5bmMKKyAgICBS
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBu
YW1lKSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVu
dEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCkgQXN5bmMKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMK
KyAgICBDb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFz
eW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNl
bGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgU2V0
RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSkgQXN5bmMKKyAgICBTZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKSAt
PiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3Jl
ZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBTbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCkgQXN5bmMKKyAgICBTbmFwc2hvdFJlY3RGb3JTY3Jl
ZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQpIC0+IChzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QpIEFzeW5jCiAKLSAg
ICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAg
ICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCisgICAgR2V0Q29va2llc0ZvckZyYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAgIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggYTA3MDE3NzNh
NGE4YmY5YzljNzViY2M0MWJjMGViYTgwOWE4YWY5NC4uM2FmNjA5NTljN2YzOGY4Nzc4NzE5Nzk1
NDkwNWY0NWUwNTMyZmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAg
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1f
bWVzc2FnZVJlY2VpdmVyTWFwOyB9CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHZvaWQg
c2V0QXVkaXRUb2tlbihPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fYXVk
aXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9CisgICAgdm9pZCBzZXRBdWRp
dFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX2F1ZGl0
VG9rZW4gPSBhdWRpdFRva2VuOyB9CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBA
IC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBt
X21lc3NhZ2VSZWNlaXZlck1hcDsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgT3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9hdWRpdFRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
SW5mby5oCmluZGV4IDI3MzNlZTFkZGFhY2ZjMTM5MTVmNGExYzkxMjEyZDdlNmRlZDAwNGMuLmNm
Mzk5MzgxMzY1MGM4NzZiMWQxMGExZjI2YWI2YzQ3Y2E0NmM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBHUFVQcm9jZXNzQ29u
bmVjdGlvbkluZm8gewogICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uOwogI2lmIEhBVkUo
QVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKIAogICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA0ZmE3YzI4
MmZiZDA4MmNmOGI2N2U4MTQwZjRlNTU2NjAzZTFmNTcxLi5lM2IzZjdkY2U1OGYzMjcxMzQzOGRm
YmJiZTA0YjcwOGYwOWMxNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
LCBQcmUKICAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7CiB9CiAKLU9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0
LCBzcmNSZWN0LCBtX2JpdG1hcC0+ZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IGI2YTk0ZjEwMzExMDQ3ZjkyMTg5M2I2NzRl
MTE3MmUyNzNlMzY0NjcuLjE4NDdmYTZmYmRlNDA2ZWQ2YTZhZDA2MDQ5OGI4ODVjNWUzNmJiM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4g
Y29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBp
eGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1h
dCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBkNDdjOTNiNDFjZDExODU2MDA3
YzM2OGEzZDFkM2JkZGFkNTA0ZjQxLi5kZDJlODBiNjVkMjM0ZDY5OGU5MGM4M2EwYzVkYzM5OTU4
N2RkN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzE1
LDcgKzMxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5z
dGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOwogICAgIHZvaWQgbXVsdGlE
cmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5h
bDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0
LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCBkYjlhMTkxYzcyM2Qw
MWZlOGM3NGQxNjNmYTlhYWUzMTk5MjYwMDdiLi43ODFkZjE4ODgyOWQ0YjNiMzk1NzJhZjYwMDdm
MTVjMWVmNDI4MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTIzNjYsOSArMjM2Niw5
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlCiAgICAgfQogfQogCi1PcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVm
ZmVyPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4g
cmV0dXJuVmFsdWUgPSB7IH07CiAgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKICAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpKTsKICAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaAppbmRleCA4MzFkZWEyZWJiZTViNmI5NmYxNmM5M2RkM2M0ODQ1OTFi
M2U1NDgyLi42ZGNmMWQ1MmYxYThhMTk4MTdmNWE1MWMwYmQwMzk3MzQ5YzkxNDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUs
IHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCBv
dmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMDEsNyArMjAxLDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4
ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDE3
YTYyZTNjOTBhMTcwZjUzMDZkY2E1ZTU5MzNjOTk1N2MzZmZiZGEuLjAxNDU4NzE2ODdjNDliMGIx
NTZiZWM4NjIwOTgyZTNiYzA1NmRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFy
ZWRNZW1vcnkoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi1TdHJp
bmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorU3RyaW5nIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJl
c2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRl
ZCgpOwogCkBAIC0yMTEsNyArMjExLDcgQEAgU3RyaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVQKICAgICBy
ZXR1cm4gdXJsU3RyaW5nOwogfQogCi1WZWN0b3I8dWludDhfdD4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorVmVjdG9yPHVpbnQ4X3Q+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmREZWZlcnJlZFdh
a2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaAppbmRleCAxZTJmYzNmZTM3Y2ZhZTkxMjBkYzE4ZTBkYWZjZTlmNjlkMDJkYzBiLi42MzE0
OTY3MGEzNTk0ZTI1YTJkYTVjZDE5NzYxMTQ2MWM2MTc5NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogCiAgICAgLy8g
TWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwotICAgIFN0cmluZyBnZXREYXRh
VVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFn
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgU3RyaW5nIGdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRh
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gZ2V0U2hhcmVhYmxlQml0bWFwKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpAQCAtMTQwLDExICsxNDAsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhh
c2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAg
ICBEZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRl
bnRpZmllcnNPZlJldXNhYmxlSGFuZGxlczsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOwotICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBt
X2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cz4gbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHM7CiAgICAgdW5z
aWduZWQgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCB7IDAgfTsK
IAotICAgIE9wdGlvbmFsPElQQzo6U2VtYXBob3JlPiBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3Jl
OworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTZW1hcGhvcmU+IG1fZ2V0UGl4ZWxCdWZmZXJTZW1h
cGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1l
bW9yeTsKICAgICB1aW50NjRfdCBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5TGVuZ3RoIHsg
MCB9OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5VGltZXIgeyAqdGhpcywgJlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdl
dFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGNmMzlhMWM0
NjA0YmQxMTZlMDM5OGY4YTU1ZjlmNTU1ZmJmNTI4Ni4uNjBlODllMTQ2MDlkZmNlMGRmMWRhZDM2
ODVkYWZkODQ4ODUyYzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTAyLDE5ICsxMDIsMTkgQEAg
dm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEYKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91YmxlPiwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6dG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgUHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZDo6dG9EYXRhKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPGRvdWJsZT4pIGNv
bnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
Ojp0b0RhdGEoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBjb25zdAogewog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRSZWN0
JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
LCBjb25zdCBJbnRSZWN0JikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzNzBiZTFmMjE0ZjgxNDU2ZmFh
MjU1MDcxNzNmYzVkM2QwYTMzNWFkLi43MzkzNWUyYjM3MDhmMDZlYTc4Nzc1NTBmYTEzMWQ5Yjli
ODBlN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHksIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3Rvcjx1aW50OF90
PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0
UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRV
cHBlckxlZnRDb3JuZXIgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgKaW5kZXggMWRj
NTkwYTU1NzhlNDdjYmViODMxNTNhYmQ3MzRjZGFhYjlkNzA3Zi4uZGI3OWMxNTk1MjJkZGY0ODEx
MmI2ZTg0NWUwNzZmMjE2ZDdhMWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oCkBAIC0z
MiwxMSArMzIsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nIHsKLSAgICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNBQzsKLSAgICBPcHRp
b25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3lz
dGVtSGFzQUM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92ZXJyaWRlcz4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5EYXRhT3ZlcnJpZGVzPiB2cDlTY3JlZW5TaXpl
QW5kU2NhbGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00OCwyNCArNDgsMjQgQEAgc3RydWN0IE1lZGlh
T3ZlcnJpZGVzRm9yVGVzdGluZyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNBQzsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNBQzsKICAgICAgICAgZGVjb2RlciA+PiBz
eXN0ZW1IYXNBQzsKICAgICAgICAgaWYgKCFzeXN0ZW1IYXNBQykKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IHN5c3Rl
bUhhc0JhdHRlcnk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4g
c3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0ZW1IYXNCYXR0ZXJ5Owog
ICAgICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiB2cDlIYXJkd2FyZURl
Y29kZXJEaXNhYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGJvb2w+
PiB2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiB2cDlIYXJk
d2FyZURlY29kZXJEaXNhYmxlZDsKICAgICAgICAgaWYgKCF2cDlIYXJkd2FyZURlY29kZXJEaXNh
YmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92ZXJyaWRlcz4+IHZwOVNjcmVlblNpemVB
bmRTY2FsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmVlbkRhdGFPdmVycmlkZXM+PiB2cDlTY3JlZW5TaXplQW5kU2NhbGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlOwogICAgICAgICBpZiAoIXZwOVNjcmVlblNpemVB
bmRTY2FsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggNzc1NWU1YjY4OTg3YzYzZTRhMWUxMzUzMTk4MjVkMzQ3M2Vl
ZDJkZC4uMDA1OTU5NjJkYWYwZjMzOGZhZWQ1MDY0NWI3YTQxMTQ4MTJhYjU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVk
aWFQbGF5ZXI6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQogewotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkp
IHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgYXV0
byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwpAQCAtOTc2LDcgKzk3Niw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
KCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTdGF0ZS5kaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
OwogfQogCi1PcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxkVGFp
bnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7CiAgICAgaWYgKG9yaWdpbi5kYXRhKCkg
PT0gbV9kb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdGF0
ZS53b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKQEAgLTk4NCw3ICs5ODQsNyBAQCBP
cHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbV93b3VsZFRhaW50
T3JpZ2luQ2FjaGUuZ2V0KG9yaWdpbi5kYXRhKCkpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHdvdWxkVGFpbnQ7CiAgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OldvdWxkVGFpbnRPcmlnaW4ob3JpZ2luLmRhdGEoKSksIE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpXb3VsZFRhaW50T3JpZ2luOjpSZXBseSh3
b3VsZFRhaW50KSwgbV9pZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTEx
ODQsNyArMTE4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRl
b1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFsKGNvbnN0IFNlCiAgICAgY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvUGxheWJhY2tN
ZXRyaWNzVXBkYXRlSW50ZXJ2YWwobV92aWRlb1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFs
LnZhbHVlKCkpLCBtX2lkKTsKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpCitzdGQ6Om9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAgIGNv
bnN0IFNlY29uZHMgbWF4aW11bVBsYXliYWNrUXVhbGl0eU1ldHJpY3NTYW1wbGVUaW1lRGVsdGEg
PSAwLjI1X3M7CiAKQEAgLTEyNDEsNyArMTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUgbW9k
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1l
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBjb25zdCBNZWRpYVRp
bWUmIG1lZGlhVGltZSkKIHsKLSAgICBhdXRvIGFzeW5jUmVwbHlIYW5kbGVyID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxNZWRpYVRpbWU+IGN1cnJlbnRUaW1lLCBPcHRp
b25hbDxNb25vdG9uaWNUaW1lPiBxdWVyeVRpbWUpIG11dGFibGUgeworICAgIGF1dG8gYXN5bmNS
ZXBseUhhbmRsZXIgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8
TWVkaWFUaW1lPiBjdXJyZW50VGltZSwgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBxdWVy
eVRpbWUpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFjdXJyZW50VGltZSB8
fCAhcXVlcnlUaW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaAppbmRleCBkMTY5NDRlNDU4ODc1MDQ5MGQ0MjVkNWI0MDhkMDEzN2ZlYzJkNDU2Li45NDI4
ZDk4MGI0ZWFhNjEzODU5N2U5MzFmNmI0NDVlNDM4MjYwOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTMxNyw3ICszMTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nl
c3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNb3ZpZUxv
YWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBmaW5hbDsKIApAQCAtMzcwLDcgKzM3MCw3IEBA
IHByaXZhdGU6CiAKICAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgZmluYWw7CiAK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVZpZGVvUGxheWJhY2tNZXRyaWNzVXBkYXRlSW50
ZXJ2YWwoY29uc3QgU2Vjb25kcyYpOwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKQEAgLTQy
MCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgUmVmPFRleHRUcmFja1ByaXZhdGVSZW1vdGU+PiBtX3RleHRUcmFja3M7CiAKICAg
ICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9kb2N1bWVudFNlY3VyaXR5T3JpZ2luOwot
ICAgIG11dGFibGUgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvbmFs
PGJvb2w+PiBtX3dvdWxkVGFpbnRPcmlnaW5DYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hNYXA8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPGJvb2w+PiBtX3dvdWxkVGFp
bnRPcmlnaW5DYWNoZTsKIAogICAgIE1lZGlhVGltZSBtX2NhY2hlZE1lZGlhVGltZTsKICAgICBN
b25vdG9uaWNUaW1lIG1fY2FjaGVkTWVkaWFUaW1lUXVlcnlUaW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmgKaW5k
ZXggZjU4NjE3ZjliOTlmNzI3YTgwY2Y1NzJhZmE4ZDg1ZmFmMTRiZDE2YS4uOWU2YmNlYjA2YmU5
MDQzYmU2ZTZjNjhhZjA2MmMwYTMxMTU1NzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5oCkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAKICAgICBDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeSB7IENhdGVnb3J5
VHlwZTo6Tm9uZSB9OwogICAgIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSBtX3JvdXRlU2hh
cmluZ1BvbGljeSB7IFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCB9OwotICAg
IE9wdGlvbmFsPFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24+IG1f
Y29uZmlndXJhdGlvbjsKICAgICBXZWFrUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaAppbmRleCBhYjU2ZDYzYWMzODFlNGJhOWFkYmVkODUwYzJkODk2MTMxZDU5MzhmLi4xNzZl
Mjc5YmU4MGMzNTM0OWVhMjgwYTI3ZmRhYjJhNWZmOWIwMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvbkNvbmZpZ3VyYXRpb24uaApAQCAtNTUsNDQgKzU1LDQ0IEBAIHN0cnVjdCBSZW1vdGVB
dWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvdXRpbmdDb250ZXh0VUlEOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGlmICghcm91dGluZ0NvbnRleHRV
SUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PGZsb2F0PiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVS
YXRlOwogICAgICAgICBkZWNvZGVyID4+IHNhbXBsZVJhdGU7CiAgICAgICAgIGlmICghc2FtcGxl
UmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8c2l6ZV90PiBidWZmZXJTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnVm
ZmVyU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWJ1
ZmZlclNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4g
bnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKICAgICAgICAgaWYgKCFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxzaXplX3Q+IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRl
Y29kZXIgPj4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbWF4
aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHByZWZlcnJlZEJ1ZmZlclNpemU7CiAgICAgICAg
IGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFwcmVmZXJyZWRC
dWZmZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxib29sPiBpc011dGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTXV0
ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNdXRlZDsKICAgICAgICAgaWYgKCFpc011dGVkKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29s
PiBpc0FjdGl2ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FjdGl2ZTsKICAgICAg
ICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAgaWYgKCFpc0FjdGl2ZSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggNDIyNDQ2YjlhODEyNWM0YWY2ZjlkMzAzZDE1
MGI1MmRmOTcwNTEzNy4uZGFlNDk1YmY2ZGRkM2YyY2ZkZGJiNjhlODFmNTI3ZWI1ZDg4ODRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjCiAgICAgcmV0dXJu
IHJlc3BvbnNlLmNvcHkoKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBp
bnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKCkuCiAgICAg
cmV0dXJuIHNlc3Npb25JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oCmluZGV4IDI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhl
OGYuLjBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5z
dGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7
IH0KICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaAppbmRleCBkY2I0MWJhYTE5YmYxNjVlMWQzYjY0MjAxNmI5OWE0
YTA5NzI1N2MzLi43OTkwMmRiODVmMGY1OTA1YTczMmE0NTk4NjczNzFlODJmYTVjMjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAtNDcsMjQgKzQ3LDI0IEBAIHN0cnVjdCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxWZWN0
b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CiAgICAgICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOwogICAg
ICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAg
ICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lv
bnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKICAgICAg
ICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAgICBpZiAoIXN1cHBvcnRzU2Vz
c2lvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgKaW5kZXggZTg4OTYxMmFlZDA5YzEzOWQyZTY5MDZiOGNkNTI5
NjVhMmZjODgzNi4uNDAzM2QzNWY3MDNkMTZjZjAyODA4MmE3Y2M4OTc3ZGUxNjE5YjY0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC00MSw5ICs0MSw5IEBAIHN0
cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKICAgICAgICAgZGVjb2RlciA+
PiBrZXlTeXN0ZW07CiAgICAgICAgIGlmICgha2V5U3lzdGVtKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA5MWFkNGY5
MjljYTVkZmZkOWMxYjJlNjM2NGUzODliOTc5NGU5NTlkLi44MmY0NzUzYTNhODNjN2I0NTBhZTBk
NzdmNzNiZjEwNWVmN2Y3YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBj
aGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgV1RGTW92ZShyZXNw
b25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Ns
b3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3Nh
Z2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
ayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2Vk
RXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZh
aWxlZCk7CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlw
ZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9w
dGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYm
IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Np
b24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1
cmUpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RG
TW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1
Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9
CkBAIC0xMDksOCArMTA5LDggQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKLSAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdl
ID0gc3RkOjpudWxsb3B0OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVz
c2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdl
LnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDBlZGQ4YjJmZDY2
MzMwOGI4MzQ3MjJmMzgzNDAyNWIwOWQ0YzdlMWEuLjUzZDAxNTc4MWM0ZGI2NmFhNjQ5MTIwYTdj
OGRhYWFmYjM4NDA4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTE2Niw4ICsxNjYs
OCBAQCBQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3B0aW9uYWw8TWFjaFNl
bmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGNvbG9yU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2Vu
ZFJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVG
cmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJp
Z2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHNpemVfdCBmcmFtZUNvdW50OwogICAg
IEludFNpemUgc2l6ZTsKICAgICBib29sIGhhc1RyYWNrOwotICAgIE9wdGlvbmFsPFZlY3RvcjxJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwogICAgIGlmICghbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVu
Y2UsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3Mp
LCAwKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCBkZTlkYzMz
ZjA5ZDU2ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0Li5lNWNmZTk0ZWNkM2E5YzA2MDBmYzAw
MzIwZmY0MzA2MWM5MGVkNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQo
KSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICBXZWJDb3Jl
OjpJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xl
dmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CkBA
IC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxpbnQsIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludD4+IG1fZnJhbWVJbWFnZXM7CiAgICAgVmVjdG9yPEltYWdlRGVjb2Rlcjo6
RnJhbWVJbmZvPiBtX2ZyYW1lSW5mb3M7CiAgICAgc2l6ZV90IG1fZnJhbWVDb3VudCB7IDAgfTsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3NpemU7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRTaXplPiBtX3NpemU7CiAgICAgYm9vbCBtX2hhc1RyYWNrIHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDZkMWFm
ZDg0ODM4NzcxYjYxNjliNzBkZTgzNWIyOWQ4YjI4MjI3ZWYuLjc2ZTk3MzRlZDEwNzU0YzI2YTNj
NjgyYzVhOGY2NjkyNDg2OWM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3Jl
YXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewotICAgIE9wdGlvbmFsPEltYWdlRGVjb2Rlcklk
ZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwogICAgIGlmICgh
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVu
Y2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVh
dGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4IDE3ODg2MjViYjc2MDRkZTkwNWJhZTRlZWMx
MjUzMjIxOGU4MDNkNDUuLjc1NmY4Zjk5ZjE2MjY5MzM4N2YwOTNkZDZmMmIwNTRhOGY3OTlmNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE06OnNl
dFBsYXllcklkKE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGlmICghbV9m
YWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50
aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZp
ZXI+IG9wdGlvbmFsSWQ7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIG9wdGlvbmFsSWQg
PSBpZGVudGlmaWVyOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBsYXllcklk
KG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5k
ZXggOGExOTdlMWRhNmRiOWNjZTY3Y2M3NWE3ZmUzYmMxNWZjZGJlY2M2Ni4uZGZmNzZkMTllOTE1
MDhjMzljYmU0ZWNkYWU2ODUyM2FkODY5ZGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3Bw
CkBAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiBwbGF5ZXJJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxh
eWVySWQ7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5tZWRpYVBsYXllcigpKQogICAgICAg
ICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkubWVkaWFQbGF5ZXJNYW5hZ2VyKCku
ZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJpdmF0ZSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAKaW5kZXggZTZmNjdhY2Y0ODViNmQxZmQzZmU3YTMxMDQxMDc3MmQ3NGE5
NWZhOC4uMjdhZTk2YjNiMmY1NmIyMjE3YTM4NzlkNWRmMmQwZDMzMTExYzM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpcGNJbml0RGF0YSA9IGNv
bnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoaW5pdERhdGEpOwotICAgIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+IGlwY05leHRNZXNzYWdlOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpcGNJbml0RGF0
YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkdlbmVyYXRlS2V5UmVx
dWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOwogCiAgICAgaWYgKCFpcGNOZXh0TWVzc2FnZSkKQEAg
LTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnVwZGF0ZShVaW50
OEFycmF5KiBrZXlEYXRhLCBSZWZQdHI8VWludDhBcnJheT4mIG5leAogCiAgICAgYXV0byBpcGNL
ZXlEYXRhID0gY29udmVydFRvU2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGtleURhdGEpKTsKICAg
ICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJDb3B5PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7CiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2VlZGVkLCBpcGNOZXh0TWVzc2FnZSwgZXJy
b3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIGlmIChpcGNOZXh0TWVz
c2FnZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OmNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYga2V5SQogICAgIGlm
IChmb3VuZEluQ2FjaGUgIT0gbV9jYWNoZWRLZXlDYWNoZS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IGZvdW5kSW5DYWNoZS0+dmFsdWU7CiAKLSAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+IGlwY0tleTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gaXBj
S2V5OwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Q2FjaGVkS2V5
Rm9yS2V5SUQoa2V5SWQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpD
YWNoZWRLZXlGb3JLZXlJRDo6UmVwbHkoaXBjS2V5KSwgbV9pZGVudGlmaWVyKTsKIAogICAgIGlm
ICghaXBjS2V5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJCiAg
ICAgcmV0dXJuIGlwY0tleUJ1ZmZlcjsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bjo6c2VuZE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKIHsKICAgICBpZiAoIW1fY2xpZW50
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IDRkNWJlY2UwNTkx
MTVlNTJmMDM0ZTBhNTE0NWQwMjQ5ZWViMjFiYjMuLjQ4MzRiNDZlZDBmY2QyNTliMzA4NWExZWE3
NDZjMzkyMjA4YjRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzCi0gICAgdm9pZCBzZW5k
TWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMKTsKICAgICB2b2lkIHNlbmRFcnJvcihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSk7CiAKICAgICBX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCAxMmY2ODc4YTgzMzcwMjIwNDlmMDU1MDcx
ZTkzZGE0ZWMyYjE0ZWZkLi4zZTczMGExMGVlMGQ3M2FmNWYxZjYzZmY3ZjU5NjEyZjZlZWI5ZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsy
NCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3Vu
dGVkIHsKLSAgICBTZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1l
c3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJM
KQogICAgIFNlbmRFcnJvcihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudDo6TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaAppbmRleCAwZGU5NWVkNWVk
MjZjZjhhNmQwNzA0NmY2NjRjZjE1OGVkMWQ4YmQ2Li5hZWI0ZjEzYjM2MDM4NjU1YzJmOTg1ODdk
MGZmMzQyYzE1MjU5NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgK
QEAgLTU3LDQ0ICs1Nyw0NCBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9u
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBlbmdpbmVEZXNjcmlwdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGVuZ2luZURlc2NyaXB0aW9u
OwogICAgICAgICBpZiAoIWVuZ2luZURlc2NyaXB0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtRHVy
YXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAgICAgICBkZWNvZGVyID4+IG1heGltdW1EdXJhdGlv
blRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAgIGlmICghbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1l
ZGlhVGltZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNTY2FubmluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzdXBwb3J0c1NjYW5uaW5nOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Nhbm5pbmc7
CiAgICAgICAgIGlmICghc3VwcG9ydHNTY2FubmluZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNGdWxsc2NyZWVuOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzRnVsbHNjcmVlbjsKICAgICAgICAg
ZGVjb2RlciA+PiBzdXBwb3J0c0Z1bGxzY3JlZW47CiAgICAgICAgIGlmICghc3VwcG9ydHNGdWxs
c2NyZWVuKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxib29sPiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOwogICAgICAgICBkZWNvZGVyID4+IHN1
cHBvcnRzUGljdHVyZUluUGljdHVyZTsKICAgICAgICAgaWYgKCFzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmc7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKICAgICAgICAgZGVjb2Rl
ciA+PiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nOwogICAgICAgICBpZiAoIXN1cHBvcnRz
QWNjZWxlcmF0ZWRSZW5kZXJpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rh
cmdldDsKICAgICAgICAgZGVjb2RlciA+PiBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
OwogICAgICAgICBpZiAoIWNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3Vs
ZElnbm9yZUludHJpbnNpY1NpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRJZ25vcmVJbnRy
aW5zaWNTaXplOwogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUludHJpbnNpY1NpemUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmgKaW5kZXggMDgxYzljYzRiZGY4Y2YyNGZmMjlmNzcxOTIwODE0YjJiOWRjYWNiNi4u
MTJjODgyM2FiOTVmMDhiZjgwNjBhYTliMmIxNmVmMGQ2ZTllYjhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5l
SWRlbnRpZmllcjsKIAogICAgIHVzaW5nIFN1cHBvcnRlZFR5cGVzQW5kQ29kZWNzS2V5ID0gc3Rk
Ojp0dXBsZTxTdHJpbmcsIGJvb2wsIGJvb2w+OwotICAgIE9wdGlvbmFsPEhhc2hNYXA8U3VwcG9y
dGVkVHlwZXNBbmRDb2RlY3NLZXksIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZT4+IG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGU7Ci0gICAgT3B0aW9uYWw8SGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IG1fc3VwcG9ydGVkVHlwZXNDYWNo
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3VwcG9ydGVkVHlwZXNBbmRDb2RlY3NLZXks
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZT4+IG1fc3VwcG9ydHNUeXBl
QW5kQ29kZWNzQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRUeXBlc0NhY2hlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCmluZGV4IGE2MjdhNzM3MGMyYmMx
ZjI1MzkxYzBiZWIyMTA4ZWJkZWFiMTI5OWEuLmRiMzQ4YTE4ZWFlYTdkOTliZjNjMTcyZWJkZjY4
ZmRkM2ExYmFjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCkBAIC01NSw4ICs1NSw4IEBAIHN0
cnVjdCBSZW1vdGVNZWRpYVBsYXllclN0YXRlIHsKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZSB7IDAgfTsKICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFs
IHsgMCB9OwogICAgIHVpbnQ2NF90IHRvdGFsQnl0ZXMgeyAwIH07Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb01ldHJpY3M7Ci0gICAgT3B0
aW9uYWw8Ym9vbD4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW4geyB0cnVlIH07Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZp
ZGVvTWV0cmljczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnREb2N1bWVudFNl
Y3VyaXR5T3JpZ2luIHsgdHJ1ZSB9OwogICAgIGJvb2wgcGF1c2VkIHsgdHJ1ZSB9OwogICAgIGJv
b2wgY2FuU2F2ZU1lZGlhRGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBoYXNBdWRpbyB7IGZhbHNl
IH07CkBAIC0xMDIsNDQgKzEwMiw0NCBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFJlbW90ZU1lZGlhUGxheWVyU3RhdGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyU3RhdGU+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOwogICAgICAgICBk
ZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAoIWR1cmF0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1pblRp
bWVTZWVrYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVr
YWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5UaW1lU2Vla2FibGU7CiAgICAgICAgIGlmICgh
bWluVGltZVNlZWthYmxlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBt
YXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGlmICghbWF4VGltZVNlZWthYmxlKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0
YXJ0RGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0RGF0ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBzdGFydERhdGU7CiAgICAgICAgIGlmICghc3RhcnREYXRlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRp
bWU+IHN0YXJ0VGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGlt
ZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgICAgIGlmICghc3RhcnRUaW1l
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKICAgICAgICAgZGVjb2RlciA+
PiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAgICAgIGlmICghbGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAg
ICAgIGRlY29kZXIgPj4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGlmICgh
d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcz4gYnVm
ZmVyZWRSYW5nZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGxhdGZvcm1UaW1l
UmFuZ2VzPiBidWZmZXJlZFJhbmdlczsKICAgICAgICAgZGVjb2RlciA+PiBidWZmZXJlZFJhbmdl
czsKICAgICAgICAgaWYgKCFidWZmZXJlZFJhbmdlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNjAsODcgKzE2MCw4NyBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2lyZWxlc3NQbGF5YmFja1Rhcmdl
dFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IG5hdHVyYWxTaXplOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gbmF0dXJhbFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4g
bmF0dXJhbFNpemU7CiAgICAgICAgIGlmICghbmF0dXJhbFNpemUpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndh
cmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndhcmRSYXRl
OwogICAgICAgICBkZWNvZGVyID4+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAgICAgaWYgKCFt
YXhGYXN0Rm9yd2FyZFJhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJldmVyc2VSYXRlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJldmVyc2VSYXRlOwogICAgICAgICBkZWNvZGVyID4+
IG1pbkZhc3RSZXZlcnNlUmF0ZTsKICAgICAgICAgaWYgKCFtaW5GYXN0UmV2ZXJzZVJhdGUpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgICAg
IGRlY29kZXIgPj4gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICAgICAg
aWYgKCFzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGxpdmVVcGRhdGVJ
bnRlcnZhbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpdmVVcGRhdGVJbnRlcnZh
bDsKICAgICAgICAgZGVjb2RlciA+PiBsaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgICAgIGlmICgh
bGl2ZVVwZGF0ZUludGVydmFsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKICAgICAgICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVz
OwogICAgICAgICBpZiAoIXRvdGFsQnl0ZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0cmljczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0
cmljczsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb01ldHJpY3M7CiAgICAgICAgIGlmICghdmlk
ZW9NZXRyaWNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxPcHRpb25hbDxib29sPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4gd291bGRUYWludERv
Y3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4gd291bGRUYWludERvY3Vt
ZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGlmICghd291bGRUYWludERvY3VtZW50U2VjdXJp
dHlPcmlnaW4pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IHBhdXNlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYXVzZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gcGF1c2VkOwogICAgICAgICBpZiAoIXBhdXNlZCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2Fu
U2F2ZU1lZGlhRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5TYXZlTWVkaWFE
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGNhblNhdmVNZWRpYURhdGE7CiAgICAgICAgIGlmICgh
Y2FuU2F2ZU1lZGlhRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXVkaW87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaGFzQXVkaW87CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQXVkaW87CiAgICAgICAgIGlmICgh
aGFzQXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGhhc1ZpZGVvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1Zp
ZGVvOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZpZGVvOwogICAgICAgICBpZiAoIWhhc1ZpZGVv
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxi
b29sPiBoYXNDbG9zZWRDYXB0aW9uczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXND
bG9zZWRDYXB0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBoYXNDbG9zZWRDYXB0aW9uczsKICAg
ICAgICAgaWYgKCFoYXNDbG9zZWRDYXB0aW9ucykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXZhaWxhYmxlVmlkZW9GcmFtZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lOwogICAg
ICAgICBkZWNvZGVyID4+IGhhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAgICAgICAgIGlmICghaGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CiAgICAg
ICAgIGlmICghd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1NpbmdsZVNlY3VyaXR5
T3JpZ2luOwogICAgICAgICBkZWNvZGVyID4+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOwogICAg
ICAgICBpZiAoIWhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBkaWRQYXNzQ09SU0FjY2Vzc0No
ZWNrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2s7
CiAgICAgICAgIGRlY29kZXIgPj4gZGlkUGFzc0NPUlNBY2Nlc3NDaGVjazsKICAgICAgICAgaWYg
KCFkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCmluZGV4
IDRkZWRlMzA4MWUyNGI0OTA3OGZkYTE1NzQwM2NiNDlmNzAwNDYyMDkuLmQ0NGViMzlmODM5MzE4
NTRhYmIzMGY1NjBhOThhYjI4MjFmZWFlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjQsNyArNjQsNyBAQCBQbGF0Zm9ybUxheWVyQ29u
dGFpbmVyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4g
c2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Owog
ICAgIGlmICghY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lOjpSZXBseShzZW5kUmlnaHQp
LCBtX2lkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDcgKzg0LDcgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKLSAgICBPcHRpb25h
bDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQ7CiAgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Ok5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWU6
OlJlcGx5KHNlbmRSaWdodCksIG1faWQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5jcHAKaW5kZXggNDYwYjc1MmZmZTIzZjQ1NjJkYjk4YzNkYWM2MGZjYWE5
NmI2ZTYzZC4uYmQ4N2ZkMTMwMzI1MTg4OTk2Y2E0MzZmNTMxNDZkMjQ0YWE0NWU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fZGV2aWNlSWQ7CiAgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiAKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVz
Y3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlz
dD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOwogICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgK
aW5kZXggOWM3YmIzNTU2OTllNzAzMmU3M2E5ODg5MjY5NmVlNDk4Y2IxM2E1Zi4uZWJlNjIzY2Jk
N2I3YTg1ZDI4OWU2YWM4MmQzMTk1ZDZiZTEzNWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTk4LDcgKzk4
LDcgQEAgcHVibGljOgogICAgICAgICBSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwog
ICAgICAgICB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSB7IHdlYnJ0Yzo6a1ZpZGVv
Q29kZWNHZW5lcmljIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBwYXJhbWV0ZXJzOwotICAgICAgICBPcHRpb25hbDxFbmNvZGVySW5pdGlhbGl6YXRpb25EYXRh
PiBpbml0aWFsaXphdGlvbkRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RW5jb2RlckluaXRp
YWxpemF0aW9uRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICB2b2lkKiBlbmNvZGVk
SW1hZ2VDYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kZWRJbWFnZUNhbGxiYWNrTG9j
aykgeyBudWxscHRyIH07CiAgICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwog
ICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpAQCAtMTU1LDcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggeyAwIH07
CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0IHsgMCB9OwogICAgIGJvb2wgbV9z
dXBwb3J0VlA5VlRCIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxXVEZMb2dMZXZlbD4gbV9sb2dn
aW5nTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxXVEZMb2dMZXZlbD4gbV9sb2dnaW5nTGV2ZWw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAyYzgwODI5YTQ2YmJmYmE2YjdlNzc1YzRi
NzBiYmZmZDZlYzIxM2NkLi4wNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CkBAIC01MywxNyArNTMsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYp
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZEluc2VydFRleHQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVs
ZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNv
cmU6OkFmZmluaXR5LCBib29sKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBX
ZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbQppbmRleCBjOGI1ZTQ5N2M1MGUwYmE1Y2MzN2M2NjhjMjFjMzc3ZWY3MTc0
NTUzLi4zNTJiNjYyYTQ5MTk1MzQwMmI3NGEzZjFmNGM0NGFmYjZmNmE2NzAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1t
CkBAIC02NSw3ICs2NSw3IEBAIC0gKENvY29hSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlv
bnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMKIAogLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVk
SW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW1i
ZXIgKil3aWR0aAogewotICAgIE9wdGlvbmFsPGZsb2F0PiBvcHRpb25hbFdpZHRoOworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9wdGlvbmFsV2lkdGg7CiAgICAgaWYgKHdpZHRoKQogICAgICAg
ICBvcHRpb25hbFdpZHRoID0gd2lkdGguZmxvYXRWYWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCA2YTA4ZWU2MWM0MmY4OWI2NzM5MWRkNGQxNGM0NzM4N2ZkMmYzZmU2Li42
OTM4MjAzZTg4NjExZjYzNWVkNjE2N2Q2YWYxYTczOTdmMjM5MjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtODYzLDcgKzg2Myw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdl
Q29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIAog
dm9pZCBXS0J1bmRsZVBhZ2VTZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yKiBiZWhhdmlvcikKIHsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gYmVoYXZpb3JW
YWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
PiBiZWhhdmlvclZhbHVlOwogICAgIGlmIChiZWhhdmlvcikgewogICAgICAgICBzd2l0Y2ggKCpi
ZWhhdmlvcikgewogICAgICAgICBjYXNlIGtXS0V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yUmVzcG9u
c2l2ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCA4MjM4
ZTY0MzBlZDdmOTQ3ODkyMWM2MGI3MWMzYjViNDgwODYyYmJhLi5kODU0MmEyYjEwYjFiM2UxNTM2
MTQxNTQxMTVlZjdlY2VjNDRlYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29u
dGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViS2l0OjpXZWJQYWdlT3Zlcmxh
eSYgcGFnZU92ZXJsYXksIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIGZpbmFsCisgICAg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpBY3Rpb25Db250ZXh0PiBhY3Rp
b25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJLaXQ6OldlYlBhZ2VPdmVybGF5JiBwYWdlT3Zl
cmxheSwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikgZmluYWwKICAgICB7CiAgICAgICAg
IGlmICghbV9jbGllbnQuYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IGM1NTA4YTYwOGQ4OTUxZTNhZTIyMzNiZDkwZTIzZDhjNDI3ZTEwODUuLmNiZjM5NTU4MWY0
NTUwZDU0MGFiZWZiNjk1NTBkYzk5ZDFlMWQzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KQEAgLTU4Myw3ICs1ODMsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6
KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHQsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbiBhY3Rpb24pIGZpbmFsCisgICAgICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dCwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLnNob3VsZEluc2VydFRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01OTEsNyArNTkxLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIHJldHVybiBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBzaG91bGRJ
bnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nUmFuZ2U6d3JhcHBlcigqV2ViS2l0OjpjcmVhdGVIYW5k
bGUocmFuZ2VUb1JlcGxhY2UpKSBnaXZlbkFjdGlvbjp0b1dLKGFjdGlvbildOwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmlu
aXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbAorICAgICAgICBib29sIHNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IGFmZmlu
aXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fZGVsZWdhdGVNZXRob2RzLnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MTUsNyArNjE1LDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0
KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJEaWRDaGFuZ2VCeUVk
aXRpbmc6bV9jb250cm9sbGVyXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgcmFuZ2UpIGZpbmFsCisgICAgICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiByYW5nZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVn
YXRlTWV0aG9kcy53aWxsV3JpdGVUb1Bhc3RlYm9hcmQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjIzLDcgKzYyMyw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdL
V2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAg
ICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFz
dGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCAwZWNjMmRjODhk
ZDY1ZmEyMWRlNjZmN2Q1NGRlNzZiY2M1M2QxOTJmLi5jODkwYzU3YWFmNDBkMjc0ZDliZGVlNjI3
NzI3OTI3MjI5NWIzNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgSW50UmVjdCBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAgICByZXR1cm4gbV9ub2RlLT5w
aXhlbFNuYXBwZWRSZW5kZXJSZWN0KGlzUmVwbGFjZWQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHBhaW50aW5nUmVjdCwgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCitzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3Qo
RnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBhaW50aW5nUmVjdCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VG
b3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLVJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3Vs
ZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCkKK1Jl
ZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3Qg
c3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoKQogewogICAgIGlmICghbV9ub2RlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oCmluZGV4IDg5YjYzZmY4NjE5MDRiMDM1YWFlYmM0MWUzMzBmMmI2Yzk5N2JhYjIu
LjUyMDQzOTY1MzMwMjAyOTQxNTEzMjllNDM2YjcxMWNkYWVkMmE1ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gTm90ZTogVGhlc2Ugc2hvdWxkIG9ubHkgYmUgb3BlcmF0aW9ucyB0aGF0IGFyZSBu
b3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJv
dW5kcygpOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVuZGVyUmVjdChib29sKik7Ci0gICAgUmVm
UHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucywgYm9vbCBzaG91bGRF
eGNsdWRlT3ZlcmZsb3csIGNvbnN0IE9wdGlvbmFsPGZsb2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6
Om51bGxvcHQpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFnZShTbmFwc2hvdE9w
dGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlPiB2aXNpYmxlUmFuZ2UoKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVs
ZW1lbnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRF
bGVtZW50U3BlbGxjaGVja0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA1YTI2ZTUzM2ZjMTVmZWZmMjVlZDgwYzcyN2Qx
M2UwYTc0ZWNkYmFhLi42NDk5MWJiMmRhMjhkZjdlYTYyOWIwOGVlMWJjNmI1MmFhMTRjZGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6dGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSk7CiB9CiAKLVJlZlB0cjxJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlPiBjcmVhdGVIYW5kbGUoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBjcmVh
dGVIYW5kbGUoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
KQogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShj
cmVhdGVMaXZlUmFuZ2UocmFuZ2UpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggNWU4YmVlZGExMDBkMjVmMDkxZTdlMGMxZjc2YTRm
MGNiMTRjMjQ5Ni4uMzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTY0LDYgKzY0
LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IG1fcmFuZ2U7CiB9OwogCi1S
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOworUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IGNyZWF0ZUhhbmRsZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggNGFiODJkMTI1Y2RmM2JkMTkwMWY2ZjEy
NGNiNDIzZmY5YWZlYzQyMS4uY2JjMjRkNjFiNWJjOTg0MjYzMWI0Yjg2MWM4YmQ5NGM2NGNmZTc1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAK
QEAgLTM3LDIxICszNywyMSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbkZvck1v
dXNlRXZlbnREYXRhKGNvbnN0IE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhPiYgbW91c2VFdmVudERhdGEpCitzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNl
QnV0dG9uRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uOjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewogICAgIGlmIChtb3VzZUV2
ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0YS0+
aXNUcnVzdGVkKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0
dG9uPihtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKTsKICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
Tm9CdXR0b247CiB9CiAKLXN0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUg
c3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudERhdGEoY29uc3QgT3B0aW9uYWw8TmF2aWdh
dGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKK3N0YXRpYyBXZWJN
b3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VF
dmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50
RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewogICAgIGlmIChtb3VzZUV2ZW50RGF0YSAmJiBtb3Vz
ZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBl
Pihtb3VzZUV2ZW50RGF0YS0+c3ludGhldGljQ2xpY2tUeXBlKTsKICAgICByZXR1cm4gV2ViTW91
c2VFdmVudDo6Tm9UYXA7CiB9CiAgICAgCi1zdGF0aWMgRmxvYXRQb2ludCBjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudERhdGEoY29uc3QgT3B0aW9uYWw8TmF2
aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKK3N0YXRpYyBG
bG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
PiYgbW91c2VFdmVudERhdGEpCiB7CiAgICAgaWYgKG1vdXNlRXZlbnREYXRhICYmIG1vdXNlRXZl
bnREYXRhLT5idXR0b25Eb3duICYmIG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCiAgICAgICAg
IHJldHVybiBtb3VzZUV2ZW50RGF0YS0+bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IGI1
NTQxOGRlZGNmODJlMTE4OWZhNjQyMGVjYzBkZTA1ODMyZGVlZTUuLjM1MzYwNjUyNWI4NDU3Njhl
MzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
IFNpbXBsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UmIHBhZ2UsIE5vZGUmIG5vZGUsIGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFj
dGlvbiBhY3Rpb24pCitib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxk
SW5zZXJ0Tm9kZShXZWJQYWdlJiBwYWdlLCBOb2RlJiBub2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
CiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUpIHsKICAgICAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6Z2V0T3JDcmVhdGUobm9kZSk7CkBAIC03NywyOCArNzcsMjggQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoV2ViUGFnZSYgcGFn
ZSwgTm9kZSYgbm9kZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNl
LCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVk
aXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2Vy
dFRleHQpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRJbnNlcnRUZXh0KHRvQVBJKCZw
YWdlKSwgdG9BUEkodGV4dC5pbXBsKCkpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2VUb1JlcGxh
Y2UpLmdldCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OnNob3VsZERlbGV0ZVJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UpCitib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6c2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRE
ZWxldGVSYW5nZSkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZERlbGV0ZVJhbmdlKHRv
QVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFu
Z2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIGlmICht
X2NsaWVudC5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm4gbV9jbGll
bnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhh
bmRsZShmcm9tUmFuZ2UpLmdldCgpKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHRvUmFuZ2UpLmdldCgp
KSwgdG9BUEkoYWZmaW5pdHkpLCBzdGlsbFNlbGVjdGluZywgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAobV9jbGllbnQuc2hvdWxkQXBwbHlTdHls
ZSkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEFwcGx5U3R5bGUodG9BUEkoJnBhZ2Up
LCB0b0FQSShjcmVhdGVIYW5kbGUoc3R5bGUpLmdldCgpKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CkBAIC0xMjksMTMgKzEyOSwx
MyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6ZGlkQ2hhbmdlU2VsZWN0
aW9uKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cgogICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VT
ZWxlY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1lLmltcGwoKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmIChtX2NsaWVudC53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQpCiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0
b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggY2MwNmIxYWY5NDUxNWRj
ZTE1Y2JkNDNhZWU2ZmUxMGE2MDQ1ZTMyYi4uMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2
ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaApAQCAtNTQsMTcgKzU0LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBzaG91
bGRCZWdpbkVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmlu
YWw7CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJQYWdlJiwg
V2ViQ29yZTo6Tm9kZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2VUb1JlcGxhY2UsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7Ci0gICAgYm9v
bCBzaG91bGRJbnNlcnRUZXh0KFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIGJvb2wg
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3Rpbmcp
IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UmLCBXZWJDb3JlOjpO
b2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9S
ZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hv
dWxkSW5zZXJ0VGV4dChXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAg
Ym9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJQYWdl
JiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZEJlZ2luRWRpdGluZyhX
ZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lk
IGRpZEVuZEVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYs
IGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7Ci0gICAgdm9pZCB3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikg
ZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24s
IGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOGFlZWEzZTRjYjIwOGY1NjgwODIy
ZTkxMTVhYjBmMjMyOWFjYzc0Zi4uMjQ2YjIzYWMyMDkxM2Y5OTYzZmIxMjhkZjdjZDU1NmU1OWM2
NDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjp0aW1l
bGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBhY3RpdmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUlQcm94eTo6VGltZWxpbmVSZWNvcmRpbmdDaGFuZ2VkKGFjdGl2ZSksIG1fcGFnZS0+aWRl
bnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnNldERldmVsb3BlclByZWZlcmVu
Y2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVy
UHJlZmVyZW5jZSwgT3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKK3ZvaWQgV2ViSW5zcGVj
dG9yOjpzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZl
bG9wZXJQcmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
b3ZlcnJpZGVWYWx1ZSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSVByb3h5OjpTZXRE
ZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoZGV2ZWxvcGVyUHJlZmVyZW5jZSwgb3ZlcnJpZGVW
YWx1ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCmluZGV4IDFiZWRjMmUzODk1NTRmY2Q4
Mjg3ZDFlMWI4ZmY2MDUwOTdmMWIzMTUuLmMyODA3OTNkYzI4YTVlYzFjOTM3Y2ZlZWUyY2FkYWYz
OGYzZDkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3IuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wRWxl
bWVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCk7
CiAgICAgdm9pZCB0aW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRE
ZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZl
bG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXREZXZlbG9wZXJQ
cmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVm
ZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAogICAgIHZvaWQgc2V0RnJvbnRlbmRDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlODE0N2Jm
NWUzNDk4YjU5OWMxZDU2MzVjZGViNGJhMGIyYWU2MWFjLi5lZTZiYTI1ZDA3NjY3NGU3MTZmNDJh
ZjQ0MGNiN2QxZGNjZTcxNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yMzUsNyArMjM1LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRpbWVsaW5lUmVjb3JkaW5nQ2hhbmdlZChib29s
IGFjdGl2ZSkKICAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+dGltZWxpbmVSZWNvcmRpbmdD
aGFuZ2VkKGFjdGl2ZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXREZXZlbG9w
ZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQ
cmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFs
dWUpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJy
aWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9w
ZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAg
aWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCiAgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNl
dERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShkZXZlbG9wZXJQcmVmZXJlbmNlLCBvdmVycmlk
ZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDE5YWYwNjIwMGFmMmVmNzc2MDE3Yzg5ZDM5MjNi
OTdjYTI0YWVmNGMuLmEwNWFlNzUwZjM2YTEzMDY2ZDA4M2ZlYmE3YWY1MTBkZmZlNTAwNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JDbGllbnQuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3ZlcnJp
ZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBzaG93UGFpbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPikgZmluYWw7Cisg
ICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsK
IAogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2b2lkIHdpbGxNb3ZlVG9QYWdlKFdl
YkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGFjOTRjYzBiODJlODEy
OGY3NzdhMTA5NjYwMjczY2IyNzg1MjUwOGYuLjE3M2IyMTg0MmQxYmZkNzJjMWQxNzBjYjI5YWU5
OGRhNzhiNWMwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2VJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uUmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9y
RnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFs
dWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBzd2l0
Y2ggKHJlc3VsdC5lcnJvcigpKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3I6OkUKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0
aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTb3VyY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVu
ZENsaWVudCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
Z25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2Ny
aXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
ZnJvbnRlbmRDbGllbnQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmgKaW5kZXggMWJjNDQxODI4MGM0ZjA2NjgzYmYwMTJmZmIwMTA4YmIw
OGE4MTk0Yi4uMThlYThmZmMyYWY4MDIzYmIyOWM3Y2RhMTk0NGZiZTU1ZDA2M2ZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02Niw4ICs2Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
Pik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRp
b25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmKTsKLSAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9y
ZUNhY2hlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgZXZhbHVh
dGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZyYW1lVVJM
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
IGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+
JiYpOwogCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwot
ICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlRXh0ZW5zaW9uRXJy
b3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gcGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7
CiAKICAgICBXZWFrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250
ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdG9yUGFnZUlk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ5MmI0Y2E2NThiNWU4ODBkZGM5ZjI1YjJmNzIxZDE4OTcx
NGU4ZGUuLjk0ODE5ZmIwOWIwMTZkMTNmZTlmYTIwM2JjMDgzMDJmNjY0ZmM4OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
CkBAIC0yNyw4ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBl
eHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
IHJlc3VsdCkgQXN5bmMKIAogICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4g
KEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3lu
YwotICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3Ry
aW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IGVycm9yKSBBc3luYwotICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRpb25hbDxTdHJpbmc+IHVzZXJB
Z2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIEV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgc3RkOjpv
cHRpb25hbDxVUkw+IGZyYW1lVVJMLCBzdGQ6Om9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBSZWxvYWRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVu
c2lvbklELCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gdXNlckFnZW50LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaW5qZWN0ZWRTY3JpcHQpIC0+
IChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1Jl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBiZWZkMzU2NzkxYTYzNzNjMjEx
OGRhNzQzYTVkMzA5ZmEwMDE0YmQ2Li4wNzZiZWRlZjMxZmM4YzBhMWU0NWZjNTViYTZkMDE3Y2Qz
MWI1ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9u
L1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6flJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
QUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3BhZ2Uuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
OjpKb2luIHsgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mJiBleGNlcHRpb24pIG11dGFibGUgewpAQCAtODUsNyArODUs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgpCiAgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Okxl
YXZlIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtU
byhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6c2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBTFdBWVNf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHRpbWUpOwogICAgIG1fcGFnZS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OkNvb3JkaW5hdGVTZWVrVG8geyB0aW1lIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgIH0pOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykK
K3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3Bh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5OjpDb29yZGluYXRlUGxheSB7IH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgIH0p
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJh
Y2spCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxs
YmFjaykKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAg
IG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdGVQYXVzZSB7IH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcgog
ICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFj
ayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFja0lkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUik7CiAgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0ZVNldFRyYWNrIHsgdHJh
Y2tJZGVudGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhj
b25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAgIH0pOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxX
QVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNo
YW5nZWQgeyBzdGF0ZSB9KTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrU2Vzc2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlv
bkhhbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRU
aW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUik7CiAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Np
b24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCA1YTdjM2EzODZmZGIzOThh
NzU3ZTVjZmNmZDg4NTY2ZjEzMDMzNDgyLi5iZTVlZjA4ZGQwZWU2OTkwYWRmMWIzZTAzYjM5MmZl
MDQyOGJmMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNz
aW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCkBA
IC01NSwyMSArNTUsMjEgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VSZWNlaXZlcnMuCiAg
ICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgcGxheVNlc3Npb24oT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9u
YWw8ZG91YmxlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBw
bGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwYXVzZVNlc3Npb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJh
Y2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlKTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSBvdmVy
cmlkZXMuCiAgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KLSAgICB2b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGpvaW4oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYp
IGZpbmFsOwogICAgIHZvaWQgbGVhdmUoKSBmaW5hbDsKLSAgICB2b2lkIHNlZWtUbyhkb3VibGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFs
OwotICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
ZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7CisgICAgdm9p
ZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlh
UG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tTdGF0
ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgZmluYWw7CiAgICAg
dm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KaW5k
ZXggZWE0NTk5NDBiOWJlZjlhNDNhYzlkMjhlM2EzZDkzY2VjNGVkNTg0NC4uMTlkMzdkZGViNDlh
MGUyMTI0MmMzMGJjNmMzMzc4YmY1OTgyMDcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIE5vdFJlZkNvdW50ZWQgewog
CiAgICAgU2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRpbWUpIC0+IChib29sIHJlc3VsdCkgQXN5
bmMKIAotICAgIFBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxk
b3VibGU+IGhvc3RUaW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgUGxheVNlc3Npb24o
c3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RU
aW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKICAgICBQYXVzZVNlc3Npb24oKSAtPiAoYm9v
bCByZXN1bHQpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNw
cAppbmRleCAyMWE2Nzg5MmQ0ZjU0NWFmYzIwYjA5OWEzMDM1ZmZjZjZmODdiZjQ5Li43NDIwN2Ez
NjQ1YTdjNWQ4YjA4YTkxMGYzNTkzMTY0MGRkNTRmZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTWVkaWFEZXZp
Y2VTYW5kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZHMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gaGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBoYW5kbGVzOwogICAgIGRlY29kZXIgPj4gaGFuZGxlczsKICAgICBpZiAoIWhhbmRsZXMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDJm
YTQ1YzRmY2JlY2NiODA0OGEyYzBjZmRiNmMwYzc3M2UxNTM5OTMuLjU0Mzc2ZWExZTI2ZjQwMGZi
NWI3N2M2NTc2YzhmMWNlYjk3YWU5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpicm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzCiB9CiAKICNpZiBFTkFCTEUo
V0VCX1JUQykKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb25uZWN0VG9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgbG9j
YWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgcmVtb3RlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYgY2FsbGJh
Y2spCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdFRvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRl
bnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgY2FsbGJhY2soUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkuY29ubmVjdFRvUmVtb3RlU291cmNlKGxvY2FsSWRlbnRpZmllciwgcmVtb3RlSWRl
bnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyY2YzNTVjOTlhNjFlYzYy
OGU5MGZiNThlMjUwZDFkMWEzZjEwZmZhLi42NDZkMWRmMjdiZTdkNDYxNmQ3MzkzNjA5MjUxNWRk
YThlYWQ1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzQsOCArNzQsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgdm9pZCBzZXROZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBt
X25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBPcHRpb25hbDxh
dWRpdF90b2tlbl90PiBuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oKSBjb25zdCB7IHJldHVybiBt
X25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbjsgfQorICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NB
dWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25l
dHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IG5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuOyB9CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkhU
VFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9jb29raWVBY2NlcHRQb2xpY3k7IH0KQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VC
X1JUQykKLSAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJv
b2w+KT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPGJvb2w+KT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJv
bSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuOwogI2Vu
ZGlmCiAKICAgICBSZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPiBtX3dlYklEQkNvbm5l
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZWEy
YTg2NzNjYzIwOWE1ODRiNjRjMGY4ODVlZmE4NmViZDg1ZTI1My4uYzhiNGExOGY3ZTk0MjQ1NGIw
YWE5NjY2MTJmMTkzYWNmZGFjODY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JUQykK
LSAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3lu
YworICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKHN0cnVjdCBXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3Vs
dCkgQXN5bmMKICNlbmRpZgogCiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oCmluZGV4IDlmNDY4NWQxM2FiZDJiNGFjOGM1
Mzc4YjhlNTEyZjljMDI5ZGIzYjAuLjAzNzYzYWE1ZmI4ZWJkM2JjMjQyNGU3Njk5ZWIxMmI1Zjc4
ZmM2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTM0LDcgKzM0LDcgQEAg
c3RydWN0IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uOwogICAgIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2ll
QWNjZXB0UG9saWN5OwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW47CiAjZW5kaWYKIAogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA1MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZm
MDQ0NDQxNGI3NmJhZDA2Li40YjBiNjZiZWJiZjc2MDliY2E0MGY5MjhlNjQwMThhMzEwZDk5YjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgV2ViTG9hZGVyU3RyYXRlZ3k6OlN5
bmNMb2FkUmVzdWx0IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkRGF0YVVSTFN5bmNocm9ub3VzbHko
Y28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6
U3luY0xvYWRSZXN1bHQ+IFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNs
eVVzaW5nVVJMU2NoZW1lSGFuZGxlcihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQorc3RkOjpvcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6U3luY0xvYWRSZXN1bHQ+IFdlYkxv
YWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxl
cihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGF1dG8qIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5jbGll
bnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/ICZ3ZWJG
cmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC03NzQsNyArNzc0LDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2UKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBC
b3VuZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkxvYWRl
clN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZCgqcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDZlNTZm
YzQwNjdiM2U4OTQ1ZjY1OTgzMTRhMjZmOGJkMmExZmI3NWMuLmNhMjM0OTk1ODY2NmE4MDFiMGUw
YTZiZDc2N2RiYmNjY2ZiNzE2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwogICAgIH07Ci0gICAgT3B0aW9uYWw8U3luY0xvYWRSZXN1bHQ+IHRy
eUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKFdlYkNvcmU6OkZyYW1l
TG9hZGVyJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTeW5jTG9hZFJlc3VsdD4gdHJ5TG9hZGluZ1N5
bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBTeW5jTG9hZFJlc3VsdCBsb2FkRGF0YVVSTFN5bmNocm9ub3VzbHkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRl
bnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBiYzBiY2Q5ZGVmZDIwZWUyY2I4Mjk4ODcyYzg5
MTk3ODI5Mjk1YWQyLi4zYjRhYzI5YjBkZjc2NWMyNDlmNzcyNTcxZjQ5NDY2YzU4OWU3MWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6cGxhdGZv
cm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPAogICAg
IG1fc2VuZERhdGFDYWxsYmFja3MuYWRkKGRhdGFJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U3RyZWFtOjpwbGF0Zm9ybVNlbmRIYW5k
c2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5LCBGdW5jdGlv
bjx2b2lkKGJvb2wsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJTb2NrZXRT
dHJlYW06OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
PiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3QgbmV4dERhdGFJZGVudGlmaWVyID0g
MTsKICAgICB1aW50NjRfdCBkYXRhSWRlbnRpZmllciA9IG5leHREYXRhSWRlbnRpZmllcisrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aAppbmRleCBiNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYxMjczNmEwOTc4Li40NmQwNDc2
NWJlNjcxZWEzNGQ3MWExYTNkMDEzOTliZDIwN2ZhOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlCiAgICAgdm9pZCBwbGF0
Zm9ybVNlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCwgRnVuY3Rpb248dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNp
emVfdCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJik7CisgICAgdm9pZCBwbGF0Zm9ybVNl
bmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2b2lkKGJv
b2wsIGJvb2wpPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKICAgICBzaXpl
X3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IDMyM2Yy
NWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1ZTQuLmM1OGI1OTkzZDMwYTY1NDBjNjRj
ZDlkNWQxMDNjNTFiZjA0ZTU3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTk0LDcgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgU1RBVEVfQklORElORyB9OwogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE1BWF9TT0NLRVRfT1BUSU9OIHsgcnRjOjpTb2NrZXQ6Ok9Q
VF9SVFBfU0VORFRJTUVfRVhUTl9JRCArIDEgfTsKLSAgICBPcHRpb25hbDxpbnQ+IG1fb3B0aW9u
c1tNQVhfU09DS0VUX09QVElPTl07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fb3B0aW9uc1tN
QVhfU09DS0VUX09QVElPTl07CiAKICAgICBEZXF1ZTxzaXplX3Q+IG1fYmVpbmdTZW50UGFja2V0
U2l6ZXM7CiAgICAgc2l6ZV90IG1fYXZhaWxhYmxlU2VuZGluZ0J5dGVzIHsgNjU1MzYgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGZhYjAwZGFkYzY2NDYzNTNjNjgyZjkxOWIwNWUxZWFhYzJiMzFiYzAuLmMwMmY4NDBjNDA3
NDgwMWJkODc0ZjZjZjgzMmU5N2I4ODQxZjVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjM0Miw3ICsyMzQyLDcgQEAg
Ym9vbCBQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAgICAgaWYgKCFuc01lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBPcHRpb25hbDxpbnQ+IG9wZW5JblByZXZpZXdJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludD4gb3BlbkluUHJldmlld0luZGV4OwogICAgIFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+
IGl0ZW1zOwogICAgIGF1dG8gaXRlbUNvdW50ID0gW25zTWVudSBudW1iZXJPZkl0ZW1zXTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1Db3VudDsgaSsrKSB7CkBAIC0yMzU2LDcgKzIzNTYs
NyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKICAgICB9CiAgICAgUERGQ29udGV4dE1lbnUgY29udGV4dE1lbnUgeyBw
b2ludCwgV1RGTW92ZShpdGVtcyksIFdURk1vdmUob3BlbkluUHJldmlld0luZGV4KSB9OwogCi0g
ICAgT3B0aW9uYWw8aW50PiBzZWxlY3RlZEluZGV4ID0gLTE7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IHNlbGVjdGVkSW5kZXggPSAtMTsKICAgICB3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93UERGQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIG1faWRlbnRpZmll
ciksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQREZDb250ZXh0TWVudTo6UmVwbHkoc2Vs
ZWN0ZWRJbmRleCkpOwogCiAgICAgaWYgKHNlbGVjdGVkSW5kZXggJiYgKnNlbGVjdGVkSW5kZXgg
Pj0gMCAmJiAqc2VsZWN0ZWRJbmRleCA8IGl0ZW1Db3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjZmZDQ0NDA3YzI5Nzc1NGJi
MjFiZDQwNmVlYTIwZGRlN2M2ZDFjZS4uYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcw
ZWQzMjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUZy
YW1lTG9hZFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVz
dC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgPyBzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
IDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdldCBm
cmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBi
b29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmlldyBm
cm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9y
IHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nl
c3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxs
b3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9w
dXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgcmV0dXJuIG1fbnBSdW50aW1lT2Jq
ZWN0TWFwLmV2YWx1YXRlKG5wT2JqZWN0LCBzY3JpcHRTdHJpbmcsIHJlc3VsdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCmluZGV4IGM2YWYzZmI4YzQ3YjgxZDZlZTg2NzUwM2Y5ZDVmZjlkMzI2
N2Q4YTguLmE4NWQ2YjdhNzY3NGExOWZlNjc3MzJjMTZiNTYxMzk2YzQxZWRlMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cmVmcmVzaFBsdWdpbnMoKQogI2VuZGlmCiB9CiAKLVZlY3RvcjxQbHVnaW5JbmZvPiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oUGFnZSYgcGFnZSwgT3B0aW9uYWw8VmVjdG9y
PFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMp
CitWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBh
Z2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiYgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgcG9wdWxhdGVQbHVnaW5DYWNoZShwYWdlKTsKQEAgLTg4LDcgKzg4LDcg
QEAgVmVjdG9yPFBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhQ
YWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3IKIAogVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYgcGFnZSwg
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnM7CiAgICAgYXV0byBwbHVnaW5zID0gcGx1Z2luSW5mbyhw
YWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CiAKICAgICBwbHVnaW5zLnJlbW92ZUFs
bE1hdGNoaW5nKFsmXSAoYXV0byYgcGx1Z2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDQ4Mzgz
YjM2M2Y1OTJlYTQwMDk4NjkxZTRiODk5ODA4MWY2MGQ0MzIuLjk3MDY2NmVhYzAwZGEwODhhZGJk
ZGQyZGEwZDBiYzNlZDkyZWRlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKLSAgICBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFs
OworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBh
Z2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlm
aWVyPj4mKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJs
ZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQg
cmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKICAgICBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7Ci0gICAgT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX2NhY2hlZFN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX2NhY2hlZFN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXJzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBhYjU3MGJmZTI5M2Y2
NGFjNzI3MzAzYzlhZWY2ZjA3ODQ0M2YzNjliLi5lNGQ3MWZkMjNkZWJhNGRlYWQxYjEwZmRiOTQy
M2JjMGI2ZTA0NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0
YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCB1c2VyQWdlbnQgfSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVJc0ltcG9ydGVkKCkKICAgICAgICAgbV90YXNrc1Bl
bmRpbmdPcmlnaW5JbXBvcnQudGFrZUZpcnN0KCkoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoaW5nUmVxdWVzdCwg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVzdWx0KQordm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNo
aW5nUmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4m
JiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggNjk3OGExZTUzNzY4MDc1MmE3YzA2MTE5YzQ2YWM0ZjVkM2Q4NDJlYy4uMWI1NTRj
OTQ0OWRhNGVhYTI0NjE3ZjExYTExZmE3NTNiNWQ2ZWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAg
LTczLDEyICs3MywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxl
VW5yZWdpc3RlckpvYkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmluYWw7CiAK
ICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgbWF0Y2hSZXF1
ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE+JiYpOworICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgbWF0Y2hS
ZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCBkaWRHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90
IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50
VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
Z2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IGI3ODE4Njg2OGJlMDg2NDAzMGQwYTEyNGI1Njc1MmNmNWE2MTY3MTEuLmQyMmQ2ZmQ2
OGEyN2ZhM2NhOGQxNzQ1ZjA2NmYyZDI3MGQxYmZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dDbGllbnRD
b25uZWN0aW9uIHsKICAgICBKb2JSZWplY3RlZEluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwg
ZW51bTpib29sIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpCiAgICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZldGNoT3B0
aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCi0gICAgVXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQorICAgIFVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIFVwZGF0
ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlIHN0
YXRlKQogICAgIEZpcmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0UmVnaXN0cmF0aW9uTGFzdFVw
ZGF0ZVRpbWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgV2FsbFRpbWUgbGFzdFVwZGF0ZVRpbWUpCkBAIC0zOCw3ICszOCw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU2V0U1dPcmlnaW5UYWJsZVNoYXJl
ZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKICAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIg
ZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzIG1lc3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSBz
b3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAKLSAgICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1
aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gZGF0YSkKKyAgICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1
aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBkYXRhKQogICAgIERpZEdldFJlZ2lzdHJhdGlv
bnModWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRpb25zKQogICAgIFJlZ2lzdHJhdGlv
blJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdElkZW50aWZpZXIsIHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMDkwMDU0ZjAxNjA2NTlmMDZmYjU3ZTEz
MjNhYWYzYmQwY2EzODE2MS4uNjM4NDExN2NkNWUxNTUxNmQwOThjZWFiMDZkM2M1NDliN2QxYzhk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTcyLDEyICsxNzIs
MTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0VXNlckFnZW50KFN0
cmluZyYmIHVzZXJBZ2VudCkKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsK
IH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0
YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgZG9lc0hhbmRsZUZldGNoKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6c2VydmljZVdvcmtlclN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCiB7CiAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3RhcnRlZCB7IGpvYkRhdGFJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZG9lc0hhbmRsZUZldGNoIH0sIDApOwogfQogCi12
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyRmFpbGVkVG9T
dGFydChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6c2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNl
cHRpb25NZXNzYWdlKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQgeyBqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGV4Y2VwdGlvbk1lc3NhZ2UgfSwgMCk7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIHNlcnYKICAgICB9CiAKICAgICBhdXRvIGNsaWVudCA9IFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLmNv
cHlSZWYoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1
ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4pOwotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBjbGllbnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBjbGllbnRJZDsKICAgICBpZiAob3B0aW9ucy5jbGllbnRJZGVudGlmaWVy
KQogICAgICAgICBjbGllbnRJZCA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG9wdGlvbnMuY2xpZW50SWRlbnRpZmllci52YWx1ZSgp
IH07CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4p
LCAwKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNo
SW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZGlkRmluaXNoSW5zdGFsbChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxsKGpvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCksIDApOwogfQpAQCAtMzE5LDcgKzMxOSw3IEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZp
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlCiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpGaW5kQ2xp
ZW50QnlJZGVudGlmaWVyIHsgcmVxdWVzdElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGll
bnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNs
aWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKIHsKICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZp
ZXIpKSB7CiAgICAgICAgIGlmIChoYXNTZWN1cml0eUVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCA5NWQ4MTgxZjIzNTM2ZjBlYjMyYWFkZDhiN2U3ZWQ2ZjdlNjY1
MjYyLi4zMzE0MzM5ZTA5M2JjNjVjNzJkYmE1MmNlYWRhYWM3NDUyZjFjZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLgogICAgIHZvaWQgZXN0YWJs
aXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9p
ZCB3b3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRD
aGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAKICAgICAvLyBJ
UEMgbWVzc2FnZXMuCi0gICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChPcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFsOwotICAgIHZvaWQgc2Vy
dmljZVdvcmtlckZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlV29ya2Vy
U3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVG
ZXRjaCkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2Up
IGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0
cmluZyYmIHJlZmVycmVyKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpT
Y3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBv
cnRlZFNjcmlwdHMpOwogI2VuZGlmCi0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKKyAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRf
dCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2Vu
dCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTMxLDggKzEzMSw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9mcmFtZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgppbmRleCA4NGIxNjhhMDQwZWNkYmM4NTI2NThmN2Q2Y2FkMTA1MWJj
MzZhZTNiLi5mNjY0YTRlOTEyMmMxNTFlMmM1Njc1NTA5MDVlYzk1MDI1NzdiYjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyAr
MzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlw
dCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsK
ICNlbmRpZgotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xp
ZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKKyAgICBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wg
aGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFs
bFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGNsaWVudHNEYXRhKQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAg
IFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBlMGY0N2Q4
NmE5NjhmYzhjZjk1Y2VmM2EzZTE1MDQzNTRiYjFlZjU1Li45ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4
ZGY1NDMwNGVlNzUzMTY5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOwotICAgIE9wdGlvbmFs
PEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+
IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBWYXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5p
cXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggZmI2MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0
OThlODBkMGVmNTYxNy4uNzJlZTliYTRhNTJhMDA4OTMxOWYyZGYwMjVmYzBmYmZmNWYxYzA4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygp
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3Jp
cHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgT3B0aW9u
YWw8dWludDY0X3Q+JiB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3Jp
cHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKK3ZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU2Ny
aXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBpZiAoaW1tZWRpYXRlbHkgPT0gSW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpIHsKICAgICAgICAgUGFnZTo6Zm9yRWFjaFBhZ2Uo
WyZdIChhdXRvJiBwYWdlKSB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1f
dXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgW10geyByZXR1cm4gVmVjdG9yPHN0ZDo6cGFpcjxP
cHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+
dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgm
d29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50NjRf
dD4sIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KHVzZXJTY3JpcHRJZGVudGlmaWVyICYmIHNjcmlwdHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0o
YXV0byYgcGFpcikgeyByZXR1cm4gcGFpci5maXJzdCA9PSB1c2VyU2NyaXB0SWRlbnRpZmllcjsg
fSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDcwLDkgKzQ3MCw5IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiB3b3JsCiAgICAgbV91c2VyU2NyaXB0cy5yZW1vdmUoJndvcmxkKTsK
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0SW50
ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IE9wdGlvbmFsPHVp
bnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyLCBVc2VyU3R5bGVTaGVldCYmIHVzZXJT
dHlsZVNoZWV0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFVzZXJTdHlsZVNo
ZWV0JiYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0g
bV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgW10geyByZXR1cm4gVmVjdG9yPHN0ZDo6
cGFpcjxPcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4oKTsgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0
eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICh1c2VyU3R5bGVTaGVldElkZW50aWZpZXIgJiYgc3R5bGVT
aGVldHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgcGFpcikgeyByZXR1cm4gcGFpci5m
aXJzdCA9PSB1c2VyU3R5bGVTaGVldElkZW50aWZpZXI7IH0pICE9IG5vdEZvdW5kKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCBjZTkwYTlkOTNl
NDEwODIyYmQzNDZlZDI2MjQ4Njk1OTM3NmEwZjMxLi4yMGZmODUxNWIxMmIxOWIxZmRkYjkwYWI3
ODdmMGE4MTFjNjRiNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC0xMDgs
OSArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMo
KTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdXNlclNjcmlwdElkZW50
aWZpZXIsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mIHVzZXJTY3JpcHRJZGVudGlmaWVy
LCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAg
ICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZFVzZXJTdHls
ZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFs
PHVpbnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU3R5bGVT
aGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwogICAgIHZvaWQgcmVt
b3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWlu
dDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdF
X0hBTkRMRVJTKQogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xMTksMTAgKzExOSwxMCBA
QCBwcml2YXRlOgogCiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPE9wdGlvbmFsPHVpbnQ2NF90PiwgV2ViQ29yZTo6VXNl
clNjcmlwdD4+PiBXb3JsZFRvVXNlclNjcmlwdE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4+IFdvcmxkVG9Vc2VyU2NyaXB0
TWFwOwogICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1fdXNlclNjcmlwdHM7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3Rk
OjpwYWlyPE9wdGlvbmFsPHVpbnQ2NF90PiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+Pj4gV29y
bGRUb1VzZXJTdHlsZVNoZWV0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4sIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50
NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4+IFdvcmxkVG9Vc2VyU3R5bGVTaGVldE1h
cDsKICAgICBXb3JsZFRvVXNlclN0eWxlU2hlZXRNYXAgbV91c2VyU3R5bGVTaGVldHM7CiAKICNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcAppbmRleCA3OWEwNDYyOWM5YzIyNzFmNTk0NWE0NTFhMmFhYTMxYTU0NjA4
MjRkLi42NDdhNzc1MDFjZDljMjRkMDlmYTVjMWU3OTg2ZDY5OWFlYmMwNTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwg
T3B0aW9uYWw8RmxvYXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFn
ZXMgYWxsb3dBbmltYXRlZEltYWdlcykKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNo
YXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFnZXMgYWxsb3dBbmlt
YXRlZEltYWdlcykKIHsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IHJlbmRlckltYWdlLmNhY2hl
ZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCmluZGV4IGFmM2Q5ZThh
ZDRiNmU2ZDQxNGQ0MjM1NDhhMzI5NDcyMmYxNzE3NTMuLjAwOGNmZDc4MmQwN2VmZGJlNzhiMmI2
NjQ0YmU1ODFiMTJkM2VjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgK
QEAgLTM4LDYgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRt
YXA7CiAKIGVudW0gY2xhc3MgQWxsb3dBbmltYXRlZEltYWdlcyA6IGJvb2wgeyBObywgWWVzIH07
Ci1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6
UmVuZGVySW1hZ2UmLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNjcmVlblNpemVJblBp
eGVscyA9IHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlcyA9IEFsbG93QW5pbWF0ZWRJ
bWFnZXM6Olllcyk7CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRt
YXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2Vz
ID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggMThjMTc1OTJkNGM0OTM5YjkzZWUzNTI5Y2I1Y2ZiNjA1OThiNDkwOC4uZTlmNDZkOTFm
MDEwNDM3ZDliOWFkZDhmYjI4NzZkMDhjNGU5NDMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTI4Miw4ICsyODIsOCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhG
cmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZQogCiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKLSAgICBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG5ld1BhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uo
d2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmll
cigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywg
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQ
YWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCBJ
UEM6OlRpbWVvdXQ6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246Ok1haW50YWluT3Jk
ZXJpbmdXaXRoQXN5bmNNZXNzYWdlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01
MzEsNyArNTMxLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmhvdmVyU3VwcG9ydGVkQnlBbnlB
dmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5ob3ZlclN1
cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKIH0KIAotT3B0aW9uYWw8UG9p
bnRlckNoYXJhY3RlcmlzdGljcz4gV2ViQ2hyb21lQ2xpZW50Ojpwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzPiBXZWJDaHJvbWVDbGllbnQ6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5wb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKTsKIH0KQEAgLTg0OCw3
ICs4NDgsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbGV0aQogICAgIG1fcGFnZS5zaG93U2hhcmVT
aGVldChzaGFyZURhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKQogewogICAg
IG1fcGFnZS5zaG93Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUKICAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvbW1lbmRlZFNjcm9sbGJhclN0
eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1N0eWxlKSkpOwogfQogCi1PcHRp
b25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PiBXZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7CiAg
ICAgcmV0dXJuIG1fcGFnZS5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA4NzhhNTg2Yjk3NGY4NDE5Mzc0ZWYyZmMzYmY4NGRkNDU5YTk3MzhhLi41N2Qz
MjhmZTY4Zjg1NGJkODk1MzM5ZDQzNWJlZWE2ZDJkNmEyN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRC
eVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaG92ZXJTdXBw
b3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3Rlcmlz
dGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09m
QWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBIb3N0
V2luZG93IG1lbWJlciBmdW5jdGlvbiBmaW5hbHMuCkBAIC0yMDEsNyArMjAxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Rmls
ZUNob29zZXImKSBmaW5hbDsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFj
dHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBzaG93Q29u
dGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyJikgZmluYWw7CiAKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBmaW5hbDsKQEAgLTMyNiw3ICszMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAgICAgdm9pZCByZWNvbW1lbmRlZFNj
cm9sbGJhclN0eWxlRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGJhclN0eWxlIG5ld1N0eWxlKSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJl
ZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5jcHAKaW5kZXggNzczZjIwNTU5N2RkMDg3YjRkODMxYTU3ODNjYTM0YzdmNjQwYzFj
ZS4uYTEzMDIyY2I4ZjZlZTY2MzkzM2RkODRiNjdmOGY2ZjA0NDA4Y2VkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcApAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmRldmlj
ZU9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUgYWxwaGEsCiAgICAgfQogfQogCi12b2lkIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmRldmljZU1vdGlvbkNoYW5nZWQoZG91Ymxl
IHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlv
biwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgT3B0aW9uYWw8ZG91YmxlPiB4Um90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IHlSb3Rh
dGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkKK3ZvaWQgV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjo6ZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHlSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQogewog
ICAgIFZlY3RvcjxXZWFrUHRyPFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGllbnQ+PiBjbGllbnRz
OwogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9kZXZpY2VNb3Rpb25DbGllbnRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgKaW5kZXggMmZi
ZWJiNGI1YTNjOGY0MTAyY2YxYjMzMzdjOWI4Mzk3YzY3NGNlMy4uMzJkNTIxNjg5YWMwODg3NGVh
MDVjNjExZDc3MzliYjNmMzNkZGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nRGV2aWNlTW90aW9uKFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZ0RldmljZU1vdGlvbihXZWJDb3JlOjpN
b3Rpb25NYW5hZ2VyQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNo
YW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpIGZpbmFsOwotICAg
IHZvaWQgZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgZG91YmxlLCBPcHRpb25hbDxkb3VibGU+LCBPcHRpb25hbDxkb3VibGU+LCBPcHRp
b25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIGRldmljZU1vdGlvbkNoYW5nZWQoZG91Ymxl
LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmlu
YWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5t
ZXNzYWdlcy5pbgppbmRleCBhOTk1NDdjMjZkMjc2NjJhODIxMTQwY2Q0NDJhNWQyMGQyMmZlMDQx
Li4zMzljZDIxNWQ4NTU1MzIyNGJiNjY4NjdlN2E5NjU3MTY5YTVjNjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNz
YWdlcy5pbgpAQCAtMjMsNiArMjMsNiBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiBtZXNzYWdlcyAtPiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyIHsKICAgICBEZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQoZG91YmxlIGFs
cGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGRv
dWJsZSBjb21wYXNzQWNjdXJhY3kpCi0gICAgRGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBP
cHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4geVJvdGF0aW9u
UmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQorICAgIERldmljZU1vdGlvbkNo
YW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUg
ekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3Vi
bGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gelJv
dGF0aW9uUmF0ZSkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAwMDVmN2Jl
MGU1NWU4MTQzZGQwNjdjYmE0MzMzNDEwYjYwMDdiMWJhLi45MzBjYjMzMzYxZGQzOGQ3Y2E2MzBm
NDUxMmVkZjExMTVhMmM3ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQoKQogICAg
IHJldHVybiB1bmlxdWVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQrKzsKIH0KIAotYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UpCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkRGVsZXRlUmFuZ2UoKm1fcGFnZSwgcmFu
Z2UpOwogfQpAQCAtMTI2LDIyICsxMjYsMjIgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3Vs
ZEVuZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkRW5kRWRpdGluZygqbV9wYWdlLCBy
YW5nZSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUm
IG5vZGUsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRv
ckluc2VydEFjdGlvbiBhY3Rpb24pCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0
Tm9kZShOb2RlJiBub2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VU
b1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgcmV0dXJuIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRJbnNlcnROb2RlKCptX3BhZ2Us
IG5vZGUsIHJhbmdlVG9SZXBsYWNlLCBhY3Rpb24pOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVu
dDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiti
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZVRvUmVwbGFjZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uIGFjdGlvbikKIHsKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCgpLnNob3VsZEluc2VydFRleHQoKm1fcGFnZSwgdGV4dCwgcmFuZ2VUb1Jl
cGxhY2UsIGFjdGlvbik7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5
LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgqbV9wYWdlLCBmcm9t
UmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVjdGluZyk7CiB9CiAgICAgCi1ib29s
IFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHN0eWxlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9w
YWdlLCBzdHlsZSwgcmFuZ2UpOwogfQpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZGlkV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSk7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9w
YWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggYmFkMGNiMzcxMmE0Mzg1MjBiNThlMTZiMjA0MzZkZWE4NGQ1NTAzNi4u
MzBlNTZmNzM4ZGQ4ZTVjMTA1MDhmY2FjMDdlNjU1OTY1ZjdiNDlkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJv
b2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgZmluYWw7CiAgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkgZmluYWw7CkBAIC01NiwxMSArNTYsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICBi
b29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFs
OwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYp
IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0
aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0
QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3Jl
OjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJD
b3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7CisgICAgYm9vbCBzaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7
CiAgICAgCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUHJv
cGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0
ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYpIGZpbmFsOwogCkBAIC04NSw5ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxlZENvbXBvc2l0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVDb21wb3NpdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwotICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAzZWExY2EwNjcwYmNjMDQ0NGQxMDQxMjE3NGU2OGVmMDk4
YzllMmIyLi41ZWQyMzFjODU1YzA1OWVkYWY3MzQ4MWQ1MGI5MzE4ZTRlZTYyMTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKICAgICBtX2ZyYW1lLT5pbnZhbGlk
YXRlKCk7CiB9CiAKLU9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQ
YWdlUHJveHlJRCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJ
RCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
ZnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZnJhbWUtPmZyYW1lSUQoKTsKIH0KQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0cnVuY2F0ZWRU
aXRsZS5zdHJpbmcsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIE9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IHVz
ZWRMZWdhY3lUTFNGcm9tUGFnZUNhY2hlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJ
bnNlY3VyZUNvbnRlbnQsIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRM
U0Zyb21QYWdlQ2FjaGUpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC05NDksOCArOTQ5LDggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBhdXRvIHJlcXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVy
KCkudmFsdWUoKTsKIAogICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFtZSA9IHJlcXVlc3Rlci5nbG9i
YWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLmZyYW1lSUQpIDogbnVsbHB0
cjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nRnJh
bWVJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1l
SUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nRnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
cGFyZW50RnJhbWVJRDsKICAgICBpZiAocmVxdWVzdGluZ0ZyYW1lKSB7CiAgICAgICAgIG9yaWdp
bmF0aW5nRnJhbWVJRCA9IHJlcXVlc3RpbmdGcmFtZS0+ZnJhbWVJRCgpOwogICAgICAgICBpZiAo
YXV0byogcGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJhbWUtPnBhcmVudEZyYW1lKCkpCkBAIC05
NjUsNyArOTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAgICAgV1RGTW92ZShw
YXJlbnRGcmFtZUlEKSwKICAgICB9OwogCi0gICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKICAgICBpZiAoYXV0byYgcGFnZUlEID0gcmVx
dWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLnBhZ2VJRCkgewogICAgICAgICBpZiAoYXV0
byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKSkKICAg
ICAgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gd2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpOwpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93KQogfQogCiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggOTczNmRmNWJlNzJhY2NmMjVjOWYzZGQxZGMzNzE4MzJkNjc0NjUwYi4u
OTM4NmVmYTU5YTU1NTU2NWUxYTQ2NGJiZDc4MmI3NTRjZWQ4MTk0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlEKCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5
SUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkg
ZmluYWwgeyByZXR1cm4gISFtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcjsg
fQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9z
ZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6
OlVzZWRMZWdhY3lUTFM+KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKQEAgLTI3MSw3ICsyNzEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyYpIGZpbmFsOwog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVmPFdlYkZyYW1l
PiBtX2ZyYW1lOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZyYW1l
Q2FtZUZyb21CYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlSWNvbkxv
YWRpbmdDbGllbnQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgT3B0aW9uYWw8RnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyPiBt
X2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDVjOGMwOWQ3ZmU2MzFk
MWQ0MGY1Mzg5Y2VhMDdmNjEwMTYyMTczZWUuLmVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2NzhkODZh
NDk4MTFkOGMzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCBlbmFibGVkKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFn
ZSwgZW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmlu
ZGV4IGVjODMwY2ViMDNhZmEzZTAxM2ZkYTA2ZjE0MGU1NDQ2NGQxZGUzNjkuLmIxNjgxNjc0ODk2
MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCBhNjlkZDY1MjNiMWNmNmRjOWY1YWQ1OGM2OWQ5ZDNjYzViMTVjYzE2Li4wMjhlOGM2ZTNl
ODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogICAgIHJldHVybiBuZXcgQmxvYlJlZ2lz
dHJ5UHJveHk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50
aWZpZXIoY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIoY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFpczxQYWdlUGFzdGVib2FyZENvbnRleHQ+KGNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzkzLDE2ICszOTMsMTYgQEAg
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gaXRlbXNDb3VudDsKIH0KIAotT3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbEluZm87CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbzsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVi
b2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5m
byksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewot
ICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSwg
Y2hhbmdlQ291bnQsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwog
ICAgIHJldHVybiBpbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGIz
OGEwYjFkMGU1ZjlmODFiNTFlZjk2MjM5N2Y3NDhmYzg0YzhkMDIuLmUyODA5OTYzZjRmNTA2ODFi
N2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTkyLDggKzkyLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2
NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBib29sIGNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKaW5kZXggZjQ3NWNiMzNlYTg5NzQyY2E0ZTMzN2VjZDU2MGM4ZmM5MDM5NDYx
NC4uYmI0NzA5OTM2MDE4ZTQ5MTFlNDA3ODUyZGRkMTRiYTlhMDJlNzY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlIHsKICAgICBib29sIGRlZmF1bHRMYW5nIHsgZmFsc2UgfTsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTEsMjkgKzUxLDI5IEBA
IHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxT
dHJpbmc+IHZvaWNlVVJJOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2b2ljZVVSSTsKICAg
ICBkZWNvZGVyID4+IHZvaWNlVVJJOwogICAgIGlmICghdm9pY2VVUkkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFt
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4g
bGFuZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFuZzsKICAgICBkZWNvZGVyID4+IGxh
bmc7CiAgICAgaWYgKCFsYW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gbG9jYWxTZXJ2aWNlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9j
YWxTZXJ2aWNlOwogICAgIGRlY29kZXIgPj4gbG9jYWxTZXJ2aWNlOwogICAgIGlmICghbG9jYWxT
ZXJ2aWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gZGVmYXVsdExhbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0TGFuZzsKICAg
ICBkZWNvZGVyID4+IGRlZmF1bHRMYW5nOwogICAgIGlmICghZGVmYXVsdExhbmcpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5oCmluZGV4IGNiMjM4OWZjMGRiMGZiMTgwMGY2MWFkOWY0MGY4MWEyNDkzMWU1YjMuLjdjYTNl
ZDBkZjU4ZjAxZTY1MThkOGU0Y2YwYWNiOGY2NGFiNjFjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdlYkNvcmU6OlNpbXBsZVJhbmdlIHJhbmdlOwogICAgICAgICBzaXplX3QgbG9jYXRpb25JblJv
b3Q7ICAgIAogICAgIH07Ci0gICAgT3B0aW9uYWw8UmFuZ2VBbmRPZmZzZXQ+IHJhbmdlQW5kT2Zm
c2V0UmVsYXRpdmVUb1NlbGVjdGlvbihpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgbGVuZ3RoKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJhbmdlQW5kT2Zmc2V0PiByYW5nZUFuZE9mZnNldFJlbGF0aXZl
VG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCk7CiAKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgcmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oY29u
c3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1
aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWlu
dDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHkubW0KaW5kZXggNGVkM2VmOTUwNWY1MWYzMjg1NTQzMDE0OTJhYzVhNGU2
OTI0ZGNiZC4uNzBkMWFiYjIwYTY0ZmVhMzkwMGY0YzcyOGRkZWFjNWUxYWU1M2VmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtNzEsNyArNzEsNyBAQCBz
dGF0aWMgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiByZWxldmFudE1hcmtl
clR5cGVzKCkKICAgICByZXR1cm4geyBEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tp
bmcsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIgfTsK
IH0KIAotT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNl
dD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJlbGF0aXZlVG9T
ZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJlbGF0aXZlVG9TZWxlY3Rpb24oaW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBhdXRvJiBmcmFtZVNlbGVjdGlvbiA9
IG1fcGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5zZWxlY3Rpb24oKTsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZVNlbGVjdGlvbi5zZWxl
Y3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCmluZGV4IGQ5Y2QyMTI2YmUxNWY1YTViNjIyNmI0MmI5ZGI3Yzc5ZjE5NWQzMDIuLmJkYzNk
YmVlN2U1OGJkY2NhNTUxYjg1ZDkyNThmNzBkYzM0ZGRhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtOTUsOCArOTUsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pID0g
MDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3Qg
LypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkqLywgTW9ub3RvbmljVGltZSAvKnN0YXJ0
VGltZSovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQo
dWludDY0X3QgLypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkqLykgeyB9CkBAIC0xODAs
NyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2Uo
T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldENvbG9yU3BhY2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBmMmY5OTczMDgzNGFiYjZjY2Q5Zjgz
NjNhZmY3MWY4ZjliNTQ3OWNmLi5hOGZmNGY1YTc5NDdkODkwZDdhOTczNWRkNjhkYjVjNDgxMDE3
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzEsOCArMzEsOCBAQCBtZXNzYWdlcyAtPiBEcmF3
aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAg
ICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRD
b2xvclNwYWNlKHN0cnVjdCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2UpCi0gICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQorICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQorICAg
IFNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmll
d0V4cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggYjYyOThkNWRkN2Y0
NmE3ZjhhNWY0MjEzNzAyMDdhYTU3YzNkYzU5OS4uMzY2ZWZkYjliNTI2YjRiMTFkMDY0MGRlZmE1
N2JlYTc0ZTIwMjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBjcmVhdGVUeXBlRXJyb3IoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICByZXR1cm4gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0
KSwgbWVzc2FnZSkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGNvbnZlcnRUb1Vp
bnQ2NChKU0M6OkpTVmFsdWUganNWYWx1ZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCiB7CiAgICAgaWYgKGpzVmFs
dWUuaXNOdW1iZXIoKSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBqc1ZhbHVlLmFzTnVtYmVy
KCk7CkBAIC02NjUsNyArNjY1LDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6YWRkT3V0Z29pbmdNZXNz
YWdlTGlzdGVuZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLAogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHVp
bnQ2NF90PiBkZXN0aW5hdGlvbklERnJvbUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlc3RpbmF0aW9uSURGcm9tQXJndW1lbnQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlUmVmLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KUyhnbG9iYWxP
YmplY3QsIHZhbHVlUmVmKTsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRUb1VpbnQ2NChqc1Zh
bHVlKTsKQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGRlc3Rp
bmF0aW9uSURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gbWVzc2FnZUlERnJv
bUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2
YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWVSZWYgdmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgdmFsdWVSZWYpOwogICAgIGF1dG8g
cmVzdWx0ID0gY29udmVydFRvVWludDY0KGpzVmFsdWUpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gYm9vbCBlbmNvZGVOdW1lcmljVHlwZShJUEM6
OkVuY29kZXImIGVuY29kZXIsIEpTCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclR5cGU+Ci1PcHRpb25hbDxPYmplY3RJZGVudGlm
aWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGpzT2Jq
ZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1lLCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQor
c3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0
T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1l
LCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQogewogICAgIGF1dG8ganNQcm9wZXJ0eVZhbHVlID0g
anNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxPYmplY3QtPnZtKCksIHByb3BlcnR5TmFtZSkpOwogICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkKQEAgLTEyNzAsNyArMTI3MCw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OmNyZWF0ZVNoYXJl
ZE1lbW9yeShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CiAKLSAgICBhdXRvIHNpemUgPSBhcmd1bWVudENvdW50ID8gY29udmVydFRvVWludDY0
KHRvSlMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHNbMF0pKSA6IE9wdGlvbmFsPHVpbnQ2NF90PiB7
IH07CisgICAgYXV0byBzaXplID0gYXJndW1lbnRDb3VudCA/IGNvbnZlcnRUb1VpbnQ2NCh0b0pT
KGdsb2JhbE9iamVjdCwgYXJndW1lbnRzWzBdKSkgOiBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB7
IH07CiAgICAgaWYgKCFzaXplKSB7CiAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJy
b3IoY29udGV4dCwgIk11c3Qgc3BlY2lmeSB0aGUgc2l6ZSJfcyk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTEzNDIsNyArMTM0Miw3IEBAIEpTVmFs
dWVSZWYgSlNJUEM6OnJldHJpZXZlSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTVmFsCiAgICAgcmV0dXJuIHRvUmVmKHZtLCBqc1ZhbHVlKTsKIH0KIAot
c3RhdGljIEpTQzo6SlNWYWx1ZSBjcmVhdGVKU0FycmF5Rm9yQXJndW1lbnREZXNjcmlwdGlvbnMo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPcHRpb25hbDxWZWN0b3I8SVBDOjpB
cmd1bWVudERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERlc2NyaXB0aW9ucykKK3N0YXRpYyBKU0M6
OkpTVmFsdWUgY3JlYXRlSlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8SVBDOjpBcmd1bWVu
dERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERlc2NyaXB0aW9ucykKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50RGVzY3JpcHRpb25zKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCmluZGV4IDc5MWYx
ZDA2ZmMyYjA3YjkwYWZlZGI4MmQ5MTY5ZWJlODY4NmFmYTkuLjZhMjhhZTk3Zjg2MWY0ZjViY2Ix
YzkzNGFiZjAyODlmYjBhMDBiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICBzdGF0aWMgT3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAg
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICAgICAgU3RyaW5nIGtleVBhdGg7CiAgICAgICAgIFBsYXRmb3JtQ0FBbmltYXRp
b246OkFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KaW5kZXggZTI1NTEwMTA2ZTkxMDhhNzgx
YzY0ODMyZmVkZjgyMWEyY2I1NzYwNy4uNmQ4NjYxN2UxYTE3ZDgzZDA0N2IxMzkyMzE1ZWY5OTUx
NTFiOWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUubW0KQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUaW1pbmdG
dW5jdGlvbihJUEM6OkVuY29kZXImIGVuY29kZXIsIFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdQog
ICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29k
ZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29kZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBUaW1pbmdGdW5jdGlvbjo6VGltaW5nRnVuY3Rpb25UeXBl
IHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBhbmltYXRpb25zOwogfQog
Ci1PcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVz
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRp
ZXMgcHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5UGF0
aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggMDEwMTgxMzU4OGY4NTAwZWZmNmY0NzY4MWY3
NjFiMzNjMTcyZGJhNy4uNWVhNmM3MjJiNjk3YmE0ZmE3MmRjOTVjMjMzMjdkODA5ZjcyYjhjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
aXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbCB7IH0KLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vj
b25kKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+
IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CiAKICAgICB2b2lkIGFkanVz
dFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRleCA5MmI5YTQzNmRlOGIyMTMzYTUyODcxZTg5
YTgwNDliYjcyNjNiMTg0Li5jYzM5ZTNkMTYyNGY5N2M4ODljYmRjY2VlNjRlNjkwZjdkYTc1YWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnVwZGF0ZURyYXdpbmdBcmVhKFJlbW90ZUxh
eWVyVHJlZURyYXcKICAgICBtX2RyYXdpbmdBcmVhID0gbWFrZVdlYWtQdHIoZHJhd2luZ0FyZWEp
OwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIHJldHVybiBtX3ByZWZl
cnJlZEZyYW1lc1BlclNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNzMwYTJkNjkwODg0OWIyMjUyNmRjNDIzODBm
Njk3YTlmY2JjYzViYy4uZjMwYjExMzRlMjNkNTEwM2QyMDNhYzU5OWNkMmY3MTFjYTEyOTVmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmgKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVj
dChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CisgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBjb25zdCBTdHJpbmcmIGtleSwgTW9ub3Rv
bmljVGltZSBzdGFydFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRp
b25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmll
d1NpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRS
ZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2Vk
UmVjdDsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBkYXRlUmVuZGVyaW5nVGltZXI7CiAgICAg
Ym9vbCBtX2lzUmVuZGVyaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBjYmVkNGFiZWUw
MDE0M2E2ZTBiYjYwODFhZDNmNzhjOWFhZmNlODU4Li5hMThiMzE1ZTZhZDAwZjBlNGYwOWVmYWFi
MTYzY2Y1MjUzNTg5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6YWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5
ZXJJRCwgY28KICAgICBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQtPmFuaW1hdGlvbkRpZEVuZChs
YXllcklELCBrZXkpOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRW
aWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJl
Y3QpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRWaWV3RXhwb3NlZFJlY3Qo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAg
ICBtX3ZpZXdFeHBvc2VkUmVjdCA9IHZpZXdFeHBvc2VkUmVjdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcAppbmRleCBkNmEwMDdmZWYwZmNmN2VhY2ViMmExYWVjYjhkY2IzMzNm
Njg2MmE2Li4zZmRkZWI4MDQ1ZTJiODk2NWQ4ODY3NGZjNmE2MzBlM2QyNzI2MTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0cnVjdCBG
b250U2l6ZUFuZENvdW50IHsKICAgICB1bnNpZ25lZCBjb3VudDsKIH07CiAKLU9wdGlvbmFsPHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNv
bXB1dGVUZXh0TGVnaWJpbGl0eVNjYWxlcyhkb3VibGUmIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExl
Z2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3
cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZm9udFNpemVC
aW5uaW5nSW50ZXJ2YWwgPSAyOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bU51bWJl
ck9mVGV4dFJ1bnNUb0NvbnNpZGVyID0gMjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5o
CmluZGV4IGIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYuLmY3Zjk5OGFh
YzAxNjk3Y2Q0NzdmOTVmNTM2ZWM2YjgyNTM4ZDIxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVNaW5p
bXVtQW5kTWF4aW11bVZpZXdwb3J0U2NhbGVzKGRvdWJsZSYgdmlld3BvcnRNaW5pbXVtU2NhbGUs
IGRvdWJsZSYgdmlld3BvcnRNYXhpbXVtU2NhbGUpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjb21wdXRl
VGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91Ymxl
JiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAjZW5kaWYKIAog
ICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkOwogI2Vsc2UKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBk
b3VibGU+PiBtX2NhY2hlZFRleHRMZWdpYmlsaXR5U2NhbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gbV9jYWNoZWRUZXh0TGVnaWJpbGl0eVNjYWxlczsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGVhMzVlNDllZmI1MjQy
ZWI3NzEwNDEzNmEyNmFmMzYxM2RjMWRiOTMuLjIzZmVmY2VhNWJmNDRjYTIwMGI3NjlkZmY4NTNk
ZThiMjk5Y2NmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRl
eChpbnQgaXRlbUluZGV4KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRl
bUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6
UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggYTYwN2YyMzhkNzVhYjY2YWUzNGY5ZTNl
MTExYjY3OGJiNzg5ZDU1Yy4uNzFjOGY0MWI2MzcwZGMyYjllNjk4NTM1NGNkYWM0MzE5YTQzMmE4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwotICAgIG11dGFi
bGUgT3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJk
TGlzdENvdW50czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKaW5kZXggNGU1NDU5NTFmODJmMjQ5YzFjZTcxNjhiZTdlZjc4MGRlNDFkZGM2
Mi4uNjMzODI4OTgzZWY3NzYzMjM5MmQwZGJjMmU0YTkwNDg5ZTM0MGI5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMTMs
NyArMjEzLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29va2llc0VuYWJsZWQoKTsKIH0KIAot
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29r
aWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2ll
c0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyA9IFNob3VsZEFza0lUUDo6Tm87
CiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKQEAgLTIzOCw4ICsyMzgsOCBAQCBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKLSAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHN0ZDo6bWFrZV9vcHRp
b25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0
ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2Vi
RnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJh
bWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFn
ZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vz
cywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShy
YXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5k
ZXggNzBmODdhYzhiMTk0YjIyMGMyODVjZGIyMGVkOGNlZmZkN2VjYTI4Yy4uYmM3ODUwMmIxOGI5
OTRhM2ZmYTQ3YjkzMzI3M2ViZGI4NGZhZmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3Qg
V2ViQ29yZTo6Q29va2llJikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IGI3MmZkOTIwNjY1N2NlN2JmMjQ3ODI0Yjc0YzE3YjI2MGQ5NjAyMmUuLjE1NDE1NmJkYjQ2
ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5Y2E3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBGcmFtZUluZm9E
YXRhIFdlYkZyYW1lOjppbmZvKCkgY29uc3QKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KHVybCgp
KSwKICAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUuZ2V0
KCkpLAogICAgICAgICBtX2ZyYW1lSUQsCi0gICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpudWxsb3B0
LAorICAgICAgICBwYXJlbnQgPyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpudWxsb3B0LAogICAgIH07CiAKICAgICBy
ZXR1cm4gaW5mbzsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25s
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaQog
ICAgIH0KICAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGlj
eURvd25sb2FkSUQsIHN0ZDo6bnVsbG9wdCk7CiAKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
bzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJv
dW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlzQXBwQm91bmQgPSBt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBvbGlj
eURvd25sb2FkSUQsIHJlcXVlc3QsICBpc0FwcEJvdW5kLCBzdWdnZXN0ZWROYW1lKSwgMCk7CiB9
CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAg
ICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CiAgICAgaXNB
cHBCb3VuZCA9IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICB3ZWJQcm9jZXNz
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSwgaXNBcHBCb3VuZCksIDApOwogfQpAQCAtODgxLDcgKzg4MSw3
IEBAIGJvb2wgV2ViRnJhbWU6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0
aW9ucygpCiAgICAgcmV0dXJuIHRyZWVIYXNOb25BcHBCb3VuZEZyYW1lOwogfQogCi1PcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gV2ViRnJhbWU6OmlzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBXZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJvbUNvcmVGcmFtZShtX2NvcmVGcmFtZS0+bWFp
bkZyYW1lKCkpLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCAxYmYwZTY4MDgxNmM4NTg4
M2ZiZTMyYmM0YTEyNWM2MDZiMzYzYjI4Li42OWZlN2JlZjczMTA2MjQ5MTkxMzM2Njg3NDhmMDk4
YjM5NjEyNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKTsKLSAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
IHsgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsgfTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsgfQotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdDsKKyAgICB2
b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgeyBtX2lz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47IH0KKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdDsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtMjAxLDExICsyMDEsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFdlYkNvcmU6OkZyYW1lPiBtX2NvcmVGcmFtZTsKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5
TGlzdGVuZXJJRCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXI+IG1fcG9saWN5SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllcj4gbV9wb2xpY3lJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24gbV9wb2xpY3lGdW5jdGlvbjsKICAgICBGb3JOYXZpZ2F0aW9uQWN0
aW9uIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uIHsgRm9yTmF2aWdhdGlvbkFj
dGlvbjo6Tm8gfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+PiBtX3dpbGxTdWJtaXRGb3JtQ29tcGxldGlvbkhhbmRsZXJzOwotICAgIE9wdGlvbmFsPERv
d25sb2FkSUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPERvd25sb2Fk
SUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKIAogICAgIFdlYWtQdHI8TG9hZExpc3RlbmVyPiBtX2xv
YWRMaXN0ZW5lcjsKICAgICAKQEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25JRCBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsKICNlbmRpZgotICAgIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA2NmQ3MDk3MmY5MmUzMzRlZWE5N2IzMjhhNDFlNTY0NWNj
NTlhMGYuLjczM2QzZjA1ZTg1ZjdiYzNlYzI4MzYxY2M3ZGM5YmVjZmUxZDc3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NTIsNyArNzUy
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0ZXJzLnNjcm9sbGJh
ck92ZXJsYXlTdHlsZSkKICAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlLnZhbHVlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUg
PSBPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CisgICAgICAgIG1fc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CiAK
ICAgICBzZXRUb3BDb250ZW50SW5zZXQocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpOwogCkBA
IC0xNzAxLDcgKzE3MDEsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQ
YWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xODU3LDcgKzE4NTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIFNhbmRib3hFeHRlbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2Vi
UGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3YXJkSXRlbUlELCBGcmFtZUxvYWRUeXBl
IGJhY2tGb3J3YXJkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBl
cjsKIApAQCAtMTg4Nyw5ICsxODg3LDkgQEAgV2ViUGFnZSYgV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KFBhZ2UmIHBhZ2UpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCY+KHBh
Z2UuY2hyb21lKCkuY2xpZW50KCkpLnBhZ2UoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEZyYW1l
VHJlZU5vZGVEYXRhPiBmcmFtZVRyZWVOb2RlRGF0YShGcmFtZSYgZnJhbWUpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxGcmFtZVRyZWVOb2RlRGF0YT4gZnJhbWVUcmVlTm9kZURhdGEoRnJhbWUmIGZy
YW1lKQogewotICAgIE9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBpbmZvOworICAgIHN0ZDo6
b3B0aW9uYWw8RnJhbWVUcmVlTm9kZURhdGE+IGluZm87CiAgICAgaWYgKGF1dG8qIHdlYkZyYW1l
ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpKSB7CiAgICAgICAgIFZlY3RvcjxGcmFt
ZVRyZWVOb2RlRGF0YT4gY2hpbGRyZW47CiAgICAgICAgIGZvciAoYXV0byogY2hpbGRGcmFtZSA9
IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGls
ZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3Rv
ciwgZG91YmxlIHRleHRab29tRmEKICAgICByZXR1cm4gZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhZ2Vab29tRmFjdG9yKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHRleHRab29tRmFjdG9yKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6d2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit2b2lkIFdlYlBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgbV9wYWdlLT5jaHJvbWUoKS53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKIApAQCAt
Mjk0OCw3ICsyOTQ4LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlKQogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiYmIHNhbmRib3hFeHRlbnNpb25zKQor
dm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQs
IHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4
dGVuc2lvbnMpCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXNlcklzSW50ZXJhY3RpbmdDaGFu
Z2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0cnVlIH07CiAKQEAgLTMzMzQsNyArMzMzNCw3IEBA
IHZvaWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYK
IAotdm9pZCBXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCit2b2lkIFdlYlBhZ2U6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9y
KQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM2NjksNyArMzY2OSw3IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6
OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+
KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9h
cmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xp
bmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZy
YW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElk
ZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENv
bnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBO
T1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUg
b2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlw
dCBleGVjdXRpb24uCkBAIC0zNzA2LDcgKzM3MDYsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cgogICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQogICAgICAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwogCi0gICAgICAgIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKQEAgLTM3MTYsNyArMzcxNiw3IEBAIHZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVj
dXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCks
IFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3Ry
aW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8
Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnZhbHVlX29yKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOwogICAgIGF1dG8gd2ViRnJhbWUgPSBt
YWtlUmVmUHRyKGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJh
bWVJRCkgOiAmbWFpbldlYkZyYW1lKCkpOwpAQCAtMzcyNyw3ICszNzI3LDcgQEAgdm9pZCBXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWUKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShjb3JlV29ybGQpOwogICAgIH0KIAotICAgIHJ1bkph
dmFTY3JpcHQod2ViRnJhbWUuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5m
aXJzdCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBl
eGNlcHRpb24pIG11dGFibGUgeworICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUuZ2V0KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bHQsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IFJlcXVl
c3QgdG8gcnVuIEphdmFTY3JpcHQgZmFpbGVkIHdpdGggZXJyb3IgJXtwcml2YXRlfXMiLCBleGNl
cHRpb24tPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UKQEAgLTM3NzQsNyAr
Mzc3NCw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODA4LDcgKzM4MDgsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODM5LDcgKzM4MzksNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNr
KQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZQog
ICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFy
Y2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZl
cmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTUyNzMsNyArNTI3Myw3IEBAIHZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1Rv
UERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBy
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCk7CiAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CkBAIC02MTMyLDcgKzYxMzIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBz
aG91bGRFeHBhbmQpCiAgICAgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRBdXRv
U2l6ZUZpeGVkTWluaW11bUhlaWdodChzaG91bGRFeHBhbmQgPyBtX3ZpZXdTaXplLmhlaWdodCgp
IDogMCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyhPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemUpCit2b2lkIFdlYlBh
Z2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemUpCiB7CiAgICAgaWYgKG1fdmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cyA9PSB2aWV3cG9ydFNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTY0
MjAsNyArNjQyMCw3IEBAIHZvaWQgV2ViUGFnZTo6dGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNz
YWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KE1lc3NhZ2VzOjpXCiAgICAgcmVwbHkodHJ1ZSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQYWdlOjpjdXJyZW50U2VsZWN0aW9uQXNS
YW5nZSgpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQYWdlOjpjdXJyZW50U2VsZWN0
aW9uQXNSYW5nZSgpCiB7CiAgICAgYXV0byogZnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV9w
YWdlLmdldCgpKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtNjU4MSwxMiArNjU4MSwxMiBAQCB2b2lk
IFdlYlBhZ2U6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQogICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IobV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCit2b2lkIFdlYlBh
Z2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3Jv
bGxiYXJTdHlsZSkKIHsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3Jv
bGxiYXJTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlID0gT3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigpOworICAgICAgICBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PigpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpOwogfQogCkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgV1RGOjpD
b21wbGV0aW9uSAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaG93U2hhcmVTaGVldChXVEZNb3ZlKHNoYXJlRGF0YSkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29u
dGFjdHNSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCit2b2lk
IFdlYlBhZ2U6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250YWN0UGlja2Vy
KHJlcXVlc3REYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtNzA5OCwxNCArNzA5OCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OnZvaWNlc0RpZENoYW5nZSgpCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFt
ZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIFdURk1vdmUoZmlsZVNpemUp
LCBmaWxlTmFtZSwgY29udGVudFR5cGUpOwogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNs
b3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdp
dGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50
KCkudXBkYXRlTGF5b3V0KCk7CkBAIC03MTM2LDcgKzcxMzYsNyBAQCBSZWZQdHI8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cgogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFu
aWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gbWFp
bkZyYW1lRG9jdW1lbnQgPyBtYWluRnJhbWVEb2N1bWVudC0+bG9hZGVyKCkgOiBudWxscHRyOwpA
QCAtNzE1MCw3ICs3MTUwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ28KICAgICBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLmFkZChjb3JlQ2FsbGJhY2tJRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRp
bmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpCit2b2lkIFdlYlBh
Z2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxs
YmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBtYW5pZmVzdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYXBwbGljYXRpb25NYW5p
ZmVzdEZldGNoQ2FsbGJhY2tNYXAudGFrZShjb3JlQ2FsbGJhY2tJRCkpCiAgICAgICAgIGNhbGxi
YWNrKG1hbmlmZXN0KTsKQEAgLTcxOTcsNyArNzE5Nyw3IEBAIFJlZlB0cjxFbGVtZW50PiBXZWJQ
YWdlOjplbGVtZW50Rm9yQ29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRl
eHQpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5zZWFyY2hGb3JFbGVtZW50QnlJZGVudGlmaWVyKGVs
ZW1lbnRDb250ZXh0LmVsZW1lbnRJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSBj
b25zdAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwogICAgIGlm
ICghbV9wYWdlIHx8IGRvY3VtZW50LnBhZ2UoKSAhPSBtX3BhZ2UuZ2V0KCkpCkBAIC03NTAwLDcg
Kzc1MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCYpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKLXZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgV2ViRnJhbWUqIGZyYW1lKQordm9pZCBXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBmcmFt
ZS0+c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKTsKICAgICAKQEAgLTc1NjYsNyArNzU2Niw3IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJiBtZW1vcnlIYW5kbGVzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCit2b2lk
IFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0
b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcywgY29uc3Qgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQ
dHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVu
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGRlMzVhZTE5NWFhNGQ2NjI1OWYwMDVkNTQ0NGMxOTk0ZWFhNDcwNDQuLmZhM2NkNmMxOTQ4Mjg1
ZGJiNzZmMzlkNzcwMzg0MWVkODVjMTM3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdDsKICAgICBib29s
IGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0OwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGlj
c09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWls
YWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRJbnNlcnRNZW51RWxl
bWVudChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsKQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0OyAvLyBNYXkgcmV0dXJu
IG51bGxwdHIuCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3KCkgY29uc3Q7
IC8vIE1heSByZXR1cm4gbnVsbHB0ci4KIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiBjdXJyZW50U2VsZWN0aW9uQXNSYW5nZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb25Bc1JhbmdlKCk7CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luPiBjcmVhdGVQbHVnaW4oV2Vi
RnJhbWUqLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFBsdWdpbjo6UGFyYW1l
dGVycyYsIFN0cmluZyYgbmV3TUlNRVR5cGUpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgcGFnZVpvb21GYWN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNldFBhZ2Vab29t
RmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJs
ZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKTsKLSAgICB2b2lkIHdpbmRv
d1NjcmVlbkRpZENoYW5nZShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5z
aWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAgICBTdHJpbmcgZHVtcEhpc3RvcnlGb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwog
CkBAIC03MjEsNyArNzIxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVu
dFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVh
bEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAotICAgIHZvaWQgaW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAg
ICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0PiYpPiYmKTsKICAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJD
b3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwpAQCAtNzUzLDcgKzc1Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgdm9pZCBibHVyRm9jdXNlZEVsZW1l
bnQoKTsKLSAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4m
KT4mJik7CisgICAgdm9pZCByZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbj4mKT4mJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwg
T3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPik+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgYm9v
bCBiYXNlSXNTdGFydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+KT4mJik7CiAg
ICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+KT4mJik7CkBAIC03NzcsNyArNzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mJik+JiYpOwogICAgIHZv
aWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRP
clBvc2l0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJ
bnRQb2ludCYmKTsKKyAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRP
clBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiYsIFdlYkNv
cmU6OkludFBvaW50JiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBw
ZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CiAgICAgdm9pZCBmb2N1c05l
eHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1Mo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJik7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKICAgICB2b2lkIHNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGRvdWJs
ZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7Ci0gICAg
dm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzPiYpOworICAgIHZvaWQgc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3Vt
ZW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOwog
ICAgIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbiYgdmlld3BvcnRDb25maWd1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb247IH0KIAogICAg
IHZvaWQgc2V0VXNlVGVzdGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlvbihib29sIHVzZVRlc3RpbmdW
aWV3cG9ydCkgeyBtX3VzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB1c2VUZXN0aW5n
Vmlld3BvcnQ7IH0KQEAgLTEwOTMsNyArMTA5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHNjYWxlRnJv
bVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYsIE1vbm90b25pY1Rp
bWUgb2xkZXN0VGltZXN0YW1wKTsKICNlbmRpZgogCkBAIC0xMTM5LDggKzExMzksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wg
c2hvdWxkRXhwYW5kKTsKICAgICBib29sIGF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWln
aHQoKSB7IHJldHVybiBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7IH0KIAot
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhPcHRpb25hbDxXZWJD
b3JlOjpJbnRTaXplPik7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gdmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0czsgfQorICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7IH0KIAogICAg
IGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAg
IGJvb2wgY2FuU2hvd1Jlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBj
b25zdDsKQEAgLTExNjIsOCArMTE2Miw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQ
aW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQ
aW5uaW5nQmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50
MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgKi8gcGlubmluZyk7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9Ci0gICAgdm9pZCBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlICovPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
IHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CisgICAgdm9pZCBzZXRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAogICAgIFJlZjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2Fk
ZXImLCBXZWJDb3JlOjpGcmFtZSYpOwpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgcHVibGljOgogICAg
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogdXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcygpOwogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3B1TGltaXQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQoKSBjb25zdCB7IHJldHVybiBtX2NwdUxp
bWl0OyB9CiAKICAgICBzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lKik7CiAKQEAgLTEyNzYsMTcgKzEyNzYsMTcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHNo
b3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+
JiYpPiYmKTsKKyAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRh
Y3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpOwogICAgIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgZ2V0QXBwbGlj
YXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpPiYmKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlv
bk1hbmlmZXN0KHVpbnQ2NF90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jik7CiAjZW5kaWYKIAogI2lmIFVTRShXUEVfUkVOREVSRVIpCkBAIC0xMzE0
LDcgKzEzMTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYUJ1
ZmZlcmluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFCdWZmZXJpbmcoKTsKQEAgLTEzMjIs
NyArMTMyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZUxvZ2dpbmdDaGFubmVsKGNv
bnN0IFN0cmluZyYsIFdURkxvZ0NoYW5uZWxTdGF0ZSwgV1RGTG9nTGV2ZWwpOwogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnRGb3JDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBjb250ZXh0Rm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50JikgY29uc3Q7CiAKICAgICB2b2lkIHN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMo
VmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxl
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxs
RmFpbGVkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+JiYpOwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZvaWQgbm90aWZ5UGFnZU9m
QXBwQm91bmRCZWhhdmlvcigpOwotICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkZyYW1lKik7Cisg
ICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJGcmFtZSopOwogICAgIGJvb2wgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3M7IH0KICNlbmRpZgogCkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0
T3JpZ2luYXRlZEluQXBwKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOyB9CiAKICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYmLCBj
b25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOwogICAgIHZvaWQgc2V0
QXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0VmlzaWJpbGl0
eSk7CiAjZW5kaWYKIApAQCAtMTQ5NCwxNCArMTQ5NCwxNCBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCk7CiAKLSAgICBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBmb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CisgICAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uPiBmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCBnZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSk7CiAgICAgdm9pZCBo
YW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ss
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpQb2ludGVySUQgPSBXZWJDb3JlOjptb3VzZVBv
aW50ZXJJRCk7CiAgICAgdm9pZCBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUm
IG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRp
b24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRo
ZXRpY0NsaWNrVHlwZSwgV2ViQ29yZTo6UG9pbnRlcklEID0gV2ViQ29yZTo6bW91c2VQb2ludGVy
SUQpOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiByYW5nZUZv
ckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3Rp
bmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgZGlz
cGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91
Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOwogICAg
IHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFj
dGlvbnNNYXNrKTsKLSAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEYXRhPik+JiYgcmVwbHkpOworICAgIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIGNvbXB1dGVBbmRTZW5k
RWRpdERyYWdTbmFwc2hvdCgpOwogI2VuZGlmCiAKQEAgLTE1NTUsNyArMTU1NSw3IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQg
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25zCiAg
ICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE1
NjgsNyArMTU2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1l
bnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgZ2V0UERG
Rmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAgICAgdm9pZCByZWxvYWQodWludDY0X3Qg
bmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7Ci0gICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJ
dGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsK
ICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgc2V0SW5pdGlh
bEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CkBAIC0xNTg4LDcg
KzE1ODgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJv
b2wpOwogCi0gICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4mJiBzYW5kYm94RXh0ZW5zaW9ucyk7Cisg
ICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiYmIHNhbmRib3hFeHRlbnNpb25zKTsKICAgICB2
b2lkIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgY29u
c3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CkBAIC0xNjQ1LDE1ICsxNjQ1LDE1IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYp
PiYmIGNhbGxiYWNrKTsKICNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAgdm9p
ZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lk
IGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+
Jik+JiYpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+Jik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
KT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRh
dGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKIApAQCAtMTc5Niw3ICsx
Nzk2LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKLSAg
ICBPcHRpb25hbDxzdGQ6OnR1cGxlPFdlYkNvcmU6OlNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkg
Kj4+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHN0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICB2b2lkIGlt
bWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2Fu
Y2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpOwpAQCAtMjAzMSw3
ICsyMDMxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9v
bCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9zdGFydGluZ0dlc3R1cmVSYW5n
ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjEyMiw3ICsyMTIy
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudD4+
IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Q7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+IG1fcmFuZ2VGb3JEcm9wU25hcHNob3Q7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9yYW5nZUZvckRyb3BTbmFwc2hvdDsKICNlbmRp
ZgogCiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9MZWZ0U2lkZSB7IHRydWUg
fTsKQEAgLTIxMzksNyArMjEzOSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X21pbmltdW1TaXplRm9yQXV0b0xheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZVRv
Q29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAgICAgYm9vbCBtX2F1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFNp
emU+IG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkludFNpemU+IG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czsKIAog
ICAgIGJvb2wgbV91c2VySXNJbnRlcmFjdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V2
ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB7
IGZhbHNlIH07CkBAIC0yMTczLDcgKzIxNzMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBt
X2N1cnJlbnRXb3JkUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4gbV9jdXJyZW50V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2ludGVy
YWN0aW9uTm9kZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uOwogCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtX2F2YWlsYWJsZVNjcmVlblNpemU7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fb3Zl
cnJpZGVTY3JlZW5TaXplOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1f
aW5pdGlhbFNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiBtX2luaXRpYWxTZWxlY3Rpb247CiAgICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBtX3N0
b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkgeyBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9u
KCkgfTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAg
ICAgaW50MzJfdCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwpAQCAtMjIxNiwxMiArMjIxNiwx
MiBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4g
bV9wZW5kaW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnM7CiAgICAgV2ViQ29yZTo6UG9pbnRlcklE
IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrUG9pbnRlcklkIHsgMCB9OwogICAgIEZvY3VzZWRFbGVt
ZW50SWRlbnRpZmllciBtX2N1cnJlbnRGb2N1c2VkRWxlbWVudElkZW50aWZpZXIgeyAwIH07Ci0g
ICAgT3B0aW9uYWw8RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEPiBtX3BlbmRpbmdEeW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlSUQ+IG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRDsKICAgICBk
b3VibGUgbV9sYXN0VHJhbnNhY3Rpb25QYWdlU2NhbGVGYWN0b3IgeyAwIH07CiAgICAgVHJhbnNh
Y3Rpb25JRCBtX2xhc3RUcmFuc2FjdGlvbklEV2l0aFNjYWxlQ2hhbmdlOwogCiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4gbV9w
ZW5kaW5nU3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0aW9uUmVwbHk7Ci0gICAgT3B0aW9uYWw8
c3RkOjpwYWlyPFRyYW5zYWN0aW9uSUQsIGRvdWJsZT4+IG1fbGFzdExheWVyVHJlZVRyYW5zYWN0
aW9uSWRBbmRQYWdlU2NhbGVCZWZvcmVTY2FsaW5nUGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxUcmFuc2FjdGlvbklELCBkb3VibGU+PiBtX2xhc3RMYXllclRyZWVUcmFuc2FjdGlv
bklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2U7CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6
OlRpbWVyIG1fbGF5ZXJWb2xhdGlsaXR5VGltZXI7CkBAIC0yMjI5LDEzICsyMjI5LDEzIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkVW5kZXJMb2NrIHsgZmFsc2UgfTsKIAogICAg
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbWltZVR5cGVzV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1f
YmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6
d2hpdGUgfTsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJl
c3Npb25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25U
b2tlbiB7IDAgfTsKICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpEb05vdFBpbiB9OwotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBtX3VzZUFzeW5jU2Nyb2xsaW5nIHsgZmFs
c2UgfTsKIApAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkg
bV91c2VyQWN0aXZpdHk7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgeyAw
IH07Ci0gICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5nV2Vic2l0ZVBv
bGljaWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5n
V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
IHsgdHJ1ZSB9OwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFRy
YW5zYWN0aW9uSUQgbV9sYXN0RWRpdG9yU3RhdGVUcmFuc2FjdGlvbklEOwogCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
bV9pbnB1dE1ldGhvZFN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
bV9pbnB1dE1ldGhvZFN0YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpCkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IHsgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiAKICAgICBj
b25zdCBTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICBjb25zdCBP
cHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1fY3B1TGltaXQ7CiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIElQQzo6QXR0YWNo
bWVudCBtX2hvc3RGaWxlRGVzY3JpcHRvcjsKQEAgLTIyODIsNyArMjI4Miw3IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChib29sIGdyYW50ZWQpPj4gbV9z
dG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+PiBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpPj4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcDsK
ICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PExheWVyVHJlZUZyZWV6ZVJlYXNvbj4gbV9sYXllclRy
ZWVGcmVlemVSZWFzb25zOwpAQCAtMjI5Myw3ICsyMjkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5PiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2Vu
ZGlmCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlkZW50aWZpZXI7
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gbV9wZW5kaW5nSW50cmluc2ljQ29udGVu
dFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3BlbmRpbmdJbnRy
aW5zaWNDb250ZW50U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbGFzdFNlbnRJbnRyaW5z
aWNDb250ZW50U2l6ZTsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9jb250ZXh0Rm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmYzY2ZlNTFkNTI0YzI4YTVhOTc0YjFmMGEw
YTBlNzZkZWMwYjBlZC4uZTE1NzkzZDVhNGQyNDEzYTViOTRlYjIwNDljYTU3YmEwOTljMDBmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlE
IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRMYXllckhvc3RpbmdN
b2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSkKIAotICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29s
b3IpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwg
ZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nIG1lc3Nh
Z2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcG9ydERhdGEpCkBAIC00NiwxMiArNDYsMTIgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVudCkgLT4gKCkgQXN5bmMKICAgICBLZXlFdmVu
dChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQpCi0gICAgTW91c2VFdmVudChXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgZXZlbnQsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQorICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplIHNpemUsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3Rp
dmVEZXZpY2VXaWR0aCkKICAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6Rmxv
YXRTaXplIHNpemUpCiAgICAgU2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbikKLSAgICBTZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKE9wdGlvbmFsPFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1bWVudHMpCisgICAgU2V0T3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1
bWVudHMpCiAgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUg
dmlld0xheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUs
IFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVu
b2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OlJlY3RFZGdlczxm
bG9hdD4gdGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMy
X3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgs
IHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKICAgICAKICAgICBTZXRTY3Jl
ZW5Jc0JlaW5nQ2FwdHVyZWQoYm9vbCBjYXB0dXJlZCkKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fi
b3ZlU2VsZWN0aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3lu
YwogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKSBTeW5jaHJvbm91cwogICAgIFJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3QpCi0gICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4
dE9yUG9zaXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGVsZW1lbnRDb250
ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKKyAgICBTdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgU3RvcElu
dGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikK
ICAgICBGb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCkgLT4gKCkgQXN5bmMK
QEAgLTExNCwxNCArMTE0LDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3JlKQog
ICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb3NpdGlv
bkluV2luZG93KQogICAgIENhbmNlbEF1dG9zY3JvbGwoKQotICAgIFJlcXVlc3RGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbj4gaW5mbykgQXN5bmMKKyAgICBSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bigpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4g
aW5mbykgQXN5bmMKICAgICBIYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChib29s
IGtleWJvYXJkSXNBdHRhY2hlZCkKICAgICBTZXRJc1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2Vk
RWxlbWVudChib29sIHNob3dpbmdJbnB1dFZpZXcpCiAgICAgVXBkYXRlU2VsZWN0aW9uV2l0aERl
bHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSkgLT4gKCkgQXN5
bmMKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKQot
ICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUpIC0+IChPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5jCisgICAgSW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3luYwogICAgIFJlbW92
ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xk
ZXIpIC0+ICgpIEFzeW5jCiAgICAgVGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8c3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBj
b250ZXh0cykgQXN5bmMKICAgICBGb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFjZUNhcmV0KHN0
cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogICAgIFNjcm9sbEJ5KHVpbnQzMl90IHNjcm9sbERpcmVjdGlvbiwg
dWludDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpCiAgICAgQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxl
QXJlYSgpCiAKLSAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
c3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVt
SUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwg
ZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4g
d2Vic2l0ZVBvbGljaWVzKQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdh
dGlvbklELCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9y
d2FyZEl0ZW1JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0Zvcndh
cmRUeXBlLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogCiAgICAgTG9hZFVSTEluRnJhbWUoVVJMIHVybCwgU3RyaW5nIHJlZmVycmVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKQEAgLTIxNSwxNSArMjE1LDE1IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIEdldENvbnRlbnRzQXNN
SFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5j
CiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4g
KE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkg
QXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZl
cmVuY2UpIEFzeW5jCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAt
PiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKCkgLT4gKE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAg
ICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiBkYXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwog
Ci0gICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKKyAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAog
ICAgIEZvcmNlUmVwYWludCgpIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0QWxsKCkKQEAgLTI3OCw3
ICsyNzgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCiAg
ICAgU2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgU2V0VGV4dFpvb21G
YWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCi0gICAgV2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQz
Ml90IGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQp
CisgICAgV2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKIAogICAgIEFjY2Vzc2liaWxp
dHlTZXR0aW5nc0RpZENoYW5nZSgpCiAKQEAgLTMzMiw3ICszMzIsNyBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiAgICAgUmVxdWVzdEFkZGl0aW9u
YWxJdGVtc0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykKLSAgICBJbnNlcnREcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikgQXN5bmMKKyAgICBJbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3luYwogICAgIERp
ZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIApAQCAtNDA4LDcgKzQwOCw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8p
IC0+IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwogICAgIERyYXdUb1BERmlPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBB
c3luYwogI2VuZGlmCi0gICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKSBBc3luYwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAgICAgU2V0U2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUoV2ViQ29yZTo6
SW50U2l6ZSBzaXplKQogICAgIFNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQo
Ym9vbCBzaG91bGRFeHBhbmQpCiAKLSAgICBTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzKE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6ZSkKKyAgICBTZXRWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6
ZT4gdmlld3BvcnRTaXplKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoU3RyaW5nIHJlc3VsdCkKQEAgLTQ4OCw3ICs0ODgsNyBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IodWludDMyX3QgcGlubmluZykKLSAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9u
YWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQorICAgIFNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAogICAgIEdldEJ5dGVj
b2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogCkBAIC01NjksMTMgKzU2OSwx
MyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3Vz
cGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRBdHRh
Y2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0
cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwor
ICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4g
KCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5n
SW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFu
ZGxlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgR2V0
QXBwbGljYXRpb25NYW5pZmVzdCgpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiBtYW5pZmVzdCkgQXN5bmMKKyAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCkgLT4g
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4gbWFuaWZlc3QpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQpA
QCAtNjI5LDcgKzYyOSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVu
dW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91
cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVx
dWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVj
dG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlv
bmFsPHVuc2lnbmVkPiBpbmRleCkKKyAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRs
ZXMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogICAgIFNldEFwcEhpZ2hsaWdodHNW
aXNpYmlsaXR5KGVudW06Ym9vbCBXZWJDb3JlOjpIaWdobGlnaHRWaXNpYmlsaXR5IGhpZ2hsaWdo
dFZpc2liaWxpdHkpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwCmluZGV4IDFiYmZlNWI5YjgzNjYzNzFjYzA0M2Vi
MjZmNDcwYmM3NDU4YmMxZWMuLmNlMjNmN2ZmOGYzNDIxM2YyNDNhZjhjMWMyZjFlZmI5M2IyZmMz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VP
dmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
T3ZlcmxheS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBhZ2VPdmVybGF5OjpkaWRT
Y3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJiBmcmFtZSkKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKLWF1dG8gV2ViUGFnZU92ZXJsYXk6OmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50
KEZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IE9wdGlvbmFsPEFjdGlvbkNvbnRleHQ+CithdXRvIFdl
YlBhZ2VPdmVybGF5OjphY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChGbG9hdFBvaW50IGxv
Y2F0aW9uKSAtPiBzdGQ6Om9wdGlvbmFsPEFjdGlvbkNvbnRleHQ+CiB7CiAgICAgcmV0dXJuIG1f
Y2xpZW50LT5hY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludCgqdGhpcywgbG9jYXRpb24pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92
ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5
LmgKaW5kZXggZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVkZTcyYWZlNGEzNzNlNzQyMS4uNDJkNjMw
MWM5NDEwNzRmZDYwNjM5NjQ1YWQ0NTIzNmM4NmRiNzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbEZyYW1lKFdlYlBhZ2VPdmVy
bGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgdmlydHVh
bCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChX
ZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8QWN0aW9uQ29udGV4dD4gYWN0aW9u
Q29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViUGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpGbG9hdFBv
aW50KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFE
ZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViUGFnZU92ZXJsYXkmKSB7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShXZWJQYWdlT3ZlcmxheSYpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YURldGVjdG9yc0RpZEhpZGVVSShXZWJQYWdlT3ZlcmxheSYp
IHsgfQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFpblB0cjxEREFjdGlv
bkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgICAgIFdlYkNvcmU6OlNpbXBsZVJhbmdlIHJhbmdlOwog
ICAgIH07Ci0gICAgT3B0aW9uYWw8QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3Vs
dEF0UG9pbnQoV2ViQ29yZTo6RmxvYXRQb2ludCk7CisgICAgc3RkOjpvcHRpb25hbDxBY3Rpb25D
b250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJDb3JlOjpGbG9hdFBvaW50
KTsKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoKTsKICAgICB2b2lkIGRhdGFE
ZXRlY3RvcnNEaWRDaGFuZ2VVSSgpOwogICAgIHZvaWQgZGF0YURldGVjdG9yc0RpZEhpZGVVSSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBh
Z2VHTGliLmNwcAppbmRleCAzNzgzYjQ3YTAzNDQwNzRhYjdmNzk3ODAxOTA4NzFkMzA4OThkOTU3
Li41ZWU4YjA1NjExOThjYTI0YTM2OGU0NGRkOTFjOGQyYjExZmNiMzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShG
cmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgfQogfQogCi1zdGF0
aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gaW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
aW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICgh
ZWxlbWVudCB8fCAhZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCAwYmMwMzBkMGYwODkyZTQ0NDY2MGIzZjY4NmM1
MTMxMjdjMjk0MzczLi5lZGI5ZDQ0MWI1N2ZiMmZhNDZmOGNmMWY5ZDZjMzAwNTIxMzUwYmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBXZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5
QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAo
c2NyZWVuSXNUb3VjaFByaW1hcnlJbnB1dERldmljZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA1OThkNjBiOGI4NDE3
MjY5MDMxMWM5NzRlY2QxOTc5Njk0MDYxMGIxLi5kNWE1MDE3NmZmNGIyYmZiZGI1MjMxYzU1Yjgx
YzU3NDlkMzRkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBTdHJpbmcgcGxh
aW5UZXh0Rm9yQ29udGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIFdl
YkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZSk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcgcGxhaW5UZXh0Rm9yQ29udGV4dChjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQorc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JDb250ZXh0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICByZXR1cm4gcmFuZ2UgPyBwbGFpblRl
eHRGb3JDb250ZXh0KCpyYW5nZSkgOiBlbXB0eVN0cmluZygpOwogfQpAQCAtMTc2LDcgKzE3Niw3
IEBAIHN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yRGlzcGxheShjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShyYW5nZSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBwbGFpblRleHRGb3JEaXNwbGF5KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UpCitzdGF0aWMgU3RyaW5nIHBsYWluVGV4dEZvckRpc3BsYXkoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4
dEZvckRpc3BsYXkoKnJhbmdlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gc2VsZWN0ZWRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxl
Y3RlZFJhbmdlOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgPSBtX2lz
SW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9
IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZhbHNlOwpA
QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBI
aXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAgICAgICAgIGJvdW5kZWRTY2FsZSA9IHN0ZDo6bWlu
PGZsb2F0PihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSwgc3RkOjptYXg8
ZmxvYXQ+KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpLCBib3VuZGVkU2Nh
bGUpKTsKICAgICAgICAgc2NhbGVQYWdlKGJvdW5kZWRTY2FsZSwgSW50UG9pbnQoKSk7CiAKLSAg
ICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIGlmIChoaXN0b3J5
SXRlbS5zaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSkgewogICAgICAgICAgICAgbV9kcmF3
aW5nQXJlYS0+c2V0RXhwb3NlZENvbnRlbnRSZWN0KGhpc3RvcnlJdGVtLmV4cG9zZWRDb250ZW50
UmVjdCgpKTsKICAgICAgICAgICAgIG1faGFzUmVzdG9yZWRFeHBvc2VkQ29udGVudFJlY3RBZnRl
ckRpZENvbW1pdExvYWQgPSB0cnVlOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAKICAgICAg
ICAgZG91YmxlIG5ld1NjYWxlID0gc2NhbGVBZnRlclZpZXdwb3J0V2lkdGhDaGFuZ2UoaGlzdG9y
eUl0ZW0ucGFnZVNjYWxlRmFjdG9yKCksICFoaXN0b3J5SXRlbS5zY2FsZUlzSW5pdGlhbCgpLCBt
X3ZpZXdwb3J0Q29uZmlndXJhdGlvbiwgY3VycmVudE1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMud2lkdGgoKSwgbmV3Q29udGVudFNpemUsIG9sZENvbnRlbnRTaXplLCB2
aXNpYmxlSG9yaXpvbnRhbEZyYWN0aW9uKTsKIAotICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50
PiBuZXdDZW50ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbmV3Q2VudGVy
OwogICAgICAgICBpZiAoaGlzdG9yeUl0ZW0uc2hvdWxkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkp
IHsKICAgICAgICAgICAgIGlmICghb2xkQ29udGVudFNpemUuaXNFbXB0eSgpICYmICFuZXdDb250
ZW50U2l6ZS5pc0VtcHR5KCkgJiYgbmV3Q29udGVudFNpemUgIT0gb2xkQ29udGVudFNpemUpCiAg
ICAgICAgICAgICAgICAgbmV3Q2VudGVyID0gcmVsYXRpdmVDZW50ZXJBZnRlckNvbnRlbnRTaXpl
Q2hhbmdlKGhpc3RvcnlJdGVtLnVub2JzY3VyZWRDb250ZW50UmVjdCgpLCBvbGRDb250ZW50U2l6
ZSwgbmV3Q29udGVudFNpemUpOwpAQCAtOTcxLDkgKzk3MSw5IEBAIHZvaWQgV2ViUGFnZTo6aGFu
ZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwg
T3B0aW9uCiAgICAgbm9kZVJlc3BvbmRpbmdUb0RvdWJsZUNsaWNrLT5kb2N1bWVudCgpLmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VF
dmVudChyb3VuZGVkQWRqdXN0ZWRQb2ludCwgcm91bmRlZEFkanVzdGVkUG9pbnQsIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIDIsIHNoaWZ0S2V5LCBjdHJsS2V5LCBh
bHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgV2ViQ29yZTo6T25lRmluZ2VyVGFw
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBpbmZvcm1hdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+IGluZm9ybWF0
aW9uOwogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KQogICAgICAgICBpbmZvcm1hdGlvbiA9IGZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKTsKIApAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhh
bmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPElu
dFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0
b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPEludFJlY3Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4p
PiYmIHJlcGx5KQogewogICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5pbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGltYWdlU2l6ZXMpOwogICAgIGF1dG8gcGxhY2Vob2xk
ZXJSZWN0cyA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnMoKS5tYXAoWyZdIChhdXRvJiBlbGVtZW50KSB7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lk
IFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50
U2l6ZT4mIGltYWdlU2l6ZXMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvckRhdGE7CisgICAgc3RkOjpvcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvckRhdGE7CiAgICAgY29uc3RleHByIE9w
dGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiB0ZXh0SW5kaWNhdG9yT3B0aW9ucyB7CiAgICAg
ICAgIFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRl
bnRXaXRob3V0U2VsZWN0aW9uLAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpFeHBhbmRD
bGlwQmV5b25kVmlzaWJsZVJlY3QsCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCYgZWxlbWVudAogCiB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hv
dCgpCiB7Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRh
OworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRh
OwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8VGV4dEluZGljYXRvck9wdGlvbj4gZGVmYXVsdFRl
eHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERyYWcgewogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0
aW9uOjpJbmNsdWRlU25hcHNob3RPZkFsbFZpc2libGVDb250ZW50V2l0aG91dFNlbGVjdGlvbiwK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbjo6RXhwYW5kQ2xpcEJleW9uZFZpc2libGVSZWN0
LApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgc3RhdGljIGJvb2wgaW5zaWRlSW1hZ2VPdmVybGF5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgcmV0dXJuIGNvbnRhaW5lciAmJiBI
VE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKmNvbnRhaW5lcik7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZXhwYW5kRm9ySW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBleHBhbmRG
b3JJbWFnZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZpc2libGVQ
b3NpdGlvbiBleHBhbmRlZFN0YXJ0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmcmFuZ2Uu
c3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSkpOwogICAgIFZpc2libGVQb3Np
dGlvbiBleHBhbmRlZEVuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oJnJhbmdlLmVuZENv
bnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpOwpAQCAtMTQzNCw3ICsxNDM0LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1
cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2ludCwgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFnczsKICAgICBH
ZXN0dXJlUmVjb2duaXplclN0YXRlIHdrR2VzdHVyZVN0YXRlID0gc3RhdGljX2Nhc3Q8R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKTsKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0
PEdlc3R1cmVUeXBlPihnZXN0dXJlVHlwZSkpIHsKQEAgLTE1NTQsNyArMTU1NCw3IEBAIHZvaWQg
V2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJl
VHlwZSBnZXN0dXJlVHlwZSwKICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2ludCwgZ2VzdHVyZVR5
cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25z
dCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludEluUm9vdFZp
ZXdDb29yZGluYXRlcyhGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBwb2ludEluUm9vdFZp
ZXdDb29yZGluYXRlcywgYm9vbCBiYXNlSXNTdGFydCkKIHsKICAgICBWaXNpYmxlU2VsZWN0aW9u
IGV4aXN0aW5nU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gZXhpc3RpbmdTZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCk7CkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjbwog
ICAgIGlmICh0YXJnZXROb2RlICYmICFIVE1MRWxlbWVudDo6c2hvdWxkRXh0ZW5kU2VsZWN0aW9u
VG9UYXJnZXROb2RlKCp0YXJnZXROb2RlLCBleGlzdGluZ1NlbGVjdGlvbikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHJlc3VsdDsKIAogICAgIGlmICh0YXJnZXROb2RlKQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKEZyYW1lJiBmcmFtZSwgY28KICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBm
cmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwg
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0
aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURp
cmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKQEAgLTE3OTIsNyArMTc5Miw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCBT
ZWxlY3Rpb25Ub3VjaCBzCiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVu
dHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2ludCk7CiAKLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFnczsKIAogICAg
IHN3aXRjaCAoc2VsZWN0aW9uVG91Y2gpIHsKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAg
ICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9u
TWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5n
JiBtYXRjaFRleHQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbWF0Y2hUZXh0LCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgYXV0byBsaXZlUmFuZ2Ug
PSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIGlmICghbGl2ZVJhbmdlKQpAQCAtMjE1NSw3
ICsyMTU1LDcgQEAgdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW4KICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxh
cml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6
cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQogewogICAgIGF1dG8gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7
CkBAIC0yNDcxLDcgKzI0NzEsNyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25J
bnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgIGlmICgh
ZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgIFN0cmluZyB0ZXh0Rm9yUmFuZ2U7CiAgICAgYXV0byBv
cmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcyA9IGZvbGRRdW90ZU1hcmtzKG9yaWdpbmFs
VGV4dCk7CiAKQEAgLTI3NjQsNyArMjc2NCw3IEBAIHN0YXRpYyB2b2lkIGRhdGFEZXRlY3Rvckxp
bmtQb3NpdGlvbkluZm9ybWF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIEludGVyYWN0aW9uSW5mCiAK
ICNlbmRpZgogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlckltYWdlJiwgSW1hZ2Um
Pj4gaW1hZ2VSZW5kZXJlckFuZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJbWFnZSY+PiBpbWFnZVJlbmRlcmVyQW5k
SW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihlbGVt
ZW50LnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzA5MSw3
ICszMDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHBvc2l0aW9uSW5mb3Jt
YXRpb24ocmVxdWVzdCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzdGFydEludGVyYWN0aW9uV2l0
aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mJiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQmJiBwb2ludCkKK3ZvaWQgV2Vi
UGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9yUG9zaXRpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgV2ViQ29y
ZTo6SW50UG9pbnQmJiBwb2ludCkKIHsKICAgICBpZiAoZWxlbWVudENvbnRleHQpIHsKICAgICAg
ICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBlbGVtZW50Rm9yQ29udGV4dCgqZWxlbWVudENvbnRleHQp
OwpAQCAtMzE3OCw3ICszMTc4LDcgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c05leHRGb2N1c2VkRWxl
bWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCi1PcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
PiBXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQpAQCAtMzQwOCw3ICszNDA4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGRvdWIKICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50aWZpZXIgPDwgIiBzZXRWaWV3cG9ydENvbmZpZ3VyYXRp
b25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNpemUgPDwgIiBzY2FsZUZhY3RvciAiIDw8IHNjYWxlRmFj
dG9yIDw8ICIgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoICIgPDwgbWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoKTsKIAogICAgIGF1dG8gcHJldmlvdXNMYXlvdXRTaXplU2NhbGVGYWN0b3Ig
PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplU2NhbGVGYWN0b3IoKTsKLSAgICBh
dXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IHN0ZDo6bnVsbG9wdCA6IE9w
dGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKKyAgICBhdXRvIGNs
YW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNL
bm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPihtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwogICAgIGlmICghbV92
aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld0xheW91dFNpemUoc2l6ZSwgc2NhbGVGYWN0b3Is
IFdURk1vdmUoY2xhbXBlZE1pbmltdW1FZmZlY3RpdmVEZXZpY2UpKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNDM3LDcgKzM0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERldmljZU9yaWVudGF0
aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5v
cmllbnRhdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYg
YXJndW1lbnRzKQordm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+JiBhcmd1bWVudHMp
CiB7CiAgICAgbV9wYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7
CiB9CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0VmVsb2Np
dHlEYXRhRm9yQm91bmRlZFNjYWxlKFZlbG9jaXR5RGF0YSYgdmVsb2NpdHlEYXRhLAogICAgICAg
ICB2ZWxvY2l0eURhdGEuc2NhbGVDaGFuZ2VSYXRlID0gMDsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+
IFdlYlBhZ2U6OnNjYWxlRnJvbVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKSBjb25zdAorc3RkOjpvcHRpb25h
bDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pIGNvbnN0CiB7CiAg
ICAgYXV0byB0cmFuc2FjdGlvbklERm9yTGFzdFNjYWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8ubGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKICAgICBp
ZiAobV9sYXN0VHJhbnNhY3Rpb25JRFdpdGhTY2FsZUNoYW5nZSA+IHRyYW5zYWN0aW9uSURGb3JM
YXN0U2NhbGVGcm9tVUlQcm9jZXNzKQpAQCAtNDIzOSw3ICs0MjM5LDcgQEAgYm9vbCBXZWJQYWdl
Ojpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAogICAg
IHJldHVybiBoYXNBY2Nlc3NvcnlNb3VzZVBvaW50aW5nRGV2aWNlKCk7CiB9CiAKLU9wdGlvbmFs
PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzTW91c2VQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSA/IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmUgOiBQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzOjpDb2Fyc2U7CiB9CkBAIC00Mjc2LDcgKzQyNzYsNyBAQCBib29sIFdlYlBhZ2U6OnBs
YXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5k
aWYKIH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
bGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1h
eSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUg
ZGVzdHJ1Y3Rpb24uCiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaAppbmRleCAxYmI5OGNjZDg0NzZlMzhiMGU3NmRjMzYzZjY1MWIzYjJhMjYw
MjMxLi43ZjRiN2JkNGZiMTVjNTJiNzM5NTJkYzAwNzdhMWI0ZmI5M2JhOWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNzAsOCArNzAsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0
KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGV4
cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RXhwb3NlZENv
bnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtOTgsNyAr
OTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb2xvclNw
YWNlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhZGRGZW5jZShjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJy
aWRlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+
IG1fZGVidWdJbmZvTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RM
YXllcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJl
Y3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRS
ZWN0OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RWaWV3U2l6ZUZvclNjYWxlVG9GaXQ7
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3REb2N1bWVudFNpemVGb3JTY2FsZVRvRml0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDU2ZTgzZGNlZTlj
ZTA3MmMzYmExOTI1MTU3Y2Q1MDNiMWY1OWQ0ZWEuLjc2NjA0YjVkNTBjN2ZlNjc2YjA1YTlhYjY2
NGU1NGVhZDEzYzgxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpyZXN1bWVQYWludGluZygpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZp
Y2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOkB7IEAibGF5ZXIiOiBtX2hvc3RpbmdMYXllci5n
ZXQoKSB9XTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmll
d0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJl
Y3QgPSB2aWV3RXhwb3NlZFJlY3Q7CiAKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01v
ZGUpCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4dCkpOwogfQogCi12b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgbV9sYXllckhvc3RpbmdDb250
ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1NzljNGU4OTQ5MWQyYWE0NWZmZWVlMDQ5
YWIwZTI1NjQxMjE5Y2M5Li5hMmI3OGZiZjViYTczM2Y0YmRlYzdmZjgzOGJmOWNlMTJmYTM3Y2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIGJvb2wgV2ViUGFnZTo6aG92ZXJTdXBwb3J0ZWRC
eUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJh
Y3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09m
UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gUG9pbnRlckNoYXJh
Y3RlcmlzdGljczo6RmluZTsKIH0KQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IGxvY2F0aQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVk
aWF0ZUFjdGlvbkhpdFRlc3QoaW1tZWRpYXRlQWN0aW9uUmVzdWx0LCBpbW1lZGlhdGVBY3Rpb25I
aXRUZXN0UHJldmVudHNEZWZhdWx0LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAot
T3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3
Q29vcmRpbmF0ZXMpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8V2ViQ29yZTo6U2ltcGxlUmFu
Z2UsIE5TRGljdGlvbmFyeSAqPj4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQ
b2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzKQogewogICAgIGF1dG8mIG1haW5GcmFtZSA9
IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICghbWFpbkZyYW1lLnZpZXcoKSB8fCAh
bWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0aW9uL1dlYlBhZ2VQbGF5
U3RhdGlvbi5jcHAKaW5kZXggZjllNTllYjk5Y2RhZjlmOWFlYTBhODYzMTMxM2FjNGEzMWQ0ZTFl
Zi4uMmJjZTI1ZWNkNjAzMzIwZGIxNjRlMjUwNDYyYTAyY2RiYTNmMDNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlT
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9wbGF5c3Rh
dGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgV2ViUGFn
ZTo6aG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2Vi
UGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRl
ckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRleCBmYmZjMWZk
M2VjZTA5ZGMzZGZkOTMwMGRjMWQ2N2YwNDU5NDIwNTNiLi44ZTk0NTQ1OTdiYjIzYjIyYzUwNmY5
MjkwMjBmYzNjMzdmZmFhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBXZWJQ
YWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBX
ZWJQYWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQYWdlOjpwb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdAogewogICAg
IHJldHVybiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCmluZGV4IDI4MzZh
ZWI5Mzg1ODExN2ZkZjY1MzdjNTY0MDhkYWE1MWEzOTFlMzEuLjU4NWQ5MDZiMDk3NWVkODZiN2Y3
ODQxZjQ3YTk1NzA2YzU5NjQ4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBXZWJQ
YWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAog
I2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBpZiAoc2NyZWVuSXNUb3VjaFByaW1hcnlJbnB1dERldmljZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJiZTIwMDVhZDZkYzFm
NmMzZGNiMDdlYmM4MWQ2ZTRmNDNiYmVmOTMuLjc4ODI3ODk0M2E4MTdmM2M0ZGVmNGFkMDhlNjg1
ZmUzYTYzOTkwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIFBMQVRGT1JNKElP
UykKICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0TmVlZE1hY2hTYW5kYm94RXh0
ZW5zaW9uKHRydWUpOwogI2VuZGlmCi0gICAgaWYgKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4gPSBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSB7CiAgICAgICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIChj
b25zdCBVSW50OCopJiphdWRpdFRva2VuLCBzaXplb2YoKmF1ZGl0VG9rZW4pKSk7CiAgICAgICAg
IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNz
SW5mb3JtYXRpb24oV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCksIGF1ZGl0RGF0
YSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMjMwN2M3
MGIyMGMyYTdkNTE1YTlmNWY2NjBlZDNhNmJiNmE0ZDUyMy4uZjhkODE5Yzk3MTE2NGU4NWQwZDk2
MzU5NDZjZWMzZGFlYmJiNGEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zNDgsNyArMzQ4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCB1bmJsb2NrU2Vy
dmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYpOwogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQotICAgIHZvaWQgbm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKKyAgICB2b2lkIG5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKICAgICB2
b2lkIHVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKTsKICNlbmRpZgogICAgIHZvaWQgcG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9vbCk7CkBAIC02
OTIsNyArNjkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgeyBmYWxzZSB9OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9jcHVNb25pdG9yOwotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAog
ICAgIFN0cmluZyBtX3VpUHJvY2Vzc05hbWU7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKQEAgLTczMiw3ICs3MzIsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRl
ZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KICAgICAv
LyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFu
dGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBt
X3Nlc3Npb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25J
RDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDFl
Njc5ZDc5Y2IxZjhhMmY5ZmU4MzE5ODM1NWNiZjUwNDI0OTFlYy4uMTQ0MTEzNjQ4NDY5NWYxZTI5
NTc3MTI4NWQ5ZmNiYWJlMGIyNzgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3NSw3ICsxNzUsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFVuYmxvY2tTZXJ2aWNlc1JlcXVpcmVkQnlBY2Nlc3NpYmlsaXR5KFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlQXJyYXkpCiAjaWYgRU5BQkxFKENG
UFJFRlNfRElSRUNUX01PREUpCi0gICAgTm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBk
b21haW4sIFN0cmluZyBrZXksIE9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQorICAgIE5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQogICAgIFVuYmxvY2tQcmVmZXJlbmNlU2Vydmlj
ZShXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZUFycmF5KQogI2Vu
ZGlmCiAgICAgUG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9vbCBoYXNBQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRl
eCBlYTBmZGMxZDUyNjc1YWJhMjYwZTY5NjIwZTdmMTdjODY4YTRkNGRlLi45NzNkNjg5ZjM5NDg2
NDZlNTZmM2I5ZjczNTYyMjAxYzI4YmQyYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0yNTgsNyArMjU4
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9tYXAtPnNldEl0ZW1JZ25vcmluZ1F1b3Rh
KGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3Jh
Z2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFn
ZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJRCkgewog
ICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3RoZXIgcHJv
Y2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2UgYXJlYSBt
YXAuCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgp
CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBm
cmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQpCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxG
cmFtZT4+IGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hpbmcoUGFnZSYgcGFnZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElEKQogewogICAgIFZl
Y3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CiAgICAgcGFnZS5mb3JFYWNoRG9jdW1lbnQoWyZd
KGF1dG8mIGRvY3VtZW50KSB7CkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQ
dHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5
T3JpZ2kKICAgICByZXR1cm4gZnJhbWVzOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFy
ZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICAvLyBO
YW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVu
dCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBwYWdlIGhl
cmUuCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbEkKICAgICBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMo
KnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1
cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVy
PiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
K3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBBU1NFUlQoaXNMb2Nh
bFN0b3JhZ2UodHlwZSgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDlmNDdhOGZlNDUxNTAzNDQ3Mjg0OGJh
NmFmMjhiZDcwOWU2YWIxZDEuLjA2ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBi
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KLSAgICBjb25zdCBPcHRpb25hbDxTdG9y
YWdlQXJlYUlkZW50aWZpZXI+JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJRDsg
fQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgp
OwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVp
bnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFyKHVp
bnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBP
cHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIGRpc3BhdGNoU3Rv
cmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4m
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAgICAgdm9pZCBjbGVhckNhY2hlKCk7CiAKICAgICB2b2lkIHJlc2V0VmFsdWVzKCk7CkBAIC04
NywxNSArODcsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEFwcGx5Q2hhbmdlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q2hhbmdlKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hT
ZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZp
ZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAg
IHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKIAogICAgIHZvaWQgY29ubmVjdCgpOwogCiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwmIG1f
bmFtZXNwYWNlOwogICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9y
aWdpbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0g
ICAgT3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOwogICAgIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNl
ZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCmluZGV4IDNiNTMwM2MwOTQ1NDQ1MjljOWFmNWY0NDE0MWY3NGIxMzExNWY0MjUu
LjJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVh
TWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
CiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcga2V5LCBTdHJpbmcgb2xk
VmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZykKKyAgICBEaXNwYXRjaFN0
b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
cj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5n
IG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQogICAgIENsZWFyQ2FjaGUoKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCmluZGV4IGExNDIwYTE4ZWE2YmE4YjVlNGE0NTMwOGQxNzQ5N2NmMjJl
NTM3MGEuLjAxOTAxZWE3ZmE4N2VmODY4YjA2OThmYjVlYzIyMWEzMzUxMjkyNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgJnRvcExldmVs
T3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBw
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIElkZW50aWZpZXIgc3Rv
cmFnZU5hbWVzcGFjZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYgcGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKQogICAgIDogbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKICAg
ICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICAsIG1fc2Vz
c2lvblBhZ2VJRChwYWdlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGM2Zjlm
OGExYTA2MDc3OGU0NmFhMzA1Y2NhNTIxYzc0NDdmZmExOGIuLmIwYWI5ZTczMGIzMTcyYzc3ZmIy
MjRjNjM4MTI4YzU3MDAwODM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSwgSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4g
c3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7
CiAgICAgdWludDY0X3Qgc3RvcmFnZUFyZWFNYXBDb3VudEZvclRlc3RpbmcoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5zaXplKCk7IH0KQEAgLTczLDcgKzczLDcgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7
CiAgICAgY29uc3QgSWRlbnRpZmllciBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9zZXNzaW9uUGFnZUlEOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fc2Vzc2lvblBhZ2VJRDsKIAogICAgIC8v
IE9ubHkgdXNlZCBmb3IgdHJhbnNpZW50IGxvY2FsIHN0b3JhZ2UgbmFtZXNwYWNlcy4KICAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fdG9wTGV2ZWxPcmlnaW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmgKaW5kZXggNmE4YWJmMjFiOTRkNGQ4M2RhNjIzOTMyYjczY2Y3MTJkMDZjMDg0Ni4u
MDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVkNDA5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKICAg
ICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpOwotICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXll
clByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qs
IHVpbnQzMl90LCBib29sKTsKICAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tbQppbmRleCBlZjBiZDlhZTFjY2M4ZTcyODc2MGEzYjlmZjU0ODBiZjgxNGE3OGI0
Li5hM2VmYTViODgyZmU2ZDk3ZjMxZTc4ZTUxYzNkMzBmZmVhNzMzZmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHku
bW0KQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWMKICAgICBtX3BhZ2Uu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJh
bWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXll
ckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWlu
dDMyX3QsIHVpbnQzMl90LCBib29sKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhh
bmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKQogewogICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6
OmRlZmF1bHRMYXllckhhbmRsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggMDcwNWY1
MzI2N2Y1ZTQ3YTk4Y2ExZWNiMDRjYzljYjIxNDkwYTNmNS4uYmEzNDg2NzI3YzAwYjJhY2E2Zjg2
ZTM2YjI4Y2UyOTczNGNhM2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC05Niw3ICs5Niw3
IEBAIHByaXZhdGU6CiAKICAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94
eTsKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwotICAgIE9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CiAgICAg
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fc2V0dGluZ3M7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlLmgKaW5kZXggZjJmNjE4ZjZjNmMxM2IwZjYzNzc3YTU0ZmU4MGQzYWRkMDc4
YzgwYy4uNmFiMDFlZWNkZWY1ZTgzOGNjMWMwNmFkZjQ4M2NhNDdhZTQxODgxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ciYgbV9tYW5hZ2VyOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4g
bV9zaXplQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzPiBtX3NpemVDb25zdHJhaW50czsKICAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggYjVhYzIzMDM3NzYxZmM5YWJl
NWJkM2ZlYTIyNzlkNjc4NDkwNzNhMi4uMDM4ZjNmOGIwNzc4MDlmZmZiYjMwMzIyMWM0OGRmODNh
YjIwZDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsK
KyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
Jik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCBiZDdiYmE1NzIxZGQxNDJiYWM1NDJiYzg5MWQ3NWMyYmU0YjE5YWI0
Li43ZGViMjUyYjgzNDIzODM3MzE2OTRiNTU4ZGFlMWY5Mzg4NjI2YjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICNlbmRpZgogICAgIFdpbGxFeGl0RnVsbHNjcmVlbihXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBEaWRF
eGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKLSAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2l6ZSkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXpl
PiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNl
ZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2Vi
Q29yZTo6RmxvYXRSZWN0IGJvdW5kcywgTWFjaFNlbmRSaWdodCBtYWNoU2VuZFJpZ2h0KQogICAg
IFNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5k
ZXggYjYyMWE2MmJiNTdhMmMyYjcxM2NjNTNhNmE5Njk2NmNmY2NkMzU2My4uZTJlMWQyMjQzYWZh
YzhhMDEwNzFkMTYwMWYzZDk2NDRkMDlhMDNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQ2NCw3
ICs0NjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2l6ZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRl
eHRJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IDFhN2IxNzJiMDc5ZGE5NTc2YWJjYTYxZmNmOWI3M2E2ODYwNjliMjku
LjM1ZTFhNTVlMmUzMjgzYzNkYWZlOTA5OWUwZTdlNzg1Mjg4ODM4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNzA0LDcg
KzcwNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlByb2Nlc3M6OnNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3QKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KSk7CiAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIWF1ZGl0VG9rZW4pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUlu
dDgqKSYqYXVkaXRUb2tlbiwgc2l6ZW9mKCphdWRpdFRva2VuKSkpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTCiB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVUxp
bWl0KCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1p
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQ7CiAgICAgaWYgKG1fcHJvY2Vz
c1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgIGNwdUxpbWl0ID0g
c2VydmljZVdvcmtlckNQVUxpbWl0OwogICAgIGVsc2UgewpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
c3RhdGljIHZvaWQgc2V0UHJlZmVyZW5jZVZhbHVlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIGtleSwgaWQgdmFsdWUKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3M6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3ZvaWQgV2ViUHJv
Y2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgaWYgKCFlbmNvZGVkVmFsdWUpIHsKICAgICAgICAgc2V0UHJlZmVyZW5jZVZhbHVl
KGRvbWFpbiwga2V5LCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5kZXggNDA1ZDcyNjMwYTAxNDYyYzdk
ZDdhZTNiNDVmNGFhZjQ0NDg2YzQ3NC4uMjhlMjFjNWRmZDM2NzAxOTE4YzgzN2FhNTcxZTU5Njli
NDVhYjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcgotICAgIHVz
aW5nIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3Rv
cjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6
Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcywgT3B0aW9uYWw8U3RyaW5nPiBkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpPjsKKyAgICB1c2luZyBWYWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25z
dHJhaW50c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYg
YXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNl
cywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk+OwogICAg
IHZvaWQgdmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3RyYWludHMoV2ViQ29yZTo6TWVkaWFT
dHJlYW1SZXF1ZXN0LCBTdHJpbmcgaGFzaFNhbHQsIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENv
bnN0cmFpbnRzQ2FsbGJhY2smJik7CiAgICAgVmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3Ry
YWludHNDYWxsYmFjayBtX3ZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJh
Y2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2ds
aWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTEzNjkxMjAwNjcz
OTFmZjM2NjI5YWE2YzlhYmIwODkyZjY2OWI3OS4uNGViOGMxMmEyOTliODg0ZWE4MGRiZmQ3OTNh
YzFkMWZkYWQ5ZGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIv
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0
LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBtZXNzYWdlcyAtPiBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBWYWxpZGF0ZVVzZXJNZWRp
YVJlcXVlc3RDb25zdHJhaW50cyhzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IHJl
cXVlc3QsIFN0cmluZyBoYXNoU2FsdCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0
cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBhdWRpb0RldmljZXMsIFZlY3Rv
cjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXMsIE9wdGlvbmFsPFN0cmluZz4g
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBBc3luYworICAgIFZhbGlkYXRlVXNlck1lZGlhUmVx
dWVzdENvbnN0cmFpbnRzKHN0cnVjdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGhhc2hTYWx0KSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGludmFsaWRDb25z
dHJhaW50LCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gYXVkaW9EZXZpY2VzLCBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gdmlkZW9EZXZpY2VzLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBBc3luYwogICAgIEdldE1lZGlhU3RyZWFt
RGV2aWNlcygpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlcykgQXN5
bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCBhMmY1M2JlMDNmNDMwMzQwYjQ3YzU0
YWM2ZTBhMTQxM2EwOTFlYTM0Li4wMjhmOWQ2Y2IxYjdkODIxYjVmMWI3NWUzM2QzY2Q2ZTYzYjI4
OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFp
bGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3Rl
cmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2Vi
Q29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlOyB9CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNz
T2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2U7IH0KICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxh
YmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRl
ckNoYXJhY3RlcmlzdGljczo6Q29hcnNlOyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IDAzMjk5MTYzYzQw
NWQwZTJmYThlYTVmNGJhZTQ2YjE5NjFlNDcwZTcuLjc3YzA4ZDg1NzAzMDI1OGMxNWU4OWYyMjVl
MjlhMzhlOGZiNzQzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpAQCAtOTAsNyArOTAsNyBAQCAtICh2b2lk
KWFkZDooRE9NSFRNTE9wdGlvbkVsZW1lbnQgKilvcHRpb24gaW5kZXg6KHVuc2lnbmVkKWluZGV4
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGlmICghb3B0
aW9uKQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIHJhaXNlT25ET01F
cnJvcihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBPcHRpb25hbDxXZWJDb3JlOjpIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+IHsgc3RhdGljX2Nhc3Q8aW50PihpbmRleCkg
fSkpOworICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTEVsZW1lbnRPckludD4g
eyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4KSB9KSk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlOih1bnNp
Z25lZClpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJh
bmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCmluZGV4IDE0
ZjQ4OWRhYTUxMjY1NTNhZWYxZTdiMzgzMmIyN2Q5MTFiODc0OTguLjQxMTVhNjRkNjVhY2Y3Nzlm
ZWVlMmEwNTNiOGY1M2Y2OTM2ZjhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UmFuZ2UubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdl
KiB2YWx1ZSkKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCi1ET01SYW5n
ZSAqa2l0KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdmFsdWUpCitET01S
YW5nZSAqa2l0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB2YWx1
ZSkKIHsKICAgICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVSYW5nZSh2YWx1ZSkuZ2V0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZUludGVybmFsLmgKaW5kZXgg
ZjgwNGU3ZWM5MmMyODUwYmQxYzMwNzNiMjZjNmJmM2ZjMmFlMzNhYS4uMDdhMjFiNGIzMzE5MDNm
NWE4OTNjMjRmNzlmNzQzNDE4ZjBhMmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NUmFuZ2VJbnRlcm5hbC5oCkBAIC0zMyw0ICszMyw0IEBAIHN0cnVjdCBTaW1wbGVS
YW5nZTsKIAogV2ViQ29yZTo6UmFuZ2UqIGNvcmUoRE9NUmFuZ2UgKik7CiBET01SYW5nZSAqa2l0
KFdlYkNvcmU6OlJhbmdlKik7Ci1ET01SYW5nZSAqa2l0KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpOworRE9NUmFuZ2UgKmtpdChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCmluZGV4IDliMTAyZjFlNDJiZGUwNTE5MGU5NWVjNWU5NzA0YTk5ZmE5YWZhYmUuLjc1NDI2
OTM4MTJlNzhiN2Y4OWE4ZTM0NDAzNzMzMDA4YWZjM2YyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg4Myw3ICs4ODMsNyBAQCBib29sIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0
cmluZyYgc2NyaQogCiAgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3Qodm0s
IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwogCi0gICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3Rk
OjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFs
bG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC5nZXQoKSwgSlNDOjptYWtlU291cmNl
KHNjcmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGU0OTRmYzdkZmI2Yjli
YTQ2Mjc4ODczOTM0YjA4YjUwZDA4MjNkY2UuLjMzYmE1N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1
NWQ3OGUwOTVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNjMsNyArMzYzLDcgQEAgLSAoQk9P
TClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0
CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9uVk0oKSk7Ci0gICAgICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50
SXNVc2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOworICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElz
VXNlckdlc3R1cmUoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgICAgICBhY2NlcHRl
ZEV2ZW50ID0gW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+ZXZlbnQocGx1Z2lu
LCBldmVudCk7CiAgICAgfQogICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGJhZDUxZjBiMjEyZGFlN2I2NzEwMWEwYWFhNjNlNDk0OWRlN2QzNDku
LjQ0ZjQwNGZkZjViODkyNDI5MjI1MzRiODFhYjM3MjJjMTExNzFiMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaG92ZXJTdXBwb3J0
ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9p
bnRpbmdEZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hh
cmFjdGVyaXN0aWNzOjpGaW5lOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzOjpGaW5lOyB9CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3M6OkZpbmU7IH0KIAogICAgIE5TUmVzcG9uZGVyICpmaXJzdFJlc3BvbmRlcigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCAzNDAyZjM5MWU1MjZhYWE3NjIwZGNmMWUzNDgyODRlMzQzZWJj
MjU3Li40NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtNjMsMjQgKzYzLDI0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKSBmaW5hbDsKICAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKKyAgICBib29sIHNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAKICAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJD
b3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29y
ZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFu
Z2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29y
ZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxk
SW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJv
b2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7
CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykgZmluYWw7CiAKLSAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYkNvcmU6OlN0
eWxlUHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgZmluYWw7CiAKICAgICBib29sIHNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29u
c3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIHJhbmdlVG9CZVJlcGxhY2VkKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0
ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
MGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYxNDBjNDI5Ny4uNDE4NmY1NTVkMThjZjZh
MGVmNDAzYmUyZjlhMTJjYmVjZTdkNDBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjM2LDcg
KzIzNiw3IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkK
IAogI2VuZGlmCiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
IHsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzptX3dlYlZpZXcgc2hvdWxkRGVsZXRlRE9NUmFuZ2U6a2l0KHJhbmdlKV07CiB9CkBAIC0y
NTcsNyArMjU3LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFw
cGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGlu
Z0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwogICAgICAgICBzaG91bGRBcHBs
eVN0eWxlOmtpdCgmc3R5bGUubXV0YWJsZUNvcHkoKS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpKQpAQCAtMjk2LDEzICsyOTYsMTMgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVu
ZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBbW21fd2ViVmll
dyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRFbmRF
ZGl0aW5nSW5ET01SYW5nZTpraXQocmFuZ2UpXTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQorYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
CiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViVmlldzsKICAgICByZXR1cm4gW1t3ZWJW
aWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRJbnNl
cnRUZXh0OnRleHQgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0KHJhbmdlKSBnaXZlbkFjdGlvbjpraXQo
YWN0aW9uKV07CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVj
dGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBbbV93ZWJW
aWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOmtpdChmcm9tUmFuZ2UpIHRvRE9NUmFu
Z2U6a2l0KHRvUmFuZ2UpIGFmZmluaXR5OmtpdChzZWxlY3Rpb25BZmZpbml0eSkgc3RpbGxTZWxl
Y3Rpbmc6c3RpbGxTZWxlY3RpbmddOwogfQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKICNlbmRpZgogfQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KQEAgLTU3MCw3ICs1
NzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uKCkKIAogI2VuZGlmIC8vIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKIAot
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYgbm9kZSwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9u
IGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9k
ZSYgbm9kZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ1Jhbmdl
LCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rpb24pCiB7IAogICAgIHJldHVybiBbW21fd2Vi
VmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRJ
bnNlcnROb2RlOmtpdCgmbm9kZSkgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0KHJlcGxhY2luZ1Jhbmdl
KSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilnaXZlbkFjdGlvbl07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2MzUxYzJlYTA2NjU3MzljZDcxZTBjNDdlMzdhNDdh
ZDA2MTE0Mzc4Li5iZDUyMjNhMGNlMTUwY2YzNWEyOGI3NTUwNDgwMDRjMWZjYjU0YWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3Nl
cnRpb25zCiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgbWFrZVJl
cHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgYm9vbCBo
YXNIVE1MVmlldygpIGNvbnN0IGZpbmFsOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIGZpbmFsOwotICAgIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lUTFM+KSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzJhNTI4OWQwZjZhZGZiMDU5NTRlMGFkYWRm
M2E4ZmZhNDU3MWZmOS4uNjM0MjIwMDVmZWY0ZmIwOWNmNjdjYTIzZGYxMDJjYTc0YzVmZjk1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwNSwxMiArMjA1LDEyIEBAIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUp
CiB7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpAQCAtNjk0LDcgKzY5NCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlCiAgICAgfQogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVD
b250ZW50PiwgT3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lU
TFM+KQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwu
CiAgICAgQVNTRVJUKFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IGRvY3VtZW50
Vmlld10gIT0gbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMzYjI4YTFmMDgz
ZWQzNjZiMjc0ZGU5ZDYzM2QyM2JkMDA3ZDZkNWQuLjc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5
OTBhMGE2NDgxNzFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJp
ZGUgeyB9CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCAxZWQxNDM4
YWM2NmUwNTVhMTJlZmYxODY3NTM5Y2I1MWQ5MmMxNzA0Li5lNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0
MmJhODAxOTM1N2EyNzM0ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9u
KEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBj
b3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggNmQ5NjZkODIxYzAw
MWM2M2U2NGM5YmI0N2VlMzkwMjlhYTRhNDU1MS4uNjEzNTdlYWM2MWM5ZTI5YmI4MDYwZTc1MGYz
YjA4MWI2NTZiNTU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
QEAgLTM2LDE5ICszNiwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQoKTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVu
dE5ldHdvcmsoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVS
THMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
TW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBk
YXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFu
Z2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRl
PiYmKSBvdmVycmlkZTsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9E
X01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KaW5kZXggNGExYmEzYzY3YWVmNzY1MTAwZmNh
MTIzNTIxYzk4ZGRhMWY1MGUyNi4uNDA3OTJhMDk3NTkzYmIwMDM0M2E2ZjIyYmY4Y2E5MWU2MjZk
OTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQpAQCAtMzks
NyArMzksNyBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6On5XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQoKQogewogfQogCi1PcHRpb25hbDxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikKK3N0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnZhbGlkYXRlZFBh
eW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KQEAgLTcyLDI3ICs3MiwyNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bQogewogfQogCi12
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYm
KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9k
VXBkYXRlPiYmKQogewogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVu
dDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikKIHsKIH0KIAotdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYpCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKQogewog
fQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5n
ZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKQor
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1v
ZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiYmKQogewogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01F
VEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQ
YXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3Vs
dD4mJikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+
JiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMzc4ZDRkNjI1NTNh
YzIzMDM4ZWU2OThkNDA5MDY0ODdiYzM1NWYxZC4uMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRl
NjFkOGIxZTU3MzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU4LDggKzU4
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBjMjM3MjgxMWNmMTM5YmFiNDhjNjg4MTI3YmYwYzM5ZmU1NmRkMTU4Li5iZGM4
NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRiMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29udGFpbnNT
dHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh0eXBlKTsKIH0KIAotT3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY2hhbmdlQ291bnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRl
eCAwZTkxOGQ1NTQxYWMzMjZiZmFlZTkwN2U3Y2YwNTEwNjE5NGEyNDc4Li41MjVlZTJmY2RlZWEx
NmM1YzZmOWRmZTgxMzVlZDdkMWM1ZWJiZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNo
UGx1Z2lucygpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgY29u
c3QgVVJMJikgZmluYWw7CiAKICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBkNjVkYWM5ZDBlMmYxZTFlMjA1OThhNzE5ODFmMjg1
ZWNmY2E2MGIwLi42NjVhODAyNmU5ZGIwZmVlNTQ2MGNiYWJkM2E1MGI5MGE2MDY5MzM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygpCiAgICAgW1tXZWJQbHVnaW5EYXRhYmFz
ZSBzaGFyZWREYXRhYmFzZUlmRXhpc3RzXSByZWZyZXNoXTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQ
YWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikK
K1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdp
bkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
cGx1Z2luczsKIApAQCAtNzUsNiArNzUsNiBAQCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZwogCiBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNp
YmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewotICAgIE9w
dGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogICAgIHJldHVybiBwbHVnaW5J
bmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCmlu
ZGV4IDdkMTJiZTY2YmM1ZDI4MTNhNjBjY2JhYmNmZDljMDVlOTk5MjFiNDEuLjE3MGMzNTIzYzdj
MTU1MzZjMjhlN2I1Zjk4YTMzYTM2OTk0ODBmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtNjAsNyAr
NjAsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24q
IG9yaWVudGF0aW9uKQogICAgIHJldHVybiBvcmllbnRhdGlvbiA/IG9yaWVudGF0aW9uLT5tX2lu
dGVybmFsLT5tX29yaWVudGF0aW9uLmdldCgpIDogMDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRv
dWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkK
IHsKICAgICBpZiAoIWNhblByb3ZpZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2MTk5YThj
NDdiNGIwZmVmNGU5YjIzNTA0YjI0OTIzNTQ1YjJjZGUzLi40MTM5YmI1YTkxNjgzZTY1YWNjMDgy
NTNiZWNiM2ZkZDBhYmM2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTgwNCwxMiArODA0LDEyIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05T
UmFuZ2U6KGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJilyYW5nZQogICAgIHJldHVybiBjaGFy
YWN0ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cygqZWxlbWVudCks
IHJhbmdlKTsKIH0KIAotLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogewogICAgIHJl
dHVybiBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6bnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzpX
ZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290XTsKIH0KIAotLSAoT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5n
ZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8KKy0g
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFu
Z2VJc1JlbGF0aXZlVG8KIHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKaW5kZXggNjlhODEyZGFmMjRjMmY2Yzc2
NDg4ZThkMzhmMzFmMDA2ZTNlMjdhZS4uYWYxZjE1MTM0ODZiYTM3MzMzZGJjMzU5ZWNmZWM1NmRm
YjdhNzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZUludGVybmFsLmgKQEAgLTE2Niw4ICsxNjYsOCBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdl
YkZyYW1lICp3ZWJGcmFtZSk7CiAjZW5kaWYKIAogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5n
ZTooY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKXJhbmdlOwotLSAoT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZTsKLS0gKE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxh
dGl2ZVRvOworLSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRU
b0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOworLSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlIHJhbmdlSXNSZWxhdGl2
ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbzsKIAogLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJp
bmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5n
OwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQ
YXJhZ3JhcGhzOihOU0FycmF5ICopbm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNDNjNDdj
ZTFjNTQ1OWZhMGU3OTAyNTFiYjJjOWM4NDNhZDVhODYyOS4uZmU2YzQzZmQ4ODRjZjM0MzZjM2Ni
MGQyZWNhNWM5MDQ0Yjk1MDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtNTYsNyArNTYsNyBA
QCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAKLU9wdGlv
bmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
KnBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFs
LmgKaW5kZXggN2VhYWE5YzBlY2M1MGE4ODgxYzI4OGNkZjY5ZWM4Zjk0NGQ4NzJlNC4uZmZhYTYy
MGE3NmVhMjdiNWYxOGY2Mjc3ZjMzYzcyNGEwNWE1YWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRp
b25JbnRlcm5hbC5oCkBAIC0zMCw1ICszMCw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOwogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCAwODRhYjczMTRmOTQzNmVmMTM0ODE0MTgzN2VhMmU2OWNkZjY2
MTJkLi4zODg5ZDI2NzA5YzY3ZGE0MDQyNzUyNWFjY2ZmNDcyMmMyMGIzNzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI1MSw3ICsy
NTEsNyBAQCAtICh2b2lkKXNldE1lbnVDb250cm9sbGVyOihOYWtlZFB0cjxXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI+KW1lbnVDb250cm9sbAogLSAodm9pZClmb3J3YXJkQ29udGV4dE1l
bnVBY3Rpb246KGlkKXNlbmRlcjsKIEBlbmQKIAotc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKHRhZyA+PSBDb250ZXh0
TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICYmIHRhZyA8PSBDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9t
VGFnKSB7CkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRl
eHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdlcj4g
dG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KaW5kZXggMmQ2NjJlYzk0ZjRmM2U4M2M4OGNkMjNiYmU0NWY0OGFjNWJjMWZh
ZC4uNDY0N2Y2Y2RlYTU5M2E0YWM4ZjI2MTMwY2Y5YTIwZmMzNzM4MDRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNDI3LDcgKzQyNyw3IEBAIC0gKGlkIDxOU0ltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURl
dGVjdGVkCiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGV0ZWN0ZWRJdGVtPiBkZXRlY3RlZEl0ZW07
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXRlY3RlZEl0ZW0+IGRldGVjdGVkSXRlbTsK
IAogICAgIGlmIChbW193ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6YWN0aW9uQ29udGV4dEZvckhpdFRlc3RSZXN1bHQ6cmFuZ2U6KV0pIHsK
ICAgICAgICAgRE9NUmFuZ2UgKmN1c3RvbURhdGFEZXRlY3RvcnNSYW5nZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYmFkM2Y4YWY2OTYyMGJjZDUz
MGMwZWJmOTczMmJiMzVjM2IzZGMyLi44YTRlYzg5MTBjYTJmNDEwNGU0YjU5YjIyZjEwODEyMDBm
MjgwZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC02NDIsNyArNjQyLDcgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24gb3BlcmEKIH0KIAogI2lmIFVTRShB
UFBLSVQpCi1zdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQogewogICAg
IGlmICghZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7
CkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uTm9uZTsKIH0KICNlbHNlCi1zdGF0aWMgX1VJRHJhZ09wZXJhdGlvbiBraXQoT3B0
aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBfVUlE
cmFnT3BlcmF0aW9uIGtpdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQogICAgICAgICByZXR1cm4g
X1VJRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIF9VSURyYWdP
cGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRp
b24pCiB9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKIAotV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQo
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWN0aW9uKQorV2ViRHJhZ1NvdXJj
ZUFjdGlvbiBraXQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhY3Rp
b24pCiB7CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0
aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IGJhZDVmZDhhMTUwYWNmMmMzN2E1N2MzNjRmODIxOWRjZDQzNzMwYjMu
LmFlY2EwOWRkNmI2MzJiNDcyZTM3OGViMGU4MWI0ZWU2Nzk2NzkxMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMTA1LDcg
KzEwNSw3IEBAIHVzaW5nIENvY29hRHJhZ09wZXJhdGlvbiA9IHVpbnQ2NF90OwogCiBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJh
Z09wZXJhdGlvbik7CiAKLVdlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+KTsKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCA1ZGZh
ZDhkYTU1ZThmMjg3ZWExOTljOWViZDk4NjFlNjNkNDUxODlhLi42MmI1OTM0ZjY2MmI3ZWE0M2Ey
Yzk3YjBmYzEyNWFlZTMyZDU1ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCkBAIC0xNjIxLDcgKzE2MjEsNyBAQCBJRE9NUmFuZ2UqIERPTVJhbmdlOjpj
cmVhdGVJbnN0YW5jZShXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiAgICAgcmV0dXJuIG5ld1Jhbmdl
OwogfQogCi1JRE9NUmFuZ2UqIERPTVJhbmdlOjpjcmVhdGVJbnN0YW5jZShjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQorSURPTVJhbmdlKiBET01SYW5nZTo6Y3Jl
YXRlSW5zdGFuY2UoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJh
bmdlKQogewogICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2Up
LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVD
bGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCmluZGV4
IDU2ZjhjZjA3Y2Y4ZmZiODI1ZWM1MzNiMmFjM2RhNjQ5ZGE0NDE5YjEuLmU1ZDYxOThhMDFjMjAy
ZGJmNTdlZmQ3YzFiYTY3NmE2ZjA0MGUzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUNvcmVDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9N
Q29yZUNsYXNzZXMuaApAQCAtODIzLDcgKzgyMyw3IEBAIHByb3RlY3RlZDoKIAogcHVibGljOgog
ICAgIHN0YXRpYyBJRE9NUmFuZ2UqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OlJhbmdlKik7Ci0g
ICAgc3RhdGljIElET01SYW5nZSogY3JlYXRlSW5zdGFuY2UoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+Jik7CisgICAgc3RhdGljIElET01SYW5nZSogY3JlYXRlSW5zdGFuY2Uo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKTsKIAogcHVibGljOgog
ICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBjMGM0MDU3ZjZiZWY4M2M4MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcy
Li5hMjI0NThmZTgwNDVhNmM0ZjIxYjM1ZTdmYTkzNmFiNzM2YzU4MmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5n
SWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6
Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVx
dWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogCiAg
ICAgaWYgKGpzU3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEg
dGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3RyZWFtIGZvciBpdC4gb3RoZXJ3aXNlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAppbmRleCA4NWYyMjQ2NDAzZGYxNGE1MGJiYzljNjczMGYwNDA4YjIwYWUyNGUx
Li4wOTlhZTljNzA5ZDE1N2VhMGFhOTBmNjJjOGJiZTRlMGU4MzI0NzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhvdmVyU3VwcG9ydGVk
QnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNo
YXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2
aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGlj
czo6RmluZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3Rlcmlz
dGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsg
fQogICAgIE9wdGlvblNldDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVy
Q2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOyB9CiAKICAg
ICB2b2lkIGludmFsaWRhdGVSb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzMzA0NTRlYWE0ZDVjZmE0NTZmMzY1YzNiM2QzODJk
OGQyMTBhZGIwLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTI1NywxNiArMjU3LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpCiB7CiB9CiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1i
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRE
ZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2UpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwogICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdldCgpKQpAQCAtMjk2
LDcgKzI5Niw3IEBAIHN0YXRpYyBXZWJWaWV3SW5zZXJ0QWN0aW9uIGtpdChFZGl0b3JJbnNlcnRB
Y3Rpb24gYWN0aW9uKQogICAgIHJldHVybiBXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQ7CiB9CiAK
LWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgaW5zZXJ0aW5nUmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbiBnaXZlbkFjdGlvbikKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNl
cnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogeyAK
ICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWRpdGluZ0RlbGVnYXRlOwogICAgIGlm
IChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkaXRpbmdEZWxlZ2F0ZSkpIHx8
ICFlZGl0aW5nRGVsZWdhdGUuZ2V0KCkpCkBAIC0zMjAsNyArMzIwLDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGwKICAgICByZXR1cm4gc2hvdWxkSW5zZXJ0OwogfQogCi1ib29sIFdlYkVkaXRv
ckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0
aW9uIGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogewog
ICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBlZGl0aW5nRGVsZWdhdGU7CiAgICAgaWYg
KEZBSUxFRChtX3dlYlZpZXctPmVkaXRpbmdEZWxlZ2F0ZSgmZWRpdGluZ0RlbGVnYXRlKSkgfHwg
IWVkaXRpbmdEZWxlZ2F0ZS5nZXQoKSkKQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgV2ViU2Vs
ZWN0aW9uQWZmaW5pdHkgdG9XZWJTZWxlY3Rpb25BZmZpbml0eShXZWJDb3JlOjpBZmZpbml0eSBh
ZmZpbml0eSkKICAgICByZXR1cm4gV2ViU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtOwogfQog
Ci1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGN1cnJlbnRSYW5nZSwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBwcm9wb3NlZFJhbmdlLCBXZWJDb3JlOjpBZmZpbml0
eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBmbGFnKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIGN1cnJlbnRSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIHByb3Bvc2VkUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IHNlbGVjdGlvbkFmZmlu
aXR5LCBib29sIGZsYWcpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwog
ICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdl
dCgpKQpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhCiAgICAgcmV0
dXJuIHNob3VsZENoYW5nZTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5
U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJv
cGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZTAwNTk3MDNlY2ZhMmQwZmU5ZDA4Nzcx
NjRkODI1MjNlZTU3ZmU2YS4uYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5h
bDsKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
KSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNl
cnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29y
ZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7Ci0gICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlk
RW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpAQCAtNjUsMTAgKzY1LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3JlOjpGcmFtZSopIGZpbmFs
OwogICAgIHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKSBmaW5hbCB7IH0KIAotICAgIGJvb2wg
c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
ZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRJbnNlcnROb2Rl
KFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJl
cGxhY2luZ1JhbmdlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOwotICAgIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKKyAgICBib29sIHNob3Vs
ZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdSYW5nZSwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9u
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBm
aW5hbDsKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbDsKICAgICBib29sIHNob3VsZE1v
dmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5kbygpIGZpbmFsOwogICAgIHZvaWQgcmVkbygpIGZpbmFsOwogICAgIAotICAg
IGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmlu
YWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmco
V2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwogICAgIHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGlu
ZyhXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CiAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGE3MzE5NjgyMTBjZDcwOWM1MzhiYjIzMWYzYTU1MWU1NmJhNzRmNDQuLjJhN2Q1
YjBhNjVjMzcwZGM2N2IzNWIxOTA4MWE5YzFiZDk1ZjBkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTExOCwxMiArMTE4LDEyIEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+
V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogewogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlE
KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
QEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3Ry
aW5nKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+LCBPcHRpb25hbDxV
c2VkTGVnYWN5VExTPikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8
VXNlZExlZ2FjeVRMUz4pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndl
YlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxl
Z2F0ZTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAg
IHZpZXctPmZyYW1lUmVjdCgmcGl4ZWxSZWN0KTsKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dy
b3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAg
ICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWUo
cGl4ZWxSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQ1OWNlMjc4NWE1ZTQz
MGU5OWI4YjNhZWJiYjQ0NmYzNmYyNDNjZmYuLjBhZGJmOTdjM2YwMGJkM2ZhZTBlMmY5ZGU1YjY0
NjEyNjIzNDkyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsOCArNTEsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgZmlu
YWw7CiAKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRM
ZWdhY3lUTFM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VXNlZExlZ2FjeVRMUz4pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAppbmRleCAzOGNhMTcxY2M2Yjg4MmE0ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1
Li5lMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3ZTc3ZTk3MzU4MmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJvdmlkZXItPnVucmVnaXN0ZXJXZWJWaWV3KG1f
d2ViVmlldy5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQog
ewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYg
KEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3Njk1NTQ0MmZmYmQzMTY0MGMxZTk2NTRjOTdhZTY1
NDk5MTQxZTAwLi4xOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZlZjRlMTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAK
ICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXggODI3MWNlNzFk
NTE5ZDZiYzBkNDBiMTAxZjY0MTkwYThiZjA5MGJhYy4uZDMxMGQyOTEwMDg3MDA5ZTg5YmFmZWY1
ZjBlMDEyNzYxOTRkZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygp
CiAgICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOwogfQog
Ci1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBw
b3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQorVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdl
YlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQog
ewogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBvdXRQbHVnaW5zOwogICAgIGNvbnN0
IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFs
bGVkUGx1Z2lucygpLT5wbHVnaW5zKCk7CkBAIC04Niw2ICs4Niw2IEBAIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6
UGFnZSYgcGFnCiAKIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJv
dmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVS
TCYpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5OYW1lczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luTmFtZXM7
CiAgICAgcmV0dXJuIHBsdWdpbkluZm8ocGFnZSwgc3VwcG9ydGVkUGx1Z2luTmFtZXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCA3Nzg4MDRmYmQ1MzM2NzRmMTIwOThjOTgw
ZTJmYjQxYWEzMzJiZWFlLi45MzQ4MGY0YWY3YjY2MjcyNjlkZTVkODdhZWViMzIyNTMzZmE5ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYs
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiYpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJmksIGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXgg
OGRhOTE5NDgzYjBkYWE3MTBkNjIzNjJlOWIzYTA0NjlkNTAyYmRjZi4uMWZiN2UzYmNiN2Y0MmE1
YmM4YTkyZWQ4MTAwNjc5ZWMyN2M1MDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcApAQCAtMjA2Miw3ICsyMDYyLDcgQEAgdm9pZCBXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3Vu
ZCgpCiAgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAod2ViVmlldygpLT50cmFu
c3BhcmVudCgpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CiAgICAgY29yZUZyYW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1
cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCBkNjRlNzZhODU2NTkyMDQyMWExOGI0
NmRhOGQxNTRlMmEwMDFlZDYyLi45MjRjNDhiMTNjNDE2NWZmZThmMDg4Yzg3ZDA2ZGY0OWM2MDM0
NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdAogICAg
IHJldHVybiBTX09LOwogfQogCi1PcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29y
ZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlv
bikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmlu
ZGV4IDk3NmIzMmFhMmNmZWQwODAxYWM5ZThkOGVhZmZkNTM5ZTk5MTg2ZDguLjBkMGQ2ODBjN2Q2
OTM2ZTYyOTI3MzJmMTA3NjdjNGE5NjQzZDIxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTQ1LDEzICs0NSwxMyBAQCBwdWJs
aWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVzdGFtcCwgZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogCi0gICAg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fcG9zaXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9wb3Np
dGlvbjsKIH07CiAKLU9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBj
b3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAK
ICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggN2UxN2Y3MWQxNDJjMTZkYTUzZmU3MjY2ZjQ0Yzg4OWNkNDM4MmUyZS4u
YWFlMDljODIyNzA0MzljMTFiNzQ0OWZjZTM5OTcwYmU2NjYzMDE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTU4MzgsNyArNTgzOCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
dmlzaWJsZUNvbnRlbnRSZWN0KF9PdXRfIExQUkVDVCByZWN0KQogICAgIHJldHVybiBTX09LOwog
fQogCi1zdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihPcHRpb25hbDxEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1
cnNvcihzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKICAgICBpZiAo
IW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfTk9ORTsKQEAgLTY0NDYsNyAr
NjQ0Niw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1l
KiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9OKiBjCiAgICAgaWYgKGNoYXJQb3MtPmR3Q2hh
clBvcyAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEludFJlY3QgY2FyZXQ7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgIGlmICh0
YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmFuZ2UgPSB0
YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MWE5NzhlOGM3
MjVkNzc0NTg5MDhjN2Q5MjNlY2VjYjRlYWI4OGUyLi4xZDM0ZjVkYjE2ZDhkMGZkNDQwY2U0NWI4
M2M1NmNiOWY4YzRlNGY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9y
IHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFu
eSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBPcHRpb25h
bDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0yOSAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgY2FsYygpIHJlbGF0ZWQgZmlsZXMgaW50byAx
LWNsYXNzIHBlciBmaWxlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA1YzVmMzFhYWU4ODEwOGI0
NmM5OTE1YThlN2I4YmMxZjg3YTc4M2QyLi4zMDFjOWY4YWFhYmZjMWNhZTMxYmZiNjQ4NDAyZDdh
ZjRmYjY3YmQ2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtODEsMTIgKzgxLDEyIEBAIC0gKHZvaWQpX2FjY2Vz
c2liaWxpdHlTY3JvbGxUb0dsb2JhbFBvaW50OihOU1BvaW50KXBvaW50OwogLSAodm9pZClfYWNj
ZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3RyaW5nKilhdHRy
aWJ1dGVOYW1lOwogQGVuZAogCi1zdGF0aWMgT3B0aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVs
ZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBtYWtl
VmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgaWQgZWxlbWVudCkK
IHsKICAgICByZXR1cm4geyB7IGVsZW1lbnQgfSB9OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSosIGlkIGVsZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgaWQgZWxlbWVudCkKIHsKICAgICByZXR1cm4g
eyB7IGVsZW1lbnQgfSB9OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCmluZGV4IDMyNTNhYzcyNjAyNTY1YzRkOWVkNDk3YzA4ZWIzY2RkM2NkYmZiZDYuLjdm
NjFjZTAxNDZiMzYwYzFjZmEzNjAyODY3MzAwZTJkZTQ5ZDc5ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2xhdGls
ZSBib29sIGRvbmU7CiBSZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRyb2xsZXI+IGdOYXZpZ2F0aW9u
Q29udHJvbGxlcjsKIFJlZlB0cjxUZXN0UnVubmVyPiBnVGVzdFJ1bm5lcjsKIAotT3B0aW9uYWw8
V1RSOjpUZXN0T3B0aW9ucz4gbWFpbkZyYW1lVGVzdE9wdGlvbnM7CitzdGQ6Om9wdGlvbmFsPFdU
Ujo6VGVzdE9wdGlvbnM+IG1haW5GcmFtZVRlc3RPcHRpb25zOwogV2ViRnJhbWUgKm1haW5GcmFt
ZSA9IG5pbDsKIC8vIFRoaXMgaXMgdGhlIHRvcG1vc3QgZnJhbWUgdGhhdCBpcyBsb2FkaW5nLCBk
dXJpbmcgYSBnaXZlbiBsb2FkLCBvciBuaWwgd2hlbiBubyBsb2FkIGlzIAogLy8gaW4gcHJvZ3Jl
c3MuICBVc3VhbGx5IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIG1haW4gZnJhbWUsIGJ1dCBub3Qg
YWx3YXlzLiAgSW4gdGhlIGNhc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9D
b21tb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKaW5kZXggNDZlZjg1
OTI5MjgyNmUwYjU4ZDAyYzQwYTFlYTAzMTBjNjkyOWViOC4uZDUyZTUzOTU4ZGNlYjBiZDNkNTJl
YmM0YmY2YTAyZGZlMjE4MTdhMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Nv
bW1vbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKQEAgLTIwNSw3
ICsyMDUsNyBAQCBib29sIGFza1Byb3h5U2V0dGluZ3MoSFdORCBod25kLCBQcm94eVNldHRpbmdz
JiBzZXR0aW5ncykKICAgICByZXR1cm4gZGlhbG9nLnJ1bihoSW5zdCwgaHduZCwgSUREX1BST1hZ
KTsKIH0KIAotT3B0aW9uYWw8Q3JlZGVudGlhbD4gYXNrQ3JlZGVudGlhbChIV05EIGh3bmQsIGNv
bnN0IHN0ZDo6d3N0cmluZyYgcmVhbG0pCitzdGQ6Om9wdGlvbmFsPENyZWRlbnRpYWw+IGFza0Ny
ZWRlbnRpYWwoSFdORCBod25kLCBjb25zdCBzdGQ6OndzdHJpbmcmIHJlYWxtKQogewogICAgIHN0
cnVjdCBBdXRoRGlhbG9nIDogcHVibGljIERpYWxvZyB7CiAgICAgICAgIHN0ZDo6d3N0cmluZyBy
ZWFsbTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9Db21tb24uaAppbmRleCA2YzQyMWNlZTY2YTkwN2I4NjVlNzg1MjU4
ZDA2ZDkxMjJiMDUwMzdhLi45OTY0ZDVlNTA0MzE5ZDc3ODMzNjgzZGRmNTgwOWJjN2Y3ZjRkYzBi
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgY29tcHV0ZUZ1
bGxEZXNrdG9wRnJhbWUoKTsKIGJvb2wgZ2V0QXBwRGF0YUZvbGRlcihfYnN0cl90JiBkaXJlY3Rv
cnkpOwogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKTsKIHZvaWQgY3JlYXRl
Q3Jhc2hSZXBvcnQoRVhDRVBUSU9OX1BPSU5URVJTKik7Ci1PcHRpb25hbDxDcmVkZW50aWFsPiBh
c2tDcmVkZW50aWFsKEhXTkQsIGNvbnN0IHN0ZDo6d3N0cmluZyYgcmVhbG0pOworc3RkOjpvcHRp
b25hbDxDcmVkZW50aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQsIGNvbnN0IHN0ZDo6d3N0cmluZyYg
cmVhbG0pOwogYm9vbCBhc2tQcm94eVNldHRpbmdzKEhXTkQsIFByb3h5U2V0dGluZ3MmKTsKIAog
Ym9vbCBhc2tTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oSFdORCwgY29uc3Qgc3RkOjp3c3RyaW5nJiB0
ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUgYi9Ub29s
cy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCmluZGV4IDkwY2QzMGU3NTYxMDJhZWJlY2E1ZDM0
YTg3YmQ2ZTgyNjU2YmQyNjEuLmZjNzFiYTBmOTM4MWU1YzI1NWYwZjAyNWRmMjg4M2RlZDNjNDk2
ZWQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKKysrIGIvVG9v
bHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQpAQCAtMTEyLDYgKzExMiw3IEBAIG15ICVyZW5h
bWVzID0gKAogICAgICJXVEY6Ok9wdGlvbmFsIiA9PiAic3RkOjpvcHRpb25hbCIsCiAgICAgIldU
Rjo6bWFrZU9wdGlvbmFsIiA9PiAic3RkOjptYWtlX29wdGlvbmFsIiwKICAgICAibWFrZU9wdGlv
bmFsIiA9PiAic3RkOjptYWtlX29wdGlvbmFsIiwKKyAgICAiT3B0aW9uYWw8IiA9PiAic3RkOjpv
cHRpb25hbDwiLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JUaGVGdXR1cmUgPSAo
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTQmFzaWNzLmNw
cCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3MuY3BwCmluZGV4IDU2
M2QwOTAyODY0MzE2NzA3ZmMxNmQ1NTYxZjY2NWE0OGFiMzA1YzguLjYzNTQxMzRhODk5NjVmNmYy
YmRjZDIwMGYzOGE2MWRhYjZiZDg0NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvQmluZGluZ3MvSlNCYXNpY3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmlu
ZGluZ3MvSlNCYXNpY3MuY3BwCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogbmFtZXNwYWNlIFdUUiB7
CiAKLU9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICByZXR1cm4gSlNWYWx1
ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZh
bHVlKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIHZhbHVlKSk7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gdG9PcHRpb25hbERvdWJs
ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB0b09wdGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IHZhbHVlKQogewogICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUp
IHx8IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjpt
YWtlX29wdGlvbmFsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpOwog
fQogCi1KU1ZhbHVlUmVmIG1ha2VWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgT3B0aW9uYWw8
Ym9vbD4gdmFsdWUpCitKU1ZhbHVlUmVmIG1ha2VWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwg
c3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPyBKU1ZhbHVl
TWFrZUJvb2xlYW4oY29udGV4dCwgdmFsdWUudmFsdWUoKSkgOiBKU1ZhbHVlTWFrZU51bGwoY29u
dGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pT
QmFzaWNzLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTQmFzaWNzLmgKaW5k
ZXggOGQxMWJjNDhjODJkNzc0YTRjMGNhYTg1NjI2MGQwODllMjE1OTE5MS4uOTAyYmY3NTlmNTAx
NjEzMTRmODQ0OTY5ZGRjZGY4Mjg4YzJmN2JiYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
QmluZGluZ3MvSlNCYXNpY3MuaApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXVFIg
ewogCi1PcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChKU0NvbnRleHRSZWYsIEpTVmFsdWVS
ZWYpOwotT3B0aW9uYWw8ZG91YmxlPiB0b09wdGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZik7CitzdGQ6Om9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZik7CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG9PcHRpb25hbERvdWJsZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY3Jl
YXRlSlNTdHJpbmcoY29uc3QgY2hhciogPSAiIik7CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
Y3JlYXRlSlNTdHJpbmcoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKIAogSlNWYWx1ZVJlZiBt
YWtlVmFsdWUoSlNDb250ZXh0UmVmLCBjb25zdCBjaGFyKik7Ci1KU1ZhbHVlUmVmIG1ha2VWYWx1
ZShKU0NvbnRleHRSZWYsIE9wdGlvbmFsPGJvb2w+KTsKK0pTVmFsdWVSZWYgbWFrZVZhbHVlKEpT
Q29udGV4dFJlZiwgc3RkOjpvcHRpb25hbDxib29sPik7CiBKU1ZhbHVlUmVmIG1ha2VWYWx1ZShK
U0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmKTsKIAogSlNWYWx1ZVJlZiBwcm9wZXJ0eShKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmLCBjb25zdCBjaGFyKiBuYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggODQxZTUzMGU1NWY5OTczMDY4NTExYzk0ZTlhYmQxZDFmNzg3MWIxNC4uMWI1OTVl
MTdjOWRmOGU1NjIzM2ZlZjk1Yjc3ZDMwMDY1NWJlMzg4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVy
LmgKQEAgLTk4LDggKzk4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVt
RWZmZWN0aXZlV2lkdGgoZG91YmxlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0QWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdChib29sKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgp
IGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3Rh
dGVPdmVycmlkZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKHN0ZDo6b3B0aW9u
YWw8Ym9vbD4pIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCiAgICAgdmlydHVhbCBKU09iamVjdFJl
ZiBjb250ZW50VmlzaWJsZVJlY3QoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKaW5kZXggNjZkN2VhZTM5
MmYwNTkxMGI3MDk0YWM5NDYzZmFiMGE4ZTkyMmQzMy4uOWM3Zjg1NmJlYWM4YzVkMDgzM2QxYzAw
NmQ0ODNlOGVhYTk1ZDZjMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcApAQCAtMTM0LDcg
KzEzNCw3IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4mJiBj
b25uZWN0aW9uSGFuZGxlciwgc2l6ZV90IGNvbm5lY3RpCiB9CiAKICNpZiBIQVZFKFNTTCkKLXZv
aWQgVENQU2VydmVyOjpzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0IHNvY2tldCwgRnVuY3Rp
b248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgYm9vbCByZXF1ZXN0Q2xp
ZW50Q2VydGlmaWNhdGUsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uKQordm9pZCBU
Q1BTZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQgc29ja2V0LCBGdW5jdGlvbjx2
b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVlc3RDbGllbnRD
ZXJ0aWZpY2F0ZSwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbikKIHsKICAg
ICBTU0xfbGlicmFyeV9pbml0KCk7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFRDUFNlcnZl
cjo6c3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCBzb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NM
Kik+JiYgc2VjdQogICAgIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKGFjY2VwdFJlc3VsdCA+IDAg
PyBzc2wuZ2V0KCkgOiBudWxscHRyKTsKIH07CiAKLVRDUFNlcnZlcjo6VENQU2VydmVyKFByb3Rv
Y29sIHByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5k
bGVyLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiwgc2l6ZV90IGNvbm5lY3Rpb25z
KQorVENQU2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQo
U1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IG1heFRMU1ZlcnNpb24sIHNpemVfdCBjb25uZWN0aW9ucykKIHsKICAgICBzd2l0Y2ggKHByb3Rv
Y29sKSB7CiAgICAgY2FzZSBQcm90b2NvbDo6SFRUUFM6CkBAIC0yNTksNyArMjU5LDcgQEAgVENQ
U2VydmVyOjp+VENQU2VydmVyKCkKICAgICAgICAgY29ubmVjdGlvblRocmVhZHMuam9pbigpOwog
fQogCi1hdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMp
IC0+IE9wdGlvbmFsPFNvY2tldD4KK2F1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNp
emVfdCBjb25uZWN0aW9ucykgLT4gc3RkOjpvcHRpb25hbDxTb2NrZXQ+CiB7CiAgICAgU29ja2V0
IGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CiAgICAg
aWYgKGxpc3RlbmluZ1NvY2tldCA9PSAtMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVENQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCmluZGV4IDMz
NjRhY2QzZTE4NjU2MDJhY2RjMDVhZWNiZjI1Y2I2N2NkMTcwNDEuLmIwYWFiYjExYWMwMzRhMmMw
YzA4Mzc5NTkyMzczZGNmOWJiYzVmNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VENQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3Qgewog
ICAgICAgICBIVFRQUywgSFRUUFNQcm94eSwgSFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1
ZXN0CiAgICAgfTsKLSAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+
JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gc3RkOjpudWxsb3B0LCBzaXpl
X3QgY29ubmVjdGlvbnMgPSAxKTsKKyAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9uPHZv
aWQoU1NMKik+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6
Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9IDEpOwogI2VuZGlmIC8vIEhBVkUoU1NMKQog
ICAgIH5UQ1BTZXJ2ZXIoKTsKICAgICAKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIAog
I2lmIEhBVkUoU1NMKQogICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoT0soU1NMKik7Ci0gICAg
c3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCwgRnVuY3Rpb248dm9pZChT
U0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgYm9vbCByZXF1ZXN0Q2xpZW50Q2VydGlm
aWNhdGUgPSBmYWxzZSwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6Om51
bGxvcHQpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQsIEZ1
bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVz
dENsaWVudENlcnRpZmljYXRlID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG1heFRM
U1ZlcnNpb24gPSBzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgcmVzcG9u
ZFdpdGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0KTsKIApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiB0ZXN0Q2VydGlmaWNhdGUoKTsKICAgICAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8U29ja2V0PiBzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBjb25u
ZWN0aW9ucyk7CisgICAgc3RkOjpvcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0ZW4oc2l6
ZV90IGNvbm5lY3Rpb25zKTsKICAgICB2b2lkIGxpc3RlbkZvckNvbm5lY3Rpb25zKHNpemVfdCBj
b25uZWN0aW9ucyk7CiAKICAgICBQb3J0IG1fcG9ydCB7IEludmFsaWRQb3J0IH07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggNzg2MzJlY2ZmZDliODJhZWFjZjY0ZTY2OTk4ZjIyN2ZjYmM3Yjc5ZC4uMDJlNDBlMDUxNDAz
MDA4ODczOWI2NzViMGUzZWQxNTY5MWNiYmU0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBU
RVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgQ29weVJWU3RyaW5nSGF2aW5nVHdvUmVmKQogCiBU
RVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgQ29weUxWT3B0aW9uYWxTdHJpbmcpCiB7Ci0gICAg
T3B0aW9uYWw8U3RyaW5nPiBvcmlnaW5hbCB7ICIxMjM0IiB9OworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBvcmlnaW5hbCB7ICIxMjM0IiB9OwogICAgIGF1dG8gY29weSA9IGNyb3NzVGhyZWFk
Q29weShvcmlnaW5hbCk7CiAgICAgRVhQRUNUX1RSVUUob3JpZ2luYWwtPmltcGwoKS0+aGFzT25l
UmVmKCkpOwogICAgIEVYUEVDVF9UUlVFKGNvcHktPmltcGwoKS0+aGFzT25lUmVmKCkpOwpAQCAt
NzAsNyArNzAsNyBAQCBURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgQ29weUxWT3B0aW9uYWxT
dHJpbmcpCiAKIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBNb3ZlUlZPcHRpb25hbFN0cmlu
ZykKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsIHsgIjEyMzQiIH07CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsIHsgIjEyMzQiIH07CiAgICAgYXV0byBjb3B5ID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3JpZ2luYWwpKTsKICAgICBFWFBFQ1RfVFJVRShjb3B5
LT5pbXBsKCktPmhhc09uZVJlZigpKTsKICAgICBFWFBFQ1RfTlVMTChvcmlnaW5hbC0+aW1wbCgp
KTsKQEAgLTc5LDcgKzc5LDcgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIE1vdmVSVk9w
dGlvbmFsU3RyaW5nKQogVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIENvcHlSVk9wdGlvbmFs
U3RyaW5nSGF2aW5nVHdvUmVmKQogewogICAgIFN0cmluZyBzdHJpbmcgeyAiMTIzNCIgfTsKLSAg
ICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsIHsgc3RyaW5nIH07CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IG9yaWdpbmFsIHsgc3RyaW5nIH07CiAgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJl
YWRDb3B5KG9yaWdpbmFsKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luYWwtPmltcGwoKS0+cmVmQ291
bnQoKSwgMik7CiAgICAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsLT5pbXBsKCkgPT0gY29weS0+aW1w
bCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0
ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5k
ZXggOWRmYWJhNzA0ZWZhMWM0NzgwZmQ5ZDQ5MTY4NWI0NjRmZGExZGQ1MS4uODU4M2IyOWFkOTkw
YzIyYjQ3MmM4NjllY2NkODY4Mjk2MjFiYjBiNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIGhhcmRMaW5rQ291bnQpCiAgICAgRVhQRUNUX1RSVUUoIWxpbmtDb3VudCk7CiB9
CiAKLXN0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2RpZmljYXRpb25UaW1lVGVzdChjb25zdCBTdHJp
bmcmIHBhdGgsIEZ1bmN0aW9uPE9wdGlvbmFsPFdhbGxUaW1lPihjb25zdCBTdHJpbmcmKT4mJiBm
aWxlTW9kaWZpY2F0aW9uVGltZSkKK3N0YXRpYyB2b2lkIHJ1bkdldEZpbGVNb2RpZmljYXRpb25U
aW1lVGVzdChjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+KGNvbnN0IFN0cmluZyYpPiYmIGZpbGVNb2RpZmljYXRpb25UaW1lKQogewogICAgIGF1dG8g
bW9kaWZpY2F0aW9uVGltZSA9IGZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOwogICAgIEVYUEVD
VF9UUlVFKCEhbW9kaWZpY2F0aW9uVGltZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GdW5jdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GdW5jdGlvbi5jcHAKaW5kZXggMGQ1OWQzZWJiNDAzMmU4MGI5ODQ3NWNmYjUxN2ExMGI5ZTZk
ZWE0Yy4uNzkzNTdjNTNiODkyMWRmYmI4ZmRkNTJkOGJmMjBmMmZmZTE0ZTQwZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcApAQCAtMTkwLDEyICsxOTAsMTIg
QEAgc3RydWN0IEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyIHsKICAgICB9CiAKICAgICBGdW5j
dGlvbjx1bnNpZ25lZCgpPiYgZnVuY3Rpb247Ci0gICAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGZ1
bmN0aW9uQXNCb29sOwotICAgIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZnVuY3Rpb25SZXN1
bHQ7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZnVuY3Rpb25Bc0Jvb2w7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZ1bmN0aW9uUmVzdWx0OwogfTsKIAotT3B0
aW9uYWw8Ym9vbD4gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uQXNCb29sOwot
T3B0aW9uYWw8dW5zaWduZWQ+IEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJl
c3VsdDsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1
bmN0aW9uQXNCb29sOworc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gRnVuY3Rpb25EZXN0cnVjdGlv
bkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0OwogCiBURVNUKFdURl9GdW5jdGlvbiwgQXNzaWduQmVm
b3JlRGVzdHJveSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCmlu
ZGV4IDBlNzcwM2U2ZjMwZGQwMjVjNzUwZjUzNThjODJlMjU0MWM4ODY2MWQuLmUwN2E3YjNiNjRi
ZWJmYzNlZDkxNGI0ZTk3ZWQwODVlOTQ3OTUzMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaGVyLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIFRFU1QoV1RGLCBIYXNoZXJfbXVs
dGlwbGUpCiAgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKHN0ZDo6YXJy
YXk8aW50LCAxPiB7IHsgMCB9IH0pKTsKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29t
cHV0ZUhhc2goVmVjdG9yPGludD4geyAwIH0pKTsKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFz
aCwgY29tcHV0ZUhhc2goVmVjdG9yPGludCwgMT4geyAwIH0pKTsKLSAgICBFWFBFQ1RfRVEoemVy
bzMyQml0SGFzaCwgY29tcHV0ZUhhc2goT3B0aW9uYWw8aW50PiB7IHN0ZDo6bnVsbG9wdCB9KSk7
CisgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKHN0ZDo6b3B0aW9uYWw8
aW50PiB7IHN0ZDo6bnVsbG9wdCB9KSk7CiAgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNv
bXB1dGVIYXNoKHN0ZDo6bWFrZV90dXBsZSgwKSkpOwogCiAgICAgRVhQRUNUX0VRKG9uZTY0Qml0
SGFzaCwgY29tcHV0ZUhhc2goMSwgMCkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFRFU1QoV1RGLCBI
YXNoZXJfbXVsdGlwbGUpCiAgICAgRVhQRUNUX0VRKG9uZTY0Qml0SGFzaCwgY29tcHV0ZUhhc2go
c3RkOjptYWtlX3BhaXIoMSwgMCkpKTsKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21w
dXRlSGFzaChzdGQ6OmFycmF5PGludCwgMj4geyB7IDEsIDAgfSB9KSk7CiAgICAgRVhQRUNUX0VR
KG9uZTY0Qml0SGFzaCwgY29tcHV0ZUhhc2goeyAxLCAwIH0pKTsKLSAgICBFWFBFQ1RfRVEob25l
NjRCaXRIYXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgMCB9KSk7CisgICAgRVhQRUNU
X0VRKG9uZTY0Qml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjpvcHRpb25hbDxpbnQ+IHsgMCB9KSk7
CiAgICAgRVhQRUNUX0VRKG9uZTY0Qml0SGFzaCwgY29tcHV0ZUhhc2goVmVjdG9yPGludD4geyB7
IDEsIDAgfSB9KSk7CiAgICAgRVhQRUNUX0VRKG9uZTY0Qml0SGFzaCwgY29tcHV0ZUhhc2goVmVj
dG9yPGludCwgMT4geyB7IDEsIDAgfSB9KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01hcmthYmxlLmNwcAppbmRleCA1YjdlMTUzMTdjYmZlOWI2M2RlMzhmNGFkMDc5ZGRlODc1
YzRiODI4Li4xZjZkMDk1NTNmZTQzNTA2NDhmNWExY2EyYmRjYWU0YTE2ODU3NzgyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWFya2FibGUuY3BwCkBAIC0xMjEsNDAgKzEyMSw0
MCBAQCBURVNUKFdURl9NYXJrYWJsZSwgRGVzdHJ1Y3RvcikKIFRFU1QoV1RGX01hcmthYmxlLCBG
cm9tT3B0aW9uYWwpCiB7CiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGZyb207CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmcm9tOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGlj
X2Nhc3Q8Ym9vbD4oZnJvbSkpOwogICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2Fi
bGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsID0gZnJvbTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT3B0
aW9uYWw8aW50PiBmcm9tIHsgNDIgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb20g
eyA0MiB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CiAg
ICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0
aW9uYWwgPSBmcm9tOwogICAgICAgICAvLyBXZSBjb252ZXJ0IHRoaXMgdG8gbnVsbG9wdC4KICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBmcm9tIHsgNDMgfTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IGZyb20geyA0MyB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2Fz
dDxib29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRy
YWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgICAgICBFWFBFQ1RfRVEob3B0aW9uYWwudmFs
dWUoKSwgNDMpOwogICAgIH0KICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gZnJvbTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb207CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0
aWNfY2FzdDxib29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJr
YWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CiAgICAgICAg
IEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgIH0KICAgICB7
Ci0gICAgICAgIE9wdGlvbmFsPGludD4gZnJvbSB7IDQyIH07CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBmcm9tIHsgNDIgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9v
bD4oZnJvbSkpOwogICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8
aW50LCA0Mj4+IG9wdGlvbmFsIHsgV1RGTW92ZShmcm9tKSB9OwogICAgICAgICAvLyBXZSBjb252
ZXJ0IHRoaXMgdG8gbnVsbG9wdC4KICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJv
b2w+KG9wdGlvbmFsKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBmcm9t
IHsgNDMgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb20geyA0MyB9OwogICAgICAg
ICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxl
PGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBXVEZNb3Zl
KGZyb20pIH07CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFs
KSk7CkBAIC0xNjcsNDAgKzE2Nyw0MCBAQCBURVNUKFdURl9NYXJrYWJsZSwgVG9PcHRpb25hbCkK
ICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWw7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihv
cHRpb25hbCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOwogICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICB9CiAgICAgewogICAgICAgICBNYXJrYWJsZTxp
bnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgICAg
IC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgotICAgICAgICBPcHRpb25hbDxpbnQ+IHRv
ID0gb3B0aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOwog
ICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICB9CiAgICAg
ewogICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+
IG9wdGlvbmFsIHsgNDMgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4o
b3B0aW9uYWwpKTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsKICAgICAgICAgRVhQRUNUX1RSVUUo
c3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICAgICAgRVhQRUNUX0VRKHRvLnZhbHVlKCksIDQz
KTsKICAgICB9CiAgICAgewogICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVU
cmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nh
c3Q8Ym9vbD4ob3B0aW9uYWwpKTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUo
b3B0aW9uYWwpIH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0
aW9uYWwpIH07CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOwog
ICAgIH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0
czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MiB9OwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGlj
X2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICAgICAgLy8gV2UgY29udmVydCB0aGlzIHRvIG51
bGxvcHQuCi0gICAgICAgIE9wdGlvbmFsPGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9OwogICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICB9CiAgICAgewog
ICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9w
dGlvbmFsIHsgNDMgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
aW9uYWwpKTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07CiAg
ICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CiAgICAgICAgIEVYUEVD
VF9FUSh0by52YWx1ZSgpLCA0Myk7CiAgICAgfQpAQCAtMjQ3LDEzICsyNDcsMTMgQEAgVEVTVChX
VEZfTWFya2FibGUsIE1vdmVPcHRpb25hbCkKICAgICAgICAgaW50IG1fdmFsdWU7CiAgICAgfTsK
ICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPE9ubHlNb3ZhYmxlPiBmcm9tIHsgc3RkOjppbl9wbGFj
ZSwgMjAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPbmx5TW92YWJsZT4gZnJvbSB7IHN0ZDo6
aW5fcGxhY2UsIDIwIH07CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZy
b20pKTsKICAgICAgICAgRVhQRUNUX0VRKGZyb20udmFsdWUoKS52YWx1ZSgpLCAyMCk7CiAgICAg
ICAgIE1hcmthYmxlPE9ubHlNb3ZhYmxlLCBPbmx5TW92YWJsZT4gY29tcGFjdCA9IFdURk1vdmUo
ZnJvbSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGNvbXBhY3QpKTsK
ICAgICAgICAgRVhQRUNUX0VRKGNvbXBhY3QudmFsdWUoKS52YWx1ZSgpLCAyMCk7Ci0gICAgICAg
IE9wdGlvbmFsPE9ubHlNb3ZhYmxlPiB0byA9IFdURk1vdmUoY29tcGFjdCk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8T25seU1vdmFibGU+IHRvID0gV1RGTW92ZShjb21wYWN0KTsKICAgICAgICAg
RVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICAgICAgRVhQRUNUX0VRKHRv
LnZhbHVlKCkudmFsdWUoKSwgMjApOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9WZWN0b3IuY3BwCmluZGV4IGZkYWJhOTQ3MDM5NWVhODAxOTg1MGU4ZmI4YWVhMDlhZmUzN2Fm
ODcuLmFmNDE1MzNkMzJhYmY3NmY1YzNhYjQwYjMzNWIzN2VkYzk5NDg0MzUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApAQCAtOTUzLDcgKzk1Myw3IEBAIFRFU1Qo
V1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0aW9uUmV0dXJuUmVmUHRyKQogCiAgICAg
UmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBjcmVhdGVSZWZD
b3VudGVkRm9yT2RkKSksIHR5cGVuYW1lIFdURjo6VmVjdG9yPFJlZjxSZWZDb3VudGVkT2JqZWN0
Pj4+Ojp2YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxpbnQ+
IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIE9wdGlvbmFsPGludD4iKTsKKyAgICAg
ICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxpbnQ+IHdoZW4gdGhlIG1hcHBlZCBm
dW5jdGlvbiByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8aW50PiIpOwogICAgIGF1dG8gbWFwcGVkID0g
V1RGOjpjb21wYWN0TWFwKHZlY3RvciwgY3JlYXRlUmVmQ291bnRlZEZvck9kZCk7CiAKICAgICBF
WFBFQ1RfRVEoMFUsIFJlZkNvdW50ZWRPYmplY3Q6OnNfdG90YWxSZWZDb3VudCk7CkBAIC05NjIs
NyArOTYyLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1
cm5SZWZQdHIpCiAgICAgRVhQRUNUX0VRKDMsIG1hcHBlZFsxXS0+dmFsdWUpOwogfQogCi1PcHRp
b25hbDxSZWY8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRGb3JFdmVuKGludCBp
bnB1dCkKK3N0ZDo6b3B0aW9uYWw8UmVmPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVSZWZDb3Vu
dGVkRm9yRXZlbihpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk4NCw3ICs5ODQsNyBAQCBURVNUKFdURl9WZWN0b3IsIENv
bXBhY3RNYXBTdGF0aWNGdW5jdGlvblJldHVybk9wdGlvbmFsUmVmKQogICAgIEVYUEVDVF9FUSg0
LCBtYXBwZWRbMV0tPnZhbHVlKTsKIH0KIAotT3B0aW9uYWw8UmVmUHRyPFJlZkNvdW50ZWRPYmpl
Y3Q+PiBjcmVhdGVSZWZDb3VudGVkV2hlbkRpdmlzaWJsZUJ5VGhyZWUoaW50IGlucHV0KQorc3Rk
OjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRXaGVu
RGl2aXNpYmxlQnlUaHJlZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk5OSw3ICs5OTksNyBAQCBURVNUKFdURl9WZWN0
b3IsIENvbXBhY3RNYXBTdGF0aWNGdW5jdGlvblJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAg
UmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBjcmVhdGVSZWZD
b3VudGVkV2hlbkRpdmlzaWJsZUJ5VGhyZWUpKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8UmVmUHRy
PFJlZkNvdW50ZWRPYmplY3Q+Pj46OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJl
dHVybnMgVmVjdG9yPFJlZlB0cjw+PiB3aGVuIHRoZSBtYXBwZWQgZnVuY3Rpb24gcmV0dXJucyBP
cHRpb25hbDxSZWZQdHI8Pj4iKTsKKyAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZl
Y3RvcjxSZWZQdHI8Pj4gd2hlbiB0aGUgbWFwcGVkIGZ1bmN0aW9uIHJldHVybnMgc3RkOjpvcHRp
b25hbDxSZWZQdHI8Pj4iKTsKICAgICBhdXRvIG1hcHBlZCA9IFdURjo6Y29tcGFjdE1hcCh2ZWN0
b3IsIGNyZWF0ZVJlZkNvdW50ZWRXaGVuRGl2aXNpYmxlQnlUaHJlZSk7CiAKICAgICBFWFBFQ1Rf
RVEoMFUsIFJlZkNvdW50ZWRPYmplY3Q6OnNfdG90YWxSZWZDb3VudCk7CkBAIC0xMDEzLDEzICsx
MDEzLDEzIEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFs
KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvciB7ICJhIiwgImIiLCAiaGVsbG8iLCAiY2lh
byIsICJ3b3JsZCIsICJ3ZWJraXQiIH07CiAKLSAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgLT4gT3B0aW9uYWw8U3RyaW5nPiB7CisgICAgYXV0byBmdW5jdGlvbiA9
IFtdKGNvbnN0IFN0cmluZyYgdmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7CiAgICAg
ICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8IDUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gdmFsdWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKICAg
ICB9OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKFdURjo6Y29tcGFj
dE1hcCh2ZWN0b3IsIGZ1bmN0aW9uKSksIHR5cGVuYW1lIFdURjo6VmVjdG9yPFN0cmluZz4+Ojp2
YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxTdHJpbmc+IHdo
ZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIE9wdGlvbmFsPFN0cmluZz4iKTsKKyAgICAg
ICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxTdHJpbmc+IHdoZW4gdGhlIG1hcHBl
ZCBmdW5jdGlvbiByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiIpOwogICAgIGF1dG8gbWFw
cGVkID0gV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VR
KDNVLCBtYXBwZWQuc2l6ZSgpKTsKQEAgLTEwNjAsMTQgKzEwNjAsMTQgQEAgVEVTVChXVEZfVmVj
dG9yLCBDb21wYWN0TWFwTGFtYmRhQ29weVZlY3RvclJldHVybk9wdGlvbmFsQ291bnRlZE9iamVj
dCkKIAogICAgIENvdW50ZWRPYmplY3Q6OmNvdW50KCkgPSAwOwogCi0gICAgYXV0byBmdW5jdGlv
biA9IFtdKGNvbnN0IENvdW50ZWRPYmplY3QmIG9iamVjdCkgLT4gT3B0aW9uYWw8Q291bnRlZE9i
amVjdD4geworICAgIGF1dG8gZnVuY3Rpb24gPSBbXShjb25zdCBDb3VudGVkT2JqZWN0JiBvYmpl
Y3QpIC0+IHN0ZDo6b3B0aW9uYWw8Q291bnRlZE9iamVjdD4gewogICAgICAgICBpZiAob2JqZWN0
LnZhbHVlKCkgJSAyKQogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pKSwgdHlwZW5hbWUgV1RG
OjpWZWN0b3I8Q291bnRlZE9iamVjdD4+Ojp2YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1h
cCByZXR1cm5zIFZlY3RvcjxDb3VudGVkT2JqZWN0PiB3aGVuIHRoZSBsYW1iZGEgcmV0dXJucyBP
cHRpb25hbDxDb3VudGVkT2JqZWN0PiIpOworICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVy
bnMgVmVjdG9yPENvdW50ZWRPYmplY3Q+IHdoZW4gdGhlIGxhbWJkYSByZXR1cm5zIHN0ZDo6b3B0
aW9uYWw8Q291bnRlZE9iamVjdD4iKTsKICAgICBhdXRvIG1hcHBlZCA9IFdURjo6Y29tcGFjdE1h
cCh2ZWN0b3IsIGZ1bmN0aW9uKTsKIAogICAgIEVYUEVDVF9FUSgyVSwgQ291bnRlZE9iamVjdDo6
Y291bnQoKSk7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RN
YXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0KQogCiAgICAgQ291
bnRlZE9iamVjdDo6Y291bnQoKSA9IDA7CiAKLSAgICBhdXRvIGZ1bmN0aW9uID0gW10oQ291bnRl
ZE9iamVjdCYmIG9iamVjdCkgLT4gT3B0aW9uYWw8Q291bnRlZE9iamVjdD4geworICAgIGF1dG8g
ZnVuY3Rpb24gPSBbXShDb3VudGVkT2JqZWN0JiYgb2JqZWN0KSAtPiBzdGQ6Om9wdGlvbmFsPENv
dW50ZWRPYmplY3Q+IHsKICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSgpICUgMikKICAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFN
b3ZlVmVjdG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0KQogCiAgICAgUmVmQ291bnRlZE9i
amVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAoV1RGTW92ZSh2ZWN0b3IpLCBmdW5jdGlvbikpLCB0
eXBlbmFtZSBXVEY6OlZlY3RvcjxDb3VudGVkT2JqZWN0Pj46OnZhbHVlLAotICAgICAgICAiV1RG
Ojpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPENvdW50ZWRPYmplY3Q+IHdoZW4gdGhlIGxhbWJk
YSByZXR1cm5zIE9wdGlvbmFsPENvdW50ZWRPYmplY3Q+Iik7CisgICAgICAgICJXVEY6OmNvbXBh
Y3RNYXAgcmV0dXJucyBWZWN0b3I8Q291bnRlZE9iamVjdD4gd2hlbiB0aGUgbGFtYmRhIHJldHVy
bnMgc3RkOjpvcHRpb25hbDxDb3VudGVkT2JqZWN0PiIpOwogICAgIGF1dG8gbWFwcGVkID0gV1RG
Ojpjb21wYWN0TWFwKFdURk1vdmUodmVjdG9yKSwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VR
KDBVLCBDb3VudGVkT2JqZWN0Ojpjb3VudCgpKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIFRFU1Qo
V1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAg
UmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKIAotICAgIGF1dG8gZnVuY3Rp
b24gPSBbJl0oaW50IHZhbHVlKSAtPiBPcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+
IHsKKyAgICBhdXRvIGZ1bmN0aW9uID0gWyZdKGludCB2YWx1ZSkgLT4gc3RkOjpvcHRpb25hbDxS
ZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IHsKICAgICAgICAgaWYgKCEodmFsdWUgJSAyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghKHZhbHVlICUgMykp
CkBAIC0xMTY0LDcgKzExNjQsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFS
ZXR1cm5PcHRpb25hbFJlZlB0cikKICAgICB9OwogCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pKSwgdHlwZW5h
bWUgV1RGOjpWZWN0b3I8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+Pj46OnZhbHVlLAotICAgICAg
ICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0
Pj4gd2hlbiB0aGUgbGFtYmRhIHJldHVybnMgT3B0aW9uYWw8UmVmUHRyPFJlZkNvdW50ZWRPYmpl
Y3Q+PiIpOworICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJlZlB0cjxS
ZWZDb3VudGVkT2JqZWN0Pj4gd2hlbiB0aGUgbGFtYmRhIHJldHVybnMgc3RkOjpvcHRpb25hbDxS
ZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+Iik7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVk
T2JqZWN0Pj4gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pOwogCiAg
ICAgRVhQRUNUX0VRKDBVLCBSZWZDb3VudGVkT2JqZWN0OjpzX3RvdGFsUmVmQ291bnQpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ci5jcHAKaW5kZXggNzUw
NTllOWUwNzJiNWZiZDcyNzAwYmYyOGM2NDBjZGExOWVhNWI2YS4uNjE4MGQyMTk2NjU0MmMwNGY1
OGI3N2RlYzc0MzUyNDU0ZTNhNmM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9jZi9SZXRhaW5QdHIuY3BwCkBAIC0xMzIsMTMgKzEzMiwxMyBAQCBURVNUKFJldGFpblB0
ciwgT3B0aW9uYWxSZXRhaW5QdHJDRikKIHsKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBh
ZG9wdENGKCkuCiAgICAgZmxvYXQgdmFsdWUgPSAzLjE0MTU5MjY1MzU7Ci0gICAgT3B0aW9uYWw8
UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkp
OworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmpl
Y3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOwogICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50
KG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKSk7CiAgICAgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiBvYmplY3QxID0gb3B0aW9uYWxPYmplY3QxLnZhbHVlKCk7CiAgICAgRVhQRUNUX0VRKG9w
dGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QxKTsKIAogICAgIC8vIFRlc3QgYXNzaWdubWVu
dCBmcm9tIHJldGFpblB0cigpLgotICAgIE9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+
IG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmplY3QyID0gcmV0YWluUHRyKENGTnVt
YmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVl
KSk7CiAgICAgQ0ZSZWxlYXNlKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpLmdldCgpKTsKICAgICBF
WFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvcHRpb25hbE9iamVjdDIudmFsdWUoKS5nZXQo
KSkpOwogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gb2JqZWN0MiA9IG9wdGlvbmFsT2JqZWN0
Mi52YWx1ZSgpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1QoUmV0YWluUHRyLCBPcHRpb25hbFJl
dGFpblB0ckNGKQogCiAgICAgRVhQRUNUX05FKG9iamVjdDEsIG9iamVjdDIpOwogCi0gICAgLy8g
VGVzdCBhc3NpZ25tZW50IGZyb20gT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4uCisg
ICAgLy8gVGVzdCBhc3NpZ25tZW50IGZyb20gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+Pi4KICAgICBvcHRpb25hbE9iamVjdDEgPSBvcHRpb25hbE9iamVjdDI7CiAgICAgRVhQ
RUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkpOwogICAgIEVYUEVDVF9UUlVFKG9wdGlv
bmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBURVNUKFJldGFp
blB0ciwgT3B0aW9uYWxSZXRhaW5QdHJDRikKICAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3Qx
LnZhbHVlKCksIG9iamVjdDEpOwogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDIudmFsdWUo
KSwgb2JqZWN0Mik7CiAKLSAgICAvLyBUZXN0IG1vdmUgZnJvbSBPcHRpb25hbDxSZXRhaW5QdHI8
Q0ZOdW1iZXJSZWY+Pi4KKyAgICAvLyBUZXN0IG1vdmUgZnJvbSBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxDRk51bWJlclJlZj4+LgogICAgIEVYUEVDVF9FUSgyLCBDRkdldFJldGFpbkNvdW50KG9i
amVjdDIuZ2V0KCkpKTsKICAgICBvcHRpb25hbE9iamVjdDEgPSBXVEZNb3ZlKG9wdGlvbmFsT2Jq
ZWN0Mik7CiAgICAgRVhQRUNUX0VRKDIsIENGR2V0UmV0YWluQ291bnQob2JqZWN0Mi5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tCmluZGV4
IDcyNWQyOWNmYmU5NmMyZTBmMDYzZjZiMjgzODIyMWIzYzNlMDkwMGYuLjE2ZWFiMTQ3ZGMwM2Jh
NDE5MmJlZGQ2NWU5NDE5MGM3MzgxNjU4MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL25zL1JldGFpblB0ci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9ucy9SZXRhaW5QdHIubW0KQEAgLTIxNSwxMyArMjE1LDEzIEBAIFRFU1QoUmV0YWlu
UHRyLCBNb3ZlQXNzaWdubWVudEZyb21TaW1pbGFyTlNUeXBlUmV2ZXJzZWQpCiBURVNUKFJldGFp
blB0ciwgT3B0aW9uYWxSZXRhaW5QdHJOUykKIHsKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJv
bSBhZG9wdE5TKCkuCi0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TT2JqZWN0Pj4gb3B0aW9uYWxP
YmplY3QxID0gYWRvcHROUyhbTlNPYmplY3QgbmV3XSk7CisgICAgc3RkOjpvcHRpb25hbDxSZXRh
aW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDEgPSBhZG9wdE5TKFtOU09iamVjdCBuZXdd
KTsKICAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvcHRpb25hbE9iamVjdDEudmFs
dWUoKS5nZXQoKSkpOwogICAgIFJldGFpblB0cjxOU09iamVjdD4gb2JqZWN0MSA9IG9wdGlvbmFs
T2JqZWN0MS52YWx1ZSgpOwogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwg
b2JqZWN0MSk7CiAKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSByZXRhaW5QdHIoKS4KLSAg
ICBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDI7CisgICAgc3Rk
OjpvcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDI7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihbW05T
T2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdKTsKICAgICB9CkBAIC0yMzEsNyArMjMxLDcgQEAgVEVT
VChSZXRhaW5QdHIsIE9wdGlvbmFsUmV0YWluUHRyTlMpCiAKICAgICBFWFBFQ1RfTkUob2JqZWN0
MSwgb2JqZWN0Mik7CiAKLSAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBPcHRpb25hbDxSZXRh
aW5QdHI8TlNPYmplY3Q+Pi4KKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBzdGQ6Om9wdGlv
bmFsPFJldGFpblB0cjxOU09iamVjdD4+LgogICAgIG9wdGlvbmFsT2JqZWN0MSA9IG9wdGlvbmFs
T2JqZWN0MjsKICAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDEudmFsdWUoKSk7CiAgICAg
RVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkuZ2V0KCkpOwpAQCAtMjQ1LDcgKzI0
NSw3IEBAIFRFU1QoUmV0YWluUHRyLCBPcHRpb25hbFJldGFpblB0ck5TKQogICAgIEVYUEVDVF9F
UShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7CiAgICAgRVhQRUNUX0VRKG9wdGlv
bmFsT2JqZWN0Mi52YWx1ZSgpLCBvYmplY3QyKTsKIAotICAgIC8vIFRlc3QgbW92ZSBmcm9tIE9w
dGlvbmFsPFJldGFpblB0cjxOU09iamVjdD4+LgorICAgIC8vIFRlc3QgbW92ZSBmcm9tIHN0ZDo6
b3B0aW9uYWw8UmV0YWluUHRyPE5TT2JqZWN0Pj4uCiAgICAgRVhQRUNUX0VRKDIsIENGR2V0UmV0
YWluQ291bnQob2JqZWN0Mi5nZXQoKSkpOwogICAgIG9wdGlvbmFsT2JqZWN0MSA9IFdURk1vdmUo
b3B0aW9uYWxPYmplY3QyKTsKICAgICBFWFBFQ1RfRVEoMiwgQ0ZHZXRSZXRhaW5Db3VudChvYmpl
Y3QyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDk3NmQ2ODMyNjhmYTQyNWU1NzY3OTkw
YTE1NTU2ZTllYzJiMWNhMTUuLjhlYWJjODIyOGZkMWI4ZGM5YTRiNGQwMzdiMTVhNDA0ZGJlYTA3
NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFi
bGVUYXNrUXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9B
Ym9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChBYm9ydGFibGVU
YXNrUXVldWUsIFN5bmNUYXNrcykKIAogICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9u
ID0gWyZdKCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICBPcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFz
a0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oWyZdKCkgLT4gRmFuY3lSZXNwb25zZSB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUuZW5xdWV1
ZVRhc2tBbmRXYWl0PEZhbmN5UmVzcG9uc2U+KFsmXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAgICAgY3VycmVu
dFN0ZXArKzsKICAgICAgICAgICAgIEVYUEVDVF9FUSgxLCBjdXJyZW50U3RlcCk7CkBAIC0yMDMs
NyArMjAzLDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIEFib3J0KQogICAgICAgICAgICAg
RVhQRUNUX1RSVUUoZmFsc2UpOwogICAgICAgICB9KTsKICAgICAgICAgLy8gVGhpcyBjYWxsIG11
c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nLgotICAgICAgICBP
cHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0Fu
ZFdhaXQ8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFz
a0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0
aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxz
ZSk7CiAgICAgICAgICAgICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOwpAQCAtMjQ1LDcgKzI0
NSw3IEBAIFRFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBBYm9ydEJlZm9yZVN5bmNUYXNrUnVuKQog
ICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgewogICAgICAgICBFWFBF
Q1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIE9wdGlvbmFsPEZhbmN5UmVzcG9u
c2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxGYW5jeVJlc3BvbnNl
PihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZhbmN5UmVz
cG9uc2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxGYW5jeVJlc3Bv
bnNlPihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9mIHRo
aXMgdGVzdC4KICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKICAgICAgICAgICAgIHJl
dHVybiBGYW5jeVJlc3BvbnNlKDEwMCk7CkBAIC0yODQsNyArMjg0LDcgQEAgVEVTVChBYm9ydGFi
bGVUYXNrUXVldWUsIEFib3J0ZWRCeVN5bmNUYXNrSGFuZGxlcikKICAgICAgICAgY3VycmVudFN0
ZXArKzsKICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRTdGVwKTsKIAotICAgICAgICBPcHRp
b25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdh
aXQ8RmFuY3lSZXNwb25zZT4oWyZdKCkgLT4gRmFuY3lSZXNwb25zZSB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUuZW5xdWV1ZVRhc2tB
bmRXYWl0PEZhbmN5UmVzcG9uc2U+KFsmXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAgICAgICAg
ICAgY3VycmVudFN0ZXArKzsKICAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7
CiAgICAgICAgICAgICB0YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcApp
bmRleCA4MDlhOTBhYThhZjk1MjM1ZGVlNGU5Y2RmZjNkY2MyMmJhYjliZGQ4Li40MjYyZGU3MjY0
NTNhNTM4M2M5MzNmNWQzYTU5YzkyNTEzMGYzYzA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgZnJhbWVzUGVyU2Vjb25kTmVhcmVz
dEZ1bGxTcGVlZCkKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZUludGVy
dmFsV2l0aFVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKICAgICBPcHRpb25T
ZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOwotICAgIE9wdGlvbmFsPEZyYW1lc1Bl
clNlY29uZD4gdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1bnNwZWNpZmllZE5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7
CiAgICAgCiAgICAgYm9vbCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMgPSBwcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nOwogICAgIEFT
U0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgdW5zcGVjaWZpZWRO
b21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMp
LCBGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYmM3YTg0OWFk
NzRlNGE2NDM1ODgxOTQ3OGZlNDM4MzU3MWU4NzUyYS4uMGZkZWRmZTc2YjQ3YTU3NmMyZWI4MTc3
Yzg4MWJhY2UxMTAxZGM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFRFU1Qo
RGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRl
Y29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBl
IHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5hbAorICAgICAgICBzdGQ6Om9wdGlv
bmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5k
bGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUs
IEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3Ro
LCBzaXplb2Yoc2l6ZV90KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCmluZGV4IDY0ZmUwMTc0MWEzODJiMTc1
ZjgyODIzMjMyOWMzZmFlZmI0Njg5OGIuLjJlNmExNWQ0OWRlNGI2MWU3MDdmZjU3ODZkZmQzMGFj
OTNkMDJhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Q
YXJzZWRDb250ZW50UmFuZ2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgVEVTVChXZWJD
b3JlLCBQYXJzZWRSZXF1ZXN0UmFuZ2UpCiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnB1dCA6IGZh
aWx1cmVDYXNlcykKICAgICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgUGFyc2VkUmVxdWVz
dFJhbmdlOjpwYXJzZShpbnB1dCkpOwogCi0gICAgYXV0byBjb21wYXJlID0gW10gKGNvbnN0IFN0
cmluZyYgaW5wdXQsIE9wdGlvbmFsPHNpemVfdD4gYmVnaW4sIE9wdGlvbmFsPHNpemVfdD4gZW5k
KSB7CisgICAgYXV0byBjb21wYXJlID0gW10gKGNvbnN0IFN0cmluZyYgaW5wdXQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBiZWdpbiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGVuZCkgewogICAgICAg
ICBhdXRvIHJhbmdlID0gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCk7CiAgICAgICAg
IEVYUEVDVF9ORShzdGQ6Om51bGxvcHQsIHJhbmdlKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRUeXBlLmNwcApp
bmRleCAzYzMxYTNhODAyZjMzZjMyMjAzZTQ1ZWY5Y2E4ZTRmMGYxNmViZGVkLi40MTM1YjIyYTlm
MzcxZWQ0OWU0OWNmNzFmNzY3YzM2YmY2YjIwNmE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFR5cGUuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFy
YWN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiBzdGF0aWMgY29uc3QgY2hhciogc2VyaWFsaXpl
SWZWYWxpZChjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIGlmIChPcHRpb25hbDxQYXJzZWRD
b250ZW50VHlwZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRl
KGlucHV0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gcGFyc2Vk
Q29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGlucHV0KSkKICAgICAgICAg
cmV0dXJuIGVzY2FwZU5vbkFTQ0lJUHJpbnRhYmxlQ2hhcmFjdGVycyhwYXJzZWRDb250ZW50VHlw
ZS0+c2VyaWFsaXplKCkpOwogICAgIHJldHVybiAiTk9UVkFMSUQiOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCA0ODE4ZjNmODEz
ZjMyZTFiNWNlY2NjZjA4MDk3ODk4ZmY4YWU4ODcyLi5kMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4
ZDI4ODE1N2FkZmRjMWI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2FtcGxlTWFwLmNwcApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIFNh
bXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBs
YXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNh
bXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJh
bmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWwgeyB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwCmluZGV4IDE2YmYyODkyYWRkN2FhMzFkOTlhYzJiYmRhZTgyMDI1NTYyOGFiMzIuLmUy
MmQyYWY2MDczNWYzMzI0MDQ2ZjUzOGQwZjE2YzM1OWViMDM2NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNzcs
OCArNzcsOCBAQCBwcml2YXRlOgogCiBURVNUX0YoU2VjdXJpdHlPcmlnaW5UZXN0LCBTZWN1cml0
eU9yaWdpbkNvbnN0cnVjdG9ycykKIHsKLSAgICBhdXRvIG8xID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIE9wdGlvbmFsPHVpbnQxNl90Pig4MCkpOwotICAg
IGF1dG8gbzIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImV4YW1wbGUuY29tIiwg
T3B0aW9uYWw8dWludDE2X3Q+KCkpOworICAgIGF1dG8gbzEgPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKCJodHRwIiwgImV4YW1wbGUuY29tIiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4oODApKTsK
KyAgICBhdXRvIG8yID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJleGFtcGxlLmNv
bSIsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+KCkpOwogICAgIGF1dG8gbzMgPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZygiaHR0cDovL2V4YW1wbGUuY29tIik7CiAgICAgYXV0byBv
NCA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKCJodHRwOi8vZXhhbXBsZS5jb206
ODAiKTsKICAgICBhdXRvIG81ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksICJo
dHRwOi8vZXhhbXBsZS5jb20iKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgVEVTVF9GKFNlY3VyaXR5
T3JpZ2luVGVzdCwgU2VjdXJpdHlPcmlnaW5Db25zdHJ1Y3RvcnMpCiAgICAgRVhQRUNUX0ZBTFNF
KG80LT5wb3J0KCkpOwogICAgIEVYUEVDVF9GQUxTRShvNS0+cG9ydCgpKTsKICAgICBFWFBFQ1Rf
RkFMU0UobzYtPnBvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKG83LT5wb3J0KCksIE9wdGlvbmFsPHVp
bnQxNl90Pig4MSkpOworICAgIEVYUEVDVF9FUShvNy0+cG9ydCgpLCBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90Pig4MSkpOwogICAgIEVYUEVDVF9GQUxTRShvOC0+cG9ydCgpKTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBFWFBFQ1RfRkFMU0UobzktPnBvcnQoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwCmluZGV4IDBlMGU0MDQ3NjY4NWI2OTI3MzMwOWE1Nzg2OGQ3ZTZhZmQyOTllZmEuLmY2NWUw
ZDAwNGU1NWNjOGYzOTI5OWRmOTE4ZDJhNmI4NDdmZDdiMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJl
YWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToK
LSAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAg
ICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAog
ICAgIHsKICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA0NGFiODRiZmI5N2NmOTgzZDU3OGQzMzhh
MTgxNWFmMjQ4YjE2ZGQ0Li4wMmZiY2JkMWRhMGI3Y2FmODZkN2FmNGZkNjJmNjFmM2Q1NjA3MGM0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0KQEAgLTE3MTAsNyArMTcxMCw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1l
RGF0YSkKIAogVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQog
ewotICAgIE9wdGlvbmFsPFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rp
b247CisgICAgc3RkOjpvcHRpb25hbDxUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJD
b25uZWN0aW9uOwogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAm
c2VydmVyQ29ubmVjdGlvbl0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBj
YXNlIDE6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCA2MTExZjZiMzY3YWMzNjZhMzUy
ZGNmNjU2OWQzYjkyYjgwNGI1MTRlLi5iMjkzOGU3M2M2ZjZhZTY2NmY3YjBmZjM3OWM2MzhlYzgz
ZGRjMWExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTExMTEsOCArMTExMSw4IEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKICAgICAgICAgY29ubmVj
dGlvbi53ZWJTb2NrZXRIYW5kc2hha2UoKTsKICAgICB9KTsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGxvYWRTdWNjZXNzOwotICAgIE9wdGlvbmFsPGJvb2w+IHdlYlNvY2tldFN1Y2Nlc3M7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHdlYlNvY2tldFN1Y2Nlc3M7CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAKICAgICBhdXRvIGhh
bmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKQEAgLTEyMDIsNyAr
MTIwMiw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0c1JlZGly
ZWN0KQogICAgICAgICB9fX0sCiAgICAgfSk7CiAKLSAgICBPcHRpb25hbDxib29sPiBsb2FkU3Vj
Y2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRTdWNjZXNzOwogICAgIGJvb2wgZG9u
ZSA9IGZhbHNlOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhh
bmRsZXIgbmV3XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDY2NGQ5NTczYWJkZTkyMDcxM2ZkOWRm
MGJlNTdlZTU2MDQzYjE5NjUuLjU4MjUwYjZmN2QyYzc0NTQ0ZWIwMGI1M2QzNmNlNzI1MWJmYWVj
MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyBib29sIGRvbmVD
b21waWxpbmc7CiBzdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0Owogc3RhdGljIGJvb2wgZmluaXNo
ZWROYXZpZ2F0aW9uOwogCi1zdGF0aWMgT3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudD4gcmVjZWl2
ZWRBdXRvcGxheUV2ZW50Owotc3RhdGljIE9wdGlvbmFsPF9XS0F1dG9wbGF5RXZlbnRGbGFncz4g
cmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3M7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxfV0tBdXRv
cGxheUV2ZW50PiByZWNlaXZlZEF1dG9wbGF5RXZlbnQ7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxf
V0tBdXRvcGxheUV2ZW50RmxhZ3M+IHJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzOwogCiBzdGF0
aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CiAKQEAgLTY1NSw3ICs2NTUsNyBAQCBzdHJ1Y3QgUGFyc2Vk
UmFuZ2UgewogICAgICAgICBpZiAobWluIDw9IG1heCkKICAgICAgICAgICAgIHJhbmdlID0gc3Rk
OjptYWtlX3BhaXIobWluLCBtYXgpOwogICAgIH0KLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8c2l6
ZV90LCBzaXplX3Q+PiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzaXplX3Qs
IHNpemVfdD4+IHJhbmdlOwogfTsKIAogQGludGVyZmFjZSBUZXN0U2NoZW1lSGFuZGxlciA6IE5T
T2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAK
aW5kZXggNWJlMGI4NzAyZGIxN2JlZmM5NDk1ZGZjODYyMjJmNzNiYzkyMGQ1Ni4uZWE4ZDdmMDNk
ZDQzYzVkN2Y0ZTU5NjI2NzIyMGRiMGMzNTFlYjcxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5h
Z2VyLmNwcApAQCAtMzMsMTAgKzMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgZG91YmxlIGxvbmdp
dHVkZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKICAgICAg
ICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSB9OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBoZWFkaW5nOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBhbHRpdHVkZUFjY3VyYWN5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGlu
ZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkOwogICAgIH07CiAKICAgICBz
dGF0aWMgZ2Jvb2xlYW4gc3RhcnRDYWxsYmFjayhXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1h
bmFnZXIsIEdlb2xvY2F0aW9uVGVzdCogdGVzdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmgKaW5kZXggYjkyODYyYTc2MDczNWU0YzUxOGZmYzk5Nzc3YmM1MTdkYzY3NjcwYy4u
NWIwZGU4Y2M0NGIwOWRhYzVkZjQ0MGNkMjc2NzY3MWQwMTdlNzAzOCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2Fj
eVRMUywgSHR0cDIgfTsKICAgICB1c2luZyBDZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248
dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92
ZXJpZnlfY29tcGxldGVfdCk+OwogCi0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6
Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9IG51bGxwdHIsIFJldGFpblB0cjxTZWNJZGVu
dGl0eVJlZj4mJiA9IG51bGxwdHIsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0geyB9KTsKKyAg
ICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQ
UmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgQ2VydGlmaWNhdGVWZXJpZmll
ciYmID0gbnVsbHB0ciwgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiYmID0gbnVsbHB0ciwgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHsgfSk7CiAgICAgSFRUUFNlcnZlcihGdW5jdGlv
bjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB+
SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGFyc2VQYXRoKGNvbnN0IFZlY3RvcjxjaGFy
PiYgcmVxdWVzdCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJldGFpblB0cjxud19wYXJhbWV0
ZXJzX3Q+IGxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYm
LCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KTsK
KyAgICBzdGF0aWMgUmV0YWluUHRyPG53X3BhcmFtZXRlcnNfdD4gbGlzdGVuZXJQYXJhbWV0ZXJz
KFByb3RvY29sLCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYsIFJldGFpblB0cjxTZWNJZGVudGl0eVJl
Zj4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CiAgICAgc3RhdGljIHZvaWQgcmVz
cG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwgUmVmPFJlcXVlc3REYXRhPik7CiAKICAgICBSZWY8
UmVxdWVzdERhdGE+IG1fcmVxdWVzdERhdGE7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW0KaW5kZXggNzk2ZmEwMWVjNzY5Yjc0ZGYyOTZmNzAzMDJkZjZlNDQzOGNkYzk1Mi4u
ZTlkYmFhMTNiNGEyNTg3NzJkYzY1MjYxYjJiMWZiMjVhNmM4YzE3ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgSFRUUFNl
cnZlcjo6UmVxdWVzdERhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVxdWVzdERh
dGEsIFdURjo6RAogICAgIFZlY3RvcjxDb25uZWN0aW9uPiBjb25uZWN0aW9uczsKIH07CiAKLVJl
dGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6Omxpc3RlbmVyUGFyYW1ldGVycyhQ
cm90b2NvbCBwcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYmIHZlcmlmaWVyLCBSZXRhaW5Q
dHI8U2VjSWRlbnRpdHlSZWY+JiYgY3VzdG9tVGVzdElkZW50aXR5LCBPcHRpb25hbDx1aW50MTZf
dD4gcG9ydCkKK1JldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6Omxpc3RlbmVy
UGFyYW1ldGVycyhQcm90b2NvbCBwcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYmIHZlcmlm
aWVyLCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+JiYgY3VzdG9tVGVzdElkZW50aXR5LCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIGlmIChwcm90b2NvbCAhPSBQcm90b2Nv
bDo6SHR0cCAmJiAhY3VzdG9tVGVzdElkZW50aXR5KQogICAgICAgICBjdXN0b21UZXN0SWRlbnRp
dHkgPSB0ZXN0SWRlbnRpdHkoKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEhUVFBTZXJ2ZXI6
OmNhbmNlbCgpCiAgICAgICAgIGNvbm5lY3Rpb24uY2FuY2VsKCk7CiB9CiAKLUhUVFBTZXJ2ZXI6
OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZp
ZXImJiB2ZXJpZmllciwgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiYmIGlkZW50aXR5LCBPcHRp
b25hbDx1aW50MTZfdD4gcG9ydCkKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFs
aXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJv
dG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllciwgUmV0YWluUHRy
PFNlY0lkZW50aXR5UmVmPiYmIGlkZW50aXR5LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
KQogICAgIDogbV9yZXF1ZXN0RGF0YShhZG9wdFJlZigqbmV3IFJlcXVlc3REYXRhKHJlc3BvbnNl
cykpKQogICAgICwgbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5l
clBhcmFtZXRlcnMocHJvdG9jb2wsIFdURk1vdmUodmVyaWZpZXIpLCBXVEZNb3ZlKGlkZW50aXR5
KSwgcG9ydCkuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaAppbmRleCA2MzlmNmEwZmE2NmU4YTRm
MmNiMmJjMDJkYTQwZWRlNjgyNTgwMmFmLi40ZDcwN2ZjNzA2ODQ5YzgyZjFjZjJjOWE1ODVmYzY3
ZmY4ZTA3NTdiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZE
b2N1bWVudC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50
LmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXN0UERGUGFnZShQ
REZQYWdlICopOwogICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7Ci0gICAgT3B0aW9uYWw8
VmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKLSAgICBtdXRhYmxlIE9w
dGlvbmFsPFN0cmluZz4gbV90ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hpdGVzcGFjZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4+IG1fYW5ub3RhdGlvbnM7Cisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV90ZXh0V2l0aG91dFN1cnJvdW5kaW5n
V2hpdGVzcGFjZTsKIH07CiAKIGNsYXNzIFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFRlc3RQREZEb2N1bWVudD4gewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQppbmRleCA5NmYyNDU1NjUyN2FmNjkzMmE0ZmExNThmNzRhN2Y0
ODkwNDc5NGQ5Li5mMjJjMzcyMjc5Njk0NGI1NmZhZjQ1YzgwNTBkNzQ0ZGI4NmEyOWY0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAt
MTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUo
T3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBPcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9k
ZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+
LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmcoT3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVm
YXVsdENvbnRlbnRNb2RlID0geyB9LCBPcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4o
ZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwog
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0RpY3Rpb25hcnlGdW5jdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGlj
dGlvbmFyeUZ1bmN0aW9ucy5oCmluZGV4IDg0YzlkOTEzMTkxMWViNjc3MTY4MjY3NDVmYmNlZGJh
YWVhN2Q3YmEuLjE1YmZhNzNhZWE4YzYwZjAwMDFjYWYwYmRiYjIyMjkwMjE4OWNjOTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oCkBAIC0zNSw3ICsz
NSw3IEBAIGJvb2wgYm9vbGVhblZhbHVlKFdLVHlwZVJlZik7CiBib29sIGJvb2xlYW5WYWx1ZShj
b25zdCBXS1JldGFpblB0cjxXS1R5cGVSZWY+Jik7CiAKIGRvdWJsZSBkb3VibGVWYWx1ZShXS1R5
cGVSZWYpOwotT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZhbHVlKFdLVHlwZVJlZik7
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS1R5cGVSZWYpOwog
CiBXS1N0cmluZ1JlZiBzdHJpbmdWYWx1ZShXS1R5cGVSZWYpOwogV1RGOjpTdHJpbmcgdG9XVEZT
dHJpbmcoV0tUeXBlUmVmKTsKQEAgLTUwLDcgKzUwLDcgQEAgZG91YmxlIGRvdWJsZVZhbHVlKFdL
RGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIFdLU3RyaW5nUmVmIHN0cmluZ1ZhbHVl
KFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIHVpbnQ2NF90IHVpbnQ2NFZhbHVl
KFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIAotT3B0aW9uYWw8ZG91YmxlPiBv
cHRpb25hbERvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKK3N0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwg
Y29uc3QgY2hhcioga2V5KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRWYWx1ZShj
b25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtl
eSwgY29uc3QgV0tSZXRhaW5QdHI8VD4mIHZhbHVlKTsKIHZvaWQgc2V0VmFsdWUoY29uc3QgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mLCBjb25zdCBjaGFyKiBrZXksIGJvb2wg
dmFsdWUpOwpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRy
PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBkb3VibAogdm9pZCBz
ZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0
IGNoYXIqIGtleSwgV0tTdHJpbmdSZWYgdmFsdWUpOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1Jl
dGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgSlNTdHJp
bmdSZWYgdmFsdWUpOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgY29uc3QgV1RGOjpTdHJpbmcmIHZhbHVl
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5QdHI8
V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mLCBjb25zdCBjaGFyKiBrZXksIGNvbnN0IE9wdGlvbmFs
PFQ+JiB2YWx1ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldFZhbHVlKGNvbnN0IFdL
UmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSk7CiB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUp
ID0gZGVsZXRlOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0
aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgdW5zaWduZWQgdmFsdWUpID0gZGVsZXRlOwog
dm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYs
IGNvbnN0IGNoYXIqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUpID0gZGVsZXRlOwpAQCAtODUsNyAr
ODUsNyBAQCBpbmxpbmUgZG91YmxlIGRvdWJsZVZhbHVlKFdLVHlwZVJlZiB2YWx1ZSkKICAgICBy
ZXR1cm4gdmFsdWUgJiYgV0tHZXRUeXBlSUQodmFsdWUpID09IFdLRG91YmxlR2V0VHlwZUlEKCkg
PyBXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPih2YWx1ZSkpIDogMDsK
IH0KIAotaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS1R5cGVS
ZWYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9wdGlvbmFsRG91YmxlVmFs
dWUoV0tUeXBlUmVmIHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2
YWx1ZSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChXS0RvdWJs
ZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPih2YWx1ZSkpKSA6IHN0ZDo6bnVsbG9w
dDsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgdWludDY0X3QgdWludDY0VmFsdWUoV0tE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKICAgICByZXR1cm4gdWlu
dDY0VmFsdWUodmFsdWUoZGljdGlvbmFyeSwga2V5KSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxk
b3VibGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNv
bnN0IGNoYXIqIGtleSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3Vi
bGVWYWx1ZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgY29uc3QgY2hhcioga2V5KQogewog
ICAgIHJldHVybiBvcHRpb25hbERvdWJsZVZhbHVlKHZhbHVlKGRpY3Rpb25hcnksIGtleSkpOwog
fQpAQCAtMTgwLDcgKzE4MCw3IEBAIGlubGluZSB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBkaWN0aW9uYXJ5LCBjb25zCiAgICAgc2V0VmFs
dWUoZGljdGlvbmFyeSwga2V5LCBhZG9wdFdLKFdLRG91YmxlQ3JlYXRlKHZhbHVlKSkpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+JiBkaWN0aW9uYXJ5LCBjb25zdCBjaGFyKiBrZXksIGNvbnN0
IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0VmFsdWUo
Y29uc3QgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGRpY3Rpb25hcnksIGNv
bnN0IGNoYXIqIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlKQogICAgICAgICBzZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXksICp2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXgg
OWJmNjMzODRhZTI3ZGIyOGM1ZjU0MDU2ODViODhmNzViZWQ3YjUxNi4uOGU3OWZkNTZjMjVjNDEw
NzdmMzViYjU0NTgxNGU4MDE2MmU2YjU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgR2VvbG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRp
b25Qcm92aWRlck1vY2soKTsKIAotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0
aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91Ymxl
PiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29y
TGV2ZWwpOworICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3ksIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBoZWFkaW5nLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBmbG9vckxldmVsKTsKICAgICB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJv
cihXS1N0cmluZ1JlZiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKFdL
R2VvbG9jYXRpb25NYW5hZ2VyUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmgKaW5kZXggNzgxODJlZTkwYzRlMjc5NzU2ZmM2OTU4YTQxMmUxY2FiMjQwZTI2MC4uMjE5
NGNhM2UwYjg3NTc0ZTFiOGM4Mjc0ZmYxNGY1Y2E4NWYyYjEzNyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIGJvb2wgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikKICNlbmRpZgogICAgIAogI2lmZGVmIF9fT0JKQ19fCi1pbmxpbmUgT3B0aW9uYWw8
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+PiBtYWtlVmVjdG9yRWxlbWVudChj
b25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4qLCBpZCByYW5nZSkgeyBy
ZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShyYW5nZSkgfSB9
OyB9CitpbmxpbmUgc3RkOjpvcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlPiosIGlkIHJhbmdlKSB7IHJldHVybiB7IHsgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZTo6Y3JlYXRlKHJhbmdlKSB9IH07IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggY2FjNjE4MjZlYmFmODJlMzZlNmY3
OTg5NTc2N2U0MzcyY2Q1Yjg5NS4uYWQ2MzEzYjA1MzM5ZTE1ZmZhNTc1ZDcxZjkyNDc4ZmRmMjgz
ZmYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTQxMyw3ICs0MTMsNyBAQCBw
cml2YXRlOgogfTsKICAgICAKICNpZmRlZiBfX09CSkNfXwotaW5saW5lIE9wdGlvbmFsPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KK2lubGluZSBzdGQ6Om9w
dGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQo
Y29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1
cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KICNl
bmRpZgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA2MTBlMjI0
MzA0NWU4ZWJmMTFkMjU3MmUyYjEzZmE4NTAwODdkY2YxLi42N2IzNTNmMzAwZmZiZjY1ZDM0NDZj
MmU0ZDgyMTIwNWU2M2UxN2E3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGVuYWJs
ZWQpCiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJTZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShlbmFibGVkKSkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9u
YWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9w
dGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKIHsKICAgICBhdXRvIGJvZHkgPSBhZG9w
dFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAgICAgc2V0VmFsdWUoYm9keSwgImxh
dGl0dWRlIiwgbGF0aXR1ZGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IGJmNzE1NTNiNzVlYzg2NjM4ODIw
ZWYzMWEzNGUyZmY3Nzc1MjQ4M2IuLjM1OWQ4OTY3Y2Y5YzBhMzM3NjcyNTIzMWRjMGY2MjFmMTVl
MWUyMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgLy8g
R2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7Ci0g
ICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwg
T3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRp
bmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7
CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9yTWVzc2FnZSk7CiAgICAg
Ym9vbCBpc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXgg
NGM1MDk4ZGU1N2U0ZjAyYzgwODkyYTZiYzExZTBiZjU5N2NlMjViNC4uM2I5NWZkZTJlM2RhOTI4
ZTExYWE1NDk0MzcxY2M0YjFmYWNiY2I2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpleGVjQ29tbWFuZChKU1N0cmluZ1JlZiBuYW1lLCBKU1N0cmluZ1Jl
ZiBzaG93VUksIEpTU3RyaW5nUmVmIHYKICAgICBXS0J1bmRsZVBhZ2VFeGVjdXRlRWRpdGluZ0Nv
bW1hbmQocGFnZSgpLCB0b1dLKG5hbWUpLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxXS0ZpbmRPcHRpb25zPiBmaW5kT3B0aW9uc0Zyb21BcnJheShKU1Zh
bHVlUmVmIG9wdGlvbnNBcnJheUFzVmFsdWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXS0ZpbmRP
cHRpb25zPiBmaW5kT3B0aW9uc0Zyb21BcnJheShKU1ZhbHVlUmVmIG9wdGlvbnNBcnJheUFzVmFs
dWUpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gbWFpbkZyYW1lSlNDb250ZXh0KCk7CiAgICAgYXV0
byBvcHRpb25zQXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgb3B0aW9uc0FycmF5QXNW
YWx1ZSwgbnVsbHB0cik7CkBAIC04NTksNyArODU5LDcgQEAgYm9vbCBUZXN0UnVubmVyOjppc0dl
b2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKQogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuaXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZlKCk7CiB9CiAKLXZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9w
dGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5n
LCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCit2
b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKIHsKICAgICBJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVk
ZSwgYWNjdXJhY3ksIGFsdGl0dWRlLCBhbHRpdHVkZUFjY3VyYWN5LCBoZWFkaW5nLCBzcGVlZCwg
Zmxvb3JMZXZlbCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDYzMzE4YzZhNzVhNmQ4YTM4ZWE3ZDI1ODcxZTM2NTQ5
MDc5Mzk3NWUuLjFiZTY2M2Q4ZWQ4MWMzOTBjMWQ4YjljNmNiNjEwMGRiYTg0NTE0MjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CkBAIC0yOTAsNyArMjkwLDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAg
dm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBh
bHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJs
ZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRp
bmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZs
b29yTGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIGJvb2wgaXNHZW9sb2NhdGlvblByb3Zp
ZGVyQWN0aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggMTgxNzczYzQ1MTgwZDRkMTUyNDNiYThlMmQwNzY1Yzk4NzdlNGZjOC4uY2ZjOWM0NDgz
YzgyNWQ5MTNlZDI3YTRkNTU4ODRmMjQyZDc2ZjAwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyNDksNyArMjI0OSw3IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGVuYWJsZWQpCiAgICAgZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8
ZG91YmxlPiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+
IGZsb29yTGV2ZWwpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0
aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCiB7CiAg
ICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyLT5zZXRQb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRl
LCBhY2N1cmFjeSwgYWx0aXR1ZGUsIGFsdGl0dWRlQWNjdXJhY3ksIGhlYWRpbmcsIHNwZWVkLCBm
bG9vckxldmVsKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCBjMTQ5NWEyMDBiZmI4N2Y0ZDYxZTdjZWMzOWQ5M2FmMTEyYWUxYzBjLi5iYzBlYzUyNjkzNDcz
NjFjMzE1ZTZlNGQwN2RiODFhYmI2YjQ3YzZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9j
YXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9p
ZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9u
YWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9w
dGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRl
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBo
YW5kbGVHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZik7CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJh
dG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0K
aW5kZXggMWU0YjI2MDFiZTkzNGMxYjVmOTQ5OWMxNTQ5ZDg1ZjFmOGJhOWE5Yy4uMDQ1YWZhNzhl
ODFhMzk5MGM5NzJjZDY2NmExODI3MTg4ODQ4NmNhYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKE5T
U3RyaW5nICprZXkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWlu
dDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0cmluZyAqa2V5KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0cmluZyAq
a2V5KQogewogICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlv
bi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIp
LgogICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0
IGl0cyBrZXkgY29kZS4gT24gaU9TIHRoZSBrZXkgY29kZXMgZm9yIHRoZSBmaXJzdCAxMgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaApp
bmRleCBiN2JmNzcyNDVlNDkyYTkxMjMzMTE2YjcyZWRmZGI0NTM0OTU2YzIwLi45ODA3OTQ5NTQ0
NTE2YzgwNDQxNDJlNjc0N2Q5MWU4Y2Q5NGY4ZDE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaApAQCAtMTA2LDggKzEwNiw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKEpTU3RyaW5nUmVmIG5ld1N0
cmluZywgSlNTdHJpbmdSZWYgb2xkU3RyaW5nLCBKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBk
b3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBtYXhp
bXVtWm9vbVNjYWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3RhYmxl
U3RhdGVPdmVycmlkZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U3RhYmxlU3RhdGVP
dmVycmlkZShPcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKSBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiBvdmVycmlk
ZVZhbHVlKSBvdmVycmlkZTsKICAgICBKU09iamVjdFJlZiBjb250ZW50VmlzaWJsZVJlY3QoKSBj
b25zdCBvdmVycmlkZTsKICAgICBKU09iamVjdFJlZiB0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIEpTT2JqZWN0UmVmIHRleHRTZWxlY3Rpb25DYXJldFJlY3Qo
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCBiY2Y0YmJjNjUzZTYzM2ExNWU0MTFmZjExNzg1
OGU4NzJhNzk4ODI5Li5hZGFlMzAyMTc4NDJmNmVmZDRkZDZhOWJmNTE3YTNjNzI3NzFiMGU1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCkBAIC03NTIsNyArNzUyLDcgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYlZpZXcoKS5zY3JvbGxWaWV3
Lm1heGltdW1ab29tU2NhbGU7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxl
cklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAg
VGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKICAgICBpZiAo
d2ViVmlldy5fc3RhYmxlU3RhdGVPdmVycmlkZSkKQEAgLTc2MSw3ICs3NjEsNyBAQCBPcHRpb25h
bDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVy
SU9TOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUp
Cit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6
Om9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKICAgICBpZiAob3ZlcnJpZGVWYWx1ZSkK
</data>
<flag name="commit-queue"
          id="451498"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430131</attachid>
            <date>2021-05-29 23:31:09 -0700</date>
            <delta_ts>2021-05-30 01:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226433-20210529233106.patch</filename>
            <type>text/plain</type>
            <size>5039673</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OGU4Yjk1Zjg0OTk3YmU0NzJmNjEyZmFhYTc4OGMyZjhkNGM3NTY5Li42ZjNjNjNiMTk0NjkwZDc5
ODJhN2I4NGE5YzFiMmMwZDZlMTNiMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwg
dXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRo
ZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRp
b25hbDw+LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9y
X3BheWxvYWQpOiBVc2UgYXV0byBpbnN0ZWFkCisgICAgICAgIG9mIE9wdGlvbmFsPD4uIEFsc28g
dXNlICogaW5zdGVhZCBvZiB2YWx1ZSgpIGFuZCBuZXN0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBs
b2NhbCBpbnNpZGUgYW4gaWYKKyAgICAgICAgc3RhdGVtZW50IGluIHRoZSBjYXNlIHdoZXJlIGl0
J3MgYW4gb3B0aW9uYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC8qOiBSZWdlbmVyYXRlZCB0aGVzZSByZXN1bHRzLgorCiAyMDIxLTA1LTI5ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRM
b2NrIGluIEpTQzo6Q29uY3VycmVudEpTTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZWY0ZTFlMDgyMzc1OWVlYzQ3Mzhl
ZWVjNzg3MmRlM2QyZjRiMzk3Li4yMjdiZTgyNDE5YTA2YzIzZjE5NTg2YmU4YjM2NjRiY2Q1NzJk
ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI5ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBz
dGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMwor
CisgICAgICAgICogPG1hbnkgZmlsZXM+OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlw
dCByZW5hbWUgT3B0aW9uYWw8PiB0byBzdGQ6Om9wdGlvbmFsPD4uCisKKyAgICAgICAgKiB3dGYv
T3B0aW9uYWwuaDogUmVtb3ZlIFdURjo6T3B0aW9uYWwuCisKIDIwMjEtMDUtMjkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2Fm
ZXR5IGFubm90YXRpb25zIGluIFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ2Nzk0OTcz
ZjA0NzIzM2EzNDU4ZWFmZjM1ZTJiNjM0ZTlmZjg5Ny4uMTllNjA0NzMyYjZkNDM2NmI2Njc0Mzc4
OWI0ODI3NjU4YWM3ZDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI5
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpP
cHRpb25hbCBzeW5vbnltIGZvciBzdGQ6Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBs
YXRlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNj
cmlwdCByZW5hbWUgT3B0aW9uYWw8PiB0byBzdGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEtMDUtMjkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBjbGFuZyB0
aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCA0NjNmMDUxYTRlYjk1MDk5NDE2YTFhNWEwZTRmZjJjMWE4MmQwMjM5Li5mNzNmMjJh
YmU0Y2ZkNjU1OWI1NGRlNGE3ZTdhNzI3YTZiYTAwMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25h
bCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0
IHRoZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpv
cHRpb25hbDw+LgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hvdyBjb250ZXh0IG1lbnUgd2hlbiBjbGlja2lu
ZyBvbiBkYXRhIGRldGVjdGlvbiByZXN1bHRzIGluIGltYWdlIG92ZXJsYXlzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
CmluZGV4IGI2YzM3MjU3MGVjMTJlNDFjZWUwNjhhNWIwNDNhNGQxOTgxNzg3MDUuLmVjYmQzZTYy
NzM5MzEwYTVlYjRmYzNhNTg5NTAyNmYyNmQxYzg1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVz
aW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IExldCB0aGUg
ZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBPcHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9u
YWw8Pi4KKwogMjAyMS0wNS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2xpZW50cyBvZiBvcHRpb25hbCBzaG91bGQgdXNlIGhhc192YWx1ZSBpbnN0ZWFkIG9m
IHJlbHlpbmcgb24gaGFzVmFsdWUgbWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDNhNmRlNGYzZjVjMDIyYzli
Njk5MWJhODFlMTA0N2EwMjVkOTM0My4uZTgyZTY0M2Y1MmM2NDk3MmIzNjcyZjMxNmJiMGQwNTE3
ZmFkYTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lu
b255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3Rs
eSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1l
IE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25hbDw+LgorCiAyMDIxLTA1LTI4ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGllbnRzIG9mIG9wdGlvbmFsIHNob3Vs
ZCB1c2UgaGFzX3ZhbHVlIGluc3RlYWQgb2YgcmVseWluZyBvbiBoYXNWYWx1ZSBtYWNybwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGUxODZmM2NjODMwYTMwZDg4YTRmM2NkZTQ1ZGJl
NDJiNjQyMGRlZTkuLmY0ZjQ5YjM1NzI4MmE3OTY4M2UzZWU0MjY1OTk2ZmI1YTA4NGYyNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0
aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0
ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOiBMZXQgdGhl
IGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUKKyAgICAgICAgT3B0aW9uYWw8PiB0byBz
dGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkgaW4gV2ViS2l0L1dlYktpdExl
Z2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZl
dHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4NmVjMjI4NDE2Nzdh
ZWVjZjQ3ODFjM2ZmYTU3YmNjMDAxYmYzMDRlLi5lMDA1MzlkNjBmOTRmZDE1M2IyNDY1MDQ1NDI0
MGJjYmU1MjEzOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMDUtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRo
YXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IExldCB0aGUgZG8td2Vi
Y29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBPcHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4K
KwogMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2Yg
dGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpp
bmRleCA2M2RiOWEyMTU5NTUwYjg1NDdjYTQ5MGFmYWZhNmM1NjRkOTdiOWZjLi5jZjBmZDZjMDY5
ZTQyMjk0ZGRhZGVhYjNkMGY1ZmZmYmMwMzc2YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9yIHN0ZDo6
b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVhZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFueSBmaWxl
cz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBPcHRpb25hbDw+IHRv
IHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRp
cmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
aW5kZXggNDQ4YWJlYmFjZTc4YjEzYTU3MDA3NWMyNThmMDRmOGYzZWI1ZGY4Zi4uNDczMWE0ZDE3
MmY2OTFjOWM3MDBhMTUyYWZjNjI3MTMwMjU3NTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTQzNCw3ICs0
MzQsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIH0KIAogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19maW5hbF92PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pj4sICJFbnN1cmUgbm8g
ZGVyaXZlZCBjbGFzc2VzIGhhdmUgY3VzdG9tIGRlbGV0ZVByb3BlcnR5QnlJbmRleCBpbXBsZW1l
bnRhdGlvbiIpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIFBhcmVudDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaW5kZXgudmFsdWUoKSkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgUGFyZW50
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0NhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDE4MDRiZmU5ZjNlODZmODdmOTI1ZmE5NjVmMDg5
NDVmMWI3MWYwMTUuLmZiYzIxNzY0YmM3MjExMTIzYzA1MzNmOWE2MzhhOGFlMzRmNGU1YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tG
dW5jdGlvbi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNv
bnN0cnVjdEpTQ0NhbGxiYWNrRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAg
ICByZXR1cm4gQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0SW1wbDxKU0NDYWxsYmFja0Z1
bmN0aW9uPihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CiB9CiAKLUpTQ0NhbGxiYWNrRnVuY3Rp
b24qIEpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgVHlwZSB0eXBlLCBKU0NDbGFzcyoganNj
Q2xhc3MsIEdSZWZQdHI8R0Nsb3N1cmU+JiYgY2xvc3VyZSwgR1R5cGUgcmV0dXJuVHlwZSwgT3B0
aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQorSlNDQ2FsbGJhY2tGdW5jdGlvbiog
SlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBUeXBlIHR5cGUsIEpTQ0NsYXNzKiBqc2NDbGFz
cywgR1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJlLCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1ldGVycykKIHsKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2xpYkNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKTsK
ICAgICBKU0NDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KHZtLmhlYXApKSBKU0NDYWxsYmFja0Z1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUsIHR5cGUsIGpzY0NsYXNzLCBXVEZNb3ZlKGNsb3N1cmUpLCByZXR1cm5U
eXBlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAgLTczLDcgKzczLDcgQEAgSlNDQ2FsbGJhY2tG
dW5jdGlvbiogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUpTQ0NhbGxiYWNrRnVuY3Rp
b246OkpTQ0NhbGxiYWNrRnVuY3Rpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHlw
ZSB0eXBlLCBKU0NDbGFzcyoganNjQ2xhc3MsIEdSZWZQdHI8R0Nsb3N1cmU+JiYgY2xvc3VyZSwg
R1R5cGUgcmV0dXJuVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQor
SlNDQ2FsbGJhY2tGdW5jdGlvbjo6SlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBUeXBlIHR5cGUsIEpTQ0NsYXNzKiBqc2NDbGFzcywgR1JlZlB0cjxHQ2xv
c3VyZT4mJiBjbG9zdXJlLCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxH
VHlwZT4+JiYgcGFyYW1ldGVycykKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVy
ZSwgY2FsbEpTQ0NhbGxiYWNrRnVuY3Rpb24sIHR5cGUgPT0gVHlwZTo6Q29uc3RydWN0b3IgPyBj
b25zdHJ1Y3RKU0NDYWxsYmFja0Z1bmN0aW9uIDogbnVsbHB0cikKICAgICAsIG1fZnVuY3Rpb25D
YWxsYmFjayhjYWxsQXNGdW5jdGlvbikKICAgICAsIG1fY29uc3RydWN0Q2FsbGJhY2soY2FsbEFz
Q29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0NhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBlNWE1ZWU1M2QyMGFhNTg4NDlkNzA0M2JiZDZkY2Mz
YTE4ZWM4ZDIxLi44ODNiYzA3MWEzMDg5MDM5MzA2YWYxMDBhN2ZkZmJjMDcyMTkyM2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0
aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBDb25zdHJ1Y3RvcgogICAg
IH07CiAKLSAgICBzdGF0aWMgSlNDQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxH
Q2xvc3VyZT4mJiwgR1R5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYpOworICAgIHN0YXRp
YyBKU0NDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgVHlwZSwgSlNDQ2xhc3MqLCBHUmVmUHRyPEdDbG9zdXJlPiYmLCBHVHlw
ZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3RSZWYgY29u
c3RydWN0KEpTQ29udGV4dFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZhdGU6Ci0gICAg
SlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwgR1Jl
ZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYpOworICAg
IEpTQ0NhbGxiYWNrRnVuY3Rpb24oVk0mLCBTdHJ1Y3R1cmUqLCBUeXBlLCBKU0NDbGFzcyosIEdS
ZWZQdHI8R0Nsb3N1cmU+JiYsIEdUeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYp
OwogCiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGZ1bmN0aW9uQ2FsbGJhY2so
KSB7IHJldHVybiBtX2Z1bmN0aW9uQ2FsbGJhY2s7IH0KICAgICBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY29uc3RydWN0Q2FsbGJhY2soKSB7IHJldHVybiBtX2NvbnN0cnVjdENh
bGxiYWNrOyB9CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxKU0NDbGFz
cz4gbV9jbGFzczsKICAgICBHUmVmUHRyPEdDbG9zdXJlPiBtX2Nsb3N1cmU7CiAgICAgR1R5cGUg
bV9yZXR1cm5UeXBlOwotICAgIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+IG1fcGFyYW1ldGVyczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+IG1fcGFyYW1ldGVyczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0NsYXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFz
cy5jcHAKaW5kZXggYTRlMWI1NDJiZmZjNDk2N2VhZTc5ZDk0ODlkMmM4NDA3MGQzOTZlYS4uM2Y2
ZTgzYWNmY2M2ZDRiNDM3NjQzZmE4ZjczOGM0ZmI5Yzc4NmVmYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgSlNDQ2xh
c3MqIGpzY19jbGFzc19nZXRfcGFyZW50KEpTQ0NsYXNzKiBqc2NDbGFzcykKICAgICByZXR1cm4g
anNjQ2xhc3MtPnByaXYtPnBhcmVudENsYXNzOwogfQogCi1zdGF0aWMgR1JlZlB0cjxKU0NWYWx1
ZT4ganNjQ2xhc3NDcmVhdGVDb25zdHJ1Y3RvcihKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNo
YXIqIG5hbWUsIEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95
Tm90aWZ5IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIE9wdGlvbmFsPFZlY3RvcjxH
VHlwZT4+JiYgcGFyYW1ldGVycykKK3N0YXRpYyBHUmVmUHRyPEpTQ1ZhbHVlPiBqc2NDbGFzc0Ny
ZWF0ZUNvbnN0cnVjdG9yKEpTQ0NsYXNzKiBqc2NDbGFzcywgY29uc3QgY2hhciogbmFtZSwgR0Nh
bGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJv
eU5vdGlmeSwgR1R5cGUgcmV0dXJuVHlwZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYm
IHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIGRvZXNuJ3QgaGF2ZSBh
cmd1bWVudHMsIHdlIG5lZWQgdG8gc3dhcCB0aGUgZmFrZSBpbnN0YW5jZSBhbmQgdXNlciBkYXRh
IHRvIGVuc3VyZQogICAgIC8vIHVzZXIgZGF0YSBpcyB0aGUgZmlyc3QgcGFyYW1ldGVyIGFuZCBm
YWtlIGluc3RhbmNlIGlnbm9yZWQuCkBAIC03MDEsNyArNzAxLDcgQEAgSlNDVmFsdWUqIGpzY19j
bGFzc19hZGRfY29uc3RydWN0b3JfdmFyaWFkaWMoSlNDQ2xhc3MqIGpzY0NsYXNzLCBjb25zdCBj
aGFyKiBuYW0KICAgICByZXR1cm4ganNjQ2xhc3NDcmVhdGVDb25zdHJ1Y3Rvcihqc2NDbGFzcywg
bmFtZSA/IG5hbWUgOiBwcml2LT5uYW1lLmRhdGEoKSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0
cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBzdGQ6Om51bGxvcHQpLmxlYWtSZWYoKTsKIH0KIAotc3Rh
dGljIHZvaWQganNjQ2xhc3NBZGRNZXRob2QoSlNDQ2xhc3MqIGpzY0NsYXNzLCBjb25zdCBjaGFy
KiBuYW1lLCBHQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhLCBHRGVzdHJveU5v
dGlmeSBkZXN0cm95Tm90aWZ5LCBHVHlwZSByZXR1cm5UeXBlLCBPcHRpb25hbDxWZWN0b3I8R1R5
cGU+PiYmIHBhcmFtZXRlcnMpCitzdGF0aWMgdm9pZCBqc2NDbGFzc0FkZE1ldGhvZChKU0NDbGFz
cyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5hbWUsIEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50
ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5
cGUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQogewogICAgIEpT
Q0NsYXNzUHJpdmF0ZSogcHJpdiA9IGpzY0NsYXNzLT5wcml2OwogICAgIEdSZWZQdHI8R0Nsb3N1
cmU+IGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXcoY2FsbGJhY2ssIHVzZXJEYXRh
LCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90aWZ5PihyZWludGVycHJldF9jYXN0PEdDYWxs
YmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ1ZhbHVlLmNwcAppbmRleCAzNTkxYmI3OTI0NDQ1MjUxYzU5MjdlYWNiMmZlMjg4OTJhZmM1
MDZjLi5kYTlhOWY2ZmUzYmEwZTQ2MDg5YzVhOWE0ZDU5YjZkNWZhOTRiNDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKQEAgLTExNDQsNyArMTE0NCw3
IEBAIHZvaWQganNjX3ZhbHVlX29iamVjdF9kZWZpbmVfcHJvcGVydHlfYWNjZXNzb3IoSlNDVmFs
dWUqIHZhbHVlLCBjb25zdCBjaGFyKiBwcm9wCiAgICAgfQogfQogCi1zdGF0aWMgR1JlZlB0cjxK
U0NWYWx1ZT4ganNjVmFsdWVGdW5jdGlvbkNyZWF0ZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBuYW1lLCBHQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhLCBHRGVz
dHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5LCBHVHlwZSByZXR1cm5UeXBlLCBPcHRpb25hbDxWZWN0
b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCitzdGF0aWMgR1JlZlB0cjxKU0NWYWx1ZT4ganNjVmFs
dWVGdW5jdGlvbkNyZWF0ZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLCBH
Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0
cm95Tm90aWZ5LCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+
JiYgcGFyYW1ldGVycykKIHsKICAgICBHUmVmUHRyPEdDbG9zdXJlPiBjbG9zdXJlOwogICAgIC8v
IElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYXJndW1lbnRzLCB3ZSBuZWVkIHRvIHN3YXAg
dGhlIGZha2UgaW5zdGFuY2UgYW5kIHVzZXIgZGF0YSB0byBlbnN1cmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmluZGV4IDA4ZmZkMTEyNWE4ZjI0
N2FmMDVkNjE0Njc4MDZjMjI4M2M2ZTBkMjcuLmE1MDhkOGRlZDFlYjM3NGI3YTYzNzg2ZjdhNzdi
Y2ViZjA1N2RkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgTGlua0J1ZmZlcjo6Y2xlYXJQcm9m
aWxlU3RhdGlzdGljcygpCiAgICAgfQogfQogCi12b2lkIExpbmtCdWZmZXI6OmR1bXBQcm9maWxl
U3RhdGlzdGljcyhPcHRpb25hbDxQcmludFN0cmVhbSo+IG91dFN0cmVhbSkKK3ZvaWQgTGlua0J1
ZmZlcjo6ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKHN0ZDo6b3B0aW9uYWw8UHJpbnRTdHJlYW0qPiBv
dXRTdHJlYW0pCiB7CiAgICAgc3RydWN0IFN0YXQgewogICAgICAgICBQcm9maWxlIHByb2ZpbGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IDgx
NWRjZjg3Mzc0YWEzYjM1Nzk4OWRmNjdmZTcyYmE5NDBiMzNhNTkuLmExNDM5NDg1ZmRjNjE1YTQ2
NTJmMDE1NDIzMGExNWYyNDdkMDAzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkQWxyZWFkeURpc2Fzc2VtYmxlKCkgeyBtX2FscmVhZHlEaXNhc3NlbWJsZWQgPSB0cnVlOyB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjbGVhclByb2ZpbGVTdGF0aXN0
aWNzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGVTdGF0
aXN0aWNzKE9wdGlvbmFsPFByaW50U3RyZWFtKj4gPSBzdGQ6Om51bGxvcHQpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlU3RhdGlzdGljcyhzdGQ6Om9wdGlv
bmFsPFByaW50U3RyZWFtKj4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KICAgICB2b2lkIGFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDU3ZDViOTRmN2I4NTI0ZDE5MTIzNmMx
ZWRlZTlkOWY4NWRlMGE3ZDAuLjg5MzAwMTM3MjkwZDk2ZThmZDdjYWE1NmFjYjJhNDQ5MDIzOTVl
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCkBAIC00MDQ0LDcgKzQwNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihBc3NlbWJsZXI6OmludmVydChz
dGF0aWNfY2FzdDxBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCkpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9U
ZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kKQogICAgIHsKICAgICAgICAgc3dpdGNoIChjb25kKSB7CiAgICAgICAgIGNh
c2UgRXF1YWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNDhlOTUwZTljOGU0MWNkY2JkNmY1NDcz
ZGY2M2Y0NThhNWE5MTg1Yy4uOTMzMzc4OTRkMDdmMDIzZjRlYjA1NDNkNGY1M2IxNTgxNDkxOGRm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzEwOCw3ICszMTA4LDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4gY29t
bXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVy
b0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoY29uZCkgewogICAgICAgICBjYXNlIEVxdWFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrU3BlY2lhbC5jcHAKaW5kZXggYzI3ZmI0YzEzNGExNDZlZThiZTgxOTk0ZDJjMTJh
OWUzMjYzNDY3NC4uYzJkZjYyMmI1MWFjNTQ5OTNhM2FjMTlhMDQwNTEyM2FlMmE2YmE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgSW5zdCBDaGVja1NwZWNpYWw6OmhpZGRlbkJyYW5jaChjb25zdCBJbnN0JiBpbnN0
KSBjb25zdAogdm9pZCBDaGVja1NwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3Qg
U2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrKQogewogICAgIHVz
aW5nIG5hbWVzcGFjZSBBaXI7Ci0gICAgT3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lk
dGg7CisgICAgc3RkOjpvcHRpb25hbDxXaWR0aD4gb3B0aW9uYWxEZWZBcmdXaWR0aDsKICAgICBJ
bnN0IGhpZGRlbiA9IGhpZGRlbkJyYW5jaChpbnN0KTsKICAgICBoaWRkZW4uZm9yRWFjaEFyZygK
ICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGgg
d2lkdGgpIHsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIENoZWNrU3BlY2lhbDo6Zm9yRWFjaEFy
ZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYQogICAg
ICAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzWzEgKyBpbmRleF0sIHJvbGUsIGJhbmssIHdpZHRo
KTsKICAgICAgICAgfSk7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJs
ZUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRl
eDsKICAgICBpZiAobV9jaGVja0tpbmQub3Bjb2RlID09IEJyYW5jaEFkZDMyIHx8IG1fY2hlY2tL
aW5kLm9wY29kZSA9PSBCcmFuY2hBZGQ2NCkKICAgICAgICAgZmlyc3RSZWNvdmVyYWJsZUluZGV4
ID0gMTsKICAgICBmb3JFYWNoQXJnSW1wbChudW1CM0FyZ3MoaW5zdCksIG1fbnVtQ2hlY2tBcmdz
ICsgMSwgaW5zdCwgbV9zdGFja21hcFJvbGUsIGZpcnN0UmVjb3ZlcmFibGVJbmRleCwgY2FsbGJh
Y2ssIG9wdGlvbmFsRGVmQXJnV2lkdGgpOwpAQCAtMTUwLDkgKzE1MCw5IEBAIGJvb2wgQ2hlY2tT
cGVjaWFsOjphZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJn
SW5kZXgpCiAgICAgcmV0dXJuIGFkbWl0c1N0YWNrKGluc3QsIGFyZ0luZGV4KTsKIH0KIAotT3B0
aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYg
aW5zdCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxp
YXNpbmdEZWYoSW5zdCYgaW5zdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGJyYW5j
aERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91bGRUcnlBbGlhc2luZ0RlZigpKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBicmFuY2hEZWYgPSBoaWRkZW5CcmFuY2goaW5zdCku
c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkKICAgICAgICAgcmV0dXJuICpicmFuY2hEZWYgKyAxOwog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5oCmluZGV4IDc1OWE5YjdkYTEyNmE2OTdlMGU4NGFkODhjODc3MGFiMWIwMWQy
NTQuLjgwZGYwMDQzNTNhNmFiNDliNGFiYWIxYTY3ZTFmOWYxNzA2OWY1NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVmFsaWQoQWlyOjpJbnN0JikgZmluYWw7CiAgICAgYm9vbCBhZG1p
dHNTdGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgZmluYWw7CiAgICAgYm9vbCBh
ZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoQWlyOjpJbnN0JiwgdW5zaWduZWQpIGZpbmFsOwotICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihBaXI6Okluc3QmKSBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihBaXI6
Okluc3QmKSBmaW5hbDsKIAogICAgIC8vIE5PVEU6IHRoZSBnZW5lcmF0ZSBtZXRob2Qgd2lsbCBn
ZW5lcmF0ZSB0aGUgaGlkZGVuIGJyYW5jaCBhbmQgdGhlbiByZWdpc3RlciBhIExhdGVQYXRoIHRo
YXQKICAgICAvLyBnZW5lcmF0ZXMgdGhlIHN0YWNrbWFwLiBTdXBlciBjcmF6eSBkdWRlIQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAKaW5kZXggYjBlYmE1YTQxMzIwZGU4NzY4Mzg3
YzQ4OTE4N2JmNzNkYWUzZTJiZS4uNThjMTVmMDRiZDc5MjVjMzkyZWY4NGFlMDZjNzIxNzZlODEy
ZTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIGJvb2wgc2hvdWxkU2F2ZUlSQmVmb3JlUGhhc2UoKQogICAgIHJldHVybiBPcHRpb25zOjp2
ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmUoKTsKIH0KIAotT3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRF
eHRlbmRlZE9mZnNldEFkZHJSZWdpc3RlcigpCitzdGQ6Om9wdGlvbmFsPEdQUlJlZz4gcGlubmVk
RXh0ZW5kZWRPZmZzZXRBZGRyUmVnaXN0ZXIoKQogewogI2lmIENQVShBUk02NCkKICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbW1vbi5oCmluZGV4IDYyZTk3MWU5MTY5NTI1MDE0MmUxZjMyNTY4NGEwNWUzYWEwNGQ1ZDAu
LjY0OGRlYjlmMWRmYWNkNmYxMGMwZGZhYzE5NGE3MWUzMDRmOTBkMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbW1vbi5oCkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5lIHVuc2lnbmVkIGRl
ZmF1bHRPcHRMZXZlbCgpCiAgICAgcmV0dXJuIE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCk7
CiB9CiAKLU9wdGlvbmFsPEdQUlJlZz4gcGlubmVkRXh0ZW5kZWRPZmZzZXRBZGRyUmVnaXN0ZXIo
KTsKK3N0ZDo6b3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRFeHRlbmRlZE9mZnNldEFkZHJSZWdpc3Rl
cigpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBiOTdiMjg1MDcyZjUzZTdhNWQ0OTVlZDAxNjQyNzYz
YzQ0YjBmMmJiLi5lYjJlZmQwNmE2YmNjZDA1ZTVjOTE4ZjZhODhmZWMzNmM1OTA3M2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNTAxLDcgKzUwMSw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFt
ZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNj
YWxlRm9yU2hsKFZhbHVlKiBzaGwsIEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9
IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZUZvclNobChW
YWx1ZSogc2hsLCBJbnQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6
bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChzaGwtPm9wY29kZSgpICE9IFNobCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01NDUsNyArNTQ1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IGFkZHJlc3MtPmNoaWxkKDEpOwogCiAgICAgICAg
ICAgICBhdXRvIHRyeUluZGV4ID0gWyZdIChWYWx1ZSogaW5kZXgsIFZhbHVlKiBiYXNlKSAtPiBB
cmcgewotICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9y
U2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgw
KSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCkBAIC0yMTA0LDcgKzIxMDQsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBhdXRvIHRyeVNobCA9IFsmXSAoVmFs
dWUqIHNobCwgVmFsdWUqIG90aGVyKSAtPiBib29sIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKHNobCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoc2hsLCBvZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKCFzY2FsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwoc2hsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwCmluZGV4IDdjMmZhMGMwOTI0OGNhN2ZjYTRmNDc2NWUwMjZlNGIyZWY0OTIx
NjEuLmI4OTM0ZjNmZjQ1MTU2OGU5MjZiZjA2OGY3YjU1ODJkYzliYjRlYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJR05PUkVfUkVUVVJO
X1RZUEVfV0FSTklOR1NfQkVHSU4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
LU9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlw
ZSkKK3N0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwg
VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgY2FzZSBFcXVhbDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggOGU2YTI0YTU3NjY0ODU5ZGE2ZjVjYzNk
ZWM4MGI4MGJkYzA5NjdkNy4uMWRjYzg2YTNhZWE0NTMwZTlkMWZhZmQ4NzEzMDEyZmNjYjc1YTZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTM4MSw3ICszODEsNyBAQCBp
bmxpbmUgYm9vbCBpc0NoZWNrTWF0aChPcGNvZGUgb3Bjb2RlKQogICAgIH0KIH0KIAotT3B0aW9u
YWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlLCBUeXBlKTsKK3N0ZDo6b3B0aW9uYWw8
T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlLCBUeXBlKTsKIAogaW5saW5lIE9wY29kZSBj
b25zdFB0ck9wY29kZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlTG9vcFN0cmVuZ3RoLmNwcAppbmRleCA0YTc0OGE3NjQzNTU3OTZmMjczMmRlOTNkMjllMDMz
NjBlOWE5YzhhLi5jNWFlZDQ0YmQ3ZTA2M2EyZTk5OTdjZDQ4ZWIzNjRkMmZkZGE0MjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAK
QEAgLTkzLDEwICs5MywxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJGb3VuZCBzdG9yZS9sb2FkOiIsICpzdG9yZSk7CiAKLSAgICAgICAg
YXV0byBleHRyYWN0QXJyYXlJbmZvID0gWyZdIChWYWx1ZSogdmFsdWUpIC0+IE9wdGlvbmFsPEFk
ZHJJbmZvPiB7CisgICAgICAgIGF1dG8gZXh0cmFjdEFycmF5SW5mbyA9IFsmXSAoVmFsdWUqIHZh
bHVlKSAtPiBzdGQ6Om9wdGlvbmFsPEFkZHJJbmZvPiB7CiAgICAgICAgICAgICBwYXR0ZXJuTWF0
Y2hlZFZhbHVlcy5hZGQodmFsdWUpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxBZGRySW5mbz4g
YWRkciA9IHsgQWRkckluZm8oKSB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxBZGRySW5m
bz4gYWRkciA9IHsgQWRkckluZm8oKSB9OwogCiAgICAgICAgICAgICBWYWx1ZSogc3VtID0gdmFs
dWU7CiAgICAgICAgICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFpFeHQzMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCmluZGV4IDdjY2MzYjI2
Yjk1M2NhYTU0NWNjOThiOTAyODVjMjhmMWQ3Y2RhMDguLjNjZDI0Mjc2ZjM0M2NlMDM5YWE2Nzc5
ZGEyMTQ1YmUxZjNhMGJmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXBTcGVjaWFsLmNwcApAQCAtNzUsOCArNzUsOCBAQCBSZWdpc3RlclNldCBTdGFja21hcFNw
ZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCiAKIHZvaWQgU3RhY2tt
YXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdz
LCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICBJbnN0JiBpbnN0LCBSb2xlTW9kZSBy
b2xlTW9kZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKLSAgICBj
b25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2ssIE9wdGlv
bmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoKQorICAgIEluc3QmIGluc3QsIFJvbGVNb2Rl
IHJvbGVNb2RlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXgs
CisgICAgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNr
LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoKQogewogICAgIFN0YWNr
bWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4tPmFzPFN0YWNrbWFwVmFsdWU+KCk7CiAgICAg
QVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVj
aWFsLmgKaW5kZXggYzhmZjkwZDI2MDY1MzQ0OTdkZGE5NGYzZjU3Y2VjZjE0NjNkNDE5My4uZTZj
OTJjYmVhYjc1OWRkZWNjNGVjYzE3YjJlNjA4MjNjNThlMzdiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKQEAgLTU5LDggKzU5LDggQEAgcHJvdGVj
dGVkOgogICAgIC8vIHN1YmNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgdGhhdC4KICAgICB2b2lkIGZv
ckVhY2hBcmdJbXBsKAogICAgICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25l
ZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICAgICAgQWlyOjpJbnN0JiwgUm9sZU1vZGUsIE9wdGlv
bmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXgsCi0gICAgICAgIGNvbnN0IFNjb3Bl
ZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mLCBPcHRpb25hbDxXaWR0aD4gb3B0
aW9uYWxEZWZBcmdXaWR0aCk7CisgICAgICAgIEFpcjo6SW5zdCYsIFJvbGVNb2RlLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXgsCisgICAgICAgIGNvbnN0IFNj
b3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mLCBzdGQ6Om9wdGlvbmFsPFdp
ZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoKTsKIAogICAgIGJvb2wgaXNWYWxpZEltcGwoCiAgICAg
ICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2lnbmVkIG51bUlnbm9yZWRBaXJBcmdz
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IGFmNTBmNTU3MmU0
ZWY2NGJiNWM2M2RjZDk2NGU1NzYwYTU3YTRmZDIuLjRlZTdlYzg4ZmZhYTJmODhhN2JjY2I3Y2I0
MzFiYTYwNWNjOWFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWdu
ZWQ+IHZhbHVlSW5CbG9jazsKICAgICAgICAgSGFzaE1hcDxWYWx1ZSosIEJhc2ljQmxvY2sqPiB2
YWx1ZU93bmVyOwogICAgICAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWduZWQ+IHZhbHVlSW5kZXg7
Ci0gICAgICAgIEhhc2hNYXA8VmFsdWUqLCBWZWN0b3I8T3B0aW9uYWw8VHlwZT4+PiBleHRyYWN0
aW9uczsKKyAgICAgICAgSGFzaE1hcDxWYWx1ZSosIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFR5cGU+
Pj4gZXh0cmFjdGlvbnM7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCB0dXBsZSA9IDA7IHR1cGxl
IDwgbV9wcm9jZWR1cmUudHVwbGVzKCkuc2l6ZSgpOyArK3R1cGxlKSB7CiAgICAgICAgICAgICBW
QUxJREFURShtX3Byb2NlZHVyZS50dXBsZXMoKVt0dXBsZV0uc2l6ZSgpLCAoIkluIHR1cGxlICIs
IHR1cGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggY2UxMzcxMjFi
ZDhjNGUwMjZiOGZjNzA3OGJhZmI4ZWNmODEyMmI4ZC4uODYwOGQ3ODdlY2MxZTQyMGM1NWUyZTA2
YjZmNDA3MzhmODU2OTVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAt
NDM0LDcgKzQzNCw3IEBAIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVyZSYg
cHJvYykgY29uc3QKIHsKICAgICBpZiAobnVtQ2hpbGRyZW4oKSAhPSAyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoT3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZE9wY29kZSA9IEIz
OjppbnZlcnRlZENvbXBhcmUob3Bjb2RlKCksIGNoaWxkKDApLT50eXBlKCkpKSB7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZE9wY29kZSA9IEIzOjppbnZlcnRlZENvbXBh
cmUob3Bjb2RlKCksIGNoaWxkKDApLT50eXBlKCkpKSB7CiAgICAgICAgIEFTU0VSVCgha2luZCgp
Lmhhc0V4dHJhQml0cygpKTsKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPigqaW52ZXJ0
ZWRPcGNvZGUsIHR5cGUoKSwgb3JpZ2luKCksIGNoaWxkKDApLCBjaGlsZCgxKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKaW5k
ZXggMjkwYzQ5NGMxNTI0ZjE1MmRlYjg1MzU3ODQ2ZDFlMmIxYTcxY2MzNi4uZTNjNjM4NDNmMGVi
ZGI3MWNiNmY2YWNkZTI1ZjEzYWEzY2VhOGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2Rl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0
ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkK
ICAgICAgICAgaWYgKGRpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIGRpc2Fzc2VtYmxlci0+c3Rh
cnRCbG9jayhibG9jaywgKm1faml0KTsKIAotICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+
IGVudHJ5cG9pbnRJbmRleCA9IG1fY29kZS5lbnRyeXBvaW50SW5kZXgoYmxvY2spKSB7CisgICAg
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBlbnRyeXBvaW50SW5kZXggPSBtX2NvZGUu
ZW50cnlwb2ludEluZGV4KGJsb2NrKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fY29kZS5pc0Vu
dHJ5cG9pbnQoYmxvY2spKTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCiAgICAgICAg
ICAgICAgICAgZGlzYXNzZW1ibGVyLT5zdGFydEVudHJ5cG9pbnQoKm1faml0KTsgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlH
cmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCmluZGV4IDAyMmQyOTk5MzUxMWQxMmNkYTM5
ZGQ5ZDVhOGEyNTRhNjA0OWM3ZTUuLmZiMjE1N2Y5NWY4ZjFkNDZlYjcwOWE2NWU5ZWI3NDJjNzA3
M2YzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC0xNjQw
LDcgKzE2NDAsNyBAQCBJR05PUkVfR0NDX1dBUk5JTkdTX0VORAogICAgICAgICBtX3dvcmtsaXN0
TW92ZXMuc3RhcnRBZGRpbmdMb3dQcmlvcml0eU1vdmVzKCk7CiAgICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBtX2NvZGUpIHsKICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpi
bG9jaykgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gZGVmQXJnSW5k
ZXggPSBpbnN0LnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZGVmQXJnSW5kZXggPSBpbnN0LnNob3VsZFRyeUFsaWFz
aW5nRGVmKCkpIHsKICAgICAgICAgICAgICAgICAgICAgQXJnIG9wMSA9IGluc3QuYXJnc1sqZGVm
QXJnSW5kZXggLSAyXTsKICAgICAgICAgICAgICAgICAgICAgQXJnIG9wMiA9IGluc3QuYXJnc1sq
ZGVmQXJnSW5kZXggLSAxXTsKICAgICAgICAgICAgICAgICAgICAgQXJnIGRlc3QgPSBpbnN0LmFy
Z3NbKmRlZkFyZ0luZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4
IDVmMGEzYTQ5ZDRhYmUzMzlkNzc5OTMyMWVlZDNlYjhkNzczMDJhYzUuLjRlNjg3MTRmNGEyYWEy
MmUxOTQwZjEwYWJmYzJkMGUxZjVmYzFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaApAQCAtNTg2LDcgKzU4Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJZiB5
b3UgZG9uJ3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5
b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2Fs
ZSh1bnNpZ25lZCBzY2FsZSwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25h
bDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHNj
YWxlKSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTExODIsNyArMTE4Miw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVn
YWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oSW50IG9mZnNl
dCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQorICAgIHN0YXRpYyBib29s
IGlzVmFsaWRBZGRyRm9ybShJbnQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9
IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4NigpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PElu
dD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgSW50
IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQorICAgIHN0YXRp
YyBib29sIGlzVmFsaWRJbmRleEZvcm0odW5zaWduZWQgc2NhbGUsIEludCBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYg
KCFpc1ZhbGlkU2NhbGUoc2NhbGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBh
IHdpZHRoIHRoZW4gdGhpcyBvcHRpbWlzdGljYWxseSBhc3N1bWVzIHRoYXQgeW91J3JlIHVzaW5n
IHRoZSByaWdodCB3aWR0aC4gQnV0CiAgICAgLy8gdGhlIHdpZHRoIGlzIHJlbGV2YW50IHRvIHZh
bGlkaXR5LCBzbyBwYXNzaW5nIGEgbnVsbCB3aWR0aCBpcyBvbmx5IHVzZWZ1bCBmb3IgYXNzZXJ0
aW9ucy4gRG9uJ3QKICAgICAvLyBwYXNzIG51bGwgd2lkdGhzIHdoZW4gY2FzY2FkaW5nIHRocm91
Z2ggQXJncyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IhCi0gICAgYm9vbCBpc1ZhbGlkRm9y
bShPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0CisgICAgYm9vbCBp
c1ZhbGlkRm9ybShzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29u
c3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW52YWxp
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IGMwNGYwOTVj
ZGQ2MzdhY2UzNjYyN2IyZTQxOGE4YmI0NDU2NjgzNjQuLmFjY2FlMmRhMjlmOTc4ZGM2ZTMzMTFj
OTYzNjA3Mjk0YTM5MTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2Rl
LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgQ29kZTo6aXNFbnRyeXBvaW50KEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8dW5zaWdu
ZWQ+IENvZGU6OmVudHJ5cG9pbnRJbmRleChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IENvZGU6OmVudHJ5cG9pbnRJbmRleChCYXNpY0Jsb2NrKiBibG9j
aykgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnRzLnNpemUoKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggZDhlZTQxMjdiNTczMzU0
NGIyYTE0MjE5ZjdhZjFmYzk2ODcxZDU5NC4uM2VjN2M1N2RhNjQzNDVjNDNhNmIyNzk5NzE4ODE2
MTMxZDJmNDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTE4
MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRnJlcXVlbnRlZEJsb2NrJiBlbnRyeXBv
aW50KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnRzW2luZGV4XTsg
fQogICAgIGJvb2wgaXNFbnRyeXBvaW50KEJhc2ljQmxvY2sqKSBjb25zdDsKICAgICAvLyBOb3Rl
OiBJdCBpcyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBMb3dlckVudHJ5
U3dpdGNoLgotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbnRyeXBvaW50SW5kZXgoQmFzaWNCbG9j
ayopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVudHJ5cG9pbnRJbmRleChC
YXNpY0Jsb2NrKikgY29uc3Q7CiAKICAgICAvLyBOb3RlOiBXZSBhbGxvdyB0aGlzIHRvIGJlIGNh
bGxlZCBldmVuIGJlZm9yZSB3ZSBzZXQgbV9lbnRyeXBvaW50cyBqdXN0IGZvciBjb252ZW5pZW5j
ZSB0byB1c2VycyBvZiB0aGlzIEFQSS4KICAgICAvLyBIb3dldmVyLCBpZiB5b3UgY2FsbCB0aGlz
IGJlZm9yZSBzZXROdW1FbnRyeXBvaW50cywgc2V0TnVtRW50cnlwb2ludHMgd2lsbCBvdmVyd3Jp
dGUgdGhpcyB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCmlu
ZGV4IDUyYmVhZGFiZDQwNDc0NmE4N2M5NzMxYTdkZTc4NTVjNWNmZjQyOWYuLjJmZTI3ZTBlMmZl
NDJkNTJhY2NhNTI1ZDI3MzNjMTlmMTE5MDEwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDdXN0b20uaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgUGF0Y2hDdXN0b20gewog
ICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+YWRtaXRzRXh0ZW5kZWRPZmZz
ZXRBZGRyKGluc3QsIGFyZ0luZGV4KTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8dW5z
aWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCiAgICAg
ewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoaW5zdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggOTc1MGFkZjdmNDkwZjA5MTc3NTkzMWU1
MTMxZGE0NzNhZjA2ZjhjOC4uNjI1NjEzZTM1OTA0ZjkzOWQ0NTNkNzY0NjI2NWUwYTE4OTdlNzUw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3Vz
U3BpbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlv
dXNTcGlsbHMuY3BwCkBAIC0xMjEsMTEgKzEyMSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkpCiAgICAgICAgICAgICAgICAg
ICAgIGZ1bmMoU2xvdENvbnN0KGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgaW5zdC5hcmdzWzBd
LnZhbHVlKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdz
WzBdKSAmJiBpbnN0LmFyZ3NbMV0uaXNSZWcoKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRp
b25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBd
KSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9
IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAg
ZnVuYyhSZWdDb25zdChpbnN0LmFyZ3NbMV0ucmVnKCksICpjb25zdGFudCkpOwogICAgICAgICAg
ICAgICAgIGZ1bmMoUmVnU2xvdChpbnN0LmFyZ3NbMV0ucmVnKCksIGluc3QuYXJnc1swXS5zdGFj
a1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpbnN0
LmFyZ3NbMF0uaXNSZWcoKSAmJiBpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMV0pKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFu
dEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGlu
dDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAg
ICAgICAgICAgICAgICAgICBmdW5jKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCks
ICpjb25zdGFudCkpOwogICAgICAgICAgICAgICAgIGZ1bmMoUmVnU2xvdChpbnN0LmFyZ3NbMF0u
cmVnKCksIGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykpOwogICAg
ICAgICAgICAgfQpAQCAtMTM4LDExICsxMzgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMV0pKQogICAgICAgICAgICAgICAgICAg
ICBmdW5jKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihpbnN0LmFyZ3NbMF0udmFsdWUoKSkpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
aXNTcGlsbFNsb3QoaW5zdC5hcmdzWzBdKSAmJiBpbnN0LmFyZ3NbMV0uaXNSZWcoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29u
c3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkK
ICAgICAgICAgICAgICAgICAgICAgZnVuYyhSZWdDb25zdChpbnN0LmFyZ3NbMV0ucmVnKCksIHN0
YXRpY19jYXN0PHVpbnQzMl90PigqY29uc3RhbnQpKSk7CiAgICAgICAgICAgICAgICAgZnVuYyhS
ZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5zdC5hcmdzWzBdLnN0YWNrU2xvdCgpLCBSZWdT
bG90OjpaRXh0MzIpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5zdC5hcmdzWzBdLmlzUmVn
KCkgJiYgaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkgewotICAgICAgICAgICAgICAgIGlmIChP
cHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdz
WzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFu
dCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAg
ICAgZnVuYyhTbG90Q29uc3QoaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBzdGF0aWNfY2FzdDxp
bnQzMl90PigqY29uc3RhbnQpKSk7CiAgICAgICAgICAgICAgICAgZnVuYyhSZWdTbG90KGluc3Qu
YXJnc1swXS5yZWcoKSwgaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpNYXRjaDMy
KSk7CiAgICAgICAgICAgICB9CkBAIC01MDQsNyArNTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8aW50NjRf
dD4gY29uc3RhbnRGb3IoY29uc3QgQXJnJiBhcmcpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gY29uc3RhbnRGb3IoY29uc3QgQXJnJiBhcmcpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChhcmcuaXNSZWcoKSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdCBSZWdDb25zdCog
YWxpYXMgPSBnZXRSZWdDb25zdChhcmcucmVnKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRleCBhOGFhNmMxMWJkZjEyZjNhNjI4MmQ0ODM2ODA2
YzI0MmNmNjkxNWE5Li40ZjVjNzQwODAwYmY2MWRlNzI1NTg0NTUwMDNkYzA3ODk5NWU2MmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjMz
LDcgKzIzMyw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlV2l0aEFscmVhZHlBbGxvY2F0ZWRSZWdp
c3RlcnMoQ29kZSYgY29kZSwgQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgICAgIGlmIChkaXNhc3Nl
bWJsZXIpCiAgICAgICAgICAgICBkaXNhc3NlbWJsZXItPnN0YXJ0QmxvY2soYmxvY2ssIGppdCk7
IAogCi0gICAgICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gZW50cnlwb2ludEluZGV4ID0gY29k
ZS5lbnRyeXBvaW50SW5kZXgoYmxvY2spKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBlbnRyeXBvaW50SW5kZXggPSBjb2RlLmVudHJ5cG9pbnRJbmRleChibG9jaykpIHsK
ICAgICAgICAgICAgIEFTU0VSVChjb2RlLmlzRW50cnlwb2ludChibG9jaykpOwogCiAgICAgICAg
ICAgICBpZiAoZGlzYXNzZW1ibGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJbnN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3Qu
aAppbmRleCBkY2NhZWUyYjNjODQ2NjJmMzJhNjAyOGI1OGQ0NmYyMTcxNTQyZWFlLi5lODI1ODJi
YjVlZDAyMjJmZjc0NDNlZWEyNjIzODM0MTU5OGE1NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3QuaApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0cnVjdCBJbnN0IHsKICAgICAv
LyBGb3IgZXhhbXBsZSwKICAgICAvLyAgICAgQWRkIFRtcDEsIFRtcDIsIFRtcDMKICAgICAvLyBy
ZXR1cm5zIDIgaWYgMCBhbmQgMSBiZW5lZml0IGZyb20gYWxpYXNpbmcgdG8gVG1wMy4KLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOwogICAgIAogICAgIC8vIFRoaXMg
Y29tcHV0ZXMgYSBoYXNoIGZvciBjb21wYXJpbmcgdGhpcyB0byBKU0FpcidzIEluc3QuCiAgICAg
dW5zaWduZWQganNIYXNoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckluc3RJbmxpbmVzLmgKaW5kZXggZGFhODk1MzA0YTRjYzgzMmI3MWU0YzQ3YmUxYzNhNTll
MGUyMzM5ZC4uODM1YjEwNTRjMWFkZjI3YzZmMDFiNjQ0ZmZlNzQ5YzRiNzUzZmVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaApAQCAtMTE2LDcg
KzExNiw3IEBAIGlubGluZSBib29sIEluc3Q6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihBcmcm
IGFyZykKICAgICByZXR1cm4gYWRtaXRzRXh0ZW5kZWRPZmZzZXRBZGRyKCZhcmcgLSAmYXJnc1sw
XSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFs
aWFzaW5nRGVmKCkKIHsKICAgICBpZiAoIWlzWDg2KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNp
YWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcAppbmRl
eCA5NTVlOGE5NzAxNTJjN2IwMjYzNmQzOGFjMTE5MDBkNWUzNzQyNTlkLi5lODI1NzY3YjA0ZDhh
YjNiOWNlYzc1YWY0ZTkxOTgwYTg5MjkwNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgQ1N0cmluZyBTcGVjaWFsOjpu
YW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwogfQogCi1PcHRpb25hbDx1
bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYpCitzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JikKIHsKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clNwZWNpYWwuaAppbmRleCAwNTZmZDUxODk3YzVhNWJmNzRiMjZhZmJmNDk5NjI5YThlOTZhMzFh
Li5hNmFjM2M2YWFjNGRjZWU2N2JlOGYwMGM0MzY0NDYwMjY4Yjk2Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoSW5zdCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
YWRtaXRzU3RhY2soSW5zdCYsIHVuc2lnbmVkIGFyZ0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0g
MDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJ
bnN0Jik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlh
c2luZ0RlZihJbnN0Jik7CiAKICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIG9uIGZvciBlYWNoIElu
c3QgdGhhdCB1c2VzIHRoaXMgU3BlY2lhbC4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHdheSB0bwog
ICAgIC8vIGd1YXJhbnRlZSB0aGF0IGEgU3BlY2lhbCBnZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJ
bnN0LCBiZWNhdXNlIEFpciBtaWdodCB0YWlsZHVwIGxhdGUuIFNvLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBl
OGU3NWY2ZDE2OTQ4ZmYzNTgzODA2OWQ5NTI5NDEyYWExYTRmZjNlLi5iYTZiOTk5MzcwZWYyOWU4
ZjkyOGU0YjgwZDBiM2M1M2EzNWQ1NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gMDsKICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSAwOwogICAgIHVuc2lnbmVkIG9mZnNldE9mTGFzdE5ld2xp
bmUgPSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvZmZzZXRPZlNlY29uZFRvTGFzdE5ld2xp
bmU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb2Zmc2V0T2ZTZWNvbmRUb0xhc3ROZXds
aW5lOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aCgpOyArK2kpIHsK
ICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0gJ1xuJykgewogICAgICAgICAgICAgaWYgKGxp
bmVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAppbmRleCBjNWZmNzgyMjYyZTcxODViODc1MDQ4NzBkNGI0YzliYzQ5MmE0YWE0Li4xMmE5N2Ey
ZDI1ZDVlYmQxZTk5YTVlNWFjMjljMjI4OTNiYTgzOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
CiAgICAgICAgICAgICAvLyBHZXQgdGhlIGFjY2Vzc29yOyBpZiB0aGVyZSBhaW4ndCBvbmUgdGhl
biB0aGUgcmVzdWx0IGlzIGpzVW5kZWZpbmVkKCkuCiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
R2V0dGVyU2V0dGVyIGFsd2F5cyBoYXMgY2VsbHMgZm9yIGJvdGguIElmIGl0IGlzIG5vdCBzZXQg
KGxpa2UsIGdldHRlciBleGl0cywgYnV0IHNldHRlciBpcyBub3Qgc2V0KSwgTnVsbHtHZXR0ZXIs
U2V0dGVyfUZ1bmN0aW9uIGlzIHN0b3JlZC4KLSAgICAgICAgICAgIE9wdGlvbmFsPENDYWxsSGVs
cGVyczo6SnVtcD4gcmV0dXJuVW5kZWZpbmVkOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxD
Q2FsbEhlbHBlcnM6Okp1bXA+IHJldHVyblVuZGVmaW5lZDsKICAgICAgICAgICAgIGlmIChtX3R5
cGUgPT0gU2V0dGVyKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhsb2FkZWRWYWx1ZUdQUiwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZlNldHRlcigpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDE1
YTY2YTk0NzhkZDhjNjBhMTIyNmY5ZjllY2U1NzAzZWYyMjdkOWEuLmNmOTU2MjZjNmIwNmUxOTc1
NmNlZTNiZmM2NjkxYTQ1NjMwZDE4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAt
MTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmF0
KG1fZW50ZXJQb2ludCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8R2VuZXJhdG9yRnJhbWVEYXRh
PiBnZW5lcmF0b3JGcmFtZURhdGEoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8R2VuZXJhdG9y
RnJhbWVEYXRhPiBnZW5lcmF0b3JGcmFtZURhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fZ2VuZXJhdG9yRnJhbWVEYXRhOwogICAgIH0KQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAg
ICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxT
dG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKICAgICAgICAgICAg
IHJldHVybiAqc3RvcmFnZTsKIAogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CkBAIC0xNjksMTEgKzE2OSwxMSBAQCBwcml2YXRlOgog
CiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9pbnQ7Ci0gICAgT3B0aW9uYWw8R2VuZXJhdG9y
RnJhbWVEYXRhPiBtX2dlbmVyYXRvckZyYW1lRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlbmVy
YXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CiAgICAgVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwogICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBt
X2luc3RydWN0aW9uczsKICAgICBCeXRlY29kZUdyYXBoIG1fZ3JhcGg7Ci0gICAgVmVjdG9yPE9w
dGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2U+PiBtX3N0b3JhZ2VzOwogICAgIFlpZWxkcyBtX3lpZWxkczsKICAgICBTdHJvbmc8U3lt
Ym9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKICAgICBpbnQgbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaAppbmRleCAwZjU5NWQ0MTg5Zjk1NDA3NTVhNzNhMDA4NGU3MTc4
OWVhYTkwMzdmLi5jOGQ0YTUxNjE4Yzc4Yzg0YTMzYjFhYTNiZmMyOWFhZjQ5ODJhOWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTEw
Miw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2RlQmxv
Y2tUeXBlPgotICAgIHZvaWQgZHVtcChDb2RlQmxvY2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMsIE9wdGlvbmFsPFZlY3RvcjxPcGVyYW5kczxT
cGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0SGVhZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIg
PSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBkdW1wKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9j
aywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8T3BlcmFuZHM8U3BlY3VsYXRlZFR5cGU+Pj4gc3BlY3VsYXRpb25BdEhlYWQsIFByaW50
U3RyZWFtJiBwcmludGVyID0gV1RGOjpkYXRhRmlsZSgpKQogICAgIHsKICAgICAgICAgQ29kZUJs
b2NrQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrVHlwZT46OmR1bXBHcmFwaChjb2RlQmxvY2ssIGlu
c3RydWN0aW9ucywgKnRoaXMsIHNwZWN1bGF0aW9uQXRIZWFkLCBwcmludGVyKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggMzM5Y2FhOTRhMzQzNDk3YzI3ZTJkOTczM2NlZDZi
NzRmOGMwNGY1Ny4uNTQ2ODE0MjgyYjFjMDVjZjJiM2ViNmZmNmRlNmI0MjY0MzcxMDM4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fYWJz
dHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRlKSkpOwogfQogCi1P
cHRpb25hbDxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorc3RkOjpv
cHRpb25hbDxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAg
IGlmICghaWRlbnQuaXNQcml2YXRlTmFtZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggNzg1N2RiYTAxMTU4YTc2ZjdlMDE2YTIzNzkzNTA1
ZDZkYTViMzBjMy4uY2Q3ZTE1MzBhYWFlYzUzOWI5MGU4ODA4ZmQ0YjcyODBlNDQ2YTQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgICAgICBU
eXBlIG1fdHlwZTsKICAgICB9OwogCi0gICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0
IElkZW50aWZpZXImKSBjb25zdDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRS
SU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJik7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RB
TlRTX0VBQ0hfTkFNRShKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VO
RVJBVE9SUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMWNmOTMyYjY1ZjU5NWUxYmUwMTVlOGJiOWY4NmI4OTNlNWUxMjc4My4uYTg1NDQ1MmI5
ZTgxOTRlZWFiYjNkYzNjNDMzMWFiOWNhMjQzMWI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIwNTgsNyArMjA1OCw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCwgaW50CiAgICAgbGluZSArPSBvd25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5l
KCk7CiB9CiAKLWJvb2wgQ29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNp
Z25lZCBsaW5lLCBPcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uKQorYm9vbCBDb2RlQmxvY2s6Omhh
c09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGNvbHVtbikKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rp
b25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogaW5z
dHJ1Y3Rpb25TdHJlYW0pIHsKQEAgLTM0NDUsMzMgKzM0NDUsMzMgQEAgdm9pZCBDb2RlQmxvY2s6
OnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4m
JiBtYXApCiAgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fcGNUb0NvZGVPcmlnaW5NYXAgPSBX
VEZNb3ZlKG1hcCk7CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBD
KHZvaWQqIHBjKQorc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2
b2lkKiBwYykKIHsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKICAg
ICAgICAgICAgIGlmIChqaXREYXRhLT5tX3BjVG9Db2RlT3JpZ2luTWFwKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSBqaXREYXRhLT5tX3Bj
VG9Db2RlT3JpZ2luTWFwLT5maW5kUEMocGMpKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSBqaXREYXRhLT5tX3BjVG9Db2RlT3JpZ2lu
TWFwLT5maW5kUEMocGMpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgICAgIGlmIChzdHVi
SW5mby0+Y29udGFpbnNQQyhwYykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxDb2RlT3JpZ2luPihzdHViSW5mby0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KHN0dWJJbmZvLT5jb2RlT3JpZ2luKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChPcHRpb25hbDxDb2Rl
T3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2RlLT5maW5kUEModGhpcywgcGMpKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQ
Qyh0aGlzLCBwYykpCiAgICAgICAgIHJldHVybiBjb2RlT3JpZ2luOwogCiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi1PcHRpb25hbDxCeXRlY29k
ZUluZGV4PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgpCitzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IENvZGVC
bG9jazo6Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCkKIHsKLSAgICBPcHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4gYnl0ZWNvZGVJbmRleDsKICAgICBKSVRU
eXBlIGppdFR5cGUgPSB0aGlzLT5qaXRUeXBlKCk7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUVHlw
ZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKQog
ICAgICAgICBieXRlY29kZUluZGV4ID0gY2FsbFNpdGVJbmRleC5ieXRlY29kZUluZGV4KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNzczMjlmM2E0
MWUwNGExYzcyZGI2MmMxZDU4ZjRmNWMzNjM5NzI1MS4uYTM2OWUxMTAwOTEwYTc2YjNlMmRjYjg4
Yzc5MjUwNmZjMDA3NGU1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaApAQCAtMjU2LDcgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cHJlc3Npb25S
YW5nZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCwgaW50JiBkaXZvdCwKICAgICAgICAg
aW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25l
ZCYgY29sdW1uKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2Rl
SW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUlu
ZGV4KTsKIAogICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBj
b2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2ppdERhdGEpLAogICAgIC8vIHlv
dSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhlIGxpZmV0aW1lIG9mIHdoZW4geW91IHVzZSB0
aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24uCkBAIC0zNDAsNyArMzQwLDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHZvaWQgc2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjp1bmlxdWVf
cHRyPFBDVG9Db2RlT3JpZ2luTWFwPiYmKTsKLSAgICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5k
UEModm9pZCogcGMpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQq
IHBjKTsKIAogICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAg
ICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiYpOwpA
QCAtNzk0LDcgKzc5NCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291
bnQoKTsKICAgICBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0KCk7CiAKLSAgICBib29sIGhhc09wRGVi
dWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIE9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1
bW4pOworICAgIGJvb2wgaGFzT3BEZWJ1Z0ZvckxpbmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uKTsKIAogICAgIGJvb2wgaGFzRGVidWdnZXJS
ZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJSZXF1ZXN0czsgfQogICAgIHZvaWQq
IGRlYnVnZ2VyUmVxdWVzdHNBZGRyZXNzKCkgeyByZXR1cm4gJm1fZGVidWdnZXJSZXF1ZXN0czsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNm
ZjdjZjM4MzYuLjBjM2M0MTIxZDU4NjYyN2VhOTUwNDFiZjcxNzBkYzdjOWQ1MGFiYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUK
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNl
dCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5j
dGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3Vz
dG9tU2xvdEJhc2UsCi0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0
cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hh
aW4pCisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1
dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikK
IHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEdldHRlcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmlu
ZGV4IDg3M2U3YzM1ODg4ZWIzYjEyMWRiZmQ3YWYwNmUyY2FiZWI3ZDMzYjIuLmE4NDg4NDU4ZjRh
YmQyYWFkMmViYWY2MmIyOGEzM2M0MTg2MDQwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gR0NBd2FyZUpJVFN0dWJSb3V0aW5lIGlzIGRlc3Ryb3ll
ZC4KICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bExpbmtJbmZvOyB9CiAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21TbG90QmFzZS5nZXQoKTsgfQotICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFu
bm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQXR0cmlidXRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBtX2RvbUF0dHJpYnV0ZTsgfQogCiAgICAgYm9vbCBoYXNBbHRlcm5h
dGVCYXNlKCkgY29uc3QgZmluYWw7CiAgICAgSlNPYmplY3QqIGFsdGVybmF0ZUJhc2UoKSBjb25z
dCBmaW5hbDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUq
LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJv
eHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCi0gICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFz
ZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7CisgICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRp
b25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZpYVByb3h5ID0g
ZmFsc2UsCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX2N1c3RvbVNsb3RCYXNlOwogICAgIENhbGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm8g
eyBudWxscHRyIH07CiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IG1fY3Vz
dG9tQWNjZXNzb3I7Ci0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gbV9kb21B
dHRyaWJ1dGU7CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2Rv
bUF0dHJpYnV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5jcHAKaW5kZXggMTlhMzU1NmNkZTFhNDI3NzgxYzEzZTA2ZTBjNTUyNWVhNmRmNGVlOS4uZDA0
NDA1ZDlkNDJmZDFmNDhjNGI4OWQ1ZjM2ODI2MzYxYWZkZGZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQuY3BwCkBAIC01MTUsNyArNTE1LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2Vu
ZXJhdGVDb25kaXRpb25Gb3JTZWxmRXF1aXZhbGVuY2UoCiB9CiAKIC8vIEN1cnJlbnQgbWlnaHQg
YmUgbnVsbC4gU3RydWN0dXJlIGNhbid0IGJlIG51bGwuCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG90
eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiB0YXJnZXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNh
Y2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBjdXJyZW50LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3Qq
IHRhcmdldCkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC01NzcsMTggKzU3NywxOCBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG90
eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2Jq
ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGlu
Z1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpCitzdGQ6Om9wdGlvbmFsPFByb3Rv
dHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAg
ICAgcmV0dXJuIHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlLCBiYXNl
LT5zdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpKSwgdGFyZ2V0KTsKIH0KIAotT3B0aW9uYWw8
UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQorc3RkOjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBh
cmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBi
YXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9
IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKICAgICByZXR1cm4g
cHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdldCk7CiB9CiAK
LU9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2Fj
aGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1
cmUsIEpTT2JqZWN0KiB0YXJnZXQpCitzdGQ6Om9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGlu
Z1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAgICAg
cmV0dXJuIHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNl
U3RydWN0dXJlLCB0YXJnZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCA1ZDkwNTQ1
OTc0ZjFlZDM3ZjI4Y2FmM2EyYWViMzQ2YTQ5MTBhMjgzLi4zZDIzM2ZhZDEzMzkyZGUwMmJmM2Iz
Yzk3ZmQwNjQ3ZjBkMWFhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMTk1LDggKzE5
NSw4IEBAIHN0cnVjdCBQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXMgewogICAgIGJvb2wgZmxh
dHRlbmVkRGljdGlvbmFyeTsKIH07CiAKLU9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0
YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFz
ZSwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1PcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdT
dGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJh
c2UsIEpTT2JqZWN0KiB0YXJnZXQpOwotT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3Rh
dHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBi
YXNlLCBKU09iamVjdCogdGFyZ2V0KTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNo
aW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hh
aW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBl
Q2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAppbmRleCA4NTI3OTQwYmYwNTQ2N2EzZDFkYzY0Y2I5MTMyMTM4NTYxYWQ4YTA4Li5kODEx
ZDkxM2M4ZmUxMmRlNmM0NzkzZDQ5M2NmNjdiMmVkMTUzOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZUZyb21TcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB0eXBlKQogICAgIHJldHVybiBOb3RUeXBlZEFycmF5OwogfQogCi1PcHRpb25hbDxT
cGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQorc3RkOjpv
cHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU3RyaW5nVHlwZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggZDU5MDZm
NTc5ZTFiZWMzZmQ0YjEzYjM2MTY3ODdhNWM3ZWMxYWFlOC4uMGViZjlhY2I0N2Y5OTcyMDExZjg2
MzBiMzA1YmY1NTU3NTlkNGRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTUwOCw3ICs1MDgsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKIC8vIElmIGl0
J3MgYW4gYW55SW50KCksIGl0J2xsIHJldHVybiBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIElu
dDUyIGxhdHRpY2UuCiAvLyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBK
U1ZhbHVlIGxhdHRpY2UuCiBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3
YXJlU3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7Ci1PcHRpb25hbDxTcGVjdWxhdGVkVHlw
ZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0
ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5IHZh
bGlkIGZvciB0eXBlZCB2aWV3cy4KIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4
IDgyNmJkNTY5YmI0MzlkMzM2MWZhZDIxZWEwNDhlMGJmYzg2YWE0NzguLmNmOWE3NGMyZGQ1M2I0
YTczM2M3MWEzODc5ZDFhMTFjZGYzOGQwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApA
QCAtODMsNyArODMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNv
dXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJv
bm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGlu
ZSgpIC0gcGFyZW50U291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCkpCiAgICAgLCBtX2lz
SW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RDb250ZXh0KCkpCkBAIC0xODEsNyArMTgx
LDcgQEAgU291cmNlQ29kZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGlua2VkU291cmNl
Q29kZShjb25zdCBTb3VyY2VDb2RlJiBwYXNzZWQKICAgICByZXR1cm4gU291cmNlQ29kZShwYXJl
bnRTb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VM
ZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogfQogCi1GdW5jdGlvbkV4ZWN1dGFibGUq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXNzZWRQYXJlbnRTb3Vy
Y2UsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyLCBJbnRyaW5zaWMgaW50cmluc2lj
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbikKK0Z1bmN0aW9uRXhlY3V0YWJsZSogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0
b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhc3NlZFBhcmVudFNvdXJjZSwg
c3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJpbnNp
YywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCiB7CiAgICAgU291cmNlQ29kZSBzb3Vy
Y2UgPSBsaW5rZWRTb3VyY2VDb2RlKHBhc3NlZFBhcmVudFNvdXJjZSk7CiAgICAgRnVuY3Rpb25P
dmVycmlkZXM6Ok92ZXJyaWRlSW5mbyBvdmVycmlkZUluZm87CkBAIC0yMDEsNyArMjAxLDcgQEAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIHQKIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIAotICAgIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5l
TnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24pCisgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIs
IHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uKQogewogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZDE2OTJlMTc2ZTEwZTgxYWIwNTlh
MmRiZWViMTZjZjc2Mzk3ZDY3YS4uM2Q1NDdlYzRmNjg2M2EyODhhNWFmYjJmNWQyZmEyMTAyZDIx
NDg1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7
CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBu
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwg
UmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIE9wdGlv
bmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3ND
b25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLmhlYXApKQogICAgICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgZGVyaXZlZENvbnRleHRU
eXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQs
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKQEAgLTEyMywxMCArMTIzLDEwIEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUds
b2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCi0gICAgICAgIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbik7CisgICAgICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKIAog
ICAgIFNvdXJjZUNvZGUgbGlua2VkU291cmNlQ29kZShjb25zdCBTb3VyY2VDb2RlJikgY29uc3Q7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2Ny
aXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJl
bnRTb3VyY2UsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0
LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24g
PSBmYWxzZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5r
KFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBwYXJlbnRTb3VyY2UsIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIg
PSBzdGQ6Om51bGxvcHQsIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbiA9IGZhbHNlKTsKIAogICAgIHZvaWQgY2xlYXJDb2RlKFZNJiB2bSkKICAg
ICB7CkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
LCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiwgSlNDOjpEZXJpdmVkQ29udGV4dFR5
cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+LCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2ZWRDb250ZXh0VHlw
ZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFi
bGUmKTsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDVkYTY1Mjc4ZDdmMGY3MGNhMmE0MjIwNjk4M2JlNWM1MzJjMTYyYmMuLjJkNjlmNjk5MjEzNjkw
MWRhZDdlODYyNzFmMDAyMjVhOWNkMDAxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMDExLDcg
KzMwMTEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAgIG1fVERaU3RhY2suYXBwZW5k
KFREWlN0YWNrRW50cnkgeyBXVEZNb3ZlKG1hcCksIG51bGxwdHIgfSk7CiB9CiAKLU9wdGlvbmFs
PFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQ
cml2YXRlQWNjZXNzTmFtZXMoKQorc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50
PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCkKIHsK
ICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHJlc3VsdDsKICAgICBIYXNoU2V0PFVuaXF1ZWRT
dHJpbmdJbXBsKj4gZXhjbHVkZWROYW1lczsKQEAgLTMyNjYsNyArMzI2Niw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rp
b24oUmVnaXN0ZXJJRCoKICAgICB9CiAKICAgICBhdXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0
VmFyaWFibGVzVW5kZXJURFooKTsKLSAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50
PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vz
c05hbWVzKCk7CisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJl
bnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVz
KCk7CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Q2xh
c3NGaWVsZEluaXRpYWxpemVyTW9kZTsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKQEAgLTQ2OTgsNyAr
NDY5OCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCkKICAgICB9CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1
c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGVudW1lcmF0b3JSZWdpc3RlciwgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSkK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVy
SUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3Rlciwgc3RkOjpv
cHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlKQogewogICAgIGlmICghbG9jYWxSZWdpc3Rl
cikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGNhZmE1NzllMzdjZjA3ZTJhYWU4
ODIwYTQ3MzQ3ZDc2ODcwM2U2OTguLmNiOTY5MzQyYWRkOGRmNjJjNjU2ZDQwNGI4NWQ0ZmE3ZjMz
OTc4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMxMCw3ICszMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5zdDsKICAgICAgICAgdXNpbmcgSGFzT3duUHJv
cGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPjsKIAotICAgICAg
ICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0
ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0
ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBPcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxl
LCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9y
SW5Db250ZXh0KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0
b3JSZWdpc3Rlciwgc3RkOjpvcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlLCB1bnNpZ25l
ZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAgICAgICAgICAgIDogRm9ySW5Db250ZXh0KGxv
Y2FsUmVnaXN0ZXIsIFR5cGU6OlN0cnVjdHVyZUZvckluLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNl
dCkKICAgICAgICAgICAgICwgbV9pbmRleFJlZ2lzdGVyKGluZGV4UmVnaXN0ZXIpCiAgICAgICAg
ICAgICAsIG1fcHJvcGVydHlSZWdpc3Rlcihwcm9wZXJ0eVJlZ2lzdGVyKQpAQCAtMzIyLDcgKzMy
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXhSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBw
cm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9y
UmVnaXN0ZXIuZ2V0KCk7IH0KLSAgICAgICAgY29uc3QgT3B0aW9uYWw8VmFyaWFibGU+JiBiYXNl
VmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VWYXJpYWJsZTsgfQorICAgICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFZhcmlhYmxlPiYgYmFzZVZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlVmFyaWFibGU7IH0KIAogICAgICAgICB2b2lkIGFkZEdldEluc3QodW5zaWduZWQgaW5z
dEluZGV4LCBpbnQgcHJvcGVydHlSZWdJbmRleCkKICAgICAgICAgewpAQCAtMzQ1LDcgKzM0NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9pbmRleFJl
Z2lzdGVyOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVyOwog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9lbnVtZXJhdG9yUmVnaXN0ZXI7Ci0gICAgICAg
IE9wdGlvbmFsPFZhcmlhYmxlPiBtX2Jhc2VWYXJpYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxWYXJpYWJsZT4gbV9iYXNlVmFyaWFibGU7CiAgICAgICAgIFZlY3RvcjxHZXRJbnN0PiBtX2dl
dEluc3RzOwogICAgICAgICBWZWN0b3I8SW5JbnN0PiBtX2luSW5zdHM7CiAgICAgICAgIFZlY3Rv
cjxIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0PiBtX2hhc093blByb3BlcnR5SnVtcEluc3RzOwpAQCAt
NTk3LDcgKzU5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Tm9kZUZvclByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc1N0cmluZygpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KG5vZGUpLT52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihub2RlKS0+dmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbWl0
TG9hZChkc3QsIGpzTnVtYmVyKGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBlbWl0Tm9kZShkc3QsIG5vZGUpOwpAQCAtMTA1Niw3ICsxMDU2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVn
aXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4KTsKICAgICAgICAgdm9pZCBwb3BJbmRl
eGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbCk7Ci0gICAgICAgIHZvaWQgcHVzaFN0cnVj
dHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogZW51bWVyYXRvciwgT3B0aW9uYWw8VmFyaWFi
bGU+IGJhc2UpOworICAgICAgICB2b2lkIHB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVy
SUQqIGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIGVudW1lcmF0b3IsIHN0ZDo6b3B0aW9uYWw8VmFyaWFibGU+IGJhc2UpOwogICAgICAg
ICB2b2lkIHBvcFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwpOwogCiAgICAg
ICAgIExhYmVsU2NvcGUqIGJyZWFrVGFyZ2V0KGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTEyMDks
NyArMTIwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBhdXRvIG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigp
OwotICAgICAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7
CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHBy
b3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwpA
QCAtMTIyMiw3ICsxMjIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAg
ICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBnZXRWYXJpYWJsZXNVbmRlclREWigpOwotICAg
ICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBnZXRBdmFpbGFibGVQcml2YXRl
QWNjZXNzTmFtZXMoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25t
ZW50PiBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEyOTcsNyArMTI5Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBtX2NhY2hlZFBh
cmVudFREWjsKICAgICAgICAgVmVjdG9yPFREWlN0YWNrRW50cnk+IG1fVERaU3RhY2s7CiAgICAg
ICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudmlyb25tZW50PiBtX3ByaXZhdGVOYW1lc1N0YWNrOwot
ICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2NvcGVTdGFja0luZGV4
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZUxleGljYWxTY29wZVN0
YWNrSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50KTsKIAogICAg
ICAgICBTY29wZU5vZGUqIGNvbnN0IG1fc2NvcGVOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDljNDAzYzJhMGM1
N2JlMGZjZDFhZWNlNzI1MjgyODg5Yjc4NWExZDguLmFkYWVhYTE0YmFlZWVmZGQ5MTIyOTY2ODQ4
ZmEzNTExMDNlODEyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg1OSw3ICs4NTksNyBAQCB2b2lkIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZwogCiAgICAgaWYgKGNvbnN0IGF1dG8qIGlkZW50aWZpZXIgPSBub2RlLm5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZSk7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleCgqaWRlbnRpZmllcik7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4KSB7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQobmV3T2JqLCAqaWRlbnRpZmllciwgdmFsdWUuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAxOCw3ICszMDE4LDcgQEAgUmVnaXN0ZXJJRCog
QmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCoKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IHRoaXMtPm9wY29kZUlEKCk7CiAK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbGVzcyB8fCBvcGNvZGVJRCA9PSBvcF9sZXNzZXEgfHwg
b3Bjb2RlSUQgPT0gb3BfZ3JlYXRlciB8fCBvcGNvZGVJRCA9PSBvcF9ncmVhdGVyZXEpIHsKLSAg
ICAgICAgYXV0byBpc1VJbnQzMiA9IFsmXSAoRXhwcmVzc2lvbk5vZGUqIG5vZGUpIC0+IE9wdGlv
bmFsPFVJbnQzMlJlc3VsdD4geworICAgICAgICBhdXRvIGlzVUludDMyID0gWyZdIChFeHByZXNz
aW9uTm9kZSogbm9kZSkgLT4gc3RkOjpvcHRpb25hbDxVSW50MzJSZXN1bHQ+IHsKICAgICAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeU9wTm9kZSgpICYmIHN0YXRpY19jYXN0PEJpbmFyeU9wTm9k
ZSo+KG5vZGUpLT5vcGNvZGVJRCgpID09IG9wX3Vyc2hpZnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFVJbnQzMlJlc3VsdDo6VUludDMyOwogICAgICAgICAgICAgaWYgKG5vZGUtPmlzTnVtYmVy
KCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KG5vZGUpLT5pc0ludGVnZXJOb2RlKCkpIHsK
QEAgLTQxOTQsNyArNDE5NCw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBsb2NhbCA9IHRoaXMtPnRyeUdldEJvdW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZW51bWVyYXRvckluZGV4OwogCi0gICAgT3B0aW9uYWw8VmFyaWFi
bGU+IGJhc2VWYXJpYWJsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhYmxlPiBiYXNlVmFyaWFi
bGU7CiAgICAgaWYgKG1fZXhwci0+aXNSZXNvbHZlTm9kZSgpKQogICAgICAgICBiYXNlVmFyaWFi
bGUgPSBnZW5lcmF0b3IudmFyaWFibGUoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2V4cHIp
LT5pZGVudGlmaWVyKCkpOwogICAgIGVsc2UgaWYgKG1fZXhwci0+aXNUaGlzTm9kZSgpKSB7CkBA
IC00NzM4LDcgKzQ3MzgsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPExhYmVsPiBj
YXRjaEVuZExhYmVsOwogICAgIFJlZlB0cjxMYWJlbD4gZmluYWxseUxhYmVsOwogICAgIFJlZlB0
cjxMYWJlbD4gZmluYWxseUVuZExhYmVsOwotICAgIE9wdGlvbmFsPEZpbmFsbHlDb250ZXh0PiBm
aW5hbGx5Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZpbmFsbHlDb250ZXh0PiBmaW5hbGx5
Q29udGV4dDsKIAogICAgIGlmIChtX2ZpbmFsbHlCbG9jaykgewogICAgICAgICBmaW5hbGx5TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAgLTU1NDIsNyArNTU0Miw3IEBAIHZvaWQgT2Jq
ZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiByaHMpCiAgICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2Jq
ZWN0OwogICAgICAgICBJZGVudGlmaWVyU2V0IGV4Y2x1ZGVkU2V0OwotICAgICAgICBPcHRpb25h
bDxDYWxsQXJndW1lbnRzPiBhcmdzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENhbGxBcmd1bWVu
dHM+IGFyZ3M7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcHV0ZWRQcm9wZXJ0aWVzID0g
MDsKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkFyZ3VtZW50cyA9IDI7CiAgICAgICAgIGlmICht
X2NvbnRhaW5zUmVzdEVsZW1lbnQpIHsKQEAgLTU1OTUsNyArNTU5NSw3IEBAIHZvaWQgT2JqZWN0
UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiByaHMpCiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Np
b24pIHsKLSAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5k
ZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleCh0YXJn
ZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4
KQogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0
KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggZTI5
MWU0ZDkzYmE5NzE5ZDJjMjUxMmVlMzY4MjJmOTAyOGQ0MjQ0Yy4uNTI1MzE1YmU3MGMzNjE5Yjlm
ZTM1MTkwMzE4NTYxZmQxZGJmNzIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xl
QnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwg
QnIKICAgICAvLyBJbnNwZWN0b3IgYnJlYWtwb2ludCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFy
ZSB6ZXJvLWJhc2VkIGJ1dCB0aGUgZXhlY3V0YWJsZQogICAgIC8vIGFuZCBDb2RlQmxvY2sgbGlu
ZSBhbmQgY29sdW1uIHZhbHVlcyBhcmUgb25lLWJhc2VkLgogICAgIHVuc2lnbmVkIGxpbmUgPSBi
cmVha3BvaW50LmxpbmVOdW1iZXIoKSArIDE7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVt
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1bW47CiAgICAgaWYgKGJyZWFrcG9p
bnQuY29sdW1uTnVtYmVyKCkpCiAgICAgICAgIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyKCkgKyAxOwogCkBAIC00NTcsNyArNDU3LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6cmVzb2x2ZUJy
ZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVAK
ICAgICB9CiAKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VEYXRhID0gZGVidWdnZXJQYXJz
ZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCgpLCBzb3VyY2VQcm92aWRlcik7Ci0gICAgT3B0aW9u
YWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBwYXJzZURhdGEucGF1c2VQb3Np
dGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihsaW5lLCBjb2x1bW4pOworICAg
IHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBwYXJzZURh
dGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihsaW5lLCBj
b2x1bW4pOwogICAgIGlmICghcmVzb2x2ZWRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBEZWJ1Z2dlckNhbGxGcmFtZSYgRGVidWdnZXI6OmN1
cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpCiAgICAgcmV0dXJuICptX2N1cnJlbnREZWJ1Z2dlckNh
bGxGcmFtZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0QmxhY2tib3hUeXBlKFNvdXJjZUlEIHNv
dXJjZUlELCBPcHRpb25hbDxCbGFja2JveFR5cGU+IHR5cGUpCit2b2lkIERlYnVnZ2VyOjpzZXRC
bGFja2JveFR5cGUoU291cmNlSUQgc291cmNlSUQsIHN0ZDo6b3B0aW9uYWw8QmxhY2tib3hUeXBl
PiB0eXBlKQogewogICAgIGlmICh0eXBlKQogICAgICAgICBtX2JsYWNrYm94ZWRTY3JpcHRzLnNl
dChzb3VyY2VJRCwgdHlwZS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmgKaW5kZXggMzNlYzhmNjg3MjM1MTQ0ZGI4YmM2NGJkYjg1YmZjOTAxM2Y5ODky
NC4uOTM4ODAyM2E2NDE2YTNmMDRjMGIwYTI0YjFhMzc3NDM4ZTI1MmZkNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOwogCiAgICAgZW51bSBjbGFzcyBCbGFj
a2JveFR5cGUgeyBEZWZlcnJlZCwgSWdub3JlZCB9OwotICAgIHZvaWQgc2V0QmxhY2tib3hUeXBl
KFNvdXJjZUlELCBPcHRpb25hbDxCbGFja2JveFR5cGU+KTsKKyAgICB2b2lkIHNldEJsYWNrYm94
VHlwZShTb3VyY2VJRCwgc3RkOjpvcHRpb25hbDxCbGFja2JveFR5cGU+KTsKICAgICB2b2lkIGNs
ZWFyQmxhY2tib3goKTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
UGF1c2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCA3NDBhZDgyYzc5NTRhMGY5ODI4MjI4MzU2OGIxM2UxOWY4
NDFiZmYzLi5hMzFmYzFmMTVkNGI4Mzg5NDhmNDJiNGNmMWMwOWM0N2QzOTk1MDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTMwOCw3ICszMDgsNyBAQCBUZXh0UG9zaXRpb24gRGVidWdnZXJDYWxsRnJhbWU6OmN1
cnJlbnRQb3NpdGlvbihWTSYgdm0pCiAKICAgICBpZiAoaXNUYWlsRGVsZXRlZCgpKSB7CiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9zaGFkb3dDaGlja2VuRnJhbWUuY29kZUJsb2Nr
OwotICAgICAgICBpZiAoT3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4gYnl0ZWNvZGVJbmRleCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4KG1fc2hhZG93Q2hpY2tlbkZy
YW1lLmNhbGxTaXRlSW5kZXgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPEJ5dGVjb2Rl
SW5kZXg+IGJ5dGVjb2RlSW5kZXggPSBjb2RlQmxvY2stPmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNp
dGVJbmRleChtX3NoYWRvd0NoaWNrZW5GcmFtZS5jYWxsU2l0ZUluZGV4KSkgewogICAgICAgICAg
ICAgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoY29k
ZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVJbmRleCgqYnl0ZWNvZGVJbmRleCkpLAogICAg
ICAgICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2stPmNv
bHVtbk51bWJlckZvckJ5dGVjb2RlSW5kZXgoKmJ5dGVjb2RlSW5kZXgpKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNl
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURh
dGEuY3BwCmluZGV4IDU2OGZlMzM4YWEwNjc1MWYyNzZkMzU0ZTJiOGUwMDFkYTNhZTM1MzAuLjZj
ODhmZDkwYzMwMDkxNDEzYjg5NTE2NTgwMjg0MTc3ODM5ZTQxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcApAQCAtMzEs
NyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+
IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4o
aW50IGxpbmUsIGludCBjb2x1bW4pCitzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1
Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBs
aW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVnZ2VyUGF1c2VQb3NpdGlvbiBwb3NpdGlvbiA9
IHsgRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6SW52YWxpZCwgSlNUZXh0UG9zaXRpb24obGlu
ZSwgY29sdW1uLCAwKSB9OwogICAgIGF1dG8gaXQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1fcG9zaXRp
b25zLmJlZ2luKCksIG1fcG9zaXRpb25zLmVuZCgpLCBwb3NpdGlvbiwgW10gKGNvbnN0IERlYnVn
Z2VyUGF1c2VQb3NpdGlvbiYgYSwgY29uc3QgRGVidWdnZXJQYXVzZVBvc2l0aW9uJiBiKSB7CkBA
IC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9z
aXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uCiAgICAgLy8gVmFsaWQgcGF1
c2UgbG9jYXRpb24uIFVzZSBpdC4KICAgICBhdXRvJiBmaXJzdFNsaWRlUG9zaXRpb24gPSAqaXQ7
CiAgICAgaWYgKGZpcnN0U2xpZGVQb3NpdGlvbi50eXBlICE9IERlYnVnZ2VyUGF1c2VQb3NpdGlv
blR5cGU6OkVudGVyKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KGZp
cnN0U2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PEpTVGV4dFBvc2l0aW9uPihmaXJzdFNsaWRlUG9zaXRpb24ucG9zaXRpb24pOwogCiAgICAgLy8g
RGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBlbnRlciB0aGlzIGZ1bmN0aW9uIG9yIHNraXAgcGFzdCBp
dC4KICAgICAvLyBJZiBlbnRyeVN0YWNrU2l6ZSBpcyA+IDAgd2UgYXJlIHNraXBwaW5nIGZ1bmN0
aW9ucy4KQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2Vy
UGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4KICAgICAgICAg
fQogCiAgICAgICAgIC8vIEZvdW5kIHBhdXNlIHBvc2l0aW9uLgotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8SlNUZXh0UG9zaXRpb24+KHNsaWRlUG9zaXRpb24ucG9zaXRpb24pOworICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4oc2xpZGVQb3NpdGlvbi5wb3NpdGlv
bik7CiAgICAgfQogCiAgICAgLy8gTm8gcGF1c2UgcG9zaXRpb25zIGZvdW5kLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaAppbmRleCAz
YjA3YzkyM2M2OGE2ZjcyYWRmODNkMzZjNzIzNjc3NWQ1NWEwYzcwLi43N2JlYWU4NWRkMjIzYzNl
M2M2MTQ3MDk3ODI3N2Q4ZTExZGYwYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fcG9zaXRpb25zLmFwcGVuZCh7IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6
OkxlYXZlLCBwb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxKU1RleHRQb3NpdGlv
bj4gYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7
CisgICAgc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gYnJlYWtwb2ludExvY2F0aW9uRm9y
TGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7CiAKICAgICB2b2lkIHNvcnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL1NjcmlwdFByb2ZpbGlu
Z1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5n
U2NvcGUuaAppbmRleCBjMzQwYThiNTVmMjIzOTBiYzc0YzQ4MzY2NGY3NWU0YTYzODZjMzcyLi5j
NGJlZTRkMTYyMGE4NmUwNzBhODhiMjhkZTAxYzQyNmI0YWMyZWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaApAQCAt
ODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2ds
b2JhbE9iamVjdCB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX3N0YXJ0VGlt
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fc3RhcnRUaW1lOwogICAgIFByb2ZpbGlu
Z1JlYXNvbiBtX3JlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0OTNmMzY4ZTVl
ZWUwZGNkYTM2ZWViYzY3MTMxOTZmYjFiMGY0ZTExLi4xYjJhNWUwN2EwYjJlMGY1NGFhODc3N2E5
YTM5ZTYwM2JhYzZjZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC03MDIsNyArNzAyLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgCiAgICAgY2FzZSBEb3VibGVSZXA6IHsK
ICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJv
bVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVy
ID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKCpudW1iZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC04MzcsNyArODM3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAog
ICAgIGNhc2UgQXJpdGhDbHozMjogewogICAgICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBu
dW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRp
dmUoKSkgewogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBjYXNlIEtub3duSW50MzJV
c2U6CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAg
ICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQz
MlVzZToKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRv
TnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxk
b3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihmYWJzKCpudW1iZXIpKTsKICAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCByZXN1bHQpOwpAQCAtMTI0Miw3ICsxMjQyLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBT
cGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRv
TnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxk
b3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoZmFicygqbnVtYmVyKSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTI4NSw3ICsxMjg1
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICBj
YXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgSlNWYWx1ZSBvcGVyYW5kID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gbnVtYmVy
ID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgeworICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkp
IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gRG91YmxlUmVw
VXNlKQogICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAg
IApAQCAtMTM2NSw3ICsxMzY1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNh
c2UgTWFwSGFzaDogewogICAgICAgICBpZiAoSlNWYWx1ZSBrZXkgPSBmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGhh
c2ggPSBjb25jdXJyZW50SlNNYXBIYXNoKGtleSkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gQWx0aG91Z2ggQysrIGNvZGUgdXNlcyB1aW50MzJfdCBmb3IgdGhlIGhh
c2gsIHRoZSBjbG9zZXN0IHR5cGUgaW4gREZHIElSIGlzIEludDMyCiAgICAgICAgICAgICAgICAg
Ly8gYW5kIHRoYXQncyB3aGF0IE1hcEhhc2ggcmV0dXJucy4gU28sIHdlIGhhdmUgdG8gY2FzdCB0
byBpbnQzMl90IHRvIGF2b2lkIGxhcmdlCiAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgdmFs
dWVzIGJlY29taW5nIGRvdWJsZXMuIFRoaXMgY2FzdGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5z
aWduZWQKQEAgLTE1NDksNyArMTU0OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBJ
c0NlbGxXaXRoVHlwZTogewogICAgICAgICAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVzdWx0OworICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGQubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1hdGNoZWQgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1
ZXJpZWRUeXBlKCk7CkBAIC0xNzQ1LDcgKzE3NDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZTogewot
ICAgICAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1
bGF0ZWRUeXBlRm9yUXVlcnkoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRl
ZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKICAgICAgICAg
ICAgIGlmICghZmlsdGVyKSB7CiAgICAgICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYg
U3BlY0NlbGwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9v
bGVhbihmYWxzZSkpOwpAQCAtMzc4Niw3ICszNzg2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OiB7CiAgICAgICAgIEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSk7CiAgICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50
bHkoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2
aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CiAgICAgICAgICAgICBpZiAoYnl0ZU9mZnNl
dCkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00ODcyLDcgKzQ4NzIsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0cyhOb2RlKiBu
b2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsKICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICBpZiAoT3B0aW9u
YWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgeworICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJp
bWl0aXZlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBEb3Vi
bGVSZXBVc2UpCiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGVxdWl2YWxlbnRGdW5jdGlvbigqbnVtYmVy
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBjY2U3ODJjMWUzYzc4MDk1YWE0ZjU3NWYwMWQyZjY1NWI0MzFiZjIyLi43MDc5ZTUy
YWRhOGIyZjljYzAzZGQzNDQ2MzU2MDIzNGU4YzVkZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ0NSw3ICsyNDQ1LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9w
ZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICAgICAgICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNp
YzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFs
PEl0ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5z
aWMpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50
ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoaW50cmluc2ljKTsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEha2luZCk7CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3Jl
IGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1
bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAKaW5kZXggNDYwODA1Zjc2YzJiNTg2MGY5NTE4NGIzNzJmMjZlOTQ3ZWQ2
NDBlMC4uY2MwZDAxNGRhMjkzMWZmM2VjZGNlOTQyOWNjMjYyNTYxZTJmN2Y3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKQEAgLTE2OCwxMCArMTY4LDEwIEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIHR5cGUgd2lkZW5pbmcgaXMgY3JpdGljYWwgdG8gbmF2aWVy
LXN0b2tlcy4gV2l0aG91dCBpdCwgbmF2aWVyLXN0b2tlcyBoYXMgbW9yZSBzdHJpY3QgY29uc3Ry
YWludCBvbiBPU1IgZW50cnkgYW5kCiAgICAgICAgIC8vIGZhaWxzIE9TUiBlbnRyeSByZXBlYXRl
ZGx5LgogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgY29uc3QgT3BlcmFu
ZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4u
bXVzdEhhbmRsZVZhbHVlcygpOworICAgICAgICBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlvbmFs
PEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyA9IG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVW
YWx1ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgp
OyBpLS07KSB7CiAgICAgICAgICAgICBPcGVyYW5kIG9wZXJhbmQgPSBtdXN0SGFuZGxlVmFsdWVz
Lm9wZXJhbmRGb3JJbmRleChpKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWU+IHZhbHVl
ID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1
ZT4gdmFsdWUgPSBtdXN0SGFuZGxlVmFsdWVzW2ldOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgIE5vdCBsaXZlIGluIGJ5dGVjb2RlOiAiLCBvcGVyYW5kLCAiXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCA2ZDVhNDQwOTgyMjdiNTk1NWQ4
MjU4ZDI0ZWViZGE4YzI4NTFkOGRlLi42NTA3OWZjZjFlNTczNTE2OTdhOTlmNWQ5Y2IzNDViOWY2
ZTNhNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBGdW5jdGlvbkFsbG93bGlzdCYgZW5zdXJlR2xvYmFsREZHQWxsb3ds
aXN0KCkKIAogc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIFZNJiB2
bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlLAotICAgIEJ5dGVjb2RlSW5kZXggb3NyRW50cnlCeXRl
Y29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVW
YWx1ZXMsCisgICAgQnl0ZWNvZGVJbmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9w
ZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzLAogICAgIFJl
ZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFP
cHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zU2l6ZSgpKQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsZUltcGwoCiB9CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKIHN0YXRpYyBD
b21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKLSAgICBWTSYsIENvZGVCbG9jayosIENvZGVC
bG9jayosIEpJVENvbXBpbGF0aW9uTW9kZSwgQnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8
T3B0aW9uYWw8SlNWYWx1ZT4+JiwKKyAgICBWTSYsIENvZGVCbG9jayosIENvZGVCbG9jayosIEpJ
VENvbXBpbGF0aW9uTW9kZSwgQnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRp
b25hbDxKU1ZhbHVlPj4mLAogICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYp
CiB7CiAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0
YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKIAogQ29tcGlsYXRpb25SZXN1bHQg
Y29tcGlsZSgKICAgICBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHBy
b2ZpbGVkREZHQ29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk1vZGUgbW9kZSwKLSAgICBCeXRlY29k
ZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNW
YWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzLAorICAgIEJ5dGVjb2RlSW5kZXggb3NyRW50cnlCeXRl
Y29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhh
bmRsZVZhbHVlcywKICAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxi
YWNrKQogewogICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IGNvbXBpbGVJbXBsKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKaW5kZXggMmExYzljMTAxN2UyYzUzZTI5MmMw
YzNmOTk5YmZmMDQxN2UyZDg4YS4uZWViMWE0YzcxOWZhNzVjMDliOTQ1ZTQwNzJlMDllZmFhN2U5
NTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCkBAIC00MSw3ICs0MSw3
IEBAIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGdldE51bUNvbXBpbGF0aW9ucygpOwogLy8g
Y29tcGlsZS4gRXZlbiBpZiB3ZSBkbyBhIHN5bmNocm9ub3VzIGNvbXBpbGUsIHdlIGNhbGwgdGhl
IGNhbGxiYWNrIHdpdGggdGhlIHJlc3VsdC4KIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUoCiAg
ICAgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbk1vZGUsCi0gICAgQnl0ZWNvZGVJbmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgs
IGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcywKKyAg
ICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8c3Rk
OjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMsCiAgICAgUmVmPERlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjaz4mJik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGY2NWY5YjU3
OTBlNjZlMWQ5MmUyMTJjN2ExZTU1NGU4OWQ4YThiZWEuLjhhMDlmYjQ1MTg4NzU0YWIyMmFhOTFj
OTE5ZTEzZjlmOGI4YWI2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMTA3Myw3ICsxMDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjogewotICAgICAgICAgICAgICAgIE9wdGlvbmFs
PEFycmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWluU3BlY3VsYXRpb247CisgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxBcnJheTo6U3BlY3VsYXRpb24+IHNhbmVDaGFpblNwZWN1bGF0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3Ry
dWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgSW5Cb3VuZHNTYW5l
Q2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUgYmFzaXMuIE5vdGUgdGhhdDoKICAgICAgICAg
ICAgICAgICAgICAgLy8KQEAgLTMwMTQsNyArMzAxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGZpeHVwSXNDZWxsV2l0aFR5cGUoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBmaWx0ZXIgPSBub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCk7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNw
ZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKICAgICAgICAgaWYgKGZpbHRlcikgewogICAgICAgICAg
ICAgc3dpdGNoIChmaWx0ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5n
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDliNjg0ZWUzMGU0ZGM1ZDJi
OThkYTk4YzZjMjk4MWU2N2FlMjFhYTAuLjc2ZjlkYjgyZjkxMTg5MWRjOTMzNjUwNWM3NmRkNjEz
NjNmZTQ2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTExOTEsNyAr
MTE5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzVmFsaWRhdGluZyB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4g
bV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFs
dWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAgICAgQmFnPEVudHJ5U3dpdGNoRGF0YT4gbV9l
bnRyeVN3aXRjaERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApp
bmRleCAyNDQ5ODAxZmYwYjRlMTE2YmQ0YmU0OTliNTNjZDY0ZTM4ZGEzMTI2Li41ZTJmMGEwZDA4
MTlkNjQzODc5ODJmMTk1Y2QwMjhkODRmNzA5MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEpJVENvZGU6OnJlY29u
c3RydWN0KAogICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIG1pbmlmaWVkREZHLCBzdHJl
YW1JbmRleCwgcmVzdWx0KTsKIH0KIAotdm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgcmVz
dWx0KQordm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgc3RyZWFt
SW5kZXgsIE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+JiByZXN1bHQpCiB7CiAgICAg
T3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4gcmVjb3ZlcmllczsKICAgICByZWNvbnN0cnVjdChjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIHN0cmVhbUluZGV4LCByZWNvdmVyaWVzKTsKICAgICAKLSAgICBy
ZXN1bHQgPSBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4oT3BlcmFuZHNMaWtlLCByZWNvdmVy
aWVzKTsKKyAgICByZXN1bHQgPSBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PihPcGVy
YW5kc0xpa2UsIHJlY292ZXJpZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSByZXN1bHQuc2l6ZSgp
OyBpLS07KQogICAgICAgICByZXN1bHRbaV0gPSByZWNvdmVyaWVzW2ldLnJlY292ZXIoY2FsbEZy
YW1lKTsKIH0KQEAgLTIyNCwxMiArMjI0LDEyIEBAIHZvaWQgSklUQ29kZTo6dmFsaWRhdGVSZWZl
cmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKICAgICBt
aW5pZmllZERGRy52YWxpZGF0ZVJlZmVyZW5jZXModHJhY2tlZFJlZmVyZW5jZXMpOwogfQogCi1P
cHRpb25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMp
CitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2
b2lkKiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBtX29zckV4aXQpIHsKICAgICAg
ICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGV4aXQubV9jb2RlLmV4ZWN1
dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKS51bnRhZ2dl
ZFB0cigpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5lbmQoKS51bnRhZ2dlZFB0cigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZv
ckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBiMTU4MjNjMzYx
YmFkODI1MGZlZDkzODBiYjMyMWRlNzI0MzBjZTc2Li5lYzJiNDgzMzI4ZTM4OTRkMTZmNDFlODYw
NDhiMGZiYjM2NGQ5NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gc3RhY2suIEN1cnJlbnRseSwgaXQgYWxz
byBoYXMgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhlIHZhbHVlcyBtdXN0IGJlIGluIHRoZWlyCiAg
ICAgLy8gYnl0ZWNvZGUtZGVzaWduYXRlZCBzdGFjayBzbG90cy4KICAgICB2b2lkIHJlY29uc3Ry
dWN0KAotICAgICAgICBDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiByZXN1bHQpOworICAg
ICAgICBDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCB1bnNpZ25lZCBzdHJlYW1J
bmRleCwgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIHJlc3VsdCk7CiAKICNpZiBF
TkFCTEUoRlRMX0pJVCkKICAgICAvLyBOQi4gQWxsIG9mIHRoZXNlIG1ldGhvZHMgdGFrZSBDb2Rl
QmxvY2sqIGJlY2F1c2UgdGhleSBtYXkgd2FudCB0byB1c2UKQEAgLTk4LDcgKzk4LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBjb21tb25EYXRhT2Zmc2V0KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpJVENvZGUsIGNvbW1vbik7IH0KIAotICAgIE9wdGlvbmFsPENvZGVP
cmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIGZpbmFsOwogCiAg
ICAgdXNpbmcgRGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWZGb3JERkc7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDU4OTNiZTgwNjYwMTY5OWI2NzAxNDBi
MjFjZTliNzRlYWY5M2QxMWEuLjE2OTYxN2JlYWFmZjZlMjI5ZDIyMmE2NTYyMjRmNDk1ZGEwYjYy
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNDQ3LDcgKzE0NDcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkK
KyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5
cGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggNzUxM2I0ZDRiZTBkMDlmYTEwM2Y1OGIxNzdlM2FmYmVjOTgwYTM1Yy4uZmNiMDQ0
NjBhM2ZkMDcxNWQ5NDc1ZmJhYWYwMzgxMzcwZjc4ZDI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbEludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRQcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHByb3BlcnR5
LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7CiAgICAgICAgIHB1dEJ5VmFsPHN0cmljdCwgZGlyZWN0PihnbG9iYWxPYmpl
Y3QsIHZtLCBiYXNlVmFsdWUsICppbmRleCwgdmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0x
MzEsNyArMTMxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbEludGVybmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwKICAgICBpZiAoZGlyZWN0KSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgICAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Cisg
ICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkgewogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICAgICAg
YmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgMCwgc3RyaWN0ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTUxLDcgKzE1MSw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxDZWxsSW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mCiAgICAgaWYgKGRpcmVjdCkgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYXNlLT5pc09iamVjdCgpKTsKICAgICAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIDAsIHN0cmljdCA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXRE
aXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNjYyLDcgKzY2Miw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRCeVZhbENlbGwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1Zh
bHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CiAKLSAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0QXNVaW50MzJJbmRl
eCgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHByb3BlcnR5LnRy
eUdldEFzVWludDMySW5kZXgoKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBn
ZXRCeVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3QsIGJhc2UsICppbmRleCkpOwogCiAgICAgaWYg
KHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKQEAgLTE1NTksNyArMTU1OSw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqCiAgICAgfQogICAgIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWws
IFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0g
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQz
MkluZGV4KCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZh
bHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOwpAQCAtMzcz
MSw3ICszNzMxLDcgQEAgc3RhdGljIHZvaWQgdHJpZ2dlckZUTFJlcGxhY2VtZW50Q29tcGlsZShW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlKgogICAgIC8vIFdlIG5lZWQgdG8g
Y29tcGlsZSB0aGUgY29kZS4KICAgICBjb21waWxlKAogICAgICAgICB2bSwgY29kZUJsb2NrLT5u
ZXdSZXBsYWNlbWVudCgpLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMLCBCeXRl
Y29kZUluZGV4KCksCi0gICAgICAgIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PigpLCBUb0ZU
TERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y3JlYXRlKCkpOworICAgICAgICBPcGVyYW5k
czxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PigpLCBUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjazo6Y3JlYXRlKCkpOwogCiAgICAgLy8gSWYgd2UgcmVhY2hlZCBoZXJlLCB0aGUgY291bnRl
ciBoYXMgbm90IGJlIHJlc2V0LiBEbyB0aGF0IG5vdy4KICAgICBqaXRDb2RlLT5zZXRPcHRpbWl6
YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoCkBAIC0zOTcwLDcgKzM5NzAs
NyBAQCBzdGF0aWMgY2hhciogdGllclVwQ29tbW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEJ5dGVjb2RlSW5kZXggb3JpZ2luQnl0ZQogCiAgICAgSklUQ29kZTo6VHJpZ2dlclJlYXNv
biogdHJpZ2dlckFkZHJlc3MgPSAmKHRyaWdnZXJJdGVyYXRvci0+dmFsdWUpOwogCi0gICAgT3Bl
cmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IG11c3RIYW5kbGVWYWx1ZXM7CisgICAgT3BlcmFuZHM8
c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4gbXVzdEhhbmRsZVZhbHVlczsKICAgICB1bnNpZ25lZCBz
dHJlYW1JbmRleCA9IGppdENvZGUtPmJ5dGVjb2RlSW5kZXhUb1N0cmVhbUluZGV4LmdldChvcmln
aW5CeXRlY29kZUluZGV4KTsKICAgICBqaXRDb2RlLT5yZWNvbnN0cnVjdChjYWxsRnJhbWUsIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbihvcmlnaW5CeXRlY29kZUluZGV4KSwgc3RyZWFtSW5kZXgsIG11
c3RIYW5kbGVWYWx1ZXMpOwogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnRDb2RlQmxvY2sgPSBj
b2RlQmxvY2stPm5ld1JlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAppbmRleCBkMjkzZWM3NDgxZjkyMzgyNGY3ZjhjYzdlMTdkZmJmZmEwMjllMDMwLi4yZDJh
MjIxYjU0YjMyMzI4NTllYzNkZmM1MWU0Yzk1ZTU5NTU5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBQcm9maWxlcjo6Q29tcGlsYXRp
b25LaW5kIHByb2ZpbGVyQ29tcGlsYXRpb25LaW5kRm9yTW9kZShKSVRDb21waWxhdGlvbk1vZGUg
bW9kZQogCiBQbGFuOjpQbGFuKENvZGVCbG9jayogcGFzc2VkQ29kZUJsb2NrLCBDb2RlQmxvY2sq
IHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgIEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlLCBCeXRl
Y29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwKLSAgICBjb25zdCBPcGVyYW5kczxPcHRp
b25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMpCisgICAgY29uc3QgT3BlcmFuZHM8c3Rk
OjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMpCiAgICAgICAgIDogQmFzZSht
b2RlLCBwYXNzZWRDb2RlQmxvY2spCiAgICAgICAgICwgbV9wcm9maWxlZERGR0NvZGVCbG9jayhw
cm9maWxlZERGR0NvZGVCbG9jaykKICAgICAgICAgLCBtX211c3RIYW5kbGVWYWx1ZXMobXVzdEhh
bmRsZVZhbHVlcykKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFBsYW46OmNoZWNrTGl2ZW5lc3NB
bmRWaXNpdENoaWxkcmVuKEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICBjbGVh
bk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1
ZT4gdmFsdWUgPSBtX211c3RIYW5kbGVWYWx1ZXNbaV07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZT4gdmFsdWUgPSBtX211c3RIYW5kbGVWYWx1ZXNbaV07CiAgICAgICAgIGlmICh2YWx1
ZSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFsdWUudmFsdWUoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAppbmRleCBhNTY4N2I2NjJhMzk4
ZDEwMDgxODFjMmQ3YzAwMmFiMDhmNzBmNGQ2Li40MDgwMzI5NmE2ZGJlMGU0N2VhMzgzM2RiYmYy
NGE2YzI5MDNiNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaApAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgUGxhbigKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tU
b0NvbXBpbGUsIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ssCiAgICAgICAgIEpJVENv
bXBpbGF0aW9uTW9kZSwgQnl0ZWNvZGVJbmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsCi0gICAg
ICAgIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyk7
CisgICAgICAgIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFu
ZGxlVmFsdWVzKTsKICAgICB+UGxhbigpOwogCiAgICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3Qg
ZmluYWw7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFuTXVzdEhhbmRs
ZVZhbHVlc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNv
ZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fb3NyRW50cnlCeXRlY29kZUluZGV4OyB9Ci0gICAg
Y29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzKCkgY29u
c3QgeyByZXR1cm4gbV9tdXN0SGFuZGxlVmFsdWVzOyB9CisgICAgY29uc3QgT3BlcmFuZHM8c3Rk
OjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBt
X211c3RIYW5kbGVWYWx1ZXM7IH0KICAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxhdGlvbi5nZXQoKTsgfQogCiAgICAgRmluYWxp
emVyKiBmaW5hbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsaXplci5nZXQoKTsgfQpAQCAt
MTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlc2UgY2FuIGJlIHJhdyBwb2ludGVy
cyBiZWNhdXNlIHdlIHZpc2l0IHRoZW0gZHVyaW5nIGV2ZXJ5IEdDIGluIGNoZWNrTGl2ZW5lc3NB
bmRWaXNpdENoaWxkcmVuLgogICAgIENvZGVCbG9jayogbV9wcm9maWxlZERGR0NvZGVCbG9jazsK
IAotICAgIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiBtX211c3RIYW5kbGVWYWx1ZXM7Cisg
ICAgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4gbV9tdXN0SGFuZGxlVmFsdWVzOwog
ICAgIGJvb2wgbV9tdXN0SGFuZGxlVmFsdWVzTWF5SW5jbHVkZUdhcmJhZ2UgV1RGX0dVQVJERURf
QllfTE9DSyhtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jaykgeyB0cnVlIH07CiAgICAgTG9j
ayBtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4
IDYwMzA1MGUxOThjNjZjYjJlNzkyYjQ5MDY5ODA2Nzg2ZmU1NTkyMDYuLjk4NjYyZmE1OWJhOTBk
MmE5Mjc1MTcyZmQ3NDhiNmYzZjc4MDQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKQEAgLTY5LDEw
ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRl
Y29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBjb25z
dCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMgPSBtX2dyYXBo
Lm1fcGxhbi5tdXN0SGFuZGxlVmFsdWVzKCk7CisgICAgICAgICAgICBjb25zdCBPcGVyYW5kczxz
dGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyA9IG1fZ3JhcGgubV9wbGFu
Lm11c3RIYW5kbGVWYWx1ZXMoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIE9wZXJhbmQg
b3BlcmFuZCA9IG11c3RIYW5kbGVWYWx1ZXMub3BlcmFuZEZvckluZGV4KGkpOwotICAgICAgICAg
ICAgICAgIE9wdGlvbmFsPEpTVmFsdWU+IHZhbHVlID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAg
ICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IHZhbHVlID0gbXVzdEhhbmRsZVZh
bHVlc1tpXTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3Y2UyMTBkMTNiYThlNTVhODBhOTZjZTkzNTJl
MGZmZDA3Mjg0YjFkLi4wYWY1ZGQ5ODM5YzgwMjE2ZWY4YmNmMGRlNjNkZTNiYzg5NWIzYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJh
dG9yTGFtYmRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBsYW1iZGEpCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyJiBwY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIpCiB7CiAgICAgYXV0byBtYXJrU2xvd1BhdGhJZk5lZWRlZCA9IFsm
XSAoTm9kZSogbm9kZSkgewotICAgICAgICBPcHRpb25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFy
a2VyPiBzaXplTWFya2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNz
OjpNYXJrZXI+IHNpemVNYXJrZXI7CiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1w
REZHSklUU2l6ZVN0YXRpc3RpY3MoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBpZCA9IG1ha2VT
dHJpbmcoIkRGR19zbG93XyIsIG1fZ3JhcGgub3BOYW1lKG5vZGUtPm9wKCkpKTsKICAgICAgICAg
ICAgIHNpemVNYXJrZXIgPSB2bSgpLmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoaWQsIG1f
aml0KTsKQEAgLTg2Miw4ICs4NjIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5
KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHRlbXA7Ci0gICAgT3B0aW9uYWw8R1BSUmVnPiB0ZW1wR1BSOworICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiB0
ZW1wR1BSOwogICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgIGNhc2UgQXJyYXk6
OkludDMyOgogICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKQEAgLTE3MzAsOCArMTczMCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQogICAgIFNw
ZWN1bGF0ZUludDMyT3BlcmFuZCBzdGFydCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BS
UmVnIHN0YXJ0R1BSID0gc3RhcnQuZ3ByKCk7CiAKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVJbnQz
Mk9wZXJhbmQ+IGVuZDsKLSAgICBPcHRpb25hbDxHUFJSZWc+IGVuZEdQUjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4gZW5kOworICAgIHN0ZDo6b3B0aW9uYWw8R1BS
UmVnPiBlbmRHUFI7CiAgICAgaWYgKG5vZGUtPmNoaWxkMygpKSB7CiAgICAgICAgIGVuZC5lbXBs
YWNlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgZW5kR1BSLmVtcGxhY2UoZW5kLT5n
cHIoKSk7CkBAIC0yMTA3LDcgKzIxMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3VycmVudEJsb2NrKCkKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMy
KDApLCAmdm0oKS5kaWRFbnRlclZNKTsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPEpJ
VFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKICAgICAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBERkdKSVRTaXplU3RhdGlzdGljcygpKSkgewogICAgICAgICAg
ICAgU3RyaW5nIGlkID0gbWFrZVN0cmluZygiREZHX2Zhc3RfIiwgbV9ncmFwaC5vcE5hbWUobV9j
dXJyZW50Tm9kZS0+b3AoKSkpOwogICAgICAgICAgICAgc2l6ZU1hcmtlciA9IHZtKCkuaml0U2l6
ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgbV9qaXQpOwpAQCAtNDEyMSw4ICs0MTIxLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqIG5v
ZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFu
ZD4gbGVmdDsKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CisgICAgc3RkOjpv
cHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVP
cGVyYW5kPiByaWdodDsKIAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwogICAgIEpTVmFsdWVS
ZWdzIHJpZ2h0UmVnczsKQEAgLTQzMzksOCArNDMzOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAg
IE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFs
dWVPcGVyYW5kPiBsZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0
OwogCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdz
OwpAQCAtNDcwNiw4ICs0NzA2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJ
QyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9k
ZS0+Y2hpbGQyKCk7CiAKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICBP
cHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsK
IAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsK
QEAgLTQ3MjAsMTQgKzQ3MjAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJ
QyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBJ
bnZhbGlkRlBSUmVnOwogCi0gICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVk
c1NjcmF0Y2hGUFJSZWcpIHsKICAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAg
ICAgICBzY3JhdGNoRlBSID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CisgICAgc3Rk
OjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRj
aEdQUlJlZykgewogICAgICAgICBncHJTY3JhdGNoLmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNj
cmF0Y2hHUFIgPSBncHJTY3JhdGNoLT5ncHIoKTsKQEAgLTUzNzYsNyArNTM3Niw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlw
ZW5hbWUgTm9uUmVwYXRjaGluCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5v
ZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgYm9vbCBuZWVkc1Nj
cmF0Y2hHUFJSZWcsIFJlcGF0Y2hpbmdGdW5jdGlvbiByZXBhdGNoaW5nRnVuY3Rpb24sIE5vblJl
cGF0Y2hpbmdGdW5jdGlvbiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiB7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3By
U2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKICAg
ICBpZiAobmVlZHNTY3JhdGNoR1BSUmVnKSB7CiAgICAgICAgIGdwclNjcmF0Y2guZW1wbGFjZSh0
aGlzKTsKICAgICAgICAgc2NyYXRjaEdQUiA9IGdwclNjcmF0Y2gtPmdwcigpOwpAQCAtNTc0MSw4
ICs1NzQxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5v
ZGUpCiAKICAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKIAot
ICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAgIE9wdGlvbmFsPEpTVmFsdWVP
cGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCiAgICAgSlNWYWx1ZVJl
Z3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzOwpAQCAtOTA4Niw3ICs5MDg2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFJlc3RMZW5ndGgoTm9kZSogbm9k
ZSkKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0UG9wdWxhdGVTbGljZUluZGV4KEVkZ2UmIHRhcmdldCwgT3B0aW9u
YWw8R1BSUmVnPiBpbmRleEdQUiwgR1BSUmVnIGxlbmd0aEdQUiwgR1BSUmVnIHJlc3VsdEdQUikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgoRWRnZSYgdGFyZ2V0
LCBzdGQ6Om9wdGlvbmFsPEdQUlJlZz4gaW5kZXhHUFIsIEdQUlJlZyBsZW5ndGhHUFIsIEdQUlJl
ZyByZXN1bHRHUFIpCiB7CiAgICAgaWYgKHRhcmdldC0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAg
ICAgICAgaW50MzJfdCB2YWx1ZSA9IHRhcmdldC0+YXNJbnQzMigpOwpAQCAtOTExMCw3ICs5MTEw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFBvcHVsYXRlU2xpY2VJbmRleChFZGdlJiB0
YXJnZXQsIE9wdGlvbmFsPEdQUlJlZz4gaW5kZXgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4gaW5kZXg7CisgICAgc3RkOjpvcHRp
b25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+IGluZGV4OwogICAgIGlmICghaW5kZXhHUFIpIHsK
ICAgICAgICAgaW5kZXguZW1wbGFjZSh0aGlzLCB0YXJnZXQpOwogICAgICAgICBpbmRleEdQUiA9
IGluZGV4LT5ncHIoKTsKQEAgLTEwMzA2LDcgKzEwMzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICByZWdzLmFwcGVuZChTbmlwcGV0UGFyYW1z
OjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCkpKTsK
IAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CisgICAg
c3RkOjpvcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlm
IChzbmlwcGV0LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9i
amVjdEVkZ2UgPSBub2RlLT5jaGlsZDIoKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LmVtcGxhY2Uo
dGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTJlMWU4Y2Q1MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkx
N2RjODlmMy4uNzRjMTVlNjk3ZTJjYzMyZjZlOWIyZTdjMjVhNmUxOGMxM2Q0MGQ2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTU3MCw3
ICsxNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBH
UFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1p
dEdldENhbGxlZShDb2RlT3JpZ2luLCBHUFJSZWcgY2FsbGVlR1BSKTsKICAgICB2b2lkIGVtaXRH
ZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4sIEdQUlJlZyBzdGFydEdQUik7Ci0gICAgdm9pZCBl
bWl0UG9wdWxhdGVTbGljZUluZGV4KEVkZ2UmLCBPcHRpb25hbDxHUFJSZWc+IGluZGV4R1BSLCBH
UFJSZWcgbGVuZ3RoR1BSLCBHUFJSZWcgcmVzdWx0R1BSKTsKKyAgICB2b2lkIGVtaXRQb3B1bGF0
ZVNsaWNlSW5kZXgoRWRnZSYsIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiBpbmRleEdQUiwgR1BSUmVn
IGxlbmd0aEdQUiwgR1BSUmVnIHJlc3VsdEdQUik7CiAgICAgCiAgICAgLy8gR2VuZXJhdGUgYW4g
T1NSIGV4aXQgZnV6eiBjaGVjay4gUmV0dXJucyBKdW1wKCkgaWYgT1NSIGV4aXQgZnV6eiBpcyBu
b3QgZW5hYmxlZCwgb3IgaWYKICAgICAvLyBpdCdzIGluIHRyYWluaW5nIG1vZGUuCkBAIC0xNzY2
LDcgKzE3NjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBWZWN0b3I8U2xvd1BhdGhMYW1iZGE+
IG1fc2xvd1BhdGhMYW1iZGFzOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuPiBt
X3BsYW5zOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dE9mTGluZVN0cmVhbUluZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXg7CiB9Owog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCmluZGV4IGI1N2MzN2FhMDVkZDQ5MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2Mzku
LmYxMmY4NmYwZDY4OWM1NDYwM2VmMGRmM2MwNzdhMjE0YmUxZjkzMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
NDAwMSw4ICs0MDAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQodGhpcyk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9w
ZXJhbmQ+IGtleUFzQ2VsbDsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFz
VmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFz
Q2VsbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CiAgICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxh
Y2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYz
YmQzYzM4MGZiOGIwMTI2MC4uZWY4YmEzODY4ZTg1ODdjMTRjMzc0MDJiOGJjMzg0MzA5YzgxMjBh
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9Cb29sZWFuKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAgICAgIGJvb2wgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNoOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpIHsKICAgICAgICAgICAgIHNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKQEAgLTIwODcs
NyArMjA4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBGUFJU
ZW1wb3JhcnkgZnByVmFsdWUodGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnByVGVt
cCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNoOwogCiAgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICBib29s
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwpAQCAtMjgzMCw4ICsyODMwLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiByZXN1bHQ7Ci0gICAgICAgICAgICBPcHRpb25h
bDxHUFJSZWc+IHJlc3VsdFJlZzsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiByZXN1bHQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlJlZz4gcmVzdWx0UmVn
OwogICAgICAgICAgICAgaWYgKCFyZXN1bHRJc1VuYm94ZWQpIHsKICAgICAgICAgICAgICAgICBy
ZXN1bHQuZW1wbGFjZSh0aGlzKTsKICAgICAgICAgICAgICAgICByZXN1bHRSZWcgPSByZXN1bHQt
PmdwcigpOwpAQCAtMzI5Niw3ICszMjk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgLy8gV2UgYXJlIGluIGdlbmVyaWMgbW9kZSEKICAg
ICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UpOwogICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgaW5kZXgodGhpcywgaW5kZXhFZGdlKTsKLSAgICAgICAgICAgIE9w
dGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBhcmdzWzJdOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxKU1ZhbHVlT3BlcmFuZD4gYXJnc1syXTsKICAgICAgICAgICAgIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICAgICAgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG51bUV4dHJhQXJnczsgaS0tOykgewpAQCAtNDA3MSw3ICs0MDcxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJS
ZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSBJbnZh
bGlkR1BSUmVnOwotICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXA7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOwogICAgICAgICBpZiAobm9kZS0+c3Ry
dWN0dXJlU2V0KCkuc2l6ZSgpID4gMSkgewogICAgICAgICAgICAgdGVtcC5lbXBsYWNlKHRoaXMp
OwogICAgICAgICAgICAgdGVtcEdQUiA9IHRlbXAtPmdwcigpOwpAQCAtNDUwOSw3ICs0NTA5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjYXNl
IFN0cmluZ1VzZTogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgaW5wdXQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gdGVtcDsKKyAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOwogCiAgICAgICAgICAgICBHUFJSZWcg
dGVtcEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IENlbGxVc2UpIHsKQEAgLTQ5NjgsOCArNDk2OCw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVj
dHVyZUlEKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCi0gICAg
ICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBrZXlBc0NlbGw7Ci0gICAgICAgIE9w
dGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBrZXlBc0NlbGw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CiAgICAgICAgIEdQUlJlZyBrZXlHUFI7CiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewogICAgICAg
ICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKQEAgLTUyNTgs
NyArNTI1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogICAgICAgICBHUFJSZWcgdDIgPSB0ZW1w
Mi5ncHIoKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNM
aXR0bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xl
YW5PcGVyYW5kPiBpc0xpdHRsZUVuZGlhbk9wZXJhbmQ7CiAgICAgICAgIGlmIChub2RlLT5jaGls
ZDMoKSkKICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG5v
ZGUtPmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVnIGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0
bGVFbmRpYW5PcGVyYW5kID8gaXNMaXR0bGVFbmRpYW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRH
UFJSZWc7CkBAIC01NDIyLDEwICs1NDIyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGluZGV4KHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICBHUFJSZWcgaW5kZXhHUFIg
PSBpbmRleC5ncHIoKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9w
ZXJhbmQ+IGludDUyVmFsdWU7Ci0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQ+IGRvdWJsZVZhbHVlOwotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+
IGludDMyVmFsdWU7Ci0gICAgICAgIE9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByVGVtcG9yYXJ5
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZD4gaW50
NTJWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVEb3VibGVPcGVyYW5kPiBk
b3VibGVWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+
IGludDMyVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1w
b3Jhcnk7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
IEZQUlJlZyB2YWx1ZUZQUiA9IEludmFsaWRGUFJSZWc7CiAgICAgICAgIEZQUlJlZyB0ZW1wRlBS
ID0gSW52YWxpZEZQUlJlZzsKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAzKHRoaXMp
OwogICAgICAgICBHUFJSZWcgdDMgPSB0ZW1wMy5ncHIoKTsKIAotICAgICAgICBPcHRpb25hbDxT
cGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiBpc0xpdHRsZUVuZGlhbk9wZXJh
bmQ7CiAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAg
ICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxhY2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAzKSk7CiAgICAgICAgIEdQUlJlZyBpc0xpdHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxl
RW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFuT3BlcmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BS
UmVnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNDBmMTExOTI3M2JkYmUxYTViOTUyMTU4ODVmOTI3NDQw
ZmM5MTEwNy4uNDdkZDE3MTg0YTFlN2UxYTMyNmFjNTg4M2U0MjhlODIyOTI5ZGE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVSZXBVc2UpCiAgICAgICAgICAgICAgICAgJiYg
bV9ub2RlLT5jaGlsZDIoKS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CiAKLSAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uYWw8ZG91YmxlPiByZWNpcHJvY2FsID0gc2FmZVJlY2lwcm9jYWxGb3JEaXZC
eUNvbnN0KG1fbm9kZS0+Y2hpbGQyKCktPmFzTnVtYmVyKCkpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZWNpcHJvY2FsID0gc2FmZVJlY2lwcm9jYWxGb3JE
aXZCeUNvbnN0KG1fbm9kZS0+Y2hpbGQyKCktPmFzTnVtYmVyKCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHJlY2lwcm9jYWxOb2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3Rh
bnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBqc0RvdWJsZU51bWJlcigqcmVjaXByb2Nh
bCksIERvdWJsZUNvbnN0YW50KTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5zZXRPcChB
cml0aE11bCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJl
Y2lwcm9jYWxOb2RlLCBEb3VibGVSZXBVc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggNDM3Y2U1OGFk
MjU2ZDJmNGM4N2JlMTA5NDI3YTc4OTI4ZjMxMDk1YS4uMTE3NmQzZTdhZjI4MzMyYjAzMDc0MWI0
ZDljNDBmMGJlZjFkMDM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC00NTYsNyArNDU2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChibG9jay0+
Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IE9wZXJhbmRzPE9w
dGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyA9IG1fZ3JhcGgubV9wbGFuLm11c3RI
YW5kbGVWYWx1ZXMoKTsKKyAgICAgICAgICAgIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZh
bHVlcygpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXN0SGFuZGxlVmFs
dWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gbXVz
dEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CiAgICAgICAgICAgICAgICAgTm9kZSog
bm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBpZiAoIVR5cGVDaGVjazo6aXNWYWxpZFRvSG9pc3QoaXRlci0+dmFsdWUpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBPcHRpb25hbDxK
U1ZhbHVlPiB2YWx1ZSA9IG11c3RIYW5kbGVWYWx1ZXNbaV07CisgICAgICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxKU1ZhbHVlPiB2YWx1ZSA9IG11c3RIYW5kbGVWYWx1ZXNbaV07CiAgICAgICAg
ICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUudmFsdWUoKSB8fCAhdmFsdWUudmFsdWUoKS5p
c0NlbGwoKSB8fCBUeXBlQ2hlY2s6OmlzQ29udHJhdmVuZWRCeVZhbHVlKGl0ZXItPnZhbHVlLCB2
YWx1ZS52YWx1ZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBUeXBlQ2hlY2s6OmRpc2FibGVI
b2lzdGluZyhpdGVyLT52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKaW5kZXggMGM2NWI5NjA3ZDI5MzVh
ZDAxZTFjYTAxNDc4YTc0NWI3YWE4YTIyNy4uYmRhNjk1OWM4MDNlMWY4N2Y5Y2M2N2RlOTMxMGQ4
NTkxMjIxYTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCkBA
IC0xNjMsMTkgKzE2MywxOSBAQCBSZWdpc3RlclNldCBKSVRDb2RlOjpsaXZlUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvYwogICAgIHJldHVybiB7
IH07CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdm9pZCogcGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6
OmZpbmRQQyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogcGMpCiB7CiAgICAgZm9yIChPU1JF
eGl0JiBleGl0IDogbV9vc3JFeGl0KSB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAgICAgICAg
ICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkudW50YWdnZWRQdHIoKSA8PSBwYyAmJiBwYyA8IGhhbmRs
ZS0+ZW5kKCkudW50YWdnZWRQdHIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8
Q29kZU9yaWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5G
b3JFeGl0UHJvZmlsZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKHN0ZDo6dW5pcXVl
X3B0cjxMYXp5U2xvd1BhdGg+JiBsYXp5U2xvd1BhdGggOiBsYXp5U2xvd1BhdGhzKSB7CiAgICAg
ICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBsYXp5U2xvd1BhdGgtPnN0
dWIoKS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0
KCkudW50YWdnZWRQdHIoKSA8PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5kKCkudW50YWdnZWRQdHIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4oY29kZUJsb2Nr
LT5jb2RlT3JpZ2luKGxhenlTbG93UGF0aC0+Y2FsbFNpdGVJbmRleCgpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4oY29kZUJsb2NrLT5jb2RlT3Jp
Z2luKGxhenlTbG93UGF0aC0+Y2FsbFNpdGVJbmRleCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKaW5kZXggZTdiOGU4YjNjZTRiNDZl
YzMyNWYzNzA0ZTNkZWVjYTA4ZWVkYWIyMy4uMThiOGFjMzNkZmNkMDQ1MzBiNzM4Zjc3Y2I3ZmRj
Njk5ZDE4NTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJl
c2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRl
eCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2Nr
Kiwgdm9pZCogcGMpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmlu
ZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBvdmVycmlkZTsKIAogICAgIENvZGVSZWY8SlNFbnRy
eVB0clRhZz4gYjNDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9iM0NvZGU7IH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEz
ZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li44MzBmYmI4M2VkYTBmNTg1Y2NkNjA1
NzZmYmNmZDYyM2NhNWM1YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xNTg3Miw4ICsxNTg3Miw4IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0Jl
Zm9yZShmYXN0Q2FzZSk7CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXRpY1ZlY3Rv
ckxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXRpY1ZlY3Rvckxlbmd0aEZy
b21QdWJsaWNMZW5ndGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXRpY1Zl
Y3Rvckxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhdGljVmVjdG9y
TGVuZ3RoRnJvbVB1YmxpY0xlbmd0aDsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50UHRy
KCkpIHsKICAgICAgICAgICAgIGlmIChwdWJsaWNMZW5ndGgtPmhhc0ludDMyKCkpIHsKICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBwdWJsaWNMZW5ndGhDb25zdCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwdWJsaWNMZW5ndGgtPmFzSW50MzIoKSk7CkBAIC0xODMwMSw3ICsxODMwMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGpzVmFsdWVUb1N0cmljdEludDUyKGVkZ2UsIGxvd0pTVmFsdWUoZWRn
ZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQ2Vs
bFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBKU1R5cGVSYW5nZSBxdWVyaWVkVHlwZVJhbmdlLCBPcHRp
b25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUg
Y2VsbCwgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGVSYW5nZSwgc3RkOjpvcHRpb25hbDxTcGVjdWxh
dGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQogICAgIHsKICAgICAgICAgaWYgKHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpIHsK
ICAgICAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3Bl
Y0NlbGwsIHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkudmFsdWUoKSkpCkBAIC0xODMyMCw3ICsxODMy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5iZWxvd09yRXF1YWwoZmlyc3Qs
IG1fb3V0LmNvbnN0SW50MzIocXVlcmllZFR5cGVSYW5nZS5sYXN0IC0gcXVlcmllZFR5cGVSYW5n
ZS5maXJzdCkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2Vs
bCwgSlNUeXBlIHF1ZXJpZWRUeXBlLCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExW
YWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlIHF1ZXJpZWRUeXBlLCBzdGQ6
Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5LCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxs
V2l0aFR5cGUoY2VsbCwgSlNUeXBlUmFuZ2UgeyBxdWVyaWVkVHlwZSwgcXVlcmllZFR5cGUgfSwg
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgdHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCAwNDFhY2RmZjc0MTkwMzgxMjY2MzgzMWU5OWVh
NWZmNDg0ODBjYzQwLi42NzQ4ZTZiNzQxNDUyNzE4ZWJkMGNhZDRlNDdmOWNiMzYwNTNiYmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcApAQCAtNjUsMTUgKzY1
LDE1IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIAotICAgIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiB2YWx1ZXM7CisgICAg
T3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4gdmFsdWVzOwogICAgIGRmZ0NvZGUtPnJl
Y29uc3RydWN0KGNhbGxGcmFtZSwgZGZnQ29kZUJsb2NrLCBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpLCBzdHJlYW1JbmRleCwgdmFsdWVzKTsKICAgICAKICAgICBkYXRhTG9nTG5JZihPcHRpb25z
Ojp2ZXJib3NlT1NSKCksICIgICAgVmFsdWVzIGF0IGVudHJ5OiAiLCB2YWx1ZXMpOwogICAgIAot
ICAgIE9wdGlvbmFsPEpTVmFsdWU+IHJlY29uc3RydWN0ZWRUaGlzOworICAgIHN0ZDo6b3B0aW9u
YWw8SlNWYWx1ZT4gcmVjb25zdHJ1Y3RlZFRoaXM7CiAgICAgZm9yIChpbnQgYXJndW1lbnQgPSB2
YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTspIHsKICAgICAgICAgSlNWYWx1
ZSB2YWx1ZU9uU3RhY2sgPSBjYWxsRnJhbWUtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKGFyZ3VtZW50KSkuYXNhblVuc2FmZUpTVmFsdWUoKTsKLSAgICAgICAgT3B0
aW9uYWw8SlNWYWx1ZT4gcmVjb25zdHJ1Y3RlZFZhbHVlID0gdmFsdWVzLmFyZ3VtZW50KGFyZ3Vt
ZW50KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiByZWNvbnN0cnVjdGVkVmFsdWUg
PSB2YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlVG9WYWxpZGF0ZSA9IHJlY29uc3RydWN0ZWRWYWx1ZSA/ICpyZWNvbnN0cnVjdGVk
VmFsdWUgOiB2YWx1ZU9uU3RhY2s7CiAgICAgICAgICAgICBhdXRvIGZsdXNoRm9ybWF0ID0gZW50
cnlDb2RlLT5hcmd1bWVudEZsdXNoRm9ybWF0cygpW2FyZ3VtZW50XTsKQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZm
ZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBmb3IgKGludCBsb2NhbCA9IHZhbHVlcy5u
dW1iZXJPZkxvY2FscygpOyBsb2NhbC0tOykgewotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlPiB2
YWx1ZSA9IHZhbHVlcy5sb2NhbChsb2NhbCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1
ZT4gdmFsdWUgPSB2YWx1ZXMubG9jYWwobG9jYWwpOwogICAgICAgICBpZiAodmFsdWUpCiAgICAg
ICAgICAgICBzY3JhdGNoW2xvY2FsXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZS52YWx1ZSgpKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NS
ZXF1ZXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1JlcXVlc3QuaAppbmRleCBh
OGE1Y2Q2MWYwNjQ0ZjFjNDdiZmIxZWNlYTE2YzBjZGZkODFkNDg4Li4yZTgxYzAyYWFmNTA0ZjVh
MmU4N2Y3ZjE5ZjdjNTk5N2U5OGE0YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1Jl
cXVlc3QuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgR0NSZXF1ZXN0IHsKICAgICB7CiAgICAg
fQogICAgIAotICAgIEdDUmVxdWVzdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQor
ICAgIEdDUmVxdWVzdChzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAg
ICAgIDogc2NvcGUoc2NvcGUpCiAgICAgewogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0
IEdDUmVxdWVzdCB7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCi0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGU7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgp
Pj4gZGlkRmluaXNoRW5kUGhhc2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IDFjOGZiZDk3YWE3NzFjYmM3M2ZmM2Y2NGJhZWNkMGY1OTJiNzdlMTkuLmNiMDc5YmY3
NWExZDc0ODRjOGIyODc3YjQyNDgzNWQ0NjcyYzA5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNv
bnN0IGNoYXIqIG5hbWUsIENvbGxlY3Rpb25TY29wZSBzY29wZSkKIAogY2xhc3MgVGltaW5nU2Nv
cGUgewogcHVibGljOgotICAgIFRpbWluZ1Njb3BlKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
c2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgVGltaW5nU2NvcGUoc3RkOjpvcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IHNjb3BlLCBjb25zdCBjaGFyKiBuYW1lKQogICAgICAgICA6IG1fc2Nv
cGUoc2NvcGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewpAQCAtMjAwLDcgKzIwMCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0U2NvcGUoT3B0aW9u
YWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKKyAgICB2b2lkIHNldFNjb3BlKHN0ZDo6b3B0aW9u
YWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAgICB7CiAgICAgICAgIG1fc2NvcGUgPSBzY29w
ZTsKICAgICB9CkBAIC0yMjEsNyArMjIxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
cHJpdmF0ZToKLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fc2NvcGU7CisgICAgc3Rk
OjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fc2NvcGU7CiAgICAgTW9ub3RvbmljVGltZSBt
X2JlZm9yZTsKICAgICBjb25zdCBjaGFyKiBtX25hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCmluZGV4IDNhZDc4MWFjYzgxOTAwNThiNDAyYTcyMDgzODBkZWM1MDFkYjIzYzEuLmUz
MGRjZGU2NzU4MmY2ZjQxYjIwOTJjZjhhNTEwNzYzM2YyNDRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVP
YnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0
KG9ic2VydmVyKTsgfQogCiAgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9Ci0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBj
b2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQogICAgIGJvb2wgaGFzSGVhcEFjY2VzcygpIGNv
bnN0OwogICAgIGJvb2wgd29ybGRJc1N0b3BwZWQoKSBjb25zdDsKICAgICBib29sIHdvcmxkSXNS
dW5uaW5nKCkgY29uc3QgeyByZXR1cm4gIXdvcmxkSXNTdG9wcGVkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwCmluZGV4IGZlNDQ3ZGY3N2EyMWE2OWM0
OGEzNmQ0ODZhYzI1MjIxODAxOGNjMTYuLjFjMmM4NTZlOTcyODI0NTFkYWFkY2QwNzcwYzNkYmJl
YWRkOTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSGVhcFNuYXBzaG90OjpmaW5hbGl6ZSgpCiAjZW5k
aWYKIH0KIAotT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9y
Q2VsbChKU0NlbGwqIGNlbGwpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBT
bmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChtX2ZpbmFs
aXplZCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBI
ZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICAgICAgICAgIHVuc2ln
bmVkIG1pZGRsZSA9IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKICAgICAgICAgICAgIEhl
YXBTbmFwc2hvdE5vZGUmIG5vZGUgPSBtX25vZGVzW21pZGRsZV07CiAgICAgICAgICAgICBpZiAo
Y2VsbCA9PSBub2RlLmNlbGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBT
bmFwc2hvdE5vZGU+KG5vZGUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgICAgICAgICAgaWYgKGNlbGwgPCBub2RlLmNl
bGwpCiAgICAgICAgICAgICAgICAgZW5kID0gbWlkZGxlOwogICAgICAgICAgICAgZWxzZQpAQCAt
MTU3LDcgKzE1Nyw3IEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6
bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LU9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElk
ZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25l
ZCBvYmplY3RJZGVudGlmaWVyKQogewogICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KG1fcHJldmlvdXMpCkBAIC0xNzYsNyArMTc2LDcgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9k
ZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3QK
IAogICAgIGZvciAoYXV0byYgbm9kZSA6IG1fbm9kZXMpIHsKICAgICAgICAgaWYgKG5vZGUuaWRl
bnRpZmllciA9PSBvYmplY3RJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8SGVhcFNuYXBzaG90Tm9kZT4obm9kZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKaW5kZXggNDUx
NzFhNDNkZTE5YzE5MmZjMGQwYjFlZTg4OGQzOGQ2ZjFhYjU2NC4uM2EyMzFjNzlkNzIwZDMzMTk0
MWZiZTI5NmZlMmNiZjk1NzBjNDcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90LmgKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogICAgIHZvaWQgZmluYWxpemUo
KTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuaXNFbXB0eSgp
OyB9Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckNlbGwoSlNDZWxsKik7
Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvck9iamVjdElkZW50aWZpZXIo
dW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNo
b3ROb2RlPiBub2RlRm9yQ2VsbChKU0NlbGwqKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFw
c2hvdE5vZGU+IG5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdElkZW50aWZp
ZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIZWFwU25hcHNob3RCdWlsZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRT
b2x2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRT
b2x2ZXIuY3BwCmluZGV4IDZjN2ZhNmMwOGZlMDljMGQ4NTk3OThkYWI1ZWNiNGIwMjI1ZTY5ZGEu
LjA2OTBjNjYwNWEwM2Q0ZDU3YzllZTgwNGM2NzNiNDJkMGIzMDg2MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZGlkVmlzaXRT
b21ldGhpbmcoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNYXJraW5nQ29u
c3RyYWludFNvbHZlcjo6ZXhlY3V0ZShTY2hlZHVsZXJQcmVmZXJlbmNlIHByZWZlcmVuY2UsIFNj
b3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25lZD4oKT4gcGlja05leHQpCit2b2lkIE1hcmtpbmdD
b25zdHJhaW50U29sdmVyOjpleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwg
U2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCk+IHBpY2tOZXh0KQogewogICAg
IG1fcGlja05leHRJc1N0aWxsQWN0aXZlID0gdHJ1ZTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9u
dW1UaHJlYWRzVGhhdE1heVByb2R1Y2VXb3JrKTsKQEAgLTg4LDggKzg4LDggQEAgdm9pZCBNYXJr
aW5nQ29uc3RyYWludFNvbHZlcjo6ZHJhaW4oQml0VmVjdG9yJiB1bmV4ZWN1dGVkKQogICAgIGF1
dG8gZW5kID0gdW5leGVjdXRlZC5lbmQoKTsKICAgICBpZiAoaXRlciA9PSBlbmQpCiAgICAgICAg
IHJldHVybjsKLSAgICBhdXRvIHBpY2tOZXh0ID0gc2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2ln
bmVkPigpPigKLSAgICAgICAgWyZdICgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CisgICAgYXV0
byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigpPigKKyAg
ICAgICAgWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgICAgIGlm
IChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgcmV0dXJuICppdGVyKys7CkBAIC0xMjUsOCArMTI1LDggQEAgdm9pZCBNYXJraW5n
Q29uc3RyYWludFNvbHZlcjo6Y29udmVyZ2UoY29uc3QgVmVjdG9yPE1hcmtpbmdDb25zdHJhaW50
Kj4mIG9yZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBp
Y2tOZXh0ID0gc2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPigKLSAgICAgICAgWyZd
ICgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CisgICAgYXV0byBwaWNrTmV4dCA9IHNjb3BlZExh
bWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigpPigKKyAgICAgICAgWyZdICgpIC0+IHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgICAgIGlmIChkaWRWaXNpdFNvbWV0aGluZygp
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjphZGRQYXJhbGxl
bFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvcgogICAgIG1fdG9FeGVjdXRl
SW5QYXJhbGxlbC5hcHBlbmQoVGFza1dpdGhDb25zdHJhaW50KFdURk1vdmUodGFzayksICZjb25z
dHJhaW50KSk7CiB9CiAKLXZvaWQgTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlv
blRocmVhZChTbG90VmlzaXRvciYgdmlzaXRvciwgU2NoZWR1bGVyUHJlZmVyZW5jZSBwcmVmZXJl
bmNlLCBTY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+IHBpY2tOZXh0KQordm9pZCBN
YXJraW5nQ29uc3RyYWludFNvbHZlcjo6cnVuRXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBTY2hlZHVsZXJQcmVmZXJlbmNlIHByZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCkKIHsKICAgICBmb3IgKDs7KSB7CiAgICAg
ICAgIGJvb2wgZG9QYXJhbGxlbFdvcmtNb2RlOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTWFy
a2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRocmVhZChTbG90VmlzaXRvciYgdmlz
aXRvciwgU2NoZWR1bGVyCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gcGlja1Jlc3VsdCA9IHBpY2tO
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBw
aWNrUmVzdWx0ID0gcGlja05leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGlj
a1Jlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGlja05leHRJc1N0aWxs
QWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTb2x2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50
U29sdmVyLmgKaW5kZXggOGU0ZjJmNGRkZjMxY2ZjODA3MWNmM2JlY2I2ZTVlMjc4YWVjYjAxZS4u
ZjYzZjVjNjdhMDI4MmUxZDk1MTAyNmJjM2FhY2E5ZTgxYmQ4NzljNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5oCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgTmV4dENvbnN0cmFpbnRGaXJzdAogICAgIH07
CiAKLSAgICB2b2lkIGV4ZWN1dGUoU2NoZWR1bGVyUHJlZmVyZW5jZSwgU2NvcGVkTGFtYmRhPE9w
dGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCk7CisgICAgdm9pZCBleGVjdXRlKFNjaGVkdWxl
clByZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNr
TmV4dCk7CiAgICAgCiAgICAgdm9pZCBkcmFpbihCaXRWZWN0b3ImIHVuZXhlY3V0ZWQpOwogICAg
IApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQYXJhbGxlbFRhc2soUmVm
UHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4sIE1hcmtpbmdDb25zdHJhaW50Jik7
CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgcnVuRXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9y
JiwgU2NoZWR1bGVyUHJlZmVyZW5jZSwgU2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigp
PiBwaWNrTmV4dCk7CisgICAgdm9pZCBydW5FeGVjdXRpb25UaHJlYWQoU2xvdFZpc2l0b3ImLCBT
Y2hlZHVsZXJQcmVmZXJlbmNlLCBTY29wZWRMYW1iZGE8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4o
KT4gcGlja05leHQpOwogICAgIAogICAgIHN0cnVjdCBUYXNrV2l0aENvbnN0cmFpbnQgewogICAg
ICAgICBUYXNrV2l0aENvbnN0cmFpbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNjVmOGQ2YmYxN2FmMjdiNTU5
ZDViZWYzMDg5NzU3ZmZhODVjNTRkZS4uOGIyOTBmYWViYzE4NjU1MTliMGU3YzUxNGY0OTc1ODVk
ZmMwYmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgSW5qZWN0ZWRTY3JpcHQ6On5JbmplY3Rl
ZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV4ZWN1dGUoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvblN0cmluZywg
RXhlY3V0ZU9wdGlvbnMmJiBvcHRpb25zLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV4ZWN1dGUoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvblN0cmlu
ZywgRXhlY3V0ZU9wdGlvbnMmJiBvcHRpb25zLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6
Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJleGVjdXRl
Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uU3RyaW5nKTsKQEAgLTY5LDcgKzY5LDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXhlY3V0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcs
IGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBn
ZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlv
bmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVS
ZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRS
ZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIl9zLCBpbnNwZWN0b3JFbnZpcm9u
bWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGV4cHJlc3Npb24pOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojph
d2FpdFByb21pc2UoY29uc3QgU3RyaW5nJiBwcm9taXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlW
YQogICAgIG1ha2VBc3luY0NhbGwoZnVuY3Rpb24sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAot
dm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29s
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0
OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxib29sPiYgd2FzVGhyb3duKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3Ms
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3QKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXR1cm5C
eVZhbHVlKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwog
Ci0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBzYXZlZFJlc3VsdEluZGV4OwogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVu
Y3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKICAgICBBU1NFUlQo
IXNhdmVkUmVzdWx0SW5kZXgpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1
ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNh
dmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcywgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5C
eVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29s
PiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNh
bGxGcmFtZXMpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENv
bGxlY3Rpb25FbnRyaWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvCiAg
ICAgZW50cmllcyA9IFByb3RvY29sOjpCaW5kaW5nVHJhaXRzPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+OjpydW50aW1lQ2FzdChyZXN1bHQucmVsZWFz
ZU5vbk51bGwoKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRK
U09OLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlw
dDo6c2F2ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJ
bmRleCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNhdmVSZXN1bHQiX3MsIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
Y2FsbEFyZ3VtZW50SlNPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgKaW5kZXggNTljMDdhMzQxZWFhMjc4OGYzMTg5ZmI2YzM5ZTJmNmI2
MzM4NTljNC4uZTZiMjQ5NjcyNzMwOTVhZTQyNGFjOWIzZmU1ZTA4MWVlODk5OWFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAt
NTksMTIgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBzYXZlUmVzdWx0IHsgZmFsc2Ug
fTsKICAgICAgICAgVmVjdG9yPEpTQzo6SlNWYWx1ZT4gYXJnczsKICAgICB9OwotICAgIHZvaWQg
ZXhlY3V0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uU3Ry
aW5nLCBFeGVjdXRlT3B0aW9ucyYmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYg
c2F2ZWRSZXN1bHRJbmRleCk7CisgICAgdm9pZCBleGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJpbmcsIEV4ZWN1dGVPcHRpb25zJiYsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7
CiAKLSAgICB2b2lkIGV2YWx1YXRlKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJv
b2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVz
dWx0SW5kZXgpOworICAgIHZvaWQgZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJl
dmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlv
bmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOwogICAgIHZvaWQgYXdhaXRQcm9taXNlKGNvbnN0
IFN0cmluZyYgcHJvbWlzZU9iamVjdElkLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJh
dGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIEFzeW5jQ2FsbENhbGxiYWNrJiYpOwotICAgIHZv
aWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBKU0M6OkpTVmFs
dWUgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBz
YXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJ
bmRleCk7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9u
YWw8Ym9vbD4mIHdhc1Rocm93bik7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcm
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUs
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNU
aHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgdm9pZCBj
YWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBi
b29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2Fz
VGhyb3duKTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhQcm90b2NvbDo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6
OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCk7CiAgICAgdm9pZCBmdW5jdGlvbkRldGFpbHMoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVn
Z2VyOjpGdW5jdGlvbkRldGFpbHM+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0UHJldmlldyhQcm90
b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiByZXN1bHQpOwpAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50IGZldGNoU3RhcnQsIGludCBmZXRj
aENvdW50LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0KTsKICAg
ICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGludCBmZXRjaFN0
YXJ0LCBpbnQgZmV0Y2hDb3VudCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRp
bWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKTsKLSAgICB2b2lkIHNhdmVSZXN1bHQoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRKU09OLCBPcHRp
b25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICB2b2lkIHNhdmVSZXN1bHQoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRKU09OLCBzdGQ6Om9w
dGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOwogCiAgICAgUmVmPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhKU0M6OkpTVmFs
dWUpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3
cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCmluZGV4IDE1YjAxNmZjZGI1
MDJkZWQxMzNlNTA3ZjEzMDNjMzc0NGU2N2U4MzQuLmRhN2UwOWNkNzkxOWIwYmJmNjIwNTZjNDdl
YTE5NjU4ZDliODg1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCBSZWY8SlNP
Tjo6VmFsdWU+IEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsJiBmdQogICAgIHJldHVybiByZXN1bHRKU09OVmFsdWUucmVsZWFzZU5vbk51
bGwoKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwmIGZ1bmN0aW9uLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIG91
dF9yZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+JiBvdXRfd2FzVGhyb3duLCBPcHRpb25hbDxp
bnQ+JiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
RXZhbENhbGwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHRPYmplY3QsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93
biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIGNoZWNrQ2Fs
bFJlc3VsdChlcnJvclN0cmluZywgbWFrZUNhbGwoZnVuY3Rpb24pLCBvdXRfcmVzdWx0T2JqZWN0
LCBvdXRfd2FzVGhyb3duLCBvdXRfc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgY2hlY2tDYWxsUmVz
dWx0KGVycm9yU3RyaW5nLCBtYWtlQ2FsbChmdW5jdGlvbiksIHJlc3VsdE9iamVjdCwgd2FzVGhy
b3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1h
a2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgQXN5
bmNDYWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEluamVj
dGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwmIGZ1bmN0aW9uLAogICAgIH0KIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmNoZWNr
Q2FsbFJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiBvdXRfcmVzdWx0T2JqZWN0LCBPcHRpb25hbDxib29sPiYgb3V0X3dhc1Rocm93biwgT3B0aW9u
YWw8aW50PiYgb3V0X3NhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6
Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBl
bXB0eSJfczsKQEAgLTE2MSwyOCArMTYxLDI5IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpj
aGVja0NhbGxSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdE9iamVjdCA9IHJlc3VsdFR1
cGxlLT5nZXRPYmplY3QoInJlc3VsdCJfcyk7Ci0gICAgaWYgKCFyZXN1bHRPYmplY3QpIHsKKyAg
ICBhdXRvIHR5cGVsZXNzUmVzdWx0T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVz
dWx0Il9zKTsKKyAgICBpZiAoIXR5cGVsZXNzUmVzdWx0T2JqZWN0KSB7CisgICAgICAgIC8vIEZJ
WE1FOiBXaHkgZG8gd2UgYm90aGVyIGNoZWNraW5nIGZvciBudWxsIGhlcmUsIGJ1dCBub3QgY2hl
Y2tpbmcgdGhhdCB0aGUgdHlwZSBpcyBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PyBT
dXJlbHkgdGhlIHR3byBwb3NzaWJsZSBlcnJvcnMgZ28gaGFuZCBpbiBoYW5kLgogICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IGlzIG5vdCBhIHBhaXIgb2YgdmFs
dWUgYW5kIHdhc1Rocm93biBmbGFnIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
b3V0X3dhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOwot
ICAgIGlmICghb3V0X3dhc1Rocm93bikgeworICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOworICAgIGlmICghd2FzVGhyb3duKSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2
YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBvdXRfcmVzdWx0T2JqZWN0ID0gUHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJlc3VsdE9iamVjdC5yZWxlYXNlTm9u
TnVsbCgpKTsKLSAgICBvdXRfc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRl
Z2VyKCJzYXZlZFJlc3VsdEluZGV4Il9zKTsKKyAgICByZXN1bHRPYmplY3QgPSBQcm90b2NvbDo6
QmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNh
c3QodHlwZWxlc3NSZXN1bHRPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgc2F2ZWRSZXN1
bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRlZ2VyKCJzYXZlZFJlc3VsdEluZGV4Il9zKTsK
IH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6OmNoZWNrQXN5bmNDYWxsUmVzdWx0KFJlZlB0
cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBjb25zdCBBc3luY0NhbGxDYWxsYmFjayYgY2FsbGJhY2sp
CiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXN1bHRPYmplY3Q7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gd2FzVGhyb3duOwotICAgIE9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gc2F2ZWRSZXN1bHRJbmRleDsKIAogICAgIGNoZWNrQ2FsbFJlc3VsdChlcnJvclN0cmluZywg
cmVzdWx0LCByZXN1bHRPYmplY3QsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oCmluZGV4IGY0ZTZhMGZlZWE0MTFjZDA1ODU5ODRiZDc0YWNjNGIyNGFhOGVkMGYuLjYzNzZi
ZjEzNmNlN2NkMzJjNGIyMzk4NjY0YjA3NjRjNTE0YTY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi11c2luZyBBc3luY0NhbGxDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
JiwgT3B0aW9uYWw8Ym9vbD4mJiwgT3B0aW9uYWw8aW50PiYmKT47Cit1c2luZyBBc3luY0NhbGxD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiwgc3RkOjpvcHRpb25hbDxib29s
PiYmLCBzdGQ6Om9wdGlvbmFsPGludD4mJik+OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgpAQCAtNjgsMTEgKzY4LDExIEBAIHByb3RlY3Rl
ZDoKICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCkgY29uc3Q7CiAgICAgRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4+IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmKSBjb25zdDsKICAgICBSZWY8SlNPTjo6VmFsdWU+IG1ha2VDYWxsKERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxsKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0
cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0T2JqZWN0LCBPcHRpb25h
bDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKKyAg
ICB2b2lkIG1ha2VFdmFsQ2FsbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9w
dGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOwogICAgIHZvaWQgbWFrZUFzeW5jQ2FsbChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBBc3luY0NhbGxDYWxsYmFjayYmKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIGNoZWNrQ2FsbFJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9w
dGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOworICAgIHZvaWQgY2hlY2tDYWxsUmVzdWx0
KFByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpv
cHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0
SW5kZXgpOwogICAgIHZvaWQgY2hlY2tBc3luY0NhbGxSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVl
PiByZXN1bHQsIGNvbnN0IEFzeW5jQ2FsbENhbGxiYWNrJik7CiAKICAgICBTdHJpbmcgbV9uYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKaW5kZXggMmJhMDUzZGI1ODQwZjBhNzlmNWRjZGQ4NjczODAxYzJlNjZlMTA0My4u
NGYzYWQzYjZiMGFhZGYyYjdmMGIzYzlkODdiNmQ0MmYzOGZiZDJlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00
NCwxMiArNDQsMTIgQEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSB3cmFwcGVyKEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICB2b2lkIGNsZWFyQWxsV3JhcHBlcnMoKTsKIAotICAgIHZvaWQg
c2V0U2F2ZWRSZXN1bHRBbGlhcyhjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBhbGlhcykgeyBtX3Nh
dmVkUmVzdWx0QWxpYXMgPSBhbGlhczsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHNh
dmVkUmVzdWx0QWxpYXMoKSBjb25zdCB7IHJldHVybiBtX3NhdmVkUmVzdWx0QWxpYXM7IH0KKyAg
ICB2b2lkIHNldFNhdmVkUmVzdWx0QWxpYXMoY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBh
bGlhcykgeyBtX3NhdmVkUmVzdWx0QWxpYXMgPSBhbGlhczsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiYgc2F2ZWRSZXN1bHRBbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRS
ZXN1bHRBbGlhczsgfQogCiBwcml2YXRlOgogICAgIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3Js
ZCBtX3dyYXBwZXJzOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9zYXZlZFJlc3VsdEFsaWFzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX3NhdmVkUmVzdWx0QWxpYXM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggNDYw
NDZlZGIwMTNiNDcwMDIwMWUyNTMxMjc3YzE1YWY2ODQwMTRlZS4uNDg5NWM1YTcwZDZhNDc0NTU5
N2Y3NzE2M2JjOTJlMDc0NTU5NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAgICAgewogICAgICAgICAvLyBJbiBjYXNlIHRoaXMgaXMgYSByZS1l
bnRyYW50IGNhbGwgZnJvbSBhIG5lc3RlZCBydW4gbG9vcCwgd2UgZG9uJ3Qgd2FudCB0byBsb3Nl
CiAgICAgICAgIC8vIHRoZSBvdXRlciByZXF1ZXN0J3MgaWQganVzdCBiZWNhdXNlIHRoZSBpbm5l
ciByZXF1ZXN0IGlzIGJvZ3VzLgotICAgICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxsb25nPj4g
c2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3Vy
cmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBhdXRvIHBhcnNlZE1lc3Nh
Z2UgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOwogICAgICAgICBpZiAoIXBhcnNl
ZE1lc3NhZ2UpIHsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAgICB7CiAgICAgICAgIC8vIFdlIGNv
dWxkIGJlIGNhbGxlZCByZS1lbnRyYW50bHkgZnJvbSBhIG5lc3RlZCBydW4gbG9vcCwgc28gcmVz
dG9yZSB0aGUgcHJldmlvdXMgaWQuCi0gICAgICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+
PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOworICAgICAg
ICBTZXRGb3JTY29wZTxzdGQ6Om9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJy
ZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOwogCiAgICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBt
ZXNzYWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9kIl9zKTsKICAgICAgICAgaWYgKCFtZXRob2RW
YWx1ZSkgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9y
dFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyCiAgICAg
cmVwb3J0UHJvdG9jb2xFcnJvcihtX2N1cnJlbnRSZXF1ZXN0SWQsIGVycm9yQ29kZSwgZXJyb3JN
ZXNzYWdlKTsKIH0KIAotdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJv
cihPcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6
OnJlcG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElk
LCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2RlID49IDApOwogCkBAIC0zMTMs
MjMgKzMxMywyMyBAQCBUIEJhY2tlbmREaXNwYXRjaGVyOjpnZXRQcm9wZXJ0eVZhbHVlKEpTT046
Ok9iamVjdCogcGFyYW1zLCBjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotT3B0aW9uYWw8Ym9vbD4gQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSlNPTjo6
T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCkKK3N0ZDo6
b3B0aW9uYWw8Ym9vbD4gQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSlNPTjo6T2JqZWN0
KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCkKIHsKLSAgICByZXR1
cm4gZ2V0UHJvcGVydHlWYWx1ZTxPcHRpb25hbDxib29sPj4ocGFyYW1zLCBuYW1lLCByZXF1aXJl
ZCwgJkpTT046OlZhbHVlOjphc0Jvb2xlYW4sICJCb29sZWFuIik7CisgICAgcmV0dXJuIGdldFBy
b3BlcnR5VmFsdWU8c3RkOjpvcHRpb25hbDxib29sPj4ocGFyYW1zLCBuYW1lLCByZXF1aXJlZCwg
JkpTT046OlZhbHVlOjphc0Jvb2xlYW4sICJCb29sZWFuIik7CiB9CiAKLU9wdGlvbmFsPGludD4g
QmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCkKK3N0ZDo6b3B0aW9uYWw8aW50PiBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihKU09OOjpPYmplY3QqIHBhcmFtcywgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIHJlcXVpcmVkKQogewogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xNzk4NDc+IHNpbXBsaWZ5IHRoaXMgd2hlbiBsZWdhY3kgSW5zcGVjdG9yT2JqZWN0IHN5
bWJvbHMgYXJlIG5vIGxvbmdlciBuZWVkZWQuCi0gICAgT3B0aW9uYWw8aW50PiAoSlNPTjo6VmFs
dWU6Oiphc0ludGVnZXIpKCkgY29uc3QgPSAmSlNPTjo6VmFsdWU6OmFzSW50ZWdlcjsKLSAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxPcHRpb25hbDxpbnQ+PihwYXJhbXMsIG5hbWUsIHJlcXVp
cmVkLCBhc0ludGVnZXIsICJJbnRlZ2VyIik7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IChKU09O
OjpWYWx1ZTo6KmFzSW50ZWdlcikoKSBjb25zdCA9ICZKU09OOjpWYWx1ZTo6YXNJbnRlZ2VyOwor
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPHN0ZDo6b3B0aW9uYWw8aW50Pj4ocGFyYW1zLCBu
YW1lLCByZXF1aXJlZCwgYXNJbnRlZ2VyLCAiSW50ZWdlciIpOwogfQogCi1PcHRpb25hbDxkb3Vi
bGU+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUoSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCkKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEpTT046Ok9iamVjdCogcGFyYW1zLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpCiB7CiAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzE3OTg0Nz4gc2ltcGxpZnkgdGhpcyB3aGVuIGxlZ2FjeSBJbnNwZWN0b3JPYmpl
Y3Qgc3ltYm9scyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICBPcHRpb25hbDxkb3VibGU+IChK
U09OOjpWYWx1ZTo6KmFzRG91YmxlKSgpIGNvbnN0ID0gJkpTT046OlZhbHVlOjphc0RvdWJsZTsK
LSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxPcHRpb25hbDxkb3VibGU+PihwYXJhbXMsIG5h
bWUsIHJlcXVpcmVkLCBhc0RvdWJsZSwgIk51bWJlciIpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiAoSlNPTjo6VmFsdWU6Oiphc0RvdWJsZSkoKSBjb25zdCA9ICZKU09OOjpWYWx1ZTo6YXNE
b3VibGU7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8c3RkOjpvcHRpb25hbDxkb3VibGU+
PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCBhc0RvdWJsZSwgIk51bWJlciIpOwogfQogCiBTdHJp
bmcgQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhKU09OOjpPYmplY3QqIHBhcmFtcywgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmlu
ZGV4IDIxN2IzMTkzZTU4ZjNmMTFjZGE2ZTY4YTgyOWE5YjhhOWMxMDFmNjAuLjIzODIwMzQwZWFk
MDU2MTY4OGFhMDI4ZGJhODkyYjU0MzExODliOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgK
QEAgLTk2LDExICs5NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kUGVuZGluZ0Vycm9ycygp
OwogCiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKENvbW1vbkVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihPcHRp
b25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRp
b25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGdldEJvb2xlYW4oSlNPTjo6
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsKLSAgICBPcHRpb25h
bDxpbnQ+IGdldEludGVnZXIoSlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IHJlcXVpcmVkKTsKLSAgICBPcHRpb25hbDxkb3VibGU+IGdldERvdWJsZShKU09OOjpPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gZ2V0Qm9vbGVhbihKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
cmVxdWlyZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBnZXRJbnRlZ2VyKEpTT046Ok9iamVj
dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGdldERvdWJsZShKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgcmVxdWlyZWQpOwogICAgIFN0cmluZyBnZXRTdHJpbmcoSlNPTjo6T2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IGdl
dFZhbHVlKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7
CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gZ2V0T2JqZWN0KEpTT046Ok9iamVjdCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIEZvciBzeW5jaHJvbm91c2x5IGhhbmRsZWQgcmVxdWVzdHMsIGF2b2lkIHBs
dW1iaW5nIHJlcXVlc3RJZCB0aHJvdWdoIGV2ZXJ5CiAgICAgLy8gY2FsbCB0aGF0IGNvdWxkIHBv
dGVudGlhbGx5IGZhaWwgd2l0aCBhIHByb3RvY29sIGVycm9yLgotICAgIE9wdGlvbmFsPGxvbmc+
IG1fY3VycmVudFJlcXVlc3RJZCB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8
bG9uZz4gbV9jdXJyZW50UmVxdWVzdElkIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggYzc2ZjFm
MjA2M2NiNWU5MDBjZGIzMjQ3OTUwMDEzZmQwOWNlNjYwYi4uMzBhY2FmMzM0NTgwNTM3NGQ4MWRi
YjBiMWM1ZDQ5ZmY3YWYwYTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogewogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50OjpzZXR1cChPcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKK1Byb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKHN0ZDo6
b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRp
b25Db250ZXh0SWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwog
CkBAIC04NCw3ICs4NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ckF1ZGl0QWdlbnQ6OnNldHVwKE9wdGlvbmFsPFByb3RvY29sOjpSdW50CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+
IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihjb25zdCBTdHJpbmcmIHRlc3QsIE9wdGlvbmFsPFBy
b3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElk
KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4g
SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKGNvbnN0IFN0cmluZyYgdGVzdCwgc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEw
MCw4ICsxMDAsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgICAgICBvcHRpb25zLmFy
Z3MgPSB7IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmdldCgpIH07CiAKICAgICBS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzdWx0OwotICAgIE9wdGlv
bmFsPGJvb2w+IHdhc1Rocm93bjsKLSAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNUaHJvd247CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKICAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURp
c2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVh
a3BvaW50cyhtX2RlYnVnZ2VyKTsKICAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVh
a3BvaW50cy5yZXBsYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKaW5kZXggYmY1MDZjMzZk
MmRmZjNmNmZjYTU5OWY2N2U1ODU0YTI2OGE3YjFkNS4uZDgyOGI5YmNmM2Q0MWRkZDY0MTg1YzQ1
M2I2ZjIxZWVhZDU3NzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApAQCAtNTIsOCArNTIs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uKSBmaW5hbDsKIAogICAgIC8vIEF1ZGl0QmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyCi0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0dXAoT3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7Ci0gICAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IHJ1bihjb25zdCBTdHJp
bmcmIHRlc3QsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+
JiYpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldHVwKHN0ZDo6
b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7
CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICov
Pj4gcnVuKGNvbnN0IFN0cmluZyYgdGVzdCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGlt
ZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiB0ZWFyZG93bigpIGZpbmFsOwogCiAgICAgYm9vbCBoYXNBY3RpdmVBdWRpdCgp
IGNvbnN0OwpAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGlt
ZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRp
b25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVBdWRpdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mIGF1ZGl0T2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMmQ5NDQzZDVjYWI5ZDQ1MmYzYjBmMWZkNDFjNTdh
YTBlZDkyOWU0Li5iZTkxMGViMjgyZWU1M2U3ZjM1ZjZiMDNhNjY5YzU5Mzk3YzFkOGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMg
Ym9vbCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogICAg
IHJldHVybiBzb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBzb3Vy
Y2VVUkwuZW5kc1dpdGgoIi5qcyIpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SlNDOjpCcmVha3Bv
aW50OjpBY3Rpb246OlR5cGU+IGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKFByb3RvY29s
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlPiBicmVha3Bv
aW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiB7CiAgICAgYXV0byB0eXBlID0gUHJvdG9jb2w6
OkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRBY3Rpb246OlR5cGU+KHR5cGVTdHJpbmcpOwogICAgIGlmICghdHlwZSkgewpAQCAt
MTQ0LDE2ICsxNDQsMTYgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICByZXR1cm4gY2Fs
bGJhY2soY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNv
dW50KTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVh
a3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21Q
YXlsb2FkKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6U291cmNlSUQg
c291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlBy
b3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5z
aWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpCiB7Ci0g
ICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8T3B0aW9uYWw8UHJvdG9jb2xCcmVha3Bv
aW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUob3B0aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBj
b25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wg
YXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJl
YWtwb2ludD4geworICAgIHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPHN0ZDo6b3B0aW9u
YWw8UHJvdG9jb2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUob3B0aW9ucyksIFsm
XSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3Rv
ciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiB7CiAgICAgICAgIHJldHVybiBQcm90b2Nv
bEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9u
LCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKICAgICB9KTsK
IH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2Fk
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBi
b29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9w
dGlvbnMpCiB7Ci0gICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8T3B0aW9uYWw8UHJv
dG9jb2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUob3B0aW9ucyksIFsmXSAoY29u
c3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFj
dGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFs
PFByb3RvY29sQnJlYWtwb2ludD4geworICAgIHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25z
PHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUo
b3B0aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6
QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3Jl
Q291bnQpIC0+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiB7CiAgICAgICAgIHJl
dHVybiBQcm90b2NvbEJyZWFrcG9pbnQodXJsLCBpc1JlZ2V4LCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVD
b3VudCk7CiAgICAgfSk7CiB9CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjppbnRlcm5hbEVuYWJsZSgpCiAgICAgICAgIGxpc3RlbmVyLT5kZWJ1Z2dlcldh
c0VuYWJsZWQoKTsKIAogICAgIGZvciAoYXV0byYgW3NvdXJjZUlELCBzY3JpcHRdIDogbV9zY3Jp
cHRzKSB7Ci0gICAgICAgIE9wdGlvbmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4gYmxh
Y2tib3hUeXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94
VHlwZT4gYmxhY2tib3hUeXBlOwogICAgICAgICBpZiAoaXNXZWJLaXRJbmplY3RlZFNjcmlwdChz
Y3JpcHQuc291cmNlVVJMKSkgewogICAgICAgICAgICAgaWYgKCFtX3BhdXNlRm9ySW50ZXJuYWxT
Y3JpcHRzKQogICAgICAgICAgICAgICAgIGJsYWNrYm94VHlwZSA9IEpTQzo6RGVidWdnZXI6OkJs
YWNrYm94VHlwZTo6SWdub3JlZDsKQEAgLTUzOSw3ICs1MzksNyBAQCBzdGF0aWMgYm9vbCBwYXJz
ZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iamVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxz
dGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50QnlVcmwoaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBPcHRpb25hbDxpbnQ+JiYgY29sdW1uTnVtYmVyLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxz
dGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50QnlVcmwoaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBjb2x1bW5OdW1i
ZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykKIHsKICAgICBpZiAoIXVybCA9PSAh
dXJsUmVnZXgpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiRWl0aGVyIHVybCBvciB1
cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZCJfcyk7CkBAIC03MjgsNyArNzI4LDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKFJlZjxKU08KICAgICByZXR1cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoY29uc3QgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpTY3JpcHRJZCYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnks
IE9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4
KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6Okdl
bmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNo
SW5Db250ZW50KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmIHNjcmlwdElkLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwg
c3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgpCiB7CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0
cy5maW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNj
cmlwdElkKS52YWx1ZV9vcigwKSk7CiAgICAgaWYgKGl0ID09IG1fc2NyaXB0cy5lbmQoKSkKQEAg
LTk5Miw3ICs5OTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWljcm90YXNrcyhib29sCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0
aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0
aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlv
bmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZp
ZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiAgLyogZW11
bGF0ZVVzZXJHZXN0dXJlICovKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Lyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAq
Lz4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVy
bkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgIC8qIGVtdWxh
dGVVc2VyR2VzdHVyZSAqLykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJp
bmc7CiAKQEAgLTEwMTIsOCArMTAxMiw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6
dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hCiAgICAg
fQogCiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdDsK
LSAgICBPcHRpb25hbDxib29sPiB3YXNUaHJvd247Ci0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJl
c3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2FzVGhyb3duOworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZh
bHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLmdldCgpLCBj
YWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SS52YWx1ZV9vcihmYWxzZSksIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0
ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgcmVz
dWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogCkBAIC0xMDI2LDcgKzEwMjYsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgIHJldHVybiB7IHsgcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUod2FzVGhyb3duKSwgV1RGTW92ZShzYXZlZFJlc3VsdEluZGV4KSB9
IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldFNob3VsZEJsYWNrYm94VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHNob3Vs
ZEJsYWNrYm94LCBPcHRpb25hbDxib29sPiYmIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgT3B0aW9u
YWw8Ym9vbD4mJiBvcHRpb25hbElzUmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTaG91bGRCbGFja2JveFVSTChjb25zdCBTdHJp
bmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgc3RkOjpvcHRpb25hbDxib29sPiYmIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIG9wdGlvbmFsSXNSZWdleCkK
IHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJVUkwgbXVzdCBub3QgYmUgZW1wdHkiX3MpOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2hvdWxk
QmxhY2tib3hVUkwoY29uc3QKICAgICAgICAgaWYgKGlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoc2Ny
aXB0LnNvdXJjZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPcHRpb25h
bDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+IGJsYWNrYm94VHlwZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+IGJsYWNrYm94VHlwZTsKICAg
ICAgICAgaWYgKHNob3VsZEJsYWNrYm94VVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IHNob3VsZEJs
YWNrYm94VVJMKHNjcmlwdC51cmwpKQogICAgICAgICAgICAgYmxhY2tib3hUeXBlID0gSlNDOjpE
ZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpEZWZlcnJlZDsKICAgICAgICAgbV9kZWJ1Z2dlci5zZXRC
bGFja2JveFR5cGUoc291cmNlSUQsIGJsYWNrYm94VHlwZSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogCiAgICAgbV9wYXVzZUZvckludGVybmFsU2NyaXB0
cyA9IHNob3VsZFBhdXNlOwogCi0gICAgYXV0byBibGFja2JveFR5cGUgPSAhbV9wYXVzZUZvcklu
dGVybmFsU2NyaXB0cyA/IE9wdGlvbmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4oSlND
OjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25vcmVkKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBh
dXRvIGJsYWNrYm94VHlwZSA9ICFtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzID8gc3RkOjpvcHRp
b25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+KEpTQzo6RGVidWdnZXI6OkJsYWNrYm94
VHlwZTo6SWdub3JlZCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvJiBbc291cmNlSUQs
IHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAgaWYgKCFpc1dlYktpdEluamVjdGVkU2Ny
aXB0KHNjcmlwdC5zb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggZmY2ZjE0NGI1MzhmZWIzZTBiYWE5YWRmYWU3MGZlZGI1
NTc0YTUxNC4uNDM4ZGEzNjEyNDQ5ZDc0MTQxMjNhNTc3Y2I2NGM5MGRkNzIyZjgxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGlzYWJsZSgpIGZpbmFsOwogICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKGludCkgZmlu
YWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QnJlYWtwb2ludHNBY3Rp
dmUoYm9vbCkgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+Pj4gc2V0QnJlYWtwb2ludEJ5VXJsKGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB1cmxSZWdleCwgT3B0aW9uYWw8
aW50PiYmIGNvbHVtbk51bWJlciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5h
bDsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uPj4+PiBzZXRCcmVha3BvaW50QnlVcmwoaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBj
b2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykgZmluYWw7CiAgICAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCwgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+Pj4gc2V0QnJlYWtw
b2ludChSZWY8SlNPTjo6T2JqZWN0PiYmIGxvY2F0aW9uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG9wdGlvbnMpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbW92
ZUJyZWFrcG9pbnQoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmKSBmaW5h
bDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBjb250aW51ZVVudGlsTmV4dFJ1
bkxvb3AoKSBmaW5hbDsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IHN0ZXBPdXQoKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBwYXVzZSgpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IHJlc3VtZSgpIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxK
U09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+IHNlYXJj
aEluQ29udGVudChjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29s
PiYmIGlzUmVnZXgpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+IHNlYXJjaElu
Q29udGVudChjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElkJiwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxT
dHJpbmc+IGdldFNjcmlwdFNvdXJjZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElk
JikgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPj4gZ2V0RnVuY3Rpb25EZXRhaWxzKGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25JZCkgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhib29sIGVuYWJsZWQsIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+JiYgb3B0aW9ucykgZmluYWw7CkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRQYXVzZU9uQXNzZXJ0aW9ucyhib29sIGVuYWJs
ZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykgZmluYWw7CiAgICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0UGF1c2VPbk1pY3JvdGFza3MoYm9vbCBlbmFibGVkLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IHNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKGJvb2wgc2hvdWxkUGF1
c2UpIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJv
d24gKi8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlT25D
YWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9uYWw8Ym9v
bD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUs
IE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVS
ZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsKLSAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRTaG91bGRCbGFja2JveFVSTChjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNl
U2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpIGZpbmFsOworICAgIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25h
bDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBldmFsdWF0ZU9uQ2FsbEZyYW1lKGNvbnN0
IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVy
ZSkgb3ZlcnJpZGU7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hvdWxk
QmxhY2tib3hVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQmxhY2tib3gsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNS
ZWdleCkgZmluYWw7CiAKICAgICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKICAgICBKU0M6OkpT
T2JqZWN0KiBkZWJ1Z2dlclNjb3BlRXh0ZW5zaW9uT2JqZWN0KEpTQzo6RGVidWdnZXImLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYpIGZpbmFsOwpAQCAtMTUy
LDcgKzE1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJuYWxEaXNhYmxl
KGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOyB9Ci0gICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1
dGlvbkNvbnRleHRJZD4mJikgPSAwOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOwogCiAgICAgSlNDOjpE
ZWJ1Z2dlciYgZGVidWdnZXIoKSB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CiAKQEAgLTE3Miw4ICsx
NzIsOCBAQCBwcml2YXRlOgogICAgIGNsYXNzIFByb3RvY29sQnJlYWtwb2ludCB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIE9w
dGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gZnJvbVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiwgSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMgPSBudWxscHRyKTsKLSAgICAg
ICAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gZnJvbVBheWxvYWQoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWdu
ZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIG9wdGlvbnMgPSBudWxscHRyKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJv
dG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBKU0M6
OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucyA9IG51bGxwdHIpOworICAgICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IGZyb21QYXlsb2FkKFByb3RvY29sOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBv
cHRpb25zID0gbnVsbHB0cik7CiAKICAgICAgICAgUHJvdG9jb2xCcmVha3BvaW50KCk7CiAgICAg
ICAgIFByb3RvY29sQnJlYWtwb2ludChKU0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uID0gbnVsbFN0
cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zID0geyB9LCBi
b29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKQEAgLTI2
OSw3ICsyNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG1fcHJlQmxh
Y2tib3hQYXVzZURhdGE7CiAKICAgICBIYXNoTWFwPEFzeW5jQ2FsbElkZW50aWZpZXIsIFJlZlB0
cjxBc3luY1N0YWNrVHJhY2U+PiBtX3BlbmRpbmdBc3luY0NhbGxzOwotICAgIE9wdGlvbmFsPEFz
eW5jQ2FsbElkZW50aWZpZXI+IG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxBc3luY0NhbGxJZGVudGlmaWVyPiBtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlm
aWVyOwogICAgIGludCBtX2FzeW5jU3RhY2tUcmFjZURlcHRoIHsgMCB9OwogCiAgICAgUmVmUHRy
PEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9pbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50LmNwcAppbmRleCBjZjJjZDhmZmM5ZTg5MTVhODRiMTY4OTM4MzdkMmU5YmU5
ZTc0OTc4Li43NjAzMDQxMDIyM2U3MjI4NTg3YTlmZTI4YTVlOWNiNTRlNjVkMDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JIZWFwQWdlbnQ6OnN0b3BUcmFja2luZygpCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFn
ZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFs
PEhlYXBTbmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJ
ZGVudGlmaWVyKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGhl
YXBPYmplY3RJZGVudGlmaWVyKQogewogICAgIEhlYXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0g
bV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxlcigpOwogICAgIGlmICghaGVhcFByb2ZpbGVy
KSB7CkBAIC0xNjYsNyArMTY2LDcgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVj
dG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG8KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFwc2hvdC0+bm9kZUZvck9iamVjdElkZW50aWZp
ZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gc25hcHNob3QtPm5vZGVGb3JPYmplY3RJZGVudGlm
aWVyKGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAgICBpZiAoIW9wdGlvbmFsTm9kZSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJObyBvYmplY3QgZm9yIGlkZW50aWZpZXIsIGl0IG1heSBoYXZl
IGJlZW4gY29sbGVjdGVkIl9zOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg1
LDcgKzE4NSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8U3RyaW5nLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRlCiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwogCiAgICAgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaGVhcE9iamVjdElkKTsKLSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoZXJy
b3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRp
ZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9u
YWxOb2RlKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCkBA
IC0yMzUsNyArMjM1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JIZWFwQWdlbnQKICAgICBEZWZlckdDIGRl
ZmVyR0Modm0uaGVhcCk7CiAKICAgICB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllciA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwT2JqZWN0SWQpOwotICAgIGNvbnN0IE9wdGlvbmFsPEhl
YXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmll
cihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJ
ZGVudGlmaWVyKGVycm9yU3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFv
cHRpb25hbE5vZGUpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKaW5kZXggY2FhNTEyZDBhYjJlMTBhODhlMGVlNjBjMmUz
MmQ3NDM5NDIyMjdhZC4uYTU0NzEzNWQ3ODFkM2M2MmE0NGE2MGJiMDQ5MTljMjA4MmExOWI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdhcmJhZ2VDb2xsZWN0ZWRFdmVudChQcm90b2NvbDo6SGVh
cDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUsIFNlY29uZHMgc3RhcnRUaW1lLCBTZWNvbmRzIGVu
ZFRpbWUpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9kZT4g
bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHVuc2ln
bmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTQzo6SGVhcFNu
YXBzaG90Tm9kZT4gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKFByb3RvY29sOjpFcnJvclN0
cmluZyYsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKIAogICAgIEluamVjdGVkU2Ny
aXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhlYXBGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMDRkMmYzMWY5MzE2YWM0ODI2MTU3MmFkYzY5ZDAx
YTdiNjY0OGQ5YS4uNzZkNzJjNzI3M2YxYmIyMTcwNDg1MDE1ZDkzMWIxZmJhOTJkM2I1YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9y
VHlwZSwgU3RyaW5nIC8qCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgY2hlY2tTeW50YXgo
bV92bSwgSlNDOjptYWtlU291cmNlKGV4cHJlc3Npb24sIHsgfSksIGVycm9yKTsKIAotICAgIE9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU+IHJlc3VsdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU+IHJlc3VsdDsK
ICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9y
UmFuZ2U+IHJhbmdlOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlLCBTdHJpbmcg
LyoKICAgICByZXR1cm4geyB7ICpyZXN1bHQsIG1lc3NhZ2UsIFdURk1vdmUocmFuZ2UpIH0gfTsK
IH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0
aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBPcHRpb25hbDxi
b29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgT3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQs
IE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0
ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiAv
KiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1
cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxi
b29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdElu
ZGV4ICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQ
cmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEzMCw4ICsxMzAsOCBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
T3B0aW9uYQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCiAg
ICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdDsKLSAgICBP
cHRpb25hbDxib29sPiB3YXNUaHJvd247Ci0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdElu
ZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2FzVGhyb3duOworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCiAgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJp
bHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9u
QnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiwgT3B0aW9uYQogICAgIHJldHVybiB7IHtyZXN1bHQucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZSh3YXNUaHJvd24pLCBXVEZNb3ZlKHNhdmVkUmVzdWx0SW5kZXgpIH0gfTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0SWQmIHByb21pc2VPYmplY3RJZCwgT3B0aW9uYWw8Ym9vbD4mJiBy
ZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgT3B0aW9uYWw8
Ym9vbD4mJiBzYXZlUmVzdWx0LCBSZWY8QXdhaXRQcm9taXNlQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
Cit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6YXdhaXRQcm9taXNlKGNvbnN0IFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgcHJvbWlzZU9iamVjdElkLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJl
dmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIFJlZjxBd2FpdFByb21pc2VD
YWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQocHJv
bWlzZU9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBA
IC0xNjAsNyArMTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlz
ZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGluamVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0
SWQsIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVf
b3IoZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+
JiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJbmRleCkgeworICAgIGlu
amVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUu
dmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVz
dWx0LnZhbHVlX29yKGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChQcm90
b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiB3YXNUaHJvd24s
IHN0ZDo6b3B0aW9uYWw8aW50PiYmIHNhdmVkUmVzdWx0SW5kZXgpIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3JTdHJpbmcpOwog
ICAgICAgICBlbHNlCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQK
ICAgICB9KTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93
biAqLz4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBmdW5j
dGlvbkRlY2xhcmF0aW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBPcHRpb25h
bDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgT3B0aW9uYWw8
Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywg
T3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRy
PEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVy
bkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCiB7CiAgICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0xNzcsNyArMTc3LDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4sIE9wdGlvbmEKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGlu
amVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3MpOwogCiAgICAgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdDsKLSAgICBPcHRpb25hbDxib29sPiB3
YXNUaHJvd247CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNUaHJvd247CiAKICAgICBKU0M6
OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3Jh
cmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKIApAQCAtMjIzLDcg
KzIyMyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6
T2JqZWN0UHJldmlldz4+IEluc3BlY3RvclJ1bnRpbWVBCiAgICAgcmV0dXJuIHByZXZpZXcucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4s
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+Pj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKGNvbnN0
IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIE9wdGlvbmFsPGJv
b2w+JiYgb3duUHJvcGVydGllcywgT3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFs
PGludD4mJiBmZXRjaENvdW50LCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykKK1By
b3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pj4+IEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0SWQmIG9iamVjdElkLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3duUHJvcGVydGll
cywgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYg
ZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTI2MSw3ICsyNjEsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIHJldHVybiB7IHsgcHJvcGVydGllcy5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUHJvcGVydGllcykgfSB9OwogfQogCi1Qcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhjb25zdCBQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFy
dCwgT3B0aW9uYWw8aW50PiYmIGZldGNoQ291bnQsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQ
cmV2aWV3KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
Pj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoY29uc3Qg
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgc3RkOjpvcHRpb25h
bDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykKIHsKICAgICBQcm90b2NvbDo6RXJy
b3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1l
OjpQcm9wZXJ0eQogICAgIHJldHVybiB7IHsgcHJvcGVydGllcy5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKGludGVybmFsUHJvcGVydGllcykgfSB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5
Pj4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoY29uc3QgUHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgT3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBm
ZXRjaENvdW50KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OmdldENvbGxlY3Rpb25FbnRyaWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8
aW50PiYmIGZldGNoU3RhcnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZldGNoQ291bnQpCiB7CiAg
ICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0zMjUsNyArMzI1LDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+PgogICAgIHJldHVybiBlbnRyaWVzLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPE9wdGlvbmFsPGludD4gLyogc2F2
ZVJlc3VsdEluZGV4ICovPiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoUmVmPEpT
T046Ok9iamVjdD4mJiBjYWxsQXJndW1lbnQsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVSZXN1bHRJbmRleCAqLz4gSW5zcGVj
dG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KFJlZjxKU09OOjpPYmplY3Q+JiYgY2FsbEFyZ3Vt
ZW50LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+
JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJv
clN0cmluZzsKIApAQCAtMzQyLDcgKzM0Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPE9w
dGlvbmFsPGludD4gLyogc2F2ZVJlc3VsdEluZGV4ICovPiBJbnNwZWN0b3JSdW50aW1lQWdlCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0
IGZvciBnaXZlbiBvYmplY3RJZCJfcyk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBzYXZl
ZFJlc3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4Owog
CiAgICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJlc3VsdChlcnJvclN0cmluZywgY2FsbEFyZ3VtZW50
LT50b0pTT05TdHJpbmcoKSwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKaW5kZXggZjQwMjk0NmZmNmRhYTg4YzQ4NWQwOTdhYWM2MWMxZDllYmZjMDlhYS4u
YzRmNmZhNWI5ZGU1NDMxN2RhMDdjMjM3MWE3MTI2YWFlMWM5NjdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKQEAgLTYwLDE1ICs2MCwxNSBAQCBwdWJsaWM6CiAgICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCkgb3ZlcnJpZGU7CiAgICAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gZGlzYWJsZSgpIG92ZXJyaWRlOwogICAgIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSwg
U3RyaW5nIC8qIG1lc3NhZ2UgKi8sIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5n
ZT4+PiBwYXJzZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pIGZpbmFsOwotICAgIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIE9wdGlvbmFsPGludD4gLyog
c2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
LCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJh
dGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYg
ZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsKLSAgICB2b2lkIGF3YWl0UHJvbWlzZShjb25z
dCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmLCBPcHRpb25hbDxib29sPiYmIHJl
dHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxi
b29sPiYmIHNhdmVSZXN1bHQsIFJlZjxBd2FpdFByb21pc2VDYWxsYmFjaz4mJikgZmluYWw7Ci0g
ICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IGNhbGxG
dW5jdGlvbk9uKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3Vt
ZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5l
cmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlk
ZTsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24g
Ki8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGUo
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFs
PFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2
aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhd2FpdFByb21pc2Uo
Y29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZp
ZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBSZWY8QXdhaXRQcm9taXNlQ2Fs
bGJhY2s+JiYpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8
UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IC8qIHdhc1Rocm93biAqLz4+IGNhbGxGdW5jdGlvbk9uKGNvbnN0IFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3RJZCYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVm
UHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJl
dHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpIG92ZXJyaWRlOwogICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbGVhc2VPYmplY3QoY29uc3QgUHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdElkJikgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpPYmplY3RQcmV2aWV3Pj4gZ2V0UHJldmlldyhjb25z
dCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmKSBmaW5hbDsKLSAgICBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4+PiBnZXRQcm9wZXJ0aWVz
KGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIE9wdGlvbmFsPGJvb2w+
JiYgb3duUHJvcGVydGllcywgT3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGlu
dD4mJiBmZXRjaENvdW50LCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykgZmluYWw7
Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4g
Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3RJZCYsIE9wdGlvbmFsPGludD4mJiBmZXRjaFN0YXJ0LCBPcHRpb25hbDxpbnQ+JiYgZmV0
Y2hDb3VudCwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcpIGZpbmFsOwotICAgIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1l
OjpDb2xsZWN0aW9uRW50cnk+Pj4gZ2V0Q29sbGVjdGlvbkVudHJpZXMoY29uc3QgUHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0
aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50KSBmaW5h
bDsKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxPcHRpb25hbDxpbnQ+IC8qIHNhdmVSZXN1
bHRJbmRleCAqLz4gc2F2ZVJlc3VsdChSZWY8SlNPTjo6T2JqZWN0PiYmIGNhbGxBcmd1bWVudCwg
T3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7
CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlP
ZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4g
Z2V0UHJvcGVydGllcyhjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3duUHJvcGVydGllcywgc3RkOjpvcHRpb25hbDxpbnQ+JiYg
ZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGdlbmVyYXRlUHJldmlldykgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1l
OjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVz
KGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIHN0ZDo6b3B0aW9uYWw8
aW50PiYmIGZldGNoU3RhcnQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZldGNoQ291bnQsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcpIGZpbmFsOworICAgIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0
aW9uRW50cnk+Pj4gZ2V0Q29sbGVjdGlvbkVudHJpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25h
bDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCkgZmlu
YWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNh
dmVSZXN1bHRJbmRleCAqLz4gc2F2ZVJlc3VsdChSZWY8SlNPTjo6T2JqZWN0PiYmIGNhbGxBcmd1
bWVudCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElk
PiYmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRTYXZlZFJl
c3VsdEFsaWFzKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IHJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGlt
ZTo6VHlwZURlc2NyaXB0aW9uPj4+IGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0
cyhSZWY8SlNPTjo6QXJyYXk+JiYgbG9jYXRpb25zKSBmaW5hbDsKQEAgLTgzLDcgKzgzLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogCi0gICAgdmlydHVh
bCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikg
PSAwOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFBy
b3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xl
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCBiNzhlM2E1MGQ2N2FlMGY0
ZjgyYzZmNDRlNWQ4YjFmN2NkZTE1NzIxLi43MTRhY2E0NzcyMmI3ZDlhNGQ1YThmOTE0ZTcyZjU5
ZTZjNDg5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzbwogICAgIH0KIH0KIAot
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2Vu
dDo6c3RhcnRUcmFja2luZyhPcHRpb25hbDxib29sPiYmIGluY2x1ZGVTYW1wbGVzKQorUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3Rh
cnRUcmFja2luZyhzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZVNhbXBsZXMpCiB7CiAgICAg
aWYgKG1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmgKaW5kZXggMzM2MTVmMmQ3N2IyNTBiODAzZjVjYjdiZDU4NjBk
Y2VjYzE2MGVkNC4uZTk3MGZlNjZmNDI1Zjc4NmExYmU0ZmY5MDM5YmU5ODY3YmVkZmU1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25u
ZWN0UmVhc29uKSBmaW5hbDsKIAogICAgIC8vIFNjcmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyCi0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnRUcmFja2lu
ZyhPcHRpb25hbDxib29sPiYmIGluY2x1ZGVTYW1wbGVzKSBmaW5hbDsKKyAgICBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFRyYWNraW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBp
bmNsdWRlU2FtcGxlcykgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c3RvcFRyYWNraW5nKCkgZmluYWw7CiAKICAgICAvLyBKU0M6OkRlYnVnZ2VyOjpQcm9maWxpbmdD
bGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwCmluZGV4IDI5ZmNlYzk3
YmI4ZTdmNDc3MmQ0ZDdjYzhmYWQ2YzkyMzE3MWY4OTcuLmFhMzdmODQyNTM3ZjFiNjZjNjExNmFh
MGNmNjRkMTcwYjgwOTNjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmNw
cApAQCAtNDEsNyArNDEsNyBAQCBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ6OkpTR2xvYmFsT2Jq
ZWN0QXVkaXRBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKIAogSlNHbG9iYWxPYmplY3RB
dWRpdEFnZW50Ojp+SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwogCi1Jbmpl
Y3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZh
bChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKK0luamVj
dGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9j
b2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7
CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJl
eGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVy
ZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RB
dWRpdEFnZW50LmgKaW5kZXggYjg0Y2IxMmU2MTA4YjE0OTlhNDRjMWJmNjc1ZWViZjQ5NmQ4ZTBh
MC4uN2JhZGZiNTdlNDk4YzY2Nzk0NGEyMDUzZTM1ZGEzOTU1ZjM5ZTFmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RBdWRpdEFnZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH5K
U0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0
aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0
cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJikgZmluYWw7CiAKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBtX2dsb2JhbE9iamVjdDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzYjcw
Mjg3OGExY2E1MTYyNDQwOTk5ZjRlNjRiNTNmYzM0Zjk1MzJmLi43NjUzNDdiMjkyNmNmY2ZmMjgz
N2E5NGQ0YzgwYTQ2NjczNDhmZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRleHQKIAog
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Ojp+SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4
ZWN1dGlvbkNvbnRleHRJZCkKK0luamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBv
cnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4
dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggOTY5YmI0
MGU2OTgwNzNiNzlhZGNjMjkyZTA1YzdhNTE3ZjI4NjdjNi4uODNkYzU0NzNlYzQ2MmFkY2RlMTQ2
MzE0NmEzMmJkNzg0YTQ0ODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYnJlYWtwb2ludEFjdGlv
bkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAog
cHJpdmF0ZToKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNv
bnRleHRJZD4mJikgZmluYWw7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CiAKICAgICAvLyBOT1RFOiBKYXZhU2Ny
aXB0IGluc3BlY3RvciBkb2VzIG5vdCB5ZXQgbmVlZCB0byBtdXRlIGEgY29uc29sZSBiZWNhdXNl
IG5vIG1lc3NhZ2VzCiAgICAgLy8gYXJlIHNlbnQgdG8gdGhlIGNvbnNvbGUgb3V0c2lkZSBvZiB0
aGUgQVBJIGJvdW5kYXJ5IG9yIGNvbnNvbGUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IGUyNTQ0ODc0OGYxNGU1MGEyZmM1Y2RlNzZiMDY4OTAy
YjAzODNiMWUuLmY1NzRmNTQ5YjEzMTMwMzBhNTIyMWZlNWVlZWZiN2JmMjQ3ZTM1NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpT
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6fkpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29s
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQg
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50
aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlm
IChleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9u
Q29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dHMgYXMgdGhlcmUgaXMgb25s
eSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaAppbmRleCBkZmRhYmVlNDk4OTlhNThlMTZlMTRlOTM4NjE0MTg0YjIwMTE2MTcxLi45
ZTViZDRmYmJmZmUzNjU3NjhlYTk2Y2RlNjZlYmQ4YzkzZTFiMWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH5K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCgpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIEluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBP
cHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4
dElkPiYmKSBmaW5hbDsKIAogICAgIC8vIE5PVEU6IEphdmFTY3JpcHQgaW5zcGVjdG9yIGRvZXMg
bm90IHlldCBuZWVkIHRvIG11dGUgYSBjb25zb2xlIGJlY2F1c2Ugbm8gbWVzc2FnZXMKICAgICAv
LyBhcmUgc2VudCB0byB0aGUgY29uc29sZSBvdXRzaWRlIG9mIHRoZSBBUEkgYm91bmRhcnkgb3Ig
Y29uc29sZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAppbmRl
eCBjNTRmZmUwYTY2ZDg0M2U4MmM2N2I5MzMzZWY5MzJiOThkODc5ZTQxLi40YTBhNmU1YzRmZGIw
MWQ5MzAxMjAyMzRmYzJlOWI5YWYwMWMwYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6dGFyZ2V0Q2xvc2VkKCkKICAgICBtX3RhcmdldCA9IG51bGxwdHI7CiB9CiAKLU9wdGlv
bmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRp
b25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG1fdGFyZ2V0ID8gc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4obV90YXJn
ZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCA3MDIxZGM3M2M5
MWQ5MzFlYTdmNmI2MWI1YjAxNTBlYWI2MmQ3YTQ5Li5kZmI3OTYyODkwOWMxMGM0N2FjNmE1NTdm
YWQ3NTNjYjAyNGViMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0
Q2xvc2VkKCk7CiAKLSAgICBPcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SWRlbnRpZmllcigpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8VGFyZ2V0SUQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25z
dDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmgKaW5kZXggYTA3MWRiMTNlYmIyNWQyMmRkZjAwMTI5ZWRhMDE1MTZhYjZhN2YyMi4uMGU1
YzY4MjZkNmQzZjg4ODU2YjI0YzcxODM2NWQ4NzkzZTJjOWY4MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgK
QEAgLTkzLDE3ICs5MywxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4gY2VydGlmaWNhdGVzOwogICAgICAgICAgICAgc3RydWN0IFByb3h5
IHsKICAgICAgICAgICAgICAgICBTdHJpbmcgdHlwZTsKLSAgICAgICAgICAgICAgICBPcHRpb25h
bDxTdHJpbmc+IGZ0cFVSTDsKLSAgICAgICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGh0dHBV
Ukw7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBodHRwc1VSTDsKLSAgICAgICAg
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNvY2tzVVJMOworICAgICAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBmdHBVUkw7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGh0dHBVUkw7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGh0
dHBzVVJMOworICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzb2Nrc1VSTDsK
ICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmVBZGRyZXNzTGlzdDsKICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxQcm94eT4gcHJveHk7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFByb3h5PiBwcm94eTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gYWxsb3dJbnNlY3VyZU1lZGlhQ2FwdHVyZTsK
LSAgICAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHByZXNzSUNFQ2FuZGlkYXRlRmlsdGVyaW5n
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd0luc2VjdXJlTWVkaWFDYXB0
dXJlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzdXBwcmVzc0lDRUNhbmRpZGF0
ZUZpbHRlcmluZzsKICNlbmRpZgogICAgICAgICB9OwogCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVi
bGljOgogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50
Kik7CiAgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKLSAgICBPcHRpb25h
bDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBjbGllbnRDYXBhYmlsaXRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudENhcGFiaWxpdGllczsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gY2xpZW50Q2FwYWJp
bGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRDYXBhYmlsaXRpZXM7IH0KIAogICAgIHZv
aWQgc2V0dXBGYWlsZWQoVGFyZ2V0SUQpOwogICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQoVGFyZ2V0
SUQpOwpAQCAtMjY4LDE0ICsyNjgsMTQgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShJTlNQRUNUT1Jf
U09DS0VUX1NFUlZFUikKICAgICAvLyBDb25uZWN0aW9uIGZyb20gUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50IG9yIFdlYkRyaXZlci4KLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY2xpZW50Q29u
bmVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gbV9jbGllbnRDb25uZWN0
aW9uOwogICAgIGJvb2wgbV9yZWFkeVRvUHVzaExpc3RpbmdzIHsgZmFsc2UgfTsKIAogICAgIFN0
cmluZyBtX2JhY2tlbmRDb21tYW5kc1BhdGg7CiAjZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rv
cjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxSZW1vdGVJbnNw
ZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1fY2xp
ZW50Q2FwYWJpbGl0aWVzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZGlzcGF0Y2hfcXVl
dWVfdCBtX3hwY1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXRDb2NvYS5tbQppbmRleCBlODI0NWUxZTc5MWNjNThmYjgwMzM0YmFiN2RjMWVjZmJl
NzZmZGQ3Li4yYmZkYTFkMzBjYjdlOGNhZmNjY2RjMWE2MTU1ZjFmODRkMTMzMzJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAt
MTIxLDkgKzEyMSw5IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6flJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldCgpCiAgICAgdGVhcmRvd25SdW5Mb29wKCk7CiB9CiAKLU9wdGlvbmFsPFRhcmdl
dElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJn
ZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIG1fdGFyZ2V0ID8gc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdl
dElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAppbmRl
eCA3ZTlkZmYzODNhMTdiZDY4N2Y1ZGZlZmQ2MGQ2ZDEwOWE0MTkzZjcwLi4wZTZiNzMzNTI5OTNh
MzNjOTljZDQ3NjUyOTNmMzA0NGIwYmQ2M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCkBAIC00MCwxMyArNDAsMTMg
QEAgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6flJlbW90ZUluc3BlY3RvckNvbm5l
Y3Rpb25DbGllbnQoKQogICAgIGVuZHBvaW50LmludmFsaWRhdGVDbGllbnQoKnRoaXMpOwogfQog
Ci1PcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6
OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQp
CitzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudDo6Y29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVy
UG9ydCkKIHsKICAgICBhdXRvJiBlbmRwb2ludCA9IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnNpbmdsZXRvbigpOwogICAgIHJldHVybiBlbmRwb2ludC5jb25uZWN0
SW5ldChzZXJ2ZXJBZGRyLCBzZXJ2ZXJQb3J0LCAqdGhpcyk7CiB9CiAKLU9wdGlvbmFsPENvbm5l
Y3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Y3JlYXRlQ2xpZW50KFBs
YXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCitzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0
VHlwZSBzb2NrZXQpCiB7CiAgICAgYXV0byYgZW5kcG9pbnQgPSBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50OjpzaW5nbGV0b24oKTsKICAgICByZXR1cm4gZW5kcG9pbnQu
Y3JlYXRlQ2xpZW50KHNvY2tldCwgKnRoaXMpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQmLAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUucHVzaFJlY2VpdmVkRGF0
YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCi1PcHRpb25hbDxSZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50OjpFdmVudD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dDo6ZXh0cmFjdEV2ZW50KENvbm5lY3Rpb25JRCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKK3N0ZDo6b3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZl
bnQ+IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmV4dHJhY3RFdmVudChDb25uZWN0
aW9uSUQgY2xpZW50SUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE5LDcgKzExOSw3
IEBAIE9wdGlvbmFsPFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OkV2ZW50PiBSZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50CiAgICAgcmV0dXJuIGV2ZW50OwogfQogCi1PcHRp
b25hbDxWZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50OjpwYXJzZVRhcmdldExpc3RKU09OKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+Pj4gUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudDo6cGFyc2VUYXJnZXRMaXN0SlNPTihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgYXV0byBtZXNzYWdlVmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2Up
OwogICAgIGlmICghbWVzc2FnZVZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGll
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmgKaW5kZXggMjVmMWY4Y2NlNzU2YzA1NDgyZjQ5
YmQwZjUxYzM2ZmM2OGVkMGU3OS4uZmQ0NTFhNTAzODA2YjBkZTY3ZTY0ODA2MWYzNjIzZDA1NzNj
ZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudC5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJl
bW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yCiBw
dWJsaWM6CiAgICAgflJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQoKSBvdmVycmlkZTsK
IAotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hhciogc2Vy
dmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCk7Ci0gICAgT3B0aW9uYWw8Q29ubmVjdGlvbklE
PiBjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwgdWludDE2X3Qg
c2VydmVyUG9ydCk7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNyZWF0ZUNsaWVu
dChQbGF0Zm9ybVNvY2tldFR5cGUpOwogICAgIHZvaWQgc2VuZChDb25uZWN0aW9uSUQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmUoUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmKSBm
aW5hbDsKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IEV2ZW50IHsKICAg
ICAgICAgU3RyaW5nIG1ldGhvZE5hbWU7CiAgICAgICAgIENvbm5lY3Rpb25JRCBjbGllbnRJRCB7
IH07Ci0gICAgICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdGlvbklEOwotICAgICAg
ICBPcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SUQ7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
bWVzc2FnZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNvbm5lY3Rpb25J
RDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SUQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIH07CiAKICAgICB1c2luZyBDYWxsSGFu
ZGxlciA9IHZvaWQgKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OiopKGNvbnN0IEV2
ZW50Jik7CiAgICAgdmlydHVhbCBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRj
aE1hcCgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWY8SlNPTjo6
T2JqZWN0Pj4+IHBhcnNlVGFyZ2V0TGlzdEpTT04oY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+PiBwYXJzZVRhcmdldExpc3RKU09OKGNv
bnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEV2ZW50PiBleHRyYWN0RXZlbnQo
Q29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RXZlbnQ+IGV4dHJhY3RFdmVudChDb25uZWN0aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmKTsK
IAogICAgIEhhc2hNYXA8Q29ubmVjdGlvbklELCBNZXNzYWdlUGFyc2VyPiBtX3BhcnNlcnMgV1RG
X0dVQVJERURfQllfTE9DSyhtX3BhcnNlcnNMb2NrKTsKICAgICBMb2NrIG1fcGFyc2Vyc0xvY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDYyMDRk
NDFkMzhkNDZhMTk3MjlmYzgyODAyNGZkNTI4NDY2NDI3NGIuLjAyZTdkYTJiNjk5NWZkNjBmMGNi
OWU4N2I0NTY1OWEwNjhmNTRkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KQogICAgIHJldHVybiBp
c1J1bm5pbmcoKTsKIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNlcnZl
cjo6Z2V0UG9ydCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXI6OmdldFBvcnQoKSBjb25zdAogewogICAgIGlmICghaXNSdW5uaW5nKCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPHVpbnQx
Nl90PiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmdldFBvcnQoKSBjb25zdAogICAgIHJldHVybiBl
bmRwb2ludC5nZXRQb3J0KG1fc2VydmVyLnZhbHVlKCkpOwogfQogCi1PcHRpb25hbDxDb25uZWN0
aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQmIGVuZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpv
cHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVuZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUg
c29ja2V0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggNWY5Yjk3ZTRhYWNlNWY0MjU2ODY4ZWZk
Zjk4NWY5OTc4M2IyM2M3Yi4uYmQwZTFlY2QwNDA0NGY0MDZhZmUyOGYxYjEzZmFkNzg1N2U5N2Vh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtMzksMTcg
KzM5LDE3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVtb3RlSW5z
cGVjdG9yU2VydmVyJiBzaW5nbGV0b24oKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdWludDE2X3QgcG9ydCk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoKSBjb25zdDsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmVyOyB9CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExhenlOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXI+OwogICAgIFJlbW90ZUluc3BlY3RvclNlcnZlcigpIHsgU29ja2V0Ojppbml0KCk7IH0KIAot
ICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQmLCBQbGF0Zm9ybVNvY2tldFR5cGUpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29ubmVjdGlvbklEPiBkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIFBs
YXRmb3JtU29ja2V0VHlwZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTdGF0dXMoUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQsIFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpMaXN0ZW5lcjo6U3RhdHVzKSBmaW5hbCB7IH07CiAKLSAgICBPcHRpb25h
bDxDb25uZWN0aW9uSUQ+IG1fc2VydmVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklE
PiBtX3NlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oCmluZGV4IGFkOGNmYjM5NTg2ODU0Njk0MDA1Mzgy
ZWMxNWI0ZTg4YTJiNDBhMTQuLjUzMmY5NzUyMjc3OTZkYWZmOTNkOWE3NzJjYjI4Mzk2NGZkYWVh
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmgKQEAgLTY1LDE4
ICs2NSwxOCBAQCBlbnVtIGNsYXNzIERvbWFpbiB7CiAKIHZvaWQgaW5pdCgpOwogCi1KU19FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hh
ciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCk7Ci1KU19FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNz
LCB1aW50MTZfdCBwb3J0KTsKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFBsYXRmb3JtU29j
a2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKTsK
K0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25u
ZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQpOworSlNf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihj
b25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBl
KTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNv
Y2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0
dXAoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZChQ
bGF0Zm9ybVNvY2tldFR5cGUpOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0xpc3RlbmluZyhQ
bGF0Zm9ybVNvY2tldFR5cGUpOwotSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+
IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKIAotSlNfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSwgdm9pZCog
YnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxzaXpl
X3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUp
OworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1T
b2NrZXRUeXBlLCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKTsKK0pTX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUsIGNvbnN0
IHZvaWQqIGRhdGEsIGludCBzaXplKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZShQ
bGF0Zm9ybVNvY2tldFR5cGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggZTQ1MDFkZjVkYjc4MDUyMTFkMWVjNWE0
MWYyOTA5MGE5NmJlZmMwOC4uM2VkZTZmNDZjNDM5YzQwM2U4ZWU2NzM3ZTZhNmY0ZGFkNDY5ZjBl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQuY3BwCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6d2FrZXVwV29ya2VyVGhyZWFkKCkKICAgICAgICAgU29ja2V0Ojp3cml0ZShtX3dh
a2V1cFNlbmRTb2NrZXQsICIxIiwgMSk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZl
ckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQsIENsaWVudCYgY2xpZW50KQorc3RkOjpvcHRp
b25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpjb25uZWN0
SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0LCBDbGll
bnQmIGNsaWVudCkKIHsKICAgICBpZiAoYXV0byBzb2NrZXQgPSBTb2NrZXQ6OmNvbm5lY3Qoc2Vy
dmVyQWRkcmVzcywgc2VydmVyUG9ydCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnQoKnNv
Y2tldCwgY2xpZW50KTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxD
b25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KGNv
bnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQsIExpc3RlbmVyJiBsaXN0ZW5lcikKK3N0
ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYg
bGlzdGVuZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAg
ICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CkBAIC0xMTAsNyArMTEwLDcgQEAg
Ym9vbCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlv
bklEIGlkKQogCiBpbnQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnBvbGxpbmdUaW1l
b3V0KCkKIHsKLSAgICBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiBtb3N0UmVjZW50V2FrZXVwOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbW9zdFJlY2VudFdha2V1cDsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gOiBtX2xpc3RlbmVycykgewogICAgICAgICBpZiAo
Y29ubmVjdGlvbi52YWx1ZS0+bmV4dFJldHJ5VGltZSkgewogICAgICAgICAgICAgaWYgKG1vc3RS
ZWNlbnRXYWtldXApCkBAIC0xOTksNyArMTk5LDcgQEAgQ29ubmVjdGlvbklEIFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50OjpnZW5lcmF0ZUNvbm5lY3Rpb25JRCgpCiAgICAgcmV0dXJuIGlk
OwogfQogCi1PcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgQ2xpZW50JiBjbGll
bnQpCitzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBDbGllbnQmIGNs
aWVudCkKIHsKICAgICBBU1NFUlQoU29ja2V0Ojppc1ZhbGlkKHNvY2tldCkpOwogCkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6aW52YWxpZGF0
ZUxpc3RlbmVyKExpc3RlbmVyJiBsaXN0ZW5lcikKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8dWlu
dDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25J
RCBpZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVj
dGlvbiA9IG1fbGlzdGVuZXJzLmdldChpZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmluZGV4IDk3ZTRlMDlhMTkzMGQ1NWYyYjZiY2Nm
NDdlZDBlNTdmY2I4YjMxN2EuLjc3MDQ0Y2FkZWMwYmUxNmNhMDg3ZmU2M2I0NmVmZDFhM2YwYWYx
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+TGlzdGVu
ZXIoKSB7IH0KIAogICAgICAgICAvLyBUaGVzZSBjYWxsYmFja3MgYXJlIG5vdCBndWFyYW50ZWVk
IHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCBPcHRp
b25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Jiwg
UGxhdGZvcm1Tb2NrZXRUeXBlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
dGF0dXMoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQsIFN0YXR1
cykgPSAwOwogICAgIH07CiAKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50KCk7CiAgICAgflJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50KCk7CiAKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNvbm5lY3RJbmV0KGNvbnN0IGNo
YXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQsIENsaWVudCYpOwotICAgIE9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gbGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZf
dCBwb3J0LCBMaXN0ZW5lciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjb25u
ZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyLCB1aW50MTZfdCBzZXJ2ZXJQb3J0LCBDbGll
bnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gbGlzdGVuSW5ldChjb25zdCBj
aGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYpOwogICAgIHZvaWQgaW52YWxp
ZGF0ZUNsaWVudChDbGllbnQmKTsKICAgICB2b2lkIGludmFsaWRhdGVMaXN0ZW5lcihMaXN0ZW5l
ciYpOwogCkBAIC03OCw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdm9pZCBzZW5kKENv
bm5lY3Rpb25JRCBpZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7IHNlbmQoaWQsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7IH0KICAgICBpbmxpbmUgdm9pZCBzZW5kKENvbm5lY3Rp
b25JRCBpZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBzZW5kKGlkLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQogCi0gICAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlLCBDbGll
bnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY3JlYXRlQ2xpZW50KFBsYXRm
b3JtU29ja2V0VHlwZSwgQ2xpZW50Jik7CiAKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9y
dChDb25uZWN0aW9uSUQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBv
cnQoQ29ubmVjdGlvbklEKSBjb25zdDsKIAogICAgIHZvaWQgZGlzY29ubmVjdChDb25uZWN0aW9u
SUQpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTdHJpbmcgYWRk
cmVzczsKICAgICAgICAgdWludDE2X3QgcG9ydDsKICAgICAgICAgTGlzdGVuZXImIGxpc3RlbmVy
OwotICAgICAgICBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiBuZXh0UmV0cnlUaW1lOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG5leHRSZXRyeVRpbWU7CiAgICAgICAgIFNl
Y29uZHMgcmV0cnlJbnRlcnZhbCB7IGluaXRpYWxSZXRyeUludGVydmFsIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBPU0lYLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQ
T1NJWC5jcHAKaW5kZXggZGE2ODUxODlkNTJmMDY2NGM1NDFkMzVhNjQyOWFhNDBiMDE3MTRiMC4u
OGE5ODU4NzZlYWRiZGRlOGVlNGMzN2RkYTA5ODM1YjFiNmYwZjdiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUlu
c3BlY3RvclNvY2tldFBPU0lYLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgvUmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwCkBA
IC00NCw3ICs0NCw3IEBAIHZvaWQgaW5pdCgpCiB7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtU29j
a2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2
ZXJQb3J0KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3Qg
Y2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCkKIHsKICAgICBzdHJ1Y3Qg
c29ja2FkZHJfaW4gYWRkcmVzcyA9IHsgfTsKIApAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxQ
bGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWlu
dDE2X3Qgc2VydmVyUAogICAgIHJldHVybiBmZDsKIH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2Nr
ZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKK3N0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVz
c1N0ciwgdWludDE2X3QgcG9ydCkKIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzcyA9
IHsgfTsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4g
bGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgcmV0dXJu
IGZkTGlzdGVuOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0
Zm9ybVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+
IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogewogICAgIHN0cnVjdCBzb2NrYWRk
cl9pbiBhZGRyZXNzID0geyB9OwogCkBAIC0xMzgsNyArMTM4LDcgQEAgT3B0aW9uYWw8UGxhdGZv
cm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0
VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQorc3RkOjpvcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3Jt
U29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogewogICAgIHN0ZDo6YXJyYXk8UGxhdGZvcm1T
b2NrZXRUeXBlLCAyPiBzb2NrZXRzOwogCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBpc0xpc3Rl
bmluZyhQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
T3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK3N0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkK
IHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIE9w
dGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAg
cmV0dXJuIGFkZHJlc3Muc2luX3BvcnQ7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0
Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQorc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgdm9pZCog
YnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsK
IApAQCAtMjE0LDcgKzIxNCw3IEBAIE9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tl
dFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRU
eXBlIHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUpCitzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwg
aW50IHNpemUpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoc29ja2V0KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3Rl
SW5zcGVjdG9yU29ja2V0V2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcAppbmRleCA2ZWQ4
MGViYjdiYWQ0NjE2ZDZjYjIzZDFhYzJkOWY4ZmU4YmY2NTU4Li40NDg5YTQ1MTE5ODdjNjA0MDFm
YjEzNWZlZDc5MzIwM2FhZWU4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvd2luL1JlbW90ZUluc3BlY3RvclNvY2tldFdpbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgc3RhdGljIFBs
YXRmb3JtU29ja2V0VHlwZSBiaW5kQW5kTGlzdGVuKHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKICAgICByZXR1cm4gc29ja2V0LmxlYWsoKTsKIH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2Nr
ZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZl
clBvcnQpCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBj
aGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQogewogICAgIHN0cnVjdCBz
b2NrYWRkcl9pbiBhZGRyZXNzID0geyB9OwogCkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8
UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVp
bnQxNl90IHNlcnZlclAKICAgICByZXR1cm4gc29ja2V0OwogfQogCi1PcHRpb25hbDxQbGF0Zm9y
bVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0
KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBh
ZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0KQogewogICAgIC8vIEZJWE1FOiBTdXBwb3J0IEFGX0lO
RVQ2IGNvbm5lY3Rpb25zLgogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzID0geyB9OwpA
QCAtMTkyLDcgKzE5Miw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNv
bnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgcmV0dXJuIHNvY2tldDsK
IH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRU
eXBlIHNvY2tldCkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxh
dGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVz
cyA9IHsgfTsKIApAQCAtMjA1LDcgKzIwNSw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlw
ZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAotT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBj
cmVhdGVQYWlyKCkKK3N0ZDo6b3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUs
IDI+PiBjcmVhdGVQYWlyKCkKIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzczsKICAg
ICBhZGRyZXNzLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwpAQCAtMjE2LDcgKzIxNiw3IEBAIE9wdGlv
bmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCiAgICAg
aWYgKCFzZXJ2ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDx1aW50MTZfdD4gc2VydmVyUG9ydCA9IGdldFBvcnQoc2VydmVyKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBzZXJ2ZXJQb3J0ID0gZ2V0UG9ydChzZXJ2ZXIpOwogICAgIGlmICghc2Vy
dmVyUG9ydCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjY0LDcgKzI2NCw3
IEBAIGJvb2wgaXNMaXN0ZW5pbmcoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KFBsYXRmb3JtU29ja2V0
VHlwZSBzb2NrZXQpCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KFBsYXRmb3JtU29j
a2V0VHlwZSBzb2NrZXQpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoc29ja2V0KSk7CiAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5
cGUgc29ja2V0KQogICAgIHJldHVybiBudG9ocyhhZGRyZXNzLnNpbl9wb3J0KTsKIH0KIAotT3B0
aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZl
ciwgaW50IGJ1ZmZlclNpemUpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNv
Y2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogewogICAgIEFT
U0VSVChpc1ZhbGlkKHNvY2tldCkpOwogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0aW9uYWw8c2l6
ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1
ZmZlclNpemUpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8c2l6ZV90
PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQg
c2l6ZSkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChz
b2NrZXQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggMzU5ODhkYmQ4
OTE5ZmQ4MDg3MDM3MTFlYmQ2ZjdkZGY3MjRhZGNkNS4uNGIwZTA2NjQ3ODg0OTA4YmYyY2ZmMjcw
ZTc4ZTZmYjcxNTI1NGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0y
MDAsNyArMjAwLDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIHR5cGUiKQogCiAgICAgICAgIGlmIGlzX29wdGlv
bmFsOgotICAgICAgICAgICAgY3BwX25hbWUgPSAnT3B0aW9uYWw8JXM+JiYnICUgY3BwX25hbWUK
KyAgICAgICAgICAgIGNwcF9uYW1lID0gJ3N0ZDo6b3B0aW9uYWw8JXM+JiYnICUgY3BwX25hbWUK
ICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAKICAgICBAc3RhdGljbWV0aG9kCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCJ1bmtub3duIHR5cGUiKQogCiAgICAgICAgIGlmIGlzX29wdGlvbmFsOgot
ICAgICAgICAgICAgY3BwX25hbWUgPSAnT3B0aW9uYWw8JXM+JyAlIGNwcF9uYW1lCisgICAgICAg
ICAgICBjcHBfbmFtZSA9ICdzdGQ6Om9wdGlvbmFsPCVzPicgJSBjcHBfbmFtZQogICAgICAgICBy
ZXR1cm4gY3BwX25hbWUKIAogICAgIEBzdGF0aWNtZXRob2QKQEAgLTI4OCw3ICsyODgsNyBAQCBj
bGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoInVua25vd24gdHlwZSIpCiAKICAgICAgICAgaWYgaXNfb3B0aW9uYWw6Ci0gICAgICAgICAg
ICBjcHBfbmFtZSA9ICdPcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQorICAgICAgICAgICAgY3Bw
X25hbWUgPSAnc3RkOjpvcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQogICAgICAgICByZXR1cm4g
Y3BwX25hbWUKIAogICAgIEBzdGF0aWNtZXRob2QKQEAgLTMzMiw3ICszMzIsNyBAQCBjbGFzcyBD
cHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVu
a25vd24gdHlwZSIpCiAKICAgICAgICAgaWYgaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICBjcHBf
bmFtZSA9ICdPcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQorICAgICAgICAgICAgY3BwX25hbWUg
PSAnc3RkOjpvcHRpb25hbDwlcz4mJicgJSBjcHBfbmFtZQogICAgICAgICByZXR1cm4gY3BwX25h
bWUKIAogICAgIEBzdGF0aWNtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19o
ZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CmluZGV4IDk1M2JmYjg3NTU3
MWE2MTIyYWNjNjBhMGQ5NWI5ODM5NjEzMjAxNGYuLjMwNGQwZjZjMmEyODFmMTE2OTI0MjMyOGM2
MmFjNTVhN2MzNzYwOTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQpAQCAtNDE4LDExICs0MTgsMTEgQEAg
Y2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgJ25hbWVzcGFjZSAlcyB7JyAlIHNlbGYuaGVscGVyc19uYW1lc3BhY2UoKSwKICAg
ICAgICAgICAgICcnLAogICAgICAgICAgICAgJ3RlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51
bVR5cGU+JywKLSAgICAgICAgICAgICdPcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7JywKKyAgICAgICAgICAgICdzdGQ6Om9w
dGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmKTsnLAogICAgICAgICBdKSkKIAogICAgICAgICBkZWYgcmV0dXJuX3R5cGVfd2l0aF9l
eHBvcnRfbWFjcm8oY3BwX3Byb3RvY29sX3R5cGUpOgotICAgICAgICAgICAgZW51bV9yZXR1cm5f
dHlwZSA9ICdPcHRpb25hbDwlcz4nICUgY3BwX3Byb3RvY29sX3R5cGUKKyAgICAgICAgICAgIGVu
dW1fcmV0dXJuX3R5cGUgPSAnc3RkOjpvcHRpb25hbDwlcz4nICUgY3BwX3Byb3RvY29sX3R5cGUK
ICAgICAgICAgICAgIHJlc3VsdF90ZXJtcyA9IFtlbnVtX3JldHVybl90eXBlXQogICAgICAgICAg
ICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdleHBvcnRf
bWFjcm8nLCBOb25lKQogICAgICAgICAgICAgaWYgZXhwb3J0X21hY3JvIGlzIG5vdCBOb25lOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGNkODkzOTY1Y2I3Y2NhMDdiY2Iy
ZDZjODJhYjk3MGViMjVmM2RjNTIuLjIwNDk2MjY1NzBmNWZhY2VmNmNjMTQ0ZmE1OWFkMmUxYjY3
ZTAxYzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwOCw4ICsxMDgs
NyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2Vu
ZXJhdG9yKToKICAgICAgICAgZGVmIGdlbmVyYXRlX2NvbnZlcnNpb25fbWV0aG9kX2JvZHkoZW51
bV90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSk6CiAgICAgICAgICAgICBib2R5X2xpbmVzID0gW10K
ICAgICAgICAgICAgIGJvZHlfbGluZXMuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAndGVtcGxh
dGU8PicsCi0gICAgICAgICAgICAgICAgJ09wdGlvbmFsPCVzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8JXM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpJyAlIChjcHBfcHJvdG9jb2xf
dHlwZSwgY3BwX3Byb3RvY29sX3R5cGUpLAorICAgICAgICAgICAgICAgICd0ZW1wbGF0ZTw+IHN0
ZDo6b3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwlcz4oY29uc3QgU3RyaW5n
JiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xfdHlw
ZSksCiAgICAgICAgICAgICAgICAgJ3snLAogICAgICAgICAgICAgICAgICcgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0geycsCiAgICAgICAgICAgICBdKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBjMGZlN2E3OGUzN2ZhNTEy
NDM1MjQzOGZiOWQ0NWFlOTg4YTc0NTUzLi5mZTY3ZTQzZmY3NThlZWFhZTNlMjk4NzM5NWU4Y2My
ODNjNzYyMjY1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtMjEwLDcgKzIxMCw3IEBAIGNsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICAgICAgb2JqY19pbl9wYXJhbV9u
YW1lID0gJ29fJXMnICUgaW5fcGFyYW1fbmFtZQogICAgICAgICAgICAgb2JqY190eXBlID0gc2Vs
Zi5vYmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFt
ZXRlciwgRmFsc2UpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBF
bnVtVHlwZSk6Ci0gICAgICAgICAgICAgICAgb2JqY190eXBlID0gJ09wdGlvbmFsPCVzPicgJSBv
YmpjX3R5cGUKKyAgICAgICAgICAgICAgICBvYmpjX3R5cGUgPSAnc3RkOjpvcHRpb25hbDwlcz4n
ICUgb2JqY190eXBlCiAgICAgICAgICAgICBwYXJhbV9leHByZXNzaW9uID0gaW5fcGFyYW1fZXhw
cmVzc2lvbihpbl9wYXJhbV9uYW1lLCBwYXJhbWV0ZXIpCiAgICAgICAgICAgICBpbXBvcnRfZXhw
cmVzc2lvbiA9IHNlbGYub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfcGFyYW1l
dGVyKHBhcmFtX2V4cHJlc3Npb24sIGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFt
ZXRlcikKICAgICAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQppbmRleCBhNmE2NDNmYzg4NTMzMmYxYjBi
ZGQ4Yjc1OGUyODQwOGZlZjVmNTE2Li5jMGFmZTU1ZmJkMWUwODVhMjViZGNmZWFlNGJkY2MwMjAw
ZTc2Zjc3IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVy
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkKQEAgLTE2
Myw3ICsxNjMsNyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNIZWFkZXJHZW5l
cmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgZGVmIF9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9j
b2xfc3RyaW5nKHNlbGYsIG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcyk6CiAgICAgICAgIGxp
bmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0ZTw+JykKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCdpbmxpbmUgT3B0aW9uYWw8JXM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKScgJSBvYmpjX2VudW1fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdp
bmxpbmUgc3RkOjpvcHRpb25hbDwlcz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpJyAlIG9iamNfZW51bV9uYW1lKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogICAg
ICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3ZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19w
cm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGIxMjJjNTU4
NDI3NDczN2JjZTRiZTdkNDQ1MThjOWU4NGJkNjIxNDIuLmE2YzBmNzIwOGZkYmQ2MWRlOGE5MDM5
YjVlNDExNjI1NmYyNjNmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJz
aW9uc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lv
bnNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBPYmpDUHJvdG9j
b2xUeXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToK
ICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZl
ZF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19F
WENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOycpCi0gICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBPcHRpb25hbDwlKHR5cGUpcz4gcmVzdWx0ID0gSW5z
cGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8JSh0eXBlKXM+KChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilwYXlsb2FkKTsnICUgeyd0eXBlJzogc2VsZi5vYmpjX25hbWVfZm9yX3R5cGUocmVzb2x2ZWRf
dHlwZSl9KQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgYXV0byByZXN1bHQgPSBJbnNw
ZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzwlKHR5cGUpcz4oKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXBheWxvYWQpOycgJSB7J3R5cGUnOiBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShyZXNvbHZlZF90
eXBlKX0pCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCIlcyIpOycgJSBkZWNsYXJhdGlvbi50eXBlLnJhd19u
YW1lKCkpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKHJlc3Vs
dC52YWx1ZSgpKTsnKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzb2x2ZWRfdHlwZSwgKEFy
cmF5VHlwZSwgUHJpbWl0aXZlVHlwZSkpOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkKaW5kZXggYTBlN2I5MDA0NDU1YmJlN2UxMWU4YTBiYzVlZDUxMTBmZTFhMWE0NC4uZDM3NWEx
MjE5NDA1NTY3YmNjNjQ5MGFiNjEzMGI2NmY1Njg3MDFmZiAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5CkBAIC0xNDMsMTMgKzE0MywxMyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xU
eXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICAgICAg
dmFyX25hbWUgPSBPYmpDR2VuZXJhdG9yLmlkZW50aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKG1l
bWJlcl9uYW1lKQogICAgICAgICAgICAgY29udmVyc2lvbl9leHByZXNzaW9uID0gc2VsZi5wYXls
b2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCiAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgT3B0aW9uYWw8JXM+ICVzID0gJXM7JyAlIChvYmpj
X3R5cGUsIHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQogICAgICAgICAgICAgICAg
IGlmIG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIGF1dG8gJXMgPSAlczsnICUgKHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Np
b24pKQogICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9FTlVNX1ZBTFVFKCVzLCBAIiVzIik7JyAlICh2YXJfbmFtZSwgbWVtYmVyX25h
bWUpKQotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBzZWxmLiVzID0gJXMu
dmFsdWUoKTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAqJXM7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQog
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIGlmICglcyknICUgdmFyX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgICAgICBzZWxmLiVzID0gJXMudmFsdWUoKTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmIChhdXRvICVzID0gJXMp
JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkKKyAgICAgICAgICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHNlbGYuJXMgPSAqJXM7JyAlICh2YXJfbmFtZSwgdmFy
X25hbWUpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cmlu
ZGV4IGY4NmZiZTk1MTVhOWQyYzdlYzhiNTllMGVhYjlkMjFkNDk3ZDk1ZmYuLjRlODAyY2RiMDk0
NjM0MWEyMDZhZWQzMTQzNTQ5NmFmYTg0ZDk0MmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7IiIiKQogCiAgICAgVHlwZUNvbnZlcnNpb25zSGVhZGVyU3RhbmRhcmQgPSAo
CiAgICAgIiIidGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0Vu
dW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7IiIiKQorc3Rk
OjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlclByZWx1ZGUgPSAoCiAg
ICAgIiIiJHtpbmNsdWRlc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kLXRhcmdldFR5cGUtbWF0Y2hpbmct
ZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRj
aGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKaW5kZXggNDdiNzE2ODY3OGRi
Y2E3NTZjMWY2MjNhOTlhNmJiZmM4MzgxZTQ2OC4uNTY4ZmUwMzBiYjFkNDkxOTVlNWQyOTA3Mjc0
ODRjOTg1NmQ4N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21h
aW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRj
aGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIsNyBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpD
RW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6
b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggNDVjZWNmMjg0MWIzYjFlMjRmZDVlYTAyMTc2NjU0YmMx
OGU4ZDljOS4uNjMxOTU5ZWIyMTQ4ODBlNzcxYmMyYTQ1M2VkZTU0NzUwYzFkMTU0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTUxLDExICsxNTEsMTEgQEAg
Y2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKIAogY2xhc3MgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBvcHRfbm90ZXMgKi8sIE9wdGlvbmFs
PGRvdWJsZT4gLyogb3B0X3RpbWVzdGFtcCAqLywgUmVmUHRyPEpTT046Ok9iamVjdD4gLyogb3B0
X3ZhbHVlcyAqLywgUmVmUHRyPEpTT046OlZhbHVlPiAvKiBvcHRfcGF5bG9hZCAqLywgT3B0aW9u
YWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJZCAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAqLywgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzPiAvKiBvcHRfc2NyZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIG9w
dF9wcmludENvbG9yICovPj4gZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhpbnQg
ZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSkgPSAwOworICAgIHZpcnR1YWwgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBvcHRfbm90ZXMgKi8sIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiAvKiBvcHRfdGltZXN0YW1wICovLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiAv
KiBvcHRfdmFsdWVzICovLCBSZWZQdHI8SlNPTjo6VmFsdWU+IC8qIG9wdF9wYXlsb2FkICovLCBz
dGQ6Om9wdGlvbmFsPGludD4gLyogb3B0X2RhdGFiYXNlSWQgKi8sIFJlZlB0cjxQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiAvKiBvcHRfc3FsRXJyb3IgKi8sIHN0ZDo6b3B0aW9uYWw8UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRfc2NyZWVuQ29sb3IgKi8sIFJlZlB0
cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0X2FsdGVybmF0ZUNvbG9ycyAq
LywgU3RyaW5nIC8qIG9wdF9wcmludENvbG9yICovPj4gZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJl
dHVyblZhbHVlcyhpbnQgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSkgPSAwOwogICAg
IGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJs
aWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBv
cHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4mJiBvcHRfcGF5bG9hZCwg
T3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIE9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmlu
dENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBzdGQ6Om9wdGlv
bmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiYgb3B0X3NxbEVycm9yLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmlu
dENvbG9yKTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlcyhpbnQgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4
ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+JiYpID0gMDsKICAgICB2
aXJ0dWFsIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5
T2Y8U3RyaW5nPj4gLyogY29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBub3RlcyAqLywgZG91Ymxl
IC8qIHRpbWVzdGFtcCAqLywgUmVmPEpTT046Ok9iamVjdD4gLyogdmFsdWVzICovLCBSZWY8SlNP
Tjo6VmFsdWU+IC8qIHBheWxvYWQgKi8sIGludCAvKiBkYXRhYmFzZUlkICovLCBSZWY8UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4gLyogc3FsRXJyb3IgKi8sIFJlZjxQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4gLyogYWx0ZXJuYXRlQ29sb3JzICovLCBQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMgLyogc2NyZWVuQ29sb3IgKi8sIFN0cmluZyAvKiBwcmludENvbG9yICov
Pj4gZXhlY3V0ZVNRTFN5bmMoaW50IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnkpID0g
MDsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBwcm90b2NvbAogCiBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFj
ayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBC
YWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURk1vdmUoYmFja2VuZERpc3BhdGNoZXIp
LCBpZCkgeyB9CiAKLXZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0
cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcm
IG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2Fk
LCBPcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiYmIG9wdF9zcWxFcnJvciwgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzPiYmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFz
ZTo6Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3By
aW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBv
cHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXls
b2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPFByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+JiYgb3B0X3NxbEVycm9yLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29s
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBT
dHJpbmcmIG9wdF9wcmludENvbG9yKQogewogICAgIGF1dG8gcHJvdG9jb2xfanNvbk1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGlmICghIW9wdF9jb2x1bW5OYW1lcykKQEAg
LTY4OCwxMSArNjg4LDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1U
eXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlv
bmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1P
cHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmlu
ZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+
KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC03Njgs
OCArNzY4LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8v
IEVudW1zIGluIHRoZSAnRGF0YWJhc2UnIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmlu
ZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9j
b2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNl
OjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM6OlJlZCwKQEAgLTEzOTYsNyArMTM5NSw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9i
akNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3Rk
OjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIHsKQEAgLTE0MTEsNyArMTQxMCw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29s
b3JzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gInJlZCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnNSZWQ7CkBAIC0xNDM3LDcgKzE0MzYsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJu
VgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9y
PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CkBAIC0xNDY1LDcgKzE0
NjQsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVybgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUg
T3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzUHJpbnRDb2xvckN5YW47CkBAIC0xNDkzLDcgKzE0OTIsNyBAQCBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29s
b3IgdmFsdQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW47CkBAIC0xNTIxLDcg
KzE1MjAsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHZhbAogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxp
bmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9w
dGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcj4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09
ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFz
eW5jUHJpbnRDb2xvckN5YW47CkBAIC0xNTk2LDcgKzE1OTUsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3JzOihOU051bWJlciAqKilvdXRW
YWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90
b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVBy
b3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1f
VkFMVUUocmVzdWx0LCBAIlByaW1hcnlDb2xvcnMiKTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3Vs
dC52YWx1ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0
dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGRkNzc2NWU1YjdiMjU4MmM3ZThkYmU5
NTM1OTMxNzg1YmFmYzI3NTEuLmI2NzM3ZTE4ZGY2MGU2Y2RhMjk5YTY3NDBiMzcyNDUxODE4NDJm
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogY2xhc3MgQWx0
ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRlRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYg
b3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91Ymxl
PiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVm
UHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBPcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFi
YXNlSWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3NxbEVycm9yLCBjb25zdCBTdHJpbmcm
IG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdF9hbHRlcm5hdGVDb2xv
cnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHByb3RvY29sX3JlcXVlc3RJZCwgUmVm
UHRyPEpTT046OkFycmF5PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90
ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBz
dGQ6Om9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNP
Tjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRD
b2xvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
bG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJlZjxKU09OOjpBcnJheT4mJiBjb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmPEpTT046Ok9iamVjdD4m
JiB2YWx1ZXMsIFJlZjxKU09OOjpWYWx1ZT4mJiBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVm
PEpTT046Ok9iamVjdD4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVm
PEpTT046OkFycmF5PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9y
KSA9IDA7CiB9OwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0
dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8s
IFN0cmluZyAvKiBvcHRfbm90ZXMgKi8sIE9wdGlvbmFsPGRvdWJsZT4gLyogb3B0X3RpbWVzdGFt
cCAqLywgUmVmUHRyPEpTT046Ok9iamVjdD4gLyogb3B0X3ZhbHVlcyAqLywgUmVmUHRyPEpTT046
OlZhbHVlPiAvKiBvcHRfcGF5bG9hZCAqLywgT3B0aW9uYWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJ
ZCAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAq
LywgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRfc2Ny
ZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0
X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIG9wdF9wcmludENvbG9yICovPj4gZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1l
c3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZh
bHVlPiYmIG9wdF9wYXlsb2FkLCBPcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFiYXNlSWQsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgb3B0X3NxbEVycm9yLCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnM+JiYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+
JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBv
cHRfbm90ZXMgKi8sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiAvKiBvcHRfdGltZXN0YW1wICovLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiAvKiBvcHRfdmFsdWVzICovLCBSZWZQdHI8SlNPTjo6VmFsdWU+
IC8qIG9wdF9wYXlsb2FkICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogb3B0X2RhdGFiYXNlSWQg
Ki8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiAvKiBvcHRfc3FsRXJyb3IgKi8s
IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRf
c2NyZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyog
b3B0X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIG9wdF9wcmludENvbG9yICovPj4gZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYg
b3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8
SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG9wdF9kYXRh
YmFzZUlkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF9zcWxFcnJvciwgc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+JiYgb3B0X3NjcmVlbkNvbG9yLCBS
ZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBv
cHRfcHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBjb2x1bW5OYW1lcyAqLywg
U3RyaW5nIC8qIG5vdGVzICovLCBkb3VibGUgLyogdGltZXN0YW1wICovLCBSZWY8SlNPTjo6T2Jq
ZWN0PiAvKiB2YWx1ZXMgKi8sIFJlZjxKU09OOjpWYWx1ZT4gLyogcGF5bG9hZCAqLywgaW50IC8q
IGRhdGFiYXNlSWQgKi8sIFJlZjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiAvKiBzcWxFcnJv
ciAqLywgUHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIC8qIHNjcmVlbkNvbG9yICov
LCBSZWY8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IC8qIGFsdGVybmF0ZUNvbG9ycyAq
LywgU3RyaW5nIC8qIHByaW50Q29sb3IgKi8+PiBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
UmVmPEpTT046OkFycmF5PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3Vi
bGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHZhbHVlcywgUmVmPEpTT046OlZhbHVl
PiYmIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHNxbEVycm9y
LCBQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFJlZjxKU09O
OjpBcnJheT4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikgPSAw
OwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKCk7CkBAIC02MDEsMTEgKzYwMSwxMSBAQCBwdWJsaWM6CiBuYW1lc3BhY2UgVGVzdEhlbHBl
cnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJv
dG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwor
c3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnRGF0YWJhc2UnIERvbWFpbgogdGVt
cGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5
Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMK
IApAQCAtNjgxLDggKzY4MSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29k
ZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIAotdGVtcGxhdGU8Pgot
T3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJp
bmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29s
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykK
IHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAg
IChzaXplX3QpUHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzOjpSZWQsCkBAIC03NDgs
NyArNzQ3LDcgQEAgY2xhc3MgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIg
ZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRGF0YWJhc2VCYWMKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9k
ZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KLSAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25vdGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0
X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNP
Tjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIE9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgZmluYWw7CisgICAgdm9pZCBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJy
YXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRf
dmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8
aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF9zcWxFcnJv
ciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBv
cHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKSBmaW5hbDsK
ICAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHByb3RvY29sX3JlcXVl
c3RJZCwgUmVmPEpTT046OkFycmF5PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHZhbHVlcywgUmVmPEpTT046
OlZhbHVlPiYmIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHNx
bEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWY8SlNPTjo6QXJyYXk+JiYgYWx0
ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpIGZpbmFsOwogcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPj4gbV9k
ZWxlZ2F0ZTsKQEAgLTc5Nyw3ICs3OTYsNyBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAotdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHByb3RvY29sX3JlcXVlc3RJZCwgUmVmUHRy
PEpTT046OkFycmF5PiYmIGluX29wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9vcHRf
bm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBpbl9vcHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGluX29wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4mJiBpbl9vcHRfcGF5
bG9hZCwgT3B0aW9uYWw8aW50PiYmIGluX29wdF9kYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGluX29wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9vcHRfc2NyZWVuQ29sb3Is
IFJlZlB0cjxKU09OOjpBcnJheT4mJiBpbl9vcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcmIGluX29wdF9wcmludENvbG9yKQordm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHByb3RvY29sX3Jl
cXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5PiYmIGluX29wdF9jb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nJiBpbl9vcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGluX29wdF90aW1l
c3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaW5fb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046
OlZhbHVlPiYmIGluX29wdF9wYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBpbl9vcHRfZGF0
YWJhc2VJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBpbl9vcHRfc3FsRXJyb3IsIGNvbnN0IFN0
cmluZyYgaW5fb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgaW5fb3B0X2Fs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9vcHRfcHJpbnRDb2xvcikKIHsKICAgICBp
ZiAoIVttX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjazpjb2x1bW5O
YW1lczpub3Rlczp0aW1lc3RhbXA6dmFsdWVzOnBheWxvYWQ6ZGF0YWJhc2VJZDpzcWxFcnJvcjpz
Y3JlZW5Db2xvcjphbHRlcm5hdGVDb2xvcnM6cHJpbnRDb2xvcjopXSkgewogICAgICAgICBiYWNr
ZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKHByb3RvY29sX3JlcXVlc3RJZCwg
QmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCAiJ0RhdGFiYXNlLmV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMnIHdhcyBub3QgZm91bmQiX3MpOwpAQCAtODYyLDEzICs4NjEsMTMg
QEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHAKICAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
ICpvX2luX29wdF9zcWxFcnJvcjsKICAgICBpZiAoISFpbl9vcHRfc3FsRXJyb3IpCiAgICAgICAg
IG9faW5fb3B0X3NxbEVycm9yID0gYWRvcHROUyhbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
YWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDppbl9vcHRfc3FsRXJyb3IucmVsZWFzZU5vbk51bGwo
KV0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzPiBvX2luX29wdF9zY3JlZW5Db2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gb19pbl9vcHRfc2NyZWVuQ29sb3I7CiAgICAg
aWYgKCEhaW5fb3B0X3NjcmVlbkNvbG9yKQogICAgICAgICBvX2luX29wdF9zY3JlZW5Db2xvciA9
IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGlu
X29wdF9zY3JlZW5Db2xvcik7CiAgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX29wdF9h
bHRlcm5hdGVDb2xvcnM7CiAgICAgaWYgKCEhaW5fb3B0X2FsdGVybmF0ZUNvbG9ycykKICAgICAg
ICAgb19pbl9vcHRfYWx0ZXJuYXRlQ29sb3JzID0gdG9PYmpDU3RyaW5nQXJyYXkoaW5fb3B0X2Fs
dGVybmF0ZUNvbG9ycy5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9j
b2xEYXRhYmFzZShhbm9ueW1vdXMpPiBvX2luX29wdF9wcmludENvbG9yOworICAgIHN0ZDo6b3B0
aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2UoYW5vbnltb3VzKT4gb19pbl9vcHRfcHJpbnRDb2xv
cjsKICAgICBpZiAoISFpbl9vcHRfcHJpbnRDb2xvcikKICAgICAgICAgb19pbl9vcHRfcHJpbnRD
b2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZShhbm9ueW1vdXMp
Pihpbl9vcHRfcHJpbnRDb2xvcik7CiAgICAgW21fZGVsZWdhdGUgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
OnN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczooISFpbl9vcHRfY29sdW1uTmFtZXMgPyAmb19p
bl9vcHRfY29sdW1uTmFtZXMgOiBuaWwpIG5vdGVzOighIWluX29wdF9ub3RlcyA/ICZvX2luX29w
dF9ub3RlcyA6IG5pbCkgdGltZXN0YW1wOighIWluX29wdF90aW1lc3RhbXAgPyAmb19pbl9vcHRf
dGltZXN0YW1wIDogbmlsKSB2YWx1ZXM6KCEhaW5fb3B0X3ZhbHVlcyA/ICZvX2luX29wdF92YWx1
ZXMgOiBuaWwpIHBheWxvYWQ6KCEhaW5fb3B0X3BheWxvYWQgPyAmb19pbl9vcHRfcGF5bG9hZCA6
IG5pbCkgZGF0YWJhc2VJZDooISFpbl9vcHRfZGF0YWJhc2VJZCA/ICZvX2luX29wdF9kYXRhYmFz
ZUlkIDogbmlsKSBzcWxFcnJvcjooISFpbl9vcHRfc3FsRXJyb3IgPyAmb19pbl9vcHRfc3FsRXJy
b3IgOiBuaWwpIHNjcmVlbkNvbG9yOighIWluX29wdF9zY3JlZW5Db2xvciA/ICZvX2luX29wdF9z
Y3JlZW5Db2xvci52YWx1ZSgpIDogbmlsKSBhbHRlcm5hdGVDb2xvcnM6KCEhaW5fb3B0X2FsdGVy
bmF0ZUNvbG9ycyA/ICZvX2luX29wdF9hbHRlcm5hdGVDb2xvcnMgOiBuaWwpIHByaW50Q29sb3I6
KCEhaW5fb3B0X3ByaW50Q29sb3IgPyAmb19pbl9vcHRfcHJpbnRDb2xvci52YWx1ZSgpIDogbmls
KV07CkBAIC05MTUsMTMgKzkxNCwxMyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBwcgogICAgIFJX
SVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkID0gYWRvcHROUyhbW1JXSVByb3RvY29s
SlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OldURk1vdmUoaW5fcGF5bG9hZCld
KS5hdXRvcmVsZWFzZSgpOwogICAgIGludCBvX2luX2RhdGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlk
OwogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBhZG9wdE5T
KFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OldU
Rk1vdmUoaW5fc3FsRXJyb3IpXSkuYXV0b3JlbGVhc2UoKTsKLSAgICBPcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9j
b2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xv
cik7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+
IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7CiAgICAgaWYgKCFvX2luX3NjcmVlbkNv
bG9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3Io
QmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsICJQYXJhbWV0ZXIgJ3NjcmVlbkNvbG9y
JyBvZiBtZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycycgY2Fubm90
IGJlIHByb2Nlc3NlZCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTlNBcnJheS8q
PE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNvbG9ycyA9IHRvT2JqQ1N0cmluZ0FycmF5KFdU
Rk1vdmUoaW5fYWx0ZXJuYXRlQ29sb3JzKSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2UoYW5vbnltb3VzKT4gb19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlKGFub255bW91cyk+KGluX3ByaW50Q29sb3IpOworICAgIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2UoYW5vbnltb3VzKT4gb19pbl9wcmludENvbG9y
ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlKGFub255bW91cyk+KGlu
X3ByaW50Q29sb3IpOwogICAgIGlmICghb19pbl9wcmludENvbG9yKSB7CiAgICAgICAgIGJhY2tl
bmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6Oklu
dmFsaWRQYXJhbXMsICJQYXJhbWV0ZXIgJ3ByaW50Q29sb3InIG9mIG1ldGhvZCAnRGF0YWJhc2Uu
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIl9zKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTI2NSw3ICsxMjY0LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZhbHVl
KQogewpAQCAtMTI4MCw3ICsxMjc5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAicmVkIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZDsKQEAgLTEzMDYsNyAr
MTMwNSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsK
QEAgLTEzMzYsNyArMTMzNSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBs
YXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yQ3lhbjsKQEAgLTEzNjQsNyArMTM2Myw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1By
CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTEzOTQsNyArMTM5Myw3IEBAIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
ImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTE0NjksNyArMTQ2OCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVByaW1hcnlDb2xvcnM6KE5TTnVt
YmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVj
dG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiUHJpbWFyeUNvbG9ycyIpOwogICAgICpvdXRWYWx1
ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CmluZGV4IDFmZTU5YjM0MGYwMDkyNTY1ZjFkZmJjNGUwMWY2ZTkyYmU5NTRjNmEuLjhj
YzY0MjhlNzRmYzNlOWE1ZDk5ZjczNjZkZjcxMmE4MTNhMzk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kZWZpbml0
aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTEwNzUsNyArMTA3NSw3IEBAIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpD
RW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9kb21haW4tZGVidWdnYWJsZVR5cGVzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi1kZWJ1
Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQKaW5kZXggYjlkZWNhMmJjZTdhMWJjZjAzMzBkOGI5MThh
YjVjNmNiMzEwOThlMS4uZDRlZTM5OWU4MTUyODEzOTYxMWZhMGM1MTNjNDlkMjcxYTkyODc5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2RvbWFpbi1kZWJ1Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi1k
ZWJ1Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGUtbWF0
Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBl
LW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAppbmRleCA0N2VkMjM5
ZmQ0ZmM4MzIxYWY3ZDYwMjA0NDI1N2Q4M2I4OGNiY2VlLi43YjA0Zjg5NGI5NjE3ZjJlMGRhZmJi
MzhmZjc5NDMwMWNjMTVhYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGUtbWF0Y2hpbmct
ZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1t
YXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIs
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0
ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlu
LXRhcmdldFR5cGVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBlcy5qc29uLXJlc3VsdApp
bmRleCA0N2U1Mjc5MTUxMjZjNGY1NjlkOTI5NTdkMThiYzgwYjcxYzZjYmJiLi5hYTJkNjFhODc4
MjRjMDVlYmVmOTUxZWYxMWI2MjU0MzQ4NTExZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5
cGVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZXMuanNvbi1yZXN1bHQKQEAgLTkx
Miw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1P
cHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDI5NjNlOTkxMzU5
MDljNTU5MGM2MWMwN2NiNmQ3ZDE4YWNiYzhmMGUuLjNmOWUwMDRkZDczOTMwZWY0NThhZDBmODdk
ZGY0MWU0YWUxZGMzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCBmMjYyMzcxODdlNjdjMzhhZjQx
MjcyOTZlNTA1MTQ2OTczZjdlOGNiLi40OTI2M2JhYzk0MzgwMWZmZGQ5NmI4ZjM3NWE1NWQ4ZGU2
ZTc1YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVz
Lmpzb24tcmVzdWx0CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgQWx0ZXJuYXRlQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVyOwogCiBjbGFzcyBDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0gLyogZW51bVJlcXVpcmVk
ICovLCBPcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4gLyogb3B0X2VudW1PcHRp
b25hbCAqLywgU3RyaW5nIC8qIHJldHVyblJlcXVpcmVkICovLCBTdHJpbmcgLyogb3B0X3JldHVy
bk9wdGlvbmFsICovPj4gY29tbWFuZChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVx
dWlyZWQsIE9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiYmIG9wdF9lbnVtT3B0
aW9uYWwsIGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyUmVxdWlyZWQsIGNvbnN0IFN0cmluZyYgb3B0
X3BhcmFtZXRlck9wdGlvbmFsKSA9IDA7CisgICAgdmlydHVhbCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtIC8qIGVudW1SZXF1aXJl
ZCAqLywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4gLyogb3B0X2Vu
dW1PcHRpb25hbCAqLywgU3RyaW5nIC8qIHJldHVyblJlcXVpcmVkICovLCBTdHJpbmcgLyogb3B0
X3JldHVybk9wdGlvbmFsICovPj4gY29tbWFuZChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBl
bnVtUmVxdWlyZWQsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYg
b3B0X2VudW1PcHRpb25hbCwgY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3Qg
U3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0aW9uYWwpID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIH5Db21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNoYXJlZE9wdGlvbmFsID0gNSwKICAg
ICAgICAgICAgIEdyZWVuID0gNiwKICAgICAgICAgfTsgLy8gZW51bSBjbGFzcyBQYXJhbWV0ZXJP
cHRpb25hbAotICAgIHZvaWQgZXZlbnQoUHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0gZW51bVJl
cXVpcmVkLCBPcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4mJiBvcHRfZW51bU9w
dGlvbmFsLCBjb25zdCBTdHJpbmcmIHBhcmFtZXRlclJlcXVpcmVkLCBjb25zdCBTdHJpbmcmIG9w
dF9wYXJhbWV0ZXJPcHRpb25hbCk7CisgICAgdm9pZCBldmVudChQcm90b2NvbDo6VHlwZURvbWFp
bjo6RW51bSBlbnVtUmVxdWlyZWQsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46
OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwgY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJl
ZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0aW9uYWwpOwogcHJpdmF0ZToKICAgICBG
cm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJvdXRlcjsKIH07CkBAIC00MDIsNyArNDAyLDcgQEAg
cHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXI6OmV2ZW50KFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtIGVudW1SZXF1
aXJlZCwgT3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYgb3B0X2VudW1PcHRp
b25hbCwgY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRf
cGFyYW1ldGVyT3B0aW9uYWwpCit2b2lkIEV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpl
dmVudChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVxdWlyZWQsIHN0ZDo6b3B0aW9u
YWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwgY29uc3Qg
U3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0
aW9uYWwpCiB7CiAgICAgYXV0byBwcm90b2NvbF9qc29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgcHJvdG9jb2xfanNvbk1lc3NhZ2UtPnNldFN0cmluZygibWV0aG9kIl9z
LCAiRXZlbnREb21haW4uZXZlbnQiX3MpOwpAQCAtNTAyLDExICs1MDIsMTEgQEAgZW51bSBjbGFz
cyBFbnVtIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBy
b3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5
cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMg
aW4gdGhlICdUeXBlRG9tYWluJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29s
OjpUeXBlRG9tYWluOjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlR5
cGVEb21haW46OkVudW0+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
VHlwZURvbWFpbjo6RW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUeXBl
RG9tYWluOjpFbnVtPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBl
cnMKIApAQCAtNTg2LDggKzU4Niw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQg
Y29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1R5cGVEb21haW4nIERvbWFpbgogCi10ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPihjb25zdCBTdHJpbmcmIHByb3Rv
Y29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWlu
OjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlR5cGVEb21haW46OkVu
dW0+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpUeXBl
RG9tYWluOjpFbnVtOjpTaGFyZWQsCkBAIC03MjUsMjAgKzcyNCwyMCBAQCB2b2lkIE9iakNJbnNw
ZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmQobG9uZyBwcm90b2Nv
bF9yZXF1ZXN0SQogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocHJv
dG9jb2xfcmVxdWVzdElkLCBXVEZNb3ZlKHByb3RvY29sX2pzb25NZXNzYWdlKSwgZmFsc2UpOwog
ICAgIH07CiAKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9l
bnVtUmVxdWlyZWQgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVu
dW0+KGluX2VudW1SZXF1aXJlZCk7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBl
RG9tYWluRW51bT4gb19pbl9lbnVtUmVxdWlyZWQgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFBy
b3RvY29sVHlwZURvbWFpbkVudW0+KGluX2VudW1SZXF1aXJlZCk7CiAgICAgaWYgKCFvX2luX2Vu
dW1SZXF1aXJlZCkgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2Nv
bEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCAiUGFyYW1ldGVyICdlbnVt
UmVxdWlyZWQnIG9mIG1ldGhvZCAnQ29tbWFuZERvbWFpbi5jb21tYW5kJyBjYW5ub3QgYmUgcHJv
Y2Vzc2VkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBPcHRpb25hbDxUZXN0UHJv
dG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9vcHRfZW51bU9wdGlvbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+IG9faW5fb3B0X2VudW1PcHRpb25hbDsK
ICAgICBpZiAoISFpbl9vcHRfZW51bU9wdGlvbmFsKQogICAgICAgICBvX2luX29wdF9lbnVtT3B0
aW9uYWwgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+KGlu
X29wdF9lbnVtT3B0aW9uYWwpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbENvbW1hbmREb21h
aW4oYW5vbnltb3VzKT4gb19pbl9wYXJhbWV0ZXJSZXF1aXJlZCA9IGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluKGFub255bW91cyk+KGluX3BhcmFtZXRlclJlcXVp
cmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbENvbW1hbmREb21haW4oYW5vbnlt
b3VzKT4gb19pbl9wYXJhbWV0ZXJSZXF1aXJlZCA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xDb21tYW5kRG9tYWluKGFub255bW91cyk+KGluX3BhcmFtZXRlclJlcXVpcmVkKTsKICAg
ICBpZiAoIW9faW5fcGFyYW1ldGVyUmVxdWlyZWQpIHsKICAgICAgICAgYmFja2VuZERpc3BhdGNo
ZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFt
cywgIlBhcmFtZXRlciAncGFyYW1ldGVyUmVxdWlyZWQnIG9mIG1ldGhvZCAnQ29tbWFuZERvbWFp
bi5jb21tYW5kJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluKGFub255bW91cyk+IG9f
aW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
Q29tbWFuZERvbWFpbihhbm9ueW1vdXMpPiBvX2luX29wdF9wYXJhbWV0ZXJPcHRpb25hbDsKICAg
ICBpZiAoISFpbl9vcHRfcGFyYW1ldGVyT3B0aW9uYWwpCiAgICAgICAgIG9faW5fb3B0X3BhcmFt
ZXRlck9wdGlvbmFsID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbENvbW1hbmREb21h
aW4oYW5vbnltb3VzKT4oaW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsKTsKICAgICBbbV9kZWxlZ2F0
ZSBjb21tYW5kV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
c3VjY2Vzc0NhbGxiYWNrIGVudW1SZXF1aXJlZDpvX2luX2VudW1SZXF1aXJlZC52YWx1ZSgpIGVu
dW1PcHRpb25hbDooISFpbl9vcHRfZW51bU9wdGlvbmFsID8gJm9faW5fb3B0X2VudW1PcHRpb25h
bC52YWx1ZSgpIDogbmlsKSBwYXJhbWV0ZXJSZXF1aXJlZDpvX2luX3BhcmFtZXRlclJlcXVpcmVk
LnZhbHVlKCkgcGFyYW1ldGVyT3B0aW9uYWw6KCEhaW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsID8g
Jm9faW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsLnZhbHVlKCkgOiBuaWwpXTsKQEAgLTEwODgsNyAr
MTA4Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlv
bmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
Oworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFR5cGVEb21haW5FbnVtIHZhbHVlKQogewpAQCAtMTEwMyw3ICsxMTAyLDcgQEAgaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtIHZhbHVl
KQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFp
bkVudW0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAic2hhcmVkIikKICAg
ICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOwpAQCAtMTE2Nyw3
ICsxMTY2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlRW51
bTooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwot
ICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtPiByZXN1bHQgPSBJbnNwZWN0
b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4oKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpm
cm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZB
TFVFKHJlc3VsdCwgQCJFbnVtIik7CiAgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJs
ZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdn
YWJsZVR5cGUuanNvbi1yZXN1bHQKaW5kZXggOTIyZjI2ZTQ2NzNkOTg3OWYwOTI4YTUyMTEyZmUz
MjBjNTYzNmU4Zi4uMWRhYzZmYTNiYzE0MjEyNDE0MjZkMTEwMjliNjhkZTBkZGQ1MTc1NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2V2ZW50LXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9ldmVudC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxl
VHlwZS5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkxMiw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
aW5kZXggMzU0MmZlZWZkMWI5ZDMxNGRlZTgwNzRhZTM2ODQ3NDExYTMyYjAxNS4uODM1N2E0YTU5
N2Y3MWVjMTQwMzgzNTdjZTdmNjNlY2FmNDM3ZTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9w
dGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTIzMyw3ICsyMzMsNyBAQCBjbGFzcyBEYXRhYmFzZUZy
b250ZW5kRGlzcGF0Y2hlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5k
Um91dGVyKSA6IG1fZnJvbnRlbmRSb3V0ZXIoZnJvbnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQg
ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBvcHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMs
IFJlZlB0cjxKU09OOjpWYWx1ZT4mJiBvcHRfcGF5bG9hZCwgUmVmUHRyPFByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+JiYgb3B0X3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIG9wdF9zY3JlZW5Db2xv
ciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVm
UHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBS
ZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgb3B0X2FsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcik7CiAgICAgdm9pZCBkaWRFeGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMoUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmPEpTT046Ok9iamVj
dD4mJiB2YWx1ZXMsIFJlZjxKU09OOjpWYWx1ZT4mJiBwYXlsb2FkLCBSZWY8UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVm
PFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nJiBwcmludENvbG9yKTsKIHByaXZhdGU6CiAgICAgRnJvbnRlbmRSb3V0ZXImIG1fZnJv
bnRlbmRSb3V0ZXI7CkBAIC0yNzksNyArMjc5LDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKLXZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVP
cHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046OkFycmF5T2Y8U3RyaW5nPj4mJiBvcHRfY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25vdGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0
X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNP
Tjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25z
dCBTdHJpbmcmIG9wdF9wcmludENvbG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0
X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBSZWZQdHI8UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgb3B0X2Fs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikKIHsKICAgICBhdXRv
IHByb3RvY29sX2pzb25NZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwcm90
b2NvbF9qc29uTWVzc2FnZS0+c2V0U3RyaW5nKCJtZXRob2QiX3MsICJEYXRhYmFzZS5kaWRFeGVj
dXRlT3B0aW9uYWxQYXJhbWV0ZXJzIl9zKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRl
eCAxZDQ1YzZmMjc4Njg5ZWEwYTIwMjc5MWRmZDcxNDRlZmJmZGIxYjViLi44M2RlZTA1MDg5MDMy
NDFjMTBhZmQxMjJlMzcxYmU1ZjdjNDU5OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13
aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTk5Nyw3ICs5OTcsNyBAQCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2Ft
ZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggZDU1NWE3MzQ0MGZm
MDljYmRiZDMyNmQwNjc1ZmY3OTNlNzk3NDYwYy4uOGMxNjFhNWE5YjZjZjBiN2JkNWJiYzQ5YWMz
ZTdiMzhkMGJmZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApA
QCAtNzMwLDcgKzczMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8
T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Citz
dGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQK
aW5kZXggOWMzYjAyYzEzMWQ1OWM5ZmUwNmM1ZTUzZWFkYjZkZDQwOThhYmVhYS4uNTVmNGIyOWZm
ZDEwMmMyZDQ4M2YxNDlmZTFiM2NkYmY4MDhjZDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlv
bmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1z
ZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MTQsMTEgKzQxNCwxMSBAQCBwdWJsaWM6CiBuYW1lc3Bh
Y2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgot
T3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScg
RG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6
VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRo
OjpUeXBlPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6
OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGlt
ZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RI
ZWxwZXJzCiAKQEAgLTQ4MCw4ICs0ODAsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUo
aW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4KIAotdGVtcGxh
dGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3Qg
U3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2Nv
bDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3Rv
Y29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5n
KQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAg
ICAgKHNpemVfdClQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZTo6TnVsbCwKQEAgLTg2
OCw3ICs4NjcsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1P
cHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUgdmFsdWUpCiB7CkBAIC04ODMsNyArODgyLDcgQEAg
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRo
VHlwZSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2Nv
bFJ1bnRpbWVLZXlQYXRoVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAibnVsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5
cGVOdWxsOwpAQCAtMTAwMiw5ICsxMDAxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURf
UFJPUEVSVFkocGF5bG9hZFtAInR5cGUiXSwgQCJ0eXBlIik7Ci0gICAgT3B0aW9uYWw8VGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlPiB0eXBlID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRb
QCJ0eXBlIl0pOworICAgIGF1dG8gdHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xSdW50aW1lS2V5UGF0aFR5cGU+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AidHlw
ZSJdKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHR5cGUsIEAidHlw
ZSIpOwotICAgIHNlbGYudHlwZSA9IHR5cGUudmFsdWUoKTsKKyAgICBzZWxmLnR5cGUgPSAqdHlw
ZTsKIAogICAgIHNlbGYuc3RyaW5nID0gcGF5bG9hZFtAInN0cmluZyJdOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Nob3VsZC1zdHJpcC1jb21tZW50cy5q
c29uLXJlc3VsdAppbmRleCAzZDEyNmYzMzk2NmUzOTRkYzc0ODg3MGZlOTlkZjM5NDk2MDU2OGQ2
Li41OTI4N2FhYjM0MjIyZTU1YTUwZmQyZmM3MTNmZTZkOTg5MjAxZTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hv
dWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaG91bGQtc3RyaXAtY29tbWVudHMu
anNvbi1yZXN1bHQKQEAgLTcyMCw3ICs3MjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0Cmlu
ZGV4IDI4ODA0ZDA2ZDRjM2E1ODBlN2NhZDgwNDFjYWJlOTkxZDg5ZTY4N2MuLjk1ODJkZWY3N2Uy
NzYyY2Q1ZTQ1NDRiNDZiMWNkNGIyYWI5YmM2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNzI1LDcgKzcyNSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNTM0YWI2NGI1NjliNDYxOTE0MDc0
ODlhMmI4MDdhNzJmOTRkYTNlYS4uZmUxNDI4YzEyNjBmNTMxMWE0NWNlMWZhNGZjMjFjMjQzNjc3
ZWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC0zNjQsMTEgKzM2
NCwxMSBAQCBlbnVtIGNsYXNzIFJlYXNvbiB7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVt
VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRp
b25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnRGVidWdnZXInIERvbWFpbgogdGVtcGxhdGU8Pgot
T3B0aW9uYWw8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9w
dGlvbmFsPFByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC00NDAsOCArNDQwLDcgQEAgU3RyaW5nIGdldEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAnRGVidWdnZXInIERv
bWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25z
dCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6
OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90
KVByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uOjpEaWVkLApAQCAtODIwLDcgKzgxOSw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uKSB7CiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgot
T3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sRGVidWdnZXJSZWFzb24gdmFsdWUpCiB7CkBAIC04MzUsNyArODM0LDcgQEAgaW5s
aW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uIHZh
bHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdn
ZXJSZWFzb24+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiRGllZCIpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkRpZWQ7CkBAIC05MTgsNyAr
OTE3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUmVhc29u
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0g
ICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPigoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7CisgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFM
VUUocmVzdWx0LCBAIlJlYXNvbiIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDg0NWZmOGQ5NTEzZWVl
ZWIyODUzODZhMmNmMDhkMTA2OTg0NWM4ZGMuLjc1NjQwZjViZWU5NDRjZDQ2MzVlMTkyMWU4MjVj
ZWQ1NWE2YTM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAgLTM2MSwx
MyArMzYxLDEzIEBAIGVudW0gY2xhc3MgVHdvTGVnZ2VkQW5pbWFscyB7CiBuYW1lc3BhY2UgVGVz
dEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9u
YWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScgRG9tYWlu
CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNv
bnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1h
bHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1h
bHM+KGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6
UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFs
PFByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYp
OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC00NDUsOCArNDQ1LDcgQEAgU3Ry
aW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAn
UnVudGltZScgRG9tYWluCiAKLXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1l
OjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1l
OjpGYXJtQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZh
bHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFs
czo6UGlncywKQEAgLTQ2MSw4ICs0NjAsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6
RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudAogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29s
OjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJv
dG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xT
dHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xl
Z2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6
VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3Qp
UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM6OkR1Y2tzLApAQCAtODUwLDcgKzg0
OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29M
ZWdnZWRBbmltYWxzKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzIHZhbHVlKQogewpA
QCAtODY3LDcgKzg2NSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xSdW50aW1lRmFybUFuaW1hbHMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBP
cHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UnVudGltZUZhcm1BbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUnVudGltZUZhcm1BbmltYWxzUGlnczsKQEAgLTg5NSw3ICs4OTMsNyBAQCBpbmxpbmUgU3Ry
aW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMg
dmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50
aW1lVHdvTGVnZ2VkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5p
bWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlID09ICJEdWNrcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdv
TGVnZ2VkQW5pbWFsc0R1Y2tzOwpAQCAtOTYyLDcgKzk2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUZhcm1BbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3Rv
Y29sUnVudGltZUZhcm1BbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0
cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0
LCBAIkZhcm1BbmltYWxzIik7CiAgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9
CkBAIC05NzAsNyArOTY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQp
X3BhcnNlVHdvTGVnZ2VkQW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6
KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQs
IFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29M
ZWdnZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0
UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBh
eWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8
VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3Vs
dCwgQCJUd29MZWdnZWRBbmltYWxzIik7CiAgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDZiYjlmNTIy
OTg0NTcwYTk1ZWExYjNkNjdlMDIwZjMzMGRjYjNmM2MuLmJkNDIwMjFiOTYzMjg2MmM5NzIwOTVm
OWE2OGQxNjU2NzJkMTBlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBl
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0
CkBAIC05MzYsMTkgKzkzNiwxOSBAQCBwdWJsaWM6CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xF
bnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpv
cHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnRGF0YWJhc2UnIERvbWFpbgogdGVtcGxhdGU8
PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+KGNvbnN0IFN0cmlu
ZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4oY29u
c3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVj
dGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFi
YXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFsUGFyYW1ldGVyQnVuZGxl
OjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQ
cm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6
RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9u
YWxpdHk+KGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgog
dGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGly
ZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGVzdDo6UGFy
YW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGly
ZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVy
cwogCkBAIC0xMDIzLDggKzEwMjMsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50
IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiAKLXRlbXBsYXRl
PD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPihjb25zdCBTdHJp
bmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6
RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNp
emVfdClQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uOjpOb25lLApAQCAtMTAzOSw4ICsx
MDM4LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4gcGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFs
UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFs
aXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlv
bmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRp
b25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYgcHJvdG9j
b2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0g
ewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJC
dW5kbGU6OkRpcmVjdGlvbmFsaXR5OjpMVFIsCkBAIC0xMDUzLDggKzEwNTEsNyBAQCBPcHRpb25h
bDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25h
bGl0eT4gcGFyc2VFbnVtVgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRl
PD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rp
b25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UGFy
YW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmlu
ZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRl
ckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2Nv
bDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZh
bHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVy
QnVuZGxlOjpEaXJlY3Rpb25hbGl0eTo6TFRSLApAQCAtMTA2OSw4ICsxMDY2LDcgQEAgT3B0aW9u
YWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBw
YXJzZUVudW1WYWx1ZUZyb20KIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4KIAotdGVt
cGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0
aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGVzdDo6UGFyYW1l
dGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxl
OjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0
OjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29s
U3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsK
ICAgICAgICAgKHNpemVfdClQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rp
b25hbGl0eTo6TFRSLApAQCAtMTUzOCw3ICsxNTM0LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRvbiB2YWx1ZSkK
IHsKQEAgLTE1NTUsNyArMTU1MSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRvbj4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0
UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIk5vbmUiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRvbk5vbmU7CkBAIC0xNTc5LDcgKzE1NzUsNyBA
QCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VPcHRp
b25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdAogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFs
aXR5PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJMVFIiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5TFRSOwpAQCAtMTU5OSw3ICsx
NTk1LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxp
dHk+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0
eT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlID09ICJMVFIiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0
ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eUxUUjsKQEAgLTE2MTksNyArMTYxNSw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGly
ZWN0aW9uYWxpdHkgdmFsCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJv
dG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
VGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkxUUiIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHlMVFI7CkBA
IC0xNzA0LDcgKzE3MDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClf
cGFyc2VNb3VzZUJ1dHRvbjooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBh
eWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0
cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlTW91c2VCdXR0
b24+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERh
dGFiYXNlTW91c2VCdXR0b24+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBh
dXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERh
dGFiYXNlTW91c2VCdXR0b24+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJNb3VzZUJ1dHRvbiIp
OwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQpAQCAtMTg1NSw5ICsxODUx
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHNlbGYuYnV0dG9ucyA9IHBh
eWxvYWRbQCJidXR0b25zIl07CiAKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5k
bGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rp
b25hbGl0eSJdKTsKLSAgICBpZiAoZGlyZWN0aW9uYWxpdHkpCi0gICAgICAgIHNlbGYuZGlyZWN0
aW9uYWxpdHkgPSBkaXJlY3Rpb25hbGl0eS52YWx1ZSgpOworICAgIGlmIChhdXRvIGRpcmVjdGlv
bmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQ
YXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxv
YWRbQCJkaXJlY3Rpb25hbGl0eSJdKSkKKyAgICAgICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9ICpk
aXJlY3Rpb25hbGl0eTsKIAogICAgIHNlbGYubm90ZXMgPSBwYXlsb2FkW0Aibm90ZXMiXTsKIApA
QCAtMTk5Nyw5ICsxOTkyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBzZWxm
LmJ1dHRvbnMgPSBwYXlsb2FkW0AiYnV0dG9ucyJdOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSwgQCJkaXJlY3Rp
b25hbGl0eSIpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVu
ZGxlRGlyZWN0aW9uYWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSk7CisgICAgYXV0byBkaXJl
Y3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFt
ZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtA
ImRpcmVjdGlvbmFsaXR5Il0pOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFM
VUUoZGlyZWN0aW9uYWxpdHksIEAiZGlyZWN0aW9uYWxpdHkiKTsKLSAgICBzZWxmLmRpcmVjdGlv
bmFsaXR5ID0gZGlyZWN0aW9uYWxpdHkudmFsdWUoKTsKKyAgICBzZWxmLmRpcmVjdGlvbmFsaXR5
ID0gKmRpcmVjdGlvbmFsaXR5OwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9Q
Uk9QRVJUWShwYXlsb2FkW0Aibm90ZXMiXSwgQCJub3RlcyIpOwogICAgIHNlbGYubm90ZXMgPSBw
YXlsb2FkW0Aibm90ZXMiXTsKQEAgLTIyODksOSArMjI4NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9S
X1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdLCBAImRpcmVjdGlv
bmFsaXR5Iik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURp
cmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSk7CisgICAgYXV0byBkaXJlY3Rpb25hbGl0
eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGly
ZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxp
dHkiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShkaXJlY3Rpb25h
bGl0eSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSBkaXJl
Y3Rpb25hbGl0eS52YWx1ZSgpOworICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSAqZGlyZWN0aW9u
YWxpdHk7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxv
YWRbQCJidXR0b25zIl0sIEAiYnV0dG9ucyIpOwogICAgIHNlbGYuYnV0dG9ucyA9IHBheWxvYWRb
QCJidXR0b25zIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IGU2
YzU1NGFhZTcyNTc4N2MxYTc4ZGI4NjFkMTFhMjcwN2EwNzJhNjcuLjlmZjhmNWY0NjZlNmZmZWFh
YWExYTgwM2QwMGQ5YTBlYjVmOGM2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1l
LWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0CkBAIC01NzgsMTMgKzU3OCwxMyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5
cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9u
YWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9u
YWw8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3Rk
OjpvcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5n
Jik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1h
bHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFs
cz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTY2
Miw4ICs2NjIsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAog
Ly8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJv
dG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFBy
b3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFu
aW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpU
ZXN0OjpVbmNhc3RlZEFuaW1hbHM6OlBpZ3MsCkBAIC02NzgsOCArNjc3LDcgQEAgT3B0aW9uYWw8
UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PFByb3RvY29sOjpUZXMKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZTw+
Ci1PcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHBy
b3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpD
YXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OkNh
c3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3Rv
Y29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzOjpEdWNrcywKQEAgLTExOTAsNyArMTE4OCw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRp
b25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RVbmNh
c3RlZEFuaW1hbHMgdmFsdWUpCiB7CkBAIC0xMjA3LDcgKzEyMDUsNyBAQCBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyB2YWx1ZSkK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3Rl
ZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJQaWdz
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNQaWdzOwpA
QCAtMTIzNSw3ICsxMjMzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUg
T3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
VGVzdENhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmICh2YWx1ZSA9PSAiRHVja3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKQEAgLTEzMjUsNyArMTMyMyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVVuY2FzdGVkQW5pbWFsczooTlNOdW1i
ZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlv
bmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+KChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+KChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9F
TlVNX1ZBTFVFKHJlc3VsdCwgQCJVbmNhc3RlZEFuaW1hbHMiKTsKICAgICAqb3V0VmFsdWUgPSBA
KHJlc3VsdC52YWx1ZSgpKTsKIH0KQEAgLTEzMzMsNyArMTMzMSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUNhc3RlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91
dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRpb25hbDxUZXN0
UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9j
b2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29s
U3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPigoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpcGF5bG9hZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1
bHQsIEAiQ2FzdGVkQW5pbWFscyIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkp
OwogfQpAQCAtMTQwOCw5ICsxNDA2LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAg
ICBzZWxmLm51bWJlciA9IFtwYXlsb2FkW0AibnVtYmVyIl0gaW50ZWdlclZhbHVlXTsKIAogICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImFuaW1hbHMi
XSwgQCJhbmltYWxzIik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1h
bHM+IGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiYW5pbWFscyJdKTsKKyAgICBh
dXRvIGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiYW5pbWFscyJdKTsKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKGFuaW1hbHMsIEAiYW5pbWFscyIpOwot
ICAgIHNlbGYuYW5pbWFscyA9IGFuaW1hbHMudmFsdWUoKTsKKyAgICBzZWxmLmFuaW1hbHMgPSAq
YW5pbWFsczsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5
bG9hZFtAImlkIl0sIEAiaWQiKTsKICAgICBzZWxmLmlkZW50aWZpZXIgPSBbcGF5bG9hZFtAImlk
Il0gaW50ZWdlclZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXdpdGgtb3Blbi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZGU5
NjRlNDU0NzBkZTdiYjhmYmJmMGI2ODFkOTkzZWQ0M2FhNDFiMi4uZjc3NzZmNWIwZWZkM2FkYWVi
Y2IyZTdmNTBiNzg2ZDI0ZDBlYjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
QEAgLTg4MCw3ICs4ODAsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5
cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdmVyc2lvbi5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CmluZGV4IDVhZTIwZWU0OTJmYTYyMDRjMDA1MmFjZGZj
MmM3MTA0ZThlMmY3YTEuLjJhNjA5NTlhMTJlNWU4ZTg2YjEyYWVmNjEyNDAxMzM3ZjA0MGUyNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CkBA
IC03MzAsNyArNzMwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0
ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBlMDNjYTkyMDQ1
ZDI2NWY0NzUyOTM2ZTRlZDg2Yjg0Y2NkYzAyMzc5Li44M2ZmMjhmMjMxMTk3MDI1M2QwYjIwYmZk
NmQ3N2M1ZGY5MjU5ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoU3RhY2tWaXNp
dG9yJiB2aXNpdG9yKSBjb25zdAogICAgIHsKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAg
ICBPcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gY3VycmVudENhbGxlZVNhdmVzID0gdmlz
aXRvci0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZygpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSB2aXNpdG9y
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKCk7CiAKICAgICAgICAgaWYgKCFjdXJy
ZW50Q2FsbGVlU2F2ZXMpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDJkNDkyODZjMTdi
N2Q3ZDMwYWFjNGMzMWVjMWQxNTQyN2FiZWE3OGIuLjU3YTFiZGI2ZGJkNWIxNjA2OTFjNjU2NTBm
YzBkNDVkYmU4MDllYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RhY2tWaXNpdG9yOjpG
cmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKLU9wdGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBT
dGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKCkKK3N0
ZDo6b3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNh
bGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKQogewogICAgIGlmICghTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00
MDUsNyArNDA1LDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb21wdXRlTGluZUFuZENv
bHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKICAgICBsaW5lID0gZGl2b3RM
aW5lICsgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCk7CiAgICAgY29s
dW1uID0gZGl2b3RDb2x1bW4gKyAoZGl2b3RMaW5lID8gMSA6IGNvZGVCbG9jay0+Zmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KCkpOwogCi0gICAgaWYgKE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVt
YmVyID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+b3ZlcnJpZGVMaW5lTnVtYmVyKGNv
ZGVCbG9jay0+dm0oKSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVO
dW1iZXIgPSBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5vdmVycmlkZUxpbmVOdW1iZXIo
Y29kZUJsb2NrLT52bSgpKSkKICAgICAgICAgbGluZSA9IG92ZXJyaWRlTGluZU51bWJlci52YWx1
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmgKaW5kZXggZTBkOTkxY2ViZjFlN2FjMTBlZDcxOWMxNTM3ZDgwNzAxMjcyZDdlNy4u
MGJiOWFmNTgxNWE1MTA2M2EwM2IzMjAwMDQxMzYxODg0Y2U2ZGYyNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZUxpbmVB
bmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0OwogCiAjaWYg
RU5BQkxFKEFTU0VNQkxFUikKLSAgICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
IGNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gY2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZygp
OwogI2VuZGlmCiAKICAgICAgICAgQ2xvbmVkQXJndW1lbnRzKiBjcmVhdGVBcmd1bWVudHMoVk0m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGQy
NTYyMzE3MGFkYTFkMDI5ZmRkOGU3MDBhNWVlY2U5MjE1Njg1ZjAuLjYwNmQwZDFhZjIxNDM4MjVj
YTAyNmZiMDMwYTI0OWM3NjVjM2I5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtNTY0LDcgKzU2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBkZXN0ID0gYmFzZSArIGluZGV4IDw8IHNoaWZ0LgotICAgIHZvaWQgc2hpZnRBbmRBZGQo
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCB1aW50OF90IHNoaWZ0LCBSZWdpc3Rl
cklEIGRlc3QsIE9wdGlvbmFsPFJlZ2lzdGVySUQ+IG9wdGlvbmFsU2NyYXRjaCA9IHsgfSkKKyAg
ICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgdWlu
dDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0LCBzdGQ6Om9wdGlvbmFsPFJlZ2lzdGVySUQ+IG9w
dGlvbmFsU2NyYXRjaCA9IHsgfSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzaGlmdCA8IDMyKTsK
ICAgICAgICAgaWYgKHNoaWZ0IDw9IDMpIHsKQEAgLTYzNyw3ICs2MzcsNyBAQCBwdWJsaWM6CiAK
ICNpZiBDUFUoQVJNNjQpCiAgICAgLy8gZGVzdCA9IGJhc2UgKyBpbmRleCA8PCBzaGlmdC4KLSAg
ICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgdWlu
dDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0LCBPcHRpb25hbDxSZWdpc3RlcklEPiA9IHsgfSkK
KyAgICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
dWludDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0LCBzdGQ6Om9wdGlvbmFsPFJlZ2lzdGVySUQ+
ID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJUKHNoaWZ0IDwgMzIpOwogICAgICAgICBBU1NF
UlQoYmFzZSAhPSBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCAwYmZhY2M3NjMwYmJkYzZjODU0MWJhNjUwMjk3OGFk
MGY0ZjhjNDA2Li5mOWE3NTU0MjZiY2Q5Zjc2ODBhM2IyNzNlM2U0MjA2MWI0NTIxNDJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAK
QEAgLTc4NCw3ICs3ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAg
ICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gaXNsYW5kQml0KHVpbnRwdHJfdCBpc2xh
bmQpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpc2xhbmRCaXQodWludHB0cl90IGlz
bGFuZCkKICAgICAgICAgewogICAgICAgICAgICAgdWludHB0cl90IGVuZCA9IHRoaXMtPmVuZCgp
OwogICAgICAgICAgICAgaWYgKGlzbGFuZEJlZ2luKCkgPD0gaXNsYW5kICYmIGlzbGFuZCA8IGVu
ZCkKQEAgLTgwNCw3ICs4MDQsNyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoQmFzZTo6aXNJbkFsbG9jYXRlZE1lbW9yeShsb2NrZXIsIGFkZHJlc3MpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHNpemVfdD4gYml0
ID0gaXNsYW5kQml0KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKSkgeworICAgICAg
ICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBiaXQgPSBpc2xhbmRCaXQoYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oYWRkcmVzcykpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJpdC52YWx1
ZSgpIDwgaXNsYW5kQml0cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWlz
bGFuZEJpdHNbYml0LnZhbHVlKCldOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IGI3Mzk1OGJjMjVhZWE5MTQ0Mjc0ZmU0MWFlYWQyNThmNTU2YzNhZTkuLmVl
MWE0ZTM3ZmZjMjc3ZGNkOTZkNGIwMjJiNzcyN2M1YmJmNzQyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPm9wY29kZUlEKCk7CiAKLSAgICAgICAgT3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1h
cmtlcj4gc2l6ZU1hcmtlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKSVRTaXplU3RhdGlzdGlj
czo6TWFya2VyPiBzaXplTWFya2VyOwogICAgICAgICBpZiAoVU5MSUtFTFkobV9ieXRlY29kZUlu
ZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCAmJiBPcHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXpl
U3RhdGlzdGljcygpKSkgewogICAgICAgICAgICAgU3RyaW5nIGlkID0gbWFrZVN0cmluZygiQmFz
ZWxpbmVfZmFzdF8iLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0pOwogICAgICAgICAgICAgc2l6ZU1h
cmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNzLT5tYXJrU3RhcnQoaWQsICp0aGlzKTsKQEAg
LTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgp
OwogCi0gICAgICAgIE9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJr
ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6
ZU1hcmtlcjsKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNp
emVTdGF0aXN0aWNzKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcgaWQgPSBtYWtlU3RyaW5nKCJC
YXNlbGluZV9zbG93XyIsIG9wY29kZU5hbWVzW29wY29kZUlEXSk7CiAgICAgICAgICAgICBzaXpl
TWFya2VyID0gbV92bS0+aml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgKnRoaXMpOwpA
QCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6
aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRl
eCgwKSkpOwogCi0gICAgT3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1h
cmtlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVN
YXJrZXI7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0
aXN0aWNzKCkpKSB7CiAgICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3By
b2xvZ3VlIik7CiAgICAgICAgIHNpemVNYXJrZXIgPSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+
bWFya1N0YXJ0KGlkLCAqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4
IDg1NTdkMGVlNWQ4YWQ4YjE0NDJkODMwZTRkNjc3MWZmMGNhOGIzNzEuLjRjZTc3ZjViMGNlODk5
NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2
aXJ0dWFsIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5k
bGluZ0NhbGxTaXRlKENvZGVCbG9jayosIENhbGxTaXRlSW5kZXgpOwotICAgIHZpcnR1YWwgT3B0
aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVOVVNFRF9Q
QVJBTShwYyk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVOVVNFRF9QQVJB
TShwYyk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiAgICAgSW50cmluc2ljIGlu
dHJpbnNpYygpIHsgcmV0dXJuIG1faW50cmluc2ljOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggYmU2ZDRkNDBjNDExNzg4MzEwNjEwNDhi
N2I1MWI5NGZhZDU2NGJhOS4uMTI5ZjA2NWFjMzU0YzhjZDlmYzE0MmUyYmFkNjdjMTUyN2ZiNDZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCkKICAgICBsb2FkT3BlcmFuZChqaXQsIG1fbGVmdE9wZXJhbmQsIG1f
bGVmdCwgbV9sZWZ0RlBSKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3B0aW9uYWw8ZG91
YmxlPiBzYWZlUmVjaXByb2NhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lw
cm9jYWw7CiAgICAgaWYgKG1fcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewogICAgICAgICBkb3Vi
bGUgY29uc3RhbnQgPSBtX3JpZ2h0T3BlcmFuZC5hc0NvbnN0TnVtYmVyKCk7CiAgICAgICAgIHNh
ZmVSZWNpcHJvY2FsID0gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGNvbnN0YW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIxYWYzNjUz
MDlkMjc5MzM3MWRlNmViNDAwYjQ0NjhhYTgzNzBiMjUuLjA2MDNmOTNhOWFmZjIxZDlkZDRiMWJi
NDk3OTljOWMyYTNhY2ZjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
c3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAg
ICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICB1aW50MzJfdCBp
ID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKQEAgLTg2Myw3
ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogYmFzZU9iamVjdCwgSgogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IG1heWJlSW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0
QXNVaW50MzJJbmRleCgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heWJl
SW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgdWludDMyX3QgaW5kZXggPSAqbWF5
YmVJbmRleDsKIApAQCAtODg5LDcgKzg4OSw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKCiAg
ICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkgeworICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAg
ICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0
SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwpAQCAtMTk3
OCw3ICsxOTc4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXpl
LCBTbG93UGF0aFJldHVyblR5cGUsIChWTSogdm1Qb2ludGVyLAogICAgICAgICBpZiAoYnl0ZWNv
ZGVJbmRleCkKICAgICAgICAgICAgIG51bVZhcnNXaXRoVmFsdWVzID0gY29kZUJsb2NrLT5udW1D
YWxsZWVMb2NhbHMoKTsKIAotICAgICAgICBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4gbXVz
dEhhbmRsZVZhbHVlcyhjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgbnVtVmFyc1dpdGhWYWx1
ZXMsIDApOworICAgICAgICBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiBtdXN0SGFu
ZGxlVmFsdWVzKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBudW1WYXJzV2l0aFZhbHVlcywg
MCk7CiAgICAgICAgIGludCBsb2NhbHNVc2VkRm9yQ2FsbGVlU2F2ZXMgPSBzdGF0aWNfY2FzdDxp
bnQ+KENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycygpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXN0SGFuZGxlVmFsdWVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBPcGVyYW5kIG9wZXJhbmQgPSBtdXN0SGFuZGxl
VmFsdWVzLm9wZXJhbmRGb3JJbmRleChpKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50
MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7CisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7CiAg
ICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZh
bHVlKSkgewogICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5j
YW5HZXRJbmRleChpKSkKQEAgLTIzNDksNyArMjM0OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25HZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCog
Z2xvCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2Vs
bCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKIAotICAgICAgICBpZiAoT3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0QXNVaW50MzJJbmRleCgpKQorICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQz
MkluZGV4KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFs
V2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgKmluZGV4KSk7CiAKICAgICAgICAgaWYgKHBy
b3BlcnR5LmlzU3RyaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1Rv
Q29kZU9yaWdpbk1hcC5jcHAKaW5kZXggMGIzN2E0MTk1OTdkMzM1NjMyNmZhNjQ1ZjllYzI3NjQy
NTdlNTI1ZC4uYWY1ZmFmYWE1OGY2NzNkNTNhNzU3N2QxZjA5N2JmMDkwMGNlZjI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBkb3VibGUgUENUb0NvZGVPcmlnaW5NYXA6Om1lbW9yeVNpemUoKQogICAg
IHJldHVybiBzaXplOwogfQogCi1PcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1h
cDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAorc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1Rv
Q29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAogewogICAgIHVpbnRwdHJfdCBw
Y0FzSW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGMpOwogICAgIGlmICghKG1fcGNSYW5n
ZVN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBtX3BjUmFuZ2VFbmQpKQpAQCAtMjk1LDcg
KzI5NSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEMo
dm9pZCogcGMpIGNvbnN0CiAgICAgICAgICAgICAvLyBXZSBzdWJ0cmFjdCAxIGJlY2F1c2Ugd2Ug
Z2VuZXJhdGUgZW5kIHBvaW50cyBpbmNsdXNpdmVseSBpbiB0aGlzIHRhYmxlLCBldmVuIHRob3Vn
aCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiByYW5nZXMgb2YgdGhlIGZvcm06IFtwcmV2aW91c1BDLCBj
dXJyZW50UEMpCiAgICAgICAgICAgICB1aW50cHRyX3QgZW5kT2ZSYW5nZSA9IGN1cnJlbnRQQyAt
IDE7CiAgICAgICAgICAgICBpZiAoc3RhcnRPZlJhbmdlIDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8
PSBlbmRPZlJhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2lu
PihwcmV2aW91c09yaWdpbik7IC8vIFdlIHJldHVybiBwcmV2aW91c09yaWdpbiBoZXJlIGJlY2F1
c2UgQ29kZU9yaWdpbidzIGFyZSBtYXBwZWQgdG8gdGhlIHN0YXJ0VmFsdWUgb2YgdGhlIHJhbmdl
LgorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KHByZXZp
b3VzT3JpZ2luKTsgLy8gV2UgcmV0dXJuIHByZXZpb3VzT3JpZ2luIGhlcmUgYmVjYXVzZSBDb2Rl
T3JpZ2luJ3MgYXJlIG1hcHBlZCB0byB0aGUgc3RhcnRWYWx1ZSBvZiB0aGUgcmFuZ2UuCiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENU
b0NvZGVPcmlnaW5NYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmln
aW5NYXAuaAppbmRleCBiMGQ1NjFmYzU2ZDVmMDgxMGM4YzBlY2ZhZmY3MjJkMmQzYjMzZjI1Li4z
MzVjZDg5N2E0MjdkNTg5MDY4Nzc1MDgzMDAyYWUyYzQ5OTg1NTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICBQQ1RvQ29kZU9yaWdpbk1hcChQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImJiwg
TGlua0J1ZmZlciYpOwogICAgIH5QQ1RvQ29kZU9yaWdpbk1hcCgpOwogCi0gICAgT3B0aW9uYWw8
Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
ZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYykgY29uc3Q7CiAKICAgICBkb3VibGUgbWVtb3J5U2l6
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2
MDg4MDE4MzQ2YTgwOGU1Zjg2NDc4NzFhNDQxYjI5Li45MDVmOGQ3ZjJhZmJmNWIwMDYxZWYzZDc1
ZjdmNjY2ZWJkMWRjYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAg
LTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQogICAgICAgICAgICAgICAgIGdldHRlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBzbG90LmdldHRlclNldHRlcigpLT5nZXR0ZXIoKSk7
CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJp
YnV0ZTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4g
ZG9tQXR0cmlidXRlOwogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSAm
JiBzbG90LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgICAgIGRvbUF0dHJpYnV0ZSA9IHNs
b3QuZG9tQXR0cmlidXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IGU0NDA1NTc0NjJlMDQ2YTJiNTA4NzBjNWYzZTk1NmYyMmQz
M2RkYzMuLmZiMGRkZjYxZjQ1MzQ2MDdhMzI2MDMwNjNiMjA5MmNmM2IxYzM3YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTAyMSw3
ICsxMDIxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGUKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFz
VWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9
ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwogICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRl
Y29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJ
bmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CkBAIC0xMTkwLDcgKzExOTAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNT
dHJpY3QoKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRy
eUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0
cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KQEAgLTEyMDAsNyArMTIw
MCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkK
ICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5U
X0VORCgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHkpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJl
Y3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDY3MzAzOTQy
NjNmMzJmMWI1MzU0YzIwZDU0ZGUyNDMwNDcyOTliYmYuLjE5YzgxNWY4NWIzOTRhNzIwOWJiYTU2
MzdjYmQ2NDBlZGY3ZWNhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1
bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgo
KSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KK0FMV0FZU19JTkxJTkUgYXV0byBMZXhl
cjxUPjo6cGFyc2VIZXgoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0Pgogewog
ICAgIEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSk7CiAKQEAgLTE1ODIsNyArMTU4
Miw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBPcHRpb25h
bDxOdW1iZXJQYXJzZVJlc3VsdD4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNf
SU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFy
c2VSZXN1bHQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4g
c3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KIHsKICAgICBBU1NFUlQoaXNBU0NJSUJp
bmFyeURpZ2l0KG1fY3VycmVudCkpOwogCkBAIC0xNjM2LDcgKzE2MzYsNyBAQCBBTFdBWVNfSU5M
SU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VS
ZXN1bHQ+CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBhdXRvIExl
eGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CitBTFdB
WVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51
bWJlclBhcnNlUmVzdWx0PgogewogICAgIEFTU0VSVChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJl
bnQpKTsKICAgICBBU1NFUlQoIW1fYnVmZmVyOC5zaXplKCkgfHwgKG1fYnVmZmVyOC5zaXplKCkg
PT0gMSAmJiBtX2J1ZmZlcjhbMF0gPT0gJzAnKSk7CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBBTFdB
WVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQ
YXJzZVJlc3VsdD4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1
dG8gTGV4ZXI8VD46OnBhcnNlRGVjaW1hbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0
PgorQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBzdGQ6Om9w
dGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogewogICAgIEFTU0VSVChpc0FTQ0lJRGlnaXQobV9j
dXJyZW50KSB8fCBtX2J1ZmZlcjguc2l6ZSgpKTsKICAgICBib29sIGlzTGVnYWN5TGl0ZXJhbCA9
IG1fYnVmZmVyOC5zaXplKCkgJiYgaXNBU0NJSURpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAxNjc0OGRkOTMwZTRiMWYyZGJh
NzU2Zjg3OWVmNzM3NDVkMTY4YmNiLi45ZDM1ZjdiMjQzZTc4Y2NiYzBjMTM3ZDE1MWUyODEyZjE5
ODQwZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0xODEsMTAgKzE4
MSwxMCBAQCBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFy
c2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqLCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKICAg
ICAKICAgICB1c2luZyBOdW1iZXJQYXJzZVJlc3VsdCA9IFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJ
ZGVudGlmaWVyKj47Ci0gICAgQUxXQVlTX0lOTElORSBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4gcGFyc2VIZXgoKTsKLSAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPE51bWJlclBhcnNlUmVz
dWx0PiBwYXJzZUJpbmFyeSgpOwotICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8TnVtYmVyUGFy
c2VSZXN1bHQ+IHBhcnNlT2N0YWwoKTsKLSAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPE51bWJl
clBhcnNlUmVzdWx0PiBwYXJzZURlY2ltYWwoKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0
aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+IHBhcnNlSGV4KCk7CisgICAgQUxXQVlTX0lOTElORSBz
dGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJzZUJpbmFyeSgpOworICAgIEFMV0FZ
U19JTkxJTkUgc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4gcGFyc2VPY3RhbCgpOwor
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4gcGFyc2VE
ZWNpbWFsKCk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50
SW5kaWNhdG9yKCk7CiAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlTXVsdGlsaW5lQ29tbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cAppbmRleCBkMDA4MDNkOWNmOWMzOTY0NWY5NmNjZDdiODg4ZDI5MzQxY2M1NGVhLi45ZTAyNDIx
OGRhYjhlZjRjNzY3NTRiNTk5OGU5MTc4NDg5YmRlZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lk
IE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxl
UHJvZ3JhbU5vZGUsIGNvbnN0CiAgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgog
ICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIKICAgICAvLyBleHBvcnQgeyBhIH0KLSAgICBPcHRp
b25hbDxKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSBt
b2R1bGVSZWNvcmQoKS0+dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRF
bnRyeSA9IG1vZHVsZVJlY29yZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkp
OwogICAgIEFTU0VSVChvcHRpb25hbEltcG9ydEVudHJ5KTsKICAgICBjb25zdCBKU01vZHVsZVJl
Y29yZDo6SW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAg
ICAgZm9yIChhdXRvJiBleHBvcnROYW1lIDogbW9kdWxlUHJvZ3JhbU5vZGUubW9kdWxlU2NvcGVE
YXRhKCkuZXhwb3J0ZWRCaW5kaW5ncygpLmdldChsb2NhbE5hbWUuZ2V0KCkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg3NTYwMGEwNzRmZDM3YjAwNzMxYWNj
NjU3MDZhNjc4MWI5MjE2MTQuLjdjZGYxYzkwNzNmMGQ1ZTk4ZWU2NTBiZWQ4ZWM0Mzg1ZDdiMDMw
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIxNSw3ICsy
MTUsNyBAQCB2b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLUV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxM
ZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBh
cnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJz
RW5kUG9zaXRpb24sIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVs
ZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2
YXRlTmFtZXMpCitFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5l
clJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNv
bnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29u
c3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCiB7CiAg
ICAgQVNUQnVpbGRlciBjb250ZXh0KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVu
YSwgY29uc3RfY2FzdDxTb3VyY2VDb2RlKj4obV9zb3VyY2UpKTsKICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gc291cmNlUGFyc2VNb2RlKCk7CkBAIC02NDksNyArNjQ5LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQXN5bmNHZW4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCit0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwgc3RkOjpvcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7CiAg
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3Vy
Y2VFbGVtZW50cygpOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gMDsKQEAgLTIzNjks
NyArMjM2OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExlCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5j
dGlvbk5hbWVSZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhw
ZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBl
IGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5p
dGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7CiAgICAgYXV0byBtb2RlID0g
c291cmNlUGFyc2VNb2RlKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9k
ZShtb2RlKSk7CkBAIC0yNzE0LDcgKzI3MTQsNyBAQCBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZ2V0TWV0YWRhdGEoUGFyc2VyRnVuY3Rpb25Jbgog
c3RhdGljIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBnZXRNZXRhZGF0YShQYXJzZXJGdW5jdGlvbklu
Zm88QVNUQnVpbGRlcj4mIGluZm8pIHsgcmV0dXJuIGluZm8uYm9keTsgfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlIGRlY2xhcmF0aW9uVHlwZSwg
RXhwb3J0VHlwZSBleHBvcnRUeXBlLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0
aW9uRGVmYXVsdENvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBGdW5jdGlvbkRlY2xhcmF0aW9uVHlwZSBkZWNsYXJhdGlvblR5cGUsIEV4
cG9ydFR5cGUgZXhwb3J0VHlwZSwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCBkZWNsYXJhdGlv
bkRlZmF1bHRDb250ZXh0LCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbikKIHsKICAgICBBU1NFUlQobWF0Y2goRlVOQ1RJT04pKTsKICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKQEAgLTI3NzYsNyAr
Mjc3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUsIERlY2xhcmF0aW9uRGVmYXVsdENv
bnRleHQgZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25E
ZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlLCBE
ZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQsIHN0ZDo6
b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQog
ewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwpAQCAtNDM5Myw3ICs0MzkzLDcgQEAgbmFtZWRQcm9wZXJ0
eToKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkgLy8gQ292ZXJJbml0aWFsaXplZE5hbWUgaXMg
ZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFuZCBBc3NpZ25tZW50UGF0dGVybgogICAgICAg
ICAgICAgY2xhc3NpZnlFeHByZXNzaW9uRXJyb3IoRXJyb3JJbmRpY2F0ZXNQYXR0ZXJuKTsKIAot
ICAgICAgICBPcHRpb25hbDxQcm9wZXJ0eU5vZGU6OlR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UHJvcGVydHlOb2RlOjpUeXBlPiB0eXBlOwogICAgICAgICBpZiAod2FzVW5lc2Nh
cGVkSWRlbnQpIHsKICAgICAgICAgICAgIGlmICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5nZXQpCiAgICAgICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpAQCAt
NTAzMyw3ICs1MDMzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudChUcmUKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFRyZWVCdWlsZGVyLCB0eXBlbmFtZSBQYXJzZXJUeXBlLCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxUcmVlQnVpbGRlciwgQVNUQnVpbGRl
cj46OnZhbHVlPjo6dHlwZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURl
cHRoKFBhcnNlclR5cGUqIHBhcnNlciwgVk0mIHZtLCBPcHRpb25hbDx0eXBlbmFtZSBQYXJzZXJU
eXBlOjpDYWxsT3JBcHBseURlcHRoU2NvcGU+JiBjYWxsT3JBcHBseURlcHRoU2NvcGUsIEV4cHJl
c3Npb25Ob2RlKiBleHByZXNzaW9uKQorc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFw
cGx5RGVwdGgoUGFyc2VyVHlwZSogcGFyc2VyLCBWTSYgdm0sIHN0ZDo6b3B0aW9uYWw8dHlwZW5h
bWUgUGFyc2VyVHlwZTo6Q2FsbE9yQXBwbHlEZXB0aFNjb3BlPiYgY2FsbE9yQXBwbHlEZXB0aFNj
b3BlLCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbikKIHsKICAgICBpZiAoZXhwcmVzc2lvbi0+
aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0
YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHJlc3Npb24pOwpAQCAtNTA0NCw3ICs1MDQ0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlw
ZSogcGFyc2VyLCBWTSYgdm0sIE9wdGlvbmFsPHQKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRy
ZWVCdWlsZGVyLCB0eXBlbmFtZSBQYXJzZXJUeXBlLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxUcmVlQnVpbGRlciwgU3ludGF4Q2hlY2tlcj46OnZhbHVl
Pjo6dHlwZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNl
clR5cGUqLCBWTSYsIE9wdGlvbmFsPHR5cGVuYW1lIFBhcnNlclR5cGU6OkNhbGxPckFwcGx5RGVw
dGhTY29wZT4mLCBTeW50YXhDaGVja2VyOjpFeHByZXNzaW9uKQorc3RhdGljIGlubGluZSB2b2lk
IHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZNJiwgc3RkOjpvcHRpb25hbDx0
eXBlbmFtZSBQYXJzZXJUeXBlOjpDYWxsT3JBcHBseURlcHRoU2NvcGU+JiwgU3ludGF4Q2hlY2tl
cjo6RXhwcmVzc2lvbikKIHsKIH0KIApAQCAtNTIyMSw3ICs1MjIxLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
ZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdXNlZFZhcmlhYmxlc1NpemUgPSBjdXJyZW50U2NvcGUoKS0+Y3VycmVudFVzZWRW
YXJpYWJsZXNTaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJl
c3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBP
cHRpb25hbDxDYWxsT3JBcHBseURlcHRoU2NvcGU+IGNhbGxPckFwcGx5RGVwdGhTY29wZTsKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxDYWxsT3JBcHBseURlcHRoU2NvcGU+IGNh
bGxPckFwcGx5RGVwdGhTY29wZTsKICAgICAgICAgICAgICAgICAgICAgcmVjb3JkQ2FsbE9yQXBw
bHlEZXB0aDxUcmVlQnVpbGRlcj4odGhpcywgbV92bSwgY2FsbE9yQXBwbHlEZXB0aFNjb3BlLCBi
YXNlKTsKIAogICAgICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBh
cnNlQXJndW1lbnRzKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggM2Y1ZDNjOWE1NjMxMzA0MmEwZjczNzU1NWY1Y2Y5YzJiYWQ3Yjg1My4uOTZhZmI0YWE0
YTFjZDY2ZDQ3MjZhNWE0YTcyZWRkNmM0YzJiNmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC05OTIsNyArOTkyLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsK
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gc3RkOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51
bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0LCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4o
KSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMjY2
LDcgKzEyNjYsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVT
dGFjaywgaSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U2NvcGVSZWY+IGZpbmRQcml2YXRlTmFt
ZVNjb3BlKCkKKyAgICBzdGQ6Om9wdGlvbmFsPFNjb3BlUmVmPiBmaW5kUHJpdmF0ZU5hbWVTY29w
ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9zY29wZVN0YWNrLnNpemUoKSk7CiAgICAgICAg
IHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE1MTIsNyArMTUxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlczsKICAgICAgICAgaW50
IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4cGVjdGVkPFBhcnNlSW5uZXJSZXN1bHQsIFN0
cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3Qg
Rml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOworICAgIEV4cGVjdGVkPFBhcnNlSW5uZXJSZXN1
bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQs
IHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CiAKICAgICAvLyBVc2VkIHRv
IGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25N
ZXRhZGF0YU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NDIsMTYgKzE3
NDIsMTYgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXN5
bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVp
bGRlciYsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgcGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVpbGRlciYsIHN0ZDo6b3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0
aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgRml4ZWRWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBudWxscHRyKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5
cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VDbGFzc0RlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwg
RXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRD
b250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQpOwogICAgIGVudW0g
Y2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgeyBEZWNsYXJhdGlvbiwgU3RhdGVtZW50IH07
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVu
Y3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlID0g
RnVuY3Rpb25EZWNsYXJhdGlvblR5cGU6OkRlY2xhcmF0aW9uLCBFeHBvcnRUeXBlID0gRXhwb3J0
VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlv
bkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlvbkRlY2xhcmF0
aW9uVHlwZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRl
ZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6
OlN0YW5kYXJkLCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChU
cmVlQnVpbGRlciYsIGJvb2wgcGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVt
ZW50KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhw
b3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJh
dGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVj
bGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0
ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0
OjpTdGFuZGFyZCwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oVHJlZUJ1aWxk
ZXImLCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRl
ZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNl
RG9XaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVdoaWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7
CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBjcmVhdGVSZXNvbHZlQW5kVXNl
VmFyaWFibGUoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiwgYm9vbCBpc0V2YWwsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBlbnVt
IGNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgeyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwg
TWV0aG9kIH07Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
Ym9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgYm9vbCBuYW1l
SXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0KTsKICAgICAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rp
b25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAgCkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBw
cml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25z
dCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMpCiB7CiAg
ICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTIyNzEsNyArMjI3MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1pbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwYXJzZUZ1bmN0aW9uRm9y
RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcGFyc2VGdW5jdGlvbkZvckZ1
bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNl
ckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUs
IHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uKQogewogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
S2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAppbmRl
eCA0YjNiM2JlMzAzZWJlYWRjODY0MDA5N2M3Zjg4NTdlMTdhNGVkYmRlLi4wMGQzYWY5NGQzMWMz
MmFhNzE1MGRjZjIzN2I0MGE0OGI0MGM2OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgU291
cmNlQ29kZUtleSgKICAgICAgICAgY29uc3QgVW5saW5rZWRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFNvdXJjZUNvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSwgCiAgICAgICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsCi0gICAgICAg
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgT3B0aW9u
YWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQorICAgICAg
ICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIHN0ZDo6
b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQog
ICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fZmxhZ3MoY29kZVR5cGUsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBjb2RlR2VuZXJhdGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKaW5kZXggN2JmNWMz
ZTAxYmNjMDAxNjZmNzA0MTVmODMzY2QxNzJkZjVkNTZmYy4uMWFkNDAzZmIwZjVhNjNhNjk1NTJi
ZWU2ZjJlZmQxOGE0YWFkNjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMTAzLDIwICsxMDMsMjAgQEAg
dm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50
cnkmIGVudHJ5KQogICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8v
IFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgogfQogCi1hdXRvIEFic3RyYWN0TW9k
dWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1l
KSAtPiBPcHRpb25hbDxJbXBvcnRFbnRyeT4KK2F1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRy
eUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IHN0ZDo6b3B0
aW9uYWw8SW1wb3J0RW50cnk+CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0
RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50
cmllcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gT3B0
aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLWF1dG8gQWJzdHJhY3RN
b2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnRO
YW1lKSAtPiBPcHRpb25hbDxFeHBvcnRFbnRyeT4KK2F1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBzdGQ6
Om9wdGlvbmFsPEV4cG9ydEVudHJ5PgogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4
cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBv
cnRFbnRyaWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVy
biBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAogYXV0byBBYnN0
cmFjdE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZp
ZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4gRXhwb3J0RW50
cnkKQEAgLTE2NCw3ICsxNjQsNyBAQCBhdXRvIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZl
SW1wb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZQogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRy
eSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5pbXBsKCkpOworICAgIHN0ZDo6b3B0aW9u
YWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShs
b2NhbE5hbWUuaW1wbCgpKTsKICAgICBpZiAoIW9wdGlvbmFsSW1wb3J0RW50cnkpCiAgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOwogCkBAIC0yNDMsMTIgKzI0MywxMiBAQCBp
bmxpbmUgYm9vbCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5OjpIYXNoOjplcXVh
bChjb25zdCBSZXNvbHZlUXVlcnkmCiAgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhz
Lm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKIH0KIAot
YXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVk
U3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8UmVzb2x1dGlvbj4KK2F1dG8gQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0lt
cGwqIGV4cG9ydE5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4KIHsKICAgICBjb25z
dCBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvbHV0aW9uQ2FjaGUuZmluZChleHBvcnROYW1lKTsKICAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvbHV0aW9uQ2FjaGUuZW5kKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPFJlc29sdXRpb24+KGl0ZXJhdG9y
LT52YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4oaXRlcmF0b3It
PnZhbHVlKTsKIH0KIAogdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6Y2FjaGVSZXNvbHV0aW9u
KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lLCBjb25zdCBSZXNvbHV0aW9uJiByZXNvbHV0
aW9uKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVz
b2x2ZUV4cG9ydEltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKIAogICAg
ICAgICAgICAgLy8gIDQuIE9uY2Ugd2UgZm9sbG93IHN0YXIgbGlua3MsIHdlIHNob3VsZCBub3Qg
cmV0cmlldmUgdGhlIHJlc3VsdCBmcm9tIHRoZSBjYWNoZSBhbmQgc2hvdWxkIG5vdCBjYWNoZSB0
aGUgcmVzdWx0LgogICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJMaW5rcykgewotICAgICAgICAg
ICAgICAgIGlmIChPcHRpb25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gbW9kdWxl
UmVjb3JkLT50cnlHZXRDYWNoZWRSZXNvbHV0aW9uKHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVz
b2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihxdWVyeS5leHBv
cnROYW1lLmdldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50
VG9wKCpjYWNoZWRSZXNvbHV0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBS
ZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb25zdCBPcHRp
b25hbDxFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5
R2V0RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxl
UmVjb3JkLT50cnlHZXRFeHBvcnRFbnRyeShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKICAgICAg
ICAgICAgIGlmICghb3B0aW9uYWxFeHBvcnRFbnRyeSkgewogICAgICAgICAgICAgICAgIC8vIElm
IHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0ZWQgYmluZGluZyBpbiB0aGUgY3VycmVudCBtb2R1
bGUsCiAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJzLgpA
QCAtNzEyLDcgKzcxMiw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBv
cnRJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0CiBhdXRvIEFic3RyYWN0
TW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpIC0+IFJlc29sdXRpb24KIHsKICAgICAvLyBM
b29rIHVwIHRoZSBjYWNoZWQgcmVzb2x1dGlvbiBmaXJzdCBiZWZvcmUgZW50ZXJpbmcgdGhlIHJl
c29sdmluZyBsb29wLCBzaW5jZSB0aGUgbG9vcCBzZXR1cCB0YWtlcyBzb21lIGNvc3QuCi0gICAg
aWYgKE9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSB0cnlHZXRDYWNoZWRS
ZXNvbHV0aW9uKGV4cG9ydE5hbWUuaW1wbCgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxSZXNv
bHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihleHBvcnRO
YW1lLmltcGwoKSkpCiAgICAgICAgIHJldHVybiAqY2FjaGVkUmVzb2x1dGlvbjsKICAgICByZXR1
cm4gcmVzb2x2ZUV4cG9ydEltcGwoZ2xvYmFsT2JqZWN0LCBSZXNvbHZlUXVlcnkodGhpcywgZXhw
b3J0TmFtZS5pbXBsKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDhkZDk3ZTNhM2U4MTYxYjljZjNmZGI3
NTg4ZjE5NWQyYjg4ZjA0MDEuLmE4ZTlhNGZkNzlmNDI4Yzc3YjFjNThhZTdmZjM4MDBiMjYzZjll
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9k
dWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RN
b2R1bGVSZWNvcmQuaApAQCAtMTA3LDggKzEwNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZElt
cG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShj
b25zdCBFeHBvcnRFbnRyeSYpOwogCi0gICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldElt
cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOwotICAgIE9wdGlvbmFsPEV4
cG9ydEVudHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFt
ZSk7CisgICAgc3RkOjpvcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5p
cXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRy
eT4gdHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOwogCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVL
ZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9kdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQpAQCAtMTY0LDcgKzE2NCw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RydWN0IFJlc29sdmVRdWVyeTsKICAgICBzdGF0
aWMgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0SW1wbChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFJl
c29sdmVRdWVyeSYpOwotICAgIE9wdGlvbmFsPFJlc29sdXRpb24+IHRyeUdldENhY2hlZFJlc29s
dXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVzb2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhw
b3J0TmFtZSk7CiAgICAgdm9pZCBjYWNoZVJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4
cG9ydE5hbWUsIGNvbnN0IFJlc29sdXRpb24mKTsKIAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2
ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtl
eSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBjYjFmOWZmMDdh
M2YyNzZiNDQ5YmM4M2E5ODAwZTJhN2EzYThjMDFiLi4xMmQzN2QyZmY2OWM5MGI1MjcxMmNiZjBj
OGViMWIyMDZkOTkyMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgICAgICBtX3B0clRv
T2Zmc2V0TWFwLmFkZChwdHIsIG9mZnNldCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8cHRyZGlm
Zl90PiBjYWNoZWRPZmZzZXRGb3JQdHIoY29uc3Qgdm9pZCogcHRyKQorICAgIHN0ZDo6b3B0aW9u
YWw8cHRyZGlmZl90PiBjYWNoZWRPZmZzZXRGb3JQdHIoY29uc3Qgdm9pZCogcHRyKQogICAgIHsK
ICAgICAgICAgYXV0byBpdCA9IG1fcHRyVG9PZmZzZXRNYXAuZmluZChwdHIpOwogICAgICAgICBp
ZiAoaXQgPT0gbV9wdHJUb09mZnNldE1hcC5lbmQoKSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghc3JjKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChPcHRpb25hbDxwdHJkaWZmX3Q+IG9mZnNldCA9IGVuY29kZXIuY2FjaGVkT2Zmc2V0Rm9yUHRy
KHNyYykpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8cHRyZGlmZl90PiBvZmZzZXQgPSBl
bmNvZGVyLmNhY2hlZE9mZnNldEZvclB0cihzcmMpKSB7CiAgICAgICAgICAgICB0aGlzLT5tX29m
ZnNldCA9ICpvZmZzZXQgLSBlbmNvZGVyLm9mZnNldE9mKCZ0aGlzLT5tX29mZnNldCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KIAogICAgICAgICBwdHJkaWZmX3QgYnVmZmVyT2Zmc2V0ID0gZGVjb2Rlci5vZmZz
ZXRPZih0aGlzLT5idWZmZXIoKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDx2b2lkKj4gcHRyID0g
ZGVjb2Rlci5jYWNoZWRQdHJGb3JPZmZzZXQoYnVmZmVyT2Zmc2V0KSkgeworICAgICAgICBpZiAo
c3RkOjpvcHRpb25hbDx2b2lkKj4gcHRyID0gZGVjb2Rlci5jYWNoZWRQdHJGb3JPZmZzZXQoYnVm
ZmVyT2Zmc2V0KSkgewogICAgICAgICAgICAgaXNOZXdBbGxvY2F0aW9uID0gZmFsc2U7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U291cmNlKj4oKnB0cik7CiAgICAgICAgIH0KQEAg
LTgyMyw5ICs4MjMsOSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNs
YXNzIENhY2hlZE9wdGlvbmFsIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PE9wdGlvbmFs
PFNvdXJjZVR5cGU8VD4+PiB7CitjbGFzcyBDYWNoZWRPcHRpb25hbCA6IHB1YmxpYyBWYXJpYWJs
ZUxlbmd0aE9iamVjdDxzdGQ6Om9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+PiB7CiBwdWJsaWM6Ci0g
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWw8U291cmNlVHlw
ZTxUPj4mIHNvdXJjZSkKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+JiBzb3VyY2UpCiAgICAgewogICAgICAgICBpZiAo
IXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzMyw3ICs4MzMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHRoaXMtPnRlbXBsYXRlIGFsbG9jYXRlPFQ+KGVuY29kZXIpLT5lbmNvZGUoZW5j
b2RlciwgKnNvdXJjZSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U291cmNlVHlwZTxUPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxTb3VyY2VUeXBl
PFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODQx
LDcgKzg0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHsgdGhpcy0+dGVtcGxhdGUgYnVm
ZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKSB9OwogICAgIH0KIAotICAgIHZvaWQgZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+JiBkc3QpIGNvbnN0CisgICAg
dm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwgc3RkOjpvcHRpb25hbDxTb3VyY2VUeXBlPFQ+
PiYgZHN0KSBjb25zdAogICAgIHsKICAgICAgICAgZHN0ID0gZGVjb2RlKGRlY29kZXIpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggYzYyYWM1
NDcxOTFjOGE4MDJlZjQwM2RlN2M0MzA2ODZjNjQ5ZDQ4Zi4uOGVkNWRhYzM3NDU5ZmE4YjVlNmU3
ZTQxMDc1ZGI4YjAxMDZmZWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBzdHJ1Y3QgQ2xhc3NJbmZvIHsKICAgICBjb25z
dCBDbGFzc0luZm8qIHBhcmVudENsYXNzOwogICAgIGNvbnN0IEhhc2hUYWJsZSogc3RhdGljUHJv
cEhhc2hUYWJsZTsKICAgICBDaGVja0pTQ2FzdFNuaXBwZXRGdW5jdGlvblB0ciBjaGVja1N1YkNs
YXNzU25pcHBldDsKLSAgICBjb25zdCBPcHRpb25hbDxKU1R5cGVSYW5nZT4gaW5oZXJpdHNKU1R5
cGVSYW5nZTsgLy8gVGhpcyBpcyByYW5nZSBvZiBKU1R5cGVzIGZvciBkb2luZyBpbmhlcml0YW5j
ZSBjaGVja2luZy4gSGFzIHRoZSBmb3JtOiBbZmlyc3RKU1R5cGUsIGxhc3RKU1R5cGVdIChpbmNs
dXNpdmUpLgorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IGluaGVyaXRzSlNU
eXBlUmFuZ2U7IC8vIFRoaXMgaXMgcmFuZ2Ugb2YgSlNUeXBlcyBmb3IgZG9pbmcgaW5oZXJpdGFu
Y2UgY2hlY2tpbmcuIEhhcyB0aGUgZm9ybTogW2ZpcnN0SlNUeXBlLCBsYXN0SlNUeXBlXSAoaW5j
bHVzaXZlKS4KICAgICBNZXRob2RUYWJsZSBtZXRob2RUYWJsZTsKICAgICBjb25zdCBUeXBlZEFy
cmF5VHlwZSB0eXBlZEFycmF5U3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdW5zaWduZWQgc3RhdGlj
Q2xhc3NTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
aW5kZXggMTQ5NGM3ZThjZmNmYzg3YTc1MDFhNDljODZiNzJlMWYzMzI3ZmFmYS4uOGFmZDAyYWEz
MGExYzM5YjdmOTMwZmFhMGQzNmVkZThmOTkwNGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayhWTSYKICAgICByZXR1cm4gZ2V0VW5saW5rZWRHbG9iYWxDb2RlQmxvY2s8VW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIGNvZGVHZW5l
cmF0aW9uTW9kZSwgZXJyb3IsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7CiB9CiAKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25F
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVD
YWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIFBhcnNlckVycm9yJiBlcnJv
cikKIHsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQgPSBmYWxzZTsKICAgICBTb3Vy
Y2VDb2RlS2V5IGtleSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgK
aW5kZXggMGRkZjY0OTFlNzY2NjY0NmFiNTliODY5YjQxNjNmMDg3NDBmNDFiNC4uYzQxZjRhMzAx
MzNjM2ZkYTkxZjM3MjdiNDA5Y2Q0NGEyODU1OTFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soVk0mLCBQ
cm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUs
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogZ2V0VW5saW5rZWRFdmFsQ29kZUJsb2NrKFZNJiwgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlw
ZSk7CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBnZXRVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soVk0mLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImKTsK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0VW5saW5rZWRHbG9iYWxGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIFBhcnNlckVycm9yJik7CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZN
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIFBhcnNlckVycm9yJik7CiAKICAgICB2b2lkIHVwZGF0ZUNhY2hl
KGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpT
TG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5o
CmluZGV4IDA4NTM5YjAxM2NkYWU1MmNiNDFjMTZlZTA4OGQ3ZDk0MzQ1N2M3MDUuLjJhZDE0ZjFh
Y2E3NTBlMTM2OTIxYjZlM2ZmZDAwYWQ3YmU0OWM2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxDb25jdXJyZW50SlNMb2NrZXJJ
bXBsPiBtX2xvY2tlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbmN1cnJlbnRKU0xvY2tlckltcGw+
IG1fbG9ja2VyOwogfTsKIAogY2xhc3MgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIDogcHVibGlj
IENvbmN1cnJlbnRKU0xvY2tlckJhc2UgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKIAog
I2lmICFkZWZpbmVkKE5ERUJVRykKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8RGlzYWxsb3dHQz4g
bV9kaXNhbGxvd0dDOworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dD
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCmluZGV4IGYzYjhlOTE0MTk0MjJmMjA3YzRm
NjExODU5YTRhZWQ0NTY2Yzc1MTIuLjVlZmUxYjYyMTYxNDEyOWIyMjE3N2U3ZmQ1NTFiMWFiN2Zj
YTI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIWhhc1dyaXRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0
ZShDb25maWd1cmFibGVTaGlmdCkgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0Nv
bmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVy
YWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVu
dW1lcmFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNFbnVtZXJhYmxlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwCmluZGV4IGQwZTFiZjVh
MTAwMjUwOWVhODVmN2VhM2IxMWEwZjZhZjk0OGU1NWUuLmUyY2ExNjJlMGI1NGUyNWNmMDY5ZWVh
OGM4N2UxZWVhMmU0Y2Q1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRmlsZUJh
c2VkRnV6emVyQWdlbnQ6OkZpbGVCYXNlZEZ1enplckFnZW50KFZNJiB2bSkKIFNwZWN1bGF0ZWRU
eXBlIEZpbGVCYXNlZEZ1enplckFnZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFByZWRpY3Rpb25UYXJnZXQmIHRhcmdldCwgU3BlY3VsYXRlZFR5cGUgb3Jp
Z2luYWwpCiB7CiAgICAgRnV6emVyUHJlZGljdGlvbnMmIGZ1enplclByZWRpY3Rpb25zID0gZW5z
dXJlR2xvYmFsRnV6emVyUHJlZGljdGlvbnMoKTsKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlw
ZT4gZ2VuZXJhdGVkID0gZnV6emVyUHJlZGljdGlvbnMucHJlZGljdGlvbkZvcih0YXJnZXQubG9v
a3VwS2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBnZW5lcmF0ZWQgPSBm
dXp6ZXJQcmVkaWN0aW9ucy5wcmVkaWN0aW9uRm9yKHRhcmdldC5sb29rdXBLZXkpOwogCiAgICAg
U291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gY29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigp
OwogICAgIGF1dG8gc291cmNlVXBUb0Rpdm90ID0gcHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0cmlu
Zyh0YXJnZXQuZGl2b3QgLSB0YXJnZXQuc3RhcnRPZmZzZXQsIHRhcmdldC5zdGFydE9mZnNldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQyM2RmZjk5YmVhOTkwZDEwNTBjOGFlZTExMWJmZGQ3ZmE4MjNmYzAu
LmJmODNkNDI3MGY1MzEyZjc0NmU2NDUwZjY2NDVlODBhMGRmNjU1MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC0xMDQsNyArMTA0LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RW5hYmxlZENoZWNrKAogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0
aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dy
YW07Ci0gICAgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChh
cmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5j
dGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAppbmRleCAxODZmYjI0ZmFiYTBjNDZjZWJlMDI3ZWE1NmMwNzJhNzVj
OWNhY2I4Li44ZjVjYjVjZGVkNjBiNmI3N2MzNTExMDlkNWU1YTdlOWE4NjQxYWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTkxLDcgKzkxLDcgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKEZ1bmN0aW9uRXhlY3V0
YWJsZSk7CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZSgKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgIEpTT2JqZWN0KiYgZXhj
ZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29u
c3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCisgICAgSlNPYmplY3QqJiBleGNlcHRpb24s
IGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBhZTgyNDY0ZTk2MmJjMzUxM2MwYTg5
MjI0NDNjNDFlY2Y5YTkxODQ0Li4yMjNhYzcyNjI0ZjJlN2Q4ZThhMzNiMDg3YTY1ZDQyZjBjYjUy
YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCAKLSAgICAgICAg
SlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAgICAgIEpT
T2JqZWN0KiYgZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBzdGQ6Om9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CiAKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKQEAgLTE4Miw3ICsxODIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9vdmVycmlkZUxpbmVOdW1iZXIg
PSBvdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBvdmVycmlk
ZUxpbmVOdW1iZXIoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVO
dW1iZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3Bw
CmluZGV4IDNjMDQ4OWY4ODY3ZGMxZjg3NjlkOTcwMTdlMTYxZmQxOWRmOTYzMTguLjk3MDIxNWUy
NDZjYjJjOGI4MjkwNWZhYzlmM2Y2YmUxYTE4NzE2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgRnV6emVyUHJlZGljdGlvbnM6OkZ1enplclByZWRpY3Rpb25zKGNvbnN0IGNoYXIqIGZpbGVu
YW1lKQogICAgIH0KIH0KIAotT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IEZ1enplclByZWRpY3Rp
b25zOjpwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmluZyYga2V5KQorc3RkOjpvcHRpb25hbDxTcGVj
dWxhdGVkVHlwZT4gRnV6emVyUHJlZGljdGlvbnM6OnByZWRpY3Rpb25Gb3IoY29uc3QgU3RyaW5n
JiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IG1fcHJlZGljdGlvbnMuZmluZChrZXkpOwogICAgIGlm
IChpdCA9PSBtX3ByZWRpY3Rpb25zLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmgKaW5kZXggMGRiOTZhNDg5Y2I0ZDU0YTVhMGFm
MzJjMjE2YTIxY2VkMzRjNjZmMC4uZmMxYjZjYmI5NjA0ZGFjNDY1NmE1NTYwMDNiMDhmZjgzNWU0
ZjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJl
ZGljdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVk
aWN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEZ1enplclByZWRpY3Rpb25zIHsKIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBGdXp6ZXJQcmVkaWN0aW9ucyhjb25zdCBjaGFy
Kik7CiAKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gcHJlZGljdGlvbkZvcihjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBwcmVkaWN0aW9uRm9y
KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBTcGVjdWxh
dGVkVHlwZT4gbV9wcmVkaWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDhjMjhlMzVmYTRkNmFh
OWRiMTJlZTFkMmE5OTk0MjUyNTdhOGYyNjYuLjcyMzE1MDNiMzQ2ZGRmMzE2N2RkYmY3YmEzZmNm
YjE1NmQ4YTFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtNjUsNyArNjUsNyBAQCBib29sIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgcmV0dXJuIEdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHNsb3QpOwogCiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgIGlmIChVTkxJS0VM
WShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmpl
Y3QsIGlkZW50LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkp
OwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQp
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7
CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmlzTWFwcGVkQXJndW1lbnQoaW5kZXgudmFs
dWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTc3LDcgKzE3Nyw3IEBA
IGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChpZGVudCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNs
b3QpKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KgogICAgICAg
ICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICB9IGVsc2UgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpIHsK
KyAgICB9IGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBw
YXJzZUluZGV4KGlkZW50KSkgewogICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5k
ZXgudmFsdWUoKTsKICAgICAgICAgYm9vbCBpc01hcHBlZCA9IHRoaXNPYmplY3QtPmlzTWFwcGVk
QXJndW1lbnQoaW5kZXgpOwogICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgbmV3RGVzY3JpcHRv
ciA9IGRlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
YXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggNzIwZTY4ZThiNmFiM2ZmZTRjMGEyMDVlOWY4MmVk
MWU3NzQ1NTFiZS4uMjA1ZTFhOTM5NDNiMzVhYWQxYmZmNTI5MDkyZGUzMTNhY2UwNTgwZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNo
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2Fj
aGUuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSArIGltcGwtPmhhc2goKTsKICAgICB9CiAKLSAgICBB
TFdBWVNfSU5MSU5FIE9wdGlvbmFsPGJvb2w+IGdldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BOYW1lKQorICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxib29s
PiBnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wTmFtZSkKICAgICB7
CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gcHJvcE5hbWUudWlkKCk7CiAgICAg
ICAgIFN0cnVjdHVyZUlEIGlkID0gc3RydWN0dXJlLT5pZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAppbmRleCBmMTFmMGE1YjRj
NmE5NWZiODQ4OWU3NTUwZTAyYjY2MWMxMWI4OGE3Li41MTYwZTgxOGMwMTliZWQ3MjYxODNhMzQ5
ZTY2NzgxNjFkNjIwMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbElubGluZXMuaApAQCAtMTE3LDcgKzExNyw3IEBAIEFMV0FZU19JTkxJTkUg
dWludDMyX3QganNNYXBIYXNoRm9yQWxyZWFkeUhhc2hlZFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgcmV0dXJuIGpzTWFwSGFzaEltcGw8RXhjZXB0aW9uRXhwZWN0YXRpb246
OlNob3VsZE5vdFRocm93PihnbG9iYWxPYmplY3QsIHZtLCB2YWx1ZSk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNWYWx1ZSBrZXkp
CitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhh
c2goSlNWYWx1ZSBrZXkpCiB7CiAgICAga2V5ID0gbm9ybWFsaXplTWFwS2V5KGtleSk7CiAgICAg
aWYgKGtleS5pc1N0cmluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKaW5kZXggMTcxNGI4YWRkNWRiOWRlNjVlNWMxNjM5OTkwNGJjMzMxZGUzNmM3YS4u
YjdiOTFmMDA5ZWFkNjNjNWVjNWViZThlYzI4MzU1MGQ3YjQxMGY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMzgsNyArMzgsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNJbmRleCh1aW50MzJfdCBpbmRleCkKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRl
eChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQUxXQVlTX0lO
TElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IENoYXJUeXBlKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlz
IG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0aCkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlT
X0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlwZSogY2hh
cmFjdGVycywgdW5zaWduZWQKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUFMV0FZU19JTkxJTkUg
T3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoU3RyaW5nSW1wbCYgaW1wbCkKK0FMV0FZU19J
TkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBpbXBs
KQogewogICAgIGlmIChpbXBsLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbmRleChp
bXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVuZ3RoKCkpOwpAQCAtMjcyLDcgKzI3Miw3IEBAIGlu
bGluZSBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IFVD
aGFyKiBzLCB1bnNpZ25lZCBsZW5nCiAgICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcywgbGVuZ3Ro
KTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAg
YXV0byB1aWQgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgICBpZiAoIXVpZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4
IDI4YmJmNmYzZWViMzEyMzZiNzgzZDQ2YTUxOGI5M2Q3MDBhODZjYjUuLjI3MjlkZjlkZDRkMTVl
MTliN2IyMDE5Y2E5NGRkNzY0N2M1YTY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNTYyLDcgKzU2Miw3IEBA
IHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldID0gU3RyaW5nKGhvdXJD
eWNsZVN0cmluZyhob3VyQ3ljbGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBob3VyMTIsIGhvdXJDeWNsZSBpcyBpZ25vcmVkLgotICAgICAgICAvLyBXZSBhcmUgc2V0
dGluZyBudWxsIFN0cmluZyBleHBsaWNpdGx5IGhlcmUgKGxvY2FsZU9wdGlvbnMnIGVudHJpZXMg
YXJlIE9wdGlvbmFsPFN0cmluZz4pLiBUaGlzIGxlYWRzIHVzIHRvIHVzZSBIb3VyQ3ljbGU6Ok5v
bmUgbGF0ZXIuCisgICAgICAgIC8vIFdlIGFyZSBzZXR0aW5nIG51bGwgU3RyaW5nIGV4cGxpY2l0
bHkgaGVyZSAobG9jYWxlT3B0aW9ucycgZW50cmllcyBhcmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+
KS4gVGhpcyBsZWFkcyB1cyB0byB1c2UgSG91ckN5Y2xlOjpOb25lIGxhdGVyLgogICAgICAgICBs
b2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6
SGMpXSA9IFN0cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAppbmRleCA0ZmRkYWYxNWYzZmY3MDRlZDBlN2Mw
MTAyMjM4NTAwNDM5Yjg4NGQxLi40MmI3YjBjMDFiYWE4NzAzNGVhYTE0NjBmNzE0YWYzNjdiY2Iw
NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRp
YWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAg
IG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5hcnJvdyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7ICJz
aG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsgImxvbmciX3MsIFN0eWxlOjpMb25nIH0gfSwgInN0
eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiX3Ms
IFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
Ci0gICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxPcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBl
OjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3Ms
IFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlw
ZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9y
IFwiY3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRsT3B0
aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVy
dHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVn
aW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAi
Y3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0gfSwgInR5cGUgbXVzdCBiZSBlaXRoZXIgXCJs
YW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBvciBcImN1cnJlbmN5XCIiX3MsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICBpZiAoIXR5cGUpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGUuaAppbmRleCBlMWQ4NWM5MWYxMmRiOGE5NzE4MjM1NTI5NmRi
YTEwZjNlNWM2NzM3Li4zMTRmOTRkYTRhYjdkNTU2ODQ5NDkzMzNjMjBiZWY4MzE0ZDNkZTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oCkBAIC04NSwxMSAr
ODUsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBTdHJpbmcgbV9z
Y3JpcHQ7CiAgICAgU3RyaW5nIG1fcmVnaW9uOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9jYWxl
bmRhcjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY2FzZUZpcnN0OwotICAgIE9wdGlvbmFsPFN0
cmluZz4gbV9jb2xsYXRpb247Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtX2hvdXJDeWNsZTsKLSAg
ICBPcHRpb25hbDxTdHJpbmc+IG1fbnVtYmVyaW5nU3lzdGVtOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBtX2NhbGVuZGFyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2Nhc2VGaXJz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9jb2xsYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG1faG91ckN5Y2xlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX251
bWJlcmluZ1N5c3RlbTsKICAgICBUcmlTdGF0ZSBtX251bWVyaWMgeyBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA1ZTI0Yzk0NTMwYTJkN2E1YWM4OTgxNTAzNGZhMGM0
OTU3MzU1NThhLi40MmE4ZTk1ZmVkMTk0ODIxYmY1YmU4MTAwNGU2YTRiMDQ2MDZkNWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cApAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBNZWFzdXJlVW5pdCB7CiAgICAgQVNDSUlMaXRl
cmFsIHN1YlR5cGU7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9u
ZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmll
cihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgTWVh
c3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKICAgICAgICAgeyAiYXJlYSJfcywgImFjcmUiX3Mg
fSwKQEAgLTIzMywxMCArMjMzLDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBNZWFzdXJlVW5p
dCBudW1lcmF0b3I7Ci0gICAgT3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yOworICAg
IHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRlbm9taW5hdG9yOwogfTsKIAotc3RhdGljIE9w
dGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmll
dyB1bml0SWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3
ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKIHsKICAg
ICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVudGlm
aWVyCiAgICAgaWYgKGF1dG8gdW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1
bml0SWRlbnRpZmllcikpCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmEKIAogICAgIFN0cmluZyB1bml0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0IiksIHsgfSwgbnVsbHB0ciwg
bnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBP
cHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXQ7CisgICAgc3RkOjpvcHRpb25h
bDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXQ7CiAgICAgaWYgKCF1bml0LmlzTnVsbCgp
KSB7CiAgICAgICAgIHdlbGxGb3JtZWRVbml0ID0gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKHVu
aXQpOwogICAgICAgICBpZiAoIXdlbGxGb3JtZWRVbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDdjZjljODY3MDZiZjY1NTQzZjhkZTlh
MzE0OTNmZWVjMTAyOGMxMTEuLmUxNDAzY2YwZDE3NzI0MDgwNTI4MWQ2NTJjODIzMDJkMWViZDk1
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBA
IC0xNDM4LDcgKzE0MzgsNyBAQCBib29sIGlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdW
aWV3IGN1cnJlbmN5KQogICAgIHJldHVybiBjdXJyZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1cnJl
bmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpOwogfQogCi1PcHRpb25h
bDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVMb2NhbGVJRFdpdGhvdXROdWxsVGVybWlu
YXRvcihjb25zdCBjaGFyKiBsb2NhbGVJRCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIsIDMy
Pj4gY2Fub25pY2FsaXplTG9jYWxlSURXaXRob3V0TnVsbFRlcm1pbmF0b3IoY29uc3QgY2hhciog
bG9jYWxlSUQpCiB7CiAgICAgQVNTRVJUKGxvY2FsZUlEKTsKICAgICBWZWN0b3I8Y2hhciwgMzI+
IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCA5NWViN2JiNzk5YjVlNzI4MjE4NTNmOWE5YmE0YmIyOTAyMWJkMDUyLi5lZTZjOTZhZTAxMTc1
MjczYTNkOTUyOTg2ZGZlODU3ODQzMjM5ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgVmVjdG9yPGNoYXIsIDMyPiBs
b2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnV2l0aE51bGxUZXJtaW5hdG9yKGNvbnN0IENTdHJp
bmcmKTsKIFN0cmluZyBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKGNvbnN0IGNoYXIqLCBib29sIGlz
SW1tb3J0YWwgPSBmYWxzZSk7CiBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzKTsKIAotdXNpbmcgUmVzb2x2ZUxvY2Fs
ZU9wdGlvbnMgPSBzdGQ6OmFycmF5PE9wdGlvbmFsPFN0cmluZz4sIG51bWJlck9mUmVsZXZhbnRF
eHRlbnNpb25LZXlzPjsKK3VzaW5nIFJlc29sdmVMb2NhbGVPcHRpb25zID0gc3RkOjphcnJheTxz
dGQ6Om9wdGlvbmFsPFN0cmluZz4sIG51bWJlck9mUmVsZXZhbnRFeHRlbnNpb25LZXlzPjsKIHVz
aW5nIFJlbGV2YW50RXh0ZW5zaW9ucyA9IHN0ZDo6YXJyYXk8U3RyaW5nLCBudW1iZXJPZlJlbGV2
YW50RXh0ZW5zaW9uS2V5cz47CiBzdHJ1Y3QgUmVzb2x2ZWRMb2NhbGUgewogICAgIFN0cmluZyBs
b2NhbGU7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBpc1N0cnVjdHVyYWxseVZhbGlkTGFuZ3Vh
Z2VUYWcoU3RyaW5nVmlldyk7CiAKIGJvb2wgaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmlu
Z1ZpZXcpOwogCi1PcHRpb25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVMb2NhbGVJ
RFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdCBjaGFyKiBsb2NhbGVJRCk7CitzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxjaGFyLCAzMj4+IGNhbm9uaWNhbGl6ZUxvY2FsZUlEV2l0aG91dE51bGxUZXJt
aW5hdG9yKGNvbnN0IGNoYXIqIGxvY2FsZUlEKTsKIAogc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRl
cmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCA2MmM0ODhmMDU0MzdhZjIzMDNlYmRkNGRm
YTQ4ZTYxNGMzYjg3ZDRhLi4wYjU5NjYxMmZmOGMzNWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3
IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRpbWV1bml0Ci1zdGF0aWMgT3B0aW9uYWw8VVJl
bGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRpbWVVbml0VHlwZShTdHJpbmdWaWV3IHVuaXQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZlVGlt
ZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKIHsKICAgICBTdHJpbmdWaWV3IHNpbmd1bGFyID0g
c2luZ3VsYXJVbml0KHVuaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcAppbmRleCBkNGFiNDlhYTFjNDVlZjY0NDIxMDM1NDM1NmIxOTkwZmQ0ZTgyMGNi
Li40MGE5MjI0ZDY4NTk3YzEwOTA4YTE5YTUzOTljYTcxMWE1NTg4YjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBj
b25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9y
SW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCitzdGQ6Om9wdGlvbmFsPEl0ZXJhdGlvbktp
bmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAg
ICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKICAgICBjYXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCA3YTljZDcwMjll
MzhmZGMzZjExMDUwOTE0ZDRkZDIwYjUzZGEzNTJhLi43YTg0OTY3ODVmYmUyYmM0MGVlOTI4MzQ0
N2QwZGQ4NDc1OGI5NjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaApAQCAtMTk2LDcgKzE5Niw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAg
V2FzbUZ1bmN0aW9uSW50cmluc2ljLAogfTsKIAotT3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50
ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKK3N0ZDo6b3B0aW9uYWw8SXRlcmF0
aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKIAogY29uc3Qg
Y2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDc5YzAzNDMyZTJhNjQ3OWZlMDljOTQwNThjNjcxODAy
NDc1OTgxZmEuLjMyYzQ4ODAzZWFmYjI2YjBkZmJhYmM4MjlhMDY2MGMzNDUwZTliNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yMDAsNyArMjAwLDcg
QEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgLy8gNC4gRWxzZSBpZiBQIGlzIGFuIGFy
cmF5IGluZGV4ICgxNS40KSwgdGhlbgogICAgIC8vIGEuIExldCBpbmRleCBiZSBUb1VpbnQzMihQ
KS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9u
YWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAvLyBiLiBSZWpl
Y3QgaWYgaW5kZXggPj0gb2xkTGVuIGFuZCBvbGRMZW5EZXNjLltbV3JpdGFibGVdXSBpcyBmYWxz
ZS4KICAgICAgICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAg
ICAgIC8vIEZJWE1FOiBOb3RoaW5nIHByZXZlbnRzIHRoaXMgZnJvbSBiZWluZyBjYWxsZWQgb24g
YSBSdW50aW1lQXJyYXksIGFuZCB0aGUgbGVuZ3RoIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVy
biAwIGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKaW5kZXggNzdjOTJlY2Y4YTVlZDU3YTI4
MDFhMjAxZDM1ODZjYmVkM2YyNTJlZC4uNjFmZmU4Y2EwZjBiNDlhODU4OTUyMjY1MzY4ZmNlYzJm
MmM3ZmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3Ro
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHNoYXJlZEFycmF5QnVmZmVyUHJv
dG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oc2hhcmVkQXJy
YXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIAotT3B0aW9uYWw8SlNWYWx1ZT4g
YXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QsIEFycmF5QnVmZmVyU2hhcmluZ01vZGUg
bW9kZSkKK3N0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0
b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNP
YmplY3QsIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgbW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2ll
c0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJheUJ1ZmZlcio+IHNwZWNpZXNDbwogCiAgICAgLy8gRmFz
dCBwYXRoIGluIHRoZSBub3JtYWwgY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMgbm90IHNldCBhbiBv
d24gY29uc3RydWN0b3IgYW5kIHRoZSBBcnJheUJ1ZmZlci5wcm90b3R5cGUuY29uc3RydWN0b3Ig
aXMgbm9ybWFsLgogICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2Vz
IG9mIEFycmF5QnVmZmVyLCB3aGljaCBhcmUgQXJyYXlCdWZmZXIgb2JqZWN0cyBidXQgaGF2ZSBh
IGRpZmZlcmVudCBwcm90b3R5cGUgYnkgZGVmYXVsdC4KLSAgICBPcHRpb25hbDxKU1ZhbHVlPiBz
cGVjaWVzID0gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCB0aGlz
T2JqZWN0LCBtb2RlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IHNwZWNpZXMgPSBhcnJh
eUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIG1vZGUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yUmVzdWx0KTsKICAgICBpZiAo
IXNwZWNpZXMpCiAgICAgICAgIHJldHVybiBmYXN0UGF0aFJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAppbmRl
eCA3YjkwZjk0ZGU3NzNiYmQ3ZWZlY2RlOWQxZWM3NzNjZjFmMjcyMWU3Li5iY2UxYTdkZDU3MTdh
ZTI2ZGVkMGNkZjk3ZTc3ZDg2MjIyNTkzOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCkBAIC01MSw2ICs1MSw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CiB9OwogCi1PcHRpb25hbDxKU1ZhbHVlPiBhcnJh
eUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3coSlNHbG9iYWxPYmplY3QqLCBKU0FycmF5QnVm
ZmVyKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CitzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IGFy
cmF5QnVmZmVyU3BlY2llc0NvbnN0cnVjdG9yU2xvdyhKU0dsb2JhbE9iamVjdCosIEpTQXJyYXlC
dWZmZXIqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclByb3RvdHlwZUlubGluZXMuaAppbmRleCA1YmE4M2VhYTg1MjAyYjdhZDhlNTgzYWQxODNk
YzBiY2UzYjE2ZTQ0Li42MmQ3NDdjOTBjZWYzM2YyNDY3ZDBmZGQwMDczOGU1MGY5YTFhZDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTUwLDcgKzUwLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBBcnJheUIKICAgICAgICAgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclNwZWNpZXNX
YXRjaHBvaW50U2V0KG1vZGUpLnN0YXRlT25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIAot
QUxXQVlTX0lOTElORSBPcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0FycmF5QnVmZmVyKiB0aGlzT2Jq
ZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0
aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCwgQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZSBtb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCAwY2NmNjQyMWI0
NjdmOWM2MWNhZjFmNmI0OTFmZDQ3OTliNjc5ZTY4Li42NjZjNTQyNDc3N2EyODc3MmM3YWVkZmQy
NGJjZDBhYTUzNzllOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgp
KTsgfQogICAgIAogICAgIGlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7Ci0gICAgaW5saW5l
IE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5l
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKIAogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCA1YjE3MTA1NjFjNjFm
NzFjNzVlNWM4YzRjOTAzMDc1NmZkZjNhMzMwLi5kOTViNDc4ODBlYWY3Y2Y0MmNhNTIzOTQzNDA2
YTFmZjQ5ZDFiN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtMTE1LDkgKzExNSw5IEBAIGlubGlu
ZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiAgICAgcmV0dXJuIGJ5
dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVkPigpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8
dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNl
dENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRU
aHJlYWQsIE9wdGlvbmFsPHVuc2lnbmVkPj4oKTsKKyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8
Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+KCk7CiB9CiAKIGlubGlu
ZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZN
JiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcAppbmRleCAwMGFiYjk5MjVmNzE2MzI0ZTQ4MmUxNzZhOGY0Yzc5ZmRmZWMwYThlLi4x
NzUzNzExZjRiYjY5MGJlM2E5MjMzYzBiMzIzMmE4MzE2OTIxMTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50
KiB4LCBkb3VibGUgeSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+Ci1PcHRp
b25hbDxKU0JpZ0ludDo6RGlnaXQ+IEpTQmlnSW50Ojp0b1NoaWZ0QW1vdW50KEJpZ0ludEltcGwg
eCkKK3N0ZDo6b3B0aW9uYWw8SlNCaWdJbnQ6OkRpZ2l0PiBKU0JpZ0ludDo6dG9TaGlmdEFtb3Vu
dChCaWdJbnRJbXBsIHgpCiB7CiAgICAgaWYgKHgubGVuZ3RoKCkgPiAxKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMzA3NCw3ICszMDc0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgY29tcHV0ZUhhc2goSlNCaWdJbnQ6OkRpZ2l0KiBkaWdpdHMsIHVuc2lnbmVk
IGxlbmcKICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKIH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+
IEpTQmlnSW50Ojpjb25jdXJyZW50SGFzaCgpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0Jp
Z0ludDo6Y29uY3VycmVudEhhc2goKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgSlNCaWdJ
bnQ6OmNvbmN1cnJlbnRIYXNoIGJ5IGluc2VydGluZyByaWdodCBzdG9yZSBiYXJyaWVycy4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODAxCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA2NjVlZDFkNGMxMDU2Zjkz
MjQzNDhiZjQ4Yjc3MzZmZWNhZTNjNmIyLi44OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRj
YjMzNGRmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAg
LTQ1NCw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCaWdJbnQq
IHJpZ2h0VHJpbShKU0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQmln
SW50KiB0cnlSaWdodFRyaW0oVk0mKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PHVuc2lnbmVkPiBjb25jdXJyZW50SGFzaCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGNvbmN1cnJlbnRIYXNoKCk7CiAgICAgdW5zaWduZWQgaGFzaCgp
CiAgICAgewogICAgICAgICBpZiAobV9oYXNoKQpAQCAtNTkyLDcgKzU5Miw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIEltcGxSZXN1bHQgcmlnaHRTaGlmdEJ5TWF4aW11bShKU0dsb2JhbE9iamVj
dCosIGJvb2wgc2lnbik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KLSAg
ICBzdGF0aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hpZnRBbW91bnQoQmlnSW50SW1wbCB4KTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaWdpdD4gdG9TaGlmdEFtb3VudChCaWdJbnRJbXBsIHgp
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CiAgICAgc3RhdGljIEltcGxS
ZXN1bHQgYXNJbnROSW1wbChKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90LCBCaWdJbnRJbXBsKTsK
QEAgLTYwNSw3ICs2MDUsNyBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPHVpbnQ2NF90PiB0b1VpbnQ2NEhlYXAoSlNCaWdJbnQq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
dG9VaW50NjRIZWFwKEpTQmlnSW50Kik7CiAKICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZkRhdGEoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggYTk3NGQ5NWM3YzcyYjQwNGZjN2EzNmJmMGNmMWVlNjZhNGY4OWE5ZC4u
MTEyMDQ3ZWVkZWVmZjRkODNlMjlkYmY2ZTNiOWVkNDM5ZTBjOGYyNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgZG91
YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFu
ZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVl
Ojp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IEpT
VmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29s
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkp
OwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCmluZGV4IDNlZTZjYmIyNTU0MWM5NWU0Yzc3NmFhNTBmZmY1ZTZiYTU2NDViZGYuLjhm
NGQyMDJlNjMwOWViZDkzYTJlNGNiMTNkMmJjYjA5ODUyZmVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIxOSw4ICsyMTksOCBAQCBwdWJsaWM6
CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigp
IGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0cnlHZXRBc1VpbnQzMkluZGV4KCk7Ci0g
ICAgT3B0aW9uYWw8aW50MzJfdD4gdHJ5R2V0QXNJbnQzMigpOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHRyeUdldEFzVWludDMySW5kZXgoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IHRyeUdldEFzSW50MzIoKTsKICAgICBpbnQ2NF90IGFzQW55SW50KCkgY29uc3Q7CiAgICAg
dWludDMyX3QgYXNVSW50MzJBc0FueUludCgpIGNvbnN0OwogICAgIGludDMyX3QgYXNJbnQzMkFz
QW55SW50KCkgY29uc3Q7CkBAIC0yODIsNyArMjgyLDcgQEAgcHVibGljOgogICAgIEpTQmlnSW50
KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYg
aXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCi0gICAgT3B0aW9uYWw8ZG91Ymxl
PiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CiAKICAgICBKU1N0cmluZyogdG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMg
dGhlIGVtcHR5IHN0cmluZy4KICAgICBKU1N0cmluZyogdG9TdHJpbmdPck51bGwoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgbnVsbCwgdG8gbWFr
ZSBleGNlcHRpb24gY2hlY2tzIGZhc3Rlci4KQEAgLTMwMyw3ICszMDMsNyBAQCBwdWJsaWM6CiAg
ICAgaW50NjRfdCB0b0JpZ0ludDY0KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgdWludDY0
X3QgdG9CaWdVSW50NjQoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVp
bnQzMl90PiB0b1VJbnQzMkFmdGVyVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdG9VSW50MzJBZnRlclRvTnVtZXJpYyhKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OwogCiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbnMgKHRo
aXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgV2ViQ29yZTsKICAgICAvLyBzaW5nbGUg
cHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJlc2VudGF0aW9uIHVzZWQgaW4gSlMgb3IgSlND
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCmluZGV4IDg4MzRkZDg3MDk1YmMyZGJjN2Q0NDIwNTdkYjUwY2QxN2UxYTMwMjkuLjM0ZWEy
MTQ2MGEwZGI0NWE3ZDAyNjA3YWY3YmFlNDVhNzczYzViMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTA3LDcgKzEwNyw3
IEBAIGlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogICAgIHJldHVybiBp
c0ludDMyKCkgPyBhc0ludDMyKCkgOiBhc0RvdWJsZSgpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8
dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWludDMySW5kZXgoKQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWludDMySW5kZXgoKQogewogICAgIGlm
IChpc1VJbnQzMigpKSB7CiAgICAgICAgIEFTU0VSVChpc0luZGV4KGFzVUludDMyKCkpKTsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdl
dEFzVWludDMySW5kZXgoKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBP
cHRpb25hbDxpbnQzMl90PiBKU1ZhbHVlOjp0cnlHZXRBc0ludDMyKCkKK2lubGluZSBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzSW50MzIoKQogewogICAgIGlmIChpc0lu
dDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMyKCk7CkBAIC04NDksNyArODQ5LDcgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRvVUludDMyQWZ0ZXJUb051bWVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gSlNWYWx1ZTo6dG9VSW50MzJBZnRlclRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCBjY2ZmNGE4YjYwZTlhYmUz
YTRjNzdlNWYxMjNmNTVhYWI2ZTdmMjhjLi42OGMwZTViYzJlYTA0YjMwMmRjNDNkMjQ4YWI1MTg4
ZjRiM2UzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
c3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtMTQ5
LDcgKzE0OSw3IEBAIGlubGluZSBib29sIGluaGVyaXRzSlNUeXBlSW1wbChWTSYgdm0sIEZyb20q
IGZyb20sIEpTVHlwZVJhbmdlIHJhbmdlKQogLy8gd2F5IHRvIHNheSB0aGF0IHdlIGFyZSBvdmVy
bG9hZGluZyBqdXN0IHRoZSBmaXJzdCB0eXBlIGluIGEgdGVtcGxhdGUgbGlzdC4uLgogdGVtcGxh
dGU8dHlwZW5hbWUgVGFyZ2V0Pgogc3RydWN0IEluaGVyaXRzVHJhaXRzIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBzdGQ6Om51bGxvcHQg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVS
YW5nZSB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CiAgICAg
c3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4g
RmluYWxUeXBlRGlzcGF0Y2hlcjxzdGQ6OmlzX2ZpbmFsPFRhcmdldD46OnZhbHVlPjo6dGVtcGxh
dGUgaW5oZXJpdHNHZW5lcmljPFRhcmdldD4odm0sIGZyb20pOyB9CiB9OwpAQCAtMTU3LDcgKzE1
Nyw3IEBAIHN0cnVjdCBJbmhlcml0c1RyYWl0cyB7CiAjZGVmaW5lIERFRklORV9UUkFJVFNfRk9S
X0pTX1RZUEVfT1ZFUkxPQUQoY2xhc3NOYW1lLCBmaXJzdEpTVHlwZSwgbGFzdEpTVHlwZSkgXAog
ICAgIHRlbXBsYXRlPD4gXAogICAgIHN0cnVjdCBJbmhlcml0c1RyYWl0czxjbGFzc05hbWU+IHsg
XAotICAgICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFu
Z2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oZmlyc3RKU1R5cGUpLCBzdGF0aWNfY2FzdDxKU1R5
cGU+KGxhc3RKU1R5cGUpIH0gfTsgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6b3B0
aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihmaXJz
dEpTVHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4obGFzdEpTVHlwZSkgfSB9OyBcCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+IFwKICAgICAgICAgc3RhdGljIGlubGluZSBib29sIGlu
aGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPGNs
YXNzTmFtZSwgRnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IFwKICAgICB9OyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24uY3BwCmluZGV4IDQ1YTllZmZmZDY5YjNhYTdkNTM5ODAxMzBhZjkxOTkxYmViZDUzN2Uu
LjNhMzE0MTRlNTA0NmQ0ZWM4ODkzNjY1NjA4Njg3MmNkOWY1ZDVlOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0
ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBnZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUo
dGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKSk7CiB9CiAK
LUpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUs
IEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90
YXRpb24+IGRvbUF0dHJpYnV0ZSkKK0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIHN0ZDo6
b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogICAgIDogQmFz
ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Byb3Bl
cnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAg
ICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAtNTksNyArNTksNyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YQogewogfQogCi1KU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyIGdldHRlciwg
T3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmli
dXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogewogICAgIEFTU0VSVChnZXR0ZXIpOwogICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9t
R2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5n
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaAppbmRleCAyMzhiOWEwMzA1
ZDk3OTQ2MzYxMWU3OGQzZjZkMmVhOWNhYmJlZDc0Li4zNjYwYmRmNWNkZDQ1ODAzZmQ4YzQxNDJm
YTZhNjE5OWNhZmIxMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCkBAIC01MSwyMSArNTEsMjEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYs
IEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4g
PSBzdGQ6Om51bGxvcHQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVB
bm5vdGF0aW9uPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CiAgICAgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9wZXJ0eU5hbWU7IH0KICAgICBDdXN0b21GdW5jdGlvblBvaW50ZXIgZ2V0dGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9nZXR0ZXI7IH07CiAgICAgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyIGN1c3RvbUZ1
bmN0aW9uUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyOyB9OwotICAgIE9wdGlvbmFs
PERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tQXR0cmlidXRlOyB9OworICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGU7IH07CiAKIHBy
aXZhdGU6Ci0gICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEN1c3Rv
bUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOworICAg
IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBDdXN0b21GdW5jdGlvblBv
aW50ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOwogCiAgICAgSWRl
bnRpZmllciBtX3Byb3BlcnR5TmFtZTsKICAgICBDdXN0b21GdW5jdGlvblBvaW50ZXIgbV9nZXR0
ZXI7Ci0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gbV9kb21BdHRyaWJ1dGU7
CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZGJlMjExZDk2
N2ViODM0N2U2ZTQ2ZDQ4MmM0M2Y4MWUyYTRjNTY1Mi4uNDVhNzg0MTk4MDk0Njc1NWU5OWVlOWE4
NTlmNzg1MGVjNTI2MzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRv
TmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2JhbE9iamVjdCwganNWYWx1ZSk7IH0KIAotICAg
IHN0YXRpYyBPcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVX
aXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b248QWRhcHRvcj4oanNWYWx1ZSk7IH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggZTlkZjg0MzVl
Njk4ZTJjMDg1MTY2YmVjYTc1NWZkOGQ2ZGVhMmFhMS4uZDI1ODQwNjdlODNmZGYyNjlmYzBhOGRj
ZjlkMDFlMmQ0NGRhNDA5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNv
bnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
ICAgICBpZiAoc291cmNlLT5pc1NoYXJlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIE9wdGlvbmFsPEpTVmFsdWU+IHNwZWNpZXMgPSBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1
Y3RvcihnbG9iYWxPYmplY3QsIHNvdXJjZSwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVs
dCk7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiBzcGVjaWVzID0gYXJyYXlCdWZmZXJTcGVj
aWVzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGU6OkRlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwog
ICAgIGlmICghc3BlY2llcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDMsNyArMTQz
LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZO
ZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmll
d0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQsIE9w
dGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQs
IHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzYsNyArMjc2LDcgQEAgQUxXQVlTX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2Jq
ZWN0KgogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVu
Z3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIq
Pih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRl
T2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBmYTI1Y2Q4MmFkZDNlNzcx
ZjkwNzYzNTdjYjkzMmRhNjkwMTU3YjM3Li40NTAyMzg3OTJkMTAzYWEyMDljZmEzODM3MDlkM2Ux
ZjU0OTcxYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzU1LDcgKzM1NSw3
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5
U2xvdCgKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+PiwgImdldE93blByb3BlcnR5U2xvdEJ5SW5kZXggbXVzdCBub3QgYmUg
b3ZlcnJpZGRlbiIpOwogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIH0KQEAg
LTM3Myw3ICszNzMsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpw
dXQoCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+LCAicHV0QnlJbmRleCBtdXN0IG5vdCBiZSBvdmVycmlkZGVuIik7CiAgICAg
ICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIH0KQEAgLTM5Niw3ICszOTYs
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9w
ZXJ0eSgKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqPihvYmplY3QpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBhdXRvIHRo
cm93VHlwZUVycm9ySWZOZWVkZWQgPSBbJl0gKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgLT4g
Ym9vbCB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcnJvck1lc3NhZ2Us
ICppbmRleCkpOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7
CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5h
bF92PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiwgImRlbGV0ZVByb3BlcnR5QnlJ
bmRleCBtdXN0IG5vdCBiZSBvdmVycmlkZGVuIik7CiAgICAgICAgIHJldHVybiBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA1OTEzZmM2MDE3YTZjMGJiMjhjZTMyMzRiZmU4MzczNTExOGQ0YzQ2Li5jNDVhMGY5MzE2
ZGFmMGFjOThiMTMzNjM2MTlkNDk4NWQzNDUxYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU2Myw3ICs1NjMsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50
aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7CiAgICAgV2Vha1B0cjxDb25zb2xlQ2xpZW50PiBtX2Nv
bnNvbGVDbGllbnQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3QgV2Vha0N1c3RvbUdldHRlck9yU2V0dGVySGFz
aCB7CkBAIC02MTgsOCArNjE4LDggQEAgcHVibGljOgogICAgIFdhdGNocG9pbnRTZXQmIGVuc3Vy
ZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICNl
bmRpZgogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YWNrVHJhY2VMaW1pdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhY2tUcmFjZUxpbWl0OyB9Ci0gICAgdm9pZCBzZXRTdGFja1RyYWNlTGltaXQo
T3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7IG1fc3RhY2tUcmFjZUxpbWl0ID0gdmFsdWU7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFja1RyYWNlTGltaXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0YWNrVHJhY2VMaW1pdDsgfQorICAgIHZvaWQgc2V0U3RhY2tUcmFjZUxpbWl0KHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7IG1fc3RhY2tUcmFjZUxpbWl0ID0gdmFsdWU7
IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTR2xvYmFs
T2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqID0g
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZTY2YTA4OWU5OTE4OWJlMTE4NDZjNGQ1
MzI3ZTgzYjk3ZGMyZjAxNy4uYWRhZDgyMWZlYjU2M2EwNGI2MGFlZmQxMDI1Mzc2NDk1M2I3OGYz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihnbG9iYWxGdW5jQ29weURhdGFQcm9wZXJ0aWVzLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiAKICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBu
dWxscHRyOwogICAgIGNvbnN0IElkZW50aWZpZXJTZXQqIGV4Y2x1ZGVkU2V0ID0gbnVsbHB0cjsK
LSAgICBPcHRpb25hbDxJZGVudGlmaWVyU2V0PiBuZXdseUNyZWF0ZWRTZXQ7CisgICAgc3RkOjpv
cHRpb25hbDxJZGVudGlmaWVyU2V0PiBuZXdseUNyZWF0ZWRTZXQ7CiAgICAgaWYgKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpID4gMSkgewogICAgICAgICBpbnQzMl90IHNldEluZGV4ID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5hc1VJbnQzMkFzQW55SW50KCk7CiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZ2V0Q2FsbGVyQ29kZUJsb2NrKGNhbGxGcmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDZmYmFhMDcyYjAzMDlkYjMx
NTk4YjY5ZmQyYWNiYWJiNTZmYzFkYzEuLjdiY2M1YmQzMjJmZGRmMWIwZDMxYjUzMWMzMDZhY2U3
MTNjYjVlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KIAotICAg
IE9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25lclRocmVhZCgpIGNvbnN0CisgICAgc3RkOjpv
cHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJUaHJlYWQoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKG1faGFzT3duZXJUaHJlYWQpCiAgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVh
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA3NjFj
MzZlYTM4MGQ5YTU5ZGU5OTBhMjY3YzBmZmRlOTE3ZGNhODk2Li5mYmI2Y2NjOTM0ODhhM2FlOWVi
OTY1MzBiNGIyMDU0ZDI4YTEyNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC0xODc3LDcgKzE4NzcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RBY2Nlc3NvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cAogewogICAgIEFTU0VSVChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
KTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpLCBhY2Nlc3NvciwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKIAogICAgIHJldHVybiBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29y
KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7
CkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXM7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQ
cm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hFbnRy
eT4gSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cnVjdHVyZTo6UHJvcGVydHlIYXNo
RW50cnk+IEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNoRW50cnkoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5maW5k
UHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKTsKIH0KQEAgLTM1MDIsNyArMzUwMiw3IEBA
IHN0cnVjdCBXZWFrQ3VzdG9tR2V0dGVyT3JTZXR0ZXJIYXNoVHJhbnNsYXRvciB7CiAgICAgfQog
fTsKIAotc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdl
dFZhbHVlRnVuYywgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRy
aWJ1dGUpCiB7CiAgICAgdXNpbmcgVHJhbnNsYXRvciA9IFdlYWtDdXN0b21HZXR0ZXJPclNldHRl
ckhhc2hUcmFuc2xhdG9yPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+OwogCkBAIC0zNTU4LDcgKzM1
NTgsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJl
dHVybiBwdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsK
ICAgICByZXR1cm4gcHV0RGlyZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7CiB9CkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25O
b25JbmRleFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5Tgog
Ym9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewog
ICAgIC8vIElmIGl0J3MgYW4gYXJyYXkgaW5kZXgsIHRoZW4gdXNlIHRoZSBpbmRleGVkIHByb3Bl
cnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAvLyBjLiBMZXQgc3VjY2Vl
ZGVkIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3Bl
cnR5XV0gaW50ZXJuYWwgbWV0aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQg
ZmFsc2UgYXMgYXJndW1lbnRzLgogICAgICAgICAvLyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlz
IGZhbHNlLgogICAgICAgICAvLyBlLiBJZiBpbmRleCA+PSBvbGRMZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRiMGQ5YzAxNThiODU3YzBlZGM5NDIyZWZl
MzExNjNkYjgyOTI5YzAuLjZjMDIyOTA1NWU4MzcyNjNlNDBkNTBhMWQ5MTYwNjVkZDRiODg5YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTU3LDcgKzk1
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUJlUHJvdG90eXBlKCkgY29uc3Q7CiAgICAgdm9p
ZCBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAgIE9wdGlvbmFsPFN0cnVjdHVyZTo6UHJvcGVy
dHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudHJ5PiBmaW5k
UHJvcGVydHlIYXNoRW50cnkoVk0mLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKIApAQCAtMTQzMSw3ICsxNDMxLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsT2IKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsK
ICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBnbG9i
YWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTE0NjEsNyArMTQ2MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgICAgICAv
LyBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCksIHNvIHdlIGNhbm5vdCBzYWZlbHkgY2FsbCB0
aGUgb3ZlcnJpZGRlbiBnZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgICAgIC8vIChsZXN0IHdl
IHJldHVybiBhIHByb3BlcnR5IGZyb20gYSBwcm90b3R5cGUgdGhhdCBpcyBzaGFkb3dlZCkuIENo
ZWNrIG5vdyBmb3IgYW4gaW5kZXgsCiAgICAgICAgICAgICAvLyBpZiBzbyB3ZSBuZWVkIHRvIHN0
YXJ0IGFmcmVzaCBmcm9tIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
aW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICAvLyBTYWZlIHRvIGNvbnRpbnVlIHNl
YXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNs
b3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBhcnNpbmcgdGhlIGludCBhZ2Fpbi4KQEAgLTE0
ODMsNyArMTQ4Myw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlT
bG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgIG9iamVjdCA9
IGFzT2JqZWN0KHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90KTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGU2YWVkNzY0MDgwN2M1ZmU1MTdkYzljYmJhYmJlYzg1
ZThkMWY1OWUuLjRmM2E3NDNlMjZlM2YzNTMzZTVmNDc4NzBmZjMyOTJjNDk4ZThhZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0y
NjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JK
U09iamVjdChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KgogCiAgICAgLy8gVHJ5IGluZGV4
ZWQgcHV0IGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgc2luY2UgbG9h
ZHMgb24gcHJvcGVydHkgbmFtZXMgdGhhdCBhcHBlYXIgbGlrZQogICAgIC8vIHZhbGlkIGluZGlj
ZXMgd2lsbCBuZXZlciBsb29rIGluIHRoZSBuYW1lZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5l
KHZtLCBwcm9wZXJ0eU5hbWUpKSB7CkBAIC01MjAsNyArNTIwLDcgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIHZhbGlk
YXRlUHV0T3duRGF0YVByb3BlcnR5KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKICAgICBy
ZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUsIDAsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5M
b29wVGltZXIuY3BwCmluZGV4IDIxZDBiY2ZiMzAzYTA2NjAzNjUzNWY3YTJmYWExYTUwY2Y4N2Uw
OTcuLjRiOGZjZjZkZWU0NTgyZTEzYTRkYzVkZTI2YmI1NGI3ZGExY2JmYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAgLTE5MCw3
ICsxOTAsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpjYW5jZWxUaW1lcihKU1J1
bkxvb3BUaW1lciYgdGltZXIpCiAgICAgZGF0YS50aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4
KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKSkpOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYgdGltZXIpCitzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVy
JiB0aW1lcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byBpdGVy
ID0gbV9tYXBwaW5nLmZpbmQodGltZXIubV9hcGlMb2NrKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBK
U1J1bkxvb3BUaW1lcjo6fkpTUnVuTG9vcFRpbWVyKCkKIHsKIH0KIAotT3B0aW9uYWw8U2Vjb25k
cz4gSlNSdW5Mb29wVGltZXI6OnRpbWVVbnRpbEZpcmUoKQorc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBKU1J1bkxvb3BUaW1lcjo6dGltZVVudGlsRmlyZSgpCiB7CiAgICAgcmV0dXJuIE1hbmFnZXI6
OnNoYXJlZCgpLnRpbWVVbnRpbEZpcmUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKaW5kZXggYTM1NzczOWEzMTBmNGIxY2VlMDQ4
ODAwMzdkYmUyOWI4MmY0YTcyMS4uNDJlMmQyZjY5ODdmZjkwMTBmNzc1MWQ5YTdjMGJmYzY0YWEz
OWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29w
VGltZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzY2hlZHVsZVRpbWVy
KEpTUnVuTG9vcFRpbWVyJiwgU2Vjb25kcyBuZXh0RmlyZVRpbWUpOwogICAgICAgICB2b2lkIGNh
bmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJik7CiAKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4g
dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IHRpbWVVbnRpbEZpcmUoSlNSdW5Mb29wVGltZXImKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIExvY2sgbV9sb2NrOwpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGRUaW1lclNldE5vdGlmaWNhdGlvbihUaW1lck5vdGlmaWNhdGlv
bkNhbGxiYWNrKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90
aWZpY2F0aW9uKFRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spOwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZSgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZSgpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHNfZGVjYWRlIHsgNjAgKiA2MCAqIDI0
ICogMzY1ICogMTAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cAppbmRleCBjNGQzODViMmFjY2I1NzY0MzBjYjc4NDA5ODQzMDAzNTQ3NDk0NTA0Li5hNWNlN2Qx
OGViYmM2YzNkZDg1ZGE5MzNmNjk2NjAwYzA0NzVjNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IGxlbmd0aCgpKSB7CiAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihnZXRJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCkp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggM2Y1OWJhYWM4ZDRlOTVlYjYxNjZhODQ3OGM1NzNlNmU0MjJlZTBh
NS4uNjY5MmYwNTViM2Y4YWUwNTE3MmQ4Yzg4YzQ5OTIxZjlhNGVmMTcyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC05NDYsNyArOTQ2LDcgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgbGVuZ3RoKCkpIHsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGdldEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggOWRhZGFmYzg0ZGY3MTU4
YjM4ZWE2Y2Q3ODY4MTE0OTViMzRmZGY1My4uYzg3ZWJhMDk3MGNkMTNkYzA2ZTM3NTExYmUyY2Yy
MzA0MjE5M2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAKQEAgLTEyMDIsNyArMTIwMiw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxD
aGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxPckNvZGVCbG9jayA/IG1f
bnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA6
IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2subGFzdCgpLnB1dChtX2ds
b2JhbE9iamVjdCwgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgoaWRlbnQpKQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVl
KCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCmluZGV4IGRkMjli
MDNlY2NhOThjNjBmM2FiZmUyNGJiZWRlMWUyYWFkOTMyZTUuLmFmMGU1ZTlhMDliODQyYmI2NDk2
ZDgxNTU2NDhhNjExNDNmZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hY2hpbmVDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFjaGluZUNvbnRleHQuaApAQCAtNDUsNyArNDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gdm9pZCo+IFQgZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHZvaWQgc2V0RnJhbWVQb2ludGVyKFBsYXRmb3JtUmVn
aXN0ZXJzJiwgVCk7CiBpbmxpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0
ZXJzTFJQdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogaW5s
aW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOwotaW5saW5lIE9wdGlvbmFsPE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPj4gaW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CitpbmxpbmUgc3RkOjpvcHRpb25hbDxNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogaW5saW5lIHZvaWQgc2V0SW5zdHJ1Y3Rp
b25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5j
dGlvblB0clRhZz4pOwogCiB0ZW1wbGF0ZTxzaXplX3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRl
cihQbGF0Zm9ybVJlZ2lzdGVycyYpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB9
CiAjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKQogCi1pbmxp
bmUgT3B0aW9uYWw8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJU
YWc+PiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3Rl
cnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYg
cmVncykKIHsKICNpZiBVU0UoUExBVEZPUk1fUkVHSVNURVJTX1dJVEhfUFJPRklMRSkKICAgICB2
b2lkKiB2YWx1ZSA9IFdURl9SRUFEX1BMQVRGT1JNX1JFR0lTVEVSU19QQ19XSVRIX1BST0ZJTEUo
cmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXgg
NjMxNzE3ZjkwYTQ5MTMwNmU0NTRjMjcxMTczOGJmMmVlYTRmMDZhNi4uYWYyODI5YWJiY2UzZDcy
OGJmMzBiZjk2MjUxMDc1MTkyOWNlODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uaApAQCAtMTc4LDcgKzE3OCw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3Rl
eHByIFVDUFVTdHJpY3RJbnQzMiB0b1VDUFVTdHJpY3RJbnQzMihpbnQzMl90IHZhbHVlKQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxVQ1BVU3RyaWN0SW50MzI+KHN0YXRpY19jYXN0PHVpbnQzMl90
Pih2YWx1ZSkpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZv
ckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQogewogICAgIC8v
IE5vICJ3ZWlyZCIgbnVtYmVycyAoTmFOLCBEZW5vcm1hbCwgZXRjKS4KICAgICBpZiAoIWNvbnN0
YW50IHx8ICFzdGQ6Omlzbm9ybWFsKGNvbnN0YW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCBiMTdmNTkzNmZlZmM5
NjM4ZWNmNDlhZWViZWM4NzBjMDg2NGNlYmM4Li45Y2E0NGQyYzQ2N2VhNTg3ZjhiN2JlN2RjNjFj
YWY5MWY2NThjYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05MTksNyArOTE5LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9ySXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzYW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKSkpOwogfQogCi1KU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5h
bWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUsIE9w
dGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5kPiBraW5kKQorSlNBcnJheSogb3duUHJvcGVy
dHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFBy
b3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBk
b250RW51bVByb3BlcnRpZXNNb2RlLCBzdGQ6Om9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNL
aW5kPiBraW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA1YzI4Yjc5YWMxOTM4OGNm
YmZkYzBiYjVhYzYyZDBjYjA5MGRkOWQxLi43NGUwN2EwNmNjMTM2YWE4MGU4ZTQ3ZTNhYTBhZmU5
NmFmMDIwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCop
OwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yU2VhbChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBjb25zdCBJZGVu
dGlmaWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7Ci1KU0FycmF5KiBvd25Qcm9wZXJ0eUtl
eXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVt
UHJvcGVydGllc01vZGUsIE9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5kPik7CitKU0Fy
cmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFByb3BlcnR5
TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUsIHN0ZDo6b3B0aW9uYWw8Q2FjaGVkUHJv
cGVydHlOYW1lc0tpbmQ+KTsKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihvYmplY3RDb25zdHJ1Y3RvcklzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAppbmRleCAyZDg0
ZGRkNWJhZWMwYzkzOTI0NTI2Nzg3MTExNGZlZGFhM2Q3Y2VkLi4wYWM3Yzg0ZjRiYjM5MWRhM2U5
OTNhMDMxZDYxMjhiZDNkZDY3Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCkBAIC01MCw4ICs1MCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNP
YmplY3QqKTsKIAogICAgIFZNJiBtX3ZtOwotICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlz
YWxsb3dHQzsKLSAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5
OworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6
b3B0aW9uYWw8RGlzYWxsb3dWTUVudHJ5PiBtX2Rpc2FsbG93Vk1FbnRyeTsKICAgICBKU09iamVj
dCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCA2ODZjNjZiMzlmNjM4YzY3ZWMz
ODgxMDk0Y2E0MzFlM2NjNzVjMmIyLi5iOTkxNjQ2ODhkMzE3ZDE5ODRlMmQwMzk0OTFhMGJmM2U3
ZTA3MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIG9iamVjdFByb3RvdHlwZUhhc093
blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZSwgYwog
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwog
ICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5Q2FjaGUgPSB2bS5lbnN1cmVI
YXNPd25Qcm9wZXJ0eUNhY2hlKCk7Ci0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9IGhh
c093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQo
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRo
aXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKICAgICAg
ICAgcmV0dXJuICpyZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKaW5kZXggMzlkNDIwM2E1MDkzMDNiMzc3ZWUxNWZkY2RlZGFmZGIxZjNjNGQ3NC4uY2U3
MzBmM2JmOTY1ODQ3YzQ4ZDk0MWI1NmNkYmMyZTVmYmZiYzdmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtODAxLDkgKzgwMSw5IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc1VSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsZWZ0LCBKU1ZhCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBsZWZ0VWludDMyID0gbGVmdC50b1VJbnQzMkFmdGVyVG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbGVmdFVpbnQzMiA9IGxlZnQudG9VSW50
MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHJpZ2h0VWludDMyID0gcmlnaHQu
dG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHJpZ2h0VWludDMyID0gcmlnaHQudG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJpZ2h0VWludDMyKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCBjY2M5MzBjM2Y5NjFkZWM1Nzk3MmJl
MWY1YWFkNmQ3MjJmNzJmNDg0Li41MmY0MjQxMWJhNTY5ZDlmYjc5NGYwOTA5NTE0NWU0OTMzMTVh
NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNTks
MTAgKzU5LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9w
dGlvbmFsPFQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZyk7CitzdGQ6Om9wdGlvbmFsPFQ+IHBh
cnNlKGNvbnN0IGNoYXIqIHN0cmluZyk7CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNT
dG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9w
dGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY21wKHN0cmluZywg
IjEiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPE9w
dGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBs
YXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3QgY2hhciog
c3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0
IGNoYXIqIHN0cmluZykKIHsKICAgICBpbnQzMl90IHZhbHVlOwogICAgIGlmIChzc2NhbmYoc3Ry
aW5nLCAiJWQiLCAmdmFsdWUpID09IDEpCkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPE9wdGlv
bnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogfQogCiB0ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQ+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJzZShj
b25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKHNzY2Fu
ZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMSkKQEAgLTkxLDcgKzkxLDcgQEAgT3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAKICNp
ZiBDUFUoQUREUkVTUzY0KSB8fCBPUyhEQVJXSU4pCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxPcHRp
b25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpvcHRpb25h
bDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewogICAg
IHNpemVfdCB2YWx1ZTsKICAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkgPT0g
MSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFy
c2UoY29uc3QgY2hhciogc3RyaW5nKQogI2VuZGlmIC8vIENQVShBRERSRVNTNjQpIHx8IE9TKERB
UldJTikKIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZT4gcGFy
c2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6RG91
YmxlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgZG91YmxlIHZhbHVlOwogICAg
IGlmIChzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxKQpAQCAtMTEwLDcgKzExMCw3
IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpEb3VibGU+IHBhcnNlKGNvbnN0IGNoYXIqIHN0
cmluZykKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblJh
bmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9wdGlvbnNTdG9y
YWdlOjpPcHRpb25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewogICAgIE9wdGlv
blJhbmdlIHJhbmdlOwogICAgIGlmIChyYW5nZS5pbml0KHN0cmluZykpCkBAIC0xMTksNyArMTE5
LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblJhbmdlPiBwYXJzZShjb25zdCBj
aGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpP
cHRpb25TdHJpbmc+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0
aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZz4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewog
ICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gbnVsbHB0cjsKICAgICBpZiAoIXN0cmxlbihzdHJpbmcp
KQpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJp
bmc+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKK3N0
ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAibm9uZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIm5vIikg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCAhc3Ry
Y21wKHN0cmluZywgIjAiKSkKICAgICAgICAgcmV0dXJuIEdDTG9nZ2luZzo6Tm9uZTsKQEAgLTE4
Myw3ICsxODMsNyBAQCBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJs
ZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKICAgICBpZiAoYXZhaWxhYmxlKSB7Ci0gICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVl
ID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IHZhbHVl
ID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOwogICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAg
ICAgIHZhcmlhYmxlID0gdmFsdWUudmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtODQ0LDcgKzg0NCw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNv
bnN0IGNoYXIqIGFyZykKICAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAh
PSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCiAgICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUo
bmFtZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6dHlwZV8+IHZhbHVlOyAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6dHlwZV8+
IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdmFsdWUgPSBwYXJzZTxPcHRp
b25zU3RvcmFnZTo6dHlwZV8+KHZhbHVlU3RyKTsgICAgICAgICAgICBcCiAgICAgICAgIGlmICh2
YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlLnZhbHVlKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKQEAgLTg2Myw3ICs4NjMsNyBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldp
dGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnZlcnRC
b29sT3B0aW9uVmFsdWUoY29uc3QgY2hhciogdmFsdWVTdHIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0
aW9uc1N0b3JhZ2U6OkJvb2w+IHZhbHVlID0gcGFyc2U8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+KHZh
bHVlU3RyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiB2YWx1ZSA9
IHBhcnNlPE9wdGlvbnNTdG9yYWdlOjpCb29sPih2YWx1ZVN0cik7CiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCkgPyAiZmFs
c2UiIDogInRydWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaAppbmRleCA1ZjE2YjFhMmEwYmExODgzNmYxZWIwZDU0N2ZlMWNkNWY5
ZjllOGI5Li43OTdiZWMwNGE4ZTk0MmNlNjhmOGFkYjU5N2EwYzRhODllZDRjNDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApA
QCAtMTAwLDE2ICsxMDAsMTYgQEAgaW5saW5lIFByb3BlcnR5RGVzY3JpcHRvciB0b1Byb3BlcnR5
RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRlciwgSlMKICAgICAvLyBXZSBh
c3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZS4KICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzYzsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlID0gYXR0cmli
dXRlcy5lbnVtZXJhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJs
ZSA9IGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKQogICAgICAgICBkZXNjLnNldEVudW1lcmFibGUo
ZW51bWVyYWJsZS52YWx1ZSgpKTsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBjb25maWd1cmFi
bGUgPSBhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJv
b2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpCiAgICAgICAgIGRl
c2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3VyYWJsZS52YWx1ZSgpKTsKIAogICAgIGlmIChhdHRy
aWJ1dGVzLmhhc1ZhbHVlKCkpCiAgICAgICAgIGRlc2Muc2V0VmFsdWUodmFsdWUpOwogCi0gICAg
aWYgKE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgp
KQogICAgICAgICBkZXNjLnNldFdyaXRhYmxlKHdyaXRhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYg
KGF0dHJpYnV0ZXMuaGFzR2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oCmluZGV4IDlkNDA1MWM1ZjJmMmE0MGRhM2JlNjNlZmY4MDllNTA4NWZiOTVl
ODUuLmUxOTc3NzFlZjFmM2Y4NTMzYTcyODA4NjVjMzI2NGY3ODgyMzYzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC0xMjIsNyArMTIyLDcg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1lIGIp
CiAgICAgcmV0dXJuIGEudWlkKCkgIT0gYi51aWQoKTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRp
b25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorQUxX
QVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAg
ICAgaWYgKCF1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCmluZGV4IDViMDY0MjJjYmRhZDMyNzAwYTQzNTc5MzkwOTAwOWE4MTVjNGVhOWIuLjNiYTI3
OGM5Yzc4YjdmZWQ5NjUwYjc0NDUyNDhkOTIzZjk0NTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV93YXRjaHBvaW50U2V0OwogICAgIH0KIAotICAgIE9wdGlvbmFs
PERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0CisgICAgc3RkOjpv
cHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG1fYWRkaXRpb25hbERhdGFUeXBlID09IEFkZGl0aW9uYWxEYXRhVHlw
ZTo6RE9NQXR0cmlidXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGEuZG9t
QXR0cmlidXRlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQg
c2NvcGVPZmZzZXQ7CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPE1vZHVsZU5hbWVzcGFjZVNsb3Q+
IG1vZHVsZU5hbWVzcGFjZVNsb3QoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8TW9kdWxlTmFt
ZXNwYWNlU2xvdD4gbW9kdWxlTmFtZXNwYWNlU2xvdCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUgPT0gQWRkaXRpb25hbERhdGFUeXBlOjpNb2R1bGVOYW1l
c3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gbV9hZGRpdGlvbmFsRGF0YS5tb2R1bGVOYW1lc3Bh
Y2VTbG90OwpAQCAtMzkwLDcgKzM5MCw3IEBAIHByaXZhdGU6CiAgICAgQWRkaXRpb25hbERhdGFU
eXBlIG1fYWRkaXRpb25hbERhdGFUeXBlIHsgQWRkaXRpb25hbERhdGFUeXBlOjpOb25lIH07CiAg
ICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IHsgZmFsc2UgfTsKIHB1YmxpYzoKLSAg
ICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IGRpc2FsbG93Vk1FbnRyeTsKKyAgICBzdGQ6Om9w
dGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxsb3dWTUVudHJ5OwogcHJpdmF0ZToKICAgICB1
bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApp
bmRleCBiMGE3MTM5MGRlMzVjY2M2Y2UwOWU2M2QyY2M0NjRmN2FmYTUyNDU4Li40NDE1OWU1MGM3
OTMzYmYyNTg2MTU2ZjhkODhmNDI2MWQwZTYzZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBA
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShTZWNvbmRzJiBzdGFja1RyYWNlUHJv
Y2Vzc2luZ1RpbWUpCiAgICAgICAgIExvY2tlciBtYWNoaW5lVGhyZWFkc0xvY2tlciB7IG1fdm0u
aGVhcC5tYWNoaW5lVGhyZWFkcygpLmdldExvY2soKSB9OwogICAgICAgICBMb2NrZXIgY29kZUJs
b2NrU2V0TG9ja2VyIHsgbV92bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9OwogICAg
ICAgICBMb2NrZXIgZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciB7IEV4ZWN1dGFibGVBbGxvY2F0
b3I6OnNpbmdsZXRvbigpLmdldExvY2soKSB9OwotICAgICAgICBPcHRpb25hbDxMb2NrSG9sZGVy
PiB3YXNtQ2FsbGVlc0xvY2tlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMb2NrSG9sZGVyPiB3
YXNtQ2FsbGVlc0xvY2tlcjsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGlmIChX
YXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgd2FzbUNhbGxlZXNMb2NrZXIuZW1wbGFj
ZShXYXNtOjpDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZ2V0TG9jaygpKTsKQEAgLTYxNCw3
ICs2MTQsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tU
cmFjZXMoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5B
QkxFKEpJVCkKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9y
aWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3Jp
Z2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5wcm9jZXNzZWRTdGFja1RyYWNlLnRvcFBDKSkg
ewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2RlT3JpZ2luKHRvcENvZGVCbG9jaywgKmNv
ZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9MYXN0RnJhbWUo
dW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0SW5kZXggPSAxOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVy
OjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgaWYgKCFzdGFj
a1RyYWNlLmZyYW1lcy5zaXplKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24gPSBbJl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlv
biBsb2NhdGlvbiwgT3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRp
b25Nb2RlKSAtPiBTdHJpbmcgeworICAgICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24g
PSBbJl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxX
YXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21waWxhdGlvbk1vZGUpIC0+IFN0cmluZyB7CiAg
ICAgICAgICAgICBTdHJpbmcgYnl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIFN0cmluZyBjb2Rl
QmxvY2tIYXNoOwogICAgICAgICAgICAgU3RyaW5nIGppdFR5cGU7CkBAIC0xMTU3LDcgKzExNTcs
NyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVh
bSYgb3V0KQogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3RhY2tUcmFjZS5mcmFtZXMu
Zmlyc3QoKTsKICAgICAgICAgYXV0byBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFt
ZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFtZS5zZW1hbnRp
Y0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7Ci0gICAgICAgIGlmIChPcHRp
b25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFj
aGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7CisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdGFja0ZyYW1lOjpDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+
PiBtYWNoaW5lTG9jYXRpb24gPSBmcmFtZS5tYWNoaW5lTG9jYXRpb24pIHsKICAgICAgICAgICAg
IGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lRGVzY3JpcHRpb24sICIgPC0tICIs
CiAgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0aW9uLT5zZWNvbmQtPmluZmVycmVkTmFtZSgp
LmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihtYWNoaW5lTG9jYXRpb24tPmZpcnN0LCBz
dGQ6Om51bGxvcHQpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCmluZGV4IGQxNWI5YWQ2Mjk3ZjM2YzQ5ZDQyNzU2MDU0
MTMzZTNkMWQxYzc4NTMuLjZiYTkxOWM0MmQyOTNiOTBkYWU3OWNkYzk2MWI3YjIyYjEyNzg0OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmgKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgICAgICBDb2RlQmxvY2sqIHZlcmlmaWVk
Q29kZUJsb2NrIHsgbnVsbHB0ciB9OwogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXg7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBPcHRpb25hbDxXYXNtOjpJbmRl
eE9yTmFtZT4gd2FzbUluZGV4T3JOYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhc206Oklu
ZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7CiAjZW5kaWYKLSAgICAgICAgT3B0aW9uYWw8V2Fz
bTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdhc206OkNvbXBpbGF0aW9uTW9kZT4gd2FzbUNvbXBpbGF0aW9uTW9kZTsKICAgICB9
OwogCiAgICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgeyAKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGlj
OgogICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSB7IG51bGxwdHIgfTsKICAgICAg
ICAgSlNPYmplY3QqIGNhbGxlZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgICAgIE9wdGlvbmFsPFdhc206OkluZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FzbTo6SW5kZXhPck5hbWU+IHdhc21JbmRleE9yTmFtZTsK
ICNlbmRpZgotICAgICAgICBPcHRpb25hbDxXYXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21w
aWxhdGlvbk1vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2Rl
PiB3YXNtQ29tcGlsYXRpb25Nb2RlOwogCiAgICAgICAgIHN0cnVjdCBDb2RlTG9jYXRpb24gewog
ICAgICAgICAgICAgYm9vbCBoYXNDb2RlQmxvY2tIYXNoKCkgY29uc3QKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAKICAgICAgICAgQ29kZUxvY2F0aW9uIHNlbWFudGlj
TG9jYXRpb247Ci0gICAgICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENvZGVC
bG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRoaXMgaXMgbm9uLW51bGwgaWYgd2Ugd2VyZSBp
bmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNoaW5lIGZyYW1lIHdlIHdlcmUgaW5saW5lZCBp
bnRvLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENvZGVC
bG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRoaXMgaXMgbm9uLW51bGwgaWYgd2Ugd2VyZSBp
bmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNoaW5lIGZyYW1lIHdlIHdlcmUgaW5saW5lZCBp
bnRvLgogCiAgICAgICAgIGJvb2wgaGFzRXhwcmVzc2lvbkluZm8oKSBjb25zdCB7IHJldHVybiBz
ZW1hbnRpY0xvY2F0aW9uLmhhc0V4cHJlc3Npb25JbmZvKCk7IH0KICAgICAgICAgdW5zaWduZWQg
bGluZU51bWJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlZWQxOWNhYTU3YmNkMTMzMzVjOWRkOWNiOGQz
NTU3NTU4ZWNiNjAuLjU0ZjQ2ZTgzMGVkNzMyNmZkNzJlN2FkM2Q2MjI4ODVjOGJmMzMwNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCkBAIC00OTcsNyArNDk3LDcgQEAgQ29kZUJsb2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxlOjpo
YXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAgICByZXR1cm4gQ29k
ZUJsb2NrSGFzaChzb3VyY2UoKSwga2luZCk7CiB9CiAKLU9wdGlvbmFsPGludD4gU2NyaXB0RXhl
Y3V0YWJsZTo6b3ZlcnJpZGVMaW5lTnVtYmVyKFZNJiB2bSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
aW50PiBTY3JpcHRFeGVjdXRhYmxlOjpvdmVycmlkZUxpbmVOdW1iZXIoVk0mIHZtKSBjb25zdAog
ewogICAgIGlmIChpbmhlcml0czxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKSkKICAgICAgICAgcmV0
dXJuIGpzQ2FzdDxjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+b3ZlcnJpZGVMaW5l
TnVtYmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmgKaW5kZXggZDBmMWZjZGRkYTcxOTkxODVlODNmNDE4ZWRjMmRkYTcwOTBmOGQ1ZC4u
ZjRiZWE3MDhjYzRjODI4YTY4OWEzOWI3MjhmYmQ2MWM4OGQyYjY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5zdGFydENvbHVtbigpLm9uZUJhc2VkSW50KCk7IH0KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4gb3Zl
cnJpZGVMaW5lTnVtYmVyKFZNJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJy
aWRlTGluZU51bWJlcihWTSYpIGNvbnN0OwogICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldChWTSYpIGNvbnN0OwogICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQo
Vk0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1l
LmNwcAppbmRleCA5ZTkzZjhiMjlmMWZjY2JkOTA5MWMwMTIzZTQ1MjVlODgwMTViMWZlLi42ZWUx
YzViOTJjZDU2OTFjZjNlODE2NDNhNmUxOWJlNDM2MThiOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
U3RhY2tGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVk
JiBjb2x1bW4pIGNvbnN0CiAgICAgbV9jb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVj
b2RlSW5kZXgobV9ieXRlY29kZUluZGV4LCBkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVudXNl
ZEVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgaWYgKE9wdGlvbmFs
PGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gZXhlY3V0YWJsZS0+b3ZlcnJpZGVMaW5lTnVtYmVy
KG1fY29kZUJsb2NrLT52bSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRl
TGluZU51bWJlciA9IGV4ZWN1dGFibGUtPm92ZXJyaWRlTGluZU51bWJlcihtX2NvZGVCbG9jay0+
dm0oKSkpCiAgICAgICAgIGxpbmUgPSBvdmVycmlkZUxpbmVOdW1iZXIudmFsdWUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXgg
ODRmMmM1YmJmN2MxMjg2YWRhZGVjYmJhOTNmODEyM2M1MTk0NTJhOS4uNDU3Njk3YzdlYzljZWQ4
OWNhOWViZWY3NGVlNDdiOGE0YzdhNGIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU3RyaW5nT2Jq
ZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSAKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgoY2VsbCwg
Z2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkp
OwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dChjZWxsLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KQEAgLTk0LDcgKzk0LDcg
QEAgc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJpbmdPYmplY3QqIG9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKG9iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIFN0cmluZ09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcgogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdP
YmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYg
dGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXgg
OWNkZTQ2MzQxNzIzYzdlNDJmMWY5MThkNzc5M2M0MGVhNTA4ZTRlZi4uZjVmYjc4NWRiYTFmNGQz
NWI0M2JiMjc2ZDEyNDFiMWI1MDE5ODlhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlVmFsdWUpOwot
ICAgIE9wdGlvbmFsPENhY2hlZENhbGw+IGNhY2hlZENhbGw7CisgICAgc3RkOjpvcHRpb25hbDxD
YWNoZWRDYWxsPiBjYWNoZWRDYWxsOwogICAgIFN0cmluZyByZXBsYWNlU3RyaW5nOwogICAgIGlm
IChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSB7CiAgICAgICAgIHJlcGxh
Y2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA3YTZhMzAyY2Qy
YTQ5OTIyYjQ4NjljOTBlY2YzMzY5MjljNTI0MzcuLjFjYWU4MjE5ZGU4NDZlMjI3YTc1YjRkZmEy
NGVlMTU3YmNkOGY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmNhbkFjY2Vzc1By
b3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1hdXRvIFN0cnVjdHVyZTo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0IC0+IE9wdGlvbmFsPFByb3BlcnR5SGFzaEVudHJ5PgorYXV0byBT
dHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5SGFzaEVudHJ5PgogewogICAgIGZvciAo
Y29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJbmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5w
YXJlbnRDbGFzcykgewogICAgICAgICBpZiAoY29uc3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxl
ID0gaW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0NDc1YThiOWFjMjVmNmI3ZjEwYmUzMWVhNTE2M2Y4MWU2
NmUwMjljLi40NWNlMTdmZWM2MjQzNTYzOTM2MDZmNGUzY2E5ZDQwNjIxYjE3MTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNjg3LDcgKzY4Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiB0YWJsZTsKICAgICAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIHZhbHVlOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UHJvcGVydHlIYXNo
RW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8UHJvcGVydHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9w
ZXJ0eU5hbWUpIGNvbnN0OwogICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmgKaW5kZXggNzNlNDNmYTJjMTdhN2Y1ZTdlM2Q2NzMzZWE1YThjY2UwZjg0ZGUxZC4u
Y2NmOTA0Zjg4OGM4NDRkYmY5ZjIzNmFiOTdmN2YxOGMxYjYyNDJjMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yVGFibGU7
CiBjbGFzcyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3I+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxTdHJp
bmcsIDQ+IFN0cmluZ1ZlY3RvcjsKLSAgICB0eXBlZGVmIFZlY3RvcjxPcHRpb25hbDxTdHJpbmc+
LCA0PiBPcHRpb25hbFN0cmluZ1ZlY3RvcjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6Om9wdGlv
bmFsPFN0cmluZz4sIDQ+IE9wdGlvbmFsU3RyaW5nVmVjdG9yOwogCiAgICAgZW51bSBEZWxldGVk
VmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Io
RGVsZXRlZFZhbHVlVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
b05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGJiN2YxYzU4YTA2NGMzNGM1ZmZkODVjYzA5ODFmNjQ2
OTA1ZGMwOGEuLjk1ZTY3YWUwZjI1N2YyY2YzZTJjYjlhZDNjNDlhNzlhZDc3NzM2NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaApA
QCAtNTcsNyArNTcsNyBAQCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHRvTmF0aXZlRnJvbVZhbHVl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdgogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgotT3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8
dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24o
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFkYXB0
b3IsIEJpZ0ludDY0QWRhcHRvcj4gfHwgc3RkOjppc19zYW1lX3Y8QWRhcHRvciwgQmlnVWludDY0
QWRhcHRvcj4pIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAppbmRleCA1MzQ5
ZGYxNmEyZWM0NDFlZTQ2MTJlM2M5NjY0OGZmODNkMzZlYzI3Li4xNWI2MzE3NWQzMzNhYWM1YjNj
N2Q5NDE4NWJjNDVlZDEyY2RiNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAtNzgsMTQgKzc4LDE0IEBAIHN0cnVjdCBJ
bnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6
dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxU
eXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJj
aW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoKHZhbHVlID49IDAgJiYgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYXhWYWx1
ZSkpIHx8IHZhbHVlIDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obWluVmFsdWUpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+
KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9t
VWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbVVpbnQzMldpdGhvdXRDb2VyY2lvbih1aW50MzJfdCB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQzMl90Piht
YXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTMsNyArOTMs
NyBAQCBzdHJ1Y3QgSW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvciB7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5
cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJj
aW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19j
YXN0PFR5cGU+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdl
cikgIT0gdmFsdWUpCkBAIC0xNDUsMTIgKzE0NSwxMiBAQCBzdHJ1Y3QgRmxvYXRUeXBlZEFycmF5
QWRhcHRvciB7CiAgICAgICAgIHJldHVybiBPdGhlckFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJs
ZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJv
bUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRD
b2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9O
YXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSB8fCBzdGQ6OmlzaW5mKHZhbHVlKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CkBAIC0yOTcsNyArMjk3LDcgQEAg
c3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9y
Ojp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRp
b25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVl
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91
dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPiBtYXhW
YWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTMwNSw3ICszMDUsNyBAQCBzdHJ1Y3QgVWludDhDbGFtcGVkQWRhcHRvciB7CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUg
dmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91Ymxl
V2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVpbnQ4X3QgaW50
ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA0MmMzMzVjYzAxYjgyMDg1NjYxNjE2YmJmYTI1MDNiYmUwNTdlYTBhLi45OGE3NWM2
ZjhiOGRiMjc5ZDAyNmYzMmViZjNiYmNjNTQxYmFiMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgogICAgIHZvaWQgbG9nRXZlbnQoQ29kZUJsb2NrKiwgY29uc3QgY2hhciogc3Vt
bWFyeSwgY29uc3QgRnVuYyYgZnVuYyk7CiAKLSAgICBPcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4g
b3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2stPm93bmVyVGhyZWFkKCk7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25lclRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXBpTG9jay0+b3duZXJUaHJlYWQoKTsgfQogCiAgICAgVk1UcmFwcyYgdHJhcHMo
KSB7IHJldHVybiBtX3RyYXBzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1U
cmFwcy5jcHAKaW5kZXggZmRlYzZiZjEyMzQyMzNjYWFlMDI0OGFiODVlYWFjMTViMjJmYTZiMC4u
OWZlZGM1MWE2ZDZjZTExYWNjOGFlODc0YWVlNWFhMTgyMzRiZmJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToK
ICAgICB7IH0KIAogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxTaWduYWxDb250ZXh0PiB0
cnlDcmVhdGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTaWduYWxDb250ZXh0PiB0cnlDcmVhdGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lz
dGVycykKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Qb2ludGVyID0gTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpOwogICAgICAgICBpZiAoIWluc3Ry
dWN0aW9uUG9pbnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAppbmRleCBlNjkwYTY1ZTJkM2Y2ZTRlNWRmMDk5YmZmM2NmYThhMGU4ZmI1OTBjLi5mZjEzNjVi
ODc0OTIyNTY5MmI3YWQ1NGRkOWVmMjdlNzM3NmM0MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC02MDksNyArNjA5LDcgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpOwogICAgICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBq
c051bWJlcih0aGlzT2JqZWN0LT5tX3ZlY3RvcltpbmRleC52YWx1ZSgpXSkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
U2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2ln
aWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggMTdjMmE1ZjM4YzQ0NWRkYjA0Zjc2MDQ0YjZkY2U5
Njg5NzNjMGY4MS4uYTJkOTU0ZmFmZmQ5YzU1YTliYWY5OWFjMDAzMDMwYzg0YThjNTU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVy
LmNwcApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHsgfQogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFNpZ25hbENvbnRleHQ+IHRyeUNyZWF0ZShQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVnaXN0ZXJzKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpZ25hbENvbnRleHQ+IHRy
eUNyZWF0ZShQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHsKICAgICAgICAgYXV0
byBpbnN0cnVjdGlvblBvaW50ZXIgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycyk7CiAgICAgICAgIGlmICghaW5zdHJ1Y3Rpb25Qb2ludGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggMDBh
MTdjNDA2NGE2MDMwYzNlNGE0Zjk2NzcyMTRhNTdhN2JmNzk5MC4uZjRhNmRhOTY5MjU1MDliZjE1
NzkzYzI0NTIzNWY1MzM5ZmQ5ODIyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBpbmxpbmUg
VHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNMb2FkT3AoRXh0QXRvbWljT3BUeXBl
IG9wLCBUeXBlIHZhbHVlVAogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxCMzo6
QWlyOjpPcGNvZGU+IG9wY29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEIzOjpBaXI6Ok9wY29kZT4g
b3Bjb2RlOwogICAgIGlmIChpc1g4NigpIHx8IGlzQVJNNjRFKCkpCiAgICAgICAgIG9wY29kZSA9
IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYWNjZXNzV2lkdGgob3ApKTsKICAgICBC
Mzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2RlID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lE
VEgoQWRkLCBhY2Nlc3NXaWR0aChvcCkpOwpAQCAtMjIzNSw3ICsyMjM1LDcgQEAgaW5saW5lIHZv
aWQgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNTdG9yZU9wKEV4dEF0b21pY09wVHlwZSBvcCwg
VHlwZSB2YWx1ZVR5cGUKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QjM6OkFp
cjo6T3Bjb2RlPiBvcGNvZGU7CisgICAgc3RkOjpvcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9w
Y29kZTsKICAgICBpZiAoaXNYODYoKSB8fCBpc0FSTTY0RSgpKQogICAgICAgICBvcGNvZGUgPSBP
UENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGFjY2Vzc1dpZHRoKG9wKSk7CiAgICAgQjM6OkFp
cjo6T3Bjb2RlIG5vbkF0b21pY09wY29kZSA9IEIzOjpBaXI6Ok5vcDsKQEAgLTIyODksNyArMjI4
OSw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQmluYXJ5Uk1XT3AoRXh0
QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlwCiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IE9wdGlvbmFsPEIzOjpBaXI6Ok9wY29kZT4gb3Bjb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QjM6
OkFpcjo6T3Bjb2RlPiBvcGNvZGU7CiAgICAgQjM6OkFpcjo6T3Bjb2RlIG5vbkF0b21pY09wY29k
ZSA9IEIzOjpBaXI6Ok5vcDsKICAgICBCMzo6Q29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0g
QjM6Ok5vdENvbW11dGF0aXZlOwogICAgIHN3aXRjaCAob3ApIHsKQEAgLTI0ODYsNyArMjQ4Niw3
IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjplbWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4
dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1CiAKICAgICBtX2N1cnJlbnRCbG9jayA9IGZhaWx1
cmVDYXNlOwogICAgIChbJl0gewotICAgICAgICBPcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9w
Y29kZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKICAg
ICAgICAgaWYgKGlzWDg2KCkgfHwgaXNBUk02NEUoKSkKICAgICAgICAgICAgIG9wY29kZSA9IE9Q
Q09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYWNjZXNzV2lkdGgpOwogICAgICAgICBCMzo6
QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2RlID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgo
QWRkLCBhY2Nlc3NXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMTU4NzhlMzYzNDBkMjRhMWY5MTI1MjEyMGZlYzFmMGI0
OTI5NDdhNi4uMTA2Y2E1ZmQ1NWQ2ZGJkMmEzYWYxODM4NDVjYTRhNzk4NzdiZDZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
Mjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMo
KSB7IH0KICAgICB2b2lkIGRpZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyB9CiAKLSAgICBWYWx1ZSog
Y29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBzdGQ6
Om51bGxvcHQpOworICAgIFZhbHVlKiBjb25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cywg
c3RkOjpvcHRpb25hbDxPcmlnaW4+ID0gc3RkOjpudWxsb3B0KTsKICAgICBWYWx1ZSogZnJhbWVQ
b2ludGVyKCk7CiAgICAgdm9pZCBpbnNlcnRDb25zdGFudHMoKTsKIApAQCAtNjE1LDcgKzYxNSw3
IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdEV4Y2VwdGlvbkNoZWNrKENDYWxsSGVscGVycyYg
aml0LCBFeGNlcHRpb25UeXBlIHR5cGUpCiAgICAgfSk7CiB9CiAKLVZhbHVlKiBCM0lSR2VuZXJh
dG9yOjpjb25zdGFudChCMzo6VHlwZSB0eXBlLCB1aW50NjRfdCBiaXRzLCBPcHRpb25hbDxPcmln
aW4+IG1heWJlT3JpZ2luKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmNvbnN0YW50KEIzOjpUeXBl
IHR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0aW9uYWw8T3JpZ2luPiBtYXliZU9yaWdpbikK
IHsKICAgICBhdXRvIHJlc3VsdCA9IG1fY29uc3RhbnRQb29sLmVuc3VyZShWYWx1ZUtleShvcGNv
ZGVGb3JDb25zdGFudCh0eXBlKSwgdHlwZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYml0cykpLCBb
Jl0gewogICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9wcm9jLmFkZENvbnN0YW50KG1heWJlT3Jp
Z2luID8gKm1heWJlT3JpZ2luIDogb3JpZ2luKCksIHR5cGUsIGJpdHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAppbmRleCAyYTUzZDdlNmVkMjM2YWZm
YmZjMDMzMjZmMzcxM2Q3ZmY5ZDdiZDkzLi5jNTQ5MjQyOTE5ZmY1NGVlMTEyOGQxYjYzNjYwNWM4
YzRiOWM0MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50
cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRW50cnlQbGFuOjpjb21waWxlRnVuY3Rpb25z
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBpZiAoIWhhc1dvcmsoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgT3B0aW9uYWw8VHJhY2VTY29wZT4gdHJhY2VTY29wZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRyYWNlU2NvcGU+IHRyYWNlU2NvcGU7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVRy
YWNlUG9pbnRzKCkpCiAgICAgICAgIHRyYWNlU2NvcGUuZW1wbGFjZShXZWJBc3NlbWJseUNvbXBp
bGVTdGFydCwgV2ViQXNzZW1ibHlDb21waWxlRW5kKTsKICAgICBUaHJlYWRDb3VudEhvbGRlciBo
b2xkZXIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcApp
bmRleCA2YTJiMGYzM2Y1ZTViODY2MmE2NDc1MTBmMmVlMWU3OGFlZTE4NzgxLi5mNjBhNDU2NTA5
NDU1MTQ5YmUzNjViNGE4MjA2MTU3NzRkODhjOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogCi1TZWdtZW50OjpQdHIgU2VnbWVudDo6Y3JlYXRlKE9wdGlvbmFs
PEkzMkluaXRFeHByPiBvZmZzZXQsIHVpbnQzMl90IHNpemVJbkJ5dGVzLCBLaW5kIGtpbmQpCitT
ZWdtZW50OjpQdHIgU2VnbWVudDo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+IG9m
ZnNldCwgdWludDMyX3Qgc2l6ZUluQnl0ZXMsIEtpbmQga2luZCkKIHsKICAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSBzaXplSW5CeXRlczsK
ICAgICB0b3RhbEJ5dGVzQ2hlY2tlZCArPSBzaXplb2YoU2VnbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZmE5NmIzNGQ4NGIxNzA3NjJmZDY5N2E1MTc1
NmZjOTA5ZDVlMGQ5Mi4uODc1NWExMzZjY2M5YjU3MDQ1YmVjNzBkMzk0MGE3MDIwNTcwOTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjI2LDcgKzIyNiw3
IEBAIHN0cnVjdCBTZWdtZW50IHsKIAogICAgIEtpbmQga2luZDsKICAgICB1aW50MzJfdCBzaXpl
SW5CeXRlczsKLSAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CisgICAg
c3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CiAgICAgLy8gQnl0ZXMg
YXJlIGFsbG9jYXRlZCBhdCB0aGUgZW5kLgogICAgIHVpbnQ4X3QmIGJ5dGUodWludDMyX3QgcG9z
KQogICAgIHsKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdHJ1Y3QgU2VnbWVudCB7CiAKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KFNlZ21lbnQqKTsKICAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxT
ZWdtZW50LCBkZWNsdHlwZSgmU2VnbWVudDo6ZGVzdHJveSk+IFB0cjsKLSAgICBzdGF0aWMgU2Vn
bWVudDo6UHRyIGNyZWF0ZShPcHRpb25hbDxJMzJJbml0RXhwcj4sIHVpbnQzMl90LCBLaW5kKTsK
KyAgICBzdGF0aWMgU2VnbWVudDo6UHRyIGNyZWF0ZShzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHBy
PiwgdWludDMyX3QsIEtpbmQpOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQgPT0gS2luZDo6QWN0aXZlOyB9CiAgICAgYm9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7IHJl
dHVybiBraW5kID09IEtpbmQ6OlBhc3NpdmU7IH0KQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3Qg
RWxlbWVudCB7CiAgICAgICAgIERlY2xhcmVkLAogICAgIH07CiAKLSAgICBFbGVtZW50KEVsZW1l
bnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZSwgT3B0aW9uYWw8dWlu
dDMyX3Q+IHRhYmxlSW5kZXgsIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcikKKyAgICBF
bGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZSwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdGFibGVJbmRleCwgc3RkOjpvcHRpb25hbDxJMzJJbml0
RXhwcj4gaW5pdEV4cHIpCiAgICAgICAgIDoga2luZChraW5kKQogICAgICAgICAsIGVsZW1lbnRU
eXBlKGVsZW1lbnRUeXBlKQogICAgICAgICAsIHRhYmxlSW5kZXhJZkFjdGl2ZShXVEZNb3ZlKHRh
YmxlSW5kZXgpKQpAQCAtMjc1LDggKzI3NSw4IEBAIHN0cnVjdCBFbGVtZW50IHsKIAogICAgIEtp
bmQga2luZDsKICAgICBUYWJsZUVsZW1lbnRUeXBlIGVsZW1lbnRUeXBlOwotICAgIE9wdGlvbmFs
PHVpbnQzMl90PiB0YWJsZUluZGV4SWZBY3RpdmU7Ci0gICAgT3B0aW9uYWw8STMySW5pdEV4cHI+
IG9mZnNldElmQWN0aXZlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRhYmxlSW5kZXhJ
ZkFjdGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBvZmZzZXRJZkFjdGl2ZTsK
IAogICAgIC8vIEluZGV4IG1heSBiZSBudWxsRnVuY0luZGV4LgogICAgIFZlY3Rvcjx1aW50MzJf
dD4gZnVuY3Rpb25JbmRpY2VzOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKCEqdGhpcyk7CiAgICAgfQogCi0gICAgVGFibGVJbmZvcm1hdGlvbih1aW50MzJfdCBp
bml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgYm9vbCBpc0ltcG9ydCwgVGFibGVF
bGVtZW50VHlwZSB0eXBlKQorICAgIFRhYmxlSW5mb3JtYXRpb24odWludDMyX3QgaW5pdGlhbCwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgYm9vbCBpc0ltcG9ydCwgVGFibGVFbGVt
ZW50VHlwZSB0eXBlKQogICAgICAgICA6IG1faW5pdGlhbChpbml0aWFsKQogICAgICAgICAsIG1f
bWF4aW11bShtYXhpbXVtKQogICAgICAgICAsIG1faXNJbXBvcnQoaXNJbXBvcnQpCkBAIC0zMDMs
MTMgKzMwMywxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaXNJbXBvcnQoKSBjb25zdCB7IHJldHVy
biBtX2lzSW1wb3J0OyB9CiAgICAgdWludDMyX3QgaW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhbDsgfQotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKCkgY29uc3QgeyByZXR1
cm4gbV9tYXhpbXVtOyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFR5cGUgd2FzbVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiA/IFR5cGVzOjpGdW5jcmVmIDog
VHlwZXM6OkV4dGVybnJlZjsgfQogCiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1faW5pdGlhbDsK
LSAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG1fbWF4aW11bTsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBUYWJsZUVsZW1lbnRUeXBlIG1fdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgK
aW5kZXggYzAxNjVhOGQ5ZWRhOWEyZmMxODkxMTg3MTRiMDBmNmEyM2Y2OWNmZC4uMzc2NmYyYTFm
MTE2NjhhMzQ1MDE3NTJhOGZhYjRmNzllNjkxMzczYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTg3LDcgKzg3LDcgQEAg
c3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1v
ZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgVmVjdG9yPEZ1bmN0aW9uRGF0YT4gZnVuY3Rpb25zOwog
CiAgICAgVmVjdG9yPEV4cG9ydD4gZXhwb3J0czsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gc3Rh
cnRGdW5jdGlvbkluZGV4U3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc3RhcnRG
dW5jdGlvbkluZGV4U3BhY2U7CiAgICAgVmVjdG9yPFNlZ21lbnQ6OlB0cj4gZGF0YTsKICAgICBW
ZWN0b3I8RWxlbWVudD4gZWxlbWVudHM7CiAgICAgVmVjdG9yPFRhYmxlSW5mb3JtYXRpb24+IHRh
YmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2Vj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKaW5k
ZXggNjg5YTA5ZmRjM2NjODkyOTE4ZDIxMmYzNjYyZjc2ZmJjZGFhM2M0Ny4uZmU2M2NmNTU0NzM2
NmZjMTc0MGMxZjBjNzBiYTgxYmU3NTM2YTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lU2VjdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRIYXNoKGNvbnN0IE9wdGlvbmFsPENTdHJpbmc+ICZoYXNoKQorICAgIHZvaWQgc2V0SGFzaChj
b25zdCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+ICZoYXNoKQogICAgIHsKICAgICAgICAgbW9kdWxl
SGFzaCA9IE5hbWUoaGFzaCA/IGhhc2gtPmxlbmd0aCgpIDogMyk7CiAgICAgICAgIGlmIChoYXNo
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5j
cHAKaW5kZXggYmZkYTliM2IwZWZlNDYwMjRlNGM3ZWE2YWVlM2FjMzI5NjVhNTViMC4uNTExZmNk
OGMwMGMyNzJhNzY0OTVlMzk5NGQwMDRlNzdlY2Q0ZWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBA
IGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGlt
aXRzKHVpbnQzMl90JiBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4mIG1heGltdW0sIGJvb2wm
IGlzU2hhcmVkLCBMaW1pdHNUeXBlIGxpbWl0c1R5cGUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1NoYXJlZCwgTGltaXRzVHlw
ZSBsaW1pdHNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKCFtYXhpbXVtKTsK
IApAQCAtMjA5LDcgKzIwOSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBl
cihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rih0eXBlICE9IHN0YXRpY19jYXN0PGludDhfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpICYmIHR5cGUg
IT0gc3RhdGljX2Nhc3Q8aW50OF90PihUeXBlS2luZDo6RXh0ZXJucmVmKSwgIlRhYmxlIHR5cGUg
c2hvdWxkIGJlIGZ1bmNyZWYgb3IgYW55cmVmLCBnb3QgIiwgdHlwZSk7CiAKICAgICB1aW50MzJf
dCBpbml0aWFsOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgYm9vbCBpc1NoYXJlZCA9IGZhbHNlOwogICAg
IFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4
aW11bSwgaXNTaGFyZWQsIExpbWl0c1R5cGU6OlRhYmxlKTsKICAgICBpZiAoVU5MSUtFTFkoIWxp
bWl0cykpCkBAIC0yNDgsNyArMjQ4LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZU1lbW9y
eUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgYm9vbCBpc1NoYXJl
ZCA9IGZhbHNlOwogICAgIHsKICAgICAgICAgdWludDMyX3QgaW5pdGlhbDsKLSAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IG1heGltdW07CiAgICAgICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVM
aW1pdHMoaW5pdGlhbCwgbWF4aW11bSwgaXNTaGFyZWQsIExpbWl0c1R5cGU6Ok1lbW9yeSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghbGltaXRzKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigpKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAg
ICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7CiAgICAgICAgICAgICBXQVNN
X0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgp
KTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CiAgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlv
bihpbml0RXhwcikpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwpAQCAtNDMw
LDcgKzQzMCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlh
bFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
dGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUg
aW5kZXgiKTsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVF
bGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJ
bml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHBy
PiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJ
MzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIHVp
bnQ4X3QgZWxlbWVudEtpbmQ7CkBAIC00NjcsNyArNDY3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBjb25zdGV4cHIg
dWludDMyX3QgdGFibGVJbmRleCA9IDA7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKIAotICAgICAgICAg
ICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihpbml0RXhwcikpOwog
CiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwpAQCAtNTA0LDcgKzUwNCw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJj
YW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKICAgICAg
ICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgo
dGFibGVJbmRleCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4
cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVs
ZW1lbnRTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKQEAg
LTY0MSw3ICs2NDEsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxl
SWR4KHVpbnQzMl90IHRhYmxlSW5kZXgpIC0+IFBhcnRpYWxSZXN1bAogICAgIHJldHVybiB7IH07
CiB9CiAKLWF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJ
bml0RXhwcj4mIGluaXRFeHByLCBBU0NJSUxpdGVyYWwgZmFpbE1lc3NhZ2UpIC0+IFBhcnRpYWxS
ZXN1bHQKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihzdGQ6Om9wdGlvbmFs
PEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJTGl0ZXJhbCBmYWlsTWVzc2FnZSkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIHVpbnQ4X3QgaW5pdE9wY29kZTsKICAgICB1aW50NjRfdCBpbml0
RXhwckJpdHM7CkBAIC02NTMsNyArNjUzLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkz
MkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJTGl0ZXIKICAg
ICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJG
b3JFbGVtZW50U2VjdGlvbihPcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0
aWFsUmVzdWx0CithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50
U2VjdGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICByZXR1cm4gcGFyc2VJMzJJbml0RXhwcihpbml0RXhwciwgIkVsZW1lbnQg
aW5pdF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIiX3MpOwogfQpAQCAtNzIwLDcgKzcyMCw3IEBA
IGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mSW5kZXhlcyhW
ZWN0b3I8dWludDMyX3Q+JiByZXN1bHQsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBTZWN0
aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24oT3B0aW9uYWw8STMySW5p
dEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAorYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4m
IGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4
cHIoaW5pdEV4cHIsICJEYXRhIGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKIH0K
QEAgLTc1MCw3ICs3NTAsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRGF0YSgpIC0+IFBh
cnRpYWxSZXN1bHQKICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG1lbW9yeUluZGV4ID0gbWVt
b3J5SW5kZXhPckRhdGFGbGFnOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtZW1v
cnlJbmRleCA+PSBtX2luZm8tPm1lbW9yeUNvdW50KCksIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRh
IHNlZ21lbnQgaGFzIGluZGV4ICIsIG1lbW9yeUluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIG51
bWJlciBvZiBNZW1vcmllcyAiLCBtX2luZm8tPm1lbW9yeUNvdW50KCkpOwogCi0gICAgICAgICAg
ICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQ
RVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckRhdGFTZWN0aW9uKGluaXRFeHByKSk7CiAKICAg
ICAgICAgICAgIHVpbnQzMl90IGRhdGFCeXRlTGVuZ3RoOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VEYXRhKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIobWVtb3J5SW5kZXgpLCAiY2Fu
J3QgZ2V0ICIsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQncyBpbmRleCIpOwogICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtZW1vcnlJbmRleCA+PSBtX2luZm8tPm1lbW9y
eUNvdW50KCksIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQgaGFzIGluZGV4ICIsIG1l
bW9yeUluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBNZW1vcmllcyAiLCBtX2lu
Zm8tPm1lbW9yeUNvdW50KCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4g
aW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhw
cjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhw
ckZvckRhdGFTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFC
eXRlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNl
Y3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmgKaW5kZXggNmY5NTc3NDgzZDM1MGVmMzJhNDFhM2I5YjE4MmJjNDk4MDIwYzAzYi4uOTFm
ZDNlZDgzNDIyNWM4MTNlMmQwMTM5MmI0OWU4ZDljM2JlMmI4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCkBAIC02NSwxOCArNjUsMTggQEAg
cHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9y
eUhlbHBlcihib29sIGlzSW1wb3J0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZVRhYmxlSGVscGVyKGJvb2wgaXNJbXBvcnQpOwogICAgIGVudW0gY2xhc3MgTGlt
aXRzVHlwZSB7IE1lbW9yeSwgVGFibGUgfTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50MzJfdCYgaW5pdGlhbCwgT3B0aW9uYWw8
dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1NoYXJlZCwgTGltaXRzVHlwZSk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZXNpemFibGVMaW1pdHModWludDMy
X3QmIGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1No
YXJlZCwgTGltaXRzVHlwZSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VJbml0RXhwcih1aW50OF90JiwgdWludDY0X3QmLCBUeXBlJiBpbml0RXhwclR5cGUpOwot
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMySW5pdEV4cHIoT3B0
aW9uYWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRlcmFsIGZhaWxNZXNzYWdlKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByKHN0ZDo6b3B0aW9u
YWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRlcmFsIGZhaWxNZXNzYWdlKTsKIAogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQz
Ml90KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRF
eHByRm9yRWxlbWVudFNlY3Rpb24oT3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50S2luZCh1aW50OF90JiBlbGVtZW50S2luZCk7CiAg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbmRleENvdW50Rm9yRWxl
bWVudFNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCk7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lv
bnMoVmVjdG9yPHVpbnQzMl90PiYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7CiAg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50U2VnbWVudFZl
Y3Rvck9mSW5kZXhlcyhWZWN0b3I8dWludDMyX3Q+JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0IHVu
c2lnbmVkKTsKIAotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMy
SW5pdEV4cHJGb3JEYXRhU2VjdGlvbihPcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rp
b24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKIAogICAgIHNpemVfdCBtX29mZnNldElu
U291cmNlOwogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAppbmRleCAxZWNh
NDM2ZGY1OTJmMDdmMzgzZWQwN2E5ZDE5YjQ3YjU0ZGNkZGUxLi44OGM2MjdjMTYwYzY5YjZhNzU4
YzcyY2QzMTE5ODdlNTQ4MTVmMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgY29u
c3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgICAgICB9IFwKICAgICB9IHdoaWxlICgw
KQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDcoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElORSBz
dGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDcoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90JiBvZmZzZXQsIHNpemVfdCBzaXplKQogewogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGF1dG8gU3RyZWFtaW5nUGFy
c2VyOjpwYXJzZVNlY3Rpb25QYXlsb2FkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIC0+IFN0YXRl
CiAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9uSUQ7CiB9CiAKLWF1dG8gU3RyZWFtaW5nUGFyc2Vy
Ojpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBzaXplX3Qm
IG9mZnNldEluQnl0ZXMsIHNpemVfdCByZXF1aXJlZFNpemUpIC0+IE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4KK2F1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mZnNldEluQnl0ZXMsIHNpemVfdCByZXF1
aXJlZFNpemUpIC0+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PgogewogICAgIGlmICht
X3JlbWFpbmluZy5zaXplKCkgPT0gcmVxdWlyZWRTaXplKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQgPSBXVEZNb3ZlKG1fcmVtYWluaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaAppbmRleCAxYmNiNTA2YmQ1MWRmMTFl
ZDRmN2RjMzVjZGVlMTQzMGI0NDVkNjM1Li43YzY0MDA4Y2JkOWFjMDM5ZmY0YTgxOGViMWNkYmFk
NmU3NThlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3Ry
ZWFtaW5nUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVh
bWluZ1BhcnNlci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBwYXJz
ZUZ1bmN0aW9uU2l6ZSh1aW50MzJfdCk7CiAgICAgU3RhdGUgcGFyc2VGdW5jdGlvblBheWxvYWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb25z
dW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QsIHNpemVfdCYsIHNpemVfdCk7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnN1bWUoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCwgc2l6ZV90Jiwgc2l6ZV90KTsKICAgICBFeHBlY3RlZDx1aW50MzJfdCwgU3Rh
dGU+IGNvbnN1bWVWYXJVSW50MzIoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCwgc2l6ZV90
JiwgSXNFbmRPZlN0cmVhbSk7CiAKICAgICB2b2lkIG1vdmVUb1N0YXRlSWZOb3RGYWlsZWQoU3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXggOWFhNjcw
MjMwZWU3MTc5ZThlYjE4YTRjYWQ1N2I0OWY5MTgwNjNkZS4uOGE1NDc2MTg1NGNjNjFlNWRlZThi
MGY0MDMyNGYyODM0OTU0MWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFi
bGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgVGFibGU6OnNldExlbmd0aCh1aW50MzJfdCBs
ZW5ndGgpCiAgICAgQVNTRVJUKG1fbWFzayA9PSBXVEY6Om1hc2tGb3JTaXplKGFsbG9jYXRlZExl
bmd0aChsZW5ndGgpKSk7CiB9CiAKLVRhYmxlOjpUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBPcHRp
b25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFibGVFbGVtZW50VHlwZSB0eXBlKQorVGFibGU6OlRh
YmxlKHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRh
YmxlRWxlbWVudFR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9tYXhpbXVt
KG1heGltdW0pCiAgICAgLCBtX293bmVyKG51bGxwdHIpCkBAIC02NSw3ICs2NSw3IEBAIFRhYmxl
OjpUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFi
bGVFbGVtZW50VHlwZSB0eXBlCiAgICAgfQogfQogCi1SZWZQdHI8VGFibGU+IFRhYmxlOjp0cnlD
cmVhdGUodWludDMyX3QgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxl
RWxlbWVudFR5cGUgdHlwZSkKK1JlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJf
dCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRU
eXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTGVuZ3RoKGluaXRpYWwpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTc5LDcgKzc5LDcgQEAgUmVmUHRyPFRhYmxlPiBUYWJsZTo6dHJ5
Q3JlYXRlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWIK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDx1aW50MzJf
dD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQorc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUg
ZGVmYXVsdFZhbHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3duZXIpOwogICAgIGlmIChk
ZWx0YSA9PSAwKQpAQCAtMTkwLDcgKzE5MCw3IEBAIEZ1bmNSZWZUYWJsZSogVGFibGU6OmFzRnVu
Y3JlZlRhYmxlKCkKICAgICByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNy
ZWYgPyBzdGF0aWNfY2FzdDxGdW5jUmVmVGFibGUqPih0aGlzKSA6IG51bGxwdHI7CiB9CiAKLUZ1
bmNSZWZUYWJsZTo6RnVuY1JlZlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQz
Ml90PiBtYXhpbXVtKQorRnVuY1JlZlRhYmxlOjpGdW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlh
bCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSkKICAgICA6IFRhYmxlKGluaXRpYWws
IG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpCiB7CiAgICAgLy8gRklYTUU6IEl0
IG1pZ2h0IGJlIHdvcnRoIHRyeWluZyB0byBwcmUtYWxsb2NhdGUgbWF4aW11bSBoZXJlLiBUaGUg
c3BlYyByZWNvbW1lbmRzIGRvaW5nIHNvLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFi
bGUuaAppbmRleCAxOGVkNTAwMDM0NzBiOTNlNWNjNDgzZThhMmM2MjIwZDViODZiN2JmLi5hMDMw
NjFhNmFlYzc3Y2Q1NDA1N2E5NmE4ZTFkMDRhMWViM2Y1YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVGFibGUuaApAQCAtNDUsMTEgKzQ1LDExIEBAIGNsYXNzIFRhYmxlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRhYmxlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGFibGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFRhYmxlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFRhYmxlPiB0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgT3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGUpOworICAgIHN0YXRpYyBS
ZWZQdHI8VGFibGU+IHRyeUNyZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlKTsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5UYWJsZSgpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVt
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAgIHVpbnQzMl90IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRhYmxlLCBtX2xlbmd0
aCk7IH0KQEAgLTc4LDIwICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXQodWludDMyX3Qs
IEpTVmFsdWUpOwogICAgIEpTVmFsdWUgZ2V0KHVpbnQzMl90KSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBncm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSk7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZ3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUpOwogICAgIHZvaWQgY29weShjb25zdCBUYWJsZSogc3JjVGFibGUsIHVp
bnQzMl90IGRzdEluZGV4LCB1aW50MzJfdCBzcmNJbmRleCk7CiAKICAgICBERUNMQVJFX1ZJU0lU
X0FHR1JFR0FURTsKIAogcHJvdGVjdGVkOgotICAgIFRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9w
dGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlID0gVGFibGVFbGVtZW50
VHlwZTo6RXh0ZXJucmVmKTsKKyAgICBUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlID0gVGFibGVFbGVtZW50VHlw
ZTo6RXh0ZXJucmVmKTsKIAogICAgIHZvaWQgc2V0TGVuZ3RoKHVpbnQzMl90KTsKIAogICAgIHVp
bnQzMl90IG1fbGVuZ3RoOwogICAgIHVpbnQzMl90IG1fbWFzazsKICAgICBjb25zdCBUYWJsZUVs
ZW1lbnRUeXBlIG1fdHlwZTsKLSAgICBjb25zdCBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhpbXVt
OworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4aW11bTsKIAogICAgIE1h
bGxvY1B0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4sIFZNTWFsbG9jPiBtX2pzVmFsdWVzOwogICAg
IEpTT2JqZWN0KiBtX293bmVyOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mSW5zdGFuY2VzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEZ1bmNSZWZUYWJsZSwgbV9pbnN0YW5jZXMpOyB9CiAKIHByaXZhdGU6Ci0gICAgRnVuY1JlZlRh
YmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBG
dW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4
aW11bSk7CiAKICAgICBNYWxsb2NQdHI8V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgVk1N
YWxsb2M+IG1faW1wb3J0YWJsZUZ1bmN0aW9uczsKICAgICAvLyBjYWxsX2luZGlyZWN0IG5lZWRz
IHRvIGRvIGFuIEluc3RhbmNlIGNoZWNrIHRvIHBvdGVudGlhbGx5IGNvbnRleHQgc3dpdGNoIHdo
ZW4gY2FsbGluZyBhIGZ1bmN0aW9uIHRvIGFub3RoZXIgaW5zdGFuY2UuIFdlIGNhbiBob2xkIHJh
dyBwb2ludGVycyB0byBJbnN0YW5jZSBoZXJlIGJlY2F1c2UgdGhlIGVtYmVkZGVyIGVuc3VyZXMg
dGhhdCBUYWJsZSBrZWVwcyBhbGwgdGhlIGluc3RhbmNlcyBhbGl2ZS4gV2UgY291bGRuJ3QgaG9s
ZCBhIFJlZiBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2F1c2UgY3ljbGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCA2ZjQx
NjIyOWViYmY0Y2MwNmZlNTRhNzlmZDA0ZDdkNjcwZTYwYWQwLi5jOTUzMGU5Y2EyODdkNTcwM2Qw
NzgzNWI2NjI4ZDcyNWYzZjk1ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZExlbmd0aCh1aW50MzJf
dCBsZW5ndGgpIHsgcmV0dXJuIFdhc206OlRhYmxlOjppc1ZhbGlkTGVuZ3RoKGxlbmd0aCk7IH0K
LSAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUt
Pm1heGltdW0oKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25z
dCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVtKCk7IH0KICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5ndGgoKTsgfQogICAgIHVpbnQzMl90IGFsbG9jYXRl
ZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUtPmFsbG9jYXRlZExlbmd0aChsZW5ndGgo
KSk7IH0KICAgICBib29sIGdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVl
KSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGM1YmFjMjU5YTkxYjIxMWFiMzVj
YmE4NjgwM2M4NDNmMmU5MjdiYjcuLjMwMTUwMDkwYzYxNWU4NWM2YmZlZTc3NDA4YWYwMGIwOTMx
NWJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB3ZSB0aGluayB3ZSBhcmUgZ29p
bmcgdG8gcnVuIHdpdGggbWF0Y2hlcyB0aGUgb25lIHdlIGV4cGVjdC4KICAgICBBU1NFUlQod2Fz
bUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpLT5pc1NhZmVUb1J1
bih3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPm1lbW9yeSgpLT5tZW1vcnkoKS5tb2RlKCkpKTsK
IAotICAgIE9wdGlvbmFsPFRyYWNlU2NvcGU+IHRyYWNlU2NvcGU7CisgICAgc3RkOjpvcHRpb25h
bDxUcmFjZVNjb3BlPiB0cmFjZVNjb3BlOwogICAgIGlmIChPcHRpb25zOjp1c2VUcmFjZVBvaW50
cygpKQogICAgICAgICB0cmFjZVNjb3BlLmVtcGxhY2UoV2ViQXNzZW1ibHlFeGVjdXRlU3RhcnQs
IFdlYkFzc2VtYmx5RXhlY3V0ZUVuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA5ZmIxZTkz
YjZmOTFiOTUwNTNiOWJiMTAwMDFlNmE3ZjYzNTE4NjEzLi41NWY5ZDgyYWRkMmEyNGU1OWU5NDRl
ZjNmNjg5OTliNjEzNjU0YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0zMzYsOCArMzM2LDgg
QEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAgICAgICAgICAgIGlmIChhY3R1YWxJbml0aWFs
IDwgZXhwZWN0ZWRJbml0aWFsKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3Jl
YXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAicHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQg
aXMgdG9vIHNtYWxsIikpKTsKIAotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBl
eHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJbmRl
eF0ubWF4aW11bSgpKSB7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGFjdHVh
bE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tp
bXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0oKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
eGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBp
bXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAiZG9lcyBub3QgaGF2ZSBh
ICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwogICAg
ICAgICAgICAgICAgIGlmICgqYWN0dWFsTWF4aW11bSA+ICpleHBlY3RlZE1heGltdW0pCkBAIC01
MjksNyArNTI5LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHV0UmVzdWx0KTsKIAot
ICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgZXhwb3J0c09iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBleHBvcnRlZFZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAg
IH0gZWxzZQpAQCAtNTc5LDcgKzU3OSw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBjb25zdCBW
ZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0YSA9IG1vZHVsZUluZm9ybWF0aW9uLmRhdGE7
CiAgICAgCi0gICAgT3B0aW9uYWw8SlNWYWx1ZT4gZXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8SlNWYWx1ZT4gZXhjZXB0aW9uOwogCiAgICAgYXV0byBmb3JFYWNoQWN0aXZlRWxlbWVudCA9
IFsmXSAoYXV0byBmbikgewogICAgICAgICBmb3IgKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1l
bnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5lbGVtZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYjgwNThhOWQyYTUzNGRhNGNhN2JhNzk2NjlmYzM2NDk0YWJlMGYwZC4uMWFiMmYy
ZjM4NDQ4NDAyNmVhYmFjZTMxOWRkNTY1YWFkNDM5ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0
b3IuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICAv
LyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVuZGVm
aW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1bHQuCiAgICAgLy8gaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcwotICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBtYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgSWRl
bnRpZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11
bSIpOwogICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGds
b2JhbE9iamVjdCwgbWF4aW11bUlkZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJG
bGFncy5jcHAKaW5kZXggMjk3MDFmNjFmZDk3ODhkMTBmZGQ2MDRkMGYyMGVlYzliODBmMDA5Mi4u
YjhhMzgyMzZjYTNjNzUzMWE4MjVmYjA3M2ZmYjA1MzM4ODIxNDgwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLU9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBh
cnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxGbGFn
cz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgT3B0aW9uU2V0PEZsYWdz
PiBmbGFnczsKICAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVVbml0cygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCmluZGV4IDUwYzgzOTUzMzBlODVk
ZmYxZWFmYzU5M2ZkNzgyOGZlY2FhNDNlYjguLmUwNzJjMmU3ZGIzYjEzZTRhMTkzYTU4YzEwYjE1
YmU4ZmExZWRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJG
bGFncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCkBAIC00
MCw2ICs0MCw2IEBAIGVudW0gY2xhc3MgRmxhZ3MgOiB1aW50OF90IHsKICAgICBEZWxldGVkVmFs
dWUgPSAxIDw8IDcKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPE9wdGlvblNldDxG
bGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpZYXJyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcAppbmRleCAyY2QxZDYyZTcyOWE2NzJkOTBmODViODdiMTdjNTA1NmM2
MmI4MDIzLi4zYjM0OWJlODNiNDRjMDAzNmYwMTA2Zjc1OTI1MmU2Yjk2NzdlZjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTIwNTks
NyArMjA1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9
IG5ld0FsdGVybmF0aXZlSW5kZXg7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlz
anVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxy
ZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2Vk
KQorICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERp
c2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWdu
ZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBh
cmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQogICAgIHsKICAgICAgICAgaWYgKFVO
TElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rl
OjpUb29NYW55RGlzanVuY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAppbmRleCA1MmMwMzg3YTg4MzA3NmUxYmEwNGZhNjE2NjViYjhlMzM0ZjMzYjUyLi4zYjUzNjll
YThiMjBhN2ZiZGQ0OTMyZmYyMDY5NzU4MjJmOWE2ZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcApAQCAtNDIxMyw3ICs0MjEzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFVzZWQgdG8gZGV0ZWN0IHJlZ3VsYXIgZXhwcmVzc2lvbiBjb25zdHJ1Y3RzIHRoYXQgYXJlIG5v
dCBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0ZWQgaW4gdGhlIEpJVDsgZmFsbCBiYWNrIHRvIHRo
ZSBpbnRlcnByZXRlciB3aGVuIHRoaXMgaXMgZGV0ZWN0ZWQuCi0gICAgT3B0aW9uYWw8SklURmFp
bHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOworICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVy
ZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogCiAgICAgYm9vbCBtX2RlY29kZVN1cnJvZ2F0ZVBh
aXJzOwogICAgIGJvb2wgbV91bmljb2RlSWdub3JlQ2FzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuaAppbmRleCAzYThlNWYyM2ZiMjg5OGE5NTQ3ZmYwODk0NTc4MWYzZDkyZDI2YzIy
Li45NzRkNTgxZmRiMWRlZmEwNWE4Y2Y0MTJjNjU0NTA3MjFkMjNkNjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBZYXJy
Q29kZUJsb2NrKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBzZXRGYWxsQmFja1dpdGhGYWlsdXJl
UmVhc29uKEpJVEZhaWx1cmVSZWFzb24gZmFpbHVyZVJlYXNvbikgeyBtX2ZhaWx1cmVSZWFzb24g
PSBmYWlsdXJlUmVhc29uOyB9Ci0gICAgT3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gZmFpbHVy
ZVJlYXNvbigpIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
SklURmFpbHVyZVJlYXNvbj4gZmFpbHVyZVJlYXNvbigpIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNv
bjsgfQogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmOC5zaXplKCk7IH0K
ICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmMTYuc2l6ZSgpOyB9CkBAIC0y
MDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1h
dGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21hdGNoT25seTE2OwogICAgIGJvb2wgbV91
c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEpJVEZhaWx1
cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVS
ZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKIGVudW0gWWFyckpJVENvbXBpbGVNb2RlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCBmZWFmYWFjYmFmMTM3
ZmQxNTQ4NzgzNDdmMjRlNmNkNTExYWQ1MWM1Li5mMDc3N2Q0YWZlYWRmOTBhMzEyNTdlNjJmNmZk
YTcyZTBjYjA3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBA
IC0xMTE4LDcgKzExMTgsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbjsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHRyeUNvbnN1bWVHcm91cE5hbWUoKQorICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB0cnlDb25zdW1lR3JvdXBOYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChh
dEVuZE9mUGF0dGVybigpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEx
MzQsNyArMTEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3aGlsZSAoIWF0RW5kT2ZQYXR0
ZXJuKCkpIHsKICAgICAgICAgICAgICAgICBjaCA9IHRyeUNvbnN1bWVJZGVudGlmaWVyQ2hhcmFj
dGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoID09ICc+JykKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPFN0cmluZz4oaWRlbnRpZmllckJ1aWxkZXIudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oaWRlbnRp
ZmllckJ1aWxkZXIudG9TdHJpbmcoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRp
ZmllclBhcnQoY2gpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNDgsNyArMTE0
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJv
cGVydHlFeHByZXNzaW9uKCkKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFz
c0lEPiB0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbigpCiAgICAgewogICAgICAg
ICBpZiAoYXRFbmRPZlBhdHRlcm4oKSB8fCAhaXNVbmljb2RlUHJvcGVydHlWYWx1ZUV4cHJlc3Np
b25DaGFyKHBlZWsoKSkpIHsKICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHBy
aXZhdGU6CiAgKiAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKFVDaGFyMzIgYmVnaW4s
IFVDaGFyMzIgZW5kKQogICogICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCdWlsdEluKEJ1aWx0
SW5DaGFyYWN0ZXJDbGFzc0lEIGNsYXNzSUQsIGJvb2wgaW52ZXJ0KQogICogICAgdm9pZCBhdG9t
Q2hhcmFjdGVyQ2xhc3NFbmQoKQotICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJu
QmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBncm91cE5hbWUpOwor
ICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0g
dHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGdyb3VwTmFtZSk7CiAgKiAgICB2b2lkIGF0b21Q
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgKiAgICB2
b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpOwogICogICAgdm9pZCBhdG9tQmFja1JlZmVyZW5jZSh1
bnNpZ25lZCBzdWJwYXR0ZXJuSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uY3BwCmluZGV4IDllMzYxNzA4NWQxYThhZTc3ZWJmNjhkZjM0ZTQ4MTdkYjVlZGMwY2Mu
LjIxZDc1YjE1OWFhN2RlMzk4OTdiNDgzZjE3OTRkZTJjNzM1YWYyMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChXVEZN
b3ZlKG5ld0NoYXJhY3RlckNsYXNzKSk7CiAgICAgfQogCi0gICAgdm9pZCBhdG9tUGFyZW50aGVz
ZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBv
cHRHcm91cE5hbWUgPSBzdGQ6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJw
YXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9w
dEdyb3VwTmFtZSA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBh
dHRlcm5JZCA9IG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMTsKICAgICAgICAgaWYgKGNh
cHR1cmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmlj
b2RlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyVW5pY29k
ZVByb3BlcnRpZXMuY3BwCmluZGV4IDAwYjhhYmQyY2I4OTBmZGI2NGQ3N2MxOWYwM2RhYjZhZjJh
OGQ5NTMuLjViZTM5ODZiZWM5ODNlNWU1ZDZmNGEwZDEyZWRjZmRmMzZlMjg0ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNw
cApAQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlIHsKIAogI2luY2x1ZGUgIlVuaWNv
ZGVQYXR0ZXJuVGFibGVzLmgiCiAKLU9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB1
bmljb2RlTWF0Y2hQcm9wZXJ0eVZhbHVlKFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eU5hbWUs
IFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eVZhbHVlKQorc3RkOjpvcHRpb25hbDxCdWlsdElu
Q2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShXVEY6OlN0cmluZyB1
bmljb2RlUHJvcGVydHlOYW1lLCBXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVydHlWYWx1ZSkKIHsK
ICAgICBpbnQgcHJvcGVydHlJbmRleCA9IC0xOwogCkBAIC04NiwxMCArODYsMTAgQEAgT3B0aW9u
YWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUoV1RG
OjpTdHJpbmcgdW5pY29kZVAKICAgICBpZiAocHJvcGVydHlJbmRleCA9PSAtMSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBPcHRpb25hbDxCdWlsdEluQ2hhcmFj
dGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19j
YXN0PGludD4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJRCkg
KyBwcm9wZXJ0eUluZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJh
Y3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNf
Y2FzdDxpbnQ+KEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQp
ICsgcHJvcGVydHlJbmRleCkpOwogfQogCi1PcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJ
RD4gdW5pY29kZU1hdGNoUHJvcGVydHkoV1RGOjpTdHJpbmcgdW5pY29kZVByb3BlcnR5VmFsdWUp
CitzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB1bmljb2RlTWF0Y2hQcm9w
ZXJ0eShXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVydHlWYWx1ZSkKIHsKICAgICBpbnQgcHJvcGVy
dHlJbmRleCA9IC0xOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8QnVpbHRJbkNoYXJh
Y3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nIHVuaWNvZGVQcm9w
ZXIKICAgICBpZiAocHJvcGVydHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHJldHVybiBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3Rh
dGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PGludD4oQnVpbHRJ
bkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJRCkgKyBwcm9wZXJ0eUluZGV4
KSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0
YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1aWx0
SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQpICsgcHJvcGVydHlJbmRl
eCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGNyZWF0ZVVuaWNvZGVD
aGFyYWN0ZXJDbGFzc0ZvcihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCB1bmljb2RlQ2xhc3NJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVy
dGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVz
LmgKaW5kZXggZjdmMWE2OWE0NzM4OGYzYmY5YWQ3OTZhMDRjY2MxMzUzYmMyNGNiNS4uZTdiNThk
MmFiZjlmZDI2YWUwOWJlZDUxM2U3ZGU4NmYxZjc0Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgKQEAgLTMyLDggKzMyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAogc3RydWN0IENoYXJhY3RlckNs
YXNzOwogCi1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJ
RD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShXVEY6OlN0cmluZywgV1RGOjpTdHJpbmcpOwot
SlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNv
ZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUo
V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3Ry
aW5nKTsKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBjcmVhdGVVbmljb2RlQ2hh
cmFjdGVyQ2xhc3NGb3IoQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DUFVUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9DUFVUaW1lLmgKaW5kZXgg
ZTk4ODZlN2Y4ZjZjYTYxNTcyMTg4NTYyYzBlOTJkZmQ1ZjhjNGNjOC4uOTI2ODY5ZTVmMDc4YjBk
NzRjNmI2ZWViZWE1ZjFiY2U3OTExNDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ1BV
VGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NQVVRpbWUuaApAQCAtMzksNyArMzksNyBAQCBz
dHJ1Y3QgQ1BVVGltZSB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBlcmNlbnRh
Z2VDUFVVc2FnZVNpbmNlKGNvbnN0IENQVVRpbWUmKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgT3B0aW9uYWw8Q1BVVGltZT4gZ2V0KCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGdldCgpOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgY3VycmVudCBDUFUgdGltZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCiAgICAgLy8g
UHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMg
Z29vZCBvciBiZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29w
aWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDY4MGFhZWM5
NGFhYzQ4OWE0ZGQ0MzJjODdiODgyNzA0Yjg5YjYyNWMuLjhjMWFlMjY2YzkwNjY1ZThlM2U0MzA5
NmFkNWFjODRmMTJmMzgzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTU1
LDggKzE1NSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIFM+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6CiB9OwogCiAvLyBEZWZhdWx0IHNw
ZWNpYWxpemF0aW9uIGZvciBPcHRpb25hbCBvZiBDcm9zc1RocmVhZENvcHlhYmxlIGNsYXNzLgot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIE9wdGlvbmFsPFQ+PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIE9w
dGlvbmFsPFQ+IGNvcHkoVSYmIHNvdXJjZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBD
cm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFQ+PiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gY29weShVJiYg
c291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1
ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCmluZGV4IGEyNDk4MGE2YmUw
MDQ5MmNhNTMxNTkxZmY4NDNhNzkwOWViZjljM2YuLjU2YzhlMjM4Y2EzM2IzYzRlN2QwNWI3ZDk3
ODg1NTlhNWRmMjNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVl
dWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKERhdGFUeXBlJiYpOwogCiAgICAgRGF0YVR5
cGUgd2FpdEZvck1lc3NhZ2UoKTsKLSAgICBPcHRpb25hbDxEYXRhVHlwZT4gdHJ5R2V0TWVzc2Fn
ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0YVR5cGU+IHRyeUdldE1lc3NhZ2UoKTsKIAogICAg
IHZvaWQga2lsbCgpOwogICAgIGJvb2wgaXNLaWxsZWQoKSBjb25zdDsKQEAgLTg3LDcgKzg3LDcg
QEAgRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OndhaXRGb3JNZXNzYWdlKCkK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Ci1PcHRpb25hbDxEYXRhVHlwZT4gQ3Jv
c3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQorc3RkOjpvcHRpb25hbDxE
YXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4IDBmZjhk
ZTNiNmYwZjE3MmY3MDczZTFkMGIyZjFkYTM4NDY1NWZlNDIuLmViZDY5YTRjNzZjZDdhY2IwYTIz
M2JlNTUyMDcxMTU4Y2EyMTcxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRo
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTczNCw3ICs3MzQsNyBA
QCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFy
KiBkYXRlU3RyaW5nLCBib29sJiBpc0xvYwogICAgIGlmIChkYXkgPCAwKQogICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIAotICAgIE9wdGlv
bmFsPGludD4geWVhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4geWVhcjsKICAgICBpZiAoZGF5
ID4gMzEpIHsKICAgICAgICAgLy8gIyMjIHdoZXJlIGlzIHRoZSBib3VuZGFyeSBhbmQgd2hhdCBo
YXBwZW5zIGJlbG93PwogICAgICAgICBpZiAoKmRhdGVTdHJpbmcgIT0gJy8nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCA0ODMxYjA0N2Q1ODk5OWJlNzZiYTk1MDdlNGQwNTA1ZTIxM2VkM2I5Li45
MWRkY2YyNjE5MGI5NzI0YmExOTM1Y2QwZTNjMDA1YzE5OWI0YzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKICAgICByZXR1
cm4gc2FsdDsKIH0KIAotT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5n
JiBwYXRoKQorc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpIHsKICAgICAg
ICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpSZWFkKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBib29sIG1vdmVGaWxlKGNvbnN0
IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQogICAgIHJldHVybiBzdGQ6
OmZpbGVzeXN0ZW06OnJlbW92ZV9hbGwoZnNPbGRQYXRoLCBlYyk7CiB9CiAKLU9wdGlvbmFsPHVp
bnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2Rl
IGVjOwogICAgIGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zaXplKHRvU3RkRmls
ZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCBib29sIG1ha2VBbGxE
aXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuICFlYzsKIH0KIAotT3B0
aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6Zmls
ZXN5c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAtNjQxLDcg
KzY0MSw3IEBAIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKICAgICByZXR1cm4gIWVjOwogfQogCi1PcHRpb25h
bDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBz
dGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgdWludDY0X3QgbGlua0NvdW50ID0gc3RkOjpmaWxlc3lz
dGVtOjpoYXJkX2xpbmtfY291bnQodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAt
NjU1LDcgKzY1NSw3IEBAIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjpl
cnJvcl9jb2RlIGVjOwogICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3Rl
bTo6bGFzdF93cml0ZV90aW1lKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKQEAgLTY4
NCw3ICs2ODQsNyBAQCBib29sIGlzSGlkZGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAK
IGVudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKLXN0YXRp
YyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtz
KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBl
UG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhjb25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcykKIHsKICAgICBzdGQ6
OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBzdGF0dXMgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IHN0ZDo6ZmlsZXN5c3RlbTo6
c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKSA6IHN0ZDo6ZmlsZXN5c3RlbTo6
c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAtNzAxLDEy
ICs3MDEsMTIgQEAgc3RhdGljIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5
Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5nJiBwYXQKICAgICByZXR1cm4gRmlsZVR5cGU6
OlJlZ3VsYXI7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcm
IHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhw
YXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9CiAKLU9wdGlvbmFsPEZpbGVU
eXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6
b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIHJldHVybiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlu
a3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aAppbmRleCAwNWMyNzIxZTI3MDFhY2MxZTA3M2RjOTc0MmIxMmNkZWEyYzZiNjFiLi5hZWNkMDg0
ZjlmNTJmNDdiYmMxZTQ4ZTM4YzY4YTg2MGJkOTc2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0x
MDksMTEgKzEwOSwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJp
bmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5n
JiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1s
aW5rcy4KLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxh
dGZvcm1GaWxlSGFuZGxlKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4g
ZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxv
d3Mgc3ltbGlua3MuCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCk7IC8vIFNldHMgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbm93LgotV1RGX0VYUE9S
VF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShj
b25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0
aW1lLgogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOwpAQCAtMTIxLDE0ICsxMjEsMTQg
QEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdU
cmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBwYXRoRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHBhcmVudFBhdGgoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9u
YWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYp
OworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25z
dCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBj
cmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIAogZW51
bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERpcmVjdG9yeSwgU3ltYm9saWNMaW5rIH07Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1ldGFkYXRhVVJMKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIgPSB7IH0pOwogCkBAIC0xNDMsNyArMTQzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsK
IGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIHVz
aW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwotV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHBy
ZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFBsYXRmCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGluayhj
b25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgbGlua1BhdGgpOwogLy8gSGFy
ZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNvcGllcyBpdCBpZiBub3QuCiBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRo
LCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1
aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhhcmRMaW5rQ291bnQoY29uc3QgU3RyaW5n
JiBwYXRoKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBs
b2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9wdGlvblNldDxGaWxlTG9ja01vZGU+KTsKQEAg
LTIwMCw3ICsyMDAsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogLy8gQWxsb3cgcmVhZGlu
ZyBjbG91ZCBmaWxlcyB3aXRoIG5vIGxvY2FsIGNvcHkuCiBlbnVtIGNsYXNzIFBvbGljeVNjb3Bl
IDogdWludDhfdCB7IFByb2Nlc3MsIFRocmVhZCB9OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
c2V0QWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoYm9vbCwgUG9saWN5U2NvcGUpOwot
V1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRh
bGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsKICNl
bmRpZgogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3Bw
IGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggZWM5ZTUzNDFiM2JhZGExMzdl
MzBhMTdhMTRmMTVmYTdmZWQ3OWRiOC4uYzRiZWI2ZjAwZDA5NGNmOWU3OTc0YjVjNDc5MTFkODU5
NTg3ZDQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTU2NiwyMSArNTY2LDIxIEBAIFN0cmlu
ZyBWYWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAorc3RkOjpv
cHRpb25hbDxib29sPiBWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgp
ICE9IFR5cGU6OkJvb2xlYW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIG1fdmFsdWUuYm9vbGVhbjsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBWYWx1ZTo6YXNEb3Vi
bGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFZhbHVlOjphc0RvdWJsZSgpIGNvbnN0
CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpEb3VibGUgJiYgdHlwZSgpICE9IFR5cGU6Oklu
dGVnZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUu
bnVtYmVyOwogfQogCi1PcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAogewogICAgIGlmICh0eXBl
KCkgIT0gVHlwZTo6RG91YmxlICYmIHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHNpemVfdCBPYmplY3RCYXNl
OjptZW1vcnlDb3N0KCkgY29uc3QKICAgICByZXR1cm4gbWVtb3J5Q29zdDsKIH0KIAotT3B0aW9u
YWw8Ym9vbD4gT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBp
ZiAoIXZhbHVlKQpAQCAtNjU2LDcgKzY1Niw3IEBAIE9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6
OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiB2YWx1ZS0+
YXNCb29sZWFuKCk7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91Ymxl
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBPYmplY3RC
YXNlOjpnZXREb3VibGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFs
dWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNjY0LDcgKzY2NCw3IEBA
IE9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUtPmFzRG91YmxlKCk7CiB9CiAKLU9wdGlvbmFsPGlu
dD4gT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGludD4gT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdldFZhbHVlKG5hbWUpOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9KU09OVmFsdWVzLmgKaW5kZXggYmUzM2JlODJiYThkZDA1ZGVlNTUwZWMxMDk2OTczN2Y5
ZjQ4ZTdiZS4uMWMxZmRmMTFmMTllOTlkNWIwMzhlOGNhMGM0MGM5YjVhOTFmNWY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0pT
T05WYWx1ZXMuaApAQCAtOTMsOSArOTMsOSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6TnVsbDsgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gYXNCb29sZWFuKCkg
Y29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBhc0ludGVnZXIoKSBjb25zdDsKLSAgICBPcHRpb25h
bDxkb3VibGU+IGFzRG91YmxlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhc0Jv
b2xlYW4oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gYXNJbnRlZ2VyKCkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzRG91YmxlKCkgY29uc3Q7CiAgICAgU3RyaW5n
IGFzU3RyaW5nKCkgY29uc3Q7CiAgICAgUmVmUHRyPFZhbHVlPiBhc1ZhbHVlKCk7CiAgICAgdmly
dHVhbCBSZWZQdHI8T2JqZWN0PiBhc09iamVjdCgpOwpAQCAtMTg4LDkgKzE4OCw5IEBAIHByb3Rl
Y3RlZDoKICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgY29uc3Rf
aXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gZ2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8aW50PiBnZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGdldERvdWJsZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBnZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3Q7CiAgICAgU3RyaW5nIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Owog
ICAgIFJlZlB0cjxPYmplY3Q+IGdldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Owog
ICAgIFJlZlB0cjxBcnJheT4gZ2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXJr
YWJsZS5oCmluZGV4IGMzOWRkMzY2ZWY3ODhlNDQ0ZmU2NDY2ODc4ODY4ZmVkOWU3MmU4OGQuLjky
NDhhODA4MzRmMjgxZWU3OThiNjA2NTVhNGI1NjQzOTczY2YyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01hcmthYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFya2FibGUuaApAQCAt
MTA2LDExICsxMDYsMTEgQEAgcHVibGljOgogICAgICAgICA6IG1fdmFsdWUoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1hcmthYmxlKGNvbnN0
IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICBjb25zdGV4cHIgTWFya2FibGUoY29uc3Qgc3RkOjpv
cHRpb25hbDxUPiYgdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShib29sKHZhbHVlKSA/ICp2YWx1
ZSA6IFRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1hcmth
YmxlKE9wdGlvbmFsPFQ+JiYgdmFsdWUpCisgICAgY29uc3RleHByIE1hcmthYmxlKHN0ZDo6b3B0
aW9uYWw8VD4mJiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKGJvb2wodmFsdWUpID8gV1RGTW92
ZSgqdmFsdWUpIDogVHJhaXRzOjplbXB0eVZhbHVlKCkpCiAgICAgeyB9CiAKQEAgLTEyOCwyMyAr
MTI4LDIzIEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29u
c3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBjb25zdGV4cHIgVCYgb3BlcmF0b3IqKCkgJiB7
IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBvcGVyYXRvciBPcHRpb25hbDxUPigpICYmCisgICAg
b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPigpICYmCiAgICAgewogICAgICAgICBpZiAoYm9vbCgq
dGhpcykpCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShtX3ZhbHVlKTsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBvcGVyYXRvciBPcHRpb25hbDxUPigpIGNv
bnN0JgorICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKICAgICB7CiAgICAg
ICAgIGlmIChib29sKCp0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIE9wdGlvbmFsPFQ+IGFzT3B0aW9u
YWwoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8VD4gYXNPcHRpb25hbCgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gT3B0aW9uYWw8VD4oKnRoaXMpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxUPigqdGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggOWUwODgyNGJlNTU4MzY3OTY1OTAwMTM1MGFi
NDI3ZjAxMzM3NjA0Yy4uNWIwN2RmODA5NGRlMjliZmM3MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFBhZ2VDb3VudCh1bnNpZ25lZCBw
YWdlQ291bnQpCiAgICAgc2luZ2xldG9uKCkubV9wYWdlQ291bnQgPSBwYWdlQ291bnQ7CiB9CiAK
LU9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JNZW1v
cnlLaWxsKCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRo
cmVzaG9sZEZvck1lbW9yeUtpbGwoKQogewogICAgIHN3aXRjaCAobV9wcm9jZXNzU3RhdGUpIHsK
ICAgICBjYXNlIFdlYnNhbVByb2Nlc3NTdGF0ZTo6SW5hY3RpdmU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDA1YTFmZjFhYTExZjcwYzAwY2FmYjE0ZTliYzg4NWVh
NDgyMGY4ZTAuLmZmZjIwZDMyODI4NWY2ZjZiNDY3NTJhNTFjOWNhNTYyOGM3MTY2ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0xMzksMTEgKzEzOSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzaXplX3QgcmVzaWRlbnQgeyAwIH07CiAgICAgICAgICAgICBz
aXplX3QgcGh5c2ljYWwgeyAwIH07CiAgICAgICAgIH07Ci0gICAgICAgIE9wdGlvbmFsPE1lbW9y
eVVzYWdlPiBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVt
b3J5VXNhZ2U+IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKICAgICAgICAgdm9pZCBsb2dNZW1vcnlV
c2FnZUNoYW5nZSgpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIG1fbG9nU3RyaW5nOwotICAgICAg
ICBPcHRpb25hbDxNZW1vcnlVc2FnZT4gbV9pbml0aWFsTWVtb3J5OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPE1lbW9yeVVzYWdlPiBtX2luaXRpYWxNZW1vcnk7CiAKICAgICAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHNfbG9nZ2luZ0VuYWJsZWQ7CiAgICAgfTsKQEAgLTE2MSw3
ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRMb2dNZW1vcnlNZW1vcnlQcmVz
c3VyZUV2ZW50cyhib29sIHNob3VsZExvZykgeyBtX3Nob3VsZExvZ01lbW9yeU1lbW9yeVByZXNz
dXJlRXZlbnRzID0gc2hvdWxkTG9nOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8c2l6ZV90
PiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRo
cmVzaG9sZEZvck1lbW9yeUtpbGwoKTsKICAgICB2b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVzQ2hh
bmdlZCgpOwogCiAgICAgdm9pZCB1bmluc3RhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01vbm90b25pY1RpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRl
eCA1NDRhYTQ3N2MwMjVmYjQxNDVmMmU2NmIwMWNmNTBhNzg5MWYwNDQ3Li40Y2U3YWJjNTFhMDI4
M2M4YzVlYzRiZTQ0OTNjYmM1OWY4MGViYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
b25vdG9uaWNUaW1lLmgKKysrIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0x
NDksOSArMTQ5LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0aW1lOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdGltZTsKICAgICAgICAgZGVjb2RlciA+PiB0
aW1lOwogICAgICAgICBpZiAoIXRpbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNl
L1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IGIwOGYwNTQ4NDU1YTY0ZTNlZDZmYjRl
OGE4ODBmYmMyMmExNDVlYTYuLjkxZTJmYmY4ODA0ZjBmYTE0N2FhOTJiMGM5NTBkY2M0ZDI5ZDI5
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTcxLDkgKzcxLDkgQEAgcHVibGlj
OgogICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+
PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIWlzVmFsaWRJZGVudGlm
aWVyKCppZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlv
blNldC5oCmluZGV4IDc3ZTYyODliYzUwNjNkNDczYWRmN2JhOTkyNTVlNjZmNTQ3OTVkZDkuLmI1
YTZhYzhkOWEwZjNjZjdhM2E1NjZmNDliYWJiNDljNWQ5YjgwYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBA
IC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3Rl
eHByIE9wdGlvblNldChPcHRpb25hbDxFPiBvcHRpb25hbCkKKyAgICBjb25zdGV4cHIgT3B0aW9u
U2V0KHN0ZDo6b3B0aW9uYWw8RT4gb3B0aW9uYWwpCiAgICAgICAgIDogbV9zdG9yYWdlKG9wdGlv
bmFsID8gc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KCpvcHRpb25hbCkgOiAwKQogICAgIHsKICAg
ICB9CkBAIC0yMDYsOSArMjA2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdG9yYWdl
ICYmICEobV9zdG9yYWdlICYgKG1fc3RvcmFnZSAtIDEpKTsKICAgICB9CiAKLSAgICBjb25zdGV4
cHIgT3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgpIGNvbnN0CisgICAgY29uc3RleHByIHN0ZDo6
b3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
aGFzRXhhY3RseU9uZUJpdFNldCgpID8gT3B0aW9uYWw8RT4oc3RhdGljX2Nhc3Q8RT4obV9zdG9y
YWdlKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBoYXNFeGFjdGx5T25lQml0U2V0
KCkgPyBzdGQ6Om9wdGlvbmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9P
cHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCBhZGY2ZmE4MGM0Zjlm
ZTA4NGQyMWNkM2VjNjMxZWMyMGEwMzAwNzFlLi42NmUyNGFiYjM4ZGU0ZmY3NzNkZTRlNmVhOWZi
Y2M2MmM5YjM5MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTI0LDggKzI0LDYgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIE9wdGlvbmFsID0gc3RkOjpvcHRp
b25hbDxUPjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFj
az4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNh
bGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUKIHsKICAgICByZXR1
cm4gb3B0aW9uYWwgPyAqb3B0aW9uYWwgOiBjYWxsYmFjaygpOwpAQCAtMzMsNSArMzEsNCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcHRpb25hbFR5cGUsIGNsYXNzIENhbGxiYWNrPiBhdXRvIHZhbHVl
T3JDb21wdXRlKE9wdGlvbmFsVHlwZQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RG
OjpPcHRpb25hbDsKIHVzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaApp
bmRleCBlOTQ2MDEzYmRmZTQ4MTk4M2M0M2RmOTRiMWU3ZmUwMjE0YzM4YmMxLi43NjE1YjRlNjI4
OWNjMzk1MzFlOGVjZjY1MWIzNTc4NmU4MWYzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTMy
Niw3ICszMjYsNyBAQCBGb3JtYXRJbXBsPFR5cGVzLi4uPiBmb3JtYXQoVHlwZXMuLi4gdmFsdWVz
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUpCiAgICAgICAgIG91dC5wcmludCgqdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IDg1ZjAz
NzI4MjU5NzYwNzI3ZTlhNDJlZDE0YmY5NTc2NTY5NzhlMTAuLmUzZmJkZmJhNGMyZDg1MGViODU3
ODhhYmJiYWZkM2FjZGY0ZWQ3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTIyOSw5ICsyMjksOSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IHNlY29uZHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBzZWNvbmRzOwogICAgICAgICBkZWNvZGVyID4+IHNlY29uZHM7CiAgICAgICAgIGlmICghc2Vj
b25kcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlN
YXAuaAppbmRleCBmOTI4MTJiYTkyNDY3MmU0YmI5OGUxZTJjYTEwY2Y5NDkzNjljNzhlLi45YjQ4
YmVlZmE3NGRlNDkyNWY5MTdiN2M2MTI5NGY3MDhjMTRiNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5
TWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgZW51bSBjbGFzcyBBU0NJSVN1YnNldCB7IEFsbCwgTm9V
cHBlcmNhc2VMZXR0ZXJzLCBOb1VwcGVyY2FzZUxldHRlcnNPcHRpbWl6ZWQgfTsKIHRlbXBsYXRl
PEFTQ0lJU3Vic2V0PiBzdHJ1Y3QgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbCB7CiAgICAg
QVNDSUlMaXRlcmFsIGxpdGVyYWw7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gY29uc3Rl
eHByIENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W3NpemVdKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29tcGFyYWJsZVN0cmluZ1ZpZXc+IHBhcnNl
KFN0cmluZ1ZpZXcgc3RyaW5nKSB7IHJldHVybiB7IHsgc3RyaW5nIH0gfTsgfQorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENvbXBhcmFibGVTdHJpbmdWaWV3PiBwYXJzZShTdHJpbmdWaWV3IHN0
cmluZykgeyByZXR1cm4geyB7IHN0cmluZyB9IH07IH0KIH07CiAKIHVzaW5nIENvbXBhcmFibGVB
U0NJSUxpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPEFTQ0lJU3Vic2V0OjpB
bGw+OwpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdW5zaWduZWRfdjxTdG9yYWdlSW50ZWdlcj4pOwogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQg
c2l6ZT4gY29uc3RleHByIFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcyhjb25zdCBjaGFyICgmY2hhcmFj
dGVycylbc2l6ZV0pOwotICAgIHN0YXRpYyBPcHRpb25hbDxQYWNrZWRBU0NJSUxvd2VyQ29kZXM+
IHBhcnNlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhY2tlZEFTQ0lJ
TG93ZXJDb2Rlcz4gcGFyc2UoU3RyaW5nVmlldyk7CiAgICAgY29uc3RleHByIFN0b3JhZ2VJbnRl
Z2VyIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAtMzQx
LDcgKzM0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiB0ZW1wbGF0ZTx1
bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgU3RvcmFnZUludGVnCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+IGF1dG8gUGFja2VkQVNDSUlM
b3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPjo6cGFyc2UoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9w
dGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcz4KK3RlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJ
bnRlZ2VyPiBhdXRvIFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj46OnBhcnNl
KFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rl
cz4KIHsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gc2l6ZW9mKFN0b3JhZ2VJbnRlZ2VyKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0YWNrVHJhY2UuY3BwIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKaW5kZXggZmY2
MWU2NmIzNDNmYWJkYzdhN2IxOTdkNzkzMWNjNDZiNzAwYzI2MC4uZDQzMmUwZTY4YzYyZmVlODlj
ZDY3YzFiMzdiMjE2ZGE3YTE5NmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tU
cmFjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFj
a1RyYWNlKGludCBtYXhGcmFtZXMsIGludCBmcmEKICAgICByZXR1cm4gdHJhY2U7CiB9CiAKLWF1
dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IE9wdGlvbmFsPERlbWFuZ2xlRW50
cnk+CithdXRvIFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHZvaWQqIHBjKSAtPiBzdGQ6Om9wdGlvbmFs
PERlbWFuZ2xlRW50cnk+CiB7CiAjaWYgSEFWRShETEFERFIpCiAgICAgY29uc3QgY2hhciogbWFu
Z2xlZE5hbWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFj
ZS5oIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5oCmluZGV4IDg2ZWQ0YjgwOGNiYzJjMWVj
MTNlY2RmOTM4MGE0MDVkN2MyYzMyODMuLmYyN2ZhNzU0YzhjN2Y1MjkxNTFlODFjMTI4ZTdhMjA3
MmM0OWUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgY2hhcltdLCBTeXN0ZW1GcmVlPGNvbnN0IGNoYXJb
XT4+IG1fZGVtYW5nbGVkTmFtZTsKICAgICB9OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBPcHRpb25hbDxEZW1hbmdsZUVudHJ5PiBkZW1hbmdsZSh2b2lkKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlbWFuZ2xlRW50cnk+IGRlbWFuZ2xl
KHZvaWQqKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
LCBjb25zdCBjaGFyKiBpbmRlbnRTdHJpbmcgPSBudWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5jcHAKaW5kZXggMzE3YTQ2ZmMyMDRlOTc0ZGFiZGI1MDNlODIzMmEzYTRiZTIwMjhlZC4uZDE4
MDJiZDEyZjIxNWQ5NGIyYzk0MmRiMWU2MTU0OTJiNzAwMDkxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBMb2NrIFRocmVhZDo6c19hbGxU
aHJlYWRzTG9jazsKIAotc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5
cGUgdGhyZWFkVHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRo
cmVhZFR5cGUgdGhyZWFkVHlwZSkKIHsKICAgICAvLyBSZXR1cm4gdGhlIHN0YWNrIHNpemUgZm9y
IHRoZSBjcmVhdGVkIHRocmVhZCBiYXNlZCBvbiBpdHMgdHlwZS4KICAgICAvLyBJZiB0aGUgc3Rh
Y2sgc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHVzZSB0aGUgc3lzdGVtIGRlZmF1bHQuIFBs
YXRmb3JtcyBjYW4gdHVuZSB0aGUgdmFsdWVzIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IDk4MDA1
NTIwZTUxNjliOWQyMjk5NjExZmY2YTU4NjBkOGMyMTFiZTguLmNmYWU0MmE0NDE3YTAxNjcyMGIw
M2NlNjNjMWQ3M2YyZGQ5OTMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0yNjAsNyArMjYwLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAKICAgICAvLyBJbnRl
cm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBpbXBsZW1lbnRhdGlv
bi4KLSAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiwgT3B0aW9uYWw8
c2l6ZV90PiBzdGFja1NpemUsIFFPUyk7CisgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3VGhy
ZWFkQ29udGV4dCosIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUyk7CiAKICNp
ZiBVU0UoUFRIUkVBRFMpCiAgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxl
KFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDc1ODEzNzgxNDU2ZTkxM2ZiZGY0M2M3
ZThlOGQ3ODg2OTlhYzFmNmQuLmUyZTljYmY2NWMwOTFjZTgxZWMyYmYyMDk3ZDQyNTE2Mjk0NzM3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVVJMLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29u
c3QKICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hv
c3RFbmQgLSBzdGFydCk7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25z
dAorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDogc3RkOjpu
dWxsb3B0OwogfQpAQCAtMTU2LDcgKzE1Niw3IEBAIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFu
ZFBvcnQoKSBjb25zdAogICAgICk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVjb2Rl
RXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVk
IGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIGNsZWFyRGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQogICAgICAgICBtYXAtPmNsZWFyKCk7
CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07CkBAIC00NzQsNyAr
NDc0LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogICAgICkpOwog
fQogCi12b2lkIFVSTDo6c2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK3ZvaWQgVVJM
OjpzZXRQb3J0KHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCiB7CiAgICAgaWYgKCFtX2lz
VmFsaWQpCiAgICAgICAgIHJldHVybjsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBib29sIFVSTDo6cHJv
dG9jb2xJc0Fib3V0KCkgY29uc3QKIAogYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAKICAgICAvLyBTaW5jZSBtb3N0
IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBj
YXNlLgogICAgIGlmICghcG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIv
U291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggOTBlNzU4NjdhY2Y5Y2QzYzIxYjE3NDAzZWIzZmJj
MDAxMGIzNTVkNC4uZjQ0NTQyMWUxZmUyM2NhYmI2MTU3ZjcwZDljNDQ2YTI4NmM1ZjA1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
VmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
VmlldyBwYXRoKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgbGFz
dFBhdGhDb21wb25lbnQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmll
dyBxdWVyeSgpIGNvbnN0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4pOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldFBvcnQoc3RkOjpvcHRpb25hbDx1aW50MTZfdD4pOwogCiAgICAgLy8gSW5w
dXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyk7CkBAIC0xOTcsNyArMTk3LDcg
QEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VVJMPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFz
U3BlY2lhbFNjaGVtZSgpIGNvbnN0OwogCkBAIC0yNTcsNyArMjU3LDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciogcHJvdG9j
b2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5n
VmlldyB1cmwpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWls
eShTdHJpbmdWaWV3IHVybCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZf
dD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNrbGlz
dCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2VkIGZvciBXZWIgcmVzb3VyY2VzLgogCkBA
IC0yNzIsNyArMjcyLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogI2lmZGVmIF9fT0JKQ19fCiAKIFdURl9F
WFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBVUkwm
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50KGNv
bnN0IFVSTCosIGlkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFVSTD4gbWFr
ZVZlY3RvckVsZW1lbnQoY29uc3QgVVJMKiwgaWQpOwogCiAjZW5kaWYKIApAQCAtMjk3LDkgKzI5
Nyw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7
CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhl
bHBlcnMuY3BwCmluZGV4IGYyNjhmMTBhYjdjNjg1MmM0YjIyZDM5ODEwMGUyYjY3YTUxMTUwNDMu
LjljMTVlN2YxZjA5MDRjYjE0OTA2NzUyYmU3Yjc2YTY4MGNmZjc1ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBl
cnMuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2gKIH0KIAog
dGVtcGxhdGUgPFVTY3JpcHRDb2RlIFNjcmlwdFR5cGU+Ci1ib29sIGlzTG9va2FsaWtlU2VxdWVu
Y2UoY29uc3QgT3B0aW9uYWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNv
ZGVQb2ludCkKK2Jvb2wgaXNMb29rYWxpa2VTZXF1ZW5jZShjb25zdCBzdGQ6Om9wdGlvbmFsPFVD
aGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjb2RlUG9pbnQpCiB7CiAgICAgaWYg
KCFwcmV2aW91c0NvZGVQb2ludCB8fCAqcHJldmlvdXNDb2RlUG9pbnQgPT0gJy8nKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBpc0xvb2thbGlrZVNlcXVl
bmNlKGNvbnN0IE9wdGlvbmFsPFVDaGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBj
b2QKICAgICAgICAgfHwgaXNMb29rYWxpa2VQYWlyKCpwcmV2aW91c0NvZGVQb2ludCwgY29kZVBv
aW50KTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoY29uc3QgT3B0aW9u
YWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNvZGVQb2ludCkKK3N0YXRp
YyBib29sIGlzTG9va2FsaWtlQ2hhcmFjdGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4m
IHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNvZGVQb2ludCkKIHsKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3Rl
cnM6CiAgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNv
bnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgYm9vbCBh
bGxDaGFyYWN0ZXJzSW5BbGxvd2VkSUROU2NyaXB0TGlzdChjb25zdCBVQ2hhciogYnVmZmVyLCBp
bnQzMl90IGxlbgogewogICAgIGxvYWRJRE5BbGxvd2VkU2NyaXB0TGlzdCgpOwogICAgIGludDMy
X3QgaSA9IDA7Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKICAgICB3aGlsZSAoaSA8
IGxlbmd0aCkgewogICAgICAgICBVQ2hhcjMyIGM7CiAgICAgICAgIFUxNl9ORVhUKGJ1ZmZlciwg
aSwgbGVuZ3RoLCBjKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgYm9vbCBhbGxDaGFyYWN0
ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgp
CiB9CiAKIC8vIFJldHVybiB2YWx1ZSBvZiBudWxsIG1lYW5zIG5vIG1hcHBpbmcgaXMgbmVjZXNz
YXJ5LgotT3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1l
LCBVUkxEZWNvZGVGdW5jdGlvbiBkZWNvZGVGdW5jdGlvbikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlvbiBk
ZWNvZGVGdW5jdGlvbikKIHsKICAgICBpZiAoaG9zdE5hbWUubGVuZ3RoKCkgPiBob3N0TmFtZUJ1
ZmZlckxlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNjA5LDcgKzYwOSw3IEBA
IE9wdGlvbmFsPFN0cmluZz4gbWFwSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgVVJM
RGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVuCiAgICAgcmV0dXJuIFN0cmluZyhkZXN0aW5hdGlvbkJ1
ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CiB9CiAKLXVzaW5nIE1hcHBpbmdSYW5nZXNW
ZWN0b3IgPSBPcHRpb25hbDxWZWN0b3I8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQsIFN0
cmluZz4+PjsKK3VzaW5nIE1hcHBpbmdSYW5nZXNWZWN0b3IgPSBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25lZCwgU3RyaW5nPj4+OwogCiBzdGF0aWMgdm9p
ZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBNYXBwaW5nUmFuZ2VzVmVjdG9yJiBhcnJh
eSwgVVJMRGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVuY3Rpb24pCiB7CkBAIC02MTcsNyArNjE3LDcg
QEAgc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgbG9jYXRpb24KICAgICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBudWxs
IHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNh
dGUgZXJyb3IuCiAKICAgICBTdHJpbmcgc3Vic3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZ1NoYXJp
bmdJbXBsKGxvY2F0aW9uLCBsZW5ndGgpOwotICAgIE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9IG1h
cEhvc3ROYW1lKHN1YnN0cmluZywgZGVjb2RlRnVuY3Rpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3Vic3RyaW5nLCBkZWNvZGVGdW5jdGlvbik7CiAK
ICAgICBpZiAoaG9zdCAmJiAhKmhvc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Myw3ICs3NzMs
NyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2FmZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBz
b3VyY2VCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc291cmNlQnVmZmVyLmxlbmd0
aCgpOwogCi0gICAgT3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKIAogICAgIHVuc2lnbmVkIGk7
CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VUkxIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmgKaW5kZXggNzBk
OGU5NDRlOTQwOWYyYzc5NTI0MjI2YTBkNjFhNmE0NmJkM2E4Yi4uNGU2Y2I0N2I5Y2ViMDAwNWM0
ZWY5MzI0ZGVjNGI2OWEwYThmZDhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMSGVs
cGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuaApAQCAtNDAsNyArNDAsNyBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVzZXJWaXNpYmxlVVJMKGNvbnN0IENTdHJpbmcm
IFVSTCk7CiB2b2lkIGxvYWRJRE5BbGxvd2VkU2NyaXB0TGlzdCgpOwogdm9pZCBhZGRTY3JpcHRU
b0lETkFsbG93ZWRTY3JpcHRMaXN0KGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUpOwogdm9pZCBpbml0
aWFsaXplRGVmYXVsdElETkFsbG93ZWRTY3JpcHRMaXN0KCk7Ci1PcHRpb25hbDxTdHJpbmc+IG1h
cEhvc3ROYW1lKGNvbnN0IFN0cmluZyYsIFVSTERlY29kZUZ1bmN0aW9uKTsKK3N0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmLCBVUkxEZWNvZGVGdW5jdGlvbik7
CiBTdHJpbmcgbWFwSG9zdE5hbWVzKGNvbnN0IFN0cmluZyYsIFVSTERlY29kZUZ1bmN0aW9uKTsK
IAogfSAvLyBuYW1lc3BhY2UgVVJMSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggNDZlNDUz
OWM1ZGJkMzExODBjN2YyMDJjZGFjODEyN2ZmZWJkYjRjMS4uYmUxYTdlNjcxMGMwMDMyNjUyZTQ4
MzgwOTRlZTBlYzdmMmM4OTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC01NzQsNyArNTc0LDcg
QEAgdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+
JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmMKICAgICB9CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90
PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCitz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
U3RyaW5nVmlldyBzY2hlbWUpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBmdHBQ
b3J0ID0gMjE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBodHRwUG9ydCA9IDgwOwpA
QCAtNjk4LDcgKzY5OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3Ry
aW5nVmlldyBzY2hlbWUpCiAgICAgfQogfQogCi1PcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6
bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCitzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTIwODAsOSArMjA4MCw5IEBAIHN0YXRpYyBzaXplX3QgemVyb1Nl
cXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXpl
X3QKICAgICByZXR1cm4gZW5kIC0gYmVnaW47CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzaXplX3Q+
IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBh
ZGRyZXNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1
ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKIHsKLSAgICBPcHRp
b25hbDxzaXplX3Q+IGxvbmdlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7
CiAgICAgc2l6ZV90IGxvbmdlc3RMZW5ndGggPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgODsgaSsrKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB6ZXJvU2VxdWVuY2VMZW5ndGgo
YWRkcmVzcywgaSk7CkBAIC0yMjkyLDcgKzIyOTIsNyBAQCBFeHBlY3RlZDxVUkxQYXJzZXI6OklQ
djRBZGRyZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJ
UAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8dWludDMy
X3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBh
cnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvcikKIHsKICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMjUsMTEgKzIzMjUsMTEgQEAgT3B0aW9uYWw8dWlu
dDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlv
bmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0lu
c2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCitzdGQ6
Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRk
cmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
CiB7CiAgICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9IHBh
cnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCisgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikp
CiAgICAgICAgICAgICBhZGRyZXNzID0gKGFkZHJlc3MgPDwgOCkgKyBwaWVjZS52YWx1ZSgpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM0Nyw3
ICsyMzQ3LDcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpw
YXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBh
cnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQor
c3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2
Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKIHsKICAgICBBU1NFUlQo
KmMgPT0gJ1snKTsKICAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CkBAIC0yMzU3LDcgKzIz
NTcsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogCiAgICAgSVB2NkFkZHJlc3MgYWRkcmVz
cyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwogICAgIHNpemVfdCBwaWVjZVBvaW50ZXIg
PSAwOwotICAgIE9wdGlvbmFsPHNpemVfdD4gY29tcHJlc3NQb2ludGVyOworICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CiAgICAgYm9vbCBwcmV2aW91c1ZhbHVlV2Fz
WmVybyA9IGZhbHNlOwogICAgIGJvb2wgaW1tZWRpYXRlbHlBZnRlckNvbXByZXNzID0gZmFsc2U7
CiAKQEAgLTIzODgsNyArMjM4OCw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+
IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYg
fHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPCA2KSkgewotICAgICAgICAgICAg
aWYgKE9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJ
bnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVz
cz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkgewogICAgICAg
ICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyID09IDUpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBPcHRpb25hbDxV
UkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcgogICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CisgICAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3Ra
ZXJvU2VxdWVuY2UoYWRkcmVzcyk7CiAgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQog
ICAgICAgICBwb3NzaWJsZUNvbXByZXNzUG9pbnRlci52YWx1ZSgpKys7CiAgICAgaWYgKFVOTElL
RUxZKGNvbXByZXNzUG9pbnRlciAhPSBwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikpCkBAIC0yNTE0
LDcgKzI1MTQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNsYXNoKCkKICAg
ICBtX3VybC5tX3F1ZXJ5RW5kICs9IDI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWlu
VG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVm
ZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbikKIHsKICAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKICAgICBpZiAoZG9tYWluLmlz
QWxsQVNDSUkoKSAmJiAhc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb21haW4s
ICJ4bi0tIikpIHsKQEAgLTI3ODcsNyArMjc4Nyw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhv
c3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERl
Y29kZShTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6
Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGF1dG8gdXRmOCA9IGlucHV0
LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAgaWYgKHV0ZjguaXNOdWxsKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5oCmluZGV4IDRlODA1MDY5M2FhODhkMzVjNzgzNDhjYjU3MzhkMDMwODc2YTc5MWUuLjA4YzMx
NTgyYzFjZWY5NWRkZDE0M2UyNzZkNDk1MjI1NDI2MjQwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCkBAIC00
NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
aW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fu
b25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKICAgICBzdGF0aWMgY29uc3QgVUlETkEmIGludGVy
bmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwogICAgIHN0YXRpYyBib29sIGlzSW5Vc2Vy
SW5mb0VuY29kZVNldChVQ2hhcik7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8dWludDE2X3Q+IGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CiAKIHByaXZh
dGU6CiAgICAgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0
IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKQEAgLTk5LDEwICs5OSwxMCBAQCBwcml2YXRl
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0ZTxi
b29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVu
Y29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPExDaGFyQnVmZmVyPiBkb21haW5U
b0FTQ0lJKFN0cmluZ0ltcGwmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9B
U0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIq
LCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVy
Y2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFN0
cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7CiAgICAgc3Rh
dGljIGJvb2wgaGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChjb25zdCBMQ2hhckJ1ZmZlciYpOwog
ICAgIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhfdCk7CiAgICAgdm9pZCBhcHBlbmRUb0FT
Q0lJQnVmZmVyKFVDaGFyMzIpOwpAQCAtMTI1LDkgKzEyNSw5IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+IHBh
cnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNl
cjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CiAgICAgdXNpbmcgSVB2
NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5z
aWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJ
UHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0
UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVz
cz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKICAg
ICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGY2ODQ1ODA0
ZTFlY2I3ZjViZTkxNGQ1MzJiN2Q3NjI5M2JjNDgyMjQuLmJlN2I4YmJiY2FlMWI4ODg5MDZhNzdl
NzA3MmJmODdhMTcwNzU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0xNzA1LDEwICsxNzA1LDEwIEBAIHN0cnVj
dCBDb21wYWN0TWFwVHJhaXRzIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
Q29tcGFjdE1hcFRyYWl0czxPcHRpb25hbDxUPj4geworc3RydWN0IENvbXBhY3RNYXBUcmFpdHM8
c3RkOjpvcHRpb25hbDxUPj4gewogICAgIHVzaW5nIEl0ZW1UeXBlID0gVDsKLSAgICBzdGF0aWMg
Ym9vbCBoYXNWYWx1ZShjb25zdCBPcHRpb25hbDxUPiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuICEh
cmV0dXJuVmFsdWU7IH0KLSAgICBzdGF0aWMgSXRlbVR5cGUgZXh0cmFjdFZhbHVlKE9wdGlvbmFs
PFQ+JiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuIFdURk1vdmUoKnJldHVyblZhbHVlKTsgfQorICAg
IHN0YXRpYyBib29sIGhhc1ZhbHVlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHJldHVyblZhbHVl
KSB7IHJldHVybiAhIXJldHVyblZhbHVlOyB9CisgICAgc3RhdGljIEl0ZW1UeXBlIGV4dHJhY3RW
YWx1ZShzdGQ6Om9wdGlvbmFsPFQ+JiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuIFdURk1vdmUoKnJl
dHVyblZhbHVlKTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9DUFVUaW1lQ29jb2EuY3BwCmluZGV4IGJkZjljZjUxODg1YWFmMzcxM2QwMGRiZWU5ZTFkZDU1
Yjk5N2UzMTEuLjRlMWVlOTA1ZDZjNzU2MTVlZWI4ZTk5ZTk5MWY1MTU4Mzc4MDA5MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMg
aW50NjRfdCB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyhjb25zdCB0aW1lX3ZhbHVlX3QmIHZhbHVl
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6Omdl
dCgpCitzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiB7CiAgICAgLy8gQWNj
b3VudCBmb3IgY3VycmVudCB0aHJlYWRzLgogICAgIHRhc2tfdGhyZWFkX3RpbWVzX2luZm8gdGhy
ZWFkSW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXgg
OGU2OTcxZDUxMjRlYTc1NDg2MjczZWExMjRmMjJjNjQwOGY0ZTQ2OS4uOGY5MDA3OTk3MmU4ZmI0
NTg5YWEwY2NhYjAyOTNmZjg4ODkwNDU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgc2V0QWxsb3dzTWF0ZXJpYWxpemlu
Z0RhdGFsZXNzRmlsZXMoYm9vbCBhbGxvdywgUG9saWN5U2NvcGUgc2NvcGUpCiAjZW5kaWYKIH0K
IAotT3B0aW9uYWw8Ym9vbD4gYWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoUG9saWN5
U2NvcGUgc2NvcGUpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRh
bGVzc0ZpbGVzKFBvbGljeVNjb3BlIHNjb3BlKQogewogI2lmZGVmIElPUE9MX1RZUEVfVkZTX01B
VEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTCiAgICAgaW50IHJldCA9IGdldGlvcG9saWN5X25wKElP
UE9MX1RZUEVfVkZTX01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTLCB0b0lPUG9saWN5U2NvcGUo
c2NvcGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0KaW5kZXggYjY4NzM3ZGE2ZTI5MjM1ZDUxMjUwODAyMTE5ZjJiOGZjNjM3ZDMy
OS4uYTdiYmRkMzkwYjgwOWNhYjY4ZjExZTc3NmUzMThmZjk1ZjhiMDhmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTE5
Miw3ICsxOTIsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5
UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogI2VuZGlmCiB9CiAKLU9wdGlv
bmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQor
c3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5
VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9y
eVVzYWdlKCkKIHsKICAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKICAgICBtYWNoX21z
Z190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5tbQppbmRleCA3NTA4ZjJmNGYyZGM0MmU4MmFmODFmNjM0ODIwYzVkZDc2
MDY1ZDBmLi40NWQyYjRkYzRiOGE4ZGZmMmE1ZjE5ZTg2YmYwODEyYmQwNDQ2MWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBTdHJp
bmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIE5TU3RyaW5n
ICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQogewotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN0cmluZywgbnVsbHB0cik7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGhvc3QgPSBtYXBIb3N0TmFtZShzdHJpbmcsIG51bGxwdHIpOwogICAgIGlmICgh
aG9zdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gISpob3N0ID8gc3RyaW5nIDog
KE5TU3RyaW5nICopKmhvc3Q7CkBAIC0xMDgsNyArMTA4LDcgQEAgTlNTdHJpbmcgKmRlY29kZUhv
c3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCiAKIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0
cmluZyAqc3RyaW5nKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9IG1hcEhvc3ROYW1l
KHN0cmluZywgZGVjb2RlUGVyY2VudEVzY2FwZXMpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBob3N0ID0gbWFwSG9zdE5hbWUoc3RyaW5nLCBkZWNvZGVQZXJjZW50RXNjYXBlcyk7CiAgICAg
aWYgKCFob3N0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiAhKmhvc3QgPyBzdHJp
bmcgOiAoTlNTdHJpbmcgKikqaG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29h
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmNwcAppbmRleCBjNWJjYjA2YmVhNjQwMGJj
NWRmNDgxMGIwM2I2MjdkNGI4ZTRkZjg3Li5lOTI4YjFlZDYxM2I5YmIxNzljZmY3NzI0MDhiOWMx
MTIyMzdkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3NDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCi1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+JiBhcHBsaWNhdGlvblNES1ZlcnNpb25P
dmVycmlkZSgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIGFwcGxpY2F0aW9uU0RL
VmVyc2lvbk92ZXJyaWRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8
dWludDMyX3Q+PiB2ZXJzaW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90Pj4gdmVyc2lvbjsKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9VUkxDb2NvYS5tbQppbmRleCBhMTc5NzIwMzc5MzA2ZDA5Mjc1NzhiNDBkYTI0MjAzYTRh
MzIwYjAzLi5kMWQxYjFiZGI2YzUyMmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtOTIsNyArOTIsNyBAQCBSZXRhaW5QdHI8aWQ+IG1ha2VO
U0FycmF5RWxlbWVudChjb25zdCBVUkwmIHZlY3RvckVsZW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0
TlMoKF9fYnJpZGdlX3RyYW5zZmVyIGlkKXZlY3RvckVsZW1lbnQuY3JlYXRlQ0ZVUkwoKS5sZWFr
UmVmKCkpOwogfQogCi1PcHRpb25hbDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFVSTCos
IGlkIGFycmF5RWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VVJMPiBtYWtlVmVjdG9yRWxlbWVudChj
b25zdCBVUkwqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlz
S2luZE9mQ2xhc3M6TlNVUkwuY2xhc3NdKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaCBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKaW5kZXggNmU4NDQ0YWZkMzU5NzU3NTEzY2E2YzY4
Yzc2OTczOGUxMTE0NDg2Mi4uNTEyM2M1N2Q5MjA0ZmFhMmVkZDYxZmM2Mjg1NzMwZjhkZWU0YzY1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFt
ZXNwYWNlIFdURiB7CiAvLyBhIGNvbnN0JiB0byBhIGNvbGxlY3Rpb24gZWxlbWVudCBhbmQgY2Fu
IHJldHVybiBlaXRoZXIgYSBSZXRhaW5QdHI8aWQ+IG9yIGFuIGlkCiAvLyBpZiB0aGUgdmFsdWUg
aXMgYXV0b3JlbGVhc2VkLiBUaGUgbWFrZVZlY3RvckVsZW1lbnQgZnVuY3Rpb24gdGFrZXMgYW4g
aWdub3JlZAogLy8gcG9pbnRlciB0byB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZSwgbWFraW5nIGFy
Z3VtZW50LWRlcGVuZGVudCBsb29rdXAgd29yaywgYW5kIGFuCi0vLyBpZCBmb3IgdGhlIGFycmF5
IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIE9wdGlvbmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9yIGVs
ZW1lbnQsCisvLyBpZCBmb3IgdGhlIGFycmF5IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIHN0ZDo6
b3B0aW9uYWw8VD4gb2YgdGhlIHRoZSB2ZWN0b3IgZWxlbWVudCwKIC8vIGFsbG93aW5nIHVzIHRv
IGZpbHRlciBvdXQgYXJyYXkgZWxlbWVudHMgdGhhdCBhcmUgbm90IG9mIHRoZSBleHBlY3RlZCB0
eXBlLgogLy8KIC8vICAgIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IENv
bGxlY3Rpb25FbGVtZW50VHlwZSYgY29sbGVjdGlvbkVsZW1lbnQpOwogLy8gICAgICAgIC1vci0K
IC8vICAgIGlkIG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSYgdmVj
dG9yRWxlbWVudCk7CiAvLwotLy8gICAgT3B0aW9uYWw8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VW
ZWN0b3JFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50KTsK
Ky8vICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3JFbGVtZW50
KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50KTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0FycmF5
KENvbGxlY3Rpb25UeXBlJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+
IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvZnVjaHNpYS9DUFVUaW1lRnVjaHNpYS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNwcAppbmRleCA3ZTc3MzE2MTI0OGZjZTU2
NDYwY2YyN2NlOTVjZWNmYzI1ODMyN2ExLi5mYWJmNGM4YzRiMmNhZGQxY2NjYTQyNjczODYwOTM1
ZTQ4OTA5NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNo
c2lhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNwcApA
QCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgU2Vjb25kcyB0aW1lVG9TZWNvbmRzKHp4X3RpbWVfdCB0
KQogICAgIHJldHVybiBTZWNvbmRzKHQgLyBzdGF0aWNfY2FzdDxkb3VibGU+KFpYX1NFQygxKSkp
OwogfQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQorc3RkOjpvcHRpb25hbDxD
UFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAgIC8vIEZ1Y2hzaWEgaXNzdWUgWlgtMjMxOCB0
cmFja3MgYmVpbmcgYWJsZSB0byBnZXQgdGhlIG1vbm90b25pYyBhbmQgdGhyZWFkCiAgICAgLy8g
dGltZXMgYXRvbWljYWxseSBhbmQgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBaWF9DTE9DS19USFJF
QUQgaW50byB1c2VyIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5jcHAKaW5kZXggMWFlYTQ2YWFlYTI2OTZkMDBiY2Zj
MmE4YTc1ZGYxYzk0MjQyN2FkYi4uNDUzMzg3M2Q5NjE1YTlhZTRjYTM0NjI1NmQ3MDI3M2RkMzUx
OTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNz
dXJlSGFuZGxlckdlbmVyaWMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCwgU3luY2hyb25vdXMp
CiB7CiB9CiAKLU9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpN
ZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3Jt
TWVtb3J5VXNhZ2UoKQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2Vy
OjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lzVHlwZS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAppbmRleCAyZGQ2NWY0NmI1YjA4Y2I5ODA4YzA5
MTNiMzY3MGQ2MDMwYzIzZTAzLi5hMWQ3NzY5NDJkOTMzMTVlMzIwN2FhOTBjZjY4MTlkZjM1ZmQ0
MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkTWFj
aGluZUluZm9DaGFzc2lzVHlwZSgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDaGFzc2lzVHlwZT4g
cmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKQogewogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4g
YnVmZmVyOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKQEAgLTYxLDcgKzYxLDcg
QEAgc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlw
ZSgpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENoYXNz
aXNUeXBlPiByZWFkRE1JQ2hhc3Npc1R5cGUoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2hhc3Np
c1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCiB7CiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBi
dWZmZXI7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwpAQCAtOTYsNyArOTYsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiBy
ZWFkQUNQSUNoYXNzaXNUeXBlKCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENoYXNzaXNUeXBlPiBy
ZWFkQUNQSUNoYXNzaXNUeXBlKCkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGJ1ZmZlcjsK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CkBAIC0xMjksNyArMTI5LDcgQEAgQ2hh
c3Npc1R5cGUgY2hhc3Npc1R5cGUoKQogICAgIHN0YXRpYyBDaGFzc2lzVHlwZSBjaGFzc2lzVHlw
ZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUNoYXNzaXM7CiAgICAgc3Rk
OjpjYWxsX29uY2UoaW5pdGlhbGl6ZUNoYXNzaXMsIFtdIHsKLSAgICAgICAgT3B0aW9uYWw8Q2hh
c3Npc1R5cGU+IG9wdGlvbmFsQ2hhc3Npc1R5cGUgPSByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlw
ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENoYXNzaXNUeXBlPiBvcHRpb25hbENoYXNzaXNU
eXBlID0gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKTsKICAgICAgICAgaWYgKCFvcHRpb25h
bENoYXNzaXNUeXBlKQogICAgICAgICAgICAgb3B0aW9uYWxDaGFzc2lzVHlwZSA9IHJlYWRETUlD
aGFzc2lzVHlwZSgpOwogICAgICAgICBpZiAoIW9wdGlvbmFsQ2hhc3Npc1R5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDQzMDJmYTlmMWI0YmJhYTlmM2U5OTcz
MmY1YjI4YzZjYjNmZDgzOWIuLjFiNjZmMGVmYmE2ZmQzOTIzOTRiMmJiMzYxYjRhOTgzZWQxNmFm
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKICNl
bmRpZgogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUpCiB7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGluZm8gPSBhZG9wdEdSZWYo
Z19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFO
REFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFpbmZvKQpAQCAtMTI4LDcg
KzEyOCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlKQogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvLmdldCgpKTsKIH0K
IAotT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKIHsK
ICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0
aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQ/CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIC0x
OwogfQogCi1PcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYg
ZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYgZnNGaWxlKQogewogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+
IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5n
ZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRleCA2MTVi
ZDEyNTdjODk3MjQwNzQzZjNiNTVhMjYyMTNiNjJhMDM5MDg1Li5hZmMzM2YzOGQ0MjMzNWJkOWU2
MTI2YTRhNzhhNTA3MTBkYjI2MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50Q29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ29kZXIgewogICAgICAgICB0LmVuY29kZShlbmNvZGVyKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKaW5kZXggYjYwMzVkYjRlNzRkNzY3ODRlOGJh
YWU2ZDA4YjQ4MWQ0Mzc2N2E3Yi4uNDYzNThiZGNiZjY1MmY3MTRiYTc3NmE2MmVjY2RjYmUyNDY2
OTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
cy5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgdm9pZCBDb2RlcjxBdG9tU3RyaW5nPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiAgICAgZW5jb2Rl
ciA8PCBhdG9tU3RyaW5nLnN0cmluZygpOwogfQogCi1PcHRpb25hbDxBdG9tU3RyaW5nPiBDb2Rl
cjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF0
b21TdHJpbmc+IENvZGVyPEF0b21TdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwogICAgIGlmICghc3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAsOSArNjAsOSBAQCB2b2lkIENvZGVyPENTdHJp
bmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHN0cmluZy5kYXRhKCkpLCBsZW5ndGgpOwogfQogCi1PcHRpb25hbDxDU3RyaW5nPiBD
b2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENT
dHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxl
bmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIENvZGVyPFN0cmlu
Zz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5n
dGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0
KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxs
b2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMg
YmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFp
bjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyBpbmxp
bmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVp
bnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBD
b2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxlbmd0
aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMCw3ICsxMzAsNyBAQCBPcHRpb25hbDxTdHJpbmc+IENv
ZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXM4Qml0OworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXM4Qml0OwogICAgIGRlY29kZXIgPj4gaXM4Qml0OwogICAgIGlmICghaXM4
Qml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgQ29kZXI8U0hBMTo6RGlnZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNI
QTE6OkRpZ2VzdCYgZGlnZXN0KQogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRp
Z2VzdC5kYXRhKCksIHNpemVvZihkaWdlc3QpKTsKIH0KIAotT3B0aW9uYWw8U0hBMTo6RGlnZXN0
PiBDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8U0hBMTo6RGlnZXN0PiBDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBTSEExOjpEaWdlc3QgdG1wOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEodG1wLmRhdGEoKSwgc2l6ZW9mKHRtcCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oIGIvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oCmluZGV4IDU2ZDhkNjk5ZjYwMDNh
NTAzZGQ5MTc1YmNkOGMzMzBmYTk1OWYzYTMuLmI3NzIxNzY3ZDU4OTVmYzA1YTRhNzU5NjA3MmVj
MWFmZDA4NTczN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
Q29kZXJzLmgKQEAgLTQ2LDE0ICs0NiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBzdHJ1Y3QgQ29kZXI8c3RkOjpwYWlyPFQsIFU+PiB7CiAgICAgICAgIGVuY29kZXIgPDwg
cGFpci5maXJzdCA8PCBwYWlyLnNlY29uZDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
c3RkOjpwYWlyPFQsIFU+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8VCwgVT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8VD4gZmlyc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4g
Zmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3Q7CiAgICAgICAgIGlmICghZmlyc3QpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFU+IHNl
Y29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVPiBzZWNvbmQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29uZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC02Miw4ICs2Miw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IHN0cnVjdCBDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0aW9uYWw8VD4+IHsKLSAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjpvcHRpb25h
bDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBpZiAoIW9wdGlvbmFsKSB7CiAgICAgICAg
ICAgICBlbmNvZGVyIDw8IGZhbHNlOwpAQCAtNzQsMjEgKzc0LDIxIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAgICBlbmNvZGVyIDw8IG9w
dGlvbmFsLnZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxPcHRpb25h
bDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAg
ICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aXNFbmdhZ2VkOwogICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFp
c0VuZ2FnZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
ISppc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+IHsg
T3B0aW9uYWw8VD4geyBzdGQ6Om51bGxvcHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxUPj4geyBzdGQ6Om9wdGlvbmFsPFQ+IHsgc3RkOjpudWxs
b3B0IH0gfTsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFQ+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4geyBPcHRpb25hbDxUPiB7IFdU
Rk1vdmUoKnZhbHVlKSB9IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8VD4+IHsgc3RkOjpvcHRpb25hbDxUPiB7IFdURk1vdmUoKnZhbHVlKSB9IH07CiAgICAg
fQogfTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IENvZGVyPFdURjo6S2V5VmFsdWVQYWlyPEtlCiAgICAg
ICAgIGVuY29kZXIgPDwgcGFpci5rZXkgPDwgcGFpci52YWx1ZTsKICAgICB9CiAKLSAgICBzdGF0
aWMgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1
ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ewotICAgICAgICBPcHRpb25hbDxLZXlUeXBlPiBrZXk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
S2V5VHlwZT4ga2V5OwogICAgICAgICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgaWYgKCFrZXkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsK
ICAgICAgICAgZGVjb2RlciA+PnZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyNCwxNiArMTI0LDE2IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZlY3RvckNvZGVyPGZhbHNl
LCBULCBpbmxpbmVDCiAgICAgICAgICAgICBlbmNvZGVyIDw8IHZlY3RvcltpXTsKICAgICB9CiAK
LSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gc2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6
ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAoIXNpemUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eT4gdG1wOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsK
LSAgICAgICAgICAgIE9wdGlvbmFsPFQ+IGVsZW1lbnQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPFQ+IGVsZW1lbnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGVsZW1lbnQ7CiAgICAgICAg
ICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTE1Miw5ICsxNTIsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+IHN0cnVjdCBWZWN0b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNpemUoKSAqIHNpemVvZihUKSk7CiAgICAgfQogICAg
IAotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+PiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZGVjb2RlZFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFNpemU7CiAgICAg
ICAgIGlmICghZGVjb2RlZFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTkyLDkgKzE5Miw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFw
cGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBl
bmNvZGVyIDw8ICppdDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SGFzaE1hcFR5cGU+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hN
YXBUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBoYXNoTWFwU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
aGFzaE1hcFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaE1hcFNpemU7CiAgICAgICAgIGlm
ICghaGFzaE1hcFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAy
LDExICsyMDIsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAgICAgICAgSGFzaE1hcFR5
cGUgdGVtcEhhc2hNYXA7CiAgICAgICAgIHRlbXBIYXNoTWFwLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpoYXNoTWFwU2l6ZSkpOwogICAgICAgICBmb3IgKHVp
bnQ2NF90IGkgPSAwOyBpIDwgKmhhc2hNYXBTaXplOyArK2kpIHsKLSAgICAgICAgICAgIE9wdGlv
bmFsPEtleUFyZz4ga2V5OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlBcmc+IGtleTsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1h
cHBlZEFyZz4gdmFsdWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hcHBlZEFyZz4gdmFs
dWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjMxLDE2ICsyMzEs
MTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBDb2RlcjwKICAgICAgICAgICAgIGVuY29kZXIgPDwgKml0
OwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0VHlwZT4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaFNldFR5cGU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhh
c2hTZXRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoYXNoU2V0U2l6ZTsK
ICAgICAgICAgZGVjb2RlciA+PiBoYXNoU2V0U2l6ZTsKICAgICAgICAgaWYgKCFoYXNoU2V0U2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFzaFNldFR5
cGUgdGVtcEhhc2hTZXQ7CiAgICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaGFzaFNl
dFNpemU7ICsraSkgewotICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEtleUFyZz4ga2V5OwogICAgICAgICAgICAgZGVjb2RlciA+PiBr
ZXk7CiAgICAgICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMjYxLDkgKzI2MSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFNlY29u
ZHM+IHsKICAgICAgICAgZW5jb2RlciA8PCBzZWNvbmRzLnZhbHVlKCk7CiAgICAgfQogCi0gICAg
c3RhdGljIE9wdGlvbmFsPFNlY29uZHM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI3Nyw5ICsyNzcs
OSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXYWxsVGltZT4gewogICAgICAgICBlbmNvZGVy
IDw8IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpOwogICAgIH0KIAotICAgIHN0YXRp
YyBPcHRpb25hbDxXYWxsVGltZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5MCwyMiArMjkwLDIy
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdhbGxUaW1lPiB7CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IENvZGVyPEF0b21TdHJpbmc+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBPcHRpb25hbDxBdG9tU3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8Q1N0cmluZz4gewog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IENTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPENTdHJp
bmc+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb2RlcjxTdHJpbmc+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8U0hBMTo6RGlnZXN0PiB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU0hBMTo6RGln
ZXN0Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxTSEExOjpEaWdl
c3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4
M2NkY2Q1NDJmODVmOWUxYzA4NjZhNmVhMDA1NTUzZDJhNzBhZmU0Li5jMDRiYTNmMmFjMWNiMTYy
MjVmYjg3ODRiOTlkNTBhNzUyNTkzMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRGVjb2Rl
cjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKE9w
dGlvbmFsPFQ+JiBvcHRpb25hbCkKK0RlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihzdGQ6
Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW4oc2l6ZW9mKFQpKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtODMsNTIgKzgz
LDUyIEBAIERlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxUPiYgb3B0aW9u
YWwpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhf
dD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1
aW50OF90PiYgcmVzdWx0KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0K
IAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4mIHJlc3Vs
dCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MTZfdD4m
IHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZfdD4mIHJlc3VsdCkKK0RlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQog
ewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAotRGVjb2RlciYgRGVjb2Rl
cjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29k
ZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKIHsKICAgICBy
ZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRl
Y29kZU51bWJlcihyZXN1bHQpOwogfQogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9w
dGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0
ZDo6b3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50
NjRfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiYgcmVzdWx0KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
IH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mIHJlc3Vs
dCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxmbG9hdD4mIHJl
c3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXIm
IERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYgcmVzdWx0KQorRGVjb2RlciYg
RGVjb2Rlcjo6b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA3MDkxNDI5MzA3MDFkOTJjNzNhYjBm
YzRhN2U3ZGRlYzczMjFkYzU0Li44NzYwNjJkMzQwMWI0YmQzMjk3NmVjMWMxMWNkMzI5YjkxZmIz
N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVy
LmgKQEAgLTQ1LDI5ICs0NSwyOSBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBz
aXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0
aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50
MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVj
b2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90PiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYg
b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8aW50MTZfdD4mKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxkb3VibGU+Jik7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5h
bWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1
bHQpCisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiByZXN1bHQpCiAg
ICAgewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPEU+JiByZXN1bHQpCisgICAgRGVjb2RlciYgb3BlcmF0b3I+
PihzdGQ6Om9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQg
Yml0cyEiKTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAgICAg
ICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC05MCw3ICs5MCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRp
b25hbDxUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29k
ZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1
ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXgg
NmEyNTU0NjhiMGM0OTBmMDgzZjg1ZjkyMDEzM2ZiMzFjODcyYjcxNi4uY2RhNWU1ZTE2MzI1MjQx
YTFlN2I5NzE3MzA3Y2ZhZWI2YmQ4YzM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxh
eXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
bGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsKIAogZW51bSBjbGFzcyBT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9Owotc3RhdGljIE9wdGlvbmFsPEZp
bGVUeXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5n
JiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3MpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZv
bGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBib29s
IG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQog
ICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUuZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkp
ICE9IC0xOwogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
dm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdHZm
cyBmaWxlU3lzdGVtU3RhdDsKICAgICBpZiAoIXN0YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1TdGF0KSkKQEAgLTIyOSw3ICsyMjksNyBAQCBi
b29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvbikKICAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwogfQogCi1PcHRpb25hbDx1
aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBhdXRv
IGxpbmtQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBz
dGF0IHN0YXQ7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBh
dGgpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTI4NSwxMiArMjg1LDEyIEBAIGJvb2wgaXNIaWRk
ZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gIWZpbGVuYW1lLmlzRW1wdHko
KSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xs
b3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9CiAK
LU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlu
a3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlVHlwZVBvdGVudGlhbGx5
Rm9sbG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGE3YmEwNDdi
MDU3YzdiYzQzNzc3ZWUyMjkxOTRjZjliOGYyZmU3NTUuLmJmNGY3Mzk3OTAzOTY5ODI3Y2ZhMjAz
NWZhOTA1ZmViZjUyNDAzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlKQogfQogI2VuZGlmCiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsK
ICAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQpAQCAtMTY0LDcgKzE2NCw3IEBAIE9w
dGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogICAg
IHJldHVybiBmaWxlSW5mby5zdF9zaXplOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZmlsZUNy
ZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBm
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiBPUyhEQVJXSU4pIHx8
IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwgT1MoRlJFRUJTRCkKICAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpAQCAtMjI2LDcgKzIyNiw3IEBA
IGVuZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKLU9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgc3Ry
dWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0
KSA9PSAtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lY
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA1OTE3
YjM3OWYxMmFmZjVmZjQyZDEzNDdmYmRjYjFmMjA4YTA3MDdmLi5lZGI5YjUxODQ4Zjg5MGVkNGU1
ZDA5NDAxNGY2ZGQ3ZjQyOTFhOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9U
aHJlYWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9T
SVguY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgZGlzcGF0Y2hfcW9zX2NsYXNzX3QgVGhyZWFkOjpk
aXNwYXRjaFFPU0NsYXNzKFFPUyBxb3MpCiB9CiAjZW5kaWYKIAotYm9vbCBUaHJlYWQ6OmVzdGFi
bGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0LCBPcHRpb25hbDxzaXplX3Q+IHN0
YWNrU2l6ZSwgUU9TIHFvcykKK2Jvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFk
Q29udGV4dCogY29udGV4dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9TIHFv
cykKIHsKICAgICBwdGhyZWFkX3QgdGhyZWFkSGFuZGxlOwogICAgIHB0aHJlYWRfYXR0cl90IGF0
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggYWEyN2JjZGIxM2FjODIzMTc1ZWEzYWM0MDJm
NjRjODdiMDZmYzk2ZS4uYWFhZTAwNDlhZjI0NmQxNWY5ZGQwYzJlNTlhZWM3ZGRjYWUyMjllZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFN0cmluZyBiYXNlNjRF
bmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiBpbnB1dERhdGFCdWZmZXIsIHVuc2lnbmVkIGlucHV0
TGVuZ3RoLCBCCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoYmFzZTY0RW5jb2RlZChpbnB1dERhdGFC
dWZmZXIsIGlucHV0TGVuZ3RoLCBwb2xpY3ksIG1hcCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5h
bChjb25zdCBUKiBpbnB1dERhdGFCdWZmZXIsIHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
YmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QgVCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBp
bnB1dExlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2
NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKCFpbnB1dExlbmd0aCkKICAgICAgICAgcmV0dXJu
IFZlY3Rvcjx1aW50OF90PiB7IH07CkBAIC0yNTUsNyArMjU1LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50ZXJu
YWwoY29uc3QKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQsIE9wdGlvblNldDxCYXNl
NjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGlucHV0LCBP
cHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1h
cCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICAgICBpZiAoIWxl
bmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjbwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVj
b2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldyBpbnB1dCwgT3B0aW9uU2V0
PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwg
aW5wdXQuaXM4Qml0KCkpCkBAIC0yNzEsMzEgKzI3MSwzMSBAQCBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVj
b2RlTwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8QmFz
ZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERl
Y29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIG9w
dGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2Rl
KGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25z
PiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAg
ICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBp
bnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgT3B0
aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXAp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+
IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgcmV0dXJuIGJhc2U2NERlY29k
ZUludGVybmFsKGRhdGEsIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKIH0KIAotT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2Rl
TWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0
aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEpLCBsZW5n
dGgsIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4
Qml0KCkpCkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbnB1dCkKICAgICByZXR1cm4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVN
YXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5w
dXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0zMTEs
MjYgKzMxMSwyNiBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShT
dHJpbmdWaWV3IGlucHV0KQogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5j
aGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAot
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxE
ZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5k
YXRhKCksIGlucHV0LnNpemUoKSwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLU9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2
NERlY29kZU1hcDo6VVJMKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGRh
dGEsIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVu
Z3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQmFzZTY0LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmluZGV4
IDY4NDFiZWM4OTEwNmFlNTliMGVlZjM1M2NhZTg1ODUxNTY4MmYxMzkuLjM5ZTU2MDhkNjUyZjhi
ZDMzYjNhMmVkMGRjMWU2YzFhYWZmN2QwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQmFzZTY0LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaApAQCAtNjksMTIg
KzY5LDEyIEBAIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFCiBTdHJpbmcgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5j
b2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2Rl
TWFwOjpEZWZhdWx0KTsKIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5n
JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExG
cywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0
IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVj
b2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERl
Y29kZU1hcDo6RGVmYXVsdCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgT3B0aW9uU2V0PEJh
c2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVN
YXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIE9wdGlvblNldDxCYXNlNjREZWNv
ZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZh
dWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NERlY29kZShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVP
cHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERl
Y29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25z
PiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVj
b2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwg
QmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmlu
Z1ZpZXcsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2Rl
TWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2Rl
TWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFw
ID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVN
YXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2ln
bmVkLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1h
cCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CiAKIGlubGluZSBWZWN0b3I8dWludDhfdD4g
YmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKQEAgLTEyMiwxMiAr
MTIyLDEyIEBAIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8Y2hh
cj4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJik7CiAK
LVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERl
Y29kZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3KTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB1aW50OF90
KiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25z
dCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQp
OwogCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0
IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9O
dWxsVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBjNTgzZmI0NDQ4NzFkZWM2ZTFiYmEwYTE5YmNl
ZDAyNmNiY2JlMWIwLi43ZDY2OGM3Nzc5MjQwMDZjNzZhNjQ3NTRlNTAwODFjN2I5NDk1NzFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTnVsbFRleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTMzLDEz
ICszMywxMyBAQCBwdWJsaWM6CiAgICAgTnVsbFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgTnVsbFRleHRCcmVha0l0ZXJhdG9yJikgPSBkZWxldGU7CiAgICAgTnVsbFRleHRCcmVh
a0l0ZXJhdG9yJiBvcGVyYXRvcj0oTnVsbFRleHRCcmVha0l0ZXJhdG9yJiYpID0gZGVmYXVsdDsK
IAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQpIGNvbnN0CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2VkaW5nKHVuc2lnbmVkKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCkgY29uc3QKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKaW5kZXgg
MzU2Yzc1NmM2OWE0ZDM2ZGE5N2IzMDUxYTAxYTQwNWFiZDQ1ZTBlNy4uZTE5YWZlZGY1Y2FiYWM2
NGM2ZTAwNTMxODIwNjg5NzBkYzcyOTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKQEAgLTM3LDEyICszNywxMiBAQCBuYW1lc3BhY2Ug
V1RGIHsKIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIGEgdmVyc2lvbiB0aGF0IGFsbG93cyBvdGhl
ciBkZWZpbml0aW9ucyBvZiBzcGFjZXMsIGxpa2UgaXNIVE1MU3BhY2Ugb3IgaXNIVFRQU3BhY2U/
CiAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCBhIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBhbGxvdyBs
ZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXM/CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXIoU3RyaW5nVmlldywgdWlu
dDhfdCBiYXNlID0gMTApOwotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPiBPcHRpb25h
bDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKFN0cmluZ1Zp
ZXcsIHVpbnQ4X3QgYmFzZSA9IDEwKTsKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4g
c3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlcihTdHJpbmdWaWV3LCB1aW50
OF90IGJhc2UgPSAxMCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IHN0ZDo6b3B0
aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuayhTdHJp
bmdWaWV3LCB1aW50OF90IGJhc2UgPSAxMCk7CiAKIGVudW0gY2xhc3MgVHJhaWxpbmdKdW5rUG9s
aWN5IHsgRGlzYWxsb3csIEFsbG93IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlw
ZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUlu
dGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCBi
YXNlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5KQordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdy
YWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEludGVncmFsVHlw
ZT4gcGFyc2VJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IHVpbnQ4X3QgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeSkKIHsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05NiwxNCArOTYsMTQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRp
b25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBw
YXJzZUludGVnZXIoU3RyaW5nVmlldyBzdHJpbmcsIHVpbnQ4X3QgYmFzZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50
ZWdlcihTdHJpbmdWaWV3IHN0cmluZywgdWludDhfdCBiYXNlKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJp
bmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBiYXNlLCBUcmFpbGluZ0p1bmtQb2xp
Y3k6OkRpc2FsbG93KTsKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVua1Bv
bGljeTo6RGlzYWxsb3cpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9w
dGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bmsoU3Ry
aW5nVmlldyBzdHJpbmcsIHVpbnQ4X3QgYmFzZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rKFN0cmluZ1ZpZXcgc3RyaW5nLCB1aW50OF90IGJhc2UpCiB7CiAgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+
KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVu
a1BvbGljeTo6QWxsb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZTA5Njcy
OTAxZWY5M2ZmOTNiMzM0OTAxMDY3YTc1MzZmYmQxMjcwNC4uNmNmNjIxMjkwZDBhYTFhMzQyOTlm
MGViYTE2ZWY4MmM2YjgyZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgYXV0byBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9w
ZXJhdG9yKysoKSAtPiBJdGVyYXRvciYKIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnM6Okl0ZXJhdG9yOjpJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBJbXBsKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQor
ICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgc3RkOjpvcHRpb25hbDxOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkK
ICAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKICAgICAgICAgLCBtX2l0ZXJhdG9y
KFdURk1vdmUoaXRlcmF0b3IpKQogICAgICAgICAsIG1faW5kZXgoaW5kZXgpCkBAIC0xNzksMTMg
KzE3OSwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nVmlldyYgbV9z
dHJpbmdWaWV3OwotICAgIE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+
IG1faXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgdW5zaWduZWQg
bV9pbmRleEVuZDsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9y
OjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkK
LSAgICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNO
dWxsKCkgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5k
ZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmll
dy5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdW
aWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oCmluZGV4IDg5MTlhMGQzNzRlMzcxNDE4NTBiOTZkOWYwYmJhN2IyNTNiMTM0NmYuLmQwMDZh
OGY2ZGY1OTA5ZjI0OGVmYWM0OTZhNjJiNTE4ZTMyMzJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTU4LDE0ICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgVGV4
dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBUZXh0QnJlYWtJdGVyYXRvciYpID0gZGVs
ZXRlOwogICAgIFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oVGV4dEJyZWFrSXRlcmF0b3Im
JikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByZWNlZGluZyh1bnNpZ25l
ZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmco
dW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3dpdGNoT24o
bV9iYWNraW5nLCBbJl0oY29uc3QgYXV0byYgaXRlcmF0b3IpIHsKICAgICAgICAgICAgIHJldHVy
biBpdGVyYXRvci5wcmVjZWRpbmcobG9jYXRpb24pOwogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCBsb2NhdGlvbikg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzd2l0Y2hPbihtX2JhY2tpbmcsIFsmXShjb25z
dCBhdXRvJiBpdGVyYXRvcikgewogICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2lu
Zyhsb2NhdGlvbik7CkBAIC0xNzMsMTIgKzE3MywxMiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkVGV4
dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciYp
ID0gZGVsZXRlOwogICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oQ2FjaGVk
VGV4dEJyZWFrSXRlcmF0b3ImJikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHByZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9iYWNraW5nLnByZWNlZGluZyhsb2NhdGlvbik7CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9iYWNraW5nLmZvbGxvd2luZyhsb2NhdGlvbik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAppbmRleCA3MmM1NDY4NzIxNWU3YTg2NGQzMjY2
NmNkYjBmMWFkZmU3ZjE4YTRjLi5jZDliOTkzNDc4ZjFhZTE1ZWZhNTk5NGJmMWE4NGU3NThhNTA0
MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaApAQCAtMTk1LDcgKzE5NSw3IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFZhbHVlT3JOdWxsPFQ+IGl0ZW0pCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBPcHRpb25hbDxJdGVtPiYgaXRlbSkKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SXRlbT4mIGl0ZW0pCiB7
CiAgICAgaWYgKGl0ZW0pCiAgICAgICAgIHJldHVybiB0cyA8PCBpdGVtLnZhbHVlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAppbmRleCA5NzZmZGMxMzhjYzdmMDkzNDZjN2RkZDAzYWUxNTBhZmY4
ZjQ3NDc1Li4wYTVlZTdmOWIwYzcwMmI5MjMxYjc1Mjg2Nzk4ZmJhZGM4MDc2Yzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKQEAgLTQyMiw3ICs0MjIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CiAjaWZkZWYgX19PQkpDX18K
IAogV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNv
bnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFN0cmluZz4gbWFrZVZl
Y3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJpbmcqLCBpZCk7CiAK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1RleHRCcmVha0l0
ZXJhdG9yQ0YuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5o
CmluZGV4IDExZjIyN2RhMzg1N2VmOGNlNDM4OWQ2MTdmYTQ4YmMxYTFlZjRiMGIuLmVjYTY0ZGZm
YjM4ODZkODU2ZjZjYzRlMTVmNzBjNTYxZmY4YzdhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9zdHJpbmcgPSBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmdXaXRob3V0Q29weWluZygpOwog
ICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRp
b24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2VkaW5nKHVuc2lnbmVk
IGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAg
ICAgIHJldHVybiB7IH07CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJhbmdlLmxvY2F0aW9uOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dp
bmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Zm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGxv
Y2F0aW9uID49IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KENGU3RyaW5nR2V0TGVuZ3RoKG1f
c3RyaW5nLmdldCgpKSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXggZjVhMzYzNTA1MGVkNWU3YzMwNTcxZjVkZDc5
Mzk5MDIxZjA5MzVkYi4uNDYxODVjNmFlNjY1MjhkMTc4MGU3ZmU2MDcxZThhYjgyZTMyZmFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCkBAIC0zNSw3ICszNSw3
IEBAIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFN0cmluZyYgdmVjdG9y
RWxlbWVudCkKICAgICByZXR1cm4gYWRvcHROUygoX19icmlkZ2VfdHJhbnNmZXIgaWQpdmVjdG9y
RWxlbWVudC5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKLU9wdGlvbmFsPFN0cmlu
Zz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQgYXJyYXlFbGVtZW50KQorc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyosIGlkIGFy
cmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1N0
cmluZy5jbGFzc10pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0QnJlYWtJdGVyYXRvcklDVS5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9pY3UvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuaAppbmRleCBkOWQzZWYwZGYyZGNh
MmJiYTAwMTcwNTZmOWRjMDhlYzJlYjc1NzcyLi41NzRkY2M4NjcxMGJiNGQ2YzA4Y2FiZjQ1MmU1
Yjc0NWIxNDgwMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0QnJl
YWtJdGVyYXRvcklDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1RleHRCcmVha0l0
ZXJhdG9ySUNVLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChV
X1NVQ0NFU1Moc3RhdHVzKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByZWNl
ZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICBhdXRv
IHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKG1faXRlcmF0b3IsIGxvY2F0aW9uKTsKICAgICAgICAg
aWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmb2xs
b3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0
byByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhtX2l0ZXJhdG9yLCBsb2NhdGlvbik7CiAgICAgICAg
IGlmIChyZXN1bHQgPT0gVUJSS19ET05FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCA2
NjU3NzQ4YWUxZDU0NDY0NWM5ZjMzN2M1ODhhYjBjZjdmNTI5MmFlLi42YjcyYzBlNGI4NTBkN2I4
ZDEzOGYxOGQ1MzMxMGJmMWY0NjQwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAt
NTksNyArNTksNyBAQCBlbnVtIGNsYXNzIFNpZ25hbCB7CiAgICAgVW5rbm93biA9IE51bWJlck9m
U2lnbmFscwogfTsKIAotaW5saW5lIHN0ZDo6dHVwbGU8aW50LCBPcHRpb25hbDxpbnQ+PiB0b1N5
c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQoraW5saW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6Om9w
dGlvbmFsPGludD4+IHRvU3lzdGVtU2lnbmFsKFNpZ25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNo
IChzaWduYWwpIHsKICAgICBjYXNlIFNpZ25hbDo6QWNjZXNzRmF1bHQ6IHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoU0lHU0VHViwgU0lHQlVTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Vu
aXgvQ1BVVGltZVVuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9DUFVUaW1lVW5peC5jcHAK
aW5kZXggN2JjNDg1NjBlNjc5ZDllZWQ0MWRkNWRhMTVhNmE5NTY3OGNkNDgzNi4uMDU5MGYzMzli
NDgzZTdmNmVjNzk5MzVlZGFhMDhmMzA4ZjM3MTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdW5peC9DUFVUaW1lVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5peC9DUFVUaW1l
VW5peC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIFNlY29uZHMgdGltZXZhbFRvU2Vjb25k
cyhjb25zdCBzdHJ1Y3QgdGltZXZhbCYgdmFsdWUpCiAgICAgcmV0dXJuIFNlY29uZHModmFsdWUu
dHZfc2VjKSArIFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHModmFsdWUudHZfdXNlYyk7CiB9CiAK
LU9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCitzdGQ6Om9wdGlvbmFsPENQVVRpbWU+
IENQVVRpbWU6OmdldCgpCiB7CiAgICAgc3RydWN0IHJ1c2FnZSByZXNvdXJjZSB7IH07CiAgICAg
aW50IHJldCA9IGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnJlc291cmNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3VuaXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyVW5peC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L01lbW9yeVByZXNzdXJlSGFuZGxlclVuaXguY3BwCmluZGV4IGE5NmU0
ZTVmNWFhNGY0Yjg4MDk0OWM4YTE5NjM4N2ZjZjQyYWExNDAuLjRiY2QyNGY0NzAzODYzZTE1ZGRh
NmExODIzMDczY2NlZTM3MGM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5peC9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJVbml4LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAjZW5kaWYK
IH0KIAotT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9y
eVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1v
cnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9n
Z2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBs
YXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIHJldHVybiBNZW1vcnlVc2FnZSB7cHJvY2Vzc01l
bW9yeVVzYWdlKCksIG1lbW9yeUZvb3RwcmludCgpfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2lu
LmNwcAppbmRleCA0YTFhM2U1NDIyNWY1MjgwYTkwZmVlZWE3NDAzMTcxNmFjZWE1MTczLi4yY2Vj
OWVjYWRkODIyZGZhMWEwZjM4MzNhMDQyYWQ0NzM4MWY1ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0NQVVRp
bWVXaW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBTZWNvbmRzIGZpbGVUaW1lVG9TZWNv
bmRzKGNvbnN0IEZJTEVUSU1FJiBmaWxlVGltZSkKICAgICByZXR1cm4gU2Vjb25kcyB7IGR1cmF0
aW9uSW4xMDBOUy5RdWFkUGFydCAvIGh1bmRyZWRzT2ZOYW5vc2Vjb25kc1BlclNlY29uZCB9Owog
fQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQorc3RkOjpvcHRpb25hbDxDUFVU
aW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29t
L2phLWpwL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjgzMjIzKHY9dnMuODUpLmFzcHgKICAg
ICBGSUxFVElNRSBjcmVhdGlvblRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
aW5kZXggMWQwYTIwNDRlODYyYWEzMGVmODA1NTFiZTFkNmMwZWQ3MmI5MzNkMS4uNmVmZGQ3NjEw
OTE2ODY2MGM5YzVkZWNhZjFhZThjZDE4ZmM2NGE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21G
aW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSwgbG9uZyBsb25nJgogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGdldEZpbGVTaXpl
RnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29u
c3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvcm1hdGlvbikKIHsKICAgICBV
TEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKICAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZv
cm1hdGlvbi5uRmlsZVNpemVIaWdoOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZp
bmREYXRhLCB0CiAgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vj
b25kc0Zyb21GaWxlVGltZVRvVGltZXQ7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlKQogewogICAgIEJZX0hBTkRM
RV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoITo6R2V0RmlsZUlu
Zm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCkBAIC0xMTIs
NyArMTEyLDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZv
cm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24pOwogfQogCi1PcHRpb25hbDxXYWxsVGlt
ZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3Ry
aW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25z
dCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUu
ZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5k
bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxl
cldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNw
cAppbmRleCA3YWI0YTA0ZjE3ODJhYzFkNjRiYzI3YjY5ZThmZjA0NDJiMTQwNjg3Li5lNmJlYmRj
MWNhMjAyNjE5ZWE0ZmQ3NjQyOWM5Y2UzZmU1MGFjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwg
Y3JpdGljYWwsIFN5bmNocm9ubwogICAgIHJlbGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9u
b3VzKTsKIH0KIAotT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6
Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZv
cm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDYwMDZkMDEzNDUyMzAyYWRhOTBi
ODU4ZjRiMzdhNDMxZmEwNDE4MDQuLmRjMjQ4OWZmODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVl
ZTU3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xNTMsNyArMTUzLDcg
QEAgc3RhdGljIHVuc2lnbmVkIF9fc3RkY2FsbCB3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqIGRh
dGEpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUykKK2Jv
b2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCogZGF0YSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9TKQogewogICAgIHVuc2lnbmVkIHRocmVhZElk
ZW50aWZpZXIgPSAwOwogICAgIHVuc2lnbmVkIGluaXRGbGFnID0gc3RhY2tTaXplID8gU1RBQ0tf
U0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9OIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgKaW5k
ZXggOTQ4ZmI1NTg1NmVlOTk2MjY2OTEzNDY4ZGZlODgzZjY0NjkzNGY4NC4uZjQ0MTg0MjQ5YTJk
ZDM0NzIzYmJmYTNjNjEzMjNlZWMzM2U0OTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmgKQEAg
LTM4LDcgKzM4LDcgQEAgc3RydWN0IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgOiBwdWJsaWMg
QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAgICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+
IG5ld0xpbmVJdGVtczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheURldGFp
bHNVcGRhdGVCYXNlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlQmFzZShEZWNvZGVyJik7CiB9OwpA
QCAtNTIsNyArNTIsNyBAQCB2b2lkIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZT4gQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFz
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RGV0YWls
c1VwZGF0ZUJhc2U+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgcmVzdWx0OwogICAgIGlm
ICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQXBw
bGVQYXlEZXRhaWxzVXBkYXRlQmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBP
cHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAg
ICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgIHJldHVybiBm
YWxzZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheURldGFpbHNVcGRhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAppbmRleCBlODMxZDAyZjJmYWUzNzJkN2U2NDUz
NzJmYjE5YjE2MWYzZjBiOTA4Li5hNDAyNDFjNzg5YmI0MjE5ZDZlMmEzYTNjOWE2ODRkODc5Y2E0
ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
RGV0YWlsc1VwZGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQXBw
bGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0
YShEZWNvZGVyJik7CiB9OwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YT4gQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURh
dGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCkBAIC02Nyw3
ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29sIEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZURhdGE6OmRlY29kZURhdGEoRGVjb2RlciYgZGVjb2RlcikKIHsKICNkZWZpbmUgREVDT0RF
KG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3RkOjpvcHRp
b25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1l
KSBcCiAgICAgICAgIHJldHVybiBmYWxzZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaAppbmRleCAyNTliMjBmNDQ0MjZmN2YxMTYyMzVkNTU2
ZDI2N2YxODZkZTg1YzRiLi42YTBhODBiMTEyZWU4NzI2MzE0ZTM0ZGFmNjMyYjZhYzc5ODgwNDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJy
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3Iu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxlUGF5
RXJyb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsZVBheUVycm9yPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheUVycm9yPiBjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGUg
Y29kZSwgT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgc3RhdGljIFJlZjxBcHBsZVBheUVycm9yPiBjcmVh
dGUoQXBwbGVQYXlFcnJvckNvZGUgY29kZSwgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkPiBjb250YWN0RmllbGQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5RXJyb3IoY29kZSwgY29udGFjdEZp
ZWxkLCBtZXNzYWdlKSk7CiAgICAgfQpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgQXBw
bGVQYXlFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIHZvaWQg
c2V0Q29kZShBcHBsZVBheUVycm9yQ29kZSBjb2RlKSB7IG1fY29kZSA9IGNvZGU7IH0KIAotICAg
IE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGFjdEZpZWxkOyB9Ci0gICAgdm9pZCBzZXRDb250YWN0RmllbGQoT3B0
aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkKSB7IG1fY29udGFj
dEZpZWxkID0gY29udGFjdEZpZWxkOyB9CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkPiBjb250YWN0RmllbGQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhY3RGaWVs
ZDsgfQorICAgIHZvaWQgc2V0Q29udGFjdEZpZWxkKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlFcnJv
ckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkKSB7IG1fY29udGFjdEZpZWxkID0gY29udGFjdEZp
ZWxkOyB9CiAKICAgICBTdHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsg
fQogICAgIHZvaWQgc2V0TWVzc2FnZShTdHJpbmcmJiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9IFdU
Rk1vdmUobWVzc2FnZSk7IH0KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8QXBwbGVQYXlFcnJvcj4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKLSAgICBBcHBsZVBheUVycm9yKEFwcGxlUGF5RXJyb3JDb2RlIGNv
ZGUsIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQorICAgIEFwcGxlUGF5RXJyb3IoQXBwbGVQYXlFcnJvckNvZGUg
Y29kZSwgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0Rmll
bGQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBtX2NvZGUoY29kZSkKICAgICAg
ICAgLCBtX2NvbnRhY3RGaWVsZChjb250YWN0RmllbGQpCiAgICAgICAgICwgbV9tZXNzYWdlKG1l
c3NhZ2UpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgQXBwbGVQYXlF
cnJvckNvZGUgbV9jb2RlOwotICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+
IG1fY29udGFjdEZpZWxkOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RG
aWVsZD4gbV9jb250YWN0RmllbGQ7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKQEAgLTgz
LDEzICs4MywxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogUmVmUHRyPEFwcGxlUGF5RXJy
b3I+IEFwcGxlUGF5RXJyb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogI2RlZmluZSBE
RUNPREUobmFtZSwgdHlwZSkgXAotICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKKyAgICBzdGQ6
Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAo
IW5hbWUpIFwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IFwKIAogICAgIERFQ09ERShjb2RlLCBB
cHBsZVBheUVycm9yQ29kZSkKLSAgICBERUNPREUoY29udGFjdEZpZWxkLCBPcHRpb25hbDxBcHBs
ZVBheUVycm9yQ29udGFjdEZpZWxkPikKKyAgICBERUNPREUoY29udGFjdEZpZWxkLCBzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+KQogICAgIERFQ09ERShtZXNzYWdlLCBT
dHJpbmcpCiAKICN1bmRlZiBERUNPREUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKaW5kZXggYmVhNGIyM2EzNmZjY2ZkMzU0MDE1MDU5
NmY5MTBlMTEyNTFmODY2MS4uNjIzYTExZmMwMzhmMDBiNTFlM2YxYTMzMjk3MzE0YzY3NzNlMmNj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxp
bmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxp
bmVJdGVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IEFwcGxlUGF5TGluZUl0ZW0gZmluYWwg
OiBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEgewogICAgIFN0cmluZyBhbW91bnQ7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0
ZW0+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OCwyNiArNTgsMjYgQEAgdm9pZCBBcHBsZVBh
eUxpbmVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+IEFwcGxlUGF5TGluZUl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBheUxpbmVJ
dGVtPiBBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBB
cHBsZVBheUxpbmVJdGVtIHJlc3VsdDsKIAogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVj
b2RlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxUeXBl
PiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5
cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
c3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVs
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVs
OwogICAgIGlmICghbGFiZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LmxhYmVsID0gV1RGTW92ZSgqbGFiZWwpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBhbW91
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFtb3VudDsKICAgICBkZWNvZGVyID4+IGFt
b3VudDsKICAgICBpZiAoIWFtb3VudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRl
bURhdGEuaAppbmRleCA5NThlMzZmYzBiNjU0MjdmMzViNjAwOGQ3NjAwMzBlYjdhZjAzZWI5Li44
NDBmZWU4MTQyZDU3ODAzNDYyMWZlYTZkNGY4NDZlYzA0ZDUyYjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oCkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtRGF0YSB7CiAjZW5kaWYKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlMaW5l
SXRlbURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVEYXRhKERlY29kZXImKTsKIH07CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQXBwbGVQ
YXlMaW5lSXRlbURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxl
UGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYg
KCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5oCmluZGV4IGI5NjNlNGUyMTI0YzQxNTIxMGJj
NWU5NDIyNzQzMmI4ZTE4ZmExZDEuLjc1Yjc0NDYyMjY4MTI0MTk2NmE0Zjg5NjZlZmJkOTU0MTdj
ZGIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKICAg
ICB9OwogCiAgICAgVG9rZW4gdG9rZW47Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29u
dGFjdD4gYmlsbGluZ0NvbnRhY3Q7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFj
dD4gc2hpcHBpbmdDb250YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29u
dGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRD
b250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CiAgICAgU3RyaW5nIGluc3RhbGxtZW50QXV0aG9yaXph
dGlvblRva2VuOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnRDb250YWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaAppbmRleCA1ZTExYTg0ZGJiMWI4NTQ0OWEz
YWQzNDlmYmEwZjYyMTBmZWFlOTUzLi5kYmE5OWZmOGUwNDAzNDlkOTQyYTQzODQ5Mjg1Y2U0Yzdl
NTY3MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgQXBwbGVQ
YXlQYXltZW50Q29udGFjdCB7CiAgICAgU3RyaW5nIHBob25ldGljR2l2ZW5OYW1lOwogICAgIFN0
cmluZyBwaG9uZXRpY0ZhbWlseU5hbWU7CiAgICAgU3RyaW5nIGxvY2FsaXplZFBob25ldGljTmFt
ZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYWRkcmVzc0xpbmVzOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFkZHJlc3NMaW5lczsKICAgICBTdHJpbmcgc3ViTG9j
YWxpdHk7CiAgICAgU3RyaW5nIGxvY2FsaXR5OwogICAgIFN0cmluZyBwb3N0YWxDb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRN
ZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
TWV0aG9kLmgKaW5kZXggZWViNWM4MzMxZmEzYzgyNDdiNTdmMmVmY2Q1ODE1OTY1NDljOWY5Yi4u
M2RhMjQwZmZkNDEyMDJiNjQwMTdkZWU1YjhkNzcxZTA1YWViNThjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5o
CkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBBcHBsZVBheVBheW1lbnRNZXRob2QgewogCiAgICAg
U3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIFN0cmluZyBuZXR3b3JrOwotICAgIE9wdGlvbmFsPFR5
cGU+IHR5cGU7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50UGFzcz4gcGF5bWVudFBhc3M7
Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50UGFzcz4gcGF5bWVudFBhc3M7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1l
bnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKICAgICBTdHJpbmcgYmluZFRva2VuOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RNb2RlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaAppbmRleCBhYzdmNjI5ZjJiMGVmMGRiMGYy
Yjk0ZmNlYWUxOTA3N2E1MDc3ZjgwLi5jYjBhM2QxMDFjMzJkODc2NDlkZWI5NWNhOGE1ZjRlN2Fj
Y2Y0ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaApAQCAtNDIsNyArNDIs
NyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZSBmaW5hbCA6IHB1Ymxp
YyBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlCiAgICAgVmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2Q+IG5ld1NoaXBwaW5nTWV0aG9kczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU0LDIwICs1NCwyMCBAQCB2b2lkIEFw
cGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQYXlt
ZW50TWV0aG9kTW9kZVVwZGF0ZT4gQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUgcmVz
dWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlF
cnJvcj4+PiBlcnJvcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEFwcGxlUGF5
RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRlY29kZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJyb3Jz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5lcnJvcnMgPSBXVEZN
b3ZlKCplcnJvcnMpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2Q+PiBuZXdTaGlwcGluZ01ldGhvZHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQ
YXlTaGlwcGluZ01ldGhvZD4+IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBkZWNvZGVyID4+IG5l
d1NoaXBwaW5nTWV0aG9kczsKICAgICBpZiAoIW5ld1NoaXBwaW5nTWV0aG9kcykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCmluZGV4IDcxOTVj
OTM3ODU5MDY3NWE5OGM0YzM1M2JiYTRiOGI0ODE0MTNjZDEuLjNhYzZkZmU2MDQ2NTU3MTk0Nzli
YmIxZmFlYzE4OTdhYzlmZDA5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaApAQCAtMzks
NyArMzksNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIGZpbmFsIDogcHVi
bGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgewogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRNZXRob2RV
cGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiBBcHBsZVBh
eVBheW1lbnRNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVw
ZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXBwbGVQYXlQYXltZW50TWV0
aG9kVXBkYXRlIHJlc3VsdDsKIApAQCAtNjAsNyArNjAsNyBAQCBPcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZTo6ZGVjb2RlKERl
Y29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1l
LCB0eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8
dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCmluZGV4IGI3NTI1
NjEwNWMxYzNjNDQ2NjEyNWM2ZWU4ZDc0YmQ5OWUwNmU2NjUuLjY0NjU1OTU3NThjOTVjNDBhNjNj
YTcwNzYyYjUxMzlhYjI2YmU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVzdC5oCkBAIC00NSwxMCArNDUsMTAg
QEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudFJlcXVlc3QgOiBBcHBsZVBheVJlcXVlc3RCYXNlIHsK
ICAgICBTdHJpbmcgY3VycmVuY3lDb2RlOwogCiAgICAgU2hpcHBpbmdUeXBlIHNoaXBwaW5nVHlw
ZSB7IFNoaXBwaW5nVHlwZTo6U2hpcHBpbmcgfTsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQ
YXlTaGlwcGluZ01ldGhvZD4+IHNoaXBwaW5nTWV0aG9kczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4gc2hpcHBpbmdNZXRob2RzOwogCiAgICAgQXBw
bGVQYXlMaW5lSXRlbSB0b3RhbDsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRl
bT4+IGxpbmVJdGVtczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVt
Pj4gbGluZUl0ZW1zOwogCiAjaWYgZGVmaW5lZChBcHBsZVBheVBheW1lbnRSZXF1ZXN0QWRkaXRp
b25zX21lbWJlcnMpCiAgICAgQXBwbGVQYXlQYXltZW50UmVxdWVzdEFkZGl0aW9uc19tZW1iZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVx
dWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oCmluZGV4IDMyMGE3MzYxZTMwNzQzNzA2NWE3NGNiYmViODNkNzZlZjdlOGJiNzIu
LjhkYzVhZTUyODJhZTc3NjNjOWFmNDliMGQwNjVkYzM5ZTRmMDE0ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCkBA
IC00NiwxNyArNDYsMTcgQEAgc3RydWN0IEFwcGxlUGF5UmVxdWVzdEJhc2UgewogICAgIFZlY3Rv
cjxTdHJpbmc+IHN1cHBvcnRlZE5ldHdvcmtzOwogICAgIFN0cmluZyBjb3VudHJ5Q29kZTsKIAot
ICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUNvbnRhY3RGaWVsZD4+IHJlcXVpcmVkQmlsbGlu
Z0NvbnRhY3RGaWVsZHM7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmls
bGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlDb250YWN0Rmll
bGQ+PiByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOworICAgIHN0ZDo6b3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CiAKLSAgICBPcHRpb25hbDxWZWN0
b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczsK
LSAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1aXJlZFNo
aXBwaW5nQ29udGFjdEZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENv
bnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkRhdGE7CiAg
ICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkQ291bnRyaWVzOwogCiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9JTlNUQUxMTUVOVFMpCi0gICAgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEFw
cGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247
CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQXBwbGVQYXlSZXF1ZXN0QmFzZUFkZGl0aW9uc19tZW1i
ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwCmluZGV4IDgxYjdhYjM3MjU3Mzk0YjYxZWY1YzdmYjhjZDhjNzNmZmNiODAzZDAu
LjhlZGYyZmY5YTM5ZDMyM2EzMjAzOTc3OGVhMDBkODgwYTIxNzFjZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlMaW5lSXRlbT4gY29udmVy
dEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0mJiBsaW5lSQogICAgIHJldHVybiBXVEZNb3Zl
KGxpbmVJdGVtKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheUxpbmVJ
dGVtPj4gY29udmVydEFuZFZhbGlkYXRlKE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVt
Pj4mJiBsaW5lSXRlbXMpCitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPEFwcGxlUGF5TGluZUl0
ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5l
SXRlbT4+JiYgbGluZUl0ZW1zKQogewogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiByZXN1
bHQ7CiAgICAgaWYgKCFsaW5lSXRlbXMpCkBAIC01ODgsOCArNTg4LDggQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1
bnNpZ25lZCBzaG8KIHsKICAgICBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSB1cGRhdGU7
CiAKLSAgICBPcHRpb25hbDxBcHBsZVBheUVycm9yQ29kZT4gZXJyb3JDb2RlOwotICAgIE9wdGlv
bmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5RXJyb3JDb2RlPiBlcnJvckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDxB
cHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQ7CiAKICAgICBzd2l0Y2ggKHN0
YXR1cykgewogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfU1VDQ0VTUzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggNDE1NjFkMWY2Mzk1OWM4YTZiMTk2MDc5
ZTI0ZGFmOWRkNDA1MDMyMi4uYjdmNzA0Nzg4MWE4MzhhMTgyYTEzMThmOTk3YjkyM2NmN2U0MzY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0KCkgPSBkZWZhdWx0OwogCiBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6fkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0KCkgPSBkZWZhdWx0OwogCi1ib29sIGlzRmluYWxTdGF0
ZVJlc3VsdChjb25zdCBPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3Vs
dCkKK2Jvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCmluZGV4IDNhNzhkOGQ3
ZDQ2YjlhZmJmMDg1ZTRjNWE2NWRiNTc3MGYyMzVlNDQuLjNlNmJlMmRhMmNiMGIxNDY1N2U4YjA4
N2U4MzAyMjNmZmY0MmMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgewogICAgIFZl
Y3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGVycm9yczsKIH07CiAKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNvbnN0IE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZpbmFsU3RhdGVSZXN1bHQoY29u
c3Qgc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmgKaW5kZXggODEzNmNhMzE1YjcyMjBmZDkwZWMw
MTQzZmU3ZmM0NDk3MjEwZWEyOS4uZmVmMmJlZDdlZDVlM2UxY2NhYzk2ODY5MDkxM2NiOTVmZWVh
NGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNldHVwV2ViQ29yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cFdlYkNvcmUuaApAQCAtNjMsOCArNjMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKIAogICAgIEFwcGxlUGF5U2V0dXBD
b25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKLSAgICBPcHRpb25hbDxTZXR1cEZlYXR1cmVz
UHJvbWlzZT4gbV9zZXR1cEZlYXR1cmVzUHJvbWlzZTsKLSAgICBPcHRpb25hbDxCZWdpblByb21p
c2U+IG1fYmVnaW5Qcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8U2V0dXBGZWF0dXJlc1Byb21p
c2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxCZWdpblByb21p
c2U+IG1fYmVnaW5Qcm9taXNlOwogICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8QXBwbGVQYXlT
ZXR1cD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0
ZS5oCmluZGV4IGRmMjdkYzg1MTYyNTFmYzIzOWViMzA1ZjNlNzg5ZjQ2ZWE1YmEyM2EuLmIwNjky
Mjg0N2ZmODQxY2ZiMjExNjg3ODE2NjFjY2YzZjYxNDQ4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250
YWN0VXBkYXRlLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IEFwcGxlUGF5U2hpcHBpbmdDb250
YWN0VXBkYXRlIGZpbmFsIDogcHVibGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgewogICAg
IFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHM7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBp
bmdDb250YWN0VXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU0
LDcgKzU0LDcgQEAgdm9pZCBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBk
YXRlIHJlc3VsdDsKIApAQCAtNjIsNyArNjIsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6OmRlY29kZShEZQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBl
KSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4g
bmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCmluZGV4IGNjZmJkNzE0NjE3
NTM4YjljNjM2NDZkMzZjOTllMDRkYzMxOGE2ZjAuLjBjNDMzM2NkMGE1NTE1YmMyNGVlOWRkZjhh
OWMxODQzOTk0ZDA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVj
dCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIGZpbmFsIDogcHVibGljIEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2REYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBBcHBsZVBheVNoaXBw
aW5nTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IEFwcGxlUGF5
U2hpcHBpbmdNZXRob2Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxB
cHBsZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKIApA
QCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcgogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCi0gICAgT3B0aW9u
YWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRl
Y29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmgKaW5kZXggOGJiYTU0MWU3YTcwMzU5Mzg0
YTQ1NTBiNDgyMWE4ODNlZGIzYmRjNi4uY2IwYmYyOTVjZGUwMDMxNjBiOTNiN2RiODg4MGMzN2Fj
ZmIzZjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgewogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRh
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlRGF0YShEZWNvZGVyJik7CiB9OwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEFwcGxlUGF5
U2hpcHBpbmdNZXRob2REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RE
YXRhPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBBcHBsZVBheVNoaXBw
aW5nTWV0aG9kRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXBwbGVQYXlT
aGlwcGluZ01ldGhvZERhdGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVj
b2RlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCmluZGV4IDg3ZmFjODhjNWQ0NjY3Yjgy
OTJlYjYxYTNhYjM0M2UwYzgxMTNlN2UuLjJhNWUzNDdjZjVlNDEzMGUyODNiYmNlYjZhNWIyMmU4
NWJlMDAwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRh
dGUgZmluYWwgOiBwdWJsaWMgQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSB7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9k
VXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDMsNyArNDMsNyBA
QCB2b2lkIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQ
YXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUgcmVzdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5jcHAKaW5kZXggNDg5M2JlMjExYzc5NDRjZmE5MTZiMjkxZmJhOTg0NTg1Y2QyZGY2Yi4u
NWQ4Y2JiNjRiYTgyNmMyZTcxMzBiZjJjNTVkZTVkOTA2Y2E0ZGQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApA
QCAtMTMzLDIxICsxMzMsMjEgQEAgdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24KICAgICBtX2NsaWVu
dC5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIH0K
IAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCit2b2lk
IFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAg
IEFTU0VSVChtX2FjdGl2ZVNlc3Npb24pOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKSIpOwogICAgIG1fY2xpZW50LmNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFs
PEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudENv
b3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFs
PEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBBU1NFUlQo
bV9hY3RpdmVTZXNzaW9uKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbigpIik7CiAgICAgbV9jbGllbnQuY29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6
OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lv
bik7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKCkiKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudAog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFBheW1l
bnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxB
cHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudENv
b3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJU
KG1fYWN0aXZlU2Vzc2lvbik7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29tcGxldGVQ
YXltZW50TWV0aG9kTW9kZUNoYW5nZSgpIik7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8
QXBwbGVQYXlQYXltZW4KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRI
T0RfTU9ERSkKIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Np
b24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQordm9pZCBQ
YXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fYWN0
aXZlU2Vzc2lvbik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRv
cjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oUGF5bWVudFNlc3Npb25FcnJvciYmIGVycm9yKQog
ICAgIG1fYWN0aXZlU2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gUGF5
bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYsIHVuc2ln
bmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgcGF5bWVudE5ldHdvcmspIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29y
ayhEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgcGF5bWVudE5ldHdv
cmspIGNvbnN0CiB7CiAgICAgaWYgKHZlcnNpb24gPCAyICYmIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UocGF5bWVudE5ldHdvcmssICJqY2IiKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5oCmluZGV4IDE2N2VjMTUyMzE4MGE0ODZkNjRlNmExNzRlMDBmZTljN2RlODZhYTcuLmE3
YTc5ZDMyZjdiNmU1NjUzNmFkZDlhMmU4OWM4MzhhM2JhM2EyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNzMs
MTMgKzczLDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW5QYXltZW50U2Vzc2lvbihEb2N1
bWVudCYsIFBheW1lbnRTZXNzaW9uJiwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBw
aW5nTWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwor
ICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1F
TlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdl
KE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOworICAgIHZvaWQg
Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZ
TUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9u
YWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpOworICAgIHZvaWQgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKTsK
ICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRT
ZXNzaW9uKCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShB
UFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZENhbmNlbFBheW1lbnRTZXNzaW9uKFBheW1lbnRTZXNzaW9uRXJyb3ImJik7CiAKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zaWduZWQg
dmVyc2lvbiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbiwgY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBib29sIHNob3VsZEVuYWJsZUFwcGxlUGF5QVBJcyhE
b2N1bWVudCYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPHZvaWQsIEV4Y2Vw
dGlvbkRldGFpbHM+IHNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggMzQwZGUyZmJkNjU0ODkzNDg0NmI4MDRlNzJjMTJk
NjY3OTE4NzUzMC4uM2QzYmE5NjI2NDlhZTgyMWQyZDVjYjkzZDAwMjZhMzE5NjE5MzQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvckNsaWVudC5oCkBAIC01MSwyMCArNTEsMjAgQEAgY2xhc3MgUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25l
ZCB2ZXJzaW9uKTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXlt
ZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1l
cmNoYW50U2Vzc2lvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9w
dGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RV
cGRhdGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYpID0gMDsKICNpZiBFTkFC
TEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdmlydHVhbCB2b2lkIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9k
TW9kZVVwZGF0ZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRo
b2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0
ZT4mJikgPSAwOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9E
RSkKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0
ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5tbQppbmRleCBjZTU3MDg5NmZmZDliZGVkYzk0ZmM3YzZmYTNhMTNkMTA0
ZjU4NDcwLi44N2U1M2QyZDk4NjE3MDk5ZTcyYzRhNDA2YTU0ODhiYTBjNzk1Y2NmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENv
bmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGlj
IFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1l
bnRJdGVtJiBpdGVtKQogICAgIHJldHVybiBpbnN0YWxsbWVudEl0ZW07CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3Qg
QXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBhcnJheUVsZW1lbnQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3Qg
QXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFb
YXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudEl0
ZW1DbGFzcygpXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgK
aW5kZXggMjY4NmE5MDEyMDU3ZjUxOTczZmFlYzE4OGUzYTMxM2Q1NjIwZmU4Yi4uMWQ1NGIwYWYw
MTZmMTk3Y2I5ZTBhYWM0YWQzYzM3N2Q3ZWYyM2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZnJvbUpTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBmcm9tSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Br
UGF5bWVudE1lcmNoYW50U2Vzc2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDEyOTMzYTQxYjliOWY5MDBhNzFmMGNkNmQ3OGJhNDk3YWU0
YTczOTQuLmI3MWY4NDgxZmMyOTZkODZjNzQwYTM5OWM5ODJmMzU5NjU5ZTMzOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8
UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSwgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogRG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBOU1N0
cmluZy4KICAgICBhdXRvIGpzb25TdHJpbmcgPSBKU09OU3RyaW5naWZ5KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCmluZGV4IDNiYjYzZjAxNzZh
ZTI4MTFkYjJjMzE4NTM1NDk2Mzc5NDM4YTM3MjkuLjc2NTNkZTU0YWY1MzlmMjU2MWY0MjIzNmQz
MGVjNjFhYjU4MDNkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCkBAIC02MSw3ICs2MSw3IEBA
IHN0YXRpYyBBcHBsZVBheVBheW1lbnRQYXNzOjpBY3RpdmF0aW9uU3RhdGUgY29udmVydChQS1Bh
eW1lbnRQYXNzQWN0aXZhdGlvblN0YXRlCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50UGFzcz4gY29udmVydChQS1BheW1lbnRQYXNzICpwYXltZW50UGFzcykKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50
UGFzcyAqcGF5bWVudFBhc3MpCiB7CiAgICAgaWYgKCFwYXltZW50UGFzcykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPEFwcGxl
UGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50UGFzcyAqcGF5bWVudFBhc3MpCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhv
ZDo6VHlwZT4gY29udmVydChQS1BheW1lbnRNZXRob2RUeXBlIHBheW1lbnRNZXRob2RUeXBlKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kOjpUeXBlPiBjb252ZXJ0
KFBLUGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1ldGhvZFR5cGUpCiB7CiAgICAgc3dpdGNoIChw
YXltZW50TWV0aG9kVHlwZSkgewogICAgIGNhc2UgUEtQYXltZW50TWV0aG9kVHlwZURlYml0OgpA
QCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnQoQ05MYWJlbGVkVmFsdWU8Q05Q
b3N0YWxBZGRyZXNzKj4gKnBvc3RhbEFkZHJlc3MsIEFwcGxlUGF5UGF5CiAgICAgcmVzdWx0LmNv
dW50cnlDb2RlID0gcG9zdGFsQWRkcmVzcy52YWx1ZS5JU09Db3VudHJ5Q29kZTsKIH0KIAotc3Rh
dGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpi
aWxsaW5nQ29udGFjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRh
Y3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxsaW5nQ29udGFjdCkKIHsKICAgICBpZiAoIWJpbGxp
bmdDb250YWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNz
aW9uRXJyb3JDb2NvYS5tbQppbmRleCAyYzA2YjQ2ZTgzNDRiNmY3N2U2NGNjNTRiY2JmYTRhYzY4
MGI4Y2Q5Li4yMmQ1NDFjZGMxNjY3NTUzOGZiM2QwZjE1OWMwZGYyNjg5NDM0MWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9u
RXJyb3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRk
aXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9yKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQ
YXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJvcihOU0Vycm9yICplcnJvcikKIHsKICNpZiBI
QVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggUEtQ
YXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tleSBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlNb2RpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBh
eU1vZGlmaWVyLmgKaW5kZXggNGQxMjlhZWFlMGI4NTM2MDU1MTFlY2E2MWQyMmFmMjk5YWU0YmZl
Ny4uNWIwMGIwZjhjYThhN2RkNGZlOWNmNTY0YWM4NjJmYWRlNWFiMjA5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1v
ZGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVx
dWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IEFwcGxlUGF5TW9kaWZpZXIgewotICAgIE9wdGlvbmFsPEFwcGxlUGF5
UGF5bWVudE1ldGhvZFR5cGU+IHBheW1lbnRNZXRob2RUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZT4gcGF5bWVudE1ldGhvZFR5cGU7CiAgICAgVmVjdG9y
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGFkZGl0aW9uYWxTaGlwcGluZ09wdGlvbnM7CiAKICNp
ZiBkZWZpbmVkKEFwcGxlUGF5TW9kaWZpZXJBZGRpdGlvbnNfbWVtYmVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1l
bnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IDU2MDE0MTg1OWUxY2Iy
YjI4YjdlZDU5ZDE1MGQ4YTc5Y2JjNjc4YzEuLjMyM2M0Njc0ODU3ZjJiM2Q0ZjdkZjAzZDQzZTE2
OTdlZGQzMWRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5k
bGVyLmNwcApAQCAtMzYzLDcgKzM2Myw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8QXBwbGVQ
YXlMaW5lSXRlbSwgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+Pj4gQXBwbGVQYXlQYXltCiAgICAg
cmV0dXJuIHt7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfX07CiB9CiAKLXN0
YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoU3RyaW5n
JiYgbWVzc2FnZSwgT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZp
ZWxkLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYgZXJyb3JzKQorc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihTdHJpbmcmJiBtZXNzYWdl
LCBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCwg
VmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mIGVycm9ycykKIHsKICAgICBpZiAoIW1lc3Nh
Z2UuaXNOdWxsKCkpCiAgICAgICAgIGVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRl
KEFwcGxlUGF5RXJyb3JDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkLCBXVEZNb3ZlKGNvbnRh
Y3RGaWVsZCksIFdURk1vdmUobWVzc2FnZSkpKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5bWVudE1ldGhvZEVy
cm9ycyhKU0M6OkpTT2JqZQogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0
IEFwcGxlUGF5TW9kaWZpZXImKSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCi1FeGNlcHRpb25P
cjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9k
aWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIo
KSBjb25zdAorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRh
aWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFpbHMgPSBt
X3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogICAgIGlmICghZGV0YWlscy5tb2Rp
ZmllcnMpCkBAIC02NDQsNyArNjQ0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXlt
ZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHAKICAgICBy
ZXR1cm4geyB9OwogfQogCi12b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKE9w
dGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCit2b2lkIEFwcGxlUGF5UGF5bWVudEhh
bmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkK
IHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0
KHN0ZDo6bnVsbG9wdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuaAppbmRleCA4MDBlNzdiOTI0YmZmYjBmOTcxOTQ0MzQyNDE4ZWQwNDZhM2NjYTM4Li4zMWIy
OWRmMjM2ZDJiNDljMjdkMTNkNGQwMDVhNThhZjFjMWZmNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJv
cnMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKICAgICB2b2lkIGNv
bXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQ
YXlFcnJvcj4+JikgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1lbnRN
ZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9yPFJl
ZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxz
dGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gZmly
c3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8UGF5bWVudERldGFpbHNNb2RpZmllciwgQXBwbGVQYXlNb2RpZmllcj4+
PiBmaXJzdEFwcGxpY2FibGVNb2RpZmllcigpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2hpcHBpbmdBZGRyZXNzVXBkYXRlZChWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYm
IGVycm9ycyk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hpcHBpbmdPcHRpb25VcGRhdGVkKCk7
CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1
bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGV0YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVlc3Q6
OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJv
ckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSBmaW5hbDsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1Zh
bHVlJiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRl
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBs
ZXRlPiYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFsaWRh
dGlvbkVycm9ycyYmKSBmaW5hbDsKIAogICAgIC8vIFBheW1lbnRTZXNzaW9uCkBAIC05NSw4ICs5
NSw4IEBAIHByaXZhdGU6CiAKICAgICBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgUmVmPFBheW1lbnRSZXF1ZXN0PiBtX3BheW1lbnRSZXF1ZXN0Owot
ICAgIE9wdGlvbmFsPEFwcGxlUGF5UmVxdWVzdD4gbV9hcHBsZVBheVJlcXVlc3Q7Ci0gICAgT3B0
aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZT4gbV9zZWxlY3RlZFBheW1lbnRNZXRob2RU
eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlSZXF1ZXN0PiBtX2FwcGxlUGF5UmVxdWVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU+IG1fc2VsZWN0
ZWRQYXltZW50TWV0aG9kVHlwZTsKIAogICAgIGVudW0gY2xhc3MgVXBkYXRlU3RhdGUgOiB1aW50
OF90IHsKICAgICAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4
IGJlMTgzMjMxYWU5NWMzNzM2MzNhNzRlMWM3NGU3MWE5YjFhYzQxMGMuLmE0MzI2Yzk0ZTg3Njc4
YjViZDE1OWJlYTcwODk5NTdkODYwNjRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdCB7CiAgICAg
Q29sb3IgdGhlbWVDb2xvcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBBcHBsaWNhdGlvbk1h
bmlmZXN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsaWNhdGlvbk1hbmlm
ZXN0IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggMTk5NzA1ZTU3OTdiMDg3ZTczMzcwNWQ5YTEwNTNk
YWUyMjJhNjI2MS4uZTlkOGFmZTM2ZGJhOGZmM2Q0YTg4NTJjNDk2NmNhYzA1NTJmN2YzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmQuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Omlu
dmFsaWRhdGUoKQogICAgICAgICByZWplY3QoKTsKIH0KIAotdm9pZCBDbGlwYm9hcmQ6Okl0ZW1X
cml0ZXI6OnNldERhdGEoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYgZGF0YSwgc2l6
ZV90IGluZGV4KQordm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OnNldERhdGEoc3RkOjpvcHRp
b25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiBkYXRhLCBzaXplX3QgaW5kZXgpCiB7CiAgICAg
aWYgKGluZGV4ID49IG1fZGF0YVRvV3JpdGUuc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmQuaAppbmRleCBhNmM1OGJjOTI5YjViYzc1NTJjYmQ2NTU0ZjQ4Mjk0N2EzNDI4
MWQ3Li44YjI2NjZjOWMzYjgyZmQ4MWQzNTFiZTg5ZTQ0ZjkxYTIxYThmN2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaApAQCAt
OTUsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRlbVdyaXRl
cihDbGlwYm9hcmQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgICAgICB2b2lkIHNl
dERhdGEoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+JiYsIHNpemVfdCBpbmRleCk7Cisg
ICAgICAgIHZvaWQgc2V0RGF0YShzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYm
LCBzaXplX3QgaW5kZXgpOwogICAgICAgICB2b2lkIGRpZFNldEFsbERhdGEoKTsKICAgICAgICAg
dm9pZCByZWplY3QoKTsKIAogICAgICAgICBXZWFrUHRyPENsaXBib2FyZD4gbV9jbGlwYm9hcmQ7
Ci0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4+IG1fZGF0YVRv
V3JpdGU7CisgICAgICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
Pj4gbV9kYXRhVG9Xcml0ZTsKICAgICAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9t
aXNlOwogICAgICAgICB1bnNpZ25lZCBtX3BlbmRpbmdJdGVtQ291bnQ7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CkBAIC0xMTEsOSArMTExLDkgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVzb2x2ZU9yUmVqZWN0KEl0ZW1Xcml0ZXImKTsKIAot
ICAgIE9wdGlvbmFsPFNlc3Npb24+IG1fYWN0aXZlU2Vzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNlc3Npb24+IG1fYWN0aXZlU2Vzc2lvbjsKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZp
Z2F0b3I7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPj4gbV9kYXRh
VG9Xcml0ZTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4+
IG1fZGF0YVRvV3JpdGU7CiAgICAgUmVmUHRyPEl0ZW1Xcml0ZXI+IG1fYWN0aXZlSXRlbVdyaXRl
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggNzkzNWQ3YTI5NjQ0ZmQ2MDJlODY5ZmM5YjZm
OTMwMTI0YjM5ZWQyNS4uZDMzM2M2MTRhNDY1YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtOjpn
ZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogICAgIG1fZGF0YVNvdXJjZS0+Z2V0VHlwZSh0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0K
IAotdm9pZCBDbGlwYm9hcmRJdGVtOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBk
ZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit2b2lkIENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRh
Rm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQogewog
ICAgIG1fZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKGRlc3RpbmF0aW9uLCBXVEZN
b3ZlKGNvbXBsZXRpb24pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uaAppbmRleCAyN2UxNzFhMjllYTdiZjI4ODY4
YmVhNDIwYjRjMWRiYjljYjdkZjVmLi5kYWM2YWZmYzY3NzU5Yzc1NzlhYmEyNjVkM2Y1YzFjMGNl
NmVlN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcm
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0
aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJik7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldy
aXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpOwogCiAgICAgUHJlc2VudGF0aW9u
U3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblN0
eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGE2MjAxNmJiNTUwNDFlM2RhODg3
ZjRmMWRmZjdjNzkyMDQ4YzA4ZjIuLjFhMTJlMDk5MmE3NmNmYjQ0MmY1YTg2ZGM2OGY0YzEzNWM0
NTNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsK
IH0KIAotdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZv
cldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit2b2lkIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9h
cmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFz
dGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQogewogICAgIG1faXRlbVR5cGVMb2Fk
ZXJzLmNsZWFyKCk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCBlODRmYmMzM2M1YzIy
YzhlNDdkOTkwN2MwZGFiZmJlN2JjZDQwZGQ1Li45MTRkYzMyNzI4MjczOGEwMDY3OWU2ZWQ0NDc0
NzgxMGNlM2ZmYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5n
JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0RGF0YUZv
cldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxl
Y3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CiAK
ICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKQEAgLTkwLDcgKzkwLDcgQEAg
cHJpdmF0ZToKICAgICB9OwogCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlBlbmRpbmdDbGlwYm9h
cmRUeXBlcyB7IDAgfTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+IG1fY29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4+IG1f
aXRlbVR5cGVMb2FkZXJzOwogICAgIFdlYWtQdHI8Q2xpcGJvYXJkPiBtX3dyaXRpbmdEZXN0aW5h
dGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgKaW5kZXggZjI5ODc1MzY5YTY5
MjAyZjAzYTgxODFjMTllN2YyMWI3NjQ3MTJmMy4uNmU0ZDI5YWFjYjQzOWU3M2YxNDJmYmNjNTYz
NTg0MWMxNTJmN2Y5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0RGF0YUZvcldy
aXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
bGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgQ2xpcGJvYXJkSXRlbSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKaW5kZXggNzg1NWMwZWQxNTA4
ZWJkNTRkNTllZjZmZDhkYmM2ZGRhYmI1OWU1ZS4uMWViYmEzZWU5YjljNTU3MmQwMGQ3MDlkN2Jl
YmIxNWYwNzI0ZTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVk
CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogfQogCi12b2lkIENs
aXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENs
aXBib2FyZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3Rv
bURhdGE+KT4mJiBjb21wbGV0aW9uKQordm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFT
b3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9u
KQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRvIHN1
cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1iYWNrZWQgQ2xpcGJvYXJkSXRlbXMKICAgICAvLyBiYWNr
IHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5nIENsaXBib2FyZC53cml0ZSgpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAppbmRleCBlNWI3M2ZlNDMxZGYy
NjIxYjBiNTM0ZWFkNzZjYzMxMDdkODJiZTdmLi41ZDk4ZWQyYjY4MGIwM2M1YTk1YzlhYWE1MmE1
ODA4MjQ5ZjZmMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0
cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwotICAgIHZvaWQgY29sbGVjdERh
dGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CisgICAgdm9pZCBj
b2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+JiYpIGZpbmFs
OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV90eXBlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCBkMjRlZTI5ZGFlMzdm
NDJhZGExNTEwN2IxNWNlODJmOTJkM2RhMWU2Li4yODgyYTg0ODcxYzljMmRlOTU5ZDVhY2ExMDVk
MDVjZmU2MmVlNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9O
YXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBOYXZpZ2F0b3JCZWFjb246
OmxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGRvY3VtZW50LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBtYWtlU3RyaW5nKCJCZWFjb24gQVBJIGNhbm5vdCBsb2FkICJfcywgZXJyb3IuZmFpbGluZ1VS
TCgpLnN0cmluZygpLCBtZXNzYWdlTWlkZGxlLCBkZXNjcmlwdGlvbikpOwogfQogCi1FeGNlcHRp
b25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCitF
eGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+
JiYgYm9keSkKIHsKICAgICBVUkwgcGFyc2VkVXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwodXJs
KTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNv
bjo6c2VuZEJlYWNvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVh
Y29uKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBPcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK0V4Y2VwdGlvbk9yPGJv
b2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJv
ZHk6OkluaXQ+JiYgYm9keSkKIHsKICAgICByZXR1cm4gTmF2aWdhdG9yQmVhY29uOjpmcm9tKG5h
dmlnYXRvciktPnNlbmRCZWFjb24oZG9jdW1lbnQsIHVybCwgV1RGTW92ZShib2R5KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCmluZGV4
IDgxM2I3NTFlNDIzYWViNDZmMTczZjZmMDVhMTUxZDE1ZjA4Y2VhMGIuLjkyZWIxOWQ0OTU1NDQ4
N2FiZGViZTUxZWMxMTZjYTc1ZWU2N2IxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCkBAIC00NCwxNCArNDQsMTQgQEAgY2xhc3MgTmF2
aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiwgcHJpdmF0
ZSBDYWNoZWRSYXdSZXMKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0b3JCZWFjb24oTmF2
aWdhdG9yJik7CiAgICAgfk5hdmlnYXRvckJlYWNvbigpOwotICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxib29sPiBzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB1
cmwsIE9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PGJvb2w+IHNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHVy
bCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYpOwogCiAgICAgc2l6ZV90IGluZmxp
Z2h0QmVhY29uc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbmZsaWdodEJlYWNvbnMuc2l6ZSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5h
dmlnYXRvciYpOwogCiBwcml2YXRlOgotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNlbmRCZWFjb24o
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYm
KTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBzZW5kQmVhY29uKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmKTsKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDk1YTg3ZGQ3OTFhMzEyNDUyZDA3ZmM3YmNjYTgxNGFl
YjJmNzA0ODYuLjEwZjg4YjE4OGExNjFkODFkNjMxN2MyZjhhNDY1YjVkODE1OTZhYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRE9NQ2FjaGU6OmNsb25lUmVzcG9uc2VzKGNv
bnN0IFZlY3RvcjxET01DYWNoZUVuZ2luZToKICAgICB9KTsKIH0KIAotdm9pZCBET01DYWNoZTo6
bWF0Y2hBbGwoT3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMm
JiBvcHRpb25zLCBNYXRjaEFsbFByb21pc2UmJiBwcm9taXNlKQordm9pZCBET01DYWNoZTo6bWF0
Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIE1hdGNoQWxsUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKFVOTElL
RUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CkBAIC00MjEs
NyArNDIxLDcgQEAgc3RhdGljIFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRE8KICAgICByZXR1cm4gRmV0Y2hSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJz
KSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5yZXF1ZXN0IH0sIEZldGNoT3B0aW9ucyB7IHJl
Y29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29yZC5yZWZlcnJlciB9KTsKIH0KIAotdm9pZCBE
T01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRE9NQ2FjaGU6Omtl
eXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCA5MjBlNDIwYjEyYTg4ZDgyOTNkZTY3Y2EyODkx
MTlkYWFkMDE3NGJmLi4xMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC00NywxMyArNDcsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgbWF0Y2goUmVxdWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB1c2luZyBNYXRjaEFsbFByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPEZldGNoUmVz
cG9uc2U+Pj47Ci0gICAgdm9pZCBtYXRjaEFsbChPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiwgTWF0Y2hBbGxQcm9taXNlJiYpOworICAgIHZvaWQgbWF0Y2hBbGwo
c3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgTWF0Y2hB
bGxQcm9taXNlJiYpOwogICAgIHZvaWQgYWRkKFJlcXVlc3RJbmZvJiYsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKIAogICAgIHZvaWQgYWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiwg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgcHV0KFJlcXVlc3RJbmZvJiYs
IFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAg
dm9pZCByZW1vdmUoUmVxdWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwotICAgIHZvaWQga2V5cyhPcHRpb25hbDxSZXF1ZXN0
SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgS2V5c1Byb21pc2UmJik7CisgICAgdm9pZCBr
ZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYsIENhY2hlUXVlcnlPcHRpb25zJiYsIEtl
eXNQcm9taXNlJiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oCmluZGV4IDhlNjJmYTE5MWMyYzllODM3ZjhlZDA5MzI0ZDc5OGViNTJmNWM4NDQuLmE0OTUw
YjU5NDYyMjc2ZGQyNWRiNTJkMjllY2Y2ODEyMmU3YzQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0
IENhY2hlSW5mb3MgewogICAgIENhY2hlSW5mb3MgaXNvbGF0ZWRDb3B5KCk7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENhY2hlSW5mb3M+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFZlY3RvcjxDYWNoZUluZm8+
IGluZm9zOwogICAgIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXI7CkBAIC05NSw3ICs5NSw3IEBAIHN0
cnVjdCBDYWNoZUluZm9zIHsKIAogc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3Vs
dCB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDYWNoZUlk
ZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0
aW9uUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllciB7
IDAgfTsKICAgICAvLyBUcnVlIGluIGNhc2Ugc3RvcmluZyBjYWNoZSBsaXN0IG9uIHRoZSBmaWxl
c3lzdGVtIGZhaWxlZC4KQEAgLTExNSw3ICsxMTUsNyBAQCB1c2luZyBDYWNoZUluZm9zQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENhY2hlSW5mb3NPckVycm9yJiYpPjsKIHVzaW5n
IFJlY29yZHNPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFJlY29yZD4sIEVycm9yPjsKIHVzaW5n
IFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVjb3Jkc09yRXJyb3Im
Jik+OwogCi11c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEVycm9yPiYmKT47Cit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPjsKIAogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgQ2FjaGVJbmZvczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CkBAIC0xMjMsMTQgKzEyMywxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiBpbmxpbmUgdm9pZCBDYWNoZUluZm9zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IHVwZGF0ZUNvdW50ZXI7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IGlubGluZSBPcHRpb25hbDxDYWNoZUluZm9zPiBDYWNoZUluZm9zOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFs
PENhY2hlSW5mb3M+IENhY2hlSW5mb3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+PiBpbmZvczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxDYWNoZUluZm8+PiBpbmZvczsKICAgICBkZWNvZGVyID4+IGluZm9zOwogICAgIGlmICgh
aW5mb3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gdXBkYXRlQ291bnRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB1cGRhdGVD
b3VudGVyOwogICAgIGRlY29kZXIgPj4gdXBkYXRlQ291bnRlcjsKICAgICBpZiAoIXVwZGF0ZUNv
dW50ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDQsMTQgKzE0NCwxNCBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDYWNoZUlkZW50aWZpZXJPcGVy
YXRpb25SZXN1bHQ6OmVuY29kZShFbmNvZAogICAgIGVuY29kZXIgPDwgaGFkU3RvcmFnZUVycm9y
OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJZGVu
dGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0
ZDo6b3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlkZW50aWZp
ZXJPcGVyYXRpb25SZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGhh
ZFN0b3JhZ2VFcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJvcjsK
ICAgICBkZWNvZGVyID4+IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBpZiAoIWhhZFN0b3JhZ2VFcnJv
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmYTA1MGMyOGNmZmU1ZmZlZDk2
ZDg4OGY5ODIyOWRkNDIyNDk1YTdhLi44YTljYjFmYzg3NWYyMzU3NzkzYTU4NjUwZTExZDllMWFm
OWEyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0
b3JhZ2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9y
YWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhCiAKIERP
TUNhY2hlU3RvcmFnZTo6fkRPTUNhY2hlU3RvcmFnZSgpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8
Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0b3JhZ2U6Om9yaWdpbigpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewogICAg
IGF1dG8qIG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiAgICAgaWYgKCFvcmlnaW4p
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvU2VxdWVudGlhbE1h
dGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnkKIAogdm9pZCBET01D
YWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVl
cnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgb3B0aW9ucyA9
IFdURk1vdmUob3B0aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICByZXRyaWV2ZUNhY2hlcyhbdGhp
cywgaW5mbyA9IFdURk1vdmUoaW5mbyksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6
UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiAKIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURM
Qm9vbGVhbj4mJiBwcm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CisgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11
dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDEsNyArMTQxLDcgQEAgUmVmPERPTUNhY2hlPiBET01DYWNoZVN0b3JhZ2U6OmZpbmRDYWNo
ZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8mJiBpbmYKICAgIHJldHVybiBET01D
YWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby5uYW1l
KSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKIH0KIAotdm9pZCBE
T01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpy
ZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigp
OwogICAgIGlmICghb3JpZ2luKSB7CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgbG9n
Q29uc29sZVBlcnNpc3RlbmN5RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3QKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPERPTUNhY2hlPj4mJiBwcm9taXNlKQog
ewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgcmV0
cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAo
ZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNlcHRp
b24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIERPTUNh
Y2hlU3RvcmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVk
PElETEludGVyZmFjZQogCiB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsKLSAg
ICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIHJldHJpZXZl
Q2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9uKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBET01DYWNoZVN0
b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4KIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9t
aXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgcmV0
cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBiNDBlYWFjZGVjODhmODc1NWEzMWU1OTliMmY3
NTY1ZjJhMjlmNjg2Li4xOTQ3ZmM3YWNjYzllM2M5OTM0NjM2NWRlZmQ5ZmNiNzc3MjUzYzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKQEAg
LTU1LDkgKzU1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvT3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RE9NQ2FjaGU+PiYmKTsKICAgICB2
b2lkIGRvUmVtb3ZlKGNvbnN0IFN0cmluZyYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFu
PiYmKTsKICAgICB2b2lkIGRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYm
LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAgICB2b2lk
IHJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgUmVmPERPTUNhY2hlPiBmaW5k
Q2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiYpOwotICAgIE9wdGlvbmFs
PENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRP
cmlnaW4+IG9yaWdpbigpIGNvbnN0OwogCiAgICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2Fj
aGVzOwogICAgIHVpbnQ2NF90IG1fdXBkYXRlQ291bnRlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKaW5kZXgg
YWZmMjc4ZDc1MWZjZDNkOGIwNDk3OTYwZDNhMjgyZGY4NmE1MGFkMS4uZThlNDhmZTRiYWRjYzYz
YzhhYTdkYTc1NTRjNGY2YjIyOTRjYTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmgKQEAgLTM0LDcgKzM0LDcgQEAg
c3RydWN0IFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgewogICAgIFJldHJpZXZlUmVjb3Jkc09wdGlv
bnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwgaWdub3JlVmFyeSwgc2hvdWxkUHJvdmlkZVJl
c3BvbnNlIH07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmV0cmlldmVSZWNvcmRzT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRp
b25zPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAg
ICAgYm9vbCBpZ25vcmVTZWFyY2ggeyBmYWxzZSB9OwpAQCAtNDgsMjkgKzQ4LDI5IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFJldHJpZXZlUmVjb3Jkc09wdGlvbnM6OmVu
Y29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8PCByZXF1ZXN0IDw8IGlnbm9yZVNlYXJj
aCA8PCBpZ25vcmVNZXRob2QgPDwgaWdub3JlVmFyeSA8PCBzaG91bGRQcm92aWRlUmVzcG9uc2U7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxSZXRyaWV2ZVJl
Y29yZHNPcHRpb25zPiBSZXRyaWV2ZVJlY29yZHNPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldHJp
ZXZlUmVjb3Jkc09wdGlvbnM+IFJldHJpZXZlUmVjb3Jkc09wdGlvbnM6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdDsKICAgICBkZWNvZGVyID4+
IHJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlU2VhcmNoOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaWdub3JlU2VhcmNoOwogICAgIGRlY29kZXIgPj4gaWdub3JlU2VhcmNoOwogICAgIGlm
ICghaWdub3JlU2VhcmNoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Ym9vbD4gaWdub3JlTWV0aG9kOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3Jl
TWV0aG9kOwogICAgIGRlY29kZXIgPj4gaWdub3JlTWV0aG9kOwogICAgIGlmICghaWdub3JlTWV0
aG9kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4g
aWdub3JlVmFyeTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZVZhcnk7CiAgICAgZGVj
b2RlciA+PiBpZ25vcmVWYXJ5OwogICAgIGlmICghaWdub3JlVmFyeSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFByb3ZpZGVSZXNwb25z
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBk
ZWNvZGVyID4+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBpZiAoIXNob3VsZFByb3ZpZGVS
ZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdEluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdEluZm8uaAppbmRleCAzMGViNDYx
N2JhYTg4MmNkOWVkMTk4NmQxNjJlMWEzZGU4N2ZkM2E3Li4wNDllMmJlMDdiNDM4ZDMzYThhODE0
ZWM1OTM1YzE3Nzk3ZWI0ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nv
bnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
b250YWN0LXBpY2tlci9Db250YWN0SW5mby5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBDb250
YWN0SW5mbyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdGVsOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb250YWN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb250YWN0
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBA
IC00OSwxOSArNDksMTkgQEAgdm9pZCBDb250YWN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxDb250YWN0
SW5mbz4gQ29udGFjdEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxDb250YWN0SW5mbz4gQ29udGFjdEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBuYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBlbWFpbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbWFpbDsKICAg
ICBkZWNvZGVyID4+IGVtYWlsOwogICAgIGlmICghZW1haWwpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGVsOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHRlbDsKICAgICBkZWNvZGVyID4+IHRlbDsKICAgICBp
ZiAoIXRlbCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNNYW5hZ2VyLmNwcApp
bmRleCBlYTRiNmJlZGUxMmIxODMyMmIzMTRmM2ZlOTU4MzdjZTRlMzNiNzk5Li41NzUxMzY3OGQz
OTViMTUxYzg1MGFjZjcyMjRmZjM1MGMzNmE4YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RzTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c01hbmFnZXIuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBDb250YWN0c01hbmFnZXI6OnNlbGVjdChjb25zdCBWZWN0b3I8
Q29udGFjdFByb3BlcnR5PiYgcHJvcGVydGllcywgY29uc3QgQ28KIAogICAgIG1fY29udGFjdFBp
Y2tlcklzU2hvd2luZyA9IHRydWU7CiAKLSAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93
Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0
aGlzXSAoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJiBpbmZvKSB7CisgICAgZnJhbWUt
PnBhZ2UoKS0+Y2hyb21lKCkuc2hvd0NvbnRhY3RQaWNrZXIocmVxdWVzdERhdGEsIFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgdGhpc10gKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJ
bmZvPj4mJiBpbmZvKSB7CiAgICAgICAgIG1fY29udGFjdFBpY2tlcklzU2hvd2luZyA9IGZhbHNl
OwogICAgICAgICBpZiAoaW5mbykgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExT
ZXF1ZW5jZTxJRExEaWN0aW9uYXJ5PENvbnRhY3RJbmZvPj4+KCppbmZvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVl
c3REYXRhLmgKaW5kZXggMzBiMGNmMjczOGM4YmE0MWVlYzU4MGU2ZDk1YjI4NmFlNDQ1MmU3Mi4u
OTI4OWEyMzU0ZjMyMTUzZjRmYzY1NzAzZTMyOTg5OTQ2ZGJlYjNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVl
c3REYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGEgewog
ICAgIFN0cmluZyB1cmw7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPENvbnRhY3RzUmVxdWVzdERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGFjdHNSZXF1ZXN0RGF0
YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01
MSwxOSArNTEsMTkgQEAgdm9pZCBDb250YWN0c1JlcXVlc3REYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENv
bnRhY3RzUmVxdWVzdERhdGE+IENvbnRhY3RzUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb250YWN0c1JlcXVlc3REYXRhPiBDb250YWN0c1JlcXVl
c3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8
Q29udGFjdFByb3BlcnR5Pj4gcHJvcGVydGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxD
b250YWN0UHJvcGVydHk+PiBwcm9wZXJ0aWVzOwogICAgIGRlY29kZXIgPj4gcHJvcGVydGllczsK
ICAgICBpZiAoIXByb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBtdWx0aXBsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG11bHRp
cGxlOwogICAgIGRlY29kZXIgPj4gbXVsdGlwbGU7CiAgICAgaWYgKCFtdWx0aXBsZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdXJsOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDIzN2I2ZjI5MzFkNjgyZTFjMTExMmEzMTRh
M2RkNDc0M2M5ZThlYWQuLmE4NjUzMzkyYmNkMzFkNmViNWQ1MjUxMzAxNTZiMDYzZGZiMDg5OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgewogICAgIFJlZlB0cjxBYm9ydFNpZ25hbD4gc2lnbmFsOwotICAgIE9wdGlvbmFs
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHB1YmxpY0tleTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IHB1YmxpY0tleTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucy5oCmluZGV4IDhjNzc0OWNjNGUyZTJkNjg1YTg3MDlmOTVmNGM4NmU2MTc5
NjI5ZDUuLjgxYzk0ZWFhZmE3NTlkZDhkMjY5NTUzYWUzMThiNjhmNDFmZGQ1ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaApAQCAtNDAsNyArNDAsNyBAQCBz
dHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsKIAogICAgIE1lZGlhdGlvblJlcXVpcmVt
ZW50IG1lZGlhdGlvbjsKICAgICBSZWZQdHI8QWJvcnRTaWduYWw+IHNpZ25hbDsKLSAgICBPcHRp
b25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IHB1YmxpY0tleTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gcHVibGljS2V5
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAxNmUwM2Y4Zjc3M2Y3NDhmMDZiYWE1Y2Uz
NDJmZGE4ZjhhOGU4OTYuLmMxZjRiZjQyZjZmYjk4OGUyNGQyNTY4YTRjZGVkNTA3ZDg3NDlkYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKICAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDRE06OnNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorc3RkOjpvcHRpb25hbDxT
dHJpbmc+IENETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiB7
CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCAyMjMyYmYzOTYw
ZDJjYzE3ODhmMmUzMmYzNzI2NzY0OWJmMGQwNGU4Li4xMDNkZGMwYzBhY2FhZGM2ZjJjNmIxYzEx
NDk4Yzk2YTZmM2U0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q0RNPiBj
cmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfkNETSgpOwog
Ci0gICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2lu
ZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+KT47CiAgICAgdm9pZCBnZXRT
dXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRp
ZGF0ZUNvbmZpZ3VyYXRpb24sIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKIAog
ICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07
IH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAotICAgIE9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAKICAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAppbmRleCA0MTlkYjhkNTE3ZGZiM2E0MzQwN2U4YTFiMTEwZmZlMDIxNTkxMTc1
Li4wYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJf
dCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIE9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApA
QCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtl
eWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLU9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbml0RGF0YQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLU9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGtleUlEczsKIApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1
ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEo
YnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERh
dGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
YXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0g
bV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmgKaW5kZXggNzlmZTUxMjgwNjE0ODVlY2EyOWYxYzM4MjYxNmI3ZTQ4NmUxOTAyMi4uNzMy
OGU5ZjA0MGNmMTM1ODhkMmFkNWI2ZTg0NTkxNzg0OGQ4M2E4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgK
QEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPEluaXREYXRhUmVnaXN0cnk+OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5
cGVDYWxsYmFja3MgewogICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBG
dW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAg
ICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPE9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNp
bmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2Fu
aXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RL
ZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBl
eHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJh
Y3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCmluZGV4IGI0OTEzMzFhMTY3ODYzNDZlOGU3Yzc3NDM5OTE4OWE0YTdkYjk5MjIuLjYzOGQx
NTkwM2JhNWU0ZmIwOWE5NmQwZGJmZWI3ZWEyZTRjNGRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAK
QEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9uSWQsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIC8vIDguMS4gTGV0IHNhbml0aXplZCBzZXNzaW9uIElEIGJlIGEgdmFsaWRh
dGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBzZXNzaW9uSWQuCiAgICAgICAgIC8vIDgu
Mi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHNlc3Npb24g
SUQgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJv
ci4KLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRTZXNzaW9uSWQgPSBtX2ltcGxl
bWVudGF0aW9uLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKICAgICAgICAgaWYgKCFzYW5pdGl6ZWRTZXNzaW9u
SWQgfHwgc2FuaXRpemVkU2Vzc2lvbklkLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2FuaXRpemVkU1Nlc3Npb25JRCBlbXB0eSIpOwog
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjMsNyArMzIzLDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgLy8gOC42LiBMZXQgbWVzc2FnZSB0
eXBlIGJlIG51bGwuCiAgICAgICAgIC8vIDguNy4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNl
IHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAg
ICAvLyA4LjguIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAg
ICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmxvYWRTZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpzYW5p
dGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKndl
YWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25JZCA9
ICpzYW5pdGl6ZWRTZXNzaW9uSWQsIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
T3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga25vd25LZXlz
LCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVy
ZSkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5sb2FkU2Vzc2lvbihtX3Nl
c3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBzYW5p
dGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRpemVkU2Vzc2lvbklkLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3I+JiYga25vd25LZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9u
LCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBD
RE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vz
c2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAgICAgICAgICAg
Ly8gOC44LjEuIElmIHRoZXJlIGlzIG5vIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNl
c3Npb24gSUQgaW4gdGhlIG9yaWdpbiwgcmVzb2x2ZSBwcm9taXNlIHdpdGggZmFsc2UgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgLy8gOC44LjIuIElmIHRoZSBzdG9yZWQgc2Vz
c2lvbidzIHNlc3Npb24gdHlwZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgTWVkaWFL
ZXlTZXNzaW9uIHNlc3Npb24gdHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgICAgICAgICAgLy8gOC44LjMuIExldCBzZXNzaW9uIGRhdGEgYmUg
dGhlIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24gSUQgaW4gdGhlIG9yaWdp
bi4gVGhpcyBtdXN0IG5vdCBpbmNsdWRlIGRhdGEgZnJvbSBvdGhlciBvcmlnaW4ocykgb3IgdGhh
dCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdpbi4KQEAgLTQzNSw3ICs0MzUsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2Us
IFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3Nl
ZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2Ug
cmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAg
IC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAg
ICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNz
aW9uVHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIHNhbml0aXplZFJl
c3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3
ZWFrVGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAg
ICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVz
ZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0
YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqd2Vha1RoaXMpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9u
RGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcAppbmRleCBkOTM3ZmM5M2FhZGM3OGY0MDBkZTJkOTNkMTlmNjE4YjNiNmEy
MTJlLi40ZmY5MjNmNTJlMmVlOWZhOWM5YmE5MzkzNjhhYjkwNmJhNjRmMGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcApAQCAtOTQsNyArOTQsNyBAQCBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0
b3I6Okl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJiBtYXApCiB7CiB9CiAKLU9wdGlvbmFsPFdU
Rjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
Pj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8V1RG
OjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQoKQogewogICAgIGlmICghbV9tYXAt
Pm1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aAppbmRleCBhMWQ5YTVkYmIxNTBkZTc5NGRmN2RiNDhmMTdkNzQyZTEyMTkwYmMwLi44ZmZkNGNm
N2Q5ZmJhOWVhNGNjNTRmZWM2ODEyNzY3MjM2MWVhZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGlj
OgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYpOwotICAgICAg
ICBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZh
bHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQo
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxNZWRpYUtleVN0YXR1c01hcD4gbV9tYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAKaW5kZXggZmM2MTM3NGUyMTY0MWMxNjc0MWQ3ZTUxZGQwZTNlN2EyZDUyYjY2
Mi4uNjM3ZDQzNTIwNTU4NjcwY2Y1NDg0NTAxZjY0Y2M1MjViNzljMWNjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNw
cApAQCAtNTksOCArNTksOCBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VmVjdG9yPFQ+PiB7CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IExvZ0FyZ3VtZW50PE9wdGlvbmFsPFQ+PiB7
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBPcHRpb25hbDxUPiYgdmFsdWUpCitz
dHJ1Y3QgTG9nQXJndW1lbnQ8c3RkOjpvcHRpb25hbDxUPj4geworICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsdWUgPyAibnVsbG9wdCJfcyA6IExvZ0FyZ3VtZW50PFQ+Ojp0b1N0cmluZyh2YWx1
ZS52YWx1ZSgpKTsKICAgICB9CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgdHJ5TmV4
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVj
dG9yPE0KICAgICAgICAgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZp
Z3VyYXRpb24gPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmZpcnN0KCkpOwogICAg
ICAgICBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5yZW1vdmUoMCk7CiAKLSAgICAgICAgQ0RNOjpT
dXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbaW1wbGVtZW50YXRpb24g
PSBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBv
cnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7CisgICAgICAg
IENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW2ltcGxlbWVu
dGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zID0gV1RGTW92
ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2UsIGxvZ2dlciA9IFdURk1vdmUobG9n
Z2VyKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChzdGQ6Om9wdGlvbmFsPE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAvLyA2LjMuMy4gSWYgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMg
bm90IE5vdFN1cHBvcnRlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAgICBp
ZiAoc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgewogICAgICAgICAgICAgICAgIC8vIDYuMy4zLjEu
IExldCBhY2Nlc3MgYmUgYSBuZXcgTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mgb2JqZWN0LCBhbmQgaW5p
dGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGIwMGE0OGRhNDNjOThkMzA0ODU4YWNl
YTYxNjViMjY1ODRkNDQxNmQuLjY2ZWNhMWJkN2Q2YmQ0Y2JjNjE1NTAxMjFhYWIzOTlkYzU1MmI1
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmls
ZVN5c3RlbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IExpc3RlZENoaWxkIHsKICAgICBM
aXN0ZWRDaGlsZCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xh
dGVkQ29weSgpLCB0eXBlIH07IH0KIH07CiAKLXN0YXRpYyBPcHRpb25hbDxGaWxlU3lzdGVtOjpG
aWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJ
Z25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiAgICAgaWYgKEZp
bGVTeXN0ZW06OmlzSGlkZGVuRmlsZShmdWxsUGF0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaAppbmRleCAxYTA5OThhY2FlZWFhMjYwZWE4
MzE0ZjZhMDNmMzZiNjhhOTg0YzViLi40ZmU5MjM1Y2Y2NmU3MzIyNGQ0ZDljZjUyZTZkMmU2ZDBm
ZmY4MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJp
dmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIFJlZjxGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk+IG1fZGlyZWN0b3J5OwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbj4g
bV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9lcnJvcjsKICAgICBib29s
IG1faXNSZWFkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNEb25lIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNDIyZTA2
M2YxYTVlN2ZlYTFlNmM2NDc4ODliMDlhMTc0MDIzNTJiMy4uZWRhNTFkMGZlNWRkNTU0Y2E4NDlj
ZDY3ZDdhMDI4ZmQxMDMxMmZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcApAQCAtNzcsNyArNzcsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNo
Qm9keTo6ZXh0cmFjdChJbml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7
CiB9CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRm9ybURhdGEmIGZvcm1EYXRhKQorc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIWZvcm1E
YXRhLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IDMxODdmOTBjZmQyYTE4ZjdjNmUxNTgyOWFlZGQ3NDFiNzc2YmIxOWUuLjE4ZjI3ZDVl
ZTYyNjkwOTJkNTEwMTgxNWEwMzA0NjVmYjBmYzRhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFjdChJbml0JiYsIFN0cmluZyYpOwogICAgIEZl
dGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25h
bDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURh
dGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+
IGZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAg
IHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdT
dWNjZWVkZWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjNmE2YTFiMDk0
OTdkMWU1MzdlOWM4M2Y3Y2ZmZjlkZTc0ZTM3NTMuLjU1Zjc5YjcwN2NmMTY5Yzc4NjMwOWEzNTRi
ZTFjNTdjYzczZDAyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHBhcnNlUGFyYW1ldGVycyhTdHJpbmdWaWV3IGlucHV0LCBzaXplX3Qg
cG9zaXRpb24KIH0KIAogLy8gaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyNwYXJz
aW5nLWEtbWltZS10eXBlCi1zdGF0aWMgT3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBl
PiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgU3RyaW5n
IGlucHV0ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBlKTsK
ICAgICBzaXplX3Qgc2xhc2hJbmRleCA9IGlucHV0LmZpbmQoJy8nKTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
OwogICAgIAotICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRCb3VuZGFyeSA9IFtdIChjb25zdCBPcHRp
b25hbDxNaW1lVHlwZT4mIG1pbWVUeXBlKSAtPiBPcHRpb25hbDxTdHJpbmc+IHsKKyAgICBhdXRv
IHBhcnNlTXVsdGlwYXJ0Qm91bmRhcnkgPSBbXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxNaW1lVHlw
ZT4mIG1pbWVUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gewogICAgICAgICBpZiAoIW1p
bWVUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnR5cGUsICJtdWx0aXBhcnQiKSAmJiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT5zdWJ0eXBlLCAiZm9ybS1kYXRhIikpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXgg
MzFjY2E5MmM3MzZmZGJiNWE3MDQ4N2NjZDJiOTk1ZTJjMTFmNDk4Yi4uYmRmZTQxN2I4MjU3YjBm
OWExYWQ3NjIyOTM3ZTg4ODRkNDc0YWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1GZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRj
aEhlYWRlcnM+JiYgaGVhZGVycykKK0ZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBi
b2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
JmNvbnRleHQpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhX
VEZNb3ZlKGhlYWRlcnMpKQpAQCAtMzc1LDEzICszNzUsMTMgQEAgUmVzb3VyY2VFcnJvciBGZXRj
aEJvZHlPd25lcjo6bG9hZGluZ0Vycm9yKCkgY29uc3QKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8
RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4gRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNlcHRpb24oKSBj
b25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbG9hZGluZ0Vycm9yLCBbXShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgewogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSA/ICJMb2FkaW5n
IGZhaWxlZCJfcyA6IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgfTsKICAgICB9LCBbXShj
b25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikgewogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
ZXhjZXB0aW9uIH07Ci0gICAgfSwgW10oYXV0byYmKSAtPiBPcHRpb25hbDxFeGNlcHRpb24+IHsK
KyAgICB9LCBbXShhdXRvJiYpIC0+IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiB7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggMjQ1OGVkMzZjZmEyY2IyYTU0ZWQ2OGE0
NjBmZjU0NjMzZmQ2NzlkMi4uMWM5ZWVjMzVkZDI5ZmY1MzIxMzhhNmIzM2ZhODhlNmY3NTRjYWFh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZldGNoQm9keU93
bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKLSAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmKTsKKyAgICBG
ZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYpOwogICAgIH5GZXRjaEJvZHlPd25lcigpOwog
CiAgICAgYm9vbCBib2R5VXNlZCgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzdHVyYmVkKCk7IH0KQEAg
LTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNMb2FkaW5nRXJyb3IoKSBjb25z
dDsKICAgICBSZXNvdXJjZUVycm9yIGxvYWRpbmdFcnJvcigpIGNvbnN0OwotICAgIE9wdGlvbmFs
PEV4Y2VwdGlvbj4gbG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uPiBsb2FkaW5nRXhjZXB0aW9uKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQogCkBAIC0xMjEs
MTQgKzEyMSwxNCBAQCBwcml2YXRlOgogICAgIH07CiAKIHByb3RlY3RlZDoKLSAgICBPcHRpb25h
bDxGZXRjaEJvZHk+IG1fYm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gbV9ib2R5
OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIGJvb2wgbV9pc0Rpc3R1cmJlZCB7IGZh
bHNlIH07CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CiAKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxv
YWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9pc0JvZHlPcGFxdWUgeyBmYWxzZSB9Owog
CiAgICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uLCBSZXNvdXJjZUVycm9yPiBt
X2xvYWRpbmdFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFk
ZXJzLmNwcAppbmRleCA4NjM3NTk5NjJjODkzOWY2ZTZmOWE4MWZjYTE1NmYxMmQ5YjE1ZDBhLi5j
M2RhY2M3YjkwMDJjODlkYzIzNTIyYTVhOGVlMWUzMGFjZTMzYTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxIZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYgaGVh
ZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25P
cjxSZWY8RmV0Y2hIZWFkZXJzPj4gRmV0Y2hIZWFkZXJzOjpjcmVhdGUoT3B0aW9uYWw8SW5pdD4m
JiBoZWFkZXJzSW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBGZXRjaEhlYWRl
cnM6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPEluaXQ+JiYgaGVhZGVyc0luaXQpCiB7CiAgICAgSFRU
UEhlYWRlck1hcCBoZWFkZXJzOwogCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBGZXRjaEhlYWRl
cnM6OmZpbHRlckFuZEZpbGwoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQgZ3Vh
cmQpCiAgICAgfQogfQogCi1PcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQo
KQogewogICAgIHdoaWxlIChtX2N1cnJlbnRJbmRleCA8IG1fa2V5cy5zaXplKCkpIHsKICAgICAg
ICAgYXV0byBrZXkgPSBtX2tleXNbbV9jdXJyZW50SW5kZXgrK107CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAppbmRleCA2NmQyZTg1NDU4YmNkNjM4Nzg2YmVi
MDU5OTJkYmZiNTg3OTBkOGRmLi5jNjdlMTE1YzgyODI0ZTdiMmZhYjE1OTAyZTU2N2JkMGRkM2E4
MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB1c2luZyBJbml0ID0gVmFyaWFu
dDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBTdHJpbmc+Pj47Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBj
cmVhdGUoT3B0aW9uYWw8SW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRj
aEhlYWRlcnM+PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxJbml0PiYmKTsKIAogICAgIHN0YXRpYyBS
ZWY8RmV0Y2hIZWFkZXJzPiBjcmVhdGUoR3VhcmQgZ3VhcmQgPSBHdWFyZDo6Tm9uZSwgSFRUUEhl
YWRlck1hcCYmIGhlYWRlcnMgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hIZWFk
ZXJzIHsgZ3VhcmQsIFdURk1vdmUoaGVhZGVycykgfSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNo
SGVhZGVycz4gY3JlYXRlKGNvbnN0IEZldGNoSGVhZGVycyYgaGVhZGVycykgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGZXRjaEhlYWRlcnMgeyBoZWFkZXJzIH0pOyB9CkBAIC02OSw3ICs2OSw3IEBA
IHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLSAgICAgICAgT3B0aW9uYWw8V1RGOjpLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggMzQ4YWI0NDI0OWNkOTJhZGIy
ZTQ3ZTM3YzA0Mjc2ZTIwOThhNDk5ZS4uZmQ1OTEzODFkMzJlZWNiZGVkYjZiNDAxYWYzNzg5NTFi
NDI5MjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBP
cHRpb25hbDxFeGNlcHRpb24+IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgaW5pdE1ldGhvZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4g
c2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbml0TWV0
aG9kKQogewogICAgIGlmICghaXNWYWxpZEhUVFBUb2tlbihpbml0TWV0aG9kKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk1ldGhvZCBpcyBub3QgYSB2YWxpZCBIVFRQ
IHRva2VuLiJfcyB9OwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5n
PiBjb21wdXRlUmVmZXJyZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29ucwog
ICAgIHJldHVybiBTdHJpbmcgeyByZWZlcnJlclVSTC5zdHJpbmcoKSB9OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0cmluZyYgcmVmZXJyZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdDo6SW5pdCYgaW5pdCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gYnVpbGRPcHRpb25zKEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdHJpbmcmIHJlZmVycmVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3Q6OkluaXQmIGluaXQp
CiB7CiAgICAgaWYgKCFpbml0LndpbmRvdy5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFpbml0Lndp
bmRvdy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJX
aW5kb3cgY2FuIG9ubHkgYmUgbnVsbC4iX3MgfTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25zKGNvbnN0IEluaXQmIGlu
aXQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRp
b24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxpZFNp
Z25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIEFTQ0lJTGl0ZXJh
bCBtZXNzYWdlIHsgIkZldGNoUmVxdWVzdEluaXQuc2lnbmFsIHNob3VsZCBiZSB1bmRlZmluZWQs
IG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1
cmUgcmVsZWFzZS4iX3MgfTsKICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggMDc5MGRjYjE0ZjNmM2FjZTdk
NTFjMTZlMjI2NTY0NmM2ZjlmZWFjZS4uMzNiYThjNmJkMjMyYTVjNzg1NjQzNDgzNWQ0ZTM0M2Nk
OGFhNWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWRpcmVjdCA9IEZldGNoT3B0
aW9uczo6UmVkaXJlY3Q7CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVz
dD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSW5mbyYmLCBJbml0JiYpOwotICAg
IHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYg
aGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9u
cywgU3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0
KGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycyksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVmZXJyZXIpKSk7IH0KKyAgICBzdGF0aWMg
UmVmPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVh
ZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywg
U3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNv
bnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycyksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVmZXJyZXIpKSk7IH0KIAogICAgIGNvbnN0IFN0
cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKCkgY29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25h
bDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBG
ZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIEZldGNoUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRj
aEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYg
cmVmZXJyZXIpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW5pdGlhbGl6ZU9wdGlvbnMoY29u
c3QgSW5pdCYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGluaXRpYWxpemVXaXRoKEZldGNoUmVx
dWVzdCYsIEluaXQmJik7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8QWJv
cnRTaWduYWw+IG1fc2lnbmFsOwogfTsKIAotaW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4m
JiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQoraW5saW5l
IEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYg
aGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9u
cywgU3RyaW5nJiYgcmVmZXJyZXIpCiAgICAgOiBGZXRjaEJvZHlPd25lcihjb250ZXh0LCBXVEZN
b3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCkpCiAgICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0SW5pdC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3RJbml0LmgKaW5kZXggYzA2NWUxNThhNzBl
OGQwNTFhNjEyZTBhOTQ2YzcyZDAwNjJkMjEyNy4uZGQyMzg3NDQ3OGEzOTIxMzQ0OWYzMjNkNjhm
ZjA4Mjg3ZWJhODZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3RJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3RJbml0LmgKQEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBGZXRjaFJlcXVlc3RJbml0IHsKICAgICBTdHJpbmcgbWV0aG9kOwotICAgIE9wdGlv
bmFsPEZldGNoSGVhZGVyczo6SW5pdD4gaGVhZGVyczsKLSAgICBPcHRpb25hbDxGZXRjaEJvZHk6
OkluaXQ+IGJvZHk7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhlYWRl
cnM7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+IGJvZHk7CiAgICAgU3RyaW5n
IHJlZmVycmVyOwotICAgIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsK
LSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6Ok1vZGU+IG1vZGU7Ci0gICAgT3B0aW9uYWw8RmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFscz4gY3JlZGVudGlhbHM7Ci0gICAgT3B0aW9uYWw8RmV0Y2hP
cHRpb25zOjpDYWNoZT4gY2FjaGU7Ci0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVj
dD4gcmVkaXJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcmVmZXJyZXJQ
b2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6Ok1vZGU+IG1vZGU7CisgICAg
c3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q2FjaGU+IGNhY2hlOworICAgIHN0ZDo6b3B0
aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4gcmVkaXJlY3Q7CiAgICAgU3RyaW5nIGludGVn
cml0eTsKLSAgICBPcHRpb25hbDxib29sPiBrZWVwYWxpdmU7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBrZWVwYWxpdmU7CiAgICAgSlNDOjpKU1ZhbHVlIHNpZ25hbDsKICAgICBKU0M6OkpTVmFs
dWUgd2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCBjZWZlZmM3M2ZjMjU2ZjdhMDE1MDZiNzQ1ZTMxNzliYTg3YTFkNzk5Li41
OTBhYmZjODM3ODZiZTIzNjhmNTc3YmQ0YTUwZjVhZDQ4NjQxNDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykKICAgICByZXR1
cm4gc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3Rh
dHVzID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYg
Ym9keSwgRmV0Y2hIZWFkZXJzOjpHdWFyZCBndWFyZCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlKQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBG
ZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7
CiAgICAgYm9vbCBpc1N5bnRoZXRpYyA9IHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3Bv
bnNlOjpUeXBlOjpEZWZhdWx0IHx8IHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNl
OjpUeXBlOjpFcnJvcjsKICAgICBib29sIGlzT3BhcXVlID0gcmVzcG9uc2UudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwpAQCAtNjMsNyArNjMsNyBAQCBS
ZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIE9wdGlvbgogICAgIHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYg
Ym9keSwgSW5pdCYmIGluaXQpCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNo
UmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9w
dGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5LCBJbml0JiYgaW5pdCkKIHsKICAgICAvLyAx
LiBJZiBpbml04oCZcyBzdGF0dXMgbWVtYmVyIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMjAwIHRvIDU5
OSwgaW5jbHVzaXZlLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvci4KICAgICBpZiAoaW5pdC5zdGF0
dXMgPCAyMDAgIHx8IGluaXQuc3RhdHVzID4gNTk5KQpAQCAtOTIsNyArOTIsNyBAQCBFeGNlcHRp
b25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjbwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBleHRyYWN0ZWRCb2R5Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiBleHRyYWN0ZWRCb2R5OwogCiAgICAgLy8gOC4g
SWYgYm9keSBpcyBub24tbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOgogICAgIGlmIChib2R5KSB7
CkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBGZXRj
aFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIHJldHVybiBy
ZWRpcmVjdFJlc3BvbnNlOwogfQogCi1GZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
K0ZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4m
JiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJvZHlP
d25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwgbV9p
bnRlcm5hbFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiZGU5ODU0YjI2MWQzZDk1NTkzMDc0
MzkzY2MxYTU4OWYyOTllZTM5Li44MzZmNGUxNjM2YjRmNTg3MjNkNGYxY2E4OTY3N2VmZGZjZjI3
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApA
QCAtNTQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIHVu
c2lnbmVkIHNob3J0IHN0YXR1cyB7IDIwMCB9OwogICAgICAgICBTdHJpbmcgc3RhdHVzVGV4dDsK
LSAgICAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpJbml0PiBoZWFkZXJzOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEZldGNoSGVhZGVyczo6SW5pdD4gaGVhZGVyczsKICAgICB9OwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4mJiwgRmV0Y2hIZWFkZXJzOjpHdWFy
ZCwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZl
dGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25h
bDxGZXRjaEJvZHk+JiYsIEZldGNoSGVhZGVyczo6R3VhcmQsIFJlc291cmNlUmVzcG9uc2UmJik7
CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiwgSW5pdCYm
KTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmLCBJ
bml0JiYpOwogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IHN0YXR1cyk7CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXYXNt
TUlNRVR5cGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+
JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisgICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+
JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC0xNTMsNyAr
MTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscyBtX2Ny
ZWRlbnRpYWxzOwogICAgIH07CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFJlc291cmNlUmVzcG9u
c2U+IG1fZmlsdGVyZWRSZXNwb25zZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VSZXNwb25zZT4gbV9maWx0ZXJlZFJlc3BvbnNlOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9p
bnRlcm5hbFJlc3BvbnNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb2R5TG9hZGVyPiBtX2JvZHlM
b2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNjhiZGM0
NThkZWYzZjI2ZTE2MWE4ZTM5OTQ3M2FhMjk3ODczY2VlZS4uNzk5NWQ0ZGQ0NjFkZTAzNmNkODY5
MWIzZmYxODFhZWFlZmIxMmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGNvbnN0
IEFTQ0lJTGl0ZXJhbCBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9jYXRpb25FcnJvck1lc3NhZ2Ug
eyAiT3JpZ2luIGQKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEdlb2xvY2F0aW9uKTsK
IAotc3RhdGljIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVhdGVHZW9sb2NhdGlvblBv
c2l0aW9uKE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYmIHBvc2l0aW9uKQorc3Rh
dGljIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVhdGVHZW9sb2NhdGlvblBvc2l0aW9u
KHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiYgcG9zaXRpb24pCiB7CiAg
ICAgaWYgKCFwb3NpdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5k
ZXggYTFlNzM5YmZhZDhmZGQyNzg4ZjY3MDMxMTA3OWEyM2Q0MTExNjg3YS4uNTgxYTI5MjViNDA0
MmU0MGNlMjEyNWVjNDY2NmU3ZWFhZmEzYmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgLy8gV2Ugc2hvdWxkIHVwZGF0ZSBXZWJLaXQgdG8gcmVmbGVjdCB0
aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBzcGVjaWZpY2F0aW9uCiAgICAgLy8gaXMgcHVibGlzaGVk
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgPSAwOwotICAg
IHZpcnR1YWwgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigp
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjEz
YjU1ZDc5MjE4MjViYWU3MjhjMWY1ZGI2MTBhYjZmZjI3YTg5My4uMDYxNjI5MTYwZDliY2M3ZDVk
YWY3NGNmYzRmODE1NTBiYTQ4ZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiAgICAgbV9jbGllbnQuY2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRpb24pOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25E
YXRhPiYgcG9zaXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFu
Z2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBwb3NpdGlv
bikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZlY3RvcjxSZWY8R2Vv
bG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3Ip
CiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7CiB9CiAKLU9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxhc3RQb3NpdGlvbigp
CitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgaWYgKG1fbGFzdFBvc2l0aW9uKQogICAgICAg
ICByZXR1cm4gbV9sYXN0UG9zaXRpb24udmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4
IDk3ODRlOTFhMzRlYmE2OTUwYmFkN2YyMDU3MmVlYWUzY2IzMDBjMGUuLjQyZjVkMDYyZGI2ZjA5
YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtNTMs
MTAgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uJik7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3QgT3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJv
ciYpOwogCi0gICAgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlv
bigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3Np
dGlvbigpOwogCiAgICAgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWN0aXZpdHlT
dGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlT
dGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpIG92
ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBv
c2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFz
dFBvc2l0aW9uOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2Vy
dmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGln
aCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvb3JkaW5hdGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaAppbmRleCA4NzUx
Y2FjNDc0MjE3YTE1NzVhNjdhYWNkOWU5NDQ1NDc0NzRkZDc5Li41N2JkZmQxYTg2YWEwZGNhMmFk
M2JhODkyMThhNzc1NWQ0MzY4MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMuaApAQCAtNDYsMTIg
KzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24ubGF0aXR1ZGU7IH0KICAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wb3NpdGlvbi5sb25naXR1ZGU7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGFsdGl0
dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1
ZGU7IH0KICAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmFj
Y3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91
YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFkaW5nOyB9Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uc3BlZWQ7
IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uLmZsb29yTGV2ZWw7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVB
Y2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBm
bG9vckxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5mbG9vckxldmVsOyB9CiAgICAg
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uQ29vcmRpbmF0ZXMoR2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGEmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25EYXRhLmgKaW5kZXggNmFiYzIxMzUw
Yjg1NjVmZjRlNzZiZDAzODJhZDY1Mjc3MjAzYWIwYi4uOThkMzgyY2I5ZTBkODJiNmVmNGMxZjJm
NTE3YWQxOWJmN2Q5OWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEuaApAQCAtNTgsMTEgKzU4
LDExIEBAIHB1YmxpYzoKICAgICBkb3VibGUgbG9uZ2l0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogICAgIGRvdWJsZSBhY2N1cmFjeSB7IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKIAotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5OwotICAg
IE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZzsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkOwot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHNwZWVkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmbG9vckxldmVsOwogCiAg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggMGVkNDI3Yjc0MDA5ZjFkOTUzNjVkY2UxMzY4
ZjY3ODFkODE2ZTZhNC4uOWU2ZGJiOGFmYWM3NDJmNGMyNDhhZjU5NTlhYjE4Nzc3ODVmM2MwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgK
QEAgLTM5LDEyICszOSwxMiBAQCBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVk
SW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKICAgICBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5n
PiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHQ+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogCkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBB
cHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhp
Z2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAKLSAgICBPcHRpb25hbDxzaXpl
X3Q+IGxlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOwogICAgIGRlY29k
ZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdo
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShoaWdobGlnaHQuZGF0YSgpLCBoaWdobGlnaHQuc2l6ZSgpLCAxKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFN0cmluZz4+
IHRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IHRleHQ7CiAg
ICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDI5NWM1OGZhNmVlYTA5ZTViNzQ2ZDYy
ZWMzYTFjNTE2NTU5YWZlMTAuLjRmNGM4NmE1NzFlNjE5YmJmODU4MDg5NTNiNWViYzViOWY5MTQ1
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBidWZm
ZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNv
ZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC02NCwyNCArNjQsMjQgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRo
Q29tcG9uZW50OjplbmNvZGUoRW4KICAgICBlbmNvZGVyIDw8IHBhdGhJbmRleDsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2Rl
UGF0aENvbXBvbmVudD4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYg
KCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8U3RyaW5nPiBub2RlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7
CiAgICAgZGVjb2RlciA+PiBub2RlTmFtZTsKICAgICBpZiAoIW5vZGVOYW1lKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dERhdGE7CiAgICAgZGVjb2RlciA+PiB0ZXh0RGF0
YTsKICAgICBpZiAoIXRleHREYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBwYXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRo
SW5kZXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05OCwyOSArOTgsMjkgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IG1fZW5kT2Zmc2V0OwogfQog
Ci10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAg
ZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKICAgICBkZWNvZGVyID4+IHN0YXJ0
Q29udGFpbmVyOwogICAgIGlmICghc3RhcnRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBzdGFydE9m
ZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CiAgICAgZGVjb2RlciA+PiBlbmRDb250YWluZXI7
CiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVu
ZE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5k
ZXggODlmOGNmNzQ1NzY2MjZmYmY4NjUwMWI5MWE1ZmQ4MmEwY2FkYmU1MS4uMWRhOTRlNjU4ZDNi
M2RkZGQwZjI0MzVkMjc1MWQzNTQwYjA4NzllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
IHsKIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBI
aWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1
Y3QgTm9kZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAg
ICAgU3RyaW5nIG5vZGVOYW1lOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
IAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxO
b2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29k
ZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQ
YXRoQ29tcG9uZW50PjsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAogICAg
IFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5j
cHAKaW5kZXggYWIzN2RkMjI4NTY5MjVmOWRkMTQ5M2EwYTc3ODAzOThjMDAxNDAyNy4uNmZiZTBi
MTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0M2VkMDM1NzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAg
LTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgUmVmUHRyPE5vZGU+IGZpbmROb2RlKGNvbnN0IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGgmIHBhdGgsIERvY3VtZQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5SWRlbnRp
ZnlpbmdTdGFydEFuZEVuZFBvc2l0aW9ucyhjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmIHJh
bmdlLCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gZmluZFJhbmdlQnlJZGVudGlmeWluZ1N0YXJ0QW5kRW5kUG9zaXRpb25zKGNvbnN0IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRv
IHN0YXJ0Q29udGFpbmVyID0gZmluZE5vZGUocmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgZG9jdW1l
bnQpOwogICAgIGlmICghc3RhcnRDb250YWluZXIpCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFuZ2VCeUlkZW50aWZ5aW5nU3RhcnRBbmRFbmRQ
b3NpdGlvbnMoY29uc3QgQXAKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBlbmQp
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5U2VhcmNoaW5n
VGV4dChjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmIHJhbmdlLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlQnlTZWFyY2hp
bmdUZXh0KGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaWRlbnRpZmllcnNJblN0YXJ0UGF0aDsKICAg
ICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpIHsKQEAgLTE2
MCw3ICsxNjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5U2Vh
cmNoaW5nVGV4dChjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdAogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlKGNvbnN0
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFuZ2UoY29uc3QgQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhJiByYW5nZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGlmIChhdXRvIGZv
dW5kUmFuZ2UgPSBmaW5kUmFuZ2VCeUlkZW50aWZ5aW5nU3RhcnRBbmRFbmRQb3NpdGlvbnMocmFu
Z2UsIGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIGZvdW5kUmFuZ2U7CkBAIC0yMjIsNyArMjIy
LDcgQEAgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKSA9IGRlZmF1
bHQ7CiB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0
aWNSYW5nZT4mJiByYW5nZSkKIHsKICAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdobGlnaHRS
YW5nZURhdGEocmFuZ2UpOwotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gdGV4dDsKIAogICAgIGlmICghZGF0YS50ZXh0KCkuaXNFbXB0eSgpKQog
ICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggN2ZiZmNhOTkxMGVk
ZDdhYjgzM2Q1N2RkODRjMGQyZjk0ZDhjNGM3Ni4uYmNjZjg3ZjhhNGFlOGZmZjRhYzFjZjQ0NDJh
MzI5Mjg1MWVlOGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgog
ICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTW9ub3RvbmljVGltZSBtX3Rp
bWVBdExhc3RSYW5nZVNlYXJjaDsKICAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBt
X3VucmVzdG9yZWRIaWdobGlnaHRzOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gbV91bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQ7CiB9OwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdo
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKaW5kZXgg
MzQ0NjZhM2MwNDQwMmM4MTdkM2M3ZDkzOWJjODlkOTI3MjNkOGVkMC4uMDA1MmMzZmJiNTEzYTJk
MzgzODUwMjg5ZjYyZGRlMzE0MGVjM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvSGlnaGxpZ2h0LmgKQEAgLTQ4LDggKzQ4LDggQEAgc3RydWN0IEhpZ2hsaWdodFJh
bmdlRGF0YSA6IFJlZkNvdW50ZWQ8SGlnaGxpZ2h0UmFuZ2VEYXRhPiwgcHVibGljIENhbk1ha2VX
ZWFrUHQKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlnaGxpZ2h0UmFuZ2VEYXRhKFdU
Rk1vdmUocmFuZ2UpKSk7CiAgICAgfQogICAgIFJlZjxTdGF0aWNSYW5nZT4gcmFuZ2U7Ci0gICAg
T3B0aW9uYWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRpb247Ci0gICAgT3B0aW9uYWw8UG9zaXRpb24+
IGVuZFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbj4gZW5kUG9zaXRpb247CiB9OwogCiBjbGFzcyBI
aWdobGlnaHQgOiBwdWJsaWMgUmVmQ291bnRlZDxIaWdobGlnaHQ+IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGUwNjVhNDg0ODNlZjhh
ZjUwOTMwMWYxMmIxNGQ5OThlYmZlMjEwMGYuLjU4ZDBjZGY2ODdjYzIzMjEyYTFjODllNTg4Yzk0
MjBiYjM1YTdlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjbGVhcldyYXBw
ZXJzKCkKICAgICBtX3ZhbHVlV3JhcHBlci5jbGVhcigpOwogfQogCi1PcHRpb25hbDxJREJHZXRS
ZXN1bHQ+IElEQkN1cnNvcjo6aXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBj
b3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpCitzdGQ6Om9wdGlvbmFsPElEQkdl
dFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVk
IGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCkKIHsKICAgICB1bnNpZ25lZCBz
dGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOwogICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVk
UmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJh
dGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApp
bmRleCBjZjllZTE3MzY5MmRlYjM0MDE1YjZkMjAxYWU4OTEwNjY5MWUwZjIzLi40ZjZkM2UxZjMz
NDEwNzkyMWRiNTU0MjBlZGU3ZmUyYTdlMDBhYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
SURCS2V5KiBrZXkoKSB7IHJldHVybiBtX2tleS5nZXQoKTsgfTsKICAgICBJREJLZXkqIHByaW1h
cnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXkuZ2V0KCk7IH07CiAgICAgSURCVmFsdWUgdmFs
dWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9OwotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+
JiBwcmltYXJ5S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfTsKKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiBwcmltYXJ5S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0
aDsgfTsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBrZXlXcmFwcGVyKCkgeyByZXR1cm4g
bV9rZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgcHJpbWFyeUtleVdy
YXBwZXIoKSB7IHJldHVybiBtX3ByaW1hcnlLZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdCYgdmFsdWVXcmFwcGVyKCkgeyByZXR1cm4gbV92YWx1ZVdyYXBwZXI7IH0KQEAg
LTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yV2l0
aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIE9wdGlvbmFsPElEQkdldFJl
c3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0
X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAgIHN0ZDo6b3B0aW9uYWw8SURCR2V0UmVzdWx0
PiBpdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBs
YXN0V3JpdGVPcGVyYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhclByZWZldGNoZWRSZWNvcmRzKCk7
CiAKIHByb3RlY3RlZDoKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIElEQktleURh
dGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKICAgICBJREJW
YWx1ZSBtX3ZhbHVlOwotICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5UGF0aDsKKyAgICBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5UGF0aDsKIAogICAgIEpTVmFsdWVJbldyYXBw
ZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9wcmlt
YXJ5S2V5V3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCmluZGV4IGE0OWRhNzdjMzgxNmQ4MmRmYjY2Y2IwOGI0MTkwMmM2N2NiMGJmOTMu
LjMzOGYzMGU2N2U0OTk2ZjJjN2RlMTEyZjdkN2FhMTRiM2RjNDYxZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewotICAgICAgICBPcHRpb25h
bDxJREJLZXlQYXRoPiBrZXlQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
IGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5oCmluZGV4IGMyZjE3MDc0ZThlYmJlYTY1ODc0NjJlMThkNjBjZjkwNDgwMmVkYzAuLjYy
YTAwOTBkYTA2M2NiNjJhMDNhNTJkNjVhNzMwNTdhZTJiMzcyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGly
ZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9y
aWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRp
Zmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7
CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsK
QEAgLTExOCwxOSArMTE4LDE5IEBAIHZvaWQgSURCRGF0YWJhc2VJZGVudGlmaWVyOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVy
PiBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFN0cmluZz4gZGF0YWJhc2VOYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBkYXRhYmFzZU5hbWU7CiAgICAgZGVjb2RlciA+PiBkYXRhYmFzZU5hbWU7CiAgICAgaWYgKCFk
YXRhYmFzZU5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4g
b3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2luOwogICAgIGlmICghb3JpZ2luKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKICAgICBkZWNvZGVyID4+IGlz
VHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2llbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5jcHAKaW5kZXggZDJm
MjY4MDg4NjY2OGFiMzIyMzZlY2FjNjViYjRlY2Q1OTNiODU0Mi4uYjE0ZDZjMmU0OGU1YmIzMGRl
OGY3YWE3NzRmMmZmMTVjMDlhN2U0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25S
ZXF1ZXN0LmNwcApAQCAtNTAsNyArNTAsNyBAQCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVx
dWVzdDo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QoU2NyaXB0RXhlY3V0aQogICAg
IHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25S
ZXF1ZXN0Ojpjb21wbGV0ZShPcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
bj4+JiYgZGF0YWJhc2VzKQordm9pZCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdDo6
Y29tcGxldGUoc3RkOjpvcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+
JiYgZGF0YWJhc2VzKQogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFk
TG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
UmVxdWVzdC5oCmluZGV4IDlhN2M1NjE5MWY5ZTkwYTM2YWVkZTE1ZTQwYjUwOWRjYWZhMGFiYTku
LjZkYWRjMzkzNzRmZDUyOTNjYzE0MDA2NjMxODc1M2Y4OWUwOWJmODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25S
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBJREJDb25u
ZWN0aW9uUHJveHk7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uUmVxdWVzdD4sIHB1YmxpYyBJREJBY3RpdmVET01PYmplY3QgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Qp
OwogcHVibGljOgotICAgIHVzaW5nIEluZm9DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0aW9u
YWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT47CisgICAgdXNpbmcgSW5m
b0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPj4mJik+OwogCiAgICAgc3RhdGljIFJlZjxJREJEYXRhYmFzZU5hbWVB
bmRWZXJzaW9uUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIEluZm9DYWxsYmFjayYmKTsKIApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2VO
YW1lQW5kVmVyc2lvblJlcXVlc3Q+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+OjpkZXJlZjsKIAotICAgIHZvaWQg
Y29tcGxldGUoT3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsK
KyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+PiYmKTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkmLCBJbmZvQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDA1NDRlZjA2NmIzNGE1ZTFlZWRjOTUzODU2NGJj
OGE3NmYyMTM0MTcuLjU2YzE3MjdkZGI4MjEwZDEzNjk3NzViYmMzOTVlZjdmOGZiNjM5OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIElEQkZhY3Rvcnk6OklEQkZhY3RvcnkoSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSkKIAogSURCRmFjdG9yeTo6fklEQkZhY3Rvcnko
KSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFj
dG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQk9w
ZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lv
bikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRmFjdG9yeTo6b3BlbiIpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDNmN2E1
MjNjM2NkNzBhNWU3ZTUyYjNjMzYxZDU4NzQxYzM4M2M5ZmYuLjYyZTkxYWM0YTAwNGVlYTg1ZDU4
ZTViYTBkZjY2OTdlODFmMzkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICB1aW50
NjRfdCB2ZXJzaW9uOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVx
dWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
T3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVu
REJSZXF1ZXN0Pj4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKTsKICAgICBFeGNlcHRpb25PcjxS
ZWY8SURCT3BlbkRCUmVxdWVzdD4+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgRXhjZXB0aW9uT3I8c2hvcnQ+IGNtcChK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGZpcnN0LCBKU0M6OkpTVmFsdWUgc2Vj
b25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdl
dEFsbFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxs
UmVzdWx0LmgKaW5kZXggZjdlYjdjNjY3MGRiNjcxZDNlZTEwNTY5NDFlOGY5NmUyMjRlZjJiZS4u
OWEzOWE2NDdlMjVkY2Q1MzFkZjc0ZTEzNjdhZGRhYTEwMTQyNjY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRBbGxSZXN1bHQoSW5k
ZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQorICAgIElEQkdldEFsbFJlc3VsdChJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKICAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICB7CkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICBJREJHZXRBbGxSZXN1bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAK
ICAgICBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIGNvbnN0IFZlY3RvcjxJREJL
ZXlEYXRhPiYga2V5cygpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVl
cygpIGNvbnN0OwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlIG1fdHlwZSB7IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cyB9OwogICAgIFZl
Y3RvcjxJREJLZXlEYXRhPiBtX2tleXM7CiAgICAgVmVjdG9yPElEQlZhbHVlPiBtX3ZhbHVlczsK
LSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiBtX2tleVBhdGg7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAppbmRleCAx
ZmUyOWZmMTAyYmIwZTg3NWRkNTgyNzNhZmMzMGI0OTRlZjNmNWE0Li44Yjk5YjdmYTE1MjdhNmY5
NDhiMzllMjg3YjY4MDRjNjI4NWQ4YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAtNTQsMjEgKzU0LDIxIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBidWZmZXIsIGNvbnN0IE9wdGlvbmFsPElEQktl
eVBhdGg+JiBrZXlQYXRoKQorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogICAgICAgICA6IG1fdmFsdWUoYnVmZmVyKQogICAg
ICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQogICAgICAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQog
ICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0
YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgp
CisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIElEQlZhbHVlJiYg
dmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiAgICAgICAg
IDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkK
ICAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICB7CiAgICAgfQogCi0gICAgSURCR2V0
UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQktleURhdGEmIHByaW1h
cnlLZXlEYXRhLCBJREJWYWx1ZSYmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKKyAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiAgICAgICAgIDogbV92YWx1ZShXVEZN
b3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKICAgICAgICAgLCBtX3By
aW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29u
c3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgsIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+
JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURCVmFsdWUmJiB2
YWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCwgVmVjdG9yPElE
QkN1cnNvclJlY29yZD4mJiBwcmVmZXRlY2hlZFJlY29yZHMpCiAgICAgICAgIDogbV92YWx1ZShX
VEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKICAgICAgICAgLCBt
X3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSURCVmFsdWUmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQog
ICAgIGNvbnN0IElEQktleURhdGEmIGtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX2tleURhdGE7
IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWFyeUtleURhdGE7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAg
ICBjb25zdCBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiYgcHJlZmV0Y2hlZFJlY29yZHMoKSBjb25z
dCB7IHJldHVybiBtX3ByZWZldGNoZWRSZWNvcmRzOyB9CiAgICAgYm9vbCBpc0RlZmluZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzRGVmaW5lZDsgfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0
ZToKICAgICBJREJWYWx1ZSBtX3ZhbHVlOwogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwogICAg
IElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBt
X2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiAgICAg
VmVjdG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVkUmVjb3JkczsKICAgICBib29sIG1f
aXNEZWZpbmVkIHsgdHJ1ZSB9OwogfTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHZvaWQgSURCR2V0
UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CiBib29sIElEQkdldFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQkdl
dFJlc3VsdCYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPElEQktleURhdGE+IGtleURhdGE7Cisg
ICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBrZXlEYXRhOwogICAgIGRlY29kZXIgPj4ga2V5
RGF0YTsKICAgICBpZiAoIWtleURhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1
bHQubV9rZXlEYXRhID0gV1RGTW92ZSgqa2V5RGF0YSk7CiAKLSAgICBPcHRpb25hbDxJREJLZXlE
YXRhPiBwcmltYXJ5S2V5RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+IHByaW1h
cnlLZXlEYXRhOwogICAgIGRlY29kZXIgPj4gcHJpbWFyeUtleURhdGE7CiAgICAgaWYgKCFwcmlt
YXJ5S2V5RGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQyLDEzICsxNDIsMTMgQEAg
Ym9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJHZXRSZXN1bHQm
IHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzRGVmaW5lZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPElEQlZhbHVlPiB2YWx1ZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPElEQlZhbHVlPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwog
ICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQubV92YWx1
ZSA9IFdURk1vdmUoKnZhbHVlKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxJREJDdXJzb3JSZWNv
cmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJDdXJz
b3JSZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKICAgICBkZWNvZGVyID4+IHByZWZldGNoZWRS
ZWNvcmRzOwogICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRl
eCBjMTk5OWU1OTA3OTgxMGRkZDdmNDYyMDgxNzg0MzgwM2JmMDA1Y2I3Li45YTBhNWJmOWNkYTBh
ZWUxMDg4NWVkMjBlYTg4ZThkODAyYzU5ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4ZWNT
dGF0ZSwgRXhjZXAKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVxdWVzdEdldEtleShleGVjU3Rh
dGUsICp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIE9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRl
eDo6ZG9HZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEFs
bCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBA
IC0zNTYsMTQgKzM1NiwxNCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
Ojpkb0dldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpbwogICAgIHJldHVybiBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVj
U3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFs
dWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6
OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYg
cmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8
SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewog
ICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJh
bmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAg
IHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5
XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRl
LCBrZXkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlCiAgICAg
fSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxs
S2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQs
IFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5j
dGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsS2V5
cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0
U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zOTMs
MTQgKzM5MywxNCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dl
dEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgTwogICAgIHJldHVybiBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUs
ICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291
bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxL
ZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5n
ZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8
SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewog
ICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RGTW92
ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNHbG9iYWxPYmpl
Y3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNHbG9iYWxP
YmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KQogewogICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRl
PSZleGVjU3RhdGUsIGtleV0oKSB7CiAgICAgICAgIGF1dG8gb25seVJlc3VsdCA9IElEQktleVJh
bmdlOjpvbmx5KCpzdGF0ZSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5oCmluZGV4IGMxZjlhNjA3MzI2YzJiYTEwMGMyOTA1ZjEzZDU5OTEyOWU4Mjg3
MGQuLmViYzZkYTQ1Yjc0NjM3ZWI0MDRjMDU5OGVlOGM4ZDU1NDYwMDY0ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtNjksMTAgKzY5LDEwIEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwot
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
UmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOwogCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9pbmZvOyB9CiAKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25P
cjxJREJLZXlSYW5nZURhdGE+KTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
T3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbktleUN1cnNvcihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYp
OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0
QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYp
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleURhdGEuaAppbmRleCAwNDNlYzZiNmE3ZmI3ZjRlNjBkNjQ1Y2Q5ZDVmYzdhNWMx
NDcwM2ZlLi5lODZjNDYwZTRhNzU2MDE2ZTEzNGYyNzg1ZmZjYWYyZTRhMjkzMzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE51bWJlclZhbHVlKGRv
dWJsZSk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPElE
QktleURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICAK
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvZ2dpbmdTdHJp
bmcoKSBjb25zdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIElEQktleURhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPElEQktleURhdGE+IElEQktleURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGtleURhdGEubV9pc051bGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5oCmluZGV4IGJiMGVhZDUyYzMyMWQ3OTA2MjFiZTIyZTRlN2Q2NjBhN2ZlNzU4
NzYuLmIxYjNkYmJlYjA5ODZiNWY1MGViYmFjN2VmMjExYmEyOWYzNDZiZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgZW51bSBjbGFzcyBJREJLZXlQYXRoUGFyc2VFcnJvciB7CiAKIHZvaWQgSURCUGFyc2VLZXlQ
YXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0aFBhcnNlRXJyb3Im
KTsKIElEQktleVBhdGggaXNvbGF0ZWRDb3B5KGNvbnN0IElEQktleVBhdGgmKTsKLWlubGluZSBP
cHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENvcHkoY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0
aD4mIHZhcmlhbnQpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENv
cHkoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgdmFyaWFudCkKIHsKICAgICBpZiAo
IXZhcmlhbnQpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCmluZGV4IGYzMDVjMGVmODg2NzllODMy
OWY3NTgwZmU3MTk4YmMzMWE0ZTBkYzQuLmNmNjA1MDIxNDQzMTBlNzFiODZjMzRjZWQ2Y2RhNjA5
MWY3YmIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlRGF0YS5oCkBAIC0xMDUsMTMgKzEwNSwxMyBAQCBib29sIElEQktleVJhbmdlRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCiAg
ICAgaWYgKGtleVJhbmdlLmlzTnVsbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBPcHRp
b25hbDxJREJLZXlEYXRhPiB1cHBlcktleTsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+
IHVwcGVyS2V5OwogICAgIGRlY29kZXIgPj4gdXBwZXJLZXk7CiAgICAgaWYgKCF1cHBlcktleSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGtleVJhbmdlLnVwcGVyS2V5ID0gV1RGTW92ZSgq
dXBwZXJLZXkpOwogICAgIAotICAgIE9wdGlvbmFsPElEQktleURhdGE+IGxvd2VyS2V5OworICAg
IHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gbG93ZXJLZXk7CiAgICAgZGVjb2RlciA+PiBsb3dl
cktleTsKICAgICBpZiAoIWxvd2VyS2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggZTBkZDlhMDhkNWNjYjk1ZWY3ZDM1YmMyZjhjYTI1NGQzYzRiYzBlMC4uOGI2MzczM2E4N2Q2
ZmRkZGFmNTE1ZTg4ZmIzY2ZmYTNhODFhMjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICByZXR1cm4geyB9OwogfQogCi1jb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYg
SURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAorY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAogewogICAgIEFTU0VSVChj
YW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwpAQCAt
NTk2LDcgKzU5Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmRvQ291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwKICAgICByZXR1cm4gbV90cmFu
c2FjdGlvbi5yZXF1ZXN0Q291bnQoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFs
T2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGwiKTsKICAgICBBU1NF
UlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTYxNSwxNCArNjE1LDE0IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFsT2Jq
ZWN0JiBleGVjU3RhdGUsCiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4
ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0
YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbChleGVj
U3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVy
biByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5
LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1
ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dl
dEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAg
ICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpAQCAt
NjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKCiAgICAgfSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyhK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikK
K0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5
cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5
cyIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1f
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtNjUyLDE0ICs2NTIs
MTQgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRB
bGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3QKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5y
ZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdl
UG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoSlNHbG9i
YWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBPcHRpb25h
bDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0b3JlOjpnZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJL
ZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAg
cmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJh
bmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9i
amVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQpCiB7CiAgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50
LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0g
SURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggNDU0ODIyYmM1MWYxNDEwMDc0
ZmViNGY5NzJjODc0NWI2OTZjYTg1ZS4uNDM3YjA0NWQ1MGU3MDhiYjMyOTM2MjkzNzU4NGE3YmI1
MmFhNWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWUoY29uc3QgU3Ry
aW5nJik7Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7CiAg
ICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKQEAg
LTkxLDEwICs5MSwxMCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxL
ZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IHB1
dEZvckN1cnNvclVwZGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQ
dHI8SURCS2V5Pik7CiAKQEAgLTExOCw4ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFdURjo6
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogICAgIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBk
b09wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkN1cnNvckRpcmVjdGlvbiwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKLSAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJf
dD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4o
KT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Lgog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA0ODlkNzll
MWYxZWI0OTNiMDJjNTk1YzQxMzU5OTFjNzYzMTVkNzk4Li4zMWVjNjkyNDlmMmMwNzE4YWRkZjZl
Y2YwZjM4N2FkYTMyOGQ3NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JiBjdXJzb3JXcmFwcGVyKCkgeyByZXR1cm4gbV9jdXJzb3JXcmFwcGVyOyB9
CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxJREJPYmplY3RTdG9yZT4sIFJl
ZlB0cjxJREJJbmRleD4sIFJlZlB0cjxJREJDdXJzb3I+PjsKLSAgICBjb25zdCBPcHRpb25hbDxT
b3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U291cmNlPiYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0K
IAogICAgIEV4Y2VwdGlvbk9yPERPTUV4Y2VwdGlvbio+IGVycm9yKCkgY29uc3Q7CiAKQEAgLTE4
NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fY3VycmVudFRyYW5zYWN0aW9u
T3BlcmF0aW9uSUQgeyAwIH07CiAKICAgICBSZXN1bHQgbV9yZXN1bHQ7Ci0gICAgT3B0aW9uYWw8
U291cmNlPiBtX3NvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZT4gbV9zb3VyY2U7CiAK
ICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVmPElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2Nvbm5lY3Rpb25Qcm94eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA5OThh
MWZjOWVhMmNmNTVhNjcwMmQ1MTA4MzNmNDUyODY0MTE2YWJhLi4wMjZjNjFkYzMwZmZkNjBhYmVk
ODJkOTRjYmU3MWZiZTA5MTUxM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IElEQlJlc3UKICAgICBjb21wbGV0ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVz
dWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0
YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVj
dFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUm
IG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhl
ZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKQEAgLTkxNSw3ICs5
MTUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9iagogICAgIHJldHVybiByZXF1ZXN0OwogfQog
Ci1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29y
ZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxU
eXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRBbGxJbmRleFJlY29yZHMiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA2NWJj
NDUzYmQ4NmFiZTZiMThjZGMwMGIzNGVjNWYxNWQ3MWZiNTgwLi44MDExNDI2ODhmNjE5OTkxNTVj
Y2VhYmMzMzVmMjE0NTllYzM5Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAK
ICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9yQWRkKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBJREJPYmplY3RTdG9yZSYsIFJlZlB0cjxJREJLZXk+JiYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdEdldFJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3Rv
cmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVl
c3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVj
dFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBP
cHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0
QWxsSW5kZXhSZWNvcmRzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJJbmRleCYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVj
b3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJ
bmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElE
Qk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCmluZGV4IDJhNjY0
MzJiNWJkOTcxOTJhMWFiNGZmNjA5MGMwYmU5NWQyM2JkNzQuLmY0MDBkODViNzA3ODFmNDMyZWM5
ZWY0OGJjYzg5OGEwYzcwOGIzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmFsdWUuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JGaWxlUGF0aHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JGaWxlUGF0aHM7
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SURCVmFs
dWU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SURCVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogcHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJREJWYWx1ZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIElEQlZhbHVlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX2RhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCBjZDJlNjBhYmU2OWMzY2Q5MmZhNzc1
YTNiZjYyODRmODVhNDM4ZDZjLi5hYzA0YTZhZWE2ODlmMmE4NGMwYTVkOGY3NGZmMzNhMDdlZjNm
YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAgICAgIHVpbnQ2NF90IG9sZFZlcnNpb24geyAw
IH07Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVm
PElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpO
bykKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlRXZl
bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB1aW50NjRfdCBvbGRWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vbGRWZXJzaW9uOyB9Ci0gICAgT3B0aW9uYWw8dWludDY0
X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1ZlcnNpb247IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdWZXJz
aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24s
IHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CkBAIC02
OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9yZXF1
ZXN0SWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBtX29sZFZlcnNpb247Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IG1fbmV3VmVyc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX25l
d1ZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCmluZGV4IGM1NjQ2MjhkYzE0NjkwZDI2ZTFlMDkzNWJjMmE5NDk3Y2I4YTgyZWUu
LjQ2ZWRkYTlhOGMxMjAxNjIyMzAyNmY1ZThiMTM5MDU1YTYwOTA0ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uUHJveHkuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcygpCiAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7
CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRnVuY3Rpb248dm9pZChPcHRp
b25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBDbGllbnRPcmlnaW4gb3JpZ2luIHsgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRh
KCksIGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH07CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCB2
b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zLCByZXF1
ZXN0LT5yZXNvdXJjZUlkZW50aWZpZXIoKSwgb3JpZ2luKTsKIH0KIAotdm9pZCBJREJDb25uZWN0
aW9uUHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxWZWN0b3I8SURCRGF0
YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYgZGF0YWJhc2VzKQordm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uPj4mJiBkYXRhYmFzZXMpCiB7CiAgICAgUmVmUHRyPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0PiByZXF1ZXN0OwogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuaAppbmRleCBiYzQzNzNmYzc1OTdlMDMyYWJiNDBiMDI5NDg3ZDY3YzVlOGQ5MDJkLi5m
ZGMzYWQzNmY5YjNkZTIyOWM0ZDViOTkyOTU0NjRiZjA3NDc1ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCk7CiAg
ICAgdm9pZCBkZXJlZigpOwogCi0gICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8VmVjdG9y
PElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKT4mJik7Ci0gICAgdm9pZCBkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgT3B0
aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKKyAgICB2b2lkIGdl
dEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRnVu
Y3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
Pj4mJik+JiYpOworICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5l
Y3Rpb24oSURCRGF0YWJhc2UmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oSURCRGF0YWJhc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5Mjgw
N2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRlLi45MjgzMzg4YzRiYjRlY2FlNjEwYzdlOGU2
Yjg5MjVlNDc5YjVlNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGws
IFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIo
KTsKIApAQCAtNjAsNyArNjAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogICAgIHJldHVybiBl
bmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwogfQogCi1ib29sIGRlc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4m
IHJlc3VsdCkKK2Jvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiByZXN1bHQpCiB7CiAgICAg
aWYgKCFkYXRhIHx8ICFzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaAppbmRleCBmNWY2NzQ0MmUzNjc4YTIwYWViNThmZWFjOWFjMzlmNzhjNWUxZDc5Li42NWM0
YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlE
YXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdGg+Jik7Ci1ib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBPcHRpb25hbDxJREJLZXlQYXRoPiYp
OworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7Citib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
SURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKaW5k
ZXggNWMxNWJmYWIyNzExNTVlYjA0NWQ1YjYwZWM5Yjg2NjJhNmQzMGFlMi4uNDUxM2IwZDM0Mjhk
NTkwYTY2NGM1NGE0OTVjNDcyMjk5MGVlMzdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdWludDY0X3QgTWVtb3J5SW5kZXg6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBpblJhbmdlKQogICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBNZW1v
cnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0
YSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwg
SURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit2b2lkIE1lbW9yeUluZGV4OjpnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJl
c3VsdCYgcmVzdWx0KSBjb25zdAogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6
Z2V0QWxsUmVjb3JkcyIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCmluZGV4IGIxNDliNmI5ODIzN2M2MTA2MzgwMGI5
YzJhOTE4YjExYjM4YmEwYzAuLjMxNWM0ZWZjM2UwZjZmOWY2ZTQ3NDE5NGMxY2E4MThkYTQ0MDk0
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIElEQkdldFJl
c3VsdCBnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAgICAgdWludDY0X3QgY291bnRGb3JLZXlSYW5n
ZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6Okdl
dEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwg
SW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKIAogICAgIElE
QkVycm9yIHB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleEtleSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCAwM2MzMTFkZmY3YjJjMjQzNDlkMjdjYTg2
MzQ3ZWM5ZGJmZGU3ZTliLi5jMmU5ZWEyNDYxN2E4OGU5ZjRiOGYwMTBkN2NlMDNlYjAwMWViMDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5nZShjb25zdCBJ
REJLZXlSYW5nZURhdGEmCiAgICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KGtleSk7CiB9
CiAKLXZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAordm9pZCBN
ZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0
QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICByZXN1
bHQgPSB7IHR5cGUsIG1faW5mby5rZXlQYXRoKCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApp
bmRleCA0MzQ5OWQ1YmNiZWM2MjZhZDExYzQ1ODJiNmFiNjY0ZGEyNmRkMDE4Li41Njk3NmRlZDEy
NzE2YjhiMzczMjA2MGM1YzU5MGFiOTMzYTczNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApA
QCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgSURCR2V0UmVzdWx0IGluZGV4VmFsdWVGb3JL
ZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRU
eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBjb25zdDsKICAgICB1aW50NjRfdCBjb3VudEZv
cktleVJhbmdlKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JikgY29uc3Q7CiAKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElEQkdl
dEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRB
bGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZUN1cnNvci5oCmluZGV4IDAyODUzNTYzZGUxNjBlNDVlN2RiNDVkYWMxMTE1MjY4
ZjA1ODhlYjMuLmViY2VjODI4MTdhZDFlZTA3ZTM5OTk5ZDNkMjY1OTA1YjA4M2FiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZUN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6
CiAKICAgICBJREJLZXlSYW5nZURhdGEgbV9yZW1haW5pbmdSYW5nZTsKIAotICAgIE9wdGlvbmFs
PElEQktleURhdGFTZXQ6Oml0ZXJhdG9yPiBtX2l0ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8
SURCS2V5RGF0YVNldDo6aXRlcmF0b3I+IG1faXRlcmF0b3I7CiAKICAgICBJREJLZXlEYXRhIG1f
Y3VycmVudFBvc2l0aW9uS2V5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggODU0N2JhZTdhZjQ1ZmU2M2ZjOTFmYmVkNTAxNjYyNzBmZDk2NjA2ZS4uODgzNGQyYWFj
NmU3NTQzNzAwMTE2ZTZhMjRjODBmMWNlZmM3MWNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAog
ICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLCAwLCAwKTsKIH0KIAotT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCkKK3N0ZDo6
b3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVW
YWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAg
ICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJh
Y3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAgICAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSA9
IHNxbC0+Y29sdW1uVGV4dCgxKTsKICAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlclZpZXcg
PSBzcWwtPmNvbHVtbkJsb2JWaWV3KDIpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJREJLZXlQ
YXRoPiBvYmplY3RTdG9yZUtleVBhdGg7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aDsKICAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJ
REJLZXlQYXRoKGtleVBhdGhCdWZmZXJWaWV3LmRhdGEoKSwga2V5UGF0aEJ1ZmZlclZpZXcuc2l6
ZSgpLCBvYmplY3RTdG9yZUtleVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NTgsNyArODU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRh
YmFzZUkKICAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmNvbHVtbklu
dDY0KDIpOwogICAgICAgICAgICAgYXV0byBrZXlQYXRoQnVmZmVyVmlldyA9IHNxbC0+Y29sdW1u
QmxvYlZpZXcoMyk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IGluZGV4S2V5
UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRo
OwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZlclZp
ZXcuZGF0YSgpLCBrZXlQYXRoQnVmZmVyVmlldy5zaXplKCksIGluZGV4S2V5UGF0aCkpIHsKICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleHRyYWN0IGtleSBwYXRoIGZyb20g
ZGF0YWJhc2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzNyw3ICs5
MzcsNyBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoKCkg
Y29uc3QKICAgICByZXR1cm4gZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShtX2RhdGFiYXNl
RGlyZWN0b3J5KTsKIH0KIAotT3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZVBhdGgpCitzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21G
aWxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogewogICAgIFNRTGl0ZURhdGFiYXNlIGRh
dGFiYXNlOwogICAgIGlmICghZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGVmYzhjNTRhMmYyYjM1MjE1OTVmZjc4ZjUwODMy
MzBhZmE2ZTMxOC4uNGUxYTQ4ZjEwOWE5ODRiMWE2YTNkYmIxYmEzZTM1Y2I3ODJhNDZlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJh
c2VEaXJlY3Rvcnk7IH07CiAgICAgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4g
ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIApA
QCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRl
eFJlY29yZHNJbmRleCgpOwogICAgIElEQkVycm9yIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVj
b3JkSW5kZXgoKTsKICAgICBJREJFcnJvciBlbnN1cmVWYWxpZEJsb2JUYWJsZXMoKTsKLSAgICBP
cHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBlbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxl
KCk7CisgICAgc3RkOjpvcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBlbnN1cmVWYWxpZE9iamVj
dFN0b3JlSW5mb1RhYmxlKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4g
Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggNGNlMmJmMjU4YTNlYmU3ZmQ4NDI4YWY0NzdiZTQyMDk0
ODk1NTc2YS4uODkzOGNjZmZkN2Y4MzM5NWM0ZWJkMDc3ZmExZmEwMzk4M2VmNWVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+U1FM
aXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRoaXMp
OwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRl
UHJlZmV0Y2hlZFJlY29yZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQordm9pZCBT
UUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hl
ZFJlY29yZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQogewogICAgIEFTU0VSVCgh
bV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggODgz
MGZlZGE5MmEzMWIxMzZjMTY3ZDM0MjM5MjJlOTUzNTRkMzUzMy4uZjc4NzkzMjY2NTY0NzA0ODkw
ZDMwYzBhMWYxZTJmMDEyY2NjZjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNzcsNyArNzcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyB7IE5vLCBZZXMgfTsK
LSAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktl
eVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVBy
ZWZldGNoZWRSZWNvcmRzOjpObyk7CisgICAgdm9pZCBjdXJyZW50RGF0YShJREJHZXRSZXN1bHQm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNo
ZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDhlZDZlODE2N2UxODVjYjcyNmFjNmNlODI5YmQx
NWQzMDg2NjdhZWMuLmU0NGFiNjMwMTcyMDM5Y2FmODVjNDlmZDk2ZmMwYjE2ZjExOGM4ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZGVu
dGlmaWVycygpOwogCiAgICAgdm9pZCBzZXRNYWluVGhyZWFkQWJvcnRSZXN1bHQoY29uc3QgSURC
RXJyb3ImIGVycm9yKSB7IG1fbWFpblRocmVhZEFib3J0UmVzdWx0ID0geyBlcnJvciB9OyB9Ci0g
ICAgY29uc3QgT3B0aW9uYWw8SURCRXJyb3I+JiBtYWluVGhyZWFkQWJvcnRSZXN1bHQoKSBjb25z
dCB7IHJldHVybiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCRXJyb3I+JiBtYWluVGhyZWFkQWJvcnRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X21haW5UaHJlYWRBYm9ydFJlc3VsdDsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8
dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyczsKIAotICAgIE9wdGlvbmFsPElEQkVy
cm9yPiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQkVycm9y
PiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkRhdGFiYXNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcAppbmRleCBiNGE2M2UyNGRiMjkxMGJmNzgwYjc0N2RkZDYz
MzZlMmI0NGQxZDIyLi5hYmFlYzZjNWNmYmNlZDlmYzY2ZWY1NGZkOGRmZDJjN2EyN2M5MTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0
YWJhc2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIElEQkRhdGFiYXNl
SW5mbzo6aGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvIElEQkRhdGFiYXNlSW5mbzo6Y3JlYXRl
TmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbyBJREJEYXRh
YmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAg
ICBJREJPYmplY3RTdG9yZUluZm8gaW5mbygrK21fbWF4T2JqZWN0U3RvcmVJRCwgbmFtZSwgV1RG
TW92ZShrZXlQYXRoKSwgYXV0b0luY3JlbWVudCk7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQo
aW5mby5pZGVudGlmaWVyKCksIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmluZGV4IDczNjMwOTdh
NWNlOGU5NmY5ZjI4MmE1MWExZTU1Zjg4ZmE0NThhNDIuLjcxYmNjZDA1ZmM0ZGY3MjQ1NjhhODM4
YWYzYTUwODMxMWQ0ZmY5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247
IH0KIAogICAgIGJvb2wgaGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsK
LSAgICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAg
IElEQk9iamVjdFN0b3JlSW5mbyBjcmVhdGVOZXdPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAg
ICB2b2lkIGFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7
CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZSh1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5m
b0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKaW5kZXggOWMxMGI0MzAxMzIyZDlk
NWYwZjRiNWU1NmQxNzk5ODRiMjhiOGM5Yi4uZjRjNzVlMGUyN2E2OTA2M2Q0NzZkY2NiOWRkNzhj
NWM4ZGRhNjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0z
NCw3ICszNCw3IEBAIHN0cnVjdCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsKICAgICB1aW50
NjRfdCB2ZXJzaW9uIHsgMCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb24+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBJREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKQEAgLTQ2LDcgKzQ2LDcgQEAg
dm9pZCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGluZm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDQ4YTA3Y2ZiMmNl
NDBlZGFhMTcxOWQwZTg4MzdiYThkYzgwNjNjYzIuLjJlMGE1N2FjNjY3YjYyY2M2Y2ZiZGJlNGNm
NmYxNTE4OTliMjE4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUlEQkVycm9yOjpJREJFcnJvcihPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBj
b2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitJREJFcnJvcjo6SURCRXJyb3Ioc3RkOjpvcHRp
b25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgOiBt
X2NvZGUoY29kZSkKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCA3NGZjYzc0
NzRmMGQ0OTBjMjcyYzgxY2MyNWE4NDY4Y2Q4NTVmNzgwLi5mZjE3Yzk4YTQxMTVkZTYyY2FjYzcw
YWQzMjUyYmQ2ZWRmMTFmMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIElEQkVycm9yIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBJREJFcnJvcihPcHRpb25hbDxFeGNlcHRpb25Db2RlPiA9IHN0ZDo6bnVsbG9wdCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBJREJFcnJvcihzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+ID0gc3RkOjpudWxsb3B0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0pOwogCiAgICAgc3RhdGljIElEQkVycm9yIHVzZXJE
ZWxldGVFcnJvcigpCiAgICAgewpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8RE9NRXhjZXB0aW9uPiB0b0RPTUV4Y2VwdGlvbigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RXhjZXB0aW9uQ29kZT4gY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQog
ICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgSURCRXJyb3ImKTsK
IAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2NvZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2NvZGU7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKaW5kZXggYzYxMjgzZGEyZTdlNjI4NzNi
YzhjZWY3ZjRkOTBjMDQ5NzQwYmE2MS4uZGY5MzFiYjRjMzE4ZTE2N2MzM2JkYWJlNzA5YzFmYTYy
ODJiNDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKQEAgLTM3LDcgKzM3LDcgQEAg
ZW51bSBjbGFzcyBHZXRBbGxUeXBlIDogdWludDhfdDsKIHN0cnVjdCBJREJHZXRBbGxSZWNvcmRz
RGF0YSB7CiAgICAgSURCS2V5UmFuZ2VEYXRhIGtleVJhbmdlRGF0YTsKICAgICBJbmRleGVkREI6
OkdldEFsbFR5cGUgZ2V0QWxsVHlwZTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gY291bnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQ7CiAgICAgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJz
b3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRl
cmF0ZUN1cnNvckRhdGEuaAppbmRleCBjNjlhYjQ1OTRiNmM1Yjc2YTIxY2M4MDI3YjJkZmQ4NGUz
MjBkNTk0Li4zZDAwN2IzNzljNTNhMGJmYzQ0ZGY2ZWI2YTA5ZjhiMmVmYmNjYWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1
cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCSXRlcmF0ZUN1cnNvckRhdGEuaApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgSURCSXRlcmF0
ZUN1cnNvckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KIGJvb2wgSURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgaXRlcmF0b3JDdXJzb3JEYXRhKQogewotICAg
IE9wdGlvbmFsPElEQktleURhdGE+IGtleURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlE
YXRhPiBrZXlEYXRhOwogICAgIGRlY29kZXIgPj4ga2V5RGF0YTsKICAgICBpZiAoIWtleURhdGEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpdGVyYXRvckN1cnNvckRhdGEua2V5RGF0YSA9
IFdURk1vdmUoKmtleURhdGEpOwogCi0gICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gcHJpbWFyeUtl
eURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBwcmltYXJ5S2V5RGF0YTsKICAg
ICBkZWNvZGVyID4+IHByaW1hcnlLZXlEYXRhOwogICAgIGlmICghcHJpbWFyeUtleURhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKaW5kZXggMmU3
MDE2MWE2MDk1MTYzNzRhNTZjNGJlY2FkZTYyNDk3NzI5ZTE2NS4uYTRkZDYxYWU2YTM0ZDdiZjNj
MWEyOTljNzBkNmExYzBiYjZlYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8oKQog
ewogfQogCi1JREJPYmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RT
dG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAgIDog
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5
UGF0aChXVEZNb3ZlKGtleVBhdGgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCmluZGV4IDBlYTZh
OTdkOTYwOGRjYTU5NmQ3OWJlZTMxZWU4YjA1NTAyM2M1MTYuLjQwM2ZkNDA1OTg2YmM1ZDkyN2I0
ZTYzYWRmMGM5NWZlZjFhZTk2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKQEAgLTM1LDEx
ICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJPYmplY3RTdG9yZUluZm8g
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVjdFN0b3JlSW5mbygpOwotICAg
IElEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYsIGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAgSURC
T2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAg
dWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGNvbnN0
IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRo
OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCiAgICAgdm9pZCByZW5hbWUoY29uc3QgU3RyaW5n
JiBuZXdOYW1lKSB7IG1fbmFtZSA9IG5ld05hbWU7IH0KQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQg
eyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSURCSW5kZXhJbmZvPiBtX2luZGV4
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA3YTA1NDJiYTMyNGEzOTFkODlkY2QwN2MwNGJiM2Jl
ODc1ZmMwNzE1Li4wMThjYjEzZTc1ZWI2NDVkZDExNGUyNGY2ZGJmZWEzNGNmNTViMTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVxdWVzdERhdGEuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1f
aW5kZXhJZGVudGlmaWVyIHsgMCB9OwogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIG1f
aW5kZXhSZWNvcmRUeXBlIHsgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSB9OwogCi0g
ICAgbXV0YWJsZSBPcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IG1fZGF0YWJhc2VJZGVu
dGlmaWVyOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+
IG1fZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fcmVxdWVzdGVkVmVyc2lvbiB7
IDAgfTsKIAogICAgIEluZGV4ZWREQjo6UmVxdWVzdFR5cGUgbV9yZXF1ZXN0VHlwZSB7IEluZGV4
ZWREQjo6UmVxdWVzdFR5cGU6Ok90aGVyIH07CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBJREJS
ZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5tX2luZGV4SWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPElEQkRhdGFi
YXNlSWRlbnRpZmllcj4+IGRhdGFiYXNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPj4gZGF0YWJhc2VJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIGlmICghZGF0YWJhc2VJZGVu
dGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCBiYjk0ZmE3
MzczMWU2N2Q3MWNkZTI1ZGNkNzI0MjcxMzFjNGExMzBmLi5iNTE3YzM3NzQzNzBhZmE0NTk1Zjg0
NTU1ZTQ2NTIxNTIyOWNkMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXN1bHREYXRhKCk7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgSURC
UmVzdWx0RGF0YShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKQEAgLTE2MSw3ICsxNjEs
NyBAQCB2b2lkIElEQlJlc3VsdERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgICAgICBlbmNvZGVyIDw8ICptX2dldEFsbFJlc3VsdDsKIH0KIAotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPElE
QlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1fcmVxdWVzdElkZW50aWZpZXIpKQpAQCAtMjAzLDcgKzIwMyw3IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVj
dCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKLSAg
ICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAg
ICAgICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggOWZiZmZjMTAwMDRlNDQxODQxNTgxMDcyM2Y5NWFmODQz
Y2U0NDNhYi4uMDRhODBmNTllYzVjYzRlNGUwYjdhNjFiZTE0NGNjMGExY2I2MDM0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgVmVjdG9yPFJlZlB0cjxBdWRpb1Ry
YWNrPj4gTWVkaWFDb250cm9sc0hvc3Q6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFj
a0wKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS5zb3J0ZWRU
cmFja0xpc3RGb3JNZW51KCZ0cmFja0xpc3QpOwogfQogCi1TdHJpbmcgTWVkaWFDb250cm9sc0hv
c3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4m
IHRyYWNrKQorU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mIHRyYWNrKQogewogICAgIGlmICgh
bV9tZWRpYUVsZW1lbnQgfHwgIXRyYWNrKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmgKaW5kZXggZDM3ODhhYTZhN2IyMTJiYmExNmZkN2M4MTU4YjJmOWE3ZDRk
NDAzNC4uN2E4OTBhMGRkMWNmYTE5OTEyMWQwM2FlYWI0YzMxYzIzNTc1NDdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8QXVk
aW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QmKTsKIAogICAg
IHVzaW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPFRleHRUcmFjaz4s
IFJlZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soY29u
c3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mKTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVG
b3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+Jik7CiAKICAgICBz
dGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4dFRy
YWNrJiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCBiMDk1OWFj
ZmJkMzUwZWU0NTc5YjkzM2U3NTk5MmZlYzYzNzNkMmI4Li40NzVjYzg1ZjhmM2Q4NjM5ZTVmNjM2
NjBhN2RjNjJjZWY4YTdlZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgY29u
c3QgY2hhciogTWVkaWFSZWNvcmRlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuICJNZWRpYVJlY29yZGVyIjsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNv
cmRlcjo6c3RhcnRSZWNvcmRpbmcoT3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVTbGljZSkKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHRpbWVTbGljZSkKIHsKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSBNZWRpYVJlY29yZGVyIGlz
IG5vdCBhY3RpdmUiX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IGI4OWQ1MTNmYTA1ZmNjZTY3NTI5Mjc4MTZh
NTFmNGRmYWE5NzExYmIuLjc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogICAgIAotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHN0YXJ0UmVjb3JkaW5nKE9wdGlvbmFsPHVuc2lnbmVkPik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwogICAg
IHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcXVlc3REYXRh
KCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGF1c2VSZWNvcmRpbmcoKTsKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0
ZT4gbV9wcml2YXRlOwogICAgIFJlY29yZGluZ1N0YXRlIG1fc3RhdGUgeyBSZWNvcmRpbmdTdGF0
ZTo6SW5hY3RpdmUgfTsKICAgICBWZWN0b3I8UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4g
bV90cmFja3M7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGltZVNsaWNlOworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGltZVNsaWNlOwogICAgIFRpbWVyIG1fdGltZVNsaWNlVGlt
ZXI7CiAgICAgCiAgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFJbWFnZS5oCmluZGV4IDQ5MzI0MDBhMDJm
ODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4MWMyNGMuLmEyNmEwNTA3YjMzMGFmYzQyYWI0YjNjZTBh
NTdkMDUwZTM4NWU4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYUltYWdlLmgKQEAgLTM1LDcgKzM1LDcgQEAgc3RydWN0IE1lZGlhSW1hZ2Ugewog
ICAgIFN0cmluZyB0eXBlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhSW1hZ2U+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYUltYWdl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTQzLDcgKzQzLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFJbWFnZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzcmMgPDwgc2l6ZXMgPDwgdHlwZTsKIH0K
IAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE1lZGlhSW1hZ2U+IE1l
ZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFJbWFnZT4gTWVkaWFJbWFnZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNyYykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDkyNmNmNjUzNTYzNTQzYTAwNzhiOTAwODJlMDBmNjY1
MGNiYzY0ZGEuLjZmOWMyZjQ5MjQyZjJkYTcxNDZhNWVmZjcwMGJkZjcxNmRlZjczYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgbV9j
YWxsYmFjayhiaXRtYXBJbWFnZS5wdHIoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1l
dGFkYXRhPj4gTWVkaWFNZXRhZGF0YTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmIGluaXQpCitFeGNlcHRpb25PcjxS
ZWY8TWVkaWFNZXRhZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmIGluaXQp
CiB7CiAgICAgYXV0byBtZXRhZGF0YSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFNZXRhZGF0YSk7CiAg
ICAgaWYgKGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyOTYwYjQ0YTg2M2JjODJiNGY5MjNhY2IzNWE2Y2Ux
YjBkMTM4MjMyLi5kNTc3NGI1MDlkOWE1NjBmMmMyODc1ZDQxNDcwNzhlOGY2NWYxMGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBz
dGQ6Om9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmKTsKICAgICB+TWVkaWFNZXRhZGF0YSgp
OwogCiAgICAgdm9pZCBzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQu
aAppbmRleCA1ZDdlMzc3NmE2ZjMzMWE4ZDNiMGY5MjJkZTFhNzlkNzI4MzZhYWRhLi44N2FiY2Vm
YzA0YmFkNWFmMzkwN2E3MDQ3OGY0MzE2NDQ2ZGNjOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGFJbml0LmgKQEAgLTQx
LDcgKzQxLDcgQEAgc3RydWN0IE1lZGlhTWV0YWRhdGFJbml0IHsKICAgICBWZWN0b3I8TWVkaWFJ
bWFnZT4gYXJ0d29yazsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9p
ZCBNZWRpYU1ldGFkYXRhSW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01
MywzMSArNTMsMzEgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFN
ZXRhZGF0YUluaXQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKQogICAgIDw8IGFydHdvcms7CiB9
CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRh
SW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+
IE1lZGlhTWV0YWRhdGFJbml0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHRpdGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAg
ICBkZWNvZGVyID4+IHRpdGxlOwogICAgIGlmICghdGl0bGUpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGFydGlzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gYXJ0aXN0OwogICAgIGRlY29kZXIgPj4gYXJ0aXN0OwogICAgIGlmICghYXJ0aXN0KQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBhbGJ1bTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gYWxidW07CiAgICAgZGVjb2RlciA+PiBhbGJ1bTsKICAgICBpZiAo
IWFsYnVtKQogICAgICAgICByZXR1cm4geyB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05f
UExBWUxJU1QpCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0cmFja0lkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHRyYWNrSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRyYWNr
SWRlbnRpZmllcjsKICAgICBpZiAoIXRyYWNrSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHsg
fTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8VmVjdG9yPE1lZGlhSW1hZ2U+PiBhcnR3b3JrOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhSW1hZ2U+PiBhcnR3b3JrOwogICAgIGRlY29k
ZXIgPj4gYXJ0d29yazsKICAgICBpZiAoIWFydHdvcmspCiAgICAgICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVBvc2l0
aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9z
aXRpb25TdGF0ZS5oCmluZGV4IDA3NmZhZTQ1MTg5ZWNiMGM5ZGJmNjg2ZGIwZDg5OGJiOTkyNjVj
ZTMuLjBhYmNiNTkyMmZmOTAzMzA4YWY1OTVjYjU0YmNhYmY0YzY5ZWY1NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25T
dGF0ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBNZWRpYVBvc2l0aW9uU3RhdGUgewogICAg
IFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
UG9zaXRpb25TdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmIG90aGVyKSBjb25zdCB7IHJldHVybiBkdXJhdGlvbiA9
PSBvdGhlci5kdXJhdGlvbiAmJiBwbGF5YmFja1JhdGUgPT0gb3RoZXIucGxheWJhY2tSYXRlICYm
IHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOyB9CiB9OwpAQCAtNDcsNyArNDcsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYVBvc2l0aW9uU3RhdGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKQogICAgIGVuY29kZXIgPDwgZHVyYXRpb24gPDwgcGxheWJhY2tS
YXRlIDw8IHBvc2l0aW9uOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRpYVBvc2l0aW9uU3RhdGU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9u
YWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRpYVBvc2l0aW9uU3RhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGRvdWJsZSBkdXJhdGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGR1cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDViMjU0NGNlZWQwNTdmNjUwNzY2MmQ4NzNlNWEy
YTZjZDBhZmYxODQuLjFlMTRkNzc4NTQzNjZiMDA4NjYzNWZjYzlkZmRhMTU5YjZiNGRjYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlcwogICAgIHJl
dHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8c3RkOjpwYWlyPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQ+PiBwbGF0Zm9y
bUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0
YWlscyYgYWN0aW9uRGV0YWlscykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Pj4gcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFT
ZXNzaW9uQWN0aW9uKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGFp
bHMpCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZDsKICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50OwpAQCAtMjg4LDcg
KzI4OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpjYWxsQWN0aW9uSGFuZGxlcihjb25zdCBNZWRp
YVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhCiBib29sIE1lZGlhU2Vzc2lvbjo6Y2Fs
bEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0
YWlscywgVHJpZ2dlckdlc3R1cmVJbmRpY2F0b3IgdHJpZ2dlckdlc3R1cmVJbmRpY2F0b3IpCiB7
CiAgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fYWN0aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRldGFp
bHMuYWN0aW9uKSkgewotICAgICAgICBPcHRpb25hbDxVc2VyR2VzdHVyZUluZGljYXRvcj4gbWF5
YmVHZXN0dXJlSW5kaWNhdG9yOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJHZXN0dXJlSW5k
aWNhdG9yPiBtYXliZUdlc3R1cmVJbmRpY2F0b3I7CiAgICAgICAgIGlmICh0cmlnZ2VyR2VzdHVy
ZUluZGljYXRvciA9PSBUcmlnZ2VyR2VzdHVyZUluZGljYXRvcjo6WWVzKQogICAgICAgICAgICAg
bWF5YmVHZXN0dXJlSW5kaWNhdG9yLmVtcGxhY2UoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBkb2N1
bWVudCgpKTsKICAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7CkBA
IC0zMDUsNyArMzA1LDcgQEAgYm9vbCBNZWRpYVNlc3Npb246OmNhbGxBY3Rpb25IYW5kbGVyKGNv
bnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGEKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRl
KE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0ZShzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRp
b25TdGF0ZT4mJiBzdGF0ZSkKIHsKICAgICBpZiAoc3RhdGUpCiAgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgc3RhdGUudmFsdWUoKSk7CkBAIC0zMzMsNyArMzMzLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlh
UG9zaXRpb25TdGF0ZT4mJgogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4g
TWVkaWFTZXNzaW9uOjpjdXJyZW50UG9zaXRpb24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cG9zaXRpb25TdGF0ZSB8fCAhbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5NTAwYzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRj
YjllOGM5Yi4uM2U2NDYwNTNjN2I5OGE5YTY1Yzk1NmEyZWZiNTI2MmU1ZDBmM2ViMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgK
QEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGxBY3Rpb25IYW5kbGVy
KGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFs
PE1lZGlhUG9zaXRpb25TdGF0ZT4mJik7Ci0gICAgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRl
PiBwb3NpdGlvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvblN0YXRlOyB9CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9zaXRpb25TdGF0ZShzdGQ6Om9wdGlvbmFsPE1lZGlhUG9z
aXRpb25TdGF0ZT4mJik7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IHBv
c2l0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uU3RhdGU7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigp
IGNvbnN0OwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgCkBAIC0xMDcs
NyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVs
dDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWV0YWRhdGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxN
ZWRpYU1ldGFkYXRhPiYpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNo
YW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRp
YVBvc2l0aW9uU3RhdGU+JikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXRl
Q2hhbmdlZChNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGFjdGlvbkhhbmRsZXJzQ2hhbmdlZCgpIHsgfQogCkBAIC0xNDcsOCArMTQ3LDggQEAgcHJp
dmF0ZToKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7CiAgICAgUmVmUHRyPE1l
ZGlhTWV0YWRhdGE+IG1fbWV0YWRhdGE7CiAgICAgTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBt
X3BsYXliYWNrU3RhdGUgeyBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlOjpOb25lIH07Ci0gICAg
T3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBtX3Bvc2l0aW9uU3RhdGU7Ci0gICAgT3B0aW9u
YWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8TWVk
aWFQb3NpdGlvblN0YXRlPiBtX3Bvc2l0aW9uU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1fbGFzdFJlcG9ydGVkUG9zaXRpb247CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExh
c3RQb3NpdGlvblVwZGF0ZTsKICAgICBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUmVmUHRy
PE1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRsZXI+LCBXVEY6OkludEhhc2g8TWVkaWFTZXNzaW9uQWN0
aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PiBtX2Fj
dGlvbkhhbmRsZXJzOwogICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQWN0
aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQWN0aW9uRGV0YWlscy5oCmluZGV4IGY1OTA5ZDQ2ZjhlYWM2NmQwZjNjOWRkN2U3NTMy
ZTM2MDQ2OGQ2YTQuLjliMzQxMDJlZmU2NWNiNDI5Y2ExOTUzMGJlN2Q2MzY3Mzc0ZTA2ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkFjdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzLmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyB7CiAgICAgTWVk
aWFTZXNzaW9uQWN0aW9uIGFjdGlvbiA9IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheTsKLSAgICBP
cHRpb25hbDxkb3VibGU+IHNlZWtPZmZzZXQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzZWVrVGlt
ZTsKLSAgICBPcHRpb25hbDxib29sPiBmYXN0U2VlazsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gc2Vla09mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2Vla1RpbWU7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBmYXN0U2VlazsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9Q
TEFZTElTVCkKICAgICBTdHJpbmcgdHJhY2tJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b25Db29yZGluYXRvci5jcHAKaW5kZXggOWM2MDI4ZDE0MGQ2ODNiYjEyNzU1MGZkMTQ0MmRhYmM0
NDFkZjViYS4uYmMwYjhiYjhkOTdkMWU1NmRhNGZmNmMzNzNhNDEzMWE0NTliYzNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9p
bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11
dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNl
ZWtUbyhkb3VibGUgdGltZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNlZWtUbyh0aW1lLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9zZXNzaW9uKSB7CiAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAg
IG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigq
dGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk4
LDcgKzE5OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2UoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChPcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGlu
YXRvci0+cGF1c2UoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRpZmll
ciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4m
JiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fc2Vz
c2lvbikgewogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywg
RE9NUHJvbWlzZURlZmVycmVkPHYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJp
dmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChPcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29y
ZGluYXRvci0+c2V0VHJhY2sodHJhY2ssIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhp
cyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0
ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcg
KzI2OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6Om1ldGFkYXRhQ2hhbmdlZChj
b25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mIG1ldGFkCiAjZW5kaWYKIH0KIAotdm9pZCBNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8
TWVkaWFQb3NpdGlvblN0YXRlPiYgcG9zaXRpb25TdGF0ZSkKK3ZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQ
b3NpdGlvblN0YXRlPiYgcG9zaXRpb25TdGF0ZSkKIHsKICAgICBpZiAocG9zaXRpb25TdGF0ZSkK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBwb3NpdGlvblN0YXRlLnZhbHVlKCkp
OwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtT
ZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBs
YXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RU
aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxk
b3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFVOVVNFRF9Q
QVJBTShob3N0VGltZSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IGJlNTIwMDAyYTViYjFiZjdlYzY5ZjBkYjNk
NmUyNjU2YzdiYTMxMTcuLjMzMGM0YWViNjA1MWUzZTNkZThhNGY5YWFiMDcxNWE0NjM1MjRhOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtNjgsMTMgKzY4LDEzIEBAIHByaXZhdGU6
CiAKICAgICAvLyBNZWRpYVNlc3Npb246Ok9ic2VydmVyCiAgICAgdm9pZCBtZXRhZGF0YUNoYW5n
ZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+JikgZmluYWw7Ci0gICAgdm9pZCBwb3NpdGlv
blN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7
CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlh
UG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5n
ZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSkgZmluYWw7CiAKICAgICAvLyBNZWRpYVNlc3Npb25D
b29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBsYXlTZXNzaW9u
KE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXlTZXNzaW9u
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBob3N0
VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBw
YXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAg
dm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJD
b3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggZjM2ZWVkMmMyNjE0ZTk2YTcxNmM4YjI4NTEx
MmI3Mjk0ZDQ1ZWFjNC4uODU1YWY2OWI2ZTg0ZTNiNDY5OTJjZDU5YjM3MjAwNDBiN2Y3ZTEzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
bGF5U2Vzc2lvbihPcHRpb25hbDxkb3VibGU+IGF0VGltZSwgT3B0aW9uYWw8ZG91YmxlPiBob3N0
VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwbGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gaG9zdFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZSkgeyB9OwpAQCAtNTgsMTUgKzU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgam9p
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsZWF2ZSgpID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmlu
ZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
bGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRy
YWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNo
YW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVBv
c2l0aW9uU3RhdGU+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChN
ZWRpYVNlc3Npb25SZWFkeVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3Rh
dGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGZk
N2I4YTkwODgyNzRmOTZmODU2Njc3MjNkZGJjNzE2ZDMzNDhiZTguLjQ1OTM1YmY5OThhYWQ4MTQw
MDM2YWFhODFjODNlNTk2ODk5MThjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQogICAgIG9uUmVhZHlT
dGF0ZUNoYW5nZShvbGRTdGF0ZSwgc3RhdGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBNZWRp
YVNvdXJjZTo6ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCitF
eGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25hbDxF
bmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OwogCkBAIC01NTIsNyArNTUyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OmVu
ZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgIHJldHVybiB7
IH07CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFs
PEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQordm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRX
aXRoRXJyb3Ioc3RkOjpvcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggM2Y0OTUzMzI3MTQxZWEw
MGJiODMzOTI5MTgxMDRjNmFhOGMyMWRjNi4uMTkxZTAwMzJiYmE3ZjYyZGY4OTBkNjZjMTA5ZGE5
NjExMWI0Yzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzb3VyY2VC
dWZmZXJEaWRDaGFuZ2VCdWZmZXJlZERpcnR5KFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwogCiAgICAg
ZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07Ci0gICAgdm9p
ZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7CisgICAg
dm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+
KTsKIAogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWw7CkBAIC0x
MDAsNyArMTAwLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBSZWFkeVN0YXRlIHsgQ2xv
c2VkLCBPcGVuLCBFbmRlZCB9OwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuZE9mU3RyZWFt
KE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmRP
ZlN0cmVhbShzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50Lmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggYzg1
MjQ1ZWRmZDFhYTY4NDAxMGE1ODE1ZjcwMzE5MzZhNzNlMGVkOC4uMDg4MDkzMzRhODIwYmQ4ZjYy
NWM5MzMwMzQyYWZiODlhOTZhZjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2spOwogCi1S
ZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s+IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+
JiYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK1JlZjxDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxIVE1MQ2FudmFzRWxlbWVudD4mJiBjYW52
YXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpCiB7CiAgICAgYXV0
byBzb3VyY2UgPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjcmVhdGUo
Y2FudmFzLmdldCgpLCBXVEZNb3ZlKGZyYW1lUmVxdWVzdFJhdGUpKTsKICAgICBhdXRvIHRyYWNr
ID0gYWRvcHRSZWYoKm5ldyBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayhkb2N1bWVudCwg
V1RGTW92ZShjYW52YXMpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKQEAgLTU2LDcgKzU2LDcgQEAgQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwKIHsKIH0KIAotUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrOjpTb3VyY2U+IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNy
ZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVS
ZXF1ZXN0UmF0ZSkKK1JlZjxDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlPiBD
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjcmVhdGUoSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkK
IHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291cmNlKGNhbnZhcywgV1RGTW92
ZShmcmFtZVJlcXVlc3RSYXRlKSkpOwogICAgIHNvdXJjZS0+c3RhcnQoKTsKQEAgLTc1LDcgKzc1
LDcgQEAgY29uc3QgY2hhciogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogfQogCiAvLyBGSVhNRTogR2l2ZSBzb3VyY2UgaWQgYW5kIG5h
bWUKLUNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2Fu
dmFzRWxlbWVudCYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkK
K0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFz
RWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRl
KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgIkNhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrIl9zKQogICAgICwgbV9mcmFtZVJlcXVlc3RSYXRlKFdURk1vdmUoZnJh
bWVSZXF1ZXN0UmF0ZSkpCiAgICAgLCBtX3JlcXVlc3RGcmFtZVRpbWVyKCp0aGlzLCAmU291cmNl
OjpyZXF1ZXN0RnJhbWVUaW1lckZpcmVkKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNl
JiBjYW52YXMpCiAgICAgc2V0U2l6ZShJbnRTaXplKG1fY2FudmFzLT53aWR0aCgpLCBtX2NhbnZh
cy0+aGVpZ2h0KCkpKTsKIH0KIAotdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6
U291cmNlOjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhcywgY29uc3QgT3B0aW9uYWw8
RmxvYXRSZWN0PiYpCit2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6
OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mKQogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2Fu
dmFzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDc1ZmRkZmI5
OTMwNmI5Y2EwNzBiNWIxOTYzMzFkYmFhMDBlYmE1MDUuLmI3ZDA0ZGI0MDNhNmExODFiMTE1NzRk
YWEwNGM3MjJhMTliMDQ5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjayBmaW5hbCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBmcmFt
ZVJlcXVlc3RSYXRlKTsKKyAgICBzdGF0aWMgUmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+JiYsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOwogCiAgICAgSFRNTENhbnZhc0VsZW1l
bnQmIGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzLmdldCgpOyB9CiAgICAgdm9pZCByZXF1ZXN0
RnJhbWUoKSB7IHN0YXRpY19jYXN0PFNvdXJjZSY+KHNvdXJjZSgpKS5yZXF1ZXN0RnJhbWUoKTsg
fQpAQCAtNTIsMTYgKzUyLDE2IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBTb3VyY2UgZmluYWwg
OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSBDYW52YXNPYnNlcnZlciB7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFNvdXJjZT4gY3JlYXRlKEhUTUxDYW52YXNF
bGVtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOworICAgICAgICBz
dGF0aWMgUmVmPFNvdXJjZT4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50Jiwgc3RkOjpvcHRpb25h
bDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHJl
cXVlc3RGcmFtZSgpIHsgbV9zaG91bGRFbWl0RnJhbWUgPSB0cnVlOyB9Ci0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZXF1
ZXN0UmF0ZTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0UmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZXF1ZXN0UmF0ZTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmKTsK
KyAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVtZW50Jiwgc3RkOjpvcHRpb25hbDxkb3VibGU+
JiYpOwogCiAgICAgICAgIC8vIENhbnZhc09ic2VydmVyIEFQSQotICAgICAgICB2b2lkIGNhbnZh
c0NoYW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsK
KyAgICAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICAgICAgdm9pZCBjYW52YXNSZXNpemVkKENhbnZh
c0Jhc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoQ2FudmFzQmFzZSYp
IGZpbmFsOwogCkBAIC03NiwxMCArNzYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZXF1
ZXN0RnJhbWVUaW1lckZpcmVkKCk7CiAKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFtZSB7
IHRydWUgfTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7CiAgICAgICAg
IFRpbWVyIG1fcmVxdWVzdEZyYW1lVGltZXI7CiAgICAgICAgIFRpbWVyIG1fY2FwdHVyZUNhbnZh
c1RpbWVyOwotICAgICAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1f
Y3VycmVudFNldHRpbmdzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50
KiBtX2NhbnZhczsKICAgICAgICAgUmVmUHRyPEltYWdlPiBtX2N1cnJlbnRJbWFnZTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXRhY2hl
ZFJUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Rl
dGFjaGVkUlRDRGF0YUNoYW5uZWwuaAppbmRleCA0ZDkxNmY4OWJmNWZhOGE4ZDAxYTkwMWFhODEx
MGM2NjEyYzI5NmM5Li4wZjM2Yzc4MzdmMTViYjIwMDVkMjVmZTZiYjQyMzc5OTgwZjE3MmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RldGFjaGVkUlRD
RGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Rl
dGFjaGVkUlRDRGF0YUNoYW5uZWwuaApAQCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIERldGFjaGVkUlRDRGF0YUNoYW5uZWw6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjbwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbD4gRGV0YWNoZWRSVENEYXRhQ2hhbm5lbDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBpZGVu
dGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBpZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC03MywxMiArNzMsMTIgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IERldGFjaGVk
UlRDRGF0YUMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhYmVsKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gb3B0aW9uczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gb3B0aW9uczsKICAgICBkZWNvZGVyID4+
IG9wdGlvbnM7CiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
T3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxTdGF0ZT4gc3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxS
VENEYXRhQ2hhbm5lbFN0YXRlPiBzdGF0ZTsKICAgICBkZWNvZGVyID4+IHN0YXRlOwogICAgIGlm
ICghc3RhdGUpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgKaW5kZXggMmNiNTEwYTEwNGQ2MTBkYzk5ODEw
MmU2NzQyYjQ0N2Q3ZGEzMjEwNi4uODRhNDZiZDYwYzY1YzU0NmM2NDc1OTk2NzJlMmU3ZGI1MzA4
YmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Eb3Vi
bGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRG91Ymxl
UmFuZ2UuaApAQCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
RG91YmxlUmFuZ2UgewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4OwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gbWluOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXg7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1pbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTG9uZ1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0xvbmdSYW5nZS5oCmluZGV4IDA3MzI2MjcwNzlmYzQ4ODRjZjgxNjcyMjlhNjJl
NWExNjdmNTcwYjEuLjE2MGVmODZiNjA4MjdjZjczZmJiYzZiZGM0N2ZjOThiNzA1NDUwYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9uZ1JhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Mb25nUmFuZ2UuaApAQCAt
MzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTG9uZ1JhbmdlIHsK
LSAgICBPcHRpb25hbDxpbnQ+IG1heDsKLSAgICBPcHRpb25hbDxpbnQ+IG1pbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPGludD4gbWF4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtaW47CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAppbmRleCA5MmM4ZGY4YmIxMWIwZDYxY2I3NDc0ZDQ5ZGZhYTU1ZWQ1NmZm
OGE5Li45ZjAzY2Y0NmQ2ZGEyM2JiY2U0MWM5ZmZjMzJkNjE1NGE2MDg0ODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBNZWRpYVN0cmVhbVRyYWNrOjpUcmFja0NhcGFiaWxp
dGllcyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3Ry
YWludHMoY29uc3QgT3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMp
CitzdGF0aWMgTWVkaWFDb25zdHJhaW50cyBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMpCiB7CiAgICAg
aWYgKCFjb25zdHJhaW50cykgewogICAgICAgICBNZWRpYUNvbnN0cmFpbnRzIHZhbGlkQ29uc3Ry
YWludHM7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIE1lZGlhQ29uc3RyYWludHMgY3JlYXRl
TWVkaWFDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWkKICAgICBy
ZXR1cm4gY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52YWx1ZSgpKTsKIH0KIAot
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFsPE1l
ZGlhVHJhY2tDb25zdHJhaW50cz4mIGNvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RG
OjptYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oV1RGTW92ZShwcm9taXNlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgKaW5kZXggNTkyYWIyYmIxNThlN2QzNTUyMGJiNWU0ZWM0YjA3ZmQwMTkyMTRj
YS4uNzc3MDhiZTg5ODM2MjBlZWU4OTcyNWQ5Zjk0NDVjNGYyZTBmNTM1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
QEAgLTEwMiwxNiArMTAyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FwdHVyZVRyYWNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NhcHR1cmVUcmFjazsgfQogCiAgICAgc3RydWN0IFRyYWNrU2V0
dGluZ3MgewotICAgICAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOwotICAgICAgICBPcHRpb25hbDxp
bnQ+IGhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpbzsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZnJhbWVSYXRlOwogICAgICAgICBTdHJpbmcgZmFjaW5nTW9kZTsKLSAgICAgICAgT3B0
aW9uYWw8ZG91YmxlPiB2b2x1bWU7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gc2FtcGxlUmF0ZTsK
LSAgICAgICAgT3B0aW9uYWw8aW50PiBzYW1wbGVTaXplOwotICAgICAgICBPcHRpb25hbDxib29s
PiBlY2hvQ2FuY2VsbGF0aW9uOwotICAgICAgICBPcHRpb25hbDxib29sPiBkaXNwbGF5U3VyZmFj
ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZvbHVtZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IHNhbXBsZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYW1w
bGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVjaG9DYW5jZWxsYXRpb247Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzcGxheVN1cmZhY2U7CiAgICAgICAgIFN0cmlu
ZyBsb2dpY2FsU3VyZmFjZTsKICAgICAgICAgU3RyaW5nIGRldmljZUlkOwogICAgICAgICBTdHJp
bmcgZ3JvdXBJZDsKQEAgLTExOSwyMiArMTE5LDIyIEBAIHB1YmxpYzoKICAgICBUcmFja1NldHRp
bmdzIGdldFNldHRpbmdzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tDYXBhYmlsaXRpZXMg
ewotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+IHdpZHRoOwotICAgICAgICBPcHRpb25hbDxM
b25nUmFuZ2U+IGhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8RG91YmxlUmFuZ2U+IGFzcGVjdFJh
dGlvOwotICAgICAgICBPcHRpb25hbDxEb3VibGVSYW5nZT4gZnJhbWVSYXRlOwotICAgICAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZmFjaW5nTW9kZTsKLSAgICAgICAgT3B0aW9uYWw8RG91
YmxlUmFuZ2U+IHZvbHVtZTsKLSAgICAgICAgT3B0aW9uYWw8TG9uZ1JhbmdlPiBzYW1wbGVSYXRl
OwotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+IHNhbXBsZVNpemU7Ci0gICAgICAgIE9wdGlv
bmFsPFZlY3Rvcjxib29sPj4gZWNob0NhbmNlbGxhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxMb25nUmFuZ2U+IHdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExvbmdSYW5nZT4gaGVp
Z2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZVJhbmdlPiBhc3BlY3RSYXRpbzsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxEb3VibGVSYW5nZT4gZnJhbWVSYXRlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBmYWNpbmdNb2RlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPERvdWJsZVJhbmdlPiB2b2x1bWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TG9uZ1Jhbmdl
PiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExvbmdSYW5nZT4gc2FtcGxlU2l6
ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Ym9vbD4+IGVjaG9DYW5jZWxsYXRpb247
CiAgICAgICAgIFN0cmluZyBkZXZpY2VJZDsKICAgICAgICAgU3RyaW5nIGdyb3VwSWQ7CiAgICAg
fTsKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKIAogICAg
IGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYgZ2V0Q29uc3RyYWludHMoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9w
dGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4mLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+c291
cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAKaW5kZXggY2Qx
YzBlMzE5OGE1ZGI1NzBlZGFjZGUzYWEwZmRhZmRjM2FkNzA2My4uOWYxMDQ4MjE5Njk0MWIwZjUy
NDY4NTMxYzQwNGY1NGY2MGE0N2M0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYg
bWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBjb25zCiAgICAgbWFwLnNldCh0eXBlLCBX
VEZNb3ZlKGNvbnN0cmFpbnQpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlu
bGluZSB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50
U2V0VHlwZSBzZXRUeXBlLCBjb25zdCBjaGFyKiB0eXBlQXNTdHJpbmcsIE1lZGlhQ29uc3RyYWlu
dFR5cGUgdHlwZSwgY29uc3QgT3B0aW9uYWw8VD4mIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIGlubGluZSB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFw
LCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBjb25zdCBjaGFyKiB0eXBlQXNTdHJpbmcsIE1l
ZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiB7
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
YXRpYyBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGNvbnZlcnRBZHZhbmNlZFRv
SW50ZXJuYWxGb3JtKGNvbnN0IFZlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFZl
Y3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gY29udmVydEFkdmFuY2VkVG9JbnRlcm5h
bEZvcm0oY29uc3QgT3B0aW9uYWw8VmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Pj4mIG9w
dGlvbmFsVmVjdG9yKQorc3RhdGljIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4g
Y29udmVydEFkdmFuY2VkVG9JbnRlcm5hbEZvcm0oY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+PiYgb3B0aW9uYWxWZWN0b3IpCiB7CiAgICAgaWYgKCFv
cHRpb25hbFZlY3RvcikKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCmlu
ZGV4IDAwNzJhYmEzMzZmZmU5MjQ1Zjk1OWI0ZjIyZWUyYmJlZWEzMmRmYzUuLjczMTQyODVlY2Yy
OWQyMmE1ZGYxMDA0MGNjYzdjYTg2MzYyYWJkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaApAQCAt
MzcsMjMgKzM3LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNZWRpYUNvbnN0cmFp
bnRzOwogCiBzdHJ1Y3QgQ29uc3RyYWluQm9vbGVhblBhcmFtZXRlcnMgewotICAgIE9wdGlvbmFs
PGJvb2w+IGV4YWN0OwotICAgIE9wdGlvbmFsPGJvb2w+IGlkZWFsOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gZXhhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZGVhbDsKIH07CiAKIHN0
cnVjdCBDb25zdHJhaW5ET01TdHJpbmdQYXJhbWV0ZXJzIHsKLSAgICBPcHRpb25hbDxWYXJpYW50
PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBleGFjdDsKLSAgICBPcHRpb25hbDxWYXJpYW50PFN0
cmluZywgVmVjdG9yPFN0cmluZz4+PiBpZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGV4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gaWRlYWw7CiB9OwogCiBzdHJ1Y3QgQ29uc3RyYWlu
RG91YmxlUmFuZ2UgOiBEb3VibGVSYW5nZSB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBleGFjdDsK
LSAgICBPcHRpb25hbDxkb3VibGU+IGlkZWFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBl
eGFjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaWRlYWw7CiB9OwogCiBzdHJ1Y3QgQ29u
c3RyYWluTG9uZ1JhbmdlIDogTG9uZ1JhbmdlIHsKLSAgICBPcHRpb25hbDxpbnQ+IGV4YWN0Owot
ICAgIE9wdGlvbmFsPGludD4gaWRlYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGV4YWN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZGVhbDsKIH07CiAKIHVzaW5nIENvbnN0cmFpbkJvb2xl
YW4gPSBWYXJpYW50PGJvb2wsIENvbnN0cmFpbkJvb2xlYW5QYXJhbWV0ZXJzPjsKQEAgLTYyLDIz
ICs2MiwyMyBAQCB1c2luZyBDb25zdHJhaW5Eb3VibGUgPSBWYXJpYW50PGRvdWJsZSwgQ29uc3Ry
YWluRG91YmxlUmFuZ2U+OwogdXNpbmcgQ29uc3RyYWluTG9uZyA9IFZhcmlhbnQ8aW50LCBDb25z
dHJhaW5Mb25nUmFuZ2U+OwogCiBzdHJ1Y3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewotICAg
IE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHdpZHRoOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkxv
bmc+IGhlaWdodDsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IGFzcGVjdFJhdGlvOwot
ICAgIE9wdGlvbmFsPENvbnN0cmFpbkRvdWJsZT4gZnJhbWVSYXRlOwotICAgIE9wdGlvbmFsPENv
bnN0cmFpbkRPTVN0cmluZz4gZmFjaW5nTW9kZTsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5Eb3Vi
bGU+IHZvbHVtZTsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5Mb25nPiBzYW1wbGVSYXRlOwotICAg
IE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHNhbXBsZVNpemU7Ci0gICAgT3B0aW9uYWw8Q29uc3Ry
YWluQm9vbGVhbj4gZWNob0NhbmNlbGxhdGlvbjsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5ET01T
dHJpbmc+IGRldmljZUlkOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkRPTVN0cmluZz4gZ3JvdXBJ
ZDsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGRpc3BsYXlTdXJmYWNlOwotICAg
IE9wdGlvbmFsPENvbnN0cmFpbkJvb2xlYW4+IGxvZ2ljYWxTdXJmYWNlOworICAgIHN0ZDo6b3B0
aW9uYWw8Q29uc3RyYWluTG9uZz4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5M
b25nPiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IGFzcGVjdFJh
dGlvOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluRG91YmxlPiBmcmFtZVJhdGU7CisgICAg
c3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGZhY2luZ01vZGU7CisgICAgc3RkOjpv
cHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IHZvbHVtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnN0
cmFpbkxvbmc+IHNhbXBsZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Mb25nPiBz
YW1wbGVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gZWNob0NhbmNl
bGxhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnN0cmFpbkRPTVN0cmluZz4gZGV2aWNlSWQ7
CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGdyb3VwSWQ7CisgICAgc3Rk
OjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGRpc3BsYXlTdXJmYWNlOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gbG9naWNhbFN1cmZhY2U7CiB9OwogCiBzdHJ1Y3Qg
TWVkaWFUcmFja0NvbnN0cmFpbnRzIDogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewotICAgIE9w
dGlvbmFsPFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4+IGFkdmFuY2VkOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Pj4gYWR2YW5jZWQ7CiB9
OwogCiBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3QgTWVkaWFU
cmFja0NvbnN0cmFpbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNjI2MTQ0Nzkx
MjhjMTgyZWUzMmM1MTU1OTkyNTU1NDUzYjIwMDU5NS4uNmRhYjFlZjdiNmVlNmI4NzZmMjhjNGNh
Mzg3OGVkMDFiNTg0MjRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjMsMTMgKzYz
LDEzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVh
dGVOb1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQCiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFj
a2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZU5vUGVlckNvbm5lY3Rp
b25CYWNrZW5kOwogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYpCitzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4geyB9OwogfQogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5YmQyYmQ5OWMwOWYzNzBkYzFjNTU1ZmY1M2Vj
OTQ1MTRlOGNlOTliLi4zMzY5NzYzOWUwYmM1MGI2OWU4OGY4ZmM4N2M4Y2VjYTQ0MDc5NzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTgzLDggKzgzLDggQEAgY2xhc3MgUGVlckNvbm5lY3Rp
b25CYWNrZW5kCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCBjcmVhdGU7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwQ2Fw
YWJpbGl0aWVzPiByZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiBraW5kKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0
aWVzPiBzZW5kZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYga2luZCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVz
PiByZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiBraW5kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+
IHNlbmRlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBraW5kKTsKIAogICAgIGV4cGxpY2l0IFBlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29u
bmVjdGlvbiYpOwogICAgIHZpcnR1YWwgflBlZXJDb25uZWN0aW9uQmFja2VuZCgpOwpAQCAtMTY4
LDkgKzE2OCw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFR5cGUgdHlwZTsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBleHBpcmVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZXhwaXJlczsKIAotICAgICAgICBPcHRpb25hbDxSU0E+IHJzYVBhcmFtZXRlcnM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UlNBPiByc2FQYXJhbWV0ZXJzOwogICAgIH07CiAgICAgc3Rh
dGljIHZvaWQgZ2VuZXJhdGVDZXJ0aWZpY2F0ZShEb2N1bWVudCYsIGNvbnN0IENlcnRpZmljYXRl
SW5mb3JtYXRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFJUQ0NlcnRpZmlj
YXRlPj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENDb25maWd1cmF0aW9uLmgKaW5kZXggMzA3ZGVlZmVlOGUwNjQxMDRjNmNhZWJiMDI5Yjk4
NDYwODdhZGMyZC4uZGQxZTE3YzBkNjMwM2Y1YWI2OTFlMDdlMTRhYjcxYWNjNGUyODRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1
cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IFJUQ0NvbmZpZ3VyYXRpb24gewotICAgIE9wdGlvbmFsPFZlY3RvcjxSVENJY2VTZXJ2ZXI+PiBp
Y2VTZXJ2ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJUQ0ljZVNlcnZlcj4+IGljZVNl
cnZlcnM7CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9saWN5IGljZVRyYW5zcG9ydFBvbGljeTsKICAg
ICBSVENCdW5kbGVQb2xpY3kgYnVuZGxlUG9saWN5OwogICAgIFJUQ1BNdXhQb2xpY3kgcnRjcE11
eFBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuaAppbmRleCA2MDFkODg5NDI1NzQ2NTk4YzQzYWNlNzVjYWY1YTQyYzgyMWU5
YzIyLi45ZGE3NjU2ODc4NmRhYjI5ZDY4NDVkMzE3ZThmNGE3MzI1YzczMmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBA
IC01NywxMSArNTcsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
LCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0JiYsIFJUQ0RhdGFDaGFubmVsU3RhdGUpOwog
CiAgICAgYm9vbCBvcmRlcmVkKCkgY29uc3QgeyByZXR1cm4gKm1fb3B0aW9ucy5vcmRlcmVkOyB9
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFBhY2tldExpZmVUaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9vcHRpb25zLm1heFBhY2tldExpZmVUaW1lOyB9Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLm1h
eFJldHJhbnNtaXRzOyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4UGFj
a2V0TGlmZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMubWF4UGFja2V0TGlmZVRpbWU7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhSZXRyYW5zbWl0cygpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5tYXhSZXRyYW5zbWl0czsgfQogICAgIFN0cmluZyBwcm90
b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5wcm90b2NvbDsgfQogICAgIGJvb2wgbmVn
b3RpYXRlZCgpIGNvbnN0IHsgcmV0dXJuICptX29wdGlvbnMubmVnb3RpYXRlZDsgfTsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuaWQ7
IH07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnMuaWQ7IH07CiAgICAgUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9vcHRpb25zLnByaW9yaXR5OyB9OwogICAgIGNvbnN0IFJUQ0RhdGFDaGFubmVs
SW5pdCYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0Zy
YW1lLmgKaW5kZXggMjZmY2IwNzFjMjY3MzIyNGEwZGJkOWExMzg5MGVlZjM0ZDFiMjM5Ny4uNTNl
MWYyMGQ3N2UxZjYyMzBhN2Y4ZWJmMjI0OWRmMTNhMDVkMmJjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUu
aApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJUQ0Vu
Y29kZWRBdWRpb0ZyYW1lKFJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOwogCi0gICAg
bXV0YWJsZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9tZXRhZGF0YTsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRWaWRlb0ZyYW1lLmgKaW5kZXggMzk4ZDJmNmViZGJlYmIwYTQ0NTM3NjliMTZjZDg3
M2U3NDI4NzZkNi4uYzY4MjBlYjE0NzkzZDhhNGQ3NGMwZDkyNDk0ZDNmOWFmMDlmZmJlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlk
ZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5j
b2RlZFZpZGVvRnJhbWUuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOwog
CiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9tZXRh
ZGF0YTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggN2MwNTkxMzRjMDdm
NjkzMzk5ZGY0OGE0NDgwZTg5YjA4NTE1NzQzYi4uOGQ5NWI4MTI4YTUwODZkNzM2ODhmZjkyM2Qw
Y2FiNDJmYWY3MDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSVENJY2VDYW5kaWRhdGUp
OwogCi1SVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRp
ZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBN
TGluZUluZGV4LCBGaWVsZHMmJiBmaWVsZHMpCitSVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRp
ZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgsIEZpZWxkcyYmIGZpZWxkcykK
ICAgICA6IG1fY2FuZGlkYXRlKGNhbmRpZGF0ZSkKICAgICAsIG1fc2RwTWlkKHNkcE1pZCkKICAg
ICAsIG1fc2RwTUxpbmVJbmRleChzZHBNTGluZUluZGV4KQpAQCAtNjEsNyArNjEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29u
c3QgUlRDSWNlQ2FuZGlkYXRlSQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRp
ZGF0ZShkaWN0aW9uYXJ5LmNhbmRpZGF0ZSwgZGljdGlvbmFyeS5zZHBNaWQsIGRpY3Rpb25hcnku
c2RwTUxpbmVJbmRleCwgV1RGTW92ZShmaWVsZHMpKSk7CiB9CiAKLVJlZjxSVENJY2VDYW5kaWRh
dGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25z
dCBTdHJpbmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgp
CitSZWY8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCiB7CiAgICAgYXV0byBmaWVsZHMgPSBwYXJzZUljZUNh
bmRpZGF0ZVNEUChjYW5kaWRhdGUpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNh
bmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRleCwgV1RGTW92ZSgqZmllbGRz
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VDYW5kaWRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNl
Q2FuZGlkYXRlLmgKaW5kZXggNmQzYTdlMjY4YWM3N2I0MjVmM2M4ZjQzNzdmZTJmOWZjODRiMGVl
MS4uM2VmZjNmZTYxYjRmOTZmMWM4ZTYyYjE1MmNjNWU5NTE1ZjBkNmE2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCkBA
IC00Nyw1MCArNDcsNTAgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwgcHVibGljIFNjcmlwdFcKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFJUQ0ljZUNhbmRpZGF0ZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBjcmVhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRl
SW5pdCYpOwotICAgIHN0YXRpYyBSZWY8UlRDSWNlQ2FuZGlkYXRlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBPcHRpb25hbDx1bnNpZ25lZCBz
aG9ydD4gc2RwTUxpbmVJbmRleCk7CisgICAgc3RhdGljIFJlZjxSVENJY2VDYW5kaWRhdGU+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBjYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0ZTsgfQogICAgIGNvbnN0
IFN0cmluZyYgc2RwTWlkKCkgY29uc3QgeyByZXR1cm4gbV9zZHBNaWQ7IH0KLSAgICBPcHRpb25h
bDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwTUxp
bmVJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3NkcE1MaW5lSW5kZXg7IH0KIAogICAgIHN0cnVjdCBGaWVs
ZHMgewogICAgICAgICBTdHJpbmcgZm91bmRhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8UlRDSWNl
Q29tcG9uZW50PiBjb21wb25lbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmlvcml0
eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSVENJY2VDb21wb25lbnQ+IGNvbXBvbmVudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJpb3JpdHk7CiAgICAgICAgIFN0cmluZyBh
ZGRyZXNzOwotICAgICAgICBPcHRpb25hbDxSVENJY2VQcm90b2NvbD4gcHJvdG9jb2w7Ci0gICAg
ICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBwb3J0OwotICAgICAgICBPcHRpb25hbDxSVENJ
Y2VDYW5kaWRhdGVUeXBlPiB0eXBlOwotICAgICAgICBPcHRpb25hbDxSVENJY2VUY3BDYW5kaWRh
dGVUeXBlPiB0Y3BUeXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiBw
cm90b2NvbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcG9ydDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxSVENJY2VDYW5kaWRhdGVUeXBlPiB0eXBlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRjcFR5cGU7CiAgICAgICAgIFN0
cmluZyByZWxhdGVkQWRkcmVzczsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHJl
bGF0ZWRQb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiByZWxhdGVk
UG9ydDsKICAgICAgICAgU3RyaW5nIHVzZXJuYW1lRnJhZ21lbnQ7CiAgICAgfTsKIAogICAgIFN0
cmluZyBmb3VuZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuZm91bmRhdGlvbjsgfQot
ICAgIE9wdGlvbmFsPFJUQ0ljZUNvbXBvbmVudD4gY29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4g
bV9maWVsZHMuY29tcG9uZW50OyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByaW9yaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9maWVsZHMucHJpb3JpdHk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFJU
Q0ljZUNvbXBvbmVudD4gY29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuY29tcG9u
ZW50OyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJpb3JpdHkoKSBjb25zdCB7IHJl
dHVybiBtX2ZpZWxkcy5wcmlvcml0eTsgfQogICAgIFN0cmluZyBhZGRyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWVsZHMuYWRkcmVzczsgfQotICAgIE9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiBw
cm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnByb3RvY29sOyB9Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQgc2hvcnQ+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy5wb3J0OyB9
Ci0gICAgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmllbGRzLnR5cGU7IH0KLSAgICBPcHRpb25hbDxSVENJY2VUY3BDYW5kaWRhdGVUeXBlPiB0
Y3BUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMudGNwVHlwZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8UlRDSWNlUHJvdG9jb2w+IHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMu
cHJvdG9jb2w7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9maWVsZHMucG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2Fu
ZGlkYXRlVHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnR5cGU7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRjcFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZpZWxkcy50Y3BUeXBlOyB9CiAgICAgU3RyaW5nIHJlbGF0ZWRBZGRyZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRlZEFkZHJlc3M7IH0KLSAgICBPcHRpb25hbDx1bnNp
Z25lZCBzaG9ydD4gcmVsYXRlZFBvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy5yZWxhdGVk
UG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHJlbGF0ZWRQb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRlZFBvcnQ7IH0KICAgICBTdHJpbmcgdXNlcm5h
bWVGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQ7IH0K
IAogICAgIFJUQ0ljZUNhbmRpZGF0ZUluaXQgdG9KU09OKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgUlRDSWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcm
IHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgsIEZpZWxkcyYm
KTsKKyAgICBSVENJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0
cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4
LCBGaWVsZHMmJik7CiAKICAgICBTdHJpbmcgbV9jYW5kaWRhdGU7CiAgICAgU3RyaW5nIG1fc2Rw
TWlkOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5kZXg7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbV9zZHBNTGluZUluZGV4OwogICAgIEZpZWxk
cyBtX2ZpZWxkczsKIH07CiAKLU9wdGlvbmFsPFJUQ0ljZUNhbmRpZGF0ZTo6RmllbGRzPiBwYXJz
ZUljZUNhbmRpZGF0ZVNEUChjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UlRDSWNlQ2Fu
ZGlkYXRlOjpGaWVsZHM+IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKaW5kZXggNTYwMzlkNmRkYjEz
MWY2YzQ4MzA3MDFmOGEzMzFjNGQ3YTAyMzgzNy4uNTE4NmFmYmVhNGYxZWUxMmUwZWNlMGUzNTc2
NGU0ZThhZmY2NWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IFJUQ0ljZUNhbmRpZGF0ZUluaXQgewogICAgIFN0cmluZyBj
YW5kaWRhdGU7CiAgICAgU3RyaW5nIHNkcE1pZDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9y
dD4gc2RwTUxpbmVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBN
TGluZUluZGV4OwogICAgIFN0cmluZyB1c2VybmFtZUZyYWdtZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAppbmRleCBiZTU3YmQ5ZGZjYjI4MzI4ZGQwNzc0ODRhYjJhMzkwZGYzMTYyZGMxLi40NjBj
YWRhOWI2ZjYyZDc4MTljZjdjZTc5NGJkZDVmMGQwMzA1OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcihS
VENBbnN3ZXJPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvCiAgICAgfSk7CiB9CiAK
LXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVzY3JpcHRpb24oT3B0aW9uYWw8RGVz
Y3JpcHRpb24+JiYgbG9jYWxEZXNjcmlwdGlvbiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om9w
dGlvbmFsPERlc2NyaXB0aW9uPiYmIGxvY2FsRGVzY3JpcHRpb24sIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNDbG9zZWQoKSkgewogICAgICAgICBwcm9taXNl
LT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwZW5kaW5nUmVtb3RlRGVz
Y3JpcHRpb24oKSBjb25zCiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0
ZShDYW5kaWRhdGUmJiBydGNDYW5kaWRhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKIHsKLSAgICBPcHRpb25hbDxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+IGNh
bmRpZGF0ZTsKICAgICBpZiAocnRjQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbmRpZGF0ZSA9IHN3
aXRjaE9uKCpydGNDYW5kaWRhdGUsIFsmZXhjZXB0aW9uXShSVENJY2VDYW5kaWRhdGVJbml0JiBp
bml0KSAtPiBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNmU1OGQ2
ODA5NDA4OTQ5NGIxMDQ2ODI3MzEwYzRkMGNkNGIyYjM2NS4uM2VjOGQ3NGYzNTA3MmIwMmY0Mzk1
ODJhMjE5NGU0ZThlMWZhNjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtOTQsOSArOTQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICBTdHJpbmcgaGFzaDsKICAgICAgICAg
U3RyaW5nIG5hbWVkQ3VydmU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtb2R1bHVzTGVu
Z3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtb2R1bHVzTGVuZ3RoOwogICAg
ICAgICBSZWZQdHI8VWludDhBcnJheT4gcHVibGljRXhwb25lbnQ7Ci0gICAgICAgIE9wdGlvbmFs
PGRvdWJsZT4gZXhwaXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGV4cGlyZXM7
CiAgICAgfTsKIAogICAgIHVzaW5nIEFsZ29yaXRobUlkZW50aWZpZXIgPSBWYXJpYW50PEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+LCBTdHJpbmc+OwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOwogCiAgICAgdXNpbmcgRGVzY3JpcHRpb24gPSBWYXJpYW50PFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkluaXQsIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+PjsKLSAgICB2
b2lkIHNldExvY2FsRGVzY3JpcHRpb24oT3B0aW9uYWw8RGVzY3JpcHRpb24+JiYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om9wdGlv
bmFsPERlc2NyaXB0aW9uPiYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudExvY2FsRGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nTG9jYWxEZXNjcmlw
dGlvbigpIGNvbnN0OwpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAg
ICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24o
KSBjb25zdDsKIAotICAgIHVzaW5nIENhbmRpZGF0ZSA9IE9wdGlvbmFsPFZhcmlhbnQ8UlRDSWNl
Q2FuZGlkYXRlSW5pdCwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4+PjsKKyAgICB1c2luZyBDYW5k
aWRhdGUgPSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UlRDSWNlQ2FuZGlkYXRlSW5pdCwgUmVmUHRy
PFJUQ0ljZUNhbmRpZGF0ZT4+PjsKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZShDYW5kaWRhdGUm
JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBSVENTaWduYWxpbmdTdGF0ZSBzaWdu
YWxpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmFsaW5nU3RhdGU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25J
Y2VFcnJvckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50LmNwcAppbmRleCAzZGNjYjdjYWIxNzM1Yjg2NzRi
MWM5YmJlNzE3OGNlZTliNTllNWNjLi5lNjY2NjhkMDFhZDg5MTc1YjZiZDNhZTc1MDVmYzIwZDgw
YTI3ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudCk7CiAKLVJlZjxSVENQZWVyQ29u
bmVjdGlvbkljZUVycm9yRXZlbnQ+IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudDo6Y3Jl
YXRlKENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIFN0cmlu
ZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVpbnQx
Nl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KQorUmVmPFJUQ1BlZXJDb25uZWN0aW9u
SWNlRXJyb3JFdmVudD4gUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpjcmVhdGUoQ2Fu
QnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRk
cmVzcywgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50MTZf
dCBlcnJvckNvZGUsIFN0cmluZyYmIGVycm9yVGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRp
ZGF0ZWVycm9yRXZlbnQsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBXVEZNb3ZlKGFkZHJlc3Mp
LCBwb3J0LCBXVEZNb3ZlKHVybCksIGVycm9yQ29kZSwgV1RGTW92ZShlcnJvclRleHQpKSk7CiB9
CkBAIC00Niw3ICs0Niw3IEBAIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IFJU
Q1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudDo6Y3JlYXRlKGNvbnN0CiAgICAgICAgIGluaXQu
Y2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVzIDogSXNDYW5jZWxhYmxlOjpObywgV1RGTW92
ZShpbml0LmFkZHJlc3MpLCBpbml0LnBvcnQsIFdURk1vdmUoaW5pdC51cmwpLCBXVEZNb3ZlKGlu
aXQuZXJyb3JDb2RlKSwgV1RGTW92ZShpbml0LmVycm9yVGV4dCkpKTsKIH0KIAotUlRDUGVlckNv
bm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNh
bmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJp
bmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KQorUlRDUGVl
ckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQsIFN0cmluZyYmIHVybCwgdWludDE2X3QgZXJyb3JDb2RlLCBTdHJpbmcmJiBlcnJvclRleHQp
CiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX2FkZHJl
c3MoV1RGTW92ZShhZGRyZXNzKSkKICAgICAsIG1fcG9ydChwb3J0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUVycm9y
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25JY2VFcnJvckV2ZW50LmgKaW5kZXggNDIyMTNkZDljYWRkMjFhODc3N2U1MDdmOTZkN2Vk
MDcyNzhkZTQxMy4uMGE1ODZiYjQ5Njk1YjFkMjRhNzUwMDE0NjY5NjRmNGQ4NTNkODZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkljZUVycm9yRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5oCkBAIC00MSwxNyArNDEsMTcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAgICAgICBTdHJpbmcg
YWRkcmVzczsKLSAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIHVp
bnQxNl90IGVycm9yQ29kZSB7IDAgfTsKICAgICAgICAgU3RyaW5nIGVycm9yVGV4dDsKICAgICB9
OwogCiAgICAgc3RhdGljIFJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYpOwotICAgIHN0YXRpYyBSZWY8UlRDUGVl
ckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50PiBjcmVhdGUoQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmws
IHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KTsKKyAgICBzdGF0aWMgUmVm
PFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudD4gY3JlYXRlKENhbkJ1YmJsZSwgSXNDYW5j
ZWxhYmxlLCBTdHJpbmcmJiBhZGRyZXNzLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBT
dHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JUZXh0KTsKIAog
ICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fYWRkcmVzczsgfQot
ICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsg
fQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICB1
aW50MTZfdCBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgZXJyb3JUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclRleHQ7IH0KQEAg
LTU5LDEwICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNl
RXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJs
ZSwgU3RyaW5nJiYgYWRkcmVzcywgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIFN0cmluZyYmIHVy
bCwgdWludDE2X3QgZXJyb3JDb2RlLCBTdHJpbmcmJiBlcnJvclRleHQpOworICAgIFJUQ1BlZXJD
b25uZWN0aW9uSWNlRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRkcmVzcywgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
cG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50MTZfdCBlcnJvckNvZGUsIFN0cmluZyYmIGVycm9yVGV4
dCk7CiAKICAgICBTdHJpbmcgbV9hZGRyZXNzOwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtX3Bv
cnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OwogICAgIFN0cmluZyBtX3Vy
bDsKICAgICB1aW50MTZfdCBtX2Vycm9yQ29kZSB7IDAgfTsKICAgICBTdHJpbmcgbV9lcnJvclRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
Y3BQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
Y3BQYXJhbWV0ZXJzLmgKaW5kZXggNjVlODJjYzM0ZGFhMTUyNWJkNDg5MDlhZmY1Mjc1ZTAxZDlk
MjY2NC4uN2U4YzFkMTI5NzY1NTJlOTFmZDE2MWU1NWQyNzFjYjcwZTVlNzUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdGNwUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRjcFBhcmFtZXRl
cnMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSVENS
dGNwUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGNuYW1lOwotICAgIE9wdGlvbmFsPGJvb2w+IHJl
ZHVjZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVkdWNlZFNpemU7CiB9OwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwQ29u
dHJpYnV0aW5nU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cENvbnRyaWJ1dGluZ1NvdXJjZS5oCmluZGV4IDQwNjY5MjNiNjkyNzJjZWY3OWQ1MWRkOTIy
ZjAyOTQwMWQyNDA2YjguLmFjNzNiYWI5NmExMDU2ZmE3NjgzMDdiYjQwMWU0MGM2MzczZjkwMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwQ29u
dHJpYnV0aW5nU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBDb250cmlidXRpbmdTb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3QgUlRD
UnRwQ29udHJpYnV0aW5nU291cmNlIHsKICAgICBkb3VibGUgdGltZXN0YW1wOwogICAgIHVuc2ln
bmVkIGxvbmcgcnRwVGltZXN0YW1wOwogICAgIHVuc2lnbmVkIGxvbmcgc291cmNlOwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXVk
aW9MZXZlbDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzLmgKaW5kZXggZjhjOTA5ZGRi
YWU3M2FmNzlkMjgwNzdlNWI3ZjU0NDNkMWE2MDhkYi4uNTc0ZTAzNTJhMjEyNTg2ZDY1M2U5OTcw
ZjVkMWNlMjMwOTNiNDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cEVuY29kaW5nUGFyYW1ldGVycy5oCkBAIC0zOSwxMCAr
MzksMTAgQEAgc3RydWN0IFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyA6IFJUQ1J0cENvZGluZ1Bh
cmFtZXRlcnMgewogICAgIHVuc2lnbmVkIGxvbmcgc3NyYyB7IDAgfTsKICAgICBSVENSdHBSdHhQ
YXJhbWV0ZXJzIHJ0eDsKICAgICBSVENSdHBGZWNQYXJhbWV0ZXJzIGZlYzsKLSAgICBPcHRpb25h
bDxSVENEdHhTdGF0dXM+IGR0eDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ0R0eFN0YXR1cz4gZHR4
OwogICAgIGJvb2wgYWN0aXZlIHsgZmFsc2V9OwogICAgIFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0
eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07Ci0gICAgT3B0aW9uYWw8UlRDUHJpb3JpdHlUeXBl
PiBuZXR3b3JrUHJpb3JpdHk7CisgICAgc3RkOjpvcHRpb25hbDxSVENQcmlvcml0eVR5cGU+IG5l
dHdvcmtQcmlvcml0eTsKICAgICB1bnNpZ25lZCBsb25nIG1heEJpdHJhdGUgeyAwIH07CiAgICAg
dW5zaWduZWQgbG9uZyBtYXhGcmFtZXJhdGUgeyAwIH07CiAgICAgZG91YmxlIHNjYWxlUmVzb2x1
dGlvbkRvd25CeSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggOWEwMzg1ZDNiNDUzOWM0MDUwZjc2ZTkw
OGY5NjgzYWRlMjViNTNkYy4uZDVjNTRjMGM0OTlmYmEzYTE4YTNiMzUyNjZlYzk5ZDhmYmI4Mjdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSVENSdHBSZWNlaXZlcjo6Z2V0
U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1fY29ubmVjdGlvbi0+
Z2V0U3RhdHMoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi1PcHRpb25hbDxSVENSdHBD
YXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQorc3RkOjpvcHRpb25hbDxS
VENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIHJl
dHVybiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQs
IGtpbmQpOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJl
Y2VpdmVyOjpzZXRUcmFuc2Zvcm0oc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4mCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4g
UlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSgpCitzdGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9y
bTo6SW50ZXJuYWw+IFJUQ1J0cFJlY2VpdmVyOjp0cmFuc2Zvcm0oKQogewogICAgIGlmICghbV90
cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKaW5kZXggYjlkOTk2OTFkNjM4YWQ4
YjVhMWRkNzE3YWI0MTQ1ODBhNDI5NWQwMC4uZDgzODdlZjQzOGJhZGJhZjg4OGIwOGVjZjNlZDI0
N2I0OGIxZGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwUmVjZWl2ZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IH5SVENSdHBSZWNlaXZlcigpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cENhcGFiaWxp
dGllcz4gZ2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmIGtpbmQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4g
Z2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIGtp
bmQpOwogCiAgICAgdm9pZCBzdG9wKCk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQo
KTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBP
cHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybSgpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNm
b3JtPiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oCmluZGV4
IDgxNmNhNzljOWQzYjcwYjI3OTRlYjk2YjgyN2NmYTUyOTMzNjkzNzcuLjQwZDI4ZDMzNjQzYjE5
MTE3NDA2YTk0NzQxYzNiYzhjNDVkNDJjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zv
cm0uaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJU
Q1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVj
ZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIsIE9wdGlv
bmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiByZWNl
aXZlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1vdmUodHJhbnNmb3Jt
KSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2ZXIu
dHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3Jt
KFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06
OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNmb3JtKFJU
Q1J0cFRyYW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IDJjNjczZmY0ZWVh
ZTM2MTU4MTc2MjYxMWRhNmM2MWY3ZTE2NTU0ODAuLjQwOWYzNTc0Zjc5YWZiNmJjOGZkZjYwZDM1
MzU0NzJlZTk0MzcyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCkKIHsKIH0K
IAotdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5
JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5
KENyeXB0b0tleSYga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRleCAzMWUxNDZkZjEx
ZmY4NzJmMjZjYjlmODExOWIyZmU5OWJmMjJjNWY4Li42Yjc4YmJmNWM2NWQyYzU3ZmVmYmM2OTg0
YjA4Mjg4YmNiOGVmZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9ucyBvcHRpb25zKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybShjb250ZXh0LCBvcHRpb25zKSk7IH0K
ICAgICB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CiAKLSAgICB2b2lkIHNldEVuY3J5cHRpb25L
ZXkoQ3J5cHRvS2V5JiwgT3B0aW9uYWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKICAgICBib29sIGlz
QXR0YWNoZWQoKSBjb25zdDsKICAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAppbmRl
eCBmNjlmMTg5NThhMTA0MjRmYWRjYTllYTZmZDY2MzY2NTJhZThkMjYyLi42MDMwMGRlY2QzZTky
NDEyMjQyN2FlY2E5ZTliZTgyOTcwYmY1MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdCBTRnJhbWVIZWFkZXJJbmZvIHsKICAgICB1aW50
NjRfdCBrZXlJZDsKICAgICB1aW50NjRfdCBjb3VudGVyOwogfTsKLXN0YXRpYyBpbmxpbmUgT3B0
aW9uYWw8U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U0ZyYW1lSGVh
ZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgYXV0byogc3RhcnQgPSBkYXRhOwogCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKIHsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRp
b25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBr
ZXlJZCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNy
eXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBrZXlJZCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9rZXlMb2NrIH07CiAgICAg
cmV0dXJuIHVwZGF0ZUVuY3J5cHRpb25LZXkocmF3S2V5LCBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5
czo6WWVzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlv
bmFsPHVpbnQ2NF90PiBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5cyBzaG91bGRVcGRhdGVLZXlzKQor
RXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnVwZGF0ZUVuY3J5cHRp
b25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGtleUlkLCBTaG91bGRVcGRhdGVLZXlzIHNob3VsZFVwZGF0ZUtleXMpCiB7CiAgICAgQVNT
RVJUKG1fa2V5TG9jay5pc0xvY2tlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCmluZGV4
IGRjNzQ5ZjQ1NWI4YmI5YzRjNWIxZWM0MTMyMDJjNzM5N2RjMjU5MzIuLjE5ODg0OTVhYTlkNjRl
MDM1MDlhMmUxYzllMzVmNjJiODdkNTdjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25TaXplKHVp
bnQ2NF90KTsKICAgICB2b2lkIHNldE1lZGlhVHlwZShSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpN
ZWRpYVR5cGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RW5j
cnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSwgT3B0aW9uYWw8dWludDY0
X3Q+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRFbmNyeXB0aW9u
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
Pik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFu
c2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbktl
eTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCiAgICAgZW51
bSBjbGFzcyBTaG91bGRVcGRhdGVLZXlzIHsgTm8sIFllcyB9OwotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9w
dGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6Olll
cykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2NrKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB1
cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6Olll
cykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2NrKTsKIAogICAgIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gY29tcHV0ZVNhbHRLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5kZXggZjg5MzI5Mzc3NjQ4NTA0YmM4MjQ5ODZi
MzMyODczNzIzNjQwODdmZC4uYTk2ZTRjYTc1YmU2NzQ5NGJiZTdlOTMwODI5ZWYxNmY1MzBiMGVm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2VuZGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUlRDUnRwU2VuZGVyOjppc0NyZWF0
ZWRCeShjb25zdCBSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikgY29uc3QKICAgICByZXR1
cm4gJmNvbm5lY3Rpb24gPT0gbV9jb25uZWN0aW9uLmdldCgpOwogfQogCi1PcHRpb25hbDxSVENS
dHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFNlbmRlcjo6Z2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8
UlRDUnRwQ2FwYWJpbGl0aWVzPiBSVENSdHBTZW5kZXI6OmdldENhcGFiaWxpdGllcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgcmV0
dXJuIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtp
bmQpOwogfQpAQCAtMjA0LDcgKzIwNCw3IEBAIFJUQ0RUTUZTZW5kZXIqIFJUQ1J0cFNlbmRlcjo6
ZHRtZigpCiAgICAgcmV0dXJuIG1fZHRtZlNlbmRlci5nZXQoKTsKIH0KIAotT3B0aW9uYWw8UlRD
UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5zY2VpdmVy
RGlyZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5zY2VpdmVyRGlyZWN0aW9uKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI0Niw3ICsy
NDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybShzdGQ6
OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiYmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0
aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwU2VuZGVyOjp0cmFuc2Zvcm0o
KQorc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiBSVENSdHBTZW5kZXI6
OnRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5oCmluZGV4IDUyYWJmM2QxOWUzOTZlZWM4NzU2ODczNzAwZWY1MzhiYTQyMTU5NWIuLmJmMjc3
Y2FmNWExYzkxYzkzMDdhY2Y5ODM2YTE2NzZhODA2MWQ4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSVENQZWVyQ29u
bmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRl
ckJhY2tlbmQ+JiYpOwogICAgIH5SVENSdHBTZW5kZXIoKTsKIAotICAgIHN0YXRpYyBPcHRpb25h
bDxSVENSdHBDYXBhYmlsaXRpZXM+IGdldENhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENS
dHBDYXBhYmlsaXRpZXM+IGdldENhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiBraW5kKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgeyBy
ZXR1cm4gbV90cmFjay5nZXQoKTsgfQogCkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQ3JlYXRlZEJ5KGNvbnN0IFJUQ1BlZXJDb25uZWN0aW9uJikgY29uc3Q7CiAKICAgICBS
VENEVE1GU2VuZGVyKiBkdG1mKCk7Ci0gICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJl
Y3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVjdGlvbigpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVj
dGlvbigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4g
dHJhbnNmb3JtKCk7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFs
PiB0cmFuc2Zvcm0oKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oc3RkOjp1
bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0
aFRyYW5zZm9ybS5oCmluZGV4IDQ2ZDM3YTc3MzZmMTZkYzA3OTViOTVkNDA1OGVhYTk0M2ZkYTZi
NzcuLmQ0YmUxYjRlNjk4NDA0Mjc4YjhjZThlYjY0YzVlZTNjNDMzNzY2ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5z
Zm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5zZm9y
bTsKIAogY2xhc3MgUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShSVENSdHBT
ZW5kZXImIHNlbmRlcikgeyByZXR1cm4gc2VuZGVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBTZW5kZXImIHNlbmRlciwgT3B0
aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHNl
bmRlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1vdmUodHJhbnNmb3Jt
KSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJldHVybiBzZW5kZXIudHJhbnNm
b3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJUQ1J0
cFNlbmRlciYgc2VuZGVyLCBzdGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+
JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9y
bTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmgKaW5kZXggNTcyYWU4NTk4NTg3YmEw
NWVjYTE4OThiYzQ3MDUwNmNkMGI1MDEzMy4uN2YzMzgxNmE3NWZkMWRjMzBjNmY0ODc3ZDk1Njg0
MmVhZjA2Y2UzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5oCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSVENSdHBTeW5jaHJvbml6YXRp
b25Tb3VyY2UgOiBSVENSdHBDb250cmlidXRpbmdTb3VyY2UgewotICAgIE9wdGlvbmFsPGJvb2w+
IHZvaWNlQWN0aXZpdHlGbGFnOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0
eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCmluZGV4
IDM2NzZhYjQ1YzJkNjk0ZjVmNjllYmY4MGRmOTllN2MwNmMyY2JmZDkuLmMyZGZkY2UzNTcyZjNl
OTUxMDVlZjIwZWU0ZDFlNzFlM2JkMDBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIFJUQ1J0cFRyYW5zY2VpdmVyOjpkaXJl
Y3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQtPmRpcmVjdGlvbigpOwogfQogCi1P
cHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6OmN1
cnJlbnREaXJlY3Rpb24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAogewog
ICAgIGlmICghbV9iYWNrZW5kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZl
ci5oCmluZGV4IDRjMWQ0MDQ4MzUzYjRmNjVhNWVhZDJiMTc0MDg2MTcwNTNjMjdjNmEuLmE1MWRi
NjIwMWM4NGQ0YTQ2YzllZmQ5NjA5YTRmZjkzNzVjMjhlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsK
IAogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwotICAg
IE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50RGlyZWN0aW9uKCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3Vy
cmVudERpcmVjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uKTsKICAgICBTdHJpbmcgbWlkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZC5oCmluZGV4IDNjNWZiMTVmYzFhNzY0ZGUyYmUyN2EwMDcwZDk0YzcwNzQyZjNl
MzMuLjRiZjUwZmMxZWZmZDhkNzA1ZDY0NDdjMTcyZmU5NDBjZTU5MDEzODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlvbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJE
aXJlY3Rpb24+IGN1cnJlbnREaXJlY3Rpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldERpcmVjdGlvbihSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbikgPSAwOwogCiAgICAgdmly
dHVhbCBTdHJpbmcgbWlkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IDljYWViOTZmY2IyODYyODhl
NWZjMWEwZThkZDRlNjhmYTc4NTUwYmUuLmRhZjg5N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZmNjZm
YTYxNzc1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiBSVENSdHBUcmFuc2Zv
cm06OmZyb20oT3B0aW9uYWw8SW50ZXJuYWw+JiYgaW50ZXJuYWwpCitzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwVHJhbnNmb3JtPiBSVENSdHBUcmFuc2Zvcm06OmZyb20oc3RkOjpvcHRpb25hbDxJbnRl
cm5hbD4mJiBpbnRlcm5hbCkKIHsKICAgICBpZiAoIWludGVybmFsKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zZm9ybS5oCmluZGV4IDI0ZjJkYjAzYmE5NzkwMWFhMmYxMDFiOWQxMjk4MzlkN2E1
YmUzZGYuLjFhNzk1OGI1MDc4MjJhNDE5ZDk0YTc5YTM0ZmMwMjE0Njk3ZmZiZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0u
aApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm0gIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBJbnRlcm5hbCA9IFZhcmlhbnQ8
UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zv
cm0+PjsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShP
cHRpb25hbDxJbnRlcm5hbD4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBU
cmFuc2Zvcm0+IGZyb20oc3RkOjpvcHRpb25hbDxJbnRlcm5hbD4mJik7CiAKICAgICBleHBsaWNp
dCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwmJik7CiAgICAgflJUQ1J0cFRyYW5zZm9ybSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKaW5kZXggMDM5MTM5MzllYmM5MTQ4MmZjYTlhMGM3ZmY0
MjVjMDZkMTFlYzc0Ni4uZWMwZDlhMjZiZTQ0NDFjOGQ2Y2JjMTQ0NTk1MmNjM2ZmMzVkNGM3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0IFJU
Q0VuY29kZWRBdWRpb0ZyYW1lTWV0YWRhdGEgewogfTsKIAogc3RydWN0IFJUQ0VuY29kZWRWaWRl
b0ZyYW1lTWV0YWRhdGEgewotICAgIE9wdGlvbmFsPGludDY0X3Q+IGZyYW1lSWQ7CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBmcmFtZUlkOwogICAgIFZlY3RvcjxpbnQ2NF90PiBkZXBlbmRl
bmNpZXM7CiAgICAgdWludDE2X3Qgd2lkdGg7CiAgICAgdWludDE2X3QgaGVpZ2h0OwotICAgIE9w
dGlvbmFsPGludDMyX3Q+IHNwYXRpYWxJbmRleDsKLSAgICBPcHRpb25hbDxpbnQzMl90PiB0ZW1w
b3JhbEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gc3BhdGlhbEluZGV4OworICAg
IHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gdGVtcG9yYWxJbmRleDsKICAgICB1aW50MzJfdCBzeW5j
aHJvbml6YXRpb25Tb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKaW5kZXggZjMxOWUzZTM5N2JkNmU4OGIwNDYx
MWE0ZmNiZTViNGIwNDI0MjljNS4uMTI1NGI5MzY3NGY3NTRhM2I5MGQ5NDU0ZTZlMzE1ODcxNDQ2
OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENT
dGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXBvcnQuaApAQCAtNjksMjIgKzY5LDIyIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
c3RydWN0IFJlY2VpdmVkUnRwU3RyZWFtU3RhdHMgOiBSdHBTdHJlYW1TdGF0cyB7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGlu
dDY0X3Q+IHBhY2tldHNMb3N0OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGppdHRlcjsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tldHNEaXNjYXJkZWQ7Ci0gICAgICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVwYWlyZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBidXJzdFBhY2tldHNMb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYnVyc3RQYWNr
ZXRzRGlzY2FyZGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gYnVyc3RMb3NzQ291bnQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBidXJzdERpc2NhcmRDb3VudDsKLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiBidXJzdExvc3NSYXRlOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IGJ1cnN0RGlzY2FyZFJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FwTG9zc1JhdGU7
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FwRGlzY2FyZFJhdGU7Ci0gICAgICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
cGFydGlhbEZyYW1lc0xvc3Q7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdWxsRnJhbWVz
TG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFja2V0c1JlY2VpdmVkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhY2tldHNMb3N0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gaml0dGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWNrZXRzRGlzY2FyZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWNr
ZXRzUmVwYWlyZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ1cnN0UGFja2V0
c0xvc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ1cnN0UGFja2V0c0Rpc2Nh
cmRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnVyc3RMb3NzQ291bnQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGJ1cnN0RGlzY2FyZENvdW50OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYnVyc3RMb3NzUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGJ1cnN0RGlzY2FyZFJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBnYXBMb3NzUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhcERpc2Nh
cmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJ0aWFsRnJhbWVzTG9zdDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnVsbEZyYW1lc0xvc3Q7CiAgICAgfTsKIAogICAg
IHN0cnVjdCBJbmJvdW5kUnRwU3RyZWFtU3RhdHMgOiBSZWNlaXZlZFJ0cFN0cmVhbVN0YXRzIHsK
QEAgLTkyLDQ0ICs5Miw0NCBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHJlY2VpdmVySWQ7
CiAgICAgICAgIFN0cmluZyByZW1vdGVJZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZy
YW1lc0RlY29kZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBrZXlGcmFtZXNEZWNvZGVk
OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVXaWR0aDsKLSAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGZyYW1lSGVpZ2h0OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJh
bWVCaXREZXB0aDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1bTsKLSAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB0b3RhbERlY29kZVRpbWU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxJbnRlckZy
YW1lRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxTcXVhcmVkSW50ZXJGcmFt
ZURlbGF5OwotICAgICAgICBPcHRpb25hbDxib29sPiAgdm9pY2VBY3Rpdml0eUZsYWc7Ci0gICAg
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wOwotICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBoZWFkZXJCeXRlc1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZmVjUGFja2V0c1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmVjUGFj
a2V0c0Rpc2NhcmRlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzRmFpbGVkRGVjcnlwdGlvbjsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tldHNEdXBsaWNhdGVkOwotICAgICAgICBPcHRp
b25hbDx1aW50MzJfdD4gbmFja0NvdW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZmly
Q291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBwbGlDb3VudDsKLSAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGVzdGlt
YXRlZFBsYXlvdXRUaW1lc3RhbXA7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gaml0dGVyQnVm
ZmVyRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZmZXJFbWl0dGVk
Q291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0b3RhbFNhbXBsZXNSZWNlaXZlZDsK
LSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNEZWNvZGVkV2l0aFNpbGs7Ci0gICAg
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVzRGVjb2RlZFdpdGhDZWx0OwotICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gY29uY2VhbGVkU2FtcGxlczsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHNpbGVudENvbmNlYWxlZFNhbXBsZXM7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBjb25jZWFsbWVudEV2ZW50czsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGluc2VydGVk
U2FtcGxlc0ZvckRlY2VsZXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlbW92
ZWRTYW1wbGVzRm9yQWNjZWxlcmF0aW9uOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF1ZGlv
TGV2ZWw7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxBdWRpb0VuZXJneTsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBmcmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBrZXlG
cmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZVdpZHRo
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVCaXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcXBTdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbERlY29kZVRp
bWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEludGVyRnJhbWVEZWxheTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsU3F1YXJlZEludGVyRnJhbWVEZWxh
eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiAgdm9pY2VBY3Rpdml0eUZsYWc7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdmVyYWdlUnRjcEludGVydmFsOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJCeXRlc1JlY2VpdmVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmZWNQYWNrZXRzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZlY1BhY2tldHNEaXNjYXJkZWQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhY2tldHNGYWlsZWREZWNyeXB0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWNrZXRzRHVwbGljYXRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbmFja0NvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGxpQ291bnQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGppdHRlckJ1ZmZlckRlbGF5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBq
aXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHRvdGFsU2FtcGxlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBz
YW1wbGVzRGVjb2RlZFdpdGhTaWxrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBz
YW1wbGVzRGVjb2RlZFdpdGhDZWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBj
b25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzaWxlbnRD
b25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25jZWFs
bWVudEV2ZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaW5zZXJ0ZWRTYW1w
bGVzRm9yRGVjZWxlcmF0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZW1v
dmVkU2FtcGxlc0ZvckFjY2VsZXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGF1ZGlvTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEF1ZGlvRW5l
cmd5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxTYW1wbGVzRHVyYXRpb247
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOwogCiAgICAg
ICAgIFN0cmluZyB0cmFja0lkOwogICAgIH07CkBAIC0xMzgsNjAgKzEzOCw2MCBAQCBwdWJsaWM6
CiAgICAgICAgIFJlbW90ZUluYm91bmRSdHBTdHJlYW1TdGF0cygpIHsgdHlwZSA9IFJUQ1N0YXRz
UmVwb3J0OjpUeXBlOjpSZW1vdGVJbmJvdW5kUnRwOyB9CiAKICAgICAgICAgU3RyaW5nIGxvY2Fs
SWQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gcm91bmRUcmlwVGltZTsKLSAgICAgICAgT3B0
aW9uYWw8ZG91YmxlPiB0b3RhbFJvdW5kVHJpcFRpbWU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gZnJhY3Rpb25Mb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVwb3J0c1JlY2Vp
dmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcm91bmRUcmlwVGltZU1lYXN1cmVtZW50
czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJvdW5kVHJpcFRpbWU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFJvdW5kVHJpcFRpbWU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBmcmFjdGlvbkxvc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHJlcG9ydHNSZWNlaXZlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cm91bmRUcmlwVGltZU1lYXN1cmVtZW50czsKICAgICB9OwogCiAgICAgc3RydWN0IFNlbnRSdHBT
dHJlYW1TdGF0cyA6IFJ0cFN0cmVhbVN0YXRzIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IHBhY2tldHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYWNrZXRzU2VudDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OwogICAgIH07CiAKICAgICBzdHJ1Y3QgT3V0Ym91
bmRSdHBTdHJlYW1TdGF0cyA6IFNlbnRSdHBTdHJlYW1TdGF0cyB7CiAgICAgICAgIE91dGJvdW5k
UnRwU3RyZWFtU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6T3V0Ym91bmRS
dHA7IH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcnR4U3NyYzsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gcnR4U3NyYzsKICAgICAgICAgU3RyaW5nIG1lZGlhU291cmNl
SWQ7CiAgICAgICAgIFN0cmluZyBzZW5kZXJJZDsKICAgICAgICAgU3RyaW5nIHJlbW90ZUlkOwog
ICAgICAgICBTdHJpbmcgcmlkOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGxhc3RQYWNrZXRT
ZW50VGltZXN0YW1wOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNTZW50
OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcGFja2V0c0Rpc2NhcmRlZE9uU2VuZDsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzRGlzY2FyZGVkT25TZW5kOwotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gZmVjUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiByZXRyYW5zbWl0dGVkUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHRhcmdl
dEJpdHJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0b3RhbEVuY29kZWRCeXRlc1Rh
cmdldDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lV2lkdGg7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IGZyYW1lQml0RGVwdGg7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVzUGVyU2Vjb25k
OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzU2VudDsKLSAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGh1Z2VGcmFtZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZnJhbWVzRW5jb2RlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGtleUZyYW1lc0VuY29k
ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEaXNjYXJkZWRPblNlbmQ7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1bTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVz
RW5jb2RlZFdpdGhTaWxrOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2FtcGxlc0VuY29k
ZWRXaXRoQ2VsdDsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7Ci0g
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxFbmNvZGVUaW1lOwotICAgICAgICBPcHRpb25h
bDxkb3VibGU+IHRvdGFsUGFja2V0U2VuZERlbGF5OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Ci0gICAgICAgIC8vIE9wdGlvbmFsPFJUQ1F1YWxpdHlMaW1p
dGF0aW9uUmVhc29uIHF1YWxpdHlMaW1pdGF0aW9uUmVhc29uOwotICAgICAgICAvLyBPcHRpb25h
bDxyZWNvcmQ8RE9NU3RyaW5nLCBkb3VibGU+IHF1YWxpdHlMaW1pdGF0aW9uRHVyYXRpb25zOwot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcXVhbGl0eUxpbWl0YXRpb25SZXNvbHV0aW9uQ2hh
bmdlczsKLSAgICAgICAgLy8gT3B0aW9uYWw8cmVjb3JkPFVTVlN0cmluZywgdW5zaWduZWQgbG9u
ZyBsb25nPiBwZXJEc2NwUGFja2V0c1NlbnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBu
YWNrQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKLSAgICAgICAg
T3B0aW9uYWw8dWludDMyX3Q+IHBsaUNvdW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
c2xpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsYXN0UGFja2V0U2VudFRp
bWVzdGFtcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNTZW50
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYWNrZXRzRGlzY2FyZGVkT25TZW5k
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRlc0Rpc2NhcmRlZE9uU2VuZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZmVjUGFja2V0c1NlbnQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJldHJhbnNtaXR0ZWRQYWNrZXRzU2VudDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmV0cmFuc21pdHRlZEJ5dGVzU2VudDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRhcmdldEJpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBmcmFtZVdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBmcmFtZUhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVC
aXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lc1BlclNlY29uZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzU2VudDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaHVnZUZyYW1lc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGZyYW1lc0VuY29kZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGtleUZyYW1lc0VuY29kZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZy
YW1lc0Rpc2NhcmRlZE9uU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXBT
dW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNFbmNvZGVkV2l0aFNpbGs7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNhbXBsZXNFbmNvZGVkV2l0aENlbHQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEVuY29kZVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiB0b3RhbFBhY2tldFNlbmREZWxheTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7CisgICAgICAgIC8vIHN0ZDo6b3B0aW9uYWw8UlRD
UXVhbGl0eUxpbWl0YXRpb25SZWFzb24gcXVhbGl0eUxpbWl0YXRpb25SZWFzb247CisgICAgICAg
IC8vIHN0ZDo6b3B0aW9uYWw8cmVjb3JkPERPTVN0cmluZywgZG91YmxlPiBxdWFsaXR5TGltaXRh
dGlvbkR1cmF0aW9uczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcXVhbGl0eUxp
bWl0YXRpb25SZXNvbHV0aW9uQ2hhbmdlczsKKyAgICAgICAgLy8gc3RkOjpvcHRpb25hbDxyZWNv
cmQ8VVNWU3RyaW5nLCB1bnNpZ25lZCBsb25nIGxvbmc+IHBlckRzY3BQYWNrZXRzU2VudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbmFja0NvdW50OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGxpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50Owog
ICAgICAgICAvLyBET01TdHJpbmcgZW5jb2RlckltcGxlbWVudGF0aW9uOwogCiAgICAgICAgIFN0
cmluZyB0cmFja0lkOwpAQCAtMjAxLDMxICsyMDEsMzEgQEAgcHVibGljOgogICAgICAgICBNZWRp
YVN0cmVhbVRyYWNrU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6VHJhY2s7
IH0KIAogICAgICAgICBTdHJpbmcgdHJhY2tJZGVudGlmaWVyOwotICAgICAgICBPcHRpb25hbDxi
b29sPiByZW1vdGVTb3VyY2U7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuZGVkOwotICAgICAg
ICBPcHRpb25hbDxib29sPiBkZXRhY2hlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZy
YW1lV2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBmcmFtZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzUmVj
ZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEZWNvZGVkOwotICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzRHJvcHBlZDsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDMyX3Q+IGZyYW1lc0NvcnJ1cHRlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnRp
YWxGcmFtZXNMb3N0OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnVsbEZyYW1lc0xvc3Q7
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKLSAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0
dXJuTG9zc0VuaGFuY2VtZW50OwotCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmVlemVD
b3VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBhdXNlQ291bnQ7Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gdG90YWxGcmVlemVzRHVyYXRpb247Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gdG90YWxQYXVzZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3Rh
bEZyYW1lc0R1cmF0aW9uOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHN1bU9mU3F1YXJlZEZy
YW1lc0R1cmF0aW9uOwotCi0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZmZXJG
bHVzaGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlbW90ZVNvdXJjZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBkZXRhY2hlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVXaWR0aDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVIZWlnaHQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGZyYW1lc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGZyYW1lc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNE
ZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNDb3JydXB0ZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnRpYWxGcmFtZXNMb3N0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBmdWxsRnJhbWVzTG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGF1ZGlvTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBlY2hv
UmV0dXJuTG9zczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGVjaG9SZXR1cm5Mb3Nz
RW5oYW5jZW1lbnQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJlZXplQ291
bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhdXNlQ291bnQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyZWV6ZXNEdXJhdGlvbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUGF1c2VzRHVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB0b3RhbEZyYW1lc0R1cmF0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gc3VtT2ZTcXVhcmVkRnJhbWVzRHVyYXRpb247CisKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gaml0dGVyQnVmZmVyRmx1c2hlczsKICAgICB9OwogCiAgICAgc3RydWN0
IERhdGFDaGFubmVsU3RhdHMgOiBTdGF0cyB7CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGFiZWw7CiAgICAgICAgIFN0cmluZyBwcm90b2Nv
bDsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBkYXRhY2hhbm5lbGlkOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGludD4gZGF0YWNoYW5uZWxpZDsKICAgICAgICAgU3RyaW5nIHN0YXRlOwotICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gbWVzc2FnZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gYnl0ZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWVzc2FnZXNSZWNl
aXZlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1lc3NhZ2VzU2VudDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtZXNzYWdlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRl
c1JlY2VpdmVkOwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIEljZUNhbmRpZGF0ZVBhaXJTdGF0
ZSB7CkBAIC0yNTcsMzUgKzI1NywzNSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBsb2NhbENh
bmRpZGF0ZUlkOwogICAgICAgICBTdHJpbmcgcmVtb3RlQ2FuZGlkYXRlSWQ7CiAgICAgICAgIElj
ZUNhbmRpZGF0ZVBhaXJTdGF0ZSBzdGF0ZTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBy
aW9yaXR5OwotICAgICAgICBPcHRpb25hbDxib29sPiBub21pbmF0ZWQ7Ci0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IHdyaXRhYmxlOwotICAgICAgICBPcHRpb25hbDxib29sPiByZWFkYWJsZTsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxSb3Vu
ZFRyaXBUaW1lOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRSb3VuZFRyaXBUaW1l
OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF2YWlsYWJsZU91dGdvaW5nQml0cmF0ZTsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGU7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0c1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gcmVxdWVzdHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzcG9u
c2VzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXNwb25zZXNTZW50Owot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmV0cmFuc21pc3Npb25zUmVjZWl2ZWQ7Ci0gICAg
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWlzc2lvbnNTZW50OwotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gY29uc2VudFJlcXVlc3RzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBjb25zZW50UmVxdWVzdHNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gY29uc2VudFJlc3BvbnNlc1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4g
Y29uc2VudFJlc3BvbnNlc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBy
aW9yaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5vbWluYXRlZDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiByZWFkYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRlc1JlY2VpdmVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxSb3VuZFRyaXBUaW1lOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY3VycmVudFJvdW5kVHJpcFRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBhdmFpbGFibGVPdXRnb2luZ0JpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHJlcXVlc3RzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHJlcXVlc3RzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVz
cG9uc2VzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNl
c1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJldHJhbnNtaXNzaW9uc1Jl
Y2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWlzc2lvbnNT
ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25zZW50UmVxdWVzdHNSZWNl
aXZlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlcXVlc3RzU2Vu
dDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlc3BvbnNlc1JlY2Vp
dmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25zZW50UmVzcG9uc2VzU2Vu
dDsKICAgICB9OwogCiAgICAgc3RydWN0IEljZUNhbmRpZGF0ZVN0YXRzIDogU3RhdHMgewogICAg
ICAgICBTdHJpbmcgdHJhbnNwb3J0SWQ7CiAgICAgICAgIFN0cmluZyBhZGRyZXNzOwotICAgICAg
ICBPcHRpb25hbDxpbnQzMl90PiBwb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+
IHBvcnQ7CiAgICAgICAgIFN0cmluZyBwcm90b2NvbDsKLSAgICAgICAgT3B0aW9uYWw8UlRDSWNl
Q2FuZGlkYXRlVHlwZT4gY2FuZGlkYXRlVHlwZTsKLSAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4g
cHJpb3JpdHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gY2Fu
ZGlkYXRlVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBwcmlvcml0eTsKICAg
ICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBkZWxldGVkIHsgZmFsc2UgfTsKICAgICB9
OwpAQCAtMzA3LDEyICszMDcsMTIgQEAgcHVibGljOgogICAgIHN0cnVjdCBDb2RlY1N0YXRzIDog
U3RhdHMgewogICAgICAgICBDb2RlY1N0YXRzKCkgeyB0eXBlID0gUlRDU3RhdHNSZXBvcnQ6OlR5
cGU6OkNvZGVjOyB9CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBheWxvYWRUeXBlOwot
ICAgICAgICBPcHRpb25hbDxDb2RlY1R5cGU+IGNvZGVjVHlwZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gcGF5bG9hZFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29kZWNU
eXBlPiBjb2RlY1R5cGU7CiAgICAgICAgIFN0cmluZyB0cmFuc3BvcnRJZDsKICAgICAgICAgU3Ry
aW5nIG1pbWVUeXBlOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY2xvY2tSYXRlOwotICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gY2hhbm5lbHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNsb2NrUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY2hh
bm5lbHM7CiAgICAgICAgIFN0cmluZyBzZHBGbXRwTGluZTsKICAgICAgICAgU3RyaW5nIGltcGxl
bWVudGF0aW9uOwogICAgIH07CkBAIC0zMjAsOCArMzIwLDggQEAgcHVibGljOgogICAgIHN0cnVj
dCBUcmFuc3BvcnRTdGF0cyA6IFN0YXRzIHsKICAgICAgICAgVHJhbnNwb3J0U3RhdHMoKSB7IHR5
cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6VHJhbnNwb3J0OyB9CiAKLSAgICAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVz
UmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNSZWNlaXZlZDsKICAgICAgICAgU3Ry
aW5nIHJ0Y3BUcmFuc3BvcnRTdGF0c0lkOwogICAgICAgICBTdHJpbmcgc2VsZWN0ZWRDYW5kaWRh
dGVQYWlySWQ7CiAgICAgICAgIFN0cmluZyBsb2NhbENlcnRpZmljYXRlSWQ7CkBAIC0zMzUsMzQg
KzMzNSwzNCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFBlZXJDb25uZWN0aW9uU3RhdHMgOiBTdGF0
cyB7CiAgICAgICAgIFBlZXJDb25uZWN0aW9uU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9y
dDo6VHlwZTo6UGVlckNvbm5lY3Rpb247IH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZGF0YUNoYW5uZWxzT3BlbmVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGF0YUNoYW5u
ZWxzQ2xvc2VkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBkYXRhQ2hhbm5lbHNP
cGVuZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRhdGFDaGFubmVsc0Nsb3Nl
ZDsKICAgICB9OwogCiAgICAgc3RydWN0IE1lZGlhU291cmNlU3RhdHMgOiBTdGF0cyB7CiAgICAg
ICAgIFN0cmluZyB0cmFja0lkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBraW5kOwotICAgICAg
ICBPcHRpb25hbDxib29sPiByZWxheWVkU291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHJlbGF5ZWRTb3VyY2U7CiAgICAgfTsKIAogICAgIHN0cnVjdCBBdWRpb1NvdXJjZVN0YXRz
IDogTWVkaWFTb3VyY2VTdGF0cyB7CiAgICAgICAgIEF1ZGlvU291cmNlU3RhdHMoKSB7IHR5cGUg
PSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6TWVkaWFTb3VyY2U7IH0KIAotICAgICAgICBPcHRpb25h
bDxkb3VibGU+IGF1ZGlvTGV2ZWw7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxBdWRp
b0VuZXJneTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlvbjsK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKLSAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zc0VuaGFuY2VtZW50OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRv
dGFsQXVkaW9FbmVyZ3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBs
ZXNEdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGVjaG9SZXR1cm5Mb3Nz
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZWNob1JldHVybkxvc3NFbmhhbmNlbWVu
dDsKICAgICB9OwogCiAgICAgc3RydWN0IFZpZGVvU291cmNlU3RhdHMgOiBNZWRpYVNvdXJjZVN0
YXRzIHsKICAgICAgICAgVmlkZW9Tb3VyY2VTdGF0cygpIHsgdHlwZSA9IFJUQ1N0YXRzUmVwb3J0
OjpUeXBlOjpNZWRpYVNvdXJjZTsgfQogCi0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+
IHdpZHRoOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZCBsb25nPiBoZWlnaHQ7Ci0gICAgICAg
IE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGJpdERlcHRoOwotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZCBsb25nPiBmcmFtZXM7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVzUGVyU2Vj
b25kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IHdpZHRoOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZCBsb25nPiBiaXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZCBsb25nPiBmcmFtZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQ
ZXJTZWNvbmQ7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcAppbmRleCA4YWU0
MjFiYTE4YWJkNWM2OGMzNDM1MDhmNmVmMWVkY2NhZjRjODEzLi5jZDdmMmQ5OTkzNjUzMmI2YTll
MmE4ZjRkZDU2YzUzNmRmYzIwYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVOTWVzc2FnZVBhcnNpbmcuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0dW5NZXNzYWdlKHVpbnQxNl90IG1lc3NhZ2VUeXBl
KQogICAgIHJldHVybiAhKG1lc3NhZ2VUeXBlICYgMHhDMDAwKTsKIH0KIAotT3B0aW9uYWw8U1RV
Tk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVOT3JUVVJOTWVzc2FnZUxlbmd0aHMoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCitzdGQ6Om9wdGlvbmFsPFNUVU5NZXNzYWdlTGVuZ3Rocz4g
Z2V0U1RVTk9yVFVSTk1lc3NhZ2VMZW5ndGhzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogewogICAgIGlmIChzaXplIDwgNCkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2lu
Zy5oCmluZGV4IGY2Y2Q3NDhmYzE2ZTEzMjJlZmM4NGY4ZWJlNjgzZWViMmIyODBhNzUuLmYwNjMy
MzEwNTIxOGE5ODA0ZTY4OTYzODQ4ODAyOTcyMzIyOWFkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVOTWVzc2FnZVBhcnNpbmcuaApAQCAt
MzksNyArMzksNyBAQCBzdHJ1Y3QgU1RVTk1lc3NhZ2VMZW5ndGhzIHsKICAgICBzaXplX3QgbWVz
c2FnZUxlbmd0aFdpdGhQYWRkaW5nIHsgMCB9OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8U1RVTk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVOT3JUVVJOTWVzc2FnZUxlbmd0aHMoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNUVU5NZXNz
YWdlTGVuZ3Rocz4gZ2V0U1RVTk9yVFVSTk1lc3NhZ2VMZW5ndGhzKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIHsgU1RVTiwgRGF0YSB9OwogV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RNZXNzYWdlcyhWZWN0b3I8dWludDhfdD4m
JiwgTWVzc2FnZVR5cGUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlm
aWNhdGVHZW5lcmF0b3IuY3BwCmluZGV4IGI4Y2NmMTQ1ZDU2NzY3NmVhYjk2NjRlODNhNGMxNjQ5
MWUxMTc4MjYuLmY4ZmU2OGU4NTU0ZWU5ODFiODA3MTIxMmE3YTQyNWRlMDFiYTZlNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG1fb3JpZ2luOwotICAgIE9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8UlRDQ2VydGlmaWNhdGU+Pj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8RE9N
UHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxSVENDZXJ0aWZpY2F0ZT4+PiBtX3Byb21pc2U7
CiB9OwogCiBzdGF0aWMgaW5saW5lIHJ0Yzo6S2V5UGFyYW1zIGtleVBhcmFtc0Zyb21DZXJ0aWZp
Y2F0ZVR5cGUoY29uc3QgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpDZXJ0aWZpY2F0ZUluZm9ybWF0
aW9uJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKaW5kZXggODk0YzZkMjc5ZGQ3ZWE3NjIxZDlmNDQ5MDQxM2I2OTAwYTk0
Y2JkNi4uY2JiZTZkNzE2OTY5ODVmZDMwY2IyZTkzOTI3NDkzODJmNzY0OWRkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNr
ZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKIENyZWF0ZVBlZXJDb25u
ZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKIAotT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVz
PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8
UlRDUnRwQ2FwYWJpbGl0aWVzPiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJp
bGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2lu
ZCkKIHsKICAgICBhdXRvKiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCkBAIC03Niw3ICs3Niw3IEBAIE9wdGlvbmFsPFJUQ1J0cENhcGFi
aWxpdGllcz4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxpdGllcyhTY3Jp
cHRFCiAgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkucmVjZWl2ZXJDYXBhYmls
aXRpZXMoa2luZCk7CiB9CiAKLU9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZW5kZXJDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQorc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmls
aXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICBhdXRv
KiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKaW5kZXgg
N2IzZjU5YmMzODlhNzJlYzkwMWVhYTVmMDY0YzlhMmVkNDNjMzc0OC4uZTE0MWJlNTBkOGJlNzY2
M2M2YTdlZWYzOWIzNmRlOTcwOGVmYjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4gbV9ydGNTZW5kZXI7CiAg
ICAgU291cmNlIG1fc291cmNlOwogICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBt
X3RyYW5zZm9ybUJhY2tlbmQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx3ZWJydGM6OlJ0cFBhcmFt
ZXRlcnM+IG1fY3VycmVudFBhcmFtZXRlcnM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHdl
YnJ0Yzo6UnRwUGFyYW1ldGVycz4gbV9jdXJyZW50UGFyYW1ldGVyczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IDYzZTRjZTcyMGMyOGJiMzUzZjM4ODM1MDZkZjM2NDA0
M2JjZGI5MDAuLmQxZjczYWQ3ZjQ3OGY2MDQ3MjViMDYwOTlmZGU2OTBjNzNlZDViNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cApAQCAtNTAsNyArNTAsNyBAQCBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRvUlRD
UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24obV9ydGNUcmFuc2NlaXZlci0+ZGlyZWN0aW9uKCkpOwog
fQogCi1PcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kOjpjdXJyZW50RGlyZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZDo6Y3VycmVudERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fcnRjVHJh
bnNjZWl2ZXItPmN1cnJlbnRfZGlyZWN0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKaW5kZXggZmRi
MjdiYWNjZDIzM2U3N2MxOTFiYzQzZGJiZmNhMDY5Y2NjZTM4Yy4uYjI5NGRiMDU5OTM5YzRkNWVl
ZmI5ZTAwMDU3YzlkMjc4Y2VlNDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0
IGZpbmFsOwotICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50
RGlyZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
c2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKSBmaW5hbDsKICAgICBTdHJp
bmcgbWlkKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmNwcAppbmRleCBiOGFlZTBk
Y2VhMjVlYjhhNzFlNmE3ZGFkNTI0ZWU5MjIxMTBjZGZiLi5hMTY0OThmYTJkYjAzMDMzZDJjNjNl
ZWQwNDkxYzBjM2Q3OGY5NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBSVENFbmNvZGVk
VmlkZW9GcmFtZU1ldGFkYXRhIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZTo6dmlkZW9N
ZXRhZGF0YSgpIGNvbgogICAgIGF1dG8qIHZpZGVvRnJhbWUgPSBzdGF0aWNfY2FzdDx3ZWJydGM6
OlRyYW5zZm9ybWFibGVWaWRlb0ZyYW1lSW50ZXJmYWNlKj4obV9ydGNGcmFtZS5nZXQoKSk7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSB2aWRlb0ZyYW1lLT5HZXRNZXRhZGF0YSgpOwogCi0gICAgT3B0
aW9uYWw8aW50NjRfdD4gZnJhbWVJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZyYW1l
SWQ7CiAgICAgaWYgKG1ldGFkYXRhLkdldEZyYW1lSWQoKSkKICAgICAgICAgZnJhbWVJZCA9ICpt
ZXRhZGF0YS5HZXRGcmFtZUlkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yLmNwcAppbmRleCA0Yzg1M2U3MmM3ZTg2N2ZhOWU3NTBhZjZjMzQ1YjE0MjQxMzNh
NzhhLi5kODgyOWFkOWYxMmZjMTFhYTliNzMzNzU2NmVmMGMyODU4NzBjNTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENT
dGF0c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCkBAIC00MzQsNyArNDM0LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMoUlRDU3Rh
dHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXIKICAgICAgICAgc3RhdHMuY29uc2VudFJlc3BvbnNl
c1NlbnQgPSAqcnRjU3RhdHMucmVzcG9uc2VzX3NlbnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0
aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gaWNlQ2FuZGlkYXRlU3RhdGUoY29uc3Qgc3RkOjpz
dHJpbmcmIHN0YXRlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNhbmRpZGF0
ZVR5cGU+IGljZUNhbmRpZGF0ZVN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdGF0ZSkKIHsKICAg
ICBpZiAoc3RhdGUgPT0gImhvc3QiKQogICAgICAgICByZXR1cm4gUlRDSWNlQ2FuZGlkYXRlVHlw
ZTo6SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcAppbmRleCBhMWZjZGUyYThkNWU2
ZGM4MzQ1ZTIwYTEyYmZiMWJiMjU2NGJkZmMxLi41OWNmOGM2Mzk5NTUwY2U3MTMzMTRiYTU1MDQ1
MTczY2NhOTE2MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCkBAIC0zNjYsNyAr
MzY2LDcgQEAgc3RhdGljIGlubGluZSBSVENJY2VDb21wb25lbnQgdG9SVENJY2VDb21wb25lbnQo
aW50IGNvbXBvbmVudCkKICAgICByZXR1cm4gY29tcG9uZW50ID09IGNyaWNrZXQ6OklDRV9DQU5E
SURBVEVfQ09NUE9ORU5UX1JUUCA/IFJUQ0ljZUNvbXBvbmVudDo6UnRwIDogUlRDSWNlQ29tcG9u
ZW50OjpSdGNwOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiB0
b1JUQ0ljZVByb3RvY29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm90b2NvbCkKK3N0YXRpYyBpbmxp
bmUgc3RkOjpvcHRpb25hbDxSVENJY2VQcm90b2NvbD4gdG9SVENJY2VQcm90b2NvbChjb25zdCBz
dGQ6OnN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgaWYgKHByb3RvY29sID09ICIiKQogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
UlRDSWNlUHJvdG9jb2w+IHRvUlRDSWNlUHJvdG9jb2woY29uc3Qgc3RkOjpzdHJpbmcmIHByb3Rv
CiAgICAgcmV0dXJuIFJUQ0ljZVByb3RvY29sOjpUY3A7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0
aW9uYWw8UlRDSWNlVGNwQ2FuZGlkYXRlVHlwZT4gdG9SVENJY2VUY3BDYW5kaWRhdGVUeXBlKGNv
bnN0IHN0ZDo6c3RyaW5nJiB0eXBlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0lj
ZVRjcENhbmRpZGF0ZVR5cGU+IHRvUlRDSWNlVGNwQ2FuZGlkYXRlVHlwZShjb25zdCBzdGQ6OnN0
cmluZyYgdHlwZSkKIHsKICAgICBpZiAodHlwZSA9PSAiIikKICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJUQ0ljZVRjcENhbmRp
ZGF0ZVR5cGU+IHRvUlRDSWNlVGNwQ2FuZGlkYXRlVHlwZShjb25zdCBzdAogICAgIHJldHVybiBS
VENJY2VUY3BDYW5kaWRhdGVUeXBlOjpTbzsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxS
VENJY2VDYW5kaWRhdGVUeXBlPiB0b1JUQ0ljZUNhbmRpZGF0ZVR5cGUoY29uc3Qgc3RkOjpzdHJp
bmcmIHR5cGUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlw
ZT4gdG9SVENJY2VDYW5kaWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlKQogewogICAg
IGlmICh0eXBlID09ICIiKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNDAyLDcgKzQwMiw3IEBA
IHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdG9SVENJY2VDYW5k
aWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyCiAgICAgcmV0dXJuIFJUQ0ljZUNhbmRpZGF0ZVR5cGU6
OlJlbGF5OwogfQogCi1PcHRpb25hbDxSVENJY2VDYW5kaWRhdGU6OkZpZWxkcz4gcGFyc2VJY2VD
YW5kaWRhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApCitzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNhbmRp
ZGF0ZTo6RmllbGRzPiBwYXJzZUljZUNhbmRpZGF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkKIHsK
ICAgICBjcmlja2V0OjpDYW5kaWRhdGUgY2FuZGlkYXRlOwogICAgIGlmICghd2VicnRjOjpQYXJz
ZUNhbmRpZGF0ZShzZHAudXRmOCgpLmRhdGEoKSwgJmNhbmRpZGF0ZSwgbnVsbHB0ciwgdHJ1ZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnREZXRhaWxzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50RGV0YWlsc0Jhc2UuaAppbmRleCBlMTczZDY4NWE3OWE2Yjk5NGM4MzBhZmU0M2FlMzM2
OTEyNzVkMDU0Li5mNDNkMGY3NjA3MzJmOGE3YWZiMTBlNWM5OGIxNzE4ZTFlMTYzZTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRh
aWxzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudERldGFpbHNCYXNlLmgKQEAgLTM3LDkgKzM3LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IFBheW1lbnREZXRhaWxzQmFzZSB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBheW1l
bnRJdGVtPj4gZGlzcGxheUl0ZW1zOwotICAgIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50U2hpcHBp
bmdPcHRpb24+PiBzaGlwcGluZ09wdGlvbnM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRE
ZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5
bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5bWVu
dFNoaXBwaW5nT3B0aW9uPj4gc2hpcHBpbmdPcHRpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFBheW1lbnREZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnREZXRhaWxzTW9kaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCmluZGV4IDRiNjFmMDFlZmUx
ODk2ZDE4ODg2M2M2YmMzMDAxMGU3OTljZWE5OGIuLmVlZDlhYjRjMWE1ZjkxMzI3NDE3NDRkMTQ2
Mjg5MDE5ZWJlNWNiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmllci5oCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBheW1lbnREZXRhaWxzTW9kaWZp
ZXIgewogICAgIFN0cmluZyBzdXBwb3J0ZWRNZXRob2RzOwotICAgIE9wdGlvbmFsPFBheW1lbnRJ
dGVtPiB0b3RhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKICAgICBW
ZWN0b3I8UGF5bWVudEl0ZW0+IGFkZGl0aW9uYWxEaXNwbGF5SXRlbXM7CiAgICAgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4gZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzVXBkYXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzVXBkYXRlLmgKaW5kZXgg
NzdiOTYyMDgzYTA1MDM4ZGRhMGZmMTlhZDNkMGY2YzQ3MGMyNjIxZi4uM2U0MGUyYjYzNzdmNmJi
ZGJiYzRjN2QwZTA1NjU1YmQ3YWNiM2JhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc1VwZGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNVcGRhdGUuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBQYXltZW50RGV0YWls
c1VwZGF0ZSBmaW5hbCA6IFBheW1lbnREZXRhaWxzQmFzZSB7CiAgICAgU3RyaW5nIGVycm9yOwot
ICAgIE9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1l
bnRJdGVtPiB0b3RhbDsKICAgICBBZGRyZXNzRXJyb3JzIHNoaXBwaW5nQWRkcmVzc0Vycm9yczsK
ICAgICBQYXllckVycm9yRmllbGRzIHBheWVyRXJyb3JzOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+IHBheW1lbnRNZXRob2RFcnJvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKaW5kZXggODExYTI4NWFl
NTQ0NGJmOTBmZWNjZjc1Y2Y2YTE3MzU5NzY3MDhiYS4uOTU1ZTM5YTcyMjg1MmMyMjBmMmJlOTQ2
OWRkYjUxN2M2MGY4OWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCBFeGNl
cHRpb25Pcjx2b2lkPiBkZXRhaWxzVXBkYXRlZChQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29u
LCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmLCBQYXllckVycm9yRmllbGRzJiYsIEpT
Qzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2Vw
dGlvbk9yPHZvaWQ+IG1lcmNoYW50VmFsaWRhdGlvbkNvbXBsZXRlZChKU0M6OkpTVmFsdWUmJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50
Q29tcGxldGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBh
eW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXgg
OWI5MDIyMDBmZGM4YWQyMTMyNDhiYWZhM2RjYjc5ZjZkZDM2NzVkMC4uYTQxZmEwODY0MjRiNTY4
MTI2NjQ1NDQzNDc5YWVhZjljNjk3M2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmll
cihjb25zdCBVUkwmIHVybCkKIAogLy8gSW1wbGVtZW50cyAidmFsaWRhdGUgYSBwYXltZW50IG1l
dGhvZCBpZGVudGlmaWVyIgogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQtbWV0aG9k
LWlkLyN2YWxpZGl0eQotT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXI+
IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZp
ZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKICAgICBVUkwgdXJsIHsgVVJMKCksIGlkZW50aWZpZXIgfTsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKQEAgLTUyNCw3ICs1MjQsNyBAQCBjb25zdCBTdHJpbmcm
IFBheW1lbnRSZXF1ZXN0OjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGV0YWlscy5pZDsKIH0K
IAotT3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlwZT4gUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5n
VHlwZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBheW1lbnRTaGlwcGluZ1R5cGU+IFBheW1lbnRS
ZXF1ZXN0OjpzaGlwcGluZ1R5cGUoKSBjb25zdAogewogICAgIGlmIChtX29wdGlvbnMucmVxdWVz
dFNoaXBwaW5nKQogICAgICAgICByZXR1cm4gbV9vcHRpb25zLnNoaXBwaW5nVHlwZTsKQEAgLTcy
NSw3ICs3MjUsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjphY2NlcHQoY29uc3QgU3RyaW5nJiBt
ZXRob2ROYW1lLCBQYXltZW50UmVzcG9uc2U6OkRldGFpbHNGdQogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6Q2xvc2VkOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdDo6Y29tcGxl
dGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4m
JiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7CiAgICAg
aWYgKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IDhjNWE5YWZiYTk3
NjUyMWFhOWVlOWRkMDA3YmEzZDYyMjdjMzQ3NTcuLjc4OTU1OGRlNDliOWY4ZjJkNWRhZjY2OGZm
Y2MxOWExNzVjZjFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdDsKICAgICBQYXltZW50QWRkcmVzcyogc2hpcHBp
bmdBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zaGlwcGluZ0FkZHJlc3MuZ2V0KCk7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaGlwcGlu
Z09wdGlvbjsgfQotICAgIE9wdGlvbmFsPFBheW1lbnRTaGlwcGluZ1R5cGU+IHNoaXBwaW5nVHlw
ZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlwZT4gc2hpcHBp
bmdUeXBlKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgQ3JlYXRl
ZCwKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0
ZVdpdGgoVXBkYXRlUmVhc29uLCBSZWY8RE9NUHJvbWlzZT4mJik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oRXZlbnQmLCBSZWY8RE9NUHJvbWlzZT4m
Jik7CiAgICAgdm9pZCBhY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBQYXltZW50UmVz
cG9uc2U6OkRldGFpbHNGdW5jdGlvbiYmLCBSZWY8UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdB
ZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFtZSwgY29uc3QgU3RyaW5nJiBwYXllckVtYWls
LCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXBs
ZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpOwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYpOwogICAgIHZvaWQgY2Fu
Y2VsKCk7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQYXltZW50
QWRkcmVzcz4gbV9zaGlwcGluZ0FkZHJlc3M7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpD
cmVhdGVkIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNob3dQcm9taXNlPiBtX3Nob3dQcm9taXNl
OwotICAgIE9wdGlvbmFsPFBheW1lbnRIYW5kbGVyV2l0aFBlbmRpbmdBY3Rpdml0eT4gbV9hY3Rp
dmVQYXltZW50SGFuZGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRIYW5kbGVyV2l0aFBl
bmRpbmdBY3Rpdml0eT4gbV9hY3RpdmVQYXltZW50SGFuZGxlcjsKICAgICBSZWZQdHI8RE9NUHJv
bWlzZT4gbV9kZXRhaWxzUHJvbWlzZTsKICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gbV9tZXJjaGFu
dFNlc3Npb25Qcm9taXNlOwogICAgIFJlZlB0cjxQYXltZW50UmVzcG9uc2U+IG1fcmVzcG9uc2U7
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDYW5jZWxQZW5kaW5n
IHsgZmFsc2UgfTsKIH07CiAKLU9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlm
aWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpOworc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRl
bnRpZmllcj4gY29udmVydEFuZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNw
b25zZS5jcHAKaW5kZXggMDVkMWNhNGJiNzZmODRlNjY5NjRiOWVkYTEzMmUwZGJmMDUzNWVlYi4u
MjY0NzI1MjYzNTAzNDg1MmFiMmFlOTViMjY4ZDIyNzg4NjU5ZmJkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNl
LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBheW1lbnRSZXNwb25zZTo6c2V0RGV0YWlsc0Z1
bmN0aW9uKERldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbikKICAgICBtX2NhY2hlZERl
dGFpbHMgPSB7IH07CiB9CiAKLXZvaWQgUGF5bWVudFJlc3BvbnNlOjpjb21wbGV0ZShPcHRpb25h
bDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQordm9pZCBQYXltZW50UmVzcG9uc2U6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudENvbXBsZXRlPiYmIHJlc3VsdCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9yZXF1ZXN0KSB7
CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVz
cG9uc2UuaAppbmRleCBjNGZmNGI2ZjFhMDY0ODdlMzU4Y2JiNzY4ZTU1OTU3OTc2NGIyN2Q5Li40
ZDdiYTdmNmQ3MDZmOGYxMmU4MDc5ZDU0ZGJkYTYwMzU1ZDYzM2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9uZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF5ZXJQaG9uZTsgfQogICAgIHZvaWQgc2V0UGF5ZXJQaG9uZShj
b25zdCBTdHJpbmcmIHBheWVyUGhvbmUpIHsgbV9wYXllclBob25lID0gcGF5ZXJQaG9uZTsgfQog
Ci0gICAgdm9pZCBjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudENvbXBsZXRlPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBy
ZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CiAgICAgdm9pZCBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uJiYpOwogICAgIGJvb2wg
aGFzUmV0cnlQcm9taXNlKCkgY29uc3QgeyByZXR1cm4gISFtX3JldHJ5UHJvbWlzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5
YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBs
YXliYWNrLmNwcAppbmRleCA5NmRkMmI3ZDNlNzVlNDNjNzRmOWRjOTBkNjY3NTdiNTU4M2VmYjMy
Li5kMWJiMDQ5ZDRiMjE4ZjUyODFmMjEwMGZjODk4YzUxYjg4YTNmMGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNr
LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgUmVtb3RlUGxheWJhY2s6OndhdGNoQXZhaWxh
YmlsaXR5KFJlZjxSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrPiYmCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVtb3RlUGxheWJhY2s6OmNhbmNlbFdhdGNoQXZhaWxhYmlsaXR5KE9wdGlv
bmFsPGludDMyX3Q+IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIFJl
bW90ZVBsYXliYWNrOjpjYW5jZWxXYXRjaEF2YWlsYWJpbGl0eShzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gNi4yLjEu
NSBTdG9wIG9ic2VydmluZyByZW1vdGUgcGxheWJhY2sgZGV2aWNlcyBhdmFpbGFiaWxpdHkKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcmVtb3RlLXBsYXliYWNrLyNzdG9wLW9ic2Vydmlu
Zy1yZW1vdGUtcGxheWJhY2stZGV2aWNlcy1hdmFpbGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaAppbmRleCBj
ZjIzMTgxYzcxYTZlYmU5NmRkOTBmZGI3NTQ3ODY4MWEyNDhkZTVkLi4yZDI3MzYyZThiNDkyMzI2
ZTZlZjhkYjAwODI0NGE5YTc2MzkyNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKICAgICB+UmVtb3RlUGxheWJhY2soKTsKIAogICAgIHZvaWQgd2F0Y2hBdmFpbGFi
aWxpdHkoUmVmPFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2s+JiYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwotICAgIHZvaWQgY2FuY2VsV2F0Y2hBdmFpbGFiaWxpdHkoT3B0aW9u
YWw8aW50MzJfdD4gaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgY2FuY2Vs
V2F0Y2hBdmFpbGFiaWxpdHkoc3RkOjpvcHRpb25hbDxpbnQzMl90PiBpZCwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAgICAgdm9pZCBwcm9tcHQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
ICAgICBib29sIGhhc0F2YWlsYWJpbGl0eUNhbGxiYWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
Q2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggODhiZmYyYzBiZDZlMTUyYjdmNmYxNjVlODYzNTcyOTQ0
NGFjNzdlZC4uMzQ5YWRmNmI0MmNjYjNjYzFkNmMwN2EyZTU0NGMyYmM1OTNhY2E0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0
dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuY3BwCkBAIC00Myw5ICs0Myw5IEBAIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25DYXB0dXJlU291cmNlOjptdXRlKCkKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKLU9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNv
dXJjZTo6ZmluZENhcHR1cmVEZXZpY2UoKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBT
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U6OmZpbmRDYXB0dXJlRGV2aWNlKCkKIHsKLSAg
ICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlOworICAgIHN0ZDo6b3B0aW9u
YWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZTsKICAgICBhdXRvIGRldmljZXMgPSBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCku
YXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpLmNhcHR1cmVEZXZpY2VzKCk7CiAgICAgZm9yIChh
dXRvIGRldmljZSA6IGRldmljZXMpIHsKICAgICAgICAgaWYgKCFkZXZpY2UuZW5hYmxlZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaAppbmRleCAwOGFhY2FkMmQ0M2U5YzgyYWI0YTY5NWQx
ZWY5MzFkYTdkMTlhMzkyLi44NDQwNjBkYWRmYTNmNTk0MDQzOTJiNGIyNzc5Y2NkNWIzZjcwOWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXVEY6Ok1lZGlh
VGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCk+OwogICAgIHVzaW5nIFN0YXRlVXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwogICAgIFNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3RhdGVVcGRhdGVDYWxsYmFjayYmLCBSZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFdl
YkNvcmU6OkNhcHR1cmVEZXZpY2U+IGZpbmRDYXB0dXJlRGV2aWNlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZmluZENh
cHR1cmVEZXZpY2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBDYXB0dXJlRGV2aWNlJik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25FcnJvci5oCmluZGV4IDc2MzRiZDAwMzMzN2JiZmZiMjcxNmNmMDcyNDFlZmQw
MjhiYjFiYzIuLmM5Y2NhOTc3ZTQ5MWI4ZDY4ODZmZjhmMjAzNDI1NDA0ZmQyY2FlOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJy
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkVycm9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
ewogICAgIFN0cmluZyBtZXNzYWdlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgpAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25FcnJvcjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4gU3BlZWNoUmVjb2duaXRpb25FcnJvcjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU+IHR5cGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZT4gdHlwZTsKICAgICBk
ZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBtZXNzYWdlOwogICAgIGRlY29kZXIgPj4gbWVzc2FnZTsKICAgICBpZiAoIW1lc3Nh
Z2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgK
aW5kZXggOTQyNmM5NGM3OWI0MzgzOGFmMzA3ZDkyYjdmNzQwM2I1NzA0OGVkMC4uOGQ1OTg1MzE5
NDYzNDY4NjNhY2EzNDI0OTVkMjk5NDEzOWY3MGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8u
aApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7
CiAgICAgRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
bz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUxLDM5ICs1MSwzOSBAQCB2
b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxh
bmc7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhbmc7CiAgICAgZGVjb2RlciA+PiBsYW5n
OwogICAgIGlmICghbGFuZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPGJvb2w+IGNvbnRpbnVvdXM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb250aW51
b3VzOwogICAgIGRlY29kZXIgPj4gY29udGludW91czsKICAgICBpZiAoIWNvbnRpbnVvdXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBpbnRlcmlt
UmVzdWx0czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGludGVyaW1SZXN1bHRzOwogICAgIGRl
Y29kZXIgPj4gaW50ZXJpbVJlc3VsdHM7CiAgICAgaWYgKCFpbnRlcmltUmVzdWx0cykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtYXhBbHRl
cm5hdGl2ZXM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWF4QWx0ZXJuYXRpdmVzOwog
ICAgIGRlY29kZXIgPj4gbWF4QWx0ZXJuYXRpdmVzOwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q2xpZW50T3Jp
Z2luPiBjbGllbnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVu
dE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9y
aWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZpZXI7
CiAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YS5oCmluZGV4IDVhYTQ4NTIwY2I4ZjY3NzZkMzA1Mzg0ZDc0Njk0
MTQzNzM1YzcwZDguLjhmOGFjY2M0YzhjMTQwNThjNGY0MmNkZGFlNTk3MzMyYWIwOGYzODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNv
Z25pdGlvbkFsdGVybmF0aXZlRGF0YSB7CiAgICAgZG91YmxlIGNvbmZpZGVuY2UgeyAwLjAgfTsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBTcGVl
Y2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBTcGVlY2hSZWNv
Z25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnRyYW5zY3JpcHQpKQpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsKICAgICBib29sIGlzRmluYWwgeyBmYWxzZSB9Owog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTY5
LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbHRlcm5hdGl2ZXMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRl
LmgKaW5kZXggYzI5YmIyNWEzMTY0YzRhMWMyZTFhZTEyYThiNjBiYzkwNTQzOTQzNy4uMTI3MGNi
ODg0M2JjZjQ3OGExZTFjNWRhMmNkYzA5MDI5MmQ2MDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPiByZXN1bHQoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKQEAg
LTc5LDE5ICs3OSwxOSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
cj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29udGVudD4gY29udGVu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnQ+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBj
b250ZW50OwogICAgIGlmICghY29udGVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5j
cHAKaW5kZXggNmYxNWZiZWQxMTQ4M2NiYTM3MjI3Y2YxODZhZWU3ZjlmYzc0MzM1My4uMDZmYmRk
MmZlNDNjMTU1NjE2YzY5ZWE5ODNjNTBjZWYyOGEyNDVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgU3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVjb2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYg
ZGVsZWdhdGVDYWxsYmFjaywgVW5pcXVlUmUKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVy
OjphYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmIGVycm9yKQordm9pZCBT
cGVlY2hSZWNvZ25pemVyOjphYm9ydChzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJy
b3I+JiYgZXJyb3IpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1f
c3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggYTZiODgyMGRj
MWNkM2Y3YjU0OGVjYWYzMDNkOTQxNDVjMmY0MTAyMy4uZDM0Njk4M2NiOTJiMWM2NWQyY2Q5MmZj
MTQwNjZjNTMwNDJlYmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2Vu
ZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFi
b3J0KHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAppbmRleCAwM2I2NjlkNTI3
ZGE4ZmIwNzA1MWI0YWY5NzIwOTgwYTRmZjZiMzI3Li44NmFlNTNiZDJlYmIxMGViMGViZjFkNTcx
NTNlYzA2NDc4OWJkN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaApAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVByb21pc2VEZWZlcnJlZDx2b2lk
Pj4gbV9wcm9taXNlOwotICAgIE9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXI+IG1fY29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07CiAKIGNsYXNzIFNpbXBsZVJlYWRhYmxlU3Ry
ZWFtU291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggMDkyYzdkNmZmNGUwYmUwY2VlNzllOTlm
YmZhNWE1NDQzMjgzMjEyOC4uNmY5NGViZWExZTA5MGY3NzJkY2E0OTZiMmQ5MjY0NTU0YTVmZTgw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDUyLDEyICs0NTIsMTIgQEAgdW5zaWduZWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNoYW5uZWxzKCkKICAgICByZXR1cm4gb3V0cHV0
KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRMYXRlcihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0
LCBPcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCiB7CiAgICAgcmV0dXJu
IHN0YXJ0UGxheWluZyh3aGVuLCBncmFpbk9mZnNldCwgZ3JhaW5EdXJhdGlvbik7CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJs
ZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlv
bikKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5n
KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBn
cmFpbkR1cmF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAid2hlbiA9ICIsIHdoZW4sICIsIG9mZnNldCA9ICIsIGdyYWlu
T2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIsIGdyYWluRHVyYXRpb24udmFsdWVfb3IoMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmgKaW5kZXggYjczM2Q3MGM2ZmNiYWFhNWRiYTQ2NWNiNjhhZTMyMzYyZDI3YzZlNy4u
N2U1OWU5MDg1NjU0YzRkYmJmMTM1YzJkYmQ3ZDNiZjI5YmEwODA2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5o
CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KCk7CiAKICAgICAvLyBQbGF5LXN0YXRlCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRMYXRl
cihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBPcHRpb25hbDxkb3VibGU+IGdyYWlu
RHVyYXRpb24pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4s
IGRvdWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24p
OwogCiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0ZSB3YXMgb3JpZ2luYWxseSBleHBvc2VkIGFz
IC5sb29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIG5hbWluZyB3aXRoIDxhdWRp
bz4KICAgICAvLyBhbmQgd2l0aCBob3cgaXQncyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRp
b24sIHRoZSBwcm9wZXIgYXR0cmlidXRlIG5hbWUgaXMgLmxvb3AKQEAgLTg3LDcgKzg3LDcgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3Jh
aW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWlu
UGFyYW1ldGVycygpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZWRm
MDJiMDRjMjA3NjJjZmM1MTlkMjFkOWM2MzUwOTE1ZDMxYThjMS4uNTA1NWI0NmI4OWJmYjg2YWRm
MTc1YTQ3ZDg0NzAxYTUxZjA2NzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNjgsOSArNjgsOSBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0KTsKIHN0YXRpYyB1bnNpZ25lZCBoYXJkd2FyZUNv
bnRleHRDb3VudDsKICNlbmRpZgogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+JiBkZWZhdWx0U2Ft
cGxlUmF0ZUZvclRlc3RpbmcoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+JiBkZWZhdWx0
U2FtcGxlUmF0ZUZvclRlc3RpbmcoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gc2Ft
cGxlUmF0ZTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKICAg
ICByZXR1cm4gc2FtcGxlUmF0ZTsKIH0KIApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRp
b0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNI
YWRVc2VySW50ZXJhY3Rpb24oKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRT
YW1wbGVSYXRlRm9yVGVzdGluZyhPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKK3ZvaWQgQXVk
aW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxm
bG9hdD4gc2FtcGxlUmF0ZSkKIHsKICAgICBkZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3RpbmcoKSA9
IHNhbXBsZVJhdGU7CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1
c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAogICAg
IGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIGFj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBk
ZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1l
UmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKICAgICBsYXp5
SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5yZXN1bWUoW3RoaXMsIGFjdGl2aXR5
ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5h
dGlvbigpLnJlc3VtZShbdGhpcywgYWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmlu
ZygpCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KCk7CiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwot
ICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgeworICAgIGRl
c3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAg
IGlmICghZXhjZXB0aW9uKQogICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwog
ICAgIH0pOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAg
ICBkZXN0aW5hdGlvbigpLnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CisgICAgZGVzdGluYXRpb24o
KS5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIHNldFN0YXRlKGV4Y2VwdGlv
biA/IFN0YXRlOjpTdXNwZW5kZWQgOiBTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CkBAIC00
NzEsNyArNDcxLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAKICAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdXNwZW5kKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNl
cHRpb24pIHsKKyAgICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7
CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGE4OGE4YzVk
NGZlZTdiN2JhZjMzM2JhMzk2ZWQ0Y2U5ZWQ4M2U0NTkuLmYyNDBiOWM1NmU4ZjI3ZjVmYzgxOTU3
NzdkZTYzNzI5MjdlNmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmLCBBdWRpb0NvbnRl
eHRPcHRpb25zJiYpOwogICAgIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhPcHRpb25hbDxmbG9h
dD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldERlZmF1bHRTYW1wbGVSYXRl
Rm9yVGVzdGluZyhzdGQ6Om9wdGlvbmFsPGZsb2F0Pik7CiAKICAgICB2b2lkIGNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dE9wdGlvbnMuaAppbmRleCA4ZmNlYzYwMDIxZjdiM2Q4
NjY3ZmMwNzJjYzU1NTAxY2QyMDVkYjFjLi42MzJmNDY5YjdkZDdmNzYwYmMwZDA3NjI4ODhiMzlj
MWY4YmM0NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dE9wdGlvbnMuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBBdWRpb0NvbnRleHRPcHRpb25zIHsKICAgICBWYXJpYW50PEF1ZGlvQ29u
dGV4dExhdGVuY3lDYXRlZ29yeSwgZG91YmxlPiBsYXRlbmN5SGludCB7IEF1ZGlvQ29udGV4dExh
dGVuY3lDYXRlZ29yeTo6SW50ZXJhY3RpdmUgfTsKLSAgICBPcHRpb25hbDxmbG9hdD4gc2FtcGxl
UmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDlmMzRiNTkwMGQ4NWU5ZGNkMTk1NmEw
Mzg0OWU5MTBkMzVjNDk2NTguLjZhOTViZmM1ZDY0YjFiOWRiZTA4ZDI4NzkzYjM2ZjhjMzdlOGYz
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIEVuYWJs
ZSBsb2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGRldmljZS4KICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVy
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RhcnRSZW5kZXJpbmcoKSB7IH0KIAogICAgIC8v
IEF1ZGlvRGVzdGluYXRpb25Ob2RlcyBhcmUgb3duZWQgYnkgdGhlIEJhc2VBdWRpb0NvbnRleHQg
c28gd2UgZm9yd2FyZCB0aGUgcmVmY291bnRpbmcgdG8gaXRzIEJhc2VBdWRpb0NvbnRleHQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5o
CmluZGV4IDA0MGYwNzg0NjYyMGM3NzEyNWZhNWVmNTMzMzUxZTk1YWNmYmM1YzcuLjI4YzE3ZGNm
NGZmYjk2ZGQ2MzYyOTUzNzZiYWJmYTBjYjM2NjYwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5oCkBAIC0zNCw5ICszNCw5IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBdWRpb05vZGVPcHRpb25zIHsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gY2hhbm5lbENvdW50OwotICAgIE9wdGlvbmFsPENoYW5uZWxDb3Vu
dE1vZGU+IGNoYW5uZWxDb3VudE1vZGU7Ci0gICAgT3B0aW9uYWw8Q2hhbm5lbEludGVycHJldGF0
aW9uPiBjaGFubmVsSW50ZXJwcmV0YXRpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Y2hhbm5lbENvdW50OworICAgIHN0ZDo6b3B0aW9uYWw8Q2hhbm5lbENvdW50TW9kZT4gY2hhbm5l
bENvdW50TW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYW5uZWxJbnRlcnByZXRhdGlvbj4gY2hh
bm5lbEludGVycHJldGF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwCmluZGV4IDU0ZmNhYmE0NTI0ZmQyODgwN2IzNzkxZTllMmY5NGJjMjAwMTk3ODQuLjZkNTli
NDg1YzY3NzAzMTcwYTA3NmUwYzUyOTFjMzZkOGY0YmVmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAgLTI0
MSw4ICsyNDEsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNl
bEFuZEhvbGRBdFRpbWUoU2Vjb25kcyBjYW5jZWxUaW1lKQogICAgIGF1dG8gZXZlbnRUeXBlID0g
Y2FuY2VsbGVkRXZlbnQudHlwZSgpOwogCiAgICAgLy8gTmV3IGV2ZW50IHRvIGJlIGluc2VydGVk
LCBpZiBhbnksIGFuZCBhIFNldFZhbHVlRXZlbnQgaWYgbmVlZGVkLgotICAgIE9wdGlvbmFsPFBh
cmFtRXZlbnQ+IG5ld0V2ZW50OwotICAgIE9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZhbHVl
RXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQYXJhbUV2ZW50PiBuZXdFdmVudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZhbHVlRXZlbnQ7CiAKICAgICBzd2l0Y2ggKGV2
ZW50VHlwZSkgewogICAgIGNhc2UgUGFyYW1FdmVudDo6TGluZWFyUmFtcFRvVmFsdWU6CkBAIC0z
MjQsNyArMzI0LDcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OnJlbW92ZUNhbmNlbGxlZEV2
ZW50cyhzaXplX3QgZmlyc3RFdmVudFRvUmVtb3ZlKQogICAgIG1fZXZlbnRzLnJlbW92ZShmaXJz
dEV2ZW50VG9SZW1vdmUsIG1fZXZlbnRzLnNpemUoKSAtIGZpcnN0RXZlbnRUb1JlbW92ZSk7CiB9
CiAKLU9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRp
bWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBt
aW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFt
VGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCiB7CiAg
ICAgewogICAgICAgICBpZiAoIW1fZXZlbnRzTG9jay50cnlMb2NrKCkpCkBAIC05MzIsNyArOTMy
LDcgQEAgYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVl
Q3VydmVFdmVudChWZWN0b3I8ZmxvYXQ+JiYgY3UKICAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpT
ZXRWYWx1ZUN1cnZlLCAwLCB0aW1lLCAwLCBkdXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1cnZl
UG9pbnRzUGVyU2Vjb25kLCBjdXJ2ZUVuZFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAotYXV0
byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUNhbmNlbFZhbHVlc0V2ZW50
KFNlY29uZHMgY2FuY2VsVGltZSwgT3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50KSAt
PiBQYXJhbUV2ZW50CithdXRvIEF1ZGlvUGFyYW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRl
Q2FuY2VsVmFsdWVzRXZlbnQoU2Vjb25kcyBjYW5jZWxUaW1lLCBzdGQ6Om9wdGlvbmFsPFNhdmVk
RXZlbnQ+JiYgc2F2ZWRFdmVudCkgLT4gUGFyYW1FdmVudAogewogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgaWYgKHNhdmVkRXZlbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCmluZGV4IGJkZjYzMTdkN2ZlZGJkNGRmNWE2
ZjJkNmZiZjI3N2JlODM5NGIzODIuLmNiZTAxYzAzYjVmOTcxNGNlNmY0OGNlNWE0YWE3Y2VlZTFj
NmI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtVGltZWxpbmUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNW
YWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVk
LgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgT3B0aW9u
YWw8ZmxvYXQ+IHZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYsIGZsb2F0IGRl
ZmF1bHRWYWx1ZSwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiB2YWx1ZUZvckNvbnRleHRUaW1lKEJhc2VBdWRpb0NvbnRleHQmLCBmbG9h
dCBkZWZhdWx0VmFsdWUsIGZsb2F0IG1pblZhbHVlLCBmbG9hdCBtYXhWYWx1ZSk7CiAKICAgICAv
LyBHaXZlbiB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGludG8g
dGhlIHZhbHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0ZXIg
dmFsdWUgY2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhlIGRlZmF1bHRWYWx1ZSBpZiBub25l
IHdlcmUgY2FsY3VsYXRlZC4KQEAgLTg3LDkgKzg3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgc3Rh
dGljIFBhcmFtRXZlbnQgY3JlYXRlRXhwb25lbnRpYWxSYW1wRXZlbnQoZmxvYXQgdmFsdWUsIFNl
Y29uZHMgdGltZSk7CiAgICAgICAgIHN0YXRpYyBQYXJhbUV2ZW50IGNyZWF0ZVNldFRhcmdldEV2
ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcyB0aW1lLCBmbG9hdCB0aW1lQ29uc3RhbnQpOwogICAg
ICAgICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVTZXRWYWx1ZUN1cnZlRXZlbnQoVmVjdG9yPGZs
b2F0PiYmIGN1cnZlLCBTZWNvbmRzIHRpbWUsIFNlY29uZHMgZHVyYXRpb24pOwotICAgICAgICBz
dGF0aWMgUGFyYW1FdmVudCBjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChTZWNvbmRzIGNhbmNlbFRp
bWUsIE9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYpOworICAgICAgICBzdGF0aWMgUGFyYW1FdmVudCBj
cmVhdGVDYW5jZWxWYWx1ZXNFdmVudChTZWNvbmRzIGNhbmNlbFRpbWUsIHN0ZDo6b3B0aW9uYWw8
U2F2ZWRFdmVudD4mJik7CiAKLSAgICAgICAgUGFyYW1FdmVudChUeXBlIHR5cGUsIGZsb2F0IHZh
bHVlLCBTZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCwgU2Vjb25kcyBkdXJhdGlvbiwg
VmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBkb3VibGUgY3VydmVQb2ludHNQZXJTZWNvbmQsIGZsb2F0
IGN1cnZlRW5kVmFsdWUsIE9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYgc2F2ZWRFdmVudCkKKyAgICAg
ICAgUGFyYW1FdmVudChUeXBlIHR5cGUsIGZsb2F0IHZhbHVlLCBTZWNvbmRzIHRpbWUsIGZsb2F0
IHRpbWVDb25zdGFudCwgU2Vjb25kcyBkdXJhdGlvbiwgVmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBk
b3VibGUgY3VydmVQb2ludHNQZXJTZWNvbmQsIGZsb2F0IGN1cnZlRW5kVmFsdWUsIHN0ZDo6b3B0
aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50KQogICAgICAgICAgICAgOiBtX3R5cGUodHlw
ZSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV90aW1lKHRp
bWUpCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaG9sZHMgdGhlIGV2
ZW50IHRoYXQgaXMgYmVpbmcgY2FuY2VsbGVkLCBzbyB0aGF0IHByb2Nlc3NpbmcgY2FuCiAgICAg
ICAgIC8vIGNvbnRpbnVlIGFzIGlmIHRoZSBldmVudCBzdGlsbCBleGlzdGVkIHVwIHVudGlsIHdl
IHJlYWNoIHRoZSBhY3R1YWwKICAgICAgICAgLy8gc2NoZWR1bGVkIGNhbmNlbCB0aW1lLgotICAg
ICAgICBPcHRpb25hbDxTYXZlZEV2ZW50PiBtX3NhdmVkRXZlbnQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8U2F2ZWRFdmVudD4gbV9zYXZlZEV2ZW50OwogICAgIH07CiAKICAgICAvLyBTdGF0ZSBv
ZiB0aGUgdGltZWxpbmUgZm9yIHRoZSBjdXJyZW50IGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
aW5kZXggZTVlYjk0OGYyZGQyZjY5MzQ5NmM1YmEwNzgzMDRjZTY2NmNlMDcwMy4uNjgwOGQwMmI3
NTc4MDBlODE4MjlhNTkwOTc0MzVmNDM0N2U1Y2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBA
IC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBtX2VuZFRpbWUgaXMgdGhlIHRpbWUg
dG8gc3RvcCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAgb3IgYSB0
aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93IikuCiAg
ICAgLy8gSWYgaXQgaGFzbid0IGJlZW4gc2V0IGV4cGxpY2l0bHksIHRoZW4gdGhlIHNvdW5kIHdp
bGwgbm90IHN0b3AgcGxheWluZyAoaWYgbG9vcGluZykgb3Igd2lsbCBzdG9wIHdoZW4gdGhlIGVu
ZCBvZiB0aGUgQXVkaW9CdWZmZXIKICAgICAvLyBoYXMgYmVlbiByZWFjaGVkLgotICAgIE9wdGlv
bmFsPGRvdWJsZT4gbV9lbmRUaW1lOyAvLyBpbiBzZWNvbmRzCisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fZW5kVGltZTsgLy8gaW4gc2Vjb25kcwogICAgIGJvb2wgbV9oYXNFbmRlZEV2ZW50
TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDAwMjE5ZjJk
MDI5MTgzMDkxMzQ0NTg0MWEwYTRjNzAxYWRkMzc1MjcuLjZhZDA4ODg2YmJmNTcwNjc0MjFhNGIx
YzI2YjY3YTAyNjIwM2RhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxKU0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yPj4gbV9wcm9jZXNz
b3JDb25zdHJ1Y3Rvck1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0aW9uRGF0YT4gbV9wZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTsK
LSAgICBPcHRpb25hbDxKU0M6OkpTTG9ja0hvbGRlcj4gbV9sb2NrRHVyaW5nUmVuZGVyaW5nOwor
ICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU0xvY2tIb2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmlu
ZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IGFmYjFhNWFiMjUz
YzE2NTBiYThiYTIxZmRkZmEzZTdmMzMwMDg3NmYuLmJhYzliMTRhYjFkNzQ0Y2M5M2IwNWI4Nzcx
MmJiYmRlNGFhZjA5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29ya2xl
dE5vZGU6On5BdWRpb1dvcmtsZXROb2RlKCkKICAgICB1bmluaXRpYWxpemUoKTsKIH0KIAotdm9p
ZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3Rv
cjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBjb25zdCBPcHRpb25hbDxWZWN0
b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4mIHBhcmFtVmFsdWVzKQordm9p
ZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3Rv
cjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJz
LT5tYXAoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAppbmRleCAyNDBjNDVjZmE4ZTVjOTk3OWM0ZDY1YmVmN2Fl
YTRlNTlmM2Y2NWMxLi5jNTRmYzhiNzRlNzMxZjZkNWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7
IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxB
dWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1l
dGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURlc2NyaXB0b3I+JiwgY29uc3QgT3B0aW9uYWw8
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+JiBwYXJhbVZhbHVlcyk7
CisgICAgdm9pZCBpbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1Bh
cmFtRGVzY3JpcHRvcj4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpOwogCiBwcml2YXRlOgogICAgIEF1
ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVk
aW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlv
bnMuaAppbmRleCA4MDc1NzIyYzUzMDYxYzhjNjZjN2ExYTQ4OGRhNmYxN2VlOGEwZWM5Li5hMmE5
ZGFiZmFlZDkxODljNDJhMGVkNjMzYzJlYTE4MmY3NGJiNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5o
CkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdWRpb1dvcmts
ZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMgewogICAgIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSAxOwotICAgIE9wdGlv
bmFsPFZlY3Rvcjx1bnNpZ25lZD4+IG91dHB1dENoYW5uZWxDb3VudDsKLSAgICBPcHRpb25hbDxW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4gcGFyYW1ldGVyRGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1bnNpZ25lZD4+IG91dHB1dENoYW5uZWxDb3VudDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJs
ZT4+PiBwYXJhbWV0ZXJEYXRhOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHByb2Nl
c3Nvck9wdGlvbnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCAwZTNkM2Y4NzFjYzYzMjNlNjA0NzJiNmVl
Zjc2ZDYzZGQ5Y2MwZjMwLi44N2ZkYTZkZjNmNzBkMDk0NWIwNGY4ZmRhYzBjMjQ5MTI3MzE3ZTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZm
ZXI+PiBCYXNlQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaAog
ICAgIHJldHVybiBBdWRpb0J1ZmZlcjo6Y3JlYXRlKEF1ZGlvQnVmZmVyT3B0aW9ucyB7bnVtYmVy
T2ZDaGFubmVscywgbGVuZ3RoLCBzYW1wbGVSYXRlfSk7CiB9CiAKLXZvaWQgQmFzZUF1ZGlvQ29u
dGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgT3B0aW9uYWw8UmVmPERlZmVycmVkUHJvbWlz
ZT4+JiYgcHJvbWlzZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJl
ZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYm
IHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxs
YmFjaywgc3RkOjpvcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNlPj4mJiBwcm9taXNlKQogewog
ICAgIGlmIChwcm9taXNlICYmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+aXNGdWxseUFj
dGl2ZSgpKSkgewogICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUiX3MgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5o
CmluZGV4IGYzZTY4YjFiM2NmZmNkZTVlZTgwZWFlM2RiN2Y5Mjc3YmU2ODg0YjYuLmZhYTNkN2Ux
M2Y2ZmJmNGY1NTg5MTg4NjQ2YWRkZTg4YzhhOGFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oCkBAIC0xMTYsNyArMTE2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKIAogICAg
IC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCi0gICAgdm9pZCBkZWNv
ZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIE9wdGlvbmFsPFJlZjxEZWZlcnJl
ZFByb21pc2U+PiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShS
ZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgc3RkOjpvcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNl
Pj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBBdWRpb0xpc3RlbmVyJiBsaXN0ZW5lcigpIHsg
cmV0dXJuIG1fbGlzdGVuZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4
IGI2MGMyMmEzNzFjNWY5Mjg1NGJmYzM2ZTBjNWM4MzY3YzY0NzVmNTIuLmJkZDAyZGRhZDE1ZjEz
OTY5OTM3NjljYzBlMzIzZjMyMDA5M2UxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKK0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvRGVz
dGluYXRpb25Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUudmFsdWVfb3IoQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkpKQogewogICAgIEFTU0VSVChCYXNlQXVkaW9Db250ZXh0
Ojppc1N1cHBvcnRlZFNhbXBsZVJhdGUoQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQo
KT4mJik+IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZGlzcGF0Y2hUb1JlbmRlcgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
c3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0luaXRp
YWxpemVkKCkpOwogICAgIGlmICghaXNJbml0aWFsaXplZCgpKQpAQCAtMTYyLDcgKzE2Miw3IEBA
IHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlzcGF0
Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCksIFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKCFpc0luaXRp
YWxpemVkKCkpIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aQog
ICAgIH0pOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggOGNmMTQ4OTNl
YzVjM2RlZmE0ZDkwZTA4YTU0YjNkM2ZkMGRmMDc4Zi4uNGIwOGU1MDFjYzJiZDAxNWM5YzUwNmY1
Nzg0Y2MwZGE0ZTg5N2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUsIHB1YmxpYyBBdWRp
b0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgT3B0aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUgPSBzdGQ6
Om51bGxvcHQpOworICAgIGV4cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gc3RkOjpudWxsb3B0
KTsKICAgICB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKICAgICBBdWRpb0NvbnRl
eHQmIGNvbnRleHQoKTsKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQg
ZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBzdGFydFJlbmRlcmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwot
ICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJik7Ci0gICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7CisgICAg
dm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0
ZWQgPSBtdXRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjE4ZThkNThiMmNmNTRjZTE3ZjdmODAy
NmFhNzkyNzU2ZTY0ZmE0OS4uZTFiMGYwMmUxYWQzMzllMzQ1NzljNzZmNGIyNDI3YTFlMzNmNWNh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9D
b250ZXh0OjpzdGFydFJlbmRlcmluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAK
ICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdGFydFJlbmRlcmlu
ZyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnN0YXJ0UmVuZGVyaW5nKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2OSw3ICsx
NjksNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogICAgIEFTU0VSVChzdGF0ZSgpID09IEF1
ZGlvQ29udGV4dFN0YXRlOjpTdXNwZW5kZWQpOwogCi0gICAgZGVzdGluYXRpb24oKS5zdGFydFJl
bmRlcmluZyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0
eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhj
ZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnN0YXJ0UmVuZGVyaW5nKFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRp
bmdBY3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA3Y2JhNDFjOTNjMzdiYmRmYWI2MDA5NDdjMTgx
MzEwNTIyYjFhNWYzLi4zODYyZDA5NzQzZGIzZDA5NmZhZmFkMmZmNDFkNDY3YTFjMjhmNWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9Ob2Rl
Ojp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjOTU0NjhkOWU3
ZTVmZTU2ZTNmNzI5NTZmYjY3NjdmNTYwMzQyODU0Li5lZmRkYTQ2YmQzYWE1MjZmYWNhZjhjZGEx
MDMzN2M1ZDA2NzJiN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKICAgICB2b2lkIGVu
YWJsZUlucHV0KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQotICAgIHZvaWQgc3RhcnRSZW5kZXJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIFJlbmRlclJlc3VsdCB7IEZhaWx1cmUsIFN1c3BlbmRlZCwgQ29tcGxldGUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25z
LmgKaW5kZXggNjYzYjI0YzUwZDE0M2FkZDMzYzNmZmE0NzFjZTk1MDgzNGQ0Nzc0Yy4uYjQ0YWM2
NjY5OTFhMzM0NmNlNTk5Y2YxYzI2ZDRlNDgyMWU1NTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25zLmgKQEAgLTM0LDgg
KzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBlcmlvZGljV2F2ZU9wdGlv
bnMgOiBQZXJpb2RpY1dhdmVDb25zdHJhaW50cyB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGZsb2F0
Pj4gcmVhbDsKLSAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBpbWFnOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPGZsb2F0Pj4gcmVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxmbG9h
dD4+IGltYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJPcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJPcHRpb25zLmgKaW5kZXggNzdjYmVm
MzJkNzI4ODIxNzJlNTkzNjlkODA0MWExM2QxMTdhOWM1OC4uNDMzNmE4ZjQwMmIzNmNmYjkxYjQ0
MzFiNTA3YWY1Njk0Zjg2MTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgV2F2ZVNoYXBlck9wdGlvbnMgOiBBdWRpb05vZGVPcHRpb25z
IHsKLSAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBjdXJ2ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxmbG9hdD4+IGN1cnZlOwogICAgIE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUgeyBP
dmVyU2FtcGxlVHlwZTo6Tm9uZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzLmgKaW5kZXggOWRmYmNmYTU2ZjQxZTE5MTVmYzk5NWY0ZmE0MzA3YjQ3MDQ2
ZTc3MC4uNzE0YzFjYjA1MTgwNGVjZTE3ZDdjOWIyZGQ2ZGU0ZWYzYjc4ZDYzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCkBAIC0zNiw3ICszNiw3IEBAIHN0
cnVjdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgewogICAgIGJvb2wgZ29v
Z2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ2LDE3ICs0NiwxNyBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0czo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IEF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4gQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50SW5wdXRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwaWQ7CiAgICAgZGVj
b2RlciA+PiBhcHBpZDsKICAgICBpZiAoIWFwcGlkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFwcGlkKTsKIAotICAgIE9wdGlvbmFs
PGJvb2w+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKICAgICBkZWNvZGVyID4+IGdvb2dsZUxlZ2FjeUFw
cGlkU3VwcG9ydDsKICAgICBpZiAoIWdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzLmgKaW5kZXggMjhmZjgzZmUxNGQ2OGI1MGY4MjlmNjI0NzZhMGFlOTcyMDYxZWYzNy4u
ZDk5MTRjMmEwNjcwZTZjNzgxZGIzMTNhMDk0NjczZjJmMmJmMWM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHMgewotICAgIE9wdGlvbmFsPGJvb2w+IGFwcGlkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gYXBwaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5jcHAKaW5kZXggMGJmMjNmMDI4NTZiODAwNzVhZGM2YWMwOWRkZTc0ZTFl
ZjM4M2FlMC4uMDczNDViMzdiZTMwZjU1ZGRmZTUwZDFhNmM3ZGMyZjE5YWY1ZTk5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBy
YXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9u
YWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJiBleHRlbnNpb25zKQor
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZm
ZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYgZXh0ZW5zaW9ucykKIHsKICAgICBhdXRvIHJl
c3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RG
TW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVy
ZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKICAgICBpZiAoZXh0ZW5zaW9ucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJhZDY2NWUxMjgxODAzYTIyMjJmZTIzNmVlNjA1
NGJiZGM5YWYxMDAuLjgwMTFmY2NkM2NkNDgwMDhkNjkzN2UwM2NhNjk0YTdjYzJkNDJlNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJh
d0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZl
cj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25h
bDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKKyAgICBzdGF0aWMg
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZl
cj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJy
YXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
c3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0
dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJl
ZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0
cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNw
cAppbmRleCAzZDU2NmY4N2FlYjlhMDE3ZGMwYTk5OTc2YTc4NjFjMzI4ZTZkZTFhLi43MzQzNmE3
MjIwZjdmMWVmNzEyMWI0MTMyZWMwNGUzODA4NWVmM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFN0cmluZyBwcm9jZXNzQXBwSWRFeHRlbnNp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0SWQsIGNvbnN0IFN0cmluZyYKIH0KIAogLy8g
VGhlIGRlZmF1bHQgYmVoYXZpb3VyIGZvciBnb29nbGUuY29tIGlzIHRvIGFsd2F5cyB0dXJuIG9u
IHRoZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KLXN0YXRpYyBib29sIHByb2Nlc3NHb29nbGVMZWdh
Y3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oY29uc3QgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50SW5wdXRzPiYgZXh0ZW5zaW9ucywgY29uc3QgU3RyaW5nJiBycElkKQorc3Rh
dGljIGJvb2wgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBz
dGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVu
c2lvbnMsIGNvbnN0IFN0cmluZyYgcnBJZCkKIHsKICAgICBpZiAocnBJZCAhPSAiZ29vZ2xlLmNv
bSJfcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA2
MWExYmJiMDI0YTZmYTUwMzFiYzEwOTRiODIzZDgxNTdmNzY0ZWJjLi4yMzgwYTQyZDVmYTVhY2M5
N2EwZjA2ZjU4NTFmODdkZWMzY2MwOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtNDEs
NyArNDEsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSB7CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByYXdJZDsKIAogICAgIC8vIEV4dGVuc2lvbnMKLSAgICBPcHRpb25hbDxi
b29sPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFwcGlkOwogCiAgICAgLy8gQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGF0
dGVzdGF0aW9uT2JqZWN0OwpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRvclJl
c3BvbnNlRGF0YSB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VySGFuZGxlOwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjUsNyArNjUsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVBcnJheUJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBB
cnJheUJ1ZmZlciYgYnVmZmVyKQogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxlbmd0
aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMTQsMTEgKzExNCwxMSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNlRGF0YT4gQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGlzRW1wdHk7CiAgICAgZGVjb2RlciA+PiBpc0VtcHR5OwogICAgIGlmICghaXNF
bXB0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBP
cHRpb25hbDxBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhPiBBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghcmVzdWx0LnJhd0lkKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXV0aGVudGlj
YXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0b3JB
dHRlc3RhdGlvblJlc3BvbnNlOwogICAgIGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1MCwxMyArMTUwLDEz
IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFyZXN1bHQuc2lnbmF0dXJlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9v
bD4+IGFwcGlkOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4gYXBwaWQ7
CiAgICAgZGVjb2RlciA+PiBhcHBpZDsKICAgICBpZiAoIWFwcGlkKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFwcGlkKTsKIAotICAg
IE9wdGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBo
YXNVc2VySGFuZGxlOwogICAgIGRlY29kZXIgPj4gaGFzVXNlckhhbmRsZTsKICAgICBpZiAoIWhh
c1VzZXJIYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IDcyODQwNjc0OTM3ZjI5NGZiMzI1ZWM2YTg4
NTY2Yjg5ZjJmZDAyNzMuLmJiOWZkNDY0OTYzYjcxZWUyNWUzNmVhODBmZTcwNTAxYWIyMmJjOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCkBAIC02MCwxNiArNjAs
MTYgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgewogICAgICAg
ICBpbnQ2NF90IGFsZzsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNv
ZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQXV0aGVudGljYXRvclNlbGVjdGlv
bkNyaXRlcmlhIHsKLSAgICAgICAgT3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0
b3JBdHRhY2htZW50PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICAgICAgYm9vbCByZXF1
aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9OwogICAgICAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWly
ZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJl
ZmVycmVkIH07CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiBkZWNvZGUoRGVjb2RlciYp
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
dXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsK
IAogICAgIFJwRW50aXR5IHJwOwpAQCAtNzgsMTQgKzc4LDE0IEBAIHN0cnVjdCBQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHsKICAgICBCdWZmZXJTb3VyY2UgY2hhbGxlbmdlOwog
ICAgIFZlY3RvcjxQYXJhbWV0ZXJzPiBwdWJLZXlDcmVkUGFyYW1zOwogCi0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91dDsK
ICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGV4Y2x1ZGVDcmVkZW50
aWFsczsKLSAgICBPcHRpb25hbDxBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGF1dGhl
bnRpY2F0b3JTZWxlY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdG9yU2VsZWN0
aW9uQ3JpdGVyaWE+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZSBhdHRlc3RhdGlvbjsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEF1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4gZXh0ZW5zaW9uczsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRl
bnNpb25zOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJz
PiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOjpQYXJhbWV0ZXJzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50
eXBlKSkKQEAgLTExNCwxNyArMTE0LDE3IEBAIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOjplbmNvZGUoCiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYT4gUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRl
cmlhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgcmVzdWx0Owog
Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+PiBhdXRoZW50
aWNhdG9yQXR0YWNobWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ+PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICBkZWNvZGVy
ID4+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OwogICAgIGlmICghYXV0aGVudGljYXRvckF0dGFj
aG1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50ID0gV1RGTW92ZSgqYXV0aGVudGljYXRvckF0dGFjaG1lbnQpOwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWlyZVJlc2lkZW50S2V5OworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gcmVxdWlyZVJlc2lkZW50S2V5OwogICAgIGRlY29kZXIgPj4gcmVxdWlyZVJlc2lkZW50
S2V5OwogICAgIGlmICghcmVxdWlyZVJlc2lkZW50S2V5KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyByZXN1bHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucnAuaWQpKQpAQCAtMTY2LDcgKzE2Niw3
IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucHViS2V5Q3JlZFBhcmFtcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gdGltZW91dDsKICAgICBkZWNvZGVyID4+IHRpbWVv
dXQ7CiAgICAgaWYgKCF0aW1lb3V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTc1LDE5ICsxNzUsMTkgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlv
bkNyaXRlcmlhPj4gYXV0aGVudGljYXRvclNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPj4gYXV0aGVudGljYXRv
clNlbGVjdGlvbjsKICAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAg
aWYgKCFhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZSgqYXV0aGVudGlj
YXRvclNlbGVjdGlvbik7CiAKLSAgICBPcHRpb25hbDxBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVm
ZXJlbmNlPiBhdHRlc3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2U+IGF0dGVzdGF0aW9uOwogICAgIGRlY29kZXIgPj4gYXR0ZXN0YXRpb247
CiAgICAgaWYgKCFhdHRlc3RhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQuYXR0ZXN0YXRpb24gPSBXVEZNb3ZlKCphdHRlc3RhdGlvbik7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRl
bnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNpb25zOwogICAgIGRlY29kZXIgPj4gZXh0ZW5z
aW9uczsKICAgICBpZiAoIWV4dGVuc2lvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKaW5kZXggMzJiYjcyOGFiZTgxNjY5NTJjZDU5
NzUxY2NhOGQ5NGY4YzZkZmQ4Yi4uZDI5YmUwMzJhYjc3NjMyMWE3NWExMzYzY2M3OTMyMTYwZjU0
NTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBz
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgewogICAgIFZlY3RvcjxBdXRoZW50
aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+
IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaAppbmRleCBlYTI1MmE0ZjMzNWE2MjQ0M2YxYmJhNWI4ZWUwN2JlZjk3MWVmNzY2Li5j
Y2JhMGMzZmE1MDZmMjdjMTQ0MDViZTM3MGJjOWRjODg3MTE1NDVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKQEAgLTM4LDE1ICszOCwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHsKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogICAgIEJ1ZmZlclNvdXJjZSBjaGFsbGVuZ2U7Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91
dDsKICAgICBtdXRhYmxlIFN0cmluZyBycElkOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50
aWFsRGVzY3JpcHRvcj4gYWxsb3dDcmVkZW50aWFsczsKICAgICBVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6
UHJlZmVycmVkIH07Ci0gICAgT3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhl
bnRpY2F0b3JBdHRhY2htZW50OwotICAgIG11dGFibGUgT3B0aW9uYWw8QXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8QXV0
aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IGV4
dGVuc2lvbnM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTU5LDExICs1OSwxMSBAQCB2b2lkIFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMg
cmVzdWx0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB0aW1lb3V0OworICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAgZGVj
b2RlciA+PiB0aW1lb3V0OwogICAgIGlmICghdGltZW91dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTc0LDEzICs3NCwxMyBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsbG93Q3JlZGVudGlhbHMpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvblJlcXVp
cmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlclZlcmlmaWNh
dGlvblJlcXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNlclZl
cmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJWZXJpZmljYXRpb24pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJWZXJpZmljYXRpb24gPSBXVEZNb3ZlKCp1c2Vy
VmVyaWZpY2F0aW9uKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lvbnM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lv
bnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNpb25zOwogICAgIGlmICghZXh0ZW5zaW9ucykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCmluZGV4IDczZDI2M2ZjMjJjOTFlZDAz
ZDFmOTNiNjI4ZjBmODg3YzM1Y2E0ZmUuLjAxYjY5Mzc4ZGFjOWJmN2Q0YzQxMzNiZTk2ZGM3NzI5
ODA3Njk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBk
dS9BcGR1Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9h
cGR1L0FwZHVDb21tYW5kLmNwcApAQCAtNDcsNyArNDcsNyBAQCB1aW50MTZfdCBwYXJzZU1lc3Nh
Z2VMZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlLCBzaXplX3Qgb2Zmc2V0KQog
CiB9IC8vIG5hbWVzcGFjZQogCi1PcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6OmNy
ZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzc2FnZSkKK3N0ZDo6b3B0
aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpIDwga0Fw
ZHVNaW5IZWFkZXIgfHwgbWVzc2FnZS5zaXplKCkgPiBrQXBkdU1heExlbmd0aCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9hcGR1L0FwZHVDb21tYW5kLmgKaW5kZXggNmE5ZTZjYjRmZTMyY2FmYTdjMDU3OTdkMzRk
ZGZhMTIyMjk0YzdjNC4uMjgxMTFhNWE4NWQ1NDE3NDcwMGJjZDlhZDFkYjMzYmEyNDk3OTE5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21t
YW5kLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXBkdUNvbW1hbmQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFwZHVDb21tYW5kKTsKIHB1YmxpYzoKICAgICAv
LyBDb25zdHJ1Y3RzIGFuIEFQRFUgY29tbWFuZCBmcm9tIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2Ug
ZGF0YS4KLSAgICBzdGF0aWMgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IGNyZWF0ZUZyb21NZXNzYWdl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwZHVD
b21tYW5kPiBjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIAogICAg
IEFwZHVDb21tYW5kKCkgPSBkZWZhdWx0OwogICAgIEFwZHVDb21tYW5kKApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcAppbmRl
eCA5M2E1ZmFhZDRjMTVkNTVkY2I3N2Y3ZTgyZTgwNDAwMzM5OThiNzM3Li43MGViNTk1NGM2ZGE1
MWYwMzdhNjA2NThiOGE1ZmI1NjM2MDM5NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcApAQCAtMzcsNyArMzcsNyBA
QAogbmFtZXNwYWNlIGFwZHUgewogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPEFwZHVSZXNwb25zZT4g
QXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCitzdGQ6Om9wdGlvbmFsPEFwZHVSZXNwb25zZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9t
TWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gSW52YWxpZCBt
ZXNzYWdlIHNpemUsIGRhdGEgaXMgYXBwZW5kZWQgYnkgc3RhdHVzIGJ5dGUuCiAgICAgaWYgKGRh
dGEuc2l6ZSgpIDwgMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vYXBkdS9BcGR1UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
YXBkdS9BcGR1UmVzcG9uc2UuaAppbmRleCA2MzU1Yjg0Yjk1ZWQ1OTkxZTBiY2Q5Y2Y2ZjA1NDU4
MTU5MzhkYjExLi5kZjcxMjM1YmZiZmJmZGJiZWI1MjA2YjA1MTQzZTAzYTg3ZmEwYmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25z
ZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEg
QVBEVSByZXNwb25zZSBmcm9tIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCi0gICAgc3RhdGljIE9w
dGlvbmFsPEFwZHVSZXNwb25zZT4gY3JlYXRlRnJvbU1lc3NhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcGR1UmVzcG9uc2U+IGNyZWF0
ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CiAKICAgICBBcGR1UmVz
cG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgU3RhdHVzKTsKICAgICBBcGR1UmVzcG9uc2Uo
QXBkdVJlc3BvbnNlJiYgdGhhdCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwCmluZGV4IGVlNTgzMjBhZTM4ZTlh
MTljNDI2ZDlkNmRiZjBhYTc2N2Q3M2UzYzUuLjEzYzgwZmFjYmNkYjNkYWQ0MTIyMDkzNzVmNmY5
ZDQ5NTdkODk5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Y2Jvci9DQk9SUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUlJlYWRlci5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCBDQk9SUmVhZGVyOjp+Q0JP
UlJlYWRlcigpCiB9CiAKIC8vIHN0YXRpYwotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVy
OjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCwgaW50
IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpy
ZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCwgaW50IG1h
eE5lc3RpbmdMZXZlbCkKIHsKICAgICBDQk9SUmVhZGVyIHJlYWRlcihkYXRhLmJlZ2luKCksIGRh
dGEuZW5kKCkpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gZGVjb2RlZENib3IgPSByZWFkZXIu
ZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVl
PiBkZWNvZGVkQ2JvciA9IHJlYWRlci5kZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCk7CiAKICAg
ICBpZiAoZGVjb2RlZENib3IpCiAgICAgICAgIHJlYWRlci5jaGVja0V4dHJhbmVvdXNEYXRhKCk7
CkBAIC05NSw3ICs5NSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZChj
b25zdCBCeXRlcyYgZGF0YSwgRGVjb2RlckVycm9yKiBlcnJvckNvZGVPCiAgICAgcmV0dXJuIGRl
Y29kZWRDYm9yOwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNC
T1IoaW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVh
ZGVyOjpkZWNvZGVDQk9SKGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAgaWYgKG1heE5lc3Rp
bmdMZXZlbCA8IDAgfHwgbWF4TmVzdGluZ0xldmVsID4ga0NCT1JNYXhEZXB0aCkgewogICAgICAg
ICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VG9vTXVjaE5lc3Rpbmc7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgYm9vbCBDQk9SUmVhZGVyOjpyZWFkVmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVpbnQ4
X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90KiB2YWwKICAgICByZXR1cm4gY2hlY2tNaW5pbWFs
RW5jb2RpbmcoYWRkaXRpb25hbEJ5dGVzLCBpbnREYXRhKTsKIH0KIAotT3B0aW9uYWw8Q0JPUlZh
bHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3QgdmFsdWUpCitz
dGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb05lZ2F0aXZl
KHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpIHsKICAgICAgICAgbV9lcnJv
ckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFuZ2VJbnRlZ2VyVmFsdWU7CkBAIC0xODMsNyAr
MTgzLDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvTmVn
YXRpdmUodWludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIENCT1JWYWx1ZSgtc3RhdGljX2Nhc3Q8
aW50NjRfdD4odmFsdWUpIC0gMSk7CiB9CiAKLU9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRl
cjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVlKQorc3RkOjpvcHRpb25hbDxD
Qk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZVZhbHVlVG9VbnNpZ25lZCh1aW50NjRfdCB2YWx1
ZSkKIHsKICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSB7CiAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2Rl
ckVycm9yOjpPdXRPZlJhbmdlSW50ZWdlclZhbHVlOwpAQCAtMTkyLDcgKzE5Miw3IEBAIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90
IHZhbHVlKQogICAgIHJldHVybiBDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUp
KTsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU2ltcGxlVmFsdWUo
dWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3QgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPENC
T1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25hbElu
Zm8sIHVpbnQ2NF90IHZhbHVlKQogewogICAgIC8vIEZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJl
IG5vdCBzdXBwb3J0ZWQuCiAgICAgaWYgKGFkZGl0aW9uYWxJbmZvID4gMjQgJiYgYWRkaXRpb25h
bEluZm8gPCAyOCkgewpAQCAtMjE0LDcgKzIxNCw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JP
UlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9S
UmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKQorc3RkOjpvcHRpb25hbDxDQk9S
VmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTdHJpbmcodWludDY0X3QgbnVtQnl0ZXMpCiB7CiAgICAg
aWYgKCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29k
ZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIE9wdGlvbmFs
PENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFN0cmluZyh1aW50NjRfdCBudW1CeXRlcykKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFk
ZXI6OnJlYWRCeXRlcyh1aW50NjRfdCBudW1CeXRlcykKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVl
PiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYgKCFj
YW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJv
cjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpAQCAtMjQ3LDExICsyNDcsMTEgQEAgT3B0aW9uYWw8Q0JP
UlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpCiAgICAgcmV0
dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JCeXRlU3RyaW5nKSk7CiB9CiAKLU9wdGlvbmFsPENC
T1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBt
YXhOZXN0aW5nTGV2ZWwpCitzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVh
ZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAg
Q0JPUlZhbHVlOjpBcnJheVZhbHVlIGNib3JBcnJheTsKICAgICB3aGlsZSAobGVuZ3RoLS0gPiAw
KSB7Ci0gICAgICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gY2JvckVsZW1lbnQgPSBkZWNvZGVDQk9S
KG1heE5lc3RpbmdMZXZlbCAtIDEpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4g
Y2JvckVsZW1lbnQgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwogICAgICAgICBp
ZiAoIWNib3JFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgY2JvckFycmF5LmFwcGVuZChXVEZNb3ZlKGNib3JFbGVtZW50LnZhbHVlKCkpKTsKQEAgLTI1
OSwxMiArMjU5LDEyIEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JB
cnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2CiAgICAgcmV0dXJuIENCT1JW
YWx1ZShXVEZNb3ZlKGNib3JBcnJheSkpOwogfQogCi1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JS
ZWFkZXI6OnJlYWRDQk9STWFwKHVpbnQ2NF90IGxlbmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbCkK
K3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQ0JPUk1hcCh1aW50NjRf
dCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1
ZSBjYm9yTWFwOwogICAgIHdoaWxlIChsZW5ndGgtLSA+IDApIHsKLSAgICAgICAgT3B0aW9uYWw8
Q0JPUlZhbHVlPiBrZXkgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwotICAgICAg
ICBPcHRpb25hbDxDQk9SVmFsdWU+IHZhbHVlID0gZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwg
LSAxKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGtleSA9IGRlY29kZUNCT1Io
bWF4TmVzdGluZ0xldmVsIC0gMSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiB2
YWx1ZSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CiAgICAgICAgIGlmICgha2V5
IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5oCmluZGV4IDdm
YmYzMzU5ZTI1ODM5ZWJiNmEyM2JmZDgwYmE2ZWRlNDJkMTlhZjAuLjE2MTY0ZGVkNGU0NWU3YmM0
YjgwOGZkZjY4ZWJlOGJmY2Y0Nzc1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuaApAQCAtMTAxLDIyICsxMDEsMjIgQEAgcHVibGlj
OgogICAgIC8vIENCT1IgZGF0YS0gdGhlbiBhbiBlbXB0eSBvcHRpb25hbCBpcyByZXR1cm5lZC4g
T3B0aW9uYWwgfGVycm9yQ29kZU91dHwKICAgICAvLyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIGNh
bGxlciB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dAogICAgIC8vIGRlY29k
aW5nIGZhaWx1cmVzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxDQk9SVmFs
dWU+IHJlYWQoY29uc3QgQnl0ZXMmLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCA9IG51bGxw
dHIsIGludCBtYXhOZXN0aW5nTGV2ZWwgPSBrQ0JPUk1heERlcHRoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IHJlYWQoY29uc3QgQnl0ZXMmLCBE
ZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCA9IG51bGxwdHIsIGludCBtYXhOZXN0aW5nTGV2ZWwg
PSBrQ0JPUk1heERlcHRoKTsKIAogICAgIC8vIFRyYW5zbGF0ZXMgZXJyb3JzIHRvIGh1bWFuLXJl
YWRhYmxlIGVycm9yIG1lc3NhZ2VzLgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvckNvZGVU
b1N0cmluZyhEZWNvZGVyRXJyb3IgZXJyb3JDb2RlKTsKIAogcHJpdmF0ZToKICAgICBDQk9SUmVh
ZGVyKEJ5dGVzOjpjb25zdF9pdGVyYXRvciwgY29uc3QgQnl0ZXM6OmNvbnN0X2l0ZXJhdG9yKTsK
LSAgICBPcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCk7
Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBkZWNvZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3Qg
dmFsdWUpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVp
bnQ2NF90IHZhbHVlKTsKLSAgICBPcHRpb25hbDxDQk9SVmFsdWU+IHJlYWRTaW1wbGVWYWx1ZSh1
aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25h
bDxDQk9SVmFsdWU+IGRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCk7CisgICAgc3RkOjpv
cHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZVZhbHVlVG9OZWdhdGl2ZSh1aW50NjRfdCB2YWx1ZSk7
CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZVZhbHVlVG9VbnNpZ25lZCh1aW50
NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IHJlYWRTaW1wbGVWYWx1
ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCB2YWx1ZSk7CiAgICAgYm9vbCByZWFk
VmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90KiB2
YWx1ZSk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQnl0ZXModWludDY0X3QgbnVtQnl0
ZXMpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gcmVhZFN0cmluZyh1aW50NjRfdCBudW1CeXRl
cyk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JPUkFycmF5KHVpbnQ2NF90IGxlbmd0
aCwgaW50IG1heE5lc3RpbmdMZXZlbCk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JP
Uk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0
aW9uYWw8Q0JPUlZhbHVlPiByZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gcmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGlu
dCBtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JP
Uk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpOwogICAgIGJvb2wgY2Fu
Q29uc3VtZSh1aW50NjRfdCBieXRlcyk7CiAgICAgdm9pZCBjaGVja0V4dHJhbmVvdXNEYXRhKCk7
CiAgICAgYm9vbCBjaGVja0R1cGxpY2F0ZUtleShjb25zdCBDQk9SVmFsdWUmIG5ld0tleSwgY29u
c3QgQ0JPUlZhbHVlOjpNYXBWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwCmluZGV4IDhjZWY0ZWFiY2M5ZjMwZTZlYjgw
YjFlYTY4MWMyODUzYmIzNjMxMTIuLjcxZjU4YzAyNmFiYmRkNzIxYTVmYThjNjI0OTMzZTk4NzFk
ODkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9D
Qk9SV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3Iv
Q0JPUldyaXRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQ0JPUldyaXRlcjo6fkNCT1JXcml0ZXIo
KQogfQogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ0JPUldyaXRlcjo6
d3JpdGUoY29uc3QgQ0JPUlZhbHVlJiBub2RlLCBzaXplX3QgbWF4TmVzdGluZ0xldmVsKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENCT1JXcml0ZXI6OndyaXRlKGNvbnN0IENCT1JW
YWx1ZSYgbm9kZSwgc2l6ZV90IG1heE5lc3RpbmdMZXZlbCkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gY2JvcjsKICAgICBDQk9SV3JpdGVyIHdyaXRlcigmY2Jvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuaAppbmRleCBiNTI1NjE3Njg2
YWE5NWUyN2M0MWJlNTFiNjc1YmU1MGU5NmMwMmQ5Li41Zjk0NmMxMDA1NWZjNTU2MDM4MjllNjkz
NGM5YmE4MDZjYzllZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2Nib3IvQ0JPUldyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vY2Jvci9DQk9SV3JpdGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIC8vIGFy
cmF5cy9tYXBzIHRoYXQgaGFzIHRvIGJlIHRyYXZlcnNlZCB0byByZWFjaCB0aGUgbW9zdCBuZXN0
ZWQgQ0JPUlZhbHVlCiAgICAgLy8gY29udGFpbmVkIGluIHxub2RlfC4gUHJpbWl0aXZlIHZhbHVl
cyBhbmQgZW1wdHkgY29udGFpbmVycyBoYXZlIG5lc3RpbmcKICAgICAvLyBkZXB0aHMgb2YgMC4K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3cml0
ZShjb25zdCBDQk9SVmFsdWUmLCBzaXplX3QgbWF4TmVzdGluZ0xldmVsID0ga0RlZmF1bHRNYXhO
ZXN0aW5nRGVwdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gd3JpdGUoY29uc3QgQ0JPUlZhbHVlJiwgc2l6ZV90IG1heE5lc3RpbmdM
ZXZlbCA9IGtEZWZhdWx0TWF4TmVzdGluZ0RlcHRoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDQk9SV3JpdGVyKFZlY3Rvcjx1aW50OF90PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlLmgKaW5kZXggMDBlNTU3NTQyM2M1Yjk3OWI1MTg0OGIyNDljZTQ4M2NiNzMyZGZh
Yy4uYzA2M2M0ZjVjOTM1Zjk3M2RjMTE1NDAyMDM1OTdjNTg1NmMzNGFmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZv
UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCkBAIC01NSwxNyArNTUsMTcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgU3RkU2V0PFByb3RvY29sVmVyc2lvbj4mIHZlcnNpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJzaW9uczsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWFndWlkKCkg
Y29uc3QgeyByZXR1cm4gbV9hYWd1aWQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDx1aW50MzJfdD4m
IG1heE1zZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX21heE1zZ1NpemU7IH0KLSAgICBjb25zdCBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBwaW5Qcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGluUHJvdG9jb2xzOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBleHRl
bnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25zOyB9CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4mIG1heE1zZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX21heE1zZ1Np
emU7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIHBpblByb3Rv
Y29sKCkgY29uc3QgeyByZXR1cm4gbV9waW5Qcm90b2NvbHM7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgZXh0ZW5zaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
ZW5zaW9uczsgfQogICAgIGNvbnN0IEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zJiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgU3RkU2V0
PFByb3RvY29sVmVyc2lvbj4gbV92ZXJzaW9uczsKICAgICBWZWN0b3I8dWludDhfdD4gbV9hYWd1
aWQ7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TXNnU2l6ZTsKLSAgICBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IG1fcGluUHJvdG9jb2xzOwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBtX2V4dGVuc2lvbnM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhNc2dT
aXplOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtX3BpblByb3RvY29sczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2V4dGVuc2lvbnM7CiAgICAgQXV0
aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgbV9vcHRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVl
c3RDb252ZXJ0ZXIuY3BwCmluZGV4IGY4ZGY3NWNhMGY3Y2JkMGVmYjliOTQ1OWZiNDYxMTY4MDA4
NzdkODAuLjVjYmRlOTZmZDFlMGU0MmEwMDg5YWFhMzVhNDA5MjA3ODU4NjQyMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2
aWNlUmVxdWVzdENvbnZlcnRlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENCT1JWYWx1
ZSBjb252ZXJ0RGVzY3JpcHRvclRvQ0JPUihjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvciYgZGUKICAgICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckRlc2NyaXB0b3JNYXAp
KTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JP
Uihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0
aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQorVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVk
ZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5
IHV2Q2FwYWJpbGl0eSwgc3RkOjpvcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4pCiB7CiAgICAg
Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNib3JNYXBbQ0JPUlZhbHVlKDEpXSA9
IENCT1JWYWx1ZShoYXNoKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgYwogICAgIHJldHVybiBjYm9yUmVxdWVzdDsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxh
YmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQorVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9w
dGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgc3RkOjpvcHRpb25hbDxQaW5QYXJh
bWV0ZXJzPiBwaW4pCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNi
b3JNYXBbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZShvcHRpb25zLnJwSWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VS
ZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggOWEyMTU1MzlmZmM4ZWU0OWIxODY5ODQ3NjQ3YTI0
YjliMjIyMTdjOS4uN2NiMmIzMjVhMWM2N2YwYmY0ZGRjY2VhZDRlZDcwODkyYzk5MzQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgc3RhdGlj
IFByb3RvY29sVmVyc2lvbiBjb252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQogICAgIHJldHVybiBQcm90b2NvbFZlcnNpb246OmtVbmtub3duOwogfQog
Ci1PcHRpb25hbDxjYm9yOjpDQk9SVmFsdWU+IGRlY29kZVJlc3BvbnNlTWFwKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVj
b2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKIHsKICAgICBp
ZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VD
b2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBp
bkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07Ci0gICAgT3B0aW9uYWw8
Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRl
cjo6cmVhZChidWZmZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVz
cG9uc2UtPmlzTWFwKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IGRlY29kZWRSZXNwb25zZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25z
dCBWZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGF0dFN0bXQgPSBpdC0+c2Vj
b25kLmNsb25lKCk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGF0dGVzdGF0aW9u
T2JqZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBhdHRlc3RhdGlvbk9i
amVjdDsKICAgICBpZiAoYXR0ZXN0YXRpb24gPT0gQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVy
ZW5jZTo6Tm9uZSkgewogICAgICAgICAvLyBUaGUgcmVhc29uIHdoeSB3ZSBjYW4ndCBkaXJlY3Rs
eSBwYXNzIGF1dGhlbnRpY2F0b3JEYXRhL2Zvcm1hdC9hdHRTdG10IHRvIGJ1aWxkQXR0ZXN0YXRp
b25PYmplY3QKICAgICAgICAgLy8gaXMgdGhhdCB0aGV5IGFyZSBDQk9SVmFsdWUgaW5zdGVhZCBv
ZiB0aGUgcmF3IHR5cGUuCkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShjb25zdCBWZWN0
b3IKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLU9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJ
bmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+
IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIp
CiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwog
ICAgIGlmICghZGVjb2RlZE1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggMGUx
M2FiZGYzOTI5ZDU5MTcyNzczMWNkNmMyZTI5NTRjMDY4OTEyMy4uZTRjNmQ1ZTI0YWFkY2RjNTgx
ZGNkMzY3NzkzMmJlZTYwOTEzZGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAKIC8vIENUQVAgcHJvdG9jb2wsIG51bGwgb3B0aW9uYWwgaXMgcmV0dXJu
ZWQuCiBuYW1lc3BhY2UgZmlkbyB7CiAKLU9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2Rl
UmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitzdGQ6Om9wdGlvbmFsPGNib3I6
OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAK
IC8vIFBhcnNlcyByZXNwb25zZSBjb2RlIGZyb20gcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSB0aGUg
YXV0aGVudGljYXRvci4gSWYKIC8vIHVua25vd24gcmVzcG9uc2UgY29kZSB2YWx1ZSBpcyByZWNl
aXZlZCwgdGhlbiBDVEFQMl9FUlJfT1RIRVIgaXMgcmV0dXJuZWQuCkBAIC02MSw3ICs2MSw3IEBA
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0CiAKIC8vIERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVk
IHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRJbmZvIHJlcXVlc3QgdG8KIC8vIEF1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2Ugb2JqZWN0LgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8QXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4
IDA1NTNmY2IzZDAxZDBkMjQwNmM1NzU4Mzg4N2UzM2E4ZDA1Y2RhYzEuLjk5YTlmMmMzZTE4NDIx
MzE0ZTIxNTdlZjFhNzMyMDJjNDk0ZmFlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAtMzksNyArMzks
NyBAQAogbmFtZXNwYWNlIGZpZG8gewogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPEZpZG9IaWRNZXNz
YWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERl
dmljZUNvbW1hbmQgdHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorc3RkOjpvcHRp
b25hbDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFu
bmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKIHsKICAgICBpZiAoZGF0YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEZpZG9I
aWRNZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlk
b0hpZERldmljCiB9CiAKIC8vIHN0YXRpYwotT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9I
aWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzZXJpYWxpemVkRGF0YSkKK3N0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
ZXJpYWxpemVkRGF0YSkKIHsKICAgICBzaXplX3QgcmVtYWluaW5nU2l6ZSA9IDA7CiAgICAgaWYg
KHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtIaWRQYWNrZXRTaXplIHx8IHNlcmlhbGl6ZWREYXRh
LnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVhZGVyU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKaW5kZXggZDQ2ZmEw
ZjhkZmI4MjUyMzY0MDg4MTliZjg2NDcyMDc3MzBlYjQ2YS4uMzcyOWU3MDhhMmNhNWFkMDVmYTc5
YWIxYWEyMGJhMDMwZDJlZTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgKQEAgLTQzLDEwICs0MywxMCBAQCBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBGaWRvSGlkTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRmlkb0hpZE1lc3NhZ2UpOwogcHVibGljOgogICAgIC8vIFN0YXRpYyBmdW5jdGlvbnMgdG8g
Y3JlYXRlIENUQVAvVTJGIEhJRCBjb21tYW5kcy4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rmlkb0hp
ZE1lc3NhZ2U+IGNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5k
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZpZG9IaWRNZXNzYWdlPiBjcmVhdGUodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKIAogICAgIC8vIFJlY29uc3Ry
dWN0IGEgbWVzc2FnZSBmcm9tIHNlcmlhbGl6ZWQgbWVzc2FnZSBkYXRhLgotICAgIHN0YXRpYyBP
cHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gY3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdl
PiBjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKICAg
ICBGaWRvSGlkTWVzc2FnZShGaWRvSGlkTWVzc2FnZSYmIHRoYXQpID0gZGVmYXVsdDsKICAgICBG
aWRvSGlkTWVzc2FnZSYgb3BlcmF0b3I9KEZpZG9IaWRNZXNzYWdlJiYgb3RoZXIpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5kZXgg
YWQyODliZmRjZGMyNTBjNjdkYTc2YWFjNjU5YTk3ZTlkNGFkODBiNC4uOTE0MmFiYmM4YzY0ODE2
MjAyOWExMjk3OWU4OTViNjcxMjc4MTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHgsIGNvbnN0IFZlY3Rvcjx1
aW50OF8KICAgICByZXR1cm4gcmF3S2V5OwogfQogCi1PcHRpb25hbDxDU3RyaW5nPiB2YWxpZGF0
ZUFuZENvbnZlcnRUb1VURjgoY29uc3QgU3RyaW5nJiBwaW4pCitzdGQ6Om9wdGlvbmFsPENTdHJp
bmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbikKIHsKICAgICBp
ZiAoIWhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhwaW4pKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2Rl
UGluQ29tbWFuZChTdWJjb21tYW5kIHN1YmNvbW1hbmQsIEZ1bmN0aW9uPHZvaWQoQ0JPCiAKIFJl
dHJpZXNSZXNwb25zZTo6UmV0cmllc1Jlc3BvbnNlKCkgPSBkZWZhdWx0OwogCi1PcHRpb25hbDxS
ZXRyaWVzUmVzcG9uc2U+IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbkJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVz
cG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAgYXV0
byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVj
b2RlZE1hcCkKQEAgLTEzMyw3ICsxMzMsNyBAQCBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6S2V5QWdy
ZWVtZW50UmVzcG9uc2UoUmVmPENyeXB0b0tleUVDPiYmIHBlZXJLZXkpCiB7CiB9CiAKLU9wdGlv
bmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8S2V5QWdyZWVtZW50
UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGluQnVmZmVyKQogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFw
KGluQnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXApCkBAIC0xNDksNyArMTQ5LDcgQEAgT3B0
aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShj
b25zdCBWZWN0b3I8dWludDhfdD4KICAgICByZXR1cm4gcGFyc2VGcm9tQ09TRShjb3NlS2V5KTsK
IH0KIAotT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNl
OjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWx1ZTo6TWFwVmFsdWUmIGNvc2VLZXkpCitzdGQ6
Om9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFy
c2VGcm9tQ09TRShjb25zdCBDQk9SVmFsdWU6Ok1hcFZhbHVlJiBjb3NlS2V5KQogewogICAgIC8v
IFRoZSBDT1NFIGtleSBtdXN0IGJlIGEgUC0yNTYgcG9pbnQuIFNlZQogICAgIC8vIGh0dHBzOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3NlY3Rpb24tNy4xCkBAIC0xOTksNyArMTk5LDcg
QEAgVG9rZW5SZXNwb25zZTo6VG9rZW5SZXNwb25zZShSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5SE1B
Qz4mJiB0b2tlbikKIHsKIH0KIAotT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4gVG9rZW5SZXNwb25z
ZTo6cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPFRva2VuUmVzcG9uc2U+IFRv
a2VuUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUFFUyYgc2hhcmVkS2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQogewogICAgIGF1dG8gZGVjb2RlZE1h
cCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXApCkBA
IC0yNDIsNyArMjQyLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBLZXlB
Z3JlZW1lbnRSZXF1ZXN0JikKICAgICByZXR1cm4gZW5jb2RlUGluQ29tbWFuZChTdWJjb21tYW5k
OjprR2V0S2V5QWdyZWVtZW50KTsKIH0KIAotT3B0aW9uYWw8VG9rZW5SZXF1ZXN0PiBUb2tlblJl
cXVlc3Q6OnRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBwaW4sIGNvbnN0IENyeXB0b0tleUVDJiBw
ZWVyS2V5KQorc3RkOjpvcHRpb25hbDxUb2tlblJlcXVlc3Q+IFRva2VuUmVxdWVzdDo6dHJ5Q3Jl
YXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgQ3J5cHRvS2V5RUMmIHBlZXJLZXkpCiB7CiAg
ICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIFNlY3Rpb24gNS41LjQgR2V0dGluZyBzaGFy
ZWRTZWNyZXQgZnJvbSBBdXRoZW50aWNhdG9yLgogICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNl
Lm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAxMzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGlj
YXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMwLmh0bWwjZ2V0dGluZ1NoYXJlZFNlY3JldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oCmluZGV4IGY1YjFlY2Ey
ZjU0YWIyNzJmNWY0ZDFmNTdjZGM1ODQ3MTI1MGIzODEuLjVjZTk1MTA5ZjRiNmI3Y2I3YzE3MmFh
YTY1NGY4MDMwNzdkZTVmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9QaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vUGluLmgKQEAgLTg4LDcgKzg4LDcgQEAgV0VCQ09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZhbHVl
OjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF8KIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVSYXdQdWJsaWNLZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBYLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIFkpOwogCiAvLyB2YWxpZGF0ZUFu
ZENvbnZlcnRUb1VURjggY29udmVydCB0aGUgaW5wdXQgdG8gYSBVVEY4IENTdHJpbmcgaWYgaXQg
aXMgYSBzeW50YWN0aWNhbGx5IHZhbGlkIFBJTi4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPENT
dHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRG
OChjb25zdCBTdHJpbmcmIHBpbik7CiAKIC8vIGtNaW5CeXRlcyBpcyB0aGUgbWluaW11bSBudW1i
ZXIgb2YgKmJ5dGVzKiBvZiBQSU4gZGF0YSB0aGF0IGEgQ1RBUDIgZGV2aWNlCiAvLyB3aWxsIGFj
Y2VwdC4gU2luY2UgdGhlIFBJTiBpcyBVVEYtOCBlbmNvZGVkLCB0aGlzIGNvdWxkIGJlIGEgc2lu
Z2xlIGNvZGUKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgUmV0cmllc1JlcXVlc3QgewogCiAv
LyBSZXRyaWVzUmVzcG9uc2UgcmVmbGVjdHMgYW4gYXV0aGVudGljYXRvcidzIHJlc3BvbnNlIHRv
IGEgfFJldHJpZXNSZXF1ZXN0fC4KIHN0cnVjdCBSZXRyaWVzUmVzcG9uc2UgewotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZXRyaWVzUmVzcG9uc2U+IHBhcnNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKICAgICAv
LyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElOIGF0dGVtcHRzIHJlbWFpbmluZyBiZWZvcmUg
dGhlIGF1dGhlbnRpY2F0b3IKICAgICAvLyBsb2Nrcy4KQEAgLTEyNSw4ICsxMjUsOCBAQCBzdHJ1
Y3QgS2V5QWdyZWVtZW50UmVxdWVzdCB7CiAvLyB8S2V5QWdyZWVtZW50UmVxdWVzdHwgYW5kIGlz
IGFsc28gdXNlZCBhcyByZXByZXNlbnRhdGlvbiBvZiB0aGUKIC8vIGF1dGhlbnRpY2F0b3IncyBl
cGhlbWVyYWwga2V5Lgogc3RydWN0IEtleUFncmVlbWVudFJlc3BvbnNlIHsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxL
ZXlBZ3JlZW1lbnRSZXNwb25zZT4gcGFyc2VGcm9tQ09TRShjb25zdCBjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8S2V5
QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBw
YXJzZUZyb21DT1NFKGNvbnN0IGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmKTsKIAogICAgIFJl
ZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4gcGVlcktleTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIHBy
aXZhdGU6CiBjbGFzcyBUb2tlblJlcXVlc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRv
a2VuUmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFs
PFRva2VuUmVxdWVzdD4gdHJ5Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgV2ViQ29y
ZTo6Q3J5cHRvS2V5RUMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxUb2tlblJlcXVlc3Q+IHRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBwaW4sIGNvbnN0IFdlYkNv
cmU6OkNyeXB0b0tleUVDJik7CiAgICAgVG9rZW5SZXF1ZXN0KFRva2VuUmVxdWVzdCYmKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBzaGFyZWRLZXkgcmV0dXJucyB0aGUgc2hhcmVkIEVDREgga2V5IHRo
YXQgd2FzIHVzZWQgdG8gZW5jcnlwdCB0aGUgUElOLgpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZh
dGU6CiAvLyBuZWVkZWQgdG8gc2hvdyB1c2VyLXZlcmlmaWNhdGlvbiBpbiBmdXR1cmUgb3BlcmF0
aW9ucy4KIGNsYXNzIFRva2VuUmVzcG9uc2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBPcHRpb25hbDxUb2tlblJlc3BvbnNlPiBwYXJzZShjb25zdCBXZWJDb3JlOjpDcnlw
dG9LZXlBRVMmIHNoYXJlZEtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VG9rZW5SZXNwb25zZT4gcGFy
c2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaW5CdWZmZXIpOwogCiAgICAgLy8gcGluQXV0aCByZXR1cm5zIGEgcGluQXV0aCBw
YXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdpbGwgdXNlIHRoZSBnaXZlbgogICAgIC8vIGNs
aWVudC1kYXRhIGhhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCmluZGV4IDQxMmIyOTVl
MDA3ZGIzYTBhZjViMDZkMWIxZDA1NzhhZGQyMDRlYzguLjExN2Y0MmY2OGVhY2E4ZjVlMzIyNGFj
NTM5N2ZiYjZhNTA2ODc3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21t
YW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljCiAgICAgcmV0dXJuIGNvbW1hbmQuZ2V0
RW5jb2RlZENvbW1hbmQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Y29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlv
blBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFu
ZGxlLCBib29sIGNoZWNrT25seSkKIHsKICAgICBpZiAoa2V5SGFuZGxlLnNpemUoKSA+IGtNYXhL
ZXlIYW5kbGVMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05OCw3ICs5
OCw3IEBAIGJvb2wgaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1CiAgICAgcmV0dXJuIChyZXF1ZXN0LnVzZXJW
ZXJpZmljYXRpb24gIT0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYg
IXJlcXVlc3QuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMmIHJlcXVlc3QpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRv
VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCiB7CiAg
ICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjbGkKICAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKHByb2R1
Y2VScElkSGFzaCghYXBwSWQgPyByZXF1ZXN0LnJwLmlkIDogYXBwSWQpLCBjbGllbnREYXRhSGFz
aCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5
U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImIGtleUhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiByZXF1ZXN0LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYg
a2V5SGFuZGxlKQogewogICAgIGlmIChrZXlIYW5kbGUudHlwZSAhPSBQdWJsaWNLZXlDcmVkZW50
aWFsVHlwZTo6UHVibGljS2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE1
LDcgKzExNSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tP
bmx5U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiAgICAgcmV0dXJuIGNvbnN0cnVj
dFUyZlNpZ25Db21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0
YUhhc2gsIGtleUhhbmRsZS5pZFZlY3RvciwgdHJ1ZSAvKiBjaGVja09ubHkgKi8pOwogfQogCi1P
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUs
IGJvb2wgaXNBcHBJZCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9V
MmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlzQXBwSWQpCiB7CiAgICAgaWYgKCFpc0NvbnZl
cnRpYmxlVG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEzMSw3ICsxMzEsNyBAQCBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0Qm9ndXNV
MmZSZWdpc3RyYXRpb25Db21tYW5kKCkKICAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtCb2d1c0FwcFBhcmFtLCBzaXplb2Yoa0JvZ3Vz
QXBwUGFyYW0pKSwgY29udmVydEJ5dGVzVG9WZWN0b3Ioa0JvZ3VzQ2hhbGxlbmdlLCBzaXplb2Yo
a0JvZ3VzQ2hhbGxlbmdlKSkpOwogfQogCi1TdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElk
U3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHM+JiBleHRlbnNpb25zKQorU3RyaW5nIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJ
ZFN1cHBvcnRFeHRlbnNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25zKQogewogICAgIGlmICghZXh0ZW5zaW9ucykg
ewogICAgICAgICAvLyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBzaG91bGQgYWx3
YXlzIHNldCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaAppbmRleCAyODQyNzYyZWQxYzQwZWQy
NjRiOTAxYzU3NzEyM2MyMDgxZWE5ZDk2Li40ZjhhYzQzMjVlOTVkM2I3ZjVhZWRhZTM1YmVmNDY4
M2Q1ODUzYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCkBAIC01NSwyMCArNTUsMjAgQEAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQoY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3IKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb252ZXJ0aWJs
ZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zJik7CiAKIC8vIEV4dHJhY3RzIEFQRFUgZW5jb2RlZCBVMkYgcmVnaXN0ZXIgY29t
bWFuZCBmcm9tIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuCi1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFu
ZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmKTsKIAogLy8gRXh0cmFjdHMgQVBEVSBlbmNv
ZGVkIFUyRiBjaGVjayBvbmx5IHNpZ24gY29tbWFuZCBmcm9tCiAvLyBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zLiBJbnZva2VkIHdoZW4gVTJGIHJlZ2lzdGVyIG9wZXJhdGlvbiBp
bmNsdWRlcyBrZXkKIC8vIGhhbmRsZXMgaW4gZXhjbHVkZSBsaXN0LgotV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFu
ZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3ImKTsKIAogLy8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiBzaWduIGNv
bW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuCi1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
SGFuZGxlLCBib29sIGlzQXBwSWQgPSBmYWxzZSk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJv
b2wgaXNBcHBJZCA9IGZhbHNlKTsKIAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNv
bnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29tbWFuZCgpOwogCiAvLyBSZXR1cm5zICJodHRw
czovL3d3dy5nc3RhdGljLmNvbS9zZWN1cml0eWtleS9vcmlnaW5zLmpzb24iIGFzIGFuIEFwcElE
IHdoZW4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0IGlzIHRydWUuCi1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+Jik7CitX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVu
c2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9u
c0NsaWVudElucHV0cz4mKTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAppbmRleCAz
OTAwNGRhZTgwYjk3Y2Y0MmI1ZmFmYTMwZjMwMjExZjkwMmE1N2E0Li5iNGNlNTQ3MzllODBjNjZh
ZGU4NjgzNzJmMTU1NWQxZTBkMTc3NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgRGF0YWJhc2VEZXRhaWxz
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
aW50NjRfdCBleHBlY3RlZFVzYWdlLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIE9wdGlvbmFsPFdh
bGxUaW1lPiBjcmVhdGlvblRpbWUsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1l
KQorICAgIERhdGFiYXNlRGV0YWlscyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgdWludDY0X3QgY3Vy
cmVudFVzYWdlLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlvblRpbWUsIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogbV9uYW1lKGRhdGFi
YXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQogICAgICAgICAs
IG1fZXhwZWN0ZWRVc2FnZShleHBlY3RlZFVzYWdlKQpAQCAtODAsOCArODAsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eU5hbWU7IH0KICAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9l
eHBlY3RlZFVzYWdlOyB9CiAgICAgdWludDY0X3QgY3VycmVudFVzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50VXNhZ2U7IH0KLSAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KLSAgICBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRpb25UaW1lOyB9CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZp
Y2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgVGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVh
ZC5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxSZXN1bHRTZXQuaAppbmRleCBkNzE2ZmJmMDE1N2VmZjhlMThkY2Q2Y2ZiYmFiZjYy
YmJhZmU4YmVlLi5lMjI4Mzk5OWZhODlhM2M2ZmY3MTZjMTRjNTg5NGY1MzhmZDg0NTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTUUxSZXN1bHRTZXQoKTsKIAogICAgIFJl
ZjxTUUxSZXN1bHRTZXRSb3dMaXN0PiBtX3Jvd3M7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gbV9p
bnNlcnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1faW5zZXJ0SWQ7CiAgICAgaW50
IG1fcm93c0FmZmVjdGVkIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAyYmM1OWVjZTIzZTA0
NmNmMjJiYmQ4MzFiNWNlNjcyODNlOWQyY2Q0Li4xNDkwN2M2YjI2YWY4MTY0ZWI1OGU5ZThjY2Fh
MDM4ODdmZTg2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTUUxUcmFuc2FjdGlv
bjo6U1FMVHJhbnNhY3Rpb24oUmVmPERhdGFiYXNlPiYmIGRhdGFiYXNlLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25DYQogCiBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkgPSBkZWZhdWx0
OwogCi1FeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBT
dHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYWw8VmVjdG9yPFNRTFZhbHVlPj4mJiBhcmd1bWVu
dHMsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPFNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYgY2FsbGJhY2tFcnJvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3Rh
dGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrPiYmIGNhbGxiYWNrRXJyb3IpCiB7CiAgICAgaWYgKCFtX2V4ZWN1dGVTcWxBbGxvd2VkIHx8
ICFtX2RhdGFiYXNlLT5vcGVuZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmgKaW5kZXggZDJjODA3OTY3ODE1NjEwZmVkNDZiYTZmZGY0ZjE0
NjllZTk5MzgxNy4uNDVlNDg3MTZhMDY2ZDU3YzQ0ZGU5MWMyZjg2YzkwZGVhMjIzMzFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTUUxUcmFuc2Fj
dGlvbj4gY3JlYXRlKFJlZjxEYXRhYmFzZT4mJiwgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVy
PiYmLCBib29sIHJlYWRPbmx5KTsKICAgICB+U1FMVHJhbnNhY3Rpb24oKTsKIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlv
bmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2Fs
bGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVt
ZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmKTsKIAog
ICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CiAgICAgdm9pZCBwZXJmb3JtTmV4dFN0ZXAoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFk
ZHJlc3NTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQWRkcmVzc1NwYWNlLmgKaW5kZXggNzc5MjJjYWNhZTBhNzM0NjI1MWU2NWZhYzg2NDM1Njcw
ZjViMjBmNy4uYjE4NjY2OGI2NjdlODQ2NWM3ODk4OWEwMDA2YjZhMGY2ZDBkMjE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVz
c1NwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQWRkcmVzc1NwYWNlLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgVHlwZUFu
bm90YXRpb24mIG9wZXJhdG9yPShjb25zdCBUeXBlQW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKICAg
ICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KFR5cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVm
YXVsdDsKIAotICAgIE9wdGlvbmFsPEFkZHJlc3NTcGFjZT4gbGVmdEFkZHJlc3NTcGFjZSgpIGNv
bnN0CisgICAgc3RkOjpvcHRpb25hbDxBZGRyZXNzU3BhY2U+IGxlZnRBZGRyZXNzU3BhY2UoKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKICAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPihtX2lubmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGlj
LmgKaW5kZXggY2NhZmVkYmVhNzMyNGNjYjg0YmE0ZjZhMTJlODg1MTg0MGM4MzRlOS4uZTljMDQy
YjYxYjllMmY4ZTc3ZGFkMzY1NjUxZjRkNjM1MGM1NDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGlj
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICBJbnB1dCwKICAgICAgICAgT3V0
cHV0CiAgICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURp
cmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlw
ZT4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0
ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRy
eVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgQ29kZUxvY2F0aW9uIG1f
Y29kZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKaW5kZXggYTJhODMz
MzIzMTE3Y2M0YmExNjE4ZjA4MWVjYWFlNDk0MDJmNTI3NC4uYzNlNGRmMmVjMWI0MTRkMGNiODNj
NjliMjc2NjI0NGI5YjZiNjcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNv
bnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QgSW50CiAgICAgfQogfQogCi1ib29s
IEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFk
ZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+
JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKK2Jvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFi
bGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0
CiB7CiAgICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsKICAgICBjYXNlIEVudHJ5UG9pbnRU
eXBlOjpWZXJ0ZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCmluZGV4IDMzYTExNjg1ZTUy
ZjEzM2UwNGYxZDMzYjM3NzU4Mjk4N2M5MGE5NGYuLjI3ZWRmNGM3NjdiM2E1OTkzMjhkMzQ2Y2Rm
MTFhODM4MGQ4NGQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHcm91cFRocmVhZElECiAgICAgfTsKIAotICAgIEJ1
aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBP
cHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBCdWls
dEluU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKICAgICAg
ICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCiAgICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJs
ZSkKICAgICAgICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQpAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgQnVpbHRJblNlbWFudGljKEJ1aWx0SW5TZW1hbnRpYyYm
KSA9IGRlZmF1bHQ7CiAKICAgICBWYXJpYWJsZSB2YXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFibGU7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZD4mIHRhcmdldEluZGV4KCkgeyByZXR1
cm4gbV90YXJnZXRJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiB0YXJnZXRJ
bmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTExOCwxMSArMTE4
LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3Qg
VW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9u
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIFZhcmlhYmxlIG1fdmFyaWFibGU7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fdGFyZ2V0SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV90YXJnZXRJ
bmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJl
c3Npb24uaAppbmRleCA5NGVlOWZjZjdlMDBiODBiZmEzYTYwYjlhYWJkOWVhN2JmOThiNDgzLi4z
ZDQxMzdlODViZmNjNTgxN2I3ZDI1ZmRmZjViNDA2NGUwOGEzNDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b25zdGFudEV4cHJlc3Npb24uaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgbWF0Y2hlcyhjb25zdCBDb25zdGFudEV4cHJlc3Npb24mIG90aGVyKSBjb25zdAogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVzdWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHJlc3VsdDsKICAgICAgICAgZG91YmxlIHZhbHVlOwogICAgICAgICB2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKICAg
ICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24u
aAppbmRleCA1Y2MzYjdlYTIxZjY2MDBkZTY5MWEyYzg5ODU2OGY2NjljNzVkOTE0Li5jODgxYzM0
MWFmZDgxMGYwNjM2ZGQ1N2Y5NmNlNzFjYTM2MmM1M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCkBA
IC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDb2RlTG9jYXRpb24gbV9j
b2RlTG9jYXRpb247CiAgICAgUmVmUHRyPFVubmFtZWRUeXBlPiBtX3R5cGU7Ci0gICAgT3B0aW9u
YWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxU
eXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlvbjsKICAgICBLaW5kIG1fa2luZDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaAppbmRleCA1Y2E5ZmM4NDExZGIyMGVh
NWQ0ZmE0ZjY2NDZhMWU4YWM4OTNjYmRkLi5jZWIyNGQyZTI4ZjYxY2ZiNWFkYzk0MmUyNjg4ZTM0
YTcyMzcyOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBBU1QgewogY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJh
dGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxv
Y2ssIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBlbnRyeVBvaW50VHlwZSwgUmVmPFVubmFtZWRU
eXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRl
cnMsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9y
LCBQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKKyAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKENvZGVM
b2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1dGVCbG9jaywgc3RkOjpv
cHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFJlZjxVbm5hbWVkVHlwZT4g
dHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiBwYXJhbWV0ZXJzLCBz
dGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMsIGJvb2wgaXNPcGVyYXRvciwgUGFy
c2luZ01vZGUgcGFyc2luZ01vZGUpCiAgICAgICAgIDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24p
CiAgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJpYnV0ZUJsb2NrKSkKICAg
ICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5UG9pbnRUeXBlKQpAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRl
QmxvY2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJsb2NrOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8
RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlQ
b2ludFR5cGU7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50
cnlQb2ludFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5UG9pbnRUeXBlOyB9CiAgICAgY29u
c3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBVbm5h
bWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIENvZGVMb2NhdGlvbiBtX2NvZGVMb2NhdGlvbjsKICAgICBBdHRyaWJ1dGVC
bG9jayBtX2F0dHJpYnV0ZUJsb2NrOwotICAgIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBtX2Vu
dHJ5UG9pbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQ
b2ludFR5cGU7CiAgICAgYm9vbCBtX2lzT3BlcmF0b3I7CiAgICAgUGFyc2luZ01vZGUgbV9wYXJz
aW5nTW9kZTsKICAgICBSZWY8VW5uYW1lZFR5cGU+IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAppbmRleCBmNjNiNDZkODhlMzI1OTgwOGIwMzdk
ZTIyN2Q2NWJlZTcwZTkyYTIwLi41MTAzZWM4ZDE4MGM4YjU5Y2QxZGIxNGNmNWQ1NjdhYjA1MTY5
ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBA
IC0xMjgsOCArMTI4LDggQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9s
ZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fb2xkVmFsdWU7
CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fbmV3VmFsdWU7Ci0gICAgT3B0
aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAgICBP
cHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNzaW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247
CisgICAgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVz
c2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmNwcAppbmRleCA5MzFmZmIxMjc3ZTA3Y2FmODUyODI3YTUzOWU3NTE2ZGZmY2IyMmM5Li4y
NDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJiN2Y4YzcyMTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIFJlc291cmNlU2VtYW50
aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25z
dCBJbgogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBP
cHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAorYm9vbCBSZXNvdXJjZVNlbWFudGljOjpp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc291cmNlU2VtYW50aWMuaAppbmRleCBlY2NiYjFiYjdiZmRhNDYwYjc2YzAwZjgy
NzE5MmFmZDNkNTg1ZGU3Li5mOGQ1ZWQzN2U4YWI5N2ZmN2E1OTAyZDdmMWVhZWJmYTY1NWVhYzEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCkBAIC04OSw3ICs4OSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUm
LCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFi
bGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRh
YmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIE1vZGUgbV9tb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYy5jcHAKaW5kZXggYjBhMGRjOWFkOTg2Y2ZiN2ExNTUwNjEwMDlmNjJj
ZWM3ZWRjM2Q0YS4uMTRmMDE1Mzk0ZTFmNjZlYTY3NDU3NDFkNzA3OTlkNmEyZDViZWE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
Ojppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkCiAgICAgcmV0dXJu
IGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSkuaXNOdW1iZXIoKTsKIH0KIAotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0Citib29s
IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRl
bURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAogewogICAgIHJldHVybiBkaXJlY3Rpb24gPT0g
U2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCmluZGV4IGM3ZDRkNWRkYjk2MjA3NGE0ODg3
MTRkZmQ3ZGMyMzJmYWExZmI0NWIuLjY2MzllYzE5NmY4OTk1YzIwOTVlZDFlMmMwNGY4OGZlODhk
MWM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlz
QWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9u
KFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlv
bihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuY3BwCmluZGV4IGJhNDlmNzljZTMyYzNhZGFkOTExMGRjNzU1NWEyMTYzMDVj
MGJiZjYuLjE2ZGM2NDk2NWIzMjMxNjU1MDllYzYxY2NlMmRiNGE5NjgwZWJkMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5P
dXRTZW1hbnRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIFN0
YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlwZSYgdW5u
YW1lZFR5cGUsIGNvbnN0CiAgICAgICAgIHx8IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJp
eCgpOwogfQogCi1ib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVy
SXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0aW9u
YWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKK2Jvb2wgU3RhZ2VJbk91
dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1E
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYg
ZW50cnlQb2ludFR5cGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsK
ICAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5oCmluZGV4IDMxNjdjNmMyMjc1NjgxZDU1OWUyODlkMzNiZmQzOWZiZjRlMWRjMTUu
LjMwZTIzY2FhNGQ3ZTIxMmY2MmEwYzUzNmE3ZTNhYzlmNGExMzc5NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1h
bnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRy
aW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJ
dGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9p
bnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVy
SXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKaW5kZXggZWY1Zjg4NzMxNzY0OTgyYmExNmU2OWQ3
YWUyYmZjOWZjYTllYWY4Ni4uMjY1N2E4OTE2ZDM2NjVkZGM2Y2RjZjg3OTJiMTQyMmFkM2VmZTk4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMU3dpdGNoQ2FzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN3aXRjaENhc2UuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgQVNUIHsK
IGNsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYmIGJs
b2NrKQorICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFs
PENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwgQmxvY2smJiBibG9jaykKICAgICAgICAgOiBT
dGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRjaENhc2UpCiAgICAgICAgICwgbV92YWx1ZShX
VEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2Jsb2NrKFdURk1vdmUoYmxvY2spKQpAQCAtNTUs
MTEgKzU1LDExIEBAIHB1YmxpYzoKICAgICBTd2l0Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9
IGRlbGV0ZTsKICAgICBTd2l0Y2hDYXNlKFN3aXRjaENhc2UmJikgPSBkZWZhdWx0OwogCi0gICAg
T3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJu
IG1fdmFsdWU7IH0KICAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiBtX3ZhbHVlOwogICAgIEJsb2NrIG1fYmxv
Y2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAppbmRl
eCAwMTZhNTgxODA3N2JhNzBiZTUyYTg4MjlhMGUzZDA4OWNkYTkxYjY3Li4xYjU2Mjg4Y2JlYTI1
NzFhZjFkMDlkMTUxMTIzMTU4MGJkNWViZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0cnVj
dCBOYW1lZEJpbmRpbmcgewogICAgICAgICBNYW5nbGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxl
bWVudE5hbWU7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBPcHRpb25hbDxMZW5n
dGhJbmZvcm1hdGlvbj4gbGVuZ3RoSW5mb3JtYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TGVuZ3RoSW5mb3JtYXRpb24+IGxlbmd0aEluZm9ybWF0aW9uOwogICAgIH07CiAgICAgc3RydWN0
IE5hbWVkQmluZEdyb3VwIHsKICAgICAgICAgTWFuZ2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IDdjY2Y1N2E1NmYwNGIzMzc4ZmRh
YmQwYjgzNDNiZjMxMDhhYmNlMWYuLmMyYjQ1OTBhNTVmYzMxN2IyNjAyMzFkZTM4YjQyMGZmYTY5
N2RhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xODQsNyArMTg0
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTd2l0Y2gKICAgICB9OwogCi0gICAgT3B0aW9uYWw8
QnJlYWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0NvbnRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxC
cmVha0NvbnRleHQ+IG1fY3VycmVudEJyZWFrQ29udGV4dDsKIAogICAgIFN0cmluZ0J1aWxkZXIm
IG1fc3RyaW5nQnVpbGRlcjsKICAgICBJbnRyaW5zaWNzJiBtX2ludHJpbnNpY3M7CkBAIC0xOTUs
NyArMTk1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nOwogICAgIExheW91dCYgbV9sYXlvdXQ7
CiAgICAgdW5zaWduZWQgbV92YXJpYWJsZUNvdW50IHsgMCB9OwotICAgIE9wdGlvbmFsPE1hbmds
ZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZTsKICAgICBJbmRlbnRhdGlvbjw0PiBtX2luZGVudCB7IDAgfTsKICAg
ICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZlY3RvcjxWYXJpYWJsZT4+IG1faG9pc3RlZFZh
cmlhYmxlczsKIH07CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKQogCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6ZW1pdExvb3AoTG9vcENvbmRpdGlvbkxvY2F0aW9uIGxvb3BDb25kaXRpb25Mb2Nh
dGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRpb25FeHByZXNzaW9uLCBBU1Q6OkV4cHJlc3Np
b24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQmIGJvZHkpCiB7Ci0gICAgU2V0Rm9yU2NvcGU8
T3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtP
dXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkp
OworICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxv
b3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgK
ICAgICAgICAgbV9pbmRlbnQsICJib29sICIsICptX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5
VmFyaWFibGUsICIgPSBmYWxzZTtcbiIsCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKExvb3BDb25kaXRpb25Mb2NhdGlvbiBsb29wQ29u
ZGl0aW9uTG9jYXQKICAgICAgICAgfQogCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bV9pbmRlbnQsICJkbyB7XG4iKTsKLSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtD
b250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0
OjpMb29wKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+
PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6Okxvb3Ap
OwogCiAgICAgICAgIHsKICAgICAgICAgICAgIEluZGVudGF0aW9uU2NvcGUgZG9TY29wZShtX2lu
ZGVudCk7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiOlxuIik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9pbmRlbnQsICJkZWZhdWx0OlxuIik7Ci0gICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8
QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtD
b250ZXh0OjpTd2l0Y2gpOworICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8QnJlYWtDb250
ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpT
d2l0Y2gpOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOwogICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEy
IEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRvIGJyZWFrIG9yIGZhbGx0aHJvdWdoLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCBhYTNhNjk4
NGI2MTZmNjVkMGIwYTAwYmY5ZjJiNTdkNGZiNDEzYThlLi4zZmQyYzhhODdiYzY3YzlmZTYyY2Uz
ZTY0NGE2NjRhODY0YzQ2NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGVudW0gY2xhc3MgU2FtcGxlVHlwZSB7CiAg
ICAgU2FtcGxlR3JhZAogfTsKIAotc3RhdGljIE9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5
cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTYW1w
bGVUeXBlPiBzYW1wbGVUeXBlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKQogewogICAgIGlm
IChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZSIpCiAgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpT
YW1wbGU7CkBAIC01MjgsMjIgKzUyOCwyMiBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYQogICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgY29uc3QgTWFuZ2xlZFZhcmlhYmxlTmFtZSYgd2lk
dGhOYW1lID0gYXJnc1tpbmRleF07CiAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIE9wdGlvbmFs
PE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5hbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TWFuZ2xlZFZhcmlhYmxlTmFtZT4gaGVpZ2h0TmFtZTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBl
LnRleHR1cmVEaW1lbnNpb24oKSA+PSAyKSB7CiAgICAgICAgICAgICBoZWlnaHROYW1lID0gYXJn
c1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIE9wdGlv
bmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRlcHRoTmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxNYW5nbGVkVmFyaWFibGVOYW1lPiBkZXB0aE5hbWU7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlw
ZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMykgewogICAgICAgICAgICAgZGVwdGhOYW1lID0gYXJn
c1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAgICAgIE9wdGlv
bmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGVsZW1lbnRzTmFtZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBlbGVtZW50c05hbWU7CiAgICAgICAgIGlmICh0ZXh0
dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBlbGVtZW50c05hbWUgPSBh
cmdzW2luZGV4XTsKICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgT3B0
aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbnVtYmVyT2ZMZXZlbHNOYW1lOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG51bWJlck9mTGV2ZWxzTmFtZTsKICAg
ICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBl
LnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKSB7CiAgICAgICAgICAgICBudW1iZXJPZkxldmVsc05h
bWUgPSBhcmdzW2luZGV4XTsKICAgICAgICAgICAgICsraW5kZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA3MjFj
YmEzMGFjMTljNWY0NzZhYzJkM2UxMTMwZTRjMTNjZDUxNjZmLi43YWEyN2E2YzhhOThjM2U1YmY2
N2ZmMjljMjJhYmE4NjA4M2YyZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBlbnVt
IGNsYXNzIEFjY2VwdGFiaWxpdHkgewogICAgIE5vCiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8QVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0
IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgQ29k
ZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxS
ZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQogewog
ICAgIGlmIChuYW1lID09ICJvcGVyYXRvcj09IiAmJiB0eXBlcy5zaXplKCkgPT0gMikgewogICAg
ICAgICBhdXRvIGFjY2VwdGFiaWxpdHkgPSBbXShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBl
KSAtPiBBY2NlcHRhYmlsaXR5IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNv
bnN0IFN0cgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
U2VtYW50aWNzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGlucHV0SXRlbXMsIFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4mIG91dHB1dEl0ZW1zLCBjb25zdCBPcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRU
eXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCitzdGF0
aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpbnB1dEl0ZW1z
LCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVtcywgY29uc3Qgc3RkOjpvcHRpb25h
bDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3Mm
IGludHJpbnNpY3MpCiB7CiAgICAgewogICAgICAgICBhdXRvIGNoZWNrRHVwbGljYXRlU2VtYW50
aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsK
QEAgLTQwMCw4ICs0MDAsOCBAQCBwcml2YXRlOgogICAgICAgICBSZXNvbHZpbmdUeXBlJiByZXNv
bHZpbmdUeXBlOwogICAgICAgICBjb25zdCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0
aW9uOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVjdXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJbmZv
KEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAg
T3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1
aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPiBy
ZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mLCBib29sIHJlcXVpcmVzTGVmdFZhbHVl
ID0gZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8oQVNUOjpF
eHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKICAgICBSZWZQdHI8
QVNUOjpVbm5hbWVkVHlwZT4gcmVjdXJzZUFuZFdyYXBCYXNlVHlwZShBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYpOwogICAgIGJvb2wgcmVjdXJzZUFuZFJlcXVpcmVCb29sVHlwZShBU1Q6
OkV4cHJlc3Npb24mKTsKICAgICB2b2lkIGFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Np
b24mLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEFTVDo6VHlwZUFubm90YXRpb24pOwpAQCAtNzMz
LDcgKzczMyw3IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBl
UmVmZXJlbmNlKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKIH0K
IAotYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZvPgor
YXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Np
b24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+
CiB7CiAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CiAgICAgaWYgKGhhc0Vycm9yKCkp
CkBAIC03NDEsNyArNzQxLDcgQEAgYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmEKICAgICByZXR1cm4g
Z2V0SW5mbyhleHByZXNzaW9uLCByZXF1aXJlc0xlZnRWYWx1ZSk7CiB9CiAKLWF1dG8gQ2hlY2tl
cjo6Z2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0
VmFsdWUpIC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZvPgorYXV0byBDaGVja2VyOjpnZXRJbmZvKEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4gc3Rk
OjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KIHsKICAgICBhdXRvIHR5cGVJdGVyYXRvciA9IG1fdHlw
ZU1hcC5maW5kKCZleHByZXNzaW9uKTsKICAgICBBU1NFUlQodHlwZUl0ZXJhdG9yICE9IG1fdHlw
ZU1hcC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCmluZGV4IDRlNTFhYjc5M2U3
MDRkNjNjZjE0Nzg2YzUzYzU5M2EwNWVkNDRlNWYuLjBkNjJiNzg4ZTY0MGE5OGRmZGQwYTdjYTlj
OWNkNjRiMDU2YmZlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCkBAIC0zOCw5ICsz
OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdITFNMIHsKIAotT3B0aW9u
YWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0s
IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBlbnRyeVBvaW50KQorc3RkOjpvcHRpb25hbDxDb21w
dXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpG
dW5jdGlvbkRlZmluaXRpb24mIGVudHJ5UG9pbnQpCiB7Ci0gICAgT3B0aW9uYWw8Q29tcHV0ZURp
bWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURp
bWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwogCiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewogICAgICAgICBib29s
IGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1l
bnNpb25zLmgKaW5kZXggYjhmZjQ0ZjI5ZWVhNzJlZjllMGUyNDNkMjRkZmY1MmIyNWZhYTUxNC4u
NTU2MzA4ZDE5YzZhY2JmNjEzOWEwODJlMWEwNTdmODFhZTljMDNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURp
bWVuc2lvbnMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb247CiAK
IGNsYXNzIFByb2dyYW07CiAKLU9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGlt
ZW5zaW9ucyhQcm9ncmFtJiwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKTsKK3N0ZDo6b3B0aW9u
YWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6OkZ1
bmN0aW9uRGVmaW5pdGlvbiYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKaW5kZXggYTljNmEyNjg0ZTFjNDZiZDM3N2My
NWI1YzIwOTFiODZhOGFiYTU3OC4uOWQ2YjBlYWNjZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3NDNi
OTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xMZXhlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xMZXhlci5jcHAKQEAgLTE2ODUsNyArMTY4NSw3IEBAIGF1dG8gTGV4ZXI6OmxpbmVBbmRDb2x1
bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVk
CiAgICAgcmV0dXJuIHsgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIH07CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIG5h
bWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6
TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcq
IHNvdXJjZTIpCiB7CiAgICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKICAgICBjYXNlIEFTVDo6TmFt
ZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCmluZGV4IGE4ZGFlYTVjZWM2
NDQ1ZjQ3YmIwNzQwZmM4ZmQzNGM4NWMzN2ViMzAuLjYwMGRhODRiOGY0MTIwMWFmZWI2MDhkNDE0
MTA2NWRkZTE5NGQ0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6c2VhcmNoRnVuY3Rpb25zKFN0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8Q29kZUxv
Y2F0aW9uPiBOYW1lQ29udGV4dDo6dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAor
c3RkOjpvcHRpb25hbDxDb2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhu
YW1lKSkKICAgICAgICAgcmV0dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oCmlu
ZGV4IDQxNjRiN2UyYWMzNGE0MDQ3M2IxMDcyZWNmMWIyYjkwZDkyZDU5ODEuLjM0MDdkNTA2YTJj
N2QxNGQ0MjAzYmJkNjE1Y2JlNDZlY2ExZTI2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmgKQEAgLTc4LDcgKzc4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBU1Q6Ok5hbWVkVHlwZSogc2VhcmNoVHlwZXMo
U3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHNlYXJj
aEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIE9wdGlvbmFsPENvZGVMb2NhdGlv
bj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PENvZGVMb2NhdGlvbj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIGxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7
CiAKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNU
OjpOYW1lZFR5cGU+LCAxPj4gbV90eXBlc1tBU1Q6Om5hbWVTcGFjZUNvdW50XTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRl
eCBmZjMzZmM0NTkxMzJiMTFmNDAwOGY3ZGEzN2U1NDY3MzVhNDUwNzFmLi40ZmQ0NzIxNmMyMzJj
OWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
Ym9vbCBQYXJzZXI6OnBlZWtUeXBlcygpCiAgICAgcmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6aW5j
bHVkZXModG9rZW4udHlwZSk7CiB9CiAKLU9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUo
VG9rZW46OlR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShU
b2tlbjo6VHlwZSB0eXBlKQogewogICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKICAg
ICBpZiAodG9rZW4udHlwZSA9PSB0eXBlKQpAQCAtMjExLDcgKzIxMSw3IEBAIE9wdGlvbmFsPFRv
a2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlwZSkKIH0KIAogdGVtcGxhdGUgPFRv
a2VuOjpUeXBlLi4uIHR5cGVzPgotT3B0aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZXMoKQor
c3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygpCiB7CiAgICAgYXV0byB0b2tl
biA9IG1fbGV4ZXIucGVlaygpOwogICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRv
a2VuLnR5cGUpKQpAQCAtMzQzLDExICszNDMsMTEgQEAgYXV0byBQYXJzZXI6OmNvbnN1bWVOb25O
ZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpIC0+IEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4KICAg
ICBhdXRvIGludGVncmFsTGl0ZXJhbCA9IGNvbnN1bWVJbnRlZ3JhbExpdGVyYWwoKTsKICAgICBp
ZiAoIWludGVncmFsTGl0ZXJhbCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGludGVn
cmFsTGl0ZXJhbC5lcnJvcigpKTsKLSAgICBhdXRvIHJlc3VsdCA9IFdURjo6dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbXShpbnQgeCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKKyAgICBhdXRvIHJl
c3VsdCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gewogICAgICAgICBpZiAoeCA8IDApCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geDsKLSAgICB9LCBbXSh1bnNpZ25lZCB4KSAt
PiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIH0sIFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgcmV0dXJuIHg7CiAgICAgfSksICppbnRlZ3JhbExp
dGVyYWwpOwogICAgIGlmIChyZXN1bHQpCkBAIC04NjksNyArODY5LDcgQEAgYXV0byBQYXJzZXI6
OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRfdCBkZWZhdWx0VmFsdWUpIC0+IEV4cGVjdGVk
PEFTVDo6RW51bWUKICAgICBpZiAodHJ5VHlwZShUb2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsK
ICAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNzaW9uLCBDb25zdGFudEV4cHJlc3Npb24pOwog
Ci0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+IHZhbHVlOwogICAgICAgICBjb25zdGFudEV4cHJlc3Npb24tPnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7CiAg
ICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlKCk7CiAgICAgICAgIH0sIFsm
XShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5o
CmluZGV4IGMwYjQ4N2M1M2Y2YWVmMTMwMDhkZDg1NTlkNzU0NDYyOTgxMDY4NGMuLmU5YmNiZTQ5
MmUyMGVmZWY3MTE5NTEzNjdmZTgyNmIwZTAzMjhlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaApAQCAtNjgsOSArNjgsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGVla1R5cGUoVG9rZW46OlR5cGUpOwogICAgIHRlbXBsYXRlIDxU
b2tlbjo6VHlwZS4uLiB0eXBlcz4KICAgICBib29sIHBlZWtUeXBlcygpOwotICAgIE9wdGlvbmFs
PFRva2VuPiB0cnlUeXBlKFRva2VuOjpUeXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0
cnlUeXBlKFRva2VuOjpUeXBlKTsKICAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+
Ci0gICAgT3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVzKCk7CisgICAgc3RkOjpvcHRpb25hbDxUb2tl
bj4gdHJ5VHlwZXMoKTsKICAgICBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+IGNvbnN1bWVUeXBlKFRv
a2VuOjpUeXBlKTsKICAgICB0ZW1wbGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+CiAgICAgRXhw
ZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlwZXMoKTsKQEAgLTgzLDE0ICs4MywxNCBAQCBw
cml2YXRlOgogICAgIHN0cnVjdCBUeXBlU3VmZml4QWJicmV2aWF0ZWQgewogICAgICAgICBDb2Rl
TG9jYXRpb24gbG9jYXRpb247CiAgICAgICAgIFRva2VuIHRva2VuOwotICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG51bUVsZW1lbnRzOwogICAgIH07CiAgICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVk
LCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKTsKICAgICBzdHJ1Y3QgVHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkIHsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uOwogICAg
ICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgT3B0aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+IGFk
ZHJlc3NTcGFjZTsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEFTVDo6QWRkcmVzc1NwYWNlPiBhZGRyZXNzU3BhY2U7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwogICAgIH07CiAgICAgRXhw
ZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4Tm9u
QWJicmV2aWF0ZWQoKTsKICAgICBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9y
PiBwYXJzZUFkZHJlc3NTcGFjZVR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oCmluZGV4
IDQ0YjIxM2VlZDc1ZWI1NjhmODFhYzZlNTM5ODM2Mzc1OTQwMjg1YWEuLjEyNzA1OTg4MGQ1M2Rl
Y2E4YjY0MjRmZTI2MDU1ZmVhMGNlZWZiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaApA
QCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgQXR0YWNobWVudERlc2NyaXB0b3IgewogCiBzdHJ1Y3Qg
QXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IgewogICAgIFZlY3RvcjxBdHRhY2htZW50RGVzY3Jp
cHRvcj4gYXR0YWNobWVudERlc2NyaXB0b3JzOwotICAgIE9wdGlvbmFsPEF0dGFjaG1lbnREZXNj
cmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cjsKIH07CiAKIGVudW0gY2xhc3MgU2hhZGVyU3RhZ2UgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCmluZGV4
IDgyNjFmOWIwMTY4OWMwNzM4ZjE2NjM2ZTg2ZTRjMjk1MDI5YjJiM2MuLmQ4YWQ1MzA0YzQ3MzRl
YTA2MDhjZTZjMjA1YjRiZWUyODc3ZDc3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBA
IEV4cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFk
ZXJNb2R1bGUmIHZlcnRleFNoYWRlck1vCiAgICAgICAgIGlmICghcHJvZ3JhbSkKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwcm9ncmFtLmVycm9yKCkpOwogCi0gICAgICAgIE9w
dGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsK
ICAgICAgICAgewogICAgICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJtYXRjaFNlbWFu
dGljcyIsIHBoYXNlVGltZXMpOwogICAgICAgICAgICAgbWF0Y2hlZFNlbWFudGljcyA9IG1hdGNo
U2VtYW50aWNzKCpwcm9ncmFtLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IsIGRpc3RpbmN0RnJh
Z21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTW9kdWxlKTsKQEAgLTI4OSw3ICsyODksNyBAQCBF
eHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRl
ck1vZHVsZSYgc2hhZGVyTW9kdWxlLAogewogICAgIFBoYXNlVGltZXMgcGhhc2VUaW1lczsKICAg
ICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZWRDb2RlOwotICAgIE9wdGlvbmFsPENv
bXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9uczsKIAogICAgIHsKICAgICAgICAgUGhh
c2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhhc2VUaW1lcyk7CkBAIC0yOTcs
NyArMjk3LDcgQEAgRXhwZWN0ZWQ8Q29tcHV0ZVByZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFy
ZShjb25zdCBTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwKICAgICAgICAgaWYgKCFwcm9ncmFt
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7CiAK
LSAgICAgICAgT3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRp
Y3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNo
ZWRTZW1hbnRpY3M7CiAgICAgICAgIHsKICAgICAgICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1l
cigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRpbWVzKTsKICAgICAgICAgICAgIG1hdGNoZWRTZW1h
bnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJvZ3JhbSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKaW5kZXggNWUzZjBmMDM2Njg2NWY0MDIzOWFlZWZm
OWUwZTI1ODRkMjE0ZGU2My4uYTYxNGQ2YjgzOTkzMmU1OTcyMmM1MDg5NDA2ZjY2MjJhZWQwNTRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
ZW1hbnRpY01hdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9v
bCBtYXRjaE1vZGUoQmluZGluZzo6QmluZGluZ0RldGFpbHMgYmluZGluZ1R5cGUsIEFTVDo6UmVz
b3VyY2VTZW1hbnRpYwogICAgIH0pLCBiaW5kaW5nVHlwZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExheW91dCYgbGF5b3V0LCBTaGFkZXJTdGFnZSBz
aGFkZXJTdGFnZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8QmluZGluZyosIHNpemVf
dD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGVudHJ5UG9pbnRJdGVt
cywgTGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdlIHNoYWRlclN0YWdlKQogewogICAgIEhhc2hN
YXA8QmluZGluZyosIHNpemVfdD4gcmVzdWx0OwogICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0
SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+
IGl0ZW1JbmRpY2VzOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJs
ZUZvcm1hdChWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5h
CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBz
aXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVy
dGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1
dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVt
PiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRy
aW5zaWNzJiBpbnRyaW5zaWNzKQogewogICAgIEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6
ZV90PiByZXN1bHQ7CiAgICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7CkBA
IC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlRm9ybWF0KFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwg
c2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZy
YWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgYXR0YWNobWVudERl
c2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNoQ29sb3JBdHRhY2ht
ZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIFZlY3RvcjxBdHRh
Y2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1lbnREZXNjcmlwdG9ycywgSW50cmluc2ljcyYgaW50
cmluc2ljcykKIHsKICAgICBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiBy
ZXN1bHQ7CiAgICAgSGFzaFNldDxzaXplX3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7CkBAIC0yNTUs
NyArMjU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3Iq
LCBzaXplX3Q+PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmUKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0
ZW0+JiBmcmFnbWVudE91dHB1dHMsIE9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIEludHJpbnNpY3MmIGludHJpbnNpY3MpCitz
dGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBm
cmFnbWVudE91dHB1dHMsIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgSW50cmluc2ljcyYgaW50cmluc2ljcykKIHsK
ICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5kX2lmKGZyYWdtZW50T3V0cHV0cy5iZWdpbigp
LCBmcmFnbWVudE91dHB1dHMuZW5kKCksIFsmXShFbnRyeVBvaW50SXRlbSYgaXRlbSkgewogICAg
ICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNlbWFudGljOwpAQCAtMjc0LDcgKzI3NCw3IEBA
IHN0YXRpYyBib29sIG1hdGNoRGVwdGhBdHRhY2htZW50KFZlY3RvcjxFbnRyeVBvaW50SXRlbT4m
IGZyYWdtZW50T3V0cHV0cywgT3B0aW9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25h
bDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFt
LCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgYm9v
bCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKQorc3Rk
OjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFt
JiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhp
c3RzKQogewogICAgIGF1dG8gdmVydGV4RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgp
LmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5h
bWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKICAgICBpZiAodmVydGV4RnVuY3Rpb25z
LnNpemUoKSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUo
KSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQo
KSkpCkBAIC0zMTMsNyArMzEzLDcgQEAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4g
bWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmUKICAgICByZXR1
cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsICZmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQs
ICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsICpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJ
dGVtcywgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCAqZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1h
cCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCAqbWF0Y2hlZENvbG9yQXR0YWNobWVudHMgfX07
CiB9CiAKLU9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQ
cm9ncmFtJiBwcm9ncmFtLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0
Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYg
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGZ1bmN0aW9ucyA9IHByb2dy
YW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5l
bnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwogICAgIGlmIChmdW5j
dGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgp
IHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50
aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNl
bWFudGljTWF0Y2hlci5oCmluZGV4IDk2NGVjOTE1Zjg0N2ViM2RhZDU2OTY0ZGRjOGQ3MWY5NmMz
MjhlNmMuLmZkYmY2YzY3M2QzZGViNmM3ZmMxZjMyMzllYThiMGZkMGEzMjc4NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRj
aGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1h
bnRpY01hdGNoZXIuaApAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJlbmRlclNlbWFu
dGljcyB7CiAgICAgSGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4gbWF0Y2hl
ZENvbG9yQXR0YWNobWVudHM7CiB9OwogCi1PcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNz
PiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgYm9v
bCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKTsKK3N0
ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3Jh
bSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRl
ciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7CiAKIHN0cnVjdCBNYXRjaGVkQ29tcHV0ZVNl
bWFudGljcyB7CiAgICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIHNoYWRlcjsKQEAgLTU2LDcg
KzU2LDcgQEAgc3RydWN0IE1hdGNoZWRDb21wdXRlU2VtYW50aWNzIHsKICAgICBIYXNoTWFwPEJp
bmRpbmcqLCBzaXplX3Q+IHJlc291cmNlTWFwOwogfTsKIAotT3B0aW9uYWw8TWF0Y2hlZENvbXB1
dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mLCBDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yJik7CitzdGQ6Om9wdGlvbmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNl
bWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXSExTTAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApp
bmRleCA2YjM5YmRjNzhjZmIxMzI3ODdmNDBkNmViOTk4NjNlN2YyMGE1NzRlLi42ZDVkOTNlMTQw
NDE3ZjE0N2RiMGRjNmJhMjBiODc4NGYzNWZmNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPFdlYkdQVT4gV2ViR1BVOjpj
cmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVSk7CiB9CiAKLXZvaWQgV2Vi
R1BVOjpyZXF1ZXN0QWRhcHRlcihPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYg
b3B0aW9ucywgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKK3ZvaWQgV2Vi
R1BVOjpyZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cz4mJiBvcHRpb25zLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmIGRlZmVycmVkKSBjb25zdAogewog
ICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShXVEZNb3ZlKG9wdGlvbnMp
KTsKICAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFUuaAppbmRleCAxNjFlNmNkZTc3ODgzOTg3YTgxODFlMmNjYTI5NDEy
ZDFhNGMxMGEyLi44YjA1MjQwZDAwNmIzYzQyNGI0OTA2N2MyM2UxNDkzY2FiZDIzMDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBXZWJHUFVBZGFwdGVyUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJl
ZDxJRExJbnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+OwogCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRl
cihPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9t
aXNlJiYpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFdlYkdQVSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggNmRiYTdkMDY3Y2VjZTQ5YjRm
ZDU4YjI1M2M2YjlhZDM1MGRjZjM3Mi4uYmI2Zjk5NGZiMjAzNTRiM2VhOTg5MzIzN2RjYzExMTFi
NmVlYjE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlci5jcHAKQEAgLTM1LDEyICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoT3B0aW9uYWw8R1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRh
cHRlcjo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9w
dGlvbnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQWRhcHRlcihXVEZNb3Zl
KG9wdGlvbnMpKSk7CiB9CiAKLVdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoT3B0aW9uYWw8
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCitXZWJHUFVBZGFwdGVyOjpXZWJH
UFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlv
bnMpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA5ZDdjMTdjYWExNzNh
NzFhNWM0MmM4Mzk3ODc4MDZjZDM0ODZjMTIxLi4zMjFiZGU1NzFmZmU2NDhjZDE3ZWI0YjE0OTll
NDk1NGRiNDMxZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QWRhcHRlci5oCkBAIC00MiwxNyArNDIsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4g
Y2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
R1BVQWRhcHRlcj4gY3JlYXRlKE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7
CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwogCiAgICAgdXNpbmcgRGV2aWNlUmVxdWVzdFByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFdlYkdQVURldmljZT4+OwogICAg
IHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVudCYsIERldmljZVJlcXVlc3RQcm9taXNlJiYpIGNv
bnN0OwogICAgIAotICAgIGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4m
IG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnM7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJHUFVBZGFwdGVyKE9w
dGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7CisgICAgZXhwbGljaXQgV2ViR1BV
QWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7CiAKLSAg
ICBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IG1fb3B0aW9uczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4gbV9vcHRpb25zOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAppbmRleCA4ZWZlYTU1NWNl
OTJjMWM0MTk5NjFhNGY1NjJlYTU1MzRlMjEwYzY2Li4yOWM4ZWQ5M2ExODA0YzA5ODc5NzFhOWU3
ZmIxMmE2YTM1MTc2OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcApAQCAtNjAsNyArNjAsNyBA
QCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZlciog
YnVmZmVyLCBjb25zdCBHUFVCaW5kR3JvdQogICAgIH0KIH0KIAotT3B0aW9uYWw8R1BVQmluZEdy
b3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2Ny
aXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91cERl
c2NyaXB0b3IoKSBjb25zdAogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9
ICJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCgpIjsKIApAQCAtODgsNyArODgsNyBAQCBPcHRp
b25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0
cnlDcmVhdGVHUFVCaW5kR3JvdQogCiAgICAgICAgIGNvbnN0IGF1dG8gbGF5b3V0QmluZGluZyA9
IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2FtcGxl
cikgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CisgICAgICAgIGF1dG8gYmluZGlu
Z1Jlc291cmNlVmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRyPFdlYkdQ
VVNhbXBsZXI+JiBzYW1wbGVyKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4g
ewogICAgICAgICAgICAgaWYgKCFzYW1wbGVyKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVy
KCk7CkBAIC05Niw3ICs5Niw3IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqZ3B1U2FtcGxlcikpOwotICAgICAgICB9
LCBbXShjb25zdCBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+JiB2aWV3KSAtPiBPcHRpb25hbDxH
UFVCaW5kaW5nUmVzb3VyY2U+IHsKKyAgICAgICAgfSwgW10oY29uc3QgUmVmUHRyPFdlYkdQVVRl
eHR1cmVWaWV3PiYgdmlldykgLT4gc3RkOjpvcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsK
ICAgICAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJp
bmRpbmdSZXNvdXJjZT4obWFrZVJlZigqdGV4dHVyZSkpOwotICAgICAgICB9LCBbJmxheW91dEJp
bmRpbmcsIGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZykg
LT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CisgICAgICAgIH0sIFsmbGF5b3V0Qmlu
ZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BVQnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5nKSAt
PiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAgICAgICAgaWYgKCFi
dWZmZXJCaW5kaW5nLmJ1ZmZlcikKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVmZmVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yLmgKaW5kZXggZmM4OWViNWZmOTBmZWEwOTRiZTRlYWU4ODliZTE4
YWJiMGNjNDNmYi4uNDEzMzEwNTllZWI5ODU1OTNlNzU3NzU1MTAwYjBmYWRjY2I0NmRkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRH
cm91cERlc2NyaXB0b3IuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsKIAogc3RydWN0IFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IgewotICAgIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0
ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUJp
bmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25z
dDsKIAogICAgIFJlZlB0cjxjb25zdCBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKICAg
ICBWZWN0b3I8V2ViR1BVQmluZEdyb3VwQmluZGluZz4gYmluZGluZ3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKaW5k
ZXggOTc3MDlkZWE2MTY0MTYyZTYzNDg1OTEwMDgyZDQyMjYxN2Q0NjMyYi4uZjU3NWUwMGRlNTNi
NDYzNjU2NTNkNGE1NjJjODAxMzBkYjQ2NTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtNDEsNyArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3
PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6
OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIWJ1ZmZlciB8
fCAhYnVmZmVyLT5idWZmZXIoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFu
ZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwpAQCAtNTMsNyArNTMsNyBAQCBP
cHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0
ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgYwogICAgIHJldHVybiBHUFVCdWZmZXJDb3B5VmlldyB7IG1h
a2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhpcyB9OwogfQogCi1PcHRpb25hbDxHUFVUZXh0
dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNv
cHlWaWV3KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVU
ZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0CiB7CiAg
ICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJlKCkpIHsKICAgICAgICAgTE9HKFdl
YkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
RW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuaAppbmRleCBkYmU4ZGUyZDk5Y2U2NjYwYjc5ZDkzNWI4MzE5OGRkMDU5ZjE3ZWNlLi4z
NmUxODRhMTE0ZjJkZGRmZjkwYmUzMzI4ZjVkMWU2MDc0NWNiNzNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKQEAgLTQz
LDEzICs0MywxMyBAQCBzdHJ1Y3QgR1BVRXh0ZW50M0Q7CiBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNv
cHlWaWV3QmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0ZUdQ
VUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5
Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdDsKIAogICAgIFJlZlB0cjxX
ZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKIH07CiAKIHN0cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcg
OiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKLSAgICBPcHRpb25hbDxHUFVUZXh0dXJlQ29weVZp
ZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBjb25z
dDsKIAogICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXggYjRlYzU4YzlmNzVkZTI4NTJhZmFlZGJiNjk3MGVh
ZGM0YTg3NWI5Yi4uZDhkYjdkMzU4OGI3ZjFhZjgyMDMwYjQ5YTg1MTExMDgxZjkxYjM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
PiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVF
cnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0CiB7CiAgICAgYXV0byBwaXBlbGluZUxheW91
dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaAppbmRleCA0NDA0MDVjNGNhOGFlYmRh
MDc4ZjhiNTk5YzFjZTZkYzY4M2Q1ZTA0Li43NTkxZmRiZjFlMWIyODg2ODIyNzI3ZjQ3MTBlOTli
YmE3NTEyYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIEdQVUVycm9yU2NvcGVzOwogc3RydWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJv
clNjb3BlcyYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNj
b3BlcyYpIGNvbnN0OwogCiAgICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNv
bXB1dGVTdGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmNwcAppbmRleCA5MWVjM2UwYzU3NTlhMjFhNzMzMjRjMDUyYmRmN2NiZmQzODcyN2M3
Li44YTk4NDIyYjBlMzJlZDE4MmJlNGI3ZDZlZWJhMmRjYmVhMjExNjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTI4Niw3ICsyODYs
NyBAQCBSZWY8V2ViR1BVUXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKSBjb25zdAogdm9p
ZCBXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUoRXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKIHsK
ICAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7Ci0gICAgT3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yID0g
bV9lcnJvclNjb3Blcy0+cG9wRXJyb3JTY29wZShmYWlsTWVzc2FnZSk7CisgICAgc3RkOjpvcHRp
b25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVzLT5wb3BFcnJvclNjb3BlKGZhaWxN
ZXNzYWdlKTsKICAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICBwcm9taXNl
LnJlc29sdmUoZXJyb3IpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3Bw
CmluZGV4IDExZWQxYWVkZGE4OTc1ZGI1ZDUxYTg2NjVjZWQ4MWE1NGNjODIzOTIuLmMxOGMyOGVi
MTU0MWNjY2JiOWEwYmU4MGRlNmM0MjNjYzVjMDI4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ci1PcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
cigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZjxjb25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBn
cHVMYXlvdXRzOwogICAgIGdwdUxheW91dHMucmVzZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExheW91
dHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKaW5kZXggZGNlNjg5NTU4NmMz
MGQzNzA0ZDI5MjA0MGJiYWYzZWUxODVlZWQzNC4uOTFkNzU4MTZjNGIyZmI4MWE1YWIyNzM5NDg2
OGJiNDE3MmI1YzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvcjsKIAogc3RydWN0IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgT3B0
aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29u
c3Q7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdQVUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91
cExheW91dHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKaW5kZXgg
NDc3NWE4ODVmYzc2YjRjZjk1YzU4M2U1ODY5OTQ5ZWUxODk5ZWFhNy4uZjZhNGY3ZmJlOWNiMzBj
Y2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0
aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUtPm1v
ZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAppbmRleCAxYTQ0MTRhYWMxMDcz
Njc5MTBlMWIzNTg0ZDIyOGQzNWViYjU4ZGEzLi5kZjcxMzJkNTA1MDUxYTRlYTQwODcyYzk0M2I4
MTVlYzVhNjI4MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuaApAQCAtMzUs
NyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2ViR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yIDogR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZSB7
Ci0gICAgT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiB0cnlDcmVhdGVH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBtb2R1bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmluZGV4IDQzOTU3MTdiYjVlYzQz
NWUxNTJiZjgxOWJkZWExNjBlMmI3MTJhZjAuLjhhOGI0NzgyYzdlNzM1YWFjNDFiMzE3ZDQwMzMw
YTczMmUzMzRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWUKIHsKIH0KIAotT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJbXByb3ZlIGVycm9yIGNoZWNraW5n
IGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGlzIGFkZGVkIHRvIHNwZWMuCiAgICAgaWYg
KGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFs
PEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5
Q3JlYXRlR1BVUmVuZGVyCiAgICAgICAgIGdwdUNvbG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqY29sb3JBdHRhY2ht
ZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSksIGNvbG9yQXR0YWNobWVudCB9KTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3I+IGdwdURlcHRoQXR0YWNobWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2htZW50OwogCiAg
ICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpIHsKICAgICAgICAgaWYgKCFkZXB0aFN0ZW5j
aWxBdHRhY2htZW50LT5hdHRhY2htZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAppbmRleCBkY2M5YThh
YWQyZGRhNTRhY2QwYWEwNWZkMTAwZGZmMzJmYjExM2ViLi5lYTVkZDViNTU0NmU5Y2FmNWY0OTAw
NTc2Y2Y1ZWU1NmRkODc3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTQ2LDEwICs0Niwx
MCBAQCBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yIDogR1BVUmVuZGVyUGFzc0RlcHRoU3RlbgogfTsKIAogc3RydWN0IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yIHsKLSAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gdHJ5
Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cigpIGNvbnN0OwogCiAgICAgVmVjdG9yPFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwotICAgIE9wdGlvbmFsPFdlYkdQVVJlbmRlclBh
c3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCBlOTI5YzU0ZmQxNjk0YmVlYTZkY2QzOWYxM2Vl
YjQ5ZDU2OGYxNzg1Li5iZjhjZmU5NWZmNjEzYTI5MzY0ZjY3NDc4ZThkNDZiZWEyMTg2NjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgV2ViR1BVUmVuZGVyUGlwZWxpbmU6
OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2UmIGRldmljZSkKICAgICBpZiAobV9yZW5kZXJQ
aXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1bGUpIHsKICAgICAgICAgaWYgKGF1dG8qIGdw
dVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpIHsK
ICAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZSht
YWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUpLCB7IG1fdmVydGV4U2hhZGVyLmVudHJ5UG9p
bnQgfSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3I+IGZyYWdtZW50U3RhZ2U7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1t
YWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKICAgICAgICAgICAgIGlmIChtX2Zy
YWdtZW50U2hhZGVyLm1vZHVsZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBncHVGcmFn
bWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRTaGFkZXIubW9kdWxlLT5tb2R1bGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNoYWRlck1vZHVsZSksIHsgbV9mcmFnbWVudFNo
YWRlci5lbnRyeVBvaW50IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXgg
NDUwNmU1NDgwMGRhMzBkNjU3OWVhZTAzNDUzMTBiOGY5MzY5NGRmMS4uNjZiY2RiOWRmOTBjODQ1
OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25h
bDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0CiB7
CiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5w
aXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7CiAKICAgICBhdXRvIHZlcnRleCA9IHZlcnRleFN0
YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwogCi0gICAgT3B0
aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiBmcmFnbWVudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnQ7CiAgICAg
aWYgKGZyYWdtZW50U3RhZ2UpCiAgICAgICAgIGZyYWdtZW50ID0gZnJhZ21lbnRTdGFnZS0+dHJ5
Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKaW5kZXggNTUzOWMxMDJmZjAwODY0ZDYzOTMzMDhkZjRkOTk0ZmU4NmM3ZDQy
YS4uNmUzOGU5NjEzOTIyMmM0ZDNhNDc5ODBiNDIxY2UxNTU1ZWFkMDQzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmgKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBHUFVFcnJvclNjb3BlczsKIAogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvckJhc2UgewotICAgIE9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHRy
eUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0
OwogCiAgICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwot
ICAgIE9wdGlvbmFsPFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRT
dGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4gZnJhZ21lbnRTdGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5jcHAKaW5kZXggZGM4MjgyN2ZmMzA0ODY4MmUwNTA5Mjc4NDg0Yzc5MzI3NDcwZjhj
Ni4uMTEzNGZjZDMzMzczOTk1ZjZhOThkNDc5YWY0MDJmN2NkOTdiMDY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1P
cHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
Ojphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdAorc3RkOjpvcHRpb25hbDxHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFp
bkRlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlmICghZGV2aWNlKSB7CiAgICAgICAgIExPRyhX
ZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1cmVTd2FwQ2hhaW4oKTogSW52YWxpZCBH
UFVEZXZpY2UhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKaW5kZXggZGEwYzY3NDE3Y2MzODk4ZDhjMzVk
ZmJmMDlmZDI2MTEyNWI5MmJiYi4uMTlhNzg2YjY5YjBkN2YwNzA0ZDAwZGU3MDk4MTAwZDA2NzYx
Y2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFp
bkRlc2NyaXB0b3JCYXNlIHsKLSAgICBPcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBh
c0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVN3
YXBDaGFpbkRlc2NyaXB0b3I+IGFzR1BVU3dhcENoYWluRGVzY3JpcHRvcigpIGNvbnN0OwogCiAg
ICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2aWNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDE2OWQ5YzlkZTMzMGExNjRhNDc0N2E3NTkxODFjODhhZDM5YmFiY2Mu
LmE2Y2IyY2ZlOGM3NjZhZWEzODVmOTYzMmViYTE5NWMzYjhlZTk0NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODUsNyArODUsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKQogewogfQogCi1PcHRpb25hbDxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6VmFsaWRhdGVkVVJMPiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6dmFsaWRhdGVVUkwoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJl
cXVlc3RlZFVSTCkKK3N0ZDo6b3B0aW9uYWw8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZh
bGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnZhbGlkYXRlVVJMKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByZXF1ZXN0ZWRVUkwpCiB7CiAgICAgVmFsaWRhdGVk
VVJMIHZhbGlkYXRlZFVSTCB7IHJlcXVlc3RlZFVSTCwgdHJ1ZSB9OwogICAgIGlmIChhdXRvKiBw
YWdlID0gZG9jdW1lbnQucGFnZSgpKSB7CkBAIC0xMDksNyArMTA5LDcgQEAgT3B0aW9uYWw8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OnYKICAgICByZXR1cm4gdmFsaWRhdGVkVVJMOwogfQogCi1PcHRpb25hbDxSZXNv
dXJjZVJlcXVlc3Q+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp3ZWJTb2NrZXRDb25uZWN0
UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQorc3RkOjpvcHRpb25h
bDxSZXNvdXJjZVJlcXVlc3Q+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp3ZWJTb2NrZXRD
b25uZWN0UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGF1dG8gdmFsaWRhdGVkVVJMID0gdmFsaWRhdGVVUkwoZG9jdW1lbnQsIHVybCk7CiAgICAgaWYg
KCF2YWxpZGF0ZWRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDcxNGIxY2Fj
MjVjZjkxOTZhYWNlNjRhOThjZDZmYzA4NWEyMGFiMTAuLjczMTE5ZTZmN2E2MzcxMjY3OGQxOGE2
ZjJmZTJlODM4ZDYwNzcyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC05Niw4
ICs5Niw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgYm9vbCBhcmVD
b29raWVzQWxsb3dlZCB7IHRydWUgfTsKICAgICB9OwotICAgIHN0YXRpYyBPcHRpb25hbDxWYWxp
ZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERvY3VtZW50JiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gd2ViU29ja2V0Q29ubmVj
dFJlcXVlc3QoRG9jdW1lbnQmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWYWxpZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERvY3VtZW50JiwgY29uc3QgVVJMJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiB3ZWJT
b2NrZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYsIGNvbnN0IFVSTCYpOwogCiAgICAgV2ViU29j
a2V0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkY2M3ODNhZGExYWY3MDRkODU2Mjk3
MTY1MmUxMDFhNmRhNDBkZjY3Li5hYjIwZjgwZTg4YjA5YzQ1N2ZhZTk1MjllMTUxNTcxOTIyODY1
ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6c2Vu
ZChCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IFdlYlNvY2tldDo6Y2xvc2UoT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG9wdGlvbmFsQ29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNs
b3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG9wdGlvbmFsQ29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pCiB7CiAgICAgaW50IGNvZGUgPSBvcHRpb25hbENvZGUgPyBvcHRpb25hbENv
ZGUudmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4oV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVu
dENvZGVOb3RTcGVjaWZpZWQpOwogICAgIGlmIChjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNs
b3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGZmODQ1MTUyYmRlZWNjZDJlN2FjZjAyMjc2NmRmOTYy
ZDhmNDg4MzQuLmEyZmU1ZGQ5YWRjNGUyOTYzZmE2NjEyYTcxYzRiZWE3NTJjMmI3NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTc5LDcg
Kzc5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoSlNDOjpBcnJheUJ1
ZmZlclZpZXcmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKEJsb2ImKTsKIAotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGNsb3NlKE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xvc2Uoc3RkOjpvcHRp
b25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAg
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjaGFubmVsKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAppbmRleCBlNWUyN2Q0ZjQ1ZjU3MmNkZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyLi43
M2UxMDUwMThkOGEyNjdjYWJkNDJmNTMxYmZmODRlNDAzNGU1MDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0yNjgsNyArMjY4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50Lmdl
dCgpLCBtX3Byb2dyZXNzSWRlbnRpZmllciwgbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJl
cXVlc3QoV1RGTW92ZShjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpKTsKICAgICB9CiAg
ICAgYXV0byBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKTsKLSAgICBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CisgICAgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eT4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAgICAg
aWYgKG1fYWxsb3dDb29raWVzKQogICAgICAgICBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eSA9IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoKm1fZG9jdW1lbnQs
IG1faGFuZHNoYWtlLT5odHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkpOwogICAg
IGhhbmRsZS5zZW5kSGFuZHNoYWtlKFdURk1vdmUoaGFuZHNoYWtlTWVzc2FnZSksIFdURk1vdmUo
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk1MmZh
YThjYzgyODBjMzU3NjMyMWExZWE2MzJhZWMwNjk3ZDFhYzMuLjBiZjJhYTlhMTBiMjJlMTE1YTMy
ZjI1MTRhN2Q3ZWI1MDZiNTk4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyCiAg
ICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1peGVkIGNvbnRlbnQgY2hlY2sg
ZXF1aXZhbGVudCB0byB0aGUgZG9jdW1lbnQgbWl4ZWQgY29udGVudCBjaGVjayBjdXJyZW50bHkg
aW4gV2ViU29ja2V0Ojpjb25uZWN0KCkKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKSkgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvclN0cmluZyA9
IE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9yTWl4ZWRDb250ZW50SW5GcmFtZVRyZWUoKmZy
YW1lLCB1cmwpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yU3RyaW5n
ID0gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JNaXhlZENvbnRlbnRJbkZyYW1lVHJlZSgq
ZnJhbWUsIHVybCk7CiAgICAgICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAgICAgICAgICAg
ICAgICBwZWVyLT5mYWlsKGVycm9yU3RyaW5nLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggZDg1
Yzc0ZDE1NTQwYmJlZTQzMWU5ZDM2NGU0Nzg2MGJmYmU4MzcwMy4uZmE5MDBkYzIyZjY5MTU5Zjc5
MjdjNzIxYzI1ZDBkYzc2NDA5MDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG11c3RQb3Nl
c0JlTGltaXRlZChjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0Owog
CiAgICAgc3RydWN0IFBvcHVsYXRlZFBvc2U7Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UG9w
dWxhdGVkUG9zZT4+IHBvcHVsYXRlUG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSU3Bh
Y2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxQ
b3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgV2ViWFJT
cGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuY3BwCmluZGV4IDk0MzJhNWFm
MTkzOGI0OTRiMTFlOWNiYzZkM2QzOTE0Mjk1NTk2NDIuLmZmYjZjMTc5MzcyNzE5ZDUzODQxMzhm
YjE4ZTY4N2JlMDRkMzc2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlbmRlclN0YXRlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBSZWY8V2ViWFJSZW5kZXJT
dGF0ZT4gV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKFhSU2Vzc2lvbk1vZGUgbW9kZSkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlbmRlclN0YXRlKG1vZGUgPT0gWFJTZXNzaW9uTW9k
ZTo6SW5saW5lID8gc3RkOjptYWtlX29wdGlvbmFsKHBpT3ZlclR3b0RvdWJsZSkgOiBzdGQ6Om51
bGxvcHQpKTsKIH0KIAotV2ViWFJSZW5kZXJTdGF0ZTo6V2ViWFJSZW5kZXJTdGF0ZShPcHRpb25h
bDxkb3VibGU+IGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcpCitXZWJYUlJlbmRlclN0YXRlOjpX
ZWJYUlJlbmRlclN0YXRlKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxk
T2ZWaWV3KQogICAgIDogbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KGlubGluZVZlcnRpY2Fs
RmllbGRPZlZpZXcpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZW5kZXJTdGF0ZS5oCmluZGV4IGRjMGRlNGE2NWQxNGYxNjEwNjNmZTVmYmZmOTQ5ZGFiNmIw
NTIyYTAuLmNjODdmYjE0YzU2ZjI2ZTRiZWFhODhjNTg2OWQxNDc0OGRhZGJmYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZGVwdGhGYXIoKSBjb25zdCB7IHJldHVybiBt
X2RlcHRoLmZhcjsgfQogICAgIHZvaWQgc2V0RGVwdGhGYXIoZG91YmxlIGZhcikgeyBtX2RlcHRo
LmZhciA9IGZhcjsgfTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3OyB9CiAgICAgdm9pZCBzZXRJ
bmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KGRvdWJsZSBmaWVsZE9mVmlldykgeyBtX2lubGluZVZl
cnRpY2FsRmllbGRPZlZpZXcgPSBmaWVsZE9mVmlldzsgfQogCiAgICAgUmVmUHRyPFdlYlhSV2Vi
R0xMYXllcj4gYmFzZUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlTGF5ZXI7IH0KQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25FbmFibGVkKGJvb2wg
Y29tcG9zaXRpb25FbmFibGVkKSB7IG1fY29tcG9zaXRpb25FbmFibGVkID0gY29tcG9zaXRpb25F
bmFibGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViWFJSZW5kZXJTdGF0ZShPcHRp
b25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3KTsKKyAgICBleHBsaWNpdCBXZWJYUlJlbmRlclN0YXRl
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmaWVsZE9mVmlldyk7CiAgICAgZXhwbGljaXQgV2ViWFJS
ZW5kZXJTdGF0ZShjb25zdCBXZWJYUlJlbmRlclN0YXRlJik7CiAKICAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNpbml0aWFsaXplLXRoZS1yZW5kZXItc3RhdGUK
QEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZG91YmxlIG5lYXIgeyAwLjEgfTsg
Ly8gaW4gbWV0ZXJzCiAgICAgICAgIGRvdWJsZSBmYXIgeyAxMDAwIH07IC8vIGluIG1ldGVycwog
ICAgIH0gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1faW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldzsgLy8gaW4gcmFkaWFucworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2lubGlu
ZVZlcnRpY2FsRmllbGRPZlZpZXc7IC8vIGluIHJhZGlhbnMKICAgICBSZWZQdHI8V2ViWFJXZWJH
TExheWVyPiBtX2Jhc2VMYXllcjsKICAgICBXZWFrUHRyPEhUTUxDYW52YXNFbGVtZW50PiBtX291
dHB1dENhbnZhczsKICAgICBib29sIG1fY29tcG9zaXRpb25FbmFibGVkIHsgdHJ1ZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggNDljOWY2OGI3
MWVmYjRjOTQ4OTE1NWM2ZmQxMmM4ZWMxZWMzOWIwOS4uODkyOWQ4ZmY4NTgxZDQ5OTZlZWViYjI5
NTg1NjgzOGVkYjBlYWQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBYUlZpc2liaWxpdHlT
dGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICAgICBVbmlxdWVSZWY8V2ViWFJJbnB1dFNvdXJjZUFy
cmF5PiBtX2lucHV0U291cmNlczsKICAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwotICAgIE9w
dGlvbmFsPEVuZFByb21pc2U+IG1fZW5kUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVuZFBy
b21pc2U+IG1fZW5kUHJvbWlzZTsKIAogICAgIFdlYlhSU3lzdGVtJiBtX3hyU3lzdGVtOwogICAg
IFhSU2Vzc2lvbk1vZGUgbV9tb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcAppbmRleCA2ZTNhYjdjMjEyM2QzNDA0MjAyYmU0MWUwZDBlZjBhYjVkYjQ0
YWU5Li40YjYyYWQ5YjI1MWIyNjg1ZmQ1ZGZkNDhlOGQ1MjRkZDMzNmY0OTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMjQ5LDcgKzI0OSw3
IEBAIHN0cnVjdCBXZWJYUlN5c3RlbTo6UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcyB7CiB9CiAK
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Jlc29sdmUtdGhlLXJl
cXVlc3RlZC1mZWF0dXJlcwotT3B0aW9uYWw8V2ViWFJTeXN0ZW06OlJlc29sdmVkUmVxdWVzdGVk
RmVhdHVyZXM+IFdlYlhSU3lzdGVtOjpyZXNvbHZlUmVxdWVzdGVkRmVhdHVyZXMoWFJTZXNzaW9u
TW9kZSBtb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0JiBpbml0LCBQbGF0Zm9ybVhSOjpEZXZpY2Uq
IGRldmljZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KSBjb25zdAorc3RkOjpv
cHRpb25hbDxXZWJYUlN5c3RlbTo6UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcz4gV2ViWFJTeXN0
ZW06OnJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IFhS
U2Vzc2lvbkluaXQmIGluaXQsIFBsYXRmb3JtWFI6OkRldmljZSogZGV2aWNlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgLy8gMS4gTGV0IGNvbnNlbnRS
ZXF1aXJlZCBiZSBhbiBlbXB0eSBsaXN0IG9mIERPTVN0cmluZy4KICAgICAvLyAyLiBMZXQgY29u
c2VudE9wdGlvbmFsIGJlIGFuIGVtcHR5IGxpc3Qgb2YgRE9NU3RyaW5nLgpAQCAtMzI1LDcgKzMy
NSw3IEBAIE9wdGlvbmFsPFdlYlhSU3lzdGVtOjpSZXNvbHZlZFJlcXVlc3RlZEZlYXR1cmVzPiBX
ZWJYUlN5c3RlbTo6cmVzb2x2ZVJlcXVlc3RlZEZlCiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI3JlcXVlc3QtdGhlLXhyLXBlcm1pc3Npb24KLU9wdGlvbmFs
PFdlYlhSU3lzdGVtOjpGZWF0dXJlTGlzdD4gV2ViWFJTeXN0ZW06OnJlc29sdmVGZWF0dXJlUGVy
bWlzc2lvbnMoWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0JiBpbml0LCBQ
bGF0Zm9ybVhSOjpEZXZpY2UqIGRldmljZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJYUlN5c3RlbTo6RmVhdHVyZUxpc3Q+IFdlYlhS
U3lzdGVtOjpyZXNvbHZlRmVhdHVyZVBlcm1pc3Npb25zKFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29u
c3QgWFJTZXNzaW9uSW5pdCYgaW5pdCwgUGxhdGZvcm1YUjo6RGV2aWNlKiBkZXZpY2UsIEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICAvLyAxLiBTZXQgc3Rh
dHVzJ3MgZ3JhbnRlZCB0byBhbiBlbXB0eSBGcm96ZW5BcnJheS4KICAgICAvLyAyLiBMZXQgcmVx
dWlyZWRGZWF0dXJlcyBiZSBkZXNjcmlwdG9yJ3MgcmVxdWlyZWRGZWF0dXJlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCA2NDU4NTc0ZTAxODQ5NTFh
YTgwMzQ3ZjE5ODAzOWFjZTBlOGI5MjBkLi4yODExYzgyODg0MTkyMWUyNDY0YTExMzZkZjZkNmIx
NDE5ZjQ5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5o
CkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlubGluZVNlc3Npb25SZXF1
ZXN0SXNBbGxvd2VkRm9yR2xvYmFsT2JqZWN0KERPTVdpbmRvdyYsIERvY3VtZW50JiwgY29uc3Qg
WFJTZXNzaW9uSW5pdCYpIGNvbnN0OwogCiAgICAgc3RydWN0IFJlc29sdmVkUmVxdWVzdGVkRmVh
dHVyZXM7Ci0gICAgT3B0aW9uYWw8UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcz4gcmVzb2x2ZVJl
cXVlc3RlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGUsIGNvbnN0IFhSU2Vzc2lvbkluaXQmLCBQbGF0
Zm9ybVhSOjpEZXZpY2UqLCBKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8RmVhdHVyZUxpc3Q+IHJlc29sdmVGZWF0dXJlUGVybWlzc2lvbnMoWFJTZXNzaW9uTW9kZSwg
Y29uc3QgWFJTZXNzaW9uSW5pdCYsIFBsYXRmb3JtWFI6OkRldmljZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc29sdmVkUmVxdWVzdGVkRmVhdHVy
ZXM+IHJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlLCBjb25zdCBYUlNlc3Np
b25Jbml0JiwgUGxhdGZvcm1YUjo6RGV2aWNlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8RmVhdHVyZUxpc3Q+IHJlc29sdmVGZWF0dXJlUGVybWlzc2lv
bnMoWFJTZXNzaW9uTW9kZSwgY29uc3QgWFJTZXNzaW9uSW5pdCYsIFBsYXRmb3JtWFI6OkRldmlj
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKIAogICAgIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RlZmF1bHQtaW5saW5lLXhyLWRldmljZQogICAgIGNs
YXNzIER1bW15SW5saW5lRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSwg
cHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CkBAIC0xMTUsNyArMTE1LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgICAgICBWZWN0b3I8RGV2aWNlOjpW
aWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgICAgIE9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9q
ZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkgZmluYWwgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUp
IGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5saW5l
RGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCmluZGV4
IGZjZTZiZjExNDVmZTAzZTBjZDE3NmZkMTcxN2E4OGZlZWM5NTUwMWQuLjdhNDE5NjBjYTExYzZk
YjIyMmM2MTU5MmVlMGZkNGUxMmJlNGY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlldy5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBXZWJYUlZpZXc6OldlYlhSVmll
dyhSZWY8V2ViWFJGcmFtZT4mJiBmcmFtZSwgWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybQogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCiAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJlY29tbWVuZGVkdmlld3Bv
cnRzY2FsZQotT3B0aW9uYWw8ZG91YmxlPiBXZWJYUlZpZXc6OnJlY29tbWVuZGVkVmlld3BvcnRT
Y2FsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gV2ViWFJWaWV3OjpyZWNvbW1lbmRl
ZFZpZXdwb3J0U2NhbGUoKSBjb25zdAogewogICAgIC8vIFJldHVybiBudWxsIGlmIHRoZSBzeXN0
ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlzdGljIG9yIG1ldGhvZCBmb3IgZGV0ZXJtaW5p
bmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJlcXVl
c3R2aWV3cG9ydHNjYWxlCi12b2lkIFdlYlhSVmlldzo6cmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0
aW9uYWw8ZG91YmxlPiB2YWx1ZSkKK3ZvaWQgV2ViWFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRTY2Fs
ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAqdmFs
dWUgPD0gMC4wKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlZpZXcuaAppbmRleCAxOTY0ZTg4NTNjMDgxMDlkYTUwMzQwYzE5YTdhNjc5M2M5MmJlMTE4
Li4yYWJiMjYyNDBlNDdmMDEzOGVhZmRjOTVkYjNjZDY3Njc5MTQyMDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgog
ICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvamVjdGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIHRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0OwotICAgIHZvaWQg
cmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0aW9uYWw8ZG91YmxlPik7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0OworICAgIHZvaWQgcmVx
dWVzdFZpZXdwb3J0U2NhbGUoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAogICAgIGRvdWJsZSBy
ZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRWaWV3cG9y
dFNjYWxlOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0TW9kaWZpYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld3BvcnRNb2RpZmlhYmxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUldlYkdMTGF5ZXIuaAppbmRleCBiYTMwNTJjOWQ4MDBjNzJkMWMxYjlhZjM5ZWQ0M2Uz
ZGJmMGY2MTZlLi4xYTA2ZjU0MjZiMjhkNWY0MjkxMzUxY2M5N2RiYjk1OWEzZGI5MjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKQEAgLTk3
LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlTmF0aXZlV2Vi
R0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlUmVj
b21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbigpOwogCi0gICAgdm9pZCBjYW52YXND
aGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWwgeyB9
OworICAgIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+JikgZmluYWwgeyB9OwogICAgIHZvaWQgY2FudmFzUmVzaXplZChDYW52YXNC
YXNlJikgZmluYWw7CiAgICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoQ2FudmFzQmFzZSYpIGZpbmFs
IHsgfTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291cmNlRXZlbnQuaAppbmRleCBlM2M1NDExMzQ1
NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkxLi4zMTQyMGM5NzQ4ZDdkODI3M2ExOGQ5MGFj
NTkwZmNkNzY4YjIxMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
WFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxXZWJYUkZyYW1lPiBtX2ZyYW1lOwogICAgIFJlZlB0cjxXZWJYUklucHV0U291cmNlPiBt
X2lucHV0U291cmNlOwotICAgIE9wdGlvbmFsPGludD4gbV9idXR0b25JbmRleDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGludD4gbV9idXR0b25JbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJSZW5kZXJTdGF0
ZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJSZW5kZXJTdGF0ZUluaXQu
aAppbmRleCA0YzQyOTNlMWE0M2Y4OGQ0MTM4NmQzZDEzMGE5Y2MyNzZjMWY1NWNlLi4wYjY0Y2I4
ZDBjM2RjNDVjYTMxZTI0NWVhOTZmMGZlNGNlOTQ2MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSUmVuZGVyU3RhdGVJbml0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9YUlJlbmRlclN0YXRlSW5pdC5oCkBAIC0zNSwxMSArMzUsMTEgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFhSUmVuZGVyU3RhdGVJbml0IHsKLSAgICBP
cHRpb25hbDxkb3VibGU+IGRlcHRoTmVhcjsKLSAgICBPcHRpb25hbDxkb3VibGU+IGRlcHRoRmFy
OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsKKyAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGVwdGhOZWFyOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkZXB0aEZhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldzsKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBiYXNlTGF5ZXI7Ci0gICAgT3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJYUkxheWVyPj4+IGxheWVyczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8V2ViWFJMYXllcj4+PiBsYXllcnM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25J
RC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAppbmRleCA1YjM1NmEzMWZm
YTBlOTVmYjk4YjMzNDk5Y2FiNTE4MDgxYjYwM2I4Li41ZDZkNTBiYjAwZWZkZDM3Nzk0MDYyMWQ5
NjZiYTZkN2JmZmM4NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Np
b25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKQEAgLTc0LDcg
Kzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29u
c3QgeyByZXR1cm4gIWlzRXBoZW1lcmFsKCk7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2Vzc2lvbklEPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlc3Npb25JRD4gZGVj
b2RlKERlY29kZXImKTsKIAogICAgIFNlc3Npb25JRCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQogCkBAIC05NCw5ICs5NCw5IEBAIHZvaWQgU2Vzc2lvbklEOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPFNlc3Npb25JRD4gU2Vzc2lvbklEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8U2Vzc2lvbklEPiBTZXNzaW9uSUQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzZXNzaW9uSUQ7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gc2Vzc2lvbklEOwogICAgIGRlY29kZXIgPj4gc2Vzc2lvbklEOwogICAgIGlm
ICghc2Vzc2lvbklEIHx8ICFpc1ZhbGlkU2Vzc2lvbklEVmFsdWUoKnNlc3Npb25JRCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0LmgKaW5kZXggZjFkNjhjODFmMGM0MjI5MzQzYThj
ZTU4ZTNiZjJjOTBmZjcxNGE3NC4uMDBlOWU2MDY1OWI1Yzk4MmU3ODMxMjBhNjIyYmNkYThkNTZl
NGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0
cHV0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091
dHB1dENvbnRleHQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBPdXRwdXREZXZpY2U7CiAKIGNs
YXNzIE91dHB1dENvbnRleHQgewogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxPdXRwdXRD
b250ZXh0PiYgc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8T3V0cHV0Q29udGV4dD4mIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9u
T3V0cHV0Q29udGV4dCgpOwogCiAgICAgYm9vbCBzdXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNl
cygpOwogICAgIFN0cmluZyBkZXZpY2VOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbQppbmRleCAwYzkxZjY1ZDY1NDAz
Y2NmNWNjMjRlMzQ4ODEwNWZhMTZiZjEyNTU4Li4yNGIxMWFmZmViMjM2M2E3YzQ3NDcxOWQyNDM5
NmM2NWZmY2FiMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRh
dGlvbi9PdXRwdXRDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3Vu
ZGF0aW9uL091dHB1dENvbnRleHQubW0KQEAgLTQzLDkgKzQzLDkgQEAgT3V0cHV0Q29udGV4dDo6
T3V0cHV0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRwdXRDb250ZXh0PiYmIGNvbnRleHQpCiB7CiB9
CiAKLU9wdGlvbmFsPE91dHB1dENvbnRleHQ+JiBPdXRwdXRDb250ZXh0OjpzaGFyZWRBdWRpb1By
ZXNlbnRhdGlvbk91dHB1dENvbnRleHQoKQorc3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0PiYg
T3V0cHV0Q29udGV4dDo6c2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8T3V0cHV0Q29udGV4dD4+IHNoYXJl
ZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCA9IFtdICgpIC0+IE9wdGlvbmFsPE91dHB1
dENvbnRleHQ+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxPdXRw
dXRDb250ZXh0Pj4gc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0ID0gW10gKCkg
LT4gc3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0PiB7CiAgICAgICAgIGlmICghW1BBTDo6Z2V0
QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNoYXJl
ZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCldKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0
L1V0aWxpdGllcy5oCmluZGV4IDI3NGUwYWFmMWRmZWI4YzcyMTYxODA3NWFhNzJiZTA3NmE0MTY1
MGYuLjYyOTJhMGY4MGJiMGY1ODI2NTMyZmU0MWIzYmFhMDkxYmRlMmM2MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmgKQEAgLTUzLDcg
KzUzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxvZ0Vycm9yKGdjcnlfZXJyb3JfdCBlcnJvcikK
ICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPGludD4gYWVzQWxnb3JpdGhtRm9y
S2V5U2l6ZShzaXplX3Qga2V5U2l6ZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxpbnQ+
IGFlc0FsZ29yaXRobUZvcktleVNpemUoc2l6ZV90IGtleVNpemUpCiB7CiAgICAgc3dpdGNoIChr
ZXlTaXplKSB7CiAgICAgY2FzZSAxMjg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAppbmRleCA0NTVlMDgzOTNlZTUwMzY4ZDc4NDc4NTI5
NzI5NjIzZjYwYjg0NzlhLi40MDNlMTNmNDE4NjM0OWNkMzE4NmY4MjAyMjg2MzZlMjk0NTY4NDI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGll
cy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUq
IHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludAogICAgIHJl
dHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwg
Y29uc3QgY2hhciogZWxlbWVudE5hbWUpCiB7CiAgICAgaW50IGxlbmd0aCA9IDA7CiAgICAgdW5z
aWduZWQgdHlwZSA9IDA7CkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUp
CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5jb2Rl
ZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGVuY29kZWREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBj
aGFyKiBlbGVtZW50TmFtZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBpbnQgcmV0ID0g
YXNuMV9kZXJfY29kaW5nKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCBudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVz
LmgKaW5kZXggYmFkNmUzOTA1MjBiNGNkYzhiZmQ3OGQyOTA3ZjRkM2I4YzZhMDljMi4uMGFkNzI4
OWVjZWVhOTc1NGFmYzgzNzM0ZmJlMjhiNDFjMWRkNjExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKQEAgLTU2LDggKzU2LDggQEAgcHJp
dmF0ZToKIAogYm9vbCBjcmVhdGVTdHJ1Y3R1cmUoY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGFz
bjFfbm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNv
bnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwotT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3Qg
Y2hhciogZWxlbWVudE5hbWUpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNvZGVkRGF0
YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpOworc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFy
KiBlbGVtZW50TmFtZSk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5jb2RlZERh
dGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKIGJvb2wgd3JpdGVF
bGVtZW50KGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsKIAogfSAvLyBuYW1lc3BhY2UgVEFTTjEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3Mu
Y3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuY3BwLmVyYgppbmRleCA4NTJkNjdiN2IyODlkNmIzYTcwZmRiZjlmY2IyNmU5MWQ1ZjY5ZmFl
Li43ZTkxZDM1YzM5YmU0NjIwYjczNGRjNjc0ZjJiMWFmNjE3YmY4MzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIK
KysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5j
cHAuZXJiCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNl
dHRlckZ1bmN0aW9uTmFtZSAlPig8JT0gQHNldHRpbmcucGFyYW1ldGVyVHlwZSAlPgogCiA8JS0g
Zm9yIEBzZXR0aW5nIGluIEBhbGxTZXR0aW5nc1NldC5pbnNwZWN0b3JPdmVycmlkZVNldHRpbmdz
IGRvIC0lPgogPCUtIGlmIEBzZXR0aW5nLmhhc0NvbXBsZXhTZXR0ZXI/IC0lPgotdm9pZCBTZXR0
aW5nczo6PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJyaWRl
KE9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcubmFt
ZSAlPkluc3BlY3Rvck92ZXJyaWRlKQordm9pZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNldHRl
ckZ1bmN0aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8PCU9IEBzZXR0
aW5nLnBhcmFtZXRlclR5cGUgJT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJp
ZGUpCiB7CiAgICAgaWYgKG1fdmFsdWVzLjwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3Zl
cnJpZGUgPT0gPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9TZXR0aW5ncy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvU2V0dGluZ3MuaC5lcmIKaW5kZXggOWZmYWVmYmMwNjY2NmQ4YTk3N2JjYjljNDE3NDdi
MDRiNjc0MTE2OC4uNjgyYWRmNzI4OTIwNjcwMjdkYjMxYTEyZGUyMDc1NWU2ZGUxYTFjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5oLmVyYgorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1Nl
dHRpbmdzLmguZXJiCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKIAogPCUtIGZvciBAc2V0dGlu
ZyBpbiBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAg
ICA8JS0gaWYgQHNldHRpbmcuaGFzQ29tcGxleFNldHRlcj8gLSU+Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCA8JT0gQHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lICU+SW5zcGVjdG9yT3ZlcnJp
ZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JP
dmVycmlkZShzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+Pik7CiAg
ICAgPCUtIGVsc2UgLSU+Ci0gICAgdm9pZCA8JT0gQHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1l
ICU+SW5zcGVjdG9yT3ZlcnJpZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUg
JT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUpIHsgbV92YWx1ZXMuPCU9
IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSA9IDwlPSBAc2V0dGluZy5uYW1lICU+
SW5zcGVjdG9yT3ZlcnJpZGU7IH0KKyAgICB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlv
bk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJh
bWV0ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKSB7IG1f
dmFsdWVzLjwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUgPSA8JT0gQHNldHRp
bmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOyB9CiAgICAgPCUtIGVuZCAtJT4KIDwlLSBlbmQg
LSU+CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpIGZpbmFs
IHsgcmV0dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmljRmFtaWxpZXM7IH0KQEAgLTc2LDcgKzc2LDcg
QEAgcHVibGljOgogICAgICAgICBWYWx1ZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKIDwlLSBm
b3IgQHNldHRpbmcgaW4gQGFsbFNldHRpbmdzU2V0Lmluc3BlY3Rvck92ZXJyaWRlU2V0dGluZ3Mg
ZG8gLSU+Ci0gICAgICAgIE9wdGlvbmFsPDwlPSBAc2V0dGluZy50eXBlICU+PiA8JT0gQHNldHRp
bmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPDwlPSBA
c2V0dGluZy50eXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOwog
PCUtIGVuZCAtJT4KIAogICAgICAgICBGb250R2VuZXJpY0ZhbWlsaWVzIGZvbnRHZW5lcmljRmFt
aWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBlYWI4MDQ1YmE3OGEyNWY0ZjU1MzJiZDI2OTEyZThhNGNiNTEyYmRjLi5mOTIzNTA1
YmM2NWU0ZmJjODg3OGM3ZjFjNmYyMzcxNDU3YTQ3MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIwMjYsNyArMjAyNiw3IEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsCiAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldChjdXJyZW50
Tm9kZSwgbGFzdFN0YXJ0T2Zmc2V0LCBvZmZzZXRJbkNoYXJhY3RlciwgcmVtYWluaW5nKTsKIH0K
IAotaW50IEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UpCitpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCiAg
ICAgICAgIHJldHVybiAtMTsKQEAgLTIwNTQsNyArMjA1NCw3IEBAIFNpbXBsZVJhbmdlIEFYT2Jq
ZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhub2RlKTsKIH0KICAgICAKLU9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBvcmlnaW5hbFJhbmdlLCBjb25zdCBTdHJpbmcmIG1hdGNoVGV4dCkKK3N0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHRO
ZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIG9yaWdpbmFsUmFuZ2UsIGNvbnN0IFN0cmluZyYg
bWF0Y2hUZXh0KQogewogICAgIC8vIENyZWF0ZSBhIGxhcmdlIGVub3VnaCByYW5nZSB0byBmaW5k
IHRoZSB0ZXh0IHdpdGhpbiBpdCB0aGF0J3MgYmVpbmcgc2VhcmNoZWQgZm9yLgogICAgIHVuc2ln
bmVkIHRleHRMZW5ndGggPSBtYXRjaFRleHQubGVuZ3RoKCk7CkBAIC0yMTIxLDcgKzIxMjEsNyBA
QCBzdGF0aWMgTm9kZSogcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKE5vZGUmIHJl
cGxhY2VkTm9kZSwgaW50JiBvZmZzZXQsCiAgICAgcmV0dXJuIHJlcGxhY2VkTm9kZS5wYXJlbnRO
b2RlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENo
YXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCiB7CiAgICAgaWYg
KGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTIxNTcsNyArMjE1Nyw3IEBAIHN0YXRpYyBib29sIHNldFJhbmdlU3RhcnRPckVuZFdpdGhD
aGFyYWN0ZXJPZmZzZXQoU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBDaGFyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZv
clVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0
ZXJPZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDIpCitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENo
YXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQxLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldDIpCiB7CiAgICAgYm9vbCBhbHJl
YWR5SW5PcmRlciA9IGNoYXJhY3Rlck9mZnNldHNJbk9yZGVyKGNoYXJhY3Rlck9mZnNldDEsIGNo
YXJhY3Rlck9mZnNldDIpOwogICAgIGF1dG8gc3RhcnQgPSBib3VuZGFyeVBvaW50KGFscmVhZHlJ
bk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MSA6IGNoYXJhY3Rlck9mZnNldDIsIHRydWUpOwpAQCAt
MjQ0OSw3ICsyNDQ5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNj
ZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXIKICAgICByZXR1cm4gdGhp
cy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CiB9CiAKLU9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBB
WE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpCitzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBB
WE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3MpCiB7CiAgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBPcHRp
b25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNp
YmxlUG9zaXRpb24oY29uc3QgVgogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVy
Zm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgotT3B0
aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmly
c3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRD
b250cm9sKQorc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pih0ZXh0Q29udHJvbCku
aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNjI3
LDE0ICsyNjI3LDE0IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0V29yZEVu
ZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmCiAgICAgcmV0dXJuIGVuZENo
YXJhY3Rlck9mZnNldE9mV29yZChuZXh0T2Zmc2V0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CiB9
CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpsZWZ0V29yZFJhbmdlKGNv
bnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6bGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFy
dENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0ZXJPZmZzZXQsIExlZnRXb3JkSWZPbkJvdW5k
YXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZXb3Jk
KHN0YXJ0KTsKICAgICByZXR1cm4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0
YXJ0LCBlbmQpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmln
aHRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyaWdodFdvcmRSYW5nZShjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZz
ZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0ZXJPZmZzZXQsIFJp
Z2h0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJh
Y3Rlck9mZnNldE9mV29yZChzdGFydCk7CkBAIC0yODU1LDcgKzI4NTUsNyBAQCBDaGFyYWN0ZXJP
ZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZQYXJhZ3JhcGgoY29uc3Qg
Q2hhcmFjdGVyT2ZmcwogICAgIHJldHVybiBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFu
Z2UocmFuZ2VGb3JOb2RlQ29udGVudHMobm9kZSksIGZhbHNlKTsKIH0KIAotT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQg
c3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNoYXJhY3Rlck9mZnNldCk7
CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBo
KHN0YXJ0KTsKQEAgLTI4OTYsNyArMjg5Niw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKGNvbnN0IENoYXJhY3Rlck9mZnNlCiAg
ICAgcmV0dXJuIG5leHRCb3VuZGFyeShjaGFyYWN0ZXJPZmZzZXQsIGVuZFNlbnRlbmNlQm91bmRh
cnkpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6c2VudGVuY2VG
b3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQp
CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpzZW50ZW5jZUZvckNo
YXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVu
Y2UoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hhcmFj
dGVyT2Zmc2V0T2ZTZW50ZW5jZShzdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDVjM2JmMmYxN2Y2ODk3ZGIxNTgzY2VkYzM1MDZiOTU5
NWFlYTg4YmUuLjU2NDcxNmNlMzRiZGRjNzZjNjQ0ZmVmMzFhODFhMGYwZTNhNDNlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0yMjYsOCAr
MjI2LDggQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2JqZWN0
c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBjb25zdDsKIAogICAgIC8vIFRleHQgbWFya2Vy
IHV0aWxpdGllcy4KLSAgICBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgT3B0aW9uYWw8
VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRy
b2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2Vy
RGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFy
a2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRh
dGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zm
c2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CkBAIC0yMzksMjMg
KzIzOSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JS
YW5nZShUZXh0TWFya2VyRGF0YSYsIGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CiAgICAgQ2hh
cmFjdGVyT2Zmc2V0IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYsIGJvb2wsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMgPSBmYWxzZSk7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRl
eHRNYXJrZXJEYXRhJik7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVW5vcmRl
cmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclVub3Jk
ZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7CiAgICAgc3RhdGljIFNpbXBsZVJhbmdlIHJhbmdlRm9yTm9kZUNvbnRlbnRz
KE5vZGUmKTsKLSAgICBzdGF0aWMgaW50IGxlbmd0aEZvclJhbmdlKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpOworICAgIHN0YXRpYyBpbnQgbGVuZ3RoRm9yUmFuZ2UoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKICAgICAKICAgICAvLyBXb3JkIGJvdW5kYXJ5CiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IG5leHRXb3JkRW5kQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1dvcmRTdGFydENoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmlnaHRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByaWdodFdvcmRSYW5nZShj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBQYXJhZ3JhcGgKLSAgICBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gcGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHBhcmFncmFwaEZv
ckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJP
ZmZzZXQgbmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNQYXJhZ3JhcGhTdGFydENoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAKICAgICAvLyBTZW50ZW5jZQot
ICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZW50
ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFy
YWN0ZXJPZmZzZXQgbmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1NlbnRlbmNlU3RhcnRDaGFy
YWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgCkBAIC0zNTUsNyArMzU1
LDcgQEAgcHVibGljOgogICAgIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSogY29tcHV0
ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSgpIHsgcmV0dXJuIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1
dGVDYWNoZS5nZXQoKTsgfQogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudDsgfQotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uc0ZvclRlc3Rz
KGJvb2wgdmFsdWUpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZv
cm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CiAgICAgdm9pZCBkZWZlclRleHRSZXBsYWNlbWVudE5v
dGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiwgY29u
c3QgU3RyaW5nJiBwcmV2aW91c1ZhbHVlKTsKIAotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBy
YW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VNYXRjaGVzVGV4dE5lYXJS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIFN0
cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCkBAIC00NzYs
NyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZU1vZGFsQ2hhbmdlKEVsZW1lbnQm
KTsKICAgICAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7IC8vIGNvbnN0YW50IGZvciBvYmplY3QncyBsaWZldGlt
ZS4KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VJRDsgLy8g
Y29uc3RhbnQgZm9yIG9iamVjdCdzIGxpZmV0aW1lLgogICAgIEhhc2hNYXA8QVhJRCwgUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBtX29iamVjdHM7CiAgICAgSGFzaE1hcDxSZW5kZXJPYmpl
Y3QqLCBBWElEPiBtX3JlbmRlck9iamVjdE1hcHBpbmc7CiAgICAgSGFzaE1hcDxXaWRnZXQqLCBB
WElEPiBtX3dpZGdldE9iamVjdE1hcHBpbmc7CkBAIC02MjEsNyArNjIxLDcgQEAgaW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0Kikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChO
b2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRJc1N5bmNocm9uaXppbmdT
ZWxlY3Rpb24oYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0U2Vs
ZWN0aW9uSW50ZW50KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JikgeyB9Ci1pbmxpbmUg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hh
cmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JikgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiBpbmxpbmUgSW50UmVjdCBBWE9iamVjdENhY2hlOjphYnNvbHV0ZUNh
cmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpIHsgcmV0
dXJuIEludFJlY3QoKTsgfQogaW5saW5lIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpj
aGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFYQ29yZU9iamVjdCopIHsgcmV0dXJu
IENoYXJhY3Rlck9mZnNldCgpOyB9CiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2Fj
aGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYs
IGJvb2wsIGJvb2wpIHsgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA1
ZGZkZDhkMjNiYTJmNjA5MWZmNGZhZDZmNjEzMzk2YzgxOTQxOTUyLi42ZTZlNzY0MDRlZTEzOGIz
Y2IwNjIzYTVhZWFhZDU0YTdjMWU0YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKICAgICByZXR1
cm4gaXNNaXNzcGVsbGVkOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0aW9u
KSBjb25zdAogewogICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUp
CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hp
bmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGUKIC8vIFJldHVybnMg
dGhlIHJhbmdlIHRoYXQgaXMgZmV3ZXIgcG9zaXRpb25zIGF3YXkgZnJvbSB0aGUgcmVmZXJlbmNl
IHJhbmdlLgogLy8gTk9URTogVGhlIGFmdGVyIHJhbmdlIGlzIGV4cGVjdGVkIHRvIEFDVFVBTExZ
IGJlIGFmdGVyIHRoZSByZWZlcmVuY2UgcmFuZ2UgYW5kIHRoZSBiZWZvcmUKIC8vIHJhbmdlIGlz
IGV4cGVjdGVkIHRvIEFDVFVBTExZIGJlIGJlZm9yZS4gVGhlc2UgYXJlIG5vdCBjaGVja2VkIGZv
ciBwZXJmb3JtYW5jZSByZWFzb25zLgotc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUNsb3Nlc3RUb1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByZWZlcmVuY2VSYW5nZSwgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiYgYmVm
b3JlUmFuZ2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VDbG9zZXN0
VG9SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmVmZXJlbmNlUmFuZ2UsIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mJiBi
ZWZvcmVSYW5nZSkKIHsKICAgICBpZiAoIWJlZm9yZVJhbmdlKQogICAgICAgICByZXR1cm4gV1RG
TW92ZShhZnRlclJhbmdlKTsKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlQ2xvc2VzdFRvUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVyZW5j
ZVJhbgogICAgIHJldHVybiBXVEZNb3ZlKGRpc3RhbmNlQmVmb3JlIDw9IGRpc3RhbmNlQWZ0ZXIg
PyBiZWZvcmVSYW5nZSA6IGFmdGVyUmFuZ2UpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4g
QWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rp
b24oY29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVyZW5jZVJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
RGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0
cmluZ3MpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVS
YW5nZSYgcmVmZXJlbmNlUmFuZ2UsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gc2VhcmNo
RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncykgY29uc3QKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC01
MzMsNyArNTMzLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW8KICAgICBpZiAoaXNCYWNrd2Fy
ZFNlYXJjaCkKICAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25GbGFnOjpCYWNrd2Fy
ZHMpOwogICAgIAotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjbG9zZXN0U3RyaW5nUmFuZ2U7
CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlOwogICAg
IGZvciAoYXV0byYgc2VhcmNoU3RyaW5nIDogc2VhcmNoU3RyaW5ncykgewogICAgICAgICBpZiAo
YXV0byBmb3VuZFN0cmluZ1JhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmcoc2Vh
cmNoU3RyaW5nLCByZWZlcmVuY2VSYW5nZSwgZmluZE9wdGlvbnMpKSB7CiAgICAgICAgICAgICBi
b29sIGZvdW5kU3RyaW5nSXNDbG9zZXI7CkBAIC01NTMsNyArNTUzLDcgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5n
ZUluRGlyZWN0aW8KIAogLy8gUmV0dXJucyBhbiBjb2xsYXBzZWQgcmFuZ2UgcHJlY2VkaW5nIHRo
ZSBkb2N1bWVudCBjb250ZW50cyBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24uCiAvLyBGSVhNRTog
V2h5IGlzIHRoYXQgYmVoYXZpb3IgbW9yZSB1c2VmdWwgdGhhbiByZXR1cm5pbmcgbnVsbCBpbiB0
aGF0IGNhc2U/Ci1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Vs
ZWN0aW9uUmFuZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8gZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC01NjYsNyArNTY2LDcgQEAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblJhbmdlKCkgY29u
c3QKICAgICByZXR1cm4geyB7IHsgZG9jdW1lbnQsIDAgfSwgeyBkb2N1bWVudCwgMCB9IH0gfTsK
IH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRS
YW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5vZGUo
KTsKICAgICBpZiAoIW5vZGUpCkBAIC01NzQsOSArNTc0LDkgQEAgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJu
IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRzKCpub2RlKTsKIH0KIAotT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwg
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZFRleHRSYW5nZShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3RyaW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0
YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7
Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IGZvdW5kOwogICAgIGlmIChkaXJlY3Rpb24gPT0gQWNjZXNzaWJpbGl0eVNlYXJj
aFRleHREaXJlY3Rpb246OkZvcndhcmQpCiAgICAgICAgIGZvdW5kID0gcmFuZ2VPZlN0cmluZ0Ns
b3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rp
b246Ok5leHQsIHNlYXJjaFN0cmluZ3MpOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBBY2Nl
c3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6QmFja3dhcmQpCkBAIC01OTksNyArNTk5LDcg
QEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFu
Z2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHMKIAogVmVjdG9yPFNpbXBsZVJhbmdlPiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlcyhjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4
dENyaXRlcmlhJiBjcml0ZXJpYSkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgaWYgKGNy
aXRlcmlhLnN0YXJ0ID09IEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0U3RhcnRGcm9tOjpTZWxlY3Rp
b24pCiAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICBlbHNlCkBAIC0xMTAz
LDcgKzExMDMsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2
aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYQogICAgIHJldHVybiB7IHN0YXJ0
UG9zaXRpb24sIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVu
Z3RoKSB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
cmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZUZv
clBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZSkgY29uc3QKIHsKICAg
ICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZ2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCk7CiAgICAgaWYg
KHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoID4gdGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNGQ5Yzkz
MzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNlZDk3Ny4uYmQ1MDE5NjVhM2JlNmU2MzdiMDFi
NGJkMWE5MTkyNDg5NThjM2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBz
dGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc1NhbWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2Jq
ZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUyNCw3ICs1MjQsNyBA
QCBwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVk
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOyB9CiAKLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgc3RhdGljIGJvb2wgcmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoTm9kZSogcmVw
bGFjZWROb2RlKTsKIAogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJh
bmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHB1Ymxp
YzoKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVhUZXh0
TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTc5NSw5ICs3OTUsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlv
bihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVj
dGlvblJhbmdlKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFu
Z2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdl
JiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGly
ZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNv
bnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24p
IGNvbnN0OwogCiAgICAgQVhJRCBtX2lkIHsgMCB9OwogcHJvdGVjdGVkOiAvLyBGSVhNRTogTWFr
ZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDk4
MjMwNmI1NDgyZDIyYzFmMGM2ODY2OGFkODZkY2JhYWYyZTU0OGEuLmZmNWM2NGZlMDllMDAzOTc2
NmEyNmY4OTU2YmExMTUyYWJhM2I2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC05Njcs
NyArOTY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3Rh
cnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsK
QEAgLTEyNjEsNyArMTI2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbGVtZW50UmFu
Z2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBl
bGVtZW50UmFuZ2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mTGVmdFdvcmQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9z
aXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCA9IDA7CkBAIC0x
MjczLDcgKzEyNzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9
IDA7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBtYWtlIHRoaXMgYSBDT0NPQSBt
ZXRob2QuCiAgICAgdmlydHVhbCBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VG
b3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApp
bmRleCAxYzQ1MjY2ZWI3ZDVlZTRmYTdkYmIzNDdkNTVlMGQ3MTVmMGZjMjYwLi5kZDUwNDUyODdj
YjEzMmJjNDMyYWUyZTk2ZjM5MTg2YTlhOGJmNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAg
LTY0OSw3ICs2NDksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVu
ZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudAogICAgICAgICAvLyBJZiBw
b3NzaWJsZSwgdXNlIGEgdGV4dCBpdGVyYXRvciB0byBnZXQgdGhlIHRleHQsIHNvIHRoYXQgd2hp
dGVzcGFjZQogICAgICAgICAvLyBpcyBoYW5kbGVkIGNvbnNpc3RlbnRseS4KICAgICAgICAgRG9j
dW1lbnQqIG5vZGVEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgICAgIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiB0ZXh0UmFuZ2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHRleHRS
YW5nZTsKICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCkpIHsKICAg
ICAgICAgICAgIG5vZGVEb2N1bWVudCA9ICZub2RlLT5kb2N1bWVudCgpOwogICAgICAgICAgICAg
dGV4dFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpub2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggMDY4M2UwY2JhODE0ZmJlYWVmYjNkMmM5Njk4YzQw
NTM4NGMzMWIzOC4uMWUzM2RjY2UyYjg4ZDk1MTVkODAxNTViYTg5NzQ1ZWFiM2E1NzAzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgQXRr
T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0T2JqZWN0KEF0a0h5cGVybGluayog
bGluaywgZ2ludCBpbgogICAgIHJldHVybiBBVEtfT0JKRUNUKGFjY2Vzc2libGVIeXBlcmxpbmst
PnByaXYtPmh5cGVybGlua0ltcGwpOwogfQogCi1zdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9i
amVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UpCitzdGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggNDg5NGY4NzcxZGNhNTM5YjE1MmY2ZmVkNTcxMDdjYzBk
MWZhNjlkYS4uYTljYWU2ZDcwMTdkMTQzNTMxYWU3OTZmODNiMzM0N2VmYWNhNWI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBA
aW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIDogTlNPYmplY3QKIAogKyAoV2Vi
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjoo
VmlzaWJsZVBvc2l0aW9uJil2aXNpYmxlUG9zIGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsK
ICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhDaGFyYWN0ZXJP
ZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0IGNhY2hlOihBWE9iamVjdENh
Y2hlKiljYWNoZTsKLSsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRl
eHRNYXJrZXJGb3JSYW5nZTooY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0
YXJ0OihCT09MKWlzU3RhcnQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlOworKyAoV2ViQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0
IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsKIAogQGVuZAogCkBAIC0yMDcsNyArMjA3LDcg
QEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rl
ck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JikKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJE
YXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAotKyAoV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mKXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmpl
Y3RDYWNoZSopY2FjaGUKKysgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVu
ZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJh
bmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUKIHsK
ICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjM5MCw3ICsyMzkwLDcg
QEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdl
CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwg
cmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50KHJhbmdlKSk7CiB9CiAKLS0gKE9wdGlvbmFs
PFNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKKy0gKHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQog
ewogICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMjc3NCw3ICsyNzc0LDcgQEAgLSAoQ0dSZWN0KWZyYW1lRm9yVGV4
dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQogICAgIHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRv
U3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOwog
fQogCi0tIChPcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGcm9tTWFya2VyczooTlNBcnJheSAq
KW1hcmtlcnMgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAoc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4pcmFuZ2VGcm9tTWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgd2l0aFRleHQ6KE5T
U3RyaW5nICopdGV4dAogewogICAgIGF1dG8gb3JpZ2luYWxSYW5nZSA9IFtzZWxmIHJhbmdlRm9y
VGV4dE1hcmtlcnM6bWFya2Vyc107CiAgICAgaWYgKCFvcmlnaW5hbFJhbmdlKQpAQCAtMjg0OCw3
ICsyODQ4LDcgQEAgLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2UKICAgICByZXR1cm4gYWRvcHROUyhb
W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRl
eHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAotLSAoT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2Vy
cworLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGb3JUZXh0TWFya2VyczooTlNB
cnJheSAqKXRleHRNYXJrZXJzCiB7CiAgICAgaWYgKFt0ZXh0TWFya2VycyBjb3VudF0gIT0gMikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5MDEsNyArMjkwMSw3IEBAIC0gKE5T
QXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMK
ICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlcnNGb3JSYW5nZTpbc2VsZiByYW5nZUZvclRleHRN
YXJrZXJzOnRleHRNYXJrZXJzXV07CiB9CiAKLS0gKE5TQXJyYXkgKil0ZXh0TWFya2Vyc0ZvclJh
bmdlOihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlCistIChOU0FycmF5ICopdGV4
dE1hcmtlcnNGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdl
CiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKaW5kZXggZDY0NjcwNjFjNjVkNDg3Njg1MGJlMWFjZGYyMTc0YTM4MjMwZjQ5
NC4uOWY4ZTY1YzY4YWIxODk0NDI0OTJmYzliM2U3ZmZmMTM5ZmE1NzkzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5n
ZXMoKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdl
Rm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjpyYW5nZUZvclBsYWlu
VGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiBheFJhbmdlKSBjb25zdAogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhP
YmplY3QoKTsKQEAgLTExNDIsNyArMTE0Miw3IEBAIFN0cmluZyBBWElzb2xhdGVkT2JqZWN0Ojp0
ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSkgY29uCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmpl
Y3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNz
b2NpYXRlZEFYT2JqZWN0KCk7CkBAIC0xNDM4LDcgKzE0MzgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZwogICAgICAgICBvYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
dmlzaWJsZVBvc2l0aW9uUmFuZ2UpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29s
YXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVj
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDBhZDgwMDBjNGZiMjU4MGE2ZDg4ZjEy
NzkxZWNlZmUyYWY1NDgwZTYuLmY2MWNlZjJmNzkyMGVkYTNjMWZkZWM5ZDg0Y2YxZTEwNDJmYTk5
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTM5MCw3ICszOTAsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25l
ZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVsZW1lbnRSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVsZW1l
bnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQ
b3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBj
b25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRX
b3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDAxLDcgKzQw
MSw3IEBAIHByaXZhdGU6CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc3R5bGVSYW5nZUZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5l
UmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQ
bGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25z
dCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVhUZXh0TWFya2VyUmFuZ2VSZWYg
dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyB0
ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vz
c2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBGbG9hdFJl
Y3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29u
dmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBjODhhM2Q2
NjEzMzZhNWRlMWUwZjE5NDU4ZTM4YzAzMjQyNzY3MDFjLi4xMzBiY2JhNTE3MzRhODA0YjhhMTM1
YzdiNzkwMmQ3M2VlZjUxZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTczNiw3ICs3MzYsNyBAQCBDaGFyYWN0
ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgQVhUZXh0TWFya2VyUgogCiAvLyBUZXh0TWFya2VyUmFuZ2UgPC0+IFNpbXBsZVJhbmdlIGNv
bnZlcnNpb24uCiAKLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdl
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBib29sIGlzU3RhcnQpCitBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JS
YW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKQEAgLTc1MCw3ICs3NTAsNyBAQCBBWFRleHRNYXJr
ZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwg
Y29uc3QgT3B0aW9uYQogICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRl
eHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLUFYVGV4dE1hcmtlclJhbmdlUmVm
IHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK0FYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJr
ZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKCFjYWNoZSkKQEAgLTc2MSw3ICs3NjEsNyBAQCBBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlv
bgogICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhzdGFydFRleHRNYXJrZXIs
IGVuZFRleHRNYXJrZXIpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdl
PiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFy
a2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtl
clJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJrZXJSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBhZGM3NDA1ODVlOTIxZTAxYjJlZDk4ZjVjZDYw
YTdiMWFmOTVjNTk5Li5lODk0OTYxNGUyYzNkZDZhODkzNThhMTI3NTEyYmNmZTUxNzU1NjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC02NTgsNyArNjU4
LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtl
eUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihzZWFyY2hLZXkpID8gc2VhcmNoS2V5IDogQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlw
ZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IG1ha2VWZWN0
b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkqLCBpZCBhcnJheUVsZW1lbnQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBtYWtlVmVjdG9y
RWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5KiwgaWQgYXJyYXlFbGVtZW50KQog
ewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oCmluZGV4IGIzMDUyNTRjNDVhOGU3YWZiMzdjMDc5NGQ4OGVhOTljODczNDExMmMu
Ljc0MmIzZDAzYTQ4ZjJiOGViNzJhMDlhODUzZjdhMjE5ZmFiZTJhMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaApAQCAtODAsOCArODAsOCBAQCBBWFRleHRNYXJrZXJS
ZWYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiwgY29uc3QgQ2hh
cmFjdGVyT2ZmcwogQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJlZik7CiAKIC8vIFRleHRNYXJrZXJSYW5nZSA8
LT4gU2ltcGxlUmFuZ2UgY29udmVyc2lvbi4KLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4
dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBib29sIGlzU3RhcnQpOwotQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdl
RnJvbVJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsK
LU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9iamVjdENh
Y2hlKiwgQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworQVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JFbmRU
ZXh0TWFya2VyRm9yUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgYm9vbCBpc1N0YXJ0KTsKK0FYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJr
ZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKTsKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVGV4dE1hcmtl
clJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBBWFRleHRNYXJrZXJSYW5nZVJlZik7CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggY2IzNTkyMWRkZDRlNjA3OTk3
MzE1MDJiZWRmZjFhYjNmMTM3NmNhNS4uODk3M2UzOTU2NDc0NmRjMzc1ZmE1YjZhMDJjMGRjODU5
NGRkYzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcw
OSwxMSArNzA5LDExIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBhY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbkZvclBhcmFtZXRlcml6ZWRBdHRyCiAgICAgcmV0dXJuIG9wZXJh
dGlvbjsKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjxPcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vzc2liaWxpdHlNaXNzcGVsbGluZ1NlYXJjaENy
aXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENh
Y2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtcykKK3N0YXRpYyBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vz
c2liaWxpdHlNaXNzcGVsbGluZ1NlYXJjaENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFt
cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgc3RkOjpwYWlyPE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gY3JpdGVyaWE7
CisgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoRGlyZWN0aW9uPiBjcml0ZXJpYTsKIAogICAgIEFTU0VSVChBWE9iamVjdElzVGV4dE1h
cmtlclJhbmdlKFtwYXJhbXMgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJd
KSk7CiAgICAgY3JpdGVyaWEuZmlyc3QgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShheE9iamVj
dENhY2hlLCAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpW3BhcmFtcyBvYmplY3RGb3JLZXk6QCJBWFN0
YXJ0VGV4dE1hcmtlclJhbmdlIl0pOwpAQCAtMzU3OSw3ICszNTc5LDcgQEAgLSAoQVhUZXh0TWFy
a2VyUmFuZ2VSZWYpdGV4dE1hcmtlclJhbmdlQXRUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYp
dGV4dE1hcmtlcgogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIGNoYXJh
Y3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJr
ZXIpOwotICAgICAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgICAgICBzd2l0Y2ggKHRleHRVbml0KSB7
CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRXb3JkOgogICAgICAgICAgICAgcmFuZ2UgPSBj
YWNoZS0+bGVmdFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAppbmRleCBjOWU4ZGYxZmNkNTg3ZTlhMWEyODAy
Y2Y4NDQyODk1YjI5ZDFiYzJjLi5jZThmOGNkMzcwNjFiMjM4ZmZmZWUxMDkxMmZjNTczNzBjZDYw
YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApA
QCAtNjcsMTMgKzY3LDEzIEBAIEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldFRpbWlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIHRpbWluZzsKIH0KIAotQmFzaWNFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
IGNvbnN0CitCYXNpY0VmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJhc2ljVGltaW5n
KHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjb25zdAogewogICAgIC8vIFRoZSBX
ZWIgQW5pbWF0aW9ucyBzcGVjIGludHJvZHVjZXMgYSBudW1iZXIgb2YgYW5pbWF0aW9uIGVmZmVj
dCB0aW1lLXJlbGF0ZWQgZGVmaW5pdGlvbnMgdGhhdCByZWZlcgogICAgIC8vIHRvIGVhY2ggb3Ro
ZXIgYSBmYWlyIGJpdCwgc28gcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nIHRoZW0gYXMgaW5kaXZp
ZHVhbCBtZXRob2RzLCBpdCdzIG1vcmUgZWZmaWNpZW50CiAgICAgLy8gdG8gcmV0dXJuIHRoZW0g
YWxsIGFzIGEgc2luZ2xlIEJhc2ljRWZmZWN0VGltaW5nLgogCi0gICAgYXV0byBsb2NhbFRpbWUg
PSBbdGhpcywgc3RhcnRUaW1lXSgpIC0+IE9wdGlvbmFsPFNlY29uZHM+IHsKKyAgICBhdXRvIGxv
Y2FsVGltZSA9IFt0aGlzLCBzdGFydFRpbWVdKCkgLT4gc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB7
CiAgICAgICAgIC8vIDQuNS40LiBMb2NhbCB0aW1lCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNsb2NhbC10aW1lLXNlY3Rpb24KIApAQCAtMTE5
LDcgKzExOSw3IEBAIEJhc2ljRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNU
aW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjCiAgICAgICAgIHJldHVybiBBbmlt
YXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOwogICAgIH0oKTsKIAotICAgIGF1dG8gYWN0aXZlVGlt
ZSA9IFt0aGlzLCBsb2NhbFRpbWUsIHBoYXNlXSgpIC0+IE9wdGlvbmFsPFNlY29uZHM+IHsKKyAg
ICBhdXRvIGFjdGl2ZVRpbWUgPSBbdGhpcywgbG9jYWxUaW1lLCBwaGFzZV0oKSAtPiBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IHsKICAgICAgICAgLy8gMy44LjMuMS4gQ2FsY3VsYXRpbmcgdGhlIGFj
dGl2ZSB0aW1lCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0
aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZlLXRpbWUKIApAQCAtMTY3LDcgKzE2Nyw3IEBA
IENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmluZGluZ3NDb21wdXRl
ZFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIGdldENvbXB1dGVkVGltaW5nKCk7CiB9CiAKLUNv
bXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjb25zdAorQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0
YXJ0VGltZSkgY29uc3QKIHsKICAgICAvLyBUaGUgV2ViIEFuaW1hdGlvbnMgc3BlYyBpbnRyb2R1
Y2VzIGEgbnVtYmVyIG9mIGFuaW1hdGlvbiBlZmZlY3QgdGltZS1yZWxhdGVkIGRlZmluaXRpb25z
IHRoYXQgcmVmZXIKICAgICAvLyB0byBlYWNoIG90aGVyIGEgZmFpciBiaXQsIHNvIHJhdGhlciB0
aGFuIGltcGxlbWVudGluZyB0aGVtIGFzIGluZGl2aWR1YWwgbWV0aG9kcywgaXQncyBtb3JlIGVm
ZmljaWVudApAQCAtMTc3LDcgKzE3Nyw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlv
bkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAg
YXV0byBhY3RpdmVUaW1lID0gYmFzaWNFZmZlY3RUaW1pbmcuYWN0aXZlVGltZTsKICAgICBhdXRv
IHBoYXNlID0gYmFzaWNFZmZlY3RUaW1pbmcucGhhc2U7CiAKLSAgICBhdXRvIG92ZXJhbGxQcm9n
cmVzcyA9IFt0aGlzLCBwaGFzZSwgYWN0aXZlVGltZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsK
KyAgICBhdXRvIG92ZXJhbGxQcm9ncmVzcyA9IFt0aGlzLCBwaGFzZSwgYWN0aXZlVGltZV0oKSAt
PiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAvLyAzLjguMy4yLiBDYWxjdWxhdGlu
ZyB0aGUgb3ZlcmFsbCBwcm9ncmVzcwogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLW92ZXJhbGwtcHJvZ3Jlc3MKIApA
QCAtMjA0LDcgKzIwNCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6
Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgICAgIHJldHVy
biBzdGQ6OmFicyhvdmVyYWxsUHJvZ3Jlc3MpOwogICAgIH0oKTsKIAotICAgIGF1dG8gc2ltcGxl
SXRlcmF0aW9uUHJvZ3Jlc3MgPSBbdGhpcywgb3ZlcmFsbFByb2dyZXNzLCBwaGFzZSwgYWN0aXZl
VGltZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIHNpbXBsZUl0ZXJhdGlvblBy
b2dyZXNzID0gW3RoaXMsIG92ZXJhbGxQcm9ncmVzcywgcGhhc2UsIGFjdGl2ZVRpbWVdKCkgLT4g
c3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgLy8gMy44LjMuMy4gQ2FsY3VsYXRpbmcg
dGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MKICAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2NhbGN1bGF0aW5nLXRoZS1zaW1wbGUtaXRlcmF0
aW9uLXByb2dyZXNzCiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBB
bmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0
VAogICAgICAgICByZXR1cm4gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3M7CiAgICAgfSgpOwogCi0g
ICAgYXV0byBjdXJyZW50SXRlcmF0aW9uID0gW3RoaXMsIGFjdGl2ZVRpbWUsIHBoYXNlLCBzaW1w
bGVJdGVyYXRpb25Qcm9ncmVzcywgb3ZlcmFsbFByb2dyZXNzXSgpIC0+IE9wdGlvbmFsPGRvdWJs
ZT4geworICAgIGF1dG8gY3VycmVudEl0ZXJhdGlvbiA9IFt0aGlzLCBhY3RpdmVUaW1lLCBwaGFz
ZSwgc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MsIG92ZXJhbGxQcm9ncmVzc10oKSAtPiBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gewogICAgICAgICAvLyAzLjguNC4gQ2FsY3VsYXRpbmcgdGhlIGN1cnJl
bnQgaXRlcmF0aW9uCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5p
bWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtY3VycmVudC1pdGVyYXRpb24KIApAQCAtMjgyLDcg
KzI4Miw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0
ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgICAgIHJldHVybiBBbmltYXRp
b25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uOjpSZXZlcnNlOwogICAgIH0oKTsKIAotICAgIGF1
dG8gZGlyZWN0ZWRQcm9ncmVzcyA9IFtzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcywgY3VycmVudERp
cmVjdGlvbl0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIGRpcmVjdGVkUHJvZ3Jl
c3MgPSBbc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MsIGN1cnJlbnREaXJlY3Rpb25dKCkgLT4gc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgLy8gMy45LjEuIENhbGN1bGF0aW5nIHRoZSBk
aXJlY3RlZCBwcm9ncmVzcwogICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2Vi
LWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhlLWRpcmVjdGVkLXByb2dyZXNzCiAKQEAgLTMw
Miw3ICszMDIsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENv
bXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogICAgICAgICByZXR1cm4gMSAt
ICpzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKICAgICB9KCk7CiAKLSAgICBhdXRvIHRyYW5zZm9y
bWVkUHJvZ3Jlc3MgPSBbdGhpcywgZGlyZWN0ZWRQcm9ncmVzcywgY3VycmVudERpcmVjdGlvbiwg
cGhhc2VdKCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CisgICAgYXV0byB0cmFuc2Zvcm1lZFByb2dy
ZXNzID0gW3RoaXMsIGRpcmVjdGVkUHJvZ3Jlc3MsIGN1cnJlbnREaXJlY3Rpb24sIHBoYXNlXSgp
IC0+IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB7CiAgICAgICAgIC8vIDMuMTAuMS4gQ2FsY3VsYXRp
bmcgdGhlIHRyYW5zZm9ybWVkIHByb2dyZXNzCiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtdHJhbnNmb3JtZWQtcHJv
Z3Jlc3MKIApAQCAtMzUyLDcgKzM1Miw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlv
bkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAg
cmV0dXJuIGNvbXB1dGVkVGltaW5nOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25F
ZmZlY3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5n
PiB0aW1pbmcpCitFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OmJpbmRpbmdzVXBk
YXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+IHRpbWluZykKIHsK
ICAgICBhdXRvIHJldFZhbCA9IHVwZGF0ZVRpbWluZyh0aW1pbmcpOwogICAgIGlmICghcmV0VmFs
Lmhhc0V4Y2VwdGlvbigpICYmIHRpbWluZyAmJiBpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigp
KSkKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6
OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VAogICAgIHJldHVy
biByZXRWYWw7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEFuaW1hdGlvbkVmZmVjdDo6dXBkYXRl
VGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCitFeGNlcHRpb25P
cjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlv
bmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCiB7CiAgICAgLy8gNi41LjQuIFVwZGF0aW5nIHRoZSB0
aW1pbmcgb2YgYW4gQW5pbWF0aW9uRWZmZWN0CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL3dlYi1hbmltYXRpb25zLyN1cGRhdGluZy1hbmltYXRpb25lZmZlY3QtdGltaW5nCkBAIC01
NDEsNyArNTQxLDcgQEAgdm9pZCBBbmltYXRpb25FZmZlY3Q6OnNldFRpbWluZ0Z1bmN0aW9uKGNv
bnN0IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mIHRpbWluZ0Z1bmMKICAgICBtX3RpbWluZ0Z1bmN0
aW9uID0gdGltaW5nRnVuY3Rpb247CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uRWZm
ZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlIGl0ZXJhdGlvblByb2dyZXNzKSBjb25z
dAorc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5l
eHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKIHsKICAgICBpZiAoIWlzPFN0
ZXBzVGltaW5nRnVuY3Rpb24+KG1fdGltaW5nRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
bkVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCmlu
ZGV4IGEwMmQyNjI5Y2NiYjkyOTc0MTM0MmFjZDdkYTEwYTE0OGM1YzcwZGEuLjVhODVlZTBhOWM3
NjZiMjZiNjk3NjkyMGE2ZGU0OTM5NDA2ZDhlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uRWZmZWN0LmgKQEAgLTU1LDEzICs1NSwxMyBAQCBwdWJsaWM6CiAKICAgICBF
ZmZlY3RUaW1pbmcgZ2V0QmluZGluZ3NUaW1pbmcoKSBjb25zdDsKICAgICBFZmZlY3RUaW1pbmcg
Z2V0VGltaW5nKCkgY29uc3Q7Ci0gICAgQmFzaWNFZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1pbmco
T3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIEJhc2ljRWZmZWN0
VGltaW5nIGdldEJhc2ljVGltaW5nKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OwogICAgIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldEJpbmRpbmdzQ29tcHV0ZWRU
aW1pbmcoKSBjb25zdDsKLSAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBnZXRDb21wdXRlZFRpbWlu
ZyhPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gYmluZGluZ3NVcGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1p
bmc+KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0aW9u
YWxFZmZlY3RUaW1pbmc+KTsKKyAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBnZXRDb21wdXRlZFRp
bWluZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1VwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlv
bmFsRWZmZWN0VGltaW5nPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5nKHN0
ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRF
bGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6
bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRpb25EaWRQbGF5KCkgPSAwOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25FZmZlY3QoKTsKIAotICAgIHZpcnR1YWwgT3B0aW9u
YWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENvbXB1dGVkRGlyZWN0aW9uIDogdWlu
dDhfdCB7IEZvcndhcmRzLCBSZXZlcnNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25FdmVudEJhc2UuY3BwCmluZGV4IDZmODQxYzVkN2Y2NzgwOTY3MmQwNTI4ZWRk
Zjk3ZmU2ZDA4ZWE0YjMuLjFkMDEzNTJmNzliMjkzNWU4NThmYjM0MzYxYTg3MmRjZGE4ODdmMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3Bw
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEFuaW1hdGlvbkV2ZW50QmFzZSk7CiAKLUFuaW1hdGlvbkV2ZW50QmFzZTo6
QW5pbWF0aW9uRXZlbnRCYXNlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiog
YW5pbWF0aW9uLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCitBbmltYXRpb25FdmVu
dEJhc2U6OkFuaW1hdGlvbkV2ZW50QmFzZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBXZWJBbmlt
YXRpb24qIGFuaW1hdGlvbiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCiAg
ICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpObykKICAgICAs
IG1fYW5pbWF0aW9uKGFuaW1hdGlvbikKICAgICAsIG1fdGltZWxpbmVUaW1lKHRpbWVsaW5lVGlt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuaAppbmRl
eCBjNzc4MTQ4YTdhZTdmYTQzYTY2OWM3OWRlNzQ5OGNjMTZmZWNhNjU0Li4yODJjZjBiOGEzNzll
MTBiZTQ2MDQ2Nzk4OTRmM2RhYjAyYTAyODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvbkV2ZW50QmFzZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYkFuaW1h
dGlvbjsKIGNsYXNzIEFuaW1hdGlvbkV2ZW50QmFzZSA6IHB1YmxpYyBFdmVudCB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25FdmVudEJhc2UpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24sIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGlt
ZSkKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uLCBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IHRpbWVsaW5lVGltZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFu
aW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkpOwogICAgIH0K
QEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW9u
RXZlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5z
aXRpb25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBPcHRpb25hbDxTZWNv
bmRzPiB0aW1lbGluZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lVGltZTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lbGluZVRpbWU7IH0KICAgICBXZWJBbmltYXRpb24qIGFuaW1hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYW5pbWF0aW9uLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBBbmltYXRpb25FdmVu
dEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFuaW1hdGlvbiosIE9wdGlvbmFsPFNlY29uZHM+
KTsKKyAgICBBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFuaW1hdGlv
biosIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIEFuaW1hdGlvbkV2ZW50QmFzZShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgRXZlbnRJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZlB0
cjxXZWJBbmltYXRpb24+IG1fYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwCmluZGV4IGEyNjcwZDc5MjA5NjhjMGEy
NTQxZDc2ZjYxYjIwMDNlNDVhODQzODEuLjg1NmNiZTUxYTg5MWFiODdjMzBkOThhYWE0ZTlmMjc1
M2JmYzgzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25Q
bGF5YmFja0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
UGxheWJhY2tFdmVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQW5pbWF0aW9uUGxheWJhY2tFdmVu
dDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBB
bmkKICAgICAgICAgbV90aW1lbGluZVRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLUFuaW1hdGlv
blBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRp
bWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCitBbmltYXRpb25QbGF5YmFja0V2
ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGlt
ZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICA6IEFuaW1hdGlvbkV2ZW50
QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkKICAgICAsIG1fY3VycmVudFRpbWUo
Y3VycmVudFRpbWUpCiB7CkBAIC01NSwxNCArNTUsMTQgQEAgQW5pbWF0aW9uUGxheWJhY2tFdmVu
dDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25h
bDwKIAogQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6fkFuaW1hdGlvblBsYXliYWNrRXZlbnQoKSA9
IGRlZmF1bHQ7CiAKLU9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6Ymlu
ZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9u
UGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2N1cnJlbnRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBz
ZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShtX2N1cnJlbnRUaW1lLnZhbHVlKCkpOwogfQog
Ci1PcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzVGltZWxp
bmVUaW1lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25QbGF5YmFja0V2
ZW50OjpiaW5kaW5nc1RpbWVsaW5lVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCF0aW1lbGluZVRp
bWUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oCmluZGV4IDM1ZmY5N2M3NDNlYTQ0
ODg1ODQyZWRkYTg0ODllNGU0ZmVmZjdhMzkuLjE2YWZmMzJiYTFhM2I1OGMyYzUzOTNlMjc0ZDNk
MGNiNjJlYjQ5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25QbGF5YmFja0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
blBsYXliYWNrRXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBbmltYXRpb25QbGF5YmFja0V2ZW50IGZpbmFsIDogcHVibGljIEFuaW1hdGlvbkV2ZW50
QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25QbGF5YmFja0V2ZW50
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSwg
T3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikK
KyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRpb25QbGF5YmFja0V2ZW50
KHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUsIGFuaW1hdGlvbikpOwogICAgIH0KQEAg
LTQ4LDE0ICs0OCwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQW5pbWF0aW9uUGxheWJhY2tF
dmVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1
cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQotICAgIE9wdGlvbmFs
PGRvdWJsZT4gYmluZGluZ3NUaW1lbGluZVRpbWUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzVGltZWxpbmVUaW1lKCkgY29uc3Q7CiAK
ICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFuaW1hdGlvblBsYXliYWNrRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgT3B0aW9uYWw8U2Vj
b25kcz4sIE9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmltYXRpb24qKTsKKyAgICBBbmltYXRpb25Q
bGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25QbGF5
YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2ZW50
SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJr
YWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDUwMjc0NGRmZGIyNDZhMWY2NDQxZmIxYzdmMWJi
OWVkOWRjNDkwMGIuLjdlNWY1OTkwMDg1YzRkYWRjNzI3OTQyZDAyNTdjMDJjYWRmMWY2ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2Vi
QW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgfQogfQogCi1PcHRpb25hbDxkb3VibGU+IEFuaW1h
dGlvblRpbWVsaW5lOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkKK3N0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBBbmltYXRpb25UaW1lbGluZTo6YmluZGluZ3NDdXJyZW50VGltZSgpCiB7CiAgICAgYXV0byB0
aW1lID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAoIXRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmluZGV4IDZhZTc2NjlmNGUxMjMxNmE2M2NiZTRl
NGQ2NjQzM2JlZDQ3NjhjNWIuLmM1ZGFhZjZiZDIxODk0MjA2ZDE2NGIzM2M0MmM5MGQwMjkyZDJi
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCkBA
IC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVGltaW5n
RGlkQ2hhbmdlKFdlYkFuaW1hdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRp
b24oV2ViQW5pbWF0aW9uJik7CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVu
dFRpbWUoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgeyBy
ZXR1cm4gbV9jdXJyZW50VGltZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5n
c0N1cnJlbnRUaW1lKCk7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJl
bnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0Fu
aW1hdGlvbi5jcHAKaW5kZXggMThjYzAzZDQ4OGJhYWI1MzY3MzYxMmNjZDVjYjU5NGZiMWFmZTc2
NS4uMGRjOWFhZDc3MzEzYjcwODNiY2UyNjNiYWU2OTVjNWIxN2QzZTc0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NFZmZlY3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdD4m
JiBuZXdFZmZlY3QpCiAgICAgfQogfQogCi12b2lkIENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NT
dGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUpCit2b2lkIENTU0FuaW1hdGlvbjo6
c2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHN0YXJ0VGltZSkKIHsK
ICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMtMi8jYW5pbWF0
aW9ucwogCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBDU1NBbmltYXRpb246OmVmZmVjdEtleWZy
YW1lc1dlcmVTZXRVc2luZ0JpbmRpbmdzKCkKICAgICBtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmFk
ZChQcm9wZXJ0eTo6VGltaW5nRnVuY3Rpb24pOwogfQogCi1SZWY8QW5pbWF0aW9uRXZlbnRCYXNl
PiBDU1NBbmltYXRpb246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNv
bmRzPiB0aW1lbGluZVRpbWUpCitSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBDU1NBbmltYXRpb246
OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRU
aW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVs
aW5lVGltZSkKIHsKICAgICByZXR1cm4gQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IG1fYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUsIHRo
aXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IGFmYzk1
ZjUzMTM2NjUxMzU0NDg5MWQ3ZGY0YjA3Y2FhNDY3YzMzZjIuLjUwMzk5NzhkZTAxY2U3ZWE5NmFk
ODc2NjUwNTNkMWQ1MzIwZDFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgogICAgIENTU0FuaW1hdGlvbihjb25z
dCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZvaWQgc3luY1Byb3BlcnRp
ZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwotICAgIFJlZjxBbmltYXRpb25FdmVudEJh
c2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGlu
ZVRpbWUpIGZpbmFsOworICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7
CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BsYXkoKSBmaW5hbDsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BhdXNlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRCaW5kaW5n
c0VmZmVjdChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0PiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldEJp
bmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgc2V0Qmlu
ZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBiaW5kaW5nc1JldmVyc2UoKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgUHJv
cGVydHkgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCmluZGV4IDg1MTliYjZiOTUzNmJjYjZmYjU0MjUwNDc3YzQxYjE1
ZDMyZjk5NWEuLmNiYTgwNTFjYjNlYWJiNmRlMmRjNzQ2YzFmYzMzNWUxYzZkYmYyZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRpYyBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIGJsZW5k
RnVuYyhGb250U2VsZWN0aW9uVmFsdWUgZnJvbSwgRm9udFNlbGVjdGlvCiAgICAgcmV0dXJuIEZv
bnRTZWxlY3Rpb25WYWx1ZShzdGQ6Om1heCgwLjBmLCBibGVuZEZ1bmMoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGZyb20pLCBzdGF0aWNfY2FzdDxmbG9hdD4odG8pLCBjb250ZXh0KSkpOwogfQogCi1zdGF0
aWMgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gYmxlbmRGdW5jKE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gZnJvbSwgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB0
bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBibGVuZEZ1bmMoc3RkOjpvcHRp
b25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZyb20sIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlv
blZhbHVlPiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgcmV0dXJuIGJsZW5kRnVuYygqZnJvbSwgKnRvLCBjb250ZXh0KTsKIH0KQEAgLTE5OTAs
MTEgKzE5OTAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVy
KShjb25zdCBDb2xvciYpOwogfTsKIAotY2xhc3MgUHJvcGVydHlXcmFwcGVyRm9udFN0eWxlIGZp
bmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
PiB7CitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJGb250U3R5bGUgZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlXcmFwcGVyPHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPj4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3BlcnR5V3JhcHBlckZvbnRTdHls
ZSgpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVyPE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1
ZT4+KENTU1Byb3BlcnR5Rm9udFN0eWxlLCAmUmVuZGVyU3R5bGU6OmZvbnRJdGFsaWMsICZSZW5k
ZXJTdHlsZTo6c2V0Rm9udEl0YWxpYykKKyAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXI8c3RkOjpv
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+PihDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgJlJlbmRl
clN0eWxlOjpmb250SXRhbGljLCAmUmVuZGVyU3R5bGU6OnNldEZvbnRJdGFsaWMpCiAgICAgewog
ICAgIH0KIApAQCAtMjAyOSw3ICsyMDI5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFz
cyBBdXRvUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxUPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXV0b1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlciko
KSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHls
ZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRlciko
KSwgT3B0aW9uYWw8VD4gbWluVmFsdWUgPSBzdGQ6Om51bGxvcHQpCisgICAgQXV0b1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlciko
KSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHls
ZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRlciko
KSwgc3RkOjpvcHRpb25hbDxUPiBtaW5WYWx1ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQ
cm9wZXJ0eVdyYXBwZXI8VD4ocHJvcGVydHksIGdldHRlciwgc2V0dGVyKQogICAgICAgICAsIG1f
YXV0b0dldHRlcihhdXRvR2V0dGVyKQogICAgICAgICAsIG1fYXV0b1NldHRlcihhdXRvU2V0dGVy
KQpAQCAtMjA2NSw3ICsyMDY1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgKFJlbmRlclN0eWxl
OjoqbV9hdXRvR2V0dGVyKSgpIGNvbnN0OwogICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9hdXRv
U2V0dGVyKSgpOwotICAgIE9wdGlvbmFsPFQ+IG1fbWluVmFsdWU7CisgICAgc3RkOjpvcHRpb25h
bDxUPiBtX21pblZhbHVlOwogfTsKIAogY2xhc3MgTm9uTmVnYXRpdmVGbG9hdFByb3BlcnR5V3Jh
cHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+IHsKQEAgLTI2OTAsNyArMjY5MCw3
IEBAIGJvb2wgQ1NTUHJvcGVydHlBbmltYXRpb246OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0ZWQo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1DU1NQ
cm9wZXJ0eUlEIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQcm9wZXJ0eUF0SW5kZXgoaW50IGks
IE9wdGlvbmFsPGJvb2w+JiBpc1Nob3J0aGFuZCkKK0NTU1Byb3BlcnR5SUQgQ1NTUHJvcGVydHlB
bmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChpbnQgaSwgc3RkOjpvcHRpb25hbDxib29sPiYg
aXNTaG9ydGhhbmQpCiB7CiAgICAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwJiBtYXAg
PSBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OnNpbmdsZXRvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCmluZGV4IGU2ZTg0
ZjY1NGQzMDQ5MGUyOWYyZjk1YmE0MDA2ZDZjNDZjMTZmMGQuLjZlZjU0MWYyNWU2ZWY0NGYyZjUx
M2EwMWFmNjZlZTM1YjNmZmJlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBhbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChDU1NQcm9wZXJ0eUlEKTsK
ICAgICBzdGF0aWMgYm9vbCBwcm9wZXJ0aWVzRXF1YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVu
ZGVyU3R5bGUmIGEsIGNvbnN0IFJlbmRlclN0eWxlJiBiKTsKICAgICBzdGF0aWMgYm9vbCBjYW5Q
cm9wZXJ0eUJlSW50ZXJwb2xhdGVkKENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiBh
LCBjb25zdCBSZW5kZXJTdHlsZSYgYik7Ci0gICAgc3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0UHJv
cGVydHlBdEluZGV4KGludCwgT3B0aW9uYWw8Ym9vbD4mIGlzU2hvcnRoYW5kKTsKKyAgICBzdGF0
aWMgQ1NTUHJvcGVydHlJRCBnZXRQcm9wZXJ0eUF0SW5kZXgoaW50LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiBpc1Nob3J0aGFuZCk7CiAgICAgc3RhdGljIGludCBnZXROdW1Qcm9wZXJ0aWVzKCk7CiAK
ICAgICBzdGF0aWMgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBhbmltYXRhYmxlU2hvcnRoYW5kc0Fm
ZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IGZlNDU5ZmE2OTY5Y2E3ZGQyY2Q0YzIzMjQ0OGQzMTk0
NzM0YTMxNWEuLjQwYmMzNGQ2YTE0YzBkY2QyZGIzN2FjMGRiNTFhNTYzNjY2NTM1MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJs
ZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwKIHsKIH0KIAotdm9pZCBDU1NUcmFuc2l0aW9uOjpy
ZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQordm9pZCBDU1NUcmFu
c2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUp
CiB7CiAgICAgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlc29sdmUodGFyZ2V0U3R5bGUsIHBhcmVu
dEVsZW1lbnRTdHlsZSwgc3RhcnRUaW1lKTsKICAgICBtX2N1cnJlbnRTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQ1NTVHJh
bnNpdGlvbjo6c2V0VGltaW5nUHJvcGVydGllcyhTZWNvbmRzIGRlbGF5LCBTZWNvbmRzIGR1cmF0
aW9uKQogICAgIHVuc3VzcGVuZEVmZmVjdEludmFsaWRhdGlvbigpOwogfQogCi1SZWY8QW5pbWF0
aW9uRXZlbnRCYXNlPiBDU1NUcmFuc2l0aW9uOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwg
T3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQorUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4g
Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBk
b3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gdGltZWxpbmVUaW1lKQogewogICAgIHJldHVybiBUcmFuc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudFR5cGUsIGdldFByb3BlcnR5TmFtZVN0cmluZyhtX3Byb3BlcnR5KSwgZWxhcHNl
ZFRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKaW5kZXggZjMzNmJmYzQ1NGE1YmQ1ZWE3M2NiMjAxZjVj
NzM1OTU4MjdlMWU0Yy4uYTkyZmMwNjlhN2UxN2Y1MjczNmJlMmYwNTdkODc2NmZhYWMxODllMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHJhbnNpdGlvblByb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKG1fcHJvcGVydHkpOyB9CiAgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0KICAgICBNb25vdG9uaWNU
aW1lIGdlbmVyYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0aW9uVGltZTsgfQot
ICAgIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IHRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lVGlt
ZUF0Q3JlYXRpb247IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUoKSBjb25z
dCB7IHJldHVybiAqbV90YXJnZXRTdHlsZTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJy
ZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9jdXJyZW50U3R5bGU7IH0KICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
Km1fcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlOyB9CkBAIC01OCw4ICs1OCw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgQ1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9w
ZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBj
b25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91Ymxl
KTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBk
dXJhdGlvbik7Ci0gICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYg
cHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7Ci0gICAgdm9p
ZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFsOworICAgIFJlZjxBbmlt
YXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPikgZmluYWw7CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1fcHJv
cGVydHk7CiAgICAgTW9ub3RvbmljVGltZSBtX2dlbmVyYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggNzI1ZThm
YmFhMGIxODYzMzg2MzMxMGYyOTdmMjhlOTkwMTEzZTg0MC4uYjU4MjcyNTIyNzJmZjZlZGNlOGE2
ZWNjNGVkZDVkNDg2OGE5NDliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIERlY2xhcmF0aXZlQW5p
bWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQogewogfQogCi1jb25zdCBPcHRpb25hbDxj
b25zdCBTdHlsZWFibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50KCkgY29u
c3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBEZWNsYXJhdGl2ZUFuaW1h
dGlvbjo6b3duaW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3duaW5nRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9vd25pbmdFbGVtZW50LmdldCgpLCBtX293bmlu
Z1BzZXVkb0lkKTsKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKQogewogfQogCi1PcHRpb25h
bDxkb3VibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdzU3Rh
cnRUaW1lKCkgY29uc3QKIHsKICAgICBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKTsKICAgICBy
ZXR1cm4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpOwogfQogCi12b2lkIERlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGltZShPcHRpb25hbDxkb3VibGU+IHN0
YXJ0VGltZSkKK3ZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJpbmRpbmdzU3RhcnRUaW1l
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUpCiB7CiAgICAgZmx1c2hQZW5kaW5nU3R5
bGVDaGFuZ2VzKCk7CiAgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRp
bWUoc3RhcnRUaW1lKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlv
bjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVj
bGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIGZs
dXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpOwogICAgIHJldHVybiBXZWJBbmltYXRpb246OmJpbmRp
bmdzQ3VycmVudFRpbWUoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRGVjbGFyYXRpdmVBbmlt
YXRpb246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50VGlt
ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1
cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50VGltZSkKIHsKICAgICBmbHVz
aFBlbmRpbmdTdHlsZUNoYW5nZXMoKTsKICAgICByZXR1cm4gV2ViQW5pbWF0aW9uOjpzZXRCaW5k
aW5nc0N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNmVjYzU1ZDA0NTdhMTFiNGQxNDI5NGJl
ZDJhOGVlYWYwNWViNDhjYi4uODUyNGI3OGQ3NDMxZmE5Nzk3NDYyNzQ5MzZiOTI0NzBmZWMwNDNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGVjbGFyYXRpdmVB
bmltYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBPcHRp
b25hbDxjb25zdCBTdHlsZWFibGU+IG93bmluZ0VsZW1lbnQoKSBjb25zdDsKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gb3duaW5nRWxlbWVudCgpIGNvbnN0OwogICAg
IGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2luZ0FuaW1hdGlvbjsgfQogICAgIHZvaWQgc2V0QmFja2luZ0FuaW1hdGlvbihjb25zdCBBbmlt
YXRpb24mKTsKICAgICB2b2lkIGNhbmNlbEZyb21TdHlsZSgpOwogCi0gICAgT3B0aW9uYWw8ZG91
YmxlPiBiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0QmluZGlu
Z3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8ZG91
YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0QmluZGluZ3NDdXJyZW50VGltZShPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHNldEJpbmRpbmdzU3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBj
b25zdCBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCaW5kaW5nc0N1cnJlbnRUaW1l
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgV2ViQW5pbWF0aW9uOjpQbGF5U3Rh
dGUgYmluZGluZ3NQbGF5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBXZWJBbmltYXRpb246OlJl
cGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxhY2VTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
YmluZGluZ3NQZW5kaW5nKCkgY29uc3QgZmluYWw7CkBAIC03OSw3ICs3OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigp
OwogICAgIC8vIGVsYXBzZWRUaW1lIGlzIHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUgYXQg
dGhlIHRpbWUgdGhlIGV2ZW50IGlzIGFkZGVkIGFuZCBpcyBleHBvc2VkIHRocm91Z2ggdGhlIERP
TSBBUEksIHRpbWVsaW5lVGltZSBpcyB0aGUgYW5pbWF0aW9ucycKICAgICAvLyB0aW1lbGluZSBj
dXJyZW50IHRpbWUgYW5kIGlzIG5vdCBleHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEkgYnV0IHVz
ZWQgYnkgdGhlIERvY3VtZW50VGltZWxpbmUgZm9yIHNvcnRpbmcgZXZlbnRzIGJlZm9yZSBkaXNw
YXRjaC4gCi0gICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVudChj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3Ry
aW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSA9IDA7CisgICAg
dmlydHVhbCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9J
ZCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpID0gMDsKICAgICB2b2lkIGlu
dmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2VkVGltZSA9IDBfcyk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXgg
NDkxNDQxMThlMjdiNzE0N2NiOWZkOTBjYTQ5YmYwYjM0Mzc1NjU5ZC4uYTI0Y2IxOTRjNzQ3Y2Rm
NzczMzI1YTQyMTYyN2RjY2EwOTliNGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHVuc2lnbmVkIERvY3Vt
ZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0ZvclRlc3RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBjb3VudDsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGlu
ZTo6Y3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5l
OjpjdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSB0aGlzLT5jb250
cm9sbGVyKCkpIHsKICAgICAgICAgaWYgKGF1dG8gY3VycmVudFRpbWUgPSBjb250cm9sbGVyLT5j
dXJyZW50VGltZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmgKaW5kZXggOGUzMDQ5MTE2ZDUwNGNhNTNiZTAwMTNhZmFmMmRmODI5OGJkOWViMS4uNGFjYWNi
YmFmMTgyNDQ4ZmM3ZGRhNGY1ZjNjOTVlMjRlOGY1YWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7
IH0KIAotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBhbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIu
Y3BwCmluZGV4IGJmOTJjYzcwNGNmNGM3NGI2OWU3OTdlMzJmMzAzMWJmZGZiMDZiYWMuLjkzNTc1
ODY3YTQ5MzY3YTg0MzUyNjYyMzE2YjZlNzlmYjRiZTRlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBA
IC0yMTQsNyArMjE0LDcgQEAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIERvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bGl2ZUN1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1
bWVudC5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+
IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkKIHsK
ICAgICBpZiAoIW1fZG9jdW1lbnQuZG9tV2luZG93KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyLmgKaW5kZXggZDc0OWEwNjVkYzUzZDU3MTIxZGRhNGNiOTY2MWVkMjU2
MjA4YzAwMi4uMWFiNTJhZmRjMDBiNzVjNWZiNDJjMDBiNjk2MmJjNTA4Y2FjZjk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9j
dW1lbnQoKTsKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcyk7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgp
OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IDU3MWYwMzViMjZjYzAzODI1ZDZlMjkxYWQ3MzdjNDIyMDIzYzQ2
ODUuLmQ3YjNkOTZiZmM4ZjRmYWFlOGM5YjNiODM4MDYzNGE3OGNmMjNhMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNjcsNyArNjcsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIEVsZW1l
bnQqIGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoY29uc3QgT3B0aW9uYWw8Y29u
c3QgU3R5bGVhYmxlPiYgc3R5bGVhYmxlKQorc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRPclBzZXVk
b0VsZW1lbnRGb3JTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBzdHlsZWFibGUpCiB7CiAgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgRWxlbWVudCogZWxlbWVudE9yUHNldWRvRWxl
bWVudEZvclN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibAogICAgIH0KIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVFbGVtZW50KGNvbnN0IE9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRl
RWxlbWVudChjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkK
IHsKICAgICBpZiAoYXV0byogZWxlbWVudE9yUHNldWRvRWxlbWVudCA9IGVsZW1lbnRPclBzZXVk
b0VsZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVhYmxlKSkKICAgICAgICAgZWxlbWVudE9yUHNldWRv
RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZU1pc3NpbmdLZXlmcmFtZU9mZnNldHMoVmVjdG9yPEtl
eWZyYW1lRWZmZWN0OjpQYXJzZWRLZQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAxLiBGb3Ig
ZWFjaCBrZXlmcmFtZSwgaW4ga2V5ZnJhbWVzLCBsZXQgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9m
ZnNldCBvZiB0aGUga2V5ZnJhbWUgYmUgZXF1YWwgdG8gaXRzIGtleWZyYW1lIG9mZnNldCB2YWx1
ZS4KLSAgICAvLyBJbiBvdXIgaW1wbGVtZW50YXRpb24sIHdlIG9ubHkgc2V0IG5vbi1udWxsIHZh
bHVlcyB0byBhdm9pZCBtYWtpbmcgY29tcHV0ZWRPZmZzZXQgT3B0aW9uYWw8ZG91YmxlPi4gSW5z
dGVhZCwgd2UnbGwga25vdworICAgIC8vIEluIG91ciBpbXBsZW1lbnRhdGlvbiwgd2Ugb25seSBz
ZXQgbm9uLW51bGwgdmFsdWVzIHRvIGF2b2lkIG1ha2luZyBjb21wdXRlZE9mZnNldCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4uIEluc3RlYWQsIHdlJ2xsIGtub3cKICAgICAvLyB0aGF0IGEga2V5ZnJh
bWUgaGFzbid0IGhhZCBhIGNvbXB1dGVkIG9mZnNldCBieSBjaGVja2luZyBpZiBpdCBoYXMgYSBu
dWxsIG9mZnNldCBhbmQgYSAwIGNvbXB1dGVkT2Zmc2V0LCBzaW5jZSB0aGUgZmlyc3QKICAgICAv
LyBrZXlmcmFtZSB3aWxsIGFscmVhZHkgaGF2ZSBhIDAgY29tcHV0ZWRPZmZzZXQuCiAgICAgZm9y
IChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lcykgewpAQCAtNDM2LDkgKzQzNiw5IEBAIHN0YXRp
YyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZyYW1l
cyhKU0dsb2JhbE9iamVjdCYKICAgICAvLyA1LiBMZXQgb2Zmc2V0cyBiZSBhIHNlcXVlbmNlIG9m
IG51bGxhYmxlIGRvdWJsZSB2YWx1ZXMgYXNzaWduZWQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhl
IOKAnG9mZnNldOKAnSBtZW1iZXIgb2YgdGhlIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgYXMg
Zm9sbG93czoKICAgICAvLyAgICAtIHNlcXVlbmNlPGRvdWJsZT8+LCB0aGUgdmFsdWUgb2Yg4oCc
b2Zmc2V04oCdIGFzLWlzLgogICAgIC8vICAgIC0gZG91YmxlPywgYSBzZXF1ZW5jZSBvZiBsZW5n
dGggb25lIHdpdGggdGhlIHZhbHVlIG9mIOKAnG9mZnNldOKAnSBhcyBpdHMgc2luZ2xlIGl0ZW0s
IGkuZS4gwqsgb2Zmc2V0IMK7LAotICAgIFZlY3RvcjxPcHRpb25hbDxkb3VibGU+PiBvZmZzZXRz
OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxPcHRpb25hbDxkb3VibGU+
Pj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAgICAg
ICAgb2Zmc2V0cyA9IFdURjo6Z2V0PFZlY3RvcjxPcHRpb25hbDxkb3VibGU+Pj4ocHJvcGVydHlJ
bmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsKKyAgICBWZWN0b3I8c3RkOjpv
cHRpb25hbDxkb3VibGU+PiBvZmZzZXRzOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5i
YXNlUHJvcGVydGllcy5vZmZzZXQpKQorICAgICAgICBvZmZzZXRzID0gV1RGOjpnZXQ8VmVjdG9y
PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9w
ZXJ0aWVzLm9mZnNldCk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3Vi
bGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAgICAg
ICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3Bl
cnRpZXMub2Zmc2V0KSkKQEAgLTUwNyw3ICs1MDcsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlv
bk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmplY3Qm
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4g
S2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBPcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPj4mJiBvcHRpb25zKQorRXhj
ZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8
SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBLZXlm
cmFtZUVmZmVjdE9wdGlvbnM+PiYmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBrZXlmcmFtZUVmZmVj
dCA9IGFkb3B0UmVmKCpuZXcgS2V5ZnJhbWVFZmZlY3QodGFyZ2V0LCBQc2V1ZG9JZDo6Tm9uZSkp
OwogCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRp
b24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCiAgICAgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJz
aGlwKCk7CiB9CiAKLWNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gS2V5ZnJhbWVFZmZl
Y3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0Citjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX3RhcmdldCwgbV9wc2V1
ZG9JZCk7CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVm
ZmVjdDo6c2V0UHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5
bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0U3R5
bGVhYmxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXRTdHlsZWFi
bGUpCiB7CiAgICAgYXV0byBuZXdUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRTdHlsZWFibGUoKTsK
IApAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFy
Z2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHAKICAgICAgICAg
bV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFyZ2V0U3R5bGVhYmxlLT5lbnN1cmVLZXlmcmFt
ZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVj
dDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCit2b2lkIEtleWZy
YW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1l
KQogewogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsNyArMTQ0
NCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUo
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgICAgIC8vIDYuIFJlbW92ZSBhbnkg
a2V5ZnJhbWVzIGZyb20gcHJvcGVydHktc3BlY2lmaWMga2V5ZnJhbWVzIHRoYXQgZG8gbm90IGhh
dmUgYSBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGFyZ2V0IHByb3BlcnR5LgogICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zmc2V0ID0gMDsKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZLZXlmcmFtZXNXaXRoT25lT2Zmc2V0ID0gMDsKLSAgICAgICAgVmVjdG9yPE9wdGlv
bmFsPHNpemVfdD4+IHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXM7CisgICAgICAgIFZlY3Rvcjxz
dGQ6Om9wdGlvbmFsPHNpemVfdD4+IHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXM7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibGVuZGluZ0tleWZyYW1lcy5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgYXV0byYga2V5ZnJhbWUgPSBtX2JsZW5kaW5nS2V5ZnJhbWVzW2ldOwog
ICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBrZXlmcmFtZS5rZXkoKTsKQEAgLTE0ODIsNyArMTQ4
Miw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUo
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgICAgIH0KIAogICAgICAgICAvLyAx
MC4gTGV0IGludGVydmFsIGVuZHBvaW50cyBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBrZXlmcmFt
ZXMuCi0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxzaXplX3Q+PiBpbnRlcnZhbEVuZHBvaW50czsK
KyAgICAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8c2l6ZV90Pj4gaW50ZXJ2YWxFbmRwb2ludHM7
CiAKICAgICAgICAgLy8gMTEuIFBvcHVsYXRlIGludGVydmFsIGVuZHBvaW50cyBieSBmb2xsb3dp
bmcgdGhlIHN0ZXBzIGZyb20gdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIGJlbG93
OgogICAgICAgICBpZiAoaXRlcmF0aW9uUHJvZ3Jlc3MgPCAwICYmIG51bWJlck9mS2V5ZnJhbWVz
V2l0aFplcm9PZmZzZXQgPiAxKSB7CkBAIC0xOTk3LDcgKzE5OTcsNyBAQCBib29sIEtleWZyYW1l
RWZmZWN0OjpyZXF1aXJlc1BzZXVkb0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2JsZW5k
aW5nS2V5ZnJhbWVzU291cmNlID09IEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlOjpXZWJBbmltYXRp
b24gJiYgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBLZXlm
cmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVz
cykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NV
bnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKIHsKICAgICBBU1NF
UlQoaXRlcmF0aW9uUHJvZ3Jlc3MgPj0gMCAmJiBpdGVyYXRpb25Qcm9ncmVzcyA8PSAxKTsKIApA
QCAtMjAxMCw3ICsyMDEwLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJv
Z3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICBpZiAobV9i
bGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBhdXRvIHByb2dyZXNzVW50aWxOZXh0U3RlcEluSW50ZXJ2YWwgPSBbaXRlcmF0aW9u
UHJvZ3Jlc3NdKGRvdWJsZSBpbnRlcnZhbFN0YXJ0UHJvZ3Jlc3MsIGRvdWJsZSBpbnRlcnZhbEVu
ZFByb2dyZXNzLCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pIC0+IE9wdGlvbmFsPGRv
dWJsZT4geworICAgIGF1dG8gcHJvZ3Jlc3NVbnRpbE5leHRTdGVwSW5JbnRlcnZhbCA9IFtpdGVy
YXRpb25Qcm9ncmVzc10oZG91YmxlIGludGVydmFsU3RhcnRQcm9ncmVzcywgZG91YmxlIGludGVy
dmFsRW5kUHJvZ3Jlc3MsIFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikgLT4gc3RkOjpv
cHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgaWYgKCFpczxTdGVwc1RpbWluZ0Z1bmN0aW9uPih0
aW1pbmdGdW5jdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IDU4ZGE4ZGZjMDI3MzNk
MGFiYjZmNTBjMjVjOWFmNTJjN2RiODg4NjIuLmVjMDI4YTFkM2FmNjhjZDI2ODE1YTBlYjJiMmZj
NzE1ODgyMzRkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBLZXlmcmFt
ZUVmZmVjdCA6IHB1YmxpYyBBbmltYXRpb25FZmZlY3QKICAgICAsIHB1YmxpYyBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtl
eWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFbGVtZW50KiwgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiwgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZy
YW1lRWZmZWN0T3B0aW9ucz4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8S2V5ZnJh
bWVFZmZlY3Q+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEVsZW1lbnQqLCBKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBLZXlm
cmFtZUVmZmVjdE9wdGlvbnM+PiYmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZy
YW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8S2V5ZnJhbWVFZmZl
Y3Q+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5ZnJhbWVFZmZlY3Q+IGNyZWF0ZShjb25zdCBFbGVt
ZW50JiwgUHNldWRvSWQpOwogICAgIH5LZXlmcmFtZUVmZmVjdCgpIHsgfQpAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0tleWZyYW1lRWZmZWN0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RydWN0IEJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZSB7
Ci0gICAgICAgIFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFZlY3RvcjxPcHRpb25hbDxkb3VibGU+
PiwgZG91YmxlPiBvZmZzZXQgPSBWZWN0b3I8T3B0aW9uYWw8ZG91YmxlPj4oKTsKKyAgICAgICAg
VmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4sIGRv
dWJsZT4gb2Zmc2V0ID0gVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4oKTsKICAgICAgICAg
VmFyaWFudDxWZWN0b3I8U3RyaW5nPiwgU3RyaW5nPiBlYXNpbmcgPSBWZWN0b3I8U3RyaW5nPigp
OwogICAgICAgICBWYXJpYW50PFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+LCBDb21w
b3NpdGVPcGVyYXRpb25PckF1dG8+IGNvbXBvc2l0ZSA9IFZlY3RvcjxDb21wb3NpdGVPcGVyYXRp
b25PckF1dG8+KCk7CiAgICAgfTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nIHBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgT3B0aW9uYWw8Y29u
c3QgU3R5bGVhYmxlPiB0YXJnZXRTdHlsZWFibGUoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gdGFyZ2V0U3R5bGVhYmxlKCkgY29uc3Q7CiAKICAgICBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IGdldEJpbmRpbmdzS2V5ZnJhbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4+IGdldEtleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0ZU9wZXJhdGlvbiBjb21w
b3NpdGVPcGVyYXRpb24pIHsgbV9jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRp
b247IH0KIAogICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8
U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHkoUmVuZGVy
U3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxl
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2
b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBm
aW5hbDsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFBsYXkoKSBmaW5hbDsKQEAgLTE4NSw3ICsxODUs
NyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBjb3B5UHJvcGVydGllc0Zy
b21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmKTsKLSAgICB2b2lkIGRpZENoYW5nZVRhcmdl
dFN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+Jik7CisgICAgdm9pZCBk
aWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFi
bGU+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc0tleWZyYW1lcyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJik7CiAgICAgdm9pZCBhZGRQ
ZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb24pOwogICAgIGJvb2wgY2Fu
QmVBY2NlbGVyYXRlZCgpIGNvbnN0OwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUoKTsKICAgICB2b2lkIHNldEJs
ZW5kaW5nS2V5ZnJhbWVzKEtleWZyYW1lTGlzdCYpOwogICAgIFNlY29uZHMgdGltZVRvTmV4dFRp
Y2soKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxkb3VibGU+IHByb2dyZXNzVW50aWxOZXh0
U3RlcChkb3VibGUpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcm9n
cmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzVGFyZ2V0
aW5nVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0Zvck1h
dGNoaW5nVHJhbnNmb3JtRnVuY3Rpb25MaXN0cygpOwogICAgIHZvaWQgY2hlY2tGb3JNYXRjaGlu
Z0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09w
dGlvbmFsRWZmZWN0VGltaW5nLmgKaW5kZXggNzZkMDliYWJmZGEyZTRkNTUxYWIzODg2ZGM1Y2Ey
M2EyYjU4NjU3Ny4uZjMxZTkyMzJkYjA1YzNhNmU3OGM3NTg5NmVlOGFmNmNmMjVhMDUzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKQEAg
LTM0LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IE9wdGlvbmFsRWZm
ZWN0VGltaW5nIHsKLSAgICBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgU3RyaW5nPj4gZHVyYXRp
b247Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25zOyAvLyBUaGlzIHZhbHVlIGNhbm5v
dCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgTmFOIHZh
bHVlLgorICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIFN0cmluZz4+IGR1cmF0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25zOyAvLyBUaGlzIHZhbHVlIGNh
bm5vdCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgTmFO
IHZhbHVlLgogICAgIE1hcmthYmxlRG91YmxlIGRlbGF5OwogICAgIE1hcmthYmxlRG91YmxlIGVu
ZERlbGF5OwogICAgIE1hcmthYmxlRG91YmxlIGl0ZXJhdGlvblN0YXJ0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA3ZTU1NDQwMTk2OTcyNmRlNTU1Yjc2
NzM5ZjNhMGI0NzllZTIyZDU5Li4xMzIzNjdlMjNhMjZkZDdkODgyOWE1YWM2NDhlOWU0OGM3ODJm
MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2
LDggKzIwNiw4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRFZmZlY3RJbnRlcm5hbChSZWZQdHI8
QW5pbWF0aW9uRWZmZWN0PiYmIG5ld0VmZmVjdCwgYm9vbCBkCiAKICAgICBhdXRvIG9sZEVmZmVj
dCA9IHN0ZDo6ZXhjaGFuZ2UobV9lZmZlY3QsIFdURk1vdmUobmV3RWZmZWN0KSk7CiAKLSAgICBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZl
Y3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgp
KS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpID8gZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkg
OiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZp
b3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlm
cmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG5ld1RhcmdldCA9IGlz
PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9l
ZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlvbiByZWxhdGlvbnNoaXBzIGFuZCB0aGUgdGlt
ZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlmIChvbGRFZmZlY3QpIHsKQEAgLTI3Nyw3ICsy
NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxpbmVJbnRlcm5hbChSZWZQdHI8QW5p
bWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRpb25U
aW1lbGluZURpZENoYW5nZShtX3RpbWVsaW5lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJBbmltYXRp
b246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFy
Z2V0KQordm9pZCBXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90aW1lbGlu
ZSkgewogICAgICAgICBpZiAocHJldmlvdXNUYXJnZXQpCkBAIC0yOTMsMTQgKzI5MywxNCBAQCB2
b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4mIHByZXZpbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGFyZ2V0KCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8ZG91
YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fc3RhcnRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqbV9zdGFydFRpbWUpOwogfQogCi12
b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBu
ZXdTdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG5ld1N0YXJ0VGltZSkKIHsKICAgICBpZiAobmV3U3RhcnRUaW1l
KQogICAgICAgICBzZXRTdGFydFRpbWUoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqbmV3U3Rh
cnRUaW1lKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEJpbmRp
bmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4gbmV3U3RhcnRUaW1lKQogICAgICAgICBzZXRT
dGFydFRpbWUoc3RkOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0
VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6
c2V0U3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQogewogICAg
IC8vIDMuNC42IFRoZSBwcm9jZWR1cmUgdG8gc2V0IHRoZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlv
biwgYW5pbWF0aW9uLCB0byBuZXcgc3RhcnQgdGltZSwgaXMgYXMgZm9sbG93czoKICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMvI3NldHRpbmctdGhlLXN0YXJ0
LXRpbWUtb2YtYW4tYW5pbWF0aW9uCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBXZWJBbmltYXRp
b246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCiAgICAgaW52
YWxpZGF0ZUVmZmVjdCgpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IFdlYkFuaW1hdGlvbjo6Ymlu
ZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0
aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHRpbWUgPSBjdXJy
ZW50VGltZSgpOwogICAgIGlmICghdGltZSkKQEAgLTM2NCwxOSArMzY0LDE5IEBAIE9wdGlvbmFs
PGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUodGltZS52YWx1ZSgpKTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKE9w
dGlvbmFsPGRvdWJsZT4gY3VycmVudFRpbWUpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRp
b246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGN1cnJlbnRU
aW1lKQogewogICAgIGlmICghY3VycmVudFRpbWUpCiAgICAgICAgIHJldHVybiBzZXRDdXJyZW50
VGltZShzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBzZXRDdXJyZW50VGltZShTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKGN1cnJlbnRUaW1lLnZhbHVlKCkpKTsKIH0KIAotT3B0aW9uYWw8U2Vj
b25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IFdlYkFuaW1hdGlvbjo6Y3VycmVudFRp
bWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZTo6WWVzLCBzdGFydFRpbWUpOwogfQogCi1PcHRp
b25hbDxTZWNvbmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSBy
ZXNwZWN0SG9sZFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShSZXNwZWN0SG9sZFRp
bWUgcmVzcGVjdEhvbGRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgY29u
c3QKIHsKICAgICAvLyAzLjQuNC4gVGhlIGN1cnJlbnQgdGltZSBvZiBhbiBhbmltYXRpb24KICAg
ICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jdGhlLWN1cnJl
bnQtdGltZS1vZi1hbi1hbmltYXRpb24KQEAgLTM5OSw3ICszOTksNyBAQCBPcHRpb25hbDxTZWNv
bmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSByZXNwZWN0SG9s
ZFRpbWUsIE9wdAogICAgIHJldHVybiAoKm1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBzdGFy
dFRpbWUudmFsdWVfb3IoKm1fc3RhcnRUaW1lKSkgKiBtX3BsYXliYWNrUmF0ZTsKIH0KIAotRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKE9wdGlv
bmFsPFNlY29uZHM+IHNlZWtUaW1lKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpz
aWxlbnRseVNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiB7
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiV2ViQW5pbWF0aW9u
ICIgPDwgdGhpcyA8PCAiIHNpbGVudGx5U2V0Q3VycmVudFRpbWUgIiA8PCBzZWVrVGltZSk7CiAK
QEAgLTQzOSw3ICs0MzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNpbGVu
dGx5U2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbQogICAgIHJldHVybiB7
IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6c2V0Q3VycmVudFRpbWUo
T3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRp
b246OnNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiV2ViQW5pbWF0aW9uICIg
PDwgdGhpcyA8PCAiIHNldEN1cnJlbnRUaW1lICIgPDwgc2Vla1RpbWUpOwogCkBAIC02NzcsNyAr
Njc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OndpbGxDaGFuZ2VSZW5kZXJlcigpCiAgICAgICAg
IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9lZmZlY3QpLndpbGxDaGFuZ2VSZW5kZXJlcigp
OwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9w
dGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKK3ZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVl
QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5l
VGltZSkKIHsKICAgICBhdXRvIGV2ZW50ID0gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6Y3JlYXRl
KHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUsIHRoaXMpOwogICAgIGV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dGlj
aygpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRpb25EaWRUaWNrKCk7CiB9CiAKLXZvaWQgV2Vi
QW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQor
dm9pZCBXZWJBbmltYXRpb246OnJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IHN0YXJ0VGltZSkKIHsKICAgICBpZiAoIW1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0
ZVdoZW5SZXNvbHZpbmcpCiAgICAgICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8s
IFN5bmNocm9ub3VzbHlOb3RpZnk6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmgKaW5kZXggN2ViODRjNmRkYTliMDdjYWYwNDM5NzhjNjc5MTY4YzA5NDI1MmFlNi4u
NTAzNjY2ZjMwZmZkMGMwMDdhOGRmMjliNmE1MWEzYmE3YTM3MjVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAg
QW5pbWF0aW9uVGltZWxpbmUqIHRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5n
ZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGlt
ZWxpbmU+JiYpOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoT3B0aW9uYWw8
U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IGN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4pOwogCiAgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlICsgMDsgfQogICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CkBA
IC0xMDMsMTIgKzEwMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJzaXN0KCk7CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gY29tbWl0U3R5bGVzKCk7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGRv
dWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qmlu
ZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPik7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4g
c3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KLSAgICB2b2lkIHNldFN0
YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPik7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxkb3VibGU+
IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRUaW1lOyB9CisgICAgdm9pZCBzZXRTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRz
Pik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGlt
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QmluZGluZ3NDdXJy
ZW50VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwogICAgIHZpcnR1YWwgUGxheVN0YXRlIGJp
bmRpbmdzUGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gcGxheVN0YXRlKCk7IH0KICAgICB2aXJ0
dWFsIFJlcGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxhY2VTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHJl
cGxhY2VTdGF0ZSgpOyB9CiAgICAgdmlydHVhbCBib29sIGJpbmRpbmdzUGVuZGluZygpIGNvbnN0
IHsgcmV0dXJuIHBlbmRpbmcoKTsgfQpAQCAtMTIwLDggKzEyMCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzVGljaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB0aWNrKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0VGljaygpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpOwot
ICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxl
YWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBu
ZXdUYXJnZXQpOworICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBlZmZlY3RUYXJnZXREaWRDaGFu
Z2UoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOwogICAgIHZv
aWQgYWNjZWxlcmF0ZWRTdGF0ZURpZENoYW5nZSgpOwogICAgIHZvaWQgd2lsbENoYW5nZVJlbmRl
cmVyKCk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KICAgICBib29sIGlzUmVwbGFjZWFi
bGUoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZSgpOwotICAgIHZvaWQgZW5xdWV1ZUFuaW1hdGlv
blBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPFNlY29uZHM+LCBPcHRp
b25hbDxTZWNvbmRzPik7CisgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChj
b25zdCBBdG9tU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiwgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPik7CiAKICAgICB1aW50NjRfdCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICB2b2lkIHNldEdsb2JhbFBvc2l0aW9uKHVpbnQ2NF90
IGdsb2JhbFBvc2l0aW9uKSB7IG1fZ2xvYmFsUG9zaXRpb24gPSBnbG9iYWxQb3NpdGlvbjsgfQpA
QCAtMTY3LDggKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1lKCkg
Y29uc3Q7CiAgICAgV2ViQW5pbWF0aW9uJiByZWFkeVByb21pc2VSZXNvbHZlKCk7CiAgICAgV2Vi
QW5pbWF0aW9uJiBmaW5pc2hlZFByb21pc2VSZXNvbHZlKCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25k
cz4gY3VycmVudFRpbWUoUmVzcGVjdEhvbGRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2lsZW50bHlTZXRDdXJyZW50
VGltZShPcHRpb25hbDxTZWNvbmRzPik7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjdXJy
ZW50VGltZShSZXNwZWN0SG9sZFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNpbGVudGx5U2V0Q3VycmVudFRp
bWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7CiAgICAgdm9pZCBmaW5pc2hOb3RpZmljYXRpb25T
dGVwcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1BhdXNlVGFzaygpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayAhPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2No
ZWR1bGVkOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nUGxheVRhc2soKSBjb25zdCB7IHJldHVybiBt
X3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayAhPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2No
ZWR1bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA4ZGM3YTA3ZWZlNzEz
Mjk1NTZmN2ViNWYxYmMyOTgyNzI4YzdhNDE2Li41NzQ1ZTJhNGZlNzk3MGNlNGRmMzUxMmYwYTA2
ODI4ZTA2MGQzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTY0LDEyICs2
NCwxMiBAQCBzdHJ1Y3QgSURMVHlwZSB7CiAgICAgdXNpbmcgU2VxdWVuY2VTdG9yYWdlVHlwZSA9
IFQ7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gVDsKLSAgICB1c2luZyBOdWxsYWJsZVBh
cmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OworICAgIHVzaW5nIE51
bGxhYmxlUGFyYW1ldGVyVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsK
IAogICAgIHVzaW5nIElubmVyUGFyYW1ldGVyVHlwZSA9IFQ7Ci0gICAgdXNpbmcgTnVsbGFibGVJ
bm5lclBhcmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OworICAgIHVz
aW5nIE51bGxhYmxlSW5uZXJQYXJhbWV0ZXJUeXBlID0gc3RkOjpvcHRpb25hbDxJbXBsZW1lbnRh
dGlvblR5cGU+OwogCi0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gT3B0aW9uYWw8SW1wbGVtZW50
YXRpb25UeXBlPjsKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEltcGxl
bWVudGF0aW9uVHlwZT47CiAgICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1ZShjb25zdCBO
dWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICBzdGF0aWMgSW1wbGVt
ZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxsYWJsZVR5cGUm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9CkBAIC0yMDksMTQgKzIwOSwxNCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMU2VxdWVuY2UgOiBJRExUeXBlPFZlY3Rvcjx0
eXBlbmFtZSBUOjpJbXBsZW1lbnRhdAogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiAKICAgICB1
c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OklubmVyUGFyYW1l
dGVyVHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlv
bmFsPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbm5lclBhcmFtZXRlclR5cGU+PiY7CisgICAgdXNpbmcg
TnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dHlwZW5h
bWUgVDo6SW5uZXJQYXJhbWV0ZXJUeXBlPj4mOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETEZyb3plbkFycmF5IDogSURMVHlwZTxWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVt
ZW50YXRpb25UeXBlPj4gewogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiAKICAgICB1c2luZyBQ
YXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlw
ZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZl
Y3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7CisgICAgdXNpbmcgTnVsbGFi
bGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dHlwZW5hbWUgVDo6
SW1wbGVtZW50YXRpb25UeXBlPj4mOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5h
bWUgVj4gc3RydWN0IElETFJlY29yZCA6IElETFR5cGU8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWly
PHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRp
b25UeXBlPj4+IHsKQEAgLTIyNCw3ICsyMjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBl
bmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQog
ICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29u
c3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlw
ZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4mOwotICAgIHVzaW5nIE51bGxhYmxl
UGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0
eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9u
VHlwZT4+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRp
b25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+Pj4mOwogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExXcmFwcGVyPERPTVByb21pc2U+
IHsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgSURMVW5pb24gOiBJRExUeXBlPFZhcmlhbnQ8
dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+IHsKICAgICB1c2luZyBUeXBlTGlz
dCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogCiAgICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNv
bnN0IFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4mOwotICAgIHVz
aW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZhcmlhbnQ8dHlwZW5h
bWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+JjsKKyAgICB1c2luZyBOdWxsYWJsZVBhcmFt
ZXRlclR5cGUgPSBjb25zdCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxl
bWVudGF0aW9uVHlwZS4uLj4+JjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExCdWZmZXJTb3VyY2UgOiBJRExXcmFwcGVyPFQ+IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggYzBmZmFkZDZmMjUy
NDI2YWJhNzIyYTUwODQ0ZTYzNTcyZjRkNWU5My4uNWYxNjU3YTIyZWM2OGRlNDE1YzA1OTMyZTk2
ODA4NjAzM2Y0M2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2NyaXB0
KERvY3UKICAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNl
VVJMLCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGludGVncml0eSksIHsgfSk7CiB9CiAKLUNhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNj
cmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBj
b25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5LCBPcHRpb25h
bDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcmVzb3VyY2VMb2FkUHJpb3JpdHkpIGNvbnN0CitDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVl
c3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIFN0cmluZyYmIGludGVncml0eSwgc3Rk
OjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcmVzb3VyY2VMb2FkUHJpb3JpdHkpIGNv
bnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudC5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRleCAyOTkyODRkY2ZiMGNmMTgxN2QzZjI2MWM1ZGIx
NjA5NTExZDliYzI4Li5lNGU5ZTNiY2ZkNGYwYzliNjljZjJiMGY0NjU0MWExNzA0YTExNWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
CkBAIC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3Vt
ZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
LCBTdHJpbmcmJiBpbnRlZ3JpdHksIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PikgY29u
c3Q7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0
V2l0aENhY2hlKERvY3VtZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYg
Y3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHksIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VMb2FkUHJpb3JpdHk+KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9ub25jZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXggMzgy
OWMxZTFkMDU0YWFkNTBmYjE5YWJmNzJjNDBmYjk3MzAxYTlkNy4uYzJjY2QxOGE3NWY1ZGYyMDFh
MTkyMGMxZTVmNTJkY2M1YzAxNGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NUHJvbWlzZVByb3h5LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVq
ZWN0KEV4Y2VwdGlvbiwgUmVqZWN0QXNIYW5kbGVkID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7CiAg
ICAgCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPFZhbHVlPj4gbV92YWx1ZU9y
RXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8VmFsdWU+PiBtX3ZhbHVl
T3JFeGNlcHRpb247CiAgICAgVmVjdG9yPFJlZjxEZWZlcnJlZFByb21pc2U+LCAxPiBtX2RlZmVy
cmVkUHJvbWlzZXM7CiB9OwogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
amVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8pOwog
CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JFeGNl
cHRpb247CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9yRXhj
ZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8RGVmZXJyZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJlZFBy
b21pc2VzOwogfTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6
CiAgICAgUmVzb2x2ZUNhbGxiYWNrIG1fcmVzb2x2ZUNhbGxiYWNrOwotICAgIE9wdGlvbmFsPEV4
Y2VwdGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JFeGNlcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxF
eGNlcHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9yRXhjZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8RGVm
ZXJyZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJlZFByb21pc2VzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBkZjVk
MTU3ZjNiMTdmYTQ2MTM1MzgzMjdjNDQ4YzEzODg5OWYzMzk0Li42Nzc1Y2JmNThmNDk5ZmQ2YzQ0
OGM4NjU2MGYyNzIyYTliNGUzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIHRvSlMoKmxleGljYWxHbG9iYWxPYmplY3QsICpn
bG9iYWxPYmplY3QsIGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKS5nZXQoKSk7CiB9CiAKLXN0
YXRpYyBWZWN0b3I8SURCS2V5RGF0YT4gY3JlYXRlS2V5UGF0aEFycmF5KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBJREJJbmRleEluZm8m
IGluZm8sIE9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURC
S2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCitzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0
ZUtleVBhdGhBcnJheShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkp
CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU3RyaW5n
JiBzdHJpbmcpIC0+IFZlY3RvcjxJREJLZXlEYXRhPiB7CiAgICAgICAgIC8vIFZhbHVlIGRvZXNu
J3QgY29udGFpbiBhdXRvLWdlbmVyYXRlZCBrZXksIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgYWRk
IGtleSBpZiBpdCBpcyBwb3NzaWJseSBhdXRvLWdlbmVyYXRlZC4KQEAgLTQ2Niw3ICs0NjYsNyBA
QCBzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0ZUtleVBhdGhBcnJheShKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdAogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IGluZm8ua2V5UGF0aCgpKTsKIH0KIAotdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5m
bywgSlNWYWx1ZSB2YWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mIG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVL
ZXkpCit2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBKU1ZhbHVlIHZhbHVlLCBJ
bmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBvYmplY3RT
dG9yZUtleVBhdGgsIGNvbnN0IElEQktleURhdGEmIG9iamVjdFN0b3JlS2V5KQogewogICAgIGF1
dG8ga2V5RGF0YXMgPSBjcmVhdGVLZXlQYXRoQXJyYXkobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUsIGluZm8sIG9iamVjdFN0b3JlS2V5UGF0aCwgb2JqZWN0U3RvcmVLZXkpOwogICAgIGlmIChr
ZXlEYXRhcy5pc0VtcHR5KCkpCkBAIC01MDMsNyArNTAzLDcgQEAgSW5kZXhJRFRvSW5kZXhLZXlN
YXAgZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG8KICAgICByZXR1cm4gaW5kZXhLZXlzOwogfQogCi1PcHRpb25hbDxKU0M6OkpTVmFsdWU+
IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitzdGQ6Om9wdGlvbmFs
PEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmplY3Rpb24oSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29u
c3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQogewogICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVk
KCkgfHwgIWtleVBhdGggfHwgIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRo
LnZhbHVlKCkpIHx8ICFpc0lEQktleVBhdGhWYWxpZChrZXlQYXRoLnZhbHVlKCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IGE3
ZDZkN2U1YWE4ZjM3MDU0YWJjZTI0OWU0OWRkOTc4Njc3OGJmOTguLjU5Zjg0ODUxOTk0OTg1NmVm
YTE3YjdhMDc4Yjk5ZjZkNGJkOGI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTUwLDcgKzUwLDcgQEAgUmVmUHRyPElEQktl
eT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6SlNHbG9i
YWxPYmplY3QmLAogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBpbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQktl
eURhdGEmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgmKTsKIAotdm9pZCBnZW5lcmF0
ZUluZGV4S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQkluZGV4SW5m
byYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mLCBjb25zdCBJREJLZXlEYXRhJik7Cit2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCSW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVl
LCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiwgY29u
c3QgSURCS2V5RGF0YSYpOwogCiBJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5
TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYpOwogCkBAIC02Miw1ICs2Miw1
IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIGNvbnN0IElEQlZhbHVlJik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleSopOwogSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgSURCS2V5
RGF0YSYpOwogCi1PcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRo
S2V5SW5qZWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOworc3RkOjpvcHRpb25h
bDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAppbmRleCA1ZDM0MDVjOGZm
YjgwOGUzMDgyMWFjYmU3NWYxNjc1Mjg4ZTU4MjU2Li4wYjM3ZDc3YWQwZGQ2NmFiZThlODE1N2Fj
MmIxMjRmOWNkODg3MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGRlY2x0
eXBlKGF1dG8pIHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcihJbm5lckl0
ZW1BY2Nlc3NvciYKICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8c3RkOjppbnZva2Vf
cmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpTQ2xhc3MmLCBKU0M6OlByb3BlcnR5TmFtZT4+
KSB7CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSBFeGNlcHRpb25Pcjx0eXBlbmFtZSBJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OwogCi0gICAgICAgIHJldHVybiBbaW5uZXJJdGVtQWNj
ZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+KGlubmVySXRlbUFjY2Vzc29y
KV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAgICAgICByZXR1cm4gW2lubmVySXRlbUFjY2Vz
c29yID0gc3RkOjpmb3J3YXJkPElubmVySXRlbUFjY2Vzc29yPihpbm5lckl0ZW1BY2Nlc3Nvcild
IChKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+
IHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gewogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBp
bm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJu
VHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBz
dGF0aWMgZGVjbHR5cGUoYXV0bykgdmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5j
dG9yKElubmVySXRlbUFjY2Vzc29yJgogICAgIH0gZWxzZSB7CiAgICAgICAgIHVzaW5nIFJldHVy
blR5cGUgPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKLSAgICAgICAg
cmV0dXJuIFtpbm5lckl0ZW1BY2Nlc3NvciA9IHN0ZDo6Zm9yd2FyZDxJbm5lckl0ZW1BY2Nlc3Nv
cj4oaW5uZXJJdGVtQWNjZXNzb3IpXSAoSlNDbGFzcyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDxSZXR1cm5UeXBlPiB7CisgICAgICAgIHJl
dHVybiBbaW5uZXJJdGVtQWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+
KGlubmVySXRlbUFjY2Vzc29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgLT4gc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiB7CiAgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IGlubmVySXRlbUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICBpZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyBJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0QW55LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRBbnkuaAppbmRleCBmYmExYzA5ZWFlN2YyYzY3ZDcxYWY0ZWY0NjM4YjRhODkyNWQx
NjQ2Li4xOWQ1ZmE5NGYzMGE5OWU0MzM0YzhhOWNlYjMxMzI2NjU2NGRiNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaApAQCAtNjQsNyArNjQsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExBbnk+IHsKIHRlbXBsYXRlPD4gc3Ry
dWN0IFZhcmlhZGljQ29udmVydGVyPElETEFueT4gewogICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFt
ZSBJRExBbnk6OkltcGxlbWVudGF0aW9uVHlwZTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxJdGVt
PiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEVudW1lcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRFbnVtZXJhdGlv
bi5oCmluZGV4IDY0MmUwNmY2MWY2YjZlNzAzMGJhNmY5NzFkNjA2MjUzYWViMTk5ODYuLmQ0NThl
NGFhOGNiM2VlZmU1NDI1ZjNhMGZjMTdmYzA5NTdmMjhiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0RW51bWVyYXRpb24uaApAQCAtMzIsNyAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTcGVjaWFsaXplZCBieSBnZW5lcmF0
ZWQgY29kZSBmb3IgSURMIGVudW1lcmF0aW9uIGNvbnZlcnNpb24uCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBPcHRpb25hbDxUPiBwYXJzZUVudW1lcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpvcHRpb25hbDxUPiBwYXJz
ZUVudW1lcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOwog
CiAvLyBTcGVjaWFsaXplZCBieSBnZW5lcmF0ZWQgY29kZSBmb3IgSURMIGVudW1lcmF0aW9uIGNv
bnZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dEludGVyZmFjZS5oCmluZGV4IDQ4ZWExN2MwZWU3MjZiYjc5YWFlOTMzZDE3NjFiOWRhNDcwMDMz
MDcuLmM2M2FhNzZjOTc4ODU0MDUyNTcyMDJhNjA4M2M4ZTU0M2Q1ZDhlZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCkBAIC05
MSwxMiArOTEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVyPElE
TEludGVyZmFjZTxUPj4gewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhcmlhZGljQ29u
dmVydGVyPElETEludGVyZmFjZTxUPj4gewogICAgIHVzaW5nIEl0ZW0gPSBzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFQ+OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgYXV0byogcmVzdWx0ID0gQ29udmVydGVyPElETEludGVyZmFjZTxUPj46OmNvbnZlcnQobGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxJdGVtPiB7
ICpyZXN1bHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SXRlbT4geyAqcmVzdWx0
IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0VW5pb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFVuaW9uLmgKaW5kZXggYTMyMzY2YzkzOTBmZjEyNTBhMjNlNmU0ZWEzMWNhZTVmMWY0ZDBl
Ni4uMDc2MjExYTc2ZTRhMzdhODU0ZGRkOWUwNjg1YTcxYzY4MzIyZWFlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC00Miw3ICs0Miw3
IEBAIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyOwogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJu
VHlwZT4KIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIHRydWU+IHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBn
ZXQoVCYmIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+IGdldChU
JiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gUmV0dXJuVHlwZShzdGQ6OmZvcndhcmQ8
VD4odmFsdWUpKTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFJl
dHVybmVyPFJldHVyblR5cGUsIHRydWU+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+
CiBzdHJ1Y3QgQ29uZGl0aW9uYWxSZXR1cm5lcjxSZXR1cm5UeXBlLCBmYWxzZT4gewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJldHVyblR5cGU+IGdldChU
JiYpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gZ2V0KFQmJikKICAgICB7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCBz
dHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5
cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwg
VCwgdHJ1ZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlKENvbnZlcnRlcjxUPjo6Y29udmVydChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogICAgIH0KQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IENv
bmRpdGlvbmFsQ29udmVydGVyPFJldHVyblR5cGUsIFQsIHRydWU+IHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUgVD4KIHN0cnVjdCBDb25kaXRpb25hbENvbnZlcnRl
cjxSZXR1cm5UeXBlLCBULCBmYWxzZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBl
PiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CkBAIC04MSw3ICs4MSw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFNlcXVlbmNlQ29udmVydGVyOwog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRp
dGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewotICAgIHN0YXRp
YyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU1ZhbHVlIG1ldGhv
ZCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG9iamVjdCwg
SlNDOjpKU1ZhbHVlIG1ldGhvZCkKICAgICB7CiAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlKENv
bnZlcnRlcjxUPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QsIG1ldGhvZCkp
OwogICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252
ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0
dXJuVHlwZSwgVCwgZmFsc2U+IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSkK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0
Q29udmVydGVyPElETFUKICAgICAgICAgLy8gICAgIDIuIElmIHR5cGVzIGluY2x1ZGVzIG9iamVj
dCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBv
YmplY3QgVi4KICAgICAgICAgLy8gICAgICAgICAoRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvYmpl
Y3QgYW5kIHN0ZXAgNC4yKQogICAgICAgICBpZiAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lE
TEludGVyZmFjZTxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgewotICAgICAgICAgICAgT3B0aW9uYWw8
UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldHVy
blR5cGU+IHJldHVyblZhbHVlOwogICAgICAgICAgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8SW50ZXJm
YWNlVHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChyZXR1
cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+
IDogRGVmYXVsdENvbnZlcnRlcjxJRExVCiAgICAgICAgIC8vICAgICAgICAgKEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3Igb2JqZWN0IGFuZCBzdGVwIDkuMikKICAgICAgICAgY29uc3RleHByIGJvb2wg
aGFzVHlwZWRBcnJheVR5cGUgPSBicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMVHlwZWRBcnJh
eTxicmlnYW5kOjpfMT4+Ojp2YWx1ZTsKICAgICAgICAgaWYgKGhhc1R5cGVkQXJyYXlUeXBlKSB7
Ci0gICAgICAgICAgICBPcHRpb25hbDxSZXR1cm5UeXBlPiByZXR1cm5WYWx1ZTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CiAgICAgICAgICAgICBi
cmlnYW5kOjpmb3JfZWFjaDxUeXBlZEFycmF5VHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkgewog
ICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBK
U0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewogICAgIHsKICAgICAgICAgYXV0byBpbmRleCA9
IHZhcmlhbnQuaW5kZXgoKTsKIAotICAgICAgICBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHJldHVy
blZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcmV0dXJuVmFsdWU7
CiAgICAgICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsK
ICAgICAgICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNl
PGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKICAgICAgICAgICAgIGlmIChJOjp2YWx1ZSA9
PSBpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0VmFyaWFkaWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFZhcmlhZGljLmgKaW5kZXggNDQ0MzI1ZjZkN2U3ZDVjNzM4YjQ2Y2M1NTA2N2ZlOGUyYThiOTM5
Yy4uN2Y4ZDg5MzFlNDc2ZjhjNGY5ZWVmODBkNjc1N2YzZmU1ZGU0NTkxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCkBAIC0zNCw3
ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBzdHJ1Y3QgVmFyaWFkaWNDb252
ZXJ0ZXIgewogICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYTNjNmJkYTYzYmZlMGYwYmE2YmI5MWVhNjY5YzgxOWE1
ZDc2ZTY4ZC4uOTE1OWIwN2RlM2VhYjlkZmY3NmJhMzcyYzhiZGU2ZWUyYTI3OGI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAtMTE3LDcgKzExNyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
IAotICAgIE9wdGlvbmFsPHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yPiBtX2l0ZXJhdG9y
OworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I+IG1faXRl
cmF0b3I7CiAgICAgSXRlcmF0aW9uS2luZCBtX2tpbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMzk3ZTI5NDA0N2Rl
ZjRlODY1NzY2YTkyZjNmZTZiN2Y0YjA1ZmJiYy4uMTkzYWE2YzhhYzg5YzdjNWIzNDk3MTc4MDVm
YzgxMjUzZGMyZDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsCiB7CiAgICAgLy8gKDEpIEZpcnN0LCBpbmRleGVkIHByb3BlcnRpZXMuCiAgICAgLy8gSGFu
ZCBvZmYgYWxsIGluZGV4ZWQgYWNjZXNzIHRvIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIHdo
aWNoIHN1cHBvcnRzIHRoZSBpbmRleGVkIGdldHRlci4KLSAgICBpZiAoT3B0aW9uYWw8dW5zaWdu
ZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAg
cmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90KTsKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5oCmluZGV4IDgxY2I5MTBmYWY2Nzk5YTI2ZTFlZTE0ZDRiNjQ1Y2I0
OTc1MDZhMTAuLjY5OWMwZDYxM2I0N2Y5MzU5OTMzMmE2YjE3NzFiNzJhYmRiNmYwODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1
Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNEb2N1bWVudD4gewotICAgIHN0YXRpYyBjb25z
dGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IEpTVHlwZVJhbmdlIHsgc3Rh
dGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0RvY3VtZW50V3JhcHBlclR5cGUpLCBzdGF0aWNf
Y2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRG9jdW1lbnRXcmFwcGVyVHlwZSkgfSB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgSlNU
eXBlUmFuZ2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRG9jdW1lbnRXcmFwcGVy
VHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNEb2N1bWVudFdyYXBwZXJUeXBl
KSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJv
b2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKaW5kZXggMjVhNjgzYzllYzliYjU1MDc1YmZl
YzgwNTJhZmJiNTg5ZjEwNTliMS4uZWM5YjAzMjNhOGNkMjA1ODg0YmJjMDYwYTk0NzU1NjY5ODhi
ZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMgewogCiB0ZW1wbGF0
ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNFbGVtZW50PiB7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgSlNUeXBlUmFu
Z2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRWxlbWVudFR5cGUpLCBzdGF0aWNf
Y2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRWxlbWVudFR5cGUpIH0gfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IEpTVHlwZVJhbmdl
IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0VsZW1lbnRUeXBlKSwgc3RhdGljX2Nh
c3Q8SlNUeXBlPihXZWJDb3JlOjpKU0VsZW1lbnRUeXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9t
KiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20u
aAppbmRleCBlMDNhMGRjNWZkZDE1YTdmZmYwOWRjNWIyMzA1NmNlY2FkYWQzN2NkLi44MjcxYjkz
M2Q4NjcyMjA4MWRjYzQ3YjhjZjI1OTAwMTA4MGY4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Nh
c3RpbmdIZWxwZXJzIHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IEluaGVyaXRzVHJhaXRzPFdlYkNv
cmU6OkpTRXZlbnQ+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdl
PiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNFdmVudFR5cGUp
LCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRXZlbnRUeXBlKSB9IH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0
YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNFdmVudFR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5
cGU+KFdlYkNvcmU6OkpTRXZlbnRUeXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJv
bT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKaW5kZXggMzQ0
Y2U4MTVhYjYzMTQ5ZmZmZTgwODM1MzljMjNjMWFiMjg4ZDZiMS4uZmJkNDY4ZDQ3ZWNhZjI4NzIz
ZDA3NmIyN2U5MWYyZjJiZjE1MGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMg
ewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNOb2RlPiB7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsg
eyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUpLCBzdGF0aWNfY2FzdDxK
U1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUgKyBXZWJDb3JlOjpKU05vZGVUeXBlTWFzaykgfSB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJh
bmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUpLCBzdGF0aWNf
Y2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUgKyBXZWJDb3JlOjpKU05vZGVUeXBlTWFz
aykgfSB9OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6
bWF4KCkgPT0gdHlwZVJhbmdlLT5sYXN0KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgog
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20qIGZyb20pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybUN1c3RvbS5jcHAKaW5kZXggZDYyYTY5ODc1ZjRjN2NhZDhjODVkMWNmYTkwNmM2MGRm
Yjc0N2IzMS4uOWIwY2Q1NDM4N2E4ZTI5OWUzYWE4NjdkYjZkNDgwNTc5ZTJhOWRmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm1D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtQ3VzdG9tLmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1ZhbHVlIEpTUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsTwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwganNVbmRlZmluZWQoKSk7
CiAKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLmFyZ3Vt
ZW50KDEpOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJRDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBrZXlJRDsKICAgICBpZiAoIWFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50MS52YWx1ZSgpLmlzQmlnSW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChhcmd1bWVudDEudmFsdWUoKS5hc0hlYXBCaWdJbnQoKS0+bGVuZ3RoKCkgPiAx
KSB7CkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUgSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNl
dEVuY3J5cHRpb25LZXkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBrZXlJRCA9IEpTQmlnSW50Ojp0b0JpZ1VJbnQ2NChhcmd1bWVudDEu
dmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAga2V5SUQgPSBPcHRpb25hbDxD
b252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5z
aWduZWRMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIGtleUlEID0gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRM
b25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICB9CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBqc1VuZGVmaW5lZCgpKTsKICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxOTIxMDVjMzE5ZjViYzkwMmVjZDYzNGI2Mjg5Yjhj
ODNjMGYzOWFkLi4xYTM1ZmRjNzRmMDEyMTVmOGJjZTI5OTBhYWZhMjliMzVlNmFiNzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dD
dXN0b20uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wg
SlNSZW1vdGVET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHNsb3QpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1JlbW90ZURPTVdpbmRvdyo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggMGQzNWIwNzMzOWQ1ZGE2N2FiNzdjYjg3MTIzODY1
ZWZmN2JhNjA2OC4uOTEzYTZmMTVjMTY1NDVkYTQyODMwZGZjMzVjZTg5NWQxMDhjMTllOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVh
bTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleAogICAgIHJldHVybiBjcmVhdGUoZ2xv
YmFsT2JqZWN0LCAqanNDYXN0PEpTUmVhZGFibGVTdHJlYW0qPihvYmplY3QpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGludm9rZVJlYWRhYmxlU3RyZWFtRnVu
Y3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmd1bWVudHMpCitzdGF0aWMgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBpbnZva2VSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYgaWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciYgYXJndW1lbnRzKQogewogICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtOTEs
NyArOTEsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5r
JiBzaW5rKQogICAgIGludm9rZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJpdmF0ZU5hbWUsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKIH0KIAot
T3B0aW9uYWw8c3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVh
bT4+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJlZjxS
ZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+PiBSZWFkYWJsZVN0cmVhbTo6dGVl
KCkKIHsKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKm1fZ2xvYmFsT2JqZWN0Owog
ICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDdjYWM3MjNjZjA2ZDlmOTRhOTE2ZDAwZGQ3Njhi
NjFiMDlhNDJlNGEuLmJjMWM3M2I3Y2ZlZjMxN2M4MTUxZjc4NDQyYmI4NDVhMTJkZjQ3YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1
cmJlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIAotICAgIE9wdGlvbmFs
PHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBSZWY8UmVhZGFibGVTdHJlYW0+Pj4gdGVl
KCk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UmVmPFJlYWRhYmxlU3RyZWFtPiwgUmVm
PFJlYWRhYmxlU3RyZWFtPj4+IHRlZSgpOwogCiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9pZCBw
aXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAppbmRleCA4NGIwZmMwZGIxZjE3NTdj
NzNkMjZhZjAyMjkzNzVkMmEyMDYyOWYxLi4wNmFkODlkNGY2NDNiMGExM2Q4OTA1YjZjYmVlOWIw
YTZlZTE3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZh
U2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBGb3JjZVVz
ZXJHZXN0dXJlIDogYm9vbCB7IE5vLCBZZXMgfTsKIHVzaW5nIEFyZ3VtZW50V2lyZUJ5dGVzTWFw
ID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj47CiAKIHN0cnVjdCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyB7Ci0gICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3RyaW5nJiYgc291
cmNlLCBVUkwmJiBzb3VyY2VVUkwsIFJ1bkFzQXN5bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rp
b24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgRm9yY2VVc2Vy
R2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0
cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJMLCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNB
c3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3Vt
ZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQogICAgICAgICA6IHNvdXJj
ZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1vdmUoc291cmNlVVJM
KSkKICAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uKQpAQCAt
NDcsNyArNDcsNyBAQCBzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAgIHsKICAg
ICB9CiAKLSAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwg
VVJMJiYgc291cmNlVVJMLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1l
bnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFVSTCYmIHNvdXJj
ZVVSTCwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24sIHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRXaXJl
Qnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiAgICAgICAgIDog
c291cmNlKHNvdXJjZSkKICAgICAgICAgLCBzb3VyY2VVUkwoV1RGTW92ZShzb3VyY2VVUkwpKQog
ICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihydW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5Bc0Fz
eW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNGdW5jdGlvbjo6Tm8pCkBAIC01Niw3ICs1Niw3
IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgewogICAgIH0KIAotICAg
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJM
LCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+
JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMoU3RyaW5nJiYgc291cmNlLCBVUkwmJiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNBc3lu
Y0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50
cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJj
ZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1vdmUoc291cmNlVVJMKSkKICAgICAgICAgLCBy
dW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9u
OjpZZXMgOiBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5vKQpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3Qg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAgIFN0cmluZyBzb3VyY2U7CiAgICAgVVJMIHNv
dXJjZVVSTDsKICAgICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOwotICAg
IE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFwPiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRp
b25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOwogICAgIEZvcmNlVXNlckdlc3R1
cmUgZm9yY2VVc2VyR2VzdHVyZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC03Niw3ICs3Niw3IEBAIHN0cnVj
dCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgICAgIGVuY29kZXIgPDwgc291cmNlIDw8
IHNvdXJjZVVSTCA8PCBydW5Bc0FzeW5jRnVuY3Rpb24gPDwgYXJndW1lbnRzIDw8IGZvcmNlVXNl
ckdlc3R1cmU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewog
ICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJj
ZSkpCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVuQXNBc3luY0Z1bmN0aW9uKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJl
Qnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBcmd1bWVudFdpcmVC
eXRlc01hcD4gYXJndW1lbnRzOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50
cykpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRl
eCA0MTMwNzE1YzdhY2QzZDFkMTU2ZTU2OTk5NzVhY2EzN2ZlYjg5N2Y5Li45ZDllNTJkYWVjMGMw
NGVkMjE2MWViODI1NmFmYTY3NzU1MTVlMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CiAgICAgbXV0
YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9j
YWNoZWRTY3JpcHRTdHJpbmc7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2NvbnRhaW5z
T25seUFTQ0lJOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25s
eUFTQ0lJOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkZDY4MTJiZjgwNTMwODA4
ZTI5NThhMGNhYmUwMDgyOGMwYmM3NGZhLi5hZGZiMzhhZWZiZTlmNzI0NzRkYWY3MjdhZmVkYzRh
NmM4NjM4NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjCiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUp
OwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOworICAg
IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlm
IChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWls
czsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNl
cHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCksICZkZXRhaWxzKTsKQEAgLTU5MSw3ICs1
OTEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAjZW5kaWYKIAotICAgIFVzZXJH
ZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0
dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0LCBtX2ZyYW1l
LmRvY3VtZW50KCkpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
cGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSkgOiBzdGQ6Om51bGxvcHQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoIWNh
bkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJDYW5ub3QgZXhl
Y3V0ZSBKYXZhU2NyaXB0IGluIHRoaXMgZG9jdW1lbnQiX3MgfSk7CkBAIC02NTksNyArNjU5LDcg
QEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXQKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwuc3RyaW5nKCksIHNvdXJjZUNv
ZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsKICAg
ICBkbyB7CiAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6cHJv
ZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIs
IGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDAwMDg3NDk5MDc2MjM5MjBlMWJhMzhkM2Y0YjExNmY5NmNiNjQ3YTUuLjVhNTBmZmQxM2Y1MDlj
ZWJjMjVjOWU2ZDJhZWMyMzA3OWJmYWQxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjA3MCw3ICsyMDcwLDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KIAotICAgIHN0YXRpYyBEZXNl
cmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRt
YXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJl
c3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2lu
Zz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktF
UlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCkBAIC0yMTQzLDcgKzIx
NDMsNyBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9OwogCi0gICAg
Q2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVy
Q29udGVudHMsIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdT
dG9yZXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyCisgICAgQ2xvbmVEZXNlcmlhbGl6
ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBv
cnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcywgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19J
Tl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZz
Y3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMgPSB7IH0KICNlbmRpZgpA
QCAtMjE4NCw3ICsyMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fdmVyc2lvbiA9IDB4
RkZGRkZGRkY7CiAgICAgfQogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVy
cywgVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3Jlcwor
ICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1
ZmZlckNvbnRlbnRzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlv
bmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwog
I2VuZGlmCkBAIC0yNDQ2LDcgKzI0NDYsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWNoZWRTdHJp
bmdSZWYgbmFtZTsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YShuYW1lKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gb3B0aW9uYWxMYXN0
TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gb3B0aW9uYWxMYXN0TW9k
aWZpZWQ7CiAgICAgICAgIGlmIChtX3ZlcnNpb24gPiA2KSB7CiAgICAgICAgICAgICBkb3VibGUg
bGFzdE1vZGlmaWVkOwogICAgICAgICAgICAgaWYgKCFyZWFkKGxhc3RNb2RpZmllZCkpCkBAIC0z
MDMzLDcgKzMwMzMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRl
ZChtX2xleGljYWxHbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xv
YmFsT2JqZWN0KSwgVDo6Y3JlYXRlKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxET01Qb2ludEluaXQ+IHJlYWRET01Qb2ludEluaXQoKQorICAgIHN0ZDo6b3B0
aW9uYWw8RE9NUG9pbnRJbml0PiByZWFkRE9NUG9pbnRJbml0KCkKICAgICB7CiAgICAgICAgIERP
TVBvaW50SW5pdCBwb2ludDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50LngpKQpAQCAtMzY4Nyw3
ICszNjg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogICAg
IFZlY3RvcjxTdHJpbmc+IG1fYmxvYkZpbGVQYXRoczsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkqIG1fc2hhcmVkQnVmZmVyczsKLSAgICBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBC
YWNraW5nPj4gbV9iYWNraW5nU3RvcmVzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdl
Qml0bWFwQmFja2luZz4+IG1fYmFja2luZ1N0b3JlczsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdl
Qml0bWFwPj4gbV9pbWFnZUJpdG1hcHM7CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5f
V09SS0VSUykKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2Fu
dmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOwpAQCAtMzkyMyw3ICszOTIzLDcgQEAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4
X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBtX21lbW9yeUNvc3QgPSBjb21wdXRlTWVtb3J5
Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBz
aGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNr
aW5nPj4mJiBiYWNraW5nU3RvcmVzCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJ
bWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCAzYTRkOGI3ZWI0ODNjMzFjZjg1OGFiZDNmNjQ3YjNhOTE0ZTYyMTI3Li4xYzc1
NDVlY2I1NzEzOTNmMjg1ODM2MGFkYzAxZThjODk4ZTY1MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTIxLDcgKzEy
MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9y
PE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcworICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVy
cywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3Rv
cmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQog
I2VuZGlmCkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dW5zaWduZWQg
Y2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheTsKLSAgICBW
ZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4gbV9iYWNraW5nU3RvcmVzOworICAg
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IG1fYmFja2luZ1N0b3Jl
czsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdEZldGNoZXIuaAppbmRleCBlNzUyMzIwNjUxNTY5ZDFiOGE5MWY3ZGUyMmY1YjVh
Y2I3OTNjNDZkLi4zZDYwOWRjYWU3MThlOWJjNmY4ZjQxNGYwMmJjM2Q2NzQ0ZDI4MzU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRGZXRjaGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RmV0Y2hlci5oCkBA
IC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzTG9hZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0xvYWRlZDsgfQotICAgIE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpF
cnJvcj4gZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgICAgc3RkOjpvcHRpb25h
bDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsg
fQogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0NhbmNlbGVkOyB9
CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlS2V5LmdldCgpOyB9CiAgICAgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgUmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpF
bXB0eVN0cmluZyB9OwogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV9tb2R1bGVLZXk7
CiAgICAgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwotICAgIE9wdGlv
bmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExv
YWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiYTNm
NGM1NTgyZGEyMWE5YzY3MTI0YmRlNDY5NmMwMjMwZmQyN2ExLi4yM2ZlN2M1MzgyMGI2ZTgzOTQ5
MzMxODA4NjI4NWNkNzNjZGM1OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgc3ViIEdl
bmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAjIEZJWE1FOiBDaGFu
Z2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCYuCiAgICAgIyBGSVhNRTog
Q29uc2lkZXIgdXNpbmcgdG9TdHJpbmdPck51bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcg
ZmFzdGVyLgogICAgICMgRklYTUU6IENvbnNpZGVyIGZpbmRpbmcgYSBtb3JlIGVmZmljaWVudCB3
YXkgdG8gbWF0Y2ggYWdhaW5zdCBhbGwgdGhlIHN0cmluZ3MgcXVpY2tseS4KLSAgICAkcmVzdWx0
IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlRW51bWVyYXRpb248JGNs
YXNzTmFtZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpXG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwkY2xhc3NO
YW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKVxuIjsKICAgICAkcmVzdWx0IC49ICJ7XG4iOwog
ICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
JmxleGljYWxHbG9iYWxPYmplY3QpO1xuIjsKICAgICBmb3JlYWNoIG15ICR2YWx1ZSAoQHskZW51
bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIHN1YiBHZW5lcmF0ZUVu
dW1lcmF0aW9uSGVhZGVyQ29udGVudAogCiAgICAgJHJlc3VsdCAuPSAiJHtleHBvcnRNYWNyb31T
dHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoJGNsYXNzTmFtZSk7XG4iOwogICAgICRy
ZXN1bHQgLj0gInRlbXBsYXRlPD4gJHtleHBvcnRNYWNyb31KU0M6OkpTU3RyaW5nKiBjb252ZXJ0
RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCAkY2xhc3NOYW1lKTtcblxuIjsK
LSAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICR7ZXhwb3J0TWFjcm99T3B0aW9uYWw8JGNsYXNz
TmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlKTtcbiI7CisgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAke2V4cG9ydE1h
Y3JvfXN0ZDo6b3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1l
PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTtcbiI7CiAgICAgJHJlc3VsdCAu
PSAidGVtcGxhdGU8PiAke2V4cG9ydE1hY3JvfWNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRp
b25WYWx1ZXM8JGNsYXNzTmFtZT4oKTtcblxuIjsKICAgICAkcmVzdWx0IC49ICIjZW5kaWZcblxu
IiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgCkBAIC02MTM3LDggKzYxMzcsOCBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJGFyZ3VtZW50LT50eXBlKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRk
ZWZhdWx0VmFsdWUgPSAibnVsbHB0ciI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gIk9wdGlvbmFsPENvbnZlcnRl
cjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJuVHlwZT4oKSI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAkbmF0aXZlVmFsdWVDYXN0RnVuY3Rpb24gPSAiT3B0aW9uYWw8Q29udmVydGVyPCRhcmd1
bWVudElETFR5cGU+OjpSZXR1cm5UeXBlPiI7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGVm
YXVsdFZhbHVlID0gInN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPCRhcmd1bWVudElETFR5cGU+OjpS
ZXR1cm5UeXBlPigpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYXRpdmVWYWx1ZUNhc3RG
dW5jdGlvbiA9ICJzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0
dXJuVHlwZT4iOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIkVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudCR7YXJndW1lbnRJbmRleH0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4
KTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4IDBmODg2Y2JlNDE0NThiNzliZGRk
MjA5ZTBkNWY4Y2M0ZmVlYTk4MWUuLjhlNTc5ZDMwZWNmZGJlZDM3YTc0ZGEyNmY2OTZlMDEzOGMy
YjczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1
bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byB2YXJpYW50
T3B0aW9uYWxBcmcgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+Pjo6
UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExCb29sZWFuLCBJ
RExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURM
Qm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8gdmFyaWFudE9wdGlvbmFsQXJnID0gYXJndW1l
bnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVu
aW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oKSA6
IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJ
RExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJ
RExGbG9hdCwgSURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlv
bihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyBU
ZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnRPcHRp
b25hbEFyZykgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCBj
NDViNTg5Y2Y3ZDgzYjlhZjhhMjE0YzRmY2E1MjJkMDE5Y2ViOWNlLi5mMGQ4ZTcxZDQ0MmQyZGNm
MzEzZWRlZTcxNTZiNjAyZmY2MmZhMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4g
T3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RDYWxsYmFja0ludGVyZmFj
ZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gInZhbHVlMSIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCmluZGV4IGE3ODU4ZjkxMGYzMDVlNzJkMGQzZmU2ZTk1
YjllMDc3YmNhN2VlNDcuLjIyZmVmYmMyM2M3YTM1MWU5Nzg0NmVlMDNjZTQ1MmZhZTM4ODcxN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw3IEBAIGlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tJbnRlcmZhY2UqIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTKCppbXBsCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpFbnVtKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVt
PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpv
cHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVz
dENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+KCk7CiAKIHRlbXBsYXRlPD4gVGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RDYWxsYmFja0ludGVy
ZmFjZTo6RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkVudW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcAppbmRleCA2MGExMmNlNGQ1NjVmNGU3
OGYxOTU1ZWY2OTMwNjEzMDgwMTg2YjE0Li4xNmRjNGQxMWQwMjRkZDhiOWZiNzNjZDZmNmM0MTBi
MDBhYjM1NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdERl
ZmF1bHRUb0pTT05FbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4o
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1w
bGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdERlZmF1bHRUb0pTT05FbnVtPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRv
V1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0g
IkVudW1WYWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaAppbmRleCAzZmFl
MDA3ZjY2NjcyMDEzZjYzY2EwOWE2ZjEwNWYxOGViOTQyNzUwLi5lMWE0ZmNjNmIyMTlkODcyMDZi
ZGY2MGY1ODcxNmU2ZmE0NDg1MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0u
aApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoVGVzdERlZmF1bHRUb0pTT05FbnVtKTsKIHRlbXBsYXRlPD4gSlND
OjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
VGVzdERlZmF1bHRUb0pTT05FbnVtKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0RGVmYXVs
dFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnVtPihKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25h
bDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pT
T05FbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4g
Y29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0RGVmYXVsdFRvSlNPTkVu
dW0+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9i
amVjdC5jcHAKaW5kZXggYTUyZWM3MGE3MTAzOTYzYjdkMWJiM2M2MGEyYjA1ZmE2OGNlYzA2My4u
Y2MxMzQzYmY4YzVmMDQwOTBlNTM2YTZkODA1MjViMTc2MTAwNTZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlv
bl9vdmVybAogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8VGVzdE9iaj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlTmFtZSIsICJvdmVybG9hZGVkTmFtZXNw
YWNlT3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKLSAgICBhdXRvIGxvbmdBcmcgPSBh
cmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExv
bmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFs
dWUoKSkpOworICAgIGF1dG8gbG9uZ0FyZyA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVk
KCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExv
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBUZXN0TmFtZXNwYWNlT2JqZWN0Ojpv
dmVybG9hZGVkTmFtZXNwYWNlT3BlcmF0aW9uKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25n
QXJnKSkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGIwYjQ4ZGEyNGI0MTA4NDAwNGU5NjcyYThiNDJl
OTZjZDY0MzBhZWQuLjJhYmY1MThiMjNiODY4MWZkMTI0N2YxZDIxZjJhNDRjNzA4ODVmZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
RW51bVR5cGU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUu
dG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5p
c0VtcHR5KCkpCkBAIC0xODMsNyArMTgzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUu
dG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5p
c0VtcHR5KCkpCkBAIC0yMTksNyArMjE5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRl
RW51bU5hbWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwYXJzZUVu
dW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUu
dG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9
PSAiZW51bVZhbHVlMSIpCkBAIC0yNTEsNyArMjUxLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bUE+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQSIp
CkBAIC0yODMsNyArMjgzLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0
aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9u
YWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8
PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6
OkVudW1CPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQiIpCkBAIC0zMTUsNyArMzE1
LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2Fj
aGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhl
bnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51
bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQyIpCkBAIC0zNDcsNyArMzQ3LDcgQEAgdGVtcGxhdGU8
PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVl
KSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJh
dGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJxdWljayIpCkBAIC0zNzksNyArMzc5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpT
aXplPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJzbWFsbCIpCkBA
IC00MTEsNyArNDExLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNl
PihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3Rl
bXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJo
aWdoIikKQEAgLTU5MjksNyArNTkyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxFCiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGVudW1BcmcgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1UeXBlPj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExFbnVtZXJhdGlv
bjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVu
dW1UeXBlPigpKTsgfSkpOworICAgIGF1dG8gZW51bUFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8
SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhXVEZNb3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0KQEAg
LTYzODgsNyArNjM4OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxBCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKLSAgICBhdXRvIG9wdCA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBP
cHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252
ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBvcHQgPSBhcmd1bWVudDAu
dmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJu
VHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFy
ZyhXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQpAQCAtNjQyOSw3ICs2NDI5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhv
ZFdpdGhOb25PcHRpb24KICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gb3B0ID0g
YXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExM
b25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJu
VHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZh
bHVlKCkpKTsKKyAgICBhdXRvIG9wdCA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6
b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RG
TW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQpAQCAtNjQ1MiwxMCArNjQ1Miwx
MCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fbWV0aG9kV2l0aE5vbk9wdGlvbgogICAgIGF1dG8gbm9uT3B0ID0gY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0g
ICAgYXV0byBvcHQxID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFs
PENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIG9wdDEgPSBhcmd1bWVudDEudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVy
blR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4o
Y29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDIpOwotICAgIGF1dG8gb3B0MiA9IGFyZ3VtZW50Mi52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKSk7CisgICAgYXV0byBvcHQyID0gYXJndW1l
bnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExv
bmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
Mi52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdDEp
LCBXVEZNb3ZlKG9wdDIpKTsgfSkpKTsKIH0KQEAgLTY3MDcsNyArNjcwNyw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoT3B0aW9uYWxMCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIG51bWJlciA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9u
Z0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmdMb25nPjo6
UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBudW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1
cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1cm5U
eXBlPihjb252ZXJ0PElETExvbmdMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CkBAIC02NzQzLDcgKzY3NDMsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVQogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBu
dW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVy
dGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVy
dGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuc2lnbmVk
TG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAg
IGF1dG8gbnVtYmVyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0
aW9uYWw8Q29udmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogc3Rk
OjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNv
bnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0pKSk7CiB9CkBAIC02ODE1LDcg
KzY4MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsQgogICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0g
ICAgYXV0byBiID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENv
bnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGIgPSBhcmd1bWVudDAudmFs
dWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMQm9vbGVhbj46
OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbEJvb2xlYW4oV1RGTW92ZShiKSk7IH0pKSk7CiB9CkBAIC02ODY5LDcgKzY4NjksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aE9wdGlvbmFsTwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBhID0g
YXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExP
YmplY3Q+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMT2JqZWN0Pjo6UmV0dXJuVHlwZT4oKSA6
IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETE9iamVjdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8
SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3Zl
KGEpKTsgfSkpKTsKIH0KQEAgLTczMDIsNyArNzMwMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9k
MkJvCiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxU
ZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2Jq
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMSk7Ci0gICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRl
ZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9w
dGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIGxvbmdB
cmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252
ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0K
QEAgLTc1MzIsNyArNzUzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kV2l0CiAgICAgYXV0byBv
YmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqQXJnIiwg
IlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJU
ZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBsb25nQXJnID0gYXJndW1lbnQxLnZhbHVlKCku
aXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4o
KSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExM
b25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRv
IGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25h
bDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcpLCBX
VEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KQEAgLTc5MDksNyArNzkwOSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2Ns
YXNzTWV0aG9kV2l0aE9wCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gYXJnID0gYXJndW1lbnQwLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKKyAgICBh
dXRvIGFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVy
dGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFy
ZykpKSkpOwogfQpAQCAtODE0Miw3ICs4MTQyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbldpdGhPcHRpb24K
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gb3B0aW9uYWxVbmlvbiA9IGFyZ3VtZW50MC52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9N
U3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+
KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5j
ZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248
SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBvcHRpb25hbFVu
aW9uID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29u
dmVydGVyPElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVk
RG91YmxlPj4+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5p
b248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExV
bnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
KCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxV
bmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFsVW5pb24pKTsgfSkpKTsKIH0KQEAgLTg0NzQs
NyArODQ3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1bmN0aW9uCiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
LSAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElE
TExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8gYSA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252
ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RG
TW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0pKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNWE1YzI1Njdh
YTM0NDU3MDY3NDU4MGZlZTg5MzZjODkxYTExZWE0ZS4uYmUyZjM3M2M2Mjk1NWRlZTk5YmJjNWY0
ZmI1NGQ0ZjcxMzg0YzEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTE4LDE5ICsxMTgsMTkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RPYmo+IHsKIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpFbnVtVHlwZSk7CiB0ZW1wbGF0ZTw+
IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIFRlc3RPYmo6OkVudW1UeXBlKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpF
bnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9i
ajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpOwogCiBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6T3B0aW9uYWwpOwogdGVtcGxhdGU8PiBK
U0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBUZXN0T2JqOjpPcHRpb25hbCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0
aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6
Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpPcHRpb25hbD4oKTsKIAogU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEFsdGVybmF0ZUVudW1OYW1lKTsKIHRlbXBsYXRlPD4gSlND
OjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
QWx0ZXJuYXRlRW51bU5hbWUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1O
YW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxBbHRlcm5hdGVF
bnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKQEAgLTEzOCw3ICsxMzgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6RW51bUEpOwogdGVtcGxhdGU8PiBKU0M6OkpT
U3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBUZXN0
T2JqOjpFbnVtQSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpT
VmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxU
ZXN0T2JqOjpFbnVtQT4oKTsKIAogI2VuZGlmCkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxhdGU8
PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigp
OwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RPYmo6OkVudW1CKTsKIHRl
bXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgVGVzdE9iajo6RW51bUIpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RP
Ymo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2Jq
OjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUI+KCk7CiAKICNlbmRpZgpAQCAtMTU4LDcgKzE1
OCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxU
ZXN0T2JqOjpFbnVtQj4oKTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0
T2JqOjpFbnVtQyk7CiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlv
blRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFRlc3RPYmo6OkVudW1DKTsKIAotdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVt
Qz4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6
b3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1DPigpOwogCiAjZW5k
aWYKQEAgLTE2NiwxOSArMTY2LDE5IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQz4oKTsKIFN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhUZXN0T2JqOjpLaW5kKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6S2lu
ZCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlv
bjxUZXN0T2JqOjpLaW5kPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3Rl
bXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6OktpbmQ+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxh
dGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OktpbmQ+
KCk7CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpTaXplKTsK
IHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6U2l6ZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2Jq
OjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RPYmo6OlNpemU+KCk7CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhUZXN0T2JqOjpDb25maWRlbmNlKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6
Q29uZmlkZW5jZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25m
aWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3Rl
ZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNvbmZpZGVuY2U+KCk7CiAKIHRlbXBsYXRlPD4g
VGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlv
bmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4IDhhZTg5MzNlYmMzY2Y1N2E4NGJkYWM2M2Y4
MWFhOTA5MTZlNjcxZjEuLmMxZWMzMGVhMWFhMDkxYzQ2NTZkMmFkZGI4MjBlMGJlMGY0NzJmNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rp
b25hcnlGaWxlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6
OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3Rh
bmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0
byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9u
YXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZURpY3Rpb25hcnkuaAppbmRleCBkYzFiNGUzYmU4ZDdiNzAxOTU2MDMwNmViNjJlNDI2
MDQ4ZDlhZjE2Li41MmExOTQ5NzZlMmFlODEwNGY0ZGNhODFkNDIzODQxOGE2OTY3MGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZURpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaApAQCAtMzUsNyArMzUsNyBAQCBX
RUJDT1JFX0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTRE9NRwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxl
KTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25l
RGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3Rk
OjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0
aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVu
dW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZp
bGU+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5k
YWxvbmVFbnVtZXJhdGlvbi5jcHAKaW5kZXggNGE3YTkxYTU0NTk1MDBkODE0YmQ5NWVkNGZhOTVl
MGZiMTVmZWMwOC4uNDZhNjI0NDlmNTZhNDYwMGFiMTZmM2JhMTY0NTg4MjZhOWI3YzIxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2Fj
aGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhl
bnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxv
bmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9u
PihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3Rl
bXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUg
PSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJlbnVtVmFsdWUxIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24uaAppbmRleCBlMDNkNTFiOTNkNjM4YTdkZDhjZjlhNDU5OTk3OTUyM2E5ZDRkZTI2Li45
NGQ1N2YwMDZmOGU5Y2NjM2ZiNWRhOTljN2NkZmU3OTJiYjkwMTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1l
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0
aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbik7
CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+
KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDU1
YWNhODBlY2YxMWFmYzJiYjgyMDYxMmY1MmIyMjVkMWU4ZjQyNzcuLmE4MTJiMTIzYzk5ZTUzMjY1
OWM5ZWNlNjQ2YjBlOWU5OWJmZDcyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNTE5LDcg
KzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uX3NldFNoYWRvd0JvZHkoCiAgICAgYXV0byBjb2xvciA9IGFyZ3Vt
ZW50My52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQzLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50NCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoNCk7Ci0gICAg
YXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxD
b252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8
Q29udmVydGVyPElETFVucmVzdHJpY3RlZEZsb2F0Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExV
bnJlc3RyaWN0ZWRGbG9hdD4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50NC52YWx1ZSgp
KSk7CisgICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+
KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVy
blR5cGU+KGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDQudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwuc2V0U2hh
ZG93KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1ciksIFdURk1v
dmUoY29sb3IpLCBXVEZNb3ZlKGFscGhhKSk7IH0pKSk7CiB9CkBAIC02NjIsNyArNjYyLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25fZnVuY1dpdGhDbGFtcEIKICAgICBhdXRvIGFyZzEgPSBjb252ZXJ0PElETENsYW1w
QWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gYXJnMiA9IGFyZ3VtZW50MS52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVuc2ln
bmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExDbGFt
cEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETENs
YW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MS52YWx1ZSgpKSk7CisgICAgYXV0byBhcmcyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETENsYW1wQWRhcHRvcjxJRExV
bnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRl
cjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+OjpSZXR1cm5UeXBlPihjb252
ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5m
dW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdURk1vdmUoYXJnMikpOyB9KSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDAwZTYyNjVjOGE0MzJhYzdk
Yjc0MzdkOTJiZjQ2ZWM3MzEwNTUzZTQuLjAzMjY0NGM0ZTU4MTkyNGNiN2QwZDcyMTc4NmY2YmU5
NGRlMTViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEcKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRo
aXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKSwK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9v
bCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
LSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJy
YXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAxNjQzMjkwNDkxOGU3M2NlMGNmYzBjOWViNDY0ZTYx
OGViNDNjODJlLi5lZjUyY2JiZThlZDU1ZWVkMmM5ODcxNjg0OWYxZDE0MTczN2E4OGYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVj
dG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gZ2V0RG9tYWluTGlzdChKU0dsb2JhbE9iamVj
dCYgbAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBn
ZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpT
VmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFncyYgZmxhZ3MsIE9wdGlvbmFsPE9wdGlvblNl
dDxUPj4gKCpzdHJpbmdUb1R5cGUpKFN0cmluZ1ZpZXcpKQorc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBnZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0
IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFncyYgZmxhZ3MsIHN0ZDo6b3B0aW9uYWw8
T3B0aW9uU2V0PFQ+PiAoKnN0cmluZ1RvVHlwZSkoU3RyaW5nVmlldykpCiB7CiAgICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIGlzVmFsaWRDU1NTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogICAgIHJldHVybiAhIXBhcnNlci5wYXJzZVNlbGVj
dG9yKHNlbGVjdG9yKTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0
ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCitzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpv
cHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRBY3Rpb24oSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTT2JqZWN0JiBydWxlT2JqZWN0KQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIEV4cGVj
dGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0dsb2Jh
bE9iamVjdCYgbGUKICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVy
cm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwogfQogCi1zdGF0aWMgRXhwZWN0ZWQ8T3B0aW9u
YWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRSdWxlKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU09iamVjdCYgcnVsZU9iamVj
dCkKK3N0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPENvbnRlbnRFeHRlbnNpb25SdWxlPiwg
c3RkOjplcnJvcl9jb2RlPiBsb2FkUnVsZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCiB7CiAgICAgYXV0byB0cmlnZ2VyID0g
bG9hZFRyaWdnZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgcnVsZU9iamVjdCk7CiAgICAgaWYgKCF0
cmlnZ2VyLmhhc192YWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oCmluZGV4IGU3MmMxNDQ3YWQ2ZjNi
MjAzOGMyYjE4ZTQ5OWYzN2U5NWJjYTA1NWUuLjBmNDAzYzJkMDg1NWUzZjM2YTZjODMyZjQwNjc3
MTNhZjA2ZDdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RSZXN1bHRzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0
IENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgewogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKICAgICBzdHJ1Y3QgU3VtbWFyeSB7
CiAgICAgICAgIGJvb2wgYmxvY2tlZExvYWQgeyBmYWxzZSB9OwpAQCAtNTYsNyArNTYsNyBAQCBz
dHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyB7CiAgICAgICAgIGJvb2wgaGFzTm90aWZpY2F0
aW9ucyB7IGZhbHNlIH07CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8U3VtbWFyeT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3VtbWFyeT4gZGVjb2RlKERl
Y29kZXImKTsKICAgICB9OwogICAgIHVzaW5nIENvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIgPSBT
dHJpbmc7CiAKQEAgLTc2LDE0ICs3NiwxNCBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0
cyB7CiAgICAgICAgIGVuY29kZXIgPDwgc3VtbWFyeTsKICAgICAgICAgZW5jb2RlciA8PCByZXN1
bHRzOwogICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
Q29udGVudFJ1bGVMaXN0UmVzdWx0cz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFJ1bGVMaXN0
UmVzdWx0cz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25h
bDxTdW1tYXJ5PiBzdW1tYXJ5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN1bW1hcnk+IHN1bW1h
cnk7CiAgICAgICAgIGRlY29kZXIgPj4gc3VtbWFyeTsKICAgICAgICAgaWYgKCFzdW1tYXJ5KQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFJ1bGVMaXN0SWRlbnRpZmllciwgUmVzdWx0Pj4+
IHJlc3VsdHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50
UnVsZUxpc3RJZGVudGlmaWVyLCBSZXN1bHQ+Pj4gcmVzdWx0czsKICAgICAgICAgZGVjb2RlciA+
PiByZXN1bHRzOwogICAgICAgICBpZiAoIXJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTAzLDI0ICsxMDMsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmMK
ICAgICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlvbnM7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0czo6UmVzdWx0OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikgLT4gT3B0aW9uYWw8UmVzdWx0PgordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gYXV0
byBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KSAtPiBzdGQ6Om9wdGlvbmFsPFJlc3VsdD4KIHsKLSAgICBPcHRpb25hbDxib29sPiBibG9ja2Vk
TG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJsb2NrZWRMb2FkOwogICAgIGRlY29kZXIg
Pj4gYmxvY2tlZExvYWQ7CiAgICAgaWYgKCFibG9ja2VkTG9hZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBtYWRlSFRUUFM7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBtYWRlSFRUUFM7CiAgICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7CiAg
ICAgaWYgKCFtYWRlSFRUUFMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBibG9ja2VkQ29va2llczsKICAgICBkZWNvZGVyID4+IGJsb2NrZWRDb29raWVzOwogICAgIGlm
ICghYmxvY2tlZENvb2tpZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0g
ICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5vdGlmaWNhdGlvbnM7CisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gbm90aWZpY2F0aW9uczsKICAgICBkZWNvZGVyID4+IG5vdGlm
aWNhdGlvbnM7CiAgICAgaWYgKCFub3RpZmljYXRpb25zKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMTQxLDI0ICsxNDEsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpTdW1tYXJ5OjplbmNvZGUoRW5jb2RlciYgZW4KICAg
ICBlbmNvZGVyIDw8IGhhc05vdGlmaWNhdGlvbnM7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0czo6U3VtbWFyeTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpIC0+IE9wdGlvbmFsPFN1bW1hcnk+Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBh
dXRvIENvbnRlbnRSdWxlTGlzdFJlc3VsdHM6OlN1bW1hcnk6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFN1bW1hcnk+CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gYmxv
Y2tlZExvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBibG9ja2VkTG9hZDsKICAgICBkZWNv
ZGVyID4+IGJsb2NrZWRMb2FkOwogICAgIGlmICghYmxvY2tlZExvYWQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOwogICAgIGRlY29kZXIgPj4gbWFkZUhUVFBT
OwogICAgIGlmICghbWFkZUhUVFBTKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRDb29raWVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBibG9ja2VkQ29va2llczsKICAg
ICBpZiAoIWJsb2NrZWRDb29raWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPGJvb2w+IGhhc05vdGlmaWNhdGlvbnM7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBoYXNOb3RpZmljYXRpb25zOwogICAgIGRlY29kZXIgPj4gaGFzTm90aWZpY2F0aW9u
czsKICAgICBpZiAoIWhhc05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RG
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKaW5k
ZXggNjQ4M2ExZjFiM2E5MWYyY2IxM2QzYTg4ZWEzZDVkYTE5ODJlYjRjMS4uYjA0YjUyMWQzYWRl
ZDEzYWFkOWM3NTc4MjNiZDA1MjI5MTYwMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRTZXQmIG5m
YU5vZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+
aW1wbCgpLT5tX2RmYU5vZGVJZDsKIH0KIAotT3B0aW9uYWw8REZBPiBORkFUb0RGQTo6Y29udmVy
dChORkEmJiBuZmEpCitzdGQ6Om9wdGlvbmFsPERGQT4gTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiYg
bmZhKQogewogICAgIGF1dG8gc2VyaWFsaXplZE5GQSA9IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6
ZShXVEZNb3ZlKG5mYSkpOwogICAgIGlmICghc2VyaWFsaXplZE5GQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCmluZGV4IDlmZDNhMWQzZDk5Njc1MDI5NDZk
YjdhNzEyY2MzYjA0MzMwZTZkNGEuLjJmNzJhYTAwM2Y4NzkyODllNjVjOGEwMzBlNjk3MWM2Mzdl
ZDQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRv
REZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaApA
QCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgTkZBOwogLy8gTkZBVG9ERkEgcHJvdmlkZXMgYSB3YXkg
dG8gYnVpbGQgYSBERkEgY29ycmVzcG9uZGluZyB0byBhIE5GQS4KIGNsYXNzIE5GQVRvREZBIHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8REZBPiBjb252ZXJ0
KE5GQSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxERkE+IGNv
bnZlcnQoTkZBJiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
aW5kZXggNTlkY2RhNmI5MDI5MGRjMTNmMzFhYWRhMGM5ZDlhOTU4Zjk1MTdlZi4uMjgzN2FjZjll
ZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5ZGU2YzVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
Ym9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwg
Y29uc3QgVCYgY29udGFpbmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTZXJp
YWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQorc3RkOjpvcHRp
b25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQog
ewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
CiAgICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJp
YWxpemVkTkZBIiwgZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmgKaW5kZXggN2U5OGIwMjU3NGViOTRlOTFmMjc0MjJhNzYyOTdkMzVj
YjQwNmUwNC4uYTk2OWI1NDM1ZGE4NzViMDk3YjA1ZDNhNzI4MzYzY2QxOGY5MWU3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaApAQCAt
MzcsNyArMzcsNyBAQCBzdHJ1Y3QgTkZBOwogCiBjbGFzcyBTZXJpYWxpemVkTkZBIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gc2VyaWFsaXplKE5GQSYmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkTkZBPiBzZXJpYWxpemUoTkZBJiYp
OwogICAgIFNlcmlhbGl6ZWRORkEoU2VyaWFsaXplZE5GQSYmKSA9IGRlZmF1bHQ7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggNTlmZGNjYjUwNjM3M2FlZDQxODJkYmFi
NjFjZDdkODdhMjJjZWZjMi4uZDg3MjlkMzkwZDkwNzMwYTBlYjdkYjNhOGM5ZjE3MThjODZmN2Ez
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVy
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgICAgICBmYWlsKFVS
TEZpbHRlclBhcnNlcjo6QXRvbUNoYXJhY3Rlcik7CiAgICAgfQogCi0gICAgdm9pZCBhdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gPSBz
dGQ6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9v
bCA9IHRydWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAg
ICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKaW5kZXggODJkZmJj
ZWRkYzI5ZThmYzZiYjIxNDhlOGY4MjQ3ZGZjNmQ3NWJmNS4uOTJjOTBmYmU0MTE0NGFhM2E5OGU1
ZGQwZWUxZGQyZDI0YzYyNzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgpCiAgICAgcGxhdGZvcm1SZWdpc3Rl
ckFsZ29yaXRobXMoKTsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4g
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQor
c3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaAppbmRleCA2Mjg2MDk5NDBkZGQy
NWIxYzBmNjE3OGEyOTMyMDg0ZjRmYzMwZGQ4Li40OWQ3NWIyYWZlZWEyYjk5NTE3MzVjZmI4ODZk
YWQzOGUxN2IyMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5n
bGV0b24oKTsKIAotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyPiBpZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBuYW1lKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4g
Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Kc29uV2Vi
S2V5LmgKaW5kZXggNWFlZDM5YzU1NjFhNzg2M2M4MGRlMzExODE0ZjhhNzhkYmYxODBjZS4uZWVj
MDBkNzQ3ZTZiMDcyMTZkMDliMzhkMDcxMzk0NmI2OTcxN2RjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
SnNvbldlYktleS5oCkBAIC0zNywxMSArMzcsMTEgQEAgc3RydWN0IEpzb25XZWJLZXkgewogICAg
IFN0cmluZyBrdHk7CiAgICAgU3RyaW5nIHVzZTsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWVy
Z2luZyBrZXlfb3BzIGFuZCB1c2FnZXMuCi0gICAgT3B0aW9uYWw8VmVjdG9yPENyeXB0b0tleVVz
YWdlPj4ga2V5X29wczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDcnlwdG9LZXlVc2FnZT4+
IGtleV9vcHM7CiAgICAgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzOwogICAgIFN0cmluZyBh
bGc7CiAKLSAgICBPcHRpb25hbDxib29sPiBleHQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBl
eHQ7CiAKICAgICBTdHJpbmcgY3J2OwogICAgIFN0cmluZyB4OwpAQCAtNTQsNyArNTQsNyBAQCBz
dHJ1Y3QgSnNvbldlYktleSB7CiAgICAgU3RyaW5nIGRwOwogICAgIFN0cmluZyBkcTsKICAgICBT
dHJpbmcgcWk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFJzYU90aGVyUHJpbWVzSW5mbz4+IG90aDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSc2FPdGhlclByaW1lc0luZm8+PiBvdGg7CiAgICAg
U3RyaW5nIGs7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU2VyaWFs
aXplZENyeXB0b0tleVdyYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oCmluZGV4IGQ1ODMxYmQxZjBmMzc4ZjI2ZGI0OWI4NDg3NzM5ZGY0OGVlYThm
YjcuLmYxY2YwMjA1ODZhZWE0OGU2ZGJiYzZkNTIzMGQyMmI0YzNlOGM2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIG9mIHByb3RlY3Rpb24gaXMgbm90IHJlcXVp
cmVkIGJ5IHRoZSBzcGVjIGFzIG9mIDExIERlY2VtYmVyIDIwMTQ6CiAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvV2ViQ3J5cHRvQVBJLyNzZWN1cml0eS1kZXZlbG9wZXJzCiAKLVdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSgp
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRX
ZWJDcnlwdG9NYXN0ZXJLZXkoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRGVmYXVsdFdl
YkNyeXB0b01hc3RlcktleSgpOwogCiBXRUJDT1JFX0VYUE9SVCBib29sIHdyYXBTZXJpYWxpemVk
Q3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCBhMjIyY2QwM2JjNDk4OGRlMWNmNzliOWFmMjAyYzdh
NGU4YWM4ZjIzLi43NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtNDQyLDMyICs0NDIsMzIgQEAg
c3RhdGljIHZvaWQgbm9ybWFsaXplSnNvbldlYktleShKc29uV2ViS2V5JiB3ZWJLZXkpCiAgICAg
d2ViS2V5LnVzYWdlcyA9IHdlYktleS5rZXlfb3BzID8gdG9DcnlwdG9LZXlVc2FnZUJpdG1hcCh3
ZWJLZXkua2V5X29wcy52YWx1ZSgpKSA6IDA7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHJldHVybnMg
YW4gT3B0aW9uYWw8S2V5RGF0YT4gYW5kIHRha2VzIGEgcHJvbWlzZSwgcmF0aGVyIHRoYW4gcmV0
dXJuaW5nIGFuCisvLyBGSVhNRTogVGhpcyByZXR1cm5zIGFuIHN0ZDo6b3B0aW9uYWw8S2V5RGF0
YT4gYW5kIHRha2VzIGEgcHJvbWlzZSwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuCiAvLyBFeGNl
cHRpb25PcjxLZXlEYXRhPiBhbmQgbGV0dGluZyB0aGUgY2FsbGVyIGhhbmRsZSB0aGUgcHJvbWlz
ZSwgdG8gd29yayBhcm91bmQgYW4gaXNzdWUgd2hlcmUKIC8vIFZhcmlhbnQgdHlwZXMgKHdoaWNo
IEtleURhdGEgaXMpIGluIEV4Y2VwdGlvbk9yPD4gY2F1c2UgY29tcGlsZSBpc3N1ZXMgb24gc29t
ZSBwbGF0Zm9ybXMuIFRoaXMKIC8vIHNob3VsZCBiZSByZXNvbHZlZCBieSBhZG9wdGluZyBhIHN0
YW5kYXJkcyBjb21wbGlhbnQgc3RkOjp2YXJpYW50IChzZWUgaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTc1NTgzKQotc3RhdGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86
OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzo6S2V5RGF0YVZhcmlhbnQmJiBrZXlEYXRh
VmFyaWFudCwgUmVmPERlZmVycmVkUHJvbWlzZT4mIHByb21pc2UpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBT
dWJ0bGVDcnlwdG86OktleURhdGFWYXJpYW50JiYga2V5RGF0YVZhcmlhbnQsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiBwcm9taXNlKQogewogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBT
dWJ0bGVDcnlwdG86OktleUZvcm1hdDo6U3BraToKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5
Rm9ybWF0OjpQa2NzODoKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpSYXc6CiAg
ICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGtleURhdGFWYXJpYW50LAotICAgICAgICAgICAg
WyZwcm9taXNlXSAoSnNvbldlYktleSYpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKKyAgICAgICAg
ICAgIFsmcHJvbWlzZV0gKEpzb25XZWJLZXkmKSAtPiBzdGQ6Om9wdGlvbmFsPEtleURhdGE+IHsK
ICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yIH0p
OwogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNvdXJjZSkgLT4gT3B0aW9uYWw8S2V5RGF0YT4g
eworICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNvdXJjZSkgLT4gc3RkOjpvcHRpb25hbDxL
ZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEtleURhdGEgeyBWZWN0b3IgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyU291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3Vy
Y2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgY2Fz
ZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOgogICAgICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihrZXlEYXRhVmFyaWFudCwKLSAgICAgICAgICAgIFtdIChKc29uV2ViS2V5JiB3ZWJLZXkp
IC0+IE9wdGlvbmFsPEtleURhdGE+IHsKKyAgICAgICAgICAgIFtdIChKc29uV2ViS2V5JiB3ZWJL
ZXkpIC0+IHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4gewogICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZUpzb25XZWJLZXkod2ViS2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gS2V5RGF0YSB7IHdl
YktleSB9OwogICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmcHJvbWlzZV0gKGF1dG8mKSAt
PiBPcHRpb25hbDxLZXlEYXRhPiB7CisgICAgICAgICAgICBbJnByb21pc2VdIChhdXRvJikgLT4g
c3RkOjpvcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAppbmRleCA0ZTUyMWQ2MjU3NGZi
ZGYxMzZjOTk3OTU1ZDVhNjgzNmNiOGU3NTU4Li5kZDJkOTBlZWM4MGJhZjQyZWEyY2FkZmYzNGIy
MjUwMmE0NGExZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENy
eXB0b0FsZ29yaXRobUVDREg6OmRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYgcGFyYW1ldGVycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byB1bmlm
aWVkQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVfdCBsZW5ndGgpIG11dGFibGUgeworICAgIGF1dG8gdW5p
ZmllZENhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVfdCBsZW5ndGgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWRlcml2ZWRLZXkpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJh
dGlvbkVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaAppbmRleCAxNGUzNzI3
YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2NDRkNjVhLi45M2ExNWEyZGEzNTFkY2U3Mjc0MzM4
MTk3ZDI2NjMxMDU4NWY3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAKICAgICAvLyBP
cGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGlyZWN0bHkuCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0
IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhj
b25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IENyeXB0b0tleUVDJik7CiAKIHByaXZhdGU6CiAgICAg
Q3J5cHRvQWxnb3JpdGhtRUNESCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3Bw
CmluZGV4IGYyZjg2NmYyZTZjYzg4ZTgzMzU4YTczOTU5MDYwYjRlZGMwMzg3NzUuLjg0NGFlYWNk
N2YxMzg5ZDM3YmFhZmY2MDZkZjA4YWVhZTcyYjRhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBs
YWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5j
cnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBp
diwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0KQogewogICAgIC8vIERldGVybWluZSB0aGUg
QUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGht
ID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpA
QCAtOTksNyArOTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRF
bmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIHJldHVybiBvdXRw
dXQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJU
ZXh0KQogewogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVu
IGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRo
bUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKaW5k
ZXggNzJjMWVmNDc5ZGY5MjJjYzc4OTI1OTQ3MmMwZDgyZTY4MzM0ZDI1OS4uMjJjMTI5OTY1YWFk
Y2QwMmM2N2I4YzhjZWExYTA4MmJjNGE4YTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5cHQuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBpcyBhIGhl
bHBlciBmdW5jdGlvbiB0aGF0IHJlc2V0cyB0aGUgY2lwaGVyIG9iamVjdCwgc2V0cyB0aGUgcHJv
dmlkZWQgY291bnRlciBkYXRhLAogLy8gYW5kIGV4ZWN1dGVzIHRoZSBlbmNyeXB0IG9yIGRlY3J5
cHQgb3BlcmF0aW9uLCByZXRyaWV2aW5nIGFuZCByZXR1cm5pbmcgdGhlIG91dHB1dCBkYXRhLgot
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdDcnlw
dDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXJhdGlvbiwgZ2NyeV9jaXBoZXJfaGRfdCBoYW5kbGUsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgY29uc3QgdWludDhfdCogZGF0YSwgY29uc3Qg
c2l6ZV90IHNpemUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGxP
cGVyYXRpb24oUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyYXRpb24sIGdjcnlfY2lw
aGVyX2hkX3QgaGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGNvbnN0IHNpemVfdCBzaXplKQogewogICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfY2lwaGVyX3Jlc2V0KGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXIKICAg
ICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBz
aXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpH
Q3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3Ro
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0VGV4dCkKIHsKICAgICBjb25zdGV4cHIgc2l6
ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFl
c0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlw
dC5jcHAKaW5kZXggNGE1MWQxZDcyM2Q5MmM4MTZkMjcyMDM0NjA0ZDE5ZTIxNDYwYWY3Ny4uN2Rk
MDA1MDhjYmIwODNjZmUwMTM3MmYwZWIxYzNjOGIyYmM1YTcwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEs
IHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCiB7CiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAg
ICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShr
ZXkuc2l6ZSgpICogOCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNpcGhlclRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25h
bERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogewogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFs
Z29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFM
OjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfS1dHQ3J5cHQuY3BwCmluZGV4IGI2MjJiNGU5Zjk4NjQ3MDA2NDUwNDIyMDA0ZDk4MGRmZWJl
NDRmNWUuLjZhZjJmNzFjMDZlNjk1NTNlNGFiNjk2NTFmZWE0YWQzNTJiMWViNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUFFU19LV0dDcnlwdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRXcmFwS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICAv
LyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAg
ICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtl
eS5zaXplKCkgKiA4KTsKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QK
ICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Z2NyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZv
ciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6
YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNw
cAppbmRleCAwNTRlYzgyNTJiMTI5YzhkMTAyNmIyYzk3NGQ0MDY3MmE4NTYzNzBhLi40OThlNjIx
NjgzM2I1NGUyZGZlZjBhOTYzMzU0ZWIzZWU3YzEwZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAs
IGdjcnlfc2V4cF90IHB1YmxpY0tleVNleHAsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4cF90
IGJhc2VLZXlTZXhwLCBnY3J5X3NleHBfdCBwdWJsaWNLZXlTZXhwLCBzaXplX3Qga2V5U2l6ZUlu
Qnl0ZXMpCiB7CiAgICAgLy8gRmlyc3QsIHJldHJpZXZlIHByaXZhdGUga2V5IGRhdGEsIHdoaWNo
IGlzIHJvdWdobHkgb2YgdGhlIGZvbGxvd2luZyBmb3JtOgogICAgIC8vIChwcml2YXRlLWtleQpA
QCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgcmV0dXJuIG1w
aVplcm9QcmVmaXhlZERhdGEoeE1QSSwga2V5U2l6ZUluQnl0ZXMpOwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhj
b25zdCBDcnlwdG9LZXlFQyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0
Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tl
eUVDJiBwdWJsaWNLZXkpCiB7CiAgICAgcmV0dXJuIGdjcnlwdERlcml2ZShiYXNlS2V5LnBsYXRm
b3JtS2V5KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtleSgpLCAoYmFzZUtleS5rZXlTaXplSW5CaXRz
KCkgKyA3KSAvIDgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAppbmRleCAyZGJiYTA5NmJmMTY4
Mzc4YTE2NjExNmIyNDg0ODBhNDE0ODdjODA1Li44ZjU4OWZjNmMzNWJmYWYxNjBiZTBiYTEwNzNi
MGIxZTc2YmU5MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBz
dGF0aWMgYm9vbCBleHRyYWN0RUNEU0FTaWduYXR1cmVJbnRlZ2VyKFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBnY3J5X3NleHBfdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNo
QWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8v
IFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9u
IHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKQEAgLTExOCw3
ICsxMTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdj
cnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHJldHVybiBzaWduYXR1cmU7
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRp
Zmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Z2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykK
IHsKICAgICAvLyBCYWlsIGlmIHRoZSBzaWduYXR1cmUgc2l6ZSBpc24ndCBkb3VibGUgdGhlIGtl
eSBzaXplIChpLmUuIGNvbmNhdGVuYXRlZCByIGFuZCBzIGNvbXBvbmVudHMpLgogICAgIGlmIChz
aWduYXR1cmUuc2l6ZSgpICE9IGtleVNpemVJbkJ5dGVzICogMikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3Bw
CmluZGV4IDFiMTYyYjcyN2U5Y2I0NDRkYmEwNWE0YjM1YThiZTk0MDQ0OWZkOWUuLmYyZTYxNzEw
YTIwZjkzMzNjMzllNjg0YmVjOTEwNTJmOTUwNmNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBXZSBzaG91bGQgc3dpdGNo
IHRvIHRoZSBsaWJnY3J5cHQtcHJvdmlkZWQgaW1wbGVtZW50YXRpb24gb25jZSBpdCdzIGF2YWls
YWJsZS4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE1MzYK
IAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbmZvLCBz
aXplX3QgbGVuZ3RoSW5CeXRlcywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewogICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHByb3ZpZGUgSEtERiBzdXBwb3J0LCBzbyB3
ZSBoYXZlIHRvIGltcGxlbWVudAogICAgIC8vIHRoZSBmdW5jdGlvbmFsaXR5IG91cnNlbHZlcyBh
cyBzcGVjaWZpZWQgaW4gUkZDNTg2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDMwYTMyODky
NTY2NWIxZjY5YzcyZTVjYmIzOTZkZmM0NjAzZjY2ZjguLmE2OTAzNDBmMGJiOGRlYmMzZTg4ZGEw
ZWI1NDkyZDgxNjE0ZWM1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtNTUsNyArNTUsNyBA
QCBzdGF0aWMgaW50IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2hGdW5jdGlvbikKICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShp
bnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtl
eS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
IiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggOWIxMWJhYWMyZmE2Njc4YjQ5Y2Fl
MzExNTIyMDY1NzBlN2IyYzJlOC4uNjZlZGZiZDgxOTk4ZjE3ZTBjMjg1NzhiMWQ0ZWViMzViZjcx
YzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRhLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHREYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlm
aWVyLCBzaXplX3QgaXRlcmF0aW9ucywgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleURhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdERhdGEsIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaElkZW50aWZpZXIsIHNpemVfdCBpdGVyYXRpb25zLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIC8vIERldGVybWluZSB0aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3aWxs
IGJlIHVzZWQgZm9yIGRlcml2YXRpb24uCiAgICAgYXV0byBoYXNoQWxnb3JpdGhtID0gZGlnZXN0
QWxnb3JpdGhtKGhhc2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVHQ3J5cHQuY3BwCmluZGV4IDA2ZTI4ZTc0MGUyZDRmNDQyMjY4Y2ZjMTg3NzAyYmYwNzk4NjMz
ZmMuLjBlNGUyZGU3MTlmMjc1OWQ1NWY1Yzk1ZjM1ODg0NWU2Mjg5M2E4MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBw
bGFpblRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAg
IC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBgZGF0YWAgcy1leHByZXNzaW9uIHVz
aW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IGRhdGFTZXhwOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAg
IHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJl
ZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBgZW5jLXZhbGAgcy1leHByZXNzaW9uIHVzaW5n
IFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGVu
Y1ZhbFNleHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmlu
ZGV4IDJjMWEzMWRmMzdiMzBlNTg3Y2NiMmVkZDgyMzhmNjY3NWY3YTY5YmQuLmJlNmFhODZmODA3
OTM1OTRmODExOTZiNDQ0OGE2ZTEwYTEyNGRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5C
eXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXpl
SW5CeXRlcykKIHsKICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3Bl
Y2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YUhhc2g7CkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAgICAg
cmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEoc1NleHAsIGtleVNpemVJbkJ5dGVzKTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIpCiB7CiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNpZmll
ZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFI
YXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAppbmRleCBkNzRlNzkyNGVmMWEwYzYzNDgz
ZDUyNmFlOWE5MGM2MjUyYWViOTMxLi44N2M1NmMwNjczMTU2OTAzZmE0NTA3NDI5YmUwNjA0ZmQ2
MThlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcApAQCAtMzUsNyArMzUsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRl
bnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJl
bFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIHNpemVfdCBrZXlTaXpl
SW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5j
cnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQog
ewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBkYXRhIHMtZXhwcmVzc2lv
biB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9wZXJs
eSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgpLgpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZwogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBr
ZXlTaXplSW5CeXRlcyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRp
ZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJlbFZl
Y3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgbGFiZWxWZWN0b3IsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lw
aGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBlbmMt
dmFsIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFiZWwg
ZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU0dDcnlwdC5jcHAKaW5kZXggN2RlOWVlZDIwM2Y4ZWFkOWY3NDJhYTgwZjdjNTU4YTFmMGRh
NzA2ZC4uZmUxNjE4YTc0NTc0M2JiNTBlOTg4Yjg5ZjczMmU5NzhmZTdlNGMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQV9QU1NHQ3J5cHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3Nl
eHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoLCBz
aXplX3Qga2V5U2l6ZUluQnl0ZXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
LCBzaXplX3Qgc2FsdExlbmd0aCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIFBl
cmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRo
ZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKQEAgLTg3LDcgKzg3
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3Nl
eHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVk
RGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4g
Z2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIs
IHNpemVfdCBzYWx0TGVuZ3RoKQogewogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3
aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhSGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggMDNhMGI4OTM3MTBlMWI0YmIxYWM0NDA2YTZi
NzdmMWE5MmI0MTg5MS4uMzNkZGRiZDgyYzQzMGJlZTIxMWExNTk2NGM1NmNhMzA3M2YxNGQ0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBv
cnRlZEN1cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIGN1cnZlID09IE5hbWVkQ3Vy
dmU6OlAyNTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2ZTo6UDM4NCB8fCBjdXJ2ZSA9PSBOYW1lZEN1
cnZlOjpQNTIxOwogfQogCi1PcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxh
dGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBO
YW1lZEN1cnZlIGN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCitzdGQ6Om9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9y
bUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVk
Q3VydmUgY3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cykKIHsKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBnZW5rZXlTZXhwOwog
ICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwgbnVs
bHB0ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1lKGN1cnZlKSk7CkBAIC0y
MzAsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGtleUlkZW50aWZpZXIKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJ
ZGVudGlmaWVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1cnZlPiBjdXJ2ZUZvcklkZW50aWZpZXIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQogewogICAgIGF1dG8qIGRhdGEgPSBpZGVu
dGlmaWVyLmRhdGEoKTsKICAgICBhdXRvIHNpemUgPSBpZGVudGlmaWVyLnNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApp
bmRleCA1YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUxNDUyNmYzYzQ4OWI0NWUwLi4wMzMxNTgwN2Ri
N2Y3N2M3OTI0NTRjMjdmNzQxNTUwZDE2YWRlNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0xNzAsNyArMTcwLDcg
QEAgc2l6ZV90IENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygpIGNvbnN0CiB9CiAKIC8vIENv
bnZlcnQgdGhlIGV4cG9uZW50IHZlY3RvciB0byBhIDMyLWJpdCB2YWx1ZSwgaWYgcG9zc2libGUu
Ci1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9yVG9VSW50MzIoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBleHBvbmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQp
CiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsKICAgICAgICAgaWYgKHN0ZDo6YW55
X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgpIC0gNCwgW10odWludDhfdCBlbGVt
ZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBi
b29sIHN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZpZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWlu
dDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICAvLyBEZWNv
ZGUgdGhlIGBTdWJqZWN0UHVibGljS2V5SW5mb2Agc3RydWN0dXJlIHVzaW5nIHRoZSBwcm92aWRl
ZCBrZXkgZGF0YS4KICAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgc3BraTsKQEAgLTMwOSw3ICsz
MDksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZvcm1S
U0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFz
aCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIERlY29kZSB0aGUgYFByaXZhdGVLZXlJbmZv
YCBzdHJ1Y3R1cmUgdXNpbmcgdGhlIHByb3ZpZGVkIGtleSBkYXRhLgogICAgIFBBTDo6VEFTTjE6
OlN0cnVjdHVyZSBwa2NzODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvR0NyeXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0Ny
eXB0VXRpbGl0aWVzLmNwcAppbmRleCA4MzAwZTcwNWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0YTgy
ZTg4NzhhLi5iYzE1ZmVlZjU3ZWMzYTM4MzVmNjhhYzVkOTRkNjgyM2VmMmZlYjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8Y29uc3QgY2hh
cio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzd2l0Y2ggKGlkZW50aWZpZXIp
IHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNTAsNyAr
NTAsNyBAQCBPcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBo
bWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3N0ZDo6
b3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxpbnQ+
IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IH0KIH0KIAotT3B0aW9uYWw8aW50PiBkaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgc3dpdGNoIChpZGVu
dGlmaWVyKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKQEAg
LTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8aW50PiBkaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0KIH0KIAotT3B0aW9uYWw8UEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN3aXRjaCAoaWRlbnRpZmllcikgewogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CkBAIC0xMDQsNyArMTA0LDcg
QEAgT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0KICAgICB9CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4g
bXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbXBp
TGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiB7CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSBs
ZW5ndGggZm9yIHRoZSB1bnNpZ25lZCBmb3JtYXQuCiAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAw
OwpAQCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBp
X3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIGRhdGFMZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHNpemVf
dD4gbXBpTGVuZ3RoKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewogICAgIC8vIFJldHJpZXZlIHRo
ZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250
aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBPcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChnY3J5X3NleHBfdCBwYXJhbVNleHApCiAgICAg
cmV0dXJuIG1waUxlbmd0aChwYXJhbU1QSSk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gbXBpRGF0YShnY3J5X21waV90IHBhcmFtTVBJKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKIHsKICAgICAvLyBSZXRyaWV2ZSB0
aGUgTVBJIGxlbmd0aC4KICAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlf
bXBpX3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEksIHNpemVf
dCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1By
ZWZpeGVkRGF0YShnY3J5X21waV90IHBhcmFtTVBJLCBzaXplX3QgdGFyZ2V0TGVuZ3RoKQogewog
ICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgbGVuZ3RoLiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQgbGVu
Z3RoIGlzIGxvbmdlciB0aGFuIHRhcmdldCBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlM
ZW5ndGgocGFyYW1NUEkpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90IHBhcmFtTVBJLCBzaXplX3QgdGFy
Z2V0CiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBt
cGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKIHsKICAgICAvLyBSZXRyaWV2ZSB0
aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkK
ICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9u
dGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CkBAIC0xNzUsNyArMTc1LDcg
QEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4
cCkKICAgICByZXR1cm4gbXBpRGF0YShwYXJhbU1QSSk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVf
dCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1By
ZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnZXRMZW5ndGgpCiB7
CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lv
bjogKG5hbWUgbXBpLWRhdGEpCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBw
YXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykp
OwpAQCAtMTg1LDcgKzE4NSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1By
ZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnCiAgICAgcmV0dXJu
IG1waVplcm9QcmVmaXhlZERhdGEocGFyYW1NUEksIHRhcmdldExlbmd0aCk7CiB9CiAKLU9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5X21waV90IG1waSkKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3QgbXBpKQog
ewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEobXBpKTsKICAgICBpZiAoIWRhdGEpCkBAIC0xOTcs
NyArMTk3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlf
bXBpX3QgbXBpKQogICAgIHJldHVybiBkYXRhOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewog
ICAgIGF1dG8gZGF0YSA9IG1waURhdGEocGFyYW1TZXhwKTsKICAgICBpZiAoIWRhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaAppbmRleCBkODRk
NDUyMGQ0MjUyMTE1OWU1N2IyOWUwM2JkMGFjZGUzNGIyYWVmLi5mMGE0MTM0NTZhOTQ0NTk5NThm
OWE3ZjAyNTQ1MzQ0YjVmYjZjM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvR0NyeXB0VXRpbGl0aWVzLmgKQEAgLTY3LDE5ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgbWF0Y2hlcyhjb25zdCB2b2lkKiBsaHMsIHNpemVfdCBzaXplLCBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4XwogCiB9IC8vIG5hbWVzcGFjZSBDcnlwdG9Db25zdGFudHMKIAotT3B0aW9uYWw8Y29u
c3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwot
Ci1PcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7
Ci1PcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
KTsKLU9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdl
c3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7Ci0KLU9wdGlvbmFsPHNpemVf
dD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QpOwotT3B0aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2Ny
eV9zZXhwX3QpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3Qp
OwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfbXBp
X3QsIHNpemVfdCB0YXJnZXRMZW5ndGgpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlE
YXRhKGdjcnlfc2V4cF90KTsKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZp
eGVkRGF0YShnY3J5X3NleHBfdCwgc2l6ZV90IHRhcmdldExlbmd0aCk7Ci1PcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9tcGlfdCk7Ci1PcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QpOworc3RkOjpvcHRpb25hbDxjb25z
dCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CisK
K3N0ZDo6b3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIpOworc3RkOjpvcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyKTsKK3N0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4g
aGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKKwor
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChnY3J5X21waV90KTsKK3N0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90LCBzaXplX3QgdGFyZ2V0TGVuZ3Ro
KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90KTsK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlf
c2V4cF90LCBzaXplX3QgdGFyZ2V0TGVuZ3RoKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3QpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3QpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L1NlcmlhbGl6ZWRD
cnlwdG9LZXlXcmFwR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCmluZGV4IDI1MGQyZjIzNWNkYTJkNDRkMWQ3
NDdkNGYzMjhkZTJmYzI3NmRiYjUuLjRlNzYwYjg4NDUzM2RiNjg3NGZkY2M4OTc3YzUzMGU5Mzgw
MzQxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0
V2ViQ3J5cHRvTWFzdGVyS2V5KCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZh
dWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlFQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlF
Qy5jcHAKaW5kZXggM2RjNThmNTM0Nzc1NDY3ODM4YTY2YmE1ZmM0OGRkY2NiNjY2ZTQ4NC4uZDM2
ZDM0MGY3MGE4ZjRhMTdmZjVmNjE5Y2ViMWQ5ZDg0NWNhMmEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29u
c3QgQVNDSUlMaXRlcmFsIFAyNTYgeyAiUC0yNTYiX3MgfTsKIHN0YXRpYyBjb25zdCBBU0NJSUxp
dGVyYWwgUDM4NCB7ICJQLTM4NCJfcyB9Owogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBQNTIx
IHsgIlAtNTIxIl9zIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2
ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0cmluZyYgY3VydmUpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0cmluZyYgY3Vy
dmUpCiB7CiAgICAgaWYgKGN1cnZlID09IFAyNTYpCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlF
Qzo6TmFtZWRDdXJ2ZTo6UDI1NjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleUVDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlF
Qy5oCmluZGV4IDc3N2RmZDNhODVjNzRiMmJkZWRkZjU2Njk1OTZkNTVjNmQwYzkzMGUuLmI5NjA2
MDU5YzhhNjU2MTFiNmViNDRjOWQ4MTkzZGVlMWYwZmY0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5RUMuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIEtl
eUFsZ29yaXRobSBhbGdvcml0aG0oKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyBib29sIHBs
YXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENy
eXB0b0tleVBhaXI+IHBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBwbGF0Zm9ybUdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlF
Qz4gcGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5RUM+IHBsYXRmb3JtSW1w
b3J0SldLUHVibGljKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rv
cjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUVDPiBwbGF0
Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKaW5kZXggOGQwYmZkODFiZDQ1
NDRjOGVlZjc3ZTk0NTA3Zjk5MmYwMjVmMDFkYy4uMDE4M2MxZGQ0ODdhZjAxMGU1ZTUwOWQyMjYw
ZDY1MjI1MTk1ZDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlS
U0EuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBhbGdvcml0aG0sIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhh
c2gsIEpzb25XZWJLZXkmJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9y
dEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgc3RkOjpvcHRpb25hbDxD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBKc29uV2ViS2V5JiYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIGlmIChr
ZXlEYXRhLmt0eSAhPSAiUlNBIikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCmluZGV4IGVlOTM2ZWFhYTdiNTk5NjFlZmYx
Y2E5NmIxZmQyNzA1YmU2ZWYwMjIuLjBiYjBhYWU3MmIxYmQ3YWQ0NTdiMDI5NDYwN2VmY2FmMjIw
Mzc0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJT
QS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCkBAIC04
MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoQ3J5cHRvS2V5UGFpciYmKT47CiAgICAgdXNpbmcgVm9pZENhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHN0YXRpYyB2b2lkIGdlbmVyYXRlUGFpcihDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJv
b2wgaGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBwdWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAs
IEtleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleVJTQT4gaW1w
b3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApOwotICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRT
cGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGlt
cG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXApOworICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBp
bXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eVJTQT4gaW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogCiAgICAgUGxhdGZvcm1SU0FL
ZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtS2V5LmdldCgpOyB9CiAg
ICAgSnNvbldlYktleSBleHBvcnRKd2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCmluZGV4IGVlODRhZTk3MmU3
YTUyYzVhMmFhYzU3MjI0ODlmMDFmODMzMjg0ODIuLmE3MjA2MGUzZmNlZThlZTk1MTBmZTJhZDQ2
ZDE3ZjlkZTFlMThmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNE
SDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiBiYXNlS2V5LCBjb25zdCBD
cnlwdG9LZXlFQyYgcHVibGljS2V5KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYg
YmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKIHsKLSAgICBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAgIFZlY3Rvcjx1aW50
OF90PiBkZXJpdmVkS2V5KGJhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCiAgICAgc2l6ZV90IHNp
emUgPSBkZXJpdmVkS2V5LnNpemUoKTsKICAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJl
ZFNlY3JldChiYXNlS2V5LnBsYXRmb3JtS2V5KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtleSgpLCBk
ZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKaW5kZXggMzAzMDc3MjAwZDc1N2M3OGJh
MzZmZTYyOTdiY2RlZjNkYmNlMzUzOS4uOTgwNzViNTY4MTYzYjI1MjdhMWFlZjI4MWIyNzQ5YjYz
MWI2MjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhNQUNNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0Fs
Z29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhh
c2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29y
aXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RBbGdvcml0aG0u
aAppbmRleCA4ZDE3ODE3ZTc0MThlOTUxMGU4ZTAzODdmYTk4ZTdkMjVjNTZlMjVlLi44NDhkODk0
MTZhMDM2MWMxYWRkMTY1YjkyNzAyNTZjNWVlNmU3NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaEZ1bmN0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKaW5kZXggZjU0ZGI3N2QyOTM2MjAwNjk2MDRj
M2UyMTNjODc3NjkxMGQzN2ViYS4uODlmYjU0MzlhZWQ0NGE3YzRjODdlYzljMWE1NzEwMjRiZGU5
NmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRlZEN1
cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIGN1cnZlID09IE5hbWVkQ3VydmU6OlAy
NTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2ZTo6UDM4NDsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvS2V5
UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQYWly
PiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBnZXRLZXlTaXpl
RnJvbU5hbWVkQ3VydmUoY3VydmUpOwogICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5
UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cAppbmRleCA2ZjFhODQyMjJhYjJmYjEzZmI0OGY0YmM1NTM2ZDUzYTBiMTQ4OWVkLi45MTY2Y2E1
NTA4NjZkMzkyM2IxZWVkNzY3NzlkYjE1OGVjMGE0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBD
cnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobSwgQ3J5cHRvQWxnb3IKICAgICB9KTsKIH0KIAotUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjppbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4
X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNh
Z2VzKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gVGhlIGN1
cnJlbnQgU2VjTGlicmFyeSBjYW5ub3QgaW1wb3J0IGEgU1BLSSBmb3JtYXQgYmluYXJ5LiBIZW5j
ZSwgd2UgbmVlZCB0byBzdHJpcCBvdXQgdGhlIFNQS0kgaGVhZGVyLgogICAgIC8vIFRoaXMgaGFj
ayBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yOTUyMzI4Nj4gaXMgcmVzb2x2
ZWQuCkBAIC0zNTQsNyArMzU0LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlw
dG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25zdAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7
CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBW
ZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gVGhlIGN1cnJlbnQgU2VjTGlicmFyeSBjYW5ub3Qg
aW1wb3J0IGEgUEtDUzggZm9ybWF0IGJpbmFyeS4gSGVuY2UsIHdlIG5lZWQgdG8gc3RyaXAgb3V0
IHRoZSBQS0NTOCBoZWFkZXIuCiAgICAgLy8gVGhpcyBoYWNrIGNhbiBiZSByZW1vdmVkIHdoZW4g
PHJkYXI6Ly9wcm9ibGVtLzI5NTIzMjg2PiBpcyByZXNvbHZlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCmluZGV4
IDg5OTMzODg4YjIyZDlhMzk4ODRmOTFhZTgyZWIzMzg5YjlhZDExYWMuLjg2Y2U5ZmE2Y2Y1N2Yw
YzEwM2Q1NWZmNTdkZGEyNjNhNDRmZjMxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQpAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgTlNTdHJpbmcqIG1hc3RlcktleUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxp
Y2F0aW9uKCkKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb20uYXBw
bGUuV2ViS2l0LldlYkNyeXB0by5tYXN0ZXIrJUAiLCBidW5kbGVJZGVudGlmaWVyXTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3JlYXRlQW5kU3RvcmVNYXN0ZXJLZXko
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVBbmRTdG9yZU1h
c3RlcktleSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NDcmVkZW50aWFscykpOwogCkBAIC0xNTAsNyArMTUwLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIG1hc3Rlcktl
eURhdGE7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJL
ZXkoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxzKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5KCkKICAgICByZXR1cm4g
YmFzZTY0RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQ
dHIoa2V5RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOwogfQog
Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXko
KQogewogICAgIGlmIChhdXRvIG1hc3RlcktleSA9IGZpbmRNYXN0ZXJLZXkoKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtYXN0ZXJLZXktPnNpemUoKSA9PSBtYXN0ZXJLZXlTaXplSW5CeXRl
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAKaW5kZXggYzllYzk5YzlhODliMWFhOTlk
NzA0MGVkZmQxZWYxZjIxMzZhODA1MC4uYzI3MWMwNjdmMzU2MjI4ZWZmZGVkYThmOTM1MWUzMTZm
MTg4ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcApAQCAtNDksNyArNDksNyBA
QCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGhtKHNpemVfdCBrZXlTaXplKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFp
blRleHQpCiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGht
KGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAtODEsNyArODEsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlw
dERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICBjb25zdCBF
VlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYg
KCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAKaW5kZXggYWI2ODdmNmNj
ZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZkMTc4Njc5NC4uOTI1YWIyZjY0NjA4MDM5NTdlOGQzZTRi
NjM2OWVmOWM3ZDA0N2NhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGhtKHNpemVfdCBr
ZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhf
dD4mJiBwbGFpblRleHQpCiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVz
QWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAtODMsNyArODMs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAg
ICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RST3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RST3BlblNTTC5jcHAKaW5kZXgg
OTMxNDYyMzk2ZGQxYzIzYWEyNmY5NjAyNzY1NWI5MmE5MGUyOThhZC4uY2EyZjliNTU5MDMzYzcy
ODVkZDc4Y2JkMGJmNjUxMTgwZTRkMTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNw
cApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGht
KHNpemVfdCBrZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRl
ckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0KGludCBvcGVyYXRpb24sIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBj
b3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0VGV4dCkKIHsKICAgICBj
b25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFs
Z29yaXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVu
U1NMLmNwcAppbmRleCAwNWY2ZWM5NTRlZGM2MzdhYjJhNzljNmYxNWQzMjA3OWMzNmE4OTU2Li4w
MTE3NTI0YzgzMjM2NjRlYzhlMjE3YTQyOWFlYzFkNDBmYjJhNjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0dDTU9wZW5TU0wuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBjb25zdCBFVlBfQ0lQSEVS
KiBhZXNBbGdvcml0aG0oc2l6ZV90IGtleVNpemUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERh
dGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0aCkKIHsKICAg
ICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogICAgIHJldHVybiBjaXBoZXJUZXh0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5n
dGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFk
ZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0aCkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVS
KiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0
aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfS1dPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCmluZGV4IGExN2MyOWNhNGQyNjJjYmU4YTZj
M2VmNjk3YjE1ZGM2M2FkYTNiOWIuLjBlOWZlMjVhYzRlYTE4OTVjNTZiNGJmMThlNDA0ZTA3ODEw
ZjY5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19LV09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0
YXRpYyBjb25zdCBFVlBfQ0lQSEVSKiBhZXNBbGdvcml0aG0oc2l6ZV90IGtleVNpemUpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNy
eXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdFdy
YXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0o
a2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBjb25zdCBFVlBfQ0lQ
SEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdv
cml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1FQ0RIT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAKaW5kZXggMmVmMGVjZGZlYTcwYzczYzhjOGJi
ZGE1OTgxZTQwYTQ5YzZmMjdhMS4uY2Y5NzgzNTIzMjg1NzhjNTY1OGE1M2IyYWRlNzc2NWExMzc0
YjFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtRUNESE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUVDREhPcGVuU1NMLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5
cHRvS2V5RUMmKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IENyeXB0
b0tleUVDJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFD
T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1ITUFDT3BlblNTTC5jcHAKaW5kZXggMjIyNmI3ZjAwOGRiNzk2ODE5YzJhOGY3MGM1MzY5NzJh
M2E5Nzg5Yy4uMTkyY2NmNTZlZDU4YWUxZjlmZWJjYzJjNjAxZmUzNzliYTU0NDM3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09w
ZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUhNQUNPcGVuU1NMLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVy
ZShjb25zdCBFVlBfTUQqIGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoY29uc3QgRVZQX01EKiBhbGdv
cml0aG0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIE1lc3NhZ2UgRGlnZXN0IENv
bnRleHQKICAgICBFdnBEaWdlc3RDdHhQdHIgY3R4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81T3BlblNTTC5jcHAKaW5kZXggYWUzMmI2Zjg2ZGMzYjVkY2NmMTk5MTdiMDgy
MzU0ZmZkMzZjOTViZC4uYWNmZWVlNzkwZmNkMDA2MjE3OWQ1MWQ4MzQwZGVhZGZmZTYyMGY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zCiAgICAgaWYgKCFtZCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2Vz
dChtZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OwogCkBAIC03NCw3ICs3NCw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+
IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBD
cnlwdG9LCiAgICAgaWYgKCFtZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNh
bGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdlc3Qp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTT3BlblNTTC5jcHAKaW5kZXggOWUzZDllY2ZmNzI0NjQyYjJkMTU2NTE3NjA3YjAz
OWM0MTQ2MDExYS4uNjIyNjdjNTgxNzEwODRmMTZhNTMzYmJkYTc1MjFmMGM2Y2Y1NGNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NPcGVuU1NMLmNwcApAQCAtNDEsNyArNDEsNyBAQCBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihj
b25zdCBDcnlwdG9BbAogICAgIGlmICghbWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdl
c3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOwogICAgIGlmICgh
ZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIApA
QCAtODYsNyArODYsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNT
OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1ScwogICAgIGlmICghbWQpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEp
OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVE
aWdlc3QobWQsIGRhdGEpOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAKaW5kZXggZGM2NjJhZDc4YjM0MjNmM2I4
ZGZjM2Q1Y2YwMDNkYzVlZmJjZDU4Zi4uZjMxMWVkM2I2ZmRjYzc4NDg5ZGRmOGEzZjAyYjkzZGI1
MTRjNzA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
S2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9LZXlFQ09wZW5TU0wuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGJvb2wgQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LU9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFp
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3N0ZDo6b3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQogewog
ICAgIFVOVVNFRF9QQVJBTShleHRyYWN0YWJsZSk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNT
TC5jcHAKaW5kZXggOTNmYTBhZThjMjk1ZTY5MmY1ZmVkZjJhNjUwZWQxMjViMDExMmM0My4uZDMy
OTlmZjUzMmIyZTI0OTg2NThmZDc1YzMxY2FlZDhlMWMzMzljYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCBzaXplX3QgQ3J5cHRvS2V5UlNBOjprZXlTaXplSW5CaXRzKCkgY29uc3QK
IH0KIAogLy8gQ29udmVydCB0aGUgZXhwb25lbnQgdmVjdG9yIHRvIGEgMzItYml0IHZhbHVlLCBp
ZiBwb3NzaWJsZS4KLXN0YXRpYyBPcHRpb25hbDx1aW50MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJ
bnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9yVG9VSW50MzIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBleHBvbmVudCkKIHsKICAgICBpZiAoZXhwb25lbnQuc2l6ZSgpID4gNCkgewogICAgICAgICBp
ZiAoc3RkOjphbnlfb2YoZXhwb25lbnQuYmVnaW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1
aW50OF90IGVsZW1lbnQpIHsgcmV0dXJuICEhZWxlbWVudDsgfSkpCkBAIC0yMDksNyArMjA5LDcg
QEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICBjYWxsYmFjayhDcnlwdG9LZXlQYWlyIHsg
V1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0pOwogfQogCi1SZWZQdHI8
Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBo
YXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6
OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYm
IGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykK
IHsKICAgICAvLyBXZSBuZWVkIGEgbG9jYWwgcG9pbnRlciB2YXJpYWJsZSB0byBwYXNzIHRvIGQy
aSAoREVSIHRvIGludGVybmFsKSBmdW5jdGlvbnMoKS4KICAgICBjb25zdCB1aW50OF90KiBwdHIg
PSBrZXlEYXRhLmRhdGEoKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhh
c2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENy
eXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykp
OwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJT
QT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwg
VmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIFdlIG5lZWQgYSBsb2NhbCBwb2ludGVyIHZhcmlh
YmxlIHRvIHBhc3MgdG8gZDJpIChERVIgdG8gaW50ZXJuYWwpIGZ1bmN0aW9ucygpLgogICAgIGNv
bnN0IHVpbnQ4X3QqIHB0ciA9IGtleURhdGEuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRleCA4YzIxMjM3YzJmY2Fm
OWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliLi43NGI0NmQ2NzAwMTJjZjBlMWJlM2NlNDE5NWQ4
ODM3YjU5YjQ5NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9P
cGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9P
cGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBFVlBfTUQqIGRpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKICAgICB9
CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVW
UF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCitzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxn
b3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCiB7CiAgICAgRXZwRGlnZXN0
Q3R4UHRyIGN0eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RDdHhQdHIoRVZQX01EX0NUWF9j
cmVhdGUoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3Bl
blNTTFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0
aWxpdGllcy5oCmluZGV4IGQyYzkxYmZjNDdiODhmM2JkZmM0NmQ1Zjk4ODY4MDc2ZjM2ZGE5Njgu
LmVmMGE2MDY4ODUwNDBmZDE2M2NkNGI4Y2FiOTUxNjZiYWYwMDRkNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBFVlBfTUQqIGRpZ2VzdEFsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbik7CiAKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxnb3JpdGhtLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNhbGN1bGF0ZURpZ2VzdChjb25zdCBFVlBfTUQqIGFsZ29yaXRobSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5
V3JhcE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcAppbmRleCAxMjNkYTU3NGMzMWZmYTk1YTJmMTM2MjJj
M2Y0MjlkYzZmYWU0MjhiLi44NmNjNmIxZjk3YTJhMWM3Njc1YTE3MGY3NzJiYTkwYjgzZGU2NDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRX
ZWJDcnlwdG9NYXN0ZXJLZXkoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1
bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJh
bWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKaW5kZXggZTI5NjYy
YTIyNzU1N2NmNjFkNGIxNDA3Y2E1ODc5NTMyODA0MWY5YS4uNjdhZjAzOTg3ZmVjNjk1NDJmOGQ3
YzkyY2FmYjBhMDY5YTdjNDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3Bh
cmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKQEAgLTM3
LDggKzM3LDggQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zIGZpbmFsIDogcHVi
bGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgewogcHVibGljOgogICAgIEJ1ZmZlclNvdXJj
ZSBpdjsKICAgICAvLyBVc2UgYWRkaXRpb25hbERhdGFWZWN0b3IoKSBpbnN0ZWFkIG9mIGFkZGl0
aW9uYWxEYXRhLiBUaGUgbGFiZWwgd2lsbCBiZSBnb25lIG9uY2UgYWRkaXRpb25hbERhdGFWZWN0
b3IoKSBpcyBjYWxsZWQuCi0gICAgbXV0YWJsZSBPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlPiBhZGRpdGlvbmFsRGF0YTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHVpbnQ4X3Q+IHRh
Z0xlbmd0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZT4gYWRkaXRpb25hbERhdGE7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+
IHRhZ0xlbmd0aDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIENsYXNzOjpBZXNHY21QYXJhbXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cy5oCmluZGV4IGU4NGU0MTdhMDgzNjZjMTQwZjJlMzQ5YTNjM2Q5NzY1OGMwZmZiZjYuLjlkMTA5
YzBmODRiNmNjOGNkZWZjYjM2YTA1YWYzZTY3MmE3OGUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFj
S2V5UGFyYW1zLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtZXJnaW5nIGhhc2ggYW5kIGhhc2hJZGVudGlmaWVyLgogICAgIFZhcmlhbnQ8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4sIFN0cmluZz4gaGFzaDsKICAgICBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyOwotICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7CiAKICAgICBDbGFzcyBwYXJhbWV0ZXJz
Q2xhc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDbGFzczo6SG1hY0tleVBhcmFtczsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9Dcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKaW5kZXggMzVkNDUwMWRhNzZiMmVhYzU3YTliMWM0
YTBlNzE0NzQyNzkzMjUwMi4uNzY5ZjNkOWNiM2FhYTc5OTY3MmZjNzU1NDcyOTU4M2U2M2I0MDE1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0
ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zIGZpbmFs
IDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgewogcHVibGljOgogICAgIC8vIFVz
ZSBsYWJlbFZlY3RvcigpIGluc3RlYWQgb2YgbGFiZWwuIFRoZSBsYWJlbCB3aWxsIGJlIGdvbmUg
b25jZSBsYWJlbFZlY3RvcigpIGlzIGNhbGxlZC4KLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGU+IGxhYmVsOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBsYWJlbDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnND
bGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpSc2FPYWVwUGFyYW1zOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCmluZGV4IGQ5ZDFmZTI0MmU4ZjA4YzcyYTE3
ODIzNDZiOGExMmM0NzE4YmVmZWIuLjE3ZjM2ODljNjdiMDRiZmNkMGY2NDVmNWNkZGJkOWZiNWZi
NGRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcApAQCAtNDEsNyArNDEs
NyBAQCBTdHJpbmcgQ1NTQ2FudmFzVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJl
dHVybiBtYWtlU3RyaW5nKCItd2Via2l0LWNhbnZhcygiLCBtX25hbWUsICcpJyk7CiB9CiAKLXZv
aWQgQ1NTQ2FudmFzVmFsdWU6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25z
dCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2VkUmVjdCkKK3ZvaWQgQ1NTQ2FudmFzVmFsdWU6
OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mIGNoYW5nZWRSZWN0KQogewogICAgIGlmICghY2hhbmdlZFJlY3QpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggNmIxZDYxYzdjZmZh
M2IxZDM5NzVlMTM3YTcwYjVhMjhmNGE2OTk3Yy4uNjU4OWY0ZDMzMDM5MTcxZTg3YWQ4OTE5ZTVl
ZjdiOGQ1MmI1Mzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBDU1NDYW52YXNWYWx1ZSYgb3duZXJWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJWYWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UsIGNvbnN0IE9wdGlv
bmFsPEZsb2F0UmVjdD4mIGNoYW5nZWRSZWN0KSBmaW5hbAorICAgICAgICB2b2lkIGNhbnZhc0No
YW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+JiBjaGFuZ2VkUmVjdCkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlz
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKSk7CiAgICAgICAgICAgICBtX293bmVyVmFs
dWUuY2FudmFzQ2hhbmdlZChkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSks
IGNoYW5nZWRSZWN0KTsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgT3B0aW9u
YWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJlY3QpOworICAgIHZvaWQgY2FudmFzQ2hhbmdlZChIVE1M
Q2FudmFzRWxlbWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJl
Y3QpOwogICAgIHZvaWQgY2FudmFzUmVzaXplZChIVE1MQ2FudmFzRWxlbWVudCYpOwogICAgIHZv
aWQgY2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYTZkNTQz
YmNlZGY1OTM1ODMzYWEyY2E3OTc0OWJiMDA1NTVhMzE1Ny4uYzRiYjk2NTE3OTdlZGY3YzZhMzJh
YjEwYjI3OGQ1Mjk4ZTM5MjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE4NDIsNyArMTg0Miw3IEBAIFJlZjxDU1NG
b250U3R5bGVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRTdHls
ZUZyb21TdHlsZVZhbHVlCiAgICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPYmxp
cXVlKSwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxm
bG9hdD4oaXRhbGljKSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKIH0KIAotUmVmPENTU0ZvbnRT
dHlsZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5bGVGcm9tU3R5bGVWYWx1
ZShPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYywgRm9udFN0eWxlQXhpcyBmb250
U3R5bGVBeGlzKQorUmVmPENTU0ZvbnRTdHlsZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpmb250U3R5bGVGcm9tU3R5bGVWYWx1ZShzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1
ZT4gaXRhbGljLCBGb250U3R5bGVBeGlzIGZvbnRTdHlsZUF4aXMpCiB7CiAgICAgaWYgKGF1dG8g
a2V5d29yZCA9IGZvbnRTdHlsZUtleXdvcmQoaXRhbGljLCBmb250U3R5bGVBeGlzKSkKICAgICAg
ICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoa2V5d29yZC52YWx1ZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNGNkNjQz
NTVjOWI4NDM2MjljNDUyODQyNjNlN2Y1MzZiOWQ3YzE1ZC4uY2RkMGM0YTNjOWZlZTBjZDE5NWE1
ODVkZjY1MjE4M2ZhYWRlOTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udE5vbktleXdvcmRTdHJldGNoRnJvbVN0eWxl
VmFsdWUoRm9udFNlbGVjdGlvblZhbHVlKTsKICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBmb250U3RyZXRjaEZyb21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7CiAgICAg
c3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9udE5vbktleXdvcmRTdHlsZUZyb21TdHls
ZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0gICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVW
YWx1ZT4gZm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiwgRm9udFN0eWxlQXhpcyk7CisgICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9u
dFN0eWxlRnJvbVN0eWxlVmFsdWUoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+LCBG
b250U3R5bGVBeGlzKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgc3R5bGVkIGVsZW1lbnQgaXMg
ZWl0aGVyIHRoZSBlbGVtZW50IHBhc3NlZCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmlu
ZGV4IDQyYzg1Y2U4ODY0NjQzMzY1MzNhMmViZWM3ZTQwODI3YzNhNDhmMjEuLmZmMDg4M2E1NWYw
YjU5ZDcxYmE4MTIxMGMxZDNhOTIxMGIzYTkyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CkBAIC04NCwxNCArODQsMTQgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFuZ2U7CiAg
ICAgCiAgICAgLy8gT3B0aW9uYWwgcmV0dXJuIHZhbHVlcyB0byByZXByZXNlbnQgZGVmYXVsdCBz
dHJpbmcgZm9yIG1lbWJlcnMgb2YgRm9udEZhY2UuaAotICAgIGNvbnN0IE9wdGlvbmFsPENTU1Zh
bHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpG
YWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0
Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdl
PiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBz
dGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+Piht
X2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQotICAgIE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVz
ID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRl
V2lkdGgoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6
IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0
aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nh
c3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNh
cGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQotICAgIGNv
bnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2Fz
dDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQotICAgIGNvbnN0
IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRp
Y19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7
IH0KLSAgICBPcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQg
OiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0Jl
aGF2aW9yKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4gZmFtaWxp
ZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51
bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+PihtX2ZhbWls
aWVzLmdldCgpKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51
bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1f
Zm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2VpZ2h0KCkpOyB9CisgICAgc3RkOjpv
cHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHN0cmV0Y2goKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6
Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
cy5jb21wdXRlV2lkdGgoKSk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5n
ZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8g
c3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFu
Z2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVNsb3BlKCkpOyB9CisgICAg
c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8g
c3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVGb250U2VsZWN0
aW9uQ2FwYWJpbGl0aWVzKCkpOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8VW5p
Y29kZVJhbmdlPj4gcmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpG
YWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxWZWN0b3I8
VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9u
dEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpv
cHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPj4obV9mZWF0dXJlU2V0dGluZ3MpOyB9CisgICAg
c3RkOjpvcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25z
dCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAg
c3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPj4obV9sb2FkaW5n
QmVoYXZpb3IpOyB9CiAgICAgdm9pZCBzZXRXZWlnaHQoRm9udFNlbGVjdGlvblJhbmdlIHdlaWdo
dCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0gd2VpZ2h0OyB9CiAgICAg
dm9pZCBzZXRTdHJldGNoKEZvbnRTZWxlY3Rpb25SYW5nZSBzdHJldGNoKSB7IG1fZm9udFNlbGVj
dGlvbkNhcGFiaWxpdGllcy53aWR0aCA9IHN0cmV0Y2g7IH0KICAgICB2b2lkIHNldFN0eWxlKEZv
bnRTZWxlY3Rpb25SYW5nZSBpdGFsaWMpIHsgbV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLnNs
b3BlID0gaXRhbGljOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCA3
YjQyODcxZDJiOTUzMzhjY2Y1Yzk2MWY5ODM0NDY2MGNjZDEyZDI3Li44YWMxMjYwMDRlZWVmNzVh
ZjkyY2NiMGM3MzhhOGFhNThiMDRkMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJlcXVlc3QgY29t
cHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KENTU1Byb3BlcnR5UGFyc2VySGVscGVycwogICAgIEFT
U0VSVChzdHJldGNoU2VsZWN0aW9uVmFsdWUpOwogCiAgICAgYXV0byBzdHlsZUtleXdvcmQgPSBm
b250LnN0eWxlID8gZm9udC5zdHlsZS0+c3R5bGUgOiBDU1NWYWx1ZU5vcm1hbDsKLSAgICBhdXRv
IHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBbJl0gKCkgLT4gT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZh
bHVlPiB7CisgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gWyZdICgpIC0+IHN0ZDo6b3B0
aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQgPT0g
Q1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlSXRhbGljKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuaAppbmRleCAzMWMwMDA4MWNjNjQ4Y2I3Y2E0MDFmYzNmNDUxMjAxMjg2ZDlhNmQ0
Li5iNjFiZTdiZTI0NmZkOWNkMjE0ZmJkNWExMDgzYjgyOTdiZTZhMDEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuaApAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpOwogCi0gICAgdXNpbmcgRm9udFNlbGVjdGlvbktleSA9IE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25SZXF1ZXN0PjsKKyAgICB1c2luZyBGb250U2VsZWN0aW9uS2V5ID0gc3RkOjpvcHRpb25hbDxG
b250U2VsZWN0aW9uUmVxdWVzdD47CiAgICAgc3RydWN0IEZvbnRTZWxlY3Rpb25LZXlIYXNoIHsK
ICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRm9udFNlbGVjdGlvbktleSYga2V5
KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEZvbnRTZWxlY3Rpb25LZXkmIGEsIGNvbnN0IEZvbnRTZWxlY3Rpb25LZXkmIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCAxOGY5N2ZlZjdjNjk1YTFkM2I2ZWRlMzA1M2ZiMGVhY2QyOGFhM2QxLi45ODZlMTg0Y2JlYTQ2
NDMwNTlkZmYxNDNiY2U2OGIzOGFlYWM4OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250
Q2FjaGVJbnZhbGlkYXRlZCgpCiAgICAgZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFja3MoKTsK
IH0KIAotT3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9udFNlbGVjdG9yOjpyZXNvbHZlR2VuZXJp
Y0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRv
bVN0cmluZyYgZmFtaWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9udFNl
bGVjdG9yOjpyZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICBhdXRvIHBs
YXRmb3JtUmVzdWx0ID0gRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFt
aWx5KGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkTG9j
YWxlKCksIGZhbWlseU5hbWUpOwogICAgIGlmICghcGxhdGZvcm1SZXN1bHQuaXNOdWxsKCkpCkBA
IC0zMTAsNyArMzEwLDcgQEAgRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNG
b3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3IKICAgICBib29sIHJlc29s
dmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1pbHlOYW1lID09IG1fZm9udEZhbWlseU5hbWVzLmF0
KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KTsKIAogICAgIEF0b21TdHJpbmcgZmFt
aWx5Rm9yTG9va3VwID0gZmFtaWx5TmFtZTsKLSAgICBPcHRpb25hbDxGb250RGVzY3JpcHRpb24+
IG92ZXJyaWRlRm9udERlc2NyaXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0
aW9uPiBvdmVycmlkZUZvbnREZXNjcmlwdGlvbjsKICAgICBjb25zdCBGb250RGVzY3JpcHRpb24q
IGZvbnREZXNjcmlwdGlvbkZvckxvb2t1cCA9ICZmb250RGVzY3JpcHRpb247CiAgICAgYXV0byBy
ZXNvbHZlQW5kQXNzaWduR2VuZXJpY0ZhbWlseSA9IFsmXSgpIHsKICAgICAgICAgaWYgKGF1dG8g
Z2VuZXJpY0ZhbWlseU9wdGlvbmFsID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHkoZm9udERlc2NyaXB0
aW9uLCBmYW1pbHlOYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCA0
MzQ3ZTg1YTE1NjIzNGE5M2NlYmVkMTQ3YzIzMjZjMjFiNTFhZTg5Li44NTkwODY4NGIwY2UxNWFl
Yjg5YWU2ZWU4NTE2YjM3MTZlZDg5YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3Bwb3J0dW5pc3Rp
Y2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEF0b21T
dHJpbmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21TdHJpbmcmIGZhbWlseSk7CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiByZXNv
bHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiBmYW1pbHkpOwogCiAgICAgLy8gQ1NTRm9udEZhY2U6OkNsaWVudAogICAgIHZvaWQgZm9udExv
YWRlZChDU1NGb250RmFjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmgKaW5kZXggNDA2OTc5ODQ2N2RlOGE4MmVkMzQ1MmY0MmRlNjRjMDMyY2FlMWEzMy4uZjlhMTg3
NmEzMTBiM2JiNzVlOTY0ZWVhMTFiMWY2ZWFkODFiM2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhZGllbnRWYWx1ZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBDU1NHcmFk
aWVudFR5cGUgbV9ncmFkaWVudFR5cGU7CiAgICAgYm9vbCBtX3JlcGVhdGluZyB7IGZhbHNlIH07
CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1l
bnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzQ29sb3JEZXJpdmVkRnJv
bUVsZW1lbnQ7CiB9OwogCiBjbGFzcyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlIGZpbmFsIDogcHVi
bGljIENTU0dyYWRpZW50VmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUu
Y3BwCmluZGV4IDAwOTRjNjg0Y2RmMWI3YzU4MTk2NTJiMzExNzkzZDBiNTFiYmM1NWUuLjM2NTFl
ZWIzYzhlNThhNmRmYmZmZmE5MWUyZTBjOTQzNzVlNTZiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFN0eWxlUnVsZUtl
eWZyYW1lczo6d3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2lnbmVkIGluZGV4KQogICAgIG1fa2V5
ZnJhbWVzLnJlbW92ZShpbmRleCk7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gU3R5bGVSdWxlS2V5
ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmZpbmRLZXlmcmFtZUluZGV4KGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAgIHBhcnNlRGVmZXJyZWRSdWxlc0lmTmVlZGVk
KCk7CiAgICAgYXV0byBrZXlzID0gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lS2V5TGlzdChrZXkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKaW5kZXggYjQ4YjE1MjFhYmI1MzU5
ZTA5OTc3ZDUwMTZkZjE4MDIzYzA2NTFlMi4uZDQ4ODQ4YjVmN2ZmNGU1ODRlYmZjYzFjZTZlZTBm
MWIwYTdkZTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
IHsgbV9uYW1lID0gbmFtZTsgfQogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBmaW5kS2V5ZnJhbWVJ
bmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGZpbmRLZXlmcmFtZUluZGV4KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAogICAgIFJlZjxT
dHlsZVJ1bGVLZXlmcmFtZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlUnVsZUtleWZyYW1lcygqdGhpcykpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCmluZGV4IGE1OTUyMTU5YjBkODUwYWVjMjI3NjM4ZGI3YzBhZTA5Yzc5YzJm
ODAuLjE4ZWNhOTFmMmUxNjcxYzk3YjVlYmQyODRkNzU5ZTUxNzFiYmJhNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODMzLDIxICs4MzMsMjEgQEAgZG91
YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBy
aW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDID8gbV92YWx1ZS5udW0g
OiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IENTU1By
aW1pdGl2ZVZhbHVlOjppc1plcm8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUo
KSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNQb3NpdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVVuaXRU
eXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBtX3ZhbHVlLm51bSA+IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IENT
U1ByaW1pdGl2ZVZhbHVlOjppc05lZ2F0aXZlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzTmVnYXRpdmUoKSBjb25zdAogewogICAgIGlmIChwcmltaXRp
dmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTg1OSw3ICs4NTksNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpp
c0NlbnRlclBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdmFsdWVJRCgpID09IENTU1ZhbHVl
Q2VudGVyIHx8IGRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSkgPT0gNTA7
CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50
ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5
cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3JEb3VibGVDb252ZXJzaW9uKHByaW1pdGl2ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlkQ1NT
VW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
aW5kZXggZmUzMTY0MWIzODRiY2YwZGY1YjI3N2NiNzUxOTAyOGU1YmQ0OGVjZS4uZWM1ZjY1NWY0
YzllZmQ3NjcwNzE4MTZhMjRhODU2YTY5YWNkMzMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKQEAgLTE1Niw5ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRv
dWJsZVZhbHVlKCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSByZXR1cm4gbnVsbG9wdCBmb3IgY2Fs
YywgZm9yIHdoaWNoIHJhbmdlIGNoZWNraW5nIGlzIG5vdCBkb25lIGF0IHBhcnNlIHRpbWU6IDxo
dHRwczovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2NhbGMtcmFuZ2U+LgotICAgIE9wdGlv
bmFsPGJvb2w+IGlzWmVybygpIGNvbnN0OwotICAgIE9wdGlvbmFsPGJvb2w+IGlzUG9zaXRpdmUo
KSBjb25zdDsKLSAgICBPcHRpb25hbDxib29sPiBpc05lZ2F0aXZlKCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBpc1plcm8oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzUG9zaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTmVnYXRpdmUo
KSBjb25zdDsKICAgICBib29sIGlzQ2VudGVyUG9zaXRpb24oKSBjb25zdDsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIHZhbHVlKENTU1VuaXRUeXBlIHR5cGUpIGNvbnN0IHsg
cmV0dXJuIGNsYW1wVG88VD4oZG91YmxlVmFsdWUodHlwZSkpOyB9CkBAIC0yMzksNyArMjM5LDcg
QEAgcHJpdmF0ZToKICAgICBDU1NVbml0VHlwZSBwcmltaXRpdmVVbml0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1VuaXRUeXBlPihtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQog
ICAgIHZvaWQgc2V0UHJpbWl0aXZlVW5pdFR5cGUoQ1NTVW5pdFR5cGUgdHlwZSkgeyBtX3ByaW1p
dGl2ZVVuaXRUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOyB9CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IGRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgdGFyZ2V0VW5pdFR5
cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFs
KENTU1VuaXRUeXBlIHRhcmdldFVuaXRUeXBlKSBjb25zdDsKIAogICAgIGRvdWJsZSBjb21wdXRl
TGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggYTY0YWQ1
YWUyM2I2NjU5ZWRlYmIwMzE3ZDYwMDFhYTcwYmIxMzYzZC4uMjExZDIzNWUwOGI1Mjk1NjJkYWJj
NmYwNjFlMDdjY2JmYzYwYzcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
Z21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVk
Rm9udEZhY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBt
X3Jlc3VsdCAmJiBtX3Jlc3VsdC52YWx1ZSgpICYmIG1fcmVzdWx0LnZhbHVlKCktPmlzSW50ZXJz
dGl0aWFsKCk7CiAgICAgfQogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxSZWZQdHI8Rm9udD4+IG1f
cmVzdWx0OyAvLyBDYWNoZXMgbnVsbHB0ciB0b28KKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVzIG51bGxwdHIgdG9vCiAgICAgbXV0YWJs
ZSBSZWY8Q1NTRm9udEZhY2U+IG1fZm9udEZhY2U7CiAgICAgRm9udERlc2NyaXB0aW9uIG1fZm9u
dERlc2NyaXB0aW9uOwogICAgIGJvb2wgbV9zeW50aGV0aWNCb2xkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCmluZGV4IDZiNDM4OTZkMzhiNjZjMTRhMDY1ODBhZjZkYTA5ZGFjNDQ4
ZjVjMTkuLmEyNTY1YmU2NWQxNWEzNTYxYzRkMDAzOTU5MGEzZDRmYjg5NjFiNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTczLDcgKzczLDcgQEAgUmVmPENTU1N0eWxl
U2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNo
ZWV0LCBDU1NJbXAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1v
dmUoc2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAotUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxl
U2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBvd25l
ck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc0NsZWFuT3JpZ2luKQorUmVmPENTU1N0eWxl
U2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNo
ZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlzQ2xlYW5P
cmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3Zl
KHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4p
KTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKgogICAgIG1fY29u
dGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCi1DU1NTdHlsZVNoZWV0OjpDU1NTdHls
ZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVyTm9k
ZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVz
aGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCitDU1NTdHlsZVNoZWV0
OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUm
IG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaXNPcmlnaW5DbGVhbikK
ICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5
bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgLCBtX2lzT3JpZ2luQ2xlYW4oaXNPcmln
aW5DbGVhbikKQEAgLTI4Niw3ICsyODYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNo
ZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4
Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCitFeGNl
cHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7
CiAgICAgYXV0byB0ZXh0ID0gbWFrZVN0cmluZyhzZWxlY3RvciwgIiB7ICIsIHN0eWxlLCAhc3R5
bGUuaXNFbXB0eSgpID8gIiAiIDogIiIsICd9Jyk7CiAgICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0
ID0gaW5zZXJ0UnVsZSh0ZXh0LCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggZTdiZGUzYTRiZGQwZmU3ZWIzNjlhNGNkYmFkYzM1YzEx
OTk4NmU3NC4uMmQ1MDRiNjE2ZjViZTVkZjNjYzllNDVhMDI0NTZhMmZjY2MwMzZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFNjb3BlOwog
Y2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAgICBzdGF0aWMgUmVmPENT
U1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25l
ck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gc3RkOjpudWxsb3B0
KTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlz
T3JpZ2luQ2xlYW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVl
dD4gY3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIEVsZW1lbnQmIG93bmVy
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdmlydHVhbCB+Q1NT
U3R5bGVTaGVldCgpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1
bnNpZ25lZCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVs
ZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYg
c3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmlu
ZyYgc3R5bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBkZWxldGVSdWxlKGlu
ZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NSdWxlTGlzdC4KQEAgLTEzMiw3ICsxMzIsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJl
ZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7Ci0gICAgQ1NTU3R5
bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNv
bnN0IE9wdGlvbmFsPGJvb2w+Jik7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
KTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9z
OyB9CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJbmxpbmVTdHls
ZXNoZWV0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNEaXNhYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX211dGF0ZWRSdWxlcyB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9pc09y
aWdpbkNsZWFuOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAg
IFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmll
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXgg
NDUxNjljNGQ5MGJkY2I5ZTVhZTA4YzU0YTVjMWVmYmYxNmYxM2Q4YS4uM2ViOGYxY2I1ZDIyMWIy
NDA5ZGMyYWU3MTc4YjY0ZDk3NDY0NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC02NCwyMCArNjQsMjAgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRl
KGludCBzdGVwcywgT3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uPiBz
dGVwUG9zaXRpb24pCisgICAgc3RhdGljIFJlZjxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+
IGNyZWF0ZShpbnQgc3RlcHMsIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoc3RlcHMsIHN0ZXBQb3NpdGlvbikpOwog
ICAgIH0KIAogICAgIGludCBudW1iZXJPZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsg
fQotICAgIE9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0
KCkgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoaW50IHN0ZXBzLCBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24+
IHN0ZXBQb3NpdGlvbikKKyAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoaW50IHN0ZXBz
LCBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBv
c2l0aW9uKQogICAgICAgICA6IENTU1ZhbHVlKFN0ZXBzVGltaW5nRnVuY3Rpb25DbGFzcykKICAg
ICAgICAgLCBtX3N0ZXBzKHN0ZXBzKQogICAgICAgICAsIG1fc3RlcFBvc2l0aW9uKHN0ZXBQb3Np
dGlvbikKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBpbnQgbV9zdGVw
czsKLSAgICBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24+IG1fc3Rl
cFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBv
c2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKIH07CiAKIGNsYXNzIENTU1NwcmluZ1RpbWluZ0Z1bmN0
aW9uVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgKaW5kZXggNjhkMmI2MDNhOTgwY2IwZDEyZWJh
NzhhMzdhNjJlMmU2MjhhYWZmOC4uOGM4NWI3ZmFjZGE3N2RlNTUwNDAzNTY4ZGM5MTJkOTE2Mjdk
M2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJlbmRlclZpZXc7CiAKIGNsYXNzIENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEgewogcHVibGljOgotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRl
clZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21w
dXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0
aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZs
b2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUg
PSBzdGQ6Om51bGxvcHQsIFJlbmRlclN0eWxlKiB2aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25T
dHlsZSA9IG51bGxwdHIpCiAgICAgICAgIDogbV9zdHlsZShzdHlsZSkKICAgICAgICAgLCBtX3Jv
b3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJlbnRTdHlsZShwYXJlbnRTdHlsZSkK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoem9vbSA+IDApOwogICAg
IH0KIAotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIE9wdGlvbmFsPENTU1Byb3Bl
cnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0KQorICAgIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clZpZXcqIHJlbmRlclZpZXcsIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlU
b0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogbV9zdHlsZShzdHlsZSkKICAgICAg
ICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJlbnRTdHlsZShwYXJl
bnRTdHlsZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLCBtX3Jvb3RTdHlsZSwgbV9wYXJlbnRTdHlsZSwg
bV9yZW5kZXJWaWV3LCBuZXdab29tLCBtX3Byb3BlcnR5VG9Db21wdXRlKTsKICAgICB9CiAKLSAg
ICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvcHlXaXRoQWRqdXN0ZWRab29tQW5kUHJvcGVy
dHlUb0NvbXB1dGUoZmxvYXQgem9vbSwgT3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlU
b0NvbXB1dGUpIGNvbnN0CisgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb3B5V2l0aEFk
anVzdGVkWm9vbUFuZFByb3BlcnR5VG9Db21wdXRlKGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8
Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLCBtX3Jvb3RTdHlsZSwgbV9w
YXJlbnRTdHlsZSwgbV9yZW5kZXJWaWV3LCB6b29tLCBwcm9wZXJ0eVRvQ29tcHV0ZSk7CiAgICAg
fQpAQCAtOTUsOCArOTUsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBtX3Bh
cmVudFN0eWxlIHsgbnVsbHB0ciB9OwogICAgIFJlbmRlclN0eWxlKiBtX3ZpZXdwb3J0RGVwZW5k
ZW5jeURldGVjdGlvblN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFJlbmRlclZpZXcqIG1f
cmVuZGVyVmlldyB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxmbG9hdD4gbV96b29tOwotICAg
IE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IG1fcHJvcGVydHlUb0NvbXB1dGU7CisgICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gbV96b29tOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4g
bV9wcm9wZXJ0eVRvQ29tcHV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYzM1NGU5NzgyNzNiYTU2ZTJmZmI1NDdmZjM5MTgzMzlj
ZDBmY2NhZi4uNzU2NjQ3NTIzZmJkNjk2YjIyODAyNGVkM2U0YWYyMjYwOWRjZDlkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbS1kb21tYXRyaXhy
ZWFkb25seS1kb21tYXRyaXhyZWFkb25seQotRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERP
TU1hdHJpeDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkK
K0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBET01NYXRyaXg6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkKIHsKICAgICBpZiAoIWluaXQpCiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTU1hdHJpeCk7CkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojp0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCwgZG91
YmxlIHR5LCBkb3VibGUgdHopCiB9CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dlb21l
dHJ5LyNkb20tZG9tbWF0cml4LXNjYWxlc2VsZgotUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojpz
Y2FsZVNlbGYoZG91YmxlIHNjYWxlWCwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVksIGRvdWJsZSBz
Y2FsZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3JpZ2luWSwgZG91YmxlIG9yaWdpblopCitS
ZWY8RE9NTWF0cml4PiBET01NYXRyaXg6OnNjYWxlU2VsZihkb3VibGUgc2NhbGVYLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gc2NhbGVZLCBkb3VibGUgc2NhbGVaLCBkb3VibGUgb3JpZ2luWCwgZG91
YmxlIG9yaWdpblksIGRvdWJsZSBvcmlnaW5aKQogewogICAgIGlmICghc2NhbGVZKQogICAgICAg
ICBzY2FsZVkgPSBzY2FsZVg7CkBAIC0xODIsNyArMTgyLDcgQEAgUmVmPERPTU1hdHJpeD4gRE9N
TWF0cml4OjpzY2FsZTNkU2VsZihkb3VibGUgc2NhbGUsIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUg
b3JpZ2kKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbS1kb21t
YXRyaXgtcm90YXRlc2VsZgotUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojpyb3RhdGVTZWxmKGRv
dWJsZSByb3RYLCBPcHRpb25hbDxkb3VibGU+IHJvdFksIE9wdGlvbmFsPGRvdWJsZT4gcm90WikK
K1JlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90YXRlU2VsZihkb3VibGUgcm90WCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHJvdFksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RaKQogewogICAg
IGlmICghcm90WSAmJiAhcm90WikgewogICAgICAgICByb3RaID0gcm90WDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXguaAppbmRleCAzOTgxNmMxZDY2MzllYmZlZTJiYmM2YTgxZGUzOGRjMmIzNTI2ZTZlLi5k
NzU2ODQwNTg4YjAxYjA5OTUxMWY0NjU1NWRjMGE0YjFlMTgwYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1h
dHJpeC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IGNsYXNzIERPTU1hdHJpeCA6IHB1YmxpYyBET01NYXRyaXhSZWFkT25seSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYp
OworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91
YmxlPj4+JiYpOwogCiAgICAgc3RhdGljIFJlZjxET01NYXRyaXg+IGNyZWF0ZShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBJczJEIGlzMkQpCiAgICAgewpAQCAtNTMsOSArNTMs
OSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IG11bHRpcGx5U2Vs
ZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+
PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAgICBSZWY8RE9NTWF0
cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9IDAsIGRvdWJsZSB0
eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNjYWxlU2VsZihkb3VibGUgc2NhbGVYID0gMSwg
T3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAx
LCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblog
PSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2FsZVNlbGYoZG91YmxlIHNjYWxlWCA9IDEsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVog
PSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdp
blogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2FsZTNkU2VsZihkb3VibGUgc2NhbGUgPSAx
LCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblog
PSAwKTsKLSAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVTZWxmKGRvdWJsZSByb3RYID0gMCwgT3B0
aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxkb3VibGU+IHJvdFog
PSBzdGQ6Om51bGxvcHQpOyAvLyBBbmdsZXMgYXJlIGluIGRlZ3JlZXMuCisgICAgUmVmPERPTU1h
dHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9IDAsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBy
b3RZID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6bnVs
bG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiByb3Rh
dGVGcm9tVmVjdG9yU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7CiAgICAgUmVmPERP
TU1hdHJpeD4gcm90YXRlQXhpc0FuZ2xlU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwg
ZG91YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4K
ICAgICBSZWY8RE9NTWF0cml4PiBza2V3WFNlbGYoZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlz
IGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4MkRJ
bml0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4MkRJbml0LmgKaW5kZXggYzg3MWM0
OGZmOTRjOGM0YzAyNTNmYWFkNjhlYmVjYzI5ZjE4YTlkZC4uZjM5ZDI3OTU4NTFkYmU2MTc5NTZk
OGY0ZWI1Mjk4MjZhOWYxZTQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1h
dHJpeDJESW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgyREluaXQuaApA
QCAtMzAsMTggKzMwLDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBET01NYXRy
aXgyREluaXQgewotICAgIE9wdGlvbmFsPGRvdWJsZT4gYTsKLSAgICBPcHRpb25hbDxkb3VibGU+
IGI7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBjOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZDsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBmOwotICAgIE9wdGlv
bmFsPGRvdWJsZT4gbTExOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTEyOwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gbTIxOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTIyOwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gbTQxOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTQyOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBjOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmOworICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBtMTE7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG0xMjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbTIxOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
MjI7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG00MTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbTQyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1h
dHJpeEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhJbml0LmgKaW5kZXggZjVi
NTkzNGMwMzljNmJlNTNhNDk2NDcwYjBlMTcxOGJmMTI0ZjNlOC4uMTY4ZGIzZDNiYjczYTE4NTcz
NDM3OTdlNzYxMGU1YzY5ZTk1NzdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeEluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4SW5pdC5oCkBA
IC00MCw3ICs0MCw3IEBAIHN0cnVjdCBET01NYXRyaXhJbml0IDogRE9NTWF0cml4MkRJbml0IHsK
ICAgICBkb3VibGUgbTM0IHsgMCB9OwogICAgIGRvdWJsZSBtNDMgeyAwIH07CiAgICAgZG91Ymxl
IG00NCB7IDEgfTsKLSAgICBPcHRpb25hbDxib29sPiBpczJEOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXMyRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCmluZGV4IGMyNmNhNDYyYzg4NWJiYTQ4NzE1ZmYzYzU0
ZTA4ZGNhODVmYTBmNDguLjc1NDQ5Y2ZmNjExZjgwN2VmNjJlMTMzMmRjMzBkZGViN2U3ZDRmYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtNDQsNyArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRE9N
TWF0cml4UmVhZE9ubHkpOwogCiAvLyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8j
ZG9tLWRvbW1hdHJpeHJlYWRvbmx5LWRvbW1hdHJpeHJlYWRvbmx5Ci1FeGNlcHRpb25PcjxSZWY8
RE9NTWF0cml4UmVhZE9ubHk+PiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8U3Ry
aW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhS
ZWFkT25seT4+IERPTU1hdHJpeFJlYWRPbmx5OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywg
VmVjdG9yPGRvdWJsZT4+PiYmIGluaXQpCiB7CiAgICAgaWYgKCFpbml0KQogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBET01NYXRyaXhSZWFkT25seSk7CkBAIC0yOTEsNyArMjkxLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeFJlYWRPbmx5OjptdWx0aXBseShE
T01NYXRyaXhJbml0JiYgb3RoZXIpIGMKICAgICByZXR1cm4gbWF0cml4LT5tdWx0aXBseVNlbGYo
V1RGTW92ZShvdGhlcikpOwogfQogCi1SZWY8RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6
c2NhbGUoZG91YmxlIHNjYWxlWCwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVksIGRvdWJsZSBzY2Fs
ZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3JpZ2luWSwgZG91YmxlIG9yaWdpblopCitSZWY8
RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6c2NhbGUoZG91YmxlIHNjYWxlWCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHNjYWxlWSwgZG91YmxlIHNjYWxlWiwgZG91YmxlIG9yaWdpblgsIGRv
dWJsZSBvcmlnaW5ZLCBkb3VibGUgb3JpZ2luWikKIHsKICAgICBhdXRvIG1hdHJpeCA9IGNsb25l
QXNET01NYXRyaXgoKTsKICAgICByZXR1cm4gbWF0cml4LT5zY2FsZVNlbGYoc2NhbGVYLCBzY2Fs
ZVksIHNjYWxlWiwgb3JpZ2luWCwgb3JpZ2luWSwgb3JpZ2luWik7CkBAIC0zMDMsNyArMzAzLDcg
QEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVhZE9ubHk6OnNjYWxlM2QoZG91YmxlIHNjYWxl
LCBkb3VibGUgb3JpZ2luWCwgZG91YmxlIG8KICAgICByZXR1cm4gbWF0cml4LT5zY2FsZTNkU2Vs
ZihzY2FsZSwgb3JpZ2luWCwgb3JpZ2luWSwgb3JpZ2luWik7CiB9CiAKLVJlZjxET01NYXRyaXg+
IERPTU1hdHJpeFJlYWRPbmx5Ojpyb3RhdGUoZG91YmxlIHJvdFgsIE9wdGlvbmFsPGRvdWJsZT4g
cm90WSwgT3B0aW9uYWw8ZG91YmxlPiByb3RaKQorUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVh
ZE9ubHk6OnJvdGF0ZShkb3VibGUgcm90WCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJvdFksIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RaKQogewogICAgIGF1dG8gbWF0cml4ID0gY2xvbmVBc0RP
TU1hdHJpeCgpOwogICAgIHJldHVybiBtYXRyaXgtPnJvdGF0ZVNlbGYocm90WCwgcm90WSwgcm90
Wik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4IDhmOWVlZTExNjM4
ZmRhNjIzNjdkMTFiN2U5YzZkYTkwZjZiMGUwZTcuLmVjY2UzZjAyNjMwZWIxY2ExZTYwNzE2YzU4
ZTJiMzBmMmVmNGM4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhS
ZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCkBA
IC00Niw3ICs0Niw3IEBAIHN0cnVjdCBET01Qb2ludEluaXQ7CiBjbGFzcyBET01NYXRyaXhSZWFk
T25seSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTU1hdHJp
eFJlYWRPbmx5PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChET01NYXRyaXhSZWFkT25s
eSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25s
eT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8VmFyaWFudDxTdHJp
bmcsIFZlY3Rvcjxkb3VibGU+Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01N
YXRyaXhSZWFkT25seT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPGRvdWJsZT4+PiYmKTsKIAogICAgIGVudW0gY2xh
c3MgSXMyRCB7IE5vLCBZZXMgfTsKICAgICBzdGF0aWMgUmVmPERPTU1hdHJpeFJlYWRPbmx5PiBj
cmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgSXMyRCBpczJEKQpAQCAt
MTAxLDkgKzEwMSw5IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4g
bXVsdGlwbHkoRE9NTWF0cml4SW5pdCYmIG90aGVyKSBjb25zdDsKICAgICBSZWY8RE9NTWF0cml4
PiBmbGlwWCgpOwogICAgIFJlZjxET01NYXRyaXg+IGZsaXBZKCk7Ci0gICAgUmVmPERPTU1hdHJp
eD4gc2NhbGUoZG91YmxlIHNjYWxlWCA9IDEsIE9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZID0gc3Rk
OjpudWxsb3B0LCBkb3VibGUgc2NhbGVaID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUg
b3JpZ2luWSA9IDAsIGRvdWJsZSBvcmlnaW5aID0gMCk7CisgICAgUmVmPERPTU1hdHJpeD4gc2Nh
bGUoZG91YmxlIHNjYWxlWCA9IDEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6
Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBv
cmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2Fs
ZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9yaWdpblkg
PSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3Vi
bGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9u
YWw8ZG91YmxlPiByb3RaID0gc3RkOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVz
LgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcm90
WiA9IHN0ZDo6bnVsbG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9N
TWF0cml4PiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4ID0gMCwgZG91YmxlIHkgPSAwKTsKICAg
ICBSZWY8RE9NTWF0cml4PiByb3RhdGVBeGlzQW5nbGUoZG91YmxlIHggPSAwLCBkb3VibGUgeSA9
IDAsIGRvdWJsZSB6ID0gMCwgZG91YmxlIGFuZ2xlID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3Jl
ZXMuCiAgICAgUmVmPERPTU1hdHJpeD4gc2tld1goZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlz
IGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlv
blZhbHVlSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlu
bGluZXMuaAppbmRleCA5ODhiZjk3ZDA3YjQyZjM5MTY2MmIzODY3MGQ0Y2YwN2M2Njk3MzAyLi5m
ZDg3YzkwMGIzNjU1ZmFmZTcxOWVmZDBjYWRjNDAzYzRkNzI1Yzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
aW5saW5lIGJvb2wgaXNDU1MyMVdlaWdodChpbnQgd2VpZ2h0KQogICAgIHJldHVybiAhKCh3ZWln
aHQgJSAxMDApIHx8IHdlaWdodCA8IDEwMCB8fCB3ZWlnaHQgPiA5MDApOwogfQogCi1pbmxpbmUg
T3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdodEtleXdvcmQoRm9udFNlbGVjdGlvblZhbHVl
IHdlaWdodCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRXZWlnaHRLZXl3
b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQpCiB7CiAgICAgaWYgKHdlaWdodCA9PSBub3Jt
YWxXZWlnaHRWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVOb3JtYWw7CkBAIC01Nyw3
ICs1Nyw3IEBAIGlubGluZSBPcHRpb25hbDxDU1NWYWx1ZUlEPiBmb250V2VpZ2h0S2V5d29yZChG
b250U2VsZWN0aW9uVmFsdWUgd2VpZ2h0KQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRXZWlnaHRWYWx1ZShDU1NW
YWx1ZUlEIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBm
b250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJRCB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHZhbHVlKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFdlaWdodFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUp
CiAgICAgfQogfQogCi1pbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3
b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NT
VmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQog
ewogICAgIGlmIChzdHJldGNoID09IHVsdHJhQ29uZGVuc2VkU3RyZXRjaFZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkOwpAQCAtOTUsNyArOTUsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25W
YWx1ZSBzdHJldGNoKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRp
b25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRTdHJldGNoVmFsdWUoQ1NTVmFsdWVJRCB2YWx1
ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hW
YWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAgIHN3aXRjaCAodmFsdWUpIHsKICAgICBjYXNl
IENTU1ZhbHVlVWx0cmFDb25kZW5zZWQ6CkBAIC0xMjEsNyArMTIxLDcgQEAgaW5saW5lIE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVl
KQogICAgIH0KIH0KIAotaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRTdHlsZUtleXdv
cmQoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHlsZSwgRm9udFN0eWxlQXhpcyBheGlz
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0eWxlS2V5d29yZChzdGQ6
Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gc3R5bGUsIEZvbnRTdHlsZUF4aXMgYXhpcykK
IHsKICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLnZhbHVlKCkgPT0gbm9ybWFsSXRhbGljVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGIzNjA5YzJlODEyZTg3NWY3MDE5ZmI4MzliYjA3
MWMwOWRmMjkyNmQuLmE0N2IyZmU1NDlhODk0MTRhMjA3ODY0YWFiZTg5N2QwN2E1OTcyN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTI1Nyw3ICsy
NTcsNyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFs
dWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogICAgIHJldHVybiBjb21wYXJlVmFsdWUo
d2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRvclZhbHVlKCksIGhlaWdodCAqIGFzcGVjdFJh
dGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4g
ZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5p
c051bWJlcigpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDgyLDcgKzQ4Miw3
IEBAIHN0YXRpYyBib29sIGdyaWRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtCiAgICAgcmV0dXJuIHplcm9FdmFsdWF0ZSh2YWx1
ZSwgb3ApOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb21wdXRlTGVuZ3RoKENTU1Zh
bHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
IGNvbnZlcnNpb25EYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wdXRlTGVu
Z3RoKENTU1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0MCw3ICs3NDAs
NyBAQCBzdGF0aWMgYm9vbCBhbnlIb3ZlckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsCiBzdGF0aWMgYm9vbCBwb2ludGVyRXZhbHVhdGUo
Q1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUm
IGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCiB7CiAgICAgYXV0byogcGFnZSA9IGZyYW1lLnBh
Z2UoKTsKLSAgICBhdXRvIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0Rl
dmljZSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6IE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M+KCk7CisgICAgYXV0byBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRp
bmdEZXZpY2UgPSBwYWdlID8gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucG9pbnRlckNoYXJhY3Rl
cmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgOiBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3M+KCk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChw
b2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UgPT0gUG9pbnRlckNo
YXJhY3RlcmlzdGljczo6Q29hcnNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
aW5kZXggZDFhM2Y3YTdkMGEwNDE5NGFhZTg3MWY0YjU4MDgxZGZmZDNiNzIwOC4uODQ4ZjhjNDQ2
NWY1MTAwOGMzNjIwNTk0YzZjMDAwNWQ5NDY1NWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3QgU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlIHJlc29sdmluZ01vZGU7CiAgICAgICAgIFBzZXVkb0lkIHBzZXVk
b0lkIHsgUHNldWRvSWQ6Ok5vbmUgfTsKLSAgICAgICAgT3B0aW9uYWw8U3R5bGVTY3JvbGxiYXJT
dGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGVTY3JvbGxi
YXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CiAgICAgICAgIEF0b21TdHJpbmcgbmFtZUZvckhpZ2h0
bGlnaHRQc2V1ZG9FbGVtZW50OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSB7
IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBpc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggYzEzN2M1OTgx
Zjc3ZWVmNTJlY2E2NTNiYjhmOWFlNGEwZWU2ZWY3Ni4uNmY2Y2U0MWQ5NzFmYTI0MTUxNWYwYmNl
NDRlZTVmODBmNDNiZGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAK
QEAgLTMwNCw3ICszMDQsNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKICAgICB9CiB9CiAKLU9wdGlvbmFs
PENvbG9yPiBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5QXNDb2xvcihDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAorc3RkOjpvcHRpb25hbDxDb2xvcj4gU3R5bGVQcm9wZXJ0aWVzOjpwcm9w
ZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKICAgICBhdXRvIGNv
bG9yVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICBpZiAoIWlzPENT
U1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaAppbmRleCAwMjY1YmFkYjk5YzY1OGViYjc1OWNhYjVlMDIzZDcwZDg0YTM3NzAyLi5iMDIx
YWViN2MyMDM3MGM5ZmMxN2JlNWZiNGM1ZmY2ZTQxN2ZiN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlE
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPENvbG9yPiBw
cm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxDb2xvcj4gcHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5SUQpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIENTU1ZhbHVlSUQgcHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJv
cGVydHlJRCkgY29uc3Q7CiAKICAgICBib29sIHByb3BlcnR5SXNJbXBvcnRhbnQoQ1NTUHJvcGVy
dHlJRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxj
RXhwcmVzc2lvbk5vZGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlUGFyc2VyLmNwcAppbmRleCBjMDdkZjdhMWI2NjE5N2Q0YjUxOGY5YjU0
NGFhOGYxYmE2ZDZjODY0Li42MTAwYmRjODJiMzQwOGU0NDdiM2UzZDEwOGUzOGNhNmI0YzEyYWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjRXhwcmVzc2lvbk5v
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNFeHByZXNz
aW9uTm9kZVBhcnNlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIENTU0NhbGNFeHByZXNz
aW9uTm9kZVBhcnNlcjo6cGFyc2VDYWxjRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9r
ZW5zLAogCiAgICAgLy8gImFyZ3VtZW50cyIgcmVmZXJzIHRvIHRoaW5ncyBiZXR3ZWVuIGNvbW1h
cy4KICAgICB1bnNpZ25lZCBtaW5Bcmd1bWVudENvdW50ID0gMTsKLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gbWF4QXJndW1lbnRDb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtYXhB
cmd1bWVudENvdW50OwogCiAgICAgc3dpdGNoIChmdW5jdGlvbklEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZU1pbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNPcGVy
YXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNPcGVyYXRpb25O
b2RlLmNwcAppbmRleCA5YjdlNzQ3ODk3ZDJkMmY4YTM1ODc1ODJlNTRiNDJkMjM1MDZkOWY4Li42
MWJjZDcxNWNhZWJlN2QzMGE2NzVlZjQ2MzA3ZTZiYmI1NzM1N2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjT3BlcmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwCkBAIC0zMDgsNyArMzA4
LDcgQEAgUmVmUHRyPENTU0NhbGNPcGVyYXRpb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6
Y3JlYXRlTWluT3JNYXhPckNsYW1wKENhbGNPcGUKICAgICBBU1NFUlQob3AgPT0gQ2FsY09wZXJh
dG9yOjpNaW4gfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpNYXggfHwgb3AgPT0gQ2FsY09wZXJhdG9y
OjpDbGFtcCk7CiAgICAgQVNTRVJUX0lNUExJRVMob3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCwg
dmFsdWVzLnNpemUoKSA9PSAzKTsKIAotICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+
IGNhdGVnb3J5ID0gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2FsY3VsYXRpb25D
YXRlZ29yeT4gY2F0ZWdvcnkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6
IHZhbHVlcykgewogICAgICAgICBhdXRvIHZhbHVlQ2F0ZWdvcnkgPSByZXNvbHZlZFR5cGVGb3JN
aW5Pck1heE9yQ2xhbXAodmFsdWUtPmNhdGVnb3J5KCksIGRlc3RpbmF0aW9uQ2F0ZWdvcnkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXggZmE1ZTczMDg0ZTM0
NjE5ZjljMTI2ZWQ0NTlhZjAwZGZlMzUyMjA1YS4uNDA2ZGI4YzhkZTVlMzRlZmNjZTAxMGY4MGI3
ZGRjY2I3ZjIxMTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcApA
QCAtMTE2LDEyICsxMTYsMTIgQEAgQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lz
dGVtQ29sb3Ioa2V5d29yZCwgeyB9KTsKIH0KIAotT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENT
U1BhcnNlcjo6cGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyOjpwYXJzZU5hbWVkQ29sb3IoU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgcmV0dXJuIENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VOYW1lZENvbG9y
KHN0cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXI6OnBhcnNl
SGV4Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBDU1NQYXJzZXI6OnBhcnNlSGV4Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0
dXJuIENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VIZXhDb2xvcihzdHJpbmcpOwogfQpAQCAtMTU1
LDcgKzE1NSw3IEBAIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRlY2xhcmF0aW9uCiAgICAgcmV0dXJuIENTU1BhcnNl
ckltcGw6OnBhcnNlVmFsdWUoJmRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9y
dGFudCwgbV9jb250ZXh0KTsKIH0KIAotT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBDU1NQYXJz
ZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPENT
U1NlbGVjdG9yTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewogICAgIHJldHVybiBwYXJzZUNTU1NlbGVjdG9yKENTU1Rva2VuaXplcihzdHJpbmcp
LnRva2VuUmFuZ2UoKSwgbV9jb250ZXh0LCBudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5oCmluZGV4IDYwZjE0ZDc4YzUxMTdlZTEyMTU2ZWMzZWY0NDY2NDFjMWNm
OWMyMGMuLmM5OGM5ZTFhNWU1NzhkYzlkYWQzYWUzNmE5YTQ3YmEzYzhmMjdkMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApAQCAtODUsMTQgKzg1LDE0IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgY29u
c3QgRWxlbWVudCopOwogCi0gICAgT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZVNlbGVj
dG9yKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBw
YXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1
ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
b2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAg
IHN0YXRpYyBDb2xvciBwYXJzZVN5c3RlbUNvbG9yKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBP
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENv
bG9yKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcpOwogCiBwcml2YXRlOgogICAgIFBhcnNlUmVzdWx0
IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1Byb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgKaW5kZXggNTM0MjYwMTY3NDk1ZTg2MzAxNjBkMGJmMTY5NzczNGI3
OGE3OWI4MC4uMzRkMWQ0NWYzYTNiNGJhMDc1NzlmNjk2MzM5YWE1YTdkMWM5Y2M4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFVSTCBiYXNlVVJMOwogICAgIFN0
cmluZyBjaGFyc2V0OwogICAgIENTU1BhcnNlck1vZGUgbW9kZSB7IEhUTUxTdGFuZGFyZE1vZGUg
fTsKLSAgICBPcHRpb25hbDxTdHlsZVJ1bGVUeXBlPiBlbmNsb3NpbmdSdWxlVHlwZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVuY2xvc2luZ1J1bGVUeXBlOwogICAgIGJvb2wg
aXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwogCiAgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0
byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAppbmRleCBjZGI1ZjUwMzQ2NmVlY2E5NmFmMDM4
NjE3ZmVmZDdmMWZiZWUyNGFmLi45MWI0YjZiYTU1ZTRmYzBmZDU5NThjNjMyOTkzNWRkMmViZmYy
MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0
aHMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGludCBwYXJzZURvdWJsZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY28KIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8dWludDhf
dD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5n
LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NTVW5p
dFR5cGUmIGV4cGVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlQ29sb3JJ
bnRPclBlcmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFj
dGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIENTU1VuaXRUeXBlJiBleHBlY3Qp
CiB7CiAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY3VycmVudCA9IHN0cmluZzsKICAgICBkb3Vi
bGUgbG9jYWxWYWx1ZSA9IDA7CkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzVGVudGhBbHBoYShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IGludCBsZW5n
dGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGlu
ZSBPcHRpb25hbDx1aW50OF90PiBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSom
IHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3Ip
CitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gcGFyc2VBbHBoYVZhbHVlKGNv
bnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29u
c3QgY2hhciB0ZXJtaW5hdG9yKQogewogICAgIHdoaWxlIChzdHJpbmcgIT0gZW5kICYmIGlzSFRN
TFNwYWNlPENoYXJhY3RlclR5cGU+KCpzdHJpbmcpKQogICAgICAgICBzdHJpbmcrKzsKQEAgLTQw
NSw3ICs0MDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1syXSwgJ2InKTsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3QgdmFsdWUs
IHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBm
aW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3QgdmFsdWUsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgIGNhc2UgMzoKQEAgLTQzNiw3ICs0MzYsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdIZXhDb2xvcih1aW50
MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gcGFyc2VIZXhDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9ySW50ZXJuYWwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGlmIChsZW5ndGggIT0gMyAmJiBsZW5ndGggIT0gNCAmJiBsZW5ndGggIT0gNiAmJiBsZW5ndGgg
IT0gOCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWlu
dDhfdD4+IHBhcnNlSGV4Q29sb3JJbgogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nSGV4Q29sb3Io
dmFsdWUsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sb3IoY29uc3QgQ2hh
cmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHN0cmljdCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2xvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgc3RyaWN0KQogewogICAgIGlmIChsZW5ndGggPj0g
NCAmJiBjaGFyYWN0ZXJzWzBdID09ICcjJykgewogICAgICAgICBpZiAoYXV0byBoZXhDb2xvciA9
IHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSkpCkBAIC01
MDcsNyArNTA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2wKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTnVtZXJp
Y0NvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTnVtZXJpY0NvbG9y
KFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIGJvb2wgc3RyaWN0ID0gIWlzUXVpcmtzTW9kZUJlaGF2aW9yKGNvbnRleHQubW9kZSk7CiAg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSkKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjbwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBh
cnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGJ1
ZmZlcltsZW5ndGhdID0gJ1wwJzsKICAgICBhdXRvIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IoYnVm
ZmVyLCBsZW5ndGgpOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1
aW50OF90Pj4gZmluaXNoUGFyc2luZ05hbWVkQ29sb3IoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBs
CiAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdC
VmFsdWUgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBh
cnNlTmFtZWRDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBjaGFyIGJ1ZmZlcls2NF07IC8vIEVhc2lseSBiaWcgZW5v
dWdoIGZvciB0aGUgbG9uZ2VzdCBjb2xvciBuYW1lLgogICAgIGlmIChsZW5ndGggPiBzaXplb2Yo
YnVmZmVyKSAtIDEpCkBAIC01NTIsMjggKzU1MiwyOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xv
cgogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nTmFtZWRDb2xvcihidWZmZXIsIGxlbmd0aCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBzdHJpY3QpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4g
cGFyc2VTaW1wbGVDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBzdHJpY3QpCiB7CiAgICAgaWYgKGF1dG8gY29sb3IgPSBw
YXJzZU51bWVyaWNDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0cmljdCkpCiAgICAgICAgIHJl
dHVybiBjb2xvcjsKICAgICByZXR1cm4gcGFyc2VOYW1lZENvbG9ySW50ZXJuYWwoY2hhcmFjdGVy
cywgbGVuZ3RoKTsKIH0KIAotT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlckZhc3RQ
YXRoczo6cGFyc2VTaW1wbGVDb2xvcihTdHJpbmdWaWV3IHN0cmluZywgYm9vbCBzdHJpY3QpCitz
dGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2lt
cGxlQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcsIGJvb2wgc3RyaWN0KQogewogICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZVNpbXBsZUNvbG9ySW50ZXJuYWwoc3Ry
aW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgc3RyaWN0KTsKICAgICByZXR1cm4g
cGFyc2VTaW1wbGVDb2xvckludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCBzdHJpY3QpOwogfQogCi1PcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2Vy
RmFzdFBhdGhzOjpwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZUhleENvbG9yKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVy
biBwYXJzZUhleENvbG9ySW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7CiAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3JJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLU9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBD
U1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlTmFtZWRDb2xvcihTdHJpbmdWaWV3IHN0cmluZykKK3N0
ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VOYW1l
ZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAg
ICAgICAgIHJldHVybiBwYXJzZU5hbWVkQ29sb3JJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckZhc3RQYXRocy5oCmluZGV4IGY3MTIzN2FhNDM5OGE4ODMxY2JmN2QzZGEyNWM5ZGEwMzMx
ODNiMjkuLjg0OTY5NDRkNzE0MzQxMWNjMTRiYmY0NzJlMzY0M2EyM2Y5OTZlN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaApAQCAtNTUsOSAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFu
ZFZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
KTsKIAogICAgIC8vIFBhcnNlcyBudW1lcmljIGFuZCBuYW1lZCBjb2xvcnMuCi0gICAgc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcsIGJv
b2wgc3RyaWN0ID0gZmFsc2UpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4g
cGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsgLy8gSGV4IGNvbG9ycyBvZiBsZW5ndGggMywgNCwg
Niwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIjIi4KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8
dWludDhfdD4+IHBhcnNlTmFtZWRDb2xvcihTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvcihTdHJpbmdWaWV3LCBib29s
IHN0cmljdCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsgLy8gSGV4IGNvbG9ycyBvZiBsZW5ndGggMywg
NCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIjIi4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcAppbmRleCBmZDUxMDYxOTczZTI1MGM5ZjVkZDEyNmQ4MWM4YTc4MzMz
NWM3YWYzLi5kNzRmOTRlMTA1NjJhYTg0NWFhZjc3OTdlNjZhM2RjMjkwN2NhZDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDI0
LDggKzQyNCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEaXNwbGF5KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIH0KIAogICAgIC8vIFBhcnNlIFsgPGRpc3BsYXkt
b3V0c2lkZT4gfHwgPGRpc3BsYXktaW5zaWRlPiBdCi0gICAgT3B0aW9uYWw8Q1NTVmFsdWVJRD4g
cGFyc2VkRGlzcGxheU91dHNpZGU7Ci0gICAgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2VkRGlz
cGxheUluc2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHBhcnNlZERpc3BsYXlP
dXRzaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2VkRGlzcGxheUluc2lk
ZTsKICAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKICAgICAgICAgYXV0byBuZXh0VmFsdWVJ
RCA9IHJhbmdlLnBlZWsoKS5pZCgpOwogICAgICAgICBzd2l0Y2ggKG5leHRWYWx1ZUlEKSB7CkBA
IC0xMzU2LDcgKzEzNTYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU3RlcHMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgaWYgKCFzdGVwc1ZhbHVlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9u
OjpTdGVwUG9zaXRpb24+IHN0ZXBQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGlt
aW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uOwogICAgIGlmIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CiAgICAgICAgIHN3aXRjaCAoYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1
ZUp1bXBTdGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCAwYjRmNmJmYjgyYWNiMDc4N2ZiMTY3ODE0N2Vk
NWE2NWJmMTFiYWZlLi41NDQzYmIwZTIxZjcwYmRlZjQ3NjE5ODMxYmZkYjUyZjBiMjEwM2ExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwCkBAIC04Niw3ICs4Niw3IEBAIENTU1BhcnNlclRva2VuUmFuZ2UgY29uc3Vt
ZUZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBjb250ZW50
czsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlck9yUGVyY2VudERp
dmlkZWRCeTEwMFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1
ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBj
b25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpCiB7CiAgICAg
aWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KHJhbmdlLCB2YWx1ZVJhbmdlKSkK
ICAgICAgICAgcmV0dXJuICpwZXJjZW50IC8gMTAwLjA7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3RkOjpyb3VuZChz
dGQ6Om1heChtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgbWluaW11bVZhbHVlKSksIENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRU
eXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoZG91YmxlIG1pbmlt
dW1WYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBzdGQ6Om9wdGlvbmFsPElu
dFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhkb3VibGUgbWluaW11bVZhbHVlKQogICAgIHsK
ICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZVBv
b2wuY3JlYXRlVmFsdWUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIENTU1VuaXRUeXBlOjpD
U1NfTlVNQkVSKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJS
YXcoKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KCkKICAgICB7
CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0g
Q2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NhbGNW
YWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVQZXJjZW50UmF3KCkKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRS
YXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QW5n
bGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCisgICAgc3RkOjpvcHRpb25hbDxBbmdsZVJhdz4gY29u
c3VtZUFuZ2xlUmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwgbV9jYWxj
VmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5nbGUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpLCBtX2NhbGNWYWx1
ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TGVuZ3RoUmF3PiBj
b25zdW1lTGVuZ3RoUmF3KCkKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxl
bmd0aFJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVl
LT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBlKCksIG1fY2FsY1ZhbHVlLT5k
b3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRS
YXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoKQorICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3Ro
T3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KCkKICAgICB7CiAgICAgICAg
IGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTVmFsdWVQb29sJiBtX3ZhbHVlUG9vbDsK
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IE9wdGlvbmFsPEludFR5cGU+IGNvbnN1
bWVJbnRlZ2VyVHlwZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmlt
dW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50VHlw
ZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3Vi
bGUgbWluaW11bVZhbHVlKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CkBAIC0y
MjYsNyArMjI2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50VHlwZT4gT3B0aW9uYWw8SW50VHlw
ZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1BhcnNlclRva2UKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1PcHRpb25hbDxpbnQ+IGNvbnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQorc3RkOjpvcHRpb25hbDxpbnQ+
IGNvbnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWlu
aW11bVZhbHVlKQogewogICAgIHJldHVybiBjb25zdW1lSW50ZWdlclR5cGVSYXc8aW50PihyYW5n
ZSwgbWluaW11bVZhbHVlKTsKIH0KQEAgLTIzOCw3ICsyMzgsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3Vi
bGUgbWluaQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gY29u
c3VtZVBvc2l0aXZlSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGNvbnN1bWVQb3NpdGl2ZUludGVnZXJSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyVHlwZVJhdzx1bnNp
Z25lZD4ocmFuZ2UsIDEpOwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVt
YmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2Up
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQogewogICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51
bWJlclRva2VuKSB7CkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGRpdmlz
aWJsZUJ5MTAwKGRvdWJsZSB2YWx1ZSkKIH0KICNlbmRpZgogCi1PcHRpb25hbDxkb3VibGU+IGNv
bnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIC8vIFZhbHVlcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
MCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTAwMCBhcmUgcGFyc2UgZXJyb3JzLgogICAg
IGF1dG8mIHRva2VuID0gcmFuZ2UucGVlaygpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIGlubGluZSBi
b29sIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsCiAgICAgcmV0dXJuIGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJrc01v
ZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3c7CiB9CiAKLU9wdGlvbmFsPExl
bmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNz
UXVpcmsgdW5pdGxlc3MpCitzdGQ6Om9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAg
Y29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKQEAgLTQwOCw3ICs0MDgsNyBAQCBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxkb3Vi
bGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJh
bmdlIHZhbHVlUmFuZ2UpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBzdGF0
aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnks
IENTU1BhcnNlck1vZGUgY3NzUAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8TGVu
Z3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFs
dWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3N0ZDo6b3B0aW9uYWw8TGVuZ3RoT3JQ
ZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5n
ZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25U
b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKQEAgLTUwOCw3ICs1MDgsNyBA
QCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRp
b25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIFVu
aXRsZXNzWmVyb1F1aXJrIHVuaXRsZXNzWmVybykKK3N0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGNv
bnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBVbml0bGVzc1plcm9RdWlyayB1
bml0bGVzc1plcm8pCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKQEAgLTYz
NSw3ICs2MzUsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBBbGxvd1hSZQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjU0
LDcgKzY1NCw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50V29ya2Vy
U2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhbmdlUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQor
c3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYW5nZVJhdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsK
ICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+
IHVwcGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzM3LDcgKzczNyw3IEBA
IHN0YXRpYyBDb2xvciBjb25zdW1lT3JpZ2luQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgY29uc3QgQ1NTUGFyc2VyQ29udGV4CiAgICAgcmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9yRnJv
bUtleXdvcmQoa2V5d29yZCwgeyB9KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29u
c3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogewogICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShy
YW5nZSkpCiAgICAgICAgIHJldHVybiAxLjA7CkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gY29uc3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8Q1NTVmFsdWVJ
RC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1Zh
bHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZU9wdGlvbmFsQWxw
aGFPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIGFs
cGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEocmFuZ2UpKQogICAgICAgICByZXR1cm4geyAqYWxw
aGEgfTsKQEAgLTc1OSw3ICs3NTksNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJ
ZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVI
dWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2UsIGNvbnRleHQubW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyhhbmdsZS0+dHlwZSwg
YW5nbGUtPnZhbHVlKTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91Ymxl
PiBjb25zdW1lSHVlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJD
bwogICAgIHJldHVybiBjb25zdW1lTnVtYmVyUmF3KHJhbmdlKTsKIH0KIAotdGVtcGxhdGU8Q1NT
VmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUs
IENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3RlbXBsYXRlPENTU1ZhbHVlSUQu
Li4gYWxsb3dlZElkZW50cz4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENT
U1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBodWUgPSBj
b25zdW1lSHVlKHJhbmdlLCBjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHsgKmh1ZSB9OwpAQCAt
NzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBkb3VibGUgbm9ybWFsaXplSHVlKGRvdWJsZSBodWUpCiAg
ICAgcmV0dXJuIHN0ZDo6Zm1vZChzdGQ6OmZtb2QoaHVlLCAzNjAuMCkgKyAzNjAuMCwgMzYwLjAp
OwogfQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2Vk
SWRlbnRzPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+
IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAg
IGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpKQogICAgICAgICByZXR1
cm4geyAqbnVtYmVyIH07CkBAIC03OTQsNyArNzk0LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4u
LiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVl
SUQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RD4+IGNvbnN1bWVQZXJjZW50T3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3Rl
bXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQ
ZXJjZW50UmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnBlcmNlbnQgfTsKQEAgLTg2Nyw3
ICs4NjcsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lUkdCT3JIU0xBbHBoYVNlcGFyYXRvcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBSR0JPckhTTFNlcAogICAgIHJldHVybiBjb25zdW1lU2xh
c2hJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91Ymxl
PiBjb25zdW1lUkdCT3JIU0xPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IFJHQk9ySFNMU2VwYXJhdG9yU3ludGF4IHN5bnRheCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gY29uc3VtZVJHQk9ySFNMT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBSR0JPckhTTFNlcGFyYXRvclN5bnRheCBzeW50YXgpCiB7CiAgICAgaWYgKCFjb25zdW1l
UkdCT3JIU0xBbHBoYVNlcGFyYXRvcihhcmdzLCBzeW50YXgpKQogICAgICAgICByZXR1cm4gMS4w
OwpAQCAtODc3LDEwICs4NzcsMTAgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVJH
Qk9ySFNMT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLAogCiBzdHJ1Y3Qg
UmVsYXRpdmVSR0JDb21wb25lbnQgewogICAgIFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiB2
YWx1ZTsKLSAgICBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0
aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gdHlwZTsKIH07CiAKLXRlbXBsYXRlPENTU1ZhbHVlSUQg
Qz4gc3RhdGljIE9wdGlvbmFsPFJlbGF0aXZlUkdCQ29tcG9uZW50PiBjb25zdW1lUmVsYXRpdmVS
R0JDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgT3B0aW9uYWw8UkdCQ29tcG9u
ZW50VHlwZT4gY29tcG9uZW50VHlwZSkKK3RlbXBsYXRlPENTU1ZhbHVlSUQgQz4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBv
bmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBzdGQ6Om9wdGlvbmFsPFJHQkNvbXBvbmVu
dFR5cGU+IGNvbXBvbmVudFR5cGUpCiB7CiAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7CiAgICAg
ICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCkBAIC05MjEsNyAr
OTIxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMKICAgICBpZiAoIW9yaWdpbkNvbG9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVu
dFR5cGU+IGNvbXBvbmVudFR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxSR0JDb21wb25lbnRUeXBl
PiBjb21wb25lbnRUeXBlOwogICAgIGF1dG8gcmVkUmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdC
Q29tcG9uZW50PENTU1ZhbHVlUj4oYXJncywgY29tcG9uZW50VHlwZSk7CiAgICAgaWYgKCFyZWRS
ZXN1bHQpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC05ODYsNyArOTg2LDcgQEAgdGVtcGxhdGU8
UkdCRnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW4KICAgICAgICAgUkdCQ29tcG9uZW50VHlwZSB0eXBlOwogICAgIH07CiAK
LSAgICBhdXRvIGNvbnN1bWVJbml0aWFsQ29tcG9uZW50ID0gW10oYXV0byYgYXJncykgLT4gT3B0
aW9uYWw8SW5pdGlhbENvbXBvbmVudD4geworICAgIGF1dG8gY29uc3VtZUluaXRpYWxDb21wb25l
bnQgPSBbXShhdXRvJiBhcmdzKSAtPiBzdGQ6Om9wdGlvbmFsPEluaXRpYWxDb21wb25lbnQ+IHsK
ICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKICAgICAg
ICAgICAgIHJldHVybiB7IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH0gfTsK
ICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQpAQCAt
MTYwMSw3ICsxNjAxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9u
UGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY28KICAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIGlmIChjb25zdW1lZFRvKSB7Ci0gICAgICAgIGF1dG8gdGFyZ2V0Q29udHJh
c3QgPSBbJl0gKCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CisgICAgICAgIGF1dG8gdGFyZ2V0Q29u
dHJhc3QgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgICAgIGlm
IChjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVBQT4oYXJncykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIDQuNTsKICAgICAgICAgICAgIGlmIChjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVBQUxhcmdl
PihhcmdzKSkKQEAgLTE2MjksOSArMTYyOSw5IEBAIGVudW0gY2xhc3MgQ29sb3JNaXhDb2xvclNw
YWNlIHsKICAgICBMY2gKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvck1peENvbG9yU3BhY2U+
IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRDb21tYShDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3JNaXhDb2xvclNwYWNlPiBjb25zdW1lQ29s
b3JNaXhDb2xvclNwYWNlQW5kQ29tbWEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsKLSAg
ICBhdXRvIGNvbnN1bWVJZGVudEFuZENvbW1hID0gW10oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgQ29sb3JNaXhDb2xvclNwYWNlIGNvbG9yU3BhY2UpIC0+IE9wdGlvbmFsPENvbG9yTWl4Q29s
b3JTcGFjZT4geworICAgIGF1dG8gY29uc3VtZUlkZW50QW5kQ29tbWEgPSBbXShDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBDb2xvck1peENvbG9yU3BhY2UgY29sb3JTcGFjZSkgLT4gc3RkOjpv
cHRpb25hbDxDb2xvck1peENvbG9yU3BhY2U+IHsKICAgICAgICAgY29uc3VtZUlkZW50UmF3KGFy
Z3MpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTY1OCwxMCArMTY1OCwxMCBA
QCBzdGF0aWMgT3B0aW9uYWw8Q29sb3JNaXhDb2xvclNwYWNlPiBjb25zdW1lQ29sb3JNaXhDb2xv
clNwYWNlQW5kQ29tbWEoQ1NTUGFyc2VyVAogCiBzdHJ1Y3QgQ29sb3JNaXhDb21wb25lbnQgewog
ICAgIENvbG9yIGNvbG9yOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gcGVyY2VudGFnZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGVyY2VudGFnZTsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxD
b2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgQ29sb3JNaXhDb21wb25lbnQgcmVzdWx0OwogCkBAIC0xODQxLDcgKzE4NDEsNyBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvck1peEZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQwogICAgIHJldHVybiBtaXhDb2xvckNvbXBvbmVudHMo
KmNvbG9yU3BhY2UsICptaXhDb21wb25lbnQxLCAqbWl4Q29tcG9uZW50Mik7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCiB7CiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBT
dHJpbmdWaWV3IHZpZXc7CkBAIC0xOTkyLDcgKzE5OTIsNyBAQCBzdGF0aWMgUG9zaXRpb25Db29y
ZGluYXRlcyBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiAg
ICAgcmV0dXJuIHsgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlQ2VudGVyKSB9OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRl
cz4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTEsIENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZTIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkNvb3Jk
aW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMSwg
Q1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMikKIHsKICAgICBib29sIG11c3RPcmRlckFzWFkgPSBp
c0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBvc2l0
aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFsdWUxLmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTIu
aXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0aW9u
S2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZh
bHVlMik7CkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoQXJncyYmLi4uIGFyZ3MpCiAvLyAgIFsgY2VudGVy
IHwgWyBsZWZ0IHwgcmlnaHQgXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdICYmCiAvLyAgIFsgY2Vu
dGVyIHwgWyB0b3AgfCBib3R0b20gXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdCiAvLwotc3RhdGlj
IE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJl
ZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3Np
dGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwg
NT4mIHZhbHVlcykKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFg7CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRZOwpAQCAtMjA4Miw3ICsyMDgyLDcg
QEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlv
bkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKIC8vICAgWyBbIGxlZnQgfCByaWdodCBdIDxsZW5n
dGgtcGVyY2VudGFnZT4gXSAmJgogLy8gICBbIFsgdG9wIHwgYm90dG9tIF0gPGxlbmd0aC1wZXJj
ZW50YWdlPiBdCiAvLwotc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0
aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3RkOjphcnJheTxDU1NQcmltaXRpdmVWYWx1ZSosIDU+
JiB2YWx1ZXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3Np
dGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUqLCA1
PiYgdmFsdWVzKQogewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsKICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFk7CkBAIC0yMTIwLDcgKzIxMjAsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91clZh
bHVlcyhjb25zdCBzdGQ6OmFycmF5PENTUwogCiAvLyBGSVhNRTogVGhpcyBtYXkgY29uc3VtZSBm
cm9tIHRoZSByYW5nZSB1cG9uIGZhaWx1cmUuIFRoZSBiYWNrZ3JvdW5kCiAvLyBzaG9ydGhhbmQg
d29ya3MgYXJvdW5kIGl0LCBidXQgd2Ugc2hvdWxkIGp1c3QgZml4IGl0IGhlcmUuCi1PcHRpb25h
bDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzLCBQb3NpdGlvblN5bnRheCBwb3NpdGlvblN5bnRheCkKK3N0ZDo6b3B0
aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCiB7CiAg
ICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKQEAgLTIxNjAsNyArMjE2MCw3IEBA
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlv
bmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uQ29v
cmRpbmF0ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25D
b29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0
bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGF1dG8gdmFsdWUxID0gY29uc3VtZVBvc2l0aW9u
Q29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1
ZTEpCkBAIC0yOTcxLDE3ICsyOTcxLDE3IEBAIEF0b21TdHJpbmcgY29uc3VtZUNvdW50ZXJTdHls
ZU5hbWVJblByZWx1ZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcHJlbHVkZSkKICAgICByZXR1cm4g
aXNQcmVkZWZpbmVkQ291bnRlclN0eWxlKG5hbWVUb2tlbi5pZCgpKSA/IG5hbWUuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSA6IG5hbWUudG9TdHJpbmcoKTsKIH0KIAotT3B0aW9uYWw8Q1NTVmFs
dWVJRD4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjFSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBjb25zdW1lSWRlbnRS
YXc8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU21hbGxDYXBzPihyYW5nZSk7CiB9CiAKLU9wdGlv
bmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9u
dFdlaWdodEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJvbGQsIENT
U1ZhbHVlQm9sZGVyLCBDU1NWYWx1ZUxpZ2h0ZXI+KHJhbmdlKTsKIH0KIAotT3B0aW9uYWw8Rm9u
dFdlaWdodFJhdz4gY29uc3VtZUZvbnRXZWlnaHRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCitzdGQ6Om9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IGNvbnN1bWVGb250V2VpZ2h0UmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1
bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnJl
c3VsdCB9OwpAQCAtMjk5MCwxNyArMjk5MCwxNyBAQCBPcHRpb25hbDxGb250V2VpZ2h0UmF3PiBj
b25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9udFN0
cmV0Y2hLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9w
dGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENT
U1ZhbHVlVWx0cmFDb25kZW5zZWQsIENTU1ZhbHVlRXh0cmFDb25kZW5zZWQsIENTU1ZhbHVlQ29u
ZGVuc2VkLCBDU1NWYWx1ZVNlbWlDb25kZW5zZWQsIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNl
bWlFeHBhbmRlZCwgQ1NTVmFsdWVFeHBhbmRlZCwgQ1NTVmFsdWVFeHRyYUV4cGFuZGVkLCBDU1NW
YWx1ZVVsdHJhRXhwYW5kZWQ+KHJhbmdlKTsKIH0KIAotT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29u
c3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50
UmF3PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUl0YWxpYywgQ1NTVmFsdWVPYmxpcXVlPihyYW5n
ZSk7CiB9CiAKLU9wdGlvbmFsPEZvbnRTdHlsZVJhdz4gY29uc3VtZUZvbnRTdHlsZVJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3Rk
OjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IGNvbnN1bWVGb250U3R5bGVLZXl3b3JkVmFsdWVSYXcocmFuZ2UpOwogICAgIGlm
ICghcmVzdWx0KQpAQCAtMzA1MSwxMiArMzA1MSwxMiBAQCBTdHJpbmcgY29uc3VtZUZhbWlseU5h
bWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIGNvbmNhdGVuYXRl
RmFtaWx5TmFtZShyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVHZW5l
cmljRmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxD
U1NWYWx1ZUlEPiBjb25zdW1lR2VuZXJpY0ZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmFuZ2VSYXcocmFuZ2UsIENTU1ZhbHVl
U2VyaWYsIENTU1ZhbHVlV2Via2l0Qm9keSk7CiB9CiAKLU9wdGlvbmFsPFdURjo6VmVjdG9yPEZv
bnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3N0ZDo6b3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVG
b250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFdURjo6VmVj
dG9yPEZvbnRGYW1pbHlSYXc+IGxpc3Q7CiAgICAgZG8gewpAQCAtMzA3Miw3ICszMDcyLDcgQEAg
T3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKICAgICByZXR1cm4gbGlzdDsKIH0KIAotT3B0aW9uYWw8
Rm9udFNpemVSYXc+IGNvbnN1bWVGb250U2l6ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQor
c3RkOjpvcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVp
cmsgdW5pdGxlc3MpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID49IENTU1ZhbHVlWHhT
bWFsbCAmJiByYW5nZS5wZWVrKCkuaWQoKSA8PSBDU1NWYWx1ZUxhcmdlcikgewogICAgICAgICBp
ZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdyhyYW5nZSkpCkBAIC0zMDg2LDcgKzMwODYs
NyBAQCBPcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLU9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGQ6Om9w
dGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CiAgICAgICAgIGlmIChhdXRvIGlk
ZW50ID0gY29uc3VtZUlkZW50UmF3KHJhbmdlKSkKQEAgLTMxMDMsNyArMzEwMyw3IEBAIE9wdGlv
bmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9u
YWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0ZDo6b3B0aW9uYWw8Rm9udFJhdz4gY29uc3Vt
ZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKIHsKICAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0IG9y
IGluaXRpYWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCiAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSByYW5nZUNvcHkgPSByYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCmluZGV4IDE1ZWRlNGI1NzZiYThmNWRkZjFj
NGIwZWVhYTRmNTQ4MmJlZjk2YmUuLjdjZWQ2ZGRhNjc2MmJkMGYyZWIzZWI3NTRlODhkYzUzZGYz
MTMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuaApAQCAtNzQsMzUgKzc0LDM1IEBAIHN0cnVjdCBMZW5ndGhSYXcgewog
CiB1c2luZyBMZW5ndGhPclBlcmNlbnRSYXcgPSBWYXJpYW50PExlbmd0aFJhdywgZG91YmxlPjsK
IAotT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwg
ZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgp
KTsKK3N0ZDo6b3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7Ci1PcHRpb25hbDx1bnNpZ25lZD4gY29uc3VtZVBvc2l0aXZlSW50
ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBj
b25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpOworc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBW
YWx1ZVJhbmdlOjpBbGwpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVy
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKLU9wdGlvbmFsPGRvdWJsZT4gY29u
c3VtZUZvbnRXZWlnaHROdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRp
b25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1l
Rm9udFdlaWdodE51bWJlcldvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVl
UG9vbCYpOwotT3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5p
dGxlc3NRdWlyazo6Rm9yYmlkKTsKK3N0ZDo6b3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVu
Z3RoUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBV
bml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Ci1P
cHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBW
YWx1ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKTsKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25z
dW1lUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSA9IFZhbHVlUmFu
Z2U6OkFsbCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJjZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29uc3VtZVBlcmNlbnRXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdl
LCBDU1NWYWx1ZVBvb2wmKTsKLU9wdGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitzdGQ6Om9w
dGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWly
ayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwotT3B0
aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxl
c3NaZXJvUXVpcmsgPSBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKK3N0ZDo6b3B0aW9uYWw8
QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJv
UXVpcmsgPSBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyayA9
IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lQW5nbGVXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2Rl
LCBDU1NWYWx1ZVBvb2wmLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBV
bml0bGVzc1plcm9RdWlyayA9IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOwogUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVGltZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmLCBBbGxvd1hSZXNvbHV0aW9uVW5pdCA9IEFsbG93WFJlc29sdXRpb25Vbml0
OjpGb3JiaWQpOwogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25z
dW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lSWRlbnRXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZVBv
b2wmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhbmdlUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKTsKK3N0ZDo6
b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpOwogUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
VmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7CiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBD
U1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCk7Ci10
ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IE9wdGlvbmFsPENTU1ZhbHVlSUQ+
IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Cit0ZW1wbGF0ZTxDU1NWYWx1
ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlk
ZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxs
b3dlZElkZW50cz4gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwogdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudFdvcmtlclNhZmUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1ZhbHVlUG9vbCYpOwogCkBAIC0xMjUsOCArMTI1LDggQEAgc3RydWN0
IFBvc2l0aW9uQ29vcmRpbmF0ZXMgewogfTsKIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRs
ZXNzUXVpcmssIFBvc2l0aW9uU3ludGF4KTsKLU9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+
IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7Ci1PcHRpb25hbDxQb3NpdGlv
bkNvb3JkaW5hdGVzPiBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKENT
U1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsKK3N0ZDo6
b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIFBvc2l0
aW9uU3ludGF4KTsKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9u
ZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NT
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7CiAKIGVudW0gY2xhc3MgQWxsb3dlZEltYWdlVHlw
ZSA6IHVpbnQ4X3QgewogICAgIFVSTEZ1bmN0aW9uID0gMSA8PCAwLApAQCAtMTQ4LDcgKzE0OCw3
IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyCiAKIHN0cnVjdCBGb250U3R5bGVSYXcgewogICAg
IENTU1ZhbHVlSUQgc3R5bGU7Ci0gICAgT3B0aW9uYWw8QW5nbGVSYXc+IGFuZ2xlOworICAgIHN0
ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGFuZ2xlOwogfTsKIHVzaW5nIEZvbnRXZWlnaHRSYXcgPSBW
YXJpYW50PENTU1ZhbHVlSUQsIGRvdWJsZT47CiB1c2luZyBGb250U2l6ZVJhdyA9IFZhcmlhbnQ8
Q1NTVmFsdWVJRCwgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXc+
OwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgdXNpbmcgTGluZUhlaWdodFJhdyA9IFZhcmlhbnQ8Q1NT
VmFsdWVJRCwgZG91YmxlLCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkxlbmcKIHVzaW5nIEZv
bnRGYW1pbHlSYXcgPSBWYXJpYW50PENTU1ZhbHVlSUQsIFN0cmluZz47CiAKIHN0cnVjdCBGb250
UmF3IHsKLSAgICBPcHRpb25hbDxGb250U3R5bGVSYXc+IHN0eWxlOwotICAgIE9wdGlvbmFsPENT
U1ZhbHVlSUQ+IHZhcmlhbnRDYXBzOwotICAgIE9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IHdlaWdo
dDsKLSAgICBPcHRpb25hbDxDU1NWYWx1ZUlEPiBzdHJldGNoOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFN0eWxlUmF3PiBzdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHZhcmlh
bnRDYXBzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFdlaWdodFJhdz4gd2VpZ2h0OworICAgIHN0
ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gc3RyZXRjaDsKICAgICBGb250U2l6ZVJhdyBzaXplOwot
ICAgIE9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGxpbmVIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25h
bDxMaW5lSGVpZ2h0UmF3PiBsaW5lSGVpZ2h0OwogICAgIFZlY3RvcjxGb250RmFtaWx5UmF3PiBm
YW1pbHk7CiB9OwogCkBAIC0xNjksMTkgKzE2OSwxOSBAQCBib29sIGlzUHJlZGVmaW5lZENvdW50
ZXJTdHlsZShDU1NWYWx1ZUlEKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNv
dW50ZXJTdHlsZU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogQXRvbVN0cmluZyBjb25zdW1l
Q291bnRlclN0eWxlTmFtZUluUHJlbHVkZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLU9wdGlv
bmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250V2VpZ2h0S2V5d29yZFZh
bHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IGNv
bnN1bWVGb250V2VpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPENTU1Zh
bHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci1PcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9udFN0eWxlS2V5d29yZFZhbHVl
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPEZvbnRTdHlsZVJhdz4gY29uc3Vt
ZUZvbnRTdHlsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSk7CitzdGQ6
Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRXZWln
aHRLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxG
b250V2VpZ2h0UmF3PiBjb25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7
CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1
ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNv
bnN1bWVGb250U3R5bGVLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3Rk
OjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwogU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShD
U1NQYXJzZXJUb2tlblJhbmdlJik7CiBTdHJpbmcgY29uc3VtZUZhbWlseU5hbWVSYXcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUdlbmVyaWNGYW1p
bHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8VmVjdG9yPEZvbnRGYW1pbHlS
YXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1PcHRpb25h
bDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBD
U1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKLU9w
dGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKLU9wdGlvbmFsPEZvbnRSYXc+IGNvbnN1bWVGb250UmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8Q1NT
VmFsdWVJRD4gY29uc3VtZUdlbmVyaWNGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwor
c3RkOjpvcHRpb25hbDxWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK3N0ZDo6b3B0aW9uYWw8Rm9udFNpemVSYXc+IGNvbnN1
bWVGb250U2l6ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitzdGQ6Om9wdGlvbmFsPExpbmVIZWln
aHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwogY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0Zv
bnRGYW1pbHkoQ1NTVmFsdWVJRCk7CiBXZWJLaXRGb250RmFtaWx5TmFtZXM6OkZhbWlseU5hbWVz
SW5kZXggZ2VuZXJpY0ZvbnRGYW1pbHlJbmRleChDU1NWYWx1ZUlEKTsKIApAQCAtMTk1LDcgKzE5
NSw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWlsPiBpbmxp
bmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJCiAgICAgcmV0dXJuIGlkID09IGhlYWQgfHwg
aWRlbnRNYXRjaGVzPHRhaWwuLi4+KGlkKTsKIH0KIAotdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBu
YW1lcz4gT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBuYW1lcz4gc3RkOjpvcHRpb25h
bDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
CiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRlbnRN
YXRjaGVzPG5hbWVzLi4uPihyYW5nZS5wZWVrKCkuaWQoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyV29ya2VyU2FmZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKaW5kZXggYjgwYjY3OGEyYWM3ZTdiOTY1OTY1NTM2
MWZmYmE5OWNjMWQ3ZDJjMi4uZmQ5NTM3OGJmOGI2M2NhZjc3ZGVmNDIxMjRmZjgyZDdjYzBlMDFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
cldvcmtlclNhZmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJXb3JrZXJTYWZlLmNwcApAQCAtNTEsNyArNTEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU9wdGlvbmFsPENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJhdz4gQ1NT
UHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlOjpwYXJzZUZvbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck1vZGUgbW9kZSkKK3N0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpGb250UmF3PiBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmU6OnBhcnNlRm9udChjb25z
dCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBtb2RlKQogewogICAgIENTU1Rva2VuaXpl
ciB0b2tlbml6ZXIoc3RyaW5nKTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKHRva2Vu
aXplci50b2tlblJhbmdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmgKaW5kZXggNWQxZTIwODNiOTM4MWU4NmIw
MGRlODNiNGE0MjFlM2NhOTMwOTcwMy4uMDU0ZmJiZTZjZjE1NzExOTdkZDQzOGYwYzcxMGNhMDI2
Y2Y2NjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlcldvcmtlclNhZmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUgewogcHVi
bGljOgogICAgIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXc+IHBhcnNlRm9u
dChjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlID0gSFRNTFN0YW5kYXJkTW9kZSk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3PiBw
YXJzZUZvbnQoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSA9IEhUTUxTdGFuZGFyZE1vZGUp
OwogCiAgICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VTcmMoY29u
c3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlRm9udEZhY2VTdHlsZShjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Nl
bGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQ
YXJzZXIuY3BwCmluZGV4IDk4MjcxZDAxZDJkYjM0NDZjN2ZkMTM5MzkwZmNkMGFmYjJhYzFlM2Mu
Ljc3NzRjYTc3YThjMzA1MWIzMmU1NTBmNWQ1NGExN2M4MGZkNTRkODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIHByaXZhdGU6CiBzdGF0aWMgQXRvbVN0cmluZyBzZXJpYWxpemVBTlBsdXNCKGNvbnN0IHN0
ZDo6cGFpcjxpbnQsIGludD4mKTsKIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1BhcnNl
clRva2VuUmFuZ2UmLCBzdGQ6OnBhaXI8aW50LCBpbnQ+Jik7CiAKLU9wdGlvbmFsPENTU1NlbGVj
dG9yTGlzdD4gcGFyc2VDU1NTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hl
ZXQpCitzdGQ6Om9wdGlvbmFsPENTU1NlbGVjdG9yTGlzdD4gcGFyc2VDU1NTZWxlY3RvcihDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBT
dHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCiB7CiAgICAgQ1NTU2VsZWN0b3JQYXJzZXIg
cGFyc2VyKGNvbnRleHQsIHN0eWxlU2hlZXQpOwogICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmgKaW5k
ZXggMjc3NjYxY2UxMDFlNmRmYTY4YmExMDhmNTE5MWFkNmFmNmMyOWVjMi4uNTUwMDIxNDQ3ZDlm
MTZmMWM0OGFmMTlmN2M0ODlkZTAwMmIxZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaApAQCAtOTEsNiArOTEsNiBAQCBwcml2YXRlOgogCiAK
IAotT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZUNTU1NlbGVjdG9yKENTU1BhcnNlclRv
a2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMqKTsK
K3N0ZDo6b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZUNTU1NlbGVjdG9yKENTU1BhcnNl
clRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMq
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBmYjY3Mjc3NDM2ZjBlYTVmNDkwOGE0MzcxZTNlMTk0
ODg5NDM2YzFmLi45MGYwNDM5YjcyZjY0MTQxNWFmZjhlMDBmMzU4NmNhMWU5MTgyYzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaApAQCAtOTUsNyAr
OTUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJp
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RvcjsgfQogICAgICAgICBWZWN0b3I8TWVk
aWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7
IH0KLSAgICAgICAgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgbWVkaWFUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVR5cGU7IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+
JiBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhVHlwZTsgfQogCiAgICAgICAgIGJv
b2wgY3VycmVudE1lZGlhUXVlcnlDaGFuZ2VkKCkgY29uc3QKICAgICAgICAgewpAQCAtMTExLDcg
KzExMSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBNZWRpYVF1ZXJ5OjpS
ZXN0cmljdG9yIG1fcmVzdHJpY3RvciB7IE1lZGlhUXVlcnk6Ok5vbmUgfTsKLSAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBtX21lZGlhVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG1fbWVkaWFUeXBlOwogICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1fZXhw
cmVzc2lvbnM7CiAgICAgICAgIFN0cmluZyBtX21lZGlhRmVhdHVyZTsKICAgICAgICAgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQgbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVj
dG9yQ29tcGlsZXIuY3BwCmluZGV4IGUzODljM2U5MTUzZWRkNjEwOGI2MTQwYzAwNzA4YmM4Zjlk
OWU0ZWUuLjI2YWI2YjkwNmQ1YzFkMTkyNDNhMTBkZTM0NTFiY2EyNmFlZDQ0MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTM4OSw4ICszODksOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNUYXJnZXQoQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogICAgIC8vIEhlbHBlcnMuCi0gICAgdm9pZCBnZW5l
cmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwotICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9u
KEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0
aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6
OlJlbGF0aW9uOjpUeXBlLCBzdGQ6Om9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFs
dWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50
LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3Rl
cklEPiB2YWx1ZSA9IHsgfSk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2aW5n
TW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBT
ZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRl
eHQpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBicmFuY2hPblJlc29sdmluZ01vZGUoQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNG
aXJzdExpbmsoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgZWxlbWVudCk7CkBAIC0yNDQ1LDcgKzI0NDUsNyBAQCB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVJbmRpcmVjdEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6
Okp1bXBMaQogICAgIGxvY2FsRmFpbHVyZUNhc2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2Vt
Ymxlcik7CiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxl
UmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBT
dHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJl
Z2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRk
U3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1l
bnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNz
ZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKIHsKICAgICBpZiAobV9zZWxlY3RvckNvbnRleHQg
PT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKQogICAgICAgICByZXR1cm47CkBAIC0y
NDcxLDcgKzI0NzEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTW9kdWxv
SGVscGVyLCBpbnQsIChpbnQgZGl2aWRlbmQsIGludCBkaXZpc29yKQogfQogI2VuZGlmCiAKLXZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1i
bGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVs
ZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIE9wdGlvbmFsPEFzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRl
eHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUg
cmVsYXRpb25UeXBlLCBzdGQ6Om9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUp
CiB7CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250ZXh0ICE9IFNlbGVjdG9yQ29udGV4dDo6UXVl
cnlTZWxlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxh
eVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKaW5kZXgg
ZWZmZjllMTIyMDZmODM0YWVmZWM4ZWZkNzU0NTI5MTIzNDFlOTFiNi4uMWVhNjQ4YzBlM2FlMTk4
MTAyZGVlODA4ODg0MzI3ZGRiZjdiOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9EaXNwbGF5VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5
VHJlZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgQ29udGFpbmVyQm94JiBUcmVlOjpyb290
Qm94KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94PihtX3Jvb3RTdGFj
a2luZ0l0ZW0tPmJveCgpKTsKIH0KIAotdm9pZCBUcmVlOjpzZXRCb3hOZWVkc0Rpc3BsYXkoQm94
JiwgT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+KSBjb25zdAordm9pZCBUcmVlOjpzZXRCb3hO
ZWVkc0Rpc3BsYXkoQm94Jiwgc3RkOjpvcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4pIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IEZvciBub3csIGp1c3QgcmVwYWludCB0aGUgd29ybGQuCiAgICAg
aWYgKG1fdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRy
ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAppbmRleCBiMGE4YWU3
NGZiNTYxOTdjZWVkMTYzZGViZTU4NTRhMjBmYWZiNTZlLi5mMGMwYzQyNzQ0Yzc1ZDA3YjE2YjJm
NDAzMjZjNWZkN2NkYTdmODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rp
c3BsYXlUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdGFja2luZ0l0ZW0mIHJvb3RTdGFj
a2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiAqbV9yb290U3RhY2tpbmdJdGVtOyB9CiAgICAgIGNv
bnN0IENvbnRhaW5lckJveCYgcm9vdEJveCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3hOZWVk
c0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgc2V0Qm94TmVlZHNEaXNwbGF5KEJveCYsIHN0ZDo6
b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0Um9vdFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9w
dHI8U3RhY2tpbmdJdGVtPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJv
eC5jcHAKaW5kZXggMWY0NjEyZWNlZmE2MDA5ODlhNThkOWEwM2E4MzQ2ZTY0NGE4ZDYzYi4uNzNl
N2ZkMDRmYzI1ZGIyM2U0OWVhYjc1MzA3ZDYyMzFiYzE3NWMxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBCb3g6OnBh
cnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpIGNvbnN0CiAgICAgcmV0dXJuICFpc0xpbmVCcmVh
a0JveCgpICYmIHN0eWxlKCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCk7CiB9CiAKLXZv
aWQgQm94OjpzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJl
Y3QpCit2b2lkIEJveDo6c2V0TmVlZHNEaXNwbGF5KHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9h
dFJlY3Q+IHN1YnJlY3QpCiB7CiAgICAgbV90cmVlLnNldEJveE5lZWRzRGlzcGxheSgqdGhpcywg
c3VicmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKaW5kZXgg
NjVmZmUzYWM0MWE4MWJkY2ZlNzA1NGE2NmRkZjhiMTBlOGRiNTliNS4uZTk2NjljZjVjYmYxN2Y3
OTZkYTFjMDNjYThkZTQyZDRkZGYyNmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3guaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQm94KiBuZXh0
U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNpYmxpbmcuZ2V0KCk7IH0KICAgICB2b2lk
IHNldE5leHRTaWJsaW5nKHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYpOwogCi0gICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51
bGxvcHQpOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVG
bG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5Qm94Q2xpcC5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheUJveENsaXAuaAppbmRleCBkNTFkOGU0ZDhhZDdlYTQ1MzZhNWI0ZGE0YTc5Y2RkZWJl
MTJkMDllLi5mMjc2OTk1Njc3MDBkY2MzYjk1YWQzZjQ2ZTg5YjdkOTJlODIyMjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94Q2xpcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hDbGlwLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Qm94Q2xpcD4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCb3hDbGlwKTsgfQogICAgIFJlZjxCb3hDbGlwPiBjb3B5KCkgY29uc3Q7CiAK
LSAgICBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gY2xpcFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2NsaXBSZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gY2xp
cFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9CiAgICAgCiAgICAgYm9vbCBhZmZl
Y3RlZEJ5Qm9yZGVyUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5Qm9yZGVyUmFk
aXVzOyB9CiAgICAgY29uc3QgVmVjdG9yPEZsb2F0Um91bmRlZFJlY3Q+JiBjbGlwU3RhY2soKSBj
b25zdCB7IHJldHVybiBtX2NsaXBTdGFjazsgfQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
ICAgIEJveENsaXAoKTsKICAgICBCb3hDbGlwKGNvbnN0IEJveENsaXAmKTsKIAotICAgIE9wdGlv
bmFsPEFic29sdXRlRmxvYXRSZWN0PiBtX2NsaXBSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8QWJz
b2x1dGVGbG9hdFJlY3Q+IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPEZsb2F0Um91bmRlZFJlY3Q+
IG1fY2xpcFN0YWNrOwogICAgIGJvb2wgbV9hZmZlY3RlZEJ5Qm9yZGVyUmFkaXVzIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94
RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUJveERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCBkNDY4ZmJjMGY3NmFiMGIyZGIyMjJhZDYw
YWNjZGU0YzY2NWRmMjBiLi4wMTI5OTA0YjA4OGE5ODI3NjY1ODBkZDYzMWJlNDk4MjQ5Y2VlZGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RGVjb3Jh
dGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlC
b3hEZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgQm9yZGVy
UGFpbnRlcjo6cGFpbnRCb3JkZXJzKFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0KSBj
b25zdAogICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVkZ2VzID0gdHJ1ZTsKICAgICBpbnQgbnVtRWRn
ZXNWaXNpYmxlID0gNDsKICAgICBib29sIGFsbEVkZ2VzU2hhcmVDb2xvciA9IHRydWU7Ci0gICAg
T3B0aW9uYWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxlU2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJv
eFNpZGU+IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAgQm94U2lkZVNldCBlZGdlc1RvRHJhdzsKIAog
ICAgIGZvciAoYXV0byBzaWRlIDogYWxsQm94U2lkZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFj
dFJhbmdlLmNwcAppbmRleCA0MGY1ODU2MTgzYjI3NjE4NjUyN2NlMzBkYzAxOWIxMzIzZDk5MjAw
Li42YjYyOTRjNmY4MTg5NWJlZjY1ZDg2YTA1OWYzZTQ5Y2YwZmIyNGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAgU2ltcGxlUmFuZ2UgbWFr
ZVNpbXBsZVJhbmdlKGNvbnN0IFJlZjxBYnN0cmFjdFJhbmdlPiYgcmFuZ2UpCiAgICAgcmV0dXJu
IG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFuZ2UpCitzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFu
Z2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKCpyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmUHRyPEFic3RyYWN0UmFuZ2U+JiByYW5nZSkK
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8
QWJzdHJhY3RSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UocmFu
Z2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFu
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmgKaW5kZXggZWE4ZTM0YzYx
NmJmZmQwNGQ4ZDgzMzNkN2ExMmIyNGUyYzlkOGZlNy4uZGM4OWQ0NmU2OTJjMmM3MTBiNzMyODFh
ZWVmMTcwMDY0N2E1YTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKIAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNpbXBs
ZVJhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmKTsKIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5n
ZShjb25zdCBSZWY8QWJzdHJhY3RSYW5nZT4mKTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtl
U2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSopOwotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8QWJzdHJhY3RSYW5nZT4mKTsKK3N0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdlKik7
CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmUHRy
PEFic3RyYWN0UmFuZ2U+Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
ZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlz
dGVuZXJPcHRpb25zLmgKaW5kZXggYTA3N2E1YzYzNGY3OTE5OWY0N2YyODgyYTFkNDkzZmQ3ODU1
OTUyMy4uYzJkZjczZjJiM2YxZGFmZGY5N2NlNGY3MzEyODZiZTQ3Njk5ODM4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25z
IDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewotICAgIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKGJv
b2wgY2FwdHVyZSA9IGZhbHNlLCBPcHRpb25hbDxib29sPiBwYXNzaXZlID0gc3RkOjpudWxsb3B0
LCBib29sIG9uY2UgPSBmYWxzZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51bGxw
dHIpCisgICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0ZDo6bnVsbG9wdCwgYm9vbCBvbmNlID0gZmFs
c2UsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBzaWduYWwgPSBudWxscHRyKQogICAgICAgICA6IEV2
ZW50TGlzdGVuZXJPcHRpb25zKGNhcHR1cmUpCiAgICAgICAgICwgcGFzc2l2ZShwYXNzaXZlKQog
ICAgICAgICAsIG9uY2Uob25jZSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IEFkZEV2ZW50TGlz
dGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewogICAgIHsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxib29sPiBwYXNzaXZlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2
ZTsKICAgICBib29sIG9uY2UgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxBYm9ydFNpZ25hbD4gc2ln
bmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuY3BwCmluZGV4IDhmYjE5ZDU5
MDc5NTExZmNkMzAxNmE4M2Q1MjlmNjk0MjY3Y2Q2MjcuLjRmMjk1NGVlN2MzYmI0NGQ2YmIxZmJi
OWEwMDNhZjExZjRjMWZjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRp
b25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmNwcApA
QCAtNDAsNyArNDAsNyBAQCBBbmltYXRpb25FdmVudDo6QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLUFuaW1hdGlv
bkV2ZW50OjpBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1
ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiog
YW5pbWF0aW9uKQorQW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1l
LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGlt
ZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICA6IEFuaW1hdGlvbkV2ZW50
QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkKICAgICAsIG1fYW5pbWF0aW9uTmFt
ZShhbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKaW5kZXggNzk1NWQ3MTFjYWI3ZjdiOWRkYmY2YTBhY2Q5
MGY2MGJjMDEzM2Y5Yy4uZmVlMTMwZTA0ZDk2ZmQ4NjFlOGUwMDRjMWM3Y2Q2NzY3MmUyNGFlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgQW5pbWF0
aW9uRXZlbnRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuaW1hdGlvbkV2ZW50
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxh
cHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4g
dGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICBzdGF0aWMgUmVmPEFu
aW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRv
RWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlv
biogYW5pbWF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0
aW9uRXZlbnQodHlwZSwgYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQs
IHRpbWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQpAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3Ry
aW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFu
aW1hdGlvbiopOworICAgIEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBX
ZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCmluZGV4IGQyNmQyZWNhNjQ2YjhhZWM0YzRlZWU4
NDQyMWEzZWE4ODMwOGE1YmMuLmNiMTIwNjc1MGY4YmIxMTRhYzNlMDgwYjIzZGY0OTRmZDIxMDc0
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
dGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFyeVBv
aW50JiwgY29uc3QgQm91bmRhcnlQb2kKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3Jk
ZXI8IFNoYWRvd0luY2x1ZGluZ1RyZWUgPihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91
bmRhcnlQb2ludCYpOwogdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3Nl
ZFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKLU9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJiBu
b2RlKQorc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9y
ZU5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgp
OwogICAgIGlmICghcGFyZW50KQpAQCAtNDEsNyArNDEsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkKICAgICByZXR1cm4g
Qm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUuY29tcHV0ZU5vZGVJbmRleCgpIH07CiB9CiAK
LU9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUm
IG5vZGUpCitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0
ZXJOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUo
KTsKICAgICBpZiAoIXBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3Vu
ZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCmluZGV4IDZk
MTgwMjZiZWUwYjc4OTQxNzIzMzk5MmY0NDliYWI0N2FjYTE5OGUuLjU5NjExMTIzOWIwMzViZDE3
ZDAzYjczM2NhZDYwMTU1NWVmZGFmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9C
b3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApA
QCAtNDMsOCArNDMsOCBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNv
bnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0aWFs
T3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBv
aW50Jik7CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3Vu
ZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3Jl
Tm9kZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmKTsKIEJvdW5kYXJ5UG9pbnQgbWFrZUJv
dW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoTm9kZSYpOwogQm91bmRhcnlQb2ludCBtYWtl
Qm91bmRhcnlQb2ludEFmdGVyTm9kZUNvbnRlbnRzKE5vZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db25zdGFudFByb3BlcnR5TWFwLmgKaW5kZXggN2ZhZWQ5OGEwYjFlYjEyYTllYTBhYWY2ZjAw
OTk3MzZkOGJjODM4Yi4uNjBhNWIxMmQ2NWQ3MzljODI5Yjk5ZTExN2ZlYzNkNGM0MWQyYzAyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5oCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygp
OwogICAgIHZvaWQgdXBkYXRlQ29uc3RhbnRzRm9yRnVsbHNjcmVlbigpOwogCi0gICAgT3B0aW9u
YWw8VmFsdWVzPiBtX3ZhbHVlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlcz4gbV92YWx1ZXM7
CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCAwNThjZmExMDZkZjc5ODk3
OTgwNTc0MzEyMWI3YzI1MmZiYzg0ZmYxLi5iMjZlNzlhODY4M2I3YmJjM2FhMTFkYjk3NmMyY2Y1
M2RlNzQzZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlw
ZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb2xkRG9jdW1lbnQ7CiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX25ld0RvY3VtZW50OwotICAgIE9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmli
dXRlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFt
ZTsKICAgICBBdG9tU3RyaW5nIG1fb2xkVmFsdWU7CiAgICAgQXRvbVN0cmluZyBtX25ld1ZhbHVl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKaW5kZXggMjEz
NWMyMThjOTAwN2MwMmQ4NDQ3MDNkNDIyNzAwYjMwZjAwMmIyYS4uODNjYWRjZWU3OTdlNzEyMThj
ZmRkZmE5YWQyN2UwNDJjYTkxZWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJhbnNmZXI7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERhdGFUcmFuc2Zlckl0ZW0+Pj4gbV9pdGVtczsK
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4+
IG1faXRlbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlTW90aW9uRGF0YS5jcHAKaW5kZXggMTEyNDc4NThhYjIxYmIxYjVlZTJjZWNiMDA0MWI4
NjlkNzM3Y2Q3Ny4uMDY4MTZhNmM4OTE0MTIzMmYyNjVmZWYwYWEzZDA0OTc3NjAzYWIzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBA
IFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoKQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERldmljZU1vdGlvbkRhdGEpOwogfQogCi1SZWY8RGV2aWNlTW90
aW9uRGF0YT4gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKFJlZlB0cjxBY2NlbGVyYXRpb24+JiYg
YWNjZWxlcmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGlu
Z0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlLCBPcHRpb25hbDxk
b3VibGU+IGludGVydmFsKQorUmVmPERldmljZU1vdGlvbkRhdGE+IERldmljZU1vdGlvbkRhdGE6
OmNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbiwgUmVmUHRyPEFjY2Vs
ZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90YXRpb25S
YXRlPiYmIHJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU1vdGlvbkRhdGEoV1RGTW92ZShhY2NlbGVy
YXRpb24pLCBXVEZNb3ZlKGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkpLCBXVEZNb3ZlKHJv
dGF0aW9uUmF0ZSksIGludGVydmFsKSk7CiB9CiAKLURldmljZU1vdGlvbkRhdGE6OkRldmljZU1v
dGlvbkRhdGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24sIFJlZlB0cjxBY2Nl
bGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgUmVmUHRyPFJvdGF0aW9u
UmF0ZT4mJiByb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpCitEZXZpY2VN
b3Rpb25EYXRhOjpEZXZpY2VNb3Rpb25EYXRhKFJlZlB0cjxBY2NlbGVyYXRpb24+JiYgYWNjZWxl
cmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gaW50ZXJ2YWwpCiAgICAgOiBtX2FjY2VsZXJhdGlvbihXVEZNb3ZlKGFjY2VsZXJhdGlv
bikpCiAgICAgLCBtX2FjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoV1RGTW92ZShhY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5KSkKICAgICAsIG1fcm90YXRpb25SYXRlKFdURk1vdmUocm90
YXRpb25SYXRlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCmluZGV4IGU3OTk0
ZTM3ZTcyMDE2ZWRiMzk1NmIzYTdhMjhkYzMwMTcxMWRjNWMuLmNjZGI4N2EwOGY1NDU0MGFmMmIx
MWIyNWUyZWUwNDE2MDg3NGYyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VNb3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEu
aApAQCAtMzksMjcgKzM5LDI3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0aW9uKTsKICAgICAgICAgfQotICAgICAgICBzdGF0
aWMgUmVmPEFjY2VsZXJhdGlvbj4gY3JlYXRlKE9wdGlvbmFsPGRvdWJsZT4geCwgT3B0aW9uYWw8
ZG91YmxlPiB5LCBPcHRpb25hbDxkb3VibGU+IHopCisgICAgICAgIHN0YXRpYyBSZWY8QWNjZWxl
cmF0aW9uPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geikKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0aW9uKHgsIHksIHopKTsKICAgICAgICAgfQog
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4geCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CiAKICAgICBwcml2YXRl
OgogICAgICAgICBBY2NlbGVyYXRpb24oKSA9IGRlZmF1bHQ7Ci0gICAgICAgIEFjY2VsZXJhdGlv
bihPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91Ymxl
PiB6KQorICAgICAgICBBY2NlbGVyYXRpb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geikKICAgICAgICAgICAg
IDogbV94KHgpCiAgICAgICAgICAgICAsIG1feSh5KQogICAgICAgICAgICAgLCBtX3ooeikKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX3g7Ci0gICAg
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbV95OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1fejsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1feDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IG1feTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fejsKICAgICB9
OwogCiAgICAgY2xhc3MgUm90YXRpb25SYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RGV2aWNlTW90
aW9uRGF0YTo6Um90YXRpb25SYXRlPiB7CkBAIC02OCw0NiArNjgsNDYgQEAgcHVibGljOgogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSb3RhdGlvblJhdGUpOwog
ICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Um90YXRpb25SYXRlPiBjcmVhdGUoT3B0aW9u
YWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+
IGdhbW1hKQorICAgICAgICBzdGF0aWMgUmVmPFJvdGF0aW9uUmF0ZT4gY3JlYXRlKHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUm90YXRpb25SYXRlKGFscGhhLCBiZXRhLCBnYW1tYSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGE7
IH0KLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBiZXRhKCkgY29uc3QgeyByZXR1cm4gbV9iZXRh
OyB9Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEoKSBjb25zdCB7IHJldHVybiBtX2dh
bW1hOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWxwaGE7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25z
dCB7IHJldHVybiBtX2JldGE7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1h
KCkgY29uc3QgeyByZXR1cm4gbV9nYW1tYTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUm90
YXRpb25SYXRlKCkgPSBkZWZhdWx0OwotICAgICAgICBSb3RhdGlvblJhdGUoT3B0aW9uYWw8ZG91
YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1h
KQorICAgICAgICBSb3RhdGlvblJhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hKQogICAg
ICAgICAgICAgOiBtX2FscGhhKGFscGhhKQogICAgICAgICAgICAgLCBtX2JldGEoYmV0YSkKICAg
ICAgICAgICAgICwgbV9nYW1tYShnYW1tYSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1f
YmV0YTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2dhbW1hOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gbV9hbHBoYTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1f
YmV0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZ2FtbWE7CiAgICAgfTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBjcmVhdGUo
UmVmUHRyPEFjY2VsZXJhdGlvbj4mJiwgUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRp
b25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90YXRpb25SYXRlPiYmLCBPcHRpb25hbDxkb3Vi
bGU+IGludGVydmFsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERldmljZU1vdGlv
bkRhdGE+IGNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0aW9uPiYmLCBSZWZQdHI8QWNjZWxlcmF0aW9u
PiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnRlcnZhbCk7CiAKICAgICBjb25zdCBBY2NlbGVyYXRp
b24qIGFjY2VsZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0aW9uLmdldCgpOyB9
CiAgICAgY29uc3QgQWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LmdldCgpOyB9CiAg
ICAgY29uc3QgUm90YXRpb25SYXRlKiByb3RhdGlvblJhdGUoKSBjb25zdCB7IHJldHVybiBtX3Jv
dGF0aW9uUmF0ZS5nZXQoKTsgfQogICAgIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwo
KSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbDsgfQogCiBwcml2YXRlOgogICAg
IERldmljZU1vdGlvbkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgRGV2aWNlTW90aW9uRGF0YShSZWZQ
dHI8QWNjZWxlcmF0aW9uPiYmLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYsIE9wdGlvbmFsPGRvdWJsZT4g
aW50ZXJ2YWwpOworICAgIERldmljZU1vdGlvbkRhdGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiwg
UmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQ
dHI8Um90YXRpb25SYXRlPiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpOwogCiAg
ICAgUmVmUHRyPEFjY2VsZXJhdGlvbj4gbV9hY2NlbGVyYXRpb247CiAgICAgUmVmUHRyPEFjY2Vs
ZXJhdGlvbj4gbV9hY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5OwogICAgIFJlZlB0cjxSb3Rh
dGlvblJhdGU+IG1fcm90YXRpb25SYXRlOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbnRlcnZh
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9pbnRlcnZhbDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rp
b25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCmlu
ZGV4IDg0MmY2ZWVjYjMzY2IzZGUxYmM2ZTM1ZmE0OTcwYjhhYjVkMGZhMjguLjRlYThhOGNjM2I0
MGNmZjI4Nzk3MjQ4NDg1YTBhZjIwNTQ3ODcyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU1vdGlvbkV2ZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBEZXZpY2VNb3Rpb25FdmVudDo6RGV2
aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25E
YQogewogfQogCi1zdGF0aWMgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlv
bj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJh
dGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRp
b24+IGNvbnZlcnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uKiBhY2NlbGVy
YXRpb24pCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVu
dDo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6CiAgICAgcmV0
dXJuIERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24geyBhY2NlbGVyYXRpb24tPngoKSwg
YWNjZWxlcmF0aW9uLT55KCksIGFjY2VsZXJhdGlvbi0+eigpIH07CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90YXRpb25SYXRlPiBjb252ZXJ0KGNvbnN0IERldmlj
ZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRpb25SYXRlKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4gY29udmVydChjb25zdCBEZXZp
Y2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSkKIHsKICAgICBpZiAoIXJv
dGF0aW9uUmF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0LDcgKzY0LDcg
QEAgc3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IGNvbnZl
cnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YToKICAgICByZXR1cm4gRGV2aWNlTW90aW9uRXZlbnQ6
OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSwgcm90YXRpb25SYXRlLT5iZXRh
KCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9OwogfQogCi1zdGF0aWMgUmVmUHRyPERldmljZU1v
dGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gY29udmVydChPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVu
dDo6QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbikKK3N0YXRpYyBSZWZQdHI8RGV2aWNlTW90
aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KHN0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9u
RXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24pCiB7CiAgICAgaWYgKCFhY2NlbGVy
YXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMg
UmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gY29udmVydChPcHRpb25hbDxE
ZXZpY2VNb3Rpb25FdmVudAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRp
b246OmNyZWF0ZShhY2NlbGVyYXRpb24tPngsIGFjY2VsZXJhdGlvbi0+eSwgYWNjZWxlcmF0aW9u
LT56KTsKIH0KIAotc3RhdGljIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+
IGNvbnZlcnQoT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4mJiByb3Rh
dGlvblJhdGUpCitzdGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4g
Y29udmVydChzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+JiYg
cm90YXRpb25SYXRlKQogewogICAgIGlmICghcm90YXRpb25SYXRlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg2LDI3ICs4NiwyNyBAQCBzdGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRh
dGE6OlJvdGF0aW9uUmF0ZT4gY29udmVydChPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudAogICAg
IHJldHVybiBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZShyb3RhdGlvblJh
dGUtPmFscGhhLCByb3RhdGlvblJhdGUtPmJldGEsIHJvdGF0aW9uUmF0ZS0+Z2FtbWEpOwogfQog
Ci1PcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiBEZXZpY2VNb3Rpb25F
dmVudDo6YWNjZWxlcmF0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZl
bnQ6OkFjY2VsZXJhdGlvbj4gRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9kZXZpY2VNb3Rpb25EYXRhLT5hY2NlbGVyYXRpb24o
KSk7CiB9CiAKLU9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+IERldmlj
ZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gRGV2aWNlTW90aW9uRXZl
bnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBj
b252ZXJ0KG1fZGV2aWNlTW90aW9uRGF0YS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgp
KTsKIH0KIAotT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4gRGV2aWNl
TW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERldmljZU1v
dGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IERldmljZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUo
KSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KG1fZGV2aWNlTW90aW9uRGF0YS0+cm90YXRp
b25SYXRlKCkpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IERldmljZU1vdGlvbkV2ZW50OjppbnRl
cnZhbCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlTW90aW9uRXZlbnQ6Omlu
dGVydmFsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZXZpY2VNb3Rpb25EYXRhLT5pbnRlcnZh
bCgpOwogfQogCi12b2lkIERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9w
dGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBP
cHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+
JiYgcm90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IGludGVydmFsKQordm9pZCBEZXZpY2VN
b3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlv
bkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPERldmlj
ZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgc3RkOjpvcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90YXRpb25SYXRlPiYmIHJvdGF0
aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKQogewogICAgIGlmIChpc0Jl
aW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VN
b3Rpb25FdmVudC5oCmluZGV4IGU1MGY3NDYxZjQyOWI3ZDVkYzQ2Njk5ZWQ0MjVkNGE4MTkwMWUw
MjEuLjhhM2M0ZmMzYzZlZDA3ZWNmZTUzZDRjNjRmNDI5OGVkYzU2NjljYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCkBAIC00MSwxNiArNDEsMTYgQEAgcHVibGljOgog
CiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb24KICAgICBzdHJ1Y3QgQWNjZWxlcmF0aW9uIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB4OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHk7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gejsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHg7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gejsKICAgICB9
OwogCiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCBEZXZpY2VNb3Rpb25EYXRhOjpSb3Rh
dGlvblJhdGUKICAgICBzdHJ1Y3QgUm90YXRpb25SYXRlIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91
YmxlPiBhbHBoYTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBiZXRhOwotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IGdhbW1hOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGE7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZ2FtbWE7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8RGV2aWNlTW90aW9u
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlvbkRh
dGEqIGRldmljZU1vdGlvbkRhdGEpCkBAIC02MywxMiArNjMsMTIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VNb3Rpb25FdmVudCk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb24oKSBjb25zdDsKLSAgICBPcHRpb25h
bDxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdDsKLSAg
ICBPcHRpb25hbDxSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZSgpIGNvbnN0OwotICAgIE9wdGlv
bmFsPGRvdWJsZT4gaW50ZXJ2YWwoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFjY2VsZXJh
dGlvbj4gYWNjZWxlcmF0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxBY2NlbGVyYXRp
b24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJvdGF0aW9uUmF0ZT4gcm90YXRpb25SYXRlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGludGVydmFsKCkgY29uc3Q7CiAKLSAgICB2b2lkIGluaXREZXZpY2VNb3Rpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJs
ZSwgT3B0aW9uYWw8QWNjZWxlcmF0aW9uPiYmLCBPcHRpb25hbDxBY2NlbGVyYXRpb24+JiYsIE9w
dGlvbmFsPFJvdGF0aW9uUmF0ZT4mJiwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdm9pZCBpbml0
RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBi
b29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8QWNjZWxlcmF0aW9uPiYmLCBzdGQ6Om9wdGlv
bmFsPEFjY2VsZXJhdGlvbj4mJiwgc3RkOjpvcHRpb25hbDxSb3RhdGlvblJhdGU+JiYsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAg
IHVzaW5nIFBlcm1pc3Npb25TdGF0ZSA9IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3Bw
CmluZGV4IDNiOWQ3MTMxNTEzY2Y3M2QzNzlkNjA2MGViMzgzOWRmMTY5NGViODMuLjY2OGE0MWY1
NDgwZjE3NGVmNTBkOTYyYzBlYjY5MDBjYjdmNjgxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC8vIEZJWE1FOiBXZSBzaG91
bGQgcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCi1SZWY8RGV2
aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShPcHRpb25h
bDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4g
Z2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4g
Y29tcGFzc0FjY3VyYWN5KQorUmVmPERldmljZU9yaWVudGF0aW9uRGF0YT4gRGV2aWNlT3JpZW50
YXRpb25EYXRhOjpjcmVhdGUoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNz
QWNjdXJhY3kpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlT3JpZW50YXRpb25E
YXRhKGFscGhhLCBiZXRhLCBnYW1tYSwgY29tcGFzc0hlYWRpbmcsIGNvbXBhc3NBY2N1cmFjeSkp
OwogfQogCi1EZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVudGF0aW9uRGF0YShPcHRp
b25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJs
ZT4gZ2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJs
ZT4gY29tcGFzc0FjY3VyYWN5KQorRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRh
dGlvbkRhdGEoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kp
CiAgICAgOiBtX2FscGhhKGFscGhhKQogICAgICwgbV9iZXRhKGJldGEpCiAgICAgLCBtX2dhbW1h
KGdhbW1hKQpAQCAtNDcsMTIgKzQ3LDEyIEBAIERldmljZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNl
T3JpZW50YXRpb25EYXRhKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvCiAKICNl
bHNlCiAKLVJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IERldmljZU9yaWVudGF0aW9uRGF0YTo6
Y3JlYXRlKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCitSZWY8RGV2aWNl
T3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlT3JpZW50YXRpb25EYXRhKGFscGhhLCBiZXRhLCBn
YW1tYSwgYWJzb2x1dGUpKTsKIH0KIAotRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmll
bnRhdGlvbkRhdGEoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRh
LCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSkKK0Rldmlj
ZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50YXRpb25EYXRhKHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBnYW1tYSwgc3RkOjpvcHRpb25hbDxib29sPiBhYnNvbHV0ZSkKICAgICA6IG1fYWxwaGEo
YWxwaGEpCiAgICAgLCBtX2JldGEoYmV0YSkKICAgICAsIG1fZ2FtbWEoZ2FtbWEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgKaW5kZXggZGFjYjNkNTI4MDBlY2Mw
YWM5YzcwNTkxMzEyMTdjZDU4Mzk4NDQ2Yy4uYzgwNTFkZGY0NzY4MzRiOTBiMGFlNzFkYjhjYTUz
ZmIxYzA4ZjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEu
aApAQCAtMzksMzcgKzM5LDM3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25E
YXRhPiBjcmVhdGUoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRh
LCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5n
LCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoT3B0aW9uYWw8ZG91
YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1h
LCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxw
aGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2Ft
bWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOwogI2VuZGlmCiAKLSAgICBPcHRpb25h
bDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQotICAgIE9wdGlvbmFs
PGRvdWJsZT4gYmV0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYmV0YTsgfQotICAgIE9wdGlvbmFsPGRv
dWJsZT4gZ2FtbWEoKSBjb25zdCB7IHJldHVybiBtX2dhbW1hOyB9CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBiZXRhKCkgY29uc3QgeyByZXR1cm4gbV9iZXRhOyB9CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGdhbW1hKCkgY29uc3QgeyByZXR1cm4gbV9nYW1tYTsgfQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcGFzc0hlYWRpbmc7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+
IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGFzc0FjY3VyYWN5OyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9jb21wYXNzSGVhZGluZzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvbXBhc3NBY2N1cmFjeTsgfQogI2Vsc2UKLSAgICBP
cHRpb25hbDxib29sPiBhYnNvbHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGU7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29sdXRlKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0
ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKCkgPSBk
ZWZhdWx0OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRGV2aWNlT3JpZW50YXRpb25E
YXRhKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9u
YWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgT3B0aW9u
YWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpOworICAgIERldmljZU9yaWVudGF0aW9uRGF0YShz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNz
SGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQot
ICAgIERldmljZU9yaWVudGF0aW9uRGF0YShPcHRpb25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25h
bDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIE9wdGlvbmFsPGJvb2w+IGFi
c29sdXRlKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoc3RkOjpvcHRpb25hbDxkb3VibGU+
IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29sdXRlKTsKICNlbmRpZgogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBtX2FscGhhOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9iZXRhOwotICAg
IE9wdGlvbmFsPGRvdWJsZT4gbV9nYW1tYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9h
bHBoYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iZXRhOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBtX2dhbW1hOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9u
YWw8ZG91YmxlPiBtX2NvbXBhc3NIZWFkaW5nOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jb21w
YXNzQWNjdXJhY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fY29tcGFzc0hlYWRpbmc7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fY29tcGFzc0FjY3VyYWN5OwogI2Vsc2UKLSAg
ICBPcHRpb25hbDxib29sPiBtX2Fic29sdXRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9h
YnNvbHV0ZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuY3BwCmluZGV4IDExZjdhZWEzMzAyNDlhMzFkNWJhY2EzNGIwYWUzNzU0OTJj
OTk4ZWMuLmE1NmQ3OTJiZWY0N2Q0NzlkODI0N2U4Mjk1MmI0ZWZmOGYyMjMzZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKQEAgLTQ4LDM0ICs0
OCwzNCBAQCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aQogewogfQogCi1PcHRpb25hbDxkb3VibGU+
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphbHBoYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fb3JpZW50YXRpb24tPmFscGhhKCk7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50YXRp
b24tPmJldGEoKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjpnYW1tYSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6Z2FtbWEoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5nYW1tYSgp
OwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotT3B0aW9uYWw8ZG91YmxlPiBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Ojpjb21wYXNzSGVhZGluZygpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y29tcGFzc0hlYWRpbmcoKSBjb25zdAog
ewogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5jb21wYXNzSGVhZGluZygpOwogfQogCi1PcHRp
b25hbDxkb3VibGU+IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNvbXBhc3NBY2N1cmFjeSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y29tcGFz
c0FjY3VyYWN5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcmllbnRhdGlvbi0+Y29tcGFzc0Fj
Y3VyYWN5KCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9y
aWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29s
IGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0
YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGlu
ZywgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpCit2b2lkIERldmljZU9yaWVudGF0
aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
Z2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsMTIgKzg2LDEyIEBAIHZvaWQgRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwKIAogI2Vsc2UKIAotT3B0aW9uYWw8Ym9vbD4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
YWJzb2x1dGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBEZXZpY2VPcmllbnRhdGlvbkV2
ZW50OjphYnNvbHV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmFic29s
dXRlKCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVu
dGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNh
bmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwg
T3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCit2b2lkIERl
dmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAgICAg
aWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCmluZGV4IDgxOWVjYmIwNjg1OTExNmNjOTgw
YmY3MmZhM2EzY2U5MmI0MDJkODAuLjFlZWYzNjc5MGJiOTU0ODE0YTE1MGE3N2U5MDk2Y2IyMjBi
ZWUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaApA
QCAtNDksMTkgKzQ5LDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0
aW9uRXZlbnQoKTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEoKSBjb25zdDsKLSAgICBP
cHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGdhbW1h
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhKCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZ2FtbWEoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygpIGNvbnN0OwotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gY29tcGFzc0FjY3VyYWN5KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNv
bXBhc3NIZWFkaW5nKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NB
Y2N1cmFjeSgpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0
aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3Vi
bGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nLCBPcHRpb25hbDxkb3Vi
bGU+IGNvbXBhc3NBY2N1cmFjeSk7CisgICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29tcGFz
c0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpOwogI2Vsc2UK
LSAgICBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gYWJzb2x1dGUoKSBjb25zdDsKIAotICAgIHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9u
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFi
bGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9u
YWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpOworICAgIHZvaWQgaW5p
dERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJi
bGVzLCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgc3RkOjpv
cHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMTk3NTllNGNmOWU1YzZiNGM4
YmJkOGE2MmIzNDBmY2M2ODcwYmU1Li43NDAxNGQzMjAzNDRjYzFiODk5Y2ZkYmNjZTEwYWY2MGJk
MmVkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1OTUsNyArMTU5NSw3IEBAIFJl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQog
ICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoeyAqYm91bmRhcnksICpib3VuZGFyeSB9KTsKIH0K
IAotT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gRG9jdW1lbnQ6OmNhcmV0UG9zaXRpb25Gcm9tUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KQorc3RkOjpvcHRpb25hbDxCb3VuZGFy
eVBvaW50PiBEb2N1bWVudDo6Y2FyZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgY2xpZW50UG9pbnQpCiB7CiAgICAgaWYgKCFoYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01MzAxLDcgKzUzMDEsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogICAg
IHJldHVybiB7IH07CiB9CiAKLXZvaWQgRG9jdW1lbnQ6Om92ZXJyaWRlTGFzdE1vZGlmaWVkKGNv
bnN0IE9wdGlvbmFsPFdhbGxUaW1lPiYgbGFzdE1vZGlmaWVkKQordm9pZCBEb2N1bWVudDo6b3Zl
cnJpZGVMYXN0TW9kaWZpZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4mIGxhc3RNb2Rp
ZmllZCkKIHsKICAgICBtX292ZXJyaWRlTGFzdE1vZGlmaWVkID0gbGFzdE1vZGlmaWVkOwogfQpA
QCAtNTMwOSw3ICs1MzA5LDcgQEAgdm9pZCBEb2N1bWVudDo6b3ZlcnJpZGVMYXN0TW9kaWZpZWQo
Y29uc3QgT3B0aW9uYWw8V2FsbFRpbWU+JiBsYXN0TW9kaWZpZWQpCiAvLyBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tZG9jdW1lbnQtbGFzdG1v
ZGlmaWVkCiBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiB7Ci0gICAgT3B0
aW9uYWw8V2FsbFRpbWU+IGRhdGVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRh
dGVUaW1lOwogICAgIGlmIChtX292ZXJyaWRlTGFzdE1vZGlmaWVkKQogICAgICAgICBkYXRlVGlt
ZSA9IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWQ7CiAgICAgZWxzZSBpZiAobG9hZGVyKCkpCkBAIC02
MzU3LDcgKzYzNTcsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2hSYW5nZShSYW5nZSYgcmFuZ2Up
CiAgICAgbV9yYW5nZXMucmVtb3ZlKCZyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQgPSBnZXRDU1NDYW52YXNFbGVtZW50KG5h
bWUpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTc3NzcsMTAgKzc3NzcsMTAgQEAgc3RhdGljIHZv
aWQgZXhwYW5kUm9vdEJvdW5kc1dpdGhSb290TWFyZ2luKEZsb2F0UmVjdCYgbG9jYWxSb290Qm91
bmRzLCBjb25zdCBMZW4KICAgICBsb2NhbFJvb3RCb3VuZHMuZXhwYW5kKHJvb3RNYXJnaW5GbG9h
dEJveCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlQ2xpcHBlZFJl
Y3RJblJvb3RDb250ZW50c1NwYWNlKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29t
cHV0ZUNsaXBwZWRSZWN0SW5Sb290Q29udGVudHNTcGFjZShjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBPcHRpb25TZXQ8UmVuZGVy
T2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb24+IHZpc2libGVSZWN0T3B0aW9ucyA9IHsg
UmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNpdmVJ
bnRlcnNlY3Rpb24sIFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpBcHBs
eUNvbXBvc2l0ZWRDbGlwcywgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb246
OkFwcGx5Q29tcG9zaXRlZENvbnRhaW5lclNjcm9sbHMgfTsKLSAgICBPcHRpb25hbDxMYXlvdXRS
ZWN0PiByZWN0SW5GcmFtZUFic29sdXRlU3BhY2UgPSByZW5kZXJlci0+Y29tcHV0ZVZpc2libGVS
ZWN0SW5Db250YWluZXIocmVjdCwgJnJlbmRlcmVyLT52aWV3KCksICB7ZmFsc2UgLyogaGFzUG9z
aXRpb25GaXhlZERlc2NlbmRhbnQgKi8sIGZhbHNlIC8qIGRpcnR5UmVjdElzRmxpcHBlZCAqLywg
dmlzaWJsZVJlY3RPcHRpb25zIH0pOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVj
dEluRnJhbWVBYnNvbHV0ZVNwYWNlID0gcmVuZGVyZXItPmNvbXB1dGVWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKHJlY3QsICZyZW5kZXJlci0+dmlldygpLCAge2ZhbHNlIC8qIGhhc1Bvc2l0aW9uRml4
ZWREZXNjZW5kYW50ICovLCBmYWxzZSAvKiBkaXJ0eVJlY3RJc0ZsaXBwZWQgKi8sIHZpc2libGVS
ZWN0T3B0aW9ucyB9KTsKICAgICBpZiAoIXJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZSB8fCByZW5k
ZXJlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gcmVjdEluRnJhbWVB
YnNvbHV0ZVNwYWNlOwogCkBAIC03ODA0LDcgKzc4MDQsNyBAQCBzdHJ1Y3QgSW50ZXJzZWN0aW9u
T2JzZXJ2YXRpb25TdGF0ZSB7CiAgICAgYm9vbCBpc0ludGVyc2VjdGluZyB7IGZhbHNlIH07CiB9
OwogCi1zdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0
ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRlcnNlY3Rp
b25PYnNlcnZlciYgb2JzZXJ2ZXIsIEVsZW1lbnQmIHRhcmdldCwgYm9vbCBhcHBseVJvb3RNYXJn
aW4pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRlcnNlY3Rpb25PYnNlcnZhdGlvblN0YXRlPiBj
b21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludGVy
c2VjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgRWxlbWVudCYgdGFyZ2V0LCBib29sIGFwcGx5Um9v
dE1hcmdpbikKIHsKICAgICBhdXRvKiB0YXJnZXRSZW5kZXJlciA9IHRhcmdldC5yZW5kZXJlcigp
OwogICAgIGlmICghdGFyZ2V0UmVuZGVyZXIpCkBAIC03ODUzLDcgKzc4NTMsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlv
blN0YXRlKEZyYW1lVmlldwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPih0YXJn
ZXRSZW5kZXJlcikpCiAgICAgICAgIGxvY2FsVGFyZ2V0Qm91bmRzID0gZG93bmNhc3Q8UmVuZGVy
TGluZUJyZWFrPih0YXJnZXRSZW5kZXJlciktPmxpbmVzQm91bmRpbmdCb3goKTsKIAotICAgIE9w
dGlvbmFsPExheW91dFJlY3Q+IHJvb3RMb2NhbFRhcmdldFJlY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiByb290TG9jYWxUYXJnZXRSZWN0OwogICAgIGlmIChvYnNlcnZlci5yb290
KCkpIHsKICAgICAgICAgT3B0aW9uU2V0PFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0
T3B0aW9uPiB2aXNpYmxlUmVjdE9wdGlvbnMgPSB7IFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RD
b250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uLCBSZW5kZXJPYmplY3Q6
OlZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6QXBwbHlDb21wb3NpdGVkQ2xpcHMsIFJlbmRlck9i
amVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpBcHBseUNvbXBvc2l0ZWRDb250YWluZXJT
Y3JvbGxzIH07CiAgICAgICAgIHJvb3RMb2NhbFRhcmdldFJlY3QgPSB0YXJnZXRSZW5kZXJlci0+
Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIobG9jYWxUYXJnZXRCb3VuZHMsIHJvb3RSZW5k
ZXJlciwgeyBmYWxzZSAvKiBoYXNQb3NpdGlvbkZpeGVkRGVzY2VuZGFudCAqLywgZmFsc2UgLyog
ZGlydHlSZWN0SXNGbGlwcGVkICovLCB2aXNpYmxlUmVjdE9wdGlvbnMgfSk7CkBAIC03OTM5LDcg
Kzc5MzksNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMo
KQogICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW50ZXJzZWN0aW9uUmVjdCA9IHRhcmdl
dEZyYW1lVmlldy0+YWJzb2x1dGVUb0NsaWVudFJlY3QoaW50ZXJzZWN0aW9uU3RhdGUtPmFic29s
dXRlSW50ZXJzZWN0aW9uUmVjdCwgdGFyZ2V0LT5yZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgT3B0aW9uYWw8
RE9NUmVjdEluaXQ+IHJlcG9ydGVkUm9vdEJvdW5kczsKKyAgICAgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPERPTVJlY3RJbml0PiByZXBvcnRlZFJvb3RCb3VuZHM7CiAgICAgICAgICAgICAgICAg
aWYgKGlzU2FtZU9yaWdpbk9ic2VydmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlcG9y
dGVkUm9vdEJvdW5kcyA9IERPTVJlY3RJbml0KHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudFJvb3RCb3VuZHMueCgpLApAQCAtODIxNSwxMiArODIxNSwxMiBAQCBMb2dnZXImIERvY3Vt
ZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAgCi1PcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBEb2N1bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9m
cmFtZS0+bG9hZGVyKCkucGFnZUlEKCk7CiB9CiAKLU9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
RG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IERvY3VtZW50OjpmcmFtZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVy
KCkuZnJhbWVJRCgpOwogfQpAQCAtODgzNiw3ICs4ODM2LDcgQEAgdm9pZCBEb2N1bWVudDo6Y2xl
YXJDYW52YXNQcmVwYXJhdGlvbihIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQogICAgIG1fY2Fu
dmFzZXNOZWVkaW5nRGlzcGxheVByZXBhcmF0aW9uLnJlbW92ZShjYW52YXMpOwogfQogCi12b2lk
IERvY3VtZW50OjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UsIGNvbnN0IE9w
dGlvbmFsPEZsb2F0UmVjdD4mKQordm9pZCBEb2N1bWVudDo6Y2FudmFzQ2hhbmdlZChDYW52YXNC
YXNlJiBjYW52YXNCYXNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKQogewogICAg
IGlmICghaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk4MTM0N2ZlNzUwNzE4MDJjMDIyNzEzMGY0MjYzZjU4
ZWE0MGRkNjguLjZiMDFkYzY5YzAwYWUyYTc2MzFlM2E3NjYzYjI5YmVkNmY0ZDAwY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC00NDYsNyArNDQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBD
dXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFt
ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+
IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKLSAgICBPcHRpb25hbDxCb3VuZGFy
eVBvaW50PiBjYXJldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQ
b2ludCk7CisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBjYXJldFBvc2l0aW9uRnJv
bVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBFbGVtZW50KiBzY3JvbGxpbmdFbGVtZW50Rm9yQVBJKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRWxlbWVudCogc2Nyb2xsaW5nRWxlbWVudCgpOwpAQCAtNjQ1LDggKzY0NSw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0OwogCiAgICAgLy8gdG8gZ2V0IHZp
c3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQKICAgICB2b2lkIHNl
dFZpc3VhbGx5T3JkZXJlZCgpOwpAQCAtOTQ2LDcgKzk0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgZG9tYWluKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKIAotICAgIHZvaWQgb3ZlcnJpZGVM
YXN0TW9kaWZpZWQoY29uc3QgT3B0aW9uYWw8V2FsbFRpbWU+Jik7CisgICAgdm9pZCBvdmVycmlk
ZUxhc3RNb2RpZmllZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBsYXN0TW9kaWZpZWQoKSBjb25zdDsKIAogICAgIC8vIFRoZSBjb29r
aWVVUkwgaXMgdXNlZCB0byBxdWVyeSB0aGUgY29va2llIGRhdGFiYXNlIGZvciB0aGlzIGRvY3Vt
ZW50J3MKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc05vZGVz
V2l0aE1pc3NpbmdTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhNaXNzaW5nU3R5bGUgPSB0cnVlOyB9
CiAKICAgICAvLyBFeHRlbnNpb24gZm9yIG1hbmlwdWxhdGluZyBjYW52YXMgZHJhd2luZyBjb250
ZXh0cyBmb3IgdXNlIGluIENTUwotICAgIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IGdldENT
U0NhbnZhc0NvbnRleHQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiBnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBnZXRD
U1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG5hbWVGb3JD
U1NDYW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JikgY29uc3Q7CiAKQEAgLTE2
MDcsNyArMTYwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlcGFyZUNhbnZhc2VzRm9yRGlz
cGxheUlmTmVlZGVkKCk7CiAgICAgdm9pZCBjbGVhckNhbnZhc1ByZXBhcmF0aW9uKEhUTUxDYW52
YXNFbGVtZW50Jik7Ci0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBP
cHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZh
c0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICB2b2lk
IGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsgfTsKICAgICB2b2lkIGNhbnZhc0Rl
c3Ryb3llZChDYW52YXNCYXNlJikgZmluYWw7CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyPiBtX2Zvcm1Db250cm9sbGVy
OwogCiAgICAgQ29sb3IgbV9jYWNoZWRUaGVtZUNvbG9yOwotICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4+PiBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHM7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vha1B0cjxIVE1MTWV0YUVsZW1lbnQ+Pj4gbV9tZXRhVGhl
bWVDb2xvckVsZW1lbnRzOwogICAgIFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50PiBtX2FjdGl2ZVRo
ZW1lQ29sb3JNZXRhRWxlbWVudDsKICAgICBDb2xvciBtX2FwcGxpY2F0aW9uTWFuaWZlc3RUaGVt
ZUNvbG9yOwogCkBAIC0yMDEzLDcgKzIwMTMsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1f
Y2FjaGVkRE9NQ29va2llczsKIAotICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBtX292ZXJyaWRlTGFz
dE1vZGlmaWVkOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fb3ZlcnJpZGVMYXN0TW9k
aWZpZWQ7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNv
bnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQgeyAw
IH07CkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGU7CiAgICAgYm9vbCBtX3VzZXJIYXNJbnRlcmFjdGVk
V2l0aE1lZGlhRWxlbWVudCB7IGZhbHNlIH07CiAgICAgQmFja0ZvcndhcmRDYWNoZVN0YXRlIG1f
YmFja0ZvcndhcmRDYWNoZVN0YXRlIHsgTm90SW5CYWNrRm9yd2FyZENhY2hlIH07Ci0gICAgT3B0
aW9uYWw8UmVmZXJyZXJQb2xpY3k+IG1fcmVmZXJyZXJQb2xpY3k7CisgICAgc3RkOjpvcHRpb25h
bDxSZWZlcnJlclBvbGljeT4gbV9yZWZlcnJlclBvbGljeTsKICAgICBSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IENvbXBsZXRlIH07CiAKICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211
dGF0aW9uT2JzZXJ2ZXJUeXBlcyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggMjM3MDk1NGUzNmE4ODlmYmVlOGY4NzYyYjRiZGM3ODJi
ZThhYWEwZS4uZTAxNGNiNTJiYzc4ZDJiNDU0ZDRiNjE1ODk3NDQwODRlMDYxZjk5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm8KICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6
OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOwogfQog
Ci1PcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NR
dWlja0NoZWNrKCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpo
YXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0
dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCgpKTsKIApAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlCiAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9t
KGRvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAK
LU9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQorc3RkOjpvcHRpb25hbDxTdG9yYWdl
QWNjZXNzUXVpY2tSZXN1bHQ+IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NRdWlja0NoZWNrKCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0
b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmgKaW5kZXggOWYwMjk3OTk1ZjIwNzVlMDA1N2IxMmIwZDMwNmYzOThhMzVk
NjMzNy4uN2VmNGVhYzJiMDYyMzUzZDY4ZGRkOGU4NTcxNGE5NTg2ZTczYjBlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaApAQCAtNjYsNyArNjYsNyBAQCBz
dHJ1Y3QgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgewogICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IHN1YkZyYW1lRG9tYWluOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBjb25zdCB1bnNp
Z25lZCBtYXhOdW1iZXJPZlRpbWVzRXhwbGljaXRseURlbmllZEZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzID0gMjsKQEAgLTg1LDExICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKERvY3VtZW50JiBob3N0aW5n
RG9jdW1lbnQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVxdWVzdGluZ0RvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogCiBwcml2YXRlOgot
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCk7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOwogICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBib29sIGhhc1N0
b3JhZ2VBY2Nlc3NRdWlyaygpOwogCi0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNrUmVz
dWx0PiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gcmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0NoZWNr
KCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoUmVnaXN0cmFibGVEb21haW4m
JiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CkBAIC0xMTksMjkgKzExOSwyOSBAQCB2b2lkIFJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0PiBS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0PiBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQ+IHdhc0dyYW50ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZD4gd2FzR3JhbnRlZDsKICAgICBkZWNvZGVyID4+IHdhc0dyYW50ZWQ7
CiAgICAgaWYgKCF3YXNHcmFudGVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duPiBwcm9tcHRXYXNTaG93bjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bj4gcHJvbXB0V2Fz
U2hvd247CiAgICAgZGVjb2RlciA+PiBwcm9tcHRXYXNTaG93bjsKICAgICBpZiAoIXByb21wdFdh
c1Nob3duKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3Rv
cmFnZUFjY2Vzc1Njb3BlPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NT
Y29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21h
aW4+IHRvcEZyYW1lRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+
IHRvcEZyYW1lRG9tYWluOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVEb21haW47CiAgICAgaWYg
KCF0b3BGcmFtZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURvbWFpbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURvbWFpbjsKICAgICBkZWNvZGVyID4+IHN1
YkZyYW1lRG9tYWluOwogICAgIGlmICghc3ViRnJhbWVEb21haW4pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMGE1MjhlYmI3NWYyMzBmMmY2
OTcxNGNjNjMxNTJkZTNmZjQ0Mzg2MC4uNzA3OGVhOTcyNmU2YjI5YWY3Yzc1NDBlOTM1OWYyMGM5
ZGU1ZTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGlu
ZSB2b2lkIE5vZGU6OnNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSBzdGF0ZSkKICAgICBz
ZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFRh
YkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+IHRhYkluZGV4KQordm9pZCBFbGVtZW50Ojpz
ZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpvcHRpb25hbDxpbnQ+IHRhYkluZGV4KQogewogICAg
IGlmICghdGFiSW5kZXgpIHsKICAgICAgICAgc2V0VGFiSW5kZXhTdGF0ZShUYWJJbmRleFN0YXRl
OjpOb3RTZXQpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgRWxlbWVudDo6c2V0VGFiSW5kZXhF
eHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5kZXgpCiAgICAgfSgpKTsKIH0KIAotT3B0aW9u
YWw8aW50PiBFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkoKSBjb25zdAorc3RkOjpvcHRp
b25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0CiB7CiAgICAg
c3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKICAgICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5vdFNl
dDoKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEJlaW5nRHJhZ2dlZChib29s
IGZsYWcpCiAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRCZWluZ0RyYWdn
ZWQoKnRoaXMsIGZsYWcpOwogfQogCi1pbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxp
Z25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4g
cG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBib29sIGlzTFRSKQoraW5saW5lIFNj
cm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvcklubGluZURpcmVjdGlvbihzdGQ6Om9w
dGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBib29sIGlzTFRSKQogewogICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVfb3IoU2Ny
b2xsTG9naWNhbFBvc2l0aW9uOjpOZWFyZXN0KSkgewogICAgIGNhc2UgU2Nyb2xsTG9naWNhbFBv
c2l0aW9uOjpTdGFydDogewpAQCAtODY0LDcgKzg2NCw3IEBAIGlubGluZSBTY3JvbGxBbGlnbm1l
bnQgdG9TY3JvbGxBbGlnbm1lbnRGb3JJbmxpbmVEaXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xsTG9n
aWNhCiAgICAgfQogfQogCi1pbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50
Rm9yQmxvY2tEaXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBwb3NpdGlv
biwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitpbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Ny
b2xsQWxpZ25tZW50Rm9yQmxvY2tEaXJlY3Rpb24oc3RkOjpvcHRpb25hbDxTY3JvbGxMb2dpY2Fs
UG9zaXRpb24+IHBvc2l0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKICAgICBzd2l0
Y2ggKHBvc2l0aW9uLnZhbHVlX29yKFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQpKSB7CiAg
ICAgY2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0OiB7CkBAIC05MDcsNyArOTA3LDcg
QEAgaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvckJsb2NrRGlyZWN0
aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWwKICAgICB9CiB9CiAKLXZvaWQgRWxlbWVudDo6c2Ny
b2xsSW50b1ZpZXcoT3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+
PiYmIGFyZykKK3ZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoc3RkOjpvcHRpb25hbDxWYXJp
YW50PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0aW9ucz4+JiYgYXJnKQogewogICAgIGRvY3VtZW50
KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTE1ODMsNyAr
MTU4Myw3IEBAIExheW91dFJlY3QgRWxlbWVudDo6YWJzb2x1dGVFdmVudEhhbmRsZXJCb3VuZHMo
Ym9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVuCiAgICAgcmV0dXJuIGFic29sdXRlRXZl
bnRCb3VuZHNPZkVsZW1lbnRBbmREZXNjZW5kYW50cyhpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVt
ZW50cyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgTGF5
b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRpbmdCb3goRWxlbWVudCYgZWxlbWVudCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCBMYXlvdXRSZWN0Pj4g
bGlzdEJveEVsZW1lbnRCb3VuZGluZ0JveChFbGVtZW50JiBlbGVtZW50KQogewogICAgIEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50OwogICAgIGJvb2wgaXNHcm91cDsKQEAgLTE2MDAs
NyArMTYwMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgTGF5
b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRpbmdCb3goCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+
KCpzZWxlY3RFbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBi
b3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGJvdW5kaW5nQm94Owog
ICAgIGludCBvcHRpb25JbmRleCA9IDA7CiAgICAgZm9yIChhdXRvKiBpdGVtIDogc2VsZWN0RWxl
bWVudC0+bGlzdEl0ZW1zKCkpIHsKICAgICAgICAgaWYgKGl0ZW0gPT0gJmVsZW1lbnQpIHsKQEAg
LTE2NDYsNyArMTY0Niw3IEBAIFJlZjxET01SZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50UmVj
dHMoKQogICAgIHJldHVybiBET01SZWN0TGlzdDo6Y3JlYXRlKHF1YWRzKTsKIH0KIAotT3B0aW9u
YWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5n
QWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5k
ZXJPYmplY3QqLCBGbG9hdFJlY3Q+PiBFbGVtZW50Ojpib3VuZGluZ0Fic29sdXRlUmVjdFdpdGhv
dXRMYXlvdXQoKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTcxNSw3ICsxNzE1LDcgQEAg
Y29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2RvbS1lbGVtZW50LXRvZ2dsZWF0dHJpYnV0ZQotRXhjZXB0aW9uT3I8Ym9vbD4gRWxlbWVu
dDo6dG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIE9wdGlv
bmFsPGJvb2w+IGZvcmNlKQorRXhjZXB0aW9uT3I8Ym9vbD4gRWxlbWVudDo6dG9nZ2xlQXR0cmli
dXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Zm9yY2UpCiB7CiAgICAgaWYgKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZSkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKQEAg
LTQzNTEsNyArNDM1MSw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVyZXJzKCkKICAg
ICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogfQogCi1PcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNv
bHZlQ2FsbGJhY2tzKCkpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTY0LDEwICs0
NTY0LDEwIEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJp
bmcmIG91dEFuY2hvck5hbWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjphbmltYXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYga2V5ZnJh
bWVzLCBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4m
JiBvcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6OmFuaW1h
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4mJiBrZXlmcmFtZXMsIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUs
IEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYgb3B0aW9ucykKIHsKICAgICBTdHJpbmcgaWQg
PSAiIjsKLSAgICBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25z
Pj4ga2V5ZnJhbWVFZmZlY3RPcHRpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3Vi
bGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+IGtleWZyYW1lRWZmZWN0T3B0aW9uczsKICAgICBp
ZiAob3B0aW9ucykgewogICAgICAgICBhdXRvIG9wdGlvbnNWYWx1ZSA9IG9wdGlvbnMudmFsdWUo
KTsKICAgICAgICAgVmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4ga2V5ZnJh
bWVFZmZlY3RPcHRpb25zVmFyaWFudDsKQEAgLTQ1OTUsNyArNDU5NSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjphbmltYXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iCiAgICAgcmV0dXJuIGFuaW1hdGlvbjsKIH0KIAotVmVjdG9yPFJlZlB0cjxX
ZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFuaW1hdGlv
bnNPcHRpb25zPiBvcHRpb25zKQorVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50
OjpnZXRBbmltYXRpb25zKHN0ZDo6b3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbnM+IG9wdGlv
bnMpCiB7CiAgICAgLy8gSWYgd2UgYXJlIHRvIHJldHVybiBhbmltYXRpb25zIGluIHRoZSBzdWJ0
cmVlLCB3ZSBjYW4gZ2V0IGFsbCBvZiB0aGUgZG9jdW1lbnQncyBhbmltYXRpb25zIGFuZCBmaWx0
ZXIKICAgICAvLyBhbmltYXRpb25zIHRhcmdldGluZyB0aGF0IGFyZSBub3QgcmVnaXN0ZXJlZCBv
biB0aGlzIGVsZW1lbnQsIG9uZSBvZiBpdHMgcHNldWRvIGVsZW1lbnRzIG9yIGEgY2hpbGQncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggYmU4NWJiNDc5ODIwYzkwYzdlMzE4NzhhY2Q4NWE1ZDk5YTAz
NzU3OC4uNzNlYmVmMjRmYzgzOGY3ODNhOGI4MGFhZDRhOTdmMWVmYzY0MTcwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxRdWFsaWZpZWROYW1lPiBwYXJzZUF0dHJpYnV0ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKTsKIAotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZUF0dHJp
YnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBPcHRpb25hbDxib29sPiBmb3Jj
ZSk7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpOwogCiAgICAgY29u
c3QgQXRvbVN0cmluZyYgZ2V0SWRBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2b2lkIHNldElkQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5
TmFtZShuYW1lKTsgfQogICAgIHVuc2lnbmVkIGZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0
IHsgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShuYW1lLCBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
Y3JvbGxJbnRvVmlldyhPcHRpb25hbDxWYXJpYW50PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0aW9u
cz4+JiYgYXJnKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbEludG9WaWV3KHN0ZDo6
b3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+PiYmIGFyZyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0
cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9v
bCBjZW50ZXJJZk5lZWRlZCA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nyb2xs
SW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUgPSB0cnVlKTsKQEAg
LTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGJv
dW5kc0luUm9vdFZpZXdTcGFjZSgpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9i
amVjdCosIEZsb2F0UmVjdD4+IGJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+IGJv
dW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
RmxvYXRSZWN0IGJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGFzRm9jdXNWaXNpYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0SGFz
Rm9jdXNXaXRoaW4oYm9vbCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHRhYkluZGV4U2V0RXhwbGlj
aXRseSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0YWJJbmRleFNldEV4cGxpY2l0
bHkoKSBjb25zdDsKICAgICBib29sIHNob3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3VzTmF2
aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRUYWJJbmRleCgpIDwgMCAmJiAhc3VwcG9y
dHNGb2N1cygpOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKQEAgLTU1Miw3ICs1NTIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFj
aFJlbmRlcmVycygpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSk7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAg
ICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0Zp
eGVkUG9zaXRpb25FbGVtZW50cykgb3ZlcnJpZGU7CiAKQEAgLTYxOSw4ICs2MTksOCBAQCBwdWJs
aWM6CiAKICAgICBFbGVtZW50KiBmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRB
bmNob3JOYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+PiBhbmltYXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBPcHRp
b25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4mJik7Ci0gICAg
VmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFu
aW1hdGlvbnNPcHRpb25zPik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IGFu
aW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYs
IHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+
JiYpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucyhzdGQ6
Om9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb25zPik7CiAKICAgICBFbGVtZW50SWRlbnRpZmll
ciBjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpOwogCkBAIC02MzYsNyArNjM2LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBzZXRUYWJJbmRl
eEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50Pik7CisgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0
bHkoc3RkOjpvcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsKICAgICB2b2lkIHBhcnRBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDb250ZXh0LmgKaW5kZXggMTIxNzZjYWFlZDUyMjBmYzc4ZGJkMTQ2YWU5MWY2NmE4OTAwYTdm
My4uNmNkZjAyYTE0NmFjNzEwMDUzZTBjMzIwNGM5NjI2NDgxZmM3MTZkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRDb250ZXh0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IEVsZW1lbnRDb250
ZXh0IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEVsZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29udGV4
dCYgYSwgY29uc3QgRWxlbWVudENvbnRleHQmIGIpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgRWxl
bWVudENvbnRleHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IEVsZW1lbnRDb250ZXh0
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudENvbnRleHQ+
IEVsZW1lbnRDb250ZXh0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBFbGVtZW50
Q29udGV4dCBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRv
ckFzc2VydGlvbnMuaAppbmRleCA4NWQxOThjNTQwZmY5OTEwYzU0NmVlZjM2OTAxOTdhNzlkNDA0
ZmRmLi4zOTNiMzUxYzc0NzYwODA2YjBjOGFhZjM0M2YyYTU0ZDdiZDI4NTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsK
ICAgICB1aW50NjRfdCBtX2luaXRpYWxET01UcmVlVmVyc2lvbjsKLSAgICBPcHRpb25hbDxTY3Jp
cHREaXNhbGxvd2VkU2NvcGU+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNjcmlwdERpc2FsbG93ZWRTY29wZT4gbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uOwog
fTsKIAogLy8gRklYTUU6IE5vIHJlYWwgcG9pbnQgaW4gZG9pbmcgdGhlc2UgYXMgaW5saW5lczsg
dGhleSBhcmUgZm9yIGRlYnVnZ2luZyBhbmQgd2UgdXN1YWxseSB0dXJuIG9mZiBpbmxpbmluZyBp
biBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBkM2ExNzc1YWM5YzRlYjk3MjEw
Yzg3ZGZlYzJlYzhlMTg5NDlmY2UwLi45M2Y3MDljZjAwYzhkMWUyNGVlNjkyNTU0ZTFjYzlkNjQ0
MTIwYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEV2ZW50
OjpzZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHRhcmdldCkKICAgICAgICAgcmVjZWl2
ZWRUYXJnZXQoKTsKIH0KIAotdm9pZCBFdmVudDo6c2V0Q3VycmVudFRhcmdldChFdmVudFRhcmdl
dCogY3VycmVudFRhcmdldCwgT3B0aW9uYWw8Ym9vbD4gaXNJblNoYWRvd1RyZWUpCit2b2lkIEV2
ZW50OjpzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVlKQogewogICAgIG1fY3VycmVudFRhcmdldCA9IGN1
cnJlbnRUYXJnZXQ7CiAgICAgbV9jdXJyZW50VGFyZ2V0SXNJblNoYWRvd1RyZWUgPSBpc0luU2hh
ZG93VHJlZSA/ICppc0luU2hhZG93VHJlZSA6IChpczxOb2RlPihjdXJyZW50VGFyZ2V0KSAmJiBk
b3duY2FzdDxOb2RlPigqY3VycmVudFRhcmdldCkuaXNJblNoYWRvd1RyZWUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dC5oCmluZGV4IDUyODE1MDU3NzdlNmU1YzBiMzE3YzE2M2IxMzExMTE2NDMyOGU2MWUuLjgxY2Ji
NGU4ZDU0NTNiMGE1Y2QzNDY5NzE3MjllNzJhNmI0YzRkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdldChSZWZQdHI8RXZlbnRUYXJn
ZXQ+JiYpOwogCiAgICAgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRUYXJnZXQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUYXJnZXQoRXZl
bnRUYXJnZXQqLCBPcHRpb25hbDxib29sPiBpc0luU2hhZG93VHJlZSA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0Kiwgc3RkOjpvcHRpb25hbDxi
b29sPiBpc0luU2hhZG93VHJlZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgYm9vbCBjdXJyZW50VGFy
Z2V0SXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUYXJnZXRJc0luU2hh
ZG93VHJlZTsgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgZXZlbnRQaGFzZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXZlbnRQaGFzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApp
bmRleCA0YmYwNDU0NjQ0OTRiMmZlMGE3MzRjODM1Mzg1MWJhMDhhMTVlOWQzLi5jZDFkYmM4NjA4
ZjRlYzFmMWIxM2RiMGM5ZTU3MWVkNWU2ZWMxMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKIAogICAgIEV2ZW50UGF0aCBl
dmVudFBhdGggeyBub2RlLCBldmVudCB9OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQ2xl
YXJUYXJnZXRzQWZ0ZXJEaXNwYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZENs
ZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2g7CiAgICAgZm9yIChzaXplX3QgaSA9IGV2ZW50UGF0aC5z
aXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgY29uc3QgRXZlbnRDb250ZXh0JiBldmVudENv
bnRleHQgPSBldmVudFBhdGguY29udGV4dEF0KGkgLSAxKTsKICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhbHNvIHNldCBzaG91bGRDbGVhclRhcmdldHNBZnRlckRpc3BhdGNoIHRvIHRydWUg
aWYgYW4gRXZlbnRUYXJnZXQgb2JqZWN0IGluIGV2ZW50Q29udGV4dCdzIHRvdWNoIHRhcmdldCBs
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR0NSZWFjaGFibGVSZWYuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCmluZGV4IDIxNjE2ZDdiYmM4MzY3Y2M0
ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAuLmU3NDVhN2FmNDY0ZGQ5ZWI3MmI5MDc0OTdiNDQ2M2Rk
MmFkODRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCkBAIC0xMjQsOCArMTI0
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6R0NS
ZWFjaGFibGVSZWY8UD4+IDogU2ltcGxlQ2xhc3MKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhj
b25zdCBSZWY8UD4mIHZhbHVlKSB7IHJldHVybiBjb25zdF9jYXN0PFBlZWtUeXBlPih2YWx1ZS5w
dHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUoKSk7IH0KICAgICBzdGF0aWMgUGVla1R5cGUg
cGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIHR5cGVkZWYgT3B0aW9uYWw8
UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMgVGFrZVR5cGUgdGFrZShSZWY8UD4mJiB2YWx1
ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFs
PFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFJl
ZjxQPj4gVGFrZVR5cGU7CisgICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUp
IHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlv
bmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKaW5kZXggYmVkOTdlMTBjNmE2MjU1YjcyNmQ1ZTI2YzAxOTJmZWFhOWU3ODRiZS4uZWM1
ZjI4MjI4NTE0YThmMDJmOWYyOWUwNjhmYWExYzFjOTU4ZjQ3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGlj
IENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW5saW5l
U3R5bGVTaGVldENhY2hlS2V5PiBtYWtlSW5saW5lU3R5bGVTaGVldENhY2hlS2V5KGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PElubGluZVN0eWxlU2hlZXRDYWNoZUtleT4gbWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtleShj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gT25s
eSBjYWNoZSBmb3Igc2hhZG93IHRyZWVzLiBNYWluIGRvY3VtZW50IGlubGluZSBzdHlsZXNoZWV0
cyBhcmUgZ2VuZXJhbGx5IHVuaXF1ZSBhbmQgY2FuJ3QgYmUgc2hhcmVkIGJldHdlZW4gZG9jdW1l
bnRzLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHJlbGF4ZWQgd2hlbiBhIHN0eWxlc2hl
ZXQgZG9lcyBub3QgY29udGFpbiBkb2N1bWVudC1yZWxhdGl2ZSBVUkxzIChvciAjdXJscykuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA3YjY1ZWViOGFhNjUyMGZjMjBmMDRhMTE5
ZGU3MzZiYWRjOGU4ZTM2Li45MWU4M2ZkNzg0ODBlY2E3MGY2ZTUxZDI4MjhhNWNjOTY2MTM2MjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIC8vIExlZ2FjeS4KICAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXI7Ci0g
ICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBrZXlMb2NhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4ga2V5TG9jYXRpb247CiAgICAgICAgIHVuc2lnbmVkIGNoYXJDb2RlOwog
ICAgICAgICB1bnNpZ25lZCBrZXlDb2RlOwogICAgICAgICB1bnNpZ25lZCB3aGljaDsKQEAgLTEw
Niw5ICsxMDYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbG9jYXRpb24geyBET01fS0VZ
X0xPQ0FUSU9OX1NUQU5EQVJEIH07CiAgICAgYm9vbCBtX3JlcGVhdCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzQ29tcG9zaW5nIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9j
aGFyQ29kZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9rZXlDb2RlOwotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBtX3doaWNoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fY2hhckNv
ZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9rZXlDb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1fd2hpY2g7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBD
b21tYW5kcyB0aGF0IHdlcmUgc2VudCBieSBBcHBLaXQgd2hlbiBpbnRlcnByZXRpbmcgdGhlIGV2
ZW50LiBEb2Vzbid0IGluY2x1ZGUgaW5wdXQgbWV0aG9kIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAppbmRleCA0OGU4MzFiYTg2MTJjNWY1
NDNkMjg0MThhMmQzNmViMmMyZmNlZmNlLi44ZjQ2ZWQ4NjhjMzgxYmEwYWY3NWVjNjEwNTc0YTU1
Y2QyMDRmZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2lj
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2Fk
ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKTsKIH0KIAot
T3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVy
cm9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9jYWNoZWRTY3Jp
cHQpOwogICAgIGlmIChtX2Vycm9yKQpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgTG9hZGFibGVD
bGFzc2ljU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VV
UkwpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7CiAKLSAgICBhdXRvIHByaW9yaXR5
ID0gWyZdKCkgLT4gT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHsKKyAgICBhdXRvIHBy
aW9yaXR5ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gewog
ICAgICAgICBpZiAobV9pc0FzeW5jKQogICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6YXN5bmNTY3JpcHQ7CiAgICAgICAgIC8vIFVzZSBkZWZhdWx0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCmluZGV4IDM4YzAzMTAxNzhm
OWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDguLmU4OGQ1NGRlNDU0YzQ2NWQyZjQ0MThhODQ2
MDJhOWE5YWJjOTEyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNs
YXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2Ny
aXB0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcm
IGludGVncml0eSwgUmVmZXJyZXJQb2xpY3ksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUs
IGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUsIGJvb2wgaXNBc3luYyk7CiAgICAgYm9vbCBp
c0xvYWRlZCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ2FjaGVkU2NyaXB0JiBj
YWNoZWRTY3JpcHQoKSB7IHJldHVybiAqbV9jYWNoZWRTY3JpcHQ7IH0KQEAgLTY2LDcgKzY2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKLSAgICBPcHRpb25hbDxFcnJvcj4g
bV9lcnJvciB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IG1fZXJy
b3IgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBTdHJpbmcgbV9pbnRlZ3JpdHk7CiAgICAgYm9vbCBt
X2lzQXN5bmMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1
bGVTY3JpcHQuY3BwCmluZGV4IGZmOTBhMjc5M2NhYjA2ODllZTA2YTI4ODJhYzY0Y2ZhMmM2NWU5
NGQuLmIwZTlhYjQxN2JmZjEwNGM0MWJjZmJlMDkyOGU4NDc0NDczOTA4YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcApAQCAtNTIsNyArNTIsNyBAQCBi
b29sIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojppc0xvYWRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aXNMb2FkZWQ7CiB9CiAKLU9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVN
b2R1bGVTY3JpcHQ6OmVycm9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkVycm9yPiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVy
biBtX2Vycm9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9k
dWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaApp
bmRleCBkMjUzNTk2M2Y2NDhiMDJhOGEwMWZkNjNiYjFlMzgxMzg2Y2VlNDM2Li44Njc4MzcyMGIz
OTdjOTg5MjJmNTY2MTY4OTk1NDc4ZTA4MGY5YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVNb2R1bGVTY3JpcHQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNv
bnN0IFN0cmluZyYgaW50ZWdyaXR5LCBSZWZlcnJlclBvbGljeSwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAgICBib29sIGlz
TG9hZGVkKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3Qg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzQ2xhc3NpY1Nj
cmlwdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWY8TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAg
ICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBtX21vZHVsZUtleTsKLSAgICBPcHRpb25hbDxM
b2FkYWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CisgICAgc3RkOjpvcHRpb25hbDxMb2FkYWJs
ZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CiAgICAgYm9vbCBtX3dhc0NhbmNlbGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1faXNMb2FkZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlU2NyaXB0LmgKaW5kZXggYzNlNmYxNmU1MzIxZGFjMjI2M2Q2Nzc2NDFhOTBmYzlhNTRlZTg1
Mi4uYmI3MzM2YmMzZDAwMWZlNjkyYTM3YWNmOGJlMDhiZGMzNDNlZTNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlU2NyaXB0LmgKQEAgLTUzLDEzICs1MywxMyBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgRXJyb3IgewogICAgICAgICBFcnJvclR5cGUgdHlwZTsKLSAgICAgICAgT3B0aW9uYWw8
Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENv
bnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZTsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TG9h
ZGFibGVTY3JpcHQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZShTY3JpcHRFbGVtZW50JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmNwcAppbmRleCBmNWZmZmI5MDM3YmU5MzQ0MjZlODhjMjZmZWZmODk0YjY3OGJiOTJkLi4zMmNm
ZDBkNjdmMzg0YjA3YWUzZjcwYWY3Y2M2ZTViNWQ1MTAxYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJcwog
ewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9u
YWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYgcG9ydHMpCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUm
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAgLTY5LDcgKzY5LDcgQEAgaW5s
aW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmEKIHsKIH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2
ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2Up
CitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRp
b25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBX
VEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMpKSk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAg
UmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgSW5pdCYmIGluaXRpYWxpemUKIAogTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1ZhbHVl
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBP
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpT
VmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVk
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA5NzI4
NGZjM2I3ZDBjM2IxNjliMzk4ZjVhZjliNzBhZTNmYTlkY2Q4Li4wYTkzNDBkNzJhZWYzYmY3ZGY2
OWMyZjUxYjUwM2ZlMjI2YWQ2OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC00
OCw3ICs0OCw3IEBAIHVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2
ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsg
fSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBv
cmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3Rh
dGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKICAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKTsKQEAgLTU5LDE4ICs1OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEpTQzo6SlNW
YWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBTdHJpbmcgbGFzdEV2
ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOwogICAgICAgICBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CiAgICAgfTsKICAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsK
IAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIHZvaWQg
aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291
cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAKICAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBjb25z
dCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYg
c291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4mIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0czsgfQogCiAg
ICAgdXNpbmcgRGF0YVR5cGUgPSBWYXJpYW50PEpTVmFsdWVJbldyYXBwZWRPYmplY3QsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBTdHJpbmcsIFJlZjxCbG9iPiwgUmVmPEFycmF5QnVmZmVy
Pj47CkBAIC04NSwxNCArODUsMTQgQEAgcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAg
ICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmLCBJc1RydXN0ZWQp
OwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkKTsKLSAgICBNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3Nh
Z2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYgPSB7IH0pOworICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYmID0geyB9KTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CiAKICAgICBEYXRhVHlwZSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fb3JpZ2lu
OwogICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwotICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4gbV9zb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+IG1f
c291cmNlOwogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtX3BvcnRzOwogCiAgICAg
SlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2NhY2hlZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKaW5kZXggMWY1NGQ4N2ZjZDBhMTg5YmEzMjhjYzk3YzJj
OTA5NGQzMjE0Zjc1ZC4uMDQ2ZmNhMTRiMjcxYjVkN2YwNjBlNzU2NTI0NjQ0YzJhY2Q5NDM0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaApAQCAtMzksNyAr
MzksNyBAQCBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZXNzYWdlUG9ydElkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGxvZ1N0
cmluZygpIGNvbnN0OwpAQCAtNTgsMTQgKzU4LDE0IEBAIHZvaWQgTWVzc2FnZVBvcnRJZGVudGlm
aWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gTWVzc2FnZVBvcnRJZGVu
dGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVzc2FnZVBv
cnRJZGVudGlmaWVyPiBNZXNzYWdlUG9ydElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxP
YmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVyVHlwZT4+IHBvcnRJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxQb3J0SWRlbnRpZmllclR5cGU+PiBwb3J0
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHBvcnRJZGVudGlmaWVyOwogICAgIGlmICghcG9y
dElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0ZDM4N2JjM2QyZDdiNmQ3YjY5MTc5MjVhMWE5Njli
NTM5OThkMWRiLi5kNmMxYjRlNGU3NDI2NDc0MWY0OGRjMzRiMjBhYjVlZmM4MjZmN2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKQEAgLTgyLDEyICs4MiwxMiBAQCBwdWJs
aWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIGJvb2wgY2hpbGRMaXN0OwotICAgICAg
ICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVzOwotICAgICAgICBPcHRpb25hbDxib29sPiBjaGFy
YWN0ZXJEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZXM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YTsKICAgICAgICAgYm9vbCBzdWJ0
cmVlOwotICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9sZFZhbHVlOwotICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGF0dHJpYnV0ZU9sZFZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNoYXJh
Y3RlckRhdGFPbGRWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
YXR0cmlidXRlRmlsdGVyOwogICAgIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBvYnNlcnZl
KE5vZGUmLCBjb25zdCBJbml0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAyYjdjYTdm
NjM3Nzc2Y2I4MDAyZDNjMGQ2ZjNlNzkwNGQzMjI5Yzc5Li5lMzBjMTI3ZTUyZWIzNWUxMDUwYmQx
NGI0NzU3MzgxNGJmYjllZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTE2MDIsNyAr
MTYwMiw3IEBAIFBvc2l0aW9uIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29uc3QgQm91
bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24ocG9pbnQuY29udGFpbmVyLnB0cigpLCBwb2ludC5vZmZzZXQpOwogfQogCi1PcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24p
CitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIocG9z
aXRpb24uY29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoIWNvbnRhaW5lcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKaW5kZXggYzc0OTA5ZGY4ZWNkZGFjMjc4YjY3ZmE3NTcxZWVjMTk1ZjFiYjg1OC4uNGJh
ODkyMmZjZWM3ZjUwMzE4ZDhjNTg0MzE2Y2NhOTQzOTc1ZmUzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBtYWtlQ29udGFp
bmVyT2Zmc2V0UG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogUG9zaXRpb24gbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKIFdFQkNPUkVf
RVhQT1JUIFBvc2l0aW9uIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29uc3QgQm91bmRh
cnlQb2ludCYpOwogCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtl
Qm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYpOwog
CiBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShOb2RlKik7CiBQb3NpdGlvbiBw
b3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKE5vZGUqKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdHJ1
Y3QgUG9zaXRpb25SYW5nZSB7CiAgICAgUG9zaXRpb24gZW5kOwogfTsKIAotT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBQb3NpdGlvblJhbmdlJik7CitzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUG9zaXRpb25SYW5nZSYp
OwogCiAvLyBpbmxpbmVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDI4NWE3MGQ3MjhjZmVhNTE4
NTk0MTNiYjlhMTk5ZTRjZjIyZDFhMjAuLmFiOWYxNDIyNmZhZDMwMzc0MTg4ZDE5NDYzZmU5YWU5
ZjBjMGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTA3MywxNCArMTA3MywxNCBAQCBTaW1w
bGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCiAgICAgcmV0
dXJuIG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkKIHsKICAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtYWtl
U2ltcGxlUmFuZ2UoKnJhbmdlKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1w
bGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+JiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+JiByYW5nZSkKIHsKICAg
ICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdlLmdldCgpKTsKIH0KQEAgLTEwOTIsNyArMTA5
Miw3IEBAIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5n
ZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorUmVmUHRyPFJhbmdlPiBjcmVh
dGVMaXZlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewog
ICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRl
eCA0MjUwM2M5N2Y0OWFjYTIwMzkwMjIzODc0ODQ0NGVjMjI1MDhmNTI2Li5jYzE0MTE4ZjkzMzU4
NDRiYmQ0NDgxNTA5NDQzOTE2YmFiMDVjMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTM0LDExICsx
MzQsMTEgQEAgcHJpdmF0ZToKIAogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNpbXBs
ZVJhbmdlKGNvbnN0IFJhbmdlJik7CiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlU2lt
cGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYpOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSYW5nZSopOwotV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+
Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxl
UmFuZ2UoY29uc3QgUmFuZ2UqKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+Jik7CiAKIFdFQkNPUkVf
RVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7Ci1X
RUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gY3JlYXRlTGl2
ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDRhMmRk
ZjgzOWU3ZGZhNmI0NjcxYmM2YjkzODdhNzQ0OTI4ZWQ3NjQuLjlmY2VlODQ2MzhlNDk5ZWY3ZjEw
OWVjNTA2NzM0MzQ5MjBhMjJiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVu
dCgpCiAgICAgbV9lbGVtZW50LmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKSk7CiB9CiAKLU9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVs
ZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2Fj
eVR5cGVzKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBT
Y3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0IHN1cHBv
cnRMZWdhY3lUeXBlcykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaXNMZWdhY3lTdXBwb3J0ZWRK
YXZhU2NyaXB0TGFuZ3VhZ2UoKSBpcyBub3QgdmFsaWQgSFRNTDUuIEl0IGlzIHVzZWQgaGVyZSB0
byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGxheW91dCB0
ZXN0cy4gVGhlIHNwZWNpZmljIHZpb2xhdGlvbnMgYXJlOgogICAgIC8vIC0gQWxsb3dpbmcgdHlw
ZT1qYXZhc2NyaXB0LiB0eXBlPSBzaG91bGQgb25seSBzdXBwb3J0IE1JTUUgdHlwZXMsIHN1Y2gg
YXMgdGV4dC9qYXZhc2NyaXB0LgpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24s
IExlZ2FjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNjcmlwdFR5cGUgc2NyaXB0VHlw
ZSA9IFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAgaWYgKE9wdGlvbmFsPFNjcmlwdFR5cGU+IHJl
c3VsdCA9IGRldGVybWluZVNjcmlwdFR5cGUoc3VwcG9ydExlZ2FjeVR5cGVzKSkKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiByZXN1bHQgPSBkZXRlcm1pbmVTY3JpcHRUeXBlKHN1
cHBvcnRMZWdhY3lUeXBlcykpCiAgICAgICAgIHNjcmlwdFR5cGUgPSByZXN1bHQudmFsdWUoKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lk
IFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50UmVzcGVjdGluZ1VzZXJHZXN0dXJlSW5k
aWNhdG9yKCkKIAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hF
dmVudChMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7Ci0gICAgaWYgKE9wdGlvbmFs
PExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBsb2FkYWJsZVNjcmlwdC5lcnJvcigpKSB7
Ci0gICAgICAgIGlmIChPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6Q29uc29sZU1lc3NhZ2U+IG1l
c3NhZ2UgPSBlcnJvci0+Y29uc29sZU1lc3NhZ2UpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9h
ZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IGxvYWRhYmxlU2NyaXB0LmVycm9yKCkpIHsKKyAg
ICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBt
ZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQogICAgICAgICAgICAgbV9lbGVtZW50LmRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWVzc2FnZS0+c291cmNlLCBtZXNzYWdlLT5sZXZl
bCwgbWVzc2FnZS0+bWVzc2FnZSk7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAg
IH0gZWxzZSBpZiAoIWxvYWRhYmxlU2NyaXB0Lndhc0NhbmNlbGVkKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCmluZGV4IDRkNGJmYjU0Yjk5NzEwNjkyZDI1NGVhYzNlMTRiNTA2NWNm
NTUzYjMuLjQ0YjI2ZGJjYTJmOTYzNmY0YzkwNDliYWIxNGJhMTRmN2M4ZjhlYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgdm9pZCBleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNj
cmlwdCYpOwogCi0gICAgT3B0aW9uYWw8U2NyaXB0VHlwZT4gZGV0ZXJtaW5lU2NyaXB0VHlwZShM
ZWdhY3lUeXBlU3VwcG9ydCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiBk
ZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0KSBjb25zdDsKICAgICBib29sIGln
bm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0OwogICAgIGJvb2wgaXNTY3JpcHRGb3JFdmVudFN1cHBv
cnRlZCgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnRSZXNwZWN0aW5nVXNlckdl
c3R1cmVJbmRpY2F0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA5ZTVjZjdh
YTgyNjg3YzY2ZDM0ZDVmOTBlOWQ4OTA2N2ExMmRmZTNkLi5hODUyODgyMjVhODY0NmIzZjE4ZTFh
NDhiOWE1NmRmZjIyNTA3YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZy
YWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKICAgICB2b2lkKiBzdHlsZVNoZWV0TGlzdDsKICAg
ICBXZWFrUHRyPEVsZW1lbnQ+IGhvc3Q7CiAgICAgdm9pZCogc2xvdEFzc2lnbm1lbnQ7Ci0gICAg
T3B0aW9uYWw8SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFydE1hcHBpbmdzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFydE1h
cHBpbmdzOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNoYWRvd1Jvb3QpID09IHNpemVv
ZihTYW1lU2l6ZUFzU2hhZG93Um9vdCksIHNoYWRvd3Jvb3Rfc2hvdWxkX3N0YXlfc21hbGwpOwpA
QCAtMjYzLDcgKzI2Myw3IEBAIGNvbnN0IFZlY3RvcjxXZWFrUHRyPE5vZGU+PiogU2hhZG93Um9v
dDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtCiAgICAgcmV0dXJuIG1f
c2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9kZXNGb3JTbG90KHNsb3QsICp0aGlzKTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFyc2VQ
YXJ0TWFwcGluZyhTdHJpbmdWaWV3IG1hcHBpbmdTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4+IHBhcnNlUGFydE1hcHBpbmcoU3Ry
aW5nVmlldyBtYXBwaW5nU3RyaW5nKQogewogICAgIGNvbnN0IGF1dG8gZW5kID0gbWFwcGluZ1N0
cmluZy5sZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggNTczMWJjZjFkZmQ4
MTNjNDNkNmRmYjdkNzU4NTk0Mzc1MmIxYTQ2NS4uYmI5OTZiMjdiYzE1NzBhMjQ5NDUyNjAyOTAx
MDUxOWQzNzIxMjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0xMzksNyArMTM5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6U2NvcGU+IG1fc3R5bGVT
Y29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+IG1fc2xvdEFzc2lnbm1l
bnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxQYXJ0TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdzOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxQYXJ0TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdzOwog
fTsKIAogaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggYWQ2ZTk2ZDFmMjJlZmU5NmNjYTkwODA0
ZGQ2NTk2MDI0MGM2NTFkNC4uYWIyNTg5OTNjMGVmMTMwYmZkZGU5N2E3MTMxZjM2ZTc1MDJkYmI4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAg
ICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKIH0KIAotT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYgbm9kZSkKK3N0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYgbm9k
ZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJv
b2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBCb3VuZGEKIAogdGVt
cGxhdGUgYm9vbCBjb250YWluczxUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5k
YXJ5UG9pbnQmKTsKIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgY29udGFpbnMo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYg
cG9pbnQpCit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mIHBv
aW50KQogewogICAgIHJldHVybiBwb2ludCAmJiBjb250YWluczx0cmVlVHlwZT4ocmFuZ2UsICpw
b2ludCk7CiB9CiAKLXRlbXBsYXRlIGJvb2wgY29udGFpbnM8Q29tcG9zZWRUcmVlPihjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7Cit0ZW1wbGF0ZSBi
b29sIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7CiAKIGJvb2wgY29udGFpbnNGb3JUZXN0aW5nKFRy
ZWVUeXBlIHR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgQm91bmRhcnlQb2lu
dCYgcG9pbnQpCiB7CkBAIC0yNDYsNyArMjQ2LDcgQEAgU2ltcGxlUmFuZ2UgdW5pb25SYW5nZShj
b25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIHsg
c3RkOjptaW4oYS5zdGFydCwgYi5zdGFydCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVlT3JkZXIpLCBz
dGQ6Om1heChhLmVuZCwgYi5lbmQsIGNvbXBhcmVCeUNvbXBvc2VkVHJlZU9yZGVyKSB9OwogfQog
Ci1PcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgYSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBiKQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiBhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYikKIHsKICAgICAvLyBG
SVhNRTogQ2FuIHRoaXMgYmUgZG9uZSBtb3JlIGVmZmljaWVudGx5LCB3aXRoIGZld2VyIGNhbGxz
IHRvIHRyZWVPcmRlcj8KICAgICBpZiAoIWEgfHwgIWIgfHwgIWludGVyc2VjdHM8Q29tcG9zZWRU
cmVlPigqYSwgKmIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBlZmQ4ZmRmNTJiNTI1
NzNkMmEyYTYwZjY5ZGNhN2Y1MWY2OTVkNDAyLi5hMzY4OWQwZjBiMTI3M2Q2ZTMzYjQwNzgyMjcw
MzFlM2FlYjQ5ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNDUsMjAgKzQ1LDIw
IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiB9OwogCiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFu
Z2VIZWxwZXIoQm91bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOwotT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYm
LCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmKTsKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYsIHN0
ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJik7CiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFu
Z2VIZWxwZXIoQm91bmRhcnlQb2ludCYmKTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2lt
cGxlUmFuZ2VIZWxwZXIoT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJik7CitzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoc3RkOjpvcHRpb25hbDxCb3VuZGFy
eVBvaW50PiYmKTsKIAogaW5saW5lIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRIZWxw
ZXIoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CiBpbmxpbmUg
Qm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludEhlbHBlcihCb3VuZGFyeVBvaW50JiYgcG9p
bnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9Ci1pbmxpbmUgT3B0aW9uYWw8Qm91bmRhcnlQ
b2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIoY29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4mIHBvaW50KSB7IHJldHVybiBwb2ludDsgfQotaW5saW5lIE9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+IG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgcG9p
bnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9CitpbmxpbmUgc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEhlbHBlcihjb25zdCBzdGQ6Om9wdGlvbmFsPEJv
dW5kYXJ5UG9pbnQ+JiBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KK2lubGluZSBzdGQ6Om9wdGlv
bmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKHN0ZDo6b3B0aW9uYWw8
Qm91bmRhcnlQb2ludD4mJiBwb2ludCkgeyByZXR1cm4gV1RGTW92ZShwb2ludCk7IH0KIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGF1dG8gbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIoVCYmIGFyZ3VtZW50
KSAtPiBkZWNsdHlwZShtYWtlQm91bmRhcnlQb2ludChzdGQ6OmZvcndhcmQ8VD4oYXJndW1lbnQp
KSkgeyByZXR1cm4gbWFrZUJvdW5kYXJ5UG9pbnQoc3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50KSk7
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgLi4uVD4gYXV0byBtYWtlU2ltcGxlUmFuZ2UoVCYmIC4u
LmFyZ3VtZW50cykgLT4gZGVjbHR5cGUobWFrZVNpbXBsZVJhbmdlSGVscGVyKG1ha2VCb3VuZGFy
eVBvaW50SGVscGVyKHN0ZDo6Zm9yd2FyZDxUPihhcmd1bWVudHMpKS4uLikpIHsgcmV0dXJuIG1h
a2VTaW1wbGVSYW5nZUhlbHBlcihtYWtlQm91bmRhcnlQb2ludEhlbHBlcihzdGQ6OmZvcndhcmQ8
VD4oYXJndW1lbnRzKSkuLi4pOyB9CiAKIC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRoZXNlIHR3byBm
dW5jdGlvbnMgdG8gaGF2ZSBzaG9ydGVyIG5hbWVzOyBhbm90aGVyIG9wdGlvbiBpcyB0byBjaGFu
Z2UgcHJlZml4IHRvIG1ha2VTaW1wbGVSYW5nZS4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYp
OwogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKE5vZGUmKTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNp
bXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJl
ZT4gTm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAog
dGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdl
JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29s
IGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4mKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1w
bGVSYW5nZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mKTsKIHRlbXBsYXRl
PFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJS
YW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpOwogdGVtcGxhdGU8VHJlZVR5cGUg
PSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwog
CkBAIC05Myw3ICs5Myw3IEBAIE9mZnNldFJhbmdlIGNoYXJhY3RlckRhdGFPZmZzZXRSYW5nZShj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIC8vIEZJWE1FOiBTdGFydCBvZiBmdW5j
dGlvbnMgdGhhdCBhcmUgZGVwcmVjYXRlZCBzaW5jZSB0aGV5IHNpbGVudGx5IGRlZmF1bHQgdG8g
Q29tcG9zZWRUcmVlLgogCiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSB1bmlvblJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKLVdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCiBjbGFz
cyBJbnRlcnNlY3RpbmdOb2RlUmFuZ2U7CiBJbnRlcnNlY3RpbmdOb2RlUmFuZ2UgaW50ZXJzZWN0
aW5nTm9kZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUg
U2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBzdGFydCwg
Qm91bmRhcnlQb2ludCYmCiAgICAgcmV0dXJuIHsgV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5k
KSB9OwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhl
bHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHN0YXJ0LCBPcHRpb25hbDxCb3VuZGFyeVBv
aW50PiYmIGVuZCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxl
UmFuZ2VIZWxwZXIoc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHN0YXJ0LCBzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQogewogICAgIGlmICghc3RhcnQgfHwgIWVuZCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE5MCw3ICsxOTAsNyBAQCBpbmxpbmUg
U2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2ludCkK
ICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1vdmUocG9pbnQpLCBXVEZNb3Zl
KGVuZCkpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5n
ZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIHBvaW50KQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihzdGQ6Om9wdGlvbmFsPEJv
dW5kYXJ5UG9pbnQ+JiYgcG9pbnQpCiB7CiAgICAgaWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNzT3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNzT3IuaAppbmRleCBiMGIzZTA1NjBkODg2NDlj
OGJmZTQwOGQ1ZDI0OTE5ZmExODE0MzllLi42NWEzMDU5MWJmOWEwMTE0Nzg4YTU2NDMwM2E4N2Zl
Nzk2YjA1NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3VjY2Vzc09yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N1Y2Nlc3NPci5oCkBAIC0zMCwxMiArMzAsMTIgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTdWNjZXNz
T3IgOiBwdWJsaWMgT3B0aW9uYWw8VD4geworY2xhc3MgU3VjY2Vzc09yIDogcHVibGljIHN0ZDo6
b3B0aW9uYWw8VD4gewogcHVibGljOgotICAgIFN1Y2Nlc3NPcigpIDogT3B0aW9uYWw8VD4oKSB7
IH0KLSAgICBTdWNjZXNzT3IoVCYmIGVycm9yKSA6IE9wdGlvbmFsPFQ+KGVycm9yKSB7IH0KKyAg
ICBTdWNjZXNzT3IoKSA6IHN0ZDo6b3B0aW9uYWw8VD4oKSB7IH0KKyAgICBTdWNjZXNzT3IoVCYm
IGVycm9yKSA6IHN0ZDo6b3B0aW9uYWw8VD4oZXJyb3IpIHsgfQogCi0gICAgZXhwbGljaXQgY29u
c3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhT3B0aW9uYWw8VD46Om9wZXJh
dG9yIGJvb2woKTsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIXN0ZDo6b3B0aW9uYWw8VD46Om9wZXJhdG9yIGJvb2woKTsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAKaW5kZXgg
NWNmYTY0YjQzYTZiYzZlMzVhMmU2YjRkNTBlMzliYWMwYWZlYzNiZi4uNjdlMTlkMWQ5YzhhOGI5
OTZlOGUzZmQ4N2Y2ODQ1M2Q4MmZhOTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuY3Bw
CkBAIC01Miw5ICs1Miw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0RGVjb2Rlcj4+IFRleHREZWNv
ZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgT3B0aW9ucyBvCiAgICAgcmV0dXJuIGRl
Y29kZXI7CiB9CiAKLUV4Y2VwdGlvbk9yPFN0cmluZz4gVGV4dERlY29kZXI6OmRlY29kZShPcHRp
b25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBpbnB1dCwgRGVjb2RlT3B0aW9ucyBvcHRp
b25zKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVjb2Rlcjo6ZGVjb2RlKHN0ZDo6b3B0aW9u
YWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4gaW5wdXQsIERlY29kZU9wdGlvbnMgb3B0aW9u
cykKIHsKLSAgICBPcHRpb25hbDxCdWZmZXJTb3VyY2U+IGlucHV0QnVmZmVyOworICAgIHN0ZDo6
b3B0aW9uYWw8QnVmZmVyU291cmNlPiBpbnB1dEJ1ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBk
YXRhID0gbnVsbHB0cjsKICAgICBzaXplX3QgbGVuZ3RoID0gMDsKICAgICBpZiAoaW5wdXQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHREZWNvZGVyLmgKaW5kZXggOWQ4ZTdjZjliZTkzOWNjMjFmODU3NWMzNjA0
MGY0YmU2ZDZkOWI2ZC4uMzJmYjE1MjA2YjRkZjQ3MDViM2NjNDZiMWU3OWNhNWI0MjE1OWYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHN0cnVjdCBEZWNvZGVPcHRpb25zIHsKICAgICAgICAgYm9vbCBzdHJlYW0geyBmYWxzZSB9Owog
ICAgIH07Ci0gICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBkZWNvZGUoT3B0aW9uYWw8QnVmZmVyU291
cmNlOjpWYXJpYW50VHlwZT4sIERlY29kZU9wdGlvbnMpOworICAgIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gZGVjb2RlKHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4sIERlY29k
ZU9wdGlvbnMpOwogCiBwcml2YXRlOgogICAgIFRleHREZWNvZGVyKGNvbnN0IGNoYXIqLCBPcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5j
cHAKaW5kZXggOWE3Y2FkMTEyNTcwNWVkZjM1YTczNGQzNTBhMzY2N2YyMmRhMjNiYS4uNDFhY2M2
OTI2M2ViZTg0YmZiZWZkOWRlOWUzODYwY2M5ZGVhNzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVGV4
dERlY29kZXJTdHJlYW1EZWNvZGVyOjpUZXh0RGVjb2RlclN0cmVhbURlY29kZXIoUmVmPFRleHRE
ZWNvZGVyPiYmIHRleHREZWNvZGUKIHsKIH0KIAotRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVj
b2RlclN0cmVhbURlY29kZXI6OmRlY29kZShPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlPiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPFN0cmluZz4gVGV4dERlY29kZXJTdHJlYW1EZWNvZGVy
OjpkZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gbV90ZXh0RGVjb2Rlci0+ZGVjb2RlKFdURk1vdmUodmFsdWUpLCB7IHRy
dWUgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJl
YW1EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVy
LmgKaW5kZXggNzYxODY4NTA1NzE4NjZiNmIyYmYwYTE0MWQxMDBmMGY3Y2RkZjY0YS4uYTM5NTBh
Mzg5OTFlZmJkNWI5ODk3NTExNTY3ZjM1YTBjZjhmZmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxUZXh0RGVjb2RlclN0cmVhbURlY29kZXI+PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmYXRhbCwgYm9vbCBpZ25vcmVCT00pOwog
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RGVjb2Rlci0+ZW5j
b2RpbmcoKTsgfQotICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGVjb2RlKE9wdGlvbmFsPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGU+KTsKKyAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRlY29kZShz
dGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+KTsKICAgICBFeGNlcHRpb25P
cjxTdHJpbmc+IGZsdXNoKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEVuY29kZXJTdHJlYW1FbmNvZGVyLmgKaW5kZXggMGFhMDRiM2JmYjNhM2U1ZmNkYjk3YjQ5YzNl
ZTQ1NGNlYzk4MWJkYS4uYjQ1NmQ5ZTM4YjlkN2YyODYxZjJkNDAwNjdjYWVkMTUwMjJkNjEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRFbmNvZGVyU3RyZWFtRW5j
b2RlcigpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPFVDaGFyPiBtX3BlbmRpbmdIaWdoU3Vy
cm9nYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IG1fcGVuZGluZ0hpZ2hTdXJyb2dhdGU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCmluZGV4IDNkNTky
NjU3NTc3MWUzODM4YTI4MzhkYTQ3ZmZhOWUyMjA1ZGRhZmUuLmRmYmFhYzE0OTQ1YTUwNTVjMDky
OWQyN2U3ZTU1NDU4YjM5N2NkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2l0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFRyYW5zaXRpb25FdmVudCk7CiAKLVRyYW5zaXRpb25FdmVudDo6VHJh
bnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwg
T3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikK
K1RyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0
cmluZyYgcHNldWRvRWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUs
IFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIDogQW5pbWF0aW9uRXZlbnRCYXNlKHR5cGUs
IGFuaW1hdGlvbiwgdGltZWxpbmVUaW1lKQogICAgICwgbV9wcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2l0aW9uRXZlbnQuaAppbmRleCAyMzEzNmQ3M2YwN2JiZDliYzE0YWNiODIxMzQ3NzdiMTIwOGVi
MTBlLi5hNTdmMjQ4MzMxMjg4ZjQyYTJlNDg3NmE0MmU5YjQ2MDUyNmMxYzNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFRyYW5zaXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25FdmVu
dEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVHJhbnNpdGlvbkV2ZW50KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRyYW5zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRp
bWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxp
bmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICBzdGF0aWMgUmVmPFRyYW5zaXRp
b25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5p
bWF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNpdGlvbkV2
ZW50KHR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQsIHRpbWVs
aW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlv
biopOworICAgIFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmlt
YXRpb24qKTsKICAgICBUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCk7CiAKICAgICBTdHJpbmcgbV9wcm9wZXJ0
eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDAzNzQ5ZTc3YTljYzc3ZDUyNTAw
OTBmYzZiZTY3MDZjZDFkZTc2ZWYuLjFlY2IzNmU4ODA3MWViMWM4YjkzY2YwZDg3MTQ4YTUxMGU1
ZmNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgSFRN
TExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3Ry
aW5nJiBmb3JBdHRyaWJ1dGVWYWwKICAgICByZXR1cm4gbV9sYWJlbHNCeUZvckF0dHJpYnV0ZS0+
Z2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRyaWJ1dGUoKmZvckF0dHJpYnV0ZVZhbHVlLmltcGwoKSwg
KnRoaXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJ
Zk5vdENsaXBwZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50
UG9pbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRQb2ludD4gYWJzb2x1dGVQb2ludElm
Tm90Q2xpcHBlZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQ
b2ludCkKIHsKICAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkgfHwgIWRvY3VtZW50LnZpZXcoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuY3BwCmluZGV4IDEyYzQzNjQzNjk0NjVjNmY1MDdkNzYzYjkzY2FkNmQy
MDRkYjMxY2MuLmQwMzQyZDg2YmQzNDczMzA1NWQzYjhjNDMwMjFlYTliYmE1NjUyNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcApAQCAtOTQsNyArOTQs
NyBAQCBib29sIFVzZXJHZXN0dXJlVG9rZW46OmlzVmFsaWRGb3JEb2N1bWVudChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnRzSW1wYWN0ZWRCeVVz
ZXJHZXN0dXJlLmNvbnRhaW5zKGRvY3VtZW50KTsKIH0KIAotVXNlckdlc3R1cmVJbmRpY2F0b3I6
OlVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUs
IFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlIHByb2Nlc3NJbnRlcmFjdGlvblN0eWxlKQorVXNlckdl
c3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKHN0ZDo6b3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+IHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQsIFVzZXJHZXN0
dXJlVHlwZSBnZXN0dXJlVHlwZSwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgcHJvY2Vzc0ludGVy
YWN0aW9uU3R5bGUpCiAgICAgOiBtX3ByZXZpb3VzVG9rZW4geyBjdXJyZW50VG9rZW4oKSB9CiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmgKaW5kZXggZjVjYzdmYWQyMTAyMTk3MjYwYTQzY2NmYzQxN2YxNDNjYWY0
NDI1Yy4uYTFhNDUwNDU0YzBiZGRjNDFhYjczYTNmY2Y1MGNmNTZiYjk0NDg2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93
biB1c2VyIGdlc3R1cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCiAgICAgZW51bSBjbGFzcyBQcm9j
ZXNzSW50ZXJhY3Rpb25TdHlsZSB7IEltbWVkaWF0ZSwgRGVsYXllZCB9OwotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0g
VXNlckdlc3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNz
SW50ZXJhY3Rpb25TdHlsZTo6SW1tZWRpYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0gVXNlckdlc3R1
cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJhY3Rp
b25TdHlsZTo6SW1tZWRpYXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2Vz
dHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46
Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6QWxsLCBVc2Vy
R2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggPSBVc2VyR2VzdHVyZVRva2VuOjpJ
c1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1
cmVJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRM
aW5rU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCmlu
ZGV4IGViZDE1ZTQxMThlNDZmOGFiZjkzYjg0YTVlZmEzNDI3YTE2NGY3MjkuLmE4NTI4MGExZjVl
NTcyYzlmNzY2NmMwNTQ4MTljZDBjMzg2YjRiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRl
ZExpbmtTdGF0ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0YXRlOjpp
bnZhbGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpCiAgICAgfQogfQogCi1pbmxpbmUgc3RhdGljIE9w
dGlvbmFsPFNoYXJlZFN0cmluZ0hhc2g+IGxpbmtIYXNoRm9yRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFN0cmluZ0hhc2g+
IGxpbmtIYXNoRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChp
czxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxI
VE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkudmlzaXRlZExpbmtIYXNoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuaAppbmRleCA2MjQ0YTMyMjFiNmEzMDU3NGU0ZjU0MDUwZjlmZDUxODhjYjA3MjNm
Li40ODdjNzA1OGViOTc2MWE0ODJhYmY5ZWIzNTY5NzUzNzhjOTY4NzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
aGVlbEV2ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZ
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSk7CiAKLSAgICBjb25zdCBPcHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZlbnQ+
JiB1bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWluZ1Bs
YXRmb3JtRXZlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVu
dD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5n
UGxhdGZvcm1FdmVudDsgfQogCiAgICAgZG91YmxlIGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVsdGFYOyB9IC8vIFBvc2l0aXZlIHdoZW4gc2Nyb2xsaW5nIHJpZ2h0LgogICAgIGRvdWJsZSBk
ZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfSAvLyBQb3NpdGl2ZSB3aGVuIHNjcm9s
bGluZyBkb3duLgpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2RlbHRh
WSB7IDAgfTsKICAgICBkb3VibGUgbV9kZWx0YVogeyAwIH07CiAgICAgdW5zaWduZWQgbV9kZWx0
YU1vZGUgeyBET01fREVMVEFfUElYRUwgfTsKLSAgICBPcHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZl
bnQ+IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9y
bVdoZWVsRXZlbnQ+IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzViMjlk
NDg2YjQ4MGE0ZGU3OC4uY2IzYjRlN2VjYWZhMjJkMGEwYjBkOWQ1NTk3MWFhNzE2YWQ1NzZkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsLmNwcApAQCAtNjAsNyArNjAsNyBAQCBNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNz
YWdlUG9ydENoYW5uZWwoKQogICAgIG1fcmVnaXN0cnkubWVzc2FnZVBvcnRDaGFubmVsRGVzdHJv
eWVkKCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6cHJvY2Vzc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
KQorc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gTWVzc2FnZVBvcnRDaGFubmVsOjpw
cm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQocG9ydCA9PSBtX3BvcnRzWzBdIHx8
IHBvcnQgPT0gbV9wb3J0c1sxXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaAppbmRleCBhODgyNmI4YzAwYzAwYjdhODc2YWQz
OGFmYWU2MWFlNzhlOGFjZDg2Li45YzcyYmM4NWM3MjI2MzlkZWQ3YzZlODgzNWUwMTQwNjgyNjBk
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2Fn
ZVBvcnRDaGFubmVsLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzWzBdOyB9CiAg
ICAgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9ydHNbMV07IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlm
aWVyPiBwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzRm9y
UG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICBib29sIGluY2x1ZGVzUG9y
dChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICB2b2lkIGVudGFuZ2xlUG9ydFdp
dGhQcm9jZXNzKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFByb2Nlc3NJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpc2VudGFuZ2xlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciBtX3BvcnRzWzJdOwogICAgIGJvb2wgbV9pc0Nsb3NlZFsyXSB7IGZhbHNlLCBmYWxzZSB9Owot
ICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBtX3Byb2Nlc3Nlc1syXTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBtX3Byb2Nlc3Nlc1syXTsKICAgICBSZWZQdHI8
TWVzc2FnZVBvcnRDaGFubmVsPiBtX2VudGFuZ2xlZFRvUHJvY2Vzc1Byb3RlY3RvcnNbMl07CiAg
ICAgVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtX3BlbmRpbmdNZXNzYWdlc1syXTsK
ICAgICBIYXNoU2V0PFJlZlB0cjxNZXNzYWdlUG9ydENoYW5uZWw+PiBtX3BlbmRpbmdNZXNzYWdl
UG9ydFRyYW5zZmVyc1syXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaAppbmRleCBjNTYwYWYwZTBkYjAzYjk3
NTYxMzY1NTk2MmY0MDRjYjQ2N2UxMzIyLi5kNDVmNzYzNGM2MThiMDk3MGI5OGRhOGMyZjQ5NzI2
YjliOTAxOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7CiAgICAgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5
IHRyYW5zZmVycmVkUG9ydHM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyByZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggYjlkMzdjNzkxODcwNGI1NmUzMWE2OGYx
OGI0OWVjOGI5ZDY4NmNmNS4uZjU1MDAzNTZiNjBjZGJjYWQyOWRkM2JmNzI1OGUzYWIyOTJjMDYz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQoRWRpdENv
bW1hbmQqKTsKIAogICAgIFRpbWVyIG1fdGltZXI7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmU7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
bV9yYW5nZVdpdGhBbHRlcm5hdGl2ZTsKICAgICBib29sIG1faXNBY3RpdmUgeyB9OwogICAgIGJv
b2wgbV9pc0Rpc21pc3NlZEJ5RWRpdGluZyB7IH07CiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZSBt
X3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBl
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFu
ZC5jcHAKaW5kZXggMzI5MWFiZTUyZjkxN2YyOGRmMDZjMzU2MWZmZTFlMTkzZDIxNmU3Ni4uNDc0
YmVjOGFhMzA0OGZjMDQxNThiN2NmZjZiZGMzNmY1MmIyMWFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcApAQCAtMzgsNyArMzgsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8Q2hh
bmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlLCBSZWY8SFRNTEVsZW1lbnQ+Pj4gbGlzdENvbnZlcnNp
b25UeXBlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6OlR5cGUs
IFJlZjxIVE1MRWxlbWVudD4+PiBsaXN0Q29udmVyc2lvblR5cGVGb3JTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGF1dG8gc3RhcnROb2RlID0gc2Vs
ZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpOwogICAgIGF1dG8gZW5kTm9kZSA9IHNlbGVj
dGlvbi5lbmQoKS5jb250YWluZXJOb2RlKCk7CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxzdGQ6OnBhaXI8Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlLCBSZWY8SFRNTEVsZW1l
bnQ+Pj4gbGlzdENvCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Q2hh
bmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlPiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RDb252
ZXJzaW9uVHlwZShEb2N1bWVudCYgZG9jdW1lbnQpCitzdGQ6Om9wdGlvbmFsPENoYW5nZUxpc3RU
eXBlQ29tbWFuZDo6VHlwZT4gQ2hhbmdlTGlzdFR5cGVDb21tYW5kOjpsaXN0Q29udmVyc2lvblR5
cGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0
cihkb2N1bWVudC5mcmFtZSgpKSkgewogICAgICAgICBpZiAoYXV0byB0eXBlQW5kRWxlbWVudCA9
IGxpc3RDb252ZXJzaW9uVHlwZUZvclNlbGVjdGlvbihmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlw
ZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5k
LmgKaW5kZXggMTQzOWYyMjdmMjVmZTQwZGYyYjI4YTJjODdiNDIxZmNjMTljM2Q1NC4uZWZmZGU4
MWM5NTMwMjhiNTk3ZWJiY2FmZWRiNjY5ZTYzYzZlNDkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IEhUTUxFbGVtZW50OwogY2xhc3MgQ2hhbmdlTGlzdFR5cGVDb21tYW5kIGZpbmFsIDogcHVibGlj
IENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1
aW50OF90IHsgQ29udmVydFRvT3JkZXJlZExpc3QsIENvbnZlcnRUb1Vub3JkZXJlZExpc3QgfTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gbGlzdENvbnZlcnNpb25UeXBlKERvY3VtZW50Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gbGlzdENvbnZlcnNpb25UeXBlKERvY3Vt
ZW50Jik7CiAgICAgc3RhdGljIFJlZjxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ+IGNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENoYW5nZUxpc3RUeXBlQ29tbWFuZChkb2N1bWVudCwgdHlwZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA3NmVkMTE1
Y2I1YjZhYmUxNWZhNzJhOTVlMTMwZjc4NzA0Y2JjNzlkLi4xMGFmMTNhNTgzNWQxM2EzY2RkNjQ4
ZDExYzVlOWNhNGEwNzIwZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQzMyw4ICsxNDMzLDggQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKIAogICAgIEFTU0VSVCgoc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5pc051bGwoKSAm
JiBlbmRPZlBhcmFncmFwaFRvTW92ZS5pc051bGwoKSkgfHwgIWVuZE9mUGFyYWdyYXBoVG9Nb3Zl
LmlzTnVsbCgpKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydEluZGV4OwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBlbmRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBz
dGFydEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGVuZEluZGV4OwogICAgIGJv
b2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25h
bCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlvbiAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNO
b25lKCkpIHsKICAgICAgICAgYXV0byB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52
aXNpYmxlU3RhcnQoKTsKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFn
cmFwCiAgICAgfQogfQogCi1PcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdAorc3RkOjpvcHRp
b25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtP
dXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdAogewogICAgIGF1dG8gZW1wdHlMaXN0SXRlbSA9IGVu
Y2xvc2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwog
ICAgIGlmICghZW1wdHlMaXN0SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAppbmRleCBjOTZlNDlhY2IxZmQxMzFhZDc5ZWRhNmVhZWY0Nzc0YzAy
MjdmMDkzLi4yZWY2NzJiOGEyNmFkNWNjOWM3MWFlOTA1YTM2YzQ5MzgyYjQ3ZmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC0yMDYsNyAr
MjA2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1l
bnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBvdXRl
ck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7CiAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJEZWxl
dGlvbihWaXNpYmxlUG9zaXRpb24gZGVzdGluYXRpb24gPSBWaXNpYmxlUG9zaXRpb24oKSk7CiAg
ICAgCi0gICAgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gc2hvdWxkQnJlYWtPdXRPZkVtcHR5
TGlzdEl0ZW0oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHNo
b3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkgY29uc3Q7CiAgICAgYm9vbCBicmVha091dE9m
RW1wdHlMaXN0SXRlbSgpOwogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVk
UGFyYWdyYXBoKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0aW9uSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9u
SGlnaGxpZ2h0LmgKaW5kZXggNjVmMTZlZmI2ODRjMTdhMGM1ZWNhMDMzOTgyOTc4MjcyYTUwODg4
Ni4uMjFiZDcxODY5YmEyMDM0ZDM5NzI3M2EzM2M1OTAzMTA0MDlhMTBlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaApAQCAtNTAsNyArNTAsNyBA
QCBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQgewogICAgIENvbG9yIGNvbG9yIHsgZGVmYXVs
dENvbXBvc2l0aW9uRmlsbENvbG9yIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0
aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTYyLDE5ICs2MiwxOSBAQCB2b2lkIENvbXBvc2l0aW9uSGlnaGxpZ2h0OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LU9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0
PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFz
dGFydE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zm
c2V0OwogICAgIGRlY29kZXIgPj4gZW5kT2Zmc2V0OwogICAgIGlmICghZW5kT2Zmc2V0KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAg
ICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBmMzA2MTM4OTdlZGUxNDEzNTQ4ZWViY2Y0
YzE2NmE2OWZiZjJjZmMxLi5jOWNiZTEzZGRmN2MzODdmNTdkYzNmNWE1YmVmY2M2MGFmZDI3M2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC01NjAsNyArNTYw
LDcgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IEVkaXRpbmdTdHlsZTo6c3R5bGVXaXRo
UmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKSBjb24KICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLU9w
dGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERp
cmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDgsNyArMTYwOCw3IEBAIFJlZjxFZGl0aW5nU3R5bGU+
IEVkaXRpbmdTdHlsZTo6aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVkZWQoRWxlbWVudCYgZWxl
bWVudCkKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlIHx8ICFyZW5kZXJlciB8fCAhcmVuZGVyZXIt
PnN0eWxlKCkuaGFzQXBwbGVDb2xvckZpbHRlcigpKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
LSAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZkludmVydGlibGUgPSBbJl0oQ1NTUHJvcGVydHlJ
RCBpZCkgLT4gT3B0aW9uYWw8Q29sb3I+IHsKKyAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZklu
dmVydGlibGUgPSBbJl0oQ1NTUHJvcGVydHlJRCBpZCkgLT4gc3RkOjpvcHRpb25hbDxDb2xvcj4g
ewogICAgICAgICBhdXRvIGNvbG9yID0gbV9tdXRhYmxlU3R5bGUtPnByb3BlcnR5QXNDb2xvcihp
ZCk7CiAgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9yLT5pc1Zpc2libGUoKSB8fCBjb2xvci0+
aXNTZW1hbnRpYygpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4IGNmNzRkNDlhYzkxMzRjNzY3ZGMzMmNjMGE1
YmQ4ZmQ5OGI2Nzg2NzcuLjQ3OGU1YjY1ZDZlZjFmNzA4ZGI5MjJmYmJmYzg4Y2Q3ZTg5MGI4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKIAogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKCkgeyByZXR1cm4g
bV9tdXRhYmxlU3R5bGUuZ2V0KCk7IH0KICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
c3R5bGVXaXRoUmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKSBjb25zdDsKLSAgICBPcHRpb25hbDxX
cml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxXcml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHlsZShSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4mJik7CiAgICAgdm9pZCBvdmVycmlkZVdpdGhTdHlsZShjb25zdCBTdHlsZVByb3BlcnRp
ZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA1ZDgxYzJmMjU2NzQ1YjY5NTM5
OWQ5MjA1Y2U3YWQwYjVmYWY5YTViLi4xZmJmZDkzYjIzOTA5N2ZjOWJkNGE5ZThlOTBiYzZjODVi
NDQyODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
dm9pZCBDbGVhclRleHRDb21tYW5kOjpDcmVhdGVBbmRBcHBseShEb2N1bWVudCYgZG9jdW1lbnQp
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29k
ZTsKIAotVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiB0ZW1wb3JhcnlT
ZWxlY3Rpb24sIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMpCitU
ZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVu
dCYgZG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gdGVtcG9yYXJ5U2Vs
ZWN0aW9uLCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zKQogICAg
IDogbV9kb2N1bWVudChSZWZQdHIoJmRvY3VtZW50KSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQogICAgICwgbV93YXNJZ25vcmluZ1NlbGVjdGlvbkNoYW5nZXMoZG9jdW1lbnQuZWRpdG9yKCku
aWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQpAQCAtNjYyLDcgKzY2Miw3IEBAIGJvb2wgRWRpdG9y
OjpjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQog
ICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCkgJiYgcGFzdGVib2FyZC5jYW5TbWFydFJlcGxhY2UoKTsKIH0KIAotYm9vbCBFZGl0b3I6OnNo
b3VsZEluc2VydEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ0RPTVJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24g
Z2l2ZW5BY3Rpb24pCitib29sIEVkaXRvcjo6c2hvdWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZXBs
YWNpbmdET01SYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogewogICAgIGlm
ICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc0MSwxMiArNzQxLDEyIEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBTZWxlY3RSZXBsYWNlbWVudCBzZWxlCiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpyYW5nZSwgdGV4dCksIHNlbGVjdFJlcGxhY2VtZW50
LCBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGU6OlllcywgZWRpdGluZ0FjdGlvbik7CiB9CiAKLU9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnNlbGVjdGVkUmFuZ2UoKQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdlKCkKIHsKICAgICByZXR1cm4gbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQog
Ci1ib29sIEVkaXRvcjo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSkgY29uc3QKK2Jvb2wgRWRpdG9yOjpzaG91bGREZWxldGVSYW5nZShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJh
bmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKCkgJiYgY2FuRGVsZXRlUmFuZ2UoKnJhbmdlKSAmJiBj
bGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkRGVsZXRlUmFuZ2UoKnJhbmdlKTsKIH0KQEAgLTc2
Nyw3ICs3NjcsNyBAQCBib29sIEVkaXRvcjo6dHJ5REhUTUxDdXQoKQogICAgIHJldHVybiAhZGlz
cGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBi
b2FyZEV2ZW50S2luZDo6Q3V0KTsKIH0KIAotYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBF
ZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKSBjb25zdAorYm9vbCBFZGl0b3I6OnNob3VsZEluc2Vy
dFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKG1f
ZG9jdW1lbnQuZnJhbWUoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc2hvdWxkU3VwcHJlc3NUZXh0
SW5wdXRGcm9tRWRpdGluZygpICYmIGFjdGlvbiA9PSBFZGl0b3JJbnNlcnRBY3Rpb246OlR5cGVk
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2b2lkIEVkaXRv
cjo6ZGlkRW5kRWRpdGluZygpCiAgICAgICAgIGNsaWVudCgpLT5kaWRFbmRFZGl0aW5nKCk7CiB9
CiAKLXZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQog
ewogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPndpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChyYW5nZSk7CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCBWZWN0b3I8U3RyaW5n
PiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIHdvcmQpIGNv
bnN0CiBUZXh0Q2hlY2tpbmdHdWVzc2VzIEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVu
Z3JhbW1hdGljYWwoKQogewogICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsK
LSAgICAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICAgICAgYXV0byBzZWxlY3Rpb24gPSBtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSAmJiBiZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRT
ZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgYXV0byB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNl
bGVjdGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKQEAgLTI2MjQsNyArMjYyNCw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB3b3JkU3RhcnQsCiAjZW5kaWYKIH0KICAgICAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uLCBib29sIGNoZWNrU3BlbGxpbmcpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uLCBib29sIGNoZWNrU3BlbGxpbmcpCiB7CiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNlbGVj
dGlvbiBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4KQEAgLTI2ODMsNyArMjY4
Myw3IEBAIGJvb2wgRWRpdG9yOjppc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgp
IGNvbnN0CiAgICAgcmV0dXJuIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwogfQogCi1P
cHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRv
cjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7
CiAgICAgcmV0dXJuIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoc2VsZWN0aW9uLCB0cnVl
KTsKIH0KQEAgLTI2OTMsNyArMjY5Myw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihzZWxlY3Rpb24sIGZhbHNlKTsKIH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5
cGU+IHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc3Bl
bGxpbmdSYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBhdXRvbWF0aWNSZXBsYWNl
bWVudFJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGdyYW1tYXJSYW5nZSkKK3Zv
aWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgc3BlbGxpbmdSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiBncmFtbWFyUmFuZ2UpCiB7CiAgICAgaWYgKHBsYXRmb3JtRHJpdmVu
VGV4dENoZWNrZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOTEsNyArMzA5MSw3
IEBAIHZvaWQgRWRpdG9yOjpkZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLT5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKHBvc2l0aW9uLCBvcmlnaW5hbFN0
cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
RWRpdG9yOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKICAg
ICBhdXRvIGRvY3VtZW50ID0gbV9kb2N1bWVudC5mcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQod2lu
ZG93UG9pbnQpOwogICAgIGlmICghZG9jdW1lbnQpCkBAIC0zMTI5LDcgKzMxMjksNyBAQCB2b2lk
IEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29sIGlnbm9yZSwgUmV2ZWFsU2Vs
ZWN0aW9uIHNob3VsZFJldmVhbAogICAgICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdP
cGVyYXRpb24oU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBSZXZlYWxFeHRl
bnQpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJhbmdl
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6Y29tcG9zaXRpb25S
YW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0aW9uTm9kZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM0NjcsNyArMzQ2Nyw3IEBAIHZvaWQgRWRpdG9yOjphcHBs
eUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBjb25zdAogYm9vbCBFZGl0b3I6OmZpbmRTdHJp
bmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVm
PERvY3VtZW50PiBwcm90ZWN0ZWREb2N1bWVudChtX2RvY3VtZW50KTsKLSAgICBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmVzdWx0UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmVzdWx0UmFuZ2U7CiAgICAgewogICAgICAgICBtX2RvY3VtZW50LnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxs
YmFja0Rpc2FibGVyIGRpc2FibGVyKG1fZG9jdW1lbnQpOwpAQCAtMzUwMSw3ICszNTAxLDcgQEAg
c3RhdGljIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGVDb250ZW50cyhO
b2RlJiBub2RlLCBGaW5kT3B0aW9ucwogICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKEJhY2t3
YXJkcykgPyBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhub2RlKSA6IG1ha2VC
b3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMobm9kZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJiBub2RlLCBG
aW5kT3B0aW9ucyBvcHRpb25zKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4g
bWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9kZSYgbm9kZSwgRmluZE9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpID8gbWFrZUJvdW5k
YXJ5UG9pbnRCZWZvcmVOb2RlKG5vZGUpIDogbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUobm9k
ZSk7CiB9CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCBzdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFwc2VJ
ZlJvb3RzRGlmZmVyKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCiAgICAgICAgID8gV1RGTW92ZShyYW5n
ZSkgOiBTaW1wbGVSYW5nZSB7IHJhbmdlLnN0YXJ0LCByYW5nZS5zdGFydCB9OwogfQogCi1PcHRp
b25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlZmVyZW5jZVJhbmdlLCBGaW5kT3B0
aW9ucyBvcHRpb25zKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9m
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRh
cmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNTcxLDEy
ICszNTcxLDEyIEBAIHN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdlKEZyYW1lJiBmcmFtZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdW5zaWduZWQg
RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25l
ZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBsZVJhbmdlPiogbWF0Y2hlcykK
K3Vuc2lnbmVkIEVkaXRvcjo6Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdl
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBsZVJh
bmdlPiogbWF0Y2hlcykKIHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VhcmNoUmFuZ2U7CisgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VhcmNoUmFuZ2U7CiAgICAgaWYgKHJhbmdlKSB7CiAg
ICAgICAgIGlmICgmcmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpCiAgICAg
ICAgICAgICBzZWFyY2hSYW5nZSA9ICpyYW5nZTsKQEAgLTM2OTgsNyArMzY5OCw3IEBAIHN0YXRp
YyBWZWN0b3I8U2ltcGxlUmFuZ2U+IHNjYW5Gb3JUZWxlcGhvbmVOdW1iZXJzKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IGV4dGVuZFNlbGVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIHVu
c2lnbmVkIGNoYXJhY3RlcnNUb0V4dGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBleHRlbmRTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9FeHRlbmQpCiB7CiAgICAgYXV0byBzdGFydCA9IG1ha2VEZXByZWNhdGVkTGVn
YWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpOwogICAgIGF1dG8gZW5kID0gbWFrZURlcHJlY2F0ZWRM
ZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpOwpAQCAtMzk0MCwxMyArMzk0MCwxMyBAQCBTdHJpbmcg
RWRpdG9yOjpzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4gcGxh
aW5UZXh0KCpyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OmNvbnRl
eHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gRWRpdG9yOjpjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIHsK
ICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
OwogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCkpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZUVuZCgpKSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5n
UmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KSBjb25zdAorc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25z
dCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIXJlc3VsdC5y
YW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MjAzLDcgKzQy
MDMsNyBAQCB2b2lkIEVkaXRvcjo6bm90aWZ5Q2xpZW50T2ZBdHRhY2htZW50VXBkYXRlcygpCiAg
ICAgfQogfQogCi12b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBFZGl0b3I6Omluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQoKSk7CiAgICAgYXR0YWNo
bWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKQEAgLTQyNTYsNyArNDI1Niw3
IEBAIHZvaWQgRWRpdG9yOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpCiAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5zZXRTaG91bGRTaG93QmxvY2tDdXJzb3IobV9vdmVyd3JpdGVNb2Rl
RW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OmFkanVzdGVkU2Vs
ZWN0aW9uUmFuZ2UoKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjphZGp1c3Rl
ZFNlbGVjdGlvblJhbmdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdG8gYWRq
dXN0IHRoZSBzZWxlY3Rpb24gdG8gaW5jbHVkZSB0aGUgYW5jaG9yIHRhZyBpdCdzIGluPyBXaG9l
dmVyIHdyb3RlIHRoaXMgY29kZSBvcmlnaW5hbGx5IGZvcmdvdCB0byBsZWF2ZSB1cyBhIGNvbW1l
bnQgZXhwbGFpbmluZyB0aGUgcmF0aW9uYWxlLgogICAgIGF1dG8gcmFuZ2UgPSBzZWxlY3RlZFJh
bmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA5MmRiNGViYjk5NDQ2ODA4YzJlYmJi
YTQ5OGI1NmZhY2YzZjYyZTMyLi4xNThiODdjYzE4ZWRmMTg1NWY1NGIxMGZlMzcyMjJjNDU1OTNi
MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBlbnVtIGNs
YXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewogCiBjbGFzcyBUZW1wb3Jh
cnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRlbXBvcmFy
eVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+ID0g
c3RkOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiA9IHsgfSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKERvY3VtZW50Jiwg
c3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uU2V0
PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5U
ZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoKTsKIAogcHJpdmF0ZToKQEAgLTEzOCw3ICsxMzgsNyBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FwcGVhcmFu
Y2VVcGRhdGVzV2VyZUVuYWJsZWQ7CiAjZW5kaWYKLSAgICBPcHRpb25hbDxWaXNpYmxlU2VsZWN0
aW9uPiBtX3NlbGVjdGlvblRvUmVzdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxl
Y3Rpb24+IG1fc2VsZWN0aW9uVG9SZXN0b3JlOwogfTsKIAogY2xhc3MgSWdub3JlU2VsZWN0aW9u
Q2hhbmdlRm9yU2NvcGUgewpAQCAtMjE4LDkgKzIxOCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG91dGRlbnQoKTsKICAgICB2b2lkIHRyYW5zcG9zZSgpOwogCi0gICAgYm9v
bCBzaG91bGRJbnNlcnRGcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAgICBib29sIHNob3VsZEluc2Vy
dFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9y
SW5zZXJ0QWN0aW9uKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZERlbGV0
ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGNvbnN0OworICAgIGJvb2wgc2hv
dWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKKyAgICBib29sIHNob3VsZEluc2Vy
dFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBF
ZGl0b3JJbnNlcnRBY3Rpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
RGVsZXRlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBjb25zdDsKICAg
ICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgU2lt
cGxlUmFuZ2UmKTsKIAogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbik7CkBAIC0zMjcsNyArMzI3LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25z
dDsKICAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSopIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb25BZnRlclR5cGluZywgYm9vbCBkb1JlcGxhY2VtZW50KTsKLSAgICBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7IC8v
IFJldHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFuZ2UuCisgICAgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7IC8vIFJl
dHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFuZ2UuCiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBt
YXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CiAg
ICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGVsbENoZWNrUmVxdWVzdCYsIGNvbnN0
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CkBAIC0zMzYsNyArMzM2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Zl
cndyaXRlTW9kZUVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZU92ZXJ3
cml0ZU1vZGVFbmFibGVkKCk7CiAKLSAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMoT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+LCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHNwZWxsaW5nUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiBncmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyhPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4sIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiBzcGVsbGluZ1JhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIGdyYW1tYXJSYW5nZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVAogI2VuZGlmCkBAIC0zNjEsNyArMzYxLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKICAgICB2b2lkIGRpZEVuZEVkaXRp
bmcoKTsKLSAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKIAogICAgIHZvaWQgc2hvd0ZvbnRQYW5lbCgpOwpA
QCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpcm1PckNhbmNlbENvbXBv
c2l0aW9uQW5kTm90aWZ5Q2xpZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxD
b21wb3NpdGlvbigpOwogICAgIGJvb2wgY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52
YWxpZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb21wb3Np
dGlvblJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gY29tcG9zaXRpb25SYW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNp
Z25lZCYgc2VsZWN0aW9uRW5kKSBjb25zdDsKIAogICAgIC8vIGdldHRpbmcgaW50ZXJuYXRpb25h
bCB0ZXh0IGlucHV0IGNvbXBvc2l0aW9uIHN0YXRlIChmb3IgdXNlIGJ5IElubGluZVRleHRCb3gp
CkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29sLCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFs
RXhpc3RpbmdTZWxlY3Rpb24gPSBSZXZlYWxTZWxlY3Rpb246Olllcyk7CiAgICAgYm9vbCBpZ25v
cmVTZWxlY3Rpb25DaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VG
b3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvaW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApAQCAtNDE3LDcgKzQxNyw3IEBA
IHB1YmxpYzoKIAogICAgIEVkaXRpbmdCZWhhdmlvciBiZWhhdmlvcigpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBzZWxlY3RlZFJhbmdlKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlybU1hcmtlZFRleHQoKTsKQEAgLTQ1Miw3
ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2Zl
cigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHNlYXJjaFJhbmdlLCBGaW5kT3B0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc2VhcmNoUmFuZ2UsIEZpbmRPcHRpb25zKTsK
IAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1hcmsoKSBjb25zdDsgLy8gTWFyaywgdG8g
YmUgdXNlZCBhcyBlbWFjcyB1c2VzIGl0LgogICAgIHZvaWQgc2V0TWFyayhjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJik7CkBAIC00NjcsNyArNDY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24s
IE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgYm9v
bCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0
aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb3Vu
dE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9y
PFNpbXBsZVJhbmdlPiopOworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvdW50TWF0Y2hl
c0ZvclRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbGltaXQsIGJvb2wgbWFya01hdGNoZXMsIFZlY3RvcjxT
aW1wbGVSYW5nZT4qKTsKICAgICBib29sIG1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQoYm9vbCk7CiAKQEAgLTU1MiwxNSArNTUyLDE1IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0Q2hl
Y2tpbmdSZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBj
b250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jl
c3VsdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0
Q2hlY2tpbmdSZXN1bHQmKSBjb25zdDsKICAgICBib29sIGlzSGFuZGxpbmdBY2NlcHRlZENhbmRp
ZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlOyB9CiAK
ICAgICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNH
ZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rp
b25hcnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1
cEluZm87IH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZp
bGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtNTkzLDcgKzU5Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZy
YWdtZW50Jik7CiAKICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlv
bihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklm
TmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBEb05vdFJldmVhbEV4dGVudCk7Ci0gICAgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZyk7CisgICAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nKTsKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5n
VHlwZT4gcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKGNvbnN0IE5vZGUmIHJvb3RFZGl0YWJs
ZUVsZW1lbnQsIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yKSBjb25zdDsKQEAg
LTYxMyw3ICs2MTMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxl
Y3Rpb25SYW5nZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2Vs
ZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGEyYmZhNmRlOTFkYjQ4NGM2MWRk
OTgwOWUyYzhjZjg0OTY5N2QwY2EuLjlkYTgwNzM4NWUwM2MzOTEwY2JhZjgwOGFiM2ZjYmU3ZWUy
MTg5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNo
YW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
LmgKQEAgLTYzLDEwICs2MywxMCBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZm9udE5hbWU7
CiAgICAgU3RyaW5nIG1fZm9udEZhbWlseTsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1fZm9udFNp
emU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplRGVsdGE7Ci0gICAgT3B0aW9uYWw8
Ym9vbD4gbV9ib2xkOwotICAgIE9wdGlvbmFsPGJvb2w+IG1faXRhbGljOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2Zv
bnRTaXplRGVsdGE7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2JvbGQ7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBtX2l0YWxpYzsKIH07CiAKIGNsYXNzIEZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
IHsKQEAgLTg2LDEyICs4NiwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRWRpdEFj
dGlvbiBlZGl0QWN0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8VmVydGlj
YWxBbGlnbkNoYW5nZT4gbV92ZXJ0aWNhbEFsaWduOwotICAgIE9wdGlvbmFsPENvbG9yPiBtX2Jh
Y2tncm91bmRDb2xvcjsKLSAgICBPcHRpb25hbDxDb2xvcj4gbV9mb3JlZ3JvdW5kQ29sb3I7Ci0g
ICAgT3B0aW9uYWw8Rm9udFNoYWRvdz4gbV9zaGFkb3c7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9z
dHJpa2VUaHJvdWdoOwotICAgIE9wdGlvbmFsPGJvb2w+IG1fdW5kZXJsaW5lOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVydGljYWxBbGlnbkNoYW5nZT4gbV92ZXJ0aWNhbEFsaWduOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29sb3I+IG1fYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IG1fZm9yZWdyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNoYWRvdz4gbV9z
aGFkb3c7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3N0cmlrZVRocm91Z2g7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBtX3VuZGVybGluZTsKICAgICBGb250Q2hhbmdlcyBtX2ZvbnRDaGFu
Z2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmli
dXRlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCmluZGV4IGZm
MmYyMjY5NjJlZTJiMDAzNTc0MWJmOTNjMjAxNmZhMDVmODA0MDUuLjc3MDA1NTQ1ZTdmZWFhMTZl
YzIxZjU4M2Q0ZGM0YzhiMTRlMWE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9udEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRy
aWJ1dGVzLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFRleHRMaXN0IHsKICAgICBib29sIG9y
ZGVyZWQgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxUZXh0TGlzdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxUZXh0TGlzdD4gZGVjb2RlKERlY29kZXImKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU1RleHRMaXN0PiBjcmVhdGVU
ZXh0TGlzdCgpIGNvbnN0OwpAQCAtNTQsMTkgKzU0LDE5IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IGlubGluZSB2b2lkIFRleHRMaXN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0eWxlKSA8PCBzdGFydGluZ0l0
ZW1OdW1iZXIgPDwgb3JkZXJlZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5l
IE9wdGlvbmFsPFRleHRMaXN0PiBUZXh0TGlzdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXh0TGlzdD4gVGV4
dExpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+
IHN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gc3R5bGU7CiAgICAgZGVjb2RlciA+
PiBzdHlsZTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0ZW1OdW1iZXI7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAgICBkZWNvZGVyID4+IHN0YXJ0aW5nSXRlbU51
bWJlcjsKICAgICBpZiAoIXN0YXJ0aW5nSXRlbU51bWJlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9yZGVy
ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggM2M1NGEzMGM3ZDFhNmViZGU4YjFjMmYw
NzNmODcyN2VjNWJlMDQ5MC4uYmRkOWZkYmJlNzY5NGU5NDkyZmNjMGM4OWFhMWRlZjI4YzMzZmM5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgICAgIGluc2Vy
dEJsb2NrUGxhY2Vob2xkZXIobGFzdFBhcmFncmFwaEluQmxvY2tOb2RlKTsKIH0KICAgICAKLUVs
ZW1lbnQqIEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxlbWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChj
b25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorRWxlbWVudCogRm9ybWF0QmxvY2tD
b21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tD
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5oCmlu
ZGV4IGRhMmFkNTA0YmMxMDUzNzk4NDRlN2NhYTUwMjUwNmQxNTExNjI3OTQuLjE5NTAxYzg2NDcw
M2E2MjY3MGFhN2NlYzM2M2E5NjBmOTM3N2NlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb3JtYXRCbG9ja0NvbW1hbmQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBwcmVzZXJ2ZXNUeXBpbmdTdHlsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5k
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIHN0YXRpYyBFbGVtZW50KiBlbGVt
ZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
Jik7CiAgICAgYm9vbCBkaWRBcHBseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQXBwbHk7IH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
MjRkZThkN2QwYWIwMmZmMGZkYTU3N2YxODg2YmI1OTZhOTY2NjRhNi4uOTFmZmIzZjVmZTJmM2Yz
ZDE1YjMyMTJhOGExOThlYzMwOTMwNjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKQEAgLTIwMjYsNyArMjAyNiw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246
OnNlbGVjdEFsbCgpCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rl
ZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEFmZmluaXR5IGFmZmlu
aXR5LCBTaG91bGRDbG9zZVR5cGluZyBjbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgdXNlclRy
aWdnZXJlZCkKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBBZmZpbml0eSBhZmZpbml0eSwgU2hvdWxk
Q2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7
CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjUyMyw3ICsyNTIz
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50Q29udGFp
bmluZ0NhcmV0U2VsZWN0aW9uKCkKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigq
cmFuZ2UpKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjplbGVt
ZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBlbGVtZW50ID0gZGVwcmVjYXRlZEVuY2xvc2lu
Z0Jsb2NrRmxvd0VsZW1lbnQobV9zZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0yNTQ3LDcgKzI1
NDcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24oKQogICAgICAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKIH0K
IAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24oKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxl
Y3Rpb246OndvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpCiB7CiAgICAgcmV0dXJu
IHdvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pLnRvTm9y
bWFsaXplZFJhbmdlKCk7CiB9CkBAIC0yNjAxLDEyICsyNjAxLDEyIEBAIGJvb2wgRnJhbWVTZWxl
Y3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3Vy
cmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91
bnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24o
QWx0ZXJhdGlvbk1vdmUsIGFtb3VudCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFt
ZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5
RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAogewogICAgIHJldHVy
biByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEFsdGVyYXRpb25FeHRlbmQsIGFtb3Vu
dCk7CiB9CkBAIC0yNzQ4LDcgKzI3NDgsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rp
b25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25h
bDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxl
Y3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50
U2VsZWN0aW9uKEVBbHRlcmF0aW9uIGFsdGVyYXRpb24sIGludCBhbW91bnQpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMjc5Nyw3ICsyNzk3LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRDb2xv
cihjb25zdCBDb2xvciYgY2FyZXRDb2xvcikKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKLXN0YXRpYyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9jdW1l
bnQ+JiBkb2N1bWVudCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3N0YXRp
YyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9jdW1lbnQ+JiBkb2N1bWVu
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVy
biBkb2N1bWVudCAmJiByYW5nZSAmJiBkb2N1bWVudC0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0LmNv
bnRhaW5lcikgJiYgZG9jdW1lbnQtPmNvbnRhaW5zKHJhbmdlLT5lbmQuY29udGFpbmVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCA2YmNhN2E4NTZkYzYx
MGIwZmYzNWZlMDhiNjA3YjY3YmE5ZDJlYWI5Li45M2E1OWQ1ODY0MjRiMjdmNmE4YTg3NzBhNGJm
ZDUzMjIxMjYyNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBA
IC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0
aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFs
aWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENsb3Nl
VHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNl
bGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIEFmZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQg
PSBOb3RVc2VyVHJpZ2dlcmVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFsbCgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tRnJhbWUoKTsKQEAgLTIxMCwxNSArMjEwLDE1IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25U
b0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdl
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFp
bmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVUNoYXIgY2hhcmFjdGVy
SW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0
aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUJ5
TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNl
bGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
Q3VycmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgc2V0Q2FyZXRCbGlua3MoYm9vbCBjYXJldEJs
aW5rcyA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25z
dCBDb2xvciYpOwpAQCAtMzEzLDE0ICszMTMsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3Bh
dGNoU2VsZWN0U3RhcnQoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRp
b24sIGludCBhbW91bnQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24sIGludCBhbW91bnQpIGNv
bnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUFzc29jaWF0ZWRMaXZlUmFuZ2UoKTsKIAog
ICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFJhbmdlPiBtX2Fz
c29jaWF0ZWRMaXZlUmFuZ2U7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV94UG9zRm9yVmVy
dGljYWxBcnJvd05hdmlnYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX3hQ
b3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fc2Vs
ZWN0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBtX29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0byBz
dG9yZSBiYXNlIGJlZm9yZSB0aGUgYWRqdXN0bWVudCBhdCBiaWRpIGJvdW5kYXJ5LgogICAgIFRl
eHRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBB
Y2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
LmNwcAppbmRleCBhYTE5YTAwZTI5NDIyZDFiYjIxZTBlN2MyZjUyZGIxZjFjMWNjNjExLi45ODky
YzkxNmFhMDIzNTE4ZGEwMTYzZmI5NWNjZGUzN2EwYTdjMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQg
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZShTdHJpbmdCdWlsZGVyJiByZXN1bHQs
IGNvbnN0IEVsZW1lbnQmIGVsCiAKICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAKLSAgICBPcHRp
b25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3RpdmVYTUxQcmVmaXhlZE5hbWU7CisgICAgc3RkOjpv
cHRpb25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3RpdmVYTUxQcmVmaXhlZE5hbWU7CiAgICAgaWYg
KGlzU2VyaWFsaXppbmdIVE1MKQogICAgICAgICByZXN1bHQuYXBwZW5kKGh0bWxBdHRyaWJ1dGVT
ZXJpYWxpemF0aW9uKGF0dHJpYnV0ZSkpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCBhY2FjODBlNmNlZmNmY2RmMzk0NmFmZjc4MTUw
OTMwMjA5M2I1N2FjLi41YzA4N2UwMTEwZGY1ZWQ2MTgxOTBkOTNiZGRlZDVhNTQ3MzEzMzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtODUsOCArODUs
OCBAQCBwcml2YXRlOgogICAgIExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvciBtX3J1bjsK
ICAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPExheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcj4gbV9uZXh0TGVh
Zk9uTGluZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yPiBtX3ByZXZpb3VzTGVhZk9uTGluZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX25leHRMZWFmT25MaW5lOwogfTsK
IAogYm9vbCByZW5kZXJPYmplY3RDb250YWluc1Bvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCos
IGNvbnN0IFBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDMyYTViNmQ4YjZkNmE4ZDNjZmNkMjU2N2Y4N2Jh
NjQ5NGZhNjFjNTUuLjQ3NTA0OTM4YWU3YzU2YmRjZmRiOWM1NGU2ODlhODMzYmVlNzQxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCkBAIC01NzMsNyArNTczLDcgQEAgc3RhdGljIGJvb2wgZnJhZ21lbnROZWVkc0NvbG9yVHJh
bnNmb3JtZWQoUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFAKICAgICAgICAg
fQogICAgIH0KIAotICAgIGF1dG8gcHJvcGVydHlMaWdodG5lc3MgPSBbJl0oY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBpbmxpbmVTdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSAtPiBPcHRp
b25hbDxkb3VibGU+IHsKKyAgICBhdXRvIHByb3BlcnR5TGlnaHRuZXNzID0gWyZdKGNvbnN0IFN0
eWxlUHJvcGVydGllcyYgaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgLT4g
c3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgYXV0byBjb2xvciA9IGlubGluZVN0eWxl
LnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYgKCFjb2xvciB8fCAhY29s
b3IudmFsdWUoKS5pc1Zpc2libGUoKSB8fCBjb2xvci52YWx1ZSgpLmlzU2VtYW50aWMoKSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xODIwLDcgKzE4MjAsNyBAQCBib29sIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpwZXJmb3JtVHJpdmlhbFJlcGxhY2UoY29uc3QgUmVwbGFjZW1lbnRG
cmFnbWVudCYgZgogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydGVkQ29udGVudFJhbmdlKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRl
ZENvbnRlbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0
YXJ0T2ZJbnNlcnRlZENvbnRlbnQsIG1fZW5kT2ZJbnNlcnRlZENvbnRlbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCmluZGV4IGU2
Zjg3MWE2Zjk1NGNjOTM1MzU4YjliMGQzZjNjNjA4MmJkN2FjYjguLjc1OWU4MDBiYmFlYjc2OThh
ODhlNGQ2YTZhYzg3Y2U4YzZhM2MyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dDsgfQogICAgIFN0cmlu
ZyBkb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudEZy
YWdtZW50UGxhaW5UZXh0OyB9CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gaW5zZXJ0ZWRD
b250ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnNl
cnRlZENvbnRlbnRSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kKERvY3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlvblNl
dDxDb21tYW5kT3B0aW9uPiwgRWRpdEFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggOGY3MTVmNGYxMDhhNjdmNTQ2M2EzNmM2ZmIx
OTJiMWY1YWY5MWUzMy4uZWIwYzc2OTYwM2Y0ZGRlMTRhYTY1MDdhNTEzZWYyOWFjNmE4YjAwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIFRleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4dENoZWNraW5nUGFyYWdy
YXBoKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKIH0KIAotVGV4dENoZWNraW5nUGFyYWdy
YXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoY29uc3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFu
Z2UsIGNvbnN0IFNpbXBsZVJhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mIHBhcmFncmFwaFJhbmdlKQorVGV4dENoZWNraW5nUGFyYWdyYXBoOjpUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGgoY29uc3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0
IFNpbXBsZVJhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcGFyYWdyYXBoUmFuZ2UpCiAgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdS
YW5nZSkKICAgICAsIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZShyZXBsYWNlbWVudFJhbmdl
KQogICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5nZSkKQEAgLTIyOCw5ICsyMjgs
OSBAQCBUZXh0Q2hlY2tpbmdIZWxwZXI6OlRleHRDaGVja2luZ0hlbHBlcihFZGl0b3JDbGllbnQm
IGNsaWVudCwgY29uc3QgU2ltcGxlUmFuZ2UmCiB7CiB9CiAKLWF1dG8gVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kTWlzc3BlbGxlZFdvcmRzKE9wZXJhdGlvbiBvcGVyYXRpb24pIGNvbnN0IC0+IHN0
ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+PgorYXV0byBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uIG9wZXJhdGlvbikg
Y29uc3QgLT4gc3RkOjpwYWlyPE1pc3NwZWxsZWRXb3JkLCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPj4KIHsKLSAgICBzdGQ6OnBhaXI8TWlzc3BlbGxlZFdvcmQsIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPj4gZmlyc3Q7CisgICAgc3RkOjpwYWlyPE1pc3NwZWxsZWRXb3JkLCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPj4gZmlyc3Q7CiAKICAgICB1aW50NjRfdCBjdXJyZW50Q2h1bmtPZmZzZXQg
PSAwOwogCkBAIC0yOTcsNyArMjk3LDcgQEAgYXV0byBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRG
aXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRpY2FsUGhyYXNlKGJvb2wgY2hlY2sKICAgICBH
cmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7
Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsZWRXb3JkUmFuZ2U7CisgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxlZFdvcmRSYW5nZTsKICAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZTsKICAgICAKICAgICAvLyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0
byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMsIHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMg
dGhhdCBtdWNoIGNvbnRleHQuCkBAIC01NTEsNyArNTUxLDcgQEAgVGV4dENoZWNraW5nR3Vlc3Nl
cyBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0
aWNhbFAKICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gVGV4dENo
ZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxlZFdvcmRzKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsZWRXb3Jk
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uOjpN
YXJrQWxsKS5zZWNvbmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaAppbmRleCBiNWQyM2EyZWUzZjVlZmE4ZThjY2MyZTM4OGNjMDk5ODRmMmQ4NzcxLi44
MmNkOTYxMzU5OWZmNGU1MmQzMjJjNmJmNTg0MjY4ZmEzNTY5NWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0
IFRleHRDaGVja2luZ1Jlc3VsdDsKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgVGV4dENoZWNraW5nUGFyYWdyYXBoKGNvbnN0IFNpbXBsZVJhbmdl
JiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpOwotICAgIFRleHRDaGVja2lu
Z1BhcmFncmFwaChjb25zdCBTaW1wbGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29uc3QgU2ltcGxl
UmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaChjb25zdCBT
aW1wbGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGF1dG9tYXRpY1Jl
cGxhY2VtZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBwYXJhZ3Jh
cGhSYW5nZSk7CiAKICAgICB1aW50NjRfdCByYW5nZUxlbmd0aCgpIGNvbnN0OwogICAgIFNpbXBs
ZVJhbmdlIHN1YnJhbmdlKENoYXJhY3RlclJhbmdlKSBjb25zdDsKQEAgLTY5LDEzICs2OSwxMyBA
QCBwcml2YXRlOgogCiAgICAgU2ltcGxlUmFuZ2UgbV9jaGVja2luZ1JhbmdlOwogICAgIFNpbXBs
ZVJhbmdlIG1fYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwotICAgIG11dGFibGUgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0Owot
ICAgIG11dGFibGUgT3B0aW9uYWw8dWludDY0X3Q+IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2NoZWNraW5nTGVuZ3RoOwotICAgIG11dGFibGUgT3B0
aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPHVpbnQ2NF90PiBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9jaGVja2luZ1N0YXJ0OworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9jaGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRM
ZW5ndGg7CiB9OwogCiBjbGFzcyBUZXh0Q2hlY2tpbmdIZWxwZXIgewpAQCAtOTYsMTQgKzk2LDE0
IEBAIHB1YmxpYzoKICAgICBVbmdyYW1tYXRpY2FsUGhyYXNlIGZpbmRGaXJzdFVuZ3JhbW1hdGlj
YWxQaHJhc2UoKSBjb25zdDsKICAgICBWYXJpYW50PE1pc3NwZWxsZWRXb3JkLCBVbmdyYW1tYXRp
Y2FsUGhyYXNlPiBmaW5kRmlyc3RNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFBocmFzZShi
b29sIGNoZWNrR3JhbW1hcikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFy
a0FsbE1pc3NwZWxsZWRXb3JkcygpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSByYW5nZSBvZiB0aGUg
Zmlyc3QgbWlzc3BlbGxlZCB3b3JkLgorICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1h
cmtBbGxNaXNzcGVsbGVkV29yZHMoKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgdGhl
IGZpcnN0IG1pc3NwZWxsZWQgd29yZC4KICAgICB2b2lkIG1hcmtBbGxVbmdyYW1tYXRpY2FsUGhy
YXNlcygpIGNvbnN0OwogCiAgICAgVGV4dENoZWNraW5nR3Vlc3NlcyBndWVzc2VzRm9yTWlzc3Bl
bGxlZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2UoYm9vbCBjaGVja0dyYW1tYXIpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgT3BlcmF0aW9uIDogYm9vbCB7IEZpbmRGaXJzdCwg
TWFya0FsbCB9OwotICAgIHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+PiBmaW5kTWlzc3BlbGxlZFdvcmRzKE9wZXJhdGlvbikgY29uc3Q7IC8vIFJldHVybnMg
dGhlIGZpcnN0LgorICAgIHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4+IGZpbmRNaXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uKSBjb25zdDsgLy8gUmV0
dXJucyB0aGUgZmlyc3QuCiAgICAgVW5ncmFtbWF0aWNhbFBocmFzZSBmaW5kVW5ncmFtbWF0aWNh
bFBocmFzZXMoT3BlcmF0aW9uKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgZmlyc3QuCiAgICAgYm9v
bCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3Q7CiAgICAgaW50IGZpbmRVbmdyYW1t
YXRpY2FsUGhyYXNlcyhPcGVyYXRpb24sIGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIHVp
bnQ2NF90IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIHVp
bnQ2NF90IGVuZE9mZnNldCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGQwNjMwZTMyZGM5MGU0N2Nl
NmM0NDZjYjA2NjRlODE5MTJkNGJmN2MuLjRhYzM3YzkxNDhjM2UzYjVkZGM3ZDAyNGQ4ZDc0NmU2
ZDAzYTEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHR5cGUgPT0gVHlwZTo6RXhjbHVkZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxUeXBl
PiB0eXBlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQorICAgIHN0ZDo6b3B0aW9uYWw8VHlw
ZT4gdHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICB7CiAgICAgICAgIGF1dG8g
aXQgPSBtX2NhY2hlLmZpbmQoZWxlbWVudCk7CiAgICAgICAgIGlmIChpdCAhPSBtX2NhY2hlLmVu
ZCgpKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEl0ZXJhdG9yIG1faXRl
cmF0b3I7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9wYXN0
RW5kTm9kZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV90ZXh0OworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fdGV4dDsKIH07CiAKIHN0YXRpYyBib29sIHNob3Vs
ZEV4dHJhY3RWYWx1ZUZvclRleHRNYW5pcHVsYXRpb24oY29uc3QgSFRNTElucHV0RWxlbWVudCYg
aW5wdXQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGJvb2wgYXJlRXF1YWxJZ25vcmluZ0xl
YWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzKGNvbnN0IFN0cmluZyYgY29udGVudCwKICAgICBy
ZXR1cm4gY29udGVudC5zdHJpcFdoaXRlU3BhY2UoKSA9PSBvcmlnaW5hbENvbnRlbnQuc3RyaXBX
aGl0ZVNwYWNlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiB0b2tlbkluZm8oTm9kZSogbm9kZSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25U
b2tlbkluZm8+IHRva2VuSW5mbyhOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjp1cGRhdGVJbnNlcnRpb25zKFZlY3RvcjxOb2RlRW50cnk+JiBs
YXN0VG9wRG93bgogICAgICAgICBpbnNlcnRpb25zLmFwcGVuZChOb2RlSW5zZXJ0aW9uIHsgbGFz
dFRvcERvd25QYXRoLnNpemUoKSA/IGxhc3RUb3BEb3duUGF0aC5sYXN0KCkuc2Vjb25kLnB0cigp
IDogbnVsbHB0ciwgKmN1cnJlbnROb2RlIH0pOwogfQogCi1hdXRvIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25z
dCBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+JiByZXBsYWNlbWVudFRva2VucywgSGFzaFNldDxS
ZWY8Tm9kZT4+JiBjb250YWluZXJzV2l0aG91dFZpc3VhbE92ZXJmbG93QmVmb3JlUmVwbGFjZW1l
bnQpIC0+IE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPgorYXV0byBUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRl
bSwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYgcmVwbGFjZW1lbnRUb2tlbnMsIEhh
c2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dpdGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJl
cGxhY2VtZW50KSAtPiBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPgogewog
ICAgIGlmIChpdGVtLnN0YXJ0LmlzT3JwaGFuKCkgfHwgaXRlbS5lbmQuaXNPcnBoYW4oKSkKICAg
ICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
aAppbmRleCAxYmMwMTgxYmFmYjRlZTRmYTJiZTcxZTU4YzVlNGQyZWZlM2Q3ZGJjLi4yZWZhNWYy
ZGI2ZGQzYjJiMDJkZGZmYzY5ODNiZjVmZDI0MDg4ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC01NSwxNyArNTUs
MTcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzVmlzaWJsZSB7IGZhbHNlIH07CiAKICAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1bGF0
aW9uVG9rZW5JbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYW5pcHVsYXRpb25Ub2tlbkluZm8+IGRlY29k
ZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBNYW5pcHVsYXRpb25Ub2tlbiB7CiAg
ICAgICAgIFRva2VuSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgY29udGVu
dDsKLSAgICAgICAgT3B0aW9uYWw8TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBpbmZvOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvblRva2VuSW5mbz4gaW5mbzsKICAgICAgICAgYm9v
bCBpc0V4Y2x1ZGVkIHsgZmFsc2UgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxNYW5pcHVsYXRpb25Ub2tlbj4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TWFuaXB1bGF0aW9uVG9rZW4+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIGVudW0g
SXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAg
ICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VuczsKIAogICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNYW5pcHVsYXRpb25JdGVtPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYW5pcHVsYXRpb25JdGVtPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAK
ICAgICBzdHJ1Y3QgRXhjbHVzaW9uUnVsZSB7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIEF0b21TdHJpbmcgbG9jYWxOYW1lOwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RWxlbWVudFJ1bGU+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxFbGVtZW50UnVsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsK
IAogICAgICAgICBzdHJ1Y3QgQXR0cmlidXRlUnVsZSB7CkBAIC05NCwxNCArOTQsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXR0cmlidXRlUnVsZT4gZGVj
b2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZVJ1bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAg
IH07CiAKICAgICAgICAgc3RydWN0IENsYXNzUnVsZSB7CiAgICAgICAgICAgICBBdG9tU3RyaW5n
IGNsYXNzTmFtZTsKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPENsYXNzUnVsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsYXNzUnVs
ZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBUeXBlIHR5cGU7CkBA
IC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1hdGNoKGNvbnN0IEVsZW1l
bnQmKSBjb25zdDsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxFeGNsdXNpb25SdWxlPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNsdXNpb25SdWxlPiBk
ZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICB1c2luZyBNYW5pcHVsYXRpb25JdGVtQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8TWFuaXB1
bGF0aW9uSXRlbT4mKT47CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBNYW5p
cHVsYXRpb25GYWlsdXJlVHlwZSB0eXBlOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPiBjb21wbGV0ZU1hbmlw
dWxhdGlvbihjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uSXRlbT4mKTsKQEAgLTE3OCw3ICsxNzgs
NyBAQCBwcml2YXRlOgogICAgIHVzaW5nIE5vZGVFbnRyeSA9IHN0ZDo6cGFpcjxSZWY8Tm9kZT4s
IFJlZjxOb2RlPj47CiAgICAgVmVjdG9yPFJlZjxOb2RlPj4gZ2V0UGF0aChOb2RlKiwgTm9kZSop
OwogICAgIHZvaWQgdXBkYXRlSW5zZXJ0aW9ucyhWZWN0b3I8Tm9kZUVudHJ5PiYsIGNvbnN0IFZl
Y3RvcjxSZWY8Tm9kZT4+JiwgTm9kZSosIEhhc2hTZXQ8UmVmPE5vZGU+PiYsIFZlY3RvcjxOb2Rl
SW5zZXJ0aW9uPiYpOwotICAgIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPiByZXBs
YWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlv
blRva2VuPiYsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dpdGhvdXRWaXN1YWxPdmVy
Zmxvd0JlZm9yZVJlcGxhY2VtZW50KTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvbkZh
aWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVj
dG9yPE1hbmlwdWxhdGlvblRva2VuPiYsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dp
dGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJlcGxhY2VtZW50KTsKIAogICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50c1dp
dGhOZXdSZW5kZXJlcjsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuSW5mbz4gVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tl
bkluZm8+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm86
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlwdWxhdGlvblRva2VuSW5mbyBy
ZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGFnTmFtZSkpCkBAIC0yMzQs
NyArMjM0LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9u
VG9rZW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25Ub2tlbj4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlw
dWxhdGlvblRva2VuIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVu
dGlmaWVyKSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpNYW5pcHVsYXRpb25JdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29ucwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25JdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBNYW5pcHVsYXRpb25JdGVtIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5pZGVudGlmaWVyKSkKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6RXhjbHVzaW9uUnVsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlPiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgRXhjbHVzaW9uUnVsZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQudHlwZSkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6RXhjbHVzaW9uUnVsZTo6RWxlbWVudFJ1bGU6OmVuY29kZShFbmNvZGVyJiBlbmMKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpFeGNsdXNpb25SdWxlOjpFbGVtZW50UnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1
bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVs
ZTo6RWxlbWVudFJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEVsZW1lbnRS
dWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5sb2NhbE5hbWUpKQpA
QCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1
c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmVuY29kZShFbmNvZGVyJiBlCiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhj
bHVzaW9uUnVsZTo6QXR0cmlidXRlUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4
Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6QXR0
cmlidXRlUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0
dHJpYnV0ZVJ1bGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEF0dHJpYnV0ZVJ1
bGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQpAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1
bGU6OkNsYXNzUnVsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kCiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9u
UnVsZTo6Q2xhc3NSdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVs
ZTo6Q2xhc3NSdWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkNsYXNzUnVsZT4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkNsYXNzUnVsZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgQ2xhc3NSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05hbWUpKQpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4gVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uRmFpbHVyZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZh
aWx1cmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlwdWxhdGlvbkZhaWx1
cmUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggOTBjYzEwNTkxYmM0
MGIxZDM4YTdhYjYyNzMyNGVlYWEyNTY2NjdiMy4uNzY4ZDM3MzcwNDQ2YTUyNjVjOTNjYzcyZThm
YzQ0NmIxZTMwMWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiAgICAgfQogfQogCi1ib29s
IFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5k
IGNvbW1hbmRUeXBlLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wgVHlwaW5nQ29t
bWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5
cGUsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCiB7CiAgICAgbV9jdXJyZW50VGV4
dFRvSW5zZXJ0ID0gdGV4dDsKICAgICBtX2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFj
dGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0
aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmgKaW5kZXggNjkwZWUyNjI1ZTBkMTY0MmY4YTYyOTcxMGEwYjhiMDFjYjNhNzcwYi4u
ZDUzZjQxZmI0OWM4Y2MxMDZkN2MxMzU5ZTlmNmY5MzM4ZGVhYWIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rp
b24oVHlwaW5nQ29tbWFuZCosIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHVwZGF0ZVByZXNlcnZl
c1R5cGluZ1N0eWxlKEVUeXBpbmdDb21tYW5kKTsKLSAgICBib29sIHdpbGxBZGRUeXBpbmdUb09w
ZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0R3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYg
PSBlbXB0eVN0cmluZygpLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mID0geyB9KTsKKyAg
ICBib29sIHdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0R3Jh
bnVsYXJpdHksIGNvbnN0IFN0cmluZyYgPSBlbXB0eVN0cmluZygpLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgPSB7IH0pOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nKEVUeXBpbmdDb21tYW5kKTsKICAgICB2b2lkIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFu
ZChFVHlwaW5nQ29tbWFuZCk7CiAgICAgYm9vbCBtYWtlRWRpdGFibGVSb290RW1wdHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBlMGYxMzQ4ODY2
MTc1MGYyNGI1MTA3ODIwN2MwMDJiOTVmOGNiMjEzLi43ZTc2OGM1YmIyNTEzMzlhNDdkMDY1MzUx
YTIwMjdjMDIyMjJmZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgYm9vbCBWaXNpYmxlUG9zaXRpb246OmVxdWFscyhj
b25zdCBWaXNpYmxlUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX2FmZmluaXR5
ID09IG90aGVyLm1fYWZmaW5pdHkgJiYgbV9kZWVwUG9zaXRpb24uZXF1YWxzKG90aGVyLm1fZGVl
cFBvc2l0aW9uKTsKIH0KIAotT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9p
bnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3N0ZDo6b3B0aW9uYWw8Qm91bmRh
cnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKIHsKICAgICByZXR1cm4gbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKSk7CiB9CkBAIC03ODUsMTIgKzc4NSwxMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpbwog
ICAgIHJldHVybiBzdHJlYW07CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxl
UmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiBy
YW5nZSkKIHsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdlLnN0YXJ0LCByYW5nZS5l
bmQpOwogfQogCi1WaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK1Zpc2libGVQb3NpdGlvblJhbmdl
IG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCmluZGV4IGVlY2JmN2U5YjkyNzZiNWZh
MzIzNGEzNzhlNTQ5MTRmM2Q0YWU0MzMuLmE5MmNhODFiY2VmZTNlNDc2YzRjNTQ2NjBkOTcyMDg0
ZWVlY2ZhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAt
MTE0LDcgKzExNCw3IEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCi1XRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4g
bWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVfRVhQ
T1JUIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CiAKQEAgLTEzNSw4ICsxMzUsOCBAQCBzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
ewogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5k
LmlzTnVsbCgpOyB9CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
bWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7Ci1XRUJDT1JFX0VY
UE9SVCBWaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsK
K1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvblJhbmdlIG1ha2VWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCiBOb2RlKiBjb21tb25J
bmNsdXNpdmVBbmNlc3Rvcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCAzMTc2NGRlNmZhYWE0
ZGViMjk0MDYwNmUxZGQzOGViOWI0OTQ5YTQ1Li41MDI1Y2FmOTExZTFhNTgxZmRhZjNkYmZlZTM2
YjQxM2I5ODc1ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlU2VsZWN0aW9uOjp1bmNh
bm9uaWNhbGl6ZWRFbmQoKSBjb25zdAogICAgIHJldHVybiBtX2FuY2hvcklzRmlyc3QgPyBtX2Zv
Y3VzIDogbV9hbmNob3I7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0
aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2Vs
ZWN0aW9uOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZSh1bmNh
bm9uaWNhbGl6ZWRTdGFydCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB1bmNhbm9uaWNh
bGl6ZWRFbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9CkBAIC0xNTksNyArMTU5
LDcgQEAgUmVmUHRyPERvY3VtZW50PiBWaXNpYmxlU2VsZWN0aW9uOjpkb2N1bWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIGJhc2VEb2N1bWVudDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZp
c2libGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
Tm9uZU9yT3JwaGFuZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RS
YW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0LnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpLCBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9
CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRS
YW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9u
Ojp0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTm9uZU9yT3JwaGFuZWQo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggYjE3ZTJiM2FkMWRlZWQ1YmNmZGY3ZjdjMDBiMTc4ZmI5
Y2E0YmE4OS4uYTRhZDhkOWY1YmEzNmU3NzUxMjBjMWIyYzBjODU1NDg4NDlhNzA1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIFBvc2l0aW9uIHVuY2Fub25pY2FsaXplZEVuZCgpIGNvbnN0OwogICAgIFBv
c2l0aW9uIGFuY2hvcigpIGNvbnN0OwogICAgIFBvc2l0aW9uIGZvY3VzKCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UoKSBjb25zdDsK
IAogICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhlc2UgdG8gaW5jbHVkZSB0aGUgd29yZCAiY2Fub25p
Y2FsIiBvciByZW1vdmUuCiAgICAgUG9zaXRpb24gYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZTsgfQpAQCAtMTAxLDExICsxMDEsMTEgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFJlbmFt
ZSB0byBpbmNsdWRlIHRoZSB3b3JkICJjYW5vbmljYWwiIGFuZCByZW1vdmUgdGhlIHdvcmQgImZp
cnN0IiBvciByZW1vdmUuCiAgICAgLy8gV2UgZG9uJ3QgeWV0IHN1cHBvcnQgbXVsdGktcmFuZ2Ug
c2VsZWN0aW9ucywgc28gd2Ugb25seSBldmVyIGhhdmUgb25lIHJhbmdlIHRvIHJldHVybi4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmlyc3RSYW5nZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpcnN0UmFu
Z2UoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBNb3N0IGNhbGxlcnMgcHJvYmFibHkgZG9uJ3Qg
d2FudCB0aGlzIGZ1bmN0aW9uLCBhbmQgc2hvdWxkIHVzZSByYW5nZSBpbnN0ZWFkLgogICAgIC8v
IFRoaXMgZnVuY3Rpb24gY29udHJhY3RzIHRoZSByYW5nZSBhcm91bmQgdGV4dCBhbmQgbW92ZXMg
dGhlIGNhcmV0IHVwc3RyZWFtIGJlZm9yZSByZXR1cm5pbmcgdGhlIHJhbmdlLgotICAgIFdFQkNP
UkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHRvTm9ybWFs
aXplZFJhbmdlKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiByb290RWRp
dGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRlbnRF
ZGl0YWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmlu
ZGV4IGJjOTlmZDU5MWZhZDBmYTUxMTY2Y2E1ZTNiYTRjOWRhMTU4NGZkZGIuLjhhOTNmYmQwMTI0
ODQ1ZWJmZmQ2OWM0YTdjYmI5MzEyZWZmODNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IHZpc3VhbFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
bgogICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2lu
Z0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKICAgICBMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3IgcHJldmlvdXNseVZpc2l0ZWRSdW47CiAgICAgVmlzaWJsZVBv
c2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8VmlzaWJsZVBv
c2l0aW9uPiBwcmV2aW91c1Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVBvc2l0
aW9uPiBwcmV2aW91c1Bvc2l0aW9uOwogICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0
cjsKIAogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMTczOCw3ICsxNzM4LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFQKICAgICB9CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICAvLyBUaGlzIGlz
IHBhcnRpY3VsYXJseSBpbmVmZmljaWVudC4gIFdlIGNvdWxkIGVhc2lseSBvYnRhaW4gdGhlIGFu
c3dlciB3aXRoIHRoZSBib3VuZGFyaWVzIGNvbXB1dGVkIGJlbG93LgogICAgIGlmICghd2l0aGlu
VGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKSkKQEAgLTE4
NDksNyArMTg0OSw3IEBAIHZvaWQgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24sIFVDaGFyMzImIG9uZUFmdGVyCiAgICAgdHdvQmVmb3JlID0g
Y2hhcmFjdGVyc1syXTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHdvcmRSYW5nZUZyb21Q
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTg5Niw3ICsxODk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nl
c3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUV4
cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBwb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCk7CkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoY29uc3Qg
VgogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7CiB9ICAgIAogCi1PcHRp
b25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJz
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBudW1iZXJPZkNoYXJhY3RlcnNU
b0V4cGFuZCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91bmRQ
b3NpdGlvbkJ5Q2hhcmFjdGVycyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQg
bnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQpCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBwb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAppbmRleCAyNGY1
ODhjNWIwN2NhNDcyZjc4NzdmZTE3Mzg4NDMzMmU3ODFlMzM5Li5hNmRlNDIxNTI2ZDQ2ZTI4MmZm
NDA3NTRmNzA5Mzg2YmQ5MzMxMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmgKQEAgLTEwMSwxMyArMTAxLDEzIEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbmRPZkVkaXRh
YmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKIFdFQkNPUkVfRVhQT1JU
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYs
IFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7Ci1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBU
ZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7CiBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnB0cmRpZmZfdCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwor
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBv
c2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFVDaGFyMzImIG9uZUFmdGVyLCBVQ2hhcjMyJiBv
bmVCZWZvcmUsIFVDaGFyMzImIHR3b0JlZm9yZSk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCk7Ci1XRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50IG51
bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBTZWxlY3Rpb25EaXJlY3Rpb24pOworV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0
aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1iZXJPZkNoYXJh
Y3RlcnNUb0V4cGFuZCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbik7CiBlbnVtIGNsYXNzIFdpdGhpbldvcmRCb3VuZGFyeSA6IGJvb2wgeyBO
bywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRo
aW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBvc2l0aW9uV2l0aG91dENyb3NzaW5nTGlu
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAKaW5kZXggMGE4MDI4YmVkZjhiOWNhMzVjODcx
MWYyODBlYmI4MjA1MTM2YzIyZS4uNWFlMzI1NzgyMGI2NjJhMjg3M2NkZjJjODEwYzYzOWQyNzA2
ZTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVs
ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxl
bWVudHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEF1dG9maWxsRWxlbWVudHM6OkF1dG9maWxsRWxl
bWVudHMoUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+JiYgdXNlcm5hbWUsIFJlZlB0cjxICiB7CiB9
CiAKLU9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVB
dXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRFbGVtZW50PiBzdGFydCkKK3N0ZDo6b3B0aW9u
YWw8QXV0b2ZpbGxFbGVtZW50cz4gQXV0b2ZpbGxFbGVtZW50czo6Y29tcHV0ZUF1dG9maWxsRWxl
bWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHN0YXJ0KQogewogICAgIGlmICghc3RhcnQtPmRv
Y3VtZW50KCkucGFnZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuaAppbmRleCA3NzZmMTY2
NzE5YTdlZWUzMDYyNjhlYWY4YTM5ZjUzMTg1NGE4MzAyLi42YTBlOGNlZjYwMDc5ZDMyYTQ5N2Qz
ZmNiZWE1YzJlYjllNDk4MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0F1dG9maWxsRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0F1dG9maWxsRWxlbWVudHMuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRvZmlsbEVsZW1lbnRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8QXV0b2ZpbGxFbGVt
ZW50cz4gY29tcHV0ZUF1dG9maWxsRWxlbWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXRvZmlsbEVsZW1lbnRzPiBj
b21wdXRlQXV0b2ZpbGxFbGVtZW50cyhSZWY8SFRNTElucHV0RWxlbWVudD4pOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXV0b2ZpbGwoU3RyaW5nLCBTdHJpbmcpOwogCiAgICAgY29uc3QgSFRN
TElucHV0RWxlbWVudCogdXNlcm5hbWUoKSBjb25zdCB7IHJldHVybiBtX3VzZXJuYW1lLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCmluZGV4
IGU3NmE2YThlYzk3MzI0NDQ5ZmE1YmM0ZmEzNmNkZjVhZDliMGMwZDIuLjU0NzNiYjAwYzQ4Njhi
NTQ5MTE0M2EzYWU4ODk3MDliOGVlOGRmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBEZXRlY3RlZEl0
ZW0gewogY2xhc3MgRGF0YURldGVjdGlvbiB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0
ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW1Bcm91
bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5ICpkZXRlY3RDb250ZW50SW5SYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYsIE9wdGlvblNldDxEYXRhRGV0ZWN0b3JUeXBlPiwgTlNEaWN0aW9uYXJ5ICpjb250
ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0ZWRM
aW5rc0luRG9jdW1lbnQoRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NTY2ODU5ZDZiZjM2YWZkMzc1YTMwYWRjMjdkNDFj
MTUwMTY4ZThlLi5kYjZjZGE1YzJjMjAwNTM3ZGM0YzhiNzBhNTRlNzFjZDNkODRkYmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC03Miw3
ICs3Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBQTEFURk9STShNQUMp
CiAKLXN0YXRpYyBPcHRpb25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW0oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRSYW5nZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dFJhbmdlKQogewog
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg5LDcg
Kzg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdAogCiAgICAgLy8gRmluZCB0aGUgRERSZXN1
bHRSZWYgdGhhdCBpbnRlcnNlY3RzIHRoZSBoaXRUZXN0UmVzdWx0J3MgVmlzaWJsZVBvc2l0aW9u
LgogICAgIEREUmVzdWx0UmVmIG1haW5SZXN1bHQgPSBudWxscHRyOwotICAgIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBtYWluUmVzdWx0UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbWFpblJlc3VsdFJhbmdlOwogICAgIENGSW5kZXggcmVzdWx0Q291bnQgPSBDRkFycmF5R2V0
Q291bnQocmVzdWx0cy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcmVzdWx0
Q291bnQ7IGkrKykgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGNoZWNrZWRfY2ZfY2FzdDxERFJl
c3VsdFJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXN1bHRzLmdldCgpLCBpKSk7CkBAIC0x
MTksNyArMTE5LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdAogICAgIH0gfTsKIH0KIAotT3B0
aW9uYWw8RGV0ZWN0ZWRJdGVtPiBEYXRhRGV0ZWN0aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVz
dFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQorc3RkOjpvcHRpb25h
bDxEZXRlY3RlZEl0ZW0+IERhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CiAgICAgaWYgKCFEYXRh
RGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTMyLDcgKzEzMiw3
IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3Vu
ZEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb247Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGNvbnRl
eHRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb250ZXh0UmFuZ2U7CiAK
ICAgICBpZiAoIWlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpIHsKICAgICAg
ICAgcG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0Lmxv
Y2FsUG9pbnQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggNTA2MmJjYjg4MjU2YmVlZmY5NzY5NTEzYWU2YmMw
MmI4OWJkZTAzMC4uY2QxYWY4NWQ3YjM3MzU5OWJjMDcwODU0Yjg4MThhNThhYzI5YTIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpA
QCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBO
U0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxT
aW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTI5NCw3ICsyOTQsNyBAQCBPcHRpb25hbDxzdGQ6
OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJh
bmdlRm9yU2VsZQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKK3N0
ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0
aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXRUZXN0UmVzdWx0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIApA
QCAtMzIxLDcgKzMyMSw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGlj
dGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgYXV0byBzZWxl
Y3Rpb24gPSBmcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBOU1JhbmdlIHNlbGVjdGlvblJhbmdl
OwogICAgIE5TVUludGVnZXIgaGl0SW5kZXg7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZ1
bGxDaGFyYWN0ZXJSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmdWxsQ2hh
cmFjdGVyUmFuZ2U7CiAgICAgCiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAg
ICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKQEAgLTUy
MSwxMiArNTIxLDEyIEBAIFdLUmV2ZWFsQ29udHJvbGxlciBEaWN0aW9uYXJ5TG9va3VwOjphbmlt
YXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3QgRGljdGlvbmFyCiAKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFFTkFCTEUoUkVWRUFMKQog
Ci1PcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rp
b25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQor
c3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6dHVwbGU8
U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhp
dFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VB
dEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNjk5YzQ2ZWMzMThkNDM1NzMwY2E3NDY1NGZhMmIy
ZTRlMTAwZjM1Mi4uYTRlNTMyMzE5OTMzZjBhODYxMmQyYzIyNTE4Mjk4ZDU5ZDRlOTZiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KQEAgLTQyNiw3ICs0MjYsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAg
ICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAo
IWFyY2hpdmUpCkBAIC03MjYsNyArNzI2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5OwogICAgIGlmICghaXNEaXJlY3RvcnkpCiAg
ICAgICAgIGZpbGVTaXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZh
bHVlX29yKDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0
aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9v
a3VwLmgKaW5kZXggNzlhYzg1YTcxYTYyZGQyNmY2ZDVmNWZhNGQ4ZDhhNzFhMzIzMThmNS4uMTEw
YjhmODI2Zjg0MTc1ZGQ5MmFhNDBlODdlYzJhM2FmYzdkNDcxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaApAQCAtNTUsOCArNTUsOCBAQCBzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiAKIGNsYXNzIERpY3Rpb25hcnlMb29rdXAgewogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBO
U0RpY3Rpb25hcnkgKj4+IHJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVS
YW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0
UmVzdWx0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0
dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0SGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dHVwbGU8TlNTdHJpbmcgKiwgTlNEaWN0aW9uYXJ5ICo+IHN0cmluZ0ZvclBERlNl
bGVjdGlvbihQREZTZWxlY3Rpb24gKik7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5p
ZnkgZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlIGhlcmUgdG9vLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXggMTYy
M2U5OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBhZDVlMTUyOC4uYTI2Mjk0NjM5MzUzZTczMjk1
NDM3MDY4ZDVlYTE5MmZjYjBmZGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRp
YyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2UgJiYgY29udGFpbnM8
Q29tcG9zZWRUcmVlPigqc2VsZWN0ZWRSYW5nZSwgbWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24p
KTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24pCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5T
RGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9
IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VsZWN0ZWRSYW5nZSkK
QEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0
aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKICAgICByZXR1cm4geyB7
ICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zIH0gfTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxT
aW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQorc3RkOjpvcHRp
b25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlM
b29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RS
ZXN1bHQpCiB7CiAgICAgYXV0byogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCmluZGV4IGQ2NTdkMzU3ZTFmZThjYjU1NGEwMzA4MGRjMTQ2NWNhNjJiZjQw
ODYuLjhhZTQ4OTE1NjNlYTc3ZTYwZDEzZTU0OTFkYmQ1NTA3MDlhZjE5MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFn
ZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCkKICAgICByZXR1cm4gcGFnZTsK
IH0KIAotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCwgTVNPTGlz
dFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1l
bnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIpCitTdHJpbmcgc2FuaXRpemVNYXJrdXAo
Y29uc3QgU3RyaW5nJiByYXdIVE1MLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIHN0ZDo6
b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyKQogewogICAgIGF1dG8gcGFnZSA9IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2Vi
Q29udGVudCgpOwogICAgIERvY3VtZW50KiBzdGFnaW5nRG9jdW1lbnQgPSBwYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggMjhlZGI2MTQ4NjMw
NDcxMDQ3NDMxMjUxZTc1OGI4NDBmZGIyZjQzNy4uYmI3NTk2NDM4ZWUwMjg2YThjMTg4Njg1OTg4
ZTlmODVjMjZkZDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01NSw3ICs1NSw3IEBA
IHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmLCBXVEY6OkZ1bmN0aW9uPGJvb2woCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKIGVudW0gY2xhc3MgTVNPTGlzdFF1aXJrcyA6
IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxlZCB9OwotU3RyaW5nIHNhbml0aXplTWFya3Vw
KGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwg
T3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBT
dHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIHN0ZDo6b3B0
aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2Fu
aXRpemVyID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVu
dEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIERvY3VtZW50JiwgTVNPTGlzdFF1
aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCk7CiAKIFdFQkNPUkVfRVhQT1JUIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnN0IFNpbXBsZVJh
bmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGQ1ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2Njk5
MWY4NWI3YTFjM2EuLjdhOWRhYWUwNmEwNDdiYTU1ZTExMTMyMzU2MzkxNWUyZDI2NzA0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShXVEY6OkZ1bmN0aW9uPFdURjo6
RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50JgogICAgIH0pOwogfQogCi12b2lkIEFzeW5j
RmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1l
PiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBGSVhNRTogRXhwbGljaXQgcmV0dXJuIHR5cGUgaGVy
ZSBhbmQgaW4gYWxsIHRoZSBvdGhlciBjYXNlcyBsaWtlIHRoaXMgYmVsb3cgaXMgYSB3b3JrYXJv
dW5kIGZvciBhIGRlZmljaWVuY3kKICAgICAvLyBpbiB0aGUgV2luZG93cyBjb21waWxlciBhdCB0
aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuIENvdWxkIHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJlc29s
dmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggODRhMjQx
YTI2M2JjMzgxMmU0YmVmNzc5OGJkZmQyNGNmMmYyMDcxYi4uOTlhOTFiMGM5MTVmNTg1YjhhMWNi
NmJlY2RhNGI2ZGJlMTc5ZTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBBc3luY0ZpbGVT
dHJlYW0oRmlsZVN0cmVhbUNsaWVudCYpOwogICAgIH5Bc3luY0ZpbGVTdHJlYW0oKTsKIAotICAg
IHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgdm9pZCBvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQs
IGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHJlYWQoY2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDJmM2Nk
Y2VjY2IzMmFhMjkyMzM4ZDMyN2Y3ZjQ1NDU0MTRiNGZkM2MuLjQyZjIyYjQ2ZmMwNGE0NDZjOGM3
ZTNhYzhkOTI0MDg0MmJkNDBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgp
KSB9ICwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9y
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0
IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCitCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRy
dWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBz
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAg
ICwgbV9zaXplKHNpemUpCkBAIC0yOTgsNyArMjk4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJlYWRh
YmxlU3RyZWFtPj4gQmxvYjo6c3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWMKICAgICAgICAgVW5pcXVlUmVmPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwogICAgICAg
ICBzaXplX3QgbV9ieXRlc1JlYWQgeyAwIH07CiAgICAgICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBm
YWxzZSB9OwotICAgICAgICBPcHRpb25hbDxFeGNlcHRpb24+IG1fZXhjZXB0aW9uOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9leGNlcHRpb247CiAgICAgfTsKIAogICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDE1ZDdjMjgxNjc5MzAwZTU3M2ZkNDc3NWE5NzUwODEz
M2UzYjBkMmQuLmU0MjUxYjJlNmNhNGVhZDA2MGM1YmY2MzVlZDU0ZDE3YzkzNDczZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgIEJsb2Io
VW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVUkwmJiwg
U3RyaW5nJiYgdHlwZSk7CiAKICAgICBlbnVtIERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgeyBk
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIH07Ci0gICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250
cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0
b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CiAKICAgICAvLyBGb3Igc2xpY2luZy4KICAgICBCbG9i
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAgLTE1OSw3
ICsxNTksNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fdHlwZTsKIAotICAgIG11dGFibGUg
T3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBtX3NpemU7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9zaXplOwogICAgIEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JMb2FkZXIuaAppbmRleCBhNDI4N2NkZDkzZDc5Y2VlZWMxOGEzMmQ3MTc3N2FjMjEyZjYz
Y2FiLi4yMDYzYzQ5YTgzOGNkNGNmYWFjMGVkNTFjYTEwZDk1YzhmZmQ3MGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciAmJiBtX2NvbXBsZXRpb25IYW5k
bGVyOyB9CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVy
ID8gbV9sb2FkZXItPnN0cmluZ1Jlc3VsdCgpIDogU3RyaW5nKCk7IH0KICAgICBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRl
ciA/IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpIDogbnVsbHB0cjsgfQotICAgIE9wdGlv
bmFsPEV4Y2VwdGlvbkNvZGU+IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8g
bV9sb2FkZXItPmVycm9yQ29kZSgpIDogc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1f
bG9hZGVyLT5lcnJvckNvZGUoKSA6IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRl
eCA0NzNjMDMxOTkwZTE3Y2I3Y2VlYjViM2MzYWVhYjdiNTEyODMzODZiLi44YmY3NGNlMzMxZmNh
OGNjOGI0NmE1MzM0YjI2MDUwZTNkYmEwM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHAKIHsKIH0KIAotRmlsZTo6Rmls
ZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2Rp
ZmllZCkKK0ZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKICAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29u
dHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0
aCkKICAgICAsIG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCA5Zjc4MDBhZTU0
MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVmLi40ODAzOGM2MWY4NDQ0OTkyN2E1MmYzZjMx
M2MwZDY4ZjRjYTk2NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfRVhQT1JUKEZpbGUsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUHJv
cGVydHlCYWcgOiBCbG9iUHJvcGVydHlCYWcgewotICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBs
YXN0TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlmaWVk
OwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBl
eHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHBy
b3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGgu
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4m
IGxhc3RNb2RpZmllZCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2Vy
aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBzdGQ6Om51
bGxvcHQpCiAgICAgewogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoZGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1l
LCBsYXN0TW9kaWZpZWQpKTsKICAgICAgICAgZmlsZS0+c3VzcGVuZElmTmVlZGVkKCk7CkBAIC04
Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbGF0aXZlUGF0aChjb25zdCBTdHJp
bmcmIHJlbGF0aXZlUGF0aCkgeyBtX3JlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aDsgfQogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3QgbGFzdE1vZGlmaWVkKCkgY29uc3Q7IC8vIE51bWJlciBvZiBtaWxs
aXNlY29uZHMgc2luY2UgRXBvY2guCi0gICAgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RN
b2RpZmllZE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJp
ZGU7IH0gLy8gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29u
ZHMgc2luY2UgRXBvY2guCiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpOwogCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgRmls
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRmlsZSYsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9u
YWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250
cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CiAKICAgICBzdGF0aWMg
dm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCkBAIC0xMTMs
OCArMTEzLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9yZWxhdGl2ZVBhdGg7CiAgICAgU3Ry
aW5nIG1fbmFtZTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1fbGFzdE1vZGlmaWVkRGF0ZU92
ZXJyaWRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9pc0RpcmVjdG9yeTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzRGlyZWN0b3J5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMDli
MmEwMzhiYTEyZGU5YWNhZTk0ZjY3Y2ExN2IyNzVlMTRhZWM3YS4uZmJlZTA3MmE1YjkxZmIzZmMz
NTRjZjc5ZmZmMmMzMGNhNTllNzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIu
Y3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpmaXJlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSkKICAgICBkaXNwYXRjaEV2ZW50KFByb2dyZXNzRXZlbnQ6OmNyZWF0
ZSh0eXBlLCB0cnVlLCBtX2xvYWRlciA/IG1fbG9hZGVyLT5ieXRlc0xvYWRlZCgpIDogMCwgbV9s
b2FkZXIgPyBtX2xvYWRlci0+dG90YWxCeXRlcygpIDogMCkpOwogfQogCi1PcHRpb25hbDxWYXJp
YW50PFN0cmluZywgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+Pj4gRmlsZVJlYWRlcjo6cmVzdWx0
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPj4+IEZpbGVSZWFkZXI6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xvYWRl
ciB8fCBtX2Vycm9yIHx8IG1fc3RhdGUgIT0gRE9ORSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggMjhmMzNmNTEyMjkxOWNi
ZWVkMGEyZDc2ZDJhN2Y4YmFhZjU2Nzk2NC4uYTJhZGY5YzgzNTFiZmEwNDE5ODAyYTNkYWQ3Zjcw
ZTVmMGMzMGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGU7IH0KICAgICBET01FeGNlcHRpb24qIGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5n
ZXQoKTsgfQogICAgIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWFkVHlwZTsgfQotICAgIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiByZXN1bHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiByZXN1bHQoKSBjb25z
dDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpk
ZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggMWFm
NjA1OTYwYjMwNDhkY2Q4YWExZTEzYWIxOTBkOWIyNTE1OTkxOS4uOTZmOWY3OWJlMTc5ZTdiMjMx
MjZkZTI1ZDg3ZTFlMzFmYjQ3Njg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0OwogICAg
IHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQog
ICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0K
LSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yQ29kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gZXJyb3JDb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAogICAgIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXREYXRhVHlwZShjb25zdCBTdHJpbmcmIGRhdGFU
eXBlKSB7IG1fZGF0YVR5cGUgPSBkYXRhVHlwZTsgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9ieXRlc0xvYWRlZDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0
ZXM7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2Vycm9yQ29kZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXJyb3JDb2RlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIuaAppbmRleCA5YzcyNjBjNDIyNjBhNGI1Y2QxYzcxZWFhOWEyYmFlYTgwOGZj
NmZiLi5jM2E4ZWJlZDk3YmM3NTI3YTIzNWRkOGY3YWU5MzQ2MWQ1ZGRjMGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHByb2Nlc3NJZGVudGlmaWVyICYm
IGl0ZW1JZGVudGlmaWVyOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFN0cmluZyBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCks
ICctJywgaXRlbUlkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KIApAQCAtNzgsMTQgKzc4LDE0IEBA
IHZvaWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyPiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6
b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9iamVjdElkZW50aWZp
ZXI8SXRlbUlkZW50aWZpZXJUeXBlPj4gaXRlbUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0ZW1JZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCFpdGVtSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDNkODA5MzU1OTg1NGJlMTQzODVkMmE0ZjJj
MTljMjM4MjgyOGZkZGUuLmYxMDhiNTJhMGJmMWQ5YjlkMmM5ZGM2Zjk0OGRmZWE0YTY5MWM3NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApA
QCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8RGF0ZVRpbWVGb3Jt
YXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1bHRzOwogICAgIH07CiAKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5n
VmlldyYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMo
Y29uc3QgU3RyaW5nVmlldyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1l
RWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRp
bWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YW52YXNCYXNlLmNwcAppbmRleCAwN2ViNjUxNDlmYzk5NjcwNTdlODJhYzY0OTVkZDEyMGMyZDVl
MjU4Li41YmJkOTdkMDBkNjg3YjZiOTI4M2E1YmRhY2E1YmY4YjJkOTFiM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIENhbnZhc0Jhc2U6
OnJlbW92ZU9ic2VydmVyKENhbnZhc09ic2VydmVyJiBvYnNlcnZlcikKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDU1NDYW52YXNDbGllbnROb2RlcygqdGhpcyk7
CiB9CiAKLXZvaWQgQ2FudmFzQmFzZTo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0KQordm9pZCBDYW52YXNCYXNlOjpub3RpZnlPYnNl
cnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCkK
IHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2Vy
dmVyLT5jYW52YXNDaGFuZ2VkKCp0aGlzLCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgK
aW5kZXggOTJjZmI3NjJmZGIzZTJiM2ZmNTI2MWExZjdmOTgxOGNjY2I0ZjM5YS4uODRiYmRmZGZm
NzYyNWU3NzRkM2YyMGQ3NmU4MGVmODBjMjJjM2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2FudmFz
T2JzZXJ2ZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYg
Y2hhbmdlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNC
YXNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2VkUmVjdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW52YXNSZXNpemVkKENhbnZhc0Jhc2UmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNhbnZhc0Rlc3Ryb3llZChDYW52YXNCYXNlJikgPSAwOwogfTsKQEAgLTg5LDcg
Kzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihDYW52YXNPYnNlcnZlciYp
OwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKLSAgICB2b2lkIG5v
dGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpOwor
ICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mKTsKICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc1Jlc2l6ZWQoKTsK
ICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3llZCgpOyAvLyBNdXN0IGJlIGNh
bGxlZCBpbiBkZXN0cnVjdGlvbiBiZWZvcmUgY2xlYXJpbmcgbV9jb250ZXh0LgogCkBAIC05OCw3
ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0Nv
bnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3
aW5nQ29udGV4dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIEltYWdlKiBjb3Bp
ZWRJbWFnZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMzJj
M2I0NGZhYzA1NTE4MGJiNDU0MDBmNjBiNjc5OTczMDE1OTllZi4uZWE4MWJiMTlkMTQ0YTUwNjBh
MDczODA4ZDhkOWZiNjhmZjg2MDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9jb21tb24tbWljcm9zeW50YXhlcy5odG1sI3J1bGVzLWZvci1wYXJzaW5nLXNpbXBs
ZS1jb2xvdXItdmFsdWVzCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlU2lt
cGxlQ29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7
CiAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaAppbmRleCBj
MjgzZjgxZWQxMjhkYmRhMmMwNzBiZTAwYzc5YTgwY2FlNDQ4YjY3Li4wYzE4ZDRjOWFjNjMwZjIy
MzI4NzExYmE3YTZkMWI2NTYwNzlhMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWlu
dENhbnZhcy5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQq
IGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlz
dGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZERyYXcoY29u
c3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRHJhdyhjb25z
dCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbCB7IH0KIAogICAgIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9kZXN0aW5hdGlvbkdy
YXBoaWNzQ29udGV4dCAmJiBtX2NvcGllZEJ1ZmZlcik7IHJldHVybiBtX2NvcGllZEJ1ZmZlci0+
YmFzZVRyYW5zZm9ybSgpOyB9CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDY4MDJhMTVmZTY4ZjBlYThlNTk4
ODZkZTFkNjEwYzg4OTM5ZDc4NmQuLmU3YzRkYTQ3OWNkZjcyZjhmY2ViZTFmMjdjZGRjMmQ0MGUy
YTIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgRE9NRm9ybURhdGE6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfSk7CiB9
CiAKLWF1dG8gRE9NRm9ybURhdGE6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlvbmFs
PEZvcm1EYXRhRW50cnlWYWx1ZT4KK2F1dG8gRE9NRm9ybURhdGE6OmdldChjb25zdCBTdHJpbmcm
IG5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8Rm9ybURhdGFFbnRyeVZhbHVlPgogewogICAgIGZvciAo
YXV0byYgaXRlbSA6IG1faXRlbXMpIHsKICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PSBuYW1lKQpA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRE9NRm9ybURhdGE6OnNldChjb25zdCBTdHJpbmcmIG5h
bWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAKIHZvaWQgRE9NRm9ybURh
dGE6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIEl0ZW0mJiBpdGVtKQogewotICAgIE9wdGlvbmFs
PHNpemVfdD4gaW5pdGlhbE1hdGNoTG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluaXRpYWxNYXRjaExvY2F0aW9uOwogCiAgICAgLy8gRmluZCBsb2NhdGlvbiBvZiB0aGUgZmly
c3QgaXRlbSB3aXRoIGEgbWF0Y2hpbmcgbmFtZS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCBET01Gb3JtRGF0YTo6
SXRlcmF0b3I6Okl0ZXJhdG9yKERPTUZvcm1EYXRhJiB0YXJnZXQpCiB7CiB9CiAKLU9wdGlvbmFs
PEtleVZhbHVlUGFpcjxTdHJpbmcsIERPTUZvcm1EYXRhOjpGb3JtRGF0YUVudHJ5VmFsdWU+PiBE
T01Gb3JtRGF0YTo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBET01Gb3JtRGF0YTo6Rm9ybURhdGFFbnRyeVZhbHVlPj4gRE9NRm9ybURhdGE6Okl0
ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBpdGVtcyA9IG1fdGFyZ2V0LT5pdGVtcygpOwog
ICAgIGlmIChtX2luZGV4ID49IGl0ZW1zLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
aAppbmRleCBjODA0ODhkNDQ4ZDI4OTIxYTJlMGQ3ZWMxZjYzNDZkZjFkMzQxMzRjLi44MDYyNDRi
ZDUwZjI3OTdhZjY4MzI0YzFjZDc5NzM4ZTBhNzNlOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTUZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3Jt
RGF0YS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZyYgbmFtZSwgQmxvYiYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUgPSB7IH0pOwogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgT3B0aW9uYWw8Rm9ybURhdGFF
bnRyeVZhbHVlPiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZv
cm1EYXRhRW50cnlWYWx1ZT4gZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgVmVjdG9yPEZv
cm1EYXRhRW50cnlWYWx1ZT4gZ2V0QWxsKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgYm9vbCBo
YXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHNldChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgY2xh
c3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3IoRE9N
Rm9ybURhdGEmKTsKLSAgICAgICAgT3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgRm9ybURh
dGFFbnRyeVZhbHVlPj4gbmV4dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFp
cjxTdHJpbmcsIEZvcm1EYXRhRW50cnlWYWx1ZT4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZjxET01Gb3JtRGF0YT4gbV90YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAKaW5kZXggOWE0MTBjNzBlNGMwN2UzYjQzNWE3MGY4ZjFjODBlNjM2MWVmY2JmYi4u
YWJjYTZkOWJjMmUyZWY2YjZlY2Y1NGFhNmEzNDlkY2JhY2IzOWNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuKQogICAgIHJldHVy
biByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEpOwogfQogCi1FeGNlcHRpb25Pcjxi
b29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgT3B0aW9u
YWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShj
b25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgc3RkOjpvcHRpb25hbDxib29sPiBmb3JjZSkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVG9rZW4odG9rZW4pOwogICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCBiMzI0MDJkMDM3
ZGE5MGQ4ZmVhMmZhYWQ0NmQ5N2FmNzNkNjI4MDg2Li40NmI4NTk4OTlmMTI0OTUyMzUxM2NlNzRm
ZWQ0OTk5ZjM0YjBkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9tU3Ry
aW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxib29sPiB0b2dnbGUoY29uc3QgQXRvbVN0cmlu
ZyYsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxib29sPiB0b2dnbGUoY29uc3QgQXRvbVN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9y
Y2UpOwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYgdG9r
ZW4sIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Rva2VuKTsKICAgICBFeGNlcHRpb25Pcjxib29sPiBz
dXBwb3J0cyhTdHJpbmdWaWV3IHRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCmluZGV4IDRkNmQwMmNmZGYzZjEyNDBk
ZDNjODY3Y2I5YzQ5ZmE1ZGNlZjliZTkuLmJmZmQ3ZGJmZjdiNThmYmE1MTVlY2QxOGQ3YTczNmRm
OWJmZDEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IERhdGFMaXN0U3VnZ2Vz
dGlvbiB7CiAgICAgU3RyaW5nIGxhYmVsOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxpc3RT
dWdnZXN0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIERhdGFMaXN0U3VnZ2VzdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IERhdGFMaXN0U3VnZ2VzdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERhdGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxpc3RT
dWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJp
bmc+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Niw3ICs3Niw3IEBAIHN0cnVjdCBEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgSW50UmVjdCBlbGVtZW50UmVjdDsKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODgsMTgg
Kzg4LDE4IEBAIHZvaWQgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGF0YUxpc3RT
dWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2YXRpb25U
eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0aW9uczsKICAgICBkZWNvZGVyID4+IHN1
Z2dlc3Rpb25zOwogICAgIGlmICghc3VnZ2VzdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBlbGVtZW50UmVjdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEludFJlY3Q+IGVsZW1lbnRSZWN0OwogICAgIGRlY29kZXIgPj4gZWxlbWVudFJlY3Q7
CiAgICAgaWYgKCFlbGVtZW50UmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCmluZGV4IDkxZWJmMGVjYTA5OTNiODVmNDM3
OWUwOWY2YjA2ZTgwYjZmMWIwOTQuLjE5MWU5OTE3NWQyYjQ4ZTRkOGNkYTA3MjIwMGU4ZWIzOWEy
OGI0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtNzQsMTIgKzc0
LDEyIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhh
bmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBC
YXNlLCBSYW5nZUxpbWl0YXRpb25zOjpWYWxpZCwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgZGF0
ZVN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlSW5w
dXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBj
b25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6cGFyc2VU
b0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZShzb3VyY2UpOwogfQogCi1PcHRp
b25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVD
b21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUg
dmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNv
bmRzU2luY2VFcG9jaEZvckRhdGUodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuaAppbmRleCBiMzE4MjIxOWRmMmU0NzAwYjYzODM5ZjY2NDRlZTA0MzExNDVmODdkLi40MTZm
MGU2NjE4ZGU1MDAxY2FjZTZkNDRkMDRjZTFiNDMwOWI5OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVJbnB1dFR5cGUuaApAQCAtNDUsOCArNDUsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEF0b21T
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERhdGVDb21wb25l
bnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNv
bmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1Zp
ZXcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9u
UmVzdWx0cz4pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmb3JtYXREYXRlVGltZUZpZWxkc1N0
YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgKaW5kZXggYzVhMzEwNDZlNGZmZjRjMGFlYWEw
NjFmZDIzYmQxYjc5YjZjNTQwMi4uYWU1NmFmN2UxZTU5NmFmZDY4N2I5MzMwNjc1NDhhOWZmMWNk
MDAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgKQEAgLTM4
LDIxICszOCwyMSBAQCBzdHJ1Y3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSB7CiAgICAgICAgIFBNLAog
ICAgIH07CiAKLSAgICBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0Cisg
ICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIWhvdXIgfHwgIW1lcmlkaWVtKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuICgqaG91ciAlIDEyKSArICgqbWVyaWRpZW0gPT0gRGF0
ZVRpbWVGaWVsZHNTdGF0ZTo6TWVyaWRpZW06OlBNID8gMTIgOiAwKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4geWVhcjsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbW9udGg7Ci0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGRheU9mTW9udGg7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGhvdXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1pbnV0ZTsKLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gc2Vjb25kOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtaWxsaXNlY29uZDsKLSAgICBP
cHRpb25hbDxNZXJpZGllbT4gbWVyaWRpZW07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
eWVhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtb250aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBkYXlPZk1vbnRoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhv
dXI7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbWludXRlOworICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtaWxsaXNl
Y29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lcmlkaWVtPiBtZXJpZGllbTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRp
bWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJ
bnB1dFR5cGUuY3BwCmluZGV4IGQzOTFjOTcwMzFlODNhYThiMjVjMGZmNTBhZDg5MzRjZWJiZTY3
NWYuLjcwYWIwMjcyNjI4YjJiYmMyMDdkMDJmOTIyMWYzMmZjODA0MGY3ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtODMsMTIgKzgz
LDEyIEBAIFN0ZXBSYW5nZSBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluCiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVw
QmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIGRh
dGVUaW1lTG9jYWxTdGVwRGVzY3JpcHRpb24pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50
cz4gRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0
cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERh
dGVUaW1lTG9jYWxJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdW
aWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tUGFy
c2luZ0RhdGVUaW1lTG9jYWwoc291cmNlKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhk
b3VibGUgdmFsdWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlVGlt
ZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZh
bHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25k
c1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKaW5kZXggMDJkNmNhMDFiMzczMDlhMTEwZTAw
MTY3NTZiODViZDQwMDYzOTZiZC4uZmExNTM5ZDA3ZTU3OGYxMDQ1NDc2MDlmNjNiMGZmMTdjMjg0
OTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgK
QEAgLTUwLDggKzUwLDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25z
dCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUpIGNv
bnN0IGZpbmFsOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
KSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVD
b21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSkgY29u
c3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVD
b21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91Ymxl
KSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRp
bWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmb3Jt
YXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUmKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggNDRmNzg0Yjdh
MTI1MGJlZDc1N2I5ODgzNDRlNTNiNTk4NDE0NDNjZi4uNDkxZDA1N2I3NTBlNzM3YTFhZGY2NDU2
MTRmZTg2NDg0OTUwYzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNlcmlhbGl6ZUZvcm1Db250cm9s
U3RhdGVUbyhjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBmb3JtQ29udHIKICAgICAgICAgc3RhdGVW
ZWN0b3IuYXBwZW5kKHZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHZhbHVlKTsKIH0K
IAotc3RhdGljIGlubGluZSBPcHRpb25hbDxGb3JtQ29udHJvbFN0YXRlPiBkZXNlcmlhbGl6ZUZv
cm1Db250cm9sU3RhdGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3Qm
IGluZGV4KQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPEZvcm1Db250cm9sU3RhdGU+IGRl
c2VyaWFsaXplRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0
b3IsIHNpemVfdCYgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAKaW5kZXggY2M2NWVhYzhiYjI1YmE5MTFkOTM3NTJjYjkzMWQxNzU3
YzY4ZmFhZS4uN2YyNmU5ZTcyMDc5ZmZlYmJjM2Q0ZWNjYzU2MWFmNTllMDdjYzFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
aW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYgZG9j
dW1lbnQsIENvbGxlY3Rpb25UeXBlIHQKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNkb20taHRtbGFsbGNvbGxlY3Rpb24t
aXRlbQotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxl
bWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25z
dCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlv
bjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRl
eCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC02MCw3ICs2MCw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5h
CiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3Ry
dWN0dXJlLmh0bWwjY29uY2VwdC1nZXQtYWxsLW5hbWVkCi1PcHRpb25hbDxWYXJpYW50PFJlZlB0
cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9uOjpu
YW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKaW5kZXggZjZlZDMzN2M1Yjdh
YjEyNWVkYzQ3ODg5YWUzOWYxM2NjNTM0ZjYzNC4uNmU4NjAxZjVlOWFjMDAwZTk3YjM5ZTJmMzA4
MGE3YWFlNWM1OTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaApA
QCAtMzMsOCArMzMsOCBAQCBjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBB
bGxEZXNjZW5kYW50c0NvbGxlY3Rpb24gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEFs
bENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAotICAgIE9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4g
bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkg
Y29uc3Q7Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQ
dHI8RWxlbWVudD4+PiBuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRy
PEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBu
YW1lT3JJbmRleCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1M
Q29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbU9ySXRlbXMoY29uc3QgQXRv
bVN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxBbGxDb2xsZWN0aW9uKERvY3Vt
ZW50JiwgQ29sbGVjdGlvblR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAppbmRleCBhM2Q3NjU3ZDY0NDdkZDEzMjViNjg0MmM0NGIyOWJhYzRkMmVmNGE5Li5i
MTBmMjQyZGZkMDdjYWNkM2VkYzExMGM5YmJlNWZkNWZkMWQyM2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgSFRN
TEFuY2hvckVsZW1lbnQ6OmlzU3lzdGVtUHJldmlld0xpbmsoKQogfQogI2VuZGlmCiAKLU9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpIGNvbnN0CiB7CiAgICAgdXNpbmcgU291cmNlSUQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6U291cmNlSUQ7CiAgICAgdXNpbmcgU291cmNlU2l0ZSA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlOwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0g
aGFzUmVsKFJlbGF0aW9uOjpOb1JlZmVycmVyKSA/IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
IDogdGhpcy0+cmVmZXJyZXJQb2xpY3koKTsKIAogICAgIGF1dG8gZWZmZWN0aXZlVGFyZ2V0ID0g
dGhpcy0+ZWZmZWN0aXZlVGFyZ2V0KCk7Ci0gICAgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xp
Y3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVu
ZXJQb2xpY3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5OwogICAgIGlmIChoYXNSZWwoUmVsYXRpb246
Ok9wZW5lcikpCiAgICAgICAgIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OkFsbG93OwogICAgIGVsc2UgaWYgKGhhc1JlbChSZWxhdGlvbjo6Tm9PcGVuZXIpIHx8
IChkb2N1bWVudCgpLnNldHRpbmdzKCkuYmxhbmtBbmNob3JUYXJnZXRJbXBsaWVzTm9PcGVuZXJF
bmFibGVkKCkgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShlZmZlY3RpdmVUYXJnZXQsICJfYmxh
bmsiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggOTU5NzQ2
OTdiMzQ5Y2U1ZjY5NzQ3NzI1NWJjMGJjMTRkNTg2OWJkYS4uNGIwODQwYTQ0OTAzZjUzNzliNGNl
NjNkMjExNWQ1MGQ2ZTM3ZGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRQaW5ncyhj
b25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIAotICAgIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gcGFyc2VQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBoYW5kbGVDbGljayhFdmVudCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggOTkyZjVh
MmY1MjJlOTVmNTYwYjY2YTViY2FiMWM4NzI5ZDQ5ZTI5YS4uNDk2YjQxMTRlNzliNTA5NDZjZWNh
MDY1NmQwYWQ4Y2YyMDY5MzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIFN0cmluZyBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRhY2htZW50cGF0aEF0dHIpOwogfQogCi12b2lk
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlQXR0cmlidXRlcyhPcHRpb25hbDx1aW50NjRf
dD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBuZXdGaWxlbmFtZSkKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVBdHRy
aWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpCiB7CiAgICAgaWYg
KCFuZXdGaWxlbmFtZS5pc051bGwoKSkKICAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0ciwgbmV3RmlsZW5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggMjA1NzU0ZDU0YWE5MjEz
MjU5NjRiZWYwMDBjOTZhMzhjNDZiZWM3Ni4uNTczZWMyZWFlMWNkYzA2MDlmMjYxYzM4NDAwYmIw
MmM0ODBmN2JkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0
ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoT3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3
RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3
RmlsZW5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGI4MzJiNjAyN2Q1NTA0YmZk
MDRkNzk0ZTlkOTQyMzk0MDliOTE0MTMuLjlmNTU2MDgwMmJhYzMyYmI0OTllYzk3YzliMGFlMzJl
MTFjNjIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBA
IC0yMzcsNyArMjM3LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1v
cnlGb3JUZXN0aW5nKHNpemVfdCBzaXplKQogICAgIG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVz
dGluZyA9IHNpemU7CiB9CiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAg
aWYgKG1fY29udGV4dC0+aXNQbGFjZWhvbGRlcigpKQpAQCAtMjQ1LDI4ICsyNDUsMjggQEAgRXhj
ZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50Ojpn
ZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBpZiAobV9jb250ZXh0LT5pczJkKCkpIHsK
ICAgICAgICAgICAgIGlmICghaXMyZFR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4o
Km1fY29udGV4dCkgfSB9OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkg
fSB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNCaXRtYXBSZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnRleHRJZCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3Rk
OjpudWxsb3B0IH07Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxJbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBS
ZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxJbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAgfQogCiAjaWYgRU5B
QkxFKFdFQkdMKQogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1dlYkdMKCkpIHsKICAgICAgICAg
ICAgIGlmICghaXNXZWJHTFR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OwogICAgICAgICAgICAgYXV0byB2ZXJzaW9uID0gdG9XZWJHTFZlcnNpb24oY29udGV4dElk
KTsKICAgICAgICAgICAgIGlmICgodmVyc2lvbiA9PSBXZWJHTFZlcnNpb246OldlYkdMMSkgIT0g
bV9jb250ZXh0LT5pc1dlYkdMMSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAg
ICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCpt
X2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkgfSB9OwogI2lmIEVOQUJMRShXRUJH
TDIpCiAgICAgICAgICAgICBBU1NFUlQoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29u
dGV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
UmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsg
JmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICNlbmRp
ZgogICAgICAgICB9CiAjZW5kaWYKQEAgLTI3NCwxMyArMjc0LDEzIEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChK
U0M6OkpTR2xvCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNX
ZWJHUFUoKSkgewogICAgICAgICAgICAgaWYgKCFpc1dlYkdQVVR5cGUoY29udGV4dElkKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51
bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7ICZkb3duY2FzdDxHUFVDYW52YXNDb250ZXh0Pigq
bV9jb250ZXh0KSB9IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsg
JmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBP
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KIAogICAgIGlmIChpczJkVHlwZShjb250ZXh0SWQpKSB7CkBAIC0yOTAsOCArMjkwLDggQEAg
RXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50
OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVD
b250ZXh0MmQoY29udGV4dElkLCBXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0
ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxv
cHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBS
ZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OwogICAgIH0KIAog
ICAgIGlmIChpc0JpdG1hcFJlbmRlcmVyVHlwZShjb250ZXh0SWQpKSB7CkBAIC0zMDEsOCArMzAx
LDggQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRleHQgPSBj
cmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29udGV4dElkLCBXVEZNb3ZlKHNldHRpbmdzKSk7
CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5k
ZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7
IGNvbnRleHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7
IGNvbnRleHQgfSB9OwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTMxMywxMyArMzEz
LDEzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFz
RWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250ZXh0ID0g
Y3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJzaW9uKGNvbnRleHRJZCksIFdURk1vdmUoYXR0
cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAK
ICAgICAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQotICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMUmVu
ZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqY29udGV4
dCkgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAg
QVNTRVJUKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSk7Ci0gICAgICAgIHJl
dHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTDJSZW5kZXJpbmdD
b250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkgfSB9
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0
cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250
ZXh0PigqY29udGV4dCkgfSB9OwogI2VuZGlmCiAgICAgfQogI2VuZGlmCkBAIC0zMjgsMTIgKzMy
OCwxMiBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZh
c0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjpKU0dsbwogICAgIGlmIChpc1dlYkdQVVR5cGUoY29u
dGV4dElkKSkgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0V2ViR1BVKGNv
bnRleHRJZCk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4geyBj
b250ZXh0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgY29udGV4dCB9IH07
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBzdGQ6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC01NjUsNyAr
NTY1LDcgQEAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0IFMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0LmdldCgpKTsKIH0KIAotdm9p
ZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBy
ZWN0KQordm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogICAgIApAQCAt
NzA2LDcgKzcwNiw3IEBAIHN0YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2NhbnZhcy5odG1sI2Etc2VyaWFsaXNhdGlvbi1vZi10aGUtYml0bWFwLWFzLWEtZmls
ZQotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNWYWx1
ZSBxdWFsaXR5VmFsdWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9t
SlNWYWx1ZShKU0M6OkpTVmFsdWUgcXVhbGl0eVZhbHVlKQogewogICAgIGlmICghcXVhbGl0eVZh
bHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MzksNyAr
ODM5LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNh
bXBsZSgpCiAjZW5kaWYKIH0KIAotRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtPj4gSFRNTENh
bnZhc0VsZW1lbnQ6OmNhcHR1cmVTdHJlYW0oRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25hbDxk
b3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbT4+
IEhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKERvY3VtZW50JiBkb2N1bWVudCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKIHsKICAgICBpZiAoIW9yaWdp
bkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oU2VjdXJpdHlFcnJvciwgIkNhbnZh
cyBpcyB0YWludGVkIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApp
bmRleCAxMDcxZjY0NzE5MTQyNjVlZDg3NzI0NDJhYTkwNWZhMjRkMThhZGU4Li40NTk4ZjQ4ZWEy
ZTNmNmY1NjdjYmRkYWQ2ZDg1MTQyMmRjNDA0OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNp
emUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+
IGdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgY29udGV4dElk
LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOworICAgIEV4
Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IGdldENvbnRleHQoSlND
OjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpOwogCiAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTA3LDEzICsxMDcsMTMg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lk
IGRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOworICAgIHZvaWQgZGlk
RHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKIAogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUoKTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW0+PiBjYXB0dXJlU3RyZWFtKERvY3VtZW50
JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxNZWRpYVN0cmVhbT4+IGNhcHR1cmVTdHJlYW0oRG9jdW1lbnQmLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsKICNlbmRpZgogCiAgICAgSW1hZ2UqIGNvcGll
ZEltYWdlKCkgY29uc3QgZmluYWw7CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gbV9jb250ZXh0OwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiAKLSAgICBPcHRpb25hbDxib29sPiBt
X3VzZXNEaXNwbGF5TGlzdERyYXdpbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZXNE
aXNwbGF5TGlzdERyYXdpbmc7CiAgICAgYm9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsg
ZmFsc2UgfTsKIAogICAgIGJvb2wgbV9pZ25vcmVSZXNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYWJmNDQwZmFmY2FmZDAwZjdjMjZmM2E1YjFkM2Q2
OGVlYjdiMzg1Mi4uMDczYjJiYzM5ZTQwYmEwZWZkZDk2OWI2NzQ2ZjI1NWFiN2ZjYmQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJlZjxE
b2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogfQogCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb20tZG9jdW1lbnQt
bmFtZWRpdGVtCi1PcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxF
bGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVt
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRN
TERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAo
bmFtZS5pc051bGwoKSB8fCAhaGFzRG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmlu
ZGV4IDI3ZWRlNWE3NmMxMzgwNGU5YTExZDAzMWRmMjY4NTEyY2FhYjdmZjEuLmUzNTNhYmRiZmEx
ZDUyZTU4ODcyN2IyODU2YTk2NWNhNzQ1NmMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHdp
ZHRoKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGhlaWdodCgpOwogICAgIAotICAgIE9wdGlv
bmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKICAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCiAg
ICAgRWxlbWVudCogZG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnRO
YW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IGFkYmExZTZiMzQzZTI5MzNhNTljNTZkYzVkN2YyODA3NDk1YzA1ZDYuLjg0ZjZiMDBlODEx
OTA2NGI3MGFiMDI1OGRjNTgxMjEzZWY4NjVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVu
Z3RoVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydAogCiAv
LyBDb2xvciBwYXJzaW5nIHRoYXQgbWF0Y2hlcyBIVE1MJ3MgInJ1bGVzIGZvciBwYXJzaW5nIGEg
bGVnYWN5IGNvbG9yIHZhbHVlIgogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jcnVs
ZXMtZm9yLXBhcnNpbmctYS1sZWdhY3ktY29sb3VyLXZhbHVlCi1zdGF0aWMgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IHBhcnNlTGVnYWN5Q29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmluZykKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUo
U3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGRvZXNuJ3QgYXBw
bHkgYSBjb2xvci4KICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggZjM1M2U5YTli
ZWY4MTcwMjk0NWRjNzU4MDcxYjFlODFiZTI5ZmIxMy4uYWI2YmRkNDhkMTIyMzdiNTJhZWJlYzg3
ZTllYjBkZDE5NzI1NzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRh
aW5lck5vZGUKIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbigpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9O
b2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgK
aW5kZXggNmM3YzRiODk3MTRjNWNkMzMxZmUyZTlmMTE5MDNlYmZlYmM1N2JiYS4uYjViODk5NzI5
M2E5MGJlMGIzMWNiZDc2ODNiYmIxMmQyNTU3ZDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAogICAgIEhU
TUxFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IG5h
bWVkSXRlbU9ySXRlbXMoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJdGVt
T3JJdGVtcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgIEhUTUxGb3JtRWxlbWVudCYgb3du
ZXJOb2RlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApp
bmRleCAxZTZlZTEwMDFiODBjOTNkNzEzNmE3NTNlZDU3NDViYmY5YTQ4YzQxLi5hY2E2NmVjZmFj
YzQyOWYxZGUyMmZmZTUxYjhiOTU2MDA4NjQ5YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgSFRNTEVsZW1lbnQqIEhUTUxGb3Jt
RWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gZWxlbWVudHMoKS0+aXRl
bShpbmRleCk7CiB9CiAKLU9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBS
ZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0Piwg
UmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1FbGVtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0
cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMgPSBuYW1lZEVsZW1lbnRzKG5hbWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCA1YTYxZjUyMzQxYzhl
ZGYxNmFmNGNhY2U3YmU2MTE4MWFmMjNmYThhLi5jOGFkNmFmM2VmNjMzMTg2ZDgyOGJiN2M3MWU2
Mzc4YTU2NDAyZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwotICAgIE9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBu
YW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbShjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKSBjb25zdDsKIAogICAgIFN0cmluZyBlbmN0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRy
aWJ1dGVzLmVuY29kaW5nVHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmgKaW5kZXggMjFjMzdjNmZiMTRkNDM0MTEyZGFjYmMxNzljMTg0MDBlMWRkZGE3YS4uMjc3
ZTU5ZGUzZjY1OTE5MGQ1YjFkYThhMzBhN2NiMzllYzEwMDZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNMYXp5TG9hZE9ic2VydmVyQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3NhbmRib3g7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxG
ZWF0dXJlUG9saWN5PiBtX2ZlYXR1cmVQb2xpY3k7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PEZlYXR1cmVQb2xpY3k+IG1fZmVhdHVyZVBvbGljeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6
eUxvYWRGcmFtZU9ic2VydmVyPiBtX2xhenlMb2FkRnJhbWVPYnNlcnZlcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdmODc4OGU4NzRhZTFlMGE4
M2UzMDM0YjMzMzAzN2FlYzlmMGYwMGYuLmVkYjY4Y2Q3OGVlODkyODY0ZDkwYzJhZGZjN2U2Y2Vm
ZDVhMWQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
OTYsNyArOTYsNyBAQCBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVudCgpCiAgICAg
ICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0aGlzKTsKIH0KIAotUmVmPEhUTUxJbWFnZUVs
ZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgT3B0aW9uYWw8dW5z
aWduZWQ+IGhlaWdodCkKK1JlZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KQog
ewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdFJlZigqbmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFn
LCBkb2N1bWVudCkpOwogICAgIGlmICh3aWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKaW5kZXggNmUxYjMzMjk3MWU1ZTRhYzk5ZDRjMWMyMDUyNTk2M2Y3OTYxZDk0MC4u
ZTY3ZTEyMmE0OTQxNmZhOGVjMzQwZmM0YTBkZWQxMzllZjFiMjc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEltYWdl
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7
CiAgICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwotICAgIHN0YXRp
YyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERv
Y3VtZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4gaGVp
Z2h0KTsKKyAgICBzdGF0aWMgUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQpOwogCiAgICAgdmlydHVhbCB+SFRNTEltYWdl
RWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBkOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkwMzdlNTI1NzM4NDNhLi4xOTlmNmJkZTRlODMz
MGRiZmZhNzFkNmIyMDA3MTk1Y2UyZmZlZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTQwNSwxMiArNDA1LDEyIEBAIFN0ZXBSYW5nZSBIVE1MSW5wdXRF
bGVtZW50OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykg
Y29uCiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLU9wdGlvbmFsPERlY2ltYWw+
IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFs
JiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0RWxlbWVudDo6ZmluZENs
b3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewogICAgIHJldHVybiBt
X2lucHV0VHlwZS0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKTsKIH0KIAotT3B0aW9u
YWw8ZG91YmxlPiBIVE1MSW5wdXRFbGVtZW50OjpsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25z
dCBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBIVE1MSW5wdXRFbGVtZW50OjpsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25zdCBIVE1MT3B0
aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCkKIHsKICAgICBhdXRvIG9wdGlvblZhbHVlID0gb3B0
aW9uRWxlbWVudC52YWx1ZSgpOwogICAgIGlmICghaXNWYWxpZFZhbHVlKG9wdGlvblZhbHVlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNTJhYjgzMTdmMGI5YmJl
YWM5NzMxOGMxNzJjZTgwYTY4NjRiZmFlZS4uNWVkOTRiYmY3NmUxMzFkYTI0OWE4NGNiODViN2Vk
NTI0Mzk4MmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTg2
LDggKzg2LDggQEAgcHVibGljOgogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3Rl
cEhhbmRsaW5nKSBjb25zdDsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQotICAgIE9w
dGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJik7
Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBsaXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25zdCBIVE1M
T3B0aW9uRWxlbWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RU
aWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bGlzdE9wdGlvblZhbHVlQXNEb3VibGUoY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQmKTsKICNlbmRp
ZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc3RlcFVwKGludCA9IDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggYjJhYTg4NTQ2OTE0NTI4
MGEyMjYwMjNhM2U4NDFlZTdmMTFiMGI5MC4uYjQ2MTRiZjdjNjFmNDRmZTI0ODUwZDViNzlkZWZh
Y2NjOTE2ODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBIVE1MTElFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogaW5s
aW5lIHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7Ci0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNp
dFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlOwogICAgIGlmIChh
dXRvIHBhcnNlZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgIGV4cGxp
Y2l0VmFsdWUgPSAqcGFyc2VkVmFsdWU7CiAgICAgZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpy
ZW5kZXJlcigpKS5zZXRFeHBsaWNpdFZhbHVlKGV4cGxpY2l0VmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGYwZTAyYzk3MWRjMzU5ODdhNmJjNGNhMmMz
MjI4N2QzYTE3NDliNzMuLmI5Yjk2NjcyMjcwNjdlNzI1ZTYxZGE4YzdlZmExMmJmZjVjMjZhOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTMwOCw3ICszMDgs
NyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICAgICAgYm9vbCBtZWRp
YVF1ZXJ5TWF0Y2hlcyA9IHRydWU7CiAgICAgICAgIGlmICghbV9tZWRpYS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKICAgICAgICAg
ICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAgICAg
ICBkb2N1bWVudFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsK
ICAgICAgICAgICAgIGF1dG8gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwg
TWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQoKSkpOwpAQCAtMzIyLDcgKzMyMiw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgYWRkUGVuZGluZ1NoZWV0
KGlzQWN0aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFjdGl2ZVNoZWV0KTsKIAogICAgICAgICAvLyBM
b2FkIHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgaW1t
ZWRpYXRlbHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0gICAgICAgIE9wdGlvbmFsPFJlc291cmNlTG9h
ZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQ
cmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIGlmICghaXNBY3RpdmUpCiAgICAgICAgICAgICBw
cmlvcml0eSA9IERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6aW5hY3RpdmVTdHlsZVNoZWV0
OwogCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNp
bmdDaGlsZHJlbigpCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQo
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzdHlsZVNoZWV0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0JiBjYWNoZWRTdHlsZVNoZWV0LCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250ZXh0
KQogewogICAgIC8vIEZJWE1FOiBvcmlnaW5DbGVhbiBzaG91bGQgYmUgdHVybmVkIHRvIGZhbHNl
IGV4Y2VwdCBpZiBmZXRjaCBtb2RlIGlzIENPUlMuCi0gICAgT3B0aW9uYWw8Ym9vbD4gb3JpZ2lu
Q2xlYW47CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBvcmlnaW5DbGVhbjsKICAgICBpZiAoY2Fj
aGVkU3R5bGVTaGVldC5vcHRpb25zKCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMp
CiAgICAgICAgIG9yaWdpbkNsZWFuID0gY2FjaGVkU3R5bGVTaGVldC5pc0NPUlNTYW1lT3JpZ2lu
KCk7CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBIVE1MTGlua0VsZW1l
bnQ6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHR5cGVBdHRyKTsKIH0KIAotT3B0aW9uYWw8TGlua0ljb25UeXBlPiBIVE1MTGlua0VsZW1l
bnQ6Omljb25UeXBlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGlua0ljb25UeXBlPiBIVE1MTGlu
a0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWxBdHRyaWJ1dGUu
aWNvblR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4MGYw
YzVjMWZiOTY4ZTU0OThlYTcyY2UwMGVmNjFkMjFhYjNkYzA4Li45MzY5YjczMDk5YjIwZDg2Yzhm
NzE4OTcyZDZiZDVlZjQyNzRmNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0OwogCiAg
ICAgQ1NTU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDM5ODE4MjIy
OTRmNzBlYjJiYzJkMjg5MTA0ZWUyOWQxZmEzNjA1MzAuLjQwNTJhMTM3ZjQ4ZGQ2NzkwMmZmZmYy
ZjY1ODM0OGIxMmViM2EyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVB
Y3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgIGlmIChh
dXRvIG5lYXJlc3RFbmRpbmdDdWUgPSBzdGQ6Om1pbl9lbGVtZW50KGN1cnJlbnRDdWVzLmJlZ2lu
KCksIGN1cnJlbnRDdWVzLmVuZCgpLCBjb21wYXJlQ3VlSW50ZXJ2YWxFbmRUaW1lKSkKICAgICAg
ICAgbmV4dEludGVyZXN0aW5nVGltZSA9IG5lYXJlc3RFbmRpbmdDdWUtPmRhdGEoKS0+ZW5kTWVk
aWFUaW1lKCk7CiAKLSAgICBPcHRpb25hbDxDdWVJbnRlcnZhbD4gbmV4dEN1ZSA9IG1fY3VlRGF0
YS0+Y3VlVHJlZS5uZXh0SW50ZXJ2YWxBZnRlcihtb3ZpZVRpbWUpOworICAgIHN0ZDo6b3B0aW9u
YWw8Q3VlSW50ZXJ2YWw+IG5leHRDdWUgPSBtX2N1ZURhdGEtPmN1ZVRyZWUubmV4dEludGVydmFs
QWZ0ZXIobW92aWVUaW1lKTsKICAgICBpZiAobmV4dEN1ZSkKICAgICAgICAgbmV4dEludGVyZXN0
aW5nVGltZSA9IHN0ZDo6bWluKG5leHRJbnRlcmVzdGluZ1RpbWUsIG5leHRDdWUtPmxvdygpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA0NTY5ODMwNDNmNTdk
ZGQ4YWJhM2QwMTUwZDk0YjhjZTk3YmFmYzUyLi5kODUxMDA4NTkwNTdkMTRkZDk3OWM0YmI2Mjlj
ZjEyYTc5YmFkMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAt
MTA5LDcgKzEwOSw3IEBAIGNsYXNzIFJlbW90ZVBsYXliYWNrOwogdXNpbmcgQ3VlSW50ZXJ2YWwg
PSBQT0RJbnRlcnZhbDxNZWRpYVRpbWUsIFRleHRUcmFja0N1ZSo+OwogdXNpbmcgQ3VlTGlzdCA9
IFZlY3RvcjxDdWVJbnRlcnZhbD47CiAKLXVzaW5nIE1lZGlhUHJvdmlkZXIgPSBPcHRpb25hbDxW
YXJpYW50PAordXNpbmcgTWVkaWFQcm92aWRlciA9IHN0ZDo6b3B0aW9uYWw8VmFyaWFudDwKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4sCiAjZW5kaWYK
QEAgLTExMTYsNyArMTExNiw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3VidGl0bGVUcmFj
a0xhbmd1YWdlOwogICAgIE1lZGlhVGltZSBtX2xhc3RUZXh0VHJhY2tVcGRhdGVUaW1lIHsgLTEs
IDEgfTsKIAotICAgIE9wdGlvbmFsPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNw
bGF5TW9kZT4gbV9jYXB0aW9uRGlzcGxheU1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGU+IG1fY2FwdGlvbkRpc3BsYXlNb2Rl
OwogCiAgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0
cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBwcml2
YXRlOgogCiAgICAgV2Vha1B0cjxjb25zdCBNZWRpYVJlc291cmNlTG9hZGVyPiBtX2xhc3RNZWRp
YVJlc291cmNlTG9hZGVyRm9yVGVzdGluZzsKIAotICAgIE9wdGlvbmFsPER5bmFtaWNSYW5nZU1v
ZGU+IG1fb3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1p
Y1JhbmdlTW9kZT4gbV9vdmVycmlkZUR5bmFtaWNSYW5nZU1vZGU7CiAKICAgICBmcmllbmQgY2xh
c3MgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFF
bGVtZW50LmNwcAppbmRleCBhM2MwNzIwYTY3MTAyOGVmNzNmODFiODE4Mjg2MWEyMmU3NDhhYzVj
Li5mMDIyNmY2MjlkMWI5Y2M5NTM0MDZjYzc2NDAwYTA2ZDQyOTdiY2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSFRNTE1l
dGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKQogICAgIGlmICghbV9tZWRpYSkKICAg
ICAgICAgbV9tZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKG1lZGlhQXR0cikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKIAotICAgIE9wdGlvbmFsPFJlbmRlclN0eWxl
PiBkb2N1bWVudFN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50
U3R5bGU7CiAgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAg
ZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAppbmRleCBmNTk5MzkzZTgxZDM5ODMxZjRl
ZTllY2IyODQ2MmVjYjJiOWQ0ZjVhLi5lYjYxNThhNGVhMmY2NGQxZjllYmRiN2I1ZDFmZTdjM2E1
ZjkzOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKQEAgLTU2LDcgKzU2
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhOwogCi0g
ICAgT3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IG1fY29udGVudENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKaW5kZXggN2M4YjkzNTQxMWUwYzk5NTBj
NjM4YmM0ZmNkYjUyMjk2NTgxMGNiNi4uODY0OGE0YWYwN2QzNGI4YzNhMjVjZDM4Y2EwZWYyOWU5
N2M0NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC0z
Miw5ICszMiw5IEBACiAKIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBzdGFuZGFyZCB3YXkg
dG8gdHVybiBhIHN0ZDo6ZXhwZWN0ZWQgaW50byBhIE9wdGlvbmFsLgogLy8gTWF5YmUgd2Ugc2hv
dWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBmaWxlIGZvciBFeHBlY3RlZCBhbmQgZ2l2ZSBp
dCBhIGJldHRlciBuYW1lLgotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gaW5saW5l
IE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IG9w
dGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkKIHsKLSAgICByZXR1cm4gZXhw
ZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4gZXhwZWN0ZWQgPyBzdGQ6Om9wdGlvbmFsPFQ+KFdURk1vdmUoZXhw
ZWN0ZWQudmFsdWUoKSkpIDogc3RkOjpudWxsb3B0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDJmNGMzOTcyMGVjZTg0
YWYyYzI4YWI5NzBiNjdkM2ZjZWExY2I2MjkuLjU2MzI0YTY2OTczMzg3NjRkNjkyYzEwOTM0NGY0
MThjM2VkMjgzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC01
Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxp
bnQ+IG1fc3RhcnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZD4gbV9pdGVtQ291bnQ7
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBtX2l0ZW1Db3VudDsKICAgICBib29sIG1faXNSZXZlcnNlZCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAKaW5kZXggMzBiYmNmMzY5ODQyNzYxZGQwYjUzNDQxNzhiNDcwMTA2MzU1NTIyMC4uZjVjYjJm
MWNmMjQ3ODMxMTA5NjhjNDEyZTQ2YjQyYTg1MDIwODcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBSZWY8SFRN
TE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2Vs
ZWN0RWxlbWVudCYgc2VsZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29s
bGVjdGlvbihzZWxlY3QpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjphZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpCitFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYg
ZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQog
ewogICAgIHJldHVybiBzZWxlY3RFbGVtZW50KCkuYWRkKGVsZW1lbnQsIGJlZm9yZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA2NzY1MmU5
YjQ5NGE2M2UxMmE3N2RmOWY1YzVkMTRiNDBlYzYxMTZlLi41YTMxZmM0ZGI1MmYzMWZjZGZhMDk3
OWQ1MTVlZDYzNmQ5NGVlNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIAogICAgIHVzaW5nIE9w
dGlvbk9yT3B0R3JvdXBFbGVtZW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+
LCBSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4+OwogICAgIHVzaW5nIEhUTUxFbGVtZW50T3JJ
bnQgPSBWYXJpYW50PFJlZlB0cjxIVE1MRWxlbWVudD4sIGludD47Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50Jiwg
Y29uc3QgT3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKaW5kZXggMzRkYWViOGRjNDNmZDJmNjNmMDA4NDJjN2E4NzNjYWJmNzkw
ZDA3OC4uODliZThkYTc3MzgwNDE2MGFmYWE1ZTBiNjRmZTBhOTJiMDc5ZmQ0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBp
bnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0
CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBPcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQorRXhj
ZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChjb25zdCBPcHRpb25Pck9wdEdy
b3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50
PiYgYmVmb3JlKQogewogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gYmVmb3JlRWxlbWVudDsKICAg
ICBpZiAoYmVmb3JlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5k
ZXggMjcyZjFjNDA0ODMxNjkwNTMxMmE2Yzk0MGQ5ZTRmZWJkNjE0ZTY0Yy4uNjU0MjZjMTM0MDFm
YmJkNzQxMzRhYjZmYjFhMGQ5M2UwZGQxZjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBPcHRp
b25Pck9wdEdyb3VwRWxlbWVudCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50Piwg
UmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+PjsKICAgICB1c2luZyBIVE1MRWxlbWVudE9ySW50
ID0gVmFyaWFudDxSZWZQdHI8SFRNTEVsZW1lbnQ+LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIGNv
bnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7CiAKICAgICB1
c2luZyBOb2RlOjpyZW1vdmU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmUoaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAppbmRleCBlNGFlMWE1NGYxOGYy
MDZjNWE0OGE5MGMxYzQ4ZWNmYjEyZGJlODc3Li4xYWI2NmMwYjQwYWEyM2U0OGQ3ZDAzYTA3OTll
MzYyNmE4MTRmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9lcnJvckV2ZW50VGltZXI7CiAg
ICAgYm9vbCBtX3Nob3VsZFJlc2NoZWR1bGVFcnJvckV2ZW50T25SZXN1bWUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zaG91bGRDYWxsU291cmNlc0NoYW5nZWQgeyBmYWxzZSB9OwotICAgIG11dGFi
bGUgT3B0aW9uYWw8UmVmUHRyPGNvbnN0IE1lZGlhUXVlcnlTZXQ+PiBtX2NhY2hlZFBhcnNlZE1l
ZGlhQXR0cmlidXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgTWVk
aWFRdWVyeVNldD4+IG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDRjYTAzZGI4NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1ZmM3
OWEyMTNhOTkuLjQ0MjM5MDhkMTUzZGRhOGI0MjZkODlkOGRlYTgwZGNmMGQ5NmYzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9y
UmFuZ2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlKiYgY28KICAgICB9CiB9CiAK
LU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0
aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSB8fCAh
aXNUZXh0RmllbGQoKSB8fCAhaGFzQ2FjaGVkU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggMDg1NjUzNjlkMTQzZmY3YTk5NDA0Y2E2YTkwZTA1M2JlZjVmZDZk
MC4uNjRjMTg1MmZhOTJmZWQxYWYxNTI5NGIyOGQ3N2ExYmM1ZGIwZmUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODEsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGlu
dCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0
aW9uRGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24sIFNlbGVjdGlvblJldmVhbE1v
ZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbCwgY29uc3QgQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gc2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNv
bnN0OwogCiAgICAgdm9pZCBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggMGI0YjE4MDY2NDYwNDQzOTI4MTFl
OGQxMGYxNzNkZmVkOTg5ODRkNS4uNzlhMzYxYThmN2VhMzA2Mjk4ODZkNjY4NjJjNjAwMjI2NGEz
ZGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTczLDcgKzczLDcgQEAg
UmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1hZ2VC
dWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSkg
fSk7CiB9CiAKLVJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25hbDxJ
bWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQorUmVmPEltYWdlQml0bWFwPiBJbWFn
ZUJpdG1hcDo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmIGJhY2tp
bmdTdG9yZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJpdG1hcChXVEZNb3Zl
KGJhY2tpbmdTdG9yZSkpKTsKIH0KQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCiAgICAgKTsKIH0KIAotVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+
IEltYWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYm
IGJpdG1hcHMpCitWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBJbWFn
ZUJpdG1hcDo6ZGV0YWNoQml0bWFwcyhWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mJiBiaXRt
YXBzKQogewotICAgIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBidWZmZXJz
OworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IGJ1ZmZlcnM7
CiAgICAgZm9yIChhdXRvJiBiaXRtYXAgOiBiaXRtYXBzKQogICAgICAgICBidWZmZXJzLmFwcGVu
ZChiaXRtYXAtPnRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcnM7
CkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGJvb2wgdGFpbnRzT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvKQogI2VuZGlmCiAKIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ltYWdlYml0bWFwLWFuZC1hbmltYXRp
b25zLmh0bWwjY3JvcHBlZC10by10aGUtc291cmNlLXJlY3RhbmdsZS13aXRoLWZvcm1hdHRpbmcK
LXN0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZv
cm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpemUsIEltYWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucywg
T3B0aW9uYWw8SW50UmVjdD4gcmVjdCkKK3N0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9w
cGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpemUsIEltYWdl
Qml0bWFwT3B0aW9ucyYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0KQogewog
ICAgIC8vIDIuIElmIGVpdGhlciBvciBib3RoIG9mIHJlc2l6ZVdpZHRoIGFuZCByZXNpemVIZWln
aHQgbWVtYmVycyBvZiBvcHRpb25zIGFyZSBsZXNzCiAgICAgLy8gICAgdGhhbiBvciBlcXVhbCB0
byAwLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCAiSW52YWxpZFN0YXRlRXJy
b3IiCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFu
a0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWMKIAogLy8gMTMu
IFJldHVybiBvdXRwdXQuCiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9w
dGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3Zv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1l
bnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4g
cmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIGlt
YWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJl
amVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zOTksMTkgKzM5OSwxOSBAQCB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0K
IAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52
YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0
bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VC
aXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIGNyZWF0ZVByb21pc2Uoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUo
cmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52
YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0
bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJl
Y3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KICNlbmRpZgogCi12b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBDYW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9u
cyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlBy
b21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIHRoZSBjYW52YXMgZWxlbWVudCdzIGJp
dG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBkaW1lbnNpb24gb3IgYSB2ZXJ0aWNhbAogICAg
IC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJvLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVq
ZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC00NjcsNyArNDY3LDcgQEAgdm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZpZGVvLCBJbWFnZUJpdG1hcE9w
dGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJv
bWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MVmlkZW9F
bGVtZW50PiYgdmlkZW8sIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyNkb20tY3JlYXRlaW1h
Z2ViaXRtYXAKICAgICAvLyBXSEFUV0cgSFRNTCAyMTAyOTEzYjMxMzA3OGNkOGVlYWM3ZTgxZTZh
ODc1NmNiZDNlNzczCkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCi12b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0lt
YWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBJbWFn
ZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+
JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIEltYWdlQml0
bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3Rh
dGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCIpOwogfQogI2VuZGlmCiAKLXZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1h
Z2VCaXRtYXA+JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRp
b25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYg
cHJvbWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSdzIFtbRGV0YWNoZWRdXSBpbnRlcm5hbCBz
bG90IHZhbHVlIGlzIHRydWUsIHJldHVybiBhIHByb21pc2UKICAgICAvLyAgICByZWplY3RlZCB3
aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KQEAgLTY0MCw3ICs2NDAsNyBAQCBwcml2YXRlOgogY2xhc3MgUGVuZGluZ0ltYWdlQml0
bWFwIGZpbmFsIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEZpbGVSZWFkZXJMb2Fk
ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxCbG9iPiYmIGJsb2IsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMs
IE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkK
KyAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSZWZQdHI8QmxvYj4mJiBibG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBv
cHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNl
JiYgcHJvbWlzZSkKICAgICB7CiAgICAgICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LmFj
dGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NDks
NyArNjQ5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nSW1hZ2VC
aXRtYXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVm
UHRyPEJsb2I+JiYgYmxvYiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8
SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQorICAgIFBlbmRp
bmdJbWFnZUJpdG1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSZWZQdHI8QmxvYj4mJiBibG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBz
dGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKICAgICAgICAgOiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgICwgbV9ibG9iTG9hZGVyKEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVy
LCB0aGlzKQogICAgICAgICAsIG1fYmxvYihXVEZNb3ZlKGJsb2IpKQpAQCAtNzIzLDEzICs3MjMs
MTMgQEAgcHJpdmF0ZToKICAgICBGaWxlUmVhZGVyTG9hZGVyIG1fYmxvYkxvYWRlcjsKICAgICBS
ZWZQdHI8QmxvYj4gbV9ibG9iOwogICAgIEltYWdlQml0bWFwT3B0aW9ucyBtX29wdGlvbnM7Ci0g
ICAgT3B0aW9uYWw8SW50UmVjdD4gbV9yZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4g
bV9yZWN0OwogICAgIEltYWdlQml0bWFwOjpQcm9taXNlIG1fcHJvbWlzZTsKICAgICBTdXNwZW5k
YWJsZVRpbWVyIG1fY3JlYXRlSW1hZ2VCaXRtYXBUaW1lcjsKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgUHJvbWlzZSYm
IHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBh
cnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
c3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0LCBQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoIWFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
SW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIEltYWdlQml0bWFwIGZyb20gYW4g
ZW1wdHkgYnVmZmVyIik7CkBAIC03NzAsMTMgKzc3MCwxMyBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleAogICAgIHByb21pc2UucmVzb2x2ZShXVEZNb3ZlKGltYWdlQml0bWFwKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEJsb2I+JiBibG9iLCBJbWFnZUJpdG1hcE9wdGlv
bnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlz
ZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxCbG9iPiYgYmxvYiwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0
LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gMi4gUmV0dXJuIGEg
bmV3IHByb21pc2UsIGJ1dCBjb250aW51ZSBydW5uaW5nIHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVs
LgogICAgIFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
V1RGTW92ZShibG9iKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShw
cm9taXNlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlRGF0YT4m
IGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVj
dD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1h
cDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhLCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyA2LjEuIExldCBidWZmZXIgYmUgaW1hZ2UncyBkYXRh
IGF0dHJpYnV0ZSB2YWx1ZSdzIFtbVmlld2VkQXJyYXlCdWZmZXJdXQogICAgIC8vICAgICAgaW50
ZXJuYWwgc2xvdC4KQEAgLTgzMiw3ICs4MzIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAg
ICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotSW1hZ2VCaXRt
YXA6OkltYWdlQml0bWFwKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJiBiYWNraW5nU3Rv
cmUpCitJbWFnZUJpdG1hcDo6SW1hZ2VCaXRtYXAoc3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+JiYgYmFja2luZ1N0b3JlKQogICAgIDogbV9iYWNraW5nU3RvcmUoV1RGTW92ZShiYWNr
aW5nU3RvcmUpKQogewogICAgIEFTU0VSVF9JTVBMSUVTKG1fYmFja2luZ1N0b3JlLCBtX2JhY2tp
bmdTdG9yZS0+YnVmZmVyKCkpOwpAQCAtODQ2LDcgKzg0Niw3IEBAIEltYWdlQml0bWFwOjp+SW1h
Z2VCaXRtYXAoKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZUJ1ZmZlciA9IFdURk1v
dmUoaW1hZ2VCdWZmZXIpXSB7IH0pOwogfQogCi1PcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+
IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCaXRtYXBCYWNraW5nKCkKK3N0ZDo6b3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPiBJbWFnZUJpdG1hcDo6dGFrZUltYWdlQml0bWFwQmFja2luZygpCiB7
CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIHN0ZDo6bnVsbG9wdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMzI2ZjgwYjg3Y2Q1Mjk5YmM3OWZm
ZGQ2Yjg2NDg3ZTk4YTFkODlkNS4uMzI0NmQ0MjQ0ZDQ2YmUxOTRiMGVkODBkOThhYzYyMjQ2YWEz
NzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSA9IDEpOwogCiAgICAgc3RhdGljIFJlZjxJbWFnZUJpdG1hcD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJbnRTaXplJik7Ci0gICAgc3Rh
dGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4m
Jik7CisgICAgc3RhdGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwogCkBAIC0xMDIsMzYg
KzEwMiwzNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3RvcmUtPnByZW11bHRpcGx5QWxwaGEo
KTsgfQogICAgIGJvb2wgZm9yY2libHlQcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3RvcmUtPmZvcmNpYmx5UHJlbXVsdGlwbHlBbHBo
YSgpOyB9CiAKLSAgICBPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+IHRha2VJbWFnZUJpdG1h
cEJhY2tpbmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4gdGFrZUlt
YWdlQml0bWFwQmFja2luZygpOwogICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2JhY2tpbmdTdG9yZTsgfQogICAgIHZvaWQgY2xvc2UoKSB7IHRha2VJbWFnZUJpdG1hcEJh
Y2tpbmcoKTsgfQogCi0gICAgc3RhdGljIFZlY3RvcjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tp
bmc+PiBkZXRhY2hCaXRtYXBzKFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYmKTsKKyAgICBz
dGF0aWMgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4gZGV0YWNoQml0
bWFwcyhWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcjsKICAgICBmcmllbmQgY2xhc3MgUGVu
ZGluZ0ltYWdlQml0bWFwOwogCi0gICAgSW1hZ2VCaXRtYXAoT3B0aW9uYWw8SW1hZ2VCaXRtYXBC
YWNraW5nPiYmKTsKKyAgICBJbWFnZUJpdG1hcChzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFj
a2luZz4mJik7CiAKICAgICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CiAK
LSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8
SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VCaXRt
YXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAjaWYgRU5B
QkxFKFZJREVPKQotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYsIEltYWdlQml0bWFwT3B0aW9ucyYm
LCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4m
LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYm
KTsKICNlbmRpZgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0
aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYsIElt
YWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBz
dGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SW1hZ2VCaXRtYXA+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVj
dD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYsIEltYWdlQml0bWFwT3B0
aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5DYW52
YXM+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21p
c2UmJik7CiAjZW5kaWYKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBDYW52YXNCYXNlJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFs
PEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYm
LCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYsIEltYWdl
Qml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKLSAgICBzdGF0
aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlw
ZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJl
Y3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9w
dGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQg
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ2FudmFzQmFzZSYsIEltYWdl
Qml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOworICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0
cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQ
cm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6
b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVl
PiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNl
JiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3Rk
OjpvcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKIAotICAgIE9wdGlvbmFsPEltYWdlQml0
bWFwQmFja2luZz4gbV9iYWNraW5nU3RvcmU7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJpdG1h
cEJhY2tpbmc+IG1fYmFja2luZ1N0b3JlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VCaXRtYXBPcHRpb25zLmgKaW5kZXggNjFhMGIzYTc0YjljZjcwNWNmZGIxZDkwMzBhZTgzNGYw
ODQxMTA1YS4uZDVmMDliN2QxZjllZTdiMzhhNzlmYmM4MzlkODlkNDlmZWQxYzYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5oCkBAIC0zOCw4ICszOCw4IEBAIHN0
cnVjdCBJbWFnZUJpdG1hcE9wdGlvbnMgewogICAgIE9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRp
b24geyBPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAgIFByZW11bHRpcGx5QWxwaGEgcHJlbXVsdGlw
bHlBbHBoYSB7IFByZW11bHRpcGx5QWxwaGE6OkRlZmF1bHQgfTsKICAgICBDb2xvclNwYWNlQ29u
dmVyc2lvbiBjb2xvclNwYWNlQ29udmVyc2lvbiB7IENvbG9yU3BhY2VDb252ZXJzaW9uOjpEZWZh
dWx0IH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHJlc2l6ZVdpZHRoOwotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiByZXNpemVIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcmVz
aXplV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcmVzaXplSGVpZ2h0OwogICAg
IFJlc2l6ZVF1YWxpdHkgcmVzaXplUXVhbGl0eSB7IFJlc2l6ZVF1YWxpdHk6OkxvdyB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IDk3ODdiMDY3M2E4ZTQxMmMyMzc1ZDM0
NjQ3ODEzZjVmZGVlNDQzYmYuLjkxNmRmYjBmMmI4ZmUyOWU1ZjNmYzI4MTU2MzhjNjQwMWI1NzE0
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGlj
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gY2hlY2tlZERhdGFTaXplOwogfQogCi1QcmVkZWZp
bmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9y
U3BhY2UpCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1dGVDb2xvclNwYWNl
KHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzLCBQcmVkZWZpbmVkQ29s
b3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPmNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiAqc2V0dGluZ3MtPmNvbG9yU3BhY2U7CkBA
IC01Niw3ICs1Niw3IEBAIFJlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVsQnVm
ZmVyJiYgcGl4ZWxCdWZmZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHBp
eGVsQnVmZmVyLnNpemUoKSwgcGl4ZWxCdWZmZXIudGFrZURhdGEoKSwgKmNvbG9yU3BhY2UpKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+JiYgcGl4ZWxCdWZmZXIpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0
ZShzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewogICAgIGlmICgh
cGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODMsNyArODMsNyBAQCBS
ZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0
YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCByb3dzLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1
bHRDb2xvclNwYWNlLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCitFeGNl
cHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2Ug
ZGVmYXVsdENvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKQogewogICAgIEludFNpemUgc2l6ZShyb3dzLCBwaXhlbHNQZXJSb3cpOwogICAgIGF1dG8g
ZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCByb3dzLCB1bnNpZ24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEo
c2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1
bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQorRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNp
Z25lZCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAg
ICAgaWYgKCFzdyB8fCAhc2gpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVF
cnJvciB9OwpAQCAtMTIxLDcgKzEyMSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJ
bWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9u
TnVsbCgpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJ
bWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNp
Z25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5n
cz4gc2V0dGluZ3MpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVh
dGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBz
ZXR0aW5ncykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlQXJyYXktPmxlbmd0aCgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAlIDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRl
eCBjYTEyOGVkYmZlYWY4YmU3MjExNTlkZmUzNzVhZGFlZTI0MTc5N2MxLi5lMDc4ZWM0OGZhZWI4
NzBkZDc2MGNiM2M2YTA3YzViZTNjZTk1ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAg
LTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVsQnVmZmVyJiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXpl
JiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1BlclJvdywgUHJlZGVm
aW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRp
bmdzPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwg
dW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0
dGluZ3M+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxz
UGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgc3RkOjpvcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHNoLCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB+SW1hZ2VEYXRhKCk7CiAKLSAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9yU3BhY2Ug
Y29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+LCBQcmVkZWZpbmVk
Q29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSA9IFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdC
KTsKKyAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29tcHV0ZUNvbG9yU3BhY2Uoc3Rk
OjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4sIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1
bHRDb2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpOwogCiAgICAgY29uc3Qg
SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKaW5kZXggMWIwODEwMzNmM2ZhNzMzMjhlMGRmZGU2ZDk5
ZTAyZTdmZGYyYjIzMy4uMmRkZDdlOTZiMmQyYWFiMTk5MDk3MWVhMTE4NzQ3MDJkMzhiYTJmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaApAQCAtMzEsNyArMzEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSW1hZ2VEYXRhU2V0dGluZ3MgewotICAg
IE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0
aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggNGQzYTc4YTJjN2Uz
YjFjMzVlZTg3MmU2Y2RmYjgyZDAwODM2MGMwNC4uMTUwZDUwODA1YjkwODZkNTIxZjBmNzcxNjBm
MDQ5ZWMyOWFkZTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtODY1LDcgKzg2
NSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIHsKIH0KIAot
T3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29u
c3QgRGVjaW1hbCYpCitzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IElucHV0VHlwZTo6ZmluZENsb3Nl
c3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRl
eCAwNzkzMGNjZTczZWQ5NTdmZWMwNjY0NTRiNGYwYTE0YWJlNjhlNzdmLi5iYjgyY2Q4MDgxY2Uw
MDVmNzRhMWI0Y2MxMTJjMTljZWNkMTRiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAg
LTM3NSw3ICszNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YUxpc3RNYXlIYXZlQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwg
T3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwm
KTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKaW5kZXggMjgxOTI0
Njk2NzZiNjU2NzcxODY4NzEwY2I3ZjUyZGFmZmE3Y2NhYi4uOTcyM2FiNWU2ZTZlMTE2YzZiMTRk
MGEzOGM4MDI2ZTg0OTczNDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5r
SWNvbkNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxl
Y3Rvci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYXV0byBMaW5rSWNvbkNvbGxlY3Rvcjo6aWNvbnNP
ZlR5cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+IGljb25UeXBlcykgLT4gVmVjdG8KICAgICAg
ICAgLy8gVGhpcyBpY29uIHNpemUgcGFyc2luZyBpcyBhIGxpdHRsZSB3b25reSAtIGl0IG9ubHkg
cGFyc2VzIHRoZSBmaXJzdAogICAgICAgICAvLyBwYXJ0IG9mIHRoZSBzaXplLCAiNjB4NzAiIGJl
Y29tZXMgIjYwIi4gVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zCiAgICAgICAgIC8v
IGFuZCBpcyBwcm9iYWJseSBnb29kIGVub3VnaCBmb3Igbm93LgotICAgICAgICBPcHRpb25hbDx1
bnNpZ25lZD4gaWNvblNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGljb25T
aXplOwogICAgICAgICBpZiAobGlua0VsZW1lbnQuc2l6ZXMoKS5sZW5ndGgoKSkKICAgICAgICAg
ICAgIGljb25TaXplID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+
KGxpbmtFbGVtZW50LnNpemVzKCkuaXRlbSgwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDZmYjNmNmNhM2M5N2NhMzYyZTg2NWFmNGUyMzNl
ZDZkM2VhNzRlOGEuLjdhMjc1ZDdjMzE1NzViZmY4MDk4YzJkOWIyNmVkOGVhZjM2ZWZhOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMTM3LDcg
KzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgICAgIG1f
c2Vzc2lvbi0+bWV0YWRhdGFDaGFuZ2VkKG1ldGFkYXRhKTsKICAgICB9Ci0gICAgdm9pZCBwb3Np
dGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0
ZSkgZmluYWwKKyAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAo
bV9zZXNzaW9uKQogICAgICAgICAgICAgbV9zZXNzaW9uLT5wb3NpdGlvblN0YXRlQ2hhbmdlZChz
dGF0ZSk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cAogfQog
I2VuZGlmCiAKLU9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpu
b3dQbGF5aW5nSW5mbygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiB7CiAgICAgYXV0byogcGFn
ZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBib29sIGFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHkgPSBwYWdlICYmICFwYWdlLT5pc1Zpc2libGVBbmRBY3RpdmUo
KTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAgICAgYXV0byogc2Vzc2lvbiA9
IG1lZGlhU2Vzc2lvbigpOwogICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9IHNlc3Npb24gPyBz
ZXNzaW9uLT5tZXRhZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhKSB7
Ci0gICAgICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAgICAgICAg
IGlmIChzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtJbWFnZSgpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpLCAiQW4gaW1hZ2UgbXVz
dCBhbHdheXMgaGF2ZSBhc3NvY2lhdGVkIGRhdGEiKTsKICAgICAgICAgICAgIGFydHdvcmsgPSBO
b3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtTcmMoKSwgc2Vz
c2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+bWltZVR5cGUoKSwgc2Vzc2lvbk1ldGFkYXRh
LT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lkIE1l
ZGlhRWxlbWVudFNlc3Npb246Om1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRh
ZGF0YT4mKQogICAgIGNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxN
ZWRpYVBvc2l0aW9uU3RhdGU+JikgeyB9Cit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnBvc2l0
aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYp
IHsgfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrU3RhdGVDaGFuZ2VkKE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5oCmluZGV4IGQ5M2ZkMGY4N2Y5NmJkMmY4ODdiZGU2NGFlN2VlNTliYTQw
YTNhNTQuLjNmOGE1ODgwZWJiZDE0ZDVmZjM5OTFhNmI2MjNiMWI0ZjUwN2MyN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0xNzMsMTAgKzE3MywxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICB8fCB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW9BdWRpbzsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxheWluZ0luZm8oKSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5n
SW5mbygpIGNvbnN0IGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVNZWRp
YVVzYWdlSWZDaGFuZ2VkKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1l
ZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVVzYWdlSW5mbzsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYVVzYWdlSW5mbzsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJl
bW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBtZXRhZGF0YUNo
YW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+Jik7Ci0gICAgdm9pZCBwb3NpdGlvblN0
YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+Jik7CisgICAgdm9p
ZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25T
dGF0ZT4mKTsKICAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXli
YWNrU3RhdGUpOwogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNDaGFuZ2VkKCk7CiAKQEAgLTIyMCw3
ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsKICAg
ICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIAotICAgIE9wdGlvbmFsPE1l
ZGlhVXNhZ2VJbmZvPiBtX21lZGlhVXNhZ2VJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFV
c2FnZUluZm8+IG1fbWVkaWFVc2FnZUluZm87CiAKICAgICBib29sIG1fZWxlbWVudElzSGlkZGVu
VW50aWxWaXNpYmxlSW5WaWV3cG9ydCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VsZW1lbnRJc0hp
ZGRlbkJlY2F1c2VJdFdhc1JlbW92ZWRGcm9tRE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggZGQ5NDBlYjkzNmRhMDY3NDZiOWZkZTMyOWZiMTRi
Y2I5MTNlZGEzYy4uZDQyZWM4YTkyMDc3YTQwMWJkZWM4N2JhZjVmODJhZGFmMjhkNmIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTExNywxMiArMTE3LDEyIEBA
IERlY2ltYWwgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMs
IGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWCiAgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUo
bW9udGhzKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IE1vbnRoSW5wdXRUeXBlOjpw
YXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29t
cG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERh
dGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ01vbnRoKHNvdXJjZSk7CiB9CiAKLU9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBNb250aElucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25l
bnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IE1v
bnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVl
KSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1vbnRoc1NpbmNlRXBv
Y2godmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4IGQxZTVh
MWFhOGMwNjg3MDFmYjllNTgzMzczYjk1ZmQ3NWU2YTVlYzQuLmM2N2FkNWJiY2U2OWFhZmIzMDIw
ZDJlMGU3M2FiMzliYWU3MTUwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9u
dGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgK
QEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwg
ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmll
dyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxs
aXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25S
ZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKaW5kZXggNGU4ZmMyNmNjNzIxMjE3MWI2YWZlNGVkMDMzYmIwNDhkNGEwNWNkMy4uYzQ5MDY2
Mzg1NDY3MjI2MGVjNTliYTVmY2MxN2QwZjU5MzY3ZjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGVDb250ZXh0V2ViR0woUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUs
IFdlYkdMCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFs
PE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRU
eXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3Jl
ZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmlu
Z0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
Pj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fZGV0YWNoZWQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRp
YyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
cmV0dXJuIG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9tRG91YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVyKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5RnJvbURvdWJsZShkb3VibGUgcXVh
bGl0eU51bWJlcikKIHsKICAgICBpZiAoIShxdWFsaXR5TnVtYmVyID49IDAgJiYgcXVhbGl0eU51
bWJlciA8PSAxKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM2Nyw3ICszNjcs
NyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlv
bnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgogICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oV1RGTW92ZShibG9iKSk7CiB9CiAKLXZvaWQg
T2Zmc2NyZWVuQ2FudmFzOjpkaWREcmF3KGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3Qp
Cit2b2lkIE9mZnNjcmVlbkNhbnZhczo6ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogICAgIHNjaGVkdWxlQ29t
bWl0VG9QbGFjZWhvbGRlckNhbnZhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmgKaW5kZXggNjA3MmQ2NjlmNjVmYTdkOTc0ZTlkY2MzZTFkMDM3OGM1OTk4M2IwZC4uNjE3YWQw
YzEwYTI1OTMzMThhYzM2NmQ1OGQwMjFiNDAxZjAyMjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oCkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBwdWJsaWM6CiAKICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxPZmZzY3Jl
ZW5SZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVu
ZGVyaW5nQ29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFy
Z3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVuZGVyaW5nQ29u
dGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7
CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gdHJhbnNmZXJUb0ltYWdlQml0
bWFwKCk7CiAgICAgdm9pZCBjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyYmLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQgZGlkRHJhdyhjb25zdCBPcHRpb25hbDxG
bG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiYpIGZpbmFsOwogCiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDRmZjUwY2IzOWVkNGYzMzI3ODhkOGQ5NWRh
OTA1MDgzZjE0YTU4ZjguLjQ3NmUzMzY1NDgwOWQxYWZjYjc0ZDQ3ZjAyOGZiZDk5MGZmNGE1YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0zOTcsNyArMzk3LDcg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6dXBkYXRlVGlja01hcmtWYWx1ZXMoKQogICAgIHN0ZDo6
c29ydChtX3RpY2tNYXJrVmFsdWVzLmJlZ2luKCksIG1fdGlja01hcmtWYWx1ZXMuZW5kKCkpOwog
fQogCi1PcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBSYW5n
ZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVl
KQogewogICAgIHVwZGF0ZVRpY2tNYXJrVmFsdWVzKCk7CiAgICAgaWYgKCFtX3RpY2tNYXJrVmFs
dWVzLnNpemUoKSkKQEAgLTQyNCw4ICs0MjQsOCBAQCBPcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlu
cHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQog
ICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RGVjaW1h
bD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV90aWNrTWFya1Zh
bHVlc1ttaWRkbGUgLSAxXSkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4g
Y2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpID8gc3RkOjpt
YWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0TGVmdCA9IG1pZGRsZSA/IHN0ZDo6bWFr
ZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZSAtIDFdKSA6IHN0ZDo6bnVsbG9wdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3Rp
Y2tNYXJrVmFsdWVzLnNpemUoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVz
W21pZGRsZV0pIDogc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjbG9zZXN0TGVmdCkKICAgICAg
ICAgcmV0dXJuIGNsb3Nlc3RSaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApp
bmRleCA1ZjdjYTc4YjAxZDJlNjNiMTliNjhmOTY1MTgzYTM3NzU4ZjNjZjMyLi43M2VkOTRjZmUx
MzEwYWZiMjkxYjBmMWVkNjU3OWIzNGU2NDAzNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAgICAgdm9pZCBkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGZpbmRD
bG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJikgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpIGZp
bmFsOwogCiAgICAgYm9vbCBtX3RpY2tNYXJrVmFsdWVzRGlydHkgeyB0cnVlIH07CiAgICAgVmVj
dG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRU
eXBlLmNwcAppbmRleCA3MDFhYmIwMDBkZGUwODc3Yjc3ZGZiNmU3OWEzNjlkNTVmNzdiOWZlLi45
YjkwNTA1OTBmNWVmNThhZjczOGYyODk5NTM5NmVjNzkyMjY4OWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBTdGVwUmFuZ2UgVGltZUlu
cHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcp
IGNvbnN0CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6
VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHRpbWVTdGVwRGVzY3JpcHRpb24pOwogfQog
Ci1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21w
b25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBT
dHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpm
cm9tUGFyc2luZ1RpbWUoc291cmNlKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFRp
bWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBUaW1lSW5wdXRUeXBlOjpzZXRN
aWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAgIHJl
dHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQodmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAppbmRleCBhM2JlZDcxMWRlZDhlZDJm
NGNjMjU4ZjhmODViNTkyNTFkNjY2ZGVlLi42MWRjNmZmYTZmN2RjZTk0ZDI3NDNkNjcwOTg2ODZk
NDdiN2IxMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtNDYsOCArNDYs
OCBAQCBwcml2YXRlOgogICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBv
bmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25z
dCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhk
b3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChF
dmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRl
VGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCAxZTcxODcxNWRjODA0OWE5MmU2YmRhMjhj
ZDcxMGI4YjU4YjczMjkyLi5iYWUxNGQ0OGM1ODhmNzQ0N2JlNzFiODczYzZjNDRjMjk4NjgyNWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTE2OCwxNiAr
MTY4LDE2IEBAIFN0cmluZyBVUkxEZWNvbXBvc2l0aW9uOjpwb3J0KCkgY29uc3QKIH0KIAogLy8g
T3V0ZXIgb3B0aW9uYWwgaXMgd2hldGhlciB3ZSBjb3VsZCBwYXJzZSBhdCBhbGwuIElubmVyIG9w
dGlvbmFsIGlzICJubyBwb3J0IHNwZWNpZmllZCIuCi1zdGF0aWMgT3B0aW9uYWw8T3B0aW9uYWw8
dWludDE2X3Q+PiBwYXJzZVBvcnQoU3RyaW5nVmlldyBzdHJpbmcsIFN0cmluZ1ZpZXcgcHJvdG9j
b2wpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pj4gcGFyc2VQ
b3J0KFN0cmluZ1ZpZXcgc3RyaW5nLCBTdHJpbmdWaWV3IHByb3RvY29sKQogewogICAgIGF1dG8g
ZGlnaXRzT25seSA9IHN0cmluZy5sZWZ0KGNvdW50QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAgICAg
aWYgKGRpZ2l0c09ubHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2
X3Q+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50
MTZfdD4oZGlnaXRzT25seSk7CiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJv
dG9jb2wpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3RkOjpudWxsb3B0
IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB7IHN0ZDo6bnVsbG9w
dCB9OwogICAgIHJldHVybiB7IHsgKnBvcnQgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFNlYXJjaFBhcmFtcy5jcHAKaW5kZXggMGM4OGEwNWU3ZGI0NDEwZWFjM2QwYzUyZjVkOThkOTI1
NjE3MjJlOS4uM2NmNGY0OGIxOTkyYmY2NTMwYzkxMGQ4MDZmNjQ3Y2U2ODMxN2M3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZv
aWQgVVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCgpCiAgICAgbV9wYWly
cyA9IHNlYXJjaC5zdGFydHNXaXRoKCc/JykgPyBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFdURjo6VVJMUGFyc2Vy
OjpwYXJzZVVSTEVuY29kZWRGb3JtKHNlYXJjaCk7CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5VmFs
dWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgp
CitzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2Vh
cmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCiB7CiAgICAgYXV0byYgcGFpcnMgPSBtX3Rhcmdl
dC0+cGFpcnMoKTsKICAgICBpZiAobV9pbmRleCA+PSBwYWlycy5zaXplKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxTZWFyY2hQYXJhbXMuaAppbmRleCBhYzU2NDZhNTE2NWYxMmYzNjBiM2ZkNDNjYzU3
MGVlZGE0OTMzMmIyLi5hZWE2NDU3NjBlOWJjNTNhZjlmOGY3MjRlMGVlYzlkMjUxMTg4NzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0
IEl0ZXJhdG9yKFVSTFNlYXJjaFBhcmFtcyYpOwotICAgICAgICBPcHRpb25hbDxXVEY6OktleVZh
bHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZjxVUkxTZWFyY2hQYXJhbXM+IG1fdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5jcHAKaW5kZXggYjU1MjAxOWM4MTkzYWQ2N2ZjMDFlMjY5ODEzY2RkN2Ez
OTQwMmM3MS4uZGQ2MmM3OTk1ODU4ZjA2ODkyNTVhYjVkOTAyMDMxMzE2NzQ4NDdlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAgU3RlcFJh
bmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3Rl
cEhhbmRsaW5nKSBjb25zdAogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIFJhbmdlTGlt
aXRhdGlvbnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCB3ZWVrU3RlcERlc2NyaXB0
aW9uKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFdlZWtJbnB1dFR5cGU6OnBhcnNl
VG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPERhdGVDb21wb25lbnRzPiBXZWVrSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVu
dHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29t
cG9uZW50czo6ZnJvbVBhcnNpbmdXZWVrKHNvdXJjZSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBXZWVrSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91
YmxlIHZhbHVlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gV2Vla0lucHV0
VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QK
IHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yV2Vlayh2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IDVk
Y2IxMDEyYjI3NWQ3MDQ5MWFmYzFiNzYwYjZlMmRhNmI4YmExNDguLmRjYzViYzQzZDQwNzg3ZjE1
NzE5Njg3NzZiODhmYWI1OTJjYzU2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5o
CkBAIC00OCw4ICs0OCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRGF0ZUNvbXBvbmVudHNUeXBlIGRhdGVU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRz
PiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBv
bmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9y
bWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCBlNzU4MmFiMzliYjI3ZDNkZmUxNDJjZmE1MjEzY2IwODhj
NzI5ZTFlLi5kNWIwNDkzOGQyZmVmYWU3NGE3NzFkMTNjM2M4MWMxNTRlMjBiNWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTE4MSwxMiArMTgxLDEyIEBAIENhbnZhc0RpcmVjdGlvbiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRvVGV4dERpcmVj
dGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gQ2FudmFzRGly
ZWN0aW9uOjpSdGwgOiBDYW52YXNEaXJlY3Rpb246Okx0cjsKIH0KIAotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
YXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgZHJhd1RleHRJbnRlcm5hbCh0ZXh0
LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0
cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgsIHks
IGZhbHNlLCBtYXhXaWR0aCk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgYXV0byBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSoKICAgICByZXR1
cm4gJnN0YXRlKCkuZm9udDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRy
YXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29s
IGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
YXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKS5kb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA0OWZlZTJlOTEzZjcwMmUxZmJjN2Fj
MDdjMWQ3OTkwNzU2OWVlNTcwLi45MzA3NGVmOGUwZTQ0MGEyZmE2NDZhZTE0MjcwZmIyYmUwMDdk
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNE
aXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
c3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQp
OworICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9p
ZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpv
cHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0
cmljcz4gbWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogcHJpdmF0ZToKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0
eWxlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4g
bWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25h
bDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdm9pZCBkcmF3Rm9jdXNJ
Zk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmLCBFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKaW5kZXggZDc5MGM2MmJlZGIyY2E4ZmQ4MDk0ZDk2YTBhZDE3MjI0YmQ3YzUyMi4uYzdl
MWNiMmNiNWMwZDE4YWE4MWI1NmJjMTczNTM4ZTIzMmFjMGM3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OnJlc3RvcmUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYXRoLnRyYW5zZm9ybShzdGF0
ZSgpLnRyYW5zZm9ybSk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBpZiAo
T3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52
ZXJzZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9
IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKSkKICAgICAgICAgbV9wYXRoLnRyYW5zZm9ybShp
bnZlcnNlLnZhbHVlKCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0
KCk7CiAgICAgaWYgKCFjKQpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0oKQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmhh
c0ludmVydGlibGVUcmFuc2Zvcm0gPSB0cnVlOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFs
PGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U3Ry
b2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEp
CiB7CiAgICAgaWYgKGFscGhhKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKCphbHBoYSkpCkBA
IC05MjAsNyArOTIwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRT
dHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG8KICAgICBzZXRTdHJva2VT
dHlsZShDYW52YXNTdHlsZShjb2xvcikpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9h
dD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEZpbGxDb2xv
cihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAg
ICBpZiAoYWxwaGEpIHsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oKmFscGhhKSkKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlUmVj
dChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvCiAgICAgfQogfQogCi12b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBPcHRpb25hbDxm
bG9hdD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRv
dyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNv
bG9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEg
JiYgc3RkOjppc25hbigqYWxwaGEpKQogICAgICAgICByZXR1cm47CkBAIC0yMDYxLDcgKzIwNjEs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52
YXMoKQogICAgIGRpZERyYXcoYmFja2luZ1N0b3JlQm91bmRzKCksIERpZERyYXdPcHRpb246OkFw
cGx5Q2xpcCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJh
dyhPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QsIE9wdGlvblNldDxEaWREcmF3T3B0aW9uPiBvcHRp
b25zKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25TZXQ8RGlkRHJhd09wdGlvbj4gb3B0aW9ucykK
IHsKICAgICBpZiAoIWRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNjks
NyArMjE2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VECiAgICAgcmV0dXJuIG5ld0ltYWdl
RGF0YTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3cs
IGludCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0
CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRl
eFNpemVFcnJvciB9OwpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQg
c3cKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50
IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdz
KSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAgIGlm
ICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3Ig
fTsKQEAgLTIzNjAsNyArMjM2MCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6c2V0RGlyZWN0aW9uKERpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgbW9kaWZpYWJsZVN0YXRl
KCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNhbkRyYXdUZXh0KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9u
YWw8ZmxvYXQ+IG1heFdpZHRoKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpj
YW5EcmF3VGV4dChmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoKQogewogICAgIGlmICghZm9udFByb3h5KCktPnJlYWxpemVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI0MTcsNyArMjQxNyw3IEBAIFN0cmluZyBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpub3JtYWxpemVTcGFjZXMoY29uc3QgU3RyaW5nJiB0ZXh0KQog
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoY2hhclZlY3RvcikpOwogfQogCi12b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgp
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBtYXhXaWR0aCkKIHsKICAgICBpZiAoIWNhbkRyYXdUZXh0KHgsIHksIGZpbGwsIG1heFdpZHRo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQyOCw3ICsyNDI4LDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgs
IGZsb2F0IHkKICAgICBkcmF3VGV4dFVuY2hlY2tlZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBtYXhX
aWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRV
bmNoZWNrZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBm
aWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGZsb2F0
IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7
CiAgICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgZm9udFByb3h5ID0g
KnRoaXMtPmZvbnRQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDBjOWVkMWNlOTVhNzg2
YmQ4YmExOWRiMDI5Zjg5M2QzMWE0MmRjOTAuLjU1M2Q4ZTlmN2MzYTgwYjZlZWE2Y2QxNzY1ZTdh
NTgwNGFkNzU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTE0MSwxMSArMTQxLDExIEBAIHB1
YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0
JiYpOwogICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgc2V0U3Ryb2tlQ29s
b3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFN0cm9r
ZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0
U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKLSAgICB2
b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxw
aGEgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYg
Y29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2
b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7
CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaWxsUmVjdChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAgICB2b2lkIHN0cm9rZVJl
Y3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAKLSAgICB2
b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25z
dCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBh
bHBoYSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKQEAg
LTE5NCw4ICsxOTQsOCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlJiYsIGNvbnN0IFN0cmluZyYg
cmVwZXRpdGlvbik7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlSW1h
Z2VEYXRhKEltYWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+
PiBjcmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4pIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBnZXRJ
bWFnZURhdGEoaW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4pIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0
YVNldHRpbmdzPikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGdldElt
YWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEm
LCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50
IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQg
ZGlydHlIZWlnaHQpOwogCkBAIC0zMDIsOSArMzAyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rh
dGljIFN0cmluZyBub3JtYWxpemVTcGFjZXMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGRy
YXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBP
cHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwotICAgIGJvb2wgY2FuRHJh
d1RleHQoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lk
dGggPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4
dFJ1biYsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdp
ZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhX
aWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgYm9vbCBjYW5EcmF3VGV4dChmbG9hdCB4LCBmbG9h
dCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4
LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3Rk
OjpudWxsb3B0KTsKIAogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChj
b25zdCBUZXh0UnVuJik7CiAgICAgUmVmPFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCk7CkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgQXBwbHlTaGFkb3cgPSAxIDw8IDEsCiAgICAgICAgIEFwcGx5Q2xpcCA9IDEgPDwgMiwKICAg
ICB9OwotICAgIHZvaWQgZGlkRHJhdyhPcHRpb25hbDxGbG9hdFJlY3Q+LCBPcHRpb25TZXQ8RGlk
RHJhd09wdGlvbj4gPSB7IERpZERyYXdPcHRpb246OkFwcGx5VHJhbnNmb3JtLCBEaWREcmF3T3B0
aW9uOjpBcHBseVNoYWRvdywgRGlkRHJhd09wdGlvbjo6QXBwbHlDbGlwIH0pOworICAgIHZvaWQg
ZGlkRHJhdyhzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4sIE9wdGlvblNldDxEaWREcmF3T3B0aW9u
PiA9IHsgRGlkRHJhd09wdGlvbjo6QXBwbHlUcmFuc2Zvcm0sIERpZERyYXdPcHRpb246OkFwcGx5
U2hhZG93LCBEaWREcmF3T3B0aW9uOjpBcHBseUNsaXAgfSk7CiAgICAgdm9pZCBkaWREcmF3RW50
aXJlQ2FudmFzKCk7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCAw
YWNmODk5ODU0M2EwMTBhZTA4MGRkMjNkZWUzMjVhN2FjM2VlNDkwLi5hMjgzNjNmOTJiODE3NWZk
YTlkYWQ3ODdjYWU4OTVlODkxN2VjNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1N0eWxlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SW52YWxpZD4obV9zdHls
ZSk7IH0KICAgICBib29sIGlzQ3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxDdXJyZW50Q29sb3I+KG1fc3R5bGUpOyB9Ci0gICAgT3B0aW9uYWw8Zmxv
YXQ+IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDdXJyZW50Q29sb3I+
KG1fc3R5bGUpLm92ZXJyaWRlQWxwaGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVy
cmlkZUFscGhhKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8Q3VycmVudENvbG9yPihtX3N0eWxl
KS5vdmVycmlkZUFscGhhOyB9CiAKICAgICBTdHJpbmcgY29sb3IoKSBjb25zdDsKICAgICBSZWZQ
dHI8Q2FudmFzR3JhZGllbnQ+IGNhbnZhc0dyYWRpZW50KCkgY29uc3Q7CkBAIC02Nyw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEludmFsaWQgeyB9OwogCiAgICAgc3RydWN0IEN1cnJl
bnRDb2xvciB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhOwogICAgIH07CiAKICAgICBDYW52
YXNTdHlsZShDdXJyZW50Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggYmFhZTMyYjIwNDlkN2Y4ZDUzZDYzZmFmN2UwYWQ2MTMwY2Y1NjNiNi4uMTRkYTAwOWE4NDI2
ZWQ5NGQwMmE5MTBjMzI2OTAxMTAzNTdkZGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBhdXRvIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Zm9udFByb3h5KCkgLT4gY29uc3QgRm9udFByb3h5KiB7CiAgICAgcmV0dXJu
ICZzdGF0ZSgpLmZvbnQ7CiB9CiAKLXZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0KHRleHQsIHgsIHksIHRy
dWUsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRp
b25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0KHRleHQsIHgsIHks
IGZhbHNlLCBtYXhXaWR0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDQx
M2RlOTIyOTk3OGU4ZjZlYWUxOGQ5MTk2MGZiYjY4YzQyMGU2NGEuLjhkODRmMWQ4NjQ4ZGMyNjNi
NjJkMDc0NzNlYTc4NDE0ZDc2NmE0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBA
IC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcm
KTsKICAgICBDYW52YXNEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBmaWxs
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0
PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZs
b2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAg
ICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29s
b3JTcGFjZS5jcHAKaW5kZXggNGIzYTQxOTY4ZTM1NDI5Njk2NjY4MDEyMDM5ZjFmZTcxYWY1MDEx
My4uYTU1YTBjYWQwMzE4NDYzYzVkNTZjZDEzYmM1YjlhZDgzZDMxNTBiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICByZXR1cm4gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNl
PiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSkKK3N0ZDo6b3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewog
ICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAg
ICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAppbmRleCAyYTUzYjA1MzJk
NDJhM2MyOWYyMzc3YjA5YjdiYjAwMDFkZjk3YzQ2Li5mODFlZGYwNjdjMjhmMjdkNmU3NDRkMWE2
OGY2ZDA3OWU2YjYzYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
cmVkZWZpbmVkQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZp
bmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENv
bG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJik7CitzdGQ6Om9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNDQ3YzEyMGFkMTQyOGU2MzljYmMyNTU4ZmM2M2ZkOWE4Y2UyMWVjNS4uMmIxYjBmMWVl
Y2I1MTUzZWViNTI5YmM3OTQ5Y2FhM2EzYTg1NzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEwOTQsNyAr
MTA5NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtCiAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+IGRhdGEpCitF
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4g
ZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgV1RGTW92ZShz
cmNEYXRhKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBP
cHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBkYXRhKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYgZGF0YSkKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtMjUxNiw3ICsyNTE2LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGkKICAgICB9CiB9CiAK
LU9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVu
aWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5hbWVzKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JT
aGFkZXIoImdldFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMo
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZwogICAgIGF1
dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAg
ICBBU1NFUlQoYnVmZmVyKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtYXhJbmRleCA9IGVs
ZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1h
eEluZGV4KHR5cGUpOwogICAgIGlmICghbWF4SW5kZXgpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0
aGUgbWF4aW11bSBpbmRleCBpbiB0aGUgZW50aXJlIGJ1ZmZlciBmb3IgdGhlIGdpdmVuIHR5cGUg
b2YgaW5kZXguCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzQzNCw3ICszNDM0LDcgQEAg
Ym9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQ0dMZW4KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVHlwZWRBcnJheVR5cGU+Ci1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVz
LCBHQ0dMdWludCBzcmNPZmZzZXQpCitzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+
JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkKIHsKICAgICBDaGVja2VkPEdDR0xzaXplaSwg
UmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHZhbHVlcy5sZW5ndGgoKSk7CiAgICAgY2hlY2tl
ZFNpemUgLT0gc3JjT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgwZTExZGJmNTA3YTJmY2VkYmNjZTRjODIx
MmMxNjE0Y2Y5YmM1ZGQuLmEyYjAyZjNmMmQ3MDEyMGNjZDY3MzAwMjdlZTYzMzBkMTlkNmIzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgLy8gTXVzdCBvdmVycmlk
ZSB0aGUgV2ViR0wgMS4wIHNpZ25hdHVyZXMgdG8gYWRkIGV4dHJhIHZhbGlkYXRpb24uCiAgICAg
dm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPikg
b3ZlcnJpZGU7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+KSBvdmVycmlk
ZTsKICAgICAvLyBXZWJHTCAyLjAgZW50cnkgcG9pbnRzOgogICAgIHZvaWQgdGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291
cmNlJiYpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNdXN0IG92ZXJyaWRl
IHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIHRvIGFkZCBleHRyYSB2YWxpZGF0aW9uLgogICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291
cmNlPiYmKSBvdmVycmlkZTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJ
bWFnZVNvdXJjZT4mJikgb3ZlcnJpZGU7CiAgICAgLy8gV2ViR0wgMi4wIGVudHJ5IHBvaW50czoK
ICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJv
T2Zmc2V0KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBX
ZWJHTEJ1ZmZlciopOwogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiwgR0NHTGludDY0IG9mZnNldCwgR0NHTGludDY0
IHNpemUpOwogICAgIFdlYkdMQW55IGdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEdDR0x1aW50Pj4gZ2V0VW5p
Zm9ybUluZGljZXMoV2ViR0xQcm9ncmFtJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1O
YW1lcyk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBnZXRVbmlmb3JtSW5k
aWNlcyhXZWJHTFByb2dyYW0mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKTsK
ICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mLCBjb25zdCBWZWN0
b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0x1
aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFdlYkdMUHJvZ3JhbSYsIGNvbnN0IFN0cmluZyYgdW5p
Zm9ybUJsb2NrTmFtZSk7CiAgICAgV2ViR0xBbnkgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1l
dGVyKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRleEFy
cmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIHZlcnRleEFycmF5KTsKICAgICAKICAgICBXZWJH
TEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIE9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpIGZp
bmFsOwogICAgIFdlYkdMQW55IGdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAK
ICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIGluIG9yZGVyIHRv
IGFkZCBleHRyYSB2YWxpZGF0aW9uLgpAQCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dM
ZW51bSBtb2RlKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGNhcCkgZmluYWw7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+Ci0gICAgT3B0aW9uYWw8R0NHTFNwYW48Y29u
c3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dM
ZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFycmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVp
bnQgc3JjT2Zmc2V0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxp
ZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVy
LCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNl
dCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVmZmVyVGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkg
ZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0RnJhbWVidWZmZXJCaW5kaW5nKEdDR0xl
bnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciogZ2V0UmVhZEZyYW1lYnVm
ZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCmluZGV4IDNlMzRhMThmN2Y2ZjY5NGU0Y2FmZWU1ZTExNTM3ZmY1NDA1NmFlMGQuLjNl
MzJmMTUxNjY1Y2JmYTg0MGM1ZjVkMjMxZTg5Yjg1ZTZkMDQxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBHQ0dMc2l6
ZWlwdHIgV2ViR0xCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2J5dGVM
ZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4
SW5kZXgoR0NHTGVudW0gdHlwZSkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFdlYkdMQnVmZmVy
OjpnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKQogewogICAgIGZvciAoYXV0byYgY2Fj
aGUgOiBtX21heEluZGV4Q2FjaGUpIHsKICAgICAgICAgaWYgKGNhY2hlLnR5cGUgPT0gdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDFlNmJhNzg2Mzlm
ZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQuLjM0OTBhMWRkM2Q2ODI0ODUzZmMxNGViMjVj
ZmIxM2U5YjlkYjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5
QnVmZmVyOyB9CiAKICAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2
ZW4gdHlwZSBpZiBvbmUgaGFzIGJlZW4gc2V0LgotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBnZXRD
YWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKTsKICAgICAvLyBTZXRzIHRoZSBjYWNo
ZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4KICAgICB2b2lkIHNldENhY2hlZE1heElu
ZGV4KEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZmE2NzU4
M2RlM2EyMDZiMTA4Y2E0MDI3NjlhN2JjZTU2ZDJkMGI1ZC4uNGE1Mjc2NjAzZmI5ZTE2ZmYwYjJi
ZDlhY2NiNDUzNjgwZDVhNjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgV2ViR0xF
eHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBv
cnRlZEV4dGVuc2lvbnMoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MDMsNyArNDAzLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1
bnNpZ24KICAgICBhdXRvIGJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5
QnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1heEluZGV4ID0gZWxlbWVudEFycmF5QnVmZmVy
LT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKICAgICBpZiAoIW1heEluZGV4KSB7CiAgICAgICAg
IC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIgZm9yIHRo
ZSBnaXZlbiB0eXBlIG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
YTcxMGEwZjFlNjI5ODJlYjIwYzA3OTU4OWZlNjU0MmZlZWVjZmZmZS4uMDFkZTczODdhZTUxODM5
ODliNmEzZWI3ODVkMmIxNjdkM2I4MWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAg
IE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cygpIGZpbmFsOwogCiAgICAgV2ViR0xBbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDFjYWYwNDZhNTEwNTRmOTcwOTQwM2NlNmVj
YzZhM2QzNWRmZGI5MDYuLmNkZTdlODBjMmQ2OGI5OGE4NGNmM2MxYTNmZDhhMTdkNzgwNDhkNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMjM2LDcgKzEyMzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICBtX2Nv
bnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCpiYXNlLmJ1ZmZlcigpKTsKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhl
bEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBz
aXplLCBHQ0dMCiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRh
dGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZm
ZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYm
IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4NjYsNyArMjg2Niw3IEBAIFJlZlB0cjxXZWJHTEFj
dGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2Vi
R0xQcm9ncmFtCiAgICAgcmV0dXJuIFdlYkdMQWN0aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwg
aW5mby50eXBlLCBpbmZvLnNpemUpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8UmVmUHRyPFdlYkdM
U2hhZGVyPj4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhX
ZWJHTFByb2dyYW0mIHByb2dyYW0pCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViR0xT
aGFkZXI+Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdl
YkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JT
aGFkZXIoImdldEF0dGFjaGVkU2hhZGVycyIsICZwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTI5MzgsNyArMjkzOCw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSk7CiB9CiAKLU9wdGlvbmFs
PFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldENv
bnRleHRBdHRyaWJ1dGVzKCkKK3N0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC00Mjc1LDcgKzQyNzUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAgIC8v
IEFOR0xFIHdpbGwgdmFsaWRhdGUgdGhlIHJlYWRiYWNrIGZyb20gdGhlIGZyYW1lYnVmZmVyIGFj
Y29yZGluZwogICAgIC8vIHRvIFdlYkdMJ3MgcmVzdHJpY3Rpb25zLiBBdCB0aGlzIGxldmVsLCBq
dXN0IHZhbGlkYXRlIHRoZSB0eXBlCiAgICAgLy8gb2YgdGhlIHJlYWRiYWNrIGFnYWluc3QgdGhl
IHR5cGVkIGFycmF5J3MgdHlwZS4KLSAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKCJy
ZWFkUGl4ZWxzIiwgdHlwZSwgT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLmdl
dFR5cGUoKSkpKQorICAgIGlmICghdmFsaWRhdGVBcnJheUJ1ZmZlclR5cGUoInJlYWRQaXhlbHMi
LCB0eXBlLCBzdGQ6Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy5nZXRUeXBl
KCkpKSkKICAgICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCA9IDA7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQwogICAg
IHRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rpb25JRDo6VGV4U3Vi
SW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0
eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCBXVEZNb3ZlKHBpeGVscyksIE51bGxOb3RBbGxvd2Vk
LCAwKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9w
dGlvbmFsPFRleEltYWdlU291cmNlPiYmIHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmIHNvdXJj
ZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtNTI0OCw3ICs1MjQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0wKICAgICBy
ZXR1cm4gdGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFn
ZTJELCB0YXJnZXQsIGxldmVsLCAwLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQs
IDAsIHNlbnRpbmVsRW1wdHlSZWN0KCksIDEsIDAsIFdURk1vdmUoKnNvdXJjZSkpOwogfQogCi1i
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdHlwZSwgT3B0aW9uYWw8SlNDOjpUeXBl
ZEFycmF5VHlwZT4gYXJyYXlUeXBlKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVt
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4gYXJyYXlUeXBlKQogewog
I2RlZmluZSBUWVBFX1ZBTElEQVRJT05fQ0FTRShhcnJheVR5cGVNYWNybykgaWYgKGFycmF5VHlw
ZSAmJiBhcnJheVR5cGUudmFsdWUoKSAhPSBKU0M6OmFycmF5VHlwZU1hY3JvKSB7IFwKICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJB
VElPTiwgZnVuY3Rpb25OYW1lLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCAiICNhcnJheVR5cGVNYWNy
byk7IFwKQEAgLTUzMTQsNyArNTMxNCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFRlCiAKICAg
ICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1hdChmdW5jdGlvbk5hbWUsIGZv
cm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZm
ZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gT3B0aW9uYWw8SlNDOjpUeXBlZEFy
cmF5VHlwZT4ocGl4ZWxzLT5nZXRUeXBlKCkpIDogc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoIXZh
bGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gc3RkOjpv
cHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPihwaXhlbHMtPmdldFR5cGUoKSkgOiBzdGQ6Om51
bGxvcHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVz
UmVxdWlyZWQsIHNraXBCeXRlczsKQEAgLTU3MjQsNyArNTcyNCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHCiAjZW5kaWYKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9w
dGlvbmFsPFRleEltYWdlU291cmNlPiBzb3VyY2UpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4gc291cmNlKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC03MTcwLDcg
KzcxNzAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ2FwYWJp
bGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDRwogCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+Ci1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0
VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCitzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0
IFQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxUeXBl
ZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAgICBpZiAoIXZhbGlkYXRlVW5p
Zm9ybUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtNzIwMiwxMyArNzIwMiwxMyBAQCBPcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYQogfQogCiB0
ZW1wbGF0ZQotT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBV
aW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFy
cmF5LCB1aW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworc3RkOjpvcHRpb25hbDxHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTHVpbnQsIFVpbnQzMkFycmF5Pihjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VWludDMyQXJyYXksIHVpbnQzMl90PiYgdmFsdWVzLCBH
Q0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCk7CiAKIHRlbXBsYXRlCi1PcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
czxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExp
c3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworc3RkOjpvcHRpb25h
bDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVl
cywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpOwogCiB0ZW1wbGF0ZQotT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKK3N0
ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0
MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJh
eSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKIAogV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHVzYWdlKQogewpAQCAtNzQx
NSw3ICs3NDE1LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVNp
bXVsYXRlZFZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGUKICAgICByZXR1cm4gIWJ1ZmZl
ckRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSAmJiBidWZmZXJEYXRhU2l6ZS51bnNhZmVHZXQoKSA+
IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVs
YXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZXgpCitzdGQ6Om9wdGlvbmFsPGJvb2w+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWlu
dCBudW1WZXJ0ZXgpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2RiNDkxZTZkODRmNTZmYzA4MjYyMTBhM2UzZDk2
MDIyYzllMWNlNS4uOTJjMTU2MmRlMjQ1OWJjZDljYTA1ZjE3NzMwYjhlYjJkZTYxYjIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEJ1ZmZl
ckRhdGFTb3VyY2UgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEFycmF5QnVmZmVyPiwgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4+OwogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBzaXplLCBHQ0dMZW51bSB1c2FnZSk7Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNhZ2Up
OworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8QnVm
ZmVyRGF0YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNhZ2UpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0
YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEJ1ZmZlckRhdGFTb3VyY2UmJik7
CiAKICAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCk7
CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2ViR0xBY3RpdmVJ
bmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgaW5kZXgpOwogICAg
IFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtJiwg
R0NHTHVpbnQgaW5kZXgpOwotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+
Pj4gZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSYpOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+PiBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9n
cmFtJik7CiAgICAgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogICAgIFdlYkdMQW55IGdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKTsKLSAgICBPcHRpb25hbDxXZWJHTENvbnRleHRBdHRy
aWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViR0xD
b250ZXh0QXR0cmlidXRlcz4gZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBn
ZXRFcnJvcigpOwogICAgIHZpcnR1YWwgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIG5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdMQW55IGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHBuYW1lKSA9IDA7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyJik7CiAgICAgUmVmUHRyPFdlYkdMU2hh
ZGVyUHJlY2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hh
ZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlwZSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclNv
dXJjZShXZWJHTFNoYWRlciYpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+
IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgPSAwOwogICAgIHZpcnR1
YWwgV2ViR0xBbnkgZ2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUpOwogICAgIFdlYkdMQW55IGdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24mKTsKICAgICBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdldFVu
aWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25zdCBTdHJpbmcmKTsKQEAgLTI4NCwxNCAr
Mjg0LDE0IEBAIHB1YmxpYzoKICAgICB1c2luZyBUZXhJbWFnZVNvdXJjZSA9IFdURjo6VmFyaWFu
dDxSZWZQdHI8SW1hZ2VCaXRtYXA+LCBSZWZQdHI8SW1hZ2VEYXRhPiwgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCi0gICAgdmly
dHVhbCBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+KTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6
Om9wdGlvbmFsPFRleEltYWdlU291cmNlPik7CiAKICAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKTsKICAgICB2b2lk
IHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSk7CiAKICAgICAvLyBUaGVzZSBtdXN0IGJlIHZpcnR1YWwgc28gbW9yZSB2YWxpZGF0aW9u
IGNhbiBiZSBhZGRlZCBpbiBXZWJHTCAyLjAuCiAgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpOwotICAgIHZp
cnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsKKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsK
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBlZEFycmF5LCBjbGFzcyBEYXRhVHlwZT4KICAgICBj
bGFzcyBUeXBlZExpc3QgewpAQCAtMzkxLDcgKzM5MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiAKICAgICB2
b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlQ29udGV4dE9iamVjdChXZWJHTENvbnRleHRPYmplY3QmKTsKQEAgLTEwMjksMTIgKzEwMjks
MTIgQEAgcHJvdGVjdGVkOgogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1
dCBwYXJhbWV0ZXJzIGZvciB1bmlmb3JtIGZ1bmN0aW9ucy4KICAgICBib29sIHZhbGlkYXRlVW5p
Zm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RU
eXBlPgotICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywg
R0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVp
bnQgc3JjTGVuZ3RoID0gMCkKKyAgICBzdGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0
VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCkKICAgICB7CiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24s
IGZhbHNlLCB2YWx1ZXMsIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwog
ICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgot
ICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBl
LCBUPiYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCA9IDAs
IEdDR0x1aW50IHNyY0xlbmd0aCA9IDApOworICAgIHN0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29u
c3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCk7
CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgcGFyYW1ldGVycyBmb3IgYnVm
ZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRhcmdl
dCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAg
cHJvdGVjdGVkOgogI2lmICFVU0UoQU5HTEUpCiAgICAgLy8gSGVscGVycyBmb3Igc2ltdWxhdGlu
ZyB2ZXJ0ZXhBdHRyaWIwLgogICAgIHZvaWQgaW5pdFZlcnRleEF0dHJpYjAoKTsKLSAgICBPcHRp
b25hbDxib29sPiBzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydGV4KTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1W
ZXJ0ZXgpOwogICAgIGJvb2wgdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50
IG51bVZlcnRleCk7CiAgICAgdm9pZCByZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIwU2lt
dWxhdGlvbigpOwogI2VuZGlmCkBAIC0xMTEzLDEwICsxMTEzLDEwIEBAIHByb3RlY3RlZDoKICAg
ICBPZmZzY3JlZW5DYW52YXMqIG9mZnNjcmVlbkNhbnZhcygpOwogI2VuZGlmCiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIE9wdGlvbmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0aXBs
eShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBU
IGFkZCwgVCBtdWx0aXBseSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVuc2lnbmVkIGdl
dE1heEluZGV4KGNvbnN0IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBlbGVtZW50QXJyYXlCdWZm
ZXIsIEdDR0xpbnRwdHIgdW9mZnNldCwgR0NHTHNpemVpIG4pOwogCi0gICAgYm9vbCB2YWxpZGF0
ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHR5cGUs
IE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKKyAgICBib29sIHZhbGlkYXRlQXJyYXlC
dWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdHlwZSwgc3RkOjpv
cHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZVRhc2tUb0Rpc3BhdGNoQ29udGV4dExvc3RFdmVudCgpOwpAQCAtMTEzOCw3ICsxMTM4LDcg
QEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIE9wdGlvbmFs
PFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZh
bHVlLCBUIGFkZCwgVCBtdWx0aXBseSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwg
VCBtdWx0aXBseSkKIHsKICAgICBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUmVz
dWx0ID0gQ2hlY2tlZDxUPih2YWx1ZSk7CiAgICAgY2hlY2tlZFJlc3VsdCArPSBDaGVja2VkPFQ+
KGFkZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAKaW5kZXggYmNmZjhhN2VjYmMxMDI5OWQ0ZjkxZDQ3MDU1NjAzMzRhYmY4YTUz
Mi4uNDk4MGY0NWQ3NjcyMmQ0ZDFkMzNkYTQ5MGJiM2I4MWFiMDNkNjY4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAt
NzIyLDcgKzcyMiw3IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFja0l0CiAgICAgcmV0dXJuIEhUTUxT
dGFja0l0ZW06OmNyZWF0ZShjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9rZW4pLCBXVEZNb3ZlKGZh
a2VUb2tlbiksIGl0ZW0ubmFtZXNwYWNlVVJJKCkpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4g
SFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpp
bmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
YWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTczMiw3ICs3MzIsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0
cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgYwogICAg
ICAgICBjb25zdCBhdXRvJiBlbnRyeSA9IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmF0KGlu
ZGV4KTsKICAgICAgICAgaWYgKGVudHJ5LmlzTWFya2VyKCkgfHwgbV9vcGVuRWxlbWVudHMuY29u
dGFpbnMoZW50cnkuZWxlbWVudCgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RVbm9w
ZW5FbGVtZW50SW5kZXggPSBpbmRleCArIDE7Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RVbm9w
ZW5FbGVtZW50SW5kZXggPCBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5zaXplKCkgPyBmaXJz
dFVub3BlbkVsZW1lbnRJbmRleCA6IE9wdGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOwor
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3Jt
YXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
aW5kZXgpOwogCkBAIC03NDEsNyArNzQxLDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGMKIAog
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMoKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFVub3BlbkVsZW1lbnRJ
bmRleCA9IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCk7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPSBpbmRleE9mRmlyc3RV
bm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpOwogICAgIGlmICghZmlyc3RVbm9wZW5FbGVtZW50SW5k
ZXgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggYzA4ZDY2N2Y3YzgxMmNhM2JlYmJkYTNlOTA4
OTY4MTE3NWZhZDA4YS4uNTczMWZiMDVhMjRjZmNjYjJiNDg0NTQ0MzEyYWNkZDhiMzViYjk5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRm9zdGVyUGFy
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBmb3N0ZXJQYXJlbnQoUmVmPE5vZGU+JiYpOwogCi0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXhPZkZpcnN0VW5vcGVuRm9y
bWF0dGluZ0VsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHJlY29uc3RydWN0VGhlQWN0aXZlRm9y
bWF0dGluZ0VsZW1lbnRzKCk7CiAKICAgICB2b2lkIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5k
ZXggYzkxNzJjMGE0ZjIxMjRmOWYxYzhjMWRhYzAwNWI2M2ZmN2M1MTE1OS4uYzQzYjIxOTU2MGRj
YmU1YjRiMjFjOTlmNGJhYmNmOTZiYzkxMGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBFeHBlY3Rl
ZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihTdHJpbmdWaQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LXN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50
ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUq
IGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2
ZUludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hh
cmFjdGVyVHlwZSogZW5kKQogewogICAgIC8vIEEgc3RyaW5nIGlzIGEgdmFsaWQgbm9uLW5lZ2F0
aXZlIGludGVnZXIgaWYgaXQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgQVNDSUkgZGlnaXRzLgog
ICAgIGZvciAoYXV0byogYyA9IHBvc2l0aW9uOyBjIDwgZW5kOyArK2MpIHsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cAogfQogCiAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRpdmUtaW50ZWdlcgotT3B0aW9uYWw8aW50PiBw
YXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpv
cHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcg
aW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhU
TUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRp
b24sIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFs
aWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBv
c2l0aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAt
MjYyLDExICsyNjIsMTEgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxG
bG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGUKIAogICAgIHNpemVfdCBw
YXJzZWRMZW5ndGggPSAwOwogICAgIGRvdWJsZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlv
biwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgpOwotICAgIHJldHVybiBwYXJzZWRMZW5ndGggPT0gbGVu
Z3RoICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSA/IG51bWJlciA6IE9wdGlvbmFsPGRvdWJsZT4o
KTsKKyAgICByZXR1cm4gcGFyc2VkTGVuZ3RoID09IGxlbmd0aCAmJiBzdGQ6OmlzZmluaXRlKG51
bWJlcikgPyBudW1iZXIgOiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4oKTsKIH0KIAogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1PcHRp
b25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3
IGlucHV0KQorc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2lu
dE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggNTM4NWM5NjUyNjE3NjkyZGY2NjJjYjgxZjVmZTg4
MTkxYjljZTE2YS4uYWRmMThjMTRkZmM1NDBmNzc1NjcyMmU0ZDBkNzMxYmEwNzk1MTIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtNjgs
MTAgKzY4LDEwIEBAIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPGludCwgSFRNTEludGVnZXJQYXJz
aW5nRXJyb3I+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmllCiBXRUJDT1JFX0VYUE9SVCBFeHBl
Y3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jdmFsaWQtbm9uLW5lZ2F0aXZlLWludGVnZXIKLU9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhU
TUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPGludD4gcGFy
c2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWZsb2F0aW5nLXBvaW50LW51bWJlcgotT3B0aW9u
YWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyk7
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVy
KFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLWZsb2F0aW5nLXBvaW50LW51
bWJlci12YWx1ZXMKIFZlY3Rvcjxkb3VibGU+IHBhcnNlSFRNTExpc3RPZk9mRmxvYXRpbmdQb2lu
dE51bWJlclZhbHVlcyhTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGI3MWYxYjRlNGIwMzNmMjZhMmIzOTcx
YmQ4ZDhjMTc0ZWMzYjE0YTIuLjk0ODE5ZWNlZTllNzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUy
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2No
YXJzZXQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJlc291
cmNlVHlwZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4g
cmVzb3VyY2VUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90YWdJZCkgewog
ICAgICAgICBjYXNlIFRhZ0lkOjpTY3JpcHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmluZGV4IGRlZGQzYmZhNDFkZTU4MDBmMDhmNDlkOWRl
OTExNzNmMGJmZjM2OWMuLjYwNjIwZjU2YzRlYjhmMDRiNDNkZjJlMTUxOGE0ZjZmNmJkOTc5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3Bw
CkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBzdGF0aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZlY3Rv
cjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAgICBp
ZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3gnKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0Rl
bnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBk
ZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGRlc2NyaXB0b3IpOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRlbnNpdHkgPSBwYXJzZVZhbGlkSFRN
TEZsb2F0aW5nUG9pbnROdW1iZXIoZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIWRlbnNp
dHkgfHwgZGVuc2l0eS52YWx1ZSgpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICByZXN1bHQuc2V0RGVuc2l0eShkZW5zaXR5LnZhbHVlKCkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGRlc2NyaXB0b3JDaGFyID09ICd3JykgewogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8aW50PiByZXNvdXJjZVdpZHRoID0g
cGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzb3VyY2VXaWR0aCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZVdpZHRo
IHx8IHJlc291cmNlV2lkdGgudmFsdWUoKSA8PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIHJlc3VsdC5zZXRSZXNvdXJjZVdpZHRoKHJlc291cmNlV2lkdGgu
dmFsdWUoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXNjcmlwdG9y
cyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IKICAg
ICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUgJ2gnIGRlc2NyaXB0b3IgaXMgbm90IHVzZWQu
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8
aW50PiByZXNvdXJjZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRl
c2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHJlc291cmNlSGVpZ2h0
ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CiAgICAgICAg
ICAgICBpZiAoIXJlc291cmNlSGVpZ2h0IHx8IHJlc291cmNlSGVpZ2h0LnZhbHVlKCkgPD0gMCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0UmVz
b3VyY2VIZWlnaHQocmVzb3VyY2VIZWlnaHQudmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggZWRkMGMxODE5
MDlhMWQ2YzgzZDE3MjE0YWYzODVhYzFkYjEyYTI0OS4uYzM2Mzc4MmYwNGY1ZmZiMmM5Y2JlNTc5
ZjEzNjdlNWQ0ZDE5NGJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIERhdGVUaW1l
RmllbGRFbGVtZW50Ojppbml0aWFsaXplKGNvbnN0IEF0b21TdHJpbmcmIHBzZXVkbykKICAgICBz
ZXRQc2V1ZG8ocHNldWRvKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRGF0
ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1lRmllbGRFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2
ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQu
aAppbmRleCBlYmQwYTc5MTc2YWViOTFkODMxNTZkMTlmMmYzMmM3YjlkODZhNGZmLi4zNjM4MWY5
NGMxNjI4NjQwZmFmODA2Mzc1MzgxZDFhYTU2MGE1MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoRXZlbnQmKTsKIAog
cHJpdmF0ZToKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBmaW5hbDsKIAogICAgIGJvb2wg
c3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA1NzUyZTc5NzQ5ZGJjYzAx
ZWI3NGIzZmI4MzI2MzdlMmViMmMwNzg0Li4yOTgwYTEzMzczYzk2NmEyZGU5ZjkzNDBmZjZhZmQ4
YzAxYjA4NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVu
dDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQp
CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgY29uc3QgTGF5b3V0VW5pdCBzbmFw
cGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRoZW1lKCkuc2xpZGVyVGlja1NuYXBwaW5nVGhy
ZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhyZXNob2xkID4gMCkgewotICAgICAgICBpZiAo
T3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdCA9IGlucHV0LT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFs
dWUodmFsdWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3Qg
PSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKSkgewogICAgICAgICAgICAg
ZG91YmxlIGNsb3Nlc3RGcmFjdGlvbiA9IHN0ZXBSYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKCpj
bG9zZXN0KS50b0RvdWJsZSgpOwogICAgICAgICAgICAgZG91YmxlIGNsb3Nlc3RSYXRpbyA9IGlz
VmVydGljYWwgfHwgIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyAxLjAgLSBjbG9zZXN0RnJhY3Rp
b24gOiBjbG9zZXN0RnJhY3Rpb247CiAgICAgICAgICAgICBMYXlvdXRVbml0IGNsb3Nlc3RQb3Np
dGlvbiB7IHRyYWNrTGVuZ3RoICogY2xvc2VzdFJhdGlvIH07CkBAIC01ODUsNyArNTg1LDcgQEAg
UmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkg
Y29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgp
KTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHls
ZSogaG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJU
aHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5
IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRv
IGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNjM5LDcgKzYzOSw3IEBAIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRl
ckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0ZDo6
b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhv
c3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4g
VGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0
eWxlIGlzIGtub3duLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oCmluZGV4IDA2YWJiZjk2NzAwZDFkZGRhMTZkNTUyM2U1NTAwMjNjNTJhMDYw
ZWEuLmIzY2RlYmE1NjdlOTVmOTViZjRmODlhZDk1M2Y1ZDJkMmNjMzYzYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0IEF0
b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0
RHJhZ2dpbmcoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNs
aWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwog
ICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc1NsaWRlckNvbnRhaW5lckVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCmluZGV4IGE0OWJjOTAwMGQ5NjFjZWQ5OTA5ZmZjNWYyYjYxYWNh
YmQ4ODZjMWUuLjkzMzQ3MjI2ZTk2ZjIxOTdjNWY1NmVkNzI2MTE0NjY5YmIxMGE3ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJvbmdQ
YXNzd29yZFRleHRGaWVsZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBpczxI
VE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihl
bGVtZW50KS0+aGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpOwogfQogCi1PcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5u
ZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJl
c29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogICAgIGlmIChpc1N0cm9uZ1Bhc3N3b3JkVGV4dEZp
ZWxkKHNoYWRvd0hvc3QoKSkpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBSZWY8VGV4dENvbnRyb2xJ
bm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50
KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6
RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkK
IHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogICAgIG5l
d1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsKQEAgLTE4Nyw3ICsxODcsNyBA
QCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJv
bElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0KIAotT3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93
SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVh
dGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICByZXR1cm4geyBtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkgfTsKQEAgLTIwOSw3ICsyMDksNyBAQCBS
ZWY8VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbgogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1PcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUp
OwogCkBAIC0yMzksNyArMjM5LDcgQEAgUmVmPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQ+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2MKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3VtZW50
KSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBpbnB1dCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKSk7CiAgICAgaWYg
KGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkgPj0gMCkKQEAgLTMwNiw3ICszMDYsNyBAQCBS
ZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShEb2N1bQogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1PcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2VhcmNoRmll
bGRDYW5jZWxCdXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgYXV0byBlbGVtZW50
U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBhdXRvJiBpbnB1dEVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqc2hhZG93SG9zdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
aW5kZXggNDVmZjg0ODNjMTBlMWNhZmFhNzk1NTM2ZmE1NzA4ZDJmYjM1YWEzNy4uN2MzMmJiNGEy
MTc3NzBjMTRmNjIxZTI0Y2ZkYmI2YjBhN2M3MTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKERv
Y3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9z
dFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsKIAogY2xhc3MgVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KIH07CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYpOwog
ICAgIAotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFk
b3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFz
cyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZF
bGVtZW50IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBib29sIGlzTW91c2VG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFs
PFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJy
aWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBi
b29sIG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlIHsgdHJ1ZSB9OwpAQCAtMTI1LDcgKzEy
NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50KERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwCmluZGV4IGI1OGZkMzhjMDRhMGY1ZGE1
OTU4ZDVmOTU0YjZmNTRjYTcxMDAwNDMuLjc4OGE5NzI2ZTJmZDllYjBlODNiMGI0ZDNhMzc1MzFi
Yjc0OGE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRM
aW5lUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGlu
ZVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1P
cHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4dExpbmUoKQorc3RkOjpvcHRp
b25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4dExpbmUoKQogewogICAgIGlmICht
X21heWJlU2tpcExGKSB7CiAgICAgICAgIC8vIFdlIHJhbiBvdXQgb2YgZGF0YSBhZnRlciBhIENS
IChVKzAwMEQpLCB3aGljaCBtZWFucyB0aGF0IHdlIG1heSBiZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmgKaW5kZXggMWEyMTFjOTU0ZmZhNDBmMTc1
YmUwNzUzZWRmOWZhZGY3MjExNjJkNS4uOTMzNGFlNzNlZmU5YjMyOWE5OGZmZGZjODhkMjJlZTIy
MGQ0NDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExp
bmVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJl
YWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEVuZE9mU3Ry
ZWFtKCkgeyBtX2VuZE9mU3RyZWFtID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNBdEVuZE9mU3RyZWFt
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZlN0cmVhbSAmJiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0K
IAotICAgIE9wdGlvbmFsPFN0cmluZz4gbmV4dExpbmUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbmV4dExpbmUoKTsKIAogcHJpdmF0ZToKICAgICBTZWdtZW50ZWRTdHJpbmcgbV9idWZm
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA4YWVkZmIwYmE4MDhj
NzA4OGJiYzZkYzdiYmRmZWI0NGNmNTkwNmY0Li45YTUzMzQ4NDIyZWJkYTkxOGJmYTNmYjVjMTBl
NjM5NTFmYTgxNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTEz
Myw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVz
aW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+JiBzdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldHM7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgc3R5bGVTaGVldHMoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlU2hlZXRzOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHVyZ2VD
dWVzRnJvbVVuYnVmZmVyZWRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDdWVzTm90SW5UaW1lUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcyYp
OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEtpbmQoS2luZCk7
CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IG1fc3R5bGVTaGVldHM7CiAKIHByaXZhdGU6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KQEAgLTE3Myw4ICsxNzMsOCBAQCBwcml2YXRlOgog
ICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNr
VHlwZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07
Ci0gICAgT3B0aW9uYWw8aW50PiBtX3RyYWNrSW5kZXg7Ci0gICAgT3B0aW9uYWw8aW50PiBtX3Jl
bmRlcmVkVHJhY2tJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV90cmFja0luZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX3JlbmRlcmVkVHJhY2tJbmRleDsKICAgICBib29sIG1f
aGFzQmVlbkNvbmZpZ3VyZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tFdmVudC5jcHAKaW5kZXggODYwOWY4ZmExNGYwNTU0ZDlkZDkxZDY5YzUyMjRmZDI3
ZTQ5MDNhYS4uN2M5Y2Y5NzhlMjFlMjQ5NTdhOWZkYzc1ZTAxMTAwZjYxYzgxZDFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRyYWNrRXZl
bnQpOwogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFRyYWNrRXZlbnQ6OlRyYWNrRXZlbnRUcmFj
az4gY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCitzdGF0
aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VHJhY2tFdmVudDo6VHJhY2tFdmVudFRyYWNrPiBjb252
ZXJ0VG9UcmFja0V2ZW50VHJhY2soUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKIHsKICAgICBzd2l0
Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNlIFRyYWNrQmFzZTo6QmFzZVRyYWNrOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAppbmRleCAzM2VkNjc0ZDBkODhjMjQ3MTBk
NDAzODY1OWM0YTFhMjU5ZjI3YTcwLi5mN2NlMDc0MWQxNjljYmYwY2RiOGZlMTQ4ZDVlMWZjZTZk
ZDc4ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHJhY2tFdmVudFRyYWNrID0gVmFyaWFudDxSZWZQ
dHI8VmlkZW9UcmFjaz4sIFJlZlB0cjxBdWRpb1RyYWNrPiwgUmVmUHRyPFRleHRUcmFjaz4+Owog
CiAgICAgc3RydWN0IEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8
VHJhY2tFdmVudFRyYWNrPiB0cmFjazsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFja0V2ZW50
VHJhY2s+IHRyYWNrOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFRyYWNrRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFs
aXplciksIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRUcmFj
az4gdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3RyYWNrOyB9CisgICAgc3RkOjpvcHRpb25hbDxU
cmFja0V2ZW50VHJhY2s+IHRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFjazsgfQogCiBwcml2
YXRlOgogICAgIFRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYpOwpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRl
OgogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gbV90cmFjazsKKyAgICBzdGQ6Om9wdGlv
bmFsPFRyYWNrRXZlbnRUcmFjaz4gbV90cmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNDQ4M2RmNzAwM2ZiMWVkNTQ5NmRj
YWJiMjMwM2VhYTU1MGM3ZGZlMS4uNjI5ZGYzYzk3Y2MyNTZhYmM0N2IxODE5YzIyMzNmMzY4MmY2
ODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTEwMCwxMSArMTAwLDExIEBA
IHN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29yZU9iamVjdCYgcGFyZW50T2JqZWN0LCBWZWN0
b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROCiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxPcHRpb25h
bDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6
Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJ
VCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhD
b3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsK
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gY2hpbGROb2RlczsKQEAgLTExNSwxMSArMTE1
LDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
RXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpD
b21wdXRlZFByb3BlcnRpZXM+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Omdl
dENvbXB1dGVkUHJvcGVydGllcyhOb2RlJiBub2RlKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25h
bDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4+
IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVz
KE5vZGUmIG5vZGUpCiB7CiAgICAgRVJST1JfSUZfTk9fQUNUSVZFX0FVRElUKCk7CiAKLSAgICBP
cHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVy
dGllcz4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+IHJlc3VsdDsKIAogICAgIGlmIChBWENvcmVP
YmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAg
ICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29tcHV0ZWRQcm9wZXJ0aWVzOwpAQCAtMjM5LDExICsy
MzksMTEgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJbnMKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29udHJvbGxlZE5vZGVzKE5vZGUmIG5vZGUpCitF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRDb250cm9sbGVkTm9kZXMoTm9kZSYgbm9kZSkK
IHsKICAgICBFUlJPUl9JRl9OT19BQ1RJVkVfQVVESVQoKTsKIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRy
PE5vZGU+Pj4gcmVzdWx0OwogCiAgICAgaWYgKEFYQ29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nl
c3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9k
ZT4+IGNvbnRyb2xsZWROb2RlczsKQEAgLTI2MSwxMSArMjYxLDExIEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRXhjZXB0aW9uT3I8T3B0aW9uYWw8
VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldEZsb3dlZE5vZGVzKE5vZGUmIG5vZGUpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
ZXRGbG93ZWROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJ
VCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhD
b3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsK
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gZmxvd2VkTm9kZXM7CkBAIC0yOTUsMTEgKzI5
NSwxMSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUoTgogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3duZWROb2RlcyhOb2RlJiBub2RlKQorRXhjZXB0
aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3duZWROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVS
Uk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBy
ZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9i
amVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgaWYgKGF4T2JqZWN0LT5zdXBwb3J0c0FSSUFP
d25zKCkpIHsKQEAgLTMzMSwxMSArMzMxLDExIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4g
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRQYXJlbnROb2RlKE5vZGUmCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQ
dHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxlY3Rl
ZENoaWxkTm9kZXMoTm9kZSYgbm9kZSkKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFNl
bGVjdGVkQ2hpbGROb2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9B
VURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGNiYmEyYjg2ZDhjYjNkMDVlNzdjNmI4ODc5ZjQyYjM0
NWIxNjg4NTEuLmI2ODZhODZmOTMzZjdjMWFiNGMwOGQ3NGYyMzBiZmJhZmExYzVjYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ3LDM5ICs0NywzOSBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIHJvbGUsIE5vZGUqIGNvbnRhaW5lcik7CiAKICAgICBzdHJ1
Y3QgQ29tcHV0ZWRQcm9wZXJ0aWVzIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gYnVzeTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBidXN5OwogICAgICAgICBTdHJpbmcgY2hlY2tlZDsK
ICAgICAgICAgU3RyaW5nIGN1cnJlbnRTdGF0ZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlz
YWJsZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGV4cGFuZGVkOwotICAgICAgICBPcHRpb25h
bDxib29sPiBmb2N1c2VkOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGhlYWRpbmdMZXZlbDsKLSAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGlkZGVuOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGhpZXJh
cmNoaWNhbExldmVsOwotICAgICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVkOwotICAgICAgICBP
cHRpb25hbDxib29sPiBpZ25vcmVkQnlEZWZhdWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGRpc2FibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGV4cGFuZGVkOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvY3VzZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWFkaW5nTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGlkZGVuOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGllcmFyY2hpY2FsTGV2ZWw7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBp
Z25vcmVkQnlEZWZhdWx0OwogICAgICAgICBTdHJpbmcgaW52YWxpZFN0YXR1czsKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gaXNQb3BVcEJ1dHRvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpc1BvcFVwQnV0dG9uOwogICAgICAgICBTdHJpbmcgbGFiZWw7Ci0gICAgICAgIE9wdGlvbmFs
PGJvb2w+IGxpdmVSZWdpb25BdG9taWM7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbGl2ZVJl
Z2lvbkF0b21pYzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbGl2ZVJl
Z2lvblJlbGV2YW50OwogICAgICAgICBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1czsKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gcHJlc3NlZDsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVhZG9ubHk7
Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHJlcXVpcmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHByZXNzZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVhZG9ubHk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVxdWlyZWQ7CiAgICAgICAgIFN0cmluZyByb2xl
OwotICAgICAgICBPcHRpb25hbDxib29sPiBzZWxlY3RlZDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzZWxlY3RlZDsKICAgICB9OwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+
PiBnZXRBY3RpdmVEZXNjZW5kYW50KE5vZGUmKTsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxW
ZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENoaWxkTm9kZXMoTm9kZSYpOwotICAgIEV4Y2VwdGlv
bk9yPE9wdGlvbmFsPENvbXB1dGVkUHJvcGVydGllcz4+IGdldENvbXB1dGVkUHJvcGVydGllcyhO
b2RlJik7Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBn
ZXRDb250cm9sbGVkTm9kZXMoTm9kZSYpOwotICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0Rmxvd2VkTm9kZXMoTm9kZSYpOworICAgIEV4Y2VwdGlvbk9y
PHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRDaGlsZE5vZGVzKE5vZGUm
KTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPENvbXB1dGVkUHJvcGVydGllcz4+IGdl
dENvbXB1dGVkUHJvcGVydGllcyhOb2RlJik7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENvbnRyb2xsZWROb2RlcyhOb2RlJik7CisgICAg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldEZsb3dl
ZE5vZGVzKE5vZGUmKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGdldE1vdXNlRXZl
bnROb2RlKE5vZGUmKTsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5v
ZGU+Pj4+IGdldE93bmVkTm9kZXMoTm9kZSYpOworICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRPd25lZE5vZGVzKE5vZGUmKTsKICAgICBFeGNl
cHRpb25PcjxSZWZQdHI8Tm9kZT4+IGdldFBhcmVudE5vZGUoTm9kZSYpOwotICAgIEV4Y2VwdGlv
bk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVz
KE5vZGUmKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9k
ZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzKE5vZGUmKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QoSW5zcGVjdG9yOjpJbnNwZWN0
b3JBdWRpdEFnZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCmluZGV4IGM5Y2U4MGIyZDFkYWFkOGRlZWEyOTNiZmIwOWQ4MDhhNThiOTM0OWMuLmU0
ZDc2YjAxMzczYmE5ODdlZTgzOWU0OTFhYmMxMTdiM2E2ZjRmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0zNDEsNTEgKzM0MSw1MSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+
PiBidWlsZEFycmF5Rm9yVmVjdG9yKAogICAgIHJldHVybiBhcnJheTsKIH0KIAotT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKK3N0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKIHsK
ICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0ZpbGxSdWxlIGFyZ3VtZW50KQorc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRmlsbFJ1bGUgYXJndW1lbnQp
CiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAK
LU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJjZSYgYXJndW1l
bnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJj
ZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAo
YXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CiAg
ICAgfSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNMaW5lQ2Fw
IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGlu
ZUNhcCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0
cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0xpbmVK
b2luIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
TGluZUpvaW4gYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmIGFyZ3VtZW50KQorc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
U3R5bGVWYXJpYW50JiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1
bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgewogICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50
KHZhbHVlKTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc1RleHRBbGlnbiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRl
eEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQp
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KERPTU1hdHJpeDJESW5pdCYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChET01NYXRyaXgyREluaXQmIGFyZ3VtZW50KQogewogICAg
IGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgIGFycmF5
LT5hZGRJdGVtKGFyZ3VtZW50LmEudmFsdWVfb3IoMSkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoYXJyYXkpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6RE9NTWF0cml4IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoRWxlbWVudCogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChFbGVtZW50KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDA3LDEyOSArNDA3LDEyOSBAQCBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQQogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YSgiRWxlbWVu
dCJfcyksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOb25lIH19OwogfQogCi1PcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxlbWVudCogYXJndW1lbnQpCitzdGQ6Om9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChIVE1MSW1hZ2VFbGVtZW50KiBhcmd1bWVudCkKIHsK
ICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpJbWFnZSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlQml0
bWFwKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdl
Qml0bWFwKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZUJpdG1hcCB9fTsKIH0KIAotT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YSogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJn
dW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVl
SW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9
fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdz
JikKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdz
JikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxp
dHkgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNt
b290aGluZ1F1YWxpdHkgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChP
cHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoc3RkOjpvcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1l
bnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZh
bHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPigqYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFBhdGgyRCogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChQ
YXRoMkQqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5n
RnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJE
IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dy
YWRpZW50PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChS
ZWZQdHI8Q2FudmFzR3JhZGllbnQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9y
RGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9fTsK
IH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxDYW52YXNQYXR0ZXJu
PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8
Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFy
Z3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1BhdHRlcm4gfX07CiB9CiAKLU9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1M
Q2FudmFzRWxlbWVudD4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFy
Z3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19OwogfQogCi1PcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBhcmd1bWVudCkK
K3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MSW1hZ2VFbGVt
ZW50PiYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudChhcmd1bWVudC5n
ZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SW1hZ2VC
aXRtYXA+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJl
ZlB0cjxJbWFnZUJpdG1hcD4mIGFyZ3VtZW50KQogewogICAgIHJldHVybiBwcm9jZXNzQXJndW1l
bnQoYXJndW1lbnQuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
UmVmUHRyPEltYWdlRGF0YT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFyZ3VtZW50KQogewogICAgIHJldHVybiBwcm9j
ZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpUeXBlZEFycmF5IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVm
UHRyPEpTQzo6RmxvYXQzMkFycmF5PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAg
ICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRB
cnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6
OkludDMyQXJyYXk+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFJlZlB0cjxKU0M6OkludDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKIH0K
IAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OlVpbnQzMkFycmF5
PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8
SlNDOjpVaW50MzJBcnJheT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVh
dGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OwogfQogCi1PcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoU3RyaW5nJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFN0cmluZyYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7
IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmlu
ZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJpbmc+
JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudCkKIHsKICAgICBhdXRvIGRlZHVwbGljYXRlZCA9IGFyZ3VtZW50Lm1h
cChbJl0gKGNvbnN0IFN0cmluZyYgaXRlbSkgewogICAgICAgICByZXR1cm4gaW5kZXhGb3JEYXRh
KGl0ZW0pOwpAQCAtNTM3LDEyICs1MzcsMTIgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKICAg
ICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3RvcihXVEZNb3ZlKGRlZHVwbGljYXRlZCkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoVmVjdG9yPGZsb2F0PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8ZmxvYXQ+JiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4g
e3sgYnVpbGRBcnJheUZvclZlY3Rvcihhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpB
cnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3Rvcjx1aW50
MzJfdD4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVj
dG9yPHVpbnQzMl90PiYgYXJndW1lbnQpCiB7CiAgICAgYXV0byBtYXBwZWQgPSBhcmd1bWVudC5t
YXAoWyZdICh1aW50MzJfdCBpdGVtKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGl0ZW0pOwpAQCAtNTUwLDcgKzU1MCw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiAg
ICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0b3IobWFwcGVkKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OkFycmF5IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVj
dG9yPGludDMyX3Q+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFZlY3RvcjxpbnQzMl90PiYgYXJndW1lbnQpCiB7CiAgICAgYXV0byBtYXBwZWQgPSBhcmd1
bWVudC5tYXAoWyZdIChpbnQzMl90IGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGRvdWJsZT4oaXRlbSk7CkBAIC01NTgsNDkgKzU1OCw0OSBAQCBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQQogICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KGRvdWJsZSBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KGRvdWJsZSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShh
cmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChmbG9hdCBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KGZsb2F0IGFyZ3VtZW50KQogewogICAgIHJldHVybiB7eyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KHVpbnQ2NF90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQodWludDY0X3QgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
TnVtYmVyIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoaW50NjRfdCBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGludDY0X3QgYXJn
dW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OwogfQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDMyX3QgYXJndW1lbnQpCitzdGQ6
Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50MzJfdCBhcmd1bWVudCkKIHsKICAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3Vt
ZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChpbnQzMl90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoaW50MzJfdCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudCh1aW50OF90IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQodWludDhfdCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1i
ZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChib29sIGFyZ3VtZW50
KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoYm9vbCBhcmd1bWVudCkKIHsK
ICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShhcmd1bWVudCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpCb29sZWFuIH19OwogfQogCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWYWx1
ZT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRy
PFR5cGVkT01DU1NJbWFnZVZhbHVlPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYxMSw3ICs2MTEsNyBAQCBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgYXJndW1l
bnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTYyMiw3ICs2MjIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QQogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgYXJndW1lbnQpCiB7CiAg
ICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYzMyw3
ICs2MzMsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKFdFQkdMKQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoc3RkOjpvcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpCdWZmZXJEYXRhU291cmNlPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0Myw3ICs2NDMsNyBAQCBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQQogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+
JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHN0ZDo6b3B0
aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNjUzLDEwNSArNjUzLDEwNSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIH0pOwog
fQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3VtZW50
KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3Vt
ZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpXZWJHTEJ1ZmZlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMRnJhbWVidWZmZXIqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVu
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMRnJhbWVidWZmZXIgfX07
CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFByb2dyYW0qIGFyZ3Vt
ZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xQcm9ncmFtKiBh
cmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6V2ViR0xQcm9ncmFtIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoV2ViR0xRdWVyeSogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3Jl
YXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xRdWVyeSB9fTsKIH0KIAotT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkKK3N0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1
bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRhU291cmNlJiBhcmd1
bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmIGFyZ3VtZW50KQogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVy
biBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6RmxvYXQzMkxpc3Q6OlZh
cmlhbnRUeXBlJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJn
dW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYg
dmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CiAgICAgfSk7
CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlz
dDo6VmFyaWFudFR5cGUmIGFyZ3VtZW50KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFy
Z3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1l
bnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQorc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJn
dW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFdlYkdMU2FtcGxlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU2FtcGxlciB9fTsKIH0KIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU2hhZGVyKiBhcmd1bWVudCkKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU2hhZGVyKiBhcmd1bWVudCkKIHsK
ICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2Vi
R0xTaGFkZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFN5
bmMqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xT
eW5jKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6V2ViR0xTeW5jIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoV2ViR0xUZXh0dXJlKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVu
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsKIH0K
IAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24gfX07CiB9CiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcmd1bWVu
dCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVmVydGV4QXJyYXlP
YmplY3QqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC03NjIsMTQgKzc2MiwxNCBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QQogCiAjaWYgRU5BQkxFKFdFQkdMMikKIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogYXJndW1lbnQpCiB7CiAgICAg
aWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVHJh
bnNmb3JtRmVlZGJhY2sgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQp
CitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJu
IHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CkBAIC04OTksNyArODk5LDcgQEAgYm9vbCBJbnNwZWN0
b3JDYW52YXM6Om92ZXJGcmFtZUNvdW50KCkgY29uc3QKIAogUmVmPFByb3RvY29sOjpDYW52YXM6
OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1
cmVCYWNrdHJhY2UpCiB7Ci0gICAgdXNpbmcgQ29udGV4dFR5cGVUeXBlID0gT3B0aW9uYWw8UHJv
dG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU+OworICAgIHVzaW5nIENvbnRleHRUeXBlVHlwZSA9
IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU+OwogICAgIGF1dG8g
Y29udGV4dFR5cGUgPSBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwKICAgICAgICAgW10gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4gY29udGV4dFdyYXBwZXIp
IC0+IENvbnRleHRUeXBlVHlwZSB7CiAgICAgICAgICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4
dFdyYXBwZXIuZ2V0KCk7CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBSZWY8UHJvdG9jb2w6OlJlY29y
ZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZT4oY29udGV4dCkpIHsKICAgICAgICAgYXV0byYgY29udGV4dFdlYkdMQmFzZSA9IGRvd25j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjb250ZXh0KTsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgPSBj
b250ZXh0V2ViR0xCYXNlLmdldENvbnRleHRBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0QXR0cmlidXRl
cyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewogICAgICAgICAg
ICAgYXV0byB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9v
bGVhbigiYWxwaGEiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmFscGhhKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJkZXB0aCJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+ZGVwdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDI2MjViZDBhNzYzZjA2NmMxMWYyYjI0MGY3YzlhN2M5
NDBjMWVkMDkuLjU5Nzk5OGE0Y2MxNmIzY2MxYTcyMWRlZThkN2JiNTE5MzZjYjg3NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKQEAgLTg5LDcgKzg5LDcg
QEAgcHVibGljOgogCiAgICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcgogI2RlZmluZSBQ
Uk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAotICAgIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJn
dW1lbnQoQXJndW1lbnRUeXBlKTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChBcmd1bWVudFR5
cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9F
QUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVO
VF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBAIC0x
NzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fY3VycmVudEZyYW1l
U3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFuKCkgfTsKICAgICBzaXplX3QgbV9idWZmZXJM
aW1pdCB7IDEwMCAqIDEwMjQgKiAxMDI0IH07CiAgICAgc2l6ZV90IG1fYnVmZmVyVXNlZCB7IDAg
fTsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJhbWVDb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbV9mcmFtZUNvdW50OwogICAgIHNpemVfdCBtX2ZyYW1lc0NhcHR1cmVkIHsgMCB9
OwogICAgIGJvb2wgbV9jb250ZW50Q2hhbmdlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCmlu
ZGV4IDY5M2FjZmU1MzQzNTE3MGQyZGY1ZTkwMjljY2Y1MmMwNmFiMTM2MTEuLjcwMDg0ZTM2YmMw
YTFmYjEyODU0YzBiZDEwNDRmMTdjN2I5MjFjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgc3RhdGljIEluc3BlY3RvckNhbnZhc0FnZW50KiBlbmFibGVkQ2FudmFzQWdlbnQoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmUKIH0KIAogI2RlZmluZSBQUk9DRVNTX0FSR1VN
RU5UX0RFRklOSVRJT04oQXJndW1lbnRUeXBlKSBcCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkgXAorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRl
cmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkgXAogeyBcCiAgICAgaWYgKGF1dG8q
IGNhbnZhc0FnZW50ID0gZW5hYmxlZENhbnZhc0FnZW50KGNhbnZhc1JlbmRlcmluZ0NvbnRleHQp
KSBcCiAgICAgICAgIHJldHVybiBjYW52YXNBZ2VudC0+cHJvY2Vzc0FyZ3VtZW50KGNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIGFyZ3VtZW50KTsgXApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmIGNhbnZhc1JlbmRlCiAgICAgICAgIGNhbnZhc0FnZW50LT5yZWNvcmRBY3Rpb24oY2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0K
IAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2Fu
dmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgdWludDMyX3QgYXJndW1lbnQpCitzdGQ6Om9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoY29uc3QgSFRNTENhbnZhc0VsZW1l
bnQmIGNhbnZhc0VsZW1lbnQsIHVpbnQzMl90IGFyZ3VtZW50KQogewogICAgIEFTU0VSVChjYW52
YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSk7CiAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVu
dCgqY2FudmFzRWxlbWVudC5yZW5kZXJpbmdDb250ZXh0KCksIGFyZ3VtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oCmlu
ZGV4IGM1ZDMxMWVlNDljNjA1ZmExMDE2ZTExZGZiZjczODIwMjMyZjg2ZWEuLjY3OGI0MDljNGRm
NDk4N2UzYWJmYzI4ZDQxYWQ3MGIzYmRjMDBkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApAQCAtMTA2LDggKzEwNiw4
IEBAIGVudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OwogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2Rl
ZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5U
KG1hY3JvKSBcCi0gICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
QnVmZmVyRGF0YVNvdXJjZT4mKSBcCi0gICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JikgXAorICAgIG1hY3JvKHN0ZDo6b3B0aW9uYWw8
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCisgICAgbWFj
cm8oc3RkOjpvcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJj
ZT4mKSBcCiAgICAgbWFjcm8oV2ViR0xCdWZmZXIqKSBcCiAgICAgbWFjcm8oV2ViR0xGcmFtZWJ1
ZmZlciopIFwKICAgICBtYWNybyhXZWJHTFByb2dyYW0qKSBcCkBAIC0xNTMsNyArMTUzLDcgQEAg
ZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oSW1hZ2VEYXRhKikgXAogICAg
IG1hY3JvKEltYWdlRGF0YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVh
bGl0eSkgXAotICAgIG1hY3JvKE9wdGlvbmFsPGZsb2F0PiYpIFwKKyAgICBtYWNybyhzdGQ6Om9w
dGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCiAgICAgbWFjcm8oUmVmUHRy
PENhbnZhc0dyYWRpZW50PiYpIFwKICAgICBtYWNybyhSZWZQdHI8Q2FudmFzUGF0dGVybj4mKSBc
CkBAIC0xOTMsMTcgKzE5MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlY29yZGluZ1N3aXp6bGVU
eXBlIHN3aXp6bGVUeXBlOwogICAgIH07CiAKLSAgICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMg
PSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8T3B0aW9uYWw8UHJvY2Vzc2VkQXJndW1lbnQ+PjsKKyAg
ICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpv
cHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4+OwogCiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRf
REVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCi0gICAgc3RhdGljIE9wdGlvbmFsPFByb2Nlc3Nl
ZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEFyZ3Vt
ZW50VHlwZSk7IFwKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4g
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBc
CiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9FQUNIX0lO
U1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNM
QVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCiAKICAgICBzdGF0
aWMgdm9pZCByZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIFN0cmluZyYmLCBQ
cm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UHJvY2Vz
c2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIHVp
bnQzMl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJv
Y2Vzc0FyZ3VtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiwgdWludDMyX3QpOwogICAgIHN0
YXRpYyB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIFN0cmluZyYm
LCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYTY3MGUzMjhhNWJmYzg4MGJkNTQ1ZDg3OTdh
NjJhNjAyYjE5Y2MwNy4uZTRjMDY3ZmRiMzY1ODFlOTE2OTdkYjdkZThjNGMyYjMwZjk4NGJkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIElUUERlYnVnTW9kZUVuYWJsZWQsCiAgICAgICAgIE1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2
ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKERldmVsb3BlclByZWZlcmVuY2UsIE9wdGlvbmFsPGJv
b2w+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRl
KERldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIHsgfQogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdmlydHVhbCBib29sIGFsbG93UmVtb3RlSW5zcGVj
dGlvblRvUGFnZURpcmVjdGx5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcAppbmRleCBlNzcwNmJlNDQyZjkxN2ZjYzhmNDdiYjk5Y2RkZjZlOTY0NzExNmNjLi5mYjE5
ZDdmODI5ZjU1YzUzM2FmOWFkNjAyOWIxYzBiMmRlOGFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpy
ZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogICAgIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHQocHJlZmVycmVkSGVpZ2h0LCBpbnNwZWN0
ZWRQYWdlSGVpZ2h0KSk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4oSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4g
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQog
ewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgKaW5kZXggYmNmZmQyMmQ3NzlmOTljNTVjNjM0YjI3NmFhMWI5ODQ3OGIxMDIzYy4uY2U2
OWE2OTliZTFmNDdkODAxNjc1OWI2MDUxYzJlOGIzMjJhOTY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBA
IC0xMzQsNyArMTM0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBGcm9udGVuZE1lbnVQcm92aWRlcjsKLSAgICBPcHRpb25hbDxib29sPiBldmFsdWF0aW9uUmVz
dWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJl
c3VsdCk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFu
KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CiAKICAg
ICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyIHsgbnVsbHB0
ciB9OwogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA1MTIy
YTIzMWM1ZmVhOThhMjU4YTMzNDNkMTkwMDA1MjQyNzA2ZTU3Li4zMTdkNDI4YmViZDI2NmIxMjdl
MmQ4ODRjMTE4OWU0YjA0MmMwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkZWQoKQogICAgICAgICBtX2NsaWVudC0+ZnJvbnRlbmRM
b2FkZWQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpE
b2NrU2lkZT4gZG9ja1NpZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU+
IGRvY2tTaWRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGRvY2tTaWRlU3RyaW5nKQogewogICAg
IGlmIChkb2NrU2lkZVN0cmluZyA9PSAidW5kb2NrZWQiKQogICAgICAgICByZXR1cm4gSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDsKQEAgLTYwMyw3ICs2MDMsNyBA
QCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NlcnRpZmljYXRlKGNvbnN0IFN0cmlu
ZyYgc2VyaWFsaXplZENlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwotICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAg
IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVj
b2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKQogICAgIHJldHVybiBtX2NsaWVu
dCAmJiBtX2NsaWVudC0+ZGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoKTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQ+IHZhbHVlUGF5
bG9hZEZyb21KU09OVmFsdWUoUmVmPEpTT046OlZhbHVlPiYmIHZhbHVlKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZD4gdmFsdWVQYXls
b2FkRnJvbUpTT05WYWx1ZShSZWY8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiB7CiAgICAgc3dpdGNo
ICh2YWx1ZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBKU09OOjpWYWx1ZTo6VHlwZTo6QXJyYXk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5k
ZXggOGIyZDU4MGIwZjMyMjM5Y2U5ZTIwNmE4MWEyZDBjZGMxNDMyZTA4Ny4uNmQyZTU2YzdhZThm
ZWRmYTY1OTBmMTRiMWFkZjgwOGEyZmEwMGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBDb250ZXh0TWVudUl0ZW0gewogICAgICAgICBTdHJpbmcgdHlwZTsK
ICAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGlkOwotICAgICAg
ICBPcHRpb25hbDxib29sPiBlbmFibGVkOwotICAgICAgICBPcHRpb25hbDxib29sPiBjaGVja2Vk
OwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGV4dE1lbnVJdGVtPj4gc3ViSXRlbXM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBlbmFibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNoZWNrZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRleHRNZW51SXRlbT4+IHN1Ykl0ZW1zOwogICAgIH07
CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQmLCBWZWN0b3I8Q29udGV4dE1lbnVJdGVt
PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CmluZGV4IGExNjkzMTYyYmNmN2FmYmVmMjczN2U1ZGVjNGE4YWJiYWJlYzQyN2IuLjdkZjM1Y2Rl
ZWVlNzBhMmQwZmQ5Yjc0ZmVkNTA0YjQ2MTQ0ZDJhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTE2MDYsNyArMTYwNiw3IEBAIHN0YXRp
YyBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJl
bCBidWlsZExhYmVsKFN0cmluCiAgICAgcmV0dXJuIGxhYmVsOwogfQogCi1PcHRpb25hbDxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JP
dmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmIGdy
aWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsKQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JP
dmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmIGdy
aWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsKQogewogICAgIC8vIElmIHRoZSBu
b2RlIFdlYWtQdHIgaGFzIGJlZW4gY2xlYXJlZCwgdGhlbiB0aGUgbm9kZSBpcyBnb25lIGFuZCB0
aGVyZSdzIG5vdGhpbmcgdG8gZHJhdy4KICAgICBpZiAoIWdyaWRPdmVybGF5LmdyaWROb2RlKSB7
CkBAIC0xOTE4LDEwICsxOTE4LDEwIEBAIE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IEluc3BlY3Rvck92ZXJsYXk6OmJ1CiAgICAgICAg
ICAgICBhdXRvIHJvd1N0YXJ0TGluZSA9IHJvd0xpbmVBdChyb3dQb3NpdGlvbnNbYXJlYS5yb3dz
LnN0YXJ0TGluZSgpXSk7CiAgICAgICAgICAgICBhdXRvIHJvd0VuZExpbmUgPSByb3dMaW5lQXQo
cm93UG9zaXRpb25zW2FyZWEucm93cy5lbmRMaW5lKCkgLSAxXSArIHJvd0hlaWdodHNbYXJlYS5y
b3dzLmVuZExpbmUoKSAtIDFdKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4g
dG9wTGVmdCA9IGNvbHVtblN0YXJ0TGluZS5pbnRlcnNlY3Rpb25XaXRoKHJvd1N0YXJ0TGluZSk7
Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiB0b3BSaWdodCA9IGNvbHVtbkVuZExp
bmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUpOwotICAgICAgICAgICAgT3B0aW9uYWw8
RmxvYXRQb2ludD4gYm90dG9tUmlnaHQgPSBjb2x1bW5FbmRMaW5lLmludGVyc2VjdGlvbldpdGgo
cm93RW5kTGluZSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21MZWZ0
ID0gY29sdW1uU3RhcnRMaW5lLmludGVyc2VjdGlvbldpdGgocm93RW5kTGluZSk7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHRvcExlZnQgPSBjb2x1bW5TdGFydExpbmUu
aW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiB0b3BSaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0aChy
b3dTdGFydExpbmUpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0
b21SaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dFbmRMaW5lKTsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gYm90dG9tTGVmdCA9IGNvbHVtblN0
YXJ0TGluZS5pbnRlcnNlY3Rpb25XaXRoKHJvd0VuZExpbmUpOwogCiAgICAgICAgICAgICAvLyBJ
ZiBhbnkgdHdvIGxpbmVzIGFyZSBjb2luY2lkZW50IHdpdGggZWFjaCBvdGhlciwgdGhleSB3aWxs
IG5vdCBoYXZlIGFuIGludGVyc2VjdGlvbiwgd2hpY2ggY2FuIG9jY3VyIHdpdGggZXh0cmVtZSBg
dHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSguLi4pYCB2YWx1ZXMuCiAgICAgICAgICAgICBpZiAoIXRv
cExlZnQgfHwgIXRvcFJpZ2h0IHx8ICFib3R0b21SaWdodCB8fCAhYm90dG9tTGVmdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDU1YmE1OGY1M2Zi
OTdjMDY2NDMwYzc1YzIyYjk3NjA1NGQ2NGI3MmEuLjAzN2I5YmIxYTA5ODA4NWY3YzI5NjhiNTll
YmE5ZWQ0NzdhMTc0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdo
bGlnaHRPdmVybGF5OjpMYWJlbD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gZGVjb2RlKERlY29k
ZXImKTsKICNlbmRpZgogICAgICAgICAgICAgfTsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJs
YXk6OkFyZWE+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYKICAgICAgICAgICAgIH07CiAKQEAg
LTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRP
dmVybGF5PiBkZWNvZGUoRGVjb2RlciYpOwogI2VuZGlmCiAgICAgICAgIH07CiAKQEAgLTI0MCw3
ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0xheW91dExhYmVsKEdyYXBoaWNzQ29u
dGV4dCYsIFN0cmluZywgRmxvYXRQb2ludCwgTGFiZWxBcnJvd0RpcmVjdGlvbiwgSW5zcGVjdG9y
T3ZlcmxheTo6TGFiZWxBcnJvd0VkZ2VQb3NpdGlvbiwgQ29sb3IgYmFja2dyb3VuZENvbG9yID0g
Q29sb3I6OndoaXRlLCBmbG9hdCBtYXhpbXVtV2lkdGggPSAwKTsKIAogICAgIHZvaWQgZHJhd0dy
aWRPdmVybGF5KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXkmKTsKLSAgICBPcHRpb25hbDxJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBidWlsZEdyaWRPdmVybGF5KGNv
bnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmLCBib29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsID0g
ZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpH
cmlkSGlnaGxpZ2h0T3ZlcmxheT4gYnVpbGRHcmlkT3ZlcmxheShjb25zdCBJbnNwZWN0b3JPdmVy
bGF5OjpHcmlkJiwgYm9vbCBvZmZzZXRCb3VuZHNCeVNjcm9sbCA9IGZhbHNlKTsKIAogICAgIHZv
aWQgdXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKTsKIApAQCAtMjc4LDcgKzI3OCw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpH
cmlkSGlnaGxpZ2h0T3ZlcmxheTo6CiAgICAgZW5jb2RlciA8PCBsYWJlbHM7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6
R3JpZEhpZ2hsaWdodE92ZXJsYXk+IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhp
Z2hsaWdodE92ZXJsYXk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRI
aWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGln
aHRPdmVybGF5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5IGdyaWRIaWdobGlnaHRPdmVybGF5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ3JpZEhpZ2hsaWdodE92ZXJsYXkuY29sb3IpKQpA
QCAtMzAzLDcgKzMwMyw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyb3dFZGdlUG9zaXRpb24pOwogfQogCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6Okdy
aWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpH
cmlkSGlnaGxpZ2h0T3ZlcmxheTo6TGFiZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gSW5zcGVjdG9yT3ZlcmxheTo6SGln
aGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6TGFiZWw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92
ZXJsYXk6OkxhYmVsIGxhYmVsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFiZWwudGV4dCkp
CkBAIC0zMzIsNyArMzMyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjoKICAgICBlbmNvZGVy
IDw8IHF1YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEluc3BlY3Rv
ck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkFyZWE+IEluc3BlY3Rv
ck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkFyZWE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhPiBJ
bnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGln
aHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVhIGFyZWE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhcmVhLm5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGRlNWNkNmU5NTE5OTg0YmE1YmQzOGYzMWI3MGQ1
NzMxMjNhZTAyZWQuLjFkY2IwZTA5Y2JjZjU5OWUwNWZiNDZhZmVlMWYyZWQ0NzYzMjdkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3Jh
bS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFz
OjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iagogewogICAg
IGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFkZXIgPSBmYWxzZTsKIAotICAgIHVzaW5nIFBy
b2dyYW1UeXBlVHlwZSA9IE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJv
Z3JhbVR5cGU+OworICAgIHVzaW5nIFByb2dyYW1UeXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZT47CiAgICAgYXV0byBwcm9ncmFt
VHlwZSA9IFdURjo6c3dpdGNoT24obV9wcm9ncmFtLAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAg
ICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdMUHJvZ3JhbT4pIC0+IFByb2dyYW1U
eXBlVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCA1NGMxNTA1YmIxNzk0OTg0ZDViYTcxZTI4MDhlOTg5OWM0NmFlM2Zl
Li5hNzc4ODRkYmU1YTJjMzFiNmYwNTM5YzA0MGYzODdjZTdmZjkyMTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMxMSw3
ICszMTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKE9wdGlvbmFsPFN0cmluZz4gcHJl
c2VydmVkTG9hZGVySWQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVySWQpCiB7CiAgICAgbV9yZXF1ZXN0SWRzRGVx
dWUuY2xlYXIoKTsKICAgICBtX2NvbnRlbnRTaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggOWU2OWIyMzQxYjk1MWFlZmNi
OWQxOWQ0MzVhOThiNjU5YjZhNTEwMS4uZjk2NjExMjYyMTU2YjhlY2E0MjA5YjM4NWEyZTIyOGFl
YmMzMTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KICAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAotICAgICAgICBjb25zdCBPcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmlj
YXRlSW5mbzsgfQotICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBPcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8g
PSBjZXJ0aWZpY2F0ZUluZm87IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQorICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5m
byA9IGNlcnRpZmljYXRlSW5mbzsgfQogCiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9p
ZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9j
YWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVi
bGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwotICAgICAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+
IG1fY2VydGlmaWNhdGVJbmZvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJl
c291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNl
VHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKICAgICAg
ICAgaW50IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGlj
OgogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSop
OwotICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjbGVhcihzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc2Vy
dmVkTG9hZGVySWQgPSBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3RvcjxSZXNvdXJjZURhdGEqPiBy
ZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKaW5kZXggMzBkNzYy
ZmMzYzhjYTUzZGE3YjgzOWU0ZmY4MzEwMjAwYWRlNzkzOS4uZDE2MTFkOThkYTE0OTY3YWU5OTk3
MDEwNDlhOWIwNTM4YWI4YzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKQEAgLTY1LDE0ICs2
NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHByb3RvY29sVmFsdWVGb3JTZWNvbmRzKGNvbnN0
IFNlY29uZHMmIHNlY29uZHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHByb3RvY29s
VmFsdWVGb3JTZWNvbmRzKGNvbnN0IFNlY29uZHMmIHNlY29uZHMpCiB7CiAgICAgaWYgKHNlY29u
ZHMgPT0gU2Vjb25kczo6aW5maW5pdHkoKSB8fCBzZWNvbmRzID09IFNlY29uZHM6Om5hbigpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzLm1pbGxpc2Vj
b25kcygpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6UGxheWJh
Y2tEaXJlY3Rpb24+IHByb3RvY29sVmFsdWVGb3JQbGF5YmFja0RpcmVjdGlvbihQbGF5YmFja0Rp
cmVjdGlvbiBwbGF5YmFja0RpcmVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29s
OjpBbmltYXRpb246OlBsYXliYWNrRGlyZWN0aW9uPiBwcm90b2NvbFZhbHVlRm9yUGxheWJhY2tE
aXJlY3Rpb24oUGxheWJhY2tEaXJlY3Rpb24gcGxheWJhY2tEaXJlY3Rpb24pCiB7CiAgICAgc3dp
dGNoIChwbGF5YmFja0RpcmVjdGlvbikgewogICAgIGNhc2UgUGxheWJhY2tEaXJlY3Rpb246Ok5v
cm1hbDoKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRp
b246OlBsYXliYWNrRGlyZWN0aW9uPiBwcm90b2NvbFZhbHVlRm9yUGxheWJhY2sKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlv
bjo6RmlsbE1vZGU+IHByb3RvY29sVmFsdWVGb3JGaWxsTW9kZShGaWxsTW9kZSBmaWxsTW9kZSkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90
b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmlsbE1vZGUgZmlsbE1vZGUpCiB7CiAgICAgc3dpdGNoIChm
aWxsTW9kZSkgewogICAgIGNhc2UgRmlsbE1vZGU6Ok5vbmU6CkBAIC0zODMsNyArMzgzLDcgQEAg
dm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxl
bWVudCYgdGFyZ2V0LCBLZXlmcmFtZUUKICAgICB9KTsKICAgICBhdXRvJiB0cmFja2luZ0RhdGEg
PSBlbnN1cmVSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCi0gICAgT3B0aW9uYWw8UHJv
dG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3RhdGU+IGFuaW1hdGlvbkFuaW1hdGlvblN0YXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3RhdGU+
IGFuaW1hdGlvbkFuaW1hdGlvblN0YXRlOwogCiAgICAgaWYgKChlbnN1cmVSZXN1bHQuaXNOZXdF
bnRyeSB8fCAhaXNEZWxheWVkKHRyYWNraW5nRGF0YS5sYXN0Q29tcHV0ZWRUaW1pbmcpKSAmJiBp
c0RlbGF5ZWQoY29tcHV0ZWRUaW1pbmcpKQogICAgICAgICBhbmltYXRpb25BbmltYXRpb25TdGF0
ZSA9IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvblN0YXRlOjpEZWxheWVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCBjMmIxODAwMzdlOTQ3Y2M2YmQ1MjZjMzQ2Y2RjN2E4YWM2ZmZiYTFkLi4wZjcyMmRk
NDJiMzE2ZWIzNmEzYzllZTVmZDFkZDdhYWEwMWYxMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDQxLDcg
KzQ0MSw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi1zdGF0aWMgT3B0
aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQ
c2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OlBz
ZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRvSWQgcHNldWRvSWQpCiB7CiAg
ICAgc3dpdGNoIChwc2V1ZG9JZCkgewogICAgIGNhc2UgUHNldWRvSWQ6OkZpcnN0TGluZToKQEAg
LTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+
IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCBwc2V1ZAogICAgIH0KIH0KIAotUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNT
Uzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+Pj4+IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBPcHRpb25hbDxib29sPiYm
IGluY2x1ZGVQc2V1ZG8sIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUluaGVyaXRlZCkKK1Byb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkNTUzo6UnVsZU1hdGNoPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6
OlBzZXVkb0lkTWF0Y2hlcz4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NTOjpJ
bmhlcml0ZWRTdHlsZUVudHJ5Pj4+PiBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVk
KQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtOTM1LDcg
KzkzNSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNTU0FnZW50
Ojpmb3JjZVBzZXVkb1N0YXRlKFByb3RvY29sOjpET006CiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
T3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IEluc3BlY3RvckNTU0Fn
ZW50OjpsYXlvdXRDb250ZXh0VHlwZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6bGF5b3V0Q29udGV4dFR5cGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogewogICAgIGlmIChpczxSZW5kZXJHcmlkPihyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybiBQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZTo6R3JpZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA4
NTVkYWEzMThiZjlhNmIzNTk1MTY1ZGI1M2E0ZjgxMDg0MzljNWNmLi5hNGM2MTI3ZDBhMmNmZDRk
Y2M0ZjVkZTg2YjA2OTAyOTgzZGE3NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICB9OwogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NT
UnVsZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Okxh
eW91dENvbnRleHRUeXBlPiBsYXlvdXRDb250ZXh0VHlwZUZvclJlbmRlcmVyKFJlbmRlck9iamVj
dCopOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0Kik7CiAKICAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+PiBnZXRDb21wdXRlZFN0
eWxlRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpGb250Pj4gZ2V0Rm9udERhdGFGb3JOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IC8qIGlubGluZVN0eWxl
ICovLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gLyogYXR0cmli
dXRlc1N0eWxlICovPj4gZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxz
dGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UnVsZU1hdGNoPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+Pj4gZ2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE9wdGlvbmFsPGJvb2w+JiYgaW5j
bHVkZVBzZXVkbywgT3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVkKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiwgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pj4+PiBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVkKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+PiBnZXRBbGxTdHlsZVNoZWV0cygpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGVTaGVldEJvZHk+PiBnZXRTdHlsZVNoZWV0KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxTdHJpbmc+IGdldFN0eWxlU2hlZXRUZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToK
ICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkIHsgMSB9OwogICAgIGJvb2wgbV9jcmVhdGluZ1Zp
YUluc3BlY3RvclN0eWxlU2hlZXQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZCwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpMYXlvdXRDb250ZXh0VHlwZT4+IG1fbm9kZXNXaXRoUGVuZGluZ0xheW91dENvbnRleHRUeXBl
Q2hhbmdlczsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBz
dGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+
PiBtX25vZGVzV2l0aFBlbmRpbmdMYXlvdXRDb250ZXh0VHlwZUNoYW5nZXM7CiAgICAgVGltZXIg
bV9sYXlvdXRDb250ZXh0VHlwZUNoYW5nZWRUaW1lcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkxheW91dENvbnRleHRUeXBlQ2hhbmdlZE1vZGUgbV9sYXlvdXRDb250ZXh0VHlwZUNo
YW5nZWRNb2RlIHsgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZUNo
YW5nZWRNb2RlOjpPYnNlcnZlZCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjA0NWMzNDI2
MWY1OGY3NzZlZDNhY2JhZDkxNDhmMmNhNGNkOWQzNy4uMjI2Yzc5NDgxZjZlN2ZiMTdlM2ViNmIz
ZmRhZDhlNzZhYzhmMTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0UmVj
b3JkaW5nQXV0b0NhcHR1cmVGcmFtZQogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhj
b25zdCBQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYgY2FudmFzSWQsIE9wdGlvbmFsPGludD4m
JiBmcmFtZUNvdW50LCBPcHRpb25hbDxpbnQ+JiYgbWVtb3J5TGltaXQpCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoY29u
c3QgUHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzSWQmIGNhbnZhc0lkLCBzdGQ6Om9wdGlvbmFsPGlu
dD4mJiBmcmFtZUNvdW50LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBtZW1vcnlMaW1pdCkKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dAogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2FudmFzTWVtb3J5Q2hhbmdlZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgbm9kZS0+
bWVtb3J5Q29zdCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzQ2hh
bmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikK
K3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2Fu
dmFzQmFzZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JikKIHsKICAgICBhdXRvKiBj
b250ZXh0ID0gY2FudmFzQmFzZS5yZW5kZXJpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0
KQpAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0
cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQogI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCiAKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OKEFyZ3Vt
ZW50VHlwZSkgXAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3Vt
ZW50KSBcCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1
bWVudCkgXAogeyBcCiAgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2Fu
dmFzKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOyBcCiAgICAgQVNTRVJUKGluc3BlY3RvckNhbnZh
cyk7IFwKQEAgLTgyNSw3ICs4MjUsNyBAQCBJbnNwZWN0b3JDYW52YXMmIEluc3BlY3RvckNhbnZh
c0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleAogI2lmIEVO
QUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4
dCkpIHsKICAgICAgICAgYXV0byYgY29udGV4dFdlYkdMID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZT4oY29udGV4dCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gZXh0ZW5zaW9ucyA9IGNvbnRleHRXZWJHTC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkp
IHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGV4dGVuc2lvbnMg
PSBjb250ZXh0V2ViR0wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uIDogKmV4dGVuc2lvbnMpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dFdlYkdMLmV4dGVuc2lvbklzRW5hYmxlZChleHRlbnNpb24pKQogICAg
ICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXh0ZW5zaW9uRW5hYmxlZChp
bnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgZXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRl
eCBiZDc4NmQ5ODQ2YTJkMTFlZWExYjY0ODM1MDdjZmY3Y2YyOTg5MmExLi45NmY4Njg5NDI0MGE1
NGFkNzQwNzc2OTYzYzMwNGUzOWI1Yjg1ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPj4+IHJlcXVlc3RD
bGllbnROb2Rlcyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJik7
CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gcmVzb2x2ZUNvbnRleHQoY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJZCYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0
UmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KGludCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJiwgT3B0aW9uYWw8aW50PiYmIGZyYW1lQ291bnQs
IE9wdGlvbmFsPGludD4mJiBtZW1vcnlMaW1pdCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDYW52YXM6OkNhbnZhc0lkJiwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZnJhbWVDb3VudCwg
c3RkOjpvcHRpb25hbDxpbnQ+JiYgbWVtb3J5TGltaXQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJik7CiAjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUo
V0VCR1BVKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBy
ZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJv
Z3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJUeXBlKTsKQEAgLTkx
LDcgKzkxLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdF
QkdQVSkKIAogICAgIC8vIENhbnZhc09ic2VydmVyCi0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKENh
bnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBj
YW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4m
KSBmaW5hbDsKICAgICB2b2lkIGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKENhbnZhc0Jhc2UmKSBmaW5hbDsKIApAQCAtMTIwLDcg
KzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIKICNk
ZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTihBcmd1bWVudFR5cGUpIFwKLSAgICBP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gcHJv
Y2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBcCisg
ICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5
cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9F
QUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVO
VF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBAIC0x
MjgsOSArMTI4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0cnVjdCBSZWNvcmRpbmdP
cHRpb25zIHsKLSAgICAgICAgT3B0aW9uYWw8bG9uZz4gZnJhbWVDb3VudDsKLSAgICAgICAgT3B0
aW9uYWw8bG9uZz4gbWVtb3J5TGltaXQ7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxsb25nPiBmcmFtZUNvdW50OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGxvbmc+IG1lbW9yeUxpbWl0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bmFtZTsKICAgICB9OwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3IsIFJlY29yZGluZ09wdGlv
bnMmJiA9IHsgfSk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNl
dDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnM7CiAKLSAgICBPcHRpb25hbDxz
aXplX3Q+IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50OworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZTYzNjJjNTZlY2E3MDA3NTRkMWE0M2U0
NmEwMWY4YWVmYmM4Y2U5OC4uZDQ2MmVmYzMwNmEyOTliNThlNzhjNWQ5NGU2ZTg3NTdlMTczNGQ4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhUZXh0U2l6ZSA9IDEwMDAwOwogc3RhdGljIGNv
bnN0IFVDaGFyIGVsbGlwc2lzVUNoYXJbXSA9IHsgMHgyMDI2LCAwIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yT2JqZWN0
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHBhcnNlQ29sb3IoUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBjb2xvck9iamVjdCkKIHsKICAgICBpZiAoIWNvbG9yT2JqZWN0KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTc3LDcgKzU3Nyw3IEBAIE5vZGUqIEluc3BlY3RvckRP
TUFnZW50Ojpub2RlRm9ySWQoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIGlkKQogICAgIHJldHVybiBt
X2lkVG9Ob2RlLmdldChpZCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhQcm90b2NvbDo6RE9NOjpOb2RlSWQg
bm9kZUlkLCBPcHRpb25hbDxpbnQ+JiYgZGVwdGgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMoUHJvdG9jb2w6OkRPTTo6
Tm9kZUlkIG5vZGVJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZGVwdGgpCiB7CiAgICAgaW50IHNh
bml0aXplZERlcHRoOwogCkBAIC0xMDcwLDcgKzEwNzAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+PiBJbnNwZWN0
b3JETwogICAgIHJldHVybiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKCpu
b2RlKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxTdHJpbmcgLyog
c2VhcmNoSWQgKi8sIGludCAvKiByZXN1bHRDb3VudCAqLz4+IEluc3BlY3RvckRPTUFnZW50Ojpw
ZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheT4mJiBu
b2RlSWRzLCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUpCitQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAvKiBzZWFyY2hJZCAqLywgaW50IC8qIHJlc3VsdENv
dW50ICovPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiBx
dWVyeSwgUmVmUHRyPEpTT046OkFycmF5PiYmIG5vZGVJZHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBjYXNlU2Vuc2l0aXZlKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmlu
ZzsKIApAQCAtMTI2MSw3ICsxMjYxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChib29sIGVuYWIKICAgICBy
ZXR1cm4geyB9OwogfQogI2Vsc2UKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIGhpZ2hsaWdodENvbmZpZywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93UnVs
ZXJzKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RNb2RlRW5hYmxlZChib29sIGVuYWJsZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
aGlnaGxpZ2h0Q29uZmlnLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd1J1bGVycykKIHsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEyNzQsNyArMTI3NCw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFiCiB9CiAjZW5kaWYKIAotUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3Is
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVz
ZVBhZ2VDb29yZGluYXRlcykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykK
IHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwg
V1RGTW92ZShjb2xvciksIFdURk1vdmUob3V0bGluZUNvbG9yKSwgV1RGTW92ZSh1c2VQYWdlQ29v
cmRpbmF0ZXMpKTsKQEAgLTEyODIsNyArMTI4Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5PiYmIHF1YWRPYmpl
Y3QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKK1Byb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFk
KFJlZjxKU09OOjpBcnJheT4mJiBxdWFkT2JqZWN0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNv
bG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVl
PEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChXVEZNb3ZlKHF1YWRPYmplY3QpLCBx
dWFkLmdldCgpKSkKQEAgLTEyOTMsNyArMTI5Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKFJlZjxKU09OOjpBcnJheT4m
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdo
bGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRp
b25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVD
b2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBh
dXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxp
Z2h0OjpDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihXVEZNb3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwpAQCAt
MTM5Miw3ICsxMzkyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmoKICAgICByZXR1cm4geyB9
OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0Tm9kZShSZWY8SlNPTjo6T2JqZWN0PiYmIGhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCwgT3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIG5vZGVJZCwgY29uc3QgUHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCkKK1Byb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKFJlZjxKU09OOjpP
YmplY3Q+JiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29s
OjpET006Ok5vZGVJZD4mJiBub2RlSWQsIGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3RJZCYgb2JqZWN0SWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3Ry
aW5nOwogCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01B
Z2VudDo6c2hvd0dyaWRPdmVybGF5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5v
ZGVJZCwgIFJlZjxKU09OOjpPYmplY3Q+JiYgZ3JpZENvbG9yLCBPcHRpb25hbDxib29sPiYmIHNo
b3dMaW5lTmFtZXMsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOdW1iZXJzLCBPcHRpb25hbDxi
b29sPiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93VHJhY2tT
aXplcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93QXJlYU5hbWVzKQorSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0dyaWRPdmVybGF5
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgIFJlZjxKU09OOjpPYmpl
Y3Q+JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgc3Rk
OjpvcHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVtYmVycywgc3RkOjpvcHRpb25hbDxib29sPiYm
IHNob3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dUcmFja1Np
emVzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0FyZWFOYW1lcykKIHsKICAgICBQcm90b2Nv
bDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzaG93R3JpZE92
ZXJsYXkoSW5zcAogICAgIHJldHVybiB7IH07CiB9CiAKLUluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVHcmlkT3ZlcmxheShPcHRp
b25hbDxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYgbm9kZUlkKQorSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUdyaWRPdmVybGF5
KHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIG5vZGVJZCkKIHsKICAgICBp
ZiAobm9kZUlkKSB7CiAgICAgICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsK
QEAgLTE1MTgsNyArMTUxOCw3IEBAIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVHcmlkT3ZlcmxheShPcHRpCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UHJvdG9jb2w6OkRPTTo6Tm9kZUlk
PiBJbnNwZWN0b3JET01BZ2VudDo6bW92ZVRvKFByb3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQs
IFByb3RvY29sOjpET006Ok5vZGVJZCB0YXJnZXROb2RlSWQsIE9wdGlvbmFsPFByb3RvY29sOjpE
T006Ok5vZGVJZD4mJiBpbnNlcnRCZWZvcmVOb2RlSWQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3BlY3RvckRPTUFnZW50Ojptb3ZlVG8oUHJvdG9j
b2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHRhcmdldE5vZGVJ
ZCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYgaW5zZXJ0QmVmb3JlTm9k
ZUlkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmlu
ZGV4IGZkNGVhMjVkNTIwZjQxMWM4YTgwZGRjMzkxZmMxYTNhY2YyNTljN2UuLjc0YTYwZjYxODA5
MjY3NmQ4YmVlODc1MzhjOWQ2OTdmM2M1ODQzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcXVlcnlTZWxlY3RvcihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rvcik7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGVJZD4+PiBxdWVyeVNlbGVjdG9yQWxsKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGU+PiBnZXREb2N1bWVudCgpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gcmVxdWVzdENoaWxkTm9kZXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
SWQsIE9wdGlvbmFsPGludD4mJiBkZXB0aCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiByZXF1ZXN0Q2hpbGROb2RlcyhJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZGVwdGgpOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QXR0cmlidXRlVmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBz
ZXRBdHRyaWJ1dGVzQXNUZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVBdHRyaWJ1dGUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xMjUsNyArMTI1LDcg
QEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpF
dmVudExpc3RlbmVySWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucyk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcihJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXJJZCk7
CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4+IGdldEFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7Ci0gICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAvKiBz
ZWFyY2hJZCAqLywgaW50IC8qIHJlc3VsdENvdW50ICovPj4gcGVyZm9ybVNlYXJjaChjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgbm9kZUlkcywgT3B0aW9uYWw8Ym9v
bD4mJiBjYXNlU2Vuc2l0aXZlKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHN0ZDo6dHVwbGU8U3RyaW5nIC8qIHNlYXJjaElkICovLCBpbnQgLyogcmVzdWx0Q291bnQg
Ki8+PiBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVlcnksIFJlZlB0cjxKU09OOjpBcnJh
eT4mJiBub2RlSWRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSk7CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+PiBnZXRTZWFyY2hSZXN1bHRzKGNvbnN0IFN0
cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4KTsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGRpc2NhcmRTZWFyY2hSZXN1bHRzKGNv
bnN0IFN0cmluZyYgc2VhcmNoSWQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IHJl
c29sdmVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwKTsKQEAgLTEzMywyMCArMTMzLDIwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0SW5zcGVjdE1vZGVFbmFibGVkKGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGln
aGxpZ2h0Q29uZmlnKTsKICNlbHNlCi0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBoaWdobGlnaHRDb25maWcsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd1J1bGVycyk7CisgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9kZUVu
YWJsZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBzaG93UnVsZXJzKTsKICNlbmRpZgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IHJl
cXVlc3ROb2RlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZD4gcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgcGF0aCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBoaWRlSGlnaGxpZ2h0KCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBoaWdobGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91
dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlnaGxpZ2h0UXVhZChSZWY8
SlNPTjo6QXJyYXk+JiYgcXVhZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvciwgUmVmUHRy
PEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIE9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNv
b3JkaW5hdGVzKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IGhpZ2hsaWdodFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNv
bG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodFF1YWQoUmVmPEpT
T046OkFycmF5PiYmIHF1YWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IGhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmln
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpGcmFtZUlkJik7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBoaWdobGlnaHROb2RlKFJlZjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29u
ZmlnLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4mJiwgY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodE5vZGUoUmVmPEpT
T046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBoaWdobGlnaHROb2RlTGlzdChSZWY8SlNPTjo6QXJyYXk+JiYgbm9kZUlkcywg
UmVmPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlnaGxpZ2h0RnJhbWUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29s
b3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yKTsKLSAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNob3dHcmlkT3ZlcmxheShJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZCwgUmVmPEpTT046Ok9iamVjdD4mJiBncmlkQ29sb3IsIE9w
dGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93TGluZU51
bWJlcnMsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0V4dGVuZGVkR3JpZExpbmVzLCBPcHRpb25hbDxi
b29sPiYmIHNob3dUcmFja1NpemVzLCBPcHRpb25hbDxib29sPiYmIHNob3dBcmVhTmFtZXMpOwot
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGlkZUdyaWRPdmVy
bGF5KE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmKTsKLSAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZUlkPiBtb3ZlVG8oSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCB0YXJnZXROb2RlSWQsIE9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIGluc2VydEJlZm9yZU5vZGVJZCk7
CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzaG93R3JpZE92
ZXJsYXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIFJlZjxKU09OOjpPYmplY3Q+
JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgc3RkOjpv
cHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVtYmVycywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNo
b3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dUcmFja1NpemVz
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0FyZWFOYW1lcyk7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWRlR3JpZE92ZXJsYXkoc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4mJik7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4g
bW92ZVRvKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgdGFyZ2V0Tm9kZUlkLCBzdGQ6Om9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYmIGluc2VydEJlZm9yZU5vZGVJZCk7CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiB1bmRvKCk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZWRvKCk7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBtYXJrVW5kb2FibGVTdGF0ZSgpOwpA
QCAtMjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygp
OwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVh
ZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAg
dm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNv
bG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMjU2Njgx
NWMzYWYwYmIxYjVkMzcyN2RiYzQ2OGYzMGUzZTY0ODIyYy4uYWU3ZmE0ODI3MzgwNjA0YjE0ZjE2
MjUyYzhhODBhMmVkNGQ3MjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMTQs
NyArMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRGaXJlVGltZXIo
Ym9vbCBvbmVTaG90KQogICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFs
QnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFVSTEJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiB1cmwsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBvcHRpb25zKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6c2V0VVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGlzUmVnZXgsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykKIHsK
ICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTM0MCw3ICszNDAs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRVUkxCcmVha3BvaW50KGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3Zl
VVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4
KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6cmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGlzUmVnZXgpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KCFtX3BhdXNlT25BbGxVUkxzQnJlYWtwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXgg
ODk2MDllY2ZjMGQ4Nzk2NzQxZDQ1NWEwM2U3ZGFjMDkxZThkY2M4ZC4uODVlMDVhMzFlNWM4N2Nm
YjJmYmRhZDMzMDlmNzFjZDYzZDlhMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTYz
LDggKzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAK
ICAgICAvLyBET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgotICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0VVJMQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIG9wdGlvbnMpIGZpbmFsOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gcmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8
Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IHNldFVSTEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZp
bmFsOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVtb3Zl
VVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlz
UmVnZXgpIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0RXZlbnRCcmVha3BvaW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpF
dmVudEJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IHJlbW92ZUV2ZW50QnJlYWtwb2ludChJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5h
bWUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDc1ZGU1N2E1ZWQ4ZjhlN2Nm
MGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYuLjdmODA2ZDRmYzgxY2QyYjA0MzIyYjNkMGQ4MGJlNDQ0
MDRiYmQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9p
ZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBT
ZWN1cml0eU9yaWdpbiosIGNvbnMKIH0KIAogCi1zdGF0aWMgUmVmPFByb3RvY29sOjpJbmRleGVk
REI6OktleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYgaWRiS2V5UGF0aCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UGF0
aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
IGlkYktleVBhdGgpCiB7CiAgICAgaWYgKCFpZGJLZXlQYXRoKQogICAgICAgICByZXR1cm4gUHJv
dG9jb2w6OkluZGV4ZWREQjo6S2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXlQYXRoOjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggZDk5ODNjMDA2ODMxNjM3NTIxMzBiYzY1OGQ2ZDVkNzcwOTVmZjU5NC4uMTJhNmQzZTI3
ZDRkMzkzYzNhY2NiYjdiYjYwNDU5MGUwOWUwNjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIFJlZjxQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pCiAgICAgYXV0byBlbGFwc2Vk
VGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9uaWNUaW1lJiB0aW1lKSB7CiAgICAgICAgIHJl
dHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lU2luY2Uo
dGltZSkuc2Vjb25kcygpOwogICAgIH07Ci0gICAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNz
PiBlbXB0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CiAg
ICAgaWYgKCF0aW1pbmcpIHsKICAgICAgICAgZW1wdHkuZW1wbGFjZSgpOwogICAgICAgICB0aW1p
bmcgPSAmZW1wdHkudmFsdWUoKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMbwogICAgIGF1dG8gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3Qo
ZG9jdW1lbnQsICZyZXF1ZXN0KTsKIAogICAgIFN0cmluZyB1cmwgPSBsb2FkZXIgPyBsb2FkZXIt
PnVybCgpLnN0cmluZygpIDogcmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKLSAgICBPcHRpb25hbDxQ
cm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlPiB0eXBlUGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU+IHR5cGVQYXlsb2FkOwogICAgIGlmICh0
eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlwZVBh
eWxvYWQgPSBwcm90b2NvbFJlc291cmNlVHlwZTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgdXJsLCBidWls
ZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgc2VuZFRpbWVzdGFtcCwgd2FsbHRp
bWUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCksIFdURk1vdmUoaW5pdGlhdG9yT2JqZWN0
KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIG51bGxw
dHIpLCBXVEZNb3ZlKHR5cGVQYXlsb2FkKSwgdGFyZ2V0SWQpOwpAQCAtNTA0LDcgKzUwNCw3IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRp
ZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25hbDxSZXNv
dXJjZVJlc3BvbnNlPiByZWFsUmVzcG9uc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJl
c3BvbnNlPiByZWFsUmVzcG9uc2U7CiAgICAgaWYgKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Fk
ZXJTdHJhdGVneSgpLT5oYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MocmVzcG9uc2UpKSB7CiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CiAgICAgICAgICAgICAvLyBXZSBk
byBub3QgbmVlZCB0byBpc29sYXRlIHJlc3BvbnNlIHNpbmNlIGl0IGNvbWVzIHN0cmFpZ2h0IGZy
b20gSVBDLCBidXQgd2UgbWlnaHQgd2FudCB0byBpc29sYXRlIGl0IGZvciBleHRyYSBzYWZldHku
CkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBpZiAocmVz
b3VyY2VEYXRhICYmIHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKICAgICAgICAgc291
cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3Vy
Y2UocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIE9wdGlvbmFsPE5ldHdv
cmtMb2FkTWV0cmljcz4gcmVhbE1ldHJpY3M7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9h
ZE1ldHJpY3M+IHJlYWxNZXRyaWNzOwogICAgIGlmIChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+c2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkgJiYgIW5ldHdvcmtM
b2FkTWV0cmljcy5pc0NvbXBsZXRlKCkpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoWyZdIHsKICAgICAgICAgICAgIHJlYWxNZXRyaWNzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPm5ldHdvcmtNZXRyaWNzRnJvbVJlc291cmNlTG9hZElkZW50aWZp
ZXIoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCk7CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVy
Y2VwdGlvbkVuYWJsZWQoYm9vbAogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKGNv
bnN0IFN0cmluZyYgdXJsLCBQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlIG5ldHdvcmtT
dGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlz
UmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVybCwgUHJvdG9jb2w6Ok5ldHdvcms6
Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vu
c2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAgICBJbnRlcmNlcHQg
aW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CkBAIC0xMDgyLDcgKzEwODIsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFk
ZEludGVyY2VwdGlvbihjb25zdCBTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJj
ZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
IG5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxi
b29sPiYmIGlzUmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVybCwgUHJvdG9j
b2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAg
ICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CkBAIC0xMjE0
LDcgKzEyMTQsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8aW50PiYmIHN0YXR1cywgY29uc3QgU3RyaW5n
JiBzdGF0dXNUZXh0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGhlYWRlcnMpCitQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShjb25zdCBQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVz
VGV4dCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoZWFkZXJzKQogewogICAgIGF1dG8gcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVx
dWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkKQEAgLTEzNTYsNyAr
MTM1Niw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmNyZWF0ZVRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCAiVVRGLTgiKTsKIH0KIAotT3B0aW9uYWw8
U3RyaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6dGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KGNhY2hlZFJlc291cmNlLm1pbWVUeXBlKCkpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGljIFJl
ZjxQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3Vs
dChjb25zdCBQcm90b2MKICAgICByZXR1cm4gc2VhcmNoUmVzdWx0OwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJlc291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhJiByZXNvdXJjZURhdGEpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yUmVzb3VyY2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHJlc291cmNlRGF0YSkKIHsKICAgICBpZiAocmVzb3Vy
Y2VEYXRhLmhhc0NvbnRlbnQoKSAmJiAhcmVzb3VyY2VEYXRhLmJhc2U2NEVuY29kZWQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc291cmNlRGF0YS5jb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4
YjJlMjk2NzA1YTVhZDdiMzdiNTVhNGZiNjY3ZmYwZDhkMzJmOTc5Li5lYmVkMjkyN2QxNzYxYzZi
YzFmY2EzM2Y4ZjA0ZTE0YWMwMTAzNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVh
dGVUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9y
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsK
ICAgICBzdGF0aWMgYm9vbCBjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmLCBT
dHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAKICAgICAvLyBJbnNwZWN0b3JB
Z2VudEJhc2UKQEAgLTg3LDExICs4NywxMSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmKSBmaW5hbDsKICAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiByZXNvbHZlV2ViU29ja2V0KGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c2V0SW50ZXJjZXB0aW9uRW5hYmxlZChib29sKSBmaW5hbDsKLSAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVy
bCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlLCBPcHRpb25hbDxi
b29sPiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7Ci0g
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVJbnRlcmNl
cHRpb24oY29uc3QgU3RyaW5nJiB1cmwsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5l
dHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29s
PiYmIGlzUmVnZXgpIGZpbmFsOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gYWRkSW50ZXJjZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNl
U2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7CisgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1vdmVJbnRlcmNlcHRpb24o
Y29uc3QgU3RyaW5nJiB1cmwsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtT
dGFnZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IGludGVyY2VwdENvbnRpbnVlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlcXVlc3RJZCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdv
cmtTdGFnZSkgZmluYWw7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBpbnRlcmNlcHRXaXRoUmVxdWVzdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpSZXF1ZXN0SWQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBwb3N0RGF0YSkg
ZmluYWw7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRl
cmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVx
dWVzdElkJiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGludD4mJiBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoZWFkZXJzKSBmaW5hbDsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGludGVyY2VwdFdpdGhSZXNw
b25zZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1Rl
eHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVhZGVycykgZmluYWw7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIGNvbnN0
IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIFJlZjxKU09OOjpPYmpl
Y3Q+JiYgaGVhZGVycykgZmluYWw7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OlJlc291cmNlRXJyb3JUeXBlKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMzMGM3NTM2OWYx
YTYwNjA3YTRkNTljYzNlZDY2NmQ1ZmViN2QyMGQuLmY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZi
MGE0NGIxY2I3MWFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBkb3VibGUg
SW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAoKQogICAgIHJldHVybiBtX2Vudmlyb25tZW50
LmV4ZWN1dGlvblN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpOwogfQogCi1Qcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChPcHRp
b25hbDxib29sPiYmIGlnbm9yZUNhY2hlLCBPcHRpb25hbDxib29sPiYmIHJldmFsaWRhdGVBbGxS
ZXNvdXJjZXMpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlbG9hZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQogewogICAgIE9wdGlvblNldDxSZWxv
YWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGlnbm9yZUNhY2hlICYmICppZ25vcmVD
YWNoZSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlVXNlckFnZW50KGNvbnN0IFN0cmluZwogICAgIHJl
dHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBh
Z2VBZ2VudDo6b3ZlcnJpZGVTZXR0aW5nKFByb3RvY29sOjpQYWdlOjpTZXR0aW5nIHNldHRpbmcs
IE9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlU2V0dGluZyhQcm90b2NvbDo6UGFnZTo6U2V0dGlu
ZyBzZXR0aW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpCiB7CiAgICAgYXV0byYgaW5z
cGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0ZWRQYWdlLnNldHRpbmdzKCk7CiAKQEAgLTU2
Miw3ICs1NjIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UGFnZTo6Q29va2llPj4+IEluc3BlY3RvclBhZwogICAgIHJldHVybiBidWlsZEFy
cmF5Rm9yQ29va2llcyhhbGxSYXdDb29raWVzKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENvb2tp
ZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
UmVmPEpTT046Ok9iamVjdD4mJiBjb29raWVPYmplY3QpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIFJlZjxKU09OOjpPYmplY3Q+JiYgY29va2llT2JqZWN0KQogewogICAgIENvb2tpZSBjb29r
aWU7CiAKQEAgLTcwMyw3ICs3MDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNldEJvb3RzdHJhcFNjcmlwdChjb25zdCBTdHJpbgogICAgIHJl
dHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9m
PFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+IEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZShjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIE9wdGlvbmFsPGJv
b2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBjb25zdCBQcm90
b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1ZXN0SWQpCitQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoY29uc3QgUHJvdG9jb2w6
Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGlzUmVnZXgsIGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQm
IHJlcXVlc3RJZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAK
QEAgLTc1Niw3ICs3NTYsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFByb3RvYwogICAgICAgICAucmVs
ZWFzZSgpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5z
aXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+Pj4gSW5zcGVj
dG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNS
ZWdleCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlBhZ2U6
OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVk
aWEoY29uc3QgU3RyaW5nJgogfQogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpIHx8IEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoT3B0aW9uYWw8UHJvdG9jb2w6OlBh
Z2U6OkFwcGVhcmFuY2U+JiYgYXBwZWFyYW5jZSkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Rm9yY2VkQXBwZWFyYW5jZShzdGQ6Om9wdGlvbmFs
PFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYmIGFwcGVhcmFuY2UpCiB7CiAgICAgaWYgKCFh
cHBlYXJhbmNlKSB7CiAgICAgICAgIG1faW5zcGVjdGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5j
ZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSgpCiAjZW5k
aWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKE9wdGlvbmFsPGludD4m
JiB3aWR0aCwgT3B0aW9uYWw8aW50PiYmIGhlaWdodCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKHN0ZDo6b3B0
aW9uYWw8aW50PiYmIHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBoZWlnaHQpCiB7CiAgICAg
aWYgKHdpZHRoLmhhc192YWx1ZSgpICE9IGhlaWdodC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJTY3JlZW4gd2lkdGggYW5kIGhlaWdodCBvdmVycmlkZSBzaG91
bGQgYmUgYm90aCBzcGVjaWZpZWQgb3Igb21pdHRlZCJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA3OGE5ODIy
NGFiNTQ1MGUwNzI5NzUxNTcxZmUxYmI5NTdkMzAzMzAxLi5kZWMzZDAwMWIxZDQxZDRmM2YyNDVj
YWY1MGFkZjc4OGExOTY1MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTk0LDI1ICs5NCwyNSBAQCBwdWJsaWM6
CiAgICAgLy8gUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNhYmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZWxvYWQoT3B0aW9uYWw8Ym9vbD4mJiBpZ25vcmVD
YWNoZSwgT3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3VyY2VzKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbG9hZChzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxs
UmVzb3VyY2VzKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IG92ZXJyaWRlVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gb3ZlcnJpZGVTZXR0aW5n
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNldHRpbmcsIE9wdGlvbmFsPGJvb2w+JiYgdmFs
dWUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gb3ZlcnJp
ZGVTZXR0aW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNldHRpbmcsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiB2YWx1ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+Pj4g
Z2V0Q29va2llcygpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0Q29va2llKFJlZjxKU09OOjpPYmplY3Q+JiYpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVl
Pj4gZ2V0UmVzb3VyY2VUcmVlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxzdGQ6OnR1cGxlPFN0cmluZywgYm9vbCAvKiBiYXNlNjRFbmNvZGVkICovPj4gZ2V0UmVz
b3VyY2VDb250ZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQm
LCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBzZXRCb290c3RyYXBTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+PiBzZWFyY2hJblJl
c291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNl
U2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
U2VhcmNoUmVzdWx0Pj4+IHNlYXJjaEluUmVzb3VyY2VzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFs
PGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KTsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gc2VhcmNoSW5SZXNv
dXJjZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBj
YXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCwgY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJik7CisgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpTZWFyY2hSZXN1bHQ+Pj4gc2VhcmNoSW5SZXNvdXJjZXMoY29uc3QgU3RyaW5nJiwg
c3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBpc1JlZ2V4KTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNob3dSdWxlcnMoYm9vbCk7CiAjZW5kaWYK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNob3dQYWlu
dFJlY3RzKGJvb2wpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0RW11bGF0ZWRNZWRpYShjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykgfHwgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldEZvcmNlZEFwcGVhcmFuY2UoT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZT4mJik7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRGb3JjZWRBcHBlYXJhbmNlKHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZT4mJik7CiAjZW5kaWYK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gc25hcHNob3RO
b2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gc25hcHNob3RSZWN0KGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29yZGlu
YXRlU3lzdGVtKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGFyY2hpdmUoKTsKICNlbmRpZgogI2lmICFQ
TEFURk9STShDT0NPQSkKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IHNldFNjcmVlblNpemVPdmVycmlkZShPcHRpb25hbDxpbnQ+JiYgd2lkdGgsIE9wdGlvbmFs
PGludD4mJiBoZWlnaHQpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc2V0U2NyZWVuU2l6ZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8aW50PiYmIHdpZHRoLCBz
dGQ6Om9wdGlvbmFsPGludD4mJiBoZWlnaHQpOwogI2VuZGlmCiAKICAgICAvLyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDU0MTM3MDdiNTdkOTRlYWIy
M2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUuLmI3YzZiMGViMjM0ZmIxMDMzOWVkMWFmZDI4YTU5NzJh
YTE0MDQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpc2FibGUo
KQogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KE9wdGlvbmFsPGludD4mJiBtYXhDYWxsU3RhY2tE
ZXB0aCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKQogewogICAg
IG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgPSB0cnVlOwogCkBAIC0xNzgsNyArMTc4LDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SW5z
dHJ1bWVudHMoUmVmPEpTT046OkEKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoT3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFj
a0RlcHRoKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KHN0ZDo6
b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKQogewogICAgIGlmIChtX3RyYWNraW5n
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDk0ZjdlZmY3MzU1ZjhjNWNh
MGMzYmJlYjU2NGQwYjU1NmJhZjE0ZjcuLjI3Zjk2OGUzMzAzZmRiZjI1Y2Y0ZTFkM2QyMWViODYx
MjVkNzcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNhYmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydChPcHRpb25hbDxpbnQ+JiYgbWF4Q2FsbFN0
YWNrRGVwdGgpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c3RhcnQoc3RkOjpvcHRpb25hbDxpbnQ+JiYgbWF4Q2FsbFN0YWNrRGVwdGgpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcCgpOwogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QXV0b0NhcHR1cmVFbmFibGVkKGJv
b2wpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0SW5z
dHJ1bWVudHMoUmVmPEpTT046OkFycmF5PiYmKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRl
OgogICAgICAgICBUaW1lbGluZVJlY29yZFR5cGUgdHlwZTsKICAgICB9OwogCi0gICAgdm9pZCBp
bnRlcm5hbFN0YXJ0KE9wdGlvbmFsPGludD4mJiBtYXhDYWxsU3RhY2tEZXB0aCk7CisgICAgdm9p
ZCBpbnRlcm5hbFN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKTsK
ICAgICB2b2lkIGludGVybmFsU3RvcCgpOwogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRB
Z2VudC5jcHAKaW5kZXggOWFjZmU0ZGQ0YjE2MGVlOWIzODkxMGNjOWM3NWEyNDEyNGNlZmVkZi4u
ZDUxMGRjMTcwNThlMTJiYWRlOWFlMDkyZDgwMTllYTg2YzhkMzM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIFBhZ2VBdWRpdEFnZW50OjpQYWdlQXVkaXRBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogCiBQYWdlQXVkaXRBZ2VudDo6flBhZ2VBdWRpdEFnZW50KCkg
PSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+
JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgUGFnZUF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRp
b25Db250ZXh0SWQpCiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwpAQCAtNjUsNyArNjUsNyBAQCBJ
bmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKE9wdGlv
bmFsPFByb3RvY29sOjpSdW50aW1lOgogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IFBh
Z2VBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4m
JiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoV1RGTW92ZShleGVjdXRpb25Db250ZXh0SWQpKTsK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCmluZGV4IDY5
M2ZhYzMyNzQ2OWE5MDQ0ZDg3MDE3NmZhYTJhMWQ0OWZiYTFiMzkuLjdlYjk1YTZkZmE4ZjY0Njdm
MzcwMDFkZDlhYzdhM2QyZjVkYzgzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1
YmxpYzoKICAgICB+UGFnZUF1ZGl0QWdlbnQoKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChPcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwotICAgIEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CisgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJik7CiAKICAgICB2b2lkIHBvcHVsYXRlQXVkaXRPYmplY3QoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiBhdWRpdE9iamVjdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDVmZjk1NmMwZDUyMjc2ZjljOTQwNDg2ZmY1
YzAwZDQ1YjhmZmM1ODguLjZjMjA3MmM0Mjk5NGNlN2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFhNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJiBmcmFtZSkKIH0K
IAogCi1zdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBjYWxjdWxhdGVEaXN0YW5jZShOb2RlJiBjaGls
ZCwgTm9kZSYgYW5jZXN0b3IpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNhbGN1bGF0
ZURpc3RhbmNlKE5vZGUmIGNoaWxkLCBOb2RlJiBhbmNlc3RvcikKIHsKICAgICBzaXplX3QgZGlz
dGFuY2UgPSAwOwogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmIChtX2RvbVN1YnRyZWVN
b2RpZmllZEJyZWFrcG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0
aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGNsb3Nlc3REaXN0YW5jZTsKICAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBjbG9zZXN0QnJl
YWtwb2ludDsKICAgICBOb2RlKiBjbG9zZXN0QnJlYWtwb2ludE93bmVyID0gbnVsbHB0cjsKIApA
QCAtMjE4LDkgKzIxOCw5IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVE
T01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKG1fZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50cy5p
c0VtcHR5KCkgJiYgbV9kb21TdWJ0cmVlTW9kaWZpZWRCcmVha3BvaW50cy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gY2xvc2VzdERpc3RhbmNlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7CiAgICAgUmVmUHRyPEpT
Qzo6QnJlYWtwb2ludD4gY2xvc2VzdEJyZWFrcG9pbnQ7Ci0gICAgT3B0aW9uYWw8UHJvdG9jb2w6
OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlw
ZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBlOwogICAgIE5vZGUqIGNsb3Nlc3RCcmVha3BvaW50T3du
ZXIgPSBudWxscHRyOwogCiAgICAgZm9yIChhdXRvIFticmVha3BvaW50T3duZXIsIGJyZWFrcG9p
bnRdIDogbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA3NDZkYTFhNGQzZTAzYTg3MWI3ODgwYTNlNTI4NTZiMGVkMjgzNWNkLi5lNmMxZDAxODBj
NGJjYzg5NWQyOTU0MTI1YjQ2MTkxN2M1ZjVhZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgYm9vbCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdlbnQo
KSA9PSB0aGlzICYmIFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKTsKIH0KIAotUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBz
YXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZURlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJh
bWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYgY2FsbEZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9u
YWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5
VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYm
IHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQorUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlv
bmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VEZWJ1Z2dlckFnZW50OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmIGNh
bGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
Z2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpv
cHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUVt
dWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNl
ckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2
b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIG1faW5zcGVjdGVkUGFnZS5jb25zb2xlKCkuYWRk
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKLUluamVjdGVk
U2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBQ
YWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1
dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRp
b25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUg
PSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5oCmluZGV4IGVlODE0Njc0NTI4YjkzYjQ2MDhkNzdiODViOTlmOTFlMGEwNDRiMWUu
LjE3ODgxYjExNGUzMzA5ZDdkM2I3ODBkZTBkYWIzYTIwNDRmYmJiZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2Vu
dC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsK
IAogICAgIC8vIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24g
Ki8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlT25DYWxs
RnJhbWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRp
b25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05v
dFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJu
QnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+
JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpOworICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29s
PiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4
ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBK
U0M6OkRlYnVnZ2VyOjpDbGllbnQKICAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6
RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwpAQCAtNzcsNyArNzcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKTsKICAgICB2b2lkIHVubXV0ZUNv
bnNvbGUoKTsKIAotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFBhZ2UmIG1faW5zcGVjdGVk
UGFnZTsKICAgICBWZWN0b3I8VW5pcXVlUmVmPFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU+PiBt
X2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3RhY2s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAKaW5kZXggMDBlNjlmMWFhMmUzZjhlYTJmNDQ1ZThkZDQ0NmRkMTZlYTYzNjNkZi4u
YjMyZjNmNjk5YzJkMmEzNzcyODk3NjBiMjQ1YWM4MTc4NDEwMjQ1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkCiAgICAgbm90
aWZ5Q29udGV4dENyZWF0ZWQocGFnZUFnZW50LT5mcmFtZUlkKCZmcmFtZSksIGZyYW1lLnNjcmlw
dCgpLmdsb2JhbE9iamVjdCh3b3JsZCksIHdvcmxkKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgUGFn
ZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250
ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQp
IHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRF
eGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CkBAIC0xODksMTMgKzE4OSwx
MyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFBy
b3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcgogICAgICAgICAucmVsZWFzZSgpKTsKIH0KIAot
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8
aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZVJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUo
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRp
b25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05v
dFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50
aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkLCBPcHRpb25hbDxi
b29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBP
cHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJH
ZXN0dXJlKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3du
ICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VSdW50
aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElk
PiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFs
dWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0
dXJlKQogewogICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUgdXNlckdlc3R1cmVTY29wZSht
X2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2VzdHVyZSAmJiAqZW11bGF0ZVVzZXJHZXN0dXJl
KTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShleHByZXNzaW9u
LCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRlQ29tbWFuZExpbmVBUEkpLCBXVEZNb3ZlKGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUoZXhlY3V0aW9uQ29u
dGV4dElkKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcp
LCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQog
Ci1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gUGFnZVJ1
bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SlNP
Tjo6QXJyYXk+JiYgb3B0aW9uYWxBcmd1bWVudHMsIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFs
dWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIGVt
dWxhdGVVc2VyR2VzdHVyZSkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8q
IHdhc1Rocm93biAqLz4+IFBhZ2VSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0IFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVy
ZSkKIHsKICAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9p
bnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVyZSk7
CiAgICAgcmV0dXJuIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24ob2JqZWN0
SWQsIGV4cHJlc3Npb24sIFdURk1vdmUob3B0aW9uYWxBcmd1bWVudHMpLCBXVEZNb3ZlKGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSks
IFdURk1vdmUoZ2VuZXJhdGVQcmV2aWV3KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5oCmluZGV4IDI5ODQ2NWM1MmI0MjQ2NGMyNzMzNjU5ZTA3ZjNmNzYwMTc0YTk1
ZWIuLjZhYmEzYTJjNmU4YmJiN2EwYmNhNGYwNzgyNGNmNGRlOGNlMzZmOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuaApAQCAtNTYsMTUgKzU2LDE1IEBAIHB1YmxpYzoKICAgICAvLyBSdW50aW1lQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBlbmFibGUoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IGRpc2FibGUoKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0
ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJl
c3VsdEluZGV4ICovPj4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiwgT3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdl
bmVyYXRlUHJldmlldywgT3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBPcHRpb25hbDxib29s
PiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBjYWxsRnVuY3Rpb25P
bihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywg
T3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9w
dGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVBy
ZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKTsKKyAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2Fz
VGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2
YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+
JiYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwg
c3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Ro
cm93biAqLz4+IGNhbGxGdW5jdGlvbk9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SlNP
Tjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlW
YWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25h
bDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24KICAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1lJik7CiAgICAgdm9pZCBkaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmLCBET01XcmFwcGVyV29ybGQmKTsKIAogcHJp
dmF0ZToKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZh
bChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CisgICAgSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAgICAgdm9pZCBtdXRlQ29uc29sZSgpOwogICAg
IHZvaWQgdW5tdXRlQ29uc29sZSgpOwogICAgIHZvaWQgcmVwb3J0RXhlY3V0aW9uQ29udGV4dENy
ZWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAKaW5kZXggMmI5MDcz
NTdjYmNiYWI1YjUwOWU5ZDU4MmMwMzRjZDA4ZjNjNGU5Zi4uZjg5NzdkNjNiMDkzZDNiMDEyZWE3
MmE1MzZjMDMxOWRjZTUzZjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFVzZXJHZXN0dXJlRW11
bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFn
ZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUpCiAgICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQoaW5z
cGVjdGVkUGFnZS5jaHJvbWUoKS5jbGllbnQoKSkKLSAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihl
bXVsYXRlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4o
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCkKKyAgICAsIG1fZ2VzdHVyZUlu
ZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KQogICAg
ICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2Vy
V2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDUxNTkw
NDRiYWViMDA0ZDA3ZWI2ZDQ2ZjE3MDNiN2MyMDg3OTgxNDguLjhmN2UxNWVkOTVmMWM5MjJmNGU0
YjFlOWYwODRmMDkzMWUxMTg4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC00OCw3ICs0
OCw3IEBAIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdlbnQoV29ya2VyQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogCiBXb3JrZXJBdWRpdEFnZW50Ojp+V29ya2VyQXVkaXRBZ2VudCgpID0g
ZGVmYXVsdDsKIAotSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFBy
b3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElk
KQorSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9j
b2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7
CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJl
eGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBp
cyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaAppbmRleCA4
NTUyMDc5ODUwZTUwZGVlODVjZTIyNzRiOWY0NTViNDQ5NDMzNTk1Li5mZGE5NDgyNWFhNDU0MDgw
ZDk2OTZkZTBiZTQ5ZDNmNDE2NzY1MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICB+V29ya2VyQXVkaXRBZ2VudCgpOwogCiBwcml2YXRlOgotICAg
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0
aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX2ds
b2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNTA0NzJjZDgx
MDUxNDBhNzNlZGJmNzY4MjcyM2Q3YmMyZjJlNWFkMC4uZDQ2ODQzZmQ2Y2I4MDBkYWJlNTE1MTdj
ZmExMDQ2MGZjYzdlNDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICBtX2dsb2JhbFNjb3BlLmFkZENv
bnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpKSk7CiB9CiAKLUluamVjdGVkU2NyaXB0
IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0
aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKK0luamVjdGVkU2NyaXB0IFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRp
b25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25D
b250ZXh0SWQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9u
IGNvbnRleHQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggODQzM2UzYmNhZmY4Mzdl
YzFlYTMxOGU0OGVhZDBmNjY1OWExZDU2ZC4uZjg5NmNhODY0YjlkNmNlOTc4Y2QwMTgwOGZmNWEw
MTc5M2M0YjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSB7IH0KICAgICB2b2lkIHVubXV0ZUNvbnNv
bGUoKSB7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDEyYjgwMGZjNzhkYTc0ODE5ODQ0MjdlMzJkMjBhOTE1MGRiODZjMTcuLjU4MGRjMGE5M2Iz
Njc3ODFmNzI4OTk1ZGIxYWVkYmViMzdjMTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNw
cApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6fldv
cmtlclJ1bnRpbWVBZ2VudCgpID0gZGVmYXVsdDsKIAotSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVu
dGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+
JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI5MmRiMzczZTYxNWMxODg3NjNkN2I4NzEzYmRi
MDA2ZjMyYjg0NTIuLmE4NGQ4NzU3ZDBlN2MzNDNjYWY2ZmMyYzgwMzVhOWM3ZGEzYmYxNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB+V29y
a2VyUnVudGltZUFnZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250
ZXh0SWQ+JiYpOworICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCiAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBtdXRlIGNvbnNvbGUgZm9yIHdvcmtlcnMuCiAgICAgdm9p
ZCBtdXRlQ29uc29sZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5o
CmluZGV4IDU2YzFlODFiMWE5NWZhZTYxYjA4YzZmYjAzZWE5ZDM4ZTNjOTkyNTMuLjVjZTBkM2Ji
MTVlNzcxN2FkMGM2YjliY2QzNTgyMGFkNDBhYzdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ1N0YXRlLmgKQEAgLTQ5LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBu
ZWVkc0xheW91dChjb25zdCBCb3gmKTsKIAogICAgIHZvaWQgc2V0SW50cmluc2ljV2lkdGhDb25z
dHJhaW50c0ZvckJveChjb25zdCBCb3gmLCAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyk7Ci0g
ICAgT3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gaW50cmluc2ljV2lkdGhDb25z
dHJhaW50c0ZvckJveChjb25zdCBCb3gmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHM+IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29u
c3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjbGVhckludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
Y29uc3QgQm94Jik7CiAKICAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1faW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0KLSAg
ICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
OyB9CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gVHlwZTo6QmxvY2s7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZTsgfQpAQCAtNzksNyArNzks
NyBAQCBwcml2YXRlOgogICAgIExheW91dFN0YXRlJiBtX2xheW91dFN0YXRlOwogICAgIFJlZjxG
bG9hdGluZ1N0YXRlPiBtX2Zsb2F0aW5nU3RhdGU7CiAgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JC
b3hlczsKLSAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiAgICAgLy8gRklYTUU6IFRoaXMg
bmVlZHMgV2Vha0xpc3RIYXNoU2V0CiAgICAgT3V0T2ZGbG93Qm94TGlzdCBtX291dE9mRmxvd0Jv
eGVzOwogICAgIFR5cGUgbV90eXBlOwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgdm9pZCBGb3Jt
YXR0aW5nU3RhdGU6OmNsZWFySW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gmIGxh
eW91dEJveAogICAgIG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzLnJlbW92ZSgm
bGF5b3V0Qm94KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50
c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1fbGF5
b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91dEJveCkgPT0gdGhpcyk7CiAgICAg
YXV0byBpdGVyYXRvciA9IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzLmZpbmQo
JmxheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0UGhh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRQaGFzZS5oCmluZGV4IGQzZTk4Yzg4
ZmZiMjgyOGYwYjUxNDc2YWZiMjBjNzAxYTYwOWNmODMuLjY2NzU5NTUxNjFkZDcyYjNkMDA4YmFm
NjE3MjcyYTJlZjQ0MmUyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRQaGFzZS5oCkBAIC01
MCw5ICs1MCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldChUeXBlIHR5cGUpIHsgbV90eXBl
ID0gdHlwZTsgfQogICAgIHZvaWQgcmVzZXQoKSB7IG1fdHlwZSA9IHsgfTsgfQotICAgIE9wdGlv
bmFsPFR5cGU+IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8VHlwZT4gb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAg
ICBPcHRpb25hbDxUeXBlPiBtX3R5cGU7CisgICAgc3RkOjpvcHRpb25hbDxUeXBlPiBtX3R5cGU7
CiB9OwogCiBjbGFzcyBQaGFzZVNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgK
aW5kZXggN2JjYzViZmVmMjM2Y2NlNzE4MGMzNzM1OTk5YzdiMTIyYzUzNWJiMS4uZjkwYmNmMDA4
M2Q5Y2IyMTI5MjAxYWM2ZDkwZmRjODcxNjViN2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dFVuaXRzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
IHsKIAogc3RydWN0IFZlcnRpY2FsQ29uc3RyYWludHMgewogICAgIExheW91dFVuaXQgbG9naWNh
bFRvcDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0OworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKIH07CiAKIHN0cnVjdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQgewpAQCAtMTkzLDEzICsxOTMsMTMgQEAgc3RydWN0IEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgewogfTsKIAogc3RydWN0IE92ZXJyaWRkZW5Ib3Jpem9udGFs
VmFsdWVzIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aDsKLSAgICBPcHRpb25hbDxV
c2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2lu
OwogfTsKIAogc3RydWN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyB7CiAgICAgLy8gQ29uc2lk
ZXIgY29sbGFwc2luZyBpdC4KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9OwogCiBpbmxpbmUgTGF5b3V0VW5p
dCB0b0xheW91dFVuaXQoSW5saW5lTGF5b3V0VW5pdCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01h
cmdpblR5cGVzLmgKaW5kZXggYzM5ZDU2NTM0NDU3NDRkMmZhNjIyODhmM2EyOWZkZTk2ZGZjMWY4
My4uNmM3NDVmMjBkZjlkZmI5YzI4YWE3NGZmYTJiYThmNzk4MDFiNTEwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L01hcmdpblR5cGVzLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIExheW91dCB7CiAKIHN0cnVjdCBDb21wdXRlZFZlcnRpY2FsTWFyZ2luIHsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYWZ0ZXI7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiZWZvcmU7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhZnRlcjsKIH07CiAKIHN0cnVjdCBVc2VkVmVydGljYWxN
YXJnaW4gewpAQCAtNDYsOCArNDYsOCBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAg
ICBOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzOwogCiAgICAgc3RydWN0IENv
bGxhcHNlZFZhbHVlcyB7Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsKLSAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYmVmb3JlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGFm
dGVyOwogICAgICAgICBib29sIGlzQ29sbGFwc2VkVGhyb3VnaCB7IGZhbHNlIH07CiAgICAgfTsK
ICAgICBDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzOwpAQCAtNjIsOCArNjIsOCBAQCBz
dHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAgICAgICAgc3RydWN0IFZhbHVlcyB7CiAgICAg
ICAgICAgICBib29sIGlzTm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aXZlLnZhbHVlX29y
KDApIHx8IG5lZ2F0aXZlLnZhbHVlX29yKDApOyB9CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHBvc2l0aXZlOwotICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbmVn
YXRpdmU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHBvc2l0aXZlOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBuZWdhdGl2ZTsKICAgICAgICAg
ICAgIGJvb2wgaXNRdWlyayB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIFZhbHVlcyBi
ZWZvcmU7CkBAIC04NSw4ICs4NSw4IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBtYXJnaW5B
ZnRlcihjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHVzZWRWZXJ0aWNhbE1hcmdpCiB9CiAKIHN0
cnVjdCBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gewotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGVuZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZW5kOwog
fTsKIAogc3RydWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsKQEAgLTk3LDcgKzk3LDcgQEAgc3Ry
dWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsKIHN0cnVjdCBQcmVjb21wdXRlZE1hcmdpbkJlZm9y
ZSB7CiAgICAgTGF5b3V0VW5pdCB1c2VkVmFsdWUoKSBjb25zdCB7IHJldHVybiBjb2xsYXBzZWRW
YWx1ZS52YWx1ZV9vcihub25Db2xsYXBzZWRWYWx1ZSk7IH0KICAgICBMYXlvdXRVbml0IG5vbkNv
bGxhcHNlZFZhbHVlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbGxhcHNlZFZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29sbGFwc2VkVmFsdWU7CiAgICAgVXNlZFZl
cnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZlQW5k
TmVnYXRpdmVNYXJnaW5CZWZvcmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggOWMxZTg3ZjQzMjZiZjdlMmRlYzA4OTEy
ZGU2MmU5OWZmM2NmMjA0ZC4uZDM1Zjk0MjBlNWE3MDZhNzgyMzRkYzkzZTA5MzdkZmNlZTM3YzFj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmNwcApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExlZnRSaWdodEluZGV4
IHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlZnQgJiYgIXJpZ2h0
O30KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVmdDsKLSAgICAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsZWZ0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiByaWdodDsKICAgICB9OwogCiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdFBhaXIuaXNFbXB0eSgpOyB9CkBAIC03
OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxD
b25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFBvc2l0aW9uOyB9CiAKICAgICBz
dHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKLSAgICAgICAgT3B0aW9uYWw8UG9zaXRpb25J
bkNvbnRleHRSb290PiBsZWZ0OwotICAgICAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4g
bGVmdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHJpZ2h0
OwogICAgIH07CiAgICAgSG9yaXpvbnRhbENvbnN0cmFpbnRzIGhvcml6b250YWxDb25zdHJhaW50
cygpIGNvbnN0OwogICAgIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBib3R0b20oKSBjb25zdDsKQEAg
LTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSXRlcmF0b3IgewogcHVibGljOgotICAg
IEl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYsIE9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gdmVydGljYWxQb3NpdGlvbik7CisgICAgSXRlcmF0b3IoY29uc3Qg
RmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0Jiwgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4
dFJvb3Q+IHZlcnRpY2FsUG9zaXRpb24pOwogCiAgICAgY29uc3QgRmxvYXRQYWlyJiBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KICAgICBJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwpAQCAtMTY3LDggKzE2Nyw4IEBAIHN0YXRpYyBDb21wdXRlZEhvcml6b250YWxNYXJnaW4g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMCiAKIHN0YXRp
YyBGbG9hdFBhaXI6OkxlZnRSaWdodEluZGV4IGZpbmRBdmFpbGFibGVQb3NpdGlvbihGbG9hdEF2
b2lkZXImIGZsb2F0QXZvaWRlciwgY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9h
dHMpCiB7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b21Nb3N0Owot
ICAgIE9wdGlvbmFsPEZsb2F0UGFpcjo6TGVmdFJpZ2h0SW5kZXg+IGlubmVyTW9zdExlZnRBbmRS
aWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gYm90dG9tTW9z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UGFpcjo6TGVmdFJpZ2h0SW5kZXg+IGlubmVyTW9z
dExlZnRBbmRSaWdodDsKICAgICBhdXRvIGVuZCA9IExheW91dDo6ZW5kKGZsb2F0cyk7CiAgICAg
Zm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oZmxvYXRzLCB7IGZsb2F0QXZvaWRlci50b3AoKSB9
KTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CiAgICAgICAgIEFTU0VSVCghKCppdGVy
YXRvcikuaXNFbXB0eSgpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBMYXlvdXRQb2ludCBGbG9hdGlu
Z0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhv
cml6bwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveChsYXlvdXRCb3gpOwogICAgIGlmIChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKSB7
CiAgICAgICAgIC8vIFRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBjYW5kaWRhdGUgbmVlZHMgdG8gY2xl
YXIgdGhlIGV4aXN0aW5nIGZsb2F0cyBpbiB0aGlzIGNvbnRleHQuCi0gICAgICAgIGF1dG8gZmxv
YXRCb3R0b20gPSBbJl0oKSAtPiBPcHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgICAgIGF1dG8g
ZmxvYXRCb3R0b20gPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsKICAgICAg
ICAgICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxlKCkuY2xlYXIoKSkgewogICAgICAgICAgICAg
Y2FzZSBDbGVhcjo6TGVmdDoKICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdEJvdHRvbSgpOwpA
QCAtMjk5LDcgKzI5OSw3IEBAIExheW91dFBvaW50IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25G
b3JOb25GbG9hdGluZ0Zsb2F0QXZvaWRlcihjb25zdCBCb3gmIGxheW91CiAgICAgcmV0dXJuIHsg
ZmxvYXRBdm9pZGVyLmxlZnQoKSAtIGNvbnRhaW5pbmdCbG9ja1RvcExlZnQueCgpLCBmbG9hdEF2
b2lkZXIudG9wKCkgLSBjb250YWluaW5nQmxvY2tUb3BMZWZ0LnkoKSB9OwogfQogCi1PcHRpb25h
bDxGbG9hdGluZ0NvbnRleHQ6OlBvc2l0aW9uV2l0aENsZWFyYW5jZT4gRmxvYXRpbmdDb250ZXh0
Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZShjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRpbmdDb250ZXh0OjpQb3NpdGlvbldpdGhDbGVhcmFuY2U+
IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5oYXNGbG9hdENsZWFy
KCkpOwogICAgIEFTU0VSVChhcmVGbG9hdHNIb3Jpem9udGFsbHlTb3J0ZWQobV9mbG9hdGluZ1N0
YXRlKSk7CkBAIC0zMDcsNyArMzA3LDcgQEAgT3B0aW9uYWw8RmxvYXRpbmdDb250ZXh0OjpQb3Np
dGlvbldpdGhDbGVhcmFuY2U+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGkKICAgICBp
ZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBib3R0b20gPSBb
Jl0oYXV0byBmbG9hdEJvdHRvbSkgLT4gT3B0aW9uYWw8UG9zaXRpb25XaXRoQ2xlYXJhbmNlPiB7
CisgICAgYXV0byBib3R0b20gPSBbJl0oYXV0byBmbG9hdEJvdHRvbSkgLT4gc3RkOjpvcHRpb25h
bDxQb3NpdGlvbldpdGhDbGVhcmFuY2U+IHsKICAgICAgICAgaWYgKCFmbG9hdEJvdHRvbSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIC8vIDkuNS4yIENvbnRyb2xsaW5nIGZsb3cg
bmV4dCB0byBmbG9hdHM6IHRoZSAnY2xlYXInIHByb3BlcnR5CkBAIC0zNjQsMTEgKzM2NCwxMSBA
QCBPcHRpb25hbDxGbG9hdGluZ0NvbnRleHQ6OlBvc2l0aW9uV2l0aENsZWFyYW5jZT4gRmxvYXRp
bmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aQogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6Ym90dG9tKENsZWFyIHR5cGUpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6Ym90dG9tKENsZWFyIHR5
cGUpIGNvbnN0CiB7CiAgICAgLy8gVE9ETzogQ3VycmVudGx5IHRoaXMgaXMgb25seSBjYWxsZWQg
b25jZSBmb3IgZWFjaCBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRoIGZsb2F0cyBwZXIgbGF5
b3V0LgogICAgIC8vIENhY2hlIHRoZSB2YWx1ZSBpZiB3ZSBlbmQgdXAgY2FsbGluZyBpdCBtb3Jl
IGZyZXF1ZW50bHkgKGFuZCB1cGRhdGUgaXQgYXQgYXBwZW5kL3JlbW92ZSkuCi0gICAgYXV0byBi
b3R0b20gPSBPcHRpb25hbDxMYXlvdXRVbml0PiB7IH07CisgICAgYXV0byBib3R0b20gPSBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZs
b2F0aW5nU3RhdGUoKS5mbG9hdHMoKSkgewogICAgICAgICBpZiAoKHR5cGUgPT0gQ2xlYXI6Okxl
ZnQgJiYgIWZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICB8fCAodHlw
ZSA9PSBDbGVhcjo6UmlnaHQgJiYgZmxvYXRJdGVtLmlzTGVmdFBvc2l0aW9uZWQoKSkpCkBAIC0z
NzgsOSArMzc4LDkgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRmxvYXRpbmdDb250ZXh0Ojpib3R0
b20oQ2xlYXIgdHlwZSkgY29uc3QKICAgICByZXR1cm4gYm90dG9tOwogfQogCi1PcHRpb25hbDxM
YXlvdXRVbml0PiBGbG9hdGluZ0NvbnRleHQ6OnRvcCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6dG9wKCkgY29uc3QKIHsKLSAgICBhdXRvIHRvcCA9
IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIHRvcCA9IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4geyB9OwogICAgIGZvciAoYXV0byYgZmxvYXRJdGVtIDogZmxvYXRpbmdTdGF0
ZSgpLmZsb2F0cygpKQogICAgICAgICB0b3AgPSAhdG9wID8gZmxvYXRJdGVtLnJlY3RXaXRoTWFy
Z2luKCkudG9wKCkgOiBzdGQ6Om1pbigqdG9wLCBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKS50
b3AoKSk7CiAgICAgcmV0dXJuIHRvcDsKQEAgLTU3NSw4ICs1NzUsOCBAQCBib29sIEZsb2F0UGFp
cjo6b3BlcmF0b3IgPT0oY29uc3QgRmxvYXRQYWlyJiBvdGhlcikgY29uc3QKIAogRmxvYXRQYWly
OjpIb3Jpem9udGFsQ29uc3RyYWludHMgRmxvYXRQYWlyOjpob3Jpem9udGFsQ29uc3RyYWludHMo
KSBjb25zdAogewotICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gbGVmdEVkZ2U7
Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdodEVkZ2U7CisgICAgc3Rk
OjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGxlZnRFZGdlOworICAgIHN0ZDo6b3B0
aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdodEVkZ2U7CiAKICAgICBpZiAobGVmdCgp
KQogICAgICAgICBsZWZ0RWRnZSA9IFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IGxlZnQoKS0+cmVj
dFdpdGhNYXJnaW4oKS5yaWdodCgpIH07CkBAIC01OTMsOCArNTkzLDggQEAgUG9zaXRpb25JbkNv
bnRleHRSb290IEZsb2F0UGFpcjo6Ym90dG9tKCkgY29uc3QKICAgICBhdXRvKiByaWdodCA9IHRo
aXMtPnJpZ2h0KCk7CiAgICAgQVNTRVJUKGxlZnQgfHwgcmlnaHQpOwogCi0gICAgYXV0byBsZWZ0
Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25J
bkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBPcHRpb25hbDxQb3NpdGlv
bkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IHJpZ2h0LT5yZWN0V2l0aE1h
cmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxsb3B0OworICAgIGF1dG8gbGVmdEJvdHRvbSA9
IGxlZnQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNv
bnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6bnVs
bG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgcmlnaHQtPnJlY3RXaXRo
TWFyZ2luKCkuYm90dG9tKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobGVmdEJvdHRv
bSAmJiByaWdodEJvdHRvbSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsZWZ0Qm90dG9tLCAq
cmlnaHRCb3R0b20pOwpAQCAtNjA1LDcgKzYwNSw3IEBAIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBG
bG9hdFBhaXI6OmJvdHRvbSgpIGNvbnN0CiAgICAgcmV0dXJuICpyaWdodEJvdHRvbTsKIH0KIAot
SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6OkZsb2F0TGlzdCYgZmxvYXRz
LCBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHZlcnRpY2FsUG9zaXRpb24pCitJdGVy
YXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMsIHN0
ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB2ZXJ0aWNhbFBvc2l0aW9uKQogICAg
IDogbV9mbG9hdHMoZmxvYXRzKQogICAgICwgbV9jdXJyZW50KGZsb2F0cykKIHsKQEAgLTYxMyw3
ICs2MTMsNyBAQCBJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRM
aXN0JiBmbG9hdHMsIE9wdGlvbmFsPFBvc2l0aW9uSW5DbwogICAgICAgICBzZXQoKnZlcnRpY2Fs
UG9zaXRpb24pOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2aW91
c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxvYXRpbmdUeXBlLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpG
bG9hdExpc3QmIGZsb2F0cywgdW5zaWduZWQgY3VycmVudEluZGV4KQoraW5saW5lIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxvYXRp
bmdUeXBlLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdExpc3QmIGZsb2F0cywgdW5zaWduZWQg
Y3VycmVudEluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbmRleCA8PSBmbG9h
dHMuc2l6ZSgpKTsKIApAQCAtNjMzLDcgKzYzMyw3IEBAIEl0ZXJhdG9yJiBJdGVyYXRvcjo6b3Bl
cmF0b3IrKygpCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBhdXRvIGZpbmRQ
cmV2aW91c0Zsb2F0aW5nV2l0aExvd2VyQm90dG9tID0gWyZdKEZsb2F0IGZsb2F0aW5nVHlwZSwg
dW5zaWduZWQgY3VycmVudEluZGV4KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIGF1dG8g
ZmluZFByZXZpb3VzRmxvYXRpbmdXaXRoTG93ZXJCb3R0b20gPSBbJl0oRmxvYXQgZmxvYXRpbmdU
eXBlLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsK
IAogICAgICAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50SW5kZXggPCBtX2Zsb2F0cy5zaXplKCkp
OwogCkBAIC02NDMsNyArNjQzLDcgQEAgSXRlcmF0b3ImIEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkK
IAogICAgICAgICBhdXRvIGN1cnJlbnRCb3R0b20gPSBtX2Zsb2F0c1tjdXJyZW50SW5kZXhdLnJl
Y3RXaXRoTWFyZ2luKCkuYm90dG9tKCk7CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGlu
ZGV4ID0gY3VycmVudEluZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRl
eCA9IGN1cnJlbnRJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGlu
ZGV4ID0gcHJldmlvdXNGbG9hdGluZ0luZGV4KGZsb2F0aW5nVHlwZSwgbV9mbG9hdHMsICppbmRl
eCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQpAQCAtNjYzLDggKzY2Myw4IEBAIEl0ZXJhdG9y
JiBJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG5ldyBmbG9h
dGluZydzIGJvdHRvbSBlZGdlIGlzIHBvc2l0aW9uZWQgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBv
bmUgLXdoaWNoIGVzc2VudGlhbGx5IG1lYW5zIHNraXBwaW5nIGluLWJldHdlZW4gZmxvYXRzIHRo
YXQgYXJlIHBvc2l0aW9uZWQgaGlnaGVyKS4KICAgICAvLyAzLiBSZXNldCB0aGUgdmVydGljYWwg
cG9zaXRpb24gYW5kIGFsaWduIGl0IHdpdGggdGhlIG5ldyBsZWZ0LXJpZ2h0IHBhaXIuIFRoZXNl
IGZsb2F0cyBhcmUgbm93IHRoZSBpbm5lci1tb3N0IGJveGVzIGZvciB0aGUgY3VycmVudCB2ZXJ0
aWNhbCBwb3NpdGlvbi4KICAgICAvLyBBcyB0aGUgcmVzdWx0IHdlIGhhdmUgbW9yZSBob3Jpem9u
dGFsIHNwYWNlIG9uIHRoZSBjdXJyZW50IHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8gbGVm
dEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRv
IHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29u
dGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7Cisg
ICAgYXV0byBsZWZ0Qm90dG9tID0gbV9jdXJyZW50LmxlZnQoKSA/IHN0ZDo6b3B0aW9uYWw8UG9z
aXRpb25JbkNvbnRleHRSb290PihtX2N1cnJlbnQubGVmdCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51
bGxvcHQ7CisgICAgYXV0byByaWdodEJvdHRvbSA9IG1fY3VycmVudC5yaWdodCgpID8gc3RkOjpv
cHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20o
KSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRvbSA9
PSByaWdodEJvdHRvbSkgfHwgKCFyaWdodEJvdHRvbSB8fCAobGVmdEJvdHRvbSAmJiAqbGVmdEJv
dHRvbSA8ICpyaWdodEJvdHRvbSkpOwogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJvdHRv
bSA9PSByaWdodEJvdHRvbSkgfHwgKCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRvbSAmJiAqbGVm
dEJvdHRvbSA+ICpyaWdodEJvdHRvbSkpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgSXRlcmF0
b3I6OnNldChQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZmluZEZsb2F0aW5nQmVsb3cgPSBbJl0oRmxvYXQg
ZmxvYXRpbmdUeXBlKSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIGF1dG8gZmluZEZsb2F0
aW5nQmVsb3cgPSBbJl0oRmxvYXQgZmxvYXRpbmdUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB7CiAKICAgICAgICAgQVNTRVJUKCFtX2Zsb2F0cy5pc0VtcHR5KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaAppbmRleCBlYThlOGEw
YzJjNTIzZDBiNWJlNWMwMDE1MTJlNjhmOThhNTdmN2RhLi4yZjEwNjY1MTE0N2RmZGQ4YWRhNmRl
ODVkODQ3NmI2YzA1NTg5NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdDb250ZXh0LmgKQEAgLTUzLDI3ICs1MywyNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1
Y3QgUG9zaXRpb25XaXRoQ2xlYXJhbmNlIHsKICAgICAgICAgTGF5b3V0VW5pdCBwb3NpdGlvbjsK
LSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY2xlYXJhbmNlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGNsZWFyYW5jZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFBvc2l0
aW9uV2l0aENsZWFyYW5jZT4gdmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbldpdGhDbGVhcmFuY2U+IHZlcnRp
Y2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdG9wKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVm
dEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRvbShDbGVhcjo6TGVmdCk7IH0KLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiByaWdodEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRvbShDbGVh
cjo6UmlnaHQpOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gdG9wKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsZWZ0Qm90dG9t
KCkgY29uc3QgeyByZXR1cm4gYm90dG9tKENsZWFyOjpMZWZ0KTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gcmlnaHRCb3R0b20oKSBjb25zdCB7IHJldHVybiBib3R0b20oQ2xlYXI6
OlJpZ2h0KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlLmZsb2F0cygpLmlzRW1wdHkoKTsgfQogCiAgICAg
c3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgT3B0aW9uYWw8UG9pbnRJbkNvbnRleHRSb290
PiBsZWZ0OwotICAgICAgICBPcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IHJpZ2h0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFBvaW50SW5Db250ZXh0Um9vdD4gbGVmdDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IHJpZ2h0OwogICAgIH07CiAgICAgQ29uc3Ry
YWludHMgY29uc3RyYWludHMoTGF5b3V0VW5pdCBjYW5kaWRhdGVUb3AsIExheW91dFVuaXQgY2Fu
ZGlkYXRlQm90dG9tKSBjb25zdDsKIAogICAgIEZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbSB0b0Zs
b2F0SXRlbShjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBib3R0b20oQ2xlYXIpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYm90dG9tKENsZWFyKSBjb25zdDsKIAogICAgIGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRpbmdTdGF0ZS5sYXlvdXRTdGF0
ZSgpOyB9CiAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCBjNmIzMGM0ZTc4MDE3MTU5MGM2NjA0MDk5Y2I4MTNlZDU4MGUzMTZkLi4y
NDgxMDFhMDA5ZDcyNTYxY2RlOTA5YjI2OWZmZjdiNmZlM2RiODhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7Ci0gICAgYXV0byBjb21wdXRl
ID0gWyZdKE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgeworICAgIGF1dG8gY29tcHV0
ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgewogICAgICAgICBy
ZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkub3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGxh
eW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgY29uc3RyYWludHMudmVydGljYWwsIHsg
dXNlZFdpZHRoLCB7IH0gfSk7CiAgICAgfTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29uc3RyYWludHNG
b3JPdXRPZkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgeworICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQpIHsKICAgICAgICAgcmV0dXJuIGZvcm1h
dHRpbmdHZW9tZXRyeSgpLm91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCBjb25z
dHJhaW50cy5ob3Jpem9udGFsLCBjb25zdHJhaW50cy52ZXJ0aWNhbCwgeyB1c2VkSGVpZ2h0IH0p
OwogICAgIH07CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAog
ICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJF
bmQ6IGxheW91dCBvdXQtb2YtZmxvdyBjb250ZW50IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0
YXRlKCkgPDwgIiByb290OiAiIDw8ICZyb290KCkpOwogfQogCi1jb25zdCBCb3hHZW9tZXRyeSYg
Rm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBP
cHRpb25hbDxFc2NhcGVSZWFzb24+IGVzY2FwZVJlYXNvbikgY29uc3QKK2NvbnN0IEJveEdlb21l
dHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gsIHN0ZDo6b3B0aW9uYWw8RXNjYXBlUmVhc29uPiBlc2NhcGVSZWFzb24pIGNvbnN0CiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGVzY2FwZVJlYXNvbik7CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCBkMjNmOWZmZDAyMjc1YTIzZTBiOGJjZWE0MDNmODYzNzMw
MWQwODk4Li5jNjZhZjUzN2JiOTNjNGMyYmNhYzQ1Mzk3MjllMDdlN2VjMTVmYTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQm9k
eVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaywKICAgICAgICAgVGFibGVOZWVkc0FjY2Vzc1RvVGFi
bGVXcmFwcGVyCiAgICAgfTsKLSAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JCb3go
Y29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7
CisgICAgY29uc3QgQm94R2VvbWV0cnkmIGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIHN0ZDo6
b3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBib29s
IGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBhZDgw
MzI2OTBjMzEzZjk4ZWNiNjBkNDAxYWU1NmI4ZjQzZGU4OWE2Li5mMjllMjE4YmZkNGU4NTNlMzg4
YTM1MjNjM2RmOGM3NTA2ZmFjMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIEZvcm1hdHRpbmdHZW9tZXRyeTo6Rm9ybWF0dGluZ0dlb21ldHJ5KGNv
bnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4CiB7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25z
dCBCb3gmIGxheW91dEJveCwgSGVpZ2h0VHlwZSBoZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmIGxh
eW91dEJveCwgSGVpZ2h0VHlwZSBoZWlnaHRUeXBlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwogICAgIGF1dG8gaGVpZ2h0ID0gaGVpZ2h0VHlwZSA9PSBIZWlnaHRUeXBl
OjpOb3JtYWwgPyBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkgOiBoZWlnaHRUeXBlID09IEhlaWdodFR5
cGU6Ok1pbiA/IHN0eWxlLmxvZ2ljYWxNaW5IZWlnaHQoKSA6IHN0eWxlLmxvZ2ljYWxNYXhIZWln
aHQoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5n
R2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0VmFsdWUoY29uc3QgQm94JiBsYXlvdXRCbwogICAgIHJl
dHVybiB2YWx1ZUZvckxlbmd0aChoZWlnaHQsICpjb250YWluaW5nQmxvY2tIZWlnaHQpOwogfQog
Ci1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSBjb25zdAogewogICAgIGlmIChhdXRv
IGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3Jt
YWwsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCkpIHsKICAgICAgICAgaWYgKGxheW91dEJveC5zdHls
ZSgpLmJveFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCkKQEAgLTExNyw3ICsxMTcs
NyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVp
Z2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcAogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRXaWR0aFZhbHVlKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBXaWR0aFR5cGUgd2lkdGhUeXBlLCBMYXlvdXRVbml0IGNvbnRh
aW5pbmdCbG9ja1dpZHRoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGhWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCwgV2lk
dGhUeXBlIHdpZHRoVHlwZSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QK
IHsKICAgICAvLyBBcHBsaWVzIHRvOiBhbGwgZWxlbWVudHMgZXhjZXB0IG5vbi1yZXBsYWNlZCBp
bmxpbmVzIChvdXQtb2YtZmxvdyBjaGVjayBpcyByZXF1aXJlZCBmb3IgcG9zaXRpb25lZCA8YnI+
IGFzIGZvciBzb21lIHJlYXNvbiB3ZSBkb24ndCBibG9ja2lmeSB0aGVtKS4KICAgICBBU1NFUlQo
IWxheW91dEJveC5pc0lubGluZUJveCgpIHx8IGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGlu
Z0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoVmFsdWUoY29uc3QgQm94JiBsYXlvdXRCb3gKICAgICBy
ZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6
OmNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVuaXQgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6Y29tcHV0ZWRXaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBjb21wdXRlZFdpZHRo
ID0gY29tcHV0ZWRXaWR0aFZhbHVlKGxheW91dEJveCwgV2lkdGhUeXBlOjpOb3JtYWwsIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKSkgewogICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHls
ZSgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpj
b250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IENvbnRhCiAgICAgcmV0
dXJuIHVzZWRDb250ZW50SGVpZ2h0OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5
LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAorc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmFsdWUoY29uc3QgTGVuZ3Ro
JiBnZW9tZXRyeVByb3BlcnR5LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25z
dAogewogICAgIC8vICBJbiBnZW5lcmFsLCB0aGUgY29tcHV0ZWQgdmFsdWUgcmVzb2x2ZXMgdGhl
IHNwZWNpZmllZCB2YWx1ZSBhcyBmYXIgYXMgcG9zc2libGUgd2l0aG91dCBsYXlpbmcgb3V0IHRo
ZSBjb250ZW50LgogICAgIGlmIChnZW9tZXRyeVByb3BlcnR5LmlzRml4ZWQoKSB8fCBnZW9tZXRy
eVByb3BlcnR5LmlzUGVyY2VudCgpIHx8IGdlb21ldHJ5UHJvcGVydHkuaXNDYWxjdWxhdGVkKCkp
CkBAIC0yMDEsNyArMjAxLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm8KICAgICByZXR1cm4g
eyB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVk
VmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVuZ3Ro
JiBnZW9tZXRyeVByb3BlcnR5KSBjb25zdAogewogICAgIGlmICghZ2VvbWV0cnlQcm9wZXJ0eS5p
c0ZpeGVkKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMTIsMjIgKzIxMiwyMiBAQCBPcHRp
b25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVu
Z3RoJiBnZW9tZXRyeVByb3BlcgogLy8gU3BlY2lmaWVzIGEgcGVyY2VudGFnZSBmb3IgZGV0ZXJt
aW5pbmcgdGhlIHVzZWQgdmFsdWUuIFRoZSBwZXJjZW50YWdlIGlzIGNhbGN1bGF0ZWQgd2l0aCBy
ZXNwZWN0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIGdlbmVyYXRlZCBib3gncyBjb250YWluaW5nIGJs
b2NrLgogLy8gSWYgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyBub3Qgc3Bl
Y2lmaWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRlcGVuZHMgb24gY29udGVudCBoZWlnaHQpLCBh
bmQgdGhpcyBlbGVtZW50IGlzIG5vdCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQsCiAvLyB0aGUgcGVy
Y2VudGFnZSB2YWx1ZSBpcyB0cmVhdGVkIGFzICcwJyAoZm9yICdtaW4taGVpZ2h0Jykgb3IgJ25v
bmUnIChmb3IgJ21heC1oZWlnaHQnKS4KLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6Y29tcHV0ZWRNYXhIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZE1heEhlaWdodChjb25zdCBC
b3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tI
ZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94
LCBIZWlnaHRUeXBlOjpNYXgsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRNaW5IZWlnaHQoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdo
dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpj
b21wdXRlZE1pbkhlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpNaW4sIGNvbnRhaW5pbmdCbG9j
a0hlaWdodCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGlu
Z0dlb21ldHJ5Ojpjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMYXlvdXRV
bml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAogewogICAgIHJldHVybiBjb21wdXRlZFdp
ZHRoVmFsdWUobGF5b3V0Qm94LCBXaWR0aFR5cGU6Ok1pbiwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVk
TWF4V2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29tcHV0ZWRNYXhXaWR0aChjb25zdCBCb3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tcHV0ZWRXaWR0aFZhbHVl
KGxheW91dEJveCwgV2lkdGhUeXBlOjpNYXgsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIH0KQEAg
LTYwOCw4ICs2MDgsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0
T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJlcAogICAgIGF1dG8gYm90dG9t
ID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKICAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1h
cmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFp
bnRzLCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpLmNvbnRlbnRIZWlnaHQ7CiAgICAgYXV0byBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlOworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5hZnRlcjsKICAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5n
VG9wKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gYm94R2VvbWV0cnku
cGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gYm9yZGVyVG9wID0gYm94R2Vv
bWV0cnkuYm9yZGVyVG9wKCk7CkBAIC02OTIsOCArNjkyLDggQEAgSG9yaXpvbnRhbEdlb21ldHJ5
IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnko
Y29uc3QKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlKHN0eWxlLmxvZ2ljYWxMZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZShz
dHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhvcml6
b250YWxNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luLnN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5FbmQgPSBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQ7CiAgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkQ29udGVudFdpZHRo
QW5kTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29u
c3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKS5jb250ZW50V2lkdGg7CiAgICAg
YXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7
CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1
ZV9vcigwKTsKQEAgLTkwMyw3ICs5MDMsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0
dGluZ0dlb21ldHJ5OjpmbG9hdGluZ0NvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCbwogICAg
IHJldHVybiBmbG9hdGluZ1JlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0PFJl
cGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5I
b3Jpem9udGFsVmFsdWVzKTsKIH0KIAotQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5n
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBSZXBs
YWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENv
bnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0
aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21l
dHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uc3QgUmVwbGFjZWRC
b3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxD
b25zdHJhaW50cywgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENv
bnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0
aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICAvLyAxMC42LjIgSW5saW5lIHJlcGxhY2VkIGVsZW1l
bnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdywgJ2lubGlu
ZS1ibG9jaycgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJl
cGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTk0Niw3ICs5NDYsNyBAQCBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRDb250ZW50SGVpZ2h0
QW5kTWFyZ2luKAogICAgIHJldHVybiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9Owog
fQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPcHRp
b25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVy
cmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpIGNvbnN0
CitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBzdGQ6Om9w
dGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+IHZlcnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92
ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykgY29u
c3QKIHsKICAgICAvLyAxMC4zLjIgSW5saW5lLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCkBA
IC0xMTAzLDcgKzExMDMsNyBAQCBFZGdlcyBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQm9y
ZGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIH07CiB9CiAKLU9wdGlvbmFsPEVk
Z2VzPiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8RWRnZXM+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBj
b25zdAogewogICAgIGlmICghbGF5b3V0Qm94LmlzUGFkZGluZ0FwcGxpY2FibGUoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExNjUsNyArMTE2NSw3IEBAIENvbnN0cmFpbnRz
Rm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9yT3V0
T2ZGbG93Q29udGVuCiAgICAgICAgIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07CiB9
CiAKLUNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCwg
T3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBj
b25zdAorQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmVyQm94
LCBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb24+IGVzY2FwZVJl
YXNvbikgY29uc3QKIHsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZ2VvbWV0cnlGb3JCb3goY29udGFpbmVyQm94LCBlc2NhcGVSZWFzb24pOwogICAgIHJldHVy
biB7IHsgYm94R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJv
eFdpZHRoKCkgfSwgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIGNvbXB1dGVkSGVpZ2h0
KGNvbnRhaW5lckJveCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggMDYyNGYy
ZjRkZTFmMTgzOTU4NDgxNDNjNDdmOGE4ZTc2ZTgxY2RmNi4uYjdmODlkOWI2ZWZmZmZmOWU3Njkx
MmNjYjdjYjIxNzkxODNmYTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC01Niw4
ICs1Niw4IEBAIHB1YmxpYzoKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nQ29u
dGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50
V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94Jiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxW
YWx1ZXMmKSBjb25zdDsKIAotICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFj
ZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgT3B0aW9uYWw8VmVydGljYWxDb25zdHJhaW50cz4sIGNvbnN0IE92
ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgIENvbnRlbnRXaWR0aEFuZE1hcmdp
biBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIE9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWlu
dHM+LCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpIGNvbnN0OworICAgIENvbnRl
bnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNv
bnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgc3RkOjpvcHRp
b25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVz
JikgY29uc3Q7CisgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxhY2VkQ29udGVu
dFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiwgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29uc3QgT3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAogICAgIExheW91dFNpemUgaW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYpIGNvbnN0OwogCkBAIC02NSwyOSArNjUsMjkgQEAgcHVibGljOgogICAgIExheW91dFVu
aXQgc2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRo
KSBjb25zdDsKIAogICAgIEVkZ2VzIGNvbXB1dGVkQm9yZGVyKGNvbnN0IEJveCYpIGNvbnN0Owot
ICAgIE9wdGlvbmFsPEVkZ2VzPiBjb21wdXRlZFBhZGRpbmcoY29uc3QgQm94JiwgTGF5b3V0VW5p
dCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxFZGdlcz4g
Y29tcHV0ZWRQYWRkaW5nKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lk
dGgpIGNvbnN0OwogCiAgICAgQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25z
dDsKICAgICBDb21wdXRlZFZlcnRpY2FsTWFyZ2luIGNvbXB1dGVkVmVydGljYWxNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9w
ZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShjb25z
dCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lk
dGgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25z
dCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKLSAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZE1heEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94Jiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXhI
ZWlnaHQoY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9j
a1dpZHRoKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1heFdpZHRo
KGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmLCBM
YXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbXB1dGVkTWF4V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGNvbnN0cmFpbkJ5TWluTWF4V2lkdGgoY29uc3QgQm94JiwgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5n
Q29udGV4dFJvb3QoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAKICAgICBDb25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0
IENvbnRhaW5lckJveCYpIGNvbnN0OwotICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBj
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8
Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owor
ICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQoY29uc3QgQ29udGFpbmVyQm94Jiwgc3RkOjpvcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBj
b250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21w
dXRlZEhlaWdodChjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7
IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKTsg
fQpAQCAtMTE0LDEwICsxMTQsMTAgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IHN0YXRpY0hv
cml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgQm94JiwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEhlaWdodFR5
cGUgeyBNaW4sIE1heCwgTm9ybWFsIH07Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0
ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWlnaHRUeXBlLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3Q7CiAKICAgICBl
bnVtIGNsYXNzIFdpZHRoVHlwZSB7IE1pbiwgTWF4LCBOb3JtYWwgfTsKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZFdpZHRoVmFsdWUoY29uc3QgQm94JiwgV2lkdGhUeXBlLCBMYXlv
dXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGNvbXB1dGVkV2lkdGhWYWx1ZShjb25zdCBCb3gmLCBXaWR0aFR5cGUsIExheW91
dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgY29uc3QgRm9ybWF0dGlu
Z0NvbnRleHQmIG1fZm9ybWF0dGluZ0NvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYzliOGU5NTQzMzlkNDk0ZjFhZjdkOTRh
NjgzMWM2YzZlYzQzY2U3Zi4uZjgyMjgwNGUxMDdmYzliYWMxMDIyYTdmYWUwZWNkM2NkMzRjMjhm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0xODksOCArMTg5LDggQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2Vk
Q29udGVudEhlaWdodCgpIGNvbnN0CiAgICAgLy8gSW4gYWRkaXRpb24sIGlmIHRoZSBlbGVtZW50
IGhhcyBhbnkgZmxvYXRpbmcgZGVzY2VuZGFudHMgd2hvc2UgYm90dG9tIG1hcmdpbiBlZGdlIGlz
IGJlbG93IHRoZSBlbGVtZW50J3MgYm90dG9tIGNvbnRlbnQgZWRnZSwKICAgICAvLyB0aGVuIHRo
ZSBoZWlnaHQgaXMgaW5jcmVhc2VkIHRvIGluY2x1ZGUgdGhvc2UgZWRnZXMuIE9ubHkgZmxvYXRz
IHRoYXQgcGFydGljaXBhdGUgaW4gdGhpcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYXJlIHRh
a2VuCiAgICAgLy8gaW50byBhY2NvdW50LCBlLmcuLCBmbG9hdHMgaW5zaWRlIGFic29sdXRlbHkg
cG9zaXRpb25lZCBkZXNjZW5kYW50cyBvciBvdGhlciBmbG9hdHMgYXJlIG5vdC4KLSAgICBhdXRv
IHRvcCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKLSAgICBhdXRvIGJvdHRvbSA9IE9wdGlv
bmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIHRvcCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4geyB9OworICAgIGF1dG8gYm90dG9tID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7
IH07CiAgICAgaWYgKHJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7CiAgICAgICAgIHRvcCA9IEJv
eEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCkuZmlyc3RJbkZs
b3dDaGlsZCgpKSkudG9wKCk7CiAgICAgICAgIGJvdHRvbSA9IEJveEdlb21ldHJ5OjptYXJnaW5C
b3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCkubGFzdEluRmxvd0NoaWxkKCkpKS5ib3R0b20o
KTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gKmJvdHRvbSAtICp0b3A7CiB9
CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFp
bGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5n
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnN0cmFpbnRzUGFpciYgY29u
c3RyYWludHNQYWlyKQorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25z
dHJhaW50c1BhaXImIGNvbnN0cmFpbnRzUGFpcikKIHsKICAgICAvLyBOb3JtYWxseSB0aGUgYXZh
aWxhYmxlIHdpZHRoIGZvciBhbiBpbi1mbG93IGJsb2NrIGxldmVsIGJveCBpcyB0aGUgd2lkdGgg
b2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveC4KICAgICAvLyBIb3dldmVyIChh
bmQgY2FuJ3QgZmluZCBpdCBhbnl3aGVyZSBpbiB0aGUgc3BlYykgbm9uLWZsb2F0aW5nIHBvc2l0
aW9uZWQgZmxvYXQgYXZvaWRlciBibG9jayBsZXZlbCBib3hlcyBhcmUgY29uc3RyYWluZWQgYnkg
ZXhpc3RpbmcgZmxvYXRzLgpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0
aW5nCiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgQ29uc3RyYWludHNQYWlyJiBjb25zdHJhaW50c1BhaXIpCiB7Ci0gICAgYXV0
byBhdmFpbGFibGVXaWR0aEZsb2F0QXZvaWRlciA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsK
KyAgICBhdXRvIGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyID0gc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiB7IH07CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0QXZvaWRlcigpKSB7CiAgICAg
ICAgIC8vIEZsb2F0IGF2b2lkZXJzJyBhdmFpbGFibGUgd2lkdGggbWlnaHQgYmUgc2hydW5rIGJ5
IGV4aXN0aW5nIGZsb2F0cyBpbiB0aGUgY29udGV4dC4KICAgICAgICAgYXZhaWxhYmxlV2lkdGhG
bG9hdEF2b2lkZXIgPSB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoZmxvYXRpbmdD
b250ZXh0LCBsYXlvdXRCb3gsIGNvbnN0cmFpbnRzUGFpcik7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewotICAgIGF1dG8gY29tcHV0ZSA9
IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIHsKKyAgICBhdXRvIGNvbXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsKICAgICAgICAgaWYgKGxh
eW91dEJveC5pc0luRmxvdygpKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50cy5o
b3Jpem9udGFsLCB7IHVzZWRIZWlnaHQgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYThmZDlmNWE4NjU5NWVjMjljMzFkMmEwYWQxNzJjM2Yz
MjY2Y2EwMi4uMWQ3ODcxYzM1ODIxYzBmZDhiYjEyNWU5NTg4Y2ViYTQ0NzQ1YWU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTc5LDcgKzc5LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdp
bihjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mLCBjb25zdCBWZXJ0aWNhbENv
bnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxh
YmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94
JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0
JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7CiAgICAgdm9pZCB1cGRhdGVN
YXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhjb25zdCBCb3gmKTsKIAogICAgIEJsb2NrRm9y
bWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zv
cm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCA1
NTlmZTM2MzZmNDk5ODk2Nzc4NTM4NmFkNjZlMTRkNDZkZTRiZDE1Li44YzdmMzY5OTFhMWIxY2Nj
Y2ZlMWYzNTA5NGQ0MzYwZDkyNGU4ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjk5LDkgKzI5OSw5IEBAIENvbnRlbnRXaWR0aEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Q29udGVudFdpZHRoQW5kTWFy
Z2luKGNvbnN0CiAgICAgcmV0dXJuIGluRmxvd1JlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2lu
KGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMs
IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKTsKIH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2lu
IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoRmxvYXRB
dm9pZGVyKSBjb25zdAorQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpIGNvbnN0CiB7
Ci0gICAgYXV0byBjb21wdXRlID0gWyZdIChhdXRvIGNvbnN0cmFpbnRzRm9yV2lkdGgsIE9wdGlv
bmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgeworICAgIGF1dG8gY29tcHV0ZSA9IFsmXSAoYXV0
byBjb25zdHJhaW50c0ZvcldpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0
aCkgewogICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmxvYXRpbmdDb250ZW50V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBj
b25zdHJhaW50c0ZvcldpZHRoLCB7IHVzZWRXaWR0aCwgeyB9IH0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggM2ZhOGZhZmI2MjU3YWRiNmNm
ZDk4ZTc2MDg1N2JiY2I5MzU5MDg2OS4uNWQzYjI0YWI5NjY1ZDZlMzYxZTY4NzQxNjAyNjAxYzcx
MTM0MDBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnku
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JikgY29uc3Q7CiAKLSAgICBD
b250ZW50V2lkdGhBbmRNYXJnaW4gY29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpIGNvbnN0OworICAgIENvbnRlbnRXaWR0aEFuZE1h
cmdpbiBjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdp
ZHRoRmxvYXRBdm9pZGVyKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIGluRmxvd05vblJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtz
LmNwcAppbmRleCA4ZmNmMjgyOGMzZGUwZGVmZTEyNzkzNmIxM2UwMTVjNDYwOTdlNWZmLi5lYjUz
NDI2NDQ4YmE5OWJlMzk5MTRlOTVlN2U0MjUzZDZmNGM5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1
aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBi
b29sIG5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKICAgICByZXR1cm4gbGF5
b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwogfQogCi1PcHRpb25hbDxM
YXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElm
QXBwbGljYWJsZShjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1hcmdpbiBj
b250ZW50SGVpZ2h0QW5kTWFyZ2luKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBC
bG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShj
b25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0
QW5kTWFyZ2luKSBjb25zdAogewogICAgIEFTU0VSVChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9k
ZSgpKTsKICAgICBpZiAoIW5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXggYTA0NDQ2NjZkNTVhY2RhNDQ3YjEz
MDRlMWM0NjQxMjQ3NDg4YTljYy4uOGQ0ZTVmODJmZjljODE0YzA0NGU4MTcyZmFiZjM0YTNmYjgy
YTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIEJsb2NrRm9ybWF0dGluZ1F1aXJrcyA6IHB1YmxpYyBGb3JtYXR0
aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBCbG9ja0Zvcm1hdHRpbmdRdWlya3MoY29uc3QgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRj
aGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvbnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRN
YXJnaW4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSW5G
bG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvbnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4p
IGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2lu
KGNvbnN0IEJveCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3Jl
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggNGI0OWJiNTJm
MjIwM2ZlZjUzZjY1YTYyNDlkODkwMzE2NjcxNmY5MC4uM2ZjOTcyZmE4NDZlNzQ5YmNhNjFlMmYz
MDI2ZjE4OGZmMDQ0MWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFu
ZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OmNvbXB1dGUKICAgICBy
ZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrTWFy
Z2luQ29sbGFwc2U6Om1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmRO
ZWdhdGl2ZVBhaXI6OlZhbHVlcyBtYXJnaW5WYWx1ZXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1h
cmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBtYXJnaW5WYWx1ZXMpIGNvbnN0
CiB7CiAgICAgLy8gV2hlbiB0d28gb3IgbW9yZSBtYXJnaW5zIGNvbGxhcHNlLCB0aGUgcmVzdWx0
aW5nIG1hcmdpbiB3aWR0aCBpcyB0aGUgbWF4aW11bSBvZiB0aGUgY29sbGFwc2luZyBtYXJnaW5z
JyB3aWR0aHMuCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbmVnYXRpdmUgbWFyZ2lucywgdGhlIG1h
eGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgbmVnYXRpdmUgYWRqb2luaW5nIG1h
cmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgbWF4aW11bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuaAppbmRleCA0ZDc1NmMxNjEzMTg5ZGExMjQxYTA4NzFiZGQ4ODg5MDE2
NTNhMWI0Li44MTJjMWY5MTA5NjAxNDBjN2RkYjBjOTAxMzk1NjM1Y2I2ZTg5ZGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2
YXRlOgogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZh
bHVlcyBwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUoY29uc3QgQm94Jiwg
VXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMsIGNvbnN0IEJsb2NrRm9ybWF0
dGluZ0dlb21ldHJ5JikgY29uc3Q7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFu
ZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHByZWNvbXB1dGVkUG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhj
b25zdCBCb3gmLCBjb25zdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeSYpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFsdWUoVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3Np
dGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdh
dGl2ZVBhaXI6OlZhbHVlcykgY29uc3Q7CiAKICAgICBib29sIGhhc0NsZWFyYW5jZShjb25zdCBC
b3gmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCA4ZTRiNzMyNjExYzgzY2YwMjRkNTI2NGMyYzg0ZmNhMzFlMGMwNGVlLi45ZjAwODEyZWJm
NGNmNmI4Njc4MWE5N2Q4NDA1YTIzNDAxNTA4ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94
KGNvbnN0CiAgICAgQVNTRVJUKHRhYmxlQm94LmlzVGFibGVCb3goKSk7CiAgICAgLy8gVGFibGUg
aXMgYSBzcGVjaWFsIEJGQyBjb250ZW50LiBJdHMgaGVpZ2h0IGlzIG1haW5seSBkcml2ZW4gYnkg
dGhlIGNvbnRlbnQuIENvbXB1dGVkIGhlaWdodCwgbWluLWhlaWdodCBhbmQgbWF4LWhlaWdodCBh
cmUgYWxsCiAgICAgLy8gYWxyZWFkeSBiZWVuIHRha2VuIGludG8gYWNjb3VudCBkdXJpbmcgdGhl
IFRGQyBsYXlvdXQuCi0gICAgYXV0byBvdmVycmlkZGVuVGFibGVIZWlnaHQgPSBbJl0oKSAtPiBP
cHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgYXV0byBvdmVycmlkZGVuVGFibGVIZWlnaHQgPSBb
Jl0oKSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsKICAgICAgICAgaWYgKGxheW91dFN0
YXRlKCkuaW5RdWlya3NNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ1F1aXJr
cygpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJsZUJveCk7CiAgICAgICAgIGlmICh0YWJsZUJv
eC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxN2Y3Mzg1ZjQ1YWQ2YjJiZGUzYzYyMWExNjJkMjg5
NjM3N2MxZTIzLi4zN2E2NWI1YzRmZjg5MmEyNGFkNDJjNjk2NzUyMmQyMmJiYTI5ZWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC0xMDIsNyAr
MTAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTm9uQ29udGVudFJ1bnNPbmx5KGNvbnN0IElu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KGNvbnN0IElu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCYgY29udGludW91c0NvbnRlbnQp
CitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJzdFRleHRSdW5JbmRleChj
b25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXND
b250ZW50KQogewogICAgIGF1dG8mIHJ1bnMgPSBjb250aW51b3VzQ29udGVudC5ydW5zKCk7CiAg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7
CkBAIC0xNjIsMTEgKzE2MiwxMSBAQCBzdHJ1Y3QgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCB7CiAg
ICAgICAgICAgICAvLyBUcmFpbGluZyBjb250ZW50IGlzIGVpdGhlciB0aGUgcnVuJ3MgbGVmdCBz
aWRlICh3aGVuIHdlIGJyZWFrIHRoZSBydW4gc29tZXdoZXJlIGluIHRoZSBtaWRkbGUpIG9yIHRo
ZSBwcmV2aW91cyBydW4uCiAgICAgICAgICAgICAvLyBTb21ldGltZXMgdGhlIGJyZWFraW5nIHBv
c2l0aW9uIGlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgcnVuLCBzbyB0aGVy
ZSdzIG5vIHRyYWlsaW5nIHJ1biBhdCBhbGwuCiAgICAgICAgICAgICBib29sIG92ZXJmbG93cyB7
IGZhbHNlIH07Ci0gICAgICAgICAgICBPcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFy
dGlhbFJ1bj4gcGFydGlhbFJ1biB7IH07CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGlu
ZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBwYXJ0aWFsUnVuIHsgfTsKICAgICAgICAgfTsK
LSAgICAgICAgT3B0aW9uYWw8VHJhaWxpbmdDb250ZW50PiB0cmFpbGluZ0NvbnRlbnQgeyB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYWlsaW5nQ29udGVudD4gdHJhaWxpbmdDb250ZW50IHsg
fTsKICAgICB9OwotICAgIE9wdGlvbmFsPEJyZWFraW5nUG9zaXRpb24+IGJyZWFraW5nUG9zaXRp
b24geyB9OyAvLyBXaGVyZSB3ZSBhY3R1YWxseSBicmVhayB0aGlzIG92ZXJmbG93aW5nIGNvbnRl
bnQuCisgICAgc3RkOjpvcHRpb25hbDxCcmVha2luZ1Bvc2l0aW9uPiBicmVha2luZ1Bvc2l0aW9u
IHsgfTsgLy8gV2hlcmUgd2UgYWN0dWFsbHkgYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBjb250ZW50
LgogfTsKIAogSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtl
cjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudChjb25zdCBDb250aW51b3VzQ29udGVudCYgb3Zl
cmZsb3dDb250ZW50LCBjb25zdCBMaW5lU3RhdHVzJiBsaW5lU3RhdHVzKSBjb25zdApAQCAtMTk5
LDcgKzE5OSw3IEBAIElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQoY29uCiAKICAgICBzaXplX3Qgb3ZlcmZs
b3dpbmdSdW5JbmRleCA9IDA7CiAgICAgaWYgKGhhc1RleHRSdW4oY29udGludW91c0NvbnRlbnQp
KSB7Ci0gICAgICAgIGF1dG8gdHJ5QnJlYWtpbmdDb250ZW50V2l0aFRleHQgPSBbJl0oKSAtPiBP
cHRpb25hbDxSZXN1bHQ+IHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0NvbnRlbnRXaXRoVGV4
dCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiB7CiAgICAgICAgICAgICAvLyAxLiBU
aGlzIHRleHQgY29udGVudCBpcyBub3QgYnJlYWthYmxlLgogICAgICAgICAgICAgLy8gMi4gVGhp
cyBicmVha2FibGUgdGV4dCBjb250ZW50IGRvZXMgbm90IGZpdCBhdCBhbGwuIE5vdCBldmVuIHRo
ZSBmaXJzdCBnbHlwaC4gVGhpcyBpcyBhIHZlcnkgc3BlY2lhbCBjYXNlLgogICAgICAgICAgICAg
Ly8gMy4gV2UgY2FuIGJyZWFrIHRoZSBjb250ZW50IGJ1dCBpdCBzdGlsbCBvdmVyZmxvd3MuCkBA
IC0yNzgsNyArMjc4LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAgICAgICAgcmV0dXJu
IGlzV3JhcHBpbmdBbGxvd2VkKHJ1bi5pbmxpbmVJdGVtKTsKICAgICB9OwogCi0gICAgYXV0byBm
aW5kVHJhaWxpbmdSdW5JbmRleCA9IFsmXSAoYXV0byBicmVha2FibGVSdW5JbmRleCkgLT4gT3B0
aW9uYWw8c2l6ZV90PiB7CisgICAgYXV0byBmaW5kVHJhaWxpbmdSdW5JbmRleCA9IFsmXSAoYXV0
byBicmVha2FibGVSdW5JbmRleCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKICAgICAgICAg
Ly8gV2hlbiB0aGUgYnJlYWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg
cnVuLCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBwcmV2aW91cyBvbmUuCiAgICAgICAgIGlmICgh
YnJlYWthYmxlUnVuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMzA4LDcgKzMw
OCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nl
c3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAgICAgLy8gV2UgaGF2ZSB0byBoYXZlIGFu
IG92ZXJmbG93aW5nIHJ1bi4KICAgICBSRUxFQVNFX0FTU0VSVChvdmVyZmxvd2luZ1J1bkluZGV4
IDwgcnVucy5zaXplKCkpOwogCi0gICAgYXV0byB0cnlCcmVha2luZ092ZXJmbG93aW5nUnVuID0g
WyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlv
bj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1biA9IFsmXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gewogICAg
ICAgICBhdXRvIG92ZXJmbG93aW5nUnVuID0gcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XTsKICAg
ICAgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihvdmVyZmxvd2luZ1J1bikpCiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMzI4LDcgKzMyOCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5s
aW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAg
ICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9IHRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4o
KSkKICAgICAgICAgcmV0dXJuIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgYnJlYWtpbmdQb3NpdGlv
biB9OwogCi0gICAgYXV0byB0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zID0g
WyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlv
bj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdQcmV2aW91c05vbk92ZXJmbG93aW5nUnVucyA9IFsm
XSgpIC0+IHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4gewogICAgICAgICBhdXRvIHByZXZpb3VzQ29udGVudFdpZHRoID0gYWNjdW11bGF0ZWRD
b250ZW50V2lkdGg7CiAgICAgICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5k
ZXg7IGluZGV4LS07KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2luZGV4XTsKQEAg
LTM1MSw3ICszNTEsNyBAQCBPdmVyZmxvd2luZ1RleHRDb250ZW50IElubGluZUNvbnRlbnRCcmVh
a2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0aFRleHQoYwogICAgIGlmIChhdXRvIGJy
ZWFraW5nUG9zaXRpb24gPSB0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zKCkp
CiAgICAgICAgIHJldHVybiB7IG92ZXJmbG93aW5nUnVuSW5kZXgsIGJyZWFraW5nUG9zaXRpb24g
fTsKIAotICAgIGF1dG8gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkgLT4g
T3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4geworICAg
IGF1dG8gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkgLT4gc3RkOjpvcHRp
b25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiB7CiAgICAgICAg
IGF1dG8gbmV4dENvbnRlbnRXaWR0aCA9IGFjY3VtdWxhdGVkQ29udGVudFdpZHRoICsgcnVuc1tv
dmVyZmxvd2luZ1J1bkluZGV4XS5sb2dpY2FsV2lkdGg7CiAgICAgICAgIGZvciAoYXV0byBpbmRl
eCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBpbmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBydW5zW2luZGV4XTsKQEAgLTQyMyw3ICs0MjMs
NyBAQCBPcHRpb25TZXQ8SW5saW5lQ29udGVudEJyZWFrZXI6OldvcmRCcmVha1J1bGU+IElubGlu
ZUNvbnRlbnRCcmVha2VyOjp3b3JkQnJlYWtCZQogICAgIHJldHVybiBicmVha1J1bGVzOwogfQog
Ci1PcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVu
dEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVu
JiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5
QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJl
YWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1
bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFp
bGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG92ZXJmbG93aW5nUnVuLmlubGluZUl0ZW0uaXNUZXh0KCkpOwog
ICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG92ZXJm
bG93aW5nUnVuLmlubGluZUl0ZW0pOwpAQCAtNDM1LDcgKzQzNSw3IEBAIE9wdGlvbmFsPElubGlu
ZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJl
YWtpbmdUZXh0CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoYnJlYWtSdWxlcy5jb250
YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0aW9uT3Bwb3J0dW5pdGllcykpIHsKLSAgICAg
ICAgYXV0byB0cnlCcmVha2luZ0F0SHlwaGVuYXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IE9w
dGlvbmFsPFBhcnRpYWxSdW4+IHsKKyAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0SHlwaGVuYXRp
b25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UGFydGlhbFJ1bj4gewogICAg
ICAgICAgICAgLy8gRmluZCB0aGUgaHlwaGVuIHBvc2l0aW9uIGFzIGZvbGxvd3M6CiAgICAgICAg
ICAgICAvLyAxLiBTcGxpdCB0aGUgdGV4dCBieSB0YWtpbmcgdGhlIGh5cGhlbiB3aWR0aCBpbnRv
IGFjY291bnQKICAgICAgICAgICAgIC8vIDIuIEZpbmQgdGhlIGxhc3QgaHlwaGVuIHBvc2l0aW9u
IGJlZm9yZSB0aGUgc3BsaXQgcG9zaXRpb24KQEAgLTUwMCw3ICs1MDAsNyBAQCBPcHRpb25hbDxJ
bmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRy
eUJyZWFraW5nVGV4dAogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgSW5saW5lQ29udGVudEJy
ZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIE9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCit2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250
aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IGNvbGxhcHNpYmxlV2lkdGgpCiB7CiAgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZUl0ZW0sIGxv
Z2ljYWxXaWR0aCB9KTsKICAgICBtX2xvZ2ljYWxXaWR0aCA9IGNsYW1wVG88SW5saW5lTGF5b3V0
VW5pdD4obV9sb2dpY2FsV2lkdGggKyBsb2dpY2FsV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJy
ZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUNvbnRlbnRCcmVha2VyLmgKaW5kZXggNWQyZDRkNmNlOGMxODkzMWQ1ZmU4YjUwYTM3
MzAxZDRhY2E4ZTdkOS4uYzZkOTVhNjk1MmFiYTJkNDQzOTJmYWM0ZjhkZDMwNmE2MzkxYzcwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5oCkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFydGlhbFJ1biB7CiAgICAgICAgIHNpemVfdCBs
ZW5ndGggeyAwIH07CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMCB9
OwotICAgICAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBoeXBoZW5XaWR0aCB7IH07Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaHlwaGVuV2lkdGggeyB9Owog
ICAgIH07CiAgICAgZW51bSBjbGFzcyBJc0VuZE9mTGluZSB7IE5vLCBZZXMgfTsKICAgICBzdHJ1
Y3QgUmVzdWx0IHsKQEAgLTU4LDExICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAg
ICAgIHN0cnVjdCBQYXJ0aWFsVHJhaWxpbmdDb250ZW50IHsKICAgICAgICAgICAgIHNpemVfdCB0
cmFpbGluZ1J1bkluZGV4IHsgMCB9OwotICAgICAgICAgICAgT3B0aW9uYWw8UGFydGlhbFJ1bj4g
cGFydGlhbFJ1bjsgLy8gbnVsbG9wdCBwYXJ0aWFsIHJ1biBtZWFucyB0aGUgdHJhaWxpbmcgcnVu
IGlzIGEgY29tcGxldGUgcnVuLgorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFsUnVu
PiBwYXJ0aWFsUnVuOyAvLyBudWxsb3B0IHBhcnRpYWwgcnVuIG1lYW5zIHRoZSB0cmFpbGluZyBy
dW4gaXMgYSBjb21wbGV0ZSBydW4uCiAgICAgICAgIH07CiAgICAgICAgIEFjdGlvbiBhY3Rpb24g
eyBBY3Rpb246OktlZXAgfTsKICAgICAgICAgSXNFbmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJc0Vu
ZE9mTGluZTo6Tm8gfTsKLSAgICAgICAgT3B0aW9uYWw8UGFydGlhbFRyYWlsaW5nQ29udGVudD4g
cGFydGlhbFRyYWlsaW5nQ29udGVudCB7IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGFydGlh
bFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWlsaW5nQ29udGVudCB7IH07CiAgICAgICAgIGNv
bnN0IElubGluZUl0ZW0qIGxhc3RXcmFwT3Bwb3J0dW5pdHlJdGVtIHsgbnVsbHB0ciB9OwogICAg
IH07CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGhhc1RyYWlsaW5n
Q29sbGFwc2libGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gISFjb2xsYXBzaWJsZUxvZ2ljYWxX
aWR0aCgpOyB9CiAgICAgICAgIGJvb2wgaXNGdWxseUNvbGxhcHNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbG9naWNhbFdpZHRoKCkgPT0gY29sbGFwc2libGVMb2dpY2FsV2lkdGgoKTsgfQogCi0gICAg
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29sbGFwc2libGVXaWR0aCk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdp
ZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAgIHN0cnVjdCBSdW4gewpAQCAt
MTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50
TG9naWNhbFJpZ2h0IHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdp
ZHRoIHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbGxhcHNpYmxlV2lkdGggeyAw
IH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nU29mdEh5cGhl
bldpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5n
U29mdEh5cGhlbldpZHRoOwogICAgICAgICBib29sIGhhc0Z1bGx5Q29sbGFwc2libGVUcmFpbGlu
Z1J1biB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAg
ICAgIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uIHsgZmFsc2UgfTsK
QEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlc3VsdCBwcm9jZXNz
T3ZlcmZsb3dpbmdDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiwgY29uc3QgTGluZVN0
YXR1cyYpIGNvbnN0OwogICAgIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgcHJvY2Vzc092ZXJmbG93
aW5nQ29udGVudFdpdGhUZXh0KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiwgY29uc3QgTGluZVN0
YXR1cyYpIGNvbnN0OwotICAgIE9wdGlvbmFsPFBhcnRpYWxSdW4+IHRyeUJyZWFraW5nVGV4dFJ1
bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd1J1biwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lk
dGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhcnRpYWxSdW4+IHRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250
aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9v
bCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0OwogCiAgICAgZW51
bSBjbGFzcyBXb3JkQnJlYWtSdWxlIHsKICAgICAgICAgQXRBcmJpdHJhcnlQb3NpdGlvbiAgICAg
ICAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggZWU4MWExNzExNzM4OGNjZjFmODg2YWI2Y2FkOGI5NjQ1OWYzNjU0ZC4u
Nzg2NGFlY2Q3MjE2ZmRjMjAyMDJlZDdiNzlmZDIyMGY3NzE3MDUwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTgyLDkgKzE4Miw5
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMm
IGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgc3RydWN0IFByZXZpb3VzTGluZSB7CiAg
ICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CiAgICAgICAgIHNpemVf
dCBvdmVyZmxvd0NvbnRlbnRMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOwogICAgIH07Ci0gICAgT3B0aW9u
YWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgc3RkOjpvcHRpb25hbDxQcmV2aW91
c0xpbmU+IHByZXZpb3VzTGluZTsKICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gZm9ybWF0dGlu
Z1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0
aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0YXRlIH07CiAgICAgYXV0byBpc0ZpcnN0TGlu
ZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmlzRW1wdHkoKTsKQEAgLTM1NSw3ICszNTUsNyBA
QCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSG9yaXpvbnRhbE1hcmdpbihj
b25zdCBCb3gmIGxheW91dEJveCwgY29ucwogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGF1dG8gY29t
cHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpIHsKKyAgICBhdXRvIGNv
bXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpIHsKICAgICAg
ICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0aW5nQ29udGVudFdpZHRoQW5kTWFyZ2luKGxh
eW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IHVzZWRXaWR0aCwgeyB9IH0pOwogICAg
ICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKQEAgLTM4Nyw3ICszODcsNyBA
QCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGF1dG8gY29t
cHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSB7CisgICAgYXV0byBj
b21wdXRlID0gWyZdKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgewogICAg
ICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkuZmxvYXRpbmdDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
KGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IHVzZWRIZWlnaHQgfSk7CiAgICAg
ICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggYmM2YzBlNTc1OGQ0NDJk
Zjk3OWY1Y2I1MDcxODYxNjM1NmVjZjk4YS4uOThiOTRhOWY4ZjkzNTE0ZTQ2YjRkMjFkY2VjNDNh
MjIxOTJjNjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFNpbXBs
aWZpZWRWZXJ0aWNhbEFsaWdubWVudCB7CiAgICAgICAgIFNpbXBsaWZpZWRWZXJ0aWNhbEFsaWdu
bWVudChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgcm9vdElubGluZUJveCk7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgY2FuVXNlU2ltcGxpZmllZEFsaWdubWVudChjb25zdCBMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCYgcm9vdElubGluZUJveCwgY29uc3QgTGluZUJveDo6SW5saW5lTGV2
ZWxCb3gmLCBPcHRpb25hbDxjb25zdCBCb3hHZW9tZXRyeT4gaW5saW5lTGV2ZWxCb3hHZW9tZXRy
eSk7CisgICAgICAgIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRBbGlnbm1lbnQoY29uc3Qg
TGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIHJvb3RJbmxpbmVCb3gsIGNvbnN0IExpbmVCb3g6Oklu
bGluZUxldmVsQm94Jiwgc3RkOjpvcHRpb25hbDxjb25zdCBCb3hHZW9tZXRyeT4gaW5saW5lTGV2
ZWxCb3hHZW9tZXRyeSk7CiAKICAgICAgICAgdm9pZCBhbGlnbihMaW5lQm94OjpJbmxpbmVMZXZl
bEJveCYpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIEhhbmdpbmdUcmFpbGluZ1doaXRl
c3BhY2VDb250ZW50IGNvbGxlY3RIYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudCgKICAg
ICByZXR1cm4gaGFuZ2luZ0NvbnRlbnQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1
bnMsIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2Fs
V2lkdGgsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0xhc3RM
aW5lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaG9yaXpvbnRhbEFs
aWdubWVudE9mZnNldChjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zLCBUZXh0QWxpZ25Nb2RlIHRl
eHRBbGlnbiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdpZHRoLCBJbmxpbmVMYXlvdXRV
bml0IGNvbnRlbnRMb2dpY2FsV2lkdGgsIGJvb2wgaXNMYXN0TGluZSkKIHsKICAgICBhdXRvIGF2
YWlsYWJsZVdpZHRoID0gbGluZUxvZ2ljYWxXaWR0aCAtIGNvbnRlbnRMb2dpY2FsV2lkdGg7CiAg
ICAgYXV0byBoYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudCA9IGNvbGxlY3RIYW5naW5n
VHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudChydW5zLCBpc0xhc3RMaW5lKTsKQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RBbmRBbGlnbklubGluZUxldmVs
Qm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTAogICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBw
YXRoIHN1cHBvcnQgZm9yIGxpbmUtaGVpZ2h0IGNvbnRlbnQuCiAgICAgc2ltcGxpZmllZFZlcnRp
Y2FsQWxpZ25tZW50LnNldEVuYWJsZWQobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSAm
JiByb290Qm94KCkuc3R5bGUoKS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpKTsKIAotICAgIGF1
dG8gc2ltcGxpZmllZEFsaWduVmVydGljYWxseUlmQXBwbGljYWJsZSA9IFsmXShhdXRvJiBpbmxp
bmVMZXZlbEJveCwgT3B0aW9uYWw8Y29uc3QgQm94R2VvbWV0cnk+IGJveEdlb21ldHJ5KSB7Cisg
ICAgYXV0byBzaW1wbGlmaWVkQWxpZ25WZXJ0aWNhbGx5SWZBcHBsaWNhYmxlID0gWyZdKGF1dG8m
IGlubGluZUxldmVsQm94LCBzdGQ6Om9wdGlvbmFsPGNvbnN0IEJveEdlb21ldHJ5PiBib3hHZW9t
ZXRyeSkgewogICAgICAgICBpZiAoIXNpbXBsaWZpZWRWZXJ0aWNhbEFsaWdubWVudC5pc0VuYWJs
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFTaW1wbGlmaWVkVmVydGlj
YWxBbGlnbm1lbnQ6OmNhblVzZVNpbXBsaWZpZWRBbGlnbm1lbnQocm9vdElubGluZUJveCwgaW5s
aW5lTGV2ZWxCb3gsIGJveEdlb21ldHJ5KSkgewpAQCAtNDAxLDggKzQwMSw4IEBAIHZvaWQgTGlu
ZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVz
VmVydGljYWxseShMaW5lCiAgICAgICAgIH07CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKIAotICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9w
ID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBhdXRvIG1heGltdW1M
b2dpY2FsQm90dG9tID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OworICAgICAgICBh
dXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7
IH07CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IHsgfTsKICAgICAgICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gsIGxpbmVCb3gpKSB7CiAgICAg
ICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAg
ICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290SW5saW5lQm94LmxheW91dEJvdW5kcygp
LmhlaWdodCgpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1
dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5lCiAg
ICAgICAgIEhhc2hNYXA8Y29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBJbmxpbmVMYXlv
dXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXA7CiAgICAgICAg
IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoJnJvb3RJbmxpbmVC
b3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKIAotICAgICAgICBhdXRvIG1heGltdW1Ub3BPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
eyB9OworICAgICAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2Vs
aW5lID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CiAgICAgICAgIGlmIChm
b3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChyb290SW5saW5l
Qm94LCBsaW5lQm94KSkKICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGlu
ZUJveEJhc2VsaW5lID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAKQEAg
LTYyMiw3ICs2MjIsNyBAQCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2FsQWxpZ25t
ZW50OjpTaW1wbGlmaWVkVmVydGljYWxBbGlnbm1lbnQoY29uc3QgTAogICAgIGFkanVzdChyb290
SW5saW5lQm94KTsKIH0KIAotYm9vbCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2Fs
QWxpZ25tZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50KGNvbnN0IExpbmVCb3g6OklubGlu
ZUxldmVsQm94JiByb290SW5saW5lQm94LCBjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYg
aW5saW5lTGV2ZWxCb3gsIE9wdGlvbmFsPGNvbnN0IEJveEdlb21ldHJ5PiBpbmxpbmVMZXZlbEJv
eEdlb21ldHJ5KQorYm9vbCBMaW5lQm94QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2FsQWxpZ25t
ZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50KGNvbnN0IExpbmVCb3g6OklubGluZUxldmVs
Qm94JiByb290SW5saW5lQm94LCBjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5l
TGV2ZWxCb3gsIHN0ZDo6b3B0aW9uYWw8Y29uc3QgQm94R2VvbWV0cnk+IGlubGluZUxldmVsQm94
R2VvbWV0cnkpCiB7CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2ZWxC
b3goKSkgewogICAgICAgICBBU1NFUlQoaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggNjkyZTk2NjM4MzhlZDMyYThkZGIxOWI1ZmVhZDI0
Njk3OTlmMWMxMC4uNmFjYmM0YmJmZTMwZGJhMjg3OTUwZTQ2YWM3ZjIwZWI4NTE4MjIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCBjcmVhdGVHZW5lcmljSW5saW5l
TGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAKICAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZWxp
bmU7IH0KLSAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gZGVzY2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzY2VudDsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KICAgICAgICAgLy8g
U2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKICAg
ICAgICAgc3RydWN0IExheW91dEJvdW5kcyB7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCArIGRlc2NlbnQ7IH0KQEAgLTEyOCw3ICsx
MjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAgICAg
ICAgTGF5b3V0Qm91bmRzIG1fbGF5b3V0Qm91bmRzOwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IG1fYmFzZWxpbmUgeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1f
ZGVzY2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2Rlc2Nl
bnQ7CiAgICAgICAgIGJvb2wgbV9oYXNDb250ZW50IHsgZmFsc2UgfTsKICAgICAgICAgVHlwZSBt
X3R5cGUgeyBUeXBlOjpJbmxpbmVCb3ggfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGEzNTk5M2QzZjVmNGFlMDQ1MTk5YThlNDhkM2FlODkx
ZjE0NzBiNmEuLmYzOTE0YjRiMDAyNmEwYzhjYTkxZDE3MjRmODJlNWEzNGQxYjY0NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBA
QCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpJbmxpbmVDb250ZW50KGJvb2wgaWdub3Jl
VHJhaWxpbmdMZXR0ZXJTcGFjaW5nKQogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5saW5l
Q29udGVudDo6YXBwZW5kSW5saW5lSXRlbShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAgICBBU1NFUlQoaW5saW5lSXRlbS5p
c1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0
YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKLSAgICBhdXRvIGNvbGxhcHNp
YmxlV2lkdGggPSBbJl0oKSAtPiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAgYXV0
byBjb2xsYXBzaWJsZVdpZHRoID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB7CiAgICAgICAgIGlmICghaW5saW5lSXRlbS5pc1RleHQoKSkKICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUl0ZW0pOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIExpbmVCdWlsZGVyOjpM
aW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQsCiB7CiB9CiAKLUxpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6
bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFu
Z2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoLCBjb25zdCBJbmxpbmVSZWN0JiBpbml0aWFs
TGluZUxvZ2ljYWxSZWN0LCBib29sIGlzRmlyc3RMaW5lKQorTGluZUJ1aWxkZXI6OkxpbmVDb250
ZW50IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5n
ZSYgbmVlZHNMYXlvdXRSYW5nZSwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwg
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCwgY29u
c3QgSW5saW5lUmVjdCYgaW5pdGlhbExpbmVMb2dpY2FsUmVjdCwgYm9vbCBpc0ZpcnN0TGluZSkK
IHsKICAgICBpbml0aWFsaXplKGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoaW5pdGlhbExpbmVM
b2dpY2FsUmVjdCwgaXNGaXJzdExpbmUpKTsKIApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgVXNlZENvbnN0cmFpbnRzJiBsaW5lQ29uc3RyYWlu
dHMpCiAgICAgbV9jb250ZW50SXNDb25zdHJhaW5lZEJ5RmxvYXQgPSBsaW5lQ29uc3RyYWludHMu
aXNDb25zdHJhaW5lZEJ5RmxvYXQ7CiB9CiAKLUxpbmVCdWlsZGVyOjpDb21taXR0ZWRDb250ZW50
IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW91dFJhbmdlLCBzaXplX3QgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRoKQorTGluZUJ1aWxkZXI6
OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25zdCBJ
bmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0Nv
bnRlbnRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2lj
YWxXaWR0aCkKIHsKICAgICBhdXRvIGxpbmVDYW5kaWRhdGUgPSBMaW5lQ2FuZGlkYXRlIHsgbGF5
b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKSB9OwogICAgIGF1
dG8gaW5saW5lQ29udGVudEJyZWFrZXIgPSBJbmxpbmVDb250ZW50QnJlYWtlciB7IH07CkBAIC0z
NzUsNyArMzc1LDcgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRlcjo6
Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAgICByZXR1cm4gbGluZVJh
bmdlOwogfQogCi1PcHRpb25hbDxIb3Jpem9udGFsQ29uc3RyYWludHM+IExpbmVCdWlsZGVyOjpm
bG9hdENvbnN0cmFpbnRzKGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBMaW5lQnVpbGRlcjo6ZmxvYXRD
b25zdHJhaW50cyhjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QpIGNvbnN0CiB7CiAg
ICAgYXV0byogZmxvYXRpbmdTdGF0ZSA9IHRoaXMtPmZsb2F0aW5nU3RhdGUoKTsKICAgICBpZiAo
IWZsb2F0aW5nU3RhdGUgfHwgZmxvYXRpbmdTdGF0ZS0+ZmxvYXRzKCkuaXNFbXB0eSgpKQpAQCAt
NDU5LDcgKzQ1OSw3IEBAIExpbmVCdWlsZGVyOjpVc2VkQ29uc3RyYWludHMgTGluZUJ1aWxkZXI6
OmluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSW5saW5lCiAgICAgcmV0dXJuIFVzZWRD
b25zdHJhaW50cyB7IHsgaW5pdGlhbExpbmVMb2dpY2FsUmVjdC50b3AoKSwgbGluZUxvZ2ljYWxM
ZWZ0LCBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0LCBpbml0aWFsTGluZUxvZ2lj
YWxSZWN0LmhlaWdodCgpIH0sIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB9OwogfQogCi12b2lk
IExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5l
Q2FuZGlkYXRlLCBzaXplX3QgY3VycmVudElubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRl
bVJhbmdlJiBsYXlvdXRSYW5nZSwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwg
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5lTGF5
b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQordm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRl
Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGN1cnJl
bnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIHNp
emVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9n
aWNhbFJpZ2h0KQogewogICAgIEFTU0VSVChjdXJyZW50SW5saW5lSXRlbUluZGV4IDwgbGF5b3V0
UmFuZ2UuZW5kKTsKICAgICBsaW5lQ2FuZGlkYXRlLnJlc2V0KCk7CkBAIC01NTYsNyArNTU2LDcg
QEAgc2l6ZV90IExpbmVCdWlsZGVyOjpuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydElu
ZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6SW4KICAgICAvLyBbZXgtXVtpbmxpbmUgYm94IHN0YXJ0
XVtpbmxpbmUgYm94IGVuZF1bZmxvYXRdW2FtcGxlXSAoZXgtPHNwYW4+PC9zcGFuPjxkaXYgc3R5
bGU9ImZsb2F0OmxlZnQiPjwvZGl2PmFtcGxlKS4gV3JhcCBpbmRleCBpcyBhdCBbZXgtXS4KICAg
ICAvLyBbZXhdW2lubGluZSBib3ggc3RhcnRdW2FtcC1dW2lubGluZSBib3ggc3RhcnRdW2xlXSAo
ZXg8c3Bhbj5hbXAtPHNwYW4+YW1wbGUpLiBXcmFwIGluZGV4IGlzIGF0IFthbXAtXS4KICAgICAv
LyBbZXgtXVtpbmxpbmUgYm94IHN0YXJ0XVtsaW5lIGJyZWFrXVthbXBsZV0gKGV4LTxzcGFuPjxi
cj5hbXBsZSkuIFdyYXAgaW5kZXggaXMgYWZ0ZXIgW2JyXS4KLSAgICBhdXRvIHByZXZpb3VzSW5s
aW5lSXRlbUluZGV4ID0gT3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0byBwcmV2aW91c0lu
bGluZUl0ZW1JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CiAgICAgZm9yIChhdXRv
IGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmQ7ICsraW5kZXgpIHsK
ICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IG1faW5saW5lSXRlbXNbaW5kZXhdOwogICAgICAg
ICBpZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpIHx8IGlubGluZUl0ZW0uaXNXb3JkQnJlYWtP
cHBvcnR1bml0eSgpKSB7CkBAIC02OTUsNyArNjk1LDcgQEAgTGluZUJ1aWxkZXI6OlJlc3VsdCBM
aW5lQnVpbGRlcjo6aGFuZGxlSW5saW5lQ29udGVudChJbmxpbmVDb250ZW50QnJlYWtlciYgaW5s
aW4KICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmlzRW5kT2ZMaW5lLCB7IGNhbmRpZGF0ZVJ1bnMu
c2l6ZSgpLCBmYWxzZSB9IH07CiAgICAgfQogCi0gICAgYXV0byBlbGlnaWJsZU92ZXJmbG93V2lk
dGhBc0xlYWRpbmcgPSBbJl0gKCkgLT4gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geworICAg
IGF1dG8gZWxpZ2libGVPdmVyZmxvd1dpZHRoQXNMZWFkaW5nID0gWyZdICgpIC0+IHN0ZDo6b3B0
aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewogICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIG90aGVyIHR5cGVzIG9mIGNvbnRpbnVvdXMgY29udGVudC4KICAgICAgICAgQVNTRVJUKHJl
c3VsdC5hY3Rpb24gPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0aW9uOjpXcmFw
IHx8IHJlc3VsdC5hY3Rpb24gPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0aW9u
OjpCcmVhayk7CiAgICAgICAgIGlmIChjYW5kaWRhdGVSdW5zLnNpemUoKSAhPSAxIHx8ICFjYW5k
aWRhdGVSdW5zLmZpcnN0KCkuaW5saW5lSXRlbS5pc1RleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDBlMjE3MTUwNWVmZmI0MmZkZjBiMzIxNjQzYjM0M2Q4
YzU1ZmNhZWYuLmIxZTc5NGQ3ZTNiYTA4MWJkNzhiNTk0OTFhOTI1MTc0ZGQ1NGJkMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgc3RydWN0IExpbmVDb250ZW50IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlu
bGluZUl0ZW1SYW5nZTsKICAgICAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5n
dGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9n
aWNhbFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJm
bG93TG9naWNhbFdpZHRoOwogICAgICAgICBjb25zdCBGbG9hdExpc3QmIGZsb2F0czsKICAgICAg
ICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCB7IGZhbHNlIH07CiAgICAgICAgIElubGluZUxheW91
dFBvaW50IGxvZ2ljYWxUb3BMZWZ0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQgeyAwIH07CiAgICAgICAgIGNv
bnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKLSAgICBMaW5lQ29udGVudCBsYXlvdXRJ
bmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYsIHNpemVfdCBwYXJ0aWFsTGVhZGlu
Z0NvbnRlbnRMZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxlYWRpbmdMb2dpY2Fs
V2lkdGgsIGNvbnN0IElubGluZVJlY3QmIGluaXRpYWxMaW5lTG9naWNhbFJlY3QsIGJvb2wgaXNG
aXJzdExpbmUpOworICAgIExpbmVDb250ZW50IGxheW91dElubGluZUNvbnRlbnQoY29uc3QgSW5s
aW5lSXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRoLCBjb25zdCBJbmxp
bmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBib29sIGlzRmlyc3RMaW5lKTsKIAogICAg
IHN0cnVjdCBJbnRyaW5zaWNDb250ZW50IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlubGlu
ZUl0ZW1SYW5nZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIEludHJpbnNpY0NvbnRl
bnQgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmLCBJbmxpbmVM
YXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNhbmRpZGF0
ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmLCBzaXplX3QgaW5saW5lSXRlbUluZGV4LCBj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBvdmVyZmxvd0xl
bmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5s
aW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAgICB2b2lkIGNhbmRpZGF0ZUNv
bnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmLCBzaXplX3QgaW5saW5lSXRlbUluZGV4LCBjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBvdmVyZmxvd0xlbmd0
aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5nTG9naWNhbFdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAgIHNpemVfdCBuZXh0V3Jh
cE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5l
SXRlbVJhbmdlJiBsYXlvdXRSYW5nZSkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUmVzdWx0IHsKQEAg
LTgzLDE0ICs4MywxNCBAQCBwcml2YXRlOgogICAgICAgICB9OwogICAgICAgICBDb21taXR0ZWRD
b250ZW50Q291bnQgY29tbWl0dGVkQ291bnQgeyB9OwogICAgICAgICBzaXplX3QgcGFydGlhbFRy
YWlsaW5nQ29udGVudExlbmd0aCB7IDAgfTsKLSAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0
VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGggeyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoIHsgfTsKICAgICB9OwogICAgIHN0
cnVjdCBVc2VkQ29uc3RyYWludHMgewogICAgICAgICBJbmxpbmVSZWN0IGxvZ2ljYWxSZWN0Owog
ICAgICAgICBib29sIGlzQ29uc3RyYWluZWRCeUZsb2F0IHsgZmFsc2UgfTsKICAgICB9OwogICAg
IFVzZWRDb25zdHJhaW50cyBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGNvbnN0IElubGluZVJl
Y3QmIGluaXRpYWxMaW5lTG9naWNhbFJlY3QsIGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0OwotICAg
IE9wdGlvbmFsPEhvcml6b250YWxDb25zdHJhaW50cz4gZmxvYXRDb25zdHJhaW50cyhjb25zdCBJ
bmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8SG9y
aXpvbnRhbENvbnN0cmFpbnRzPiBmbG9hdENvbnN0cmFpbnRzKGNvbnN0IElubGluZVJlY3QmIGxp
bmVMb2dpY2FsUmVjdCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZUZsb2F0Q29udGVudChjb25z
dCBJbmxpbmVJdGVtJik7CiAgICAgUmVzdWx0IGhhbmRsZUlubGluZUNvbnRlbnQoSW5saW5lQ29u
dGVudEJyZWFrZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIGNv
bnN0IExpbmVDYW5kaWRhdGUmKTsKQEAgLTEwMSw5ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIHN0
cnVjdCBDb21taXR0ZWRDb250ZW50IHsKICAgICAgICAgc2l6ZV90IGlubGluZUl0ZW1Db3VudCB7
IDAgfTsKICAgICAgICAgc2l6ZV90IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGggeyAwIH07
Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRo
IHsgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xv
Z2ljYWxXaWR0aCB7IH07CiAgICAgfTsKLSAgICBDb21taXR0ZWRDb250ZW50IHBsYWNlSW5saW5l
Q29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmLCBzaXplX3QgcGFydGlhbExlYWRpbmdDb250
ZW50TGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0
aCk7CisgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5l
SXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpvcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCk7CiAgICAgSW5saW5l
SXRlbVJhbmdlIGNsb3NlKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwg
Y29uc3QgQ29tbWl0dGVkQ29udGVudCYpOwogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJ
dGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2lj
YWxMZWZ0KSBjb25zdDsKQEAgLTExOSwxMyArMTE5LDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CiAgICAg
SW5saW5lRm9ybWF0dGluZ1N0YXRlKiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZSB7IG51bGxwdHIg
fTsKICAgICBGbG9hdGluZ1N0YXRlKiBtX2Zsb2F0aW5nU3RhdGUgeyBudWxscHRyIH07Ci0gICAg
T3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBtX3Jvb3RIb3Jpem9udGFsQ29uc3RyYWlu
dHM7CisgICAgc3RkOjpvcHRpb25hbDxIb3Jpem9udGFsQ29uc3RyYWludHM+IG1fcm9vdEhvcml6
b250YWxDb25zdHJhaW50czsKIAogICAgIExpbmUgbV9saW5lOwogICAgIElubGluZVJlY3QgbV9s
aW5lTG9naWNhbFJlY3Q7CiAgICAgY29uc3QgSW5saW5lSXRlbXMmIG1faW5saW5lSXRlbXM7CiAg
ICAgRmxvYXRMaXN0IG1fZmxvYXRzOwotICAgIE9wdGlvbmFsPElubGluZVRleHRJdGVtPiBtX3Bh
cnRpYWxMZWFkaW5nVGV4dEl0ZW07CisgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVUZXh0SXRlbT4g
bV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtOwogICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVtKj4g
bV93cmFwT3Bwb3J0dW5pdHlMaXN0OwogICAgIHVuc2lnbmVkIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0
ZWRMaW5lQ291bnQgeyAwIH07CiAgICAgYm9vbCBtX2NvbnRlbnRJc0NvbnN0cmFpbmVkQnlGbG9h
dCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmgKaW5kZXggY2UwMDcwOTcw
YmFkODljYTM4ZDM0YTMxYWQyNDE2YWViYzdkNmRlYS4uODIyNDJkZDA3MThiNDY1MmQzNjhlNmJk
NzhkNWMzZDRhOTYyYzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaApAQCAtNjAs
NyArNjAsNyBAQCBzdHJ1Y3QgTGluZVJ1biB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHBhbnNp
b247Ci0gICAgTGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxp
bmVSZWN0JiwgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0PiA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
TGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0Jiwg
RXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIGNv
bnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVj
dDsgfQogCkBAIC03Myw4ICs3Myw4IEBAIHN0cnVjdCBMaW5lUnVuIHsKICAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhlaWdo
dCgpOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0
KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQotICAgIE9wdGlvbmFs
PFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8VGV4
dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFRl
eHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxU
ZXh0PiYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCiAgICAgc3RydWN0IEV4cGFu
c2lvbiB7CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsgRGVmYXVsdEV4cGFu
c2lvbiB9OwpAQCAtOTAsMTAgKzkwLDEwIEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxjb25zdCBM
YXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CiAgICAgSW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0Owog
ICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBPcHRpb25hbDxUZXh0PiBtX3RleHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3RleHQ7CiB9OwogCi1pbmxpbmUgTGluZVJ1bjo6TGlu
ZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25z
dCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCwgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8
VGV4dD4gdGV4dCkKK2lubGluZSBMaW5lUnVuOjpMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNv
bnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0
LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+IHRleHQpCiAgICAgOiBt
X2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlv
dXRCb3gpKQogICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZVJlY3QuaAppbmRleCAyZGYxNDQ2YzAwMTYwNmY3MDg1NmZmM2E5ZDAyOGNlYzhkNjIzOWZiLi4y
OWFlMjk1MzA3ZThkZTczZjRiYTk3M2FkNzMxZDJmNmI0Mjc0ZWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lUmVjdC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0aWNh
bGx5KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUJ5KElubGluZUxheW91dFBvaW50
KTsKIAotICAgIHZvaWQgZXhwYW5kKE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+LCBPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0Pik7CisgICAgdm9pZCBleHBhbmQoc3RkOjpvcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0Piwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Pik7CiAgICAgdm9p
ZCBleHBhbmRUb0NvbnRhaW4oY29uc3QgSW5saW5lUmVjdCYpOwogICAgIHZvaWQgZXhwYW5kSG9y
aXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kKGRlbHRhLCB7IH0pOyB9
CiAgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhw
YW5kKHsgfSwgZGVsdGEpOyB9CkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIHZvaWQgSW5saW5l
UmVjdDo6bW92ZUJ5KElubGluZUxheW91dFBvaW50IG9mZnNldCkKICAgICBtX3JlY3QubW92ZUJ5
KG9mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZChPcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaGVpZ2h0
KQoraW5saW5lIHZvaWQgSW5saW5lUmVjdDo6ZXhwYW5kKHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gaGVpZ2h0KQog
ewogICAgIEFTU0VSVCghd2lkdGggfHwgbV9oYXNWYWxpZFdpZHRoKTsKICAgICBBU1NFUlQoIWhl
aWdodCB8fCBtX2hhc1ZhbGlkSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVt
LmNwcAppbmRleCBmNWQ2MTBkZTE3NjBkZTBmYWE4MTY2ZTEyOThhNTFjMGNlMzNmYTJkLi41Mzkz
ZWE0OWZkMTU3NTlkN2YwODBiNmFkMDVlMmRiMDFiODc2NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lVGV4dEl0ZW0uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBXaGl0ZXNwYWNlQ29u
dGVudCB7CiAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKICAgICBib29sIGlzV29yZFNlcGFyYXRv
ciB7IHRydWUgfTsKIH07Ci1zdGF0aWMgT3B0aW9uYWw8V2hpdGVzcGFjZUNvbnRlbnQ+IG1vdmVU
b05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oY29uc3QgU3RyaW5nVmlldyYgdGV4dENvbnRlbnQs
IHNpemVfdCBzdGFydFBvc2l0aW9uLCBib29sIHByZXNlcnZlTmV3bGluZSwgYm9vbCBwcmVzZXJ2
ZVRhYikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdoaXRlc3BhY2VDb250ZW50PiBtb3ZlVG9OZXh0
Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGNvbnN0IFN0cmluZ1ZpZXcmIHRleHRDb250ZW50LCBzaXpl
X3Qgc3RhcnRQb3NpdGlvbiwgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUsIGJvb2wgcHJlc2VydmVUYWIp
CiB7CiAgICAgYXV0byBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgYXV0
byBpc1doaXRlc3BhY2VDaGFyYWN0ZXIgPSBbJl0oYXV0byBjaGFyYWN0ZXIpIHsKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElu
bGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIGF1dG8gbGluZUJyZWFrSXRlcmF0
b3IgPSBMYXp5TGluZUJyZWFrSXRlcmF0b3IgeyB0ZXh0LCBzdHlsZS5jb21wdXRlZExvY2FsZSgp
LCBUZXh0VXRpbDo6bGluZUJyZWFrSXRlcmF0b3JNb2RlKHN0eWxlLmxpbmVCcmVhaygpKSB9Owog
ICAgIHVuc2lnbmVkIGN1cnJlbnRQb3NpdGlvbiA9IDA7CiAKLSAgICBhdXRvIGlubGluZUl0ZW1X
aWR0aCA9IFsmXShhdXRvIHN0YXJ0UG9zaXRpb24sIGF1dG8gbGVuZ3RoKSAtPiBPcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB7CisgICAgYXV0byBpbmxpbmVJdGVtV2lkdGggPSBbJl0oYXV0byBz
dGFydFBvc2l0aW9uLCBhdXRvIGxlbmd0aCkgLT4gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB7CiAgICAgICAgIGlmICghaW5saW5lVGV4dEJveC5jYW5Vc2VTaW1wbGlmaWVkQ29udGVu
dE1lYXN1cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgcmV0dXJuIFRl
eHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBzdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9u
ICsgbGVuZ3RoLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmgKaW5kZXggM2Mw
Y2YyNmJiODAxNWRjZDUyNWM5MTI4MmQwNGZjYmQwN2E4ZjQzMS4uYTcwZGQ1Mzg1ODk1MWI1Mzcw
YjlmYTI2NWViNThhOGZiZjFmNjk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2hpdGVzcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dEl0ZW1UeXBlID09IFRleHRJdGVtVHlwZTo6V2hpdGVzcGFjZTsgfQog
ICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc1dvcmRTZXBhcmF0
b3I7IH0KICAgICBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzVHJhaWxpbmdTb2Z0SHlwaGVuOyB9Ci0gICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2hhc1dpZHRoID8gc3RkOjptYWtlX29wdGlvbmFsKG1f
d2lkdGgpIDogT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OyB9CisgICAgc3RkOjpvcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lkdGgg
PyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkgOiBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IHsgfTsgfQogICAgIGJvb2wgaXNFbXB0eUNvbnRlbnQoKSBjb25zdDsKIAogICAgIGNv
bnN0IElubGluZVRleHRCb3gmIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3goKSk7IH0KQEAgLTU5LDIwICs1OSwyMCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHVzaW5nIElubGluZUl0ZW06OlRleHRJdGVtVHlwZTsKIAotICAg
IElubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRTZXBh
cmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUpOwor
ICAgIElubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRT
ZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRleHRJdGVt
VHlwZSk7CiAgICAgZXhwbGljaXQgSW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYp
OwogCi0gICAgc3RhdGljIElubGluZVRleHRJdGVtIGNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNvbnN0
IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlz
V29yZFNlcGFyYXRvciwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpOwotICAgIHN0
YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVOb25XaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVU
ZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFpbGlu
Z1NvZnRIeXBoZW4sIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0
aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJv
eCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNXb3JkU2VwYXJhdG9y
LCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5s
aW5lVGV4dEl0ZW0gY3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlw
aGVuLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKICAgICBzdGF0aWMg
SW5saW5lVGV4dEl0ZW0gY3JlYXRlRW1wdHlJdGVtKGNvbnN0IElubGluZVRleHRCb3gmKTsKIH07
CiAKLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVzcGFj
ZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHdpZHRoKQoraW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpj
cmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzV29yZFNlcGFyYXRvciwgc3Rk
OjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKIHsKICAgICByZXR1cm4geyBpbmxp
bmVUZXh0Qm94LCBzdGFydCwgbGVuZ3RoLCBmYWxzZSwgaXNXb3JkU2VwYXJhdG9yLCB3aWR0aCwg
VGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlIH07CiB9CiAKLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJ
bmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJv
eCYgaW5saW5lVGV4dEJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBo
YXNUcmFpbGluZ1NvZnRIeXBoZW4sIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKQor
aW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpjcmVhdGVOb25XaGl0ZXNwYWNl
SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgc3RkOjpvcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKIHsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmb2xs
b3dpbmcgbGlzdCBvZiBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRvIHNldCB0aGUgImlzV29y
ZFNlcGFyYXRvciIgYml0OiBub0JyZWFrU3BhY2UsIGV0aGlvcGljV29yZHNwYWNlLCBhZWdlYW5X
b3JkU2VwYXJhdG9yTGluZSBhZWdlYW5Xb3JkU2VwYXJhdG9yRG90IHVnYXJpdGljV29yZERpdmlk
ZXIuCiAgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCwgc3RhcnQsIGxlbmd0aCwgaGFzVHJhaWxp
bmdTb2Z0SHlwaGVuLCBmYWxzZSwgd2lkdGgsIFRleHRJdGVtVHlwZTo6Tm9uV2hpdGVzcGFjZSB9
OwpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgSW5saW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06
OmNyZWF0ZUVtcHR5SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbgogICAgIHJldHVybiBJ
bmxpbmVUZXh0SXRlbSB7IGlubGluZVRleHRCb3ggfTsKIH0KIAotaW5saW5lIElubGluZVRleHRJ
dGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhl
biwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRo
LCBUZXh0SXRlbVR5cGUgdGV4dEl0ZW1UeXBlKQoraW5saW5lIElubGluZVRleHRJdGVtOjpJbmxp
bmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBp
c1dvcmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRl
eHRJdGVtVHlwZSB0ZXh0SXRlbVR5cGUpCiAgICAgOiBJbmxpbmVJdGVtKGlubGluZVRleHRCb3gs
IFR5cGU6OlRleHQpCiB7CiAgICAgbV9zdGFydE9yUG9zaXRpb24gPSBzdGFydDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQwN2ZmYTRkZDBl
ZGY4NTg2MDAxNGNhOTcwNGNmMmNlOWFkMmI2NWYuLjdlMzM1MGYzNTI5ZDcwMTUwMjc1NDA0MDc1
NDJlNWJhZDUzODhkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAg
ICAgYXV0byBzZWN0aW9uV2lkdGggPSBncmlkLmNvbHVtbnMoKS5sb2dpY2FsV2lkdGgoKSArIDIg
KiBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7CiAgICAgYXV0byBsb2dpY2FsVG9wID0gY29uc3Ry
YWludHMudmVydGljYWwubG9naWNhbFRvcDsKICAgICBhdXRvIHZlcnRpY2FsU3BhY2luZyA9IGdy
aWQudmVydGljYWxTcGFjaW5nKCk7Ci0gICAgYXV0byBwYWRkaW5nQmVmb3JlID0gT3B0aW9uYWw8
TGF5b3V0VW5pdD4geyB2ZXJ0aWNhbFNwYWNpbmcgfTsKKyAgICBhdXRvIHBhZGRpbmdCZWZvcmUg
PSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsgdmVydGljYWxTcGFjaW5nIH07CiAgICAgYXV0
byBwYWRkaW5nQWZ0ZXIgPSB2ZXJ0aWNhbFNwYWNpbmc7CiAgICAgZm9yIChhdXRvJiBzZWN0aW9u
Qm94IDogY2hpbGRyZW5PZlR5cGU8Q29udGFpbmVyQm94Pih0YWJsZUJveCkpIHsKICAgICAgICAg
YXV0byYgc2VjdGlvbkJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnko
c2VjdGlvbkJveCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25zdCBDb25zdHJhaW50c0ZvckluRmwK
ICAgICB9CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25z
dCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNw
YWNlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVu
dCkKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdy
aWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50KQog
ewogICAgIEFTU0VSVChjZWxsLmJveCgpLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCgpKTsKIApAQCAtNDE3LDkgKzQxNyw5IEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtCiAKICAg
ICAvLyAyLiBDb2xsZWN0IHRoZSBmaXhlZCB3aWR0aCA8Y29sPnMuCiAgICAgYXV0byYgY29sdW1u
TGlzdCA9IGdyaWQuY29sdW1ucygpLmxpc3QoKTsKLSAgICBWZWN0b3I8T3B0aW9uYWw8TGF5b3V0
VW5pdD4+IGZpeGVkV2lkdGhDb2x1bW5zOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+PiBmaXhlZFdpZHRoQ29sdW1uczsKICAgICBmb3IgKGF1dG8mIGNvbHVtbiA6IGNvbHVt
bkxpc3QpIHsKLSAgICAgICAgYXV0byBmaXhlZFdpZHRoID0gWyZdICgpIC0+IE9wdGlvbmFsPExh
eW91dFVuaXQ+IHsKKyAgICAgICAgYXV0byBmaXhlZFdpZHRoID0gWyZdICgpIC0+IHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gewogICAgICAgICAgICAgYXV0byogY29sdW1uQm94ID0gY29sdW1u
LmJveCgpOwogICAgICAgICAgICAgaWYgKCFjb2x1bW5Cb3gpIHsKICAgICAgICAgICAgICAgICAv
LyBBbm95bm1vdXMgY29sdW1ucyBkb24ndCBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIGFu
ZCBjYW4ndCBoYXZlIGZpeGVkIGNvbCBzaXplLgpAQCAtNDg4LDcgKzQ4OCw3IEBAIEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJy
ZWRXaWR0aEZvckNvbHVtCiAgICAgcmV0dXJuIHRhYmxlV2lkdGhDb25zdHJhaW50czsKIH0KIAot
dm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhU3Bh
Y2UoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6
b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNw
YWNlKQogewogICAgIC8vIENvbXB1dGUgYW5kIGJhbGFuY2UgdGhlIGNvbHVtbiBhbmQgcm93IHNw
YWNlcy4KICAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDk0MWNmMDlh
YTY5YTFjMzY0ZTkyNjgxZTQyN2QwZTQyZWUwYzdmYTMuLjFlODI1NTAxNWU0MTE5Yjc4YWQ5MDFl
ZDBmYmNkMDZlZTIyYWJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgRGlz
dHJpYnV0ZWRTcGFjZXMgPSBWZWN0b3I8TGF5b3V0VW5pdD47CiAgICAgICAgIERpc3RyaWJ1dGVk
U3BhY2VzIGRpc3RyaWJ1dGVkSG9yaXpvbnRhbFNwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlSG9y
aXpvbnRhbFNwYWNlKTsKLSAgICAgICAgRGlzdHJpYnV0ZWRTcGFjZXMgZGlzdHJpYnV0ZWRWZXJ0
aWNhbFNwYWNlKE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpOwor
ICAgICAgICBEaXN0cmlidXRlZFNwYWNlcyBkaXN0cmlidXRlZFZlcnRpY2FsU3BhY2Uoc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQpAQCAtNzUsMTMgKzc1
LDEzIEBAIHByaXZhdGU6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQg
dGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBUYWJsZUxheW91dCgqdGhpcywgZm9ybWF0dGlu
Z1N0YXRlKCkudGFibGVHcmlkKCkpOyB9CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhv
cml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFj
ZUZvckNvbnRlbnQgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbGF5b3V0Q2VsbChjb25zdCBU
YWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRV
bml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlG
b3JSb3dzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKTsKICAgICB2b2lkIHNl
dFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYpOwogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZFByZWZlcnJlZFdp
ZHRoRm9yQ29sdW1ucygpOwotICAgIHZvaWQgY29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNwYWNl
KExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBPcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKKyAgICB2b2lkIGNvbXB1dGVBbmREaXN0cmlidXRl
RXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKIAogICAgIFRhYmxlRm9y
bWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBkb3duY2FzdDxUYWJsZUZv
cm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4
IGMyZGQxNmRkYTg3ZmNkZTBiYjk3NGE4YTBkYWYxMTM3MTZlYjQ0ODEuLjJhODUwM2JlMmU2ODhl
MGQwZDI5ZDY5ZjNlNTEyMTVjZWM1MjEwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgRWRnZXMgVGFibGVG
b3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ2VsbEJvcmRlcihjb25zdCBUYWJsZUdyaWQ6OkNl
bGwmIGNlbGwpIGMKICAgICByZXR1cm4gYm9yZGVyOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250
YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gVGFi
bGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29udGFpbmVy
Qm94JiBjb2x1bW5Cb3gpIGNvbnN0CiB7CiAgICAgLy8gQ2hlY2sgYm90aCBzdHlsZSBhbmQgPGNv
bD4ncyB3aWR0aCBhdHRyaWJ1dGUuCiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBk
byB3aXRoIGNhbGN1bGF0ZWQgdmFsdWVzLCBsaWtlIDxjb2wgc3R5bGU9IndpZHRoOiAxMCUiPi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaAppbmRleCBmMTEx
NjM0ZjA4NTQ2ZTA1YWIwZTAwYTZiZWQzNTRkZGJlNzE0ZjA1Li5iMGI0NTc4MGYyMzQwZWZlNDdj
MjY3YTJkNjM4ODA1ZjBkMzRjOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdHZW9tZXRyeS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVu
aXQgY2VsbEJveENvbnRlbnRIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAgICAg
RWRnZXMgY29tcHV0ZWRDZWxsQm9yZGVyKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYpIGNvbnN0Owot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29udGFp
bmVyQm94JiBjb2x1bW5Cb3gpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3Q7
CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
Rm9yQ2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRV
bml0IHVzZWRCYXNlbGluZUZvckNlbGwoY29uc3QgQ29udGFpbmVyQm94JiBjZWxsQm94KSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4
IGFjOWUyOGM4ZDdjNWExZTAxM2MxNzk4N2ExNWY2MzdmOTNiMjg3OGEuLmUxMjFiODgzMzgzYmRk
ZTIyMmM5YTNjY2E4ZmY1YzcxMDQ5NDQyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTGF5b3V0VW5pdCBUYWJsZUZv
cm1hdHRpbmdRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZp
eGVkSGUKICAgICAvLyBjb250ZXh0LiBJZiB3ZSBjYW4ndCByZXNvbHZlIGl0IHdpdGhpbiB0aGUg
dGFibGUgc3VidHJlZSwgd2UgZGVmYXVsdCBpdCB0byAwLgogICAgIC8vIGUuZyA8ZGl2IHN0eWxl
PSJoZWlnaHQ6IDEwMHB4Ij48dGFibGU+PHRyPjx0ZCBzdHlsZT0iaGVpZ2h0OiAxMDAlIj48L3Rk
PjwvdHI+PC90YWJsZT48L2Rpdj4gaXMgcmVzb2x2ZWQgdG8gMHB4LgogICAgIGF1dG8mIHRhYmxl
Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7Ci0gICAgYXV0byBmaXhlZExvZ2ljYWxI
ZWlnaHQgPSBbJl0oY29uc3QgYXV0byYgYW5jZXN0b3JCb3gpIC0+IE9wdGlvbmFsPExheW91dFVu
aXQ+IHsKKyAgICBhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IFsmXShjb25zdCBhdXRvJiBhbmNl
c3RvckJveCkgLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7CiAgICAgICAgIGF1dG8gaGVp
Z2h0ID0gYW5jZXN0b3JCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIGlmICgh
aGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUdy
aWQuaAppbmRleCBhZmU4NDE3YzlhZTE5NTc5YThlM2I2MGI3MWNiM2MwM2YzZGMwOWM2Li42ZDUz
YjQ1OGYxNWQ1YjMzMDg3ZWQ2ZjA3YjJlZDZkN2U4YTJmNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVHcmlk
LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFNw
YWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU3BhY2luZzsgfQogCiAgICAgdm9pZCBz
ZXRDb2xsYXBzZWRCb3JkZXIoY29uc3QgRWRnZXMmIGNvbGxhcHNlZEJvcmRlcikgeyBtX2NvbGxh
cHNlZEJvcmRlciA9IGNvbGxhcHNlZEJvcmRlcjsgfQotICAgIE9wdGlvbmFsPEVkZ2VzPiBjb2xs
YXBzZWRCb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZEJvcmRlcjsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbGxhcHNlZEJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
bGFwc2VkQm9yZGVyOyB9CiAKICAgICB2b2lkIHNldFdpZHRoQ29uc3RyYWludHMoSW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1faW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0KLSAgICBPcHRp
b25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiB3aWR0aENvbnN0cmFpbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CisgICAgc3RkOjpvcHRpb25h
bDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiB3aWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3Nsb3RNYXAuaXNFbXB0eSgpOyB9CiAgICAgLy8gQ29sdW1uIHJl
cHJlc2VudHMgYSB2ZXJ0aWNhbCBzZXQgb2Ygc2xvdHMgaW4gdGhlIGdyaWQuIEEgY29sdW1uIGhh
cyBob3Jpem9udGFsIHBvc2l0aW9uIGFuZCB3aWR0aC4KQEAgLTIzMSw4ICsyMzEsOCBAQCBwcml2
YXRlOgogCiAgICAgTGF5b3V0VW5pdCBtX2hvcml6b250YWxTcGFjaW5nOwogICAgIExheW91dFVu
aXQgbV92ZXJ0aWNhbFNwYWNpbmc7Ci0gICAgT3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJh
aW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwotICAgIE9wdGlvbmFsPEVkZ2VzPiBt
X2NvbGxhcHNlZEJvcmRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHM+IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPEVk
Z2VzPiBtX2NvbGxhcHNlZEJvcmRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5j
cHAKaW5kZXggMjQ1MTk3ZGQ5YjJlNDMyMjliODU3ZjU5MDc1NTU4ZTliYWZiNmU0Yi4uNTVkNTNh
MTM2Nzc3Y2Y4ZWEzNDZmMDc4NzhiNzcwZTAyMDZmNDljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxh
eW91dC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgVmVjdG9yPExheW91dFVuaXQ+IGRp
c3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBUYWJsZUdyaWQmIGdyaWQsIExheW91dAogICAg
IGF1dG8mIGNvbHVtbnMgPSBncmlkLmNvbHVtbnMoKTsKICAgICBhdXRvJiByb3dzID0gZ3JpZC5y
b3dzKCk7CiAgICAgLy8gMS4gQ29sbGVjdCB0aGUgbm9uLXNwYW5uaW5nIHNwYWNlcyBmaXJzdC4g
VGhleSBhcmUgdXNlZCBmb3IgdGhlIGZpbmFsIGRpc3RyaWJ1dGlvbiBhcyB3ZWxsIGFzIGZvciBk
aXN0cmlidXRpbmcgdGhlIHNwYW5uaW5nIHNwYWNlLgotICAgIFZlY3RvcjxPcHRpb25hbDxSZXNv
bHZlZEl0ZW0+PiByZXNvbHZlZEl0ZW1zKFNwYW5UeXBlOjpzaXplKGdyaWQpKTsKKyAgICBWZWN0
b3I8c3RkOjpvcHRpb25hbDxSZXNvbHZlZEl0ZW0+PiByZXNvbHZlZEl0ZW1zKFNwYW5UeXBlOjpz
aXplKGdyaWQpKTsKICAgICBmb3IgKHNpemVfdCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4
IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5kZXgpIHsKICAgICAgICAgZm9yIChzaXplX3Qg
cm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3Muc2l6ZSgpOyArK3Jvd0luZGV4KSB7CiAgICAg
ICAgICAgICBhdXRvJiBzbG90ID0gKmdyaWQuc2xvdCh7IGNvbHVtbkluZGV4LCByb3dJbmRleCB9
KTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91
dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAogICAgIH0pOwog
fQogCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFj
ZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OmRpc3RyaWJ1dGVkVmVydGlj
YWxTcGFjZShPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKQorVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpkaXN0cmlidXRlZFZlcnRpY2FsU3BhY2Uo
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKQogewogICAg
IGF1dG8mIHJvd3MgPSBtX2dyaWQucm93cygpOwogICAgIGF1dG8mIGNvbHVtbnMgPSBtX2dyaWQu
Y29sdW1ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IGUzMDQ4YjZiNGNk
NWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMuLjNkMzU2NTExYjUzYmNiMTllNzIyYjA2M2E1
YjFhOGNkM2NhNDBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTQ2Myw3
ICs0NjMsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZv
ckNoYXJhY3RlcihMQ2hhciBjaGFyYWN0ZXIsIGJvb2wgdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5V
c2VGb3JUZXh0KGNvbnN0IENoYXJhY3RlclR5cGUqIHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBPcHRpb25hbDxmbG9hdD4gbGluZUhlaWdodENv
bnN0cmFpbnQsCitzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yVGV4
dChjb25zdCBDaGFyYWN0ZXJUeXBlKiB0ZXh0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250Q2FzY2FkZSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbGluZUhlaWdodENvbnN0
cmFpbnQsCiAgICAgYm9vbCB0ZXh0SXNKdXN0aWZpZWQsIEluY2x1ZGVSZWFzb25zIGluY2x1ZGVS
ZWFzb25zKQogewogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJlYXNvbnM7CkBAIC00
OTYsNyArNDk2LDcgQEAgc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZv
clRleHQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdGV4dCwgdW5zaWcKICAgICByZXR1cm4gcmVhc29u
czsKIH0KIAotc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvclRleHQo
U3RyaW5nVmlldyB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIE9wdGlvbmFs
PGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludCwgYm9vbCB0ZXh0SXNKdXN0aWZpZWQsIEluY2x1
ZGVSZWFzb25zIGluY2x1ZGVSZWFzb25zKQorc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFz
b24+IGNhblVzZUZvclRleHQoU3RyaW5nVmlldyB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dENhc2NhZGUsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGxpbmVIZWlnaHRDb25zdHJhaW50LCBib29s
IHRleHRJc0p1c3RpZmllZCwgSW5jbHVkZVJlYXNvbnMgaW5jbHVkZVJlYXNvbnMpCiB7CiAgICAg
aWYgKHRleHQuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBjYW5Vc2VGb3JUZXh0KHRleHQuY2hh
cmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSwgZm9udENhc2NhZGUsIGxpbmVIZWlnaHRDb25zdHJh
aW50LCB0ZXh0SXNKdXN0aWZpZWQsIGluY2x1ZGVSZWFzb25zKTsKQEAgLTUxMSw3ICs1MTEsNyBA
QCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yRm9udEFuZFRleHQo
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAgIGF1dG8mIGZvbnRDYXNjYWRlID0gc3R5bGUu
Zm9udENhc2NhZGUoKTsKICAgICBpZiAoZm9udENhc2NhZGUucHJpbWFyeUZvbnQoKS5pc0ludGVy
c3RpdGlhbCgpKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dJ
c01pc3NpbmdQcmltYXJ5Rm9udCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIE9wdGlv
bmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKICAgICBpZiAoc3R5bGUubGluZUJveENvbnRhaW4oKS5j
b250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhzKSkKICAgICAgICAgbGluZUhlaWdodENvbnN0
cmFpbnQgPSBjb250YWluZXIubGluZUhlaWdodChmYWxzZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0
aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykudG9GbG9hdCgpOwogICAgIGJvb2wgZmxvd0lzSnVzdGlm
aWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNjgyMGIwZmFhYTY5ZDQ1NGQ5OTJiZDlk
MGZiYjA3YWExYzJlNTQ3Zi4uZDUzYjVkY2IxMzllZGI5MDQwOTdmYmNjY2MzYmRhZTFmODZmNWRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTM2NSw3ICszNjUsNyBA
QCBUZXh0UnVuSXRlcmF0b3IgTGluZUxheW91dDo6dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4
dCYgcmVuZGVyVGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7CiAKLSAg
ICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBPcHRpb25hbDxzaXplX3Q+IHsKKyAgICBhdXRv
IGZpcnN0SW5kZXggPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0ubGF5b3V0Qm94KCkg
PT0gJmxheW91dEJveCkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuaAppbmRleCAyYmI2YTJhNzI2M2M4NjU4MjVmMDMwYjliNWRkODRiOWQ3ODg5
ZTg1Li4wOTFhNjAxNGI3MTliNTNlYzQ3ZjA1MmFhM2FiYTg2ZjhmYTA2ZmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBM
YXlvdXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlOwogICAgIFJlZlB0cjxJbmxpbmVD
b250ZW50PiBtX2lubGluZUNvbnRlbnQ7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9wYWdp
bmF0ZWRIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX3BhZ2luYXRlZEhl
aWdodDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKaW5kZXggM2RmZWVjYjIxYmNmY2M2NDliY2E3
N2MyZTFhYjFmMWMzOWJkNTY4YS4uMTg5MDg4N2ViMmMwMjUwZDM4OWI2Njc5NWRjMmY3N2JhMzEy
ZjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTYxLDEzICs2MSwxMyBAQCBzdHJ1Y3QgUnVuIHsK
ICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFuc2lvbjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRl
eCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
IGlua092ZXJmbG93LCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHRDb250ZW50PiA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBz
dGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBjb25zdCBG
bG9hdFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCi0g
ICAgT3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENv
bnRlbnQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxUZXh0Q29udGVudD4mIHRleHRDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENv
bnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiYgdGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBtX3RleHRDb250ZW50OyB9CiAgICAgLy8gRklYTUU6IFRoaXMgaW5mb3JtYXRpb24gc2hvdWxk
IGJlIHByZXNlcnZlZCBhdCBSdW4gY29uc3RydWN0aW9uIHRpbWUuCiAgICAgYm9vbCBpc0xpbmVC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgfHwgKHRl
eHRDb250ZW50KCkgJiYgdGV4dENvbnRlbnQoKS0+b3JpZ2luYWxDb250ZW50KCkgPT0gIlxuIiAm
JiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKTsgfQogCkBAIC05NCwxMCArOTQsMTAgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIEZsb2F0UmVjdCBtX2lua092ZXJmbG93
OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBPcHRpb25hbDxUZXh0Q29udGVudD4g
bV90ZXh0Q29udGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiBtX3RleHRDb250
ZW50OwogfTsKIAotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91
dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+
IHRleHRDb250ZW50KQoraW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExh
eW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0
Q29udGVudD4gdGV4dENvbnRlbnQpCiAgICAgOiBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAg
LCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQogICAgICwgbV9yZWN0KHJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRl
eCBiYTIyYWYyNDM0ZDhhNTI2ZmU3OWRhODM1NGNjODMwMzExZTJmMmYxLi5mZTBhYTExMTljYzdl
MjUyYjViYjRmNjU0OGJhN2U4YzcxMjdjYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIExh
eW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChCb3gpOwogCi1Cb3g6OkJveChP
cHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKK0JveDo6Qm94KHN0ZDo6
b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+IGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBtX3N0eWxl
KFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9lbGVtZW50QXR0cmlidXRlcyhhdHRyaWJ1dGVzKQog
ICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MudG9SYXcoKSkKQEAgLTUxNCw3ICs1
MTQsNyBAQCB2b2lkIEJveDo6c2V0Q29sdW1uV2lkdGgoTGF5b3V0VW5pdCBjb2x1bW5XaWR0aCkK
ICAgICBlbnN1cmVSYXJlRGF0YSgpLmNvbHVtbldpZHRoID0gY29sdW1uV2lkdGg7CiB9CiAKLU9w
dGlvbmFsPExheW91dFVuaXQ+IEJveDo6Y29sdW1uV2lkdGgoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBCb3g6OmNvbHVtbldpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IDM0MWMwOWY0MzlkMmFmYTA2MDNmZGY5MjkzYjU5
NTNkZTg4NzE5N2YuLmY5ZDZiZjUxMTgyZTYzNzQxMGQ3ODY0OGY4ZjU2ZTY3ZTA2NzFhMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0xNzAs
NyArMTcwLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBjb2x1bW5TcGFuKCkgY29uc3Q7CiAKICAg
ICB2b2lkIHNldENvbHVtbldpZHRoKExheW91dFVuaXQpOwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbHVtbldpZHRoKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBj
b2x1bW5XaWR0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRQYXJlbnQoQ29udGFpbmVyQm94JiBw
YXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CiAgICAgdm9pZCBzZXROZXh0U2libGluZyhC
b3gmIG5leHRTaWJsaW5nKSB7IG1fbmV4dFNpYmxpbmcgPSAmbmV4dFNpYmxpbmc7IH0KQEAgLTE4
Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZWRHZW9tZXRyeUZvckxheW91
dFN0YXRlKExheW91dFN0YXRlJiwgc3RkOjp1bmlxdWVfcHRyPEJveEdlb21ldHJ5PikgY29uc3Q7
CiAKIHByb3RlY3RlZDoKLSAgICBCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5k
ZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPik7CisgICAgQm94KHN0ZDo6b3B0aW9u
YWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVG
bGFnPik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgQm94UmFyZURhdGEgewpAQCAtMTkyLDcgKzE5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJveFJhcmVEYXRhKCkgPSBkZWZhdWx0OwogCiAgICAg
ICAgIENlbGxTcGFuIHRhYmxlQ2VsbFNwYW47Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGNvbHVtbldpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbHVtbldp
ZHRoOwogICAgIH07CiAKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNSYXJlRGF0YTsgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJh
cmVEYXRhTWFwJiByYXJlRGF0YU1hcCgpOwogCiAgICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsKLSAg
ICBPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gbV9lbGVtZW50QXR0cmlidXRlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBtX2VsZW1lbnRBdHRyaWJ1dGVzOwogCiAg
ICAgQ29udGFpbmVyQm94KiBtX3BhcmVudCB7IG51bGxwdHIgfTsKICAgICBCb3gqIG1fcHJldmlv
dXNTaWJsaW5nIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5LmgKaW5kZXggNmQwZmI4MThjY2Q2ZjAxMTA1MGQx
YTA2YjYxOWI1OWU5MzFlZDBlMS4uNzQyNGY2Y2JhYzRmOTBmYjdiYmFiNDM5NTliNzc1MjJlYWFl
MzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94R2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCb3hHZW9tZXRyeS5oCkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIExheW91dFVu
aXQgdmVydGljYWxCb3JkZXIoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJv
dHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jpem9udGFsQm9yZGVyKCkgY29uc3QgeyByZXR1
cm4gYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gcGFkZGluZ1RvcCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRp
bmdMZWZ0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ0JvdHRvbSgp
IGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRpbmdSaWdodCgpIGNvbnN0Owot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHZlcnRpY2FsUGFkZGluZygpIGNvbnN0OwotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5nVG9wKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBwYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gcGFkZGluZ0JvdHRvbSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gcGFkZGluZ1JpZ2h0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiB2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hU
b3AoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVf
b3IoMCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hMZWZ0KCkgY29uc3QgeyByZXR1cm4g
cGFkZGluZ0JveExlZnQoKSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7IH0KQEAgLTEyOCw3
ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CiAK
ICAgICB2b2lkIHNldFZlcnRpY2FsUGFkZGluZyhMYXlvdXQ6OlZlcnRpY2FsRWRnZXMpOwotICAg
IHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPik7CisgICAgdm9pZCBzZXRQ
YWRkaW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4pOwogCiAgICAgdm9pZCBzZXRWZXJ0
aWNhbFNwYWNlRm9yU2Nyb2xsYmFyKExheW91dFVuaXQgc2Nyb2xsYmFySGVpZ2h0KSB7IG1fdmVy
dGljYWxTcGFjZUZvclNjcm9sbGJhciA9IHNjcm9sbGJhckhlaWdodDsgfQogICAgIHZvaWQgc2V0
SG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKExheW91dFVuaXQgc2Nyb2xsYmFyV2lkdGgpIHsg
bV9ob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIgPSBzY3JvbGxiYXJXaWR0aDsgfQpAQCAtMTY0
LDcgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdp
bjsKIAogICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0OjpF
ZGdlcz4gbV9wYWRkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gbV9wYWRk
aW5nOwogCiAgICAgTGF5b3V0VW5pdCBtX3ZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXI7CiAgICAg
TGF5b3V0VW5pdCBtX2hvcml6b250YWxTcGFjZUZvclNjcm9sbGJhcjsKQEAgLTI4Nyw3ICsyODcs
NyBAQCBpbmxpbmUgdm9pZCBCb3hHZW9tZXRyeTo6c2V0Qm9yZGVyKExheW91dDo6RWRnZXMgYm9y
ZGVyKQogICAgIG1fYm9yZGVyID0gYm9yZGVyOwogfQogCi1pbmxpbmUgdm9pZCBCb3hHZW9tZXRy
eTo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQoraW5saW5lIHZv
aWQgQm94R2VvbWV0cnk6OnNldFBhZGRpbmcoc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBw
YWRkaW5nKQogewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRQYWRkaW5nKCk7
CkBAIC0zMzksNyArMzM5LDcgQEAgaW5saW5lIExheW91dFVuaXQgQm94R2VvbWV0cnk6Om1hcmdp
bkVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiB9CiAKLWlu
bGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ1RvcCgpIGNvbnN0
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ1Rv
cCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKICAgICBpZiAoIW1f
cGFkZGluZykKQEAgLTM0Nyw3ICszNDcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Qm94R2VvbWV0cnk6OnBhZGRpbmdUb3AoKSBjb25zdAogICAgIHJldHVybiBtX3BhZGRpbmctPnZl
cnRpY2FsLnRvcDsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5
OjpwYWRkaW5nTGVmdCgpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBC
b3hHZW9tZXRyeTo6cGFkZGluZ0xlZnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlk
UGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcpCkBAIC0zNTUsNyArMzU1LDcgQEAgaW5saW5l
IE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGFkZGluZy0+aG9yaXpvbnRhbC5sZWZ0OwogfQogCi1pbmxpbmUgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBhZGRpbmdCb3R0b20oKSBjb25zdAoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBhZGRpbmdCb3R0b20oKSBj
b25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRp
bmcpCkBAIC0zNjMsNyArMzYzLDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdl
b21ldHJ5OjpwYWRkaW5nQm90dG9tKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWRkaW5nLT52ZXJ0
aWNhbC5ib3R0b207CiB9CiAKLWlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRy
eTo6cGFkZGluZ1JpZ2h0KCkgY29uc3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IEJveEdlb21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1Zh
bGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcpCkBAIC0zNzEsNyArMzcxLDcgQEAgaW5s
aW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBjb25z
dAogICAgIHJldHVybiBtX3BhZGRpbmctPmhvcml6b250YWwucmlnaHQ7CiB9CiAKLWlubGluZSBP
cHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6dmVydGljYWxQYWRkaW5nKCkgY29uc3QK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojp2ZXJ0aWNhbFBh
ZGRpbmcoKSBjb25zdAogewogICAgIGF1dG8gcGFkZGluZ1RvcCA9IHRoaXMtPnBhZGRpbmdUb3Ao
KTsKICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB0aGlzLT5wYWRkaW5nQm90dG9tKCk7CkBAIC0z
ODAsNyArMzgwLDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojp2
ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdAogICAgIHJldHVybiBwYWRkaW5nVG9wLnZhbHVlX29yKDAp
ICsgcGFkZGluZ0JvdHRvbS52YWx1ZV9vcigwKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExheW91
dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0CitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6aG9yaXpvbnRhbFBhZGRpbmcoKSBj
b25zdAogewogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB0aGlzLT5wYWRkaW5nTGVmdCgpOwogICAg
IGF1dG8gcGFkZGluZ1JpZ2h0ID0gdGhpcy0+cGFkZGluZ1JpZ2h0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcApp
bmRleCAxZGIyZjM4NTJlZmEzYjc2YWMxMTZlNjdmOTM5NjZhMThjMjY3NDE0Li45YzNlNzEzZjIw
OTk2MWFhZmQ3ZWQyY2UxMzc1NzMzMDJkNWFiNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChDb250YWluZXJCb3gpOwogCi1Db250YWluZXJCb3g6OkNvbnRhaW5lckJveChPcHRpb25hbDxF
bGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgT3B0aW9u
U2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFncykKK0NvbnRhaW5lckJveDo6Q29udGFpbmVy
Qm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0
eWxlJiYgc3R5bGUsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+IGJhc2VUeXBlRmxhZ3MpCiAgICAg
OiBCb3goYXR0cmlidXRlcywgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBDb250YWlu
ZXJCb3hGbGFnKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRDb250YWluZXJCb3guaAppbmRleCA2MTFkOWM0YmQzNTFhMTE2YzhmYmQ4YWY2
OTg1NGVjNWNkN2U4NzZiLi5lMGFmYTRhOGI3NWY5ZjQ1OGJjNjUyMTJlZGQyMGZhM2M5MmJjNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250
YWluZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRD
b250YWluZXJCb3guaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNz
IENvbnRhaW5lckJveCA6IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Q29udGFpbmVyQm94KTsKIHB1YmxpYzoKLSAgICBDb250YWluZXJCb3goT3B0aW9uYWw8RWxlbWVu
dEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPiA9IHsg
Q29udGFpbmVyQm94RmxhZyB9KTsKKyAgICBDb250YWluZXJCb3goc3RkOjpvcHRpb25hbDxFbGVt
ZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+ID0g
eyBDb250YWluZXJCb3hGbGFnIH0pOwogCiAgICAgY29uc3QgQm94KiBmaXJzdENoaWxkKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAgY29uc3QgQm94KiBmaXJzdEluRmxvd0No
aWxkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRHZW9tZXRyeVJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEdlb21ldHJ5UmVjdC5oCmluZGV4IDUyMWY2MTI3M2M1NzFjM2NjNDkyMWM2MDJlY2Nj
NzlhODNjMTg5ZmQuLjM3ODRjZjkzZjgxZmMxYzM4NGQ3MThiYmViNzYxOTkwOWY2MjE5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5
UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21l
dHJ5UmVjdC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0aWNh
bGx5KExheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUJ5KExheW91dFBvaW50KTsKIAotICAgIHZv
aWQgZXhwYW5kKE9wdGlvbmFsPExheW91dFVuaXQ+LCBPcHRpb25hbDxMYXlvdXRVbml0Pik7Cisg
ICAgdm9pZCBleHBhbmQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Piwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0Pik7CiAgICAgdm9pZCBleHBhbmRIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBkZWx0
YSkgeyBleHBhbmQoZGVsdGEsIHsgfSk7IH0KICAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoTGF5
b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoeyB9LCBkZWx0YSk7IH0KICAgICB2b2lkIGV4cGFuZFRv
Q29udGFpbihjb25zdCBSZWN0Jik7CkBAIC0yODYsNyArMjg2LDcgQEAgaW5saW5lIHZvaWQgUmVj
dDo6bW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkKICAgICBtX3JlY3QubW92ZUJ5KG9mZnNldCk7
CiB9CiAKLWlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZChPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0
aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQoraW5saW5lIHZvaWQgUmVjdDo6ZXhwYW5k
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gaGVpZ2h0KQogewogICAgIEFTU0VSVCghd2lkdGggfHwgbV9oYXNWYWxpZFdpZHRoKTsKICAg
ICBBU1NFUlQoIWhlaWdodCB8fCBtX2hhc1ZhbGlkSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmNwcAppbmRleCA2
Yjg5NjQwNzNmZmVhZDkxYTgwNWQ4ZjU4NDc2Zjc0OTk2NWQwN2Q3Li42NDM4NGI5YTk4M2EyN2Mz
MTBkNmJmNzMwMTkxZWYyNzFkYzZlZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0UmVwbGFjZWRCb3guY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVwbGFj
ZWRCb3gpOwogCi1SZXBsYWNlZEJveDo6UmVwbGFjZWRCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJp
YnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVwbGFjZWRC
b3g6OlJlcGxhY2VkQm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW1lbnRB
dHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogQm94KGVsZW1lbnRBdHRyaWJ1
dGVzLCBXVEZNb3ZlKHN0eWxlKSwgQm94OjpSZXBsYWNlZEJveEZsYWcpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0UmVwbGFjZWRCb3guaApp
bmRleCA1NmJmY2FlNjAwZTFiNDdkNDU0YzVlMWIzNjMwMjcyZjIwZWRkMWQ5Li44ZTFmZDM5NGE4
NWQxY2EwNzI3MTEzZmQxYmFkNjRhZjAwNTk4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJlcGxhY2VkQm94LmgKQEAgLTQwLDcgKzQwLDcg
QEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBSZXBsYWNlZEJveCA6IHB1YmxpYyBCb3ggewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVwbGFjZWRCb3gpOwogcHVibGljOgotICAgIFJl
cGxhY2VkQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7Cisg
ICAgUmVwbGFjZWRCb3goc3RkOjpvcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlcGxhY2VkQm94KCkgPSBkZWZhdWx0OwogCiAgICAgdm9p
ZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpIHsgbV9jYWNoZWRJbWFn
ZSA9ICZjYWNoZWRJbWFnZTsgfQpAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRVbml0IGludHJpbnNpY1JhdGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEJhc2VsaW5lKExh
eW91dFVuaXQgYmFzZWxpbmUpIHsgbV9iYXNlbGluZSA9IGJhc2VsaW5lOyB9Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZWxpbmU7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGhhc0FzcGVjdFJhdGlvKCkgY29uc3Q7
CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2ludHJpbnNpY1NpemU7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gbV9pbnRyaW5zaWNSYXRpbzsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBtX2Jhc2VsaW5lOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9pbnRyaW5zaWNT
aXplOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9pbnRyaW5zaWNSYXRpbzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYmFzZWxpbmU7CiAgICAgQ2FjaGVkSW1hZ2Uq
IG1fY2FjaGVkSW1hZ2UgeyBudWxscHRyIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggOTQ1NjRk
MGJlMmQyZjRlYjllY2FhMmNlNThlZDk4ODExZjJlNzA4NC4uNTllNmQ4MThmOGU5MzgwM2U1ZTI5
OGY0OWQ0ZDAyYWU5NTA1MjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0
aWMgdm9pZCBhcHBlbmRDaGlsZChDb250YWluZXJCb3gmIHBhcmVudCwgQm94JiBuZXdDaGlsZCkK
ICAgICBwYXJlbnQuc2V0TGFzdENoaWxkKG5ld0NoaWxkKTsKIH0KIAotc3RhdGljIE9wdGlvbmFs
PExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVh
dGlvbihjb25zdCBSZW5kZXJCb3gmIGJsb2NrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
U2l6ZT4gYWNjdW11bGF0ZWRPZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkQ29udGludWF0aW9uKGNv
bnN0IFJlbmRlckJveCYgYmxvY2spCiB7CiAgICAgLy8gRklYRTogVGhpcyBpcyBhIHdvcmthcm91
bmQgb2YgdGhlIGNvbnRpbnVhdGlvbiBsb2dpYyB3aGVuIHRoZSByZWxhdGl2ZWx5IHBvc2l0aW9u
ZWQgcGFyZW50IGlubGluZSBib3gKICAgICAvLyBiZWNvbWVzIGEgc2libGluZyBib3ggb2YgdGhp
cyBibG9jayBhbmQgb25seSByZWFjaGFibGUgdGhyb3VnaCB0aGUgY29udGludWF0aW9uIGxpbmsg
d2hpY2ggd2UgZG9uJ3QgaGF2ZSBoZXJlLgpAQCAtMTMzLDcgKzEzMyw3IEBAIFRyZWVCdWlsZGVy
OjpUcmVlQnVpbGRlcihMYXlvdXRUcmVlJiBsYXlvdXRUcmVlKQogewogfQogCi1Cb3gmIFRyZWVC
dWlsZGVyOjpjcmVhdGVSZXBsYWNlZEJveChPcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVz
PiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKK0JveCYgVHJlZUJ1aWxk
ZXI6OmNyZWF0ZVJlcGxhY2VkQm94KHN0ZDo6b3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRl
cz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7CiAgICAgYXV0byBu
ZXdCb3ggPSBtYWtlVW5pcXVlPFJlcGxhY2VkQm94PihlbGVtZW50QXR0cmlidXRlcywgV1RGTW92
ZShzdHlsZSkpOwogICAgIGF1dG8mIGJveCA9ICpuZXdCb3g7CkBAIC0xNTcsNyArMTU3LDcgQEAg
Qm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGluZUJyZWFrQm94KGJvb2wgaXNPcHRpb25hbCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICByZXR1cm4gYm94OwogfQogCi1Db250YWluZXJCb3gmIFRy
ZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIoT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRl
cz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitDb250YWluZXJCb3gm
IFRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIoc3RkOjpvcHRpb25hbDxCb3g6OkVsZW1lbnRB
dHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAg
ICBhdXRvIG5ld0NvbnRhaW5lciA9IG1ha2VVbmlxdWU8Q29udGFpbmVyQm94PihlbGVtZW50QXR0
cmlidXRlcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGF1dG8mIGNvbnRhaW5lciA9ICpuZXdDb250
YWluZXI7CkBAIC0xNjcsNyArMTY3LDcgQEAgQ29udGFpbmVyQm94JiBUcmVlQnVpbGRlcjo6Y3Jl
YXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW0KIAogQm94
KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lckJveCYgcGFyZW50
Q29udGFpbmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpCiB7Ci0gICAgYXV0
byBlbGVtZW50QXR0cmlidXRlcyA9IFtdIChjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikg
LT4gT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4geworICAgIGF1dG8gZWxlbWVudEF0
dHJpYnV0ZXMgPSBbXSAoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIC0+IHN0ZDo6b3B0
aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4gewogICAgICAgICBpZiAocmVuZGVyZXIuaXNE
b2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVu
dEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpEb2N1bWVudCB9OwogICAgICAgICBpZiAo
YXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKaW5kZXggMmJjNmZm
N2M1Yjk3ZTI4NWMzZWM0N2NmM2VhYWUxMTY3YmU3MTc3ZC4uNTI1Y2U2M2JiZGUxMzJlYWM0Y2Y2
OGNjZmQ4NThmM2YyNjZjNmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCkBAIC02OCwxMCArNjgsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxl
UmVuZGVyZXIsIENvbnRhaW5lckJveCYgdGFibGVXcmFwcGVyQm94KTsKICAgICBCb3gqIGNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVu
ZGVyT2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKIAotICAgIEJveCYgY3JlYXRlUmVwbGFjZWRCb3go
T3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOworICAgIEJv
eCYgY3JlYXRlUmVwbGFjZWRCb3goc3RkOjpvcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVz
PiwgUmVuZGVyU3R5bGUmJik7CiAgICAgQm94JiBjcmVhdGVUZXh0Qm94KFN0cmluZyB0ZXh0LCBi
b29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nLCBSZW5kZXJTdHlsZSYmKTsKICAgICBC
b3gmIGNyZWF0ZUxpbmVCcmVha0JveChib29sIGlzT3B0aW9uYWwsIFJlbmRlclN0eWxlJiYpOwot
ICAgIENvbnRhaW5lckJveCYgY3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0
dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKKyAgICBDb250YWluZXJCb3gmIGNyZWF0ZUNvbnRh
aW5lcihzdGQ6Om9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYm
KTsKIAogICAgIExheW91dFRyZWUmIG1fbGF5b3V0VHJlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5jcHAKaW5kZXggMzMxZDMw
NTdmODI1MmI2YWU2MjYwM2M3OGQ0MjQ3NWFmZGEwMGU3NS4uNmQ3ZGMzZjdkOWY3YmQ2OTgwYzM5
ZTQyYzQ3ZThjZDE3YzNjM2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
cHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIH0KIH0KIAotT3B0aW9u
YWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6OnByb2Nl
c3NNYW5pZmVzdCgpCitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFuaWZlc3QoKQogewogICAgIGlmICghbV9wcm9j
ZXNzZWRNYW5pZmVzdCAmJiBtX3Jlc291cmNlKSB7CiAgICAgICAgIGF1dG8gbWFuaWZlc3RVUkwg
PSBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci5oCmluZGV4IGJhYjU0ZTAwNzQyYTllYWMyZGY1OTgwNGI2NzVjYWM4MjdkYWM2ZDMu
LmQ1Zjc0NmFhYjE1ZGJjMjEyNDhjZTI0ODE2YzllZWY0OTNlMDZjZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaApAQCAtNDksMTMg
KzQ5LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0TG9hZGluZygpOwogICAgIHZvaWQgc3Rv
cExvYWRpbmcoKTsKIAotICAgIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9jZXNz
TWFuaWZlc3QoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9j
ZXNzTWFuaWZlc3QoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExv
YWRlciYgbV9kb2N1bWVudExvYWRlcjsKLSAgICBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0
PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5p
ZmVzdD4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKICAgICBVUkwgbV91cmw7CiAgICAgYm9vbCBtX3Vz
ZUNyZWRlbnRpYWxzOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q+IG1fcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCmluZGV4
IDU3OTFmMDA0ODNiZmVmMWRmNmJiM2E3MzFhYTViNTczNDQ2Y2E5ZjUuLjFiMmZiYjc4ZTZhNWE3
YzRlNmExZjU4NGY3NTI3ODY5YTJjYzZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
Y3BwCkBAIC03OCw4ICs3OCw4IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKTsKIAot
ICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBp
ZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBm
cmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkucGFnZUlEKCk7CkBAIC0xMDEsOCArMTAxLDggQEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MK
IHsKICAgICBUcmFjZVNjb3BlIHNjb3BlKEZldGNoQ29va2llc1N0YXJ0LCBGZXRjaENvb2tpZXNF
bmQpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1l
LT5sb2FkZXIoKS5wYWdlSUQoKTsKQEAgLTExMyw4ICsxMTMsOCBAQCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNv
bnN0IERvYwogCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxv
YWRlcigpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLnBhZ2VJ
RCgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChj
b25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1
cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKQEAgLTE0OCw4ICsxNDgsOCBAQCBzdGQ6
OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdQogCiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAg
ICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQg
PSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9h
ZGVyKCkucGFnZUlEKCk7CkBAIC0xNjMsOCArMTYzLDggQEAgU3RyaW5nIENvb2tpZUphcjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwm
IHUKIAogYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7Ci0g
ICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZy
YW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIo
KS5wYWdlSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwN2I0ZWRlOWZiNzg0
ZmZlMWI4MDMwOTI5MjE3ZTEwNDE1ZTdmZjgyLi45ODI2OTFkZDJkZmUyZjY1MjAxMzcwYTEyMzAy
YjUwODY3MDNjMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAgIHZpcnR1YWwgYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAgIHZpcnR1YWwgc3RkOjpw
YWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jikg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBEb2N1bWVudCYsIGNv
bnN0IENvb2tpZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBlNTgy
YTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRmMDU1MDkwNGE2Li5mYTAyNGYxNjE4MTEwNWZiNTNl
ZTJmYmVjZThhNTRmNmY3YTRhZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMzA0LDE0ICszMDQsMTQgQEAgc3RhdGlj
IGlubGluZSBib29sIHNob3VsZENyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKGNv
bnN0IFNlY3VyaXR5T3JpZ2kKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPFJlc291
cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeShjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBpZiAoc2hvdWxkQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUNhbmNlbExvYWQob3JpZ2lu
LCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdFVSTCwgbWFrZVN0cmluZygiQ2FuY2VsbGVkIGxvYWQg
dG8gIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIg
YmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgcmVzb3VyY2UncyBDcm9zcy1PcmlnaW4tUmVzb3VyY2Ut
UG9saWN5IHJlc3BvbnNlIGhlYWRlci4iKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29u
dHJvbCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNl
RXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGQ6Om9wdGlvbmFs
PFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgaWYgKHJlc3BvbnNlLmlzUmFuZ2VSZXF1ZXN0ZWQoKSAmJiByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDIwNiAmJiByZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlw
ZTo6T3BhcXVlICYmICFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
UmFuZ2UpKQogICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcih7IH0sIDAsIHJlc3BvbnNlLnVy
bCgpLCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGEzYmY5OTM2NzI0
NzJmODUzYzNhODg1ZmFiM2Y3NTNlOTA3YmM5NTYuLjA1NzQ4M2YyOWZkY2E3NjVlNmI0MDk4Yjkz
YWQwNzYyYTVkZDdiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmgKQEAgLTgwLDggKzgwLDggQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQ
T1JUIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mLCBjb25zdCBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyKik7
CiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxpZ2h0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IENy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXIqKTsKIAotV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVSYW5nZVJlcXVlc3RlZEZsYWco
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNyb3NzT3JpZ2lu
UmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CitzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRl
UmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKIFN0cmluZyB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29u
c3QgVVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRl
eCA5MjdiNGExMDNlZDFlNGI1MDNkZGRjZmFkNWE4MWY0NTE5NDU2ZjBlLi44YTIyNjI4NzhjMDZk
MTI4OTVlNTdjMjMwZmJmYTY4NjJiNmZkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIEV4cGVjdGVkPFVuaXF1ZVJlZjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlSXRlbT4sIFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWVS
ZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KE1vbm90b25pY1RpbWU6Om5v
dygpICsgZXhwaXJ5RGVsdGEsIHBvbGljeSwgV1RGTW92ZSgqbWV0aG9kcyksIFdURk1vdmUoKmhl
YWRlcnMpKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkZXJzKGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVN
ZXRob2RBbmRIZWFkZXJzKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVycykgY29uc3QKIHsKICAgICBpZiAoIWFsbG93c0Nyb3NzT3JpZ2luTWV0
aG9kKG1ldGhvZCwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSkpCiAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCJNZXRob2QgIiwgbWV0aG9kLCAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1D
b250cm9sLUFsbG93LU1ldGhvZHMuIik7CkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gbV9tZXRob2RzLmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1fbWV0
aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdE1l
dGhvZEFsbG93bGlzdChtZXRob2QpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25z
dCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycywgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFk
ZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzLCBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3QKIHsKICAgICBib29sIHZhbGlk
V2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMoIioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogICAgIGZvciAoY29uc3QgYXV0
byYgaGVhZGVyIDogcmVxdWVzdEhlYWRlcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IDU2NGNlN2Fh
MzAxMWRiMDY5NWYyNmJjZTE1N2IxYjg3OTI1ZjRjYzQuLmVkZWRlOWUyYzZmODM4N2U5M2FhMDBm
YzNiNGJlNDdkMjlkZmVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1
YmxpYzoKIAogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKE1vbm90b25p
Y1RpbWUsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBIYXNoU2V0PFN0cmluZz4mJiwgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mJik7CiAKLSAgICBPcHRpb25hbDxT
dHJpbmc+IHZhbGlkYXRlTWV0aG9kQW5kSGVhZGVycyhjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgSFRUUEhlYWRlck1hcCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxp
ZGF0ZU1ldGhvZEFuZEhlYWRlcnMoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmKSBjb25zdDsKICAgICBib29sIGFsbG93c1JlcXVlc3QoU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd3NDcm9zc09yaWdpbk1ldGhvZChjb25zdCBTdHJp
bmcmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U3RyaW5n
PiB2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiwgU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxp
ZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiwgU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHRv
IGhvbGRpbmcgb250byB0aGUgYWJzb2x1dGUgZXhwaXJhdGlvbiB0aW1lIG1pZ2h0IGJlCiAgICAg
Ly8gdG8gc3RhcnQgYSB0aW1lciBmb3IgdGhlIGV4cGlyYXRpb24gZGVsdGEgdGhhdCByZW1vdmVz
IHRoaXMgZnJvbSB0aGUgY2FjaGUgd2hlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhl
YWRlckZpZWxkcy5oCmluZGV4IDdmMTQxY2Y4MTFkMTVhOTc4MThlNjIyYjhlZWMyZWQ1YzFiYzIy
YTEuLjMyYTE2ODEwZTBkMjFlYjFhZGIxNDE2M2U2NjZlM2U3NjZmMzljODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdXN0b21IZWFkZXJGaWVsZHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmllbGRzLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3Ry
dWN0IFdFQkNPUkVfRVhQT1JUIEN1c3RvbUhlYWRlckZpZWxkcyB7CiAgICAgYm9vbCB0aGlyZFBh
cnR5RG9tYWluc01hdGNoKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDdXN0b21IZWFkZXJGaWVsZHM+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Q3VzdG9tSGVhZGVyRmllbGRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KQEAgLTQ5LDE0ICs0OSwxNCBAQCB2b2lkIEN1c3RvbUhlYWRlckZpZWxkczo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxDdXN0b21IZWFkZXJGaWVsZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEN1c3RvbUhlYWRlckZpZWxkcz4g
Q3VzdG9tSGVhZGVyRmllbGRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxWZWN0b3I8SFRUUEhlYWRlckZpZWxkPj4gZmllbGRzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxkczsKICAgICBkZWNvZGVyID4+IGZpZWxkczsK
ICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CiAgICAgZGVjb2RlciA+
PiB0aGlyZFBhcnR5RG9tYWluczsKICAgICBpZiAoIXRoaXJkUGFydHlEb21haW5zKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggOThjZjk1ZGNkZmU0YWQ2ZGU1MzMwYmMxN2I3ZDVlMjhlNjBlNDIwOC4uYWFm
ZDg2ZjY1OGZkNWI3MTNhY2E0OGNkZGQ3YTYyNWRjYThlOTVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6bWF0Y2hSZWdpc3RyYXRpb24oY29uc3QgVVJMJiB1cmwsIFNXQ2xpZW50Q29ubmVj
dGlvbjo6UmVnaXMKICAgICBjb25uZWN0aW9uLm1hdGNoUmVnaXN0cmF0aW9uKFdURk1vdmUob3Jp
Z2luKSwgdXJsLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBh
cmVSZWdpc3RyYXRpb25zRXF1YWwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGE+JiBhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mIGIpCitzdGF0aWMgaW5saW5lIGJvb2wgYXJlUmVnaXN0cmF0aW9uc0VxdWFsKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiBhLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYgYikKIHsKICAgICBpZiAo
IWEpCiAgICAgICAgIHJldHVybiAhYjsKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlCiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5yZW1vdmUoJmxv
YWRlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBPcHRpb25hbDxB
cHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0KQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSWRlbnRpZmllcik7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDdi
MmEwZWM1ODVhMTllYmRlOTZlZWE3Nzc1MzMwODE3NTM1Zjc0NTUuLjM3MzU2ZjQ2NjVjM2Y2ZjMy
ZTFkNTcyOTRiYjRhZTRkYWQ2NDhmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCkBAIC00MzksNyArNDM5LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIG1hdGNo
UmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIG1hdGNoUmVn
aXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik+JiYpOwogI2VuZGlmCiAgICAgdm9p
ZCB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgpOwogCkBAIC01MDcsNyAr
NTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+KTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
TG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+KTsKICNlbmRpZgogCiAgICAgLy8gQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CkBAIC02NTAsOCArNjUwLDggQEAgcHJpdmF0ZToKICAg
ICBNb3VzZUV2ZW50UG9saWN5IG1fbW91c2VFdmVudFBvbGljeSB7IE1vdXNlRXZlbnRQb2xpY3k6
OkRlZmF1bHQgfTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YTsKLSAgICBPcHRpb25hbDxEb2N1bWVudElkZW50aWZpZXI+IG1fdGVtcG9yYXJ5U2Vydmlj
ZVdvcmtlckNsaWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOworICAgIHN0ZDo6b3B0aW9u
YWw8RG9jdW1lbnRJZGVudGlmaWVyPiBtX3RlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQ7CiAj
ZW5kaWYKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGI5Mzk2NWRjMTBhN2IxNGE3MzQw
NjZmYjk1MmU4ZWFhNzM0ODZmNDIuLmY4ZDIwZjBjYmZiNjNjNDFhOWM5ZGE3ODVhMTY2ZDAyNGUy
YzU0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gK
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogCiAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwotICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmlj
cz4gZW1wdHk7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGVtcHR5Owog
ICAgIGlmICghdGltaW5nKSB7CiAgICAgICAgIGVtcHR5LmVtcGxhY2UoKTsKICAgICAgICAgdGlt
aW5nID0gJmVtcHR5LnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNDU2ZjQxN2JhMzA3NDAyN2FhN2IzMjc3NDU4MTE0
NDBiYTcyZjU2My4uYmY0MTYyN2UxZDc3ODg4YWQwN2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApA
QCAtMTM0LDEyICsxMzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
YXN5bmM7CiAgICAgICAgIGJvb2wgbV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrOwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9uYWw8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+
IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVja2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOwogCiAgICAgICAgIFNob3VsZExvZ0Vy
cm9yIG1fc2hvdWxkTG9nRXJyb3I7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAg
ICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1fYnlwYXNzaW5nUHJlZmxpZ2h0Rm9yU2Vydmlj
ZVdvcmtlclJlcXVlc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiBt
X2J5cGFzc2luZ1ByZWZsaWdodEZvclNlcnZpY2VXb3JrZXJSZXF1ZXN0OwogI2VuZGlmCiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDMxNjA1ZTY4MmRiNGRj
ZDYxNmYxYjhmMDVjZWU2Y2Q3NGRiOTBkZjguLjZjNzA4OWUxODFkMGE4NzJjNDk2YmZmZTFmNTEy
NDdjYWYyMjMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEwNCw3
ICsxMDQsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQg
ewogCiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55
QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfTsKICAgICBPcHRpb25TZXQ8UG9pbnRlckNoYXJhY3Rlcmlz
dGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2Vz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVSb290
Vmlldyhjb25zdCBJbnRSZWN0JikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRp
b25zLmgKaW5kZXggZTM1Y2E4M2E1MDQ1Y2Y2MTBjOTNiMzc4NWNkMzRhYjAyZTIyZjQ5NS4uYzdm
MzEzODQyZTE0ZDNkY2ZjODNlMDYyZDk4NTU3NGRkNWZlMGQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GZXRjaE9wdGlvbnMuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZVBlcnNpc3RlbnQoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVQZXJzaXN0ZW50KERlY29kZXImLCBGZXRjaE9wdGlvbnMmKTsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZldGNoT3B0aW9u
cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB9OwogICAgIE1v
ZGUgbW9kZSB7IE1vZGU6Ok5vQ29ycyB9OwpAQCAtMTg5LDQyICsxODksNDIgQEAgaW5saW5lIHZv
aWQgRmV0Y2hPcHRpb25zOjplbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogaW5saW5lIGJvb2wgRmV0Y2hPcHRpb25zOjpkZWNv
ZGVQZXJzaXN0ZW50KERlY29kZXImIGRlY29kZXIsIEZldGNoT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uPiBkZXN0aW5hdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24+IGRlc3RpbmF0aW9uOwog
ICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpNb2RlPiBtb2Rl
OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpNb2RlPiBtb2RlOwogICAgIGRlY29k
ZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IE9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM+IGNyZWRlbnRpYWxzOworICAgIHN0
ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscz4gY3JlZGVudGlhbHM7CiAgICAg
ZGVjb2RlciA+PiBjcmVkZW50aWFsczsKICAgICBpZiAoIWNyZWRlbnRpYWxzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6OkNhY2hlPiBjYWNoZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q2FjaGU+IGNhY2hlOwogICAgIGRlY29k
ZXIgPj4gY2FjaGU7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4gcmVkaXJlY3Q7CisgICAgc3RkOjpv
cHRpb25hbDxGZXRjaE9wdGlvbnM6OlJlZGlyZWN0PiByZWRpcmVjdDsKICAgICBkZWNvZGVyID4+
IHJlZGlyZWN0OwogICAgIGlmICghcmVkaXJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsKICAgICBkZWNvZGVyID4+IHJl
ZmVycmVyUG9saWN5OwogICAgIGlmICghcmVmZXJyZXJQb2xpY3kpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaW50ZWdyaXR5OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBpbnRlZ3JpdHk7CiAgICAgZGVjb2RlciA+PiBpbnRlZ3JpdHk7CiAgICAgaWYg
KCFpbnRlZ3JpdHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGtlZXBBbGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGtlZXBBbGl2ZTsKICAgICBkZWNv
ZGVyID4+IGtlZXBBbGl2ZTsKICAgICBpZiAoIWtlZXBBbGl2ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjQ5LDEzICsyNDksMTMgQEAgaW5saW5lIHZvaWQgRmV0Y2hPcHRpb25zOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LWlubGluZSBPcHRpb25hbDxGZXRjaE9wdGlvbnM+IEZldGNoT3B0aW9uczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IEZldGNoT3B0
aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRmV0Y2hPcHRpb25zIG9wdGlv
bnM7CiAgICAgaWYgKCFkZWNvZGVQZXJzaXN0ZW50KGRlY29kZXIsIG9wdGlvbnMpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8RG9jdW1lbnRJ
ZGVudGlmaWVyPj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IGNsaWVudElkZW50aWZpZXI7CiAgICAgaWYgKCFjbGllbnRJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggMTNmYTY5M2FkNGE0ZGU4OGYwYmM4YzE2MjI3ZTliYzZiN2NhZTI1ZS4uZjI5ZjlhMDJj
MWZmZDBlNzQzZGQxYWE0ZGVkYWNjNGMwNjBjMDkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogICAgIG1fcHJvZ3Jlc3NUcmFja2Vy
ID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKLU9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBGcmFtZUxvYWRlcjo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1lTG9hZGVyOjpwYWdlSUQoKSBjb25zdAogewogICAg
IHJldHVybiBjbGllbnQoKS5wYWdlSUQoKTsKIH0KIAotT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBGcmFtZUxvYWRlcjo6ZnJhbWVJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gRnJhbWVMb2FkZXI6OmZyYW1lSUQoKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnQo
KS5mcmFtZUlEKCk7CiB9CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hl
Y2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lD
aGUKICAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3BvbnNl
LCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIFdURk1vdmUoZnVuY3Rpb24pKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBjb25zdCBS
ZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQ
b2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBzeXN0ZW1QcmV2aWV3SW5mbywgT3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIEZy
YW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIGNvbnN0IFJlZmVycmVyUG9saWN5
JiByZWZlcnJlclBvbGljeSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBv
cGVuZXJQb2xpY3ksIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBT
eXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVtUHJldmlld0luZm8sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7CiAgICAgYXV0
byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKICAgICBhdXRvIGluaXRpYXRl
ZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBJbml0aWF0ZWRC
eU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd247CkBAIC00Mzcs
NyArNDM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmUKICAgICBjaGFuZ2VMb2NhdGlvbihX
VEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB0cmlnZ2VyaW5nRXZlbnQsIFdURk1vdmUocHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRp
b24oRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lUmVxdWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVu
dCwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0
JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBzdGQ6Om9wdGlvbmFsPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KQogewogICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hh
bmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgIEFTU0VSVChmcmFtZVJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKQEAgLTEyMTYsNyAr
MTIxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAgICAgZGV0YWNo
Q2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFt
ZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYm
IGZvcm1TdGF0ZSwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1l
TG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYg
Zm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KQogewogICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogZnJhbWUgbG9hZCBzdGFy
dGVkIik7CiAKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmlzU3RvcExv
YWRpbmdBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWlu
Z0Rpc3BhdGNoZWQgPT0gUGFnZURpc21pc3NhbFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVu
dCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZy
YW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3Rh
dGU+JiYgZm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYm
IHByaXZhdGVDbGlja01lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChSZXNvdXJjZUxvYWRpbmcsICJsb2FkVVJMOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKICAgICBB
U1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0g
IkdFVCIpOwpAQCAtMjMzMCw3ICsyMzMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNo
ZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5z
ZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2
aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+ZnJh
bWVSZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0PihzdGQ6Om51bGxvcHQpOworICAgIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAg
bV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDogc3RkOjpvcHRpb25hbDxJbnRSZWN0PihzdGQ6
Om51bGxvcHQpOwogICAgIG1fZnJhbWUuc2V0Vmlldyh2aWV3KTsKIAogICAgIC8vIFVzZSB0aGUg
cHJldmlvdXMgU2Nyb2xsVmlldydzIGZyYW1lIHJlY3QuCkBAIC0zOTg5LDcgKzM5ODksNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
I2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRp
b25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGluaXRpYWxIYXNJbnNlY3VyZUNvbnRlbnQsIE9wdGlv
bmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2VkTGVnYWN5VExTKQordm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50
PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50LCBzdGQ6Om9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+
IGluaXRpYWxVc2VkTGVnYWN5VExTKQogewogICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggMjdkMGQ1MzliY2IxMDFiMTY3ZTgzNzI5NjQzM2Q1Yjg0YzBk
NDdiZS4uYTk0MmI0NWU0M2I1MGU5YjRkMjIzNzRkNGMzODFhOTM1ZmI3NmM4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1
bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCos
IFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYm
ID0gc3RkOjpudWxsb3B0KTsgLy8gQ2FsbGVkIGJ5IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQb3N0
UmVxdWVzdCBhbmQgbG9hZFVSTC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOyAv
LyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJM
LgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAK
QEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGRhdGEpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9s
aWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUg
PSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFsPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIGNoYW5n
ZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgT3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9w
dCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25z
dCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJh
bWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0o
UmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2Fk
KE9wdGlvblNldDxSZWxvYWRPcHRpb24+ID0geyB9KTsKQEAgLTIxNiw4ICsyMTYsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50LmdldCgpOyB9CiAgICAgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgpIHsgcmV0
dXJuIG1fY2xpZW50LmdldCgpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoRG9j
dW1lbnRMb2FkZXImKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFs
PEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCwgT3B0aW9uYWw8
VXNlZExlZ2FjeVRMUz4gaW5pdGlhbFVzZWRMZWdhY3lUTFMpOworICAgIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFz
SW5zZWN1cmVDb250ZW50LCBzdGQ6Om9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2Vk
TGVnYWN5VExTKTsKIAogICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExv
YWRlciosIEZyYW1lTG9hZFR5cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8g
Q2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBsb2FkKERv
Y3VtZW50TG9hZGVyJik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKQEAgLTM4Miw3
ICszODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25BY3Rpb24mJiwgRnJhbWVMb2FkVHlwZSwg
UmVmUHRyPEZvcm1TdGF0ZT4mJiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50
TG9hZGVyCiAKICAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGxvYWRVUkwo
RnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBl
LCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbG9hZFVS
TChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5
cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGJv
b2wgc2hvdWxkUmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5h
dGlvblVSTCk7CiAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAgICBPcHRpb25h
bDxSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4gbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVz
dGluZzsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gbV9vdmVycmlkZVJlc291
cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOworICAgIHN0
ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQ
cmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0
aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKIAogICAgIExvYWRDb250aW51
aW5nU3RhdGUgbV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0ZSB7IExvYWRDb250aW51aW5nU3Rh
dGU6Ok5vdENvbnRpbnVpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMzRlNTE1YWUzMmU2Yjk1MjY5NjdjOTZmNzdkYjY3ZWE5MzRjMmYxMi4uMzFk
MzNhMzM5ZDBmNzBjZWU1NjliZWJmZWQ1MmYzNjk0Nzg2NWVkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAw
OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgY2xpZW50IGZvcmNlZCB0aGUgbGF5b3V0LgpAQCAtMTczLDcg
KzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiwgT3B0aW9uYWw8VXNlZExlZ2Fj
eVRMUz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6
b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Piwgc3RkOjpvcHRpb25hbDxVc2VkTGVnYWN5VExT
PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYsIFdpbGxDb250aW51ZUxvYWRpbmcpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsKQEAg
LTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVdpbmRv
dyhET01XaW5kb3cmKSB7IH0KIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRf
dCwgY29uc3QgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpIHsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclR5cGVzLmgKaW5kZXggOWJjMjUzMTRhOTNjYTExOWQ1YWIwYWUwNmI0ZDg0OTYyYzI3
NGU1My4uODQ5NzFjYjJmMzU4YWM5ZWY0MzRmMzM2NGM0N2I0YzRlZWI3MjRiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q2hlY2tJZGVudGlmaWVyJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09IG90aGVyLm1fcHJvY2VzcyAmJiBtX3BvbGlj
eUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAg
ICBQb2xpY3lDaGVja0lkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2VzcywgdWludDY0
X3QgcG9saWN5Q2hlY2spCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBQb2xpY3lDaGVja0lkZW50
aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBQb2xpY3lDaGVja0lk
ZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQb2xpY3lD
aGVja0lkZW50aWZpZXI+IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgYXV0byBwcm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShk
ZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3MpCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RydWN0IFN5
c3RlbVByZXZpZXdJbmZvIHsKICAgICBib29sIGlzUHJldmlldyB7IGZhbHNlIH07CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTIwMywxOSArMjAzLDE5IEBAIHZvaWQgU3lzdGVt
UHJldmlld0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+IFN5c3RlbVByZXZp
ZXdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IFN5c3RlbVByZXZpZXdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4gZWxlbWVudDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRDb250ZXh0PiBlbGVtZW50OwogICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHByZXZp
ZXdSZWN0OwogICAgIGRlY29kZXIgPj4gcHJldmlld1JlY3Q7CiAgICAgaWYgKCFwcmV2aWV3UmVj
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlz
UHJldmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUHJldmlldzsKICAgICBkZWNvZGVy
ID4+IGlzUHJldmlldzsKICAgICBpZiAoIWlzUHJldmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmll
bGQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKaW5kZXgg
YjIzMGJmZjQ4ZmI1NTRjNGQyNjYxNDdjYTJlZGU4MWQyMmI2ZTkzNS4uYTRkMTAxYmRkMWNkYTkw
ZDJkYjVlNjQzMThiMjk0YTFjMWI3Y2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBI
ZWFkZXJGaWVsZC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFs
dWUoU3RyaW5nVmlldyB2YWx1ZSkKIAogfSAvLyBuYW1lc3BhY2UgUkZDNzIzMAogCi1PcHRpb25h
bDxIVFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKFN0cmluZyYmIHVucGFy
c2VkTmFtZSwgU3RyaW5nJiYgdW5wYXJzZWRWYWx1ZSkKK3N0ZDo6b3B0aW9uYWw8SFRUUEhlYWRl
ckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShTdHJpbmcmJiB1bnBhcnNlZE5hbWUsIFN0
cmluZyYmIHVucGFyc2VkVmFsdWUpCiB7CiAgICAgU3RyaW5nVmlldyBzdHJpcHBlZE5hbWUgPSBT
dHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hh
cmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIFN0cmluZ1ZpZXcgc3RyaXBwZWRW
YWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1ZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdN
YXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hUVFBIZWFkZXJGaWVsZC5oCmluZGV4IDBmNzYwZmJjOGMxOGFkYjQxN2FjODNkMGU5OTMw
MGZiMGQ4YTU2NzguLmM1ZmJjMWI0MzY3MzVhODAxMDZmMDY4YWQ0MGMxMDYyMzI3ZTA3NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgKQEAgLTMxLDEzICszMSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJG
aWVsZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gY3Jl
YXRlKFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHZhbHVlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxIVFRQSGVhZGVyRmllbGQ+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB2YWx1
ZSk7CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxIVFRQSGVhZGVyRmll
bGQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlckZpZWxkPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgogICAgIEhUVFBIZWFkZXJGaWVsZChTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB2YWx1ZSkK
QEAgLTU2LDE0ICs1NiwxNCBAQCB2b2lkIEhUVFBIZWFkZXJGaWVsZDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxI
VFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVsZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gSFRUUEhlYWRlckZpZWxkOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICgh
bmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gdmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgIGRlY29kZXIg
Pj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcAppbmRleCA0OGRmZWFjZDk1YWQwOGRmNTgw
OGEwMzkwNDZlMTg2YmY0MzllNDI4Li5mMTNmYjczMGUzZjlmODgzYjI0ZmZlM2U0Y2I0YmNiNjk4
YjZlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFkZXIuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyBib29sIGlzRXh0ZW5zaW9uUGFyYW1ldGVyKExpbmtIZWFkZXI6OkxpbmtQYXJh
bWV0ZXJOYW1lIG5hbWUpCiAvLyA8Y2F0LmpwZz47IHJlbD1wcmVsb2FkCiAvLyAgICAgICAgICBe
ICAgICAgICAgICAgXgogLy8gICAgICAgICAgcG9zaXRpb24gICAgIGVuZAotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZmluZFVSTEJvdW5k
YXJpZXMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBm
aW5kVVJMQm91bmRhcmllcyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIpCiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVyKTsKICAgICBpZiAoIXNr
aXBFeGFjdGx5KGJ1ZmZlciwgJzwnKSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgTGlua0hl
YWRlcjo6TGlua1BhcmFtZXRlck5hbWUgcGFyYW10ZXJOYW1lRnJvbVN0cmluZyhTdHJpbmdWaWV3
IG5hbWUpCiAvLyA8Y2F0LmpwZz47IHJlbD1wcmVsb2FkCiAvLyAgICAgICAgICAgICAgICBeICAg
ICAgXgogLy8gICAgICAgICAgICBwb3NpdGlvbiAgZW5kCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlua0hlYWRlcjo6TGlua1BhcmFtZXRlck5hbWU+
IHBhcnNlUGFyYW1ldGVyTmFtZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBi
dWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVyTmFtZT4gcGFyc2VQYXJhbWV0ZXJOYW1lKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBhdXRvIG5h
bWVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIHNraXBXaGlsZTxpc1ZhbGlkUGFyYW1l
dGVyTmFtZUNoYXI+KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5k
ZXggY2M4OGFlODE4NzgyOWY3MDFhNmNkNjE2MTc5NjhiYzgyYjNhNDRmMy4uZmRkYjA3YmVlNWYw
MzYyMzk4ZThlYzE0MWI2Yjk2ZjliNzM0NWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTGlua0xvYWRlcjo6bG9hZExpbmtzRnJv
bUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBjb25zdCBVUkwmIGJhc2VVCiAgICAg
fQogfQogCi1PcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3Vy
Y2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMsIERvY3VtZW50JiBkb2N1bWVu
dCkKK3N0ZDo6b3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IExpbmtMb2FkZXI6OnJlc291
cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFzLCAiZmV0Y2gi
KSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpUeXBlOjpSYXdSZXNvdXJjZTsKQEAg
LTI4Myw3ICsyODMsNyBAQCB2b2lkIExpbmtMb2FkZXI6OnByZWZldGNoSWZOZWVkZWQoY29uc3Qg
TGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERvY3VtZW50JiBkbwogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGluZ3MoKS5saW5rUHJlZmV0Y2hFbmFibGVkKCkp
OwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICBDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlID0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRjaDsKIAog
ICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKaW5kZXggNGVkYjQyODBjZjVlYjIzMjNiMWI0MjFlYjA5Y2M5YmEwNzVjZmQ3ZC4uYjVmMDc2
NDNiM2JmYjVmOWI2MmJkYTBlY2E2YmI2ZjUwOTU3ZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MaW5rTG9h
ZGVyKCk7CiAKICAgICB2b2lkIGxvYWRMaW5rKGNvbnN0IExpbmtMb2FkUGFyYW1ldGVycyYsIERv
Y3VtZW50Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiByZXNv
dXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlRnJv
bUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYsIERvY3VtZW50Jik7CiAKICAgICBlbnVtIGNsYXNz
IE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0dHJpYnV0ZUVtcHR5LCBNZWRpYUF0dHJpYnV0
ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVDaGVjayB9OwogICAgIHN0YXRpYyB2b2lkIGxv
YWRMaW5rc0Zyb21IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBEb2N1bWVudCYsIE1lZGlhQXR0cmlidXRlQ2hlY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4IDUxNjk2NzFmNTk3ZDQzZjZl
NDY1MmFkM2IzMDRkNTkyNjk0M2I5MWMuLjIxOTBkOTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjExYWJi
NTE1Yzk0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tl
ci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNr
Rm9ybUZvck1peGVkQ29udGVudChGcmFtZSYgZnJhbWUsIFNlY3VyaXR5T3JpZ2luJgogICAgIGZy
YW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKIH0KIAot
T3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvck1peGVkQ29udGVu
dEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JNaXhlZENvbnRlbnRJ
bkZyYW1lVHJlZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGF1
dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmgKaW5kZXggMTYwOWUwZjhmNDdhMTc2NWFlNjk1YWNhN2U3
ZmUyMzRmNWM2Y2YyNi4uZWU1ZGVlOWRiZGRlNzlmNzZlYTA0YWJhNmQ4NGM0MmYwOWY0NmJkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQo
RnJhbWUmLCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIGNo
ZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJM
Jik7CiAgICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBVUkwmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBjaGVja0Zvck1peGVkQ29udGVu
dEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBjaGVja0Zvck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZy
YW1lJiwgY29uc3QgVVJMJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggYTZiZjZhZmU1YjVhNzU3
Y2E2ODViZWQzZTU2ZWVjM2I5MDk4NjAyZC4uZmRmOTQxOTFkYTRkNTk1OGJmZTkyMDU0MjIzMDFj
OTU2NjhiY2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25B
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cApAQCAtODQsMTQgKzg0LDE0IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNTYW1lT3JpZ2lu
TmF2aWdhdGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSCiAgICAgcmV0dXJu
IHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwucHJvdG9jb2xJc0RhdGEoKSB8fCAodXJsLnBy
b3RvY29sSXNCbG9iKCkgJiYgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVy
bCkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZvckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUoRXZlbnQq
IGV2ZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdp
dGhLZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZvckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUoRXZl
bnQqIGV2ZW50KQogewogICAgIGlmIChVSUV2ZW50V2l0aEtleVN0YXRlKiB1aUV2ZW50ID0gZmlu
ZEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSkKICAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25BY3Rp
b246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsgKnVpRXZlbnQgfTsKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VF
dmVudERhdGE+IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50KEV2ZW50KiBldmVudCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhPiBt
b3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVudChFdmVudCogZXZlbnQpCiB7CiAgICAgZm9y
IChFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpIHsKICAgICAg
ICAgaWYgKGUtPmlzTW91c2VFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmgKaW5kZXggZGMyMDAxOTAwZjU1ZDYyODk4Yzg3NDkzNWQ1ZGE3ZmQ4MjlmNTQwOS4u
MGM1M2M4YjdkZjJhNGQzYmIyZmNiMjIyZTMyZmMzYzUzZWY5NzA0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKICAgICAgICAgR2xvYmFsRnJh
bWVJZGVudGlmaWVyIG1fZ2xvYmFsRnJhbWVJZGVudGlmaWVyOwogICAgIH07Ci0gICAgY29uc3Qg
T3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Rlcj4mIHJlcXVlc3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyOyB9CiAKICAgICBzdHJ1Y3QgVUlFdmVudFdpdGhLZXlT
dGF0ZURhdGEgewogICAgICAgICBVSUV2ZW50V2l0aEtleVN0YXRlRGF0YShjb25zdCBVSUV2ZW50
V2l0aEtleVN0YXRlJik7CkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlOwogICAgICAgICBib29sIGJ1dHRvbkRvd247CiAg
ICAgfTsKLSAgICBjb25zdCBPcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0
YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQotICAg
IGNvbnN0IE9wdGlvbmFsPE1vdXNlRXZlbnREYXRhPiYgbW91c2VFdmVudERhdGEoKSBjb25zdCB7
IHJldHVybiBtX21vdXNlRXZlbnREYXRhOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVSUV2
ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TW91c2VFdmVu
dERhdGE+JiBtb3VzZUV2ZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VFdmVudERhdGE7
IH0KIAogICAgIE5hdmlnYXRpb25BY3Rpb24gY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIGNvbnN0OwogCkBAIC0xMjYsMTAg
KzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVuZWRCeURPTVdpdGhPcGVuZXIoKSB7
IG1fb3BlbmVkQnlET01XaXRoT3BlbmVyID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRUYXJnZXRC
YWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0mKTsKLSAgICBjb25zdCBPcHRpb25hbDxCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyPiYgdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4mIHRhcmdldEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgc2V0U291cmNlQmFja0ZvcndhcmRJdGVtKEhp
c3RvcnlJdGVtKik7Ci0gICAgY29uc3QgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cj4mIHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOyB9
CiAKICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hp
c3Rvcnk7IH0KICAgICB2b2lkIHNldExvY2tIaXN0b3J5KExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5
KSB7IG1fbG9ja0hpc3RvcnkgPSBsb2NrSGlzdG9yeTsgfQpAQCAtMTM3LDI5ICsxMzcsMjkgQEAg
cHVibGljOgogICAgIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQogICAgIHZvaWQgc2V0TG9ja0Jh
Y2tGb3J3YXJkTGlzdChMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpIHsg
bV9sb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQogCi0gICAgY29u
c3QgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH07CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsg
fTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9IHByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9OwogCiBwcml2YXRlOgogICAgIC8vIERv
IG5vdCBhZGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hdGluZyBkb2N1bWVudCBv
ciBhIHN1Ym9iamVjdCB0aGF0IGhvbGRzIHRoZQogICAgIC8vIG9yaWdpbmF0aW5nIGRvY3VtZW50
LiBTZWUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3MgZm9yIG1vcmUgZGV0YWlscy4KLSAgICBPcHRp
b25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVy
PiBtX3JlcXVlc3RlcjsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7CiAg
ICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIEluaXRpYXRlZEJ5TWFpbkZy
YW1lIG1faW5pdGlhdGVkQnlNYWluRnJhbWU7Ci0gICAgT3B0aW9uYWw8VUlFdmVudFdpdGhLZXlT
dGF0ZURhdGE+IG1fa2V5U3RhdGVFdmVudERhdGE7Ci0gICAgT3B0aW9uYWw8TW91c2VFdmVudERh
dGE+IG1fbW91c2VFdmVudERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0
YXRlRGF0YT4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlRXZl
bnREYXRhPiBtX21vdXNlRXZlbnREYXRhOwogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBt
X3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0
dXJlKCkgfTsKICAgICBBdG9tU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgYm9vbCBt
X3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsKICAgICBib29sIG1faGFzT3BlbmVkRnJhbWVz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fb3BlbmVkQnlET01XaXRoT3BlbmVyIHsgZmFsc2UgfTsK
LSAgICBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBtX3RhcmdldEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cj4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV90YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV9zb3Vy
Y2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rv
cnkgeyBMb2NrSGlzdG9yeTo6Tm8gfTsKICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IG1fbG9ja0Jh
Y2tGb3J3YXJkTGlzdCB7IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07Ci0gICAgT3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggODVjZmRkNjQ5ZmQyMTk5
OTIxYTNmZTExMTFmZGRkMzY4ZTJlZmU0Yy4uNmUwNjI2NGUzMTQ3YjY4MzE3ZjgyMTYzYmY2NjJm
ZDAwZTExMTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmgKQEAgLTE4MywxOSArMTgzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgV2FzU2Vu
dCB3YXNTZW50ID0gV2FzU2VudDo6Tm87CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9Owog
CiAgICAgc3RydWN0IEF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgewotICAgICAgICBP
cHRpb25hbDxTZWNvbmRzPiBzb3VyY2VTZWNvbmRzOwotICAgICAgICBPcHRpb25hbDxTZWNvbmRz
PiBkZXN0aW5hdGlvblNlY29uZHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc291
cmNlU2Vjb25kczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkZXN0aW5hdGlvblNl
Y29uZHM7CiAKICAgICAgICAgYm9vbCBoYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gc291cmNlU2Vjb25kcyAmJiBkZXN0aW5hdGlv
blNlY29uZHM7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNv
bmRzVW50aWxTZW5kKCkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRz
VW50aWxTZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzICYm
ICFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTIxMywxNCArMjEzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRzOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRzOwogICAgICAgICAgICAgZGVj
b2RlciA+PiBzb3VyY2VTZWNvbmRzOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5hdGlvblNlY29uZHM7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4+IGRlc3RpbmF0aW9uU2Vjb25kczsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25TZWNvbmRzOwogICAgICAgICAgICAg
aWYgKCFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTIzMCwxMCArMjMwLDEwIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0
IEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgewotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4g
c291cmNlRWFybGllc3RUaW1lVG9TZW5kOwotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAKLSAgICAgICAgT3B0aW9uYWw8
V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
c291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjQ0LDcgKzI0NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
PyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgOiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZDsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBsYXRlc3RUaW1lVG9T
ZW5kKCkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbGF0ZXN0VGltZVRvU2VuZCgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYm
ICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
OiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIE9w
dGlvbmFsPEF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQoKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+IGF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc291
cmNlRWFybGllc3RUaW1lVG9TZW5kICYmIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCpzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPCAqZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCkBAIC0yODAsMTQgKzI4MCwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8QXR0cmlidXRpb25UaW1lVG9TZW5kRGF0YT4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVGltZVRvU2Vu
ZERhdGE+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBP
cHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXYWxsVGltZT4+IHNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc291cmNlRWFybGllc3RU
aW1lVG9TZW5kOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXYWxsVGltZT4+IGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25FYXJsaWVz
dFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMy
MSw3ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgQXR0cmlidXRpb25UaW1lVG9TZW5kRGF0YSB0aW1l
c1RvU2VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXNUb1NlbmQ7IH07CiAgICAgdm9pZCBzZXRU
aW1lc1RvU2VuZChBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIGRhdGEpIHsgbV90aW1lc1RvU2Vu
ZCA9IGRhdGE7IH0KICAgICBjb25zdCBTb3VyY2VJRCYgc291cmNlSUQoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUlEOyB9Ci0gICAgT3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSgpIHsgcmV0dXJuIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpIHsgcmV0dXJuIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsgfQogICAgIHZv
aWQgc2V0QXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpIHsgbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VEZXNjcmlwdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRGVzY3JpcHRpb247IH0KQEAgLTMzOSwxMSArMzM5LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7
CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
RXBoZW1lcmFsU291cmNlTm9uY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNl
PiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYpOwotICAgIE9wdGlv
bmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBlcGhlbWVyYWxTb3VyY2VOb25jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXBoZW1lcmFsU291cmNlTm9uY2U7IH07CisgICAgc3RkOjpvcHRpb25hbDxFcGhl
bWVyYWxTb3VyY2VOb25jZT4gZXBoZW1lcmFsU291cmNlTm9uY2UoKSBjb25zdCB7IHJldHVybiBt
X2VwaGVtZXJhbFNvdXJjZU5vbmNlOyB9OwogICAgIHZvaWQgY2xlYXJFcGhlbWVyYWxTb3VyY2VO
b25jZSgpIHsgbV9lcGhlbWVyYWxTb3VyY2VOb25jZS5yZXNldCgpOyB9OwogCiAgICAgc3RydWN0
IFNvdXJjZVNlY3JldFRva2VuIHsKQEAgLTM2MCwxMSArMzYwLDExIEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKSB7IG1fc291cmNlVW5saW5rYWJsZVRva2VuLnZhbHVlQmFzZTY0VVJMID0gdmFsdWU7
IH0KLSAgICBjb25zdCBPcHRpb25hbDxTb3VyY2VTZWNyZXRUb2tlbj4mIHNvdXJjZVVubGlua2Fi
bGVUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2VjcmV0VG9rZW47IH0KKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVNlY3JldFRva2VuPiYgc291cmNlVW5saW5rYWJsZVRva2Vu
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZWNyZXRUb2tlbjsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U291cmNlU2VjcmV0VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJik7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwpAQCAtMzc2LDcg
KzM3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHVyY2hhc2VyOwogICAgIFdhbGxUaW1l
IG1fdGltZU9mQWRDbGljazsKIAotICAgIE9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+
IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBBdHRyaWJ1dGlvblRp
bWVUb1NlbmREYXRhIG1fdGltZXNUb1NlbmQ7CiAKICAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJs
ZVRva2VuIHsKQEAgLTM4OCw5ICszODgsOSBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdmFs
dWVCYXNlNjRVUkw7CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNl
PiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291
cmNlTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgU291cmNlVW5saW5rYWJsZVRv
a2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOwotICAgIE9wdGlvbmFsPFNvdXJjZVNlY3JldFRv
a2VuPiBtX3NvdXJjZVNlY3JldFRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2VjcmV0
VG9rZW4+IG1fc291cmNlU2VjcmV0VG9rZW47CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgpAQCAtNDA4LDQ5ICs0MDgsNDkgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
Ci1PcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzb3VyY2VJRDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBzb3VyY2VJRDsKICAgICBkZWNvZGVyID4+IHNvdXJjZUlEOwogICAgIGlm
ICghc291cmNlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOworICAgIHN0
ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOwog
ICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAgaWYgKCFzb3VyY2VS
ZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFp
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZXN0aW5hdGlvblJlZ2lz
dHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFp
bjsKICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNjcmlw
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlRGVzY3JpcHRpb247CiAgICAg
ZGVjb2RlciA+PiBzb3VyY2VEZXNjcmlwdGlvbjsKICAgICBpZiAoIXNvdXJjZURlc2NyaXB0aW9u
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gcHVyY2hhc2VyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAgICAg
ZGVjb2RlciA+PiBwdXJjaGFzZXI7CiAgICAgaWYgKCFwdXJjaGFzZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVPZkFkQ2xp
Y2s7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gdGltZU9mQWRDbGljazsKICAgICBkZWNv
ZGVyID4+IHRpbWVPZkFkQ2xpY2s7CiAgICAgaWYgKCF0aW1lT2ZBZENsaWNrKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8RXBoZW1lcmFsU291
cmNlTm9uY2U+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKICAg
ICBkZWNvZGVyID4+IGVwaGVtZXJhbFNvdXJjZU5vbmNlOwogICAgIGlmICghZXBoZW1lcmFsU291
cmNlTm9uY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxP
cHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPj4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhOwogICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxBdHRyaWJ1dGlvblRpbWVUb1NlbmRE
YXRhPiB0aW1lc1RvU2VuZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVGltZVRvU2Vu
ZERhdGE+IHRpbWVzVG9TZW5kOwogICAgIGRlY29kZXIgPj4gdGltZXNUb1NlbmQ7CiAgICAgaWYg
KCF0aW1lc1RvU2VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ3Nyw5ICs0
NzcsOSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25j
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5v
bmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2U+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVy
YWxTb3VyY2VOb25jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBub25jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm9uY2U7CiAgICAgZGVj
b2RlciA+PiBub25jZTsKICAgICBpZiAoIW5vbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNDk0LDE5ICs0OTQsMTkgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGMKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGRhdGE7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFByaW9y
aXR5VmFsdWU+IHByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UHJpb3JpdHlWYWx1ZT4gcHJp
b3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdhc1NlbnQ+IHdh
c1NlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXYXNTZW50PiB3YXNTZW50OwogICAgIGRlY29kZXIg
Pj4gd2FzU2VudDsKICAgICBpZiAoIXdhc1NlbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCmluZGV4IGQ4N2JkNDYxOGYwNWIzNTY4Y2RjZjU3YTNlMzU0NTBkZDNhNTcw
YTIuLjBiODNiYjFiNzY1MTNiZWE3MzA3YTMwN2Y3NWM5NmI3Mjc1NjVlMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtPiBwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlvbihT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobT4gcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9zaXRp
b24oU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIC8v
IEZJWE1FOiBUaGlzIHdvdWxkIGJlIG11Y2ggY2xlYW5lciB3aXRoIGEgbG9va3VwIHRhYmxlIG9m
IHBhaXJzIG9mIGxhYmVsIC8gYWxnb3JpdGhtIGVudW0gdmFsdWVzLCBidXQgSSBjYW4ndAogICAg
IC8vIGZpZ3VyZSBvdXQgaG93IHRvIGtlZXAgdGhlIGxhYmVscyBjb21waWxldGltZSBzdHJpbmdz
IGZvciBza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlLgpAQCAtNDksNyArNDksNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0OjpBbAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCwxNyArODAsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dD4gcGEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5n
QnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPFVD
aGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBs
KGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFy
c2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9n
cmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCiB7CiAgICAg
cmV0dXJuIHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVyKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBs
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBs
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAo
YnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTMsMTcg
KzExMywxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9u
YWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiBFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHsgKmFsZ29yaXRobSwgU3RyaW5nKGJlZ2luSGFzaFZh
bHVlLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luSGFzaFZhbHVlKSB9OwogfQogCi1PcHRpb25h
bDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9n
cmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCitzdGQ6Om9w
dGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENy
eXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVyKTsK
IH0KIAotT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VF
bmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyKQorc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBw
YXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+
JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJ
bXBsKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4g
ZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBlbmNvZGVkRGlnZXN0KQorc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgZW5j
b2RlZERpZ2VzdCkKIHsKICAgICBpZiAoYXV0byBkaWdlc3QgPSBiYXNlNjREZWNvZGUoZW5jb2Rl
ZERpZ2VzdC5kaWdlc3QsIEJhc2U2NERlY29kZU9wdGlvbnM6OlZhbGlkYXRlUGFkZGluZykpCiAg
ICAgICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgeyBlbmNvZGVkRGlnZXN0
LmFsZ29yaXRobSwgV1RGTW92ZSgqZGlnZXN0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGExNzY4Y2U3NjI2YTRh
NGFlZTZjZTA0MjEwNzc0OGQwODY4NWZjNGYuLmZjYzBiMDQ0YWFhMjRlNWVhN2ExMWNlYWMxZmY3
ZWJhNTM0OTAwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTY2LDEzICs2NiwxMyBAQCBzdHJ1Y3QgRW5jb2RlZFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgU3RyaW5nIGRpZ2VzdDsKIH07CiAKLU9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGln
ZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7Ci1PcHRpb25hbDxSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVm
ZmVyPExDaGFyPiYpOworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+
IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOwor
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogCi1PcHRpb25hbDxFbmNv
ZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGlj
RGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7Ci1PcHRpb25hbDxFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3Qo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChT
dHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogCi1PcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29u
c3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOworc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwog
CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVz
KFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRl
cywgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJ
bmZvLmNwcAppbmRleCBlNDg1MmYyOTNhMGZmNTlkOTE3NDUxZWRkNTBiZmJlYjA0MTIyMjlhLi41
NGI4MWJmYmVkYjVkOTc5NjYyOTZkZjhiOTVjZGQ1OWI0MDc3NDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCkBAIC04NSw3ICs4NSw3IEBAIE9wdGlvblNl
dDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IFJlc291cmNlUmVxdWVzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8T3B0aW9uU2V0
PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpv
cHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdW
aWV3IG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gImRvY3VtZW50IikKICAgICAgICAgcmV0dXJu
IHsgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIE9wdGlvbmFs
PE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxPcHRpb25TZXQ8TG9h
ZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25hbDxPcHRp
b25TZXQ8TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmlldyBuYW1lKQogewogICAgIGlm
IChuYW1lID09ICJmaXJzdC1wYXJ0eSIpCiAgICAgICAgIHJldHVybiB7IExvYWRUeXBlOjpGaXJz
dFBhcnR5IH07CkBAIC0xMjUsNyArMTI1LDcgQEAgT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRUeXBl
Pj4gcmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFtZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1PcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQo
U3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiBy
ZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQogewogICAgIGlmIChuYW1lID09ICJ0b3At
ZnJhbWUiKQogICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6VG9wRnJhbWUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4IGQ0NWI1Nzc5ODhmM2M0MGNm
OTViZTliNmNiMGRmZmM5OTU3NDExNmMuLmUwOGViODJkMDUwZDdlN2U3YjZlOTAyNWYwZTRkZWUz
ZWU3Y2ZmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaApAQCAt
NzksOSArNzksOSBAQCBjb25zdCB1aW50NjRfdCBBY3Rpb25GbGFnTWFzayA9IDB4MDAwMEZGRkYw
MDAwMDAwMDsKIGNvbnN0IHVpbnQ2NF90IElmQ29uZGl0aW9uRmxhZyA9IDB4MDAwMTAwMDAwMDAw
MDAwMDsKIAogT3B0aW9uU2V0PFJlc291cmNlVHlwZT4gdG9SZXNvdXJjZVR5cGUoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdEJhc2U6OlJlcXVlc3Rlcik7Ci1PcHRpb25hbDxP
cHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdWaWV3KTsKLU9w
dGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3KTsKLU9w
dGlvbmFsPE9wdGlvblNldDxMb2FkQ29udGV4dD4+IHJlYWRMb2FkQ29udGV4dChTdHJpbmdWaWV3
KTsKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5
cGUoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+IHJlYWRM
b2FkVHlwZShTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0
Pj4gcmVhZExvYWRDb250ZXh0KFN0cmluZ1ZpZXcpOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5m
byB7CiAgICAgVVJMIHJlc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuaAppbmRleCAzNjlkYzM1MmEwZmY1N2E4ZWVjN2JkODA3MjM1MDNlMzFi
NWIwNTM0Li41MzkwMDFjODkwMjY0Y2RkYmZhZjZhMDg2ZDJlY2Q1NjhjODEzM2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRnJhbWUmIG1fZnJhbWU7Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQgbG9uZz4gbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXI7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZCBsb25nPiBtX2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VJbnRlZ3JpdHkuY3BwCmluZGV4IDYyOTVhZWE1ZTMwYzk5MjZkNmRkZWM5OTI2MDE0ZTZk
NzRhOTBjOTIuLjRkMGM2OTBiMjc2MmFhOTBlNzFlYTM4N2YzYTNkODBmNjQxMzhiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcApAQCAtNDYs
NyArNDYsNyBAQCBzdGF0aWMgYm9vbCBpc1ZDSEFSKENoYXJhY3RlclR5cGUgYykKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdHJ1Y3QgSW50ZWdyaXR5TWV0YWRhdGFQYXJzZXIg
ewogcHVibGljOgotICAgIEludGVncml0eU1ldGFkYXRhUGFyc2VyKE9wdGlvbmFsPFZlY3RvcjxF
bmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pj4mIGRpZ2VzdHMpCisgICAgSW50ZWdy
aXR5TWV0YWRhdGFQYXJzZXIoc3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD4+JiBkaWdlc3RzKQogICAgICAgICA6IG1fZGlnZXN0cyhkaWdlc3Rz
KQogICAgIHsKICAgICB9CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3Q+PiYgbV9kaWdlc3RzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiYgbV9kaWdlc3RzOwogfTsKIAogfQpAQCAtOTYsMTIgKzk2
LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGxpdE9uU3BhY2VzKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyLCBGdW5jCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiBwYXJzZUludGVn
cml0eU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5TWV0YWRhdGEpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHBh
cnNlSW50ZWdyaXR5TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkKIHsK
ICAgICBpZiAoaW50ZWdyaXR5TWV0YWRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHJlc3VsdDsKICAgICAKICAgICByZWFkQ2hhcmFj
dGVyc0ZvclBhcnNpbmcoaW50ZWdyaXR5TWV0YWRhdGEsIFsmcmVzdWx0XSAoYXV0byBidWZmZXIp
IHsKICAgICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZl
cik6OkNoYXJhY3RlclR5cGU7CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIGJvb2wgaXNSZXNw
b25zZUVsaWdpYmxlKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICByZXR1cm4g
cmVzb3VyY2UuaXNDT1JTU2FtZU9yaWdpbigpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RW5jb2Rl
ZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtPiBwcmlvcml0aXplZEhhc2hG
dW5jdGlvbihFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYSwg
RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGIpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0
aG0+IHByaW9yaXRpemVkSGFzaEZ1bmN0aW9uKEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q6OkFsZ29yaXRobSBhLCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpB
bGdvcml0aG0gYikKIHsKICAgICBpZiAoYSA9PSBiKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
ZjA1ZTVjNjg1MGI4Yjg1Mjk0ZjRmOTNlNGQxYjVhMTRlYTMxZWJjNS4uNDg1MTMzZDg3YWMzNjhi
NTBhYWY5ZTIzZDMwM2JhNGQzM2FhZWRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWUKICAgICAgICAgLy8gY29tcGxldGUgbG9hZCBtZXRyaWNzIGluIGRpZEZpbmlzaExvYWQu
IEluIHRob3NlIGNhc2VzLCBmYWxsIGJhY2sgdG8gdGhlIHBvc3NpYmlsaXR5CiAgICAgICAgIC8v
IHRoYXQgdGhleSBwb3B1bGF0ZWQgcGFydGlhbCBsb2FkIHRpbWluZyBpbmZvcm1hdGlvbiBvbiB0
aGUgUmVzb3VyY2VSZXNwb25zZS4KICAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gbV9yZXNv
dXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0g
ICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBlbXB0eTsKICAgICAgICAgaWYgKCF0aW1pbmcp
IHsKICAgICAgICAgICAgIGVtcHR5LmVtcGxhY2UoKTsKICAgICAgICAgICAgIHRpbWluZyA9ICZl
bXB0eS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCAxMWY1YjFhMjIwYzUxYTg5NTM5N2UyYjExMzhiZGU2NDc5Mzg2MjM3Li5lZDU5MTkyMTlj
YmJmMzM0Mzk3NjY0ZDUxMmE5ZjdkNmM5N2VjYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKICAgICBTdWJyZXNvdXJjZUxvYWRlclN0
YXRlIG1fc3RhdGU7Ci0gICAgT3B0aW9uYWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0
Q291bnRUcmFja2VyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9y
ZXF1ZXN0Q291bnRUcmFja2VyOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBtX3BvbGljeUZvclJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA3MGQxNTE3YmJiZjI4ZmNiZjVmZmRhZjkw
NjdhYmFhZTdjOTE4NjFkLi5jOGE5YmJkZTNlMzdkYTA1NzdlOTA0MWUxOTk2M2U0NGYxYTI1MzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3Rl
clR5cGUgY2FjaGVNb2RlSWRlbnRpZgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGZhbGxiYWNrTW9kZUlkZW50aWZpZXJbXSA9
IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdBJywgJ0MnLCAnSycgfTsKIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBuZXR3
b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAnRScsICdUJywgJ1cnLCAnTycsICdSJywgJ0sn
IH07CiAKLU9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5p
ZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25h
bDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7
CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZl
c3RNSU1FVHlwZSk7CkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pCiAK
ICAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFT
Q0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVUeXBlKSwgIlVU
Ri04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiAKLSAgICByZXR1cm4gcmVhZENo
YXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBbJl0oYXV0byBidWZmZXIpIC0+IE9w
dGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4geworICAgIHJldHVybiByZWFkQ2hhcmFj
dGVyc0ZvclBhcnNpbmcobWFuaWZlc3RTdHJpbmcsIFsmXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpv
cHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKICAgICAgICAgdXNpbmcgQ2hhcmFj
dGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNoYXJhY3RlclR5cGU7CiAgICAg
CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCBtYW5pZmVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3RQYXJzZXIuaAppbmRleCBlMGNmOTJkNzBmYmI4MzViYzU0NGNhYWU5OWRjZjkwNWYz
YTM3ZTM1Li4wYmY5ZjlmMTZhNWFmNjlmY2FmYTAxNjlkOWU2NjQ0MWIxZjlmODYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCkBAIC00MSw2ICs0MSw2IEBAIHN0cnVjdCBBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QgewogICAgIGJvb2wgYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgeyBm
YWxzZSB9OyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiB9OwogCi1PcHRp
b25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlw
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKaW5kZXggNWU2ODExZTFiYWEzNzU1MDRjYThjZTcyM2RkNWNlOTI3MGE2MWUxMC4u
MWFjNGIxZmI4YzQ0MjAzMGZlZDllMGY5NTFkOTQzYTBlZWVhZWRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcygpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxVUkw+PiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKCkKIHsKICAgICBTUUxpdGVUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKaW5kZXggNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNi4uMTdi
OGYwN2ExZDNjNzljMTI3N2U1Y2EwODEyODRiOWEzODIxNTIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
QEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2Fj
aGU+IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7Ci0gICAgT3B0aW9u
YWw8VmVjdG9yPFVSTD4+IG1hbmlmZXN0VVJMcygpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFVSTD4+IG1hbmlmZXN0VVJMcygpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZElu
TWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKSBjb25zdDsKICAgICBib29s
IGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCB2
YWN1dW1EYXRhYmFzZUZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCAyYjY1YWMwZjM2MzI1
OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5Li5mYjg3NjJhNTllN2UzYzk3NGQ2ZGRhZTg1ZjI3
YzE0NjJhZjUzZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFN0cmlu
ZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLU9wdGlvbmFsPEFwcGxpY2F0aW9u
TWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OnByb2Nlc3MoY29uc3QgVVJMJiBt
YW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqIGRvY3VtZW50KQor
c3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fdGV4dCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDhmYTg2Y2FjOGJjNWNkZDI2MWE3
OTMzNzc3N2U2ZThhZTZlZGVmYzAuLmFkMzYxMDQzOGUzYTRjMGRlOTM1YzRmYWM0NzVhMzFiMjZl
M2RiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0IGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoK
ICAgICBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciopOwogCi0gICAgT3B0aW9uYWw8
c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVS
TCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CisgICAgc3Rk
OjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRy
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OSw3IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWY8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV90ZXh0
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX3RleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAppbmRleCA3OGQ4NGJmYWJjZGVlNjJiMWU2ZmZiZTdhN2NiZjMyMzE4NTQzMzky
Li5kN2JkMzI4NzVkNTJkNmQzOTFjM2FlMGZhMWFiYzU5MmJhZGRmODc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRp
YU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLU9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFW
aWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29u
c3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJE
YXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNE
YXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgp
IDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNmE2YzQ3YjU3MDM1OWQ0NDM1YjhmNzMyOWIwYTZl
ZTA3YTljNmIxZi4uYzk2ZWI3YWEyNDgyYjM5ZWE2OTUwNTFiYWUwNWVjMDE4NDgxYWVhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRh
dGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0
YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50
OyB9CiAKLSAgICBPcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
Y29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYg
VVNFKFFVSUNLX0xPT0spCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERl
bGF5ZWRGaW5pc2hMb2FkaW5nIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIH07Ci0gICAgT3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZp
bmlzaExvYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9k
ZWxheWVkRmluaXNoTG9hZGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDJkYTk3
ZjE0Mjk1NDFmM2I1NjkwMWY3OGZjOGQ3YjgxNDEzYmI3YzcuLmE3Y2UwMGQxYWZmYjBkNmFhZThl
N2ZhYWE1NzQ5YzA3NWY1YzI1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHVuc2lnbmVkIENhY2hlZFJl
c291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdAogICAgIHJldHVybiBzaXplb2YoQ2FjaGVkUmVz
b3VyY2UpICsgbV9yZXNwb25zZS5tZW1vcnlVc2FnZSgpICsga0F2ZXJhZ2VDbGllbnRzSGFzaE1h
cFNpemUgKyBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sZW5ndGgoKSAqIDI7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExvYWRQcmlvcml0eShjb25zdCBPcHRpb25hbDxS
ZXNvdXJjZUxvYWRQcmlvcml0eT4mIGxvYWRQcmlvcml0eSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldExvYWRQcmlvcml0eShjb25zdCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5
PiYgbG9hZFByaW9yaXR5KQogewogICAgIGlmIChsb2FkUHJpb3JpdHkpCiAgICAgICAgIG1fbG9h
ZFByaW9yaXR5ID0gbG9hZFByaW9yaXR5LnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGJmMjVjYWRkNDM0MDcyZmM1ZjVkODdhZGI3
ZDJlMjJmNmNmNGVjMDcuLmFmZTNkMzVkOTJkYTlkMDMxODMxMmJkNmYzMDFhNTljMmRiNjM1ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0x
MzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZFVzZVBpbmdMb2Fk
KFR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBUeXBlOjpCZWFjb24gfHwgdHlwZSA9PSBUeXBl
OjpQaW5nOyB9CiAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkoKSBjb25z
dCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQotICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNv
bnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYpOworICAgIHZvaWQgc2V0TG9hZFBy
aW9yaXR5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+Jik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCmluZGV4IGI1MzdmYzU0NWFmMTljMjk3NzY5NWZjNzU4MjdmZjhhMWY0MGVk
OWQuLjgzNGI2MjU0MTdhYzZlY2YwYjgyZmNhNzFhY2UxMzEwZTVlYTY1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3Vy
Y2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIE9wdGlvbmFs
PFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKK0NhY2hl
ZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBz
dGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hh
cnNldCkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSkK
ICAgICAsIG1fY2hhcnNldChXVEZNb3ZlKGNoYXJzZXQpKQogICAgICwgbV9vcHRpb25zKG9wdGlv
bnMpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldFNl
bGVjdGVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJJZk5lZWQKICAgICBtX29w
dGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
fQogCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0TmF2aWdhdGlvblNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhPiYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXROYXZpZ2F0aW9u
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFkYXRh
LT5hY3RpdmVXb3JrZXIpIHsKICAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9
IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCBmMzAwMDEyZjA1YzllYTljOTc1
YzA2MDNkNzFkZjhhMzNkNTIzM2FhLi5lZDJiNWFmNTZhNDg4ZGZiY2Q4ZmY2NmZiMmY4MzY5Y2Yz
YjYxMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgaXNSZXF1ZXN0Q3Jvc3NPcmln
aW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNl
CiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBzdGQ6Om51bGxvcHQsIFN0cmlu
ZyYmIGNoYXJzZXQgPSBTdHJpbmcoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBzdGQ6Om9wdGlvbmFs
PFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6bnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9
IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYmIHJlbGVhc2VSZXNvdXJjZVJlcXVl
c3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3VyY2VSZXF1ZXN0KTsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZVJlcXVlc3Q7IH0KQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogICAg
IHZvaWQgc2V0T3B0aW9ucyhjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIHsg
bV9vcHRpb25zID0gb3B0aW9uczsgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2Fk
UHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpb3JpdHk7IH0KLSAgICB2
b2lkIHNldFByaW9yaXR5KE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYmIHByaW9yaXR5
KSB7IG1fcHJpb3JpdHkgPSBXVEZNb3ZlKHByaW9yaXR5KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpb3JpdHk7IH0KKyAgICB2b2lkIHNldFByaW9yaXR5KHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+JiYgcHJpb3JpdHkpIHsgbV9wcmlvcml0eSA9IFdURk1vdmUocHJpb3JpdHkp
OyB9CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgc2V0Q2xpZW50SWRlbnRp
ZmllcklmTmVlZGVkKERvY3VtZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVySWZOZWVkZWQoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIHZvaWQgc2V0TmF2aWdhdGlvblNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhPiYpOworICAgIHZvaWQgc2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJl
cXVlc3Q7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMg
bV9vcHRpb25zOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9yaXR5
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fcHJpb3JpdHk7CiAg
ICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAgICBBdG9tU3RyaW5nIG1f
aW5pdGlhdG9yTmFtZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggZTdlODVjYTZjZTExOWE1YjFmNzQ3
MzQ4MmRkMDEzMzA1ODdhYmNmMy4uOTBiMjBhYzkzZDRlNDFjYjRkNWY2YWYwZDU0ODdjZmExN2U0
YmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyZXRjaGVkID0gMTgKICAgICB9OwogCi0gICAgdmlydHVh
bCBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNw
ZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IDNjNDM5MzkwMGNmZTc2OTc3
MDk3ZGE5MGZjYTE2N2NjNGIwMmE4ODcuLjQwZjMyY2ZmMTNmYzQwOTdmNTUzNTExZDZlZTQ3ODA3
MTc3N2I2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYg
TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpsaW5lVGhpY2tuZXNzKCkKICAgICByZXR1cm4gbV9saW5l
VGhpY2tuZXNzLnZhbHVlKCk7CiB9CiAKLU1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25B
bGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mIGFs
aWdubWVudCkKK01hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50KQog
ewogICAgIGlmIChhbGlnbm1lbnQpCiAgICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAppbmRleCBk
OGM2NmEzODY0YjYzNTVmN2E4ZTc1MTQ3ZDM0YjM4Y2YyMTA1ZTViLi42OTVjNTgxMzIxNjk0YzQw
ZTAxNWE5ZjIwOGQyYTVhNzNjZmU2MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC00OSwxMSArNDksMTEgQEAgcHJpdmF0ZToKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAot
ICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKKyAgICBGcmFjdGlvbkFs
aWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3Rk
OjpvcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9saW5lVGhpY2tuZXNzOwotICAgIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX251bWVy
YXRvckFsaWdubWVudDsKLSAgICBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4gbV9kZW5vbWlu
YXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNz
OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxpZ25t
ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fZGVub21pbmF0b3JB
bGlnbm1lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWVuY2xvc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmgKaW5kZXggYTBlMzJhODFmYzBkZTJjNjkxMWZkZGNkZTdhYTA0ZDMwYzFlOWQx
My4uMDUwNmI1ZjAwMGZmMWRhMGE4MzlkMjA2ZmEyMDBhY2M3ZGU2NzJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9
IDA7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9u
RmxhZykgeyBtX25vdGF0aW9uRmxhZ3MudmFsdWUoKSB8PSBub3RhdGlvbkZsYWc7IH0KICAgICB2
b2lkIGFkZE5vdGF0aW9uRmxhZ3MoU3RyaW5nVmlldyBub3RhdGlvbik7Ci0gICAgT3B0aW9uYWw8
dWludDE2X3Q+IG1fbm90YXRpb25GbGFnczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBt
X25vdGF0aW9uRmxhZ3M7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCmluZGV4IGVjNTA1MjA5NjQzMWFhYjg2MGJkMWRh
NWNlNzQzNTkyNGM2ZmI0ZjMuLjRmMjkwZGFkOTNhOTBjNGExYWIwMDg5MDFiNjE5YzIxM2MwZmUx
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnkuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBob3Jp
em9udGFsT3BlcmF0b3JzW10gPSB7CiAgICAgMHgwMDNELCAweDAwNUUsIDB4MDA1RiwgMHgwMDdF
LCAweDAwQUYsIDB4MDJDNiwgMHgwMkM3LCAweDAyQzksIDB4MDJDRCwgMHgwMkRDLCAweDAyRjcs
IDB4MDMwMiwgMHgwMzMyLCAweDIwM0UsIDB4MjBEMCwgMHgyMEQxLCAweDIwRDYsIDB4MjBENywg
MHgyMEUxLCAweDIxOTAsIDB4MjE5MiwgMHgyMTk0LCAweDIxOTgsIDB4MjE5OSwgMHgyMTlDLCAw
eDIxOUQsIDB4MjE5RSwgMHgyMUEwLCAweDIxQTIsIDB4MjFBMywgMHgyMUE0LCAweDIxQTYsIDB4
MjFBOSwgMHgyMUFBLCAweDIxQUIsIDB4MjFBQywgMHgyMUFELCAweDIxQjQsIDB4MjFCOSwgMHgy
MUJDLCAweDIxQkQsIDB4MjFDMCwgMHgyMUMxLCAweDIxQzQsIDB4MjFDNiwgMHgyMUM3LCAweDIx
QzksIDB4MjFDQiwgMHgyMUNDLCAweDIxRDAsIDB4MjFEMiwgMHgyMUQ0LCAweDIxREEsIDB4MjFE
QiwgMHgyMURDLCAweDIxREQsIDB4MjFFMCwgMHgyMUUyLCAweDIxRTQsIDB4MjFFNSwgMHgyMUU2
LCAweDIxRTgsIDB4MjFGMCwgMHgyMUY2LCAweDIxRkQsIDB4MjFGRSwgMHgyMUZGLCAweDIzQjQs
IDB4MjNCNSwgMHgyM0RDLCAweDIzREQsIDB4MjNERSwgMHgyM0RGLCAweDIzRTAsIDB4MjNFMSwg
MHgyNTAwLCAweDI3RjUsIDB4MjdGNiwgMHgyN0Y3LCAweDI3RjgsIDB4MjdGOSwgMHgyN0ZBLCAw
eDI3RkIsIDB4MjdGQywgMHgyN0ZELCAweDI3RkUsIDB4MjdGRiwgMHgyOTBDLCAweDI5MEQsIDB4
MjkwRSwgMHgyOTBGLCAweDI5MTAsIDB4Mjk0RSwgMHgyOTUwLCAweDI5NTIsIDB4Mjk1MywgMHgy
OTU2LCAweDI5NTcsIDB4Mjk1QSwgMHgyOTVCLCAweDI5NUUsIDB4Mjk1RiwgMHgyQjQ1LCAweDJC
NDYsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzcsIDB4RkUzOCwgMHgxRUVGMCwgMHgxRUVGMQogfTsK
IAotT3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVD
aGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKQorc3RkOjpvcHRp
b25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBj
aGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7CiAgICAgaWYgKCFjaGFy
YWN0ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmgKaW5kZXggMWM1ZDBhMjlhOWU4MTk4
MjhlOTcwMDU1ZTI1NDI3YmM2NDBkOWUyOC4uNjBlYTY3N2JhNGZiNGY4MGM5MmIyMzE1NmViYTJl
MTIzYmRiNzYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnkuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgUHJvcGVydHkgewogICAgIC8v
IERlZmF1bHQgb3BlcmF0b3IgcHJvcGVydGllcyBhcmUgYWxsIHNldCB0byAiZmFsc2UiLgogICAg
IHVuc2lnbmVkIHNob3J0IGZsYWdzIHsgMCB9OwogfTsKLU9wdGlvbmFsPFByb3BlcnR5PiBzZWFy
Y2goVUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pOworc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0eT4gc2VhcmNoKFVDaGFyMzIsIEZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKTsKIGJvb2wgaXNW
ZXJ0aWNhbChVQ2hhcjMyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
T3BlcmF0b3JFbGVtZW50LmNwcAppbmRleCAzNGJiODFhZDdkZTMxYjNlZWM2MzkxMmIwODQ0YWQz
ZTQ1MzIyODhkLi44NmRmNjNjMDIwZjUwZGI1ZGE1Y2YxZjI4OWVhZGQwOTk4YjNjZDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21wdXRlT3BlcmF0
b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmCiB7CiAgICAgQVNTRVJUKG1f
cHJvcGVydGllcy5kaXJ0eUZsYWdzICYgZmxhZyk7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFs
dWU+IHByb3BlcnR5OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBwcm9wZXJ0eTsK
ICAgICBjb25zdCBhdXRvJiBuYW1lID0gcHJvcGVydHlGbGFnVG9BdHRyaWJ1dGVOYW1lKGZsYWcp
OwogICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRl
KG5hbWUsIHByb3BlcnR5KTsKICAgICBzd2l0Y2ggKHZhbHVlKSB7CkBAIC0yMDksNyArMjA5LDcg
QEAgdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogICAgIE1hdGhNTFRva2VuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6
OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFn
PiBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
IHsKICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRyKQogICAgICAgICByZXR1cm4gQWNjZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCmluZGV4IGJi
NTZmNzk0NmU4ZjE1ZTkyYjI4ZjQ2MWU0YjJlN2ZjZTljNzZjMjkuLmUxYzllNjc0Y2U2ODVlZDU4
NzRlYzcyZWZkYzM5MDNjMmQxOWFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MT3BlcmF0b3JFbGVtZW50LmgKQEAgLTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKIAotICAgIE9wdGlvbmFsPE9wZXJhdG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CisgICAgc3Rk
OjpvcHRpb25hbDxPcGVyYXRvckNoYXI+IG1fb3BlcmF0b3JDaGFyOwogCi0gICAgT3B0aW9uYWw8
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpQcm9wZXJ0eT4gbV9kaWN0aW9uYXJ5UHJvcGVydHk7
CisgICAgc3RkOjpvcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5PiBt
X2RpY3Rpb25hcnlQcm9wZXJ0eTsKICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3Bl
cnR5IGNvbXB1dGVEaWN0aW9uYXJ5UHJvcGVydHkoKTsKICAgICBjb25zdCBNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OlByb3BlcnR5JiBkaWN0aW9uYXJ5UHJvcGVydHkoKTsKIApAQCAtNzEsMTAg
KzcxLDEwIEBAIHByaXZhdGU6CiAgICAgT3BlcmF0b3JQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsK
ICAgICB2b2lkIGNvbXB1dGVPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpG
bGFnKTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9sZWFkaW5nU3BhY2U7Ci0gICAgT3B0aW9u
YWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21pblNp
emU7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21heFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxM
ZW5ndGg+IG1fbGVhZGluZ1NwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWls
aW5nU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbWluU2l6ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExlbmd0aD4gbV9tYXhTaXplOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5kZXggNTk3MmM0OGRiY2EwNWU0YzhjYmIyYmZj
M2RjZDZkNDkyZjJiNDI2Ni4uNjM5NDc4OTFkNDJjMWNhMDQ1NWNjODRlNmM1ZTU5NzRlM2Q4MGU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00
NiwxMSArNDYsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0
aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9kZXB0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fbHNwYWNlOwotICAgIE9wdGlvbmFsPExl
bmd0aD4gbV92b2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAg
IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0
aD4gbV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9sc3BhY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxMZW5ndGg+IG1fdm9mZnNldDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCBhMjY5ZGM5
YTA3NjUwZTljZTk1ZmEyMzRkM2U4YmFkMWFhZmI3M2E2Li5mZDVjNGUyMmVkMWE0NDMxMjllZGEw
ZTdmY2YyNjc1Yjc2YTAwZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAg
ICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CiAK
LWNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBP
cHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCitjb25zdCBNYXRoTUxFbGVtZW50OjpC
b29sZWFuVmFsdWUmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFs
dWU+JiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZS52YWx1ZSgpOwpAQCAtMzExLDcgKzMxMSw3IEBAIE1hdGhNTEVsZW1lbnQ6Okxlbmd0
aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJp
bmcmCiAgICAgcmV0dXJuIHBhcnNlTmFtZWRTcGFjZShzdHJpcHBlZExlbmd0aCk7CiB9CiAKLWNv
bnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2Fj
aGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPExlbmd0
aD4mIGxlbmd0aCkKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiYgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBsZW5ndGgudmFsdWUoKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBNYXRoTUxFbGVt
ZW50OjpNYXRoVmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJp
YW50QXR0cmlidXRlKAogICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9uZTsKIH0KIAotT3B0aW9u
YWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKK3N0ZDo6b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0
aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50
KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQ
cmVzZW50YXRpb25FbGVtZW50LmgKaW5kZXggZTI0NjVmMWRmYzlmMDc5MThhMmZiZTZkNjNmYTEz
NDc3OGIyYzNiNi4uM2YyYTc3OGJiNTk3MWM0YzgxMmUyOWIyODAyZGRjNGE0MWJlYTY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5o
CkBAIC00NSwxNiArNDUsMTYgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzUGhyYXNp
bmdDb250ZW50KGNvbnN0IE5vZGUmKTsKICAgICBzdGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50KGNv
bnN0IE5vZGUmKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChj
b25zdCBCb29sZWFuVmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6
OkRlZmF1bHQgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFu
VmFsdWU6OlRydWUpOyB9Ci0gICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVh
blZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8g
c3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6
OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAog
ICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7Ci0gICAg
Y29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9w
dGlvbmFsPExlbmd0aD4mKTsKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChj
b25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRpb25hbDxMZW5ndGg+Jik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSBmaW5hbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIGZp
bmFsOwogCi0gICAgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+IG1fbWF0aFZhcmlhbnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKIAogcHJpdmF0ZToKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAppbmRleCA0M2RjNGZjOWYyNzE1MmRkNzdj
NmI1ZWZjZTVmNDVjZTFmZTk2MzliLi40YWE2MzJhOGRhNzBmYjI4MDVkMzMyN2Q5N2ZiYjFiYjgx
NjJmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQu
aApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIGNv
bnN0IFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdWJz
Y3JpcHRTaGlmdDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCmluZGV4IDVjZTk0YmRhZmMwM2FmNTg0ZWRjZjlm
MjBlMTRiMThmNzkzOGE3OTEuLmVkNTI0YWRiNTJjY2IwZGY5MzNmZjQ4YWI0OTMyOGRjZWI5YWI2
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKQEAgLTQz
LDkgKzQzLDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsK
LSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9k
ZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4gbV9oZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fZGVwdGg7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3Bw
CmluZGV4IDdiZGFmNjEwNGU4ODg5M2FlYzkzN2ZmNTJmMWE3MzNjODM4NzVmNGIuLjU1NWRkMmVk
ZjJjNDAzOWYyNjQxZDQ1YTA2MDVhYzcyMzNjYTEzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBAIC04MSwxMyArODEsMTMgQEAgYm9vbCBNYXRo
TUxUb2tlbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hp
bGQpIGNvbnN0CiAgICAgcmV0dXJuIGlzUGhyYXNpbmdDb250ZW50KGNoaWxkKSAmJiBTdHlsZWRF
bGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKIH0KIAotT3B0aW9uYWw8
VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3Ry
aW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IE1hdGhNTFRva2VuRWxlbWVu
dDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1
dG8gY29kZVBvaW50cyA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhzdHJpbmcp
LmNvZGVQb2ludHMoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gY29kZVBvaW50cy5iZWdpbigpOwog
ICAgIGlmIChpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsKICAgICAr
K2l0ZXJhdG9yOwogICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpID8gY2hh
cmFjdGVyIDogc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFRva2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRv
a2VuRWxlbWVudC5oCmluZGV4IGE0ZWU5ZTQ5YzMxNGIwYWIwNmNjMTI4Nzg4NzBiN2Y0N2FjMWUy
NTQuLjNhZTc2MmY5ODZkYWIxMTdjNmIwMzkxMWJlYmJkNTVhOTdkMDA3MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgTWF0aE1MVG9rZW5FbGVtZW50IDogcHVibGljIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1MVG9rZW5FbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHN0YXRpYyBPcHRp
b25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gY29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0
cmluZ1ZpZXcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAppbmRleCBmNjM0MDJmMGQ3NjJmNGEwODZjMzI0
OTU4OTVjZDQ0YzczYTcyYzIzLi4xY2NjYWI3MGM3ODM0NTA5ZGFkYmUyYTA4M2MzODZiZjQ2OTFh
MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmgKQEAgLTQzLDggKzQzLDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5W
YWx1ZT4gbV9hY2NlbnQ7Ci0gICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudFVuZGVy
OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnRVbmRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAppbmRleCBiZDAzNDhjYThmYWI4NjdiOGQxNDdkZTE5YTlhZjQzNmQ2MmNlNDg1Li5h
MGMwOTMwNmY5NjI4YjE2NGE5MjIyZjM3MTBkODdlYTU5ODA0YWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBDaHJvbWU6OnNob3dTaGFyZVNoZWV0KFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXIKICAgICBt
X2NsaWVudC5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAotdm9pZCBDaHJvbWU6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxD
b250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBDaHJvbWU6OnNob3dDb250YWN0UGlj
a2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgbV9jbGllbnQuc2hvd0NvbnRhY3RQaWNrZXIocmVxdWVzdERhdGEsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KQEAgLTU0Niw3ICs1NDYsNyBAQCBQbGF0Zm9ybURpc3BsYXlJRCBD
aHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsK
IH0KIAotdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lSW50ZXJ2
YWwpCit2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZUlu
dGVydmFsKQogewogICAgIG1fcGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBu
b21pbmFsRnJhbWVJbnRlcnZhbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBhYjUxNjY1OGQ3
ODAxMDBiNzA5MWU0MWY0YjFlNWFkMmNiMzdjYTgzLi4xNWE0OTFiODRjMjA2ZGQ4YjUxYWRjNmVl
MWRiNjg4OGI3ZjQzZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPikgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBydW5PcGVuUGFuZWwo
RnJhbWUmLCBGaWxlQ2hvb3NlciYpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYpOworICAg
IHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4m
Jik7CiAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmls
ZUljb25Mb2FkZXImKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaXNhYmxlZEFkYXB0YXRpb25zRGlk
Q2hhbmdlKGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzhmODEyN2FlZjQ0MzI4NTI1ZGYyMTRlOTYw
MzQxMmU2MDI2ZDRiZi4uZWM3MmU5NTQ5MmE2YTc1NzkxYjg3MDUwNmNiYmRlOGViOWU3ZDI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdEZXZp
Y2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFp
bGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UG9pbnRl
ckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5n
RGV2aWNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2
aWNlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ltbWVkaWF0ZUlu
dmFsaWRhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNh
bGxiYWNrKGZhbHNlKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25z
dCBDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29u
dGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7IH0KICAgICAKICAgICAvLyBBc3luY2hyb25vdXMgcmVxdWVzdCB0byBsb2FkIGFu
IGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciYpID0gMDsKQEAg
LTQ2Myw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVNjcm9sbGVy
VGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKFNjcm9sbGJhclN0eWxlKSB7IH0K
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCBlODQ5YWJkNTBmMDVlMjkw
MDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzLi5kNzczZDliMzEyYjM2YTk1NjBkY2Y0NGQ1MThiMTFj
YmMwYWRjYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVu
dE9yaWdpbiYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBkZWNvZGUoRGVj
b2RlciYpOwogCiAgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIGJv
b2wgaXNSZWxhdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIHRvcE9yaWdpbiA9PSBvdGhlciB8fCBjbGllbnRPcmlnaW4gPT0gb3RoZXI7IH0KQEAgLTc1
LDEwICs3NSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRP
cmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2xp
ZW50T3JpZ2luOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8
Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBD
bGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwotICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2lu
RGF0YT4gY2xpZW50T3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRh
PiB0b3BPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVu
dE9yaWdpbjsKICAgICBkZWNvZGVyID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbiB8
fCB0b3BPcmlnaW4tPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCA3NDIxNDkzZTQyZGEzODdlM2EyNTQz
NWQ0MWYzNzRjYzM1ZmQzYWEyLi4wOGQ1OTZkNGViNzI5NWQyZGJjNjc0NzJiZWY2MDI0OTViNTJh
M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC02NCw3ICs2NCw3IEBA
IFJlZlB0cjxGcmFtZT4gRE9NU2VsZWN0aW9uOjpmcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIERP
TVdpbmRvd1Byb3BlcnR5OjpmcmFtZSgpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRE9N
U2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBET01T
ZWxlY3Rpb246OnJhbmdlKCkgY29uc3QKIHsKICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKaW5kZXggNTQx
YmU0MjM5ODdmN2E0NDQwZTExNWU5YTFkM2YxNTFkNDYwODFiOS4uYzg2YzQxOGYwMTUzMTI2MzZj
YWU1Y2FlMWYxZjhkNjA5NDU5ZTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIERPTVdpbmRv
d1Byb3BlcnR5OjpmcmFtZSB0byByZXR1cm4gUmVmUHRyIGFuZCB0aGVuIGRlbGV0ZSB0aGlzLgog
ICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUoKSBjb25zdDsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSgp
IGNvbnN0OwogCiAgICAgUG9zaXRpb24gYW5jaG9yUG9zaXRpb24oKSBjb25zdDsKICAgICBQb3Np
dGlvbiBmb2N1c1Bvc2l0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4
IDc2ZDJmZTdkOWIwNmU4OWFjM2Y1NTZjMTJkOGFiNDQ5MDViYjQ5ZGEuLjQ1MDIwNGVhZWRiYjNi
Nzg3ODhmNzI0M2U5MjZkODI1ODE3ZTI2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBA
IC0zOTQsNyArMzk0LDcgQEAgU2Vjb25kcyBET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5p
bXVtKCkgY29uc3QKICAgICByZXR1cm4gaW50ZXJ2YWw7CiB9CiAKLU9wdGlvbmFsPE1vbm90b25p
Y1RpbWU+IERPTVRpbWVyOjphbGlnbmVkRmlyZVRpbWUoTW9ub3RvbmljVGltZSBmaXJlVGltZSkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gRE9NVGltZXI6OmFsaWduZWRGaXJl
VGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBjb25zdAogewogICAgIFNlY29uZHMgYWxpZ25t
ZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRvbVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpOwogICAgIGlm
ICghYWxpZ25tZW50SW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXggYTU1OWY0MTkz
MDkxYmRlNmMyYzc3NjY4ZTUxY2RiOWNmMjBhZmE1OC4uMTFjZmE3ZTUwZmVhOTc5ZWRjMjMzMGJh
NWY1ZTdhNzU3OTZkOTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtNzUsNyArNzUsNyBA
QCBwcml2YXRlOgogICAgIC8vIFN1c3BlbmRhYmxlVGltZXJCYXNlCiAgICAgdm9pZCBmaXJlZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RvcCgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGFsaWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1l
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPE1vbm90
b25pY1RpbWU+IGFsaWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1lKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IGYyNmNlNDNiZjNlZDAyN2E5NGYyNjdhYWU4YjQyMGZiNjBlOTZhNzcuLmE4ZjVlZjNhY2Q2
MWRjMjUxYWQyMGIxNzk0Y2U3NDA1M2QzZjg5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTE1MSw5ICsxNTEsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0
aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0VHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uIHsgMl9z
IH07CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNvbmRzPiYgdHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0
aW9uT3ZlcnJpZGVGb3JUZXN0aW5nKCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+JiB0
cmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25PdmVycmlkZUZvclRlc3RpbmcoKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxTZWNvbmRzPj4gb3ZlcnJpZGVGb3JUZXN0aW5n
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBvdmVy
cmlkZUZvclRlc3Rpbmc7CiAgICAgcmV0dXJuIG92ZXJyaWRlRm9yVGVzdGluZzsKIH0KIApAQCAt
MTUxOSw3ICsxNTE5LDcgQEAgRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKLXZvaWQgRE9NV2luZG93OjpvdmVycmlk
ZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3RpbmcoT3B0aW9uYWw8U2Vjb25kcz4m
JiBvdmVycmlkZSkKK3ZvaWQgRE9NV2luZG93OjpvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25E
dXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiYmIG92ZXJyaWRlKQogewog
ICAgIHRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbk92ZXJyaWRlRm9yVGVzdGluZygpID0gV1RG
TW92ZShvdmVycmlkZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxNWE2YmNhZmVl
NDY1ZWQzZjAwZGQyY2IxMDFjZTYxMzNmZGUxNzEzLi4wMTA1ZDk0MGFmNDY2MzAwOTA3MmM5NDE3
YmQwZTQ2NzYxZWFjZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTE3Niw3ICsxNzYs
NyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdG9yKiBvcHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CiAgICAgTmF2aWdhdG9yJiBjbGllbnRJbmZvcm1h
dGlvbigpIHsgcmV0dXJuIG5hdmlnYXRvcigpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3RpbmcoT3B0
aW9uYWw8U2Vjb25kcz4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgb3ZlcnJp
ZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25Gb3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4mJik7CiAgICAgdm9pZCBzZXRMYXN0QWN0aXZhdGlvblRpbWVzdGFtcChNb25vdG9uaWNU
aW1lIGxhc3RBY3RpdmF0aW9uVGltZXN0YW1wKSB7IG1fbGFzdEFjdGl2YXRpb25UaW1lc3RhbXAg
PSBsYXN0QWN0aXZhdGlvblRpbWVzdGFtcDsgfQogICAgIE1vbm90b25pY1RpbWUgbGFzdEFjdGl2
YXRpb25UaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2xhc3RBY3RpdmF0aW9uVGltZXN0YW1w
OyB9CiAgICAgdm9pZCBub3RpZnlBY3RpdmF0ZWQoTW9ub3RvbmljVGltZSk7CkBAIC00MzIsNyAr
NDMyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRMb2Fk
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNwZW5zaW9u
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdXNwZW5kaW5nT2JzZXJ2ZXJzIHsgZmFsc2UgfTsK
LSAgICBPcHRpb25hbDxib29sPiBtX2NhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZTsKIAogICAgIEhh
c2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICBtdXRhYmxlIFJlZlB0cjxQZXJmb3JtYW5jZT4gbV9wZXJmb3JtYW5jZTsKIAot
ICAgIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gbV9mcm96ZW5Ob3dUaW1lc3Rh
bXA7CisgICAgc3RkOjpvcHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IG1fZnJvemVu
Tm93VGltZXN0YW1wOwogCiAgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHRyYWNraW5nIHVzZXIg
YWN0aXZhdGlvbiwgZWFjaCBXaW5kb3cgVyBoYXMgYSBsYXN0IGFjdGl2YXRpb24gdGltZXN0YW1w
LiBUaGlzIGlzIGEgbnVtYmVyIGluZGljYXRpbmcgdGhlIGxhc3QgdGltZSBXIGdvdAogICAgIC8v
IGFuIGFjdGl2YXRpb24gbm90aWZpY2F0aW9uLiBJdCBjb3JyZXNwb25kcyB0byBhIERPTUhpZ2hS
ZXNUaW1lU3RhbXAgdmFsdWUgZXhjZXB0IGZvciB0d28gY2FzZXM6IHBvc2l0aXZlIGluZmluaXR5
IGluZGljYXRlcyB0aGF0IFcgaGFzIG5ldmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDg4NjAwYTY1ZDk4YzYyYjRkNzI5NTY3YmMzYzk4YWVlNThiNzhjODMuLjRm
ZWU4NmVjOGE1MjEwMDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGllbnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4g
ZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZv
aWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogfQogCi1PcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9p
ZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCogbmV3RG9j
dW1lbnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAotT3B0
aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVk
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5k
b2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCkBAIC0zMTcsNyAr
MzE3LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRl
cmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmEKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKLSAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICBt
X2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3VtZW50RHJhZyhkcmFnRGF0YSwgbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0aW9uKTsKICAgICBpZiAobV9kcmFnSGFuZGxp
bmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lICYmIChtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKSkpIHsKICAg
ICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpOwpAQCAtMzkx
LDcgKzM5MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuCiAKICNlbmRpZgogCi1EcmFnSGFu
ZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9u
QWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRpb24pCitEcmFn
SGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0
aW9uQWN0aW9uTWFzaywgc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJhdGlv
bikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlKQogICAgICAgICByZXR1cm4gRHJh
Z0hhbmRsaW5nTWV0aG9kOjpOb25lOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIE9wdGlvblNldDxEcmFn
U291cmNlQWN0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNv
bnN0IEludFBvCiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJv
bGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChk
cmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsKIApAQCAtNjkzLDcgKzY5Myw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1
bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9wZXJh
dGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2sp
CiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRjaCBJRSdzIG9wZXJhdGlvbiBmYWxs
YmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUgcGFnZSBjYWxscyBwcmV2ZW50RGVm
YXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBzZXQgZHJvcEVmZmVjdC4KQEAgLTcx
NCw3ICs3MTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9wZXJh
dGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+CiAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb246OkdlbmVyaWM7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRp
b24pCitib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhLCBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCiB7CiAgICAg
QVNTRVJUKG1fZG9jdW1lbnRVbmRlck1vdXNlKTsKICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZSht
X3BhZ2UubWFpbkZyYW1lKCkpOwpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgT3B0aW9uU2V0PERyYWdTb3Vy
Y2VBY3RpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRyb2xs
ZXI6OmhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxIaXRU
ZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFt
ZSYgc291cmNlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pIGNv
bnN0CiB7CiAgICAgaWYgKCFzb3VyY2UudmlldygpIHx8ICFzb3VyY2UuY29udGVudFJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmgKaW5kZXggNTJiYjQ5MTBkMTdhNjM3NWFmZjI1ODlkMjY4YzhmZjM1ODU2NzE3Ny4u
ZmU0OTczZTk4Zjc0ODBiYmExMzg4MTJlNDAyZGUwODBkYjI1NmM1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgRHJhZ09wZXJhdGlvbiBwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBE
cmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ1VwZGF0ZWQoY29uc3Qg
RHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBlcmZvcm1EcmFnT3BlcmF0aW9u
KGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVk
KCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8
SFRNTEltYWdlRWxlbWVudD4+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyczsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiBkcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVu
dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRT
aXplPiYgaW1hZ2VTaXplcyk7CkBAIC0xMTAsMTEgKzExMCwxMSBAQCBwcml2YXRlOgogICAgIGJv
b2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAg
ICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29uY2x1
ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwotICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7Ci0gICAgT3B0aW9uYWw8RHJh
Z09wZXJhdGlvbj4gb3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdI
YW5kbGluZ01ldGhvZCB0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKLSAgICBi
b29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
Jik7Ci0gICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVw
ZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRo
b2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4sIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBib29sIHRy
eURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4m
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24oY29uc3Qg
RHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgYm9vbCBkcmFnSXNN
b3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGlzQ29weUtl
eURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCopOwogICAgIGJvb2wgc2hvdWxk
VXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29uc3QgSW1hZ2UmKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmLCBF
bGVtZW50JiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhpdFRl
c3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmLCBFbGVtZW50JiwgY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIHZvaWQgZG9JbWFnZURyYWcoRWxlbWVudCYsIGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYsIEZyYW1lJiwgSW50UG9pbnQmLCBjb25zdCBE
cmFnU3RhdGUmLCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOwogICAgIHZvaWQgZG9TeXN0ZW1E
cmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIEZyYW1lJiwg
Y29uc3QgRHJhZ1N0YXRlJiwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9vbCBt
X2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8SFRNTEltYWdlRWxl
bWVudD4+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzOwotICAgIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlOwogfTsKIAogV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc0RyYWdnYWJsZUxpbmsoY29uc3QgRWxlbWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ1N0YXRlLmgKaW5kZXggNzAyNDI1NDMxMDNmNGYxZTFhOWM0YmJjZDcxMTdhYmI4Nzg4Yzkw
Yy4uM2IwZmM5ZTQ1NThhYjg3ZTNhNzBiYzY1M2M4NjIxZjlmYjk3Y2FmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdTdGF0ZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVtZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQgdGhh
dCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUuCiAg
ICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50czsKLSAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFj
dGlvbj4gdHlwZTsgLy8gU2hvdWxkIGJlIE9wdGlvbmFsPD4uIFNlZSBCdWcgMjEzMDg2LgorICAg
IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiB0eXBlOyAvLyBTaG91bGQgYmUgc3RkOjpvcHRp
b25hbDw+LiBTZWUgYnVnIDIxMzA4Ni4KICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJh
bnNmZXI7IC8vIFVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBhMTczZGFhZWIzMDk5MmY5YTljMTY1
YzYwYzVjNzlhOWNjNTI1MjNmLi5mNjE4NWExMjM1Y2ZjZTdiNzQ5MjhhZGU3MzI4YTEwYzNlMjAw
NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgRWRpdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FZGl0b3JDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVS
YW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgPSAwOyAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpID0gMDsKQEAgLTY3LDEz
ICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5n
KGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0
aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNl
cnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRB
Y3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiB0b1JhbmdlLCBBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21S
YW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5
LCBib29sIHN0aWxsU2VsZWN0aW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJldmVh
bEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH07
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1cHByZXNzUGFzc3dvcmRFY2hvKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH07CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUo
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGll
cyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRBcHBseVN0eWxlKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFu
Z2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAw
OwogCkBAIC05NSw5ICs5NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kVXNl
clRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdmNjk2NjIxYTEzOTM5ZDU5NzkzY2Jh
NzhlODVlMjY0MzA0NDEyYjQuLjk0N2M3ZTY5MzAwNGRhZmRlYmMxZjRiYTZjOTMzZTUzYzRiOTM0
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM5NSw4ICszOTUsNyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogICAgIG1fZHJhZ1RhcmdldCA9IG51bGxwdHI7
CiAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICNlbmRpZgotICAg
IG1fbW91c2VQb3NpdGlvbklzVW5rbm93biA9IHRydWU7Ci0gICAgbV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uID0geyB9OworICAgIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiA9IHN0ZDo6bnVsbG9w
dDsKICAgICBtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24gPSB7IH07CiAgICAgbV9tb3Vz
ZVByZXNzTm9kZSA9IG51bGxwdHI7CiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTkz
Miw3ICs5MzEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VE
cmFnKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0
UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7ICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHks
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3Zl
LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RL
bm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgp
KSkpOwogICAgIGRvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgdXBkYXRl
U2VsZWN0aW9uRm9yTW91c2VEcmFnKHJlc3VsdCk7CiB9CkBAIC0xMjk3LDcgKzEyOTYsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxE
aXJlY3Rpb24gZGlyZWN0aW9uLCBTYwogCiBJbnRQb2ludCBFdmVudEhhbmRsZXI6Omxhc3RLbm93
bk1vdXNlUG9zaXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9z
aXRpb247CisgICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQ
b2ludCgpKTsKIH0KIAogUmVmUHRyPEZyYW1lPiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0
VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBoaXRUZXN0UmVz
dWx0KQpAQCAtMTM3NSw3ICsxMzc0LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNv
cklmTmVlZGVkKCkKIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcigpCiB7Ci0gICAg
aWYgKG1fbW91c2VQb3NpdGlvbklzVW5rbm93bikKKyAgICBpZiAoIW1fbGFzdEtub3duTW91c2VQ
b3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LnBhZ2UoKSkgewpAQCAtMTQwMSw3ICsxNDAwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0
ZUN1cnNvcigpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJT
dGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0ZyYW1lU2Nyb2xs
YmFycyB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMo
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmll
dy0+d2luZG93VG9Db250ZW50cygqbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgZG9j
dW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsKIAogICAgIHVwZGF0ZUN1cnNvcigqdmll
dywgcmVzdWx0LCBzaGlmdEtleSk7CkBAIC0xNDE1LDcgKzE0MTQsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYgdmlldywgY29uc3QgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCBibwogICAgIH0KIH0KIAotT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hpZnRLZXkpCitz
dGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNoaWZ0S2V5KQogewogICAgIGlmIChtX3Jlc2l6ZUxh
eWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9kZSgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTk0OSw3ICsxOTQ4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUK
ICNlbmRpZgogCiAgICAgaWYgKG1fc3ZnUGFuKSB7Ci0gICAgICAgIGRvd25jYXN0PFNWR0RvY3Vt
ZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRv
d1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgICAgIGRvd25jYXN0
PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3
KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKElu
dFBvaW50KCkpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjExNSw3ICsy
MTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3UKIAogICAgIGlmIChtX3N2Z1Bhbikgewog
ICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAgICAgICBkb3duY2FzdDxTVkdEb2N1bWVudD4o
Km1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOworICAgICAgICBkb3duY2FzdDxTVkdE
b2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2lu
dCgpKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyOTcsNyArMjI5Niw3
IEBAIHN0YXRpYyBib29sIHRhcmdldElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1l
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
Y29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJh
Z09wZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnRE
cm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImNvcHkiKQogICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbjo6Q29weTsKQEAgLTIzMDgsNyArMjMwNyw3IEBAIHN0YXRpYyBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24o
Y29uc3QgU3RyCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBj
b252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oT3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gb3BlcmF0aW9uKQorc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJv
cFpvbmVPcGVyYXRpb24oc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7
CiAgICAgaWYgKG9wZXJhdGlvbikgewogICAgICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKQEAg
LTIzNDAsNyArMjMzOSw3IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQs
IERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcg
a2V5d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRk
cm9wem9uZUF0dHIpLCB0cnVlKTsKICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAg
ICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252ZXJ0RHJvcFpvbmVP
cGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFkcmFnT3BlcmF0aW9uKQpAQCAtMjgwOCw3ICsyODA3LDcgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBjb24KICAgICAKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25Jbldp
bmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewotICAgIHJldHVybiBtX2xhc3RL
bm93bk1vdXNlUG9zaXRpb247CisgICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52
YWx1ZV9vcihJbnRQb2ludCgpKTsKIH0KICAgICAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKQEAgLTMwNTgsNyArMzA1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoCiAgICAg
cmV0dXJuIHNjcm9sbGFibGVBcmVhLmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxF
dmVudCwgZ2VzdHVyZVN0YXRlKTsKIH0KIAotT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5k
bGluZykKK3N0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFuZGxl
cjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICNpZiBF
TkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgaWYgKCFtX3doZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBldmVudEhhbmRsaW5nLmNvbnRh
aW5zKEV2ZW50SGFuZGxpbmc6OkRpc3BhdGNoZWRUb0RPTSkpCkBAIC0zMjg3LDcgKzMyODYsNyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCkKICAg
ICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX21vdXNl
UG9zaXRpb25Jc1Vua25vd24pCisgICAgaWYgKCFtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsK
QEAgLTMzMTQsNyArMzMxMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaEZha2VNb3Vz
ZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIGlmICghdmll
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFxdWFkLmNvbnRhaW5zUG9pbnQodmlldy0+
d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSkKKyAgICBpZiAoIXF1
YWQuY29udGFpbnNQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQ
b3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpKQogICAgICAgICByZXR1cm47CiAKICAgICBk
aXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKQEAgLTMzNDMsNyArMzM0Miw3IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKCkKICAgICBib29s
IGFsdEtleTsKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojpn
ZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5
KTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZUV2ZW50KG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbiwgbV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBOb0J1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CisgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZU1vdmVFdmVudChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3Io
SW50UG9pbnQoKSksIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwgTm9CdXR0b24sIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1l
dGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1vdXNlTW92ZWQoZmFrZU1v
dXNlTW92ZUV2ZW50KTsKIH0KICNlbmRpZiAvLyAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBA
IC0zMzY5LDcgKzMzNjgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKCkK
IAogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKLSAgICAgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uKSk7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgp
KSkpOwogICAgICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgICAgICBkb2N1
bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgICAgICAgICAgZG9jdW1lbnQtPnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUoaGl0VHlwZSwgcmVzdWx0LnRhcmdldEVsZW1lbnQoKSk7CkBA
IC0zODY3LDcgKzM4NjYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICAg
ICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gZHJhZ2dlZENvbnRlbnRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBkcmFnZ2VkQ29udGVudFJhbmdlOwogICAgIGlmIChkcmFnU3RhdGUoKS50eXBlLmNvbnRhaW5z
KERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikpCiAgICAgICAgIGRyYWdnZWRDb250ZW50UmFu
Z2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgZWxzZQpAQCAtNDU3Miw3ICs0NTcxLDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQK
IAogdm9pZCBFdmVudEhhbmRsZXI6OnNldExhc3RLbm93bk1vdXNlUG9zaXRpb24oY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBtX21vdXNlUG9zaXRpb25Jc1Vua25vd24g
PSBmYWxzZTsKICAgICBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24gPSBldmVudC5wb3NpdGlvbigp
OwogICAgIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmZmI3MzY5NDUwZTQ5
MzllYzdiY2FlMmRiYTdiYTkyODVmOGY2NzFiLi5lOTY2MTM4YTFkZGY1ODg5YzZhMjVhNjg2YzZl
OGE3YWFkNTBlODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTE2Niw3ICsx
NjYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJh
Z1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAg
ICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9wZXJhdGlvbk1hc2s7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+PiBvcGVyYXRpb25NYXNr
OwogICAgIH07CiAgICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5n
RmlsZXMpOwogICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKQEAgLTM0MiwxMCArMzQyLDEwIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbFNlbGVjdGlvbkF1dG9zY3JvbGwoKTsKICNl
bmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3Io
Y29uc3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYs
IGJvb2wgc2hpZnRLZXkpOwogCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIE9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3Rh
cnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOwotICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1
cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYs
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIHBsYXRmb3JtQ29tcGxldGVQ
bGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3Qg
V2lkZ2V0JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIApAQCAtNTY3LDkgKzU2
Nyw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0U2l6ZSBtX29mZnNldEZyb21SZXNpemVDb3JuZXI7
IC8vIEluIHRoZSBjb29yZHMgb2YgbV9yZXNpemVMYXllci4KICAgICAKICAgICBpbnQgbV9jbGlj
a0NvdW50IHsgMCB9OwotICAgIGJvb2wgbV9tb3VzZVBvc2l0aW9uSXNVbmtub3duIHsgdHJ1ZSB9
OyAvLyBGSVhNRTogVXNlIE9wdGlvbmFsPD4gaW5zdGVhZC4KIAotICAgIEludFBvaW50IG1fbGFz
dEtub3duTW91c2VQb3NpdGlvbjsgLy8gU2FtZSBjb29yZGluYXRlcyBhcyBQbGF0Zm9ybU1vdXNl
RXZlbnQ6OnBvc2l0aW9uKCkuCisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gbV9sYXN0S25v
d25Nb3VzZVBvc2l0aW9uOyAvLyBTYW1lIGNvb3JkaW5hdGVzIGFzIFBsYXRmb3JtTW91c2VFdmVu
dDo6cG9zaXRpb24oKS4KICAgICBJbnRQb2ludCBtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRp
b247CiAgICAgSW50UG9pbnQgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uOwogICAgIFdhbGxU
aW1lIG1fbW91c2VEb3duVGltZXN0YW1wOwpAQCAtNTk3LDcgKzU5Niw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBPcHRpb25hbDxXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZT4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCkBAIC02NDEsNyArNjQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hv
dWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQXV0
b3Njcm9sbGluZyB7IGZhbHNlIH07CiAgICAgSW50UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9z
aXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwotICAgIE9wdGlvbmFsPEludFBv
aW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmll
d0Nvb3JkaW5hdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IG1faW5pdGlhbFRhcmdl
dEF1dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggZGJmNjM3Y2ZiMjk4
MDY2MWFhNjc3MGE3OGE0NDdhZmVkMDM1OWE4Ny4uZmVhODIyZjMwMWYwNzk3YWMyYWI1NTcyYzhh
NzQ1NjQyN2Y4ZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTMwOSw4
ICszMDksOCBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKCkKICAgICAgICAg
ICAgIG1fZGlzY2FyZFRyYWlsaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxpbmVMZW5ndGg7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaWVsZExlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGluZUxl
bmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGg7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHBvc2l0aW9uOyAhbGluZUxlbmd0aCAmJiBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fcmVjZWl2ZUJ1ZmZlcltpXSkgewogICAgICAg
ICAgICAgY2FzZSAnOic6CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6cGFy
c2VFdmVudFN0cmVhbSgpCiAgICAgICAgIG1fcmVjZWl2ZUJ1ZmZlci5yZW1vdmUoMCwgcG9zaXRp
b24pOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBsaW5l
TGVuZ3RoKQordm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQg
cG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBs
aW5lTGVuZ3RoKQogewogICAgIGlmICghbGluZUxlbmd0aCkgewogICAgICAgICBpZiAoIW1fZGF0
YS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggY2UyNTMwZmMxM2U5
ZmEyNDExYjkyYmUxZDdhNmYwY2U0ODMxNTEwYS4uMTdmYjVmYzFkMzk3MjM3ODY3OTk1OThiZmQ4
ZDY1ODgzOTA3NDY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtMTAwLDcgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVJlY29ubmVjdCgpOwogICAgIHZvaWQg
YWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbSgpOwot
ICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFs
PHVuc2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCk7CisgICAgdm9pZCBw
YXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRXZlbnQoKTsKIAogICAgIGJvb2wgcmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNWJiZjUzYmU4Nzky
ODRlZWJlODI5OTNhM2NmMzYyYzU2NzFiMGQ4Ny4uMWFmMjdkODRmMzVhZjBkM2JhMWZiOWRiYWZh
MzFlNDNjNjY2MTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcxMiwxMiArNzEyLDEyIEBA
IHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24oKQogICAg
ICAgICBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkod29ybGQsIHNjcmlwdC5nZXQoKSk7CiB9
CiAKLU9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBGcmFtZTo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1lOjpwYWdlSUQoKSBjb25zdAogewogICAgIHJl
dHVybiBsb2FkZXIoKS5wYWdlSUQoKTsKIH0KIAotT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBG
cmFtZTo6ZnJhbWVJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRnJh
bWU6OmZyYW1lSUQoKSBjb25zdAogewogICAgIHJldHVybiBsb2FkZXIoKS5mcmFtZUlEKCk7CiB9
CkBAIC04NDUsNyArODQ1LDcgQEAgRG9jdW1lbnQqIEZyYW1lOjpkb2N1bWVudEF0UG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50KQogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyAmcmVz
dWx0LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQorc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIGZyYW1lUG9pbnQpCiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZv
clBvaW50KGZyYW1lUG9pbnQpOwogCkBAIC04NjYsNyArODY2LDcgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91
bmRDb2xvciwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgIGNv
bnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxl
Q29udGVudFJlY3QsCiAgICAgYm9vbCB1c2VGaXhlZExheW91dCwgU2Nyb2xsYmFyTW9kZSBob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jpem9udGFsTG9jaywKICAgICBTY3JvbGxiYXJN
b2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9vbCB2ZXJ0aWNhbExvY2spCkBAIC05NTYsNyAr
OTU2LDcgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmbG9hdCBwYWdl
Wm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21GYWN0b3IKICAgICBpZiAoaXM8U1ZHRG9jdW1lbnQ+
KCpkb2N1bWVudCkgJiYgIWRvd25jYXN0PFNWR0RvY3VtZW50PigqZG9jdW1lbnQpLnpvb21BbmRQ
YW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFNjcm9sbFBvc2l0
aW9uPiBzY3JvbGxQb3NpdGlvbkFmdGVyWm9vbWVkOworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xs
UG9zaXRpb24+IHNjcm9sbFBvc2l0aW9uQWZ0ZXJab29tZWQ7CiAgICAgaWYgKG1fcGFnZVpvb21G
YWN0b3IgIT0gcGFnZVpvb21GYWN0b3IpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2Nyb2xs
IHBvc2l0aW9uIHdpdGggc2NhbGUgYWZ0ZXIgem9vbWluZyB0byBzdGF5IHRoZSBzYW1lIHBvc2l0
aW9uIGluIHRoZSBjb250ZW50LgogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gdGhpcy0+
dmlldygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNmY5ZjJlZDk0MjJiYjM5YzQ0ZmEzMzk3Y2U4
ODY0NGU4ZjcxMmQwYy4uMzdiMWFmMjExZTM0MDk3NGUwYzUyN2JlZThiMTczYjY2NjhlZWUwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5
bGUsIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3
KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmll
dyhjb25zdCBJbnRTaXplJiwgY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3Is
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJ
bnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0LAogICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1v
ZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAg
IFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNl
KTsKQEAgLTE3OCw4ICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgU2NyaXB0Q29udHJvbGxlciYgc2Ny
aXB0KCkgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBTY3JpcHRDb250cm9sbGVyJiBz
Y3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVy
ZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVuZGVyIHRyZWUgZm9yIHRoZSBkb2N1bWVudCBj
b250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJXaWRnZXQq
IG93bmVyUmVuZGVyZXIoKSBjb25zdDsgLy8gUmVuZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRoYXQg
Y29udGFpbnMgdGhpcyBmcmFtZS4KQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpIGNvbnN0OwogICAgIERvY3VtZW50KiBkb2N1bWVudEF0
UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQ
b2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24mLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlz
dGFuY2VGcm9tU3RhcnRPZkNlbGwpOwogICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJl
c3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCAyZjRjZTEzNjYxYzc2YTBjMzg5MzlmMDFjZDI1ZDIzOWY3ZDg0YjEx
Li4yYTk1NmMyOWEzNzRlMGIxZDg3MzRjMWM3ZTg5ZWQ0ODRhYWVlZjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlY2Fs
Y3VsYXRlQmFzZUJhY2tncm91bmRDb2xvcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdXNl
c0RhcmtBcHBlYXJhbmNlID0gdXNpbmdEYXJrQXBwZWFyYW5jZTsKLSAgICBPcHRpb25hbDxDb2xv
cj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRD
b2xvcjsKICAgICBpZiAobV9pc1RyYW5zcGFyZW50KQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgdXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CkBAIC0xNjg4LDcgKzE2ODgsNyBAQCB2b2lkIEZy
YW1lVmlldzo6c2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50IG9yaWdpbiwg
VHJpZ2dlckxheW91dE9yTgogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QsIFRyaWdnZXJMYXlv
dXRPck5vdCBsYXlvdXRUcmlnZ2VyaW5nKQordm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdw
b3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdCwgVHJpZ2dlckxh
eW91dE9yTm90IGxheW91dFRyaWdnZXJpbmcpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRW
aWV3cG9ydE92ZXJyaWRlUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcwNiw3ICsxNzA2LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFs
PExheW91dFJlY3Q+IHJlY3QsIFRyaWdnZXIKICAgICAgICAgc2V0Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHNOZWVkTGF5b3V0KCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRWaXN1YWxWaWV3
cG9ydE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnNldFZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVj
dD4gcmVjdCkKIHsKICAgICBtX3Zpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gcmVjdDsKIH0K
QEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3NpdGlu
Z0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tn
cm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikK
K3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3Qgc3RkOjpv
cHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQogICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29s
b3IudmFsdWVfb3IoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVl
QXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOwpAQCAt
NDkzMCwzMCArNDkzMCwzMCBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogICAgIHJldHVybiBw
YXJlbnRQb2ludDsKIH0KIAotZmxvYXQgRnJhbWVWaWV3Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2Fs
ZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK2Zsb2F0IEZyYW1l
Vmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3Ioc3RkOjpvcHRpb25hbDxmbG9hdD4g
ZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3Nl
ZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFjdG9yKCkuIAogICAgIHJldHVybiBl
ZmZlY3RpdmVab29tLnZhbHVlX29yKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgp
LmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAotZmxvYXQgRnJhbWVWaWV3OjphYnNvbHV0ZVRvRG9j
dW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK2Zs
b2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3Ioc3RkOjpvcHRpb25h
bDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29t
IGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFjdG9yKCkuIAogICAg
IHJldHVybiAxIC8gZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9vbSk7
CiB9CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRS
ZWN0IHJlY3QsIE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAorRmxvYXRSZWN0
IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJlY3QgcmVjdCwgc3RkOjpv
cHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICByZWN0LnNjYWxlKGFi
c29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKGVmZmVjdGl2ZVpvb20pKTsKICAgICByZXR1cm4g
cmVjdDsKIH0KIAotRmxvYXRQb2ludCBGcmFtZVZpZXc6OmFic29sdXRlVG9Eb2N1bWVudFBvaW50
KEZsb2F0UG9pbnQgcCwgT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CitGbG9h
dFBvaW50IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoRmxvYXRQb2ludCBwLCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAogewogICAgIHJldHVybiBw
LnNjYWxlZChhYnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihlZmZlY3RpdmVab29tKSk7CiB9
CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCBy
ZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK0Zsb2F0UmVjdCBGcmFt
ZVZpZXc6OmFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudFRvQ2xp
ZW50UmVjdChhYnNvbHV0ZVRvRG9jdW1lbnRSZWN0KHJlY3QsIGVmZmVjdGl2ZVpvb20pKTsKIH0K
QEAgLTUxMzcsNyArNTEzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQm
IHdpZGdldCkKICAgICBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwogfQogCi1ib29s
IEZyYW1lVmlldzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBn
ZXN0dXJlU3RhdGUpCitib29sIEZyYW1lVmlldzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGlu
Zyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICAvLyBOb3RlIHRoYXQg
dG8gYWxsb3cgZm9yIHJ1YmJlci1iYW5kIG92ZXItc2Nyb2xsIGJlaGF2aW9yLCBldmVuIG5vbi1z
Y3JvbGxhYmxlIHZpZXdzCiAgICAgLy8gc2hvdWxkIGhhbmRsZSB3aGVlbCBldmVudHMuCkBAIC01
NDYyLDcgKzU0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6bm90aWZ5V2lkZ2V0cyhXaWRnZXROb3Rp
ZmljYXRpb24gbm90aWZpY2F0aW9uKQogICAgICAgICB3aWRnZXQtPm5vdGlmeVdpZGdldChub3Rp
ZmljYXRpb24pOwogfQogCi12b2lkIEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlv
bmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBGcmFtZVZpZXc6OnNldFZpZXdF
eHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogewog
ICAgIGlmIChtX3ZpZXdFeHBvc2VkUmVjdCA9PSB2aWV3RXhwb3NlZFJlY3QpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDAyYTkwNjhjN2MzNzAxZDFmYjMzZDNm
NWMwODMyMjJkZmFiYWYxOTEuLmI2OTEyN2ZkMWI2NGMyYjQxMmRkMjNhOGRjMjg4NGI0YjYzM2Ew
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3Qgc3RkOjpvcHRpb25h
bDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVtIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lICAgICAgICAg
ID0gMCwKQEAgLTI3MywxMSArMjczLDExIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBJZiBzZXQs
IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCAibV9sYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2l6ZSBvZiBp
bml0aWFsIGNvbnRhaW5pbmcgYmxvY2siIHJlY3QuCiAgICAgLy8gVXNlZCB3aXRoIGRlbGVnYXRl
ZCBzY3JvbGxpbmcgKGkuZS4gaU9TKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+LCBUcmlnZ2VyTGF5b3V0
T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6Olllcyk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0UmVj
dD4gbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXlvdXRW
aWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+LCBUcmlnZ2VyTGF5
b3V0T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6Olllcyk7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0PiBsYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Q7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4pOwotICAg
IE9wdGlvbmFsPExheW91dFJlY3Q+IHZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV92aXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdDsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxMYXlv
dXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB2aXN1YWxWaWV3cG9ydE92
ZXJyaWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Q7
IH0KIAogICAgIC8vIFRoZXNlIGFyZSBpbiBkb2N1bWVudCBjb29yZGluYXRlcywgdW5hZmZlY3Rl
ZCBieSBwYWdlIHNjYWxlIChidXQgYWZmZWN0ZWQgYnkgem9vbWluZykuCiAgICAgV0VCQ09SRV9F
WFBPUlQgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdDsKQEAgLTQ5MywxMyAr
NDkzLDEzIEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBJbnRQb2ludCBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKLSAgICBmbG9h
dCBkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZl
Wm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgZmxvYXQgYWJzb2x1dGVUb0RvY3VtZW50
U2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OworICAgIGZsb2F0IGRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIGZs
b2F0IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVm
ZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9h
dD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChGbG9hdFBvaW50LCBPcHRpb25h
bDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGFic29sdXRlVG9Eb2N1bWVudFBvaW50KEZsb2F0
UG9pbnQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogCi0gICAgRmxvYXRSZWN0IGFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCwg
T3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAg
IEZsb2F0UmVjdCBhYnNvbHV0ZVRvQ2xpZW50UmVjdChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRmxvYXRT
aXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKQEAgLTU2OCw3
ICs1NjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBvcnRz
IHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9uIE1h
YyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNjcm9s
bGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCiAgICAgLy8gd2UgbmVlZCB0aGlzIGZ1
bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3JvbGwgb3Vyc2VsdmVzLgotICAgIGJvb2wgaGFu
ZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIGZpbmFsOworICAgIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlVGVzdGluZ0VuYWJsZWQoYm9vbCk7CiAKQEAg
LTY0MCw4ICs2NDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gb2YgdGhlIHZpZXcgaXMgYWN0dWFsbHkg
ZXhwb3NlZCBvbiBzY3JlZW4gKHRha2luZyBpbnRvIGFjY291bnQKICAgICAvLyBjbGlwcGluZyBi
eSBvdGhlciBVSSBlbGVtZW50cyksIHdoZXJlYXMgdmlzaWJsZUNvbnRlbnRSZWN0IGlzCiAgICAg
Ly8gaW50ZXJuYWwgdG8gV2ViQ29yZSBhbmQgZG9lc24ndCByZXNwZWN0IHRob3NlIHRoaW5ncy4K
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9h
dFJlY3Q+KTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3
RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCB1
cGRhdGVTbmFwT2Zmc2V0cygpIGZpbmFsOwpAQCAtODQzLDggKzg0Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KTsKIAog
ICAgIHN0cnVjdCBPdmVycmlkZVZpZXdwb3J0U2l6ZSB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4g
d2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gd2lkdGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAKICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE92ZXJyaWRlVmlld3BvcnRTaXplJiByaHMpIGNv
bnN0IHsgcmV0dXJuIHJocy53aWR0aCA9PSB3aWR0aCAmJiByaHMuaGVpZ2h0ID09IGhlaWdodDsg
fQogICAgIH07CkBAIC04OTgsMTAgKzg5OCwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlOwogCiAgICAgTGF5
b3V0UG9pbnQgbV9sYXlvdXRWaWV3cG9ydE9yaWdpbjsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0
PiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+
IG1fdmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Q7IC8vIFVzZWQgd2hlbiB0aGUgaU9TIGtleWJv
YXJkIGlzIHNob3dpbmcuCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBtX2xheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gbV92aXN1
YWxWaWV3cG9ydE92ZXJyaWRlUmVjdDsgLy8gVXNlZCB3aGVuIHRoZSBpT1Mga2V5Ym9hcmQgaXMg
c2hvd2luZy4KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogCiAgICAgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+IG1fcGFpbnRCZWhhdmlvcjsKIApAQCAtOTE2LDEwICs5MTYs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3QgeyBmYWxzZSB9OwogCiAgICAgSW50UmVjdCBtX2N1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fY3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50Owor
ICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9jdXN0b21TaXplRm9yUmVzaXplRXZlbnQ7CiAj
ZW5kaWYKIAotICAgIE9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBtX292ZXJyaWRlVmll
d3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+IG1fb3Zl
cnJpZGVWaWV3cG9ydFNpemU7CiAKICAgICAvLyBUaGUgdmlldyBzaXplIHdoZW4gYXV0b3Npemlu
Zy4KICAgICBJbnRTaXplIG1fYXV0b1NpemVDb25zdHJhaW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXggNDMwMTg0OWRkN2Q2ZTE3ZDQ3MGZmYmEx
ODA4NmIxNDQzMjlhNWRjOS4uNjJkMGU2N2Q1NWY5MDJhNjA4YzFjYjc0NjQ4NTJkOWIyMjZkODAz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0z
Nyw3ICszNyw3IEBAIHN0cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewogICAgIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVu
dGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
QEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4g
R2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJ
RCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRDsKICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
bG9iYWxXaW5kb3dJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRv
d0lkZW50aWZpZXIuaAppbmRleCA4NjI5MzcwNTlhNDM0Y2ZkMDExMmMyM2EyM2IzZGMwNjBjY2Nm
NTM2Li5jMDQ2N2Q3YzdkYzA4YTZiYjZiYmM5MGZhOTQyNzQ5OGJhNmNiYzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBA
QCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllciB7CiAgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbG9i
YWxXaW5kb3dJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2Jh
bFdpbmRvd0lkZW50aWZpZXImIGEsIGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGIpCkBA
IC02NiwxNCArNjYsMTQgQEAgdm9pZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVy
PiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2luZG93SWRlbnRp
Zmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50aWZp
ZXI+IHdpbmRvd0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOwog
ICAgIGlmICghd2luZG93SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggNzMx
Y2MwNmM5YzE2YWQ1MDI5OWY3OWZiMmEwYjRiODE2ZTFkZDFhYi4uMTRiYWVhMGRmZTQzNTZiYjk3
OTU4ZWY3MzRkMGJjM2RkZTM2YTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEludGVyc2VjdGlvbk9i
c2VydmVyOjpyb290RGVzdHJveWVkKCkKICAgICBtX3Jvb3QgPSBudWxscHRyOwogfQogCi1PcHRp
b25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3dU
aW1lc3RhbXAoKSBjb25zdAorc3RkOjpvcHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+
IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3dUaW1lc3RhbXAoKSBjb25zdAogewogICAgIGlmICgh
bV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAppbmRleCBkYmYzN2ExNTU1YmM4ODQ2OWNmZmJh
MTFiYWQ5NDkzY2ZjZTVhNmIxLi5mNTA5ZDM1NjUxOGQyMTc0YTkwYzUwMzlkMTE2YjM4MTBjN2Rm
Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiAKIHN0cnVjdCBJbnRlcnNlY3Rpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbiB7CiAgICAgV2Vha1B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlcj4g
b2JzZXJ2ZXI7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c1RocmVzaG9sZEluZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c1RocmVzaG9sZEluZGV4OwogfTsKIAog
c3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSB7CkBAIC02Myw3ICs2Myw3IEBAIHN0cnVj
dCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgewogY2xhc3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcnNlY3Rpb25PYnNlcnZlcj4sIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlcj4gewog
cHVibGljOgogICAgIHN0cnVjdCBJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQ
dHI8RWxlbWVudD4sIFJlZlB0cjxEb2N1bWVudD4+PiByb290OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8RG9jdW1lbnQ+Pj4gcm9vdDsKICAg
ICAgICAgU3RyaW5nIHJvb3RNYXJnaW47CiAgICAgICAgIFZhcmlhbnQ8ZG91YmxlLCBWZWN0b3I8
ZG91YmxlPj4gdGhyZXNob2xkOwogICAgIH07CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc09ic2VydmF0aW9uVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2YXRp
b25UYXJnZXRzLnNpemUoKTsgfQogICAgIHZvaWQgcm9vdERlc3Ryb3llZCgpOwogCi0gICAgT3B0
aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzPiBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gbm93VGltZXN0YW1wKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5PiYmKTsKICAgICB2b2lkIG5vdGlmeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAppbmRleCBmNzAzYjJmOWIyMWMxZGM5MWFm
OTYwOTVjYjlkNGQ0Y2I1YmYwNDc4Li5iNzk5NjQyNjg0YzQ3MTk2Mjg2MTQxNDViYzdhODNjYTNl
OWRiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVy
RW50cnkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAg
ICAgICAgIGRvdWJsZSB0aW1lOwotICAgICAgICBPcHRpb25hbDxET01SZWN0SW5pdD4gcm9vdEJv
dW5kczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxET01SZWN0SW5pdD4gcm9vdEJvdW5kczsKICAg
ICAgICAgRE9NUmVjdEluaXQgYm91bmRpbmdDbGllbnRSZWN0OwogICAgICAgICBET01SZWN0SW5p
dCBpbnRlcnNlY3Rpb25SZWN0OwogICAgICAgICBkb3VibGUgaW50ZXJzZWN0aW9uUmF0aW87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0
ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5o
CmluZGV4IDU1ZWEwMmFjZWNmYzgwZTdlZmQ2MWY1YmJhOWY0MDhiMDVkZTNkNTQuLmFlMmY4NmM2
NTI1ODRkOGE4MWVmZTM4NTljZjJmNzA1NDQ3NGNmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCkBAIC00NCw3ICs0NCw3IEBA
IHN0cnVjdCBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtIHsKICAgICBWZWN0b3I8TWVkaWFD
b250cm9sc0NvbnRleHRNZW51SXRlbT4gY2hpbGRyZW47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OCwxMCArNTgsMTAgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lZGlhQ29udHJvbHND
b250ZXh0TWVudUl0ZW0+IE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVt
PiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0eXBlPiBuYW1l
OyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1l
OyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjNTQ4MzM5MWRlYWNiZTZmNjgzZTI0YjI5Njgz
MDdjOGQ4MGIzZGZlLi45ZGFiZTE1OTZjNDFhNzNlZDBlN2Q1NjU5ZDMyYmJiOWM2YzUyYmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBOYXZp
Z2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VVJMPiBz
aGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU2hhcmVEYXRhJiBkYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJMPiBzaGFyZWFi
bGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
U2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChkYXRhLnVybC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE5hdmlnYXRvcjo6
c2hhcmUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlZjxEZWZl
cnJlZFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VVJMPiB1cmwg
PSBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoZG9jdW1lbnQsIGRhdGEpOworICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiB1cmwgPSBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoZG9jdW1lbnQsIGRhdGEp
OwogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRh
LAogICAgICAgICB1cmwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5OWJhMzkyNmM0YWJlODdmNmE0
MGMxZGQyOWY2Y2FhODg1NGM2YzViLi43YTllOWNjYjJiYWRjOTkyYzE2NjU4NjNkMmEyNzU5NjM0
YTIwNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCBWaWV3cG9ydEFy
Z3VtZW50cyBQYWdlOjp2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIG1haW5G
cmFtZSgpLmRvY3VtZW50KCkgPyBtYWluRnJhbWUoKS5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3Vt
ZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsKIH0KIAotdm9pZCBQYWdlOjpzZXRPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmll
d3BvcnRBcmd1bWVudHMpCit2b2lkIFBhZ2U6OnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMo
Y29uc3Qgc3RkOjpvcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4mIHZpZXdwb3J0QXJndW1lbnRz
KQogewogICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50cyA9PSBtX292ZXJyaWRlVmlld3BvcnRBcmd1
bWVudHMpCiAgICAgICAgIHJldHVybjsKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFBhZ2U6OnNo
b3dBbGxQbHVnaW5zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBPcHRp
b25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6
OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+ICBQYWdlOjp0YWtlQW55
TWVkaWFDYW5TdGFydExpc3RlbmVyKCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewog
ICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpAQCAtNzczLDcgKzc3Myw3IEBAIGF1dG8g
UGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IFBhZ2U6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlv
bnMpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJl
bmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTkwLDcgKzExOTAsNyBAQCB2
b2lkIFBhZ2U6OnNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKQogICAgIHNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4g
bm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdl
KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNv
bmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgaWYgKGRpc3BsYXlJRCA9PSBtX2Rp
c3BsYXlJRCAmJiBub21pbmFsRnJhbWVzUGVyU2Vjb25kID09IG1fZGlzcGxheU5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTEyOTEsNyArMTI5MSw3IEBAIGJvb2wg
UGFnZTo6aXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSBjb25zdAogICAgIHJldHVybiAhaXNVdGlsaXR5
UGFnZSgpICYmIG5vblV0aWxpdHlQYWdlQ291bnQgPT0gMTsKIH0KIAotdm9pZCBQYWdlOjpzZXRM
b3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+IGlzRW5h
YmxlZCkKK3ZvaWQgUGFnZTo6c2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGlu
ZyhzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRW5hYmxlZCkKIHsKICAgICAvLyBSZW1vdmUgVGhyb3R0
bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIHNvIGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZSgpIGNh
biBkbyBpdHMgd29yay4KICAgICBtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGlu
Zy5yZW1vdmUoVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlKTsKQEAgLTE4MDgsNyArMTgw
OCw3IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCkKICAgICB9KTsKIH0K
IAotT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBQYWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRh
dGVGcmFtZXNQZXJTZWNvbmQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IFBhZ2U6OnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChtX3Rocm90dGxpbmdSZWFzb25z
LCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kLCBzZXR0aW5ncygpLnByZWZlclBhZ2VS
ZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxlZCgpKTsKIH0KQEAgLTMyMzAsNyArMzIzMCw3
IEBAIGJvb2wgUGFnZTo6dXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZv
aWQgUGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1
ZU92ZXJyaWRlKQordm9pZCBQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gdmFsdWVPdmVycmlkZSkKIHsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9T
VVBQT1JUKQogICAgIGlmICh2YWx1ZU92ZXJyaWRlID09IG1fdXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTE3YTFhZDc2OWQ5NGNiMGVjMzUxNjljMWRmMDkwZDc2
OTU0YTM5Mi4uNjU0ODMzYmJlOTMzMzIxZTkxYmVjYzFlZGM5MmVjYzFmMDVjNGFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKQEAgLTI1MCw4ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IGRpc2FibGVkQWRhcHRhdGlvbnMoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50
cygpIGNvbnN0OwogCi0gICAgY29uc3QgT3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+JiBvdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYpOworICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+JiBvdmVycmlkZVZpZXdwb3J0QXJndW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAKICAgICBzdGF0aWMgdm9pZCByZWZy
ZXNoUGx1Z2lucyhib29sIHJlbG9hZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGx1Z2luRGF0YSYg
cGx1Z2luRGF0YSgpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBzZWFyY2hSYW5nZSwgRmluZE9wdGlvbnMpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmco
Y29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHNlYXJjaFJh
bmdlLCBGaW5kT3B0aW9ucyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb3VudEZp
bmRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBtYXJrQWxsTWF0Y2hlc0ZvclRleHQo
Y29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGJvb2wgc2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm9N
YXRjaEFmdGVyVXNlclNlbGVjdGlvbiBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyB0ZXh0IGFmdGVy
IHRoZSB1c2VyIHNlbGVjdGlvbi4KICAgICBzdHJ1Y3QgTWF0Y2hpbmdSYW5nZXMgewogICAgICAg
ICBWZWN0b3I8U2ltcGxlUmFuZ2U+IHJhbmdlczsKLSAgICAgICAgaW50IGluZGV4Rm9yU2VsZWN0
aW9uIHsgMCB9OyAvLyBGSVhNRTogQ29uc2lkZXIgT3B0aW9uYWw8dW5zaWduZWQ+IG9yIHVuc2ln
bmVkIGZvciB0aGlzIGluc3RlYWQuCisgICAgICAgIGludCBpbmRleEZvclNlbGVjdGlvbiB7IDAg
fTsgLy8gRklYTUU6IENvbnNpZGVyIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG9yIHVuc2lnbmVk
IGZvciB0aGlzIGluc3RlYWQuCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBOb01h
dGNoQWZ0ZXJVc2VyU2VsZWN0aW9uID0gLTE7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWF0Y2hpbmdS
YW5nZXMgZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhDb3VudCk7CkBAIC00MjIsMTQgKzQyMiwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRJbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKGZsb2F0KTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOwotICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIHZvaWQgd2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1Bl
clNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KLSAgICBPcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZDsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7IH0KIAogICAgIC8vIFRo
aXMgY2FuIHJldHVybiBudWxsb3B0IGlmIHRocm90dGxpbmcgcmVhc29ucyByZXN1bHQgaW4gYSBm
cmVxdWVuY3kgbGVzcyB0aGFuIG9uZSwgaW4gd2hpY2ggY2FzZQogICAgIC8vIHByZWZlcnJlZFJl
bmRlcmluZ1VwZGF0ZUludGVydmFsIHByb3ZpZGVzIHRoZSBmcmVxdWVuY3kuCiAgICAgLy8gRklY
TUU6IEhhdmUgYSBzaW5nbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgVmFyaWFudDw+LgotICAg
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlRnJhbWVz
UGVyU2Vjb25kKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHBy
ZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1BlclNlY29uZCgpIGNvbnN0OwogICAgIFNlY29u
ZHMgcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwoKSBjb25zdDsKIAogICAgIGZsb2F0
IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9CkBA
IC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJm
YWNlTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3VzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVs
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdl
KGJvb2wgdXNlRGFya0FwcGVhcmFuY2UsIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2
ZWwpOwogICAgIGJvb2wgZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4g
bV91c2VEYXJrQXBwZWFyYW5jZTsgfQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
ICAgICBmbG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0
b3NpemluZ1dpZHRoOyB9CkBAIC01MjQsNyArNTI0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgY29uc3QgT3B0aW9uYWw8QXBwbGlj
YXRpb25NYW5pZmVzdD4mIGFwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25zdCB7IHJldHVybiBtX2Fw
cGxpY2F0aW9uTWFuaWZlc3Q7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9u
TWFuaWZlc3Q+JiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNh
dGlvbk1hbmlmZXN0OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JE
SU5BVE9SKQpAQCAtNzg3LDExICs3ODcsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wgZGlzYWJsZWQpIHsgbV9yZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yID0gZGlzYWJsZWQ7IH0KIAotICAgIE9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9Ci0g
ICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50
VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRsaW5nKSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRF
dmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRs
aW5nQmVoYXZpb3I+IHRocm90dGxpbmcpIHsgbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlID0gdGhyb3R0bGluZzsgfQogCi0gICAgT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IGNv
bXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUG9s
aWN5T3ZlcnJpZGU7IH0KLSAgICB2b2lkIHNldENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0
aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGljeSkgeyBtX2NvbXBvc2l0aW5nUG9saWN5T3Zl
cnJpZGUgPSBwb2xpY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW5nUG9saWN5PiBj
b21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1Bv
bGljeU92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGljeSkgeyBtX2NvbXBvc2l0aW5nUG9s
aWN5T3ZlcnJpZGUgPSBwb2xpY3k7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBXZWJHTFN0
YXRlVHJhY2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMU3Rh
dGVUcmFja2VyLmdldCgpOyB9CkBAIC04MTIsNyArODEyLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxpbmdSZWFz
b25zLmNvbnRhaW5zKFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSk7IH0KICAgICBib29s
IGNhblVwZGF0ZVRocm90dGxpbmdSZWFzb24oVGhyb3R0bGluZ1JlYXNvbiByZWFzb24pIGNvbnN0
IHsgcmV0dXJuICFtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZy5jb250YWlu
cyhyZWFzb24pOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQb3dlck1vZGVFbmFi
bGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlkZUZvclRlc3Rpbmcoc3RkOjpvcHRp
b25hbDxib29sPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdXRzaWRlVmlld3BvcnRU
aHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoYm9vbCk7CiAKICAgICBPcHRpb25TZXQ8VGhyb3R0
bGluZ1JlYXNvbj4gdGhyb3R0bGluZ1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxp
bmdSZWFzb25zOyB9CkBAIC04NzcsNyArODc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVk
IGZpbmRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCwgU2hvdWxkSGlnaGxpZ2h0TWF0Y2hlcywgU2hvdWxkTWFya01hdGNoZXMp
OwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3Vt
ZW50Jj4+IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiB0YWtlQW55TWVk
aWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwbGF5
YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQoKTsKQEAgLTk1MCw3ICs5NTAsNyBA
QCBwcml2YXRlOgogICAgIFJUQ0NvbnRyb2xsZXIgbV9ydGNDb250cm9sbGVyOwogCiAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOwogCiAg
ICAgaW50IG1fbmVzdGVkUnVuTG9vcENvdW50IHsgMCB9OwogICAgIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiBtX3VubmVzdENhbGxiYWNrOwpAQCAtOTg3LDcgKzk4Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZVN5c3RlbUFwcGVhcmFuY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VFbGV2
YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZURhcmtBcHBl
YXJhbmNlIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX3VzZURhcmtBcHBlYXJhbmNl
T3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZURhcmtBcHBlYXJhbmNlT3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IG1fdGV4dEF1
dG9zaXppbmdXaWR0aCB7IDAgfTsKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdXNlclN0eWxlU2hlZXRQYXRoOwogICAgIG11dGFibGUgU3RyaW5nIG1fdXNlclN0
eWxlU2hlZXQ7CiAgICAgbXV0YWJsZSBib29sIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0IHsgZmFs
c2UgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFdhbGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0TW9k
aWZpY2F0aW9uVGltZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdXNl
clN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lOwogCiAgICAgU3RyaW5nIG1fY2FwdGlvblVzZXJQ
cmVmZXJlbmNlc1N0eWxlU2hlZXQ7CiAKQEAgLTExMTMsMTUgKzExMTMsMTUgQEAgcHJpdmF0ZToK
ICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAgIAogICAg
IC8vIEZvciB0ZXN0aW5nLgotICAgIE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBt
X2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Q29tcG9zaXRp
bmdQb2xpY3k+IG1fY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGluZ1BvbGljeT4gbV9jb21wb3NpdGluZ1Bv
bGljeU92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTW9uaXRvcj4g
bV9wZXJmb3JtYW5jZU1vbml0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExvd1Bvd2VyTW9kZU5v
dGlmaWVyPiBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyOwogICAgIE9wdGlvblNldDxUaHJvdHRsaW5n
UmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zOwogICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVh
c29uPiBtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZzsKIAotICAgIE9wdGlv
bmFsPE5hdmlnYXRpb24+IG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGU7CisgICAgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW9uPiBtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTG9nZ2luZz4gbV9wZXJmb3JtYW5jZUxvZ2dpbmc7
CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQpAQCAtMTE0NCwxMCArMTE0NCwxMCBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0g
ICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4gbV9vdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+
IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPERldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXI+IG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjsKQEAg
LTExNTksNyArMTE1OSw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQ
YXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hl
ZXQ+IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbjsKLSAgICBPcHRpb25hbDxIYXNo
U2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhh
c2hTZXQ8U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2lu
Z1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFs
U3RvcmFnZSB7IHRydWUgfTsKQEAgLTExNzAsNyArMTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTW9u
b3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CiAKICAgICBDb2xvciBt
X3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwotICAgIE9wdGlvbmFsPENvbG9yPiBt
X3NhbXBsZWRQYWdlVG9wQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9zYW1wbGVk
UGFnZVRvcENvbG9yOwogCiAgICAgY29uc3QgYm9vbCBtX2h0dHBzVXBncmFkZUVuYWJsZWQgeyB0
cnVlIH07CiAgICAgbXV0YWJsZSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgbV9tZWRpYVNl
c3Npb25Hcm91cElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb2xvclNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVy
LmNwcAppbmRleCAyMDc3MGY3OTM5NDkyODI3NzkwMmNhYmNmMTJjZWNhZmU0NzViOTgxLi43MjBh
NzIzNTM2NjAxNjY0Nzc0Y2FhMTk3ZWUyY2ExZmUxNmUzMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgYm9vbCBp
c1ZhbGlkU2FtcGxlTG9jYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBJbnRQb2ludCYg
bG9jYXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxMYWI8Zmxv
YXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24p
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYg
ZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGludG8g
cGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQogCkBAIC0xNTUsNyAr
MTU1LDcgQEAgc3RhdGljIExhYjxmbG9hdD4gYXZlcmFnZUNvbG9yKExhYjxmbG9hdD4gY29sb3Jz
W10sIHNpemVfdCBjb3VudCkKICAgICB9OwogfQogCi1PcHRpb25hbDxDb2xvcj4gUGFnZUNvbG9y
U2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2UpCitzdGQ6Om9wdGlvbmFsPENvbG9yPiBQYWdl
Q29sb3JTYW1wbGVyOjpzYW1wbGVUb3AoUGFnZSYgcGFnZSkKIHsKICAgICAvLyBJZiBgc3RkOjpu
dWxsb3B0YCBpcyByZXR1cm5lZCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBubyBzYW1wbGVzIHdlcmUg
dGFrZW4gKGkuZS4gdGhlIGBQYWdlYCBpcyBub3QgcmVhZHkgeWV0KS4KICAgICAvLyBJZiBhbiBp
bnZhbGlkIGBDb2xvcmAgaXMgcmV0dXJuZWQgdGhlbiB0aGF0IG1lYW5zIHRoYXQgc2FtcGxlcyBX
ZXJlIHRha2VuIGJ1dCB0aGV5IHdlcmUgdG9vIGRpZmZlcmVudC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29sb3JTYW1wbGVyLmgKaW5kZXggYTlmZDkxNjgyMGI4ZTQ4ZGQ3ZTZkZDBmNmQwZDhlMzRk
Y2QxYTA2OS4uNWUxOGVhNDY3YTAyMWRiMTgwYjljNWYzYzc2NDJlNmY5NWE3MTU0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
UGFnZTsKIAogY2xhc3MgUGFnZUNvbG9yU2FtcGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9w
dGlvbmFsPENvbG9yPiBzYW1wbGVUb3AoUGFnZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PENvbG9yPiBzYW1wbGVUb3AoUGFnZSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQxZDUzZjExZjkzYmZh
MjMwNjEyNGViOGUzNzRkMGIxMTExZGUzNTQuLmYxNzVkMWNkMWJjZDdhMzRhODIyZjc3MzU5MWQ4
MWE0YTAyMDY0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3Vy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKQEAg
LTk3LDcgKzk3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25N
YW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IGFwcGxpY2F0
aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAogICAgIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4g
bGliV2ViUlRDUHJvdmlkZXI7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAgLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUgU2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fkc1N1
YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93
ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93
ZWROZXR3b3JrSG9zdHM7CiAgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbiB7IHRydWUgfTsKICAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIGJvb2wgaHR0cHNVcGdyYWRlRW5hYmxlZCB7
IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXgg
M2MyYWM4M2ZlZmYzMjg0Y2NiMjZmZmNjMjdkZDE2ZTlhNDBkMTMwNS4uMWMxMzAyNjQ3NDkyOWU1
NjRmMGZmMGI5NmViNGIyNzY5NGM5NDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50
OjpyZWNvcmRFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVm
PAogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gc25hcHNob3RDYW52YXMoSFRN
TENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNh
bnZhc1JlbmRlcmluZ0NvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNuYXBz
aG90Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0KQogewogI2lmIEVOQUJMRShXRUJHTCkK
ICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY2FudmFzUmVuZGVyaW5nQ29u
dGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaAppbmRl
eCA0ZWI0YmQ2MmEwYTM2OTVjNjZjNTUzMDExZTJhMTA2ZDFkNzE4ZjI1Li4wN2ZmZGE3ODcyMmVj
MGMxNmI2NzAwNjkyZjVkMGU1YjUxNGQxOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUGFnZVBhc3RlYm9hcmRDb250ZXh0IGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmRD
b250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdl
UGFzdGVib2FyZENvbnRleHQoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3Rk
OjpudWxsb3B0KQorICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQYXN0ZWJvYXJk
Q29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShwYWdlSUQpKQogICAgIHsKQEAg
LTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiAKICAgICB+UGFnZVBhc3RlYm9hcmRDb250ZXh0KCkg
eyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVh
dGUoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZShzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92ZShw
YWdlSUQpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNQYWdl
UGFzdGVib2FyZENvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOworICAgIHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA1MGQ1ZGExODNiYTM0
YTQyMGE0MWU5Mjc1ZWEyNDViYTE5ZTg0MTBmLi5iNzRjNzAzNTc1YzQ3YmYwM2VhNTA4MTEzZWI4
MmQ4Y2JjMDQ0MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVy
RmlyZWQoKQogICAgIG1fd2FpdGluZ0ZvckJhY2t1cEJ1ZmZlclRvQmVQcm9jZXNzZWQgPSBmYWxz
ZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IFBlcmZvcm1hbmNlOjpt
YXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtYXJr
TmFtZSwgT3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykKK0V4
Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBQZXJmb3JtYW5jZTo6bWFyayhKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIHN0ZDo6
b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykKIHsKICAgICBp
ZiAoIW1fdXNlclRpbWluZykKICAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxQZXJm
b3JtYW5jZVVzZXJUaW1pbmc+KCp0aGlzKTsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFBlcmZv
cm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiAgICAgbV91c2VyVGlt
aW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1h
bmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNlOjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgT3B0aW9uYWw8U3RhcnRPck1l
YXN1cmVPcHRpb25zPiYmIHN0YXJ0T3JNZWFzdXJlT3B0aW9ucywgY29uc3QgU3RyaW5nJiBlbmRN
YXJrKQorRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNlOjpt
ZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBt
ZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYgc3RhcnRP
ck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3Vz
ZXJUaW1pbmcpCiAgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VV
c2VyVGltaW5nPigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggNWU0Njg2
NGJmZDA3NzExNDM0OThmZWNhNGU1NTA5NTU2MzM4NjM2Yi4uZDU5ODkzNzRiNzlhMDA5YTA0NGU3
MWY1YzUwZDUzNWUwZjA4YTQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtODgs
MTEgKzg4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUodW5zaWduZWQpOwogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IG1hcmsoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+
JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBtYXJrKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1hcmtOYW1lLCBzdGQ6Om9wdGlvbmFsPFBlcmZv
cm1hbmNlTWFya09wdGlvbnM+JiYpOwogICAgIHZvaWQgY2xlYXJNYXJrcyhjb25zdCBTdHJpbmcm
IG1hcmtOYW1lKTsKIAogICAgIHVzaW5nIFN0YXJ0T3JNZWFzdXJlT3B0aW9ucyA9IFZhcmlhbnQ8
U3RyaW5nLCBQZXJmb3JtYW5jZU1lYXN1cmVPcHRpb25zPjsKLSAgICBFeGNlcHRpb25PcjxSZWY8
UGVyZm9ybWFuY2VNZWFzdXJlPj4gbWVhc3VyZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3Qg
U3RyaW5nJiBtZWFzdXJlTmFtZSwgT3B0aW9uYWw8U3RhcnRPck1lYXN1cmVPcHRpb25zPiYmLCBj
b25zdCBTdHJpbmcmIGVuZE1hcmspOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1l
YXN1cmU+PiBtZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1lYXN1
cmVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0YXJ0T3JNZWFzdXJlT3B0aW9ucz4mJiwgY29uc3QgU3Ry
aW5nJiBlbmRNYXJrKTsKICAgICB2b2lkIGNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFz
dXJlTmFtZSk7CiAKICAgICB2b2lkIGFkZE5hdmlnYXRpb25UaW1pbmcoRG9jdW1lbnRMb2FkZXIm
LCBEb2N1bWVudCYsIENhY2hlZFJlc291cmNlJiwgY29uc3QgTG9hZFRpbWluZyYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5j
cHAKaW5kZXggZGU3ODY3NmRiODlhODY0MzhkYzYzNjgyMjdlYjc5YWY2MmJkZTNiMy4uZDE4MmQ4
NWMxNTAyNWQ1YTMyYWQ4MDUzMGJhOTM2YTg1NzEyNGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlRW50cnkuY3BwCkBAIC00NywyMiArNDcsMjIgQEAgUGVyZm9ybWFuY2VFbnRy
eTo6UGVyZm9ybWFuY2VFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBzdGFydFRpbWUs
IGRvdWJsZQogCiBQZXJmb3JtYW5jZUVudHJ5Ojp+UGVyZm9ybWFuY2VFbnRyeSgpID0gZGVmYXVs
dDsKIAotT3B0aW9uYWw8UGVyZm9ybWFuY2VFbnRyeTo6VHlwZT4gUGVyZm9ybWFuY2VFbnRyeTo6
cGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUpCitzdGQ6Om9wdGlv
bmFsPFBlcmZvcm1hbmNlRW50cnk6OlR5cGU+IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlU
eXBlU3RyaW5nKGNvbnN0IFN0cmluZyYgZW50cnlUeXBlKQogewogICAgIGlmIChlbnRyeVR5cGUg
PT0gIm5hdmlnYXRpb24iKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8VHlwZT4oVHlwZTo6TmF2
aWdhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFR5cGU+KFR5cGU6Ok5hdmln
YXRpb24pOwogCiAgICAgaWYgKGVudHJ5VHlwZSA9PSAibWFyayIpCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxUeXBlPihUeXBlOjpNYXJrKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
VHlwZT4oVHlwZTo6TWFyayk7CiAgICAgaWYgKGVudHJ5VHlwZSA9PSAibWVhc3VyZSIpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpNZWFzdXJlKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8VHlwZT4oVHlwZTo6TWVhc3VyZSk7CiAKICAgICBpZiAoZW50cnlUeXBl
ID09ICJyZXNvdXJjZSIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpSZXNv
dXJjZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFR5cGU+KFR5cGU6OlJlc291cmNl
KTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnBh
aW50VGltaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgPT0gInBhaW50IikK
LSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpQYWludCk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxUeXBlPihUeXBlOjpQYWludCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5
LmgKaW5kZXggM2RmNWU0ZWZiYWYzMjZjNTcxZjVlNmU2NWUzNTZjMmQ0MzJmZjBmMC4uZjkyYzJm
MjA0MDY3MzQ2NzdhY2NiZGJlYmYzOGJhNjcyM2U0MTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUVudHJ5LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
VHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEFTQ0lJ
TGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlw
ZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHBhcnNlRW50cnlUeXBlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgZW50cnlUeXBlKTsKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0VGltZUNvbXBhcmVMZXNzVGhh
bihjb25zdCBSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4mIGEsIGNvbnN0IFJlZlB0cjxQZXJmb3Jt
YW5jZUVudHJ5PiYgYikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9n
Z2luZy5jcHAKaW5kZXggMWQ1ZWNlYmE1N2NlNGUyNmE0M2Y0MGUwYmNlNzZlM2JmYjkwNDdhNy4u
YWNhODc1MDUwZmMyMTMxODcyMTFiYmQ2MjU4ZDBjOTczMjBjZDRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UGVyZm9ybWFuY2VMb2dnaW5nOjpkaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQb2ludE9mSW50ZXJl
c3QgcG9pKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBQZXJmb3JtYW5jZUxvZ2dpbmc6
OmdldFBsYXRmb3JtTWVtb3J5VXNhZ2VTdGF0aXN0aWNzKEhhc2hNYXA8Y29uc3QgY2hhciosIHNp
emVfdD4mKSB7IH0KLU9wdGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNp
Y2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CitzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VMb2dnaW5nLmgKaW5kZXggNmE4NWMxM2FmOGQ5MTg5MTZiMjFlYjVmNTE1MWI3MDY5ZDI1Yjhi
MS4uMzJiNGMwZTlhMWUxMjE4MjlkYWI2ZmJjZWMwODljYWJkZDY5OTkwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4g
amF2YVNjcmlwdE9iamVjdENvdW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNo
TWFwPGNvbnN0IGNoYXIqLCBzaXplX3Q+IG1lbW9yeVVzYWdlU3RhdGlzdGljcyhTaG91bGRJbmNs
dWRlRXhwZW5zaXZlQ29tcHV0YXRpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0
aW9uYWw8dWludDY0X3Q+IHBoeXNpY2FsRm9vdHByaW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBoeXNpY2FsRm9vdHByaW50KCk7CiAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0UGxhdGZvcm1NZW1vcnlVc2FnZVN0YXRpc3RpY3Mo
SGFzaE1hcDxjb25zdCBjaGFyKiwgc2l6ZV90PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU1hcmsuY3BwCmluZGV4IGY0MGQ0N2RiMWVhMzIwZDI0YzI4ZTg4ZDIyZjI5ODgxNDI0NTc4
ZjkuLjMwMjIwMmM3YWE0ZjM0YWRiYTM4YjQ2YjU5ZWJkZTA2YzQyNWQwNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGRv
dWJsZSBwZXJmb3JtYW5jZU5vdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFu
Y2VNYXJrPj4gUGVyZm9ybWFuY2VNYXJrOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+JiYg
bWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9ybWFu
Y2VNYXJrOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykK
IHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIFBlcmZv
cm1hbmNlVXNlclRpbWluZzo6aXNSZXN0cmljdGVkTWFya05hbWUobmFtZSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNYXJrLmgKaW5kZXggYjc1MTRmMDE1MzU4MDlkYWI1M2NjYWMwNjRjNTJiMGYxOGViNmM2Yi4u
ODdhNTU4NWQxYmUzNTdhY2NhNTRjMTdmNzBlNDI4MWEzMjMwMWE4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTWFyay5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFBlcmZvcm1hbmNlTWFyayBmaW5hbCA6IHB1YmxpYyBQZXJm
b3JtYW5jZUVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFBlcmZv
cm1hbmNlTWFyaz4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0
aW9ucz4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBj
cmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJik7
CiAKICAgICBKU0M6OkpTVmFsdWUgZGV0YWlsKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmtPcHRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFya09wdGlvbnMuaAppbmRleCBkYmQxODVl
YzJmMTFmOWFmZTg4MjY1YjIwNDVjYWM1YTMxYmZjYWZjLi44NGU1M2Y5MzVhMmNiZTUwNDE3YTYx
NDRkNzNhMGMyNjMwZmFmZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlTWFya09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TWFya09wdGlvbnMuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBQZXJmb3JtYW5jZU1hcmtPcHRpb25zIHsKICAgICBKU0M6OkpTVmFsdWUgZGV0YWlsOwot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gc3RhcnRUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBzdGFydFRpbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNZWFzdXJlT3B0aW9ucy5oCmluZGV4IGM5MzQ3M2EwMDNmN2QwZTZmOGEzZjY1MWZhZDZkNjMw
MTQyNzA3N2YuLmIxZmQ4NjM5Zjc2MjQzNmNlMDFlNDhmZmJjZTlkZWM1Zjc5MmVkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oCkBAIC0z
NCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBlcmZvcm1hbmNlTWVh
c3VyZU9wdGlvbnMgewogICAgIEpTQzo6SlNWYWx1ZSBkZXRhaWw7Ci0gICAgT3B0aW9uYWw8VmFy
aWFudDxTdHJpbmcsIGRvdWJsZT4+IHN0YXJ0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZHVyYXRp
b247Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IGVuZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBzdGFydDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZHVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywg
ZG91YmxlPj4gZW5kOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1v
bml0b3IuY3BwCmluZGV4IDBhNmQyMDM5OWE3NjIyZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZkNjEu
LjBmYzZkNmRiZWY4MjRjODRlZDUzZmVmODY2ZDZmNmEyM2ExYjNkNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lk
IFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQogICAgICAgICAg
ICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChwb3N0TG9hZENQVVVz
YWdlTWVhc3VyZW1lbnREdXJhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgT3B0
aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOworICAgIHN0ZDo6b3B0aW9u
YWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwogICAgIGlmICghY3B1VGltZSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1v
bml0b3I6Om1lYXN1cmVQb3N0TG9hZE1lbW9yeVVzYWdlKCkKICAgICBpZiAoIW1fcGFnZS5pc09u
bHlOb25VdGlsaXR5UGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50
KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5j
ZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CiAgICAgaWYgKCFtZW1vcnlVc2FnZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0
b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ01lbW9yeVVzYWdlKCkKICAgICBpZiAoIW1fcGFn
ZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9v
dHByaW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJm
b3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CiAgICAgaWYgKCFtZW1vcnlVc2Fn
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQZXJmb3JtYW5j
ZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKCkKICAgICAgICAgICAg
IG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChiYWNrZ3JvdW5k
Q1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBPcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gQ1BVVGltZTo6Z2V0KCk7CisgICAgc3RkOjpv
cHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gQ1BVVGltZTo6Z2V0KCk7CiAgICAgaWYgKCFjcHVU
aW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFBlcmZvcm1h
bmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Q1BVVGlt
ZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4g
Y3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwogICAgIGlmICghY3B1VGltZSkgewogICAgICAgICBt
X3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaAppbmRleCA4NTVmZTZlNzUz
NzA2ZDc3MzUyM2I3ODJhZGVlMjY5MzJjYzI3N2RjLi40NDIyMTVmZTM0ZjVjNzI4NWQ0ODA0Yjg0
NjM1MWU3ZmRmZGEyZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9y
LmgKQEAgLTU2LDExICs1NiwxMSBAQCBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKIAogICAg
IFRpbWVyIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcjsKLSAgICBPcHRpb25hbDxDUFVUaW1l
PiBtX3Bvc3RMb2FkQ1BVVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdExv
YWRDUFVUaW1lOwogICAgIFRpbWVyIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyOwot
ICAgIE9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lOworICAgIHN0
ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWU7CiAgICAgVGlt
ZXIgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lcjsKLSAgICBPcHRpb25hbDxDUFVUaW1l
PiBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4g
bV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZTsKIAogICAgIFRpbWVyIG1fcG9zdFBhZ2VMb2FkTWVt
b3J5VXNhZ2VUaW1lcjsKICAgICBUaW1lciBtX3Bvc3RCYWNrZ3JvdW5kaW5nTWVtb3J5VXNhZ2VU
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
VGltaW5nLmNwcAppbmRleCA5ODFiMzViZTZjNDVhZGNmODVjNjkzYTE5YzNhYTJkODAwODkzMzg2
Li42OTU1OTVmZmJmMjg5MmNlZmEzNjY4NTVjMmE1NzlmZDY3NDM3ZGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6UGVyZm9ybWFuY2VOYXZp
Z2F0aW9uVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9yaWdpCiAKIFBlcmZvcm1hbmNlTmF2aWdh
dGlvblRpbWluZzo6flBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZygpID0gZGVmYXVsdDsKIAot
ZG91YmxlIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6bWlsbGlzZWNvbmRzU2luY2VPcmln
aW4oTW9ub3RvbmljVGltZSB0aW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiB0aW1lT3JpZ2lu
KSBjb25zdAorZG91YmxlIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6bWlsbGlzZWNvbmRz
U2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSB0aW1lLCBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1Rp
bWU+IHRpbWVPcmlnaW4pIGNvbnN0CiB7CiAgICAgaWYgKCF0aW1lKQogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWlu
Zy5oCmluZGV4IGIwZTYyMjY1MzgxYmZjM2JlMjQ5MTVmNTQzNDIyMWZhYmIxNWNiYTcuLmVkMmQx
M2FiNzc4NGYwNTE1YmVlMzJlZmU0NjhmZWI0OGJhYjk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaApAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZyhNb25v
dG9uaWNUaW1lIHRpbWVPcmlnaW4sIENhY2hlZFJlc291cmNlJiwgY29uc3QgTG9hZFRpbWluZyYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIGNvbnN0IERvY3VtZW50VGltaW5nJiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mLCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSk7CiAKLSAgICBkb3VibGUg
bWlsbGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSwgT3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgZG91YmxlIG1pbGxp
c2Vjb25kc1NpbmNlT3JpZ2luKE1vbm90b25pY1RpbWUsIHN0ZDo6b3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBzYW1lT3Jp
Z2luQ2hlY2tGYWlscygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRp
bWluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmgKaW5kZXggNDE5
MzA1ZDQ3YzIxNTI3ZDhlMWNiZWI1N2JjZTVjMGQ4MmMyYTdkOC4uNmJmYWJlMjUxZWI4OTlmZjEz
ZDlkNzE5NWJlZWJhN2ViYTQ4NDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU9ic2VydmVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3Jt
YW5jZU9ic2VydmVyPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEluaXQgewotICAgICAgICBPcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gZW50cnlUeXBlczsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbnRyeVR5cGVz
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAgICAgYm9vbCBidWZm
ZXJlZDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlT2JzZXJ2ZXJFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU9ic2VydmVyRW50cnlMaXN0LmNwcAppbmRleCBkZDdmYzk3Y2EzOGY4M2UyNDU1ZTkyNzA4MjM1
MTUwMDNlOWE5Y2U5Li5hOWJkOGY4Y2NkZGEyYzc3NDlhMjg4ZWIzY2ExNDIyY2I0YjEwMDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5
TGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5
Pj4gUGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdDo6Z2V0RW50cmllc0J5TmFtZSgKIAogICAg
IC8vIFBlcmZvcm1hbmNlT2JzZXJ2ZXJzIGNhbiBvbmx5IGJlIHJlZ2lzdGVyZWQgZm9yIHZhbGlk
IHR5cGVzLgogICAgIC8vIFNvIGlmIHRoZSBpbmNvbWluZyBlbnRyeVR5cGUgaXMgYW4gdW5rbm93
biB0eXBlLCB0aGVyZSB3aWxsIGJlIG5vIG1hdGNoZXMuCi0gICAgT3B0aW9uYWw8UGVyZm9ybWFu
Y2VFbnRyeTo6VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBlcmZvcm1hbmNlRW50cnk6
OlR5cGU+IHR5cGU7CiAgICAgaWYgKCFlbnRyeVR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgdHlw
ZSA9IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGVudHJ5VHlwZSk7CiAg
ICAgICAgIGlmICghdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2Vy
VGltaW5nLmNwcAppbmRleCA0MDE1Mjc3ZTA3YzQzZDlmOTg5YTE3ZWFiYWUxNTIwYjllYzhhMThl
Li5hMzY4ODcyMzc0YzEyZjdjYTMwZTFiZjljMjkxMDM1OThlM2EwOTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgc3RhdGljIHZvaWQgYWRkUGVyZm9ybWFuY2VFbnRyeShQZXJmb3JtYW5jZUVudHJ5TWFwJiBt
YXAsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGUKICAgICBwZXJmb3JtYW5jZUVudHJ5TGlzdC5hcHBl
bmQoJmVudHJ5KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IFBlcmZv
cm1hbmNlVXNlclRpbWluZzo6bWFyayhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+
JiYgbWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9y
bWFuY2VVc2VyVGltaW5nOjptYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpvcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRp
b25zPiYmIG1hcmtPcHRpb25zKQogewogICAgIGF1dG8gbWFyayA9IFBlcmZvcm1hbmNlTWFyazo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgKm1fcGVyZm9ybWFuY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBtYXJrTmFtZSwgV1RGTW92ZShtYXJrT3B0aW9ucykpOwogICAgIGlmIChtYXJrLmhhc0V4
Y2VwdGlvbigpKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBib29sIGlzTm9uRW1wdHlEaWN0
aW9uYXJ5KGNvbnN0IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMmIG1lYXN1cmVPcHRpb25zCiAg
ICAgcmV0dXJuICFtZWFzdXJlT3B0aW9ucy5kZXRhaWwuaXNVbmRlZmluZWQoKSB8fCBtZWFzdXJl
T3B0aW9ucy5zdGFydCB8fCBtZWFzdXJlT3B0aW9ucy5kdXJhdGlvbiB8fCBtZWFzdXJlT3B0aW9u
cy5lbmQ7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1lYXN1cmU+PiBQZXJmb3Jt
YW5jZVVzZXJUaW1pbmc6Om1lYXN1cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBPcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlv
bnM+JiYgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCitFeGNl
cHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjpt
ZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBt
ZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYgc3RhcnRP
ck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKHN0YXJ0
T3JNZWFzdXJlT3B0aW9ucykgewogICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqc3RhcnRP
ck1lYXN1cmVPcHRpb25zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVVzZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGlt
aW5nLmgKaW5kZXggY2Q4MDI4Nzc2NjBiMDJlZjUyOThjMzNjMDQ0MWNhOWI2NTg5OWYyMC4uNWJm
MmVjZWFmZTdhNzllNzU1MmQ1ZWVhZjE2YTFiMjY3NzMwN2VmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5oCkBAIC00NiwxMSArNDYsMTEgQEAgY2xhc3Mg
UGVyZm9ybWFuY2VVc2VyVGltaW5nIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQZXJmb3JtYW5j
ZVVzZXJUaW1pbmcoUGVyZm9ybWFuY2UmKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3Jt
YW5jZU1hcms+PiBtYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1hcmtO
YW1lLCBPcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRpb25zPiYmKTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gbWFyayhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3Qg
U3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpvcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRpb25zPiYm
KTsKICAgICB2b2lkIGNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSk7CiAKICAgICB1
c2luZyBTdGFydE9yTWVhc3VyZU9wdGlvbnMgPSBWYXJpYW50PFN0cmluZywgUGVyZm9ybWFuY2VN
ZWFzdXJlT3B0aW9ucz47Ci0gICAgRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWVhc3VyZT4+
IG1lYXN1cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUs
IE9wdGlvbmFsPFN0YXJ0T3JNZWFzdXJlT3B0aW9ucz4mJiwgY29uc3QgU3RyaW5nJiBlbmRNYXJr
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gbWVhc3VyZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25h
bDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYsIGNvbnN0IFN0cmluZyYgZW5kTWFyayk7CiAgICAg
dm9pZCBjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj4gZ2V0TWFya3MoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDE2YmNmMDQzOTBhMTcwZjNkZTc4
MjY1MGMyZmMyNTIyY2Y1MDU0YTAuLjRhZTQ1YjE3NmQxOTNmOTY3NWQ0YTI3OWY4NjU5ZDc1MDY0
YzFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzYs
NyArMzYsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsKICAg
ICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBmb250Q2FjaGU7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFByZXdhcm1JbmZvcm1hdGlvbj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDYsOSArNDYsOSBAQCB2b2lkIFByZXdhcm1JbmZvcm1h
dGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IFByZXdhcm1JbmZvcm1hdGlv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFByZXdhcm1JbmZvcm1h
dGlvbj4gUHJld2FybUluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbj4gZm9udENhY2hlUHJld2Fy
bUluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhY2hlOjpQcmV3YXJtSW5mb3Jt
YXRpb24+IGZvbnRDYWNoZVByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBkZWNvZGVyID4+IGZvbnRD
YWNoZVByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBpZiAoIWZvbnRDYWNoZVByZXdhcm1JbmZvcm1h
dGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCBlNzBi
MmJmZmZiYmZlMTljZmI4MTA1MDFhYjMyZmQ3MzBjZDJhOTFhLi45NmQyMGQyZjJmMmYwOGEyZGIw
NmMwNWQzMGZhMzM4MjkzZTJmYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1
aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC00NzYsNyAr
NDc2LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZERpc3BhdGNoZWRTaW11bGF0ZWRNb3VzZUV2ZW50
c0Fzc3VtZURlZmF1bHRQcmV2ZW50ZWQoRXZlbnRUYXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LU9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJrczo6c2ltdWxhdGVkTW91c2VFdmVu
dFR5cGVGb3JUYXJnZXQoRXZlbnRUYXJnZXQqIHRhcmdldCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRh
cmdldChFdmVudFRhcmdldCogdGFyZ2V0KSBjb25zdAogewogICAgIGlmICghc2hvdWxkRGlzcGF0
Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyh0YXJnZXQpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmgKaW5kZXggZDgxZDk4YWU2OGM2N2ZjM2FiZGEyNTcxYWYzZGY5ZDkxODAyZjNi
NS4uMzUyYzJhZmYyMTk2OWEzNTQ5ODQ1ZjQ1NzkzYWU5YTBmOTI2N2EyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1
aXJrcy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyhFdmVudFRhcmdl
dCopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hlZFNpbXVsYXRlZE1vdXNlRXZlbnRz
QXNzdW1lRGVmYXVsdFByZXZlbnRlZChFdmVudFRhcmdldCopIGNvbnN0OwotICAgIE9wdGlvbmFs
PEV2ZW50OjpJc0NhbmNlbGFibGU+IHNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2
ZW50VGFyZ2V0KikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxl
PiBzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldChFdmVudFRhcmdldCopIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkTWFrZVRvdWNoRXZlbnROb25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2ZW50
VGFyZ2V0KikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRQcmV2ZW50UG9pbnRlck1lZGlhUXVlcnlG
cm9tRXZhbHVhdGluZ1RvQ29hcnNlKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRQcmV2ZW50RGlz
cGF0Y2hPZlRvdWNoRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEV2ZW50VGFyZ2V0KikgY29uc3Q7
CkBAIC0xNjYsMTYgKzE2NiwxNiBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4g
bV9kb2N1bWVudDsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5FbmNy
eXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyazsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1f
bmVlZHNGdWxsV2lkdGhIZWlnaHRGdWxsc2NyZWVuU3R5bGVRdWlyazsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWly
azsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0Z1bGxXaWR0aEhlaWdo
dEZ1bGxzY3JlZW5TdHlsZVF1aXJrOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgbXV0
YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzR01haWxPdmVyZmxvd1Njcm9sbFF1aXJrOwotICAg
IG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1aXJr
OwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc1ByZWxvYWRBdXRvUXVpcms7Ci0g
ICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzRnVsbHNjcmVlbkRpc3BsYXlOb25lUXVp
cms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3Nob3VsZEF2b2lkUGFzdGluZ0ltYWdl
c0FzV2ViQ29udGVudDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0dN
YWlsT3ZlcmZsb3dTY3JvbGxRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9uZWVkc1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1aXJrOworICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxib29sPiBtX25lZWRzUHJlbG9hZEF1dG9RdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9uZWVkc0Z1bGxzY3JlZW5EaXNwbGF5Tm9uZVF1aXJrOworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3Nob3VsZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2ViQ29u
dGVudDsKICNlbmRpZgotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxl
RWxlbWVudEZ1bGxzY3JlZW5RdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9zaG91bGREaXNhYmxlRWxlbWVudEZ1bGxzY3JlZW5RdWlyazsKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogICAgIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50
cyA6IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duLApAQCAtMTg2LDIwICsxODYsMjAgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIFNob3VsZERpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudHMgbV9z
aG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzUXVpcmsgeyBTaG91bGREaXNwYXRjaFNp
bXVsYXRlZE1vdXNlRXZlbnRzOjpVbmtub3duIH07CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX1RP
VUNIX0VWRU5UUykKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkU3ludGhlc2l6
ZVRvdWNoRXZlbnRzUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc2hv
dWxkU3ludGhlc2l6ZVRvdWNoRXZlbnRzUXVpcms7CiAjZW5kaWYKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPGJvb2w+IG1fbmVlZHNDYW5QbGF5QWZ0ZXJTZWVrZWRRdWlyazsKLSAgICBtdXRhYmxlIE9w
dGlvbmFsPGJvb2w+IG1fc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmc7Ci0gICAgbXV0
YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzVlA5RnVsbFJhbmdlRmxhZ1F1aXJrOwotICAgIG11
dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0hEUlBpeGVsRGVwdGhRdWlyazsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFja0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7
Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3JlcXVpcmVzVXNlckdlc3R1cmVUb1BhdXNl
SW5QaWN0dXJlSW5QaWN0dXJlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9yZXF1aXJl
c1VzZXJHZXN0dXJlVG9Mb2FkSW5QaWN0dXJlSW5QaWN0dXJlOworICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxib29sPiBtX25lZWRzQ2FuUGxheUFmdGVyU2Vla2VkUXVpcms7CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmc7
CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNWUDlGdWxsUmFuZ2VGbGFn
UXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNIRFJQaXhlbERl
cHRoUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFja0Z1
bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fcmVxdWlyZXNVc2VyR2VzdHVyZVRvUGF1c2VJblBpY3R1cmVJblBpY3R1cmU7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNVc2VyR2VzdHVyZVRvTG9hZEluUGlj
dHVyZUluUGljdHVyZTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG11dGFibGUgT3B0
aW9uYWw8Ym9vbD4gbV9zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyazsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVk
aWFRdWlyazsKICNlbmRpZgotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9ibG9ja3NSZXR1
cm5Ub0Z1bGxzY3JlZW5Gcm9tUGljdHVyZUluUGljdHVyZVF1aXJrOwotICAgIG11dGFibGUgT3B0
aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRW5kRnVsbHNjcmVlbkV2ZW50V2hlbkVudGVyaW5n
UGljdHVyZUluUGljdHVyZUZyb21GdWxsc2NyZWVuUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1
cmVRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxl
RW5kRnVsbHNjcmVlbkV2ZW50V2hlbkVudGVyaW5nUGljdHVyZUluUGljdHVyZUZyb21GdWxsc2Ny
ZWVuUXVpcms7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDczNmQzZDE1YTkyMTlkMmQwYTdl
YzE4NDUxODVkOTM5NTAzZjcwNjMuLjA3YmNjZmM2NTU5MWFmNDE5MWQxNDBiNjM3MTFkY2FhZjRm
ZGQ1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
CkBAIC0zNDUsNyArMzQ1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgYm9vbCBtX21vdXNlRXZlbnRzU2ltdWxhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAg
IE9wdGlvbmFsPGJvb2w+IG1fdG91Y2hFdmVudHNFbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEhBVkUoTlNVUkxTRVNT
SU9OX1dFQlNPQ0tFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsSW50
b1ZpZXdPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbEludG9WaWV3T3B0aW9u
cy5oCmluZGV4IGYyNzVmMmZiZDFhM2ZjODAxZWJjMGFlODZjZGE5MTk5Njg5ZjQ1MDUuLmViYmIw
MTNlM2M0MjYyMTI1Y2Q1ZjRlYTcyOTQwODEzOTE3ZmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TY3JvbGxJbnRvVmlld09wdGlvbnMuaApAQCAtMjUsOCArMjUsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Nyb2xsSW50b1ZpZXdPcHRpb25zIDogU2Nyb2xsT3B0aW9u
cyB7Ci0gICAgT3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBibG9ja1Bvc2l0aW9uIHsg
U2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydCB9OwotICAgIE9wdGlvbmFsPFNjcm9sbExvZ2lj
YWxQb3NpdGlvbj4gaW5saW5lUG9zaXRpb24geyBTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJl
c3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gYmxvY2tQb3Np
dGlvbiB7IFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQgfTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gaW5saW5lUG9zaXRpb24geyBTY3JvbGxMb2dpY2FsUG9z
aXRpb246Ok5lYXJlc3QgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TY3JvbGxPcHRpb25zLmgKaW5kZXggZTE4NjdjNjAxNTBhNTU0MTFjYzBmMWE3YTA0OWUy
YmMxZGMxM2Q5Ny4uNTYzZTFlNjg1NjMxMWZkNGRhMjA5OTIwZjljODJhODk5NWMxMzQ4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IFNjcm9sbE9wdGlvbnMgewotICAgIE9wdGlvbmFsPFNjcm9s
bEJlaGF2aW9yPiBiZWhhdmlvciB7IFNjcm9sbEJlaGF2aW9yOjpBdXRvIH07CisgICAgc3RkOjpv
cHRpb25hbDxTY3JvbGxCZWhhdmlvcj4gYmVoYXZpb3IgeyBTY3JvbGxCZWhhdmlvcjo6QXV0byB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9P
cHRpb25zLmgKaW5kZXggZjU3NzRkNDRhZWYwNGE4NWViMTQ3MjE3ZTdmYWFiODcyZjI0M2Q4Yi4u
MzE4NGZkYTZmZWZiZWQ0ZTNmZWMxNTE2OWY0NWJmZTIxZTQ1MGRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Njcm9sbFRvT3B0aW9ucy5oCkBAIC0zNSw4ICszNSw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JvbGxUb09wdGlvbnMgOiBTY3JvbGxPcHRpb25zIHsKLSAgICBPcHRp
b25hbDxkb3VibGU+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b3A7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvcDsKIAog
ICAgIFNjcm9sbFRvT3B0aW9ucygpID0gZGVmYXVsdDsKICAgICBTY3JvbGxUb09wdGlvbnMoZG91
YmxlIHgsIGRvdWJsZSB5KQpAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25z
IDogU2Nyb2xsT3B0aW9ucyB7CiAgICAgeyB9CiB9OwogCi1pbmxpbmUgZG91YmxlIG5vcm1hbGl6
ZU5vbkZpbml0ZVZhbHVlT3JGYWxsQmFja1RvKE9wdGlvbmFsPGRvdWJsZT4gdmFsdWUsIGRvdWJs
ZSBmYWxsYmFja1ZhbHVlKQoraW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVWYWx1ZU9y
RmFsbEJhY2tUbyhzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWUsIGRvdWJsZSBmYWxsYmFja1Zh
bHVlKQogewogICAgIC8vIE5vcm1hbGl6ZSBub24tZmluaXRlIHZhbHVlcyAoaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI25vcm1hbGl6ZS1ub24tZmluaXRlLXZhbHVlcykuCiAg
ICAgcmV0dXJuIHZhbHVlID8gKHN0ZDo6aXNmaW5pdGUoKnZhbHVlKSA/ICp2YWx1ZSA6IDApIDog
ZmFsbGJhY2tWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
NmI2OTZkNGMwZGIzNDhiMDg3MWNhYTMxOWY5ZTk4ZDk2YWM2YWQxMS4uMzM0OWQxYWE4Njk0OWNj
NjI4MDQ5ZWFmM2JkZWIyOWVjYjYzZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAg
IHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3RyaW5nKSk7
CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBw
b3J0KQorUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2Nv
bCArICI6Ly8iICsgaG9zdCArICIvIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CmluZGV4IDA4YzZmMWRmNTdhOWNmYTJlNWFlODA2NTRkNzFhODg3MWZiYTQ5MWIuLmU2YWI1NzU5
OTYzNGRmNjY1MzRiOTVlYTBjMjI0OGQ3YzVkZmE2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2lu
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRp
b25hbDx1aW50MTZfdD4gcG9ydCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1
cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
aG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CiAKICAgICAvLyBRdWlja0xvb2sg
ZG9jdW1lbnRzIGFyZSBpbiBub24tbG9jYWwgb3JpZ2lucyBldmVuIHdoZW4gbG9hZGVkIGZyb20g
ZmlsZTogVVJMcy4gVGhleSBuZWVkIHRvCiAgICAgLy8gYmUgYWxsb3dlZCB0byBkaXNwbGF5IHRo
ZWlyIG93biBmaWxlOiBVUkxzIGluIG9yZGVyIHRvIHBlcmZvcm0gcmVsb2FkcyBhbmQgc2FtZS1k
b2N1bWVudApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbDsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ob3N0OyB9CiAgICAgY29uc3QgU3RyaW5n
JiBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQotICAgIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnBvcnQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnBvcnQ7IH0KIAogICAg
IHN0YXRpYyBib29sIHNob3VsZElnbm9yZUhvc3QoY29uc3QgVVJMJik7CiAKQEAgLTI3MSw3ICsy
NzEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBTZWN1cml0eU9yaWdp
bjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBpbmxpbmUgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBkYXRh
OworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBkYXRhOwogICAgIGRlY29k
ZXIgPj4gZGF0YTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGEwMGRhYzQ3OTBl
ZTJlOTU1YWUyZmUyY2ZjNjVmMGE0MGRhODM2YzIuLjIyYmVhOGI0MzQyZGE0ZGRjZGUzNWNkODY0
YWJkOGM3NzY1MzA5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJh
c2VJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2Vw
YXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2Vw
YXJhdG9yQ2hhcmFjdGVyLCBwb3J0LnZhbHVlX29yKDApKTsKIH0KIAotT3B0aW9uYWw8U2VjdXJp
dHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGVy
ZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBkYXRhYmFzZUlk
ZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggOTA3OWM1YjU1MjhiMGViYjk0YjgwZDZmZTg1MzcxN2I2
NDEyMGQ4OS4uNGIzOTUyNDkxNjU4ZWNhYWYzOGUwYmIwMGE3Mjk1MDkwMmJjMDM4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICBT
ZWN1cml0eU9yaWdpbkRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhKGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQpCisgICAgU2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKICAgICAg
ICAgOiBwcm90b2NvbChwcm90b2NvbCkKICAgICAgICAgLCBob3N0KGhvc3QpCiAgICAgICAgICwg
cG9ydChwb3J0KQpAQCAtNjIsMTcgKzYyLDE3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEg
ewogCiAgICAgU3RyaW5nIHByb3RvY29sOwogICAgIFN0cmluZyBob3N0OwotICAgIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0eU9yaWdpbkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAKICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0
IGNvdWxkIGJlIHVzZWQgYXMgcGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0
IHNob3VsZCBiZSB1c2VkIGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlY3VyaXR5T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KTsKICAgICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGRlY29kZShE
ZWNvZGVyJik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKQEAgLTEwMywxOSAr
MTAzLDE5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvdG9jb2w7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHByb3RvY29sOwogICAgIGRlY29kZXIgPj4gcHJv
dG9jb2w7CiAgICAgaWYgKCFwcm90b2NvbCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGhvc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGhvc3Q7CiAgICAgZGVjb2RlciA+PiBob3N0OwogICAgIGlmICghaG9zdCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50MTZf
dD4+IHBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pj4gcG9y
dDsKICAgICBkZWNvZGVyID4+IHBvcnQ7CiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggZmVlNmI5OWUzZmE1ZTA0
OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOC4uNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0
MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIHN0
cnVjdCBSYXdGaWxlIHsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKICAg
ICBTaGFyZURhdGEgc2hhcmVEYXRhOwotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6
b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgVmVjdG9yPFJhd0ZpbGU+IGZpbGVzOwogfTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUlu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8uaApp
bmRleCAxMjFhZmFhODNlNTVjMDMyM2ZjYjI0MWQ2YzM3ZTRjNDhhZjQyNGYxLi5mODM5YTkwZWI5
NjEzMmJmMzViOGZmNDM3MzhkOWZjZThjMmEwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mby5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVj
dCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbyB7CiAgICAgVHJhbnNsYXRpb25Db250ZXh0TWVu
dU1vZGUgbW9kZSB7IFRyYW5zbGF0aW9uQ29udGV4dE1lbnVNb2RlOjpOb25FZGl0YWJsZSB9Owog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxUcmFuc2xhdGlv
bkNvbnRleHRNZW51SW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4g
ZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgVHJh
bnNsYXRpb25Db250ZXh0TWVudUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApA
QCAtNTQsMjQgKzU0LDI0IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgVHJhbnNsYXRp
b25Db250ZXh0TWVudUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5jb2RlciA8
PCBtb2RlOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxUcmFuc2xhdGlv
bkNvbnRleHRNZW51SW5mbz4gVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxUcmFu
c2xhdGlvbkNvbnRleHRNZW51SW5mbz4gVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYg
KCF0ZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8SW50
UmVjdD4gc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJl
Y3Q+IHNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXc7CiAgICAgZGVjb2RlciA+PiBzZWxlY3Rpb25C
b3VuZHNJblJvb3RWaWV3OwogICAgIGlmICghc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEludFBvaW50PiBsb2Nh
dGlvbkluUm9vdFZpZXc7CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gbG9jYXRpb25JblJv
b3RWaWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGlmICghbG9j
YXRpb25JblJvb3RWaWV3KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8VHJhbnNsYXRpb25Db250ZXh0TWVudU1vZGU+IG1vZGU7CisgICAgc3RkOjpvcHRpb25h
bDxUcmFuc2xhdGlvbkNvbnRleHRNZW51TW9kZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7
CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHQuaAppbmRleCA4Y2Q5YzMwYzZiNmE2NGVlNjZkZjk5MzNlYjM3ODU4OGM0OThh
MjVjLi41MDMzNDJhMzU1MGY5MmI1MDZjZDM3NjU5ZGI3ZTgzODI0MTU3NDMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgV2FpdEZvck5v
dGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyB3YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV93YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVzZXJT
Y3JpcHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VXNlclNjcmlwdD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CkBAIC04NiwzOSArODYsMzkgQEAgdm9pZCBVc2VyU2Ny
aXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxVc2VyU2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwogICAg
IGlmICghc291cmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9w
dGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2Rl
ciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFsbG93bGlzdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2xpc3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd2xp
c3Q7CiAgICAgaWYgKCFhbGxvd2xpc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2NrbGlzdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibG9ja2xpc3Q7CiAgICAgZGVjb2RlciA+PiBibG9ja2xp
c3Q7CiAgICAgaWYgKCFibG9ja2xpc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8VXNlclNjcmlwdEluamVjdGlvblRpbWU+IGluamVjdGlvblRpbWU7
CisgICAgc3RkOjpvcHRpb25hbDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9uVGlt
ZTsKICAgICBkZWNvZGVyID4+IGluamVjdGlvblRpbWU7CiAgICAgaWYgKCFpbmplY3Rpb25UaW1l
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVkRnJhbWVzOworICAgIHN0ZDo6b3B0aW9uYWw8
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgZGVjb2RlciA+
PiBpbmplY3RlZEZyYW1lczsKICAgICBpZiAoIWluamVjdGVkRnJhbWVzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxX
YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nPiB3YWl0Rm9yTm90aWZpY2F0aW9uOwog
ICAgIGRlY29kZXIgPj4gd2FpdEZvck5vdGlmaWNhdGlvbjsKICAgICBpZiAoIXdhaXRGb3JOb3Rp
ZmljYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTdHlsZVNoZWV0LmgKaW5kZXggY2Y2YTFjNDAzZjJmMGI2YzY5ZmNmM2I2YmVlNzJjZDFjZTY4
NTM5ZS4uYzM1YzRmY2QzYmZhYzk0MWJjMTdmMjVmM2ZjMTFmNjU3NTk2ZWE0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYg
YmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2Vy
U3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6
bnVsbG9wdCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJs
b2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0
eWxlTGV2ZWwgbGV2ZWwsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0
ZDo6bnVsbG9wdCkKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwo
dXJsKQogICAgICAgICAsIG1fYWxsb3dsaXN0KFdURk1vdmUoYWxsb3dsaXN0KSkKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9ja2xpc3QoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2NrbGlzdDsgfQogICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9CiAg
ICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9Ci0gICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CkBAIC02
OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibG9ja2xpc3Q7CiAg
ICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogICAgIFVzZXJT
dHlsZUxldmVsIG1fbGV2ZWw7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3
cG9ydENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IDE0ZDBjNWY1YTUxMjA5OTczNWQ4NTA4ODc1MTFhZWZmNTJlNjlm
NDcuLmNhZTQyNDAxNTQ1MDdiYjY3NDgwYjU2ZTkyZGU4OGNjNjYyNmM0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCBib29sIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Q29udGVudHNTaXplKGNvbnN0IElu
dFNpemUmIGNvbnRlbnRTaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6c2V0Vmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5
b3V0U2l6ZSwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yLCBPcHRpb25hbDxkb3VibGU+
JiYgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQorYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRp
b246OnNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4m
JiBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpCiB7CiAgICAgZG91YmxlIG5ld1NjYWxlRmFj
dG9yID0gc2NhbGVGYWN0b3IudmFsdWVfb3IobV9sYXlvdXRTaXplU2NhbGVGYWN0b3IpOwogICAg
IGRvdWJsZSBuZXdFZmZlY3RpdmVXaWR0aCA9IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aC52
YWx1ZV9vcihtX21pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAppbmRleCBjNDQ2NzkzZjhkN2MxNzI0NDQ2ZWY4
OWM3ZDBiNTJkOTg2ZGZjNTFiLi4xNDYzNjJjNTJhZDBkYzMxZjg1ODhkZDRkM2U3YTM5ODFiZDU1
YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKQEAg
LTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNp
emUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdMYXlvdXRTaXplOyB9CiAKICAgICBjb25zdCBGbG9h
dFNpemUmIG1pbmltdW1MYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5b3V0
U2l6ZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Vmlld0xheW91dFNpemUoY29uc3Qg
RmxvYXRTaXplJiwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFjdG9yID0gc3RkOjpudWxsb3B0
LCBPcHRpb25hbDxkb3VibGU+JiYgZWZmZWN0aXZlV2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Vmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiwg
c3RkOjpvcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIGVmZmVjdGl2ZVdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiYgZGlzYWJsZWRBZGFwdGF0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRBZGFwdGF0aW9uczsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2V0RGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBPcHRpb25TZXQ8RGlzYWJs
ZWRBZGFwdGF0aW9ucz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5k
ZXggNTI5Zjk5NjQxMGZhY2FlNjE0ZDk4Y2FjMzJmNDMyOTI5MDgxMDZhZS4uZGU5OWY5YzAyOWJm
MDY2NGQwNmRlMTgxM2RjN2QwNzU2ODFiNmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKQEAgLTM4LDggKzM4LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3RhdGlj
IHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5LCBT
dHJpbmdWaWV3IHZhbHVlKTsKIAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlhbG9n
RmVhdHVyZXNNYXAoY29uc3QgU3RyaW5nJik7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZl
YXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXkpOwotc3RhdGlj
IE9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBj
b25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hh
cioga2V5KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3Qg
RGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4
KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jZmVhdHVyZS1zZXBhcmF0b3IK
IHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3RlciwgRmVhdHVyZU1vZGUgbW9k
ZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVz
KGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIHJldHVy
biBmZWF0dXJlczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0
IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZl
YXR1cmVzLCBjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQo
a2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCkBAIC0yMjEsNyArMjIxLDcgQEAg
c3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFw
JiBmZWF0dXJlcywgY29uc3QgY2hhcioKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJvbiIpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0
RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtl
eSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxv
YXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhciog
a2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsKICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmlu
ZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuaAppbmRleCBkNzgwZDI4OWFiY2Q3Yjg0ZWQwOWEzZTQ1MjI3MDVlNmJkZDM1
ZGZmLi5jNjdhNDRmNmNlZWRiMGM0ZGI2ZmNlYTVmZjc3NGYxYTBmY2E0ZjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRmxvYXRSZWN0OwogCiBzdHJ1Y3QgV2luZG93RmVhdHVyZXMgewotICAg
IE9wdGlvbmFsPGZsb2F0PiB4OwotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAgIE9wdGlvbmFs
PGZsb2F0PiB3aWR0aDsKLSAgICBPcHRpb25hbDxmbG9hdD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IHg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4geTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7CiAK
ICAgICBib29sIG1lbnVCYXJWaXNpYmxlIHsgdHJ1ZSB9OwogICAgIGJvb2wgc3RhdHVzQmFyVmlz
aWJsZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVy
Zm9ybWFuY2VMb2dnaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1BlcmZv
cm1hbmNlTG9nZ2luZ0NvY29hLm1tCmluZGV4IDdkMzIzOWVkNzIwZTE2ZTlmYzI0Zjc1ZjZjNjNi
NzA5YTc4ZmVkOGEuLjI4OTZmZTE5NzZmZmIxOGFkZmE3OTY2NmZlNjhlMTYzN2FiMjUwZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dnaW5nQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9QZXJmb3JtYW5jZUxvZ2dpbmdD
b2NvYS5tbQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlv
bmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkKK3N0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJp
bnQoKQogewogICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOwogICAgIG1hY2hfbXNnX3R5
cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDUxYTEzZmM0OWE1MzIx
OWRmMmY5YWUwOGNlMjVhZjkxMWI5NGQ1NjguLmJmNmEyODEzZTRkNjA2MjUzMTkyZGMyMGNhYjY5
MmZiNmFlMDBmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oCkBAIC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBV
UkwgbV9wcm90ZWN0ZWRVUkw7Ci0gICAgT3B0aW9uYWw8VVJMPiBtX2RvY3VtZW50VVJMOworICAg
IHN0ZDo6b3B0aW9uYWw8VVJMPiBtX2RvY3VtZW50VVJMOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+IG1fc2VsZlNvdXJjZTsKICAgICBTdHJpbmcgbV9z
ZWxmU291cmNlUHJvdG9jb2w7CiAgICAgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciBtX3BvbGljaWVz
OwpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1
cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRz
OwogICAgIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBtX2hh
c2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CiAgICAgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGU7Ci0gICAgbXV0
YWJsZSBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY2Fj
aGVkUmVzcG9uc2VIZWFkZXJzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY2FjaGVkUmVzcG9uc2VIZWFkZXJzOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCAxNjE0MzRlYjkyMmYyNGUxMThm
ODUwOGFjY2NmNTlmYWJiZjgwNjVkLi5hNzJiMTBhMTQ4ZTBiNzBmYzcwNGQzYjk3YTE0ZThiNjIz
YzMyODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBA
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UoY29uc3QgU3Ry
aW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1CiAvLyBkaXJlY3RpdmUtbmFtZSAgICA9IDEqKCBBTFBI
QSAvIERJR0lUIC8gIi0iICkKIC8vIGRpcmVjdGl2ZS12YWx1ZSAgID0gKiggV1NQIC8gPFZDSEFS
IGV4Y2VwdCAiOyI+ICkKIC8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBhdXRv
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRGlyZWN0aXZlKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKSAtPiBPcHRpb25hbDxQYXJzZWRE
aXJlY3RpdmU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRGlyZWN0aXZlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFBhcnNlZERpcmVj
dGl2ZT4KIHsKICAgICBza2lwV2hpbGU8aXNBU0NJSVNwYWNlPihidWZmZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmgKaW5kZXggNTQxYTVmZTZiMjlmODQ4MzZlMDdhOTI0MWIwM2YyYWZmZWU4
OWViZC4uYjMyZTg4NDVjMGRmOGNhNWYwOWQ5N2M2NWNmOTAxMjE0YWJiODA5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJp
bmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8UGFyc2VkRGlyZWN0aXZlPiBwYXJzZURpcmVj
dGl2ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFBhcnNlZERpcmVjdGl2ZT4gcGFy
c2VEaXJlY3RpdmUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdm9p
ZCBwYXJzZVJlcG9ydFVSSShQYXJzZWREaXJlY3RpdmUmJik7CiAgICAgdm9pZCBhZGREaXJlY3Rp
dmUoUGFyc2VkRGlyZWN0aXZlJiYpOwogICAgIHZvaWQgYXBwbHlTYW5kYm94UG9saWN5KFBhcnNl
ZERpcmVjdGl2ZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKaW5kZXggZjNiYjFhN2Ji
OWQzYjI5MzI0MzZiM2MxYzllZTUzY2IyMjNiZDhhYy4uOTQ4ZDhjYzg3NDI4ZGU4OWEwZmM4MDk5
YzY1YmQwM2FjYWNkNWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gZGVjb2RlKERl
Y29kZXImKTsKIAogICAgIGVudW0gRW1wdHlUYWcgeyBFbXB0eSB9OwogICAgIHN0cnVjdCBNYXJr
YWJsZVRyYWl0cyB7CkBAIC04NCwyMCArODQsMjAgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycz4gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzPiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyBoZWFkZXJzOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXpl
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIg
Pj4gaGVhZGVyc1NpemU7CiAgICAgaWYgKCFoZWFkZXJzU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytp
KSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaGVhZGVyOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gaGVhZGVyOwogICAgICAgICBkZWNvZGVyID4+IGhlYWRlcjsKICAgICAgICAg
aWYgKCFoZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPiBoZWFkZXJUeXBlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGU+IGhlYWRl
clR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVyVHlwZTsKICAgICAgICAgaWYgKCFoZWFk
ZXJUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNSw3ICsxMDUs
NyBAQCBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZAogICAgIH0KICAgICBoZWFkZXJzLm1faGVhZGVy
cy5zaHJpbmtUb0ZpdCgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBodHRwU3RhdHVzQ29kZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gaHR0cFN0YXR1c0NvZGU7CiAgICAgZGVjb2RlciA+PiBodHRw
U3RhdHVzQ29kZTsKICAgICBpZiAoIWh0dHBTdGF0dXNDb2RlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggN2IyYTcyMjdiNTUxNjhhZDU5Y2FhZGM3NzEw
MzMyNTUwMTBlOTAyMC4uNWMxM2ZlYTI4ZGYzN2YxZTIzZjI4Y2MzMjk1Y2E3ZTEyMmIzYjAzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgc2No
ZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCkK
K0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
KGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2Fy
ZCkKICAgICA6IG1fcG9saWN5KHBvbGljeSkKICAgICAsIG1fc2NoZW1lKHNjaGVtZSkKICAgICAs
IG1faG9zdChob3N0KQpAQCAtOTYsNyArOTYsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZTo6cG9ydE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKG1fcG9y
dEhhc1dpbGRjYXJkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
ID0gdXJsLnBvcnQoKTsKIAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5oCmluZGV4IDhhZmYxZDllZjk3YjE5YjE5NzljMmI2Zjc1YzlhYmU2NTRh
OThlOTEuLmEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZS5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0
LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RI
YXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpOworICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBj
b25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxk
Y2FyZCk7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX3NjaGVtZTsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIFN0cmluZyBt
X3BhdGg7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IG1fcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQxNl90PiBtX3BvcnQ7CiAKICAgICBib29sIG1faG9zdEhhc1dpbGRjYXJkOwogICAgIGJv
b2wgbV9wb3J0SGFzV2lsZGNhcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IGI4N2Q4NWFm
ZDEzNzU0OTQzNzQ1NmZkYWMzNGNiYjY5MzAyZTUxNjUuLjkyNTY3NWYzMzBhZTliZTgyNTIxODM5
MDFlNzdlMjk2ZWJlYmI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC0xOTgsNyArMTk4
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShTdHIKIC8vICAgICAgICAgICAgICAgICAgIC8gKCBb
IHNjaGVtZSAiOi8vIiBdIGhvc3QgWyBwb3J0IF0gWyBwYXRoIF0gKQogLy8gICAgICAgICAgICAg
ICAgICAgLyAiJ3NlbGYnIgogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9w
dGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4gQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4gQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzM2LDcgKzMzNiw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3Q6OlNvdXJjCiAvLyAgICAgICAgICAgICAgICAgICAgIDsgPHNjaGVtZT4gcHJvZHVj
dGlvbiBmcm9tIFJGQyAzOTg2CiAvLyBzY2hlbWUgICAgICA9IEFMUEhBICooIEFMUEhBIC8gRElH
SVQgLyAiKyIgLyAiLSIgLyAiLiIgKQogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFy
c2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigp
IDw9IGJ1ZmZlci5lbmQoKSk7CiAKQEAgLTM2MCw3ICszNjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxTdHJpbmc+IENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpcwogLy8gICAgICAgICAgICAgICAgICAgLyAiKiIKIC8vIGhvc3QtY2hhciAgICAgICAg
ID0gQUxQSEEgLyBESUdJVCAvICItIgogLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+IENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVy
PENoYXJhY3RlclR5cGU+IGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6SG9zdD4gQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VIb3N0KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIEFTU0VSVChidWZmZXIucG9zaXRpb24o
KSA8PSBidWZmZXIuZW5kKCkpOwogCkBAIC0zOTYsNyArMzk2LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dDo6SG9zdD4KICAgICByZXR1cm4gaG9zdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
OjpwYXJzZVBhdGgoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIEFTU0VSVChidWZmZXIucG9zaXRpb24o
KSA8PSBidWZmZXIuZW5kKCkpOwogICAgIApAQCAtNDE1LDcgKzQxNSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzCiAKIC8vIHBvcnQgICAgICAgICAgICAgID0gIjoiICggMSpESUdJVCAvICIq
IiApCiAvLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9ydD4gQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdDo6cGFyc2VQb3J0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVm
ZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0OjpwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQoKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggODE3MzgwN2IxMzY1MWQwZjlkYTU4MmYwMWQ4
OGU0YTNlNzliYzkyMy4uZjU3NDRlMmE5OTM2ZDgzYzM5MTdmYTY2NjgyMmZmZjJkYjExMjU2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgICAgICBi
b29sIGhhc1dpbGRjYXJkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIHN0cnVjdCBQb3J0IHsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiB2YWx1ZTsKICAgICAgICAgYm9vbCBoYXNXaWxkY2FyZCB7IGZhbHNlIH07CiAgICAg
fTsKICAgICBzdHJ1Y3QgU291cmNlIHsKQEAgLTczLDExICs3MywxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNQcm90b2NvbEFsbG93ZWRCeVN0YXIoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPFNvdXJjZT4gcGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9u
YWw8U3RyaW5nPiBwYXJzZVNjaGVtZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxIb3N0PiBw
YXJzZUhvc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8UG9ydD4gcGFyc2VQb3J0KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4gcGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0ZDo6b3B0aW9uYWw8U291cmNlPiBwYXJzZVNvdXJjZShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gcGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDxIb3N0PiBwYXJzZUhvc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxQb3J0
PiBwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBhcnNl
UGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlTm9uY2VTb3VyY2UoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBwYXJzZUhhc2hTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJU
eXBlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9s
bGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cAppbmRleCBiNmE5YzM2ZDEyZWJkZDk2MGFjNjc3MDlmMGQxNzY0YzI1ZWY4YzQzLi43OWZiOTVh
YTgwMTg3MzVmYmNhMGY1MDZmZWVkNmUwOWIxNDIxYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
IHJldHVybiBkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJ
c0NvcHlLZXlEb3duKTsKIH0KIAotT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0
ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCA0OTZkOGI3ODI2MDgyMzc1NTg2
YTBiMzE5MWYzZDM2NDZlYTY1ZDhkLi5mNzk0ODliZDE4ZWFjYTI4N2IyYzg2NDI1NTY1NGJhOGQ5
YzM5MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
Q29udGVudENoYW5nZU9ic2VydmVyJiBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsKICAgICAgICAg
Y29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwotICAgICAgICBPcHRpb25hbDxib29sPiBtX3dhc0hp
ZGRlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3dhc0hpZGRlbjsKICAgICAgICAg
Ym9vbCBtX2hhZFJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXggZjlhNDMwYTFkYmRlNWRiZjNkMGFhYzE4
MGQ1YTRmMGY3YWYyZDA4Yy4uMjA1OTAwNGU3MDdlYzM1NDNjOGJiYThkNTdlNmQwYTg1ZjM4YjVm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtNjEy
LDcgKzYxMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Nyb2xs
KCkKICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiB9
CiAKLXN0YXRpYyBJbnRQb2ludCBhZGp1c3RBdXRvc2Nyb2xsRGVzdGluYXRpb25Gb3JJbnNldEVk
Z2VzKEludFBvaW50IGF1dG9zY3JvbGxQb2ludCwgT3B0aW9uYWw8SW50UG9pbnQ+IGluaXRpYWxB
dXRvc2Nyb2xsUG9pbnQsIEZsb2F0UmVjdCB1bm9ic2N1cmVkUm9vdFZpZXdSZWN0KQorc3RhdGlj
IEludFBvaW50IGFkanVzdEF1dG9zY3JvbGxEZXN0aW5hdGlvbkZvckluc2V0RWRnZXMoSW50UG9p
bnQgYXV0b3Njcm9sbFBvaW50LCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBpbml0aWFsQXV0b3Nj
cm9sbFBvaW50LCBGbG9hdFJlY3QgdW5vYnNjdXJlZFJvb3RWaWV3UmVjdCkKIHsKICAgICBJbnRQ
b2ludCByZXN1bHRQb2ludCA9IGF1dG9zY3JvbGxQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCmluZGV4IGZl
MWRmNmY2OTFiOWQxNGRiOTNjNjViZWIzYzc3MWE0ZGI5NTZjYzMuLjg1YjI5MGFjYmE1NzM5Njhi
MmU2Y2E0ZjY0ODFmNmI3MzUzNmEzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKQEAgLTEwNyw4ICsxMDcsOCBA
QCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtU2F2ZVN0YXRlQmVmb3JlU3RhcnRp
bmcoKQogfQogCiBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1l
OwotICAgIE9wdGlvbmFsPGZsb2F0PiBjcHVVc2FnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjcHVVc2FnZTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgcHJldmlvdXNVdGltZSB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
cHJldmlvdXNTdGltZSB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdD
b250cm9sbGVyTWFjLm1tCmluZGV4IDU4NjQ5MzE5NjI2YjBmY2ZlMmEyN2RlNWMyNmZiYWM4M2Y1
ZTJiN2IuLmQzNDhkNjA5MzE4MzZiMTQzMmI3ZDExNDJiMDVhMWJhMGNmNGJkYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02NCw3ICs2NCw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNh
dGlvbkZsYWdzOjpJc0NvcHlLZXlEb3duKTsKIH0KICAgICAKLU9wdGlvbmFsPERyYWdPcGVyYXRp
b24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0
YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5mbGFn
cygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJc01vZGFsKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQppbmRleCBkMDE5NTQzNzQ4YTNkMjU2MTJjNDgzOTA2MTFhOTNkMmViYzAwMjc0Li5jZGE3
NDhhOTM2ODUxZjJjYjRkMjM3NTZlYTAzYmUzZmZiMTI1ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0xMDc4LDEwICsxMDc4LDEwIEBAIEludFBv
aW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9z
Y3JvbGwoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAg
ICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSk7
CiAKICAgICBhdXRvIGZyYW1lID0gdG9Vc2VyU3BhY2VGb3JQcmltYXJ5U2NyZWVuKHNjcmVlblJl
Y3RGb3JEaXNwbGF5KHBhZ2UtPmNocm9tZSgpLmRpc3BsYXlJRCgpKSk7Ci0gICAgcmV0dXJuIG1f
bGFzdEtub3duTW91c2VQb3NpdGlvbiArIGF1dG9zY3JvbGxBZGp1c3RtZW50RmFjdG9yRm9yU2Ny
ZWVuQm91bmRhcmllcyhtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24sIGZyYW1lKTsKKyAg
ICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpICsg
YXV0b3Njcm9sbEFkanVzdG1lbnRGYWN0b3JGb3JTY3JlZW5Cb3VuZGFyaWVzKG1fbGFzdEtub3du
TW91c2VHbG9iYWxQb3NpdGlvbiwgZnJhbWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDEzOWY0ZTc2NTFkYzg4MTE3MDRlYzM0ZWY0NmI5MzE0ZjgxY2NkNzUuLmU4MDU3ZjM4
ZDcwM2Q2NjZmZjA0YjA4OTJkZjA1OWMwNWRlYjBkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5j
aHJvbml6ZVN0YXRlRnJvbVNjcm9sbGluZ1RyZWUoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCi0gICAgbV9zY3JvbGxpbmdU
cmVlLT50cmF2ZXJzZVNjcm9sbGluZ1RyZWUoWyZdKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFNj
cm9sbGluZ05vZGVUeXBlLCBPcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgT3B0
aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5j
ZUxhc3RDb21taXQpIHsKKyAgICBtX3Njcm9sbGluZ1RyZWUtPnRyYXZlcnNlU2Nyb2xsaW5nVHJl
ZShbJl0oU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2lu
dD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpIHsK
ICAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICYmIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KSB7
CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9uaXplU3RhdGVGcm9tU2Nyb2xsaW5nVHJlZSAt
IG5vZGUgIiA8PCBub2RlSUQgPDwgIiBzY3JvbGwgcG9zaXRpb24gIiA8PCBzY3JvbGxQb3NpdGlv
bik7CiAgICAgICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9k
ZUlELCBzY3JvbGxQb3NpdGlvbi52YWx1ZSgpLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xs
VHlwZTo6VXNlciwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKQEAgLTM0Nywx
MyArMzQ3LDEzIEBAIEZyYW1lVmlldyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVW
aWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjphcHBseVNjcm9sbFVwZGF0ZShT
Y3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9s
bFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjphcHBs
eVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRW
aWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgYXBwbHlQZW5k
aW5nU2Nyb2xsVXBkYXRlcygpOwogICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Nj
cm9sbChzY3JvbGxpbmdOb2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgc2Nyb2xsVHlwZSwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiB9CiAKLXZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNj
cm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQg
c2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpv
cHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3Jv
bGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMzk3LDEzICsz
OTcsMTMgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbmNpbGVTY3JvbGxp
bmdTdGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldywgY28KIAogICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxpbmcsIHN0cmVhbSA8PCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkgPDwgIiBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yICIgPDwgdGhpcyA8PCAiIHJlY29uY2lsZVNjcm9sbGluZ1N0YXRlIHNj
cm9sbFBvc2l0aW9uICIgPDwgc2Nyb2xsUG9zaXRpb24gPDwgIiB0eXBlICIgPDwgc2Nyb2xsVHlw
ZSA8PCAiIHN0YWJpbGl0eSAiIDw8IHZpZXdwb3J0UmVjdFN0YWJpbGl0eSA8PCAiICIgPDwgc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxh
eW91dFZpZXdwb3J0UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmll
d3BvcnRSZWN0OwogCiAgICAgV1RGOjpzd2l0Y2hPbihsYXlvdXRWaWV3cG9ydE9yaWdpbk9yT3Zl
cnJpZGVSZWN0LAotICAgICAgICBbJmZyYW1lVmlld10oT3B0aW9uYWw8RmxvYXRQb2ludD4gb3Jp
Z2luKSB7CisgICAgICAgIFsmZnJhbWVWaWV3XShzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IG9y
aWdpbikgewogICAgICAgICAgICAgaWYgKG9yaWdpbikKICAgICAgICAgICAgICAgICBmcmFtZVZp
ZXcuc2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50KG9yaWdpbi52YWx1ZSgp
KSwgRnJhbWVWaWV3OjpUcmlnZ2VyTGF5b3V0T3JOb3Q6Ok5vKTsKLSAgICAgICAgfSwgWyZmcmFt
ZVZpZXcsICZsYXlvdXRWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVjdFN0YWJpbGl0eV0oT3B0aW9u
YWw8RmxvYXRSZWN0PiBvdmVycmlkZVJlY3QpIHsKKyAgICAgICAgfSwgWyZmcmFtZVZpZXcsICZs
YXlvdXRWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVjdFN0YWJpbGl0eV0oc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IG92ZXJyaWRlUmVjdCkgewogICAgICAgICAgICAgaWYgKCFvdmVycmlkZVJlY3Qp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03OTcsNyArNzk3LDcgQEAgYm9vbCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU2Ny
b2xsaW5nTm9kZUlEIG4KICNlbmRpZgogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxG
cmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgaWYgKG1fc2Nyb2xsaW5nVHJlZSkKICAgICAgICAgbV9z
Y3JvbGxpbmdUcmVlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJh
bWVzUGVyU2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA4NzE0OThlZjY0NjQ5YzlmNzhm
ZmUyYTI1M2ZiOTYzNGY0ZWE0Zjc2Li4yYzgwZGUyMmU2MjBiYWI0ZGYzOGViMTJmMjM1NTNjYjM1
Y2IyNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlw
ZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBl
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05v
ZGVJRCwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIGZpbmFsOwpAQCAtMTQ2LDcgKzE0Niw3IEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnMoU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb24+KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1N5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNw
bGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vj
b25kKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3Vic2Nyb2xsZXJzKCkg
Y29uc3QgZmluYWw7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpOwogICAgIHZvaWQgdXBkYXRlRXZlbnRUcmFja2lu
Z1JlZ2lvbnMoKTsKICAgICAKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9h
dFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50Jiwgc3RkOjpvcHRpb25hbDxG
bG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXdGb3JTY3Jv
bGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IGVj
Mzk5MDI3NDgzMDRkZDEwOGQ2NDI2Zjk5MTU3ZGE2ZWJiZDgxNGYuLmRhMTFlYzA1ZmM1Nzc3OTg2
YmQwOGRkNGZmMmY2OGM4ODk4MzUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtNzYsNyArNzYsNyBA
QCBzdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZz
ZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2ZmcwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0
VHlwZT4KLXN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRC
ZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0
VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91
dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24o
Y29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0
VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQpCiB7CiAgICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAgaWYgKCFkaWZmZXJlbmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApp
bmRleCAxZWNmYWQxNmUxMzhlMGZiYzU5MThmZDIyYjdhYmRmNjQ3YjY3MzRlLi4xNTVhOTc0NjFk
MjBjMDc1NjdkZWJmYmRlYjhmYjYwNDI0NWJkNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtNzMsNyArNzMs
NyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE91dHB1dFR5cGU+IE91dHB1dFR5cGUgY29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gMC4wKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFVu
aXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8
VW5pdFR5cGU+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVu
c2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBl
JiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2
ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVj
dGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogfTsKIAogdXNpbmcgTGF5b3V0
U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQs
IExheW91dFJlY3Q+OwpAQCAtODIsMTMgKzgyLDEzIEBAIHVzaW5nIEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OwogdGVt
cGxhdGUgPD4gdGVtcGxhdGUgPD4KIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNlZFNjYWxlRmFj
dG9yICovKSBjb25zdDsKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1XRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xv
c2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRp
b25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBm
bG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRp
cmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CiBG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNv
bnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7CiB0ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
b3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworV0VCQ09SRV9F
WFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgTGF5b3V0
U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBm
bG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9u
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CiAKIAogY29uc3QgdW5zaWduZWQgaW52YWxp
ZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNTkwOTg0ZjM1NjdjM2M4
ZDEyOTAwN2RjNTE3YmY2NWJlYTA5NjQ1MS4uNjY3NDY2M2FhZTY0MGE3YWNiMjY1ZTg5MDg2MWRh
Mzg1N2EwMzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAvLyBT
aG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBnaXZlbiBmcmFtZSB2aWV3IGhhcyBiZWVuIGxh
aWQgb3V0LgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmll
dyYpIHsgfQogCi0gICAgdXNpbmcgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVjdCA9
IFdURjo6VmFyaWFudDxPcHRpb25hbDxGbG9hdFBvaW50PiwgT3B0aW9uYWw8RmxvYXRSZWN0Pj47
CisgICAgdXNpbmcgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVjdCA9IFdURjo6VmFy
aWFudDxzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVTY3JvbGxpbmdTdGF0ZShGcmFtZVZpZXcmLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgTGF5b3V0Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVj
dCYsIFNjcm9sbFR5cGUsIFZpZXdwb3J0UmVjdFN0YWJpbGl0eSwgU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbikgeyB9CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBz
bG93IHJlcGFpbnQgb2JqZWN0cyBzZXQgY2hhbmdlcy4KQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJs
aWM6CiAgICAgLy8gVGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1bmlxdWUg
dG8gdGhlIHRocmVhZGVkIHNjcm9sbGluZyBhcmNoaXRlY3R1cmUuIAogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0
U2Nyb2xsUG9zaXRpb25VcGRhdGUoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBJbnRQb2ludCYsIFNj
cm9sbFR5cGUgPSBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9sbENsYW1waW5nID0gU2Ny
b2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
U2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1h
aW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNj
cm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6
b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+
KSB7IH0KIAogICAgIC8vIENyZWF0ZSBhbiB1bnBhcmVudGVkIG5vZGUuCiAgICAgdmlydHVhbCBT
Y3JvbGxpbmdOb2RlSUQgY3JlYXRlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5ld05vZGVJRCkgeyByZXR1cm4gbmV3Tm9kZUlEOyB9CkBAIC0xNzUsNyArMTc1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IC8qIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQg
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiAvKiBub21pbmFsRnJhbWVz
UGVyU2Vjb25kICovKSB7IH0KIAogICAgIHN0YXRpYyBTdHJpbmcgc3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zQXNUZXh0KE9wdGlvblNldDxTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4pOwog
ICAgIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggNzNlOTJhNjRkMjMyNWM1ZTFlYTU2OGM0NGQyZDZmOGRk
ZmE2YTc1Mi4uYTFkOWMwODRkOGYyOWNjMzBmNTQyMGRhNTVlNDA1MmFkZTI4YWYxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0
U2l6ZSBtX2NvbnRlbnRTaXplOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4g
bV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBt
X3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7CiB9OwogCiBjbGFzcyBCYXNpY1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Ig
ewpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX3NuYXBBbmltYXRp
b25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07CiAgICAgYm9vbCBtX2ZvcmNlTGluZWFyQW5pbWF0
aW9uQ3VydmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJl
c0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9wcmVk
aWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9w
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAxODJmMDdlNjg3NDY0YTY2
ZDYzZDA0M2ZjN2NhNTVkZTYyYjgxZjkxLi5lYTQxZjVhMTQxNjg1ZGJlYWY5MDA5YTFlNDQ3NjRm
NmY4NGUyOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNzQs
NyArMTc0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxvYXRQb2kKICAgICBzZXRQcm9wZXJ0eUNoYW5n
ZWQoUHJvcGVydHk6Ok1heExheW91dFZpZXdwb3J0T3JpZ2luKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUo
T3B0aW9uYWw8RmxvYXRTaXplPiB2aWV3cG9ydFNpemUpCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZShzdGQ6Om9wdGlv
bmFsPEZsb2F0U2l6ZT4gdmlld3BvcnRTaXplKQogewogICAgIGlmICh2aWV3cG9ydFNpemUgPT0g
bV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggODdiMGM3Yzc2OWZhNWIxMTNiNDVhMDg1YWUzYjNm
NWI3ZTE5MTgzOS4uMDY3YTg4MWZkNjBjMmE0NzM5NmQ5YTRjMzMyNTExMWMzMWQ1NTQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoK
ICAgICBGbG9hdFBvaW50IG1heExheW91dFZpZXdwb3J0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhMYXlvdXRWaWV3cG9ydE9yaWdpbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxvYXRQb2ludCYpOwogCi0gICAgT3B0aW9u
YWw8RmxvYXRTaXplPiBvdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemU7IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZShPcHRpb25hbDxGbG9hdFNpemU+KTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoKSBj
b25zdCB7IHJldHVybiBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplOyB9OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoc3RkOjpvcHRpb25h
bDxGbG9hdFNpemU+KTsKIAogICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGVhZGVySGVpZ2h0
KGludCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9sYXlv
dXRWaWV3cG9ydDsKICAgICBGbG9hdFBvaW50IG1fbWluTGF5b3V0Vmlld3BvcnRPcmlnaW47CiAg
ICAgRmxvYXRQb2ludCBtX21heExheW91dFZpZXdwb3J0T3JpZ2luOwotICAgIE9wdGlvbmFsPEZs
b2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZTsKIAogICAgIGZsb2F0IG1f
ZnJhbWVTY2FsZUZhY3RvciB7IDEgfTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAK
aW5kZXggNzQ3MTQ4MmNmNGEzZTA1MzM4NmJiMDhlODdiNWIzNmE1ZWMzNjliYi4uMGVjMjdhMmUw
MWI5ZjY3MTFkMDliMjJjZGZjNjQ4MTVkODU1NGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTIzNSwxNCArMjM1LDE0IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZTo6dHJhdmVyc2VTY3JvbGxpbmdUcmVlKFZpc2l0b3JGdW5jdGlvbiYm
IHZpc2l0b3JGdW5jdGlvbikKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dHJhdmVyc2VTY3JvbGxpbmdU
cmVlUmVjdXJzaXZlKFNjcm9sbGluZ1RyZWVOb2RlJiBub2RlLCBjb25zdCBWaXNpdG9yRnVuY3Rp
b24mIHZpc2l0b3JGdW5jdGlvbikKIHsKICAgICBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0
ID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbjsKICAgICBpZiAoaXM8U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAgIGF1dG8mIHNjcm9sbGlu
Z05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4obm9kZSk7CiAgICAg
ICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5nTm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24o
KTsKICAgICAgICAgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQgPSBzY3JvbGxpbmdOb2RlLnNjcm9s
bGVkU2luY2VMYXN0Q29tbWl0KCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4g
bGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlv
dXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZT4obm9kZSkpCiAgICAgICAgIGxheW91dFZpZXdwb3J0T3JpZ2luID0gZG93bmNhc3Q8U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkubGF5b3V0Vmlld3BvcnQoKS5sb2Nh
dGlvbigpOwogCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpub3RpZnlS
ZWxhdGVkTm9kZXNSZWN1cnNpdmUoU2Nyb2xsaW5nVHJlZU5vZGUmIG5vZGUpCiAgICAgfQogfQog
Ci1PcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlSUQo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWU6Omxh
dGNoZWROb2RlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xhdGNoaW5nQ29udHJvbGxlci5s
YXRjaGVkTm9kZUlEKCk7CiB9CkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWU6OnNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKEZsb2F0UG9pbnQgcG9zaXRpb24pCiAgICAg
bV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdUcmVlOjpzZXRHZXN0dXJlU3RhdGUoT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0R2VzdHVyZVN0
YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2NrIH07CiAgICAgbV90cmVlU3Rh
dGUuZ2VzdHVyZVN0YXRlID0gZ2VzdHVyZVN0YXRlOwogfQogCi1PcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gU2Nyb2xsaW5nVHJlZTo6Z2VzdHVyZVN0YXRlKCkKK3N0ZDo6b3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IFNjcm9sbGluZ1RyZWU6Omdlc3R1cmVTdGF0ZSgp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9OwogICAgIHJldHVybiBt
X3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGU7CkBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlOjpzY3JvbGxCeVNpbXVsYXRpbmdXaGVlbEV2ZW50Rm9yVGVzdGluZyhTY3JvbGxpbmdO
b2RlSUQgbm9kZUkKICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5v
ZGUpLnNjcm9sbEJ5KGRlbHRhKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQ
ZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit2b2lkIFNjcm9sbGluZ1RyZWU6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICBtX3RyZWVTdGF0ZS5kaXNwbGF5
SUQgPSBkaXNwbGF5SUQ7CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp3
aWxsUHJvY2Vzc1doZWVsRXZlbnQoKQogICAgIG1fbGFzdFdoZWVsRXZlbnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBTY3JvbGxpbmdUcmVlOjpu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFNjcm9sbGlu
Z1RyZWU6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X3RyZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4gbV90cmVlU3RhdGUubm9taW5hbEZyYW1lc1Bl
clNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aAppbmRleCBkY2YxNGNkNmI2YmYwNTBiZTc5Nzk2MjY3N2NiYjI5Yjg0NTBjYzczLi41ZDkzZTQ0
ZGRhYjhmM2U2ZDlmZDk1MDRjNzFmZWUzZjVhZmJkOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGlj
OgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlRm9ySUQo
U2Nyb2xsaW5nTm9kZUlEKSBjb25zdDsKIAotICAgIHVzaW5nIFZpc2l0b3JGdW5jdGlvbiA9IFdU
Rjo6RnVuY3Rpb248dm9pZCAoU2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxpbmdOb2RlVHlwZSwgT3B0
aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47CisgICAg
dXNpbmcgVmlzaXRvckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JvbGxpbmdOb2Rl
SUQsIFNjcm9sbGluZ05vZGVUeXBlLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbFBv
c2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBi
b29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47CiAgICAgdm9pZCB0cmF2ZXJzZVNjcm9sbGlu
Z1RyZWUoVmlzaXRvckZ1bmN0aW9uJiYpOwogCiAgICAgLy8gQ2FsbGVkIGFmdGVyIGEgc2Nyb2xs
aW5nIHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBhIHNjcm9sbCBhbmQgdXBkYXRlZCBpdHMgbGF5ZXJz
LgpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdp
bGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7
CiAKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdE5vZGUuZ2V0KCk7IH0KLSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2Rl
SUQ+IGxhdGNoZWROb2RlSUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05v
ZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9kZSgp
OwogCiAgICAgYm9vbCBoYXNGaXhlZE9yU3RpY2t5KCkgY29uc3QgeyByZXR1cm4gISFtX2ZpeGVk
T3JTdGlja3lOb2RlQ291bnQ7IH0KQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAKICAgICBM
b2NrJiB0cmVlTG9jaygpIFdURl9SRVRVUk5TX0xPQ0sobV90cmVlTG9jaykgeyByZXR1cm4gbV90
cmVlTG9jazsgfQogCi0gICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNw
bGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCk7
CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKTsKICAgICAKICAgICBib29sIGhhc1Byb2Nlc3Nl
ZFdoZWVsRXZlbnRzUmVjZW50bHkoKTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAg
c3RydWN0IFNjcm9sbFVwZGF0ZSB7CiAgICAgICAgIFNjcm9sbGluZ05vZGVJRCBub2RlSUQgeyAw
IH07CiAgICAgICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIE9wdGlvbmFs
PEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOwogICAgICAgICBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uIHVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24geyBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uOjpTeW5jIH07CiAgICAgICAgIAogICAgICAgICBib29sIGNhbk1lcmdl
KGNvbnN0IFNjcm9sbFVwZGF0ZSYgb3RoZXIpIGNvbnN0CkBAIC0yNTEsMTAgKzI1MSwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgRmxvYXRQb2ludCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpIGNvbnN0
IFdURl9SRVFVSVJFU19MT0NLKG1fdHJlZVN0YXRlTG9jayk7CiAgICAgdm9pZCBzZXRNYWluRnJh
bWVTY3JvbGxQb3NpdGlvbihGbG9hdFBvaW50KTsKIAotICAgIHZvaWQgc2V0R2VzdHVyZVN0YXRl
KE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7Ci0gICAgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSgpOworICAgIHZvaWQgc2V0R2VzdHVyZVN0
YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUoKTsKIAotICAgIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpOworICAgIHN0
ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKCk7CiAK
ICAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpIFdURl9SRVFVSVJFU19MT0NL
KG1fdHJlZUxvY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsTm9kZXMoKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX3RyZWVMb2NrKTsKQEAgLTI5NSw4ICsyOTUsOCBAQCBwcml2YXRlOgogICAgICAgICBFdmVu
dFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5nUmVnaW9uczsKICAgICAgICAgRmxvYXRQb2lu
dCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbjsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEIHsgMCB9OwotICAgICAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxG
cmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGU7CiAgICAgICAgIEhhc2hTZXQ8U2Nyb2xsaW5nTm9k
ZUlEPiBub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5kaW5nOwogICAgICAgICBIYXNoU2V0PFNjcm9s
bGluZ05vZGVJRD4gbm9kZXNXaXRoQWN0aXZlU2Nyb2xsU25hcDsKICAgICAgICAgSGFzaFNldDxT
Y3JvbGxpbmdOb2RlSUQ+IG5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyMjAzY2UyZjMwYjJlY2U2ZjUyYmZiYzUzYzQ2OWJm
ZDc1ZTdkZTU1Li5mNjI2ZDlkNjViZjU4MTE4NTJiZTJiNTEwNGViYjMzZGFiYzYwM2NkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nUwogICAgICAgICBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplID0g
c3RhdGUub3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoKTsKIH0KIAotYm9vbCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0
Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJp
ZGVMYXlvdXRWaWV3cG9ydCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCkK
IHsKICAgICByZXR1cm4gcG9zaXRpb24gPT0gY3VycmVudFNjcm9sbFBvc2l0aW9uKCkgJiYgKCFv
dmVycmlkZUxheW91dFZpZXdwb3J0IHx8IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQudmFsdWUoKSA9
PSBtX2xheW91dFZpZXdwb3J0KTsKIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBGbG9hdFJlY3QgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6bGF5b3V0Vmlld3BvcnRGb3JTY3JvbGxQb3Np
dGlvbihjb25zdAogICAgIHJldHVybiBsYXlvdXRWaWV3cG9ydDsKIH0KIAotdm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQ
b3NpdGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpCit2b2lk
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OnVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVu
dFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZp
ZXdwb3J0KQogewogICAgIGlmIChvdmVycmlkZUxheW91dFZpZXdwb3J0KQogICAgICAgICBzZXRM
YXlvdXRWaWV3cG9ydChvdmVycmlkZUxheW91dFZpZXdwb3J0LnZhbHVlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDZhZGYwYTU2YzNmMzZlNjliZDE5YjZhZTA2ODNlZDZh
YzU4MzZmZGMuLjkyMjA0YThmMDMxMmQzMjg1NzhmM2MzOWNiOGZlZDBiNDMzNzdhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgog
ICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBzY3JvbGxCZWhhdmlvckZvckZpeGVk
RWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2JlaGF2aW9yRm9yRml4ZWQ7IH0KIAogcHJpdmF0
ZToKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlv
bmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAgIGJvb2wgc2Nyb2xsUG9zaXRpb25BbmRMYXlv
dXRWaWV3cG9ydE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBPcHRpb25hbDxGbG9h
dFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
Vmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
KSBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRj
aChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG92
ZXJyaWRlTGF5b3V0Vmlld3BvcnQpIG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3
cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCBzY2FsZSwgU2Ny
b2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzID0gU3RpY2tUb0RvY3VtZW50Qm91bmRzKSBjb25z
dDsKIAogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzQsNyArNzQsNyBA
QCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xheW91dFZpZXdwb3J0OwogICAgIEZsb2F0UG9p
bnQgbV9taW5MYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBGbG9hdFBvaW50IG1fbWF4TGF5b3V0
Vmlld3BvcnRPcmlnaW47Ci0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX292ZXJyaWRlVmlzdWFs
Vmlld3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX292ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplOwogICAgIAogICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZhY3RvciB7IDEg
fTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5n
Q29udHJvbGxlci5jcHAKaW5kZXggNGFkZDlmYjNmODdlOTZjOTYwYmExMGNhNzdjMjc1NDg0Mjkx
OGE0OS4uNWU1ZWZlNjAzNTgyNTBmZTI5ZDMwOTBhMDdlNDViZTRmZTJhMmQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpyZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW4KICAgICB9CiB9CiAKLU9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0Nv
bnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWVM
YXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nRGF0YUZvckV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBhbGxvd0xhdGNoaW5nKSBjb25zdAorc3RkOjpvcHRp
b25hbDxTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJv
Y2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0Rh
dGFGb3JFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgYWxs
b3dMYXRjaGluZykgY29uc3QKIHsKICAgICBpZiAoIWFsbG93TGF0Y2hpbmcpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNj
cm9sCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8U2Nyb2xsaW5nTm9k
ZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdD
b250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICBpZiAobV9sYXRjaGVkTm9kZUFuZFN0ZXBzKQpAQCAt
ODEsNyArODEsNyBAQCBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRj
aGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNj
cm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRy
b2xsZXI6OmxhdGNoZWROb2RlQW5kU3RlcHMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxp
bmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBz
PiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUFuZFN0ZXBzKCkg
Y29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICBy
ZXR1cm4gbV9sYXRjaGVkTm9kZUFuZFN0ZXBzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5o
CmluZGV4IDI4OWExYzQwMDg4MTczYjQ4YzNhZTQ1MGQ2NmVmYTFiZTVmNzE1YzguLjY5YmFlN2Vl
MWYyNWRiYzdiYzk5NDQ5ODIzY2Y2MWUwZDdmMDc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250
cm9sbGVyLmgKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlY2VpdmVk
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwcz4sIGJvb2wgYWxsb3dMYXRjaGluZyk7CiAKLSAgICBPcHRpb25hbDxT
Y3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBzPiBsYXRjaGluZ0RhdGFGb3JFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29sIGFsbG93TGF0Y2hpbmcpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gbGF0Y2hpbmdEYXRh
Rm9yRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgYm9vbCBhbGxvd0xhdGNoaW5nKSBj
b25zdDsKICAgICB2b2lkIG5vZGVEaWRIYW5kbGVFdmVudChTY3JvbGxpbmdOb2RlSUQsIE9wdGlv
blNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgYm9vbCBhbGxvd0xhdGNoaW5nKTsKIAotICAgIE9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4g
bGF0Y2hlZE5vZGVJRCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQcm9j
ZXNzaW5nU3RlcHM+IGxhdGNoZWROb2RlQW5kU3RlcHMoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNjcm9sbGluZ05vZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gbGF0Y2hlZE5vZGVBbmRTdGVw
cygpIGNvbnN0OwogCiAgICAgdm9pZCBub2RlV2FzUmVtb3ZlZChTY3JvbGxpbmdOb2RlSUQpOwog
ICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9kZSgpOwpAQCAtNjMsOCArNjMsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbGF0Y2hlZE5vZGVJc1JlbGV2YW50KCkgY29uc3Q7CiAKICAgICBtdXRhYmxlIExv
Y2sgbV9sYXRjaGVkTm9kZUxvY2s7Ci0gICAgT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nl
c3NpbmdTdGVwcz4gbV9sYXRjaGVkTm9kZUFuZFN0ZXBzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9s
YXRjaGVkTm9kZUxvY2spOwotICAgIE9wdGlvbmFsPE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzPj4gbV9wcm9jZXNzaW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IG1fbGF0Y2hlZE5vZGVB
bmRTdGVwcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbGF0Y2hlZE5vZGVMb2NrKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPj4gbV9wcm9jZXNz
aW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdExhdGNo
ZWROb2RlSW50ZXJhdGlvblRpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
MTIwNGYzM2YxZjA2MTY3M2I0OWZiNGE2Nzg4NzhiN2NlOTk2YWZmYi4uY2VjOWZkNGFjM2IzNDQ5
OWZkNWIwNWM3N2Y0YjIxNTdiYTBlM2VhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAt
MjcwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmN1cnJlbnRT
Y3JvbGxQb3NpdGlvbkNoYW5nZWQoU2Nyb2xsVHlwZSwgU2Nyb2xsCiAgICAgc2Nyb2xsaW5nVHJl
ZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKCp0aGlzLCBhY3Rpb24pOwogfQogCi1ib29s
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdw
b3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UmVjdD4p
Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91
dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PikKIHsKICAgICByZXR1cm4gcG9zaXRpb24gPT0gbV9jdXJyZW50U2Nyb2xsUG9z
aXRpb247CiB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAgICAgcmVwb3NpdGlvblJlbGF0ZWRMYXllcnMo
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6d2FzU2Nyb2xsZWRCeURl
bGVnYXRlZFNjcm9sbGluZyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0
aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlOjp3YXNTY3JvbGxlZEJ5RGVsZWdhdGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3
cG9ydCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uKQogewogICAgIGJvb2wgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkID0gIXNjcm9sbFBvc2l0
aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChwb3NpdGlvbiwgb3ZlcnJpZGVMYXlvdXRWaWV3cG9y
dCk7CiAgICAgaWYgKCFzY3JvbGxQb3NpdGlvbkNoYW5nZWQgJiYgc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbiAhPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaAppbmRleCA1NWJjZWQzZTBlNjEyMTA2ZDkzZjg1MmVlZjdkNDY0MjEwNTI1NDM4
Li5mZWVlZWI0ZDg2MzYzMTNiNzFhMmNmYmUwOTEwZGUyNzlhZTU3M2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0
b3BTY3JvbGxBbmltYXRpb25zKCkgeyB9OwogCi0gICAgdm9pZCB3YXNTY3JvbGxlZEJ5RGVsZWdh
dGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFJl
Y3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQgPSB7IH0sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKTsKKyAgICB2b2lkIHdh
c1Njcm9sbGVkQnlEZWxlZ2F0ZWRTY3JvbGxpbmcoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0ID0geyB9LCBT
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bjo6U3luYyk7CiAgICAgCiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAgICAgT3B0aW9u
U2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsgfQpAQCAt
MTI0LDggKzEyNCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWRqdXN0
ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3Jv
bGxDbGFtcGluZzo6Q2xhbXBlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VycmVudFNj
cm9sbFBvc2l0aW9uQ2hhbmdlZChTY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0
aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyk7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0
UmVjdD4gPSB7IH0pIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxQb3NpdGlvbkFuZExheW91
dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0
UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZp
ZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiA9
IHsgfSkgeyB9CisgICAgdmlydHVhbCBib29sIHNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3Bv
cnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9zaXRp
b25TY3JvbGxpbmdMYXllcnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0
ZWRMYXllcnMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDJlMGU4MzZlNmU0OTVlOTI4MjEwMGQy
ZDY4MDc2MjllODYwN2M3NWQuLjJhYzcyMzRjOTcxNTk1Mjg2ODY0NjlhNmFmNTYzNGY1NDA3NDY2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtVwogICAgIHJldHVybiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZl
bnQsIHByb2Nlc3NpbmdTdGVwcyk7CiB9CiAKLWJvb2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpo
YW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKK2Jvb2wgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgc3RkOjpvcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VS
VChTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVudFRocmVhZCgpKTsKIApAQCAtODUsNyArODUsNyBA
QCBib29sIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFpblRo
cmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRQogICAgIHJldHVybiByZXN1bHQud2FzSGFuZGxlZDsK
IH0KIAotdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRC
eU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25h
bDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQordm9pZCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGlu
Zywgc3RyZWFtIDw8ICJUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQgLSBnZXN0dXJlU3RhdGUgIiA8PCBnZXN0dXJlU3RhdGUpOwogCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2QKICAgICBpZiAoaXNIYW5kbGlu
Z1Byb2dyYW1tYXRpY1Njcm9sbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOwogICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPihub2RlKSkKICAgICAgICAgbGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBk
b3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihub2RlKS5sYXlvdXRWaWV3
cG9ydCgpLmxvY2F0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXggNDA0NTFjYWNjMmE2ZjEzZDhjNGVh
ZGIzNzczM2YwODQzNmUxYWYyMi4uMjMyMDgyZDVjMWJmNWE5Nzg0MTNiOGIzYzI2MTdhYjJiYzk0
ZGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGljOgogCiAgICAgV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+KSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEFmdGVyTWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPik7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7
CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4pOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVh
ZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxTZW5kRXZlbnRUb01h
aW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3YWl0Rm9yRXZlbnRUb0JlUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAppbmRleCBkY2Iw
Nzc4YjQ5ZjIxM2U1YmVkYTZjNGE2NTk3YmIwN2M2OWM2ZDc2Li4yYmQ4MWZjODRmMTkwYTYyNGU2
OTJkYWQ2ZTNiMDVjYWZhMjJlMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApAQCAtNDEsOCAr
NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIGZpbmFs
OwogCiAgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBldmVudCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVh
ZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZCBvciBub3QuCi0gICAgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYs
IFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5h
bDsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5h
bDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPikgZmluYWw7CisgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWlu
VGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVHJl
ZVN0YXRlQ29tbWl0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggNTVhMGI3
Y2FmNjY1ZGY5Yzc5ZDE2ODNhYzM2OTgxMWU4NDBkY2Q0OS4uMGJjYmY2OTM2YzAyOTI2YjQ3YTEz
NDJiNTdjMDY5MTUyYTkzYjYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNzMsNyAr
NzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpwYWdlRGVzdHJveWVkKCkKICAg
ICB9KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9s
bGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCitib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVl
bEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
U2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2Vz
dHVyZVN0YXRlKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6d2hlZWxFdmVudFdhc1By
b2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsK
ICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkICIgPDwgZ2VzdHVy
ZVN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCmluZGV4IGViMTA4
ZjY0YzUzMmI5NWE3ZjA3ZGIxZTk1MzBlMmRkYjYzYWRjMTEuLjg5ZjMzNmI2ZTljNjA1YzJmOTQ0
OGNkZjFhY2UyMmU3NDhkNjUyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVpcmVzTW9tZW50dW1T
Y3JvbGxpbmcoKTsKIAogICAgIFJldGFpblB0cjxfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3I7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9y
ZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9yZXF1
aXJlc01vbWVudHVtU2Nyb2xsaW5nOwogICAgIEZsb2F0UG9pbnQgbV9pbml0aWFsRGVzdGluYXRp
b25PcmlnaW47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAK
aW5kZXggNzUxYmEwMTM2YjU4NTJiMDIxMzZlYjM2NmE0MmYwYWMzODUxYjNiYy4uZmM1MTUxOThl
YTJlMWU4ZDgyYmU3ZWViMmIyMjE2MzllNDExODgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JOaWNvc2lhLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogICAgIHNjcm9sbGluZ1Ry
ZWUoKS0+Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUoc3RhdGVUcmVlKSk7CiB9CiAKLWJvb2wgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdl
dE5vZGUsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiti
b29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJ
RCB0YXJnZXROb2RlLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0
dXJlU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9w
YWdlKTsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6
OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OndoZWVsRXZl
bnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQor
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRC
eU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgUmVm
UHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gZG93bmNh
c3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkpOwogICAgIHRocmVhZGVk
U2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCh3aGVlbEV2
ZW50LCBnZXN0dXJlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmgK
aW5kZXggNGJmM2NmNDQwOGUzZjNkYzgzMGNmZDVlMzAwMTkyNzQwYjZkOGI0OC4uZTY4MzI1ZTEy
ODcyNGI2ODI2MTYxNmU1M2VhNjBlZDkyYWY5ZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTmljb3NpYS5oCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29t
bWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2Rl
SUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYsIFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVh
ZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyZWVT
dGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93
aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0Nv
bnRyb2xsZXJXaW4uY3BwCmluZGV4IGQ1MDhiNmY5YzhkMzM4MDBiZTM1NmMxM2IwNzZjOGZhZWRh
M2UyY2MuLjJmODRiM2M5Y2U2MGQ2ZTNjZjg2ZDQwZmYxNTRmN2ZiN2JmY2FhNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpEcmFnSWNvbkJvdHRvbUluc2V0ID0gMzsK
IAogY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAK
LU9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewog
ICAgIC8vIEZJWE1FOiBUbyBtYXRjaCB0aGUgbWFjT1MgYmVoYXZpb3VyIHdlIHNob3VsZCByZXR1
cm4gc3RkOjpudWxsb3B0LgogICAgIC8vIElmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2UgYXJl
IHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKaW5kZXggMWQwY2Y0
NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0MDdmNi4uZTRmZGE4OTdiOTNmMjk4MDdmYzI5
N2Q1MDA2YjJlYjdjYzdiYTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRh
YmxlVGFza1F1ZXVlLmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSXQgaXMg
YWxsb3dlZCBmb3IgdGhlIG1haW4gdGhyZWFkIHRhc2sgaGFuZGxlciB0byBhYm9ydCB0aGUgQWJv
cnRhYmxlVGFza1F1ZXVlLiBJbiB0aGF0IGNhc2UsIHRoZSByZXR1cm4KICAgICAvLyB2YWx1ZSBp
cyBkaXNjYXJkZWQgYW5kIHRoZSBjYWxsZXIgcmVjZWl2ZXMgYW4gZW1wdHkgb3B0aW9uYWwuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUj4KLSAgICBPcHRpb25hbDxSPiBlbnF1ZXVlVGFza0FuZFdh
aXQoV1RGOjpGdW5jdGlvbjxSKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQorICAgIHN0ZDo6
b3B0aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0KFdURjo6RnVuY3Rpb248UigpPiYmIG1haW5U
aHJlYWRUYXNrSGFuZGxlcikKICAgICB7CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBt
YWluIHRocmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9hYm9ydGluZykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Uj4gcmVz
cG9uc2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Uj4gcmVzcG9uc2Ug
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWlu
VGhyZWFkVGFza0hhbmRsZXJdKCkgewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFp
blRocmVhZFRhc2tIYW5kbGVyKCk7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCmluZGV4IDVjYmI3MGFlZWUx
ZDZiOTM0MmYyM2E3ZDVkMTgwNDVlNjRkMWEwY2IuLmUyNzU2NzNjY2I0YjIwNmU3OTRhYmQ2YTI3
YTQ0M2M0YzczYzUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIENQVU1vbml0b3I6OkNQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVy
dmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmIGV4Y2VlZGVkCiB7CiB9CiAKLXZvaWQgQ1BV
TW9uaXRvcjo6c2V0Q1BVTGltaXQoY29uc3QgT3B0aW9uYWw8ZG91YmxlPiYgY3B1TGltaXQpCit2
b2lkIENQVU1vbml0b3I6OnNldENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYg
Y3B1TGltaXQpCiB7CiAgICAgaWYgKG1fY3B1TGltaXQgPT0gY3B1TGltaXQpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAppbmRleCAwODhkZjU0M2UwNDc5
MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2Li40MzhlNzI1MTc3MmJlOGU1YTQ3ODEwNWI1MjBj
YmM1ZGVmZmI1YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25p
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdU
Rjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9y
KFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxpbWl0KGNvbnN0IE9wdGlvbmFsPGRvdWJsZT4m
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwpAQCAtNDYs
OCArNDYsOCBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgbV9jaGVja0ludGVydmFsOwogICAgIEV4
Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXI7CiAgICAgVGlt
ZXIgbV90aW1lcjsKLSAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7Ci0gICAgT3B0aW9u
YWw8Q1BVVGltZT4gbV9sYXN0Q1BVVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9j
cHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fbGFzdENQVVRpbWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUu
aAppbmRleCBkMjIzMDE4NDdhMjAyMzZhYzA4ZWIxZDBiMzQ1Y2ViNjUzMTgyMjRmLi41M2I1YjBj
MjQzNGJjYzNmMGI4MDBlYzViNzExODU4YTRkYzk0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxDb250ZW50VHlwZT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVu
dFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCA4OTNhOTQ1MGE1
MjNkN2Y3MjNmYmM0NTY2ZjVhNTJkZGY2NDQ3OGU4Li4zNWQ1YmUzOTRiMmE5OTJjM2QyMzczZWUz
YjVmOTgyYWM0MjRmYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29r
aWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNDUsNyArNDUs
NyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBDb29raWUoKSA9IGRlZmF1bHQ7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b29raWU+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ29va2llJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
aGFzaCgpIGNvbnN0OwpAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBTdHJp
bmcgcGF0aDsKICAgICAvLyBDcmVhdGlvbiBhbmQgZXhwaXJhdGlvbiBkYXRlcyBhcmUgZXhwcmVz
c2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KICAgICBkb3VibGUgY3Jl
YXRlZCB7IDAgfTsKLSAgICBPcHRpb25hbDxkb3VibGU+IGV4cGlyZXM7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGV4cGlyZXM7CiAgICAgYm9vbCBodHRwT25seSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBzZWN1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgc2Vzc2lvbiB7IGZhbHNlIH07CkBAIC0x
MzAsNyArMTMwLDcgQEAgdm9pZCBDb29raWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q29va2llPiBDb29raWU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb29raWU+IENvb2tpZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29va2llIGNvb2tpZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmNwcAppbmRleCA5Yzg4MTVkZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAwYjRj
NmY2NDVjLi5jMDZiNDljM2Y3MGM3MzdkMmJjM2M5OWRhMTBjODY3YjYyMDkzNDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHVuc2lnbmVkIGNvdW50
RGlnaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXIKIH0KIAogLy8gRGlmZmVyZW5jZXMgZnJvbSBwYXJz
ZUludGVnZXI8aW50PjogVGFrZXMgU3RyaW5nUGFyc2luZ0J1ZmZlci4gRG9lcyBub3QgYWxsb3cg
bGVhZGluZyBvciB0cmFpbGluZyBzcGFjZXMuIERvZXMgbm90IGFsbG93IGxlYWRpbmcgIisiLgot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGludD4gcGFy
c2VJbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNpZ25l
ZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZUludChTdHJpbmdQYXJzaW5n
QnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZkRp
Z2l0c1RvUGFyc2UpCiB7CiAgICAgaWYgKG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UgPiBi
dWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgfHwgIW1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjgsNyArMTI4LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VJbnQo
U3RyaW5nUGFyc2luZ0J1ZmYKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSW50V2l0aGluTGlt
aXRzKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgdW5zaWduZWQg
bWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSwgaW50IG1pbmltdW1WYWx1ZSwgaW50IG1heGlt
dW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPGludD4gcGFyc2VJbnRXaXRoaW5MaW1pdHMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNl
LCBpbnQgbWluaW11bVZhbHVlLCBpbnQgbWF4aW11bVZhbHVlKQogewogICAgIGF1dG8gdmFsdWUg
PSBwYXJzZUludChidWZmZXIsIG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpOwogICAgIGlm
ICghKHZhbHVlICYmICp2YWx1ZSA+PSBtaW5pbXVtVmFsdWUgJiYgKnZhbHVlIDw9IG1heGltdW1W
YWx1ZSkpCkBAIC0xODcsMTIgKzE4NywxMiBAQCBzdGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0ZUxp
bWl0cyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXksIGludCBob3VyLCBpbgogICAg
IHJldHVybiAhaG91ciAmJiAhbWludXRlICYmICFzZWNvbmQgJiYgIW1pbGxpc2Vjb25kOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNy
ZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3VyY2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQordGVt
cGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNy
ZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3VyY2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQogewog
ICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzb3VyY2UsIFsmXShhdXRvIGJ1
ZmZlcikgLT4gT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHsKKyAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiB7CiAgICAgICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAgICAgICAg
IGlmICghcGFyc2VGdW5jdGlvbihidWZmZXIsIGRhdGUpIHx8ICFidWZmZXIuYXRFbmQoKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMDAsMzUgKzIwMCwzNSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZy
b21TdHJpbmcoU3RyaW5nVmlldwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50
cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyBzb3VyY2UpCitz
dGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbVBhcnNpbmdN
b250aChTdHJpbmdWaWV3IHNvdXJjZSkKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVN0cmluZyhz
b3VyY2UsIFtdIChhdXRvJiBidWZmZXIsIGF1dG8mIGRhdGUpIHsKICAgICAgICAgcmV0dXJuIGRh
dGUucGFyc2VNb250aChidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZShTdHJpbmdWaWV3IHNvdXJjZSkK
K3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2lu
Z0RhdGUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmco
c291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBk
YXRlLnBhcnNlRGF0ZShidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nV2VlayhTdHJpbmdWaWV3IHNvdXJjZSkK
K3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2lu
Z1dlZWsoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmco
c291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBk
YXRlLnBhcnNlV2VlayhidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nVGltZShTdHJpbmdWaWV3IHNvdXJjZSkK
K3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2lu
Z1RpbWUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmco
c291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBk
YXRlLnBhcnNlVGltZShidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5nRGF0ZVRpbWVMb2NhbChTdHJpbmdWaWV3
IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpm
cm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7
CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlRGF0ZVRpbWVMb2NhbChidWZmZXIpOwpAQCAtNDUx
LDggKzQ1MSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNv
bXBvbmVudHM6OnBhcnNlVGltZShTdHJpbmdQYXJzaW5nQnVmCiAKICAgICAvLyBPcHRpb25hbCBz
ZWNvbmQgcGFydC4KICAgICAvLyBEbyBub3QgcmV0dXJuIHdpdGggZmFsc2UgYmVjYXVzZSB0aGUg
cGFydCBpcyBvcHRpb25hbC4KLSAgICBPcHRpb25hbDxpbnQ+IHNlY29uZDsKLSAgICBPcHRpb25h
bDxpbnQ+IG1pbGxpc2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzZWNvbmQ7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IG1pbGxpc2Vjb25kOwogCiAgICAgYXV0byB0ZW1wb3JhcnlCdWZm
ZXIgPSBidWZmZXI7CiAgICAgaWYgKHNraXBFeGFjdGx5KHRlbXBvcmFyeUJ1ZmZlciwgJzonKSkg
ewpAQCAtNTIwLDcgKzUyMCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHBvc2l0aXZlRm1vZChk
b3VibGUgdmFsdWUsIGRvdWJsZSBkaXZpZGVyKQogICAgIHJldHVybiByZW1haW5kZXIgPCAwID8g
cmVtYWluZGVyICsgZGl2aWRlciA6IHJlbWFpbmRlcjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
Rj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBjcmVhdGVGcm9tVGltZU9mZnNldChk
b3VibGUgdGltZU9mZnNldCwgRiYmIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgRj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21UaW1lT2Zmc2V0KGRv
dWJsZSB0aW1lT2Zmc2V0LCBGJiYgZnVuY3Rpb24pCiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgcmVz
dWx0OwogICAgIGlmICghZnVuY3Rpb24ocmVzdWx0LCB0aW1lT2Zmc2V0KSkKQEAgLTUyOCw0MiAr
NTI4LDQyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gY3JlYXRlRnJvbVRpbWVPZmZzZXQoZG91YmxlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNv
bmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShk
b3VibGUgbXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21UaW1lT2Zmc2V0KG1zLCBbXSAoYXV0
byYgZGF0ZSwgYXV0byBtcykgewogICAgICAgICByZXR1cm4gZGF0ZS5zZXRNaWxsaXNlY29uZHNT
aW5jZUVwb2NoRm9yRGF0ZShtcyk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGlt
ZUxvY2FsKGRvdWJsZSBtcykKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21w
b25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91Ymxl
IG1zKQogewogICAgIHJldHVybiBjcmVhdGVGcm9tVGltZU9mZnNldChtcywgW10gKGF1dG8mIGRh
dGUsIGF1dG8gbXMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvckRhdGVUaW1lTG9jYWwobXMpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9u
dGgoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVu
dHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKQogewogICAg
IHJldHVybiBjcmVhdGVGcm9tVGltZU9mZnNldChtcywgW10gKGF1dG8mIGRhdGUsIGF1dG8gbXMp
IHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRo
KG1zKTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25l
bnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1zKQorc3RkOjpv
cHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNT
aW5jZUVwb2NoRm9yV2Vlayhkb3VibGUgbXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21UaW1l
T2Zmc2V0KG1zLCBbXSAoYXV0byYgZGF0ZSwgYXV0byBtcykgewogICAgICAgICByZXR1cm4gZGF0
ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhtcyk7CiAgICAgfSk7CiB9CiAKLU9w
dGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1Np
bmNlTWlkbmlnaHQoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0
ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykKIHsK
ICAgICByZXR1cm4gY3JlYXRlRnJvbVRpbWVPZmZzZXQobXMsIFtdIChhdXRvJiBkYXRlLCBhdXRv
IG1zKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQo
bXMpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVu
dHM6OmZyb21Nb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpCitzdGQ6Om9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1vbnRoc1NpbmNlRXBvY2goZG91Ymxl
IG1vbnRocykKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVRpbWVPZmZzZXQobW9udGhzLCBbXSAo
YXV0byYgZGF0ZSwgYXV0byBtb250aHMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TW9udGhz
U2luY2VFcG9jaChtb250aHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGF0ZUNvbXBvbmVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmgKaW5kZXggMGE5MDIzMTAzMDUyNjdlOWExNDFiMzFjMDhhN2RhYTQyNDQzN2NkYS4uYWE5NThk
NDIxNDRmNGNiNjdmZDM5NzZhNjI0NGE1NGFmMmZmNGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5oCkBAIC04NywzMSArODcsMzEgQEAgcHVibGljOgogICAgIFN0
cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQgPSBTZWNvbmRGb3JtYXQ6Ok5vbmUpIGNvbnN0Owog
CiAgICAgLy8gU2V0cyB5ZWFyIGFuZCBtb250aC4KLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNv
bXBvbmVudHM+IGZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9udGgoU3RyaW5nVmlldyk7CiAg
ICAgLy8gU2V0cyB5ZWFyLCBtb250aCBhbmQgbW9udGhEYXkuCi0gICAgc3RhdGljIE9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ0RhdGUoU3RyaW5nVmlldyk7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nRGF0ZShTdHJpbmdWaWV3
KTsKICAgICAvLyBTZXRzIHllYXIgYW5kIHdlZWsuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBmcm9tUGFyc2luZ1dlZWsoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nV2VlayhTdHJpbmdWaWV3KTsKICAg
ICAvLyBTZXRzIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWxsaXNlY29uZC4KLSAgICBzdGF0
aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nVGltZShTdHJpbmdWaWV3KTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbVBhcnNpbmdUaW1l
KFN0cmluZ1ZpZXcpOwogICAgIC8vIFNldHMgeWVhciwgbW9udGgsIG1vbnRoRGF5LCBob3VyLCBt
aW51dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoU3RyaW5nVmlldyk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nRGF0ZVRpbWVMb2Nh
bChTdHJpbmdWaWV3KTsKIAogCiAgICAgLy8gRm9yIERhdGUgdHlwZS4gVXBkYXRlcyBtX3llYXIs
IG1fbW9udGggYW5kIG1fbW9udGhEYXkuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1zKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JEYXRlKGRvdWJsZSBtcyk7CiAgICAgLy8gRm9yIERhdGVUaW1lTG9jYWwgdHlwZS4g
VXBkYXRlcyBtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUsIG1f
c2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBt
cyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChkb3VibGUgbXMpOwogICAgIC8vIEZvciBN
b250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQgbV9tb250aC4KLSAgICBzdGF0aWMgT3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91
YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1p
bGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChkb3VibGUgbXMpOwogICAgIC8vIEZvciBXZWVr
IHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBtX3dlZWsuCi0gICAgc3RhdGljIE9wdGlvbmFsPERh
dGVDb21wb25lbnRzPiBmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1z
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcyk7CiAKICAgICAvLyBGb3IgVGltZSB0eXBl
LiBVcGRhdGVzIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgot
ICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNl
TWlkbmlnaHQoZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKIAogICAgIC8v
IEFub3RoZXIgaW5pdGlhbGl6ZXIgZm9yIE1vbnRoIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBt
X21vbnRoLgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1vbnRoc1Np
bmNlRXBvY2goZG91YmxlIG1vbnRocyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNv
bXBvbmVudHM+IGZyb21Nb250aHNTaW5jZUVwb2NoKGRvdWJsZSBtb250aHMpOwogCiAgICAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIDE5NzAtMDEtMDEgMDA6MDA6
MDAgVVRDLgogICAgIC8vIEZvciBhIERhdGVDb21wb25lbnRzIGluaXRpYWxpemVkIHdpdGggcGFy
c2VEYXRlVGltZUxvY2FsKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzLmgKaW5kZXggMjNhMzM4NmJiNTgwNmJhYmRjN2EwOTk4ZDcx
ZWViZDc5NGI4MGUxZi4uYTQyYzI5N2NmZTRjZmY0OTA3NWU2ODdmNTk2ZDJlNjdjY2VhYzc4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFt
ZXRlcnMuaApAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBoYXNNaWxsaXNlY29uZEZpZWxkIHsgZmFsc2UgfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERhdGVUaW1lQ2hvb3Nl
clBhcmFtZXRlcnM+IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzPiBEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBdG9t
U3RyaW5nIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCA1NWFiZDU2OTk2ZDhkNTM4NWFhN2M2OTA2MjFiNDlj
ZmRmZTRkNTZkLi5mMzI1NzMyMzRmYTAzZWNjNzYzZDk2YzMwYjZhOTUyYzE2NDQ1ZjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEo
RHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRp
b25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFS
ZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00NCw3ICs0NCw3IEBAIERyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0
PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGlu
YXRpb25BY3Rpb25NYXNrLCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAg
ICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpAQCAtNTgs
NyArNTgsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+IERyYWdEYXRhOjpjcmVhdGVQYXN0ZWJvYXJkQ29udGV4dCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0pOworICAgIHJldHVybiBQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAppbmRleCBkOWNjNmFlM2M3YmRjN2MzZjkxMzdhODY2MzI2ODUzNmQ3YzMwZjI1Li42NjAwZGZh
N2IxODllMTVmYWI3ZmI3OTZmNjZlZjFhNzlkY2QyMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBEcmFn
Z2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBGb3JDb2xvckNvbnRyb2wg
fTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBv
ZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQg
dGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25G
bGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJh
Z1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8
RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShE
cmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0
YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVz
ZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3Qg
aW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwogI2lmIFBMQVRG
T1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0
aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEo
Y29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJj
ZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
Y29uc3QgRHJhZ0RhdGFNYXAmIGRyYWdEYXRhTWFwKCk7CiAgICAgdm9pZCBnZXREcmFnRmlsZURl
c2NyaXB0b3JEYXRhKGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSk7CiAgICAgdm9pZCBnZXRE
cmFnRmlsZUNvbnRlbnREYXRhKGludCBzaXplLCB2b2lkKiBkYXRhQmxvYik7CkBAIC0xMTQsNyAr
MTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNQcm9taXNlKCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJRDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRDb250ZXh0KCkgY29uc3Q7CiAKQEAgLTEyNiw3
ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4g
bV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwogICAg
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFzazsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCmluZGV4IDE5MzlmYjkwYzIyNTY0ZDAyY2FkZjY1YmRhZjdmNjVjY2I3Y2U5
YTcuLjkwMzQyOGYzZWE2NDMzYTcwZGMxYjhkNTU4MDFlMzc3NDY1OTZjMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0cnVjdCBTY29w
ZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKICAgICB9CiAKICAgICBjb25zdCBGcmFtZSYgZnJhbWU7
Ci0gICAgT3B0aW9uYWw8UmVuZGVyUmFuZ2U+IHNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFJlbmRlclJhbmdlPiBzZWxlY3Rpb247CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGVhN2IzMWVlN2EyZDU4MzZmZWRi
MTliZWY2ZGQ3OWJkZjFhOTZhMzUuLmMxM2EzYzA1MWJiNjRkYzViZTZjYjM4M2FkYzEwMjA5NGY0
NmJmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0xMDksMTkgKzEwOSwx
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRvckRhdGEoY29uc3QgVGV4dEluZGlj
YXRvckRhdGEmIGRhdGEpIHsgbV9pbmRpY2F0b3JEYXRhID0gZGF0YTsgfQogICAgIGJvb2wgaGFz
SW5kaWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbmRpY2F0b3JEYXRhOyB9Ci0gICAg
T3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2luZGljYXRvckRhdGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRh
PiBpbmRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2F0b3JEYXRhOyB9CiAKICAg
ICB2b2lkIHNldFZpc2libGVQYXRoKGNvbnN0IFBhdGgmIHBhdGgpIHsgbV92aXNpYmxlUGF0aCA9
IHBhdGg7IH0KICAgICBib29sIGhhc1Zpc2libGVQYXRoKCkgY29uc3QgeyByZXR1cm4gISFtX3Zp
c2libGVQYXRoOyB9Ci0gICAgT3B0aW9uYWw8UGF0aD4gdmlzaWJsZVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGVQYXRoOyB9CisgICAgc3RkOjpvcHRpb25hbDxQYXRoPiB2aXNpYmxlUGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVBhdGg7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fZHJhZ0ltYWdlUmVmOyB9CiAgICAgRHJhZ0lt
YWdlUmVmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0ltYWdlUmVmOyB9CiAKIHByaXZhdGU6
CiAgICAgRHJhZ0ltYWdlUmVmIG1fZHJhZ0ltYWdlUmVmOwotICAgIE9wdGlvbmFsPFRleHRJbmRp
Y2F0b3JEYXRhPiBtX2luZGljYXRvckRhdGE7Ci0gICAgT3B0aW9uYWw8UGF0aD4gbV92aXNpYmxl
UGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBtX2luZGljYXRvckRh
dGE7CisgICAgc3RkOjpvcHRpb25hbDxQYXRoPiBtX3Zpc2libGVQYXRoOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKaW5kZXggMWQxZjJhNzg5NWJlMTA0ODA5YzQ4YzRkZGM4
NjhjNWJmZGRkMzhhYy4uMDBmMGNiZDk1OTk0YWNkNzhkZjJmNjI2MDEyNzNhNzllMjhjMGU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBE
cmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZSBwb3NpdGlv
bmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAgICAgRmxvYXRQb2ludCBpbWFnZUFuY2hvclBv
aW50OwogCi0gICAgT3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4gc291cmNlQWN0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4gc291cmNlQWN0aW9uOwogICAgIEludFBv
aW50IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBJbnRQb2ludCBkcmFn
TG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBJbnRQb2ludCBkcmFnTG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzOwpAQCAtOTcsNyArOTcsNyBAQCBib29sIERyYWdJdGVtOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc0luZGljYXRvckRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGhhc0luZGljYXRvckRhdGEpIHsKLSAgICAgICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+
IGluZGljYXRvckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+
IGluZGljYXRvckRhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaW5kaWNhdG9yRGF0YTsKICAgICAg
ICAgaWYgKCFpbmRpY2F0b3JEYXRhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIGJvb2wgRHJhZ0l0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFn
SXRlbSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVmlzaWJsZVBhdGgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc1Zpc2libGVQYXRoKSB7Ci0gICAgICAg
IE9wdGlvbmFsPFBhdGg+IHZpc2libGVQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+
IHZpc2libGVQYXRoOwogICAgICAgICBkZWNvZGVyID4+IHZpc2libGVQYXRoOwogICAgICAgICBp
ZiAoIXZpc2libGVQYXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCAyODQ1YmZkMjZhM2ViMWUyNTJhOWRjNDczMzRi
NDc3YmNhZWU4NzU3Li4wYzk4MGFhYjA2ZmMzMThjNDYzODEyYWYwNzQxODVjNmY5MTczYzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApAQCAtNDcsNyArNDcsNyBAQCBG
aWxlU3RyZWFtOjp+RmlsZVN0cmVhbSgpCiAgICAgY2xvc2UoKTsKIH0KIAotbG9uZyBsb25nIEZp
bGVTdHJlYW06OmdldFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBPcHRpb25hbDxXYWxsVGltZT4g
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorbG9uZyBsb25nIEZpbGVTdHJlYW06OmdldFNpemUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUpCiB7CiAgICAgLy8gQ2hlY2sgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0
aGUgcG9zc2libGUgZmlsZSBjaGFuZ2UuCiAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmls
ZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmgKaW5kZXggNWU1ZWUwZTAyNGJlNjUyMDE3MWI0YTcwYmIwODYwODdlYmVjMGY1
MS4uZGYyMjRjZjA3ZjQ0MjhmYmRlOTE1ZjJhZmQ0NmI4MDk2NDI0YTljMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBHZXRzIHRoZSBzaXplIG9mIGEgZmlsZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFz
IGJlZW4gY2hhbmdlZCBvciBub3QgaWYgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlz
IHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJvLgogICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9m
IGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0xIG90aGVyd2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0U2l6
ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKIAogICAgIC8v
IE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRpbmcgc3RhcnRzIGF0IHRoZSBzcGVj
aWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLgogICAgIC8v
IFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggMGVhYWUwYTUyZjljYWM3MjQ5MzM1ZTE3NWQ3MmI0MTRi
N2MyZGJmNC4uZjZjY2UyZWRjOGQ2Y2Y0NzA1OTg1NzA5YjYwOTUxOGZhZmVjOTNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSA9IDA7
CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlE
LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlE
LCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkg
PSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaAppbmRleCBi
ZjdkYTEzMjlmM2EzYjAyYWE5MDJmYTIwODZiYTQ1NDE5YTdmODdmLi44ZWY1MzE5NGIzZDM1OWFm
Nzg4NjEwYWFkZGI0NmY1NTgxZGExODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgSW1hZ2VF
eHRyYWN0aW9uVGV4dERhdGEgewogICAgIEZsb2F0UXVhZCBub3JtYWxpemVkUXVhZDsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9u
VGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uVGV4dERhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEltYWdlRXh0cmFjdGlv
blRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTU4LDE0ICs1OCwx
NCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEltYWdlRXh0cmFjdGlvblRleHREYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgYwogICAgIGVuY29kZXIgPDwgbm9ybWFsaXplZFF1
YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEltYWdlRXh0cmFjdGlv
blRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFjdGlv
blRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1hbGl6
ZWRRdWFkOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAg
ICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NCw3ICs4NCw3IEBAIHN0cnVjdCBJbWFn
ZUV4dHJhY3Rpb25MaW5lRGF0YSB7CiAgICAgVmVjdG9yPEltYWdlRXh0cmFjdGlvblRleHREYXRh
PiBjaGlsZHJlbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8SW1hZ2VFeHRyYWN0aW9uTGluZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uTGlu
ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQpAQCAtMTA5LDE0ICsxMDksMTQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJbWFn
ZUV4dHJhY3Rpb25MaW5lRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGMKICAgICBlbmNv
ZGVyIDw8IGNoaWxkcmVuOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJ
bWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VFeHRyYWN0aW9uTGluZURhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJ
bWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VFeHRyYWN0aW9uTGluZURhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UXVhZD4gbm9ybWFsaXplZFF1
YWQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGRl
Y29kZXIgPj4gbm9ybWFsaXplZFF1YWQ7CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFnZUV4dHJh
Y3Rpb25UZXh0RGF0YT4+IGNoaWxkcmVuOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdl
RXh0cmFjdGlvblRleHREYXRhPj4gY2hpbGRyZW47CiAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsK
ICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ1
LDcgKzE0NSw3IEBAIHN0cnVjdCBJbWFnZUV4dHJhY3Rpb25SZXN1bHQgewogICAgIH0KIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9u
UmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFjdGlvblJlc3VsdD4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW1hZ2VFeHRyYWN0aW9uUmVz
dWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTE1NiwxNSArMTU2LDE1IEBA
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uUmVzdWx0PiBJbWFnZUV4dHJhY3Rpb25SZXN1
bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25SZXN1bHQ+IEltYWdlRXh0cmFjdGlvblJlc3VsdDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0
cmFjdGlvbkxpbmVEYXRhPj4gbGluZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VF
eHRyYWN0aW9uTGluZURhdGE+PiBsaW5lczsKICAgICBkZWNvZGVyID4+IGxpbmVzOwogICAgIGlm
ICghbGluZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCi0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFjdGlvbkRhdGFEZXRl
Y3RvckluZm8+PiBkYXRhRGV0ZWN0b3JzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdl
RXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+PiBkYXRhRGV0ZWN0b3JzOwogICAgIGRlY29kZXIg
Pj4gZGF0YURldGVjdG9yczsKICAgICBpZiAoIWRhdGFEZXRlY3RvcnMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaAppbmRleCA0YmEwNTI0
NmY3ZWM4NTMzOGU2ODc1MDg1OWVmZjBmMGNhOWIzNDhkLi5hODJiZmEwNDg0ZjBlNWI4NDNhODQ2
MmUyN2E1ZDcyZWU2NzJhYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKQEAgLTM3
LDcgKzM3LDcgQEAgc3RydWN0IExpbmtJY29uIHsKICAgICBVUkwgdXJsOwogICAgIExpbmtJY29u
VHlwZSB0eXBlOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
c2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaXplOwogICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhdHRyaWJ1dGVzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmgKaW5kZXggZDRiMDI5ZjIyMzk3MmI3M2E3YTk5Nzgx
ZDJjYzE0ZTcyMmFmMzRjMy4uYjRiMjBhYjY1ZmFiZGE2MDBjOTQ5YTkzOTc2M2U0OGViYmJjZTlj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCkBAIC0z
OCw3ICszOCw3IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogYm9v
bCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxMb2dDaGFubmVsc1RvQWNjdW11bGF0ZSgpOwotV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25h
bDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6
ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxs
b3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggOGNmMDE4N2M3NzAzNDg0ODg1
NzZmZGVmZWQ4N2ZiMzMwNGNlZWI5NC4uNjFmZThkMzc1MjE1ODNkMmQ0NjUxOTM4MDUwMjg1ZjNj
NDM1Nzc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTgxLDcgKzgxLDcg
QEAgdm9pZCBjbGVhckFsbExvZ0NoYW5uZWxzVG9BY2N1bXVsYXRlKCkKICAgICBsb2dDaGFubmVs
c05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CiB9CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5u
ZWxzSWZOZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5nPiBsb2dDaGFubmVsU3RyaW5nKQordm9pZCBp
bml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9n
Q2hhbm5lbFN0cmluZykKIHsKICAgICBpZiAoIWxvZ0NoYW5uZWxzTmVlZEluaXRpYWxpemF0aW9u
ICYmICFsb2dDaGFubmVsU3RyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaAppbmRl
eCAxNTVjOWQ1MWYyNjhkMTRkYmE0NjY5M2I5OThjMjA1MTA3NGU2NDU1Li5kZjQ3N2Y0NGYzYmVk
MzRkY2I4ZGQzZjE5NTA1MGM1NmNiY2NjNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvIDogTWVkaWFDYXBhYmls
aXRpZXNJbmZvIHsKICAgICBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9uOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxp
dGllc0RlY29kaW5nSW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CkBAIC02MCwxMyArNjAsMTMgQEAgdm9pZCBNZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gTWVk
aWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRp
ZXNEZWNvZGluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gaW5m
byA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghaW5m
bykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247
CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9y
dGVkQ29uZmlndXJhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5m
by5oCmluZGV4IDkxNTg3YmIzOWExNGYwNjEzOWZmZDUyMTE1YWQ0MWJkN2MzZWQ5MTYuLjNhY2Y1
OWY2OTYzZmU5MDU1NTgzYzlkZDZhZjRlMTFmNDU3NGE2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8uaApAQCAt
NDksNyArNDksNyBAQCBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8gOiBNZWRp
YUNhcGFiaWxpdGllc0luZm8gewogICAgIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uIHN1cHBv
cnRlZENvbmZpZ3VyYXRpb247CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
Q2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTYwLDEzICs2MCwxMyBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0
aWVzRW5jb2RpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJ
bmZvPiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBNZWRpYUNh
cGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
YXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAg
aWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
TWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CisgICAg
c3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmln
dXJhdGlvbjsKICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgaWYg
KCFzdXBwb3J0ZWRDb25maWd1cmF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRl
eCA3NzE1YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQwZGZmNzAyMDVlNWI1Li4wNDAyMjMxMDYwMzEx
MDk0ODE0MjJkNDJkZmYwMDk5ZWMzNzc2OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApAQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgTWVk
aWFDYXBhYmlsaXRpZXNJbmZvIHsKICAgICBib29sIHBvd2VyRWZmaWNpZW50IHsgZmFsc2UgfTsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NywxOSArNDcsMTkg
QEAgdm9pZCBNZWRpYUNhcGFiaWxpdGllc0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TWVkaWFDYXBhYmls
aXRpZXNJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3Vw
cG9ydGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydGVkOwogICAgIGRlY29kZXIg
Pj4gc3VwcG9ydGVkOwogICAgIGlmICghc3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc21vb3RoOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gc21vb3RoOwogICAgIGRlY29kZXIgPj4gc21vb3RoOwogICAgIGlmICghc21vb3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcG93ZXJF
ZmZpY2llbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwb3dlckVmZmljaWVudDsKICAgICBk
ZWNvZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAgIGlmICghcG93ZXJFZmZpY2llbnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aAppbmRleCAwMmRmNzljNjEwMGNhYzRmZmFlZmM5N2IyNDQ1ZjVjZjVhOWNkYmJmLi44ZGE2MDM3
Nzg4MjQzMzMwYWUyNTBkOWMxMGM3MmVlMDU4OGU3NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lZGlhU2FtcGxlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBzaXplX3Qg
Ynl0ZU9mZnNldCB7IDAgfTsKICAgICAgICAgc2l6ZV90IGJ5dGVMZW5ndGggeyAwIH07CiAgICAg
fTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0
ID0gMDsKIAogICAgIGVudW0gY2xhc3MgVmlkZW9Sb3RhdGlvbiB7CiAgICAgICAgIE5vbmUgPSAw
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggYWIy
ZTQwYzE4YjAxYWRiMTUzYWM4NTY0YTEyZGI2YTcwMDFhMDQ3Zi4uZDU2YzMyOGIxNTNmNTRjMjM2
YmZlYTJlMDJhNGM2OWVlNzhmM2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQ
bGF5aW5nTWFuYWdlci5oCkBAIC02NywxMiArNjcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVu
c3VyZVJlbW90ZUNvbW1hbmRMaXN0ZW5lckNyZWF0ZWQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lcjsKICAgICBXZWFr
UHRyPENsaWVudD4gbV9jbGllbnQ7Ci0gICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93
UGxheWluZ0luZm87CisgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5
aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsK
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07Ci0gICAgT3B0
aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKKyAgICBzdGQ6Om9w
dGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5aW5nSW5mb0FydHdvcms7CiAgICAgYm9vbCBt
X3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggOGM1ZDYxNTk2YjMxZTAzZWEzNWE0
ODA1MWIzNjMyYmY5NGVmMmE1NS4uMDQzOWM4MTg4MWRiNzc0MDU2MWM0ODQ3NGI3N2Y0MDVjODdj
ZGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb20odGhpcy0+
cm9vdCgpLCBhZGFwdGVyKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxJbnRlcnZhbFR5cGU+IG5l
eHRJbnRlcnZhbEFmdGVyKGNvbnN0IFQmIHBvaW50KQorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJ2
YWxUeXBlPiBuZXh0SW50ZXJ2YWxBZnRlcihjb25zdCBUJiBwb2ludCkKICAgICB7CiAgICAgICAg
IGF1dG8gbmV4dCA9IHNtYWxsZXN0Tm9kZUdyZWF0ZXJUaGFuRnJvbShwb2ludCwgdGhpcy0+cm9v
dCgpKTsKICAgICAgICAgaWYgKCFuZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcAppbmRleCAyNjEwNGY0M2JkYTYyMWZkYjMxNDIzNzg3YTNkYTU5ZWJhYjZkMTQ0Li4xNTcz
MWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtNjIsNyArNjIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0
ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCiAKICNlbmRpZgogCi1P
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFzdGVib2FyZDo6YWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVt
SW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0CiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQpAQCAtNzEsNyArNzEsNyBAQCBPcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5k
ZXgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6
cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
MDVjNmFmZTQ1N2ZmOWU5MWRmYjE5MjVlMjQ4YTc3NDFjOWM1NjgyZS4uN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtMjEzLDkgKzIxMyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0g
V2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVh
ZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3Rk
OjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJv
YXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3k6OkFsbG93VVJMLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXggPSBzdGQ6Om51bGxvcHQpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
KFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5Xcml0ZVRydXN0d29ydGh5V2Vi
VVJMc1Bib2FyZFR5cGUoKTsKIApAQCAtMjkyLDggKzI5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVSTCYpOyAvLyBGSVhNRTog
TGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBT
dHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVz
KCkgY29uc3Q7Ci0gICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6
ZV90Pik7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+KTsKIAogICAgIGVudW0gY2xhc3MgUmVhZGVyUmVzdWx0IHsKICAgICAgICAgUmVhZFR5
cGUsCkBAIC0zMTksNyArMzE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlUmFuZ2VUb0Rh
dGFPYmplY3QoY29uc3QgU2ltcGxlUmFuZ2UmLCBGcmFtZSYpOyAvLyBGSVhNRTogTGF5ZXJpbmcg
dmlvbGF0aW9uLgogICAgIHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dFRvRGF0YU9iamVjdChjb25zdCBT
dHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOwotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0
b21EYXRhPiByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRDdXN0b21EYXRhPiByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMzQsMTQgKzMzNCwxNCBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwogCiAjaWYgUExB
VEZPUk0oR1RLKQotICAgIE9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKICAgICBT
dHJpbmcgbV9uYW1lOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcg
bV9wYXN0ZWJvYXJkTmFtZTsKICAgICBpbnQ2NF90IG1fY2hhbmdlQ291bnQ7Ci0gICAgT3B0aW9u
YWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hlOworICAgIHN0ZDo6b3B0
aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hlOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMzMxMGQwYjMzMGVlNTg3MDUxYjc3OTQ5YzAzYzEwZDBh
MjYyY2VlZi4uZWJkNDU2NzA3MmUwMWMzMjFkMmM3ODQ2MWM3NzM2MDU5NjhlYTczOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAt
OTcsMjMgKzk3LDIzIEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgY29uc3RleHByIHVu
c2lnbmVkIG1heFN1cHBvcnRlZERhdGFTZXJpYWxpemF0aW9uVmVyc2lvbk51bWJlciA9IDE7CiAK
ICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSByZXN1bHQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVyc2lvbjsKICAgICBkZWNv
ZGVyID4+IHZlcnNpb247CiAgICAgaWYgKCF2ZXJzaW9uIHx8ICp2ZXJzaW9uID4gbWF4U3VwcG9y
dGVkRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uTnVtYmVyKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbjsKICAgICBkZWNvZGVyID4+IG9yaWdpbjsKICAgICBpZiAoIW9yaWdpbikKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICByZXN1bHQubV9vcmlnaW4gPSBXVEZNb3ZlKCpvcmlnaW4pOwog
Ci0gICAgT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHNhbWVPcmlnaW5DdXN0b21T
dHJpbmdEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHNh
bWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhOwogICAgIGRlY29kZXIgPj4gc2FtZU9yaWdpbkN1c3Rv
bVN0cmluZ0RhdGE7CiAgICAgaWYgKCFzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBvcmRlcmVkVHlw
ZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gb3JkZXJlZFR5cGVzOwogICAg
IGRlY29kZXIgPj4gb3JkZXJlZFR5cGVzOwogICAgIGlmICghb3JkZXJlZFR5cGVzKQogICAgICAg
ICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUlu
Zm8uaAppbmRleCBiMWM3ZDQ3OGYzNzFmNmNjY2Q1NGFkZWZkNjc4ZWEyZDdhNzYyZTBmLi4xZTVi
YzI5M2FkYmNlOWMzYjQzOGU4NTEzZmM5NWUyNTI5NTgwYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaApAQCAtMzgsMTEgKzM4LDExIEBAIGVudW0g
Y2xhc3MgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSB7CiB9OwogCiBzdHJ1Y3QgUHJl
c2VudGF0aW9uU2l6ZSB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB3aWR0aDsKLSAgICBPcHRpb25h
bDxkb3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gd2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmVzZW50
YXRpb25TaXplPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBQcmVzZW50YXRpb25TaXplOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PFByZXNlbnRhdGlvblNpemU+IFByZXNlbnRhdGlvblNpemU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxQcmVzZW50YXRpb25TaXplPiBQcmVzZW50YXRpb25TaXplOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQcmVzZW50YXRpb25TaXplIHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aWR0aCkpCkBAIC0xMjAsNyArMTIwLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBhc3RlYm9hcmRJdGVtSW5m
bzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5m
bz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnBhdGhzRm9yRmlsZVVwbG9hZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDJjYzliMDA0ZmE3MzNmMjM2NDM0Njg2MjJmYWJjYTUxMzcyMWJj
MTIuLjFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC03Myw4ICs3Myw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAg
IHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggZWQyZWVlZjA5MGNjNmE3MGJjNDAxZWUw
ZWIzMDM4ZDZmOGZjNzdkOS4uZmNlNGNhZGIxMGY4ODFjYmRmYTBiNzY2ZTFkOGIxZTkyM2E0YWIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKLSAgICBjb25zdCBP
cHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4
dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhaW5UZXh0PiYgcGxhaW5UZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9wbGFpblRleHQ7IH0KICAgICB2b2lkIHNldFBsYWluVGV4dChQbGFpblRl
eHQpOwogCiAgICAgc3RydWN0IFVSTERhdGEgewpAQCAtNzYsMTYgKzc2LDE2IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH07CiAKLSAgICBjb25zdCBPcHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxEYXRh
PiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgdm9pZCBzZXRVUkxEYXRh
KFVSTERhdGEpOwogCi0gICAgY29uc3QgT3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvbnRlbnQ+JiB3ZWJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb250ZW50OyB9
CiAgICAgdm9pZCBzZXRXZWJDb250ZW50KFdlYkNvbnRlbnQpOwogCiBwcml2YXRlOgotICAgIE9w
dGlvbmFsPFBsYWluVGV4dD4gbV9wbGFpblRleHQ7Ci0gICAgT3B0aW9uYWw8VVJMRGF0YT4gbV91
cmw7Ci0gICAgT3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8UGxhaW5UZXh0PiBtX3BsYWluVGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+
IG1fdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5jcHAKaW5kZXggNWFhOWZjODUyMDZmZjE2NzE5MTRhZjIyNmY1OGU4NzJlNThlZDRlYi4uYzE3
OTljYzY3YzU3OTE0Y2MwMjZlYmYyMzAxZjY0MWQ1MmM1ODJiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8T3B0aW9uU2V0PFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyPj4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzX2N1cnJlbnRNb2RpZmll
cnM7ICAgIAorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+
PiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNfY3VycmVudE1vZGlmaWVyczsgICAgCiAKIHZvaWQg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShPcHRpb25TZXQ8
TW9kaWZpZXI+IG1vZGlmaWVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmgKaW5kZXggMWExMzY3ZjdhOWRmMGFiMWFjZTE2ZDAzNjVlNTVm
NjUzOGQwY2JkNi4uZjkwZjFkYWQ2YjdiNGU2NzAzNzQ1YzljYjk3YTMyYzg3MmZhMWFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKQEAg
LTk0LDkgKzk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhhbmRsZWRC
eUlucHV0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkQnlJbnB1dE1ldGhvZDsgfQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotICAgICAgICBjb25zdCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVu
ZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRVbmRlcmxpbmVzOyB9Ci0gICAgICAg
IGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3ByZWVkaXRTZWxlY3Rpb25SYW5nZVN0YXJ0OyB9Ci0gICAgICAgIGNv
bnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2VMZW5ndGg7IH0KKyAgICAgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYg
cHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRVbmRlcmxpbmVzOyB9
CisgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiBwcmVlZGl0U2VsZWN0aW9u
UmFuZ2VTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQ7
IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mIHByZWVkaXRTZWxlY3Rp
b25SYW5nZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVu
Z3RoOyB9CiAjZW5kaWYKICNpZiBVU0UoQVBQS0lUKQogICAgICAgICBjb25zdCBWZWN0b3I8S2V5
cHJlc3NDb21tYW5kPiYgY29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRzOyB9CkBA
IC0xNjMsOSArMTYzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faGFu
ZGxlZEJ5SW5wdXRNZXRob2QgeyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBVU0UoTElCV1BFKQotICAgICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRp
b25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOwotICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2VTdGFydDsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IG1fcHJlZWRpdFVuZGVy
bGluZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlv
blJhbmdlU3RhcnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRpdFNl
bGVjdGlvblJhbmdlTGVuZ3RoOwogI2VuZGlmCiAjaWYgVVNFKEFQUEtJVCkKICAgICAgICAgVmVj
dG9yPEtleXByZXNzQ29tbWFuZD4gbV9jb21tYW5kczsKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNlbmRpZgogICAgICAgICAvLyBUaGUgbW9kaWZpZXIg
c3RhdGUgaXMgb3B0aW9uYWwsIHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQgaW4gdGhlIFVJIHByb2Nl
c3Mgb3IgaW4gbGVnYWN5IFdlYktpdC4KLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPE9wdGlvblNl
dDxNb2RpZmllcj4+IHNfY3VycmVudE1vZGlmaWVyczsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8T3B0aW9uU2V0PE1vZGlmaWVyPj4gc19jdXJyZW50TW9kaWZpZXJzOwogICAgIH07CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDZhYjQxZmI3ZTEyOWYwYmU5NWNiZGNhOGZlODFjZmFj
Y2NjM2M0ZGUuLjdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC02Miw4ICs2
Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhp
bnQ2NF90IGNoYW5nZUNvdW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGludDY0X3QgY2hhbmdlQ291bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90
IGNoYW5nZUNvdW50KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHBlcmZvcm1B
c0RhdGFPd25lcihEYXRhT3duZXJUeXBlLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzSWRlbnRpZmllci5jcHAKaW5kZXggZTlkZDY4ZGYy
ZmI0ZWQ2MTdjM2JhZWVmZjM4OWJiN2Q5ODY3ODE0Ni4uODllN2E0ZDAxMDI4NTlhNzNjMzFlMTg2
NjY5OTZlODMyZDhhYWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
Y2Vzc0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NJ
ZGVudGlmaWVyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIFByb2Nlc3MgewogCi1zdGF0aWMgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IGds
b2JhbElkZW50aWZpZXI7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4g
Z2xvYmFsSWRlbnRpZmllcjsKIAogdm9pZCBzZXRJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVmZXJyZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQ
b2xpY3kuY3BwCmluZGV4IGJlMDQ2MDE1MDU1YTVmYmQ4NDdhNzU3MzJjMjE0OTAyNWVlYzNmMjYu
LmM0OTQwZDYyOTk0Y2YzOGZlMjkyMmQ5MDQ4NmQwOGM1NTBiZjljMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMgeyBO
bywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJl
clBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRz
IHNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZlcnJl
clBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91
bGRQYXJzZUxlZ2FjeUtleXdvcmRzIHNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMpCiB7CiAgICAg
Ly8gIm5ldmVyIiAvICJkZWZhdWx0IiAvICJhbHdheXMiIGFyZSBsZWdhY3kga2V5d29yZHMgdGhh
dCB3ZSBzdXBwb3J0IGFuZCBzdGlsbCBkZWZpbmVkIGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb246
CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbWV0YS1yZWZlcnJlcgpAQCAt
NjcsMTIgKzY3LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZl
cnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KICAgICAKLU9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVy
UG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJlclBvbGljeVNvdXJjZSBzb3Vy
Y2UpCitzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0
cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJlclBvbGljeVNvdXJjZSBzb3VyY2UpCiB7CiAg
ICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQ
SGVhZGVyOiB7CiAgICAgICAgIC8vIEltcGxlbWVudGluZyBodHRwczovL3d3dy53My5vcmcvVFIv
MjAxNy9DUi1yZWZlcnJlci1wb2xpY3ktMjAxNzAxMjYvI3BhcnNlLXJlZmVycmVyLXBvbGljeS1m
cm9tLWhlYWRlci4KLSAgICAgICAgT3B0aW9uYWw8UmVmZXJyZXJQb2xpY3k+IHJlc3VsdDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcmVzdWx0OwogICAgICAgICBmb3Ig
KGF1dG8gdG9rZW5WaWV3IDogcG9saWN5U3RyaW5nLnNwbGl0KCcsJykpIHsKICAgICAgICAgICAg
IGF1dG8gdG9rZW4gPSBwYXJzZVJlZmVycmVyUG9saWN5VG9rZW4oc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVFRQU3BhY2VzKHRva2VuVmlldyksIFNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHM6Ok5v
KTsKICAgICAgICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi52YWx1ZSgpICE9IFJlZmVycmVyUG9s
aWN5OjpFbXB0eVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
ZmVycmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5o
CmluZGV4IGQ1ZDQ5ODQ2NWUxYWJlY2Q4YmVlYTNlNGQ2ZDQwZTQ4MzQ4NzExZWYuLjM4Y2Y0N2Ex
ZWMyMzY1Zjg4MmU4NzBiNjczNjk1MjVjNTEwZTg0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVmZXJyZXJQb2xpY3kuaApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIFJlZmVycmVy
UG9saWN5IDogdWludDhfdCB7CiB9OwogCiBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5U291cmNl
IDogdWludDhfdCB7IE1ldGFUYWcsIEhUVFBIZWFkZXIsIFJlZmVycmVyUG9saWN5QXR0cmlidXRl
IH07Ci1PcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeShTdHJpbmdW
aWV3LCBSZWZlcnJlclBvbGljeVNvdXJjZSk7CitzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5
PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcsIFJlZmVycmVyUG9saWN5U291cmNlKTsK
IFN0cmluZyByZWZlcnJlclBvbGljeVRvU3RyaW5nKGNvbnN0IFJlZmVycmVyUG9saWN5Jik7CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWlu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDFi
N2U1ZGMxMjM4YWYwNGZmOWU5MDllOWM0MWJkMDk5OWNkMzJjNTYuLmVjM2UwZmZkM2FmMzU0NTMy
MGMzNzhmODBhODU0MmQ5NzZlODY1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVn
aXN0cmFibGVEb21haW4uaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFp
bj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJv
dGVjdGVkOgogCkBAIC0xNDIsOSArMTQyLDkgQEAgdm9pZCBSZWdpc3RyYWJsZURvbWFpbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
Ci1PcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gUmVnaXN0cmFibGVEb21haW46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gUmVnaXN0
cmFibGVEb21haW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0
cmluZz4gZG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkb21haW47CiAgICAgZGVj
b2RlciA+PiBkb21haW47CiAgICAgaWYgKCFkb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmNwcAppbmRleCA5ODBmZmU5NTgwMDNlZGFlODZhY2I4OGRiOTQxMjM3NzliMjk3
MzBkLi5jZTAwZGYzYWYxMTU5MmEzNTM2YjFhMTYxZWE5NjM5ZGI4NjZlYmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAK
QEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGJvb2wgcHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElET3ZlcnJpZGVXYXNRdWVyaWVkOwogI2VuZGlmCiAKLXN0YXRpYyBP
cHRpb25hbDxpbnQ+JiBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZSgpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxpbnQ+JiBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZSgpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPGludD4+IHBpZDsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxpbnQ+PiBwaWQ7CiAjaWYgIUFTU0VSVF9N
U0dfRElTQUJMRUQKICAgICBwcmVzZW50aW5nQXBwbGljYXRpb25QSURPdmVycmlkZVdhc1F1ZXJp
ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgc2V0UHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgcHJlc2VudGluZ0FwcGxpY2F0aW9uUElET3ZlcnJp
ZGUoKSA9IHBpZDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiYg
YXV4aWxpYXJ5UHJvY2Vzc1R5cGUoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJv
Y2Vzc1R5cGU+JiBhdXhpbGlhcnlQcm9jZXNzVHlwZSgpCiB7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PEF1eGlsaWFyeVByb2Nlc3NUeXBlPiBhdXhpbGlhcnlQcm9jZXNzVHlwZTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxBdXhpbGlhcnlQcm9jZXNzVHlwZT4gYXV4aWxpYXJ5UHJvY2Vzc1R5cGU7
CiAgICAgcmV0dXJuIGF1eGlsaWFyeVByb2Nlc3NUeXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKaW5kZXggZDZlOTdlM2EyMDkxNDE4OTE3N2Y2MDcz
YTIwMTQ5M2E4NDAxNDExZS4uZTNhMzNjYTlkOTlmMjAwZjBjY2RlNDAxYTBlYzk4YmI0YTg0MTI0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaApAQCAtNTYs
NyArNTYsNyBAQCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTY3Jl
ZW5EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdXNpbmcgU2NyZWVuRGF0YU1hcCA9IEhh
c2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQsIFNjcmVlbkRhdGE+OwpAQCAtNjYsNyArNjYsNyBAQCBz
dHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFw
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTY3JlZW5Q
cm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNjcmVlblByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNzYsMTQgKzc2LDE0IEBAIHZvaWQg
U2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Q
cm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2NyZWVu
UHJvcGVydGllcz4gU2NyZWVuUHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IHByaW1hcnlEaXNwbGF5SUQ7CisgICAg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gcHJpbWFyeURpc3BsYXlJRDsKICAgICBk
ZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5SUQ7CiAgICAgaWYgKCFwcmltYXJ5RGlzcGxheUlEKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2NyZWVuRGF0YU1h
cD4gc2NyZWVuRGF0YU1hcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFNYXA+IHNjcmVl
bkRhdGFNYXA7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EYXRhTWFwOwogICAgIGlmICghc2NyZWVu
RGF0YU1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNiw3MiArMTA2LDcy
IEBAIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2Ny
ZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBz
Y3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRlY29kZXIgPj4gc2NyZWVuQXZhaWxhYmxlUmVjdDsK
ICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJlY3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5SZWN0Owog
ICAgIGlmICghc2NyZWVuUmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKICAg
ICBkZWNvZGVyID4+IHNjcmVlbkNvbG9yU3BhY2U7CiAgICAgaWYgKCFzY3JlZW5Db2xvclNwYWNl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8aW50PiBzY3Jl
ZW5EZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGg7CiAgICAgZGVjb2Rl
ciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVlbkRlcHRoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8aW50PiBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAgICAg
ZGVjb2RlciA+PiBzY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKICAgICBpZiAoIXNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogICAgIGRlY29kZXIgPj4gc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yOwogICAgIGlmICghc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4g
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzY3JlZW5I
YXNJbnZlcnRlZENvbG9yczsKICAgICBkZWNvZGVyID4+IHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
OwogICAgIGlmICghc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2U7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAg
ICAgaWYgKCFzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2Ny
ZWVuSXNNb25vY2hyb21lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2NyZWVuSXNNb25vY2hy
b21lOwogICAgIGRlY29kZXIgPj4gc2NyZWVuSXNNb25vY2hyb21lOwogICAgIGlmICghc2NyZWVu
SXNNb25vY2hyb21lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRp
c3BsYXlNYXNrOwogICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5
TWFzaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPElPUmVn
aXN0cnlHUFVJRD4gZ3B1SUQ7CisgICAgc3RkOjpvcHRpb25hbDxJT1JlZ2lzdHJ5R1BVSUQ+IGdw
dUlEOwogICAgIGRlY29kZXIgPj4gZ3B1SUQ7CiAgICAgaWYgKCFncHVJRCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPER5bmFtaWNSYW5nZU1vZGU+IHByZWZl
cnJlZER5bmFtaWNSYW5nZU1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljUmFuZ2VNb2Rl
PiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwogICAgIGRlY29kZXIgPj4gcHJlZmVycmVkRHlu
YW1pY1JhbmdlTW9kZTsKICAgICBpZiAoIXByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7CiAgICAgZGVjb2RlciA+PiBzY2Fs
ZUZhY3RvcjsKICAgICBpZiAoIXNjYWxlRmFjdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcAppbmRleCA3ODZjNDk2M2FkZWQwNTBmZWJkM2IyNzY3ZDc3MjEzODIzMzFmMjhkLi4y
MThkYmFhMGU1ZTczZjEyMGU2NGE4Yjg4MWM3N2Q3YjcwYmFkMWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAtMTgyLDcg
KzE4Miw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgYXV0byBkZWx0YSA9IGRlbHRh
VG9OZXh0RnJhbWUoKTsKICAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlv
bigpOwogCi0gICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5
LCBPcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0RhdGEpIC0+IGRvdWJsZSB7CisgICAgYXV0byBh
Y2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBl
ckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91YmxlIHsKICAgICAgICAgaWYgKGF4aXNEYXRhICYm
IGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChkZWx0YSkpIHsKICAgICAgICAgICAgIGRv
dWJsZSBsYXN0VmVsb2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAg
ICAgICBpZiAoKHN0ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxv
Y2l0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmgKaW5kZXggMjA3ZWU0OTgxOGEwNDhmODVmZjY2ZWRiYzlhODE2YzdjMTkxNjhlZS4uZjll
MDliYWFhODI5OGMwZDQ3NzRkODkwNzc5MDNiOGM4OGQwMjI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtODAsOCArODAsOCBA
QCBwcml2YXRlOgogICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5j
dGlvbjsKICAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9u
Q2hhbmdlZEZ1bmN0aW9uOwogCi0gICAgT3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRh
bERhdGE7Ci0gICAgT3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1fdmVydGljYWxEYXRhOworICAgIHN0
ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CisgICAgc3RkOjpvcHRp
b25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAKICAgICBNb25vdG9uaWNUaW1lIG1f
c3RhcnRUaW1lOwogICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1f
YW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKaW5kZXggOGFiYzhhZmZiMzRiOTZiOWRlZmY5NzU2ODE4NTk2ZTVlOTk4YjIyNS4uYjMwZWQz
ZjNmYTIxZmM5NDU3YzNjZmE5ZWM3ZjBhZWZmMzE1ZGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIGZsb2F0IFNjcm9s
bEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2
ZW50QXhpcyBheGlzCiAgICAgaWYgKCFtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAo
KSkKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiBvcmln
aW5hbE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKICAg
ICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAgIGlmIChtZXRob2QgPT0gU2Nyb2xsU25hcFBvaW50
U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25hbCkgewogICAgICAgICBGbG9hdFNpemUgc2Nyb2xs
T3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggOTNhZjU4YjMz
M2U4YzRkMzJkZTNkMTI0MDMzYTk1YWVmYmIzMTZhYS4uZmU0NThiMzY4MjA3OWI0OTNiNjgxOTBj
NmFkYzFjNjVlZGYwYjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRy
b2xsZXIuaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKICAgICB2b2lkIHVw
ZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0g
ICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBk
ZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5h
bE9mZnNldCk7CisgICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRB
eGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0JpYXMg
eyBOb25lLCBWZXJ0aWNhbCB9OwotICAgIHN0YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+
IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxT
Y3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBkaXJlY3Rpb25Gcm9tRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwgc3RkOjpvcHRpb25hbDxTY3JvbGxFdmVudEF4
aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAgICAgc3RhdGljIEZs
b2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDlmNGNlZWUxZjdiYTkzZmRiODg1
ODcxOTFhYTZiYWM0ZDkwMjg3NDQuLjEwNzhhM2M0NDU5YzcwMzVmN2IzN2E1ZTQ1NWNlODRmYmJj
MTVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTU0NSw3ICs1NDUs
NyBAQCBwcml2YXRlOgogICAgICAgICBGbG9hdFNpemUgdW5vYnNjdXJlZENvbnRlbnRTaXplOwog
ICAgICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0OwogICAgIH07Ci0gICAgT3B0aW9u
YWw8RGVsZWdhdGVkU2Nyb2xsaW5nR2VvbWV0cnk+IG1fZGVsZWdhdGVkU2Nyb2xsaW5nR2VvbWV0
cnk7CisgICAgc3RkOjpvcHRpb25hbDxEZWxlZ2F0ZWRTY3JvbGxpbmdHZW9tZXRyeT4gbV9kZWxl
Z2F0ZWRTY3JvbGxpbmdHZW9tZXRyeTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAvLyBGSVhNRTogZXhwb3NlZENvbnRlbnRSZWN0IGlzIGEgdmVyeSBzaW1pbGFyIGNvbmNl
cHQgdG8gZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgZXhjZXB0IGl0IGRvZXMgbm90IGRpZmZlcmVu
dGlhdGUKQEAgLTU1Nyw4ICs1NTcsOCBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9maXhlZExh
eW91dFNpemU7CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKIAotICAgIE9wdGlvbmFsPElu
dFNpemU+IG1fZGVmZXJyZWRTY3JvbGxEZWx0YTsgLy8gTmVlZGVkIGZvciBXZWJLaXQgc2Nyb2xs
aW5nCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0Pj4g
bV9kZWZlcnJlZFNjcm9sbE9mZnNldHM7IC8vIE5lZWRlZCBmb3IgcGxhdGZvcm0gd2lkZ2V0IHNj
cm9sbGluZworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9kZWZlcnJlZFNjcm9sbERlbHRh
OyAvLyBOZWVkZWQgZm9yIFdlYktpdCBzY3JvbGxpbmcKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxTY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNldD4+IG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRz
OyAvLyBOZWVkZWQgZm9yIHBsYXRmb3JtIHdpZGdldCBzY3JvbGxpbmcKIAogICAgIEludFBvaW50
IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZhNTkxNjk2MWY2
Yi4uYTE3N2U4MGQ1ZGMzMjFhODg3ZjgwYmZiYjQxNDIyYWEzNTQ0ZTc0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3Np
dGlvbiYgcG9zaXRpb24pCiAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkubm90aWZ5Q29udGVudEFy
ZWFTY3JvbGxlZChzY3JvbGxQb3NpdGlvbigpIC0gb2xkUG9zaXRpb24pOwogfQogCi1ib29sIFNj
cm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+
KQorYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU+KQogewogICAgIGlmICghaXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaAppbmRleCBkNDgxZjdlZGNiZmJmMzNiZGFiNjYzNjc3YzhmZDUwYjczOGFmOWE2
Li4wMTk1YTE1NTQzNzlhOWMzZTE2OTVmN2M0NGVjZGQzZGVmZDA3N2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4gc29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0
aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIsIFNjcm9sbENsYW1waW5nID0gU2Ny
b2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+KTsKIAogICAgIGJvb2wgdXNlc1Njcm9sbFNuYXAoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGFlZTBkODc2ZWYzNjY4
YzVhMDE4OWZjMjI3MjQwNzU3MDNhMzIzYjcuLmMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEy
NzFlMWI4YjllMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKLSAgICB2b2lkIHJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRl
eHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiA9IHN0ZDo6bnVs
bG9wdCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxv
cHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJM
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZv
aWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogCiAg
ICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikgZmluYWw7CiAgICAgdm9pZCB3cml0
ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNw
cAppbmRleCBiYzk3ZTRlNGJmNTQyN2VjZWQ3MWY4N2M0ZTFjOGE0ZmM1YjkyZWJhLi4yMDI3MmJi
ZTM1NGM0MDE3MjU5NDUyZWRiYzRjZmU5ODlkOGY5MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIGludCBUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVz
dG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLU9wdGlvbmFsPEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lOjpjb250cm9sRm9udChDb250cm9sUGFydCwgY29u
c3QgRm9udENhc2NhZGUmLCBmbG9hdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVE
ZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGZsb2F0KSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhlbWUuaAppbmRleCBkZGMyNjBlM2VlYmEzZTMyZGJjODc3OGVmYTYwZmM1ZDYz
ZjcxNGNlLi4xY2Y1NmMyODZmYWJmZjZkNDBiZDc4M2Y5MTQ4OTdkOWQ3MTVmODkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdDsKIAogICAg
IC8vIFRoZSBmb250IGRlc2NyaXB0aW9uIHJlc3VsdCBzaG91bGQgaGF2ZSBhIHpvb21lZCBmb250
IHNpemUuCi0gICAgdmlydHVhbCBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250
cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9y
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlv
bj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBUaGUgc2l6ZSBoZXJlIGlzIGluIHpvb21lZCBjb29y
ZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXplIGlzIHJldHVybmVkLCBpdCBhbHNvIG5lZWRz
IHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4KICAgICB2aXJ0dWFsIExlbmd0aFNpemUgY29u
dHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6
ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5jcHAKaW5kZXggZTFmNmUyMmEyYTNkZmY2ODQyNjgxMjVjODM4N2Q5N2ZiZDdlOTIxNS4u
ZjA3MzQ4ZjgwOGQ3ZjAzMzVkYTg5NmY1ZTY0MDBlYjEzZmVmODk3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmNwcApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVI
ZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBvbGRUaW1lKQogICAgICAgICByZXR1cm47CiAKICNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvbGRIZWFwSW5kZXg7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb2xkSGVhcEluZGV4OwogICAgIGlmIChtX2hlYXBJ
dGVtLT5pc0luSGVhcCgpKQogICAgICAgICBvbGRIZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFw
SW5kZXgoKTsKICNlbmRpZgpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRh
dGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBvbGRUaW1lKQogICAgICAgICBoZWFwSW5jcmVh
c2VLZXkoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5l
d0hlYXBJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXdIZWFwSW5kZXg7CiAg
ICAgaWYgKG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpCiAgICAgICAgIG5ld0hlYXBJbmRleCA9IG1f
aGVhcEl0ZW0tPmhlYXBJbmRleCgpOwogICAgIEFTU0VSVChuZXdIZWFwSW5kZXggIT0gb2xkSGVh
cEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IDU2Zjc2NTc4MWMzYjEzNzRhMjE2
MjU5NWIxYjA5MmI5ZWRkNzU3MDUuLjhlNDVmODdiMjAxYzA2M2FlZTJlOTdiN2RlMjU1YmEzMTJj
NTIwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotICAgIHZpcnR1YWwg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1lKE1vbm90b25pY1RpbWUpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxN
b25vdG9uaWNUaW1lPiBhbGlnbmVkRmlyZVRpbWUoTW9ub3RvbmljVGltZSkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsK
ICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmluZGV4IDMxNWFlNGIyMDdmNzBj
ODdlMzhkZjdiNjg0Mzk1ZWMxZjNjOTJkNTMuLjJiZjZhYzY5ZWFiYWJlMjQyM2M5ZGYxYjRiZmNm
MjUyNWExM2U3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgICAgICBF
bmQsCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRl
KGludCBzdGVwcywgT3B0aW9uYWw8U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCisgICAgc3Rh
dGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoaW50IHN0ZXBzLCBzdGQ6Om9wdGlv
bmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcFBvc2l0aW9uKSk7CiAg
ICAgfQpAQCAtMjI4LDExICsyMjgsMTEgQEAgcHVibGljOgogICAgIGludCBudW1iZXJPZlN0ZXBz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZTdGVwcyhp
bnQgc3RlcHMpIHsgbV9zdGVwcyA9IHN0ZXBzOyB9CiAKLSAgICBPcHRpb25hbDxTdGVwUG9zaXRp
b24+IHN0ZXBQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcFBvc2l0aW9uOyB9Ci0gICAg
dm9pZCBzZXRTdGVwUG9zaXRpb24oT3B0aW9uYWw8U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24p
IHsgbV9zdGVwUG9zaXRpb24gPSBzdGVwUG9zaXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0
ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247
IH0KKyAgICB2b2lkIHNldFN0ZXBQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4g
c3RlcFBvc2l0aW9uKSB7IG1fc3RlcFBvc2l0aW9uID0gc3RlcFBvc2l0aW9uOyB9CiAKIHByaXZh
dGU6Ci0gICAgU3RlcHNUaW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIE9wdGlvbmFsPFN0ZXBQb3Np
dGlvbj4gc3RlcFBvc2l0aW9uKQorICAgIFN0ZXBzVGltaW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBz
dGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQogICAgICAgICA6IFRpbWlu
Z0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCiAgICAgICAgICwgbV9zdGVwcyhzdGVwcykKICAgICAg
ICAgLCBtX3N0ZXBQb3NpdGlvbihzdGVwUG9zaXRpb24pCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAgICAgCiAgICAgaW50IG1fc3RlcHM7Ci0gICAgT3B0aW9uYWw8U3RlcFBv
c2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4g
bV9zdGVwUG9zaXRpb247CiB9OwogCiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbiBmaW5hbCA6
IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCmluZGV4IGMyOWI4NTg2NjAyZWNlMTEwYjY2MmM1ODEwZTli
ZTdjNDJhMzE2ZDEuLjRmMDA3OTdiNTlkZjdkZWUzODgwMTdlZmE2NTg2NTNlNzFkM2M1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCkBA
IC00OCwxNCArNDgsMTQgQEAgc3RydWN0IEF1ZGlvSU9Qb3NpdGlvbiB7CiAgICAgICAgIGVuY29k
ZXIgPDwgdGltZXN0YW1wOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxBdWRpb0lPUG9zaXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1
ZGlvSU9Qb3NpdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBP
cHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBwb3NpdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBwb3NpdGlvbjsKICAgICAgICAgaWYgKCFw
b3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZXN0YW1wOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1v
bm90b25pY1RpbWU+IHRpbWVzdGFtcDsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lc3RhbXA7CiAg
ICAgICAgIGlmICghdGltZXN0YW1wKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4
IDhlNjg2ZTQ0N2I5YjY2ZGNlOGFiN2UyMTM3MTRmZGU2MGU5M2JiNWMuLjVmNjE2OWU3MTdmYWY2
MzU5NjY5MTA0Zjc4MjA2ZjVmZDI1NDI1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4mIHNo
YXJlZEF1ZGlvU2Vzc2lvbigpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9T
ZXNzaW9uPj4mIHNoYXJlZEF1ZGlvU2Vzc2lvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+Pj4gc2Vzc2lvbjsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4+
IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb24uZ2V0KCk7CiB9CiAKQEAgLTE4MCw3ICsxODAs
NyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9C
bHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29sPikKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJ
c1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmgKaW5kZXggYjhmN2QzMGY3ZDY1MTA4ZGIzZDBiNzM2OTg4OTdlMzA2MGY5OGJi
OC4uYTk0NzdlMWQwMTcxNmExNDkzNzJhMTI1NDhhY2JiYWM4NTk5NzU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTk3LDcgKzk3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRT
dGF0ZU9ic2VydmVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VD
aGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoT3B0aW9uYWw8Ym9vbD4pOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0
b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAgdmlydHVhbCBib29sIGlz
TXV0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVN
dXRlZFN0YXRlQ2hhbmdlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
UGFubmVyLmgKaW5kZXggYzMwNzY2NDM0OTE2NjFhNWY2ZjBmZmUyNTM0NjhlNjkzOGVlMDdjYS4u
YjQyOTQ3ZWZjYzNmMmM4M2EzY2Q2ZDUzNTg5M2Y4YjdjMmM3YTFjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtODAsMTEgKzgwLDExIEBAIHByaXZh
dGU6CiAgICAgQ3Jvc3NmYWRlU2VsZWN0aW9uIG1fY3Jvc3NmYWRlU2VsZWN0aW9uIHsgQ3Jvc3Nm
YWRlU2VsZWN0aW9uMSB9OwogCiAgICAgLy8gYXppbXV0aC9lbGV2YXRpb24gZm9yIENyb3NzZmFk
ZVNlbGVjdGlvbjEuCi0gICAgT3B0aW9uYWw8aW50PiBtX2F6aW11dGhJbmRleDE7CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IG1fYXppbXV0aEluZGV4MTsKICAgICBkb3VibGUgbV9lbGV2YXRpb24x
IHsgMCB9OwogCiAgICAgLy8gYXppbXV0aC9lbGV2YXRpb24gZm9yIENyb3NzZmFkZVNlbGVjdGlv
bjIuCi0gICAgT3B0aW9uYWw8aW50PiBtX2F6aW11dGhJbmRleDI7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IG1fYXppbXV0aEluZGV4MjsKICAgICBkb3VibGUgbV9lbGV2YXRpb24yIHsgMCB9Owog
CiAgICAgLy8gQSBjcm9zc2ZhZGUgdmFsdWUgMCA8PSBtX2Nyb3NzZmFkZVggPD0gMS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDU4ZjBi
Y2M5MGY3ODg2ZDJlMWI3NjdiZTgzZjE1ODlmNzUxNDliZmUuLjMzMzYwNWU3NWJkMTE4MDU1YjBj
ZWE1MDcwNWFhYTdlY2IwNTRlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTm93UGxheWluZ0luZm8uaApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgTm93UGxheWluZ0lu
Zm9BcnR3b3JrIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5m
b0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdApAQCAtNTgsNyArNTgsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxp
bmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZAogICAg
IGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGltYWdlRGF0YTsKIH0KIAotdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93
UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBT
dHJpbmcgc3JjOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3JjKSkKQEAgLTg2LDcgKzg2LDcg
QEAgc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKICAgICBNZWRpYVVuaXF1ZUlkZW50aWZpZXIgdW5p
cXVlSWRlbnRpZmllcjsKICAgICBib29sIGlzUGxheWluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IHsgZmFsc2UgfTsKLSAgICBPcHRpb25h
bDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CisgICAgc3RkOjpvcHRpb25hbDxOb3dQ
bGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Tm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTEwOSw3ICsxMDksNyBAQCBz
dHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWlu
Z0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBp
bmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CkBAIC0xMTcsNyArMTE3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQg
Tm93UGxheWluZ0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVy
IDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5nIDw8IHVuaXF1
ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkgPDwgYXJ0d29yazsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQ
bGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIFN0cmluZyB0aXRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpdGxlKSkKQEAgLTE1
OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93
UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7Cisg
ICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwCmluZGV4IDI5NzI2ZDMxYWUzODk0ZDQzYWE5ODk0YmViMDA4YTQzZjg3ZjRlMDYuLjYyODQ3
MTcyNjQyNTRmZDY0OGVmZWEwYjE3ODlhZGRiM2VjYmVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTQw
OSw3ICs0MDksNyBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjptYW5hZ2VyKCkKICAgICByZXR1cm4gKm1fbWFuYWdlcjsKIH0KIAotT3B0aW9uYWw8
Tm93UGxheWluZ0luZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRl
eCA3YWFjNTI0YjQ5NjA1OTZhYmQxMjBmMWEwNTgzMDkxZTIxNTgwODdkLi44MjEyN2E4Nzg4OWNk
MTMzMzI2ZTFlMmUwOGUwOTM5MjczMzhkNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTExOSwxMSArMTE5LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAgICAg
CiAgICAgc3RydWN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCB7Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gdGltZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZmFzdFNlZWs7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB0aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZh
c3RTZWVrOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFJlbW90ZUNvbW1hbmRBcmd1bWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlQ29tbWFu
ZEFyZ3VtZW50PiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBlbnVtIFJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSA6IHVpbnQ4X3QgewpAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyaW5nQXVkaW8oKSBjb25zdCA9IDA7CiAgICAg
fTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJbmZv
KCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQ
bGF5aW5nSW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNZWRpYVVzYWdlSWZD
aGFuZ2VkKCkgeyB9CiAKICAgICBNZWRpYVNlc3Npb25JZGVudGlmaWVyIG1lZGlhU2Vzc2lvbklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU2Vzc2lvbklkZW50aWZpZXI7IH0KQEAg
LTI5MSwxMCArMjkxLDEwIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQ6CiAgICAgZW5jb2RlciA8
PCB0aW1lIDw8IGZhc3RTZWVrOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50PiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDxPcHRpb25hbDx0
eXBlPj4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx0eXBlPj4gbmFt
ZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggNmJiZjQ2
Y2RhMDdkMTY1NzY3ZmEwNjQwNmIyMjNmYzE2MjliNmE0OS4uZDc3OWE4ZmQzM2Q3NzgyMzQ3MzIx
ODZkYTJhYTVlZGNjZTIzMTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBib29sIHZhbGlkYXRlQXVkaW9CdWZmZXJMaXN0KEF1ZGlvQnVmZmVyTGlzdCogYnVm
ZmVyTGlzdCkKICAgICBpZiAoIWJ1ZmZlckxpc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHBlY3RlZERhdGFTaXplOworICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGV4cGVjdGVkRGF0YVNpemU7CiAgICAgY29uc3QgQXVkaW9CdWZmZXIqIGJ1
ZmZlciA9IGJ1ZmZlckxpc3QtPm1CdWZmZXJzOwogICAgIGNvbnN0IEF1ZGlvQnVmZmVyKiBidWZm
ZXJFbmQgPSBidWZmZXIgKyBidWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsKICAgICBmb3IgKCA7
IGJ1ZmZlciA8IGJ1ZmZlckVuZDsgKytidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5k
ZXggMmM0Yzc3ZmRmMjk3MWEyNzMxYjY2OTYyYmI0ODg0MmJlMmVkNTJmZi4uZGExZmFjZTU3ZjU0
NjE4MzgzZDQzNTk2MjJjMDViNjdmZGM0MGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAg
LTg3LDggKzg3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHVzaFNhbXBsZXNJbnRlcm5hbChj
b25zdCBBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBNZWRpYVRpbWUmLCBzaXplX3QgZnJhbWVDb3Vu
dCk7CiAKLSAgICBPcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5wdXREZXNj
cmlwdGlvbjsKLSAgICBPcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0
RGVzY3JpcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
IG1faW5wdXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKIAogICAgIE1lZGlhVGltZSBob3N0VGltZSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYzJiNmMwNGQxZjQy
MGU2Njk2MTg3MDM2NTkzMWZmMDA0OTA4MmU1OS4uZDczYmE2OTQ4ZjI3YmVmYzU3OGU4YjFiNjRk
MDc3NmIzMjMzNTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzYxLDcg
KzM2MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5n
SW5mbygpCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIE9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vd1Bs
YXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5vd1Bs
YXlpbmdFbGlnaWJsZVNlc3Npb24oKSkKICAgICAgICAgbm93UGxheWluZ0luZm8gPSBzZXNzaW9u
LT5ub3dQbGF5aW5nSW5mbygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcAppbmRleCBlYzRhZjZiNmIz
MjQ3M2VmYzBjMzVmM2ZjODUyY2M5ZWFiNTk0YzgzLi44NDg1NjczYWZhNTM1N2FiM2Y0YTQ3NzU3
YjUwMDA5YThjMWRjM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
V2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBmb3JtYXQsIHUKICAgICBzZXRTYW1wbGVDb3VudChzYW1wbGVDb3VudCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4g
Y29tcHV0ZUJ1ZmZlclNpemVzKHVpbnQzMl90IG51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscywg
dWludDMyX3QgYnl0ZXNQZXJGcmFtZSwgdWludDMyX3QgbnVtYmVyT2ZDaGFubmVsU3RyZWFtcywg
dWludDMyX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPHNpemVfdCwgc2l6ZV90Pj4gY29tcHV0ZUJ1ZmZlclNpemVzKHVpbnQzMl90IG51bWJlck9m
SW50ZXJsZWF2ZWRDaGFubmVscywgdWludDMyX3QgYnl0ZXNQZXJGcmFtZSwgdWludDMyX3QgbnVt
YmVyT2ZDaGFubmVsU3RyZWFtcywgdWludDMyX3Qgc2FtcGxlQ291bnQpCiB7CiAgICAgc2l6ZV90
IHRvdGFsU2FtcGxlQ291bnQ7CiAgICAgYm9vbCByZXN1bHQgPSBXVEY6OnNhZmVNdWx0aXBseShz
YW1wbGVDb3VudCwgbnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzLCB0b3RhbFNhbXBsZUNvdW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9X
ZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IGRkNDgyOWQzN2MyM2E2ZDVmMjUwNjMwMDUyYjRiMjBhZWYzZWVkYTEuLjFjNjk5ZmJlZTQ1OGEz
ODUyN2E1MDIxZjFmMGNhMDI3ZDJkOWIxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyB2b2lkIHdl
YktpdFdlYkF1ZGlvU3JjR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R3N0
QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYktpdFdlYkF1ZGlv
U3JjKiBzcmMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHc3RCdWZmZXI+
Pj4gd2ViS2l0V2ViQXVkaW9TcmNBbGxvY2F0ZUJ1ZmZlcnMoV2ViS2l0V2ViQXVkaW9TcmMqIHNy
YykKIHsKICAgICBXZWJLaXRXZWJBdWRpb1NyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IGVkZWYzMDdmMjdhYzNiOGRiZGY4MmE3YmNlNjQzMjli
M2VmZWFjZGEuLmE1MjE1Mzg0NzRjZjcwNmViYjlmMTY1MTUzYjM4ZTIxYjI3MWI0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogI2lmIEhBVkUoQ0VMRVNUSUFM
KQogICAgIHZvaWQgbWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpOwotICAgIHZvaWQgdXBkYXRl
Q2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYpOworICAgIHZvaWQgdXBkYXRlQ2Fy
UGxheUlzQ29ubmVjdGVkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgdm9pZCBhY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlKGJvb2wpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKICAgICBNZWRp
YVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAotdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxi
b29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1
cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGNhclBsYXlJc0Nv
bm5lY3RlZCkKIHsKICAgICBpZiAoY2FyUGxheUlzQ29ubmVjdGVkKSB7CiAgICAgICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGNhclBsYXlJc0Nvbm5lY3RlZC52YWx1ZSgpKTsK
QEAgLTU4Miw3ICs1ODIsNyBAQCAtICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICAgICBpZiAoIV9jYWxsYmFjaykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOwogICAgIGlmIChub3RpZmlj
YXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3Rp
ZmljYXRpb25QYXJhbWV0ZXIoKSkgewogICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25u
ZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsKICAg
ICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oCmluZGV4IGYwNWJiZDg1MmNjYzg4
M2Q3Yjg5MjNlZjZiOGQxNTMzMzQyOTc5MDUuLjFhZDhmNjE3YWMyMjJjNDQyOTlmYmI1ZDcyMDU0
NjMyMzViMjBlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TZXNzaW9uTWFjLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBB
dWRpb1Nlc3Npb24KICAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2NhdGVnb3J5OyB9CiAgICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSBm
aW5hbDsKLSAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8
Ym9vbD4pIGZpbmFsOworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShz
dGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5
VHlwZSwgUm91dGVTaGFyaW5nUG9saWN5KSBmaW5hbDsKICAgICBBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSBjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jYXRlZ29y
eU92ZXJyaWRlOyB9CiAgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSkg
ZmluYWw7CkBAIC02NywxOSArNjcsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE11dGVkU3Rh
dGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZU11
dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKIAotICAgIE9wdGlv
bmFsPGJvb2w+IG1fbGFzdE11dGVkU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2xh
c3RNdXRlZFN0YXRlOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkg
eyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6Tm9uZSB9OwogI2lmIEVOQUJMRShST1VUSU5H
X0FSQklUUkFUSU9OKQogICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2luUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKLSAgICBPcHRp
b25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aDsKLSAgICBPcHRpb25hbDxib29sPiBtX3Bs
YXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9wbGF5
aW5nVG9CbHVldG9vdGg7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0
b290aE92ZXJyaWRlOwogI2VuZGlmCiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9j
YXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKICAg
ICBtdXRhYmxlIGJvb2wgbV9oYXNTYW1wbGVSYXRlT2JzZXJ2ZXIgeyBmYWxzZSB9OwogICAgIG11
dGFibGUgYm9vbCBtX2hhc0J1ZmZlclNpemVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxkb3VibGU+IG1fc2FtcGxlUmF0ZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHNp
emVfdD4gbV9idWZmZXJTaXplOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1f
c2FtcGxlUmF0ZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2J1ZmZlclNp
emU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5tbQppbmRleCBmNDEwNjZmZGE0OTk3OTYzNGE3NjI1YTg3MjdmYmZk
MWI3Y2UyMTU1Li5lNWVlZTk4NTRmMWU0NTEwYmY4NmJjZWNlNWEyODUzMTE4YWE3YzRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIEF1ZGlvRGV2aWNlSUQgZGVmYXVsdERldmlj
ZSgpCiB9CiAKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKLXN0YXRpYyBPcHRpb25h
bDxib29sPiBpc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZTsKIAogc3RhdGljIGZsb2F0IGRl
ZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpCiB7CkBAIC0xNzYsNyArMTc2LDcgQEAg
dm9pZCBBdWRpb1Nlc3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQbGF5
aW5nVG9CbHVldG9vdGhPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+IHZhbHVlKQogewogI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGlzUGxheWluZ1RvQmx1ZXRvb3RoT3Zl
cnJpZGUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKaW5kZXggM2EyNTU1NWM0NTA0ODBk
MjliMTQyOTRmYWZhYTk4MjU2N2FhNDg4MC4uYTQ4YzI0MmNiMzRlNzliNzAxMGU0MTcwMzk0YzEw
ZGY0NmU1YWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW5kUm91dGluZ0FyYml0cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9rZW4m
KTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZT4g
bV9jdXJyZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6Tm9uZSB9Owor
ICAgIHN0ZDo6b3B0aW9uYWw8QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU+IG1fY3VycmVudENh
dGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKICAgICBXZWFrSGFz
aFNldDxUb2tlbj4gbV90b2tlbnM7CiAgICAgVmVjdG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IG1f
ZW5xdWV1ZWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENv
bXBpbGVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21w
aWxlclNlcnZpY2UuY3BwCmluZGV4IDU4MTY4NTI4MjI1YTA0NzA3NzFmYjdhNWZiM2YwYTJmZmYw
MmRjOTAuLjRlMjVlZDBkN2NiMjNlZWE5MmVkNDYzMzNhY2MwY2E4MjI3NjMyMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNw
cApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRp
b25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxi
b29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CiAKIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlRm9yVGVzdGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRHJhZ0RhdGFDb2NvYS5tbQppbmRleCBiNTJmN2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNi
MTZjYjQ4NmM5Li4wOWI2N2FmYmZkN2RlZWQxZWM5Nzg2YTQ3YjAxNTMwZjQ0OWQxZTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTEz
MSw3ICsxMzEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgog
fQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxp
Y2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0
aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCitEcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxh
Z3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFj
dGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1f
Y2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRyYWdE
YXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25G
bGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9u
QWN0aW9uTWFzaywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKK0RyYWdEYXRhOjpE
cmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0
aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5h
dGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAg
ICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0
aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggODc5
MmIxNmJlZDFhMzg2NjViNDBkYzRiNjM2NjA0Mjk5ZmUyMmU1NC4uNmYyOGU4MjQzNjBjY2QzMDg2
YzAzMThmYWU0MDk4ZjFlZGUyOGUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikK
IH0KICNlbmRpZgogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXIm
IHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCkKIHsKICAgICBpZiAoIWl0ZW1JbmRleCkgewogICAgICAgICBhdXRvIGZpbGVuYW1l
cyA9IHJlYWRGaWxlUGF0aHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNjE1Y2JiNGExYjAyYWFi
ZmI5MWU0OGI1NWRhZTRhMDY3N2U1YjhjNC4uNGFmYTgzZGUwNTIzNjA2OTBkZWE4YTFlNjg1MmYw
ZTFhZWE2NDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxh
dGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oaW50NjRfdCBjaGFuZ2VDb3Vu
dCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGludDY0X3QgY2hhbmdlQ291bnQpCiB7CiAg
ICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpp
bmRleCAwODliM2Q4MTc5OWNmNWQ0NzRlZDJlYjZhZmY0MDMyNGVjMDI0MzQ5Li5lMDU3Zjk3ZDE0
NDI5YjcyYjI5NTRhYmUxN2Y4Y2E1ODhkZjFhN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5tbQpAQCAtNTYxLDggKzU2MSw4IEBAIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICBU
ZXh0VHJhY2smIG9mZkl0ZW0gPSBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAg
IFRleHRUcmFjayYgYXV0b21hdGljSXRlbSA9IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0
aWNJdGVtKCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc2VsZWN0ZWRJbmRleDsKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gb2ZmSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
c2VsZWN0ZWRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBvZmZJbmRleDsKIAog
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVUcmFja3NGb3JNZW51
LnNpemUoKTsgaW5kZXgrKykgewogICAgICAgICBhdXRvJiB0cmFjayA9IG1fbGVnaWJsZVRyYWNr
c0Zvck1lbnVbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUG93ZXJTb3VyY2VOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UG93ZXJTb3VyY2VOb3RpZmllci5oCmluZGV4IDBmNmNmZjQ3NmYwMzIyYmEzYTAyZmFmZjM3YTcx
ZjBhYThhN2ExY2MuLmEwOTZlMDZhODE5ZDk3MDFlNGQ3NjQ2MzJlNDc2MDU2ODNkMjE2YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlm
aWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlm
eVBvd2VyU291cmNlQ2hhbmdlZCgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBtX3Rva2VuSUQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fdG9rZW5JRDsKICAgICBQb3dlclNvdXJjZU5vdGlmaWVy
Q2FsbGJhY2sgbV9jYWxsYmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KaW5kZXggMDdl
MGU5NzA2ZDRmZDZmZTRmY2M5MzkyZDkzMWE2OWI3MjExNjA5Ni4uMGNhMWVjN2UwYzhjYmJkZjA1
NGIyZGMwNGFlZDhmYmUyYmIxMmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8TVJNZWRp
YVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWVkaWFSZW1vdGVDb21tYW5k
Rm9yUGxhdGZvcm1Db21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAgICAgdXNpbmcgQ29tbWFuZFRvQWN0aW9uTWFw
ID0gSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaAppbmRleCA5NzM1MjQyNzEz
YWYwYzA5ZDdiMzVlYTc2ZmM0ZGMzZDBkMDI0NDFjLi43MTczMTQxMzEzYmUyOGQzNmM2YTM4ZDRl
MzhlYTIxODI2NjAwZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TeXN0ZW1CYXR0ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lz
dGVtQmF0dGVyeS5oCkBAIC0zNiwyMyArMzYsMjMgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzeXN0
ZW1IYXNCYXR0ZXJ5KCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0U3lzdGVtSGFzQUMoKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3lzdGVtSGFzQUMoYm9vbCk7CiBXRUJDT1JFX0VYUE9S
VCBib29sIHN5c3RlbUhhc0FDKCk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxib29sPiBjYWNo
ZWRTeXN0ZW1IYXNBQygpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxib29sPiBjYWNo
ZWRTeXN0ZW1IYXNBQygpOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTeXN0ZW1CYXR0ZXJ5U3Rh
dHVzVGVzdGluZ092ZXJyaWRlcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN5c3RlbUJhdHRlcnlT
dGF0dXNUZXN0aW5nT3ZlcnJpZGVzJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgc2V0SGFzQUMo
T3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzQUMoKSB7IHJldHVybiBt
X2hhc0FDOyB9CisgICAgdm9pZCBzZXRIYXNBQyhzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQUMoKSB7IHJldHVybiBtX2hhc0FDOyB9CiAKLSAgICB2
b2lkIHNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
aGFzQmF0dGVyeSgpIHsgcmV0dXJuICBtX2hhc0JhdHRlcnk7IH0KKyAgICB2b2lkIHNldEhhc0Jh
dHRlcnkoc3RkOjpvcHRpb25hbDxib29sPiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhh
c0JhdHRlcnkoKSB7IHJldHVybiAgbV9oYXNCYXR0ZXJ5OyB9CiAKICAgICB2b2lkIHNldENvbmZp
Z3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2
YXRlOgotICAgIE9wdGlvbmFsPGJvb2w+IG1faGFzQmF0dGVyeTsKLSAgICBPcHRpb25hbDxib29s
PiBtX2hhc0FDOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNCYXR0ZXJ5OworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNBQzsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9j
b25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkubW0KaW5kZXggZDQ1MjlhMjBmNTM5Njc1MjE5OWMw
ZWNkYWY4Njg1OGRhZDcxNTJiZi4uZGU5YjU5ODFhM2RlZGI2MWViNmNmZjc1OTdiYWZkMGMzYTAy
M2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0
dGVyeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5
Lm1tCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9w
dGlvbmFsPGJvb2w+IGhhc0JhdHRlcnk7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gaGFzQUM7Citz
dGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBoYXNCYXR0ZXJ5Oworc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaGFzQUM7CiAKIHZvaWQgc2V0U3lzdGVtSGFzQmF0dGVyeShib29sIGJhdHRlcnkp
CiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBzeXN0ZW1IYXNBQygpCiAgICAgcmV0dXJuICpo
YXNBQzsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gY2FjaGVkU3lzdGVtSGFzQUMoKQorc3RkOjpvcHRp
b25hbDxib29sPiBjYWNoZWRTeXN0ZW1IYXNBQygpCiB7CiAgICAgcmV0dXJuIGhhc0FDOwogfQpA
QCAtMTI1LDE0ICsxMjUsMTQgQEAgU3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXMm
IFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGUKICAgICByZXR1cm4g
aW5zdGFuY2U7CiB9CiAKLXZvaWQgU3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXM6
OnNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9vbD4mJiBoYXNCYXR0ZXJ5KQordm9pZCBTeXN0ZW1C
YXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2V0SGFzQmF0dGVyeShzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgaGFzQmF0dGVyeSkKIHsKICAgICBtX2hhc0JhdHRlcnkgPSBXVEZNb3ZlKGhhc0Jh
dHRlcnkpOwogICAgIGlmIChtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2spCiAgICAgICAg
IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFjaygpOwogfQogCi12b2lkIFN5c3RlbUJhdHRl
cnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzZXRIYXNBQyhPcHRpb25hbDxib29sPiYmIGhhc0FD
KQordm9pZCBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2V0SGFzQUMoc3Rk
OjpvcHRpb25hbDxib29sPiYmIGhhc0FDKQogewogICAgIG1faGFzQUMgPSBXVEZNb3ZlKGhhc0FD
KTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaAppbmRleCA2MzVkYmJmMGE4N2MxNzRjOTQ3ZDhhNTk4YmZiZjk0MGIwOWJkZjdiLi4x
ODU3YWI2MTU3NTYyZGQwZDFlZDI3ZDhkYzUxNjViZTY0MWYxYjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBLZXlTdGF0dXNW
ZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1
c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47
Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFu
Z2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxN
ZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB1c2luZyBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lv
bldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFs
PE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
ID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CkBA
IC05NCwxMyArOTQsMTMgQEAgcHVibGljOgogICAgICAgICBPdGhlciwKICAgICB9OwogCi0gICAg
dXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3Nh
Z2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgTG9h
ZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxL
ZXlTdGF0dXNWZWN0b3I+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmLCBzdGQ6Om9wdGlvbmFs
PE1lc3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCiAg
ICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBP
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3Rh
dHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NW
YWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4
IDAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJkMDhiZjZiZWRmYWUuLmEzMDI2MTBkYWRlYWZj
N2UwOGFiNzhkNDJlMmQ4OGExYzA5MDFlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uLmgKQEAgLTYyLDM5ICs2MiwzOSBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBk
ZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERh
dGFUeXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFU
eXBlczsKICAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAoIWlu
aXREYXRhVHlwZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9D
YXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAg
ICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRl
b0NhcGFiaWxpdGllczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBh
YmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9DYXBh
YmlsaXRpZXM7CiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBk
aXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0RNUmVxdWlyZW1l
bnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2
ZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlmaWVyKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPENE
TVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0RN
UmVxdWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0
ZW50U3RhdGU7CiAgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5
cGU+PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETVNlc3Np
b25UeXBlPj4gc2Vzc2lvblR5cGVzOwogICAgICAgICBkZWNvZGVyID4+IHNlc3Npb25UeXBlczsK
ICAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNTWVkaWFDYXBhYmlsaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAppbmRleCBjYjUwMDRmM2NkNzhjNjUxYWJiYTEzNDFk
ZWY2ZjJlY2I3NzJjMjFiLi5jMjU2MTM5Y2ZjOWFmZjQ5YTVjMTQzOTExZmM3OTc5YmI2M2FiZDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1N
ZWRpYUNhcGFiaWxpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5IHsKICAgICBTdHJpbmcgY29udGVudFR5
cGU7CiAgICAgU3RyaW5nIHJvYnVzdG5lc3M7Ci0gICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNj
aGVtZT4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENETUVuY3J5cHRpb25T
Y2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00OSwxOSArNDksMTkg
QEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0RNTWVkaWFD
YXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKICAgICAgICAgaWYg
KCFjb250ZW50VHlwZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8U3RyaW5nPiByb2J1c3RuZXNzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gcm9idXN0bmVzczsKICAgICAgICAgZGVjb2RlciA+PiByb2J1c3RuZXNzOwogICAgICAg
ICBpZiAoIXJvYnVzdG5lc3MpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9u
U2NoZW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8Q0RNRW5jcnlwdGlv
blNjaGVtZT4+IGVuY3J5cHRpb25TY2hlbWU7CiAgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlv
blNjaGVtZTsKICAgICAgICAgaWYgKCFlbmNyeXB0aW9uU2NoZW1lKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKaW5kZXggNzQxNTQ0MTM3ZjA0OTM4ZjVkYjAzZjU0
NTYyNTIzYjMxYjRjNzhlMC4uMTM5MjE0NjJjMTRiNjIwYTllNzI3NjU1ZWQwZDI0YzA4NWU0ZTM2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENETVByaXZhdGU6OmlzUGVy
c2lzdGVudFR5cGUoQ0RNU2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1PcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpn
ZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
IGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBM
b2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKQorc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3Ry
aWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKQogewogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQt
Y29uZmlndXJhdGlvbi1hbmQtY29uc2VudAogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBO
b3ZlbWJlciAyMDE2CkBAIC0zNTksNyArMzU5LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAog
ICAgIC8vIE5PVEU6IENvbnRpbnVlZCBpbiBnZXRDb25zZW50U3RhdHVzKCkuCiB9CiAKLU9wdGlv
bmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRD
YXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE1Qcml2YXRlOjpBdWRpb1ZpZGVvVHlwZSB0
eXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0
aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlv
biwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxD
RE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNG
b3JBdWRpb1ZpZGVvVHlwZShDRE1Qcml2YXRlOjpBdWRpb1ZpZGVvVHlwZSB0eXBlLCBjb25zdCBW
ZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJp
Y3Rpb25zJiByZXN0cmljdGlvbnMpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1jYXBhYmlsaXRpZXMtZm9yLWF1ZGlvLXZpZGVv
LXR5cGUKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgpAQCAtMzg3
LDcgKzM4Nyw3IEBAIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2
YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDMuNC4gSWYgY29udGVudCB0eXBlIGlzIGFuIGlu
dmFsaWQgb3IgdW5yZWNvZ25pemVkIE1JTUUgdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRl
cmF0aW9uLgotICAgICAgICBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gY29udGVudFR5cGUg
PSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKHJlcXVlc3RlZENhcGFiaWxpdHkuY29udGVudFR5
cGUsIE1vZGU6OlJmYzIwNDUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBhcnNlZENvbnRlbnRU
eXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2Fw
YWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZjMjA0NSk7CiAgICAgICAgIGlmICghY29udGVu
dFR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDNiOTZlYjc0ODRkY2Ex
Nzk3NjNiNWM2ZjMyYzU4MTU2NGMxNThkZDYuLjRkNWU3ZjczMTQ5MDNmOGYwYWJhOWNlNmJkZGEw
ZmUyZGUzNDEzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBB
bGxvd2VkLAogICAgIH07CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPik+Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9u
KENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2Nh
bFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKIAogICAg
IHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25z
dCA9IDA7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
PSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBXRUJD
T1JFX0VYUE9SVCBDRE1Qcml2YXRlKCk7CkBAIC0xMDAsOCArMTAwLDggQEAgcHJvdGVjdGVkOgog
ICAgIH07CiAKICAgICB2b2lkIGRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9u
cyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYm
KTsKLSAgICBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBnZXRTdXBwb3J0ZWRD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNv
bmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYsIExvY2FsU3RvcmFnZUFjY2Vzcyk7Ci0gICAg
T3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGdldFN1cHBvcnRlZENhcGFiaWxp
dGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVk
aWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBnZXRTdXBwb3J0ZWRD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNv
bmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYsIExvY2FsU3RvcmFnZUFjY2Vzcyk7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gZ2V0U3VwcG9ydGVkQ2Fw
YWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVkaW9WaWRlb1R5cGUsIGNvbnN0IFZlY3RvcjxD
RE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRDYXBhYmlsaXRpZXMsIGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMm
KTsKIAogICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIENETVJlc3RyaWN0
aW9ucyYmKT47CiAgICAgdm9pZCBnZXRDb25zZW50U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmLCBMb2Nh
bFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCA1NTE1
ZWU3MDUyNjFhMDgwZWM4Yzk4Njg2ZDgzZDVhMDNhZWYzYTdlLi5lN2Q2N2JmNDNlMDgxODI5N2U2
MzQ2Nzg2OGI2NjBhYTg4YTgyMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBD
RE1Qcm94eTo6YWJvcnRXYWl0aW5nRm9yS2V5KCkgY29uc3QKICAgICBtX2tleXNDb25kaXRpb24u
bm90aWZ5QWxsKCk7CiB9CiAKLU9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6dHJ5
V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5
RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFJlZjxLZXlI
YW5kbGU+PiBDRE1Qcm94eTo6dHJ5V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtl
eUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CiB7
CiAgICAgc3RhcnRlZFdhaXRpbmdGb3JLZXkoKTsKICAgICAvLyBVbmNvbmRpdGlvbmFsbHkgc2F5
aW5nIHdlIGhhdmUgc3RvcHBlZCB3YWl0aW5nIGZvciBhIGtleSBtZWFucyB0aGF0IGRlY3J5cHRv
cnMgb25seSBnZXQKQEAgLTMyNyw3ICszMjcsNyBAQCBib29sIENETVByb3h5OjprZXlBdmFpbGFi
bGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKICAgICByZXR1cm4ga2V5QXZhaWxhYmxl
VW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6
OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENE
TVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFJl
ZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGNvbnN0IEtleUlE
VHlwZSYga2V5SUQsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVudCkg
Y29uc3QKIHsKICAgICBpZiAoIWtleUF2YWlsYWJsZShrZXlJRCkpIHsKICAgICAgICAgTE9HKEVN
RSwgIkVNRSAtIENETVByb3h5IGtleSBjYWNoZSBkb2VzIG5vdCBjb250YWluIGtleSBJRCAlcyIs
IHZlY3RvclRvSGV4U3RyaW5nKGtleUlEKS5hc2NpaSgpLmRhdGEoKSk7CkBAIC0zMzgsNyArMzM4
LDcgQEAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlI
YW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwKICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlv
bmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAotT3B0aW9uYWw8S2V5SGFuZGxlVmFs
dWVWYXJpYW50PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBl
JiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25z
dAorc3RkOjpvcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRPcldh
aXRGb3JLZXlWYWx1ZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5RGVj
cnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8ga2V5SGFuZGxl
ID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlELCBXVEZNb3ZlKGNsaWVudCkpKQogICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKCgqa2V5SGFuZGxlKS0+dmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRl
eCA0Njk3YjI1MTdhYTU4ZWY0MzJkZmFlZDQ2MDU5MjBkOTI2NTBjN2I4Li5lNjAzYjI1MjZjNTRj
MjI2ODRhNDhmZjMyMTg4ZmQ0MDdjZmI4YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTE2Myw5ICsxNjMsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4ga2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYp
IGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0Owog
ICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURUeXBlJikgY29uc3QgV1RG
X1JFUVVJUkVTX0xPQ0sobV9rZXlzTG9jayk7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+
IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURl
Y3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAgIE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBn
ZXRPcldhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURl
Y3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAgIE9wdGlvbmFsPEtleUhhbmRsZVZhbHVlVmFy
aWFudD4gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Q
cm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEtl
eUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxD
RE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PEtleUhhbmRsZT4+IGdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmLCBXZWFr
UHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlE
VHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYmKSBjb25zdDsKICAgICB2
b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wcGVkV2FpdGlu
Z0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0IENETUluc3RhbmNlUHJveHkqIGluc3RhbmNlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IDgwN2M4ZTU2M2I1ZTg3YjQ4MjRkMDNhYjZkZjYy
MjE0NWI2NzE3ZTEuLjY2YTAxMWVkNGE4YWY4ZDE4OGI2NzhlMjgxOTlkM2VkMTdkNmJjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3Ry
aWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVJlc3RyaWN0aW9ucy5oCkBAIC00NiwxOSArNDYsMTkgQEAgc3RydWN0IENETVJlc3RyaWN0aW9u
cyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9w
dGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q0RNUmVzdHJpY3Rpb25zPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOwog
ICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudFN0
YXRlRGVuaWVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRTdGF0ZURl
bmllZDsKICAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGVEZW5pZWQ7CiAgICAgICAg
IGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6Oklu
dEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Np
b25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxIYXNo
U2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0
cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsK
ICAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghZGVu
aWVkU2Vzc2lvblR5cGVzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBiNmMyYWU5ZjI4YjE4YjlmYTViNGJiZjMzMzk0
NTM2OGVjNjk5NjZlLi4xNWU2MGYyMDVjZWQyYTU2NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxl
Pj4+IHBhcnNlTGljZW5zZUZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3Jt
YXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogewogICAgIC8vIElmIHRoZSAna2V5cycga2V5
IGlzIHByZXNlbnQgaW4gdGhlIHJvb3Qgb2JqZWN0LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVyCiAg
ICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KQEAgLTQx
NCw3ICs0MTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZQogICAgIHJldHVybiByZXNwb25z
ZS5jb3B5KCk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBzZXNzaW9uIElE
IHN0cmluZyBhcyBhbiAzMi1iaXQgaW50ZWdlci4KICAgICBpZiAoIXBhcnNlSW50ZWdlcjx1aW50
MzJfdD4oc2Vzc2lvbklkKSkKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVAogICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSWQpOwogI2VuZGlmCiAgICAgYXV0byBkaXNw
YXRjaENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCAm
Y2FsbGJhY2tdKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSB7CisgICAgICAgIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJmNhbGxiYWNrXShib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAg
ICAgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25XYXNDbG9zZWQsIGNoYW5nZWRLZXlzID0gV1RGTW92
ZShjaGFuZ2VkS2V5cyksIHN1Y2NlZWRlZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVQKIAogICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ2xlYXJLZXkgLSBzZXNzaW9uICVzIGhh
cyAldSBrZXlzIGFmdGVyIHVwZGF0ZSgpIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCksIG1fa2V5
U3RvcmUubnVtS2V5cygpKTsKIAotICAgICAgICBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+IGNo
YW5nZWRLZXlzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdl
ZEtleXM7CiAgICAgICAgIGlmIChrZXlzQ2hhbmdlZCkgewogICAgICAgICAgICAgTE9HKEVNRSwg
IkVNRSAtIENsZWFyS2V5IC0gc2Vzc2lvbiAlcyBoYXMgY2hhbmdlZCBrZXlzIiwgc2Vzc2lvbklk
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcGFyZW50SW5zdGFuY2UoKS5tZXJnZUtleXNG
cm9tKG1fa2V5U3RvcmUpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRp
c3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
ICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBPcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAg
ICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksICZjYWxsYmFja10oS2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFr
VGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdU
Rk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nl
c3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCAxMDc5MDg2MDgwZjkxMmM3ODk3NDUwY2U2MzU1NmI3
YTAzZjI1NDRjLi45YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3NjI1YzhhNjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKIGNs
YXNzIENETUluc3RhbmNlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VQcm94eSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcAppbmRleCA2YWViYjA1OTAzZjYzMzQ5ZmY5MzZhNDYyYzdiN2Y3MjU1ZmIy
ZTJkLi44OGVmMGZiNDkxZTc2Njg0Nzk1NGEzZWE0ZmQxZmZkN2QyNjNlNmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJp
Yy5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPE5vZGU+PiBtX21hcDsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmc+
IHJlYWRTdHJpbmcoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVhZFN0cmluZyhXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHNpemVfdD4gc2l6ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgYm9v
bCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5
ZWREZWNvZGVyR2VuZQogICAgIGF1dG8ga2V5ID0gcmVhZFN0cmluZyhkZWNvZGVyKTsKICAgICBp
ZiAoIWtleSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPFQ+IHZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIEtleWVk
RGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiAKICAgICBib29sIG9rID0gdHJ1ZTsKICAgICB3aGlsZSAob2spIHsKLSAg
ICAgICAgT3B0aW9uYWw8S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZT4gdHlwZTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlPiB0eXBlOwogICAgICAgICBk
ZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVy
aWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICAgICAgb2sg
PSBmYWxzZTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHNpemU7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICAgICAg
ICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAK
aW5kZXggNjZjZDY1NzRlZGUzNzVjNThiMDRkMDgxODM0YmQ5MDg2ZjAwOTE5MC4uYzM0MTY1OTYz
NjkzOGI3ODY4MzZiNzkxYzJhYTRlMzlhYzk5ZTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBAIC00NCw3
ICs0NCw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVk
KEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyCiAgICAgcmV0dXJuIGZ1bGxTcGVlZFJh
dGlvIC0gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRpbykgPD0gMC41ID8gZmxvb3JTcGVlZCA6IGNl
aWxTcGVlZDsKIH0KIAotT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBwcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IHJlYXNvbnMsIE9wdGlvbmFsPEZy
YW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFtZVJh
dGVzTmVhcjYwRlBTKQorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVhc29ucywgc3RkOjpv
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wgcHJl
ZmVyRnJhbWVSYXRlc05lYXI2MEZQUykKIHsKICAgICBpZiAocmVhc29ucy5jb250YWlucyhUaHJv
dHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcgogICAgIHJldHVy
biBmcmFtZXNQZXJTZWNvbmQ7CiB9CiAKLVNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbChP
cHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vj
b25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBG
UFMpCitTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdS
ZWFzb24+IHJlYXNvbnMsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJh
bWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAgaWYg
KHJlYXNvbnMuY29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKICAg
ICAgICAgcmV0dXJuIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0
ZS5oCmluZGV4IGIyM2E5Mzg4NjBlNWEyZTIxYzRiNjZjOWFlMjAxMWM3ZmFjOGMzOGQuLmVhMTg4
ZjI2ODEwMDY1MTM4YTVjY2RhMTlhY2ZkNGMxYzZkYzFjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCkBAIC01Nyw5
ICs1Nyw5IEBAIGNvbnN0ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNvbmQgSGFsZlNwZWVkVGhyb3R0
bGluZ0ZyYW1lc1BlclNlY29uZCA9IDMwOwogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25k
IGZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3BlZWQoRnJhbWVzUGVyU2Vjb25kKTsKIAogLy8g
VGhpcyB3aWxsIHJldHVybiBzdGQ6Om51bGxvcHQgaWYgdGhyb3R0bGluZyByZXN1bHRzIGluIGEg
ZnJlcXVlbmN5IDwgMWZwcy4KLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiwg
T3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHBy
ZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0
bGluZ1JlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVz
UGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpOwogCi1XRUJDT1JFX0VY
UE9SVCBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdS
ZWFzb24+LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQs
IGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUyk7CitXRUJDT1JFX0VYUE9SVCBTZWNvbmRz
IHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+LCBzdGQ6
Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBw
cmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTKTsKIAogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vj
b25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZEZyb21JbnRlcnZhbChTZWNvbmRzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IDc2NDRiNDc1MDBhY2MzMWI5OGM0YTEwOGViZDJiNWNkNzBjZjQ0NjQuLjQwY2ZkZTUzYmY2OGM4
ODVlZGMwYmMyZjJjZTU4M2E4NjIwY2EzMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBCaXRtYXBJ
bWFnZTo6U3RhcnRBbmltYXRpb25TdGF0dXMgQml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmlt
YXRpb24oKQogICAgIC8vIHRocm91Z2ggdGhlIGNhbGxiYWNrIG5ld0ZyYW1lTmF0aXZlSW1hZ2VB
dmFpbGFibGVBdEluZGV4KCkuIE90aGVyd2lzZSwgYWR2YW5jZUFuaW1hdGlvbigpIHdpbGwgYmUg
Y2FsbGVkCiAgICAgLy8gd2hlbiB0aGUgdGltZXIgZmlyZXMgYW5kIG1fY3VycmVudEZyYW1lIHdp
bGwgYmUgYWR2YW5jZWQgdG8gbmV4dEZyYW1lIHNpbmNlIGl0IGlzIG5vdCBiZWluZyBkZWNvZGVk
LgogICAgIGlmIChzaG91bGRVc2VBc3luY0RlY29kaW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSkgewot
ICAgICAgICBpZiAoZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlv
bnNBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdP
cHRpb25zKE9wdGlvbmFsPEludFNpemU+KCkpKSkKKyAgICAgICAgaWYgKGZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChuZXh0RnJhbWUsIG1fY3Vy
cmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhzdGQ6Om9wdGlvbmFsPEludFNp
emU+KCkpKSkKICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAt
IHVybDogJXMgW2NhY2hlZEZyYW1lQ291bnQgPSAlbGQgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVO
Q1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKyttX2Nh
Y2hlZEZyYW1lQ291bnQsIG5leHRGcmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG5leHRGcmFtZSwgbV9j
dXJyZW50U3Vic2FtcGxpbmdMZXZlbCk7CkBAIC01ODYsMjUgKzU4NiwyNSBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBUaGUgYW5pbWF0ZWQgaW1hZ2UgaGFzIG5vdCBiZWVuIGRpc3BsYXll
ZC4gSW4gdGhpcyBjYXNlLCBlaXRoZXIgdGhlIGZpcnN0IGZyYW1lIGhhcyBub3QgYmVlbiBkZWNv
ZGVkIHlldCBvciB0aGUgYW5pbWF0aW9uIGhhcyBub3Qgc3RhcnRlZCB5ZXQuCi0gICAgICAgIGJv
b2wgZnJhbWVJc0NvbXBhdGlibGUgPSBmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGli
bGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5n
TGV2ZWwsIE9wdGlvbmFsPEludFNpemU+KCkpOwotICAgICAgICBib29sIGZyYW1lSXNCZWluZ0Rl
Y29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBPcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBm
cmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdp
dGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZl
bCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQmVpbmdE
ZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKIAogICAgICAg
ICBpZiAoZnJhbWVJc0NvbXBhdGlibGUpCiAgICAgICAgICAgICBpbnRlcm5hbFN0YXJ0QW5pbWF0
aW9uKCk7CiAgICAgICAgIGVsc2UgaWYgKCFmcmFtZUlzQmVpbmdEZWNvZGVkKSB7Ci0gICAgICAg
ICAgICBtX3NvdXJjZS0+cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50
RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIE9wdGlvbmFsPEludFNpemU+KCkpOwor
ICAgICAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1f
Y3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+KCkpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERl
Y29kaW5nU3RhdHVzOjpEZWNvZGluZzsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50U2l6ZT4oKSk7Ci0gICAgYm9vbCBmcmFtZUlz
QmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgT3B0aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgYm9v
bCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdM
ZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICBib29sIGZyYW1lSXNCZWluZ0Rl
Y29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOwogICAgIAogICAg
IGlmIChmcmFtZUlzQ29tcGF0aWJsZSkKICAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tzKCk7
CiAgICAgZWxzZSBpZiAoIWZyYW1lSXNCZWluZ0RlY29kZWQpIHsKLSAgICAgICAgbV9zb3VyY2Ut
PnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJl
bnRTdWJzYW1wbGluZ0xldmVsLCBPcHRpb25hbDxJbnRTaXplPigpKTsKKyAgICAgICAgbV9zb3Vy
Y2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1
cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOwogICAgICAg
ICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5n
OwogICAgIH0KIH0KQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbWFnZUZy
YW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICsrbV9kZWNvZGVDb3Vu
dEZvclRlc3Rpbmc7CiAKICAgICAvLyBDYWxsIG1fZGVjb2RpbmdDYWxsYmFja3Mgb25seSBpZiB0
aGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0aCB0aGUgbmF0aXZlIHNpemUuCi0gICAgaWYg
KGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleCht
X2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50U2l6
ZT4oKSkpCisgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhP
cHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwg
c3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkKICAgICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tz
KCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggYWM5Nzg0Y2UwYjE3Njc1MDRiMzcxMWY3
Njg0ZTAxMDNkOGFlZDVkNy4uMmVlODdkNDE0ZDIxNWMxYTM1ZWM4NTYzN2Q3ZWUwZTBmNjMzNTlk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdXRpKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zb3VyY2UtPnV0aSgpOyB9CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPmZpbGVuYW1lRXh0ZW5zaW9u
KCk7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zb3VyY2UtPmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOyB9Ci0gICAg
T3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nv
dXJjZS0+aG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLT5ob3RTcG90KCk7IH0KIAogICAgIC8v
IEZsb2F0U2l6ZSBkdWUgdG8gb3ZlcnJpZGUuCiAgICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPnNpemUob3JpZW50YXRpb24pOyB9CkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4
KTsgfQogCiAgICAgYm9vbCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiBtX3Nv
dXJjZS0+ZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCk7IH0KLSAgICBib29sIGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBs
aW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29k
aW5nT3B0aW9ucykgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdl
Q29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVj
b2RpbmdPcHRpb25zKTsgfQorICAgIGJvb2wgZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21w
YXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUhhc0RlY29kZWRO
YXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwsIGRlY29kaW5nT3B0aW9ucyk7IH0KIAogICAgIFN1YnNhbXBsaW5nTGV2ZWwgZnJhbWVT
dWJzYW1wbGluZ0xldmVsQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLT5mcmFtZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KGluZGV4KTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCBkYWFiMGEzNTU4ZWRkNWYzZDVlY2E3
MGJkNjk4ZjQ3MTI3Y2ZmYzBmLi4yMjRjMDdkMWFhYzVjZmQ1NjBjODdhMTE4MjdhOTMwZDMxYTQ1
NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTc0LDEz
ICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgQ29sb3IoKSA9IGRlZmF1bHQ7CiAKICAgICBDb2xvcihT
UkdCQTx1aW50OF90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7Ci0gICAgQ29sb3IoT3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+LCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKKyAgICBDb2xvcihz
dGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+KiA9
IG51bGxwdHI+CiAgICAgQ29sb3IoY29uc3QgQ29sb3JUeXBlJiwgT3B0aW9uU2V0PEZsYWdzPiA9
IHsgfSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBm
bG9hdD4+KiA9IG51bGxwdHI+Ci0gICAgQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3JUeXBlPiYs
IE9wdGlvblNldDxGbGFncz4gPSB7IH0pOworICAgIENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Q29sb3JUeXBlPiYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOwogCiAgICAgZXhwbGljaXQgQ29s
b3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSk7CiAgICAgZXhwbGljaXQgQ29sb3IoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKQEAgLTEyOSwxMyArMTI5LDEzIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBsaWdodGVuZWQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBDb2xvciBkYXJrZW5lZCgpIGNvbnN0OwogCi0gICAgQ29sb3IgaW52ZXJ0ZWRD
b2xvcldpdGhBbHBoYShPcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0OworICAgIENvbG9yIGlu
dmVydGVkQ29sb3JXaXRoQWxwaGEoc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0Owog
ICAgIENvbG9yIGludmVydGVkQ29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0OwogCi0g
ICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoT3B0aW9uYWw8ZmxvYXQ+KSBjb25z
dDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzdGQ6Om9wdGlvbmFsPGZs
b2F0PikgY29uc3Q7CiAgICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmxvYXQp
IGNvbnN0OwogCi0gICAgQ29sb3IgY29sb3JXaXRoQWxwaGEoT3B0aW9uYWw8ZmxvYXQ+KSBjb25z
dDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYShzdGQ6Om9wdGlvbmFsPGZsb2F0PikgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0Owog
CiAgICAgQ29sb3Igb3BhcXVlQ29sb3IoKSBjb25zdCB7IHJldHVybiBjb2xvcldpdGhBbHBoYSgx
LjBmKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBDb2xvciBzZW1hbnRpY0Nv
bG9yKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGNvbG9yIGlmIGl0
cyB0eXBlIGlzIFNSR0JBPHVpbnQ4X3Q+LgotICAgIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiB0
cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiB0cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBDb2xvcihjb25zdCBHZGtSR0JBJik7CkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAg
IGZyaWVuZCBib29sIG91dE9mTGluZUNvbXBvbmVudHNzRXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3IoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBPdXRPZkxpbmVDb21wb25lbnRzIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE91dE9mTGluZUNvbXBvbmVudHM+IHsKQEAgLTMyMSw3
ICszMjEsNyBAQCBpbmxpbmUgQ29sb3I6OkNvbG9yKFNSR0JBPHVpbnQ4X3Q+IGNvbG9yLCBPcHRp
b25TZXQ8RmxhZ3M+IGZsYWdzKQogICAgIHNldENvbG9yKGNvbG9yLCB0b0ZsYWdzSW5jbHVkaW5n
UHJpdmF0ZShmbGFncykpOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2lubGluZSBDb2xvcjo6
Q29sb3Ioc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gY29sb3IsIE9wdGlvblNldDxGbGFn
cz4gZmxhZ3MpCiB7CiAgICAgaWYgKGNvbG9yKQogICAgICAgICBzZXRDb2xvcigqY29sb3IsIHRv
RmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7CkBAIC0zMzQsNyArMzM0LDcgQEAgaW5saW5l
IENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4q
PgotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwg
T3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2lubGluZSBDb2xvcjo6Q29sb3IoY29uc3Qgc3RkOjpv
cHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAg
ICBpZiAoY29sb3IpCiAgICAgICAgIHNldE91dE9mTGluZUNvbXBvbmVudHMoT3V0T2ZMaW5lQ29t
cG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25lbnRzKCpjb2xvcikpLCBDb2xvclNwYWNlRm9y
PENvbG9yVHlwZT4sIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7CkBAIC00MDcsNyAr
NDA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgQ29sb3I6OnRv
Q29sb3JUeXBlTG9zc3koKSBjb25zdAogICAgIH0pOwogfQogCi1pbmxpbmUgQ29sb3IgQ29sb3I6
OmludmVydGVkQ29sb3JXaXRoQWxwaGEoT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAoraW5s
aW5lIENvbG9yIENvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhKHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGFscGhhKSBjb25zdAogewogICAgIHJldHVybiBhbHBoYSA/IGludmVydGVkQ29sb3JXaXRo
QWxwaGEoYWxwaGEudmFsdWUoKSkgOiAqdGhpczsKIH0KQEAgLTQxNywxMiArNDE3LDEyIEBAIGlu
bGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoZmxvYXQgYW1vdW50
KSBjb25zdAogICAgIHJldHVybiBjb2xvcldpdGhBbHBoYShhbW91bnQgKiBhbHBoYUFzRmxvYXQo
KSk7CiB9CiAKLWlubGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnko
T3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAoraW5saW5lIENvbG9yIENvbG9yOjpjb2xvcldp
dGhBbHBoYU11bHRpcGxpZWRCeShzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkgY29uc3QKIHsK
ICAgICByZXR1cm4gYWxwaGEgPyBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShhbHBoYS52YWx1
ZSgpKSA6ICp0aGlzOwogfQogCi1pbmxpbmUgQ29sb3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhKE9w
dGlvbmFsPGZsb2F0PiBhbHBoYSkgY29uc3QKK2lubGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRo
QWxwaGEoc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFs
cGhhID8gY29sb3JXaXRoQWxwaGEoYWxwaGEudmFsdWUoKSkgOiAqdGhpczsKIH0KQEAgLTQ2Niw3
ICs0NjYsNyBAQCBpbmxpbmUgUGFja2VkQ29sb3I6OlJHQkEgQ29sb3I6OmFzUGFja2VkSW5saW5l
KCkgY29uc3QKICAgICByZXR1cm4gZGVjb2RlZFBhY2tlZElubGluZUNvbG9yKG1fY29sb3JBbmRG
bGFncyk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ29sb3I6OnRyeUdl
dEFzU1JHQkFCeXRlcygpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5saW5l
KCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgYXNQYWNrZWRJbmxpbmUoKS52YWx1ZTsKIH0KIAotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IENv
bG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGlzVmFsaWQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGVl
NDMzM2M2NGQ1MzcyMmUzMjRhNTgxNGE2NzE3ZjRiMzdkNzM3MGEuLmY3NWExMzkzNGI1MDkxN2Zm
NzE3YmRkN2I2ODQ2Y2Q5NDk0ZTQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIHN0YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNl
KGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNvbnN0IFVDCiB9CiAKIC8vIEZJWE1FOiBDYXBpdGFs
aXphdGlvbiBpcyBsYW5ndWFnZS1kZXBlbmRlbnQgYW5kIGNvbnRleHQtZGVwZW5kZW50IGFuZCBz
aG91bGQgb3BlcmF0ZSBvbiBncmFwaGVtZSBjbHVzdGVycyBpbnN0ZWFkIG9mIGNvZGVwb2ludHMu
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFz
ZUNoYXJhY3RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFs
aXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIpCiB7CiAgICAgaWYgKFVfR0VUX0dDX01BU0soYmFz
ZUNoYXJhY3RlcikgJiBVX0dDX01fTUFTSykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0
YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1zdGF0aWMgYm9vbCBzaG91bGRTeW50aGVzaXplKGJvb2wgZG9udFN5bnRoZXNpemVTbWFs
bENhcHMsIGNvbnN0IEZvbnQqIG5leHRGb250LCBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIsIE9wdGlv
bmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50
Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQorc3RhdGljIGJvb2wgc2hv
dWxkU3ludGhlc2l6ZShib29sIGRvbnRTeW50aGVzaXplU21hbGxDYXBzLCBjb25zdCBGb250KiBu
ZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNh
cGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50Q2FwcywgYm9vbCBlbmdh
Z2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQogewogICAgIGlmIChkb250U3ludGhlc2l6ZVNtYWxs
Q2FwcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IGVjMmRhMDIzOTJm
MGFjOWNiODQ0ZGQ0NGMyZmJiYWRiNzVhNjg1OTUuLmViMmQxNjIzYTNhMWRlMjAzMzZmZjI2ZDI4
ZDc5NWQ2MjNkNjJkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7
CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1
c2hDb250ZXh0KCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQp
IGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdl
QnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7
CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1
c2hDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EZWNvZGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rl
Y29kaW5nT3B0aW9ucy5oCmluZGV4IDg0OTNkM2E1NDY2ZjgxN2E2NDMwYjc3NWY3NDFjYTU1NWY5
ZmU4MWMuLjRkMzNkNjE5NDg4ZTQ3OTViZjJkZDVjYmNhNWM0NjAzYWMyNzA5MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgRGVjb2RpbmdPcHRp
b25zKGNvbnN0IE9wdGlvbmFsPEludFNpemU+JiBzaXplRm9yRHJhd2luZykKKyAgICBEZWNvZGlu
Z09wdGlvbnMoY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZvckRyYXdpbmcpCiAg
ICAgICAgIDogbV9kZWNvZGluZ01vZGVPclNpemUoc2l6ZUZvckRyYXdpbmcpCiAgICAgewogICAg
IH0KQEAgLTEwOCwxMCArMTA4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc1NpemUo
KSAmJiBzaXplRm9yRHJhd2luZygpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEludFNpemU+IHNp
emVGb3JEcmF3aW5nKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNpemVGb3JE
cmF3aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTaXplKCkpOwotICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8T3B0aW9uYWw8SW50U2l6ZT4+KG1fZGVjb2RpbmdNb2RlT3JTaXpl
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+KG1fZGVj
b2RpbmdNb2RlT3JTaXplKTsKICAgICB9CiAKICAgICBzdGF0aWMgaW50IG1heERpbWVuc2lvbihj
b25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTMzLDE1ICsxMzMsMTUgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgaGFzU2l6ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaGFzPE9wdGlvbmFs
PEludFNpemU+PigpOworICAgICAgICByZXR1cm4gaGFzPHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+
KCk7CiAgICAgfQogCiAgICAgLy8gRm91ciBzdGF0ZXMgb2YgdGhlIGRlY29kaW5nOgogICAgIC8v
IC0gU3luY2hyb25vdXM6IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMKICAgICAvLyAtIEFzeW5j
aHJvbm91cyArIGFueVNpemU6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzCi0gICAgLy8gLSBB
c3luY2hyb25vdXMgKyBpbnRyaW5zaWNTaXplOiBhbiBlbXB0eSBPcHRpb25hbDxJbnRTaXplPj4K
LSAgICAvLyAtIEFzeW5jaHJvbm91cyArIHNpemVGb3JEcmF3aW5nOiBhIG5vbmUgZW1wdHkgT3B0
aW9uYWw8SW50U2l6ZT4+Ci0gICAgdXNpbmcgRGVjb2RpbmdNb2RlT3JTaXplID0gVmFyaWFudDxE
ZWNvZGluZ01vZGUsIE9wdGlvbmFsPEludFNpemU+PjsKKyAgICAvLyAtIEFzeW5jaHJvbm91cyAr
IGludHJpbnNpY1NpemU6IGFuIGVtcHR5IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+CisgICAgLy8g
LSBBc3luY2hyb25vdXMgKyBzaXplRm9yRHJhd2luZzogYSBub25lIGVtcHR5IHN0ZDo6b3B0aW9u
YWw8SW50U2l6ZT4+CisgICAgdXNpbmcgRGVjb2RpbmdNb2RlT3JTaXplID0gVmFyaWFudDxEZWNv
ZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+OwogICAgIERlY29kaW5nTW9kZU9yU2l6
ZSBtX2RlY29kaW5nTW9kZU9yU2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKaW5kZXggN2RhMjNm
ZDgyN2RhYmQ1MTI2YTc3MTgwMWQzZTljZDEyMTdiMmM3Ny4uNzZhMTc4NTk2MTBiNGY2YTlhMjU4
M2MzNTlmYjIzNjE0OWZmMDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6CiAgICAgUGxhdGZvcm1Db2xvclNwYWNlIG1fcGxhdGZvcm1Db2xvclNwYWNlOwpA
QCAtNjEsOSArNjEsOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwg
bV9wbGF0Zm9ybUNvbG9yU3BhY2U7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZv
cm1Db2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0
Zm9ybUNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CiAgICAg
aWYgKCFwbGF0Zm9ybUNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmNwcAppbmRleCBjNjc2OTAwMmEyNTFmYTE1Y2JlOTViMzBhMTk2ODgyNGIy
OTFjMGExLi5jNGNjM2MzNDlkMWYyMTAwNmZjZGU0NzIyZjI1NmFjYTgxMmRjMDliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6cmVtb3ZlQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQog
ICAgIHJldHVybiByZW1vdmVkOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6bWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25p
dG9yOjptYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QKIHsKLSAg
ICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1heEZyYW1lc1BlclNlY29uZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4RnJhbWVzUGVyU2Vjb25kOwogICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQogICAgICAgICBtYXhGcmFtZXNQZXJTZWNvbmQgPSBz
dGQ6Om1heDxGcmFtZXNQZXJTZWNvbmQ+KG1heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwg
Y2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5k
ZXggYTIyYjYzMDU2NjY5NmQyZWY3ZjExNjRmZGViNTBlNzY1N2MxZDJkNS4uN2EzMWU3ZWNmNDc3
MjFiOTk3YjIyZjQ2NWM4ZmUzYzg3YTAwMTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTU4LDkg
KzU4LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCYpOwogCiAgICAgdm9pZCBjbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRD
aGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwotICAgIE9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0K
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZy
YW1lc1BlclNlY29uZCgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25k
KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCkBAIC05MiwxNCArOTIsMTQg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQoRnJhbWVzUGVyU2Vjb25kKSB7IH0KIAotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gbWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlTWF4UHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKCk7CiAKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1f
Y2xpZW50czsKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2Ns
aWVudHNUb0JlTm90aWZpZWQgeyBudWxscHRyIH07CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBt
X2Rpc3BsYXlJRCB7IDAgfTsKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1fbWF4Q2xp
ZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBtX21heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKIAogICAgIExvY2sg
bV9sb2NrOwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQuaAppbmRleCAyZTJhODU0OTBkNDM5NDI4M2QwNmEwMGQ0MWY1ODRjNTEyMTU3NTk3
Li40YjBmNWFmYTJlZGE0MTQ1NTY5YTc1ZWRiMGRmZDJlMmZkZjdlODExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJl
RGlzcGxheVJlZnJlc2hJZk5lZWRlZChjb25zdCBEaXNwbGF5VXBkYXRlJik7CiAKIHByaXZhdGU6
Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlEOworICAgIHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlEOwogICAgIEZyYW1lc1BlclNl
Y29uZCBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCB7IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29u
ZCB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlci5jcHAKaW5kZXggNjgzNjc3NmU3NmMwM2NiMjYzOTA3ZGYxZGQ4MmQyYTZk
MmI5ZGM0OC4uN2I5YjlkOWI0NDkzYWY4OTZiYmYxNDY0MzMwNmM4M2IzZDVhOTUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbAogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbihjbGllbnQpOwogfQog
Ci1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6
Om5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZmFjdG9yeSkKK3N0ZDo6b3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpub21pbmFs
RnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGZhY3RvcnkpCiB7CiAgICAgYXV0byogbW9uaXRv
ciA9IGVuc3VyZU1vbml0b3JGb3JEaXNwbGF5SUQoZGlzcGxheUlELCBmYWN0b3J5KTsKICAgICBp
ZiAobW9uaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaAppbmRleCBjZmFlZmEyZWU2
OWI2MzQzOTY2ZmY0N2I2ZTllYWJjYzE1NGIwMzk1Li5mNzZlZTMzMWVmNGEyZTdlODdmZDk2M2Y1
NmU2NGFhZmRmZDI3ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCYpOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRm
b3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmKTsKICAgICAKLSAgICBP
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5
KFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7CisgICAg
c3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JE
aXNwbGF5KFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7
CiAKICAgICB2b2lkIGNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAppbmRleCBhYmJlY2Y2NWE0MmMyNjE2MGFlMjAyOTU4
YmNlODlhNTBiODNiYTk2Li5mODM0MjRlZjAxMDMxZDBiNmIwMmQwNDUyMWU0N2RkMWY2ZTViMjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5VXBk
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0
ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBEaXNwbGF5VXBkYXRlIHsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlbGV2YW50Rm9yVXBkYXRlRnJlcXVlbmN5KEZyYW1lc1BlclNlY29uZCkg
Y29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERp
c3BsYXlVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlzcGxheVVwZGF0ZT4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01OSwxNCArNTksMTQgQEAgdm9pZCBE
aXNwbGF5VXBkYXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERpc3BsYXlVcGRhdGU+IERpc3BsYXlVcGRhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEaXNwbGF5VXBkYXRlPiBE
aXNwbGF5VXBkYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1
bnNpZ25lZD4gdXBkYXRlSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdXBkYXRl
SW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJbmRleDsKICAgICBpZiAoIXVwZGF0ZUluZGV4
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vj
b25kPiB1cGRhdGVzUGVyU2Vjb25kOwogICAgIGRlY29kZXIgPj4gdXBkYXRlc1BlclNlY29uZDsK
ICAgICBpZiAoIXVwZGF0ZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcAppbmRl
eCBmMTdhNTg1OWU4Y2U4OTM4YmYxOGMzMDQ4NzliNzEyZDU3ZWMyZjU4Li5lZWQyNGFkN2UyMTlh
YjU4YTE4ZWNlMWQ3ZDg4NmY0ZjEwYzlhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgRmxvYXRM
aW5lIEZsb2F0TGluZTo6ZXh0ZW5kZWRUb0JvdW5kcyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kcykg
Y29uc3QKICAgICByZXR1cm4geyBsZWZ0LCByaWdodCB9OwogfQogCi1jb25zdCBPcHRpb25hbDxG
bG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVyc2VjdGlvbldpdGgoY29uc3QgRmxvYXRMaW5lJiBv
dGhlckxpbmUpIGNvbnN0Citjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IEZsb2F0TGlu
ZTo6aW50ZXJzZWN0aW9uV2l0aChjb25zdCBGbG9hdExpbmUmIG90aGVyTGluZSkgY29uc3QKIHsK
ICAgICBmbG9hdCBkZW5vbWluYXRvciA9ICgobV9zdGFydC54KCkgLSBtX2VuZC54KCkpICogKG90
aGVyTGluZS5zdGFydCgpLnkoKSAtIG90aGVyTGluZS5lbmQoKS55KCkpKSAtICgobV9zdGFydC55
KCkgLSBtX2VuZC55KCkpICogKG90aGVyTGluZS5zdGFydCgpLngoKSAtIG90aGVyTGluZS5lbmQo
KS54KCkpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0TGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRM
aW5lLmgKaW5kZXggMDY4OTUwYzkzMmVjNWExOTcxNjIyYjVmZWY2NmM3ODA5ZTZkZGNmMS4uNWUx
MzcwM2QxNGIyYjQ1MzcyNTJkYjg4YmZiNGZhMmE1ZDk1NzYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRmxvYXRQb2ludCBwb2ludEF0QWJzb2x1dGVE
aXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAgY29uc3QgRmxvYXRQb2ludCBwb2ludEF0UmVsYXRp
dmVEaXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAgY29uc3QgRmxvYXRMaW5lIGV4dGVuZGVkVG9C
b3VuZHMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgY29uc3QgT3B0aW9uYWw8RmxvYXRQ
b2ludD4gaW50ZXJzZWN0aW9uV2l0aChjb25zdCBGbG9hdExpbmUmKSBjb25zdDsKKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGludGVyc2VjdGlvbldpdGgoY29uc3QgRmxvYXRM
aW5lJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEZsb2F0TGluZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdExpbmU+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgCiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9zdGFydCB7IDAsIDAgfTsKQEAgLTcwLDE0
ICs3MCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEZsb2F0TGluZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2VuZDsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRMaW5lPiBGbG9hdExpbmU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25h
bDxGbG9hdExpbmU+IEZsb2F0TGluZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8RmxvYXRQb2ludD4gc3RhcnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50
PiBzdGFydDsKICAgICBkZWNvZGVyID4+IHN0YXJ0OwogICAgIGlmICghc3RhcnQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7CiAg
ICAgaWYgKCFlbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCmluZGV4IGY1ZGNiNDY2NjAyZDNhMTgz
NTFiYjBlNjI5MDk1ZmNjNDE2MDJkNzkuLjBmNjMwM2QyZDFlNDMwN2E1MzNkOTI0MDc5OWVkOTlh
ZTdiOWQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVh
ZC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb3VudGVyY2xvY2t3
aXNlKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEZsb2F0UXVhZD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3AxOwpAQCAtMTY4LDI0ICsxNjgsMjQgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBGbG9hdFF1YWQ6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9wNDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8RmxvYXRRdWFkPiBGbG9hdFF1YWQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IEZs
b2F0UXVhZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRQ
b2ludD4gcDE7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwMTsKICAgICBkZWNvZGVy
ID4+IHAxOwogICAgIGlmICghcDEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFBvaW50PiBwMjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IHAyOwogICAgIGRlY29kZXIgPj4gcDI7CiAgICAgaWYgKCFwMikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAzOworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRQb2ludD4gcDM7CiAgICAgZGVjb2RlciA+PiBwMzsKICAgICBpZiAoIXAzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4g
cDQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwNDsKICAgICBkZWNvZGVyID4+IHA0
OwogICAgIGlmICghcDQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGU1OTEyYTk5ZDBlNmRkMjBmMWVk
YjMwMGI2Mzk2ZjkxMTkxMzhjYzUuLjE3YTM3YWY4YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNjNDdm
NzkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01
OCwxMiArNTgsMTIgQEAgY29uc3QgZmxvYXQgZW1waGFzaXNNYXJrRm9udFNpemVNdWx0aXBsaWVy
ID0gMC41ZjsKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihGb250KTsK
IAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxp
dHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCitSZWY8Rm9u
dD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3Jp
Z2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmls
aXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwg
dmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgbnVsbHB0cikpOwog
fQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3Jp
ZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENh
Y2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWws
IFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZh
bGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRp
ZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3Jp
Z2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50
aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQpAQCAtNzcsNyArNzcsNyBAQCBS
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAgIHJldHVybiBGb250OjpjcmVhdGUoQ2FjaGVkRm9u
dDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoKmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlv
biwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCB7IH0sIHsgfSksIG9yaWdpbiwgZm9u
dENhY2hlRm9yVmVydGljYWxEYXRhKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0
aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRh
dGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEpCitGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3Jp
Z2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmls
aXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogICAgIDogbV9wbGF0Zm9y
bURhdGEocGxhdGZvcm1EYXRhKQogICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQpAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdl
VG9GaWxsLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMCiAgICAgcmV0dXJuIGhhc0ds
eXBoczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4
KFVDaGFyMzIgY29kZVBvaW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb2RlUG9p
bnRTdXBwb3J0SW5kZXgoVUNoYXIzMiBjb2RlUG9pbnQpCiB7CiAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHJlb3JkZXJpbmcgdGhlc2Ugc28gdGhlIG1vc3QgY29tbW9uIG9uZXMgYXJlIGF0IHRoZSBm
cm9udC4KICAgICAvLyBEb2luZyB0aGlzIGNvdWxkIGNhdXNlIHRoZSBCaXRWZWN0b3IgdG8gZml0
IGluc2lkZSBpbmxpbmUgc3RvcmFnZSBhbmQgdGhlcmVmb3JlCkBAIC0yMDAsNyArMjAwLDcgQEAg
c3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIgY29k
ZVBvaW50KQogICAgICAgICByZXR1cm4gY29kZVBvaW50OwogICAgIGlmIChjb2RlUG9pbnQgPj0g
MHg3RiAmJiBjb2RlUG9pbnQgPCAweEEwKQogICAgICAgICByZXR1cm4gY29kZVBvaW50IC0gMHg3
RiArIDB4MjA7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGNvZGVQb2ludCkgewogICAgIGNhc2Ugc29m
dEh5cGhlbjoKICAgICAgICAgcmVzdWx0ID0gMHg0MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCBlNWZhN2FlNDYxNzc0ZWZhZmJjNjNlMGI5MmE0ODRjZTU4OTQ4
ODBjLi43NzhlZjBmMmEyNzMwMmNlODY0MTIwMWQzZjgyMzI5ZmZjMmI3NTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC05NCw5ICs5NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgTm8KICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJ
bnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0
aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVm
PEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUq
IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpO
bywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9u
RmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIFZpc2liaWxpdHkgPSBW
aXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxs
YmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9u
dFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNo
ZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CkBAIC0xODcsNyAr
MTg3LDcgQEAgcHVibGljOgogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNo
YXIzMikgY29uc3Q7CiAgICAgR2x5cGggZ2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7
CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKLSAgICBib29sIHBs
YXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0
aW9uID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2Rl
UG9pbnQoVUNoYXIzMiwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogCiAgICAgUmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNo
YXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9u
dCwgRm9udENhY2hlJikgY29uc3Q7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlw
aEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJpbmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5n
LCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdW
aWV3IHRleHQsIFRleHREaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBudWxsb3B0
IGlmIG5vbmUgb2YgdGhlIGdseXBocyBhcmUgT1QtU1ZHIGdseXBocy4KLSAgICBPcHRpb25hbDxC
aXRWZWN0b3I+IGZpbmRPVFNWR0dseXBocyhjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5zaWdu
ZWQgY291bnQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBmaW5kT1RTVkdH
bHlwaHMoY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzQW55Q29tcGxleENvbG9yRm9ybWF0R2x5cGhzKGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50
YXRpb25GYWxsYmFjaywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgRm9u
dENhY2hlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRh
JiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2ss
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgRm9udENhY2hlKik7
CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogICAgIHZvaWQgcGxhdGZvcm1HbHlwaEluaXQo
KTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSGFzaE1hcDx1bnNp
Z25lZCwgUmVmUHRyPEdseXBoUGFnZT4+IG1fZ2x5cGhQYWdlczsKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRzTWFw
OwogICAgIG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsK
LSAgICBtdXRhYmxlIEdseXBoTWV0cmljc01hcDxPcHRpb25hbDxQYXRoPj4gbV9nbHlwaFBhdGhN
YXA7CisgICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxQYXRoPj4gbV9n
bHlwaFBhdGhNYXA7CiAgICAgbXV0YWJsZSBCaXRWZWN0b3IgbV9jb2RlUG9pbnRTdXBwb3J0Owog
CiAgICAgbXV0YWJsZSBSZWZQdHI8T3BlblR5cGVNYXRoRGF0YT4gbV9tYXRoRGF0YTsKQEAgLTMw
OSw3ICszMDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4g
bV92ZXJ0aWNhbERhdGE7CiAjZW5kaWYKIAotICAgIG11dGFibGUgT3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewogICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC0zMjcsMTIgKzMyNywxMiBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERlcml2ZWRGb250cz4gbV9k
ZXJpdmVkRm9udERhdGE7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVBldGl0ZUNh
cHM7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlB
bGxQZXRpdGVDYXBzOwotICAgIG11dGFibGUgT3B0aW9uYWw8UEFMOjpPVFNWR1RhYmxlPiBtX290
U1ZHVGFibGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxDb21wbGV4Q29sb3JGb3JtYXRHbHlwaHM+
IG1fZ2x5cGhzV2l0aENvbXBsZXhDb2xvckZvcm1hdDsgLy8gU1ZHIGFuZCBzYml4CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2Fw
czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRl
ZEJ5QWxsU21hbGxDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1f
Z2x5cGhzU3VwcG9ydGVkQnlQZXRpdGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxC
aXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOworICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDxQQUw6Ok9UU1ZHVGFibGU+IG1fb3RTVkdUYWJsZTsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8Q29tcGxleENvbG9yRm9ybWF0R2x5cGhzPiBtX2dseXBoc1dpdGhDb21w
bGV4Q29sb3JGb3JtYXQ7IC8vIFNWRyBhbmQgc2JpeAogI2VuZGlmCiAKICNpZiBQTEFURk9STShX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApp
bmRleCBiNTAyZDlmZWQyYWY0ZTc5ZTI5NmRmZmUyZTg2NTdlNDYwNWQ3ODU2Li42ZGNkNTU2N2Ez
MmU2OWFlNjAyNmY1OWI0YzU2YTQyY2ZlYWYyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBGb250Q2Fj
aGU6OkZvbnRDYWNoZSgpCiAKIEZvbnRDYWNoZTo6fkZvbnRDYWNoZSgpID0gZGVmYXVsdDsKIAot
T3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OmFsdGVybmF0ZUZhbWlseU5hbWUoY29u
c3QgU3RyaW5nJiBmYW1pbHlOYW1lKQorc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRD
YWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1TcGVjaWZpY0FsdGVybmF0ZSA9IHBsYXRmb3JtQWx0ZXJuYXRl
RmFtaWx5TmFtZShmYW1pbHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtU3BlY2lmaWNB
bHRlcm5hdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
CmluZGV4IDdkYjBiMjk3NjJmYmZkMzlhNTA1ZDdjYmJiZjI4ZWE3MzI2YjUxMGIuLjgxMzcyYmE5
YWQ4NTZkNGE4NTE0NWMwOTViMmZhMjIxOWQ2ZGI1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGljOgog
ICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHJld2FybUlu
Zm9ybWF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNv
ZGVyJik7CiAgICAgfTsKICAgICBQcmV3YXJtSW5mb3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZv
cm1hdGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRp
b24mKTsKQEAgLTMwNyw4ICszMDcsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0Zm9ybSAodW5jbGVhciB3aGljaCBmdW5jdGlv
bnMgdGhpcyBjb21tZW50IGFwcGxpZXMgdG8pLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyosIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogICAgIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxBU0NJSUxpdGVyYWw+IGFsdGVybmF0ZUZhbWlseU5hbWUoY29u
c3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEFTQ0lJTGl0ZXJhbD4gcGxhdGZvcm1B
bHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEFTQ0lJTGl0ZXJhbD4gYWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IHBsYXRmb3JtQWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFRpbWVyIG1fcHVyZ2VUaW1lcjsKICAgICAK
QEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uPiBGb250Q2FjaGU6OlBy
ZXdhcm1JbmZvcm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uPiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1h
dGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUHJld2FybUluZm9ybWF0aW9u
IHByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByZXdhcm1JbmZv
cm1hdGlvbi5zZWVuRmFtaWxpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGQxZWZjODVlMjBmMDZjODhhN2QxNWQyYzgwMjVl
ZWU2ZmI4OTRkNDMuLjAzMGM1NzUwMTUxNTZlMjY2OWQxMDU3NmFiZjgwYWM4NjU5MmFiMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
QEAgLTE4MSw3ICsxODEsNyBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0VGV4dChD
b2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGxh
eW91dENvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNpcyk7CiB9CiAKLUZs
b2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitGbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8s
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0
CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkp
OwogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJvbSwg
dG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBGbG9hdFNp
emUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjbwogICAgIHJldHVybiBzdGFydFBvaW50IC0gcG9pbnQ7CiB9CiAKLXZv
aWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25z
dAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0bykgY29uc3QKIHsKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAg
ZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9pbnQp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+
IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVk
PiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikg
Y29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4g
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSk7CiAg
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwpAQCAt
NDMxLDcgKzQzMSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZB
dmFpbGFibGUoZmxvYXQmIHdpZHRoKSBjb25zdAogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi12
b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFs
PHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJl
Y3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwg
dW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAg
dW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlm
IChjb2RlUGF0aChydW4sIGZyb20sIHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKQEAgLTUwMCw3
ICs1MDAsNyBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKCkK
ICAgICByZXR1cm4gc19jb2RlUGF0aDsKIH0KIAotRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRD
YXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmVkPiBm
cm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CitGb250Q2FzY2FkZTo6Q29kZVBhdGgg
Rm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAg
aWYgKHNfY29kZVBhdGggIT0gQ29kZVBhdGg6OkF1dG8pCiAgICAgICAgIHJldHVybiBzX2NvZGVQ
YXRoOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21w
dXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHkKIAogLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gbWF5IG5vdCB3b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJrIHVz
ZXMgYSBjb21wbGV4IHNjcmlwdCwgYnV0IG5vbmUgb2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBoYXNp
cyBtYXJrcyBkbyBzby4KLU9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhh
c2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBjb25zdAorc3RkOjpvcHRp
b25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29u
c3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjEyLDEzICsxMjEyLDEzIEBAIE9wdGlv
bmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25z
dCBBdG9tU3RyaW5nJiBtYXJrCiAgICAgfSBlbHNlCiAgICAgICAgIGNoYXJhY3RlciA9IG1hcmtb
MF07CiAKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IGdseXBoRGF0YShnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoY2hhcmFjdGVyLCBmYWxzZSwgRW1waGFzaXNNYXJrVmFyaWFudCkpOworICAgIHN0ZDo6
b3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJh
Y3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKICAgICByZXR1cm4gZ2x5cGhEYXRh
LnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogc3RkOjpudWxsb3B0OwogfQogCiBpbnQg
Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBj
b25zdAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhh
c2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFy
a0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1h
cmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBp
bnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9tU3RyaW5nJiBtYXJr
KSBjb25zdAogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQoY29uc3QgQXRv
bVN0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlw
aERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7CisgICAgc3RkOjpvcHRpb25h
bDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFy
ayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTI0
Niw3ICsxMjQ2LDcgQEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtEZXNjZW50KGNvbnN0
IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJr
SGVpZ2h0KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5
cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNN
YXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0
VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbVN0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGdseXBoQnVm
ZmVyLmlzRmxhdHRlbmVkKCkpOwotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0
YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEds
eXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsK
ICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU1Niw3ICsx
NTU2LDcgQEAgc3RydWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewogICAgIGZsb2F0IG1heFg7CiB9
OwogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5
LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBvaW50IHAyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBv
aW50IHAyKQogewogICAgIGlmICgocDEueSgpIDwgeSAmJiBwMi55KCkgPiB5KSB8fCAocDEueSgp
ID4geSAmJiBwMi55KCkgPCB5KSkKICAgICAgICAgcmV0dXJuIHAxLngoKSArICh5IC0gcDEueSgp
KSAqIChwMi54KCkgLSBwMS54KCkpIC8gKHAyLnkoKSAtIHAxLnkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA4MDI4YjNhZWE2Njhm
ZDk3MzAwYWEwZjI0MjU3MzMxMTk3OGFhZmIxLi42M2U3NmNmODQwYzRjMDJiZTg2NGE4NjRmMTUx
OTc5MzYzNDE1ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51bGxwdHIpIGNvbnN0Owog
CiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90
UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0g
c3RkOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250
Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2ln
bmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCwg
Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25z
dDsKICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUp
OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25l
ZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYg
bGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBmbG9hdCB3aWR0aChUZXh0TGF5b3V0JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVu
LCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDApOwogCiAgICAgaW50IG9m
ZnNldEZvclBvc2l0aW9uKGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNs
dWRlUGFydGlhbEdseXBocykgY29uc3Q7Ci0gICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQg
ZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Cisg
ICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMo
KSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRW
YXJpYW50Q2Fwczo6U21hbGw7IH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX2Zv
bnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCiAgICAgLy8gQSBzdGQ6Om51bGxvcHQgcmV0
dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9ybWFsIi4KLSAgICBPcHRpb25hbDxG
b250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0
aW9uLml0YWxpYygpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0
YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0YWxpYygpOyB9CiAgICAg
Rm9udFNlbGVjdGlvblZhbHVlIHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0
aW9uLndlaWdodCgpOyB9CiAgICAgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQoKSBjb25z
dCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKTsgfQogCkBAIC0xOTEs
NyArMTkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNp
bmdBdmFpbGFibGUoKTsKIAogICAgIGVudW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0
bywgU2ltcGxlLCBDb21wbGV4LCBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQ
YXRoIGNvZGVQYXRoKGNvbnN0IFRleHRSdW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IHN0
ZDo6bnVsbG9wdCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KyAgICBDb2RlUGF0aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNv
ZGVQYXRoKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7
IH0KICAgICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbik7CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgZmxvYXQgc3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgeyByZXR1cm4gMTQ7IH0KIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxh
eUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25l
ZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0geyB9LCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gPSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9
IHsgfSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
OjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0cpCiAgICAgc3RhdGljIHZvaWQgc2V0Rm9udFNtb290aGluZ0xldmVsKGludCk7CkBA
IC0yMjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JT
aW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFy
dGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxl
VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRF
bXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0
cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgY2FuUmV0dXJuRmFsbGJhY2tGb250c0Zv
ckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBo
c0luQ29tcGxleFRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaAppbmRleCBmZmYzZTYwZTQwNzk3YTdk
MjU3ZTBiNWE5ZjJhZjI2OTdkMTViZmJiLi5iYjJhMGY2ZDgyZjMxZDY3MmE1MTY5ZWVlYzg3NTA5
OGY0OThkNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgZm9udCBwcm9wZXJ0aWVzLgot
ICAgIHN0YXRpYyBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2Vs
ZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICBzdGF0aWMgRm9udFN0eWxlQXhpcyBpbml0aWFsRm9udFN0eWxlQXhpcygpIHsgcmV0dXJuIEZv
bnRTdHlsZUF4aXM6OnNsbnQ7IH0KICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGluaXRp
YWxXZWlnaHQoKSB7IHJldHVybiBub3JtYWxXZWlnaHRWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEZv
bnRTZWxlY3Rpb25WYWx1ZSBpbml0aWFsU3RyZXRjaCgpIHsgcmV0dXJuIG5vcm1hbFN0cmV0Y2hW
YWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUZvbnRzLmgKaW5kZXggNmYwN2JjNGNiNGY0NjYyZTAxMTY3MGQ4ZjE5MTIwNWE2ZjBj
OTkxMS4uYjgyODI4ZDJiNmQxNmRiMTgyNWRjZTZlNjJiMDk0MzI4Y2JjYTZjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaApA
QCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgUGl0Y2ggbV9waXRjaCB7IFVua25vd25Q
aXRjaCB9OwogICAgIGJvb2wgbV9pc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07CiAjaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICBPcHRpb25hbDxSZWY8VGhyZWFkPj4gbV90aHJlYWQ7CisgICAgc3Rk
OjpvcHRpb25hbDxSZWY8VGhyZWFkPj4gbV90aHJlYWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXgg
OTgwNjFlZGIzNGE2NjA4ZDhjNTVmN2Q1NTI2NjFhZGQ2YTk5Y2U5MC4uMTkzOWFmZDYzNWNkMDU1
MmNhM2UwMDdmNGJjNWVmYjU2ZWU4YzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGlj
OgogCiAgICAgZmxvYXQgY29tcHV0ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlZFNp
emU7IH0KICAgICB1bnNpZ25lZCBjb21wdXRlZFBpeGVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHVu
c2lnbmVkKG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0
aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qu
c2xvcGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKCkg
Y29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZTsgfQogICAgIEZvbnRT
ZWxlY3Rpb25WYWx1ZSBzdHJldGNoKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVx
dWVzdC53aWR0aDsgfQogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodDsgfQogICAgIEZvbnRTZWxlY3Rpb25S
ZXF1ZXN0IGZvbnRTZWxlY3Rpb25SZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0
aW9uUmVxdWVzdDsgfQpAQCAtMTAwLDkgKzEwMCw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3Vs
ZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNh
YmxlTGlnYXR1cmVzRm9yU3BhY2luZzsgfQogCiAgICAgdm9pZCBzZXRDb21wdXRlZFNpemUoZmxv
YXQgcykgeyBtX2NvbXB1dGVkU2l6ZSA9IGNsYW1wVG9GbG9hdChzKTsgfQotICAgIHZvaWQgc2V0
SXRhbGljKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKSB7IG1fZm9udFNlbGVj
dGlvblJlcXVlc3Quc2xvcGUgPSBpdGFsaWM7IH0KKyAgICB2b2lkIHNldEl0YWxpYyhzdGQ6Om9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKSB7IG1fZm9udFNlbGVjdGlvblJlcXVl
c3Quc2xvcGUgPSBpdGFsaWM7IH0KICAgICB2b2lkIHNldFN0cmV0Y2goRm9udFNlbGVjdGlvblZh
bHVlIHN0cmV0Y2gpIHsgbV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCA9IHN0cmV0Y2g7IH0K
LSAgICB2b2lkIHNldElzSXRhbGljKGJvb2wgaXNJdGFsaWMpIHsgc2V0SXRhbGljKGlzSXRhbGlj
ID8gT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7IGl0YWxpY1ZhbHVlKCkgfSA6IE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4geyB9KTsgfQorICAgIHZvaWQgc2V0SXNJdGFsaWMoYm9v
bCBpc0l0YWxpYykgeyBzZXRJdGFsaWMoaXNJdGFsaWMgPyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4geyBpdGFsaWNWYWx1ZSgpIH0gOiBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25WYWx1ZT4geyB9KTsgfQogICAgIHZvaWQgc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB3
ZWlnaHQpIHsgbV9mb250U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQgPSB3ZWlnaHQ7IH0KICAgICB2
b2lkIHNldFJlbmRlcmluZ01vZGUoRm9udFJlbmRlcmluZ01vZGUgbW9kZSkgeyBtX3JlbmRlcmlu
Z01vZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSk7IH0KICAgICB2b2lkIHNldFRleHRS
ZW5kZXJpbmdNb2RlKFRleHRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZykgeyBtX3RleHRSZW5kZXJp
bmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVuZGVyaW5nKTsgfQpAQCAtMTM5LDcgKzEzOSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxGb250RGVzY3JpcHRpb24+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0
aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSBtb3ZpbmcgdGhlc2UgaW50byB0aGVpciBvd24gb2JqZWN0IG9uIHRoZSBoZWFwICh0byBz
YXZlIG1lbW9yeSkuCkBAIC0yNTAsMTY1ICsyNTAsMTY1IEBAIHZvaWQgRm9udERlc2NyaXB0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPEZvbnREZXNjcmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0aW9uPiBGb250RGVz
Y3JpcHRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb247Ci0gICAgT3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVh
dHVyZVNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVh
dHVyZVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gZmVhdHVyZVNldHRpbmdzOwogICAgIGlmICgh
ZmVhdHVyZVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udFZhcmlhdGlvblNldHRpbmdzPiB2YXJpYXRpb25TZXR0aW5nczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRWYXJpYXRpb25TZXR0aW5ncz4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAg
ZGVjb2RlciA+PiB2YXJpYXRpb25TZXR0aW5nczsKICAgICBpZiAoIXZhcmlhdGlvblNldHRpbmdz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmlu
Zz4gbG9jYWxlOworICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbG9jYWxlOwogICAgIGRl
Y29kZXIgPj4gbG9jYWxlOwogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPj4gaXRh
bGljOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
PiBpdGFsaWM7CiAgICAgZGVjb2RlciA+PiBpdGFsaWM7CiAgICAgaWYgKCFpdGFsaWMpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFs
dWU+IHN0cmV0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IHN0cmV0
Y2g7CiAgICAgZGVjb2RlciA+PiBzdHJldGNoOwogICAgIGlmICghc3RyZXRjaCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4g
d2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7CiAg
ICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gY29tcHV0ZWRTaXplOworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNvbXB1dGVkU2l6ZTsKICAgICBkZWNvZGVyID4+IGNvbXB1dGVk
U2l6ZTsKICAgICBpZiAoIWNvbXB1dGVkU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPEZvbnRPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CisgICAgc3Rk
OjpvcHRpb25hbDxGb250T3JpZW50YXRpb24+IG9yaWVudGF0aW9uOwogICAgIGRlY29kZXIgPj4g
b3JpZW50YXRpb247CiAgICAgaWYgKCFvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE5vbkNKS0dseXBoT3JpZW50YXRpb24+IG5vbkNKS0ds
eXBoT3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxOb25DSktHbHlwaE9yaWVudGF0aW9u
PiBub25DSktHbHlwaE9yaWVudGF0aW9uOwogICAgIGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhPcmll
bnRhdGlvbjsKICAgICBpZiAoIW5vbkNKS0dseXBoT3JpZW50YXRpb24pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3aWR0aFZh
cmlhbnQ7CisgICAgc3RkOjpvcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3aWR0aFZhcmlhbnQ7
CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7CiAgICAgaWYgKCF3aWR0aFZhcmlhbnQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250UmVuZGVyaW5n
TW9kZT4gcmVuZGVyaW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRSZW5kZXJpbmdNb2Rl
PiByZW5kZXJpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nTW9kZTsKICAgICBpZiAo
IXJlbmRlcmluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7CisgICAgc3RkOjpvcHRp
b25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgZGVjb2RlciA+
PiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXRleHRSZW5kZXJpbmdNb2RlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFN5bnRoZXNpcz4gZm9u
dFN5bnRoZXNpczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTeW50aGVzaXM+IGZvbnRTeW50aGVz
aXM7CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhlc2lzOwogICAgIGlmICghZm9udFN5bnRoZXNp
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJp
YW50TGlnYXR1cmVzPiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRDb21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2Rl
ciA+PiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOwogICAgIGlmICghdmFyaWFudENvbW1vbkxpZ2F0
dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0
dXJlczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAg
IGlmICghdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gdmFyaWFudEhp
c3RvcmljYWxMaWdhdHVyZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJl
cz4gdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50SGlz
dG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRM
aWdhdHVyZXM+IHZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlczsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAg
ZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgaWYgKCF2YXJpYW50
Q29udGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CisgICAgc3Rk
OjpvcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CiAgICAgZGVj
b2RlciA+PiB2YXJpYW50UG9zaXRpb247CiAgICAgaWYgKCF2YXJpYW50UG9zaXRpb24pCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudENhcHM+
IHZhcmlhbnRDYXBzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRDYXBzPiB2YXJpYW50
Q2FwczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRDYXBzOwogICAgIGlmICghdmFyaWFudENhcHMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFu
dE51bWVyaWNGaWd1cmU+IHZhcmlhbnROdW1lcmljRmlndXJlOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnROdW1lcmljRmlndXJlPiB2YXJpYW50TnVtZXJpY0ZpZ3VyZTsKICAgICBkZWNv
ZGVyID4+IHZhcmlhbnROdW1lcmljRmlndXJlOwogICAgIGlmICghdmFyaWFudE51bWVyaWNGaWd1
cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFy
aWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CisgICAgc3RkOjpvcHRp
b25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CiAg
ICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CiAgICAgaWYgKCF2YXJpYW50TnVt
ZXJpY1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gdmFyaWFudE51bWVyaWNGcmFjdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiB2YXJpYW50TnVtZXJp
Y0ZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNGcmFjdGlvbjsKICAgICBp
ZiAoIXZhcmlhbnROdW1lcmljRnJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiB2YXJpYW50TnVtZXJp
Y09yZGluYWw7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiB2
YXJpYW50TnVtZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY09yZGlu
YWw7CiAgICAgaWYgKCF2YXJpYW50TnVtZXJpY09yZGluYWwpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybz4g
dmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY1NsYXNoZWRaZXJvPiB2YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29k
ZXIgPj4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIXZhcmlhbnROdW1lcmlj
U2xhc2hlZFplcm8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxGb250VmFyaWFudEFsdGVybmF0ZXM+IHZhcmlhbnRBbHRlcm5hdGVzOworICAgIHN0ZDo6b3B0
aW9uYWw8Rm9udFZhcmlhbnRBbHRlcm5hdGVzPiB2YXJpYW50QWx0ZXJuYXRlczsKICAgICBkZWNv
ZGVyID4+IHZhcmlhbnRBbHRlcm5hdGVzOwogICAgIGlmICghdmFyaWFudEFsdGVybmF0ZXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ+IHZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50PiB2YXJpYW50RWFzdEFzaWFuVmFyaWFudDsK
ICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OwogICAgIGlmICghdmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7
CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB2YXJpYW50RWFz
dEFzaWFuV2lkdGg7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7CiAgICAg
aWYgKCF2YXJpYW50RWFzdEFzaWFuV2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHZhcmlhbnRFYXN0QXNp
YW5SdWJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiB2YXJp
YW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5Owog
ICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1YnkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250T3B0aWNhbFNpemluZz4gb3B0aWNhbFNpemluZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRPcHRpY2FsU2l6aW5nPiBvcHRpY2FsU2l6aW5nOwogICAgIGRl
Y29kZXIgPj4gb3B0aWNhbFNpemluZzsKICAgICBpZiAoIW9wdGljYWxTaXppbmcpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U3R5bGVBeGlzPiBmb250
U3R5bGVBeGlzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxlQXhp
czsKICAgICBkZWNvZGVyID4+IGZvbnRTdHlsZUF4aXM7CiAgICAgaWYgKCFmb250U3R5bGVBeGlz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzOworICAgIHN0ZDo6
b3B0aW9uYWw8QWxsb3dVc2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzOwogICAgIGRlY29kZXIgPj4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAg
ICAgaWYgKCFzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZERpc2FibGVMaWdhdHVyZXNG
b3JTcGFjaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkRGlzYWJsZUxpZ2F0dXJl
c0ZvclNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBzaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3Bh
Y2luZzsKICAgICBpZiAoIXNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDc3YWRjMTM3ODc2N2I0Y2Y3YWU1M2Y1
OTk5MTdkMDMyNWI4ZDA1ZTYuLjBkMTE3ZDYwNmE1YzVlMjRjYTQ5ZDA3MTE4YTEwNWZmM2YzMDRk
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9Owog
Ci0gICAgY29uc3QgT3B0aW9uYWw8Q3JlYXRpb25EYXRhPiYgY3JlYXRpb25EYXRhKCkgY29uc3QK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENyZWF0aW9uRGF0YT4mIGNyZWF0aW9uRGF0YSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9jcmVhdGlvbkRhdGE7CiAgICAgfQpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udFdpZHRoVmFyaWFudCBtX3dpZHRoVmFyaWFu
dCB7IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCB9OwogICAgIFRleHRSZW5kZXJpbmdN
b2RlIG1fdGV4dFJlbmRlcmluZ01vZGUgeyBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5k
ZXJpbmcgfTsKIAotICAgIE9wdGlvbmFsPENyZWF0aW9uRGF0YT4gbV9jcmVhdGlvbkRhdGE7Cisg
ICAgc3RkOjpvcHRpb25hbDxDcmVhdGlvbkRhdGE+IG1fY3JlYXRpb25EYXRhOwogCiAgICAgYm9v
bCBtX3N5bnRoZXRpY0JvbGQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zeW50aGV0aWNPYmxpcXVl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKaW5kZXggMzU3YjQwMjNlZTA4ZGEwY2Rl
ODk2ODJkOGRjYzc3OGUxYzhlZmUwMy4uMzNkYzQyOWNhOTYyNmE2Y2YyMzNhNjI2NmZmYzE2OTNj
MzFjYWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Gb250U2VsZWN0aW9uQWxnb3JpdGhtOjpGb250U2VsZWN0aW9u
QWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxDYXBh
YmlsaXRpZXM+JiBjYXBhYmlsaXRpZXMsIE9wdGlvbmFsPENhcGFiaWxpdGllcz4gYm91bmRzKQor
Rm9udFNlbGVjdGlvbkFsZ29yaXRobTo6Rm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0
aW9uUmVxdWVzdCByZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYgY2FwYWJpbGl0
aWVzLCBzdGQ6Om9wdGlvbmFsPENhcGFiaWxpdGllcz4gYm91bmRzKQogICAgIDogbV9yZXF1ZXN0
KHJlcXVlc3QpCiAgICAgLCBtX2NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpCiB7CkBAIC0xMzks
NyArMTM5LDcgQEAgYXV0byBGb250U2VsZWN0aW9uQWxnb3JpdGhtOjp3ZWlnaHREaXN0YW5jZShD
YXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBjb25zdCAtPgogCiBGb250U2VsZWN0aW9uVmFsdWUg
Rm9udFNlbGVjdGlvbkFsZ29yaXRobTo6YmVzdFZhbHVlKGNvbnN0IGJvb2wgZWxpbWluYXRlZFtd
LCBEaXN0YW5jZUZ1bmN0aW9uIGNvbXB1dGVEaXN0YW5jZSkgY29uc3QKIHsKLSAgICBPcHRpb25h
bDxEaXN0YW5jZVJlc3VsdD4gc21hbGxlc3REaXN0YW5jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERp
c3RhbmNlUmVzdWx0PiBzbWFsbGVzdERpc3RhbmNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gbV9jYXBhYmlsaXRpZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlm
IChlbGltaW5hdGVkW2ldKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgK
aW5kZXggYmM4ZDdkOWUzOWVjZTMyMjRlYzg4ZjIzODgwOWY5ZmJjNDc1ZTE5OC4uMmJkNzYzNDkz
YzgzNGU5OTE2MGU2ZDkwNDUxZGQyMzA5NzczNjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaApAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFNl
bGVjdGlvblZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBl
bnVtIGNsYXNzIFJhd1RhZyB7IFJhd1RhZyB9OwpAQCAtODcsOSArODcsOSBAQCB2b2lkIEZvbnRT
ZWxlY3Rpb25WYWx1ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEZvbnRTZWxl
Y3Rpb25WYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4gRm9udFNlbGVjdGlvblZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBiYWNr
aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlOjpCYWNraW5nVHlwZT4g
YmFja2luZzsKICAgICBkZWNvZGVyID4+IGJhY2tpbmc7CiAgICAgaWYgKCFiYWNraW5nKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk2LDcgKzE5Niw3IEBAIGNvbnN0ZXhwciBG
b250U2VsZWN0aW9uVmFsdWUgaXRhbGljVGhyZXNob2xkKCkKICAgICByZXR1cm4gRm9udFNlbGVj
dGlvblZhbHVlIHsgMjAgfTsKIH0KIAotY29uc3RleHByIGJvb2wgaXNJdGFsaWMoT3B0aW9uYWw8
Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0KQorY29uc3RleHByIGJvb2wgaXNJdGFsaWMo
c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRXZWlnaHQpCiB7CiAgICAgcmV0
dXJuIGZvbnRXZWlnaHQgJiYgZm9udFdlaWdodC52YWx1ZSgpID49IGl0YWxpY1RocmVzaG9sZCgp
OwogfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHN0cnVjdCBGb250U2VsZWN0aW9uUmFuZ2UgewogICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGRlY29k
ZShEZWNvZGVyJik7CiAKICAgICBWYWx1ZSBtaW5pbXVtIHsgMSB9OwogICAgIFZhbHVlIG1heGlt
dW0geyAwIH07CkBAIC0zNTcsMTQgKzM1NywxNCBAQCB2b2lkIEZvbnRTZWxlY3Rpb25SYW5nZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IEZvbnRTZWxlY3Rpb25SYW5nZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4g
Rm9udFNlbGVjdGlvblJhbmdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVlPiBtaW5pbXVtOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFNlbGVjdGlvblJhbmdlOjpWYWx1ZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+IG1p
bmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlOjpWYWx1ZT4gbWF4aW11bTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZTo6VmFsdWU+IG1heGltdW07CiAgICAgZGVj
b2RlciA+PiBtYXhpbXVtOwogICAgIGlmICghbWF4aW11bSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTM4OSw5ICszODksOSBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblJlcXVlc3Qg
ewogICAgIC8vICJmb250U3R5bGVBeGlzIiBvbiB0aGUgRm9udERlc2NyaXB0aW9uLiBXZSBzaG91
bGQgY29tZSB1cCB3aXRoIGEgdHJpLXN0YXRlIG1lbWJlcgogICAgIC8vIHNvIHRoYXQgaXQncyBh
IGxvdCBjbGVhcmVyIHdoZXRoZXIgd2UncmUgZGVhbGluZyB3aXRoIGEgIm5vcm1hbCIsICJpdGFs
aWMiIG9yIGV4cGxpY2l0CiAgICAgLy8gIm9ibGlxdWUiIGZvbnQgc3R5bGUuIFNlZSB3ZWJraXQu
b3JnL2IvMTg3Nzc0LgotICAgIE9wdGlvbmFsPFZhbHVlPiBzbG9wZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZhbHVlPiBzbG9wZTsKIAotICAgIHN0ZDo6dHVwbGU8VmFsdWUsIFZhbHVlLCBPcHRpb25h
bDxWYWx1ZT4+IHRpZWQoKSBjb25zdAorICAgIHN0ZDo6dHVwbGU8VmFsdWUsIFZhbHVlLCBzdGQ6
Om9wdGlvbmFsPFZhbHVlPj4gdGllZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gV1RG
Ojp0aWUod2VpZ2h0LCB3aWR0aCwgc2xvcGUpOwogICAgIH0KQEAgLTQwMyw3ICs0MDMsNyBAQCBp
bmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRm9udFNl
bGVjdGlvblZhbHVlJiBmb250U2VsZQogICAgIHJldHVybiB0czsKIH0KIAotaW5saW5lIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4mIG9wdGlvbmFsRm9udFNlbGVjdGlvblZhbHVlKQoraW5saW5lIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFNl
bGVjdGlvblZhbHVlPiYgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUpCiB7CiAgICAgdHMgPDwg
b3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7
CiAgICAgcmV0dXJuIHRzOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYSwgY29uc3QgRm9udFNlbGVj
dGlvCiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAgdXNp
bmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllczsKICAgICB1c2luZyBS
YW5nZSA9IEZvbnRTZWxlY3Rpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25hbFJhbmdlID0gT3B0
aW9uYWw8UmFuZ2U+OworICAgIHVzaW5nIE9wdGlvbmFsUmFuZ2UgPSBzdGQ6Om9wdGlvbmFsPFJh
bmdlPjsKIAogICAgIGNvbnN0ZXhwciBDYXBhYmlsaXRpZXMgY29tcHV0ZUZvbnRTZWxlY3Rpb25D
YXBhYmlsaXRpZXMoKSBjb25zdAogICAgIHsKQEAgLTUwMSw3ICs1MDEsNyBAQCBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7CiAg
ICAgT3B0aW9uYWxSYW5nZSB3aWR0aDsKQEAgLTUxNywxOSArNTE3LDE5IEBAIHZvaWQgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllcz4gRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4g
d2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4gd2VpZ2h0OwogICAgIGRl
Y29kZXIgPj4gd2VpZ2h0OwogICAgIGlmICghd2VpZ2h0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4gd2lkdGg7CisgICAgc3RkOjpv
cHRpb25hbDxPcHRpb25hbFJhbmdlPiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAg
IGlmICghd2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbFJhbmdlPiBzbG9wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsUmFuZ2U+
IHNsb3BlOwogICAgIGRlY29kZXIgPj4gc2xvcGU7CiAgICAgaWYgKCFzbG9wZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU1Miw3ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllczsKIAogICAgIEZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0oKSA9IGRlbGV0ZTsKLSAgICBGb250U2VsZWN0aW9uQWxnb3JpdGht
KEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIE9wdGlv
bmFsPENhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzQm91bmRzID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBWZWN0
b3I8Q2FwYWJpbGl0aWVzPiYsIHN0ZDo6b3B0aW9uYWw8Q2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRp
ZXNCb3VuZHMgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgc3RydWN0IERpc3RhbmNlUmVzdWx0IHsK
ICAgICAgICAgRm9udFNlbGVjdGlvblZhbHVlIGRpc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAppbmRleCA1Y2Nj
ZmZiYjg1OGQ5MjIyMmFlMzZiN2E1MWNhNjk0MGIyMWMwNGZhLi40MWJkNzVhNmUwZjVmMTNmNjNj
YjUyYzlkMjk4ZDdkODIwMzViYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGb250VGFnZ2VkU2V0dGlu
ZzxUPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKICAgICBGb250VGFnIG1fdGFnOwpAQCAtMTE2LDI5ICsxMTYsMjkgQEAgdm9p
ZCBGb250VGFnZ2VkU2V0dGluZzxUPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dlZFNldHRpbmc8VD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRh
Z2dlZFNldHRpbmc8VD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ4X3Q+IGNoYXIwOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gY2hhcjA7CiAgICAg
ZGVjb2RlciA+PiBjaGFyMDsKICAgICBpZiAoIWNoYXIwKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDhfdD4gY2hhcjE7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50OF90PiBjaGFyMTsKICAgICBkZWNvZGVyID4+IGNoYXIxOwogICAgIGlmICghY2hhcjEp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBj
aGFyMjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIyOwogICAgIGRlY29kZXIgPj4g
Y2hhcjI7CiAgICAgaWYgKCFjaGFyMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIzOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4g
Y2hhcjM7CiAgICAgZGVjb2RlciA+PiBjaGFyMzsKICAgICBpZiAoIWNoYXIzKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAgc3RkOjpv
cHRpb25hbDxUPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFRhZ2dlZFNldHRpbmdzPFQ+PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZv
bnRUYWdnZWRTZXR0aW5nczxUPj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+IG1fbGlzdDsKQEAgLTIwMyw5ICsyMDMsOSBAQCB2
b2lkIEZvbnRUYWdnZWRTZXR0aW5nczxUPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxGb250VGFnZ2VkU2V0dGluZ3M8VD4+IEZvbnRUYWdnZWRTZXR0aW5nczxUPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nczxUPj4g
Rm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+PiBsaXN0OworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEZvbnRUYWdnZWRTZXR0aW5nPFQ+Pj4gbGlzdDsKICAgICBkZWNvZGVyID4+
IGxpc3Q7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAKaW5kZXggY2NkM2U4NTdh
NWNhOWNkOGRhMDk2N2MxYWIwOTM0YWZjMzc0YzVlMC4uZDlhODk2MmIwYmIwZTlhN2I4NmM4NTcz
MzA4Yjg1ZDk3MmI1ZDFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm91ckNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3VyQ0MuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0
aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1
ZSkKK3N0ZDo6b3B0aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKIHsKICAgICBhdXRvIGFzY2lpVmFsdWUgPSBzdHJpbmdWYWx1ZS5hc2Np
aSgpOwogICAgIGlmIChhc2NpaVZhbHVlLmxlbmd0aCgpICE9IDQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCmluZGV4IDFjYTAwNTBmZDYxMDJiOTgyZWNkNjIyMDg3
MTkyNjFhMTdhZmQyNDEuLjJhNjRjNGJjMTU0NjNjZWMxNGIzYzJmMzlmMjU0ZmRkMDUzYmYxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCkBAIC00MSw3ICs0
MSw3IEBAIHN0cnVjdCBGb3VyQ0MgewogICAgIH0KIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Rm91ckNDPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlID09IG90aGVyLnZh
bHVlOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAKaW5kZXggYzFkYjgxMjc3
YTk0MDlkMTIxYTU3ZGM4OTUxNjc2YjllM2IxYzg4NC4uNGE3NWIxMTMxMjM1NDU3NTMwYjYwNzBi
ZjY5MTI3NGNmYTJjMmUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRp
YyBmbG9hdCBhbmdsZUJldHdlZW5WZWN0b3JzKGNvbnN0IEZsb2F0U2l6ZSYgdSwgY29uc3QgRmxv
YXRTaXplJiB2KQogICAgIHJldHVybiBtYWduaXR1ZGVzID8gYWNvcyhjbGFtcFRvPGZsb2F0Pihk
b3RQcm9kdWN0KHUsIHYpIC8gbWFnbml0dWRlcywgLTEsIDEpKSA6IDA7CiB9CiAKLVJvdGF0ZWRS
ZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBG
bG9hdFF1YWQmIHF1YWQsIE9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFkaWFucykKK1Jv
dGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihj
b25zdCBGbG9hdFF1YWQmIHF1YWQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5S
YWRpYW5zKQogewogICAgIGNvbnN0ZXhwciBhdXRvIHR3b1BpRmxvYXQgPSAyICogcGlGbG9hdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRp
bGl0aWVzLmgKaW5kZXggODBkZTEwZWZhZGI5OWM2OGQzZTA1YmI2MTEyMjk3OTk4NDY1ZmRmYy4u
M2I3MDkxYTg1NDQyYTBmZDNhZDJkN2Q4MmIzZmI1NDJmMGQxZjNiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCkBAIC02
OCw2ICs2OCw2IEBAIHN0cnVjdCBSb3RhdGVkUmVjdCB7CiAgICAgZmxvYXQgYW5nbGVJblJhZGlh
bnM7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBSb3RhdGVkUmVjdCByb3RhdGVkQm91bmRpbmdSZWN0
V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFkJiwgT3B0aW9uYWw8Zmxv
YXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3RkOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JU
IFJvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlv
bihjb25zdCBGbG9hdFF1YWQmLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFk
aWFucyA9IHN0ZDo6bnVsbG9wdCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCmluZGV4IDk0OTc1MGRiMGU0MDVlYWFjZjRiNWRkYzdkNzcy
MWFjNzFmOGE5ZDIuLmFmZDhiYTI0ZmMxY2RlN2NkYTk2YzcyZTVkNmIzOTBhY2JmNTYyM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2VBdCh1
bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07IH0KICAgICBH
bHlwaEJ1ZmZlck9yaWdpbiBvcmlnaW5BdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW5zW2luZGV4XTsgfQogICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHVuY2hlY2tl
ZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX29mZnNldHNJ
blN0cmluZ1tpbmRleF07IH0KLSAgICBPcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4g
Y2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5n
dGgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hl
Y2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgp
IGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNl
dEF0KGluZGV4KTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHN0ZDo6bWFrZV91bnNpZ25lZF90
PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pj4ocmVzdWx0KSA+PSBzdHJpbmdMZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmlu
ZGV4IGE0NGY2ODRhYzBlMjA3YTFlZTRkOTBmYjU2ZjIwMjFlMGE3NDUxZTYuLjQ0M2M2M2FiZDE3
MGM5MDdhYjczYjg1NjMyM2JmMmY5NDYxNjU3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1
bmtub3duTWV0cmljcygpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBjR2x5cGhTaXplVW5r
bm93biwgY0dseXBoU2l6ZVVua25vd24pOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBPcHRpb25h
bDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0aW9uYWw8UGF0aD4+Ojp1bmtub3duTWV0cmljcygp
Cit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxz
dGQ6Om9wdGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1ldHJpY3MoKQogewogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBjOGFjMzg2YjgxMTk1NmE3NzZmZWRkZmFlZWYyMjgy
Yzk0YWM4NjJkLi45NGUxYTBmNzliNGZlM2ZhMTUyMWU5ZWQ1MjI3OWQ0YmUwMDc4MmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKQogICAgIC0tbV90cmFuc3BhcmVuY3lMYXllckNvdW50OwogfQogCi1GbG9h
dFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJv
bSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorRmxvYXRTaXplIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRvKQogewogICAgIC8vIERpc3BsYXkgbGlzdCByZWNvcmRpbmcgZm9yIHRleHQgY29udGVudCBp
cyBkb25lIGF0IGdseXBocyBsZXZlbC4gU2VlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocy4K
ICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhpcywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwpA
QCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBoCiAgICAgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
cG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVu
c2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGZvbnQuZHJh
d0VtcGhhc2lzTWFya3MoKnRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggZmUxNWVhYjA0YjM1ZmVmOGI3NGVlMWY3M2VlOGY4MTlkOTkwOWI3ZC4uYzA0YjAxZTdl
OGZlODg5NjU1MzhmNWJlYzFiMTFlOWU1MWMyMjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEzNyw3ICsxMzcsNyBA
QCBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgewogICAgIGJvb2wgc2hvdWxkVXNlRGFy
a0FwcGVhcmFuY2UgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CkBAIC0xNDgsMTQgKzE0OCwxNCBAQCB2b2lkIERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERvY3Vt
ZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TW9kZT4gbW9kZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1vZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlmICghbW9kZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVz
ZURhcmtBcHBlYXJhbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFya0Fw
cGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBp
ZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNDY4LDkgKzQ2OCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRleHQKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20g
PSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50
JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpu
dWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250
Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFp
bnRJZkZvbnROb3RSZWFkeSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0
ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7
CkBAIC02OTQsNyArNjk0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eVRvVXNl
KTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIE9wdGlvbmFsPEludGVycG9sYXRpb25R
dWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eSkKKyAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIHN0ZDo6
b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5KQogICAg
ICAgICA6IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihncmFwaGljc0NvbnRleHQsIGlu
dGVycG9sYXRpb25RdWFsaXR5ID8gaW50ZXJwb2xhdGlvblF1YWxpdHkudmFsdWUoKSA6IGdyYXBo
aWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpCiAgICAgewogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDU0YjRjMDYyMjI3ZTJmNzZhMGE5ZGNhMjhmNTE2YjJlODA4NDZiMjEuLmZjMzI5
Mjk3NjRmODU1MDlkNzEwY2NlZjQyZGI1MWRiNDNlY2YwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTI5Miw3
ICsxMjkyLDcgQEAgcHVibGljOgogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3RyYWN0aW9ucyB0
aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KICAgICAvLyB0aGUgY29udGV4
dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkLiBUaGUg
bGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggZjhlMGI4ZTQ0MTg4ODA3
OGQwZGUxNzkzNmFlYjk2OTNlYjgyMjFkMy4uN2M3ZDRmY2M5ZWQyMjMwZDg3MDk1ZTY3NGU1OWMy
ZDE3NTg1ZDA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaApAQCAtNjM0LDggKzYzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1hdGlv
bkV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRXh0ZW50OyB9Ci0gICAgdm9pZCBz
ZXRBbmltYXRpb25FeHRlbnQoT3B0aW9uYWw8RmxvYXRSZWN0PiBhbmltYXRpb25FeHRlbnQpIHsg
bV9hbmltYXRpb25FeHRlbnQgPSBhbmltYXRpb25FeHRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1hdGlvbkV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5p
bWF0aW9uRXh0ZW50OyB9CisgICAgdm9pZCBzZXRBbmltYXRpb25FeHRlbnQoc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGFuaW1hdGlvbkV4dGVudCkgeyBtX2FuaW1hdGlvbkV4dGVudCA9IGFuaW1h
dGlvbkV4dGVudDsgfQogCiAgICAgc3RhdGljIHZvaWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYs
IGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYpPiYpOwogCkBAIC02OTYs
NyArNjk2LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKIAogICAg
IC8vIElmIHNldCwgb3ZlcnJpZGVzIG1fcG9zaXRpb24uIE9ubHkgdXNlZCBmb3IgY292ZXJhZ2Ug
Y29tcHV0YXRpb24uCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9u
OwogCiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQgeyAwLjVmLCAwLjVmLCAwIH07CiAg
ICAgRmxvYXRTaXplIG1fc2l6ZTsKQEAgLTc2OSw3ICs3NjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
RmxvYXRTaXplIG1fY29udGVudHNUaWxlUGhhc2U7CiAgICAgRmxvYXRTaXplIG1fY29udGVudHNU
aWxlU2l6ZTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IG1fYmFja2Ryb3BGaWx0ZXJzUmVjdDsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fYW5pbWF0aW9uRXh0ZW50OworICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBtX2FuaW1hdGlvbkV4dGVudDsKIAogICAgIEV2ZW50UmVnaW9uIG1fZXZl
bnRSZWdpb247CiAjaWYgVVNFKENBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCBlNTgwNTJhM2RjY2VkMDQyNTI3ZmY0ZTcx
NTgwN2I1M2NiYzllYjVhLi42M2NjODhjMmU2MjA4MjcxMGE4MWViNDFjZmJjNWI1NDNiN2FkNWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBj
b2RlY1N0cmluZykKK3N0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogewogICAgIC8vIFRoZSBmb3JtYXQg
b2YgdGhlICdoZXZjJyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIElTTy9JRUMgMTQ0OTYt
MTU6MjAxNCwgQW5uZXggRS4zLgogICAgIFN0cmluZ1ZpZXcgY29kZWNWaWV3KGNvZGVjU3RyaW5n
KTsKQEAgLTEwNiwxNCArMTA2LDE0IEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhF
VkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0aW9u
YWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBv
aW50ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+IGlubGluZSBzdGQ6Om9wdGlvbmFs
PFZhbHVlVHlwZT4gbWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIoY29uc3QgVmFsdWVUeXBlKiBwb2lu
dGVyKQogewogICAgIGlmICghcG9pbnRlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gKnBvaW50ZXI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxEb1ZpUGFyYW1ldGVy
czo6Q29kZWM+IHBhcnNlRG9WaUNvZGVjVHlwZShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0
cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPFBhY2tl
ZEFTQ0lJTG93ZXJDb2Rlczx1aW50MzJfdD4sIERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gdHlwZXNB
cnJheVtdID0gewogICAgICAgICB7ICJkdmExIiwgRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpBVkMx
IH0sCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIE9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzOjpD
b2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBt
YWtlT3B0aW9uYWxGcm9tUG9pbnRlcih0eXBlc01hcC50cnlHZXQoc3RyaW5nKSk7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gcHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9maWxl
KFN0cmluZ1ZpZXcgcHJvZmlsZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwcm9m
aWxlSURGb3JBbHBoYWJldGljRG9WaVByb2ZpbGUoU3RyaW5nVmlldyBwcm9maWxlKQogewogICAg
IC8vIFNlZSBUYWJsZSA3IG9mICJEb2xieSBWaXNpb24gUHJvZmlsZXMgYW5kIExldmVscyBWZXJz
aW9uIDEuMy4yIgogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPFBhY2tlZEFTQ0lJTG93
ZXJDb2Rlczx1aW50NjRfdD4sIHVpbnQxNl90PiBwcm9maWxlc0FycmF5W10gPSB7CkBAIC0xNTMs
NyArMTUzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZERvVmlQcm9maWxlSUQodWludDE2X3QgcHJv
ZmlsZUlEKQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhpbXVtTGV2
ZWxJREZvckRvVmlQcm9maWxlSUQodWludDE2X3QgcHJvZmlsZUlEKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IG1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCh1aW50MTZfdCBw
cm9maWxlSUQpCiB7CiAgICAgLy8gU2VlIFNlY3Rpb24gNC4xIG9mICJEb2xieSBWaXNpb24gUHJv
ZmlsZXMgYW5kIExldmVscyBWZXJzaW9uIDEuMy4yIgogICAgIHN3aXRjaCAocHJvZmlsZUlEKSB7
CkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFByb2ZpbGVJREZvckNvZGVj
KHVpbnQxNl90IHByb2ZpbGVJRCwgRG9WaVBhcmFtZXRlcnM6OkNvZGVjIGMKICAgICByZXR1cm4g
Y29kZWMgPT0gRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpIVkMxIHx8IGNvZGVjID09IERvVmlQYXJh
bWV0ZXJzOjpDb2RlYzo6SEVWMTsKIH0KIAotT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNl
RG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKK3N0ZDo6b3B0aW9uYWw8
RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVj
VmlldykKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSBEb1ZpIGNvZGVjIHN0cmluZyBpcyBz
cGVjaWZpZWQgaW4gIkRvbGJ5IFZpc2lvbiBQcm9maWxlcyBhbmQgTGV2ZWxzIFZlcnNpb24gMS4z
LjIiCiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggYTIw
NDU5OGRkMDYzMGM4YzZhNzAzNmQ0YjU4NTMzNGZlZGM1YjdmZi4uNDE1ZTM1OGUzYTA4NTAzYTE1
YmZlMDRiZDk3MjU2MTRkN2I4NWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgSEVWQ1Bh
cmFtZXRlcnMgewogICAgIHVpbnQxNl90IGdlbmVyYWxMZXZlbElEQyB7IDAgfTsKIH07CiAKLVdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJh
bWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CiAKIHN0cnVjdCBE
b1ZpUGFyYW1ldGVycyB7CiAgICAgZW51bSBjbGFzcyBDb2RlYyB7IEFWQzEsIEFWQzMsIEhFVjEs
IEhWQzEgfSBjb2RlYzsKQEAgLTQ0LDYgKzQ0LDYgQEAgc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsK
ICAgICB1aW50MTZfdCBiaXRzdHJlYW1MZXZlbElEIHsgMCB9OwogfTsKIAotV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJp
bmdWaWV3KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggMjQyZmUwNTc4ZmMxNGQyNzA5NjQ2NTM1MDY3
MzUyZjBkYWZlNWVjZi4uZWI4NzkwYjRkMGNjNzNhNDk4MjRlMTNhYmMxMDA5N2EzNTA5OWZiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMTksNyArMTE5
LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBF
bmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggNjRlYTQ4MzcyNjk2ZGFlOTA1MGJhMDQxMjVhYzIwZmEwNGUw
MGI5Yy4uZjFjN2RiMTNkODU2NTc0YTE0ZDI4OGU3NTQ5ZDhiMGNiZmFiNWU4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMjIsMTAg
KzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1h
c2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3Rk
OjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJlc2Vy
dmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgPSAwOwogCi0g
ICAgdmlydHVhbCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQgPSB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpID0gMDsKIAogICAgIC8vIEZJWE1F
OiBjdXJyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0cmlj
dGlvbiB0aGF0IHRoZXkgb25seSB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0M2Y1MmJkNGJkODlk
NTE2OTUzN2NiOTRjYzg1ZTA1MjljZWY4YzM1Li5hNjJiM2M3YmQ2MzBkYjk4YmMyYWNjYTdiN2Fk
NDVhY2EwOTE2YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIHB1dFBpeGVsQnVm
ZmVyKCpwaXhlbEJ1ZmZlciwgbG9naWNhbFJlY3QoKSwgSW50UG9pbnQ6Onplcm8oKSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgdm9p
ZCogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFj
a2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9u
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCB2b2lkKiBkYXRhKSBjb25zdAogewog
ICAgIEFTU0VSVChQaXhlbEJ1ZmZlcjo6c3VwcG9ydGVkUGl4ZWxGb3JtYXQoZGVzdGluYXRpb25G
b3JtYXQucGl4ZWxGb3JtYXQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBlNzNhMmE5ZjNiYmJlMDViODE5
MzZiNjhkOTE3YjExY2FkZGMxYWIwLi40MjA5OWQ0ZDM2MjVjNWI5MmRhNDQ5MmMyMjY5YjcyNmIw
NWIyNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTA0LDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikg
eyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByb3Rl
Y3RlZDoKICAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKICAgICBJbnRSZWN0IGJhY2tlbmRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6
ZSgpKTsgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRh
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0LCB2b2lkKiBkYXRhKTsKIAog
ICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBmOGQ2MDQ1N2IyMTUzNmZmMzk5OTBjOTg0
NmMwNzI0ZmU1ZjdjZjIzLi44NzFjMTAxNWNhNjlmNTgwZTkzMGU2ZWM1MDJlYjQ3YjY1NjY0YjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRnJhbWVNZXRhZGF0YSB7
CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgICAgIE9wdGlvbmFs
PEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplOwogICAgIH07CiAKICAgICBzdHJ1Y3QgRnJhbWVJ
bmZvIHsKQEAgLTY4LDE0ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8RnJhbWVJbmZv
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgewotICAgICAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaGFzQWxwaGE7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGhhc0FscGhhOwogICAgICAgICAgICAgZGVjb2RlciA+PiBoYXNBbHBoYTsKICAgICAgICAg
ICAgIGlmICghaGFzQWxwaGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uOwogICAgICAgICAgICAgZGVjb2RlciA+PiBk
dXJhdGlvbjsKICAgICAgICAgICAgIGlmICghZHVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCmluZGV4
IGNjM2I2MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEuLjBlYTBhMDMyN2I1ZmRm
OTUyMzMyYzY2NDczZDFmYTgxMzgyMmZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC0xMDEsMTcgKzEwMSwxNyBAQCBJbnRTaXpl
IEltYWdlRnJhbWU6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAgICAgCi1i
b29sIEltYWdlRnJhbWU6Omhhc05hdGl2ZUltYWdlKGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAorYm9vbCBJbWFnZUZyYW1lOjpoYXNOYXRp
dmVJbWFnZShjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAogewogICAgIHJldHVybiBtX25hdGl2ZUltYWdlICYmICghc3Vic2FtcGxp
bmdMZXZlbCB8fCAqc3Vic2FtcGxpbmdMZXZlbCA+PSBtX3N1YnNhbXBsaW5nTGV2ZWwpOwogfQog
Ci1ib29sIEltYWdlRnJhbWU6Omhhc0Z1bGxTaXplTmF0aXZlSW1hZ2UoY29uc3QgT3B0aW9uYWw8
U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Citib29sIEltYWdlRnJh
bWU6Omhhc0Z1bGxTaXplTmF0aXZlSW1hZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGlu
Z0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTmF0aXZl
SW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkgJiYgKG1fZGVjb2RpbmdPcHRpb25zLmlzU3luY2hyb25v
dXMoKSB8fCBtX2RlY29kaW5nT3B0aW9ucy5oYXNGdWxsU2l6ZSgpKTsKIH0KIAotYm9vbCBJbWFn
ZUZyYW1lOjpoYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3Qg
T3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAorYm9vbCBJbWFnZUZyYW1lOjpoYXNE
ZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3Qgc3RkOjpvcHRpb25h
bDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc05hdGl2ZUltYWdl
KHN1YnNhbXBsaW5nTGV2ZWwpICYmIG1fZGVjb2RpbmdPcHRpb25zLmlzQXN5bmNocm9ub3VzQ29t
cGF0aWJsZVdpdGgoZGVjb2RpbmdPcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCBhYTczYWUzNjM4OWVjMmZhYzQyMWVjMzVj
M2U2YzY3MTgxMWU3YmIzLi4zZjJiMWZjMDk5YTU4ZDU2NGUyMDUzZWVhMzM5YjU3MTAwY2YzMDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogCiAgICAgdm9pZCBzZXREZW5zaXR5
Q29ycmVjdGVkU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fZGVuc2l0eUNvcnJlY3RlZFNp
emUgPSBzaXplOyB9Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RlbnNpdHlDb3JyZWN0ZWRTaXplOyB9CisgICAgc3RkOjpvcHRp
b25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVu
c2l0eUNvcnJlY3RlZFNpemU7IH0KIAogICAgIHZvaWQgc2V0RHVyYXRpb24oY29uc3QgU2Vjb25k
cyYgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAgICAgU2Vjb25kcyBkdXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTc3LDkgKzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0g
aGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gIWhhc01ldGFk
YXRhKCkgfHwgbV9oYXNBbHBoYTsgfQogCi0gICAgYm9vbCBoYXNOYXRpdmVJbWFnZShjb25zdCBP
cHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pIGNvbnN0OwotICAgIGJvb2wgaGFzRnVs
bFNpemVOYXRpdmVJbWFnZShjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0p
IGNvbnN0OwotICAgIGJvb2wgaGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRp
b25zKGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJikgY29uc3Q7CisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZShjb25zdCBzdGQ6Om9wdGlvbmFs
PFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSkgY29uc3Q7CisgICAgYm9vbCBoYXNGdWxsU2l6ZU5h
dGl2ZUltYWdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KSBj
b25zdDsKKyAgICBib29sIGhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikgY29uc3Q7CiAgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuICFz
aXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBj
b25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBEZWNvZGluZ09wdGlvbnMgbV9k
ZWNvZGluZ09wdGlvbnM7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lIH07Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9kZW5zaXR5
Q29ycmVjdGVkU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fZGVuc2l0eUNvcnJl
Y3RlZFNpemU7CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNBbHBoYSB7
IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAppbmRleCAzYzlmNDhmNDU2NDM5MTYxNmRjNmU2ZmY1
ZjhkNWQwZGVjNmY2YjdmLi5hOWNjZTU2NDJjYjc3NjE3N2YyN2I4MThlMTA1OGJmNzNkOTYwY2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50
aW5nT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
UGFpbnRpbmdPcHRpb25zLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IEltYWdlUGFpbnRpbmdP
cHRpb25zIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0LCB0eXBlbmFtZS4uLiBSZXN0PgpAQCAt
OTAsMjkgKzkwLDI5IEBAIHZvaWQgSW1hZ2VQYWludGluZ09wdGlvbnM6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8
SW1hZ2VQYWludGluZ09wdGlvbnM+IEltYWdlUGFpbnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IEltYWdlUGFp
bnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxD
b21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxD
b21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgZGVjb2RlciA+PiBjb21w
b3NpdGVPcGVyYXRvcjsKICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAgICBkZWNvZGVyID4+IGJs
ZW5kTW9kZTsKICAgICBpZiAoIWJsZW5kTW9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPERlY29kaW5nTW9kZT4gZGVjb2RpbmdNb2RlOworICAgIHN0ZDo6
b3B0aW9uYWw8RGVjb2RpbmdNb2RlPiBkZWNvZGluZ01vZGU7CiAgICAgZGVjb2RlciA+PiBkZWNv
ZGluZ01vZGU7CiAgICAgaWYgKCFkZWNvZGluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbj4gb3Jp
ZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlv
bj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+PiBvcmllbnRhdGlvbjsKICAgICBpZiAoIW9y
aWVudGF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OworICAgIHN0ZDo6b3B0
aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OwogICAgIGRl
Y29kZXIgPj4gaW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9uUXVh
bGl0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJlc29sdXRpb24uY3BwCmluZGV4IGY3NjYwYjA5
NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5MzguLjhkMzNkMzdiZDFlNDlmZDBiZGMxZWVl
MTI5MDhhODBhMzY2Y2RkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEludFNpemU+IEltYWdlUmVzb2x1dGlvbjo6ZGVuc2l0
eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0
aW9uTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RkOjpvcHRpb25hbDxJbnRTaXplPiBJbWFnZVJlc29s
dXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgUmVzb2x1dGlvbk1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBpZiAobWV0YWRhdGEu
cmVzb2x1dGlvblVuaXQgIT0gUmVzb2x1dGlvblVuaXQ6OkluY2hlcyB8fCBtZXRhZGF0YS5yZXNv
bHV0aW9uLmlzRW1wdHkoKSB8fCBtZXRhZGF0YS5wcmVmZXJyZWRTaXplLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmgKaW5kZXggZTFhMjYxMzBlYjRjZWNhN2Q1OTI2
NzVhODY5MGFjZGM2NmIyYWNjMC4uNzMyN2YwYjBlNWE5MmE1MjhkZjVlZmUwNzQ1MGNjODQyOWUz
YzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VS
ZXNvbHV0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VS
ZXNvbHV0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IEltYWdlUmVzb2x1dGlvbiB7CiAg
ICAgICAgIFJlc29sdXRpb25Vbml0IHJlc29sdXRpb25Vbml0OwogICAgIH07CiAKLSAgICBzdGF0
aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZShjb25zdCBGbG9hdFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IFJlc29sdXRpb25NZXRhZGF0YSYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IDVkOTE2YzBmZTVkNzAxOTFiOTJkNDBhYzc5MTRjYmRlNWMwNDM3
MDUuLjQ1ZTRiM2JmMGNjMjFlYWMyY2QzNDNlMDZkZWE1NWI1MDE3ZTBiNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM5NCw3
ICszOTQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBj
b25zdCBPcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZvckRyYXdpbmcpCit2b2lkIEltYWdlU291cmNl
OjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRTaXplPiYg
c2l6ZUZvckRyYXdpbmcpCiB7CiAgICAgQVNTRVJUKGlzRGVjb2RlckF2YWlsYWJsZSgpKTsKICAg
ICBpZiAoIWhhc0FzeW5jRGVjb2RpbmdRdWV1ZSgpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQg
SW1hZ2VTb3VyY2U6OnN0b3BBc3luY0RlY29kaW5nUXVldWUoKQogICAgIExPRyhJbWFnZXMsICJJ
bWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2RlY29kaW5nIGhhcyBiZWVuIHN0b3BwZWRd
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAotY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0
IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQorY29uc3QgSW1h
Z2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vi
c2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRnJhbWU6OmRlZmF1bHRGcmFtZSgp
OwpAQCAtNTEwLDcgKzUxMCw3IEBAIFQgSW1hZ2VTb3VyY2U6Om1ldGFkYXRhQ2FjaGVJZk5lZWRl
ZChUJiBjYWNoZWRWYWx1ZSwgY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBNZXRhCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1UIEltYWdlU291cmNlOjpmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlm
TmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlLCBUIChJbWFn
ZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyBjYWNoaW5nLCBj
b25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkKK1QgSW1h
Z2VTb3VyY2U6OmZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUs
IE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNv
bnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vi
c2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKG1fY2FjaGVkTWV0
YWRhdGEuY29udGFpbnMobWV0YWRhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVl
OwpAQCAtNTYwLDcgKzU2MCw3IEBAIFN0cmluZyBJbWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkKICAgICByZXR1cm4gbWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fYWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uLCBTdHJpbmcoKSwgTWV0YWRhdGFUeXBlOjpBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24sICZJbWFnZURlY29kZXI6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbik7CiB9CiAK
LU9wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpCitzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3BvdCgpCiB7CiAgICAgcmV0dXJuIG1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChtX2hvdFNwb3QsIHsgfSwgTWV0YWRhdGFUeXBlOjpIb3RTcG90LCAmSW1h
Z2VEZWNvZGVyOjpob3RTcG90KTsKIH0KQEAgLTU3MCw3ICs1NzAsNyBAQCBJbWFnZU9yaWVudGF0
aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbigpCiAgICAgcmV0dXJuIGZpcnN0RnJhbWVNZXRh
ZGF0YUNhY2hlSWZOZWVkZWQobV9vcmllbnRhdGlvbiwgTWV0YWRhdGFUeXBlOjpPcmllbnRhdGlv
biwgJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YSk7CiB9CiAKLU9wdGlvbmFsPEludFNpemU+IEltYWdlU291cmNlOjpkZW5zaXR5Q29ycmVjdGVk
U2l6ZShJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorc3RkOjpvcHRpb25hbDxJbnRTaXpl
PiBJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKICAgICBhdXRvIHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVl
ZGVkKG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1ldGFkYXRhVHlwZTo6RGVuc2l0eUNvcnJlY3Rl
ZFNpemUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6ZSkKQEAgLTU3OSw3ICs1NzksNyBAQCBPcHRp
b25hbDxJbnRTaXplPiBJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbgogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0
aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVudGF0aW9uID0gdGhpcy0+b3JpZW50YXRpb24o
KTsKIAotICAgIHJldHVybiBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gT3B0aW9u
YWw8SW50U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5zcG9zZWRTaXplKCkpIDogc2l6ZTsKKyAgICBy
ZXR1cm4gb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHN0ZDo6b3B0aW9uYWw8SW50
U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5zcG9zZWRTaXplKCkpIDogc2l6ZTsKIH0KIAogSW50U2l6
ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQpAQCAtNjU4
LDEyICs2NTgsMTIgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0FscGhhKCk7CiB9
CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxp
bmdMZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+
JiBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhh
c0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKLWJvb2wgSW1hZ2VT
b3VyY2U6OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK2Jv
b2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhP
cHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxp
bmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2Rp
bmdPcHRpb25zKQogewogICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0RlY29kZWRO
YXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGlu
Z09wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kR2VuZXJpY0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW5iYW5kR2VuZXJpY0N1ZS5oCmluZGV4IDMyMTUxOWJlMzIxM2Q5MDZlMWJhMWRmYTg2MjQ5ZGM2
MGFlNjllN2QuLjgxNmRkNWFhMDdjOTFiNGRjOGEzM2RjMzNmMWQ1YzhiNmI3NzRhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3Vl
LmgKQEAgLTgxLDg4ICs4MSw4OCBAQCBzdHJ1Y3QgR2VuZXJpY0N1ZURhdGEgewogICAgIFN0YXR1
cyBtX3N0YXR1cyB7IFN0YXR1czo6VW5pbml0aWFsaXplZCB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxH
ZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVyaWND
dWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxJbmJhbmRH
ZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxJbmJhbmRH
ZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CiAgICAgZGVjb2RlciA+PiB1bmlxdWVJZDsK
ICAgICBpZiAoIXVuaXF1ZUlkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRp
bWU+IHN0YXJ0VGltZTsKICAgICBkZWNvZGVyID4+IHN0YXJ0VGltZTsKICAgICBpZiAoIXN0YXJ0
VGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gZW5kVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gZW5kVGltZTsKICAg
ICBkZWNvZGVyID4+IGVuZFRpbWU7CiAgICAgaWYgKCFlbmRUaW1lKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50OwogICAgIGlmICghY29udGVudCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gZm9udE5h
bWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvbnROYW1lOwogICAgIGRlY29kZXIgPj4g
Zm9udE5hbWU7CiAgICAgaWYgKCFmb250TmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gbGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxpbmU7CiAgICAgaWYgKCFsaW5lKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcG9zaXRpb247CiAgICAgZGVjb2RlciA+PiBwb3NpdGlv
bjsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzaXpl
OwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGJhc2VGb250U2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gYmFzZUZv
bnRTaXplOwogICAgIGlmICghYmFzZUZvbnRTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOworICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gcmVsYXRp
dmVGb250U2l6ZTsKICAgICBpZiAoIXJlbGF0aXZlRm9udFNpemUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENvbG9yOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZvcmVncm91bmRDb2xvcjsKICAgICBkZWNvZGVyID4+IGZv
cmVncm91bmRDb2xvcjsKICAgICBpZiAoIWZvcmVncm91bmRDb2xvcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGRlY29kZXIgPj4g
YmFja2dyb3VuZENvbG9yOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGhpZ2hsaWdodENvbG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGhpZ2hsaWdodENvbG9yOwogICAgIGRlY29kZXIgPj4g
aGlnaGxpZ2h0Q29sb3I7CiAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEFsaWdubWVudD4gYWxpZ25tZW50OworICAg
IHN0ZDo6b3B0aW9uYWw8QWxpZ25tZW50PiBhbGlnbm1lbnQ7CiAgICAgZGVjb2RlciA+PiBhbGln
bm1lbnQ7CiAgICAgaWYgKCFhbGlnbm1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTdGF0dXM+IHN0YXR1czsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0YXR1
cz4gc3RhdHVzOwogICAgIGRlY29kZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKaW5kZXggM2EwMmU1NjA1YWIyOGNhZTM0OTRmODg3
NWZjNDY1NDNjMzBiYjMwMi4uYWI0M2QxZTQzN2UxMzM0Mjk2ZGI5YjUzMjE1N2QwODA1MGM1NGI3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0
aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRo
RGF0YS5oCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBMaW5lRGF0YSB7CiAgICAgRmxvYXRQb2lu
dCBlbmQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExp
bmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPExpbmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogc3Ry
dWN0IEFyY0RhdGEgewpAQCAtNTcsMTQgKzU3LDE0IEBAIHN0cnVjdCBBcmNEYXRhIHsKICAgICBU
eXBlIHR5cGUgeyBUeXBlOjpBcmNPbmx5IH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEFyY0RhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXJjRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHN0cnVjdCBNb3ZlRGF0YSB7CiAgICAgRmxvYXRQb2ludCBsb2NhdGlv
bjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW92ZURh
dGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TW92ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1Y3Qg
UXVhZEN1cnZlRGF0YSB7CkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBRdWFkQ3VydmVEYXRhIHsK
ICAgICBGbG9hdFBvaW50IGVuZFBvaW50OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxRdWFkQ3VydmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFF1YWRDdXJ2ZURhdGE+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1Y3QgQmV6aWVyQ3VydmVEYXRhIHsKQEAgLTgz
LDcgKzgzLDcgQEAgc3RydWN0IEJlemllckN1cnZlRGF0YSB7CiAgICAgRmxvYXRQb2ludCBlbmRQ
b2ludDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmV6
aWVyQ3VydmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlemllckN1cnZlRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgTW92ZURhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtOTEsNyArOTEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIE1vdmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IGxvY2F0aW9uOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1vdmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLmxvY2F0aW9uKSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIExpbmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IGVuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8TGluZURhdGE+IExpbmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8TGluZURhdGE+IExpbmVEYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBMaW5lRGF0YSBkYXRhOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBBcmNEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IHR5cGU7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcmNEYXRhPiBBcmNEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBBcmNEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnN0YXJ0KSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIFF1YWRDdXJ2ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgZW5kUG9pbnQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPFF1YWRDdXJ2ZURhdGE+IFF1YWRDdXJ2ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxRdWFkQ3VydmVEYXRh
PiBRdWFkQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBRdWFkQ3Vy
dmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0UG9pbnQpKQpA
QCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQmV6aWVyQ3Vy
dmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVu
ZFBvaW50OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxCZXppZXJDdXJ2
ZURhdGE+IEJlemllckN1cnZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEJlemllckN1cnZlRGF0YT4gQmV6aWVyQ3Vy
dmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBCZXppZXJDdXJ2ZURhdGEg
ZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2ludCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXggYzljYmQ4MWRi
MjBhOGI2ZTRlMTFkZDA0N2NhM2I5Y2RkYjI4ZmFkNy4uYWI2MjczOGQ5MTliN2NjMWNhMGM0NWY3
NDhjY2FhNWM5MzEzNTIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaApAQCAtNjUsMTQgKzY1LDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0PiBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRS
ZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPExh
eW91dFBvaW50PiBsYXlvdXRQb2ludDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRQb2lu
dD4gbGF5b3V0UG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gbGF5b3V0UG9pbnQ7CiAgICAgICAg
IGlmICghbGF5b3V0UG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0U2l6ZT4gbGF5b3V0U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBsYXlvdXRT
aXplOwogICAgICAgICBpZiAoIWxheW91dFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlN
RVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVD
YWNoZS5oCmluZGV4IGM1YTc3N2ZkN2Q2MDdiZWMyOTJiMzhhNmJkY2Y0NjI0YjQwZmI1MTAuLmI4
YjI0ZDQzZjIwN2ZhMTI4MzUyYTIzNzI0Y2MwNGZkYWEyMDk1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKQEAgLTYwLDggKzYwLDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVFeHRlbmRlZFR5cGUoY29uc3Qg
Q29udGVudFR5cGUmKTsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5cGVzOwotICAgIE9wdGlvbmFsPEhhc2hNYXA8
U3RyaW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4+IG1fY2FjaGVkUmVzdWx0czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5cGVzOworICAgIHN0
ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlw
ZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9jYWNoZWRSZXN1bHRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGY5ODIyZjgxMWRjZjU3ZjhhY2Q4MTkzOWZjYzZkNzNi
ZTM0YzkxOGEuLmVkZmQ2YTMwMzhlNzJkYTg0ZDM2Mjc0Yzk0YzJmMDViZGYzNTRiNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTE1NTgsNyArMTU1OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmVuZGVkKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5lbmRlZCgpOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQor
c3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyOjp2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYWExMTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQzNWJl
ZDU3YTFjMmEwZS4uYWQyY2MwN2VhNTQxNTk3ODc3OWNkMzA1NGMzZmVhNWEwMTllYjAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0x
MDcsMjkgKzEwNywyOSBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFs
PE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5
cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CiAgICAg
ICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxVUkw+IHVybDsKICAgICAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgICAg
IGlmICghdXJsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVNvdXJjZTsKICAgICAg
ICAgaWYgKCFpc01lZGlhU291cmNlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU3RyZWFtOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07CiAgICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVN0
cmVhbTsKICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGVudFR5cGU+PiB0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250ZW50
VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZTsKICAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBwdWJs
aWM6CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCk7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+
IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpOwogCiAgICAgU3RyaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZEF1
ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CkBAIC02NzksOCArNjc5LDggQEAgcHJpdmF0ZToK
ICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJp
bmcgbV9rZXlTeXN0ZW07Ci0gICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8TWVk
aWFUaW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcj4gbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8g
fTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDg3N2Y4YzBlYmE3
ODY3MWNiYzhhYTUyZWY2Nzk0Njc1MWJhYmNiOGMuLjliNTJlMTY0YjI0Nzc3ODBmYjI0ZjU4Zjhm
YTU3OWI1N2IxM2Q5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiB3b3VsZFRh
aW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAog
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOyB9CiAKQEAg
LTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5kZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxWaWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKaW5kZXggNmEyNjcwMTYxYzU1NTNhYTBlMDY4
ZGVjN2FjMzViZTM4ZmEzOTA0Ny4uZTI2N2M2NmYxODhjNWI2MjVhY2U1ZWQzOTU0YjQ5OGQ4YjU1
NTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFV
c2FnZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVz
YWdlSW5mby5oCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IE1lZGlhVXNhZ2VJbmZvIHsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlh
VXNhZ2VJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhVXNhZ2VJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFVc2FnZUluZm86
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMTQzLDcgKzE0Myw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE1lZGlhVXNhZ2VJbmZvOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2RlciA8PCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNv
bnRlbnQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxNZWRp
YVVzYWdlSW5mbz4gTWVkaWFVc2FnZUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+
IE1lZGlhVXNhZ2VJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNZWRpYVVz
YWdlSW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApp
bmRleCA4Y2VlNTU0NzE4NDkyNzFkMDljMmZhMTA4YTVmZTY1NGQyMTk4OTdjLi4xY2E5NzYzM2Q4
NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmgKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBNb2RlbDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogUmVmUHRyPE1v
ZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8c2l6
ZV90PiBsZW5ndGg7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aDsKICAgICBkZWNv
ZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggNGZhODI3M2NkY2NkOTkwODFiYjJmNDIyZWNmZDExYTczODgwNmY5
NC4uZTVkMWZmOWJjYWVkMDRjZTNjMmVlMDlhMTdmZWE2NDIwOTU0OGM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQu
aApAQCAtMTA1LDExICsxMDUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd1JhaXNlZEVs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpIGZpbmFs
IHsgfQogCi0gICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgRmxvYXRTaXpl
IGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0
UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxs
b3B0KSBmaW5hbCB7IHJldHVybiB7IH07IH0KIAogICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBG
b250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSos
IHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsg
fQogCi0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
ID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCBk
cmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxv
YXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2Fz
Y2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxp
bmVTdHlsZSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCmluZGV4IGRhZDY0M2Y3ZjE0NmNkYWQ5NjRhNzU4NmVhODg2MDVkMzY4OTE3OTQuLjU4MjRk
YjUwZDhmYjBkNzc0N2U3ZDRkMWQ1NDdjZDVkMzU2NWYwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgRmxvYXRSZWN0IFBh
dGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUGF0aDo6ZmFzdEJvdW5kaW5nUmVjdEZyb21Jbmxp
bmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpmYXN0Qm91bmRp
bmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdAogewogICAgIGlmIChoYXNJbmxpbmVEYXRhPEFy
Y0RhdGE+KCkpIHsKICAgICAgICAgYXV0byYgYXJjID0gaW5saW5lRGF0YTxBcmNEYXRhPigpOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUFyY0JvdW5kcyhjb25z
dCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cywgZmxvYXQKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFBhdGg6OmJvdW5kaW5nUmVjdEZyb21Jbmxp
bmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpib3VuZGluZ1Jl
Y3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc0lubGluZURhdGE8QXJjRGF0
YT4oKSkgewogICAgICAgICBhdXRvJiBhcmMgPSBpbmxpbmVEYXRhPEFyY0RhdGE+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5kZXggYTAxNTY0NmM2NzA4NWM0NTM1
ZTY5MzYxY2FmNDU5M2M3YWNiZTJjYi4uNzIxYWZiZmZmNzMxMWU5NWI5MDkzZDU4YjQ2NWM3NjYx
ZGVkMDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtMjMz
LDcgKzIzMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxQYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhdGg+IGRlY29kZShEZWNvZGVy
Jik7CiAKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEYXRhVHlwZT4gY29uc3QgRGF0YVR5cGUmIGlubGluZURhdGEoKSBjb25zdDsKQEAgLTI0NSw4
ICsyNDUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRB
KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBEYXRhVHlwZSYgaW5saW5lRGF0YSgp
OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZmFzdEJvdW5kaW5nUmVjdEZyb21JbmxpbmVEYXRh
KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ1JlY3RGcm9tSW5saW5l
RGF0YSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBmYXN0Qm91bmRpbmdS
ZWN0RnJvbUlubGluZURhdGEoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Ym91bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9pZCBt
b3ZlVG9TbG93Q2FzZShjb25zdCBGbG9hdFBvaW50Jik7CkBAIC0yOTEsNyArMjkxLDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9jb3B5UGF0aEJlZm9yZU11dGF0aW9uIHsgZmFsc2Ug
fTsKICNlbmRpZgogI2lmIFVTRShDQUlSTykKLSAgICBPcHRpb25hbDxWZWN0b3I8UGF0aEVsZW1l
bnQ+PiBtX2VsZW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhdGhFbGVtZW50Pj4g
bV9lbGVtZW50czsKICNlbmRpZgogfTsKIApAQCAtMzM1LDcgKzMzNSw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgUGF0aDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgfSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBhdGg+IFBhdGg6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpv
cHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQYXRo
IHBhdGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0
aWxpdGllcy5jcHAKaW5kZXggZTRhM2IxMzE4ZmViODFhZmZhYmI0NmZhZThhM2UwNWM4YWM5NjUx
Zi4uODkzYWQ4NDM3ODgwMWFlNWZlZThiNjk3NjNlYTU0YmQwYjFmOTRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTQ2
NCwxMyArNDY0LDEzIEBAIHN0YXRpYyBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBhZGp1c3RlZHRS
YWRpaUZvckh1Z2dpbmdDdXJ2ZShjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgcmV0dXJuIHJhZGlp
OwogfQogICAgIAotc3RhdGljIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNv
bnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYgcG9seSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdv
biYgcG9seSkKIHsKICAgICBpZiAocG9seS5zaXplKCkgIT0gNCkKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPEZsb2F0UmVjdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PigpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdDsKLSAgICBPcHRpb25h
bDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IHRvcExlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9seS5zaXplKCk7ICsraSkgewogICAgICAgICBj
b25zdCBhdXRvJiB0b0VkZ2UgPSBwb2x5W2ldOwogICAgICAgICBjb25zdCBhdXRvJiBmcm9tRWRn
ZSA9IChpID4gMCkgPyBwb2x5W2kgLSAxXSA6IHBvbHlbcG9seS5zaXplKCkgLSAxXTsKQEAgLTQ4
NCw3ICs0ODQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24o
Y29uc3QgRmxvYXRQb2ludEdyYXBoOjpQb2x5Z29uJiBwb2x5KQogICAgICAgICB9CiAgICAgfQog
ICAgIGlmICghdG9wTGVmdCB8fCAhYm90dG9tUmlnaHQpCi0gICAgICAgIHJldHVybiBPcHRpb25h
bDxGbG9hdFJlY3Q+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4o
KTsKICAgICByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9tUmlnaHQudmFs
dWUoKSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCBQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhX
aXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0Pgog
ICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgIGNvbnN0IGF1dG8mIHBvbHkgPSBwb2x5cy5hdCgw
KTsKICAgICAvLyBGYXN0IHBhdGggd2hlbiBwb2x5IGhhcyBvbmUgcmVjdCBvbmx5LgotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKICAgICBp
ZiAocmVjdCkKICAgICAgICAgcmV0dXJuIHJvdW5kZWRSZWN0KHJlY3QudmFsdWUoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCA4YzY4NmExZjIy
OGM4MDA4NWM0NWU5OWViODBhYzU5Mzg0ZWViZWZhLi4xYzk2MWZiZjQ2ZTgzNmY0MDA3ZTYwYTk4
MTQxZjQ5MTI0YjU0NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgICAgIGJvb2wg
cmVwZWF0WDsKICAgICAgICAgYm9vbCByZXBlYXRZOwpAQCAtMTAzLDE5ICsxMDMsMTkgQEAgdm9p
ZCBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+
IFBhdHRlcm46OlBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRlcm5T
cGFjZVRyYW5zZm9ybTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVy
blNwYWNlVHJhbnNmb3JtOwogICAgIGRlY29kZXIgPj4gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwog
ICAgIGlmICghcGF0dGVyblNwYWNlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHJlcGVhdFg7CiAgICAgZGVjb2RlciA+PiByZXBlYXRYOwogICAgIGlmICghcmVwZWF0WCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVh
dFk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiByZXBlYXRZOwogICAgIGRlY29kZXIgPj4gcmVw
ZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5k
ZXggZmE3MTY2MjNlYmUzNzk4ODZlZjBmZWQzMjZmZDU2MDU2M2UzODc4ZC4uOTU1ODA3ZmQzYTAw
MWM2MjJlMmZiOGNjMGI0OTRlZGE4OTRmZjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBDaGVja2Vk
PHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXpl
KGNvbnN0IFBpeGVsQnVmZgogICAgIHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkg
KiBieXRlc1BlclBpeGVsOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNv
bnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQorc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRh
dGFCeXRlTGVuZ3RoKQogewogICAgIEFTU0VSVChzdXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQu
cGl4ZWxGb3JtYXQpKTsKICAgICBBU1NFUlQoY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXpl
KS51bnNhZmVHZXQoKSA9PSBkYXRhQnl0ZUxlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmCiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJy
YXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0
IEludFNpemUmIHNpemUpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUm
IHNpemUpCiB7CiAgICAgQVNTRVJUKHN1cHBvcnRlZFBpeGVsRm9ybWF0KGZvcm1hdC5waXhlbEZv
cm1hdCkpOwogCkBAIC04MCw3ICs4MCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvCiAgICAg
cmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07
CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6
OkFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBj
b25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlcikK
IHsKICAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0KSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCmlu
ZGV4IGMzNTNmZWJkY2RmMzkwMmZmM2M1MmVlMTNjZGFkOWJmOWI5ZTBhNWMuLjEyY2EzYzhjNzJk
OTM3NDY0NWRiNTFjMGMwMGE4ZDRiOWU4NjJkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBQaXhl
bEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkUGl4ZWxGb3JtYXQo
UGl4ZWxGb3JtYXQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlD
cmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6
QXJyYXlCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJ
bnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUm
LCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25zdCBQaXhl
bEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4mJik7CiAgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJ
bnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwpAQCAtNjIsMTAgKzYyLDEwIEBAIHB1
YmxpYzoKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGVGb3JEZWNvZGluZyhj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBkYXRhQnl0
ZUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29u
c3QgSW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29tcHV0ZUJ1ZmZl
clNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CiAKQEAgLTg1
LDkgKzg1LDkgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1hdDsKICAgICBkZWNvZGVyID4+IGZvcm1hdDsK
ICAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk2LDcg
Kzk2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBp
eGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIShmb3JtYXQtPnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxJbnRTaXplPiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsK
ICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyRm9ybWF0LmgKaW5kZXggNjA4MmU1Yjg0NjQxMDNlNTFiNDRmZWRmMGE3YmE2ZGZk
NTgwYmZjNy4uZDRmNWIwM2Y2MjJmOWQ3NzY4NWIwZWQ4ZjlhZWE3YTRjZWE3YTYxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1h
dC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBQaXhlbEJ1ZmZlckZvcm1hdCB7CiAgICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
KTsKQEAgLTQ5LDE5ICs0OSwxOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVs
QnVmZmVyRm9ybWF0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IGFscGhhRm9ybWF0IDw8IHBpeGVsRm9ybWF0IDw8IGNvbG9yU3BhY2U7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZl
ckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0
aW9uPiBhbHBoYUZvcm1hdDsKICAgICBkZWNvZGVyID4+IGFscGhhRm9ybWF0OwogICAgIGlmICgh
YWxwaGFGb3JtYXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEZvcm1h
dD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1hdDsKICAgICBpZiAoIXBp
eGVsRm9ybWF0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFj
ZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9y
U3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JT
cGFjZS5oCmluZGV4IGNiOTcwMTI1YTRiMDRiNDZhNWMzNWJkYWNjNzZmMzA4MDFlMWM2YjkuLjJj
NmEyMjNkOWU2MWI2MjRhZmNmMDdjNDYyNWUzN2FiODdjNDU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQbGF0
Zm9ybUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgogICAgIE5hbWUgbV9uYW1lOwpAQCAtNzUsOSArNzUsOSBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBsYXRmb3JtQ29sb3JTcGFjZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX25hbWU7CiB9CiAKLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gUGxhdGZvcm1D
b2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBQbGF0Zm9ybUNvbG9yU3BhY2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JT
cGFjZTo6TmFtZT4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZT4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKaW5kZXggZmNiZDI3NWY5NWYzMGMyZWJjMjI0
YTNhYzY4NTg1NWRkZTYyNjFkZC4uNjdiNTMyNTU5NDY2ZjY1MzJhMzg2MTE3YzQxOWI0NGM0MWMw
NWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRleHRUcmFjay5oCkBAIC03OCw0OCArNzgsNDggQEAgc3RydWN0IFBsYXRmb3JtVGV4dFRy
YWNrRGF0YSB7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1UZXh0VHJhY2tEYXRhPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtVGV4dFRyYWNrRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UGxhdGZvcm1UZXh0VHJhY2tEYXRhPiBQbGF0Zm9y
bVRleHRUcmFja0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQ
bGF0Zm9ybVRleHRUcmFja0RhdGE+IFBsYXRmb3JtVGV4dFRyYWNrRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbGFiZWw7CiAgICAgZGVjb2RlciA+PiBsYWJlbDsKICAgICBpZiAoIWxh
YmVsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5n
PiBsYW5ndWFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgZGVj
b2RlciA+PiBsYW5ndWFnZTsKICAgICBpZiAoIWxhbmd1YWdlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB1cmw7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHVybDsKICAgICBkZWNvZGVyID4+IHVybDsKICAgICBpZiAoIXVybCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFRyYWNrTW9kZT4gbW9kZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFRyYWNrTW9kZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7
CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8VHJhY2tLaW5kPiBraW5kOworICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tLaW5kPiBraW5k
OwogICAgIGRlY29kZXIgPj4ga2luZDsKICAgICBpZiAoIWtpbmQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxUcmFja1R5cGU+IHR5cGU7CisgICAgc3RkOjpv
cHRpb25hbDxUcmFja1R5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICgh
dHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGludD4g
dW5pcXVlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVuaXF1ZUlkOwogICAgIGRlY29kZXIg
Pj4gdW5pcXVlSWQ7CiAgICAgaWYgKCF1bmlxdWVJZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzRGVmYXVsdDsKICAgICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICBpZiAoIWlz
RGVmYXVsdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKaW5kZXggNTg0
NDgxZTk1NjNmYmNiOTA2YjY3ODM4ODFiOTI5MDM1NTllNWI1Yi4uYjFlODE1ZmI0NDZlNGIyNmNi
NGZiNTg4NjU3Mzg5MjNhMTYyOTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6CiAgICAgLy8gV2UgY29uc2lkZXIgYWxsIHRoZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3VuZGVk
IGFzIGZvbGxvdzogW3N0YXJ0LCBlbmRbCkBAIC05MiwxNCArOTIsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8UmFuZ2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSYW5nZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHN0
YXJ0OwogICAgICAgICAgICAgaWYgKCFzdGFydCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZDsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBlbmQ7CiAgICAgICAgICAgICBkZWNvZGVy
ID4+IGVuZDsKICAgICAgICAgICAgIGlmICghZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0xNTAsOSArMTUwLDkgQEAgdm9pZCBQbGF0Zm9ybVRpbWVSYW5nZXM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4gUGxhdGZvcm1UaW1lUmFuZ2VzOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJhbmdlPj4gYnVmZmVyZWQ7CiAgICAgZGVjb2RlciA+PiBidWZmZXJlZDsKICAgICBpZiAoIWJ1
ZmZlcmVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3ZWNiMWM2OTZiMmU4ZjU4OGFlMWRmYWVkMTc3
MDUyMTAwODdjYTJlLi44M2M1ZWQyYWM5MjMxOGU3MDQwYTQ2ZDViZTgwNjNmYTNmZDFhM2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAtNzcsNyArNzcs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8UmVnaW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBkZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVnaW9uJik7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHNl
Z21lbnRJbmRleCB7IDAgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2Rl
ciYpOwogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZVNoYXBlcyhjb25zdCBTaGFwZSYgc2hh
cGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFwZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IGRl
Y29kZShEZWNvZGVyJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHZvaWQgZHVtcCgpIGNv
bnN0OwpAQCAtMjE4LDE0ICsyMTgsMTQgQEAgdm9pZCBSZWdpb246OlNwYW46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8UmVnaW9uOjpTcGFuPiBSZWdpb246OlNwYW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxSZWdpb246OlNwYW4+IFJlZ2lvbjo6U3Bhbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8aW50PiB5OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB5OwogICAgIGRlY29kZXIgPj4geTsKICAgICBpZiAoIXkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc2VnbWVudEluZGV4OworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHNlZ21lbnRJbmRleDsKICAgICBkZWNvZGVyID4+IHNlZ21lbnRJbmRleDsK
ICAgICBpZiAoIXNlZ21lbnRJbmRleCkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI0MSwxNCAr
MjQxLDE0IEBAIHZvaWQgUmVnaW9uOjpTaGFwZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdpb246OlNoYXBl
PiBSZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
UmVnaW9uOjpTaGFwZT4gUmVnaW9uOjpTaGFwZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGludD4+IHNlZ21lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPGludD4+IHNlZ21lbnRzOwogICAgIGRlY29kZXIgPj4gc2VnbWVudHM7CiAgICAgaWYg
KCFzZWdtZW50cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PFZlY3RvcjxSZWdpb246OlNwYW4+PiBzcGFuczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWdpb246OlNwYW4+PiBzcGFuczsKICAgICBkZWNvZGVyID4+IHNwYW5zOwogICAgIGlmICghc3Bh
bnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNzEsMTQgKzI3MSwxNCBAQCB2
b2lkIFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBib3VuZHM7CisgICAgc3RkOjpvcHRp
b25hbDxJbnRSZWN0PiBib3VuZHM7CiAgICAgZGVjb2RlciA+PiBib3VuZHM7CiAgICAgaWYgKCFi
b3VuZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29s
PiBoYXNTaGFwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1NoYXBlOwogICAgIGRlY29k
ZXIgPj4gaGFzU2hhcGU7CiAgICAgaWYgKCFoYXNTaGFwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTI4Niw3ICsyODYsNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgUmVnaW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9Owog
CiAgICAgaWYgKCpoYXNTaGFwZSkgewotICAgICAgICBPcHRpb25hbDxTaGFwZT4gc2hhcGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IHNoYXBlOwogICAgICAgICBkZWNvZGVyID4+IHNo
YXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTI5OSw3ICsyOTksNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBSZWdpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWdpb24mIHJlZ2lvbikKIHsKLSAgICBPcHRpb25hbDxS
ZWdpb24+IGRlY29kZWRSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+IGRlY29kZWRS
ZWdpb247CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkUmVnaW9uOwogICAgIGlmICghZGVjb2RlZFJl
Z2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA1ODEwMjg2OWE5YzEzNzQ0MGNlYmQwYTEw
MmZkNDVjYTI4OGViYzcwLi44MzJhMjc2ZTdjNjA5MGMxYmFlODMxYjhiZTM4ZmUyMGQ0OTQyNTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cApAQCAtMzkxLDcgKzM5MSw3IEBAIEludFNpemUgU2hhZG93Qmx1cjo6Ymx1cnJlZEVkZ2VTaXpl
KCkgY29uc3QKICAgICByZXR1cm4gZWRnZVNpemU7CiB9CiAKLU9wdGlvbmFsPFNoYWRvd0JsdXI6
OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorc3RkOjpvcHRpb25hbDxTaGFk
b3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4gU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJC
b3VuZGluZ1JlY3QoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBMYXll
ckltYWdlUHJvcGVydGllcyBjYWxjdWxhdGVkTGF5ZXJJbWFnZVByb3BlcnRpZXM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCA4N2Y2NDZl
MzRiMDA2YmI0ZThlYTBiMDRhOTA2NDhkZGRmMmJmNTY0Li4wYzk3NmI4NzUxYmQ2ZWZmMGNhN2Fk
MjI3ODIzNjYxMjg4YTg4OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5oCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZsb2F0
U2l6ZSBsYXllckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8g
bGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgogICAg
IH07CiAKLSAgICBPcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4gY2Fs
Y3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXpl
KGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkmKSBjb25zdDsKIAogICAgIHZvaWQgYmx1clNoYWRvd0J1ZmZlcihJbWFnZUJ1ZmZlciYg
bGF5ZXJJbWFnZSwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggNDZiYjZkNDMxN2Jh
OWJiZjRlY2IxNjBkNjMwZjc3OWJiZDFiNzQ3Ny4uMmUwYzYxYzM5MGY4OWFiMTJiYTk1Nzg3YzY0
ZTNjZmVlMzk5ZWExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgLy8gT25seSB1c2VkIHRvIHVw
ZGF0ZSB0aGUgdGlsZSBjb3ZlcmFnZSBtYXAuIAotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRW
aWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCmlu
ZGV4IGQwYjAyYTM0ODJiZjczZDFiM2ZjZWI5MzhlNmU5OWI0MGQxZWE1N2YuLjRkOGVlNjJlMDFi
OGVhZWJhY2M2ZDI4YjNhMDk4NTI5NTJjNWQ4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCkBAIC0zMywxMiArMzMs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDx1aW50NjRfdD4gVHJhY2tQ
cml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gVHJh
Y2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFRyYWNrUHJpdmF0ZUJhc2U6OmRlZmF1bHRFbmFibGVk
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gVHJhY2tQcml2YXRlQmFzZTo6ZGVmYXVsdEVu
YWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKaW5kZXgg
MzA5OTYxNDIwNDg1NWQ5OTY5ZDA0YzZmMDc5ODNjMjc3NzRlN2YzYi4uMjc4ZjBjNmI3MmMyODUw
OWQzMDJmNzdiNDdkNjE5MmE3MTlkMDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1w
dHlBdG9tKCk7IH0KIAogICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVy
biAwOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gdHJhY2tVSUQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IGRlZmF1bHRFbmFibGVkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0OworICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0RW5hYmxlZCgpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCB7IHJldHVybiBNZWRp
YVRpbWU6Onplcm9UaW1lKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggZjU3NzI0ZDk2NDg2MjYyMDE4ZjNjYmE0NWIx
ZjEwMWFhNDE1YjBhZi4uOTJmNDJiNjc3ZDUzZGQ5YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMu
Y3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZp
Y2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogICAgIHJldHVybiBzdGQ6OmJpbmFy
eV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJpeENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZh
bGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4Q29lZmZpY2llbnRzKTsKIH0KIAotT3B0aW9u
YWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3Ry
aW5nVmlldyBjb2RlY1ZpZXcpCitzdGQ6Om9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogewogICAg
IGF1dG8gY29kZWNTcGxpdCA9IGNvZGVjVmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVs
ZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4IDhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRlNzRl
MWQ2NDVjNzIyOGEyMzUuLmI2MTI2NGMwZmYzMjA1YWVkYTBjYjJlMzY0ZmI2ODNmYTkxMDVhNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5o
CkBAIC0xMjUsNyArMTI1LDcgQEAgc3RydWN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHsK
ICAgICB1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cyB7IFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNzA5XzYgfTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZQ
Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1Zp
ZXcgY29kZWNTdHJpbmcpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVj
U3RyaW5nKTsKIAogc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgIGRvdWJsZSB3aWR0
aCB7IDAgfTsKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhT3ZlcnJpZGVz
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewogI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAotICAgICAgICBP
cHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsg
XAogICAgICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICAgICAgaWYgKCFuYW1lKSBcCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5o
CmluZGV4IDBhN2Y2NzNjZTJjMTY0MjY3ZGMxMDBkNWUwMzI4NmNlNTYxZWUzY2UuLmM5YmI1Zjdi
Y2NlMTNhZDVlOGI0NjNlMjYxZjA2OGFmNWMxNDk1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcy5oCkBAIC00NywyOSArNDcsMjkgQEAgc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiB0b3RhbFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFtZXM7
CiAgICAgICAgIGlmICghdG90YWxWaWRlb0ZyYW1lcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRyb3BwZWRWaWRlb0ZyYW1l
czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZHJvcHBlZFZpZGVvRnJhbWVzOwog
ICAgICAgICBkZWNvZGVyID4+IGRyb3BwZWRWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCFkcm9w
cGVkVmlkZW9GcmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGRlY29k
ZXIgPj4gY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghY29ycnVwdGVkVmlkZW9G
cmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gdG90YWxGcmFtZURlbGF5OwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxheTsK
ICAgICAgICAgaWYgKCF0b3RhbEZyYW1lRGVsYXkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkaXNwbGF5Q29tcG9zaXRlZFZp
ZGVvRnJhbWVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBkaXNwbGF5Q29tcG9z
aXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IGRpc3BsYXlDb21wb3NpdGVkVmlk
ZW9GcmFtZXM7CiAgICAgICAgIGlmICghZGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IDJjMjM2YjY3ZWNhMGNiMDBj
MjMxMWQ2Nzc4N2U2MTQ4YzViYjMxOGUuLmJlZTIzZWZmMDlkYjM1ZjJiYmJmNTNjYjg1NzYxYjNm
NGQ3ZTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjph
cHBseUFkZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEdseXBoSW5kZXhS
YW4KIAogdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVu
c2lnbmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyRGVzdGluYXRp
b25JbmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCkKIHsKLSAgICBWZWN0b3I8T3B0aW9uYWw8
R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhSYW5nZShtX3J1bi5s
ZW5ndGgoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxHbHlwaElu
ZGV4UmFuZ2U+PiBjaGFyYWN0ZXJJbmRleFRvR2x5cGhJbmRleFJhbmdlKG1fcnVuLmxlbmd0aCgp
LCBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3RvcjxmbG9hdD4gYWR2YW5jZVdpZHRocyhtX3J1bi5s
ZW5ndGgoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZ2x5cGhCdWZmZXJTdGFydEluZGV4
OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBzdHJpbmdPZmZz
ZXQgPSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaSwgbV9ydW4ubGVuZ3RoKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5o
CmluZGV4IDZhYTEyY2RkZWNjNjRkYWVkYmZmNzFkZjJlNWIxN2Y1NDdkMjUxNmUuLmY2MDZmYTIz
MjQ5YTZjMTFhZmY5ZjAzOWNiMjY5NjU5N2U2ZWZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IG1fbGFzdENoYXJhY3RlckluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFz
dENoYXJhY3RlckluZGV4OwogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlckluZGV4IHsg
MCB9OwogICAgIGZsb2F0IG1fbGVmdG92ZXJKdXN0aWZpY2F0aW9uV2lkdGggeyAwIH07CiAgICAg
ZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAppbmRleCA2YTZkMjJkODFmYTkyMTk5YzE1MTI0Mjg5YTc4YmE3NmMwNGE4NTYyLi5mMDVi
MGU1MDQzNjAyODJkZGRlMjg2YjRhZWQzYjI5YjgwNGE0MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygp
CiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKQEAgLTUwOSw3ICs1
MDksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZUltcGwo
KQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKICAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJH
TDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5h
bnRpYWxpYXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmlu
ZGV4IDRiMmY4MTQ2ZTRlYjNlYzY5YmZmYTcwNWYxZjZhOGY3ZTNmYmVkZTYuLjlmYzU3MDNlYzQ1
MGVhMjE3NWU5MThlNmUyZjc5Y2MxMTA5YWMwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMTMzLDggKzEzMyw4IEBAIHN0YXRpYyBTY2hlbWVBbmRL
ZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmCiAgICAgU2NoZW1lQW5kS2V5UmVzdWx0IHJlc3VsdDsKICAgICBmb3IgKGF1dG8mIGJ1
ZmZlciA6IGJ1ZmZlcnMpIHsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICAgICAg
T3B0aW9uYWw8Rm91ckNDPiBzY2hlbWU7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4ga2V5SUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm91ckNDPiBzY2hlbWU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBrZXlJRDsKIAogICAgICAgICBhdXRvIHZp
ZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
LCBvZmZzZXQsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgd2hpbGUgKGF1dG8gb3B0aW9uYWxC
b3hUeXBlID0gSVNPQm94OjpwZWVrQm94KHZpZXcsIG9mZnNldCkpIHsKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRz
ID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKQEAgLTE5OCw3ICsxOTgs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNh
bml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlcgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwog
fQogCi1PcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBr
ZXkgSUQuCiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CkBAIC00MjgsNyAr
NDI4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gcmVzcG9uc2UuY29w
eSgpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lv
bklkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCAyMGQ0
OWY3YjAxY2U1NDMyYzJmOTgzZjVlNWI2NmNhZGM1ZWUyMzQ5Li4xNDk3NDM5MGY0MGIwM2EwY2I2
ZTU1OWM5ZTZjMGZlMDk4YTA0MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaApAQCAtNzMsMTQgKzczLDE0IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJl
YW1pbmdTY2hlbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCBkODFiY2EzNTQ5MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAx
YjE1Li4xYjc2M2RkODRhMzhkNzVhYTc1NDRlNDQ5OTQ3ZmI2Y2ZkYjExZTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICAgVmVjdG9y
PGludD4gcHJvdG9jb2xzOwogICAgIH07Ci0gICAgc3RhdGljIE9wdGlvbmFsPEtleVN5c3RlbVBh
cmFtZXRlcnM+IHBhcnNlS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxLZXlTeXN0ZW1QYXJhbWV0ZXJzPiBwYXJzZUtleVN5c3RlbShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgCiAgICAgTGVnYWN5Q0RNKiBtX2NkbTsKICAg
ICBWZWN0b3I8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyo+IG1fc2Vzc2lvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4
IDE1MzE2OTFmMzc4MWUxZmZlYzA4ZGZkNzQ3YzE3ZmU2MGJlNGFmNmYuLjg2MDI1ZjJhN2IxODU3
OGQ0N2M4MDg5NTE1ZDMxY2FkOWUxYzYxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYXV0
byBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXJzZUtleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkgLT4gT3B0aW9uYWw8S2V5U3lzdGVtUGFyYW1ldGVycz4KK2F1dG8gQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFyc2VLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pIC0+IHN0ZDo6b3B0aW9uYWw8S2V5U3lzdGVtUGFyYW1ldGVycz4KIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29t
XFwuYXBwbGVcXC5mcHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIEpTQzo6WWFycjo6VGV4dENh
c2VJbnNlbnNpdGl2ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guaAppbmRleCAxNDdjMzc5ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1
YWZkLi40ZGFkZDdkMjFlNzFlNGYyOTI5NTQwYTYzNDFiODRjZTEyNWU1ZmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBs
YXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC05MywxNyAr
OTMsMTcgQEAgcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAiZnBzayI7IH0KIAogICAgIGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdElu
Zm9Cb3gmIHJlcXVlc3RJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SW5mbzsgfQotICAg
IGNvbnN0IE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveD4mIGFzc2V0
SUQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2V0SUQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJU09G
YWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3g+JiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlW
ZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlz
dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3Nl
dElkQm94PiYgYXNzZXRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzZXRJRDsgfQorICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94PiYgY29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkgY29u
c3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2Uo
SlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBtX3JlcXVlc3RJbmZvOwotICAgIE9wdGlv
bmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveD4gbV9hc3NldElEOwotICAgIE9w
dGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveD4gbV9jb250ZXh0OwotICAg
IE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVyc2lv
bkxpc3Q7CisgICAgc3RkOjpvcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRC
b3g+IG1fYXNzZXRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
Q29udGV4dEJveD4gbV9jb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmNwcAppbmRleCBjOTc5ZWI1NzI3ZGJjMzk2MTcyNWIwNTdjN2IxYTJhMmYzZmFjYmE4Li4xZTYy
Y2NmN2E1YTM3YTM5NWU1M2YyMzNlNjY5NWMyNzM0NDg2YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC02NCw3ICs2NCw3IEBAIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKCkKICAg
ICBkaXNjb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFr
ZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KENGQXJyYXlSZWYgY29sb3JBcnJheSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNG
QXJyYXkoQ0ZBcnJheVJlZiBjb2xvckFycmF5KQogewogICAgIGlmIChDRkFycmF5R2V0Q291bnQo
Y29sb3JBcnJheSkgPCA0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKaW5kZXggYjFhYTVkZmU1YWE4ZDQ4NjdkNzUyYjRmNGE1YWM4ZjNjNWI3Y2I3
YS4uYmM2NTg3ZTJjODk2NGY3MWU1ZjRhNjUzYjBiYmNiMmQ1NjU0MzFiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oCkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5z
dXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGlj
ZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKE9wdGlv
bmFsPFBsYXRmb3JtRGlzcGxheUlEPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgS2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0g
c3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250
ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPENE
TUtleVN0YXR1cz4gcHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1
ZXN0ICosIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPikgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxDRE1LZXlTdGF0dXM+IHByb3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQoQVZDb250ZW50
S2V5UmVxdWVzdCAqLCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPikgY29uc3Q7CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CkBAIC0yMDcsNyArMjA3LDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1faW5z
dGFuY2U7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcG9ydEdyb3VwPiBtX2dyb3VwOwog
ICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgT3B0aW9u
YWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+
IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNEYXRhPj4g
bV9leHBpcmVkU2Vzc2lvbnM7CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+
IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA4NzhmNzIyNTg4MTg4Mzc3
NzlmNGNmYjQ3MDk0YTc5ODE2YzgwZjMwLi42YjliZjIxMGE3MTkyMjc3ZTgxOTRlOTA0ZDk1YWNl
OGRmZTYxMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjg2LDcgKzI4Niw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBLZXlUeXBlID0gUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVl
c3Q+OwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFJldGFpblB0cjxOU0RhdGE+OwogICAgIHVzaW5n
IFJlc3BvbnNlTWFwID0gSGFzaE1hcDxLZXlUeXBlLCBWYWx1ZVR5cGU+OwotICAgIHVzaW5nIFVw
ZGF0ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPFJlc3BvbnNlTWFwPiYm
KT47CisgICAgdXNpbmcgVXBkYXRlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxSZXNwb25zZU1hcD4mJik+OwogICAgIFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yKHNp
emVfdCBudW1iZXJPZkV4cGVjdGVkUmVzcG9uc2VzLCBVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgICAgICA6IG1fbnVtYmVyT2ZFeHBlY3RlZFJlc3BvbnNlcyhudW1iZXJPZkV4cGVjdGVk
UmVzcG9uc2VzKQogICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCkBAIC04
MDksNyArODA5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIG1fdXBk
YXRlUmVzcG9uc2VDb2xsZWN0b3IgPSBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgbV91
cGRhdGVSZXNwb25zZUNvbGxlY3RvciA9IFdURjo6bWFrZVVuaXF1ZTxVcGRhdGVSZXNwb25zZUNv
bGxlY3Rvcj4obV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLnNpemUoKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoT3B0aW9uYWw8VXBkYXRlUmVzcG9uc2VD
b2xsZWN0b3I6OlJlc3BvbnNlTWFwPiYmIHJlc3BvbnNlcykgeworICAgICAgICBtX3VwZGF0ZVJl
c3BvbnNlQ29sbGVjdG9yID0gV1RGOjptYWtlVW5pcXVlPFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9y
PihtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuc2l6ZSgpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChzdGQ6Om9wdGlvbmFsPFVwZGF0ZVJlc3BvbnNlQ29s
bGVjdG9yOjpSZXNwb25zZU1hcD4mJiByZXNwb25zZXMpIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDE0LDcgKzE0MTQsNyBAQCBz
dGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1TdGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0
YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1
c2VzKE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpIGNvbnN0CitDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+IGRpc3BsYXlJRCkgY29uc3QKIHsKICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7
CiAKQEAgLTE0NjAsNyArMTQ2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuCiAgICAgdXBk
YXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChtX2NsaWVudC0+ZGlzcGxheUlEKCkpOwog
fQogCi1PcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlS
ZXF1ZXN0ICpyZXF1ZXN0LCBPcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlEKSBj
b25zdAorc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRl
bnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBk
aXNwbGF5SUQpIGNvbnN0CiB7CiAjaWYgSEFWRShBVkNPTlRFTlRLRVlSRVFVRVNUX1BFTkRJTkdf
UFJPVEVDVElPTl9TVEFUVVMpCiAgICAgaWYgKFtyZXF1ZXN0IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZXh0ZXJuYWxDb250ZW50UHJvdGVjdGlvblN0YXR1cyldKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggNTgzNjJkYmQyY2MwN2Qw
MWRkZWE2ZTg5MzJkZDQ4ZjcxOGYyOGE5NS4uYTI4ZDRjNDMwMWU2NzI1MDkyOThmNTNjZTdjN2Qy
OTRjZjE3OTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1dGkoKSBjb25zdCBmaW5hbDsK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIEludFNpemUgZnJhbWVT
aXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0KSBjb25zdCBmaW5hbDsKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIERl
Y29kZU9yZGVyU2FtcGxlTWFwOjppdGVyYXRvciBtX2N1cnNvcjsKICAgICBMb2NrIG1fc2FtcGxl
R2VuZXJhdG9yTG9jazsKICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9Owot
ICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+
IG1fc2l6ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCmluZGV4IGI0MTJkNWRiZGM1NWU2ODJlM2YwMmNlOTU5N2NkMDgzM2RiNGU0Njku
LjMwZWVhYWEzNTc0ZDVjZjU3NTMyNTY5NmE1YWRlOTg2ZDg5YmZjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjUyLDcgKzI1Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9oYXNBbHBoYSA9IGFscGhhSW5mbyAhPSBrQ0dJbWFnZUFscGhh
Tm9uZSAmJiBhbHBoYUluZm8gIT0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCAmJiBhbHBoYUlu
Zm8gIT0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3Q7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8Qnl0
ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFBBTDo6
Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKG1fc2FtcGxlLmdldCgpKQogICAgICAgICAgICAg
fHwgUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDc1ZmRjNmFhYzZhYjM1Y2U2NGI4Mjc4Y2I1MDBiM2RhNjAz
NTMyNTguLmM0MjQ4YzlkYjU0ODc4ZmYwODRjYzM5YTM1YjMwMmZhMmFmYjkzYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTIyNCw3ICsyMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlVmlkZW9MYXllckdyYXZpdHkoKSBmaW5hbDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nl
c3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5h
bDsKIAogICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25zdCBmaW5hbDsKIApAQCAtMzA3
LDcgKzMwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9v
bCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVSb3RhdGlvblNlc3Npb24oKTsKIAotICAgIE9wdGlv
bmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CkBAIC0zOTcs
NyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgbV9jYWNoZWREdXJhdGlvbjsKICAg
ICBtdXRhYmxlIE1lZGlhUGxheWVyOjpDdXJyZW50VGltZURpZENoYW5nZUNhbGxiYWNrIG1fY3Vy
cmVudFRpbWVEaWRDaGFuZ2VDYWxsYmFjazsKICAgICBtdXRhYmxlIE1lZGlhVGltZSBtX2NhY2hl
ZEN1cnJlbnRNZWRpYVRpbWU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxXYWxsVGltZT4gbV93YWxs
Q2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1f
dGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUg
ZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKQEAgLTQxOCwxMCArNDE4LDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkQXNzZXRJc0xvYWRlZCB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxi
b29sPiBtX2NhY2hlZEFzc2V0SXNQbGF5YWJsZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9jYWNoZWRBc3NldElzUGxheWFibGU7CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fc2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzIHsgZmFsc2UgfTsK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fdHJhY2tzQXJlUGxheWFibGU7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdHJhY2tzQXJlUGxheWFibGU7CiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBtdXRhYmxlIGJvb2wgbV9hbGxvd3NXaXJl
bGVzc1ZpZGVvUGxheWJhY2sgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDc4N2NhNDVl
MzZhYzQxMjVmMjI1ZjUzNGQxNzIzZTU1YThmMDhiMzAuLjkyMWNhZTg4Yjg0NzlhNmUwYjNhNWU5
Y2NhOGIyNzExZmFiMDNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM1Miw3ICsy
MzUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFs
PGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9v
bD4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d291bGRUYWludE9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAogewogICAgIEFWQXNzZXRSZXNvdXJj
ZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXI7
CiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxT
ZXNzaW9uRW5hYmxlZCgpCkBAIC0zNDE4LDcgKzM0MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3VsZERpc2FibGVTbGVlcChib29sIGZsYWcpCiAj
ZW5kaWYKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3Mo
KQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7
CiAgICAgaWYgKCFbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iodmlk
ZW9QZXJmb3JtYW5jZU1ldHJpY3MpXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMmU4YjY4NTQ0M2UwNjM3YzU4NDYyYjM3YmRhYjYy
ZGFjZGE4MzE4Ny4uOTAwMTUxNjk5ZGE4MDcwZmU3N2JlNzE0N2M0ZjU4N2JiZTdhYzAyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogCiAg
ICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9u
YWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGJvb2wgaXNDdXJyZW50UGxheWJhY2tU
YXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CmluZGV4IDdkYTVkMzhkOTJmYzc4ZmFjMGU1YjlhZWI3YzgyZjBlYWQ0MjUxY2EuLjVhNjlhYTY3
OTUxODljYjRlMDc2ZDMxOTQ2OWY5OTY1MDRmZjk0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KQEAgLTcyNCw3ICs3MjQsNyBAQCBzaXplX3QgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
Ci1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6
b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAg
aWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsKICAgICAgICAgcmV0dXJuIFZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IGE0ZWFlM2Mz
YjZmZjRhMGI0OGVmMzA4ZTk5MDU4MTZjODFiYmQwN2IuLjIyYTZhZWE4YjE2NGZhMGYxNjZlZWE1
ODZkZDE4MjZiOGEyZTQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZvbHVtZSB7IDEgfTsKICAgICBEaXNwbGF5
TW9kZSBtX2Rpc3BsYXlNb2RlIHsgTm9uZSB9OwogICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFj
a1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwotICAgIE9wdGlvbmFsPENHQWZmaW5lVHJh
bnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOworICAgIHN0ZDo6b3B0aW9uYWw8Q0dBZmZpbmVUcmFu
c2Zvcm0+IG1fdmlkZW9UcmFuc2Zvcm07CiAKICAgICAvLyBVc2VkIG9uIGJvdGggbWFpbiB0aHJl
YWQgYW5kIHNhbXBsZSB0aHJlYWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IGU2NDI2N2IxOTQyZjJhNTg1OWFmMWE3
YTEzZWRkNWY2NDY2YjUxMDEuLmQwM2NkYzhkZDYyNTQxNjA5OWE1MzcxMzVlZTExZWM5MTA3MzZh
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRp
bWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxN
ZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3RyaW5nUmVm
IGtleSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBi
eXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3RyaW5nUmVmIGtleSkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSA9IGRlZmF1bHQ7CiAgICAgUmV0YWluUHRyPENNU2Ft
cGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbQppbmRleCA3ZDZkNTBhNWNmZWFjNWVhNzlkNzA4NTNjMDZiMGQyYWRkNDg5
NzcyLi4xY2E4ZWZlZWQwYmY4NDM5ZDczZTY0NDc1YTI5OTM1YWE0YWMwMDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC00NjQsNyArNDY0LDcg
QEAgc3RhdGljIENGU3RyaW5nUmVmIGJ5dGVSYW5nZU9mZnNldEF0dGFjaG1lbnRLZXkoKQogICAg
IHJldHVybiBrZXk7CiB9CiAKLU9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlh
U2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1w
bGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2UoKSBjb25zdAogewog
ICAgIHJldHVybiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KGJ5dGVSYW5nZU9mZnNldEF0dGFjaG1l
bnRLZXkoKSk7CiB9CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6
OnNldEJ5dGVSYW5nZU9mZnNldChzaXplX3QgYnl0ZU9mZnNldCkKICAgICBQQUw6OkNNU2V0QXR0
YWNobWVudChtX3NhbXBsZS5nZXQoKSwgYnl0ZVJhbmdlT2Zmc2V0QXR0YWNobWVudEtleSgpLCBv
ZmZzZXROdW1iZXIuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CiB9
CiAKLU9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6
Ynl0ZVJhbmdlRm9yQXR0YWNobWVudChDRlN0cmluZ1JlZiBrZXkpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdl
Rm9yQXR0YWNobWVudChDRlN0cmluZ1JlZiBrZXkpIGNvbnN0CiB7CiAgICAgYXV0byBieXRlT2Zm
c2V0Q0YgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KFBBTDo6Q01HZXRBdHRhY2htZW50
KG1fc2FtcGxlLmdldCgpLCBrZXksIG51bGxwdHIpKTsKICAgICBpZiAoIWJ5dGVPZmZzZXRDRikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCmluZGV4IDQyZDFlMWQzODFlM2U2OTcwZjg3MTNiZTc5OWRhNmRjZjcwNWMwYzkuLmMyNmZm
Y2I4MzExMWVkMDZhZGM5Mjk0ZTZlZmM3MmJlMjQ0NWU3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc2LDcgKzE3
Niw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgRm91ckNoYXJDb2RlIG1fb3JpZ2luYWxDb2Rl
YzsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IG1fY29kZWM7CiAgICAgYm9vbCBtX2lzVmlkZW87
CiAgICAgYm9vbCBtX2lzQXVkaW87CiAgICAgYm9vbCBtX2lzVGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDg4NGIw
YjI2MzZmNmY0ODQ2MjM2NmQ5MWNlMjQ5NmMxYmI0OTk5YzQuLjdkZTVhY2I5ODY5ZGM4OThjMDJi
MTRiYmZkNjBhYjE5ZDc3MDJlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCi0gICAg
T3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBi
b29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2FpdGluZ0Zvcktl
eSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZDAyODYzZjJlN2FjYTRiZjdmNGY0NjJkYWVhYjBi
MjUyOWE0MWVhYS4uYjJkZDVkZjRmNzhhMzdhZjhiYzk5YWFlNWUxNjk3MjRhOThhMTgyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwcml2YXRlOgogICAgICAgICB7IH0KIAogICAg
ICAgICBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJp
bmcobV9uYW1lLCAnXycsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Byb3BlcnR5KSwgJ18nLCBt
X2luZGV4LCAnXycsIG1fc3ViSW5kZXgpOyB9Ci0gICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IGNv
bXB1dGVkQmVnaW5UaW1lKCkgY29uc3QKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBj
b21wdXRlZEJlZ2luVGltZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2Jl
Z2luVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fYmVnaW5UaW1lIC0gbV90aW1lT2Zm
c2V0OwpAQCAtNTAwLDcgKzUwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBtX2luZGV4Owog
ICAgICAgICBpbnQgbV9zdWJJbmRleDsKICAgICAgICAgU2Vjb25kcyBtX3RpbWVPZmZzZXQgeyAw
X3MgfTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9iZWdpblRpbWU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9iZWdpblRpbWU7CiAgICAgICAgIFBsYXlTdGF0ZSBtX3Bs
YXlTdGF0ZSB7IFBsYXlTdGF0ZTo6UGxheVBlbmRpbmcgfTsKICAgICAgICAgYm9vbCBtX3BlbmRp
bmdSZW1vdmFsIHsgZmFsc2UgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRmYmFhN2ZiZGFh
MTQ3NDQ2M2MzZTg4ZDZmZGM4NWFmNTNlNWMxMTYuLjliOWUyMGYyZmIzODMyY2FiMjAxNTZkMTBj
ZGRlNzM3NTY4OGM1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFRp
bGVDb250cm9sbGVyOjpzZXRWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
dXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiB9CiAKLXZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldExh
eW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCit2b2lkIFRpbGVDb250
cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJl
Y3QpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRWaWV3cG9ydFJlY3QpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oCmluZGV4IDY4ODcwOTNlM2MzMTA5NTA3YjMxOWU0MWMxYThkMzk0ZGNhZmVh
MDYuLmM0OWNjZjk4YTRhMzU5Mjk0NzdkOWVmNzQxNGY3ZmIzZmY5Y2JkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApA
QCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Zpc2libGVSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGNvdmVy
YWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY292ZXJhZ2VSZWN0OyB9Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xh
eW91dFZpZXdwb3J0UmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRW
aWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0UmVjdDsgfQogCiAg
ICAgdm9pZCBzZXRUaWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRGb3JUZXN0aW5nKGJvb2wpIGZp
bmFsOwogCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRpbGVkQmFja2lu
ZyBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8Rmxv
YXRSZWN0PikgZmluYWw7CisgICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+KSBmaW5hbDsKICAgICB2b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRUaWxlZFNjcm9s
bGluZ0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBmaW5hbDsKQEAgLTIxNCw3
ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIaXN0b3JpY2FsVmVsb2Np
dHlEYXRhPiBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGE7IC8vIFVzZWQgd2hlbiB3ZSB0cmFjayB2
ZWxvY2l0eSBpbnRlcm5hbGx5LgogCiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9u
bHkgdXNlZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBtX2xheW91dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBz
Y3JvbGxpbmcgaW5kaWNhdG9yLgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xheW91
dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5kaWNh
dG9yLgogICAgIEZsb2F0UmVjdCBtX2NvdmVyYWdlUmVjdDsKICAgICBJbnRSZWN0IG1fYm91bmRz
QXRMYXN0UmV2YWxpZGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmlu
ZGV4IGQyYzg5ZTRhYTk0Y2RlYzBjMzFjN2I5MzNmNjMzOWFlYTU4NTI5ODguLmUwZTlhYTdkMDM3
NTY5ZWVmYzQxODJhNzBjNjZlN2NkZGZiYzA1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjp0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJgog
ICAgIH0KIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwg
UHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVk
SW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2Uu
aXNFbXB0eSgpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsCiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2
NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwogfQog
Ci1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8
dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBBU1NF
UlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
bWltZVR5cGUpKTsKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9fZ2V0X3Rhcmdl
dChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmgKaW5kZXggN2I3MDc5ZTg4YWZjNmFlYzE1OTJiZGM2YmFjZjE3YzJmYjJmNTI5
ZS4uMjRiM2M0ZGM1NmZjZTcxMTZiYjg0MzkxYWIzMTAzNjM4YTM1NjJmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92
ZXJyaWRlOwogCi0gICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDliNWMwYWQwNzQ0NTE4ODBkZWZkZDNjNDg5
MmU0ZjczYzI4NjQyYzkuLmFkNzE2YjhjNjNiMmFjMDRhOWIzMjBlMDIwY2Y1YTY1YzEzZGQ5MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkKICAgICByZXR1cm4gY29weU5h
dGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCAwMzcwNzg3YjY5OTljZmRlMDZhZTBmYTFj
ZDA2NjYxMzkxNTcyMzljLi4wNjQyMjk3MDM2NzYwZTU5MjQ0NjdjOWY5OGRiM2YxMDUzOTAxNTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3Jt
YXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q2Fpcm8uY3BwCmluZGV4IDVhNGQzYTUwODU5YTVlODQ0YzdmNDI0MTMwNjkxNzE0ODAyYjAxYzcu
LjRkYjYwM2E5NGYzYWYxYjFiY2U5NGFiMGYxYWUzNjA1NGMwMDRmY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29s
IGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFZlY3Rvcjx1CiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVh
bShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUzsK
IH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPikKK1ZlY3Rvcjx1aW50OF90PiBkYXRh
KGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlOwogICAg
IGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgJmVuY29kZWRJbWFn
ZSkpCkBAIC03Myw3ICs3Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2Vf
dCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvCiAgICAgcmV0dXJu
IGVuY29kZWRJbWFnZTsKIH0KICNlbHNlCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNp
emUpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5p
cXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6ZSYgYnVmZmVyU2l6ZSkKIHsKICAgICAvLyBM
aXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBlbmNvZGluZyB0eXBlcyBjb21lcyBmcm9tIHRoZSBHZGtQ
aXhidWYgZG9jdW1lbnRhdGlvbi4KICAgICAvLyBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9n
ZGstcGl4YnVmL3N0YWJsZS9nZGstcGl4YnVmLUZpbGUtc2F2aW5nLmh0bWwjZ2RrLXBpeGJ1Zi1z
YXZlLXRvLWJ1ZmZlcnYKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFn
ZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlv
bgogICAgIHJldHVybiAhZXJyb3I7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewog
ICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGJ1ZmZlcjsKICAgICBnc2l6ZSBidWZmZXJTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oCmluZGV4IDAwNzRjODMwZWI5YzI3NjU1
MDBiNmNjNTM2M2YxOWU3YWIwMDUwNmYuLjA1YzNjYTIxODk1OWJkNjIwYjU2MWQyMjJlOTA0ZmNm
YzY5ODdjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgKQEAgLTM4LDcg
KzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8dWludDhfdD4gZGF0YShj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpOworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9fc3VyZmFjZV90KiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggNTFlMGE4YzBlNjRjMzE0YWVhNmYyNWRlNGEyOTE0Yzlk
MTUxNzliNy4uZGFiYzdlNzczNDAwNTUwNDUxZjI3MDRlMTFjODE4ZmNjNmQyYzg1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTU0
LDcgKzU0LDcgQEAgUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJD
b3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+PjoKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JB
TG9zc3koQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAg
Ly8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Igc3BhY2VzLgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggYmIwNTYzN2FlZjVjYjVhOTVmYmY4ZjdjNDBl
N2I2M2YwMjIxMWQ2Ni4uYzEyYjJmODBjMGIzMjI4Yzg2MTVmM2I4ODdhYTFlOGVmYTA1YTI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGluZyhD
RlN0cmluZ1JlZiBkCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1h
Z2UoY29udGV4dC5nZXQoKSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkg
Y29uc3QKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgQVNTRVJUX0lNUExJRVMoIWlz
SW5HUFVQcm9jZXNzKCksIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CkBAIC0yMjcsNyArMjI3LDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG8KICAgICByZXR1cm4gV2ViQ29yZTo6ZGF0YShpbWFnZS5nZXQoKSwgZGVzdGlu
YXRpb25VVEkuZ2V0KCksIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitTdHJp
bmcgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgQVNT
RVJUX0lNUExJRVMoIWlzSW5HUFVQcm9jZXNzKCksIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
aAppbmRleCBjMjQ1ZTk0ZmFjMTEzZDVhZTk4NmZjY2JhNzNhN2Y3OWUwZTgzYmRjLi4wNzY5OWQ3
NzAxMmRjODkwNTkwYzVjOGYxZTdiNDU4ZjdkMjhkZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgK
QEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAg
IFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3Rv
cjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZs
dXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCmluZGV4IDY4NjVmMGJkNDFiYjQ4NDYwZGJhMWY0ZjZiYTU4MDc4NGNjYWVl
NjEuLjUwMDk3NzJkMGIyODU0OWU4NDllODY3ZmQwMTNjZDVjZGZlYWQ4MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fZGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCAwODk3M2YzODE4OWFlNmI2MGY4
MjgwZDAwMzI1ZGJiNDgwYmFlMmY0Li5jODkwZTlmZThmMmU4NjRmNTBiNjg4OWM5ZWI0ZjBmNTg3
MmJiOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHVibGljOgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9y
bWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNP
cmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmNwcAppbmRleCAwYzcwNmQxODMzOTVkOTU5NjhmYmZiZmM2Yzk3NDA5ZmQ1Yjg5MjIz
Li4wN2EyMDJhMWUzNDg1ZTdiYTUyMDQyN2YwYmYyYjRiZmYyZjFlNzQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVu
Y29kaW5nKENGU3RyaQogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1h
Z2VGb3JFbmNvZGluZyhkZXN0aW5hdGlvblVUSSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKIHsKICAgICBJ
T1N1cmZhY2U6OkxvY2tlciBsb2NrKCptX3N1cmZhY2UpOwogICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbG9jay5zdXJm
YWNlQmFzZUFkZHJlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4
IGVlOWRlZmMyMDg0NzVmYmZiOGU1MWJiN2FmYTQ3MmU4NjY3Zjg1M2MuLjgzYWVjOGNkOTI2ZGM1
NWYxZDY4MjliYjUxMzI4NjNhNTIxMTA3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAK
LSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNJblVzZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCAxMmIzZTQ2NTFmNDY4
MTc5ZDFhNjY2M2UzYjkwNTBlMDA5NTg0NjVjLi4yNzhiNzQwZTQ0NDIzMjkxNmFhYmU4NjI1NjA2
YWUzZDM4YzVjNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApAQCAtOTYsNyArOTYs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLXN0YXRpYyBib29sIGVuY29kZShDR0ltYWdlUmVmIGlt
YWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBjb25zdCBTY29wZWRMYW1iZGE8UHV0Qnl0ZXNDYWxsYmFjaz4mIGZ1bmN0aW9uKQorc3RhdGlj
IGJvb2wgZW5jb2RlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIGRlc3RpbmF0aW9uVVRJ
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5
dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKIHsKICAgICBpZiAoIWltYWdlIHx8ICFkZXN0aW5hdGlv
blVUSSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBi
b29sIGVuY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwg
T3B0aW9uYWw8ZG91YmxlCiAgICAgcmV0dXJuIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRl
c3RpbmF0aW9uLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVsQnVm
ZmVyJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKK3N0
YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVkTGFt
YmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZl
ciYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkCiAgICAgcmV0dXJu
IGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1bmN0
aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTb3VyY2VEZXNj
cmlwdGlvbj4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVUb1ZlY3RvcihTb3VyY2UmJiBz
b3VyY2UsIFNvdXJjZURlc2NyaXB0aW9uJiYgc291cmNlRGVzY3JpcHRpb24sIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSkKK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU291cmNl
RGVzY3JpcHRpb24+IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlVG9WZWN0b3IoU291cmNl
JiYgc291cmNlLCBTb3VyY2VEZXNjcmlwdGlvbiYmIHNvdXJjZURlc2NyaXB0aW9uLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0Owog
CkBAIC0xOTYsNyArMTk2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBT
b3VyY2VEZXNjcmlwdGlvbj4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiBlbmMKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNvdXJjZURl
c2NyaXB0aW9uPiBzdGF0aWMgU3RyaW5nIGVuY29kZVRvRGF0YVVSTChTb3VyY2UmJiBzb3VyY2Us
IFNvdXJjZURlc2NyaXB0aW9uJiYgc291cmNlRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJj
ZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+IHN0YXRpYyBTdHJpbmcgZW5jb2RlVG9EYXRh
VVJMKFNvdXJjZSYmIHNvdXJjZSwgU291cmNlRGVzY3JpcHRpb24mJiBzb3VyY2VEZXNjcmlwdGlv
biwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgZG9uZSBtb3JlIGVmZmljaWVudGx5IHdp
dGggYSBzdHJlYW1pbmcgYmFzZTY0IGVuY29kZXIuCiAKQEAgLTIwNywyMiArMjA3LDIyIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+IHN0YXRp
YyBTdHJpbmcgZW5jb2RlVG9EYXRhCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWlt
ZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2RlZERhdGEpKTsKIH0KIAotVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRp
b25VVEksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKENH
SW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIGRlc3RpbmF0aW9uVVRJLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICByZXR1cm4gZW5jb2RlVG9WZWN0b3IoaW1hZ2UsIGRl
c3RpbmF0aW9uVVRJLCBxdWFsaXR5KTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29uc3Qg
UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkpCitWZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBQaXhlbEJ1ZmZl
ciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KQogewogICAgIHJldHVybiBlbmNvZGVUb1ZlY3RvcihwaXhlbEJ1ZmZlciwg
bWltZVR5cGUsIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgZGF0YVVSTChDR0ltYWdlUmVmIGltYWdl
LCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJlZiBpbWFnZSwg
Q0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAgIHJldHVybiBlbmNvZGVUb0RhdGFVUkwo
aW1hZ2UsIGRlc3RpbmF0aW9uVVRJLCBtaW1lVHlwZSwgcXVhbGl0eSk7CiB9CiAKLVN0cmluZyBk
YXRhVVJMKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorU3RyaW5nIGRhdGFVUkwoY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICByZXR1cm4gZW5jb2RlVG9EYXRhVVJMKHBpeGVs
QnVmZmVyLCBtaW1lVHlwZSwgbWltZVR5cGUsIHF1YWxpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDRy5oCmluZGV4IDk5ODMxMTc5NTUzNzExN2Y4YzQ3NmFkYjNlMmUwZjAwN2M2OWI2MDkuLmVi
MWRiMjhhOTNmYzlkNDJlMjcxNmFkOTVhMmU1MmZlOTI0MTA0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxp
dGllc0NHLmgKQEAgLTM4LDExICszOCwxMSBAQCBXRUJDT1JFX0VYUE9SVCB1aW50OF90IHZlcmlm
eUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgYgogQ0ZT
dHJpbmdSZWYganBlZ1VUSSgpOwogUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tSW1hZ2VC
dWZmZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoQ0dJ
bWFnZVJlZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSk7Ci1WZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CitWZWN0b3I8dWludDhf
dD4gZGF0YShDR0ltYWdlUmVmLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpOworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29uc3QgUGl4ZWxC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSk7CiAKLVN0cmluZyBkYXRhVVJMKENHSW1hZ2VSZWYsIENGU3RyaW5nUmVmIGRlc3RpbmF0
aW9uVVRJLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
OwotU3RyaW5nIGRhdGFVUkwoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJl
ZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KTsKK1N0cmluZyBkYXRhVVJMKGNvbnN0IFBpeGVs
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA2NWM3
YTgyZDQ0ZGU4ZTA0NWI3YmQ4MGRmZjMwZDBiMWNkOWRjNGMwLi5iOGFlMmY3ZmM0Yjc1MjQ0Mzdl
YTYzZmFkNGRmOGE0N2ZjM2JmOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xODksNyArMTg5LDcgQEAg
c3RhdGljIGJvb2wgbWF5SGF2ZURlbnNpdHlDb3JyZWN0ZWRTaXplKENGRGljdGlvbmFyeVJlZiBp
bWFnZVByb3BlcnRpZXMpCiAgICAgICAgICYmIChyZXNvbHV0aW9uWCAhPSBJbWFnZVJlc29sdXRp
b246OkRlZmF1bHRSZXNvbHV0aW9uIHx8IHJlc29sdXRpb25ZICE9IEltYWdlUmVzb2x1dGlvbjo6
RGVmYXVsdFJlc29sdXRpb24pOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0
eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0
aWVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVG
cm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWVzKQogewogICAgIEFT
U0VSVChpbWFnZVByb3BlcnRpZXMpOwogICAgIGF1dG8gZXhpZkRpY3Rpb25hcnkgPSAoQ0ZEaWN0
aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQ
cm9wZXJ0eUV4aWZEaWN0aW9uYXJ5KTsKQEAgLTM4Nyw3ICszODcsNyBAQCBSZXBldGl0aW9uQ291
bnQgSW1hZ2VEZWNvZGVyQ0c6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAot
T3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKIHsKICAg
ICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0
SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQo
KSkpOwogICAgIGlmICghcHJvcGVydGllcykKQEAgLTUzMCw3ICs1MzAsNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaQogICAgICAgICAKICAgICAgICAgaWYgKGRlY29kaW5nT3B0aW9ucy5oYXNT
aXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgICAgICAvLyBTZWUgd2hpY2ggc2l6ZSBpcyBzbWFs
bGVyOiB0aGUgaW1hZ2UgbmF0aXZlIHNpemUgb3IgdGhlIHNpemVGb3JEcmF3aW5nLgotICAgICAg
ICAgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZUZvckRyYXdpbmcgPSBkZWNvZGluZ09wdGlvbnMu
c2l6ZUZvckRyYXdpbmcoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc2l6
ZUZvckRyYXdpbmcgPSBkZWNvZGluZ09wdGlvbnMuc2l6ZUZvckRyYXdpbmcoKTsKICAgICAgICAg
ICAgIGlmIChzaXplRm9yRHJhd2luZy52YWx1ZSgpLnVuY2xhbXBlZEFyZWEoKSA8IHNpemUudW5j
bGFtcGVkQXJlYSgpKQogICAgICAgICAgICAgICAgIHNpemUgPSBzaXplRm9yRHJhd2luZy52YWx1
ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA4MTQ5MGQ4OWRjOTc1OGY4MzI5MDY5MTA2Nzkz
N2FkMWRlNTI3NmYwLi45NzQwNzM2YTIxYWM5OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFN0cmluZyB1dGkoKSBjb25z
dCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsKICAg
ICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCBhOTc3
MTYzYTA5MzAzZGMxYTU3ZmVhMGIwZDRhMzg4YjMyMzIwOTdlLi5kZGRjYWNhN2ZlOTAwOTkwYjg4
NGM1MTRlYzAyODE3YzdhZmEwOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAK
QEAgLTUxLDE0ICs1MSwxNCBAQCBBdG9tU3RyaW5nIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6aWQo
KSBjb25zdAogICAgIHJldHVybiBtX3RyYWNrSUQ7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBB
dWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrVUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tVSUQoKSBjb25zdAogewogICAgIGlm
IChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNr
LnRyYWNrX3VpZC52YWx1ZSgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlv
bmFsPGJvb2w+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxib29sPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmRlZmF1bHRFbmFibGVk
KCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKICAg
ICAgICAgcmV0dXJuIG1fdHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJN
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uaAppbmRleCAxMjIyYzQ0OTdlMzk5ZmM5OTA1ZjRjZGNkNTM4MTA0NDg0MDIwMjAw
Li5iM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5MmQxYzdjNGJiNzQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1Ry
YWNrUHJpdmF0ZVdlYk0uaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgQXRvbVN0cmlu
ZyBsYWJlbCgpIGNvbnN0IGZpbmFsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBm
aW5hbDsKICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IGRlZmF1
bHRFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdHJh
Y2tVSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRlZmF1bHRFbmFi
bGVkKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVXZWJN
KHdlYm06OlRyYWNrRW50cnkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggODkxZGQ1
MzQzZTY5ZWVjZGRkZTA1MDFiZjY0ZTUzMzhiNDY2NTcwNy4uNzA0ZjJkYzJlOTgyNGQ5ZTgxYjI0
NTIzOGU5MDFhYjU2NzM0M2YwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtOTI0LDEy
ICs5MjQsMTIgQEAgc3RydWN0IE1pbk1heCB7CiB9OwogCiBzdHJ1Y3QgVmFyaWF0aW9uQ2FwYWJp
bGl0aWVzIHsKLSAgICBPcHRpb25hbDxNaW5NYXg+IHdlaWdodDsKLSAgICBPcHRpb25hbDxNaW5N
YXg+IHdpZHRoOwotICAgIE9wdGlvbmFsPE1pbk1heD4gc2xvcGU7CisgICAgc3RkOjpvcHRpb25h
bDxNaW5NYXg+IHdlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gd2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxNaW5NYXg+IHNsb3BlOwogfTsKIAotc3RhdGljIE9wdGlvbmFsPE1pbk1h
eD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYgYXhpcykKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlS
ZWYgYXhpcykKIHsKICAgICBDRk51bWJlclJlZiBtaW5pbXVtVmFsdWUgPSBzdGF0aWNfY2FzdDxD
Rk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9udFZhcmlhdGlvbkF4
aXNNaW5pbXVtVmFsdWVLZXkpKTsKICAgICBDRk51bWJlclJlZiBtYXhpbXVtVmFsdWUgPSBzdGF0
aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXhpcywga0NURm9udFZh
cmlhdGlvbkF4aXNNYXhpbXVtVmFsdWVLZXkpKTsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHN0YXRp
YyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKQogc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+
IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSwgQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgLy8gRklYTUU6
IFNlZSBjb21tZW50IGluIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0
KCkgaW4gRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCi0gICAgT3B0aW9uYWw8U3lzdGVtRm9udEtp
bmQ+IHN5c3RlbURlc2lnbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN5c3RlbUZvbnRLaW5kPiBzeXN0
ZW1EZXNpZ247CiAKICNpZiBIQVZFKERFU0lHTl9TWVNURU1fVUlfRk9OVFMpCiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgInVpLXNlcmlmIikpCkBAIC0xNDE2
LDcgKzE0MTYsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNo
YXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogICAgIHJldHVybiBmb250Rm9y
UGxhdGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwogfQogCi1PcHRpb25hbDxBU0NJSUxpdGVyYWw+
IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3Jt
QWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGhlaXRpU3RyaW5nW10gPSB7IDB4OWVkMSwgMHg0ZjUzIH07CiAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIHNvbmd0aVN0cmluZ1tdID0geyAweDViOGIsIDB4NGY1MyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERl
c2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IGYwMTZhNTI1YWZkZDY5OWE1MTNjM2Uw
YTlkM2RiNmQzZDFhNGZlNTMuLjVhNGVjZTY5MjgxYTdmNjYxYzI1M2ZmNzk1NjU2NzE3Nzk5OGNk
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc3RkOjpzaXplX3Qgc2l6ZT4gaW5saW5lIHN0
ZDo6YXJyYXk8VCwgc2l6ZT4gY28KICAgICByZXR1cm4gY29udmVydEFycmF5PFQ+KGFycmF5LCBz
dGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZT4geyB9KTsKIH0KIAotc3RhdGljIGlubGluZSBP
cHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJp
bmcmIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTeXN0ZW1Gb250S2luZD4g
bWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiLXdlYmtpdC1zeXN0ZW0tZm9u
dCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIi1h
cHBsZS1zeXN0ZW0iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0K
aW5kZXggZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZkOTZjNDJjMjMyN2NjZjQ5MS4uNzc5ZWJkMTg5
NmJjNTk2ZjcwMzMxOGI4ZThhMWUyYzczMDVmOTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiB7CiAgICAgYXV0
byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWluLT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYg
KCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGll
c0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRp
bGl0aWVzQ29jb2EuaAppbmRleCAzYWY0NmI1N2E0ZTBjNGM3YjU5ZTFkZjhlZjUzOWM1YzFlOTg3
OWI1Li44NTEyMjg1ODdmNzY0ZThiZGU2NzEyMWVhZDM2NmViZDg4YzNmZjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRp
bGl0aWVzQ29jb2EuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBNZWRpYUNhcGFiaWxpdGllc0luZm87CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYsIGJvb2wg
aGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBvcnQpOwotT3B0aW9uYWw8TWVkaWFDYXBhYmls
aXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiwg
Ym9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCk7CitzdGQ6Om9wdGlvbmFsPE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFy
YW1ldGVycyYsIGJvb2wgaGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBvcnQpOworc3RkOjpv
cHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29u
c3QgRG9WaVBhcmFtZXRlcnMmLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggYTg4ZmRlOTAxZjUyMjU5NDRl
ZjFhOTc0MGNhNTIzODc3MzFjZDA4OC4uZWFjZGY3MDEzNTIwMGRhODQyNzk3YzQwYzYyNTFiOWVj
NzU1NTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFs
aWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9v
bCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFD
YXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQog
ewogICAgIENNVmlkZW9Db2RlY1R5cGUgY29kZWMgPSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDOwog
ICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgQ01W
aWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUoRG9WaVBhcmFtZXRlcnM6OkNvZGVjIGNvZGVjKQogICAg
IH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50MTZfdD4+IHBhcnNlU3RyaW5nQXJy
YXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
LCBjb25zdCB2b2lkKiBrZXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDE2X3Q+
PiBwYXJzZVN0cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3RvcihDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSwgY29uc3Qgdm9pZCoga2V5KQogewogICAgIGF1dG8gdmFsdWUgPSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXkpOwogICAgIGlmICghdmFsdWUgfHwg
Q0ZHZXRUeXBlSUQodmFsdWUpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJheUZy
b21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0b3IoQwogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKLU9w
dGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVEb1ZpUGFyYW1ldGVycyhjb25z
dCBEb1ZpUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wg
aGRyU3VwcG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0
ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhh
c0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIGlmIChoYXNBbHBoYUNoYW5u
ZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAppbmRleCBkNWE2MzVmZDE0OGEx
YjE0MTdmOTkyZWUyNDJjYzc5OWI0NmQyYjQ2Li5hMGJhZWRlODhhNzU1NjgxZWEyYTRhMTdiYTNl
NmVkM2RmZGM3ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIENNVmlkZW9Db2Rl
Y1R5cGUgdmlkZW9Db2RlY1R5cGVGcm9tUkZDNDI4MVR5cGUoU3RyaW5nVmlldyB0eXBlKQogICAg
IHJldHVybiAwOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBj
b21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRp
ZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIE1lZGlhQ2FwYWJpbGl0aWVzSW5m
byBpbmZvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDVkYTNiNGJi
NjkwOTc3N2NjZGJkMWI5ZDc0YzZlNDBlMTc1ZDI1ZDcuLjMzM2E1ZjEwMTc1NzliNWQ4ZDViOGY4
Y2ZmYWZlMDVkMTY3MzhmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBA
IC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHdlYm06OlRyYWNrRW50cnkmIHRy
YWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogCiBwcml2YXRlOgotICAgIG11dGFibGUgT3B0aW9u
YWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXRvbVN0
cmluZz4gbV9jb2RlYzsKICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJhY2s7CiB9OwogCkBAIC0x
MDYwLDcgKzEwNjAsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25G
cmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIHJldHVybiB0cmFj
a0RhdGEtPmNvbnN1bWVGcmFtZURhdGEoKnJlYWRlciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5n
LCBDTVRpbWVNYWtlKGJsb2NrLT50aW1lY29kZSArIG1fY3VycmVudFRpbWVjb2RlLCBtX3RpbWVz
Y2FsZSksIGJsb2NrLT5udW1fZnJhbWVzKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxl
QnVmZmVyLCB1aW50NjRfdCB0cmFja0lELCBPcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNl
dCkKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cHJvdmlkZU1lZGlhRGF0YShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1ZmZlciwgdWludDY0X3QgdHJhY2tJRCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCkKIHsKICAgICBtX2NhbGxPbkNsaWVu
dFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNh
bXBsZUJ1ZmZlciA9IFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRCwgYnl0ZVJhbmdlT2Zm
c2V0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjaykKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9u
YWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCkKIHsKICAgICBpZiAobV9wYWNrZXREZXNjcmlw
dGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKaW5kZXggMzUxYWJmODE3NDUwYjMwYzcxYjRhMjA2N2FiNGU1MThjNTE1MWE0OS4uYmU4
YTE3YTE0N2FmZjkyNTViYWFjMGExZmVkMTIyMDFjZjIwZDM1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExv
Z2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZpbmFsOwog
Ci0gICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4s
IHVpbnQ2NF90LCBPcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCk7CisgICAgdm9pZCBw
cm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZVJhbmdlT2Zmc2V0KTsKIAogICAgIGVudW0gY2xhc3Mg
RXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJv
ckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAKICAgICAgICAgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwg
Y29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90
PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQgPSBzdGQ6Om51bGxvcHQpOworICAgICAgICB2b2lkIGNy
ZWF0ZVNhbXBsZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zm
c2V0ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJBdWRpb1RyYWNrRGF0YSI7IH0KQEAgLTIx
NSw4ICsyMTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlv
blRpbWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tldER1cmF0aW9uOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gbV9wYWNrZXREYXRhOwotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fY3VycmVu
dFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbV9jdXJyZW50UGFj
a2V0U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudFBhY2tldEJ5
dGVPZmZzZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2N1cnJlbnRQYWNrZXRT
aXplOwogICAgICAgICBzaXplX3QgbV9wYWNrZXRCeXRlc1JlYWQgeyAwIH07CiAgICAgICAgIHNp
emVfdCBtX2J5dGVPZmZzZXQgeyAwIH07CiAgICAgICAgIHNpemVfdCBtX3BhcnRpYWxCeXRlc1Jl
YWQgeyAwIH07CkBAIC0yNjksOCArMjY5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxVbmlx
dWVSZWY8VHJhY2tEYXRhPj4gbV90cmFja3M7CiAgICAgdXNpbmcgQmxvY2tWYXJpYW50ID0gVmFy
aWFudDx3ZWJtOjpCbG9jaywgd2VibTo6U2ltcGxlQmxvY2s+OwotICAgIE9wdGlvbmFsPEJsb2Nr
VmFyaWFudD4gbV9jdXJyZW50QmxvY2s7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5k
VG9Qb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50Qmxv
Y2s7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAg
IGZsb2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24geyAyIH07CiAKICAgICBDYWxsT25D
bGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxp
dGllc0NvY29hLmgKaW5kZXggN2NhNTQ5ZjhlOTBhZGRlY2ZhN2FhOGYzZmQyN2FhNmU2NzdlODg4
MS4uYzA1ZjZhZjY2ZjZkYTc3OTFjZTQwY2E3ZGQ0NDNmZGViZjVkMGM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5oCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJT
dXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpOwog
Ym9vbCBpc1ZQOERlY29kZXJBdmFpbGFibGUoKTsKIGJvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZFN1cHBvcnRlZChjb25zdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYpOwotT3B0
aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZVZQUGFyYW1ldGVycyhjb25zdCBW
UENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOwor
c3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlVlBQYXJhbWV0ZXJz
KGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiwgY29uc3QgVmlkZW9Db25maWd1cmF0
aW9uJik7CiAKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXRE
ZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyJiwgY29uc3Qgd2VibTo6RWxlbWVudDx3ZWJtOjpDb2xvdXI+Jik7CiAKQEAgLTY0LDI0
ICs2NCwyNCBAQCBzdHJ1Y3QgVlA4RnJhbWVIZWFkZXIgewogICAgIGJvb2wgbmVlZHNDbGFtcGlu
ZyB7IGZhbHNlIH07CiB9OwogCi1PcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFt
ZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpOworc3RkOjpvcHRp
b25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURh
dGEsIHNpemVfdCBmcmFtZVNpemUpOwogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcihjb25zdCBWUDhGcmFtZUhlYWRl
ciYsIGNvbnN0IHdlYm06OkVsZW1lbnQ8d2VibTo6Q29sb3VyPiYpOwogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBWUDlUZXN0aW5nT3ZlcnJpZGVzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgVlA5VGVz
dGluZ092ZXJyaWRlcyYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHNldEhhcmR3YXJlRGVjb2Rl
ckRpc2FibGVkKE9wdGlvbmFsPGJvb2w+JiYpOwotICAgIE9wdGlvbmFsPGJvb2w+IGhhcmR3YXJl
RGVjb2RlckRpc2FibGVkKCkgeyByZXR1cm4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsgfQor
ICAgIHZvaWQgc2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiYm
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhcmR3YXJlRGVjb2RlckRpc2FibGVkKCkgeyBy
ZXR1cm4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsgfQogCi0gICAgdm9pZCBzZXRWUDlTY3Jl
ZW5TaXplQW5kU2NhbGUoT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4mJik7Ci0gICAgT3B0
aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlKCkgIHsgcmV0
dXJuIG1fc2NyZWVuU2l6ZUFuZFNjYWxlOyB9CisgICAgdm9pZCBzZXRWUDlTY3JlZW5TaXplQW5k
U2NhbGUoc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhT3ZlcnJpZGVzPiYmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IHZwOVNjcmVlblNpemVBbmRTY2FsZSgpICB7IHJl
dHVybiBtX3NjcmVlblNpemVBbmRTY2FsZTsgfQogCiAgICAgdm9pZCBzZXRDb25maWd1cmF0aW9u
Q2hhbmdlZENhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAg
ICBPcHRpb25hbDxib29sPiBtX2hhcmR3YXJlRGVjb2RlckRpc2FibGVkOwotICAgIE9wdGlvbmFs
PFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVuU2l6ZUFuZFNjYWxlOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVuU2l6ZUFuZFNjYWxlOwogICAgIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLm1tCmluZGV4IDZlZWQwMTZmMGJkZTA5MjQ0MjY4MDc4ZGJlY2UwNDhiMzAx
ZDdlMDUuLmU5Zjg2ZGVhNDM4ZTg5NWU2M2RiZGUwN2M0ZDk1ZjliNWFlZjE4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLm1tCkBAIC01NiwxNCArNTYsMTQgQEAgVlA5VGVzdGluZ092ZXJyaWRlcyYg
VlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKLXZvaWQgVlA5VGVzdGluZ092ZXJyaWRlczo6c2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQo
T3B0aW9uYWw8Ym9vbD4mJiBkaXNhYmxlZCkKK3ZvaWQgVlA5VGVzdGluZ092ZXJyaWRlczo6c2V0
SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGRpc2FibGVkKQog
ewogICAgIG1faGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQgPSBXVEZNb3ZlKGRpc2FibGVkKTsKICAg
ICBpZiAobV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrKQogICAgICAgICBtX2NvbmZpZ3Vy
YXRpb25DaGFuZ2VkQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBWUDlUZXN0aW5nT3ZlcnJpZGVzOjpz
ZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4mJiBv
dmVycmlkZXMpCit2b2lkIFZQOVRlc3RpbmdPdmVycmlkZXM6OnNldFZQOVNjcmVlblNpemVBbmRT
Y2FsZShzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+JiYgb3ZlcnJpZGVzKQogewog
ICAgIG1fc2NyZWVuU2l6ZUFuZFNjYWxlID0gV1RGTW92ZShvdmVycmlkZXMpOwogICAgIGlmICht
X2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2spCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBp
c1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvbnN0IFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkJiBjb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZp
Z3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3QgVmlkZW9Db25maWd1cmF0
aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNv
cmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0Nv
bmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3Vw
cG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC02MTAsNyArNjEwLDcgQEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb24KICAgICByZXR1cm4g
Y3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVj
b3JkLCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpKTsKIH0KIAotT3B0aW9uYWw8VlA4
RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXpl
X3QgZnJhbWVTaXplKQorc3RkOjpvcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFt
ZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCiB7CiAgICAgLy8g
VlA4IGZyYW1lIGhlYWRlcnMgYXJlIGRlZmluZWQgaW4gUkZDIDYzODY6IDxodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNjM4Nj4uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3Bw
CmluZGV4IDNlYjI4MTg2MDgwMjBmOWY0MGE0ODg2ZTI2NWY1NGU2ZmYyZGMzNWYuLjMwZjgzMWJj
MWZlNGQ2MWQ0YmY2OTkwMDQ2N2IzNjNmYWM2MWVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZh
dGVXZWJNLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIEF0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZh
dGVXZWJNOjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhY2tJRDsKIH0KIAotT3B0aW9uYWw8
dWludDY0X3Q+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tVSUQoKSBjb25zdAorc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjp0cmFja1VJRCgpIGNvbnN0
CiB7CiAgICAgaWYgKG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQoKSkKICAgICAgICAgcmV0
dXJuIG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotT3B0aW9uYWw8Ym9vbD4gVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5hYmxl
ZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6ZGVm
YXVsdEVuYWJsZWQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJl
c2VudCgpKQogICAgICAgICByZXR1cm4gbV90cmFjay5pc19lbmFibGVkLnZhbHVlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNr
UHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5oCmluZGV4IDMyMGY4ODhjMTAxZmE2ZjIyMzdjM2FlZTEwNDcz
M2U4Y2VlMWIxMzguLmU0ZGY0MWY1YzBlNDc0YzFjZmNmZjMyYzQ1OWM1YmRhYTkxMDA0YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJh
Y2tQcml2YXRlV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAg
ICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWw7CiAgICAgQXRvbVN0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0IGZpbmFsOwogICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWw7Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHRyYWNrVUlEKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8
Ym9vbD4gZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
ZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBWaWRlb1RyYWNr
UHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmluZGV4IDE1M2EzYjA3MGJj
YzQ4NmE5MDc4ZmFhY2I3ODUzZTlhMmMwOTQ2ODUuLjM2ZGQ3NTJhMDA2YzZlOTU1NjUwMDcwNGZj
ZDczYmNmYmI5YzAyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiBA
aW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7CiAgICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5
OwotICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwogfQogCiAtIChpZClp
bml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IGVjNDk4
ZDRhZTAzYzNkYTlmZDI0NjY3ZGNlNmY0MzFhMTczN2YxNzQuLjI5YTA3Yzc2YWYwYWRhMTQyNzZh
MDE1NWIzNzcxNzFjNGIzYjM5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtNDI0LDcgKzQy
NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlS
ZWYgZmVhdHVyZSkKICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmVhdHVyZSwg
a0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSkgJiYgQ0ZEaWN0aW9uYXJ5Q29udGFpbnNL
ZXkoZmVhdHVyZSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkpOwogfQogCi1z
dGF0aWMgaW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0
aW9uYXJ5UmVmIGZlYXR1cmUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q0ZTdHJpbmdS
ZWY+IG9wZW5UeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKIHsKICAgICBBU1NF
UlQoaXNPcGVuVHlwZUZlYXR1cmUoZmVhdHVyZSkpOwogICAgIENGU3RyaW5nUmVmIHRhZyA9IHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShmZWF0dXJlLCBrQ1RG
b250T3BlblR5cGVGZWF0dXJlVGFnKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIGlubGlu
ZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBm
ZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1
ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUodmFsdWUsIGtDRk51bWJl
ckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNz
KTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmluZ1JlZj4odGFnKSA6IHN0
ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUgPyBzdGQ6Om9wdGlvbmFsPENGU3RyaW5n
UmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxp
bnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQpAQCAtNzIz
LDcgKzcyMyw3IEBAIFBhdGggRm9udDo6cGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgcmV0dXJuIHsgYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlQ29weShyZXN1
bHQuZ2V0KCkpKSB9OwogfQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQo
VUNoYXIzMiBjaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jv
b2wgRm9udDo6cGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKHZhcmlhdGlv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYyLDE0ICs4NjIsMTQgQEAgYm9vbCBGb250
OjpnbHlwaEhhc0NvbXBsZXhDb2xvckZvcm1hdChHbHlwaCBnbHlwaElEKSBjb25zdAogfQogI2Vu
ZGlmCiAKLU9wdGlvbmFsPEJpdFZlY3Rvcj4gRm9udDo6ZmluZE9UU1ZHR2x5cGhzKGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgdW5zaWduZWQgY291bnQpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPEJpdFZlY3Rvcj4gRm9udDo6ZmluZE9UU1ZHR2x5cGhzKGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgdW5zaWduZWQgY291bnQpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYXV0byB0YWJsZSA9IG90U1ZHVGFibGUoKS50YWJsZTsKICAgICBpZiAoIXRhYmxlKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8Qml0VmVjdG9yPiByZXN1bHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoUEFMOjpzb2Z0TGlua09UU1ZHT1RT
VkdUYWJsZUdldERvY3VtZW50SW5kZXhGb3JHbHlwaCh0YWJsZSwgZ2x5cGhzW2ldKSAhPSBrQ0ZO
b3RGb3VuZCkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmgKaW5kZXggMTE1NmQ3MDJlNjgzZmQ2MjAzZTVjNWJmZjUxYTIyZTVmOTIyNTkwYy4uYmRlZGNj
ZjcwYTg1YjFlNzI4NzAwODQ4OTY2NWY5OTU1YTQ0ZmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9u
VlQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VSb3RhdGlvblNlc3Npb25W
VChjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFnZUNvbXBhdGli
bGUpOwogICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQoKSA9IGRlZmF1bHQ7CiAKLSAgICBjb25z
dCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+JiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zZm9ybTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiYg
dHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KICAgICBjb25zdCBSb3Rh
dGlvblByb3BlcnRpZXMmIHJvdGF0aW9uUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcm90
YXRpb25Qcm9wZXJ0aWVzOyB9CiAgICAgY29uc3QgRmxvYXRTaXplJiBzaXplKCkgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsgcmV0dXJuIG1f
cm90YXRlZFNpemU7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJvdGF0aW9u
UHJvcGVydGllcyBtX3JvdGF0aW9uUHJvcGVydGllczsKICAgICBGbG9hdFNpemUgbV9zaXplOwot
ICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogICAgIE9TVHlwZSBtX3BpeGVsRm9y
bWF0OwogICAgIElzQ0dJbWFnZUNvbXBhdGlibGUgbV9pc0NHSW1hZ2VDb21wYXRpYmxlOwogICAg
IEZsb2F0U2l6ZSBtX3JvdGF0ZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA5OTMy
MjI2MmRmNzAyOTA0MDc5M2I2NTkwM2M1NzU1YmJhMjI2ZWQyLi40YWM1ZGIyZTg0ZmU3NDhiZDM3
NjI3ZTg4NDhhM2E4ZTE0NGNhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMTA1LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcklmRXhpc3RzKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEl0ZW1C
dWZmZXImIGl0ZW1CdWZmZXIoKTsKIAotICAgIHZvaWQgYWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0
aW9uYWw8RmxvYXRSZWN0PiYmIGV4dGVudCkKKyAgICB2b2lkIGFkZERyYXdpbmdJdGVtRXh0ZW50
KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYmIGV4dGVudCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyk7CiAgICAgICAgIG1fZHJhd2luZ0l0ZW1FeHRl
bnRzLmFwcGVuZChXVEZNb3ZlKGV4dGVudCkpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6
CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAgIEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCBtX2ZvbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBt
X2l0ZW1zOwotICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0
ZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVt
RXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGNhY2Y3NjRmNWRlMmM4Y2Y2ZDNmNDAwMDJm
ZWFmNWUxMjE2OTFjODUuLmJlZTE5NGQ1MzNhMTkwM2Q2MzRkNjkyZDU2MzNkNzMzMzI2MzA2MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBzdHJ1Y3QgR2x5cGhz
QW5kQWR2YW5jZXMgewogICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXM7CiAg
ICAgdW5zaWduZWQgbnVtR2x5cGhzOwogICAgIEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2
YW5jZTsKLSAgICBPcHRpb25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7CiB9Owog
CiBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMgZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggNWM0MjQ1NDEzYjQwMTNiNGJiNTcxODgxZDBk
Yjc2NjRkNTNkNjE2YS4uYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtOTcsNyArOTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgdmlydHVhbCBP
cHRpb25hbDxzdGQ6OnNpemVfdD4gcmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxzdGQ6OnNpemVfdD4gcmVx
dWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29k
ZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1ZmZlciBjb250
YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSByZWFkd3JpdGUg
SXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCmluZGV4IGYyMjJlMjE4M2EzOTEwM2JkNjk4NTM0NDY0ZGYzY2IwYThmZjkw
N2UuLjU5N2MyYTdhYjdiNzg4ZjJlMTdhNTYxYTAxMTFjM2I4MjY4YTE1NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0ZW0p
CiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lOjpsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dAogewogICAgIEZsb2F0UmVjdCBib3VuZHM7CiAgICAgYm91bmRzLmZpdFRvUG9pbnRzKG1fcG9p
bnQxLCBtX3BvaW50Mik7CkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5kcmF3
TGluZXNGb3JUZXh0KHBvaW50KCksIG1fdGhpY2tuZXNzLCBtX3dpZHRocywgbV9wcmludGluZywg
bV9kb3VibGVMaW5lcyk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9yVGV4
dDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBEcmF3TGluZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJu
IGEgdmFsdWUgZXF1YWwgdG8gb3IgZW5jbG9zaW5nIHdoYXQgR3JhcGhpY3NDb250ZXh0Ojpjb21w
dXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCkgcmV0dXJucy4KIApAQCAt
NTgxLDcgKzU4MSw3IEBAIHZvaWQgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9h
dFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0RvdHNGb3JE
b2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QK
IHsKICAgICByZXR1cm4gbV9yZWN0OwogfQpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgRHJhd0Zv
Y3VzUmluZ1BhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LmRyYXdGb2N1c1JpbmcobV9wYXRoLCBtX3dpZHRoLCBtX29mZnNldCwgbV9jb2xvcik7
CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
RHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdCA9IG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7
CiAgICAgcmVzdWx0LmluZmxhdGUocGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCk7CkBAIC02NDgsNyAr
NjQ4LDcgQEAgdm9pZCBEcmF3Rm9jdXNSaW5nUmVjdHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9yZWN0cywgbV93aWR0
aCwgbV9vZmZzZXQsIG1fY29sb3IpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1
c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdDsKICAg
ICBmb3IgKGF1dG8mIHJlY3QgOiBtX3JlY3RzKQpAQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9y
TWVkaWEmIGl0ZW0pCiB9CiAjZW5kaWYKIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0
Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IFN0cm9rZVJlY3Q6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IG1fcmVjdDsKICAgICBib3VuZHMu
ZXhwYW5kKG1fbGluZVdpZHRoLCBtX2xpbmVXaWR0aCk7CkBAIC04NzgsNyArODc4LDcgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVJl
Y3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9r
ZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8g
dGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhC
eVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ry
b2tlVGhpY2tuZXNzKCk7CkBAIC04OTksNyArODk5LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0pCiAgICAgcmV0
dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBTdHJva2VFbGxpcHNlOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4
dC5zdHJva2VUaGlja25lc3MoKTsKIApAQCAtOTE5LDcgKzkxOSw3IEBAIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVt
KQogICAgIHJldHVybiB0czsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VMaW5lOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlTGluZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNv
bnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRl
bSkKIAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+
IFN0cm9rZUlubGluZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VJbmxpbmVQYXRoOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3Jy
ZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0cm9rZVRoaWNr
bmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCA4Mzk0YmQzODJmOTI1NWIzOTQzNDIzZDE5M2EwMDljYzc4YTU4NTg1Li5m
OGIwZDA5M2JjNTdiYmVjOWUzNzVkM2NkYzY0NWI1MTAxNTZmZWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI4MCw3ICsyODAsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9maWxsUGF0dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmls
bFBhdHRlcm5JbWFnZSk7CiAKQEAgLTM3OCw5ICszNzgsOSBAQCB2b2lkIFNldFN0YXRlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LU9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+
IGNoYW5nZUZsYWdzOworICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOwogICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7
CiAgICAgaWYgKCFjaGFuZ2VGbGFncykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTQwMCwxMiArNDAwLDEyIEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7
Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBkZWNv
ZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAgICAg
ICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDIyLDEyICs0MjIsMTIgQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAK
ICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFBhdHRlcm46
OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6
UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwog
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNDM2LDI4ICs0MzYsMjggQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewot
ICAgICAgICBPcHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNldDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNldDsKICAgICAgICAgZGVjb2RlciA+PiBzaGFk
b3dPZmZzZXQ7CiAgICAgICAgIGlmICghc2hhZG93T2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNl
dCA9ICpzaGFkb3dPZmZzZXQ7CiAKLSAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CiAgICAgICAgIGRlY29k
ZXIgPj4gc2hhZG93Qmx1cjsKICAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRv
d0JsdXIgPSAqc2hhZG93Qmx1cjsKIAotICAgICAgICBPcHRpb25hbDxDb2xvcj4gc2hhZG93Q29s
b3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwogICAgICAgICBk
ZWNvZGVyID4+IHNoYWRvd0NvbG9yOwogICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9yOwogCi0gICAgICAgIE9wdGlvbmFsPFNoYWRvd1Jh
ZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93
UmFkaXVzTW9kZT4gc2hhZG93UmFkaXVzTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dS
YWRpdXNNb2RlOwogICAgICAgICBpZiAoIXNoYWRvd1JhZGl1c01vZGUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDY2LDcgKzQ2Niw3IEBAIE9wdGlvbmFsPFNldFN0YXRl
PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVRoaWNrbmVzc0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHN0cm9rZVRo
aWNrbmVzczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNzOwog
ICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgaWYgKCFzdHJva2VU
aGlja25lc3MpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDc1LDcgKzQ3
NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpIHsKLSAgICAgICAg
T3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxUZXh0RHJhd2luZ01vZGVGbGFncz4gdGV4dERyYXdpbmdNb2RlOwogICAg
ICAgICBkZWNvZGVyID4+IHRleHREcmF3aW5nTW9kZTsKICAgICAgICAgaWYgKCF0ZXh0RHJhd2lu
Z01vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDg0LDcgKzQ4NCw3
IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewotICAgICAgICBPcHRpb25h
bDxDb2xvcj4gc3Ryb2tlQ29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN0cm9r
ZUNvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwogICAgICAgICBpZiAoIXN0
cm9rZUNvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ5Myw3ICs0
OTMsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlv
bmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxD
b2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENv
bG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUxMCw3ICs1MTAsNyBA
QCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8V2lu
ZFJ1bGU+IGZpbGxSdWxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVs
ZTsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKICAgICAgICAgaWYgKCFmaWxsUnVsZSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01MTksNyArNTE5LDcgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9
CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKSkgewotICAgICAgICBPcHRpb25h
bDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBkZWNv
ZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9y
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUyOCw3ICs1MjgsNyBAQCBP
cHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPEJsZW5k
TW9kZT4gYmxlbmRNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRN
b2RlOwogICAgICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKICAgICAgICAgaWYgKCFibGVuZE1v
ZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTM3LDcgKzUzNyw3IEBA
IE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAg
ICAgIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBkZWNvZGVyID4+IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHk7CiAgICAgICAgIGlmICghaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01NDYsNyArNTQ2LDcgQEAgT3B0aW9uYWw8
U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6QWxwaGFDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBhbHBoYTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGE7CiAgICAgICAgIGRlY29kZXIgPj4gYWxw
aGE7CiAgICAgICAgIGlmICghYWxwaGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNTU1LDcgKzU1NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5n
ZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFudGlhbGlhczsKICAgICAgICAgZGVjb2RlciA+PiBz
aG91bGRBbnRpYWxpYXM7CiAgICAgICAgIGlmICghc2hvdWxkQW50aWFsaWFzKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU2NCw3ICs1NjQsNyBAQCBPcHRpb25hbDxTZXRT
dGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hv
dWxkU21vb3RoRm9udHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21vb3Ro
Rm9udHM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hvdWxkU21vb3RoRm9udHM7CiAgICAgICAgIGlm
ICghc2hvdWxkU21vb3RoRm9udHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNTczLDcgKzU3Myw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250c0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250czsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHM7CiAgICAgICAgIGlmICghc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU4Miw3ICs1ODIsNyBAQCBPcHRpb25hbDxTZXRT
dGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7CiAgICAgICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjMwLDcgKzYzMCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRMaW5lRGFzaD4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
ZXRMaW5lRGFzaD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBEYXNoQXJyYXkg
bV9kYXNoQXJyYXk7CkBAIC02NDUsMTQgKzY0NSwxNCBAQCB2b2lkIFNldExpbmVEYXNoOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LU9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RGFzaEFycmF5PiBkYXNoQXJyYXk7CisgICAg
c3RkOjpvcHRpb25hbDxEYXNoQXJyYXk+IGRhc2hBcnJheTsKICAgICBkZWNvZGVyID4+IGRhc2hB
cnJheTsKICAgICBpZiAoIWRhc2hBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPGZsb2F0PiBkYXNoT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBkYXNoT2Zmc2V0OwogICAgIGlmICghZGFz
aE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc5MCw3ICs3OTAsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwT3V0
VG9QYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENsaXBPdXRUb1BhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCkBAIC04MDUsOSArODA1LDkg
QEAgdm9pZCBDbGlwT3V0VG9QYXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENsaXBPdXRUb1BhdGg+IENsaXBP
dXRUb1BhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDbGlwT3V0
VG9QYXRoPiBDbGlwT3V0VG9QYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBk
ZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtODM5LDcgKzgzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxDbGlwUGF0aD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDbGlwUGF0aD4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsKQEAgLTg1NCwxNCArODU0LDE0IEBAIHZvaWQg
Q2xpcFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0
aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2luZFJ1bGU+IHdp
bmRSdWxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2luZFJ1bGU+IHdpbmRSdWxlOwogICAgIGRlY29k
ZXIgPj4gd2luZFJ1bGU7CiAgICAgaWYgKCF3aW5kUnVsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTg5MCw3ICs4OTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0
aW9uOwpAQCAtOTA1LDE0ICs5MDUsMTQgQEAgdm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGlu
YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwogICAgIGRl
Y29kZXIgPj4gZGVzdGluYXRpb247CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
Y29sb3JTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTQ5LDE1ICs5NDksMTUgQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxNj4mIGdseXBocygpIGNv
bnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPERyYXdHbHlwaHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0dseXBocz4gZGVjb2Rl
KERlY29kZXImKTsKIAogICAgIERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4
PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGb250JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZHM7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRz
OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKQEAg
LTk4MiwxOSArOTgyLDE5IEBAIHZvaWQgRHJhd0dseXBoczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEcmF3R2x5
cGhzPiBEcmF3R2x5cGhzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBmb250SWRlbnRpZmllcjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKICAgICBpZiAoIWZvbnRJZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+PiBnbHlwaHM7CiAgICAgZGVjb2RlciA+PiBnbHlwaHM7
CiAgICAgaWYgKCFnbHlwaHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+PiBhZHZhbmNlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOwog
ICAgIGRlY29kZXIgPj4gYWR2YW5jZXM7CiAgICAgaWYgKCFhZHZhbmNlcykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwMDIsMTcgKzEwMDIsMTcgQEAgT3B0aW9uYWw8RHJhd0ds
eXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGdseXBo
cy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gYm91bmRzOwogICAgIGRlY29kZXIgPj4gYm91bmRzOwogICAgIGlmICghYm91
bmRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRQ
b2ludD4gbG9jYWxBbmNob3I7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsb2NhbEFu
Y2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5jaG9yOwogICAgIGlmICghbG9jYWxBbmNob3Ip
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250U21vb3Ro
aW5nTW9kZT4gc21vb3RoaW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTbW9vdGhpbmdN
b2RlPiBzbW9vdGhpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gc21vb3RoaW5nTW9kZTsKICAgICBp
ZiAoIXNtb290aGluZ01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDQ1
LDggKzEwNDUsOCBAQCBwdWJsaWM6CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCiBwcml2YXRlOgogICAgIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKQEAgLTEw
NzksOCArMTA3OSw4IEBAIHB1YmxpYzoKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAogcHJpdmF0ZToKICAgICBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pbWFnZUlkZW50aWZpZXI7CkBAIC0xMTExLDggKzEx
MTEsOCBAQCBwdWJsaWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX2ltYWdlSWRlbnRpZmllcjsKQEAgLTExNDAsOCArMTE0MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICBm
bG9hdCBtX29wYWNpdHk7CkBAIC0xMTU1LDggKzExNTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiB9OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBAIC0x
MTc2LDggKzExNzYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHBy
aXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTEyMDEsOCArMTIwMSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBGbG9hdFBvaW50IG1fcG9pbnQxOwpAQCAtMTIyOCwxMSArMTIyOCwxMSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdMaW5lc0Zv
clRleHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RHJhd0xpbmVzRm9yVGV4dD4gZGVjb2RlKERlY29kZXImKTsKIAog
cHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsKQEAgLTEyNTUsMzQgKzEy
NTUsMzQgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdMaW5lc0Zv
clRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxEcmF3TGluZXNGb3JUZXh0PiBEcmF3TGluZXNGb3JUZXh0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBibG9ja0xvY2F0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gYmxvY2tMb2NhdGlvbjsKICAgICBkZWNvZGVy
ID4+IGJsb2NrTG9jYXRpb247CiAgICAgaWYgKCFibG9ja0xvY2F0aW9uKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBsb2NhbEFuY2hvcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9jYWxBbmNob3I7CiAgICAgZGVjb2RlciA+
PiBsb2NhbEFuY2hvcjsKICAgICBpZiAoIWxvY2FsQW5jaG9yKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RGFzaEFycmF5PiB3aWR0aHM7CisgICAgc3RkOjpv
cHRpb25hbDxEYXNoQXJyYXk+IHdpZHRoczsKICAgICBkZWNvZGVyID4+IHdpZHRoczsKICAgICBp
ZiAoIXdpZHRocykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PGZsb2F0PiB0aGlja25lc3M7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gdGhpY2tuZXNzOwog
ICAgIGRlY29kZXIgPj4gdGhpY2tuZXNzOwogICAgIGlmICghdGhpY2tuZXNzKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcHJpbnRpbmc7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBwcmludGluZzsKICAgICBkZWNvZGVyID4+IHByaW50aW5nOwog
ICAgIGlmICghcHJpbnRpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxib29sPiBkb3VibGVMaW5lczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRvdWJs
ZUxpbmVzOwogICAgIGRlY29kZXIgPj4gZG91YmxlTGluZXM7CiAgICAgaWYgKCFkb3VibGVMaW5l
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMTgsOCArMTMxOCw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwpAQCAtMTM0Miw4ICsxMzQyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVj
dCBtX3JlY3Q7CkBAIC0xMzY4LDEyICsxMzY4LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBQYXRo
JiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdQYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERyYXdQYXRoPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5n
UmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3Bh
dGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUGF0aCBtX3BhdGg7CkBA
IC0xMzg2LDkgKzEzODYsOSBAQCB2b2lkIERyYXdQYXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdQYXRo
PiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERyYXdQ
YXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
UGF0aD4gcGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+
PiBwYXRoOwogICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE0MjQsMTIgKzE0MjQsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmlu
Z1BhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUGF0aCBtX3BhdGg7CkBAIC0xNDQ4LDI0
ICsxNDQ4LDI0IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1BhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd0Zv
Y3VzUmluZ1BhdGg+IERyYXdGb2N1c1JpbmdQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IERyYXdGb2N1c1JpbmdQYXRoOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0
ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFw
YXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+
IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAgIGRlY29kZXIgPj4g
d2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gb2Zm
c2V0OwogICAgIGRlY29kZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYg
KCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE0ODgsMTEgKzE0ODgs
MTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3
Rm9jdXNSaW5nUmVjdHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1JlY3RzPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fcmVjdHM7CkBAIC0x
NTExLDI0ICsxNTExLDI0IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1JlY3RzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PERyYXdGb2N1c1JpbmdSZWN0cz4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1JlY3RzPiBEcmF3Rm9jdXNSaW5n
UmVjdHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxG
bG9hdFJlY3Q+PiByZWN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiBy
ZWN0czsKICAgICBkZWNvZGVyID4+IHJlY3RzOwogICAgIGlmICghcmVjdHMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gd2lkdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAo
IXdpZHRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Zmxv
YXQ+IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CiAgICAgZGVjb2Rl
ciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xv
cj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTU1MSw4ICsxNTUxLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7
CkBAIC0xNTc1LDExICsxNTc1LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9y
ZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmlsbFJl
Y3RXaXRoQ29sb3I+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsbFJlY3RXaXRoQ29sb3I+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTE1OTQsMTQgKzE1OTQs
MTQgQEAgdm9pZCBGaWxsUmVjdFdpdGhDb2xvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUmVjdFdpdGhD
b2xvcj4gRmlsbFJlY3RXaXRoQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxGaWxsUmVjdFdpdGhDb2xvcj4gRmlsbFJlY3RXaXRoQ29sb3I6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYg
KCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29s
b3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIg
Pj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTE2MjIsMTEgKzE2MjIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGaWxsUmVj
dFdpdGhHcmFkaWVudD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwpAQCAtMTY0MSw5ICsx
NjQxLDkgQEAgdm9pZCBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUmVj
dFdpdGhHcmFkaWVudD4gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gRmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gcmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVy
ID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTY3NiwxMSArMTY3NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZpbGxDb21w
b3NpdGVkUmVjdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxsQ29tcG9zaXRlZFJlY3Q+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTE2OTksMjQgKzE2OTks
MjQgQEAgdm9pZCBGaWxsQ29tcG9zaXRlZFJlY3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbENvbXBvc2l0
ZWRSZWN0PiBGaWxsQ29tcG9zaXRlZFJlY3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxGaWxsQ29tcG9zaXRlZFJlY3Q+IEZpbGxDb21wb3NpdGVkUmVjdDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAg
ICBpZiAoIXJlY3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxDb2xvcj4gY29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVj
b2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOworICAgIHN0ZDo6b3B0
aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOwogICAgIGRlY29kZXIgPj4gb3A7CiAgICAgaWYg
KCFvcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEJsZW5k
TW9kZT4gYmxlbmRNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7
CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQyLDEyICsxNzQyLDEyIEBAIHB1YmxpYzoKICAg
ICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ibGVuZE1vZGU7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmlsbFJvdW5kZWRS
ZWN0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVjdD4gZGVjb2RlKERlY29kZXImKTsKIAogICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0
Um91bmRlZFJlY3QgbV9yZWN0OwpAQCAtMTc2NCwxOSArMTc2NCwxOSBAQCB2b2lkIEZpbGxSb3Vu
ZGVkUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUm91bmRlZFJlY3Q+IEZpbGxSb3VuZGVkUmVjdDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVjdD4g
RmlsbFJvdW5kZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxGbG9hdFJvdW5kZWRSZWN0PiByZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSb3VuZGVk
UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAg
aWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVu
ZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODAyLDEyICsxODAyLDEyIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPiBkZWNvZGUo
RGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZs
b2F0UmVjdCBtX3JlY3Q7CkBAIC0xODI0LDE5ICsxODI0LDE5IEBAIHZvaWQgRmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+IEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0Owog
ICAgIGlmICghcmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRIb2xlUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRIb2xlUmVjdDsKICAgICBkZWNvZGVyID4+IHJvdW5k
ZWRIb2xlUmVjdDsKICAgICBpZiAoIXJvdW5kZWRIb2xlUmVjdCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29sb3Ip
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODgzLDggKzE4ODMsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRp
bmdSZWN0KCk7IH0KIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKQEAg
LTE5MDgsMTIgKzE5MDgsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IFBhdGgmIHBhdGgoKSBjb25z
dCB7IHJldHVybiBtX3BhdGg7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8RmlsbFBhdGg+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsbFBhdGg+IGRlY29kZShEZWNvZGVy
Jik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRp
bmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsKQEAgLTE5MjYsOSArMTky
Niw5IEBAIHZvaWQgRmlsbFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RmlsbFBhdGg+IEZpbGxQYXRoOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RmlsbFBhdGg+IEZpbGxQYXRo
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAg
aWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk1MSw4ICsxOTUx
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xOTc5LDcgKzE5NzksNyBAQCBwdWJsaWM6CiAgICAgSW50
UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIElu
dFJlY3QgbV9zcmNSZWN0OwpAQCAtMTk5NCwxNCArMTk5NCwxNCBAQCB2b2lkIEdldFBpeGVsQnVm
ZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhl
bEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW50UmVj
dD4gc3JjUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CiAgICAgZGVj
b2RlciA+PiBzcmNSZWN0OwogICAgIGlmICghc3JjUmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7
CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9ybWF0OwogICAg
IGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwogICAgIGlmICghb3V0cHV0Rm9ybWF0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAzMCwxMSArMjAzMCwxMSBAQCBwdWJsaWM6CiAg
ICAgSW50UG9pbnQgZGVzdFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KICAg
ICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RGb3JtYXQ7IH0KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQ
b2ludCwgbV9zcmNSZWN0LnNpemUoKSB9fTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4ge3sgbV9kZXN0UG9pbnQsIG1fc3JjUmVjdC5zaXplKCkgfX07IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHV0UGl4ZWxCdWZm
ZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6CiAgICAgSW50UmVjdCBtX3NyY1JlY3Q7CkBAIC0yMDUzLDEyICsyMDUzLDEyIEBAIHZvaWQg
UHV0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IFB1dFBpeGVsQnVm
ZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxCdWZm
ZXI+IFB1dFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4gc3Jj
UmVjdDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gZGVzdFBvaW50OwotICAgIE9wdGlvbmFsPEFs
cGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0
OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGRlc3RQb2ludDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3JtYXQ7CiAKICAgICBkZWNvZGVyID4+
IHBpeGVsQnVmZmVyOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCkBAIC0yMDk1LDggKzIwOTUsOCBA
QCBwdWJsaWM6CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHsg
bV9kZXN0aW5hdGlvbiB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiB7IG1fZGVzdGluYXRpb24gfTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVySWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CkBAIC0yMTIxLDggKzIxMjEsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTIxNDYsOCArMjE0Niw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBGbG9hdFBvaW50IG1fc3RhcnQ7CkBAIC0yMTc0LDggKzIxNzQsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiB9OwogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCkBAIC0yMTk5LDEyICsyMTk5LDEyIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN0cm9rZVBhdGg+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U3Ryb2tlUGF0aD4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0
aDsKQEAgLTIyMTcsOSArMjIxNyw5IEBAIHZvaWQgU3Ryb2tlUGF0aDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxT
dHJva2VQYXRoPiBTdHJva2VQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8U3Ryb2tlUGF0aD4gU3Ryb2tlUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHBhdGg7
CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTIyNDIsOCArMjI0Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJl
Y3QgbV9yZWN0OwpAQCAtMjI2NCw4ICsyMjY0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJl
dHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAzZjZiYmJkNWQ4ODdkZTU4NmRlNzA4YTEx
ZjM3YWFlMDg0NTMxZjRlLi5kNzZlOWIyNDMxNGM1MTcyZDU0Y2NlMTMyZWQyMWFlMGMzYzJmZTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTU2LDExICs1Niwx
MSBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgVmFsdWUgewogICAgICAgICBJdGVtSGFuZGxlIGl0
ZW07Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZl
ciB7IDAgfTsKICAgICB9OwogCi0gICAgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0
CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwogICAgIHVp
bnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IG1fY3VycmVudEV4dGVudDsKICAgICBzaXplX3QgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciB7
IDAgfTsKICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODJiMmM3YWI2NTEzODIxMGJmM2I2NTRlNTky
ZWQzMDcxZTRmODEwYS4uOWUyMDE2ZTFkMWY1NzdmMzU4YzU5N2U3OGY4NGU3NjBhNjMzODg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTY3LDcgKzU2
Nyw3IEBAIHZvaWQgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6cm90YXRlKGZsb2F0IGFuZ2xlSW5S
YWRpYW5zKQogICAgIEFmZmluZVRyYW5zZm9ybSByb3RhdGlvbjsKICAgICByb3RhdGlvbi5yb3Rh
dGUoYW5nbGVJbkRlZ3JlZXMpOwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4g
aW52ZXJzZSA9IHJvdGF0aW9uLmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IGludmVyc2UgPSByb3RhdGlvbi5pbnZlcnNlKCkpCiAgICAgICAgIGNsaXBC
b3VuZHMgPSBpbnZlcnNlLnZhbHVlKCkubWFwUmVjdChjbGlwQm91bmRzKTsKIH0KIApAQCAtNTc5
LDcgKzU3OSw3IEBAIHZvaWQgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6c2NhbGUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogCiB2b2lkIFJlY29yZGVyOjpDb250ZXh0U3RhdGU6OnNldENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zv
cm0+IGludmVyc2VUcmFuc2Zvcm1Gb3JDbGlwQm91bmRzOworICAgIHN0ZDo6b3B0aW9uYWw8QWZm
aW5lVHJhbnNmb3JtPiBpbnZlcnNlVHJhbnNmb3JtRm9yQ2xpcEJvdW5kczsKICAgICBpZiAoYXV0
byBvcmlnaW5hbENUTUludmVyc2UgPSBjdG0uaW52ZXJzZSgpKQogICAgICAgICBpbnZlcnNlVHJh
bnNmb3JtRm9yQ2xpcEJvdW5kcyA9IG9yaWdpbmFsQ1RNSW52ZXJzZS0+bXVsdGlwbHkobWF0cml4
KS5pbnZlcnNlKCk7CiAKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFJlY29yZGVyOjpDb250ZXh0
U3RhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKICAgICBj
dG0gKj0gbWF0cml4OwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJz
ZSA9IG1hdHJpeC5pbnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNm
b3JtPiBpbnZlcnNlID0gbWF0cml4LmludmVyc2UoKSkKICAgICAgICAgY2xpcEJvdW5kcyA9IGlu
dmVyc2UudmFsdWUoKS5tYXBSZWN0KGNsaXBCb3VuZHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggNjQ4YjQ0MDQwNmJlMjM3NjMyZTVkMjY1ZTU3
OWNmNWUyZDU3M2RhNy4uZjM3MGI0MTE4ZDAyNDNhMWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0p
CitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElt
YWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAg
YXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNl
SWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKQEAg
LTY3LDcgKzY3LDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5h
dGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5h
dGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdl
SGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgYXV0byYgbmF0
aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmll
ciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKQEAgLTc4LDcgKzc4LDcgQEAg
aW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwog
fQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJ
bWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGF1dG8mIHNldFN0YXRlSXRl
bSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJ
dGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywg
SXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkK
IHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJj
ZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwpAQCAtMTEzLDcgKzExMyw3
IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmll
cjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5k
bGUgaXRlbSkKK3N0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0
ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUt
PmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRl
eCA2YjhiZjQ0NjI4MmM0ZWE2ZWY1NGY0OWIyZTJmYmFkNzliZmQxYWQwLi4xNjYyN2EwMjA2ZTMw
OTI0M2Y4YjdiZDE4Y2RiM2RhNTg2MDc4YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKQEAgLTQ4LDggKzQ4LDggQEAgZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVhc29u
IDogdWludDhfdCB7CiBzdHJ1Y3QgUmVwbGF5UmVzdWx0IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5NZW1vcnlEaXNwbGF5TGlzdD4gdHJhY2tlZERpc3BsYXlMaXN0OwogICAgIHNpemVfdCBudW1i
ZXJPZkJ5dGVzUmVhZCB7IDAgfTsKLSAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyOwotICAgIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgU3RvcFJlcGxheVJl
YXNvbiByZWFzb25Gb3JTdG9wcGluZyB7IFN0b3BSZXBsYXlSZWFzb246OlJlcGxheWVkQWxsSXRl
bXMgfTsKIH07CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9u
YWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDEyYjAyNjVh
OWM5MDNkMTFjOWZkOWMxNzY2OTAwNTgyYzRkMGY4YmYuLmVjYTUzNTg2MjliMDI3YTM2ZWQ4N2U2
OWQ0Mzk4MDE0N2UxNjdiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlz
dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CiAKLU9wdGlvbmFsPHN0ZDo6c2l6ZV90PiBJbk1lbW9yeURpc3BsYXlMaXN0
OjpXcml0aW5nQ2xpZW50OjpyZXF1aXJlZFNpemVGb3JJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OnNpemVfdD4gSW5N
ZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6cmVxdWlyZWRTaXplRm9ySXRlbShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QKIHsKICAgICByZXR1cm4g
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRpc3BsYXlMaXN0SXRlbSk7CiB9CkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgSW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6ZW5j
b2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBsb2Nh
dGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQogCi1PcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJO
X1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2Rl
SXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlw
ZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0
eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKIHsKICAgICBjb25zdCBJdGVtSGFuZGxlIGRh
dGFIYW5kbGUgeyBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKSB9OwogICAgIEFTU0VSVF9VTlVT
RUQoZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCA+PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoZGF0YUhhbmRsZS50eXBlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlz
dC5oCmluZGV4IDFjYzA4YWZhYmZmMmRhNTdjMWMyZDE4ZDg5NmZkY2Y5NWRjYWEzZDEuLjdhN2Yw
NjBjM2ZlOGE5NTc5MzlhMjFiZDMzZjEzZGQzMmZmYmI5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0lu
TWVtb3J5RGlzcGxheUxpc3QuaApAQCAtNDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBXcml0aW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJXcml0aW5n
Q2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgT3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3Qg
RGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29u
c3QgZmluYWw7CiAgICAgICAgIHZvaWQgZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mLCB1aW50OF90KikgY29uc3QgZmluYWw7CiAgICAgfTsKIAogICAgIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQg
ewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgotICAgICAg
ICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25z
dCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSwgdWludDhfdCopIGZpbmFsOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlLCB1aW50OF90KikgZmluYWw7CiAgICAgfTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBlMjU5NjE3ZDExNDk4YWYwZjgwODMz
MmI5MmE0YjNlN2Y5Y2ZjMzdlLi5mZDc3NGNhOTNhZjYxMTQ0MzIzZDY2NDE5Mzc3MzQ0M2YxZDBh
MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgSW1hZ2VCdWZmZXIq
IEZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIHJldHVybiBtX2ltYWdlQnVm
ZmVyUmVzdWx0LmdldCgpOwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVm
ZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwg
c3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAg
SW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChj
b25zdCBJbnRSZWN0JiByZWN0LAogICAgIHJldHVybiBwaXhlbEFycmF5OwogfQogCi1SZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25z
dCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGll
ZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXpl
KCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNp
emUpKTsKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWlu
Z0FscGhhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9y
U3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3Jt
IHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQg
ZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYQog
ICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFj
ZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZv
cm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJ
bWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdl
dENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK3N0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBk
b25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00OTEs
NyArNDkxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRv
RGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3QKICAgICBjb3B5SW1hZ2VCeXRlcyhj
b252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwogfQog
Ci12b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRB
cnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0
aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVj
dCYgcmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2Up
CiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKICAgICAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2
b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAgY29weUltYWdlQnl0ZXMobV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3Vs
dChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIHN0
ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogewogICAgIEFT
U0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTU4NCw3ICs1ODQsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZm
ZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiB7
CiAgICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlVW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOwogCkBAIC02MDMsNyArNjAzLDcgQEAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZElt
YWdlUmVzdWx0KCkKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0Ojpj
cmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewogICAgIExPRyhGaWx0ZXJzLCAiRmls
dGVyRWZmZWN0ICVzICVwIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRlck5h
bWUoKSwgdGhpcyk7CiAKQEAgLTYyMiw3ICs2MjIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4m
IEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKICAgICByZXR1
cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0Ojpy
ZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCitib29sIEZpbHRlckVmZmVjdDo6
cmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENH
KQogICAgIC8vIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHdlIG5lZWQgdGhlIHN0
ZXAgb2YgYW4gZXh0cmEgY29sb3Igc3BhY2UgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXgg
YTM3MDAwYTNjYzA5NTM1ZDAxYzllMGQ2N2QzZjA3NGI4NTA4NDBkMy4uYjRhZDlhZGMwNDYyODJm
MGRhZTI4YWQxNGQ2Nzg2ZTgwZDY1M2FlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04NCwxMCArODQs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJ
bWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRp
cGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAg
dm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJl
c3VsdChjb25zdCBJbnRSZWN0Jiwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRp
cGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xv
clNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIHN0ZDo6b3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBj
b3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmLCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBzdGQ6
Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1
cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0RWZmZWN0KHVuc2ln
bmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1iZXJPZkVmZmVjdElucHV0cygpIGNvbnN0IHsg
cmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsgfQpAQCAtMTg3LDggKzE4Nyw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCA9IDA7CiAK
ICAgICBJbWFnZUJ1ZmZlciogY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Ci0gICAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+JiBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgY3JlYXRlUHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwg
b25seSBvcGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAogICAgIC8v
IGFscGhhIGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0u
CkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29weUltYWdlQnl0ZXMo
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1w
ZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29u
c3QgSW50UmVjdCYpOwotICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252
ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pOwotICAgIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZl
clRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYp
OworICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0ZDo6
b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7CisgICAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZl
ciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKICAgICBGaWx0ZXJFZmZlY3RWZWN0
b3IgbV9pbnB1dEVmZmVjdHM7CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZm
ZXJSZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CiAKICAgICBJbnRSZWN0IG1fYWJzb2x1dGVQYWludFJlY3Q7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggN2YwODA4ZGIwMmFlNGZlOWQwMDg5YTZjMDZl
Y2Q3MzU4YmRhZjY4Zi4uMzIwZTI0MGU0YTNhNzYzZjhmMjc5NDhiN2FhM2YzNzM3MTEyN2NjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlCiAgICAgcmV0dXJuIHBsYXRmb3JtRGF0YTsKIH0KIAotT3B0aW9u
YWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShj
b25zdCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxh
dGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggZTc5MTk3OWM0ODE3ZTExYmM5MmEwMGVkODQ4NzQ1ODdjODBhZjhkMC4uNTVkYTlhOTMwNWM2
YTdiYjYyN2NiOTQwOGQ2NGM2MzdhM2Y5Mzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERh
dGFGcmVlVHlwZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGZsb2F0IHNjYWxlZEZvbnRT
Y2FsZUZhY3RvcihjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250KQogICAgIHJldHVybiB4
U2NhbGUgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRldGVybWluYW50IC8geFNjYWxlKSA6IDAu
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1BlckVtKEZUX0ZhY2Ug
ZnJlZVR5cGVGYWNlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1Bl
ckVtKEZUX0ZhY2UgZnJlZVR5cGVGYWNlKQogewogICAgIGlmIChmcmVlVHlwZUZhY2UtPnVuaXRz
X3Blcl9FTSkKICAgICAgICAgcmV0dXJuIGZyZWVUeXBlRmFjZS0+dW5pdHNfcGVyX0VNOwpAQCAt
MTE0LDEwICsxMTQsMTAgQEAgdm9pZCBGb250OjpwbGF0Zm9ybUluaXQoKQogICAgIGZsb2F0IGRl
c2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGZvbnRFeHRlbnRzLmRlc2NlbnQpOwogICAg
IGZsb2F0IGNhcEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZm9udEV4dGVudHMuaGVp
Z2h0KTsKICAgICBmbG9hdCBsaW5lR2FwID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChmb250RXh0
ZW50cy5oZWlnaHQgLSBmb250RXh0ZW50cy5hc2NlbnQgLSBmb250RXh0ZW50cy5kZXNjZW50KTsK
LSAgICBPcHRpb25hbDxmbG9hdD4geEhlaWdodDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdW5p
dHNQZXJFbTsKLSAgICBPcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lUG9zaXRpb247Ci0gICAgT3B0
aW9uYWw8ZmxvYXQ+IHVuZGVybGluZVRoaWNrbmVzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiB4SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHVuaXRzUGVyRW07CisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gdW5kZXJsaW5lVGhpY2tuZXNzOwogCiAgICAgewogICAgICAgICBDYWlyb0Z0RmFj
ZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgRm9udDo6dmFyaWFudENhcHNTdXBwb3J0c0NoYXJhY3Rl
ckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMgZm9udFZhcmlhbnRDCiAgICAgfQogfQogCi1i
b29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0ZXIsIE9w
dGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZvcm1TdXBw
b3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2
YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2Nr
ZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKICAgICBpZiAoRlRfRmFjZSBmYWNlID0g
Y2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdyb3VwQWxsb2NhdG9yLmgKaW5kZXgg
NTZlMGFkNjA5MjI2MzNiZTViNjRkMWVmY2QyNGNhMTRmODJkM2M4Mi4uYzI3NjE3ZmM4MDgyNTk3
YTI3OTMyMzY0OWI2M2U3MmUzYjUzMDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91cEFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCaW5kR3JvdXBBbGxvY2F0b3IuaApAQCAt
NDIsMTMgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVUJpbmRHcm91cEFsbG9j
YXRvcj4gY3JlYXRlKEdQVUVycm9yU2NvcGVzJik7CiAKICAgICBzdHJ1Y3QgQXJndW1lbnRCdWZm
ZXJPZmZzZXRzIHsKLSAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IHZl
cnRleDsKLSAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IGZyYWdtZW50
OwotICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gdmVydGV4OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BVQnVmZmVyT2Zmc2V0PiBmcmFnbWVudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQVUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsKICAg
ICB9OwogCiAjaWYgVVNFKE1FVEFMKQotICAgIE9wdGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0
cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRM
QXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRF
bmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpm
cmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpjb21wdXRlKTsKICNlbmRpZgogCiAgICAgdm9p
ZCB0cnlSZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURldmljZS5oCmluZGV4IGViNzcxYzkyZjI2ZGYzZGM3ZWVmMTM2NGVkM2QwMWMwMWUyZjEy
NDQuLmJmMTJlODA3NTMyNGJjZmM0YTNiZTMwYmI0NGY3NmQ0MjIyMmIwNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKQEAgLTY5LDcg
KzY5LDcgQEAgZW51bSBjbGFzcyBHUFVCdWZmZXJNYXBwZWRPcHRpb247CiAKIGNsYXNzIEdQVURl
dmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxHUFVEZXZpY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5
Q3JlYXRlKGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3JlYXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwogICAgIHN0YXRpYyB2b2lkIHByZXdhcm0oKTsKIAog
ICAgIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNj
cmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBHUFVFcnJvclNjb3BlcyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Bl
cy5jcHAKaW5kZXggZTI5MjZiZDAwNzdmOTM1NzA0YmZhNWQxZjJjYThjNTE0ZjkwN2M4Zi4uMmJl
ZTljZjFiZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0ZDM2YzU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIHZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hFcnJvclNjb3BlKEdQVUVy
cm9yRmlsdGVyIGZpbHRlcikKICAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsg
ZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKLU9wdGlvbmFsPEdQVUVycm9yPiBHUFVFcnJv
clNjb3Blczo6cG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQorc3RkOjpvcHRpb25h
bDxHUFVFcnJvcj4gR1BVRXJyb3JTY29wZXM6OnBvcEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVz
c2FnZSkKIHsKICAgICBpZiAobV9lcnJvclNjb3Blcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmFp
bE1lc3NhZ2UgPSAiTm8gZXJyb3Igc2NvcGUgZXhpc3RzISI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCmluZGV4IDRkNGZk
NWEwYjIyNmFkMjQ2MGQzNWNmNGM5ZDg0OWI1MTBiYjgzMjQuLjIxZmE2MTAwMzgxZmQyMGFjODM1
NGM2MDhlMGFiMDg0NjZhMWRjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEdQVUVycm9yU2NvcGVzPiBjcmVhdGUoVW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2smJik7CiAKICAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyKTsK
LSAgICBPcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdl
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFp
bE1lc3NhZ2UpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYsIEdQVUVy
cm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwogICAgIHZvaWQgZ2VuZXJh
dGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYpOwpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHN0cnVjdCBFcnJvclNjb3BlIHsKICAgICAgICAgY29uc3QgR1BVRXJy
b3JGaWx0ZXIgZmlsdGVyOwotICAgICAgICBPcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yOwogICAgIH07CiAKICAgICBHUFVFcnJv
clNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlw
dG9yLmgKaW5kZXggYTY4MGViNzYzYjJhZDdlZWQ3Yjg5MDZhNjIxMDQ2MDNhMjcyOTkxYy4uODhi
Y2ViMzkyNmM0ZDdkNjk5NTY1NzczMzQ5YmVjNDU0MGIyMTAzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NEZXB0aFMKIAog
c3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKICAgICBWZWN0b3I8R1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHM7Ci0gICAgT3B0aW9u
YWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50OworICAgIHN0ZDo6b3B0aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCA3OGNiMTFiOGY1NTUy
N2FhOTEyYjM4NGMyNjFmZTEyZTRiYjUwM2MyLi45YzU2ODljYzQwNTg0ZWFmMTMwZjFiZDI2MTA0
NzVjNWRkM2IzMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IEdQVURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7CisgICAgYm9vbCByZWNvbXBpbGUoY29uc3Qg
R1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2Us
IHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50
U3RhZ2UpOwogCiAjaWYgVVNFKE1FVEFMKQogICAgIE1UTERlcHRoU3RlbmNpbFN0YXRlICpkZXB0
aFN0ZW5jaWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0KCk7
IH0KICNlbmRpZgogICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUqIHBsYXRmb3JtUmVuZGVyUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0K
ICAgICBHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWl0aXZlVG9wb2xvZ3k7IH0KLSAgICBPcHRpb25hbDxHUFVJbmRleEZvcm1hdD4g
aW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4Rm9ybWF0OyB9CisgICAgc3RkOjpv
cHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4Rm9ybWF0OyB9CiAKIHByaXZhdGU6CiAjaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBp
cGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBPcHRpb25hbDxHUFVJbmRl
eEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4mLCBjb25zdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoUmV0YWlu
UHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiYmLCBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQ
dHImJiwgR1BVUHJpbWl0aXZlVG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+
LCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiwgY29uc3QgR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZSYpOwogCiAgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRl
PiBtX2RlcHRoU3RlbmNpbFN0YXRlOwogI2VuZGlmIC8vIFVTRShNRVRBTCkKICAgICBQbGF0Zm9y
bVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOwogICAgIEdQ
VVByaW1pdGl2ZVRvcG9sb2d5IG1fcHJpbWl0aXZlVG9wb2xvZ3k7Ci0gICAgT3B0aW9uYWw8R1BV
SW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZv
cm1hdD4gbV9pbmRleEZvcm1hdDsKIAogICAgIC8vIFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3Rv
ciByZWNvbXBpbGF0aW9uLgogICAgIFJlZlB0cjxHUFVQaXBlbGluZUxheW91dD4gbV9sYXlvdXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKaW5kZXggNjcyOGE3MzA1NWRiMGU3
ZGM2M2Q4MDg5OGEzNTE2Y2NhOWNiMmUyOC4uMWE3ZWJkNmU5YzYyZGExOWY5ZDk4YmViZjFmYzli
ZDZjODg2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtNDgs
MTIgKzQ4LDEyIEBAIGVudW0gY2xhc3MgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgewogc3RydWN0IEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewogICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5
IHByaW1pdGl2ZVRvcG9sb2d5OwogICAgIFZlY3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4g
Y29sb3JTdGF0ZXM7Ci0gICAgT3B0aW9uYWw8R1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9y
PiBkZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVURlcHRoU3RlbmNpbFN0
YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3RhdGU7CiAgICAgR1BVVmVydGV4SW5wdXREZXNj
cmlwdG9yIHZlcnRleElucHV0OwogfTsKIAogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihSZWZQdHI8R1BVUGlw
ZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2
ZXJ0ZXgsIE9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVu
dCwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgYmFzZSkKKyAgICBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91
dCwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4LCBzdGQ6Om9wdGlvbmFs
PEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudCwgY29uc3QgR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgYmFzZSkKICAgICAgICAgOiBHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlIHsgV1RGTW92ZShsYXlvdXQpIH0KICAgICAgICAgLCBHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3JCYXNlKGJhc2UpCiAgICAgICAgICwgdmVydGV4U3RhZ2UoV1RGTW92ZSh2
ZXJ0ZXgpKQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbgogICAgIH0K
IAogICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBP
cHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50
U3RhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJP
cHRpb25zLmgKaW5kZXggMWY1ZTg4ZDQ0MzZiNTFhODlkNjQ2OTc1OTY5OGFiZGNkNTJlYTM5MC4u
YmVkZjZmY2M3YmZhNmVkNzJmZDBkOThiM2Q5MjNhNzU1NTY4MWIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuaApAQCAtMzcsNyArMzcsNyBAQCBlbnVtIGNsYXNzIEdQVVBvd2VyUHJl
ZmVyZW5jZSB7CiB9OwogCiBzdHJ1Y3QgR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBP
cHRpb25hbDxHUFVQb3dlclByZWZlcmVuY2U+IHBvd2VyUHJlZmVyZW5jZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93ZXJQcmVmZXJlbmNlOwogfTsKICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaAppbmRleCA2
YmY5NmM0ZjBhOTRkZjM3NDBiYzk3OTE3YWZmZTY3ZWJkZWU2YmI5Li45ODIzMmZlNTk5MTVlZjVh
OTFhOGFhNWFhNThlNzRjMDY0MzlkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5o
CkBAIC0zOSw3ICszOSw3IEBAIGVudW0gY2xhc3MgR1BVSW5kZXhGb3JtYXQgewogCiBzdHJ1Y3Qg
R1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHsKICAgICBHUFVJbmRleEZvcm1hdCBpbmRleEZvcm1h
dDsKLSAgICBWZWN0b3I8T3B0aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRl
eEJ1ZmZlcnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3Jp
cHRvcj4+IHZlcnRleEJ1ZmZlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmlu
ZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0KaW5kZXggNDhmYjAyZGZj
OTQyNDAxMTlmMjZkNGMwMGRkZWZiZjU1MzgxNGYzZi4uNjMxNDc0Y2E3OTk4Nzg3ZDAwNTJmNzE2
NmJkNzVjYTk3NDBhZGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0
b3JNZXRhbC5tbQpAQCAtNDcsNyArNDcsNyBAQCBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJp
bmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JzKQogCiAjaWYgVVNFKE1FVEFM
KQogCi1PcHRpb25hbDxHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0
cz4gR1BVQmluZEdyb3VwQWxsb2NhdG9yOjphbGxvY2F0ZUFuZFNldEVuY29kZXJzKE1UTEFyZ3Vt
ZW50RW5jb2RlciAqdmVydGV4LCBNVExBcmd1bWVudEVuY29kZXIgKmZyYWdtZW50LCBNVExBcmd1
bWVudEVuY29kZXIgKmNvbXB1dGUpCitzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRv
cjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBHUFVCaW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRl
QW5kU2V0RW5jb2RlcnMoTVRMQXJndW1lbnRFbmNvZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5j
b2RlciAqZnJhZ21lbnQsIE1UTEFyZ3VtZW50RW5jb2RlciAqY29tcHV0ZSkKIHsKICAgICBpZDxN
VExEZXZpY2U+IGRldmljZSA9IG5pbDsKICAgICBhdXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2Vk
PE5TVUludGVnZXI+KG1fbGFzdE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5
b3V0TWV0YWwubW0KaW5kZXggYTkwZWNkYjQyNTliOTc3M2MzZDE3M2ZmNzcyNzI4YjFkNGE2NmJk
NS4uOTc5YWNmNzg2YmJiZWU3YTkxYTA3YTM0NmU3ZjAxZTRlMWMwMGRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExh
eW91dE1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0
cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKGNvbnN0
IEdQVURldmljZSYgZGV2aWNlCiAgICAgdW5zaWduZWQgaW50ZXJuYWxOYW1lID0gMDsKICAgICB1
bnNpZ25lZCBpbnRlcm5hbExlbmd0aEJhc2UgPSBkZXNjcmlwdG9yLmJpbmRpbmdzLnNpemUoKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGJpbmRpbmcgOiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0g
ICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OwogICAgICAgICBhdXRvIGludGVybmFsRGV0YWlscyA9
IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgewog
ICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgR1BV
QmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0K
aW5kZXggYTllYzE3YjhjYzA0ZGQyNTJlZDYxZjc3ZWVmNWI3MTgxY2JjYTBiZC4uZGUzNDQyNmI0
ZTU0OGUwMGE1NWIzZWI1NTkyMmY5M2ZhMTc3ZjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBN
ZXRhbC5tbQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1z
dGF0aWMgT3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJp
bmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4g
dHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQogewogI2lmIExPR19ESVNB
QkxFRAogICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tCmluZGV4IDc5YTk5ZGM1YzRiNjY4MzY5NzE4ODg4NDQ4NDM3
MGEyMzAxZTcxMzIuLmE5Y2EzNzhhMGVhZmRiM2ZhNjM2M2VkYTFmYTBjMGZmMWYxOTM5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVD
b21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwubW0KQEAgLTY0LDcgKzY0LDcg
QEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqY29tcHV0ZU1l
dGFsTGlicmFyeSwgTVRMQ29tcHV0ZVBpcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0
IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRv
ciwgT3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2Ny
aXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpv
cHRpb25hbDxXSExTTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRv
ciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIFJldGFpblB0cjxNVExMaWJy
YXJ5PiBjb21wdXRlTGlicmFyeTsKICAgICBTdHJpbmcgY29tcHV0ZUVudHJ5UG9pbnQ7CkBAIC0x
MTksNyArMTE5LDcgQEAgc3RydWN0IENvbnZlcnRSZXN1bHQgewogICAgIFdITFNMOjpDb21wdXRl
RGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb252
ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29u
dmVydFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKICAgICBSZXRhaW5QdHI8TVRMQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKIApAQCAtMTM2LDcgKzEzNiw3
IEBAIHN0YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlCiAKICAgICBib29sIGlzV2hsc2wgPSBjb21wdXRl
U3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwogCi0gICAgT3B0aW9uYWw8V0hMU0w6OkNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiB3aGxzbERlc2NyaXB0b3I7CiAgICAg
aWYgKGlzV2hsc2wpCiAgICAgICAgIHdobHNsRGVzY3JpcHRvciA9IFdITFNMOjpDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKCk7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdHJ1Y3QgQ3JlYXRlUmVz
dWx0IHsKICAgICBXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7CiB9
OwogCi1zdGF0aWMgT3B0aW9uYWw8Q3JlYXRlUmVzdWx0PiB0cnlDcmVhdGVNVExDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3JlYXRlUmVzdWx0PiB0cnlDcmVhdGVNVExDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQog
ewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVURldmljZSEiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVE
ZXZpY2VNZXRhbC5tbQppbmRleCBhNGYyYTgxZmRjZTI5Nzg2YmEzNDA1OWIwZWNhZjVhOTg3NjMy
YTAzLi5hMzhmNjk1YTg3MzAyZjk1MDExMjNlOGI1ZTNmMmE5YWMwZTBjOGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0
YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VURldmljZU1ldGFsLm1tCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgR1BVRGV2aWNlOjpwcmV3YXJt
KCkKICNlbmRpZgogfQogCi1SZWZQdHI8R1BVRGV2aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZShj
b25zdCBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQorUmVmUHRy
PEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25zKQogewogICAgIFJldGFpblB0cjxNVExEZXZp
Y2U+IGRldmljZVB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29u
dmVydExheW91dC5jcHAKaW5kZXggMzU0YzZhMmE5ZjUzMzkwOTY0OTlhYTdiYmI0YWQ2YmFiOTdh
ODA2Ny4uNWVlMDk4OGM5MzBhMDBiNzQ2Nzc3YzdhMDZiN2Q5ZDFmNDEzMTY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5l
TWV0YWxDb252ZXJ0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCkBAIC00NSwy
NCArNDUsMjQgQEAgc3RhdGljIE9wdGlvblNldDxXSExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRT
aGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdlRmxhZ3MKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiBjb252
ZXJ0QmluZGluZ1R5cGUoR1BVQmluZEdyb3VwTGF5b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRhaWxz
IGludGVybmFsQmluZGluZ0RldGFpbHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6Qmlu
ZGluZzo6QmluZGluZ0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMYXlv
dXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgaW50ZXJuYWxCaW5kaW5nRGV0YWlscykKIHsKLSAg
ICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlv
dXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRp
bmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpVbmlmb3JtQnVmZmVyIHVuaWZvcm1CdWZmZXIp
IC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAg
ICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIu
aW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpE
eW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdE
ZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1VuaWZvcm1C
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxz
PiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRp
b25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsg
V0hMU0w6OlNhbXBsZXJCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlv
dXQ6OlNhbXBsZWRUZXh0dXJlKSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0Rl
dGFpbHM+IHsKKyAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkg
LT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAg
ICAgcmV0dXJuIHsgV0hMU0w6OlRleHR1cmVCaW5kaW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVC
aW5kR3JvdXBMYXlvdXQ6OlN0b3JhZ2VCdWZmZXIgc3RvcmFnZUJ1ZmZlcikgLT4gT3B0aW9uYWw8
V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91
cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdI
TFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewogICAgICAgICByZXR1cm4geyBXSExTTDo6
U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9
IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIp
IC0+IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4geworICAgIH0sIFsm
XShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlv
bmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0pLCBpbnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKIH0KIAotT3B0aW9u
YWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYg
bGF5b3V0KQorc3RkOjpvcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0
IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgV0hMU0w6OkxheW91dCByZXN1bHQ7
CiAgICAgaWYgKGxheW91dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuaAppbmRleCA4ZTI5ZDkzYWYwMjVlYTJlMWE2MTFjY2FmMzkyZTAw
Y2MxNmJiNjIwLi44MDUxZWUzZjdlZTExOTYxMWJjOTk4MTM0N2UxMzBiMDMwNTJmZTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlw
ZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0
OwogCi1PcHRpb25hbDxXSExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVs
aW5lTGF5b3V0Jik7CitzdGQ6Om9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlvdXQo
Y29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCmluZGV4IGE4NDdjZTAzZjUyZjlhMjU2ZDkxMjAzMmVlM2RiMmJjODg0
Zjk5MWEuLjhiM2JjNzc4YTYxMjJlNGE0MWMxYmM3YmZhODc1NmFkZmUwM2ZkMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgc3Rh
dGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVydFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3Jt
YXQgdmVydGV4Rm9ybWF0KQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFdITFNMOjpUZXh0
dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVy
ZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UmdiYTh1bm9ybToKQEAgLTE0OSw3ICsxNDks
NyBAQCBzdGF0aWMgTVRMVmVydGV4U3RlcEZ1bmN0aW9uIG10bFN0ZXBGdW5jdGlvbkZvckdQVUlu
cHV0U3RlcE1vZGUoR1BVSW5wdXRTdGVwTW9kZQogLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIEdQ
VUxpbWl0cyB3aGVuIHRoYXQgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCiBjb25zdGV4cHIgdW5z
aWduZWQgbWF4VmVydGV4QXR0cmlidXRlcyA9IDE2OwogCi1zdGF0aWMgYm9vbCB0cnlTZXRWZXJ0
ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE1UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgT3B0aW9uYWw8V0hMU0w6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMm
IGVycm9yU2NvcGVzKQorc3RhdGljIGJvb2wgdHJ5U2V0VmVydGV4SW5wdXQoY29uc3QgR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgKm10bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQog
ewogICAgIGNvbnN0IGF1dG8mIGJ1ZmZlcnMgPSBkZXNjcmlwdG9yLnZlcnRleEJ1ZmZlcnM7CiAK
QEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgTVRMQmxlbmRGYWN0b3IgbXRsQmxlbmRGYWN0b3JG
b3JHUFVCbGVuZEZhY3RvcihHUFVCbGVuZEZhY3RvciBmYWN0b3IpCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IFZlY3Rv
cjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIE9wdGlvbmFsPFdITFNMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykKK3N0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IFZlY3Rv
cjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIHN0ZDo6b3B0aW9uYWw8V0hM
U0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JT
Y29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbWF4aW11
bSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgcGVyIHJlbmRlciBwYXNzIGZyb20gR1BVTGlt
aXRzLgogICAgIGlmIChjb2xvclN0YXRlcy5zaXplKCkgPiA0KSB7CkBAIC0zNzgsNyArMzc4LDcg
QEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoTVRMTGlicmFyeSAqdmVydGV4TWV0
YWxMaWJyYXJ5LCBNVExMaWJyYXJ5ICpmcmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRp
YyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3ImIHZlcnRleFN0YWdlLCBjb25zdCBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBPcHRpb25hbDxXSExTTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMpCitzdGF0aWMgYm9vbCB0cnlTZXRGdW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1h
YmxlU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBz
dGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2Ny
aXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKICAgICBSZXRhaW5QdHI8TVRM
TGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21lbnRMaWJyYXJ5OwogICAgIFN0cmluZyB2ZXJ0
ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9pbnQ7CkBAIC00NTksNyArNDU5LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IoY28KICAgICBib29sIGlzV2hsc2wgPSB2ZXJ0ZXhTdGFnZS5tb2R1
bGUtPndobHNsTW9kdWxlKCk7CiAKICAgICAvLyBTZXQgZGF0YSBmb3IgdGhlIE1ldGFsIHBpcGVs
aW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBpZiBuZWVkZWQpLgotICAgIE9wdGlvbmFsPFdI
TFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRvcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRv
cjsKICAgICBpZiAoaXNXaGxzbCkKICAgICAgICAgd2hsc2xEZXNjcmlwdG9yID0gV0hMU0w6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwogCkBAIC01MzAsNyArNTMwLDcgQEAgUmVmUHRyPEdQ
VVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUo
V1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmlt
aXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3Jp
cHRvci5sYXlvdXQsIGRlc2NyaXB0b3IpKTsKIH0KIAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJl
bmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5j
aWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmlt
aXRpdmVUb3BvbG9neSB0b3BvbG9neSwgT3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1hdCwg
Y29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0LCBjb25zdCBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9yQmFzZSkKK0dQVVJlbmRlclBp
cGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+
JiYgZGVwdGhTdGVuY2lsLCBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4mJiBwaXBl
bGluZSwgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgdG9wb2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5k
ZXhGb3JtYXQ+IGZvcm1hdCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0
LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9y
QmFzZSkKICAgICA6IEdQVVBpcGVsaW5lKCkKICAgICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RG
TW92ZShkZXB0aFN0ZW5jaWwpKQogICAgICwgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKQpAQCAtNTQzLDcgKzU0Myw3IEBAIEdQVVJlbmRlclBpcGVsaW5lOjpHUFVS
ZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhTdGVu
CiAKIEdQVVJlbmRlclBpcGVsaW5lOjp+R1BVUmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CiAK
LWJvb2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIE9wdGlvbmFs
PEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudFN0YWdlKQorYm9vbCBH
UFVSZW5kZXJQaXBlbGluZTo6cmVjb21waWxlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKIHsKICAgICBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0
LmdldCgpKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoZnJhZ21lbnRTdGFnZSksIG1f
cmVuZGVyRGVzY3JpcHRvckJhc2UpOwogICAgIGF1dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNj
b3Blczo6Y3JlYXRlKFtdIChHUFVFcnJvciYmKSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1l
dGFsLm1tCmluZGV4IDY1NmYxNDhjZDczMTRkMTdkOWZiYzQzYmE3YzIyZjFiNmIwZGEwYWEuLjY1
ZDA1MDNhOTY1MGQ4ZjdmNTc3YWQ0NjYyZDZiNTQ5OWI0NjRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dh
cENoYWluTWV0YWwubW0KQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgT3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9y
bWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4
ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9y
bWF0KQogewogICAgIGF1dG8gbXRsRm9ybWF0ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+
KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoZm9ybWF0KSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVU
ZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVVGV4dHVyZU1ldGFsLm1tCmluZGV4IGFjMmM0MmJmNjBjMjM2MzQ5YWY4NmNjMGIwZDE2
YzQ0ODg1ZGUyMGIuLjQ3MmQ0ODk2MjVmM2QwN2JmYjAxZGQ5ZTAzODhlODAxMmZiNTM4ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVU
ZXh0dXJlTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgTVRMVGV4
dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBHUFVU
ZXh0dXJlRGVzYwogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4g
bXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1
cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQ
VVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBmbGFn
cywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQogewogI2lmIExPR19ESVNBQkxFRAog
ICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVRGV2aWNlRGF3bi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcAppbmRl
eCBhN2JmYjE5MDk3MjAzMWI3NWY4ZWNkYTQwOTYzZjhmZDljMDg2MGQ0Li5iOWQzMjg3ODBhZTU5
ZGJmNTQyYTg0MWFhM2VkZjQzZjEzZWJhNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVEZXZpY2VEYXduLmNwcApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxHUFVEZXZpY2U+
IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucz4mIG9wdGlvbnMpCitSZWZQdHI8R1BVRGV2aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZShj
b25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24vR1BVUmVuZGVyUGlwZWxpbmVEYXdu
LmNwcAppbmRleCAxN2EzMWFiNjYyMGViNDIwNDU4OWFjOTNiZTg5MWNjMjFlZTMxZWE3Li5jNTJm
ZTFlYzA0ZmExY2Y5NWY3MzE2OGI0YTllNWRmODMwNTk0ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVJl
bmRlclBpcGVsaW5lRGF3bi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2
aWNlLAogCiBHUFVSZW5kZXJQaXBlbGluZTo6fkdQVVJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0
OwogCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpyZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiBk
ZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBPcHRp
b25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKK2Jv
b2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIHN0ZDo6b3B0aW9u
YWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50U3RhZ2UpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAK
aW5kZXggYzM5N2FjMGE0NjFiYjRkZjU5ZmZjOGRhZTNkZWU0NWM4ODFlNmFhOS4uNGNmYTRmZDg0
YmNmYWE5N2RjNGY3M2UxYmRhZTFiNThmMjliMzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1Np
bmtHU3RyZWFtZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCB3ZWJLaXRHTFZpZGVvU2lu
a0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1Rf
Q0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9CiAKLU9wdGlvbmFsPEdSZWZQdHI8R3N0Q29u
dGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hhciogY29udGV4dFR5cGUpCitzdGQ6Om9w
dGlvbmFsPEdSZWZQdHI8R3N0Q29udGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hhciog
Y29udGV4dFR5cGUpCiB7CiAgICAgYXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCk7CiAgICAgYXV0byogZ3N0R0xEaXNwbGF5
ID0gc2hhcmVkRGlzcGxheS5nc3RHTERpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKaW5kZXggNTU1OGJmYjMyZTkxOTA1Y2Y2Zjk5MjUwZmY3M2ZjY2YyMGRkYjU5Ny4uZDE4ODg3
ZjUxMmRiZjU2MjUwZDkyMzI4N2U2OTI1NGIxYWNlOThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZy
b21DYXBzKGNvbnN0IEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9u
RnJvbUNhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykKK3N0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBn
ZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogewogICAgIGlm
ICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0
aGVzZSBhcmUgbm90IGEgdmlkZW8gY2FwcyIpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgYXJl
RW5jcnlwdGVkQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gc19VSVByb2Nlc3NDb21tYW5kTGluZU9wdGlvbnM7Citz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gc19VSVByb2Nlc3NDb21tYW5kTGlu
ZU9wdGlvbnM7CiB2b2lkIHNldEdTdHJlYW1lck9wdGlvbnNGcm9tVUlQcm9jZXNzKFZlY3RvcjxT
dHJpbmc+JiYgb3B0aW9ucykKIHsKICAgICBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5lT3B0aW9ucyA9
IFdURk1vdmUob3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggYTMxNDlhMzZj
N2YwOTU2MWEwYzMxZWY4MWMyMzI0ZDkwZTI2NzNmOC4uMmRhNWM2ZGZjYWRhYTY5MTQ1MDlmMmI0
N2M3OTFmNDgwOGJjZmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtNjIsNyArNjIs
NyBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50
IG1pbm9yLCBndWludCBtaWNybykKIEdzdFBhZCogd2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGlj
VGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqLCBjb25zdCBnY2hhciogbmFtZSwgR3N0UGFk
KiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0
RnJvbUNhcHMoY29uc3QgR3N0Q2FwcyosIFdlYkNvcmU6OkludFNpemUmLCBHc3RWaWRlb0Zvcm1h
dCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlv
RGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKLU9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9S
ZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyopOworc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGNvbnN0IEdzdENhcHMqKTsKIGJvb2wgZ2V0
U2FtcGxlVmlkZW9JbmZvKEdzdFNhbXBsZSosIEdzdFZpZGVvSW5mbyYpOwogI2VuZGlmCiBjb25z
dCBjaGFyKiBjYXBzTWVkaWFUeXBlKGNvbnN0IEdzdENhcHMqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggYTdmMjM0OGE1ZmM2ZTA5M2JiMzQwNTA4
Y2Y3YzczZGIzZTg2NDk1MS4uZTlkZmJhMGE3YzY3NWJkMmU5ZGZmYzhlMTY0NWRjZmNmZjEwMTgw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTEz
Miw3ICsxMzIsNyBAQCBHTGlzdCogR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFj
dG9yaWVzOjpmYWN0b3J5KEdTdHJlYW1lclJlZ2lzdHJ5U2NhbgogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLUdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlM
b29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpo
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGUgZmFjdG9yeVR5cGUs
IGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVD
bGFzc2lmaWVyIHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyLCBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0CitHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZh
Y3Rvcmllczo6aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlIGZh
Y3RvcnlUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllciBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0CiB7CiAgICAgYXV0
byogZWxlbWVudEZhY3RvcmllcyA9IGZhY3RvcnkoZmFjdG9yeVR5cGUpOwogICAgIGlmICghZWxl
bWVudEZhY3RvcmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaApp
bmRleCBmNzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0MzUyM2EzOTE5MDA0ZjFkLi43YjUxYjZlM2Jj
M2Q1NzM3NWY1N2UxOTlkMzY5Yjc5OGE5ODU1Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
R0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAKICAgICAgICAgZW51bSBjbGFzcyBDaGVja0hh
cmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsKLSAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1
bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBD
aGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShU
eXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENo
ZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
ZGlzYWxsb3dlZExpc3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgICAgIEdMaXN0KiBh
dWRpb0RlY29kZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CiAgICAgICAgIEdMaXN0KiBhdWRpb1Bh
cnNlckZhY3RvcmllcyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0ZyYW1lSG9sZGVyLmNwcAppbmRleCBlZWYxMjc0YmVkZjJjYTEwYTg0MzU1NDZhYTI2MTIyYThj
ZGI1ZGI0Li4zOTI5ZmJiM2YxNzRiY2JjZDhkMjc2ZTBjZGIzM2YzMzE3MDg0ZGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9GcmFtZUhvbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0Vmlk
ZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBsZSwgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVy
UGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3JtLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZs
YWdzLCBib29sIGdzdEdMRW5hYmxlZCkKK0dzdFZpZGVvRnJhbWVIb2xkZXI6OkdzdFZpZGVvRnJh
bWVIb2xkZXIoR3N0U2FtcGxlKiBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVy
UGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3JtLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZs
YWdzLCBib29sIGdzdEdMRW5hYmxlZCkKICAgICA6IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0odmlk
ZW9EZWNvZGVyUGxhdGZvcm0pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoR1NUX0lTX1NBTVBMRShz
YW1wbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5oCmluZGV4
IDcxNDlhYjU4ZTgxYzc2ODE4MTljNThlNzUzYTFiODgzZWMzMWEzNDEuLmVjZDFiMTliNjE3NmVh
NGNlM2MxN2U5ZjI1YzQzMThkM2YzNGJkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvRnJhbWVIb2xkZXIuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdzdFZpZGVvRnJhbWVIb2xkZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OlVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgewogcHVibGljOgotICAgIGV4
cGxpY2l0IEdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlKiwgT3B0aW9uYWw8R3N0VmlkZW9E
ZWNvZGVyUGxhdGZvcm0+LCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBib29sIGdzdEdMRW5hYmxl
ZCk7CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqLCBzdGQ6Om9w
dGlvbmFsPEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtPiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywg
Ym9vbCBnc3RHTEVuYWJsZWQpOwogICAgIHZpcnR1YWwgfkdzdFZpZGVvRnJhbWVIb2xkZXIoKTsK
IAogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCkBAIC02Myw3ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgR3N0VmlkZW9GcmFtZSBtX3ZpZGVvRnJhbWUgeyB9OwogICAgIElu
dFNpemUgbV9zaXplOwogICAgIGJvb2wgbV9oYXNBbHBoYUNoYW5uZWw7Ci0gICAgT3B0aW9uYWw8
R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07CisgICAgc3Rk
OjpvcHRpb25hbDxHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0Zm9y
bTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fZmxhZ3MgeyB9OwogICAgIEdMdWludCBt
X3RleHR1cmVJRCB7IDAgfTsKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDkxZjkyY2JiY2NjOGIyNmVmMDc1YzcwYzg1NTBmOWE4
NWE4OWU0ZTQuLjFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAg
ICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5z
aW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90
U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVybiBz
aXplKCk7IH0KICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdCBmaW5hbCB7IHJldHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQpAQCAtMTMxLDcgKzEz
MSw3IEBAIHByaXZhdGU6CiAgICAgRGVjb2RlT3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vy
c29yOwogICAgIExvY2sgbV9zYW1wbGVHZW5lcmF0b3JMb2NrOwogICAgIGJvb2wgbV9lb3MgeyBm
YWxzZSB9OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEludFNpemU+IG1fc2l6ZTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBSZWZQdHI8SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI+IG1faW5uZXJEZWNvZGVyOwogICAgIENv
bmRpdGlvbiBtX3NhbXBsZUNvbmRpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWIxODAyMTFlZmEyNjIyZGVmMWFhNGE4NzI5ZmI2
MjdjNTIyZjczZS4uY2EzZDhjNTAwMTg5ZmQ5MTIwZDQzYjRkM2Y0ZWRhMDM5MDZkMWJmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTgw
NCw3ICs4MDQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiByZXNvbHZlZE9yaWdpbi0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8Ym9v
bD4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luKSBjb25zdAogewogICAgIEdTVF9UUkFDRV9PQkpFQ1QocGlwZWxpbmUoKSwgIkNo
ZWNraW5nICV1IG9yaWdpbnMiLCBtX29yaWdpbnMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJl
c3BvbnNlT3JpZ2luIDogbV9vcmlnaW5zKSB7CkBAIC0yODYxLDcgKzI4NjEsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShGdW5jdGlv
bjx2b2lkKCk+JiYgdGFzawogICAgIGlmICghbV9waXBlbGluZSB8fCBtX2RpZEVycm9yT2NjdXIg
fHwgbV9pc1NlZWtpbmcgfHwgbV9pc1BhdXNlZCB8fCAhbV9wbGF5YmFja1JhdGUgfHwgIWN1cnJl
bnRUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8
RnVuY3Rpb248dm9pZCgpPj4gdGFza1RvU2NoZWR1bGU7CisgICAgc3RkOjpvcHRpb25hbDxGdW5j
dGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsKICAgICB7CiAgICAgICAgIERhdGFNdXRleExv
Y2tlciB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXIgeyBtX1Rhc2tBdE1lZGlhVGltZVNjaGVkdWxl
ckRhdGFNdXRleCB9OwogICAgICAgICB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXItPnNldFRhc2so
V1RGTW92ZSh0YXNrKSwgdGltZSwKQEAgLTM1NTUsNyArMzU1NSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVt
ZSogdm9sdW1lCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fdm9sdW1lRWxlbWVudC5n
ZXQoKSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0sobXV0ZUNoYW5nZWRDYWxsYmFjayksIHRo
aXMpOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6
b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgaWYgKCF3ZWJr
aXRHc3RDaGVja1ZlcnNpb24oMSwgMTgsIDApICYmICFtX2Zwc1NpbmspCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggZGYwMjk2Y2Q2M2VkOGYzNmM0YmJjZjhkYTFlNmUyYzc3YWE2OTZkZS4uZDQz
NGMwMWUwYWQwOGZmM2VmNjQ3MjdlOTg2YjBiZmNkOTU4YmNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxk
VGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKSBmaW5hbDsKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKICAgICBNZWRpYVBsYXllcjo6TW92
aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKICAgICB2b2lkIGFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVGFza0F0TWVk
aWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAK
QEAgLTMyNiw3ICszMjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmPE1haW5UaHJlYWROb3RpZmll
cjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKICAgICBNZWRpYVBsYXllciog
bV9wbGF5ZXI7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxN
ZWRpYVRpbWU+IG1fY2FjaGVkUG9zaXRpb247CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE1l
ZGlhVGltZT4gbV9jYWNoZWRQb3NpdGlvbjsKICAgICBtdXRhYmxlIE1lZGlhVGltZSBtX2NhY2hl
ZER1cmF0aW9uOwogICAgIGJvb2wgbV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0
aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNDaGFuZ2luZ1JhdGUgeyBmYWxzZSB9OwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNXYWl0aW5nRm9yS2V5IHsg
ZmFsc2UgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+
IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07CisgICAgc3RkOjpvcHRpb25hbDxHc3RWaWRlb0RlY29k
ZXJQbGF0Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0Zm9ybTsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXIgewpAQCAtNDAzLDEyICs0MDMsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fdGFzayA9IFdURk1vdmUodGFzayk7CiAgICAgICAgICAgICBtX3Bs
YXliYWNrRGlyZWN0aW9uID0gcGxheWJhY2tEaXJlY3Rpb247CiAgICAgICAgIH0KLSAgICAgICAg
T3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gY2hlY2tUYXNrRm9yU2NoZWR1bGluZyhjb25zdCBN
ZWRpYVRpbWUmIGN1cnJlbnRUaW1lKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEZ1bmN0aW9uPHZv
aWQoKT4+IGNoZWNrVGFza0ZvclNjaGVkdWxpbmcoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGlt
ZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX3RhcmdldFRpbWUuaXNWYWxpZCgpIHx8
ICFjdXJyZW50VGltZS5pc0Zpbml0ZSgpCiAgICAgICAgICAgICAgICAgfHwgKG1fcGxheWJhY2tE
aXJlY3Rpb24gPT0gRm9yd2FyZCAmJiBjdXJyZW50VGltZSA8IG1fdGFyZ2V0VGltZSkKICAgICAg
ICAgICAgICAgICB8fCAobV9wbGF5YmFja0RpcmVjdGlvbiA9PSBCYWNrd2FyZCAmJiBjdXJyZW50
VGltZSA+IG1fdGFyZ2V0VGltZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZ1
bmN0aW9uPHZvaWQoKT4+KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
RnVuY3Rpb248dm9pZCgpPj4oKTsKICAgICAgICAgICAgIG1fdGFyZ2V0VGltZSA9IE1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUoKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fdGFzayk7CiAg
ICAgICAgIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDY0
X3QgbV9yZWFkUG9zaXRpb25BdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MgeyAwIH07CiAKICAgICBI
YXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG1fb3JpZ2luczsKLSAgICBP
cHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzVGFpbnRlZE9yaWdpbiB7IHN0ZDo6bnVsbG9wdCB9Owog
CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1NpbmsgeyBudWxscHRyIH07CiAgICAgdWlu
dDY0X3QgbV90b3RhbFZpZGVvRnJhbWVzIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3Ry
ZWFtZXIuaAppbmRleCA4NTgyY2I2NjI1MDlhOGQyZmI1MDcyODE5OTU3MjMyMWViMTM1YmM1Li44
ZjYwZDhhZjk1ZWNiZmUxNDc2NjU1MDUxMjU0NTZhZTk4Y2ZkNWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgUmVmPE1l
ZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbGFnczsgfQog
ICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+
IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCAyNmI4NmE1ZDA3NWZhNTYwYzVmYTg5ZjY0NTk2
MjYwYWUyYjgxMTBmLi5hZGJkYzViMDhmOWI2NjMzMTc5YjE3Mjg5YzIwMjBhMDM2ZTE2YmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAgICAgICAgICAgY2xvc2UoKmZk
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1h
cCgpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgp
CiAgICAgewogICAgICAgICBmZCA9IG1lbWZkX2NyZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1G
RF9DTE9FWEVDKTsKICAgICAgICAgaWYgKCpmZCA9PSAtMSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBz
dHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxpbnQzMl90PiBmZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGZkOwog
ICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4gYnVmZmVyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94
eUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVByb3h5Q2xlYXJLZXkuaAppbmRleCBlM2Q5N2E1YzllZDdmZmIxNzVhMTM4MGVmZTVh
MWMyMGUxMDgxNDk1Li5mZjc0YjFlNjMzYTEzNTc2NWMxZmJlZjFiODJiY2RhYjhlMDg5ZDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbG9zZUdDcnlwdEhhbmRsZSgpOwogCiAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWV0aGluZyBpbiBXZWJDb3JlIGZvciBjcnlwdG8uLi4K
LSAgICBPcHRpb25hbDxnY3J5X2NpcGhlcl9oZF90PiBtX2dDcnlwdEhhbmRsZSB7IHN0ZDo6bnVs
bG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5k
bGUgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhU
ZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCA0MDFj
MjdlYmI3OGFkNmE5M2MyOWI0ZWQzZTliMjAwMjYxZWUyMzk5Li5hYWRlOGE2ZjZlYTAyN2I5ZTk5
ZGEzN2UwMDc3MjE2Yzc5ODBkZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRD
b250cm9sbGVySGFyZkJ1enouY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIFZlY3Rvcjxo
Yl9mZWF0dXJlX3QsIDQ+IGZvbnRGZWF0dXJlcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgRm9udFAKICAgICByZXR1cm4gZmVhdHVyZXM7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxVU2Ny
aXB0Q29kZT4gY2hhcmFjdGVyU2NyaXB0KFVDaGFyMzIgY2hhcmFjdGVyKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VVNjcmlwdENvZGU+IGNoYXJhY3RlclNjcmlwdChVQ2hhcjMyIGNoYXJhY3RlcikK
IHsKICAgICBVRXJyb3JDb2RlIGVycm9yQ29kZSA9IFVfWkVST19FUlJPUjsKICAgICBVU2NyaXB0
Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjaGFyYWN0ZXIsICZlcnJvckNvZGUpOwpA
QCAtNDE2LDcgKzQxNiw3IEBAIHN0cnVjdCBIQlJ1biB7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0
OwogfTsKIAotc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxIQlJ1bj4gZmluZE5leHRSdW4oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IoY2hhcmFjdGVycyArIG9mZnNldCwgb2Zmc2V0LCBs
ZW5ndGgsIGxlbmd0aCk7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXI7CkBAIC00NTYsMTAgKzQ1Niwx
MCBAQCBzdGF0aWMgT3B0aW9uYWw8SEJSdW4+IGZpbmROZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1
cnJlbnRTY3JpcHQgIT0gbmV4dFNjcmlwdCAmJiAhdXNjcmlwdF9oYXNTY3JpcHQoY2hhcmFjdGVy
LCBjdXJyZW50U2NyaXB0LnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhC
UnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNj
cmlwdC52YWx1ZSgpIH0pOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SEJSdW4+
KHsgc3RhcnRJbmRleCwgdGV4dEl0ZXJhdG9yLmN1cnJlbnRJbmRleCgpLCBjdXJyZW50U2NyaXB0
LnZhbHVlKCkgfSk7CiAgICAgfQogCi0gICAgcmV0dXJuIE9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0
SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgp
IH0pOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJ
dGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgpIH0pOwogfQogCiBz
dGF0aWMgaGJfc2NyaXB0X3QgZmluZFNjcmlwdEZvclZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb24o
aGJfZmFjZV90KiBmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCmluZGV4IDJiNWY1
MjRmZDE3NTIxMDg0MmE5ZmM4ZWNhY2UzMTE1NzY3ZTkxYmUuLjQ3NTUwODY0MTEzZGU4MDkwODRj
ZTg3YjZhOTI3ZGIzNGY3MDY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBib29s
IHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wTm90aWZp
Y2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBk
aXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOwog
CiAgICAgUmV0YWluUHRyPFdlYkRpc3BsYXlMaW5rSGFuZGxlcj4gbV9oYW5kbGVyOwogICAgIERp
c3BsYXlVcGRhdGUgbV9jdXJyZW50VXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mu
bW0KaW5kZXggZTUxNmY4MTY5YjA1NzFiZGUzYmJjODMxYjE0YjI0YWE2NzM4ZmJkZS4uNjYyMmI0
YWI5YWFiNjhhZjRmYTU3OWRmYThkMmMyMDdmNTk2N2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1M6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAgIG1fZGlzcGxheUxpbmtJc0Fj
dGl2ZSA9IGZhbHNlOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5v
bWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIHJldHVybiBEaXNwbGF5TGlua0ZyYW1lc1Bl
clNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaAppbmRleCBlY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5ODA5OWVjOGRhYzJkLi44NzBi
ZGM4MGYzNTUxMGQzNjJlNTM0MzM5ZGE5NjBhNzBmYmJiNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkg
PSBkZWZhdWx0OwogCi0gICAgdXNpbmcgUGVla1Jlc3VsdCA9IE9wdGlvbmFsPHN0ZDo6cGFpcjxG
b3VyQ0MsIHVpbnQ2NF90Pj47CisgICAgdXNpbmcgUGVla1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEZvdXJDQywgdWludDY0X3Q+PjsKICAgICBzdGF0aWMgUGVla1Jlc3VsdCBwZWVr
Qm94KEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCBvZmZzZXQpOwogICAgIHN0YXRpYyBzaXplX3Qg
bWluaW11bUJveFNpemUoKSB7IHJldHVybiAyICogc2l6ZW9mKHVpbnQzMl90KTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCmluZGV4
IDc2YzU0ZGYxMGVhMjQ1MzEzODIzYTM1YzIyNTNkOTVhZDAyYTRjNGUuLjgwZjUwNzhiZDM4YTcy
OWFmZTAzZjI0YjM5NmVkOTdjMTYwYjA5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIEpT
Qzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1J
RChKU0M6OkRhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCBvZmZzZXQpCitzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVr
U3lzdGVtSUQoSlNDOjpEYXRhVmlldyYgdmlldywgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIGF1
dG8gcGVla1Jlc3VsdCA9IElTT0JveDo6cGVla0JveCh2aWV3LCBvZmZzZXQpOwogICAgIGlmICgh
cGVla1Jlc3VsdCB8fCBwZWVrUmVzdWx0LnZhbHVlKCkuZmlyc3QgIT0gYm94VHlwZU5hbWUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guaAppbmRl
eCAxMTI3ODBhYmNkNWYyZjllZGEyYTcyNzU2NTIwZjlhZTgxNzcwZjNhLi42OGUxNzJhNTgxNGIy
ZTFmMDk0NGFkNDcwNTZmNDJkZDI3ZGMxYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBLZXlJRCA9IFZlY3Rvcjx1aW50OF90PjsKICAgICBzdGF0aWMgRm91ckNDIGJveFR5
cGVOYW1lKCkgeyByZXR1cm4gInBzc2giOyB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQo
SlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4g
c3lzdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlEOyB9CiAgICAgVmVjdG9yPEtleUlE
PiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tleUlEczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJv
eC5oCmluZGV4IDgyMzk3NDIwNDZhMjZhOTJkOGJhN2I3OWExMWM5ZWFmZTJmZWQ5OWEuLjZiMzVj
NTg2YjY0ZmVkMWM2ODU0NzUxODY1MzI4NDU0MDBlYzQ2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9u
Qm94LmgKQEAgLTMzLDggKzMzLDggQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNy
eXB0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7IH0KIAotICAgIE9wdGlvbmFs
PGludDhfdD4gZGVmYXVsdENyeXB0Qnl0ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
Q3J5cHRCeXRlQmxvY2s7IH0KLSAgICBPcHRpb25hbDxpbnQ4X3Q+IGRlZmF1bHRTa2lwQnl0ZUJs
b2NrKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0U2tpcEJ5dGVCbG9jazsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8aW50OF90PiBkZWZhdWx0Q3J5cHRCeXRlQmxvY2soKSBjb25zdCB7IHJldHVybiBt
X2RlZmF1bHRDcnlwdEJ5dGVCbG9jazsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50OF90PiBkZWZh
dWx0U2tpcEJ5dGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7
IH0KICAgICBpbnQ4X3QgZGVmYXVsdElzUHJvdGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZh
dWx0SXNQcm90ZWN0ZWQ7IH0KICAgICBpbnQ4X3QgZGVmYXVsdFBlclNhbXBsZUlWU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBlclNhbXBsZUlWU2l6ZTsgfQogICAgIFZlY3Rvcjx1aW50
OF90PiBkZWZhdWx0S0lEKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0S0lEOyB9CkBAIC00Myw4
ICs0Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3
JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxpbnQ4X3Q+IG1f
ZGVmYXVsdENyeXB0Qnl0ZUJsb2NrOwotICAgIE9wdGlvbmFsPGludDhfdD4gbV9kZWZhdWx0U2tp
cEJ5dGVCbG9jazsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDhfdD4gbV9kZWZhdWx0Q3J5cHRCeXRl
QmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ4X3Q+IG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7
CiAgICAgaW50OF90IG1fZGVmYXVsdElzUHJvdGVjdGVkIHsgMCB9OwogICAgIGludDhfdCBtX2Rl
ZmF1bHRQZXJTYW1wbGVJVlNpemUgeyAwIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVmYXVs
dEtJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRD
dWUuaAppbmRleCBlMjBiMTkxNzZjOTNmMzIyNmEyNmZiM2ZlMDcwN2JiMGQ3M2RkMzQ5Li5mZWM4
MGZmOTU5Y2Y2OTIxZjkwMGU5MjZiOTk2MGVlOTYwY2QwZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC03MCwzOSArNzAsMzkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxJU09XZWJWVFRDdWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElTT1dlYlZUVEN1ZT4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOwogICAg
ICAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIGlmICghcHJlc2VudGF0
aW9uVGltZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRp
bWU+IGR1cmF0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAo
IWR1cmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHNvdXJjZUlEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c291cmNlSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gc291cmNlSUQ7CiAgICAgICAgIGlmICghc291
cmNlSUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlk
ZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsU3RhcnRUaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxT
dGFydFRpbWU7CiAgICAgICAgIGlmICghb3JpZ2luYWxTdGFydFRpbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc2V0dGluZ3M7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzZXR0aW5nczsKICAgICAgICAgZGVjb2Rl
ciA+PiBzZXR0aW5nczsKICAgICAgICAgaWYgKCFzZXR0aW5ncykKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdWVUZXh0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VlVGV4dDsKICAgICAgICAgZGVjb2RlciA+PiBj
dWVUZXh0OwogICAgICAgICBpZiAoIWN1ZVRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tCmluZGV4IDA3YWFlOGFmZmNiMjQ4NTMwOThkYjZhMDFkMTVjYzlkMjljMTRjNTEuLjgw
Yjg0ZWE4YmQxMGY0OTE5Zjg3OTdjZDJjMzZmMzVmZGI5MzUxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTY0LDcgKzY0LDcg
QEAgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpCiAgICAgcmV0dXJuIHVzZU9sZEFx
dWFGb2N1c1JpbmdDb2xvcjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBt
YWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICpjb2xvcikKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9y
ICpjb2xvcikKIHsKICAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRs
ZSBjb2xvciBzcGFjZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5jcHAKaW5kZXggYjY1ZDgxNzczNzkzNjQ2NmEwZTkwZDVhMGM3MTc2YWM0MTg5M2I0Ni4uZDEy
OWQxYTdiZWUzZjcyNzZiZmQ0MGRjNzAzNmIxMTUyMmFhMDY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2Fj
eURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIExl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
CiAgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5h
bEZyYW1lc1BlclNlY29uZCgpCitzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gTGVnYWN5
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgp
CiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGluaygpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IGEy
ZGJjNTg3ZTIwZTZmY2M1NTZmNzAzZGQxM2VjMjQ2MzI4YjAxNWYuLjllZTA3NzhhMTIxNDM4YWNh
N2NkYWE4YWQ1NDY1NmUwMGMwNDI3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnRO
b3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25N
ZWNoYW5pc20oKSBmaW5hbDsKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlO
b21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQ
ZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CiAgICAgCiAg
ICAgYm9vbCBlbnN1cmVEaXNwbGF5TGluaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCmluZGV4
IGQ4Y2QxZGMxYzEwYTU5NDJiNWI4MmY1OGY1ODBiZjU0YzNjNzEyYWEuLjAxZmRmZjY3NjkxMDhk
MGVkY2Q1Nzg0Zjc4M2IwMjkzM2U4YTEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCkBAIC0z
Myw5ICszMyw5IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEFuaW1hdGlvblN0YXRlIHsgUGxh
eWluZywgUGF1c2VkLCBTdG9wcGVkIH07CiAKICAgICBzdHJ1Y3QgQXBwbGljYXRpb25SZXN1bHQg
ewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJhbnNm
b3JtOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG9wYWNpdHk7Ci0gICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IGZpbHRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+IHRyYW5zZm9ybTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG9wYWNpdHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz4gZmlsdGVyczsKICAgICAgICAgYm9vbCBoYXNSdW5uaW5nQW5p
bWF0aW9ucyB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKaW5kZXggODI1MWJlZTIyN2JmNjkzYTExMWZhMWQwYjc0ZjI4OGFiOWU4ZjY1My4u
MGFiZmI2MDExY2EzMjc5NGRhY2FhMTI2NDVlM2U0M2U4NmE2NmFjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBpbWFnZUIKICAgICBwYWludFRvQ2FudmFzKGNvbnRleHRBdHRyaWJ1dGVzKCksIFdURk1v
dmUoKnBpeGVsQnVmZmVyKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXIu
Y29udGV4dCgpKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkKK3N0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb1BpeGVsQnVmZmVyKCkKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBp
ZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCkBAIC0yMzUsNyArMjM1
LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmUKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jl
c3VsdHNGb3JQYWludGluZygpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQorc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJp
bmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNDQsNyArMjQ0LDcgQEAgT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVz
dWx0c0ZvclBhaW50aW5nKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29t
cG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmco
KQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yNTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygKIH0K
IAogI2lmICFQTEFURk9STShDT0NPQSkKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMo
KQogewogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBkOGMxNmMyMDMxYjgyMTA2MGFiYzQ2MGZiNDM3NWI4
NWRjOTFhYjQ0Li5iYjMzYTExNGRjN2Y3ZDJmY2Y3MzhiMDc5NzBiZGMwNmRkNzY4MzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwogCiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFs
OwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwotICAgIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOworICAg
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRp
bmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3Vs
dHNGb3JQYWludGluZygpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKQEAgLTU1Myw5ICs1NTMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tH
UFVTdGF0dXMoKTsKIAogCi0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdS
ZXN1bHRzKCk7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0
cygpOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRz
KCk7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHMo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCk7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lk
IHByZXBhcmVUZXh0dXJlSW1wbCgpOwpAQCAtNjQ0LDggKzY0NCw4IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkdMRVNo
YWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG1hcHBlZFN5
bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLCBzaXplX3QgY291bnQsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG9yaWdpbmFsU3ltYm9sTmFtZShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1hcHBlZFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW5hbFN5bWJvbEluU2hhZGVyU291
cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hcHBlZFN5bWJv
bEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5
bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIs
IEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFkZXJzOwogI2VuZGlm
IC8vICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCmluZGV4IDE4NDFjNTFlYzcyMTViOTk1M2M3ZmYyNDI0OTYyYzJhNjc4M2IyZmIuLjJlNDZi
NjE1MzZjODM1ZGZjYWNmOWY3OWUxMGU2ZDU5YWU3YTM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkK
IHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNy
ZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMzdlNGY4MzM2Mzg0NDhh
NGNhMjc0ZDBkNTE3ODVjMmQ3NDdhYTIxOC4uNzI2ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2
YjkxN2QyYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21t
b24uY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZVRleHR1cmUoKQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKK3N0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVu
ZGVyaW5nUmVzdWx0cygpCiB7CiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAg
IGlmIChjb250ZXh0QXR0cmlidXRlcygpLmFudGlhbGlhcykgewpAQCAtOTE1LDcgKzkxNSw3IEBA
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICByZXR1cm4gbWFrZVN0cmluZygid2ViZ2xfIiwgaGV4KG51bWJlciwgTG93ZXJjYXNlKSk7CiB9
CiAKLU9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJv
bEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5
bWJvbFR5cGUgc3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxT
dHJpbmc+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xJblNoYWRlclNvdXJj
ZU1hcChQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJv
bFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVy
U291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNl
TWFwLmVuZCgpKQpAQCAtOTczLDcgKzk3Myw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEFOR0xFCiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Om9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBz
aGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdp
bmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEFOR0xF
U2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
YXV0byByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAgICAgaWYgKHJl
c3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcAppbmRleCAyMjU1NjhjNjQ1ZDZhMzQ1MjQ4ZWU5OWVjZTQ5NDY5NTc0
M2NiMDY0Li4zODY0MTk4Zjc0YTU5MmJhNDI5YzZkMGE4YmM2MWRlODFhMzhmNjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQorc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKaW5kZXggZDNjZjgxMDAzOWU2MjZi
MDNhNmU1NzdmMzgyMTBiZDQ0YjBiNTU1OC4uMjcxZTRmZGYyOTMzZjFkMDFjZmRkYzJjMTNlYmQ1
ZDc4ZTVkYjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0ludmVydGlibGUoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OmlzZmluaXRlKGRldGVybWluYW50KSAmJiBkZXRlcm1pbmFudCAhPSAwOwogfQog
Ci1PcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZl
cnNlKCkgY29uc3QKIHsKICAgICBkb3VibGUgZGV0ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zvcm0p
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkZXRlcm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQgPT0g
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCmluZGV4IDhjNDBkYzFmNjA4MmNkMzQ5OTY3ZTg3
ZjkwZTI5NjdkMDU3ZGRhNTUuLmQwODY4MjI0MjgyMDcyZDc3ZmU2NWM2NjczNzAxMmQxMzY5NDE4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgeVNjYWxlKCkgY29uc3Q7CiAKICAgICBib29s
IGlzSW52ZXJ0aWJsZSgpIGNvbnN0OyAvLyBJZiB5b3UgY2FsbCB0aGlzIHRoaXMsIHlvdSdyZSBw
cm9iYWJseSBkb2luZyBpdCB3cm9uZy4KLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBibGVuZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9n
cmVzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggN2Q2NDEzMGI5Yjg5Zjgw
MjRkOTUxOTFkMjI5Yzk4MzVjY2M5NTI3Ny4uODI4ZDkyZWJlYzAyM2E0ZWIzM2UwOWE5NWU0OTE3
NjBlOTRiMmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBl
ZCkgY29uc3QKICAgICByZXR1cm4gcXVhZDsKIH0KIAotT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAor
c3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlR
dWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdhc0NsYW1wZWQpCiAgICAg
ICAgICp3YXNDbGFtcGVkID0gZmFsc2U7CkBAIC0xOTYsNyArMTk2LDcgQEAgT3B0aW9uYWw8Rmxv
YXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFt
cGVkKSBjb25zdAogICAgIHJldHVybiBxdWFkOwogfQogCi12b2lkIFRyYW5zZm9ybVN0YXRlOjpz
ZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBPcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFk
KQordm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFkKQogewogICAgIGlmICghcXVhZCkgewogICAg
ICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCA4YWEzM2U4ZTYxOWViZDAzMDJlNTgz
YTUyYzM3MWQ1NWMzNjczYWM3Li5hOGFjNTQ4OTE4YmFiMGRhNGQ4ZWFjNWJkMzg2ZGY2MDE3ODgz
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTU2Nyw3
ICsxNTY3LDcgQEAgYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxlKCkgY29u
c3QKICAgICByZXR1cm4gZmFicyh0eXBlID09IFR5cGU6OkFmZmluZSA/IChtMTEoKSAqIG0yMigp
IC0gbTEyKCkgKiBtMjEoKSkgOiBXZWJDb3JlOjpkZXRlcm1pbmFudDR4NChtX21hdHJpeCkpID49
IFNNQUxMX05VTUJFUjsKIH0KIAotT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAg
ICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6SWRlbnRp
dHlPclRyYW5zbGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5k
ZXggNWY3MjVhZDY2ZWY3NzA5MWU5ZmIwNjYwOThiOGRhNzU4ZjVhZjkwZi4uOTc5MjJhODY3NmNk
MTQzMzk0YWI4YzBmN2ZiYTA5MDc5MzU1ZjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaApAQCAtMjg2LDcgKzI4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbnZlcnRp
YmxlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25N
YXRyaXg+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlKCkgY29uc3Q7CiAKICAgICAvLyBEZWNvbXBv
c2UgdGhlIG1hdHJpeCBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMuCiAgICAgc3RydWN0IERlY29t
cG9zZWQyVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDgxNDVjNDdmZjkxZDg3YWQ2NDRkZDA0ZGEyN2Jk
NzUxZTEzZmFmYzEuLmRmOTE3ZmJjOWI0NDM3OGU3NDg3MmU1ZjI0ZWIzNjZjN2ZmZjViOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCkBAIC02OTIsNyArNjkyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9y
bURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6
cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKK3N0
ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgc3dpdGNoIChmYW1pbHlO
YW1lLmxlbmd0aCgpKSB7CiAgICAgLy8gT24gV2luZG93cywgd2UgZG9uJ3Qgc3VwcG9ydCBiaXRt
YXAgZm9udHMsIGJ1dCBsZWdhY3kgY29udGVudCBleHBlY3RzIHN1cHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCBhZDk1NTRjMDUwYWVlMmUxMGVjMTUzNTll
YjhiNDg1ZDM1MGNkYTRkLi5mYTIwODdlZTIxMWUzOWQ2MzM4MmRlZjgzN2RhMGZiYzQ2YTA2N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTI5NCwxOSArMjk0
LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1TdHJpbmcgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJp
bmcmLCBPcHRpb25hbDxkb3VibGU+LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcg
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4sIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAiZGF0YTosIl9zOwogfQogCi1WZWN0b3I8dWludDhf
dD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXggMDViOGNhMmEy
YTgzOWVhZGViZDM0MGNmNDUyODM3MzBjNmFkYTk0OC4uNTQyZWNiZWFmMGMxZTg1ODljYjJiZTI1
OWQzNTJmYzY4MGM0NTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAg
LTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcAppbmRleCBiN2Y4NDJiNjk3NmJjMGVlYTdjMzA3YzcyZGJjY2Yw
YWQ5ZGE0YWNjLi45YzEwYTQ2NGEzYTkzMDllN2I1NGNhZTI4YTdiYzU2Nzc1ZGU3OTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZXBldGl0aW9uQ291
bnQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0
dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6aG90U3BvdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggN2UxNzdiNzk5NWI0ZGM0MzY4
YzBkOTBmMDc0NzllZDVlZjE0Yzc1OC4uNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0M2NiYTIzZDAz
MDAxNmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CiAKICAgICBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2lt
cGxlRm9udERhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAKaW5kZXggZTZlMjQyNzQyZmIyODFlZWI5
Y2ViNzZiMzZhNDQwY2E0YTdlZjVmOS4uNmZkM2QzYzU5NTI2MDg5Nzg3YTk5MjA0ZjJjNzA5MzVi
ODIxYjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1NpbXBsZUZvbnREYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNhaXJvV2luLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgRm9udDo6ZGV0ZXJtaW5lUGl0Y2goKQogICAgIFJlc3RvcmVEQyhkYywgLTEpOwog
fQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0
ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZv
cm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hh
cjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhcmlhdGlvbiA/IGZhbHNlIDog
Z2x5cGhGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKaW5k
ZXggMjM4YzY0OTU0ODJhN2Y5NmM2ZTA0ZGZjNTc3NTI5ZWJiNDRjNWI5NC4uNzVhYTAxYTZmMWM4
MTllZGVjN2MxMmY1NjllMzM0YzVjY2M5NDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9z
aXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXBwb3J0c1hDb21wb3NpdGUudmFsdWUoKTsKIH0K
IAotYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+
JiBkYW1hZ2VFdmVudEJhc2UsIE9wdGlvbmFsPGludD4mIGRhbWFnZUVycm9yQmFzZSkgY29uc3QK
K2Jvb2wgUGxhdGZvcm1EaXNwbGF5WDExOjpzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxp
bnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNl
KSBjb25zdAogewogICAgIGlmICghbV9zdXBwb3J0c1hEYW1hZ2UpIHsKICAgICAgICAgbV9zdXBw
b3J0c1hEYW1hZ2UgPSBmYWxzZTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFBsYXRmb3JtRGlz
cGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwg
T3B0aW9uYQogICAgIHJldHVybiBtX3N1cHBvcnRzWERhbWFnZS52YWx1ZSgpOwogfQogCi1ib29s
IFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNHTFgoT3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JC
YXNlKSBjb25zdAorYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzR0xYKHN0ZDo6b3B0
aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25zdAogewogI2lmIFVTRShHTFgpCiAgICAgaWYg
KCFtX3N1cHBvcnRzR0xYKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKaW5kZXggYjQyNTViMTA2YzU2MGJj
YTFjYmUwMjZhZWNlMDlkNjQ3YTIxYzA4Yi4uZjg3NzEyZGFlYmY2MTYyODFkNDc3MWJkNzYwZDgz
MTFhNDJmNzZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
eDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6
CiAgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KICAg
ICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNv
bnN0OwotICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50
QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNlKSBjb25zdDsKLSAgICBib29sIHN1
cHBvcnRzR0xYKE9wdGlvbmFsPGludD4mIGdseEVycm9yQmFzZSkgY29uc3Q7CisgICAgYm9vbCBz
dXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6
b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNlKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRz
R0xYKHN0ZDo6b3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBQbGF0Zm9ybURpc3BsYXlYMTEoOjpEaXNwbGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsK
QEAgLTY1LDEzICs2NSwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICA6OkRpc3BsYXkqIG1f
ZGlzcGxheSB7IG51bGxwdHIgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9y
dHNYQ29tcG9zaXRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hEYW1h
Z2U7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fZGFtYWdlRXZlbnRCYXNlOwotICAgIG11
dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUVycm9yQmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hDb21wb3NpdGU7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYRGFtYWdlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxpbnQ+IG1fZGFtYWdlRXZlbnRCYXNlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+
IG1fZGFtYWdlRXJyb3JCYXNlOwogI2lmIFVTRShHTFgpCi0gICAgbXV0YWJsZSBPcHRpb25hbDxi
b29sPiBtX3N1cHBvcnRzR0xYOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2dseEVycm9y
QmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c0dMWDsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2dseEVycm9yQmFzZTsKICNlbmRpZgogICAg
IG11dGFibGUgdm9pZCogbV92aXN1YWwgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGZiZTcxOTg4MzI3YWQwZDA0
YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIuLmZlZThhODUwMDkxMjFlYWIyZTRjYjZhMThkYWFmZWU3
MTRkNTk2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAKQEAgLTI1NiwxMiArMjU2LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogfQogI2VuZGlmCiAKLXZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9s
aWN5LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PikKIHsKICAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnJlYWRUZXh0RnJvbUNsaXBib2FyZChtX25hbWUpOwogfQogCi12b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRl
bnRSZWFkaW5nUG9saWN5IHBvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewogICAgIHJl
YWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyLCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PikKIHsKICAgICBpZiAobV9zZWxlY3Rpb25EYXRhKSB7CiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZmlsZVBhdGggOiBtX3NlbGVjdGlvbkRhdGEtPmZpbGVuYW1lcygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTlkNmEyMWUyMTg3MDZlZDk3ZWI3MTlhMmNkNTM2
MGJhM2MwOTY2YS4uMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRo
ZSBhcmd1bWVudAogICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZh
bHNlLgotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3Bv
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAg
Ym9vbCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOwogICAgIEltYWdlT3JpZW50YXRpb24g
bV9vcmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxJbnRTaXplPiBtX2RlbnNpdHlDb3JyZWN0ZWRT
aXplOworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGQyNWNmZTZiMjE4ZjRiNjhiODI2Mzlh
ODBmZDRiNDMxZGIxOWMuLjg0ZjM5ZDJhNjI2YWJiNDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBJ
Q09JbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rl
cjo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29k
ZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdoZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZh
dWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aAogICAg
IC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFtZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5
IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwpAQCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFs
PEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogICAgIHJldHVybiBo
b3RTcG90QXRJbmRleCgwKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rl
cjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQ
b2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiB7CiAgICAgaWYgKGluZGV4ID49IG1fZGlyRW50cmllcy5zaXplKCkgfHwgbV9maWxlVHlwZSAh
PSBDVVJTT1IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggMmQ5ZjlhMzNiMTVhMjA1Mjg0M2JjNmZmMzYyODZjMGQyMjdlNDk4MC4uZmI3
YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgzZmY0MzJhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXZvaWQgYWNjZXNzaW5n
IGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20KICAgICAv
LyBpbnNpZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAgYm9vbCBzZXRGYWlsZWQoKSBmaW5hbDsKLSAg
ICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBl
bnVtIEltYWdlVHlwZSB7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBy
b2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBm
b3IgfGluZGV4fCwgcmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUgaXMgbm9uZS4KLSAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAg
Ly8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBv
ZmZzZXQgaW50bwogICAgIC8vIHxkYXRhfC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MuaAppbmRleCBjZTg1NTQ4Mjc0MzY4MDgxZmI3
OGIyYWY0MDk3MjQ1ODBiYWQ3NDc5Li5mNWY0YzE0NGYzZGNkYjJhYWRjNzVlMDllMGE0OTA1Yjll
ZjllZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90
aW9uQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1v
dGlvbkNsaWVudElPUy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBEZXZpY2VNb3Rp
b25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VNb3Rp
b25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1vdGlvbkNoYW5n
ZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgT3B0aW9u
YWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7
CisgICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdl
YkNvcmVNb3Rpb25NYW5hZ2VyKiBtX21vdGlvbk1hbmFnZXIgeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5tbQpp
bmRleCA1MzhmZDI2ODg0NjVhZTM4OWYzNjBlMDYyZDI1Zjk3MGFiN2NiZDFiLi4zNGI2OThiYjYx
YjZiYmRiYjYzMDNkYmFhMTUwMjJkZTA2M2Y4Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1MubW0KQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6OmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0
cm95ZWQoKQogICAgIFttX21vdGlvbk1hbmFnZXIgcmVtb3ZlTW90aW9uQ2xpZW50OnRoaXNdOwog
fQogCi12b2lkIERldmljZU1vdGlvbkNsaWVudElPUzo6bW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBP
cHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4geVJvdGF0aW9u
UmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQordm9pZCBEZXZpY2VNb3Rpb25D
bGllbnRJT1M6Om1vdGlvbkNoYW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNj
ZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJs
ZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHhS
b3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkKIHsKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oCmluZGV4IGE0MWI5ZDI1YzM1
MjRmZWUyYzExZDgyZDIwNGNlZDU4NGIyYjdlMTcuLjliM2FjNmRiZjQ3MWIxMTNiN2E1MjMzZWJm
MGNkNGNiOWM5NmVlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZ0RldmljZU1vdGlvbihN
b3Rpb25NYW5hZ2VyQ2xpZW50JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVu
dGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBk
b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFs
PGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
TW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpv
cHRpb25hbDxkb3VibGU+KSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAppbmRleCA1NzYxNmU4MTU0YzdmOGFlMjBjYTJiMWFi
MjM0NGZjZDVhNjQyMjQxLi5mZmNkNWZjYjUxZjczOTQ3MTY5YTY0OWRiMTQzYjQ3MWJhYTdjMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCkBA
IC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbnN1cmUgdGhlcmUgYXJlIG5vIGFz
eW5jIGNhbGxzIG9uIGEgZGVhZCB0aWxlIGNhY2hlLgogICAgIFJldGFpblB0cjxMZWdhY3lUaWxl
Q2FjaGVUb21ic3RvbmU+IG1fdG9tYnN0b25lOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBt
X292ZXJyaWRlVmlzaWJsZVJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fb3Zl
cnJpZGVWaXNpYmxlUmVjdDsKIAogICAgIEludFNpemUgbV90aWxlU2l6ZSB7IDUxMiwgNTEyIH07
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVk
RGV2aWNlTW9kZWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVkRGV2
aWNlTW9kZWwubW0KaW5kZXggNzEwNjZmYjg2MGFjNzVlZjdlOTE2OGY4Yjg2Y2JkZjIyY2M2YjUx
ZC4uOWZhNmE3NDM3MDFjN2MyNTA4ZjhjZDZkNmRhMTg1ZjE4NWVkODFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsaXplZERldmljZU1vZGVsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb2NhbGl6ZWREZXZpY2VNb2RlbC5tbQpAQCAt
MzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZpY2VNb2RlbCgpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxTdHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZpY2VNb2RlbCgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE9wdGlvbmFsPFN0cmluZz4+IGRldmljZU1vZGVsOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IGRldmljZU1vZGVsOwogICAgIHJl
dHVybiBkZXZpY2VNb2RlbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL01vdGlvbk1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Nb3Rpb25NYW5hZ2VyQ2xpZW50LmgKaW5kZXggOTk4NjAyMjA2NTdiNmUwMmUzNDJhZjEzZmY0
M2FhMWQ2MDQyMTUzNS4uNTMxMzI5ODJmYTUwOGE0YmM5MjY4ZDU1OTg1ZDk2Mjc1YTVlMjQ3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL01vdGlvbk1hbmFnZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTW90aW9uTWFuYWdlckNsaWVu
dC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Nb3Rpb25NYW5hZ2Vy
Q2xpZW50KCkgeyB9OwogCiAgICAgdmlydHVhbCB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91Ymxl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgeyB9CiB9OwogCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAyZGUx
YmNiMDg3ZjUzY2RiZjYzZDAxZDNhYzI5MDRjYmQ4ODk4Y2NhLi45MDllOGU3NjhhZGI2OGJhYjI4
NDQ1ZDI4MjczNjBhM2YzZmEyMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2Fu
U21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kg
YWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQordm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kg
YWxsb3dVUkwsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgYXV0byBp
dGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlX29yKDApOwogCkBAIC0zMTAsNyArMzEw
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5
LCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBw
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgcmVhZGVyLmNv
bnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAgICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGll
cygpKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZp
ZGVsaXRpZXMoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgp
Cit2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ks
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgQVNTRVJUKHJlc3BlY3Rz
VVRJRmlkZWxpdGllcygpKTsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBjMmM4OGYwZDJkNDBlZWIw
ZDkwZDNlNGUwMTRmZDQwMDcxZDZjMWMxLi5kZjU5NmVmYWVlZjNkNWY5NzE1N2E5MWE5ODlkMDk5
Y2JjMTA1ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKFVJ
UHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZ
TEVfQU5EX1RFQU1fREFUQQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0
X3QgY2hhbmdlQ291bnQpCitzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50
NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZv
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV8KICAg
ICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID0gcGFzdGVib2FyZEl0ZW1QcmVzZW50
YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwogI2Vu
ZGlmCiAgICAgaWYgKCFDR1NpemVFcXVhbFRvU2l6ZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSwgQ0dTaXplWmVybykpIHsKLSAgICAgICAgYXV0byBhZGp1c3RlZFByZWZl
cnJlZFByZXNlbnRhdGlvbkhlaWdodCA9IFtdKGF1dG8gaGVpZ2h0KSAtPiBPcHRpb25hbDxkb3Vi
bGU+IHsKKyAgICAgICAgYXV0byBhZGp1c3RlZFByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA9
IFtdKGF1dG8gaGVpZ2h0KSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAgICAg
aWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKCkgJiYgIUlPU0FwcGxpY2F0aW9uOjpp
c01haWxDb21wb3NpdGlvblNlcnZpY2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyBoZWln
aHQgfTsKICAgICAgICAgICAgIC8vIE1haWwncyBtYXgtd2lkdGg6IDEwMCU7IGRlZmF1bHQgc3R5
bGUgaXMgaW4gY29uZmxpY3Qgd2l0aCB0aGUgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzaXplIGFu
ZCBjYW4gbGVhZCB0byB1bmV4cGVjdGVkbHkgc3RyZXRjaGVkIGltYWdlcy4gTm90IHNldHRpbmcg
dGhlIGhlaWdodCBmb3JjZXMgbGF5b3V0IHRvIHByZXNlcnZlIHRoZSBhc3BlY3QgcmF0aW8uCkBA
IC0yODEsNyArMjgxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICNl
bHNlCiAKLU9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgaW50NjRfdCkKK3N0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90LCBpbnQ2NF90KQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCmlu
ZGV4IDEwMzJlZDU5OTUwY2RiYzRlNjY1ZjNhYjVlYjgxMGQ2YjYzOWE4OWMuLjk5MDJjMmEzZjQz
YjJhMzk0MTk1MTMxNGEzZDNmYzA3MTdhMDg5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNSdWJ5VGV4dCB7IGZhbHNlIH07CiAgICAgaW50IG1fcGFnZU51bWJl
ciB7IDAgfTsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8SW50UmVjdD4gbV9jYWNoZWRFbmNsb3Np
bmdSZWN0OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBtX2NhY2hlZEVuY2xv
c2luZ1JlY3Q7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgU2VsZWN0aW9uR2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDVlNGJjOWY4NzIxNjdhMGEzZDE5NGU4ZTVmYTdmNGI4Mzg5Zjk5N2YuLmYx
MzBjOTkzZWIyY2FhYTAwN2YyNGY0Nzc3NjkxNzA1MjMyNWQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KQEAgLTE2MzQsNyArMTYzNCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogICAg
IHJldHVybiBoYXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpICYmIFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5
aW5nXTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBv
cnRlZDsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBv
cnRlZDsKIAogdm9pZCBXZWJDb3JlOjpzZXRTdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoYm9vbCBp
c1N1cHBvcnRlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9Q
YXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCA1OWQzYmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4
OTVhNWEyMWI1Li40ZDg1ODJhMDJjODcxZTc5MjViMDcxNDU4NTIzYjgyZmRkMTlkOGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUu
Y3BwCkBAIC05NiwxNyArOTYsMTcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJp
bmcmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9w
dGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKaW5kZXggYzE0ZTE4Mzg2ODU0
NTEyZGQ3MWYxYmZlZTYzZWE2ZWRhZWJlZmYxNi4uNzdjNjUyMjI3MjI5NjQzMDIxMjFlNmNlNTg3
NTkwY2MzNmFmNDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05T
U2Nyb2xsZXJJbXBEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05T
U2Nyb2xsZXJJbXBEZXRhaWxzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHNldFVzZU92ZXJsYXlTY3JvbGxiYXJzKGJvb2wpOwogICAgIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gbV91c2VPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZU92ZXJsYXlTY3JvbGxiYXJzOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRh
aWxzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxz
Lm1tCmluZGV4IGEyMjk2NDk0NTBkYjEwNGZiZTNmMzFiMTM3ZTc2OTJhM2JhNWFmOGUuLjQ2Y2I0
YjRkMDBhMzRmZmZhMDk1ZDJjNTc4MmQ0MjkwY2VhODA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxib29sPiBTY3JvbGxlclN0
eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJzOworc3RkOjpvcHRpb25hbDxib29sPiBTY3JvbGxl
clN0eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJzOwogCiBOU1Njcm9sbGVyU3R5bGUgU2Nyb2xs
ZXJTdHlsZTo6cmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMTEwZGQyNTEwYjg1ZjEwNmQzYzkx
NTgxMTBkMDgwZDU4MGUyOGFiNy4uNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2
YTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
QEAgLTMyMywyMSArMzIzLDIxIEBAIHN0YXRpYyBTdHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJh
dGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAo
aXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKICAgICByZXR1
cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwg
UGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlw
ZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBz
dHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0
cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCk7CiAgICAgcmV0dXJuIHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlw
ZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxv
d1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxv
d1VSTCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKICAgICBhdXRvJiBzdHJh
dGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIH0KIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgp
Cit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
ciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aXRlbUluZGV4KQogewogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggNTQ4MjNhMmQxNTVmZGJiMjU2
Yzg0NjZjNWExM2I4NTM2YjYxNmZkNy4uMzBhNmFhODhjNWNlODEwMDJhN2JlZjMyYWJiZjBmNTU5
ZTViMWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC01MzAsNyArNTMwLDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1E
YXRhKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XTsKIH0KIAotT3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBpbnQ2NF90IGNoYW5nZUNvdW50KQorc3RkOjpvcHRp
b25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAg
aWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQ29udHJvbGxlci5tbQppbmRleCBlNTJkNmJhMmQxZTViYWE3YzBiMzQyODVmMDA3ZDA5NmIw
MjYyYjIzLi44NzAzOGI1OWQ5MjAwMmJjZTRjY2QxNGZmMTM5ZGU4YWJlMmM1YzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzE5
LDcgKzMxOSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsCiAgICAgcmV0dXJuIHsgZGVsdGFY
LCBkZWx0YVkgfTsKIH0KIAotT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9s
bGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlhcykK
K3N0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rp
b25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9w
dGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAg
IC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5n
bGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IK
ICAgICAvLyBoYXMgc21hbGwgZGVsdGFzIG9uIGJvdGggYXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggMmNhNTI2YmUzODdmODUzNTc3YWUzNTdjM2JjNzM4NDRk
M2VhY2YzMS4uNTkxMTFjZWNhODAyMmM5NzQ5ODk0YjBiMTM5OGEzNzc2NzAyZTQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29u
c3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9s
Rm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNv
bnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0
b3IpIGNvbnN0IGZpbmFsOwogCiAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFy
dCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3QgZmluYWw7CiAgICAgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJv
bFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IGY3ZGMyMjAwYzdkNWI0YjNhYmNjMTAyZDc5ZTJlYmNhY2Y5OWFlMjQuLmJlMTM3ODkx
NjdhMGVjYTUyNWExNmE5ODRjZTY4NDE0OWQyMWYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KQEAgLTc5MCw3ICs3OTAsNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2Vs
aW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiAgICAgcmV0dXJu
IFRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChwYXJ0KTsKIH0KIAotT3B0aW9uYWw8
Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0
IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAor
c3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZv
bnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBQdXNoQnV0dG9u
UGFydDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAppbmRleCBkMDk1NTY0NDQ0MGYyYmFk
MzIyMjIwN2E1MTI2MzRlYzYxNDI1ZWE3Li45ZWFkMDg4MWYzODQyNzgxMzExMGRlY2Q1OTVjYmRi
MzNmNTVmMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaApAQCAtMzMsMTIgKzMzLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdWRpb0NvbmZpZ3VyYXRpb24gewogICAg
IFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJpbmcgY2hhbm5lbHM7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IGJpdHJhdGU7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7Ci0g
ICAgT3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRlcmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBiaXRyYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGF0aWFsUmVuZGVyaW5nOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDI5ICs1MiwyOSBAQCB2b2lkIEF1ZGlvQ29uZmln
dXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmln
dXJhdGlvbj4gQXVkaW9Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICgh
Y29udGVudFR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGNoYW5uZWxzOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjaGFubmVsczsK
ICAgICBkZWNvZGVyID4+IGNoYW5uZWxzOwogICAgIGlmICghY2hhbm5lbHMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRfdD4+IGJp
dHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0
ZTsKICAgICBkZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBz
YW1wbGVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx1aW50MzJfdD4+IHNh
bXBsZVJhdGU7CiAgICAgZGVjb2RlciA+PiBzYW1wbGVSYXRlOwogICAgIGlmICghc2FtcGxlUmF0
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFs
PGJvb2w+PiBzcGF0aWFsUmVuZGVyaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxib29sPj4gc3BhdGlhbFJlbmRlcmluZzsKICAgICBkZWNvZGVyID4+IHNwYXRpYWxSZW5kZXJp
bmc7CiAgICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAppbmRleCBhYTkwOWQzOGExYjdiY2FkODAx
YzAyNTA2M2E1ZmE1MDYwMWI1OWIyLi4zNTcxMjNhNDc5YzBiZjA2MGU4ZmViZjk0YjQwNjY3MzAw
OGE4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtMzIsMTEgKzMyLDExIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYUNvbmZpZ3VyYXRpb24gewotICAg
IE9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87Ci0gICAgT3B0aW9uYWw8QXVkaW9D
b25maWd1cmF0aW9uPiBhdWRpbzsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlv
bj4gdmlkZW87CisgICAgc3RkOjpvcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUNvbmZp
Z3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lk
IE1lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1l
ZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PE1lZGlhQ29uZmlndXJhdGlvbj4gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxPcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+PiB2
aWRlbzsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9u
Pj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRlbzsKICAgICBpZiAoIXZpZGVvKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25m
aWd1cmF0aW9uPj4gYXVkaW87CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEF1ZGlv
Q29uZmlndXJhdGlvbj4+IGF1ZGlvOwogICAgIGRlY29kZXIgPj4gYXVkaW87CiAgICAgaWYgKCFh
dWRpbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYURl
Y29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IDIyNjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2
MDM1YWQ3MWVmNDYuLmZlYmM4YWRmM2E0MjRjY2UzMmFkNWMxOGJhM2RjMjUwZTdmY2FlZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RGVjb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtMzYsNyArMzYs
NyBAQCBzdHJ1Y3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24gOiBNZWRpYUNvbmZpZ3VyYXRp
b24gewogICAgIGJvb2wgY2FuRXhwb3NlVlA5IHsgdHJ1ZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NywxOCArNDcsMTggQEAgdm9pZCBN
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbj4gTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFE
ZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1
dG8gbWVkaWFDb25maWd1cmF0aW9uID0gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxNZWRpYURlY29kaW5nVHlwZT4gdHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsK
ICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxib29sPiBjYW5FeHBvc2VWUDk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5FeHBv
c2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBvc2VWUDk7CiAgICAgaWYgKCFjYW5FeHBvc2VW
UDkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNv
ZGluZ0NvbmZpZ3VyYXRpb24uaAppbmRleCAxNjVkYzRmMmY4NjZiOTUyMjBjN2JhNjYwYzhkNDcx
ZTAxODdjZTdkLi4xOWI3Zjc0YzJkMTU4ZDUxZWQ5OTU3MjI0MzRjOTU0MzkzZWM1ZjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcg
QEAgc3RydWN0IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uIDogTWVkaWFDb25maWd1cmF0aW9u
IHsKICAgICBNZWRpYUVuY29kaW5nVHlwZSB0eXBlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00NSwxMyArNDUsMTMgQEAgdm9pZCBNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJh
dGlvbj4gTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFFbmNvZGlu
Z0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gbWVk
aWFDb25maWd1cmF0aW9uID0gTWVkaWFDb25maWd1cmF0aW9uOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxNZWRpYUVuY29kaW5nVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBp
ZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmln
dXJhdGlvbi5oCmluZGV4IDdhOTViZmIyOGE5MTgyZDkzYWFhYjg0NWEzNDhjOWM5Y2U4NTQxMGIu
LmM4N2Q5NzQ4YmY1YjlkMDY3NmIxYjczNzJjM2YzNjIyMzA4Y2IyOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVv
Q29uZmlndXJhdGlvbi5oCkBAIC0zOSwxMyArMzksMTMgQEAgc3RydWN0IFZpZGVvQ29uZmlndXJh
dGlvbiB7CiAgICAgdWludDMyX3QgaGVpZ2h0OwogICAgIHVpbnQ2NF90IGJpdHJhdGU7CiAgICAg
ZG91YmxlIGZyYW1lcmF0ZTsKLSAgICBPcHRpb25hbDxib29sPiBhbHBoYUNoYW5uZWw7Ci0gICAg
T3B0aW9uYWw8Q29sb3JHYW11dD4gY29sb3JHYW11dDsKLSAgICBPcHRpb25hbDxIZHJNZXRhZGF0
YVR5cGU+IGhkck1ldGFkYXRhVHlwZTsKLSAgICBPcHRpb25hbDxUcmFuc2ZlckZ1bmN0aW9uPiB0
cmFuc2ZlckZ1bmN0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxwaGFDaGFubmVsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JHYW11dD4gY29sb3JHYW11dDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRhdGFUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8
VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5jdGlvbjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZpZGVvQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CkBAIC02Myw0OSArNjMsNDkgQEAgdm9pZCBWaWRlb0NvbmZpZ3VyYXRpb246
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPiBWaWRlb0NvbmZpZ3VyYXRpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+
IFZpZGVvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29u
dGVudFR5cGU7CiAgICAgZGVjb2RlciA+PiBjb250ZW50VHlwZTsKICAgICBpZiAoIWNvbnRlbnRU
eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDMy
X3Q+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoOwogICAgIGRlY29k
ZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaGVpZ2h0OwogICAgIGRlY29kZXIgPj4gaGVpZ2h0OwogICAgIGlmICghaGVpZ2h0
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IGJpdHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYml0cmF0ZTsKICAgICBkZWNv
ZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXJhdGU7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBkZWNvZGVyID4+IGZyYW1lcmF0ZTsKICAgICBp
ZiAoIWZyYW1lcmF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7CiAgICAgZGVjb2RlciA+PiBhbHBoYUNoYW5u
ZWw7CiAgICAgaWYgKCFhbHBoYUNoYW5uZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxDb2xvckdhbXV0Pj4gY29sb3JHYW11dDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8Q29sb3JHYW11dD4+IGNvbG9yR2FtdXQ7CiAgICAg
ZGVjb2RlciA+PiBjb2xvckdhbXV0OwogICAgIGlmICghY29sb3JHYW11dCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPEhkck1ldGFkYXRhVHlw
ZT4+IGhkck1ldGFkYXRhVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SGRy
TWV0YWRhdGFUeXBlPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRh
dGFUeXBlOwogICAgIGlmICghaGRyTWV0YWRhdGFUeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4+IHRyYW5z
ZmVyRnVuY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFRyYW5zZmVyRnVu
Y3Rpb24+PiB0cmFuc2ZlckZ1bmN0aW9uOwogICAgIGRlY29kZXIgPj4gdHJhbnNmZXJGdW5jdGlv
bjsKICAgICBpZiAoIXRyYW5zZmVyRnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaAppbmRleCBkZTc0ODQzODhh
Y2UyMWFkMTU0YmFiYzIxY2Q0YTVhNWUzNDVkNmJhLi5iM2FjNGZjNTgyNzUxOGE1Y2UzNjQ0YzRh
YTQ5ZWI1ZmQ1NDcxNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgK
QEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMgewogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25kOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB2
aWRlb0JpdHNQZXJTZWNvbmQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGJpdHNQZXJTZWNvbmQ7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25kOworICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZpZGVvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBiaXRzUGVyU2Vjb25kOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUwLDIzICs1MCwyMyBAQCBpbmxpbmUgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotaW5saW5lIE9wdGlvbmFsPE1lZGlhUmVj
b3JkZXJQcml2YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBTdHJpbmcgbWltZVR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDx1bnNpZ25lZD4+IGF1ZGlvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVj
b2RlciA+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFhdWRpb0JpdHNQZXJTZWNvbmQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1
bnNpZ25lZD4+IHZpZGVvQml0c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRl
b0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJp
dHNQZXJTZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4g
Yml0c1BlclNlY29uZDsKICAgICBkZWNvZGVyID4+IGJpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFi
aXRzUGVyU2Vjb25kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggZTNjMjJkNmFlZDllNmNl
OWRkMjhjODg3ODJiZTYxOTZiZjdiNjZiZS4uNjRkZjc1MDJlMWIzMTViOWE4ZGQyOTA4ZjI0OGNl
YTE1YmYxMDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxv
Y2tCdWZmZXJTaXplIHsgMCB9OwogICAgIHNpemVfdCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJs
b2NrQnVmZmVyIHsgMCB9OwogICAgIEF1ZGlvRm9ybWF0SUQgbV9vdXRwdXRDb2RlY1R5cGUgeyBr
QXVkaW9Gb3JtYXRNUEVHNEFBQyB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJp
dFJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRCaXRSYXRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMWI5ODUwYWVhNDI1MjZkYmY1YjY2YTA4NWU4NTk5Yjc2NmMxNzJiLi40NjU1
Y2NlMDJhNmVmNWNiZDg2NWM0Yzg5ZTJkMGMxOWEzY2Q4YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTM5LDcgKzEzOSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRmx1c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkU3RvcEFmdGVyRmx1c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fZmlyc3RWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxDR0FmZmluZVRy
YW5zZm9ybT4gbV92aWRlb1RyYW5zZm9ybTsKKyAgICBzdGQ6Om9wdGlvbmFsPENHQWZmaW5lVHJh
bnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOwogICAgIENNVGltZSBtX3Jlc3VtZWRWaWRlb1RpbWUg
eyBrQ01UaW1lWmVybyB9OwogICAgIENNVGltZSBtX2N1cnJlbnRWaWRlb0R1cmF0aW9uIHsga0NN
VGltZVplcm8gfTsKICAgICBDTVRpbWUgbV9jdXJyZW50QXVkaW9TYW1wbGVUaW1lIHsga0NNVGlt
ZVplcm8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
CmluZGV4IGViYzY5Mzg1NTgyNzkzODhjOTc4MzMxMzdjNTU5OWM4MjM1Njk0OWIuLjU4OTM1MTM2
MDA1ZjY4NThhNjI3YjY1YmNhMjU3MjNkYmUzNDFmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKICAgICBmbG9hdCBtX21heEtleUZyYW1l
SW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OwogICAgIHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJh
dGUgeyAzMCB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJpdFJhdGU7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRwdXRCaXRSYXRlOwogICAgIFByb2ZpbGUgbV9w
cm9maWxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZS5oCmluZGV4IDViODFhNDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2
YTM4ZmRhYzEuLjE1YzM1NDE1MWM5YWMyOGM0NWI2Y2U1NDE4ZWYxYzVjMjNjMDJiMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
LmgKQEAgLTkwLDQ0ICs5MCw0NCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50
SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAgICAgICBpZiAoIXBlcnNp
c3RlbnRJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVs
OwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGdy
b3VwSWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBncm91cElkOwogICAgICAgICBk
ZWNvZGVyID4+IGdyb3VwSWQ7CiAgICAgICAgIGlmICghZ3JvdXBJZCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVu
YWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNEZWZhdWx0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKICAgICAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7
CiAgICAgICAgIGlmICghaXNEZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlPiB0eXBlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU+IHR5cGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01vY2tEZXZp
Y2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNNb2NrRGV2aWNlOwogICAgICAgICBk
ZWNvZGVyID4+IGlzTW9ja0RldmljZTsKICAgICAgICAgaWYgKCFpc01vY2tEZXZpY2UpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENhcHR1cmVE
ZXZpY2U+IGRldmljZSA9IHt7IFdURk1vdmUoKnBlcnNpc3RlbnRJZCksIFdURk1vdmUoKnR5cGUp
LCBXVEZNb3ZlKCpsYWJlbCksIFdURk1vdmUoKmdyb3VwSWQpIH19OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IGRldmljZSA9IHt7IFdURk1vdmUoKnBlcnNpc3RlbnRJZCks
IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpsYWJlbCksIFdURk1vdmUoKmdyb3VwSWQpIH19Owog
ICAgICAgICBkZXZpY2UtPnNldEVuYWJsZWQoKmVuYWJsZWQpOwogICAgICAgICBkZXZpY2UtPnNl
dElzRGVmYXVsdCgqaXNEZWZhdWx0KTsKICAgICAgICAgZGV2aWNlLT5zZXRJc01vY2tEZXZpY2Uo
KmlzTW9ja0RldmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IGViYmRjNTYzZDk3NDhmNjVlOWY0
ZTY2ZDM4YTJlN2QyZjNiMTBlY2IuLmZlNzY5N2Y4NTdjMzU4YzkxY2EwZmZjYTViZjBjY2JjNzc0
YWYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25z
dCBNZWRpYUNvbnMKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9u
YWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0
aW9uYWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29uc3Ry
YWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgpAQCAtMjQ4
LDcgKzI0OCw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQogfQogCi12b2lkIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJh
aW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3Ry
YWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQog
ewogICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWlu
dFR5cGU6OkFzcGVjdFJhdGlvOgpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBP
cHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQo
TWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0
cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNl
dChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPEJvb2xl
YW5Db25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlw
ZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKQEAg
LTMwNiw3ICszMDYsNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVk
aWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYQogICAgIH0KIH0KIAotdm9p
ZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29u
c3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3Zv
aWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWlu
dCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0
cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IGViMjk0OWY0ZTdjNWVkOWI1
N2Q1M2NlOWZjZDc3NTNhN2M0YmRmNzUuLmUyYWFmMjc3MTAyNmNjMThiNzgwZDlhNzg2MWFjMzE5
MTQ1NDdmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTI5MywxMSArMjkzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFs
dWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMoVmFsdWVUeXBlIGN1cnJlbnQsIGNvbnN0IFZl
Y3RvcjxWYWx1ZVR5cGU+JiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIGNvbnN0CisgICAgc3Rk
OjpvcHRpb25hbDxWYWx1ZVR5cGU+IHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZh
bHVlVHlwZSBjdXJyZW50LCBjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmls
aXR5VmFsdWVzKSBjb25zdAogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1
ZTsKLSAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtaW47Ci0gICAgICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gbWF4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtaW47CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmFsdWVUeXBlPiBtYXg7CiAKICAgICAgICAgaWYgKG1fZXhhY3QpIHsKICAgICAgICAgICAg
IEFTU0VSVChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMuY29udGFpbnMobV9leGFjdC52YWx1ZSgp
KSk7CkBAIC0zOTcsMTAgKzM5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWluOwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4g
bV9tYXg7Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gbV9pZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV9taW47Cisg
ICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWF4OworICAgIHN0ZDo6b3B0aW9uYWw8VmFs
dWVUeXBlPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOwog
fTsKIAogY2xhc3MgSW50Q29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWlu
dDxpbnQ+IHsKQEAgLTUzNiw4ICs1MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dBc0Jvb2xl
YW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxib29sPiBtX2V4YWN0OwotICAg
IE9wdGlvbmFsPGJvb2w+IG1faWRlYWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2V4YWN0
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pZGVhbDsKIH07CiAKIGNsYXNzIFN0cmluZ0Nv
bnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKQEAgLTY1NCwyNyArNjU0LDI3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFD
b25zdHJhaW50VHlwZSwgT3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlw
ZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6
b3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQo
TWVkaWFDb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9w
dGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYp
OwogCi0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoOyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3Ry
YWludD4gc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2hlaWdodDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gc2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
SW50Q29uc3RyYWludD4gc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsg
fQogCi0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9Ci0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4g
ZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KLSAgICBPcHRpb25hbDxE
b3VibGVDb25zdHJhaW50PiB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50
PiBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RG91YmxlQ29uc3RyYWludD4gdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7
IH0KIAotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0aW9uOyB9Ci0gICAgT3B0aW9uYWw8Qm9vbGVh
bkNvbnN0cmFpbnQ+IGRpc3BsYXlTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3Vy
ZmFjZTsgfQotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBsb2dpY2FsU3VyZmFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFN1cmZhY2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJv
b2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hv
Q2FuY2VsbGF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gZGlz
cGxheVN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlTdXJmYWNlOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbG9naWNhbFN1cmZhY2UoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2ljYWxTdXJmYWNlOyB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50
PiBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgT3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlk
OyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZ3JvdXBJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3JvdXBJZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZmFj
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlk
OyB9CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBncm91cElkKCkgY29uc3Qg
eyByZXR1cm4gbV9ncm91cElkOyB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CkBAIC02OTYsNyArNjk2LDcg
QEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8IG1fZ3JvdXBJZDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAgbWFwOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX3dpZHRo
KSkKQEAgLTczMywyMiArNzMzLDIyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
T3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJh
aW50PiBtX2hlaWdodDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7
Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9zYW1wbGVTaXplOwotCi0gICAgT3B0aW9u
YWw8RG91YmxlQ29uc3RyYWludD4gbV9hc3BlY3RSYXRpbzsKLSAgICBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiBtX2ZyYW1lUmF0ZTsKLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBt
X3ZvbHVtZTsKLQotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBtX2VjaG9DYW5jZWxs
YXRpb247Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZGlzcGxheVN1cmZhY2U7
Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fbG9naWNhbFN1cmZhY2U7Ci0KLSAg
ICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBtX2ZhY2luZ01vZGU7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJh
aW50PiBtX2dyb3VwSWQ7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3dpZHRo
OworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9oZWlnaHQ7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxJ
bnRDb25zdHJhaW50PiBtX3NhbXBsZVNpemU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNv
bnN0cmFpbnQ+IG1fYXNwZWN0UmF0aW87CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJh
aW50PiBtX2ZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1f
dm9sdW1lOworCisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbV9lY2hvQ2Fu
Y2VsbGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZGlzcGxh
eVN1cmZhY2U7CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbV9sb2dpY2Fs
U3VyZmFjZTsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9mYWNpbmdN
b2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZ3JvdXBJZDsKIH07CiAKIGNsYXNz
IEZsYXR0ZW5lZENvbnN0cmFpbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAppbmRleCA1OWQ1ZmEzZjM3MmU0
YWU3MTg1NTA4NDI1N2FkNDY0Y2JiMzFkMjkzLi42ODUwYWRiMGQyMThjZGFjYzM3ZTFkMmQ0N2E4
YjE4MjdlMjY4MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3Qg
TWVkaWFTdHJlYW1SZXF1ZXN0IHsKICAgICAgICAgZW5jb2RlciA8PCBpc1VzZXJHZXN0dXJlUHJp
dmlsZWRnZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxNZWRpYVN0cmVhbVJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYVN0cmVh
bVJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgTWVkaWFT
dHJlYW1SZXF1ZXN0IHJlcXVlc3Q7CiAgICAgICAgIGlmIChkZWNvZGVyLmRlY29kZShyZXF1ZXN0
LnR5cGUpICYmIGRlY29kZXIuZGVjb2RlKHJlcXVlc3QuYXVkaW9Db25zdHJhaW50cykgJiYgZGVj
b2Rlci5kZWNvZGUocmVxdWVzdC52aWRlb0NvbnN0cmFpbnRzKSAmJiBkZWNvZGVyLmRlY29kZShy
ZXF1ZXN0LmlzVXNlckdlc3R1cmVQcml2aWxlZGdlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmlu
ZGV4IDFlOTUxNDE2MDAzMzY0ZWRhYmEwNGViY2I1ZjdiYWZlNzRiMWU3ZDIuLmRmZTk2ZTEyOTlk
MGUyZDNkODlmNTY0YTM0MDAwNzc1NDU0MWJhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBA
IC0zNSwxOCArMzUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJUQ0RhdGFD
aGFubmVsSW5pdCB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gb3JkZXJlZDsKLSAgICBPcHRpb25hbDx1
bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRpbWU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQg
c2hvcnQ+IG1heFJldHJhbnNtaXRzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3JkZXJlZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhQYWNrZXRMaWZlVGltZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhSZXRyYW5zbWl0czsKICAgICBTdHJp
bmcgcHJvdG9jb2w7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbmVnb3RpYXRlZDsKLSAgICBPcHRpb25h
bDx1bnNpZ25lZCBzaG9ydD4gaWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBuZWdvdGlhdGVk
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IGlkOwogICAgIFJUQ1ByaW9yaXR5
VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07CiAKICAgICBSVENEYXRhQ2hh
bm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENE
YXRhQ2hhbm5lbEluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUgUlRDRGF0YUNo
YW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAgLTYx
LDE5ICs2MSwxOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFJUQ0RhdGFDaGFubmVs
SW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBvcmRl
cmVkIDw8IG1heFBhY2tldExpZmVUaW1lIDw8IG1heFJldHJhbnNtaXRzIDw8IHByb3RvY29sIDw8
IG5lZ290aWF0ZWQgPDwgaWQgPDwgcHJpb3JpdHk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5pdD4gUlRDRGF0YUNoYW5uZWxJbml0OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8UlRDRGF0YUNoYW5uZWxJbml0PiBSVENEYXRhQ2hhbm5lbEluaXQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGJvb2w+IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9y
ZGVyZWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9y
dD4gbWF4UGFja2V0TGlmZVRpbWU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4g
bWF4UGFja2V0TGlmZVRpbWU7CiAgICAgZGVjb2RlciA+PiBtYXhQYWNrZXRMaWZlVGltZTsKICAg
ICBpZiAoIW1heFBhY2tldExpZmVUaW1lKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzOwogICAgIGRlY29kZXIgPj4gbWF4UmV0cmFu
c21pdHM7CiAgICAgaWYgKCFtYXhSZXRyYW5zbWl0cykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTgyLDE3ICs4MiwxNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxSVENEYXRh
Q2hhbm5lbEluaXQ+IFJUQ0RhdGFDaGFubmVsSW5pdDo6ZGVjb2RlKAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gbmVnb3RpYXRlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZ290aWF0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBuZWdvdGlhdGVkOwogICAgIGlmICghbmVnb3RpYXRlZCkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsKICAgICBkZWNvZGVyID4+IGlkOwogICAgIGlm
ICghaWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxSVENQcmlvcml0eVR5
cGU+IHByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UlRDUHJpb3JpdHlUeXBlPiBwcmlvcml0
eTsKICAgICBkZWNvZGVyID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3JpdHkpCiAgICAgICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCmluZGV4IGY2M2Q4ZjY2MGRl
NDI1ZTk1OWU3MzI2NzBkNzk3MzU5ZTU2NjE5ODQuLmYwNzA0MDM1NmZiMmI2NmI5MGRjNzM0YjNi
YzQ0NmY3MDllNDZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCkBAIC0zNiw3ICsz
Niw3IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgewogICAgIFJUQ0RhdGFDaGFu
bmVsTG9jYWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ2LDE0ICs0NiwxNCBAQCBpbmxpbmUgdm9p
ZCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotaW5saW5lIE9wdGlvbmFsPFJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllcj4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
cj4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8UlRDRGF0YUNo
YW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9u
YWw8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gY2hhbm5lbElkZW50aWZpZXI7CiAgICAgaWYgKCFjaGFubmVsSWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1J0cENvZGVjQ2FwYWJpbGl0eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKaW5k
ZXggZGE5ZDRkNzk5ZTAzMzMyNTM1YjQ5N2NiZGY5MTNlNTY3OWM2Y2E2MS4uZDE1YTQ1NjViODQz
MWUzOWM0NDA0YjQxZjY4Mzc4ODNkY2IxNjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJUQ1J0cENvZGVjQ2Fw
YWJpbGl0eSB7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwogICAgIHVuc2lnbmVkIGxvbmcgY2xvY2tS
YXRlIHsgMCB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjaGFubmVsczsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjaGFubmVsczsKICAgICBTdHJpbmcgc2RwRm10
cExpbmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IGYzYTNh
NmJmOTc2Y2I5YzE2NzA4YTY5ZmRiODEwMjE3YWQ5ZWQyNWQuLjY4YmMwZjdjOTFlYjBmNTI2MjBh
NzkyMTdjMjQxMTQxYTdlYTRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gd2VicnRjOjpPYnNlcnZlckludGVy
ZmFjZSBBUEkKICAgICB2b2lkIE9uQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4gbV92aWRl
b1RyYWNrOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDk0MTZkZDgzZjM0ODZkNzcxNjlmMTdkNjZiMjYyYWZhYmYwYWM5MGEuLjIwMzVjNjc1
ZWY3MmM3MWUyNWQ3MGM4YzEzYTIyMDk0YjU3MjFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVG
YWlsZWQoKQogICAgIH0pOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxk
b3VibGU+KQorYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPikKIHsKICAgICAvLyBUaGUgc2l6ZSBhbmQgZnJhbWUgcmF0ZSBhcmUgd2l0aGluIHRo
ZSBjYXBhYmlsaXR5IGxpbWl0cywgc28gdGhleSBhcmUgc3VwcG9ydGVkLgogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQsIE9wdGlvbmFsPElu
dENvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQsIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+
IGZyYW1lUmF0ZUNvbnN0cmFpbnQsIFN0cmluZyYgYmFkQ29uc3RyYWludCwgZG91YmxlJiBkaXN0
YW5jZSkKK2Jvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50LCBzdGQ6Om9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQsIHN0ZDo6b3B0aW9uYWw8RG91Ymxl
Q29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWludCwgU3RyaW5nJiBiYWRDb25zdHJhaW50LCBk
b3VibGUmIGRpc3RhbmNlKQogewogICAgIGlmICghd2lkdGhDb25zdHJhaW50ICYmICFoZWlnaHRD
b25zdHJhaW50ICYmICFmcmFtZVJhdGVDb25zdHJhaW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTMxMSw3ICszMTEsNyBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogCiAgICAgZGlzdGFu
Y2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aDsKICAgICBpZiAo
d2lkdGhDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c1dpZHRoKCkpIHsKICAgICAg
ICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9IGZpdG5lc3NEaXN0YW5jZSgqd2lkdGhDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3RyYWludERpc3RhbmNlKSkgewpA
QCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlKE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4g
aGVpZ2h0OwogICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0
c0hlaWdodCgpKSB7CiAgICAgICAgIGRvdWJsZSBjb25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNz
RGlzdGFuY2UoKmhlaWdodENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoc3RkOjppc2luZihjb25z
dHJhaW50RGlzdGFuY2UpKSB7CkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4g
d2lkdGgKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CiAgICAgaWYgKGZyYW1lUmF0
ZUNvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpIHsKICAgICAg
ICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9IGZpdG5lc3NEaXN0YW5jZSgqZnJhbWVSYXRl
Q29uc3RyYWludCk7CiAgICAgICAgIGlmIChzdGQ6OmlzaW5mKGNvbnN0cmFpbnREaXN0YW5jZSkp
IHsKQEAgLTUxMiw3ICs1MTIsNyBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVz
c0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVU
eXBlIGN1cnJlbnQsIE9wdGlvbmFsPFZlY3RvcjxWYWx1ZVR5cGU+PiBkaXNjcmV0ZUNhcGFiaWxp
dHlWYWx1ZXMsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1h
eCwgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlLCB2b2lkIChSZWFsdGltZU1lZGlhU291cmNl
OjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVU
eXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRlQ2Fw
YWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFiaWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBhYmls
aXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQogewogICAgIGlmIChkaXNjcmV0ZUNhcGFiaWxp
dHlWYWx1ZXMpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN0cmFpbnQudmFsdWVGb3JEaXNj
cmV0ZUNhcGFiaWxpdHlWYWx1ZXMoY3VycmVudCwgKmRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyk7
CkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlOdW1lcmljQ29uc3RyYWludChj
b25zdCBOdW1lcmljQ29uc3RyYWludDxWYWx1ZVR5cGU+JiBjb25zdHJhaW4KICAgICAgICAgKHNv
dXJjZS4qYXBwbGllcikodmFsdWUpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRp
b25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAg
ICBJbnRTaXplIHNpemU7CiAgICAgaWYgKHdpZHRoKQpAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25z
dHJhaW50JiBjb25zdHJhaW50CiAKICAgICBhdXRvJiBjYXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBh
YmlsaXRpZXMoKTsKIAotICAgIE9wdGlvbmFsPGludD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IHdpZHRoOwogICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQg
PSBjb25zdHJhaW50cy5maW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoKSkgewogICAgICAg
ICBBU1NFUlQoY29uc3RyYWludC0+aXNJbnQoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMu
c3VwcG9ydHNXaWR0aCgpKSB7CkBAIC05MDAsNyArOTAwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0
cmFpbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6SGVp
Z2h0KSkgewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNJbnQoKSk7CiAgICAgICAgIGlm
IChjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQoKSkgewpAQCAtOTA5LDcgKzkwOSw3IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRD
b25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxk
b3VibGU+IGZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwog
ICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50cy5m
aW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZSkpIHsKICAgICAgICAgQVNTRVJUKGNv
bnN0cmFpbnQtPmlzRG91YmxlKCkpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRz
RnJhbWVSYXRlKCkpIHsKQEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWlu
dAogICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsKIH0KIAotT3B0aW9uYWw8UmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXBwbHlDb25zdHJhaW50c0Vycm9yPiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQorc3RkOjpv
cHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlOjpBcHBseUNvbnN0cmFpbnRzRXJyb3I+IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzLmlzVmFsaWQpOwogCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUo
aW50IHJhdGUpCiAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsKIH0KIAotT3B0aW9uYWw8VmVj
dG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3Jl
dGVTYW1wbGVSYXRlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAg
LTEwNzIsNyArMTA3Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6
ZShpbnQgc2l6ZSkKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVNpemUpOwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVTaXplcygpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGltZU1lZGlhU291cmNlOjpkaXNj
cmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCmluZGV4IDdjZGEzMzJkZDcyMDAyNjQ3ZmFjMDA4OWM1MGRhMDk0MmJm
OGJlM2EuLjYxMjkyNmM1MWMwY2FjOWNmNGMxOTNkODQ4MTNmYWIzYWQ4ZTVjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgKQEAgLTE2NiwxMSArMTY2LDExIEBAIHB1YmxpYzoKIAogICAgIGludCBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgdm9pZCBzZXRTYW1w
bGVSYXRlKGludCk7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVT
YW1wbGVSYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50
Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0OwogCiAgICAgaW50IHNhbXBsZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7IH0KICAgICB2b2lkIHNldFNhbXBsZVNpemUoaW50
KTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0
ZVNhbXBsZVNpemVzKCkgY29uc3Q7CiAKICAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KICAgICB2b2lkIHNldEVjaG9DYW5jZWxs
YXRpb24oYm9vbCk7CkBAIC0xODIsOSArMTgyLDkgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcg
YmFkQ29uc3RyYWludDsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgfTsKLSAgICB1c2lu
ZyBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8QXBwbHlDb25zdHJhaW50c0Vycm9yPiYmKT47CisgICAgdXNpbmcgQXBwbHlDb25zdHJhaW50
c0hhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXBwbHlDb25z
dHJhaW50c0Vycm9yPiYmKT47CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYpOwotICAgIE9w
dGlvbmFsPEFwcGx5Q29uc3RyYWludHNFcnJvcj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJik7CisgICAgc3RkOjpvcHRpb25hbDxBcHBseUNvbnN0cmFpbnRzRXJyb3I+
IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogCiAgICAgYm9vbCBz
dXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKICAg
ICBib29sIHN1cHBvcnRzQ29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKTsKQEAgLTIz
MSwxMCArMjMxLDEwIEBAIHByb3RlY3RlZDoKICAgICBkb3VibGUgZml0bmVzc0Rpc3RhbmNlKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50KGNvbnN0IE1l
ZGlhQ29uc3RyYWludCYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50Jik7Ci0gICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9u
YWw8SW50Q29uc3RyYWludD4gd2lkdGgsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwg
T3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4sIFN0cmluZyYsIGRvdWJsZSYgZml0bmVzc0Rpc3Rh
bmNlKTsKKyAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPElu
dENvbnN0cmFpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiwgU3RyaW5nJiwgZG91YmxlJiBmaXRuZXNz
RGlzdGFuY2UpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShP
cHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91Ymxl
Pik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pOworICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAog
ICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKICAgICB2b2lkIG5vdGlmeU11dGVkQ2hh
bmdlKGJvb2wgbXV0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4
IGIyNjhiMmI1NTI3ZGZlMjUyZTYxZWY0ZTJlOGYzMDZhOTczYjcxMDMuLjAzMWQ1YTZkOGJiYzM5
ZWNhMGI5YzEyMmRjY2IxMTZmMjM1ZjY4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlOjp1cGRhdGVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdAogICAg
IGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoeyBtaW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJh
bWVSYXRlIH0pOwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0
c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1l
UmF0ZSkKIHsKICAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMTIsNyArMjEyLDcgQEAgYm9vbCBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZTo6cHJlc2V0U3VwcG9ydHNGcmFtZVJhdGUoUmVmUHRyPFZpZGVvUHJlc2V0PiBw
cmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnN1cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50
PiBoZWlnaHQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgSW50U2l6ZSYpPiYmIGZ1bmN0aW9u
KQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNDYXB0dXJlU2l6ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgSW50U2l6ZSYpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmICh3
aWR0aCAmJiBoZWlnaHQpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IHdpZHRoLnZhbHVlKCks
IGhlaWdodC52YWx1ZSgpIH0pOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBpbmxpbmUgZG91
YmxlIGZyYW1lUmF0ZUZyb21QcmVzZXQoY29uc3QgVmlkZW9QcmVzZXQmIHByZXNldCwgZG91Ymxl
IGN1cnJlCiAgICAgcmV0dXJuIGN1cnJlbnRGcmFtZVJhdGUgPj0gbWluRnJhbWVSYXRlICYmIGN1
cnJlbnRGcmFtZVJhdGUgPD0gbWF4RnJhbWVSYXRlID8gY3VycmVudEZyYW1lUmF0ZSA6IG1heEZy
YW1lUmF0ZTsKIH0KIAotT3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1
cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFN1cHBv
cnRlZFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRXaWR0aCwgT3B0aW9u
YWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gcmVxdWVzdGVkRnJhbWVS
YXRlKQorc3RkOjpvcHRpb25hbDxSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6Q2FwdHVyZVNp
emVBbmRGcmFtZVJhdGU+IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U3VwcG9ydGVk
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gcmVxdWVzdGVkV2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXF1
ZXN0ZWRGcmFtZVJhdGUpCiB7CiAgICAgaWYgKCFyZXF1ZXN0ZWRXaWR0aCAmJiAhcmVxdWVzdGVk
SGVpZ2h0ICYmICFyZXF1ZXN0ZWRGcmFtZVJhdGUpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0z
NjEsNyArMzYxLDcgQEAgT3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1
cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvQ2FwdHUKICAgICByZXR1cm4gQ2FwdHVy
ZVNpemVBbmRGcmFtZVJhdGUgeyBXVEZNb3ZlKHJlc2l6ZVByZXNldCksIHJlc2l6ZVNpemUsIGNh
cHR1cmVGcmFtZVJhdGUgfTsKIH0KIAotdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhl
aWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0
ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCBTaXpl
QW5kRnJhbWVSYXRlIHsgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlIH0pOwogCkBAIC00MDMsNyAr
NDAzLDcgQEAgdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNh
bXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW0KICAgICB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShzYW1wbGUpOwogfQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpjbGllbnRV
cGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+
IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IFdlIG9ubHkgY2hhbmdlIHNldHRpbmdz
IGlmIGNhcHR1cmUgcmVzb2x1dGlvbiBpcyBiZWxvdyByZXF1ZXN0ZWQgb25lLiBXZSBzaG91bGQg
Z2V0IHRoZSBiZXN0IHByZXNldCBmb3IgYWxsIGNsaWVudHMuCiAgICAgYXV0byYgc2V0dGluZ3Mg
PSB0aGlzLT5zZXR0aW5ncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXgg
Mjc3MjE5ZTFlYTM2ZjA0MTFhMWEzZTY2N2EwNWMyNGNlNzBiMzg3NS4uZDAzNGE4MDM1MDk1NDMx
OTJlY2E4NjAwNTE5ZWJkY2UyMGUyYzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogICAg
IHZpcnR1YWwgflJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKCk7CiAKLSAgICB2b2lkIGNsaWVu
dFVwZGF0ZWRTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGlu
dD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSk7CisgICAgdm9pZCBjbGllbnRV
cGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0
aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpOwogCi0g
ICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0
aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pIG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQogCkBAIC01NSw3ICs1NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNhbHQpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9Qcm9kdWNl
RGF0YSgpOwotICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRo
LCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JikgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJhdGVXaXRoUHJlc2V0KGRvdWJsZSwgUmVm
UHRyPFZpZGVvUHJlc2V0PikgeyB9OwpAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgICAg
ICBJbnRTaXplIHJlcXVlc3RlZFNpemU7CiAgICAgICAgIGRvdWJsZSByZXF1ZXN0ZWRGcmFtZVJh
dGUgeyAwIH07CiAgICAgfTsKLSAgICBib29sIHN1cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9uYWw8
aW50PiwgT3B0aW9uYWw8aW50PiwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBJbnRTaXplJik+
JiYpOwotICAgIE9wdGlvbmFsPENhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVk
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgYm9vbCBzdXBwb3J0c0NhcHR1cmVTaXplKHN0ZDo6
b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IEludFNpemUmKT4mJik7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlU2l6ZUFuZEZyYW1l
UmF0ZT4gYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwog
ICAgIGJvb2wgcHJlc2V0U3VwcG9ydHNGcmFtZVJhdGUoUmVmUHRyPFZpZGVvUHJlc2V0PiwgZG91
YmxlKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtOTMsOSArOTMsOSBAQCBwcml2
YXRlOgogfTsKIAogc3RydWN0IFNpemVBbmRGcmFtZVJhdGUgewotICAgIE9wdGlvbmFsPGludD4g
d2lkdGg7Ci0gICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBm
cmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKIAog
ICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b0pTT05PYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggZDE2NmM4YmY1
ZmU5ODQwMjc2YTJhODg0N2I3NjdkNTQwY2ViNDdkOS4uODZhOWJlMTVmMDE2NGE0ZTZmODNjNWIx
NmE1ZGY5ZTM2NmNiMWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTczLDEyICs3Mywx
MiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKICAgICBt
X3NvdXJjZS0+c3RvcCgpOwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCitib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7
CiAgICAgcmV0dXJuIG1fc291cmNlLT5zdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhl
aWdodCwgZnJhbWVSYXRlKTsKIH0KIAotdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXpl
QW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBP
cHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3ZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgaWYg
KCF3aWR0aCAmJiAhaGVpZ2h0KSB7CiAgICAgICAgIHdpZHRoID0gc2l6ZSgpLndpZHRoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZp
ZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZVZpZGVvU291cmNlLmgKaW5kZXggMDYyYWE4ZmI1ZDhlODgzY2UzM2FiNzVlMWQyYzIxMDdhNzY4
YzZjNC4uM2UxOGNlNWZmNTc1OGEyZDA2Njc1YzJiZjk3ZTY2M2Y1OTlkZTU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2UKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8
ZG91YmxlPiBmcmFtZVJhdGUpIGZpbmFsOwotICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShP
cHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGUpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0
ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkgZmluYWw7CisgICAgdm9pZCBzZXRTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkgZmluYWw7CiAgICAgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+IGNsb25lKCkgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0VG9FbmQoUmVh
bHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIGNhbGxpbmdPYnNlcnZlcikgZmluYWw7CiAgICAg
dm9pZCBzdG9wQmVpbmdPYnNlcnZlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKaW5kZXggYTg0OWM0YzZlYWFhMjllZGMw
NGYwMTQ5NzFlOGUzZDlkMGQ5MTkxZC4uZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdh
OGIwYThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
VmlkZW9QcmVzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9W
aWRlb1ByZXNldC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBGcmFtZVJhdGVSYW5nZSB7CiAg
ICAgZG91YmxlIG1heGltdW07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUxLDE0ICs1
MSwxNCBAQCB2b2lkIEZyYW1lUmF0ZVJhbmdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGcmFtZVJhdGVSYW5n
ZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVt
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBt
YXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtOwogICAgIGRlY29kZXIg
Pj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBWaWRlb1ByZXNldERhdGEgewogICAgIFZlY3Rv
cjxGcmFtZVJhdGVSYW5nZT4gZnJhbWVSYXRlUmFuZ2VzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9QcmVzZXREYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTgyLDE0ICs4MiwxNCBAQCB2b2lkIFZpZGVvUHJlc2V0RGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8VmlkZW9QcmVzZXREYXRhPiBWaWRlb1ByZXNldERhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IFZpZGVvUHJlc2V0RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwog
ICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+IGZyYW1lUmF0ZVJhbmdlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+IGZyYW1lUmF0ZVJhbmdlczsKICAgICBkZWNv
ZGVyID4+IGZyYW1lUmF0ZVJhbmdlczsKICAgICBpZiAoIWZyYW1lUmF0ZVJhbmdlcykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCAzNTIwZDVjMzgxNmE4YTFiM2U0MzYyOWRiYzczMjQ1
OGIwYWJiZDQ4Li43YzQyZmY5YmI1MDczNzBkOGQyNTBlMWZkN2IwOGFkNmEyODhlYTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC00
OSw4ICs0OSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3Zl
cnJpZGU7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZTsg
fQogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
PiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVu
dFNldHRpbmdzOwogCiBwcml2YXRlOgogICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCmluZGV4IDA4NWJiMDc5MDM0MTgzNzU5YzI5NGJjNWM1NjBmZWJkOTcwMTRlNzEuLjNm
OWRkNThhOTBmOTdlOGFlM2IwM2UzMmJkM2Y0YjUyZWEzMzhkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkKICAgICAgICAgZ3N0X2RldmljZV9tb25pdG9yX3N0b3AobV9kZXZpY2VN
b25pdG9yLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0
cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6OmdzdHJlYW1lckRldmljZVdpdGhVSUQoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4g
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6OmdzdHJlYW1lckRldmljZVdpdGhVSUQoY29u
c3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKICAgICBjYXB0dXJlRGV2aWNlcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGE2
MDM2M2IzYTEwYWM3NzdjOGM0Y2FkZjJhY2IzYjVlODNlMTU0NzguLjhjZTFiYTk0YjdhMDZjMjhl
MmNkNmI4MGViZGZiZGY5NTkxMWRlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyIDogcHVibGljIENh
cHR1cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB+R1N0cmVhbWVyQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKTsKLSAgICBPcHRpb25hbDxHU3RyZWFtZXJDYXB0dXJlRGV2aWNlPiBnc3RyZWFt
ZXJEZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8R1N0cmVh
bWVyQ2FwdHVyZURldmljZT4gZ3N0cmVhbWVyRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmKTsK
IAogICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5h
bDsKICAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaApp
bmRleCBhNjU1MDRkOWI4NjA2MzNjNTMxMWM5NGIyYmI3NWM5MjMwMGI1ZWFjLi4yZjA3NGZhZjE0
NDM1NDAxMGJjYWI3ZTU0Y2RiOWVjMDVmMWQyOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC01Myw4ICs1Myw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygpIG92ZXJyaWRlOwogCiAKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1
cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAg
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1l
ci5oCmluZGV4IDM2N2EwZjg2ZGQwODdlZDY1M2RmOGFhNmIwN2RkZTg5NmY4MjIyNjcuLmRlNTU2
MTNiZjgyZjRlMGRhNmRjNzc3MWEzNTEwYzI3M2U2MDNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5oCkBAIC00OCw3ICs0
OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faXNJbnRlcnJ1cHRlZDsgfTsKICAgICB2b2lkIHNldEludGVycnVwdGVkRm9yVGVzdGlu
Zyhib29sKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+IG1fc3RyZWFtRm9ybWF0OworICAgIHN0ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9zdHJlYW1Gb3JtYXQ7CiAgICAgVmVjdG9yPGZsb2F0PiBtX2Jp
cEJvcEJ1ZmZlcjsKICAgICB1aW50MzJfdCBtX21heGltaXVtRnJhbWVDb3VudDsKICAgICB1aW50
NjRfdCBtX3NhbXBsZXNFbWl0dGVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggN2FiOTUwZDY1ZDVmODA2NjZmMWY0MGQz
ZDA4Njc5ZjNhODFjMDg1OC4uMzc0M2ZkODJjZjI1ZmE3ZjgwYzJhM2UzOGI4ZWZjMTIzODdjNTU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWw7CiAgICAgdm9pZCBjb21wdXRlQ2FwdHVyZURl
dmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIHNwZWFrZXJEZXZpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zcGVh
a2VyRGV2aWNlczsgfQotICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYp
OworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7CiAKLSAg
ICBPcHRpb25hbDxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRldmlj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRldmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7
CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKCk7CiAKQEAgLTcw
LDkgKzcwLDkgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgQXVkaW9TZXNzaW9uU3RhdGUg
eyBOb3ROZWVkZWQsIEluYWN0aXZlLCBBY3RpdmUgfTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxD
YXB0dXJlRGV2aWNlPj4gbV9kZXZpY2VzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENhcHR1
cmVEZXZpY2U+PiBtX2RldmljZXM7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1fc3BlYWtl
ckRldmljZXM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZT4+IG1fYXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPj4gbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlczsKICAgICBSZXRhaW5QdHI8V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0
ZW5lcj4gbV9saXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8QVZBdWRpb1Nlc3Npb24+IG1fYXVkaW9T
ZXNzaW9uOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fdXBkYXRlRGV2aWNlU3RhdGVR
dWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lv
cy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0KaW5kZXggYWU2YWQ4ZmE1MGEzOGJiM2IwN2Y5YTZkYjQyM2E5MTJkYmQyMTdjZC4uYzcw
Nzk5N2M4M2FjNjM1NTU4MTMxNDIyNTVjYjUzOTJlYzU3MTlmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTEyMiw3ICsxMjIs
NyBAQCBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzKAogICAgIHJldHVybiBtX2RldmljZXMudmFsdWUo
KTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpOwogICAgIGZvciAoYXV0byYg
ZGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1
cmVEZXZpY2VXaXRoUGVyCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjphdWRpb1Nlc3Npb25EZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQp
CitzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9TZXNzaW9uRGV2aWNlV2l0aFVJRChjb25zdCBT
dHJpbmcmIGRldmljZUlEKQogewogICAgIGlmICghbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
cykKICAgICAgICAgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA1Y2NlOWYx
YTU4ZjEyNjRhMWY5YmYxZWRlYjlkMWMyNDljMjFlYzNhLi5jNjQ0ODFkZDE5NGRkN2Q5OTI2Mzgx
OWQ2OGFkMDg4ZWY4MjQ0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbWFwcGVkQnVmZmVyLT5zaXplKCk7
IH0KIAogICAgIGNvbnN0IEdzdEJ1ZmZlciogZ2V0QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZ3N0
X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsgfQotICAgIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gZ2V0VmlkZW9SZXNvbHV0
aW9uRnJvbUNhcHMoZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSkpOyB9CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0
dXJuIGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1w
bGUuZ2V0KCkpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgR1N0cmVhbWVyRW5jb2RlZEltYWdlQnVm
ZmVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggZTg2NGNkM2U3MjlkNDFiZDM1MGFkMTYxNDFhOGRmM2M0MjY5N2I4NC4uN2JhN2YyMmQ3MjBj
NWM5NjMwNGU5M2JjNzE4ODlmYTFmYjZhOTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6
cHJlcGFyZUNlcnRpZmljYXRlR2VuZXJhdG9yKEZ1bmN0aW9uPHZvaWQocnRjOjpSVENDZXJ0aWYK
ICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxjcmlja2V0OjpNZWRpYVR5cGU+
IHR5cGVGcm9tS2luZChjb25zdCBTdHJpbmcmIGtpbmQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0
aW9uYWw8Y3JpY2tldDo6TWVkaWFUeXBlPiB0eXBlRnJvbUtpbmQoY29uc3QgU3RyaW5nJiBraW5k
KQogewogICAgIGlmIChraW5kID09ICJhdWRpbyJfcykKICAgICAgICAgcmV0dXJuIGNyaWNrZXQ6
Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTzsKQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyBmcm9tU3RkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLmxlbmd0aCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDx1aW50MTZfdD4gdG9DaGFubmVscyhhYnNsOjpv
cHRpb25hbDxpbnQ+IG51bUNoYW5uZWxzKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiB0b0NoYW5uZWxzKGFic2w6Om9wdGlvbmFsPGludD4gbnVtQ2hhbm5lbHMpCiB7CiAg
ICAgaWYgKCFudW1DaGFubmVscykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQxNCw3ICs0MTQs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cENhcGFiaWxpdGllcyB0b1JUQ1J0cENhcGFiaWxpdGll
cyhjb25zdCB3ZWJydGM6OlJ0cENhcGFiaWxpdAogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9
CiAKLU9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gTGliV2ViUlRDUHJvdmlkZXI6OnJlY2Vp
dmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRw
Q2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRlcjo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMoY29u
c3QgU3RyaW5nJiBraW5kKQogewogICAgIGF1dG8gbWVkaWFUeXBlID0gdHlwZUZyb21LaW5kKGtp
bmQpOwogICAgIGlmICghbWVkaWFUeXBlKQpAQCAtNDI3LDcgKzQyNyw3IEBAIE9wdGlvbmFsPFJU
Q1J0cENhcGFiaWxpdGllcz4gTGliV2ViUlRDUHJvdmlkZXI6OnJlY2VpdmVyQ2FwYWJpbGl0aWVz
KGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHRvUlRDUnRwQ2FwYWJpbGl0aWVzKGZhY3RvcnktPkdl
dFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKCptZWRpYVR5cGUpKTsKIH0KIAotT3B0aW9uYWw8UlRD
UnRwQ2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRlcjo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNv
bnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBMaWJX
ZWJSVENQcm92aWRlcjo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKIHsK
ICAgICBhdXRvIG1lZGlhVHlwZSA9IHR5cGVGcm9tS2luZChraW5kKTsKICAgICBpZiAoIW1lZGlh
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNTA1YWM3ZjIwMGY5
MTViMWE5YzZlODRkNTYxY2E0MjBjMGUzMzUwNi4uMjM1Njc4OGQ1MWZlZDRiNWZmYTdiMGMzOTNl
MzQ4ZmE0NWZiODFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTEy
NCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGJhY2sgaXMgZXhlY3V0ZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KICAgICB2b2lkIHByZXBhcmVDZXJ0aWZpY2F0ZUdlbmVyYXRvcihG
dW5jdGlvbjx2b2lkKHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImKT4mJik7CiAKLSAgICBP
cHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IHJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0
cmluZyYga2luZCk7Ci0gICAgT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBzZW5kZXJDYXBh
YmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENh
cGFiaWxpdGllcz4gcmVjZWl2ZXJDYXBhYmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gc2VuZGVyQ2FwYWJpbGl0aWVzKGNv
bnN0IFN0cmluZyYga2luZCk7CiAKICAgICB2b2lkIGNsZWFyRmFjdG9yeSgpIHsgbV9mYWN0b3J5
ID0gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDBlNDFjYzQx
M2Y4NDNmYTAzOThhMWExNzI0NDBkMWUyNjc3YjI3ZTQuLjNjNjYyMzNmNTk0MTU5ZWQ1MWY3N2I2
MmQ0ZGEzMjdhY2I5ZjcwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0xMjYs
OCArMTI2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsK
ICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3NhbXBsZVJvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKIAotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAgT3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRp
b25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmls
aXRpZXM7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVy
PiBtX29iamNPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNz
aW9uOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2U+IG1fZGV2aWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4IDYzOTYwYzQ1N2I1YTkzMmY5ZDc5ZTNiYTFj
ZWNlYTdkMTExNWQ1NDkuLjZlMjZjOGZhNGVjZDMwYWMxZTUyZmVjMzhhZjU3ZDBlMzNkOWJjMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCBzdGF0aWMgYm9vbCBnZXREZXZpY2VJbmZvKHVpbnQzMl90IGRldmljZUlELCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIFN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25h
bDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUo
dWludDMyX3QgZGV2aWNlSUQsIERldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElE
KQorc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSUQsIERldmljZVR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBncm91cElEKQogewogICAgIEFTU0VSVCh0eXBlID09IENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6Ok1pY3JvcGhvbmUgfHwgdHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTcGVha2VyKTsKICAgICBTdHJpbmcgcGVyc2lzdGVudElEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlLmgKaW5kZXggY2RlOTFjMTg0NjEwMTQ1OGIxZTFkZWZlYjRiNzMxMmU0YTE1MzI5
Ni4uMjAzNDQ3OWY0ZTczYTE3OTYwNzFmZjFhODdhODFkYTc1Njg2ZjIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2aWNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4g
Y3JlYXRlKHVpbnQzMl90LCBEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmIGdyb3VwSUQpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50
MzJfdCwgRGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElEKTsKICAgICB2aXJ0dWFsIH5D
b3JlQXVkaW9DYXB0dXJlRGV2aWNlKCkgPSBkZWZhdWx0OwogCiAgICAgdWludDMyX3QgZGV2aWNl
SUQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBlZWI3MDA4ZjViMDk3N2ViNjMyMDE3YTNm
YmMwODE2N2FjZjljZTBmLi40ZGUwMGM5MDU3NThkMjQ2NWZhYjNhZTVlMTkwZjI1NzhiOThiYmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMoKQogICAgIHJldHVybiBtX2NhcHR1cmVE
ZXZpY2VzOwogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGRldmljZUlEKQogewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKTsKICAgICBmb3IgKGF1dG8mIGRldmlj
ZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKQEAgLTI0OCw3ICsyNDgsNyBAQCBWZWN0b3I8Q29yZUF1
ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVk
aW9DYXB0dXJlRAogICAgIHJldHVybiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzOwogfQogCi1P
cHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3Rk
OjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQog
ewogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKSkgewog
ICAgICAgICBpZiAoZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09IGRldmljZUlEICYmIGRldmljZS5l
bmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmlu
ZGV4IDZhYWMxNTQ1NmM5MGE2YWJkOTFhNDMyZTg3ZDhjY2ZjMjk5YTI0YTYuLmIzMjA5NjUwYzA1
YTQ0MmI5MmQyOGNiMzRmNjdhM2NiNGY3MDFlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXImIHNpbmdsZXRvbigpOwogCiAgICAgY29u
c3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsOwotICAgIE9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8
Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBPcHRpb25hbDxDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlPiBjb3JlQXVkaW9EZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYpOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gY29yZUF1ZGlvRGV2aWNlV2l0
aFVJRChjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHNw
ZWFrZXJEZXZpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zcGVha2VyRGV2aWNlczsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDQyZTE4NDU2NjJm
NmIyMDFlNWNhYjY5YjlkMDhmMTExMzdiNzEzMmEuLjAzZjNlNjJhMjYzN2MzZTkwMWJhZjY5NGQz
YzUyNjVlZmE3NGFlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pb1VuaXRTdGFydGVkIHsgZmFs
c2UgfTsKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5n
czsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICB2b2lkIGNoZWNrVGltZXN0YW1wcyhjb25zdCBB
dWRpb1RpbWVTdGFtcCYsIHVpbnQ2NF90LCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmgKaW5kZXggNGI1NTVkNGM3Y2UzM2EwNTNkMjQzN2MzNmRlYzk5MWYxNmQyODU0Yy4u
NWVjM2Q4ZWM5YjdlZTNlYjU1MWQwYzA5ZWE5MzEwNWE2ZDg3OGIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWxheVNhbXBsZXMoU2Vjb25kcykgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcnJ1cHRlZEZvclRl
c3RpbmcoYm9vbCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVT
YW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAs
IDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50
Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAx
NjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9CiAKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7CkBAIC05
NCw4ICs5NCw4IEBAIHByaXZhdGU6CiAKICAgICB1aW50MzJfdCBtX2NhcHR1cmVEZXZpY2VJRCB7
IDAgfTsKIAotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1f
Y2FwYWJpbGl0aWVzOwotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4g
bV9jdXJyZW50U2V0dGluZ3M7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKICAgICBib29sIG1faXNS
ZWFkeVRvU3RhcnQgeyBmYWxzZSB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAKaW5kZXggZTIwOWMxNjk5YmFjMzkyMjczZTNiYWQ3MGVmNjNhZGZmYWMx
ODEzYy4uMmZlZjhiYjE3MzdjZjllMTVlZTJlMDM1N2QyOGViMjAyZjJmMjEyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
TWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZv
aWQgRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnVwZGF0ZVdpbmRvd0NhcHR1cmVEZXZpY2Vz
KCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3Ry
aW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0
IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBTY3Jl
ZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KGRldmljZUlEKTsKQEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlz
cGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICNl
bmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJD
b2NvYTo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBXaW5kb3dEaXNw
bGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmlj
ZUlEKTsKQEAgLTkyLDcgKzkyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICNlbmRpZgog
fQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6
Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGlkKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNw
bGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQogewogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVu
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaAppbmRleCBlNjdjOGVlNDgy
ZTVlM2I2ZmFiOTcxZGQ5NTM2MTc4OWI0MmMwODBjLi4yOGZmZjQwYTc5NzEzNzA2OTY2OTA0ODU3
NDMzMmQ4ZWIyMmVmM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2Eu
aApAQCAtNDUsOSArNDUsOSBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgVmVjdG9yPENhcHR1cmVE
ZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZSwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7Ci0gICAg
T3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0
dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJik7CiAKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2Vz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IDBiNmIyNDRh
NDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMuLjdkZWY2Y2YxN2JjOGQ1ODFjM2U2Yjkz
YWJhOTE5ZDRjNmEzOGE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
aApAQCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIAog
ICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKLSAgICBPcHRpb25hbDxSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7
CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVu
dFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzOwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7
IE1vbm90b25pY1RpbWU6Om5hbigpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFj
LmgKaW5kZXggYjYwNzllODM2YjhlM2ExYWU5ZTkyNjBmYTIzMDI2YjM2NjY3ZDk5ZS4uODU0Y2Fi
ZDZmOWFkYTYzN2M4MTk2NjMwMjg5NTZhZmFlODdlNmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
U2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjKHVpbnQzMl90KTsKICAgICB+U2NyZWVuRGlzcGxheUNh
cHR1cmVyTWFjKCk7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVu
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2NyZWVuQ2FwdHVyZURl
dmljZXMoVmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCA4ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4
ZjA1NTI4NjMxMmUyLi4yZGNlNTQxY2NmNzgwMmJjYWEzYTM3MTZiNTJhMTA0YmNkMTZhZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAg
c2l6ZV90IENHRGlzcGxheU1vZGVHZXRQaXhlbHNIaWdoKENHRGlzcGxheU1vZGVSZWYpOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4g
dXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPENHRGlyZWN0RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNw
bGF5SUQgZGlzcGxheUlEKQogewogICAgIHVpbnQzMl90IGRpc3BsYXlDb3VudCA9IDA7CiAgICAg
YXV0byBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlMaXN0KDAsIG51bGxwdHIsICZkaXNwbGF5Q291
bnQpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpu
ZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cyBzdGF0dXMsIERpc3BsCiAgICAgbV9j
dXJyZW50RnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1lKTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAgYXV0byBkaXNwbGF5
SUQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKICAgICBpZiAoIWRpc3BsYXlJ
RCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oCmluZGV4IGI2NGVj
N2Y4MTRiMjZiNmJkZjEwMTc4NWJiNGNmY2Y1NDg3NzdjOWIuLjdmYzA3MjVmYmJmYTNmYTZlYjIy
YzdmNGQxYTA5ZWRkYTk1NzRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckNvY29hLmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbG9jazsKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKIAotICAg
IE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwot
ICAgIE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERl
c2NyaXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBt
X291dHB1dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdWRpb0J1ZmZlckxp
c3Q+IG1fYXVkaW9CdWZmZXJMaXN0OwogICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+
IG1fZGF0YVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5oCmluZGV4
IGRlY2I2MmIzODg2YzBlN2U2Njc5OWJiZjk5ZmM3ZmUxMzVjZDlhYWMuLmVmOWY0MjhmYWZmYjlj
MTljY2QyNzhmYWJjYjJjOTdkMGIzYmI5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1
cmVyTWFjLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdpbmRvd0Rp
c3BsYXlDYXB0dXJlck1hYyh1aW50MzJfdCk7CiAgICAgdmlydHVhbCB+V2luZG93RGlzcGxheUNh
cHR1cmVyTWFjKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IHdpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHdpbmRvd0NhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbmRv
d0NhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rp
c3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggNDE4ZjY5MzdkZTZjMTA3YWQ1
ZDhhYmQwNGZkZGE0OTA1YjAxMGI5Zi4uNzhiYmNhZDEzOTk4NjJmNTViOTcwYmU0NzdmMjUxNGM0
ZjM0ODQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC0xMzQs
NyArMTM0LDcgQEAgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBX
aW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OmdlbmVyYXRlRnIKICAgICByZXR1cm4gRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSB7IFJldGFpblB0cjxDR0ltYWdlUmVm
PiB7IHdpbmRvd0ltYWdlKCkgfSB9OwogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBXaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KGNvbnN0IFN0cmluZyYgaWRTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFdp
bmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJiBpZFN0cmluZykKIHsKICAgICBhdXRvIHdpbmRvd0lEID0gcGFyc2VJ
bnRlZ2VyPHVpbnQzMl90PihpZFN0cmluZyk7CiAgICAgaWYgKCF3aW5kb3dJRCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwCmluZGV4IGNiZDZhZDJmM2VlZDExYWJlODAyMTIyMzhkY2UzZTAwZjA4YjQzZjQuLjlkNWVm
YzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5ZGIwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTQzOAogfQogCi1PcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQog
ewogICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDk5N2QxNTRkZGZm
ODRjZjQ0OGZjODQwMTYwNjgzOTUyOTkyYmVkNTUuLmZlMzI3NTk2YTJmMGRiZTM2ZDFkNjgyZmZi
OTQ0YjI0OTcxYjAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogCkBAIC03Niw3
ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckVycm9yKCk7CiAKICAgICBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICBPcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAg
IFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCmluZGV4IDVm
YTc5YTlhYjUzOGJkNjQ5ZGE0ZTJkNTMyMThkODk4NTQ3MjFjZTYuLjQ2N2Q5MTM5NDQ0M2VmYTI4
MzYzYTg2YThkNTRmZDJjNDQ1ODUzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtNDMsOSArNDMsOSBAQCBzdHJ1Y3QgTW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWljcm9waG9uZVBy
b3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBs
ZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdFNhbXBsZVJhdGUpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtNjMsMTQgKzYzLDE0IEBAIHN0cnVjdCBNb2NrU3BlYWtlclBy
b3BlcnRpZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxNb2NrU3BlYWtlclByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tTcGVha2VyUHJvcGVydGllcz4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQzMl90PiBk
ZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0
U2FtcGxlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBkZWZhdWx0U2FtcGxlUmF0ZTsKICAgICAg
ICAgaWYgKCFkZWZhdWx0U2FtcGxlUmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByZWxhdGVkTWljcm9waG9uZUlkOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVsYXRlZE1pY3JvcGhvbmVJZDsKICAgICAgICAg
ZGVjb2RlciA+PiByZWxhdGVkTWljcm9waG9uZUlkOwogICAgICAgICBpZiAoIXJlbGF0ZWRNaWNy
b3Bob25lSWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTQsMjQgKzk0
LDI0IEBAIHN0cnVjdCBNb2NrQ2FtZXJhUHJvcGVydGllcyB7CiAgICAgfQogCiAgICAgdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1vY2tDYW1lcmFQcm9wZXJ0
aWVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
b2NrQ2FtZXJhUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGRlZmF1bHRGcmFtZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJhbWVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1
bHRGcmFtZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZhY2luZ01vZGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZh
Y2luZ01vZGU7CiAgICAgICAgIGRlY29kZXIgPj4gZmFjaW5nTW9kZTsKICAgICAgICAgaWYgKCFm
YWNpbmdNb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRhPj4gcHJlc2V0czsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRhPj4gcHJlc2V0czsKICAgICAgICAgZGVjb2Rl
ciA+PiBwcmVzZXRzOwogICAgICAgICBpZiAoIXByZXNldHMpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBm
aWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTEzNSwxOCArMTM1LDE4IEBAIHN0cnVjdCBNb2NrRGlzcGxheVByb3Bl
cnRpZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRp
YyBPcHRpb25hbDxNb2NrRGlzcGxheVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tEaXNwbGF5UHJvcGVydGllcz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xv
cjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwogICAgICAgICBkZWNv
ZGVyID4+IGZpbGxDb2xvcjsKICAgICAgICAgaWYgKCFmaWxsQ29sb3IpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRT
aXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRTaXplOwogICAgICAg
ICBkZWNvZGVyID4+IGRlZmF1bHRTaXplOwogICAgICAgICBpZiAoIWRlZmF1bHRTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxNyw5ICsyMTcsOSBAQCBzdHJ1Y3Qg
TW9ja01lZGlhRGV2aWNlIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvcGVy
dGllcywgdHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2
aWNlPiBkZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVy
c2lzdGVudElkLCBTdHJpbmcmJiBsYWJlbCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
TWVkaWFEZXZpY2U+IGRlY29kZU1vY2tNZWRpYURldmljZShEZWNvZGVyJiBkZWNvZGVyLCBTdHJp
bmcmJiBwZXJzaXN0ZW50SWQsIFN0cmluZyYmIGxhYmVsKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm9wZXJ0
aWVzPiBwcm9wZXJ0aWVzOwogICAgICAgICBkZWNvZGVyID4+IHByb3BlcnRpZXM7CiAgICAgICAg
IGlmICghcHJvcGVydGllcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
MjcsMTkgKzIyNywxOSBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2
aWNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
b2NrTWVkaWFEZXZpY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBwZXJzaXN0ZW50SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAg
ICAgICBpZiAoIXBlcnNpc3RlbnRJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAo
IWxhYmVsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDx1aW50OF90PiBpbmRleDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBpbmRl
eDsKICAgICAgICAgZGVjb2RlciA+PiBpbmRleDsKICAgICAgICAgaWYgKCFpbmRleCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggZDdlZGFlZmI4NWEy
MzMzMDllNzUxZmE2MzAwODgxMzg2OWQ1MDI0YS4uZjBkYWRmNzFkMmQwMzUzNWE2ODJlNTBjNzli
OTQyNDJkMDg2OGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNzUsOCArNzUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgbV9jaGFubmVsQ291bnQgeyAyIH07CiAKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0g
ICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5n
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1f
Y2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAogICAgIFJ1bkxvb3A6OlRpbWVy
PE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcAppbmRleCAyMmU0YTE3N2M3NTA0YWU3NzZlMjhjYTY0NWZkZjU0M2QxZWRhOTI1Li4zNjZh
MTc4NTczZmYwMGQxNmRjODc3NzExNzM4Y2M4OGQzN2M4MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnJlbW92ZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJZCkKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoKTsKIH0KIAotT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZCkK
K3N0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAg
ICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCBPcHRpb25hbDxN
b2NrTWVkaWFEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNl
V2l0aFBlcnNpc3RlbgogICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CiB9CiAKLU9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgaWQpCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKCFp
ZC5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggYzM3YzJhYzY3MDAz
YzBmNGY5OGMyMGY1OWIxMjgyODlmMDg1NWJkYS4uYjc4ZGZjYWE0YWQ1ZDdiMTVkMjI0M2ZmNmUz
YWZmZjZhNTFhOGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtNTcsOCArNTcsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgdmlkZW9EZXZpY2Vz
KCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgZGlzcGxheURldmljZXMoKTsK
IAotICAgIHN0YXRpYyBPcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVy
c2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFE
ZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Q2FwdHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVy
biBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KICAgICBDYXB0dXJlRGV2aWNlTWFuYWdl
ciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIG1fdmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjsgfQpAQCAtNzUsMTcgKzc1LDE3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgTW9j
a0F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1h
bmFnZXIgewogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNl
PiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6bWljcm9waG9uZURldmljZXMoKTsgfQotICAgICAgICBPcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCh0eXBlLCBp
ZCk7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNl
V2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgaWQpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpj
YXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCh0eXBlLCBpZCk7IH0KICAgICB9OwogICAgIGNs
YXNzIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyIHsKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZpZGVvRGV2aWNlcygpOyB9Ci0gICAgICAgIE9wdGlvbmFsPENhcHR1
cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUs
IGlkKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07CiAgICAg
Y2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBDYXB0
dXJlRGV2aWNlTWFuYWdlciB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgVmVjdG9yPENh
cHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2aWNlcygpOyB9Ci0gICAgICAgIE9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KHR5cGUsIGlkKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1
cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07
CiAKICAgICBNb2NrQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDIwNzNhNmMzYzJmZGE4NjQyZTVmY2Y1NWE1
M2I3OWQ2MjJmZGEzNzcuLjU5NGVjMmIyNTg4MTQzZjY3Y2FkYjM2Zjk0NWY2MzI5N2Y0NDU3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYg
bmFtCiAgICAgbV9maWxsQ29sb3IgPSBwcm9wZXJ0aWVzLmZpbGxDb2xvcjsKIH0KIAotYm9vbCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFs
PGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IHJhdGUp
Citib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgc3BsaXR0
aW5nIG1vY2sgZGlzcGxheSBpbnRvIGFub3RoZXIgY2xhc3Mgc28gd2UgZG9uJ3QgZG9uJ3QgaGF2
ZSB0byBkbyB0aGlzIHNpbGx5IGRhbmNlCiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgUmVhbHRpbWVW
aWRlb1NvdXJjZSBpbmhlcml0YW5jZS4KQEAgLTEwMyw3ICsxMDMsNyBAQCBib29sIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aQogICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgcmF0ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0
aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKK3ZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmF0
ZSkKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgc3BsaXR0aW5nIG1vY2sgZGlzcGxheSBpbnRv
IGFub3RoZXIgY2xhc3Mgc28gd2UgZG9uJ3QgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIHNpbGx5IGRh
bmNlCiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgUmVhbHRpbWVWaWRlb1NvdXJjZSBpbmhlcml0YW5j
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuaAppbmRleCBmYTAxMGMwMzc2NGJhYjgwOGFmMDFmNGM5YjkwM2Y3YTBlOTFm
MjlkLi5mMDVlNWEzMjZlYzJkMzQwNWYyOWVlZmFhMGVhYjUyMWIxYjU0NjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQot
ICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9w
dGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICB2b2lkIHNl
dFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWln
aHQsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIHNldFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIHZvaWQgc2V0RnJhbWVSYXRlV2l0
aFByZXNldChkb3VibGUsIFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwogCiAKQEAgLTExMyw4
ICsxMTMsOCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9mcmFtZU51bWJlciB7IDAgfTsK
ICAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gbV9lbWl0RnJhbWVU
aW1lcjsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2Nh
cGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1f
Y3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIENv
bG9yIG1fZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgTW9ja01lZGlhRGV2aWNlIG1f
ZGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRl
eCA4NjY3N2FlZmY2ODJkODNhYTIzOGUwODlmYjg2YzFmMDk3YzY4ZmNkLi5iMzMxZWYxMjk1NTdj
MDBjOTkzM2QzYTA0ZDI0NWE0OTYwZWY5N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQoKQogICAgICAgICB9KTsKIH0KIAotT3B0aW9u
YWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6dmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUg
PyBtX21lZGlhU291cmNlUHJpdmF0ZS0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBz
dGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgK
aW5kZXggMzI1NGRhNWZiZjUzYzUyMDc5OGNkYTgwYmM5NDc4OTAyYWIxYzYyYS4uNjM4ODBmYjYw
YWY5ODFkMmJjYTE4NTk2ZjY1YmI4NmRkZTk4ODVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2UuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
TWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3MoKSBvdmVycmlkZTsKIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAg
ICBSZWZQdHI8TW9ja01lZGlhU291cmNlUHJpdmF0ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcAppbmRleCA3NDI4MDJjNmM1OWRkMzE0
MmM0MDZmOWM3MmZjN2Y3OGI4YWM4N2VlLi42YzkxN2U0MzVhYWE0NDVmODY4OWJlYWVlNDQ1OGUx
MmYyNDljMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTE4
MSw3ICsxODEsNyBAQCBNZWRpYVRpbWUgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6Y3VycmVudE1l
ZGlhVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxheWVyLmN1cnJlbnRNZWRpYVRpbWUoKTsK
IH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQorc3RkOjpvcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcyB7CiAgICAgICAgIG1fdG90YWxWaWRlb0ZyYW1lcywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmgKaW5kZXggMTIzYjY4MzhkY2Y1ZTRlZmQ1YTU1MzQ0YWJhM2YxYWZj
NDI5MzMwNS4uYmY5ZmRlMWYzODE4YTAwMjIxZDI2ZDk2YTlhYWUyYThhZWY2NmQ4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFT
b3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIE1lZGlhVGltZSBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQp
OwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRl
b1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKTsKIAogICAgIHZvaWQgaW5jcmVtZW50VG90YWxWaWRl
b0ZyYW1lcygpIHsgKyttX3RvdGFsVmlkZW9GcmFtZXM7IH0KICAgICB2b2lkIGluY3JlbWVudERy
b3BwZWRGcmFtZXMoKSB7ICsrbV9kcm9wcGVkVmlkZW9GcmFtZXM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggODhjZjFiZjJhYWE4NjkzNGNjYTgyYzRmY2Fh
NDkxZDc1YTA2Yzg4NS4uNDM4NDBhM2Q2MWU5N2VjZDFhYzE5ZmU3MzY1Yjk4YWNkN2YxNjY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBw
cmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0K
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9m
ZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgb3ZlcnJpZGUgeyBtX2Jv
eC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zmc2V0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5oCmluZGV4IDI4YTJiNTYyMTgyYWE1ODAzMTkyZjdjYzEzY2NhYWUxY2NlOTczNTcu
LmRmYmYzNmExZWM2NzRmM2JkODBiMjhhYWU4MDE5ODllNTllNjE0NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX21pbmltdW1VcGNvbWlu
Z1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7CiAgICAgVmVjdG9yPGNoYXI+IG1faW5wdXRC
dWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRl
eCA3NDY3MzcwYTY0MjdmMTZhYzVjMjM2MDcxMDYwYThiNDI5OTM5YTlhLi5lYzgwNzlhZWY3YTRk
N2VkZWU3MzhkNzFlN2JlMThkNTY1ZGU1ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUo
KQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgp
CiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJl
bnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2Ug
aGF2ZSBhIHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggOGZjYmU4YzExZjIxMzQ4Y2VmZTQ4
ZWQwMjY2NWM1NWQ2MzY5Njc3Mi4uNWE4NjM5NzRhZjNlNTE0MmI5M2RmMTBlZmFlZTk0NzM4NzBm
OGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFN0cmluZyYgcGF0aCgpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCk7Ci0gICAg
T3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpOworICAgIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpOwogCiAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJldm9r
ZUZpbGVBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCA2M2JlZTFk
ZDYxZWFmZmVlY2IwYzZmMzc3NjU5OWU2YTAyYzM4NGNiLi5hZDMwYzY5MTBhMTJjOTgxZjgwYjQ3
MTMyYTk3MGNmMTRkZjMxN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0z
NywxMiArMzcsMTIgQEAgc3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAg
ICBVUkwgZmlyc3RQYXJ0eTsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIFVS
TCB1cmw7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IFVSTCBmaXJzdFBhcnR5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkpCkBA
IC03MSwxMiArNzEsMTIgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIg
Pj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaAppbmRleCBlNjNh
N2IwYTkxNjc3ZGY3NGZhMmNkNWE2YzcwNzJmZDE3Njc5ZmQzLi40MzJmZDMwOTE3ZGZjYTg1ZTY4
ZDVhY2QxMjkzYTQyMzgxNTUxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJUEFkZHJl
c3MgewogcHVibGljOgotICAgIHN0YXRpYyBPcHRpb25hbDxJUEFkZHJlc3M+IGZyb21Tb2NrQWRk
ckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SVBBZGRyZXNzPiBmcm9tU29ja0FkZHJJbjYoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luNiYp
OwogICAgIGV4cGxpY2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3QgaW5fYWRkciYgYWRkcmVzcykK
ICAgICAgICAgOiBtX2FkZHJlc3MoYWRkcmVzcykKICAgICB7CkBAIC03MCw3ICs3MCw3IEBAIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWlu
dDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi1pbmxpbmUgT3B0
aW9uYWw8SVBBZGRyZXNzPiBJUEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qg
c29ja2FkZHJfaW42JiBhZGRyZXNzKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBJ
UEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42JiBhZGRy
ZXNzKQogewogICAgIGlmIChhZGRyZXNzLnNpbjZfZmFtaWx5ID09IEFGX0lORVQ2KQogICAgICAg
ICByZXR1cm4gSVBBZGRyZXNzIHsgYWRkcmVzcy5zaW42X2FkZHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggNzFlZTZh
ZWVmMmMzMzEwZTFmNTg2YTgwZTE5NWMxMTVjNmVkNTJkYS4uOTk1OWVhNjYzYzAxNTA0YmZhYjMx
MWVmOTgxMzBhZTQ5YWNiNzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFdvcmtR
dWV1ZSYgZGVjb2RlUXVldWUoKQogCiBzdGF0aWMgUmVzdWx0IHBhcnNlTWVkaWFUeXBlKGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIGlmIChPcHRpb25hbDxQYXJzZWRDb250ZW50VHlw
ZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKG1lZGlhVHlw
ZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IHBhcnNlZENvbnRl
bnRUeXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShtZWRpYVR5cGUpKQogICAgICAgICBy
ZXR1cm4geyBwYXJzZWRDb250ZW50VHlwZS0+bWltZVR5cGUoKSwgcGFyc2VkQ29udGVudFR5cGUt
PmNoYXJzZXQoKSwgcGFyc2VkQ29udGVudFR5cGUtPnNlcmlhbGl6ZSgpLCB7IH0gfTsKICAgICBy
ZXR1cm4geyAidGV4dC9wbGFpbiJfcywgIlVTLUFTQ0lJIl9zLCAidGV4dC9wbGFpbjtjaGFyc2V0
PVVTLUFTQ0lJIl9zLCB7IH0gfTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFNjaGVkdQogICAgICk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVUYXNrJiB0YXNrLCBNb2RlIG1vZGUpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVU
YXNrJiB0YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBN
b2RlOjpGb3JnaXZpbmdCYXNlNjQ6CkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBkZWNvZGVFc2NhcGVkKGNvbnN0IERlY29kZVRhc2smIHRhc2spCiAgICAgcmV0dXJu
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0FzRGF0YSh0YXNrLmVuY29kZWREYXRhLCBlbmNvZGlu
Zyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXN1bHQ+IGRlY29kZVN5bmNocm9ub3VzbHkoRGVj
b2RlVGFzayYgdGFzaywgTW9kZSBtb2RlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiBk
ZWNvZGVTeW5jaHJvbm91c2x5KERlY29kZVRhc2smIHRhc2ssIE1vZGUgbW9kZSkKIHsKICAgICBp
ZiAoIXRhc2sucHJvY2VzcygpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjEy
LDcgKzIxMiw3IEBAIHZvaWQgZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNv
bnRleHQmIHNjaGVkdWxlQ29udGV4dCwgTW9kZSBtb2RlLCBECiAgICAgfSk7CiB9CiAKLU9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBNb2RlIG1vZGUpCitzdGQ6Om9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYgdXJsLCBNb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE0NzY5ODVhNzM5NDRmMDZhNWE1MGZh
MGVkOGQ4MTczMzQ5ZmYyNWQuLjk0NzI4NjNiM2IwMWYwOTMxYzFjOTQ0NDU3YmI0YjRjZmU4NGNm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFJlc3VsdCB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiB9OwogCi11c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZCAoT3B0aW9uYWw8UmVzdWx0Pik+OwordXNpbmcgRGVjb2RlQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVzdWx0Pik+Owogc3Ry
dWN0IFNjaGVkdWxlQ29udGV4dCB7CiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgU2No
ZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRQYWlyczsKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0
IFNjaGVkdWxlQ29udGV4dCB7CiAKIGVudW0gY2xhc3MgTW9kZSB7IExlZ2FjeSwgRm9yZ2l2aW5n
QmFzZTY0IH07CiB2b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQm
LCBNb2RlLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYsIE1vZGUpOworV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxSZXN1bHQ+IGRlY29kZShjb25zdCBVUkwmLCBNb2RlKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDBmZTk0ZjQy
OWQ3Y2M0MDRjM2U1ZDIxYTgzYjI1MmQ2YjE4YzZiNzIuLmI3N2Y5MDA3ODE5ZmZlYzI5NWI2MDUy
OTQ4YWU5OTRkYWUyNDYxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2Fs
bFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEZp
bGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0
YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOwogICAgIG1fbGVuZ3RoSW5C
eXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCA5ZGFjNjBlN2FkM2JlNDk1MGY2OTc5YmM2ZjQzYjZjNzYwOWY0Y2ViLi44
ZjIyMTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUxMDViYmRjNjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBPcHRp
b25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICBGb3JtRGF0
YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0
X3QgZmlsZUxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSkKICAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBm
aWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgfSkgeyB9
CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxvYlVSTCkKICAgICAg
ICAgOiBkYXRhKEVuY29kZWRCbG9iRGF0YSB7IGJsb2JVUkwgfSkgeyB9CkBAIC01OSw5ICs1OSw5
IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBk
YXRhOwogICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8Rm9ybURhdGFFbGVtZW50PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3JtRGF0YUVsZW1lbnQ+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8RGF0YT4g
ZGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEYXRhPiBkYXRhOwogICAgICAgICBkZWNvZGVy
ID4+IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC03Miw3ICs3Miw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAg
ICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0IHsgMCB9OwogICAg
ICAgICBpbnQ2NF90IGZpbGVMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogCiAgICAgICAgIGJvb2wgZmls
ZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0YXRpb24oKSBjb25zdDsKIApAQCAtOTIsMjQg
KzkyLDI0IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICB7CiAgICAgICAgICAg
ICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVTdGFydCA8PCBmaWxlTGVuZ3RoIDw8IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IGZpbGVuYW1lOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBPcHRp
b25hbDxpbnQ2NF90PiBmaWxlU3RhcnQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IGZpbGVTdGFydDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZVN0YXJ0OwogICAgICAg
ICAgICAgaWYgKCFmaWxlU3RhcnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0
aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gZmlsZUxlbmd0aDsKICAgICAgICAgICAgIGlmICghZmlsZUxlbmd0
aCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xMzUsOSArMTM1LDkgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsOwogICAgICAgICB9Ci0gICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxFbmNvZGVkQmxvYkRhdGE+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbmNvZGVkQmxvYkRhdGE+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IHVybDsKICAgICAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCBh
cHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPGNoYXI+IGZsYXR0ZW4oKSBjb25zdDsgLy8gb21pdHMgZmlsZXMK
QEAgLTI3MSw3ICsyNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNTdHJlYW0geyBm
YWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwogICAgIGJvb2wgbV9jb250YWlu
c1Bhc3N3b3JkRGF0YSB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx1aW50NjRfdD4g
bV9sZW5ndGhJbkJ5dGVzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9s
ZW5ndGhJbkJ5dGVzOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0
YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGY0NDIxNzA4ZTE1NjQ5ZWIxMDBlZDk4YTJjNDc0
ZTQ3OGFmYTQ0YzMuLmZhMDM3ZmNmOTY4MTczYzBjYTkzZDQ3MWMzZGQ0MWRjNDg3MGIwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBDb21tb25IZWFkZXIgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyBrZXkgLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CiAg
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29t
bW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21tb25IZWFkZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiBrZXkgPT0gb3RoZXIua2V5ICYmIHZhbHVlID09IG90aGVyLnZhbHVlOyB9
CiAgICAgfTsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgICAgIFVuY29tbW9uSGVh
ZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpICwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVuY29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYp
OworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VW5jb21tb25IZWFkZXI+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFVuY29tbW9uSGVhZGVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4ga2V5ID09IG90
aGVyLmtleSAmJiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsgfQogICAgIH07CkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBzdHJ1Y3QgS2V5VmFsdWUgewogICAgICAgICAgICAgU3Ry
aW5nIGtleTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBI
ZWFkZXJOYW1lOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyTmFtZT4ga2V5
QXNIVFRQSGVhZGVyTmFtZTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgfTsK
IApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1hdXRvIEhUVFBIZWFkZXJNYXA6OkNvbW1vbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpIC0+IE9wdGlvbmFsPENvbW1vbkhlYWRlcj4KK2F1dG8gSFRUUEhlYWRlck1hcDo6Q29t
bW9uSGVhZGVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxDb21t
b25IZWFkZXI+CiB7CiAgICAgSFRUUEhlYWRlck5hbWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG5hbWUpKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6VW5j
b21tb25IZWFkZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KLWF1dG8gSFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxVbmNvbW1vbkhlYWRlcj4KK2F1dG8g
SFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAt
PiBzdGQ6Om9wdGlvbmFsPFVuY29tbW9uSGVhZGVyPgogewogICAgIFN0cmluZyBuYW1lOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGEzMmFkNzc0ODZmNjA3ZmVkN2Q4NjVlMGNk
NDliYzYzOTNiYTA5ODEuLjFiYzhhZDRjYjA0MGFmZTJmMzQ4MzY1MGY5ZmM5NmExZTY4YjE3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3Qg
Y2hhciogcCwgc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4gczsKIH0KIAotT3B0aW9uYWw8V2Fs
bFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBkb3Vi
bGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBvY2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmluZGV4IDcxMDI1NTdlZDEzYmYxOGVlNGU0ODBm
YmRlMDkzZDI5NDQ4MTVkOGEuLmE4NjllZjc5YmI1ZDIxYmEzOWJiMmMwNmU5Y2U4Y2YzZDM4Zjk4
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgK
QEAgLTc3LDcgKzc3LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihj
b25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihTdHJpbmdWaWV3KTsKLU9wdGlv
bmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBmaWxlbmFt
ZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBT
dHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTU0
LDcgKzE1NCw3IEBAIGJvb2wgYWRkVG9BY2Nlc3NDb250cm9sQWxsb3dMaXN0KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
SGFzaFR5cGUgPSBEZWZhdWx0SGFzaDxTdHJpbmc+PgotT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcs
IEhhc2hUeXBlPj4gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0KGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZywgSGFzaFR5cGU+PiBwYXJzZUFjY2Vz
c0NvbnRyb2xBbGxvd0xpc3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmcsIEhhc2hUeXBlPiBzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRp
b24uaAppbmRleCA2MTk1OWNjZDE0MDNhODcyNjZhNjA2YThmNzdjMDg1MmQ1NjVmYTU3Li45MjEy
M2FiZTlmZTQ1M2JlOTU3ODg5MDI4ZGQ2ZGQzNDNkMWIyODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaApA
QCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24gewog
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtZXRyaWNzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHN0cnVjdCBOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHsKQEAgLTU5LDcgKzU5LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTmV0d29ya1RyYW5zYWN0aW9uSW5m
b3JtYXRpb246OmVuY29kZShFbmNvZGUKICAgICBlbmNvZGVyIDw8IG1ldHJpY3M7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25J
bmZvcm1hdGlvbj4gTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8
TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0
aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOZXR3b3JrVHJhbnNhY3Rpb25J
bmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IDg3OTMwMDQ4ZjRmZDE4
ZDYwOThhZjdkZTRkYTI1YmU1MzJkZjU5MzEuLjNmYzI1OTg2OGI2Y2I0ODZmNzQxNGZkYjJhMWQw
ZjI2ZWNmMTVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBuZXR3b3JrQ2hhbmdlZENhbGxiYWNrKE5ldHdvcmtTdGF0ZU5vdGlmaWVy
Kik7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPGJvb2w+IG1faXNPbkxpbmU7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBtX2lzT25MaW5lOwogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+PiBtX2xpc3RlbmVyczsKICAgICBUaW1lciBtX3VwZGF0ZVN0YXRlVGltZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcAppbmRleCBkZjBmYWU5ZTBkNDRiZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5
NzFlLi4wMzI0MDg4YjA0NWZmODE2M2ZmM2MzZjQ2MmRmZjc1MzY0ZTc2NTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6aGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRAog
ICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBy
ZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
cmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyk7CiB9CiAgICAgCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0Citib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSBjb25zdAogewogICAgIGlmIChzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyA9PSBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6WWVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzgsMTQgKzE3OCwxNCBAQCBib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWluUGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcoYwogICAgIHJldHVybiB0b3BGcmFtZURvbWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAo
bV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9wRnJhbWVEb21haW4pICYmIG1fYXBwQm91bmRE
b21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWluKSk7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyAmJiBzaG91bGRCbG9j
a0Nvb2tpZXMocmVxdWVzdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykpCiAgICAgICAgIHJldHVybiBtX2NhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
c2Vjb25kcykKIHsKICAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzID0gc2Vjb25kczsK
ICAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgPSBzZWNvbmRzID8gU2Vjb25k
cyB7IHNlY29uZHMtPnNlY29uZHMoKSAvIDcuIH0gOiBzZWNvbmRzOwpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudENyb3NzUGFnZVN0b3JhZ2VBY2Nl
c3MoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsK
ICAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBWZWN0b3I8U3RyaW5n
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3QKICAgICByZXR1cm4gZW50cmllczsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9n
aW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJj
ZURvbWFpbikpIHsKICAgICAgICAgZ3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGZpcnN0UGFy
dHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3VuZERvbWFpbnMoKQogfQogI2VuZGlmCiAKLU9w
dGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNh
cChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9u
YXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsKQEAgLTQxMCw3
ICs0MTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvcwogICAgIHJldHVybiBsb2dpbkRvbWFp
bk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKHRvcEZyYW1lRG9tYWluLCByZXNvdXJjZURvbWFpbik7
CiB9CiAKLU9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0
UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQorc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dWJSZXNvdXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKIHsKICAgICBhdXRvIGl0ID0gc3Rv
cmFnZUFjY2Vzc1F1aXJrcygpLmZpbmQodG9wRnJhbWVEb21haW4pOwogICAgIGlmIChpdCAhPSBz
dG9yYWdlQWNjZXNzUXVpcmtzKCkuZW5kKCkpCkBAIC00MTgsNyArNDE4LDcgQEAgT3B0aW9uYWw8
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVz
b3VyY2VEb21haW5zSW4KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExv
Z2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BEb21haW4sIGNvbnN0IFN1YlJlc291
cmNlRG9tYWluJiBzdWJEb21haW4pCitzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY29uc3QgVG9w
RnJhbWVEb21haW4mIHRvcERvbWFpbiwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHN1YkRvbWFp
bikKIHsKICAgICBpZiAoc3ViRG9tYWluLnN0cmluZygpID09ICJzb255LmNvbSJfcyAmJiB0b3BE
b21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0aW9uLmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5jb20iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
OTliNTMxZjk3YTlhYjIyNWVhOTQyMGM1MWZiN2VmMzkyNDA5MGM2ZS4uYjc2ZDMxYWI1Y2ExZTJh
M2NkNTAyY2JjNWQ4ZDlkZWM4NmIyNzc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xNTcsNyArMTU3
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b29raWUoY29uc3QgQ29va2llJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVz
KGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91
bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBD
b29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoKTsKQEAgLTE2NywxMSArMTY3LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZl
Y3RvcjxDb29raWU+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNo
Q29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBkb21Db29raWVzRm9ySG9zdChjb25z
dCBTdHJpbmcmIGhvc3QpOwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdMb2dnaW5n
RW5hYmxlZChib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJM
JiByZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3Ry
aWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTIwMSwyNSArMjAxLDI1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvbWFpbnNX
aXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBT
dWJSZXNvdXJjZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50Q3Jvc3NQ
YWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNl
RG9tYWluJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRl
Q29va2llcyhPcHRpb25hbDxTZWNvbmRzPik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJv
bVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFn
ZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+JiBzdG9yYWdlQWNjZXNzUXVp
cmtzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVy
YWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4+IHN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFy
dHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3ViUmVzb3VyY2VEb21h
aW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGxvZ2luRG9tYWluTWF0Y2hl
c1JlcXVlc3RpbmdEb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJs
ZURvbWFpbj4gZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYs
IGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4o
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpOwogCiAjZW5k
aWYKICAgICAKQEAgLTIzMSwxMCArMjMxLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVk
ZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IGh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OwotICAg
IFJldGFpblB0cjxOU0FycmF5PiBodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdl
UmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5T
VVJMICopIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJ
VFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBSZXRh
aW5QdHI8TlNBcnJheT4gaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwg
TlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5T
VVJMICopIGNvbnN0OworICAgIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
U2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7
CiAgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBT
YW1lU2l0ZUluZm8mKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICopIGNvbnN0OwogI2VuZGlmCkBAIC0yNzMsNyAr
MjczLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIGJvb2wgbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAgICAg
Ym9vbCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQgPSBmYWxz
ZTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRF
eGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlDb29raWVCbG9ja2luZyhjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJikgY29uc3Q7CiAgICAgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKQEAgLTI4MSw5ICsyODEsOSBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8RnJhbWVJZGVudGlmaWVyLCBS
ZWdpc3RyYWJsZURvbWFpbj4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFz
aE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxUb3BG
cmFtZURvbWFpbiwgSGFzaFNldDxTdWJSZXNvdXJjZURvbWFpbj4+IG1fcGFpcnNHcmFudGVkQ3Jv
c3NQYWdlU3RvcmFnZUFjY2VzczsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Fn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Fn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyB7IH07CisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVnaXN0cmFibGVE
b21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291cmNl
OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uVGVzdE1vZGUgPSBmYWxz
ZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
RlVSTENPTk5FQ1RJT04pCi1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKK1dF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxI
VFRQQ29va2llQWNjZXB0UG9saWN5PiA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBl
LmNwcAppbmRleCA4NjMxNGM0NjQzZWQ5Yjc0MjFkMzg2Y2U1ZTRiNjMyNDliM2UyNjM3Li40ZWU2
MjcyNDQwMDJiN2RjNDY3N2YzOWU5NGEyOGE2OTIzNDRiNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzI3
LDcgKzMyNyw3IEBAIGJvb2wgUGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVudFR5cGUoTW9k
ZSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxQYXJzZWRDb250ZW50VHlw
ZT4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBN
b2RlIG1vZGUpCitzdGQ6Om9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBQYXJzZWRDb250ZW50
VHlwZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE1vZGUgbW9kZSkKIHsKICAg
ICBQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZShtb2RlID09IE1vZGU6OlJmYzIw
NDUgPyBjb250ZW50VHlwZSA6IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhjb250
ZW50VHlwZSkpOwogICAgIGlmICghcGFyc2VkQ29udGVudFR5cGUucGFyc2VDb250ZW50VHlwZSht
b2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuaAppbmRleCA5NWVkYTJmYzEyNTk5ODcyMjQzZTZkYjg3YzE4MjQ2ZWM2NGVkNDk0
Li5kMjJiOTcyNTJlOWNiM2ZkMjFiOGQ1OTRhNWJhOGQ0NDNiYTUwYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oCkBAIC00
NSw3ICs0NSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWYWxpZENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25pZmYpOwogLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBjb21tZW50cy4KIGNsYXNzIFBhcnNlZENvbnRlbnRUeXBlIHsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmLCBNb2RlID0gTW9kZTo6TWltZVNuaWZmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25pZmYpOwogICAgIFBhcnNlZENvbnRlbnRUeXBlKFBh
cnNlZENvbnRlbnRUeXBlJiYpID0gZGVmYXVsdDsKIAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAppbmRleCBjMTk0MmFmZDc4NGY5
ODJiZDJkYTFjZWMwYjJiNmQxZjVkNGY4M2E3Li42ZGRmODllMzUxODk2ZGZiYzNlMzQxZjk0MDNl
MWI1ZmU4MjBmZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBQYXJzZWRSZXF1ZXN0
UmFuZ2U6OnBhcnNlKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVl
c3RSYW5nZT4gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShTdHJpbmdWaWV3IGlucHV0KQogewog
ICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMzI3NlY3Rpb24tMi4xIGJ1
dCBhc3N1bWluZyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIGJlZ2luIGFuZCBhbiBlbmQgb3IgcGFy
c2luZyB3aWxsIGZhaWwKICAgICBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoU3RyaW5nVmlldygiYnl0
ZXM9Il9zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bh
cnNlZFJlcXVlc3RSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRSZXF1ZXN0UmFuZ2UuaAppbmRleCAxMTVjZmMyZWQ4ZDYyMWI1NDhmYWZjMTAwOTM0NmQ1Zjk5
YmMwZWZiLi4zODU1MzRmNTFmM2FjZDJiZDk0MTZjYWU1NzM1NjY1YWY0MjdhNzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdl
LmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGFyc2Vk
UmVxdWVzdFJhbmdlIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9u
YWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyBy
ZXR1cm4gcGFyc2UoU3RyaW5nVmlldyhzdHJpbmcpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVlc3RSYW5nZT4gcGFyc2UoU3RyaW5nVmlldyk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gcGFyc2UoU3RyaW5nVmlldyhzdHJpbmcpKTsgfQog
CiAgICAgY29uc3Qgc2l6ZV90IGJlZ2luIHsgMCB9OwogICAgIGNvbnN0IHNpemVfdCBlbmQgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IGU1MTQ3ZDJhYTdkNjE2NjZkY2VkN2MyNjE4YzIxYWMwZjUyNjA3NjAuLjk3
Zjg1MzAwMTViMGEyM2FhZGFhNjVhMGYxOGM5ZTJlZmEzZWJmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTcsNyAr
MTU3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlvbkgKIHsKICAgICBpZiAocmVzcG9uc2UuaXNI
VFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwotICAgICAgICBP
cHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwogICAgICAgICBpZiAocG9ydCAmJiAhV1RG
Ojppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkp
IHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAi
Q2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYzMzNDNmMmZl
MDRmMmFkZDM1OGIxZWQzYjFjNmJiNTM4Y2NiOTY0Li45YjA0YmEyYzQ4OGQyZTk1NDgwOTY2YTI2
MjQ0ODNkOWRhOTQ2ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNyb3Nz
T3JpZ2luKTsKIAotICAgIE9wdGlvbmFsPENyZWRlbnRpYWw+IGdldENyZWRlbnRpYWwoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCk7CisgICAgc3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBn
ZXRDcmVkZW50aWFsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wpOwogICAgIHZvaWQgcmVz
dGFydFJlcXVlc3RXaXRoQ3JlZGVudGlhbChjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBD
cmVkZW50aWFsJik7CiAKICAgICB2b2lkIGhhbmRsZURhdGFVUkwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXgg
ZWFlMDU2OTk5MTRjNTI0YjcwNTkxOTQ4M2Y3M2RkNjBkZDUzN2UyNS4uMjcwZmFkMDRmZDFlNWIz
ZWE2Mjk0MWNlODA5NTNhZWZlNTlmM2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTE3NCw3ICsxNzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWF0b3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikgeyBtX2luaXRpYXRvcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAg
ICAvLyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgSW5zcGVjdG9yIHRvIGJlIGFibGUg
dG8gaWRlbnRpZnkgdGhlIG5vZGUgdGhhdCBpbml0aWF0ZWQgdGhpcyByZXF1ZXN0LgotICAgIGNv
bnN0IE9wdGlvbmFsPGludD4mIGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllcjsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8aW50PiYgaW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyOyB9CiAg
ICAgdm9pZCBzZXRJbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllcihpbnQgaW5zcGVjdG9y
SW5pdGlhdG9yTm9kZUlkZW50aWZpZXIpIHsgbV9pbnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRp
ZmllciA9IGluc3BlY3RvckluaXRpYXRvck5vZGVJZGVudGlmaWVyOyB9CiAKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJvdGVjdGVkOgogICAgIFNhbWVTaXRl
RGlzcG9zaXRpb24gbV9zYW1lU2l0ZURpc3Bvc2l0aW9uIHsgU2FtZVNpdGVEaXNwb3NpdGlvbjo6
VW5zcGVjaWZpZWQgfTsKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5IHsgUmVz
b3VyY2VMb2FkUHJpb3JpdHk6OkxvdyB9OwogICAgIFJlcXVlc3RlciBtX3JlcXVlc3RlciB7IFJl
cXVlc3Rlcjo6VW5zcGVjaWZpZWQgfTsKLSAgICBPcHRpb25hbDxpbnQ+IG1faW5zcGVjdG9ySW5p
dGlhdG9yTm9kZUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1faW5zcGVjdG9y
SW5pdGlhdG9yTm9kZUlkZW50aWZpZXI7CiAgICAgYm9vbCBtX2FsbG93Q29va2llcyA6IDE7CiAg
ICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA6IDE7CiAgICAgbXV0YWJs
ZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA6IDE7CkBAIC0yNjAsNyArMjYwLDcgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOwogICAgIGJvb2wgbV9pc0FwcEJv
dW5kIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgT3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87CisgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1Q
cmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAt
MzAwLDc5ICszMDAsNzkgQEAgQUxXQVlTX0lOTElORSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6
OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CiBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBtX3VybCA9IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IHRpbWVvdXRJbnRlcnZhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
dGltZW91dEludGVydmFsOwogICAgIGRlY29kZXIgPj4gdGltZW91dEludGVydmFsOwogICAgIGlm
ICghdGltZW91dEludGVydmFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV90aW1lb3V0
SW50ZXJ2YWwgPSBXVEZNb3ZlKCp0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsK
ICAgICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFVSTCh7IH0sICpmaXJzdFBhcnR5Rm9yQ29va2ll
cyk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGh0dHBNZXRob2Q7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGh0dHBNZXRob2Q7CiAgICAgZGVjb2RlciA+PiBodHRwTWV0aG9kOwogICAgIGlm
ICghaHR0cE1ldGhvZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1faHR0cE1ldGhvZCA9
IFdURk1vdmUoKmh0dHBNZXRob2QpOwogCi0gICAgT3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gZmll
bGRzOworICAgIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gZmllbGRzOwogICAgIGRlY29k
ZXIgPj4gZmllbGRzOwogICAgIGlmICghZmllbGRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9odHRwSGVhZGVyRmllbGRzID0gV1RGTW92ZSgqZmllbGRzKTsKIAotICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBhcnJheTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+
PiBhcnJheTsKICAgICBkZWNvZGVyID4+IGFycmF5OwogICAgIGlmICghYXJyYXkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5ID0gV1RGTW92ZSgqYXJyYXkpOwogCi0gICAgT3B0aW9uYWw8UmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9saWN5OwogICAgIGRlY29kZXIgPj4gY2FjaGVQ
b2xpY3k7CiAgICAgaWYgKCFjYWNoZVBvbGljeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IG1fY2FjaGVQb2xpY3kgPSAqY2FjaGVQb2xpY3k7CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxv
d0Nvb2tpZXM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd0Nvb2tpZXM7CiAgICAgZGVj
b2RlciA+PiBhbGxvd0Nvb2tpZXM7CiAgICAgaWYgKCFhbGxvd0Nvb2tpZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBtX2FsbG93Q29va2llcyA9ICphbGxvd0Nvb2tpZXM7CiAKLSAgICBP
cHRpb25hbDxTYW1lU2l0ZURpc3Bvc2l0aW9uPiBzYW1lU2l0ZURpc3Bvc2l0aW9uOworICAgIHN0
ZDo6b3B0aW9uYWw8U2FtZVNpdGVEaXNwb3NpdGlvbj4gc2FtZVNpdGVEaXNwb3NpdGlvbjsKICAg
ICBkZWNvZGVyID4+IHNhbWVTaXRlRGlzcG9zaXRpb247CiAgICAgaWYgKCFzYW1lU2l0ZURpc3Bv
c2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0aW9u
ID0gKnNhbWVTaXRlRGlzcG9zaXRpb247CiAKLSAgICBPcHRpb25hbDxib29sPiBpc1RvcFNpdGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1RvcFNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1Rv
cFNpdGU7CiAgICAgaWYgKCFpc1RvcFNpdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X2lzVG9wU2l0ZSA9ICppc1RvcFNpdGU7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlv
cml0eT4gcHJpb3JpdHk7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4g
cHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9wcmlvcml0eSA9ICpwcmlvcml0eTsKIAotICAg
IE9wdGlvbmFsPFJlcXVlc3Rlcj4gcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVz
dGVyPiByZXF1ZXN0ZXI7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0ZXI7CiAgICAgaWYgKCFyZXF1
ZXN0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RlciA9ICpyZXF1ZXN0
ZXI7CiAKLSAgICBPcHRpb25hbDxib29sPiBpc0FwcEJvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNBcHBCb3VuZDsKICAgICBkZWNvZGVyID4+IGlzQXBwQm91bmQ7CiAgICAgaWYgKCFp
c0FwcEJvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDUy
NjUzMjMzMDE3MGUxNmYxOTAyOGFkOTM5M2JjNGIwNjQ0ODdlZDQuLjE5ZjI0MGEyZTAwZTk4ZDMz
OTA2MDI4ZjdiNWYzZDE3MGNiNGM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC02NzksMjEgKzY3
OSwyMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpoYXNDYWNoZVZhbGlkYXRvckZpZWxk
cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpMYXN0TW9kaWZpZWQpLmlzRW1wdHkoKSB8fCAhbV9odHRwSGVhZGVyRmllbGRzLmdldChI
VFRQSGVhZGVyTmFtZTo6RVRhZykuaXNFbXB0eSgpOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAg
ICAgIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpOwogICAgIHJldHVybiBtX2NhY2hlQ29u
dHJvbERpcmVjdGl2ZXMubWF4QWdlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3RhbGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3Rh
bGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2FjaGVD
b250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsKICAg
ICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLnN0YWxlV2hpbGVSZXZhbGlkYXRlOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCiB7CiAg
ICAgU3RyaW5nIGhlYWRlclZhbHVlID0gaGVhZGVycy5nZXQoaGVhZGVyTmFtZSk7CiAgICAgaWYg
KGhlYWRlclZhbHVlLmlzRW1wdHkoKSkKQEAgLTcwNSw3ICs3MDUsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycywgSAogICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAot
T3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QK
IHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNzE2LDcgKzcxNiw3IEBA
IE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGF0ZTsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmFnZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IFJlc291cmNlUmVzcG9u
c2VCYXNlOjphZ2UoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwog
CkBAIC03MzEsNyArNzMxLDcgQEAgT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1PcHRpb25hbDxXYWxsVGlt
ZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxh
enlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC03NDIsNyArNzQyLDcgQEAgT3B0aW9uYWw8
V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QKICAgICByZXR1
cm4gbV9leHBpcmVzOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJh
c2U6Omxhc3RNb2RpZmllZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21t
b25GaWVsZHNPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDBlOTdmZWU5YzZkNjVhMzgyZDZiYzU2
MTZmZmE5MWRlNzc2Yjc3MWIuLmY1YzA5NzBiMDMxYTJlOWUyYTE3NmFmODFlNmNmNTEwYWNlNGNi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBTdHJp
bmcgaHR0cFN0YXR1c1RleHQ7CiAgICAgICAgIFN0cmluZyBodHRwVmVyc2lvbjsKICAgICAgICAg
SFRUUEhlYWRlck1hcCBodHRwSGVhZGVyRmllbGRzOwotICAgICAgICBPcHRpb25hbDxOZXR3b3Jr
TG9hZE1ldHJpY3M+IG5ldHdvcmtMb2FkTWV0cmljczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxO
ZXR3b3JrTG9hZE1ldHJpY3M+IG5ldHdvcmtMb2FkTWV0cmljczsKICAgICAgICAgVHlwZSB0eXBl
OwogICAgICAgICBUYWludGluZyB0YWludGluZzsKICAgICAgICAgYm9vbCBpc1JlZGlyZWN0ZWQ7
CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUlu
Zm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUo
aW5mbyk7IH0KLSAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9OwogICAgIGJvb2wgdXNlZExlZ2FjeVRMUygpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlZExlZ2FjeVRMUyA9PSBVc2VkTGVnYWN5VExTOjpZZXM7IH0KICAg
ICB2b2lkIHNldFVzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUyB1c2VkKSB7IG1fdXNlZExlZ2Fj
eVRMUyA9IHVzZWQ7IH0KICAgICAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zSW1tdXRh
YmxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZVZhbGlkYXRvckZp
ZWxkcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29uZHM+IGNhY2hl
Q29udHJvbE1heEFnZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29u
ZHM+IGNhY2hlQ29udHJvbFN0YWxlV2hpbGVSZXZhbGlkYXRlKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxTZWNvbmRzPiBhZ2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxXYWxsVGltZT4gZXhwaXJlcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPFdhbGxUaW1lPiBsYXN0TW9kaWZpZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY2FjaGVDb250cm9sU3RhbGVX
aGlsZVJldmFsaWRhdGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBkYXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBleHBpcmVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gbGFzdE1vZGlmaWVkKCkgY29uc3Q7CiAgICAgY29uc3QgUGFyc2VkQ29u
dGVudFJhbmdlJiBjb250ZW50UmFuZ2UoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNl
IDogdWludDhfdCB7IFVua25vd24sIE5ldHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJW
YWxpZGF0aW9uLCBNZW1vcnlDYWNoZSwgTWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24sIFNlcnZp
Y2VXb3JrZXIsIEFwcGxpY2F0aW9uQ2FjaGUsIERPTUNhY2hlLCBJbnNwZWN0b3JPdmVycmlkZSB9
OwpAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0
cEhlYWRlckZpZWxkczsKICAgICBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2Fk
TWV0cmljczsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRp
ZmljYXRlSW5mbzsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBt
X2NlcnRpZmljYXRlSW5mbzsKIAogcHJpdmF0ZToKICAgICBtdXRhYmxlIE1hcmthYmxlPFNlY29u
ZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2FnZTsKQEAgLTMyMCw3ICszMjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNwb25zZSkKIHsKICAg
ICBBU1NFUlQocmVzcG9uc2UubV9pc051bGwpOwotICAgIE9wdGlvbmFsPGJvb2w+IHJlc3BvbnNl
SXNOdWxsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzcG9uc2VJc051bGw7CiAgICAgZGVj
b2RlciA+PiByZXNwb25zZUlzTnVsbDsKICAgICBpZiAoIXJlc3BvbnNlSXNOdWxsKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMjksNDMgKzMyOSw0MyBAQCBib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZUJhc2UmIHJl
c3BvbgogCiAgICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFVS
TD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX3Vy
bCA9IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKICAgICBkZWNvZGVyID4+IG1pbWVUeXBl
OwogICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25z
ZS5tX21pbWVUeXBlID0gV1RGTW92ZSgqbWltZVR5cGUpOwogCi0gICAgT3B0aW9uYWw8aW50NjRf
dD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OwogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzcG9uc2UubV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSAqZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdGV4dEVuY29kaW5nTmFtZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IHRleHRFbmNvZGluZ05hbWU7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0RW5jb2RpbmdOYW1lOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1fdGV4dEVuY29kaW5nTmFtZSA9IFdURk1v
dmUoKnRleHRFbmNvZGluZ05hbWUpOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0cFN0
YXR1c1RleHQ7CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBodHRwU3RhdHVzVGV4dDsK
ICAgICBkZWNvZGVyID4+IGh0dHBTdGF0dXNUZXh0OwogICAgIGlmICghaHR0cFN0YXR1c1RleHQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2h0dHBTdGF0dXNUZXh0ID0g
V1RGTW92ZSgqaHR0cFN0YXR1c1RleHQpOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0
cFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBodHRwVmVyc2lvbjsKICAg
ICBkZWNvZGVyID4+IGh0dHBWZXJzaW9uOwogICAgIGlmICghaHR0cFZlcnNpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2h0dHBWZXJzaW9uID0gV1RGTW92ZSgqaHR0
cFZlcnNpb24pOwogCi0gICAgT3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gaHR0cEhlYWRlckZpZWxk
czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IGh0dHBIZWFkZXJGaWVsZHM7CiAg
ICAgZGVjb2RlciA+PiBodHRwSGVhZGVyRmllbGRzOwogICAgIGlmICghaHR0cEhlYWRlckZpZWxk
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzczLDU2ICszNzMsNTYgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9u
c2VCYXNlJiByZXNwb24KIAogICAgIC8vIFRoZSBuZXR3b3JrTG9hZE1ldHJpY3MgaW5mbyBpcyBv
bmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9yZWQgaW4gZGlzayBjYWNoZS4KICAgICBpZiBj
b25zdGV4cHIgKERlY29kZXI6OmlzSVBDRGVjb2RlcikgewotICAgICAgICBPcHRpb25hbDxCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPj4gbmV0d29ya0xvYWRNZXRyaWNzOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+PiBuZXR3b3JrTG9hZE1ldHJpY3M7CiAgICAg
ICAgIGRlY29kZXIgPj4gbmV0d29ya0xvYWRNZXRyaWNzOwogICAgICAgICBpZiAoIW5ldHdvcmtM
b2FkTWV0cmljcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzcG9uc2Uu
bV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBXVEZNb3ZlKCpuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPHNob3J0PiBodHRwU3RhdHVzQ29kZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNob3J0PiBodHRwU3RhdHVzQ29kZTsKICAgICBkZWNvZGVyID4+IGh0dHBTdGF0dXNDb2Rl
OwogICAgIGlmICghaHR0cFN0YXR1c0NvZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlID0gV1RGTW92ZSgqaHR0cFN0YXR1c0NvZGUpOwogCi0g
ICAgT3B0aW9uYWw8T3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPj4gY2VydGlmaWNhdGVJbmZvOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+PiBjZXJ0aWZp
Y2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2NlcnRp
ZmljYXRlSW5mbyA9IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyk7CiAKLSAgICBPcHRpb25hbDxT
b3VyY2U+IHNvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZT4gc291cmNlOwogICAgIGRl
Y29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzcG9uc2UubV9zb3VyY2UgPSBXVEZNb3ZlKCpzb3VyY2UpOwogCi0gICAgT3B0aW9u
YWw8VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFR5cGU+IHR5cGU7CiAgICAgZGVjb2Rl
ciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
c3BvbnNlLm1fdHlwZSA9IFdURk1vdmUoKnR5cGUpOwogCi0gICAgT3B0aW9uYWw8VGFpbnRpbmc+
IHRhaW50aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VGFpbnRpbmc+IHRhaW50aW5nOwogICAgIGRl
Y29kZXIgPj4gdGFpbnRpbmc7CiAgICAgaWYgKCF0YWludGluZykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcgPSBXVEZNb3ZlKCp0YWludGluZyk7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBp
c1JlZGlyZWN0ZWQ7CiAgICAgZGVjb2RlciA+PiBpc1JlZGlyZWN0ZWQ7CiAgICAgaWYgKCFpc1Jl
ZGlyZWN0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJl
Y3RlZCA9IFdURk1vdmUoKmlzUmVkaXJlY3RlZCk7CiAKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5
VExTPiB1c2VkTGVnYWN5VExTOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNl
ZExlZ2FjeVRMUzsKICAgICBkZWNvZGVyID4+IHVzZWRMZWdhY3lUTFM7CiAgICAgaWYgKCF1c2Vk
TGVnYWN5VExTKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV91c2VkTGVn
YWN5VExTID0gV1RGTW92ZSgqdXNlZExlZ2FjeVRMUyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBp
c1JhbmdlUmVxdWVzdGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSYW5nZVJlcXVlc3Rl
ZDsKICAgICBkZWNvZGVyID4+IGlzUmFuZ2VSZXF1ZXN0ZWQ7CiAgICAgaWYgKCFpc1JhbmdlUmVx
dWVzdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggYjAzZjJkMjE4
ODY1MTRjMjhlYjA5Mzc0ODFiYzBhOTM1M2QwY2Q2MC4uZDZjOGNiOTAxNzBmZWRmYzFiNTVjZTVk
N2VjZDgyZjVjZjgwYTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgRnVuY3Rpb248dm9pZAogICAgIHBsYXRmb3JtU2VuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5k
c2hha2UsIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYmIGhlYWRlckZp
ZWxkUHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFr
ZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJG
aWVsZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8IG1fc3RhdGUgPT0gQ2xvc2luZykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApp
bmRleCA0MTZlNTlhOTM0YTJiNGFhMTMzNTIwYTQ0M2YwYTEwNjExZGY3NzFhLi5jYTExYTYxM2E2
OTEwZDg2NmI4NTk3ZTJhMjgyMzQ0ZGQyZTBlNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+KTsKLSAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
T3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgYm9vbCk+KTsKKyAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFr
ZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiwgRnVuY3Rp
b248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8gRGlzY29ubmVjdCBh
ZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7
CiAgICAgdmlydHVhbCBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSA9IDA7CkBAIC02Myw3ICs2Myw3
IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNo
YWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOwogCiAgICAgVVJMIG1fdXJs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbC5jcHAKaW5kZXggNzBmZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRm
YWM4NzgzYTVjMi4uYzVmMmVhNzgwY2I3YmY1ODBiNmMwYzYwODhhZDBmYjUxM2JiNWQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBzaXplX3QgcmVtb3Zl
VGVybWluYXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoCiAgICAgcmV0dXJuIGRhdGFMZW5ndGggLSAyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8c3Rk
OjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFG
b3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFBy
b3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWly
PFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTgog
ICAgIHJldHVybiBzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPiB7IGRhdGEsIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCB9OwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBs
YXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxk
UHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rpb248dm9pZChi
b29sLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29va2llRGF0YTsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUlu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
LmgKaW5kZXggY2VkYjBkMDJiNDJlZTEyZDg3OTJmMzk5YmIyMDVmNjlhOThjZTQwNi4uOTE5Mzcw
YTBiY2RlNjAyNjM0MTI4YzkyZGVhOGJiMzQyZDE2NmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0
ZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBj
b25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBl
OjpOb25lOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2Ugewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYpOwotICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGOjpQZXJzaXN0ZW5jZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0
ZUluZm9DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRp
ZmljYXRlSW5mb0NGTmV0LmNwcAppbmRleCAyMDFmYmQ5N2VmYmYzYTkwYzQ4OTAxOWE3NWQ2OWUy
ODllYjE5ZTU5Li5kMDZhODUwYWVlMGNkMGVhYjk0OTQ1ZTk0ZTQ5MjVkMGQyZjRkNjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5m
b0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRp
ZmljYXRlSW5mb0NGTmV0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgQ2VydGlmaWNhdGVJ
bmZvOjpjb250YWluc05vblJvb3RTSEExU2lnbmVkQ2VydGlmaWNhdGUoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBDZXJ0aWZpY2F0
ZUluZm86OnN1bW1hcnkoKSBjb25zdAorc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+
IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgYXV0byBjaGFpbiA9IGNl
cnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQpAQCAtMjAxLDkgKzIwMSw5IEBAIHN0
YXRpYyB2b2lkIGVuY29kZUNGRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkK
ICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlUHRyLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJl
Zj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogCiAgICAgaWYgKFVOTElLRUxZKCFpc0luQm91
bmRzPHNpemVfdD4oKnNpemUpKSkKQEAgLTIyOSw5ICsyMjksOSBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVTZWNUcnVzdFJlZihFbmNvZGVyJiBlbmNvZGVyLCBTZWNUcnVzdFJlZiB0cnVzdCkKICAgICBl
bmNvZGVDRkRhdGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxS
ZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVTZWNUcnVzdFJlZihEZWNvZGVyJiBkZWNvZGVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFNlY1RydXN0UmVmPj4gZGVjb2RlU2Vj
VHJ1c3RSZWYoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxib29sPiBoYXNUcnVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1RydXN0OwogICAgIGRlY29kZXIgPj4gaGFz
VHJ1c3Q7CiAgICAgaWYgKCFoYXNUcnVzdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKEVu
Y29kZXImIGVuY29kZXIsIENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbgogICAgIH0KIH0KIAot
c3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxDRkFycmF5UmVmPj4gZGVjb2RlQ2VydGlmaWNhdGVD
aGFpbihEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENG
QXJyYXlSZWY+PiBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
c2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMzEyLDkgKzMxMiw5IEBAIHZvaWQgQ29kZXI8V2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkNlCiAgICAgfQogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVy
PFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZvVHlwZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJ
bmZvVHlwZTsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUluZm9UeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCBhNTFiZGI4ZTMyNWIzMzc2ZDE0
YzZmNGY1ZTgwN2QzODFkYmI4ZDZlLi44MjcyZjc2ZDM4N2QxOWYxNWY5MzliM2I3Y2E0NGVhYmMw
Yzk3MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtNzks
NyArNzksNyBAQCBzdGF0aWMgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSB0b0NGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRUUENvbwogICAgIHJldHVybiBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1SZXRhaW5QdHI8Q0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50
aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGlj
eSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxIVFRQQ29va2ll
QWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vz
c2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsK
ICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRy
dWUgfTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVJl
Zj4gcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgQ0ZVUkxSZWYgdQogICAgIHJl
dHVybiBjb29raWU7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
Piwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAogewogICAgIGF1dG8gdXJsQ0YgPSB1cmwuY3JlYXRlQ0ZVUkwoKTsKICAgICBhdXRvIGNv
b2tpZSA9IHBhcnNlRE9NQ29va2llKGNvb2tpZVN0cmluZywgdXJsQ0YuZ2V0KCkpOwpAQCAtMjY5
LDcgKzI2OSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVm
IGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yODQsNyArMjg0LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0zMTYsNyArMzE2LDcg
QEAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZUFj
Y2VwdFBvbGljeSgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaAppbmRleCBkNjc3MjgwZDJiNWU3YjA1M2EyNDBjMTU1ZDY0YmM4ODFmMTczN2JiLi43MzMw
YWE5MzM5MjQ3OTFmMTI5MmMwODQ3OTIxZTNiMzY3NDkzZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaApAQCAtNTQsMTEgKzU0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRMZWdhY3lUTFNFbmFibGVkKGJvb2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVu
Y3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0
Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29u
c3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9p
ZChib29sLCBib29sKT4mJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9y
bVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2
b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ2xvc2UoKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5k
SW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0Rh
dGEoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3Qg
VVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYs
IGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAppbmRleCBlNjdlODNjNmIxNmVmYmNjMjU4MmMzYTg2MjQyZjU1ZjljNGI1MmUx
Li42MjU0ODViZjFjMGU4ZTU4MTliZjY1NDA1NWJkMzg2NDM3MTgzYTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03MTQsNyArNzE0LDcgQEAgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRsZUltcGwoKQogICAgIEFTU0VSVCghbV9wYWNS
dW5Mb29wU291cmNlKTsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFtX3dyaXRlU3RyZWFtKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCmluZGV4IDhh
NTA2NTBjZWE4NjJlMTU1ZjI1MzNiNGZkZDczOWY3YjgzYzE2ZDkuLjEwZWM3NWE3ZWVlODc4NDFj
ZTAxMmI5YWYxOWI0NjcwYjBjMTkyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQpAQCAtODQsNyArODQsNyBAQCBzdGF0
aWMgZG91YmxlIGNvb2tpZUNyZWF0ZWQoTlNIVFRQQ29va2llICpjb29raWUpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29r
aWUgKmNvb2tpZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29va2llRXhwaXJ5KE5T
SFRUUENvb2tpZSAqY29va2llKQogewogICAgIE5TRGF0ZSAqZXhwaXJ5RGF0ZSA9IGNvb2tpZS5l
eHBpcmVzRGF0ZTsKICAgICBpZiAoIWV4cGlyeURhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCBkOTc4MmJiMTA3MDQ2NjI1YWQwOTJjZGFmNTIxMTlmNDE0YTky
Y2RiLi41OWM1NjI3YzQ2ZGE5NmM2NjliZjM4MDA4M2Y2Yjc3YzdlNmExZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCBDb29raWVT
dG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZU9ic2Vy
dmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29va2llU3RvcmFnZU9ic2VydmVyOwogfQogCi1S
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7
CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFn
ZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1
ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAgLTI1MSwxMCArMjUxLDEwIEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0aWVzKGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvCiB9CiAjZW5kaWYKIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBj
b29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5T
VVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVT
aXRlSW5mbywgTlNTdHJpbmcgKnBhcnRpdGlvbiA9IG51bGxwdHIpCitzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGNvb2tpZXNGb3JVUkwoTlNIVFRQQ29va2llU3RvcmFnZSAqc3RvcmFnZSwgTlNV
UkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTYW1l
U2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TU3RyaW5nICpwYXJ0aXRpb24gPSBudWxscHRyKQog
ewotICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVSTDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0
aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1c2UgT3B0aW9uYWw8PiB0byBlbnN1cmUgdGhp
cyBpbnZhcmlhbnQuCi0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TQXJyYXk+PiBjb29raWVzUHRy
OworICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVSTDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0
aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1c2Ugc3RkOjpvcHRpb25hbDw+IHRvIGNoZWNr
IHRoaXMgaW52YXJpYW50IGFuZCBjcmFzaCBpZiBpdCdzIG5vdCBtZXQuCisgICAgc3RkOjpvcHRp
b25hbDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvb2tpZXNQdHI7CiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29v
a2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsKICAgICB9OwpAQCAtMzAzLDcgKzMwMyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBD
b29raWVTdG9yYWdlUmVmIGNvb2tpZVN0CiAjZW5kaWYKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAorUmV0YWluUHRy
PE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlm
ICghY29va2llU3RvcmFnZSkgewpAQCAtMzMxLDcgKzMzMSw3IEBAIE5TSFRUUENvb2tpZSAqTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29v
a2llICpjCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK1JldGFp
blB0cjxOU0FycmF5PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91
bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTM0NCw3ICszNDQsNyBAQCBSZXRhaW5Q
dHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgYwogICAgIHJldHVybiBodHRwQ29va2llc0ZvclVSTChjb29raWVTdG9y
YWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGlu
Y2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIApAQCAtMzkyLDEyICszOTIs
MTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29r
aWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJl
Q29va2llcywgc2hvdWxkQXNrSVRQLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKTsKIH0KQEAgLTQwNyw3ICs0MDcsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbgogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0
UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVy
bCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5j
bHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsK
IH0KIAotc3RhdGljIE5TSFRUUENvb2tpZSAqcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0
cmluZywgTlNVUkwqIGNvb2tpZVVSTCwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUp
CitzdGF0aWMgTlNIVFRQQ29va2llICpwYXJzZURPTUNvb2tpZShTdHJpbmcgY29va2llU3RyaW5n
LCBOU1VSTCogY29va2llVVJMLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1l
KQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBPbiAxMC41LCBOU0hUVFBDb29r
aWVTdG9yYWdlIHdvdWxkIHN0b3JlIGFuIGVtcHR5IGNvb2tpZSwKICAgICAvLyB3aGljaCB3b3Vs
ZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgpAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyBOU0hU
VFBDb29raWUgKnBhcnNlRE9NQ29va2llKFN0cmluZyBjb29raWVTdHJpbmcsIE5TVVJMKiBjb29r
aWVVUkwsIE9wdGlvCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIApA
QCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAKICAgICBOU1VSTCAq
Y29va2llVVJMID0gdXJsOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY29va2llQ2FwOworICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY29va2llQ2FwOwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgY29va2llQ2FwID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdp
c3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKICNlbmRpZgpAQCAtNDkwLDcg
KzQ5MCw3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVBY2NlcHRQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpOZXZlcjsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5oCmluZGV4IDBkYjg3NzRmODVhMzYzY2M1YTMyNWYyZjkzZWJiZGU3NWE4ZmM5MjYu
LjAwYzIwMDAyNTE1OTkxYWMwZGQ0ZWQzMDkxM2IyMmRkYzY4YWNlNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERh
dGE7CiAgICAgY2xhc3MgTWVkaWFSZXNvdXJjZUNsaWVudDsKICAgICB2b2lkIGdpdmVSZXNwb25z
ZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0YSYpOwotICAgIHZvaWQgZ2l2ZVJlc3BvbnNl
VG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KiwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiwgT3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBl
eHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJik7CisgICAgdm9pZCBnaXZl
UmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRh
Jik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERhdGE+PiBtX21hcDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZmRlMGZmY2RiZjRkYWZhOWIy
Y2IwNDUwYzU5MDRlNWM4ZWNmZWM2Zi4uNDIxOWJiNTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVh
ZjdkZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNzMsNyArNzMsNyBA
QCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFuZ2VSZXNwb25zZUdlbmVyYXRvcigpCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAotc3RhdGljIFJlc291cmNlUmVzcG9uc2Ugc3lu
dGhlc2l6ZWRSZXNwb25zZUZvclJhbmdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFs
UmVzcG9uc2UsIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcGFyc2VkUmVxdWVzdFJhbmdlLCBP
cHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkKK3N0YXRpYyBSZXNvdXJjZVJlc3Bv
bnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5nZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHBhcnNlZFJlcXVlc3RS
YW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExlbmd0aCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gYmVnaW4gPSBwYXJzZWRSZXF1ZXN0UmFu
Z2UuYmVnaW47CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKICAgICBkYXRh
LT50YXNrRGF0YS5yZW1vdmUodGFzayk7CiB9CiAKLXZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIE9w
dGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQor
dm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFy
c2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29u
dGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7CkBAIC0xNjMsMTMgKzE2MywxMyBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgIH0KIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25z
dCBEYXRhJiBkYXRhKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCiAg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgLy8gRklYTUU6IFJlc291
cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIE9w
dGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCisgICAg
Ly8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBz
aG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRo
aXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3Jp
Z2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKICAgICBpZiAoZXhwZWN0ZWRD
b250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAppbmRleCBjNjBmMWI0
MGUyYjEzNDIxMTEyZjU4MGZhMDNkNTEwY2FmNGNkOGI3Li44MTNkMmI1NDkxYTU1NDg5OGEzZjQ5
NGM4YTM1NmEzZTQyYTBjOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaApAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogICAgIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgcHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkoY29uc3QgVVJMJiwgYm9vbCBpc0ZvclByb3h5KTsK
ICAgICBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25z
dCBDdXJsUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgUHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZUZvclNlcnZlclRydXN0KGNvbnN0IFVSTCYsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYpOwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBkZXRlcm1pbmVQcm94eVBv
cnQoY29uc3QgVVJMJik7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGV0ZXJtaW5lUHJv
eHlQb3J0KGNvbnN0IFVSTCYpOwogICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lRnJvbUN1cmxBdXRoKGxvbmcpOwogICAgIFN0cmluZyBw
YXJzZVJlYWxtKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHJlbW92ZUxlYWRp
bmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAKaW5kZXggOTNjZDg4ZjMwYTY3OTc2NGE5ODhjNDhlM2VmOWY4M2VmMjQ4N2I5
Yi4uMGZmOTFiYjRmOTQxN2M3OTI3OTM5YTcxMzFiNzIzOTBkYzBiODE4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUHJvdGVjdGlv
blNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJU
cnVzdChjb25zdCBVUkwKICAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9T
dHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlX29yKDApKSwgc2VydmVyVHlwZSwg
U3RyaW5nKCksIGF1dGhlbnRpY2F0aW9uU2NoZW1lLCBjZXJ0aWZpY2F0ZUluZm8pOwogfQogCi1P
cHRpb25hbDx1aW50MTZfdD4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmRldGVybWluZVByb3h5
UG9ydChjb25zdCBVUkwmIHVybCkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpkZXRlcm1pbmVQcm94eVBvcnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IHNvY2tzUG9ydCA9IDEwODA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRl
eCBkY2EyMGJhM2M1NDIxNjBhMzE4NTcwYzY3ZGE1MjBkN2YzY2YyYTcwLi5mMjY4ZTNiOTE1MThh
YzFjM2ZkZjA1YmRlNzNlOGFmNTY2NThmYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmlj
YXRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KIAotICAgIE9w
dGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3VtbWFyeSgpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3Q7CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlQ2hhaW4uaXNFbXB0eSgpOyB9CiAK
QEAgLTgyLDIxICs4MiwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8+IHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgY2VydGlmaWNhdGU7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPGludD4gdmVyaWZpY2F0aW9uRXJyb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB2ZXJpZmljYXRpb25FcnJvcjsKICAgICAgICAgZGVjb2RlciA+PiB2ZXJpZmljYXRpb25FcnJv
cjsKICAgICAgICAgaWYgKCF2ZXJpZmljYXRpb25FcnJvcikKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBudW1PZkNlcnRzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtT2ZDZXJ0czsKICAgICAgICAgZGVjb2RlciA+
PiBudW1PZkNlcnRzOwogICAgICAgICBpZiAoIW51bU9mQ2VydHMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2Vy
dGlmaWNhdGVDaGFpbiBjZXJ0aWZpY2F0ZUNoYWluOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bU9mQ2VydHMudmFsdWUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZT4gY2VydGlmaWNhdGU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlOwogICAg
ICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGVjMGY0YmEwY2JlNDFmZDFlY2U4
YWI4ZmYyZjgzNjVmYjZhMGE5YjguLmUwZWVmNjg4MGYyYjY3ZTA5ZTIzM2RlYzc0NWJkMDgzNDg3
OWFhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
ZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQ2VydGlm
aWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShj
b25zdCB1aW50OF90KiBidWYKICAgICByZXR1cm4gY2VydGlmaWNhdGU7CiB9CiAKLU9wdGlvbmFs
PENlcnRpZmljYXRlU3VtbWFyeT4gQ2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBDZXJ0aWZpY2F0ZUluZm86OnN1bW1hcnko
KSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZpY2F0ZUNoYWluLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGRiYjA1ODM4NWRhYjdiNmUzOTVlMTU5
ZDU4MWNmOTA3NDdiZDE2MGEuLjNjNGFkYTNlNTBiYmM3N2Q4YmRkZWQwMmYwMWUyYzdlNjYwMDBm
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0Nv
b2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FM
SVRFX1JPVzsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFy
Y2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBj
b25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1
cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHJlcXVlc3RVcmwsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGh0dHBP
bmx5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mIHNlc3Npb24pCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTUzMCw3ICs1MzAs
NyBAQCBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAg
ICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuc3RlcCgpKTsKIH0KIAot
Ym9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2Us
IE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQorYm9vbCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gY2FwcGVkTGlmZXRpbWUpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCAwOTFlOTQ3NzcxODZk
YjljNjA0OGYxNzc0YTc0ZmNmMTU5YWU0NTY3Li5jNGViNjdkNmY3YzMzNDA3NmIzMmI3OThkY2Vh
NDBiNTcwNjgxZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaApAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgQ29va2ll
QWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0UG9saWN5
OyB9CiAKICAgICBIYXNoU2V0PFN0cmluZz4gYWxsRG9tYWlucygpOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiBodHRwT25seSwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxD
b29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBj
YXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgYm9vbCBzZXRDb29raWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNl
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gc3RkOjpudWxsb3B0KTsK
ICAgICBib29sIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKIAogICAgIGJvb2wgZGVsZXRlQ29v
a2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IGUz
NTA0NDgyMDYyMWZiZjc5MmNlZDcwNmQxZDAxNGZjZTNkMzUwZGMuLjM5ZDMyNWJkMDY5MmI0NmY2
NTQzNTY2ZTk1YjRhZTg5MTZjOTIyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTgxLDEzICs4MSwxMyBAQCBib29s
IGRvbWFpbk1hdGNoKGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBjb25zdCBTdHJpbmcmIGhv
c3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJz
ZUV4cGlyZXNNUyhjb25zdCBjaGFyKiBleHBpcmVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBwYXJzZUV4cGlyZXNNUyhjb25zdCBjaGFyKiBleHBpcmVzKQogewogICAgIGRvdWJsZSB0
bXAgPSBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZXhwaXJlcyk7
CiAgICAgaWYgKGlzbmFuKHRtcCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
T3B0aW9uYWw8ZG91YmxlPiB7dG1wfTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxkb3VibGU+
IHt0bXB9OwogfQogCiBzdGF0aWMgdm9pZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3Ry
aW5nJiBhdHRyaWJ1dGUsIGJvb2wmIGhhc01heEFnZSwgQ29va2llJiByZXN1bHQpCkBAIC0xMzcs
NyArMTM3LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKICAgICB9CiB9CiAKLU9wdGlvbmFs
PENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQorc3Rk
OjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2ll
TGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5sZW5ndGgoKSA+PSBNQVhfQ09PS0lFX0xJTkUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAppbmRleCA5NTZjMTUzYTkzYmYzMDE3NDNi
OGVlYWRjMTE5MDAwMTdmNTEyM2VjLi44NGQzOGRmN2UwYmVjNzM0YTgzNDMyMDkzNDVjZmU4ZDdm
ODUwZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVVdGlsLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IENvb2tpZTsKIAogbmFtZXNwYWNl
IENvb2tpZVV0aWwgewogCi1PcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0
IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0
IFN0cmluZyYpOwogCiBib29sIGlzSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCBmZmU3NzBhZGI4ZjJiMWNmMDYwMGVjZDMxM2I4M2Y5MDk0NjU3ODgxLi5jMzY4NTViNWFj
N2U5ZjgzYzdiYmUyZDYyZDY4OTI1NDY0ZjgxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIHJlYWQoY29uc3QgY2hhciogbmFtZSkgeyByZXR1
cm4gOjpnZXRlbnYobmFtZSk7IH0KICAgICBib29sIGRlZmluZWQoY29uc3QgY2hhciogbmFtZSkg
eyByZXR1cm4gcmVhZChuYW1lKSAhPSBudWxscHRyOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBPcHRpb25hbDxUPiByZWFkQXMoY29uc3QgY2hhciogbmFtZSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFQ+IHJlYWRBcyhjb25zdCBjaGFyKiBuYW1lKQogICAg
IHsKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHZhbHVlU3RyID0gcmVhZChuYW1lKSkgewogICAg
ICAgICAgICAgVCB2YWx1ZTsKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIEN1cmxIYW5kbGU6OmVu
YWJsZUNvbm5lY3Rpb25Pbmx5KCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJM
T1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xKTsKIH0KIAotT3B0aW9uYWw8
U3RyaW5nPiBDdXJsSGFuZGxlOjpnZXRQcm94eVVybCgpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Q3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogewogICAgIGF1dG8mIHByb3h5ID0gQ3VybENvbnRl
eHQ6OnNpbmdsZXRvbigpLnByb3h5U2V0dGluZ3MoKTsKICAgICBpZiAocHJveHkubW9kZSgpID09
IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQpAQCAtNjgxLDcgKzY4MSw3IEBAIE9w
dGlvbmFsPFN0cmluZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogICAgIHJldHVybiBwcm94
eS51cmwoKTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2Rl
KCkKK3N0ZDo6b3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2RlKCkKIHsK
ICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjk0
LDcgKzY5NCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgp
CiAgICAgcmV0dXJuIHJlc3BvbnNlQ29kZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRs
ZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKK3N0ZDo6b3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6
Z2V0SHR0cENvbm5lY3RDb2RlKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxI
YW5kbGU6OmdldEh0dHBDb25uZWN0Q29kZSgpCiAgICAgcmV0dXJuIGh0dHBDb25uZWN0Q29kZTsK
IH0KIAotT3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkK
K3N0ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkK
IHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
NzIxLDcgKzcyMSw3IEBAIE9wdGlvbmFsPGxvbmcgbG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVu
dExlbmd0aCgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY29udGVudExlbmd0
aCk7CiB9CiAKLU9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQor
c3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwQXV0aEF2YWlsKCkKIHsKICAg
ICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzM0LDcg
KzczNCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQog
ICAgIHJldHVybiBodHRwQXV0aEF2YWlsYWJsZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhh
bmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQorc3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxl
OjpnZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBPcHRpb25hbDxsb25nPiBDdXJs
SGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiAgICAgcmV0dXJuIHByb3h5QXV0aEF2YWlsYWJs
ZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cFZlcnNpb24oKQorc3Rk
OjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwVmVyc2lvbigpCiB7CiAgICAgaWYg
KCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc2MCw3ICs3NjAs
NyBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwVmVyc2lvbigpCiAgICAgcmV0
dXJuIHZlcnNpb247CiB9CiAKLU9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRs
ZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kcyYgZG9tYWluTG9va3Vw
U3RhcnQpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0
TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kcyYgZG9tYWluTG9va3VwU3RhcnQp
CiB7CiAgICAgZG91YmxlIG5hbWVMb29rdXAgPSAwLjA7CiAgICAgZG91YmxlIGNvbm5lY3QgPSAw
LjA7CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmkKICAgICB9CiB9
CiAKLU9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gQ3VybEhhbmRsZTo6Y2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBDdXJsSGFuZGxlOjpjZXJ0
aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIGlmICghbV9zc2xWZXJpZmllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggZjFkMTVkNWY1YjMzZjU5MTdlYWI1YzExZDYw
YmM5NGJlNGIwODYwNi4uMmQ2NTNjYTNmZjk4M2RmYWM4YWEzZTNkNGMyZTkzMWU3Yjk1MWJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKQEAgLTI4OSwxOCArMjg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnQ2Fs
bGJhY2tGdW5jdGlvbihjdXJsX2RlYnVnX2NhbGxiYWNrLCB2b2lkKik7CiAKICAgICAvLyBTdGF0
dXMKLSAgICBPcHRpb25hbDxTdHJpbmc+IGdldFByb3h5VXJsKCk7Ci0gICAgT3B0aW9uYWw8bG9u
Zz4gZ2V0UmVzcG9uc2VDb2RlKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0SHR0cENvbm5lY3RD
b2RlKCk7Ci0gICAgT3B0aW9uYWw8bG9uZyBsb25nPiBnZXRDb250ZW50TGVuZ3RoKCk7Ci0gICAg
T3B0aW9uYWw8bG9uZz4gZ2V0SHR0cEF1dGhBdmFpbCgpOwotICAgIE9wdGlvbmFsPGxvbmc+IGdl
dFByb3h5QXV0aEF2YWlsKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0SHR0cFZlcnNpb24oKTsK
LSAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGdldE5ldHdvcmtMb2FkTWV0cmljcyhj
b25zdCBXVEY6OlNlY29uZHMmIGRvbWFpbkxvb2t1cFN0YXJ0KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZ2V0UHJveHlVcmwoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldFJlc3Bv
bnNlQ29kZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZz4gZ2V0SHR0cENvbm5lY3RDb2RlKCk7
CisgICAgc3RkOjpvcHRpb25hbDxsb25nIGxvbmc+IGdldENvbnRlbnRMZW5ndGgoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGxvbmc+IGdldEh0dHBBdXRoQXZhaWwoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGxvbmc+IGdldFByb3h5QXV0aEF2YWlsKCk7CisgICAgc3RkOjpvcHRpb25hbDxsb25nPiBnZXRI
dHRwVmVyc2lvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBnZXRO
ZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgV1RGOjpTZWNvbmRzJiBkb21haW5Mb29rdXBTdGFydCk7
CiAgICAgdm9pZCBhZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKIAogICAgIGludCBzc2xFcnJvcnMoKSBjb25zdDsKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0
ZUluZm8+IGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKIAogICAgIHN0YXRpYyBsb25nIGxv
bmcgbWF4Q3VybE9mZlQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAppbmRleCA3OWRkYzM5OTI4
YTgzOWNjYTc1NmQ4MjBjNGJlMWNlNGFkZWUzZGRjLi4yODk1OGE5Y2RiZWRiZWRlMjIyYWQ3Zjdi
OGVkODBkOTkyNTgzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21wdXRlQ29udGVudExlbmd0aCgpCiAgICAg
ICAgIG1fdG90YWxTaXplICs9IGVsZW1lbnQubGVuZ3RoSW5CeXRlcygpOwogfQogCi1PcHRpb25h
bDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBz
aXplKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFy
KiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9mb3JtRGF0YSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBPcHRpb25hbDxzaXplX3Q+
IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogICAg
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUgLSB0b3RhbFJlYWRCeXRlczsKICAgICAgICAg
Y2hhciogYnVmZmVyUG9zaXRpb24gPSBidWZmZXIgKyB0b3RhbFJlYWRCeXRlczsKIAotICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IHJlYWRCeXRlcyA9IHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRCeXRlcyA9IHN3aXRjaE9uKGVsZW1lbnQu
ZGF0YSwKICAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewogICAg
ICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURhdGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBi
dWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8
c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWQoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6
ZSkKICAgICByZXR1cm4gdG90YWxSZWFkQnl0ZXM7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gQ3Vy
bEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkRmlsZURhdGEmIGZpbGVEYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQorc3RkOjpv
cHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21GaWxlKGNvbnN0IEZv
cm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSwgY2hhciogYnVmZmVyLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBpZiAobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVEYXRhLmZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQpOwpAQCAtMTczLDcgKzE3Myw3IEBAIE9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3Ry
ZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkCiAgICAgcmV0
dXJuIHJlYWRCeXRlczsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06
OnJlYWRGcm9tRGF0YShjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEsIGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IHNpemUpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFk
RnJvbURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBz
aXplKQogewogICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGRhdGEuc2l6ZSgpIC0gbV9kYXRhT2Zm
c2V0OwogICAgIGNvbnN0IGNoYXIqIGVsZW1lbnRCdWZmZXIgPSBkYXRhLmRhdGEoKSArIG1fZGF0
YU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRm9ybURhdGFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaAppbmRleCAwOTNiMjk3MTQ0NjhlZDQzYWQ3NDgyZWJk
MDJmZmY3YzI4OTBmMDE0Li5iOWExMDBkYzhkZjVhZGEzZmVjMWQ0NDE1OWE5MTJhOWEwMzdhNDA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAgIGJv
b2wgc2hvdWxkVXNlQ2h1bmtUcmFuc2ZlcigpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bFNpemUoKTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gcmVhZChjaGFyKiwgc2l6ZV90KTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcmVhZChjaGFyKiwgc2l6ZV90KTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxSZWFkU2l6ZSgpIHsgcmV0dXJuIG1fdG90YWxSZWFkU2l6ZTsgfQog
CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUNvbnRlbnRMZW5ndGgoKTsKIAotICAgIE9wdGlv
bmFsPHNpemVfdD4gcmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZp
bGVEYXRhJiwgY2hhciosIHNpemVfdCk7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbURh
dGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hhciosIHNpemVfdCk7CisgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHJlYWRGcm9tRmlsZShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxl
RGF0YSYsIGNoYXIqLCBzaXplX3QpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJv
bURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hhciosIHNpemVfdCk7CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IG1fZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCA3MDI0
ZWM3YzFlYjgyYjVjYjIzZGE1ODBiMmUzNmJhYjEwZGVkM2IwLi5mZTQxMDc2ZDc2YmFhZDIxYmNk
ZGM0YTBlMmFkM2I3NjdkNTIxNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOwogfQogCi1PcHRpb25hbDxT
dHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVz
cG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGZvciAoYXV0byBoZWFkZXIgOiByZXNwb25zZS5oZWFkZXJzKSB7CiAgICAgICAgIGF1dG8gc3Bs
aXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIpOwpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25h
bDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJs
UmVzcG9uc2UmIHJlc3BvbgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFs
PFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Vy
bE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsZW5ndGggPSBz
dHJsZW4oImJvdW5kYXJ5PSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA3MjBjNjk4MGVk
ZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxLi42ZWQ1NTZmNDJhMDU5MDFiMTliMGYxMDNi
MjJjNmE0OWYzMjYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTU3LDggKzU3LDggQEAg
cHJpdmF0ZToKICAgICAgICAgRW5kCiAgICAgfTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJp
bmc+IGV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnkoY29u
c3QgQ3VybFJlc3BvbnNlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBleHRy
YWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIHBy
b2Nlc3NDb250ZW50KCk7CiAgICAgYm9vbCBjaGVja0ZvckJvdW5kYXJ5KHNpemVfdCYgYm91bmRh
cnlTdGFydFBvc2l0aW9uLCBzaXplX3QmIGxhc3RQYXJ0aWFsTWF0Y2hQb3NpdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94
eVNldHRpbmdzLmNwcAppbmRleCBkZTA5MjdmZTFhM2E2ZGEzMTc4MGM1ODQ5NTNhMGE5NjBkNGUx
Yzk3Li5kNzQyM2IyOTBhMjhjNWUwMThjY2QyZmM5NWIzZWNmNWQ2YTAwMzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlT
ZXR0aW5ncy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJveHlQb3J0ID0gMTA4MDsKIAotc3RhdGljIE9w
dGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMJik7CitzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCYpOwogCiBDdXJsUHJveHlT
ZXR0aW5nczo6Q3VybFByb3h5U2V0dGluZ3MoVVJMJiYgcHJveHlVcmwsIFN0cmluZyYmIGlnbm9y
ZUhvc3RzKQogICAgIDogbV9tb2RlKE1vZGU6OkN1c3RvbSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9v
bCBwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseShjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gdXJs
LnByb3RvY29sSXMoInNvY2tzNCIpIHx8IHVybC5wcm90b2NvbElzKCJzb2NrczRhIikgfHwgdXJs
LnByb3RvY29sSXMoInNvY2tzNSIpIHx8IHVybC5wcm90b2NvbElzKCJzb2NrczVoIik7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFByb3h5UG9ydChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBhdXRvIHBvcnQgPSB1cmwucG9ydCgpOwogICAgIGlmIChwb3J0KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0
IFVSTCYgdXJsKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBVUkwgJnVybCkKIHsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSB8fCB1cmwuaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcAppbmRleCA2OWVjMjYyZGNiMmJlODI2YTg4YjgwMDk3ZmQw
OTdmNDRkYTM2NGM4Li42M2Y4MTRhNWJkOGE0MWE0YmFjMmEwNzkxMzA1MTg1YWQxMWRiNGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
U0xIYW5kbGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ3VybFNTTEhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluCiAg
ICAgbV9hbGxvd2VkQ2xpZW50SG9zdHMuc2V0KGhvc3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7
IGNlcnRpZmljYXRlLCBrZXkgfSk7CiB9CiAKLU9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVu
dENlcnRpZmljYXRlPiBDdXJsU1NMSGFuZGxlOjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25z
dCBTdHJpbmcmIGhvc3ROYW1lKSBjb25zdAorc3RkOjpvcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpD
bGllbnRDZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9h
bGxvd2VkQ2xpZW50SG9zdHNMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5oCmluZGV4IDIyNjlkOTViYWNhODdhYjVm
MTM4ZGRiNjU3YmVkYjZiNDZmN2M1OTkuLmUwNzY4YTEyZTcyOGQzMjcwYWVmNDIxZmUwNzMwN2Rm
YzYwMmM0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTU0xIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YW5JZ25vcmVBbnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBPcHRpb25hbDxD
bGllbnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50
Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgTkVFRF9P
UEVOU1NMX1RIUkVBRF9TVVBQT1JUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggYjI0ZTliNmVkOWQ0NTAzY2M0MDU4MjAwNDU5ZTc5MWQwMTc4N2Y1OS4uNzYxOGRjYTQ0
ZDAwNDFkM2YzNzY0NTg3ZTE1ZjQwYzVjZTNjOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtNTcsOCArNTcsOCBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgog
ewogICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsKIAotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkg
PSBmb3JIVFRQSGVhZGVyID8gc3RkOjpudWxsb3B0IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9
OwotICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxv
cHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07CisgICAgYXV0byBzZWFyY2hIVFRQT25seSA9
IGZvckhUVFBIZWFkZXIgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgZmFs
c2UgfTsKKyAgICBhdXRvIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpu
dWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7IGZhbHNlIH07CiAKICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5
LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIHN0ZDo6bnVsbG9wdCkpIHsKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVzdWx0KSB7CkBAIC05NSwxMyArOTUsMTMgQEAg
Q29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25z
dAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lk
ZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lkZUNvb2tp
ZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlm
ZXRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRM
aWZldGltZSA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlw
dCwgY2FwcGVkTGlmZXRpbWUpOwogfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dAogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBz
ZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4g
eyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNl
IH07CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nv
b2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBhdXRvIGNvb2tpZXMgPSBjb29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0KTsKICAgICBpZiAoIWNvb2tpZXMpCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIFdlYktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2ll
cyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4geyBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKSwgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cAppbmRleCA4MTY0MjdiMGViNmUyODEwOWVhMjM3YjEyYWJkMzdiNjM3MzVlYjhhLi5mMTdmOGNi
ZjhkZmVhYTk2MDcxM2FkOGE0MDRiYzMxOGYxN2Q4NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOjpCSU9fZnJlZShtX2Jpbyk7CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBjb25z
dAorICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKICAgICAgICAg
YXV0byBsZW5ndGggPSA6OkJJT19nZXRfbWVtX2RhdGEobV9iaW8sICZkYXRhKTsKQEAgLTE1OCw3
ICsxNTgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlm
aWNhdGU+IHBlbURhdGFGcm9tQ3R4KFg1MDlfU1RPUkVfQwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJ
bmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCiB7CiAg
ICAgaWYgKCFjdHgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTUsNyArMjE1
LDcgQEAgc3RhdGljIFN0cmluZyBnZXRTdWJqZWN0TmFtZShjb25zdCBYNTA5KiB4NTA5KQogICAg
IHJldHVybiBiaW8uZ2V0RGF0YUFzU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNv
bmRzPiBjb252ZXJ0QVNOMVRpbWVUb1NlY29uZHMoY29uc3QgQVNOMV9USU1FKiBhbnMxVGltZSkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNvbnZlcnRBU04xVGltZVRvU2Vjb25kcyhj
b25zdCBBU04xX1RJTUUqIGFuczFUaW1lKQogewogICAgIGlmICghYW5zMVRpbWUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIHZvaWQgZ2V0
U3ViamVjdEFsdE5hbWUoY29uc3QgWDUwOSogeDUwOSwgVmVjdG9yPFN0cmluZz4mIGRuc05hbWVz
LCBWZWN0b3IKICAgICB9CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFy
eT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pCiB7CiAgICAgQklPIGJpbyB7IHBlbSB9OwogICAgIGF1
dG8geDUwOSA9IGJpby5yZWFkWDUwOSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmgKaW5kZXggZWZjZGU5ODdiNjAwZDQxOGMz
OTkwMDVmNmNjNTI4NTI1YjZkYzA4MC4uNjhjNTU2MWY0ZTM3NmIzMGZlYTNlNmM4ODRjZTk2ZGVk
OTUwOTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L09wZW5TU0xIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvT3BlblNTTEhlbHBlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBPcGVuU1NM
IHsKIAotT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBjcmVhdGVDZXJ0aWZpY2F0
ZUluZm8oWDUwOV9TVE9SRV9DVFgqKTsKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3Vt
bWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pOworc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGNyZWF0ZUNlcnRpZmljYXRlSW5m
byhYNTA5X1NUT1JFX0NUWCopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1
bW1hcnk+IGNyZWF0ZVN1bW1hcnlJbmZvKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGVtKTsKIAog
fSAvLyBuYW1lc3BhY2UgT3BlblNTTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBiNzE1ODYz
NzJhYjY2YjhmMWFhZjU4MzQwMTVmOWQ3NDhmYThlZWYyLi4yZTE4YTI3OTY0ZmQ4MTkxZTQ2ZThk
N2IzNTY2N2I5YTMzOTAxNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMzI1LDcgKzMy
NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotT3B0aW9uYWw8Q3JlZGVudGlhbD4gUmVzb3VyY2VIYW5kbGU6OmdldENyZWRlbnRpYWwo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQorc3RkOjpvcHRp
b25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21f
cGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhl
IGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1MSHR0cFJlcXVlc3Qub3BlbigpLgogICAgIENyZWRlbnRp
YWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggZmFkNGVmOTE5ODEx
OGY1ZTZlNWVkN2QzYzE0Yjk5ZTU3NDU5MzQ1MS4uMmQwNTg0ZGFiNWNmZjZkMTQ5MDYyOTY0MmJh
ZWE2NTJmYWVhMDAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC00OSwxNCArNDks
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7CiAKICAgICBz
aXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
ICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogCiAgICAgdm9pZCBkaWRPcGVuKEN1cmxTdHJl
YW1JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA4
YmViM2I1M2I5ZGJlNGE2NDdjYmIzMTczMWQxNmE5NTMwZmZkMzRjLi4yZmVjZTAyOGVmZmRiZTg4
NTE4ZWM3YjhiZTI1OWIwYTA5MDg2Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tl
dFN0cmVhbUhhbmRsZUltcGwoKQogICAgIGRlc3RydWN0U3RyZWFtKCk7CiB9CiAKLU9wdGlvbmFs
PHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChpc1N0cmVhbUludmFsaWRhdGVkKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IGI0ZTUzZWRl
NTAxZDQ4MWM1NDIwYmQyODNhMmQwYTc1MTEwODBmMjEuLmU2YzU2Y2Y4MGUyMzEzMjg3MWM4MTQw
Nzk1YzUxMjFhYWQ3M2IxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiAgICAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gbV9yZXF1ZXN0UmVzdWx0OwogICAgIFJldGFpblB0cjxOU0NhY2hlZFVS
TFJlc3BvbnNlPiBtX2NhY2hlZFJlc3BvbnNlUmVzdWx0OwotICAgIE9wdGlvbmFsPFNjaGVkdWxl
UGFpckhhc2hTZXQ+IG1fc2NoZWR1bGVkUGFpcnM7CisgICAgc3RkOjpvcHRpb25hbDxTY2hlZHVs
ZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFBhaXJzOwogICAgIEJPT0wgbV9ib29sUmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGIxMWZhNzdkMWJmNDdhNGMwNDAzMmY1MWZkNGRmOTQ2
N2YyMTllMS4uNGJkM2ZlOWZkZGVkMGE5ZWVhZGNmNWUyNzBiYTM1OTUyOGYxZDFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotc3RhdGljIGJvb2wgc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKGNvbnN0IE9wdGlv
bmFsPFNjaGVkdWxlUGFpckhhc2hTZXQ+JiBwYWlycykKK3N0YXRpYyBib29sIHNjaGVkdWxlZFdp
dGhDdXN0b21SdW5Mb29wTW9kZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNjaGVkdWxlUGFpckhhc2hT
ZXQ+JiBwYWlycykKIHsKICAgICBpZiAoIXBhaXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvLmgKaW5kZXggY2IyNjA4NDY2NmI3MmU5YzhhZWY3ZTQwMjZkZGRmZTdlYjViYjg4Yy4u
NDkwZDk2NzY1NDg4NGUwODhkODAwOWU0ZWNhMDlmM2JjMTYyOTFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFT
aWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7
IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3VtbWFyeSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQo
KTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2VydGlmaWNhdGU7IH0KIApAQCAtNzgsOSArNzgsOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiB7CiAgICAgICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0YSwgYnl0ZUFycmF5LT5sZW4pOwogICAgIH0K
IAotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+PiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBzaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzaXplOwogICAgICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xNDQsOSArMTQ0LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJvcnMoKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pj4gY2VydGlmaWNhdGVzRGF0YUxpc3Q7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0J5dGVBcnJheT4+PiBjZXJ0aWZpY2F0
ZXNEYXRhTGlzdDsKICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAg
ICAgICAgaWYgKCFjZXJ0aWZpY2F0ZXNEYXRhTGlzdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0
KCkpOwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0bHNFcnJvcnM7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRsc0Vycm9yczsKICAgICAgICAgZGVjb2RlciA+PiB0bHNF
cnJvcnM7CiAgICAgICAgIGlmICghdGxzRXJyb3JzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlMGU4ODJh
MzhiYjk5MTZhZWZmNDljOTFkZWEyYmViNTNjZGU5MmIwLi5kNDAxNmY4NmI0OTAzYTI1ODg2Mjkx
NDQ5MDY1YmFiZDU0NjgyNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3QgZ2NoYXIqIG5hbWUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91
bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAKQEAgLTU3MSw3
ICs1NzEsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKK3N0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBi
b29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxk
QXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTYy
OCwxMiArNjI4LDEyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
U2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3Ry
aW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVz
IH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQs
IGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSBjb25zdAogewogICAgIC8vIFNlY3VyZSBjb29raWVzIHdpbGwgc3RpbGwgb25s
eSBiZSBpbmNsdWRlZCBpZiB1cmwncyBwcm90b2NvbCBpcyBodHRwcy4KICAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFt
ZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmlu
ZGV4IDNlY2Y4NjYwMDVkYTZkYTljZWM3Yzc5MzBlNmE0ZjkzY2IzOWQ2ZTAuLjg4ZGYzNzQ4ZTk4
MGEyMmU3MWJkODM1ODY0Y2FmMjRiNmI3ZWE1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3Qg
dWludDhfdCosIHNpemVfdCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWwKKyAgICB2b2lkIHBs
YXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCwgYm9vbCk+JiYpIGZpbmFsCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZTcyOTIxYzM2NjdlMDUw
ZTJkZWJiNDRhMTc3MDRiOGQ3OTg2MDI0MS4uNWI5MTFkNzQyMGU2ZTg1ZWM4ZWFjYjcxNmZlODRm
ZDJhYTcyNDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCB2
b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQogICAgIG1faWdub3JlVExTRXJyb3JzID0gaWdub3JlVExTRXJyb3JzOwogfQogCi1P
cHRpb25hbDxSZXNvdXJjZUVycm9yPiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3Jz
KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9y
PiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxz
RXJyb3JzKQogewogICAgIGlmIChtX2lnbm9yZVRMU0Vycm9ycyB8fCAhdGxzRXJyb3JzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDVhNDg0OTM2
YzA3NmRhZTYzZjM0N2JlNWRhZGQyMmQzYzhlZmY3YjEuLjhjMzMyMmE2M2RjZDRjM2FlNTlmNDBl
ZjlmOTg4YTRiZjU2OTVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IENTdHJpbmcmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wpOwotICAgIE9w
dGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYsIEdUbHNDZXJ0
aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291
cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBo
b3N0KTsKIAogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0cmlu
Zz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcAppbmRleCA2YzNkM2E4ZGY2MDgwZWEzOWViNzJmNTFjYzdlYTc0MzQwYWM1YzY3Li4yMzc4
ZGM4MWVlODcyZjg1NGI5MzIzMDg4NmE1ZTNjMWZmN2NiZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCkBAIC0xMTQsMTIgKzExNCwx
MiBAQCB1aW50NjRfdCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotT3B0aW9uYWw8V2Fs
bFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxpdGVGaWxlU3lzdGVtOjpk
YXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpmaWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KIAotT3B0aW9uYWw8
V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gU1FMaXRlRmlsZVN5
c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7
CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmlu
ZGV4IGVhMmYxNjk5MzBkNTRmM2RiYTk5MDdkODhmMmJjY2Y3NjNjZGJiYzYuLmM2OGQ5YzdlN2Fm
OTg5NzZhMWVkM2RjYjZmMmFjZmU0YjZjZjVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaApAQCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VG
aWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxXYWxsVGltZT4g
ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRhYmFzZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOwogCiBwcml2YXRlOgogICAgIC8vIGRvIG5vdCBpbnN0YW50aWF0
ZSB0aGlzIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Vu
Y29kaW5nVGFibGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdU
YWJsZXMuY3BwCmluZGV4IDY1NWRmNTYyMmUxYzMwNTJkYzUxY2U4ZDFiYzc1OTViN2E0NDRmZTMu
LjExNTI2N2Y5NGY2YWNlNTMxZjcwODk3MDcwMzY4NGRkZGU3N2Y0MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwCkBAIC03MDc0LDcgKzcw
NzQsNyBAQCBjb25zdCBzdGQ6OmFycmF5PHN0ZDo6cGFpcjx1aW50MTZfdCwgVUNoYXI+LCAxNzA0
OD4mIGV1Y0tSKCkKICAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAg
ICAgICAgYXV0byBpY3VDb252ZXJ0ZXIgPSBJQ1VDb252ZXJ0ZXJQdHIgeyB1Y252X29wZW4oIndp
bmRvd3MtOTQ5IiwgJmVycm9yKSB9OwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7
Ci0gICAgICAgIGF1dG8gZ2V0UGFpciA9IFtpY3VDb252ZXJ0ZXIgPSBXVEZNb3ZlKGljdUNvbnZl
cnRlcildICh1aW50MTZfdCBwb2ludGVyKSAtPiBPcHRpb25hbDxzdGQ6OnBhaXI8dWludDE2X3Qs
IFVDaGFyPj4geworICAgICAgICBhdXRvIGdldFBhaXIgPSBbaWN1Q29udmVydGVyID0gV1RGTW92
ZShpY3VDb252ZXJ0ZXIpXSAodWludDE2X3QgcG9pbnRlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8dWludDE2X3QsIFVDaGFyPj4gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90
LCAyPiBpY3VJbnB1dCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvaW50ZXIgLyAxOTB1ICsgMHg4
MSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvaW50ZXIgJSAxOTB1ICsgMHg0MSkgfTsKICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aWN1SW5wdXQuZGF0YSgpKTsKICAgICAgICAgICAgIFVDaGFyIGljdU91dHB1dFsyXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaAppbmRleCBlNWJkNTIy
ZjhhNjhkY2VmOGViZGY0ODk2ZTliMTI2NzA3NmIxZTA3Li5kN2FiNjg3ZDRmYWFlNTkzYjJhMDQ0
NzNhMDQ5NzQwOWFkMjFjODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0VuY29kaW5nVGFibGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9F
bmNvZGluZ1RhYmxlcy5oCkBAIC00OCw3ICs0OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxl
Y3Rpb25UeXBlPiB2b2lkIHNvcnRCeUZpcnN0KENvbGxlY3Rpb25UeXBlJik7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBzdGFibGVTb3J0QnlGaXJzdChDb2xsZWN0aW9u
VHlwZSYpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IGJvb2wgaXNTb3J0ZWRC
eUZpcnN0KGNvbnN0IENvbGxlY3Rpb25UeXBlJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0
aW9uVHlwZT4gYm9vbCBzb3J0ZWRGaXJzdHNBcmVVbmlxdWUoY29uc3QgQ29sbGVjdGlvblR5cGUm
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlLCB0eXBlbmFtZSBLZXlUeXBlPiBz
dGF0aWMgYXV0byBmaW5kRmlyc3RJblNvcnRlZFBhaXJzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBj
b2xsZWN0aW9uLCBjb25zdCBLZXlUeXBlJikgLT4gT3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdp
bihjb2xsZWN0aW9uKS0+c2Vjb25kKT47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlw
ZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWlycyhj
b25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgY29uc3QgS2V5VHlwZSYpIC0+IHN0ZDo6
b3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKS0+c2Vjb25kKT47CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1
dG8gZmluZEluU29ydGVkUGFpcnMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNv
bnN0IEtleVR5cGUmKSAtPiBzdGQ6OnBhaXI8ZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9u
KSksIGRlY2x0eXBlKHN0ZDo6YmVnaW4oY29sbGVjdGlvbikpPjsKIAogI2lmICFBU1NFUlRfRU5B
QkxFRApAQCAtMTEyLDcgKzExMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBl
PiBib29sIHNvcnRlZEZpcnN0c0FyZVVuaXF1ZShjb25zdCBDb2xsZWN0aW9uVHlwCiAgICAgcmV0
dXJuIHN0ZDo6YWRqYWNlbnRfZmluZChzdGQ6OmJlZ2luKGNvbGxlY3Rpb24pLCBzdGQ6OmVuZChj
b2xsZWN0aW9uKSwgRXF1YWxGaXJzdCB7IH0pID09IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3Rh
dGljIGF1dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWlycyhjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29s
bGVjdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5KSAtPiBPcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJl
Z2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgordGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5
cGUsIHR5cGVuYW1lIEtleVR5cGU+IHN0YXRpYyBhdXRvIGZpbmRGaXJzdEluU29ydGVkUGFpcnMo
Y29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNvbnN0IEtleVR5cGUmIGtleSkgLT4g
c3RkOjpvcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJlZ2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgog
ewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19pbnRlZ3JhbF92PEtleVR5cGU+KSB7CiAgICAg
ICAgIGlmIChrZXkgIT0gZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKS0+Zmlyc3QpKGtl
eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2lu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCA0
ZjZjM2U3OTMwODI4ZTE2NmY1Y2E3Yzg5NmFmNDg2YTY4ZjM2MmM0Li44ZjZjOGMwOWY5NzFkNTNm
NDJmOGNjYWUzMTI4MGMxNzNmZjk0ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmgKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVx
dWVzdERhdGEgewogICAgIGZyaWVuZCBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsgLy8gRm9yIGFj
Y2VzcyB0byBtX2lkZW50aWZpZXIuCiBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nUmVxdWVzdERh
dGEoKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEoT3B0aW9uYWw8VGV4
dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4
dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIFRleHRDaGVja2lu
Z1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQorICAgIFRleHRDaGVja2luZ1JlcXVlc3REYXRhKHN0
ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlw
ZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQogICAgICAgICA6IG1fdGV4
dCB7IHRleHQgfQogICAgICAgICAsIG1faWRlbnRpZmllciB7IGlkZW50aWZpZXIgfQogICAgICAg
ICAsIG1fcHJvY2Vzc1R5cGUgeyBwcm9jZXNzVHlwZSB9CkBAIC05NiwxNCArOTYsMTQgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRl
bnRpZmllcj4gaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHRleHQo
KSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlw
ZT4gY2hlY2tpbmdUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tpbmdUeXBlczsgfQogICAg
IFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9jZXNzVHlwZTsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgT3B0aW9u
YWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiAg
ICAgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1By
b2Nlc3NJbmNyZW1lbnRhbCB9OwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2No
ZWNraW5nVHlwZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNDSksuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNDSksuY3BwCmluZGV4IDIxMTdlMWE0YjkwNTIzMzFjZGNkNjQxMjI0ZTc2MzUwYjJlOWVkMTku
LmZmOWY4ZWNiM2E3YjcxNDE3YmNjNzY2OTlmZWFmYjUyMWQwNGMxYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKQEAgLTIxOSwxMiArMjE5LDEy
IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmRlY29kZUNvbW1vbihjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNoYXI+IGNvZGVQb2ludEpJUzAyMDgodWludDE2X3Qg
cG9pbnRlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFVDaGFyPiBjb2RlUG9pbnRKSVMwMjA4KHVp
bnQxNl90IHBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIGZpbmRGaXJzdEluU29ydGVkUGFpcnMoamlz
MDIwOCgpLCBwb2ludGVyKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFVDaGFyPiBjb2RlUG9pbnRK
SVMwMjEyKHVpbnQxNl90IHBvaW50ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcj4gY29k
ZVBvaW50SklTMDIxMih1aW50MTZfdCBwb2ludGVyKQogewogICAgIHJldHVybiBmaW5kRmlyc3RJ
blNvcnRlZFBhaXJzKGppczAyMTIoKSwgcG9pbnRlcik7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAg
U3RyaW5nIFRleHRDb2RlY0NKSzo6aXNvMjAyMkpQRGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoLCBib29sIGYKICAgICAgICAgICAgIHJldHVybiBTYXdFcnJvcjo6WWVz
OwogICAgICAgICBjYXNlIElTTzIwMjJKUERlY29kZXJTdGF0ZTo6RXNjYXBlOiB7CiAgICAgICAg
ICAgICB1aW50OF90IGxlYWQgPSBzdGQ6OmV4Y2hhbmdlKG1fbGVhZCwgMHgwMCk7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxJU08yMDIySlBEZWNvZGVyU3RhdGU+IHN0YXRlOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxJU08yMDIySlBEZWNvZGVyU3RhdGU+IHN0YXRlOwogICAgICAgICAgICAg
aWYgKGxlYWQgPT0gMHgyOCkgewogICAgICAgICAgICAgICAgIGlmIChieXRlID09IDB4NDIpCiAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gSVNPMjAyMkpQRGVjb2RlclN0YXRlOjpBU0NJSTsK
QEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTxzdGQ6OnBhaXI8dWlu
dDMyX3QsIFVDaGFyMzI+LCAyMDc+JiBnYjE4MDMwUmFuZ2VzKCkKIH0KIAogLy8gaHR0cHM6Ly9l
bmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2luZGV4LWdiMTgwMzAtcmFuZ2VzLWNvZGUtcG9pbnQK
LXN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29kZVBvaW50KHVpbnQzMl90
IHBvaW50ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29k
ZVBvaW50KHVpbnQzMl90IHBvaW50ZXIpCiB7CiAgICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYg
cG9pbnRlciA8IDE4OTAwMCkgfHwgcG9pbnRlciA+IDEyMzc1NzUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0NKSy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksu
aAppbmRleCBiZmJlYzVhMDI0NTlmN2Q5N2NkMGM1ZTQ4NzM1ZDgyZjY3NWUzMTY5Li44YjcwNjZh
ZjUzYTA3NGI2MTViODI5NjYwZWZhZDNhMmZkYzQ4MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmgKQEAgLTYxLDE0ICs2MSwxNCBAQCBwcml2YXRlOgog
ICAgIElTTzIwMjJKUERlY29kZXJTdGF0ZSBtX2lzbzIwMjJKUERlY29kZXJTdGF0ZSB7IElTTzIw
MjJKUERlY29kZXJTdGF0ZTo6QVNDSUkgfTsKICAgICBJU08yMDIySlBEZWNvZGVyU3RhdGUgbV9p
c28yMDIySlBEZWNvZGVyT3V0cHV0U3RhdGUgeyBJU08yMDIySlBEZWNvZGVyU3RhdGU6OkFTQ0lJ
IH07CiAgICAgYm9vbCBtX2lzbzIwMjJKUE91dHB1dCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8
dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlOworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlOwogCiAgICAgdWludDhf
dCBtX2diMTgwMzBGaXJzdCB7IDB4MDAgfTsKICAgICB1aW50OF90IG1fZ2IxODAzMFNlY29uZCB7
IDB4MDAgfTsKICAgICB1aW50OF90IG1fZ2IxODAzMFRoaXJkIHsgMHgwMCB9OwogCiAgICAgdWlu
dDhfdCBtX2xlYWQgeyAweDAwIH07Ci0gICAgT3B0aW9uYWw8dWludDhfdD4gbV9wcmVwZW5kZWRC
eXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbV9wcmVwZW5kZWRCeXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEYxNi5oCmluZGV4IGQ4Y2QxZTY2M2MwM2IwYmU4ZDkzMDgyMTg3OGEzYjkwMjA5
NDI0NzkuLjkwODc3ZmIyNWQ3ZWFkNDE2ZGEzYzc3OGM5ZGI0MjAwMGM2NzY1NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmgKQEAgLTQzLDggKzQz
LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVu
ZW5jb2RhYmxlSGFuZGxpbmcpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBtX2xpdHRsZUVuZGlh
bjsKLSAgICBPcHRpb25hbDx1aW50OF90PiBtX2xlYWRCeXRlOwotICAgIE9wdGlvbmFsPFVDaGFy
PiBtX2xlYWRTdXJyb2dhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBtX2xlYWRCeXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IG1fbGVhZFN1cnJvZ2F0ZTsKICAgICBib29sIG1f
c2hvdWxkU3RyaXBCeXRlT3JkZXJNYXJrIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IDgxZDIyZjJkMzA1YmQ4ZWNiNGEwOTA2YTMx
ZTBhZGYyYjE3MTNlYjQuLjI5YWJhYmE0MTIwZmY1ZmZlYTNmN2U0NzAyNzRhYzUyYzU1N2Q1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtMjY4LDcgKzI2
OCw3IEBAIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZvbnRWYXJpYW50U2V0dGluZ3M+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIC8v
IEZJWE1FOiB0aGlzIHdvdWxkIGJlIG11Y2ggbW9yZSBjb21wYWN0IHdpdGggYml0ZmllbGRzLgog
ICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlczsKQEAgLTMwOSw3OSArMzA5
LDc5IEBAIHZvaWQgRm9udFZhcmlhbnRTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFu
dFNldHRpbmdzPiBGb250VmFyaWFudFNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4gRm9udFZhcmlhbnRTZXR0aW5nczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdh
dHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGln
YXR1cmVzPiBjb21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBjb21tb25MaWdhdHVyZXM7
CiAgICAgaWYgKCFjb21tb25MaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gZGlzY3JldGlvbmFyeUxpZ2F0
dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAg
ICBpZiAoIWRpc2NyZXRpb25hcnlMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gaGlzdG9yaWNhbExpZ2F0
dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2Fs
TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAo
IWhpc3RvcmljYWxMaWdhdHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0ZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0
ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKICAgICBpZiAoIWNvbnRl
eHR1YWxBbHRlcm5hdGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udFZhcmlhbnRQb3NpdGlvbj4gcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxG
b250VmFyaWFudFBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBkZWNvZGVyID4+IHBvc2l0aW9uOwog
ICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGb250VmFyaWFudENhcHM+IGNhcHM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFy
aWFudENhcHM+IGNhcHM7CiAgICAgZGVjb2RlciA+PiBjYXBzOwogICAgIGlmICghY2FwcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsKICAgICBkZWNvZGVyID4+IG51bWVyaWNGaWd1
cmU7CiAgICAgaWYgKCFudW1lcmljRmlndXJlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gbnVtZXJpY1NwYWNp
bmc7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiBudW1lcmlj
U3BhY2luZzsKICAgICBkZWNvZGVyID4+IG51bWVyaWNTcGFjaW5nOwogICAgIGlmICghbnVtZXJp
Y1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxG
b250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gbnVtZXJpY0ZyYWN0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24+IG51bWVyaWNGcmFjdGlvbjsKICAgICBk
ZWNvZGVyID4+IG51bWVyaWNGcmFjdGlvbjsKICAgICBpZiAoIW51bWVyaWNGcmFjdGlvbikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY09yZGluYWw+IG51bWVyaWNPcmRpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbD4gbnVtZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiBudW1lcmlj
T3JkaW5hbDsKICAgICBpZiAoIW51bWVyaWNPcmRpbmFsKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IG51
bWVyaWNTbGFzaGVkWmVybzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1Ns
YXNoZWRaZXJvPiBudW1lcmljU2xhc2hlZFplcm87CiAgICAgZGVjb2RlciA+PiBudW1lcmljU2xh
c2hlZFplcm87CiAgICAgaWYgKCFudW1lcmljU2xhc2hlZFplcm8pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVy
bmF0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVybmF0
ZXM7CiAgICAgZGVjb2RlciA+PiBhbHRlcm5hdGVzOwogICAgIGlmICghYWx0ZXJuYXRlcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudD4gZWFzdEFzaWFuVmFyaWFudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudD4gZWFzdEFzaWFuVmFyaWFudDsKICAgICBkZWNvZGVyID4+
IGVhc3RBc2lhblZhcmlhbnQ7CiAgICAgaWYgKCFlYXN0QXNpYW5WYXJpYW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5X
aWR0aD4gZWFzdEFzaWFuV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RB
c2lhbldpZHRoPiBlYXN0QXNpYW5XaWR0aDsKICAgICBkZWNvZGVyID4+IGVhc3RBc2lhbldpZHRo
OwogICAgIGlmICghZWFzdEFzaWFuV2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1Ynk7
CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1
Ynk7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNpYW5SdWJ5OwogICAgIGlmICghZWFzdEFzaWFuUnVi
eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQxOSw3ICs0MTksNyBAQCBzdHJ1
Y3QgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7
CiAKICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7CiAgICAgRm9udFZh
cmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKQEAgLTQzNywyNCArNDM3LDI0
IEBAIHZvaWQgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Rm9udFZh
cmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1
ZXM+IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsK
ICAgICBkZWNvZGVyID4+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBpZiAoIWNvbW1vbkxpZ2F0dXJl
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJp
YW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2Rl
ciA+PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0
dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+
PiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGlmICghaGlzdG9yaWNhbExpZ2F0dXJlcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGln
YXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJp
YW50TGlnYXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IGNvbnRl
eHR1YWxBbHRlcm5hdGVzOwogICAgIGlmICghY29udGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NzgsNyArNDc4LDcgQEAgc3RydWN0IEZvbnRWYXJp
YW50TnVtZXJpY1ZhbHVlcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNWYWx1ZXM+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9u
dFZhcmlhbnROdW1lcmljVmFsdWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlIGZpZ3VyZTsKICAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNw
YWNpbmc7CkBAIC00OTgsMjkgKzQ5OCwyOSBAQCB2b2lkIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVl
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNWYWx1ZXM+IEZvbnRWYXJpYW50TnVt
ZXJpY1ZhbHVlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50TnVtZXJpY1ZhbHVlcz4gRm9udFZhcmlhbnROdW1lcmljVmFsdWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+
IGZpZ3VyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gZmln
dXJlOwogICAgIGRlY29kZXIgPj4gZmlndXJlOwogICAgIGlmICghZmlndXJlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3Bh
Y2luZz4gc3BhY2luZzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNp
bmc+IHNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBzcGFjaW5nOwogICAgIGlmICghc3BhY2luZykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IGZyYWN0aW9uOwogICAg
IGlmICghZnJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiBvcmRpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4gb3JkaW5hbDsKICAgICBkZWNvZGVyID4+IG9y
ZGluYWw7CiAgICAgaWYgKCFvcmRpbmFsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IHNsYXNoZWRaZXJv
OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8+IHNsYXNo
ZWRaZXJvOwogICAgIGRlY29kZXIgPj4gc2xhc2hlZFplcm87CiAgICAgaWYgKCFzbGFzaGVkWmVy
bykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdHJ1
Y3QgRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7
CiAKICAgICBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQgdmFyaWFudDsKICAgICBGb250VmFy
aWFudEVhc3RBc2lhbldpZHRoIHdpZHRoOwpAQCAtNTU2LDE5ICs1NTYsMTkgQEAgdm9pZCBGb250
VmFyaWFudEVhc3RBc2lhblZhbHVlczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lh
blZhbHVlcz4gRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcz4gRm9udFZhcmlh
bnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudDsKICAgICBkZWNvZGVyID4+
IHZhcmlhbnQ7CiAgICAgaWYgKCF2YXJpYW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gd2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB3aWR0aDsKICAgICBkZWNv
ZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CisgICAg
c3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CiAgICAgZGVjb2Rl
ciA+PiBydWJ5OwogICAgIGlmICghcnVieSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDllMjg3
ODNlNmUxYWMxMzU5NzBiMDZkNDIwZjVlYzY0YTZiOTlmYTEuLjU3OWExMTI1NzlhZjM5ZmMxMmVm
MDI0OTc5ZDgxZmM1NWFmMzZjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdEYXRhV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQor
RHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gZmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggOWNk
YTM0OTJiNjk2NTY4MjhkNjFlNTYzODRlYzE2NWI2ZDE5ZWM2Yy4uYzU1YTljYTFkYjc3MDY5NmY0
ZDJlMDVkMDM2MDhlNWY2OWNlYzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyB2b2lkIGFkZE1p
bWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JN
QVRFVEMmCiAgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CiB9CiAKLU9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKQorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVh
ZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKIHsKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2
YWlsYWJsZShDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0KSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9v
d25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEo
Q3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCkpIHsKQEAgLTI2OSw3ICsyNjksNyBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9y
aWdpbikKIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKIAot
ICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3Rl
Ym9hcmRDdXN0b21EYXRhKCk7CisgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwogCiAgICAgaWYgKGN1
c3RvbURhdGEgJiYgY3VzdG9tRGF0YS0+b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdHlwZSA6IGN1c3RvbURhdGEtPm9yZGVyZWRUeXBlcygpKQpAQCAtMzE3
LDcgKzMxNyw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiB7Ci0gICAg
T3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IGN1c3RvbURhdGEgPSByZWFkUGFzdGVib2Fy
ZEN1c3RvbURhdGEoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBj
dXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CiAKICAgICBpZiAoY3VzdG9t
RGF0YSkKICAgICAgICAgcmV0dXJuIGN1c3RvbURhdGEtPm9yaWdpbigpOwpAQCAtMzQ3LDcgKzM0
Nyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKQogewotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRh
ID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CisgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwog
CiAgICAgaWYgKGN1c3RvbURhdGEpCiAgICAgICAgIHJldHVybiBjdXN0b21EYXRhLT5yZWFkU3Ry
aW5nSW5DdXN0b21EYXRhKHR5cGUpOwpAQCAtMzcwLDcgKzM3MCw3IEBAIFBhc3RlYm9hcmQ6OkZp
bGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAgICAgcmV0dXJu
IHJlYWRlci5jb3VudCA/IEZpbGVDb250ZW50U3RhdGU6Ok1heUNvbnRhaW5GaWxlUGF0aHMgOiBG
aWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIsIE9wdGlvbmFsPHNpemVfdD4pCit2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+KQogewogI2lmIFVTRShDRikKICAgICBpZiAobV9kYXRhT2JqZWN0KSB7
CkBAIC04MzQsNyArODM0LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQog
ICAgIHJldHVybiA6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKFdlYlNtYXJ0UGFzdGVGb3Jt
YXQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgaWYgKDo6SXNDbGlwYm9h
cmRGb3JtYXRBdmFpbGFibGUoQ0ZfVU5JQ09ERVRFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293
bmVyKSkgewogICAgICAgICBpZiAoSEFORExFIGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShD
Rl9VTklDT0RFVEVYVCkpIHsKQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKQogewogfQogCi12b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApp
bmRleCAyZmMyMTExNTdkYTNlMWJmZTBkZjFhNWZiMGM2MjliY2E4MDgzN2UxLi41NWY2ZDVkOWIx
YTViYjEyZDMyNzMyMDdhMGZiNjMyNmFmZjFlZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAgIC8vIHdoZW4g
dGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIg
c2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmlj
YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRo
LCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwg
dWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUxheWVyKExheWVySGFuZGxlKSA9IDA7CiAKICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9OwogCiAg
ICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RmxvYXRRdWF0ZXJuaW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWF0ZXJuaW9uPiBk
ZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9OwogCiAgICAgICAgIHN0cnVjdCBQb3NlIHsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBGbG9hdFF1YXRlcm5pb24gb3Jp
ZW50YXRpb247CiAKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxQb3NlPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UG9zZT4gZGVjb2RlKERl
Y29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgRm92IHsKQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCByaWdodCB7IDAuMGYgfTsKIAogICAg
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEZvdj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvdj4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAg
fTsKIAogICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwcm9qZWN0aW9uTWF0cml4U2l6
ZSA9IDE2OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFByb2plY3Rp
b24gcHJvamVjdGlvbiA9IHsgbnVsbHB0ciB9OwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Vmlldz4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZpZXc+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0
IFN0YWdlUGFyYW1ldGVycyB7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGJvdW5kczsKIAogICAgICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN0YWdlUGFyYW1l
dGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0YWdlUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXIm
KTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgTGF5ZXJEYXRhIHsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExheWVyRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPExheWVyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBz
dHJ1Y3QgSW5wdXRTb3VyY2VCdXR0b24gewpAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJnZXRSYXlNb2RlIHsgWFJUYXJnZXRSYXlNb2Rl
OjpHYXplIH07CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBwcm9maWxlczsKICAgICAgICAg
ICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3JpZ2luOwotICAgICAgICAgICAgT3B0aW9uYWw8
SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJ
bnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47CiAgICAgICAgICAgICBWZWN0b3I8SW5wdXRTb3Vy
Y2VCdXR0b24+IGJ1dHRvbnM7CiAgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGF4ZXM7CiAgICAg
ICAgIH07CkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgICAgICBib29sIHNob3VsZFJl
bmRlciB7IGZhbHNlIH07CiAgICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWUgeyAwIH07
CiAgICAgICAgIFBvc2Ugb3JpZ2luOwotICAgICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5z
Zm9ybTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKICAgICAg
ICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOwogICAgICAgICBIYXNoTWFwPExheWVySGFuZGxlLCBMYXllckRhdGE+IGxheWVyczsK
QEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZyYW1lRGF0YSBjb3B5KCkgY29u
c3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8RnJhbWVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGcmFtZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclZpZXcgewpAQCAtMjk0LDcgKzI5NCw3IEBAIHZv
aWQgRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEZXZp
Y2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uPiBEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRR
dWF0ZXJuaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj4gRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVh
dGVybmlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRGV2aWNlOjpGcmFtZURh
dGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRlcm5pb247CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmbG9hdFF1YXRlcm5pb24ueCkpCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEZXZpY2U6
OkZyYW1lRGF0YTo6UG9zZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4g
RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3Nl
IHBvc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NlLnBvc2l0aW9uKSkKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE6OkZvdj4gRGV2aWNlOjpGcmFtZURhdGE6OkZvdjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpGb3Y+IERldmlj
ZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIERldmlj
ZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LnVwKSkK
QEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpWaWV3OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpWaWV3PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRh
OjpWaWV3PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgdmlldzsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHZpZXcub2Zmc2V0KSkKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lk
IERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz4gRGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFy
YW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6
RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM+IERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFt
ZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkKQEAgLTQzNyw3ICs0MzcsNyBAQCB2
b2lkIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpG
cmFtZURhdGE6OkxheWVyRGF0YT4gRGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXll
ckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5
ZXJEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJEYXRhLm9wYXF1ZVRleHR1cmUp
KQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSBmcmFtZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEu
aXNUcmFja2luZ1ZhbGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IDU1NTEyYWNlMDAzMjA1ZTY1M2Jh
MTgxOWQ5YjAzNjhhNTUxZjZkYmUuLjU2ZDczOTJlNzdiZTUxMjVjMmI0YjY0YjVhNWMwOTRmYTU3
YjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUklucHV0U291cmNlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFhyUmVzdWx0IE9wZW5Y
UklucHV0U291cmNlOjpzdWdnZXN0QmluZGluZ3MoU3VnZ2VzdGVkQmluZGluZ3MmIGJpbmRpbmdz
KSBjb25zdAogICAgIHJldHVybiBYUl9TVUNDRVNTOwogfQogCi1PcHRpb25hbDxEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShY
clNwYWNlIGxvY2FsU3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBPcGVuWFJJbnB1
dFNvdXJjZTo6Z2V0SW5wdXRTb3VyY2UoWHJTcGFjZSBsb2NhbFNwYWNlLCBjb25zdCBYckZyYW1l
U3RhdGUmIGZyYW1lU3RhdGUpIGNvbnN0CiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlIGRhdGE7CiAgICAgZGF0YS5oYW5kZW5lc3MgPSBtX2hhbmRlbmVzczsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5Y
UklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShYclNwYQogICAgICAgICBkYXRhLmdyaXBPcmln
aW4gPSBncmlwUG9zZTsKIAogICAgIC8vIEJ1dHRvbnMuCi0gICAgVmVjdG9yPE9wdGlvbmFsPERl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4+IGJ1dHRvbnM7CisgICAgVmVjdG9y
PHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPj4gYnV0
dG9uczsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBvcGVuWFJCdXR0b25UeXBlcykgCiAgICAgICAg
IGJ1dHRvbnMuYXBwZW5kKGdldEJ1dHRvbih0eXBlKSk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNl
OjpnZXRJbnB1dFNvdXJjZShYclNwYQogICAgIH0KIAogICAgIC8vIEF4ZXMuCi0gICAgVmVjdG9y
PE9wdGlvbmFsPFhyVmVjdG9yMmY+PiBheGVzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFhy
VmVjdG9yMmY+PiBheGVzOwogICAgIGZvciAoYXV0byYgdHlwZSA6IG9wZW5YUkF4aXNUeXBlcykg
CiAgICAgICAgIGF4ZXMuYXBwZW5kKGdldEF4aXModHlwZSkpOwogCkBAIC0yODksNyArMjg5LDcg
QEAgWHJSZXN1bHQgT3BlblhSSW5wdXRTb3VyY2U6OmdldFBvc2UoWHJTcGFjZSBzcGFjZSwgWHJT
cGFjZSBiYXNlU3BhY2UsIGNvbnN0IFhyRnIKICAgICByZXR1cm4gWFJfU1VDQ0VTUzsKIH0KIAot
T3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJbnB1
dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUgYnV0dG9uVHlwZSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJ
bnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUgYnV0dG9uVHlwZSkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gbV9idXR0b25BY3Rpb25zLmZpbmQoYnV0dG9uVHlwZSk7CiAgICAg
aWYgKGl0ID09IG1fYnV0dG9uQWN0aW9ucy5lbmQoKSkKQEAgLTMxMyw3ICszMTMsNyBAQCBPcHRp
b25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IE9wZW5YUklucHV0U291
cmNlOjpnZXRCdXR0b24oT3BlbgogICAgIHJldHVybiBoYXNWYWx1ZSA/ICBzdGQ6Om1ha2Vfb3B0
aW9uYWwocmVzdWx0KSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8WHJWZWN0b3IyZj4g
T3BlblhSSW5wdXRTb3VyY2U6OmdldEF4aXMoT3BlblhSQXhpc1R5cGUgYXhpc1R5cGUpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFhyVmVjdG9yMmY+IE9wZW5YUklucHV0U291cmNlOjpnZXRBeGlzKE9w
ZW5YUkF4aXNUeXBlIGF4aXNUeXBlKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX2F4aXNBY3Rp
b25zLmZpbmQoYXhpc1R5cGUpOwogICAgIGlmIChpdCA9PSBtX2F4aXNBY3Rpb25zLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRT
b3VyY2UuaAppbmRleCAxYmRjMWJiY2YzOGExY2MxM2EyZjJhZTU4ODE0MjhlOWQ3MDUwOGJkLi43
N2M3NzllZmJkOWZkZTc5ZTllMDU2ZDExYzc5N2E4MDA1NDdhMjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuaApAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfk9wZW5YUklucHV0U291cmNlKCk7CiAKICAgICBY
clJlc3VsdCBzdWdnZXN0QmluZGluZ3MoU3VnZ2VzdGVkQmluZGluZ3MmKSBjb25zdDsKLSAgICBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IGdldElucHV0U291cmNlKFhy
U3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBnZXRJbnB1dFNvdXJjZShYclNwYWNlLCBjb25z
dCBYckZyYW1lU3RhdGUmKSBjb25zdDsKICAgICBYckFjdGlvblNldCBhY3Rpb25TZXQoKSBjb25z
dCB7IHJldHVybiBtX2FjdGlvblNldDsgfQogICAgIFhyUmVzdWx0IHVwZGF0ZUludGVyYWN0aW9u
UHJvZmlsZSgpOwogCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgWHJSZXN1bHQgY3Jl
YXRlQmluZGluZyhjb25zdCBjaGFyKiBwcm9maWxlUGF0aCwgWHJBY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgYmluZGluZ1BhdGgsIFN1Z2dlc3RlZEJpbmRpbmdzJikgY29uc3Q7CiAKICAgICBYclJlc3Vs
dCBnZXRQb3NlKFhyU3BhY2UsIFhyU3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYsIERldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKSBjb25zdDsKLSAgICBPcHRpb25hbDxEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IGdldEJ1dHRvbihPcGVuWFJCdXR0b25UeXBl
KSBjb25zdDsKLSAgICBPcHRpb25hbDxYclZlY3RvcjJmPiBnZXRBeGlzKE9wZW5YUkF4aXNUeXBl
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZUJ1dHRvbj4gZ2V0QnV0dG9uKE9wZW5YUkJ1dHRvblR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8WHJWZWN0b3IyZj4gZ2V0QXhpcyhPcGVuWFJBeGlzVHlwZSkgY29uc3Q7CiAgICAgWHJS
ZXN1bHQgZ2V0QWN0aW9uU3RhdGUoWHJBY3Rpb24sIGJvb2wqKSBjb25zdDsKICAgICBYclJlc3Vs
dCBnZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgZmxvYXQqKSBjb25zdDsKICAgICBYclJlc3VsdCBn
ZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgWHJWZWN0b3IyZiopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5jcHAKaW5kZXggYWZlMzQ3
M2EwZWYwZDBkNjFjZDRkZmRmYmY4NDc1ZGJkZTNmNWJkZi4uODk2NzExYzBhY2MyM2E5NWVlYTAy
YmE1YjI4MDg4NzVkM2RmMzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIE9wZW5YUkxheWVyUHJv
amVjdGlvbjo6T3BlblhSTGF5ZXJQcm9qZWN0aW9uKFVuaXF1ZVJlZjxPcGVuWFJTd2FwY2hhaW4+
JiYgc3dhcGNoCiB7CiB9CiAKLU9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+
IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgpCitzdGQ6Om9wdGlvbmFsPERldmlj
ZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFt
ZSgpCiB7CiAgICAgYXV0byB0ZXh0dXJlID0gbV9zd2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOwog
ICAgIGlmICghdGV4dHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUkxheWVyLmgKaW5kZXggODg1ZWExZTVjMGE0ZTUxNjM3Nzc5Yzg5NjkwOTA1ODk5ZjFm
NmU5Zi4uNjJmOTExODQwNzJhODUzYTVmZTllMTBhMzExNTAzODcyZDFjNDE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKQEAgLTM3LDcg
KzM3LDcgQEAgY2xhc3MgT3BlblhSTGF5ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk9wZW5Y
UkxheWVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxEZXZpY2U6OkZyYW1l
RGF0YTo6TGF5ZXJEYXRhPiBzdGFydEZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBzdGFydEZyYW1lKCkgPSAwOwogICAg
IHZpcnR1YWwgWHJDb21wb3NpdGlvbkxheWVyQmFzZUhlYWRlciogZW5kRnJhbWUoY29uc3QgRGV2
aWNlOjpMYXllciYsIFhyU3BhY2UsIGNvbnN0IFZlY3RvcjxYclZpZXc+JikgPSAwOwogCiBwcm90
ZWN0ZWQ6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3BlblhSTGF5
ZXJQcm9qZWN0aW9uKFVuaXF1ZVJlZjxPcGVuWFJTd2FwY2hhaW4+JiYpOwogCi0gICAgT3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgp
IGZpbmFsOwogICAgIFhyQ29tcG9zaXRpb25MYXllckJhc2VIZWFkZXIqIGVuZEZyYW1lKGNvbnN0
IERldmljZTo6TGF5ZXImLCBYclNwYWNlLCBjb25zdCBWZWN0b3I8WHJWaWV3PiYpIGZpbmFsOwog
CiAgICAgVW5pcXVlUmVmPE9wZW5YUlN3YXBjaGFpbj4gbV9zd2FwY2hhaW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCmlu
ZGV4IGZlOWRhYzkxYWZmZTJiNjM2N2MyZmJiOTc5NzA0MTNmNjA2NDk5OWEuLmI3MmMxNjZmNmZl
OTZhNDRjOGIzODNiODU0NzQ1MzA5MzlkMWNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCkBAIC03Niw3ICs3Niw3
IEBAIE9wZW5YUlN3YXBjaGFpbjo6fk9wZW5YUlN3YXBjaGFpbigpCiAgICAgICAgIHhyRGVzdHJv
eVN3YXBjaGFpbihtX3N3YXBjaGFpbik7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+
IE9wZW5YUlN3YXBjaGFpbjo6YWNxdWlyZUltYWdlKCkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1H
TE9iamVjdD4gT3BlblhSU3dhcGNoYWluOjphY3F1aXJlSW1hZ2UoKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9hY3F1aXJlZFRleHR1cmUgLCAiRXhwZWN0ZWQgbm8gYWNx
dWlyZWQgaW1hZ2VzLiBSZWxlYXNlSW1hZ2Ugbm90IGNhbGxlZD8iKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5oCmluZGV4IGJk
OGQzMTcyZTVkMzA0YWM0NGFmYmM2ZmExN2E1M2Q2ZDNiYzE3YTMuLjZlNTAyMDA1MzhjZDNiYmVl
ZTMzNWI0OGMzZjg5Njc1YmZjZTIyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8T3BlblhSU3dhcGNoYWluPiBjcmVhdGUoWHJJ
bnN0YW5jZSwgWHJTZXNzaW9uLCBjb25zdCBYclN3YXBjaGFpbkNyZWF0ZUluZm8mKTsKICAgICB+
T3BlblhSU3dhcGNoYWluKCk7CiAKLSAgICBPcHRpb25hbDxQbGF0Zm9ybUdMT2JqZWN0PiBhY3F1
aXJlSW1hZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IGFjcXVpcmVJ
bWFnZSgpOwogICAgIHZvaWQgcmVsZWFzZUltYWdlKCk7CiAgICAgWHJTd2FwY2hhaW4gc3dhcGNo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwY2hhaW47IH0KICAgICBpbnQzMl90IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVJbmZvLndpZHRoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggMDhl
YjdiMDg1MzIyZTQ1YzdkODQwM2E0MDdjYjRjMDExYzhmYTE5Yy4uZGUxZWNlYWUwY2M2ZjgwYmUy
MGVkYWU5OGI3NTViOTFhNzI4MWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMzA2LDkgKzMwNiw5IEBA
IFZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2Rl
IG1vZGUpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXdzOwogfQogCi1PcHRpb25hbDxMYXllckhhbmRs
ZT4gT3BlblhSRGV2aWNlOjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVp
bnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3N0ZDo6b3B0aW9uYWw8TGF5ZXJIYW5kbGU+IE9w
ZW5YUkRldmljZTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJf
dCBoZWlnaHQsIGJvb2wgYWxwaGEpCiB7Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGhhbmRs
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheWVySGFuZGxlPiBoYW5kbGU7CiAKICAgICBCaW5hcnlT
ZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIHdpZHRoLCBo
ZWlnaHQsIGFscGhhLCAmaGFuZGxlLCAmc2VtYXBob3JlXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5k
ZXggY2RiNjM2NmU5MTk2MzFiYWI1NmE5YThlNWFjNjU5ZWExMWU5OGE1YS4uM2JmN2YwOGQ2NmQ2
OWVmYjk1NzhmMTliNzBiN2QxZjU4NTdmZDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0b3I8RGV2aWNlOjpMYXllcj4mJikgZmlu
YWw7CiAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7
Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVMYXll
cihMYXllckhhbmRsZSkgZmluYWw7CiAKICAgICAvLyBDdXN0b20gbWV0aG9kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCBkY2IwZTUzYzI3Mzc5MGY2MTMyZmFhNzJjNGQ2YjY3
ZmY5NTI4N2NjLi5iN2YzOTllMTkyODhiODAzZDA5MjQ3NzQzZDQ1NjRkN2QyNWRjNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllciB7CiAgICAgU3RyaW5nIHBsdWdpbklkZW50aWZpZXI7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNl
IGluIHRoZSBmdXR1cmUKQEAgLTEyMCwxMSArMTIwLDExIEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6
CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogCiAgICAgc3Ry
dWN0IENhY2hlZFZpc2libGVQbHVnaW5zIHsKICAgICAgICAgVVJMIHBhZ2VVUkw7Ci0gICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxQbHVnaW5JbmZvPj4gcGx1Z2luTGlzdDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGx1Z2luSW5mbz4+IHBsdWdpbkxpc3Q7CiAgICAgfTsKICAgICBtdXRh
YmxlIENhY2hlZFZpc2libGVQbHVnaW5zIG1fY2FjaGVkVmlzaWJsZVBsdWdpbnM7CiB9OwpAQCAt
MTM2LDE0ICsxMzYsMTQgQEAgaW5saW5lIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgVmVj
dG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+JiBwbHVnaW5JZGUKICAgICB9KSAhPSBub3RG
b3VuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+IFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0
aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtYXRj
aGluZ0RvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF0Y2hpbmdEb21haW47CiAg
ICAgZGVjb2RlciA+PiBtYXRjaGluZ0RvbWFpbjsKICAgICBpZiAoIW1hdGNoaW5nRG9tYWluKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBwbHVn
aW5JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gcGx1Z2luSWRlbnRpZmllcjsKICAgICBpZiAoIXBsdWdpbklkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCAyNTZlMTUyYmU2YTRmNGNhZDVjOTRkYWFj
MWI1YzE3YzY1ZTVjZWNhLi41MGYzODhmNTNhY2JmMzljNDg2ZDc5YzhhNDgzNjVhZGU1NDU4Y2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CiAgICAgdm9p
ZCBjbGVhclBhZ2VzUGx1Z2luRGF0YSgpOwogCi0gICAgdmlydHVhbCBWZWN0b3I8UGx1Z2luSW5m
bz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXI+PiYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5JbmZv
KFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4m
KSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbklu
Zm8oUGFnZSYsIGNvbnN0IFVSTCYpID0gMDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXggZDY4NmZhYzk3MDc4MGVmNzk4MjA2
Y2M5MGY1NzAwM2FiZDAxM2NkZC4uM2FhZTVhODY4NTU0ZTYyOTgwMTUwODk3NGQ0OGMyOTBiMDlj
Y2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAK
QEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICBm
bG9hdCB0b3RhbFJlbGF0aXZlID0gMDsKICAgICBpbnQgbnVtRml4ZWQgPSAwOwogICAgIHNpemVf
dCBudW1iZXJPZk5vbkVtcHR5QXV0byA9IDA7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHRvdGFsQXV0
bzsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB0b3RhbEF1dG87CiAgICAgZmxvYXQgdG90YWxG
aXhlZCA9IDA7CiAgICAgZmxvYXQgdG90YWxQZXJjZW50ID0gMDsKICAgICBmbG9hdCBhbGxvY0F1
dG8gPSAwOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQo
KQogICAgIGlmIChhdmFpbGFibGUgPiAwICYmIG51bWJlck9mTm9uRW1wdHlBdXRvKSB7CiAgICAg
ICAgIEFTU0VSVCh0b3RhbEF1dG8pOwogICAgICAgICBhdmFpbGFibGUgKz0gYWxsb2NBdXRvOyAv
LyB0aGlzIGdldHMgcmVkaXN0cmlidXRlZC4KLSAgICAgICAgYXV0byBlcXVhbFdpZHRoRm9yWmVy
b0xlbmd0aENvbHVtbnMgPSBPcHRpb25hbDxmbG9hdD4geyB9OworICAgICAgICBhdXRvIGVxdWFs
V2lkdGhGb3JaZXJvTGVuZ3RoQ29sdW1ucyA9IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsgfTsKICAg
ICAgICAgaWYgKCEqdG90YWxBdXRvKSB7CiAgICAgICAgICAgICAvLyBBbGwgY29sdW1ucyBpbiB0
aGlzIHRhYmxlIGFyZSAobm9uLWVtcHR5KXplcm8gbGVuZ3RoIHdpdGggJ3dpZHRoOiBhdXRvJy4K
ICAgICAgICAgICAgIGVxdWFsV2lkdGhGb3JaZXJvTGVuZ3RoQ29sdW1ucyA9IGF2YWlsYWJsZSAv
IG51bWJlck9mTm9uRW1wdHlBdXRvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgK
aW5kZXggYWZiNzAwNDY4OGM0MTJlNjI2NGFhZmIyZGUxZThjZTE0MjQ2ZDIyNC4uZjAzY2QxODE3
YzU5MDI5NWNhNzg1OTRkYTA5M2NjOWZkOGUxMjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QnJlYWtMaW5lcy5oCkBAIC05MCw3ICs5MCw3IEBAIGlubGluZSBib29sIG5lZWRzTGluZUJyZWFr
SXRlcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvciwgQ2Fu
VXNlU2hvcnRjdXQgY2FuVXNlU2hvcnRjdXQ+CiBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0
IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwogCiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFz
dENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAxID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAy
XSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRv
TGFzdENoYXJhY3RlcigpKTsKICAgICBDaGFyYWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFy
dFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxD
aGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwpAQCAtMTk0
LDExICsxOTQsMTEgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkJyZWFr
Q2hhcmFjdGVyKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAvLyBGSVhNRTogQ2Fu
L1Nob3VsZCB3ZSBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIFNoYXJlZCBJdGVyYXRvciAocGVyZm9y
bWFuY2UgaXNzdWUpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Nzg3NgogICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXRlcmF0b3Io
c3RyaW5nVmlldyk7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHQgPSB1YnJrX2ZvbGxvd2lu
ZyhpdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bmV4dCA9IHVicmtfZm9sbG93aW5nKGl0ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKICAgICByZXR1
cm4gbmV4dC52YWx1ZV9vcihzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5z
aWduZWQgc3RhcnRQb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBi
b29sIGJyZWFrTkJTUCwgYm9vbCBjYW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJv
b2wgYnJlYWtBbnl3aGVyZSkKK2lubGluZSBib29sIGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJ
dGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBj
YW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkKIHsK
ICAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxlLnZhbHVlKCkgPj0gc3RhcnRQ
b3NpdGlvbikKICAgICAgICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gPT0gbmV4dEJyZWFrYWJsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKaW5kZXggMTc2OTQ3MjJlNzE2MDEw
MmI3YTAyYzIzMzFiYWY0ZDZmN2M5ODg1ZC4uNzUyNjE3NzA4ZjE2Zjg5MjJmZDAwYWU5NzkxYjlj
ZGFmNjAzMDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVl
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKQEAgLTM0
LDcgKzM0LDcgQEAgc3RydWN0IENTU1ZhbHVlS2V5IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENTU1Zh
bHVlS2V5PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlS2V5PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
dW5zaWduZWQgY3NzVmFsdWVJRDsKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlOwpAQCAtNTUs
MTcgKzU1LDE3IEBAIHZvaWQgQ1NTVmFsdWVLZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q1NTVmFsdWVLZXk+
IENTU1ZhbHVlS2V5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q1NT
VmFsdWVLZXk+IENTU1ZhbHVlS2V5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gY3NzVmFsdWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBjc3NWYWx1ZUlEOwogICAgIGRlY29kZXIgPj4gY3NzVmFsdWVJRDsKICAgICBpZiAoIWNzc1Zh
bHVlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4g
dXNlRGFya0FwcGVhcmFuY2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VEYXJrQXBwZWFy
YW5jZTsKICAgICBkZWNvZGVyID4+IHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghdXNlRGFy
a0FwcGVhcmFuY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8
Ym9vbD4gdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbDsKICAgICBkZWNvZGVyID4+IHVzZUVs
ZXZhdGVkVXNlckludGVyZmFjZUxldmVsOwogICAgIGlmICghdXNlRWxldmF0ZWRVc2VySW50ZXJm
YWNlTGV2ZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IGM2MmE2Zjk3MjlmMDJkZTU5ZTM0NzE4NDEwNGQ5Nzk2
YmUwYzViMWQuLjcyOThiOWE1OWY4NTM1NzQ0ZTM3NmQ5MTk2MzE5ZThiZTdiYjkwZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCkBAIC05NCw3ICs5NCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxFdmVudFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFdmVudFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBkZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
RXZlbnRSZWdpb24mKTsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgUmVnaW9u
IG1fbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKICNlbmRpZgogI2lmIEVOQUJM
RShFRElUQUJMRV9SRUdJT04pCi0gICAgT3B0aW9uYWw8UmVnaW9uPiBtX2VkaXRhYmxlUmVnaW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiBtX2VkaXRhYmxlUmVnaW9uOwogI2VuZGlmCiB9
OwogCkBAIC0xMzgsOSArMTM4LDkgQEAgdm9pZCBFdmVudFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxF
dmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPFJlZ2lvbj4gcmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVn
aW9uPiByZWdpb247CiAgICAgZGVjb2RlciA+PiByZWdpb247CiAgICAgaWYgKCFyZWdpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDksMTQgKzE0OSwxNCBAQCBPcHRpb25h
bDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGV2ZW50UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92ZSgqcmVnaW9uKTsKIAogI2lmIEVOQUJMRShX
SEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvbmFsPFJlZ2lvbj4gd2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiB3aGVlbEV2ZW50TGlzdGVuZXJS
ZWdpb247CiAgICAgZGVjb2RlciA+PiB3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgaWYg
KCF3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBldmVudFJlZ2lvbi5tX3doZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbiA9IFdURk1vdmUo
KndoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CiAKLSAgICBPcHRpb25hbDxSZWdpb24+IG5vblBh
c3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+
IG5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgZGVjb2RlciA+PiBub25Q
YXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOwogICAgIGlmICghbm9uUGFzc2l2ZVdoZWVs
RXZlbnRMaXN0ZW5lclJlZ2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2
NSw3ICsxNjUsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lP
TlMpCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbj4+IHRvdWNoQWN0aW9uUmVnaW9uczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWdpb24+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAg
ZGVjb2RlciA+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAgaWYgKCF0b3VjaEFjdGlvblJlZ2lv
bnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0
aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxSZWdpb24+PiBlZGl0YWJsZVJlZ2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8UmVnaW9uPj4gZWRpdGFibGVSZWdpb247CiAgICAgZGVjb2RlciA+PiBlZGl0YWJsZVJl
Z2lvbjsKICAgICBpZiAoIWVkaXRhYmxlUmVnaW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9v
bCBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEV2ZW50UmVnaW9uJiBldmVu
dFJlZ2lvbikKIHsKLSAgICBPcHRpb25hbDxFdmVudFJlZ2lvbj4gZGVjb2RlZEV2ZW50UmVnaW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRSZWdpb24+IGRlY29kZWRFdmVudFJlZ2lvbjsKICAg
ICBkZWNvZGVyID4+IGRlY29kZWRFdmVudFJlZ2lvbjsKICAgICBpZiAoIWRlY29kZWRFdmVudFJl
Z2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0MjljMGE5MjZmNzlhZWE2MjQ1NjBjNmExZWEzYmQw
ZTUyOTI2Mjg0Li4zM2UxNzZlMzFiNDkxYjQ0ZDU5NGU5ODQwMTgzYmU4MTVjNDc2M2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjI4LDgg
KzIyOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxjb25zdCBSZW5kZXJCbG9j
a0Zsb3c+IG1fcmVuZGVyZXI7CiAgICAgTGF5b3V0VW5pdCBtX2JlbG93TG9naWNhbEhlaWdodDsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX25leHRMb2dpY2FsQm90dG9tOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1fbmV4dExvZ2ljYWxCb3R0b207CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBtX25leHRTaGFwZUxvZ2ljYWxCb3R0b207CiB9OwogCiBpbmxpbmUgdm9pZCBG
aW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6OmNvbGxlY3RJZk5lZWRlZChjb25zdCBJ
bnRlcnZhbFR5cGUmIGludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDllYzNmNTI5NWY4OGIyMWFlNjQ0Y2IwNWRkOGFk
OWYxNDk1ZWMyYTYuLjRhNTYyNDI3OWU4YjQ0OTRkMDFkOGUwZjg3YTFkMzBkZTk1MDA2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmkKICAgICByZXR1cm4gZGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQuaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJp
ZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRp
bmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggM2I0MmE1Y2Y3Y2Uy
NjYyNjFlM2RjNzkyM2M4NGI4ZWIxM2M5Y2E5MC4uZDc1NzhkOWZhMzAyMzliYTZjNzZkMTE0Y2Q1
NDNmMjBhMjdiNGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRM
YXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91
dEZ1bmN0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIExheW91dFVuaXQgbWFyZ2luTG9naWNhbFNp
emVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uCiBi
b29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gm
KTsKIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChj
b25zdCBSZW5kZXJHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hp
bGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKLU9wdGlvbmFs
PExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcAppbmRleCAzMTQyNjUzMWUyOWE4ZWY0OTBiMmNhMzg0ZWQ5NTU4Yzc0OGRkYmFlLi5k
YTg5MTNkYmU3YmJjOTQ1YWM1YzVkYzk3NmE5MzY3ZWE5MTFjMjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIEdyaWRUcmFjazo6Z3Jvd1RlbXBTaXplKGNvbnN0IExheW91dFVu
aXQmIHRlbXBTaXplKQogICAgIG1fdGVtcFNpemUgKz0gdGVtcFNpemU7CiB9CiAKLXZvaWQgR3Jp
ZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1p
dENhcCkKK3ZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQogewogICAgIEFTU0VSVCghZ3Jvd3RoTGltaXRDYXAg
fHwgZ3Jvd3RoTGltaXRDYXAudmFsdWUoKSA+PSAwKTsKICAgICBtX2dyb3d0aExpbWl0Q2FwID0g
Z3Jvd3RoTGltaXRDYXA7CkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xl
YXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5k
ZXIKICAgICByZXR1cm4gaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjaGlsZCwg
ZGlyZWN0aW9uKSB8fCBoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNoaWxkKGNoaWxkLCBk
aXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorc3RhdGljIHZvaWQg
c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94
JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBzaXplKQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykK
ICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoc2l6ZSk7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3IK
IAogLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIHByaXZhdGUuCiAKLXZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKQordm9pZCBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG06OnNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkKIHsKICAgICBpZiAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIG1fZnJlZVNwYWNlQ29sdW1ucyA9IGZy
ZWVTcGFjZTsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAg
ICAgICAgbV9mcmVlU3BhY2VSb3dzID0gZnJlZVNwYWNlOwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmF2YWlsYWJsZVNwYWNlKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjphdmFpbGFi
bGVTcGFjZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwogICAgIHJldHVybiBh
dmFpbGFibGVTcGFjZShtX2RpcmVjdGlvbik7CiB9CiAKLXZvaWQgR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtOjpzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKQog
ewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgbV9hdmFpbGFibGVT
cGFjZUNvbHVtbnMgPSBhdmFpbGFibGVTcGFjZTsKQEAgLTU1MSwxMiArNTUxLDEyIEBAIHZvaWQg
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8
R3JpZFRyYWNrKj4mIHRyYWNrCiAgICAgICAgIHRyYWNrLT5zZXRQbGFubmVkU2l6ZSh0cmFjay0+
cGxhbm5lZFNpemUoKSA9PSBpbmZpbml0eSA/IHRyYWNrLT50ZW1wU2l6ZSgpIDogc3RkOjptYXgo
dHJhY2stPnBsYW5uZWRTaXplKCksIHRyYWNrLT50ZW1wU2l6ZSgpKSk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFC
cmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25z
dCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBj
b25zdAogewogICAgIGNvbnN0IEdyaWRTcGFuJiBzcGFuID0gbV9ncmlkLmdyaWRJdGVtU3Bhbihj
aGlsZCwgZGlyZWN0aW9uKTsKICAgICBMYXlvdXRVbml0IGdyaWRBcmVhU2l6ZTsKICAgICBib29s
IGdyaWRBcmVhSXNJbmRlZmluaXRlID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlU2l6ZSA9IGF2YWlsYWJsZVNwYWNlKGRpcmVjdGlvbik7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplID0gYXZhaWxhYmxlU3BhY2UoZGlyZWN0aW9u
KTsKICAgICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IHNwYW4pIHsKICAgICAgICAgLy8gV2Ug
bWF5IG5lZWQgdG8gZXN0aW1hdGUgdGhlIGdyaWQgYXJlYSBzaXplIGJlZm9yZSBydW5uaW5nIHRo
ZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtIGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIHByZS1sYXlv
dXQgb2Ygb3J0aG9nb25hbCBpdGVtcy4KICAgICAgICAgLy8gV2UgY2Fubm90IHVzZSB0cmFja3Mo
ZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9uXS5jYWNoZWRUcmFja1NpemUoKSBiZWNhdXNlIHRyYWNr
cyhkaXJlY3Rpb24pIGlzIGVtcHR5LCBzaW5jZSB3ZSBhcmUgZWl0aGVyIHBlcmZvcm1pbmcgcHJl
LWxheW91dApAQCAtNTc3LDcgKzU3Nyw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoCiAgICAg
cmV0dXJuIGdyaWRBcmVhU2l6ZTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmdyaWRBcmVhQnJl
YWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBhZGRDb250ZW50QWxpZ25tZW50T2Zm
c2V0ID0KICAgICAgICAgZGlyZWN0aW9uID09IEZvckNvbHVtbnMgJiYgKG1fc2l6aW5nU3RhdGUg
PT0gUm93U2l6aW5nRmlyc3RJdGVyYXRpb24gfHwgbV9zaXppbmdTdGF0ZSA9PSBSb3dTaXppbmdF
eHRyYUl0ZXJhdGlvbkZvclNpemVDb250YWlubWVudCk7CkBAIC04MjYsNyArODI2LDcgQEAgTGF5
b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluU2l6ZUZvckNoaWxk
KFJlbmRlckJveCYgY2hpbGQpIGMKICAgICAgICAgcmV0dXJuIG1pblNpemU7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3JpZEFyZWFTaXplID0gbV9hbGdvcml0aG0uZ3JpZEFy
ZWFCcmVhZHRoRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyaWRBcmVhU2l6ZSA9IG1fYWxnb3JpdGhtLmdyaWRBcmVh
QnJlYWR0aEZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbik7CiAgICAgcmV0dXJu
IG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgZ3JpZEFyZWFTaXpl
KSArIGJhc2VsaW5lU2hpbTsKIH0KIApAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpjb3B5QmFzZWxpbmVJdGVtc0NhY2hlKGNvbnN0IEdyaWRUcmFja1Np
emluZ0FsZ29yCiAgICAgICAgIG1fcm93QmFzZWxpbmVJdGVtc01hcCA9IHNvdXJjZS5tX3Jvd0Jh
c2VsaW5lSXRlbXNNYXA7CiB9CiAKLWJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRl
Z3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJl
bmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRlU2l6ZSkgY29uc3QKK2Jvb2wgR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtU3RyYXRlZ3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVTaXplKSBjb25zdAog
ewogICAgIGlmICghb3ZlcnJpZGVTaXplKQogICAgICAgICBvdmVycmlkZVNpemUgPSBtX2FsZ29y
aXRobS5ncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjaGlsZCwgZGlyZWN0aW9uKTsKQEAgLTkwOSw3
ICs5MDksNyBAQCBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojp1cGRhdGVP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpegogICAgIHJldHVybiB0cnVlOwogfQog
Ci1MYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5OjptaW5Mb2dpY2Fs
U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXpl
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAorTGF5b3V0VW5pdCBH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChS
ZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAogewogICAgIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZs
b3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5z
KTsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0
aW9uOwpAQCAtOTI4LDggKzkyOCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxh
eW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJp
ZGVTaXplSGFzQ2hhbmdlZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXhpbWl6ZVRyYWNr
cyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpIG92
ZXJyaWRlOwotICAgIGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+
JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1h
eGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiYgZnJlZVNwYWNlKSBvdmVycmlkZTsKKyAgICBkb3VibGUgZmluZFVzZWRGbGV4RnJhY3Rpb24o
VmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHJlY29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3Vi
bGUmIGZsZXhGcmFjdGlvbiwgTGF5b3V0VW5pdCYgdG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIExheW91dFVuaXQgZnJlZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0NvbXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCpyZW5kZXJHcmlk
KCkpOyB9CkBAIC05NDIsNyArOTQyLDcgQEAgdm9pZCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5Ojps
YXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRhdGlvbihSZW5kZXJCb3gmIGNoaWwKICAgICBj
aGlsZC5sYXlvdXRJZk5lZWRlZCgpOwogfQogCi12b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6
Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFsPExheW91
dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGltaXpl
VHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4mIGZyZWVTcGFjZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZnJlZVNwYWNlKTsKICAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogdHJhY2tzKQpAQCAtOTU2LDcgKzk1Niw3IEBAIHN0YXRpYyBpbmxpbmUg
ZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0cmFjaykKICAg
ICByZXR1cm4gdHJhY2suYmFzZVNpemUoKSAvIHN0ZDo6bWF4PGRvdWJsZT4oMSwgZmxleEZhY3Rv
cik7CiB9CiAKLWRvdWJsZSBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFj
dGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFj
ZSkgY29uc3QKK2RvdWJsZSBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFj
dGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJl
ZVNwYWNlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmVlU3BhY2UpOwogICAgIGF1dG8g
YWxsVHJhY2tzID0gbV9hbGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbik7CkBAIC0xMDI1LDEyICsx
MDI1LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEdyaWRJdGVtRm9y
TWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdl
ZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRy
YWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpIG92ZXJyaWRlOwotICAgIGRv
dWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVk
VHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1heGltaXplVHJhY2tzKFZl
Y3RvcjxHcmlkVHJhY2s+Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiYgZnJlZVNwYWNlKSBv
dmVycmlkZTsKKyAgICBkb3VibGUgZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVk
PiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIHJlY29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3VibGUmIGZsZXhGcmFjdGlv
biwgTGF5b3V0VW5pdCYgdG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVu
aXQgZnJlZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTGF5b3V0VW5pdCBtaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIGNv
bnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVT
aXplKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxTaXplRm9yQ2hp
bGQoUmVuZGVyQm94JiwgY29uc3QgTGVuZ3RoJiBjaGlsZE1pblNpemUsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Nv
bXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiB9OwogCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBMYXlvdXRVbml0IEluZGVmaW5pdGVTaXplU3Ry
YXRlZ3k6OmZyZWVTcGFjZUZvclN0cmV0Y2hBdXRvVHJhY2tzU3RlcCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1pblNpemUudmFsdWUoKSAtIGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpOwogfQogCi1MYXlv
dXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRl
ckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBhdmFpbGFibGVTaXplKSBjb25zdAorTGF5b3V0VW5pdCBEZWZpbml0ZVNpemVTdHJhdGVn
eTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgm
IGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBj
b25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlv
biA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5k
ZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZmxvd0F3YXJlRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIGRpcmVjdGlvbigpKTsKQEAgLTEw
NTcsNyArMTA1Nyw3IEBAIExheW91dFVuaXQgRGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1pbkxvZ2lj
YWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QKICAgICByZXR1cm4gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQs
IGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZSk7CiB9CiAKLXZvaWQgRGVmaW5pdGVTaXplU3Ry
YXRlZ3k6Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFs
PExheW91dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lkIERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptYXhp
bWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+JiBmcmVlU3BhY2UpCiB7CiAgICAgc2l6ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6
ZSgpOwogICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0cmFja3NGb3JEaXN0cmlidXRpb24odHJhY2tz
U2l6ZSk7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lkIERlZmluaXRlU2l6ZVN0cmF0ZWd5Ojps
YXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRhdGlvbihSZW5kZXJCb3gmIGNoaWxkLAogICAg
IGNoaWxkLmxheW91dElmTmVlZGVkKCk7CiB9CiAKLWRvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVn
eTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkgY29u
c3QKK2RvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVj
dG9yPHVuc2lnbmVkPiYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdAogewogICAgIEdyaWRTcGFuIGFs
bFRyYWNrc1NwYW4gPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbV9h
bGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbikuc2l6ZSgpKTsKICAgICBBU1NFUlQoZnJlZVNwYWNl
KTsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpy
ZXNvbHZlSW50cmluc2ljVHJhY2tTaXplcygpCiAgICAgaGFuZGxlSW5maW5pdHlHcm93dGhMaW1p
dCgpOwogfQogCi12b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c3RyZXRjaEZsZXhpYmxl
VHJhY2tzKE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpzdHJldGNoRmxleGlibGVUcmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBmcmVlU3BhY2UpCiB7CiAgICAgaWYgKG1fZmxleGlibGVTaXplZFRyYWNrc0luZGV4Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4Miw3ICsxMjgyLDcgQEAgYm9vbCBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG06OmlzVmFsaWRUcmFuc2l0aW9uKCkgY29uc3QKIAogLy8gR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtIEFQSS4KIAotdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIG51
bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uIHNpemluZ09wZXJhdGlvbiwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlU3BhY2UpCit2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0
dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgbnVtVHJhY2tz
LCBTaXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGF2YWlsYWJsZVNwYWNlKQogewogICAgIEFTU0VSVChtX25lZWRzU2V0dXApOwogICAgIG1f
ZGlyZWN0aW9uID0gZGlyZWN0aW9uOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgdm9pZCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiAgICAgU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSgq
dGhpcyk7CiAKICAgICAvLyBTdGVwIDEuCi0gICAgY29uc3QgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW5pdGlhbEZyZWVTcGFjZSA9IGZyZWVTcGFjZShtX2RpcmVjdGlvbik7CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbml0aWFsRnJlZVNwYWNlID0gZnJlZVNwYWNlKG1fZGly
ZWN0aW9uKTsKICAgICBpbml0aWFsaXplVHJhY2tTaXplcygpOwogCiAgICAgLy8gU3RlcCAyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5oCmluZGV4IDg5NjA4MTg1ODFlZmJjZGVkMmIzM2VjMDE2YTFmNmI4NGI5ZWE2MTYuLjZlNGNm
ODNmNjBhN2I1Y2VlMTI1YWU1OGM0OTBmZTdmMjgzNjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKQEAgLTcwLDggKzcw
LDggQEAgcHVibGljOgogICAgIGJvb2wgaW5maW5pdGVseUdyb3dhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmZpbml0ZWx5R3Jvd2FibGU7IH0KICAgICB2b2lkIHNldEluZmluaXRlbHlHcm93YWJs
ZShib29sIGluZmluaXRlbHlHcm93YWJsZSkgeyBtX2luZmluaXRlbHlHcm93YWJsZSA9IGluZmlu
aXRlbHlHcm93YWJsZTsgfQogCi0gICAgdm9pZCBzZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxM
YXlvdXRVbml0Pik7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3Jvd3RoTGltaXRDYXAoKSBj
b25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2FwOyB9CisgICAgdm9pZCBzZXRHcm93dGhMaW1p
dENhcChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsg
fQogCiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXplKCkgY29uc3QgeyBy
ZXR1cm4gKm1fY2FjaGVkVHJhY2tTaXplOyB9CiAgICAgdm9pZCBzZXRDYWNoZWRUcmFja1NpemUo
Y29uc3QgR3JpZFRyYWNrU2l6ZSYpOwpAQCAtODUsOSArODUsOSBAQCBwcml2YXRlOgogICAgIExh
eW91dFVuaXQgbV9ncm93dGhMaW1pdCB7IDAgfTsKICAgICBMYXlvdXRVbml0IG1fcGxhbm5lZFNp
emUgeyAwIH07CiAgICAgTGF5b3V0VW5pdCBtX3RlbXBTaXplIHsgMCB9OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IG1fZ3Jvd3RoTGltaXRDYXA7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBtX2dyb3d0aExpbWl0Q2FwOwogICAgIGJvb2wgbV9pbmZpbml0ZWx5R3Jvd2FibGUgeyBm
YWxzZSB9OwotICAgIE9wdGlvbmFsPEdyaWRUcmFja1NpemU+IG1fY2FjaGVkVHJhY2tTaXplOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R3JpZFRyYWNrU2l6ZT4gbV9jYWNoZWRUcmFja1NpemU7CiB9Owog
CiBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gZmluYWwgewpAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uLCBPcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSk7CisgICAgdm9pZCBzZXR1cChHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKTsKICAgICB2b2lkIHJ1bigpOwog
ICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRVbml0IG1heENvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDb250ZW50U2l6ZTsg
fTsKIAogICAgIExheW91dFVuaXQgYmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmLCBHcmlkQXhpcykgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
R3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRl
ZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICB2b2lkIGNhY2hlQmFzZWxpbmVBbGlnbmVkSXRlbShj
b25zdCBSZW5kZXJCb3gmLCBHcmlkQXhpcyk7CiAgICAgdm9pZCBjb3B5QmFzZWxpbmVJdGVtc0Nh
Y2hlKGNvbnN0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYsIEdyaWRBeGlzKTsKQEAgLTEyNCwx
MSArMTI0LDExIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gbV9jb2x1bW5zIDogbV9yb3dzOyB9CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFj
az4mIHRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdCB7IHJl
dHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IG1fY29sdW1ucyA6IG1fcm93czsgfQogCi0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9m
cmVlU3BhY2VDb2x1bW5zIDogbV9mcmVlU3BhY2VSb3dzOyB9Ci0gICAgdm9pZCBzZXRGcmVlU3Bh
Y2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBt
X2ZyZWVTcGFjZUNvbHVtbnMgOiBtX2ZyZWVTcGFjZVJvd3M7IH0KKyAgICB2b2lkIHNldEZyZWVT
cGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4p
OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyBtX2F2YWlsYWJsZVNwYWNlQ29sdW1ucyA6IG1fYXZhaWxhYmxlU3BhY2VSb3dzOyB9
Ci0gICAgdm9pZCBzZXRBdmFpbGFibGVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9w
dGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWls
YWJsZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0
dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9hdmFpbGFibGVTcGFjZUNvbHVtbnMgOiBt
X2F2YWlsYWJsZVNwYWNlUm93czsgfQorICAgIHZvaWQgc2V0QXZhaWxhYmxlU3BhY2UoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKIAogICAgIExh
eW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29uc3Q7CiAKQEAgLTEzOSw3ICsxMzks
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlU3BhY2UoKSBjb25zdDsKICAgICBib29sIGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNB
dXRvKGNvbnN0IEdyaWRMZW5ndGgmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0Owog
ICAgIEdyaWRUcmFja1NpemUgY2FsY3VsYXRlR3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAgICAgY29uc3QgR3Jp
ZFRyYWNrU2l6ZSYgcmF3R3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVu
c2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZSA8VHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZSBwaGFzZT4gdm9pZCBp
bmNyZWFzZVNpemVzVG9BY2NvbW1vZGF0ZVNwYW5uaW5nSXRlbXMoY29uc3QgR3JpZEl0ZW1zU3Bh
bkdyb3VwUmFuZ2UmIGdyaWRJdGVtc1dpdGhTcGFuKTsKICAgICBMYXlvdXRVbml0IGl0ZW1TaXpl
Rm9yVHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZShUcmFja1NpemVDb21wdXRhdGlvblBoYXNlLCBS
ZW5kZXJCb3gmKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8VHJhY2tTaXplQ29tcHV0YXRpb25QaGFz
ZSBwaGFzZT4gdm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4m
IHRyYWNrcywgVmVjdG9yPEdyaWRUcmFjayo+KiBncm93QmV5b25kR3Jvd3RoTGltaXRzVHJhY2tz
LCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpIGNvbnN0OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlQmFzZWxpbmVBbGlnbm1l
bnRDb250ZXh0KCk7CiAgICAgdm9pZCB1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoY29u
c3QgUmVuZGVyQm94JiwgR3JpZEF4aXMpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gbWV0aG9kIGF0IHRoaXNlIGxldmVsLgogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNrU2l6
ZXMoKTsKICAgICB2b2lkIHJlc29sdmVJbnRyaW5zaWNUcmFja1NpemVzKCk7Ci0gICAgdm9pZCBz
dHJldGNoRmxleGlibGVUcmFja3MoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKTsKKyAg
ICB2b2lkIHN0cmV0Y2hGbGV4aWJsZVRyYWNrcyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZy
ZWVTcGFjZSk7CiAgICAgdm9pZCBzdHJldGNoQXV0b1RyYWNrcygpOwogCiAgICAgLy8gU3RhdGUg
bWFjaGluZS4KQEAgLTE4NywxMSArMTg3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YXNTZXR1
cCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJhdGVneTsgfQogICAgIGJvb2wgbV9uZWVkc1NldHVw
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9oYXNQZXJjZW50U2l6ZWRSb3dzSW5kZWZpbml0ZUhlaWdo
dCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZVJv
d3M7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZUNvbHVtbnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJsZVNwYWNlUm93czsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZhaWxhYmxlU3BhY2VDb2x1bW5zOwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9mcmVlU3BhY2VDb2x1bW5zOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fZnJlZVNwYWNlUm93czsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IG1fZnJlZVNwYWNlQ29sdW1uczsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fZnJl
ZVNwYWNlUm93czsKIAogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBib3RoIGFsaXZlIGluIG9yZGVy
IHRvIHByb3Blcmx5IHNpemUgZ3JpZHMgd2l0aCBvcnRob2dvbmFsCiAgICAgLy8gd3JpdGluZyBt
b2Rlcy4KQEAgLTI1NCw4ICsyNTQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG1TdHJhdGVneSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+
JiBmcmVlU3BhY2UpID0gMDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlv
bihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNr
PiYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4mIGZyZWVTcGFjZSkgPSAwOworICAgIHZpcnR1
YWwgZG91YmxlIGZpbmRVc2VkRmxleEZyYWN0aW9uKFZlY3Rvcjx1bnNpZ25lZD4mIGZsZXhpYmxl
U2l6ZWRUcmFja3NJbmRleCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2UpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVjb21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0aW9u
LCBMYXlvdXRVbml0JiB0b3RhbEdyb3d0aCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBmcmVlU3BhY2VGb3JTdHJldGNoQXV0b1RyYWNrc1N0ZXAoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzQ29tcHV0aW5nU2l6ZUNvbnRhaW5tZW50KCkgY29uc3QgPSAwOwpAQCAt
MjY0LDExICsyNjQsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5KEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtKQogICAgICAgICA6
IG1fYWxnb3JpdGhtKGFsZ29yaXRobSkgeyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWlu
TG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmLCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6
ZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiwgY29uc3QgTGVu
Z3RoJiBjaGlsZE1pblNpemUsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6
ZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1
dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3QgPSAw
OwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29u
c3Q7Ci0gICAgYm9vbCB1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExh
eW91dFVuaXQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHVwZGF0ZU92ZXJyaWRp
bmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICAvLyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWNjZXNzb3JzIGZv
ciBzdWJjbGFzc2VzLgogICAgIExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9hbGdvcml0aG0uY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7IH0KQEAgLTI3
Niw3ICsyNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZG91YmxlIGZpbmRGclVuaXRTaXplKGNvbnN0
IEdyaWRTcGFuJiB0cmFja3NTcGFuLCBMYXlvdXRVbml0IGxlZnRPdmVyU3BhY2UpIGNvbnN0IHsg
cmV0dXJuIG1fYWxnb3JpdGhtLmZpbmRGclVuaXRTaXplKHRyYWNrc1NwYW4sIGxlZnRPdmVyU3Bh
Y2UpOyB9CiAgICAgdm9pZCBkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNr
Kj4mIHRyYWNrcywgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKSBjb25zdCB7IG1f
YWxnb3JpdGhtLmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzPE1heGltaXplVHJhY2tzPih0cmFja3Ms
IG51bGxwdHIsIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7IH0KICAgICBjb25zdCBSZW5kZXJHcmlk
KiByZW5kZXJHcmlkKCkgY29uc3QgeyByZXR1cm4gbV9hbGdvcml0aG0ubV9yZW5kZXJHcmlkOyB9
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2FsZ29yaXRobS5hdmFpbGFibGVTcGFjZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmF2YWls
YWJsZVNwYWNlKCk7IH0KIAogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgbV9hbGdvcml0
aG07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmNwcAppbmRleCBmZjkwNDUwYjgxZTIxN2RhOTA1MjU5YTg5NDhmMGMxZDZh
OGM2OTE4Li42MzE2YjNhODJmNzg2Y2M0M2E2YzkwODMyNDEyNGJlNmYyZWRjM2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6Zmxh
dHRlbigpCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UgPSB0LmludmVyc2UoKSkgeworICAgIGlmIChz
dGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlID0gdC5pbnZlcnNlKCkp
IHsKICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlLnZhbHVlKCkucHJvamVjdFBv
aW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IGludmVy
c2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJRdWFkKTsKICAgICAgICAgbV9sYXN0
UGxhbmFyQXJlYSA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJBcmVh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9s
bGVyLmNwcAppbmRleCA4OWFiY2E5YTRmMTA0ZDQ1NTc4Mjg3ZDkxZDg3OGI1YjA2NmRhZWVkLi43
ZmM2ZDZkMzRmZmE3MTNlYjBlZGY5ZWJkNGI1ZmVlZTBlMTU3MGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdChsb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLU9w
dGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRl
cnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGQ6
Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpp
bnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
CiAgICAgc3dpdGNoIChzdHlsZS5pbWFnZVJlbmRlcmluZygpKSB7CiAgICAgY2FzZSBJbWFnZVJl
bmRlcmluZzo6T3B0aW1pemVTcGVlZDoKQEAgLTEyMCw3ICsxMjAsNyBAQCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShHcmFwaGljcwogICAgIGlmICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BE
RkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdDsKIAotICAgIGlmIChPcHRpb25h
bDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlv
blF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHlsZSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlv
blF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHlsZSgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxl
SW50ZXJwb2xhdGlvbi52YWx1ZSgpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRvIHVzZSB0aGUgdW56
b29tZWQgaW1hZ2Ugc2l6ZSwgc2luY2UgaWYgYSBmdWxsIHBhZ2Ugem9vbSBpcyBpbiBlZmZlY3Qs
IHRoZSBpbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlD
b250cm9sbGVyLmgKaW5kZXggY2Q5N2NjN2MyNDQxZGQ5ZmYzMmNiNjNlMjQwYmIwMTM1YmQ0ZWMy
YS4uMTlhY2Q1ZTU2OTk3OTcyY2YyNjQyZDk4ZjA5N2RlYjRhMzFkZTllYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCkBAIC00Myw3
ICs0Myw3IEBAIGNsYXNzIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAg
c3RhdGljIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1h
Z2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYpOwogCiAgICAgdm9pZCBy
ZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsg
cmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
aAppbmRleCBkNjRjNzIzNDUyZmMzN2I3MzdhYzlhMDgxZjliZjE3MjhhZDVmMjk4Li5iMzMzZmNh
ODg4Njk0OTM5ZjE5NjIxYTE3ZjU0YTI2MmQ3M2VmM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5oCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZVBhcmVudENoaWxkTGlzdCgpOwogI2VuZGlmCiAKLSAgICBib29sIHZpc2libGVUb0hpdFRl
c3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxs
b3B0KSBjb25zdAorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhzdGQ6Om9wdGlvbmFsPEhp
dFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYTNjZGRjNjRhOGRhMzMwZjQ3NmQyZDIw
MzM4OTk1NmExOGQ1NWQzNS4uOGUzOGJjZjA5ZWQ0YjA1MzBjNDNmMmRmYTdhYWExNzkwM2M5ZmQ2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJv
dmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94
PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICgqbWFya0V4aXN0c0FuZElzQWJvdmUgIT0gY2hpbGRM
aW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBl
bHNlCkBAIC05MzEsNyArOTMxLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVGV4
dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRCb3gmIHRleHRCb3gsIEdseXAKICAgICBpbnQg
bGVmdEdseXBoT3ZlcmZsb3cgPSAtc3Ryb2tlT3ZlcmZsb3cgLSBsZWZ0R2x5cGhFZGdlOwogICAg
IGludCByaWdodEdseXBoT3ZlcmZsb3cgPSBzdHJva2VPdmVyZmxvdyArIHJpZ2h0R2x5cGhFZGdl
OwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gdGV4dEJv
eC5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSkpIHsKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IHRleHRCb3guZW1waGFzaXNN
YXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpKSB7CiAgICAgICAgIGludCBlbXBoYXNpc01h
cmtIZWlnaHQgPSBsaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQobGlu
ZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAgICAgIGlmICgqbWFya0V4aXN0
c0FuZElzQWJvdmUgPT0gIWxpbmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAg
ICAgICAgICAgICB0b3BHbHlwaE92ZXJmbG93ID0gc3RkOjptaW4odG9wR2x5cGhPdmVyZmxvdywg
LWVtcGhhc2lzTWFya0hlaWdodCk7CkBAIC0xNjE5LDcgKzE2MTksNyBAQCBMYXlvdXRVbml0IElu
bGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBh
bGxvd2VkUG9zaQogCiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUgPSBjaGlsZC0+bGlu
ZVN0eWxlKCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92
ZSA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjaGlsZExpbmVTdHlsZSk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5l
bXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKICAgICAgICAgICAg
IGlmIChtYXJrRXhpc3RzQW5kSXNBYm92ZSAmJiAqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjaGls
ZC0+bG9naWNhbFRvcCgpIC0gY2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01h
cmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKQEAgLTE2
NjcsNyArMTY2Nyw3IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5u
b3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zCiAKICAgICAgICAgaWYgKGlz
PElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4o
KmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUo
Y2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAgaWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYm
ICEqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGlu
ZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNNYXJrIHsgY2hpbGQtPmxvZ2ljYWxCb3R0b20o
KSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxk
TGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkw
YTUxZjkyNWNjMmQ3ZS4uNjhlM2FjMmZmYzkxZTZmNDNhNmNiMzk5NDZhNGJhOTNlMGRhZmRlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlVG8ob2JqZWN0LCAwKTsKICAgICB9CiAKLSAgICB2
b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBt
b3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7
CiAgICAgICAgIHNldFJlbmRlcmVyKCZvYmplY3QpOwogICAgICAgICBzZXRPZmZzZXQob2Zmc2V0
KTsKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgdm9pZCBzZXRPZmZzZXQodW5zaWduZWQgcG9zaXRpb24p
OwogICAgIFJlbmRlckVsZW1lbnQqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KLSAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247IH0KLSAgICB2b2lkIHNldE5leHRCcmVha2FibGVQ
b3NpdGlvbihPcHRpb25hbDx1bnNpZ25lZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9z
aXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVh
a2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9
CisgICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24oc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAg
IGJvb2wgcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJz
VG9FbmRPZlByZXZpb3VzTm9kZTsgfQogICAgIHZvaWQgc2V0UmVmZXJzVG9FbmRPZlByZXZpb3Vz
Tm9kZSgpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJFbGVtZW50
KiBtX3Jvb3QgeyBudWxscHRyIH07CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVs
bHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOwog
ICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAgICAgLy8gVGhlcmUgYXJlIGEgY291cGxlIHBs
YWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVudCBhbiBJbmxpbmVJdGVyYXRvci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1YTc0OTI2MDc0YmQx
YzEyNzI2ZjcwYWIxMzM2M2FjZWZhNGU1M2E2Li44ZTk4NzZiYjNjNDUyYWE2YWY0ZDFhNzkxNzcw
MTE0YWNkNjMwMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFy
a0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorc3RkOjpv
cHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3Zl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBh
cmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01h
cmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBGbG9hdFIKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
dGhpcy0+bGluZVN0eWxlKCk7CiAKICAgICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwot
ICAgIE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZW1waGFzaXNNYXJrRXhp
c3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4
aXN0c0FuZElzQWJvdmUgPSBlbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSk7
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrID0gbWFya0V4aXN0c0FuZElzQWJv
dmUgPyBsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpIDogbnVsbEF0b20oKTsKICAg
ICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCiAgICAgICAgIGVtcGhhc2lzTWFya09mZnNl
dCA9ICptYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1mb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkg
LSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1waGFzaXNNYXJrKSA6IGZvbnQuZm9udE1ldHJp
Y3MoKS5kZXNjZW50KCkgKyBmb250LmVtcGhhc2lzTWFya0FzY2VudChlbXBoYXNpc01hcmspOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNjU0ZDg3N2FkOGYw
M2U3YzVlNWQ4NTg3NWEyMGEzMjk0YzBhZDQ2Ni4uYTRlZWE4OWUzNzBiMDU5OTBhZDU2ODhlZWU1
YjgwMWEzOTdmYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQo
KSBjb25zdCBmaW5hbDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKIAogICAgIExheW91dFJlY3QgbG9naWNhbE92ZXJmbG93UmVjdCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0TG9naWNhbE92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJGcmFnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaAppbmRleCAyMjgyYTRlY2U5ODgyZmU4OWM4YmVk
MmVjOTZiYWEzYjMxNjlkMjI2Li4wYmFlODAwNTMyOWVlYTg4NTcyMWQyYzllNTQ0NzcyYjk0ZGIw
OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJGcmFnbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckZyYWdtZW50LmgKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgTGF5ZXJGcmFnbWVudCB7CiBwdWJsaWM6CiAgICAgTGF5ZXJGcmFnbWVu
dCgpID0gZGVmYXVsdDsKICAgICAKLSAgICB2b2lkIHNldFJlY3RzKGNvbnN0IExheW91dFJlY3Qm
IGJvdW5kcywgY29uc3QgQ2xpcFJlY3QmIGJhY2tncm91bmQsIGNvbnN0IENsaXBSZWN0JiBmb3Jl
Z3JvdW5kLCBjb25zdCBPcHRpb25hbDxMYXlvdXRSZWN0PiYgYmJveCkKKyAgICB2b2lkIHNldFJl
Y3RzKGNvbnN0IExheW91dFJlY3QmIGJvdW5kcywgY29uc3QgQ2xpcFJlY3QmIGJhY2tncm91bmQs
IGNvbnN0IENsaXBSZWN0JiBmb3JlZ3JvdW5kLCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFJl
Y3Q+JiBiYm94KQogICAgIHsKICAgICAgICAgbGF5ZXJCb3VuZHMgPSBib3VuZHM7CiAgICAgICAg
IGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZDsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50ID0gZmFsc2U7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0UmVjdD4gYm91bmRpbmdCb3g7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0
PiBib3VuZGluZ0JveDsKIAogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7CiAgICAgQ2xpcFJl
Y3QgYmFja2dyb3VuZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
aW5kZXggZGI4NDlhNGZiY2JmZWM0ODA4MDRlNDdjZDkyZWU3YWZjZjEyZjZmYS4uYmI0NmY3YTY3
OTQ1ZjVmZjUxZjc0NTcxN2Q3ZmJiNmUxZmY0MzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NYXJrZWRUZXh0LmNwcApAQCAtNjgsNyArNjgsNyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gc3Vi
ZGl2aWRlKGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0PiYgbWFya2VkVGV4dHMsIE92ZXJsYXBTdHJh
dAogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBudW1iZXJPZk9mZnNldHM7ICsraSkgewog
ICAgICAgICBpZiAob2Zmc2V0c1tpXS52YWx1ZSA+IG9mZnNldHNbaSAtIDFdLnZhbHVlKSB7CiAg
ICAgICAgICAgICBpZiAob3ZlcmxhcFN0cmF0ZWd5ID09IE92ZXJsYXBTdHJhdGVneTo6RnJvbnRt
b3N0KSB7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb250bW9zdDsKKyAg
ICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9udG1vc3Q7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRleHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFy
a2VkVGV4dCkgJiYgKCFmcm9udG1vc3QgfHwgb2Zmc2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlID4g
b2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0LT50eXBlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyb250bW9zdCA9IGo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4
dFN0eWxlLmgKaW5kZXggYjkyZDJlMDE0NWNmMzAzYzU3M2ZiYjAxNzk5YzU1MWFiMTA5YzU2OC4u
YWYxYTY1ZjJhZmUyZjY3MjdmOTRjY2ZkZmExZDRlMmFkODY1MGJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0U3R5bGUuaApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3Qg
TWFya2VkVGV4dFN0eWxlIHsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgVGV4dFBh
aW50U3R5bGUgdGV4dFN0eWxlczsKICAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyB0
ZXh0RGVjb3JhdGlvblN0eWxlczsKLSAgICBPcHRpb25hbDxTaGFkb3dEYXRhPiB0ZXh0U2hhZG93
OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsKICAgICBmbG9hdCBh
bHBoYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDcxMGMxMDFmMjNkMWQwNjg4OGZjYTNmNDIzNGI3NGU3MjFiOTRmNGIuLjNhYjYyNjcwZjA1YzYx
YzllODBjYTA0YThhYjBiYTY2NWZiYThlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0
IG1fcGFnZUxvZ2ljYWxPZmZzZXQ7CiAgICAgTGF5b3V0VW5pdCBtX2ludHJpbnNpY0JvcmRlckZv
ckZpZWxkc2V0OwogICAgIAotICAgIE9wdGlvbmFsPFdlYWtQdHI8UmVuZGVyRnJhZ21lbnRlZEZs
b3c+PiBtX2VuY2xvc2luZ0ZyYWdtZW50ZWRGbG93OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vha1B0
cjxSZW5kZXJGcmFnbWVudGVkRmxvdz4+IG1fZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3c7CiB9Owog
CiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyQmxvY2tSYXJlRGF0YT4+IFJlbmRlckJsb2NrUmFyZURhdGFNYXA7CkBAIC0yNDQwLDE2ICsy
NDQwLDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoUmVuZGVyT2JqZWN0JiBjaGlsZCwgTGF5b3V0CiAgICAgCiAgICAgLy8gVGhlIHByZWZl
cnJlZCB3aWR0aHMgb2YgZmxleGJveCBjaGlsZHJlbiBzaG91bGQgbmV2ZXIgZGVwZW5kIG9uIG92
ZXJyaWRpbmcgc2l6ZXMuIFRoZXkgc2hvdWxkCiAgICAgLy8gYWx3YXlzIGJlIGNvbXB1dGVkIHdp
dGhvdXQgcmVnYXJkIGZvciBhbnkgb3ZlcnJpZGVzIHRoYXQgYXJlIHByZXNlbnQuCi0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0hlaWdodDsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBvdmVycmlkaW5nV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVy
cmlkaW5nSGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ1dp
ZHRoOwogICAgIAogICAgIGlmIChjaGlsZC5pc0JveCgpKSB7CiAgICAgICAgIGF1dG8mIGJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQpOwogICAgICAgICBpZiAoYm94LmlzRmxleEl0ZW0o
KSkgewogICAgICAgICAgICAgaWYgKGJveC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQot
ICAgICAgICAgICAgICAgIG92ZXJyaWRpbmdIZWlnaHQgPSBPcHRpb25hbDxMYXlvdXRVbml0Pihi
b3gub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgb3ZlcnJpZGlu
Z0hlaWdodCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oYm94Lm92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKGJveC5oYXNPdmVycmlkaW5nTG9naWNhbFdpZHRo
KCkpCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGluZ1dpZHRoID0gT3B0aW9uYWw8TGF5b3V0VW5p
dD4oYm94Lm92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgICAgICAgICAgb3ZlcnJp
ZGluZ1dpZHRoID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pihib3gub3ZlcnJpZGluZ0xvZ2lj
YWxXaWR0aCgpKTsKICAgICAgICAgICAgIGJveC5jbGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjU0MSw3ICsyNTQxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29s
IGZpcnN0TGkKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNj
cm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAg
IH07CiAKLSAgICAgICAgYXV0byBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRp
b25hbDxMYXlvdXRVbml0PigpIDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOworICAg
ICAgICBhdXRvIGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4oKSA6IGlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChpc0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAv
LyBIaXN0b3JpY2FsbHksIHdlIGRpZCB0aGlzIGNoZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQg
d2UgY2FuJ3QKQEAgLTI1NTEsNyArMjU1MSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpCiAg
ICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgdXNlIHRoaXMgZm9yIGFsbCB1c2VzIG9m
IGRlcHJlY2F0ZWQgZmxleGJveC4KICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZDb250
ZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5n
VG9wKCkgKyBjb250ZW50SGVpZ2h0KCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkg
KyBjb250ZW50V2lkdGgoKTsKICAgICAgICAgICAgIGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGlu
ZVBvcy52YWx1ZSgpID4gYm90dG9tT2ZDb250ZW50KQotICAgICAgICAgICAgICAgIGJhc2VsaW5l
UG9zID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVBv
cyA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YmFzZWxpbmVQb3MpCiAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxM
aW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSAr
IGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0yNTc2LDEzICsyNTc2LDEzIEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJz
dExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVp
Z2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cykpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChzaG91bGRBcHBseUxheW91dENvbnRh
aW5tZW50KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPExheW91dFVuaXQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3Vy
cjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5p
c0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKQEAgLTI1OTEsMTYgKzI1OTEsMTYg
QEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVE
aXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQo
KnRoaXMpKQogICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3go
KnRoaXMsIGxpbmVEaXJlY3Rpb24pICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUg
PyBtYXJnaW5Cb3R0b20oKSA6IG1hcmdpbkxlZnQoKSk7CiAKICAgICBpZiAoaXNXcml0aW5nTW9k
ZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRV
bml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAg
ICAgYm9vbCBoYXZlTm9ybWFsRmxvd0NoaWxkID0gZmFsc2U7CiAgICAgZm9yIChhdXRvKiBib3gg
PSBsYXN0Q2hpbGRCb3goKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7
CkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZQogICAgICAgICAg
ICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9Owog
ICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Jl
bmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQp
CkBAIC0zMjIyLDkgKzMyMjIsOSBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiAoYm9vbClhdmFpbGFibGVMb2dpY2FsSGVpZ2h0
Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9u
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKSBjb25zdAogewotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKICAgICAKICAgICAvLyBGb3IgYW5vbnltb3VzIGJs
b2NrcyB0aGF0IGFyZSBza2lwcGVkIGR1cmluZyBwZXJjZW50YWdlIGhlaWdodCBjYWxjdWxhdGlv
biwKICAgICAvLyB3ZSBjb25zaWRlciB0aGVtIHRvIGhhdmUgYW4gaW5kZWZpbml0ZSBoZWlnaHQu
CkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNh
bEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIDBfbHUpOwogICAgICAgICBhdmFpbGFibGVIZWlnaHQg
PSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0
KCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfSBlbHNlIGlmIChzdHlsZVRvVXNl
LmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewotICAgICAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY29tcHV0ZVBlcmNlbnRhZ2VM
b2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgaWYg
KGhlaWdodFdpdGhTY3JvbGxiYXIpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEJv
eEhlaWdodFdpdGhTY3JvbGxiYXIgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhoZWlnaHRXaXRoU2Nyb2xsYmFyLnZhbHVlKCkpOwogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBhZGp1c3QgZm9yIG1pbi9tYXggaGVpZ2h0IGJlY2F1c2UgdGhpcyBtZXRob2QgZG9l
cyBub3QKQEAgLTM1MDMsNyArMzUwMyw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVz
dEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnCiAgICAg
cmV0dXJuIHN0ZDo6bWF4KGhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJC
bG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlJ3JlIGRv
aW5nIHRoaXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMgZXZlbiB0aG91Z2ggaXQncyBxdWVzdGlv
bmFibGUuCiAgICAgLy8gU2hvdWxkbid0IGhlaWdodDoxMDBweCBtZWFuIHRoZSBmaWVsZHNldCBj
b250ZW50IGdldHMgMTAwcHggb2YgaGVpZ2h0IGV2ZW4gaWYgdGhlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGVmYzAxNTRkYjg2ODc5ZGYzMzcwYWY5NzNmNjI5ZTA0
Zjg1YjY4NjEuLmJlZDU4ZjNlOThlOWNkZGI3ZmY3NjNjYjcyMzQ2NTljN2FhYjlhNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMjksNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBM
YXlvdXRVbml0IGJvcmRlckJlZm9yZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQg
YWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdo
dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0IG92
ZXJyaWRlOworICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JC
b3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgcGFpbnRFeGNsdWRlZENoaWxkcmVuSW5Cb3JkZXIoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKICAgICAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIGxvZ2ljYWwgd2lk
dGgvaGVpZ2h0IGFuZCBtYXJnaW5zIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxv
dyBkaXJlY3Rpb24uCkBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd05lZWRzVXBkYXRlKCkgY29uc3Q7CiAgICAg
dm9pZCByZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVz
Y2VuZGFudHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cqID0gbnVsbHB0cikgZmluYWw7CiAKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNv
bXB1dGF0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZXNldENoaWxkTG9naWNhbEhlaWdodEJlZm9yZUxheW91dChjb25zdCBSZW5kZXJCb3gm
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5k
QW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxs
ZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxh
eWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBi
ZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNjJkZTQxNjViNjEzZWMz
Y2YwOTM4ZGQxYzA3Y2Y1OWNjNDE0MWU5MC4uYTIwYzg1Zjg4NDAwZTM2MTI3NWVlZTRhY2QzOGZk
NDFmZGM1ZmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNv
bHVtbkNvdW50QW5kV2lkdGgoKQogICAgIHNldENvbXB1dGVkQ29sdW1uQ291bnRBbmRXaWR0aChk
ZXNpcmVkQ29sdW1uQ291bnQsIGRlc2lyZWRDb2x1bW5XaWR0aCk7CiB9CiAKLWJvb2wgUmVuZGVy
QmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1ucyhPcHRpb25hbDx1bnNpZ25lZD4gZGVzaXJlZENv
bHVtbkNvdW50KSBjb25zdAorYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1bW5z
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QKIHsKICAg
ICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBub3Qgc3VwcG9zZWQgdG8gY3JlYXRlIG11bHRp
Y29sIGNvbnRleHQuCiAgICAgaWYgKGlzRmlsZVVwbG9hZENvbnRyb2woKSB8fCBpc1RleHRDb250
cm9sKCkgfHwgaXNMaXN0Qm94KCkpCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMYXlvdXRVbgogICAgIH0KIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tG
bG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSAmJiAhaXNHcmlkSXRlbSgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzE1NSw3ICszMTU1LDcgQEAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmly
c3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxp
bmVUeXBlKCkpIH07CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25z
dAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBp
ZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
aW5kZXggNmE0MmFhYWQ0MWM1NWQ0NWE1MzFiYTVhMDBmNjA1MTBhZWEzY2JiMi4uY2QwMDk2NWRh
ZWY5Yzk3M2FhNWFjZDY0NjA4NjIwODJmMGIyODhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjczLDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cqIG11bHRpQ29sdW1uRmxvd1Nsb3dDYXNlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3coUmVuZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAgICAg
dm9pZCBjbGVhck11bHRpQ29sdW1uRmxvdygpOwotICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMo
T3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgYm9vbCB3aWxsQ3JlYXRlQ29sdW1ucyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBk
ZXNpcmVkQ29sdW1uQ291bnQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0NvbHVtbnMoaW50KSBjb25zdDsKIAogICAgIGJvb2wgY29udGFpbnNGbG9hdHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGlu
Z09iamVjdHMtPnNldCgpLmlzRW1wdHkoKTsgfQpAQCAtNDUyLDggKzQ1Miw4IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CiAKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
bGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBpc011bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bXVsdGlDb2x1bW5GbG93KCk7IH0KICAgICAKQEAgLTUzNiw3ICs1MzYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIG92ZXJyaWRlOwogCiBwdWJsaWM6Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJv
b2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRG
b3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0IHsgcmV0dXJuIHsgfTsg
fQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCAv
KiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICovLCBmbG9hdCYgLyogbG9naWNhbExlZnQgKi8s
IGZsb2F0JiAvKiBsb2dpY2FsV2lkdGggKi8pIGNvbnN0IHsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA3Njk1YjEyY2UxZTNkMTQ5ZmFhNGQ5
YTVhNGJhMmY5MTA1OGVlM2RjLi41Njc0OWFhMDdjYzUzYzJiZDIwOTZhM2Y1OWFiYjdiZWM2ZWJk
NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTAxLDcgKzEw
MSw3IEBAIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkaW5nTG9naWNhbEhlaWdodE1h
cCA9IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGluZ0xvZ2ljYWxX
aWR0aE1hcCA9IG51bGxwdHI7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcmUgdGhlc2UgYmFz
ZWQgb24gcGh5c2ljYWwgZGlyZWN0aW9uLgotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQm94KiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwor
dHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25h
bFNpemVNYXAqIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRN
YXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOwogCkBAIC02
NzEsMTEgKzY3MSwxMSBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdp
ZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbAogICAgIHJldHVybiBzdGQ6
Om1heChsb2dpY2FsV2lkdGgsIGNvbXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50VXNpbmcoTWlu
U2l6ZSwgbWluTGVuZ3RoLCBhdmFpbGFibGVXaWR0aCwgY2IsIGZyYWdtZW50KSk7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50
SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWln
aHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxN
YXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRV
bml0PiBtYXhIID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNl
LmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVz
aW5nKE1heFNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2Fs
SGVpZ2h0LCBtYXhILnZhbHVlKCkpOwogICAgIH0KICAgICBhdXRvIGxvZ2ljYWxNaW5IZWlnaHQg
PSBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5IZWlnaHQoKTsKQEAgLTY4MywxOSArNjgzLDE5IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBPCiAgICAgICAgIGxvZ2ljYWxNaW5IZWlnaHQgPSBMZW5ndGgo
KmludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICBpZiAobG9n
aWNhbE1pbkhlaWdodC5pc01pbkNvbnRlbnQoKSB8fCBsb2dpY2FsTWluSGVpZ2h0LmlzTWF4Q29u
dGVudCgpKQogICAgICAgICBsb2dpY2FsTWluSGVpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAgaWYgKE9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0VXNpbmcoTWluU2l6ZSwgbG9naWNhbE1pbkhlaWdodCwgaW50cmluc2ljQ29udGVudEhl
aWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRMb2dpY2Fs
SGVpZ2h0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBsb2dpY2FsTWluSGVp
Z2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxv
Z2ljYWxIZWlnaHQsIGNvbXB1dGVkTG9naWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4g
bG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRp
b25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNp
Y0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9V
c2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhI
ZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6
ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQp
KQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWlnaHQsIG1h
eEgudmFsdWUoKSk7CiAgICAgfQotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNp
emUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0
KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dp
Y2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9V
c2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkQ29udGVudExvZ2ljYWxIZWln
aHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CiB9CkBAIC0xMjAyLDcgKzEy
MDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBj
b25zdAogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpKTsK
ICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKQpAQCAtMTIxMCw3ICsxMjEwLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKICAgICAg
ICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwLT5n
ZXQodGhpcyk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkKQEAgLTEyNDAsMTMgKzEyNDAsMTMgQEAgYm9vbCBSZW5kZXJC
b3g6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3QKICAg
ICAgICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAg
JiYgZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5jb250
YWlucyh0aGlzKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsV2lkdGgoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICByZXR1cm4gZ092ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5nZXQodGhpcyk7CiB9CiAKLU9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBj
b25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKQEAgLTEyNjIsMTQgKzEyNjIsMTQgQEAg
Ym9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpz
ZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChPcHRpb25hbDxM
YXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBsb2dpY2FsV2lkdGgpCiB7CiAgICAgaWYgKCFnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGhNYXApCiAgICAgICAgIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxXaWR0aE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKICAg
ICBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAtPnNldCh0
aGlzLCBsb2dpY2FsV2lkdGgpOwogfQogCi12b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGxv
Z2ljYWxIZWlnaHQpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhl
aWdodCkKIHsKICAgICBpZiAoIWdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHRNYXApCiAgICAgICAgIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHRNYXAgPSBuZXcgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7CkBAIC0xMzI4LDcg
KzEzMjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IGNvbXB1dAogICAgIHJldHVybiBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHsgY29tcHV0ZWRMb2dpY2FsV2lkdGgsIG9y
aWdpbmFsVHlwZSwgZmFsc2UgfSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RD
b250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBo
ZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNv
bnN0CiB7CiAgICAgaWYgKCFoZWlnaHQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjMzNyw3ICsy
MzM3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVjdFVzaW5nUGFp
bnRPZmZzZXQoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0
OwogfQogCi1PcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckJveDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKICAg
ICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVhY2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4
L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFpbmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAg
ICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBo
YXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5nTW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9y
ZSBhcHByb3ByaWF0ZQpAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bmkKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7CiAgICAgICAgICAgICAvLyBDYWxs
ZXJzIHBhc3NpbmcgTGF5b3V0VW5pdDo6bWF4KCkgZm9yIGxvZ2ljYWxIZWlnaHQgbWVhbnMgYW4g
aW5kZWZpbml0ZSBoZWlnaHQsIHNvCiAgICAgICAgICAgICAvLyB0cmFuc2xhdGUgdGhpcyB0byBh
IG51bGxvcHQgaW50cmluc2ljIGhlaWdodCBmb3IgZnVydGhlciBsb2dpY2FsIGhlaWdodCBjb21w
dXRhdGlvbnMuCi0gICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNIZWln
aHQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0hlaWdo
dDsKICAgICAgICAgICAgIGlmIChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAhPSBMYXlvdXRVbml0
OjptYXgoKSkKICAgICAgICAgICAgICAgICBpbnRyaW5zaWNIZWlnaHQgPSBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudDsKICAgICAgICAgICAgIGlmIChzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZy
b21Bc3BlY3RSYXRpbygpKSB7CkBAIC0zMDA2LDIxICszMDA2LDIxIEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFdpdGhvdXRMYXlvdXQoKSBjb25zdAogICAgIHJl
dHVybiBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUs
IGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3Ro
JiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdo
dCkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9
IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUs
IGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9n
aWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdo
dCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVU
eXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFs
PExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2lj
Q29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCkpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50
SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRV
bml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6
aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29u
dGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29k
ZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgpAQCAtMzAzNSwxMCArMzAzNSwxMCBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdo
dFVzaW5nKExlbmd0aAogICAgIHJldHVybiAwX2x1OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlv
dXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAg
aWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6
ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSA6
IHN0ZDo6bnVsbG9wdDsKICAgICAvLyBGSVhNRTogVGhlIENTUyBzaXppbmcgc3BlYyBpcyBjb25z
aWRlcmluZyBjaGFuZ2luZyB3aGF0IG1pbi1jb250ZW50L21heC1jb250ZW50IHNob3VsZCByZXNv
bHZlIHRvLgogICAgIC8vIElmIHRoYXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBj
aGFuZ2UuCiAgICAgaWYgKGhlaWdodC5pc0ludHJpbnNpYygpIHx8IGhlaWdodC5pc01pbkludHJp
bnNpYygpKQpAQCAtMzEwMiw5ICszMTAyLDkgQEAgc3RhdGljIGJvb2wgdGFibGVDZWxsU2hvdWxk
SGF2ZVplcm9Jbml0aWFsU2l6ZShjb25zdCBSZW5kZXJCbG9jayYgYmxvY2ssIGNvbnN0IFIKICAg
ICByZXR1cm4gc2Nyb2xsc092ZXJmbG93WSAmJiAhY2hpbGQuc2hvdWxkVHJlYXRDaGlsZEFzUmVw
bGFjZWRJblRhYmxlQ2VsbHMoKSAmJiAoIWNlbGwuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNB
dXRvKCkgfHwgIWNlbGwudGFibGUoKS0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkp
OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdo
dERlc2NlbmRhbnRzIHVwZGF0ZURlc2NlbmRhbnRzKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBM
ZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzIHVwZGF0ZURl
c2NlbmRhbnRzKSBjb25zdAogewotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhl
aWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKIAog
ICAgIGJvb2wgc2tpcHBlZEF1dG9IZWlnaHRDb250YWluaW5nQmxvY2sgPSBmYWxzZTsKICAgICBS
ZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKQEAgLTMxMzQsNyArMzEzNCw3IEBA
IE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2Fs
SGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAgICAgICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRo
ZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBvciBub3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vy
c2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJy
ZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2
ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9u
YWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092
ZXJmbG93WSgpKSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5vdmVycmlkaW5nTG9naWNhbEhl
aWdodCgpIC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgpIC0gY2ItPmNvbXB1dGVkQ1NT
UGFkZGluZ0FmdGVyKCkgLSBjYi0+Ym9yZGVyQmVmb3JlKCkgLSBjYi0+Ym9yZGVyQWZ0ZXIoKTsK
ICAgICAgICAgfQpAQCAtMzIyMCw3ICszMjIwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoVHlwZSwgTGVuZ3QK
ICAgICByZXR1cm4gMDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4pIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+KSBjb25zdAogewogICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkpKTsKIH0KQEAgLTMz
MDQsNyArMzMwNCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiB7CiAgICAgQVNTRVJUKGhl
aWdodFR5cGUgPT0gTWluU2l6ZSB8fCBoZWlnaHRUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUg
fHwgIWxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpOwogICAgIGlmIChoZWlnaHRUeXBlID09IE1pblNp
emUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlvbmFsPExheW91dFVuaXQ+KDApKTsK
KyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5n
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkpOwogCiAgICAgc3dpdGNoIChsb2dpY2FsSGVp
Z2h0LnR5cGUoKSkgewogICAgIGNhc2UgTGVuZ3RoVHlwZTo6Rml4ZWQ6CkBAIC0zMzE5LDcgKzMz
MTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExlbgogICAgICAgICAgICAgY29udGFpbmVyID0g
Y29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhh
c1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgPSBjb250YWluZXItPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLSAgICAgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHN0cmV0Y2hlZEhlaWdodDsKICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2NrPihj
b250YWluZXIpKSB7CiAgICAgICAgICAgICBhdXRvKiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPihjb250YWluZXIpOwogICAgICAgICAgICAgYmxvY2stPmFkZFBlcmNlbnRIZWlnaHREZXNj
ZW5kYW50KCpjb25zdF9jYXN0PFJlbmRlckJveCo+KHRoaXMpKTsKQEAgLTM0MDgsNyArMzQwOCw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29u
c3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpCiAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChoLCBhdmFpbGFibGVI
ZWlnaHQpKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5j
bHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRl
Q29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXpl
LCBoLCBzdGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4o
MCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVk
aW5nU2Nyb2xsYmFyKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhN
RTogQ2hlY2sgbG9naWNhbFRvcC9sb2dpY2FsQm90dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRs
ZSB2ZXJ0aWNhbCB3cml0aW5nLW1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggMWRkNjg4ODQxZmYxYTMyMjQyNjJhNDNhOGVhZDM4N2ExNjFjNTllYi4uNzJmNDQ5MzRl
ZjQ3NzUxYjcwZDE0ZWI2ODFjZDhjMWY2YjVmMGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaApAQCAtODcsOCArODcsOCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIEFs
bG93SW50cmluc2ljIHsgWWVzLCBObyB9OwogICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNh
bFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQsIExheW91dFVuaXQsIFJlbmRlckJs
b2NrJiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqLCBBbGxvd0ludHJpbnNpYyA9IEFsbG93SW50
cmluc2ljOjpZZXMpIGNvbnN0OwotICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbEhlaWdo
dEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJhaW5D
b250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWln
aHQpIGNvbnN0OworICAgIExheW91dFVuaXQgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWln
aHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CiAKICAgICB2b2lkIHNldExvZ2lj
YWxMZWZ0KExheW91dFVuaXQgbGVmdCkKICAgICB7CkBAIC0zMjMsMTYgKzMyMywxNiBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bWF4KExheW91dFVuaXQoKSwgb3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgp
IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpIC0gc2Nyb2xsYmFyTG9naWNhbFdpZHRo
KCkpOyB9CiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om1heChMYXlvdXRVbml0KCksIG92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNh
bEhlaWdodCgpKTsgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNv
bnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBib29sIGhhc092ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoT3B0aW9u
YWw8TGF5b3V0VW5pdD4pOwotICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2b2lkIHNldE92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4pOworICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4pOwogICAgIHZvaWQgY2xl
YXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemUoKTsKICAgICB2b2lkIGNsZWFy
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTM0
OSw3ICszNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IGZpZWxkc2V0cyB0
byBzdWJ0cmFjdCBvdXQgdGhlIGludHJpbnNpYyBib3JkZXIuCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBo
ZWlnaHQpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZv
ckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgewogICAgICAgICBMYXlvdXRVbml0IG1fYmVm
b3JlOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hX
cmFwcGVyKCk7CiAKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJs
ZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBM
YXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNp
YmxlUmVjdENvbnRleHQpIGNvbnN0CiBvdmVycmlkZTsKICAgICB2b2lkIHJlcGFpbnREdXJpbmdM
YXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWlu
dE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNjZW5kYW50cyk7CkBAIC00NDAsOSAr
NDQwLDkgQEAgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2
b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1h
cmdpbkVuZCwgY29uc3QgUmVuZGVyQmxvY2smIGNiLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciop
IGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVz
aW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhl
aWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRBbmRT
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6
ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhl
aWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5kU2Ny
b2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsK
ICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBl
LCBMZW5ndGggd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBT
aG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwogICAgIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBMZW5ndGgg
aGVpZ2h0KSBjb25zdDsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG92ZXJyaWRlOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJl
c3BlY3RpbmdNaW5NYXhIZWlnaHQoVCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiBjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0
KGxvZ2ljYWxIZWlnaHQpKTsgfQogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0
RGVzY2VuZGFudHMgeyBZZXMgLCBObyB9OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVy
Y2VudGFnZUhlaWdodERlc2NlbmRhbnRzID0gVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRh
bnRzOjpZZXMpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBl
cmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBVcGRhdGVQZXJjZW50
YWdlSGVpZ2h0RGVzY2VuZGFudHMgPSBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHM6
OlllcykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlKSBj
b25zdDsKQEAgLTU0Miw4ICs1NDIsOCBAQCBvdmVycmlkZTsKICAgICAKICAgICBSZW5kZXJMYXll
ciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQg
c2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJs
b2NrLgorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsgfQorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExp
bmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNv
bXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgogCiAgICAgYm9vbCBzaHJp
bmtUb0F2b2lkRmxvYXRzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0OwpAQCAtNjg4LDcgKzY4OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYsIFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyKiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0
aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyQW5k
UGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
SW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExl
bmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0
VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVu
Z3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3Qg
eyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCmluZGV4IDg3MTFiYjk1ZWUzZGM2Nzk0N2UzMjk3MWIxYmU5ZWI3ZWViMmMzM2YuLmQ2YWQ2
OGQ1MzE1YmVlMGYwMmUyYTAyNjM0YzRhOTFjNjUwYzQ5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTg3Niw3ICsxODc2
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVkZ2Vz
ID0gdHJ1ZTsKICAgICBpbnQgbnVtRWRnZXNWaXNpYmxlID0gNDsKICAgICBib29sIGFsbEVkZ2Vz
U2hhcmVDb2xvciA9IHRydWU7Ci0gICAgT3B0aW9uYWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxlU2lk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAgQm94
U2lkZVNldCBlZGdlc1RvRHJhdzsKIAogICAgIGZvciAoYXV0byBzaWRlIDogYWxsQm94U2lkZXMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4YjcwODMwZjFmNWMwMC4uOWIxNWViOTc0
MzdjOGU3Njk3ZTQ3ODZmNTY1ZmUyNzY1M2Y4YjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIzOCw4ICsyMzgsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAt
MV9sdTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gLTFfbHU7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQogICAgIHZpcnR1YWwgYm9vbCBo
YXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAppbmRleCA0NDBiNzljZDAzMjQ4OGUx
YjdhNzQ2ZjdiNjE4Yzk5MzFlZThhNjhjLi42ZWNjMGRlMzk3MmQyNzkwNjNmM2M1ZTczN2E3NTg4
MTNmNzQzYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5l
VGV4dC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgZmxvYXQgUmVuZGVyQ29tYmluZVRleHQ6OndpZHRo
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUKICAgICBy
ZXR1cm4gUmVuZGVyVGV4dDo6d2lkdGgoZnJvbSwgbGVuZ3RoLCBmb250LCB4UG9zaXRpb24sIGZh
bGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogfQogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBS
ZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5lVGV4dDo6
Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogewogICAg
IGlmICghbV9pc0NvbWJpbmVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCA4M2I4NDc1MzJm
NDUwZmVlY2UyNDQ1M2VmZTA3ODQ2MTU2ODI0ZjQ5Li4xNTg1MGYxNWEzNWYxMzJjYzZmZWUyYTk4
YmFiZTMwYjFiMWE1NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ29tYmluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgVGV4dCYgdGV4dE5vZGUo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKICAgICB2b2lkIGNvbWJpbmVUZXh0SWZOZWVkZWQoKTsKLSAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gY29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0KSBjb25zdDsKICAgICBTdHJpbmcgY29tYmluZWRTdHJpbmdGb3JSZW5k
ZXJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQ29tYmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5lZFRleHRXaWR0aChjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBkM2FjMGMzNjFlMGNmNWUwNThkNzg0Y2Yy
MTAyY2M2OWI2ZjRlNThjLi42MzFmYzFkNDVlNDE1OGU4OTAxM2IwMjM0ODI1NjU2YzI0MWFjYjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgc3RydWN0IENvdW50ZXJQbGFuIHsKICAgICBpbnQgdmFsdWU7CiB9OwogCi1z
dGF0aWMgT3B0aW9uYWw8Q291bnRlclBsYW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q291bnRlclBsYW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVy
YXRpbmcgbm9kZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KICAgICBFbGVtZW50
KiBnZW5lcmF0aW5nRWxlbWVudCA9IHJlbmRlcmVyLmdlbmVyYXRpbmdFbGVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiYmNjYjcxN2E1N2JkM2E1
ZGMwMjE4ODZmMTJhOWVkM2QzYjE0MmU5Li5jMmUwNGJlOTYxYzExNWU1ZDA5MDVmMTJiMzhlMmQy
ZTE1NjJjNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAg
LTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gc3R5bGUoKS5vcGFjaXR5KCkgPCAxLjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVU
b0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3Rk
OjpudWxsb3B0KSBjb25zdAorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhzdGQ6Om9wdGlv
bmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNTk2YTNhZjlhYWY4NjdiM2FjNDE2
YTA3MjZlNzNkMmRiMGZlZDQ5OS4uYzQ0NjA1ODM4NzNmMGQwNmU3OTEyOGMzNDExOWViMGRlYjg1
M2U4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCkBAIC0xNjIsMTAgKzE2MiwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbgogICAgIHJl
dHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1h
cmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5G
bG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1l
bnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJh
c2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGls
ZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4NCwxNCArMTg0LDE0IEBAIE9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4oKTsKIAogICAgIGlmICghaXNDb2x1bW5GbG93KCkgJiYgIW1haW5BeGlzSXNDaGlsZElu
bGluZUF4aXMoKmJhc2VsaW5lQ2hpbGQpKQogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChj
cm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5s
b2dpY2FsVG9wKCkpLnRvSW50KCkgfTsKICAgICBpZiAoaXNDb2x1bW5GbG93KCkgJiYgbWFpbkF4
aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCiAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0IHsgKG1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKS50b0ludCgpIH07CiAKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0
TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVCb3hCYXNlbGluZSBhbmQg
c3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcgbW9kZSByb290LgogICAgICAgICAv
LyBUaGlzIHdvdWxkIGFsc28gZml4IHNvbWUgY2FzZXMgd2hlcmUgdGhlIGZsZXhib3ggaXMgb3J0
aG9nb25hbCB0byBpdHMgY29udGFpbmVyLgpAQCAtMjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyAoYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQt
PmxvZ2ljYWxUb3AoKSkudG9JbnQoKSB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0
TGluZUJhc2VsaW5lKCk7CiB9CkBAIC00OTUsNyArNDk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6Y2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGgoY29uc3QgUmVuZGVyQm94JiBj
aGlsZCkKICAgICBpZiAoY2hpbGRDcm9zc1NpemVJc0RlZmluaXRlKGNoaWxkLCBjaGlsZC5zdHls
ZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAgICAgICAgcmV0dXJuIGNoaWxkLmxvZ2ljYWxXaWR0aCgp
OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY2hpbGRPdmVycmlkaW5nV2lkdGg7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjaGlsZE92ZXJyaWRpbmdXaWR0aDsKICAgICBpZiAo
Y2hpbGQuaGFzT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgpKSB7CiAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IGNsZWFyIHBvdGVudGlhbCBvdmVycmlkZXMgdG8gY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0
aCBvdGhlcndpc2UgaXQnbGwgcmV0dXJuIHRoZSBvdmVycmlkZSBzaXplLgogICAgICAgICBjaGls
ZE92ZXJyaWRpbmdXaWR0aCA9IGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKTsKQEAgLTU1
Niw3ICs1NTYsNyBAQCBzdGF0aWMgYm9vbCBjaGlsZEhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpCiAgICAgcmV0dXJuIGNoaWxkLmhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkg
fHwgY2hpbGQuc3R5bGUoKS5oYXNBc3BlY3RSYXRpbygpOwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSkKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhp
c0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIHNpemUpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIGhvcml6b250YWwgZmxvdywg
dGhhdCBtZWFucyB0aGUgbWFpbiBzaXplIGlzIHRoZSB3aWR0aC4KICAgICAvLyBUaGF0J3MgdGhl
IGxvZ2ljYWwgd2lkdGggZm9yIGhvcml6b250YWwgd3JpdGluZyBtb2RlcywgYW5kIHRoZSBsb2dp
Y2FsCkBAIC01NzIsNyArNTcyLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGli
bGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYKICAgICAgICAg
Ly8gaWYgbmVjZXNzYXJ5IChzZWUgQ29tcHV0ZU5leHRGbGV4TGluZSBhbmQgdGhlIGNhbGwgdG8K
ICAgICAgICAgLy8gY2hpbGRIYXNJbnRyaW5zaWNNYWluQXhpc1NpemUpIHNvIHdlIGNhbiBiZSBz
dXJlIHRoYXQgdGhlIHR3byBoZWlnaHQKICAgICAgICAgLy8gY2FsbHMgaGVyZSB3aWxsIHJldHVy
biB1cC10by1kYXRlIGRhdGEuCi0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9
IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVk
Q2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodChjaGlsZCkpOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNh
bEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNh
bEhlaWdodChjaGlsZCkpOwogICAgICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgICAgIHJldHVy
biBoZWlnaHQ7CiAgICAgICAgIHJldHVybiBoZWlnaHQudmFsdWUoKSArIGNoaWxkLnNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBib29sIFJlbmRlckZsZXhpYmxl
Qm94Ojp1c2VDaGlsZEFzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgcmV0
dXJuIGNoaWxkQ3Jvc3NTaXplSXNEZWZpbml0ZShjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoRm9yQ2hp
bGQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgY2hpbGQpKTsKIH0KIAotLy8gRklYTUU6IGNvbXB1dGVN
YWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nIG1heSBuZWVkIHRvIHJldHVybiBhbiBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbiB0aGUgZnV0dXJlCisvLyBGSVhNRTogY29tcHV0ZU1haW5TaXplRnJv
bUFzcGVjdFJhdGlvVXNpbmcgbWF5IG5lZWQgdG8gcmV0dXJuIGFuIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW4gdGhlIGZ1dHVyZQogLy8gcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluZGVmaW5p
dGUgc2l6ZXMgYXMgMC8tMS4KIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVN
YWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0
aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0CiB7CkBAIC04MTksNyArODE5LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmco
Y29uc3QgUmVuZGVyQm8KICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH07CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjcm9zc1NpemU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBjcm9zc1NpemU7CiAgICAgaWYgKGNyb3NzU2l6ZUxlbmd0aC5pc0ZpeGVkKCkpCiAgICAgICAg
IGNyb3NzU2l6ZSA9IGFkanVzdEZvckJveFNpemluZyhjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoKTsK
ICAgICBlbHNlIGlmIChjcm9zc1NpemVMZW5ndGguaXNBdXRvKCkpIHsKQEAgLTEyMDksNyArMTIw
OSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFy
Z2lucygpCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JN
aW5BbmRNYXgoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAg
TGVuZ3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
bWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21w
dXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsKICAgICAgICAg
Y2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRT
aXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmlu
ZGV4IDY0YmE4Njc5MmVhMmI5NjM3OTQ3MGUxNTE1MDBlMzE2MTg5MjliZDAuLmZjY2I0MDdiNzEx
NDRlYTA0NGZmY2U0ZWNmYzE4MjAzMWM3NjNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4oY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pIG92
ZXJyaWRlOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtYWlu
QXhpc0V4dGVudCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY3Jvc3NBeGlzQ29udGVudEV4dGVu
dCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFpbkF4aXNDb250ZW50RXh0ZW50KExheW91dFVu
aXQgY29udGVudExvZ2ljYWxIZWlnaHQpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIHNpemUpOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZU1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUsIGNvbnN0IExl
bmd0aCYgc2l6ZSk7CiAgICAgV3JpdGluZ01vZGUgdHJhbnNmb3JtZWRXcml0aW5nTW9kZSgpIGNv
bnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyU3RhcnQoKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckVuZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDhiZmFjYzZlZjBhNjk0MWUzNDBhZWQ4OTZkM2Y2ZTE4
MjVjOGMxZjQuLjIwOTljNGJkNWQ1NjYyYzI3ZjZhNGJjOTE1NGE1NmRmODgxYmI4ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBi
b29sIFJlbmRlckdyaWQ6Om5hbWVkR3JpZExpbmVzRGVmaW5pdGlvbkRpZENoYW5nZShjb25zdCBS
ZW5kZXJTdHlsZSYgb2xkU3R5bGUpCiAKIC8vIFRoaXMgbWV0aG9kIG9wdGltaXplcyB0aGUgZ3V0
dGVycyBjb21wdXRhdGlvbiBieSBza2lwaW5nIHRoZSBhdmFpbGFibGUgc2l6ZQogLy8gY2FsbCBp
ZiBnYXBzIGFyZSBmaXhlZCBzaXplIChpdCdzIG9ubHkgbmVlZGVkIGZvciBwZXJjZW50YWdlcyku
Ci1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjphdmFpbGFibGVTcGFjZUZvckd1dHRl
cnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6YXZhaWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4
aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExl
bmd0aCA9IGlzUm93QXhpcyA/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgp
OwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIG1fYmFzZWxpbmVJdGVtc0NhY2hlZCA9
IGZhbHNlOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRHYXAoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6
ZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNp
emUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdmFpbGFibGVTaXplIHx8ICphdmFpbGFibGVTaXpl
ID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYgZ2FwTGVuZ3RoID0gZGlyZWN0aW9uID09IEZv
ckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwpAQCAtMzM3
LDcgKzMzNyw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEl0ZW1PZmZzZXQoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9u
ID09IEZvclJvd3MgPyBtX29mZnNldEJldHdlZW5Sb3dzLmRpc3RyaWJ1dGlvbk9mZnNldCA6IG1f
b2Zmc2V0QmV0d2VlbkNvbHVtbnMuZGlzdHJpYnV0aW9uT2Zmc2V0OwogfQogCi1MYXlvdXRVbml0
IFJlbmRlckdyaWQ6Omd1dHRlcnNTaXplKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3Bhbiwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyR3JpZDo6Z3V0dGVyc1NpemUoY29uc3QgR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0CiB7CiAgICAgaWYgKHNw
YW4gPD0gMSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OmNvbXB1dGVUcmFja1NpemVzRm9ySW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtJiBhbAogICAgIEFTU0VSVChhbGdvcml0aG0udHJhY2tzQXJlV2lkZXJUaGFu
TWluVHJhY2tCcmVhZHRoKCkpOwogfQogCi11bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0Cit1bnNpZ25lZCBSZW5kZXJH
cmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29u
c3QKIHsKICAgICBBU1NFUlQoIWF2YWlsYWJsZVNpemUgfHwgYXZhaWxhYmxlU2l6ZS52YWx1ZSgp
ICE9IC0xKTsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpA
QCAtNDcwLDggKzQ3MCw4IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0
VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgYm9vbCBuZWVk
c1RvRnVsZmlsbE1pbmltdW1TaXplID0gZmFsc2U7CiAgICAgaWYgKCFhdmFpbGFibGVTaXplKSB7
CiAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4U2l6ZSA9IGlzUm93QXhpcyA/IHN0eWxlKCkubG9n
aWNhbE1heFdpZHRoKCkgOiBzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKTsKLSAgICAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZTsKLSAgICAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTWF4U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZU1heFNpemU7CiAgICAgICAgIGlmICht
YXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmIChtYXhTaXplLmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJs
ZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZyk7CkBAIC00ODMsNyArNDgzLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWMKICAgICAgICAgaWYgKCFhdmFpbGFibGVNYXhTaXplICYmICFtaW5TaXplLmlzU3BlY2lmaWVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gYXV0b1JlcGVhdFRyYWNrTGlzdExlbmd0aDsKIAotICAg
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVNaW5TaXplOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZU1pblNpemU7CiAgICAgICAgIGlmIChtaW5T
aXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmICghY29udGFpbmluZ0Jsb2NrQXZh
aWxhYmxlU2l6ZSAmJiBtaW5TaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2Fs
SGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7CkBAIC01OTIsNyAr
NTkyLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y2xhbXBBdXRvUmVwZWF0VHJhY2tzKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHUKIC8vIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpIGRvZXMgYWx3YXlzIHJldHVybiBhIHZhbHVlIGV2ZW4gaWYgd2UgY2Fubm90IHJlc29sdmUg
aXQgbGlrZSB3aGVuCiAvLyBjb21wdXRpbmcgdGhlIGludHJpbnNpYyBzaXplIChwcmVmZXJyZWQg
d2lkdGhzKS4gVGhhdCdzIHdoeSB3ZSBwYXNzIHRoZSByZXNwb25zaWJpbGl0eSB0byB0aGUKIC8v
IGNhbGxlciB3aG8gZG9lcyBrbm93IHdoZXRoZXIgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRo
IGlzIGluZGVmaW5pdGUgb3Igbm90Lgotdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25Hcmlk
KEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBPcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0Cit2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRl
bXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTG9naWNhbFdpZHRoKSBjb25zdAogewogICAgIEdyaWQm
IGdyaWQgPSBhbGdvcml0aG0ubXV0YWJsZUdyaWQoKTsKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0
Q29sdW1ucyA9IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoRm9yQ29sdW1ucywgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGF0aWMgY29uc3QgU3R5bGVD
b250ZW50QWxpZ25tZW50RGF0YSYgY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgp
CiAgICAgcmV0dXJuIG5vcm1hbEJlaGF2aW9yOwogfQogCi1zdGF0aWMgYm9vbCBvdmVycmlkZVNp
emVDaGFuZ2VkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBoZWlnaHQpCitzdGF0aWMgYm9vbCBvdmVycmlkZVNpemVDaGFuZ2VkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
KQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgcmV0dXJuICFj
aGlsZC5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIHx8
IGNoaWxkLm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgIT0g
d2lkdGg7CkBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIGJvb2wgaGFzUmVsYXRpdmVCbG9ja0F4
aXNTaXplKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgY2gKICAgICBy
ZXR1cm4gR3JpZExheW91dEZ1bmN0aW9uczo6aXNPcnRob2dvbmFsQ2hpbGQoZ3JpZCwgY2hpbGQp
ID8gY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsV2lkdGgoKSB8fCBjaGlsZC5zdHlsZSgpLmxvZ2lj
YWxXaWR0aCgpLmlzQXV0bygpIDogY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCk7CiB9
CiAKLXZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlR3JpZEFyZWFMb2dpY2FsU2l6ZShSZW5kZXJCb3gm
IGNoaWxkLCBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aGVpZ2h0KSBjb25zdAordm9pZCBSZW5kZXJHcmlkOjp1cGRhdGVHcmlkQXJlYUxvZ2ljYWxTaXpl
KFJlbmRlckJveCYgY2hpbGQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAogewogICAgIC8vIEJlY2F1c2UgdGhl
IGdyaWQgYXJlYSBjYW5ub3QgYmUgc3R5bGVkLCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdAogICAg
IC8vIHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgpAQCAtMTI2
NCw3ICsxMjY0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGkKICAgICByZXR1cm4gYmFzZWxp
bmUudmFsdWUoKSArIChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6
IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dy
aXRpbmdNb2RlUm9vdCgpIHx8ICFtX2dyaWQuaGFzR3JpZEl0ZW1zKCkgfHwgc2hvdWxkQXBwbHlM
YXlvdXRDb250YWlubWVudCgqdGhpcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xMzAwLDcgKzEzMDAsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNl
bGluZUNoaWxkLT5sb2dpY2FsVG9wKCkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFz
ZWxpbmUoKTsKIH0KQEAgLTE1NjgsNyArMTU2OCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6
Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwK
ICAgICBlbHNlIHsKICAgICAgICAgZW5kID0gcG9zaXRpb25zW2VuZExpbmVdOwogICAgICAgICAv
LyBUaGVzZSB2ZWN0b3JzIHN0b3JlIGxpbmUgcG9zaXRpb25zIGluY2x1ZGluZyBnYXBzLCBidXQg
d2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoZW0gZm9yIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZC4KLSAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZUZvckd1dHRlcnMgPSBhdmFp
bGFibGVTcGFjZUZvckd1dHRlcnMoZGlyZWN0aW9uKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVTaXplRm9yR3V0dGVycyA9IGF2YWlsYWJsZVNwYWNlRm9yR3V0
dGVycyhkaXJlY3Rpb24pOwogICAgICAgICBpZiAoZW5kTGluZSA+IDAgJiYgZW5kTGluZSA8IGxh
c3RMaW5lKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZ3JpZC5uZWVkc0l0ZW1zUGxhY2VtZW50
KCkpOwogICAgICAgICAgICAgZW5kIC09IGd1dHRlcnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCBl
bmRMaW5lIC0gMSwgMiwgYXZhaWxhYmxlU2l6ZUZvckd1dHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZWZiMTA2NDMzYjQ3MzUwZjFiMzE5YzgzZjA2YWY0ZDRm
MjBlYWM4OS4uOGMxMTExMjNmOTM4YTM5ZmVmZDRjODMwOTRmNDliNmUzYzI5MmMyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFN0YXJ0Rm9yRGlyZWN0aW9uKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5leHBsaWNpdEdy
aWRTdGFydChkaXJlY3Rpb24pOyB9CiAKICAgICAvLyBSZXF1aXJlZCBieSBHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uIEtlZXAgdGhlbSB1bmRlciBjb250cm9sLgotICAgIExheW91dFVuaXQgZ3V0
dGVyc1NpemUoY29uc3QgR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVT
aXplKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGd1dHRlcnNTaXplKGNvbnN0IEdyaWQmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3Bhbiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKICAgICBMYXlv
dXRVbml0IGdyaWRJdGVtT2Zmc2V0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAK
LSAgICB2b2lkIHVwZGF0ZUdyaWRBcmVhTG9naWNhbFNpemUoUmVuZGVyQm94JiwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gd2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7Cisg
ICAgdm9pZCB1cGRhdGVHcmlkQXJlYUxvZ2ljYWxTaXplKFJlbmRlckJveCYsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBj
b25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmKSBjb25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBS
ZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcywgQWxsb3dlZEJhc2VMaW5lID0gQm90aExpbmVzKSBj
b25zdDsKIApAQCAtOTYsMTIgKzk2LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmQWxpZ25t
ZW50Q2hhbmdlZFRvU3RyZXRjaChHcmlkQXhpcywgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlckJveCYpIGNvbnN0Owog
ICAgIGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRGcm9tU3RyZXRjaChHcmlkQXhpcywgY29uc3Qg
UmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0
IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
U3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIGJvb2wgZXhwbGljaXRHcmlkRGlkUmVzaXpl
KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgYm9vbCBuYW1lZEdyaWRMaW5lc0RlZmlu
aXRpb25EaWRDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAotICAgIHVuc2lnbmVk
IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBP
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKKyAgICB1bnNpZ25lZCBj
b21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKIAogICAgIHVuc2ln
bmVkIGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2ln
bmVkIGF1dG9SZXBlYXRUcmFja3MpIGNvbnN0OwogCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChjb25zdCBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0mKSBjb25zdDsKIAotICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpIGNvbnN0OworICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0
b3IoR3JpZCYpIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25z
dDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNv
bnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwpAQCAtMTcwLDE1ICsxNzAsMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJnaW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVy
Qm94Jik7CiAKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0lubGluZUJhc2Vs
aW5lQWxpZ25lZENoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5p
dCBjb2x1bW5BeGlzQmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IHJvd0F4aXNCYXNlbGluZU9mZnNldEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG5v
bkNvbGxhcHNlZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIHVu
c2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWQmKSBj
b25zdDsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIENvbnRlbnRBbGlnbm1lbnRE
YXRhIG1fb2Zmc2V0QmV0d2VlbkNvbHVtbnM7CiAgICAgQ29udGVudEFsaWdubWVudERhdGEgbV9v
ZmZzZXRCZXR3ZWVuUm93czsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gq
LCBPcHRpb25hbDxzaXplX3Q+PiBPdXRPZkZsb3dQb3NpdGlvbnNNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6b3B0aW9uYWw8c2l6ZV90Pj4gT3V0T2ZGbG93
UG9zaXRpb25zTWFwOwogICAgIE91dE9mRmxvd1Bvc2l0aW9uc01hcCBtX291dE9mRmxvd0l0ZW1D
b2x1bW47CiAgICAgT3V0T2ZGbG93UG9zaXRpb25zTWFwIG1fb3V0T2ZGbG93SXRlbVJvdzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYmVhNDYzYjk5ZWY3
MjgzNDA0MTI5MGRmM2EzOWM0OWE2YjI4MTQ2Yi4uNmRiNGU5ZGFmOWRlYzJiZGIzMWI1NWMyNDE4
ZTNlYzFjOTM2NTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0yNjcsNyArMjY3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWwKICAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChzaG91bGRDb21wdXRl
UHJlZmVycmVkKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckltYWdlOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoKSBjb25zdAogewog
ICAgIGlmIChzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggYmFkMGFkZDA0NmJiOTI1YTlm
MmZjYmJkNjU3ZTA1YThiNmFlMTAyMS4uOGNkYTRmZjJiMWNlMjY0OGZlOGIyMjQ3Mzk2YjZiOTE0
NTQ3MjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEzNiw3
ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHMgfHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAg
IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVm
ZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
VXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBl
c3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1MjliMWM2NzA4OTQ4MDllMjc4Yzc1ZjZlZjNk
YmQ0Zjc0NzI5Mjk1Li42NWZkNzc4ODc3YWJhYWViNGI1ZDAyNTc4MjhmNTk2ZjUyZWYxZWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTI5LDcgKzky
OSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjb21wdXRlVmlzaWJsZVJlY3RVc2luZ1Bh
aW50T2Zmc2V0KGNvbnN0IExheW91dFJlY3QmIHJlCiAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVySW5saW5lOjpjb21wdXRlVmlzaWJsZVJl
Y3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJJbmxpbmU6OmNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgLy8gUmVwYWludCBvZmZzZXQgY2FjaGUgaXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxh
dGl2ZSByZXBhaW50aW5nCiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0
KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpICYmICFjb250YWluZXIgJiYgIWNvbnRleHQu
b3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNp
dmVJbnRlcnNlY3Rpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmlu
ZGV4IGEyZmM4MTNhM2Q3YWM5ZTg3NDc4OGY5YmVhYTEyZjRjNDUxYTdjMjguLjI1MmUxOTg4ODE5
YjJkN2M0MDExNGI2NjBlOWNiY2Y3ZTc2ZmZjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIExheW91dFJl
Y3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNv
bnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5
b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJs
ZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVWaXNpYmxl
UmVjdFVzaW5nUGFpbnRPZmZzZXQoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogCiAgICAgdm9p
ZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCog
d2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMTg1ZjZjZjZhOWE5M2ZlODA3OWVjNDM1YzZlYTQ2YjE2Zjc4YjhiZC4u
YzEzMzRlZWE4MGZkMmNhNjEzYWU1YjVkY2NiMGIxOWE1ZjVkYjhkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MDczLDcgKzQwNzMsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBS
ZW5kZXJMYXllciogY29udAogCiAgICAgLy8gQ2hlY2sgZm9yIGhpdCB0ZXN0IG9uIGJhY2tmYWNl
IGlmIGJhY2tmYWNlLXZpc2liaWxpdHkgaXMgJ2hpZGRlbicKICAgICBpZiAobG9jYWxUcmFuc2Zv
cm1TdGF0ZSAmJiByZW5kZXJlcigpLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFj
a2ZhY2VWaXNpYmlsaXR5OjpIaWRkZW4pIHsKLSAgICAgICAgT3B0aW9uYWw8VHJhbnNmb3JtYXRp
b25NYXRyaXg+IGludmVydGVkTWF0cml4ID0gbG9jYWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+IGludmVydGVkTWF0cml4ID0gbG9jYWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CiAgICAgICAgIC8vIElmIHRoZSB6LXZlY3RvciBv
ZiB0aGUgbWF0cml4IGlzIG5lZ2F0aXZlLCB0aGUgYmFjayBpcyBmYWNpbmcgdG93YXJkcyB0aGUg
dmlld2VyLgogICAgICAgICBpZiAoaW52ZXJ0ZWRNYXRyaXggJiYgaW52ZXJ0ZWRNYXRyaXgudmFs
dWUoKS5tMzMoKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NzIsNyAr
NDY3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKQog
ICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRSZWN0YW5nbGUocmVjdCk7CiB9CiAKLWJvb2wgUmVu
ZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91
bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3QgT3B0aW9uYWw8
TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94KSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6
aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91
dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCkgY29uc3QKIHsKICAgICAvLyBBbHdheXMgZXhhbWlu
ZSB0aGUgY2FudmFzIGFuZCB0aGUgcm9vdC4KICAgICAvLyBGSVhNRTogQ291bGQgZWxpbWluYXRl
IHRoZSBpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkgY2hlY2sgaWYgd2UgZml4IGJhY2tncm91
bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVyVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCA5NTJhZTRkM2Y3ZWE2MGE5Y2JjYjY4MWQ2NzJmZjUwMjkwZGUx
NmJhLi5jOWFmYzFlMWJkMjEwOTkwYjAzMTY5MTUwNDRmNDJlMmQ2NzBhOWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlbmRlckxheWVyKiBwYWludE9yZGVyUGFyZW50KCkgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXllclJlcGFpbnRSZWN0cz4gcmVwYWludFJlY3RzKCkgY29uc3QKKyAgICBzdGQ6Om9w
dGlvbmFsPExheWVyUmVwYWludFJlY3RzPiByZXBhaW50UmVjdHMoKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKG1fcmVwYWludFJlY3RzVmFsaWQpCiAgICAgICAgICAgICByZXR1cm4gbV9yZXBh
aW50UmVjdHM7CkBAIC02NzIsNyArNjcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcENyb3Nz
ZXNQYWludGluZ0JvdW5kYXJ5KCkgY29uc3Q7CiAKICAgICAvLyBQYXNzIG9mZnNldEZyb21Sb290
IGlmIGtub3duLgotICAgIGJvb2wgaW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25z
dCBPcHRpb25hbDxMYXlvdXRSZWN0PiYgY2FjaGVkQm91bmRpbmdCb3ggPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OworICAgIGJvb2wgaW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
bGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICBlbnVtIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZyB7CiAgICAgICAg
IEluY2x1ZGVTZWxmVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKQEAgLTc5
Niw4ICs3OTYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygp
IGNvbnN0OwogCiAgICAgLy8gTGF5ZXJzIHdpdGggdGhlIHNhbWUgU2Nyb2xsaW5nU2NvcGUgYXJl
IHNjcm9sbGVkIGJ5IHNvbWUgY29tbW9uIGFuY2VzdG9yIHNjcm9sbGVyLiBVc2VkIGZvciBhc3lu
YyBzY3JvbGxpbmcuCi0gICAgT3B0aW9uYWw8U2Nyb2xsaW5nU2NvcGU+IGJveFNjcm9sbGluZ1Nj
b3BlKCkgY29uc3QgeyByZXR1cm4gbV9ib3hTY3JvbGxpbmdTY29wZTsgfQotICAgIE9wdGlvbmFs
PFNjcm9sbGluZ1Njb3BlPiBjb250ZW50c1Njcm9sbGluZ1Njb3BlKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50c1Njcm9sbGluZ1Njb3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdT
Y29wZT4gYm94U2Nyb2xsaW5nU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2JveFNjcm9sbGluZ1Nj
b3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdTY29wZT4gY29udGVudHNTY3JvbGxp
bmdTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTY3JvbGxpbmdTY29wZTsgfQogCiAg
ICAgYm9vbCBwYWludHNXaXRoVHJhbnNwYXJlbmN5KE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBw
YWludEJlaGF2aW9yKSBjb25zdAogICAgIHsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGNoaWxkIGxheWVycyB0aGF0IGNhbm5vdCBjcmVh
dGUgc3RhY2tpbmcgY29udGV4dHMgYW5kIGFwcGVhciBpbiBub3JtYWwgZmxvdyBvcmRlci4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fbm9ybWFsRmxvd0xpc3Q7
CiAKLSAgICAvLyBPbmx5IHZhbGlkIGlmIG1fcmVwYWludFJlY3RzVmFsaWQgaXMgc2V0IChPcHRp
b25hbDw+IG5vdCB1c2VkIHRvIGF2b2lkIHBhZGRpbmcpLgorICAgIC8vIE9ubHkgdmFsaWQgaWYg
bV9yZXBhaW50UmVjdHNWYWxpZCBpcyBzZXQgKHN0ZDo6b3B0aW9uYWw8PiBub3QgdXNlZCB0byBh
dm9pZCBwYWRkaW5nKS4KICAgICBMYXllclJlcGFpbnRSZWN0cyBtX3JlcGFpbnRSZWN0czsKIAog
ICAgIC8vIE91ciBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mZnNldC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZmRkZTA0MGVm
MWVkMjEzZDNiMTUzZjNjMGVmMjE4NDI0NmJhYTBjMi4uOGNiZWJkMzJhMTgwNDVhZWU5NDE1NWJl
OWQ5YmYwNzJhYzAwZmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTExOTYsOSArMTE5Niw5IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXIudmFsdWUoKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFyZW50R3JhcGhpY3NMYXllcjsKLSAgICBPcHRp
b25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFNpemU+IG1fZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbVBhcmVudEdyYXBoaWNzTGF5ZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKICAgICAK
ICAgICBjb25zdCBSZW5kZXJMYXllciYgbV9yZW5kZXJMYXllcjsKICAgICBjb25zdCBSZW5kZXJM
YXllciogbV9jb21wb3NpdGluZ0FuY2VzdG9yOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyKiBjb21w
b3NpdGVkQW5jZXN0b3IpCiAgICAgICAgIG1fY29udGVudHNDb250YWlubWVudExheWVyLT5zZXRT
aXplKHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC5zaXplKCkpOwogICAgIH0KIAotICAgIGF1dG8g
Y29tcHV0ZUFuaW1hdGlvbkV4dGVudCA9IFsmXSAoKSAtPiBPcHRpb25hbDxGbG9hdFJlY3Q+IHsK
KyAgICBhdXRvIGNvbXB1dGVBbmltYXRpb25FeHRlbnQgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IHsKICAgICAgICAgTGF5b3V0UmVjdCBhbmltYXRlZEJvdW5kczsKICAgICAg
ICAgaWYgKGlzUnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uICYmIG1fb3duaW5n
TGF5ZXIuZ2V0T3ZlcmxhcEJvdW5kc0luY2x1ZGluZ0NoaWxkcmVuQWNjb3VudGluZ0ZvclRyYW5z
Zm9ybUFuaW1hdGlvbnMoYW5pbWF0ZWRCb3VuZHMsIFJlbmRlckxheWVyOjpJbmNsdWRlQ29tcG9z
aXRlZERlc2NlbmRhbnRzKSkKICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoYW5pbWF0ZWRC
b3VuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAppbmRleCA0MTNhNmUwZjA0Zjg1YzdkNmMwZWQ3ODJhZTJiZGI3ZjU0OTMxZTM2
Li5jMDM2ZDg1ODNiMzNiY2Q3OTU2MjAyMzUxZTM0ZTkxZDdmMDE3ZWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmlu
Z0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBz
dHJ1Y3QgU2Nyb2xsaW5nVHJlZVN0YXRlIHsKLSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+
IHBhcmVudE5vZGVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gcGFyZW50
Tm9kZUlEOwogICAgIHNpemVfdCBuZXh0Q2hpbGRJbmRleCB7IDAgfTsKICAgICBib29sIG5lZWRT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNVcGRhdGUgeyBmYWxzZSB9OwogfTsKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlRXZlbnRSZWdpb25z
KCkKICNlbmRpZgogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBmcmFtZUhv
c3RpbmdOb2RlRm9yRnJhbWUoRnJhbWUmIGZyYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Ny
b2xsaW5nTm9kZUlEPiBmcmFtZUhvc3RpbmdOb2RlRm9yRnJhbWUoRnJhbWUmIGZyYW1lKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSB8fCAhZnJhbWUudmlldygpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMjMzNiw3ICsyMzM2LDcgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZsYWdzIGZsYWdzKQogICAgIHJldHVybiBsYXll
clRyZWVUZXh0OwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cGxhdGZvcm1MYXllclRyZWVBc1RleHQoRWxlbWVudCYgZWxlbWVudCwgT3B0aW9uU2V0PFBsYXRm
b3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+IGZsYWdzKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1MYXllclRyZWVBc1RleHQoRWxlbWVudCYgZWxl
bWVudCwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+IGZsYWdzKQogewog
ICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNv
bXBvc2l0b3IgIiA8PCB0aGlzIDw8ICIgcGxhdGZvcm1MYXllclRyZWVBc1RleHQiKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDU3M2Q1YjAxOGVlOTllNjM1M2VmYTU5NzdiMmYzMTA4MzY0ZDg5MDQuLmQ2YmJmMmYzODc5ZTFl
OTUzOTMzNGM5OWFiMWJiOTE4YWU1ZTJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBj
b25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJU
cmVlRmxhZ3MgPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTdHJpbmc+IHBsYXRm
b3JtTGF5ZXJUcmVlQXNUZXh0KEVsZW1lbnQmLCBPcHRpb25TZXQ8UGxhdGZvcm1MYXllclRyZWVB
c1RleHRGbGFncz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBw
bGF0Zm9ybUxheWVyVHJlZUFzVGV4dChFbGVtZW50JiwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJU
cmVlQXNUZXh0RmxhZ3M+KTsKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgZmxvYXQgY29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhj
b25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOWQyZDY4ODMz
MDkxOWY0ZmU4YjFmMzNlNDcyZTcwZGVlNzAwZDZlNC4uOTlkYjY2NjYxMGY3Nzg1YzY0ZWU1OWVi
ZjRhMmJkZTM4NTZiNjIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNv
bnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3RzKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5
ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3Rz
KCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0
cygpIDogc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXggNDlmMThhMTE5OWEyZDc4YTUzZGRkNWM2YWYz
ZDdmZjhkYzViMTkzZC4uZDExOGRjODFhNmE3YzYwYmI0M2IyNzFjNzM1YjIxZDY2OThjODcxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkUGxhY2VWZXJ0
aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5ZXJSZXBhaW50
UmVjdHM+IGxheWVyUmVwYWludFJlY3RzKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXll
clJlcGFpbnRSZWN0cz4gbGF5ZXJSZXBhaW50UmVjdHMoKSBjb25zdDsKIAogICAgIGJvb2wgc3Rh
cnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IEtl
eWZyYW1lTGlzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYW5pbWF0aW9uUGF1c2VkKGRvdWJsZSB0
aW1lT2Zmc2V0LCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4
IGNkZTQ1NzFmZDQ5NjRlY2Y1YTc1OGU4YmEwOTAxZDc3ZjAxYzI3ZWEuLmI0MGQwYjg5MWQyNGM5
YmJkMWZjYTkzZjQ0NzdmN2VkNThlYzNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIwNSw3ICsyMDUs
NyBAQCBib29sIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVzZXNBc3luY1Njcm9sbGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuY29tcG9zaXRvcigpLnVzZUNvb3JkaW5hdGVkU2Ny
b2xsaW5nRm9yTGF5ZXIobV9sYXllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYTo6c2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9u
PiBwb3NpdGlvbikKK3ZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0UG9zdExheW91
dFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+IHBvc2l0aW9uKQog
ewogICAgIG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uID0gcG9zaXRpb247CiB9CkBAIC00ODIs
NyArNDgyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNj
cm9sbGluZ05vZGVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuYmFja2luZygpLT5zY3Jv
bGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZyk7CiB9
CiAKLWJvb2wgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNj
cm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIFJlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgaWYgKCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRh
YmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MzgsNyArMTczOCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6cGFuU2Nyb2xsRnJvbVBvaW50KGNvbnN0IEludFBv
aW50JiBzb3VyY2VQb2ludCkKICAgICBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGFkanVzdGVkU2Nyb2xs
RGVsdGEoZGVsdGEpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFu
Z2VPcHRpb25zJiBvcHRpb25zLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpCitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9s
bFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFs
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KQogewogICAgIEFTU0VSVCht
X2xheWVyLmFsbG93c0N1cnJlbnRTY3JvbGwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGFlNDcxOTkzNzIz
ZGY4YWYwOTdmZDUwOTc2OTg5OGI4N2U3NTZiNDAuLjE4MDBkOGZkMzI5YzI0N2U0ZTA1ZTMyYjc1
OGIxOGExMzg2OTVjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnJlZ2lzdGVyQXNUb3VjaEV2ZW50TGlzdGVuZXJGb3JTY3JvbGxpbmcoKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xs
UG9zaXRpb24+KTsKKyAgICB2b2lkIHNldFBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbihzdGQ6Om9w
dGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRTY3JvbGxQ
b3NpdGlvbklmTmVlZGVkKCk7CiAKICAgICBpbnQgc2Nyb2xsV2lkdGgoKSBjb25zdDsKQEAgLTE0
Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQogICAgIFNjcm9sbGFibGVBcmVh
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBoYW5k
bGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CisgICAgYm9vbCBoYW5kbGVXaGVl
bEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKICAgICBib29sIGlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKICAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkg
Y29uc3QgZmluYWw7CkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlck92ZXJmbG93U2Nyb2xsKCk7CiAgICAgdm9pZCB1cGRhdGVMYXll
clBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwoKTsKIAotICAgIE9wdGlvbmFsPExheW91dFJl
Y3Q+IHVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
cyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2Fs
RXhwb3NlUmVjdCk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQ
b3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRS
ZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGFkanVzdEZvcklPU0NhcmV0V2hlblNj
cm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5n
OyB9CkBAIC0yODUsNyArMjg1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlbmRlckxheWVyJiBtX2xh
eWVyOwogICAgIFNjcm9sbFBvc2l0aW9uIG1fc2Nyb2xsUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8
U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uOwogCiAgICAg
Ly8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3ZSBoYXZlIGEgcGFpciBvZiBzY3JvbGxiYXJz
LgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyNmJiM2NiZTJmODlmOTM2NDA2NzA3M2JkOGUwYWE1
MDNjOTk3ZmQ4Li4xZGU2OWQ2OTM2ZWE1MDg5ZThlMGU2YzJkMWFjMGQ1ZDQ3NjkxZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKG1f
b3B0aW9uc0NoYW5nZWQpIHsKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwogICAgICAgICBhdXRv
JiBub3JtYWxGb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICBPcHRpb25hbDxG
b250Q2FzY2FkZT4gYm9sZEZvbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+
IGJvbGRGb250OwogICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCku
bGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0OwogICAgICAgICAgICAgV1RG
OjpGdW5jdGlvbjxjb25zdCBGb250Q2FzY2FkZSYoKT4gc2VsZWN0Rm9udCA9IFsmbm9ybWFsRm9u
dF0gKCkgLT4gY29uc3QgRm9udENhc2NhZGUmIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCmluZGV4IDlmOTNkMThlNDFkYzljNzNiOWU1OTYyOTU5ZTYwNmE1NWVmMGFk
MDEuLmNhYmVjMjg4MzkyZTcxZDFmMjFkOWVkZGI2YTZjNjQxZWMyOWIyYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTgwLDggKzE4MCw4IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fb3B0aW9uc1dpZHRoOwogICAgIGludCBtX2luZGV4T2Zmc2V0OwogCi0g
ICAgT3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1Rv
cEFyZWE7Ci0gICAgT3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ0JvdHRvbUFyZWE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4g
bV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhOwogCiAgICAg
UmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCmluZGV4IGRkOWM5ZDNlMDIzYjc4NWZmN2NhNTcwNzU4ODNjMDcx
NmM4OTEzZTkuLmJhMjJhNDJmZWM3MTllY2IxZmRmMWNlODU2MWMwOGNkZDRlNThjZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtMzEwLDcgKzMx
MCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmV4cGxpY2l0VmFsdWVDaGFuZ2VkKCkKICAgICAg
ICAgaXRlbS0+dXBkYXRlVmFsdWUoKTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0RXhw
bGljaXRWYWx1ZShPcHRpb25hbDxpbnQ+IHZhbHVlKQordm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0
RXhwbGljaXRWYWx1ZShzdGQ6Om9wdGlvbmFsPGludD4gdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1
ZSkgewogICAgICAgICBpZiAoIW1fdmFsdWVXYXNTZXRFeHBsaWNpdGx5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAppbmRleCBkNmQ5YjNlNzJiMTAwYzFkMjZmOTNh
ZDNmYTBiMWI3ZjFlYjcxZGU5Li44NGMyMmEwMTgyYzQyYjIwZjljOGViODVhMjE2MTFmNjZiZGQz
ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDAs
OCArNDAsOCBAQCBwdWJsaWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVWYWx1ZSgpOwogCi0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZVdhc1NldEV4cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9
Ci0gICAgdm9pZCBzZXRFeHBsaWNpdFZhbHVlKE9wdGlvbmFsPGludD4pOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4
cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9CisgICAgdm9pZCBzZXRFeHBsaWNp
dFZhbHVlKHN0ZDo6b3B0aW9uYWw8aW50Pik7CiAKICAgICB2b2lkIHNldE5vdEluTGlzdChib29s
IG5vdEluTGlzdCkgeyBtX25vdEluTGlzdCA9IG5vdEluTGlzdDsgfQogICAgIGJvb2wgbm90SW5M
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9ub3RJbkxpc3Q7IH0KQEAgLTgzLDcgKzgzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV4cGxpY2l0VmFsdWVDaGFuZ2VkKCk7CiAKICAgICBXZWFrUHRyPFJl
bmRlckxpc3RNYXJrZXI+IG1fbWFya2VyOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX3Zh
bHVlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+IG1fdmFsdWU7CiAgICAgYm9vbCBt
X3ZhbHVlV2FzU2V0RXhwbGljaXRseSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25vdEluTGlzdCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApp
bmRleCBhNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjLi4zYzAyYzkwMmFm
NmIzNTIzZWY4Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI5LDggKzEyOSw4IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9u
KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJs
b2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAogICAgIHZvaWQgZ2V0SXRl
bUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiwgYm9vbCYgaXRlbUhh
c0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9uZWVkc09wdGlvbnNXaWR0aFVwZGF0ZTsKICAgICBpbnQgbV9vcHRp
b25zV2lkdGg7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1fbGFzdEFjdGl2ZUluZGV4OworICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBtX2xhc3RBY3RpdmVJbmRleDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gbV9vcHRpb25TdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmUwZWRmM2M1YjMzNjgwMjBiMWIwNTI0NjFjN2FiNWJj
MDc0NmVhLi4wZGNmYmNmNjAxZDM3OGUyODZjODE4MmM0ZmRjODZhMDJkYTM5OTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtOTk0LDcgKzk5NCw3IEBA
IEZsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QKICAgICByZXR1cm4gKmNvbXB1dGVGbG9hdFZpc2libGVS
ZWN0SW5Db250YWluZXIocmVjdCwgcmVwYWludENvbnRhaW5lciwgdmlzaWJsZVJlY3RDb250ZXh0
Rm9yUmVwYWludCgpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyT2JqZWN0Ojpj
b21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBj
b250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJPYmplY3Q6OmNv
bXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1
cm4gcmVjdDsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
ck9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjCiAg
ICAgcmV0dXJuIHBhcmVudC0+Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoYWRqdXN0ZWRS
ZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRl
ck9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiwgVmlzaWJsZVJlY3RDb250ZXh0KSBj
b25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0
VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdAogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiZmE4NDhjNjIzZjEwMzJiODg4OGRlMzdkY2JiN2M1
NWNmZDAwYjFmLi5hYzIyN2I3MzgwNTc2MGRiMGQwMjYwYWNhNTcwOWE4YjFjNjAzMjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02NDYsOCArNjQ2LDggQEAg
cHVibGljOgogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBz
cGFjZSwgY29tcHV0ZSB0aGUgbG9jYXRpb24gaW4gY29udGFpbmVyIHNwYWNlIHdoZXJlIHRoaXMg
cmVjdCBpcyB2aXNpYmxlLAogICAgIC8vIHdoZW4gY2xpcHBpbmcgYW5kIHNjcm9sbGluZyBhcyBz
cGVjaWZpZWQgYnkgdGhlIGNvbnRleHQuIFdoZW4gdXNpbmcgZWRnZS1pbmNsdXNpdmUgaW50ZXJz
ZWN0aW9uLCByZXR1cm4gc3RkOjpudWxsb3B0CiAgICAgLy8gcmF0aGVyIHRoYW4gYW4gZW1wdHkg
cmVjdCBpZiB0aGUgcmVjdCBpcyBjb21wbGV0ZWx5IGNsaXBwZWQgb3V0IGluIGNvbnRhaW5lciBz
cGFjZS4KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0OwotICAgIHZp
cnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
Tm9uRW1wdHlWaXNpYmxlUmVjdFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggNTFkN2M1Yzc4
MzYyYjNhYWUzNzBjZDExZTBhMWY5MjFiNDdiOWUyOC4uYzQwMWNhNTI3ODgyMGZkZDVjYWJkYmMx
M2FlZjE2MzZlODNjN2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCkBAIC01NjMsNyArNTYzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAg
ICAgICAgICAgIC8vIG9mICd3aWR0aCcgaXM6ICh1c2VkIGhlaWdodCkgKiAoaW50cmluc2ljIHJh
dGlvKQogICAgICAgICAgICAgaWYgKGludHJpbnNpY1JhdGlvICYmICgoY29tcHV0ZWRIZWlnaHRJ
c0F1dG8gJiYgIWhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0ludHJpbnNpY0hlaWdodCkgfHwgIWNv
bXB1dGVkSGVpZ2h0SXNBdXRvKSkgewogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZXN0aW1h
dGVkVXNlZFdpZHRoID0gaGFzSW50cmluc2ljV2lkdGggPyBMYXlvdXRVbml0KGNvbnN0cmFpbmVk
U2l6ZS53aWR0aCgpKSA6IGNvbXB1dGVDb25zdHJhaW5lZExvZ2ljYWxXaWR0aChzaG91bGRDb21w
dXRlUHJlZmVycmVkKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQg
PSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+KGVzdGlt
YXRlZFVzZWRXaWR0aCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
Pihlc3RpbWF0ZWRVc2VkV2lkdGgpKTsKICAgICAgICAgICAgICAgICBCb3hTaXppbmcgYm94U2l6
aW5nID0gQm94U2l6aW5nOjpDb250ZW50Qm94OwogICAgICAgICAgICAgICAgIGlmIChzdHlsZSgp
Lmhhc0FzcGVjdFJhdGlvKCkpCiAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZyA9IHN0eWxl
KCkuYm94U2l6aW5nRm9yQXNwZWN0UmF0aW8oKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMg
aW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUhlaWdodEZvclJhdGlvKExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYQogICAgIHJldHVybiBMYXlvdXRVbml0KHJvdW5kKGxvZ2ljYWxXaWR0
aCAvIGFzcGVjdFJhdGlvKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNl
ZFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0
aCkgY29uc3QKIHsKICAgICAvLyAxMC41IENvbnRlbnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJv
cGVydHk6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhl
aWdodAogICAgIGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggNTJjZTY0OWIxM2Y0ZGQyOWRiMGExMjU3
MzgyNjMxMDdmYWZjNmNkNy4uMWM3ZDM1NDdmZDRhZWJiMTk2MmYzZWM3MmY0MTYzNTY3MmZkOGY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMxLDcg
KzMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVy
cmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVz
ZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0
aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExh
eW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiByZXBsYWNlZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCmluZGV4IDFkZjY3ZDA5NzgzZjdm
Y2M1N2MyNmMxNGZkYTAyNjk1YTMzMzZjZTkuLjI1OGJkZTgyMjAyZjc3NDQ3M2Y4NmY5ODJlODY2
NWFiNzgxYmU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5QmFzZTo6cnVi
eVJ1bigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHBhcmVudCgp
KTsKIH0KIAotT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gUmVuZGVyUnVieUJhc2U6Om92ZXJyaWRl
VGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gUmVuZGVyUnVieUJhc2U6Om92ZXJyaWRlVGV4
dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QKIHsK
ICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXggNmYzMmViODJiZTc3ZDk1ZWI5YmZlMWZhNzc2
YzRhYmY5MTNhNjllZS4uMTIyMTY3ZmFjOTk1MTkzMWNiMTg5OTMyMzIzODU2MTQwZWRkYjI3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPFRleHRBbGlnbk1vZGU+IG92ZXJyaWRlVGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRz
V2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0QWxp
Z25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJl
YWspIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJv
dW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBm
bG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1faW5pdGlh
bE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCmlu
ZGV4IGU2NDc0NWI3ODNlMjM3NGY5OTUxOWM1Nzk2ZGUzNDUwNGYwMWZlNzIuLmU0MzkzNzE0YTUw
OGM4ZGNlY2IyNDY4MGNjZjAzODRkZGI2ODQ0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlUZXh0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFJlbmRlclJ1YnlU
ZXh0Ojppc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkLCBjb25zdCBSZW5k
ZXJTdHlsZQogICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpOwogfQogCi1PcHRpb25hbDxUZXh0
QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6b3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShi
b29sKSBjb25zdAorc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6
b3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShib29sKSBjb25zdAogewogICAgIFRleHRBbGln
bk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBpcyBib2d1cyBzaW5jZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwgdmFsdWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCmluZGV4IDQ2NzI2OTRlNzNm
ODdiZTQ0NTMyOTIzOWJmN2E3Y2YyMTAzYTI0OWIuLjYyYzVlZTZlYmI0NmY1MTBlYTFiMjc4M2Iw
YjhhMWM4YTUxNzczZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gb3ZlcnJpZGVU
ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRBbGlnbk1vZGU+IG92ZXJyaWRlVGV4dEFsaWdubWVu
dEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92
ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5k
ZXggZjkyYzkzMTcxZWI5YzJiMDIxOTQxMjY5ZjcwOTQ1YmMzODZjNzkzOS4uZjQ2Zjk4OTIyYjI0
Nzg0MGVjOTY0ZWU2NGYzYTZkNzIzZWRlMjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCkBAIC0xNDk4LDMyICsxNDk4LDMyIEBAIExheW91dFVuaXQgUmVuZGVy
VGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlclRhYmxlOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBUYWJsZXMgYXJlIHNraXBwZWQgd2hlbiBjb21wdXRp
bmcgYW4gaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUuCi0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAot
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIGlzIHRoZSBz
YW1lIGFzIHRoZSAnaW5saW5lLXRhYmxlJyBiYXNlbGluZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NT
IDIuMQogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRoZSBiYXNlbGluZSBvZiBhICd0YWJsZScgb25s
eSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8gVGhpcyBpcyBhbHNvIG5lZWRlZCB0byBwcm9w
ZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBj
aGlsZC4KIAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8IHNob3VsZEFwcGx5TGF5b3V0
Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4o
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIHJl
Y2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAogICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiog
dG9wTm9uRW1wdHlTZWN0aW9uID0gdGhpcy0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7CiAgICAgaWYg
KCF0b3BOb25FbXB0eVNlY3Rpb24pCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAg
aWYgKGF1dG8gYmFzZWxpbmUgPSB0b3BOb25FbXB0eVNlY3Rpb24tPmZpcnN0TGluZUJhc2VsaW5l
KCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pih0b3BOb25FbXB0eVNlY3Rp
b24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSAr
IGJhc2VsaW5lLnZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IEEgdGFibGUgcm93IGFsd2F5cyBo
YXMgYSBiYXNlbGluZSBwZXIgQ1NTIDIuMS4gV2lsbCB0aGlzIHJldHVybiB0aGUgcmlnaHQgdmFs
dWU/Ci0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJUYWJsZTo6b3Zl
cmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyKiBmcmFnbWVudCwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZh
bmN5LCBQYWludFBoYXNlIHBoYXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuaAppbmRleCBhZjU3MzI3Y2ZmYjBjODA5M2I2YjBkYmFhYzM1ZDMwNzI1ZDM2NDhkLi42
M2IxNzk4MGE0YTJkNGM1MTVhY2RjNzlhZjRkMmY5MzdmMDJmNWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjk2LDggKzI5Niw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAKICAgICBSZW5kZXJUYWJsZUNvbCogc2xvd0NvbEVs
ZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFydEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IDBlM2Q1ODRmNmE0ZGExYjEwODk3Y2Q2MDkyOWQxNWIzMGQ1MzQ1MjIuLjRlM2ZmZThjMTQ1NTE1
Nzg3OTA5MjJiMjczODRhMmJkZThjNDQ4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmUKICAgICByZXR1cm4gY29tcHV0ZVJlY3QociwgcmVwYWludENvbnRhaW5lciwgY29u
dGV4dCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4
dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVGFibGVDZWxsOjpjb21w
dXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250
ZXh0KSBjb25zdAogewogICAgIGlmIChjb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJu
IHJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXgg
NzIwYjQ0YWY5NmU3MTc5YmU3YTk1Yjk0OWI1ZTJkZDhiNWFmNWUwNy4uOTA4YjRjNTI0ZGI5NDQ2
MjViOWUyYmNlNDJmMDcxNDdiY2UxN2EwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBi
b3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9
IDApIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0
VW5pdCBib3JkZXJIYWxmTGVmdChib29sIG91dGVyKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJv
cmRlckhhbGZSaWdodChib29sIG91dGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggYzNhMDEzOTZhMmJlZjMxMDZlYTk3
NzFiZGZiOTBmMWY2NGRiNWYwOS4uOTcxMmFlYmExMzA4YjdjMmJmODAxODk3ZGFkMTk3MWFlZjVi
ZDRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKQEAgLTg2NywxNiArODY3LDE2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNh
bGNPdXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVu
ZCgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2dyaWQu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIExheW91dFVuaXQgZmly
c3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAgaWYgKGZpcnN0TGluZUJh
c2VsaW5lKQogICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyBtX3Jvd1Bvc1swXTsK
IAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IHJlc3VsdDsKICAgICBjb25zdCBSb3cmIGZpcnN0Um93ID0gbV9ncmlkWzBdLnJv
dzsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpcnN0Um93LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QmIGNzID0gZmlyc3RSb3cuYXQoaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggZjk2NjdmZmFlYzI4
MDA2YTQyZjg0YWQxY2M1MTA4YjM0YWFiMmYzZi4uODVjYjEyZGI5M2JiMTkyYWZiNjU2YjE2MTRk
MjlmMmRkNjNlZTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGFibGVSb3cq
IGZpcnN0Um93KCkgY29uc3Q7CiAgICAgUmVuZGVyVGFibGVSb3cqIGxhc3RSb3coKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCosIFJl
bmRlclRhYmxlUm93KiByb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggNjQ1YTNlYjVjZTQ5YWQ1YjYyYzI0YzYwZmEzYWQ3ZDQxNjU1MTY3OS4uMTJkM2Vm
ZmNhYTVmZDA2YmFjNmYyMTczZGY1NGUwN2MyNGUwNDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgYm9vbCBpc1NwYWNlID0gZmFsc2U7CiAgICAgYm9vbCBmaXJzdFdvcmQgPSB0
cnVlOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bmV4dEJyZWFrYWJsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxl
OwogICAgIHVuc2lnbmVkIGxhc3RXb3JkQm91bmRhcnkgPSAwOwogCiAgICAgV29yZFRyYWlsaW5n
U3BhY2Ugd29yZFRyYWlsaW5nU3BhY2Uoc3R5bGUpOwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgbWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVy
IDwgMCA/IDIgOiBhZnRlcjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhM
ZWZ0T3ZlcmZsb3c7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZs
b3c7CiAKICAgICBib29sIGJyZWFrTkJTUCA9IHN0eWxlLmF1dG9XcmFwKCkgJiYgc3R5bGUubmJz
cE1vZGUoKSA9PSBOQlNQTW9kZTo6U3BhY2U7CiAgICAgCkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2
b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRX
aWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldpZHRoID0g
MDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuZ3RoKSAmJiBpc1NwYWNlQWNj
b3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CiAgICAgICAgICAgICBmbG9hdCB3OwotICAgICAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAg
aWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdv
cmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwogICAgICAgICAgICAgaWYgKHdv
cmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIFJlbmRlclRl
eHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNl
dDxjb25zdCBGbwogCiAgICAgICAgICAgICAgICAgaWYgKHN1ZmZpeFN0YXJ0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBPcHRp
b25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQpAQCAtMTc3NSw3
ICsxNzc1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENo
YXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKICAgICBzZWN1cmVUZXh0VGltZXIt
PnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCi1TdHJpbmdWaWV3
IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wKSBjb25zdAorU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVk
IHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewogICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0KCkubGVuZ3RoKCkpOwogICAgIEFT
U0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aAppbmRleCAxYjJiZDNlZTQ2NmNiNjU2ZjYzZjkwYzIxNmVmYzlkOWJiNjVmNGVjLi45ZDYxN2M0
N2IxYjZkNzNjZTBhZjEzODFiYWEwYzgzNDA1NjU4NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHVz
ZXNDb21wbGV4TGluZUxheW91dFBhdGgoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgc3RyaW5n
Vmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQg
PSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
ICAgICAKICAgICBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDZhMzdiMGIzZTdkNjYwMmQ1N2U2NWY2NjY1ZTdj
N2E1NTMwYjJhZTEuLjJlOTA1MzRmZmQ4ZGE4M2I3ZGM1NGQ0NmZhN2RlZjE2MzE5YmJiNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC05OCw4
ICs5OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsK
ICAgICB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5s
aW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0
aW9uKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KaW5kZXggMTE4MDc5NGM2M2E4MmUyMGFmZjVlZDM3OTAzMmQyMTBkMWMzYmFk
Yy4uZjJkYTY5ZGM4NjFlODcyOWUzYzRjMmE5OTIyYmYxMzM3YzI1NTM1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTIyOSw5ICsxMjI5LDkgQEAg
Q29sb3IgUmVuZGVyVGhlbWVJT1M6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoT3B0aW9uU2V0PFN0eWxlQ28KICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvcj4mIGNhY2hlZEZvY3VzUmluZ0NvbG9yKCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgY2FjaGVkRm9jdXNSaW5nQ29sb3IoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxDb2xvcj4+IGNvbG9yOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPENvbG9yPj4gY29sb3I7CiAgICAgcmV0
dXJuIGNvbG9yOwogfQogCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9y
PENTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbj4mIGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZv
cm1hdAogICAgIHJldHVybiBjc3NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb25MaXN0OwogfQog
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZVN5
c3RlbUNvbG9ySW5mb3JtYXRpb24oQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uIHN5c3Rl
bUNvbG9ySW5mb3JtYXRpb24sIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCitzdGF0aWMgaW5saW5l
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJ
bmZvcm1hdGlvbihDU1NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24gc3lzdGVtQ29sb3JJbmZv
cm1hdGlvbiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKIHsKICAgICBpZiAoYXV0byBjb2xvciA9
IHd0Zk9iakNNc2dTZW5kPFVJQ29sb3IgKj4oUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSwgc3lzdGVt
Q29sb3JJbmZvcm1hdGlvbi5zZWxlY3RvcikpIHsKICAgICAgICAgQ29sb3Igc3lzdGVtQ29sb3Ig
PSB7IGNvbG9yLkNHQ29sb3IsIENvbG9yOjpGbGFnczo6U2VtYW50aWMgfTsKQEAgLTEzNTcsNyAr
MTM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNT
U1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbihDU1NWCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlE
KENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VF
bGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiBz
eXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1c2VE
YXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKIHsKICAg
ICBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24gbG9jYWxUcmFpdENvbGxlY3Rpb24odXNlRGFy
a0FwcGVhcmFuY2UsIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDIzNjQxZmRmZDE3ZDZlMzBmMTE3YThk
NDU4NmMyYjdjMzMwZGE3MDQuLjM1ZTNmNDgxOTJiZDhhNzNjZmI5OWE4YmZkZWVlN2JlNzQ2NjU4
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUxMyw3ICs1
MTMsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3QW5kQ29tcG9zaXRlZExheWVycygp
CiAgICAgICAgIGNvbXBvc2l0b3IucmVwYWludENvbXBvc2l0ZWRMYXllcnMoKTsKIH0KIAotT3B0
aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWlu
ZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiBh
IGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5k
ZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNDE2NzMxYmJkNTZjNDY2MDA4Yzk1
MjRhY2EyMzgxZTI3ZTJjZTk4Mi4uNmY0ZWFiYWMyMWFhZTFiNTBhZmVlZTA2NGQ4MzQ4NWRkMWNk
NmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3Np
dGVkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkRnJhbWU7IH0KICAgICB2b2lkIHNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JO
b25Db21wb3NpdGVkRnJhbWUoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc0V2ZW50UmVnaW9u
VXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lID0gdmFsdWU7IH0KIAotICAgIE9wdGlvbmFsPExh
eW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29u
dGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21w
dXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludFJvb3RDb250ZW50cygpOwogICAgIHZvaWQgcmVwYWlu
dFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIHZvaWQgcmVwYWlu
dFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PFJlbmRlckJveCo+IG1fcmVuZGVyZXJzTmVlZGluZ0xhenlSZXBhaW50Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+IG1faW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjsKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX3BhZ2VMb2dpY2FsU2l6
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fcGFnZUxvZ2ljYWxTaXplOwogICAg
IGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJMYXllckNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCAw
MDgyNmFhMzJiMzg4YWMwOGZkMjZhMDdhMDAxMDgyNjk5MGZiZjcyLi41ZDk4YTk2MWVhNWVmOTJj
NWU5MDNmNzI2YmJmZGY5ZTZlYWVlZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIGJvb2wg
VGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBv
dGhlcikgY29uc3QKICAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5l
U3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGluZVN0eWxlICYmIGxpbmV0aHJv
dWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKIH0KIAotVGV4dERlY29yYXRpb25Q
YWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiBy
ZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIE9wdGlv
bmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlv
blBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0
TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiBzdHls
ZXMpCiAgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0IH0KICAgICAsIG1fZGVjb3JhdGlvbnMgeyBk
ZWNvcmF0aW9ucyB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRp
b24oKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmgKaW5kZXggMTIzNjZmODVmZTg2ZTg2YzRjN2ZjMzgxZTc3ZjQwMGJmODJiNDZmYi4uMjYy
ZGVkYzdhNWJmYTYwZmI4MTZhMjMxMDM2NjhjNmMxNzM0MjNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERlY29yYXRpb25QYWludGVyIHsKIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0Nv
bnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5k
ZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmLCBPcHRpb25hbDxT
dHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhp
Y3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3Qg
UmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpv
cHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKICAgICAKICAgICB2b2lkIHNldElubGlu
ZVRleHRCb3goY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeyBtX2lubGluZVRl
eHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBp
c0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCmluZGV4IGNhMTIzZDQ4MzQ2NTJh
OWE0Y2FjMWFiMGY3ODdmMGZkNzY0NDk1NGIuLmE3OTRkNGVkZjAyYjQzYTAxZWI3NDBlYzcwMTBj
ZjkyNzIwYzAxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRT
dHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lCiAgICAgcmV0
dXJuIHBhaW50U3R5bGU7CiB9CiAKLVRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9u
UGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgT3B0aW9uYWw8U2hhZG93RGF0YT4mIHNlbGVjdGlvblNoYWRv
dykKK1RleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHlsZShjb25zdCBU
ZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgc3RkOjpvcHRpb25hbDxTaGFkb3dEYXRhPiYgc2VsZWN0aW9uU2hhZG93KQogewogICAgIFRl
eHRQYWludFN0eWxlIHNlbGVjdGlvblBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAppbmRleCA4YTUwMmI4OGYyZTJm
OTM3ZDk2MjkzZjI3YTMxMDFhYjQxYzYzOTUxLi44YmRmNjU3MjNlM2VmZGRlZjQzMjBkNjNiMzll
NWQ2ODcwNmMyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUu
aApAQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUgewogCiBib29sIHRleHRD
b2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xv
ciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcik7CiBUZXh0UGFpbnRTdHlsZSBjb21wdXRl
VGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFBh
aW50SW5mbyYpOwotVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxl
KGNvbnN0IFRleHRQYWludFN0eWxlJiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUGFpbnRJbmZvJiwgT3B0aW9uYWw8U2hhZG93RGF0YT4mIHNlbGVjdGlvblNo
YWRvdyk7CitUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29u
c3QgVGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBQYWludEluZm8mLCBzdGQ6Om9wdGlvbmFsPFNoYWRvd0RhdGE+JiBzZWxlY3Rpb25T
aGFkb3cpOwogCiBlbnVtIEZpbGxDb2xvclR5cGUgeyBVc2VOb3JtYWxGaWxsQ29sb3IsIFVzZUVt
cGhhc2lzTWFya0NvbG9yIH07CiB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBUZXh0UGFpbnRTdHlsZSYsIEZpbGxDb2xvclR5cGUgPSBVc2VOb3JtYWxG
aWxsQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0Nv
bnRleHQuaAppbmRleCBmMzM5ZWY4OTIwYzA0M2YyMjRlMDRlNjk2Y2QyZDcyZDcxZTQ0MzExLi4z
Y2RlNzM2ODVjNDEwZWVhMjdkOWMyMzE1MTQyMjQ1MzA0YjI0NmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBA
QCBzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2UgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFdvcmRU
cmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZs
b2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cykKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250
cykKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6
OkluaXRpYWxpemVkKQogICAgICAgICAgICAgcmV0dXJuIG1fd2lkdGg7CkBAIC04OCw3ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5p
bml0aWFsaXplZCwgSW5pdGlhbGl6ZWQgfTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHls
ZTsKICAgICBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlIG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFj
ZVN0YXRlOjpVbmluaXRpYWxpemVkIH07Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKIH07CiAKIGNsYXNzIEJyZWFraW5nQ29u
dGV4dCB7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBtX2hhbmdzQXRFbmQg
PSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRo
KFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBjb21taXRM
aW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zm
c2V0ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAg
IG1fbGluZUJyZWFrLm1vdmVUbyhvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTU2OSw3
ICs1NjksNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVDaGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hp
dGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdoaXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29s
bGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFy
YWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0
KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVI
eXBoZW5hdGVkTGluZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1T
dWZmaXhMaW1pdCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3Ms
IGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzRml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdo
aXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3BhY2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVC
cmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQp
CitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWdu
ZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lc0xpbWl0LCBpbnQgbWluaW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0
LCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgZmxvYXQgYXZh
aWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwg
aW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewog
ICAgIC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4K
ICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoOwpAQCAtNjQyLDcgKzY0Miw3IEBAIGlu
bGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRz
V2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0g
bGFzdFNwYWNlOwogICAgIAogICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAg
IE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CiAgICAgaWYgKGN1cnJlbnRDaGFyYWN0
ZXIgPT0gJyAnKQogICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5n
U3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lk
dGgpCkBAIC03ODIsNyArNzgyLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAg
ICAgIG1pZFdvcmRCcmVhayA9IG1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSArIHdyYXBXICsgY2hh
cldpZHRoID4gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpOwogICAgICAgICB9CiAKLSAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0
QnJlYWthYmxlUG9zaXRpb24oKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4
dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOwog
ICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0gV2hp
dGVTcGFjZTo6UHJlICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5m
by5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxlUG9z
aXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3Jkcywg
YnJlYWtBbnl3aGVyZSkKICAgICAgICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVu
czo6Tm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1lTm9kZSgpICE9IHNvZnRIeXBoZW4p
KSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWthYmxlUG9zaXRpb24obmV4dEJyZWFr
YWJsZVBvc2l0aW9uKTsKQEAgLTg4NCw3ICs4ODQsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9v
bAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RC
cmVha2luZ1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uID0gbnVsbHB0cjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVhay5vZmZzZXQoKSB8fCBtX2xp
bmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0aW9uID0gbV9saW5lQnJlYWsub2Zmc2V0KCk7CkBAIC04
OTUsNyArODk1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9ICZyZW5kZXJlcjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QnJl
YWtpbmdQb3NpdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPFVD
aGFyPiBjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9z
aXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBsYXN0IGJyZWFraW5n
IHBvc2l0aW9uIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgY29udGV4dCwgd2Ug
bmVlZCB0byBsb29rIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlIHByZXZpb3VzIG5vbi1lbXB0eSB0ZXh0IHJlbmRlcmVyLgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEJyZWFraW5nUG9zaXRpb24udmFsdWUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAK
aW5kZXggZjE2NmYzYjlhYmIyYjNmN2E5NDUyNDE2ZmIwNTYyYjg4YWI0NmI4OS4uYzMzM2Q1ZmM3
Njg5MGI5NjJhMjlmNDlmZTFiZmIzYjEyODIzOTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lk
IE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICAvLyBUaGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBi
ZWhhdmlvci4KICAgICBhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpLT5lbGVtZW50KCk7CiAgICAgaWYgKGlzPE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7
Ci0gICAgICAgIE9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBtYXRoVmFyaWFu
dCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWRNYXRoVmFyaWFu
dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBt
YXRoVmFyaWFudCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWRN
YXRoVmFyaWFudCgpOwogICAgICAgICBpZiAobWF0aFZhcmlhbnQpCiAgICAgICAgICAgICBtX21h
dGhWYXJpYW50ID0gbWF0aFZhcmlhbnQudmFsdWUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGNk
OTZiZDVhN2NjZDFkYjY5Yjg0OWQ2MDcwY2YxMjBmNWZmM2M0N2EuLjE5NTJhZjFhZjkzZmMzNzI3
YzAwZjE4NzEyNDUwODUwYjgzMjQ2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAg
TGF5b3V0VW5pdCB0b1VzZXJVbml0cyhjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIGxlbmd0
aCwgY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICB9CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgLy8gQnkgZGVmYXVsdCB0aGUgdmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+
IGlzIGFsaWduZWQgb24gdGhlIG1hdGggYXhpcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0
aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hCYXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUg
YmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBhIDx0YWJsZT4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMzVmNjdh
OTI4Y2U1MjQxNmFkMGVkYTI1OWM3ZGJmOTVlZjliZDQzZi4uMmZjOGExNmIxM2IwMDRlOWExZGU1
Y2U0ZDk3N2Y0MjI2Y2RhMTNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1M
U3R5bGU+IG1fbWF0aE1MU3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCBhZjM3NDk0NjFl
ZTI0NjU0NDE4MzUxZDcyMzljMDgzZTZmNTI4YzdkLi5iM2I0MzcyMzRlNTc0OGU2OGQyOGQ3NDE4
ZmVlOTQ4YmE4YWRhYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0
ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgbG9naWNhbFdpZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkpKSkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlm
IChpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgcm91bmRmKHN0YXRpY19j
YXN0PGZsb2F0PihmcmFjdGlvbkFzY2VudCgpKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCAyN2YxNGQ3
NWYwZTI4ODgzZWNhM2YwMTIxOTdmMTc2YWY5ZTFjYmUxLi5mODc1NjI3ZjQ4YTI1NWRkMTcxY2U5
MTM4NjgzYWE2MTc5ZDE5MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAg
ICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCmluZGV4IGE0MTlhOWQyZmI3NDE4MDE2Yzg1NmViMjRlMDdmY2QyM2VkNjg1NTEuLmZmNDFj
NTA4MTBjNmM5OTAwOTY0NjIyMTYwMTUwNTM1ZDAwYzkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGlj
YWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERl
cHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhP
cGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1P
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3Io
KSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChz
dGF0aWNfY2FzdDxmbG9hdD4obV9tYXRoT3BlcmF0b3IuYXNjZW50KCkgLSB2ZXJ0aWNhbFN0cmV0
Y2hlZE9wZXJhdG9yU2hpZnQoKSkpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGZlODlhYTFhZjI2YTA3
YzAxNjAzZmUxNzljNzJlODlmNjk3Mjc4NjkuLjUyMTgxYjQ2ZDBjZGJlN2I0NWNmZDdmOWYzMWZi
YWEyNzEyZTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJhdG9yKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAg
ICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJNYXRoTUxPcGVyYXRvcio+KHRoaXMpOyB9CiAK
ICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQ
YWRkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQ
YWRkZWQuY3BwCmluZGV4IDc5MGFmN2FhMzZkZWE2MjE0OGNhMzllN2U1MDNlM2NhMzJiYzJjYTgu
LjFkNGYwYTVhNTBhN2E1M2QxZmU2Nzc2MjljNjljOWNlODdmZjUxOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAK
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFBhZGRlZDo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhN
TFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIC8vIFdlIHRyeSBhbmQg
Y2FsY3VsYXRlIHRoZSBiYXNlbGluZSBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hp
bGQuCiAgICAgTGF5b3V0VW5pdCBhc2NlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCA5M2IzNjZlY2ZlNjJhZTcw
ZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2Li43NDg4NWYzNGEzYTZhMDVmYTk3Yzk5MzlkM2VhNWM4
NGM2YTFhNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFBhZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgTGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAKaW5kZXggODk3NTc4MjRlMzA5YjIxMDNhZGM3YWI5YTg3ZWE2Nzk2ODFhNTgzMS4uYTE2
NTBhMThiYmNmMWQ3YjcxZGIzNmVlMjg1NGYwZjEwMzRjNjBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTEg
KzUyLDExIEBAIE1hdGhNTFJvd0VsZW1lbnQmIFJlbmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxSb3c6
OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFz
ZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0
aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFz
ZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCmluZGV4IDE2OTU2NDI5MDUzZWQ2NGZj
N2Y4NzA4OTA0YzA5OGQyNGQyMzA0NDIuLjM3YmI2MGFhNzY3NTJkZTEyNjQwNjE5OTgxNDk3Njgz
MDFlODk1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBzdHJldGNoVmVydGljYWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbigpOwogICAgIHZvaWQg
Z2V0Q29udGVudEJvdW5kaW5nQm94KExheW91dFVuaXQmIHdpZHRoLCBMYXlvdXRVbml0JiBhc2Nl
bnQsIExheW91dFVuaXQmIGRlc2NlbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggNGIwMWVj
MjI2YWUzNmNjNTk1NDhjZjkyN2NlOGZjMTZhM2VjMWIzNy4uNjA5NDM4OGEzMWIyYzFkMWE5MjU4
OTIyOTcyZTBmMTFkOGM5YThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJl
bmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp1bmVtYmVsbGlzaGVkT3Bl
cmF0b3IoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oYmFz
ZSktPnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwogfQogCi1PcHRpb25hbDxSZW5kZXJNYXRoTUxT
Y3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVB
bmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpCitzdGQ6Om9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlw
dHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuZEdl
dFJlZmVyZW5jZUNoaWxkcmVuKCkKIHsKICAgICAvLyBBbGwgc2NyaXB0ZWQgZWxlbWVudHMgbXVz
dCBoYXZlIGF0IGxlYXN0IG9uZSBjaGlsZC4KICAgICAvLyBUaGUgZmlyc3QgY2hpbGQgaXMgdGhl
IGJhc2UuCkBAIC0xNDYsNyArMTQ2LDcgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6
UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9mU2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2Ny
aXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZl
biA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxsb3B0
OyAvLyBXZSB2ZXJpZnkgMmIpLgorICAgICAgICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4g
PyBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxs
b3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgogICAgIH0KICAgICB9CiAKQEAgLTQ2NiwxMSArNDY2LDEx
IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3go
KTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogICAgIHJldHVy
biBMYXlvdXRVbml0IHsgcm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2lj
YWxUb3AoKSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCA5ZDIzYWJlMzk0MGY1MmZmNmVjNjRmM2Rl
NzhiZjFkM2I2Mzk3MmY2Li5hZGI5MmZlNDg0YmYyMGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1MzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaApAQCAtNTAsMTQgKzUwLDE0IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAg
IHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsKICAg
ICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CiAgICAgICAgIFJlbmRlckJveCog
Zmlyc3RQb3N0U2NyaXB0OwogICAgICAgICBSZW5kZXJCb3gqIGZpcnN0UHJlU2NyaXB0OwogICAg
IH07Ci0gICAgT3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJl
bmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2YWxp
ZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCk7CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFmdGVy
U2NyaXB0KCk7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVyZW5j
ZUNoaWxkcmVuJik7CiAgICAgc3RydWN0IFZlcnRpY2FsUGFyYW1ldGVycyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmlu
ZGV4IGY5MjQ2NTcxMmRiNzhkZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IuLmY0YTNjZDhhZTBk
ZTIyNmNiZGZkMzQwODVkZDY4MGRkZmNhZGNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwogICAgIGdl
dFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggNzI1ZDRmMjBh
MzI1YWJjYTFmZGM4NGMwNzM1NWIxMzJkNTY1NmIxNC4uMTk1OTI4NjQ5YTUxOWEwOWYxMmZjYmQ2
ZTg1YzU0Y2FjNTE2NTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFs
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29uc3Q7CiAgICAgdm9p
ZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYg
ZGVwdGgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA1ZjljZmIzYzk3ODhkZDZhM2FjMTQwNjE0MWRl
YjM0NDA1M2JkMTllLi43Y2M5YjdkNDE2MjQ5NTQwMGE1ODVjMTQ1YzQyNzRiZTQ3MzBlNzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVw
ZGF0ZUZyb21FbGVtZW50KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGlydHkoKTsKIH0KIAot
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2lu
dCkgewogICAgICAgICBhdXRvIG1hdGhWYXJpYW50R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwg
bV9tYXRoVmFyaWFudElzTWlycm9yZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IDhjYjIxZWZlZmNkMTM4NTY4ZGQ1
YWQ1MDEzNmZmMmM0ZDk5Yjg0MmIuLmY4MzllZWMwMzUxMjk1ZDg2YzE0MjYyNDMyMDQyODA3Mjg2
Yjc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSA9IHRydWU7CiAg
ICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KLSAgICBP
cHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07
CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3Rk
OjpudWxsb3B0IH07CiAgICAgYm9vbCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAppbmRl
eCAxNDAyNDkxZTA4YWY5NzA0MTI4ZjcxMmUyYThkZGYyMjhkOTMzZWRkLi4wZTMyYmYyNDg2OWJk
YmE4Y2YwYzg1YWVkODM4YjAyY2JlZTlhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaApAQCAtMjYsOCArMjYsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ291bnRlckRpcmVjdGl2ZXMgewotICAgIE9wdGlv
bmFsPGludD4gcmVzZXRWYWx1ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGluY3JlbWVudFZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXNldFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBpbmNyZW1lbnRWYWx1ZTsKIH07CiAKIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAppbmRleCBkMjA0
MTg5ODY3MTkzYzllNDE1ZDc5NWUxMmVjYjQwYzE5MDRlNDY0Li5lNmNjOTYxN2I5MDFiNDJhMGVh
MzQzMjU3YmYxZjhkMTUxZGVlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU9wdGlvbmFsPGludD4gR3JpZFBvc2l0aW9uOjpnTWF4UG9zaXRpb25Gb3JUZXN0
aW5nOworc3RkOjpvcHRpb25hbDxpbnQ+IEdyaWRQb3NpdGlvbjo6Z01heFBvc2l0aW9uRm9yVGVz
dGluZzsKIHN0YXRpYyBjb25zdCBpbnQga0dyaWRNYXhQb3NpdGlvbiA9IDEwMDAwMDA7CiAKIHZv
aWQgR3JpZFBvc2l0aW9uOjpzZXRFeHBsaWNpdFBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBuYW1lZEdyaWRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0dyaWRQb3NpdGlvbi5oCmluZGV4IDEwYTg5OWJjNjc4ODNmNGQ2MTA2NWFiYzMyZjhiZDg0NGQ1
OWM0MjMuLjI1MjdmN2M3M2Y3ZTQzMDY5NTY3ODZiNWU1MThiNjRkZWE0YmFiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heFBvc2l0
aW9uRm9yVGVzdGluZyh1bnNpZ25lZCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIE9wdGlvbmFs
PGludD4gZ01heFBvc2l0aW9uRm9yVGVzdGluZzsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxp
bnQ+IGdNYXhQb3NpdGlvbkZvclRlc3Rpbmc7CiAKICAgICB2b2lkIHNldEludGVnZXJQb3NpdGlv
bihpbnQgaW50ZWdlclBvc2l0aW9uKSB7IG1faW50ZWdlclBvc2l0aW9uID0gY2xhbXBUbyhpbnRl
Z2VyUG9zaXRpb24sIG1pbigpLCBtYXgoKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCAxNDEzNzllZGE0ZjBmYTZkNmUzY2Rm
ZmZmN2FiOTE0ZjViNDIwNTc0Li4zYjdkOWYxZDk2NDkyODRiNzVmODk4ZGYwYzgyY2YyOWQyNTNm
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuaApAQCAtODIsNyArODIsNyBAQCBpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsUGllY2UoSW1hZ2VQ
aWVjZSBwaWVjZSkKICAgICByZXR1cm4gcGllY2UgPT0gTGVmdFBpZWNlIHx8IHBpZWNlID09IFJp
Z2h0UGllY2UgfHwgcGllY2UgPT0gTWlkZGxlUGllY2U7CiB9CiAKLWlubGluZSBPcHRpb25hbDxC
b3hTaWRlPiBpbWFnZVBpZWNlSG9yaXpvbnRhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBp
ZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9PSBUb3BMZWZ0UGllY2UgfHwgcGllY2UgPT0g
VG9wUGllY2UgfHwgcGllY2UgPT0gVG9wUmlnaHRQaWVjZSkKICAgICAgICAgcmV0dXJuIEJveFNp
ZGU6OlRvcDsKQEAgLTkzLDcgKzkzLDcgQEAgaW5saW5lIE9wdGlvbmFsPEJveFNpZGU+IGltYWdl
UGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxT
aWRlKEltYWdlUGllY2UgcGllY2UpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBpbWFn
ZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiB7CiAgICAgaWYgKHBpZWNlID09
IFRvcExlZnRQaWVjZSB8fCBwaWVjZSA9PSBMZWZ0UGllY2UgfHwgcGllY2UgPT0gQm90dG9tTGVm
dFBpZWNlKQogICAgICAgICByZXR1cm4gQm94U2lkZTo6TGVmdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI2YTc3YmEwOTQ1Yjk4MGEz
OGNjM2Y1ZGE1OTI0MzA5YzQwNTBmOTIuLmFjZGRmZDAzMWYyYjI5N2U5NTM1YjI2MmI4NWFiYTdh
NzQ4ZmJmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4
dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgPT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OwogfQogCi1ib29sIFJlbmRlclN0eWxlOjppc0lkZW1w
b3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3Zl
cnJpZGVTdGF0dXMpIGNvbnN0Citib29sIFJlbmRlclN0eWxlOjppc0lkZW1wb3RlbnRUZXh0QXV0
b3NpemluZ0NhbmRpZGF0ZShzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0
YXR1cykgY29uc3QKIHsKICAgICAvLyBSZWZlciB0byA8cmRhcjovL3Byb2JsZW0vNTE4MjYyNjY+
IGZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBob3cgdGhpcyBmdW5jdGlvbiB3YXMgZ2Vu
ZXJhdGVkLgogICAgIGF1dG8gZmllbGRzID0gT3B0aW9uU2V0PEF1dG9zaXplU3RhdHVzOjpGaWVs
ZHM+Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3MuYXV0b3NpemVTdGF0dXMpOwpAQCAtMTkyOCw3
ICsxOTI4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFN0cmV0Y2goRm9udFNlbGVjdGlv
blZhbHVlIHZhbHVlKQogICAgIGZvbnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0
b3IpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRGb250SXRhbGljKE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4gdmFsdWUpCit2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250SXRhbGljKHN0
ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB2YWx1ZSkKIHsKICAgICBGb250U2VsZWN0
b3IqIGN1cnJlbnRGb250U2VsZWN0b3IgPSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwog
ICAgIGF1dG8gZGVzY3JpcHRpb24gPSBmb250RGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMWE3NTYzZDA2MWNlZWI5ZmEz
NmRiNzVhODVkMzhmYjI5ODNjNDAyZi4uOTNkOTU3MWU2ZGU1NTU3YTc2Y2QwNDk1ZDQyNTU5MGI2
YTBmZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdz
IGZvbnRWYXJpYXRpb25TZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigp
LnZhcmlhdGlvblNldHRpbmdzKCk7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgZm9udFdlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpOyB9CiAgICAgRm9u
dFNlbGVjdGlvblZhbHVlIGZvbnRTdHJldGNoKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0
aW9uKCkuc3RyZXRjaCgpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250
SXRhbGljKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCk7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udEl0YWxpYygpIGNvbnN0IHsg
cmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpOyB9CiAKICAgICBjb25zdCBMZW5ndGgm
IHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7
IH0KICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHRBbGlnbk1vZGU+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQpAQCAtNzc5
LDcgKzc3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIFRl
eHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgQXV0b3NpemVTdGF0dXMgYXV0b3Np
emVTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlzSWRlbXBvdGVudFRleHRBdXRvc2l6aW5nQ2Fu
ZGlkYXRlKE9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW1wb3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0
ZShzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIFRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0U2VjdXJpdHk+KG1fcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTZWN1cml0eSk7IH0KQEAgLTk3MSw3ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9udFZhcmlhdGlvblNldHRpbmdzKTsKICAgICB2
b2lkIHNldEZvbnRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKTsKICAgICB2b2lkIHNldEZvbnRT
dHJldGNoKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0gICAgdm9pZCBzZXRGb250SXRhbGljKE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOworICAgIHZvaWQgc2V0Rm9udEl0YWxpYyhzdGQ6Om9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOwogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvciYpOwogICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCA0NDBmNGEz
ZDUyMzJhYWQwMDY2MGQ4YjI4NDE3MTFmM2VhYWNhMmE2Li5iYTU4NGI0MmRmNjM2NjczY2VkNzg0
NzUyNGNhMjg1ZGU3MGY2YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYWRvd0RhdGEuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEo
Y29uc3QgU2hhZG93RGF0YSYgbykKIHsKIH0KIAotT3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93
RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0YSogZGF0YSkKK3N0ZDo6b3B0aW9uYWw8U2hhZG93
RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0YSogZGF0YSkKIHsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCBhZjU5YTQxYWM0NGNjODhjNmNjMjk1
MTIyOWQzMGUzYjE4OGZhMGU3Li5kY2NhMzI1MTM0NGRiMTA0Mjg5MTA5MTgzYTE0Yzg5M2E5ODFl
Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFNoYWRvd0RhdGEoY29uc3QgU2hh
ZG93RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTaGFkb3dEYXRhPiBjbG9uZShjb25zdCBT
aGFkb3dEYXRhKik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhZG93RGF0YT4gY2xvbmUo
Y29uc3QgU2hhZG93RGF0YSopOwogCiAgICAgU2hhZG93RGF0YSYgb3BlcmF0b3I9KFNoYWRvd0Rh
dGEmJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvVGV4dFNpemVBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuY3BwCmluZGV4IDJkZjNiZTA3MjA0MGZkMjAwZDVjNmY2
NzAxNDJlMTEyNWJlZjczZjIuLjA0ZjJiYWZjM2YzOTQzMGI2NWNmM2VlNGM5NjRiNDhkZjlmMTRj
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFk
anVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6
ZUFkanVzdG1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgQXV0b3NpemVTdGF0dXM6OnBy
b2JhYmx5Q29udGFpbnNBU21hbGxGaXhlZE51bWJlck9mTGluZXMoY29uc3QgUmVuZGVyU3R5bGUm
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIG1heEhlaWdodCA9IHN0eWxlLm1h
eEhlaWdodCgpOwotICAgIE9wdGlvbmFsPExlbmd0aD4gaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0aDsK
ICAgICBpZiAobWF4SGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgaGVpZ2h0T3JNYXhIZWlnaHRB
c0xlbmd0aCA9IHN0eWxlLm1heEhlaWdodCgpOwogICAgIGVsc2UgaWYgKHN0eWxlLmhlaWdodCgp
LmlzRml4ZWQoKSAmJiAoIW1heEhlaWdodC5pc1NwZWNpZmllZCgpIHx8IG1heEhlaWdodC5pc1Vu
ZGVmaW5lZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9U
ZXh0VW5kZXJsaW5lT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4
dFVuZGVybGluZU9mZnNldC5oCmluZGV4IDgwN2U0ZGI4Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4
MGFmOTI0OTkuLjk2MWU3YjJkOTMxMmQyYTE5OTBkOGVhYjU2NjkwMzBkYzkzMjVhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZz
ZXQuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9sZW5ndGggPSAw
OwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBtX2xlbmd0aDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtX2xlbmd0aDsKIH07CiAKIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBvZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAppbmRleCA0MzBiNGI5MDM3Y2ZjYmNiNmY3ZjNhZTU5YzViMTNhN2UxYmU0OWQxLi5j
ZDMwOWIyZDkzOWJkNDg1Mjg0NDBkOWRiNWZiMDkxM2ZhMGZiODNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
QEAgLTk4LDE0ICs5OCwxNCBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iagogICAgIHJldHVybiBT
VkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVw
YWludENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJs
ZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNW
R1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoKnRoaXMs
IHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5l
ciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91
dFJlY3Q+IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdElu
Q29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAg
ICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCAzMzUzMmQ5YmVmMDY2OTg2ZWEzZTVmN2Rl
MWUxNmIwZjM5ZGVhZTY1Li4zY2YwNTk5OTZhNTMyNTYyNTA5OTdlZWZhMzlkYzU1NDUxNDJlMTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlz
aWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0
PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBj
b250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29s
IHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMzA0OTY5ZGFlZjY5ZGEzZDdmOTVmYmMzNjk1Zjdj
NDQwNjYwNmZhYy4uNTc1M2UzYjlhM2NiYzIwYWExNmVlMTcyMjgxNThkODlkNGFhNDVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZQogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWlu
dENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHSW5saW5lOjpj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRl
eHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdJbmxp
bmU6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWluZXIs
IGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmgKaW5kZXggZmQ3MmRlODY3OTczZDBmOGE1YWU5ZDcyMzNlZjQ3OWQ5YzcwNzI5Mi4u
YTllOWY5NjZmMWUwN2QxZGU1MWU1ZjdjM2E1ZDk1YTdlNjVkY2NkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkg
Y29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250
ZXh0KSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZp
c2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNv
bnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAK
aW5kZXggYzk1ZTFhMWFmOTRiZWI4YzE5MjA3ZjBmOWM3MWU2YWQ2OTQ3NTNkZi4uZTI4OTczMjQ4
NGNiNWYwMmFhMTliYmIyNmI1NzNhNDM3NmY2MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVj
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWMKICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9y
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoKnRoaXMsIHJlcGFpbnRDb250YWluZXIp
OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29u
dGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RD
b250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNv
bXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwg
Y29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKaW5kZXggMWViODY0NjM5YzgyMGRmMDAyMDMwNDExMDNiODM2Mjg1
ZDM3ZDRhMy4uNjI2MjE4NDQzYzMxZDE3Y2JkNzEzZGViMTM3YmJjNDE5YWU3ZGNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBS
ZW5kZXJFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJlbmRlclNWR01vZGVs
T2JqZWN0KTsKIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RD
b250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVG
bG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZp
bmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICBMYXlv
dXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwKikgY29uc3QgZmlu
YWw7CiAKICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDQ3YjI1YTEwYTcyODY0
OTBiYjUxMTg1NGExYmM0NzJmOGUyOGJhODAuLjNmOTg3MjkxODhhMDE4ODkxOTIxMmNmYjQ4NmZk
ZTkzODFiMGQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBpbnRyaW5zaWNSYXRp
b1ZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnRyaW5zaWNSYXRpb1ZhbHVlOwog
ICAgIGlmICghaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIGludHJpbnNpY1JhdGlv
VmFsdWUgPSBpbnRyaW5zaWNTaXplLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGludHJp
bnNpY1NpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBAIExheW91
dFVuaXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENv
bXB1dGVQcmVmZXJyZWQgc2hvCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGgoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxM
YXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlclNW
R1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB3ZSdyZSBlbWJl
ZGRlZCB0aHJvdWdoIFNWR0ltYWdlIChib3JkZXItaW1hZ2UvYmFja2dyb3VuZC1pbWFnZS88aHRt
bDppbWc+Ly4uLikgd2UncmUgZm9yY2VkIHRvIHJlc2l6ZSB0byBhIHNwZWNpZmljIHNpemUuCiAg
ICAgaWYgKCFtX2NvbnRhaW5lclNpemUuaXNFbXB0eSgpKQpAQCAtMzY4LDcgKzM2OCw3IEBAIExh
eW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
UmVjdChlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRSZWN0KSwgcmVwYWludENvbnRhaW5lciwgY29u
dGV4dCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZs
b2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRl
eHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0
ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkgb3VyIGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2Vw
dCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBvdXIgc2hhZG93LCAKICAgICAvLyBhbmQgdGhl
biBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5kbGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJv
eCBtb2RlbCBiaXRzCkBAIC0zOTQsNyArMzk0LDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5k
ZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2EK
ICAgICAgICAgYWRqdXN0ZWRSZWN0LnVuaXRlKGRlY29yYXRlZFJlcGFpbnRSZWN0KTsKICAgICB9
CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdEluQ29udGFpbmVyID0gUmVuZGVy
UmVwbGFjZWQ6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGVuY2xvc2luZ0ludFJlY3Qo
YWRqdXN0ZWRSZWN0KSwgY29udGFpbmVyLCBjb250ZXh0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiByZWN0SW5Db250YWluZXIgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVZp
c2libGVSZWN0SW5Db250YWluZXIoZW5jbG9zaW5nSW50UmVjdChhZGp1c3RlZFJlY3QpLCBjb250
YWluZXIsIGNvbnRleHQpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCpyZWN0SW5Db250YWlu
ZXIpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDNkZmQyNTdkMjU1NGE2N2MwNDAxZDU1OThm
NGJhOWRlMjJlZDQ2MmEuLmQ0ZTVlMWU0OTViOGI4MmIzZWQxYWNkZGI5NWU2NzI0NjVhZDBkZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQogCiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21w
dXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0g
c3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2Vk
V2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAogICAgIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVy
cmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggMmEzNTMwOTg3ZjQwZGE5N2RhZTQyMWQ1MGVkM2Q0
NjcyNTdkNTA0ZC4uNjRhZmVhNjRiOGFiNjBkMWI2OWU0NmE2ZmVhY2Q3YTA5OTNhZTQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAg
LTE4NSw3ICsxODUsNyBAQCBQYXRoKiBSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVBh
dGgoY29uc3QgUGF0aCogcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNmbwogCiBib29sIFJlbmRlclNW
R1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KEFmZmluZVRyYW5zZm9ybSYgc3Ry
b2tlVHJhbnNmb3JtLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJiBzdGF0ZVNhdmVyKQogewot
ICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0cm9rZVRyYW5zZm9ybS5p
bnZlcnNlKCk7CisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBz
dHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpOwogICAgIGlmICghaW52ZXJzZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC00MjAsNyArNDIwLDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1NoYXBl
OjpjYWxjdWxhdGVTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgaWYgKHN0eWxlKCkuc3Zn
U3R5bGUoKS5oYXNTdHJva2UoKSkgewogICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgp
KSB7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5v
blNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IGludmVyc2UgPSBub25TY2FsaW5nVHJhbnNmb3JtLmludmVyc2UoKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0g
bm9uU2NhbGluZ1RyYW5zZm9ybS5pbnZlcnNlKCkpIHsKICAgICAgICAgICAgICAgICBQYXRoKiB1
c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5nVHJh
bnNmb3JtKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0ID0g
dXNlUGF0aC0+c3Ryb2tlQm91bmRpbmdSZWN0KEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+IHsgW3RoaXNdIChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0
LCBzdHlsZSgpLCAqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcAppbmRleCBmYmU5ZjRmYTlkNjgwYTM3YWU2ZmQzOGNiNjIzMTg0MGQ5YmE2
YmQ5Li4wZjI4MzU4NTc3ZWIwMTY0MTQ2ZGU4ZmRjOWU0YzMwYmE4YjRlYTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTkyLDE1ICs5
MiwxNSBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgIHJldHVybiBTVkdSZW5kZXJTdXBw
b3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5l
cik7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNv
bnN0CiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxv
YXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2li
bGVSZWN0SW5Db250YWluZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRq
dXN0ZWRSZWN0KQogICAgICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRS
ZWN0KTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+
IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAgIHJldHVybiBTVkdS
ZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCBy
ZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCAzMzg4MzFmNDk4ZGY5YTBmYmM0M2YyZWQxM2I3Nzlk
NjcxZDk4NTY0Li41ZTk1Y2IxOTM3MmE3NzUxZjU3NWJjM2RlOThjZGI2ODIwNDQ4NWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzgsOCAr
NzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFs
PExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BB
dCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDcxODUzMjZiNjBj
NDM4MjZjZTUwZmMyNWM0NGQ4OGU1ZDBjMjhiOGUuLjE1NGY1M2Q1MjZlOWZkMjE0MGYxYTAwOTY4
ZjljNWIyMTJlNGJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNjUsNyArNjUsNyBAQCBMYXlvdXRSZWN0IFNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckVsZW1l
bnQmCiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QocmVuZGVyZXIuY29tcHV0ZUZsb2F0
UmVjdEZvclJlcGFpbnQocmVwYWludFJlY3QsIHJlcGFpbnRDb250YWluZXIpKTsKIH0KIAotT3B0
aW9uYWw8RmxvYXRSZWN0PiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVy
T2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkKK3N0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNp
YmxlUmVjdENvbnRleHQgY29udGV4dCkKIHsKICAgICAvLyBFbnN1cmUgb3VyIHBhcmVudCBpcyBh
biBTVkcgb2JqZWN0LgogICAgIEFTU0VSVChyZW5kZXJlci5wYXJlbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmluZGV4IGU4MTU3MDU4
ZDdjNWM0YWE5ODdjYzE0NGVlYjY3M2JlMTY5NmZlOGQuLmY2ZWYyOGYwNzQ5Y2M2ZGMwODExZjQy
NTBjMzI1ZTZiMTY2ZDc3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElt
cG9ydGFudCBmdW5jdGlvbnMgdXNlZCBieSBuZWFybHkgYWxsIFNWRyByZW5kZXJlcnMgY2VudHJh
bGl6aW5nIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIC8gcmVwYWludCByZWN0IGNhbGN1bGF0
aW9ucwogICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIpOwotICAgIHN0YXRpYyBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2li
bGVSZWN0SW5Db250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpW
aXNpYmxlUmVjdENvbnRleHQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVy
LCBSZW5kZXJPYmplY3Q6OlZpc2libGVSZWN0Q29udGV4dCk7CiAgICAgc3RhdGljIGNvbnN0IFJl
bmRlckVsZW1lbnQmIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyRWxlbWVudCYs
IEFmZmluZVRyYW5zZm9ybSAmKTsKICAgICBzdGF0aWMgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNl
c3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBib29sKiB3YXNGaXhlZCk7CiAgICAgc3Rh
dGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAKaW5kZXggZDNhZjI5Mzk5N2Q4Mzc4NmVjZWM1YmU4MTc3MzZhMDk3
Yjg3YmY0Yi4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4NmY1N2FiYTY0NGI2ZTAzZTVlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY5LDcg
KzE2OSw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3Bl
Y3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgYm9vbCBhbHRlclN0YXJ0UG9z
aXRpb24gPSB0cnVlOwogICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlvbiA9IHRydWU7CiAKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbGFzdFBvc2l0aW9uT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGxhc3RQb3NpdGlvbk9mZnNldDsKICAgICBmb3IgKDsgdGV4dE1ldHJpY3NPZmZz
ZXQgPCB0ZXh0TWV0cmljc1NpemUgJiYgcG9zaXRpb25PZmZzZXQgPCBwb3NpdGlvblNpemU7ICsr
dGV4dE1ldHJpY3NPZmZzZXQpIHsKICAgICAgICAgU1ZHVGV4dE1ldHJpY3MmIG1ldHJpY3MgPSB0
ZXh0TWV0cmljc1ZhbHVlc1t0ZXh0TWV0cmljc09mZnNldF07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4
IGEzNDdkMzE1NTMzYzhhYjliMjg1YzBmNzAwYzJkMGIyMjc2YTQ3NDUuLjNkY2Q3ZGZjMTkyMmE5
NjFjM2RlMDk0NmM4OGUxMGE2MjFiNmVjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtNzgwLDcgKzc4
MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9y
SW5saW5lQ2hpbGRyZW5JZk5lZWRlZChSZW5kZXJFCiAgICAgLy8gb3RoZXJ3aXNlIHdlIGNhbiBw
cm9jZWVkIHRvIHN0cmlwcGluZyBzb2xpdGFyeSBhbm9ueW1vdXMgd3JhcHBlcnMgZnJvbSB0aGUg
aW5saW5lcy4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gaGFuZGxlIHNwbGl0IGlubGlu
ZXMgaGVyZSAtIHdlIGV4Y2x1ZGUgdGhlbSBhdCB0aGUgbW9tZW50IGJ5IHJldHVybmluZwogICAg
IC8vIGlmIHdlIGZpbmQgYSBjb250aW51YXRpb24uCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxk
QWxsQ2hpbGRyZW5CZUlubGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENo
aWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gYmxvY2tQYXJlbnQuZmly
c3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewog
ICAgICAgICBpZiAoY3VycmVudC0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkgfHwgY3VycmVudC0+c3R5
bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0x
MDA0LDcgKzEwMDQsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpyZXBvcnRWaXN1YWxseU5v
bkVtcHR5Q29udGVudChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbgogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChpczxSZW5kZXJTVkdSb290PihjaGlsZCkpIHsKLSAgICAgICAgYXV0
byBmaXhlZFNpemUgPSBbXSAoY29uc3QgYXV0byYgcmVuZGVyZXIpIC0+IE9wdGlvbmFsPEludFNp
emU+IHsKKyAgICAgICAgYXV0byBmaXhlZFNpemUgPSBbXSAoY29uc3QgYXV0byYgcmVuZGVyZXIp
IC0+IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gewogICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBy
ZW5kZXJlci5zdHlsZSgpOwogICAgICAgICAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlzRml4ZWQo
KSB8fCAhc3R5bGUuaGVpZ2h0KCkuaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlci5oCmluZGV4IGI3ZjBhZGViMTc1YWU4NTI3MGI0OGUyMmQyZTEzNTdiNmNjNDYy
MmEuLjlkNGYzZDVmMDY3MTEwZTRmODJhZTdiZmI2ODVlNjQ3YjMzZmEzZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5o
CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFBhcmVudCB7CiAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IFN0eWxlOjpFbGVt
ZW50VXBkYXRlcyogdXBkYXRlcyB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8UmVuZGVy
VHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRpb247CiAKICAgICAgICAgYm9vbCBk
aWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICAgICAgUmVuZGVy
T2JqZWN0KiBwcmV2aW91c0NoaWxkUmVuZGVyZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcAppbmRleCAzNzFkMzNiNmYxNTY3
N2I3MWNiOTUwMGU5MmVlMjA5MzIzZTIzNmI0Li43MTgyNTk2NGE4NGExNDU2NjM0YWZjOTFkMDQ3
ODQwYTVlOGMzNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VR
dW90YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3Rh
TWFuYWdlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b24gU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWEKICAg
ICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3BhY2VSZXF1ZXN0ZWQsICZzZW1hcGhv
cmVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIFN0b3Jh
Z2VRdW90YU1hbmFnZXIgYXNrcyBmb3IgcXVvdGEgaW5jcmVhc2UgJSIgUFJJdTY0LCB0aGlzLCBz
cGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIG1fcXVvdGFJbmNyZWFzZVJlcXVlc3RlcihtX3F1b3Rh
LCBtX3VzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCAmc2VtYXBob3JlXShPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IG11dGFibGUgeworICAgICAgICBtX3F1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIobV9xdW90YSwgbV91
c2FnZSwgc3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgJnNlbWFwaG9yZV0oc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IG11dGFibGUgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gU3RvcmFn
ZVF1b3RhTWFuYWdlciByZWNlaXZlcyBxdW90YSBpbmNyZWFzZSByZXNwb25zZSAlIiBQUkl1NjQs
IHRoaXMsIG5ld1F1b3RhID8gKm5ld1F1b3RhIDogMCk7CiAgICAgICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VRdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFu
YWdlci5oCmluZGV4IDViMzU2NTcyZDQ4YmI0Mjc1OWNhMWVmNWE0NTkwYzhjMDIzNjRlNzguLjFl
NzU0ZTM0MGZiMDBhYTY5MWQzNzQ5MjQ4NTg0ZDkwNzZjYzgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFN0b3JhZ2VRdW90YU1hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFn
ZVF1b3RhTWFuYWdlcj4sIHB1CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdXNpbmcgVXNhZ2VHZXR0ZXIgPSBGdW5jdGlvbjx1aW50NjRfdCgpPjsKLSAgICB1c2lu
ZyBRdW90YUluY3JlYXNlUmVxdWVzdGVyID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBjdXJyZW50
UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik+OworICAgIHVz
aW5nIFF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdlLCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFz
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYpPjsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFN0b3JhZ2VRdW90YU1hbmFnZXI+IGNyZWF0
ZSh1aW50NjRfdCBxdW90YSwgVXNhZ2VHZXR0ZXImJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RlciYm
KTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90
YUZyb21QZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkgeyByZXR1cm4gcXVvdGEgLyAxMDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4
IDA1ZTI4NDNkYzFmMTYxZDJhMWM0YTlhNWUzNTkyZDJiNjY0MDU4MGYuLjdjNjU0NmNlOWEzM2Jm
YTAwMmM4MGEzMmRkZGY0M2ZiYzczZWVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25Pcmln
aW4gZGVjbGFyYQogICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKGRlY2xhcmF0aW9uT3JpZ2luKTsK
IH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVj
bGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFNjb3BlT3JkaW5hbD4g
ZnJvbVNjb3BlKQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVs
ZXMoRGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2Nv
cGVPcmRpbmFsPiBmcm9tU2NvcGUpCiB7CiAgICAgaWYgKG1fbW9kZSAhPSBTZWxlY3RvckNoZWNr
ZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcykKICAgICAgICAgZGVjbGFyYXRpb25zRm9yT3JpZ2lu
KG1fcmVzdWx0LCBkZWNsYXJhdGlvbk9yaWdpbikucmVzZXJ2ZUNhcGFjaXR5KG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aAppbmRleCAxYjMzMmZkYzAxMjYxODcwN2IwM2I3MDkxNzBjMGZmYWYyZDgxMmZjLi4yMzkyZTBi
NzQ0MjE0YWUyZTc1MTZmZTVmZDhhMmY0ZGQ5ODk2NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU2NvcGVS
dWxlU2V0czsKIAogY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3QgewogcHVibGljOgotICAgIFBz
ZXVkb0VsZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9s
bGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6bnVsbG9wdCkKKyAgICBQc2V1ZG9FbGVt
ZW50UmVxdWVzdChQc2V1ZG9JZCBwc2V1ZG9JZCwgc3RkOjpvcHRpb25hbDxTdHlsZVNjcm9sbGJh
clN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBwc2V1ZG9J
ZChwc2V1ZG9JZCkKICAgICAgICAgLCBzY3JvbGxiYXJTdGF0ZShzY3JvbGxiYXJTdGF0ZSkKICAg
ICB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBQc2V1ZG9JZCBwc2V1
ZG9JZDsKLSAgICBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFyU3RhdGU+IHNjcm9sbGJhclN0YXRlOwog
ICAgIEF0b21TdHJpbmcgaGlnaGxpZ2h0TmFtZTsKIH07CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgRGVjbGFyYXRpb25PcmlnaW4geyBVc2VyQWdlbnQsIFVz
ZXIsIEF1dGhvciB9OwogICAgIHN0YXRpYyBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+JiBkZWNs
YXJhdGlvbnNGb3JPcmlnaW4oTWF0Y2hSZXN1bHQmLCBEZWNsYXJhdGlvbk9yaWdpbik7CiAgICAg
dm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4pOwotICAg
IHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFNj
b3BlT3JkaW5hbD4gZm9yU2NvcGUgPSB7IH0pOworICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVs
ZXMoRGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2NvcGVPcmRpbmFsPiBmb3JTY29w
ZSA9IHsgfSk7CiAKICAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVEYXRhJiwgdW5z
aWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5hbCk7CiAgICAgdm9pZCBhZGRNYXRjaGVkUHJv
cGVydGllcyhNYXRjaGVkUHJvcGVydGllcyYmLCBEZWNsYXJhdGlvbk9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5kZXggZTNmZWM1Y2Q1NzAyMmFlYjNlOGU4OGFkZjVh
Y2QwYzZhZjNlYWY3ZS4uMTI0MDI3YTFjYjc3MTE1NDM1M2QwOGRhZDAzY2RiNDQxMTY0M2Q3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0
aWMgYm9vbCBpc1NpYmxpbmdPclN1YmplY3QoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVGZWF0dXJlOjpSdWxlRmVhdHVyZShjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50KQorUnVs
ZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgc3RkOjpvcHRp
b25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCkKICAgICA6IHN0eWxlUnVsZSgmcnVsZURh
dGEuc3R5bGVSdWxlKCkpCiAgICAgLCBzZWxlY3RvckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5k
ZXgoKSkKICAgICAsIHNlbGVjdG9yTGlzdEluZGV4KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCAxY2QyZTNmZjU3YzBiZTlhYzcz
ZmIxOGFjNjVkYjc5NTc0OTE2NGFhLi5jYTU2M2FlNzZjNDNiM2I5ZTJkYWJjMGViZGM2ZTQzODI1
Zjk0MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTQwLDE3ICs0MCwxNyBA
QCBlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3QgeyBTdWJqZWN0LCBQYXJlbnQsIEFu
Y2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbgogY29uc3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVu
dENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwog
CiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewotICAgIFJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiwg
T3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUnVsZUZlYXR1cmUo
Y29uc3QgUnVsZURhdGEmLCBzdGQ6Om9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgUmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4gc3R5bGVSdWxlOwogICAgIHVpbnQx
Nl90IHNlbGVjdG9ySW5kZXg7IC8vIEtlZXAgaW4gc3luYyB3aXRoIFJ1bGVEYXRhJ3Mgc2VsZWN0
b3JJbmRleCBzaXplLgogICAgIHVpbnQxNl90IHNlbGVjdG9yTGlzdEluZGV4OyAvLyBLZWVwIGlu
IHN5bmMgd2l0aCBSdWxlRGF0YSdzIHNlbGVjdG9yTGlzdEluZGV4IHNpemUuCi0gICAgT3B0aW9u
YWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TWF0
Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJ1
bGVGZWF0dXJlKSA8PSAxNiwgIlJ1bGVGZWF0dXJlIGlzIGEgZnJxdWVudGx5IGFsb2NhdGVkIG9i
amVjdC4gS2VlcCBpdCBzbWFsbC4iKTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlV2l0aEludmFsaWRh
dGlvblNlbGVjdG9yIDogcHVibGljIFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxlRmVhdHVyZVdpdGhJ
bnZhbGlkYXRpb25TZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgZGF0YSwgT3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBp
bnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpCisgICAgUnVsZUZlYXR1cmVXaXRoSW52YWxp
ZGF0aW9uU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBp
bnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpCiAgICAgICAgIDogUnVsZUZlYXR1cmUoZGF0
YSwgV1RGTW92ZShtYXRjaEVsZW1lbnQpKQogICAgICAgICAsIGludmFsaWRhdGlvblNlbGVjdG9y
KGludmFsaWRhdGlvblNlbGVjdG9yKQogICAgIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApp
bmRleCA2MjU4Y2Q2NDRmZDU0YjhhMzM4NTZhODMzNjg5NjcxOGE4MGM2MjgyLi40ZGU3M2E2Mjgx
ZGQ5NzA2N2E0MTlmYWRlZWZhM2UwNDg2NWRhYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNw
cApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgUnVsZVNldDo6dHJhdmVyc2VSdWxlRGF0YXMoRnVu
Y3Rpb24mJiBmdW5jdGlvbikKICAgICB0cmF2ZXJzZVZlY3RvcihtX3VuaXZlcnNhbFJ1bGVzKTsK
IH0KIAotT3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUnVsZVNl
dDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIGV2YWx1YXRvcikKK3N0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9u
Q2hhbmdlcz4gUnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1l
ZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKIHsKICAgICBhdXRvIGNvbGxlY3RlZENoYW5n
ZXMgPSBldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoZXZhbHVhdG9yLCAwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5oCmluZGV4IGRjOTIyNDIxNjExN2EwYjJkNWM4ODBkOTU1ZTJiNTNlN2M0
YzJhNWQuLjZmMzcwYWE2ZWE0MzY1YWM5YjM0NDI2ZWUyNGE5YzEzNWM0ODQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlU2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWV3
cG9ydERlcGVuZGVudE1lZGlhUXVlcmllczsgfQogCi0gICAgT3B0aW9uYWw8RHluYW1pY01lZGlh
UXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRp
YVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJik7CiAKICAgICBjb25zdCBSdWxlRmVhdHVyZVNldCYg
ZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQWRqdXN0ZXIuaAppbmRleCBhYzg0MTI1MGM0NTkyZGI2NDY2Zjc0MmIzOTJkZTFmODNl
YjE1NGQyLi4xOTEzMWU1ODBmNTY0NWFlYTIyMzI4Mjk0ZTlkNzYxZWJmODM1ZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgc3RydWN0IEFkanVzdG1lbnRGb3JUZXh0
QXV0b3NpemluZyB7Ci0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBuZXdGb250U2l6ZTsKLSAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IG5ld0xpbmVIZWlnaHQ7Ci0gICAgICAgIE9wdGlvbmFsPEF1dG9z
aXplU3RhdHVzPiBuZXdTdGF0dXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG5ld0Zv
bnRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBuZXdMaW5lSGVpZ2h0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBuZXdTdGF0dXM7CiAgICAgICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBuZXdGb250U2l6ZSB8fCBuZXdM
aW5lSGVpZ2h0IHx8IG5ld1N0YXR1czsgfQogICAgIH07CiAgICAgc3RhdGljIEFkanVzdG1lbnRG
b3JUZXh0QXV0b3NpemluZyBhZGp1c3RtZW50Rm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCmluZGV4IDFkNDRhZWRiNjVjMzAyNWU2MWE2MTYxNmQ2OWRjZjE1MDQ2
ZmMyYWMuLmJmNTI3NDRhMzg0MDMyZjBjNjM1OGYwNzQxYmJhZThiYmYxZWJiZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xMTcsMTIgKzEx
NywxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0
R3JpZFRyYWNrU2l6ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlv
bj4gY29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlv
bihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBHcmlkQXV0b0Zs
b3cgY29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gY29udmVy
dFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4g
Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRp
YyBib29sIGNvbnZlcnRUb3VjaENhbGxvdXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKICNlbmRpZgpAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBj
b252ZXJ0U21vb3RoU2Nyb2xsaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShj
b25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZv
bnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29u
dmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250
U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRXZWlnaHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRj
aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0
aW9uVmFsdWUgY29udmVydEZvbnRTdHlsZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxp
Z25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhP
cmllbnRhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBH
bHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVy
dExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBs
aWVyID0gMS5mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5l
SGVpZ2h0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9
IDEuZik7CiAgICAgc3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICAKICAgICBzdGF0aWMgQnJlYWtCZXR3
ZWVuIGNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBpbmxpbmUgR3JpZFRyYWNrU2l6ZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIHJl
dHVybiBjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCBidWlsZGVyU3RhdGUpOwogfQogCi1pbmxp
bmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBv
c2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3Np
dGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgR3JpZFBv
c2l0aW9uIGdyaWRQb3NpdGlvbjsKICAgICBpZiAoY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBn
cmlkUG9zaXRpb24pKQpAQCAtMTIwNSw5ICsxMjA1LDkgQEAgaW5saW5lIENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEgQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdp
dGgKICAgICByZXR1cm4gYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5j
b3B5V2l0aEFkanVzdGVkWm9vbSh6b29tKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxMZW5n
dGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0
aD4gd29yZFNwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFs
KQogICAgICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmco
KTsKQEAgLTEyMjEsNyArMTIyMSw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgcmV0
dXJuIHdvcmRTcGFjaW5nOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKQEAgLTEyMzUsMTAgKzEyMzUsMTAgQEAgaW5saW5l
IE9wdGlvbmFsPGZsb2F0PiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoQnVp
bGRlclN0YXRlJiBidWlsZGUKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCi0gICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwgMCA/IE9wdGlvbmFsPGZsb2F0PihzdGQ6Om51
bGxvcHQpIDogT3B0aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKKyAgICByZXR1cm4gcGVyc3Bl
Y3RpdmUgPCAwID8gc3RkOjpvcHRpb25hbDxmbG9hdD4oc3RkOjpudWxsb3B0KSA6IHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBMZW5n
dGggbGVuZ3RoID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9M
ZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3Vs
YXRlZENvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCku
Y29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgIGlmIChsZW5ndGguaXNVbmRlZmluZWQo
KSkKQEAgLTEyNDYsNyArMTI0Niw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYKICAgICByZXR1
cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEZpbHRl
ck9wZXJhdGlvbnM+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
RmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGlmIChidWlsZGVyU3RhdGUuY3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3BlcmF0aW9ucykpCkBAIC0xMzA4LDcgKzEzMDgsNyBA
QCBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDUwogfQogCiAvLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMg
dG8gcGFyc2VkIGFuZCB2YWxpZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN0ZDo6bnVsbG9wdCBp
ZiB0aGUgaW5wdXQgd2FzICJub3JtYWwiLgotaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsK
ICAgICBjb25zdCBhdXRvJiBmb250U3R5bGVWYWx1ZSA9IGRvd25jYXN0PENTU0ZvbnRTdHlsZVZh
bHVlPih2YWx1ZSk7CkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBpbmxpbmUgR2x5cGhPcmllbnRhdGlv
biBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVy
UwogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihidWlsZGVyU3RhdGUsIHZhbHVl
KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggN2YwMWY5Y2JhNTA5YzNj
N2Q5YThlNGM3OTE3Njc0MDE0M2U4ZDU4OC4uZjZlNmY3YTgyNzA3OWQ2NGY3M2U4MTYwNmMxYzY3
ZDgzNjRmOWRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
QEAgLTcyNyw3ICs3MjcsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVMaW5lSGVpZ2h0
TXVsdGlwbGllckR1ZVRvRm9udFNpemUoY29uc3QgRG9jdW1lbnQmIGRvYwogCiBpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhl
aWdodCA9IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwg
dmFsdWUsIDEpOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgMSk7CiAg
ICAgaWYgKCFsaW5lSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggNDM2ODcwOTI1NDcwNWVh
MDljMjliZjlhZTI5ZmJiZWU5MTIxN2RlMS4uNzFjNzRjYjA2MjQ1MmJkYzAxOWEwMDc3NDlhOTQ4
MzZkNDZhM2FiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJvb2wgdXNlRml4ZWREZWZhdWx0
U2l6ZShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiAgICAg
cmV0dXJuIGZvbnREZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpID09IDEgJiYgZm9udERlc2NyaXB0
aW9uLmZpcnN0RmFtaWx5KCkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpNb25vc3BhY2VGYW1pbHkpOwogfQogCi1PcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZv
ckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYm
IGZvbnREZXNjcmlwdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6
b3B0aW9uYWw8Rm9udENhc2NhZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZv
bnRSYXcsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiBmb250RGVzY3JpcHRpb24sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQuY3NzRm9udFNl
bGVjdG9yKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVGb3JGb250UmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250
UmF3LmgKaW5kZXggMmJjZmNiZmFkZDQ1MjdjM2ExYjJlYjY4ZjJjOGViNWZlOWU5ZmEzNi4uNGZi
M2NmODAyOTZiMGQxNGRhNGVjODE3ZmUzMmQ1ZGE2NjRjMmFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1
Y3QgRm9udFJhdzsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAotT3B0aW9uYWw8Rm9udENhc2NhZGU+
IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJh
dyYsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwor
c3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3JiwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggYzFkYmZmY2RjNDZjMDY5YTQ5NTFkYzA3ZjQ5OWE4M2E2YTRjMDY2
My4uM2RjMzU1OTA2NmZkMGE4ODliZmQ3MWVlNmYxZDBiNjA3NzM4OGM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCBib29sIFJlc29s
dmVyOjpoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcnVsZVNldHMuaGFzVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKTsKIH0KIAotT3B0
aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUmVzb2x2ZXI6OmV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcmllcygpCitzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5
RXZhbHVhdGlvbkNoYW5nZXM+IFJlc29sdmVyOjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJpZXMo
KQogewogICAgIHJldHVybiBtX3J1bGVTZXRzLmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxl
cyhtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
ci5oCmluZGV4IDY5NzdjYzdhM2U3ZjBkY2FiYmFkNDg4YjY2NzM0NDM2MmVhMDQzYzkuLmIyZGU5
ZmVkNDczZDY1ZTU1YWI3YTBhOWI3N2NhNWEzZjVkMmVkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVyLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNT
ZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0
OwotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcmllcygpOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlh
UXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyaWVzKCk7CiAK
ICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBiYTc2NzJkZDA4NDA3ZjRkNWRiODVmM2E0
MjY3Y2NkNDYyMDIwNmEwLi5jOWI2OTYzZWJiNDgxNzc5YTgwMzc3ZmVkMjViZmNmODY1MGI3OGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOwogCi0gICAgT3B0
aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VXBk
YXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOwogCiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFi
aWxpdHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0
cy5jcHAKaW5kZXggZTdmNjI0MzY0YjY2YjczYmMzZjY2MmU1NjYzNWMzZGZhMWQyZjk4NS4uYTli
YTY3MzIzNmNlNDU1OGJjNzU0NDQwNzY2ZDk0YjMzOWRhNmRlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBT
Y29wZVJ1bGVTZXRzOjpoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRp
b25DaGFuZ2VzPiBTY29wZVJ1bGVTZXRzOjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMo
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9yKQorc3RkOjpvcHRpb25hbDxEeW5h
bWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBTY29wZVJ1bGVTZXRzOjpldmFsdWF0ZUR5
bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9y
KQogewotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2
YWx1YXRpb25DaGFuZ2VzOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFs
dWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGlvbkNoYW5nZXM7CiAKICAgICBhdXRvIGV2YWx1YXRlID0g
WyZdKGF1dG8qIHJ1bGVTZXQpIHsKICAgICAgICAgaWYgKCFydWxlU2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRleCA3OWJiZGQxZjJlMWU3ZTA2MWRmMjc1
NWQxMGFlMTQzM2E3YWE2MWQ2Li44N2E3ODllZmJiOTQ3OTZlODEwZTdhYTM2YjRjOTFmYmM0YzQy
NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApAQCAtNzks
NyArNzksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFR
dWVyaWVzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRp
b25DaGFuZ2VzPiBldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0
aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImKTsKIAogICAgIFJ1bGVGZWF0dXJlU2V0JiBtdXRhYmxlRmVhdHVyZXMoKTsK
IApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21T
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+PiBtX2F0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+PiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBt
X3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHM7CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFs
PGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNG
b3JTdHlsZUF0dHJpYnV0ZTsKIAogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWZhdWx0U3R5bGVW
ZXJzaW9uT25GZWF0dXJlQ29sbGVjdGlvbiB7IDAgfTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
dXNlckFnZW50TWVkaWFRdWVyeVJ1bGVDb3VudE9uVXBkYXRlIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IGRiYzAzM2VlMGM1NTdmYWE5YWRm
NDUzMmY3MDAyZmU2NzdlNjU1MTYuLmNlZjhmMGMzZjg5NzA1ZDIyNzA3OTNjZGY1OGNlYmMxYTc1
ZmFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAg
LTI3Myw3ICsyNzMsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNj
ZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9OwogfQogCi1PcHRpb25h
bDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBw
c2V1ZG9JZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNv
bHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxl
bWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBz
ZXVkb0lkOjpNYXJrZXIgJiYgZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpMaXN0SXRlbSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IDlhZDZiMGQ1NWEzNGJmNDFmZmMyMjIyYmQ0NTAy
YWZmZjI1N2Q5MmQuLjY3ZWExNzcyMTdjMzRhOWIwNTJhODAyZWUyNmNmMjlhNWUyNjkwODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaApAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIEVsZW1lbnRVcGRhdGVzIHJlc29sdmVFbGVtZW50KEVsZW1lbnQmKTsK
IAogICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBTdHlsZWFibGUmLCBDaGFuZ2UsIGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJv
eFN0eWxlKTsKLSAgICBPcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUo
RWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CisgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVk
PFNjb3BlPiB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihUcmVlUmVzb2x2ZXJTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuaAppbmRleCA5OWNlMTNmNjE3YjBlZjVhMDFkZTEzNGU4NDQxMWJlZWM5MzlmYmRkLi4wMmM2
NTMzODNjZDQ4ZWRmN2RhMDI5MDJmNDJhN2Q0NWVlZDJiZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmgKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKIHN0
cnVjdCBUZXh0VXBkYXRlIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07Ci0gICAg
T3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPj4gaW5oZXJpdGVkRGlzcGxheUNv
bnRlbnRzU3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+PiBpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZTsKIH07CiAKIGNsYXNzIFVwZGF0ZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcAppbmRleCBiNjQ1ODM4YTUwOWM5NDk4MjVjNjhl
MzlmYjE2YWU0MGVmMjEyMmFlLi4wZDdjN2Q1YTA1OWJhZGI4ODE0N2Y5YTVhMWQyOTcyZGEyNDdk
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2
b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZAogICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRh
aW5BbGwpIHsKICAgICAgICAgYXV0byBudW1iZXJPZlByb3BlcnRpZXMgPSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOwogICAgICAgICBmb3IgKGludCBwcm9wZXJ0eUlu
ZGV4ID0gMDsgcHJvcGVydHlJbmRleCA8IG51bWJlck9mUHJvcGVydGllczsgKytwcm9wZXJ0eUlu
ZGV4KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxib29sPiBpc1Nob3J0aGFuZDsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNTaG9ydGhhbmQ7CiAgICAgICAgICAgICBhdXRvIHBy
b3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChwcm9wZXJ0
eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQgJiYgKmlz
U2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFi
bGUuaAppbmRleCA2NGMxMWE5NTZlMmQ2OWE3OTdmYzBiZTYwOTA1YjEyZDNlZWU3ZjNiLi5mMzE4
YTE3OGNiMTdkN2E5MzM3YzYzYTMyYjlmNTE0ODljYjAwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZWFibGUuaApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgU3R5bGVhYmxlIHsKICAgICAgICAgcmV0
dXJuIFN0eWxlYWJsZShlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJlcihjb25z
dCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZyb21FbGVtZW50KCplbGVtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FFbGVtZW50LmgKaW5kZXggOGU3YzE5ZDlkZmYyNWZkY2IyNGRiYjQ0ZDQ1NmIyMWYzODBl
Zjg5MS4uYjZhNGU4YzUyNzY4NWZmMjY2MTE2NGJmOTMxODdmZmExNDU5OTMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZH
QW5pbWF0ZWRTdHJpbmc+IG1fdGFyZ2V0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlz
KSB9OwogCiAgICAgLy8gVGhpcyBpcyBjb21wdXRlZCBvbmx5IG9uY2UgYW5kIG11c3Qgbm90IGJl
IGFmZmVjdGVkIGJ5IHN1YnNlcXVlbnQgVVJMIGNoYW5nZXMuCi0gICAgbXV0YWJsZSBPcHRpb25h
bDxTaGFyZWRTdHJpbmdIYXNoPiBtX3N0b3JlZFZpc2l0ZWRMaW5rSGFzaDsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkU3RyaW5nSGFzaD4gbV9zdG9yZWRWaXNpdGVkTGlua0hhc2g7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3JlbExpc3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCBjOTI0ZTVk
NzQyM2FmYTY4NWVmZTU0YzQ2MTIyZGY0MDRhOTJmNmYxLi4wYjM5ZjAyNjMxMzEwMGI4ZmU3ZmUw
Mjk3NmZiOGNhNTk2Y2U3MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlOjpzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpCiAgICAgICAgIGFu
aW1hdG9yLT5zdG9wKHRhcmdldEVsZW1lbnQpOwogfQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICAvLyBGSVhNRTogQSByZXR1cm4gdmFs
dWUgb2YgZmxvYXQgaXMgbm90IGVub3VnaCB0byBzdXBwb3J0IHBhY2VkIGFuaW1hdGlvbnMgb24g
bGlzdHMuCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggZDEzM2U2MTIzMzM0MTQ2ZDUxNWY5NjZkODNlZTk4
YjJiMDIyOTk0ZS4uYjUxYzZiMDc2YTU1OTI2MmYyYzAzNmUyNzQ3ZjU3MGNmZmFjOGFkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaApAQCAtNTcsMTIgKzU3
LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBy
b2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJl
c3VsdHNUb1RhcmdldCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5j
ZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBoYXNJbnZhbGlkQ1NTQXR0cmlidXRlVHlwZSgpIGNvbnN0OwogCiAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IG1fYW5pbWF0b3I7Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2hhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggZGU0MThkMzFkM2RjOTQxOGU5Yjc0ZWRl
MDBhNzYwOWI3M2IwMWEwMS4uMzc3ZDc5YTBkMzFlMGFmYjViYzhkODJlNGZkMGU2MTI2ZGNkM2Q4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQoKQogICAgIH0KIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogewogICAgIGF1dG8gZnJvbSA9IHBhcnNlUG9pbnQo
ZnJvbVN0cmluZyk7CiAgICAgaWYgKCFmcm9tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRleCA3YjAyNGYyOGZhNDI3MzUyNjZiM2ZhNTcxMjZhM2Jk
MmRhNzAwY2JmLi5mZWI4ZTBkODQ1Mjg1ZTgwZWFlODY1MjRjYTBkMzRjMzlkMDg3NGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaApAQCAtNDgsNyAr
NDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIAogICAgIGVudW0gUm90
YXRlTW9kZSB7CiAgICAgICAgIFJvdGF0ZUFuZ2xlLApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRl
OgogICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0
by9mcm9tIGNvb3JkcyBhcyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24n
dCBlaXRoZXIpCiAgICAgRmxvYXRQb2ludCBtX2Zyb21Qb2ludDsKICAgICBGbG9hdFBvaW50IG1f
dG9Qb2ludDsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b247CiAKICAgICBQYXRoIG1fcGF0aDsKICAgICBQYXRoIG1fYW5pbWF0aW9uUGF0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCA2OTIzYTBiYjg1ZWM3
OWFhY2NiNDlkZjlmNDljZTllNGRjMmU2NzNlLi5mYjkxYWQyNTRmNDEzZWRlNGE4NTRiMjFhYTdm
MzZhN2VlY2Q4OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
Y3BwCkBAIC03OSwxMiArNzksMTIgQEAgZmFpbDoKICAgICByZXN1bHQuY2xlYXIoKTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmlu
Z1ZpZXcgc3RyaW5nKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVuaXRCZXppZXI+PiBw
YXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENo
YXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxW
ZWN0b3I8VW5pdEJlemllcj4+IHsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5n
KHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxVbml0QmV6
aWVyPj4gewogICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKIAogICAgICAg
ICBWZWN0b3I8VW5pdEJlemllcj4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmgKaW5kZXggZmNmOGFmNjUyYjVjYTQyZTMxMGI1YTQ1ZTIzMTU1ODk1ZWJhOGIy
OS4uNTU1N2QzZmE4OGExMDIxOWFiZTVjODdiZjg5OGJjNzVkMDZjMDVlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQpID0gMDsKLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
IC8qZnJvbVN0cmluZyovLCBjb25zdCBTdHJpbmcmIC8qdG9TdHJpbmcqLykgPSAwOworICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8pID0gMDsKIAogICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtleVRpbWVzKCkgY29uc3Q7CiAgICAgdm9pZCBjdXJyZW50
VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQ
ZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYgdG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDdkMmI5ZGE3ZTQwMzE4MjgwMGY0NTkwNjhjZjEwOTNjMTdkOTYzMzkuLmEwMjA2
NDlmMTg3YzZmZDc0ODJkOGJjNTQ3ZDc5NDY0NmE3ZmM1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50
PiYgU1ZHRWxlbWVudDo6aW5zdGFuY2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0
YS0+aW5zdGFuY2VzKCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRWxlbWVudDo6Z2V0
Qm91bmRpbmdCb3goKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6
OmdldEJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50
PigqdGhpcykpIHsKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxl
dGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgcHJvcGVydHlBbmlt
YXRvckZhY3RvcnkoKS5hbmltYXRvcldpbGxCZURlbGV0ZWQoYXR0cmlidXRlTmFtZSk7CiB9CiAK
LU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikK
K3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqKQogewogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGluIGEgPHVzZT4gdHJlZSB3ZSBnZXQg
dGhlIHN0eWxlIGZyb20gdGhlIGRlZmluaXRpb24gdHJlZS4KICAgICBpZiAoYXV0byBzdHlsZUVs
ZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5YzRkYmE3NjdhZDdjM2MzNjU1ODAzYzAxM2YzMmYwYmNh
MTU3ZTc5Li45MjgwNWZhOTJlZjlkNjllYjc0NTFiZmE5ZDE4ZTAzM2U2NmQyNjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBp
bnN0YW5jZXMgb2YgYW4gZWxlbWVudCBhcmUgY2xvbmVzIG1hZGUgaW4gc2hhZG93IHRyZWVzIHRv
IGltcGxlbWVudCA8dXNlPi4KICAgICBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgaW5z
dGFuY2VzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94KCkg
Y29uc3Q7CiAKICAgICBWZWN0b3I8UmVmPFNWR0VsZW1lbnQ+PiByZWZlcmVuY2luZ0VsZW1lbnRz
KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSZWZlcmVuY2luZ0VsZW1lbnQoU1ZHRWxlbWVudCYpOwpA
QCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29ycmVzcG9uZGluZ0Vs
ZW1lbnQoU1ZHRWxlbWVudCopOwogCi0gICAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKIAogICAgIHN0YXRpYyBRdWFsaWZpZWROYW1lIGFuaW1hdGFibGVBdHRyaWJ1dGVGb3JO
YW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guY3BwCmluZGV4IGU2MWU2MWFmZWVkYWEzYTU2YTQ3NWJjYTU5NTFiMGNh
ZTAwZjA1MDEuLmUwYTAzMTJjMzc0ZmE3MGJiNDQwNDk2MTMzZDNkN2EyMGI0OWZkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCkBAIC04NSwyNCArODUsMjQgQEAgYm9v
bCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZs
b2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goU3RyaW5nVmlldyB2YWx1ZSkK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChT
dHJpbmdWaWV3IHZhbHVlKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmco
dmFsdWUsIFsmXShhdXRvIGJ1ZmZlcikgewogICAgICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2Vu
ZXJpYyhidWZmZXIpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0ZpdFRv
Vmlld0JveDo6cGFyc2VWaWV3Qm94KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIs
IGJvb2wgdmFsaWRhdGUpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94
OjpwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlciwgYm9vbCB2
YWxpZGF0ZSkKIHsKICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2VuZXJpYyhidWZmZXIsIHZhbGlk
YXRlKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyLCBib29sIHZhbGlkYXRlKQor
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KFN0
cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIsIGJvb2wgdmFsaWRhdGUpCiB7CiAgICAg
cmV0dXJuIHBhcnNlVmlld0JveEdlbmVyaWMoYnVmZmVyLCB2YWxpZGF0ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9W
aWV3Qm94OjpwYXJzZVZpZXdCb3hHZW5lcmljKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlciwgYm9vbCB2YWxpZGF0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveEdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBi
b29sIHZhbGlkYXRlKQogewogICAgIFN0cmluZ1ZpZXcgc3RyaW5nVG9QYXJzZSA9IGJ1ZmZlci5z
dHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAppbmRleCBhZTg4Y2IwNWVhYWU5NGExMzhlZTg0ZjZhYmZiMWE0Y2FhMzgwNDZi
Li5lYjUyM2VkN2ZkY2MxZjdiNWJiOGRhMmFkMzg2YjhhNzNkZTZhMjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC02NCwxMiArNjQsMTIgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNl
Vmlld0JveChTdHJpbmdWaWV3KTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0Jv
eChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVD
aGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gcGFyc2VWaWV3Qm94KFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mLCBib29sIHZhbGlkYXRl
ID0gdHJ1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJp
bmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKIAogcHJpdmF0
ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxGbG9hdFJl
Y3Q+IHBhcnNlVmlld0JveEdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VWaWV3Qm94R2VuZXJpYyhTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwog
CiAgICAgUmVmPFNWR0FuaW1hdGVkUmVjdD4gbV92aWV3Qm94OwogICAgIFJlZjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKaW5kZXggNjgwN2Y2YmI0YjJkODQ0MDAxNTQ5MGRkZWUz
ZTljMWY0ZWQ1MDgyZi4uZDBlMzY4ZmE3NTQwYjMzMTQzNTUyOTgwYzY3YTcwNWMyMTU3MzQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
UmVmPFNWR0hLZXJuRWxlbWVudD4gU1ZHSEtlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdIS2Vy
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8U1ZHS2VybmluZ1Bh
aXI+IFNWR0hLZXJuRWxlbWVudDo6YnVpbGRIb3Jpem9udGFsS2VybmluZ1BhaXIoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTVkdLZXJuaW5nUGFpcj4gU1ZHSEtlcm5FbGVtZW50OjpidWlsZEhvcml6
b250YWxLZXJuaW5nUGFpcigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGJlIHNo
YXJlZCB3aXRoIFNWR1ZLZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyPwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKaW5kZXggOTA4OTBiMjMwNTFmN2Q1NTMwOTY2
ZmFiNjMyMWNkMjJmMjdmNjdkNy4uNTk3MTJlYjM1ZDFlN2QzMzdkZTQxY2M4NTJlOWU0N2I0NjUw
ZDhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBA
QCBjbGFzcyBTVkdIS2VybkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTVkdIS2VybkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBidWls
ZEhvcml6b250YWxLZXJuaW5nUGFpcigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHS2Vy
bmluZ1BhaXI+IGJ1aWxkSG9yaXpvbnRhbEtlcm5pbmdQYWlyKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgU1ZHSEtlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKaW5kZXggNzc0ZjQzZWRkNGExZTY0NWRk
YTYzNDA4NTMyM2E3NzJhYWQyMmUzNC4uMzkwNjEzMzJjYzJmZWE2OWEyZTliOTRhNWU5NDkwMDBk
Njk4YmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCkBAIC0xODEsNyAr
MTgxLDcgQEAgU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkcKICAgICBzZXRWYWx1ZShjb250ZXh0LCB2
YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFNWR0xlbmd0aFZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSwgU3RyaW5nVmlldyB2YWx1ZUFzU3RyaW5n
KQorc3RkOjpvcHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIFN0cmluZ1ZpZXcgdmFsdWVBc1N0cmluZykKIHsK
ICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGggeyBsZW5ndGhNb2RlIH07CiAgICAgaWYgKGxlbmd0
aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAppbmRleCAzN2ZhMjUyZTBiZDY0ODlhNWIxY2EyYzA2ZGQ5
ZWFkYjdkYjNmNGE5Li40NDhiOTRmYzY1ODg0NDE0NGVlOGMzNDhlMTZlZTZmNGNhMWNhOGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgU1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5n
dGhUeXBlLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIFNWR0xl
bmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSA9
IFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90
aGVyKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gY29uc3RydWN0KFNW
R0xlbmd0aE1vZGUsIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR0xl
bmd0aFZhbHVlPiBjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZSwgU3RyaW5nVmlldyk7CiAgICAgc3Rh
dGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBTdHJpbmdWaWV3LCBT
VkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgPSBTVkdMZW5ndGhO
ZWdhdGl2ZVZhbHVlc01vZGU6OkFsbG93KTsKICAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgYmxl
bmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywg
ZmxvYXQgcHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFy
c2VyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
Y3BwCmluZGV4IGU1NDY1MzVmZjgwYjRkMWYxZTg2M2VmZDBjOGIyYzQxN2U5YWU1ZDcuLjdmMGU0
NTk5YTQwOTVmYTA0MmJiM2RlNTFmZjljZWU3ZDJmZjY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBGbG9hdFR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUmFuZ2UoY29uc3QgRmxv
YXRUeXBlJiB4CiAvLyBhdCBhIGhpZ2hlciBwcmVjaXNpb24gaW50ZXJuYWxseSwgd2l0aG91dCBh
bnkgdW5uZWNlc3NhcnkgcnVudGltZSBjb3N0IG9yIGNvZGUKIC8vIGNvbXBsZXhpdHkuCiAvLyBG
SVhNRTogQ2FuIHRoaXMgYmUgc2hhcmVkL3JlcGxhY2VkIHdpdGggbnVtYmVyIHBhcnNpbmcgaW4g
V1RGPwotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlw
ZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRUeXBlPiBnZW5lcmljUGFyc2VOdW1iZXIo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGlu
Z1BvbGljeSBza2lwID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZsb2F0VHlwZT4gZ2VuZXJpY1BhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCA9
IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKQogewogICAgIEZsb2F0VHlwZSBudW1iZXIgPSAw
OwogICAgIEZsb2F0VHlwZSBpbnRlZ2VyID0gMDsKQEAgLTEzOSwxOSArMTM5LDE5IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4g
c3RhdGljIE9wdGlvbmFsPEZsCiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIAotT3B0aW9uYWw8Zmxv
YXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIsIFN1ZmZp
eFNraXBwaW5nUG9saWN5IHNraXApCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihT
dHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBz
a2lwKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKIH0K
IAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+
JiBidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5IHNraXApCitzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyLCBTdWZmaXhT
a2lwcGluZ1BvbGljeSBza2lwKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVm
ZmVyLCBza2lwKTsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKK3N0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBp
bmdQb2xpY3kgc2tpcCkKIHsKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0
cmluZywgW3NraXBdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxmbG9hdD4geworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbc2tpcF0oYXV0byBidWZmZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsKICAgICAgICAgYXV0byByZXN1bHQgPSBnZW5lcmljUGFy
c2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKICAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjEsNyArMTYxLDcgQEAgT3B0aW9u
YWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tp
cHBpbmdQb2xpY3kgc2tpcCkKIAogLy8gb25seSB1c2VkIHRvIHBhcnNlIGxhcmdlQXJjRmxhZyBh
bmQgc3dlZXBGbGFnIHdoaWNoIG11c3QgYmUgYSAiMCIgb3IgIjEiCiAvLyBhbmQgbWlnaHQgbm90
IGhhdmUgYW55IHdoaXRlc3BhY2UvY29tbWEgYWZ0ZXIgaXQKLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZm
ZXIuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4MiwyMiArMTgy
LDIyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBn
ZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpCiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLU9w
dGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyKQorc3RkOjpvcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlQXJjRmxhZyhidWZm
ZXIpOwogfQogCi1PcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxVQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGdlbmVyaWNQYXJz
ZUFyY0ZsYWcoYnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+
IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQorc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51
bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPHN0ZDo6
cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2lu
ZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9h
dCwgZmxvYXQ+PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAg
ICAgIGlmICgheCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTYsMTIg
KzIxNiwxMiBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJP
cHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdAogICAgIH0pOwogfQogCi1PcHRpb25h
bDxGbG9hdFBvaW50PiBwYXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcp
CiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0
byBidWZmZXIpIC0+IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHsKKyAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4gewogICAgICAgICBpZiAoIXNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjM2LDkgKzIzNiw5IEBA
IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5n
KQogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJz
aW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEZsb2F0UmVjdD4geworICAg
IHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikg
LT4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzKGJ1ZmZlcik7CiAgICAgICAgIAogICAgICAgICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZm
ZXIpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNv
bnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxT
dHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gcGFyc2VHbHlwaE5hbWUoY29uc3QgU3RyaW5nVmlldyYg
c3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNz
aW5nLgogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJz
ZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiAKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VV
bmljb2RlUmFuZ2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmlj
b2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4gYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGhSZW1h
aW5pbmcoKTsKICAgICBpZiAobGVuZ3RoIDwgMiB8fCBidWZmZXJbMF0gIT0gJ1UnIHx8IGJ1ZmZl
clsxXSAhPSAnKycpCkBAIC0zNjEsNyArMzYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UK
ICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2Vz
LCBIYXNoU2V0PFN0cmluZz4+PiBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhh
c2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBt
aXNzaW5nLgogCkBAIC0zOTMsNyArMzkzLDcgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVS
YW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY28KICAg
ICB9KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFBv
aW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBh
dXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgIGlmICgheCkKQEAgLTQwNiwxMiArNDA2
LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8
RmxvYXRQb2ludD4gZ2VuZXJpY1BhcnNlRmxvYXRQCiAgICAgcmV0dXJuIEZsb2F0UG9pbnQgeyAq
eCwgKnkgfTsKIH0KIAotT3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewog
ICAgIHJldHVybiBnZW5lcmljUGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZsb2F0UG9pbnQoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNl
RmxvYXRQb2ludChidWZmZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGll
cy5oCmluZGV4IDI3ZmE5ZDRkMTk3ZDc3NzQ0MjY4ZDVjNGE4Mzg3YzAzODFlODQxN2QuLmFiZGMw
Yjk2ZjRiODc5YjExM2U1ZmNkMzIxNGJiM2I1ODBiNzg1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmgKQEAgLTM3LDIzICszNywyMyBAQCBlbnVtIGNsYXNzIFN1ZmZp
eFNraXBwaW5nUG9saWN5IHsKICAgICBTa2lwCiB9OwogCi1PcHRpb25hbDxmbG9hdD4gcGFyc2VO
dW1iZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9
IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKTsKLU9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3Vm
Zml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNv
bnN0IFN0cmluZ1ZpZXcmLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9IFN1ZmZpeFNraXBwaW5nUG9s
aWN5OjpTa2lwKTsKK3N0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNp
bmdCdWZmZXI8TENoYXI+JiwgU3VmZml4U2tpcHBpbmdQb2xpY3kgPSBTdWZmaXhTa2lwcGluZ1Bv
bGljeTo6U2tpcCk7CitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQ
b2xpY3k6OlNraXApOworc3RkOjpvcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3Ry
aW5nVmlldyYsIFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNr
aXApOwogCi1PcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRp
b25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcm
KTsKIAotT3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENo
YXI+Jik7Ci1PcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQ
YXJzaW5nQnVmZmVyPFVDaGFyPiYpOwogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZVBvaW50
KGNvbnN0IFN0cmluZ1ZpZXcmKTsKLU9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25z
dCBTdHJpbmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0
IFN0cmluZ1ZpZXcmKTsKIAotT3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0
cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Ci1PcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZs
b2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Citz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVm
ZmVyPFVDaGFyPiYpOwogCi1PcHRpb25hbDxzdGQ6OnBhaXI8VW5pY29kZVJhbmdlcywgSGFzaFNl
dDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyhjb25zdCBTdHJpbmdWaWV3Jik7
Ci1PcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3Ry
aW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpOworc3Rk
OjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1Zp
ZXcmKTsKIAogCiAvLyBTVkcgYWxsb3dzIHNldmVyYWwgZGlmZmVyZW50IHdoaXRlc3BhY2UgY2hh
cmFjdGVyczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCmluZGV4IDUxNTBjODI3
ZDU0NjNjOTYyMDE3OTFhZjk0NGU3Y2VlN2FiODllZTguLjM0NzgxZDAzZmQ5YjJmMjUyODMzZmM2
MWI1NjI0NTQ1NThjOGUzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
QmxlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApA
QCAtMTIwLDcgKzEyMCw3IEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb24+IHVzaW5nIEludm9rZVJlc3VsdCA9IHR5cGVuYW1lIHN0ZDo6aW52b2tl
X3Jlc3VsdF90PEZ1bmN0aW9uLCBTVkdQYXRoU291cmNlPjo6dmFsdWVfdHlwZTsKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uPiB1c2luZyBSZXN1bHRQYWlyID0gc3RkOjpwYWlyPEludm9rZVJl
c3VsdDxGdW5jdGlvbj4sIEludm9rZVJlc3VsdDxGdW5jdGlvbj4+OwotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rpb24+IHN0YXRpYyBPcHRpb25hbDxSZXN1bHRQYWlyPEZ1bmN0aW9uPj4gcHVsbEZy
b21Tb3VyY2VzKFNWR1BhdGhTb3VyY2UmIGZyb21Tb3VyY2UsIFNWR1BhdGhTb3VyY2UmIHRvU291
cmNlLCBGdW5jdGlvbiYmIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdFBhaXI8RnVuY3Rpb24+PiBwdWxsRnJvbVNvdXJjZXMo
U1ZHUGF0aFNvdXJjZSYgZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSYgdG9Tb3VyY2UsIEZ1bmN0
aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgSW52b2tlUmVzdWx0PEZ1bmN0aW9uPiBmcm9tUmVzdWx0
OwogICAgIGlmIChmcm9tU291cmNlLmhhc01vcmVEYXRhKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IGRmNTY3YTYzYTlkOWFkODNh
MGNjNjU0ZTNkYjljZWU2OTU4N2E4OTguLjk0NmVlMDQ3Y2UwOTAzODVjNzM5Y2NhY2RkMzQ3ZjVh
NzhlZWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291
cmNlLmNwcApAQCAtMzksNDAgKzM5LDQwIEBAIFNWR1BhdGhTZWdUeXBlIFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdTZWdtZW50VHlwZSgpKTsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZVNWR1NlZ21l
bnRUeXBlKCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdTZWdtZW50VHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNl
TW92ZVRvU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21l
bnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogewogICAg
IE1vdmVUb1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZs
b2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNv
dXJjZTo6TGluZVRvU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRv
U2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNW
R1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogewogICAgIExpbmVU
b1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZsb2F0UG9p
bnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxp
bmVUb0hvcml6b250YWxTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVU
b0hvcml6b250YWxTZWdtZW50KCkKIHsKICAgICBMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCBzZWdt
ZW50OwogICAgIHNlZ21lbnQueCA9IHJlYWRGbG9hdCgpOwogICAgIHJldHVybiBzZWdtZW50Owog
fQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1Bh
dGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCitzdGQ6Om9w
dGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudD4gU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKIHsKICAgICBMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnkgPSByZWFkRmxvYXQoKTsKICAg
ICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1
YmljU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU2Vn
bWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+
IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogewog
ICAgIEN1cnZlVG9DdWJpY1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnBvaW50MSA9IHJl
YWRGbG9hdFBvaW50KCk7CkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZl
CiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkKIHsKICAgICBDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50
IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5wb2ludDIgPSByZWFkRmxvYXRQb2ludCgpOwpAQCAtODks
NyArODksNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdt
ZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFycwogICAgIHJldHVybiBzZWdtZW50Owog
fQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQorc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQogewogICAg
IEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5wb2ludDEgPSBy
ZWFkRmxvYXRQb2ludCgpOwpAQCAtOTcsMTQgKzk3LDE0IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VDCiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpCiB7CiAgICAgQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50
ID0gcmVhZEZsb2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFy
c2VBcmNUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21l
bnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiB7CiAgICAg
QXJjVG9TZWdtZW50IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5yeCA9IHJlYWRGbG9hdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaAppbmRleCAyNjRkZmYy
NTU4ZTQwMzViZmQ5MWRiMDdkMThlNGM1NmRjZGJjNmExLi5iNWU5NDMzOTlmMmRkZTNkODEzOGE3
YWEwNGNiNmUwZTIxZjEzYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UuaApAQCAtMzQsMTYgKzM0LDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3Zl
VG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgU1ZHUGF0aFNlZ1R5cGUg
bmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxNb3Zl
VG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5l
VG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5l
VG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFs
OwotICAgIE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNh
bFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJz
ZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNT
bW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKLSAg
ICBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdt
ZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0
aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRv
VmVydGljYWxTZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdt
ZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50
PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsOwogCiAjaWYg
Q09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3QuaAppbmRleCBjZTg3YjBiNjJlNjY5Zjg3ZDMzOTQzNGM0NGYwNzQ1
YjVkOWM1NzBkLi4xNmIzNTRlMjkxYzc4ZWQxYmU3OTQ0YzM4MjMxNDAxNjU4ODUxODI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaApAQCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gbV9wYXRoQnl0ZVN0cmVhbTsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPFBhdGg+IG1fcGF0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
UGF0aD4gbV9wYXRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFNvdXJjZS5jcHAKaW5kZXggNjY0NWM2NzNjZjY0N2Q0ZDJjNTMwNDBiNTVjNTU2NDA3YzNkNmZi
NC4uZWJmOTM3YjhkZTllNThmYWM5MWQzMTU0ODY1MWMyMzU5MjE5Y2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNW
R1BhdGhTZWdUeXBlIFNWR1BhdGhTZWdMaXN0U291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2Vn
VHlwZSkKICAgICByZXR1cm4gcGF0aFNlZ1R5cGU7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTZWdU
eXBlPiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSgpCitzdGQ6Om9w
dGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdt
ZW50VHlwZSgpCiB7CiAgICAgbV9zZWdtZW50ID0gbV9wYXRoU2VnTGlzdC5hdChtX2l0ZW1DdXJy
ZW50KTsKICAgICBTVkdQYXRoU2VnVHlwZSBwYXRoU2VnVHlwZSA9IHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdUeXBlPihtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkpOwpAQCAtNTYsNyArNTYsNyBAQCBP
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlU1ZHU2Vn
bWVudFR5cGUoKQogICAgIHJldHVybiBwYXRoU2VnVHlwZTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0
aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlTW92ZVRv
U2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogewogICAgIEFTU0VSVCht
X3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNl
Z01vdmVUb0FicyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ01vdmVUb1Jl
bCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21l
bnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoCiAgICAgcmV0dXJu
IHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VM
aW5lVG9TZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50KTsKICAgICBBU1NFUlQobV9z
ZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9BYnMgfHwgbV9zZWdtZW50LT5w
YXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9SZWwpOwpAQCAtNzgsNyArNzgsNyBAQCBPcHRp
b25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6
cGFyc2VMaW5lVG9TZWdtZW50KAogICAgIHJldHVybiBzZWdtZW50OwogfQogCi1PcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2U6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBh
cnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwog
ICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0xpbmVUb0hvcml6
b250YWxBYnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9Ib3Jp
em9udGFsUmVsKTsKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmUKICAg
ICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVy
dGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNl
Z21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21l
bnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7
CiAgICAgQVNTRVJUKG1fc2VnbWVudCk7CiAgICAgQVNTRVJUKG1fc2VnbWVudC0+cGF0aFNlZ1R5
cGUoKSA9PSBQYXRoU2VnTGluZVRvVmVydGljYWxBYnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlw
ZSgpID09IFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0
aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlz
dFNvdXJjZTo6cGFyc2VMaW5lVG8KICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6
OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9D
dWJpY1NlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3Nl
Z21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FicyB8fCBtX3NlZ21l
bnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbCk7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZH
UGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVUb0MKICAgICByZXR1cm4gc2VnbWVudDsKIH0K
IAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZH
UGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6
Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1Bh
dGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKQogewogICAg
IEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkg
PT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBl
KCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbCk7CkBAIC0xMjUsNyArMTI1LDcgQEAg
T3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0
aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3UKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0
U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNl
OjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50
KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1JlbCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1
cnYKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdt
ZW50KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhT
ZWdMaXN0U291cmNlOjpwYXIKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VBcmNU
b1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiB7CiAgICAgQVNTRVJUKG1f
c2VnbWVudCk7CiAgICAgQVNTRVJUKG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2Vn
QXJjQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQXJjUmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKaW5kZXggOTA2NzUyMDczMmVh
MjkyZWRjNGUxMWYyN2ZhNDgwMDkxZjgyMjY4Ny4uMTFkZGJmZTc5OTAzNzE4ZThkNWQxYzU4N2U2
NDZhMDM5ZjhkOTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNl
LmgKQEAgLTM4LDE2ICszOCwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbW92ZVRvTmV4dFRva2Vu
KCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5k
KFNWR1BhdGhTZWdUeXBlKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBw
YXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TW92ZVRvU2VnbWVudD4g
cGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGluZVRvU2VnbWVudD4g
cGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRp
b25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3Vi
aWNTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBm
aW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEFyY1Rv
U2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNW
R1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2Vn
bWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRv
UXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFy
Y1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5hbDsKIAogICAgIGNvbnN0IFNWR1Bh
dGhTZWdMaXN0JiBtX3BhdGhTZWdMaXN0OwogICAgIFJlZlB0cjxTVkdQYXRoU2VnPiBtX3NlZ21l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2UuaAppbmRleCA2MDJhNThhODhjZTczY2Q4MDlm
N2VhZGE4OTU4Y2UxMmIwNzNkM2ZhLi43OTY2MDM0YzY2YTNmNmVmYjZhYjM5NjhkNDk2Nzg5MWY3
ZjYwNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU291cmNlLmgKQEAgLTM1LDUxICszNSw1MSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG1vdmVUb05leHRUb2tlbigpID0gMDsKICAgICB2
aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3Vz
Q29tbWFuZCkgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFy
c2VTVkdTZWdtZW50VHlwZSgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSA9IDA7CiAKICAgICBzdHJ1Y3QgTW92ZVRv
U2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQ7CiAgICAgfTsKLSAgICB2
aXJ0dWFsIE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpID0gMDsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdt
ZW50KCkgPSAwOwogCiAgICAgc3RydWN0IExpbmVUb1NlZ21lbnQgewogICAgICAgICBGbG9hdFBv
aW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMaW5lVG9TZWdt
ZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpID0gMDsKIAogICAgIHN0cnVjdCBM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCB7CiAgICAgICAgIGZsb2F0IHggPSAwOwogICAgIH07Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9I
b3Jpem9udGFsU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSA9IDA7CiAK
ICAgICBzdHJ1Y3QgTGluZVRvVmVydGljYWxTZWdtZW50IHsKICAgICAgICAgZmxvYXQgeSA9IDA7
CiAgICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFy
c2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7
CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1YmljU2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQg
cG9pbnQxOwogICAgICAgICBGbG9hdFBvaW50IHBvaW50MjsKICAgICAgICAgRmxvYXRQb2ludCB0
YXJnZXRQb2ludDsKICAgICB9OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8Q3VydmVUb0N1YmljU2Vn
bWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSA9
IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCB7CiAgICAgICAgIEZs
b2F0UG9pbnQgcG9pbnQyOwogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1
cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dCgpID0gMDsKIAogICAgIHN0cnVjdCBDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCB7CiAgICAgICAg
IEZsb2F0UG9pbnQgcG9pbnQxOwogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAg
IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSA9
IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgewogICAgICAg
ICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
U2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSA9IDA7
CiAKICAgICBzdHJ1Y3QgQXJjVG9TZWdtZW50IHsKICAgICAgICAgZmxvYXQgcnggPSAwOwpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgc3dlZXAgPSBmYWxzZTsKICAgICAg
ICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKICAgICB9OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8
QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291
cmNlLmNwcAppbmRleCA5YmJlOTMzOWQ2MmE1ZjIzMmJjZmEwODlmOGY2NzMwMWJhNGUyZTg0Li5m
ZjFiZjJhOTE2MDU4M2Q5ZjNmNDQ1MmY0Y2M2YTE2ZWEyZjZjMjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZH
UGF0aFN0cmluZ1NvdXJjZTo6bW92ZVRvTmV4dFRva2VuKCkKICAgICByZXR1cm4gc2tpcE9wdGlv
bmFsU1ZHU3BhY2VzKG1fYnVmZmVyMTYpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBuZXh0Q29tbWFuZEhlbHBl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIFNWR1BhdGhTZWdU
eXBlIHByZXZpb3VzQ29tbWFuZCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gbmV4dENvbW1hbmRIZWxwZXIoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBTVkdQYXRoU2VnVHlwZSBw
cmV2aW91c0NvbW1hbmQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIHJlbWFpbmluZyBjb29yZGluYXRl
cyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgogICAgIGlmICgoKmJ1ZmZlciA9PSAnKycgfHwgKmJ1
ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAnLicgfHwgaXNBU0NJSURpZ2l0KCpidWZmZXIpKQpA
QCAtODYsNyArODYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGPiBkZWNsdHlwZShhdXRvKSBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzZShGJiYgZnVuY3RvcikKICAgICByZXR1cm4gZnVuY3Rvciht
X2J1ZmZlcjE2KTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdT
b3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlw
ZT4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSgpCiB7CiAgICAgcmV0
dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gU1ZHUGF0aFNlZ1R5cGUgewogICAgICAgICBh
dXRvIGNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0xMzcsOSArMTM3LDkgQEAgT3B0aW9uYWw8U1ZH
UGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQog
ICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVU
b1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlv
bmFsPE1vdmVUb1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAt
PiBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2lu
dCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1MCw5ICsxNTAsOSBAQCBPcHRp
b25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpw
YXJzZU1vdmVUb1NlZ21lbnQoKQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNl
OjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQo
KQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShh
dXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFy
c2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHsKICAg
ICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAg
ICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE2Myw5ICsxNjMsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBT
VkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogICAgIH0pOwogfQogCi1P
cHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0
cmluZ1NvdXJjZTo6cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291
cmNlOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKIHsKLSAgICByZXR1cm4gcGFyc2Uo
W10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gewor
ICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8TGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVy
KTsKICAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE3Niw5ICsxNzYsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVAogICAgIH0pOwogfQogCi1P
cHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhTdHJp
bmdTb3VyY2U6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpw
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8m
IGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvVmVydGljYWxTZWdtZW50PiB7CisgICAgcmV0dXJu
IHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNl
Z21lbnQ+IHsKICAgICAgICAgYXV0byB5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAg
aWYgKCF5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4OSw5ICsxODks
OSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVgogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJz
ZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1Nl
Z21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFs
PEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVy
KSAtPiBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byBw
b2ludDEgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIE9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3Vy
Y2U6OnBhcnNlQ3VydmVUb0N1CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3Vy
dmVUb0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVU
b0N1YmljU21vb3RoU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZl
cikgLT4gT3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4geworICAgIHJldHVybiBw
YXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3Ro
U2VnbWVudD4gewogICAgICAgICBhdXRvIHBvaW50MiA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIp
OwogICAgICAgICBpZiAoIXBvaW50MikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yMzAsOSArMjMwLDkgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXIKICAgICB9KTsKIH0K
IAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQorc3RkOjpvcHRp
b25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmlu
Z1NvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBh
cnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+
IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEN1
cnZlVG9RdWFkcmF0aWNTZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcG9pbnQxID0gcGFyc2VGbG9h
dFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQxKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTI0OCw5ICsyNDgsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNl
OjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2
ZQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFk
cmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlVG9RdWFk
cmF0aWNTbW9vdGhTZWdtZW50KCkKIHsKLSAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVy
KSAtPiBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4geworICAgIHJldHVy
biBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQ
b2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2MSw5ICsyNjEsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291
cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6
cGFycwogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+
IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQXJjVG9TZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUFy
Y1RvU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0
aW9uYWw8QXJjVG9TZWdtZW50PiB7CisgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikg
LT4gc3RkOjpvcHRpb25hbDxBcmNUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byByeCA9IHBhcnNl
TnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICghcngpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgKaW5kZXgg
Zjg4YjFhM2MzM2IyYzA4ZGJlNjU3NzBiZDY3NzgyMWU2MzUyN2JjYS4uZDFmMzhmMTQ1ODYxMzQz
ZTRkZmFlZDQ0ZDMxMDk3MDM5Nzg4ZDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTdHJpbmdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0
cmluZ1NvdXJjZS5oCkBAIC0zNSwxNiArMzUsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdmVU
b05leHRUb2tlbigpIGZpbmFsOwogICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1Bh
dGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxTVkdQYXRo
U2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpIGZpbmFsOwotICAgIE9wdGlvbmFsPE1vdmVU
b1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVU
b1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVU
b0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7
Ci0gICAgT3B0aW9uYWw8TGluZVRvVmVydGljYWxTZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2Fs
U2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9DdWJpY1Nt
b290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsOwotICAg
IE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21l
bnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRp
b25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJjVG9TZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBm
aW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVUb0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxp
bmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21l
bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+
IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50
PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJjVG9TZWdtZW50KCkgZmluYWw7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gZGVjbHR5cGUoYXV0bykgcGFyc2UoRnVuY3Rpb24m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUuaAppbmRleCA3NmM4ODgzOTc2NzYxM2UzOTFlOGRmNDE1ZDY0YWJkYmI2ODQ5YzAxLi41MTQw
ZjY5ZGY4Mjc2YjVlNzQzNmIyOGZkNTRjODMxN2MyOTlhYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiB0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWU+IHsKICAgICBzdGF0aWMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSgp
OyB9CiAgICAgc3RhdGljIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUo
c3RyaW5nKTsgfQotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5p
dGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAppbmRleCBlNWI4ZmVkZDAyZjM0ZWYxOWJkN2NlYzZiYTc4MmU4MDk3NjM5NzA0Li4xOGMzM2I3
Y2M5YzNmZmIyN2E0ZGNmMWYwYWZjZDlkMjgwYmQ3YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0
ZToKIAogICAgIHVpbnQzMl90IGNhbGN1bGF0ZUNoZWNrc3VtKHNpemVfdCBzdGFydGluZ09mZnNl
dCwgc2l6ZV90IGVuZGluZ09mZnNldCkgY29uc3Q7CiAKLSAgICB2b2lkIHByb2Nlc3NHbHlwaEVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0
IFNWR0dseXBoRWxlbWVudCosIGZsb2F0IGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQg
ZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5nJiBjb2RlcG9pbnRzLCBPcHRpb25h
bDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7CisgICAgdm9pZCBwcm9jZXNzR2x5cGhFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdH
bHlwaEVsZW1lbnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1
bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKFNWR1RvT1RG
Rm9udENvbnZlcnRlcjo6KkZvbnRBcHBlbmRpbmdGdW5jdGlvbikoKTsKICAgICB2b2lkIGFwcGVu
ZFRhYmxlKGNvbnN0IGNoYXIgaWRlbnRpZmllcls0XSwgRm9udEFwcGVuZGluZ0Z1bmN0aW9uKTsK
QEAgLTIyNCwxMyArMjI0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZFZhbGlkQ0ZG
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAgVmVjdG9yPGNoYXI+IHRyYW5zY29kZUdseXBo
UGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhF
bGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3Q7CisgICAgVmVj
dG9yPGNoYXI+IHRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1l
bnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4m
IGJvdW5kaW5nQm94KSBjb25zdDsKIAogICAgIHZvaWQgYWRkQ29kZXBvaW50UmFuZ2VzKGNvbnN0
IFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PEdseXBoPiYgZ2x5cGhTZXQpIGNvbnN0OwogICAgIHZv
aWQgYWRkQ29kZXBvaW50cyhjb25zdCBIYXNoU2V0PFN0cmluZz4mIGNvZGVwb2ludHMsIEhhc2hT
ZXQ8R2x5cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAgICAgdm9pZCBhZGRHbHlwaE5hbWVzKGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgZ2x5cGhOYW1lcywgSGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBj
b25zdDsKICAgICB2b2lkIGFkZEtlcm5pbmdQYWlyKFZlY3RvcjxLZXJuaW5nRGF0YT4mLCBTVkdL
ZXJuaW5nUGFpciYmKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzaXplX3QgYXBw
ZW5kS0VSTlN1YnRhYmxlKE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2Vybmlu
Z1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVyYWdlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzaXplX3QgYXBwZW5kS0VSTlN1YnRhYmxlKHN0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1Bh
aXI+IChUOjoqYnVpbGRLZXJuaW5nUGFpcikoKSBjb25zdCwgdWludDE2X3QgY292ZXJhZ2UpOwog
ICAgIHNpemVfdCBmaW5pc2hBcHBlbmRpbmdLRVJOU3VidGFibGUoVmVjdG9yPEtlcm5pbmdEYXRh
PiwgdWludDE2X3QgY292ZXJhZ2UpOwogCiAgICAgdm9pZCBhcHBlbmRMaWdhdHVyZVN1YnRhYmxl
KHNpemVfdCBzdWJ0YWJsZVJlY29yZExvY2F0aW9uKTsKQEAgLTEwNTMsNyArMTA1Myw3IEBAIHZv
aWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphZGRLZXJuaW5nUGFpcihWZWN0b3I8S2VybmluZ0Rh
dGE+JiBkYXRhLCBTVkdLZXJuaW5nCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgc2l6ZV90IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kS0VSTlN1YnRhYmxlKE9w
dGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVp
bnQxNl90IGNvdmVyYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTVkdU
b09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5TdWJ0YWJsZShzdGQ6Om9wdGlvbmFsPFNWR0tl
cm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVy
YWdlKQogewogICAgIFZlY3RvcjxLZXJuaW5nRGF0YT4ga2VybmluZ0RhdGE7CiAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8VD4obV9mb250RWxlbWVudCkpIHsKQEAgLTEx
MzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jZmZEYXRhLmFwcGVuZChyTW92ZVRv
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kaW5nQm94KCkgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3goKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fYm91bmRpbmdCb3g7CiAgICAgfQpAQCAtMTIyNywxMSArMTIyNywx
MSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxjaGFyPiYgbV9jZmZEYXRhOwogICAgIEZsb2F0UG9p
bnQgbV9zdGFydGluZ1BvaW50OwogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50OwotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbV9ib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbV9ib3VuZGluZ0JveDsKICAgICBmbG9hdCBtX3VuaXRzUGVyRW1TY2FsYXI7CiB9OwogCi1W
ZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZs
b2F0IHdpZHRoLCBjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwg
T3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0CitWZWN0b3I8Y2hhcj4gU1ZH
VG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25z
dCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3QKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0
OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBWZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVy
dGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25zdCBTVkdFbAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5
cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBj
b25zdCBTVkdHbHlwaEVsZW1lbnQqIGdseXBoRWxlbWVudCwgZmxvYXQgZGVmYXVsdEhvcml6b250
YWxBZHZhbmNlLCBmbG9hdCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNv
ZGVwb2ludHMsIE9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KQordm9pZCBTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5
cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCogZ2x5cGhFbGVt
ZW50LCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+JiBib3VuZGluZ0JveCkKIHsKICAgICBib29sIG9rOwogICAgIGZsb2F0IGhvcml6b250YWxB
ZHZhbmNlID0gc2NhbGVVbml0c1BlckVtKGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omhvcml6X2Fkdl94QXR0cikudG9G
bG9hdCgmb2spKTsKQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVy
dGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5n
CiAgICAgICAgIHZlcnRpY2FsQWR2YW5jZSA9IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2U7CiAgICAg
bV9hZHZhbmNlSGVpZ2h0TWF4ID0gc3RkOjptYXgobV9hZHZhbmNlSGVpZ2h0TWF4LCB2ZXJ0aWNh
bEFkdmFuY2UpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbHlwaEJvdW5kaW5nQm94Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbHlwaEJvdW5kaW5nQm94OwogICAgIGF1dG8g
cGF0aCA9IHRyYW5zY29kZUdseXBoUGF0aHMoaG9yaXpvbnRhbEFkdmFuY2UsIGdseXBoT3JNaXNz
aW5nR2x5cGhFbGVtZW50LCBnbHlwaEJvdW5kaW5nQm94KTsKICAgICBpZiAoIXBhdGguc2l6ZSgp
KSB7CiAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHVzZSBhIGZhbGxiYWNrIGZvbnQgcmF0aGVy
IHRoYW4gdXNlIGEgZm9udCB3aXRob3V0IGFsbCBpdHMgZ2x5cGhzLgpAQCAtMTQwMiw3ICsxNDAy
LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3Qg
U1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogCiAgICAgcG9wdWxhdGVFbXB0eUdseXBoQ2hh
clN0cmluZyhtX2VtcHR5R2x5cGhDaGFyU3RyaW5nLCBzX291dHB1dFVuaXRzUGVyRW0pOwogCi0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gYm91bmRpbmdCb3g7CiAgICAgaWYgKG1fbWlzc2luZ0dseXBoRWxlbWVudCkKICAg
ICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhFbGVtZW50LCBudWxscHRy
LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIFN0cmlu
ZygpLCBib3VuZGluZ0JveCk7CiAgICAgZWxzZSB7CkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBib29s
IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29udmVydFNWR1RvT1RGRm9udCgpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChj
b25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXI+
PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252ZXJ0ZXIoZWxlbWVudCk7CiAgICAgaWYgKGNv
bnZlcnRlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RG
Rm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmgKaW5kZXggMzhiOTFkZDM1NmVmMTNmYTY1MDkxZTg0MWRiNWVhODA3Mzk2MjkzOS4uODc1
MTkxMzRiNzI2ODYzZDA5Y2QxM2NjMjg3YWJjMzg1NTJhNGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBAIC0zMSw2ICszMSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQ7CiAKLU9wdGlvbmFsPFZlY3Rvcjxj
aGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpv
cHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVs
ZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuY3BwCmluZGV4IDg5Y2JkNzk2MzNiNzYwYjEwN2MwMDRhNGYyYTVjMjBjNmM0
Mjg3ZjYuLjUxMzJiYmVkNzVkMTFlZTBhZDU5ZmM1MGU3ZThiMWRlZWM3M2NmN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGludCBwYXJzZVRyYW5zZm9ybVBhcmFt
TGlzdChTdHJpbmdQYXJzaW4KIHN0YXRpYyBjb25zdGV4cHIgaW50IHJlcXVpcmVkVmFsdWVzRm9y
VHlwZVtdID0gIHsgMCwgNiwgMSwgMSwgMSwgMSwgMSB9Owogc3RhdGljIGNvbnN0ZXhwciBpbnQg
b3B0aW9uYWxWYWx1ZXNGb3JUeXBlW10gPSAgeyAwLCAwLCAxLCAxLCAyLCAwLCAwIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zv
cm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZUdlbmVyaWMoU1ZHVHJhbnNmb3JtVmFsdWU6OlNW
R1RyYW5zZm9ybVR5cGUgdHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU+IHBhcnNlVHJhbnNmb3JtVmFsdWVHZW5lcmljKFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIFN0cmluZ1BhcnNpbmdCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAodHlwZSA9PSBTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlPiBwYXJzZVRyYW5zZm8KICAgICByZXR1
cm4gdHJhbnNmb3JtOwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNm
b3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNm
b3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zv
cm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQ
YXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9y
bVZhbHVlR2VuZXJpYyh0eXBlLCBidWZmZXIpOwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYg
YnVmZmVyKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlw
ZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVy
biBwYXJzZVRyYW5zZm9ybVZhbHVlR2VuZXJpYyh0eXBlLCBidWZmZXIpOwogfQpAQCAtMTYzLDcg
KzE2Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4
cHIgQ2hhcmFjdGVyVHlwZSB0cmFuc2xhdGVEZXNjW10KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSByb3RhdGVEZXNjW10gPSAg
eydyJywgJ28nLCAndCcsICdhJywgJ3QnLCAnZSd9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG1hdHJpeERlc2NbXSA9ICB7
J20nLCAnYScsICd0JywgJ3InLCAnaScsICd4J307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
VHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFy
c2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTg4LDE5ICsxODgsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm0K
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBl
KFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3Ry
aW5nLCBbXShhdXRvIGJ1ZmZlcikgewogICAgICAgICByZXR1cm4gcGFyc2VUcmFuc2Zvcm1UeXBl
KGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdU
cmFuc2Zvcm1UeXBlPiBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3Jt
VHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBw
YXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5z
Zm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6
OnBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKGJ1ZmZlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAppbmRleCBiNWIzYWFkOWEzMWU1NTRmMGY0NWQ0
M2RjMmJhMGVlYTg1MDk2NTFkLi5iMDVkN2QzMzAzNTEwNDQ3MmZjOWI0OTRjZjkzMWE4NTQzM2Q0
OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKQEAgLTMxLDEyICszMSwx
MiBAQCBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDogcHVibGljIFNWR0xvY2F0YWJsZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtYWJsZSgpOwogCi0gICAgc3RhdGljIE9wdGlv
bmFsPFNWR1RyYW5zZm9ybVZhbHVlPiBwYXJzZVRyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZh
bHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFy
c2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdU
cmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKIAotICAgIHN0YXRp
YyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFu
c2Zvcm1UeXBlKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TENoYXI+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdUcmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBwYXJz
ZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VU
cmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1T
Y29wZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyB9
CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKaW5kZXggZGQxYjg5
MjBjZDZmMGMwYjg1NmM4ZjJiNDYzNGJhZGE4Y2JhYTA3ZC4uYjQzZTFmMzk0NTUyMTcwMzMxNDNh
MDE3OTg3YjA0MDM3OTBiOWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNWR1ZLZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdWS2VybkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
T3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZLZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtl
cm5pbmdQYWlyKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZLZXJu
RWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogQ2FuIHRoaXMgYmUgc2hhcmVkIHdpdGggU1ZHSEtlcm5FbGVtZW50OjpidWlsZFZlcnRpY2Fs
S2VybmluZ1BhaXI/CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCA0NjIy
N2RkNjQxMmJkMGQ3ZTYwMWUwNTc1ZjBmOTI4ZGFmZDVjNzE5Li40NTExMGJhMGMyZWM3ZGQ0NGFi
YzJmMDJmOTg0OGZhZWFlNTBiMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vktlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5o
CkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIFNWR1ZLZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBT
VkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1ZLZXJuRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgT3B0aW9uYWw8U1ZH
S2VybmluZ1BhaXI+IGJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IGJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFNWR1ZLZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCBkMjdmOGU1
MjJkNzQ2MWU2ZGY5MTc4MGM1Yzk3OTdkMDg5MWExMjI1Li5lMTBlNjg4Mzc4YTg1ZjQzYzRmZWFj
ZDNkNTdlNmIwZDJmMDEwOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9v
bUFuZFBhbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBkaXNhYmxlW10gPSB7
ICdkJywgJ2knLCAncycsICdhJywgJ2InLCAnbCcsICdlJyB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG1hZ25pZnlbXSA9
IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knIH07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFy
c2Vab29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBi
dWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgaWYgKHNraXBDaGFyYWN0
ZXJzRXhhY3RseShidWZmZXIsIGRpc2FibGU8Q2hhcmFjdGVyVHlwZT4pKQogICAgICAgICByZXR1
cm4gU1ZHWm9vbUFuZFBhbkRpc2FibGU7CkBAIC00MSwxMiArNDEsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBw
YXJzZVpvb21BbmQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxTVkda
b29tQW5kUGFuVHlwZT4gU1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNp
bmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBl
PiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hh
cj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhidWZmZXIp
OwogfQogCi1PcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gU1ZHWm9vbUFuZFBhbjo6cGFyc2Va
b29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFNWR1pvb21BbmRQYW5UeXBlPiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2Vab29t
QW5kUGFuR2VuZXJpYyhidWZmZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1pvb21BbmRQYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKaW5k
ZXggMzI2ODMyMTE4NTE0YWU5YjcyM2NiYzc0NmZmYTA5MWU4MGQ5Y2UzYi4uYTEyYjQ2YzI3ZjZi
M2FmNTI5Mzc4NWFjMjUzNmNiMTliNDE0YzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdab29tQW5k
UGFuKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBl
PiBwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IHBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQ
YW5UeXBlPiBwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFu
KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7CiAKIHByaXZhdGU6CiAgICAgU1ZHWm9vbUFu
ZFBhblR5cGUgbV96b29tQW5kUGFuIHsgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHWm9vbUFuZFBhblR5
cGU+Ojppbml0aWFsVmFsdWUoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IDkwZDUy
ODY4YWNjMzIxNzcyNTk4NGViYWY0ZDFjNDY2NGMwZWE1MTIuLjVlZGYxYjU1OTk0YjJiMzVhNWRi
NzYzMDExNmVkZDA0MDYwZGQyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTk5LDcg
Kzk5LDcgQEAgcHVibGljOgogICAgIC8vIE1hbmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0
aGUgb3duZXIuCiAgICAgdm9pZCBzZXREaXJ0eSgpIG92ZXJyaWRlIHsgbV9zdGF0ZSA9IFNWR1By
b3BlcnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQotICAgIE9wdGlv
bmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByaW1pdGl2ZVByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKaW5kZXggZWUxMWU2ZThiNjMxNGNkYjA4OWI4YjMy
ZGI2OWUwMzU5NWFlMGM0ZS4uZDMxY2RlMzY3NGYwOWM2MjlmOWFiY2UxYzA2OTkwNTAxMWQyMTVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cmltaXRpdmVQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KICAgICB2b2lk
IHNldERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNldERpcnR5KCk7IH0KICAgICBib29s
IGlzRGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsg
fQotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3lu
Y2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0K
IAogICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgog
ICAgIGNvbnN0IFByb3BlcnR5VHlwZSYgY3VycmVudFZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAppbmRleCBk
MDFjYTRmYmRkODY0ZmIxNDE5NDE4OTcyMTMxY2I4YzNlMTFkZDM3Li43MWRkNDJhOWVjN2E0NDIz
OWJhZjBmOGI4MTc0YTM3MTBjODVjNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBDb250cm9sIHRoZSBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiB0aGUgYXR0cmli
dXRlIGFuZCBpdHMgcmVmbGVjdGlvbiBpbiBiYXNlVmFsLgogICAgIHZpcnR1YWwgYm9vbCBpc0Rp
cnR5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlydHko
KSB7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5j
aHJvbml6ZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIAogICAgIC8vIENvbnRyb2wg
dGhlIGFuaW1hdGlvbiBsaWZlIGN5Y2xlLgogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7
IHJldHVybiBtX2FuaW1hdG9ycy5jb21wdXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5o
CmluZGV4IDNlZDllZjAwN2M4MTZkNjYwY2Q1YWIxMDE2YWIyMTI3MTMzN2VmODAuLmNiMDcwZDBi
NTI0YzIzZTE5YTEzMzRhM2I2ZjAzYzNhMjFiZGUxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5o
CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbmNlLT5pbnN0YW5j
ZVN0b3BBbmltYXRpb24oKnRoaXMpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxj
dWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fZnVuY3Rpb24uY2FsY3VsYXRlRGlzdGFuY2UodGFyZ2V0RWxlbWVudCwg
ZnJvbSwgdG8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oCmluZGV4IDgyNGFiNDk2N2FhNmIxN2ZhOWQ4
NjNkZWUwZmJkZjZlYThmYjU2MTUuLmY1NDY2MDhlNWU2NmU0YjUwYjBjODg3MDMzMmMzOGY4Mjdl
MjhmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
TWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KICAgICB2b2lkIHNldERp
cnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNldERpcnR5KCk7IH0KICAgICBib29sIGlzRGly
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsgfQotICAg
IE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VW
YWwtPnN5bmNocm9uaXplKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25p
emUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KIAogICAg
IC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgogICAgIGNv
bnN0IExpc3RUeXBlJiBjdXJyZW50VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWly
QWNjZXNzb3JJbXBsLmgKaW5kZXggOTM0YWMxZDNkYTJhOTZkNWQ2ODk3ZTVjOTQ3NDk2NGVkOGM3
ODc4MC4uYzczMGQ3ZTg5YjUzMDQ2MzE3NTc0YjEzYWIyYWQ0YzExMzYyN2UwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
Y2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGFuaW1hdGVkUHJvcGVydHkuc2V0RGlydHkoKTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZp
bmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlw
ZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBib29sIGRpcnR5MSA9IHByb3Bl
cnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIo
b3duZXIpLT5pc0RpcnR5KCk7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdGV4
cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigp
IHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZEludGVnZXJQYWly
QWNjZXNzb3IsIHByb3BlcnR5MSwgcHJvcGVydHkyPigpOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmIG93bmVyKSBjb25zdCBm
aW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5
cGUmIG93bmVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9w
ZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHky
KG93bmVyKS0+aXNEaXJ0eSgpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRv
bigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZE51bWJlclBh
aXJBY2Nlc3NvciwgcHJvcGVydHkxLCBwcm9wZXJ0eTI+KCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0
IGZpbmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVy
VHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBib29sIGRpcnR5MSA9IHBy
b3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0
eTIob3duZXIpLT5pc0RpcnR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCmluZGV4IDg4MWM0ZDBhNTEwZGI0
NWRlODg0MGExMzQ3NzYwZTJkMmI5NjdiMDUuLjMyMjA1N2RlMDQ0MDZmZjdlZTVmOTUwMjgxYjE5
NmUyZDBlYmJkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICAvLyBNYW5hZ2luZyB0aGUgcmVsYXRpb25zaGlwIHdpdGggdGhlIG93bmVyLgogICAgIHZv
aWQgc2V0RGlydHkoKSBvdmVycmlkZSB7IG1fYmFzZVZhbC0+c2V0RGlydHkoKTsgfQogICAgIGJv
b2wgaXNEaXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+aXNEaXJ0eSgp
OyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
eW5jaHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsg
fQogCiAgICAgLy8gVXNlZCBieSBSZW5kZXJTVkdFbGVtZW50cyBhbmQgRHVtcFJlbmRlclRyZWUu
CiAgICAgY29uc3QgVmFsdWVUeXBlJiBjdXJyZW50VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRp
dGl2ZVZhbHVlRnVuY3Rpb24uaAppbmRleCAyZWMyM2QzNzQ1MTEzZDEwMWVkODJjOGE4YWEwOGYx
ZjIwNzIzNWJkLi44NTgxOGI4MzdjMWFlYzhmZmU0NjkxZjM0MTViY2ZiYTEyN2FjMmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBWYWx1ZVR5cGUgbV9mcm9tOwogICAgIFZhbHVlVHlwZSBtX3RvOwotICAgIE9w
dGlvbmFsPFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlvbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKaW5kZXggNTQ4YjkzOWYxOGE2YzczZjdjYjFh
YmM3Y2Y3ZDU4M2I3MmJlOTBkMC4uMDAyYTI4MTY2NzNkYjMwMzQwOTdhMmYyY2M5ZTUxYzYwNjM2
MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6Y29sb3JGcm9t
U3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKICAgICByZXR1cm4geyB9Owog
fQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxh
dGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcm
IHRvKSBjb25zdAorc3RkOjpvcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0
aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBj
b25zdCBTdHJpbmcmIHRvKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZUludGVn
ZXI8aW50Pih0bykudmFsdWVfb3IoMCkgLSBwYXJzZUludGVnZXI8aW50Pihmcm9tKS52YWx1ZV9v
cigwKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXgg
OTY5Nzk5YmIwMGI1ZmRkOTk2NTE4NGJmYjdlMmY2NzI0MDQwMTUyMC4uMDM3ZDcyMjgyZTA0NjEx
MWNkZTBlNDQyYWUwNGZjNWUzMWVmN2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFuaW1hdGVk
ID0gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KHN0ZDo6bHJvdW5k
KHJlZCksIHN0ZDo6bHJvdW5kKGdyZWVuKSwgc3RkOjpscm91bmQoYmx1ZSksIHN0ZDo6bHJvdW5k
KGFscGhhKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNl
KFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIENvbG9yIGZyb21Db2xvciA9IENTU1BhcnNlcjo6cGFyc2VD
b2xvcihmcm9tLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNW
YWxpZCgpKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYW5pbWF0ZWQgPSBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihCYXNlOjphbmltYXRlKHByb2dyZXNzLCByZXBlYXRDb3Vu
dCwgbV9mcm9tLCBtX3RvLCB0b0F0RW5kT2ZEdXJhdGlvbigpLCBhbmltYXRlZCkpKTsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZEZyb21B
bmRUb1ZhbHVlcyhTVkdFbGVtZW50KikgZmluYWwKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGFuaW1hdGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwg
bV9sZW5ndGhNb2RlIH07CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURp
c3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29u
c3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBj
YWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcm
IGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGF1
dG8gZnJvbUxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CkBAIC0y
MzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICBhbmltYXRlZCA9IEJhc2U6OmFuaW1hdGUo
cHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCBtX3RvLCB0b0F0RW5kT2ZEdXJhdGlvbigpLCBh
bmltYXRlZCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNl
KFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZU51bWJlcih0bykudmFs
dWVfb3IoMCkgLSBwYXJzZU51bWJlcihmcm9tKS52YWx1ZV9vcigwKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgK
aW5kZXggOTAwNThhNTJhNmNmMGMxOTdjM2ZiZWMzOGM5NTcxNzc5ZGVkZDBmOS4uZTNjMjgxOTlm
ZTg0YTI3YmNjMzkwZTJjNzNhOGRlYzEwNGIxNzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25GdW5jdGlvbi5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4g
eyB9OyB9CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0aW9uRnVuY3Rpb24oQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlKQogICAgICAgICA6IG1fYW5pbWF0aW9uTW9kZShhbmltYXRpb25Nb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRl
QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFu
aW1hdG9yLmgKaW5kZXggZDliMjAzNjAyYzZmOWY1NTk3NTgwZWU0Y2ZlOWQ0ZTBjNTA5YjQ4MS4u
ZTY5ZTE4YzEwMDJjMGIwNmM2M2I0NTQ3Y2ZjNGM1ZWY4N2QxNTZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSA9
IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4g
eyB9OyB9CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5p
YW10b3IoY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggMzNhZjViZWY5MjMwYTZmZTU0
OWY3YjE3OTVhMDJiYzVmODUzY2UwZC4uMTYzN2Y3ZTI0MDJiYTQwZWVlYjA0MzMxZGFkMDFjYzI2
Nzk0YzBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVt
YmVyQWNjZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1i
ZXJBY2Nlc3Nvci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
bWF0Y2hlcyhjb25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwg
Y29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldERpcnR5KGNvbnN0IE93bmVyVHlwZSYsIFNWR0FuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHkpIGNvbnN0IHsgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgp
OyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVy
VHlwZSYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5p
bWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBB
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYs
IFNWR0F0dHJpYnV0ZUFuaW1hdG9yJikgY29uc3QgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IDhl
MmY3NmRjYWI0ZTkwZmIzOGViMzM5NjllYTY1YzA3MDIyNDUzODcuLjM3NjA3NTBkMmQ3NGIyNDMy
ZGNiMDE5YWE5NzdhZWUwMjBlMTIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcHJvcGVydHkob3duZXIpLT5kZXRhY2goKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIp
IGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNv
bnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gcHJvcGVydHkob3duZXIpLT5zeW5jaHJvbml6ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4IGNlM2MyYjI3MWQ5YTIzMGI0ZWQw
MGMwOWVmMWU3MThlNTk5NTYwN2MuLjZlY2JkODQ1MDVhODU4MTJhYTFmMjJjMTUzYjc2YjFmNGQ5
YTdlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0
dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaGVyZS4KICAgICBib29sIGlzRGlydHkoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgdm9p
ZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9Ci0gICAg
T3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFNWR1Byb3BlcnR5
U3RhdGU6OkNsZWFuKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaAppbmRl
eCBkOGU4ZWMxNzYzYzkyMDI5YTE5Njg5YmU1N2U2NTFlYjhhYjUwZTgyLi5kYjliN2VmNjNmOWRm
ZDExNzgwMGEyNTFmN2M1OTM5MzM1MTVlNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oCkBAIC02NSw3ICs2NSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmVtb3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KHRhcmdldEVsZW1l
bnQpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYg
dG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlz
dGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25z
dCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZnVu
Y3Rpb24uY2FsY3VsYXRlRGlzdGFuY2UodGFyZ2V0RWxlbWVudCwgZnJvbSwgdG8pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5LmgKaW5kZXggZDQyY2IxNTVjMDVhNTc4NzQzZGM2M2MxMmE5MmNmYTcwNDFj
NDI4Yy4uMzg4YmZkMGIwYWU1NmMyYTNmN2UzYTk4MWYxYjYyZGE3MzVjYzdkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5LmgKQEAgLTIyMyw5ICsyMjMsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBGaW5kcyB0aGUg
cHJvcGVydHkgd2hvc2UgbmFtZSBpcyBhdHRyaWJ1dGVOYW1lIGFuZCByZXR1cm5zIHRoZSBzeW5j
aHJvbml6ZQogICAgIC8vIHN0cmluZyB0aHJvdWdoIHRoZSBhc3NvY2lhdGVkIFNWR01lbWJlckFj
Y2Vzc29yLgotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsdWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICAgICAgZW51bWVyYXRlUmVjdXJz
aXZlbHkoWyZdKGNvbnN0IGF1dG8mIGVudHJ5KSAtPiBib29sIHsKICAgICAgICAgICAgIGlmICgh
ZW50cnkua2V5Lm1hdGNoZXMoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVJlZ2lzdHJ5LmgKaW5kZXggZmVhOTNjZmZmN2IyZTEzZjE4NDBjM2ZlY2VkZDc2YTEwZDBkMWU4
OS4uNzNmMmU4YWYyNTYyYzdiODI3NWE5ZGY2OWRkYzBkZjQyOTI3ODI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaApAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIHByb3BlcnR5
QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRQ
cm9wZXJ0RGlydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU3RyaW5nPiBzeW5jaHJvbml6ZUFsbEF0dHJp
YnV0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCA2MzMwYzNj
NDRhMDJhYTg1NTRkMWYyNzZlNTk3MTY1MmRmNmI2Y2NiLi4xMTA0ZDkzYTcxM2I5ZDUwYjMxYWM3
ZDQyZmI5NTY1NjI0ZjVhOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTM4LDcgKzM4LDcgQEAgdGVtcGxhdGU8Pgogc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+IHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZyA9PSAidHJ1ZSI7IH0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8Ym9vbD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7
IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGJvb2wgdHlwZSkgeyByZXR1cm4gdHlwZSA/
ICJ0cnVlIiA6ICJmYWxzZSI7IH0KIH07CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgdGVtcGxhdGU8Pgog
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yPiB7CiAgICAgc3RhdGljIENvbG9yIGluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICBzdGF0aWMgQ29sb3IgZnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0
cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8Q29sb3I+IHBh
cnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgQ29sb3IgY29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3Ioc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpKTsKICAgICAgICAgaWYgKCFjb2xv
ci5pc1ZhbGlkKCkpCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxD
b2xvcj4gewogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHVuc2lnbmVkPiB7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBz
dGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7
IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcGFyc2UoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBp
bml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcodW5zaWduZWQgdHlw
ZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KIH07CiAKQEAgLTY3LDcgKzY3LDcg
QEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGludD4gewogICAgIHN0YXRp
YyBpbnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBpbnQgZnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KIH07CiAKQEAg
LTgxLDcgKzgxLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxpbnQsIGlu
dD4+IHsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6cm91bmQocmVzdWx0LT5maXJzdCkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0ZDo6cm91bmQocmVzdWx0LT5zZWNvbmQpKSk7CiAgICAgfQotICAgIHN0YXRp
YyBPcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxW
YWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4g
cGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoc3RkOjpwYWlyPGludCwgaW50PikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KIH07CiAKQEAgLTkyLDcgKzkyLDcgQEAgc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPGZsb2F0PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXIoc3Ry
aW5nKS52YWx1ZV9vcigwKTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBwYXJz
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcp
OwogICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8c3Rk
OjpwYWlyPGZsb2F0LCBmbG9hdD4+IHsKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZU51bWJl
ck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVfb3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
eyB9KTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+
PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZh
bHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogfTsK
IApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxGbG9hdFBvaW50
PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZs
b2F0UG9pbnQgeyB9KTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBh
cnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VQb2ludChz
dHJpbmcpOwogICAgIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8RmxvYXRSZWN0PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZyku
dmFsdWVfb3IoRmxvYXRSZWN0IHsgfSk7CiAgICAgfQotICAgIHN0YXRpYyBPcHRpb25hbDxGbG9h
dFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJz
ZVJlY3Qoc3RyaW5nKTsKICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxhdGU8Pgogc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlh
bFZhbHVlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQotICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcm
IHN0cmluZykgeyByZXR1cm4gc3RyaW5nOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsg
cmV0dXJuIHN0cmluZzsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJWaWV3SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9G
YWtlWFJWaWV3SW5pdC5oCmluZGV4IDY0YTYzNGM0MzBiNGFhNjEzOTM0Y2Y1YmMwYzkxOGJhN2M3
M2QyMTcuLjE0OWNlZWQ5MzFlMTM3NmZhMGEzOGEzNzAzYTBjNjFjOTk2ZDRiYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSVmlld0luaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0
IEZha2VYUlZpZXdJbml0IHsKICAgICBWZWN0b3I8ZmxvYXQ+IHByb2plY3Rpb25NYXRyaXg7CiAg
ICAgRGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uOwogICAgIEZha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdCB2aWV3T2Zmc2V0OwotICAgIE9wdGlvbmFsPEZpZWxkT2ZWaWV3SW5pdD4gZmllbGRPZlZp
ZXc7CisgICAgc3RkOjpvcHRpb25hbDxGaWVsZE9mVmlld0luaXQ+IGZpZWxkT2ZWaWV3OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDEwYTNlMjBjZGYxYjgxYTc4NjhiOWU3NGQ0MDE0ZjcxMjE5YTJjM2UuLmY1NjJiMWVl
M2E3ZmU5NGMwMGFkNGY4YmQyMjQ5ODRjZGJmOGI2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGJvb2wgSW50ZXJuYWxzOjphcmVUaW1l
cnNUaHJvdHRsZWQoKSBjb25zdAogICAgIHJldHVybiBjb250ZXh0RG9jdW1lbnQoKS0+aXNUaW1l
clRocm90dGxpbmdFbmFibGVkKCk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB2
YWx1ZSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
KHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHZhbHVlKQogewogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5wYWdlKCkpCkBAIC0xMzk5LDcgKzEzOTksNyBAQCB2b2lkIEludGVybmFs
czo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90
dGxpbmdCZWhhdgogICAgIH0KIH0KIAotT3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxp
bmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4g
SW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50
KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENv
bG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAo
dHJhbnNwYXJlbnQpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKTsKICAgICBkb2N1bWVudC0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKQEAgLTM1ODYsNyArMzU4Niw3IEBAIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OnJlbmRlcmluZ1VwZGF0ZUNvdW50KCkKICAgICByZXR1
cm4gZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKE9wdGlv
bmFsPENvbXBvc2l0aW5nUG9saWN5PiBwb2xpY3lPdmVycmlkZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEludGVybmFsczo6c2V0Q29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZShzdGQ6Om9wdGlvbmFsPENv
bXBvc2l0aW5nUG9saWN5PiBwb2xpY3lPdmVycmlkZSkKIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAtMzYwOSw3ICsz
NjA5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRDb21wb3NpdGluZ1BvbGlj
eU92ZXJyaWRlKE9wdGlvbmFsPENvbXBvc2l0aW5nUG8KICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25PcjxPcHRpb25hbDxJbnRlcm5hbHM6OkNvbXBvc2l0aW5nUG9saWN5Pj4gSW50ZXJu
YWxzOjpjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKCkgY29uc3QKK0V4Y2VwdGlvbk9yPHN0ZDo6
b3B0aW9uYWw8SW50ZXJuYWxzOjpDb21wb3NpdGluZ1BvbGljeT4+IEludGVybmFsczo6Y29tcG9z
aXRpbmdQb2xpY3lPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
Y29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTQ5NzIsNyArNDk3Miw3
IEBAIGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxlbWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBtZWRpYSkKIH0KICNlbmRpZgogCi1FeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6
OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5n
KQorRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92
ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5nKQogewogI2lmIEVOQUJMRShST1VU
SU5HX0FSQklUUkFUSU9OKQogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldElz
UGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoaXNQbGF5aW5nKTsKQEAgLTUwNTgsNyArNTA1OCw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpwb3N0VGFzayhSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxi
YWNrKQogICAgIH0pOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VGFza1NvdXJjZT4gdGFza1NvdXJj
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB0YXNrU291cmNlTmFtZSkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFRhc2tTb3VyY2U+IHRhc2tTb3VyY2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFz
a1NvdXJjZU5hbWUpCiB7CiAgICAgaWYgKHRhc2tTb3VyY2VOYW1lID09ICJET01NYW5pcHVsYXRp
b24iKQogICAgICAgICByZXR1cm4gVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uOwpAQCAtNTc0
OCwxMiArNTc0OCwxMiBAQCBib29sIEludGVybmFsczo6Y2Fwc0xvY2tJc09uKCkKICAgICByZXR1
cm4gV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgp
OwogfQogCi1hdXRvIEludGVybmFsczo6cGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1Zp
ZXcgc3RyaW5nKSAtPiBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0PgorYXV0byBJbnRlcm5hbHM6
OnBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gc3RkOjpvcHRp
b25hbDxIRVZDUGFyYW1ldGVyU2V0PgogewogICAgIHJldHVybiBXZWJDb3JlOjpwYXJzZUhFVkND
b2RlY1BhcmFtZXRlcnMoc3RyaW5nKTsKIH0KIAotYXV0byBJbnRlcm5hbHM6OnBhcnNlRG9WaUNv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gT3B0aW9uYWw8RG9WaVBhcmFtZXRl
clNldD4KK2F1dG8gSW50ZXJuYWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBzdHJpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4KIHsKICAgICBhdXRv
IHBhcnNlUmVzdWx0ID0gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKHN0cmluZyk7
CiAgICAgaWYgKCFwYXJzZVJlc3VsdCkKQEAgLTU3NzgsNyArNTc3OCw3IEBAIGF1dG8gSW50ZXJu
YWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlv
bmFsPERvVmlQYXJhCiAgICAgcmV0dXJuIGNvbnZlcnRlZFJlc3VsdDsKIH0KIAotT3B0aW9uYWw8
VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IEludGVybmFsczo6cGFyc2VWUENvZGVjUGFyYW1l
dGVycyhTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQ+IEludGVybmFsczo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0
cmluZykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyhzdHJp
bmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNGY4ODE2NmIyODUzZjBl
MzFlNDBjYjQyZGI0Mjg3Yzk0ZGU0MzQ0Yy4uMWRiNjRiZjViMjk0M2U2Yjg2YTJlYWNmY2M2MmUx
ZTBhMTE4ODI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMzMsOCArMjMz
LDggQEAgcHVibGljOgogICAgIGJvb2wgYXJlVGltZXJzVGhyb3R0bGVkKCkgY29uc3Q7CiAKICAg
ICBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsgUmVzcG9uc2l2ZSwgVW5yZXNwb25zaXZl
IH07Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPik7Ci0gICAgT3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2
b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxFdmVu
dFRocm90dGxpbmdCZWhhdmlvcj4pOworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoKSBjb25zdDsKIAogICAg
IC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVk
PiBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpIGNvbnN0OwpAQCAtNTc2LDgg
KzU3Niw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gcmVuZGVyaW5nVXBk
YXRlQ291bnQoKTsKIAogICAgIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgeyBOb3JtYWwsIENvbnNl
cnZhdGl2ZSB9OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENvbXBvc2l0aW5nUG9saWN5T3Zl
cnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+KTsKLSAgICBFeGNlcHRpb25PcjxPcHRp
b25hbDxDb21wb3NpdGluZ1BvbGljeT4+IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25z
dDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+KTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPENvbXBvc2l0aW5nUG9saWN5Pj4gY29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZSgpIGNv
bnN0OwogCiAgICAgdm9pZCB1cGRhdGVMYXlvdXRBbmRTdHlsZUZvckFsbEZyYW1lcygpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0Fu
ZFJ1blBvc3RMYXlvdXRUYXNrcyhOb2RlKik7CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE92ZXJyaWRlUHJlZmVycmVkRHluYW1pY1JhbmdlTW9k
ZShIVE1MTWVkaWFFbGVtZW50JiwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9v
bD4pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAKICAgICBib29sIGlzU2VsZWN0UG9wdXBWaXNpYmxl
KEhUTUxTZWxlY3RFbGVtZW50Jik7CiAKQEAgLTk3NywxNyArOTc3LDE3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNhcHNMb2NrSXNPbigpOwogICAgICAgICAKICAgICB1c2luZyBIRVZDUGFyYW1ldGVy
U2V0ID0gV2ViQ29yZTo6SEVWQ1BhcmFtZXRlcnM7Ci0gICAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRl
clNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0
aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1Zp
ZXcpOwogCiAgICAgc3RydWN0IERvVmlQYXJhbWV0ZXJTZXQgewogICAgICAgICBTdHJpbmcgY29k
ZWNOYW1lOwogICAgICAgICB1aW50MTZfdCBiaXRzdHJlYW1Qcm9maWxlSUQ7CiAgICAgICAgIHVp
bnQxNl90IGJpdHN0cmVhbUxldmVsSUQ7CiAgICAgfTsKLSAgICBPcHRpb25hbDxEb1ZpUGFyYW1l
dGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CisgICAgc3RkOjpv
cHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5n
Vmlldyk7CiAKICAgICB1c2luZyBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCA9IFdlYkNvcmU6
OlZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkOwotICAgIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOworICAgIHN0
ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyk7CiAKICAgICBzdHJ1Y3QgQ29va2llRGF0YSB7CiAgICAgICAgIFN0
cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRl
eCAzZWIxMWYwMGI0OTRkZjAyNzU5YjJiZTBhNjIxNzc5YjNhMTJkMTE0Li45OTJlNGMxM2E3ZWU4
ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2VlMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBN
b2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc2Vzc2lvbklkLCAidmFsaWQtbG9hZGVkLXNlc3Npb24iKSkKICAgICAgICAgcmV0
dXJuIHNlc3Npb25JZDsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiBjaGFuZ2VkS2V5czsKKyAgICBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdl
ZEtleXM7CiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygia2V5cy1jaGFu
Z2VkIl9zKSkpIHsKICAgICAgICAgY29uc3QgYXV0byoga2V5cyA9IGZhY3RvcnktPmtleXNGb3JT
ZXNzaW9uV2l0aElEKHNlc3Npb25JRCk7CiAgICAgICAgIGlmIChrZXlzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzcwYjZlMjgwZDkxZGJhNjc5YWI0MGM1
YzY0NjRjY2JjMzkwMjZjMS4uZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5MzUwYTk2ODY5OGUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTIzLDcgKzEy
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcAppbmRleCA0MDE0ZDBiZThmNjRmMWNlY2UzMTY4NGU3ZjQ5NDZlODg5N2Q5
NDY0Li4wOGY0NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0NmU5NTNjODFmYWQ5YzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6TW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiB7CiB9CiAKLU9w
dGlvbmFsPEV4Y2VwdGlvbj4gTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpyZXN1bHQoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6cmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAobV9mYWlsQ29tbWFuZHMpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtNTksNyArNTksNyBAQCBP
cHRpb25hbDxFeGNlcHRpb24+IE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVzdWx0KCkg
Y29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIE1vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJik+JiYgY2FsbGJhY2spCit2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewog
ICAgICAgICBjYWxsYmFjayhyZXN1bHQoKSk7CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgpCiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZ
U19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgdGltZSk7CiAgICAgbV9jb250ZXh0LT5w
b3N0VGFzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHQKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNh
bGxiYWNrKQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewpAQCAtODYsNyArODYsNyBAQCB2b2lkIE1vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEV4Y2VwdGlvbgogICAgIH0pOwogfQogCi12b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmIGNhbGxiYWNrKQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxi
YWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAg
bV9jb250ZXh0LT5wb3N0VGFzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW8KICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBB
TFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fY29udGV4dC0+cG9z
dFRhc2soW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4m
KQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2Vk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpCiB7CiAgICAgQUxXQVlT
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3N0YXRlQ2hhbmdlTGlzdGVu
ZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5n
ZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25D
b29yZGluYXRvci5oCmluZGV4IGQzYjg2MzBiYjQ4MDYyN2RjYzQ2NzEwNjNiY2VmN2NlMTAxOWRj
ZmEuLmIyYzAwOWI4OGEwMDc2NmFkNzFhNThkNGQ4MzkyOTczYzVjODAyOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApA
QCAtNDksMTUgKzQ5LDE1IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJNb2NrIENvb3JkaW5hdG9yIjsgfQogCi0gICAgdm9pZCBqb2lu
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7
CisgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxlYXZlKCkgZmluYWw7CiAKLSAgICB2b2lk
IHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQg
c2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0VHJhY2so
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7CisgICAgdm9pZCBwb3NpdGlv
blN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKSBm
aW5hbDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUp
IGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUGxheWJh
Y2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RXhjZXB0aW9uPiByZXN1bHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4gcmVzdWx0KCkgY29uc3Q7CiAKICAgICBSZWY8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OwogICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4gbV9zdGF0ZUNoYW5nZUxpc3Rl
bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggOGQ3M2IxY2E4NWFlNTY0OTU1ZTg0YTg2OWJlOGZkZjNhNGFjOWRiZS4uMTVk
Mzk2ZTc2Njk3OTQ5NmQzN2ExYjFhYWU5OTU5NzRlNzgzMDAyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3IoUGFnZSYg
cGFnZSkKICAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5hZGQoInZpc2EiKTsKIH0KIAot
T3B0aW9uYWw8U3RyaW5nPiBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50
TmV0d29yayhjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKQorc3RkOjpvcHRpb25hbDxTdHJp
bmc+IE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0
IFN0cmluZyYgcGF5bWVudE5ldHdvcmspCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2F2YWlsYWJs
ZVBheW1lbnROZXR3b3Jrcy5maW5kKHBheW1lbnROZXR3b3JrKTsKICAgICBpZiAocmVzdWx0ID09
IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmVuZCgpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZv
aWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29y
ZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHNoaXBwaW5nTWV0aG9kVXBkYXRlKQordm9pZCBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6
b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiBzaGlwcGluZ01ldGhvZFVw
ZGF0ZSkKIHsKICAgICBpZiAoIXNoaXBwaW5nTWV0aG9kVXBkYXRlKQogICAgICAgICByZXR1cm47
CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIFZlY3RvcjxNb2NrUGF5bWVudEVycm9yPiBjb252
ZXJ0KFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JiYgZXJyb3JzKQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
JiYgc2hpcHBpbmdDb250YWN0VXBkYXRlKQordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hp
cHBpbmdDb250YWN0VXBkYXRlPiYmIHNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKIHsKICAgICBpZiAo
IXNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTCiAjZW5kaWYKIH0KIAotdm9pZCBNb2NrUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHBheW1lbnRNZXRob2RVcGRhdGUpCit2b2lkIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiBwYXltZW50TWV0aG9kVXBk
YXRlKQogewogICAgIGlmICghcGF5bWVudE1ldGhvZFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5CiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHBheW1lbnRNZXRob2RNb2RlVXBkYXRlKQordm9pZCBN
b2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0
ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiBwYXltZW50TWV0
aG9kTW9kZVVwZGF0ZSkKIHsKICAgICBpZiAoIXBheW1lbnRNZXRob2RNb2RlVXBkYXRlKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBNb2NrUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5jZWxQYXltZW50KCkKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYmIHJlc3VsdCkKK3ZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxl
dGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiYmIHJlc3VsdCkKIHsKICAgICBhdXRvIGlzRmluYWxTdGF0ZSA9IGlzRmluYWxTdGF0ZVJlc3Vs
dChyZXN1bHQpOwogICAgIG1fZXJyb3JzID0gY29udmVydChXVEZNb3ZlKHJlc3VsdC0+ZXJyb3Jz
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5o
CmluZGV4IDJkZTUxMzI4YTc2MDY3OWZhM2I2MmQ4ZThkNWY2OWM4ZTI2YmUwNGEuLmFmOWRhZTRl
NWUxMWE4MTM2ZWZkMzY0NDQzNmNmNWRmY2IwNmJmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCkBAIC04MSwxOSArODEsMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVyZWYoKSBjb25zdCB7IH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25h
bDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIGZpbmFsOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25z
dCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JikgZmluYWw7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25z
dCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgZmluYWw7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+
JiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0
aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIGZpbmFsOwotICAgIHZvaWQg
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZT4mJikgZmluYWw7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgZmlu
YWw7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVu
dE1ldGhvZFVwZGF0ZT4mJikgZmluYWw7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01F
VEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRp
b25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxBcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBmaW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVf
UEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9u
KE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdD4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yRGVzdHJveWVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRFcnJvci5oCmluZGV4IDViYzFjYTExOTYzMTNiMzgwODQxYjQ1ZGQ3M2M1MDQzMmYw
NjJiNTUuLjZhNWI3MmY0MmI5Yjg0NThkZWE0ZWYyMWM5ZWY1OGQwYmQyYjZmZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNb2NrUGF5bWVudEVycm9yIHsKICAgICBBcHBsZVBh
eUVycm9yQ29kZSBjb2RlOwogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIE9wdGlvbmFsPEFwcGxl
UGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKaW5kZXggMGM1MjVhZmZmM2M0NzA4ZGEz
NTA4ZDBiYWYxY2NjODE0YzkyNTJlZS4uNTA1NTFmOTY0MGRjNmQ4NTFiYTY3MzNjNjgzOWVkYzQz
NzYxNzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgcHJl
ZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TG9jYWxDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBz
dHJ1Y3QgSGlkQ29uZmlndXJhdGlvbiB7CkBAIC05NCw3ICs5NCw3IEBAIHN0cnVjdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBzdXBwb3J0Q2xpZW50
UGluIHsgZmFsc2UgfTsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxIaWRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxIaWRDb25maWd1
cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgTmZjQ29uZmln
dXJhdGlvbiB7CkBAIC0xMDQsMTYgKzEwNCwxNiBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIGJvb2wgbXVsdGlwbGVQaHlzaWNhbFRhZ3MgeyBm
YWxzZSB9OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIGJvb2wgc2lsZW50RmFpbHVyZSB7IGZh
bHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPiBsb2NhbDsKLSAgICBPcHRp
b25hbDxIaWRDb25maWd1cmF0aW9uPiBoaWQ7Ci0gICAgT3B0aW9uYWw8TmZjQ29uZmlndXJhdGlv
bj4gbmZjOworICAgIHN0ZDo6b3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPiBsb2NhbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEhpZENvbmZpZ3VyYXRpb24+IGhpZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEyMyw0MSArMTIzLDQxIEBAIHZv
aWQgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRp
b24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bENvbmZpZ3VyYXRpb24gcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvbj4g
dXNlclZlcmlmaWNhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJWZXJpZmljYXRpb24+IHVz
ZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlm
ICghdXNlclZlcmlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9ICp1c2VyVmVyaWZpY2F0aW9uOwogCi0gICAgT3B0aW9u
YWw8Ym9vbD4gYWNjZXB0QXR0ZXN0YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhY2Nl
cHRBdHRlc3RhdGlvbjsKICAgICBkZWNvZGVyID4+IGFjY2VwdEF0dGVzdGF0aW9uOwogICAgIGlm
ICghYWNjZXB0QXR0ZXN0YXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFjY2VwdEF0dGVzdGF0aW9uOwogCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBwcml2YXRlS2V5QmFzZTY0OwogICAgIGRlY29kZXIgPj4gcHJpdmF0ZUtleUJhc2U2NDsKICAg
ICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBXVEZNb3ZlKCpwcml2YXRlS2V5QmFzZTY0KTsK
IAotICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNlcnRpZmljYXRlQmFzZTY0OworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYgKCF1c2VyQ2VydGlmaWNhdGVCYXNlNjQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJDZXJ0aWZpY2F0ZUJh
c2U2NCA9IFdURk1vdmUoKnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxT
dHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+
PiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OwogICAgIGlmICghaW50ZXJtZWRpYXRl
Q0FDZXJ0aWZpY2F0ZUJhc2U2NCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKmludGVybWVk
aWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVmZXJy
ZWRDcmVkZW50aWFsSWRCYXNlNjQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHByZWZlcnJl
ZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRpYWxJ
ZEJhc2U2NDsKICAgICBpZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVy
JiBlbmNvZAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxvYWRCYXNlNjQpKQpAQCAtMjA4LDcg
KzIwOCw3IEBAIHZvaWQgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmND
b25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25m
aWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
TmZjQ29uZmlndXJhdGlvbiByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZXJyb3IpKQpAQCAtMjI5LDI5ICsyMjksMjkgQEAgdm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHJlc3Vs
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNpbGVudEZhaWx1cmU7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaWxlbnRGYWlsdXJlOwogICAgIGRlY29kZXIgPj4gc2lsZW50RmFpbHVyZTsKICAg
ICBpZiAoIXNpbGVudEZhaWx1cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50RmFpbHVyZTsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxvY2FsOworICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxMb2NhbENvbmZpZ3VyYXRpb24+PiBsb2NhbDsKICAgICBkZWNvZGVyID4+IGxv
Y2FsOwogICAgIGlmICghbG9jYWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmxvY2FsID0gV1RGTW92ZSgqbG9jYWwpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8
SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKICAgICBkZWNvZGVyID4+IGhpZDsKICAgICBpZiAoIWhp
ZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaGlkID0gV1RGTW92
ZSgqaGlkKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7
CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7
CiAgICAgZGVjb2RlciA+PiBuZmM7CiAgICAgaWYgKCFuZmMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5k
ZXggYTBhMzljZmI1YzY0ZDU2NGY2ZDE3NmU5ZjkzNGRkZjU5N2U1MDZlOC4uMDRmNDBlOTZjZDhh
ZGU4NDhiMDBlMGY5Y2VkMDZiZjFkNzk1YmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2
aWNlOjpzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShjb25zdCBWZWN0b3I8RmFrZVhSQm91bmRzUG9p
bnQ+JgogICAgICAgICBtX2ZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuYm91bmRzLmFwcGVuZCh7
IHN0YXRpY19jYXN0PGZsb2F0Pihwb2ludC54KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50Lnop
IH0pOwogfQogCi12b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4oY29uc3Qg
T3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYgb3JpZ2luKQordm9pZCBTaW11bGF0ZWRYUkRldmlj
ZTo6c2V0Vmlld2VyT3JpZ2luKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYg
b3JpZ2luKQogewogICAgIGlmIChvcmlnaW4pIHsKICAgICAgICAgbV9mcmFtZURhdGEub3JpZ2lu
ID0gKm9yaWdpbjsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgbV9m
cmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJGcmFtZVRpbWUpOwogfQogCi1PcHRpb25hbDxQ
bGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNyZWF0ZUxheWVyUHJv
amVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQorc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29s
IGFscGhhKQogewogICAgIHVzaW5nIEdMID0gR3JhcGhpY3NDb250ZXh0R0w7CiAgICAgaWYgKCFt
X2dsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggZjU5N2Iz
ZDkxOTJjN2Y2MjcyMTU3ODM2NTYzM2EyNzY0MDYwY2U3ZS4uYzA4NmQ5Y2ZkYzczN2IxZDJjMTk0
NWIxMWE2ZTYwY2Y4YTVjOTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBYUkV5ZSBleWUoKSBjb25zdCB7
IHJldHVybiBtX2V5ZTsgfQogICAgIGNvbnN0IFBvc2UmIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CiAgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgMTY+JiBwcm9qZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8Rm92
PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Zvdjt9CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxGb3Y+JiBmaWVsZE9mVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZm92O30KIAogICAg
IHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJWaWV3SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiByZXNv
bHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJlc29sdXRpb247IH0KICAgICB2b2lkIHNldE9mZnNl
dChQb3NlJiYgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gV1RGTW92ZShvZmZzZXQpOyB9CkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRpb24g
bV9yZXNvbHV0aW9uOwogICAgIFBvc2UgbV9vZmZzZXQ7CiAgICAgc3RkOjphcnJheTxmbG9hdCwg
MTY+IG1fcHJvamVjdGlvbjsKLSAgICBPcHRpb25hbDxGb3Y+IG1fZm92OworICAgIHN0ZDo6b3B0
aW9uYWw8Rm92PiBtX2ZvdjsKIH07CiAKIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAg
ICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2b2lkIHNldFZpZXdzKFZlY3RvcjxGcmFtZURh
dGE6OlZpZXc+JiYpOwogICAgIHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoY29uc3QgVmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50PiYpOwotICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKGNvbnN0
IE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mKTsKLSAgICB2b2lkIHNldEZsb29yT3JpZ2luKE9w
dGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mJiBvcmlnaW4pIHsgbV9mcmFtZURhdGEuZmxvb3JUcmFu
c2Zvcm0gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihjb25z
dCBzdGQ6Om9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mKTsKKyAgICB2b2lkIHNldEZsb29yT3Jp
Z2luKHN0ZDo6b3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYmIG9yaWdpbikgeyBtX2ZyYW1lRGF0
YS5mbG9vclRyYW5zZm9ybSA9IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQgc2V0RW11bGF0
ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7IG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRl
ZCA9IGVtdWxhdGVkOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9u
KGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBvcnRzU2h1dGRvd25O
b3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBz
aW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3Bh
Y2VUeXBlKSBmaW5hbCB7IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0
YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIE9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qg
d2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEpIGZpbmFsOwogICAgIHZvaWQg
ZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIGZpbmFsOwogCiAgICAgdm9pZCBz
dG9wVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0
Q29udHJvbGxlci5oCmluZGV4IDUzOTU5ZTU1YTk4MmMyYmRlMTg2ZmIyODhmMTVmYTkwMWMyZDU5
MTQuLmU1OWRjMDIxZGNlYTM5N2MzMWM2MzQ1YTVmODYyMzNlMTM5ZDNhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNjQs
OCArNjQsOCBAQCBwcml2YXRlOgogICAgIFdlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9y
bVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7CiAK
ICAgICBzdHJ1Y3QgQnV0dG9uT3JQbGFjZWhvbGRlciB7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOwotICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBheGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9u
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxmbG9hdD4+IGF4ZXM7CiAgICAgfTsKICAg
ICBCdXR0b25PclBsYWNlaG9sZGVyIGdldEJ1dHRvbk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9u
U3RhdGVJbml0OjpUeXBlKSBjb25zdDsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IFhSVGFyZ2V0UmF5TW9kZSBtX3RhcmdldFJheU1vZGUgeyBYUlRhcmdldFJheU1vZGU6OkdhemUg
fTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOwogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb2ludGVyT3JpZ2luOwotICAgIE9wdGlv
bmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3Jp
cE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3JpcE9yaWdpbjsKICAgICBIYXNoTWFwPEZha2VYUkJ1dHRv
blN0YXRlSW5pdDo6VHlwZSwgRmFrZVhSQnV0dG9uU3RhdGVJbml0LCBXVEY6OkludEhhc2g8RmFr
ZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGYWtl
WFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1dHRvbnM7CiAgICAgYm9vbCBtX2Nvbm5lY3Rl
ZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1dlYlhSVGVzdC5oCmluZGV4IDhlOTU3NWJjNGU5OWQyYjYzMDI3NzQ2YjNiZjRk
NjcyNmM5Mzc1ZWYuLjc5ODRkMjE2ODdmM2Q3NGY2NGUwMDEzZGE0Yjg2NTU0MmRjYmRhODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIGNsYXNzIFdl
YlhSVGVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVGVzdD4gewogcHVibGljOgog
ICAgIHN0cnVjdCBGYWtlWFJEZXZpY2VJbml0IHsKICAgICAgICAgYm9vbCBzdXBwb3J0c0ltbWVy
c2l2ZSB7IGZhbHNlIH07Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxYUlNlc3Npb25Nb2RlPj4g
c3VwcG9ydGVkTW9kZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFhSU2Vzc2lvbk1v
ZGU+PiBzdXBwb3J0ZWRNb2RlczsKICAgICAgICAgVmVjdG9yPEZha2VYUlZpZXdJbml0PiB2aWV3
czsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8SlNDOjpKU1ZhbHVlPj4gc3VwcG9ydGVkRmVh
dHVyZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEpTQzo6SlNWYWx1ZT4+IHN1cHBv
cnRlZEZlYXR1cmVzOwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2lu
dD4+IGJvdW5kc0Nvb3JkaW5hdGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGYWtl
WFJCb3VuZHNQb2ludD4+IGJvdW5kc0Nvb3JkaW5hdGVzOwogCi0gICAgICAgIE9wdGlvbmFsPEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gZmxvb3JPcmlnaW47Ci0gICAgICAgIE9wdGlvbmFsPEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gdmlld2VyT3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gZmxvb3JPcmlnaW47CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0PiB2aWV3ZXJPcmlnaW47CiAgICAgfTsK
IAogICAgIHN0YXRpYyBSZWY8V2ViWFJUZXN0PiBjcmVhdGUoV2Vha1B0cjxXZWJYUlN5c3RlbT4m
JiBzeXN0ZW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJUZXN0KFdURk1vdmUoc3lzdGVt
KSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdW
aXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KaW5kZXggOGJiMTAxZTFj
ZTk4ZGE3YzA0MWM1MmExNWE4ZWYxNDVmOTExNjA2NS4uMTZjMzQ4NjNkY2MzZDUxYjE1ZGQ3Zjkz
NDBlZTI3YTYwY2ZiNDc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQpA
QCAtNTMsNyArNTMsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0
aW9uT3ZlcmxheSB7CiAKICsgKEJPT0wpc2hvdWxkSWRlbnRpZnlXZWJWaWV3cwogewotICAgIHN0
YXRpYyBPcHRpb25hbDxCT09MPiBzaG91bGRJZGVudGlmeVdlYlZpZXdzOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEJPT0w+IHNob3VsZElkZW50aWZ5V2ViVmlld3M7CiAgICAgaWYgKCFzaG91
bGRJZGVudGlmeVdlYlZpZXdzKQogICAgICAgICBzaG91bGRJZGVudGlmeVdlYlZpZXdzID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdERl
YnVnSWRlbnRpZnlXZWJWaWV3cyJdOwogICAgIHJldHVybiAqc2hvdWxkSWRlbnRpZnlXZWJWaWV3
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDUzOTU2OGY1OTEzYjRiNWMyODZlNzM2MDRl
NjUzMjEyNDk5NzViYzkuLjg4MWRiYmViYTEyODUyODQ4ZDIwYTdjYzQ3ODJkNzZhMjBkNDIzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFdvcmtlckds
b2JhbFNjb3BlUHJveHkmIG1fY29udGV4dFByb3h5OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhl
IHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4KLSAgICBPcHRpb25hbDxDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKICAg
ICBNb25vdG9uaWNUaW1lIG1fd29ya2VyQ3JlYXRpb25UaW1lOwogICAgIGJvb2wgbV9zaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggMmNkYjc1NTc5NThiYzg5M2UyNjZkNmZiOWMwY2VjMTc2NzBmMjkwYS4uMTNk
ZjE3MzZmYTNlYThiMGQ2MTNiYWI3OGRjMmZjNmJkZGI3ZWMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29ya2VyU2NyaXB0RmV0Y2hlciYKICAgICB9CiB9
CiAKLXZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRl
TW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzIGNy
ZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFscyBjcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhj
ZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yIH0pOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0
IFVSTCYgbW9kdWxlVVJMCiAgICAgewogICAgICAgICBhdXRvJiBwcm9taXNlID0gSlNFeGVjU3Rh
dGU6OmxvYWRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBtb2R1bGVVUkwuc3RyaW5nKCksIEpTQzo6SlNT
Y3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZSh2bSwgbWFrZVJlZihzY3JpcHRGZXRjaGVyLT5w
YXJhbWV0ZXJzKCkpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZSh2bSwgeyBzY3JpcHRG
ZXRjaGVyLnB0cigpIH0pKTsKIAotICAgICAgICBhdXRvIHRhc2sgPSBjcmVhdGVTaGFyZWRUYXNr
PHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11
dGFibGUgeworICAgICAgICBhdXRvIHRhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYpPihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7
CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGE1YzFhMWRkYTVkNmQwMmU4NTZm
ZjVhNjBiZDc5YTRhNjg1NDU0YTcuLjMwNGFjNDAzMzRjMDYyZjdlYjRiZmU1OWUzNTg3NjljYjc0
Yzk2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbGlua0FuZEV2YWx1YXRlTW9kdWxlKFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxs
cHRyKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IGxvYWRNb2R1bGVTeW5jaHJvbm91c2x5
KFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAKLSAgICB2
b2lkIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmKTsKKyAgICB2b2lkIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1v
ZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxTY29wZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCmluZGV4IDBmMTk0NTQ0OGM0NWNiMTExZGNjNGEyNWE2YzlhYmY2ZjE2NDRkZWEuLmZi
MDcyY2MxOGM5MWZlMTEwZTRhZGVlYTgzMzI4OWMyODNiYjZkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29y
a2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKQogCiBXb3JrZXJTY3JpcHRMb2Fk
ZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKLU9wdGlvbmFsPEV4Y2VwdGlv
bj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRp
b25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hP
cHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2Vt
ZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGJkZDYwMTdkZjQ2
Y2M5ZjQ2ZGUwZGFhZGE3ZDM1YzlmODZiMzRjYmQuLmQzMzdjNTAzNmRhYzBmNjc1YTFjOTIzZDhk
ZTY0M2ZmMTM1MzNjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdvcmtlclNjcmlwdExvYWRlcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXhjZXB0
aW9uPiBsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJM
JiwgRmV0Y2hPcHRpb25zOjpNb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9kZSwgRmV0Y2hPcHRp
b25zOjpDYWNoZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJzTW9kZSwgV29y
a2VyU2NyaXB0TG9hZGVyQ2xpZW50JiwgU3RyaW5nJiYgdGFza01vZGUpOwogCiAgICAgdm9pZCBu
b3RpZnlFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IDQ0MmQyZGQyZDhhYjc3NzE2NzYxYWEzOWUyYTJiMmMwNDE5OTVkMTIuLmY3YjJhNTBkZTk3Nzg2
MWJiZTZiYTI4OWQ1MjliZDhiODExMTA2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTEzNyw4ICsxMzcsOCBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVh
dGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgICAgIHNv
dXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8U2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVyKCkpKTsKICAgICAgICAgTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCByZXN1bHQgPSBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+bG9hZE1vZHVsZVN5
bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQoKSwgc291cmNlQ29kZSk7CiAgICAgICAgIGlm
IChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgewotICAgICAgICAgICAgaWYgKE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJv
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5jb25zb2xlTWVzc2FnZSkKKyAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRG
ZXRjaGVyLT5lcnJvcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9h
ZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNz
YWdlKQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25NZXNzYWdlID0gbWVzc2FnZS0+bWVz
c2FnZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bk1lc3NhZ2UgPSAiSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIl9zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdl
RXZlbnQuY3BwCmluZGV4IGU2YWJiMTQ1MDQ0M2YyZWQ4NDRiMjlhODM5YjYzMzgwNWI5NmI1YTUu
LmJmZjI3MmNmMTZjMDZhZjNlMTEwZTg5N2FiYmM0MjNiZmQ5MjNlMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudCk7CiAKLVJlZjxFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50PiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQorUmVmPEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQ+IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFdU
Rk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92
ZShwb3J0cykpKTsKIH0KQEAgLTUwLDcgKzUwLDcgQEAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QK
IHsKIH0KIAotRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMp
CitFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQog
ICAgIDogRXh0ZW5kYWJsZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1YmJs
ZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAg
ICAsIG1fb3JpZ2luKG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCmluZGV4IDllNmNiZjJlY2QzMzBlOTU0
NDgzYTFjMzgyYTIyY2Q4NzIyMzlmZmMuLmY2NzQ1MjQ0NTQ4NmIzYWRhYzY2ZDUxMjM1MWQ1ZDcy
ZGY4OGNkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBT
dHJpbmcgbGFzdEV2ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZl
bnRTb3VyY2U+IHNvdXJjZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50U291cmNlPiBzb3VyY2U7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiBwb3J0czsKICAgICB9OwogCkBAIC02MywyNiArNjMsMjYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KHN0YXRlLCB0eXBlLCBp
bml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJl
ZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFs
PEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIH5FeHRlbmRhYmxlTWVzc2FnZUV2ZW50KCk7CiAKICAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBj
b25zdCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsg
fQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7
IHJldHVybiBtX3BvcnRzOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEV4dGVuZGFibGVNZXNzYWdlRXZlbnRJbnRlcmZhY2VUeXBl
OyB9CiAKIHByaXZhdGU6CiAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwotICAg
IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0
aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYpOworICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNl
PiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAKICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFN0cmlu
ZyBtX2xhc3RFdmVudElkOwotICAgIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3Vy
Y2U+IG1fc291cmNlOworICAgIHN0ZDo6b3B0aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNv
dXJjZT4gbV9zb3VyY2U7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1fcG9ydHM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IDc4ZDBhMzMyMGI3MWY1MDU1YzYzYzIyYWM0ZWUzNTRmNjZl
NTlmMGIuLmY5NTNjYWUzMjcwMTUxNDFkMzQwZGYzNzVhOGI2NWZmZTM1NjRmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXMKICAgICAgICAg
Y29udGFpbmVyLT5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURh
dGEpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4m
IHNlcnZpY2VXb3JrZXJEYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAzY2I1YjBjYmJhY2E1NDhjYzgyMzU2Y2JhMjFhOGE2NTgwMTIwOWUzLi41ZDBiZGYz
ZDE5ZmIwOWI4MjE1OGNhZThiM2ViOTI5MjM3MjllMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Nyw3ICs1Nyw3
IEBAIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXQ2xpZW50
Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xp
ZW50Q29ubmVjdGlvbigpOwogCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
PiYmKT47CisgICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsK
ICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0JikgPSAwOwpAQCAtOTYsNyArOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3Jr
ZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGRO
b3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4p
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0ZSwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJT
dGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSZWdpc3RyYXRpb25MYXN0VXBkYXRlVGltZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgV2FsbFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAwMzMwYjQ5YmRjMTQ0
MGE0NzI4OGUzNWY5MjAyNzdlZjZhYjUzM2E2Li4zM2Q5ODM4NDI0Y2I4ZjJjMWFlMWRhZDVmOGFm
YmUxNDkwMTkyM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSBmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTV0NsaWVudENvbm5lY3Rpb24mKTsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjEsMjkgKzYx
LDI5IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBl
OwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBl
PiBmcmFtZVR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlPiBmcmFtZVR5cGU7CiAgICAgZGVjb2RlciA+PiBmcmFtZVR5cGU7CiAgICAgaWYgKCFmcmFt
ZVR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+
IHVybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwog
ICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwCmluZGV4IDM1NTg0Yjhh
ZjA0YzUyYjc2ODBjZDZiODc5NDVhNzY0ODhmMmE0ZWEuLmJjZjMzMzQzOTE5ZjYwNjZlNzQyNjM3
ZGMxM2U5MmQxYzNkZGZmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgY291bnRlciA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oCmluZGV4IGQ2MzgxZDdkNWJjOTJmZWI3ZjllMDY4YzM3YTNhNGU0MjE4
ODE2MDMuLmJjZTI3Y2NlMzA2OTY4M2E4OWVkNDFmNmE3NDZmNjQ0YmIyMmRlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC00MCwxMCArNDAsMTAgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCksICctJywgY29udGV4dElkZW50aWZpZXIudG9VSW50
NjQoKSk7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGIpCkBAIC01OCwxNCArNTgsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4g
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIXNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RG9jdW1lbnRJZGVudGlm
aWVyPiBjb250ZXh0SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPERvY3VtZW50SWRlbnRp
Zmllcj4gY29udGV4dElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0SWRlbnRpZmll
cjsKICAgICBpZiAoIWNvbnRleHRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgKaW5kZXggZDAxODdjOTg3M2EyODFh
NGUyYjcyOThjYzJjMzU5YzAzOGRkZDQ0Yy4uMzk0ZDlhZjg2MTVkNmU1MmM2MDE1NTM0MDg2YmE2
YjBhYzFkM2RiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICBTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlIHsgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRv
dyB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRRdWVyeU9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgpAQCAtNDcsMTQgKzQ3LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5
T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucz4gU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8Ym9vbD4gaW5jbHVkZVVuY29udHJvbGxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAgZGVjb2RlciA+PiBpbmNsdWRlVW5jb250cm9s
bGVkOwogICAgIGlmICghaW5jbHVkZVVuY29udHJvbGxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVj
b2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuY3BwCmluZGV4IGJhNDJlYTIzOGRjNmY4NTY0OTc3ZGUzODgwMjIzMDVlNmZm
NWEwNjQuLmM4MjcyMGVhNzY0MTA5ZWQzYjIwZWI0ZDY2NjQ2NTI4YzFkY2FmNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERhdGEpCitzdGF0aWMgaW5saW5lIHZv
aWQgZGlkRmluaXNoR2V0UmVxdWVzdChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBE
ZWZlcnJlZFByb21pc2UmIHByb21pc2UsIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERhdGEpCiB7CiAgICAgaWYgKGNsaWVudERhdGEu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxl
YXNlRXhjZXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGE1ODBkYjdmMmI2NjZiNmMx
M2I4OTRlYTQwMzlmNDJhMzM3M2MxY2EuLjY4NmI0ZWRhN2M2NjI1OGY1OTI4ZmJhMGIzZGQzMDY4
NzdlYzYxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI2OSwxMiArMjY5LDEyIEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xp
ZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRl
LCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQor
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhpcywgaWRlbnRpZmllciwgc3RhdGUsIHNlcnZp
Y2VXb3JrZXJEYXRhID0gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsgc2VydmljZVdvcmtl
ckRhdGEgfV0oKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSA9IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsg
c2VydmljZVdvcmtlckRhdGEgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFNlcnZpY2VX
b3JrZXI+IHNlcnZpY2VXb3JrZXI7CiAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyRGF0YSkKICAg
ICAgICAgICAgIHNlcnZpY2VXb3JrZXIgPSBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyRGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgKaW5kZXggMzRhMGViZjc3MzU2Y2RmODY2Y2E2MjNmMWIwMjBiODA2M2YxNWViNS4u
MWUyMDU5ODliMzI3MjAyYTRlYTZjNWMyYjgxZWNjY2JkYzI1ZDEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbihj
b25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbihjb25z
dCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci0gICAgdm9pZCB1
cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyRGF0YT4mKTsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3Rh
dGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+Jik7CiAgICAgdm9pZCB1
cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0
YXRlKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRj
aENvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDJkYTJkYmIx
NTM2ZTk4MDA1NWJmOTRjMDZiNmNiMjRkMjU3YzEyNTUuLjNkN2NkMTdhOGJjMDlkYWVhYTZlMGVi
ZjkwYTA1OWE3YzcwOWEzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTUyLDE5ICs1MiwxOSBA
QCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICAgICAgICAgIGVuY29kZXIg
PDwgc2NyaXB0IDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNj
cmlwdDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAg
ICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIE9wdGlv
bmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVz
cG9uc2VVUkw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOwogICAgICAgICAg
ICAgaWYgKCFyZXNwb25zZVVSTCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBt
aW1lVHlwZTsKICAgICAgICAgICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7CiAgICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENv
cHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKLSAgICBPcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSByZWdpc3RyYXRpb247
CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAg
ICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKQEAgLTg5LDExICs4OSwxMSBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIE9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VN
YXA7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiB9OwpAQCAtMTA2LDE0ICsxMDYsMTQgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4+
IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAg
ICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVn
aXN0cmF0aW9uOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uOwogICAgIGlmICghcmVnaXN0
cmF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTIyLDcgKzEyMiw3IEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNjcmlwdEJ1
ZmZlcj4gc2NyaXB0OworICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAg
ICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
YwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CisgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmlj
YXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKICAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKaW5kZXggYmM1NmU5
YjAzZGQwYmZmYTAyYzZhZjNhMGY2NjQ2YWVmODA0Y2JhYS4uY2UzNjFkM2YzZDBmMzg3M2E4NmRj
OGE5MzhiYWYwM2YxZDE2NGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNlcnZp
Y2VXb3JrZXJEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTQsMjkgKzU0LDI5IEBAIHZv
aWQgU2VydmljZVdvcmtlckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IFNl
cnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckRhdGE+IFNlcnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gaWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+IHNjcmlwdFVSTDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gc2NyaXB0VVJMOwogICAgIGRlY29kZXIgPj4gc2NyaXB0
VVJMOwogICAgIGlmICghc2NyaXB0VVJMKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclN0YXRlPiBzdGF0ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJTdGF0ZT4gc3RhdGU7CiAgICAgZGVjb2RlciA+PiBzdGF0ZTsKICAg
ICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8V29ya2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7
CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiByZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGlmICghcmVnaXN0cmF0
aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQuaAppbmRleCAzYmQwN2IzY2Y2MTUwZjNiNjIyNmVhMzQ0OTc2ZWYwZmZiODdkMmJmLi5kMzRi
NTI4MTNlMWE3NzE4MWJlYjVjMjJmNGU2ZDNhZmYxM2I4ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5o
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoUmVzdWx0OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29sIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNyArODUsNyBAQCBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjcmlwdEVycm9yKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
Y2VydGlmaWNhdGVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggYjZj
OTU2MzM4ZTFkZmQyMTFkYWMxN2MyYjMxMDU5NTMyOWY4MTg2Yi4uMDI1MTBjZGEyZWNiN2UyNDU1
NTZmMzYxYjViZTJhMDYyMDA1ZmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTYyLDcgKzYyLDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29s
YXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckpv
YkRhdGEoKSA9IGRlZmF1bHQ7CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgU2VydmljZVdvcmtlckpv
YkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJK
b2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGll
bnRDcmVhdGlvblVSTCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwog
ICAgIGlmICghdG9wT3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE4
LDcgKzExOCw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICBzd2l0Y2ggKGpvYkRhdGEu
dHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOiB7Ci0gICAg
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiByZWdpc3RyYXRp
b25PcHRpb25zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25PcHRpb25zPiByZWdpc3RyYXRpb25PcHRpb25zOwogICAgICAgICBkZWNvZGVyID4+IHJlZ2lz
dHJhdGlvbk9wdGlvbnM7CiAgICAgICAgIGlmICghcmVnaXN0cmF0aW9uT3B0aW9ucykKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgK
aW5kZXggN2E3ZDY0ODUzZGRjNDcxNmRlMjVkZTA3YTdmMGY3MWEwN2NkMGQyZC4uNzI1YTgzYWMy
MTBhZmZiMTI5YzBlNTg2MTg2ZTE5YmUyZDA3ODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgYSwg
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBiKQpAQCAtNTYsMTQgKzU2LDE0
IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI+IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYklkZW50aWZpZXI+IGpvYklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllcj4gam9iSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGpv
YklkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKaW5kZXggZDQwNjY5ZDNm
NjMyNjlkMGZhY2I3NWJmZWU0MGI1NzYzMDQzM2MxMy4uMGNhNTg1MGI1Y2NlZDUxN2Q0MzZjYjc4
MGFlY2RlZGYwOTc4MzIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCkBAIC0z
OCw5ICszOCw5IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zCiAgICAgICAgIHNjb3BlVVJMLmlz
b2xhdGVkQ29weSgpLAogICAgICAgICB1cGRhdGVWaWFDYWNoZSwKICAgICAgICAgbGFzdFVwZGF0
ZVRpbWUsCi0gICAgICAgIGluc3RhbGxpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAot
ICAgICAgICB3YWl0aW5nV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KHdhaXRp
bmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9wdCwKLSAgICAgICAgYWN0aXZl
V29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KGFjdGl2ZVdvcmtlci0+aXNvbGF0
ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICBpbnN0YWxsaW5nV29ya2VyID8gc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRD
b3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICB3YWl0aW5nV29ya2VyID8gc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4od2FpdGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDog
c3RkOjpudWxsb3B0LAorICAgICAgICBhY3RpdmVXb3JrZXIgPyBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPihhY3RpdmVXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9w
dCwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCmluZGV4IDlmNTNmYWQy
YWI1YWVjYTY2YjIyNmQ1Njk2MzMyMjIwYjViNGM1ZjQuLjNmZjQwNDlmNTJkNGIzMTM3ZTJhNDdj
ZGQyMzE0ZTc3NjkzYjhjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCkBAIC00NSwx
NCArNDUsMTQgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsKICAgICBT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGU7CiAgICAgV2FsbFRpbWUg
bGFzdFVwZGF0ZVRpbWU7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gaW5zdGFs
bGluZ1dvcmtlcjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd2FpdGluZ1dvcmtl
cjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gYWN0aXZlV29ya2VyOworICAgIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IGluc3RhbGxpbmdXb3JrZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd2FpdGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBhY3RpdmVXb3JrZXI7CiAKICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiAKQEAgLTYzLDQ0ICs2Myw0NCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4ga2V5OworICAgIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4ga2V5OwogICAgIGRlY29kZXIgPj4g
a2V5OwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAot
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBpZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRl
bnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFVS
TD4gc2NvcGVVUkw7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHNjb3BlVVJMOwogICAgIGRlY29k
ZXIgPj4gc2NvcGVVUkw7CiAgICAgaWYgKCFzY29wZVVSTCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBk
YXRlVmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAg
aWYgKCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPGRvdWJsZT4gcmF3V2FsbFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHJhd1dhbGxUaW1lOwogICAgIGRlY29kZXIgPj4gcmF3V2FsbFRpbWU7CiAgICAgaWYgKCFyYXdX
YWxsVGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gaW5zdGFsbGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+PiBpbnN0YWxsaW5nV29ya2Vy
OwogICAgIGRlY29kZXIgPj4gaW5zdGFsbGluZ1dvcmtlcjsKICAgICBpZiAoIWluc3RhbGxpbmdX
b3JrZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IHdhaXRpbmdXb3JrZXI7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gd2FpdGluZ1dvcmtlcjsKICAgICBk
ZWNvZGVyID4+IHdhaXRpbmdXb3JrZXI7CiAgICAgaWYgKCF3YWl0aW5nV29ya2VyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+PiBhY3RpdmVXb3JrZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJEYXRhPj4gYWN0aXZlV29ya2VyOwogICAgIGRlY29kZXIgPj4gYWN0aXZl
V29ya2VyOwogICAgIGlmICghYWN0aXZlV29ya2VyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDcwNWIyZWY1NjAzNGZjNGNh
NjNmNWJlNzBjYTcwZmNhMTllODk4MjUuLjQ4ZTg0MzBmMDY3MWYyMjUyNTE3ZmZkMzYwNjVkZTA2
Mjc5MjZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgU3RyaW5nIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnRvRGF0YWJhc2VLZXkoKSBj
b25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKG1fdG9wT3JpZ2luLnByb3RvY29sLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIG1fdG9wT3JpZ2luLmhvc3QsIHNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJh
dG9yQ2hhcmFjdGVyLCBtX3Njb3BlLnN0cmluZygpKTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURh
dGFiYXNlS2V5KGNvbnN0IFN0cmluZyYga2V5KQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJh
c2VLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byBmaXJzdCA9IGtleS5maW5kKHNl
cGFyYXRvckNoYXJhY3RlciwgMCk7CiAgICAgYXV0byBzZWNvbmQgPSBrZXkuZmluZChzZXBhcmF0
b3JDaGFyYWN0ZXIsIGZpcnN0ICsgMSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6
ZnJvbURhdGFiYXMKICAgICBpZiAoZmlyc3QgPT0gc2Vjb25kIHx8IHNlY29uZCA9PSB0aGlyZCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBz
aG9ydFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gc2hvcnRQb3J0OwogCiAgICAg
Ly8gSWYgdGhlcmUncyBhIGdhcCBiZXR3ZWVuIHRoaXJkIGFuZCBzZWNvbmQsIHdlIGV4cGVjdCB0
byBoYXZlIGEgcG9ydCB0byBkZWNvZGUKICAgICBpZiAodGhpcmQgLSBzZWNvbmQgPiAxKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCBkMGY5YjQ0NWI1MjQzZTkzMDkwMzA4ZDdhMWUz
N2FkNGJkZWYxMDdjLi5jNWM0OTUxNDg0MDY5ZTk1YjZiYzc2MDg4YmQzMDc0Y2NlNjJmOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgU3RyaW5nIHRvRGF0YWJhc2VLZXkoKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gZnJvbURh
dGFiYXNlS2V5KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IGZyb21EYXRhYmFzZUtleShjb25zdCBTdHJpbmcmKTsK
IAogI2lmICFMT0dfRElTQUJMRUQKICAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OwpA
QCAtODEsOSArODEsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0
YT4gdG9wT3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BP
cmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9u
cy5oCmluZGV4IGZlMDJiZjdmY2Q1ZjE1ODllMTJiNWJhMjY5MDYyMjU3Yzc0ZDU4OTIuLmM4ZDc3
MThkZWU3NWFkYTBiMjU2ZTk1ZjU4Nzc5OTEyMzhlZDNhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uT3B0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uT3B0aW9ucyB7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDE5ICs1MiwxOSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25PcHRpb25zPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9uczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25PcHRpb25zPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9uczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzY29wZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAo
IXNjb3BlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V29y
a2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAg
ZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBkYXRl
VmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+
IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgaWYg
KCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggZWVkM2Y5Mjk3Y2QyMzBhNDJlOTZlMmNlMjc0ZTk4YjA2M2JkOTcy
Ny4uMmUyNGYyNjQ3ZmViMmMwZTAxNjVmNTk5OTk2NWU3ZjVlYTAwMGEwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIFdvcmtlclNXQ2xpZW50Q29ubmVj
dGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlYwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4s
IGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RvcE9yaWdpbiA9IHRvcE9yaWdp
bi5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShkYXRhKSwgaWRlbnRpZmll
ciwgdXNlckFnZW50ID0gY3Jvc3NUaHJlYWRDb3B5KHVzZXJBZ2VudCldIHsKICAgICAgICAgYXV0
byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBiNDE3OTEzMjA2OGE4
MTBhNDk1NGIzMmEzMDMyMGY0Yjc2MmU4MDc5Li5jODZlZTQ1NWQzMTMyOTU3ZjI5NzlmZGZkZDhi
MDJlODkxZTBjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgU2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsKICAgICBTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCAxOGM4MjljNDhlNzhjMzkzZDNmMWY1
ZDhmOTA0ZDE4MTM1YTI1YjRiLi5hN2RhMDBkOTZjMDBkZGQ4OTA2ZDgyNzVmNmRhMmRjNDg5YjM2
YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNXQ29u
dGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlclRocmVhZEZvckluc3RhbGwoUmVmPFNl
cnZpY2VXb3JrZXJUaAogICAgIH0pOwogfQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0
ZWRTZXJ2aWNlV29ya2VyKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4g
am9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRs
ZUZldGNoKQordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydGVkU2VydmljZVdvcmtlcihzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQogewogICAg
IGlmIChtX3NlcnZpY2VXb3JrZXJDcmVhdGlvbkNhbGxiYWNrKQogICAgICAgICBtX3NlcnZpY2VX
b3JrZXJDcmVhdGlvbkNhbGxiYWNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDRkMDhlNzZiYzlkNjA2MzljZTBkOWFmNGM5OWEwN2E5
ZTExYmU0ODIuLjE5MTA1MjdhY2QwOTJiNjIzOGUwYjkwZWE4MjAzOGYyMjJkZDMyYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKQEAgLTUyLDE2ICs1MiwxNiBAQCBwdWJsaWM6CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5k
bGVGZXRjaCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRv
U3RhcnQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2Vy
dmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtlclRlcm1p
bmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgPSAwOwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAgIHVzaW5n
IEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9w
dGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1
bHQ7CiAKLSAgICB2b2lkIHN0YXJ0ZWRTZXJ2aWNlV29ya2VyKE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRsZUZldGNoKTsKKyAgICB2b2lkIHN0
YXJ0ZWRTZXJ2aWNlV29ya2VyKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9u
TWVzc2FnZSwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9UZXJtaW5hdGUoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCiAgICAgdm9pZCBzdG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYs
IFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApp
bmRleCA2Yjk0NzJkMDAzN2Y2MWZlOWI3NTJkNDY0YWMxNTljNzdlMjk2NzM3Li5kMjI1MzY1MDU5
MDVhYWRmMWQ0ODJlOTA1Njg1MjVmY2Q2YWI5Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFNlcnZp
Y2VXb3JrZXJGZXRjaCB7CiAKIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRw
LWZldGNoIHN0ZXAgMy4zCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZh
bGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0
aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQorc3RhdGlj
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBG
ZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQogewogICAgIGlmIChyZXNwb25zZS50eXBl
KCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpCiAgICAgICAgIHJldHVybiBSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCks
ICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3b3JrZXIgaXMgYW4gZXJyb3IiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgdm9p
ZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRj
aFJlc3BvbnNlPiwgUgogICAgIH0pOwogfQogCi12b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8
Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucykKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgYXV0
byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3Vh
cmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygp
IH0pOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENs
aWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBB
U1NFUlQoZ2xvYmFsU2NvcGUucmVnaXN0cmF0aW9uKCkuYWN0aXZlKCktPnN0YXRlKCkgPT0gU2Vy
dmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOwogCiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1
ZXN0Lmh0dHBCb2R5KCk7Ci0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OworICAgIHN0ZDo6
b3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEt
PmlzRW1wdHkoKSkgewogICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xv
YmFsU2NvcGUsICpmb3JtRGF0YSk7CiAgICAgICAgIGlmICghYm9keSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaAppbmRleCAzMTU1ZDU2ZTlmZDZlOTJiZDYyMDgwYTc2YTQ3NDViMzg3ZWE0OTFiLi5j
MjczNWRlODdmOGJlZDE4NTc3YmZjYzZjODliYWJmNDM2Y2YyZjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgPSAwOwogfTsKIAotdm9pZCBkaXNwYXRjaEZldGNoRXZl
bnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYg
cmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxD
bGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggNTAxZDJlZDhiOGE4ODNjMTBmNTg2NTFiZDg4
NmRkZDQzMDY4YzIxMS4uMWUyNzc2Zjg4M2UxMTNiNDMyZDk4N2VkOGM1ZjZkNjZhNDE5YWQ4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAgICAgV29ya2VyVGhyZWFkOjpydW5F
dmVudExvb3AoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucykKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVu
dChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykK
IHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSkpOwogICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1h
bmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50ID0gV1RGTW92ZShj
bGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0g
V1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpXSgpIG11dGFibGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IGJlMTdiMmI4NTM5MTY5NWUxYTkwZjY3NTUw
MTc3Mjc1NDg1ZjY1ZWIuLmZjMmIxN2E1N2U5NjNjNDcxMzMwY2EyNmVhNWI2MmNjNzI0Yjk0NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxs
UG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5n
JiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZl
dGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3Ry
aW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvUG9z
dE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50
RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50
KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAKICAgICBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGFJZGVu
dGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhSWRlbnRpZmll
cjsgfQogICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoKCkgY29uc3QgeyByZXR1cm4gbV9kb2VzSGFu
ZGxlRmV0Y2g7IH0KIAogICAgIHZvaWQgc3RhcnRGZXRjaEV2ZW50TW9uaXRvcmluZygpOwpAQCAt
OTQsOCArOTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbEV2ZW50VGltZXJGaXJlZCgp
OwogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IG1fam9iRGF0
YUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX2Rh
dGE7IC8vIEJlY29tZXMgc3RkOjpudWxsb3B0IGFmdGVyIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4gbV9qb2JEYXRhSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9kYXRhOyAvLyBCZWNvbWVzIHN0ZDo6bnVsbG9w
dCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQuCiAg
ICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2Rv
ZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCmluZGV4IGY3NzNhY2QzNWNiMDI1ZjY2Yzc2YzYzZGJhMTU4MjIwYTFmODM2MTkuLjcy
Mjg1ZmRjODM5OWZjMzRiNTRlOTM2MDQ5MTNmYTFhM2ZjNTQ5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkK
ICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwg
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQordm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlv
bnMpCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c3RhcnRGZXRjaCAlbGx1IiwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDFmZDVkYWIzNjExMmE2NjFl
NjEyZDhiNGIxNjg1ZWMxZDJmYzE4YzAuLmM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUxNThjMzhl
MjAwYzEwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVm
PFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBG
ZXRjaE9wdGlvbnMmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0
aW9ucyYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbEZldGNoKFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBjOWVjYjM1NTBmMDk3OTg1ZTA2YWRkYmQ5
ODY4ZDkwZDk0OTM5OTQ1Li4zMWY1ODVmN2I3Y2MxNTJiODYzMmI4ODcyMmQ0MjA4Y2M4NDMxODFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTEwLDE0ICsxMTAsMTQgQEAgc3Ry
dWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7CiAgICAgICAgIGVuY29kZXIgPDwgcmVzcG9u
c2VVUkwgPDwgbWltZVR5cGU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsK
ICAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOwog
ICAgICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgU3RyaW5nIHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmco
U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZp
YUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNvbnN0IFN0cmluZyYgdXBkYXRlKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1Vw
ZGF0ZVZpYUNhY2hlKGNvbnN0IFN0cmluZyYgdXBkYXRlKQogewogICAgIGlmICh1cGRhdGUgPT0g
IkltcG9ydHMiKQogICAgICAgICByZXR1cm4gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpJ
bXBvcnRzOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgd29ya2VyVHlwZVRvU3Ry
aW5nKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V29ya2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHN0
cmluZ1RvV29ya2VyVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0g
IkNsYXNzaWMiKQogICAgICAgICByZXR1cm4gV29ya2VyVHlwZTo6Q2xhc3NpYzsKQEAgLTM1NCw3
ICszNTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V29ya2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwdXNoQ2hhbmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXksIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+
JiBjaGFuZ2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cHVzaENoYW5nZXMoY29u
c3QgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFuZ2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IHVwZGF0ZWRSZWdpc3RyYXRpb25zOwogICAgIFZlY3RvcjxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiByZW1vdmVkUmVnaXN0cmF0aW9uczsKQEAgLTUx
NCw3ICs1MTQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMo
KQogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVSTCB7IFVSTCgpLCBzcWwtPmNvbHVtblRleHQo
NikgfTsKICAgICAgICAgYXV0byB3b3JrZXJUeXBlID0gc3RyaW5nVG9Xb3JrZXJUeXBlKHNxbC0+
Y29sdW1uVGV4dCg3KSk7CiAKLSAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcgPSBz
cWwtPmNvbHVtbkJsb2JWaWV3KDgpOwogICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YVZpZXcuc2l6ZSgpKSB7CiAgICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuZGF0YSgpLCBjb250ZW50
U2VjdXJpdHlQb2xpY3lEYXRhVmlldy5zaXplKCkpOwpAQCAtNTMxLDcgKzUzMSw3IEBAIFN0cmlu
ZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gc2Ny
aXB0UmVzb3VyY2VNYXBEYXRhVmlldyA9IHNxbC0+Y29sdW1uQmxvYlZpZXcoMTApOwogICAgICAg
ICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhVmlldy5zaXplKCkpIHsKICAgICAgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJl
c291cmNlTWFwRGF0YVZpZXcuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGFWaWV3LnNpemUo
KSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRy
aWJ1dGVzPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlw
dFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAg
IGlmICghc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cykgewogICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRT
Y3JpcHRzIik7CkBAIC01NDEsNyArNTQxLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGVJ
bmZvRGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDExKTsKLSAgICAgICAgT3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKICAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFW
aWV3LmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YVZpZXcuc2l6ZSgpKTsKICAgICAgICAgY2Vy
dGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmgKaW5kZXggNTcwNzUyNjY5NjIxZGIzNDI4NzdhZjM0YzcxZTQ1Yjk4YjkwYTE5ZC4uNmIx
Y2YwYjJjMDg0NTNhZjYyZTU5MmU0ZTcwYTU3YWM2NDgwYTVlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVnaXN0cmF0aW9uRGF0
YWJhc2UoKTsKIAotICAgIHZvaWQgcHVzaENoYW5nZXMoY29uc3QgSGFzaE1hcDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+PiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBwdXNoQ2hhbmdlcyhjb25z
dCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgY2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaApp
bmRleCBiYTExMzExNWE2NTQxMmZkZTJkZmRhYjYxNjZlNWY2ZTA4NzIzOTZkLi4zYjNjZDk4N2I3
MWU0MjQ3MWYxZTIyNjY3NTA3MDU5NDkxZTJjYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCkBAIC03
Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFJlZjxS
ZWdpc3RyYXRpb25EYXRhYmFzZT4gbV9kYXRhYmFzZTsKIAotICAgIEhhc2hNYXA8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4g
bV91cGRhdGVkUmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV91cGRh
dGVkUmVnaXN0cmF0aW9uczsKICAgICBUaW1lciBtX2RhdGFiYXNlUHVzaFRpbWVyOwogCiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZjdhZjA3ZDFiNGE5Yzc1NDM3
OGRlMjM2ZTRhNGZiOWZlMWYyZGIyMS4uN2I5YjVmYmZmMTM0NWMxMmYzMTExYjU4Y2I2N2U2YmNh
YWFlNjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVy
Ojp3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIHdvcmtlcjsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyOjpzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50
T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBjbGllbnRJZGVudGlmaWVyKSBjb25zdAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2luQnlJRChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOwogICAgIGlm
IChpdGVyYXRvciA9PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKQpAQCAtNDk5
LDcgKzQ5OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNo
RmluaXNoZWQocmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYg
am9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlk
ZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CkBAIC01MTUs
NyArNTE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29u
c3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICBqb2JRdWV1ZS0+c2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoKmpvYkRhdGFJZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmll
cigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
Y29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlk
ZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRD
b250ZXh0U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlciYgd29ya2VyKQogewog
ICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTUzNyw3ICs1
MzcsNyBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVQcmVpbnN0YWxsYXRpb25Xb3JrZXIoU1dT
ZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRQcmVJbnN0YWxs
YXRpb25Xb3JrZXIobnVsbHB0cik7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3Rh
bGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0
YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkK
K3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewogICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxsOiBGaW5pc2hlZCBp
bnN0YWxsIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1LCBzdWNjZXNzIGlzICVkIiwgdGhpcywgd29y
a2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB3YXNTdWNjZXNzZnVsKTsKIApAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdURjo6RnVuCiAgICAgfQogfQogCi1PcHRpb25hbDxF
eGNlcHRpb25EYXRhPiBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3N0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4gU1dTZXJ2ZXI6OmNsYWltKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gd29ya2VyLnJlZ2lzdHJhdGlv
bigpOwogICAgIGlmICghcmVnaXN0cmF0aW9uIHx8ICZ3b3JrZXIgIT0gcmVnaXN0cmF0aW9uLT5h
Y3RpdmVXb3JrZXIoKSkKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFNXU2VydmVyOjp1cGRhdGVB
cHBCb3VuZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
TAogICAgIH0KIH0KIAotdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBk
YXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYm
IHVzZXJBZ2VudCkKK3ZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChD
bGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0
YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmlu
ZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50
aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCBiYTM3Y2VhOTEyOTdkNjQ5OWFhMmE5ZWJkODgyODZjNDk0ZjY5NjFlLi5j
ZDYyMjY2MzdhMjUxNmJmM2ZjNTAxZWM2MWEyNjFkMjkzNmZiMjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC04Myw3ICs4Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBj
bGllbnQgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9u
U3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUlu
Q2xpZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVnaXN0cmF0aW9u
TGFzdFVwZGF0ZVRpbWUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdhbGxU
aW1lKSA9IDA7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVy
V29ya2VyKiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdv
cmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdp
dGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRVc2Vy
QWdlbnQoY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dT
ZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKQEAgLTE3MiwxNyArMTcyLDE3IEBAIHB1YmxpYzoK
IAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9y
ZTsgfQogCi0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBPcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2Vy
Jik7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZl
cldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29y
a2VyJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYp
OwogICAgIHZvaWQgbWF0Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYpOwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+IGNsYWltKFNXU2VydmVyV29ya2VyJik7
CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiBjbGFpbShTV1NlcnZlcldvcmtlciYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2Vy
dmVycygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVz
ZXJBZ2VudCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5n
JiYgdXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKTsKIAogICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qKT47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwCmluZGV4IDNmMjg1N2M1MDU0ODNkMmE3MzBlMmEwOTczMzZhYmE2ZWM4NTBk
YmQuLjEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5N2Q1MDRhNTM2Njc3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0CiAgICAgICAgIGJyZWFrOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4gc2VydmljZVdvcmtlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4gc2VydmljZVdvcmtlckRhdGE7CiAgICAgaWYgKHdvcmtlcikKICAgICAgICAgc2Vydmlj
ZVdvcmtlckRhdGEgPSB3b3JrZXItPmRhdGEoKTsKIApAQCAtMTQ2LDE1ICsxNDYsMTUgQEAgdm9p
ZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Zm9yRWFjaENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKFNXU2VydmVyOjoKIAogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OmRhdGEoKSBjb25zdAogewotICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2VyRGF0YTsKICAgICBpZiAobV9pbnN0YWxsaW5n
V29ya2VyKQogICAgICAgICBpbnN0YWxsaW5nV29ya2VyRGF0YSA9IG1faW5zdGFsbGluZ1dvcmtl
ci0+ZGF0YSgpOwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3Jr
ZXJEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3Jr
ZXJEYXRhOwogICAgIGlmIChtX3dhaXRpbmdXb3JrZXIpCiAgICAgICAgIHdhaXRpbmdXb3JrZXJE
YXRhID0gbV93YWl0aW5nV29ya2VyLT5kYXRhKCk7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyRGF0YT4gYWN0aXZlV29ya2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJEYXRhPiBhY3RpdmVXb3JrZXJEYXRhOwogICAgIGlmIChtX2FjdGl2ZVdvcmtlcikKICAgICAg
ICAgYWN0aXZlV29ya2VyRGF0YSA9IG1fYWN0aXZlV29ya2VyLT5kYXRhKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiMDU2MjhmNDAwZWE5ZDljNjM3
ZmMzYWI0NTdmMDA0ZmRjNWYyODA1Li44NTAyNjA0MWQ4OTdmYzE2Y2I0MmQwMjE5ZDg4NmM3N2M3
OWJkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01
MCwxOSArNTAsMTkgQEAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkKIHsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
dm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYg
am9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtl
ciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKQogICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0
Y2gpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBq
b2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQogewogICAgIGlmIChhdXRvKiB3b3JrZXIg
PSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSkKICAgICAgICAgd29ya2VyLT5zY3JpcHRDb250ZXh0U3RhcnRlZChqb2JE
YXRhSWRlbnRpZmllciwgZG9lc0hhbmRsZUZldGNoKTsKIH0KICAgICAKLXZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVs
KQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoY29u
c3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRh
SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikpCiAgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoSW5zdGFsbChqb2JEYXRhSWRlbnRpZmll
ciwgd2FzU3VjY2Vzc2Z1bCk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV28KICAgICB9CiB9CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8q
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHNlcnZlciA9IHdvcmtlciA/IHdvcmtl
ci0+c2VydmVyKCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggYThiYjA3MGVjZGY2ZjY1ZWRhMjRlNTgyNmQ4NmQ3M2NkZDI3ZjZjYS4uN2Q1Yzhm
MTQ5YjczMzFkNDBhNGEyZWFjYWQ5ZDY0YjQyMDAxYzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NywyMCArNTcsMjAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENs
aWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwogCiAgICAgLy8gTWVz
c2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFy
dGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4m
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRG
aW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZl
bnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlw
dFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMjQwNTI5ODc4YjdiYmEyZDVjOGRlMjVj
Y2FjMTZmNDYwMGNmOWNmZC4uNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKICAgICBy
ZXR1cm4gbV9zZXJ2ZXIgPyBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4m
IGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJU
KG1fc2VydmVyKTsKICAgICBpZiAobV9zZXJ2ZXIpCiAgICAgICAgIG1fc2VydmVyLT5zY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMsIG1lc3NhZ2UpOwog
fQogCi12b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwg
Ym9vbCBkb2VzSGFuZGxlRmV0Y2gpCit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0
U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkKIHsKICAgICBtX3No
b3VsZFNraXBIYW5kbGVGZXRjaCA9ICFkb2VzSGFuZGxlRmV0Y2g7CiAgICAgQVNTRVJUKG1fc2Vy
dmVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZQogICAgICAg
ICBtX3NlcnZlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlz
KTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFs
bChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpv
YkRhdGFJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgYXV0byBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7CiAgICAgaWYgKHN0YXRlID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVk
dW5kYW50KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRU
ZXJtaW5hdGVkKCkKICAgICAgICAgbV9zZXJ2ZXItPndvcmtlckNvbnRleHRUZXJtaW5hdGVkKCp0
aGlzKTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29y
a2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJiBjbGllbnRJZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBjbGllbnRJZCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9zZXJ2ZXIpOwogICAgIGlmICghbV9zZXJ2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggZDg2M2UyNTI0
MDlmZDI3NWMwNzM1YzZlMGQ3OWQwODk0YTMzNzc0ZS4uYmU1NWVlYjFhYTJmZTYyYjYxNzIxZTkz
MzEwYjBjYTRkYTEyOWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtOTUsMTIgKzk1LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRp
bmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdFdmVudHMoYm9vbCk7CiAKLSAgICB2
b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiYsIGJvb2wgZG9lc0hhbmRsZUZldGNoKTsKLSAgICB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIGJv
b2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChj
b25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCBkb2Vz
SGFuZGxlRmV0Y2gpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBib29sIHdhc1N1Y2Nlc3NmdWwp
OwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1p
bmF0ZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNo
QWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZl
bnRzIHsgZmFsc2UgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vdFJ1bm5pbmcgfTsK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CiAgICAgUmVnaXN0cmFibGVE
b21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAgICBib29sIG1faXNTa2lwV2FpdGluZ0ZsYWdT
ZXQgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4g
bV93aGVuQWN0aXZhdGVkSGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCmlu
ZGV4IDJkYzhlODc3NmU3MTQxN2Y1Nzc1ODg4YThkOTIyYTExYzFlNzg3NzAuLjc0NTZiZTQzNjdk
MmQzNmJlMTQwM2QzNjQ1M2JlMGFlYzY3Y2I0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV29ya2xldDo6YWRkTW9kdWxlKGNvbnN0IFN0
cmluZyYgbW9kdWxlVVJMU3RyaW5nLCBXb3JrbGV0T3B0aW9ucyYmIG9wdGlvbnMsCiAKICAgICBm
b3IgKGF1dG8mIHByb3h5IDogbV9wcm94aWVzKSB7CiAgICAgICAgIHByb3h5LT5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbcGVuZGluZ1Rhc2tzID0gcGVuZGluZ1Rhc2tzLmNv
cHlSZWYoKSwgbW9kdWxlVVJMID0gbW9kdWxlVVJMLmlzb2xhdGVkQ29weSgpLCBjcmVkZW50aWFs
cyA9IG9wdGlvbnMuY3JlZGVudGlhbHMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuZmV0Y2hB
bmRJbnZva2VTY3JpcHQobW9kdWxlVVJMLCBjcmVkZW50aWFscywgW3BlbmRpbmdUYXNrcyA9IFdU
Rk1vdmUocGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0
aXZpdHkpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuZmV0Y2hBbmRJbnZv
a2VTY3JpcHQobW9kdWxlVVJMLCBjcmVkZW50aWFscywgW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUo
cGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkp
XShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGlu
Z1Rhc2tzKSwgZXhjZXB0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGV4Y2VwdGlvbiksIHBlbmRpbmdB
Y3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRp
bmdUYXNrcy0+YWJvcnQoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYWUwZTMzODkxZGJjODlmMTQ2
ODdkNDE0ODAyYWFhMTJkMGQ4NGZmLi5hODIyMDVhYmJkN2U3YTgwM2M1Y2FkZWI2NzNiYmY5MWY1
NWQzMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBSZWZlcnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2Nv
cGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6Ok5v
UmVmZXJyZXI7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNj
cmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVu
dGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9r
ZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3Jl
ZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIHNjcmlwdCgpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlVVJMLCBjcmVkZW50
aWFscywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA2NTJhM2I2YmRkOWY1NTE4NDc5YTNmYThl
YjlhZjljOWU2ZGRiZDcxLi43ZWUzOGIyNjgzNmVjYWRjYzg3NzNkYjBmZWViZjczMTQxZWNkYWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKTsKKyAgICB2b2lkIGZldGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVS
TCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAKICAgICBEb2N1bWVudCogcmVzcG9uc2libGVE
b2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBjb25zdCBEb2N1bWVu
dCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7
IH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fdXJsOwogICAgIEpT
Qzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7Ci0gICAgT3B0aW9uYWw8U2NyaXB0U291
cmNlQ29kZT4gbV9jb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9j
b2RlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgK
aW5kZXggYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNy4uYWZjOTAwMWE3
NjE2M2I2NWM4ZDNiY2E3M2UxN2Q4OTk2YzMzNmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAg
ICAgaW50IG1fZXJyb3JDb3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxUZXh0UG9zaXRpb24+IG1f
bGFzdEVycm9yUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxUZXh0UG9zaXRpb24+IG1fbGFz
dEVycm9yUG9zaXRpb247CiAgICAgU3RyaW5nQnVpbGRlciBtX2Vycm9yTWVzc2FnZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBkODUyNDRjYTcyMDViMmFm
NzBhY2UyOTE1YjQ1YTU1N2M4Njc1MjA5Li4xN2Y2ZjQ2MGE4M2U5ZjJmNDQ0ZDU4MTQzNjVmYzFk
NDQ5NzgyZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwNSw3
ICs0MDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgcmV0dXJuIG9wZW4obWV0aG9k
LCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jKTsKIH0KIAotT3B0aW9uYWw8RXhjZXB0aW9uT3I8
dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKK3N0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKIHsKICAgICAv
LyBBIHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBzaG91bGQg
bm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0aGF0IHZhbHVlIHRvIHRoZSBj
YWxsZXIuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFu
ZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0aG0uCkBAIC00MzksNyArNDM5
LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBYTUxIdHRwUmVxdWVzdDo6c2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYgc2VuZFR5cGUpCitF
eGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChzdGQ6Om9wdGlvbmFsPFNlbmRU
eXBlcz4mJiBzZW5kVHlwZSkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kWE1MSHR0cFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1cmwoKS5zdHJpbmco
KSk7CiAgICAgbV91c2VyR2VzdHVyZVRva2VuID0gVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJl
bnRVc2VyR2VzdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1NzZh
MmVkNDhlYzI1Y2FmMmVjMjdhYTQyYTg5YjMxOTc0MzFhY2VjLi41Njg3YjhiOTQ2MWQyMDcxOWI5
NDE0NjZlOGU2YTljNTJlY2IxNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApA
QCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gb3Blbihjb25z
dCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0
cmluZyYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNz
d29yZCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoc3RkOjpvcHRpb25hbDxTZW5kVHlwZXM+JiYp
OwogICAgIHZvaWQgYWJvcnQoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRSZXF1ZXN0SGVh
ZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gb3ZlcnJpZGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAg
LTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJc0RvbmUoYm9vbCkgZmluYWw7CiAK
LSAgICBPcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gcHJlcGFyZVRvU2VuZCgpOworICAgIHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IHByZXBhcmVUb1NlbmQoKTsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZW5kKERvY3VtZW50Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2Vu
ZChjb25zdCBTdHJpbmcmID0geyB9KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKEJsb2Im
KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWY8WE1MSHR0cFJlcXVl
c3Q+IHByb3RlY3RlZFRoaXM7IC8vIEtlZXAgb2JqZWN0IGFsaXZlIHdoaWxlIGxvYWRpbmcgZXZl
biBpZiB0aGVyZSBpcyBubyBsb25nZXIgYSBKUyB3cmFwcGVyLgogICAgICAgICBSZWY8VGhyZWFk
YWJsZUxvYWRlcj4gbG9hZGVyOwogICAgIH07Ci0gICAgT3B0aW9uYWw8TG9hZGluZ0FjdGl2aXR5
PiBtX2xvYWRpbmdBY3Rpdml0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRpbmdBY3Rpdml0eT4g
bV9sb2FkaW5nQWN0aXZpdHk7CiAKICAgICBTdHJpbmcgbV9yZXNwb25zZUVuY29kaW5nOwogCkBA
IC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIE1vbm90b25pY1RpbWUgbV9zZW5kaW5n
VGltZTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKICAgICBSZWZQ
dHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOwogICAgIGJvb2wgbV9oYXNS
ZWxldmFudEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwMjdkZGUzOGUwOTU3Y2M0MWNiODZi
NjYyYmM3Y2ZmYzM0MmQzZDU1Li4xY2RhOTdjMTc2NTA2ZDk1ZDZiMjExZTEyMTE2ZmUyNjg3ZjFk
YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
CkBAIC0xOTAsNiArMTkwLDYgQEAgcHJpdmF0ZToKIHhtbERvY1B0ciB4bWxEb2NQdHJGb3JTdHJp
bmcoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogI2VuZGlmCiAKLU9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBw
YXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+PiBwYXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAxMTVhYmIxYmJlNDJiOThiOWU0MGI3YjEz
N2FlZDQ2YzRmM2Y3ZDI1Li4xZDhkYWRiZTQ2NzYxOTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5Nzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBib29sIFhNTERvY3VtZW50UGFy
c2VyOjphcHBlbmRGcmFnbWVudFNvdXJjZShjb25zdCBTdHJpbmcmIGNodW5rKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi11c2luZyBBdHRyaWJ1dGVQYXJzZVN0YXRl
ID0gT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+OwordXNpbmcgQXR0cmlidXRlUGFy
c2VTdGF0ZSA9IHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+OwogCiBzdGF0
aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNv
bnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogLyp4bWxQcmVmaXgqLywg
Y29uc3QgeG1sQ2hhciogLyp4bWxVUkkqLywgaW50IC8qbnVtTmFtZXNwYWNlcyovLCBjb25zdCB4
bWxDaGFyKiogLypuYW1lc3BhY2VzKi8sIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgLypudW1EZWZh
dWx0ZWQqLywgY29uc3QgeG1sQ2hhcioqIGxpYnhtbEF0dHJpYnV0ZXMpCiB7CkBAIC0xNDc5LDcg
KzE0NzksNyBAQCBzdGF0aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50TnNIYW5kbGVyKHZv
aWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHhtbExvYwogICAgIH0KIH0KIAotT3B0aW9uYWw8
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3N0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQXR0cmli
dXRlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSAi
PD94bWwgdmVyc2lvbj1cIjEuMFwiPz48YXR0cnMgIiArIHN0cmluZyArICIgLz4iOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJEcml2ZXIvQWN0
aW9ucy5oCmluZGV4IDMwMjRmMmQwMGNkZWY2YzE0YzJjNzM4YzRkMTI2ZmExYjRhODcwY2IuLmJh
YmI1NGVmMjI2NTZhN2UwNjllYzk3MDAwZWZhZTUyNGQzNWExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQWN0aW9ucy5oCkBA
IC0zNiw3ICszNiw3IEBAIHN0cnVjdCBJbnB1dFNvdXJjZSB7CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsgTm9uZSwgS2V5LCBQb2ludGVyLCBXaGVlbCB9OwogCiAgICAgVHlwZSB0eXBlOwotICAgIE9w
dGlvbmFsPFBvaW50ZXJUeXBlPiBwb2ludGVyVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvaW50
ZXJUeXBlPiBwb2ludGVyVHlwZTsKIH07CiAKIHN0cnVjdCBQb2ludGVyUGFyYW1ldGVycyB7CkBA
IC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBQb2ludGVyT3JpZ2luIHsKICAgICBlbnVtIGNsYXNzIFR5
cGUgeyBWaWV3cG9ydCwgUG9pbnRlciwgRWxlbWVudCB9OwogCiAgICAgVHlwZSB0eXBlOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBl
bGVtZW50SUQ7CiB9OwogCiBzdHJ1Y3QgQWN0aW9uIHsKQEAgLTY0LDE3ICs2NCwxNyBAQCBzdHJ1
Y3QgQWN0aW9uIHsKICAgICBTdHJpbmcgaWQ7CiAgICAgVHlwZSB0eXBlOwogICAgIFN1YnR5cGUg
c3VidHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZHVyYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gZHVyYXRpb247CiAKLSAgICBPcHRpb25hbDxQb2ludGVyVHlwZT4gcG9p
bnRlclR5cGU7Ci0gICAgT3B0aW9uYWw8TW91c2VCdXR0b24+IGJ1dHRvbjsKLSAgICBPcHRpb25h
bDxQb2ludGVyT3JpZ2luPiBvcmlnaW47Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4geDsKLSAgICBP
cHRpb25hbDxpbnQ2NF90PiB5OwotICAgIE9wdGlvbmFsPGludDY0X3Q+IGRlbHRhWDsKLSAgICBP
cHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7CisgICAgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4g
cG9pbnRlclR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRvbj4gYnV0dG9uOworICAg
IHN0ZDo6b3B0aW9uYWw8UG9pbnRlck9yaWdpbj4gb3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4geDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHk7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBkZWx0YVg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGtleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
a2V5OwogfTsKIAogfSAvLyBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
Q2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NhcGFiaWxpdGllcy5oCmluZGV4IDBi
NmYzYjM4N2JiODI5YzFiNGM2MjNmMWE3MDU1ZTFhYzFkMjhiMjQuLjc1Y2NiYTFhNTVkMWY2MzNk
NTdhOWI3YzA4MzA5YzRjZWQ1ZjlhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2Fw
YWJpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9DYXBhYmlsaXRpZXMuaApAQCAtMzQs
OSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkRyaXZlciB7CiAKIHN0cnVjdCBUaW1lb3V0cyB7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBzY3JpcHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBwYWdlTG9h
ZDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGltcGxpY2l0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzY3JpcHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhZ2VMb2FkOworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbXBsaWNpdDsKIH07CiAKIGVudW0gY2xhc3MgUGFnZUxvYWRT
dHJhdGVneSB7CkBAIC01NSwzNyArNTUsMzcgQEAgZW51bSBjbGFzcyBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciB7CiAKIHN0cnVjdCBQcm94eSB7CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBhdXRvY29uZmlnVVJMOwotICAgIE9wdGlvbmFsPFVSTD4gZnRwVVJMOwotICAg
IE9wdGlvbmFsPFVSTD4gaHR0cFVSTDsKLSAgICBPcHRpb25hbDxVUkw+IGh0dHBzVVJMOwotICAg
IE9wdGlvbmFsPFVSTD4gc29ja3NVUkw7Ci0gICAgT3B0aW9uYWw8dWludDhfdD4gc29ja3NWZXJz
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhdXRvY29uZmlnVVJMOworICAgIHN0ZDo6
b3B0aW9uYWw8VVJMPiBmdHBVUkw7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBVUkw7Cisg
ICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzVVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBz
b2Nrc1VSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHNvY2tzVmVyc2lvbjsKICAgICBW
ZWN0b3I8U3RyaW5nPiBpZ25vcmVBZGRyZXNzTGlzdDsKIH07CiAKIHN0cnVjdCBDYXBhYmlsaXRp
ZXMgewotICAgIE9wdGlvbmFsPFN0cmluZz4gYnJvd3Nlck5hbWU7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBicm93c2VyVmVyc2lvbjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsK
LSAgICBPcHRpb25hbDxib29sPiBhY2NlcHRJbnNlY3VyZUNlcnRzOwotICAgIE9wdGlvbmFsPGJv
b2w+IHN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHk7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc2V0V2lu
ZG93UmVjdDsKLSAgICBPcHRpb25hbDxUaW1lb3V0cz4gdGltZW91dHM7Ci0gICAgT3B0aW9uYWw8
UGFnZUxvYWRTdHJhdGVneT4gcGFnZUxvYWRTdHJhdGVneTsKLSAgICBPcHRpb25hbDxVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I7Ci0gICAgT3B0aW9uYWw8
UHJveHk+IHByb3h5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBicm93c2VyTmFtZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYnJvd3NlclZlcnNpb247CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFjY2VwdElu
c2VjdXJlQ2VydHM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzdHJpY3RGaWxlSW50ZXJhY3Rh
YmlsaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2V0V2luZG93UmVjdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRpbWVvdXRzPiB0aW1lb3V0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VMb2Fk
U3RyYXRlZ3k+IHBhZ2VMb2FkU3RyYXRlZ3k7CisgICAgc3RkOjpvcHRpb25hbDxVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I7CisgICAgc3RkOjpvcHRpb25h
bDxQcm94eT4gcHJveHk7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAg
T3B0aW9uYWw8U3RyaW5nPiBicm93c2VyQmluYXJ5OwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBicm93c2VyQXJndW1lbnRzOwotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+Pj4gY2VydGlmaWNhdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBi
cm93c2VyQmluYXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJyb3dzZXJB
cmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4+IGNlcnRpZmljYXRlczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBPcHRp
b25hbDxib29sPiB1c2VPdmVybGF5U2Nyb2xsYmFyczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHVzZU92ZXJsYXlTY3JvbGxiYXJzOwogI2VuZGlmCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRf
U0VSVkVSKQotICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0QWRkcjsKLSAgICBPcHRpb25hbDxp
bnQ+IHRhcmdldFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldEFkZHI7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRhcmdldFBvcnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDA4MzFhZjcxMjFhMWY5MGIwN2M2YzhjYWM0ODE3NmQ1
OTA1YTI2NDMuLjM1M2RhMGMzZjIzMzMzM2JkNjM0NTI2ZjhjOGRiMzQyOTY1ZmQyODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIFByb3RvY29s
RXJyb3JDb2RlIHsKICAgICBTZXJ2ZXJFcnJvciA9IC0zMjAwMAogfTsKIAotQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBPcHRpb25hbDxF
cnJvckNvZGU+IGVycm9yQ29kZSkKK0NvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRy
PEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvZGU+IGVycm9yQ29k
ZSkKICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkKIHsKICAgICBpZiAoIW1fZXJyb3JDb2Rl
KSB7CkBAIC0xMTksNyArMTE5LDcgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQ
dHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBPcHRpb25hbDxFcnJvckNvZGU+IGUKICAgICB9CiB9
CiAKLUNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoRXJyb3JDb2RlIGVycm9yQ29kZSwgT3B0
aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UpCitDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0
KEVycm9yQ29kZSBlcnJvckNvZGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2Up
CiAgICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUpCiAgICAgLCBtX2Vycm9yTWVzc2FnZShlcnJv
ck1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQu
aCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCmluZGV4IDViNDM1NWQ3MzUyZjkx
NjQ4YmZjMjQ1ZDgwNjUwMTJiYWI2ODk0YWQuLjI5ZGRhNzU5MzA5ZTYxMjdlNjJkNzFkMDQ5N2Zi
MTU2OTM1NDgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5o
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvbW1hbmRSZXN1bHQoV1RGTW92ZShyZXN1bHQpLCBD
b21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcik7CiAgICAgfQogCi0gICAgc3Rh
dGljIENvbW1hbmRSZXN1bHQgZmFpbChFcnJvckNvZGUgZXJyb3JDb2RlLCBPcHRpb25hbDxTdHJp
bmc+IGVycm9yTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGF0aWMgQ29tbWFuZFJlc3Vs
dCBmYWlsKEVycm9yQ29kZSBlcnJvckNvZGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1l
c3NhZ2UgPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICByZXR1cm4gQ29tbWFuZFJlc3Vs
dChlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfQpAQCAtODIsMTYgKzgyLDE2IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhIW1fZXJyb3JDb2RlOyB9
CiAgICAgRXJyb3JDb2RlIGVycm9yQ29kZSgpIGNvbnN0IHsgQVNTRVJUKGlzRXJyb3IoKSk7IHJl
dHVybiBtX2Vycm9yQ29kZS52YWx1ZSgpOyB9CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nKCkgY29u
c3Q7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IEFTU0VSVChp
c0Vycm9yKCkpOyByZXR1cm4gbV9lcnJvck1lc3NhZ2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZXJyb3JNZXNzYWdlKCkgY29uc3QgeyBBU1NFUlQoaXNFcnJvcigpKTsgcmV0dXJuIG1f
ZXJyb3JNZXNzYWdlOyB9CiAgICAgY29uc3QgUmVmUHRyPEpTT046Ok9iamVjdD4mIGFkZGl0aW9u
YWxFcnJvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQWRkaXRpb25hbERhdGE7IH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiwgT3B0aW9uYWw8RXJyb3JDb2RlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgZXhwbGljaXQgQ29t
bWFuZFJlc3VsdChFcnJvckNvZGUsIE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOwor
ICAgIGV4cGxpY2l0IENvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmLCBzdGQ6Om9w
dGlvbmFsPEVycm9yQ29kZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0IENvbW1hbmRS
ZXN1bHQoRXJyb3JDb2RlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOwog
CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiBtX3Jlc3VsdDsKLSAgICBPcHRpb25hbDxFcnJvckNv
ZGU+IG1fZXJyb3JDb2RlOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9lcnJvck1lc3NhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxFcnJvckNvZGU+IG1fZXJyb3JDb2RlOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2Vycm9yTWVzc2FnZTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBtX2Vy
cm9yQWRkaXRpb25hbERhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0hU
VFBTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZlci5oCmluZGV4IDRiNGEyZTIy
N2YzNDg5NzZlZmI5NmE3OGI5YzA1MWI2NWM3Mzc4MzEuLjg0NzMyMzY1MDA0YTc2MTBjZGZiMTEz
MGNkYzg4ZTJkN2MyZGJiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZlci5oCkBAIC03NSw3ICs3NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50JiwgQ29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRDbG9zZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCkgZmlu
YWw7CiAKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY2xpZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudDsKICAgICBIVFRQUGFyc2VyIG1fcGFyc2VyOwog
I2VuZGlmCiB9OwpAQCAtODksMTIgKzg5LDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBIVFRQ
U2VydmVyKEhUVFBSZXF1ZXN0SGFuZGxlciYpOwogICAgIH5IVFRQU2VydmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgYm9vbCBsaXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWdu
ZWQgcG9ydCk7CisgICAgYm9vbCBsaXN0ZW4oY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBo
b3N0LCB1bnNpZ25lZCBwb3J0KTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAogcHJpdmF0ZToK
ICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCi0gICAgT3B0aW9uYWw8Q29ubmVjdGlv
bklEPiBkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIFBsYXRmb3JtU29j
a2V0VHlwZSkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSBmaW5h
bDsKICAgICB2b2lkIGRpZENoYW5nZVN0YXR1cyhSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dCYsIENvbm5lY3Rpb25JRCwgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Okxpc3RlbmVy
OjpTdGF0dXMpIGZpbmFsOwogI2VuZGlmCiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCi0gICAgT3B0aW9uYWw8
Q29ubmVjdGlvbklEPiBtX3NlcnZlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4g
bV9zZXJ2ZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDIwZmM5ODdhNGE4
YmY3YmY0YTFlY2IwODQ5YTNkYjYyMzU3YjE4OTUuLjc4NGYyMWYzMDA0OGJiZmVlZTRjMTk4ZmQ2
MzMyMDY3MDE0Y2JmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtODEsNyArODEsNyBAQCBib29s
IFNlc3Npb246OmlzQ29ubmVjdGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9ob3N0LT5pc0Nvbm5l
Y3RlZCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBmaXJzdFdpbmRvd0hhbmRsZUlu
UmVzdWx0KEpTT046OlZhbHVlJiByZXN1bHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGZpcnN0V2luZG93SGFuZGxlSW5SZXN1bHQoSlNPTjo6VmFsdWUmIHJlc3VsdCkKIHsKICAgICBh
dXRvIGhhbmRsZXMgPSByZXN1bHQuYXNBcnJheSgpOwogICAgIGlmIChoYW5kbGVzICYmIGhhbmRs
ZXMtPmxlbmd0aCgpKSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hU
b0Jyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dCwgRnVuY3Rpb248
dm8KICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0cmF0
ZWd5U3RyaW5nKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9h
ZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIWNhcGFiaWxpdGllcygpLnBhZ2VM
b2FkU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBTZXNzaW9uOjphY2NlcHRBbmROb3RpZnlBbGVydChGdW5jdGlvbjx2b2lkIChD
b21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb24KIHZvaWQgU2Vzc2lvbjo6cmVwb3J0VW5leHBl
Y3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGdldEFsZXJ0VGV4dChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgewotICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IGFsZXJ0VGV4dDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGFsZXJ0VGV4dDsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAg
ICAgICBhdXRvIHZhbHVlU3RyaW5nID0gcmVzdWx0LnJlc3VsdCgpLT5hc1N0cmluZygpOwogICAg
ICAgICAgICAgaWYgKCEhdmFsdWVTdHJpbmcpCkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBTZXNz
aW9uOjpnZXRXaW5kb3dIYW5kbGVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBTZXNzaW9uOjpuZXdXaW5kb3coT3B0
aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbjo6bmV3V2luZG93KHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6Ok5vU3VjaFdpbmRvdykpOwpAQCAtODMxLDcgKzgzMSw3IEBAIHZv
aWQgU2Vzc2lvbjo6Z2V0V2luZG93UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vzc2lvbjo6c2V0V2lu
ZG93UmVjdChPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8
ZG91YmxlPiB3aWR0aCwgT3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb246OnNldFdp
bmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWln
aHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpOb1N1Y2hXaW5kb3cpKTsKQEAgLTEwMDMsNyArMTAwMyw3IEBAIFN0cmluZyBTZXNzaW9uOjpl
eHRyYWN0RWxlbWVudElEKEpTT046OlZhbHVlJiB2YWx1ZSkKICAgICByZXR1cm4gZWxlbWVudElE
OwogfQogCi12b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucywgRnVuY3Rp
b248dm9pZCAoT3B0aW9uYWw8UmVjdD4mJiwgT3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVs
ZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8
UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fdG9wbGV2ZWxCcm93
c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTEwMjUsOCArMTAyNSw4IEBAIHZvaWQgU2Vzc2lv
bjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNl
dDxFbGVtZW50TGF5CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBP
cHRpb25hbDxpbnQ+IGVsZW1lbnRYOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1lbnRZOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFg7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBlbGVtZW50WTsKICAgICAgICAgYXV0byBlbGVtZW50UG9zaXRpb24gPSByZWN0T2Jq
ZWN0LT5nZXRPYmplY3QoIm9yaWdpbiJfcyk7CiAgICAgICAgIGlmIChlbGVtZW50UG9zaXRpb24p
IHsKICAgICAgICAgICAgIGVsZW1lbnRYID0gZWxlbWVudFBvc2l0aW9uLT5nZXRJbnRlZ2VyKCJ4
Il9zKTsKQEAgLTEwMzcsOCArMTAzNyw4IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRM
YXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1l
bnRXaWR0aDsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBlbGVtZW50SGVpZ2h0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gZWxlbWVudEhlaWdodDsKICAgICAgICAgYXV0byBlbGVtZW50U2l6ZSA9IHJlY3RPYmplY3Qt
PmdldE9iamVjdCgic2l6ZSJfcyk7CiAgICAgICAgIGlmIChlbGVtZW50U2l6ZSkgewogICAgICAg
ICAgICAgZWxlbWVudFdpZHRoID0gZWxlbWVudFNpemUtPmdldEludGVnZXIoIndpZHRoIl9zKTsK
QEAgLTEzNTksNyArMTM1OSw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0RWxlbWVudFJlY3QoY29uc3Qg
U3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9
LCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8UmVjdD4mJiByZWN0LCBPcHRpb25hbDxQb2ludD4mJiwgYm9vbCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgeworICAgICAgICBjb21wdXRlRWxlbWVudExh
eW91dChlbGVtZW50SUQsIHsgfSwgW3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBz
dGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9y
KSB7CiAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW4KICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVwbG9hZFR5
cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChjb25zdCBSZWZQdHI8
SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkKK3N0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVw
bG9hZFR5cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChjb25zdCBS
ZWZQdHI8SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkKIHsKICAgICBpZiAoIXJlc3VsdFZhbHVl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTczMCw3ICsxNzMwLDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9
IHsgRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgRWxlbWVudExh
eW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlcyB9OwotICAgICAgICAgICAgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcywg
ZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwg
Ym9vbCBpc09ic2N1cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0
aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghcmVjdCB8
fCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsZWFyKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRp
b25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkIH07Ci0g
ICAgICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCBlbGVtZW50SUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFJlY3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+
JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9u
cywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0
ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJy
b3IpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTUzLDEzICsyMTUzLDEzIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc2V0IHN0aWNreSBtb2RpZmllcnMgaWYgbmVlZGVkLgogICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6OlNoaWZ0KQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJTaGlmdCJf
cykgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7
IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPigiU2hpZnQiX3MpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0aWNreU1vZGlmaWVycyAmIEtleU1vZGlmaWVyOjpDb250cm9sKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJDb250cm9s
Il9zKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMuYXBwZW5k
KHsgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+KCJDb250cm9sIl9zKSB9KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdGlja3lNb2RpZmllcnMgJiBLZXlNb2RpZmllcjo6QWx0ZXJuYXRlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVy
YWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJB
bHRlcm5hdGUiX3MpIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9u
cy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIkFsdGVybmF0ZSJfcykgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6Ok1ldGEpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJk
SW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFN0cmlu
Zz4oIk1ldGEiX3MpIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9u
cy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIk1ldGEiX3MpIH0pOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25z
KFdURk1vdmUoaW50ZXJhY3Rpb25zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAt
MjM4MCw3ICsyMzgwLDcgQEAgdm9pZCBTZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlv
bnMoVmVjdG9yPEtleWJvYXJkSW50ZXJhY3Rpb24+JiYgaW50ZXJhY3QKICAgICB9KTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPFNlc3Npb246OkNvb2tpZT4gcGFyc2VBdXRvbWF0aW9uQ29va2llKGNv
bnN0IEpTT046Ok9iamVjdCYgY29va2llT2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vz
c2lvbjo6Q29va2llPiBwYXJzZUF1dG9tYXRpb25Db29raWUoY29uc3QgSlNPTjo6T2JqZWN0JiBj
b29raWVPYmplY3QpCiB7CiAgICAgU2Vzc2lvbjo6Q29va2llIGNvb2tpZTsKIApAQCAtMjU5OCw3
ICsyNTk4LDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotSW5wdXRT
b3VyY2UmIFNlc3Npb246OmdldE9yQ3JlYXRlSW5wdXRTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwg
SW5wdXRTb3VyY2U6OlR5cGUgdHlwZSwgT3B0aW9uYWw8UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBl
KQorSW5wdXRTb3VyY2UmIFNlc3Npb246OmdldE9yQ3JlYXRlSW5wdXRTb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgSW5wdXRTb3VyY2U6OlR5cGUgdHlwZSwgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlw
ZT4gcG9pbnRlclR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2FjdGl2ZUlucHV0U291
cmNlcy5hZGQoaWQsIElucHV0U291cmNlKCkpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKQEAgLTI5MjQsNyArMjkyNCw3IEBAIHZvaWQgU2Vzc2lvbjo6c2VuZEFsZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+CiAgICAgfSk7
CiB9CiAKLXZvaWQgU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVt
ZW50SUQsIE9wdGlvbmFsPGJvb2w+IHNjcm9sbEludG9WaWV3LCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uOjp0YWtlU2Ny
ZWVuc2hvdChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElELCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHNjcm9sbEludG9WaWV3LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgoZWxlbWVudElEICYmICFtX2N1cnJlbnRCcm93
c2luZ0NvbnRleHQpIHx8ICghZWxlbWVudElEICYmICFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6Tm9TdWNoV2luZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCmluZGV4IDQ1
ZDIwM2Q2NmRiMmMyODEwZmMyODY0ODhjNTY2ODBhNzIzZWY5NTYuLmFmNjUxNTY5MGFmNDU5NmNh
ZWZmNDk1ODhiNTI0YzE0OTI2ZDNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCkBAIC02MiwxNSArNjIsMTUg
QEAgcHVibGljOgogICAgIHN0cnVjdCBDb29raWUgewogICAgICAgICBTdHJpbmcgbmFtZTsKICAg
ICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHBhdGg7Ci0gICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gZG9tYWluOwotICAgICAgICBPcHRpb25hbDxib29sPiBzZWN1
cmU7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGh0dHBPbmx5OwotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gZXhwaXJ5OwotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNhbWVTaXRlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGF0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGRvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzZWN1cmU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaHR0cE9ubHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGV4cGlyeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbWVTaXRl
OwogICAgIH07CiAKLSAgICBJbnB1dFNvdXJjZSYgZ2V0T3JDcmVhdGVJbnB1dFNvdXJjZShjb25z
dCBTdHJpbmcmIGlkLCBJbnB1dFNvdXJjZTo6VHlwZSwgT3B0aW9uYWw8UG9pbnRlclR5cGU+KTsK
KyAgICBJbnB1dFNvdXJjZSYgZ2V0T3JDcmVhdGVJbnB1dFNvdXJjZShjb25zdCBTdHJpbmcmIGlk
LCBJbnB1dFNvdXJjZTo6VHlwZSwgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4pOwogCiAgICAg
dm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJl
c3VsdCYmKT4mJik7CiAgICAgdm9pZCBjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAgLTg4LDExICs4OCwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbG9zZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYp
PiYmKTsKICAgICB2b2lkIHN3aXRjaFRvV2luZG93KGNvbnN0IFN0cmluZyYgd2luZG93SGFuZGxl
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGdldFdpbmRv
d0hhbmRsZXMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9pZCBu
ZXdXaW5kb3coT3B0aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBuZXdXaW5kb3coc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHR5cGVIaW50LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lk
IHN3aXRjaFRvRnJhbWUoUmVmUHRyPEpTT046OlZhbHVlPiYmLCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHN3aXRjaFRvUGFyZW50RnJhbWUoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRXaW5kb3dSZWN0KEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwotICAgIHZvaWQgc2V0V2luZG93UmVjdChP
cHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91YmxlPiB3
aWR0aCwgT3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQmJik+JiYpOworICAgIHZvaWQgc2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3Vs
dCYmKT4mJik7CiAgICAgdm9pZCBtYXhpbWl6ZVdpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIG1pbmltaXplV2luZG93KEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQgZnVsbHNjcmVlbldpbmRvdyhGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhY2NlcHRBbGVydChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsK
ICAgICB2b2lkIGdldEFsZXJ0VGV4dChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
KTsKICAgICB2b2lkIHNlbmRBbGVydFRleHQoY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdChPcHRpb25hbDxT
dHJpbmc+IGVsZW1lbnRJRCwgT3B0aW9uYWw8Ym9vbD4gc2Nyb2xsSW50b1ZpZXcsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3Qoc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGVsZW1lbnRJRCwgc3RkOjpvcHRpb25hbDxib29sPiBzY3JvbGxJ
bnRvVmlldywgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgU2Vzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+JiYpOwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0
UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gcGFnZUxvYWRTdHJhdGVneVN0cmluZygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhh
bmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAg
IHZvaWQgaGFuZGxlVW5leHBlY3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmKTsKQEAgLTE3MCwxMSArMTcwLDExIEBAIHByaXZhdGU6CiAgICAgICAgIFNjcm9s
bEludG9WaWV3SWZOZWVkZWQgPSAxIDw8IDAsCiAgICAgICAgIFVzZVZpZXdwb3J0Q29vcmRpbmF0
ZXMgPSAxIDw8IDEsCiAgICAgfTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFJlY3Q+JiYsIE9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmKT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+LCBG
dW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+
JiYsIGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpPiYmKTsKIAogICAgIHZvaWQgZWxlbWVu
dElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJik7CiAgICAgZW51bSBjbGFzcyBGaWxlVXBsb2FkVHlwZSB7IFNpbmds
ZSwgTXVsdGlwbGUgfTsKLSAgICBPcHRpb25hbDxGaWxlVXBsb2FkVHlwZT4gcGFyc2VFbGVtZW50
SXNGaWxlVXBsb2FkUmVzdWx0KGNvbnN0IFJlZlB0cjxKU09OOjpWYWx1ZT4mKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZpbGVVcGxvYWRUeXBlPiBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQo
Y29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYpOwogICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVu
dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYm
KT4mJik7CiAgICAgdm9pZCBzZXRJbnB1dEZpbGVVcGxvYWRGaWxlcyhjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG11bHRpcGxlLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGRpZFNldElucHV0RmlsZVVwbG9hZEZp
bGVzKGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE4NSw4ICsxODUsOCBAQCBwcml2YXRlOgogICAg
IGVudW0gY2xhc3MgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgeyBLZXlQcmVzcywgS2V5UmVsZWFz
ZSwgSW5zZXJ0QnlLZXkgfTsKICAgICBzdHJ1Y3QgS2V5Ym9hcmRJbnRlcmFjdGlvbiB7CiAgICAg
ICAgIEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlIHR5cGUgeyBLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTo6SW5zZXJ0QnlLZXkgfTsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwotICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IGtleTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRl
eHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBrZXk7CiAgICAgfTsKICAgICBlbnVt
IEtleU1vZGlmaWVyIHsKICAgICAgICAgTm9uZSA9IDAsCkBAIC0yMDMsOCArMjAzLDggQEAgcHJp
dmF0ZToKIAogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIFN0cmluZyBzdWJ0eXBlOwotICAg
ICAgICBPcHRpb25hbDxNb3VzZUJ1dHRvbj4gcHJlc3NlZEJ1dHRvbjsKLSAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBwcmVzc2VkS2V5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9u
PiBwcmVzc2VkQnV0dG9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc3NlZEtl
eTsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IHByZXNzZWRWaXJ0dWFsS2V5czsKICAgICB9Owog
ICAgIElucHV0U291cmNlU3RhdGUmIGlucHV0U291cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCk7
CkBAIC0yMTMsOSArMjEzLDkgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9zY3JpcHRUaW1lb3V0
OwogICAgIGRvdWJsZSBtX3BhZ2VMb2FkVGltZW91dDsKICAgICBkb3VibGUgbV9pbXBsaWNpdFdh
aXRUaW1lb3V0OwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4
dDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY3VycmVudEJyb3dzaW5nQ29udGV4dDsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IG1fY3VycmVudFBhcmVudEJyb3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtX2N1cnJlbnRQYXJlbnRCcm93c2luZ0NvbnRleHQ7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIElucHV0U291cmNlPiBtX2FjdGl2ZUlucHV0U291cmNlczsKICAgICBIYXNoTWFwPFN0
cmluZywgSW5wdXRTb3VyY2VTdGF0ZT4gbV9pbnB1dFN0YXRlVGFibGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oIGIvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uSG9zdC5oCmluZGV4IGFmYzBiYWE4MGRjZWMwNmM1ZDA2OTE4MWM4Y2JmMTJmZDY3OWE2OGIu
LjY4OGYzZjljZmM4NjE1MDc3ZjQ5NDUyYWVkYWFmYzBmMWY5M2M3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b25Ib3N0LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBjb25zdCBDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAK
LSAgICB2b2lkIGNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvcik+JiYpOwotICAgIHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2
b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9Ccm93
c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOworICAg
IHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIHN0cnVjdCBDb21tYW5kUmVzcG9uc2UgewogICAg
ICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXNwb25zZU9iamVjdDsKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKICNpZiBVU0UoR0xJQikKICAgICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVj
dGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBtZXNzYWdlSGFuZGxlcnMoKTsKICAgICB2b2lkIGNvbm5l
Y3Rpb25EaWRDbG9zZSgpOwotICAgIHZvaWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChP
cHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJik7CisgICAgdm9pZCBsYXVuY2hCcm93c2VyKEZ1bmN0
aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOwogICAgIHZvaWQgY29u
bmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4m
Jik7CiAgICAgYm9vbCBtYXRjaENhcGFiaWxpdGllcyhHVmFyaWFudCopOwogICAgIGJvb2wgYnVp
bGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJpYW50QnVpbGRlciopIGNvbnN0OwpAQCAtMTA1LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZFNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKICAgICB2b2lkIHJlY2VpdmVkU3RhcnRBdXRvbWF0aW9u
U2Vzc2lvblJldHVybihjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxUYXJnZXQ+PiBwYXJzZVRhcmdldExpc3QoY29uc3Qgc3RydWN0IEV2ZW50Jik7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8VGFyZ2V0Pj4gcGFyc2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBF
dmVudCYpOwogICAgIHZvaWQgc2V0VGFyZ2V0TGlzdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIFZl
Y3RvcjxUYXJnZXQ+JiYpOwogI2VuZGlmCiAKQEAgLTExOCwxNSArMTE4LDE1IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxsb25nLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzcG9uc2UmJik+PiBt
X2NvbW1hbmRSZXF1ZXN0czsKIAogI2lmIFVTRShHTElCKQotICAgIEZ1bmN0aW9uPHZvaWQgKGJv
b2wsIE9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOwor
ICAgIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRT
ZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gbV9icm93
c2VyOwogICAgIFJlZlB0cjxTb2NrZXRDb25uZWN0aW9uPiBtX3NvY2tldENvbm5lY3Rpb247CiAg
ICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7CiAjZWxpZiBVU0UoSU5TUEVD
VE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5nIG1fdGFyZ2V0SXA7CiAgICAgdWludDE2X3Qg
bV90YXJnZXRQb3J0IHsgMCB9OwotICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCwgT3B0aW9uYWw8U3Ry
aW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgT3B0aW9uYWw8SW5z
cGVjdG9yOjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CisgICAgRnVuY3Rpb248dm9pZChib29s
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVy
OworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDQ2
OGM4ODk3MzMwNWFhNTQyZTFhODI2ZTkwNDIzNjVmNmViZGNmMDMuLjNiNTQ1MTM0MzAyMDM1ZTgx
MTk2MzlhYjBjYTRiMjJkNjk3NDM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGNv
bnN0IGNoYXIqIHByb2dyYW1OYW1lKQogaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU3RyaW5nIHBvcnRTdHJpbmc7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBob3N0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBob3N0OwogI2lmIFVTRShJ
TlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlm
IChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQURE
UiIpKQpAQCAtMjEzLDcgKzIxMyw3IEBAIGNvbnN0IFdlYkRyaXZlclNlcnZpY2U6OkNvbW1hbmQg
V2ViRHJpdmVyU2VydmljZTo6c19jb21tYW5kc1tdID0gewogICAgIHsgSFRUUE1ldGhvZDo6R2V0
LCAiL3Nlc3Npb24vJHNlc3Npb25JZC9lbGVtZW50LyRlbGVtZW50SWQvZGlzcGxheWVkIiwgJldl
YkRyaXZlclNlcnZpY2U6OmlzRWxlbWVudERpc3BsYXllZCB9LAogfTsKIAotT3B0aW9uYWw8V2Vi
RHJpdmVyU2VydmljZTo6SFRUUE1ldGhvZD4gV2ViRHJpdmVyU2VydmljZTo6dG9Db21tYW5kSFRU
UE1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhvZCkKK3N0ZDo6b3B0aW9uYWw8V2ViRHJpdmVyU2Vy
dmljZTo6SFRUUE1ldGhvZD4gV2ViRHJpdmVyU2VydmljZTo6dG9Db21tYW5kSFRUUE1ldGhvZChj
b25zdCBTdHJpbmcmIG1ldGhvZCkKIHsKICAgICBhdXRvIGxvd2VyQ2FzZU1ldGhvZCA9IG1ldGhv
ZC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlmIChsb3dlckNhc2VNZXRob2QgPT0g
ImdldCIpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZW5kUmVz
cG9uc2UoRnVuY3Rpb248dm9pZCAoSFRUUFJlcXVlc3RIYW5kbGVyOjpSZXNwb25zZSYKICAgICBy
ZXBseUhhbmRsZXIoeyByZXN1bHQuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2VPYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKSwgImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiX3Mg
fSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNv
bnN0IEpTT046OlZhbHVlJiB2YWx1ZSwgZG91YmxlIG1pbkFsbG93ZWQgPSAwLCBkb3VibGUgbWF4
QWxsb3dlZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2
YWx1ZSwgZG91YmxlIG1pbkFsbG93ZWQgPSAwLCBkb3VibGUgbWF4QWxsb3dlZCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiB7CiAgICAgYXV0byBudW1iZXIgPSB2YWx1ZS5hc0Rv
dWJsZSgpOwogICAgIGlmICghbnVtYmVyKQpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2YWx1
ZSwgZG91YmxlIG1pCiAgICAgcmV0dXJuICpudW1iZXI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1
aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byBudW1iZXIgPSB2YWx1ZUFzTnVtYmVySW5SYW5nZSh2YWx1ZSwgMCwgbWF4U2FmZUlu
dGVnZXIpOwogICAgIGlmICghbnVtYmVyKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBPcHRp
b25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiAKIGVudW0g
Y2xhc3MgSWdub3JlVW5rbm93blRpbWVvdXQgeyBObywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25h
bDxUaW1lb3V0cz4gZGVzZXJpYWxpemVUaW1lb3V0cyhKU09OOjpPYmplY3QmIHRpbWVvdXRzT2Jq
ZWN0LCBJZ25vcmVVbmtub3duVGltZW91dCBpZ25vcmVVbmtub3duVGltZW91dCkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFRpbWVvdXRzPiBkZXNlcmlhbGl6ZVRpbWVvdXRzKEpTT046Ok9iamVjdCYg
dGltZW91dHNPYmplY3QsIElnbm9yZVVua25vd25UaW1lb3V0IGlnbm9yZVVua25vd25UaW1lb3V0
KQogewogICAgIC8vIMKnOC41IFNldCBUaW1lb3V0cy4KICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVjLmh0bWwjZGZuLWRlc2VyaWFsaXplLWFzLWEt
dGltZW91dApAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxUaW1lb3V0cz4gZGVz
ZXJpYWxpemVUaW1lb3V0cyhKU09OOjpPYmplY3QmIHRpbWVvdXRzT2JqZWN0LCBJZ25vCiAgICAg
cmV0dXJuIHRpbWVvdXRzOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXpl
UHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiB7CiAgICAg
Ly8gwqc3LjEgUHJveHkuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8j
cHJveHkKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFs
aXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gZGVzZXJpYWxpemVQ
YWdlTG9hZFN0cmF0ZWd5KGNvbnN0IFN0cmluZyYgcGFnZUxvYWRTdHJhdGVneSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+IGRlc2VyaWFsaXplUGFnZUxvYWRTdHJhdGVn
eShjb25zdCBTdHJpbmcmIHBhZ2VMb2FkU3RyYXRlZ3kpCiB7CiAgICAgaWYgKHBhZ2VMb2FkU3Ry
YXRlZ3kgPT0gIm5vbmUiKQogICAgICAgICByZXR1cm4gUGFnZUxvYWRTdHJhdGVneTo6Tm9uZTsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gZGVz
ZXJpYWxpemVQYWdlTG9hZFN0cmF0ZWd5KGNvbnN0IFN0cmluZyYgcGFnZQogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cj4gZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcihjb25zdCBTdHJpbmcmIHVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I+IGRlc2VyaWFsaXplVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IoY29uc3QgU3RyaW5n
JiB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcikKIHsKICAgICBpZiAodW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3IgPT0gImRpc21pc3MiKQogICAgICAgICByZXR1cm4gVW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3I6OkRpc21pc3M7CkBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpj
b25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwK
ICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgc2Vzc2lvbkhvc3RQdHItPnNl
dEhvc3RBZGRyZXNzKG1fdGFyZ2V0QWRkcmVzcywgbV90YXJnZXRQb3J0KTsKICNlbmRpZgotICAg
IHNlc3Npb25Ib3N0UHRyLT5jb25uZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0
ID0gV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Np
b25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJsZSB7CisgICAgc2Vzc2lvbkhvc3RQdHItPmNv
bm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpTZXNzaW9uTm90Q3JlYXRlZCwgbWFrZVN0cmluZygiRmFpbGVkIHRvIGNvbm5lY3QgdG8g
YnJvd3NlcjogIiwgZXJyb3IudmFsdWUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgz
OCw3ICs4MzgsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVj
dG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogdm9pZCBXZWJEcml2ZXJTZXJ2
aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlz
dCwgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25Ib3N0PiYmIHNlc3Npb25Ib3N0LCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8q
IHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7Ci0gICAgc2Vzc2lvbkhvc3RQdHIt
PnN0YXJ0QXV0b21hdGlvblNlc3Npb24oW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3Zl
KGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGNhcGFi
aWxpdGllc0RpZE1hdGNoLCBPcHRpb25hbDxTdHJpbmc+IGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7
CisgICAgc2Vzc2lvbkhvc3RQdHItPnN0YXJ0QXV0b21hdGlvblNlc3Npb24oW3RoaXMsIGNhcGFi
aWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdU
Rk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGNhcGFiaWxpdGllc0RpZE1hdGNoLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvciwgZXJyb3JNZXNzYWdlLnZhbHVlKCkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgV2ViRHJpdmVy
U2VydmljZTo6c2V0V2luZG93UmVjdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMs
IEZ1bmN0aW9uCiB7CiAgICAgLy8gwqcxMC43LjIgU2V0IFdpbmRvdyBSZWN0LgogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNzZXQtd2lu
ZG93LXJlY3QKLSAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB3aWR0aDsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcmFtZXRlcnMtPmdldFZhbHVl
KCJ3aWR0aCJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJlcklu
UmFuZ2UoKnZhbHVlKSkKICAgICAgICAgICAgIHdpZHRoID0gbnVtYmVyOwpAQCAtMTEwNCw3ICsx
MTA0LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZXRXaW5kb3dSZWN0KFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb24KICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gaGVpZ2h0OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+
Z2V0VmFsdWUoImhlaWdodCJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVB
c051bWJlckluUmFuZ2UoKnZhbHVlKSkKICAgICAgICAgICAgIGhlaWdodCA9IG51bWJlcjsKQEAg
LTExMTMsNyArMTExMyw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c2V0V2luZG93UmVjdChS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB4OworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB4OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+
Z2V0VmFsdWUoIngiX3MpKSB7CiAgICAgICAgIGlmIChhdXRvIG51bWJlciA9IHZhbHVlQXNOdW1i
ZXJJblJhbmdlKCp2YWx1ZSwgSU5UX01JTikpCiAgICAgICAgICAgICB4ID0gbnVtYmVyOwpAQCAt
MTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZXRXaW5kb3dSZWN0KFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb24KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBPcHRpb25hbDxkb3VibGU+IHk7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHk7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJhbWV0ZXJzLT5n
ZXRWYWx1ZSgieSJfcykpIHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJl
ckluUmFuZ2UoKnZhbHVlLCBJTlRfTUlOKSkKICAgICAgICAgICAgIHkgPSBudW1iZXI7CkBAIC0x
MjE1LDcgKzEyMTUsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6Om5ld1dpbmRvdyhSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uPHZvaQogICAgIGlmICghZmluZFNl
c3Npb25PckNvbXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZUhpbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFy
YW1ldGVycy0+Z2V0VmFsdWUoInR5cGUiX3MpKSB7CiAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcg
PSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCEhdmFsdWVTdHJpbmcpIHsKQEAgLTEy
OTMsNyArMTI5Myw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c3dpdGNoVG9QYXJlbnRGcmFt
ZShSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1CiAgICAgfSk7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRFbGVtZW50T3JDb21wbGV0ZVdpdGhFcnJvcihKU09O
OjpPYmplY3QmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiBj
b21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmluZEVsZW1l
bnRPckNvbXBsZXRlV2l0aEVycm9yKEpTT046Ok9iamVjdCYgcGFyYW1ldGVycywgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8g
ZWxlbWVudElEID0gcGFyYW1ldGVycy5nZXRTdHJpbmcoImVsZW1lbnRJZCJfcyk7CiAgICAgaWYg
KGVsZW1lbnRJRC5pc0VtcHR5KCkpIHsKQEAgLTE3MTgsNyArMTcxOCw3IEBAIHZvaWQgV2ViRHJp
dmVyU2VydmljZTo6Z2V0TmFtZWRDb29raWUoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0
ZXJzLCBGdW5jdGlvCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTZXNzaW9uOjpDb29r
aWU+IGRlc2VyaWFsaXplQ29va2llKEpTT046Ok9iamVjdCYgY29va2llT2JqZWN0KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6Q29va2llPiBkZXNlcmlhbGl6ZUNvb2tpZShKU09OOjpP
YmplY3QmIGNvb2tpZU9iamVjdCkKIHsKICAgICBTZXNzaW9uOjpDb29raWUgY29va2llOwogCkBA
IC0xODM2LDcgKzE4MzYsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmRlbGV0ZUFsbENvb2tp
ZXMoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdAogICAgIH0pOwogfQog
Ci1zdGF0aWMgYm9vbCBwcm9jZXNzUGF1c2VBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVt
LCBBY3Rpb24mIGFjdGlvbiwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGlj
IGJvb2wgcHJvY2Vzc1BhdXNlQWN0aW9uKEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgQWN0aW9u
JiBhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQogewogICAgIGF1
dG8gZHVyYXRpb25WYWx1ZSA9IGFjdGlvbkl0ZW0uZ2V0VmFsdWUoImR1cmF0aW9uIl9zKTsKICAg
ICBpZiAoIWR1cmF0aW9uVmFsdWUpCkBAIC0xODUyLDcgKzE4NTIsNyBAQCBzdGF0aWMgYm9vbCBw
cm9jZXNzUGF1c2VBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlv
biwgT3B0aW9uYQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8QWN0aW9u
PiBwcm9jZXNzTnVsbEFjdGlvbihjb25zdCBTdHJpbmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlv
bkl0ZW0sIE9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2Jq
ZWN0JiBhY3Rpb25JdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsK
ICAgICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVtLmdldFN0cmluZygidHlwZSJfcyk7CiAgICAg
aWYgKHN1YnR5cGUgIT0gInBhdXNlIikgewpAQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIE9w
dGlvbmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6
T2JqZWN0JiBhY3Rpb24KICAgICByZXR1cm4gYWN0aW9uOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
QWN0aW9uPiBwcm9jZXNzS2V5QWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYg
YWN0aW9uSXRlbSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzS2V5QWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046
Ok9iamVjdCYgYWN0aW9uSXRlbSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2Up
CiB7CiAgICAgQWN0aW9uOjpTdWJ0eXBlIGFjdGlvblN1YnR5cGU7CiAgICAgYXV0byBzdWJ0eXBl
ID0gYWN0aW9uSXRlbS5nZXRTdHJpbmcoInR5cGUiX3MpOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAg
c3RhdGljIE1vdXNlQnV0dG9uIGFjdGlvbk1vdXNlQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAg
ICByZXR1cm4gTW91c2VCdXR0b246Ok5vbmU7CiB9CiAKLXN0YXRpYyBib29sIHByb2Nlc3NQb2lu
dGVyTW92ZUFjdGlvbihKU09OOjpPYmplY3QmIGFjdGlvbkl0ZW0sIEFjdGlvbiYgYWN0aW9uLCBP
cHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgYm9vbCBwcm9jZXNzUG9pbnRl
ck1vdmVBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYgKGF1dG8gZHVyYXRp
b25WYWx1ZSA9IGFjdGlvbkl0ZW0uZ2V0VmFsdWUoImR1cmF0aW9uIl9zKSkgewogICAgICAgICBh
dXRvIGR1cmF0aW9uID0gdW5zaWduZWRWYWx1ZSgqZHVyYXRpb25WYWx1ZSk7CkBAIC0xOTg2LDcg
KzE5ODYsNyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzUG9pbnRlck1vdmVBY3Rpb24oSlNPTjo6T2Jq
ZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgTwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzUG9pbnRlckFjdGlvbihjb25zdCBTdHJp
bmcmIGlkLCBQb2ludGVyUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSlNPTjo6T2JqZWN0JiBhY3Rp
b25JdGVtLCBPcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxBY3Rpb24+IHByb2Nlc3NQb2ludGVyQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIFBvaW50
ZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBKU09OOjpPYmplY3QmIGFjdGlvbkl0ZW0sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQogewogICAgIEFjdGlvbjo6U3VidHlwZSBh
Y3Rpb25TdWJ0eXBlOwogICAgIGF1dG8gc3VidHlwZSA9IGFjdGlvbkl0ZW0uZ2V0U3RyaW5nKCJ0
eXBlIl9zKTsKQEAgLTIwNDMsNyArMjA0Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxBY3Rpb24+IHBy
b2Nlc3NQb2ludGVyQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIFBvaW50ZXJQYXJhbWV0ZXJzCiAg
ICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc1do
ZWVsQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgT3B0
aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QWN0aW9u
PiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3Rp
b25JdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBBY3Rp
b246OlN1YnR5cGUgYWN0aW9uU3VidHlwZTsKICAgICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVt
LmdldFN0cmluZygidHlwZSJfcyk7CkBAIC0yMDk3LDcgKzIwOTcsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2Jq
ZWN0JiBhY3RpbwogICAgIHJldHVybiBhY3Rpb247CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQb2lu
dGVyUGFyYW1ldGVycz4gcHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKEpTT046Ok9iamVjdCYgYWN0
aW9uU2VxdWVuY2UsIE9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFBvaW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9pbnRlclBhcmFtZXRlcnMoSlNP
Tjo6T2JqZWN0JiBhY3Rpb25TZXF1ZW5jZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1l
c3NhZ2UpCiB7CiAgICAgUG9pbnRlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjEyOSw3
ICsyMTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvaW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9p
bnRlclBhcmFtZXRlcnMoSlNPTjo6T2JqZWN0JiBhY3Rpb24KICAgICByZXR1cm4gcGFyYW1ldGVy
czsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9jZXNzSW5wdXRBY3Rp
b25TZXF1ZW5jZShTZXNzaW9uJiBzZXNzaW9uLCBKU09OOjpWYWx1ZSYgYWN0aW9uU2VxdWVuY2VW
YWx1ZSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPEFjdGlvbj4+IHByb2Nlc3NJbnB1dEFjdGlvblNlcXVlbmNlKFNlc3Npb24mIHNl
c3Npb24sIEpTT046OlZhbHVlJiBhY3Rpb25TZXF1ZW5jZVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBhdXRvIGFjdGlvblNlcXVlbmNlID0gYWN0aW9u
U2VxdWVuY2VWYWx1ZS5hc09iamVjdCgpOwogICAgIGlmICghYWN0aW9uU2VxdWVuY2UpIHsKQEAg
LTIxNTgsOCArMjE1OCw4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8QWN0aW9uPj4gcHJvY2Vz
c0lucHV0QWN0aW9uU2VxdWVuY2UoU2Vzc2lvbiYgc2Vzc2lvbiwgSlNPCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+
IHBhcmFtZXRlcnM7Ci0gICAgT3B0aW9uYWw8UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlOworICAg
IHN0ZDo6b3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgc3RkOjpv
cHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5cGU7CiAgICAgaWYgKGlucHV0U291cmNlVHlw
ZSA9PSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcikgewogICAgICAgICBwYXJhbWV0ZXJzID0g
cHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKCphY3Rpb25TZXF1ZW5jZSwgZXJyb3JNZXNzYWdlKTsK
ICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQpAQCAtMjE5NCw3ICsyMTk0LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9jZXNzSW5wdXRBY3Rpb25TZXF1ZW5jZShTZXNzaW9u
JiBzZXNzaW9uLCBKU08KICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KIAotICAgICAgICBPcHRpb25hbDxBY3Rpb24+IGFjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxBY3Rpb24+IGFjdGlvbjsKICAgICAgICAgaWYgKGlucHV0U291cmNlVHlwZSA9PSBJbnB1
dFNvdXJjZTo6VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIGFjdGlvbiA9IHByb2Nlc3NOdWxsQWN0
aW9uKGlkLCAqYWN0aW9uSXRlbSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgZWxzZSBpZiAoaW5w
dXRTb3VyY2VUeXBlID09IElucHV0U291cmNlOjpUeXBlOjpLZXkpCkBAIC0yMjI1LDcgKzIyMjUs
NyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OnBlcmZvcm1BY3Rpb25zKFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3RpbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGVycm9yTWVzc2FnZTsKICAgICBWZWN0b3I8VmVjdG9yPEFjdGlvbj4+IGFjdGlvbnNCeVRp
Y2s7CiAgICAgdW5zaWduZWQgYWN0aW9uc0FycmF5TGVuZ3RoID0gYWN0aW9uc0FycmF5LT5sZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0FycmF5TGVuZ3RoOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5oIGIv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKaW5kZXggMGYzOGNiMDI5MDg3OTY3
MjQzM2E0Mzc3YWZkMTk3NjdiZGExMmI5NC4uZTQyZDI3ZjcxZmZjMDVkZjRlNjI4MmFlNDczZTlj
MDE5NTY2OTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRpYyBjb25zdCBDb21tYW5kIHNfY29tbWFu
ZHNbXTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxIVFRQTWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0
aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIVFRQ
TWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKTsKICAgICBz
dGF0aWMgYm9vbCBmaW5kQ29tbWFuZChIVFRQTWV0aG9kLCBjb25zdCBTdHJpbmcmIHBhdGgsIENv
bW1hbmRIYW5kbGVyKiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcmFtZXRlcnMpOwogCiAg
ICAgdm9pZCBuZXdTZXNzaW9uKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RH
bGliLmNwcAppbmRleCAyNjQxMGJmZTdhZTMzZjFiNTZmNzdmYTk5OTUxMDZlZjg0N2MxMmQwLi5l
NjI2YTE3YTQxZTVlNDMyYTA3OWVhNGNlNDcwZTZmOWFkZjVjNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtOTMsNyArOTMsNyBAQCBjb25zdCBTb2Nr
ZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFNlc3Npb25Ib3N0OjptZXNzYWdlSGFuZGxl
cnMoKQogICAgIHJldHVybiBtZXNzYWdlSGFuZGxlcnM7CiB9CiAKLXZvaWQgU2Vzc2lvbkhvc3Q6
OmNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2Vy
KEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgbGF1bmNoQnJvd3NlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQo
KSBjb25zdAogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEo
U2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNoYXI+JiYgaW5zcGVjdG9yQWRk
cmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNE
YXRhKFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGluc3BlY3Rv
ckFkZHJlc3MsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9u
SG9zdChzZXNzaW9uSG9zdCkKICAgICAgICAgLCBpbnNwZWN0b3JBZGRyZXNzKFdURk1vdmUoaW5z
cGVjdG9yQWRkcmVzcykpCiAgICAgICAgICwgY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCkBAIC0x
MTcsNyArMTE3LDcgQEAgc3RydWN0IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgewogICAgIFNl
c3Npb25Ib3N0KiBzZXNzaW9uSG9zdDsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGluc3BlY3RvckFk
ZHJlc3M7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOwotICAgIEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiBjb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKIHN0YXRpYyBndWludDE2IGZyZWVQb3J0KCkKQEAgLTEzMiw3ICsxMzIs
NyBAQCBzdGF0aWMgZ3VpbnQxNiBmcmVlUG9ydCgpCiAgICAgcmV0dXJuIGdfaW5ldF9zb2NrZXRf
YWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1MoYWRkcmVzcy5nZXQoKSkpOwog
fQogCi12b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uSG9z
dDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJy
b3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2FuY2VsbGFibGUgPSBhZG9wdEdS
ZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzc0xhdW5jaGVy
PiBsYXVuY2hlciA9IGFkb3B0R1JlZihnX3N1YnByb2Nlc3NfbGF1bmNoZXJfbmV3KEdfU1VCUFJP
Q0VTU19GTEFHU19OT05FKSk7CkBAIC0zMDEsNyArMzAxLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6
YnVpbGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJpYW50QnVpbGRlciogYnVpbGRlcikgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9u
U2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oRnVu
Y3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQobV9zb2NrZXRDb25uZWN0aW9uKTsKICAgICBBU1NFUlQoIW1f
c3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA4MTFiMWY2OWRiZDFhYzE3ZTJhNjRlZWQ3ZmM5
YWFmYzZlMmY0MDM2Li43OWI3Y2E0YjJkMTMzMjJiMGRlODgzMmEyMzgyMTgwZTMyYTA0MmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtMjks
NyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAotYm9vbCBIVFRQU2VydmVyOjps
aXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKK2Jvb2wg
SFRUUFNlcnZlcjo6bGlzdGVuKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5z
aWduZWQgcG9ydCkKIHsKICAgICBhdXRvJiBlbmRwb2ludCA9IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpzaW5nbGV0b24oKTsKIApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEhUVFBTZXJ2
ZXI6OmRpc2Nvbm5lY3QoKQogICAgIGVuZHBvaW50LmRpc2Nvbm5lY3QobV9zZXJ2ZXIudmFsdWUo
KSk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gSFRUUFNlcnZlcjo6ZG9BY2NlcHQoUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVuZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUg
c29ja2V0KQorc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IEhUVFBTZXJ2ZXI6OmRvQWNjZXB0
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiBlbmRwb2ludCwgUGxhdGZvcm1Tb2NrZXRU
eXBlIHNvY2tldCkKIHsKICAgICBpZiAoYXV0byBpZCA9IGVuZHBvaW50LmNyZWF0ZUNsaWVudChz
b2NrZXQsIG1fcmVxdWVzdEhhbmRsZXIpKSB7CiAgICAgICAgIG1fcmVxdWVzdEhhbmRsZXIuY29u
bmVjdChpZC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nl
c3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0
U29ja2V0LmNwcAppbmRleCAzMTMwNWE0ZDQ3NDY4NzQwZDE4OGE5YzdmN2I3YThmZjc0ZDRmMzdj
Li4wZjY1NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3YmYxZDYxMjBjYWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2
ZW50KQogICAgIHNlbmQobV9jbGllbnRJRC52YWx1ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtZXNzYWdlLmRhdGEoKSksIG1lc3NhZ2UubGVuZ3RoKCkpOwogfQogCi12b2lk
IFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXNzaW9uSG9zdDo6Y29u
bmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3Ip
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFN0cmluZyB0YXJnZXRJcDsKICAgICB1aW50
MTZfdCB0YXJnZXRQb3J0ID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6
ZGlkQ2xvc2UoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIEluc3Bl
Y3RvcjoKICAgICBtX2NsaWVudElEID0gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0
b3I8U2Vzc2lvbkhvc3Q6OlRhcmdldD4+IFNlc3Npb25Ib3N0OjpwYXJzZVRhcmdldExpc3QoY29u
c3Qgc3RydWN0IEV2ZW50JiBldmVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFNlc3Npb25Ib3N0
OjpUYXJnZXQ+PiBTZXNzaW9uSG9zdDo6cGFyc2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVu
dCYgZXZlbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRhcmdldExpc3RKU09OKCpldmVu
dC5tZXNzYWdlKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNl
c3Npb25Ib3N0OjpyZWNlaXZlZFN0YXJ0QXV0b21hdGlvblNlc3Npb25SZXR1cm4oY29uc3Qgc3Ry
dWN0IEV2ZW50JikKICAgICBtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbiA9IFN0cmluZzo6
ZnJvbVVURjgoIlRPRE8vYnJvd3NlclZlcnNpb24iKTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6
c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJp
bmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21h
dGlvblNlc3Npb24oRnVuY3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc291
cC9IVFRQU2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvdXAvSFRUUFNlcnZlclNv
dXAuY3BwCmluZGV4IGQ5NTViNTc3ZTMyODBlYTFhZGFhNmRjOTEwMTNhMmFjMjFkYjk1MDcuLjQz
OTRjZjFhMDEyNGM2ZjgxMTA4YjAwOTZhNTdkNTQ1YTQxNzQ2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvc291cC9IVFRQU2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9zb3VwL0hUVFBTZXJ2ZXJTb3VwLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViRHJpdmVyIHsKIAotc3RhdGljIGJvb2wgc291cFNlcnZlckxpc3RlbihTb3VwU2VydmVyKiBz
ZXJ2ZXIsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGhvc3QsIHVuc2lnbmVkIHBvcnQsIEdFcnJv
cioqIGVycm9yKQorc3RhdGljIGJvb2wgc291cFNlcnZlckxpc3RlbihTb3VwU2VydmVyKiBzZXJ2
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCwgR0Vy
cm9yKiogZXJyb3IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gb3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigwKTsKICAgICBpZiAoIWhvc3QgfHwgaG9zdC52
YWx1ZSgpID09ICJsb2NhbCIpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29sIHNvdXBTZXJ2
ZXJMaXN0ZW4oU291cFNlcnZlciogc2VydmVyLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBob3N0
LCB1CiAgICAgcmV0dXJuIHNvdXBfc2VydmVyX2xpc3RlbihzZXJ2ZXIsIGFkZHJlc3MuZ2V0KCks
IG9wdGlvbnMsIGVycm9yKTsKIH0KIAotYm9vbCBIVFRQU2VydmVyOjpsaXN0ZW4oY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKK2Jvb2wgSFRUUFNlcnZlcjo6bGlz
dGVuKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKIHsK
ICAgICBtX3NvdXBTZXJ2ZXIgPSBhZG9wdEdSZWYoc291cF9zZXJ2ZXJfbmV3KCJzZXJ2ZXItaGVh
ZGVyIiwgIldlYktpdFdlYkRyaXZlciIsIG51bGxwdHIpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXgg
MDE2ODcyODNmYWUzZTNmMzE0YzkyM2EzZjMxZTgxZmZhZjBkM2E2NC4uMTM5OTYxZGU2MWU2NWU5
ZWM4YWY0ZWQwYzRhOGE4MmE0MmY1YTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBHUFVQcm9jZXNzOjp+R1BVUHJvY2VzcygpCiB7
CiB9CiAKLXZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQ
VVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVByb2Nlc3M6OmNyZWF0
ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6IHByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwg
dGhpcywgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBj
cmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
LmgKaW5kZXggYmQyMmZmZTczMGNhNzUzZDgxYWE3NzZiOTRlY2YxMjcwYjU5M2JhMS4uNGY1ZGZm
NzQ4NmJjYTNkM2I1MjYwOTkwYzAyNTE4MTMwNjRhYjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1l
c3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGluaXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIGFkZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyYmKTsKICAgICB2
b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGEyOWJlOGRlOGMzMzc0Nzcw
YjdlNTYxZWNmMmYwYTQ5NTRiNDFiNmYuLmJhYTkxN2M0NTU2MGNkMTQxNDVkMTE1ZmQ4MmU0Y2Zj
ZDE2MjBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBHUFVQcm9jZXNzIHsKICAg
ICBJbml0aWFsaXplR1BVUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKLSAgICBDcmVhdGVHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRh
Y2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKKyAgICBDcmVhdGVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAgICAgUHJvY2Vzc0RpZFRy
YW5zaXRpb25Ub0ZvcmVncm91bmQoKQogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3Jv
dW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBiNDk3MTJjZjk0YjNhNWM4YzcwYWYwNWNmNzli
N2JkMjVjNGI2NGM2Li5kZjRiYTIwZGEyNWQ1MGJkNmYyNzU1NjAwMTEyMzlkNDZlNmQ0Y2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC03NywzMiArNzcsMzIgQEAgYm9vbCBHUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBHUFVQcm9jZXNz
Q3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKFNBTkRCT1hfRVhURU5TSU9O
U19GT1JfQ0FDSEVfQU5EX1RFTVBfRElSRUNUT1JZX0FDQ0VTUykKLSAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmVzdWx0LmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29k
ZXIgPj4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25I
YW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+
IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBjb21waWxl
clNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghY29tcGlsZXJTZXJ2aWNlRXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5jb21waWxlclNl
cnZpY2VFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4g
ZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAg
IGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1
bHQuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXMpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7
CiAgICAgZGVjb2RlciA+PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFk
eW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMuaAppbmRleCAxMmFlZDZjYTNhMmExOWMxYWRkYWExZjM1NWY5NDRkNTgzZTY4ZjczLi5kYWQ3
ZmNhZjA2MjQ5MmE3ODk1MzQ5M2IxYjVlNmRlZTkwZjgwZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5oCkBAIC01
MSwyNSArNTEsMjUgQEAgc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdQ
VVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFD
YWNoZURpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1lZGlhQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAg
ICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlh
Q2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeVNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeVNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgICAgIE9wdGlvbmFsPFN0
cmluZz4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9E
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5kZXggOWNlNDU2NTk0ZDU3ZmRiYTIwMGNkMTBi
MTE3NzYxYjcyYzQzMGFlOS4uZmRmZjM4OGE5MTc5YzJjYTczMDk2YmQ5MjU1Yjk3YjZkYmU5MDEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1PcHRpb25hbDxzaXplX3Q+
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFt
b3VudCkKIHsKICAgICBhdXRvIHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRC
eXRlcy5leGNoYW5nZVN1YihhbW91bnQpOwogICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVh
ZEJ5dGVzIDwgYW1vdW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggZWE3NjRmZGY3ZDY2
OGU1MDdjMzdmZjM1OWQ5OTlmMWFhZGJhZTQwMC4uN2U5N2U0OGU3ZGY0NGRiM2QxOWJkYThmMmNk
N2UwYjBjYzk4ZDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkpOwogICAgIH0KIAotICAgIE9w
dGlvbmFsPHNpemVfdD4gYWR2YW5jZShzaXplX3QgYW1vdW50KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gYWR2YW5jZShzaXplX3QgYW1vdW50KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRXYWl0aW5nKCkKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RvcFdhaXRp
bmdGYWlsdXJlUmVhc29uIDogdWludDhfdCB7IEludmFsaWRXYWl0aW5nU3RhdHVzIH07Ci0gICAg
RXhwZWN0ZWQ8T3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJ
bmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5nRmFpbHVyZVJlYXNvbj4gc3RvcFdhaXRpbmcoKQorICAg
IEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJl
YWRpbmdJbmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5nRmFpbHVyZVJlYXNvbj4gc3RvcFdhaXRpbmco
KQogICAgIHsKICAgICAgICAgYXV0byYgaGVhZGVyID0gdGhpcy0+aGVhZGVyKCk7CiAgICAgICAg
IGF1dG8gcHJldmlvdXNTdGF0dXMgPSBoZWFkZXIud2FpdGluZ1N0YXR1cy5leGNoYW5nZShzdGF0
aWNfY2FzdDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1c1N0b3JhZ2VUeXBl
PihTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6Tm90V2FpdGluZykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggMTU1M2RlZjAyNWZmZjkwZjEzNzVmNTEwZDUw
Y2E0NWQyYzUxMzU0ZS4uN2QyYTU3MjMzZWQ2MTI0NTA2MTc4OTU1NzFkMjUwMjI3N2FlNTI4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1IKICAgICBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRl
eHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKICAgICAvLyBGSVhNRTogV2UgZG8gbm90IGhhdmUgZnVuY3Rpb25p
bmcgcmVhZC93cml0ZSBmZW5jZXMgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4gVGh1cyB0aGlz
IGlzIHN5bmNocm9ub3VzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA1NjJjMmViODM0NTY5
OGUyYmE1OTY3NDU1MWZlMDM0NDE1ZTA1ZjlmLi4wMjNlYTA5NjZiZDM1MzJkOGVmNTRiNWVmNDUw
ZGZkNDJjNzVjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTA1LDcgKzEwNSw3IEBA
IHByb3RlY3RlZDoKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25z
R2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCi0gICAgdm9pZCBwYWludFBpeGVsQnVmZmVyVG9JbWFn
ZUJ1ZmZlcihPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVmUHRyPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3Ry
ZWFtQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpp
bmRleCA5M2I0ODY3NDNmZjFlY2M1NGJkMWViYzZmMGI3OTE4ZWIyN2M3ZmVkLi4xNmIzZTllODI2
ZWE0MTdkYmUyYzczZTJkZWM3MTM4MzliN2Y2NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yODQsNyArMjg0LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgTXVsdGlE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdj
b3VudCkKICAgICB2b2lkIE11bHRpRHJhd0VsZW1lbnRzQU5HTEUodWludDMyX3QgbW9kZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCiAgICAgdm9p
ZCBNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5z
dGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2NvdW50KQotICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4g
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJl
dHVyblZhbHVlKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggZGVmMjY2MTVhY2Y3MTcy
ZTI1YTI3MGQyNGQ4ZjQ3NjlkMWMzZDMzOC4uZDFjMzI5MDUxN2QyOTZjNTFlMzU2ZThiNGU1NzBj
MDY3YmI3NzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgKQEAgLTEzNzksOSArMTM3OSw5IEBACiAgICAgICAgIGFzc2VydElzQ3Vy
cmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VH
Q0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSks
IG9mZnNldHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NH
THNpemVpKj4oaW5zdGFuY2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwg
ZHJhd2NvdW50KTsKICAgICB9Ci0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9QaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGl4ZWxCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlID0geyB9OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiByZXR1cm5WYWx1ZSA9IHsg
fTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICAgICAgcmV0
dXJuVmFsdWUgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIo
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGI5OTJjNzZkZjRiN2QzYjg2NTMwY2I4YWJmM2NiYTll
N2E2NTY4OGMuLmNiNTAxMTY3YjRkZDU3MmM0YzVjMjk4MTM4MmYxMjZjYjI5NzhmZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbgogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBH
UFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBzdGQ6Om51bGxvcHQgfX07CiB9
CiAKLU9wdGlvbmFsPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlckhlbHBlcihzaXplX3QgYnl0
ZUNvdW50KQorc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIo
c2l6ZV90IGJ5dGVDb3VudCkKIHsKICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVF
KCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IHx8IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxC
dWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgc3RkOjpudWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNo
bWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFscmVhZHkgYmlnIGVub3VnaCB0byBoYW5kbGUg
dGhlIHJlcXVlc3QiKTsKIApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKICAgICBtX2dldFBp
eGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KE9wdGlvbmFsPFdl
YkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVD
SyhtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LCAiV2UgY2FuJ3QgcnVuIGdldFBpeGVsQnVm
ZmVyIHdpdGhvdXQgYSBidWZmZXIgdG8gd3JpdGUgaW50byIpOwogCkBAIC0zOTIsNyArMzkyLDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hh
cmVkTWVtb3J5KE9wdGlvbmFsPFdlYkNvcmUKICAgICBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3Jl
LnNpZ25hbCgpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00MDIsNyArNDAyLDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3AKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVy
bFN0cmluZykpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRh
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4
X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcigpCiAgICAgbV9jdXJyZW50TWFza0ltYWdlQnVmZmVy
ID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK3N0ZDo6b3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVt
VHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKIHsKICAgICAvKiBUaGlzIG5lZWRz
IHRvIG1hdGNoICgxKSBpc0lubGluZUl0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwg
KDIpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmVuY29kZUl0ZW0oKSwKICAgICAgKiBhbmQgKDMp
IGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhl
IGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNThkY2Y4
OGJkMDFmYWVhNGM5ODlmZTIwMWMyODA2MDU1ZWVmYWQwNi4uNzM0MjdhOTY0Zjc0NTEyMWJhZmEx
MTllZWY0ZmViMzMzYjRjOTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKTsKIAotICAg
IHZvaWQgcG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeShPcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJik7CisgICAgdm9pZCBwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVk
TWVtb3J5KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYpOwogCiAgICAgYm9v
bCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCkBAIC05OCwxMCArOTgs
MTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYp
OwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRl
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVy
cmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVh
dGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9j
YXRpb24pCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKICAgICB7CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRh
LCBsZW5ndGgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5l
ZWQgdG8ga25vdyB0aGF0IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2Vy
dmVkIGZvciB0aGUgdHlwZS4KQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRp
YWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CiAKLSAgICBPcHRpb25hbDxTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIo
c2l6ZV90IGJ5dGVDb3VudCk7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5
dGVDb3VudCk7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VtYXBob3JlRm9yR2V0UGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9y
eUFuZFNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IElQ
Qzo6U2VtYXBob3JlJik+JiYpOwogICAgIHZvaWQgZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVk
TWVtb3J5KCk7Ci0gICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0RGF0YUZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3Rvcjx1aW50OF90PiYmKT4mJik7CisgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9p
ZCBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwogICAgIHZv
aWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNv
cmU6OkZvbnQ+JiYpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3Qg
UGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsKICAgICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3Nh
Z2VBcmd1bWVudHMgYXJndW1lbnRzOwotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwogCiAgICAgICAgIGJvb2wgc2hvdWxk
UGVyZm9ybVdha2V1cChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgY29uc3QKICAgICAgICAgewpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAg
UmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlczsKLSAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVu
ZGluZ1dha2V1cEluZm87CisgICAgc3RkOjpvcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAgICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZTsKICAgICBJUEM6OlNlbWFwaG9yZSBtX2dldFBpeGVsQnVmZmVyU2Vt
YXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRN
ZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGExZTM1
YWQ1MDM5YTRiNTQ5NDI5YmI0ZTg5YWM5M2Y2YWNkZTUzMDguLjRiM2ZlOWEwMjYyZThhNTQ5MTg1
MmM2ZDZhMDQwNDVkNmE2OTYzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCkBAIC0yOSw4ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgewogICAgIFNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKCkgLT4gKElQQzo6U2VtYXBob3Jl
IHNlbWFwaG9yZSkgU3luY2hyb25vdXMKICAgICBVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv
cmVGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQpIC0+IChXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKSBTeW5j
aHJvbm91cwogICAgIERlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSgpCi0gICAgR2V0
RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgLT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzCi0g
ICAgR2V0RGF0YUZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CisgICAgR2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0cmluZyBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIGVudW06dWludDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHVybFN0cmluZykg
U3luY2hyb25vdXMKKyAgICBHZXREYXRhRm9ySW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKFZlY3Rvcjx1aW50OF90
PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIEdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVy
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMKICAg
ICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDhh
YWI3OGY2NWJhNGUwN2ViYzg4NjkwZTgwZjRhMWRhOTZkOGVlYjMuLjQ0YTI3ODI2NTJhOGZlYjEz
ZDVkNGNhNzU1MTAxZjBmM2ViZWRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNDUsMjQgKzQ1LDI0IEBAIHN0cnVjdCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgZW5jb2RlciA8
PCBpZGVudGlmaWVyIDw8IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlIDw8IHBhZ2VQcm94eUlE
IDw8IHBhZ2VJRDsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAg
ICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxJUEM6
OlNlbWFwaG9yZT4gcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SVBDOjpTZW1hcGhvcmU+IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAg
ICBkZWNvZGVyID4+IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAgICBpZiAoIXJl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJ
RDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJv
eHlJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYWdlUHJveHlJRDsKICAgICAgICAgaWYgKCFwYWdl
UHJveHlJRCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgICAgICBkZWNvZGVyID4+
IHBhZ2VJRDsKICAgICAgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRp
YWxpemF0aW9uU2VnbWVudEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9J
bml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKaW5kZXggZDEyNzlhNDU0ZmVlODRlMDU3ZWQzYWZi
MTBiNmI1Y2RiMjUzODg0Ni4uYjEzMDkwN2UxOWY2YzE5NzUzZjJhNWM2ZmNiODYwYTA1ZjIyZWQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0
aW9uU2VnbWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5p
dGlhbGl6YXRpb25TZWdtZW50SW5mby5oCkBAIC01MiwxNCArNTIsMTQgQEAgc3RydWN0IEluaXRp
YWxpemF0aW9uU2VnbWVudEluZm8gewogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxUcmFja0luZm9ybWF0aW9uPiBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHJh
Y2tJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIE9wdGlvbmFsPE1lZGlhRGVzY3JpcHRpb25JbmZvPiBtZWRpYURlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gbWVkaWFEZXNj
cmlwdGlvbjsKICAgICAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAg
ICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRpb25hbDxUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyPiBpZGVudGlmaWVyOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgICAgICAgICAgZGVjb2RlciA+PiBp
ZGVudGlmaWVyOwogICAgICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NSwyNCArODUsMjQgQEAgc3RydWN0IEluaXRpYWxp
emF0aW9uU2VnbWVudEluZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PgotICAgIHN0YXRpYyBPcHRpb25hbDxJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbml0aWFsaXphdGlv
blNlZ21lbnRJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFU
aW1lPiBkdXJhdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKICAgICAgICAgaWYg
KCFkdXJhdGlvbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRpb24+PiBhdWRpb1RyYWNrczsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZvcm1hdGlvbj4+IGF1ZGlvVHJhY2tzOwogICAg
ICAgICBkZWNvZGVyID4+IGF1ZGlvVHJhY2tzOwogICAgICAgICBpZiAoIWF1ZGlvVHJhY2tzKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0
b3I8VHJhY2tJbmZvcm1hdGlvbj4+IHZpZGVvVHJhY2tzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGRlY29kZXIg
Pj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGlmICghdmlkZW9UcmFja3MpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9y
bWF0aW9uPj4gdGV4dFRyYWNrczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJ
bmZvcm1hdGlvbj4+IHRleHRUcmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gdGV4dFRyYWNrczsK
ICAgICAgICAgaWYgKCF0ZXh0VHJhY2tzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDEzNjg5M2EwY2QzOTBkNDkw
NmMwOGNhNjI2OGMzYWIyMTQxYTJmNWEuLjgwNjE0NjE3NzBmM2VlODc0M2FhNjIxYjdhOGQwMzM1
ZjExMTYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtODksNyArODks
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0
cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBzYW5pdGl6ZWRSZXNw
b25zZS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRp
bWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1f
c2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIHNhbml0aXplZFJlc3BvbnNl
LnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGJv
b2wgc2Vzc2lvbkNsb3NlZCwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZXhwaXJh
dGlvblRpbWUsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1l
c3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb24oc2Vzc2lvbkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNl
cyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQg
PT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9uKHR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQs
IG9yaWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFs
PGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0
YWJsZSB7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vzc2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lv
bklkLCBvcmlnaW4sIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKHN0ZDo6b3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb25UaW1lLCBzdGQ6Om9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5
U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25UaW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3Vj
Y2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkLCBmYWlsdXJlKTsKICAgICB9
KTsKIH0KQEAgLTExNSw4ICsxMTUsOCBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShz
ZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIE9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOworICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lv
bnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKICAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2VzKSwgV1RGTW92ZShleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA1MThmY2FjZDFhZDIxYjk1MjA2ZDFj
OTkyNzVkMWJkYTYxNzJmNmVlLi44YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1
NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgTWVzc2FnZSA9IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZTsKICAgICB1c2luZyBTZXNzaW9uTG9hZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTsKICAgICB1c2luZyBMaWNlbnNlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9vbCk+OwotICAgIHVzaW5nIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3Rh
dHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJv
b2wpPjsKLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0
aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lvbkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBzdGQ6
Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYm
LCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYs
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1
c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgYm9vbCk+
OwogICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OwogCiAgICAgLy8gTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCAxNjE4NzJlYjBjNmYwM2M0M2I5YTgwMGU0OTViNzE1NmI2YzM0
NmM0Li42MTJlYWEzOGFkZDI2NDNjZDYxOTgyYTBhN2RlZjU4ZTM0NTBmOGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNywxMCArMjcsMTAg
QEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgUmVxdWVzdExpY2Vuc2UoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpM
aWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGluaXREYXRhKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IG1lc3NhZ2UsIFN0cmlu
ZyBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IEFzeW5jCi0gICAgVXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBy
ZXNwb25zZSkgLT4gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxk
b3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwotICAgIExvYWRT
ZXNzaW9uKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3Ry
aW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBB
c3luYworICAgIFVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgcmVz
cG9uc2UpIC0+IChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5
bmMKKyAgICBMb2FkU2Vzc2lvbihXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VU
eXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0cmluZyBvcmlnaW4pIC0+IChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBz
dWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5bmMKICAgICBDbG9zZVNlc3Npb24oU3RyaW5n
IHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKLSAgICBSZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vz
c2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBtZXNzYWdlLCBib29sIHN1Y2NlZWRl
ZCkgQXN5bmMKKyAgICBSZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwog
ICAgIFN0b3JlUmVjb3JkT2ZLZXlVc2FnZShTdHJpbmcgc2Vzc2lvbklkKQogICAgIERpc3BsYXlJ
RENoYW5nZWQodWludDMyX3QgZGlzcGxheUlEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggZTg1ZTAxMzhhODg2NzA0OGI1
MTJjYTRkOWUxZTJmNmRlMDc5ZjA1OS4uNWU1NGU4MjNkN2U3N2NiYjYwN2Q1NjEyNmEyOTI2ZTI0
NmFmYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90
ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uCiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLU9w
dGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETVByb3h5Ojpz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA4NjYwYWRjN2Iw
OTBiNWJjNmQzOTg4YWIzMGIwMDZjNThiNmEzZjBhLi42OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5
NmIyMzQ4MjY0NzBmNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDY2ZjJjMTg0MGE3MzZlYmRhMzAyMzgxMDY2N2U2
Nzg4MjU1Yzg0ZTQuLjEyMTQxZDEyYjZiYmJiYTMyNzA4ZGE0ZjNlYWI4OGM3NjNjM2E4ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNETVBy
b3h5IE5vdFJlZkNvdW50ZWQgewotICAgIEdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oc3RydWN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nl
c3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAgR2V0U3VwcG9ydGVkQ29uZmlndXJhdGlv
bihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGVDb25m
aWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNj
ZXNzIGFjY2VzcykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbj4gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENyZWF0ZUluc3Rh
bmNlKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKSBTeW5jaHJvbm91cwogICAgIExvYWRBbmRJbml0aWFsaXplKCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCmluZGV4IGQ3NmZjZjFhNmZjODE2NmU1MzRhOTVkZjIyNTM2MGViNjRmODRj
MWQuLjk2ODNlZGUwOWY5NmZjZDlkMTkzZjM0MmZiNWYwOGNiYWFiMjlmNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmNwcApAQCAtNDUsMTEgKzQ1LDExIEBAIFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCiB7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246
OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKIAot
ICAgIE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29k
ZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShpbWFnZURlY29kZXJJZGVudGlmaWVyKSk7CiAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGkKICAgICBtX2ltYWdlRGVjb2RlcnMu
Z2V0KGlkZW50aWZpZXIpLT5zZXRFeHBlY3RlZENvbnRlbnRTaXplKGV4cGVjdGVkQ29udGVudFNp
emUpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3Qg
ZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8
VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3Vu
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBp
ZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSkgewpAQCAtMTA2LDE4ICsx
MDYsMTggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnMKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9
IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdl
RGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7CiAgICAgaWYgKGZyYW1lQ291
bnQpCiAgICAgICAgIGZyYW1lSW5mb3MgPSBpbWFnZURlY29kZXItPmZyYW1lSW5mb3MoKTsKIAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lQ291bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBp
bWFnZURlY29kZXItPmhhc1RyYWNrKCksIFdURk1vdmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikp
OwotICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICgh
bV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXggMTFiM2FlMTllNjRiOTNkN2Y0
NGY1ZmE2ZTg3Y2EyYzQ3ZTRlOGMzNi4uZTJjMTExYzQwYTRkMzQyOTExZGY0YTE5YWYxYWIwZjU3
MTgxYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIHZvaWQgY3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0
ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKTsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3Qg
ZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYm
KT4mJik7CisgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAog
ICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDI4NDdjNTYyYzNmY2NiYmMzOWRlOWZkZjk3NDRkNTJmZjdkZGZhMTguLjE5OGIyYjIzY2U2ZmMw
ZjRmZjMyMzgzNjUzODZhODZmYzk0ZGFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI4LDExICsyOCwxMSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBTdHJpbmcgbWltZVR5cGUpIC0+IChPcHRpb25hbDxX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwor
ICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNvZGVyKFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBlY3RlZENv
bnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJD
b3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCi0gICAg
Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5k
UmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFj
ZSkgU3luY2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUg
c2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmln
aHQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAwZThhODFjNjU2ZGM4NTAxNDgzOTY2YzBmYWIwZDEw
ZDhiN2QwYWM4Li42YWE0ZDFlNzJhOGNlMjllYTdlZmEyOGRkYjliMzc0ZjE4ZjNkNWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAtNTgsNyArNTgsNyBAQCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoKQogICAgICAgICBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgcHJveHkua2V5LnRvVUludDY0KCkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRp
b25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24p
Cit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBvcHRp
b25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXImJik+JiYgY29tcGxldGlvbikKIHsKICAgICBhdXRvIHByaXZhdGVDRE0gPSBMZWdhY3lD
RE06OmNyZWF0ZShrZXlTeXN0ZW0pOwogICAgIGlmICghcHJpdmF0ZUNETSkgewpAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZQogICAgIGNvbXBsZXRpb24oV1RGTW92ZShp
ZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKIHsKICAgICBpZiAobWltZVR5cGUp
CiAgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjprZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBl
KGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKaW5kZXggMTEz
ZmE5NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5MWQxNTNiMi4uZDg3NDlkZTEwMWE5NjhlYWEw
MDFjN2IxYmRlZTE4ODY3MzhmODI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApAQCAtNzMs
OCArNzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJik7Ci0g
ICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9u
YWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1l
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBXZWFrUHRyPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAg
ICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1Qcm94eT4+IG1fcHJveGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJjZWQzYzFhMmI4NzJkMDY0MzFkY2Q3OTljMzQyNGRkODQx
MDE5MTEuLmUxYTZjM2NkMGEyYzZiZmE5ZjYwZTNkYmUzZDQ4MTU1NzMzMTA1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsOCArMjQsOCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
SWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwotICAgIFN1cHBvcnRzS2V5U3lzdGVt
KFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJl
c3VsdCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisg
ICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5jcHAKaW5kZXggYzc0NWY3MTdmMjMzNDZiZGZmZjA1ZWQyNDM3ZjZhMWM1NTIxMTQ2
Zi4uYmY1MTc1OTJhMDFlMGVlYWM3YzJjOGM5NTg5NWJjMmZhOGUzNzY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENyZWF0ZVNlc3Npb25DCiAgICAgY2FsbGJh
Y2soV1RGTW92ZShpZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6
OnNldFBsYXllcklkKE9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkK
K3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8TWVk
aWFQbGF5ZXJJZGVudGlmaWVyPiYmIHBsYXllcklkKQogewogICAgIGlmICghcGxheWVySWQpCiAg
ICAgICAgIG1fcGxheWVySWQgPSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDQyZDA5NDE1ODZiNThiMTRh
MzAyMmRjYzBjYTY1YmVlMjBlNzYwZTYuLmUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1
OTJhZDg3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFj
ayYmKTsKICAgICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKICAgICB2b2lkIGNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOwotICAg
IHZvaWQgc2V0UGxheWVySWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiYmKTsKKyAgICB2b2lkIHNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8vIExlZ2FjeUNETUNsaWVudAogICAgIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVn
YWN5Q0RNKikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YzRjZjQ1ZDMyZTkwMzJiZWQzODY3ZjMyM2FkMDVlMzU5OTFhY2JiNS4uOGVjNmIzYjdhYWVmNmIx
YjVmZDZmMGUzODU3ZmRjNTFhMmFmNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90
UmVmQ291bnRlZCB7CiAgICAgU3VwcG9ydHNNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChi
b29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCi0gICAgU2V0UGxheWVySWQoT3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkKKyAgICBTZXRQbGF5
ZXJJZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVy
SWQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA4ZWU5ZWU4
ZTEzMjI0MjQxNDY2NmU4YmVkYzk4ZmQ2NGUyMjFkMDBmLi45M2IyZmY3NDFiMWY4MzY5YjIwNTg0
ZTQ5N2U0YTAyMWI5Y2NmNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjUs
NyArNjUsNyBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXko
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXN0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZlcnRUb09wdGlv
bmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKIHsK
ICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oCmluZGV4IGM5MGY1ZGExMzIxMDAxNzU1ZjQwYWFlNDU2ZDk3ZGZhODVjMGJl
OTMuLmYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKQEAgLTc3LDEyICs3NywxMiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBNZXNzYWdl
cwotICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OwogICAgIHZvaWQg
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVs
ZWFzZUtleXMoKTsKLSAgICB1c2luZyBVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmLCB1bnNpZ25lZCBz
aG9ydCwgdWludDMyX3QpPjsKKyAgICB1c2luZyBVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCwgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYs
IHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OwogICAgIHZvaWQgdXBkYXRlKElQQzo6U2hhcmVk
QnVmZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQ2FjaGVk
S2V5Rm9yS2V5SURDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYmKT47CisgICAgdXNpbmcgQ2FjaGVkS2V5Rm9yS2V5SURDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckNvcHk+JiYpPjsKICAgICB2b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwg
Q2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmKTsKIAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhNmNjNzZhMWJhZmIyYWM0OTM1MzRiNzE0OWI5NWMyOTU0MGI3
NTRmLi41YWUwYzVmMjVhOWYzMDA4NGQ4NDc4ZWQwMzkwNDZlOGZmZmIyMTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDEwICsyNCwxMCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgaW5pdERhdGEpIC0+IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5l
eHRNZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29k
ZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgU3luY2hyb25vdXMKKyAgICBHZW5lcmF0ZUtleVJlcXVl
c3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgaW5pdERhdGEpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gbmV4dE1lc3NhZ2UsIFN0cmluZyBk
ZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1D
b2RlKSBTeW5jaHJvbm91cwogICAgIFJlbGVhc2VLZXlzKCkKLSAgICBVcGRhdGUoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IHVwZGF0ZSkgLT4gKGJvb2wgc3VjY2VlZGVkLCBPcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVp
bnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCi0gICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3Ry
aW5nIGtleUlkKSAtPiAoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBrZXkpIFN5bmNo
cm9ub3VzCisgICAgVXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weSB1cGRhdGUpIC0+IChib29s
IHN1Y2NlZWRlZCwgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNz
YWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNo
cm9ub3VzCisgICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkKSAtPiAoc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGtleSkgU3luY2hyb25vdXMKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFE
ZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
RGVzY3JpcHRpb24uaAppbmRleCBhMzkwMDFmZmI3OTk1OWJhNzU3OGJiNjAzYmYwZjg4OWE4ZTMx
Y2ZjLi44ZDk5MGM0M2VhNjU4NjFkMDFjN2FmNzY2OGUwMjU1OTU3NGE0NDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0
aW9uLmgKQEAgLTY4LDI0ICs2OCwyNCBAQCBzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm8gewog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25h
bDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFEZXNjcmlwdGlvbkluZm8+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2RlYzsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvZGVjOwogICAgICAgICBkZWNvZGVyID4+IGNvZGVjOwog
ICAgICAgICBpZiAoIWNvZGVjKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDxib29sPiBpc1ZpZGVvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzVmlkZW87CiAgICAgICAgIGRlY29kZXIgPj4gaXNWaWRlbzsKICAgICAgICAgaWYgKCFp
c1ZpZGVvKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxib29sPiBpc0F1ZGlvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXVkaW87
CiAgICAgICAgIGRlY29kZXIgPj4gaXNBdWRpbzsKICAgICAgICAgaWYgKCFpc0F1ZGlvKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBp
c1RleHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNUZXh0OwogICAgICAgICBkZWNv
ZGVyID4+IGlzVGV4dDsKICAgICAgICAgaWYgKCFpc1RleHQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGIwMDc3ZWQxZjZlNDY5MGRhZGVj
NDgxYTU4ZDBjMDliOWVmMWI3MTUuLjRmNThlZDFjNTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQw
NjY4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uJiBjbwogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
bjsKICAgICBpZiAoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewpAQCAtODY4LDcgKzg2OCw3IEBA
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2VuZENhY2hlZFN0YXRlKCkKIH0KIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKE9wdGlvbmFsPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyPiYmIGluc3RhbmNlSWQpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNl
dExlZ2FjeUNETVNlc3Npb24oc3RkOjpvcHRpb25hbDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllcj4mJiBpbnN0YW5jZUlkKQogewogICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5h
Z2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOwogICAgIGlmICghbV9tYW5hZ2VyIHx8
ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKQEAgLTEwMDYsNyArMTAw
Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGVyZm9ybVRhc2tBdE1lZGlhVGlt
ZShjb25zdCBNZWRpYVRpbWUmIHRhc2tUaW1lLCBNCiAgICAgfSwgYWRqdXN0ZWRUYXNrVGltZSk7
CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6d291bGRUYWludE9yaWdpbihzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5Ojp3b3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3BsYXllci0+d291bGRUYWludE9yaWdpbihvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2lu
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZiMGViYjMwOTFkZDA1NGYwZjUwMDNlZDkwZDkx
M2QxM2E0NjE4NzUuLjg2NGUyZTM4YmExZGNhNTlkZDlmZTEzZTlhYmYxMjY4NTQ2YzAyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaApAQCAtMTEwLDEwICsxMTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBn
ZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAg
dm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9y
UmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1Jhbmdl
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0
SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJik7CisgICAgdm9pZCBwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBm
bG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBp
bmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYmKTsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5k
ZXJpbmcoKTsKIAotICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYp
PiYmKTsKKyAgICB2b2lkIGxvYWQoVVJMJiYsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYp
PiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZvaWQgbG9hZE1lZGlhU291cmNl
KFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGJvb2wgd2ViTVBhcnNlckVuYWJs
ZWQsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2VuZGlmCkBAIC0xNTcsNyAr
MTU3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKLSAgICB2b2lkIHNldExlZ2FjeUNETVNlc3Npb24oT3B0aW9uYWw8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXI+JiYgaW5zdGFuY2VJZCk7CisgICAgdm9pZCBzZXRMZWdhY3lD
RE1TZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI+
JiYgaW5zdGFuY2VJZCk7CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKQEAgLTE4Niw5
ICsxODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aWRlb1RyYWNrU2V0U2VsZWN0ZWQoY29uc3Qg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciYsIGJvb2wpOwogICAgIHZvaWQgdGV4dFRyYWNr
U2V0TW9kZShjb25zdCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSk7CiAKLSAgICB1c2luZyBQZXJmb3JtVGFza0F0TWVk
aWFUaW1lQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PE1lZGlhVGltZT4sIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+KT47CisgICAgdXNpbmcgUGVyZm9y
bVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4sIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4p
PjsKICAgICB2b2lkIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiwgTW9u
b3RvbmljVGltZSwgUGVyZm9ybVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHZvaWQgd291bGRUYWludE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJvb2w+KT4mJik7CisgICAgdm9p
ZCB3b3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYpOwogCiAgICAgdm9p
ZCBzZXRWaWRlb1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFsKGRvdWJsZSk7CiAKQEAgLTI5
Niw4ICsyOTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNo
U2VuZFJpZ2h0PiYmKT4mJik7Ci0gICAgdm9pZCBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJik7
CisgICAgdm9pZCBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmKTsKKyAgICB2b2lkIHBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYpOwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgYm9v
bCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFs
PFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyPiBtX2xlZ2FjeVNlc3Npb247CisgICAg
c3RkOjpvcHRpb25hbDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gbV9sZWdhY3lT
ZXNzaW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWNkMTE2OTkwZjdjNzJh
ODVmNzU2ZTkzNDdiOTAwNDg3MzA4YmZhMi4uNzJlOTU0NjlhZDEyMGRiYTc1YjFhYjlkZTlkYWE3
OTc1ZGI4ZDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDkg
KzI0LDkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgUHJlcGFyZUZvclBsYXliYWNrKGJv
b2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQ
cmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRl
cmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpEeW5h
bWljUmFuZ2VNb2RlIG1vZGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYworICAgIFByZXBhcmVGb3JQ
bGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6RHluYW1pY1JhbmdlTW9kZSBtb2RlKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwog
Ci0gICAgTG9hZChVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKKyAgICBMb2FkKFVSTCB1cmws
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lz
dGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBs
YXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBM
b2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IGJvb2wgd2ViTVBhcnNlckVuYWJsZWQsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlm
aWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogI2VuZGlmCkBA
IC03Niw3ICs3Niw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVm
Q291bnRlZCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQot
ICAgIFNldExlZ2FjeUNETVNlc3Npb24oT3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllcj4gaW5zdGFuY2VJZCkKKyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gaW5z
dGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5kaWYKIApAQCAtMTA1LDggKzEwNSw4IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgVmlk
ZW9UcmFja1NldFNlbGVjdGVkKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBib29sIHNlbGVjdGVkKQogICAgIFRleHRUcmFja1NldE1vZGUoV2ViS2l0OjpU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJD
b3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUpCiAKLSAgICBQZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUsIE1vbm90b25pY1RpbWUgbWVzc2FnZVRp
bWUpIC0+IChPcHRpb25hbDxNZWRpYVRpbWU+IG1lZGlhVGltZSwgT3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gbW9ub3RvbmljVGltZSkgQXN5bmMKLSAgICBXb3VsZFRhaW50T3JpZ2luKHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKSAtPiAoT3B0aW9uYWw8Ym9vbD4gd291
bGRUYWludCkgU3luY2hyb25vdXMKKyAgICBQZXJmb3JtVGFza0F0TWVkaWFUaW1lKE1lZGlhVGlt
ZSBtZWRpYVRpbWUsIE1vbm90b25pY1RpbWUgbWVzc2FnZVRpbWUpIC0+IChzdGQ6Om9wdGlvbmFs
PE1lZGlhVGltZT4gbWVkaWFUaW1lLCBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG1vbm90
b25pY1RpbWUpIEFzeW5jCisgICAgV291bGRUYWludE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd291bGRUYWlu
dCkgU3luY2hyb25vdXMKIAogICAgIFNldFZpZGVvUGxheWJhY2tNZXRyaWNzVXBkYXRlSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQogCkBAIC0xMjMsOCArMTIzLDggQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgTmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxN
YWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNocm9ub3VzCi0gICAgUGl4ZWxCdWZmZXJGb3JD
dXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNo
cm9ub3VzCisgICAgTmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIC0+IChzdGQ6Om9wdGlvbmFs
PE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCkgU3luY2hyb25vdXMKKyAgICBQaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCkgLT4gKHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0
KSBTeW5jaHJvbm91cwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1
cmF0aW9uLmgKaW5kZXggMmVmYTE0ZWI3NTMxNGRkOGQ2OWVmNzhhODE0ZjIzYzViNjc0MzY0Ny4u
YWUxZDk5ZmQ2NjEzMDM4ZWY5OGZhN2IyNTViNDlhODVkMTdlM2Y4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKQEAgLTY4LDYxICs2OCw2MSBAQCBzdHJ1Y3QgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gewogICAgIH0KIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByZWZlcnJl
cjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlZmVycmVyOwogICAgICAgICBkZWNv
ZGVyID4+IHJlZmVycmVyOwogICAgICAgICBpZiAoIXJlZmVycmVyKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKICAgICAgICAgZGVjb2Rl
ciA+PiB1c2VyQWdlbnQ7CiAgICAgICAgIGlmICghdXNlckFnZW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IG5ldHdvcmtJbnRlcmZhY2VOYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0ludGVyZmFj
ZU5hbWU7CiAgICAgICAgIGlmICghbmV0d29ya0ludGVyZmFjZU5hbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpD
b250ZW50VHlwZT4+IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IG1lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBkZWNvZGVyID4+
IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBpZiAo
IW1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
cHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwogICAgICAgICBkZWNv
ZGVyID4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwogICAgICAgICBpZiAoIXByZWZl
cnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFja0RhdGE+PiBvdXRPZkJhbmRUcmFja0RhdGE7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrRGF0YT4+
IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBvdXRPZkJhbmRUcmFja0Rh
dGE7CiAgICAgICAgIGlmICghb3V0T2ZCYW5kVHJhY2tEYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47
CiAgICAgICAgIGRlY29kZXIgPj4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYg
KCFkb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRpZmllcjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+
PiBsb2dJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWxvZ0lkZW50aWZpZXIpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVz
ZVBlcnNpc3RlbnRDYWNoZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRVc2VQ
ZXJzaXN0ZW50Q2FjaGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlUGVyc2lzdGVudENh
Y2hlOwogICAgICAgICBpZiAoIXNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNWaWRlbzsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+
IGlzVmlkZW87CiAgICAgICAgIGlmICghaXNWaWRlbykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggZTYyMGEwNWZlZGI1MTZlMTg5NmNmZWVl
M2U2MzI0MTFlMmQwOTQzMS4uNjMwZWJmY2FjMjAwMWMwNjZiOTViNjIyM2QyNjkyMGRhNzkyNmU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlTWVk
aWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiBjb250ZW50CiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+IHNvdXJjZUJ1ZmZlclBy
aXZhdGU7CiAgICAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3RhdHVzID0gbV9wcml2
YXRlLT5hZGRTb3VyY2VCdWZmZXIoY29udGVudFR5cGUsIG1fd2ViTVBhcnNlckVuYWJsZWQsIHNv
dXJjZUJ1ZmZlclByaXZhdGUpOwogCi0gICAgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcj4gcmVtb3RlU291cmNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUlkZW50aWZpZXI7CiAgICAgaWYg
KHN0YXR1cyA9PSBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1czo6T2spIHsKICAgICAgICAg
YXV0byBpZGVudGlmaWVyID0gUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICAgICAgYXV0byByZW1vdGVTb3VyY2VCdWZmZXJQcm94eSA9IFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjpjcmVhdGUoKm1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwg
c291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNlTm9uTnVsbCgpLCAqbV9yZW1vdGVNZWRpYVBsYXll
clByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDRkYTZiNWFiMmQ2OTQ1ZDdkMjg5NjVlZjE0YWEx
OWI4ZWE4Mzg5ZWYuLmMzZGRmZmE0NGFlNzI0ZDE5MjdlMmU4ZDAxNWFhN2Y1NDdmMzljZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAotICAgIHVzaW5nIEFkZFNvdXJj
ZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OkFkZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRp
Zmllcj4pPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4pPjsKICAgICB2b2lkIGFkZFNv
dXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIEFkZFNvdXJjZUJ1ZmZlckNh
bGxiYWNrJiYpOwogICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwog
ICAgIHZvaWQgYnVmZmVyZWRDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MGQ2NjIwZWJjNWI4
YTMzZmY1ZWY4MjU1NTZiOTEzOWQ5Y2JjMmI2Li5lZDgxMmYyNWIzNGY0NTgxZWQ2ZTY2OWE0ZjIx
YzA0NTZkNTAxOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYs
NyArMjYsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBOb3RSZWZDb3VudGVkIHsK
LSAgICBBZGRTb3VyY2VCdWZmZXIoV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+
IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3Rh
dHVzLCBPcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgQWRkU291cmNlQnVmZmVy
KFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAoZW51bTp1aW50OF90IFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0YXR1cywgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJh
dGlvbikKICAgICBCdWZmZXJlZENoYW5nZWQoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIGJ1
ZmZlcmVkKQogICAgIFNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24u
aAppbmRleCBlOWZkZjcwMTQwMDQwOTk0ZmUwNWRmMWU3OGFiNGU2YjVjM2VmOTRiLi44ZDYzYzNh
MzJhNTJjNTUzOWIzMTE5YjVmMWYyY2MwYmY3YTY5NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtNzEsNzQgKzcxLDc0IEBAIHN0cnVjdCBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gdHJhY2tJZDsKICAgICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKICAgICAgICAgZGVjb2RlciA+
PiBsYWJlbDsKICAgICAgICAgaWYgKCFsYWJlbCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgICAgIGRlY29kZXIgPj4g
bGFuZ3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3VhZ2UpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGluQmFuZE1ldGFkYXRh
VHJhY2tEaXNwYXRjaFR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gaW5C
YW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBpbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwogICAgICAgICBpZiAoIWluQmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+
PiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgaWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0
cmFja0luZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdHJhY2tJbmRleDsKICAgICAg
ICAgZGVjb2RlciA+PiB0cmFja0luZGV4OwogICAgICAgICBpZiAoIXRyYWNrSW5kZXgpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4gY3VlRm9ybWF0OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4g
Y3VlRm9ybWF0OwogICAgICAgICBkZWNvZGVyID4+IGN1ZUZvcm1hdDsKICAgICAgICAgaWYgKCFj
dWVGb3JtYXQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQ+IGtpbmQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZD4g
a2luZDsKICAgICAgICAgZGVjb2RlciA+PiBraW5kOwogICAgICAgICBpZiAoIWtpbmQpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlz
Q2xvc2VkQ2FwdGlvbnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNDbG9zZWRDYXB0
aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBpc0Nsb3NlZENhcHRpb25zOwogICAgICAgICBpZiAo
IWlzQ2xvc2VkQ2FwdGlvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzU0RIOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzU0RIOwogICAgICAgICBkZWNvZGVyID4+IGlzU0RIOwogICAgICAgICBpZiAoIWlzU0RIKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29s
PiBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzOwogICAgICAgICBkZWNvZGVyID4+IGNvbnRh
aW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAgICAgaWYgKCFjb250YWluc09ubHlGb3JjZWRT
dWJ0aXRsZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50OwogICAgICAgICBkZWNvZGVyID4+IGlzTWFpblBy
b2dyYW1Db250ZW50OwogICAgICAgICBpZiAoIWlzTWFpblByb2dyYW1Db250ZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0Vh
c3lUb1JlYWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNFYXN5VG9SZWFkOwogICAg
ICAgICBkZWNvZGVyID4+IGlzRWFzeVRvUmVhZDsKICAgICAgICAgaWYgKCFpc0Vhc3lUb1JlYWQp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJv
b2w+IGlzRGVmYXVsdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gaXNEZWZhdWx0OwogICAgICAgICBpZiAoIWlzRGVmYXVsdCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24uaAppbmRleCAyOWRmMjM1ZmYxZDMxZTZkZTkyM2JhZWE0YWM3N2Q2MjgxOTg1OThlLi44MzFl
YmE0Mjc4MGI2ZTZjMWMyOGRjZjM1YmJkYzJmZTFiMTVlNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uLmgKQEAgLTYxLDQ5ICs2MSw0OSBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAg
ICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8QXRvbVN0cmluZz4gbGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAg
IGlmICghbGFiZWwpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhbmd1YWdlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0
b21TdHJpbmc+IGxhbmd1YWdlOwogICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOwogICAgICAg
ICBpZiAoIWxhbmd1YWdlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGRlY29kZXIg
Pj4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGlmICghc3RhcnRUaW1lVmFyaWFuY2UpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGludD4g
dHJhY2tJbmRleDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRyYWNrSW5kZXg7CiAgICAg
ICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKICAgICAgICAgaWYgKCF0cmFja0luZGV4KQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBl
bmFibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdWRpb1RyYWNr
UHJpdmF0ZTo6S2luZD4gYXVkaW9LaW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kPiBhdWRpb0tpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4g
YXVkaW9LaW5kOwogICAgICAgICBpZiAoIWF1ZGlvS2luZCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2VsZWN0
ZWQ7CiAgICAgICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpLaW5k
PiB2aWRlb0tpbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGU6OktpbmQ+IHZpZGVvS2luZDsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb0tpbmQ7CiAg
ICAgICAgIGlmICghdmlkZW9LaW5kKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
Y29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmluZGV4IDMxMTQ4NmFlNWFkNzY2
NzJmZWIxNDFkNTI5NWU5MDVmNmE4MzNkNTAuLmI4NWJlNmM3YWJmZjVlMzIzNTIwOTIyOGNmMDZk
ODkxNWIzOTM5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9j
b2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBzZXRWaWRlb0lubGluZVNpemVJZlBvc3NpYmxlKExh
eWVySG9zdGluZ0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFdlYgogICAgIFtDQVRyYW5zYWN0aW9u
IGNvbW1pdF07CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBs
YXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSBwcmVm
ZXJyZWREeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExh
eWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9y
UGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlIHBy
ZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShwcml2YXRlTW9kZSk7CiAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9J
bmxpbmVTaXplRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYKICAgICBzZXRWaWRlb0lu
bGluZVNpemVJZlBvc3NpYmxlKCptX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQsIHNpemUpOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9wbGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsK
QEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50
VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJp
Z2h0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAhVVNFKEFWRk9VTkRBVElPTikK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dzdHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9nc3RyZWFtZXIv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggMDk1ZmU1ZGJjZWRmNjhh
MDQyNzFlMzg0YzA0NTg1ZTUzYWY5YmRhYS4uOWVkMGJjODdhNzZlN2U5Njk1YWNiMDA1NzAyMzA1
MTU2NWYxNjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dz
dHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvZ3N0cmVhbWVyL1JlbW90ZU1lZGlhUGxheWVyUHJveHlH
U3RyZWFtZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sLCBib29sLCBmbG9hdCwgV2ViQ29y
ZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXll
ckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJikKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0LCBXZWJDb3Jl
OjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCk+JiYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9wbGF5c3RhdGlvbi9SZW1vdGVNZWRpYVBsYXllclByb3h5UGxheVN0
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlvbi5jcHAKaW5kZXggNjdlMzljNjMyYjdiMDYy
MmM4ZmE2Njk4MjYyN2VmZGNhYTBkMDE3OC4uYTIxOWE4NDI1MjQyZWZlMTNlNGJmYTVjNDllMTFj
ZjY0MzU4NmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3Bs
YXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVy
UHJveHlQbGF5U3RhdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJv
b2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0
LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQp
PiYmKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9v
bCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCwgYm9vbCwgZmxvYXQs
IFdlYkNvcmU6OkR5bmFtaWNSYW5nZU1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4
dElkKT4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5V2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS93aW4vUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eVdpbi5jcHAKaW5kZXggZGE1YmI5ZTc2NmVhYTBkNTMzMTkzZjA2YTViZjk5ZWEzODY5ODE0
ZC4uOThlZDg3NmI5MTFiNDdmYTVhYzE5Nzk1N2FjZDFhMWU2ZWQwNDZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvd2luL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHlXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sLCBib29sLCBmbG9h
dCwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElk
KT4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJv
b2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0
LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRl
eHRJZCk+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5jcHAKaW5kZXggMzhhMDU2ODdiNGRjMjA0YjNjZjFiMGRiMjZlYTRhNGU0NjkyYTNlYi4u
ZjBiZmM4ZmE1ZDMzMDBmNGQwMjI4NDUyNjVjOWEzZDJhY2YyZTYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlKElQQzo6Q29ubmUK
ICAgICAgICAgcmVjb3JkZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihN
ZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29s
IHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiwgU3RyaW5n
JiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25z
dCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmLCBTdHJpbmcmJiwgdW5zaWduZWQs
IHVuc2lnbmVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3Jk
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVk
aWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmll
ciwgcmVjb3JkQXVkaW8sIHJlY29yZFZpZGVvLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIuaAppbmRleCA4MThiMDE4ZDJkNjgwMWIwN2VlYTdkNTM3YTg3ODM1Yzg5MjgyZWVlLi4yZjI5
ZmVmMmFmMmQzYzM2MTA5NmIzM2Y5ZjA5ZWUwNzc4NzMwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJiwgU3RyaW5nJiYsIHVu
c2lnbmVkLCB1bnNpZ25lZCk+JiYpOworICAgIHZvaWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNv
cmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmLCBTdHJpbmcmJiwg
dW5zaWduZWQsIHVuc2lnbmVkKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFS
ZWNvcmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggNjcwNGI3MzM4OGU0ODZjNzU4N2E0NWM4NjllODE4ZDMxNDUwYjYw
Ny4uYjQzYjNmNDRlZjIxMWU3ZTdkZWIyZTQ0YTg3NGVlYjI2YWFhYWM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVy
KFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0
aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3Is
IFN0cmluZyBtaW1lVHlwZSwgdW5zaWduZWQgYXVkaW9CaXRSYXRlLCB1bnNpZ25lZCB2aWRlb0Jp
dFJhdGUpIEFzeW5jCisgICAgQ3JlYXRlUmVjb3JkZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVySWRl
bnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbywgc3RydWN0IFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlvbkVycm9yLCBTdHJpbmcgbWltZVR5cGUsIHVu
c2lnbmVkIGF1ZGlvQml0UmF0ZSwgdW5zaWduZWQgdmlkZW9CaXRSYXRlKSBBc3luYwogICAgIFJl
bGVhc2VSZWNvcmRlcihXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA3YjY3YWZlMjY2NmMwMWI4ZGRiNmE3
NzAwYzMwYTg2ZTE5N2FiODkwLi43YjAxNWU3N2U4YjZkZjA3NDc2OGM1Yzc3ZDQ4NTA2N2YzZjE4
Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xp
ZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OldlYWtWYWx1ZVR5cGU7CiAKLSAgICB1
c2luZyBMYXllckluaXRpYWxpemF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4pPjsKKyAgICB1c2luZyBMYXllckluaXRp
YWxpemF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
TGF5ZXJIb3N0aW5nQ29udGV4dElEPik+OwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVS
b290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIExheWVySW5pdGlhbGl6YXRpb25DYWxsYmFjayYm
KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5oCmluZGV4IGU4NDM2ZDQ2M2QyNjM3ZTY3MDk5NmM5YzFjZDk2
YTAxMmRhZGVhMTguLjhlNjYyNjdkYzUwMjdmNjIyNmEzY2UzNzZlMjdkZmY1MDQxMzVlNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHVzaW5nIExheWVyQ3JlYXRpb25D
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29u
dGV4dElEPik+JiY7CisgICAgdXNpbmcgTGF5ZXJDcmVhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4pPiYmOwog
ICAgIHZvaWQgY3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwg
Ym9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBMYXllckNyZWF0aW9uQ2FsbGJh
Y2spOwogICAgIHZvaWQgcmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50
aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZWQ1OWQyYjMwY2RmM2QyYjQwYzIwNjgyYzM0Yjk0NDFi
ZmU5ZmEwMS4uOWQxZWM3N2YyMTFmMTg2ZTU4NGEyMWQ2MWI0ZGNmODE5NWVkYzBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZSB7
Ci0gICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyIGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9w
dGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEPiBjb250ZXh0SUQpIEFzeW5jCisg
ICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVy
IGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGNvbnRleHRJRCkgQXN5bmMK
ICAgICBSZWxlYXNlTGF5ZXIoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyIGlkKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAppbmRleCAyMjVmNzFlMjQzZDYzMjM1MTE4YzliYzVjMWE3Yzg0ZmUz
ZTE1YjQ0Li44NDNhY2RjYjRhNGY0NDk3NDkwMmMzY2ZiNWYzNzAyMmZhODY2ODAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
QEAgLTMwNSwyMSArMzA1LDIxIEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCiBzdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRl
eFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKIHsKICAgICBzdGF0aWMgYXV0
byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQ
YWlyPiB7Ci0gICAgICAgIHsgIk9ic2VydmVkRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0
KSB9LAotICAgICAgICB7ICJUb3BMZXZlbERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmlu
ZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2ZWxEb21haW5zLCBzdGQ6Om51bGxvcHQp
IH0sCi0gICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3Rk
OjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShj
cmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0g
ICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1Np
bmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hT
dG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkp
IH0sCi0gICAgICAgIHsgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJ
bmRleFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cywgc3RyaXBJ
bmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0sCi0gICAgICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0
b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykp
IH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6
bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0gICAgICAg
IHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmlu
ZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSkpIH0sCi0gICAgICAgIHsgIk9wZXJhdGluZ0RhdGVzIl9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcElu
ZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRl
cykpIH0sCi0gICAgICAgIHsgIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
LCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCkpIH0sCi0gICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywg
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1
ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0K
KyAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkg
fSwKKyAgICAgICAgeyAiVG9wTGV2ZWxEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2ZWxEb21haW5zLCBzdGQ6Om51bGxv
cHQpIH0sCisgICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3Jl
ZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
KSkgfSwKKyAgICAgICAgeyAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlx
dWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKSB9LAorICAgICAgICB7ICJUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwgc3RyaXBJbmRl
eFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCisgICAgICAgIHsg
IlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKKyAgICAgICAgeyAiVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
Pj4oY3JlYXRlVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01h
dGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zy
b20pKSB9LAorICAgICAgICB7ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCBz
dGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0s
CisgICAgICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9w
YWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW5zLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5p
cXVlSW5kZXhTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKSkgfSwKKyAgICAgICAgeyAiU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bnMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpKSB9LAorICAgICAgICB7ICJTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRl
eFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbykpIH0sCisgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNy
ZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tKSkgfSwKKyAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJ
bmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0
ZXMpKSB9LAorICAgICAgICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNo
U3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkpIH0sCisgICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0
ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KSkgfQogICAgIH0pOwogICAgIAogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5k
ZXhRdWVyaWVzOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om9wZW5JVFBEYXRhYmFzZSgpCiAgICAgfQogfQogCi1PcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNr
Rm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJs
ZXNJblNjaGVtYSgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbWlzc2luZ1RhYmxlczsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIDEgZnJv
bSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBhbmQgdGJsX25hbWU9PyJfcyk7CkBA
IC00NzAsMTQgKzQ3MCwxNCBAQCBUYWJsZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaQogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaW5kZXg7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGluZGV4OwogICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+c3RlcCgp
ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRl
eFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAgICAgIGlmICghcmF3SW5kZXguaXNFbXB0
eSgpKQogICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKICAgICB9CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRh
YmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBX
VEZNb3ZlKGluZGV4KSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50U2NoZW1hKCkKQEAgLTk5
Miw3ICs5OTIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNo
aXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHN0YXRlbWVudCwgT3B0aW9u
YWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNv
bmREb21haW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZWxhdGlvbnNoaXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHN0YXRl
bWVudCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29uc3QKIHsKICAgICBpZiAoIWZpcnN0RG9tYWlu
SUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhTUUxp
dGVTdGF0ZW1lbnRBdXRvCiAgICAgcmV0dXJuICEhc3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiB9
CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFRvcEZyYW1lRG9tYWluJgogICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMoc2NvcGVkU3Rh
dGVtZW50LCBkb21haW5JRChzdWJGcmFtZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdQogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRX
YXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bk5vd09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bk5vd09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjA2Nyw4ICsy
MDY3LDggQEAgU2Vjb25kcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzdWJGcmFtZURvbWFpbklEID0g
ZG9tYWluSUQoc3ViRG9tYWluKTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9wRnJhbWVEb21h
aW5JRCA9IGRvbWFpbklEKHRvcEZyYW1lRG9tYWluKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzdWJGcmFtZURvbWFpbklEID0gZG9tYWluSUQoc3ViRG9tYWluKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0b3BGcmFtZURvbWFpbklEID0gZG9tYWluSUQodG9wRnJhbWVEb21h
aW4pOwogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFpbklEIHx8ICF0b3BGcmFtZURvbWFpbklEKQog
ICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3Rp
bmdUaW1lc3RhbXAgfTsKQEAgLTIxODAsNyArMjE4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0
IFRvCiAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyByZWRpcmVjdERvbWFp
biB9KSwgKnJlc3VsdC5zZWNvbmQpOwogfQogCi1zdGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorc3Rk
OjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzaG91bGRFbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IoRG9tYWluRAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBE
b21haW5EYXRhJiBzdGF0aXN0aWMpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUo
Y29uc3QgRG9tYWluRGF0YSYgc3RhdGlzdGljKQogewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDAp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDkyLDggKzMwOTIsOCBAQCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YnVpbGRQcml2YXRlQ2xpY2tNZQogICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAh
PSAtMSkKICAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldEF0dHJpYnV0aW9uKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJpb3JpdHkpIH0pOwogCi0gICAgICAgIE9wdGlvbmFs
PFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7Ci0gICAgICAgIE9wdGlvbmFsPFdh
bGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAg
CiAgICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGluZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFz
IGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBzaXRlLgogICAgICAgICBpZiAoc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCkBAIC0zMTEwLDcgKzMxMTAsNyBAQCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVp
bGRQcml2YXRlQ2xpY2tNZQogICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKIH0KIAotc3RkOjpwYWly
PE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiwgT3B0aW9uYWw8
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiBkZXN0aW5hdGlvblNpdGUpCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlv
blNpdGUpCiB7CiAgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VT
aXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ID0gZG9tYWluSUQoZGVzdGluYXRpb25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKQEAgLTMxMzQs
MTEgKzMxMzQsMTEgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFByaXYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAg
IHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgIGlmIChmaW5kVW5hdHRyaWJ1dGVk
U2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgdW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbURhdGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpOwogCi0gICAg
T3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAg
ICBpZiAoZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQogICAgICAgICBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCk7CiAKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlCiAg
ICAgfQogfQogCi1PcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJj
ZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUs
IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorc3RkOjpv
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxT
ZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0
IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewogICAgIC8vIFdlIHNob3Vs
ZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3MgZnJvbSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNj
aGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCiAgICAgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFs
CiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChPcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW4pCiB7CiAgICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwg
ZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgogICAgIFN0cmluZyBiaW5kUGFyYW1l
dGVyID0gIiUiOwpAQCAtMzQzOSw3ICszNDM5LDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U291
cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgT3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1l
c1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRp
b24pCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQogewogICAgIGF1dG8gc291
cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lz
dHJhYmxlRG9tYWluKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWlu
SUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwpAQCAt
MzQ1Nyw4ICszNDU3LDggQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRv
U2VuZD4sIE9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG8KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1l
VG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZTsKLSAgICBPcHRpb25hbDxEZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1l
VG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsKICAgICAKICAgICAvLyBB
IHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8g
dGhlIHJlc3BlY3RpdmUgc2l0ZS4KICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3Vi
bGUoMCkgPiAwLjApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IGZkNzFjYzVlN2I5NjA0Yzc4MThmMWI2YWU5YmE1ZDMxNmUyODE4
M2EuLjUxMzM3NmUzMzM2NDgyYWU1ZGE5MWVhYmUwZWQ1NWMwNWZkYjUwNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC02OSw3
ICs2OSw3IEBAIHVzaW5nIERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwog
dXNpbmcgU291cmNlRG9tYWluSUQgPSB1bnNpZ25lZDsKIHVzaW5nIERlc3RpbmF0aW9uRG9tYWlu
SUQgPSB1bnNpZ25lZDsKIAotdHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJp
bmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKK3R5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpv
cHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIAogLy8gVGhpcyBpcyBhbHdheXMg
Y29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFp
biYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2Nv
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKIApAQCAtMTM3LDE2ICsxMzcsMTYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCk7Ci0gICAgT3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEo
KTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGludGVycnVwdCgp
OwogCiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KICAgICB2b2lkIGluc2VydFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcoKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNV
bnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4g
YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6
b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyRXhw
aXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyU2Vu
dEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KSBvdmVy
cmlkZTsKQEAgLTE4OSw4ICsxODksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5zZXJ0T2JzZXJ2
ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25z
dCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIHVuc2lnbmVkKTsK
LSAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICBib29sIHJl
bGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgYm9vbCBkb21h
aW5FeGlzdHMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpOwogICAgIHZvaWQg
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgaW50KTsK
QEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50
VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7CiAgICAg
dm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9u
RG9tYWluSUQpOwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQ+LCBPcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4+IGVhcmxpZXN0VGlt
ZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBz
dGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9w
dGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2Vu
ZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwogCiAgICAgc3RydWN0
IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25lZCBkb21haW5JRDsKQEAgLTIzOCwxMyArMjM4
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJl
Y3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFp
bih1bnNpZ25lZCBwcmltYXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVu
dFJlZGlyZWN0aW9uU291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAg
ICAgdm9pZCBzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
U2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJl
dmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRS
ZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNv
cmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwcnVuZVN0YXRpc3Rp
Y3NJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIGVudW0gY2xhc3MgQWRkZWRSZWNvcmQgeyBObywg
WWVzIH07Ci0gICAgc3RkOjpwYWlyPEFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHN0ZDo6cGFpcjxBZGRlZFJlY29y
ZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVU
VVJOOwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3IoY29uc3QgRG9tYWlu
RGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZyk7CiAgICAgYm9vbCBzaG91
bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKGNvbnN0IERvbWFpbkRhdGEmLCBib29sIHNob3VsZENo
ZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwogICAgIGJvb2wgc2hvdWxkRW5mb3JjZVNhbWVTaXRlU3Ry
aWN0Rm9yKERvbWFpbkRhdGEmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwpA
QCAtMjU0LDEyICsyNTQsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGlj
ZXMoKTsKICAgICBib29sIGNyZWF0ZVNjaGVtYSgpOwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtl
RG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBEb21haW5E
YXRhJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwogICAgIAogICAgIHZvaWQgcmVtb3ZlVW5hdHRy
aWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7CiAgICAgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21E
YXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZSk7CiAgICAgU3RyaW5nIGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGUpOwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZp
bmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25h
bDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUmKTsKIAogICAgIGNvbnN0IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3RvcnlQ
YXRoOwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKQEAg
LTMxOSw4ICszMTksOCBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogICAgIGJvb2wgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgeyBm
YWxzZSB9OwogICAgIHVuc2lnbmVkIG1fb3BlcmF0aW5nRGF0ZXNTaXplIHsgMCB9OwotICAgIE9w
dGlvbmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGU7Ci0gICAgT3B0
aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7CisgICAgc3Rk
OjpvcHRpb25hbDxPcGVyYXRpbmdEYXRlPiBtX2xvbmdXaW5kb3dPcGVyYXRpbmdEYXRlOworICAg
IHN0ZDo6b3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7
CiAgICAgT3BlcmF0aW5nRGF0ZSBtX21vc3RSZWNlbnRPcGVyYXRpbmdEYXRlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRl
eCA5MzBlMmI0NTUxYWZlMjE5YWQwMTdhZDU0MTUyNTY0NzU4ZmI3MjM1Li5hZDRhM2JiNDdlMGNm
YTI3Mjk3NmFjMzFkNDgxZTU1MDFkZjY0MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIENvb2tp
ZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNvb2tpZUFjY2Vzcyhj
b25zdCBSZXNvdXJjZUxvYWRTCiAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRl
ZDsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYgc3ViRgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9t
cHRXYXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d25Ob3dPckVhcmxpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC05MjksNyArOTI5
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZEVuZm9y
Y2VTYW1lU2l0ZVN0cmljdEZvcihSZXNvdXJjZUwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9w
dGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0
YXRpc3RpYykKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKQogewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNmRjMTRhYWFjMDdjNGFiYjRhMGE0YjZjNDM1
NTliNmQxZjU1OGQ0YS4uNDlkM2Q4MjMyOTE1NTVjNjRiMDQ0YmY4MjNkM2IwMmE2YTNmZWU3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApA
QCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29r
aWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29v
a2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCkBAIC0xMTEsOSArMTEx
LDkgQEAgcHVibGljOgogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90IGlt
cGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgogICAgIHZvaWQgaW5zZXJ0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZv
clRlc3RpbmcoKSBvdmVycmlkZSB7IH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+YXR0cmlidXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKSBvdmVycmlkZSB7IHJldHVybiB7IH07
IH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0
ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfTsKLSAgICB2b2lkIGNsZWFy
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVy
cmlkZSB7IH07CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBjbGVhckV4
cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgfTsKICAgICBTdHJpbmcg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmlu
ZygpOyB9OwogICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92ZXJyaWRlIHsgfTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMo
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFs
ZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRp
cmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0
PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBj
b25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWlu
JiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVk
aXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlz
UHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdN
b2RlKCkgb3ZlcnJpZGU7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01lbW9yeVN0
b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogCiAgICAgSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgVW5pcXVlUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+PiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsKICAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRp
bmdEYXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5
ZWUxMWM5MTc1ZjE0MTdkYWY5OGUxNjBlN2JjMjkzNzgyZTViYmRlLi42YTU2MDU2Y2M1OTQ2Mjg0
MjFjZmNjYThmZmQ5MTU2NWY4YWE4NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBw
Qm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAgICAg
dmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRv
cEZyYW1lRG9tYWluJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWlu
JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzU3RhdHVzKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CiAKQEAg
LTIwNiw5ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dC4KICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpID0gMDsKLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxS
ZWdpc3RyYWJsZURvbWFpbj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTZW50
QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpID0gMDsK
QEAgLTIzOCw3ICsyMzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewog
ICAgICAgICBzaXplX3QgcHJ1bmVFbnRyaWVzRG93blRvIHsgODAwIH07CiAgICAgICAgIHNpemVf
dCBtYXhTdGF0aXN0aWNzRW50cmllcyB7IDEwMDAgfTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uOwogICAgICAgICBTZWNvbmRzIG1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9OwogICAgICAgICBTZWNvbmRzIGdy
YW5kZmF0aGVyaW5nVGltZSB7IDI0X2ggKiA3IH07CiAgICAgICAgIFNlY29uZHMgY2FjaGVNYXhB
Z2VDYXBUaW1lIHsgMjRfaCAqIDcgfTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG1fZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBN
b25vdG9uaWNUaW1lIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkOwogICAgIHVpbnQ2
NF90IG1fbGFzdFN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgeyAwIH07Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVz
dElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nU3RhdGlz
dGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiBtX2RlYnVnU3RhdGljUHJldmFsZW50UmVzb3VyY2UgeyBVUkwgeyBVUkwoKSwgImh0dHBz
Oi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyJfcyB9IH07CiAgICAgYm9vbCBtX2RlYnVnTG9nZ2lu
Z0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggZmEwZjk3MmQwZTc2OTY1ZDQwNGRhZjMzNjY1ZjBhMDkwYmY4ZWU4NC4uZDNkZTYwOWFmMjE1
OThlY2VjODk1ZjMyZjBkYWQyYzMwNDFiM2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFJlc291cgogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21h
aW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC00MDAsNyArNDAwLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlz
RXBoZW1lcmFsKCkpOwogCkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25zdCBSZWdpc3Ry
YWIKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywg
cHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7
CiB9CiAKLVN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW5TdG9yYWdlU2Vzc2lvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlKQorU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
blN0b3JhZ2VTZXNzaW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NTY29wZSBzY29wZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC01ODYsNyArNTg2LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3IKICAgICByZXR1cm4gaXNT
dG9yYWdlR3JhbnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTUzMiw3
ICsxNTMyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtBbGxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEEKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VT
aXRlLCBjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNp
dGUsIGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE2OTMsMTkgKzE2OTMsMTkgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5OjplbmNvZGUKICAgICBlbmNvZGVyIDw8IHRpbWVMYXN0VXBkYXRlZDsK
IH0KIAotYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBP
cHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4KK2F1dG8gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4KIHsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRlY29kZXIgPj4g
ZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRlY29kZWRTdG9yYWdlQWNjZXNzOwogICAgIGRlY29k
ZXIgPj4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2Vz
cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlY29uZHM+
IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkZWNv
ZGVkVGltZUxhc3RVcGRhdGVkOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZFRpbWVMYXN0VXBkYXRl
ZDsKICAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNzM0LDE0ICsxNzM0LDE0IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
CiAgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsKIH0KIAotYXV0byBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4KK2F1dG8gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4KIHsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRl
Y29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVj
b2RlZEZpcnN0UGFydGllczsKICAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CiAg
ICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0aWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGIx
ZTdjMjMzYTg0NGUwNGJlNzM0OTAzZjI5ODZlYmZhMzU5OWY1NjMuLmM3NmE2YWNhNDg0NTE1MTA1
YjY0OTFlMTNkOGUwNWU0NTczYzQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKIAogICAgICAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBpZ25vcmVzIGRp
ZmZlcmVuY2VzIGluIGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQgaXQgcHJvYmFibHkgc2hvdWxkIGJl
IGEgbmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRvcj09LgogICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkmKSBjb25zdDsKQEAg
LTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBz
dGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAg
ICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzb3J0cyBieSBudW1iZXIgb2YgdW5k
ZXJGaXJzdFBhcnRpZXMsIHNvIGl0IHByb2JhYmx5IHNob3VsZCBiZSBhIG5hbWVkIGZ1bmN0aW9u
LCBub3Qgb3BlcmF0b3I8LgogICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5
RGF0YSYpIGNvbnN0OwpAQCAtMTYwLDkgKzE2MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lz
dHJhYmxlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAg
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzc0luU3RvcmFnZVNlc3Np
b24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9y
YWdlQWNjZXNzU2NvcGUpOworICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFn
ZUFjY2Vzc0luU3RvcmFnZVNlc3Npb24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSk7CiAgICAgdm9pZCBoYXNI
YWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7CiAgICAgdm9pZCBzZXRMYXN0
U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nl
c3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+
JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIGJvb2wgbmVlZHNVc2VySW50ZXJhY3Rpb25RdWlyayhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjQ1LDcgKzI0NSw3
IEBAIHB1YmxpYzoKICAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LgogICAgIHZvaWQg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwogICAgIHZv
aWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29u
c3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYpOwor
ICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+KT4mJik7CiAgICAgdm9p
ZCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKICAg
ICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHBlcmZvcm1EYWlseVRhc2tzKCk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NFcGhl
bWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYpOwogICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckVwaGVtZXJhbChEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDgxN2Y5
Y2Q3N2M5NTBkZTRkN2FkZmRjZWM4MDU3NTEyODdlNzYyZTkuLmE4Yjk0M2E1MjEwOTRjZDEzN2Nl
OThkZmJmNGViYmY3MDM0YzI5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHsK
IH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKICAgICBhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYg
KCFuZXR3b3JrU2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMDFlNTMxYTM4YzA0ZDRhMjkz
Y2YyNDlhNTBhOThlYjg2MDA5MDdiZC4uNmNmODhjYzIzN2ZmYzA2ZDI2M2ZjOGM5NzczNjRmMGJm
MWJlOWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAg
ICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwogCi0gICAgdm9pZCBzdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CisgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNr
KERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9pZCBjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik7CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
LCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGI0OGM4NDNiY2E0OGVhNTk3
YTUwZTE5OTU2M2RmMmExYTk4YTA1ZTYuLjJkMTkxOTBhMzQ3MGRmYjUyMzU4NWYyMmY3ZjQ2NTA1
MGRmMzM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yODMsNyArMjgzLDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUlRDUHJvdmlkZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKIH0KIAogI2lmIEVOQUJMRShXRUJfUlRDKQotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRp
ZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmIGNhbGxiYWNrKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRp
ZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgYXV0byogY29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fbmV0d29ya1Byb2Nlc3Mt
PndlYlByb2Nlc3NDb25uZWN0aW9uKHJlbW90ZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIp
OwogICAgIGlmICghY29ubmVjdGlvblRvV2ViUHJvY2VzcykgewpAQCAtNjAzLDcgKzYwMyw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlbmRIMlBpbmcoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRvKE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RU
byhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJwcmVjb25uZWN0VG86IChwYXJlbnRQSUQ9JWQsIHBh
Z2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50
UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIApAQCAtNjU0LDEyICs2NTQsMTIg
QEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c3RvcmFnZVNlc3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3Rh
cnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9z
ZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN1Z2dlc3RlZE5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCkBAIC03MjIsNyArNzIyLDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXIKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdl
U2Vzc2lvbikKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5
OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tp
bmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJh
Y2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSkKIHsKICAgICBpZiAobV9zZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAppbmRleCA5NDY1YjY4ZjM2YzRlNTllZWFhYzY3NDgxOTA2YTNlMTk1
YzliNDdlLi4zMGI4ZGFlMWI2M2Y2MmFmNzA3N2Q5NTY2Y2IxY2ZjNmZlZDdkYTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJl
c291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSk7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BS
ZXNvdXJjZSk7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9u
Q29kZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYpOwpAQCAtMjEwLDIyICsyMTAsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRQaW5n
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZW5kSDJQaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRz
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJik7Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8o
T3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJik7CiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVkKHVpbnQ2NF90IGxv
YWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZv
aWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBi
cm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NP
cmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYg
cmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7Ci0gICAgdm9pZCBjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4pOworICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+KTsKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXND
T1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOwogCiAgICAgdm9pZCBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFz
a0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNv
cmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBz
ZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQg
Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNo
b3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwog
ICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2lmIEVOQUJMRShXRUJfUlRDKQotICAgIHZv
aWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmKTsKKyAg
ICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRp
ZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4p
PiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjNjNhNmJhNzFmYWU0MzBiOWQyYTMyNmVjZmI4NmExNGRk
ZDMxOTkzLi4wNjNlZTZhNDYxYmI2OGViZGU3MGM2ZjllZTRlODM5NjFkMDMzNTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMxLDE2ICszMSwxNiBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgQnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHdlYkZyYW1lSUQpCiAgICAgUHJlZmV0Y2hETlMoU3Ry
aW5nIGhvc3RuYW1lKQogICAgIFNlbmRIMlBpbmcoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIFByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50
NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOworICAgIFByZWNvbm5lY3RUbyhzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7CiAgICAgSXNSZXNvdXJjZUxvYWRG
aW5pc2hlZCh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoYm9vbCBpc0Zpbmlz
aGVkKSBBc3luYwogCi0gICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25h
bDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKLSAgICBDb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFs
PFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCisgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWROYW1lKQorICAgIENvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBlbnVtOmJvb2wgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQogCiAgICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJv
bURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0
UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJs
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykg
U3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVz
KFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5
bmNocm9ub3VzCiAgICAgU2V0UmF3Q29va2llKHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
KQogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKICAgICBEb21D
b29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJv
bm91cwpAQCAtODgsNyArODgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgp
IEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3Vy
Y2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4g
KE9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKKyAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5l
bFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNv
dXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAt
PiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIFVwZGF0
ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwCmluZGV4IDFjOTA1ZDlhOTM1MjcwZDMxYmY1MjQxNTRlY2QzNGFkZjI1MzAw
YzIuLjM4YTYyNTE0OTM5OTZlYzMxNTc3OWYxNGVmMTBjN2QzMDg0ZjVkMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZAogewogICAgIGlmIChyZXNwb25zZS5p
c0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgp
KSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUp
OwogICAgICAgICAgICAgY2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2NjUzZWI4YzFhMzM5ZWU2MWQ0OTAxNDY5
NGNiOWViMTI0MWNjYmQzLi5jZjExNzE4Zjc5ZmFmNWQ2M2I5OThkMGI0YjBlZTY2YWY3M2NmNGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25z
ZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYg
aGVhZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBPcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVu
c2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBt
X21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKQEAgLTEzOCwxMCAr
MTM4LDEwIEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRVUkwgbV9kb2N1bWVudFVSTDsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVy
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gbV9jc3BSZXNwb25zZUhlYWRlcnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7Ci0gICAgT3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4g
bV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVj
a2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKaW5kZXggOGI2MmExZjg0ZTQxODJhZjcxYzRhNjg2ZTkzYTY3NmFkOTUzNGI5
YS4uZjhkNjE3YWU5M2YwZGFhOWU4ZWJlOWI5NzA1NmVmMDAzNmU0ZDM5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbjsKICAgICBXVEY6OlByb2Nlc3NJRCBwYXJlbnRQSUQgeyAwIH07CiAjaWYg
SEFWRShBVURJVF9UT0tFTikKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3JrUHJv
Y2Vzc0F1ZGl0VG9rZW47CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW47CiAjZW5kaWYKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdDsKICAgICBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZm
aW5nUG9saWN5IHsgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQg
fTsKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmls
ZVJlZmVyZW5jZXM7CiAgICAgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQ
cmVjb25uZWN0T25seTo6Tm8gfTsKLSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyOwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW46Ok5vIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CisgICAg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJy
aWVkPiBwY21EYXRhQ2FycmllZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmZjBm
ZjRhZjFjZmNjNzMyMDA5ZjBmOWE2YmQxMWI3NDVhYjBjZjdjLi5iMGYwYzUwMTFiZDQzODU1MzZj
OTBmNDdjNzFmZTc1MDIwZGExOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikK
ICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYsIEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBIVFRQQ29va2llQWNj
ZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rp
b24gPSBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikg
ewpAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnCiAgICAgfQogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc2Vjb25kcyk7CkBAIC03
MDAsNyArNzAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXAKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+Y2xlYXJJc29sYXRlZFNlc3Npb25zKCk7CkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBib29sIE5l
dHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxl
ZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTIwODYsNyArMjA4Niw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
CiAgICAgbV9jYWNoZUVuZ2luZXMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIGRvd25sb2FkTWFuYWdlcigp
LnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CkBAIC0yNDg3LDcgKzI0
ODcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJvYwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykKIHsKICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlJlcXVlc3RTdG9yYWdlU3BhY2UgeyBzZXNzaW9uSUQsIG9yaWdp
biwgcXVvdGEsIGN1cnJlbnRTaXplLCBzcGFjZVJlcXVpcmVkIH0sIFdURk1vdmUoY2FsbGJhY2sp
LCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCAwODMzODJjOTlhMDdiMjZmZDU4OTIxYzVjODdlMmE2MWIyMTA3NjFjLi5iOGE3YWQ0
OWNhMTBlZDBmMzNlNjAxN2NkNGQzNmIwMmZlYmQ5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjM1LDcgKzIzNSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNl
c3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHB1YmxpYzoKICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogZmluZENhY2hlRW5naW5l
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUmIGVuc3Vy
ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgRnVuY3Rpb248UmVmPENhY2hlU3Rv
cmFnZTo6RW5naW5lPigpPiYmKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNw
YWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4pPiYmKTsKIAogICAg
IHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBkdW1wUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJik7CkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRs
ZXJzCiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAg
IHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJD
b3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0
ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVu
dGlmeSB3aGljaCBkaXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hl
KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAK
LSAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICB2b2lkIGRv
d25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93
bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0MGVhMTJhMGQ0
NGFlZGEyMTQ5MmU4NTI0NzlkNmE4ZGMyMmQ4M2M4Li45MDQ2M2QyNWJkNmE0ODk0YTJlNmU5YzE1
ZjE1ZTJjODI4ODRmMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0
d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAotICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1l
bnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KSBBc3luYwogCiAj
aWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCBpZ25vcmVUTFNFcnJvcnMpCkBAIC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9y
PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IHJlZ2lzdHJhYmxlRG9tYWlucykgLT4gKCkgQXN5bmMKICAgICBSZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJM
IG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0
YVR5cGVzKSAtPiAoKSBBc3luYwogCi0gICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lKQorICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpib29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlk
U3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkg
QXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9v
bCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1l
KCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBV
UkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4g
KCkgQXN5bmMKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIElzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikgLT4gKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+
IChib29sIGlzUHJldmFsZW50KSBBc3luYwogICAgIElzVmVyeVByZXZhbGVudFJlc291cmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0
RG9tYWluKSAtPiAoYm9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5jCi0gICAgU2V0QWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNv
bmRzPiBzZWNvbmRzKSAtPiAoKSBBc3luYworICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNv
bmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFNlY29uZHMgc2Vj
b25kcykgLT4gKCkgQXN5bmMKICAgICBNZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4xLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVu
dCwgdWludDY0X3QgZGF0YVJlY29yZHNSZW1vdmVkKSAtPiAoKSBBc3luYwogICAgIEluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIHVpbnQ2NF90IG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5
bmMKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
c291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMg
ZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRp
YXRlZEJ5VXNlcikKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKCkgQXN5
bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRT
aW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3Vs
ZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAgIFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmllZFNpbmNlLCBlbnVtOmJvb2wgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVDb29raWVC
bG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
U2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJs
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBbGxUYWJsZXMpIEFzeW5j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDY0NTAyYmUwNDE3MWJkNzM0
ZDZhM2UzN2Q0MGZiMTg3OGFiMTBkZDAuLjNkNGQ3MGYzY2YxN2JlY2U0ZDdhNGI1NWZiMmNlM2Ux
NzA5ZTZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCwyNSAr
ODQsMjUgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5jb29raWVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY29va2llU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gcGFyZW50QnVuZGxlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gcGFyZW50QnVuZGxlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LnBhcmVudEJ1bmRs
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnBhcmVudEJ1bmRsZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IHRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiB0ZW1wRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghdGVtcERp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4+IHdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzOwogICAgIGRlY29kZXIgPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAgICAg
aWYgKCF3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBjZjExN2FhOTc1N2YyZjBiZTRlMTUyNTlh
YWI5OGJiMjkxYTFkMGU4Li4wMGVmYzVmMDUwMGJiYmI3MzIxODFkZmI5NjYzMWY3MDJjOGFlZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI2LDIwICsxMjYsMjAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHBjbURhdGFDYXJyaWVkOwogfQogCi1PcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyByZXN1bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5SUQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdlUHJveHlJRDsKICAgICBkZWNv
ZGVyID4+IHdlYlBhZ2VQcm94eUlEOwogICAgIGlmICghd2ViUGFnZVByb3h5SUQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LndlYlBhZ2VQcm94eUlEID0gKndlYlBh
Z2VQcm94eUlEOwogCi0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CiAgICAgZGVjb2RlciA+
PiB3ZWJQYWdlSUQ7CiAgICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xNjQsNyArMTY0LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhU
VFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKIAotICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVx
dWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiByZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAoIXJlcXVlc3RCb2R5
U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5yZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBy
ZXNvdXJjZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gcmVzb3Vy
Y2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIXJlc291cmNlU2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMjMs
NyArMjIzLDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zPiBvcHRpb25z
OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zPiBvcHRpb25zOwogICAgIGRlY29kZXIg
Pj4gb3B0aW9uczsKICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0yMzQsNyArMjM0LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFJlc3RyaWN0
SFRUUFJlc3BvbnNlQWNjZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkUmVzdHJp
Y3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAgICAgZGVjb2RlciA+PiBzaG91bGRSZXN0cmljdEhUVFBS
ZXNwb25zZUFjY2VzczsKICAgICBpZiAoIXNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjQzLDcgKzI0Myw3IEBAIE9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmxp
Z2h0UG9saWN5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PGJvb2w+IHNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5OwogICAg
IGRlY29kZXIgPj4gc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBp
ZiAoIXNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3kpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0yNTIsNDQgKzI1Miw0NCBAQCBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZyYW1lQW5jZXN0b3JPcmlnaW5z
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHBh
Z2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYWdlSGFz
UmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENs
aWVudDsKICAgICBpZiAoIXBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAq
cGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4g
cGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhcmVudEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRG
cmFtZUlEKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuY3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKICAgICAKLSAgICBPcHRpb25hbDxVUkw+IGRvY3VtZW50VVJMOworICAgIHN0
ZDo6b3B0aW9uYWw8VVJMPiBkb2N1bWVudFVSTDsKICAgICBkZWNvZGVyID4+IGRvY3VtZW50VVJM
OwogICAgIGlmICghZG9jdW1lbnRVUkwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3VtZW50VVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdvcmtl
cnNNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29y
a2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgaWYgKCFz
ZXJ2aWNlV29ya2Vyc01vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2aWNlV29ya2Vyc01vZGU7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSAqc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI7CiAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8SFRUUEhlYWRlcnNUb0tl
ZXBGcm9tQ2xlYW5pbmc+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBzdGQ6Om9wdGlvbmFsPE9w
dGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4+IGh0dHBIZWFkZXJzVG9LZWVw
OwogICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNUb0tlZXA7CiAgICAgaWYgKCFodHRwSGVhZGVy
c1RvS2VlcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMwMCwyMCArMzAwLDIw
IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRp
b25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAot
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OwogICAgIGRlY29kZXIgPj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAo
IWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSAqaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4+IHBjbURhdGFDYXJyaWVkOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+PiBwY21EYXRhQ2FycmllZDsKICAgICBkZWNvZGVyID4+
IHBjbURhdGFDYXJyaWVkOwogICAgIGlmICghcGNtRGF0YUNhcnJpZWQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggMjA0MTJlMjU2ODQ4
MDgyZDNmZTM0Njg0YjQ2MThlOTYyZWRkZjY5Yi4uZjBlNDIwZjUxMDNlYmQ1MWFmZDdjZTg5Y2Ji
N2IzNWY5NjI1YTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtNDYsNyArNDYsNyBA
QCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyA6IHB1YmxpYyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgewog
cHVibGljOgogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRp
YyBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVj
b2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIGlkZW50aWZpZXIgeyAwIH07CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5
IGZvciB0aGUgc2VuZGVyLgpAQCAtNTQsMjkgKzU0LDI5IEBAIHB1YmxpYzoKICAgICBTZWNvbmRz
IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4gc291cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4g
Y3NwUmVzcG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhlYWRlcnM7CiAgICAgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzOwogICAgIGJvb2wgc2hv
dWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlBy
ZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3kgeyBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3k6
OkNvbnNpZGVyIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9s
aWN5IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Pj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAgYm9vbCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xp
ZW50IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBh
cmVudEZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IHBhcmVudEZyYW1lSUQ7CiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQgeyB0cnVlIH07CiAgICAgVVJMIGRvY3VtZW50VVJMOwogICAgIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdv
cmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyOwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpIVFRQSGVhZGVyc1Rv
S2VlcEZyb21DbGVhbmluZz4gaHR0cEhlYWRlcnNUb0tlZXA7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKLSAgICBPcHRp
b25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogICAgIAot
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2NiZTMxYzRmMjA1MzA3YjkzNjMz
OTlkMDE5N2E3ZmUwMDMwZDE3Ni4uMDg0YmRlMWIzZmMxYmU2NWM4ZmQ3NDBkYjBiNDIyNTBkY2E2
ODNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gbmV0d29ya1Nl
c3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgp
KTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCkgewot
ICAgICAgICBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keTsKICAgICAg
ICAgaWYgKGF1dG8qIGZvcm1EYXRhID0gcmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gbWF4U2VyaWFsaXplZFJlcXVlc3RTaXplID0gMTAyNCAq
IDEwMjQ7CiAgICAgICAgICAgICBpZiAoZm9ybURhdGEtPmxlbmd0aEluQnl0ZXMoKSA8PSBtYXhT
ZXJpYWxpemVkUmVxdWVzdFNpemUpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGMKICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJl
c291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
LCByZXNvdXJjZUxvYWRJbmZvKCksIGNoYWxsZW5nZSksIDApOwogfQogCi1PcHRpb25hbDxTZWNv
bmRzPiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNh
cFZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIGV4aXN0aW5nQ2FjaGVFbnRyeU1h
dGNoZXNOZXdSZXNwb25zZSA9IGZhbHNlOwpAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAgICAgKyttX3JlZGlyZWN0Q291bnQ7CiAgICAgbV9yZWRpcmVjdFJlc3Bv
bnNlID0gcmVkaXJlY3RSZXNwb25zZTsKIAotICAgIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKICAgICAgICAg
ICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3Vs
dC52YWx1ZSgpOwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAg
ICAgY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92
ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBPcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewogICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRJ
c0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKIApAQCAtOTE4LDcgKzkxOCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsK
IH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2FuaXRpemVSZXNwb25zZShjb25zdCBOZXR3b3JrUHJv
Y2VzcyYgcHJvY2VzcywgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyLCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIGJvb2wg
c2hvdWxkU2FuaXRpemVSZXNwb25zZShjb25zdCBOZXR3b3JrUHJvY2VzcyYgcHJvY2Vzcywgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIsIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFwYWdlSWRlbnRpZmll
ciB8fCBvcHRpb25zLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
cHR5U3RyaW5nIHx8IG9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjk0LDE3ICsxMjk0LDE3IEBAIHN0YXRpYyBTdHJp
bmcgZXNjYXBlRm9ySlNPTihTdHJpbmcgcykKICAgICByZXR1cm4gcy5yZXBsYWNlKCdcXCcsICJc
XFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZXNjYXBlSURG
b3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCitzdGF0aWMgU3RyaW5nIGVz
Y2FwZUlERm9ySlNPTihjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmco
Ik5vbmUiX3MpOwogfQogCi1zdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5n
KCJOb25lIl9zKTsKIH0KIAotc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmco
Ik5vbmUiX3MpOwogfQpAQCAtMTMxOSw3ICsxMzE5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBsb2dDb29raWVJbmZvcm1h
dGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxS
ZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3Jp
Z2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0
KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
dm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6
Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBA
IC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRp
b24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FM
X0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50
ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRl
cm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBA
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmYTBhYjg3YTA3NTZk
ZGVmMThmYTgwNGI4YTgxNjgzMjM2ZTBjMzM5Li5lYzQ0ZTFiNTUyMjNmNzJmZjQ2NDI2NWFkNDQw
ODc5MzAyOTVhNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MgPSBmYWxzZTsgfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIGNvbnRpbnVlV2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE+JiYpOwogICAgIHZvaWQgZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9u
VHlwZSk7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0
ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIApAQCAtMjQ1LDcgKzI0NSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAotICAg
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tl
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0Fj
dGl2aXR5VHJhY2tlcjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcAppbmRleCAxNDM5NjI0Yjc5MjhkMmJlMjFhZTcwM2E4MGFhMzkyMGY1OTBiMmQwLi45ZDI1
NjdhYTJmNTA4Mjg4MjY2MGJkNDBkOTYzNWE5ZTQ5Njk5MGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBA
IHZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oU3RyaW5n
JiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTZXNzaW9uOjpmaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU2Vzc2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KQogewogI2lmIEhBVkUoQ0ZORVRXT1JL
X0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKICAgICBpZiAoIWRlY2x0eXBlKG1fZmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMpOjppc1ZhbGlkS2V5KGZpcnN0UGFydHlIb3N0KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCAxNzU0
MGQ0NTU0ZmU1YzkzYTMxMDIwYTZmZWNhNzg4ZGQ3NWEwMGE0Li43YWYzZjM2ZjFlNjFjNGMyYjIz
NThlN2Q2ZjhmN2UzN2I5ZTczMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMDcsOSArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAg
dm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFN0cmluZyYmIGZpcnN0UGFydHlIb3N0
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluKTsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBmaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eUhvc3QpOwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikgeyBtX3RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEZNb3ZlKGRvbWFpbik7IH07Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB0aGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nOyB9CiAgICAgdm9pZCByZXNldENOQU1FRG9tYWluRGF0YSgpOwog
ICAgIHZvaWQgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0K
ICAgICB2b2lkIHJlbW92ZVByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIqIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRp
b25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Np
b24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnM7Ci0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdoaWxl
UmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZmOGFjMzk2ODI4ZjE4ZmY5MDE4MmQx
YmNmZDUyMjA3YzQyYTMzZDMuLjgyNGMwNjVmYTBmODFhNzYzMWZhZDUyNTRmODc2YjZhMGU2ZjRj
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04OSwxOSArODksMTkg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzOwogfQogCi1PcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKICAgICBkZWNvZGVy
ID4+IHNlc3Npb25JRDsKICAgICBpZiAoIXNlc3Npb25JRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAgIGlmICghYm91
bmRJbnRlcmZhY2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPEFsbG93c0NlbGx1bGFyQWNjZXNzPiBhbGxvd3NDZWxsdWxhckFjY2Vz
czsKKyAgICBzdGQ6Om9wdGlvbmFsPEFsbG93c0NlbGx1bGFyQWNjZXNzPiBhbGxvd3NDZWxsdWxh
ckFjY2VzczsKICAgICBkZWNvZGVyID4+IGFsbG93c0NlbGx1bGFyQWNjZXNzOwogICAgIGlmICgh
YWxsb3dzQ2VsbHVsYXJBY2Nlc3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
MTEsMTg0ICsxMTEsMTg0IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwcm94eUNvbmZpZ3VyYXRpb24pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBz
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAgICAgaWYgKCFhdHRy
aWJ1dGVkQnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxib29sPiBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uOwogICAgIGRlY29k
ZXIgPj4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247CiAgICAgaWYgKCFzaG91bGRMb2dDb29r
aWVJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFVSTD4gaHR0cFByb3h5OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBodHRwUHJveHk7CiAg
ICAgZGVjb2RlciA+PiBodHRwUHJveHk7CiAgICAgaWYgKCFodHRwUHJveHkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+IGh0dHBzUHJveHk7CisgICAg
c3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzUHJveHk7CiAgICAgZGVjb2RlciA+PiBodHRwc1Byb3h5
OwogICAgIGlmICghaHR0cHNQcm94eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBPcHRp
b25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4g
YWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNl
RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBodHRwM0VuYWJsZWQ7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBodHRwM0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBo
dHRwM0VuYWJsZWQ7CiAgICAgaWYgKCFodHRwM0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5Owog
ICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFoc3RzU3RvcmFn
ZURpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNp
ZiBVU0UoU09VUCkKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQ
YXRoOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGlm
ICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8U291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZT4gY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U291cENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZT4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIGRl
Y29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIGlmICghY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAg
ICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGlm
ICghcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZVRMU0Vycm9yczsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZVRMU0Vycm9yczsKICAgICBkZWNvZGVyID4+IGlnbm9y
ZVRMU0Vycm9yczsKICAgICBpZiAoIWlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0
aW5ncz4gcHJveHlTZXR0aW5nczsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3
b3JrUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0
dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0
b3JhZ2VGaWxlOwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5
U2V0dGluZ3M+IHByb3h5U2V0dGluZ3M7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDdXJs
UHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGlu
Z3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGRl
Y29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGlmICghbmV0d29ya0NhY2hlRGly
ZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
OwogICAgIGRlY29kZXIgPj4gZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAg
ICAgaWYgKCFkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGFsbExvYWRzQmxvY2tlZEJ5
RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JU
ZXN0aW5nOwogICAgIGRlY29kZXIgPj4gYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKICAgICBpZiAoIWFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiAg
ICAgZGVjb2RlciA+PiBkYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGlmICghZGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxib29sPiBmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOwog
ICAgIGRlY29kZXIgPj4gZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgaWYg
KCFmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsK
ICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKICAgICBpZiAo
IXNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAg
ICBkZWNvZGVyID4+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAgICBpZiAoIXN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0ZXN0U3BlZWRNdWx0aXBsaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRlc3RTcGVlZE11bHRpcGxpZXI7CiAgICAgZGVjb2RlciA+PiB0ZXN0
U3BlZWRNdWx0aXBsaWVyOwogICAgIGlmICghdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBzdXBwcmVzc2Vz
Q29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAg
ZGVjb2RlciA+PiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7
CiAgICAgaWYgKCFzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2Up
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxv
d3NTZXJ2ZXJQcmVjb25uZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWxsb3dzU2VydmVy
UHJlY29ubmVjdDsKICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAg
aWYgKCFhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5l
Y3Rpb247CiAgICAgZGVjb2RlciA+PiByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9u
OwogICAgIGlmICghcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBwcmV2ZW50c1N5
c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJl
dmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHByZXZl
bnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247CiAgICAgaWYgKCFwcmV2ZW50c1N5c3Rl
bUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNr
aW5nUGVybWlzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENy
b3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBkZWNvZGVyID4+IGFwcEhhc1JlcXVl
c3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBpZiAoIWFwcEhhc1JlcXVl
c3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHVzZU5ldHdvcmtMb2FkZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiB1c2VOZXR3b3JrTG9hZGVyOwogICAgIGRlY29kZXIgPj4gdXNlTmV0
d29ya0xvYWRlcjsKICAgICBpZiAoIXVzZU5ldHdvcmtMb2FkZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IGE2OGJiNTMwNzdhMjkwYTBiMjAwNjFkMGZiODc0M2JkZmVjMGFkMTIuLjY2YjFlNDg4MDJhYjE1
NmUyOWEzNDgxY2NmZDE2OWVlODQ0MGUyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKQEAgLTUxLDcgKzUxLDcgQEAgZW51bSBjbGFzcyBBbGxvd3NDZWxsdWxhckFjY2VzcyA6IGJv
b2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKICAgICAKICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQgeyBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIH07CiAgICAg
U3RyaW5nIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCBkYTQwNWQ5YTU5YWVj
ODExMTQwZjlkNTA5MTIxNmNlMzdjOTU3MmMxLi4xZTdiMmNlMTkyZTNhODMwYTk3Y2Y5OTVmMWE0
ODFhZWJiYjIzOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpPcGVuIH07CiAgICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRp
bWVyOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8
dW5zaWduZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xvc2VJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+PiBtX2Nsb3NlSW5mbzsKICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA0
OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2NjMzNlMzhjMTRkLi4xNWE5OWVjZTM0YWMxNjAz
NGQ2YmJjOGU0N2MyODllMzhiNmM5MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIHVpbnQ2NF90IGlkZW4KICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpzZW5kSGFuZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
T3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5
LCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFu
ZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxkUHJveHksIHVpbnQ2
NF90IGlkZW50aWZpZXIpCiB7CiAgICAgbV9pbXBsLT5wbGF0Zm9ybVNlbmRIYW5kc2hha2UoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBoZWFkZXJGaWVsZFByb3h5LCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyXSAoYm9vbCBzdWNjZXNzLCBib29sIGRp
ZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0
U3RyZWFtOjpEaWRTZW5kSGFuZHNoYWtlKGlkZW50aWZpZXIsIHN1Y2Nlc3MsIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNzM0MjlhMDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5
ZmIyMDZmYS4uNjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2UwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB2b2lkIHNlbmREYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHNlbmRIYW5kc2hha2Uo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgdWludDY0X3QpOworICAgIHZvaWQgc2VuZEhhbmRz
aGFrZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIHVpbnQ2NF90KTsKICAgICB2b2lk
IGNsb3NlKCk7CiAgICAgCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0ubWVzc2FnZXMuaW4KaW5kZXggMDA5NTYyYmE1MDI4NWU4YzhjMzNmZDZiODEyZTkxYWM1MDI3
NjJlNC4uMDJlODUxOGIwMWIwMzBmNmViYzdkNjZmMDFlYTI1MDYxMGNhYWU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5tZXNzYWdlcy5pbgpAQCAtMjIsNiArMjIsNiBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3Jr
U29ja2V0U3RyZWFtIHsKICAgICBTZW5kRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgdWlu
dDY0X3QgaWRlbnRpZmllcikKLSAgICBTZW5kSGFuZHNoYWtlKElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBPcHRpb25hbDxXZWJDb3JlOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gaGVh
ZGVyRmllbGRQcm94eSwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBTZW5kSGFuZHNoYWtlKElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5PiBoZWFkZXJGaWVsZFByb3h5LCB1aW50NjRfdCBpZGVudGlmaWVy
KQogICAgIENsb3NlKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA4N2Yx
Mzc0Y2FhNmY1NDgwYjBmMWVjYTk5ZWQyMjg3NTgwMTc3NjRjLi5jYzg3NWExNzhmYmE3Y2FhYzkx
ZTYzNmUyNmE4YzJmODQwNTJhZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBA
IC0zODgsOCArMzg4LDggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZp
cmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygpCiAgICAgICAgIGJvb2wgaGFzU2VudEF0dHJp
YnV0aW9uID0gZmFsc2U7CiAKICAgICAgICAgZm9yIChhdXRvJiBhdHRyaWJ1dGlvbiA6IGF0dHJp
YnV0aW9ucykgewotICAgICAgICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRv
U2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuZWFybGllc3RUaW1lVG9TZW5kKCk7Ci0g
ICAgICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludD4gYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCA9IGF0dHJp
YnV0aW9uLnRpbWVzVG9TZW5kKCkuYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCgpOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmli
dXRpb24udGltZXNUb1NlbmQoKS5lYXJsaWVzdFRpbWVUb1NlbmQoKTsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgPSBhdHRyaWJ1dGlvbi50
aW1lc1RvU2VuZCgpLmF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKTsKIAogICAgICAgICAgICAg
aWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQgfHwgIWF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5oCmluZGV4IGRhNDE1N2JmODZhYTRkNmUwMmFmOTZmZTkzMTQxZTY4ZjkxYWVjOTguLjM5
MWRmNjNhNjIwNTk1NDlmMGM5ODU1NDNjMGNmNGQ3YjNlNGY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuaApAQCAtODIsOCArODIsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lcjsKICAgICBib29sIG1faXNS
dW5uaW5nVGVzdCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxVUkw+IG1fdG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmc7CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAgICBS
ZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFVSTCBhdHRy
aWJ1dGlvblJlcG9ydEF0dHJpYnV0ZU9uVVJMOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxBdHRy
aWJ1dGlvblJlcG9ydFRlc3RDb25maWc+IG1fYXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0
aW9uUmVwb3J0VGVzdENvbmZpZzsKIAogICAgIHN0cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9u
VmFsdWVzIHsKICAgICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbjsKQEAgLTEwMyw3ICsxMDMs
NyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcga2V5SUQ7CiAgICAgfTsKIAotICAgIE9wdGlv
bmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1
ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzsKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZjNjYzY3MDMyMmMwZWVkZDA3ZTNlODcxY2ZiYjFiZjdiY2ZjOWFhNi4uMmNkYTk5NWRlY2Zm
ZmYyZmMxNmU3YjczZWZjOTg3MjM4ZjA1OTAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZl
dGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgY2FjaGVQb2xpY3kp
KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0
YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYgc2Vy
dmljZVdvcmtlckRhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpVcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShpZGVudGlmaWVyLCBzdGF0ZSwgc2VydmljZVdv
cmtlckRhdGEpKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2so
TgogICAgIGlmICghc2VydmVyKCkuY2FuSGFuZGxlU2NoZW1lKGxvYWRlci5vcmlnaW5hbFJlcXVl
c3QoKS51cmwoKS5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBP
cHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI7CiAgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5tb2RlID09IEZldGNoT3B0
aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBsb2FkZXIu
cGFyYW1ldGVycygpLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiA/IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVVSTChyZXF1ZXN0LnVybCgpKSA6IGxvYWRlci5wYXJhbWV0ZXJzKCkudG9wT3JpZ2luLT5k
YXRhKCk7CiAgICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGRvUmVnaXN0cmF0aW9uTWF0Y2hp
bmcodG9wT3JpZ2luLCByZXF1ZXN0LnVybCgpKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZAogICAgIGlmICghZGVzdGluYXRpb25Xb3JrZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGE+IHNvdXJjZURh
dGE7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhPiBzb3VyY2VE
YXRhOwogICAgIFdURjo6c3dpdGNoT24oc291cmNlSWRlbnRpZmllciwgWyZdKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKICAgICAgICAgaWYgKGF1dG8qIHNvdXJjZVdvcmtl
ciA9IHNlcnZlcigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikpCiAgICAgICAgICAgICBzb3VyY2VE
YXRhID0gU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSB7IHNvdXJjZVdvcmtlci0+ZGF0YSgpIH07
CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lz
dHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZEdldFJlZ2lzdHJhdGlvbnMgeyByZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25zIH0pOwogfQogCi12
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBk
YXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYm
IHVzZXJBZ2VudCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBTdHJpbmcmJiB1c2VyQWdlbnQpCiB7CiAgICAgYXV0byBjb250ZXh0T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRhdGEudXJsKTsKICAgICBib29sIGlzTmV3
T3JpZ2luID0gV1RGOjphbGxPZihtX2NsaWVudE9yaWdpbnMudmFsdWVzKCksIFsmY29udGV4dE9y
aWdpbl0oYXV0byYgb3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMjA5NWFmZDA3ZDgyY2Q3YmM0OTBmNjFmNGQyNDlkYThkYTRhMzAxMy4uMjY0ZTViMzA0
MzhlZDE2ZDBkMWQyMGIyMzdlMzkzNTY2MTk2ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzb2x2
ZVJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNv
cmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5y
ZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNo
ZSkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJEYXRhPiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNs
aWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlV29ya2Vy
U3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1lKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkgZmluYWw7CkBAIC0xMDMsNyArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lz
dHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CiAgICAgdm9pZCBnZXRS
ZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
T3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0
cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAgIHZv
aWQgdGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHdoZW5TZXJ2aWNl
V29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDRjMTg2Mzc3ZjhlNWZlMmYw
M2IxMzQwMmE5YjM5MDYwMWUzM2I1OTAuLjFjOTQ2YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMy
NTlhYWU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3Qgc2Vy
dmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBVUkwgY2xpZW50VVJMKQogICAgIFdoZW5SZWdp
c3RyYXRpb25SZWFkeSh1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVS
TCBjbGllbnRVUkwpCiAgICAgR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBzZXJ2aWNlUmVnaXN0
cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNvbnRyb2xsaW5nU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyB1c2VyQWdlbnQpCisgICAg
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgdG9wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEg
ZGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4gY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
U3RyaW5nIHVzZXJBZ2VudCkKICAgICBVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChzdHJ1
Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKIAog
ICAgIFRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgd29ya2VySWRlbnRpZmllcikgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggODRkN2I0NjlhNzNlNzE4
MDc5MmZlYjNmN2VkZDZmNmUxZGNlMDc1ZC4uM2ZhMGU5OTcwZjI1NTVjYzgwNGI5Mjc0YjBmN2Vk
ZDE5NTcyNTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAot
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQordm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJD
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpbmRD
bGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFz
U2VjdXJpdHlFcnJvciB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBkODk4NmFhNjc4MGQ0NmExNjRmZGFlNzVhZjZlYWFjYmQy
YzEyZGNmLi5iMDExNGQyZjhkNzYxMTdiZDk2MDg5NjU5NjA5M2Q0NTg3YWEwMWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC05MSw3
ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwotICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAg
ICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKICAg
ICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCBkOGQ5NDM0MDg0NWRkODViMzZkYzg5MjlhYjFlNjI3MTg4OTMyODlhLi41NTJjYWU1
ZTIyNDQyNDJkZjUwMzJhMDI4NmYwZmJhZTk5MjQ2NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTI1LDE2ICsyNSwxNiBAQAogbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIE5vdFJlZkNvdW50ZWQgewogICAgICMgV2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMg
Y2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGJ5IFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbgogCi0gICAgU2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFN0cmluZyBtZXNzYWdlKQotICAgIFNjcmlwdENvbnRleHRTdGFydGVkKE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGRvZXNIYW5kbGVGZXRjaCkKLSAgICBEaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpCisgICAgU2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpCisgICAgU2NyaXB0Q29udGV4dFN0YXJ0ZWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRh
dGFJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCisgICAgRGlkRmluaXNoSW5zdGFs
bChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4g
am9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiAgICAgRGlkRmluaXNoQWN0
aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IFNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKICAgICBTa2lwV2Fp
dGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBB
c3luYwogICAgIFdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zIG9wdGlvbnMpOwotICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4gcmVzdWx0KSBBc3luYworICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVS
TCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3Jp
cHQpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFy
dEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAppbmRleCBiYjEyZjM0MjgxNmUyMjcwMzAyZjFkNTE0
YjMxZGU4NGE5ZDA5M2E2Li5hYTA1YzU5OWNjNTQzZWJkZWY1ZjY5OGZlMGExMzE0Y2JlOGU1NzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKICAgICBj
b25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlcyB7IDAgfTsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2RhdGFiYXNlU2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX2RhdGFiYXNlU2l6ZTsKIAogICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jbGVhclN0YXRlbWVudDsK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0U3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
CmluZGV4IDNiNmI0MWQxNjUyNzQ0MWNkODM0ZWEzNWRhMTg0YzI4ZWJhMzQ4NjEuLjg2YTVlZGU0
YjM2ODhkYjI2MzYzNDFmMmRkZGNhZGYyZTFiODczNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgT3JpZ2luRGV0YWlscyB7CiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOwot
ICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lOwotICAgICAgICBPcHRpb25h
bDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gY3JlYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2Rp
ZmljYXRpb25UaW1lOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPE9yaWdpbkRldGFpbHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE9yaWdpbkRldGFpbHM+
IGRlY29kZShEZWNvZGVyJik7CiAKICAgICAgICAgT3JpZ2luRGV0YWlscyBpc29sYXRlZENvcHko
KSBjb25zdCB7IHJldHVybiB7IG9yaWdpbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNyZWF0
aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9CiAgICAgfTsKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlsczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmln
aW5JZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IDYxMzM1YTc5M2UzNTY4YTNiNWRmZThj
YjU5MDJkNjgxMTAwOTQ3YWMuLjhjNTNmNjY1N2JhMzllMmZkNDIzYTFlNWQ2OTZhZWYzMDVmNzhi
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6
OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlv
biwgU3RvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHN0b3Jh
Z2VBcmVhSW1wbElEKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2lu
KCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBvcHRpb25hbFN0b3JhZ2VB
cmVhSW1wbElEID0gKml0ID09IHNvdXJjZUNvbm5lY3Rpb24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
c3RvcmFnZUFyZWFJbXBsSUQpIDogc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSAq
aXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdG9yYWdlQXJlYUlt
cGxJRCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRp
Zmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xh
dGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcg
PSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSBX
VEZNb3ZlKG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQpXSB7CiAgICAgICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCA3MGE2NWE0YmE2OGY3NzI1YjkwZjUyZjRkN2E5
YzU1ZmQ5NmJjZmVkLi40MjQzZjMyNTczYmRhZDE0NTIxMDdmNTVjODIzMjg5NjFjZDViMGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAotdXNpbmcgQ29ubmVjdFRvU3RvcmFnZUFy
ZWFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8U3RvcmFn
ZUFyZWFJZGVudGlmaWVyPiYpPjsKK3VzaW5nIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyPiYpPjsKIHVzaW5nIEdldFZhbHVlc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPjsKIHVzaW5nIEdldE9yaWdp
bnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiYpPjsKIHVzaW5nIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
T3JpZ2luRGV0YWlscz4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2Vz
LmluCmluZGV4IDRlYjljYmM5YmJiZmYyYTAwZDEyN2M2YTJmYWZkNWRlM2U0YWY3OGMuLjZkMDZj
MWQyZGQ3M2RlNTcxZWNhOTZmMDkwYzUwODZhODZjN2NkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KQEAgLTIxLDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXJTZXQgewotICAgIENvbm5lY3RUb0xvY2FsU3Rv
cmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0gICAgQ29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5h
bWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2Vj
dXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
PiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb25uZWN0
VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChPcHRpb25hbDxX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFn
ZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXI+IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5l
Y3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0
YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEp
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdl
QXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9u
U3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFn
ZUFyZWFJZGVudGlmaWVyIHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgogICAgIEdldFZh
bHVlcyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBzdG9yYWdlQXJlYUlEKSAtPiAoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
ICAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFj
ZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFj
ZUlEKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKaW5kZXggNTlhZTQzM2RhNzA3NDFh
NzlmOGMzODE5ZGYzOWFkMTQ0ZGU1MDMzMC4uYWU1ODNhYzllODJjNDkwYmU0MzgzNzI1OTA1NmQ2
Y2ZiYTcyN2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBBc3lu
Y1JldmFsaWRhdGlvbjo6c3RhbGVXaGlsZVJldmFsaWRhdGVFbmRpbmcoKQogICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKFJlc3VsdDo6VGltZW91dCk7CiB9CiAKLUFzeW5jUmV2YWxpZGF0aW9u
OjpBc3luY1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnksIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYgaGFuZGxlcikKK0FzeW5jUmV2YWxpZGF0aW9uOjpBc3lu
Y1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5kbGVyKQogICAgIDogbV90aW1lcigqdGhpcywgJkFz
eW5jUmV2YWxpZGF0aW9uOjpzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuZGluZykKICAgICAsIG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaAppbmRleCBlODk3
NzEwYjY1ZTQ1ZThjODZiNTlhZDJkYjk3OWViY2ZiODAwNmY1Li5hY2Q2YjdhNmVlZTU3MDBmNTI5
YTg5MTg5ZmYxOWY3N2JmODNkNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0FzeW5jUmV2YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgVGltZW91dCwKICAgICAgICAgU3VjY2VzcywKICAgICB9OwotICAgIEFz
eW5jUmV2YWxpZGF0aW9uKENhY2hlJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiYmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzdWx0KT4mJik7CisgICAgQXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUmLCBjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOwog
ICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBjb25zdCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQoKSBj
b25zdCB7IHJldHVybiAqbV9sb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggY2Q2ODBmMDNk
ZjI2MTZlZTljYWEzZmVjYTVjZGE3OTQ0ODk5ZjQ0NS4uNTUwMTkwOTYzNzY0M2Q2MDdjM2E2MTMy
YmM4ZGNhMmViZDEwYTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
CiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGluaXRpYWxp
emUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8
RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDAyLDcgKzQwMiw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENhY2hlc0NhbGxiCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBjYWNoZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGNhY2hlc10oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIx
LDcgKzQyMSw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKCFjYWNoZS0+aXNPcGVuZWQoKSkgewotICAgICAgICBjYWNoZS0+b3BlbihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FjaGUtPm9wZW4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9w
dGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikg
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBFbmdp
bmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjwKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6
cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgRW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Zm9sZGVyUGF0CiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZm9yIChhdXRv
JiBmb2xkZXJQYXRoIDogZm9sZGVyUGF0aHMpIHsKLSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9y
aWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRl
clBhdGhdIChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBt
dXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9s
ZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgaWYgKGZvbGRlck9yaWdpbi0+dG9wT3JpZ2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmln
aW4tPmNsaWVudE9yaWdpbiAhPSBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA0NDA5ZTdiNDk2
YWI4Y2Y2NDZjOWEwZmZhZWRmNTczNGMwZmYxZTg4Li42ZDQ0ODgxMjc5ZDFiOTYyN2E5YTllN2E5
OWIwNWYzZGY2Y2FkMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKICAg
ICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAgICAgdm9pZCB3cml0
ZVNpemVGaWxlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPHVpbnQ2NF90PiByZWFkU2l6ZUZpbGUo
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlYWRT
aXplRmlsZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RQYXRoOyB9CiAgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0
JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7IH0KQEAgLTE1MCw3ICsxNTAs
NyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsK
ICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7
Ci0gICAgT3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3NhbHQ7CisgICAgc3RkOjpvcHRp
b25hbDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKICAgICBIYXNoTWFwPENhY2hlSWRlbnRp
ZmllciwgTG9ja0NvdW50PiBtX2NhY2hlTG9ja3M7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2s+IG1faW5pdGlhbGl6YXRpb25DYWxsYmFja3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjaz4gbV9wZW5kaW5nV3JpdGVDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCmluZGV4IDFmZWY1ZTYxNmQ3NWM3MDQ3NWNkM2Q3M2MzOTNlY2E5NzczMDhlMzYuLjY0
MDE2YjBjZTIwOTA4OWE5ODFiY2UyMjQ5Nzc4ZjgyYWQ2NDhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZTo6ZmluaXNo
T3BlbmluZyhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaywgT3B0aW9uYWw8RXJyb3I+JiYg
ZXJyb3IpCit2b2lkIENhY2hlOjpmaW5pc2hPcGVuaW5nKENvbXBsZXRpb25DYWxsYmFjayYmIGNh
bGxiYWNrLCBzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKQogewogICAgIFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJlY29yZEluZm9ybWF0aW9uPj4gcmVjb3JkczsKICAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogbV9yZWNvcmRzLnZhbHVlcygpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RXJyb3I+IG1fZXJyb3I7Cisg
ICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJvcjsKICAgICBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrIG1fY2FsbGJhY2s7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX3JlY29yZElkZW50aWZp
ZXJzOwogfTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1
aXJlZC51bnNhZmVHZXQoKSwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVy
ID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZC51bnNh
ZmVHZXQoKSwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVu
dGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYgZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VV
bmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ5OSw3
ICs0OTksNyBAQCB2b2lkIENhY2hlOjpyZW1vdmVGcm9tUmVjb3JkTGlzdChjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiByZWNvcmRJZGVudGlmaWVycykKIAogdm9pZCBDYWNoZTo6d3JpdGVSZWNvcmRU
b0Rpc2soY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBSZWNvcmQm
JiByZWNvcmQsIFJlZjxBc3luY2hyb25vdXNQdXRUYXNrQ291bnRlcj4mJiB0YXNrQ291bnRlciwg
dWludDY0X3QgcHJldmlvdXNSZWNvcmRTaXplKQogewotICAgIG1fY2FjaGVzLndyaXRlUmVjb3Jk
KCp0aGlzLCByZWNvcmRJbmZvcm1hdGlvbiwgV1RGTW92ZShyZWNvcmQpLCBwcmV2aW91c1JlY29y
ZFNpemUsIFt0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShPcHRpb25hbDxFcnJv
cj4mJiBlcnJvcikgeworICAgIG1fY2FjaGVzLndyaXRlUmVjb3JkKCp0aGlzLCByZWNvcmRJbmZv
cm1hdGlvbiwgV1RGTW92ZShyZWNvcmQpLCBwcmV2aW91c1JlY29yZFNpemUsIFt0YXNrQ291bnRl
ciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5zZXRFcnJvcihl
cnJvci52YWx1ZSgpKTsKICAgICB9KTsKQEAgLTU3Nyw5ICs1NzcsOSBAQCBTdG9yYWdlOjpSZWNv
cmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRp
b24sIGNvbnN0CiAgICAgcmV0dXJuIHsgcmVjb3JkSW5mb3JtYXRpb24ua2V5LCB7IH0sIGhlYWRl
ciwgYm9keSwgeyB9IH07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiBkZWNvZGVET01DYWNoZVJlY29yZChXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD4gZGVjb2RlRE9NQ2FjaGVSZWNvcmQoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXF1ZXN0
SGVhZGVyc0d1YXJkOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVx
dWVzdEhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAg
ICAgaWYgKCFyZXF1ZXN0SGVhZGVyc0d1YXJkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNTkyLDEyICs1OTIsMTIgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICBpZiAo
IUZldGNoT3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVudChkZWNvZGVyLCBvcHRpb25zKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHJlZmVy
cmVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiByZWZlcnJlcjsKICAgICBkZWNvZGVyID4+
IHJlZmVycmVyOwogICAgIGlmICghcmVmZXJyZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVzcG9uc2VIZWFk
ZXJzR3VhcmQ7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXNwb25z
ZUhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAg
IGlmICghcmVzcG9uc2VIZWFkZXJzR3VhcmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICBpZiAoIVJl
c291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVyLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlQm9k
eVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVzcG9uc2VCb2R5U2l6ZTsKICAg
ICBkZWNvZGVyID4+IHJlc3BvbnNlQm9keVNpemU7CiAgICAgaWYgKCFyZXNwb25zZUJvZHlTaXpl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjI4LDIxICs2MjgsMjEgQEAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNh
Y2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICB9fTsKIH0KIAotT3B0aW9uYWw8Q2FjaGU6OkRlY29k
ZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFnZTo6UmVjb3Jk
JiBzdG9yYWdlKQorc3RkOjpvcHRpb25hbDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRl
Y29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiB7CiAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2UuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZS5oZWFkZXIuc2l6ZSgpKTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9u
VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGltZTsKICAgICBkZWNv
ZGVyID4+IGluc2VydGlvblRpbWU7CiAgICAgaWYgKCFpbnNlcnRpb25UaW1lKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAg
aWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkID0gZGVjb2RlRE9NQ2FjaGVS
ZWNvcmQoZGVjb2Rlcik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiByZWNvcmQgPSBkZWNvZGVET01DYWNoZVJlY29yZChkZWNvZGVyKTsKICAgICBp
ZiAoIXJlY29yZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtNjUzLDcgKzY1
Myw3IEBAIE9wdGlvbmFsPENhY2hlOjpEZWNvZGVkUmVjb3JkPiBDYWNoZTo6ZGVjb2RlUmVjb3Jk
SGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYKICAgICB9fTsKIH0KIAotT3B0aW9uYWw8UmVj
b3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKK3N0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZVJlY29yZEhlYWRlcihzdG9yYWdlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDhmNzhkNzcwZGMzMDA2MjMyYTViOTA0MzM5
YzE0MTlmODlmMmExNTIuLmIyMGRjZjdiYzcwY2E2YzNmYjFkYjQ5MTQ1ZmRkZTU2MjU5NzcyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlzcG9zZSgpOwogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwog
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRl
Y29kZShjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShjb25z
dCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOwogICAgIHN0YXRpYyBOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OlJlY29yZCBlbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkJik7CiAKICAgICBzdHJ1Y3QgRGVjb2Rl
ZFJlY29yZCB7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qgc2l6
ZSB7IDAgfTsKICAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZCByZWNvcmQ7
CiAgICAgfTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3Jk
SGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IE5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7CiAKICAgICBib29sIGhhc1BlbmRpbmdPcGVu
aW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gIW1fcGVuZGluZ09wZW5pbmdDYWxsYmFja3Mu
aXNFbXB0eSgpOyB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVjb3Jk
SW5mb3JtYXRpb24gdG9SZWNvcmRJbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkJik7CiAKLSAgICB2b2lkIGZpbmlzaE9wZW5pbmcoV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmLCBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6RXJyb3I+JiYpOworICAgIHZvaWQgZmluaXNoT3BlbmluZyhXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmKTsKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkKGNvbnN0
IFJlY29yZEluZm9ybWF0aW9uJiwgUmVmPFJlYWRSZWNvcmRUYXNrQ291bnRlcj4mJik7CiAKICAg
ICB2b2lkIHJlYWRSZWNvcmRzTGlzdChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDg3NTUxNTNh
YzgzYTk0Yjk1MjJjYjNkZGU4NjI2MzRjMzdkYWY3OTkuLjFhNjgwMDYwZmUzNmJkMmExOGVkMzYy
ZWUyYjllMjJmMWE1NWU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkKICAgICBBU1NFUlQobV9wZW5kaW5nV3JpdGlu
Z0NhY2hlc1RvRGlza0NhbGxiYWNrcy5pc0VtcHR5KCkpOwogfQogCi12b2lkIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1
ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1
ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1
ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewpAQCAt
MTA1LDIxICsxMDUsMjEgQEAgdm9pZCBDYWNoZXM6OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50
T3JpZ2luLnByb3RvY29sOwogICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50T3JpZ2luLmhv
c3Q7CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucG9ydDsKLSAgICBtX2Vu
Z2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsg
ZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2VuZ2lu
ZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsgZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRh
dGEpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3Jp
Z2luKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBk
ZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIgPj4gdG9wT3Jp
Z2luOwogICAgIGlmICghdG9wT3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBjbGllbnRPcmlnaW47
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVudE9y
aWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdp
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lk
IENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgbV9zdG9yYWdlID0gc3RvcmFnZS5yZWxlYXNlTm9uTnVs
bCgpOwogICAgIG1fc3RvcmFnZS0+d3JpdGVXaXRob3V0V2FpdGluZygpOwogCi0gICAgc3RvcmVP
cmlnaW4oW3RoaXNdIChPcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgc3Rv
cmVPcmlnaW4oW3RoaXNdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNo
ZVN0b3JhZ2UsICJDYWNoZXM6OmluaXRpYWxpemUgZmFpbGVkIHN0b3Jpbmcgb3JpZ2luIHdpdGgg
ZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KCplcnJvcikpOwogCkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBDYWNoZXM6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGZpbmQo
bmFtZSkpIHsKLSAgICAgICAgY2FjaGUtPm9wZW4oW2NhY2hlSWRlbnRpZmllciA9IGNhY2hlLT5p
ZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9y
PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FjaGUtPm9wZW4oW2NhY2hlSWRlbnRpZmll
ciA9IGNhY2hlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0
ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFs
dWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IENhY2hlczo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyID0gbV9lbmdpbmUtPm5l
eHRDYWNoZUlkZW50aWZpZXIoKTsKICAgICBtX2NhY2hlcy5hcHBlbmQoQ2FjaGUgeyAqdGhpcywg
Y2FjaGVJZGVudGlmaWVyLCBDYWNoZTo6U3RhdGU6Ok9wZW4sIFN0cmluZyB7IG5hbWUgfSwgY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpIH0pOwogCi0gICAgd3JpdGVDYWNoZXNUb0Rpc2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oT3B0aW9uYWw8RXJy
b3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZUlkZW50aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+
JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhDYWNoZUlkZW50aWZpZXJPcGVy
YXRpb25SZXN1bHQgeyBjYWNoZUlkZW50aWZpZXIsICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBA
IC0zNTksNyArMzU5LDcgQEAgdm9pZCBDYWNoZXM6OnJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIG1fcmVtb3ZlZENhY2hl
cy5hcHBlbmQoV1RGTW92ZShtX2NhY2hlc1twb3NpdGlvbl0pKTsKICAgICBtX2NhY2hlcy5yZW1v
dmUocG9zaXRpb24pOwogCi0gICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGlkZW50aWZpZXJdKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxl
IHsKKyAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
aWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrKENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCB7IGlkZW50aWZpZXIs
ICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIGlubGlu
ZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3QgVmVjdG9yPENhY2hlPiYgY2FjaGVzKQogc3Rh
dGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4sIEVy
cm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhKQogewogICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBjb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBj
b3VudDsKICAgICBkZWNvZGVyID4+IGNvdW50OwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVhZERpc2spOwpAQCAtNDIwLDExICs0MjAsMTEg
QEAgc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW0KICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9yOjpSZWFkRGlzayk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
KmNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsK
ICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpSZWFkRGlzayk7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdW5pcXVlTmFtZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVuaXF1ZU5hbWU7CiAgICAgICAgIGRlY29kZXIg
Pj4gdW5pcXVlTmFtZTsKICAgICAgICAgaWYgKCF1bmlxdWVOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CkBAIC00OTMsNyArNDkzLDcgQEAg
dm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQogICAgIH0KIAogICAgIG1faXNXcml0aW5nQ2FjaGVzVG9EaXNrID0gdHJ1ZTsKLSAgICBt
X2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2Rl
Q2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9y
KSBtdXRhYmxlIHsKKyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZSht
X3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6
b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBtX2lzV3JpdGluZ0Nh
Y2hlc1RvRGlzayA9IGZhbHNlOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrIGZh
aWxlZCB3cml0aW5nIGNhY2hlcyB0byBkaXNrIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxp
bnQ+KCplcnJvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKaW5kZXggMDYwMWVlNmIyZDc0
ZWMxYmY4NzFiMTRlYmE5ZDFhMjU2ZTQ2OGRlNS4uN2ZmMjFjZTA0MTc5NTg3ZmM0ZmIxNTE5ZWM4
ZWEyYWUxZTg4MWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmLCBTdHJpbmcmJiByb290UGF0aCk7CiAgICAgfkNhY2hlcygpOwog
Ci0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYpOworICAgIHN0YXRpYyB2b2lkIHJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtR
dWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4mJik+JiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYpOwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVDYWNo
ZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsK
IAogICAgIHZvaWQgc3RvcmVPcmlnaW4oV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiByZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gcmVhZE9yaWdpbihjb25zdCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmKTsKIAogICAgIENhY2hlKiBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAg
ICAgdm9pZCBjbGVhclBlbmRpbmdXcml0aW5nQ2FjaGVzVG9EaXNrQ2FsbGJhY2tzKCk7CkBAIC0x
MTAsMTAgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2Fj
aGVzOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U+IG1fc3RvcmFnZTsKICAgICBI
YXNoTWFwPE5ldHdvcmtDYWNoZTo6S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4+IG1fdm9sYXRpbGVTdG9yYWdlOwotICAgIG11dGFibGUgT3B0aW9u
YWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3ZvbGF0aWxlU2FsdDsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3ZvbGF0aWxlU2FsdDsKICAgICBWZWN0b3I8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjaz4gbV9wZW5kaW5nSW5p
dGlhbGl6YXRpb25DYWxsYmFja3M7CiAgICAgYm9vbCBtX2lzV3JpdGluZ0NhY2hlc1RvRGlzayB7
IGZhbHNlIH07Ci0gICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+KT4+IG1fcGVuZGluZ1dyaXRpbmdDYWNoZXNUb0Rp
c2tDYWxsYmFja3M7CisgICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4pPj4gbV9wZW5kaW5nV3JpdGluZ0Nh
Y2hlc1RvRGlza0NhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggZjk4ZTNiZTE2OWM1MWEx
OGM5MDVlMTA3ZDk3MjE3MWFmMjUwMzhmZC4uNzk2OGI2YzM1OTRjZjkyMTQ5M2Q0M2E2OGYwMDU1
NGFmYjE0ZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVy
ZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAgICAgbV9jYWNoZXNMb2Nrcy5yZW1vdmUo
cmVmZXJlbmNlUmVzdWx0KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFcnJvcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5
UmVwcmVzZW50YXRpb24oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihtX2Nvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApp
bmRleCA1NjA2MGRiZDc2ZjU1YzFkZDE2YWVlMDYxYTNjOTc3ZDg1N2M2YzUxLi5kODRkMDUyYjIz
NTAxNzE3ZDRkZjUwNWQwNWE0ZmM4YjJiN2E5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmZXJlbmNl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4m
Jik+JiYpOwogICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24oIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCA1OTkyMDBhNjIwMGQxZWFiZThhMjYwNTJiN2EzOTMzMzEyOTUyZDA5Li41ZDIx
ZWVlMzA4MTBhMDU0ODdmMDdhM2UwMzgwYTFjZTNhN2YyNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiw2IEBAIG1l
c3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewogICAgIERlbGV0ZU1hdGNo
aW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucykg
LT4gKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgcmVz
dWx0KSBBc3luYwogICAgIFB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKSAtPiAoV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpIEFzeW5jCiAK
LSAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiBl
cnJvcikgQXN5bmMKKyAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6RXJyb3I+IGVycm9yKSBBc3luYwogICAgIEVuZ2luZVJlcHJlc2VudGF0aW9uKCkg
LT4gKFN0cmluZyByZXByZXNlbnRhdGlvbikgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmNzdmZDExMmEy
ZGEwYjJkZDhkNDY3YjNkNWUzODRmZTk0ZjA4ZGMwLi4xYTU2OGYyZDllNzFhNDU4ZGE1MDdlMGQ5
YTNlZDI3NzUxZmM1NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIGJvb2wg
Y2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBy
ZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVz
dGFtcCwgT3B0aW9uYWw8U2Vjb25kcz4gbWF4U3RhbGUpCitzdGF0aWMgVXNlRGVjaXNpb24gcmVz
cG9uc2VOZWVkc1JldmFsaWRhdGlvbihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3Rh
bXAsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNl
LmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1cm4gVXNlRGVjaXNp
b246OlZhbGlkYXRlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBib29sIGlubGluZSBjYW5S
ZXF1ZXN0VXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NUQUxFX1dISUxFX1JFVkFMSURB
VEUpCi12b2lkIENhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYg
a2V5LCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+JiYgZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQordm9pZCBDYWNoZTo6c3RhcnRBc3luY1JldmFsaWRhdGlvbklm
TmVlZGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmV0
d29ya0NhY2hlOjpLZXkmIGtleSwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiYmIGVudHJ5LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIG1fcGVuZGlu
Z0FzeW5jUmV2YWxpZGF0aW9ucy5lbnN1cmUoa2V5LCBbJl0gewogICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9uQnlQYWdlLmVuc3VyZShmcmFtZUlELCBb
XSB7CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBDYWNoZTo6YnJvd3NpbmdDb250ZXh0UmVtb3Zl
ZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3IKICNlbmRpZgog
fQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC01MDgsNyArNTA4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb24KICAgICByZXR1cm4gY2FjaGVFbnRyeTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgT3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VD
YXApCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgc3RvcmluZyBy
ZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
LCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5k
ZXggNjAxNjAzYzg5ZWJjNzkyZWUzYTc3YTZlNmFhMjVkMzc0MGIxNDg1OS4uNGJlYzBhYjUzOTQ1
MzY4YjJkYmY2Y2UxMTI3YTliZWU1MDFjNTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xNjUsOSArMTY1LDkgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKLSAgICB2b2lkIHJldHJpZXZlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
RnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1
Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVfUkVWQUxJREFURSkKLSAgICB2
b2lkIHN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4mJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPik7CisgICAgdm9pZCBzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmV0d29ya0NhY2hlOjpLZXkmLCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+JiYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAjZW5kaWYKIAogICAgIHZvaWQgYnJvd3Np
bmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBkdW1wRmlsZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIGRlbGV0
ZUR1bXBGaWxlKCk7CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9y
YWdlOwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcAppbmRleCAyY2RjNDIyZjMwOGZhMDBlNjY2NmVhODc1ZWRlZjZmYTViMDM2ZmNmLi5j
MjMwZmI0YmUwMzQ2NDk2NWE1OTU0Y2YyNzMwODYyZWYzNjAyZjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMu
Y3BwCkBAIC00MCwyMCArNDAsMjAgQEAgdm9pZCBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFw
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkhUVFAKICAgICB9CiB9
CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IENvZGVyPFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXA+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SFRUUEhlYWRlck1hcD4gQ29kZXI8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJzU2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJzU2l6ZTsKICAgICBkZWNvZGVyID4+
IGhlYWRlcnNTaXplOwogICAgIGlmICghaGVhZGVyc1NpemUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CiAgICAgZm9y
ICh1aW50NjRfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytpKSB7Ci0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZh
bHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUNvZGVycy5oCmluZGV4IDAwNWIxNTNlMmI3NDVmZDU1N2Y1ZDlhM2E4YzAzYmNlYzlm
NThlYTUuLjg5MjI2ZmE2ZGMxZWYwMTIzNTQ3MzJkMDQzNjg5ZGZiOWFmMjlkZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggNzU4ZTQ1YzQ2OGQ3
NGZjZmZmZTlhNTE5NjA5MmYwNjFjYTA0N2FkMi4uZmZhOTEwNGNkNWNkNjFhZjE2ZDRjYzA4MjJh
MDdkNzMyYjIwZjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTExOCwyMCArMTE4LDIwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJiBzdG9yYWdlCiAgICAgZW50cnktPm1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJl
c3BvbnNlKTsKICAgICBlbnRyeS0+bV9yZXNwb25zZS5zZXRTb3VyY2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUpOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFz
VmFyeWluZ1JlcXVlc3RIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzVmFyeWlu
Z1JlcXVlc3RIZWFkZXJzOwogICAgIGRlY29kZXIgPj4gaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJz
OwogICAgIGlmICghaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICgqaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzKSB7Ci0gICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RI
ZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogICAgICAgICBkZWNvZGVyID4+IHZhcnlp
bmdSZXF1ZXN0SGVhZGVyczsKICAgICAgICAgaWYgKCF2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZW50cnktPm1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzID0gV1RGTW92ZSgqdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNS
ZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVkaXJlY3Q7CiAgICAgaWYgKCFpc1JlZGlyZWN0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYgc3RvcmFnZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2Vjb25kcz4+IG1heEFnZUNhcDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4+IG1heEFnZUNhcDsKICAgICBkZWNvZGVyID4+IG1heEFn
ZUNhcDsKICAgICBpZiAoIW1heEFnZUNhcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmgKaW5kZXggMTNlNzA5MGIwNThhYzI1MmM0MTdlM2QyYWYyNTQ4OTQ0ODkwYTk3Yy4uZGVk
YTg2YTQ0YjYxODQ5ZDZkYmIzZDAxZDM0MjAxOTJlNzcyOTk2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Zhcnlp
bmdSZXF1ZXN0SGVhZGVyczsgfQogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdDsKLSAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiBy
ZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgc2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUoKSBjb25zdDsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCi0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVl
c3Q7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwpAQCAtOTUsNyArOTUsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RvcmFnZTo6UmVjb3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7
IH07CiAgICAgCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9tYXhBZ2VDYXA7CisgICAgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtX21heEFnZUNhcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5o
CmluZGV4IDFkMWVhZGEzYzM1OTQwZTY2ZTc1YTRlZjRhZDZjOGM4NjZjNDE3OTMuLjgzZmZjZjY5
NjRlNTU1NzEyZGU5NDQxMzQ3YTEzOGNkZjE3ODU4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaApA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIElPQ2hhbm5l
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJT0NoYW5uZWw+IHsKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBSZWFkLCBXcml0ZSwgQ3JlYXRlIH07Ci0gICAgc3RhdGljIFJl
ZjxJT0NoYW5uZWw+IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlLCBUeXBlIHR5cGUsIE9wdGlvbmFs
PFdvcmtRdWV1ZTo6UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFu
bmVsKGZpbGUsIHR5cGUsIHFvcykpOyB9CisgICAgc3RhdGljIFJlZjxJT0NoYW5uZWw+IG9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlLCBUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpR
T1M+IHFvcyA9IHsgfSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJT0NoYW5uZWwoZmlsZSwgdHlw
ZSwgcW9zKSk7IH0KIAogICAgIC8vIFVzaW5nIG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUg
cmVzdWx0IHRvIHRoZSBtYWluIHF1ZXVlLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIFdv
cmtRdWV1ZTo6bWFpbigpIGluc3RlYWQuCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+
SU9DaGFubmVsKCk7CiAKIHByaXZhdGU6Ci0gICAgSU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIElPQ2hhbm5lbDo6VHlwZSwgT3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+KTsKKyAgICBJ
T0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgSU9DaGFubmVsOjpUeXBlLCBzdGQ6Om9w
dGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7CiAKICNpZiBVU0UoR0xJQikKICAgICB2b2lkIHJlYWRT
eW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBXb3JrUXVldWUmLCBGdW5jdGlvbjx2
b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5t
bQppbmRleCA4OTc5YjE0MzQ0NGFkYzFiNTBmY2I4ZTZlOTE2OGY4NzQyZGZkOTFhLi5hNGU2ODZj
Y2E3NDFkMWFkYWQ3NDI4YTE2MTdlYzkxNjAzY2MxMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ29jb2EubW0KQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGxvbmcgZGlzcGF0Y2hRdWV1ZUlk
ZW50aWZpZXIoV29ya1F1ZXVlOjpRT1MgcW9zKQogICAgIH0KIH0KIAotSU9DaGFubmVsOjpJT0No
YW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVl
dWU6OlFPUz4gcW9zKQorSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPiBxb3MpCiAgICAgOiBt
X3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEN1cmwuY3BwCmluZGV4IDFiZDViZjc0Y2ZhZmQyMTA3OWQzMDVlZGI1MWUxODkzNTllMmVl
M2QuLjNiZjE2NjM1MTQ4YjRmYzQxMDRkZTdlMTBhNWYzNmE5MzA1MGQ1YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotSU9DaGFubmVsOjpJT0NoYW5uZWwoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVldWU6OlFPUz4p
CitJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+KQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQog
ICAgICwgbV90eXBlKHR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAppbmRl
eCBmNTQ2YjM4OGE4ZTdiZDBjOTYyM2I1ZDFlYTdjMmY4Mjg5YmQ5NTI2Li40NjFkODFhNGQ2MTI3
NGYxNDdjNTVkZmYwZWJmNzcwMTkwN2QxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xp
Yi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRp
YyBjb25zdCBzaXplX3QgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSA9IDQwOTY7CiAKLUlPQ2hhbm5l
bDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSwgT3B0aW9uYWw8
V29ya1F1ZXVlOjpRT1M+KQorSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPikKICAgICA6IG1f
cGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4IDU4
ZGQzZTczMzJjYjA5NzhhZDk2Y2I2ZGNiOWFjMGIwNjk1ZTg5N2QuLmY4ZjM0MTBkY2EwNWFhMTk0
MTZjYmM0ODUxNWZhMGVlMzRiY2NlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTE3Myw0MSArMTczLDQx
IEBAIHZvaWQgS2V5OjplbmNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fcGFydGl0aW9uSGFzaDsKIH0KIAotT3B0aW9uYWw8S2V5
PiBLZXk6OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxLZXk+IEtleTo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgS2V5IGtleTsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHBhcnRpdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGFydGl0aW9uOwogICAgIGRlY29kZXIgPj4g
cGFydGl0aW9uOwogICAgIGlmICghcGFydGl0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGtleS5tX3BhcnRpdGlvbiA9IFdURk1vdmUoKnBhcnRpdGlvbik7CiAKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGU7CiAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBrZXkubV90eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV9pZGVudGlmaWVyID0gV1RGTW92
ZSgqaWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHJhbmdlOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICgh
cmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fcmFuZ2UgPSBX
VEZNb3ZlKCpyYW5nZSk7CiAKLSAgICBPcHRpb25hbDxIYXNoVHlwZT4gaGFzaDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEhhc2hUeXBlPiBoYXNoOwogICAgIGRlY29kZXIgPj4gaGFzaDsKICAgICBpZiAo
IWhhc2gpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1faGFzaCA9IFdU
Rk1vdmUoKmhhc2gpOwogCi0gICAgT3B0aW9uYWw8SGFzaFR5cGU+IHBhcnRpdGlvbkhhc2g7Cisg
ICAgc3RkOjpvcHRpb25hbDxIYXNoVHlwZT4gcGFydGl0aW9uSGFzaDsKICAgICBkZWNvZGVyID4+
IHBhcnRpdGlvbkhhc2g7CiAgICAgaWYgKCFwYXJ0aXRpb25IYXNoKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggZjUxMTFiZTgzMzI1YTQxNGMyMTJhNWFiOGI0NDhm
OTAzZDJmYWFjNS4uYTEwYTE2MGQ1YTQ2OWU0NTJmZjNkNjc1MGRjNjFmOWZmN2NhODdlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVL
ZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUtleS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaGFzaEFzU3RyaW5nKG1fcGFydGl0aW9uSGFzaCk7
IH0KIAogICAgIHZvaWQgZW5jb2RlKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8S2V5PiBkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEtleT4gZGVjb2RlKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRl
eCA0Yjk4ZDVjMTRjMDhjMTE3YThhNjVjYzQxZjVmY2QxNzIzNGQ3MDk2Li40MDM3NGJhMDhmZTUx
ZGI0ZTQ2ZDNkZDRhODkzOTk4OTUzMGQ3NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxv
YWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUlELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiBjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFJldmFsaWRhdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCitTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZy
YW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
IDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQpAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdQogewogICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJTcGVjdWxhdGl2ZSByZWRpcmVjdCAlcyAtPiAlcyIs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gbWF4
QWdlQ2FwOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOwogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IG1fY2FjaGUtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9jYWNo
ZS0+c2Vzc2lvbklEKCkpKQogICAgICAgICBtYXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKaW5kZXggZGI1ZGRkYjhlNmZlNGQ1MWQyZWY5MDA4NWE0YjI0YjEzNmI5NGM5YS4uYzBlMWUx
NGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5h
bCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
Pik+OwotICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjpFbnRyeT4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV2YWxp
ZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgU3BlY3VsYXRpdmVMb2FkKENhY2hlJiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Piwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwog
CiAgICAgdmlydHVhbCB+U3BlY3VsYXRpdmVMb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IDk5NTU3ZGEyMjUyYWVlZWY4NjFiNzQ0
MzNiNWIwMTE3M2I2YWE1ODguLmUxYmRmNjlkNjU0NzUwMGUyZTNiNzAzODY4ZWUxM2ZkMTA3NDQ0
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUgRXhwaXJpbmdFbnRyeSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBlbnRyeSwgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZl
VmFsaWRhdGlvblJlcXVlc3QsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hl
ZEhhbmRsZXIpCisgICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRy
eSwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9u
UmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikK
ICAgICAgICAgOiBFeHBpcmluZ0VudHJ5KFdURk1vdmUobGlmZXRpbWVSZWFjaGVkSGFuZGxlcikp
CiAgICAgICAgICwgbV9lbnRyeShXVEZNb3ZlKGVudHJ5KSkKICAgICAgICAgLCBtX3NwZWN1bGF0
aXZlVmFsaWRhdGlvblJlcXVlc3QoV1RGTW92ZShzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0
KSkKQEAgLTE1MywxMiArMTUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bV9lbnRyeSk7CiAgICAgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYg
cmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0
aW9uUmVxdWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYg
cmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0
aW9uUmVxdWVzdDsgfQogICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+
IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291
cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OwogfTsKIAogY2xhc3Mg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlbmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtl
eSYgcmVzb3VyY2VLZXksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVn
aXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAg
IHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtNYWluUmVzb3VyY2VSZXNwb25zZUFzUmVjZWl2ZWQoKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBP
cHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKK3ZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKIHsKICAgICBBU1NFUlQoZW50
cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTQ1Miw3ICs0
NTIsNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVz
dHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25z
dCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgRW50cnkqIGVudHJ5LCBjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlELCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3Vi
cmVzb3VyY2VJbmZvLCBFbnRyeSogZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKG1fY2FjaGUuc2Vzc2lvbklEKCkpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291
cmNlSW5mbyYgc3ViCiAjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUlu
Zm8sIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRl
U3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKCFlbnRyeSB8fCBlbnRyeS0+bmVlZHNWYWxpZGF0
aW9uKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAgc3RhdGljIGJvb2wgY2FuUmV2YWxpZGF0ZShj
b25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgY29uc3QgRW50cnkqIGUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9h
ZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNl
SW5mbywgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3Vi
cmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5z
KGtleSkpCiAgICAgICAgIHJldHVybjsKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVz
b3VyY2VJbmZvJgogICAgIH0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0
YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwg
U3VicmVzb3VyY2VzRW50cnkmIGVudHJ5LCBib29sIHJlcXVlc3RJc0FwcEJvdW5kLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNFbnRyeSYgZW50
cnksIGJvb2wgcmVxdWVzdElzQXBwQm91bmQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZUluZm8gOiBlbnRyeS5zdWJyZXNvdXJjZXMoKSkgewogICAgICAgICBh
dXRvJiBrZXkgPSBzdWJyZXNvdXJjZUluZm8ua2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IGVmNzZhOWFiYmU2ZGM5ODVjN2M2MDZmZGVlNzU0
NmU1ZDdlNjU3ZWUuLjE0NjA4MzYxYWIyNmY3MGY5NGM0YWRjYjJmMzMzZTQ1YTU2NjFlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKENhY2hl
JiwgU3RvcmFnZSYpOwogICAgIH5TcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKCk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJj
ZUtleSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIHZv
aWQgcmVnaXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJRCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CkBAIC02MiwxNCArNjIsMTQgQEAg
cHJpdmF0ZToKICAgICBjbGFzcyBQcmVsb2FkZWRFbnRyeTsKIAogICAgIHN0YXRpYyBib29sIHNo
b3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2
b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0
aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3Qg
S2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBhZGRQcmVsb2FkZWRF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3Qg
U3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICB2b2lkIHJldHJpZXZlRW50cnlGcm9tU3Rv
cmFnZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIHZvaWQgcmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYs
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwotICAgIHZvaWQgcHJlY29ubmVjdEZvclN1YnJl
c291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIEVudHJ5KiwgY29uc3QgR2xvYmFsRnJhbWVJ
RCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCByZXZh
bGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25z
dCBTdWJyZXNvdXJjZUluZm8mLCBFbnRyeSosIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAgICAgYm9vbCBzYXRpc2Z5UGVu
ZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYsIEVudHJ5Kik7CiAgICAgdm9pZCByZXRyaWV2ZVN1YnJl
c291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgV1RGOjpGdW5jdGlvbjx2b2lkIChz
dGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4mJik7Ci0gICAgdm9pZCBzdGFydFNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNF
bnRyeSYsIGJvb2wsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAg
dm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBT
dWJyZXNvdXJjZXNFbnRyeSYsIGJvb2wsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+KTsKIAogICAgIHN0YXRpYyBib29sIGNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0
IFByZWxvYWRlZEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxS
ZXF1ZXN0KTsKICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVj
dWxhdGl2ZUxvYWQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggNzRjZGI3ZDEyNTQ3Nzg3ZDA0MWVhZGZjODg0
YWE1ODgwNDY4MmI2MC4uNDZlNTk1MjI5Y2Q4ZmE0YWM1Y2UwNTY4NGE3ZjY1YjMwNjAxYTM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC00NTcsNDkgKzQ1Nyw0OSBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVjb3JkTWV0YURhdGEoUmVjb3JkTWV0YURhdGEmIG1l
dGFEYXRhLCBjbwogICAgIGZpbGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZzdWNjZXNzXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7CiAgICAgICAgIAotICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICAgICAgZGVjb2RlciA+PiBjYWNoZVN0
b3JhZ2VWZXJzaW9uOwogICAgICAgICBpZiAoIWNhY2hlU3RvcmFnZVZlcnNpb24pCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb24g
PSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VWZXJzaW9uKTsKIAotICAgICAgICBPcHRpb25hbDxLZXk+
IGtleTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXk+IGtleTsKICAgICAgICAgZGVjb2RlciA+
PiBrZXk7CiAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBtZXRhRGF0YS5rZXkgPSBXVEZNb3ZlKCprZXkpOwogCi0gICAgICAgIE9wdGlvbmFsPFdh
bGxUaW1lPiB0aW1lU3RhbXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVT
dGFtcDsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lU3RhbXA7CiAgICAgICAgIGlmICghdGltZVN0
YW1wKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS50aW1lU3Rh
bXAgPSBXVEZNb3ZlKCp0aW1lU3RhbXApOwogCi0gICAgICAgIE9wdGlvbmFsPFNIQTE6OkRpZ2Vz
dD4gaGVhZGVySGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IGhlYWRl
ckhhc2g7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVySGFzaDsKICAgICAgICAgaWYgKCFoZWFk
ZXJIYXNoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5oZWFk
ZXJIYXNoID0gV1RGTW92ZSgqaGVhZGVySGFzaCk7CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGhlYWRlclNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlclNp
emU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVyU2l6ZTsKICAgICAgICAgaWYgKCFoZWFkZXJT
aXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5oZWFkZXJT
aXplID0gV1RGTW92ZSgqaGVhZGVyU2l6ZSk7CiAKLSAgICAgICAgT3B0aW9uYWw8U0hBMTo6RGln
ZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlI
YXNoOwogICAgICAgICBkZWNvZGVyID4+IGJvZHlIYXNoOwogICAgICAgICBpZiAoIWJvZHlIYXNo
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaCA9
IFdURk1vdmUoKmJvZHlIYXNoKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYm9keVNp
emU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJvZHlTaXplOwogICAgICAgICBk
ZWNvZGVyID4+IGJvZHlTaXplOwogICAgICAgICBpZiAoIWJvZHlTaXplKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5ib2R5U2l6ZSA9IFdURk1vdmUoKmJvZHlT
aXplKTsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0JvZHlJbmxpbmU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaXNCb2R5SW5saW5lOwogICAgICAgICBkZWNvZGVyID4+IGlzQm9k
eUlubGluZTsKICAgICAgICAgaWYgKCFpc0JvZHlJbmxpbmUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01ODksNyArNTg5LDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURh
dGEoY29uc3QgUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhKQogICAgIHJldHVybiBEYXRhKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotT3B0aW9uYWw8QmxvYlN0
b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYgd3Jp
dGVPcGVyYXRpb24pCitzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpz
dG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0aW9uKQogewogICAgIGF1
dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsK
IApAQCAtNjE0LDcgKzYxNCw3IEBAIE9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdl
OjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0CiAgICAgcmV0dXJu
IGJsb2I7CiB9CiAKLURhdGEgU3RvcmFnZTo6ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVj
b3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gYmxvYikKK0RhdGEgU3RvcmFnZTo6ZW5j
b2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdl
OjpCbG9iPiBibG9iKQogewogICAgIEFTU0VSVCghYmxvYiB8fCBieXRlc0VxdWFsKGJsb2IudmFs
dWUoKS5kYXRhLCByZWNvcmQuYm9keSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IGQyZjAwN2U4
MmJiNDA4OTU5ZWM0MDUyNjYwNGVjYzMzMTNkMTVjZmIuLjM4NWI1M2Y4ZWYwN2I3MGM1YjYwMjZm
Mjc2OWEyZjdmMDQ3MWQyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgV2FsbFRpbWUgdGltZVN0YW1wOwogICAgICAgICBEYXRhIGhlYWRlcjsK
ICAgICAgICAgRGF0YSBib2R5OwotICAgICAgICBPcHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlI
YXNoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gYm9keUhhc2g7CiAKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsKQEAgLTE0NCw4ICsxNDQsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoV3JpdGVPcGVyYXRpb24oV3JpdGVPcGVyYXRpb24m
LCBpbnQgZXJyb3IgPSAwKTsKIAogICAgIGJvb2wgc2hvdWxkU3RvcmVCb2R5QXNCbG9iKGNvbnN0
IERhdGEmIGJvZHlEYXRhKTsKLSAgICBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVC
b2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJik7Ci0gICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3Qg
UmVjb3JkJiwgT3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEJsb2JTdG9yYWdlOjpCbG9iPiBzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mKTsKKyAg
ICBEYXRhIGVuY29kZVJlY29yZChjb25zdCBSZWNvcmQmLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9y
YWdlOjpCbG9iPik7CiAgICAgdm9pZCByZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mLCBjb25zdCBE
YXRhJik7CiAKICAgICB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IGRm
NGYxNjgxMGY5MzE0YThhZGEzMDBkNDA4MTdkYzc1YTJiNmZkODUuLjRiNWUyZDg3YjdjZDQ2NmQ3
NTdmMDE3YTk1ODVjMWQxNzI4YmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuY3BwCkBAIC01MiwyOSArNTIsMjkgQEAgdm9pZCBTdWJyZXNvdXJjZUluZm86OmVuY29k
ZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgbV9wcmlvcml0eTsKIH0KIAotT3B0aW9uYWw8U3VicmVzb3VyY2VJbmZvPiBTdWJyZXNvdXJj
ZUluZm86OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IFN1YnJlc291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3VicmVzb3VyY2VJbmZvIGluZm87
CiAKLSAgICBPcHRpb25hbDxLZXk+IGtleTsKKyAgICBzdGQ6Om9wdGlvbmFsPEtleT4ga2V5Owog
ICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGluZm8ubV9rZXkgPSBXVEZNb3ZlKCprZXkpOwogCi0gICAgT3B0aW9uYWw8
V2FsbFRpbWU+IGxhc3RTZWVuOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGxhc3RTZWVu
OwogICAgIGRlY29kZXIgPj4gbGFzdFNlZW47CiAgICAgaWYgKCFsYXN0U2VlbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fbGFzdFNlZW4gPSBXVEZNb3ZlKCpsYXN0
U2Vlbik7CiAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gZmlyc3RTZWVuOworICAgIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IGZpcnN0U2VlbjsKICAgICBkZWNvZGVyID4+IGZpcnN0U2VlbjsKICAg
ICBpZiAoIWZpcnN0U2VlbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZv
Lm1fZmlyc3RTZWVuID0gV1RGTW92ZSgqZmlyc3RTZWVuKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGlzVHJhbnNpZW50OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAgICAg
ZGVjb2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsMjUgKzgzLDI1IEBAIE9wdGlvbmFsPFN1YnJlc291
cmNlSW5mbz4gU3VicmVzb3VyY2VJbmZvOjpkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYgZGVjCiAgICAgaWYgKGluZm8ubV9pc1RyYW5zaWVudCkKICAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZShpbmZvKSB9OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNTYW1lU2l0ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzU2FtZVNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1NhbWVTaXRlOwog
ICAgIGlmICghaXNTYW1lU2l0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
bmZvLm1faXNTYW1lU2l0ZSA9IFdURk1vdmUoKmlzU2FtZVNpdGUpOwogCi0gICAgT3B0aW9uYWw8
VVJMPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAg
ICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGluZm8ubV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFdURk1vdmUoKmZpcnN0UGFydHlG
b3JDb29raWVzKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IHJlcXVl
c3RIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gcmVx
dWVzdEhlYWRlcnM7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyczsKICAgICBpZiAoIXJl
cXVlc3RIZWFkZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9y
ZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJzKTsKIAotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICBkZWNvZGVy
ID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3JpdHkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0Vu
dHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdAogICAgIGF1
dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwog
CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFk
ZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7Ci0gICAgT3B0aW9uYWw8VmVj
dG9yPFN1YnJlc291cmNlSW5mbz4+IHN1YnJlc291cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxTdWJyZXNvdXJjZUluZm8+PiBzdWJyZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBzdWJy
ZXNvdXJjZXM7CiAgICAgaWYgKCFzdWJyZXNvdXJjZXMpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IDIzZTczNTBlOTU4ZDYx
NjRkMzdiZTAyYTEyOTQxMmI1YWI4NDkxOGMuLjYwYTQwNjNiMjM0NWQ5MjVlMmM3ODc4NDU5OTIw
ZTEwZjI3ODIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VJbmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFN1YnJlc291cmNlSW5mbz4gZGVjb2Rl
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
dWJyZXNvdXJjZUluZm8+IGRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJik7CiAKICAg
ICBTdWJyZXNvdXJjZUluZm8oKSA9IGRlZmF1bHQ7CiAgICAgU3VicmVzb3VyY2VJbmZvKGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnJlc291cmNl
SW5mbyogcHJldmlvdXNJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBkOTE4MTlmYzE0YzNk
NjVmOTkzOTE3YTRhM2U4OGJkMzZiMDljNmMxLi44NjkyODRjMzZlMTE1YTVlNTU0ZjQ1MmRmYmE1
OGRlZTcyNTAxMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVj
dCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBw
dWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorICAg
IHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNu
aWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
LCBwY21EYXRhQ2FycmllZCkpOwogICAgIH0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwg
TmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZv
ckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiYsIGJvb2wgc2hvdWxkQ29udGVu
dFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IDZhZWVhYTFmMGQxYzQ0YjQwY2Y0MDZhNjgxOWM0N2U5NWFhYmY5ZGMuLjU0Nzkw
YmRiOGZhYjgyYmM2MDEwZjE5OGE1MDU4ZTUyYTA1NTU2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVybiBzZXNz
aW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwogfQogCi1OZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0
d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RX
aXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdh
dGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lv
biwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRy
KHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBl
ckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCiAgICAgLCBt
X2ZyYW1lSUQoZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCBkNDJmNjYzZjVhZmIwMGE4
Mjc2NWVjNTI3YjAxZDVjZGI2ZjUxNmQ0Li4wYjY3MWMyOGEyNGJiM2ZhMGUwYWU1M2I1MWQzNWZj
YTdjZGJmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMTIsNyArMTEyLDcgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRh
KCkgY29uc3QKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAgICAgaWYg
KCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KTsKICAgICBpZiAoIWF1ZGl0VG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSYqYXVkaXRU
b2tlbiwgc2l6ZW9mKCphdWRpdFRva2VuKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAppbmRleCAzMGZlNTJm
Y2JhM2RjYmE1ZDFhZmZkODAwMWFkZjNjN2E3OWJjODEzLi4yNDlmMTBmMjEyODVlMDYzM2NhYTIx
ZDkxZWZjNDVjM2Y4MzMxZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtMTAxLDEyICsxMDEsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik7CiAgICAgYm9vbCBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uOyB9CiAgICAgCiAgICAgX05TSFNUU1N0b3JhZ2UgKmhzdHNTdG9yYWdlKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShPcHRpb25hbDxXYWxsVGltZT4s
IE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlTmV0d29ya1dl
YnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDcyNjE1YWM5Y2ZjNjdkNTg4Zjg3MWUz
N2E1NDM0OTU5OGJjMzc0YjAuLjg5NDk1ZmYzODU3MTRhOTI1MDgzN2NhZjAzM2EwYmY4YzczYjUx
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTY2LDcgKzY2LDcgQEAKICNkZWZpbmUgTkVUV09S
S19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiAjZGVmaW5lIE5FVFdPUktfU0VTU0lPTl9DT0NP
QV9BRERJVElPTlNfMgogI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzMK
LXZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURh
dGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KK3ZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4s
IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcigpOyB9CiAjZW5kaWYKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5r
LmgiCkBAIC0xMzU3LDcgKzEzNTcsNyBAQCBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25D
b2NvYTo6U2Vzc2lvblNldDo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1NlcwogICAgIHJl
dHVybiBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOwogfQogCi1TZXNzaW9uV3JhcHBlciYgTmV0
d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQorU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNl
c3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQogewogICAgIGF1dG8gc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluID8gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOwogICAgIGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdl
YkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9nbGliL0ROU0NhY2hlLmNwcAppbmRleCBhOGJlMmYzZDM1ZTBkZDcyYjI0MWM3ZTNkOTU2
NDE3MzljYmUwY2RkLi41OTA0MDBjOWM0YzVlZDAzYzI3MjVhOTQ3MjQyYzk0Y2QyZGVhZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgRE5TQ2FjaGU6OkROU0NhY2hlTWFwJiBETlNDYWNoZTo6bWFwRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgcmV0dXJuIG1fZG5zTWFwOwogfQogCi1PcHRpb25hbDxWZWN0b3I8
R1JlZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBo
b3N0LCBUeXBlIHR5cGUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVz
cz4+PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byYgbWFwID0gbWFwRm9yVHlw
ZSh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9E
TlNDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgK
aW5kZXggNWU3MDcyZGQwNWZmOWMxZjE0MDcwNDZiMjE1NmZiMjUzNjM5Njg0NS4uYjM2NjM3ZDg2
ZWI5OTljM2Y4MTM0MDJlODBmNzcwMmNiZTc2N2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IH5ETlNDYWNoZSgpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IERlZmF1bHQs
IElQdjRPbmx5LCBJUHY2T25seSB9OwotICAgIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0
QWRkcmVzcz4+PiBsb29rdXAoY29uc3QgQ1N0cmluZyYgaG9zdCwgVHlwZSA9IFR5cGU6OkRlZmF1
bHQpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IGxv
b2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBUeXBlID0gVHlwZTo6RGVmYXVsdCk7CiAgICAgdm9p
ZCB1cGRhdGUoY29uc3QgQ1N0cmluZyYgaG9zdCwgVmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNz
Pj4mJiwgVHlwZSA9IFR5cGU6OkRlZmF1bHQpOwogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGEyNGUyNzk5MWEzOWU0ZjQ2M2NkZjNhZTMzODA2ZTc3MDZhZDFlZDEu
LmYxMzYxZmQxMWU0ZGJlZWQzOTRmOTdkOTA0ODMxYzRhMzYxMjZjNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRTdHJlYW0pCiAgICAgZGlzcGF0
Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpk
aWRSZWFkRGF0YVVSTChPcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3VsdCkK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxE
YXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3VsdCkKIHsKICAgICBpZiAoZ19jYW5jZWxsYWJs
ZV9pc19jYW5jZWxsZWQobV9jYW5jZWxsYWJsZS5nZXQoKSkpIHsKICAgICAgICAgZGlkRmFpbChj
YW5jZWxsZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuaAppbmRleCA1ZGFk
OGJjMGZjMjI1YWQzOTJlZGIyN2I3ZDgwNTQ3NDY0MzRmZWNlLi5lZTk2ZTdkMDliZGRkMDFhOTI5
ODBmMTU0YTBkZTJmYjc1NDAzYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTE3NSw3ICsxNzUsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGVudW1lcmF0ZUZpbGVDaGlsZHJlbkNhbGxiYWNr
KEdGaWxlKiwgR0FzeW5jUmVzdWx0KiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogICAgIHZvaWQg
ZGlkUmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYpOwogCi0gICAgdm9pZCBkaWRSZWFk
RGF0YVVSTChPcHRpb25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmKTsKKyAg
ICB2b2lkIGRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29k
ZXI6OlJlc3VsdD4mJik7CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlE
OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwpAQCAtMTg4LDcgKzE4OCw3
IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxTb3VwTXVsdGlwYXJ0SW5wdXRTdHJlYW0+IG1fbXVs
dGlwYXJ0SW5wdXRTdHJlYW07CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+IG1fcGVuZGluZ1Jlc3VsdDsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiBtX3BlbmRpbmdEYXRhVVJMUmVz
dWx0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OlJlc3VsdD4g
bV9wZW5kaW5nRGF0YVVSTFJlc3VsdDsKICAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgbV9w
cm90ZWN0aW9uU3BhY2VGb3JQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBXZWJDb3JlOjpDcmVkZW50
aWFsIG1fY3JlZGVudGlhbEZvclBlcnNpc3RlbnRTdG9yYWdlOwogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2Rlci5oCmluZGV4IGQyOGEwMzFhODUzZTQ3OTAwNzk4ZDE5NzkwNDhhNGZkM2Fj
ZWM3ODcuLmNjYTBkNjUwNDIzNjJmZTgwMDhlMDRhZjVkODU2ZWM4YjA4MmE1NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
ciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRp
b25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhw
cihIYXNNb2Rlcm5EZWNvZGVyVjxUPikKICAgICAgICAgICAgIHJldHVybiBUOjpkZWNvZGUoZGVj
b2Rlcik7CkBAIC02Niw3ICs2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVn
YWN5RGVjb2RlclY8VD4pCiAgICAgICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFQ+IG9wdGlvbmFsID0gVDo6
ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBvcHRpb25hbCA9
IFQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFs
KTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
JnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBUIHJlc3VsdDsK
ICAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpKQpAQCAtMTAxLDkg
KzEwMSw5IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAgICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9V
bmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFQ+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAg
ICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPFQ+KCp2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oKnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2YTg1NmFlZmY0MzRmNDAzNjg2YjgxYjdk
NGE0OWMzNGYyYzhmYTIzLi43NDY0MjgxM2Y0NzgxOTZjMGM3OGNlYjc4N2UzNjZkYzI4ZGM5MjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC00OCw5ICs0OCw5IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8V2Fs
bFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2FsbFRpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2Rl
cjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorV0FSTl9VTlVTRURfUkVUVVJO
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxkb3VibGU+IHRpbWU7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHRpbWU7CiAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgIGlmICgh
dGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCB0
ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5n
dGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0
KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxs
b2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMg
YmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFp
bjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBpbmxp
bmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVp
bnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAotV0FSTl9VTlVTRURfUkVUVVJO
IE9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1l
bnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICB1aW50MzJf
dCBsZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQpAQCAtMTcxLDcgKzE3
MSw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYg
cmVzdWx0KQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJp
bmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8TW9ub3N0YXRlPjo6ZW5jb2RlKEVuY29kZXImLCBjb25zdCBNb25vc3RhdGUmKQog
ewogfQogCi1XQVJOX1VOVVNFRF9SRVRVUk4gT3B0aW9uYWw8TW9ub3N0YXRlPiBBcmd1bWVudENv
ZGVyPE1vbm9zdGF0ZT46OmRlY29kZShEZWNvZGVyJikKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6
Om9wdGlvbmFsPE1vbm9zdGF0ZT4gQXJndW1lbnRDb2RlcjxNb25vc3RhdGU+OjpkZWNvZGUoRGVj
b2RlciYpCiB7CiAgICAgcmV0dXJuIE1vbm9zdGF0ZSB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZmZlM2YyMzk5OTNlOTBhMTgwMGIxZjYxNTcwNTlh
YTIxZWUxOWZmOC4uOTI5MTM0MjFmODZkN2U1ZWVkODdlY2M4NGQ1ZDJiZDA1NWVmNzhhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg5LDcgKzE4OSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc1ZhbGlkKElkZW50
aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gTUFDSF9QT1JUX1ZBTElEKGlkZW50aWZpZXIucG9y
dCk7IH0KICAgICB4cGNfY29ubmVjdGlvbl90IHhwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3hwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBn
ZXRBdWRpdFRva2VuKCk7CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBnZXRBdWRp
dFRva2VuKCk7CiAgICAgcGlkX3QgcmVtb3RlUHJvY2Vzc0lEKCkgY29uc3Q7CiAjZWxpZiBPUyhX
SU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExFIElkZW50aWZpZXI7CkBAIC01NzksNyArNTc5LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8v
IERlY29kZSB0aGUgcmVwbHkuCi0gICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVu
dHM+IHJlcGx5QXJndW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlB
cmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAgICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1
bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA3ZWJjYWVmM2ZjMjM0MTVjNTQyOTFh
M2ZhNjZmZjY5ZTA0ZTZlNzc1Li41ZjRlMmE2YWEzYzRkNzM2MThkZGY0ZTkwMzA1ZTdmOTFhMTY3
MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC05NSw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxUPiBvcHRpb25hbDsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gb3B0aW9uYWw7CiAgICAgICAgICAgICAqdGhpcyA+PiBv
cHRpb25hbDsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWwpKSB7CiAgICAgICAg
ICAgICAgICAgbWFya0ludmFsaWQoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPFQ+JiB0KQorICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYg
dCkKICAgICB7CiAgICAgICAgIHVzaW5nIEltcGwgPSBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjsKICAgICAgICAgaWYg
Y29uc3RleHByKEhhc01vZGVybkRlY29kZXI8VCwgSW1wbD46OnZhbHVlKSB7CkBAIC0xNDAsOSAr
MTQwLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRy
dWU7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgT3B0aW9uYWw8VD4g
ZGVjb2RlU2luZ2xlT2JqZWN0KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9m
Qnl0ZXMpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlU2luZ2xlT2JqZWN0KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMpCiAgICAgewotICAgICAg
ICBPcHRpb25hbDxUPiByZXN1bHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gcmVzdWx0Owog
ICAgICAgICBEZWNvZGVyIGRlY29kZXIoc291cmNlLCBudW1iZXJPZkJ5dGVzLCBDb25zdHJ1Y3RX
aXRob3V0SGVhZGVyKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Rm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCBlYzY4ZGZhZGQ5YjdlNGQ3OGFkNzYzZmU2NTg2MTM1
OTQwMDgyMzU1Li5jMGQ0MzdhZTcxN2FiOTJjZGQzNGNhOWVlY2FmMDdiZWRiY2JhN2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTY3
LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8IHNhbmRib3hFeHRlbnNpb25I
YW5kbGVzOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxGb3JtRGF0YVJlZmVyZW5jZT4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9ybURh
dGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gaGFzRm9ybURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
Rm9ybURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzRm9ybURhdGE7CiAgICAgICAgIGlmICgh
aGFzRm9ybURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghZm9ybURhdGEpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGVzOwogICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzOwogICAgICAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAppbmRleCAzMTc0ZDQyYTljNTZiNDU0OTBlMTRiZWViNDI5NzYzZjdkMTNjMmIwLi4y
YWIwZmMyNjUzMWM3NzNmNTFkNmQyZDU1ODY4NGJkYTEzNmJiNmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0
IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29k
aW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3Rk
OjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5
cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtF
TFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IGhhbmRsZU1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9i
amVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0
eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25h
bDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3Vt
ZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3Vt
ZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIGhhbmRsZU1l
c3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+
CiBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJlcGx5RW5jb2RlciwgQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFs
PHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1l
bnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1l
bnRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgaGFu
ZGxlTWVzc2FnZVN5bmNocm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRj4KIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewotICAgIE9wdGlvbmFsPHR5
cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRz
OworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1
bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAg
aWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYs
NyArMTY2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGQKICAgICBpZiAoVU5MSUtFTFkoIWRl
Y29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0
aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBh
cmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTE4
MCwxMiArMTgwLDEyIEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVu
Y3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGxpc3RlbmVySUQ7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsKICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7
CiAgICAgaWYgKCFsaXN0ZW5lcklEKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50
czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJn
dW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAg
IGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERl
Y29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBN
RiBmdW5jdGlvbikKIHsKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwog
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SVBDU2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUu
aAppbmRleCAxNmQwNTY2MzQxMjQwOWNhODhkYTZiNGYyMTgyNDM0MDExMDZmZDhiLi5kMmY0ODM5
NGI0M2NhN2YxY2I5MjA4NmMyNjI1ZDUzYzM4YjYzYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU2Vt
YXBob3JlJiBvcGVyYXRvcj0oU2VtYXBob3JlJiYpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgdm9pZCBzaWduYWwoKTsKICAgICBib29sIHdhaXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKaW5kZXggMmRjZDk1YTdkYTY0ZmU1M2RlYmFlNTlh
ZWU3YzdlNmRlMTU4NTMyNi4uZWQxNjQ0MmNiOTY2ZjAzNDRiYjEwYzFmM2U5MDZiYjhiZTZjZWQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKQEAgLTExOCwx
OSArMTE4LDE5IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPCiBib29sIHB1dEpTVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRBdEluZGV4T3JBcnJheUJ1ZmZlcklmVW5kZWZpbmVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkpTQXJyYXkqLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlLCBj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBFbGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29k
ZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSVBDOjpEZWNvZGVyJiwgSlND
OjpKU0FycmF5Kiwgc2l6ZV90IGN1cnJlbnRJbmRleCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4q
KTsKK3N0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1l
bnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBJUEM6OkRlY29kZXImLCBKU0M6OkpTQXJy
YXkqLCBzaXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiopOwogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVj
b2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBKU0M6OkpTQXJyYXkqIGFycmF5LCBzaXplX3QgY3VycmVudElu
ZGV4LCBzdGQ6OnR1cGxlPD4qKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBw
dXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBKU0M6OkpTQXJyYXkqIGFycmF5LCBz
aXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxlPD4qKQogewogICAgIHJldHVybiBKU0M6OkpT
VmFsdWUgeyBhcnJheSB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBF
bGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3Vt
ZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgSlNDOjpKU0FycmF5KiBhcnJheSwgc2l6ZV90IGN1cnJlbnRJbmRleCwgc3Rk
Ojp0dXBsZTxULCBFbGVtZW50cy4uLj4qKQorc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1
dEpTVmFsdWVGb3JEZWNvZGVBcmd1bWVudEluQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIEpTQzo6SlNBcnJheSogYXJyYXksIHNp
emVfdCBjdXJyZW50SW5kZXgsIHN0ZDo6dHVwbGU8VCwgRWxlbWVudHMuLi4+KikKIHsKICAgICBh
dXRvIHN0YXJ0aW5nQnVmZmVyUG9zaXRpb24gPSBkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlv
bigpOwotICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7
CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
cHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgT3B0aW9uYWw8SlNDOjpKU1ZhbHVl
PiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEpTQzo6
SlNWYWx1ZT4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBhdXRvKiBhcnJh
eSA9IEpTQzo6Y29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUFyZ3VtZW50RGVzY3Jp
cHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMuaAppbmRleCA1YWJiODczMjY2ODY2NzU5ZWQ5ZjE4NDZlNGQxOGFhNmNjMDg0OWRl
Li42YjcwYTNhNzE4NGQyNjVmYjAxMGU3OWM3Mzg2MGFmMjZlMjQxMTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMuaApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgRGVjb2RlcjsK
IAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBNZXNzYWdlTmFtZSwgRGVjb2RlciYpOwotT3B0aW9uYWw8SlNDOjpKU1ZhbHVl
PiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCosIE1lc3NhZ2VO
YW1lLCBEZWNvZGVyJik7CitzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFy
Z3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTWVzc2FnZU5hbWUsIERlY29kZXImKTsKK3N0
ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIE1lc3NhZ2VOYW1lLCBEZWNvZGVyJik7CiAKIHN0cnVjdCBBcmd1bWVu
dERlc2NyaXB0aW9uIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwpAQCAtNTAsNyArNTAsNyBAQCBz
dHJ1Y3QgQXJndW1lbnREZXNjcmlwdGlvbiB7CiAgICAgYm9vbCBpc09wdGlvbmFsOwogfTsKIAot
T3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMoTWVzc2FnZU5hbWUpOwotT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRp
b24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSk7CitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zKE1lc3NhZ2VOYW1lKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSk7
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKaW5k
ZXggZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFhM2YxMmFkNzVjOWNjOC4uNWJmOWI5M2VmNDQy
YTNmZDgxZTA1MjU2ZmI4NmY2YjIyZDMxNWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIElQQyB7
CiAKIE1lc3NhZ2VTZW5kZXI6On5NZXNzYWdlU2VuZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIE1l
c3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBs
eUluZm8pCitib29sIE1lc3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmIGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggMGU1YWQzZDk0ODBmZWU5
MzA1NGJkMWNlNDU3ZDAyODM5OWM0ZmZmYS4uYmY2MWZhODc2NzliZDA3NjM3NTNiNDc5NzcwOWFi
MTQ4ODJmZWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVySUQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiA9IHN0ZDo6bnVsbG9wdCk7
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggMDYxNjAxZjcyMTAyOTM0NjBmMjk2NDQ4ZjNlNDE4MDhiM2U4
ZmRjNS4uODM0NmUzOWU4N2E0ZDA1ODI1M2ZlY2VhNjcxYzEzMmU0NzY5ZTFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc2VnbWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSwgMSk7CiB9CiAKLU9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJl
ZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IGYxYzE4ZDY0Mjc2ZTZhMzE5MDExYWNjNDEyYjE2ODExNjVlYzNmZDEuLmMzZjE4M2Iy
ZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlz
RW1wdHkoKSA6IHRydWU7IH0KIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKaW5kZXggZDgxZTU0
NmNiNjJiZmI1Y2EwNmE3YTAwYWM2MDhjNjljODRjZTIyYS4uM2UyYzI0YWM5NDc3ZTg0ZTBiYTM3
MTE0NjQ4MjdiYWFlOGUzOWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNzAsMTIgKzcwLDEyIEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBib29sIHRyeVNlbmRTdHJlYW0oVCYgbWVz
c2FnZSwgU3BhbiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8U2Vu
ZFN5bmNSZXN1bHQ+IHRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiwgVGltZW91dCwgU3BhbiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+
IHRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiwgVGltZW91
dCwgU3BhbiYpOwogICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0KTsKICAgICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJl
YW1NZXNzYWdlKFNwYW4mJik7CiAKLSAgICBPcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVv
dXQpOwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmVBbGwoVGltZW91dCk7CisgICAgc3Rk
OjpvcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVvdXQpOworICAgIHN0ZDo6b3B0aW9uYWw8
U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsKIAogICAgIGVudW0gY2xhc3MgV2FrZVVwU2Vy
dmVyIDogYm9vbCB7CiAgICAgICAgIE5vLApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciBtX2J1ZmZlcjsKLSAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3Jl
OworICAgIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBtX3dha2VVcFNlbWFwaG9yZTsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CkBAIC0xNTYsNyArMTU2LDcgQEAgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFN5bmMoVCYmIG1lc3MKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9wdGlvbmFs
PFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbShUJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYg
cmVwbHksIFRpbWVvdXQgdGltZW91dCwgU3BhbiYgc3BhbikKK3N0ZDo6b3B0aW9uYWw8U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwg
VGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQogewogICAgIC8vIEluIHRoaXMgZnVuY3Rpb24s
IFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2FsbGVyIHNob3Vs
ZCBzdG9wIHByb2Nlc3NpbmcuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0
IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgpA
QCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kCiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24ucHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQogICAgICAg
ICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9OwogCi0gICAgYXV0byByZXN1bHQgPSBbJl0oKSAt
PiBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4geworICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4g
c3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gewogICAgICAgICBTdHJlYW1Db25uZWN0aW9u
RW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUg
fTsKICAgICAgICAgaWYgKCEobWVzc2FnZUVuY29kZXIgPDwgc3luY1JlcXVlc3RJRCA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
ODgsNyArMTg4LDcgQEAgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmQKICAgICBtX2Nvbm5lY3Rpb24u
cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCk7CiAgICAgaWYgKHJlc3VsdCAm
JiAqcmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGRlY29kZXIgPSAqKnJlc3VsdDsKLSAgICAgICAg
T3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIFQ6OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3Vt
ZW50czsKICAgICAgICAgZGVjb2RlciA+PiByZXBseUFyZ3VtZW50czsKICAgICAgICAgaWYgKCFy
ZXBseUFyZ3VtZW50cykKICAgICAgICAgICAgIHJldHVybiBTZW5kU3luY1Jlc3VsdCB7IH07CkBA
IC0yMjMsNyArMjIzLDcgQEAgaW5saW5lIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4pCiAgICAgYXV0byByZXN1bHQg
PSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKICAgICBVTlVTRURfVkFSSUFCTEUocmVzdWx0KTsK
IH0KLWlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmUoVGltZW91dCB0aW1lb3V0KQogewogICAgIENsaWVudExpbWl0IGNs
aWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2Fj
cXVpcmUpOwogICAgIC8vIFRoaXMgd291bGQgbWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBh
ZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCkBAIC0yNTMsNyArMjUz
LDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1pbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbChUaW1lb3V0IHRpbWVvdXQpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKFRpbWVvdXQgdGltZW91dCkKIHsKICAgICAvLyBUaGlz
IHdvdWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBp
cyBhIHByb2dyYW1taW5nIGVycm9yLgogICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVk
LCB3ZSBvbmx5IGFzc2VydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKaW5kZXggMDIxMDJmODIyNmQ5Mzc0YTZkNjhhYjA3
MjNlOWVlYjk5MzE3YjcwNS4uZGM2NTU4NjYyNWRmYWE0NjQ4NTNmNjBjZDU5OThkZGI2YmQyYTcz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHAKQEAgLTc3LDEzICs3NywxMyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9j
bGllbnRXYWl0U2VtYXBob3JlOwogfQogCi1PcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVy
PiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXBjSGFu
ZGxlOwogICAgIGlmICghaXBjSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gc2VtYXBob3JlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vt
YXBob3JlPiBzZW1hcGhvcmU7CiAgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CiAgICAgaWYgKCFz
ZW1hcGhvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKaW5kZXggZTUyY2Fi
Mjk4OGRkOGIzOWZmMzM4MDVmNGQzNjliMWI1NGRlMTFiNy4uYmNjZWMwMTgyZDYwNjE3NDUxYTFm
MzY5ZDc4OWE5YTZiNmU3ODcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3Rk
OjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdU
YWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVudE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1Rh
ZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgogICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgY2xpZW50V2Fp
dFNlbWFwaG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDhkM2ZmYjQ3YTIwZWQ5ZmVjMjI0NmYxYTU2NmZm
NGMyYjQwMGZiNjcuLjY5NzEyMDk1ZDk2ZGQ3MzAyNTkyNTQ1ODI4Y2U1YzIyMTVmZTExNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjCiAgICAg
bV93b3JrUXVldWUud2FrZVVwKCk7CiB9CiAKLU9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCitz
dGQ6Om9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCiB7CiAgICAgU2VydmVyTGltaXQgc2VydmVy
TGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5n
VGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDM5ODRhMDc4NTI2NzkzNDEzZjIwMWU1MjUwNzFlNTZkOGY2MTc0MmQu
LjNhOGU3YTU2NWU4NDc3YTQ3MDNkZDY3OTFhNWE2MmI3MzVmM2QxODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1aW50OF90KiBkYXRhOwogICAgICAgICBz
aXplX3Qgc2l6ZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKICAgICBTcGFuIGFjcXVpcmVBbGwo
KTsKIAogICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDVlYzhm
ZjMzY2FkZjlkMmY0ZTYxZjZmYmFjZTJkN2RiZjE4YTU4MWUuLjEyZDg2MzJhOTZlMzM3ZGU1ZDUz
NTJiMTMxMmE3ODM5YmFiNjBmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTU5NSw3ICs1OTUsNyBAQCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAg
cmV0dXJuIElkZW50aWZpZXIobV9pc1NlcnZlciA/IG1fcmVjZWl2ZVBvcnQgOiBtX3NlbmRQb3J0
LCBtX3hwY0Nvbm5lY3Rpb24pOwogfQogCi1PcHRpb25hbDxhdWRpdF90b2tlbl90PiBDb25uZWN0
aW9uOjpnZXRBdWRpdFRva2VuKCkKK3N0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gQ29ubmVj
dGlvbjo6Z2V0QXVkaXRUb2tlbigpCiB7CiAgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCmluZGV4IGJjMDhmNjAxYTcx
NTAwN2U1YTcwNzcwYWI4NTM5ODZkMTU5ZTliYjcuLmU0MWE0OTJlZWJjYmJiMjE0YzdlZGY2NTIx
MGFmN2M3YTczZGU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rh
cndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCkBAIC05OCwxMiArOTgsMTIgQEAgdm9p
ZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgY3JlYXRlU2VuZFJpZ2h0KCk7CiB9CiAKLU9wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3Jl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1h
cGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hY2hTZW5kUmlnaHQgc2Vu
ZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8U2VtYXBob3JlPiB7IHN0ZDo6
aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdodCkgfTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9y
ZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVV
bml4LmNwcAppbmRleCBmYTZjOTM2ZmY4MmYwZDY1Y2ViOTdiZmFhZTI3ODhmOGRkODA0ODZiLi4z
YTg4ZmZjMmRmOTlkZWViZDEyNDI0M2Y5MDc3NWY3OTdjZWMxZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJikgY29uc3QKIHsKIH0K
IAotT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKK3N0ZDo6
b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKIHsKICAgICBy
ZXR1cm4gU2VtYXBob3JlIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKaW5kZXggYzllNjU2ZDI2MTY0NTJmNDY1ZWM0OWMw
YWVjMjQxOGJhMzU3ZTY2MS4uMzZkYTQ0Y2Q0Zjg1ZGVjMDI5YTUzZTNiZmI3MzRlMzkxYTYyMGE0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9y
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9y
ZVdpbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29k
ZUhhbmRsZShlbmNvZGVyLCBkdXBsaWNhdGVkSGFuZGxlKTsKIH0KIAotT3B0aW9uYWw8U2VtYXBo
b3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxT
ZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0
byBoYW5kbGUgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVj
b2Rlcik7CiAgICAgaWYgKCFoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ0luaXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRp
YWxpemF0aW9uLmgKaW5kZXggYzk5OGY5Nzk2MWIxODQ0YTZiMGZhYmZmZGU5Y2MyMDRmNDY3NjI3
ZC4uMjU2YTQ1OTczMThkMTFhZGVkZTA3NWIxZTEyMTVmZDYzY2ZlYWY4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKK3ZvaWQgaW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsK
IFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDQxZDg2ZGMyZGU1YWJhZjlmMGM4MTczOWE5YmEx
ODJlOGUzZGZiZjIuLjg1MWYyNTYzM2VjY2EwODI1YjAyYjRmOGM0NzRlN2JiMWJjNmVkNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nQ2hhbm5lbENvdW50ID0gV1RGX0FSUkFZ
X0xFTkdUSChsb2dDaGFubmVscyk7CiBzdGF0aWMgYm9vbCBsb2dDaGFubmVsc05lZWRJbml0aWFs
aXphdGlvbiA9IHRydWU7CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnko
T3B0aW9uYWw8U3RyaW5nPiBsb2dDaGFubmVsU3RyaW5nKQordm9pZCBpbml0aWFsaXplTG9nQ2hh
bm5lbHNJZk5lY2Vzc2FyeShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9nQ2hhbm5lbFN0cmluZykK
IHsKICAgICBpZiAoIWxvZ0NoYW5uZWxzTmVlZEluaXRpYWxpemF0aW9uICYmICFsb2dDaGFubmVs
U3RyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAppbmRleCBjNDZiNWQ1NjU0ZGE2YjM1MWUyNmM2NzcxZWU1MTlmMjRmOGJjMGRmLi5iZTI1YTkx
MGE0ZjRjMmZkMWFiNzg1YTQ0MjZjNTI1ZjMzMDI5NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgT1Mo
V0lORE9XUykKICAgICAgICAgc3RhdGljIHZvaWQgZW5jb2RlSGFuZGxlKElQQzo6RW5jb2RlciYs
IEhBTkRMRSk7Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxIQU5ETEU+IGRlY29kZUhhbmRsZShJ
UEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SEFORExFPiBkZWNv
ZGVIYW5kbGUoSVBDOjpEZWNvZGVyJik7CiAjZW5kaWYKICAgICBwcml2YXRlOgogICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVkTWVtb3J5OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIE9wdGlvbmFsPGludD4g
bV9maWxlRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRv
cjsKICAgICBib29sIG1faXNXcmFwcGluZ01hcCB7IGZhbHNlIH07CiAjZWxpZiBPUyhEQVJXSU4p
CiAgICAgbWFjaF9wb3J0X3QgbV9wb3J0IHsgTUFDSF9QT1JUX05VTEwgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAppbmRl
eCAwM2NhMzYzMTc2YmQ4YWUxYmE5ZWIyNTAyYjhjZmI4ZTI3OGY1ZGY2Li5kYTZiYmFlNGY1ZGNh
ZGJhYjA4ZmQ2ZWU0ZTk5N2JlMzc4YWFlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hOjpjYW5Vc2VDb3Jl
UHJlZGljdGlvbigpCiAKIGNvbnN0IHN0cnVjdCBzdm1fbW9kZWwqIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2E6OnNpbmdsZXRvblByZWRpY3Rpb25Nb2RlbCgpCiB7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPHN0cnVjdCBzdm1fbW9kZWwqPiBjb3JlUHJlZGljdGlvbk1vZGVsOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBzdm1fbW9kZWwqPiBjb3JlUHJlZGljdGlv
bk1vZGVsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgYXV0byBwYXRoID0gc3RvcmFnZVBhdGgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaAppbmRleCAwNjk3ZjkxOTlmZjMyZDg0YzYxY2NiMTZi
YTM0YjU0MjQ1MmRiNzMwLi4yMmM2YjY1NmNjYWJiMWY3N2VhOTczZjU0NzQ4Y2FhNmY2YWM3ODU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgog
ICAgIENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21w
bGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwot
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+Jik7Cisg
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRf
TUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOworICAg
IHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOwogI2VuZGlmIC8vIEVOQUJM
RShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KaW5kZXggNzkyZGI3MTA3ZjczMzg2
MjcxNzEwYzI2Mjc2NWJkZGZlNTdiNzFmYS4uMDQ1NDFmZjM1MTg5NWFhOGE3OTlmM2Y0ZThkOWEz
ZTgyMGJmYzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCkBAIC0xOTgsNyArMTk4LDcg
QEAgdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGEKICAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uOm1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNl
c3Npb24oKSBlcnJvcjpuaWxdOwogfQogCi12b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAg
ICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsKQEAgLTIx
Niw3ICsyMTYsNyBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQwogICAgIFtwbGF0Zm9ybURlbGVn
YXRlKCkgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOnBheW1lbnRNZXRob2RVcGRhdGUu
Z2V0KCldOwogfQogCi12b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYgcmVzdWx0KQordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6
Y29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQogewogICAgIEFTU0VSVChwbGF0Zm9ybURl
bGVnYXRlKCkpOwogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gdG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKHJlc3VsdC0+c3RhdHVzKSA6IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNTdWNjZXNzOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yCiAg
ICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOnN0YXR1cyBlcnJv
cnM6ZXJyb3JzLmdldCgpXTsKIH0KIAotdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJiB1cGRhdGUp
CiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsK
QEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZQogICAgIFtwbGF0Zm9y
bURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c2hpcHBpbmdDb250
YWN0VXBkYXRlLmdldCgpXTsKIH0KIAotdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsK
ICAgICBBU1NFUlQocGxhdGZvcm1EZWxlZ2F0ZSgpKTsKICAgICBpZiAoIXVwZGF0ZSkgewpAQCAt
MjU4LDcgKzI1OCw3IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViCiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4m
JiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1
cGRhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1v
cnlDb2NvYS5jcHAKaW5kZXggOGRmNjY4ZDBlMzAzNWYwMmY0OWYyYmU2YTFlODczNzBhNzY0ZTlk
NC4uNTBjZjZjYmQxYzdjNGQwNzU3OTgyYmFlZWJjMmI1ZjRjYWI4NDcyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgc3RhdGljIGludCB0b1ZNTWVtb3J5TGVkZ2VyKE1lbW9yeUxlZGdlciBtZW1v
cnlMZWRnZXIpCiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IHNh
ZmVSb3VuZFBhZ2Uoc2l6ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzYWZlUm91bmRQYWdlKHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCByb3VuZGVkU2l6
ZTsKICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhzaXplLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KFBBR0VfTUFTSyksICZyb3VuZGVkU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRleCAxNWI5ZTQyNTY0MjVkNzY4ZGE0YWI5NTQ5
ODNhZmI2YTE2NDNhOTkwLi5jNTUxZmRkMmZmODIwNjNkMWY0ZGY2NzRmNDVmMGQwNjI3ZGNmZjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAK
QEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBnZXREdXBsaWNhdGVkSGFuZGxlKEhBTkRM
RSBzb3VyY2VIYW5kbGUsIERXT1JEIHNvdXJjZVBJRCwgSEFORExFJiBkdQogICAgIHJldHVybiBz
dWNjZXNzOwogfQogCi1PcHRpb25hbDxIQU5ETEU+IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNv
ZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxIQU5ETEU+IFNo
YXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNv
dXJjZUhhbmRsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCA4ZjEzMTdiYzg4NTNmZGVhZTIyNzZkMDc4Yzk4MWQ1ZTZlMjJjZmM1Li4zMWU0OTU3ZWFhYzc0
OGE1ZmIxNzc0Y2QxMzNjYzA3Y2NlZjBhYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTE0Myw4ICsxNDMsOCBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVy
X3R5cGUodHlwZSwga2luZCk6CiBkZWYgcmVwbHlfdHlwZSh0eXBlKToKICAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgogICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+JzoKLSAgICAgICAgcmV0dXJuICdPcHRpb25hbDxJUEM6OkRhdGFSZWZl
cmVuY2U+JworICAgIGlmIHR5cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPic6CisgICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JwogICAgIHJldHVybiB0eXBlCiAKIApAQCAtNjAxLDkgKzYwMSw5IEBAIGRlZiBj
bGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRlX3N0cmluZyk6CiAgICAgICAgICdFeHBlY3Rl
ZCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9FeHBlY3RlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSGFzaE1hcCc6IHsnaGVh
ZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyci
QXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdIYXNoU2V0JzogeydoZWFkZXJzJzogWyc8
d3RmL0hhc2hTZXQuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENv
ZGVycy5oIiddfSwKLSAgICAgICAgJ09wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlv
bmFsLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAg
ICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdzdGQ6
Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0aW9uYWw+J10sICdhcmd1bWVudF9jb2Rlcl9o
ZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7
J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVh
ZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdSZWZQdHInOiB7J2hlYWRlcnMnOiBb
Jzx3dGYvUmVmQ291bnRlZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3Vt
ZW50Q29kZXJzLmgiJ119LApAQCAtOTA3LDcgKzkwNyw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1l
c3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3Ig
eCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFy
YW1ldGVycykKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRl
cnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4g
JXM7XG4nICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90
eXBlKHgudHlwZSksIHgubmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBkZWNvZGVyID4+ICVzO1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGlmICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
XG4gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAg
ICAgcmV0dXJuO1xuICAgIH1cbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKCcpCkBAIC0xMTI4LDcgKzExMjgsNyBAQCBkZWYg
Z2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgogCiAKIGRl
ZiBnZW5lcmF0ZV9qc192YWx1ZV9jb252ZXJzaW9uX2Z1bmN0aW9uKHJlc3VsdCwgcmVjZWl2ZXJz
LCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF90eXBlLCBwcmVkaWNhdGU9bGFtYmRhIG1lc3NhZ2U6
IFRydWUpOgotICAgIHJlc3VsdC5hcHBlbmQoJ09wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gJXMoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVy
JiBkZWNvZGVyKVxuJyAlIGZ1bmN0aW9uX25hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RkOjpv
cHRpb25hbDxKU0M6OkpTVmFsdWU+ICVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTWVzc2FnZU5hbWUgbmFtZSwgRGVjb2RlciYgZGVjb2RlcilcbicgJSBmdW5jdGlvbl9uYW1l
KQogICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3aXRj
aCAobmFtZSkge1xuJykKICAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgpAQCAtMTE2MSw3
ICsxMTYxLDcgQEAgZGVmIGdlbmVyYXRlX2pzX3ZhbHVlX2NvbnZlcnNpb25fZnVuY3Rpb24ocmVz
dWx0LCByZWNlaXZlcnMsIGZ1bmN0aW9uX25hbWUsIGFyZ3UKIAogZGVmIGdlbmVyYXRlX2pzX2Fy
Z3VtZW50X2Rlc2NyaXB0aW9ucyhyZWNlaXZlcnMsIGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50c19m
cm9tX21lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtdCi0gICAgcmVzdWx0LmFwcGVuZCgnT3B0aW9u
YWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiAlcyhNZXNzYWdlTmFtZSBuYW1lKVxuJyAl
IGZ1bmN0aW9uX25hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RkOjpvcHRpb25hbDxWZWN0b3I8
QXJndW1lbnREZXNjcmlwdGlvbj4+ICVzKE1lc3NhZ2VOYW1lIG5hbWUpXG4nICUgZnVuY3Rpb25f
bmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
d2l0Y2ggKG5hbWUpIHtcbicpCiAgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKQEAgLTEx
OTYsNyArMTE5Niw3IEBAIGRlZiBnZW5lcmF0ZV9qc19hcmd1bWVudF9kZXNjcmlwdGlvbnMocmVj
ZWl2ZXJzLCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudHNfZnJvbV9tCiAgICAgICAgICAgICAgICAg
aWYgYXJndW1lbnQua2luZC5zdGFydHN3aXRoKCdlbnVtOicpOgogICAgICAgICAgICAgICAgICAg
ICBlbnVtX3R5cGUgPSAnIiVzIicgJSBhcmd1bWVudF90eXBlCiAgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50X3R5cGUgPSBhcmd1bWVudC5raW5kWzU6XQotICAgICAgICAgICAgICAgIGlmIGFy
Z3VtZW50X3R5cGUuc3RhcnRzd2l0aCgnT3B0aW9uYWw8JykgYW5kIGFyZ3VtZW50X3R5cGUuZW5k
c3dpdGgoJz4nKToKKyAgICAgICAgICAgICAgICBpZiBhcmd1bWVudF90eXBlLnN0YXJ0c3dpdGgo
J3N0ZDo6b3B0aW9uYWw8JykgYW5kIGFyZ3VtZW50X3R5cGUuZW5kc3dpdGgoJz4nKToKICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRfdHlwZSA9IGFyZ3VtZW50X3R5cGVbOTotMV0KICAgICAg
ICAgICAgICAgICAgICAgaXNfb3B0aW9uYWwgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICAgICAgeyIlcyIsICIlcyIsICVzLCAlc30sXG4nICUgKGFyZ3VtZW50
Lm5hbWUsIGFyZ3VtZW50X3R5cGUsIGVudW1fdHlwZSBvciAnbnVsbHB0cicsICd0cnVlJyBpZiBp
c19vcHRpb25hbCBlbHNlICdmYWxzZScpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9wYXJzZXJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3BhcnNlcl91bml0dGVzdC5weQppbmRleCBmODZlZDgxZDVjNzY5MTMyYjhkNDQ0OWRkNDgx
NjdiOTNkMjIyNjA0Li5lOTVjM2VjOGYzNGE0ODcyYTYxMDIzNmE1OGM4ZWMxMjMzYWZmNWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5weQpA
QCAtMjkwLDcgKzI5MCw3IEBAIF9leHBlY3RlZF9tb2RlbF90ZXN0X3dpdGhfc3VwZXJjbGFzcyA9
IHsKICAgICAgICAgICAgICAgICAoJ2Jvb2wnLCAndmFsdWUnKSwKICAgICAgICAgICAgICksCiAg
ICAgICAgICAgICAncmVwbHlfcGFyYW1ldGVycyc6ICgKLSAgICAgICAgICAgICAgICAoJ09wdGlv
bmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4nLCAnb3B0aW9uYWxSZXBseScpLAorICAgICAgICAg
ICAgICAgICgnc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JywgJ29wdGlvbmFs
UmVwbHknKSwKICAgICAgICAgICAgICksCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IChOb25l
KSwKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCAw
ODZhZDk5ZmFmNTMxMTEyNGQ2MGVjMjg3MTk1NzY1YWMyYWNkZGY1Li4xM2JhMzdjZjBhYmNlYzE1
MmM1NjNiMWE1MWU4ZTk5NDNkNzY0ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMuY3BwCkBAIC04MCw3ICs4MCw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1PcHRpb25hbDxK
U0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIHN3aXRjaCAobmFtZSkgewogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19Mb2FkVVJMOgpAQCAtMjU1LDcgKzI1NSw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
anNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1l
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBq
c1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxKU0M6
OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE1lc3NhZ2VOYW1lIG5hbWUsIERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
c3dpdGNoIChuYW1lKSB7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTI5MCw3ICsyOTAs
NyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLU9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50
RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1
bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1l
IG5hbWUpCiB7CiAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CkBAIC01OTIsNyArNTkyLDcgQEAgT3B0aW9uYWw8VmVj
dG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVz
c2FnZU5hbWUgbmEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0
b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25z
KE1lc3NhZ2VOYW1lIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0
aW9uPj4gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkK
IHsKICAgICBzd2l0Y2ggKG5hbWUpIHsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xh
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3VwZXJjbGFzcy5tZXNzYWdlcy5pbgppbmRleCA1NTRhYjAxYWE2MDMzNGVhNzg5ZTFlODhj
NGM4NWIxMTExMzk4NmU2Li42M2M2YjBmYmQ2M2FjMjYyNmE3NTY1NDc0NGUzOTU0YzE0OTNhNGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3VwZXJjbGFzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzcy5tZXNzYWdlcy5pbgpAQCAtMjksNSArMjksNSBAQCBt
ZXNzYWdlcyAtPiBUZXN0V2l0aFN1cGVyY2xhc3MgOiBXZWJQYWdlQmFzZSB7CiAgICAgVGVzdEFz
eW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKGludCB2YWx1ZSkgLT4gKGJvb2wgZmxhZykgQXN5bmMg
V2FudHNDb25uZWN0aW9uCiAjZW5kaWYKICAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFy
YW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0
aW9uYWxSZXBseSkgU3luY2hyb25vdXMKKyAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wg
dmFsdWUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxS
ZXBseSkgU3luY2hyb25vdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCA2ZDMzMGJlNDRiYTg4MGE3MzAzY2Y2NWJkNWYwOTU1Yjc2YTY1Y2Zh
Li40NTc1ZTc5ZjYzNWQ2MTBkY2E2ZjQ5MzYwYTM5ZGFhOTg3NmFjMzM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3Nh
Z2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBUZXN0V2l0aFN1cGVyY2xhc3MgewogCiB2b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CiAgICAgZGVjb2Rl
ciA+PiByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC05MCwxNCArOTAsMTQgQEAgdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVAKIAogdm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZsYWc7CiAgICAgZGVjb2RlciA+PiBmbGFnOwogICAgIGlm
ICghZmxhZykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FuY2Vs
UmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiYgZW5jb2QKIAogdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBPcHRpb25hbDxib29sPiBmbGFnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZmxhZzsKICAgICBkZWNvZGVyID4+IGZsYWc7CiAgICAg
aWYgKCFmbGFnKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgVGVzdFN5bmNNZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjCiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1Jl
cGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6
OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlv
bmFsUmVwbHkpCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKIHsK
ICAgICBlbmNvZGVyLmdldCgpIDw8IG9wdGlvbmFsUmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5o
CmluZGV4IDNkZjFjNjhlOTc2YjE5MjU1YjNmZDJiODNkNzFiYjg3MWUwYWQ1ZTEuLjk5YjQ1NjI4
NmU4YTEyZThiYTEzOTU4ODYwMjg3MWUyN2RhM2M2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VzLmgKQEAgLTIxNiw5ICsyMTYsOSBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
VGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJL
aXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
PjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYg
b3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9u
YWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxzdGQ6Om9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4+OwogICAgIGV4
cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKICAgICAgICAgOiBtX2Fy
Z3VtZW50cyh2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlc1Jl
cGxpZXMuaAppbmRleCA0ODIyZTZjZDZhOWY1ZWFmZWYwMDFlYTExNjRiZGVhYWQ2ZTAyMzgyLi4y
M2NiZjQwZjYxYjIxNmNlOTc2N2IxMzU5N2Y2MGNjZjZlNmU5YzAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2Vz
UmVwbGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgVGVz
dEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBmbGEKIAogdXNpbmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90IHJlcGx5KT47CiAKLXVzaW5nIFRlc3RTeW5jaHJv
bm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKK3VzaW5nIFRl
c3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBs
eSk+OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN1cGVyY2xhc3MKIH0gLy8gbmFtZXNwYWNl
IE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUdy
b3VwSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5k
bGUuY3BwCmluZGV4IGM0MTg4MDI3M2YyNGMyZGE3YzNjMDM1ZmE3MTJmZjY0N2Q3NDllYTUuLjY0
ZTAwZGE5ZjY5OWU4OTYyZGNkNWM3NDYwMjkxYjA3MmFkMzVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgUGFnZUdyb3VwSGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogCiBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VH
cm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oldl
YlBhZ2VHcm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdl
R3JvdXBEYXRhOwogICAgIGlmICghd2ViUGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGFj
YTc1NzUxNTMxNWM5YWM0YzQ0MzZhNDQ0OTc4MzZkM2Q5NGQ0NjEuLjljYjg4NzJjYzZhZDU5Zjc5
OTg3YmNkYTRiMDBmOTI5MTYzYWVjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
UGFnZUhhbmRsZS5jcHAKQEAgLTYyLDEyICs2MiwxMiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBP
cHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHBhZ2VQcm94eUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJ
RDsKICAgICBkZWNvZGVyID4+IHBhZ2VQcm94eUlEOwogICAgIGlmICghcGFnZVByb3h5SUQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiB3ZWJQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gd2ViUGFnZUlEOwogICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOwogICAgIGlmICghd2ViUGFn
ZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElTZWN1cml0eU9yaWdpbi5oCmluZGV4IDQ3MWJmZDI3Njg0ZDkyYjVlMjYzMjc1NTQ1MTNmN2M4
OTI3ZjgwOTEuLmYxMzkzMDdlYjllN2NjNDBiM2E1YWYwM2JhMmUwNDk3ZGY4ZTY3NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmln
aW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKFdURjo6VVJMKFdURjo6VVJM
KCksIHN0cmluZykpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4g
Y3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhv
c3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmln
aW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFdURjo6U3RyaW5n
JiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4oeyBwcm90b2NvbCwgaG9zdCwgcG9ydCB9
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5
T3JpZ2luUmVmLmNwcAppbmRleCA0YTE3YzI3YzBhYzI5YTk4MjdlMmQ3NzEyNDdjYmQxYzcxOGRj
YThkLi5iMDMyMjVjMzQ3ZGQzNWZkZjRkZjAyNGMxZjZlYjYxMWIwNjVhN2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAt
NTAsNyArNTAsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZQogCiBXS1NlY3VyaXR5T3JpZ2lu
UmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5n
UmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIE9wdGlvbmFsPHVpbnQxNl90PiB2YWxpZFBvcnQ7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gdmFsaWRQb3J0OwogICAgIGlmIChwb3J0ICYm
IHBvcnQgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQogICAgICAgICB2
YWxpZFBvcnQgPSBwb3J0OwogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpLCB2YWxpZFBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXMubW0KaW5kZXggMmQ0MDhkODUxMzBiYWMzNzI2NTg2NGJiNmJjNGIxOTRjZTE0OWM3Yy4uZGE2
MWNhZWEwMzNjMzY5OGYxNjU3YzVjODVkYTc3NTkzOGJlMWZkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZl
YXR1cmVzLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUGF5bWVudFNldHVwRmVhdHVyZXM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3BsYXRm
b3JtRmVhdHVyZXM7CiB9CiAKLU9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBQYXltZW50
U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZlYXR1cmVzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNBcnJheT4+IGFsbG93ZWRDbGFzc2VzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxl
UGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaAppbmRleCAyOWM1Yjky
ZWU0ODFhMDgzMDM3NDM5OTBkYzQ5MmRkYzI1OTM5ZmE5Li42MGUyNDk4MDgwNzY1MDYzZDAxODc2
NjQ4MGY1YzZiYzIyMzAxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQYXltZW50U2V0dXBGZWF0dXJlcyhSZXRh
aW5QdHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZlYXR1cmVzPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNl
dHVwRmVhdHVyZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIE5TQXJyYXkgKnBsYXRm
b3JtRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRmVhdHVyZXMuZ2V0KCk7IH0K
ICAgICBvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4o
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9Q
YXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4IDUwY2RkYTUxMWJiOGQwMjVhOGMzZjFi
YzBjMjUzMTAxY2FmMzllNDUuLjFhM2E2OTFiODY1ZTMxOTY3YTk0NjIxZGQzNDdjMWY0NWExNTFh
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CiB9CiAKLU9wdGlvbmFsPFBheW1lbnRTZXR1
cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gYWxsb3dl
ZENsYXNzZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bldlYktpdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbldlYktpdC5oCmluZGV4IDM0ZTlhOTU1YWNlODVmZTg2MWIzODU5YmY0ZDQ2ZmI3
YmE1Y2I1ZmMuLmMwZTU1ZThiMzYxNmQ0MjZmNmNhMWU1NzdmYTBkMzFiNzY5NjZiNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3Vy
YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50
U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cENv
bmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgUEtQYXlt
ZW50U2V0dXBDb25maWd1cmF0aW9uICpwbGF0Zm9ybUNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmlu
ZGV4IDkwNWRlYzM1Y2RlZTc4NDA1MWQ4YjcxZjViZDYxMDkyMzc5NWJiMzIuLjY5YjcwOGQ2Mjk1
YmEwYWZkZGQ2MDgwZjMwNzZmOTIzNDc3ZjE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZQogICAgIG1fbWVyY2hh
bnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6VmFsaWRhdGlvbkNv
bXBsZXRlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0
ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5
bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpJZGxlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvCiAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBheW1lbnQgaGFzIGJlZW4gY2FuY2VsZWQgYWxy
ZWFkeS4KICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSkKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5U
X01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0
ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8v
IEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5
LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVD
aGFuZ2UoT3B0aW9uYWw8V2ViQ29yCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1F
TlRfTUVUSE9EX01PREUpCiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQ+JiByZXN1bHQpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpj
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0
aGF0IHRoZSBwYXltZW50IGhhcyBiZWVuIGNhbmNlbGVkIGFscmVhZHkuCiAgICAgaWYgKCFjYW5D
b21wbGV0ZVBheW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDJjZDM5ZDc1NDA2ZTI0
M2NiMjA1OTg1MWRiOGZkYmNhZTQxYzAzODYuLmFiN2RiOGZiYzhlM2M0MWIzMTM0Y2MxZDFkMmE3
Mjg0NjY4NDBkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMTMxLDEzICsxMzEsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJD
b3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RV
cGRhdGU+JiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxl
UGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsK
KyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
TW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBk
YXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKTsKICNl
bmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBj
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0PiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYpOwog
ICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKTsKIApAQCAtMTU5LDIwICsxNTksMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIHBs
YXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxl
dGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVBheW1lbnRN
ZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBk
YXRlPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYp
OworICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKTsKKyAg
ICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRl
UGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZT4mJik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1l
dGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRo
b2RNb2RlVXBkYXRlPiYmKTsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVU
SE9EX01PREUpCi0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+Jik7CisgICAgdm9p
ZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKICAgICB2b2lkIHBsYXRmb3JtSGlk
ZVBheW1lbnRVSSgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxQS1BheW1l
bnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIENsaWVudCYgbV9jbGll
bnQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRpb25J
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0
aW9uSUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhp
bmcncyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGM4NzdkMmQxZmQ0NzIyMTFmYzA1ZWY0N2YyOWU0NmQ1MWE1NzAxYWQuLjI3NDBjOTFmMTIx
YzFjMzEyOGY1NzBhOTllMzEyYzYxOGZhMjJlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiwxMyArMzIsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKICAgICBTaG93UGF5bWVudFVJKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFN0cmluZyBvcmlnaW5hdGluZ1VS
TFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0
KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKLSAgICBDb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGU+IHVwZGF0ZSkKLSAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gdXBk
YXRlKQotICAgIENvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IHVwZGF0ZSkKKyAgICBDb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4gdXBkYXRlKQorICAgIENvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
IHVwZGF0ZSkKKyAgICBDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IHVwZGF0ZSkKICNpZiBFTkFC
TEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgQ29tcGxldGVQYXltZW50TWV0
aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiB1cGRhdGUpCisgICAgQ29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+IHVwZGF0
ZSkKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAg
Q29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4gcmVzdWx0KQorICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQogICAgIEFi
b3J0UGF5bWVudFNlc3Npb24oKQogICAgIENhbmNlbFBheW1lbnRTZXNzaW9uKCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOGQ3YjVjMzMzNzEwYTZjMmUwNmNmNDJkNzIz
NWZkMTIwNTM2YmYzMC4uNzJhNGZhMWIyZjc5YjczYjA3YjFiMmIyMDY5MDI4MWYzMDNmODhhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJhdGlvbjsKIH0KIAotT3B0aW9uYWw8UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmln
dXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+
PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
Y29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCA3ZTJkZmU2NDZm
MjQxYTJkMjZkZWQxZDNiOTg1NGQzMTMxNjM0NGMyLi4zNzQ1YzBlMDMzNTZjZjhmOWNmNzUyMTcy
OWY5NjgyYTI4MmY3MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQogewogICAgIG1f
YXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50U2Vzc2lvbihyZXN1bHQpOwog
fQpAQCAtMjgyLDI0ICsyODIsMjQgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3IKICAgICBtX2F1
dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1lbnRN
ZXJjaGFudFNlc3Npb24pOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVw
ZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihP
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJiB1cGRhdGUp
Cit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBp
bmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRl
ci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVw
ZGF0ZSkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVu
dE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
TW9kZVVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBt
X2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uo
V1RGTW92ZSh1cGRhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDc1ZjIy
ODNlNWQzMjA1YjlhMmFiMDA0YjdjMWQ2ZTEwN2ZjMjlmNWUuLmUzZmVmMmExNWY5MzdhYTE4YmM3
MTA5MjRlOTE4NjM1NzNhZTNhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTIx
LDcgKzEyMSw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgaWYgKHNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0
b3BPcmlnaW5EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BP
cmlnaW5EYXRhOwogICAgIGlmICh0b3BPcmlnaW4pCiAgICAgICAgIHRvcE9yaWdpbkRhdGEgPSAq
dG9wT3JpZ2luOwogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBwYWdlSUQs
IHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5
VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcywgY2hhbGxlbmdlSUQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKaW5kZXggYjgxOGMwN2I3MmU3MWRmZTA4
YTRjYWJiNmJhMzM1M2I4ZTFlMmNlYy4uOTQ4Njk3ZDdhOTFiNTQ2MjhiNDE3NzQ4YjQ5MmVmYTFm
MjgxMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnNodXREb3duKCkKICAgICB0
ZXJtaW5hdGUoKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gQXV4aWxpYXJ5UHJvY2Vzczo6Y3JlYXRlSVBDQ29u
bmVjdGlvblBhaXIoKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBBdXhpbGlhcnlQcm9jZXNzOjpjcmVhdGVJUEND
b25uZWN0aW9uUGFpcigpCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBD
OjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJv
Y2Vzcy5oCmluZGV4IDI3MGM2NjlkYzFhNjJmMDA5ZDM3OWViNGM3M2ZhM2M3OTE5NzdlYmYuLmVk
NTIxYmY1ZGVhZTY5MTkxZmE1ZTkzMmQ0OTY2YThmMmM4MWI3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVtb3J5UHJlc3N1cmVFdmVudChib29sIGlzQ3JpdGljYWwpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3JlYXRlSVBDQ29ubmVjdGlvblBhaXIoKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRPdmVycmlkZVF1YXJhbnRpbmUoKSB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xNjUsNyArMTY1LDcgQEAgc3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogICAgIFN0cmluZyBjbGllbnRJZGVudGlmaWVyOwog
ICAgIFN0cmluZyBjbGllbnRCdW5kbGVJZGVudGlmaWVyOwogICAgIHVpbnQzMl90IGNsaWVudFNE
S1ZlcnNpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nl
c3NJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YTsKICAgICBXZWJDb3JlOjpBdXhpbGlhcnlQcm9jZXNzVHlwZSBwcm9j
ZXNzVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAppbmRleCBlOGZjZmRjYWNhNzNhMDI2
NTQzNmNlMzdiYjU0OTMxYzMxNmM3YzQ2Li4wYWQzMjEzZjE3ZjQwZTkwOGRiNmM2ZTRlYzk1NzE4
ZTdmZjJmMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC04MSw5ICs4MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgZW5jb2RlciA8PCBtX2lkOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDYWxsYmFja0lEPiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxDYWxsYmFja0lEPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKaW5k
ZXggNzExZGZiZTYwMjViOWI0NzBiODk1OWY4YjJmNWYzZDg1NmIyOTRjZS4uNTBkNDA5NmY3MTRj
YWU0ZGM4MWYzZTZiY2IzZWIyNjI1ZDZlZDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApAQCAtMzIsMTQgKzMyLDE0IEBACiBuYW1l
c3BhY2UgSVBDIHsKIAogdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYsIGlkKTsKLU9wdGlvbmFs
PFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFs
bG93ZWRDbGFzc2VzKTsKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0
KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB1c2luZyBJc09iakNPYmplY3QgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
Y29udmVydGlibGU8VCAqLCBpZD46OnZhbHVlLCBUICo+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gdm9pZCBlbmNvZGUoRW5jb2RlciYsIFQgKik7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXRhaW5QdHI8VD4mLCBOU0FycmF5
PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gT3B0aW9uYWw8UmV0YWluUHRyPFQ+
PiBkZWNvZGUoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcyA9IEBbIFtU
IGNsYXNzXSBdKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0
PFQ+PiBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dl
ZENsYXNzKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0PFQ+
PiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5PENs
YXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8
VD4+IGRlY29kZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dlZENsYXNzKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UmV0YWluUHRyPFQ+JiByZXN1bHQsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3MKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWU+Ci1PcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCitz
dGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5TQXJy
YXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZU9i
amVjdChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC04Miw3
ICs4Miw3IEBAIE9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWU+Ci1PcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93ZWRDbGFzcykKIHsKICAgICByZXR1cm4g
ZGVjb2RlPFQ+KGRlY29kZXIsIGFsbG93ZWRDbGFzcyA/IEBbIGFsbG93ZWRDbGFzcyBdIDogQFsg
XSk7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPFQ+PiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0PFU+PgotICAgIHN0YXRpYyBPcHRpb25h
bDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJldGFpblB0cjxVPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gSVBDOjpkZWNvZGU8VT4oZGVjb2Rlcik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggYzU0
YjUzYjZmYjYxNDNiYmVkMGI3MDAxYjE3ZDdhMDkyNDhhMDhlOC4uYzg1MTc0OTcwYjllNjA2YTQw
YjAyNGQyNGU1NjRlNDIyYTkyMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlQXJyYXlJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0FycmF5ICphcnJheSkK
ICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVBcnJheUlu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUFycmF5SW50ZXJuYWwo
RGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQogewogICAg
IHVpbnQ2NF90IHNpemU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKQEAgLTI4MCw3
ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlQ29sb3JJbnRlcm5hbChFbmNvZGVy
JiBlbmNvZGVyLCBOU0NvbG9yICpjb2xvcikKICAgICBlbmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29s
b3IoY29sb3IpOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikp
CkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJu
YWwoRW5jb2RlciYgZW5jb2RlciwgVUlDb2xvciAqY29sb3IpCiAgICAgZW5jb2RlciA8PCBjb2xv
ckZyb21VSUNvbG9yKGNvbG9yKTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIENvbG9yIGNvbG9yOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29sb3IpKQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVE
YXRhSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgTlNEYXRhICpkYXRhKQogICAgIGVuY29kZXIg
PDwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFJldGFpblB0cjxpZD4+IGRlY29kZURhdGFJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURhdGFJbnRlcm5h
bChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZW5jb2RlRGF0ZUludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TRGF0ZSAq
ZGF0ZSkKICAgICBlbmNvZGVyIDw8IChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVj
b2RlciYgZGVjb2RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+
PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRlUmVmPiBkYXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0ZSkpCkBAIC0zNjYs
NyArMzY2LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRGljdGlvbmFyeUludGVybmFsKEVuY29kZXIm
IGVuY29kZXIsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKICAgICB9CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEaWN0aW9uYXJ5SW50ZXJuYWwoRGVjb2RlciYg
ZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlvbmFyeUludGVybmFsKERlY29kZXImIGRl
Y29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICB1aW50NjRfdCBz
aXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBD
b2NvYUZvbnQgKmZvbnQpCiAgICAgZW5jb2RlKGVuY29kZXIsIGZvbnQuZm9udERlc2NyaXB0b3Iu
Zm9udEF0dHJpYnV0ZXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVj
b2RlRm9udEludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZXRhaW5QdHI8aWQ+PiBkZWNvZGVGb250SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0cmlidXRlczsKICAgICBpZiAoIWRlY29k
ZShkZWNvZGVyLCBmb250QXR0cmlidXRlcykpCkBAIC00MTcsNyArNDE3LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGVuY29kZU51bWJlckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TTnVtYmVy
ICpudW1iZXIpCiAgICAgZW5jb2RlciA8PCAoX19icmlkZ2UgQ0ZOdW1iZXJSZWYpbnVtYmVyOwog
fQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU51bWJlcklu
dGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0
YWluUHRyPGlkPj4gZGVjb2RlTnVtYmVySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG51bWJlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG51bWJlcikpCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2VjdXJlQ29k
aW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5TT2JqZWN0LCBOU1NlY3VyZUMKICAg
ICBlbmNvZGVyIDw8IChfX2JyaWRnZSBDRkRhdGFSZWYpW2FyY2hpdmVyIGVuY29kZWREYXRhXTsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
IHsKICAgICBBU1NFUlQoYWxsb3dlZENsYXNzZXMgJiYgYWxsb3dlZENsYXNzZXMuY291bnQpOwog
ICAgIGlmICghYWxsb3dlZENsYXNzZXMgfHwgIWFsbG93ZWRDbGFzc2VzLmNvdW50KQpAQCAtNDgw
LDcgKzQ4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVTdHJpbmdJbnRlcm5hbChFbmNv
ZGVyJiBlbmNvZGVyLCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZzsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVTdHJpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlu
bGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVN0cmluZ0ludGVybmFsKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmc7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBlbmNvZGVVUkxJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAq
VVJMKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdlIENGVVJMUmVmKVVSTDsKIH0KIAotc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVVUkxJbnRlcm5hbChEZWNvZGVy
JiBkZWNvZGVyKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZVVSTEludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShVUkwpKQpAQCAtNTUyLDcgKzU1Miw3
IEBAIHZvaWQgZW5jb2RlT2JqZWN0KEVuY29kZXImIGVuY29kZXIsIGlkIG9iamVjdCkKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2Rl
T2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
K3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29k
ZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBib29sIGlzTnVsbDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKaW5kZXggNzM2ZjkwZTEwOGE2MGY3ZTU1
YzlkODgxNDE3N2NjNTYxNjNiYWJjMC4uYTA4ODhmOTE4OTZiNDk1ZGE4MmY5NzBiODZhZDUxMGNm
NWFkM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdCB7
CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdHM7CiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0YURldGVjdGlvblJlc3Vs
dD4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERhdGFE
ZXRlY3Rpb25SZXN1bHQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IDRl
NjA4YjhhYWY1Njg5YjFjMWYwMmRkM2Q3NmE2ZGE2MTk0ZDJmMDMuLjlmOGNjMGM1OTI0NTczYzQx
MjZjMmRhMzFhYzUyODIzODhhN2RjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIERhdGFE
ZXRlY3Rpb25SZXN1bHQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCByZXN1bHRzOwogfQogCi1PcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBE
YXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2Rl
PE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0
Q2xhc3MoKSBdKTsKICAgICBpZiAoIXJlc3VsdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaAppbmRleCA5YWMwNTEyZDBkNGU3
ZTljNGZmZTc5MTA0NDk1NGY1ZGI4MWNlMTQ4Li44YjU4OGRkZTFhZGRhZTRlNzU3YzA4MTVjOWM2
MDlmZWQ4MmIxNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rl
ZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXV4aWxpYXJ5
UHJvY2VzczsKIAogYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Np
b24oKTsKIGJvb2wgaGFzUHJvaGliaXRlZFVzYWdlU3RyaW5ncygpOwotT3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIGJvb2wg
aXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKTsKIHZvaWQgZGV0ZXJtaW5lSVRQ
U3RhdGUoKTsKIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmluZGV4IGYz
MWJjYTFhMDJjMTNhZGY1OTUyN2NjN2JmZGZjY2FhM2Y2ZDJhOWQuLjI5YThkMjhhZjE4ODAwZDI3
MjdhMGI0ZmY5YzUwNDU1ODZmMzA4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogICAgIHJldHVybiBidW5k
bGVJRCA9PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zIHx8IGJ1bmRsZUlEID09
ICJjb20uYXBwbGUuV2ViS2l0LldlYktpdFRlc3RSdW5uZXIiX3MgfHwgYnVuZGxlSUQgPT0gIm9y
Zy53ZWJraXQuV2ViS2l0VGVzdFJ1bm5lckFwcCJfczsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25z
dCBTdHJpbmcmIGJ1bmRsZUlEKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSUQpCiB7CiAgICAgaWYgKGJ1bmRsZUlELmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0
VGV4dE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9w
dGlvbnMuY3BwCmluZGV4IDhmMGI3Njk2ZGM0YWZlMjA2YzcxY2UzZTNjZDlhMmVjMTc0YjE0MzYu
LmM1ZDM2NzJmMThhMTVlNDI4Y2VjNmRhNDU4ZTNjOWMwNTA3NmUyZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2UKICAgICBlbmNvZGVyIDw8IG9wdGlvbnMuZWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6Okluc2VydFRleHRP
cHRpb25zPiBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9u
cz4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuaAppbmRleCA2MzZl
OTA0ZTMzMjk5NjQ3YTRkOTRjNzc0MzI3YzU4ZjZjZjgyYzM2Li43MmZmZDM1MmZlNzNhM2E2NTQy
NDQ2NjFhYTdiOGEyMDUwOTA0MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0luc2VydFRleHRPcHRpb25zLmgKQEAgLTQzLDYgKzQzLDYgQEAgc3RydWN0IEluc2VydFRleHRP
cHRpb25zIHsKIG5hbWVzcGFjZSBJUEMgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zJik7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9M
b2FkUGFyYW1ldGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTG9hZFBh
cmFtZXRlcnNDb2NvYS5tbQppbmRleCA2ZmY4Mzc4ZGJiNzQ4ZjNkOTAwM2QwYzNiNzgwMWY1YTRi
NDUxNmMzLi5lMjYzZmE4M2ExYTM2OGRmYjE4YTBmYTY5NmQ5MWY0MzdhY2Q2ODc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAg
LTQ5LDIwICs0OSwyMCBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBwYXJhbQogICAgIGlmICghSVBDOjpk
ZWNvZGUoZGVjb2RlciwgcGFyYW1ldGVycy5kYXRhRGV0ZWN0aW9uQ29udGV4dCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbmV0d29ya0V4dGVuc2lvblNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gbmV0d29ya0V4dGVuc2lvblNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghbmV0d29ya0V4dGVuc2lvblNhbmRib3hF
eHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5u
ZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpuZXR3b3Jr
RXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250
ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxl
OwogICAgIGRlY29kZXIgPj4gY29udGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBwYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjb250
ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
PiBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGZyb250
Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghZnJvbnRib2FyZFNlcnZpY2VF
eHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCAxMTBjM2Yx
ZmQyYjBjOGZhMzU0YTVhNzMzMzRjZDVhYjljMDIyNzZhLi5jYTM3ODBiYzg2ZjljMGQ2MjA4ODI3
MjJhZDkzMmMzZmQzMzMyNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4
dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBzdGQ6Om51bGxv
cHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBTYW5kYm94RXh0
ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRi
b3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBz
dGQ6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBT
YW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKICAgICB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1wbCB7IG5ldyBTYW5kYm94RXh0ZW5zaW9u
SW1wbChwYXRoLCB0eXBlLCBhdWRpdFRva2VuLCBmbGFncykgfTsKICAgICAgICAgaWYgKCFpbXBs
LT5tX3Rva2VuKQpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIGNoYXIqIHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncykKKyAgICBjaGFyKiBz
YW5kYm94RXh0ZW5zaW9uRm9yVHlwZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0
aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncykKICAgICB7CiAgICAgICAgIHVp
bnQzMl90IGV4dGVuc2lvbkZsYWdzID0gMDsKICAgICAgICAgaWYgKGZsYWdzICYgU2FuZGJveEV4
dGVuc2lvbjo6RmxhZ3M6Ok5vUmVwb3J0KQpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MpCisg
ICAgU2FuZGJveEV4dGVuc2lvbkltcGwoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9w
dGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MpCiAgICAgICAgIDogbV90b2tl
biB7IHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKHBhdGgsIHR5cGUsIGF1ZGl0VG9rZW4sIGZsYWdz
KSB9CiAgICAgewogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSAwOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFuZGxlPgorYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCkBAIC0yMTks
MTYgKzIxOSwxNiBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
IH0KIAotT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsKLSAgICAgICAgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFu
ZGxlOwogICAgICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGEKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBIYW5kbGUmIGhhbmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2Jvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhh
bmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwogICAgIApAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwg
T3B0aW9uYWw8CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0
IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
YXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK1NhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNv
bnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewogICAgIHJldHVy
biBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBGdW5jdGlvbjxib29sKGNvbnN0
IEFTQ0lJTGl0ZXJhbCYsIEhhbmRsZSYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJ
SUxpdGVyYWwmIHNlcnZpY2UsIEhhbmRsZSYgaGFuZGxlKSB7CiAgICAgICAgIGlmICghU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2Vu
LCBoYW5kbGUsIGZsYWdzKSkgewpAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgs
IGF1ZGl0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzcywg
T3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpCitib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
cklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlvS2l0Q2xhc3MsIHN0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpCiB7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsK
IApAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQorU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhpb2tpdENsYXNzZXMsIEZ1bmN0aW9u
PGJvb2woY29uc3QgQVNDSUlMaXRlcmFsJiwgSGFuZGxlJik+KFthdWRpdFRva2VuLCBmbGFnc10g
KGNvbnN0IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcywgSGFuZGxlJiBoYW5kbGUpIHsKICAgICAg
ICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5z
aW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGhhbmRsZSwgZmxhZ3MpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmluZGV4IDQ1NzZiMWY3ZmUxYWM2ZTE0Zjkx
MGE4NDU4NTJkZTRkYTY1YTllNjAuLjk1ODdhMmNlZjJlYmVlZGFmM2RjZGIwYmZjMzFiODBjZTgw
ZWIwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCkBAIC00
NCw3ICs0NCw3IEBAIHN0cnVjdCBYUkRldmljZUluZm8gewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQppbmRleCBiNzY3M2JkMjdlZjAwOTdkNjEw
NTAzMzk3ZWQ5MjMwZDQ1NjJlYTU4Li5jZjA0MWRiOTE5MmJkNTc2MGY5NjU3ZWUzZDFjYmVkN2M4
YmIxM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlu
Zm8ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCkBA
IC0zNyw3ICszNyw3IEBAIHZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXM7CiB9
CiAKLU9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IFhSRGV2aWNlSW5mbzo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBYUkRldmljZUluZm8gZGV2aWNl
RmVhdHVyZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5pZGVudGlm
aWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaAppbmRleCA4
MDFjZTE4NTU0ZDFkZTlmZTIwYzAyZTBhMzI3YTFiNDgwYjYxNTBmLi5iZGE2OTQ5MGJlMGU1NmFj
YmQzZTdkOGNkZDgxMDhlZjVlZDg1MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VQcm94eS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0
aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5h
bCB7IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1l
KFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
T3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMy
X3QsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJI
YW5kbGUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkubW0KaW5kZXggNmJhMDJmYTA0ZDljMTBkMjdhYjI4NDQ0ZGM0MTE0
MWMwZWJjZmU5ZS4uNDcwZDQwZjkzMTkyODI1YzNlMGYxOGZmZWVhNjZmYTUyNmU5OGJiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgWFJEZXZpY2VQcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmlj
ZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsCiAgICAgICAgIG1feHJTeXN0ZW0tPnJlcXVl
c3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtWFI6Okxh
eWVySGFuZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qg
d2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQogewogICAgIHJldHVy
biBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBo
ZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCUmVzdWx0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCUmVzdWx0LmNwcAppbmRleCBm
ZWM2NGMzNzA5NzNiZWE5ZjkzNjBhY2FkYmE1YzQ2NTcyYTJkMTczLi5kMDY0ZGFlMWE1OWQ1Zjhl
ZTVhY2IxZTBjZmRhYjFjMjAxMGM2YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJSZXN1bHQuY3BwCkBAIC0zOCwxMyAr
MzgsMTMgQEAgdm9pZCBXZWJJREJSZXN1bHQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAKIGJvb2wgV2ViSURCUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJJREJSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJREJSZXN1
bHREYXRhPiByZXN1bHREYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SURCUmVzdWx0
RGF0YT4gcmVzdWx0RGF0YTsKICAgICBkZWNvZGVyID4+IHJlc3VsdERhdGE7CiAgICAgaWYgKCFy
ZXN1bHREYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0Lm1fcmVzdWx0RGF0
YSA9IFdURk1vdmUoKnJlc3VsdERhdGEpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IGhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKICAgICBkZWNvZGVyID4+IGhhbmRsZXM7CiAgICAg
aWYgKCFoYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcAppbmRleCBmNjA2ZmY0YjgxNGVhNjk0ZDliMjczZGY0
YTNjZDQ0OTZiYjE4ZThhLi42YTVjOGU3NjljNjc2MWI0OTc1ZDgwNDI3MDFiYmZmOWU4OTUwMzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RlYnVnZ2FibGVJbmZvRGF0YS5jcHAKQEAgLTUx
LDI5ICs1MSwyOSBAQCB2b2lkIERlYnVnZ2FibGVJbmZvRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRhcmdldElzU2ltdWxhdG9yOwogfQog
Ci1PcHRpb25hbDxEZWJ1Z2dhYmxlSW5mb0RhdGE+IERlYnVnZ2FibGVJbmZvRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRh
PiBEZWJ1Z2dhYmxlSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZT4gZGVidWdnYWJsZVR5cGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBkZWJ1Z2dhYmxlVHlw
ZTsKICAgICBkZWNvZGVyID4+IGRlYnVnZ2FibGVUeXBlOwogICAgIGlmICghZGVidWdnYWJsZVR5
cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+
IHRhcmdldFBsYXRmb3JtTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0UGxh
dGZvcm1OYW1lOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0UGxhdGZvcm1OYW1lOwogICAgIGlmICgh
dGFyZ2V0UGxhdGZvcm1OYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRCdWlsZFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHRhcmdldEJ1aWxkVmVyc2lvbjsKICAgICBkZWNvZGVyID4+IHRhcmdldEJ1aWxkVmVy
c2lvbjsKICAgICBpZiAoIXRhcmdldEJ1aWxkVmVyc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0UHJvZHVjdFZlcnNpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldFByb2R1Y3RWZXJzaW9uOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0UHJvZHVjdFZlcnNpb247CiAgICAgaWYgKCF0YXJnZXRQcm9kdWN0VmVyc2lv
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHRh
cmdldElzU2ltdWxhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdGFyZ2V0SXNTaW11bGF0
b3I7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRJc1NpbXVsYXRvcjsKICAgICBpZiAoIXRhcmdldElz
U2ltdWxhdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAppbmRleCA3YWI3NTdhMzhhYmM4YzdjYzA0ZjZjYWU5
YTJiODQzNGVhMDI3ODYxLi5iNjk2YmQzODNmYjQyZjI2NDg3NzQwY2MyZTMyM2NlYTMzZTZhMDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaApAQCAtNDksNyAr
NDksNyBAQCBzdHJ1Y3QgRGVidWdnYWJsZUluZm9EYXRhIHsKICAgICBzdGF0aWMgRGVidWdnYWJs
ZUluZm9EYXRhIGVtcHR5KCk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAppbmRleCA5YjlmZDYw
YzMxMDQwOWU1NTFkNDczNzI5YWEyMDdkNWFhMTMzNGFmLi5lMWI1YWExYmE1NWRiZjNlZGVjOTRh
NzM2NWM0MTJhZWZkNzdiNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1
bWVudEVkaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdD
b250ZXh0UmVxdWVzdCB7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsKIAotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiB0ZXh0SW5wdXRDb250ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHRleHRJbnB1dENvbnRleHQ7CiB9
OwogCiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dCB7CkBAIC05MCwyMiArOTAsMjIgQEAg
c3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQgewogbmFtZXNwYWNlIElQQyB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6
UmFuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJh
bmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6VGV4dFJlY3RBbmRSYW5nZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0Jik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCmluZGV4IDQxYjkyYWI0NjZi
MzYwYWZhYWJiMTAyNjJhYTAyZDY1YjE2ODMyNWEuLjQ5MDEyZjg0MTlhZjVmNWMzNGMwYTI4NWQw
MzU0M2YwOWMzZmVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0
aW5nQ29udGV4dC5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZAog
ICAgIGVuY29kZXIgPDwgcmFuZ2UubGVuZ3RoOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6UmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gQXJndW1lbnRDb2Rl
cjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZSBy
YW5nZTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+OjplbmNvZGUoRW5jCiAgICAg
ZW5jb2RlciA8PCByZWN0LnJhbmdlOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4
dFJlY3RBbmRSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQ6OlRleHRSZWN0QW5kUmFuZ2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2UgcmVjdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjdC5yZWN0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6
UmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdD
b250ZXh0OjpSYW5nZT4gcmFuZ2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTI3LDQxICsxMjcsNDEgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNvZGVyIDw8IGNvbnRleHQudGV4dFJlY3Rz
OwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+IEFyZ3VtZW50
Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD4gQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQgY29udGV4
dDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZv
cmU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0
QmVmb3JlOwogICAgIGRlY29kZXIgPj4gY29udGV4dEJlZm9yZTsKICAgICBpZiAoIWNvbnRleHRC
ZWZvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5jb250ZXh0
QmVmb3JlID0gKmNvbnRleHRCZWZvcmU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFRleHQ7
CiAgICAgaWYgKCFzZWxlY3RlZFRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSAqc2VsZWN0ZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEFmdGVyOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEFmdGVyOwogICAgIGRlY29kZXIg
Pj4gY29udGV4dEFmdGVyOwogICAgIGlmICghY29udGV4dEFmdGVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gKmNvbnRleHRBZnRlcjsK
IAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IG1hcmtlZFRleHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBtYXJrZWRUZXh0Owog
ICAgIGRlY29kZXIgPj4gbWFya2VkVGV4dDsKICAgICBpZiAoIW1hcmtlZFRleHQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5tYXJrZWRUZXh0ID0gKm1hcmtlZFRl
eHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBhbm5vdGF0ZWRU
ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gYW5ub3Rh
dGVkVGV4dDsKICAgICBkZWNvZGVyID4+IGFubm90YXRlZFRleHQ7CiAgICAgaWYgKCFhbm5vdGF0
ZWRUZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuYW5ub3Rh
dGVkVGV4dCA9ICphbm5vdGF0ZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVu
dEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHNlbGVj
dGVkUmFuZ2VJbk1hcmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFJhbmdlSW5NYXJr
ZWRUZXh0OwogICAgIGlmICghc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZAogICAgIGVuY29kZXIgPDwgcmVxdWVzdC50ZXh0SW5wdXRDb250ZXh0OwogfQogCi1PcHRp
b25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0PiBBcmd1bWVudENvZGVy
PFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0OwogCkBAIC0xOTgsNyArMTk4LDcgQEAgT3B0aW9uYWw8
V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD4gQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkRvY3VtZW50RWQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QucmVjdCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJD
b3JlOjpFbGVtZW50Q29udGV4dD4+IG9wdGlvbmFsVGV4dElucHV0Q29udGV4dDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+PiBvcHRpb25h
bFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBvcHRpb25hbFRleHRJbnB1dENvbnRl
eHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJbnB1dENvbnRleHQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFu
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAppbmRleCBjNDQ3
OWUxYTYwNDEzODg5NjQ5OWU5NDkxMWU0MTNjZDQzYTliZDdkLi5kNjNkYzUzOWI0N2ZkMTJmNmQy
ZDkyMTdjY2U3NjhiYzY5NjNhZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUm
IGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIGJhc2UpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0
aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFu
Z2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGJhc2UpCiB7CiAgICAg
QVNTRVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CiAgICAgV2ViQ29yZTo6
Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFuZ2UubG9jYXRpb24sIGVkaXRpbmdSYW5n
ZS5sZW5ndGggfTsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnMKICAg
ICByZXR1cm4gV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgqcGFyYWdy
YXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSk7CiB9CiAKLUVkaXRpbmdSYW5n
ZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitFZGl0aW5nUmFuZ2UgRWRpdGluZ1Jhbmdl
Ojpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgQVNTRVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRp
dmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDoKICAgICBlbmNvZGVyIDw8IGVkaXRp
bmdSYW5nZS5sZW5ndGg7CiB9CiAKLU9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1
bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1bWVudENvZGVyPFdlYktp
dDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgZWRpdGluZ1JhbmdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5n
ZS5oCmluZGV4IGYxOWI0NDNmMGRjNzE5YTc0ODM1Yzc4Yzc0YjE2NTNkOTQxMWExNDAuLjIwNWZm
MjYxNzcwYjM1ZWJkNWI5NGY4OWM5NzU4MDAwZmQ0OGFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRpbmdSYW5nZS5oCkBAIC00MSw3ICs0MSw3IEBAIGVudW0gY2xhc3MgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdyYXBoLAogfTsKIAotLy8gRklYTUU6IFJl
cGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KKy8vIEZJWE1FOiBSZXBs
YWNlIHRoaXMgd2l0aCBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0
aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAgICAgICAgIDogbG9jYXRpb24obm90Rm91
bmQpCkBAIC01OCw4ICs1OCw4IEBAIHN0cnVjdCBFZGl0aW5nUmFuZ2UgewogICAgIC8vIChub3RG
b3VuZCwgMCkgaXMgbm90YWJseSB2YWxpZC4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBsb2NhdGlvbiArIGxlbmd0aCA+PSBsb2NhdGlvbjsgfQogCi0gICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiB0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOwotICAgIHN0YXRpYyBFZGl0aW5nUmFuZ2UgZnJvbVJh
bmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpF
ZGl0YWJsZVJvb3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiB0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJv
b3QpOworICAgIHN0YXRpYyBFZGl0aW5nUmFuZ2UgZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBFZGl0aW5nUmFuZ2VJ
c1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAK
ICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogICAgIEVkaXRpbmdSYW5nZShOU1JhbmdlIHJhbmdlKQpA
QCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgRWRpdGluZ1JhbmdlIHsKIG5hbWVzcGFjZSBJUEMgewog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKaW5kZXggODlmZWRlOTdiODA2ZjIzNzMxMWJkY2Y2NDQ5YjkzNjNhNDIwMTVhNS4uZmRkODdl
ZjhmMmIzMDI3MjM3NDczMTI1ZjQxMmFmZjM0ZmMzNTc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RM
YXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxG
b250QXR0cmlidXRlcz4+IG9wdGlvbmFsRm9udEF0dHJpYnV0ZXM7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPj4gb3B0aW9uYWxGb250QXR0cmlidXRlczsK
ICAgICBkZWNvZGVyID4+IG9wdGlvbmFsRm9udEF0dHJpYnV0ZXM7CiAgICAgaWYgKCFvcHRpb25h
bEZvbnRBdHRyaWJ1dGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dG9yU3RhdGUuaAppbmRleCBlMThmZDA3Y2ZlNjNmYTRlZjI5ZmE1M2U1ZjkwMGFlNWI0ZDdiYjA2
Li40ODgwNTM4ZDU2NGQzMWVmMTZmOTNjOTA2N2RjODZjY2VhNzM4NjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUg
ewogICAgICAgICB1aW50NjRfdCBzdXJyb3VuZGluZ0NvbnRleHRTZWxlY3Rpb25Qb3NpdGlvbiB7
IDAgfTsKICNlbmRpZgogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVz
PiBmb250QXR0cmlidXRlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0
cmlidXRlcz4gZm9udEF0dHJpYnV0ZXM7CiAKICAgICAgICAgYm9vbCBjYW5DdXQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIGNhbkNvcHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAppbmRleCAwNzY0ZGE4YTYwZWNi
Yzg4N2UzNTE3MjFlZDUzODI1MTBkYWI1NzBkLi45NjkwNjYxYjUxMzczMzI2OGIyNmRkN2Q5ZjVl
ODJkY2U0MDY1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIE9wdGlvbkl0ZW06OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwYXJlbnRH
cm91cElEOwogfQogCi1PcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVtOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVt
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE9wdGlvbkl0ZW0gcmVzdWx0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oCmluZGV4IDlkMDE2NDlkZTI5
NTg1OWIyMjMwMTI5N2M4NWJiYzE5MmZjZWY0NzIuLjRkYjhlMzUyNDhiODg5MGYxYzIxOWI4YWJj
OGFmMTAwMjZmOGY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmgKQEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IE9wdGlvbkl0ZW0gewog
ICAgIGludCBwYXJlbnRHcm91cElEIHsgMCB9OwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPE9wdGlvbkl0ZW0+IGRlY29kZShJUEM6
OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxPcHRpb25JdGVtPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CiB9OwogCiB1c2luZyBGb2N1c2VkRWxlbWVudElkZW50aWZpZXIgPSB1
aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKaW5kZXggOGRjZjdk
NzQ3YjQwODI3NDlmNTE3ZDg5YmMyMTgzYWY5ZThiNDYwNi4uODUxNmY2MjA5MjM1MjE5MjU5OWQz
ZTJmZmIwNDNmYjY1MTNkODgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJh
bWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5j
cHAKQEAgLTM5LDI5ICszOSwyOSBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwYXJlbnRGcmFtZUlEOwogfQog
Ci1PcHRpb25hbDxGcmFtZUluZm9EYXRhPiBGcmFtZUluZm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGcmFtZUluZm9EYXRhPiBGcmFtZUluZm9EYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGJvb2w+IGlz
TWFpbkZyYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNNYWluRnJhbWU7CiAgICAgZGVj
b2RlciA+PiBpc01haW5GcmFtZTsKICAgICBpZiAoIWlzTWFpbkZyYW1lKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiByZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBy
ZXF1ZXN0OwogICAgIGRlY29kZXIgPj4gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdpbjsKICAgICBkZWNvZGVyID4+IHNlY3Vy
aXR5T3JpZ2luOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBp
ZiAoIWZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBw
YXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBh
cmVudEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggZmViODAwNDU1YTdmNDNjNDQxNWU1ODBlYjk2ZjFlYjhl
MDVjZDQ5My4uZjQ5ZjNhMWRlNDEzMDIzMWVhMTE0NmNmMjI5NThlOTg3MDg5MmE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAtMzgsMTMgKzM4LDEzIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGcmFtZUluZm9E
YXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBib29sIGlzTWFpbkZyYW1lIHsgZmFs
c2UgfTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW47Ci0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9G
cmFtZVRyZWVOb2RlRGF0YS5oCmluZGV4IDliN2ZiNjUyMTlkOWY5NDc2NGJhNzFkN2I3Y2QxMDcx
OTdmN2FhN2UuLmYzOTFmODcxOTc3ZTAzNjhmODIyNTg2YmQ1NDg5NjNlYjRmZjhiMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaApAQCAtNDEsMTQgKzQxLDE0IEBA
IHN0cnVjdCBGcmFtZVRyZWVOb2RlRGF0YSB7CiAgICAgICAgIGVuY29kZXIgPDwgY2hpbGRyZW47
CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZyYW1lVHJl
ZU5vZGVEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gaW5mbzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGcmFt
ZUluZm9EYXRhPiBpbmZvOwogICAgICAgICBkZWNvZGVyID4+IGluZm87CiAgICAgICAgIGlmICgh
aW5mbykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAotICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+PiBjaGlsZHJlbjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+PiBjaGlsZHJlbjsKICAgICAg
ICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICAgICAgaWYgKCFjaGlsZHJlbikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCmluZGV4IGJiZDIwZTJmNzhjNzg0N2Vl
OTVkODFkZDNmOTI3Njk2MGE5NDQzN2EuLmYwY2JhZWU5ZWFmYmFiYTc2NzQ1ZDA4MDU2ZDM1MDFj
MjMxNWMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3ND
b25uZWN0aW9uUGFyYW1ldGVycy5oCkBAIC01MSwyMiArNTEsMjIgQEAgc3RydWN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAjaWYgSEFW
RShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgICAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiB3
ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKICAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9j
ZXNzSWRlbnRpdHlUb2tlbjsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAotICAgICAgICBPcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGVMYW5ndWFnZXM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBkZWNvZGVy
ID4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBpZiAoIW92ZXJyaWRlTGFuZ3VhZ2VzKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShJUENfVEVTVElO
R19BUEkpCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZv
clRlc3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0
aW5nOwogICAgICAgICBpZiAoIWlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaAppbmRleCBjNWI3ZDE3MTg2
Yjg3MjliY2M5NWE4MDAzNDI1YzY1N2E0MjMwYWRiLi42ZDQyYmViMTAyNmI2MjYxMmY3ZWQxN2Ji
MTU3NjUwYzNjN2ZjNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0
IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIHsKICAgICBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uIHJlYXNvbiB7IEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH07CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdl
QXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTU3LDI0ICs1NywyNCBAQCB2b2lkIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1l
bnRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQcm9jZXNz
V2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBpdGVt
QnVmZmVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gaXRlbUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBpZiAoIWl0ZW1CdWZmZXJJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBvZmZzZXQ7CiAgICAgZGVjb2Rl
ciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBkZXN0aW5hdGlvbkltYWdlQnVmZmVy
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlm
aWVyOwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwUmVh
c29uPiByZWFzb247CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwUmVhc29uPiBy
ZWFzb247CiAgICAgZGVjb2RlciA+PiByZWFzb247CiAgICAgaWYgKCFyZWFzb24pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9H
YW1lcGFkL0dhbWVwYWREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2Ft
ZXBhZERhdGEuY3BwCmluZGV4IDQ3NGE1NDNkMjZiZmM5ZWFkYmIxM2JlNGUwNmIyZjE5YTRjYzc3
ODkuLmZlY2Q2MThlNTJlOWJlNGVhZDg4ZWMwNzkwMjEzMGM0YWIxMzY5N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgR2FtZXBhZERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2luZGV4IDw8IG1faWQgPDwgbV9tYXBwaW5nIDw8IG1fYXhpc1ZhbHVl
cyA8PCBtX2J1dHRvblZhbHVlcyA8PCBtX2xhc3RVcGRhdGVUaW1lOwogfQogCi1PcHRpb25hbDxH
YW1lcGFkRGF0YT4gR2FtZXBhZERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPEdhbWVwYWREYXRhPiBHYW1lcGFkRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBHYW1lcGFkRGF0YSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5tX2lzTnVsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9H
YW1lcGFkL0dhbWVwYWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVw
YWREYXRhLmgKaW5kZXggNzk5MmMxODBhNTMwOWFhYTNiMjA2NTkwMTI0MmEyYTlkZDJiYzQ4MS4u
MWFiYmIzOGQ0MTczOTBlOTczOGMxOTFkMmQwZWM4OTczNDE5NWVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgR2FtZXBhZERhdGEodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IFN0cmluZyYgbWFwcGluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZEdhbWVwYWRWYWx1
ZT4mIGF4aXNWYWx1ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRHYW1lcGFkVmFsdWU+
JiBidXR0b25WYWx1ZXMsIE1vbm90b25pY1RpbWUgbGFzdFVwZGF0ZVRpbWUpOwogCiAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdhbWVw
YWREYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
R2FtZXBhZERhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDlmMGY3MzNhMDBhYjg2MWM4Yzc2NTJmNmQ1MGQxMGM4YTU2NzRjY2Yu
LmUzZGQ4MDFmZDI0MTlmZDhmOTZiMzE1ODM4NmNlMTViOTMzODE3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRh
dGEpCiAKICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKICAgICAgICAgLy8gRm9ybURhdGFSZWZlcmVu
Y2UgZW5jb2RlciAvIGRlY29kZXIgdGFrZXMgY2FyZSBvZiBwYXNzaW5nIGFuZCBjb25zdW1pbmcg
dGhlIG5lZWRlZCBzYW5kYm94IGV4dGVuc2lvbnMuCi0gICAgICAgIE9wdGlvbmFsPElQQzo6Rm9y
bURhdGFSZWZlcmVuY2U+IGZvcm1EYXRhUmVmZXJlbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+IGZvcm1EYXRhUmVmZXJlbmNlOwogICAgICAgICBkZWNv
ZGVyID4+IGZvcm1EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoIWZvcm1EYXRhUmVmZXJlbmNl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODMsNyArODMsNyBAQCBib29sIExvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYg
ZGF0YSkKICAgICAgICAgZGF0YS5yZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhUmVmZXJlbmNl
LT50YWtlRGF0YSgpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBk
YXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5wcm92aXNpb25hbExvYWRFcnJvclVS
TFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+PiB3ZWJzaXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+PiB3ZWJzaXRlUG9saWNpZXM7CiAg
ICAgZGVjb2RlciA+PiB3ZWJzaXRlUG9saWNpZXM7CiAgICAgaWYgKCF3ZWJzaXRlUG9saWNpZXMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBib29sIExvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0
YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubG9ja0JhY2tGb3J3YXJkTGlzdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZGVjb2RlciA+PiBjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3Rvcnk7CiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmlu
ZGV4IGRlNTQ5ZTg0NTQ1MGIxOGQ1NGY1NjU5MTNhMzk1NDNjMTczNzMwNjkuLjJmMGRmZDIzMWY1
ZWU2M2FmODUyNzg3MmU1OGIxMzhkYTJmZTdhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuaApAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAg
IFN0cmluZyB1bnJlYWNoYWJsZVVSTFN0cmluZzsKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkxTdHJpbmc7CiAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXM7CiAKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OwogICAgIGJvb2wgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHsgZmFsc2UgfTsKQEAgLTcwLDE1ICs3MCwxNSBAQCBzdHJ1Y3QgTG9hZFBh
cmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29y
ZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBs
b2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsK
ICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotICAgIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7
CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOwotICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGU7
CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRlbnRGaWx0
ZXJFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggZmQy
YjU1ZjQwZmRkM2Q4MmQ2ZDY5NDdkYzMzYWQzMWYyNGY0YzFjNy4uZWU4Y2FjMWM5ODAwMzljNGEz
NmRlNTUwMWFiN2YxMzVlNzEwZDA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaApAQCAtNjgsMTQgKzY4LDE0IEBAIHB1YmxpYzoKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiwgY29u
c3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcyk7Ci0gICAgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYpOworICAgIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5n
ZT4mJik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYg
a2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1
YWxLZXlDb2RlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzLCBib29sIGlzS2V5cGFkLCBPcHRp
b25TZXQ8TW9kaWZpZXI+KTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW51bSBj
bGFzcyBIYW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICosIEhhbmRsZWRCeUlucHV0TWV0aG9kKTsKICNl
bGlmIFVTRShMSUJXUEUpCiAgICAgZW51bSBjbGFzcyBIYW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJv
b2wgeyBObywgWWVzIH07Ci0gICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lu
cHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5nJiwgSGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlv
bmFsPEVkaXRpbmdSYW5nZT4mJik7CisgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qg
d3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5nJiwgSGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYpOwogI2VsaWYgUExBVEZPUk0oV0lO
KQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0s
IExQQVJBTSwgVmVjdG9yPE1TRz4mJiBwZW5kaW5nQ2hhckV2ZW50cyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCA5YjhkZDQyYjJlM2Nj
MmU2ZjZjMjRiMjEwNGM2ODJjYjhmOThlYTczLi4wMDE1NThkZDU4ZjRkODVmMzYwZDU3MTFjYWEw
M2RiMzM4ODkwMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJN
b3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVu
dC5oCkBAIC02NCw5ICs2NCw5IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KE5T
RXZlbnQgKiwgTlNFdmVudCAqbGFzdFByZXNzdXJlRXZlbnQsIE5TVmlldyAqKTsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNl
RXZlbnQmKTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiwgaW50LCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50
KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4pOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBz
aG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNl
dDxNb2RpZmllcj4gbW9kaWZpZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+LCBXZWJD
b3JlOjpQb2ludGVySUQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpOworICAgIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4g
bW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4sIFdlYkNvcmU6OlBv
aW50ZXJJRCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSk7CiAgICAgZXhwbGljaXQgTmF0aXZl
V2ViTW91c2VFdmVudChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRl
eCBjZmU4ZjNlMzRmM2E4OTdmMjhjMTYyZjBhNjdmYjY2ZDc3YTE1Y2UzLi5lMzRhYzVlNTdmNDEx
ZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTcwLDI0ICs3MCwyNCBAQCBzdHJ1
Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogICAgICAgICBlbmNvZGVyIDw8IGNv
bnRleHREYXRhOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNMb2Fk
ZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVz
dGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKLSAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CiAgICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8UmVxdWVz
dERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRhOwogICAgICAgICBpZiAoIWNvbnRleHREYXRh
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAppbmRleCA4MDQxNDE0ZWI1MDBiNmRjMDM2NWM1
OWU4NzMxYzAwZDQzNTljNThlLi5mYTBjYTM3NGJlNWJkYTg0NTA0NGQzM2JjYTFlM2YzZGRkNDJi
ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsKIH0KIAotT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25B
Y3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlv
blR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYXZpZ2F0aW9uVHlwZSkpCkBAIC03NSwx
MiArNzUsMTIgQEAgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rp
b25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN5bnRoZXRpY0NsaWNrVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXI7CiAgICAgaWYgKCF1c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxib29sPiBjYW5IYW5kbGVSZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gY2FuSGFuZGxlUmVxdWVzdDsKICAgICBkZWNvZGVyID4+IGNhbkhhbmRsZVJlcXVl
c3Q7CiAgICAgaWYgKCFjYW5IYW5kbGVSZXF1ZXN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtODksNyArODksNyBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2
aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBkb3dubG9hZEF0
dHJpYnV0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZG93bmxvYWRBdHRyaWJ1dGU7CiAg
ICAgZGVjb2RlciA+PiBkb3dubG9hZEF0dHJpYnV0ZTsKICAgICBpZiAoIWRvd25sb2FkQXR0cmli
dXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTgsMzcgKzk4LDM3IEBAIE9w
dGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNSZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVkaXJlY3Q7CiAgICAgaWYgKCFp
c1JlZGlyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGRlY29kZXIgPj4gdHJlYXRBc1Nh
bWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGlmICghdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9u
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFz
T3BlbmVkRnJhbWVzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzT3BlbmVkRnJhbWVzOwog
ICAgIGRlY29kZXIgPj4gaGFzT3BlbmVkRnJhbWVzOwogICAgIGlmICghaGFzT3BlbmVkRnJhbWVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gb3Bl
bmVkQnlET01XaXRoT3BlbmVyOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3BlbmVkQnlET01X
aXRoT3BlbmVyOwogICAgIGRlY29kZXIgPj4gb3BlbmVkQnlET01XaXRoT3BlbmVyOwogICAgIGlm
ICghb3BlbmVkQnlET01XaXRoT3BlbmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiByZXF1ZXN0ZXJPcmln
aW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHJlcXVl
c3Rlck9yaWdpbjsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Rlck9yaWdpbjsKICAgICBpZiAoIXJl
cXVlc3Rlck9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiB0YXJnZXRC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPj4gdGFyZ2V0QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI7CiAgICAgaWYgKCF0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4+IHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI+PiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJj
ZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xNDEsMTIgKzE0MSwxMiBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2
aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobG9ja0JhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNsaWVudFJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OwogICAgIGRlY29kZXIgPj4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
OwogICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBkZWNvZGVyID4+IHByaXZhdGVDbGlja01lYXN1
cmVtZW50OwogICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW9uQWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRh
dGEuaAppbmRleCAzMTlmMmY5ODJmYzUwYWIzNDBiNGM2Mjg1Zjc5MWUwZTRlNTNiYzYxLi4yOTE2
MTk3ZWIxY2JlMjI2YTY1YjUwNjRiMzE5OWQ3MjNlOWY1NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25B
Y3Rpb25EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIFdl
YkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlIHsgV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGU6Ok90aGVyIH07CiAgICAgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzOwpAQCAtNTcsMTIgKzU3LDEyIEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAg
ICAgYm9vbCBoYXNPcGVuZWRGcmFtZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgb3BlbmVkQnlET01X
aXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcmVx
dWVzdGVyT3JpZ2luOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBzb3VyY2VCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2Vi
Q29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8g
fTsKICAgICBXVEY6OlN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHByaXZhdGVDbGlja01l
YXN1cmVtZW50OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKaW5kZXggM2U0MjcwZGNhZjMwZjg2
MzllZmUxMjYyNTM2YmE5ZTZmNWRkMGI5Zi4uNWY5M2RjNTRjMjU2NTg3NjI5NGJkMWM2YmIxM2Q1
OGZlMmQyODQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtUG9wdXBNZW51RGF0YT4gUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0
YTsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXggMDY2NGYyYzViMmJlZjdiZDQ3ZTJiM2Q5
MjE1ZTY2NWE0MmU4MDkwNS4uMjg5NDQyZWU1MmU4ZjM0ZmUxMTI1MjlhNDRlMWY4YzFkMDBiYThm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKQEAg
LTQyLDcgKzQyLDcgQEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAKICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEZvbnRJ
bmZvIGZvbnRJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
UElkZW50aWZpZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVu
dGlmaWVyRGF0YS5jcHAKaW5kZXggMjY2ODhlOTkxN2RlZTVkZGE1NjM0ODQ3NzJkMjUyZjExNGFk
OWQxMS4uYTI5Yjg0YzQxNzRhNjUxOGJiNThlYzYzNGE2Y2IxOTY4MmRmMzNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgTlBJZGVudGlmaWVyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8PCBtX251bWJlcjsKIH0KIAotT3B0aW9u
YWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVy
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBOUElkZW50aWZpZXJE
YXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzU3RyaW5nKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0
YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKaW5k
ZXggMDhlYTc0NjNmOGFhODVlZGJkYjIxMjhhZTI2YTBiNzdkY2EyZGM4ZS4uYzRhYTI0ZjExMDE2
ZmExNmNlMTljZTU0MzgwYzRkNzk0NDRmYWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIE5QSWRlbnRpZmllciBjcmVhdGVOUElkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxOUElkZW50
aWZpZXJEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TlBJZGVudGlmaWVyRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBWYXJpYW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05Q
VmFyaWFudERhdGEuY3BwCmluZGV4IGUwZGViMzYwMjY4MGI5ODRlYzVhOTBhMzRmYzRlNzhjZjBh
NzM4MTQuLjNkYjkyYmRjOTQwNjdhMTJmZDY4NTJhNjE3OTZkMWVhYWEwMTA0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmNwcApAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgTlBWYXJpYW50RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICB9CiB9CiAKLU9wdGlvbmFsPE5QVmFyaWFudERhdGE+IE5QVmFyaWFudERh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5QVmFyaWFu
dERhdGE+IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgTlBWYXJpYW50RGF0YSByZXN1bHQ7CiAgICAgdWludDMyX3QgdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmgKaW5kZXggNjFlOTRkMjk4NWEzNTQx
OTQ4ZWYwZDUwNjVhY2U3NGI1Y2JlNGYxNC4uYzU4ZTJkNTA0YmFkOWI3NDZkNjM3NDI1NzkwNWNj
ZTM4ZmI3M2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZh
cmlhbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnRE
YXRhLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxOUFZhcmlhbnREYXRh
PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TlBWYXJp
YW50RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIHVpbnQzMl90
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDE5MDExMjIx
ZGNmYjVhNDNmOWJkMDNiOWRmMmUwYjg1YjE0OWUzNTAuLmMzZTZlMGE5ZDgxOTE1NmQ2NTQyZTc1
NmFlYTdmOTc1M2U1NjJmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGlj
eURlY2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApA
QCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsg
fTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBz
dGQ6Om51bGxvcHQgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uIHsg
V2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRCB7IHN0ZDo6bnVs
bG9wdCB9OwotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
c0RhdGEgeyBzdGQ6Om51bGxvcHQgfTsKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGEgeyBz
dGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApAQCAtNTUsMzkgKzU1LDM5IEBAIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UG9saWN5RGVj
aXNpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBvbGljeURlY2lzaW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVjb2RlZElkZW50aWZp
ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
PiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSWRlbnRpZmll
cjsKICAgICAgICAgaWYgKCFkZWNvZGVkSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4+IGRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAg
ZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAg
aWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5QWN0
aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBvbGljeUFjdGlvbj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBk
ZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBpZiAoIWRlY29kZWRQb2xpY3lBY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBkZWNvZGVkTmF2aWdhdGlvbklEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBkZWNvZGVkTmF2aWdhdGlvbklEOwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWROYXZpZ2F0
aW9uSUQ7CiAgICAgICAgIGlmICghZGVjb2RlZE5hdmlnYXRpb25JRCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RG93bmxvYWRJ
RD4+IGRlY29kZWREb3dubG9hZElEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9u
YWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3dubG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IGRl
Y29kZWREb3dubG9hZElEOwogICAgICAgICBpZiAoIWRlY29kZWREb3dubG9hZElEKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPj4gZGVjb2Rl
ZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFdlYnNpdGVQ
b2xpY2llc0RhdGE7CiAgICAgICAgIGlmICghZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SVENOZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsu
Y3BwCmluZGV4IGI4NGFmMzdiNzE4ZmFlOGFhYjAzZDUwZWM2ZjJmZGFkMzIxODljOTguLjE4OTNi
YzdmZWRiZGE1MWI2OTljMzIwNjVjYjA2YTRjM2M3YTdkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JU
Q05ldHdvcmsuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHJ0Yzo6TmV0d29yayBSVENOZXR3b3JrOjp2
YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcms7CiB9CiAKLWF1dG8gUlRDTmV0d29yazo6
SVBBZGRyZXNzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxJUEFk
ZHJlc3M+CithdXRvIFJUQ05ldHdvcms6OklQQWRkcmVzczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+CiB7CiAgICAgSVBBZGRyZXNzIHJl
c3VsdDsKICAgICBpbnQgZmFtaWx5OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHJ0Yzo6U29ja2V0QWRk
cmVzcyBSVENOZXR3b3JrOjppc29sYXRlZENvcHkoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiB2
YWx1ZSkKICAgICByZXR1cm4gcnRjOjpTb2NrZXRBZGRyZXNzKGNvcHkpOwogfQogCi1hdXRvIFJU
Q05ldHdvcms6OlNvY2tldEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+
IE9wdGlvbmFsPFNvY2tldEFkZHJlc3M+CithdXRvIFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3M6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8U29ja2V0QWRk
cmVzcz4KIHsKICAgICBTb2NrZXRBZGRyZXNzIHJlc3VsdDsKICAgICB1aW50MTZfdCBwb3J0OwpA
QCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8gUlRDTmV0d29yazo6U29ja2V0QWRkcmVzczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8U29ja2V0CiAgICAgaWYgKGlzVW5y
ZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIE9wdGlvbmFsPElQQWRkcmVz
cz4gaXBBZGRyZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBpcEFkZHJlc3M7CiAg
ICAgZGVjb2RlciA+PiBpcEFkZHJlc3M7CiAgICAgaWYgKCFpcEFkZHJlc3MpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBSVENOZXR3b3JrOjpT
b2NrZXRBZGRyZXNzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgUlRDTmV0d29yazo6SVBBZGRyZXNzKHZhbHVlLmlwYWRkcigpKTsKIH0KIAotT3B0
aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBSVENOZXR3b3JrIHJlc3VsdDsKICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgbmFtZSwgZGVzY3JpcHRpb247CkBAIC0xNzcsNyArMTc3LDcgQEAgT3B0aW9uYWw8
UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBzdGQ6OnN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkZXNjcmlwdGlvbi5kYXRhKCkpLCBkZXNjcmlwdGlvbi5zaXpl
KCkpOwotICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gcHJlZml4OworICAgIHN0ZDo6b3B0aW9uYWw8
SVBBZGRyZXNzPiBwcmVmaXg7CiAgICAgZGVjb2RlciA+PiBwcmVmaXg7CiAgICAgaWYgKCFwcmVm
aXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMDIsNyArMjAyLDcgQEAgT3B0
aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaXBzLnJlc2VydmUo
bGVuZ3RoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyArK2lu
ZGV4KSB7Ci0gICAgICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gYWRkcmVzczsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxJUEFkZHJlc3M+IGFkZHJlc3M7CiAgICAgICAgIGRlY29kZXIgPj4gYWRkcmVz
czsKICAgICAgICAgaWYgKCFhZGRyZXNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuaAppbmRleCBmOWNlOWFiNzk4NWM5MGVkOTVjZWI4
YjMyYzBjMjNlMjZkMGQ4MzJhLi4yNDg5NDFhOTcwMWQyNDI1MjhmN2U3ODBlMDMyMGY5YmNiNGQ3
YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUlRDTmV0d29yay5oCkBAIC00NiwxNCArNDYsMTQgQEAgc3Ry
dWN0IFJUQ05ldHdvcmsgewogICAgIHJ0Yzo6TmV0d29yayB2YWx1ZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJU
Q05ldHdvcms+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSVENOZXR3b3JrPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBzdHJ1Y3QgSVBBZGRy
ZXNzIHsKICAgICAgICAgSVBBZGRyZXNzKCkgPSBkZWZhdWx0OwogICAgICAgICBleHBsaWNpdCBJ
UEFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFkZHJlc3MpOiB2YWx1ZShhZGRyZXNzKSB7
IH0KIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAg
c3RhdGljIE9wdGlvbmFsPElQQWRkcmVzcz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
IAogICAgICAgICBydGM6OklQQWRkcmVzcyB2YWx1ZTsKICAgICB9OwpAQCAtNjUsNyArNjUsNyBA
QCBzdHJ1Y3QgUlRDTmV0d29yayB7CiAgICAgICAgIGV4cGxpY2l0IFNvY2tldEFkZHJlc3MoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKTogdmFsdWUoYWRkcmVzcykgeyB9CiAKICAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBP
cHRpb25hbDxTb2NrZXRBZGRyZXNzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNvY2tldEFkZHJlc3M+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
IAogICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MgdmFsdWU7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKaW5kZXggOWUyOTgzMDEyZDMzNTQ2M2VkZjUy
NzdjMmI1N2UyOWM0MzgwYmQ4OC4uMzU2ZjEwZDRhMmU4ODVmZTIwMzMxYmJhNDI2NGRlODkwMDc1
ZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgdm9pZCBSVENQYWNrZXRPcHRpb25zOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgb3B0aW9ucy5wYWNrZXRfdGltZV9wYXJhbXMu
c3J0cF9wYWNrZXRfaW5kZXg7CiB9CiAKLU9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1Bh
Y2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1BhY2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgcnRjOjpQYWNrZXRUaW1lVXBkYXRlUGFyYW1zIHBhcmFtczsKICAg
ICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsKQEAgLTU4LDE5ICs1OCwxOSBAQCBPcHRpb25h
bDxSVENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIG9wdGlvbnMuZHNj
cCA9IGRzY3A7CiAKLSAgICBPcHRpb25hbDxpbnQzMl90PiBwYWNrZXRJZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IHBhY2tldElkOwogICAgIGRlY29kZXIgPj4gcGFja2V0SWQ7CiAgICAg
aWYgKCFwYWNrZXRJZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBvcHRpb25z
LnBhY2tldF9pZCA9IHBhY2tldElkLnZhbHVlKCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJ0cFNl
bmR0aW1lRXh0ZW5zaW9uSWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHJ0cFNlbmR0aW1lRXh0
ZW5zaW9uSWQ7CiAgICAgZGVjb2RlciA+PiBydHBTZW5kdGltZUV4dGVuc2lvbklkOwogICAgIGlm
ICghcnRwU2VuZHRpbWVFeHRlbnNpb25JZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbXMucnRwX3NlbmR0aW1lX2V4dGVuc2lvbl9pZCA9IHJ0cFNlbmR0aW1lRXh0ZW5z
aW9uSWQudmFsdWUoKTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IHNydHBBdXRoVGFnTGVuZ3Ro
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gc3J0cEF1dGhUYWdMZW5ndGg7CiAgICAgZGVj
b2RlciA+PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBpZiAoIXNydHBBdXRoVGFnTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODUsNyArODUsNyBAQCBPcHRpb25hbDxS
VENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICBtZW1jcHkocGFyYW1zLnNydHBfYXV0aF9rZXkuZGF0YSgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcnRwQXV0aEtleS5kYXRhKCkpLCBzcnRwQXV0aEtl
eS5zaXplKCkgKiBzaXplb2YoY2hhcikpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGludDY0X3Q+
IHNydHBQYWNrZXRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHNydHBQYWNrZXRJ
bmRleDsKICAgICBkZWNvZGVyID4+IHNydHBQYWNrZXRJbmRleDsKICAgICBpZiAoIXNydHBQYWNr
ZXRJbmRleCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JUQ1BhY2tldE9wdGlvbnMuaAppbmRleCA1ZWY2ZDlmZDVhNmE2Zjk5N2UxZjNiMjNjYmIxYmJm
ZTFiNDAzNzdhLi5kYjNiZGM2ZTI0M2UyYTUyNzY4ZDU3ODM0NWU5YWIzYzBjZTcyMWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQYWNrZXRPcHRpb25zLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5oCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUlRDUGFja2V0T3B0aW9ucyB7CiAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1BhY2tl
dE9wdGlvbnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSVENQYWNrZXRPcHRpb25zPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBydGM6OlBh
Y2tldE9wdGlvbnMgb3B0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKaW5kZXggYjEyMzZkMjNhMGNmYjJhOGRjOGFkYjFmY2M5YmE5MjQ5MTI2
MWRlNi4uMWMxMmU5ODRlZWY0OTAwZDg5N2IxNThhMTg0YmM4ZWZjYWI2ZmNkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtOTksNyArOTksNyBA
QCBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRp
b25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxC
dWZmZXI+IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDFmMTkwNDNhYWE0
YWE4OWEwOGY0MzU3ZDQ5MzRhNWZiNzczOGE3NDQuLjhjNmRiZTEwYmFhNjg0YzU2Zjc1NjI4NjEx
NzNmMjU4MGRmZDViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGVzZSBhbGwg
QVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVs
QnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYg
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAppbmRleCA3NTIzY2I3OWI4OWEzMjQyNTFiMWM4ODMyZjNlYjUwNmJiOGU4YTU5
Li5hZTlkMmY4ODY1MDVjMjA1ZmMxYWFmY2QyMjAwZGM2ZTZlNDMwZDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgQnVmZmVy
IG1fZnJvbnRCdWZmZXI7CiAgICAgQnVmZmVyIG1fYmFja0J1ZmZlcjsKICAgICBCdWZmZXIgbV9z
ZWNvbmRhcnlCYWNrQnVmZmVyOwotICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZT4gbV9idWZmZXJIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGU+IG1fYnVmZmVySGFuZGxlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRo
cmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IG1fZnJvbnRCdWZmZXJGbHVzaGVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggYjdhMjhkZDc1NzRhNTczODMzNmY2NjFlNDgz
NzBkZWJjYTJmOTUwMi4uZDBkYWRjNzIyNmIxYTI0ZWU2Mzc5ZDIxNThhOTc4Mzc3ZDI5MjQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsK
IAotICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOworICAgIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oCmluZGV4IDhhZTJkYWJkYjc5ZDdlM2U2ZDM5ZDYwYjM5YmJkNWM1ZTIwMzA4MzAuLjljZjI3
ZTFmNGM0ODVmOTI1YWUyZDhkZjFhNzcxYTFkMTgyODU3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBMYXll
ckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgdHlwZTsKQEAgLTMwNSw3ICsz
MDUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0ZS52YWx1ZSgpOyB9CiAgICAgdm9pZCBzZXRFZGl0b3JT
dGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpIHsgbV9lZGl0b3JTdGF0ZSA9IGVk
aXRvclN0YXRlOyB9CiAKLSAgICBPcHRpb25hbDxEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ+
IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlSUQ+IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9CiAgICAgdm9pZCBzZXREeW5hbWljVmll
d3BvcnRTaXplVXBkYXRlSUQoRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEIHJlc2l6ZUlEKSB7
IG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0gcmVzaXplSUQ7IH0KICAgICAKIHByaXZh
dGU6CkBAIC0zNDUsOCArMzQ1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld3BvcnRNZXRh
VGFnQ2FtZUZyb21JbWFnZURvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNJblN0YWJs
ZVN0YXRlIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFsPEVkaXRvclN0YXRlPiBtX2VkaXRvclN0
YXRlOwotICAgIE9wdGlvbmFsPER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRD4gbV9keW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxFZGl0b3JTdGF0ZT4gbV9l
ZGl0b3JTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJ
RD4gbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAwZmZjODJiNDk3
ZTU2YTJlZjFlOWI0MjkxOWE2MGMwYjVlMDVkNGM1Li4zMDYxNGVmMjJlYWMzZTczOGIxNTgzOTFj
NDVjZTM4YmY4MWM4YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3Jl
YXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlCiAjZW5kaWYKIH0KIAotYXV0
byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPExheWVyQ3JlYXRpb25Qcm9w
ZXJ0aWVzPgorYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblBy
b3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+CiB7CiAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMg
cmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmxheWVySUQpKQpAQCAtNTU0
LDcgKzU1NCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVz
dWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRXZlbnRSZWdpb25DaGFuZ2VkKSB7Ci0gICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkV2ZW50UmVnaW9uPiBldmVudFJlZ2lvbjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFdmVudFJlZ2lvbj4gZXZlbnRSZWdpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gZXZlbnRSZWdpb247CiAgICAgICAgIGlmICghZXZlbnRSZWdpb24pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVl
VHIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzSW5TdGFibGVTdGF0ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFuc2FjdGlvbkNh
bGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKICAgICBkZWNvZGVyID4+IGNhbGxiYWNrSURz
OwogICAgIGlmICghY2FsbGJhY2tJRHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCA1
ZDRhOTc4OGY0MzZkNjg3NmY0YWRjZWM4YTJjMmIyYjliYzExNTdmLi5iZTBlMjhiOTI1ZmU3MTRh
YTZlMjE1N2ZhNDlmYTc4NDI5NWU2ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFMKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQsIEZsb2F0UmVjdCwgc2V0TGF5b3V0Vmll
d3BvcnQpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luLCBGbG9hdFBvaW50LCBzZXRNaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbikKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4sIEZsb2F0UG9pbnQsIHNldE1h
eExheW91dFZpZXdwb3J0T3JpZ2luKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSwgT3B0aW9u
YWw8RmxvYXRTaXplPiwgc2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpCisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplLCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4sIHNldE92ZXJyaWRlVmlz
dWFsVmlld3BvcnRTaXplKQogCiAgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpIHsKICAgICAg
ICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nVUlTdGF0ZS5jcHAKaW5kZXggZThlYTM4Nzk1YjVkOTE3MWFjMGNjZTM2MTYzNmY0Yzk1ZmNj
NmNiNS4uNzA0MzVhOThlZTg0ODRkOGI1ZGVhNDc2YzhmNzBkOWNkMDI0OGE1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJ
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFJlbW90ZVNjcm9s
bGluZ1VJU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAg
IGVuY29kZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVVc2VyU2Nyb2xsczsKIH0KIAotT3B0aW9uYWw8
UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0
ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlIHVpU3RhdGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
VUlTdGF0ZS5oCmluZGV4IDU0NWJmYzUzOWIyMjMxMDk5ZmMxNjVmYjMyYzg0Mzc0NzIyNjZiMmUu
LjdiNTZkYjdiNzdlOGFlNWFkMDVkYTRkNzQxNzAwNjQ3YjkwYTI1NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ1VJU3RhdGUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1v
dGVTY3JvbGxpbmdVSVN0YXRlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OwogCiAgICAgT3B0aW9uU2V0PENoYW5nZXM+IGNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2No
YW5nZXM7IH0KICAgICB2b2lkIGNsZWFyQ2hhbmdlcygpIHsgbV9jaGFuZ2VzID0geyB9OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmgKaW5kZXggMDA4NjVjNjlkYmJkNjI0
Y2Q1Mjc0Yjk1M2UzZmVlMDdhMmVmMThjNC4uNGFhZTEzNDhjOGNhNzZiY2Q5MDZiMDE0ZGMzZDNl
MzdiZTBkNDJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaApAQCAt
NTQsOCArNTQsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyB7CiAgICAgfTsKICAgICAKICAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUxvYWRJRDsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOwogICAgIFVSTCBvcmlnaW5hbFVS
TDsKICAgICBTdHJpbmcgb3JpZ2luYWxIVFRQTWV0aG9kOwogICAgIFdhbGxUaW1lIGV2ZW50VGlt
ZXN0YW1wOwpAQCAtNzQsNDQgKzc0LDQ0IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHsKICAg
ICAgICAgZW5jb2RlciA8PCB0eXBlOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxSZXNv
dXJjZUxvYWRJbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZEluZm8+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gcmVzb3VyY2VMb2FkSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IHJlc291cmNlTG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IHJlc291
cmNlTG9hZElEOwogICAgICAgICBpZiAoIXJlc291cmNlTG9hZElEKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICAgICAgZGVjb2Rl
ciA+PiBmcmFtZUlEOwogICAgICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgICAg
ICBkZWNvZGVyID4+IHBhcmVudEZyYW1lSUQ7CiAgICAgICAgIGlmICghcGFyZW50RnJhbWVJRCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8VVJM
PiBvcmlnaW5hbFVSTDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVUkw+IG9yaWdpbmFsVVJMOwog
ICAgICAgICBkZWNvZGVyID4+IG9yaWdpbmFsVVJMOwogICAgICAgICBpZiAoIW9yaWdpbmFsVVJM
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IG9yaWdpbmFsSFRUUE1ldGhvZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbmFsSFRUUE1ldGhvZDsKICAgICAgICAgZGVjb2RlciA+PiBvcmlnaW5hbEhUVFBNZXRo
b2Q7CiAgICAgICAgIGlmICghb3JpZ2luYWxIVFRQTWV0aG9kKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZXZlbnRUaW1lc3Rh
bXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV2ZW50VGltZXN0YW1wOwogICAg
ICAgICBkZWNvZGVyID4+IGV2ZW50VGltZXN0YW1wOwogICAgICAgICBpZiAoIWV2ZW50VGltZXN0
YW1wKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxib29sPiBsb2FkZWRGcm9tQ2FjaGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9h
ZGVkRnJvbUNhY2hlOwogICAgICAgICBkZWNvZGVyID4+IGxvYWRlZEZyb21DYWNoZTsKICAgICAg
ICAgaWYgKCFsb2FkZWRGcm9tQ2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VHlwZT4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggZjNm
OWU2ZjUxM2FkMmZkODQxZGE5OTE1MTg0OGVjZWMzNzE0NjgxNC4uOTdkNTE0ODc0ZGQ2MGQ1OTdj
ZmY3ODM4Y2Q4MzY5NzJmYTlhZDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC03MCw3MSArNzAsNzEg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAgICAgICAgZW5j
b2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGRpcmVjdG9yeTsKICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3Rvcnk7CiAgICAgICAg
IGlmICghZGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgCi0gICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IGRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBl
bmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxl
ZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNJdHBTdGF0
ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGlmICghaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+
IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFi
bGVMb2dUZXN0aW5nRXZlbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlTG9nVGVzdGluZ0V2
ZW50OwogICAgICAgICBpZiAoIWVuYWJsZUxvZ1Rlc3RpbmdFdmVudCkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRJbmNsdWRlTG9j
YWxob3N0OwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAg
ICAgIGlmICghc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlRGVidWdNb2RlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZURlYnVnTW9kZTsKICAgICAgICAgZGVjb2Rl
ciA+PiBlbmFibGVEZWJ1Z01vZGU7CiAgICAgICAgIGlmICghZW5hYmxlRGVidWdNb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlOwogICAgICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkPiBzYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZD4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7
CiAgICAgICAgIGlmICghc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKLSAgICAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU+IGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZTsKICAgICAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsK
ICAgICAgICAgaWYgKCFmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluOwogICAgICAgICBkZWNvZGVyID4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFp
bjsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFpbnM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWlu
czsKICAgICAgICAgZGVjb2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CiAgICAgICAgIGlmICghYXBw
Qm91bmREb21haW5zKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBkZWNvZGVyID4+IG1hbnVhbFByZXZh
bGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVudFJlc291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hF
eHRlbnNpb24uaAppbmRleCAyNjVhZjhkM2YxNTdjMWFkNDUxZmVhOTIyY2RjNmI3ZjAzNmVlM2Uy
Li42NGVhZDgyMzI5YzZhMWMzYzEyZGZiYjY1ZTJhMTUxZDg1NTBjNjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfkhhbmRsZSgpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8SGFuZGxlPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gZGVjb2RlKElQQzo6RGVj
b2RlciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNhbmRib3hFeHRl
bnNpb247CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBIYW5kbGUq
IGVuZCgpIGNvbnN0OwogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPEhh
bmRsZUFycmF5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZUFycmF5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBwcml2YXRl
OgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCkBAIC0xMTksMTEgKzExOSwxMSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBUeXBlLCBIYW5kbGUmKTsKICAgICBzdGF0aWMgYm9vbCBjcmVh
dGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcywg
SGFuZGxlJik7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBPcHRpb25hbDxhdWRpdF90
b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAg
ICBzdGF0aWMgSGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVj
dG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQp
OworICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIGJv
b2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1
ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvcklP
S2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwot
ICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3NlcywgT3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3Rh
dGljIGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwg
aW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgSGFuZGxlQXJyYXkgY3Jl
YXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNl
dDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5kaWYKICAgICB+U2FuZGJveEV4dGVuc2lv
bigpOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKIGlubGluZSBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9Ci1pbmxpbmUgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRl
Y29kZXImKSB7IHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgeyB9OyB9CitpbmxpbmUg
c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFu
ZGxlQXJyYXkoKSB7IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhh
bmRsZUFycmF5KCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6YWxsb2NhdGUoc2l6ZV90KSB7IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5kKCkg
eyByZXR1cm4gJgogaW5saW5lIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSogU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkgY29uc3QgeyByZXR1cm4gJm1fZW1wdHlI
YW5kbGU7IH0KIGlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zdCB7IHJldHVybiAmbV9lbXB0eUhhbmRs
ZTsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgLT4gT3B0aW9uYWw8SGFuZGxlQXJyYXk+
IHsgcmV0dXJuIHsgSGFuZGxlQXJyYXkoKSB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlQXJyYXk+IHsgcmV0dXJuIHsgSGFuZGxlQXJyYXkoKSB9OyB9CiBpbmxpbmUgUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUsIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGlu
ZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVS
ZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikgeyByZXR1cm4geyB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCmluZGV4IGZjMzBlNTg4YzM0OTgyN2Iz
YmZiZWRiZjY5Y2JhNmU3Y2FmYTYzYWMuLjc3MzIxOWY3ZWUwMGI2N2IzYjVkMTViNzk0YTI1MWRi
Mzk1ZjMyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgdm9pZCBTZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwog
ICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVu
dFJ1bGVMaXN0czsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFj
b250ZW50UnVsZUxpc3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5o
CmluZGV4IDZkNTA5N2RkZWI5NWE5OTU5ZDg1ZDZkYjMzMjc5ZTBkY2E5NGJjZTkuLjQxNzNiM2Jl
MzFhMGZhM2JlMzk0MmNkYTVlNmE0OWRkOTUwN2E2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOwogc3RydWN0IFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmluZGV4IDZhYmM4NGRhY2QxMDZhYjVlNzkzMmY0
M2Y0ZTZjOGQxNDZhZjU5MzQuLmEwOGRkMTVkMzUxNzc2ZjM1NDlmMzQxYmQxMWZiZGRiZjI5Mzk4
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBzdGF0aWMgYm9vbCBpc1ZhbGlkRW51bShIVFRQQm9keTo6RWxlbWVudDo6VHlwZSB0eXBlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYXV0byBIVFRQQm9keTo6RWxlbWVudDo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8RWxlbWVudD4KK2F1dG8gSFRUUEJvZHk6
OkVsZW1lbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
RWxlbWVudD4KIHsKICAgICBFbGVtZW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC50eXBlKSB8fCAhaXNWYWxpZEVudW0ocmVzdWx0LnR5cGUpKQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgRnJhbWVTdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IGNoaWxkcmVuOwogfQogCi1PcHRpb25hbDxGcmFtZVN0YXRlPiBG
cmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxG
cmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIEZyYW1lU3RhdGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVy
bFN0cmluZykpCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVzdWx0KQogewogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnRpdGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlv
bmFsPEZyYW1lU3RhdGU+IG1haW5GcmFtZVN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVT
dGF0ZT4gbWFpbkZyYW1lU3RhdGU7CiAgICAgZGVjb2RlciA+PiBtYWluRnJhbWVTdGF0ZTsKICAg
ICBpZiAoIW1haW5GcmFtZVN0YXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBh
Z2VTdGF0ZSYgcmVzdWx0KQogICAgICAgICByZXN1bHQuc2Vzc2lvblN0YXRlT2JqZWN0ID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUod2lyZUJ5dGVz
KSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeT4g
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k+IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAg
ZGVjb2RlciA+PiBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGlmICghc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAot
T3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSByZXN1bHQ7
CiAKQEAgLTI1MCwxNCArMjUwLDE0IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0U3RhdGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjdXJyZW50SW5k
ZXg7CiB9CiAKLU9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBCYWNrRm9yd2FyZExpc3RT
dGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QmFja0Zv
cndhcmRMaXN0U3RhdGU+IEJhY2tGb3J3YXJkTGlzdFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGU+PiBpdGVtczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+PiBpdGVtczsKICAgICBkZWNvZGVyID4+IGl0ZW1zOwogICAgIGlmICghaXRlbXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gY3Vy
cmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGN1cnJlbnRJbmRleDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRJbmRleCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggMDM2MDIzNjk4
NzVmOGM1NzkyYWQ5MWRlMmI2ZDQxYTEyNDIxM2IzZi4uNGU2ZDYyNTlhY2E1NGE0YTYwOGIzNzFj
MTdlMWVjMzkyNGU5MDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgSFRUUEJvZHkgewogICAgIHN0
cnVjdCBFbGVtZW50IHsKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnQ+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKIAogICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICAgICAgRGF0YSwKQEAg
LTY1LDggKzY1LDggQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgLy8gRmlsZS4KICAgICAg
ICAgU3RyaW5nIGZpbGVQYXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKLSAgICAgICAg
T3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+
IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gZmlsZUxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAgICAgICBTdHJp
bmcgYmxvYlVSTFN0cmluZzsKQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKIGNs
YXNzIEZyYW1lU3RhdGUgewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxGcmFtZVN0YXRlPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RnJhbWVTdGF0ZT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgdG8gaGVscCBkZWJ1ZyA8cmRhcjov
L3Byb2JsZW0vNDg2MzQ1NTM+LgogICAgIEZyYW1lU3RhdGUoKSB7IFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsgfQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHJlZmVycmVyOwogICAgIFN0cmluZyB0YXJnZXQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHN0YXRlT2JqZWN0RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gc3RhdGVPYmplY3REYXRhOwogCiAgICAgaW50NjRfdCBkb2N1bWVudFNlcXVlbmNlTnVtYmVy
IHsgMCB9OwogICAgIGludDY0X3QgaXRlbVNlcXVlbmNlTnVtYmVyIHsgMCB9OwpAQCAtMTA2LDcg
KzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiB7
IHRydWUgfTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgeyAwIH07CiAKLSAgICBPcHRpb25h
bDxIVFRQQm9keT4gaHR0cEJvZHk7CisgICAgc3RkOjpvcHRpb25hbDxIVFRQQm9keT4gaHR0cEJv
ZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUuCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdHJ1Y3QgUGFnZVN0YXRl
IHsKIAogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB7CiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAg
ICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpZGVudGlmaWVyOwogCkBAIC0x
NDksMTAgKzE0OSwxMCBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKIAogc3Ry
dWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0U3RhdGU+IGRlY29k
ZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxCYWNrRm9yd2FyZExp
c3RTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZT4gaXRlbXM7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGN1cnJlbnRJbmRl
eDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjdXJyZW50SW5kZXg7CiB9OwogCiBzdHJ1
Y3QgU2Vzc2lvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CmluZGV4IDA0NjRhMjBkNDBkZGIzMGFlYTIwMWM2NGVkMGUyMjJhYmExNGJjNzYuLmY2YTVjNzU2
ZTJmMjdmY2EwNTE0OGY2NmM2MWFiZDc0NGU2OGEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcApAQCAtODcsMTIgKzg3LDEyIEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+
IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgIGlmICghY29sb3JT
cGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFx
dWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc09wYXF1ZTsKICAgICBkZWNvZGVyID4+IGlz
T3BhcXVlOwogICAgIGlmICghaXNPcGFxdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggMDM2MjFiNDIxZTliZGQzOTZjNTBm
NWZhOTM3YmM1ZGU2Zjg1OThhZC4uZTYzOGU4NjgxMWQ0NzlmZjdlNzk5NGUzMzk0ZTZhZDU0MzRh
NmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTUyLDcgKzUy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IENvbmZpZ3VyYXRpb24gewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBib29sIGlzT3BhcXVl
IHsgZmFsc2UgfTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgICAgIG11dGFibGUgSEFORExFIHNo
YXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGJhOTkzN2E5ZGM4MTMzODUyYzFmYzM1Zjg4
OWNjMTFhZjZmYmM4YmUuLmI1NzQzNTRhNTQ5MmRjYWE3ZDExOGJmMTQ2N2Y0NWU5MTRiOGZmNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHByaW9yaXR5OwogfQogCi1PcHRp
b25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51SXRlbURhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRh
PiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBUb3VjaEJhck1lbnVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJh
ck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURh
dGEuaAppbmRleCBiMzBmODJiODU0MDRmNzEyY2JkMDc3MWVhZWMyMTllOWY4MWU5NTNkLi40OTgx
MzJhMGEzNWVkZjNkM2NmNTkzZDA2Yjg2MTQxNjdhNGY2YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFRv
dWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBleHBsaWNpdCBUb3VjaEJhck1lbnVJdGVtRGF0YShj
b25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpID0gZGVmYXVsdDsKICAgICAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VG91Y2hCYXJN
ZW51SXRlbURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogICAgIAog
ICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07CiAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgKaW5kZXggNTM2NDA4OTQwOGUx
NjFjZmIzYzAwNmE0MjMzMmZjNjgzZTMyNDY2OS4uZDlmN2NhZGQ0ZDE1YTk2MDkzNGExNzMxNGNm
NTk5NTI2OWRiMDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVHJhbnNhY3Rp
b25JRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0aW9uSUQuaApAQCAtNDgs
OSArNDgsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkSWRlbnRpZmllcihtX2lk
ZW50aWZpZXIpKTsKICAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNb25vdG9uaWNPYmpl
Y3RJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNPYmplY3RJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRl
bnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAKaW5kZXggYWNjMmViODkz
NGFjMWM3OGFiMDgxYjJkMjE2NWI4ZDU0OTc2NDI0MC4uZDVjYTNiYmZlMDgwYmU3ZTg3MDJjNTIy
NTViOTViOWI4ZWI5OWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIHZvaWQgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBmcmFtZUluZm87CiB9CiAKLU9wdGlvbmFsPFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
PiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBo
YW5kbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGhhbmRsZXJJZGVudGlmaWVyOwogICAg
IGlmICghaGFuZGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFza0lkZW50
aWZpZXI7CiAgICAgaWYgKCF0YXNrSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxib29sPiBoYXNIVFRQQm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGhhc0hUVFBCb2R5OwogICAgIGRlY29kZXIgPj4gaGFzSFRUUEJvZHk7CiAgICAgaWYgKCFoYXNI
VFRQQm9keSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTcyLDcgKzcyLDcgQEAg
T3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1v
dmUoZm9ybURhdGEpKTsKICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4g
ZnJhbWVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOwog
ICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOwogICAgIGlmICghZnJhbWVJbmZvKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzLmgKaW5kZXggNTczNmQ4MmNkMWRhNjQwMDQyZWRiMTZjYzg4MWM5MDNiMzk2
ZWY3Yi4uNjc4MjM5NmIwZjlkMDliM2JlZDJlZjQ5YmNiZDVjYzk1M2M2ZDU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyB7CiAgICAgRnJhbWVJbmZvRGF0
YSBmcmFtZUluZm87CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVy
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xs
ZXJQYXJhbWV0ZXJzLmNwcAppbmRleCBlM2M5Y2RiYjZiN2ZjMDJmMzNkOGZiYjhjZGI5ODVhZjFh
MGNkNWRjLi5mMDcwYTY0OWRjMjZhNmViOWMxZjc1NDE1YjM4NWRjM2M3ZjdkMmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJh
bWV0ZXJzLmNwcApAQCAtNDQsMzUgKzQ0LDM1IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVy
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgog
fQogCi1PcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiBVc2VyQ29udGVu
dENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiBVc2VyQ29udGVudENv
bnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXI7Cisg
ICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPHN0
ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+Pj4gdXNlckNvbnRlbnRXb3Js
ZHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4+PiB1c2VyQ29udGVudFdvcmxkczsKICAgICBkZWNvZGVyID4+IHVzZXJD
b250ZW50V29ybGRzOwogICAgIGlmICghdXNlckNvbnRlbnRXb3JsZHMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+
PiB1c2VyU2NyaXB0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0
YT4+IHVzZXJTY3JpcHRzOwogICAgIGRlY29kZXIgPj4gdXNlclNjcmlwdHM7CiAgICAgaWYgKCF1
c2VyU2NyaXB0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRp
b25hbDxWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPj4gdXNlclN0eWxlU2hlZXRzOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4+IHVzZXJTdHlsZVNo
ZWV0czsKICAgICBkZWNvZGVyID4+IHVzZXJTdHlsZVNoZWV0czsKICAgICBpZiAoIXVzZXJTdHls
ZVNoZWV0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25h
bDxWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPj4gbWVzc2FnZUhhbmRsZXJzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4+IG1l
c3NhZ2VIYW5kbGVyczsKICAgICBkZWNvZGVyID4+IG1lc3NhZ2VIYW5kbGVyczsKICAgICBpZiAo
IW1lc3NhZ2VIYW5kbGVycykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVM
aXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5oCmluZGV4IGFlOTE4YjllNzYzOTRmNGUy
OWM1N2U5NTdkNjI2NTU4NmYxNjBjYjIuLjAzMGZkZGQ3YmE2MTUzYWQ2NDc4YTU5ZTM2NDVlYmZh
Y2Y4NWFlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29u
dHJvbGxlclBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRyb2xsZXJQYXJhbWV0ZXJzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFVzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgewogI2VuZGlmCiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9s
bGVyUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEu
Y3BwCmluZGV4IDFiNmRiZmFlNDMwODQ3YzNkZTEwYWZjODBiZTJjOGI2ZWQ4MjI0MzkuLjNiNTQw
NDU1ZTYyMDFmNDM1Yzk1ZDJmYmJkYzM0Y2Y5Mjg1ODA0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2Vy
RGF0YS5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQpCiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6Q2VydGlmaWNhdGVJbmZvOiB7Ci0g
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZv
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOwogICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKICAgICAgICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCmluZGV4IDZiNmUx
ZWVhOTE0NDFlOTgwODUwYWQxZTNjNGM2N2FkYTc0YWYxOWEuLjdhYTY1YWUwZjJjZmMyNDgyNWNm
MmYzOWI2MDkzNmYzNWQ2YTEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdENvdW50cy5oCkBAIC00MSwxNCArNDEsMTQgQEAgc3RydWN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyB7CiAgICAgICAgIGVuY29kZXIgPDwgZm9yd2FyZENvdW50OwogICAg
IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM+IGRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGJhY2tDb3VudDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gYmFja0NvdW50OwogICAgICAgICBkZWNvZGVyID4+IGJhY2tDb3VudDsK
ICAgICAgICAgaWYgKCFiYWNrQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmb3J3YXJkQ291bnQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsKICAgICAgICAgZGVjb2RlciA+PiBm
b3J3YXJkQ291bnQ7CiAgICAgICAgIGlmICghZm9yd2FyZENvdW50KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmluZGV4IDkyYzg2MzcwNGQ5N2ZhYWZjMjgx
YTM5NzQxNjExMjM1ZGEwYjMxMzAuLmFjMDJkNmQ0YWNmMjJhNzU4YTNjNjgyOGJjNmMwMWE2OWFm
OWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtNTgsNTQgKzU4LDU0IEBAIHZvaWQgV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKIH0KIAotT3B0aW9u
YWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
ZGF0YSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbmRpdGlv
bnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBj
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBjb25kaXRp
b25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgaWYgKCFjb25kaXRpb25zQXBwbHlPbmx5
VG9Eb21haW5PZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gYWN0aW9uc09mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBhY3Rpb25zT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gYWN0aW9uc09mZnNldDsKICAgICBpZiAo
IWFjdGlvbnNPZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gYWN0aW9uc1NpemU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
YWN0aW9uc1NpemU7CiAgICAgZGVjb2RlciA+PiBhY3Rpb25zU2l6ZTsKICAgICBpZiAoIWFjdGlv
bnNTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0
OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7
CiAgICAgaWYgKCFmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4g
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGlmICghZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCFmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIg
Pj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgIGlmICghZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAg
ICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCF0b3BV
UkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIGRl
Y29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICBpZiAoIXRvcFVSTEZpbHRl
cnNCeXRlY29kZVNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCmlu
ZGV4IDFmMDMxMzEwMWI3YWVjMGZmNmFjZDg0MGRhMzExZTI0ZTZmNGFlNmQuLmE0YTI0MmI5N2M1
MDVlZTgxNTE2ZWVlMzliNTNjMDBhNDQ5YzczOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBkYXRhOwogICAgIHVuc2lnbmVkIGNvbmRpdGlvbnNBcHBseU9ubHlU
b0RvbWFpbk9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4
dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggNjRjMTU3Y2U0N2M5ZGIwNDFjMzE4OTdkODFiY2E2YjA3
N2I3ZmE3YS4uNTk4YTg3N2U5ZjYxNjhlMWFmNDgyZmU3ODcwY2VkNWExZDQ0MzI4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3N1Ym1lbnU7CiB9CiAKLU9w
dGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCkBAIC0xMzksNyArMTM5LDcgQEAgT3B0aW9uYWw8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4gV2ViQ29udGV4dE1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZGVudGF0aW9uTGV2ZWwpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OwogICAgIGRlY29kZXIgPj4gc3VibWVudTsK
ICAgICBpZiAoIXN1Ym1lbnUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgKaW5kZXggMTU0Mjc4MmEy
NzIwNzAxYTlkM2JkYTQ5ZWVlMGM1NDAzYzVjMDFmYy4uYmViOTljZjkxNWZmOTM3ODNkNmE2MjRj
NThlZTI3ZDFkYzhhZDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbURhdGEuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2Vy
RGF0YShBUEk6Ok9iamVjdCopOwogICAgIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTI5ZWZlZjFkNzI5OTFkMTRjZTVhYjE5
ZTM2MzExMmEwOTE4OTE4YS4uZjBjOGVlZjUzZDM1OTdlMGVhOGExMWRiMTAxZWE5NDYwMTQxOWUx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxs
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxs
OwogICAgIGlmICghaXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzgsMTQgKzI3
OCwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHJhbmdlLmxlbmd0aCk7CiB9CiAKLU9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJh
bmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOwogICAgIGRl
Y29kZXIgPj4gbG9jYXRpb247CiAgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5ndGg7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjk5LDE0ICsyOTks
MTQgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE8KICAgICBlbmNvZGVyIDw8IGluZm8ubmFtZTsK
IH0KIAotYXV0byBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bz4KK2F1dG8gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mbz4KIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBu
YW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9N
Q2EKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1l
bnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkK
QEAgLTM1NSw3ICszNTUsNyBAQCBPcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUoRAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CiAgICAgZGVjb2RlciA+PiBvcHRp
b25zOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTQxNCw3ICs0MTQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRXZlbnRUcgogCiBib29sIEFyZ3VtZW50
Q29kZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRXZl
bnRUcmFja2luZ1JlZ2lvbnMmIGV2ZW50VHJhY2tpbmdSZWdpb25zKQogewotICAgIE9wdGlvbmFs
PFJlZ2lvbj4gYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb247CisgICAgc3RkOjpvcHRpb25hbDxS
ZWdpb24+IGFzeW5jaHJvbm91c0Rpc3BhdGNoUmVnaW9uOwogICAgIGRlY29kZXIgPj4gYXN5bmNo
cm9ub3VzRGlzcGF0Y2hSZWdpb247CiAgICAgaWYgKCFhc3luY2hyb25vdXNEaXNwYXRjaFJlZ2lv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc0LDcgKzU3NCw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0
ZXBzVGltaW5nRnVuCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1TdGVwcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQ
b3NpdGlvbj4gc3RlcFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5j
dGlvbjo6U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGVwUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYyOCw3ICs2Mjgs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENv
ZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludCk7CiB9CiAKLU9wdGlv
bmFsPEZsb2F0UG9pbnQ+IEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBBcmd1bWVudENvZGVyPEZsb2F0
UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBGbG9hdFBvaW50IGZsb2F0
UG9pbnQ7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUo
ZGVjb2RlciwgZmxvYXRQb2ludCkpCkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFJlY3QmIGZsb2F0
UmVjdCkKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUo
ZGVjb2RlciwgZmxvYXRSZWN0KTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBBcmd1bWVudENv
ZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IEFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0UmVjdDsKICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50
Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0UmVjdCkpCkBAIC03MDksNyAr
NzA5LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFZpZXdwb3J0QXJndW1lbnQKICAgICByZXR1cm4gU2ltcGxlQXJndW1l
bnRDb2RlcjxWaWV3cG9ydEFyZ3VtZW50cz46OmRlY29kZShkZWNvZGVyLCB2aWV3cG9ydEFyZ3Vt
ZW50cyk7CiB9CiAKLU9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZp
ZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFs
PFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRB
cmd1bWVudHM7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRz
Pjo6ZGVjb2RlKGRlY29kZXIsIHZpZXdwb3J0QXJndW1lbnRzKSkKQEAgLTczOSw3ICs3MzksNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SW50UG9pbnQmIGludFBvaW50KQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEludFBv
aW50Pjo6ZGVjb2RlKGRlY29kZXIsIGludFBvaW50KTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRQb2ludCBpbnRQb2ludDsK
ICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2Rlciwg
aW50UG9pbnQpKQpAQCAtNzU3LDcgKzc1Nyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbnRSZWN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEludFJlY3QmIGludFJlY3QpCiAgICAgcmV0dXJu
IFNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29kZShkZWNvZGVyLCBpbnRSZWN0KTsK
IH0KIAotT3B0aW9uYWw8SW50UmVjdD4gQXJndW1lbnRDb2RlcjxJbnRSZWN0Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IEFyZ3VtZW50Q29kZXI8SW50
UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEludFJlY3QgcmVjdDsKICAg
ICBpZiAoIWRlY29kZShkZWNvZGVyLCByZWN0KSkKQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbnRTaXplJiBp
bnRTaXplKQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUo
ZGVjb2RlciwgaW50U2l6ZSk7CiB9CiAKLU9wdGlvbmFsPEludFNpemU+IEFyZ3VtZW50Q29kZXI8
SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJbnRTaXpl
PiBBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBJbnRTaXplIGludFNpemU7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+
OjpkZWNvZGUoZGVjb2RlciwgaW50U2l6ZSkpCkBAIC04MTUsMTQgKzgxNSwxNCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlY2VudFNlYXJjaCYgcgogICAgIGVuY29kZXIgPDwgcmVjZW50U2VhcmNoLnN0cmluZyA8PCBy
ZWNlbnRTZWFyY2gudGltZTsKIH0KIAotT3B0aW9uYWw8UmVjZW50U2VhcmNoPiBBcmd1bWVudENv
ZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNvZGVyID4+IHN0cmluZzsKICAgICBpZiAo
IXN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25h
bDxXYWxsVGltZT4gdGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiB0aW1lOwogICAg
IGRlY29kZXIgPj4gdGltZTsKICAgICBpZiAoIXRpbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1pbWVDbGFzc0lu
Zm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWltZUNsYXNzSW5mbyYKICAgICBl
bmNvZGVyIDw8IG1pbWVDbGFzc0luZm8udHlwZSA8PCBtaW1lQ2xhc3NJbmZvLmRlc2MgPDwgbWlt
ZUNsYXNzSW5mby5leHRlbnNpb25zOwogfQogCi1PcHRpb25hbDxNaW1lQ2xhc3NJbmZvPiBBcmd1
bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8TWltZUNsYXNzSW5mbz4gQXJndW1lbnRDb2RlcjxNaW1lQ2xhc3NJbmZvPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTWltZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZv
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNsYXNzSW5mby50eXBlKSkKQEAgLTkwNCw3
ICs5MDQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBQbHVnaW5JbmZvJiBwbHVnaQogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OlBsdWdpbkluZm8+IEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5JbmZvPiBBcmd1
bWVudENvZGVyPFBsdWdpbkluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQ
bHVnaW5JbmZvIHBsdWdpbkluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZv
Lm5hbWUpKQpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5j
b2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZ2Up
CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAgIGRlY29kZXIg
Pj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZGlkQ3JlYXRlR3JhcGhpY3ND
b250ZXh0IHx8ICEqZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTE3LDI5ICsxMTE3LDI5IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+CiAgICAg
ZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIGZvbnQpOwogfQogCi1PcHRpb25hbDxSZWY8Rm9u
dD4+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFJlZjxGb250Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250OjpPcmlnaW4+IG9yaWdpbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6Ok9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4g
b3JpZ2luOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udDo6SW50ZXJzdGl0aWFsPiBpc0ludGVyc3RpdGlhbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnQ6OkludGVyc3RpdGlhbD4gaXNJbnRlcnN0aXRpYWw7CiAgICAgZGVj
b2RlciA+PiBpc0ludGVyc3RpdGlhbDsKICAgICBpZiAoIWlzSW50ZXJzdGl0aWFsKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udDo6VmlzaWJpbGl0eT4g
dmlzaWJpbGl0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6OlZpc2liaWxpdHk+IHZpc2liaWxp
dHk7CiAgICAgZGVjb2RlciA+PiB2aXNpYmlsaXR5OwogICAgIGlmICghdmlzaWJpbGl0eSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnQ6Ok9yaWVudGF0
aW9uRmFsbGJhY2s+IGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7CisgICAgc3RkOjpvcHRpb25h
bDxGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrPiBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwog
ICAgIGRlY29kZXIgPj4gaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjazsKICAgICBpZiAoIWlzVGV4
dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1JlcnNvdWNl
SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcmVuZGVyaW5n
UmVyc291Y2VJZGVudGlmaWVyOwogICAgIGlmICghcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNlbGVjdGlvbkcKICAgICBlbmNvZGVyIDw8IHNlbGVjdGlvbkdlb21ldHJ5Lmlz
SG9yaXpvbnRhbCgpOwogfQogCi1PcHRpb25hbDxTZWxlY3Rpb25HZW9tZXRyeT4gQXJndW1lbnRD
b2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxTZWxlY3Rpb25HZW9tZXRyeT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRy
eT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNlbGVjdGlvbkdlb21ldHJ5IHNl
bGVjdGlvbkdlb21ldHJ5OwogICAgIEZsb2F0UXVhZCBxdWFkOwpAQCAtMTMzMSw3ICsxMzMxLDcg
QEAgT3B0aW9uYWw8U2VsZWN0aW9uR2VvbWV0cnk+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2Vv
bWV0cnk+OjpkZWNvZGUoRGVjb2RlciYgZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRRdWFkKHF1YWQpOwogCi0gICAgT3B0aW9uYWw8U2Vs
ZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9yOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9yOwogICAgIGRlY29kZXIgPj4gYmVoYXZp
b3I7CiAgICAgaWYgKCFiZWhhdmlvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE0ODEsNyArMTQ4MSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxDb21wb3NpdGlvblVuZGVybGluZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDb21wb3NpCiAgICAgZW5jb2RlciA8PCB1bmRlcmxpbmUuY29sb3I7CiB9CiAKLU9w
dGlvbmFsPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0
aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBvc2l0aW9uVW5kZXJsaW5lPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29tcG9zaXRpb25VbmRlcmxpbmUgdW5kZXJsaW5l
OwogCkBAIC0xNTQ3LDExICsxNTQ3LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFzZURl
dGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjdXJyZW50VXNhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+IGNyZWF0aW9uVGltZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNyZWF0
aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmljYXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNh
dGlvblRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RpZmljYXRpb25UaW1lKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODA1LDE0ICsxODA1LDE0IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBEaWN0YXRpCiAgICAgZW5jb2RlciA8PCBhbHRlcm5hdGl2ZS5yYW5nZSA8PCBhbHRlcm5h
dGl2ZS5jb250ZXh0OwogfQogCi1PcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gQXJndW1l
bnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxEaWN0YXRpb25Db250ZXh0PiBj
b250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8RGljdGF0aW9uQ29udGV4dD4gY29udGV4dDsKICAg
ICBkZWNvZGVyID4+IGNvbnRleHQ7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMTkxMCwxOSArMTkxMCwxOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0
YWlsJgogICAgIGVuY29kZXIgPDwgZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKIH0KIAotT3B0aW9u
YWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29k
ZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJh
bmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
Z3Vlc3NlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwogICAg
IGRlY29kZXIgPj4gZ3Vlc3NlczsKICAgICBpZiAoIWd1ZXNzZXMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJEZXNjcmlwdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckRlc2NyaXB0aW9uOwogICAgIGRlY29kZXIgPj4g
dXNlckRlc2NyaXB0aW9uOwogICAgIGlmICghdXNlckRlc2NyaXB0aW9uKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFRleHQKIAogYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0KQog
ewotICAgIE9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVlc3RJZGVudGlmaWVyPiBpZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xOTY4LDIzICsxOTY4LDIzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENo
ZWNrCiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFjZW1lbnQ7CiB9CiAKLU9wdGlvbmFsPFRl
eHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBB
cmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFs
PENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdl
PiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFp
bD4+IGRldGFpbHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRl
dGFpbHM7CiAgICAgZGVjb2RlciA+PiBkZXRhaWxzOwogICAgIGlmICghZGV0YWlscykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcmVwbGFjZW1l
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlcGxhY2VtZW50OwogICAgIGRlY29kZXIg
Pj4gcmVwbGFjZW1lbnQ7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTIwMjksNyArMjAyOSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2Vy
U3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNl
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKICAgICBk
ZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb24+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGMKIAogV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8V2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9uPiYgdmFsdWUpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwogICAgIGlm
ICghaXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDAyLDE2ICsyNDAyLDE2IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxCbG9iUGFydD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBCbG9iUGFydCYgYmxvYlBhcnQpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LU9wdGlvbmFsPEJsb2JQYXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEJsb2JQYXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQ
YXJ0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QmxvYlBhcnQ6
OlR5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxCbG9iUGFydDo6VHlwZT4gdHlwZTsKICAg
ICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgc3dpdGNoICgqdHlwZSkgewogICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6
OkRhdGE6IHsKLSAgICAgICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsKICAgICAgICAgZGVjb2RlciA+
PiBkYXRhOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMjQ0NSw3ICsyNDQ1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0
b3JEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRJbmRpY2EKICAgICBl
bmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCkpOwogfQogCi1PcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0
YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0
SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFRleHRJbmRp
Y2F0b3JEYXRhIHRleHRJbmRpY2F0b3JEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4
dEluZGljYXRvckRhdGEuc2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpCkBAIC0y
NTUwLDcgKzI1NTAsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGljdGlvbmFyeVBvcHVwSW5mbz46
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERpY3Rpb25hcgogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm9yaWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9w
dGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yOworICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3I7CiAgICAgZGVjb2RlciA+PiB0ZXh0
SW5kaWNhdG9yOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjYzNywxMCArMjYzNywxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDbwogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIHN0YXRpc3RpY3M7Ci0gICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmFibGVEb21haW47CiAgICAg
aWYgKCFyZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTI2NjQsNTIgKzI2NjQsNTIgQEAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKEQKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0gICAgT3B0aW9uYWw8
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGlj
cy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9wIGZyYW1lIHN0YXRzCi0gICAg
T3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG87CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG87CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogCi0gICAgT3B0aW9u
YWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2RlciA+PiB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb207CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20gPSBXVEZNb3ZlKCp0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCi0gICAg
T3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pj4gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0czsKICAgICBkZWNvZGVyID4+IHRvcEZy
YW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CiAgICAgaWYgKCF0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3Rp
Y3MudG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyA9IFdURk1vdmUoKnRvcEZyYW1lTG9h
ZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKLSAgICBPcHRp
b25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJm
cmFtZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGRlY29kZXIgPj4gc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluczsKICAgICBpZiAoIXN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgqc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7
CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zOworICAgIHN0ZDo6
b3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zOwogICAgIGlmICghc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsK
IAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgZGVjb2RlciA+PiBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGlmICghc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvKTsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb207CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAg
IGRlY29kZXIgPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGlmICghc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMjc1OCw3ICsyNzU4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhQ29uc3RyYWlu
dHM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6TWUKIAogYm9vbCBB
cmd1bWVudENvZGVyPE1lZGlhQ29uc3RyYWludHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IG1hbmRhdG9yeUNvbnN0cmFpbnRz
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+
IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIGRlY29kZXIgPj4gbWFuZGF0b3J5Q29uc3RyYWlu
dHM7CiAgICAgaWYgKCFtYW5kYXRvcnlDb25zdHJhaW50cykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjgxNCwxNCArMjgxNCwxNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtl
ck9yQ2xpZW50RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlVwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXNTZXJ2aWNlV29ya2VyRGF0YSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyRGF0YSkgewotICAgICAgICBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiB3b3JrZXJEYXRh
OwogICAgICAgICBpZiAoIXdvcmtlckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgZGF0YSA9IFdURk1vdmUoKndvcmtlckRhdGEpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOwogICAg
ICAgICBkZWNvZGVyID4+IGNsaWVudERhdGE7CiAgICAgICAgIGlmICghY2xpZW50RGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NDcsMTQgKzI4NDcsMTQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgU2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGlzU2VydmljZVdvcmtl
cklkZW50aWZpZXIpIHsKLSAgICAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+
IHdvcmtlcklkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklk
ZW50aWZpZXI+IHdvcmtlcklkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gd29ya2VySWRl
bnRpZmllcjsKICAgICAgICAgaWYgKCF3b3JrZXJJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIGlkZW50aWZpZXIgPSBXVEZNb3ZlKCp3b3JrZXJJZGVudGlm
aWVyKTsKICAgICB9IGVsc2UgewotICAgICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKICAgICAgICAgZGVj
b2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODcyLDE0ICsyODcyLDE0IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBNZWRpYVNlCiAgICAgZW5jb2RlciA8PCBvcHRpb24udHlwZTsKIH0KIAotT3B0
aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb24+IEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25P
cHRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGRpc3BsYXlOYW1lOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkaXNwbGF5TmFtZTsKICAgICBkZWNvZGVyID4+IGRp
c3BsYXlOYW1lOwogICAgIGlmICghZGlzcGxheU5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU+IHR5
cGU7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZT4gdHlwZTsK
ICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHQK
ICAgICBlbmNvZGVyIDw8ICpvcmlnaW47CiB9CiAgICAgCi1PcHRpb25hbDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29k
ZXIpOwogICAgIGlmICghb3JpZ2luKQpAQCAtMjkzNCw3ICsyOTM0LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZv
bnRBdHRyaWJ1dGUKICAgICB9CiB9CiAKLU9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVu
dENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
IApAQCAtMjk3OCw3ICsyOTc4LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT46OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBlbmNv
ZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5nZXQoKSB9OwogfQogCi1PcHRpb25hbDxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVy
KSkKQEAgLTMwMDgsNyArMzAwOCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGUoRW5jb2RlciYgZW5jCiAgICAgICAg
IGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB2YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGhhc1BsYXRmb3JtRGF0YTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkpCkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQpAQCAtMzA0NSw3ICszMDQ1LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFIKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LnB0cigpKTsKIH0KIAotT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSB8fCAhYnVmZmVyKQpAQCAtMzA3NCw3ICszMDc0LDcgQEAgc3RhdGljIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUo
Y29uc3QgU2NyaXAKICAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFz
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoRGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSB8fCBo
YW5kbGUuaXNOdWxsKCkpCkBAIC0zMTAwLDEwICszMTAwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
V2ViQ29yCiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHNjcmlwdC5idWZmZXIoKSk7
CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlvbmFsPGJvb2w+IGlzU2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
ICAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQog
ICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0
eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCkBAIC0zMTYyLDcgKzMxNjIsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5hbHBoYSkpCkBAIC0zMjExLDcg
KzMyMTEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkFjdGl2ZUluZm8+OjplbmNvZGU8RW5jb2Rlcj4oRW5jbwogdGVtcGxhdGUKIHZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZTxT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwogCi1PcHRpb25hbDxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJ
bmZvLm5hbWUpKQpAQCAtMzIzMywxMyArMzIzMywxMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8SW1h
Z2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
bwogICAgIGVuY29kZXIgPDwgaW5mby5ub3JtYWxpemVkUXVhZHM7CiB9CiAKLU9wdGlvbmFsPElt
YWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IEFyZ3VtZW50Q29kZXI8SW1hZ2VFeHRyYWN0
aW9uRGF0YURldGVjdG9ySW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvPiBBcmd1bWVudENvZGVyPEltYWdl
RXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCByZXN1bHQpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UXVhZD4+IG5vcm1hbGl6ZWRRdWFk
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFF1YWQ+PiBub3JtYWxpemVkUXVhZHM7
CiAgICAgZGVjb2RlciA+PiBub3JtYWxpemVkUXVhZHM7CiAgICAgaWYgKCFub3JtYWxpemVkUXVh
ZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiMGMyNjM2MzI3M2ZhMjE0MGVhNjU5Yzg2
Y2ZjNTA4ZDMyOGRiYWQuLmRhZTgwZmY3ZGQyNTQyODkxMjFiNDEzNDBiNzdkMGY5YzRmNTA2MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0y
MzAsNyArMjMwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnM+IHsKQEAgLTI0MCwyMiArMjQwLDIyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM+IHsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFyYWN0ZXJSYW5nZT4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8m
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
bz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VG91Y2hBY3Rp
b25EYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpUb3VjaEFjdGlvbkRhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6VG91Y2hB
Y3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlRvdWNoQWN0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RXZlbnRUcmFja2luZ1JlZ2lvbnM+IHsK
QEAgLTI5Niw3ICsyOTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbz4gewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpGbG9hdFBvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UG9p
bnQzRD4gewpAQCAtMzA3LDcgKzMwNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6RmxvYXRQb2ludDNEPiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZsb2F0UmVjdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogICAgIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9h
dEJveEV4dGVudD4gewpAQCAtMzI5LDcgKzMyOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4gewogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsK
ICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
ICNlbmRpZgpAQCAtMzQyLDIwICszNDIsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXM+IHsKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SW50UG9pbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkludFJl
Y3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFJlY3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SW50UmVjdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SW50U2l6ZT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRTaXplPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkludFNpemU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkxheW91dFNpemU+IHsKQEAgLTM4MCwxMiArMzgwLDEyIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VmVsb2NpdHlEYXRhPiB7
CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWltZUNsYXNzSW5m
bz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWlt
ZUNsYXNzSW5mbyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpNaW1lQ2xhc3NJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1p
bWVDbGFzc0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBsdWdpbkluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6UGx1Z2luSW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5JbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZT4gewpAQCAtNDE0LDkgKzQxNCw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q3Vyc29yPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkZvbnQ+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpGb250Pj4gZGVjb2RlKERlY29kZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYp
OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4g
ewpAQCAtNDU0LDM0ICs0NTQsMzQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
VEY6Ok1hY2hTZW5kUmlnaHQ+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDR1BvaW50PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR1BvaW50KTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8Q0dQb2ludD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
R1BvaW50PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxDR1NpemU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIENHU2l6
ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENHU2l6ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxDR1NpemU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHUmVjdD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgQ0dSZWN0KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dSZWN0PiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENHUmVjdD4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q0dBZmZpbmVU
cmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIENHQWZmaW5lVHJh
bnNmb3JtKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRy
eT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Vs
ZWN0aW9uR2VvbWV0cnkmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9u
R2VvbWV0cnk+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodD4gewpAQCAtNTI3LDEzICs1MjcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudD4gewogI2lmIFVTRShDVVJMKQogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncz4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3MmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5U2V0
dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q3VybFByb3h5U2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHM+IHsKQEAgLTU0Myw3ICs1NDMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewpAQCAtNTY4LDcgKzU2
OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWw+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhbW1hckRldGFpbD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YT4gewpAQCAtNTc4LDcgKzU3OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE+IHsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gewpAQCAtNjI1LDcgKzYyNSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbj4+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpCbG9iUGFydD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6QmxvYlBhcnQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6QmxvYlBhcnQ+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Qmxv
YlBhcnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpAQCAtNjM3LDcgKzYzNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPiB7CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRh
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvPiB7CkBAIC02NTgsNyArNjU4
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlY2VudFNlYXJjaD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OlJlY2VudFNlYXJjaD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IHsK
QEAgLTY2OCwzNCArNjY4LDM0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gZGVj
b2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5
bWVudCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50PiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnQ+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRDb250
YWN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0PiB7CkBAIC03MTQsMTIgKzcxNCwxMiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudAogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheUVycm9yPj4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkFwcGxlUGF5RXJyb3I+Jik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheUVycm9yPj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlFcnJvcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3I+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3Im
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFNlc3Npb25FcnJvcj4gZGVj
b2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
U2Vzc2lvbkVycm9yPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogI2VuZGlmCkBAIC03NTIsNyAr
NzUyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0
aW9uT3B0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvPiB7CkBAIC03NjIsMjEg
Kzc2MiwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Jik7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUo
RGVjb2RlciYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29y
ZTo6Rm9udEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
b250QXR0cmlidXRlcz4gZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBXZWJDb3JlOjpGb250
QXR0cmlidXRlcyYpOwogfTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpA
QCAtNzg0LDMyICs3ODQsMzIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKICNpZiBFTkFCTEUoVklERU8pCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVWYWx1ZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+
IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUpOwogfTsKICNlbmRpZgogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRhRGV0ZWN0b3JFbGVtZW50SW5mbz4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGF0YURldGVj
dG9yRWxlbWVudEluZm8mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RGF0YURldGVj
dG9yRWxlbWVudEluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiAjZW5kaWYKQEAgLTgxNywxNCArODE3LDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IHsKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYpOwot
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKICNlbmRpZgog
CiAjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudEluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKQEAgLTgzMiwxMyArODMyLDEzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbj4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKICNlbmRpZgogCkBAIC04NDYsNyArODQ2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gewog
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlv
bkRhdGFEZXRlY3RvckluZm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8mKTsKLSAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRh
dGFEZXRlY3RvckluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3Rv
ckluZm8+IGRlY29kZShEZWNvZGVyJik7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1E
YXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJ
bmZvJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApp
bmRleCBhOTY4Zjg0ZjlhYmVmZjU1ZWI0ZGNhNWRhM2E0MDZlMjlkNWI3MTA5Li5mMTI4MWIwYTkx
YmZjMzk1NzgxMzIzZjdiOWM4YjYwNjUyMWU5M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgog
ICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0
dWRlOyB9CiAgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0
aW9uLmxvbmdpdHVkZTsgfQogICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9Ci0gICAgT3B0aW9uYWw8
ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24u
YWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmhlYWRpbmc7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+
IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlv
bi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
KCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9z
aXRpb24uaGVhZGluZzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLnNwZWVkOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgY29yZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b3JlUG9zaXRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IGI2MmRiMzdmMTY4ZjY3ODc1Nzc4NTJlYTJjNjQ5MmJhYTVlOGRiODMu
LjAyYWY3M2VmM2I3MzYxNzRhNmJmNDUzYTVlYzZiYmEwNzNkY2MwMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTE4OSw3ICsxODksNyBA
QCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoaGFzTGlua1RleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgaWYgKCFpbmRpY2F0b3JEYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNw
cAppbmRleCBiYzQzMjIyODY0ODRlNmFmZGQ0OTM1M2ZhZTZhOGZiM2NkNWU2NmYyLi5hNzBlYjc2
YzVjMjJhMmM3NzljMzA4NzQ0MzNhYzE5MDM2YjVmMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJLZXlib2FyZEV2ZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJLZXlib2FyZEV2ZW50
OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmCiAKICNlbGlmIFBMQVRGT1JNKEdUSykKIAotV2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5
Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQg
d2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFu
ZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBw
cmVlZGl0U2VsZWN0aW9uUmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNL
ZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAp
CitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBT
dHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRp
dmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxp
bmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2Rp
Zmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBl
LCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV91bm1v
ZGlmaWVkVGV4dCh0ZXh0KQpAQCAtMTAzLDcgKzEwMyw3IEBAIFdlYktleWJvYXJkRXZlbnQ6Oldl
YktleWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYKIAogI2VsaWYgVVNFKExJQldQRSkKIAotV2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5Ym9hcmRF
dmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93
c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGlu
ZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0
U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZp
ZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2
ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJ
bnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRl
cmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4m
JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmll
cj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBt
b2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV91bm1vZGlm
aWVkVGV4dCh0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9h
cmRFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5oCmluZGV4
IGNiODAyOWRjNDZkYzI1MzFmNWNjMjM0MDlkYzZkMmYxMWQ1YTNiNDkuLjdhNTg5M2ViNjhhZDI0
Y2Y5MmM4MzIwNzA0ODU0ODliN2NmYWZhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXli
b2FyZEV2ZW50LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBwdWJsaWM6CiAjaWYgVVNFKEFQUEtJVCkK
ICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29k
ZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2Rl
LCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBi
b29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwgT3B0aW9u
U2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbGlmIFBMQVRGT1JNKEdUSykK
LSAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVy
LCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJv
b2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiwgVmVjdG9yPFN0cmlu
Zz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRp
bWUgdGltZXN0YW1wKTsKKyAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5n
JiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmly
dHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9w
dGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIFdlYktleWJvYXJkRXZlbnQoVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBTdHJpbmcmIHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmly
dHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgaW50IG1hY0NoYXJDb2RlLCBi
b29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBh
ZCwgYm9vbCBpc1N5c3RlbUtleSwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0
YW1wKTsKICNlbGlmIFVTRShMSUJXUEUpCi0gICAgV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNv
bnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1l
IHRpbWVzdGFtcCk7CisgICAgV2ViS2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYg
a2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1
YWxLZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIHN0ZDo6b3B0aW9uYWw8RWRpdGlu
Z1JhbmdlPiYmLCBib29sIGlzS2V5cGFkLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0
aW1lc3RhbXApOwogI2Vsc2UKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFy
Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXks
IE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZW5kaWYKQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOyB9CiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspIHx8IFVTRShMSUJXUEUpCi0gICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mIHByZWVkaXRVbmRlcmxpbmVzKCkgY29uc3QgeyByZXR1
cm4gbV9wcmVlZGl0VW5kZXJsaW5lczsgfQotICAgIGNvbnN0IE9wdGlvbmFsPEVkaXRpbmdSYW5n
ZT4mIHByZWVkaXRTZWxlY3Rpb25SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVj
dGlvblJhbmdlOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBt
X3ByZWVkaXRVbmRlcmxpbmVzOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFu
Z2U+JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRTZWxl
Y3Rpb25SYW5nZTsgfQogI2VuZGlmCiAjaWYgVVNFKEFQUEtJVCkKICAgICBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bW1hbmRzOyB9CkBAIC05NSw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhbmRsZWRC
eUlucHV0TWV0aG9kIHsgZmFsc2UgfTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgVVNF
KExJQldQRSkKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4gbV9w
cmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOworICAgIHN0ZDo6b3B0
aW9uYWw8RWRpdGluZ1JhbmdlPiBtX3ByZWVkaXRTZWxlY3Rpb25SYW5nZTsKICNlbmRpZgogI2lm
IFVTRShBUFBLSVQpCiAgICAgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gbV9jb21t
YW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggYWI4NjliNDEwNzdiMmRiYTI4MWQ0MmMxNDYxZDllZTNkOWFlODgzMS4u
OWU3YjdmMmZiZGExMDdkMWNkOTAwMjQ4YTVkOWI2YWM2YmE3MjlkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTE5OSwx
NyArMTk5LDE3IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdpbmdBcmVh
VHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RHJhd2lu
Z0FyZWFJZGVudGlmaWVyPiBkcmF3aW5nQXJlYUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxEcmF3aW5nQXJlYUlkZW50aWZpZXI+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBkZWNv
ZGVyID4+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBpZiAoIWRyYXdpbmdBcmVhSWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmRyYXdp
bmdBcmVhSWRlbnRpZmllciA9ICpkcmF3aW5nQXJlYUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5SWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlUHJveHlJZGVudGlmaWVyOwogICAgIGlmICghd2ViUGFn
ZVByb3h5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBXVEZNb3ZlKCp3ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKTsKLSAgICBPcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBwYWdlR3JvdXBEYXRhOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gcGFnZUdyb3VwRGF0YTsKICAgICBk
ZWNvZGVyID4+IHBhZ2VHcm91cERhdGE7CiAgICAgaWYgKCFwYWdlR3JvdXBEYXRhKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM5LDE5ICsyMzksMTkgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5hdGlv
bkxpbmVHcmlkRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNl
ckFnZW50OwogICAgIGRlY29kZXIgPj4gdXNlckFnZW50OwogICAgIGlmICghdXNlckFnZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXNlckFnZW50ID0g
V1RGTW92ZSgqdXNlckFnZW50KTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGl0ZW1TdGF0ZXNXZXJl
UmVzdG9yZWRCeUFQSVJlcXVlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpdGVtU3RhdGVz
V2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0OwogICAgIGRlY29kZXIgPj4gaXRlbVN0YXRlc1dlcmVS
ZXN0b3JlZEJ5QVBJUmVxdWVzdDsKICAgICBpZiAoIWl0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQ
SVJlcXVlc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5p
dGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0ID0gKml0ZW1TdGF0ZXNXZXJlUmVzdG9y
ZWRCeUFQSVJlcXVlc3Q7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlPj4gaXRlbVN0YXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+PiBpdGVtU3RhdGVzOwogICAgIGRlY29kZXIgPj4gaXRlbVN0YXRlczsK
ICAgICBpZiAoIWl0ZW1TdGF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0y
NzYsNyArMjc2LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFWb2x1bWUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzPiBtdXRlZFN0YXRlRmxhZ3M7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3M+IG11dGVkU3RhdGVGbGFnczsKICAgICBkZWNvZGVyID4+
IG11dGVkU3RhdGVGbGFnczsKICAgICBpZiAoIW11dGVkU3RhdGVGbGFncykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVo
YXZpb3IpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8dWludDMyX3Q+PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPHVpbnQzMl90Pj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGRl
Y29kZXIgPj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGlmICghc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzE4LDE0ICszMTgsMTQg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50Owor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29k
ZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGlmICghaGFzUmVzb3VyY2VMb2FkQ2xp
ZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuaGFzUmVz
b3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+PiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsK
ICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0z
NDUsNyArMzQ1LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRD
b25maWd1cmF0aW9uVmlld1NpemUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPj4gb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+PiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogICAgIGRl
Y29kZXIgPj4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKICAgICBpZiAoIW92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNTMsNyAr
MzUzLDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheT4+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+
PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBhdHRh
Y2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFhdHRhY2htZW50RWxlbWVu
dEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zODgs
MjYgKzM4OCwyNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KLSAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVkaWFFeHRlbnNpb25IYW5kbGVzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IG1lZGlhRXh0
ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IG1lZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBpZiAoIW1lZGlhRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKm1lZGlh
RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7
CiAgICAgZGVjb2RlciA+PiBtZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIW1l
ZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCptZWRp
YUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAgICAgLy8gRklYTUUoMjA3NzE2KTogRW5kIHJlZ2lv
biB0byByZW1vdmUuCiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNv
ZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdUlPS2l0RXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmdwdUlPS2l0RXh0ZW5zaW9uSGFu
ZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1
TWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBn
cHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdU1hY2hFeHRlbnNpb25IYW5kbGVz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDE1LDcgKzQxNSw3IEBAIE9wdGlv
bmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kCiAjZW5kaWYKIAogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNU
UlkpCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZm9u
dE1hY2hFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFmb250TWFjaEV4dGVu
c2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxkb3VibGU+PiBjcHVMaW1pdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4gY3B1TGltaXQ7CiAgICAg
ZGVjb2RlciA+PiBjcHVMaW1pdDsKICAgICBpZiAoIWNwdUxpbWl0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtNDU3LDE0ICs0NTcsMTQgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiB1cmxTY2hlbWVzV2l0aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0
b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGRlY29kZXIgPj4gdXJsU2NoZW1lc1dpdGhMZWdhY3lD
dXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGlmICghdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0
b21Qcm90b2NvbEhhbmRsZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMudXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzID0gV1RG
TW92ZSgqdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKTsKIAogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Pj4gYXBwbGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4+IGFw
cGxpY2F0aW9uTWFuaWZlc3Q7CiAgICAgZGVjb2RlciA+PiBhcHBsaWNhdGlvbk1hbmlmZXN0Owog
ICAgIGlmICghYXBwbGljYXRpb25NYW5pZmVzdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTQ3OSwxOSArNDc5LDE5IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFj
ZXNFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IHVzZXJDb250ZW50Q29udHJvbGxlclBh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0
ZXJzPiB1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gdXNl
ckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVyczsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJv
bGxlclBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzID0gV1RGTW92ZSgqdXNlckNvbnRl
bnRDb250cm9sbGVyUGFyYW1ldGVycyk7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+PiBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgZGVjb2RlciA+PiBiYWNr
Z3JvdW5kQ29sb3I7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3ZlKCpi
YWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+PiBvbGRQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFn
ZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNTAwLDM3ICs1MDAsMzcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNvcnNE
aXNhYmxpbmdQYXR0ZXJuczsKICAgICBkZWNvZGVyID4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
ICAgICBpZiAoIWNvcnNEaXNhYmxpbmdQYXR0ZXJucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNv
cnNEaXNhYmxpbmdQYXR0ZXJucyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291
cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGRl
Y29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFsb2Fkc1N1YnJlc291cmNlcykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVz
b3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SGFz
aFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBk
ZWNvZGVyID4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgaWYgKCFhbGxvd2VkTmV0d29ya0hv
c3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9ICphbGxvd2VkTmV0d29ya0hvc3RzOwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBk
ZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGlm
ICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsK
ICAgICAKLSAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkOwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1l
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgZGVj
b2RlciA+PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgaWYgKCFwcm9jZXNzRGlzcGxheU5hbWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMTNmYTMwZWYxNjZiMDhhNTJhMzk0
OTVhMWNmNjcxMDEwNjRkMzBkYS4uZDViMTNkMmIwOTE1YjQ4ZWNlOWJmNmRlOTZlODdiYTU5MDk0
ZWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3U2l6ZTsKIApAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiB2aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyOwogICAgIGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtMTIwLDEzICsx
MjAsMTMgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6
OkludFNpemUgbWluaW11bVNpemVGb3JBdXRvTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNpemUg
c2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAgICAgYm9vbCBhdXRvU2l6aW5nU2hv
dWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRTaXplPiB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOwogICAgIAogICAgIFdl
YkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiwgYnV0IHdlIHdvdWxkIG5lZWQgdG8KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+LCBidXQg
d2Ugd291bGQgbmVlZCB0bwogICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgZW51bXMgaW5zaWRlIE9w
dGlvbmFscyB3aGVuIGVuY29kaW5nIGFuZCBkZWNvZGluZy4gCi0gICAgT3B0aW9uYWw8dWludDMy
X3Q+IHNjcm9sbGJhck92ZXJsYXlTdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBz
Y3JvbGxiYXJPdmVybGF5U3R5bGU7CiAKICAgICBib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25k
UGFnZTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKICAgICBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsIHsgZmFsc2UgfTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCkBAIC0xNTIsMTAgKzE1MiwxMCBA
QCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgZG91YmxlIHZpZXdwb3J0
Q29uZmlndXJhdGlvbkxheW91dFNpemVTY2FsZUZhY3RvcjsKICAgICBkb3VibGUgdmlld3BvcnRD
b25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoOwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSB2aWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3U2l6ZTsKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBvdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gYXR0YWNobWVudEVsZW1lbnRF
eHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemU7
CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVz
OwogI2VuZGlmCiAjaWYgSEFWRShTVEFUSUNfRk9OVF9SRUdJU1RSWSkKLSAgICBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0
ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBmb250TWFjaEV4dGVuc2lvbkhh
bmRsZTsKICNlbmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VOVF9DT0xPUlMpCiAgICAgV2ViQ29yZTo6
Q29sb3IgYWNjZW50Q29sb3I7CkBAIC0xOTQsMTMgKzE5NCwxMyBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4gb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQ7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0OwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90PiB1cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzV2l0
aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4gYXBw
bGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3Q+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgbmVlZHNG
b250QXR0cmlidXRlcyB7IGZhbHNlIH07CkBAIC0yMTEsMTUgKzIxMSwxNSBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJQYXJh
bWV0ZXJzIHVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM7CiAKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvbGRQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb2xkUGFnZUlEOwogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwogICAgIGJvb2wgdXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBsb2Fk
c1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFs
bG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRleCBiMDlmMWMyOWE3MjEw
NTk1MDMzNzFjOWFlZGNhYTBhNzM1ZDRjNTljLi42NDhkMDIzMGNmOWQ1MWNiYTk2ZjZkNjIzYjAz
YTM4OGQ4MjRiNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3Jv
dXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNw
cApAQCAtMzYsMTQgKzM2LDE0IEBAIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHBhZ2VHcm91cElEOwogfQog
Ci1PcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQ
YWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlR3JvdXBJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlR3JvdXBJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VHcm91cElEOwogICAgIGlmICghcGFnZUdyb3VwSUQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmgKaW5kZXggYzJjYjYyMTljNDAxMzc0YTg4MWUwYjk4NmM4NWM3NGQ4YTJkYWI0YS4uOGNm
ODViMzQwYzExMzQ3ZmE4Mzg1MDUyNzM2ZmI0OWJmMzAwMGZhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5j
b2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3Vw
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxh
dGZvcm1Ub3VjaFBvaW50LmNwcAppbmRleCA5ZDQ0MDZhNDBhNGZhZGRmYjMwYzJlNjAxODVmMjhm
M2FhMzJmODc5Li41OTA0ZjEyNmFlOWJmNzE2NWNmMDA0YzYzYzE3ZGNkMDczMGU4NjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2ZvcmNlOwogfQogCi1PcHRpb25h
bDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2lkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBv
cHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCmluZGV4
IDEzODE2NWEzNTA0NTRhNWUzNjJmN2FiNjkwMDRiMzJlOGZlMzkzMmIuLmYwMDQ1NGViNzI5NjM3
MDBjMTIzY2JkMTQ0ODZlM2YyOWFmMzhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBvcHVwSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJ
dGVtLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYlBvcHVwSXRlbTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1faXNTZWxlY3RlZDsKIH0K
IAotT3B0aW9uYWw8V2ViUG9wdXBJdGVtPiBXZWJQb3B1cEl0ZW06OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBJdGVtOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFR5cGUgdHlwZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRl
eCA0ZjEyYzRiNWM5YmVhNmJhMTUxNjY1OWJiZDBmOGYxNzM1N2FjZDViLi4yYzM3NTQ1ZWNjNmM3
MmY4ZGZmYjNiMDgxYWU1OWVlNmI3OTI1N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQb3B1cEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0
ZW0uaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKICAgICBXZWJQb3B1
cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBi
b29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25z
dCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVs
LCBib29sIGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fdGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKaW5kZXggY2U1NmY5Y2Q0
NjI4NjA5NGM2ZTQxNDEwZWViYjRmOTQ5ZDdlZmU3OS4uOWQ2ZmQxOWVlYTdkNjA2MjNiMmE0NjBj
MWM5YjcyYWZiODQ4Njg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFZhbHVlTWFwPiB2YWx1ZXM7CisgICAgc3RkOjpv
cHRpb25hbDxWYWx1ZU1hcD4gdmFsdWVzOwogICAgIGRlY29kZXIgPj4gdmFsdWVzOwogICAgIGlm
ICghdmFsdWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0Lm1fdmFsdWVzID0g
V1RGTW92ZSgqdmFsdWVzKTsKIAotICAgIE9wdGlvbmFsPFZhbHVlTWFwPiBvdmVycmlkZGVuRGVm
YXVsdHM7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZU1hcD4gb3ZlcnJpZGRlbkRlZmF1bHRzOwog
ICAgIGRlY29kZXIgPj4gb3ZlcnJpZGRlbkRlZmF1bHRzOwogICAgIGlmICghb3ZlcnJpZGRlbkRl
ZmF1bHRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIyOTdiZWUyOTc3
ODVhOThiMWIyNTk4YTZhZmQ0MjcwNTA4YmNhMWIuLjJmYzBlMGE1MDliNzRmY2QxMmIyY2ExMmE2
NDlkZTVlMDE2YmNjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0yMDksMTMgKzIwOSwxMyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFdlYlByb2Nlc3NDcmVhdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pbmpl
Y3RlZEJ1bmRsZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBpbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGluamVj
dGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGluamVjdGVkQnVu
ZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWluamVjdGVkQnVuZGxlUGF0aEV4dGVu
c2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaW5qZWN0ZWRCdW5kbGVQYXRo
RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5PiBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gYWRkaXRpb25hbFNhbmRib3hFeHRl
bnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25I
YW5kbGVzOwogICAgIGlmICghYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjUsMTkgKzIyNSwxOSBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nl
c3NDcmVhdAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAKLSAgICBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3ND
cmVhdAogCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBlbmFibGVSZW1v
dGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIWVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vz
c0NyZWF0CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0gICAgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBhdWRpb0NhcHR1cmVFeHRlbnNpb25IYW5kbGU7CisgICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGF1ZGlvQ2FwdHVyZUV4dGVuc2lv
bkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBpZiAoIWF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IHVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gdWlQcm9jZXNzQnVuZGxl
UmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gdWlQcm9jZXNzQnVu
ZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghdWlQcm9jZXNzQnVuZGxl
UmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MDUsNyArNDA1LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0
aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcz4gc2NyZWVu
UHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHNjcmVlblByb3BlcnRpZXM7CiAgICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjYsNTIgKzQyNiw1
MiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
Pj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAg
ICBpZiAoIXdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyA9IFdURk1vdmUoKndl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5z
aW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWNvbXBpbGVyU2VydmljZUV4
dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmNv
bXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpjb21waWxlclNlcnZpY2VF
eHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4gY29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4g
Y29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvbnRhaW5l
ck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjb250YWluZXJNYW5hZ2VyRXh0ZW5z
aW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5jb250YWlu
ZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY29udGFpbmVyTWFuYWdlckV4dGVu
c2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0
ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIW1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCptb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9u
SGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+PiBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+
IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbGF1bmNoU2VydmljZXNF
eHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmxh
dW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRl
bnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkaWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgZGVjb2RlciA+PiBkaWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkaWFn
bm9zdGljc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJh
bWV0ZXJzLmRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmRpYWdub3N0aWNz
RXh0ZW5zaW9uSGFuZGxlcyk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhh
bmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4g
ZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZHluYW1pY01hY2hF
eHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lv
bkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMpOwogCi0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGR5bmFtaWNJT0tpdEV4dGVu
c2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IGR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzksMTMgKzQ3OSwxMyBAQCBib29s
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBP
cHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c3lzdGVtSGFzQmF0dGVyeTsKICAgICBkZWNvZGVyID4+IHN5c3RlbUhhc0JhdHRlcnk7CiAgICAg
aWYgKCFzeXN0ZW1IYXNCYXR0ZXJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1l
dGVycy5zeXN0ZW1IYXNCYXR0ZXJ5ID0gV1RGTW92ZSgqc3lzdGVtSGFzQmF0dGVyeSk7CiAKLSAg
ICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNBQzsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN5
c3RlbUhhc0FDOwogICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQUM7CiAgICAgaWYgKCFzeXN0ZW1I
YXNBQykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDk5LDEzICs0OTksMTMgQEAgYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBXZWJQcm9jZXNzQ3JlYXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3Vw
cG9ydHNQaWN0dXJlSW5QaWN0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OkNTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcD4g
Y3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OkNTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcD4gY3NzVmFsdWVUb1N5c3RlbUNv
bG9yTWFwOwogICAgIGRlY29kZXIgPj4gY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOwogICAgIGlm
ICghY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cGFyYW1ldGVycy5jc3NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAgPSBXVEZNb3ZlKCpjc3NWYWx1ZVRv
U3lzdGVtQ29sb3JNYXApOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGZvY3VzUmlu
Z0NvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGZvY3VzUmluZ0NvbG9y
OwogICAgIGRlY29kZXIgPj4gZm9jdXNSaW5nQ29sb3I7CiAgICAgaWYgKCFmb2N1c1JpbmdDb2xv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBFTkFCTEUoQ0ZQUkVGU19E
SVJFQ1RfTU9ERSkKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheT4+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+PiBwcmVmZXJlbmNl
c0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhh
bmRsZXM7CiAgICAgaWYgKCFwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgT3B0aW9uYWw8Ym9vbD4gdXNlU3lzdGVt
QXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsKICAgICBkZWNvZGVyID4+IHVzZVN5c3RlbUFwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzOwogICAgIGlmICghdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9s
bGJhcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBIQVZFKENBVEFMWVNUX1VTRVJfSU5URVJG
QUNFX0lESU9NX0FORF9TQ0FMRV9GQUNUT1IpCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPGludDY0
X3QsIGRvdWJsZT4+IG92ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGU7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50NjRfdCwgZG91YmxlPj4gb3ZlcnJpZGVVc2VySW50ZXJm
YWNlSWRpb21BbmRTY2FsZTsKICAgICBkZWNvZGVyID4+IG92ZXJyaWRlVXNlckludGVyZmFjZUlk
aW9tQW5kU2NhbGU7CiAgICAgaWYgKCFvdmVycmlkZVVzZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjk1NGFjMjYxYmMzODMzNWU3ZDFm
ZDJiYTRlMzU0NTllYTdlZTg4Yy4uNmRhNjM0ZWE3ODM2YzY3NWVkODcyYjc0N2E4Y2M3Yzk1MmJk
ZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtMTk2LDE1ICsxOTYsMTUgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIENTdHJpbmcgaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZTsK
ICNlbmRpZgogCi0gICAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBjb21waWxl
clNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7Ci0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9u
SGFuZGxlOwotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbGF1bmNoU2Vy
dmljZXNFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5k
bGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxhdW5jaFNl
cnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUp
Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHByZWZlcmVuY2Vz
RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAjZW5kaWYKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMuaAppbmRleCAxZGE1ZTMwYTI0MzZlOWYwZmI1YzAwMzkwMDIxZTlmNDNlMDhkN2ZhLi5m
ZjZhZjdiNmVjNDExN2I2MWI3NDA5MTRjNzJjNzdjMTY4YzcxZTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTU1
LDcgKzU1LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBi
b29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODAsOSArODAs
OSBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25J
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CiAgICAgZGVj
b2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9uSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC05MSw3ICs5MSw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTA0
LDcgKzEwNCw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZWRpYUNhY2hlRGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTEzLDcgKzExMyw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBt
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMiwyMyArMTIyLDIzIEBA
IE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgZGVjb2Rl
ciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmICghdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICAgICBkZWNvZGVyID4+
IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAgIGlmICghZG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9u
YWw8SGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+PiBkb21haW5zV2l0
aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8VG9wRnJhbWVE
b21haW4sIFN1YlJlc291cmNlRG9tYWluPj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7
CiAgICAgZGVjb2RlciA+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICAgICBpZiAo
IWRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVudC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVudC5oCmluZGV4IDM3OWIwNDljNWVkN2Mw
MzdiYzgzZTM1NjZhMWY0NzBiNGE1ODc2YzYuLjhjMWNjYzE3OGYyZWQxMjA4MDg0NWNmODMxMTZh
MzRkNDA3OTkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlRvdWNoRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJUb3VjaEV2ZW50LmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1U
b3VjaFBvaW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9pZGVudGlmaWVyIHsgMCB9OwpAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFN0YXRlKFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0K
IAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRp
b25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5j
cHAKaW5kZXggNjgwYjYyZjIxNjcwOTBkMDgzMGQ4NTlhNmRlZmM2Yzk3MTcyOGRhYi4uMDhmOTAx
NTBkYWJiM2VjNTlhY2I1NjJjZmVjYzA4YzFhZDQ4OWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3Bw
CkBAIC0zNywxOSArMzcsMTkgQEAgdm9pZCBXZWJVc2VyU2NyaXB0RGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQ7CiB9CiAK
LU9wdGlvbmFsPFdlYlVzZXJTY3JpcHREYXRhPiBXZWJVc2VyU2NyaXB0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IFdl
YlVzZXJTY3JpcHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxD
b250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlw
dD4gdXNlclNjcmlwdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVz
ZXJTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiB1c2VyU2NyaXB0OwogICAgIGlmICghdXNlclNjcmlw
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lk
IFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0OwogfQogCi1PcHRpb25hbDxXZWJVc2Vy
U3R5bGVTaGVldERhdGE+IFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViVXNlclN0eWxlU2hlZXREYXRhPiBXZWJVc2Vy
U3R5bGVTaGVldERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPENv
bnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+
IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxkSWRlbnRpZmllcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTkxLDE5ICs5MSwxOSBAQCB2b2lkIFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IG5hbWU7CiB9CiAKLU9wdGlvbmFsPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0
YT4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9u
YWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gd29ybGRJZGVudGlmaWVyOwogICAgIGlmICghd29ybGRJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAg
ICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aAppbmRleCBkMTU0ZjIwYTkxYzE4MGRlMjQwZmI1NDg4ZDRkNzg3YzIxNTU1M2NhLi5kYWYxYWFk
MjFhNWM3ZmIxYzQzYjM5NTIwMzAzYzM1NzVlYjU5NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlVzZXJTY3JpcHRE
YXRhIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKICAgICBDb250ZW50V29ybGRJZGVudGlm
aWVyIHdvcmxkSWRlbnRpZmllcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IFdlYlVzZXJTY3Jp
cHREYXRhIHsKIAogc3RydWN0IFdlYlVzZXJTdHlsZVNoZWV0RGF0YSB7CiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYlVzZXJTdHls
ZVNoZWV0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAg
dWludDY0X3QgaWRlbnRpZmllcjsKICAgICBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRl
bnRpZmllcjsKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFdlYlVzZXJTdHlsZVNoZWV0RGF0YSB7
CiAKIHN0cnVjdCBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEgewogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgQ29udGVudFdvcmxkSWRlbnRpZmll
ciB3b3JsZElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJX
aGVlbEV2ZW50Q29hbGVzY2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnRDb2FsZXNjZXIuY3BwCmluZGV4IGM0ZjgzZWMyNjlmN2Y3YzFjZjI2MTEyODk2Yzg0Yjc5ZGRl
MjE5YjMuLjJkNDQ3NzE4NzljYzA1YzEzYTEzNTEyMzA3MmJkYTYzNTYyYzQyMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCkBAIC0xMTIs
NyArMTEyLDcgQEAgYm9vbCBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNwYXRjaEV2
ZW50Tm93KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBtX3doZWVsRXZl
bnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZDsKIH0KIAotT3B0
aW9uYWw8V2ViV2hlZWxFdmVudD4gV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6bmV4dEV2ZW50VG9E
aXNwYXRjaCgpCitzdGQ6Om9wdGlvbmFsPFdlYldoZWVsRXZlbnQ+IFdlYldoZWVsRXZlbnRDb2Fs
ZXNjZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQogewogICAgIGlmIChtX3doZWVsRXZlbnRRdWV1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgKaW5kZXggMzVjZGM3NjAwNTlkODc5
YTg5NmU1MzRlYjI2ZDhlNzZhNjRmYjQ3NS4uZGYxMDlmY2QwZTcyZDRlMWJhYTMwY2QxY2Q4MjE3
MmE0M2YzN2QxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVu
dENvYWxlc2Nlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2Fs
ZXNjZXIuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyIHsK
IHB1YmxpYzoKICAgICAvLyBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdXNlIG5leHRFdmVudFRvRGlz
cGF0Y2goKSB0byBnZXQgdGhlIGV2ZW50IHRvIGRpc3BhdGNoLgogICAgIGJvb2wgc2hvdWxkRGlz
cGF0Y2hFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7Ci0gICAgT3B0aW9uYWw8V2Vi
V2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgpOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
V2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgpOwogCiAgICAgTmF0aXZlV2ViV2hlZWxF
dmVudCB0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggOGRmYWEzZGM5MDkw
NGEyYmMxZjFhYjNhMjIxNzRiZDFiNTBlOWU4MS4uZDhhNDU4NDM5MzhkNzgzMGJkNzAzZGZjZTg1
ZjU0Y2M4MWY4NzhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcApAQCAtNDIsMTEgKzQyLDExIEBAIHZvaWQgV2Vic2l0ZURhdGE6OkVu
dHJ5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
c2l6ZTsKIH0KIAotYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpIC0+IE9wdGlvbmFsPEVudHJ5PgorYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RW50cnk+CiB7CiAg
ICAgRW50cnkgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBkZWNvZGVyID4+IHNlY3Vy
aXR5T3JpZ2luRGF0YTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5oCmluZGV4IDZmZmQ0MmNkZWQ5MGVhYWRjYzY0NmNjNDMwMzE4MDI1Mzc0YmFk
ZDQuLjY0OTE0MjY2ZTRhZjY4NzZkYjBjZTU0ZWRlZTJlMDMxYTk1ZTJhODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaApAQCAtNTEsNyArNTEs
NyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBFbnRyeSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICAg
ICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpFbnRyeT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YTo6RW50cnk+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKICAgICB9OwogCiAgICAgV2Vic2l0ZURhdGEgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggY2IyZTY3MGYxNTc0NTUxMzFkM2VkYTUyZTNiYzMzZjg0
YjE4MDJjNy4uNDkxMjE2NmM5Yzk4OGMzOTk0Njg1MjlhZTk3YjUwN2Y0Njc4OTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNw
cApAQCAtNTQsOTEgKzU0LDkxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwZXJUaGly
ZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfQogCi1PcHRpb25hbDxXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCi0gICAgT3B0
aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnM7CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMgPSBXVEZNb3ZlKCpuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpOwogCi0gICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gdWlQcm9jZXNzQ29va2llU3RvcmFn
ZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRp
ZmllcjsKICAgICBpZiAoIXVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3Rv
cmFnZUlkZW50aWZpZXIgPSBXVEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmll
cik7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3Jh
Z2VQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3Rv
cmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBp
bmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBpbmRleGVkRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnkgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIAotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFpbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIE9wdGlvbmFsPFN0cmluZz4g
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgaWYgKCFzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdURk1v
dmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOwogICAgIAotICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOwogICAgIGRlY29kZXIgPj4gc2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5RW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7CiAgICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRlY29k
ZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5KTsKIAotICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJP
cmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdl
UXVvdGEgPSAqcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CisgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBkZWNvZGVyID4+IHBl
clRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggYTQ5
YmFmOGEyYTIyNGYyN2JlZjBhNmZiZDNlZmQ0YTBkMmE3MzExYy4uMmEyMmQ5NGUxMGJkNWNiZGEz
OTQwZDJhNGJiYWUyYTdlNzRhNGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgfldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KCk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nv
b2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjb29r
aWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5jcHAKaW5kZXggNGE1ZmUxNGYyZWE0Zjg1OGZkYTJjN2RlYTljZGY3
OGJmMWEzYWVmNC4uMzhhZmJiNmE4OTZkNDVmOTdmNTY0NWIzMmZjNDdmMmFiY2MyNzBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKQEAgLTU2LDkx
ICs1Niw5MSBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpZGVtcG90ZW50TW9kZUF1dG9zaXppbmdP
bmx5SG9ub3JzUGVyY2VudGFnZXM7CiB9CiAKLU9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gY29udGVudEJs
b2NrZXJzRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50QmxvY2tlcnNFbmFibGVkOwogICAgIGlmICgh
Y29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKLSAgICBPcHRpb25hbDxXZWJzaXRlQXV0b3BsYXlQb2xpY3k+IGF1dG9wbGF5UG9saWN5Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRvcGxheVBvbGljeTsK
ICAgICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5OwogICAgIGlmICghYXV0b3BsYXlQb2xpY3kp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25Q
ZXJtaXNzaW9uU3RhdGU+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlPiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwogICAgIGRl
Y29kZXIgPj4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZTsKICAgICBpZiAo
IWRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKLSAgICBPcHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0
ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgc3RkOjpvcHRpb25h
bDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7
CiAgICAgZGVjb2RlciA+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiAgICAgaWYgKCFhbGxvd2Vk
QXV0b3BsYXlRdWlya3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4+IGN1c3RvbUhlYWRl
ckZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJG
aWVsZHM+PiBjdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgZGVjb2RlciA+PiBjdXN0b21IZWFkZXJG
aWVsZHM7CiAgICAgaWYgKCFjdXN0b21IZWFkZXJGaWVsZHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9wVXBQb2xpY3k+IHBvcFVwUG9saWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvcFVwUG9saWN5PiBwb3BVcFBvbGljeTsKICAg
ICBkZWNvZGVyID4+IHBvcFVwUG9saWN5OwogICAgIGlmICghcG9wVXBQb2xpY3kpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbVVzZXJB
Z2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50OwogICAgIGRl
Y29kZXIgPj4gY3VzdG9tVXNlckFnZW50OwogICAgIGlmICghY3VzdG9tVXNlckFnZW50KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21V
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgZGVjb2RlciA+PiBjdXN0
b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKICAgICBpZiAoIWN1c3RvbVVzZXJBZ2Vu
dEFzU2l0ZVNwZWNpZmljUXVpcmtzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CiAgICAgZGVjb2RlciA+PiBj
dXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKICAgICBpZiAoIWN1c3RvbU5hdmlnYXRvclBsYXRmb3Jt
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2Vic2l0ZU1l
dGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGRlY29k
ZXIgPj4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGlmICghbWV0YVZpZXdwb3J0UG9saWN5KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2Vic2l0ZU1lZGlh
U291cmNlUG9saWN5PiBtZWRpYVNvdXJjZVBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVNZWRpYVNvdXJjZVBvbGljeT4gbWVkaWFTb3VyY2VQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBt
ZWRpYVNvdXJjZVBvbGljeTsKICAgICBpZiAoIW1lZGlhU291cmNlUG9saWN5KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVTaW11bGF0ZWRN
b3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9s
aWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0
Y2hQb2xpY3k+IHNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k7CiAgICAgZGVjb2Rl
ciA+PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5OwogICAgIGlmICghc2ltdWxh
dGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9s
aWN5PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5OworICAgIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k+IGxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBsZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoUG9saWN5OwogICAgIGlmICghbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJv
b2w+IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcms7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBhbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrOwogICAgIGRlY29kZXIgPj4gYWxs
b3dDb250ZW50Q2hhbmdlT2JzZXJ2ZXJRdWlyazsKICAgICBpZiAoIWFsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmspCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdD4gYWxsb3dzQ29udGVudEphdmFT
Y3JpcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlw
dD4gYWxsb3dzQ29udGVudEphdmFTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiBhbGxvd3NDb250ZW50
SmF2YVNjcmlwdDsKICAgICBpZiAoIWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TW91c2VFdmVudFBv
bGljeT4gbW91c2VFdmVudFBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vdXNl
RXZlbnRQb2xpY3k+IG1vdXNlRXZlbnRQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtb3VzZUV2ZW50
UG9saWN5OwogICAgIGlmICghbW91c2VFdmVudFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09u
bHlIb25vcnNQZXJjZW50YWdlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRN
b2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBkZWNvZGVyID4+IGlkZW1w
b3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBpZiAoIWlkZW1w
b3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlcykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQ
b2xpY2llc0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEu
aAppbmRleCAzYThjODUwYWI1MTkzODdlOGJiZTA2YTkwNDA4MTIxNDY2ODRjNmZhLi5lMGY2Nzk0
NWU3NWM2YTMzNTVjMWQ0OTMxYzlhMGRhMThhYmFmZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBXZWJzaXRl
UG9saWNpZXNEYXRhIHsKICAgICBib29sIGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25v
cnNQZXJjZW50YWdlcyB7IGZhbHNlIH07CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA1
Yzk5M2U3MjQ5NDMxNjczODBhOGQ1ZjMzNTdmMDhiZGYxNWEyMzg3Li4zZGYzMjM5NzE5YjVjNGEw
MDIxM2M2MDU4N2FmMTk5YjBjMDg1NjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9B
cmd1bWVudENvZGVyc0NGLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHRlbXBsYXRlIHZvaWQgQXJn
dW1lbnRDb2RlcjxDRlR5cGVSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0
cmVhbUNvCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0KQogewotICAg
IE9wdGlvbmFsPENGVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENGVHlwZT4gdHlwZTsK
ICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yTnVtYmVyVHlwZShD
Rk51bWJlclR5cGUgbnVtYmVyVHlwZSkKIAogYm9vbCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxD
Rk51bWJlclJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IG51bWJlclR5cGVGcm9tSVBD
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21JUEM7CiAgICAgZGVj
b2RlciA+PiBudW1iZXJUeXBlRnJvbUlQQzsKICAgICBpZiAoIW51bWJlclR5cGVGcm9tSVBDIHx8
ICpudW1iZXJUeXBlRnJvbUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYxMCw3ICs2MTAsNyBAQCB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZT
dHJpbmdSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbQogCiBib29s
IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5nUmVmPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiByZXN1bHQpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGVuY29kaW5nRnJvbUlQQzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBl
bmNvZGluZ0Zyb21JUEM7CiAgICAgZGVjb2RlciA+PiBlbmNvZGluZ0Zyb21JUEM7CiAgICAgaWYg
KCFlbmNvZGluZ0Zyb21JUEMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmlu
ZGV4IGFlOWM5NjllZjg5YjQ1YjFlZWM3MzYyNTNlMGFmZTQzOTI0ZDdhY2MuLjZiNGMwNmFlMWZm
NjY3ZGFmZTExZDdkODZkMjUwMmYyMDI2ZTI1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTkxLDcg
KzE5MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJsUHJveHlTCiAgICAgZW5jb2RlciA8PCBzZXR0aW5n
cy5pZ25vcmVIb3N0cygpOwogfQogCi1PcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1l
bnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0
aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEN1cmxQcm94eVNldHRpbmdz
OjpNb2RlIG1vZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RlKSkKQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVl
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1
ZTo6UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBl
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xp
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAK
aW5kZXggMThmZWJiOGIzODJmNjY0Njc3MjJkNjNmODI2ZTBmZDVkMzFjMjk3NS4uYmUyN2M2NTQy
ZWQ3NGIwZTg3MjQ4Y2ExM2U2Mzk2YzVjYmEyYTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgR1JlZlB0cjxHVmFyaWFudAogICAgIGVuY29kZXIgPDwgRGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZ192YXJpYW50X2dldF9kYXRhKHZhcmlhbnQuZ2V0KCkpKSwg
Z192YXJpYW50X2dldF9zaXplKHZhcmlhbnQuZ2V0KCkpKTsKIH0KIAotT3B0aW9uYWw8R1JlZlB0
cjxHVmFyaWFudD4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IEFyZ3VtZW50
Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBDU3RyaW5nIHZhcmlhbnRUeXBlU3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFy
aWFudFR5cGVTdHJpbmcpKQpAQCAtNjIsNyArNjIsNyBAQCBPcHRpb25hbDxHUmVmUHRyPEdWYXJp
YW50Pj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50Pj46OmRlY29kZShEZWNvZGVyJiBk
ZQogCiAgICAgR1VuaXF1ZVB0cjxHVmFyaWFudFR5cGU+IHZhcmlhbnRUeXBlKGdfdmFyaWFudF90
eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4g
Ynl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPEdSZWZQdHI8R1ZhcmlhbnQ+ID4oZ192YXJpYW50X25ld19m
cm9tX2J5dGVzKHZhcmlhbnRUeXBlLmdldCgpLCBieXRlcy5nZXQoKSwgRkFMU0UpKTsKKyAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50PiA+KGdfdmFyaWFudF9uZXdfZnJv
bV9ieXRlcyh2YXJpYW50VHlwZS5nZXQoKSwgYnl0ZXMuZ2V0KCksIEZBTFNFKSk7CiB9CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNlcnRpZmljYXRlKQpAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIEdSZWZQdHI8RwogICAgIH0KIH0KIAotT3B0aW9uYWw8
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1Rsc0NlcnRp
ZmljYXRlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgdWludDMyX3QgY2hhaW5MZW5ndGg7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFpbkxlbmd0aCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuaAppbmRleCA0M2QwZWM0MWIwYjQ2YWVl
NjgwMGVhNDliZGI5MmY4YzJhODI3Nzc3Li42YjA2YWM4MmJlZjVkZDk0N2EzYTI4YzA5ZmQxMGM5
Y2QzMjQ4MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50
Q29kZXJzR0xpYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2Rl
cnNHTGliLmgKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50Pj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgR1JlZlB0cjxHVmFyaWFudD4pOwotICAgIHN0YXRpYyBPcHRp
b25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0
ZT4pOwotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1JlZlB0cjxHVGxzQ2VydGlm
aWNhdGU+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAppbmRleCA0MTBm
OGZhMzhjOGYwYTM3OTNlZGRmNDAxYzFlNThjMGVkMWNiYmJjLi5hYTIzNDk4MmNiMzQzYjA0NmJl
ZWQ1YWE0N2QxZGU2NWM5YzljNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
SW5wdXRNZXRob2RTdGF0ZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIElucHV0TWV0aG9k
U3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBoaW50czsKIH0KIAotT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SW5wdXRNZXRo
b2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGUucHVycG9zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lu
cHV0TWV0aG9kU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RT
dGF0ZS5oCmluZGV4IDY4YzEyYzk0Yzc0YmVjYmQ5OTY2MmNmYmNiOGEwYzg4ODZkZTNhZmIuLmFj
N2EzOWZkZGRkMThlMWVjNWM0NDk1OTczYmQwMGJiMWMwYmU3MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCkBAIC02OCw3ICs2OCw3IEBAIHN0cnVj
dCBJbnB1dE1ldGhvZFN0YXRlIHsKICAgICB2b2lkIGFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVU
eXBlKFdlYkNvcmU6OkF1dG9jYXBpdGFsaXplVHlwZSk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElucHV0TWV0
aG9kU3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIFB1cnBvc2UgcHVycG9zZSB7
IFB1cnBvc2U6OkZyZWVGb3JtIH07CiAgICAgT3B0aW9uU2V0PEhpbnQ+IGhpbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAppbmRleCBhNzM5ZTgyNmJlNDg5Mjcz
ZWRmYTlhMjEwNzZhMDU1NmY5YTM2NDhlLi4zMGY2MDFiNDI0ZjUwMjE1NGQxMzI5ODliMzU0Zjdk
YzNkNTgwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNz
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIFVzZXJNZXNzYWdlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXR0YWNobWVudHM7CiB9CiAKLU9wdGlvbmFs
PFVzZXJNZXNzYWdlPiBVc2VyTWVzc2FnZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIFVzZXJNZXNzYWdlIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKQEAgLTY5LDcgKzY5LDcgQEAgT3B0aW9uYWw8VXNlck1l
c3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHJlc3VsdC50eXBlID09IFR5cGU6OkVy
cm9yKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBlcnJvckNvZGU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGVycm9yQ29kZTsKICAgICAgICAgZGVjb2RlciA+PiBlcnJv
ckNvZGU7CiAgICAgICAgIGlmICghZXJyb3JDb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTc4LDEzICs3OCwxMyBAQCBPcHRpb25hbDxVc2VyTWVzc2FnZT4gVXNlck1l
c3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IHBhcmFtZXRlcnM7
CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gcGFyYW1ldGVyczsKICAgICBk
ZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gV1RGTW92ZSgqcGFyYW1l
dGVycyk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNobWVu
dHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4gYXR0YWNobWVu
dHM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50czsKICAgICBpZiAoIWF0dGFjaG1lbnRzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2Vy
TWVzc2FnZS5oCmluZGV4IDk1OTVlMjFlYjNmMDlkZmZmMjY3MTczM2Q1YjdlM2UzZmMyN2JiY2Qu
LmE5NmIwNGM4YjFkZDhlNzEwZDUzOTE1YzFmNzhiNTUyMWRlNGRiZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmgKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFVzZXJN
ZXNzYWdlIHsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxVc2VyTWVzc2FnZT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOwogCiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6TnVsbCB9OwogICAgIENTdHJpbmcgbmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4
IDczNTI4ODlhZjNkZDgzNmIwZmMwOTg1NWIzZTQ2Y2NhYzFjMTJjMmQuLjI1YTMwN2YzODI5ZTky
NzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNl
bGVjdGlvbkRhdGEmCiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7CiB9CiAKLU9wdGlv
bmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTZWxl
Y3Rpb25EYXRhIHNlbGVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuaAppbmRleCAyYTE3NWU2ZWY1NGYzYzNmMTM3MTAxMzE0MTg2NzE0ZWQxOTVk
ZTgyLi5kZTJhMGZlNjI0NGI4NTUyMWI3NjM2ZGIwZGM5MjNjOWVlNGM3MTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaApAQCAtNDUsNyArNDUsNyBA
QCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R3RrUGFn
ZVNldHVwPiYpOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAKaW5kZXggODNjYjQxYTRiMGJmY2Y5MjA2ZWJjMjI3NGE1MTNh
M2UwYTUxNWQ5Zi4uYzIwNDYzNzc3NGVlODAzZWFjNDJhMzRjZGU3OWFhNTU2ZjE0M2I4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50R3RrLmNwcApAQCAtMzksNyArMzksNyBAQCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZQogewog
fQogCi1OYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0
IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHByZWVk
aXRTZWxlY3Rpb25SYW5nZSkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJv
YXJkRXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIHN0ZDo6b3B0aW9u
YWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rpb25SYW5nZSkKICAgICA6IFdlYktleWJv
YXJkRXZlbnQoV2ViRXZlbnQ6OktleURvd24sIHRleHQsICJVbmlkZW50aWZpZWQiX3MsICJVbmlk
ZW50aWZpZWQiX3MsICJVKzAwMDAiX3MsIDIyOSwgR0RLX0tFWV9Wb2lkU3ltYm9sLCB0cnVlLCBX
VEZNb3ZlKHByZWVkaXRVbmRlcmxpbmVzKSwgV1RGTW92ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2Up
LCB7IH0sIGZhbHNlLCB7IH0sIFdhbGxUaW1lOjpub3coKSkKIHsKIH0KQEAgLTUwLDcgKzUwLDcg
QEAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY28KIH0KIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoZXZlbnQudHlwZSgpLCBldmVudC50ZXh0KCksIGV2
ZW50LmtleSgpLCBldmVudC5jb2RlKCksIGV2ZW50LmtleUlkZW50aWZpZXIoKSwgZXZlbnQud2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCksIGV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCksIGV2ZW50
LmhhbmRsZWRCeUlucHV0TWV0aG9kKCksIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+KGV2ZW50LnByZWVkaXRVbmRlcmxpbmVzKCkpLCBPcHRpb25hbDxFZGl0
aW5nUmFuZ2U+KGV2ZW50LnByZWVkaXRTZWxlY3Rpb25SYW5nZSgpKSwgVmVjdG9yPFN0cmluZz4o
ZXZlbnQuY29tbWFuZHMoKSksIGV2ZW50LmlzS2V5cGFkKCksIGV2ZW50Lm1vZGlmaWVycygpLCBl
dmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoZXZlbnQudHlwZSgpLCBl
dmVudC50ZXh0KCksIGV2ZW50LmtleSgpLCBldmVudC5jb2RlKCksIGV2ZW50LmtleUlkZW50aWZp
ZXIoKSwgZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksIGV2ZW50Lm5hdGl2ZVZpcnR1YWxL
ZXlDb2RlKCksIGV2ZW50LmhhbmRsZWRCeUlucHV0TWV0aG9kKCksIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4oZXZlbnQucHJlZWRpdFVuZGVybGlu
ZXMoKSksIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPihldmVudC5wcmVlZGl0U2VsZWN0aW9u
UmFuZ2UoKSksIFZlY3RvcjxTdHJpbmc+KGV2ZW50LmNvbW1hbmRzKCkpLCBldmVudC5pc0tleXBh
ZCgpLCBldmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGltZXN0YW1wKCkpCiAgICAgLCBtX25hdGl2
ZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVF
dmVudCgpKSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggOGRiZTdhZDcxYzNkZDBmOWJjYWEx
Yzc0YzE0YjFjYWVhNGEzMGY5Ni4uN2NjNjU3MzljMzIwY2I0MzEyZDlkNzA1Mjg0MjIwYTM4M2Ew
MjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNl
RXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiBldmVu
dCwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0
YSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2
ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gZGVsdGEpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
TW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50LCBkZWx0YSkpCiAgICAgLCBtX25hdGl2
ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKIHsKIH0KIAotTmF0aXZlV2ViTW91c2VFdmVu
dDo6TmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb3NpdGlvbiwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRTaXplPiBkZWx0YSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGlu
dCBldmVudENsaWNrQ291bnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0
YSkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2
ZW50KGV2ZW50LCBwb3NpdGlvbiwgcG9zaXRpb24sIGV2ZW50Q2xpY2tDb3VudCwgZGVsdGEpKQog
ICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CkBAIC00OCw3ICs0
OCw3IEBAIE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKQogewogfQogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpO
YXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8
TW9kaWZpZXI+IG1vZGlmaWVycywgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSwg
V2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSkK
K05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0
b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50
IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0U2l6ZT4gZGVsdGEsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQs
IGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpCiAgICAgOiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1
dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YS52YWx1ZV9vcihX
ZWJDb3JlOjpGbG9hdFNpemUoKSkud2lkdGgoKSwgZGVsdGEudmFsdWVfb3IoV2ViQ29yZTo6Rmxv
YXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSwgMCwgTm9UYXAsIHBvaW50ZXJJZCwgcG9pbnRlclR5cGUpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGRlYjM2OTM4NjVjMTc3
NWQ5M2QwNDFhYTQyMzkzMzc2YzhjN2RlY2MuLjhkNjI2OTBmNDNjZjVmZWE2OWI4ZjkwYzg3Y2Fm
NmQ1MTA2NWFkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIGlubGluZSBzaG9ydCBwcmVzc2VkTW91
c2VCdXR0b25zKEdka01vZGlmaWVyVHlwZSBzdGF0ZSkKICAgICByZXR1cm4gYnV0dG9uczsKIH0K
IAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29u
c3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3VycmVudENsaWNrQ291bnQsIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gZGVsdGEpCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGludCBjdXJyZW50Q2xpY2tDb3VudCwgc3Rk
OjpvcHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQogewogICAgIGRvdWJsZSB4LCB5OwogICAgIGdk
a19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFdl
Yk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdk
a0V2ZW50KiBldmVudCwgaW50IGN1CiAgICAgcmV0dXJuIGNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZl
bnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0sIHsgY2xhbXBUb0lu
dGVnZXIoeFJvb3QpLCBjbGFtcFRvSW50ZWdlcih5Um9vdCkgfSwgY3VycmVudENsaWNrQ291bnQs
IGRlbHRhKTsKIH0KIAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGN1cnJlbnRDbGlja0NvdW50LCBP
cHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQorV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGN1cnJlbnRD
bGlja0NvdW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gZGVsdGEpCiB7CiAjaWYgVVNFKEdU
SzQpCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBOYXRpdmVXZWJNb3VzZUV2ZW50IHJl
cHJlc2VudGluZyBhIGNyb3NzaW5nIGV2ZW50IGlzIGNvcGllZC4KQEAgLTI2NCw3ICsyNjQsNyBA
QCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25z
dCBHZGtFdmVudCogZXZlbnQsIFdlYldoZQogCiBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0IEludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJXaGVlbEV2
ZW50OjpQaGFzZSBwaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZSkKIHsK
LSAgICBPcHRpb25hbDxGbG9hdFNpemU+IHdoZWVsVGlja3M7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IHdoZWVsVGlja3M7CiAgICAgR2RrU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsK
ICAgICBpZiAoIWdka19ldmVudF9nZXRfc2Nyb2xsX2RpcmVjdGlvbihldmVudCwgJmRpcmVjdGlv
bikpIHsKICAgICAgICAgZGlyZWN0aW9uID0gR0RLX1NDUk9MTF9TTU9PVEg7CkBAIC0zMzQsNyAr
MzM0LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdAogICAgICAgICB3YWxsVGltZUZvckV2ZW50
KGV2ZW50KSk7CiB9CiAKLVdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYg
cHJlZWRpdFNlbGVjdGlvblJhbmdlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKQorV2ViS2V5
Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
R2RrRXZlbnQqIGV2ZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgaGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVl
ZGl0VW5kZXJsaW5lcywgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVj
dGlvblJhbmdlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKQogewogICAgIGd1aW50IGtleXZh
bDsKICAgICBnZGtfZXZlbnRfZ2V0X2tleXZhbChldmVudCwgJmtleXZhbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMTlmODg2YWQ1NmM5NzY2ZDdl
YmQ5OTg5YzVjYWRhOTZhMDllNjBmOS4uNzliYTc0ZTc5MTRhNzQ3ZjlhYWE4MDc5NDA3NDZmNTNl
OWFiZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApA
QCAtNDQsMTUgKzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFdmVudEZh
Y3RvcnkgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNl
RXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4p
OwotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2Rr
RXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgaW50LCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKKyAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNy
ZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0U2l6ZT4pOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZl
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBj
cmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdlYldoZWVs
RXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCosIFdlYldoZWVsRXZlbnQ6
OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKTsKICAgICBzdGF0aWMg
V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVs
RXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgV2ViV2hlZWxFdmVudDo6UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBo
YXNlIG1vbWVudHVtUGhhc2UpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldo
ZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tz
LCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFz
ZSk7Ci0gICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlv
bmFsPEVkaXRpbmdSYW5nZT4mJiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcyk7CisgICAgc3Rh
dGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVu
dCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25h
bDxFZGl0aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpOwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hF
dmVudChjb25zdCBHZGtFdmVudCosIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiYpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDVjMTk5NTgyODVmZmE2NWI3Y2ZiN2Jj
MjA1YTg5MzE4MDgwYWEwNTYuLmJiMDBjNDYxZDEyMjJmZDVmYWFlNzMyNjRmYmZiNTRhMWUyMzE5
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QgcmVxdWVzdDsKIAogICAgIGJvb2wgY2FuQmVWYWxpZCB7IHRydWUgfTsKLSAgICBP
cHRpb25hbDxib29sPiBub2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG5vZGVBdFBvc2l0aW9uSGFzRG91YmxlQ2xpY2tIYW5kbGVyOwog
ICAgIGJvb2wgaXNTZWxlY3RhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzU2VsZWN0ZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgcHJlZmVyc0RyYWdnaW5nT3ZlclRleHRTZWxlY3Rpb24geyBmYWxz
ZSB9OwpAQCAtODgsNyArODgsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24gewogICAgIGZsb2F0IGNhcmV0SGVpZ2h0IHsgMCB9OwogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBsaW5lQ2FyZXRFeHRlbnQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDdXJzb3I+IGN1
cnNvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkN1cnNvcj4gY3Vyc29yOwogCiAgICAg
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgbGlua0luZGljYXRvcjsKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCkBAIC05Niw4ICs5Niw4IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGRhdGFEZXRlY3RvclJlc3Vs
dHM7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVt
ZW50Q29udGV4dDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gaW1hZ2VF
bGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiBlbGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBpbWFnZUVsZW1lbnRDb250ZXh0OwogCiAgICAgLy8gQ29weSBjb21wYXRpYmxlIG9wdGlv
bmFsIGJpdHMgZm9yd2FyZCAoZm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgYSBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbgogICAgIC8vIHdpdGggc25hcHNob3RzIGluIGl0LCBhbmQgcGVy
Zm9ybSBhbm90aGVyIHJlcXVlc3QgZm9yIHRoZSBzYW1lIHBvaW50IHdpdGhvdXQgcmVxdWVzdGlu
ZyB0aGUgc25hcHNob3RzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCmluZGV4IDE1NzI1YmM2YWRj
NzEwODdlMjA1ZTEwM2RmZThjMWJkMzY1YzNhYzUuLmU0ZDA5NDIzYjgyN2FjNjYzNzYzM2E1Y2Zi
YWI1ZWIwNGRhZTEwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTE3Myw3ICsxNzMs
NyBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmN1cnNvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gbGlua0luZGljYXRvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBsaW5rSW5kaWNhdG9yOwogICAgIGRlY29k
ZXIgPj4gbGlua0luZGljYXRvcjsKICAgICBpZiAoIWxpbmtJbmRpY2F0b3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29y
cmVjdGlvbkNvbnRleHQuaAppbmRleCA5NGE5YzUwYzRiNDc1YWU4ODNkODdkMjk5MWIwNjhlZDBm
MTBhZjQ0Li4xMDE2M2ZlN2RlOGYyY2YxMGIyN2MyZTM0N2YxNDBmNWFlNzI5MGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgewogICAg
IEVkaXRpbmdSYW5nZSBtYXJrZWRUZXh0UmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dD4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01Myw3ICs1Myw3IEBAIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikKICAgICBlbmNvZGVyIDw8IG1hcmtlZFRleHRSYW5nZTsKIH0KIAotdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0PiBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvcnJlY3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb3JyZWN0aW9uLmNvbnRleHRCZWZvcmUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oCmluZGV4IGQ3NDAxNGQ1NzM4OWE1YjBiMmJlNGNj
ZTYxN2I4OTQ2YTAxNjkxOTguLjZiODFkMzE3OGIwYTJkNWE4YTRlMjE3MmQ4MzBmYzY0OTFlNjc5
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YSB7CiAg
ICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IGRl
Y29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJBdXRvY29y
cmVjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEubW0KaW5kZXggYzEyODdkMWI3NjEwZmY1YjIyNTBlNTNmNzBkN2Q1MGU1YWMzZmVjMi4u
OGE5ZmUzMWM1NzgzODNmYjczMTc2ZWEwOThhMzFjYTg3ODJjOGNiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCkBAIC00NCw5ICs0
NCw5IEBAIHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnQuZ2V0KCkpOwogfQog
Ci1PcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQXV0b2NvcnJl
Y3Rpb25EYXRhPiBXZWJBdXRvY29ycmVjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UmVjdD4+IHRleHRSZWN0czsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiB0ZXh0UmVjdHM7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0UmVjdHM7CiAgICAgaWYgKCF0ZXh0UmVjdHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5
LmgKaW5kZXggMjYxMGMxMTRhNzI2N2U1ZWZjZTJiNjlmOTFiYjgyZWY5ZjE4YmE2Yy4uOTA3NTFk
ODdkODJiZDYwMzhmNTcxMGNjM2I1MzBhMTBhNWJkMWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KDo6
V2ViRXZlbnQgKik7CiAKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xM
X0VWRU5UX0hBTkRMSU5HKQotICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQgY3JlYXRl
V2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcsIE9wdGlv
bmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhhc2UgPSBzdGQ6Om51
bGxvcHQpOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxF
dmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcsIHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZSA9IHN0ZDo6bnVsbG9w
dCk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlm
aWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQppbmRleCBhZGJkNTE1
OGUzM2ZmNDg2ZGRjNDE0MmI2ZTZhMWYzNjk2M2I4M2Q4Li4yZTM5MzNiY2JlMzY3MmQyNzNiZmZj
MzkxMTMzZGNlMTJjMjIyNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViSU9TRXZlbnRGYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJ
T1NFdmVudEZhY3RvcnkubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50OjpQaGFzZSB0b1dlYlBoYXNlKFVJU2Nyb2xsUGhhc2UgcGhhc2UpCiAgICAgfQog
fQogCi1XZWJLaXQ6OldlYldoZWVsRXZlbnQgV2ViSU9TRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJX
aGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZW50LCBVSVZpZXcgKmNvbnRlbnRWaWV3LCBPcHRp
b25hbDxXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlPiBvdmVycmlkZVBoYXNlKQorV2ViS2l0
OjpXZWJXaGVlbEV2ZW50IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChV
SVNjcm9sbEV2ZW50ICpldmVudCwgVUlWaWV3ICpjb250ZW50Vmlldywgc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlPiBvdmVycmlkZVBoYXNlKQogewogICAgIFdlYkNv
cmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtl
dmVudCBsb2NhdGlvbkluVmlldzpjb250ZW50Vmlld10pOwogICAgIENHVmVjdG9yIGRlbHRhVmVj
dG9yID0gW2V2ZW50IF9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6Y29udGVudFZpZXdd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQ
b2ludElPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBv
aW50SU9TLmNwcAppbmRleCBlNGM4MTFiMTdjYzBiOGE4MzIxYzc3NDYwZDVhMWQ1MzQ4YjEyN2Ex
Li4wM2UxMTgxNTRmNmJiNWI3MDRiNGVjYjgzZDNkOTU0M2Y4YzVhNWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcApA
QCAtNDksNyArNDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgogfQogCi1PcHRpb25hbDxXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViUGxh
dGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X2lkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBy
ZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW0KaW5kZXggNGNlZWUwM2Q3YjAwMzk3Y2Mx
MTZjMGM2NGJlNWM1ZmI2ZWI4MDdiMC4uYWFmY2E2NWU0Y2VlMjEzOGJiMDJkODJkMmNjMjE3ZWY0
ZTM1MDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
UHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCkBAIC00NCw5ICs0NCw5IEBAIGJvb2wgZGVm
YXVsdFRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlKCkKICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLXN0YXRpYyBPcHRpb25h
bDxib29sPiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29s
PiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9w
dGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxz
dGQ6Om9wdGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0OwogICAgIHJldHVybiBhbGxvd3NSZXF1
ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggNDE5MmVhNGEzMDBjZWMzMzlk
NDVmMGE3NWZmY2I3NjNjM2E2OWY4Yy4uODJiYzZjYTFiZTkwYTkxYmI2MTg5M2ZlNDRlNWRiMzQ1
NWIzYmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xpYndw
ZS9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TGliV1BFLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBIYW5kbGVkQnlJbnB1dE1ldGhvZCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0
VW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rpb25SYW5n
ZSkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0
IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgSGFu
ZGxlZEJ5SW5wdXRNZXRob2QgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywg
c3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlKQogICAg
IDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoZXZlbnQsIHRleHQsIGhhbmRsZWRCeUlucHV0TWV0aG9kID09IEhhbmRsZWRCeUlucHV0TWV0
aG9kOjpZZXMsIFdURk1vdmUocHJlZWRpdFVuZGVybGluZXMpLCBXVEZNb3ZlKHByZWVkaXRTZWxl
Y3Rpb25SYW5nZSkpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGli
d3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2Vi
RXZlbnRGYWN0b3J5LmNwcAppbmRleCAyMTIyNjllMzAyOWMwZTAzMGQ2YjdkNTc0ZGJkMDQ5Y2Iw
MjdmNDE2Li5hMzM5MmVmMmVjYWVmMWNjNDdjZjkwOWI1MzkwYzgwMGZlMjE5ZTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIFdhbGxUaW1lIHdhbGxUaW1lRm9yRXZlbnRUaW1lKHVpbnQ2NF90IG1zVGlt
ZVN0YW1wKQogICAgIHJldHVybiBmaXJzdEV2ZW50V2FsbFRpbWUgKyBTZWNvbmRzKGRlbHRhIC8g
MTAwMC4pOwogfQogCi1XZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBP
cHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlKQorV2ViS2V5Ym9h
cmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0IHdw
ZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBo
YW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRp
bmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpCiB7CiAgICAgcmV0dXJuIFdlYktleWJv
YXJkRXZlbnQoZXZlbnQtPnByZXNzZWQgPyBXZWJFdmVudDo6S2V5RG93biA6IFdlYkV2ZW50OjpL
ZXlVcCwKICAgICAgICAgdGV4dC5pc051bGwoKSA/IFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXlfY29kZSkgOiB0ZXh0LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGVkZTFk
M2ViMTMxZTkxYTJkOTQ4N2UzMTgwMTQzMGMwNDJlMzBlNGMuLjZlZDY5ZmJkYTY0NjdmMmFhZDU1
NGM3MWExMTU4NDUwY2Q4NDhkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xp
YndwZS9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
V2ViRXZlbnRGYWN0b3J5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYktleWJvYXJk
RXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgT3B0aW9uYWw8RWRpdGlu
Z1JhbmdlPiYmKTsKKyAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRfZXZlbnQqLCBjb25zdCBTdHJpbmcmLCBi
b29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4+JiYsIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmKTsK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVf
aW5wdXRfcG9pbnRlcl9ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBzdGF0
aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhp
c19ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwg
V2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZSk7CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KaW5kZXggMWM4NTU3MWJkZGQ4Y2Q1NGEwMTI2NTZlYjcwMGRiZDQyOTE2MDVjYS4uNGQyZmM0
NDUzN2MwYjYwMGYyNWEwOTJmZjc5YjUzNDY3MTllMjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBz
dGF0aWMgdm9pZCBzZXROb3RpZnlPcHRpb25zKCkKIH0KIAogI2lmIFVTRShDQUNIRV9DT01QSUxF
RF9TQU5EQk9YKQotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gZmlsZUNvbnRlbnRzKGNv
bnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRMb2NrID0gZmFsc2UsIE9wdGlvblNldDxGaWxl
U3lzdGVtOjpGaWxlTG9ja01vZGU+IGxvY2tNb2RlID0gRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
OjpFeGNsdXNpdmUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGZpbGVDb250
ZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkTG9jayA9IGZhbHNlLCBPcHRpb25T
ZXQ8RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSA9IEZpbGVTeXN0ZW06OkZpbGVM
b2NrTW9kZTo6RXhjbHVzaXZlKQogewogICAgIEZpbGVIYW5kbGUgZmlsZSA9IHNob3VsZExvY2sg
PyBGaWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCwgbG9ja01v
ZGUpIDogRmlsZUhhbmRsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwog
ICAgIGZpbGUub3BlbigpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBwcm9jZXNzU3RvcmFnZUNsYXNzKFdlYkNvcmU6OkF1eGlsaWFyeVByb2Nlc3NUeXBlIHR5cGUp
CiB9CiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotc3RhdGljIE9wdGlvbmFs
PENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIGluaXRpYWxpemF0aW9uUGFyYW1ldGVycywgY29uc3Qg
U2FuZGJveFBhcmFtZXRlcnNQdHImIHNhbmRib3hQYXJhbWV0ZXJzLCBjb25zdCBTdHJpbmcmIHBy
b2ZpbGVPclByb2ZpbGVQYXRoLCBib29sIGlzUHJvZmlsZVBhdGgpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxDU3RyaW5nPiBzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMsIGNv
bnN0IFNhbmRib3hQYXJhbWV0ZXJzUHRyJiBzYW5kYm94UGFyYW1ldGVycywgY29uc3QgU3RyaW5n
JiBwcm9maWxlT3JQcm9maWxlUGF0aCwgYm9vbCBpc1Byb2ZpbGVQYXRoKQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5jb3VudCgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgK
aW5kZXggY2Y0YjQ3YTYzY2E4ZmY2MGY4M2M0NmY5ZGQxMzg0YTc5MThhMmM4OC4uMzdlNGFkNDI3
NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBDb25kaXRpb24gbV9wYXJzZVRy
YWNrc0NvbmRpdGlvbjsKICAgICBMb2NrIG1fcGFyc2VUcmFja3NMb2NrOwogICAgIE1lZGlhVGlt
ZSBtX2R1cmF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wYXJzZVRyYWNrc0xvY2spOwotICAg
IE9wdGlvbmFsPE9TU3RhdHVzPiBtX3BhcnNlVHJhY2tzU3RhdHVzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9wYXJzZVRyYWNrc0xvY2spOworICAgIHN0ZDo6b3B0aW9uYWw8T1NTdGF0dXM+IG1fcGFy
c2VUcmFja3NTdGF0dXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAg
ICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0
ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBlNGJlZjIzYzZlZWFkNzA2NzVhNDRkNDQzMWY5MWQw
NTgyZDU4MDk5Li4wMDM0NjhiZTBiMzcxN2ZkMGY1NGMyOWFmNGNiYzE0NjNiODlkODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRl
UmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVS
YW5nZTsgfQogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CiAgICAgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCmluZGV4IGU1NDNlMDNlMmY0ZWYwNDU3YzIxN2VmYzYwMzAzODMxYzY2OWZmMzku
LmYyNDk3NWIxOWEwOTVlZGE3MGM3NGEyM2NlOTM3NzdmNWU2NTBmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMTM4LDEyICsxMzgsMTIgQEAgTWVkaWFTYW1wbGVDdXJz
b3I6Ok1lZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVkaWFT
YW1wbGVDdXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3JkZXJlZE1hcD4KLU9wdGlvbmFsPHR5
cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yPiBNZWRpYVNhbXBsZUN1cnNvcjo6bG9jYXRlSXRl
cmF0b3IoT3JkZXJlZE1hcCYgc2FtcGxlcywgYm9vbCBoYXNBbGxTYW1wbGVzKSBjb25zdAorc3Rk
OjpvcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gTWVkaWFTYW1wbGVDdXJz
b3I6OmxvY2F0ZUl0ZXJhdG9yKE9yZGVyZWRNYXAmIHNhbXBsZXMsIGJvb2wgaGFzQWxsU2FtcGxl
cykgY29uc3QKIHsKICAgICBBU1NFUlQobV9sb2NhdG9yTG9jay5pc0xvY2tlZCgpKTsKICAgICB1
c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yOwogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fbG9jYXRvciwKLSAgICAgICAgWyZdKGNvbnN0IE1lZGlhVGltZSYg
cHJlc2VudGF0aW9uVGltZSkgLT4gT3B0aW9uYWw8SXRlcmF0b3I+IHsKKyAgICAgICAgWyZdKGNv
bnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSkgLT4gc3RkOjpvcHRpb25hbDxJdGVyYXRv
cj4gewogICAgICAgICAgICAgYXNzZXJ0SXNIZWxkKG1fbG9jYXRvckxvY2spOwogICAgICAgICAg
ICAgYXV0byBpdGVyYXRvciA9IHVwcGVyQm91bmQoc2FtcGxlcywgcHJlc2VudGF0aW9uVGltZSk7
CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gc2FtcGxlcy5iZWdpbigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxl
Q3Vyc29yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVDdXJzb3IuaAppbmRleCBiNzU2ZTI2ZDg3YWYzNWE5MzU3MWEyZGI0OGNhMzFiM2Nk
OTliYmY3Li42NjVkMDAzNWRiMGVmYTIzYTgxY2ZiNThkMDExNjZjZDA4MDFkODI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1w
bGVDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIE1l
ZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYmLCBNZWRpYVRyYWNrUmVhZGVyJiwgTG9jYXRvcik7
CiAgICAgTWVkaWFTYW1wbGVDdXJzb3IoQWxsb2NhdG9yJiYsIGNvbnN0IE1lZGlhU2FtcGxlQ3Vy
c29yJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmRlcmVkTWFwPiBPcHRpb25hbDx0eXBl
bmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRlSXRlcmF0b3IoT3JkZXJlZE1hcCYsIGJv
b2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JkZXJlZE1hcD4gc3RkOjpvcHRpb25hbDx0eXBlbmFt
ZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRlSXRlcmF0b3IoT3JkZXJlZE1hcCYsIGJvb2wg
aGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7CiAg
ICAgV2ViQ29yZTo6TWVkaWFTYW1wbGUqIGxvY2F0ZU1lZGlhU2FtcGxlKFdlYkNvcmU6OlNhbXBs
ZU1hcCYsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2Nh
dG9yTG9jayk7CiAgICAgVGltaW5nIGxvY2F0ZVRpbWluZyhXZWJDb3JlOjpTYW1wbGVNYXAmLCBi
b29sIGhhc0FsbFNhbXBsZXMpIGNvbnN0IFdURl9SRVFVSVJFU19MT0NLKG1fbG9jYXRvckxvY2sp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFUcmFja1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAKaW5kZXggOWFlM2QwNTAyYWRiZGVjZmVk
YjJlNmNiYmY3YWQ2MmVlM2ZiOGUzNC4uNTRiMzEyOTliMzhhM2FiNzRiMmMwODFmMjlkOTFiOGIw
NzM4OGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtNTksNyArNTksNyBA
QCBDb3JlTWVkaWFXcmFwcGVkPE1lZGlhVHJhY2tSZWFkZXI+KiBNZWRpYVRyYWNrUmVhZGVyOjp1
bndyYXAoQ01CYXNlT2JqZWN0UmVmIG9iagogICAgIHJldHVybiB1bndyYXAoY2hlY2tlZF9jZl9j
YXN0PFdyYXBwZXJSZWY+KG9iamVjdCkpOwogfQogCi1SZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4g
TWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVk
aWFGb3JtYXRSZWFkZXImIGZvcm1hdFJlYWRlciwgQ01NZWRpYVR5cGUgbWVkaWFUeXBlLCB1aW50
NjRfdCB0cmFja0lELCBPcHRpb25hbDxib29sPiBlbmFibGVkKQorUmVmUHRyPE1lZGlhVHJhY2tS
ZWFkZXI+IE1lZGlhVHJhY2tSZWFkZXI6OmNyZWF0ZShBbGxvY2F0b3ImJiBhbGxvY2F0b3IsIGNv
bnN0IE1lZGlhRm9ybWF0UmVhZGVyJiBmb3JtYXRSZWFkZXIsIENNTWVkaWFUeXBlIG1lZGlhVHlw
ZSwgdWludDY0X3QgdHJhY2tJRCwgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgKGFsbG9jYXRvcikgTWVkaWFUcmFja1JlYWRlcihXVEZNb3Zl
KGFsbG9jYXRvciksIGZvcm1hdFJlYWRlciwgbWVkaWFUeXBlLCB0cmFja0lELCBlbmFibGVkKSk7
CiB9CkBAIC03MCw3ICs3MCw3IEBAIFdvcmtRdWV1ZSYgTWVkaWFUcmFja1JlYWRlcjo6c3RvcmFn
ZVF1ZXVlKCkKICAgICByZXR1cm4gcXVldWU7CiB9CiAKLU1lZGlhVHJhY2tSZWFkZXI6Ok1lZGlh
VHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYgYWxsb2NhdG9yLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRl
ciYgZm9ybWF0UmVhZGVyLCBDTU1lZGlhVHlwZSBtZWRpYVR5cGUsIHVpbnQ2NF90IHRyYWNrSUQs
IE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCitNZWRpYVRyYWNrUmVhZGVyOjpNZWRpYVRyYWNrUmVh
ZGVyKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3QgTWVkaWFGb3JtYXRSZWFkZXImIGZvcm1h
dFJlYWRlciwgQ01NZWRpYVR5cGUgbWVkaWFUeXBlLCB1aW50NjRfdCB0cmFja0lELCBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGVuYWJsZWQpCiAgICAgOiBDb3JlTWVkaWFXcmFwcGVkKFdURk1vdmUoYWxs
b2NhdG9yKSkKICAgICAsIG1fdHJhY2tJRCh0cmFja0lEKQogICAgICwgbV9tZWRpYVR5cGUobWVk
aWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmgKaW5kZXggOTIwYmJhMWI5Y2M2OGRmZTY3
ODIzMzJjMGJlMTY1OWI4NzkwZDhjNi4uMTIwNWJjMjZkYWZlZTdkZDRmZGNhN2M4NjYzODE4ZmQ4
Zjg5NzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQ29yZU1lZGlhV3JhcHBlZDxNZWRpYVRyYWNrUmVhZGVyPiogdW53
cmFwKENNQmFzZU9iamVjdFJlZik7CiAgICAgc3RhdGljIFdURjo6V29ya1F1ZXVlJiBzdG9yYWdl
UXVldWUoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4gY3JlYXRlKEFs
bG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50NjRf
dCwgT3B0aW9uYWw8Ym9vbD4pOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4g
Y3JlYXRlKEFsbG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBl
LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxib29sPik7CiAKICAgICB1aW50NjRfdCB0cmFja0lE
KCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CiAgICAgQ01NZWRpYVR5cGUgbWVkaWFUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB1c2luZyBDb3JlTWVkaWFXcmFwcGVkPE1lZGlhVHJhY2tSZWFkZXI+
Ojp1bndyYXA7CiAKLSAgICBNZWRpYVRyYWNrUmVhZGVyKEFsbG9jYXRvciYmLCBjb25zdCBNZWRp
YUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50NjRfdCwgT3B0aW9uYWw8Ym9vbD4pOwor
ICAgIE1lZGlhVHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYsIGNvbnN0IE1lZGlhRm9ybWF0UmVhZGVy
JiwgQ01NZWRpYVR5cGUsIHVpbnQ2NF90LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAogICAgIC8v
IENNQmFzZUNsYXNzCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiV2ViS2l0OjpNZWRpYVRyYWNrUmVhZGVyIl9zOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCA3MGE1YzgwNDQ2Y2VjOGVlZTQ3MzU2
OTNlMWM4NmU0YjYzMTU4M2NjLi4zYmNlMDE0MDY3ZWRkYzhjNTI0ZGY4ZjA4OTZmZjEzM2FmYjVm
OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBo
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAg
LTEwOSw3ICsxMDksNyBAQCBlbnVtIGNsYXNzIE9iakNUeXBlIDogdWludDhfdCB7CiAgICAgV0tU
eXBlUmVmV3JhcHBlciwKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21P
YmplY3QoaWQgb2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9t
T2JqZWN0KGlkIG9iamVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKIApAQCAtMzA3LDExICsz
MDcsMTEgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYWdlUHJveHlJ
RDsKICAgICAgICAgaWYgKCFwYWdlUHJveHlJRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOwog
ICAgICAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKICAgICAgICAgaWYgKCF3ZWJQYWdlSUQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvUERGQ29udGV4dE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250
ZXh0TWVudS5oCmluZGV4IDgxY2RiZTgwMWMyZmNjNzZjYjk4YmQzMzYxMzNhMjdkNWFjOWMwZjcu
LjVmYTkwZDM2OGM1ODM4NWRjNWVlNDBmYTE5ODg5ZmM0YjNhMTkyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCkBAIC00MSwzNCArNDEsMzQgQEAgc3RydWN0
IFBERkNvbnRleHRNZW51SXRlbSB7CiAgICAgICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgZW5hYmxl
ZCA8PCBzZXBhcmF0b3IgPDwgc3RhdGUgPDwgaGFzQWN0aW9uIDw8IHRhZzsKICAgICB9CiAgICAg
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBERkNvbnRleHRN
ZW51SXRlbT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UERGQ29udGV4dE1lbnVJdGVtPiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdGl0bGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAgICAgICAgZGVjb2RlciA+PiB0
aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAg
IGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2VwYXJhdG9yOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHNlcGFyYXRvcjsKICAgICAgICAgZGVjb2RlciA+PiBzZXBhcmF0b3I7CiAgICAgICAgIGlmICgh
c2VwYXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxpbnQ+IHN0YXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gc3RhdGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3RhdGU7CiAgICAgICAgIGlmICghc3RhdGUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0FjdGlv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBY3Rpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gaGFzQWN0aW9uOwogICAgICAgICBpZiAoIWhhc0FjdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0YWc7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiB0YWc7CiAgICAgICAgIGRlY29kZXIgPj4gdGFnOwogICAgICAg
ICBpZiAoIXRhZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCwyNiAr
ODAsMjYgQEAgc3RydWN0IFBERkNvbnRleHRNZW51SXRlbSB7CiBzdHJ1Y3QgUERGQ29udGV4dE1l
bnUgewogICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogICAgIFZlY3RvcjxQREZDb250ZXh0
TWVudUl0ZW0+IGl0ZW1zOwotICAgIE9wdGlvbmFsPGludD4gb3BlbkluUHJldmlld0luZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAgICAgCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgcG9pbnQgPDwgaXRlbXMgPDwgb3BlbkluUHJldmll
d0luZGV4OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UERGQ29udGV4dE1lbnU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBERkNvbnRleHRNZW51
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBwb2ludDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4gcG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gcG9pbnQ7CiAgICAgICAgIGlmICghcG9p
bnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+PiBpdGVtczsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UERGQ29udGV4dE1lbnVJdGVtPj4gaXRlbXM7CiAgICAgICAgIGRlY29kZXIgPj4g
aXRlbXM7CiAgICAgICAgIGlmICghaXRlbXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGludD4+IG9wZW5JblByZXZpZXdJbmRl
eDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGludD4+IG9wZW5JblByZXZp
ZXdJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAgICAgICAg
IGlmICghb3BlbkluUHJldmlld0luZGV4KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cAppbmRleCBkOGJhZjlmZWM5YTE3MzM0MjczMWIwZDRmMzBhYmVjMGFiOTE2ZWE4Li5lYzE3M2Ey
YzVkYzJiNTRmOWYyYTRlOWI5YzVjN2M2ODI5ZjYyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZv
aWQgU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICAgICAgZW5jb2RlciA8PCBtX3Jlc3VsdE9iamVjdDsKIH0KIAotT3B0aW9uYWw8U2Vj
SXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJl
c3BvbnNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpbnQ2NF90
IHJlc3VsdENvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHRDb2RlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCmluZGV4IGUzNzFj
MTc1MzIxY2JjYjdjNjc2OWY5YTk5NzZhODVlZDVkODkxODEuLjk5NzEzMjRkOWU4YmJlZjk5ZWQ3
MGU3MzJhYzBhYzRiOTdhZmNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9TZWNJdGVtUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Nl
Y0l0ZW1SZXNwb25zZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgU2VjSXRl
bVJlc3BvbnNlRGF0YShPU1N0YXR1cywgUmV0YWluUHRyPENGVHlwZVJlZj4mJiByZXN1bHQpOwog
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYgcmVzdWx0T2JqZWN0KCkgeyByZXR1cm4g
bV9yZXN1bHRPYmplY3Q7IH0KICAgICBPU1N0YXR1cyByZXN1bHRDb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHRDb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNw
cAppbmRleCBlZmUyZjIyMzc3ZWViYTkyM2VlYWFlNzI4YjFhODZkYTk1ZTkxMzEyLi41MTllZGMy
ZGQ5MGJjZThlZGVmYTFjMGU4ZDliNTA4NzZmZGM5YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgc3RhdGljIFdlYWtQdHI8TmV0
d29ya1Byb2Nlc3M+JiBnbG9iYWxOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIG5ldHdvcmtQ
cm9jZXNzLmdldCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4g
c2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwg
Q0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gg
PSAwKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0
ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9u
YXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewot
ICAgIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2U7CiAKICAgICBpZiAoUnVuTG9vcDo6
aXNNYWluKCkpIHsKICAgICAgICAgaWYgKCFnbG9iYWxOZXR3b3JrUHJvY2VzcygpLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6
U2VjSXRlbVJlcXVlc3RTeW5jKFNlY0l0ZW1SZXF1ZXN0RGF0YShyZXF1ZXN0VHlwZSwgcXVlcnks
IGF0dHJpYnV0ZXNUb01hdGNoKSksIE1lc3NhZ2VzOjpTZWNJdGVtU2hpbVByb3h5OjpTZWNJdGVt
UmVxdWVzdFN5bmM6OlJlcGx5KHJlc3BvbnNlKSwgMCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCA1NmI1OGY4MzQ1
YmVmMmIyNzZmNDM4ZGQ4NzMxM2Q4YmYyZGI5ZGNhLi4xZGRjOTE4ZWYxMWU2YjJlZWMzOTExNjU3
OGY2M2YxYTIxOTFlMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4MCwxNCArMjgwLDE0IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViCiAgICAgZW5jb2RlciA8PCBrZXlwcmVzc0NvbW1hbmQuY29tbWFuZE5h
bWUgPDwga2V5cHJlc3NDb21tYW5kLnRleHQ7CiB9CiAgICAgCi1PcHRpb25hbDxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OktleXByZXNz
Q29tbWFuZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbW1hbmROYW1lOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb21tYW5kTmFtZTsKICAgICBkZWNvZGVyID4+IGNv
bW1hbmROYW1lOwogICAgIGlmICghY29tbWFuZE5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMDMsMTQgKzMwMywxNCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q0dSZWN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENHUmVjdCByZWN0
KQogICAgIGVuY29kZXIgPDwgcmVjdC5vcmlnaW4gPDwgcmVjdC5zaXplOwogfQogCi1PcHRpb25h
bDxDR1JlY3Q+IEFyZ3VtZW50Q29kZXI8Q0dSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPENHUmVjdD4gQXJndW1lbnRDb2RlcjxDR1JlY3Q+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxDR1BvaW50PiBvcmlnaW47CisgICAgc3Rk
OjpvcHRpb25hbDxDR1BvaW50PiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47CiAgICAg
aWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxDR1NpemU+
IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+IHNpemU7CiAgICAgZGVjb2RlciA+PiBz
aXplOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTMyMyw3ICszMjMs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dTaXplPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IENHU2l6ZSBzaXplKQogICAgIGVuY29kZXIgPDwgc2l6ZS53aWR0aCA8PCBzaXplLmhlaWdodDsK
IH0KIAotT3B0aW9uYWw8Q0dTaXplPiBBcmd1bWVudENvZGVyPENHU2l6ZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDR1NpemU+IEFyZ3VtZW50Q29kZXI8Q0dTaXpl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ0dTaXplIHNpemU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzaXplLndpZHRoKSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Q0dQb2ludD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDR1BvaW50IHBv
aW50KQogICAgIGVuY29kZXIgPDwgcG9pbnQueCA8PCBwb2ludC55OwogfQogCi1PcHRpb25hbDxD
R1BvaW50PiBBcmd1bWVudENvZGVyPENHUG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8Q0dQb2ludD4gQXJndW1lbnRDb2RlcjxDR1BvaW50Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgQ0dQb2ludCBwb2ludDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBvaW50LngpKQpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxD
R0FmZmluZVRyYW5zZm9ybT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDR0FmZmluZVRyYW5z
Zm9yCiAgICAgZW5jb2RlciA8PCB0cmFuc2Zvcm0uYSA8PCB0cmFuc2Zvcm0uYiA8PCB0cmFuc2Zv
cm0uYyA8PCB0cmFuc2Zvcm0uZCA8PCB0cmFuc2Zvcm0udHggPDwgdHJhbnNmb3JtLnR5OwogfQog
Ci1PcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5z
Zm9ybT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDR0FmZmluZVRy
YW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5zZm9ybT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybS5hKSkKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKAogICAgICAgICBlbmNvZGVPYmplY3QoZW5jb2RlciwgdmFsdWUubmF0
aXZlVmFsdWUoKS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRm
b3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQog
ewogICAgIEFTU0VSVChwbGF0Zm9ybVR5cGUgPT0gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6Ok9iakMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXggYjRlMDUxNTk0NzU1N2Yy
MDQyN2M5OTEyMmIzOWUwMDcyNDc1YTQ4Mi4uODgzYmJhZDJkODYzN2RmZTVmMjQwN2E2YTQ4YWUy
MTQ4OWZiNDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRl
c3RSZXN1bHREYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRh
OjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYkhpdFRlc3RSZXN1bAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzRGV0ZWN0ZWREYXRhVGV4dEluZGlj
YXRvcikgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5k
aWNhdG9yRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBpbmRpY2F0b3JEYXRhOwog
ICAgICAgICBpZiAoIWluZGljYXRvckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlv
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKaW5kZXggY2JlYjQwMGRhY2U1
NmI4ODJkMmU3YzQ0M2FlZGRiN2JlNDlkOWZmNy4uMDU0M2JjNjYzNGU2MzgzMWNmOWYyMThkYWI3
ZWUzZGVmNDZhOWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRp
b24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1bWVudENvZGVyc1BsYXlTdGF0aW9uLmNw
cApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IEZvbnRBdHRyaQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2Rl
cjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJp
YnV0ZXMmKQorc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250
QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJpYnV0ZXMm
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPEZvCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29k
ZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDk4N2Y4
YjU1NTIxODFhMjg4M2IxYTY0NDQ1ZDhmYTY4MWMwZTk3ZmIuLmY5MTYyMjBjNDNmOGUxM2EwNjQz
OGVkNDM4N2Y5NmM0MjY1NjdiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3Nv
dXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IENlcnRpZmljYXRlSQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJ
bmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvKQogewotICAgIE9wdGlvbmFsPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj4gY2VydGlm
aWNhdGU7CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IGNlcnRp
ZmljYXRlOwogICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29u
c3QgRm9udEF0dHJpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZv
bnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlY29kZXImLCBGb250QXR0cmlidXRlcyYpCitzdGQ6Om9wdGlvbmFsPEZvbnRBdHRy
aWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImLCBGb250QXR0cmlidXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBS
ZWY8Rm9udD4mKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDxGb250
UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2Rl
cjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMSw3ICsyMzEs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29k
ZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERl
Y29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6
UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9Td2lmdE92ZXJsYXkvT2JqZWN0
aXZlQ0Jsb2NrQ29udmVyc2lvbnMuc3dpZnQgYi9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9T
d2lmdE92ZXJsYXkvT2JqZWN0aXZlQ0Jsb2NrQ29udmVyc2lvbnMuc3dpZnQKaW5kZXggNTUyYWM2
ZmQ5YmU4NjJiYzc0ODg0MWUzZTczM2FmNzZlMjUwM2E5OS4uZjZlZTQzYTU3OTdlYzYwMDRiYThl
YTJhNmQ0OGU4N2QzNDI1Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Td2lmdE92ZXJs
YXkvU3dpZnRPdmVybGF5L09iamVjdGl2ZUNCbG9ja0NvbnZlcnNpb25zLnN3aWZ0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1N3aWZ0T3ZlcmxheS9PYmplY3RpdmVDQmxvY2tDb252
ZXJzaW9ucy5zd2lmdApAQCAtNzAsNyArNzAsNyBAQCBlbnVtIE9iakNCbG9ja0NvbnZlcnNpb24g
ewogICAgIC8vLyBDb252ZXJ0cyBhIGJsb2NrIGZyb20gYChSZXN1bHQ8VmFsdWUsIEVycm9yPikg
LT4gVm9pZGAgdG8gYChWYWx1ZT8sIEVycm9yKSAtPiBWb2lkYC4KICAgICAvLy8KICAgICAvLy8g
VGhpcyBwZXJmb3JtcyB0aGUgc2FtZSBjb252ZXJzaW9uIGFzIGBTZWxmLmV4Y2x1c2l2ZShfOilg
LCBidXQgaWYgdGhlIHJlc3VsdCBibG9jayBpcyBjYWxsZWQKLSAgICAvLy8gd2l0aCBgKG5pbCwg
bmlsKWAgdGhlbiBgaGFuZGxlcmAgaXMgY2FsbGVkIHdpdGggYC5zdWNjZXNzKE9wdGlvbmFsPEFu
eT4ubm9uZSBhcyBBbnkpYC4gVGhpcworICAgIC8vLyB3aXRoIGAobmlsLCBuaWwpYCB0aGVuIGBo
YW5kbGVyYCBpcyBjYWxsZWQgd2l0aCBgLnN1Y2Nlc3Moc3RkOjpvcHRpb25hbDxBbnk+Lm5vbmUg
YXMgQW55KWAuIFRoaXMKICAgICAvLy8gaXMgYSBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGZvciBo
dHRwOi8vd2Via2l0Lm9yZy9iLzIxNjE5OCwgYW5kIHNob3VsZCBub3QgYmUgYWRvcHRlZCBieQog
ICAgIC8vLyBuZXcgY29kZS4KICAgICBzdGF0aWMgZnVuYyBib3hpbmdOaWxBc0FueUZvckNvbXBh
dGliaWxpdHkoXyBoYW5kbGVyOiBAZXNjYXBpbmcgKFJlc3VsdDxBbnksIEVycm9yPikgLT4gVm9p
ZCkgLT4gKEFueT8sIEVycm9yPykgLT4gVm9pZCB7CkBAIC04MCw3ICs4MCw3IEBAIGVudW0gT2Jq
Q0Jsb2NrQ29udmVyc2lvbiB7CiAgICAgICAgICAgICB9IGVsc2UgaWYgbGV0IHN1Y2Nlc3MgPSB2
YWx1ZSB7CiAgICAgICAgICAgICAgICAgaGFuZGxlciguc3VjY2VzcyhzdWNjZXNzKSkKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlciguc3VjY2VzcyhPcHRpb25h
bDxBbnk+Lm5vbmUgYXMgQW55KSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyKC5zdWNjZXNzKHN0
ZDo6b3B0aW9uYWw8QW55Pi5ub25lIGFzIEFueSkpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9UZXN0cy9XZWJL
aXRUZXN0cy5zd2lmdCBiL1NvdXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRl
c3RzLnN3aWZ0CmluZGV4IDcwNTA0MmNkM2U5ZDQ3ZDNhOWNjZDRmNzcyOWNjZjJhMDMwOTkxZDgu
LmVjMWNhZjhhZWIwNGE2YzRiZjQ1OWRjOGRlYTJkZTg3NTZlMzczN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRlc3RzLnN3aWZ0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRlc3RzLnN3aWZ0CkBAIC00MCw3
ICs0MCw3IEBAIGNsYXNzIFdlYktpdFRlc3RzOiBYQ1Rlc3RDYXNlIHsKICAgICBmdW5jIHRlc3RX
S1BERkNvbmZpZ3VyYXRpb25SZWN0KCkgewogICAgICAgICBsZXQgY29uZmlndXJhdGlvbiA9IFdL
UERGQ29uZmlndXJhdGlvbigpCiAKLSAgICAgICAgWENUQXNzZXJ0KHR5cGUob2Y6IGNvbmZpZ3Vy
YXRpb24ucmVjdCkgPT0gT3B0aW9uYWw8Q0dSZWN0Pi5zZWxmKQorICAgICAgICBYQ1RBc3NlcnQo
dHlwZShvZjogY29uZmlndXJhdGlvbi5yZWN0KSA9PSBzdGQ6Om9wdGlvbmFsPENHUmVjdD4uc2Vs
ZikKIAogICAgICAgICBjb25maWd1cmF0aW9uLnJlY3QgPSBuaWwKICAgICAgICAgWENUQXNzZXJ0
RXF1YWwoY29uZmlndXJhdGlvbi5yZWN0LCBuaWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYTI3ZDEyNTRiZTc2NTgyZGVjODE2ZmUzYmQ5
MzY2YjY3MzNmMDBkYi4uNmUyMWY2ZjljZDQ2OTVkYTVlOTM3Yzk0YWM2ZmQyMzY1YzYyZTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
OTMsNyArOTMsNyBAQCBXVEY6OlN0cmluZyBBdHRhY2htZW50OjpmaWxlTmFtZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVT
aXplRm9yRGlzcGxheSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50
OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCA3
YmE0NGZhYzg5MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1NmU2MTYzLi5hZmE5MjljZjA5M2QyMmVj
NzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9y
RGlzcGxheSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9y
RGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhh
c0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFn
ZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0Vu
Y2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IGY0NjkxMTY3NmNkOThhNmExNzQ3
ZTgwMWU4OGRiMjhjZjFmYzlhMDMuLjA5NGE4N2QxMTI5NDU5MzllYzE2YTA2MzkyOWUwNmNkNGI2
ODQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBtZXNzYWdlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJl
dHVybiBXVEY6OlN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJJbnB1dEZvckN1
cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24m
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVudEphdmFTY3Jp
cHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPEphdmFTY3JpcHREaWFsb2dUeXBlPiB0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxv
Z09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEJyb3dzaW5nQ29udGV4
dFByZXNlbnRhdGlvbiBjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIEJyb3dzaW5nQ29u
dGV4dFByZXNlbnRhdGlvbjo6V2luZG93OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA4ZGJl
Nzk1ZWQ5ZWEzNGJmZWUzZjEyOTY1ZTVmMDMzMDBkYmZhOTIyLi5mZmVlMDYxMTQ2MGJjMWVkYmFk
YWFkYTc5ZDhkZWY4NmRmMjk5NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Rh
dGljIE9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxp
c3RNZXRhRGF0YShjb25zdCBUJiBmaWxlRGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zdCBU
JiBmaWxlRGF0YSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBDb250ZW50UnVs
ZUxpc3RNZXRhRGF0YSBtZXRhRGF0YTsKQEAgLTE1OCw0MyArMTU4LDQzIEBAIHN0YXRpYyBPcHRp
b25hbDxDb250ZW50UnVsZUxpc3RNZXRhRGF0YT4gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURh
dGEoY29uc3QgVCYKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
ZGF0YSwgc2l6ZSk7CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gdmVyc2lv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdmVyc2lvbjsKICAgICAgICAgZGVj
b2RlciA+PiB2ZXJzaW9uOwogICAgICAgICBpZiAoIXZlcnNpb24pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLnZlcnNpb24gPSBXVEZNb3ZlKCp2ZXJzaW9uKTsK
IAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc291cmNlU2l6ZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gc291cmNlU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VT
aXplOwogICAgICAgICBpZiAoIXNvdXJjZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIG1ldGFEYXRhLnNvdXJjZVNpemUgPSBXVEZNb3ZlKCpzb3VyY2VTaXplKTsKIAot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYWN0aW9uc1NpemU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGFjdGlvbnNTaXplOwogICAgICAgICBkZWNvZGVyID4+IGFjdGlvbnNT
aXplOwogICAgICAgICBpZiAoIWFjdGlvbnNTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBtZXRhRGF0YS5hY3Rpb25zU2l6ZSA9IFdURk1vdmUoKmFjdGlvbnNTaXplKTsK
IAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
bWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgq
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKIAotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7
CiAgICAgICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwog
ICAgICAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25z
Qnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
KTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNv
ZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25kaXRpb25lZEZpbHRl
cnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gY29uZGl0aW9uZWRGaWx0ZXJzQnl0
ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURhdGEuY29uZGl0aW9uZWRG
aWx0ZXJzQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVT
aXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY29uZGl0aW9uc0FwcGx5T25seVRv
RG9tYWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb25kaXRpb25zQXBwbHlP
bmx5VG9Eb21haW47CiAgICAgICAgIGRlY29kZXIgPj4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9t
YWluOwogICAgICAgICBpZiAoIWNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdHJ1Y3QgTWFwcGVkRGF0YSB7
CiAgICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZGF0YTsKIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3Ry
aW5nJiBwYXRoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFwcGVkRGF0YT4gb3BlbkFuZE1hcENv
bnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgcGF0aCkKIHsKICAgICBGaWxlU3lzdGVt
OjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKICAgICBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YSBmaWxlRGF0YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDJhMjAzNzY1NDU4ZGI1NGI3YmRkMzk5MmY1
OTE5OWJhZTI2YmE4NWYuLjMzODE5NzgzMjYzMmVmMTMyNmEzOWFkMjI3M2Q4MTI4YjYyOWQwMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb24uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdURjo6VVJMJiB0CiAg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmNyZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lk
ZW50aWZpZXIsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNvdXJjZVVSTCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3Jp
cHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpV
Ukw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlP
cmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkKSk7CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpl
dmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPCiAg
ICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KG1faWRlbnRpZmllciwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3Jp
Z2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25z
dCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5n
PiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0
LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEluc3BlY3RvckV4dGVuc2lv
bjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVD
YWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggNWRiNDMxY2Zi
MjQyOTRhOTRmYjIzNDBlYjI0MjQwOWQ5NzFiYzlmNS4uNWVlMDk2ZGMyMWY2MjAyNjdjN2YwNDg5
NjAzZjEyOWFkNzY1OGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBj
b25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFi
SUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBldmFsdWF0ZVNj
cmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6
OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9u
UmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdl
bnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Cisg
ICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGln
bm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7CiAKICAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVmPElu
c3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaAppbmRleCBjZGFkOTc4MmRhYjY2N2UwYjdkM2NjMmIxYTljYzI2ODVm
YTljZDNiLi5iMDM3ZTY1NjBjNjliYmIyOTUwMGFlZjcwNWViYWI0ZTQ1NmQ3ZDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTEwNSwxMyArMTA1
LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxSZXF1ZXN0OyB9CiAgICAgdm9p
ZCBzZXRDdXJyZW50UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
Y3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IGN1cnJlbnRSZXF1ZXN0UHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50
aWZpZXI7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBj
dXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyOyB9CiAKICAgICBib29sIGN1cnJlbnRSZXF1ZXN0SXNS
ZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5hdmlnYXRpb25BY3Rpb24uaXNSZWRpcmVj
dDsgfQogCiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV90YXJnZXRJdGVtLmdldCgpOyB9CiAgICAgV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbUl0ZW0uZ2V0
KCk7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZy
YW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRG
cmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7
IH0KICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHJlbG9hZEl0ZW0oKSBjb25z
dCB7IHJldHVybiBtX3JlbG9hZEl0ZW0uZ2V0KCk7IH0KIAogICAgIHZvaWQgYXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURhdGE+JiBzdWJzdGl0dXRlRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGE7IH0KIAotICAgIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0aW9uQWN0aW9uLnByaXZhdGVDbGlj
a01lYXN1cmVtZW50OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0TmF2aWdhdGlvbkFjdGlvbi5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfQogCiAg
ICAgdm9pZCBzZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eVZhcmlhbnQmJiBhY3Rpdml0eSkgeyBtX2NsaWVudE5hdmlnYXRpb25BY3Rp
dml0eSA9IFdURk1vdmUoYWN0aXZpdHkpOyB9CiAKQEAgLTE3OSwxMyArMTc5LDEzIEBAIHByaXZh
dGU6CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X2N1cnJlbnRSZXF1ZXN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
PiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gbV9jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlm
aWVyOwogICAgIFZlY3RvcjxXVEY6OlVSTD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV90YXJnZXRJdGVtOwogICAgIFJlZlB0
cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fZnJvbUl0ZW07CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV9yZWxvYWRJdGVtOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gbV9iYWNrRm9yd2FyZEZy
YW1lTG9hZFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiBtX3N1YnN0
aXR1dGVEYXRhOwogICAgIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbV9sYXN0TmF2aWdh
dGlvbkFjdGlvbjsKICAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgbV9vcmlnaW5hdGluZ0ZyYW1l
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFj
dGlvbi5oCmluZGV4IGEwMThlNzQ1NDJiN2RiMTEzZTMyMTRkZDU2MWU4NmI1ZWM4OThlODQuLmVm
ZGVhMmQyNDdiYTNkZWI3ZDlhOTllYzFiYjZjYTBiOWEwMzgwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZUluZm8qIHNvdXJjZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VGcmFtZS5nZXQoKTsgfQogICAgIEZyYW1lSW5mbyogdGFyZ2V0RnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldEZyYW1lLmdldCgpOyB9Ci0gICAgT3B0aW9uYWw8V1RGOjpT
dHJpbmc+IHRhcmdldEZyYW1lTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0RnJhbWVOYW1l
OyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAg
IGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuICFtX29yaWdpbmFs
VVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVxdWVzdC51cmwoKTsgfQpAQCAtNzQs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGE7IH0KICAgICAK
IHByaXZhdGU6Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwg
QVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0
RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXVEY6
OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8VXNlcklu
aXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG1h
aW5GcmFtZU5hdmlnYXRpb24pCisgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3Vy
Y2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6
U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Ms
IFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1l
KHNvdXJjZUZyYW1lKQogICAgICAgICAsIG1fdGFyZ2V0RnJhbWUodGFyZ2V0RnJhbWUpCiAgICAg
ICAgICwgbV90YXJnZXRGcmFtZU5hbWUodGFyZ2V0RnJhbWVOYW1lKQpAQCAtODcsMTQgKzg3LDE0
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgT3B0aW9uYWw8
V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBM
aW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikK
KyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1l
SW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1l
TmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwm
IG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0
ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0
aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJh
bWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3Vs
ZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAg
ICB7CiAgICAgfQogCiAgICAgUmVmUHRyPEZyYW1lSW5mbz4gbV9zb3VyY2VGcmFtZTsKICAgICBS
ZWZQdHI8RnJhbWVJbmZvPiBtX3RhcmdldEZyYW1lOwotICAgIE9wdGlvbmFsPFdURjo6U3RyaW5n
PiBtX3RhcmdldEZyYW1lTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiBtX3Rh
cmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgV1RGOjpVUkwgbV9vcmlnaW5hbFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggYTk5NTdhYTc1YzY3ODdkZGNm
YTA1MmExMjNkOWJhYzRiYzZkNzNlMi4uODE1ZjdmZDA3NDQ3OGM3N2RhMzQ5NzY0NjUyN2JhNWMy
NGZlNDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbml0
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKCkgeyByZXR1cm4gbV9pbml0aWFsQ2FwaXRhbGl6YXRp
b25FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRJbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKGJv
b2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkgeyBtX2luaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQgPSBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOyB9CiAKLSAgICBPcHRpb25h
bDxkb3VibGU+IGNwdUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jcHVMaW1pdDsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3B1TGltaXQ7
IH0KICAgICB2b2lkIHNldENQVUxpbWl0KGRvdWJsZSBjcHVMaW1pdCkgeyBtX2NwdUxpbWl0ID0g
Y3B1TGltaXQ7IH0KIAogICAgIGJvb2wgd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdzsgfQpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRzU3VicmVz
b3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N1YnJlc291cmNlczsgfQogICAgIHZvaWQg
c2V0TG9hZHNTdWJyZXNvdXJjZXMoYm9vbCBsb2FkcykgeyBtX2xvYWRzU3VicmVzb3VyY2VzID0g
bG9hZHM7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEhhc2hTZXQ8V1RGOjpTdHJpbmc+PiYgYWxs
b3dlZE5ldHdvcmtIb3N0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZE5ldHdvcmtIb3N0czsg
fQotICAgIHZvaWQgc2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhPcHRpb25hbDxIYXNoU2V0PFdURjo6
U3RyaW5nPj4mJiBob3N0cykgeyBtX2FsbG93ZWROZXR3b3JrSG9zdHMgPSBXVEZNb3ZlKGhvc3Rz
KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXVEY6OlN0cmluZz4+JiBhbGxv
d2VkTmV0d29ya0hvc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOyB9
CisgICAgdm9pZCBzZXRBbGxvd2VkTmV0d29ya0hvc3RzKHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxX
VEY6OlN0cmluZz4+JiYgaG9zdHMpIHsgbV9hbGxvd2VkTmV0d29ya0hvc3RzID0gV1RGTW92ZSho
b3N0cyk7IH0KIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIGlnbm9y
ZXNBcHBCb3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNBcHBCb3VuZERvbWFp
bnM7IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0c0ZvclBh
aW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9kcmF3c0Jh
Y2tncm91bmQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBm
YWxzZSB9OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3k7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAg
V1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgYm9vbCBtX2xvYWRzU3VicmVz
b3VyY2VzIHsgdHJ1ZSB9OwotICAgIE9wdGlvbmFsPEhhc2hTZXQ8V1RGOjpTdHJpbmc+PiBtX2Fs
bG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdURjo6U3RyaW5n
Pj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKaW5kZXggYmZkNzVkYmViODNmN2I0Y2JiODMzNTg3NDM5ODQ0OTM2ZGFmZTM2
NS4uOWZiMmQ2M2Y2MTRlMWVkNzlkYTNmYmExODI2ZTg5ZmM1YmQ3MzdiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtMTY1LDExICsxNjUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbiB7IHRydWUgfTsKICAgICBib29sIG1fc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcyB7IERFRkFVTFRfQ0FQVFVSRV9ESVNQTEFZX0lOX1VJX1BS
T0NFU1MgfTsKICAgICBQcm9jZXNzSUQgbV9wcmVzZW50aW5nQXBwbGljYXRpb25QSUQgeyBnZXRD
dXJyZW50UHJvY2Vzc0lEKCkgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX3Byb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbkZyb21DbGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3Byb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQ7CiAgICAgYm9vbCBtX3Byb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0dXJlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fs
d2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9w
cm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyIHsgZmFsc2UgfTsKLSAgICBPcHRpb25h
bDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlD
bGllbnQ7CiAgICAgYm9vbCBtX3VzZXNXZWJQcm9jZXNzQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV91c2VzQmFja0ZvcndhcmRDYWNoZSB7IHRydWUgfTsKICAgICBib29sIG1fY2xpZW50V291
bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4
IGViMDIzMzc1YjY0NGZlOGI4MTk5OTA2YmM4ODNlMGJiNDhlNWE0ODcuLjkzOGFiOWQ0YmVmNDY1
YTM3MmZmMDQ4MDQ0OTFhODYwNTc2NGFkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8uaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9pbmZvKFdURk1vdmUoaW5mbykpIHsgfQogCiAgICAgV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUxvYWRJRCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5yZXNvdXJjZUxvYWRJRDsgfQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFtZUlEOyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmZvLnBhcmVudEZyYW1lSUQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5mcmFt
ZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVu
dEZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8ucGFyZW50RnJhbWVJRDsgfQogICAgIGNv
bnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5vcmlnaW5h
bFVSTDsgfQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBvcmlnaW5hbEhUVFBNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX2luZm8ub3JpZ2luYWxIVFRQTWV0aG9kOyB9CiAgICAgV2FsbFRpbWUgZXZl
bnRUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2luZm8uZXZlbnRUaW1lc3RhbXA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDdiMjY5YWIwNzQyNjcz
MGM4NTI1NjkyMTZlMmE5MGM5MmU2MDEzODcuLmI3YmQwOTg1NDgxY2VhODFmM2U5YzQ2ZjhmZDU4
YjJiNmMzZTcxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMzAyOCw3ICszMDI4LDcgQEAgdm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2Io
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWYKIHsKICAgICBDUkFT
SF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHRv
SW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkgeworICAgIHRvSW1w
bChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CiAgICAgICAg
IGJsb2NrKCk7CiAgICAgfSk7CiAjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1BhZ2VQcml2YXRlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvcGxheXN0YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNwcAppbmRleCAzNTVmZmNk
OTJlZDQ3OGNiZDExNzg0MmUxY2JiY2U3NzFjZmNkM2I5Li5jODcyZTY4NjMzYzBkZjgzMGVjNmMy
ZDM2NGJjN2ZmMjAyYmI5Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLUGFnZVByaXZhdGVQbGF5U3Rh
dGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUg
PHdwZS93cGUuaD4KIAotc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKGNhaXJvX3QqIGN0
eCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitzdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQo
Y2Fpcm9fdCogY3R4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dy
b3VuZENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghYmFj
a2dyb3VuZENvbG9yIHx8IGJhY2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpKQogICAg
ICAgICByZXR1cm47CkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgV0tQYWdlSGFuZGxlS2V5Ym9hcmRF
dmVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tLZXlib2FyZEV2ZW50IGV2ZW50KQogICAgIH0KIAog
ICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRC
eUlucHV0TWV0aG9kID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRo
b2Q6Ok5vOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGlu
ZT4+IHByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1Jhbmdl
PiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBwcmVlZGl0VW5kZXJsaW5lczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CiAgICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCgmd3BlRXZlbnQsICIiLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgV1RGTW92ZShw
cmVlZGl0VW5kZXJsaW5lcyksIFdURk1vdmUocHJlZWRpdFNlbGVjdGlvblJhbmdlKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQppbmRleCAyMzdmYjdlZmFmNTdmZWQyNzQ2Yjg2N2JjZDQwODM1NzNkMjlj
ZDRhLi5jZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICBzZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBlcik7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2
NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAorc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKIHsKICAg
ICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWRiYjJkYTI3MWMz
MWUwNTU0OTQ3MjU3MDMzOTBjYWRjOTUzNmFhOS4uZTYwNDBjZTAyNGQwYmFiZjQ0ZGNhNmMxMTRm
ZDE2MmMyMTQ1M2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xMDk5LDcgKzEwOTksNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YQogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBcmd1bWVu
dFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01hcDsKICAgICBpZiAoYXNBc3luY0Z1bmN0
aW9uKQogICAgICAgICBhcmd1bWVudHNNYXAgPSBXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01h
cCB7IH07CiAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2FnZSA9IG5pbDsKQEAgLTExMzAsNyArMTEz
MCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0
U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwogICAgIGlm
IChmcmFtZSkgewogICAgICAgICBpZiAodWludDY0X3QgaWRlbnRpZmllciA9IGZyYW1lLl9oYW5k
bGUuZnJhbWVJRCkKICAgICAgICAgICAgIGZyYW1lSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyKTsKQEAgLTE1ODEsNyArMTU4
MSw3IEBAIC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxT
Y2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiAgICAgcmV0dXJuIGhhbmRsZXIgPyBoYW5kbGVy
LT5hcGlIYW5kbGVyKCkgOiBuaWw7CiB9CiAKLS0gKE9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9u
Rm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nCistIChzdGQ6Om9wdGlv
bmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JU
ZXN0aW5nCiB7CiAgICAgcmV0dXJuIF9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNv
bXBsZXRpb25Gb3JUZXN0aW5nOwogfQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiBmbG9hdFJlY3Q7CiAgICAgaWYgKHBkZkNvbmZpZ3VyYXRpb24gJiYgIUNHUmVjdElz
TnVsbChwZGZDb25maWd1cmF0aW9uLnJlY3QpKQogICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3Jl
OjpGbG9hdFJlY3QocGRmQ29uZmlndXJhdGlvbi5yZWN0KTsKIApAQCAtMTk3Niw3ICsxOTc2LDcg
QEAgLSAodm9pZClfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOihpZCA8X1dLVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogICAgIF90ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiYgaW5mbykKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPj4gY3JlYXRlVXNlckluZm8oY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFu
aXB1bGF0aW9uVG9rZW5JbmZvPiYgaW5mbykKIHsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJl
dHVybiB7IH07CkBAIC0yOTUwLDcgKzI5NTAsNyBAQCAtICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1h
bmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tBcHBsaWNhdGlvbk1hbgog
ewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCi0gICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KSB7CisgICAgX3BhZ2UtPmdldEFwcGxp
Y2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0PiYgbWFuaWZlc3QpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAg
ICAgICAgICBpZiAobWFuaWZlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGFwaU1hbmlmZXN0
ID0gQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUoKm1hbmlmZXN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggNDU2MWM1Njg2ODJhNTI3NzQ3ZDZhNTE1ZWEzZjg4ZTc5MjkzYTAy
Ni4uZGI3Mzg2OWYzNTc1MzE4MTE5ZjRlNjA0OWEyMDFjM2FmNGYwOTdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KQEAgLTEyNiw3ICsxMjYsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfcmVsYXRlZFdlYlZp
ZXc7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmln
YXRpb25HZXN0dXJlczsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9ncm91cElkZW50aWZpZXI7
Ci0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TU3RyaW5nPj4gX2FwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxOU1N0cmluZz4+IF9hcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luY3JlbWVudGFsUmVu
ZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRh
dGlvbjsKICAgICBCT09MIF9wcmludHNCYWNrZ3JvdW5kczsKQEAgLTk1Miw3ICs5NTIsNyBAQCAt
ICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXR0ZXJucwogCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3JrOihCT09MKWxvYWRzCiB7Ci0g
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxvYWRzID8gc3Rk
OjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7
IH0gfSk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxv
YWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHsgSGFz
aFNldDxTdHJpbmc+IHsgfSB9KTsKIH0KIAogLSAoQk9PTClfbG9hZHNGcm9tTmV0d29yawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAppbmRleCA3MWU2OTY5NjIwZWY3OWMxNGU2MjYwZmUyMWVkNmQ1YmU0YTVhNmQyLi5iOTE5
ZGQ5NzhmZDZiNDVlMjI4MDk0ZjE5YTc0N2UwOGU3ZmM5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMTI2
LDcgKzEyNiw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKIAogICAgIFJldGFpblB0
cjxXS1NhZmVCcm93c2luZ1dhcm5pbmc+IF9zYWZlQnJvd3NpbmdXYXJuaW5nOwogCi0gICAgT3B0
aW9uYWw8Qk9PTD4gX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZv
clRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25hbDxCT09MPiBfcmVzb2x1dGlvbkZvclNoYXJlU2hl
ZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKIAogICAgIF9XS1NlbGVjdGlvbkF0dHJp
YnV0ZXMgX3NlbGVjdGlvbkF0dHJpYnV0ZXM7CiAgICAgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMgX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM7CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8X1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIAotICAgIE9wdGlvbmFsPENH
U2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRTaXplPiBfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZTsKLSAgICBPcHRpb25hbDxDR1NpemU+IF9t
YXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PENHU2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplOworICAgIHN0ZDo6b3B0aW9u
YWw8Q0dTaXplPiBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZTsK
ICAgICBDR1JlY3QgX2lucHV0Vmlld0JvdW5kc0luV2luZG93OwogCiAgICAgQ0dGbG9hdCBfdmll
d3BvcnRNZXRhVGFnV2lkdGg7CkBAIC0xNzgsNyArMTc4LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVD
b250cm9sbGVyOwogCiAgICAgVUlJbnRlcmZhY2VPcmllbnRhdGlvbiBfaW50ZXJmYWNlT3JpZW50
YXRpb25PdmVycmlkZTsKICAgICBCT09MIF9vdmVycmlkZXNJbnRlcmZhY2VPcmllbnRhdGlvbjsK
LSAgICBPcHRpb25hbDxpbnQzMl90PiBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uOwogCiAgICAg
Qk9PTCBfYWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdDsKIApAQCAtMTk2LDE1ICsxOTYsMTUgQEAg
Y2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAgIFVJRWRnZUluc2V0cyBfYW5pbWF0ZWRS
ZXNpemVPbGRPYnNjdXJlZEluc2V0czsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfcmVzaXplQW5p
bWF0aW9uVmlldzsKICAgICBDR0Zsb2F0IF9sYXN0QWRqdXN0bWVudEZvclNjcm9sbGVyOwotICAg
IE9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblZpc2libGVDb250ZW50UmVjdDsKLSAgICBPcHRpb25h
bDxDR1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxDR1JlY3Q+IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxD
R1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3Q7CiAKICAgICBCT09MIF9jb21taXRE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gX3Njcm9sbE9mZnNldFRvUmVzdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmU7CiAgICAgV2ViQ29yZTo6RmxvYXRCb3hF
eHRlbnQgX29ic2N1cmVkSW5zZXRzV2hlblNhdmVkOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRQb2ludD4gX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmU7Ci0gICAgT3B0aW9uYWw8V2Vi
S2l0OjpUcmFuc2FjdGlvbklEPiBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IF91bm9ic2N1cmVkQ2VudGVy
VG9SZXN0b3JlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUcmFuc2FjdGlvbklEPiBfZmly
c3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsKICAgICBkb3VibGUgX3NjYWxlVG9SZXN0
b3JlOwogCiAgICAgQk9PTCBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CkBA
IC0yNDEsNyArMjQxLDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wg
X2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIE9wdGlvblNldDxXZWJLaXQ6OlZp
ZXdTdGFiaWxpdHlGbGFnPiBfdmlld1N0YWJpbGl0eVdoZW5WaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVTY2hlZHVsZWQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZT4gX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7
CiAgICAgdWludDY0X3QgX3doZWVsRXZlbnRDb3VudEluQ3VycmVudFNjcm9sbEdlc3R1cmU7CiAK
ICAgICBfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgX2RyYWdJbnRlcmFjdGlvblBvbGljeTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgTW9ub3Rv
bmljVGltZSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKICAgICBN
b25vdG9uaWNUaW1lIF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOwogCi0gICAg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlV2l0aFBlbmRpbmdDb21taXQ7CisgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBf
dGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdDsKIAog
ICAgIE5TVUludGVnZXIgX2ZvY3VzUHJlc2VydmF0aW9uQ291bnQ7CiAgICAgTlNVSW50ZWdlciBf
YWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgY2xhc3Mg
Vmlld0dlc3R1cmVDb250cm9sbGVyOwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5n
OwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uOwogCi0tIChPcHRpb25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlh
dGVDb21wbGV0aW9uRm9yVGVzdGluZzsKKy0gKHN0ZDo6b3B0aW9uYWw8Qk9PTD4pX3Jlc29sdXRp
b25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3Rpbmc7CiAKIC0gKFdLUGFn
ZVJlZilfcGFnZUZvclRlc3Rpbmc7CiAtIChOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4p
X3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdUZXN0aW5nLm1tCmluZGV4IGY2ZmI1YTE1NjY2MGU2YjBiNWZkYWU1YTJhY2Y1ZDRkNzFk
NmM5MWIuLmQwM2ViNTFkMTZkYTMyMjdmZDU2YzcyNDkyZWIyYTM0YTJmYWI0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5n
Lm1tCkBAIC00MjAsNyArNDIwLDcgQEAgLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IKICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHBsYXlT
ZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAg
ICB2b2lkIHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjaykgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0
b3JDbGllbnQgPSBjbGllbnQoKSkKICAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+
cGxheVNlc3Npb24oV1RGTW92ZShhdFRpbWUpLCBXVEZNb3ZlKGhvc3RUaW1lKSwgV1RGTW92ZShj
YWxsYmFjaykpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIC0gKHZvaWQpX2NyZWF0ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yCiAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KGJvb2wgc3VjY2VzcykgY29uc3QK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQoYm9v
bCBzdWNjZXNzKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6
OkludmFsaWRTdGF0ZUVycm9yIH0gfTsKQEAgLTUyMiw3ICs1MjIsNyBAQCAtICh2b2lkKV9jcmVh
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvcgogICAgICAgICAgICAgfSkuZ2V0KCldOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBv
c2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mIHN0
YXRlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAg
ICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6bmlsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCA2Y2ZlYjllY2M0ZGI4MTFkNzVjM2Ni
Y2YzN2NiZTJiZTRkNTlhM2I5Li4yZjdhNjlkZmRhZjdlMTExMTBjNzc1NTY4YTNhY2IzYzdmMGRh
NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC0zNiw3ICszNiw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRlRGF0YVJlY29yZD4gewog
ICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLV2Vic2l0ZURhdGFSZWNvcmQ7CiB9OwogCi1zdGF0
aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNT
dHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJz
aXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUp
CiB7CiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOldLV2Vic2l0ZURh
dGFUeXBlQ29va2llc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQppbmRleCBmZWVhNmUyOTVmZThkYjE2MmNkODdiZTQxN2ViMmExMTVkYWRh
YWRhLi42MTQ3ZDQwMzQyMTlhYzMyYTljOGY4NmNiZmQ1ODdmY2FmOTE4ZDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVPcmln
aW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VS
ZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZU9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
ICAgICB7CiAgICAgICAgIGlmICghbV9oYXNSZXF1ZXN0U3RvcmFnZVNwYWNlU2VsZWN0b3IgfHwg
IW1fZGVsZWdhdGUpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQppbmRleCAzYmFiZWJmODE1N2EzYWY5ZmU5OTE0NzNjZWUwNzkyZTg0YTkw
MjY0Li40NjU2MWQzNDMxNGE3OWQ0MmM1N2U1OWJmNzkyN2FkMWZhNDUxMDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW0KQEAgLTgzLDggKzgzLDggQEAgLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZToo
TlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3UKIAog
LSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6
KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRleHRT
ZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TRGljdGlv
bmFyeSAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxG
cmFtZVVSTCA9IGZyYW1lVVJMID8gc3RkOjptYWtlX29wdGlvbmFsKFVSTChmcmFtZVVSTCkpIDog
c3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlP
cmlnaW4gPSBjb250ZXh0U2VjdXJpdHlPcmlnaW4gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJMKGNv
bnRleHRTZWN1cml0eU9yaWdpbikpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJM
KGZyYW1lVVJMKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gc3RkOjpt
YWtlX29wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IHN0ZDo6bnVsbG9wdDsK
ICAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJh
bWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRl
bnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwpAQCAtMTA0LDggKzEwNCw4IEBAIC0gKHZvaWQp
ZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VSTCAq
KWZyYW1lVVJMIGNvbnRlCiAKIC0gKHZvaWQpcmVsb2FkSWdub3JpbmdDYWNoZTooQk9PTClpZ25v
cmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICopdXNlckFnZW50IGluamVjdGVkU2NyaXB0OihO
U1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFs
VXNlckFnZW50ID0gdXNlckFnZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKFN0cmluZyh1c2VyQWdl
bnQpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IHN0ZDo6bWFrZV9vcHRpb25hbChTdHJpbmcoaW5q
ZWN0ZWRTY3JpcHQpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
b3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5n
KHVzZXJBZ2VudCkpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBv
cHRpb25hbEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBzdGQ6Om1ha2Vfb3B0aW9u
YWwoU3RyaW5nKGluamVjdGVkU2NyaXB0KSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lv
bi0+cmVsb2FkSWdub3JpbmdDYWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9w
dGlvbmFsSW5qZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBj
YXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0g
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4
IDBlMzQ5NGIzNzFhNWZmYmQ2Yzk4N2VlYTRkOTZkMDAwYTc0ZTk2YTUuLjFlODI3MDEzYzYwM2Fl
OGJkNDNkNzk4MTcwZGViOThmYzMxNTM4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTU3LDcgKzU3LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JX
S1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktp
dDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5
bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJhc2VVUkws
IG1ha2VWZWN0b3I8U3RyaW5nPihpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0
b3I8U3RyaW5nPihleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBBUEk6OnRvV2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSwgd2ViVmlldyA/IE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPihbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6
IHN0ZDo6bnVsbG9wdCB9LCBjb250ZW50V29ybGQgPyAqY29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkIDogQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+
KGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNl
clN0eWxlTGV2ZWwobGV2ZWwpLCB3ZWJWaWV3ID8gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4oW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQoKSkgOiBzdGQ6Om51bGxvcHQg
fSwgY29udGVudFdvcmxkID8gKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCA6IEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGIyMGNjMjljOGQ0Y2RkNDRhZGEwODU0N2Ri
NzJiNTc3NjQ3ZTY0ZjYuLmMwMTE4MjBkZGRmMGNiMjc4MzFkZGFmMmM4ZWUyM2RkOGNiNjlhNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGlj
IFZlY3RvcjxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gcHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudD4gYXV0aGVudGljYXRvckF0
dGFjaG1lbnQoX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKICAgICBz
d2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50
QWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggZDY0YTE4MzgwMjJmYWMwMjQ0YmJmNTZhODc2YzkzOWEyY2I2NmRhZi4uMmY0
ODkzODc1MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yODUsNyArMjg1
LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCkKICAg
ICBtX2NsZWFyTG9hZGVkSWNvbnNUaW1lci5zdGFydE9uZVNob3QobG9hZGVkSWNvbkV4cGlyYXRp
b25UaW1lKTsKIH0KIAotT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29uSURGb3JJ
Y29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9vbCYgZXhwaXJlZCkKK3N0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgYm9vbCYgZXhwaXJlZCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
CiAgICAgQVNTRVJUKG1fZGIuaXNPcGVuKCkpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIE9wdGlvbmFs
PGludDY0X3Q+IEljb25EYXRhYmFzZTo6aWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwsIGJvb2wmIGV4CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8aW50NjRfdD4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
cmVzdWx0OwogICAgIGlmIChtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKSB7CiAgICAgICAgIHJlc3VsdCA9IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVu
dC0+Y29sdW1uSW50NjQoMCk7CiAgICAgICAgIGV4cGlyZWQgPSBtX2ljb25JREZvckljb25VUkxT
dGF0ZW1lbnQtPmNvbHVtbkludDY0KDEpIDw9IGZsb29yKChXYWxsVGltZTo6bm93KCkgLSBpY29u
RXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKTsKQEAgLTM2Niw3
ICszNjYsNyBAQCBWZWN0b3I8dWludDhfdD4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2NF90
IGljb25JRCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxpbnQ2NF90PiBJY29u
RGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGljb25EYXRhKQorc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZElj
b24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRhKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4o
KSk7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgIEFTU0VS
VChpc01haW5SdW5Mb29wKCkpOwogCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVk
Q29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIHRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKS5z
ZWNvbmRzU2luY2VFcG9jaCgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBpY29uSUQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gaWNvbklEOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gaWNvbkRhdGE7CiAgICAgICAgIFN0cmluZyBpY29uVVJMOwogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4
IDZkZGQ4YWE4ZWY1NTZlYjZmNDE4MzM1Y2RlOTZmZTI3M2U5NmNmZDIuLjBlN2JjYzdlYzYzZGYy
NTI3MmZjYzUxMzg2MWZjYjk4MWM4NGVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC01OSwxMCArNTksMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyU3RhdGVtZW50cygpOwogICAgIHZvaWQgY2xlYXJMb2FkZWRJY29uc1Rp
bWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7Ci0gICAg
T3B0aW9uYWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBl
eHBpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGljb25JREZvckljb25VUkwoY29u
c3QgU3RyaW5nJiwgYm9vbCYgZXhwaXJlZCk7CiAgICAgYm9vbCBzZXRJY29uSURGb3JQYWdlVVJM
KGludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YShp
bnQ2NF90KTsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxjaGFyPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gYWRkSWNvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHVwZGF0ZUljb25U
aW1lc3RhbXAoaW50NjRfdCBpY29uSUQsIGludDY0X3QgdGltZXN0YW1wKTsKICAgICB2b2lkIGRl
bGV0ZUljb24oaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4IDMzYTQ1YmNiZmYwYTY2MWUxOTY0Njkw
M2E2ZjViNTk4MjU4M2Q0YTIuLjFlZTZhZDI3OTkzYTk3MjMyZmI1Yjk1ODAzZjMxMDFjMThhMThj
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0
aG9kRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250
ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwogICAgIFdlYktpdElucHV0TWV0aG9kQ29u
dGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCi0gICAg
dm9pZCBzZXRTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKKyAgICB2b2lkIHNl
dFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgdXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50OwpAQCAtMTAwLDcg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBwbGF0Zm9ybVRyYW5zZm9y
bUN1cnNvclJlY3RUb1ZpZXdDb29yZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAg
ICAgYm9vbCBwbGF0Zm9ybUV2ZW50S2V5SXNLZXlQcmVzcyhQbGF0Zm9ybUV2ZW50S2V5KikgY29u
c3Q7CiAKLSAgICBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBtX3N0YXRlOworICAgIHN0ZDo6
b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9zdGF0ZTsKICAgICBHUmVmUHRyPFdlYktpdElu
cHV0TWV0aG9kQ29udGV4dD4gbV9jb250ZXh0OwogCiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IDUwMWE3MDgxZjlmNzI5Njc2ZmNkY2IyNjkxYmJiYjMy
NDZkMjBlMGYuLmUyMDJmMGVlMGM4NDZhOTU2Zjc4ZmRkZDg3MmY3ZTQ4ZDljOTg0ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0
aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtNzAsOSArNzAsOSBAQCBzdHJ1Y3QgX1dl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUgewogICAgIGJvb2wgaGFuZGxlZFJlcXVl
c3Q7CiAgICAgQ1N0cmluZyBob3N0OwogICAgIENTdHJpbmcgcmVhbG07Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q3JlZGVudGlhbD4gcHJvcG9zZWRDcmVkZW50aWFsOwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkNyZWRlbnRpYWw+IGFjY2VwdGVkQ3JlZGVudGlhbDsKLSAgICBPcHRpb25hbDxib29s
PiBjYW5TYXZlQ3JlZGVudGlhbHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50
aWFsPiBwcm9wb3NlZENyZWRlbnRpYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcmVk
ZW50aWFsPiBhY2NlcHRlZENyZWRlbnRpYWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5T
YXZlQ3JlZGVudGlhbHM7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNmZmZmU1OWRkZDYyNzRjMDQx
ZDkyMGNhMzI5Njc3ODRhZTBjZWMzNS4uZDU5ZjIzODM5OWE4NjI5YjYyMTUwODkzZjU3MjgzN2U3
NGNlNDYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRDdXJyZW50U2NyaXB0RGlhbG9nVXNlcklu
cHV0KHdlYlZpZXcsIHVzZXJJbnB1dCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRK
YXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5
JiBwYWdlKSBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlh
bG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRX
ZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndlYkNvbnRleHQsICZwYWdlKTsKICAgICAg
ICAgaWYgKCF3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZGIxMzhiYTg0
NWYxNzJjZGVhYjQyZTQ2MGM0ZjM0YWRmYThiOTkyMS4uNGZlZGZhZmE4OWY0YzQ5MDE1NDU3ZmI1
OTNiYTA3YmE3NDBjNWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNTQsNyAr
MjU0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RhcnQoV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9j
bHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwog
ICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1
cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9Ci0gICAgbWFu
YWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7Cisg
ICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4g
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICB3ZWJraXRfZ2VvbG9j
YXRpb25fbWFuYWdlcl9mYWlsZWQobWFuYWdlciwgZXJyb3ItPmRhdGEoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNjY1ZTBlZTc2MWQ0MjI5ZGI4MGVjODQx
OGQyNzgxZTU2MDNjYzRmNS4uMjQwZGMyYzMxNDI3Y2U1NWQzYTg5NDk2N2U1OWU2Y2NkMzFmMWRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtODcsNyArODcsNyBAQCBXZWJLaXRTZWN1cml0eU9y
aWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoY29uc3QgZ2NoYXIqIHByb3RvY29sLCBj
b25zdCBnYwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHByb3RvY29sLCBudWxscHRyKTsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChob3N0LCBudWxscHRyKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQxNl90PiBvcHRpb25hbFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gb3B0aW9u
YWxQb3J0OwogICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCBwcm90b2NvbCkpCiAgICAgICAgIG9wdGlvbmFsUG9ydCA9IHBvcnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
NjczZDk1NGM3ZWExZWEwZWY4NDNhZTUzNDZkNTAxNWRmYzNlMDE3ZC4uZDQ2ZTAzMzhmNjMzNWZh
NGU1ODFhZTNmZTgzMmM0NDVlYjAwYmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI1NjEsNyArMjU2MSw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgICAgIHdlYmtpdFNjcmlwdERpYWxvZ0Rpc21pc3Mod2ViVmlldy0+cHJp
di0+Y3VycmVudFNjcmlwdERpYWxvZyk7CiB9CiAKLU9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxv
Z1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQorc3RkOjpvcHRpb25hbDxXZWJLaXRTY3JpcHREaWFsb2dUeXBlPiB3ZWJr
aXRXZWJWaWV3R2V0Q3VycmVudFNjcmlwdERpYWxvZ1R5cGUoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKICAgICBpZiAoIXdlYlZpZXctPnByaXYtPmN1cnJlbnRTY3JpcHREaWFsb2cpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yODIwLDcgKzI4MjAsNyBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KICNl
bmRpZgogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5
UHJlc3MoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25h
bDxWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHVuZGVybGluZXMsIE9wdGlvbmFsPEVk
aXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdT
eW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25S
YW5nZSkKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTeW50aGVz
aXplQ29tcG9zaXRpb25LZXlQcmVzcyhXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgdGV4
dCwgV1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RGTW92ZShzZWxlY3Rpb25SYW5nZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggM2YxMzc1MzhiYWExYTM0MzM3NzkyYTVhYzA4YmEwZWM4ZTVlMGIwNy4uMGQ5
OGE5ZWQ2MDYxNmM3YTg5MzczNmI3OTVhZGY5MGYyYjdiMzNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC02Niw3ICs2Niw3IEBAIFN0cmluZyB3ZWJraXRXZWJWaWV3R2V0Q3VycmVudFNjcmlwdERpYWxv
Z01lc3NhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3U2V0Q3VycmVudFNj
cmlwdERpYWxvZ1VzZXJJbnB1dChXZWJLaXRXZWJWaWV3KiwgY29uc3QgU3RyaW5nJik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdBY2NlcHRDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZp
ZXcqKTsKLU9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRD
dXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJWaWV3Kik7CitzdGQ6Om9wdGlvbmFsPFdl
YktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9n
VHlwZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJl
cXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0Kik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGlj
eURlY2lzaW9uVHlwZSwgV2ViS2l0UG9saWN5RGVjaXNpb24qKTsKIHZvaWQgd2Via2l0V2ViVmll
d01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRU
ZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAppbmRleCBiNWZj
YmYwOWQ5OTNkMjM4NjFjNmI4OTJiNDcyMDJiNDdjN2QyNGQzLi45MmZjMDFhOGNlYWI1NDM0YzZm
M2FmNDI2ZDFlNzhjOTQyM2EyNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0RyYWdTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBH
UmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2RyYWc7CiAjZW5kaWYKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
LmgKaW5kZXggZTllNDhmYjA4N2ZlYjdkOWE2M2IyNzk4N2YyOWRmY2I2YWUwMzg3MS4uMDY4Mjk1
OTBjZmRmMmZlM2RiMWE2MmMyMzc4OGUwN2ZmODA1NjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUGVyZm9ybUFjdGlvbigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWNjZXB0
KFBsYXRmb3JtRHJvcENvbnRleHQqLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gPSBzdGQ6
Om51bGxvcHQsIHVuc2lnbmVkID0gMCk7CisgICAgdm9pZCBhY2NlcHQoUGxhdGZvcm1Ecm9wQ29u
dGV4dCosIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+ID0gc3RkOjpudWxsb3B0LCB1
bnNpZ25lZCA9IDApOwogICAgIHZvaWQgZW50ZXIoV2ViQ29yZTo6SW50UG9pbnQmJiwgdW5zaWdu
ZWQgPSAwKTsKICAgICB2b2lkIHVwZGF0ZShXZWJDb3JlOjpJbnRQb2ludCYmLCB1bnNpZ25lZCA9
IDApOwogICAgIHZvaWQgbGVhdmUoKTsKQEAgLTc5LDEwICs3OSwxMCBAQCBwcml2YXRlOgogI2Vs
c2UKICAgICBHUmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2Ryb3A7CiAjZW5kaWYKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbV9wb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBtX3Bvc2l0aW9uOwogICAgIHVuc2lnbmVkIG1fZGF0YVJlcXVlc3RD
b3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVj
dGlvbkRhdGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9vcGVyYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlv
bkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX29wZXJh
dGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxs
YWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCmluZGV4IDhjZmE3MGI4MjhhMjA0NTNiNzkzMzhkZDBiNGNmNDViMzlm
N2MwYmEuLjVhMjE5YWUzOWY0ZDFmMmZhOWRlYWEyZTZmY2RlNGQ1NTAzMGQ1M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIERyb3BUYXJnZXQ6On5Ecm9wVGFyZ2V0KCkKICAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV93ZWJWaWV3LCB0aGlzKTsKIH0KIAotdm9pZCBE
cm9wVGFyZ2V0OjphY2NlcHQoR2RrRHJhZ0NvbnRleHQqIGRyb3AsIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKK3ZvaWQgRHJvcFRhcmdldDo6YWNj
ZXB0KEdka0RyYWdDb250ZXh0KiBkcm9wLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKIHsKICAgICBpZiAobV9sZWF2ZVRpbWVyLmlzQWN0
aXZlKCkpIHsKICAgICAgICAgbV9sZWF2ZVRpbWVyLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXggMjQwNmUwZjg2
NzM2ZTVkOTAyZWFlMTNhMGI5MTA0MTNjYjEwZjdiZC4uYWJiYWNhMjljNzQxMTFkY2MwOTM1NzM5
NDkzYjkzYzc0NDUyNTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBEcm9wVGFyZ2V0Ojp+
RHJvcFRhcmdldCgpCiAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwobV9jYW5jZWxsYWJsZS5nZXQo
KSk7CiB9CiAKLXZvaWQgRHJvcFRhcmdldDo6YWNjZXB0KEdka0Ryb3AqIGRyb3AsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQpCit2b2lkIERyb3BUYXJnZXQ6
OmFjY2VwdChHZGtEcm9wKiBkcm9wLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBw
b3NpdGlvbiwgdW5zaWduZWQpCiB7CiAgICAgbV9kcm9wID0gZHJvcDsKICAgICBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IDJmYmNiMzI3NDBkZmQ3MjhjZTM5YWJjN2MzMzkwNWNlMTlm
NGU5MzMuLmNiMWFkODM4MWZlYTNiZGY0NDA5MjZlYTQ2ODViZDE1NThiZDE0ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdl
KCkKICAgICAgICAgd2Via2l0V2ViVmlld1NlbGVjdGlvbkRpZENoYW5nZShXRUJLSVRfV0VCX1ZJ
RVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVJlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJ
bXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJl
Y3QpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hv
dChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0
dXJuIHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChXRUJLSVRfV0VCX1ZJRVdfQkFT
RShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKGNsaXBSZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMjg0NWVkODc3ZTk5
ZWIyMmVjYjJjOWExNDRlNzMzNDg2ZDVhNGE3MC4uNTZmNTk0ZmFhNmI2NDljYWJkMjk4NzU0ZDdk
YTJmMjU4YmYzNzBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBzZWxl
Y3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtl
Vmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9w
dXBNZW51LmNwcAppbmRleCBiZWY4MzRiZjQ2Yjc4M2E2OGM4Yjc5NWQ4YjE1N2M3NDJiZDYzYmFh
Li4yMDJkZDA5YzIyYWJjY2Q3YTYyZDUxZjU2ZTZjMjA5Y2NjODExODEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51OjpjYW5jZWxUcmFja2luZygpCiAgICAg
bV9tZW51ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRl
bShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KQordm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFj
dGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgV2Vi
UG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbShpdGVtSW5kZXgpOwogICAgIGlmIChtX21l
bnUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVw
TWVudS5oCmluZGV4IDUyMmMyYzZmZDNlYmEwOTdkMGYyYzU5YWEyMDE4NmYyODMwYzg4NjcuLjQ5
MDdhOTZhZTk1OGVlYTliMDBhNmEzNWE2ZTIxZjRjYjg5ODhjNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUuaApAQCAtMzQsNyArMzQs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJLaXRQb3B1cE1lbnUoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2b2lkIGFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFjdGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVt
SW5kZXgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdlYktpdFBvcHVwTWVudShHdGtXaWRn
ZXQqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGY1NzM3ZWQ5
YjMyNDk5MTViYjQ0MTZhOTI1NjNlNGI1OGFhNjVkMmEuLjk4N2YyNGZiMTIyY2ZmY2I5ZWU4NDFk
OGEzYjEwMGI3MTkyYzZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yIGtl
eUJpbmRpbmdUcmFuc2xhdG9yOwogICAgIFRvdWNoRXZlbnRzTWFwIHRvdWNoRXZlbnRzOwogICAg
IEludFNpemUgY29udGVudHNTaXplOwotICAgIE9wdGlvbmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90
aW9uRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxNb3Rpb25FdmVudD4gbGFzdE1vdGlvbkV2ZW50
OwogICAgIGJvb2wgaXNCbGFuazsKICAgICBib29sIHNob3VsZE5vdGlmeUZvY3VzRXZlbnRzIHsg
dHJ1ZSB9OwogCkBAIC0xMTIzLDcgKzExMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZUhhbmRsZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZAog
ICAgIEFTU0VSVCghcHJpdi0+ZGlhbG9nKTsKIAogICAgIGludCBjbGlja0NvdW50ID0gMDsKLSAg
ICBPcHRpb25hbDxGbG9hdFNpemU+IG1vdmVtZW50RGVsdGE7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IG1vdmVtZW50RGVsdGE7CiAgICAgR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGdk
a19ldmVudF9nZXRfZXZlbnRfdHlwZShldmVudCk7CiAgICAgc3dpdGNoIChldmVudFR5cGUpIHsK
ICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CkBAIC0xMjU5LDcgKzEyNTksNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRJbnZlcnREaXJlY3Rpb25Gb3JTY3JvbGxFdmVudChXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6SXNTY3JvbGxiYQogfQogCiAjaWYgIVVTRShHVEs0KQotc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gcGhhc2Ug
PSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNlPiBtb21lbnR1bSA9
IHN0ZDo6bnVsbG9wdCkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxF
dmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50KiBldmVudCwgc3Rk
OjpvcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIHN0
ZDo6b3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IG1vbWVudHVtID0gc3RkOjpudWxsb3B0
KQogewogICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlciA9IHdlYmtpdFdlYlZp
ZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZpZXdCYXNlKTsKICAgICBpZiAoY29udHJv
bGxlciAmJiBjb250cm9sbGVyLT5pc1N3aXBlR2VzdHVyZUVuYWJsZWQoKSkgewpAQCAtMTQ3MSw3
ICsxNDcxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZG91YmxlIHgKICAgICB9CiAKICAgICBhdXRvKiBl
dmVudCA9IGd0a19ldmVudF9jb250cm9sbGVyX2dldF9jdXJyZW50X2V2ZW50KGNvbnRyb2xsZXIp
OwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAgICBNb3Rpb25FdmVudCBtb3Rpb25FdmVu
dChGbG9hdFBvaW50KHgsIHkpLCBGbG9hdFBvaW50KHgsIHkpLCBnZGtfZXZlbnRfZ2V0X21vZGlm
aWVyX3N0YXRlKGV2ZW50KSk7CiAgICAgaWYgKHByaXYtPmxhc3RNb3Rpb25FdmVudCkKICAgICAg
ICAgbW92ZW1lbnREZWx0YSA9IG1vdGlvbkV2ZW50LnBvc2l0aW9uIC0gcHJpdi0+bGFzdE1vdGlv
bkV2ZW50LT5wb3NpdGlvbjsKQEAgLTIzODIsNyArMjM4Miw3IEBAIGJvb2wgd2Via2l0V2ViVmll
d0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKICAgICByZXR1
cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdyk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhv
ZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW5w
dXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1l
dGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgc3RkOjpvcHRp
b25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNl
LT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CkBA
IC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIHdlYmtpdFdlYlZpZXdC
YXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS0+dXBkYXRlKHsgfSk7CiB9CiAKLVJl
ZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBz
aG90KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW50UmVj
dD4mJiBjbGlwUmVjdCkKK1JlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmll
d0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiYmIGNsaXBSZWN0KQogewogICAgIFdlYlBhZ2VQcm94
eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHkuZ2V0KCk7CiAKQEAg
LTI2MzEsNyArMjYzMSw3IEBAIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogd2Via2l0V2ViVmll
d0Jhc2VHZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0V2ViVmlld0JhCiAgICAgcmV0dXJuIHdl
YlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5jb250ZXh0KCk7CiB9CiAKLXZvaWQg
d2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFu
Z2U+JiYgc2VsZWN0aW9uUmFuZ2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUNv
bXBvc2l0aW9uS2V5UHJlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBT
dHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4m
JiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5n
ZSkKIHsKICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2
ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGV4dCwgV1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RG
TW92ZShzZWxlY3Rpb25SYW5nZSkpKTsKIH0KQEAgLTI2OTgsNyArMjY5OCw3IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTeW50aGVzaXplTW91c2VFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIE1vdXNlCiAgICAgaWYgKGJ1dHRvbnMgJiBHREtfQlVUVE9OM19NQVNLKQogICAg
ICAgICB3ZWJFdmVudEJ1dHRvbnMgfD0gMjsKIAotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92
ZW1lbnREZWx0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsK
ICAgICBXZWJFdmVudDo6VHlwZSB3ZWJFdmVudFR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgY2FzZSBNb3VzZUV2ZW50VHlwZTo6UHJlc3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAx
MTUwZGI2NWUwMGVjZjZmYjI0ZjYyMTNhMGZiYjY1MjZlMDU5ZTk4Li5hNDg1MzkzOTliMDdmYzYz
NDUwM2NkZTU4YzJhZWM2NGFiMGIzY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTU5LDcg
KzU5LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdlYktp
dFdlYlZpZXdCYXNlKiwgdW5zaWduZWQgc2l6ZSk7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0
QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrKiB3ZWJr
aXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0V2ViVmlld0Jhc2Uq
KTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWVudUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0
ZShXZWJLaXRXZWJWaWV3QmFzZSosIE9wdGlvbmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4m
Jik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJW
aWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFz
ZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldENvbnRlbnRzU2l6ZShXZWJLaXRXZWJWaWV3
QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIApAQCAtODcsNyArODcsNyBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmLCBPcAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJWaWV3QmFzZSopOwogI2VuZGlmCiAKLVJlZlB0cjxX
ZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdl
YktpdFdlYlZpZXdCYXNlKiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CitSZWZQdHI8
V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChX
ZWJLaXRXZWJWaWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RW5hYmxlQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZShXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZW5hYmxlZCk7CiBXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlciogd2Via2l0V2ViVmlld0Jhc2VWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAogdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVNldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCopOwogV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiB3ZWJraXRX
ZWJWaWV3QmFzZUdldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKFdlYktpdFdl
YlZpZXdCYXNlKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4m
Jik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3Mo
V2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OkVkaXRpbmdSYW5nZT4mJik7CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNYWtlQmxhbmso
V2ViS2l0V2ViVmlld0Jhc2UqLCBib29sKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlR3Jh
YmJlZFRvdWNoKFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAppbmRleCBiNGQ2YjgzYjc1YzQzNmEyMzUwZTk1YmZj
ZTBjMTg4YmNhNDUxNmQ1Li4yODRkOWU2MDg0ZThkN2RkM2VkZWYzM2Q2OWI0NGVlNDRkYzk2NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgK
QEAgLTU3LDggKzU3LDggQEAKIC0gKHZvaWQpX2xheWVyVHJlZUNvbW1pdENvbXBsZXRlOwogCiAt
ICh2b2lkKV9jb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGU7Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVNj
cm9sbFBvc2l0aW9uOihPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PilzY3JvbGxQb3NpdGlv
biBzY3JvbGxPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpc2Nyb2xsT3JpZ2luIHByZXZpb3Vz
T2JzY3VyZWRJbnNldDooV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQpaW5zZXRzIHNjYWxlOihkb3Vi
bGUpc2NhbGU7Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVN0YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiljZW50ZXIgc2NhbGU6KGRvdWJsZSlzY2FsZTsg
Ly8gRklYTUU6IG5lZWRzIHNjcm9sbCBvcmlnaW4/CistICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9s
bFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0
aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlv
dXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJveEV4dGVudClpbnNldHMgc2NhbGU6KGRv
dWJsZSlzY2FsZTsKKy0gKHZvaWQpX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUp
c2NhbGU7IC8vIEZJWE1FOiBuZWVkcyBzY3JvbGwgb3JpZ2luPwogCiAtIChSZWZQdHI8V2ViS2l0
OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDNmNTQxNzUzNjM2ZWRjOGY3
NjNmZDIyNzEwNTUyOGNiMmQ0NmJkNTAuLjM5NGVlZjkxY2E5YTEzZWRhYmZmN2Q3ZTVlNzc4NGZm
ZGY0ZWE4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCkBAIC05NTYsNyArOTU2LDcgQEAgLSAodm9pZClfY291bGROb3RSZXN0b3JlUGFn
ZVN0YXRlCiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+ZGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCk7CiB9CiAKLS0gKHZvaWQpX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246KE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29y
ZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudClvYnNjdXJlZEluc2V0cyBzY2FsZTooZG91YmxlKXNjYWxlCistICh2
b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2lu
dClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJveEV4
dGVudClvYnNjdXJlZEluc2V0cyBzY2FsZTooZG91YmxlKXNjYWxlCiB7CiAgICAgaWYgKF9keW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlICE9IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZTo6Tm90UmVzaXppbmcpIHsKICAgICAgICAgLy8gRGVmZXIgc2Nyb2xsIHBvc2l0aW9uIHJlc3Rv
cmF0aW9uIHVudGlsIGFmdGVyIHRoZSBjdXJyZW50IHJlc2l6ZSBjb21wbGV0ZXMuCkBAIC05ODAs
NyArOTgwLDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VTY3JvbGxQb3NpdGlvbjooT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRQb2ludD4pc2Nyb2xsUG9zaXRpb24KICAgICBfc2NhbGVUb1Jlc3RvcmUg
PSBzY2FsZTsKIH0KIAotLSAodm9pZClfcmVzdG9yZVBhZ2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRl
cjooT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2Nh
bGUKKy0gKHZvaWQpX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGUKIHsK
ICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgIT0gV2ViS2l0OjpEeW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAgICAvLyBEZWZlciBzY3JvbGwg
cG9zaXRpb24gcmVzdG9yYXRpb24gdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVzaXplIGNvbXBs
ZXRlcy4KQEAgLTE0NjAsNyArMTQ2MCw3IEBAIC0gKHZvaWQpX3NldE9wYXF1ZUludGVybmFsOihC
T09MKW9wYXF1ZQogICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghb3BhcXVlKQogICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CiAgICAgX3BhZ2UtPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29s
b3IpOwpAQCAtMTY3NCw3ICsxNjc0LDcgQEAgLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OigKICAgICBi
b29sIGhhc0FjdGl2ZVdoZWVsSGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhXZWJD
b3JlOjpFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6Tm9uUGFzc2l2ZVdoZWVsKTsKICAgICBib29s
IGlzQ2FuY2VsYWJsZSA9IGhhc0FjdGl2ZVdoZWVsSGFuZGxlcnMgJiYgKCFfY3VycmVudFNjcm9s
bEdlc3R1cmVTdGF0ZSB8fCBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSA9PSBXZWJDb3JlOjpX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0
OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhhc2U7CiAgICAgLy8gVGhl
IGZpcnN0IGV2ZW50IHdpdGggbm9uLXplcm8gZGVsdGEgaW4gYSBnaXZlbiBnZXN0dXJlIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIHRoZQogICAgIC8vICJCZWdhbiIgZXZlbnQgaW4gdGhlIFdlYkNvcmUg
c2Vuc2UgKGUuZy4gZm9yIGRlY2lkaW5nIGNhbmNlbGFiaWxpdHkpLiBOb3RlIHRoYXQKICAgICAv
LyB0aGlzIG1heSBub3QgYmUgYSBVSVNjcm9sbFBoYXNlQmVnaW4gZXZlbnQsIG5vciBldmVuIG5l
Y2Vzc2FyaWx5IHRoZSBmaXJzdCBVSVNjcm9sbFBoYXNlQ2hhbmdlZCBldmVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5oCmluZGV4IDcxZGIxMWNl
YmFkNjVmYWU2NWY5Y2NiMzc4OGUxMzA2YzhiYzc0NWIuLjIwYmIzNWY4MGUzNTYwYzU0NzljMzUz
NDI5MDk5MzU1M2I3ZGJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tXZWJWaWV3TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1dlYlZpZXdNYWMuaApAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxUeXBlcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgog
Ci1fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+KTsKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlKTsKK19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSB0b0FQSVNjcm9sbGJhclN0eWxlKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPik7CitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUo
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKTsKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLSW50
ZXJuYWxNYWMpIDxXZWJWaWV3SW1wbERlbGVnYXRlLCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZT4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQppbmRl
eCBhNmUyMGE1MzllMGI3NzI5MmFhMGRlYzNkYTg5ZjBmNjE2NWFkOWNjLi4zNWU1YjViOWMzNjhj
MmUzYWEzN2M0NDJiOTFkNTJhMTFjMzJjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQpAQCAtNDMsNyArNDMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1RleHRGaW5k
ZXJTUEkuaD4KIAotX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHRvQVBJU2Nyb2xsYmFyU3R5bGUo
T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5
bGUpCitfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY29yZVNjcm9sbGJhclN0eWxl
KQogewogICAgIGlmICghY29yZVNjcm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm4gX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlQXV0b21hdGljOwpAQCAtNjAsNyArNjAsNyBAQCBfV0tPdmVybGF5
U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5UwogICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVBdXRvbWF0
aWM7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3Jl
U2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJhclN0eWxlKQor
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHRvQ29yZVNjcm9s
bGJhclN0eWxlKF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSBzY3JvbGxiYXJTdHlsZSkKIHsKICAg
ICBzd2l0Y2ggKHNjcm9sbGJhclN0eWxlKSB7CiAgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFy
U3R5bGVEYXJrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcAppbmRleCBlYjNiZTY1N2RlODIxODEyOTZhNmFmYzU1MDcyNTQ4ZDZiMmVh
MzNlLi43ZGZlM2VmNDAxYWEyMGQ2MzM3NzE1MmM4NzlmYmQ0NGQ4M2QxN2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
NDM0LDcgKzQzNCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3
KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsCiAgICAgbV92aWV3LmRpZFJl
Y2VpdmVVc2VyTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRl
KQogewogICAgIG1fdmlldy5zZXRJbnB1dE1ldGhvZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaApp
bmRleCBhMjVhMWNiMTdmNDUxNjUwMzk2ZjM4YTBlMGZiMmZiMmVmZjY0NTJmLi44YWI4ZGI3MTVk
YjY0NjE2YTE1YTA2YmIyYjQ3NjBhNDBhZDVmMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsKLSAgICB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CisgICAgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7
CiAKIHByaXZhdGU6CiAgICAgLy8gUGFnZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggZGMyYjhhOGE2NTYwYmY0OTE1ZTBkMDU1NjEzOTFi
MDJmYTBjN2Y3Ny4uMjI2ODY3NGYyMTc5ZmUwOTk0ZjgwYzM3NDgyYjBjNmU3NmFmMmQyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0yOTEsNyAr
MjkxLDcgQEAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBWaWV3OjppbnB1dE1ldGhvZENvbnRl
eHQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0TWV0aG9kRmlsdGVyLmNvbnRleHQoKTsKIH0K
IAotdm9pZCBWaWV3OjpzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3Rh
dGU+JiYgc3RhdGUpCit2b2lkIFZpZXc6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25h
bDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIG1faW5wdXRNZXRob2RGaWx0ZXIu
c2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgVmll
dzo6aGFuZGxlS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBl
dmVudCkKICAgICBwYWdlKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQoZXZlbnQsIGV2ZW50LT5wcmVzc2VkID8gZmlsdGVyUmVzdWx0LmtleVRleHQg
OiBTdHJpbmcoKSwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6
Ok5vLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkpOwogfQogCi12b2lkIFZpZXc6OnN5bnRo
ZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBPcHRpb25h
bDxFZGl0aW5nUmFuZ2U+JiYgc2VsZWN0aW9uUmFuZ2UpCit2b2lkIFZpZXc6OnN5bnRoZXNpemVD
b21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYgdGV4dCwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHVuZGVybGluZXMsIHN0ZDo6b3B0
aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHNlbGVjdGlvblJhbmdlKQogewogICAgIC8vIFRoZSBXaW5k
b3dzIGNvbXBvc2l0aW9uIGtleSBldmVudCBjb2RlIGlzIDI5OSBvciBWS19QUk9DRVNTS0VZLiBX
ZSBuZWVkIHRvCiAgICAgLy8gZW1pdCB0aGlzIGNvZGUgZm9yIHdlYiBjb21wYXRpYmlsaXR5IHJl
YXNvbnMgd2hlbiBrZXkgZXZlbnRzIHRyaWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XUEVWaWV3LmgKaW5kZXggYjk0ODUyNTU0MzEzZWNlZGMwZWFkZWUwNjFjNGRmNmY2NzU1
NmM1MC4uNGFlMGNhOGE3YmJjMGZkODMzMWQ0ZThlYjIzMjk1YWVmZDBhZjA3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTgyLDggKzgyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0Kik7CiAgICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBpbnB1dE1ldGhvZENvbnRl
eHQoKSBjb25zdDsKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8V2ViS2l0
OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKLSAgICB2b2lkIHN5bnRoZXNpemVDb21wb3NpdGlvbktl
eVByZXNzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZT4+JiYsIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiYmKTsKKyAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9k
U3RhdGU+JiYpOworICAgIHZvaWQgc3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoY29uc3Qg
U3RyaW5nJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmU+PiYmLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiYmKTsKIAogICAgIHZv
aWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNwcAppbmRleCA5OTE2ZjNkN2EwNzg3YmMxZTMz
NmIzNDU4ZTY0MDQxYzE3ODY0MmRkLi44Y2RiZmYzMTE2N2VhYTczYzE3NTEzNGFmYTdmYTE5MmRk
YWUzMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRQb3B1cE1lbnUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51Ojpz
ZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRleCkKICAgICBtX3NlbGVjdGVkSXRlbSA9IGl0ZW1J
bmRleDsKIH0KIAotdm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1
bnNpZ25lZD4gaXRlbUluZGV4KQordm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRl
eC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9vcigtMSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5oCmluZGV4IGNmYjliY2I4
YWNlM2NlN2I5NjMwZWJhZWFjZGIzY2U5YTIxMjBkYmIuLmYzZjVlYjkyN2MzNDI1MmUxZGI2YThh
NGNhMDA3MWEyODhlMjYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0UG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRQb3B1cE1lbnUuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgfldl
YktpdFBvcHVwTWVudSgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc2VsZWN0SXRlbSh1bnNpZ25l
ZCBpdGVtSW5kZXgpOwotICAgIHZvaWQgYWN0aXZhdGVJdGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBp
dGVtSW5kZXgpOworICAgIHZvaWQgYWN0aXZhdGVJdGVtKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGl0ZW1JbmRleCk7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0UG9wdXBNZW51KFdLV1BFOjpWaWV3
JiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYpOwpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKICAgICBHUmVmUHRyPFdlYktpdE9wdGlvbk1l
bnU+IG1fbWVudTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3RlZEl0ZW07CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3RlZEl0ZW07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAppbmRleCBlMzVlNTE0YjMz
MmJkM2UwYjM5MWMyNWEzYWY3MDY0NWQ5YzliMjdiLi5iNDEwNGI5MmU1ODVmNDY1Yzk4MzZkYTZm
NGEzMTVhYmE2YzYyMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05l
eHRLZXlGcmFtZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0cmFuc2l0aW9uQmV0
d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFt
ZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICB0cmFuc2l0
aW9uQmV0d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9r
ZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgewog
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKGVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKQogICAg
IGF1dG8mIHBvc3RTdGF0ZUVudHJ5ID0gbmV4dEtleUZyYW1lLnN0YXRlc1ttX2lucHV0U291cmNl
U3RhdGVJbmRleF07CiAgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0U291cmNlID0gcG9z
dFN0YXRlRW50cnkuZmlyc3Q7CiAKLSAgICB0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKGlu
cHV0U291cmNlLCBwb3N0U3RhdGVFbnRyeS5zZWNvbmQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7
CisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShpbnB1dFNvdXJjZSwgcG9zdFN0YXRl
RW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShzdGQ6
Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAgIGlmIChl
cnJvcikgewogICAgICAgICAgICAgYXV0byBmaW5pc2ggPSBzdGQ6OmV4Y2hhbmdlKG1fa2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwogICAgICAgICAgICAgZmlu
aXNoKGVycm9yKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZQog
ICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CiB9CiAKLXZvaWQgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpyZXNvbHZlTG9jYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9u
LCBNb3VzZU1vdmVPcmlnaW4gb3JpZ2luLCBPcHRpb25hbDxTdHJpbmc+IG5vZGVIYW5kbGUsIEZ1
bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgT3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnJlc29sdmVMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y3VycmVudExvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgTW91c2VNb3ZlT3JpZ2luIG9yaWdpbiwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5vZGVIYW5k
bGUsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBzdGQ6
Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJl
bnRMb2NhdGlvbiwgc3RkOjpudWxsb3B0KTsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6cmVzb2x2ZUxvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjdXJyZW50TAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNb3VzZU1vdmVP
cmlnaW46OkVsZW1lbnQ6IHsKLSAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZpZXdDZW50ZXJQ
b2ludE9mRWxlbWVudChtX3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1ZSgpLCBbZGVz
dGluYXRpb24gPSBsb2NhdGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2Vu
dGVyUG9pbnQsIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudCht
X3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1ZSgpLCBbZGVzdGluYXRpb24gPSBsb2Nh
dGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwg
c3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQsIGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDks
NyArMjQ5LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1
dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKIAogICAgIExPRyhBdXRvbWF0aW9u
LCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogdHJhbnNpdGlvbiBzdGFydGVkIGJldHdl
ZW4gaW5wdXQgc291cmNlIHN0YXRlczogWyVkLiVkXSAtLT4gJWQuJWQiLCB0aGlzLCBtX2tleWZy
YW1lSW5kZXggLSAxLCBtX2lucHV0U291cmNlU3RhdGVJbmRleCwgbV9rZXlmcmFtZUluZGV4LCBt
X2lucHV0U291cmNlU3RhdGVJbmRleCk7CiAKLSAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gW3RoaXMsICZpbnB1dFNvdXJjZSwgJm5ld1N0YXRl
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFt0aGlzLCAmaW5wdXRT
b3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNp
bXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJ
T05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAg
ICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQo
KSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3Bv
cnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3Vy
Y2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmlu
aXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxv
Y2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRp
b24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVI
YW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZl
bnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRv
bWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1
dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1RPVUNIX0lOVEVSQUNUSU9OUykKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVM
b2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0
aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2Rl
SGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAg
ICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2lu
dCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3
cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVk
ID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
ICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFC
TEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9u
LnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1
ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEs
ICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRp
b24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwg
Yi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRs
ZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERp
c3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlv
biwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNo
RmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0NTAs
NyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNl
VG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnJ1bihPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMs
IEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+JiYga2V5
RnJhbWVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4m
IGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKICAgICBpZiAoaXNBY3RpdmUoKSkg
ewpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpjYW5j
ZWwoKQogICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1Jf
V0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKIH0KIAotdm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKQordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNoaW5n
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCiB7CiAgICAgbV9r
ZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmgKaW5kZXggNjk4MjIyMmU2YjlmYTI1ZGFiYTM0NDc3MDZkMTBlYmQ5ZjQ4M2E4MS4u
NzgwMmVkMTMwZjgyNzY1YzQ3ZTE1ZTUzYTk0ZDIwYThkMWI3ZTk3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3MgVmlydHVhbEtleTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOwotdXNpbmcg
QXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47Cit1c2luZyBBdXRvbWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OwogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKQEAg
LTgxLDEyICs4MSwxMiBAQCBlbnVtIGNsYXNzIFRvdWNoSW50ZXJhY3Rpb24gewogc3RydWN0IFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGUgewogICAgIENoYXJLZXlTZXQgcHJlc3NlZENoYXJLZXlz
OwogICAgIFZpcnR1YWxLZXlNYXAgcHJlc3NlZFZpcnR1YWxLZXlzOwotICAgIE9wdGlvbmFsPE1v
dXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247Ci0gICAgT3B0aW9uYWw8TW91c2VNb3ZlT3Jp
Z2luPiBvcmlnaW47Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlOwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRTaXplPiBzY3JvbGxEZWx0YTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247CisgICAgc3Rk
OjpvcHRpb25hbDxNb3VzZU1vdmVPcmlnaW4+IG9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbm9kZUhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBs
b2NhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHNjcm9sbERlbHRh
OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CiAKICAgICBzdGF0aWMgU2lt
dWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlRm9yU291cmNlVHlwZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZVR5cGUpOwogfTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91
c2VJbnRlcmFjdGlvbiwgTW91c2VCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbkluVmlldywgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5U
RVJBQ1RJT05TKQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVUb3VjaEludGVyYWN0aW9u
KFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBsb2NhdGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25D
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZVRv
dWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91Y2hJbnRlcmFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1
cmF0aW9uLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJ
bnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYsIEF1dG9tYXRp
b25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVs
dGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAjZW5kaWYKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVBy
b3h5JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBu
b2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIE9w
dGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudChXZWJQYWdlUHJveHkmLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYgbm9k
ZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4s
IHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmKSA9IDA7CiAgICAgfTsK
IAogICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQpA
QCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIoKTsKIAotICAgIHZvaWQgcnVuKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9t
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJ1bihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYm
IGtleUZyYW1lcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTY0LDE3ICsx
NjQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNl
U3RhdGUoKTsKICAgICB2b2lkIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVk
SW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoT3B0
aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pOworICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hp
bmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik7CiAKICAgICB2b2lkIGtl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpOwogICAgIGJvb2wgaXNLZXlGcmFt
ZVRyYW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCByZXNvbHZlTG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4sIE9wdGlvbmFsPFN0cmluZz4g
bm9kZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYpOworICAgIHZvaWQgcmVzb2x2ZUxv
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjdXJyZW50TG9jYXRpb24sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50Piwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+JiYpOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBtX2ZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IG1fZnJhbWVJRDsKICAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKICAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcjsKICAgICBSdW5Mb29wOjpUaW1l
cjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25U
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYjUwMDU4NTk0Y2Q3OTA1NTIyM2UyN2U3
ZjU1ZTAzNDIyMDY5YjUyNi4uNjU5NDBiZjg4ZDA0ZjZjNTMwZTc1MDI2MmFmYWJkMWY3YzNkMGJm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpkaWREZXN0cm95RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiAgICAgICAgIG1faGFuZGxlV2ViRnJhbWVNYXAucmVtb3ZlKGhhbmRsZSk7CiB9CiAKLU9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURGb3JI
YW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1lTm90Rm91bmQpCitzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURG
b3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1lTm90Rm91bmQpCiB7CiAg
ICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0yMTgsNyArMjE4LDcgQEAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcKICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7CiB9CiAKLVN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2Vi
RnJhbWVJRChPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpCitTdHJpbmcgV2ViQXV0
b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQoc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEIHx8ICEqZnJhbWVJRCkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlv
biB0b1Byb3RvY29sKEEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGVCcm93c2luZ0NvbnRleHQoT3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0
aW9uPiYmIHByZXNlbnRhdGlvbkhpbnQsIFJlZjxDcmVhdGVCcm93c2luZ0NvbnRleHRDYWxsYmFj
az4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNyZWF0ZUJyb3dzaW5n
Q29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJy
b3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiBwcmVzZW50YXRpb25IaW50LCBSZWY8Q3JlYXRl
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBpZiAoIW1fY2xpZW50KQpAQCAtMzgyLDggKzM4Miw4IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNldFdpbmRvd0ZyYW1l
T2ZCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3Jp
Z2luLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgT3B0aW9uYWw8ZG91Ymxl
PiB4OwotICAgIE9wdGlvbmFsPGRvdWJsZT4geTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geTsKICAgICBpZiAob3JpZ2luKSB7CiAgICAg
ICAgIHggPSBvcmlnaW4tPmdldERvdWJsZSgieCJfcyk7CiAgICAgICAgIGlmICgheCkKQEAgLTM5
NCw4ICszOTQsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9m
QnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdAogICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwg
IlRoZSAneScgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gaGVpZ2h0OwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIHdpZHRoID0gc2l6ZS0+Z2V0
RG91YmxlKCJ3aWR0aCJfcyk7CiAgICAgICAgIGlmICghd2lkdGgpCkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29u
dGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhh
bmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3ks
IE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPFdhaXRGb3JO
YXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhh
bmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJh
dGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJl
ZjxXYWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250
ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXhpdEZ1bGxTY3JlZW5Gb3JQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYpCiAgICAgICAgIG1fd2luZG93U3RhdGVUcmFuc2l0aW9uQ2FsbGJhY2soV2luZG93VHJh
bnNpdGlvbmVkVG9TdGF0ZTo6VW5mdWxsc2NyZWVuKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9h
ZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgT3B0aW9uYWw8ZG91YmxlPiYm
IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8TmF2aWdhdGVCcm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJv
d3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dz
aW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9w
dGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQ
YWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNh
bGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRs
ZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdQogICAgIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFn
ZSwgcGFnZUxvYWRTdHJhdGVneSwgcGFnZUxvYWRUaW1lb3V0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0
KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhh
bmRsZSYgaGFuZGxlLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgT3B0aW9uYWw8ZG91
YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRl
eHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFj
a0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9h
ZFN0cmF0ZWd5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBvcHRpb25hbFBhZ2VMb2FkVGltZW91
dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAg
ICAgaWYgKCFwYWdlKQpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0
cmF0ZWd5LCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5k
bGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3Ry
YXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBPcHRpb25hbDxkb3VibGU+JiYgb3B0
aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5C
cm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiBvcHRpb25hbFBhZ2VMb2FkU3Ry
YXRlZ3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBS
ZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAg
ICBpZiAoIXBhZ2UpCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoK
ICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoKnBhZ2UsIHBhZ2VMb2FkU3Ry
YXRlZ3ksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIE9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+
JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBPcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQ
YWdlTG9hZFRpbWVvdXQsIFJlZjxSZWxvYWRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5k
bGUmIGhhbmRsZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxSZWxvYWRCcm93c2lu
Z0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC05NDIs
NyArOTQyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlUnVuT3BlblBhbmVs
KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2UKICAgICBtX2RvbWFpbk5vdGlmaWVy
LT5maWxlQ2hvb3NlckRpc21pc3NlZChicm93c2luZ0NvbnRleHRIYW5kbGUsIGZhbHNlLCBXVEZN
b3ZlKHNlbGVjdGVkRmlsZXMpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgUmVmPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywg
T3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25h
bDxkb3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1RpbWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlm
ICghcGFnZSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjbwogICAg
ICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxl
JiBmcmFtZUhhbmRsZSwgT3B0aW9uYWw8aW50PiYmIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3Ry
aW5nJiBvcHRpb25hbE5hbWUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok5vZGVIYW5kbGUmIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFu
ZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNv
bHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBz
dGQ6Om9wdGlvbmFsPGludD4mJiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyYgb3B0aW9u
YWxOYW1lLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxl
JiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIGlmICghb3B0aW9uYWxPcmRpbmFsICYmICFvcHRpb25hbE5h
bWUgJiYgIW9wdGlvbmFsTm9kZUhhbmRsZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIkNvbW1hbmQgbXVzdCBz
cGVjaWZ5IGEgY2hpbGQgZnJhbWUgYnkgb3JkaW5hbCwgbmFtZSwgb3IgZWxlbWVudCBoYW5kbGUu
Iik7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXUKICAgICBpZiAo
ZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
RnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPik+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tdKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQp
IG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPik+IGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tdKHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkgewogICAgICAg
ICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9N
RVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjksNyArMTAy
OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRs
ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBCiAgICAgaWYgKGZyYW1lTm90Rm91bmQpCiAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwog
Ci0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKKyAgICBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrXShzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBl
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQxLDcgKzEwNDEsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QQogICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVQYXJlbnRGcmFtZShwYWdl
LT53ZWJQYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29y
ZGluYXRlU3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVT
eXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvb3JkaW5hdGVT
eXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKICAg
ICBzd2l0Y2ggKGNvb3JkaW5hdGVTeXN0ZW0pIHsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW06OlBhZ2U6CkBAIC0xMDU2LDcgKzEwNTYs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gcHJvdG9jb2xTdHJpbmdUb0Nv
b3JkaW5hdGVTeXN0ZW0oSW5zcGVjdG9yOjpQcgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpGcmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIE9wdGlvbmFsPGJvb2w+JiYgb3B0
aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVF
bGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFu
ZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBu
b2RlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29yZGluYXRlU3lzdGVt
IGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+
JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9y
SGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTA2Nywx
MSArMTA2NywxMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbQogICAgIGlmIChmcmFtZU5vdEZv
dW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZv
dW5kKTsKIAotICAgIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IGNvb3JkaW5hdGVTeXN0ZW0g
PSBwcm90b2NvbFN0cmluZ1RvQ29vcmRpbmF0ZVN5c3RlbShjb29yZGluYXRlU3lzdGVtVmFsdWUp
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gY29vcmRpbmF0ZVN5c3RlbSA9
IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSk7
CiAgICAgaWYgKCFjb29yZGluYXRlU3lzdGVtKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRl
ciAnY29vcmRpbmF0ZVN5c3RlbScgaXMgaW52YWxpZC4iKTsKIAotICAgIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFj
a10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3Vy
ZWQpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+LCBib29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JU
eXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYQogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbY2FsbGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBtdXRhYmxlIHsKKyAgICBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4gY29tcGxl
dGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUp
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFj
ay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9y
VHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c2V0RmlsZXNUb1NlbGVjdEYKICAgICAgICAgaWYgKCFmaWxlRGF0YSkKICAgICAgICAgICAgIFNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwg
IlRoZSBwYXJhbWV0ZXIgJ2ZpbGVDb250ZW50cycgY29udGFpbnMgYSBub24tc3RyaW5nIHZhbHVl
LiIpOwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbG9jYWxGaWxlUGF0aCA9IHBsYXRmb3Jt
R2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShmaWxlbmFtZSwgZmlsZURhdGEpOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9jYWxGaWxlUGF0aCA9IHBsYXRmb3JtR2Vu
ZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShmaWxlbmFtZSwgZmlsZURhdGEpOwogICAg
ICAgICBpZiAoIWxvY2FsRmlsZVBhdGgpCiAgICAgICAgICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJUaGUgcmVtb3RlIGZpbGUg
Y291bGQgbm90IGJlIHNhdmVkIHRvIGEgbG9jYWwgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsKIApA
QCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0RmlsZXNG
b3JJbnB1dEZpbGVVcGxvYWQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICAgICAgbmV3
RmlsZUxpc3QuYXBwZW5kKGZpbGVuYW1lKTsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgewogICAgICAg
ICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RS
SU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6Z2V0QWxsQ29va2llcyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjoK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiBjb21w
bGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdf
Rk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
ZWxldGVTaW5nbGVDb29raWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdAogICAg
IGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
clR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNTY2LDkgKzE1NjYsOSBAQCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcgogfQogCiAvLyBN
QVJLOiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBBUEkKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVBy
b3h5JiBwYWdlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0
aW9uPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBPcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQcm94eSYg
cGFnZSwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRS
ZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBkaWRDb21wdXRlRWxlbWVu
dExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QsIE9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCkgbXV0YWJs
ZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4g
aW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBl
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJ
T05fQ09NTUFORF9FUlJPUl9XSVRIX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cmVzZXRDbGlja0NvdW50KCkKICAgICBtX2xhc3RDbGlja1Bvc2l0aW9uID0geyB9OwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBt
b3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwg
Y29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgY29uc3Qg
U3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBw
YWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VCdXR0b24sIGxvY2F0
aW9uSW5WaWV3cG9ydCwgcG9pbnRlclR5cGVdKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFt
ZSkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2xpcHBlZFggPSBzdGQ6Om1pbihzdGQ6Om1heCgw
LjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXdwb3J0LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53
aWR0aCgpKTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3Vy
IGNvbW1hbmQncyBjb21wbGV0aW9uIGhhbmRsZXIuCi0gICAgICAgIGF1dG8gbW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUg
eworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXJyb3IpOwogICAgICAgICB9OwogCkBAIC0xNjQyLDcgKzE2NDIsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBNb3VzZUludAogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11
bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9u
IGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc3VhbFZpZXdwb3J0Qm91bmRzID0gV2ViQ29yZTo6RmxvYXRSZWN0KHsgfSwgcGFnZS51bm9i
c2N1cmVkQ29udGVudFJlY3QoKS5zaXplKCkpOwpAQCAtMTY1Myw3ICsxNjUzLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYgcGFnZSwgVG91Y2hJbnQKICNlbmRpZgogCiAgICAgbV9zaW11bGF0aW5nVG91Y2hJbnRlcmFj
dGlvbiA9IHRydWU7Ci0gICAgcGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIGxvY2F0aW9uSW5WaWV3cG9ydCwgZHVyYXRpb24sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBt
dXRhYmxlIHsKKyAgICBwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihwYWdlLCBpbnRl
cmFjdGlvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBkdXJhdGlvbiwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIG1fc2ltdWxhdGluZ1RvdWNoSW50ZXJhY3Rpb24gPSBmYWxzZTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgIH0pOwpAQCAtMTY2MSwxMCAr
MTY2MSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJh
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludAogI2VuZGlmIC8vIEVOQUJMRShXRUJE
UklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQogCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FS
RF9JTlRFUkFDVElPTlMpCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBXVEY6OlZhcmlhbnQ8VmlydHVhbEtleSwgQ2hhcktleT4mJiBrZXksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBp
bnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYga2V5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxs
YmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KLSAgICBhdXRvIGtleWJv
YXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9y
KSBtdXRhYmxlIHsKKyAgICBhdXRvIGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9u
YWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgfTsKIApAQCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgV2UKICAgICAgICAgfQogCiAgICAgICAgIC8vIEJyaWRnZSB0aGUg
Zmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KLSAg
ICAgICAgYXV0byB3aGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gd2hlZWxFdmVudHNGbHVzaGVk
Q2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgICAgIH07CiAKQEAg
LTE3ODEsNyArMTc4MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3Vz
ZUludGVyYWN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAKICAgICAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbG9jYXRpb25JblZpZXdwb3J0ID0gV2ViQ29yZTo6SW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50PihmbG9hdFgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZsb2F0WSkpOwogCi0gICAg
ICAgIGF1dG8gbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2Us
IGZsb2F0WCwgZmxvYXRZXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
eworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBwYWdlLCBmbG9hdFgsIGZsb2F0WV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPiBlcnJvcikgewogICAgICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBlbHNlIHsKQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sCiAKICAgICAgICAgYXV0byB2aXJ0dWFsS2V5U3RyaW5nID0gaW50ZXJhY3Rpb25PYmpl
Y3QtPmdldFN0cmluZygia2V5Il9zKTsKICAgICAgICAgaWYgKCEhdmlydHVhbEtleVN0cmluZykg
ewotICAgICAgICAgICAgT3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4odmlydHVhbEtleVN0
cmluZyk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXkg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk+KHZp
cnR1YWxLZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYgKCF2aXJ0dWFsS2V5KQogICAgICAgICAg
ICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFs
aWRQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1l
dGVyIGhhcyBhbiBpbnZhbGlkICdrZXknIHZhbHVlLiIpOwogCkBAIC0xODczLDcgKzE4NzMsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbAogICAgIGlmICghYWN0aW9uc1RvUGVyZm9ybS5zaXpl
KCkpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludGVybmFsRXJyb3IsICJObyBhY3Rpb25zIHRvIHBlcmZvcm0uIik7CiAKLSAgICBhdXRvIGtl
eWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2Up
XShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgIGF1dG8ga2V5
Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigqcGFnZSld
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVl
KCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAgICAgZWxzZQpAQCAtMTk1MSw3ICsxOTUxLDcg
QEAgc3RhdGljIFZpcnR1YWxLZXkgbm9ybWFsaXplZFZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkp
CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNoYXIzMj4gcHJlc3NlZENoYXJLZXkoY29u
c3QgU3RyaW5nJiBwcmVzc2VkQ2hhcktleVN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFVD
aGFyMzI+IHByZXNzZWRDaGFyS2V5KGNvbnN0IFN0cmluZyYgcHJlc3NlZENoYXJLZXlTdHJpbmcp
CiB7CiAgICAgc3dpdGNoIChwcmVzc2VkQ2hhcktleVN0cmluZy5sZW5ndGgoKSkgewogICAgIGNh
c2UgMToKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBl
cmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBub24tc3RyaW5nIHZpcnR1YWwga2V5
IHZhbHVlLiIpOwogCi0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPFZpcnR1YWxLZXk+IHBh
cnNlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiBwYXJzZWRWaXJ0dWFsS2V5ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5PihwcmVzc2VkVmlydHVh
bEtleVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVmlydHVhbEtleSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJFbmNvdW50ZXJlZCBhbiB1bmtub3duIHZp
cnR1YWwga2V5IHZhbHVlLiIpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0yMTUxLDcg
KzIxNTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIH0KIAogICAgIC8vIERlbGVn
YXRlIHRoZSByZXN0IG9mIMKnMTcuNCBEaXNwYXRjaGluZyBBY3Rpb25zIHRvIHRoZSBkaXNwYXRj
aGVyLgotICAgIGlucHV0RGlzcGF0Y2hlci5ydW4oZnJhbWVJRCwgV1RGTW92ZShrZXlGcmFtZXMp
LCBtX2lucHV0U291cmNlcywgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4g
ZXJyb3IpIHsKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKGZyYW1lSUQsIFdURk1vdmUoa2V5RnJh
bWVzKSwgbV9pbnB1dFNvdXJjZXMsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAg
ICAgZWxzZQpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjoKICAg
ICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0
Y2hlckZvclBhZ2UoKnBhZ2UpOwogICAgIGlucHV0RGlzcGF0Y2hlci5jYW5jZWwoKTsKICAgICAK
LSAgICBpbnB1dERpc3BhdGNoZXIucnVuKGZyYW1lSUQsIFdURk1vdmUoa2V5RnJhbWVzKSwgbV9p
bnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKSB7CisgICAgaW5wdXREaXNwYXRjaGVyLnJ1bihmcmFtZUlELCBXVEZNb3ZlKGtleUZy
YW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7
CiAgICAgICAgIGVsc2UKQEAgLTIxOTAsNyArMjE5MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9BQ1RJT05TX0FQSSkKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYgbm9kZUhh
bmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIE9w
dGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90
Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2Ny
ZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHRIYW5kbGUmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
b3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0
aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhh
bmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMjIwNSw3ICsyMjA1LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjoKICAgICBib29sIGNsaXBUb1ZpZXdwb3J0ID0gb3B0aW9uYWxDbGlwVG9WaWV3
cG9ydCA/ICpvcHRpb25hbENsaXBUb1ZpZXdwb3J0IDogZmFsc2U7CiAKICNpZiBQTEFURk9STShH
VEspCi0gICAgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmLCBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRSZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNv
dCA9IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiBy
ZWN0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJiBjYWxsYmFjaykgeworICAgIEZ1bmN0
aW9uPHZvaWQoV2ViUGFnZVByb3h5Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYm
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNvdCA9IFtdKFdl
YlBhZ2VQcm94eSYgcGFnZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmIHJlY3Qs
IFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIHBhZ2Uu
Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbcGFnZSA9IG1ha2VSZWYocGFnZSksIHJl
Y3QgPSBXVEZNb3ZlKHJlY3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQogICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwpAQCAtMjIxNCw3ICsyMjE0LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAgICAgICAgICAgIGlmICghc25hcHNob3QpCiAgICAg
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50ZXJuYWxFcnJv
cik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBw
bGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKCpzbmFwc2hvdCk7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKCpzbmFwc2hvdCk7CiAgICAgICAgICAgICBpZiAoIWJhc2U2NEVuY29k
ZWREYXRhKQogICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
KEludGVybmFsRXJyb3IpOwogCkBAIC0yMjI3LDcgKzIyMjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtwYWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrLCB0YWtlVmlld1NuYXBzb3Qg
PSBXVEZNb3ZlKHRha2VWaWV3U25hcHNvdCldKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBX
ZWJDb3JlOjpJbnRSZWN0JiYgcmVjdCkgbXV0YWJsZSB7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3BhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJhY2ssIHRha2VWaWV3U25h
cHNvdCA9IFdURk1vdmUodGFrZVZpZXdTbmFwc290KV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCYmIHJlY3QpIG11dGFibGUgewogICAgICAgICBpZiAo
ZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZP
Ul9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
VGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZERh
dGEgPSBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGltYWdlRGF0YUhhbmRsZSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWREYXRhID0gcGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YShpbWFnZURhdGFIYW5kbGUpOwogICAgIGlmICghYmFzZTY0RW5j
b2RlZERhdGEpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVy
bmFsRXJyb3IpOwogCkBAIC0yMjY0LDE5ICsyMjY0LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJl
YWJsCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCi1PcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1H
ZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmKQorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQ
TkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0
Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JSZW1vdGVGaWxlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAppbmRleCA4YjcxYTg4M2U4MzVmNWJjMjY0MjA2YmYxNTFjY2ZkMzViOWM0ZWFkLi4x
YzcyODFjYWIwMDM5OGNlY2I4NGU1ZTI2YTA0OWM5ODhkNjY3MGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgQXV0b21h
dGlvbkNvbW1hbmRFcnJvciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlIHR5cGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdl
IHsgc3RkOjpudWxsb3B0IH07CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBz
dGQ6Om51bGxvcHQgfTsKICAgICAKICAgICBBdXRvbWF0aW9uQ29tbWFuZEVycm9yKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBlKQogICAgICAgICA6IHR5
cGUodHlwZSkgeyB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZygpOwogfTsKIAotdXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0g
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJy
b3I+KT47Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+Owog
CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNzaW9uPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0xNTAsNyArMTUw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIE1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbG9jYXRpb25JblZpZXcsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUsIEF1dG9tYXRp
b25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9V
Q0hfSU5URVJBQ1RJT05TKQotICAgIHZvaWQgc2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0
aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdl
UHJveHkmLCBUb3VjaEludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRp
b25JblZpZXcsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRf
SU5URVJBQ1RJT05TKQogICAgIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIFdURjo6VmFyaWFudDxWaXJ0dWFsS2V5LCBD
aGFyS2V5PiYmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CkBAIC0xNTgsNyArMTU4
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQog
ICAgIHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
ZGVsdGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgotICAgIHZvaWQg
dmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudChXZWJQYWdlUHJveHkmLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpOb2RlSGFuZGxlJiwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJik7CisgICAgdm9p
ZCB2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQcm94eSYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4pPiYmKTsKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCiAKQEAg
LTE2OSwyNiArMTY5LDI2IEBAIHB1YmxpYzoKICAgICAvLyBQbGF0Zm9ybTogR2VuZXJpYwogICAg
IHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0cyhSZWY8R2V0QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNr
PiYmKTsKICAgICB2b2lkIGdldEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8R2V0QnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgY3JlYXRlQnJvd3NpbmdDb250ZXh0KE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNl
bnRhdGlvbj4mJiwgUmVmPENyZWF0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2
b2lkIGNyZWF0ZUJyb3dzaW5nQ29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiwgUmVmPENyZWF0
ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IGNsb3NlQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYpOwogICAgIHZvaWQg
c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmLCBSZWY8U3dpdGNoVG9Ccm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJik7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3JpZ2luLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNp
emUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwogICAg
IHZvaWQgbWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8TWF4aW1pemVX
aW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKICAgICB2b2lkIGhpZGVXaW5kb3dP
ZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpC
cm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8SGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYpOwotICAgIHZvaWQgbmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBh
Z2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJl
ZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lkIGdvQmFja0lu
QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBw
YWdlTG9hZFRpbWVvdXQsIFJlZjxHb0JhY2tJbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsK
LSAgICB2b2lkIGdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYs
IE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0ZvcndhcmRJbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lkIHJlbG9hZEJyb3dzaW5nQ29udGV4dChj
b25zdCBTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5PiYmLCBPcHRpb25hbDxkb3VibGU+JiYgcGFnZUxvYWRUaW1lb3V0LCBS
ZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgd2FpdEZvck5h
dmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkZyYW1lSGFuZGxlJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgT3B0aW9uYWw8ZG91YmxlPiYmIHBhZ2VMb2FkVGlt
ZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNrPiYmKTsKLSAgICB2
b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwg
UmVmPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0
LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJik7CisgICAgdm9pZCBu
YXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYm
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJy
b3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250
ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgcGFn
ZUxvYWRUaW1lb3V0LCBSZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJik7Cisg
ICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmLCBzdGQ6Om9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+
JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHBhZ2VMb2FkVGltZW91dCwgUmVmPEdvRm9yd2Fy
ZEluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOworICAgIHZvaWQgcmVsb2FkQnJvd3NpbmdD
b250ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYg
cGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwor
ICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxXYWl0Rm9yTmF2aWdhdGlvblRv
Q29tcGxldGVDYWxsYmFjaz4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRs
ZSYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1RpbWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKTsKICAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0
aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dEhhbmRsZSYsIFJlZjxKU09OOjpPYmplY3Q+JiYgcmVxdWVzdGVkUG9zaXRpb24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBSZWY8SlNPTjo6QXJyYXk+JiYga2V5TW9k
aWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4mJik7CiAgICAgdm9p
ZCBwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgUmVmPEpTT046OkFycmF5PiYmIGlu
dGVyYWN0aW9ucywgUmVmPFBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmKTsK
ICAgICB2b2lkIHBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgUmVmPEpTT046OkFycmF5PiYm
IHNvdXJjZXMsIFJlZjxKU09OOjpBcnJheT4mJiBzdGVwcywgUmVmPFBlcmZvcm1JbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5j
ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRs
ZSYsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpOwotICAgIHZvaWQg
dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RnJhbWVIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpO
b2RlSGFuZGxlJiwgT3B0aW9uYWw8Ym9vbD4mJiBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBPcHRp
b25hbDxib29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIE9wdGlvbmFsPGludD4mJiBv
cmRpbmFsLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFj
az4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBS
ZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFt
ZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFt
ZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG9yZGluYWwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIFJl
ZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKTsKICAgICB2b2lkIHJlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpC
cm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpGcmFtZUhhbmRsZSYsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4m
Jik7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBPcHRpb25hbDxib29sPiYmIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5h
dGVTeXN0ZW0sIFJlZjxDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmKTsKKyAgICB2b2lk
IGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6Tm9kZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29yZGluYXRlU3lzdGVt
LCBSZWY8Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBzZWxlY3RP
cHRpb25FbGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dz
aW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9k
ZUhhbmRsZSYsIFJlZjxTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJhY2s+JiYpOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8Ym9vbD4gaXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IGRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmKTsKQEAgLTIwNSw3ICsyMDUsNyBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBz
ZXRTZXNzaW9uUGVybWlzc2lvbnMoUmVmPEpTT046OkFycmF5PiYmKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB2b2lkIGluc3BlY3RCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgT3B0aW9uYWw8Ym9v
bD4mJiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBSZWY8SW5zcGVjdEJyb3dzaW5nQ29udGV4dENhbGxi
YWNrPiYmKTsKKyAgICB2b2lkIGluc3BlY3RCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2s+JiYpOwogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0aW9uIFN1cHBv
cnQuCkBAIC0yMjcsOCArMjI3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZv
clBhZ2UoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKTsKICAg
ICB2b2lkIGdldE5leHRDb250ZXh0KFJlZjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4mJiwgVmVjdG9y
PFJlZjxXZWJQYWdlUHJveHk+PiYmLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ+PiwgUmVmPFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpHZXRCcm93c2luZ0NvbnRleHRzQ2FsbGJhY2s+JiYpOwogCi0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYs
IGJvb2wmIGZyYW1lTm90Rm91bmQpOwotICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZUlEKE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYs
IGJvb2wmIGZyYW1lTm90Rm91bmQpOworICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZUlEKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik7CiAgICAgU3RyaW5nIGhhbmRs
ZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2ViRnJhbWVQcm94eSYpOwogCiAgICAgdm9pZCB3YWl0
Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CkBAIC0yNTgsNyArMjU4
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJB
Q1RJT05TKQogICAgIC8vIFNpbXVsYXRlcyBhIHNpbmdsZSB0b3VjaCBwb2ludCBiZWluZyBwcmVz
c2VkLCBtb3ZlZCwgYW5kIHJlbGVhc2VkLgotICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZVRvdWNo
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91Y2hJbnRlcmFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRp
b24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHBsYXRmb3JtU2lt
dWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIFNp
bXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIga2V5IGJlaW5nIHByZXNzZWQvcmVsZWFz
ZWQsIHN1Y2ggYXMgJ2EnLCBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFs
bG93ZWQgYnkgdGhlIHByb3RvY29sLgpAQCAtMjcxLDE5ICsyNzEsMTkgQEAgcHJpdmF0ZToKICNl
bmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKIAogICAgIC8vIEdl
dCBiYXNlNjQtZW5jb2RlZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgotICAgIHN0YXRpYyBPcHRp
b25hbDxTdHJpbmc+IHBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9y
bUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNo
b3QmKTsKIAogICAgIC8vIFNhdmUgYmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cyB0byBhIGxv
Y2FsIGZpbGUgcGF0aCBhbmQgcmV0dXJuIHRoZSBwYXRoLgogICAgIC8vIFRoaXMgcmV1c2VzIHRo
ZSBiYXNlbmFtZSBvZiB0aGUgcmVtb3RlIGZpbGUgcGF0aCBzbyB0aGF0IHRoZSBmaWxlbmFtZSBl
eHBvc2VkIHRvIERPTSBBUEkgcmVtYWlucyB0aGUgc2FtZS4KLSAgICBPcHRpb25hbDxTdHJpbmc+
IHBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShjb25zdCBTdHJpbmcm
IHJlbW90ZUZpbGVQYXRoLCBjb25zdCBTdHJpbmcmIGJhc2U2NEVuY29kZWRGaWxlQ29udGVudHMp
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0
aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxlUGF0aCwgY29uc3QgU3RyaW5n
JiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IC8vIFRoZSB0eXBlIHBhcmFtZXRlciBvZiB0aGUgTlNBcnJheSBhcmd1bWVudCBpcyBwbGF0Zm9y
bS1kZXBlbmRlbnQuCiAgICAgdm9pZCBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFn
ZVByb3h5JiwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKTsKIAotICAgIE9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5KSBjb25zdDsKLSAgICBPcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlRm9y
VmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmll
cnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXkpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7
IG51bGxwdHIgfTsKQEAgLTMwNywxMyArMzA3LDEzIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29u
dGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1f
cGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9L
RVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVu
ZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJ
T05TKQotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+
IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4pPj4gbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdXaGVlbEV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX25leHRFdmFs
dWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlv
blNlc3Npb25DYWlyby5jcHAKaW5kZXggOWY2YmQwMTkwODk5NzgxMzg4ODMzMjgzMWMxNzBlYTBk
MzRlOWE3Yi4uYmMxNjE4M2I4NzA4YTIxOTkxNjExMDNlN2Q5ZmNmNDQ2NTZkNjk5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMg
T3B0aW9uYWw8U3RyaW5nPiBiYXNlNjRFbmNvZGVkUE5HRGF0YShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRh
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKIHsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcocG5nRGF0YSk7CiB9CiAKLU9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5H
RGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKQEAgLTYyLDcgKzYyLDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRF
bmNvZGVkUE5HRGF0YShjb25zdCBTaGEKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEo
c3VyZmFjZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JiBz
bmFwc2hvdCkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxh
dGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmIHNuYXBzaG90
KQogewogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEo
c25hcHNob3Quc3VyZmFjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2Nv
YS5tbQppbmRleCA4YTE1ZmU2Y2Y1NDQ0MzFlOWM2NDVkN2Q4YWNlMzAyY2RjMGQxN2E5Li45ZDE1
NTkyMWJiMDg4MDFhZDJiYzY4ZmU5YjdkNDhjMmNlZDc3ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFIYW5kbGUpCitzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkKIHsKICAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCkBA
IC01OSw3ICs1OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJl
dHVybiBTdHJpbmcoW2ltYWdlRGF0YSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0p
OwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
bmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxl
UGF0aCwgY29uc3QgU3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKQorc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxG
aWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1vdGVGaWxlUGF0aCwgY29uc3Qg
U3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKQogewogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGZpbGVDb250ZW50cyA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0
RW5jb2RlZFN0cmluZzpiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzIG9wdGlvbnM6MF0pOwogICAg
IGlmICghZmlsZUNvbnRlbnRzKSB7CkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4g
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVt
b3RlRmlsCiAgICAgcmV0dXJuIFN0cmluZyhsb2NhbEZpbGVQYXRoKTsKIH0KIAotT3B0aW9uYWw8
dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVh
bEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGtleSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CkBAIC0xOTcsNyArMTk3LDcgQEAgT3B0aW9u
YWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJ
bnNwZWN0b3I6OlByb3RvY28KICAgICB9CiB9CiAKLU9wdGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXkga2V5KSBjb25zdAogewogICAgIHN3aXRjaCAoa2V5KSB7CiAgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBs
eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggYjg1NDRmZmE0NWQ4MmIx
MDI5MTkyOTNmYWNlYTY3MTYxZTE3ZmMzYy4uNmY1MjVkYTBiYTI1NWMyYjE1MzM2MDMzOWZiNTAy
YWRlNTJiM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KQEAgLTc2LDgg
Kzc2LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWcKICAgICAvLyBVSUtpdCBkb2VzIG5vdCBz
ZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFyZHdhcmUga2V5Ym9h
cmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJzIGFuZCBXZWJDb3Jl
IG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAvLyBTeW50aGVzaXplIGEg
c2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBjb2RlIGlzIGluZmVycmVk
LgotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBj
aGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnM7CiAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmll
cnMuCiAgICAgV1RGOjpzd2l0Y2hPbihrZXksCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRvdWNoSW50ZXJhY3Rpb24gaW50
ZXJhY3Rpb24pCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRAogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkm
IHBhZ2UsIFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBsb2NhdGlvbkluVmlld3BvcnQsIE9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgVG91Y2hJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkdXJh
dGlvbiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25PblNjcmVlbiA9IHBhZ2Uuc3luY1Jvb3RW
aWV3VG9TY3JlZW4oSW50UmVjdChsb2NhdGlvbkluVmlld3BvcnQsIEludFNpemUoKSkpLmxvY2F0
aW9uKCk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMsIHN0cmVh
bSA8PCAicGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb246IGludGVyYWN0aW9uPSIgPDwg
aW50ZXJhY3Rpb24gPDwgIiwgbG9jYXRpb25JblZpZXdwb3J0PSIgPDwgbG9jYXRpb25JblZpZXdw
b3J0IDw8ICIsIGxvY2F0aW9uT25TY3JlZW49IiA8PCBsb2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1
cmF0aW9uPSIgPDwgZHVyYXRpb24udmFsdWVfb3IoMF9zKS5zZWNvbmRzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNl
c3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJB
dXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQppbmRleCA3OGFkZmM2MGQwMmMxNTg3ODFjMWJjYWMyNzg1
MGNmOWQxMWNlMjY5Li41ZmNkODFkMTRmZjI2YzFmNGRhYzc2NTg3ZDhiYjc1YjQ0NzY1ZTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtNDQsNyArNDQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI3ByYWdtYSBtYXJrIENvbW1hbmRzIGZvciAnUExBVEZP
Uk0oTUFDKScKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29u
dGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmIGhhbmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBS
ZWY8SW5zcGVjdEJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGhhbmRsZSwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNjMz
LDggKzYzMyw4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnCiAgICAgYm9vbCBpc1N0aWNreU1v
ZGlmaWVyID0gZmFsc2U7CiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVy
cyA9IDA7CiAgICAgaW50IGtleUNvZGUgPSAwOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJD
b2RlOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
aWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CiAKICAgICBXVEY6OnN3aXRjaE9uKGtl
eSwKICAgICAgICAgWyZdIChWaXJ0dWFsS2V5IHZpcnR1YWxLZXkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI3ZDZhNmNl
NjA2NWY3ZjIyZTkxMDU5ZTM2ZGRkNDQwNTYxN2E1NWUuLjExNDBkNmM4MWUzN2YyYzhjZmNmMzYx
NzgxZjNiOTkyNzBlODhjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29uc3QKICNlbmRpZgogfQogCi1ib29sIEF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9u
YWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50
NjRfdD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQorYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgdHVybiB0aGlzIGludG8gYSBSRUxFQVNFX0FTU0VSVCgpLgogICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaAppbmRleCAxMjI0N2NlYTlhNTVhODdkOWU4ZjgzZTkzZmM5ODIwZDE5ODU1
ZjhlLi45YWI2MjhhNmZkMWM5YzRjZTM0NGZkNThjNTFiNzlhYzc3ZDBjZDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTE3LDcg
KzExNyw3IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNz
SWRlbnRpZmllcigpIDogMDsgfQogCiAgICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6OlRlcm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3Nh
Z2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4s
IE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rlciop
PiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gc3RkOjpudWxsb3B0LCBTaG91bGRTdGFy
dFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5OjpZZXMpOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5
bmNSZXBseUluZm8gPSBzdGQ6Om51bGxvcHQsIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAKICAg
ICB2b2lkIHJlcGx5VG9QZW5kaW5nTWVzc2FnZXMoKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdHJ1Y3QgUGVuZGluZ01lc3NhZ2UgewogICAgICAgICBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiBlbmNvZGVyOwogICAgICAgICBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiBzZW5kT3B0aW9uczsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+IGFzeW5jUmVwbHlJbmZvOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiBhc3luY1JlcGx5SW5mbzsKICAgICB9OwogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYp
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IGRlNDBmYzhmMzE3Njk3NWIxNTJj
NGVmYWE0MDE1N2M5NGYyZmE5ZjIuLjljYWI5MjY4ZDAwOTU5YzFiYmQ4NjUyYzk2OTk2ZTI0MTYy
NjNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Np
b24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgbWVzc2FnZU9mQ3VycmVu
dEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJv
eHkmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0
UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9n
T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0
RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21h
dGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICBBUEk6OkF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gY3VycmVudFByZXNl
bnRhdGlvbk9mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYlBhZ2VQcm94eSYpIG92ZXJy
aWRlOwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+
PiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCBkZjE2MTM4YzU0NjBjZTViMTVkYWVh
OGU4YmE4MjA4YmE5MjJkYmE3Li4zNzE0NGExOWJjMGZkNDQxMDhiYjlmOWM2OTEwZWFkNjkxYmZl
OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25Q
YWdlKFdlYkF1CiAgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3
cmFwcGVyKHNlc3Npb24pIHNldFVzZXJJbnB1dDp2YWx1ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxBUEk6
OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9X
S0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlwdERpYWxvZ1R5cGUgdHlwZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dU
eXBlPiB0b0ltcGwoX1dLQXV0b21hdGlvblNlc3Npb25KYXZhU2NyaXB0RGlhbG9nVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgX1dLQXV0b21hdGlvblNlc3Npb25K
YXZhU2NyaXB0RGlhbG9nVHlwZU5vbmU6CkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIEFQSTo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiB0b0lt
cGwoX1dLQXV0b20KICAgICB9CiB9CiAKLU9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlw
ZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNl
c3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3N0ZDo6b3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IEF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50Ojp0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vz
c2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBwYWdlKQogewogICAgIGlmIChhdXRvIHdlYlZp
ZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLnR5cGVP
ZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKICAgICAgICAgcmV0dXJuIHRvSW1w
bChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSB0
eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaAppbmRleCBhMmQzNjZjYTM1OGY4ZmFhMjg5MmU1NTUwNDRhY2UxNGUzMDYzZmM0Li42
ZDk2NzEzMTA1ZjFhYTRlNWU0OTA0Y2FjYWM3NWQwZDkxMDM5NzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBi
ZSBmaXhlZCBsYXRlci4KICAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVs
dExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQogCi0gICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChPcHRpb25hbDxYUkRldmljZUluZm8+KT47CisgICAgdXNpbmcg
RGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNl
SW5mbz4pPjsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5m
b0NhbGxiYWNrJiYpID0gMDsKIAogICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5t
bQppbmRleCBmYzI4NmI5ODU2NmQ4YjA1NjZjNjlmNmY3ZjZjYTI0ZTQ3YWQ0Mzk1Li5iN2YzZDdm
NDk4YzZiYzMxZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHhy
Q29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUlu
Zm8pIG11dGFibGUgeworICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlv
bmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIWRldmljZUluZm8pIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UHJlZmVyZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJl
ZmVyZW5jZU9ic2VydmVyLm1tCmluZGV4IGU1ZjcxYzU2NDBiMzliNGVlMzJlNTQwYjkwMGRiMTQ3
NzM2YTk3ZGQuLmU0YTYyODVmYTA3MDBjNTE0MTg5NTI5NTFjOWU5YjVkMzkyZWY3OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0KQEAgLTE3Niw3ICsxNzYsNyBAQCAtICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3Ry
aW5nICopZG9tYWluIGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOgogewogI2lmIEVO
QUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZG9tYWluID0gcmV0YWluUHRyKGRvbWFpbiksIGtleSA9IHJldGFpblB0cihrZXkpLCBlbmNvZGVk
VmFsdWUgPSByZXRhaW5QdHIoZW5jb2RlZFZhbHVlKV0gewotICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGVuY29kZWRTdHJpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVk
U3RyaW5nOwogICAgICAgICBpZiAoZW5jb2RlZFZhbHVlKQogICAgICAgICAgICAgZW5jb2RlZFN0
cmluZyA9IFN0cmluZyhlbmNvZGVkVmFsdWUuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBkNTdjY2FhNzU5NmFkN2M2ZTU0YmRhYTZl
YTQ5OWQ1MzQ0NzlmODZlLi5lY2Y3MjEzODU4YjhkN2IzZWIyYTU0ZjNiM2E4YzEyZWVkNGJkZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEx
NDAsNyArMTE0MCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
bWFpbkZyYW1lSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBtYWluRnJhbWVJRDsKICAgICAgICAgaWYgKGF1dG8qIG1haW5GcmFtZSA9IGZyYW1lLnBh
Z2UoKSA/IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKQogICAgICAgICAgICAg
bWFpbkZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQoKTsKICAgICAgICAgRnJhbWVJbmZvRGF0
YSBmcmFtZUluZm8geyBmcmFtZS5pc01haW5GcmFtZSgpLCB7IH0sIHVzZXJNZWRpYU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLCBmcmFtZS5mcmFtZUlEKCksIG1haW5GcmFtZUlEIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KaW5kZXggNDYyZDVmMTlkNGMzOTAwZDE1NzI3ZDQ3MGZmY2YxNDRhODU3
NWE4Zi4uYjU3MDVkOGJiYjc5Yzc1Njk2YTM5OGViZjNmZDJjOTYyZjM3ZWU3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBvcHRpb25h
bFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG9wdGlvbmFsU2l6ZTsKICAgICBp
ZiAoIXNpemUuaXNFbXB0eSgpKQogICAgICAgICBvcHRpb25hbFNpemUgPSBzaXplOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCmluZGV4IDQ0
ZmUzNWU4NTRjZDUzZDBjYTBhYzk1NTE3YmQzYjgzMTZmNjlhMjMuLjdhMThhNjE4NGEwNGFhMzdi
YjZkMzI4YTgxN2IwYTBhM2UwM2NiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLQ29udGFjdFBpY2tlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBDb250YWN0
c1JlcXVlc3REYXRhOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS1dlYlZpZXcg
Kil2aWV3OwogCi0tICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6
OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXByZXNlbnRXaXRoUmVxdWVz
dERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNv
bXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkPFdLQ29udGFjdFBpY2tlckRlbGVnYXRl
PiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tDb250YWN0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250
YWN0UGlja2VyLm1tCmluZGV4IDI3Y2ZlNTY0NWIzNmJmMDlhMzVlMzZiZmI3NzY0YTk2ZDdjMTJh
ODAuLjAxOTYzMWY2OTkzMjMxMTcxNDQ4ZjFmZmVkZTBiNjk0NDgzMWFiNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KQEAgLTEyMyw3
ICsxMjMsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250YWN0UGlja2VyIHsKICAgICBXZWFrT2Jq
Q1B0cjxpZDxXS0NvbnRhY3RQaWNrZXJEZWxlZ2F0ZT4+IF9kZWxlZ2F0ZTsKIAogICAgIFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0UHJvcGVydHk+IF9wcm9wZXJ0aWVzOwotICAgIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYm
KT4gX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiBfY29tcGxldGlv
bkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8V0tDTkNvbnRhY3RQaWNrZXJEZWxlZ2F0ZT4gX2Nv
bnRhY3RQaWNrZXJEZWxlZ2F0ZTsKICNpZiBIQVZFKENOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9M
TEVSKQpAQCAtMTUxLDcgKzE1MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdL
V2ViVmlldyAqKXZpZXcKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwcmVzZW50V2l0
aFJlcXVlc3REYXRhOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVy
CistICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3Rz
UmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+
PiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9wcm9wZXJ0aWVzID0gcmVxdWVzdERh
dGEucHJvcGVydGllczsKICAgICBfY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggZTc4ZWViZTcwNTVkYjA4MDdiN2Q3ZDI3NTRlNTdlMjU0ZmVk
YzI5Mi4uN2Y1MzkwMzY1MDMwZmJmMmI0NWQyMTA2NmZlOThjOGFhMzhhOWZlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAg
LTU2OCw3ICs1NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdH
cm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8U2hh
cmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgo
Y29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cywgY29uc3Qgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA1ZmFjNjYyYzkyYmVhNjZiNWRkZWQ5Yzdm
ZTU0Y2I0YjAwNTIyODJiLi42Y2QwYzAxMzZlMWY4ZDliYjI0Njc5YWYyMjU1MWFhN2Q2NmU5MzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTczMCw3ICs3MzAsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjppc1VS
TEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB9CiAKICNpZiBI
QVZFKENWRElTUExBWUxJTkspCi1PcHRpb25hbDx1bnNpZ25lZD4gV2ViUHJvY2Vzc1Bvb2w6Om5v
bWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFdlYlByb2Nlc3NQb29sOjpub21p
bmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCiB7CiAgICAgZm9yIChhdXRvJiBkaXNwbGF5TGluayA6IG1fZGlzcGxheUxpbmtz
KSB7CiAgICAgICAgIGlmIChkaXNwbGF5TGluay0+ZGlzcGxheUlEKCkgPT0gZGlzcGxheUlEKQpA
QCAtODg4LDcgKzg4OCw3IEBAIE5TU2V0ICpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNG
b3JQYXJhbWV0ZXJDb2RpbmcoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNU
X01PREUpCi12b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29u
c3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBPcHRpb25hbDxTdHJp
bmc+JiBlbmNvZGVkVmFsdWUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRWYWx1
ZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5k
ZXggNzJmNTAxN2VkMDQ2ZDhlNGQxOWI2NzRlNTJiN2NiYmEyNzcxNDkwYy4uN2ViN2IyM2Y0NDQy
NTU2ZGI4NWZkMDU3NzNlMjQ2ZGE4Yjk5YmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMjYsOCArMzI2LDggQEAgcHVibGljOgogICAgIF9X
S1JlY3RFZGdlIHJ1YmJlckJhbmRpbmdFbmFibGVkKCk7CiAgICAgdm9pZCBzZXRSdWJiZXJCYW5k
aW5nRW5hYmxlZChfV0tSZWN0RWRnZSk7CiAKLSAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0
eWxlKTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJs
YXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0
eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxi
YXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5
bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBiZWdpbkRlZmVy
cmluZ1ZpZXdJbldpbmRvd0NoYW5nZXMoKTsKICAgICAvLyBGSVhNRTogTWVyZ2UgdGhlc2UgdHdv
PwpAQCAtODU3LDcgKzg1Nyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxl
bmFtZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZFVSTDsKIAotICAgIE9wdGlvbmFsPE5TSW50ZWdl
cj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdl
cj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIAogICAgIENHRmxvYXQgbV90b3RhbEhlaWdo
dE9mQmFubmVycyB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCAxNmZiZjhmOGNiNWU4ZjQ2MzE3OWU3NDYyZDE5N2I4ZWM1YmMyZDFi
Li5iZTY3YjBmNDRmY2EyOTcyYzZjNTA0Y2NjMjY2MGZmODA4MzRkNDA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTU1NCw3ICsxNTU0LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIAogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogewotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghZHJhd3NCYWNrZ3Jv
dW5kKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpD
b2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgbV9wYWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
YmFja2dyb3VuZENvbG9yKTsKQEAgLTIwMDEsNyArMjAwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnVwZGF0ZVZpZXdFeHBvc2VkUmVjdCgpCiAgICAgaWYgKG1fdXNlQ29udGVudFByZXBhcmF0aW9u
UmVjdEZvclZpc2libGVSZWN0KQogICAgICAgICBleHBvc2VkUmVjdCA9IENHUmVjdFVuaW9uKG1f
Y29udGVudFByZXBhcmF0aW9uUmVjdCwgZXhwb3NlZFJlY3QpOwogCi0gICAgbV9wYWdlLT5zZXRW
aWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+KGV4cG9zZWRSZWN0KSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgbV9wYWdlLT5zZXRW
aWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGJvb2wgY2xpcHNUb1Zpc2libGVSZWN0
KQpAQCAtMjU1MSwxMiArMjU1MSwxMiBAQCBOU0NvbG9yICpXZWJWaWV3SW1wbDo6cGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihj
b2xvcik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShP
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBt
X3BhZ2UtPnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzY3JvbGxiYXJTdHlsZSk7CiB9CiAKLU9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJs
YXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+b3ZlcmxheVNjcm9sbGJhclN0eWxlKCk7CiB9CkBAIC00
MTE0LDcgKzQxMTQsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50
ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKIH0KIAotc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBOU0RyYWdPcGVy
YXRpb24ga2l0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbikKIHsKICAgICBpZiAoIWRyYWdPcGVyYXRpb24pCiAgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmNwcAppbmRleCBkZWM5ZjFjOGJhYWE4ZTI5ODcyNzJjMmRmNWEyM2FjM2RlMjk3YzRmLi5lNDlh
NGQ3ZWViODNhNmI3ZjI1NmRmZGM1YjJjYWU2YTViM2Q0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCBJUEM6OkNv
bm5lY3Rpb24qIERyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gcHJvY2VzcygpLmNvbm5lY3Rpb24oKTsKIH0KIAotYm9vbCBEcmF3aW5n
QXJlYVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBh
c3luY1JlcGx5SW5mbykKK2Jvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucywgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICBy
ZXR1cm4gcHJvY2VzcygpLnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25z
LCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMDgyYjBjMDExZDFlMzhhNzkxNTU0MGRlMTBjMTNjNzEx
OGNlOGE2Zi4uODI2YzQxN2M2YzliYTFjN2U2YzJjMzJhNmFiMGYzYWI4ZDcyZjBlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTQwLDcgKzE0MCw3
IEBAIHByaXZhdGU6CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9VSW50NjQoKTsgfQotICAg
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCkBAIC0xNTIsNyAr
MTUyLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSdW5Mb29wOjpUaW1l
cjxEcmF3aW5nQXJlYVByb3h5PiBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcjsKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3Nl
ZFJlY3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLmgKaW5kZXggMGFjNDdiZDMxNGE5
OGJiY2M1MGY2ZTJiY2RkOWI3ODgxYmRiOWZkMi4uNDFlZGQwZjkwNWZlZDQ0ZTQ1ZGRhODFmN2Rl
OWMzOWZlMzk1ZTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dt
ZW50U3RhdGVUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50
U3RhdGVUcmFja2VyLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYWtIYXNo
U2V0PENsaWVudD4gbV9jbGllbnRzOwogICAgIFJldGFpblB0cjxSQlNQcm9jZXNzTW9uaXRvcj4g
bV9wcm9jZXNzTW9uaXRvcjsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFN0YXRlPiBtX3N0YXRlOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTdGF0ZT4gbV9zdGF0ZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggZTI3M2FmYzZlZjY2YjVi
YzJiMDk1MzNhYjhkYTI0NDkwY2U1YjAzYy4uNDc5OGQ3NzdiZTZjZmU3NTdmYmRkY2FkMDk5Zjkw
ZGU4Y2I0ZTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgK
QEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gJnRhZzsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOworICAgIHN0ZDo6
b3B0aW9uYWw8Q2FsbGJhY2tGdW5jdGlvbj4gbV9jYWxsYmFjazsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggM2UyNjRmZDc2MTdmYTFjZTc4YjNmZTE3NWE0MTU3MDJiMDcyM2Y3Zi4uMjM1MTJhZjBm
MWQ1ZWFmMWZlYThlZmMzYjg1Yzk0MmM2YmY1MzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25h
bDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2Ny
aXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklE
LCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVS
TD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZh
bHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2hlbkZyb250ZW5k
SGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgc2Ny
aXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2lu
c3BlY3RvclBhZ2UpIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2Vha1RoaXMtPm1f
aW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uIHtleHRlbnNp
b25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VD
b250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25zdCBP
cHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJjZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9LCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+JiBkZXRhaWxzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNp
b24oY29uc3QgSW4KICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
aW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiB1c2Vy
QWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1
bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1
c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAh
d2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlbG9hZEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtl
eHRlbnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgT3B0aW9u
YWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICB3
ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRl
bnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAppbmRleCBhNWZi
M2U1YjlmZjhmODk4OGJlNGEwYmYzYWI3NDBmNTBjYmFlYjk5Li5mMjk0NzgxNTQ2NWZhMDVlMzNm
MDBlZDVmZTY0M2EyODk3MGRkYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJl
ZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJOYW1l
LCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFs
PFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNv
bnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9y
OjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+
JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBP
cHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZy
YW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1
bHQpPiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVj
dG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKICAgICAvLyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBkaWRT
aG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAKaW5kZXggMmE0YmM4ZmYx
MmVmYmVkOTgzMjZjMGM2MDZhNDQyZjE3OWE3ZjJhZC4uNTcyZDIzNWM2ZDFmMTRkY2UyMTIyODkx
OTM1M2I3MzQ0YTkwM2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6dGltZWxpbmVSZWNvcmRpbmdDaGFuZ2VkKGJvb2wg
YWN0aXZlKQogICAgIG1faXNQcm9maWxpbmdQYWdlID0gYWN0aXZlOwogfQogCi12b2lkIFdlYklu
c3BlY3RvclVJUHJveHk6OnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwg
T3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKK3ZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6
c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6
RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgc3dpdGNoIChkZXZlbG9wZXJQcmVmZXJlbmNlKSB7
CiAgICAgY2FzZSBJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5oCmluZGV4IDQxZDli
YTRhNDhlMTNiZTk3MTgxM2ZjMTgyM2MyMmQzMWQ0YTI5NDUuLjI5MjE0ZDU2ZGZiNmZjYjkwMGY5
OWUyNmRkOTVlODcxZGY2ZmJkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkuaApAQCAtMjU3LDcgKzI1Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJik7CiAgICAgdm9pZCBlbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sKTsKICAg
ICB2b2lkIHRpbWVsaW5lUmVjb3JkaW5nQ2hhbmdlZChib29sKTsKLSAgICB2b2lkIHNldERldmVs
b3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3Bl
clByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+KTsKKyAgICB2b2lkIHNldERldmVsb3BlclByZWZl
cmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVu
Y2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBmNDg4NjQ2NmNhYzJkYTAyOTAxZjNiMTQ3MTE1YjdjM2I0ZjVmNjdkLi4wNjE3MWIyN2Nk
NGEzN2ZkNjQxZjM3NWUwYzVhOTAzZmE5M2Y5NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSVBy
b3h5IHsKICAgICBTaG93Q2VydGlmaWNhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRp
ZmljYXRlSW5mbykKICAgICBFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sIGFjdGl2ZSkKICAg
ICBUaW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBhY3RpdmUpCi0gICAgU2V0RGV2ZWxvcGVy
UHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2ZWxvcGVyUHJl
ZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVl
KQorICAgIFNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwgc3RkOjpvcHRp
b25hbDxib29sPiBvdmVycmlkZVZhbHVlKQogCiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0
cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiAgICAg
QXBwZW5kKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JDbGllbnQuaAppbmRleCA3OWVhYzFhYmY5ODA0ODIxYTcwM2NjZmMyYmNhNzlhY2FjOGFj
YWE3Li5iNDRkMjE0ZjE3NzUzMDc1ZDQwNDAwNTU5YTljYTZkYmY0ZGZhM2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAg
IFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKICAgICBSZW1vdGVJbnNwZWN0b3JPYnNlcnZl
ciYgbV9vYnNlcnZlcjsKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY29ubmVjdGlvbklE
OworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX2Nvbm5lY3Rpb25JRDsKICAgICBI
YXNoTWFwPENvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4+IG1fdGFyZ2V0czsKICAgICBIYXNo
TWFwPHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdldElEPiwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUluc3BlY3RvclByb3h5Pj4gbV9pbnNwZWN0b3JQcm94eU1hcDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
c29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNDE4ODc4NjUz
OTM2ZDQyYWZmMWQ0ZDllMDEyMzcxZDE0MGMwMzlhNi4uYTBhYzkyYWI5OTliYzYxM2U0MjA1ODg2
MzYxMDk2NGNhZDEzNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9u
PHZvaWQoKT4gbV9sb2FkZWRDYWxsYmFjazsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxJbnNwZWN0
b3I6OkRlYnVnZ2FibGVUeXBlPiBwYXJzZURlYnVnZ2FibGVUeXBlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIGRlYnVnZ2FibGVUeXBlU3RyaW5nKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpEZWJ1Z2dhYmxlVHlwZT4gcGFyc2VEZWJ1Z2dhYmxlVHlwZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBkZWJ1Z2dhYmxlVHlwZVN0cmluZykKIHsKICAgICBpZiAoZGVidWdnYWJsZVR5cGVT
dHJpbmcgPT0gIml0bWwiX3MpCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OkRlYnVnZ2FibGVU
eXBlOjpJVE1MOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggNDJmNGQ4MzQ0MTFjOWI0
MWZkMjQ5MTFhYzY4NGQzOTUxNTljYzhhZi4uYjBkMDc5ZmRkNjJmYTRmYTJkOWVjOGVkOWFlNjRj
NWNiYWE5NWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogI2lmIE9TKExJTlVYKQogc3RhdGljIGJvb2wgaXNGbGF0cGFr
U3Bhd25Vc2FibGUoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVy
biAqcmV0OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBib29sIGlzRmxhdHBha1NwYXduVXNh
YmxlKCkKICNpZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogc3RhdGljIGJvb2wgaXNJbnNp
ZGVEb2NrZXIoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVybiAq
cmV0OwogCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIGlzSW5zaWRlRG9ja2VyKCkKIAog
c3RhdGljIGJvb2wgaXNJbnNpZGVGbGF0cGFrKCkKIHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9v
bD4gcmV0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJldDsKICAgICBpZiAocmV0
KQogICAgICAgICByZXR1cm4gKnJldDsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgYm9vbCBp
c0luc2lkZUZsYXRwYWsoKQogCiBzdGF0aWMgYm9vbCBpc0luc2lkZVNuYXAoKQogewotICAgIHN0
YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
cmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVybiAqcmV0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3Bw
CmluZGV4IDFkNTJkNDMwMDhhYTMyMmU3NWJjNDQ5ZjAzN2RiYTUxYjJmNmM2ZjguLmVkMTQ0NDlj
YmYzZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC01
MiwxOSArNTIsMTkgQEAgYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9uU3RhdGUKICAgICBpZiAoIWRlY29kZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0
YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJk
TGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICAqZGVjb2RlciA+PiBiYWNrRm9y
d2FyZExpc3RTdGF0ZTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdFN0YXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlID0gV1RG
TW92ZSgqYmFja0ZvcndhcmRMaXN0U3RhdGUpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJl
bmRlclRyZWVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlbmRlclRyZWVTaXpl
OwogICAgICpkZWNvZGVyID4+IHJlbmRlclRyZWVTaXplOwogICAgIGlmICghcmVuZGVyVHJlZVNp
emUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNp
emUgPSAqcmVuZGVyVHJlZVNpemU7CiAKLSAgICBPcHRpb25hbDxVUkw+IHByb3Zpc2lvbmFsVVJM
OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBwcm92aXNpb25hbFVSTDsKICAgICAqZGVjb2RlciA+
PiBwcm92aXNpb25hbFVSTDsKICAgICBpZiAoIXByb3Zpc2lvbmFsVVJMKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaAppbmRleCBlMDJh
NGY1ODlmNGM2NWRiYTEyNmIxNDgwYjAyNTE1ZmNhMjA2NmQzLi5lY2EyMGYyNjJiMmIyYzZlNDdm
ZjY4ZjkxMGE1YzQ3YTE4ZjIwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2
YXRlLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi11c2luZyBNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPjsKK3VzaW5nIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT47CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlCiAgICAgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoTWVkaWFT
ZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VHJhY2soY29uc3QgU3RyaW5nJiwgTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5k
bGVyJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVD
aGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlh
L1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjJhMmNlYzc2ZDRkYzBmZWYwMDQ1ZTA4Yjk4ODRmZGVmN2EzNmIyZS4uMDkxY2I4ZmQ2MWI2
OTQzODczMzMwMTcwZDcxZjc0MDhiODdlMWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpqb2luKE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGwK
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRl
bnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBl
eGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRpbWUsIE1l
ZGlhU2VzcwogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlT
X0xPRyhpZGVudGlmaWVyLCB0aW1lKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVr
VG8odGltZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmll
ciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE9wdGlv
bmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
Y29vcmRpbmF0ZVBsYXkoTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsCiAgICAgYXV0byBpZGVudGlm
aWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAg
bV9wcml2YXRlQ29vcmRpbmF0b3ItPnBsYXkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRp
b24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKICAg
ICB9KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZShNZWRpYVNlc3Npb25Db21tYW5kQ29tcAogICAgIGF1
dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
KTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wYXVzZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wYXVzZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25E
YXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmll
ciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNl
cHRpb24pKTsKICAgICB9KTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYg
dHJhY2ssCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNf
TE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldFRyYWNrKHRy
YWNrLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8
RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFi
bGUgewogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cG9zaXRpb25TdGF0ZUNo
YW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUp
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBvc2l0aW9uU3RhdGVD
aGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYg
c3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+cG9zaXRpb25TdGF0ZUNoYW5nZWQoc3RhdGUpOwpAQCAtMTU5LDcgKzE1OSw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2Vla1Nlc3Npb25U
b1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpCiAgICAgbV93ZWJQYWdlUHJveHkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6U2Vla1Nl
c3Npb25Ub1RpbWUgeyB0aW1lIH0sIGNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpwbGF5U2Vzc2lvbihPcHRpb25hbDxkb3VibGU+IGF0VGlt
ZSwgT3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBsYXlTZXNzaW9uIHsgV1RGTW92ZShhdFRpbWUp
LCBXVEZNb3ZlKGhvc3RUaW1lKSB9LCBjYWxsYmFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5LmgKaW5kZXggMTA1NGJhODZhNzBmNjljNWI0MDNiZTdmNjEzMDJiZjFhYjFj
OWZhNy4uODQ4OGY4OGI5YTllMjBjYzZlZjRiZDgwMDYwODUwODllYjUxNzI3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaApAQCAtNzAsMTQgKzcwLDE0IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb29yZGluYXRlUGxheShNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhh
bmRsZXImJik7CiAgICAgdm9pZCBjb29yZGluYXRlUGF1c2UoTWVkaWFTZXNzaW9uQ29tbWFuZENv
bXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgY29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0
cmluZyYsIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lk
IHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRp
b25TdGF0ZT4mKTsKKyAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYpOwogICAgIHZvaWQgcmVhZHlTdGF0
ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSk7CiAgICAgdm9pZCBwbGF5
YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKTsKICAg
ICB2b2lkIHRyYWNrSWRlbnRpZmllckNoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBN
ZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUo
ZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lk
IHBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhv
c3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CiAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjb29yZGluYXRvclN0YXRl
Q2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
ZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGQ1Njk4MTVmYWJmNWU1Y2MwZmI0OTNjZTliOTdmZmE1MDY3MjA3YjguLjQ1OTUzYmU4ZDJhNzk5
MjFmN2VhMWIyNTczNTQzMjg4ZDdhODI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsMTkgKzI2LDE5IEBACiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7
CiAKLSAgICBKb2luKCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9y
KSBBc3luYworICAgIEpvaW4oKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiBlcnJvcikgQXN5bmMKIAogICAgIExlYXZlKCkKIAotICAgIENvb3JkaW5hdGVTZWVrVG8o
ZG91YmxlIHRpbWUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikg
QXN5bmMKKyAgICBDb29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKIAotICAgIENvb3JkaW5hdGVQ
bGF5KCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9yKSBBc3luYwor
ICAgIENvb3JkaW5hdGVQbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4gZXJyb3IpIEFzeW5jCiAKLSAgICBDb29yZGluYXRlUGF1c2UoKSAtPiAoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5jCisgICAgQ29vcmRpbmF0ZVBhdXNl
KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5j
CiAKLSAgICBDb29yZGluYXRlU2V0VHJhY2soU3RyaW5nIHRyYWNrSWRlbnRpZmllcikgLT4gKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9yKSBBc3luYworICAgIENvb3JkaW5h
dGVTZXRUcmFjayhTdHJpbmcgdHJhY2tJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKIAotICAgIFBvc2l0aW9uU3RhdGVDaGFu
Z2VkKE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4gc3RhdGUpOworICAgIFBv
c2l0aW9uU3RhdGVDaGFuZ2VkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0
YXRlPiBzdGF0ZSk7CiAKICAgICBSZWFkeVN0YXRlQ2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL01lZGlhVXNhZ2VNYW5hZ2VyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL01lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Eu
aAppbmRleCAyNzk1YTBlNGE3MGJmODVlNWExNGU5NDA0Y2MyNzFkNjlmZjhmYTQ5Li5kODljMTZj
ZTY2NjE0MGEzOGYwYzhjYTE5NTcwN2VkZDE1YTRiNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9NZWRpYVVzYWdlTWFuYWdlckNvY29hLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29jb2EvTWVkaWFVc2FnZU1hbmFnZXJDb2Nv
YS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZp
ZXI7CiAgICAgICAgIFVSTCBwYWdlVVJMOwotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpNZWRp
YVVzYWdlSW5mbz4gbWVkaWFVc2FnZUluZm87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZvOwogICAgICAgICBSZXRhaW5QdHI8VVNW
aWRlb1VzYWdlPiB1c2FnZVRyYWNrZXI7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOTg2
MmVmMjU5NTlkYTFjMjZmNWE0MmNjOTNmODg0Njk2ODRkNmFiYy4uOGU2NjA2N2I3ZjU1YzQyNTYw
YzQyOTk0MjY1MGRjY2I3ODY4ZGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICBzdG9yZS0+Y2xpZW50KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiYgdG9wT3JpZ2lu
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIGJvb2wg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKICAg
ICBXZWFrUHRyPFNlY0tleVByb3h5U3RvcmU+IHNlY0tleVByb3h5U3RvcmU7CkBAIC00ODMsNyAr
NDgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHAKICAgICBwYWdlLT5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZShtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmljYW50
RmlndXJlcywgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiYmIGh0dHBCb2R5KQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURh
dGFSZWZlcmVuY2U+JiYgaHR0cEJvZHkpCiB7CiAgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTY1OSw3ICs2NTksNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0xvY2FsU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6Okhhc0xvY2FsU3RvcmFnZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
YWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRT
aWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0kKIH0K
ICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0
X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRf
dD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0
X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKICAgICBhdXRvKiBzdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCk7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDA1ZGM4
ZjIxZDAzZjY0MzFiMGJlMmEwMDI2YWI4ZDI1YjQ0MGFjYjkuLjZiY2ZlMWVlM2ZjYzNlZTYxY2Rh
YWI2NjI0ZTIzYjdjMjgxYTA3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vz
c2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VDb2x1bW5zRm9yVGFibGUoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNl
Y29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50
LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5z
aWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6
OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6
U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTcyLDcg
KzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAotICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgT3B0
aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4mJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRE
aWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2U+JiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZv
aWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYp
OwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KTsKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBib29sLCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgc2V0V2ViUHJvY2Vzc0hh
c1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wpOwpAQCAtMzE2LDcgKzMx
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNl
UmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cXVvdGEpPiYmKTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmVGcm9t
U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0aW9uPiBuZXR3b3JrQXNzZXJ0
aW9uOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlByb2Nlc3NBc3NlcnRpb25zOwogICAgIH07
Ci0gICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1fdXBsb2FkQWN0aXZpdHk7CisgICAgc3Rk
OjpvcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxvYWRBY3Rpdml0eTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGNsYXNzIFhQQ0V2ZW50SGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQ
Q0V2ZW50SGFuZGxlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTA0MWMx
MWFmNWIzMWMzMDNjYWExODEyZjIwYWUxNjE3YjczNTRlZi4uM2RlOTM1NmQ5MThiMzRjZjIwYzdk
NWQxOWFmN2ExYjBhZGE0N2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFs
bGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCisg
ICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVp
bnQ2NF90IGNoYWxsZW5nZUlEKQogICAgIE5lZ290aWF0ZWRMZWdhY3lUTFMoV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBEaWROZWdvdGlhdGVNb2Rlcm5UTFMoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgVVJMIHVybCkKIApAQCAtNjcsOSAr
NjcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogICAgIEdldEFwcEJvdW5kRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERv
bWFpbnMpIEFzeW5jCiAjZW5kaWYKIAotICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVk
KSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYworICAgIFJlcXVlc3RTdG9y
YWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50
NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IEFzeW5jCiAgICAgCi0gICAgUmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJj
ZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJlbmNlPiBodHRwQm9keSkKKyAgICBSZXNv
dXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8SVBD
OjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAgICAgUmVzb3VyY2VMb2FkRGlkUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdl
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdl
YktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3Ry
dWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9X
S1BERkhVRFZpZXcubW0KaW5kZXggMWE2NDY2MDViYjU5N2M4ODU5NmE3MmZiOGI2Mjk5ZmU0NWEy
ZTRhMy4uNmM0NjUwM2Y5ODdiMGYxMjY1ZTkzOGIxZTBiNWY4MjQ1NWEzMzZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZlbnQKICAgICBfYWN0aXZlQ29udHJvbCA9
IG5pbDsKIH0KIAotLSAoT3B0aW9uYWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJbmRleEZvckV2ZW50
OihOU0V2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJ
bmRleEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKIHsKICAgICBDR1BvaW50IGluaXRpYWxQb2lu
dCA9IE5TUG9pbnRUb0NHUG9pbnQoZXZlbnQubG9jYXRpb25JbldpbmRvdyk7CiAgICAgaW5pdGlh
bFBvaW50LnggLT0gW19sYXllciBmcmFtZV0ub3JpZ2luLng7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggMzFiODA4MDA5YjA3NzdhMWJhMDZkNTI4NmVhZDdmMmYwMDI3M2Qx
Mi4uZTcyMmI0MDNhNzdkM2ZhZmQ4MzZjMjhkZGZjZTZhZThiMzRiNWQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNv
cmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKQEAgLTMxNSw3ICszMTUsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0g
ICAgdmlydHVhbCBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFs
PFdlYkNvcmU6OkludFJlY3Q+JiYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKSA9
IDA7CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCkBAIC00NTAsOCArNDUwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBsYXllclRyZWVDb21taXRDb21wbGV0ZSgpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBjb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc3RvcmVQYWdlU3RhdGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Ny
b2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUg
c2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBjZW50ZXIsIGRvdWJsZSBzY2FsZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNj
cm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRz
T25TYXZlLCBkb3VibGUgc2NhbGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VD
ZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwg
ZG91YmxlIHNjYWxlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKGNv
bnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBi
b29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3Vz
aW5nRWxlbWVudCgpID0gMDsKQEAgLTU4Nyw3ICs1ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEhhbmRsZURyYWdTdGFydFJlcXVlc3QoYm9vbCBzdGFydGVkKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRk
ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25h
bDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUVkaXREcmFnU25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0NhcmV0UmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2FyZXRSZWN0KSA9IDA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDc5ZjMxYzYwNDE0
ZmZiNDY1MDFjZDI1YTY0YTZiZTc2NjM1ZTQ2ZTcuLjBiZjBiZjRkNDE3OTg0Mjg5N2IzZjU4Nzgy
ZDJlOTUwODI4NDNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBib29sIFBsdWdpbklu
Zm9TdG9yZTo6aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
VVJMJiBwbHVnaQogICAgIH0pICE9IG5vdEZvdW5kOwogfQogCi1PcHRpb25hbDxWZWN0b3I8U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnMoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRp
Zmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKQogewog
ICAgIGlmICghbV9zdXBwb3J0ZWRQbHVnaW5zKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmgKaW5kZXggNzVhZTZiYjYyZDg0Y2E0MTlkMjhmZmRmNjgwMDJmMGZmMmVkZDRmOC4uMzA5Yjgw
NTZiNTIwZmRiYWZhMmUzMjM1NTBlOGJiMzZjNWNlZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBkZWZhdWx0TG9hZFBv
bGljeUZvclBsdWdpbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAKICAgICBib29sIGlzU3Vw
cG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJM
LCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBVUkwmIHBhZ2VVUkwpOwotICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGluZ0RvbWFp
biwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVzLCBIYXNo
U2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMo
KSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQogCkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2lu
KGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVS
TCYgcGx1Z2luVVJMKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW4+PiBt
X3N1cHBvcnRlZFBsdWdpbnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1
Z2luPj4gbV9zdXBwb3J0ZWRQbHVnaW5zOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCmluZGV4IGE4YzAy
ODc1ZTNjYWU5NDMzODA1ZGY4OTRjNmU2MTk2M2JhZjllMDMuLmJkNjg1ZTdjY2IxN2NmMmQ4M2I1
MmQ0NmQ3MjBmYTZjNTllZmI0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRp
bWVyPFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcjsKICAg
ICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7CiAg
ICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOwot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEOwogICAg
IGJvb2wgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGFjZmY5
MGM4OGZkYWU3NmIyOWM0N2VlODIyNjQzNWNjYzBjZDZkNDUuLjBmZTYyZGM5Yzk2OWVjZTg1OGEx
MGZjOGEwMDA4MTdiZWI0YzZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiB3ZWJzCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZyZWV6ZUxheWVy
VHJlZUR1ZVRvU3dpcGVBbmltYXRpb24oKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6Iik7CiAKICAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwg
bmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwg
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0
TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCi12
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsKIApAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCCiAgICAgICAgIHJldHVybiAmaXRl
bSAhPSB0YXJnZXRJdGVtOwogICAgIH0pOwogICAgIAotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhOwogICAgIGlmICh3ZWJzaXRlUG9saWNp
ZXMpCiAgICAgICAgIHdlYnNpdGVQb2xpY2llc0RhdGEgPSB3ZWJzaXRlUG9saWNpZXMtPmRhdGEo
KTsKICAgICAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpn
b1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQgogICAg
IG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKLWlubGluZSBib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBPcHRpb25hbDx1aW50NjRfdD4mIG5hdmlnYXRpb25JRCkKK2lubGluZSBib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlucHV0KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEKQogewogICAg
IC8vIElmIHRoZSBwcmV2aW91cyBwcm92aXNpb25hbCBsb2FkIHVzZWQgYW4gZXhpc3RpbmcgcHJv
Y2Vzcywgd2UgbWF5IHJlY2VpdmUgbGVmdG92ZXIgSVBDIGZvciBhIHByZXZpb3VzIG5hdmlnYXRp
b24sIHdoaWNoIHdlIG5lZWQgdG8gaWdub3JlLgogICAgIGlmICghbV9tYWluRnJhbWUgfHwgbV9t
YWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFtZUlEKQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5m
byksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9y
LCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8Lgog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJh
bWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xp
Y3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFt
ZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJh
bWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGlu
Z0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKQEAgLTU5MCw3ICs1OTAsNyBAQCB1aW50NjRfdCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVy
biBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9w
dGlvbnMsIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCiB7CiAgICAgLy8gU2Vu
ZCBtZXNzYWdlcyB2aWEgdGhlIFdlYlByb2Nlc3NQcm94eSBpbnN0ZWFkIG9mIHRoZSBJUEM6OkNv
bm5lY3Rpb24gc2luY2UgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5IGltcGxlbWVudHMgcXVldWVpbmcg
b2YgbWVzc2FnZXMKICAgICAvLyB3aGlsZSB0aGUgcHJvY2VzcyBpcyBzdGlsbCBsYXVuY2hpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCA1YzNiNmZiMGQxNjEzMWNiOTcyMDcwYjMxMGQxMDI1ZGY3ZjA1NzAxLi44MzFjNzljMTgyYjcx
ZmE2OWRlNWNhMTIxNWExZDRiYmQ2NTAzMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk4LDggKzk4LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6
Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGEo
QVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51
bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTExNSwxMCArMTE1LDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8s
Ci0gICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0
IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHBy
b3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2ls
bENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5RnJvbVdlYlByb2Nlc3MoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNj
aGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2Fy
ZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAg
ICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYpOwotICAgIGJvb2wgdmFsaWRhdGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBib29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2Vi
UGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
Y3BwCmluZGV4IDlkZjkxNGQ1ZGFjNTk1NGJmM2MyYmM1ZTBiZWNmYTYxOTUzMzMxODguLjhkMzM3
Y2UxNzM3ZDZhNzk0N2IyYzI4MzJiODE5YjY3MTUzNjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRp
Y2VzRGlkQ2hhbmdlKFdlYkNvcmU6OgogfQogCiAvLyBUaGlzIGNvbWVzIGZyb20gdGhlIHNjcm9s
bGluZyB0cmVlLgotdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxp
bmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsZWROb2RlSUQsIGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50
PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIHNjcm9s
bGVkTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICAv
LyBTY3JvbGwgdXBkYXRlcyBmb3IgdGhlIG1haW4gZnJhbWUgYXJlIHNlbnQgdmlhIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpCiAgICAgLy8gc28gZG9uJ3Qgc2VuZCB0
aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aAppbmRleCAwZTU2ZTQ5YWE3MmQzYzhlYzU2NTQyYzQ1MjAzNjQzMTFjNTBiMTgyLi4wMzE2NzVk
ZDk2NjliYmQyNDZkNThmMDk2OGQzMWM4ODkxOTBiMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKIAogICAgIC8v
IEluZm9ybSB0aGUgd2ViIHByb2Nlc3MgdGhhdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQg
KGNhbGxlZCBmcm9tIHRoZSBzY3JvbGxpbmcgdHJlZSkKLSAgICB2b2lkIHNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbik7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChXZWJDb3Jl
OjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG5ld1Njcm9sbFBv
c2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRW
aWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAg
ICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFdlYkNv
cmU6OlNjcm9sbFR5cGUsIFdlYkNvcmU6OlNjcm9sbENsYW1waW5nKTsKIAogICAgIFdlYkNvcmU6
OlRyYWNraW5nVHlwZSBldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50TmFtZSwgV2ViQ29yZTo6SW50UG9pbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z1RyZWUuY3BwCmluZGV4IDU0ZDQwZjhmZTIxN2VmY2FmOTU1Njg0YWQ5ODBkMTBjMzRhMTljN2Eu
LjU0MjNkYzZlNmNkMDczYjkwNTM2YTUwM2VlMGU2MmFkZDlkMmQ3NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdU
cmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBub2RlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAgIGxheW91dFZpZXdwb3J0T3JpZ2luID0gZG93
bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkubGF5b3V0Vmlld3Bv
cnQoKS5sb2NhdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1hYy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxlclBhaXJNYWMuaAppbmRleCBiMzEwYjEw
OGQyMDcyZDBhNmUyNGM5NTc5ZTM1YjNkMzUyOTJhYmRhLi4zMTY4OTFkOTM4MzU2Zjg3M2M2MmJl
MjZkMjcwNTdkNTk0ZDJmOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsZXJQYWlyTWFjLmgKQEAgLTc5LDcg
Kzc5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVu
dFJlY3Q7CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gbV9sYXN0U2Nyb2xsUG9zaXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBtX2xhc3RTY3JvbGxQb3Np
dGlvbjsKIAogICAgIFJldGFpblB0cjxOU1Njcm9sbGVySW1wUGFpcj4gbV9zY3JvbGxlckltcFBh
aXI7CiAgICAgUmV0YWluUHRyPFdLU2Nyb2xsZXJJbXBQYWlyRGVsZWdhdGU+IG1fc2Nyb2xsZXJJ
bXBQYWlyRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDkyZGM0ODhk
NDhkZTIyZmQ5NThkOWFhOThjN2JhOTFkMDJiMjU5YjMuLjJlMGI1OGU1YjkzNTNkZWE1NTAzNjBk
ZDZiMzRjMTQ4NDVlMjJhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCkBAIC0xNzEs
NyArMTcxLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250
aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KCk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJy
ZW50UmVxdWVzdChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmIGVy
cm9yKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1
cnJlbnRSZXF1ZXN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICBh
dXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaAppbmRleCA0MGE5ZjI5MDdlNTE4YmMxNzhmMjg2OTRhYThkZjlkNWZlZTRjNTQx
Li4xMDRhYjQ1ZWMxNTFmNzNiMGZkNTQ4NmJjMzY5NjM4ZDM2YzA3NGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE5l
eHRSZXF1ZXN0KCk7CiAgICAgdm9pZCBzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KCk7CiAgICAgdm9p
ZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Ci0gICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRS
ZXF1ZXN0KE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6
Om51bGxvcHQpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lv
bihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oCmluZGV4IDkyNjVkZmFjN2QwZGNiMDNkZGNhY2YzNjRlNGU2Nzg5MTIyOTg5
NjUuLjI4YWViNTg3YWMxMzlkOTI1ODQzYmU3NmYyNDE2MTU3NmJlYWRjN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4mJik+OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9jb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJSZXF1ZXN0IGlz
IGNhbmNlbGxlZCJfcyB9KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBsZXRlKE9wdGlvbmFsPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCisgICAgdm9pZCBjb21wbGV0
ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3Ip
CiAgICAgewogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5jcHAKaW5kZXggNWQ5NjJkNzNkZTRlZDAzMzZhY2E1MzU2NzMxYzQ1Njg5
ZWJiOWVmYS4uOTY3ZmM2NWM5ZTAyMzExMTI4YzUxYjFiNTM2NmVmN2E5YjJiMDlhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFs
aWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgICAgIG1f
cmVjb2duaXplci0+YWJvcnQoKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSB0eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJv
ciwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+
IHJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0
KQogewogICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCB0eXBlKTsKICAgICBpZiAodHlwZSA9PSBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggNTA2MTE5YWViZjgy
YjNkZGM5ZTQzMTZlZjQxOTdiOTc2N2M2YjA0ZC4uZGUyMGQ0ZWEyNTNkY2E3MmI2YjU3ZGY3Njc5
OTc0NjFlMjk4NGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwotICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+ID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggYzdj
MWNhYzlkNWE4MTQxZTVlYWI4M2I1ZWRhNDRkMWNiOWRmZWIxYy4uM2I2ODFlNWU5MWJiZmU1MDkz
ZWU4N2M4ZjU3ZjQ5ZDJhZGFhYWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdWludDY0X3QgU3VzcGVu
ZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fd2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAKLWJvb2wgU3VzcGVuZGVkUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRp
b25zLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIC8vIFNlbmQg
bWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0aGUgSVBDOjpDb25u
ZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRzIHF1ZXVlaW5nIG9m
IG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNoaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBlOGMw
OTUzMzE2NWQ3Y2RlZTliOGU5ZDA4ODkxODBjZmFiZmMxOTZiLi5mNDRhYjNhZjU4OTcwOGNkYjlm
MjQ5ZWRiNWI0MWM0ZmJkMDE3NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZp
bmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAg
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93
ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzRkMmUx
MWU1NzZiYTc4YmMzODk3MGM1OTcxMTlmOWQ4NDVkMzY5ZS4uYmY2NWQzNjQ2NDJiNTZmZjhlM2Y0
YjdiZTllMjkzNGQ5NDQwNDU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgfSk7CiB9
CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlc2V0QWNj
ZXNzKE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkKK3ZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlc2V0QWNjZXNzKHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlEKQogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgZnJhbWVJRCA/IGZyYW1lSUQtPmxvZ2dpbmdTdHJpbmco
KSA6IFN0cmluZyB7IH0pOwpAQCAtODQyLDcgKzg0Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKEZy
YW1lCiAjZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
IGVuYWJsZWQpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpz
ZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiBl
bmFibGVkKQogewogICAgIG1fbW9ja0RldmljZXNFbmFibGVkT3ZlcnJpZGUgPSBlbmFibGVkOwog
ICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aAppbmRleCBjMTQyZTM1NWI3YzY5ZjA1OGE4ZDllZGNhNzE4ZDY2NDZjZWU1OTVhLi5hYjgxOWRi
OTZiOGYzYjMxMjkxZWU1ZDRmZmViOGU1NjUzYzFiYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiAgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZl
bERvY3VtZW50T3JpZ2luLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJik7CiAKLSAgICB2
b2lkIHJlc2V0QWNjZXNzKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZy
YW1lSUQgPSB7IH0pOworICAgIHZvaWQgcmVzZXRBY2Nlc3Moc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlEID0geyB9KTsKICAgICB2b2lkIHZpZXdJc0Jl
Y29taW5nVmlzaWJsZSgpOwogCiAgICAgdm9pZCBncmFudFJlcXVlc3QoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSYpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBy
b21wdAogICAgIH07CiAKLSAgICB2b2lkIHNldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVy
cmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAgICAgYm9vbCBoYXNQZW5kaW5nQ2Fw
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0NhcHR1cmU7IH0KIAogICAgIHZvaWQg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNoUmVjb2duaXRpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6Q2FwdHVyZURldmljZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCB7IGZhbHNlIH07
CiAjZW5kaWYKICAgICB1aW50NjRfdCBtX2hhc1BlbmRpbmdDYXB0dXJlIHsgMCB9OwotICAgIE9w
dGlvbmFsPGJvb2w+IG1fbW9ja0RldmljZXNFbmFibGVkT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX21vY2tEZXZpY2VzRW5hYmxlZE92ZXJyaWRlOwogfTsKIAogU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpSZXF1ZXN0QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAppbmRleCA4MzQ0ZmRkNDEyYzU5NjdmYzI1NDg0YmJhN2NmMzA1ZWJhMzM1OTEzLi40NjIzYmE4
MzVlYWQ5YzljOTcxNDVmYzJiMTFkYWZhOGVjMTA1OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSB7CiBjb25zdCB1bnNp
Z25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAKIC8vIEZJWE1FKDE4ODYyNSk6IFN1cHBv
cnQgQkxFIGF1dGhlbnRpY2F0b3JzLgotc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFu
c3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0
aGVudGljYXRvclNlbGVjdGlvbikKK3N0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNw
b3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiYg
YXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoIWF1dGhlbnRpY2F0b3JTZWxlY3Rpb24gfHwgIWF1
dGhlbnRpY2F0b3JTZWxlY3Rpb24tPmF1dGhlbnRpY2F0b3JBdHRhY2htZW50KSB7CkBAIC04Nyw3
ICs4Nyw3IEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxl
Y3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1YmxpCiAvLyBJZiBpdCBpcyBub3Qgc3BlY2lm
aWVkIG9yIGFueSBvZiBpdHMgY3JlZGVudGlhbHMgZG9lc24ndCBzcGVjaWZ5IGl0cyBvd24uIFdl
IHNob3VsZCBkaXNjb3ZlciBhbGwuCiAvLyBUaGlzIGlzIGEgdmFyaWFudCBvZiBTdGVwLiAxOC4q
LjQgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2Rpc2NvdmVyLWZyb20tZXh0
ZXJuYWwtc291cmNlCiAvLyBhcyBvZiA3IEF1Z3VzdCAyMDE4Lgotc3RhdGljIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiYgYWxsb3dDcmVkZW50aWFscywgY29uc3QgT3B0
aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+JiBhdXRoZW50aWNhdG9yQXR0YWNobWVudCkK
K3N0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3Bv
cnRzKGNvbnN0IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4mIGFsbG93Q3Jl
ZGVudGlhbHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+JiBh
dXRoZW50aWNhdG9yQXR0YWNobWVudCkKIHsKICAgICBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkpIHsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgQXV0aGVudGljYXRvck1hbmFnZXI6OlRyYW5zcG9y
dFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0b3I8UHVibGljSwogfQogCiAvLyBPbmx5
IHJvYW1pbmcgYXV0aGVudGljYXRvcnMgYXJlIHN1cHBvcnRlZCBmb3IgR29vZ2xlIGxlZ2FjeSBB
cHBJRCBzdXBwb3J0Lgotc3RhdGljIHZvaWQgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9y
dEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHM+JiBleHRlbnNpb25zLCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0JiB0
cmFuc3BvcnRzKQorc3RhdGljIHZvaWQgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4
dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cz4mIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQm
IHRyYW5zcG9ydHMpCiB7CiAgICAgaWYgKCFleHRlbnNpb25zKSB7CiAgICAgICAgIC8vIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIHNob3VsZCBhbHdheXMgc2V0IGl0LgpAQCAtMTkz
LDcgKzE5Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QoV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIENhCiAgICAgcnVuUHJlc2VudGVyKCk7
CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFn
ZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJh
bWVJRCkKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFn
ZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
JiBmcmFtZUlEKQogewogICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzdGFydERpc2NvdmVyeShjb25zdCBUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMpCiAKIHZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmluaXRUaW1lT3V0VGltZXIoKQogewotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiB0aW1lT3V0SW5NczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1l
T3V0SW5NczsKICAgICBXVEY6OnN3aXRjaE9uKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMs
IFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7
CiAgICAgICAgIHRpbWVPdXRJbk1zID0gb3B0aW9ucy50aW1lb3V0OwogICAgIH0sIFsmXShjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGY3ZjM0MzBjYWFkN2I3MjA5OGM4MjFhZjczMjQ5
NTM0N2QxZTQyZWIuLjRkYjFkOWI1ZWVlMWVhNmZjNDNjZWM0NjQ3YTVhNTc4MjcxZDAyOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvck1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2
b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmLCBDYWxsYmFj
ayYmKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXImLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENhbGxl
ZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHkuCisgICAgdm9pZCBjYW5jZWxSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENhbGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9X
ZWJQcm9jZXNzUHJveHkuCiAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IEFQSTo6V2ViQXV0
aGVudGljYXRpb25QYW5lbCYpOyAvLyBDYWxsZWQgZnJvbSBwYW5lbCBjbGllbnRzLgogICAgIHZv
aWQgY2FuY2VsKCk7IC8vIENhbGxlZCBmcm9tIHRoZSBwcmVzZW50ZXIuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCAxYWFjMWNhMjYxZWMzYTljMjk3YjFj
OTNiMzM0MDgzMjJmN2RiZWQ2Li5jOGEzNmMxMjM5OTE4Zjg0NzRhZGMyMjRlYTRkM2Q5ZjIxYTlj
ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xMTYs
NyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IHRvQXJyYXlCdWZmZXIo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRl
bnRpYWxzKGNvbnN0IFN0cmluZyYgcnBJZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGlh
bHMoY29uc3QgU3RyaW5nJiBycElkKQogewogICAgIC8vIFNlYXJjaCBLZXljaGFpbiBmb3IgZXhp
c3RpbmcgY3JlZGVudGlhbCBtYXRjaGVkIHRoZSBSUCBJRC4KICAgICBhdXRvIHF1ZXJ5ID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggODQ4ZjUzMTljODY3YzczOGU0NmUxN2U5NjE2
ZTE2Mzg2ZGQxOTEyMi4uMDA2NTRlNDI1ZWI5M2Y0NGE1YjEzNjYxZjgxOGM0MTJlNWM5YmUyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIs
NyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChtX3N0YWdlID09
IE1vY2s6OkhpZFN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6
Ok1zZykgewogICAgICAgICAvLyBGSVhNRSgyMDU4MzkpOgogICAgICAgICBWZWN0b3I8dWludDhf
dD4gaW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggODhi
Mjg0ZjU0YWIwZDhmM2ZjMzE4ODlmMDM5Y2Y5OTNiMzYwNzRjNC4uNWI4ODI0YzQxNDFmOTgwNDM4
NTQ2MWU2NzMyMmQ4YmM2MjFiZDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVGZWVkUmVw
b3J0cygpOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biBtX2NvbmZpZ3VyYXRpb247Ci0gICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1f
cmVxdWVzdE1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4g
bV9yZXF1ZXN0TWVzc2FnZTsKICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpIaWRTdGFnZSBtX3N0YWdlIHsgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U6OkluZm8gfTsKICAgICBXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdWJTdGFnZSBtX3N1YlN0YWdlIHsgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2U6Oklu
aXQgfTsKICAgICB1aW50MzJfdCBtX2N1cnJlbnRDaGFubmVsIHsgZmlkbzo6a0hpZEJyb2FkY2Fz
dENoYW5uZWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCmluZGV4IGRiZmJlNjM5
N2ZjMTIwMTU5OTQwMjk3NmNjNzdjNGMzZjU1MWViODMuLjVjYmE0YmUzZjJmZDljNGU4YTFjZDUw
ZjkxZDBiOTRkZjZlYjE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcApAQCAt
MTgyLDcgKzE4Miw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrCiAKICAgICBhdXRvIGluaXRD
b21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtJbml0LCBtX25vbmNlKTsKICAgICBBU1NFUlQoaW5pdENvbW1hbmQpOwotICAg
IG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11
dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2Fn
ZT4mJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2sKICAgICB9KTsKIH0KIAotdm9pZCBD
dGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRv
SGlkTWVzc2FnZT4mJiBtZXNzYWdlKQordm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVy
Q2hhbm5lbEFsbG9jYXRlZChzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2Up
CiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVB
ZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAg
Ly8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuCiAgICAgYXV0
byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBwcm90b2NvbCgpID09
IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgPyBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IgOiBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgbV9yZXF1ZXN0RGF0YSk7CiAgICAgQVNTRVJUKGNt
ZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11
dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVz
cG9uc2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDcgKzIzMCw3
IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0
aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAgfSk7CiB9CiAKLXZvaWQgQ3RhcEhpZERy
aXZlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hp
ZE1lc3NhZ2U+JiYgbWVzc2FnZSkKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJl
c3BvbnNlUmVjZWl2ZWQoc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNz
YWdlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkeSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Zmlkby9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRleCBiZmIyMTNkNzQ0ZDJlMTYwOWQzYmEz
YjRiZDM2NzQxMWZkMzcyMTM3Li41OTNmYTk4ODBkOTUwNTBlZGI3MzRkNTkzOTE0MWU5YjlkZWU1
YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2
YXRlOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV29ya2VyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5nIE1lc3NhZ2VD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYp
PjsKKyAgICAgICAgdXNpbmcgTWVzc2FnZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9w
dGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKT47CiAKICAgICAgICAgZW51bSBjbGFzcyBT
dGF0ZSA6IHVpbnQ4X3QgIHsKICAgICAgICAgICAgIElkbGUsCkBAIC04MiwxMyArODIsMTMgQEAg
cHJpdmF0ZToKIAogICAgICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKLSAgICAgICAgT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7Ci0gICAgICAgIE9wdGlv
bmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3Jlc3BvbnNlTWVzc2FnZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXNwb25zZU1lc3NhZ2U7
CiAgICAgICAgIE1lc3NhZ2VDYWxsYmFjayBtX2NhbGxiYWNrOwogICAgIH07CiAKLSAgICB2b2lk
IGNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNz
YWdlPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFs
PGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDaGFubmVs
QWxsb2NhdGVkKHN0ZDo6b3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworICAgIHZv
aWQgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRv
SGlkTWVzc2FnZT4mJik7CiAgICAgdm9pZCByZXR1cm5SZXNwb25zZShWZWN0b3I8dWludDhfdD4m
Jik7CiAgICAgdm9pZCByZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA0YzU0YzZhZjA3MDFjYzliM2YyNmNkYTM1NTE2MGQz
NWQzNTFjNDA0Li5lMGU5NDRkMTJkZmMxMmJjNmNlY2YwMzk2MjE5ZjUzMzQzNDJiNDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShC
YWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdAogICAgICAgICBiYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBPYmpl
Y3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlw
ZT46OmdlbmVyYXRlKCkgfTsKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSks
IG1fcGFnZS0+aWRlbnRpZmllcigpKSk7CiAgICAgfQotICAgIG1fY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9uYWw8c2l6ZV90PigqYmFja0Zv
cndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2N1cnJl
bnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA/IHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9y
d2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9t
IHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IGRmMWIxODUx
ZDQyZTZiMjQyOGE3Y2M4MTM4ZWM2YWU3MGJmMmI4MGIuLjQxY2YzZTIwNDRkYWZiOWMzNjM4M2Yy
OWE5ZDAxNGM0MjNhOTJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yIG1fZW50cmllczsKLSAg
ICBPcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2N1cnJlbnRJbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eS5jcHAKaW5kZXggZGFiMzJlMDQ5M2U2YTZlYzdhMTU1NjU5MDQyMzBhZDVjY2Q5NjMwNC4uZjhm
MmZkMDNjZDFhZTIyZTk4OTgwOGUxZTAzYWNmMThhMTQyNjUyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5KFJlcGx5JiYgcmVwbHksIFNob3VsZEV4CiAKIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eTo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSgpID0gZGVmYXVsdDsK
IAotdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmRpZFJlY2VpdmVBcHBCb3VuZERv
bWFpblJlc3VsdChPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpk
aWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCmluZGV4IDg5NTgzMGM4ZTM2OTU3MzRi
YmJmMWJhYWM1NTRjOTM0NjNiYjA1MzEuLjg5ZTI3ZmI1M2YwZjU1YTA1MzFjYjdkMTgzMzYyMjFl
YmMzNGNmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBAIGVudW0gY2xhc3MgU2hvdWxk
RXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgOiBib29sIHsgTm8sIFllcyB9OwogY2xhc3MgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6RnJhbWVQb2xpY3lMaXN0ZW5lcj4gewogcHVibGljOgogCi0gICAgdXNpbmcg
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8
U2FmZUJyb3dzaW5nV2FybmluZz4mJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+KT47CisgICAgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pPjsKICAgICBzdGF0aWMgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFJlcGx5JiYgcmVwbHksIFNob3VsZEV4cGVjdFNhZmVC
cm93c2luZ1Jlc3VsdCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIFNob3VsZEV4cGVjdEFwcEJv
dW5kRG9tYWluUmVzdWx0IGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KFdURk1v
dmUocmVwbHkpLCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFwcEJvdW5kRG9tYWlu
UmVzdWx0KSk7CkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaWdub3JlKCk7
CiAgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0cyhSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXBwQm91bmREb21haW5S
ZXN1bHQoT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5KFJlcGx5JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0
QXBwQm91bmREb21haW5SZXN1bHQpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ+PiBtX3Bv
bGljeVJlc3VsdDsKLSAgICBPcHRpb25hbDxSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4+IG1f
c2FmZUJyb3dzaW5nV2FybmluZzsKLSAgICBPcHRpb25hbDxPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+LCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50Pj4gbV9wb2xpY3lSZXN1bHQ7CisgICAgc3RkOjpvcHRpb25h
bDxSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4+IG1fc2FmZUJyb3dzaW5nV2FybmluZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
PiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgUmVwbHkgbV9yZXBseTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggNWVmMDI5
MWI1NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUyYS4uMzU3NWFhMzE5NDMyODVhMzc3NTFm
NGIyMTNmYTBkYTFlOTNiMGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAKQEAgLTE5MiwxMSArMTkyLDExIEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hh
bmdlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAK
LVdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6Oldl
YnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZl
QnJvd3NpbmdXYXJuaW5nPiYmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQgZXhw
ZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCBl
eHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCkKK1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYg
V2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFNo
b3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIFNo
b3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0IGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
KQogewogICAgIGlmIChtX2FjdGl2ZUxpc3RlbmVyKQogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVy
LT5pZ25vcmUoKTsKLSAgICBtX2FjdGl2ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5OjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFBvbGljeUFjdGlv
biBhY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJy
b3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7
CisgICAgbV9hY3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3Jl
YXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9saWNpZXMsIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5nV2FybmluZyksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyID0gbnVsbHB0cjsKICAg
ICB9LCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA4MWNlYTIxNjg5
MDVhNGM3NDIzN2Y1MTVlYzA5OTNiZjU2ODA3ZDRkLi4zOTFiMDI3MzYyODM0MWVkYWE4ODMwYjM3
NGYwZmIxMzEyNDAxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0
YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93
c2luZ1dhcm5pbmc+JiYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+JiYs
IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0QXBwQm91bmREb21h
aW5SZXN1bHQpOworICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPik+JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxk
RXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSB7IG1fY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZShjb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmZjQ3NmY1NDIxMTg4OWY3MTc4MGQ5ZTIzZWUzMzI5ZjIx
YzNjYzMxLi43NDkzNmU0NWEwZDgzODNhOGI0YjNkNmQ1NzhjOWJkMjJiZTNmYTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5kaWYKLSAgICBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFBvc2l0aW9uOyB9CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAgIHVz
aW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1
ZXN0ZXJzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4g
bV9wcm92aWRlcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0
YT4gbV9sYXN0UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFmZDc2Mjdj
OTAwN2M3NDRkNjI1MDA3ZTE1MmE2ZjYxYWMxZmJkZDIuLmUzZjgwMTQ3MTU2ZjUzN2U3ZDYyYjlm
Y2ZiMjJkMmQyZWE1ZjVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2Fn
ZS5tZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXMobWVzc2FnZS5tZXNzYWdlQm9keS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKLWJvb2wgV2ViUGFn
ZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkKK2Jvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXll
ckZsdXNoIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKQogewogICAgIG1f
c3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiAgICAgbV9sYXN0
U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIpOwogCkBAIC0x
ODc0LDcgKzE4NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3RlSW5zcGVjdG9ySW5mb3Jt
YXRpb25EaWRDaGFuZ2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xvcikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qgc3RkOjpvcHRpb25hbDxDb2xvcj4mIGNvbG9y
KQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYwMCw3ICsyNjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRy
YWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxl
SW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IEludFJlY3Qm
IGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hh
bmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1
dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5z
ZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKICAgICBt
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJhZ09wZXJhdGlvbjsKICAgICBtX2N1cnJlbnREcmFn
SGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRob2Q7CkBAIC0yNzQ3LDcgKzI3NDcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICAg
ICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gc2FuZGJveEV4dGVuc2lvbnM7
CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gc2FuZGJv
eEV4dGVuc2lvbnM7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0
RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6
TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9C
dXR0b247CkBAIC0zMjgxLDcgKzMyODEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFBy
b3RvY29sQXNBcHBCb3VuZChjb25zdCBVUkwmIHJlcXVlc3RVUkwpCiAgICAgcmV0dXJuIHJlcXVl
c3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzRGF0YSgpIHx8
IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkg
fHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgpOwogfQogCi1ib29sIFdlYlBhZ2VQ
cm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQo
Ym9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK2Jvb2wg
V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBl
cm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiB7CiAgICAgaWYgKGlzRnVsbFdlYkJyb3dzZXIoKSkgewogICAgICAgICBpZiAoaGFz
UHJvaGliaXRlZFVzYWdlU3RyaW5ncygpKQpAQCAtMzQxNCw3ICszNDE0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEEKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdhdGlvbiwgcmVhc29uPSUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBvcHRpb25hbEhh
bmRsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG9w
dGlvbmFsSGFuZGxlOwogICAgICAgICBpZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKICAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvY2VzcyB0byBiZSB1c2VkIGZvciB0aGUgbmF2aWdhdGlv
biBkb2VzIG5vdCBnZXQgc2h1dERvd24gbm93IGR1ZSB0byBkZXN0cm95aW5nIFN1c3BlbmRlZFBh
Z2VQcm94eSBvciBQcm92aXNpb25hbFBhZ2VQcm94eSBvYmplY3RzLgogICAgICAgICAgICAgYXV0
byBwcmV2ZW50TmF2aWdhdGlvblByb2Nlc3NTaHV0ZG93biA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9u
LT5zaHV0ZG93blByZXZlbnRpbmdTY29wZSgpOwpAQCAtMzQ0Miw3ICszNDQyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIEEKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVz
LCBWYXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+PiYmIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFu
dDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
Pj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlciwgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
ICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVy
KCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwpAQCAtMzQ1NCw3ICszNDU0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJ
Z25vcmUgJiYgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9PSBXaWxsQ29udGludWVMb2Fk
SW5OZXdQcm9jZXNzOjpObyAmJiBuYXZpZ2F0aW9uICYmIG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpID09IG1fcGFnZUxvYWRTdGF0ZS5wZW5kaW5nQVBJUmVxdWVzdCgpLm5hdmlnYXRpb25JRCkK
ICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rp
b24pOwogCi0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQ7CiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgog
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1l
SW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOwpAQCAtMzQ4MSwxOSArMzQ4MSwxOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1
ZXN0ID0geyB9OwogICAgIH0KICAgICAKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiB3ZWJzaXRlUG9saWNpZXNEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YTsKICAgICBpZiAod2Vic2l0ZVBvbGljaWVzKQogICAg
ICAgICB3ZWJzaXRlUG9saWNpZXNEYXRhID0gd2Vic2l0ZVBvbGljaWVzLT5kYXRhKCk7CiAKICAg
ICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzRGF0YSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBmcmFtZUxv
YWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywg
Ym9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBX
ZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJh
bWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVu
dFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3Byb3Zp
c2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0
UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzcygp
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBt
YWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBt
X21haW5GcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0gJm1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkpOwogCkBAIC0zNTU5LDcgKzM1NTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgcwogICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNE
YXRhOwogICAgICAgICBpZiAod2Vic2l0ZVBvbGljaWVzKQogICAgICAgICAgICAgd2Vic2l0ZVBv
bGljaWVzRGF0YSA9IHdlYnNpdGVQb2xpY2llcy0+ZGF0YSgpOwogCkBAIC0zODgzLDcgKzM4ODMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IpCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPmRldmljZVNjYWxlRmFjdG9y
RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAgIG1fZGlzcGxheUlEID0gZGlzcGxheUlEOwog
CkBAIC0zOTYxLDcgKzM5NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRT
aXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdF
eHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAgICBpZiAobV92aWV3RXhwb3Nl
ZFJlY3QgPT0gdmlld0V4cG9zZWRSZWN0KQogICAgICAgICByZXR1cm47CkBAIC00MjUxLDcgKzQy
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwogICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzdGQ6Om51bGxvcHQsIEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5n
IHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgog
ICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTQyNjUsNyArNDI2NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAgICAgICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKICNlbmRpZgogCi0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBX
VEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBX
VEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4mJiBkZXRhaWxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGRldGFpbHMpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbihtYWtlVW5leHBl
Y3RlZChXVEZNb3ZlKCpkZXRhaWxzKSkpOwogICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0Vt
cHR5KCkpCkBAIC00MzE5LDkgKzQzMTksOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxp
bmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZwogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpPiB0b0FQ
SURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxi
YWNrKQorc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVu
Y2U+JiBkYXRhKSBtdXRhYmxlIHsKKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFjayhkYXRhID8gQVBJOjpEYXRhOjpjcmVhdGUoZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpIDogbnVsbHB0cik7CiAgICAgfTsKIH0KQEAgLTQ3
NjAsNyArNDc2MCw3IEBAIHN0YXRpYyBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25Db250YWluCiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNl
RXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3Rk
OjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29y
ZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJk
LCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlz
IG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDgxNiw3
ICs0ODE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBmcmFtZS0+ZGlkQ29tbWl0
TG9hZChtaW1lVHlwZSwgd2ViQ2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50
KTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgICAgICBpZiAobV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKICAgICAgICAgZWxzZSBpZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0
aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpKQpAQCAtNTE3MiwxNCArNTE3MiwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29s
LCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
LCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBz
dGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUo
b3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVj
dFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywKLSAgICBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
bywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
CiB7CkBAIC01MTk1LDcgKzUxOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUs
IG5hdmlnYXRpb25JRD0lbGx1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCk7CkBAIC01Mjk0LDcgKzUyOTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
IHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQ6OlllczsKICNlbmRpZgogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2Vu
ZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9i
amVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZp
Z2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJv
Y2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCld
IChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNp
ZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFp
bikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0l
bGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJu
aW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgp
LCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQp
cG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7
CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9u
QWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIG11dGFibGUgewpAQCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29u
c3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywg
c3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwK
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKQEAgLTU0NjMsNyArNTQ2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwKICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBmcmFtZUlELCBpc01haW5GcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFp
bkZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUlu
Zm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlk
ZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIApAQCAtNTQ5Miw3ICs1NDkyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWUKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZy
YW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwg
bnVsbHB0ciwgZnJhbWVOYW1lLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIFVSTCB7IH0sIHNo
b3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKICAgICAK
LSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclBy
b3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxp
c3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgIGF1dG8g
bGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwg
ZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNl
IGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXku
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTU1MzEsNyAr
NTUzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgYXV0byBuYXZpZ2F0aW9uUmVz
cG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2Us
IGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogCiAgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIs
IGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBw
cm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBwcm9jZXNzLCBu
YXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNp
dGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3Nl
cnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRz
IG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJv
d3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC02MDgxLDcgKzYwODEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbAogICAgIHBhZ2VDbGllbnQoKS5zaG93U2hhcmVTaGVl
dChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJlZmVyZW5jZXMtPmNvbnRhY3RQ
aWNrZXJBUElFbmFibGVkKCkpOwogICAgIHBhZ2VDbGllbnQoKS5zaG93Q29udGFjdFBpY2tlcihy
ZXF1ZXN0RGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNjUyNCw3ICs2NTI0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBpdGVt
ID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGluZGV4KSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlEKCkpOwpAQCAtNjYzMiw3ICs2NjMyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgbV9maW5kQ2xpZW50LT5kaWRGYWlsVG9GaW5kU3RyaW5nKHRoaXMsIHN0cmluZyk7CiB9CiAK
LWJvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRp
b24+IHNlbmRPcHRpb25zLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewog
ICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CkBAIC02Nzg1LDcgKzY3ODUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwogICAgIH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJbmZv
PiBkb3dubG9hZEluZm87CisgICAgc3RkOjpvcHRpb25hbDxEb3dubG9hZEluZm8+IGRvd25sb2Fk
SW5mbzsKIAogICAgIHN3aXRjaCAoaXRlbS5hY3Rpb24oKSkgewogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtNzQ3Myw3ICs3NDczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ1Njcm9sbGluZ0V2
ZW50KHVpbnQzMl90IGV2ZW50VHlwZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAKICAgICB9CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNlZEZy
YW1lQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQp
CiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIG1fZm9jdXNlZEZyYW1lID0gbnVsbHB0
cjsKQEAgLTgxMDQsNyArODEwNCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uTWFuaWZlc3QgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZlc3QoKSA/
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KG1fY29uZmlndXJhdGlvbi0+
YXBwbGljYXRpb25NYW5pZmVzdCgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkpIDogc3RkOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IG1fY29uZmlndXJhdGlv
bi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS0+YXBw
bGljYXRpb25NYW5pZmVzdCgpKSA6IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcGFyYW1l
dGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzOwpAQCAtODM1
Miw3ICs4MzUyLDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdl
YlBhZ2VQcm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAgICByZXR1cm4gKm1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IGVuYWJs
ZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZCkKIHsKICAgICB1c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKS5zZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUo
ZW5hYmxlZCk7CiB9CkBAIC04NzczLDcgKzg3NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYg
cAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4m
IHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+
JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CkBAIC04OTgyLDcgKzg5ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi1SZWZQ
dHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJveHk6OnRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8
V2ViQ29yZTo6SW50UmVjdD4mJiBjbGlwUmVjdCkKK1JlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBh
Z2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+
JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90
KFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KQEAgLTkwMjUsNyArOTAyNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBp
bm5pbmcpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihwaW5uaW5nKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Ny
b2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3Jv
bGxiYXJTdHlsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0
eWxlKQogewogICAgIGlmICghbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgJiYgIXNjcm9sbGJhclN0
eWxlKQogICAgICAgICByZXR1cm47CkBAIC05MDM1LDcgKzkwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdAogCiAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzY3JvbGxiYXJTdHls
ZTsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlOwogICAg
IGlmIChzY3JvbGxiYXJTdHlsZSkKICAgICAgICAgc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgp
KTsKIApAQCAtMTAwODksNyArMTAwODksNyBAQCBSZWY8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdl
UHJveHk6OmVuc3VyZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogI2VuZGlm
IC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25N
YW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQpAQCAtMTA1ODAsNyArMTA1ODAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTA0ODVh
M2Q2Y2ZjOTY1ZGQ0ZDkwMmQ0MWJlMzZiOTE4OTI4MzJjNC4uNzFmZTU4NWNiNTdlZjM4ZThlNDI5
OTE1YzBlM2M4YjlmMjcwNzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTY5NSw4ICs2OTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWxlZ2F0ZXNTY3Jv
bGxpbmcoYm9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcpIHsgbV9kZWxlZ2F0ZXNTY3JvbGxpbmcgPSBk
ZWxlZ2F0ZXNTY3JvbGxpbmc7IH0KICAgICBib29sIGRlbGVnYXRlc1Njcm9sbGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAKLSAgICB2b2lkIHNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmIG1lYXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1l
YXN1cmVtZW50KTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50OyB9CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIG1l
YXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVt
ZW50KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KIAogICAgIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoTW9kZSA6IGJvb2wgeyBEZWZlcnJhYmxlLCBJbW1lZGlhdGUgfTsKICAgICBl
bnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VSZXBseU1vZGUgOiBib29sIHsgQXN5bmNocm9u
b3VzLCBTeW5jaHJvbm91cyB9OwpAQCAtNzMwLDcgKzczMCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV2ViQ29yZTo6V3JpdGluZ0RpcmVjdGlvbik7CiAK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gY2FjaGVkRm9udEF0dHJpYnV0
ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRGb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVzPiBjYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydDsgfQogCiAjaWYgSEFW
RShUT1VDSF9CQVIpCiAgICAgY29uc3QgVG91Y2hCYXJNZW51RGF0YSYgdG91Y2hCYXJNZW51RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hCYXJNZW51RGF0YTsgfQpAQCAtNzYxLDcgKzc2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JlZW5Jc0JlaW5nQ2FwdHVyZWQo
Ym9vbCk7CiAKLSAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
bGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBpbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CiAgICAgdm9pZCByZW1vdmVU
ZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9
CkBAIC03OTEsNyArNzkxLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1Vbm9ic2N1cmVkU2l6
ZTsgfQogICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CiAgICAgaW50MzJf
dCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247
IH0KLSAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CisgICAgdm9pZCBzZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHM+Jik7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKFRyYW5zYWN0aW9uSUQpOwogCiAg
ICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVy
ZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+KT4mJik7CkBAIC04NjgsOSArODY4LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
SGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7CiAgICAgdm9pZCBy
ZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2b2lkIHJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7
Ci0gICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYm
IHJlcGx5KTsKKyAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGE+KT4mJiByZXBseSk7CiAgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CisgICAgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFw
c2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZURyb3AoKTsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC04ODcsNyArODg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAgICAgdm9pZCBkZWxldGVTdXJy
b3VuZGluZyhpbnQ2NF90IG9mZnNldCwgdW5zaWduZWQgY2hhcmFjdGVyQ291bnQpOwogCi0gICAg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwor
ICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3Rh
dGU+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkBAIC05NTUsOCArOTU1LDggQEAg
cHVibGljOgogICAgIHZvaWQgdGhlbWVEaWRDaGFuZ2UoKTsKICNlbmRpZgogCi0gICAgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgUGxhdGZvcm1W
aWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHB1YmxpYzoKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgc2V0Q3VzdG9tRGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpOwotICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFdlYkNvcmU6OlBs
YXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOwog
ICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wpOwpAQCAtMTA1NSw4ICsxMDU1LDggQEAgcHVibGljOgogICAg
IGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZpeGVkTGF5b3V0OyB9
OwogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplOyB9OwogCi0gICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJl
Y3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdFeHBvc2Vk
UmVjdDsgfQorICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZp
ZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAKICAg
ICB2b2lkIHNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wpOwogICAgIHZvaWQg
c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wpOwpAQCAtMTE4Miw3ICsxMTgyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwogICAgIHZvaWQgZm9y
Y2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBmbG9hdCBoZWFk
ZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgcHVibGljOgog
CiAgICAgY2xhc3MgUG9saWN5RGVjaXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
LCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdh
dGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lE
ZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsg
fSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwogICAgIHZvaWQgcmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGlj
aWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9y
d2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
KTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EcmFnT3Bl
cmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAK
LSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNl
SXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlZGl0YWJsZUVsZW1lbnRSZWN0KTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBXZWJDb3JlOjpE
cmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlv
blJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwogICAg
IHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBk
cmFnQ2FuY2VsbGVkKCk7CkBAIC0xMjg4LDcgKzEyODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
YXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGN1cnJlbnREcmFnT3Bl
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFn
SXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJ
bnB1dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVk
OyB9CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludElu
Zm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjZW5kaWYK
QEAgLTEzNjYsNyArMTM2Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBERktJ
VF9QTFVHSU4pCi0gICAgdm9pZCBzaG93UERGQ29udGV4dE1lbnUoY29uc3QgV2ViS2l0OjpQREZD
b250ZXh0TWVudSYsIFBERlBsdWdpbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8aW50MzJfdD4mJik+JiYpOworICAgIHZvaWQgc2hvd1BERkNvbnRleHRNZW51KGNv
bnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmLCBQREZQbHVnaW5JZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4mJik+JiYpOwogI2VuZGlmCiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsgfQogCkBAIC0xNDQ4LDggKzE0NDgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVo
YXZpb3I7IH0KIAotICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdl
YkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gb3ZlcmxheVNjcm9sbGJhclN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxi
YXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5
U2Nyb2xsYmFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsg
fQogCiAgICAgLy8gV2hlbiB0aGUgc3RhdGUgb2YgdGhlIHdpbmRvdyBjaGFuZ2VzIHN1Y2ggdGhh
dCB0aGUgV2ViUGFnZSBuZWVkcyBpbW1lZGlhdGUgdXBkYXRlLCB0aGUgVUlQcm9jZXNzIHNlbmRz
IGEgbmV3CiAgICAgLy8gQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIHRvIHRoZSBXZWJQcm9jZXNzIHRo
cm91Z2ggdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZS4gVGhlIFVJUHJvY2VzcyB3aWxsIHdh
aXQgdGlsbCBpdApAQCAtMTQ2MSwxMCArMTQ2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNv
cmRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsKICAgICB2b2lkIHN1cHByZXNzTmV4dEF1
dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCgpIHsgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0
aWNOYXZpZ2F0aW9uU25hcHNob3QgPSB0cnVlOyB9CiAgICAgdm9pZCByZWNvcmROYXZpZ2F0aW9u
U25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwotICAgIHZvaWQgcmVxdWVzdEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25h
bDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYmKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZp
ZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKTsKKyAgICBSZWZQdHI8Vmll
d1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVj
dD4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtMTY5NSw3ICsxNjk1
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJik7CisgICAg
dm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKICNlbmRp
ZgogCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3Q7CkBA
IC0xNzE5LDcgKzE3MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDdXJyZW50TW9kaWZp
ZXJTdGF0ZSgpOwogCiAgICAgUHJvdmlzaW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lk
IGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFBy
b3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmKTsK
IAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVuIHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQ
cm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRh
dGEmKTsKQEAgLTE3MjksMTMgKzE3MjksMTMgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0g
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwor
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiA9IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
LSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQs
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1Rv
SXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMmKT4mJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0Rl
bGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVk
UmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCkBA
IC0xNzg3LDcgKzE3ODcsNyBAQCBwdWJsaWM6CiAgICAgVVJMIGN1cnJlbnRSZXNvdXJjZURpcmVj
dG9yeVVSTCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNl
dE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAg
dm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxi
b29sPik7CiAgICAgdm9pZCB3aWxsU3RhcnRDYXB0dXJlKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAK
QEAgLTE4MzAsMTIgKzE4MzAsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNET01XaW5k
b3dSZXNpemVFdmVudCgpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9
CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsgfQogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc0ZvcmNlZElu
dG9BcHBCb3VuZE1vZGVUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwot
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CiAjZWxz
ZQotICAgICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
ICAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTg5OCw3ICsxODk4LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29y
ZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7CiAgICAgdm9pZCBzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKTsKLSAgICB2b2lkIHJlc3RvcmVB
cHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7
CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVj
dG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAgICAgdm9pZCBzZXRBcHBIaWdobGlnaHRzVmlzaWJp
bGl0eShjb25zdCBXZWJDb3JlOjpIaWdobGlnaHRWaXNpYmlsaXR5KTsKICNlbmRpZgogCkBAIC0x
OTU1LDcgKzE5NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
OwogICAgIHZvaWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAK
LSAgICBib29sIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1
c2gpOworICAgIGJvb2wgc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRp
b24mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKTsKIAogICAgIGVudW0gY2xhc3MgUmVzZXRTdGF0ZVJlYXNvbiB7CiAgICAg
ICAgIFBhZ2VJbnZhbGlkYXRlZCwKQEAgLTE5NjgsNyArMTk2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCkBAIC0xOTk0LDcgKzE5OTQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFs
VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2
ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFt
ZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdh
Y3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRh
Jik7CkBAIC0yMDE3LDEzICsyMDE3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95
TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJv
eHkmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAg
ICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFt
ZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0Rl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0yMDc4LDcgKzIwNzgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAgICAgYm9v
bCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpOworICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6
Q29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJik7CiAgICAgdm9pZCBwcmludEZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4
cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVv
dGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFEZWxheWVkUmVwbHkmJik7CkBAIC0yMTc1
LDcgKzIxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEJhY2svRm9yd2FyZCBsaXN0IG1hbmFnZW1l
bnQKICAgICB2b2lkIGJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUm
Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyYpPiYmKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7CisgICAgdm9pZCBiYWNrRm9yd2FyZEl0
ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7CiAgICAgdm9p
ZCBiYWNrRm9yd2FyZExpc3RDb3VudHMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRMaXN0Q291bnRzRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRDbGVhcigp
OwogCkBAIC0yMjY0LDcgKzIyNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3RyaW5n
Rm9yRmluZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCi0gICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4mKTsKKyAgICB2
b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOwogCkBAIC0yMzA0LDggKzIzMDQsOCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKIAogICAgIHZvaWQgY291bGROb3RSZXN0b3Jl
UGFnZVN0YXRlKCk7Ci0gICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBz
Y3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0
c09uU2F2ZSwgZG91YmxlIHNjYWxlKTsKLSAgICB2b2lkIHJlc3RvcmVQYWdlQ2VudGVyQW5kU2Nh
bGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4sIGRvdWJsZSBzY2FsZSk7CisgICAgdm9p
ZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Ny
b2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUg
c2NhbGUpOworICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBkb3VibGUgc2NhbGUpOwogCiAgICAgdm9pZCBkaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgZ2VvbWV0cmll
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBib29s
IG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZyk7CiAKQEAgLTI0NzcsNyArMjQ3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwogICAgICAgICAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0g
ICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRl
ZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4pOworICAgIGJvb2wgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFu
ZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogI2VuZGlmCiAKICAgICBzdGF0aWMg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5k
Ym94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmKTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6SW5wdXRNb2RlPiBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2U7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpJbnB1dE1vZGU+IG1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZTsKICAg
ICBUcmFuc2FjdGlvbklEIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklkQWZ0ZXJEaWRDb21t
aXRMb2FkOwogICAgIGludDMyX3QgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKICAgICBib29s
IG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgeyBmYWxzZSB9OwpAQCAtMjYyOCw3ICsy
NjI4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5PiBtX29wZW5pbmdBcHBMaW5rQWN0aXZpdHk7CiAjZW5kaWYKICAg
ICBib29sIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBtX2NwdUxpbWl0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2Nw
dUxpbWl0OwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0Owog
ICAgICAgICAKICAgICBib29sIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24geyBmYWxzZSB9
OwpAQCAtMjY1Miw3ICsyNjUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9wbHVnaW5TY2Fs
ZUZhY3RvciB7IDEgfTsKICAgICBkb3VibGUgbV92aWV3U2NhbGVGYWN0b3IgeyAxIH07CiAgICAg
ZmxvYXQgbV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvciB7IDEgfTsKLSAgICBPcHRpb25hbDxm
bG9hdD4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBtX2N1c3RvbURldmljZVNjYWxlRmFjdG9yOwogICAgIGZsb2F0IG1fdG9wQ29udGVudEluc2V0
IHsgMCB9OwogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBMYXll
ckhvc3RpbmdNb2RlOjpJblByb2Nlc3MgfTsKQEAgLTI2NjcsNyArMjY2Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9maXhlZExheW91dFNpemU7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiBtX3ZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV92aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29sIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFs
U2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xs
ZXIgeyBmYWxzZSB9OwpAQCAtMjcwNiw3ICsyNzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJXaGVlbEV2ZW50Q29hbGVzY2VyPiBtX3doZWVsRXZlbnRDb2FsZXNjZXI7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRD4gbV9kaXNwbGF5SUQ7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRD4gbV9kaXNwbGF5
SUQ7CiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQogICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5
IG1fd2hlZWxFdmVudEFjdGl2aXR5SHlzdGVyZXNpczsKICNlbmRpZgpAQCAtMjc3NSw3ICsyNzc1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5k
Q29sb3I7CiAKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VD
b3VudCB7IDAgfTsKIApAQCAtMjc4NCw3ICsyNzg0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJhZyBkZXN0aW5hdGlvbiBkZXRhaWxzIGFy
ZSBkZWxpdmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLAogICAgIC8vIHNvIHdlIHBy
ZXNlcnZlIHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBuZXh0IGRyYWdnaW5nIGRlbGVnYXRlIGNh
bGwgaXMgbWFkZS4KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX2N1cnJl
bnREcmFnT3BlcmF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0
aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsgZmFs
c2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCB7IDAgfTsKQEAgLTI4MzYsNyArMjgzNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX21pbmltdW1TaXplRm9yQXV0b0xheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpJbnRTaXplPiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHM7CiAKICAgICAvLyBWaXN1YWwgdmlld3BvcnRzCiAgICAgV2ViQ29yZTo6TGF5b3V0U2l6ZSBt
X2Jhc2VMYXlvdXRWaWV3cG9ydFNpemU7CkBAIC0yODcxLDcgKzI4NzEsNyBAQCBwcml2YXRlOgog
ICAgIFZpc2libGVXZWJQYWdlVG9rZW4gbV92aXNpYmxlUGFnZVRva2VuOwogICAgICAgICAKICAg
ICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
eyBXZWJDb3JlOjpEb05vdFBpbiB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwog
CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fY3VycmVudEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApAQCAtMjkwMyw3ICsyOTAz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV92aWV3cG9ydENvbmZpZ3Vy
YXRpb25WaWV3TGF5b3V0U2l6ZTsKICAgICBkb3VibGUgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25M
YXlvdXRTaXplU2NhbGVGYWN0b3IgeyAxIH07CiAgICAgZG91YmxlIG1fdmlld3BvcnRDb25maWd1
cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoIHsgMCB9OwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gbV9vdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
MjkxMyw3ICsyOTEzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGFzdE9ic2VydmVkU3RhdGVX
YXNCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0OwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICBib29sIG1faXNQb2ludGVyTG9ja1BlbmRpbmcgeyBmYWxzZSB9OwpAQCAtMjkzOCw5ICsyOTM4
LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFnZURlYnVnZ2FibGU+IG1f
aW5zcGVjdG9yRGVidWdnYWJsZTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8U3BlbGxEb2N1bWVu
dFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOworICAgIHN0ZDo6b3B0aW9uYWw8U3BlbGxEb2N1bWVu
dFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOwogCi0gICAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4g
bV9wYWdlTG9hZFN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdl
TG9hZFN0YXJ0OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ByZXZpb3VzbHlWaXNpdGVkUGF0aHM7
CiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJveHk+IG1fcmVzZXRSZWNlbnRDcmFzaENv
dW50VGltZXI7CkBAIC0yOTc3LDcgKzI5NzcsNyBAQCBwcml2YXRlOgogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nUGF1c2VkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhh
bmRsZXI7CiAgICAgfTsKLSAgICBPcHRpb25hbDxTcGVlY2hTeW50aGVzaXNEYXRhPiBtX3NwZWVj
aFN5bnRoZXNpc0RhdGE7CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hTeW50aGVzaXNEYXRhPiBt
X3NwZWVjaFN5bnRoZXNpc0RhdGE7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPiBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI7CkBAIC0zMDEyLDggKzMwMTIsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
ICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFs
c2UgfTsKICNlbmRpZgpAQCAtMzAyOCw3ICszMDI4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjM0MmMwZTY5NjRl
MWMxZmEzYjMzYjU2OTg3NWEyMjIwNDkwOTVkYS4uOWIwNGFhMzMxYmIwN2JhYjYyOGNmYjFjNTJl
Nzg5MGM5NDA4ZGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVy
ZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVy
cykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMp
IFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZSgpCiAgICAgUnVuSmF2
YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNo
cm9ub3VzCkBAIC00NCw3ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U2V0U3RhdHVzVGV4dChTdHJpbmcgc3RhdHVzVGV4dCkKICAgICBTZXRGb2N1cyhib29sIGZvY3Vz
ZWQpCiAgICAgVGFrZUZvY3VzKHVpbnQ4X3QgZGlyZWN0aW9uKQotICAgIEZvY3VzZWRGcmFtZUNo
YW5nZWQoT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKQorICAgIEZv
Y3VzZWRGcmFtZUNoYW5nZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQpCiAgICAgU2V0UmVuZGVyVHJlZVNpemUodWludDY0X3QgdHJlZVNpemUpCiAgICAg
U2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKQogICAgIEdldFRv
b2xiYXJzQXJlVmlzaWJsZSgpIC0+IChib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkgU3luY2hyb25v
dXMKQEAgLTY5LDcgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBQYWdl
RGlkU2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAgIFJ1bk9wZW5Q
YW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBmcmFtZUluZm8sIHN0cnVjdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
IHBhcmFtZXRlcnMpCiAgICAgU2hvd1NoYXJlU2hlZXQoc3RydWN0IFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhKSAtPiAoYm9vbCBncmFudGVkKSBBc3luYwotICAgIFNo
b3dDb250YWN0UGlja2VyKHN0cnVjdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhIHJlcXVl
c3REYXRhKSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4gaW5mbykg
QXN5bmMKKyAgICBTaG93Q29udGFjdFBpY2tlcihzdHJ1Y3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YSkgLT4gKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNv
bnRhY3RJbmZvPj4gaW5mbykgQXN5bmMKICAgICBQcmludEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTdHJpbmcgdGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBwZGZGaXJz
dFBhZ2VTaXplKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIFJ1bk1vZGFsKCkKICAgICBOb3RpZnlT
Y3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsZXJUaHVt
YikKQEAgLTEwOCw4ICsxMDgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAg
IyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEs
IHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGlj
eURlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVj
aXNpb24gUG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogCkBAIC0xMzMsNyArMTMzLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIGVudW06Ym9vbCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51
ZUxvYWRpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNb3VzZUV2
ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAg
ICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgU2V0SW5wdXRNZXRo
b2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+IHN0YXRlKTsKKyAgICBT
ZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRl
PiBzdGF0ZSk7CiAjZW5kaWYKIAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKICAgICBCYWNr
Rm9yd2FyZEFkZEl0ZW0oc3RydWN0IFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0
ZW1TdGF0ZSkKICAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCi0gICAgQmFja0ZvcndhcmRJdGVtQXRJ
bmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkgU3luY2hyb25vdXMKKyAgICBCYWNrRm9yd2FyZEl0ZW1B
dEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQpIFN5bmNocm9ub3VzCiAgICAgQmFja0Zvcndh
cmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRDbGVhcigpCiAgICAgV2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpCkBAIC0zMDQsNyArMzA0LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNz
YWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24s
IGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0
aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJl
Y3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhv
ZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0
IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMzIzLDcgKzMyMyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkSGFuZGxlRHJhZ1N0YXJ0UmVx
dWVzdChib29sIHN0YXJ0ZWQpCiAgICAgRGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVl
c3QoYm9vbCBhZGRlZCkKICAgICBXaWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQotICAgIERp
ZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPiB0ZXh0SW5kaWNhdG9yKQorICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3IpCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzkwLDggKzM5MCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvdWxkTm90
UmVzdG9yZVBhZ2VTdGF0ZSgpCi0gICAgUmVzdG9yZVBhZ2VTdGF0ZShPcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxP
cmlnaW4sIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gb2JzY3VyZWRJbnNldHNPblNhdmUsIGRv
dWJsZSBzY2FsZSkKLSAgICBSZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+IHVub2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKKyAgICBSZXN0
b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9z
aXRpb24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luLCBXZWJDb3JlOjpSZWN0RWRn
ZXM8ZmxvYXQ+IG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpCisgICAgUmVzdG9y
ZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHVu
b2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKICAgICBEaWRHZXRUYXBIaWdobGlnaHRHZW9t
ZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+IGdlb21ldHJpZXMsIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJh
ZGl1cywgV2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBi
b3R0b21MZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzLCBib29s
IG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZykKIAogICAgIEVsZW1lbnREaWRGb2N1cyhzdHJ1
Y3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uIGluZm9ybWF0aW9uLCBib29sIHVz
ZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKLSAgICBTaG93UERGQ29u
dGV4dE1lbnUoc3RydWN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUgY29udGV4dE1lbnUsIFdlYktp
dDo6UERGUGx1Z2luSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8aW50MzJfdD4g
c2VsZWN0ZWRJdGVtKSBTeW5jaHJvbm91cworICAgIFNob3dQREZDb250ZXh0TWVudShzdHJ1Y3Qg
V2ViS2l0OjpQREZDb250ZXh0TWVudSBjb250ZXh0TWVudSwgV2ViS2l0OjpQREZQbHVnaW5JZGVu
dGlmaWVyIGlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IHNlbGVjdGVkSXRl
bSkgU3luY2hyb25vdXMKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRl
eCA0YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAzMWQ5NTA2MWY5MGNjLi4xNjg2MTc0ZGMwODM4
ODBlMGI2NTU5NjI2NDY2YWEyNTMyOGE1ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTgwLDYyICs4MCw2MiBAQCBXZWJQcm9jZXNz
UHJveHkqIFdlYlBhc3RlYm9hcmRQcm94eTo6d2ViUHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3RpbwogI2lmICFQTEFURk9STShDT0NPQSkKIAogI2lmICFQTEFURk9STShHVEsp
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwg
Y29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
JiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
SVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIH0KIAogI2lmICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVf
dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIH0KIAogI2VuZGlmIC8vICFVU0UoTElCV1BFKQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdT
YWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpj
b250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAppbmRleCAyNTEyNGIyZmE3NzdlYzBkYjEwZjZlMWIxM2VlNGIyMGFhOGY1ZDEy
Li5iOTNmZGM3NjBlNjQ0ZDBmZWIxNWI1OWVhMjNjMTgxYzU4ZWE1ZjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtODQsNDIgKzg0LDQyIEBA
IHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwotICAgIHZvaWQgd3JpdGVXZWJDb250ZW50
VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+KTsKLSAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBD
OjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsK
LSAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik7Ci0gICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsK
KyAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2
b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3JpdGVTdHJpbmdU
b1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXROdW1iZXJP
ZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0
cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZENoYW5nZUNvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYp
PiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGFk
ZFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+
JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZENvbG9y
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBz
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXROdW1iZXJP
ZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAg
dm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
Jik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50KElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb2xvciYmKT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGFkZFBhc3RlYm9hcmRU
eXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Cisg
ICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZENv
bG9yKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYp
OworICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CiAj
ZW5kaWYKIAotICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlv
biYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwotICAg
IHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYpPiYmKTsKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24m
LCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4m
Jik7CisgICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7CisgICAgdm9p
ZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYpOwogCi0gICAgdm9pZCB3
cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2
NF90KT4mJik7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zU3RyaW5nU2Fm
ZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRhaW5z
VVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCB1cmxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKKyAgICB2b2lkIHdyaXRlQ3Vz
dG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRf
dCk+JiYpOworICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIGNvbnRhaW5zU3RyaW5n
U2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgdXJs
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGdldFR5cGVzKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE1vZGlmeUNvbnRl
bnRzT2ZQYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgcHJldmlvdXNDaGFuZ2VDb3VudCwgaW50NjRfdCBuZXdDaGFuZ2VDb3Vu
dCk7CiAKICAgICBlbnVtIGNsYXNzIFBhc3RlYm9hcmRBY2Nlc3NUeXBlIDogdWludDhfdCB7IFR5
cGVzLCBUeXBlc0FuZERhdGEgfTsKLSAgICBPcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4g
YWNjZXNzVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRBY2Nlc3NUeXBlPiBhY2Nlc3NU
eXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIGNvbnN0
OwogICAgIHZvaWQgZ3JhbnRBY2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgUGFzdGVib2FyZEFjY2Vzc1R5cGUpOwogCi0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RGF0YU93bmVyVHlwZT4gZGV0ZXJtaW5lRGF0YU93bmVyKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgUGFzdGVib2FyZEFjY2Vzc0ludGVudCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpEYXRhT3duZXJUeXBlPiBkZXRlcm1pbmVEYXRhT3duZXIoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQpIGNvbnN0OwogI2VuZGlm
CiAKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IG1fd2ViUHJvY2Vzc1Byb3h5U2V0
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBncmFudEFjY2Vz
cyhXZWJQcm9jZXNzUHJveHkmLCBQYXN0ZWJvYXJkQWNjZXNzVHlwZSk7CiAgICAgICAgIHZvaWQg
cmV2b2tlQWNjZXNzKFdlYlByb2Nlc3NQcm94eSYpOwotICAgICAgICBPcHRpb25hbDxQYXN0ZWJv
YXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShXZWJQcm9jZXNzUHJveHkmKSBjb25zdDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShXZWJQcm9j
ZXNzUHJveHkmKSBjb25zdDsKICAgICB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBQYXN0ZWJvYXJk
QWNjZXNzSW5mb3JtYXRpb24+IG1fcGFzdGVib2FyZE5hbWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDdiMzdjMGVlZTEwOTQ1ZjYzNWMzYjI1ZWM1MWQz
M2IzNWIxNGYzMi4uMmY4NjdlMTAyMTUwMmFkMjk3ZTc2NTliMzdhMjQ2MTg2OTgwYmYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjIsNDIgKzIyLDQyIEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9h
cmRQcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdy
aXRlVVJMVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3Ry
dWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHND
b25uZWN0aW9uCi0gICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0
ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorICAgIFdyaXRlVVJM
VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1
Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdh
bnRzQ29ubmVjdGlvbgorICAgIFdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCisgICAgVXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkKICNlbmRpZgogCi0gICAgV3JpdGVDdXN0b21EYXRhKFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4gZGF0YSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0g
ICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgotICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShTdHJpbmcgdHlwZSwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRl
Q3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgb3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgSW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mbykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJv
bm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcg
c3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5n
IHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9y
VHlwZShTdHJpbmcgdHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9h
cmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBu
dW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJv
YXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVzLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBh
c3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoV2ViQ29yZTo6Q29sb3IgY29sb3IpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAg
IEdldFBhc3RlYm9hcmRVUkwoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCi0gICAgQWRkUGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2Vi
Q29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNo
YW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJk
Q29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpDb2xvciBjb2xvciwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291
bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgc3RyaW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VD
b3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29udGFpbnNVUkxTdHJpbmdT
dWl0YWJsZUZvckxvYWRpbmcoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIFVSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+
IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZp
bGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMgV2FudHND
b25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1lcywgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyBzdHJpbmcpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlw
ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4g
c3RyaW5ncykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2
NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0
ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkg
LT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEFk
ZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBh
c3RlYm9hcmRUeXBlcywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
CisgICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0
cmluZz4gcGFzdGVib2FyZFR5cGVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkg
U3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZENvbG9yKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3IgY29sb3IsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgc3Ry
aW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChp
bnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hh
bmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbnRhaW5zVVJMU3Ry
aW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFVSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMgV2Fu
dHNDb25uZWN0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiNTI0YzI0ZDE4OWE1ZDA3M2M2ZTMw
OWY1YTEyOWI2NjAxODEzMzY5Li5jMTMzMGU3NDM3ZWY5MzJiNmQ1MzJhMDFiNDU0NTZkNjEwMzY4
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
MTU5LDcgKzExNTksNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQo
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogewogICAgIGF1dG8mIGRv
d25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5p
dGlhdGluZ1BhZ2UsIHsgfSk7CiAKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewog
ICAgICAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJv
eHkpOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZmYjIyNzRmZTk4MGY0MWM0OWE2MTQ4NDc3ZTc2ZjUy
ODYwMmM1ODQuLjg0N2VlMDJkMjc1ZjIxNWE4NzNlZTVjMjU0YjQ5MzFlZmNiNmJkNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM4LDcgKzIzOCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9pZCBzdGFydERpc3BsYXlMaW5rKElQQzo6
Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCk7CiAgICAgdm9pZCBzdG9wRGlzcGxheUxp
bmsoSVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxpbmtPYnNlcnZlcklELCBXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9pZCBzZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZChJUEM6OkNvbm5lY3Rpb24mLCBEaXNwbGF5TGlua09ic2VydmVySUQsIFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpOwpAQCAtNDk4LDcg
KzQ5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCkgeyByZXR1cm4gc191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOyB9
CiAKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKLSAgICB2b2lkIG5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSk7CisgICAgdm9pZCBub3RpZnlQcmVm
ZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFBMQVlTVEFUSU9OKQpAQCAtNjA2LDcgKzYwNiw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKTsKICAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJBZ2VudDsKLSAgICBP
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzOwogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAKQEAgLTc3MCw3
ICs3NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2Vy
dGlvbj4gZ3B1UHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb247CiAjZW5kaWYKICAgICB9Owot
ICAgIE9wdGlvbmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5
OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlh
QWN0aXZpdHk7CiAKICNpZiBQTEFURk9STShQTEFZU1RBVElPTikKICAgICBpbnQzMl90IG1fdXNl
cklkIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGQ2YmIzMzczN2JiZjk5ZGM3NDNhNzc3NzZmMzUxMDhmMzllNmM2ZWEuLjQ0NzIxNmI1
YzlmYTQyODY2MGYwMzBkN2E5NTk5YTJlMmM3OGZjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiBpdGVtCiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8UGx1Z2luSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8UGx1Z2luSW5mbz4m
JiBhcHBsaWNhdGlvblBsdWdpbnMsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQ
bHVnaW5JZGVudGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2lucyhib29sIHJlZnJl
c2gsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFBsdWdpbkluZm8+JiYgcGx1Z2lucywg
VmVjdG9yPFBsdWdpbkluZm8+JiYgYXBwbGljYXRpb25QbHVnaW5zLCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVn
aW5JZGVudGlmaWVycyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlZnJlc2gp
CiAgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBsdWdpbkluZm9TdG9yZSgpLnJlZnJlc2goKTsKQEAg
LTE5MzYsNyArMTkzNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdv
cmtlcnMoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29u
dGVudFJ1bGVMaXN0c0Zyb21JZGVudGlmaWVyKGNvbnN0IE9wdGlvbmFsPFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI+JiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQorc3Rh
dGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzRnJvbUlkZW50aWZpZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiYgdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcikKIHsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IGUyNTM4NzY2MWI0NjM2OTBhYjQ4OGFhZThkYTM2NDkwYTlj
OWZhNTMuLjU1YzU4YzQzY2E3YTk2YTdjOTM2ODE2MTZlMzgyODY2MGIxMDZmN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00NTUsNyArNDU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFBsdWdpbnMKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICB2b2lkIGdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYmIHBsdWdpbnMsIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYmIGFwcGxpY2F0aW9uUGx1Z2lucywgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYmKT4mJik7CisgICAgdm9pZCBnZXRQbHVn
aW5zKGJvb2wgcmVmcmVzaCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mJiBhcHBs
aWNhdGlvblBsdWdpbnMsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiYmKT4mJik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5
JiYpOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywg
dWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwOwogCi0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW47CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAg
ICBib29sIG1faXNJblByb2Nlc3NDYWNoZSB7IGZhbHNlIH07CiAKICAgICBlbnVtIGNsYXNzIE5v
T3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25zaXZlOwpAQCAtNjI0LDcgKzYyNCw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9oYXNNYW5hZ2VkU2Vzc2lv
blNhbmRib3hBY2Nlc3MgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgT3B0aW9uYWw8VXNlTGF6eVN0
b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkOworICAgIHN0
ZDo6b3B0aW9uYWw8VXNlTGF6eVN0b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVy
V2hlbkxhdW5jaGVkOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2JhY2tncm91bmRBY3Rp
dml0eUZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CkBAIC02NDIsNyArNjQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5Owog
ICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IGNsaWVudFByb2Nlc3NlczsKICAg
ICB9OwotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpT
bGVlcERpc2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlz
YWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwogCkBAIC02NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgVW5pcXVlUmVmPFByb2Nlc3NBc3NlcnRpb24+IGFzc2VydGlvbjsKICAgICAgICAg
V2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFUb2tlbiB0b2tlbjsKICAgICB9OwotICAgIE9wdGlv
bmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5OworICAgIHN0
ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7
CiAKICAgICBTaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50ZXIgbV9zaHV0ZG93blByZXZlbnRp
bmdTY29wZUNvdW50ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYTY0MjNjYWI1OWJlMDAzYzI2ZDg4YTlmYjg1
ODRkNTdmNGFjNTkxLi4wY2FmNjExNjQzOGZlZDUxOGQ1Y2JkZjdiZDk2MjhjNThjODY1YzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMyw3ICszMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAKICAgICAjIFBsdWdpbiBtZXNzYWdlcy4KICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
YXBwbGljYXRpb25QbHVnaW5zLCBzdHJ1Y3QgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycykgU3luY2hy
b25vdXMKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gYXBwbGljYXRp
b25QbHVnaW5zLCBzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKSBTeW5jaHJvbm91
cwogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICBHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBiMzk3OGYyNGU0YWI5NDY5ODI0NTc0OGQxYTdi
Y2FmNWM2MWNjZTNjLi4wNGM4NWViZGQyMzM1NGM3NDViOTZmZDZkMTM0YmI4NmNkM2ZhYjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC01NDgsNyArNTQ4LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFMKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNpdGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9t
YWluc0lmSW5pdGlhbGl6ZWQoKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zSWZJbml0aWFs
aXplZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoIWhhc0lu
aXRpYWxpemVkQXBwQm91bmREb21haW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKaW5kZXggYzM1MjYxMmZmYzk5
ZTQwOWI1MzUzZThkOWViZWRlYzdjMTA3OWQ1MC4uZjdhMDkzM2FkY2IyOTU1NWIzMDUxMDczZTcz
MWFkNDBkMWY3YmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgICAgIHVpbnQ2NF90IHRvdGFsU2l6ZTsKICAgICAgICAg
SGFzaE1hcDx1bnNpZ25lZCwgdWludDY0X3Q+IHR5cGVTaXplczsKICAgICB9OwotICAgIE9wdGlv
bmFsPFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxTaXplPiBzaXplOwogCiAgICAgSGFz
aFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGNvb2tpZUhvc3ROYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAwMzRiY2E1NDI5OTE1NTdm
ZDc2MGFiYTIwNTJjODY3ODI1YWU2ZjVkLi4xN2FhZDA1N2EzNDE0ZmI5ODQ1ZTk5MmEzYTcyMDUx
MmJiOGI2MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zOTAsNyArMzkwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgpOwogCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQotICAgIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3Vu
ZERvbWFpbnNJZkluaXRpYWxpemVkKCk7CiAgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBzdGQ6
OmF0b21pYzxib29sPiBpc0FwcEJvdW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQgPSBmYWxzZTsKICAg
ICBzdGF0aWMgdm9pZCBmb3J3YXJkQXBwQm91bmREb21haW5zVG9JVFBJZkluaXRpYWxpemVkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNG
b3JJVFAoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPiBtX3NvQXV0aG9yaXphdGlvbkNv
b3JkaW5hdG9yOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRl
ZC4KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IDFiNTdkNmI3MTE2
MzEwNzJlNjUxMTRkOGQxYTQ1NDFlMTZkNDExZDYuLmY3YzY4M2ZmNzE2M2ZhMjYzOTgyMDA3ZmIw
ZjA2MjZlYWRiMmRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2Vic2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlU3BhY2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVPcmlnaW4sIHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lT3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5k
ZXggMzFkMjkwOTE5ODVmMzRhNjUxMzRhMmIwZTdjYjNhY2UxZGFlNDQxZC4uYjVlNDhlNmM2MWE4
YTNmNGI0MGI4NDExMmM0MDEwMTAxYzRkNWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIo
KTsKICAgICB+R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKIAotICAgIHVzaW5nIFVwZGF0
ZU5vdGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YSYmLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJvcik+OworICAgIHVzaW5nIFVwZGF0ZU5v
dGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YSYmLCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IGVycm9yKT47CiAgICAgdm9pZCBzdGFydChV
cGRhdGVOb3RpZnlGdW5jdGlvbiYmKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlHTGliLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHlHTGliLmNwcAppbmRleCA2NWU1YjdlNWFiNzYzNTAzYjJlN2FhMDU4YWMzNjBh
OWZlZmEwZGVjLi4wMDNiMDIxNTYwY2IyMmE2ZDlhZDg5MDJmZmFhZWFiNTNkYTkxODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eUdMaWIuY3BwCkBAIC0y
OSw3ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwbGF0Zm9ybVZhbGlkYXRlVXNlck1lZGlhUmVx
dWVzdENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OlZhbGlkQ29uc3RyYWlu
dHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpJbnZh
bGlkQ29uc3RyYWludHNIYW5kbGVyJiYgaW52YWxpZEhhbmRsZXIsIFN0cmluZyYmIGRldmljZUlE
SGFzaFNhbHQpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlZhbGlkYXRlVXNl
ck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzKG1fY3VycmVudFVzZXJNZWRpYVJlcXVlc3QtPnVzZXJS
ZXF1ZXN0KCksIGRldmljZUlESGFzaFNhbHQpLCBbdmFsaWRIYW5kbGVyID0gV1RGTW92ZSh2YWxp
ZEhhbmRsZXIpLCBpbnZhbGlkSGFuZGxlciA9IFdURk1vdmUoaW52YWxpZEhhbmRsZXIpXShzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlPiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2
aWRlb0RldmljZXMsIE9wdGlvbmFsPFN0cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBt
dXRhYmxlIHsKKyAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6VmFsaWRhdGVVc2VyTWVk
aWFSZXF1ZXN0Q29uc3RyYWludHMobV9jdXJyZW50VXNlck1lZGlhUmVxdWVzdC0+dXNlclJlcXVl
c3QoKSwgZGV2aWNlSURIYXNoU2FsdCksIFt2YWxpZEhhbmRsZXIgPSBXVEZNb3ZlKHZhbGlkSGFu
ZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RGTW92ZShpbnZhbGlkSGFuZGxlcildKHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBpbnZhbGlkQ29uc3RyYWludCwgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVE
ZXZpY2U+IGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IHZpZGVv
RGV2aWNlcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChpbnZhbGlkQ29uc3RyYWludCkKICAgICAgICAgICAgIGlu
dmFsaWRIYW5kbGVyKCppbnZhbGlkQ29uc3RyYWludCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMDdmZTI5NjhjOTY2YzUyMzhiMjExNTQ2YTZkMWNlMGU4
NTg4NDE3Yy4uODE3MWVmNjJjYzc3YzBiMTEyZmRlNjFjOTM2Y2YzYjBkZmQ3YTVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZW51bSBjbGFzcyBXYXlsYW5kSW1wbCB7
IFVuc3VwcG9ydGVkLCBFR0wsIFNITSB9Owotc3RhdGljIE9wdGlvbmFsPFdheWxhbmRJbXBsPiBz
X3dheWxhbmRJbXBsOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2F5bGFuZEltcGw+IHNfd2F5bGFu
ZEltcGw7CiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQogc3RhdGljIGJvb2wgaXNFR0xJbWFnZUF2
YWlsYWJsZShib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAppbmRl
eCA2MGJhMDcyNmNkZjVkNWU0NmU5ZWE5NDhiMGUyZjFlNDBhNzRmYzEzLi5iZDI0OGY4NzQzODBh
M2FmYmEzZjY3YmE4NTBkOWYyYzgxNTQ3MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTUz
LDEwICs1MywxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE9wdGlvbmFsPGlu
dD4gc19kYW1hZ2VFdmVudEJhc2U7Ci1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUVycm9y
QmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CitzdGF0
aWMgc3RkOjpvcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXJyb3JCYXNlOwogI2lmIFVTRShHTFgpCi1z
dGF0aWMgT3B0aW9uYWw8aW50PiBzX2dseEVycm9yQmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PGludD4gc19nbHhFcnJvckJhc2U7CiAjZW5kaWYKIAogY2xhc3MgWERhbWFnZU5vdGlmaWVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRlVGltZVBpY2tl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJH
dGsuY3BwCmluZGV4IDQzYTkwNDU3NzgzNjJiNDRmZTQ3MWI1NGQ0MzhjNjJlYjhiY2M4MTQuLjJh
YzE1YzlkN2YxZjE5OTQ3YjQ0OTc5NDg2MjU1NWU5MTNlMjExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRlVGltZVBpY2tlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlja2VyR3RrLmNwcApAQCAtOTEs
NyArOTEsNyBAQCBzdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmluZyhjb25zdCBXZWJDb3JlOjpEYXRl
Q29tcG9uZW50cyYgdGltZSwgV2ViQ29yZTo6U2Vjb25kRgogICAgIHJldHVybiB7IH07CiB9CiAK
LXN0YXRpYyBTdHJpbmcgY2FsZW5kYXJEYXRlVG9TdHJpbmcoaW50IHllYXIsIGludCBtb250aCwg
aW50IGRheSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM+JiBkYXRlLCBX
ZWJDb3JlOjpTZWNvbmRGb3JtYXQgc2Vjb25kRm9ybWF0KQorc3RhdGljIFN0cmluZyBjYWxlbmRh
ckRhdGVUb1N0cmluZyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkRhdGVDb21wb25lbnRzPiYgZGF0ZSwgV2ViQ29yZTo6U2Vjb25kRm9y
bWF0IHNlY29uZEZvcm1hdCkKIHsKICAgICBhdXRvIHR5cGUgPSBkYXRlID8gZGF0ZS0+dHlwZSgp
IDogV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHNUeXBlOjpEYXRlOwogICAgIHN3aXRjaCAodHlwZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlj
a2VyR3RrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJH
dGsuaAppbmRleCBmN2VhMGQyZTRmZjdjODVjYTk0Y2YyZjQ3ZTc0NTBmZTQ2NzViZTQzLi40Zjcz
Nzk2ZTE3NDkwZmVkZmYxY2NlZTNkMjc5OTcxNDNkODRhMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuaApAQCAtNTEsNyArNTEs
NyBAQCBwcml2YXRlOgogCiAgICAgR3RrV2lkZ2V0KiBtX3BvcG92ZXIgeyBudWxscHRyIH07CiAg
ICAgR3RrV2lkZ2V0KiBtX2NhbGVuZGFyIHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRhdGVDb21wb25lbnRzPiBtX2N1cnJlbnREYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RGF0ZUNvbXBvbmVudHM+IG1fY3VycmVudERhdGU7CiAgICAgV2ViQ29yZTo6U2Vjb25k
Rm9ybWF0IG1fc2Vjb25kRm9ybWF0IHsgV2ViQ29yZTo6U2Vjb25kRm9ybWF0OjpOb25lIH07CiAg
ICAgYm9vbCBtX2luVXBkYXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IGVhOTE2YTdkMThiNTJjZmNmYzI3
OWNhYWQxOTViYTY5YWNmMTgxMjEuLjVjMGVlZjI3NzZlODNmYjZkMWViMjNkNmU2MzY1ZmZjMDg0
MzAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0
b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYsIGNvbnN0IEVkaXRvclN0YXRlJiBuCiAgICAgcGFn
ZUNsaWVudCgpLnNlbGVjdGlvbkRpZENoYW5nZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQor
dm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1
dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRN
ZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0
YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFz
dGVib2FyZFByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0
ZWJvYXJkUHJveHlHdGsuY3BwCmluZGV4IDY3ZGNhNDcyMzc0YWYwODMyYWNiNWQwODkzNGY3YjM4
ZWU1OTFiN2MuLjJmMWMzYjVlNzEyMmMzNmViMmFhMGVlZDUwNDFjZTg0NzI2MzMyOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlH
dGsuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpkaWREZXN0
cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgICAgIG1fcHJpbWFyeVNlbGVjdGlv
bk93bmVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9y
RE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGNsaXBib2FyZCA9IENsaXBib2FyZDo6
Z2V0KHBhc3RlYm9hcmROYW1lKTsKICAgICBjbGlwYm9hcmQucmVhZEJ1ZmZlcihQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3JpZ2luLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
JiBidWZmZXIpIG11dGFibGUgewpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3Rv
bURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRh
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkgfHwgZGF0YS5zaXplKCkgPiAx
KSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBjdXN0b20gaXRl
bSBpbiB0aGUgY2xpcGJvYXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKaW5kZXggNGEzZGEyZDU2YzUzMzZjM2Y0ODA1MTQ5
M2ZlMTNkYmQxMzRkMjA3Mi4uNmRhNjIyMTc3OWY3MDZmNjllZmZiNmM0ZTFjOTFmYTEzYWE0MjNi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51
UHJveHlHdGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6
OnNlbGVjdEl0ZW0odW5zaWduZWQgaXRlbUluZGV4KQogICAgIG1fc2VsZWN0ZWRJdGVtID0gaXRl
bUluZGV4OwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0
aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFj
dGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRo
aXMsIGl0ZW1JbmRleC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9vcigtMSkpKTsKQEAg
LTQyOCw3ICs0MjgsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjYW5jZWxUcmFja2lu
ZygpCiAgICAgaGlkZVBvcHVwTWVudSgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gV2ViUG9w
dXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQz
Ml90IHRpbWUpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQb3B1cE1lbnVQcm94eUd0azo6
dHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGltZSkKIHsKICAg
ICBndW5pY2hhciBrZXljaGFyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGtleXZhbCk7CiAgICAg
aWYgKCFnX3VuaWNoYXJfaXNwcmludChrZXljaGFyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmgKaW5kZXggOTYzNTZkOGM5ZGZmOTBk
YzZiY2M5NzdiMDgzZjc2ZmIzNjJhM2Q3OS4uMzk2ZjM3M2NkNzU3NjFhMmEyYjMzNTIzNGUzNzhl
ZmIyNjcxNjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBv
cHVwTWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBv
cHVwTWVudVByb3h5R3RrLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2Fu
Y2VsVHJhY2tpbmcoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RJdGVtKHVu
c2lnbmVkIGl0ZW1JbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGFjdGl2YXRlSXRlbShPcHRpb25h
bDx1bnNpZ25lZD4gaXRlbUluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZhdGVJdGVtKHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCk7CiAKICAgICBib29sIGhhbmRsZUtleVBy
ZXNzKHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGltZXN0YW1wKTsKICAgICB2b2lkIGFjdGl2
YXRlU2VsZWN0ZWRJdGVtKCk7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVQb3B1cE1lbnUoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQzMl90IHNlbGVj
dGVkSW5kZXgpOwogICAgIHZvaWQgc2hvdygpOwogICAgIGJvb2wgYWN0aXZhdGVJdGVtQXRQYXRo
KEd0a1RyZWVQYXRoKik7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHR5cGVBaGVhZEZpbmRJbmRl
eCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQzMl90IHRpbWVzdGFtcCk7CisgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3Qg
dGltZXN0YW1wKTsKICAgICBib29sIHR5cGVBaGVhZEZpbmQodW5zaWduZWQga2V5dmFsLCB1aW50
MzJfdCB0aW1lc3RhbXApOwogCiAjaWYgIVVTRShHVEs0KQpAQCAtODYsNyArODYsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBWZWN0b3I8R1VuaXF1ZVB0cjxHdGtUcmVlUGF0aD4+IG1fcGF0
aHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0ZWRJdGVtOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0ZWRJdGVtOwogCiAgICAgLy8gVHlwZWFoZWFkIGZpbmQu
CiAgICAgZ3VuaWNoYXIgbV9yZXBlYXRpbmdDaGFyYWN0ZXIgeyAnXDAnIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgK
aW5kZXggNDkyYjAwNDQ0ZjQyZjg4NmZiZjhmYjk3MWZkNDJkZWJkMWZkOWM2YS4uMjI4NzI5Mjky
ZGY5ZTNhYjA1YzU3MDE0YTFiYzQ1NjI3NjNhMDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaApAQCAtNTAsOCAr
NTAsOCBAQCBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAgICBDR1BvaW50IGFkanVzdGVkT3Jp
Z2luIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1JlY3QgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZp
ZXdDb29yZGluYXRlcyB7IENHUmVjdFplcm8gfTsKICAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaW1h
Z2U7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRh
dGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF0aD4gdmlzaWJsZVBhdGg7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5kaWNhdG9yRGF0YTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhdGg+IHZpc2libGVQYXRoOwogICAgIFN0cmluZyBsaW5r
VGl0bGU7CiAgICAgVVJMIGxpbmtVUkw7CiAgICAgYm9vbCBwb3NzaWJseU5lZWRzRHJhZ1ByZXZp
ZXdVcGRhdGUgeyB0cnVlIH07CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcygpOwotICAgIE9w
dGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRl
bSAqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJh
Z1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBjb25zdDsKICAgICBVSVRhcmdldGVkRHJhZ1By
ZXZpZXcgKmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJdGVtICopIGNvbnN0OwogICAgIEJsb2Nr
UHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopPiBkcm9wUHJldmlld1Byb3ZpZGVyKFVJ
RHJhZ0l0ZW0gKik7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIEJsb2NrUHRy
PHZvaWQoKT4gbV9kcmFnQ2FuY2VsU2V0RG93bkJsb2NrOwogICAgIEJsb2NrUHRyPHZvaWQoTlNB
cnJheTxVSURyYWdJdGVtICo+ICopPiBtX2FkZERyYWdJdGVtQ29tcGxldGlvbkJsb2NrOwogCi0g
ICAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBtX3N0YWdlZERyYWdTb3VyY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IG1fc3RhZ2VkRHJhZ1NvdXJjZTsKICAgICBWZWN0
b3I8RHJhZ1NvdXJjZVN0YXRlPiBtX2FjdGl2ZURyYWdTb3VyY2VzOwogICAgIFZlY3RvcjxJdGVt
QW5kUHJldmlld1Byb3ZpZGVyPiBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVyczsKICAgICBW
ZWN0b3I8SXRlbUFuZFByZXZpZXc+IG1fZGVmYXVsdERyb3BQcmV2aWV3czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
CmluZGV4IGY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3Y2RhYTdlZDRkZWZiODguLjc0MDNiMzU2
ZGYyNzQxZjAxOGUzMGVhNTIxYjRlOGFlNzBhMTM5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMTUx
LDcgKzE1MSw3IEBAIHN0YXRpYyBib29sIGNhblVwZGF0ZVByZXZpZXdGb3JBY3RpdmVEcmFnU291
cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFj
dGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHJhZ0l0ZW0gKml0ZW0pIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPERyYWdTb3VyY2VTdGF0ZT4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjphY3RpdmVEcmFn
U291cmNlRm9ySXRlbShVSURyYWdJdGVtICppdGVtKSBjb25zdAogewogICAgIGlmICghW2l0ZW0u
cHJpdmF0ZUxvY2FsQ29udGV4dCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkNjM4OGMwODUwMTc5ZDk2YWEzMGM3Mjc0ZTU5
MGMzZWNlMTVhNTMyLi4yNmI3NDEyNmVmM2M4MDM2ZDE5MzA4YzY3MWFiYTUwODk5YTA5YWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApA
QCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1ha2VWaWV3QmxhbmsoYm9v
bCkgZmluYWw7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9w
dGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25h
cHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29tbWl0UG90
ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7CkBAIC0xNzUsOCArMTc1LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGVmZmVjdGl2ZVVzZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgY291bGROb3RSZXN0b3JlUGFnZVN0YXRlKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmLCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2Fs
ZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50Piwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50
JiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiwgZG91YmxlKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24m
LCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNl
dDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUlucHV0Q29udGV4
dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudCgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEFQSTo6T3BlblBhbmVs
UGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6Q29udGFjdEluZm8+PiYmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGFjdFBp
Y2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
RHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2
b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBi
b29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZp
ZXdwb3J0TWF4aW11bVNjYWxlLCBib29sIG5vZGVJc1Jvb3RMZXZlbCkgb3ZlcnJpZGU7CkBAIC0y
NzMsNyArMjczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFn
SXRlbXNSZXF1ZXN0KGJvb2wgYWRkZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGlt
YWdlKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVF
ZGl0RHJhZ1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZURyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNh
cmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGU0MjhkYWMwYTBiNDJmZmQ2ZDgyYzI5
ZDY3YzM3NzFiNWY2NTE4ZWMuLmJhZGJlZmI2Y2NiNTYzNGFmZWJlOGExMjZiOWE3ODlhNWIyMzdh
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTU2OSw3ICs1NjksNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90
KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdl
Q2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJl
Y3Q+JiYpCiB7CiAgICAgcmV0dXJuIFttX3dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdOwogfQpA
QCAtNjA0LDEyICs2MDQsMTIgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y291bGROb3RSZXN0b3Jl
UGFnZVN0YXRlKCkKICAgICBbbV93ZWJWaWV3IF9jb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGVdOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0b3JlUGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZElu
c2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVzdG9yZVBh
Z2VTdGF0ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKQogewog
ICAgIFttX3dlYlZpZXcgX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246c2Nyb2xsUG9zaXRpb24g
c2Nyb2xsT3JpZ2luOnNjcm9sbE9yaWdpbiBwcmV2aW91c09ic2N1cmVkSW5zZXQ6b2JzY3VyZWRJ
bnNldHNPblNhdmUgc2NhbGU6c2NhbGVdOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0
b3JlUGFnZUNlbnRlckFuZFNjYWxlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRl
ciwgZG91YmxlIHNjYWxlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVzdG9yZVBhZ2VDZW50ZXJB
bmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91Ymxl
IHNjYWxlKQogewogICAgIFttX3dlYlZpZXcgX3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRD
ZW50ZXI6Y2VudGVyIHNjYWxlOnNjYWxlXTsKIH0KQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFBh
Z2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJM
JiBzaGFyZURhdGEsIFdURgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9zaG93Q29udGFjdFBpY2tlcjpyZXF1ZXN0
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiB9CkBA
IC05MjIsNyArOTIyLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6d2lsbFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90KCkKICAgICBbbV9jb250ZW50VmlldyBfd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBz
aG90XTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JE
YXRhPiBkYXRhKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRSZWNlaXZlRWRpdERyYWdTbmFw
c2hvdDpkYXRhXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FjdGlvblNoZWV0QXNzaXN0YW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5oCmluZGV4IDZhODg1Njk1MzFhODNiMWRkNmY3MWUxMDU4MDRh
ZmZkMmY2N2MyNDMuLjQzYTQ3MzQ1OTAzOGY3MjBkOThhZjMwMTFjNDAxZTkyMTMxZjk5MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQuaApAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tF
bGVtZW50QWN0aW9uVHlwZSk7CiAKIEBwcm90b2NvbCBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVs
ZWdhdGUgPE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tIChPcHRpb25hbDxXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQ7CistIChzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0
aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lz
dGFudCAqKWFzc2lzdGFudDsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgcGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVldEFj
dGlvbilhY3Rpb247CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMb2NhdGlvbjooQ0dQb2ludClsb2Nh
dGlvbjsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDooQ0dS
ZWN0KWJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggYjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUx
NjQwMzRhZDhjZjBlYWQ3YS4uMjUyN2UwZWZlNDc5YzNjNjk1ODc3OTU1YTlkMWY0MTQ5YjcxMjU5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0KQEAgLTk4LDcgKzk4LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgewogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0FjdGlvblNoZWV0QXNzaXN0
YW50RGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXQ+IF9p
bnRlcmFjdGlvblNoZWV0OwogICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4g
X2VsZW1lbnRJbmZvOwotICAgIE9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24+IF9wb3NpdGlvbkluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4gX3Bvc2l0aW9uSW5mb3JtYXRp
b247CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQog
ICAgIFJldGFpblB0cjxVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24+IF9kYXRhRGV0ZWN0b3JDb250
ZXh0TWVudUludGVyYWN0aW9uOwpAQCAtMzMzLDcgKzMzMyw3IEBAIC0gKHZvaWQpaW50ZXJhY3Rp
b25EaWRTdGFydFdpdGhQb3NpdGlvbkluZm9ybWF0aW9uOihjb25zdCBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mCiAjZW5kaWYKIH0KIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbj4pY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KKy0gKHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pY3VycmVudFBv
c2l0aW9uSW5mb3JtYXRpb24KIHsKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKaW5kZXggN2M3ZjU4OGQyMDBhZWNhNmVmNGQxNGE2YmU1M2I5NjZkOTlmNDQz
OS4uYWViNDQ0MjkwZGI2NzY1Mjg4M2RhMDBlNTUzZmZhMWM2ZTQ3OWI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aApAQCAtMjk4LDcgKzI5OCw3IEBAIHVzaW5nIEltYWdlRXh0cmFjdGlvblJlcXVlc3RJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0CiAjaWYgSEFWRShV
SV9QT0lOVEVSX0lOVEVSQUNUSU9OKQogICAgIFJldGFpblB0cjxVSVBvaW50ZXJJbnRlcmFjdGlv
bj4gX3BvaW50ZXJJbnRlcmFjdGlvbjsKICAgICBCT09MIF9oYXNPdXRzdGFuZGluZ1BvaW50ZXJJ
bnRlcmFjdGlvblJlcXVlc3Q7Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEJsb2NrUHRyPHZvaWQoVUlQb2ludGVyUmVnaW9uICop
Pj4+IF9kZWZlcnJlZFBvaW50ZXJJbnRlcmFjdGlvblJlcXVlc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCwgQmxvY2tQ
dHI8dm9pZChVSVBvaW50ZXJSZWdpb24gKik+Pj4gX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9u
UmVxdWVzdDsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Np
c3RhbnQ+IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ7CkBAIC0zODIsMTAgKzM4MiwxMCBAQCB1
c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8
SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogICAgIFdlYktpdDo6V0tTZWxlY3Rpb25EcmF3aW5nSW5m
byBfbGFzdFNlbGVjdGlvbkRyYXdpbmdJbmZvOwogICAgIFJldGFpblB0cjxXS1RleHRSYW5nZT4g
X2NhY2hlZFNlbGVjdGVkVGV4dFJhbmdlOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdD4gX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdD4gX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owog
CiAgICAgdWludDY0X3QgX3Bvc2l0aW9uSW5mb3JtYXRpb25DYWxsYmFja0RlcHRoOwotICAgIFZl
Y3RvcjxPcHRpb25hbDxJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdEFuZENhbGxiYWNrPj4g
X3BlbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uSGFuZGxlcnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3RBbmRDYWxsYmFjaz4+IF9wZW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvbkhhbmRsZXJzOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPiBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI7
CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogCiAgICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxDb250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRB
c3Npc3RhbmNlOwogCi0gICAgT3B0aW9uYWw8VUNoYXIzMj4gX2xhc3RJbnNlcnRlZENoYXJhY3Rl
clRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxV
Q2hhcjMyPiBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNl
bGVjdGlvbjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgV2ViS2l0OjpEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUgX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTsKQEAgLTQ4Niw4ICs0
ODYsOCBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQogICAgIFJldGFpblB0cjxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyPiBf
aW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25UaW1lb3V0R2VzdHVyZVJlY29n
bml6ZXI7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRp
Zmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRl
bnRpZmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBfZWxlbWVudFBlbmRpbmdJbWFn
ZUV4dHJhY3Rpb247CiAgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoV2ViS2l0OjpQcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbik+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0
cmFjdGlvbjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBSZXRhaW5QdHI8VUlNZW51PiBf
aW1hZ2VFeHRyYWN0aW9uQ29udGV4dE1lbnU7CkBAIC02MDcsNyArNjA3LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9PTClo
YXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qgcm91
dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcG9saWN5IHJvdXRp
bmdDb250ZXh0VUlEOihOU1N0cmluZyAqKWNvbnRleHRVSUQ7CiAtICh2b2lkKV9zaG93UnVuT3Bl
blBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgZnJhbWVJbmZvOihj
b25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmKWZyYW1lSW5mbyByZXN1bHRMaXN0ZW5lcjooV2Vi
S2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KilsaXN0ZW5lcjsKIC0gKHZvaWQp
X3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilz
aGFyZURhdGEgaW5SZWN0OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNv
bXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfc2hvd0NvbnRhY3RQaWNrZXI6KGNvbnN0IFdlYkNv
cmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRh
Y3RJbmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9zaG93Q29udGFjdFBp
Y2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYpcmVxdWVzdERhdGEgY29t
cGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwog
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWZpbGVQaWNrZXJBY2NlcHRlZFR5cGVJZGVudGlmaWVy
czsKIC0gKHZvaWQpZGlzbWlzc0ZpbGVQaWNrZXI7CiAtICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVu
dDooOjpXZWJFdmVudCAqKWV2ZW50IGV2ZW50V2FzSGFuZGxlZDooQk9PTClldmVudFdhc0hhbmRs
ZWQ7CkBAIC02NjUsNyArNjY1LDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQp
X2RpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0OihCT09MKWFkZGVkOwogLSAodm9p
ZClfc3RhcnREcmFnOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2UgaXRlbTooY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mKWl0ZW07CiAtICh2b2lkKV93aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3Q7Ci0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdT
bmFwc2hvdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YTsK
IC0gKHZvaWQpX2RpZENoYW5nZURyYWdDYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1JlY3QgY3Vy
cmVudFJlY3Q6KENHUmVjdClyZWN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQ0NTcz
NDA0ZGNkMGJlNzNmYmI4ZWUwODI0NTJmNTIzZDAwNGNhOTcuLmE4NGU4ZDY5NWE4ZmUxMjg1YjMy
ZWU4OGExMmRkNjIzOTM0NDlkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcg
QEAgLSAodm9pZClzaGFyZVNoZWV0OihXS1NoYXJlU2hlZXQgKilzaGFyZVNoZWV0IHdpbGxTaG93
QWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWEKIAogI2VuZGlmCiAKLS0gKHZvaWQpX3Nob3dDb250
YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0
YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCist
ICh2b2lkKV9zaG93Q29udGFjdFBpY2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYpcmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYm
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgSEFWRShDT05UQUNUU1VJKQogICAgIF9jb250YWN0
UGlja2VyID0gYWRvcHROUyhbW1dLQ29udGFjdFBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnNl
bGYud2ViVmlld10pOwpAQCAtNzQwMCw3ICs3NDAwLDcgQEAgLSAoQk9PTClpc0FueVRvdWNoT3Zl
ckFjdGl2ZUFyZWE6KE5TU2V0ICopdG91Y2hlcwogCiAjcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRh
dGlvbiBvZiBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUuCiAKLS0gKE9wdGlvbmFsPFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRp
b25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lz
dGFudAorLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsKICAgICBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5w
b2ludCk7CiAgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOwpAQCAtODAxNyw3ICs4
MDE3LDcgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Np
b246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8KICAgICAgICAgKm91dEdsb2JhbFBvaW50
ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1zdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRy
b3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRp
b25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IG9wZXJhdGlvbikKIHsKICAgICBpZiAob3BlcmF0aW9uKSB7CiAgICAgICAgIGlmICgq
b3BlcmF0aW9uID09IFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmUpCkBAIC04MDI4LDcgKzgw
MjgsNyBAQCBzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJh
Z09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcgogICAgIHJldHVybiBVSURyb3BPcGVyYXRp
b25DYW5jZWw7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBj
b3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9w
ZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNv
cmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJhdGlvbiBkcm9wT3Bl
cmF0aW9uKQogewogICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgewogICAgIGNhc2UgVUlEcm9w
T3BlcmF0aW9uQ2FuY2VsOgpAQCAtODExMiw3ICs4MTEyLDcgQEAgLSAodm9pZClfd2lsbFJlY2Vp
dmVFZGl0RHJhZ1NuYXBzaG90CiAgICAgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90ID0gWUVT
OwogfQogCi0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGEKKy0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRh
CiB7CiAgICAgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBzaG90ID0gTk87CiAKQEAgLTgxMjMsNyAr
ODEyMyw3IEBAIC0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQogICAgICAgICBhY3Rpb24oKTsKIH0KIAot
LSAodm9pZClfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6KE9wdGlvbmFsPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCistICh2b2lkKV9kZWxpdmVyRGVsYXllZERy
b3BQcmV2aWV3SWZQb3NzaWJsZTooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4pZGF0YQogewogICAgIGlmICghX3Zpc2libGVDb250ZW50Vmlld1NuYXBzaG90KQogICAg
ICAgICByZXR1cm47CkBAIC04NTgzLDcgKzg1ODMsNyBAQCAtICh2b2lkKXNlbGVjdFBvc2l0aW9u
QXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJl
cQogCiAtICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOihDR1NpemUpc2l6ZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlUZXh0UGxhY2Vob2xkZXIgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6Oklu
dFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNl
bGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYgcGxhY2Vob2xkZXIpIHsK
KyAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgeyBzaXpl
IH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiBwbGFjZWhvbGRlcikgewogICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFzdHJvbmdT
ZWxmIHx8ICFbc3Ryb25nU2VsZiB3ZWJWaWV3XSB8fCAhcGxhY2Vob2xkZXIpIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRleCA3YjY1
MDVmYTc4ZTY2MzE0Njc5ZDQ4ZjY2ZWMyZDkwZGFkNzE0NGMzLi4zOTI3ZTJjY2QxY2ExMTViMDA2
ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTk3LDcgKzk3
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciB7CiAgICAg
aWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlSW50ZXJuYWw+IF9zY3JvbGxhYmxlOwogICAgIFJldGFp
blB0cjxDQURpc3BsYXlMaW5rPiBfZGlzcGxheUxpbms7CiAKLSAgICBPcHRpb25hbDxXZWJLaXQ6
OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6S2V5Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xsOwogCiAgICAgQk9PTCBfc2Nyb2xsVHJp
Z2dlcmluZ0tleUlzUHJlc3NlZDsKIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBXZWJDb3Jl
OjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIH0KIH0KIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRT
Y3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CistIChzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKill
dmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJl
UmVjb2duaXplci5tbQppbmRleCAyODFjMmZjOGEwZDA5ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRk
NTdhLi45NDg0MzlhN2MyYTY1MGNjMzlhMzdhYWY3ZWEyNDdhMmFkZjM2MzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIubW0KQEAgLTY5LDggKzY5LDggQEAgQGltcGxlbWVudGF0aW9uIFdLTW91c2VHZXN0dXJlUmVj
b2duaXplciB7CiAgICAgQk9PTCBfdG91Y2hpbmc7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50PiBfbGFzdEV2ZW50OwotICAgIE9wdGlvbmFsPENHUG9p
bnQ+IF9sYXN0TG9jYXRpb247Ci0gICAgT3B0aW9uYWw8VUlFdmVudEJ1dHRvbk1hc2s+IF9wcmVz
c2VkQnV0dG9uTWFzazsKKyAgICBzdGQ6Om9wdGlvbmFsPENHUG9pbnQ+IF9sYXN0TG9jYXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxVSUV2ZW50QnV0dG9uTWFzaz4gX3ByZXNzZWRCdXR0b25NYXNr
OwogfQogCiAtICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wpZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggZDAxMDJiYzhlNjQ4MWYyNDQ1NjUyYWI2Mjg4
NTcxNDQwMTE5N2E4Ny4uYjllNTBhOWMzMjgzY2U3YWZkMTMxOTU4ZWY2ZDBkYWNjMWE0MDNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC02MSw3ICs2MSw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcgewogICAgIE5TVUludGVnZXIgX2ZpbmRTdHJp
bmdDb3VudDsKICAgICBOU1VJbnRlZ2VyIF9maW5kU3RyaW5nTWF4Q291bnQ7CiAgICAgUmV0YWlu
UHRyPFVJVmlldz4gX2ZpeGVkT3ZlcmxheVZpZXc7Ci0gICAgT3B0aW9uYWw8TlNVSW50ZWdlcj4g
X2ZvY3VzZWRTZWFyY2hSZXN1bHRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5TVUludGVnZXI+
IF9mb2N1c2VkU2VhcmNoUmVzdWx0SW5kZXg7CiAgICAgTlNJbnRlZ2VyIF9mb2N1c2VkU2VhcmNo
UmVzdWx0UGVuZGluZ09mZnNldDsKICAgICBSZXRhaW5QdHI8UERGSG9zdFZpZXdDb250cm9sbGVy
PiBfaG9zdFZpZXdDb250cm9sbGVyOwogICAgIENHU2l6ZSBfb3ZlcmxhaWRBY2Nlc3NvcnlWaWV3
c0luc2V0OwpAQCAtNTE4LDcgKzUxOCw3IEBAIC0gKHZvaWQpcGRmSG9zdFZpZXdDb250cm9sbGVy
RXh0ZW5zaW9uUHJvY2Vzc0RpZENyYXNoOihQREZIb3N0Vmlld0NvbnRyb2xsZXIgKiljCiAKICNw
cmFnbWEgbWFyayBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKIAotLSAoT3B0aW9uYWw8
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pcG9zaXRpb25JbmZvcm1h
dGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50CistIChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudAogewogICAgIHJldHVybiBfcG9zaXRpb25J
bmZvcm1hdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaApp
bmRleCBkZGI2YzBjZmFmOGNlMzA2YjQyODM5MGU1M2NmZmRlZjlkY2RhZTMzLi43MGIxZjk0YTc2
OWFlN2NmMmMwMDg3NzdiNzI4ODUwZDA1MjVmYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgLy8gV2ViQ29yZTo6V2ViQ29yZU1vdGlvbk1hbmFnZXJDbGllbnQKICAgICB2b2lkIG9yaWVu
dGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgZmlu
YWw7Ci0gICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUsIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4sIE9w
dGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgbW90aW9uQ2hhbmdlZChkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tCmluZGV4IDJjNjA3M2I3YjQ1YjI4M2VkN2Fm
YmQ5MjI4NjFhNGM4YzczOWYxZjUuLjEzNjc3NjNhNGM2NTkyNzRiM2QwNTUwMGQxYmI2NDExMzVm
OTM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbQpAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eTo6b3JpZW50YXRpb25DaGFuZ2VkKGRvdWJsZSBhbHBoYSwgZAogICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpEZXZpY2VPcmllbnRh
dGlvbkNoYW5nZWQoYWxwaGEsIGJldGEsIGdhbW1hLCBjb21wYXNzSGVhZGluZywgY29tcGFzc0Fj
Y3VyYWN5KSk7CiB9CiAKLXZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Ojptb3Rpb25DaGFuZ2VkKGRvdWJsZSB4QWNjZWxlcmF0aW9uLCBkb3VibGUgeUFjY2VsZXJh
dGlvbiwgZG91YmxlIHpBY2NlbGVyYXRpb24sIGRvdWJsZSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwgZG91YmxlIHlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgekFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIE9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0
ZSwgT3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IHpSb3Rh
dGlvblJhdGUpCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eTo6
bW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24s
IGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHlSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB6Um90YXRpb25SYXRlKQogewogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpEZXZpY2VNb3Rpb25DaGFuZ2VkKHhBY2NlbGVy
YXRpb24sIHlBY2NlbGVyYXRpb24sIHpBY2NlbGVyYXRpb24sIHhBY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgekFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHksIHhSb3RhdGlvblJhdGUsIHlSb3RhdGlvblJhdGUsIHpSb3RhdGlvblJh
dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCmluZGV4IDgxMGJlMTdjMWM5NmQ2OWMyZTQ5ZTllMzdhOGFmOWU5NmZlNjRjN2UuLjIwZjIw
MzNmOWQ3NDFlNzE1YTRiYzNjZTE0ZjIwZGE5NGVjMjc4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlv
bmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soeyB9KTsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3BvcnRBcmd1bWVudHMpCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBzdGQ6Om9w
dGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAgaWYg
KHZpZXdwb3J0QXJndW1lbnRzID09IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNl
U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0
KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAt
ODYwLDEyICs4NjAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdWxkTm90UmVzdG9yZVBhZ2VT
dGF0ZSgpCiAgICAgcGFnZUNsaWVudCgpLmNvdWxkTm90UmVzdG9yZVBhZ2VTdGF0ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVBhZ2VTdGF0ZShPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Ny
b2xsT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJbnNldHNP
blNhdmUsIGRvdWJsZSBzY2FsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlUGFnZVN0YXRl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRC
b3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpCiB7CiAgICAgcGFn
ZUNsaWVudCgpLnJlc3RvcmVQYWdlU3RhdGUoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbE9yaWdpbiwg
b2JzY3VyZWRJbnNldHNPblNhdmUsIHNjYWxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gY2Vu
dGVyLCBkb3VibGUgc2NhbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVBhZ2VDZW50ZXJB
bmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91Ymxl
IHNjYWxlKQogewogICAgIHBhZ2VDbGllbnQoKS5yZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKGNl
bnRlciwgc2NhbGUpOwogfQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG8KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkKICAgICBwYWdlQ2xpZW50KCkud2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFs
PFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRSZWNlaXZl
RWRpdERyYWdTbmFwc2hvdChkYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCmluZGV4
IDQ3ZjA0NTkzM2ZkMTY3NWJjYTViMjkwZmJjOWEwMjNmYzgzOGUyNmIuLmZhMDQxNmI3NTU0MTg2
Y2Q3NmM1ODU4NWYzYmI0MjI0MWM3NDFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQpA
QCAtNzgsNyArNzgsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGU+
PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfc3VibWl0QWN0aW9uTmFtZTsK
ICAgICBSZXRhaW5QdHI8UFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXI+IF9jcm93bklucHV0U2VxdWVu
Y2VyOwotICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9pbml0aWFsU2Nyb2xsVmlld0NvbnRlbnRPZmZz
ZXQ7CisgICAgc3RkOjpvcHRpb25hbDxDR1BvaW50PiBfaW5pdGlhbFNjcm9sbFZpZXdDb250ZW50
T2Zmc2V0OwogICAgIEJPT0wgX2hhc1BlbmRpbmdGb2N1c1JlcXVlc3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpYndwZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJX
UEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94
eUxpYldQRS5jcHAKaW5kZXggOWE1NzZhMmM5NmJiNTlmZjlkMGIzYjk5MjM5Y2VkNTUyZjU4Yzdm
OC4uMDZjYzlhNmExNzRhMTMzMjNlNWQ1YTRlODY2OTQ0MGNlNjIxZmRkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dlYlBhc3RlYm9hcmRQcm94
eUxpYldQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmcKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKElQQzo6Q29ubmVj
dGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKCkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCmluZGV4IDBlN2Q0OTQxMGNkNjcx
OWQ0MmYwMTE3ODJjYWRhZThlMGU0ZjE2NDUuLjk3MTM0NDk2ZjYxNzE0ZjRhNDEwYzlkM2JhOWM4
NDg0MzNjMzJhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5r
LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRGlzcGxheUxpbms6Om5vdGlmeU9ic2VydmVy
c0Rpc3BsYXlXYXNSZWZyZXNoZWQoKQogICAgIExvY2tlciBsb2NrZXIgeyBtX29ic2VydmVyc0xv
Y2sgfTsKIAogICAgIGF1dG8gbWF4RnJhbWVzUGVyU2Vjb25kID0gW10oY29uc3QgVmVjdG9yPE9i
c2VydmVySW5mbz4mIG9ic2VydmVycykgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1BlclNl
Y29uZDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG9ic2VydmVycykKICAg
ICAgICAgICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4KG9ic2VydmVy
c01heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKTsKICAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZy5jcHAKaW5kZXggZWFkYWQ0ZThmYTMzNjY1ODQ3ZTE3MmZmNWU5MmMwZTQ2Yjlh
MTU2MS4uMmVhN2VkYjRjNWJhYWRmOTY3MDZmZmIxZjI3MjViNjljNWY1MmU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9y
eUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlv
bmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+
Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQogICAgIHsKICAgICAgICAg
dWludDMyX3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdW5kZXJseWlu
Z0VudW1WYWx1ZTsKQEAgLTc5OCw3ICs3OTgsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgdm9pZCBk
ZWNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YURlY29kZXImIGRlY29kZXIsIEhU
VFBCb2R5OjpFbGVtZW50JiBmb3JtRGF0YUVsZW1lbnQpCiB7Ci0gICAgT3B0aW9uYWw8Rm9ybURh
dGFFbGVtZW50VHlwZT4gZWxlbWVudFR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxGb3JtRGF0YUVs
ZW1lbnRUeXBlPiBlbGVtZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGVsZW1lbnRUeXBlOwogICAg
IGlmICghZWxlbWVudFR5cGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggOWQ0YTAxMzE0ODk0M2Y5YmQz
OWFiN2Q3MmQyODNjMDM4ZDM0YzM1My4uODk0NDJjZDkyMzMyNjRkMDliZTBlMzgwY2M2NjAxM2Yz
ZGQ5MjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0
aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFZpZXdTbmFw
c2hvdD4gdGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNQUNfR0VTVFVS
RV9FVkVOVFMpCiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDMzNjQyYzJmMzUyM2Y2
YTBjYWZhMTM3MzNkY2E2OTdlNGM1NTJkNDYuLmM0YzA1NGZkNWRiM2Y3YWM4NzhmOThkMzFlZDk5
MmY0NThhMDEyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTYyNSw3ICs2MjUsNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1w
bDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW1wbC0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogfQogCi1SZWZQdHI8Vmll
d1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRh
a2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKQogewogICAg
IHJldHVybiBtX2ltcGwtPnRha2VWaWV3U25hcHNob3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmNwcAppbmRleCA0OTQxOTA4NThiN2I0
NzliZmE3OWQ5MzAxYmYzYWE5MDIwN2M4MjNjLi5hZjhiZDlhZDYyYTllYjM3NzY4OWY0NjYyMmY5
NzYxZGMzOTFjNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0
ZW1TaGltUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIGNv
bm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTZWNJdGVtU2hp
bVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQog
Ci12b2lkIFNlY0l0ZW1TaGltUHJveHk6OnNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1
ZXN0RGF0YSYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVt
UmVzcG9uc2VEYXRhPiYmKT4mJiByZXNwb25zZSkKK3ZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6c2Vj
SXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYgcmVz
cG9uc2UpCiB7CiAgICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUoKSkgewogICAgIGNhc2UgU2VjSXRl
bVJlcXVlc3REYXRhOjpJbnZhbGlkOgpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNlY0l0ZW1TaGlt
UHJveHk6OnNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCwg
Q29tcGxldAogICAgIH0KIH0KIAotdm9pZCBTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVz
dFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRl
bVJlcXVlc3REYXRhJiBkYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vj
SXRlbVJlcXVlc3QoZGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKaW5kZXggODFlNDIx
YzZhYzk0MDE5NGI3MWIxYzliOTc4MzBhMzg1M2UzYTgyNi4uYjQ2YjU4OWFlMDNjMmRmNzVjOWI1
ZDk5M2MzYjE0Nzc3MjkxN2Q4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1NlY0l0ZW1TaGltUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBzZWNJdGVtUmVxdWVzdChjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmKTsKLSAgICB2b2lk
IHNlY0l0ZW1SZXF1ZXN0U3luYyhjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmKTsKKyAgICB2
b2lkIHNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYmKT4mJik7Cisg
ICAgdm9pZCBzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+JiYp
PiYmKTsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAwZmI1NzA5OGM0NzViNGRhZGNlYTJmN2JkY2RlMWMxYjgzOWNjOWNlLi5kOTc1NmEzMDll
YjE4NGIzYWYwNGRhNzQxM2Q1NTNhZTUwMzE2ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMs
OCArMjMsOCBAQAogbWVzc2FnZXMgLT4gU2VjSXRlbVNoaW1Qcm94eSB7CiAKICNpZiBFTkFCTEUo
U0VDX0lURU1fU0hJTSkKLSAgICBTZWNJdGVtUmVxdWVzdFN5bmMoV2ViS2l0OjpTZWNJdGVtUmVx
dWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0
YT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCi0gICAgU2VjSXRlbVJlcXVlc3QoV2ViS2l0OjpTZWNJ
dGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U2VjSXRlbVJlc3Bv
bnNlRGF0YT4gcmVzcG9uc2UpIEFzeW5jCisgICAgU2VjSXRlbVJlcXVlc3RTeW5jKFdlYktpdDo6
U2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3QpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U2Vj
SXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCisgICAgU2VjSXRlbVJlcXVl
c3QoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VEYXRhPiByZXNwb25zZSkgQXN5bmMKICNlbmRpZgogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCmluZGV4IGQ1ZDljODA0OGM0NzUxODBiMjVmMWUyYTMxYTVlODdkNmM1YzhkYTAu
LjMyM2JkMzU5N2Y0OTQ2ZWI3MWUwNDYyZDE5NzIyZWFlNWJhYjA3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBA
IC01MDcsNyArNTA3LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0
TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnUKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gcmV2ZWFsSW1hZ2VJ
dGVtOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gcmV2ZWFsSW1h
Z2VJdGVtOwogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgZmlsdGVyZWRJdGVt
cy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoYXV0byYgaXRlbSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMjE3ZTlkY2Y4MDk0MmY3
MmY5YzYyOTY0YjUxMmY2ZDM5YmM0ZTRmNi4uNjU3ZWM0MDJjYmQxNTA3NWIxZjgyNDRiOTM4MzQ4
ZmViY2EzOWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om9wZW5QREZG
cm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKEZyYW1lSW5mb0RhdGEKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51
LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNv
bnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxpbnQzMl90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIWNvbnRleHRNZW51Lml0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4IDc5ZDA1YWE5MTkwYWVjMDM2YzUyOTU1
MWY4MDdmNmE5Y2Q4ODg2MDEuLmRjZWE5YzFkY2VkMWQxNDBmYTAxYTg1ZGU4OWJmZmRkN2Y1YjU3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlX
UEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2Vi
VmlldyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRo
UmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1dE1ldGhvZFN0YXRlKHN0
ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKICAgICBzdGF0aWNfY2Fz
dDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZN
b3ZlKHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRoblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Qcm9jZXNzLmNwcAppbmRleCBkMmUwZTk5MjUyMTQ2ZjY0NDE5MjQzYWYyMWYwOTNkZWFl
NDk5NzFiLi5iMzU1ODVmYjU4NjFiNTkyNDM2Mjc3ZGYyNDRkMTEyNGYwMDYwMDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgV2ViQXV0aG5Qcm9jZXNzOjp+V2ViQXV0aG5Qcm9jZXNzKCkKIHsKIH0K
IAotdm9pZCBXZWJBdXRoblByb2Nlc3M6OmNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dGhuUHJvY2Vzczo6Y3JlYXRlV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzKFBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gaXBjQ29ubmVjdGlvbiA9IGNyZWF0ZUlQQ0Nvbm5lY3Rpb25QYWlyKCk7CiAgICAgaWYg
KCFpcGNDb25uZWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRoblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuUHJvY2Vzcy5oCmluZGV4IGVlMWVkZmM1MDdiMjQzNjQzNTczNDNkM2I1Y2I3Nzk0ODI3
ZjE1NTAuLjVhYzlmYzgyOWE1YzA0NGFiZTZjOGNjMzYzN2M2NjdmYTI5YTQ2YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5oCkBAIC03OSw3
ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBp
bml0aWFsaXplV2ViQXV0aG5Qcm9jZXNzKFdlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKLSAgICB2b2lkIGNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9p
ZCBwcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpOwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5YTA5MjEy
NTJiZmM4OGY3YWViNzM2MTk0YmViZTZiZDI2MDc0YWEzLi4yNjc3Y2FmODNmNmU0Y2NmZjY1ZTVh
N2ExYmU5NmE5MDEwMGQ1ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRoblByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBA
IG1lc3NhZ2VzIC0+IFdlYkF1dGhuUHJvY2VzcyB7CiAgICAgSW5pdGlhbGl6ZVdlYkF1dGhuUHJv
Y2VzcyhzdHJ1Y3QgV2ViS2l0OjpXZWJBdXRoblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9y
IGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVXZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVy
KSBBc3luYworICAgIENyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogICAgIFByb2Nl
c3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKICAgICBQcm9jZXNzRGlkVHJhbnNpdGlvblRv
QmFja2dyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGE0YjNmYzU0YmUwY2YxNWZl
NWMyOWY0YjEwNDRiZGU2MTE2ZWEyNjEuLmNlYzIzNGFmYTI4MTgyNWVkYzlmOTExZjE4YTE1NDkz
NDM0MzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKQog
I2VuZGlmCiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxp
ZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5l
dHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykKIHsKICAgICBpZiAoIW1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzKQogICAgICAgICBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrcyA9
IHBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzKCk7CkBAIC0xMTMsMzEgKzExMywzMSBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hh
bnRTZXNzaW9uKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihXVEZNb3ZlKHVwZGF0ZSkpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDb21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxl
UGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVQYXlt
ZW50TWV0aG9kTW9kZUNoYW5nZShXVEZNb3ZlKHVwZGF0ZSkpKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mJiByZXN1bHQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRlUGF5bWVudFNlc3Npb24ocmVzdWx0KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggNTNmMWQ4MjAwZDA3Mzk0MGQ3NjI3YTA3ZWZjOTJl
NzE3Njg1M2FjNy4uYzgxZjJiNGM0ZTUxNWJkZWYwMTMyYjJiMTcxMTlkZjUyYTFkNjNjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaApAQCAtNTksMTkgKzU5LDE5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICAvLyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNo
b3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlT
aGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBh
eW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1l
dGhvZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0
aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZ
TUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWJvcnRQYXlt
ZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSBv
dmVycmlkZTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUGFnZSYgbV93
ZWJQYWdlOwogCi0gICAgT3B0aW9uYWw8QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzU2V0PiBtX2F2
YWlsYWJsZVBheW1lbnROZXR3b3JrczsKKyAgICBzdGQ6Om9wdGlvbmFsPEF2YWlsYWJsZVBheW1l
bnROZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMTNm
YzU2NTRiYTM5NmM5MTJkNTkzYzU2OTdkOTIwNzUxZDQ4MjNlYy4uYWZkY2UzZTdjYzAyZDI4Njc0
MDliOTY3ZWZhNWUwZmI5ZmYxNmYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHAKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6Ondp
bGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZAogICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gb3B0aW9uYWxGcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgT3B0
aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IG9wdGlvbmFsRnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVj
dG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KFdlYkNvcmU6OkZyYW1lSWRlbgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQsIGVycm9yVHlw
ZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1
MCw3ICs0NTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNTAw
LDcgKzUwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxk
RnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGNo
aWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBj
b252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAg
IHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNv
cmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVt
ZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6
OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNjU0LDcgKzY1NCw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBtYWlu
VmlldyA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCiAgICAgV2Vi
Q29yZTo6SW50UmVjdCByZXN1bHRFbGVtZW50Qm91bmRzOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50ZXJQb2ludDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50ZXJQb2ludDsKICAgICBib29sIGlzT2Jz
Y3VyZWQgPSBmYWxzZTsKIAogICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkgewpAQCAtNzI5
LDcgKzcyOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1l
bnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQ
b2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1l
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc5LDcgKzc3OSw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9h
ZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIFZlY3RvcjxTdHJpbmc+JiYg
ZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxl
c0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhh
bmRsZSwgVmVjdG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtODQxLDkgKzg0MSw5IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0
IHNuYXBzaG90RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0
YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3Qo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKLSAgICBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KHBhZ2VJRCwgZnJhbWVJRCwgbm9kZUhh
bmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmlld3BvcnQsIFtwYWdlSUQsIGZy
YW1lSUQsIGNhbGxiYWNrSURdIChPcHRpb25hbDxTdHJpbmc+IGVycm9yU3RyaW5nLCBXZWJDb3Jl
OjpJbnRSZWN0JiYgcmVjdCkgeworICAgIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QocGFnZUlE
LCBmcmFtZUlELCBub2RlSGFuZGxlLCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3
cG9ydCwgW3BhZ2VJRCwgZnJhbWVJRCwgY2FsbGJhY2tJRF0gKHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBlcnJvclN0cmluZywgV2ViQ29yZTo6SW50UmVjdCYmIHJlY3QpIHsKICAgICAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hv
dChjYWxsYmFja0lELCBoYW5kbGUsICplcnJvclN0cmluZyksIDApOwpAQCAtODY3LDcgKzg2Nyw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6c25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9v
bCBjbGlwVG9WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIFdlYkNvcmU6
OkludFJlY3QoZnJhbWUtPmNvcmVGcmFtZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmRvY3VtZW50
VG9DbGllbnRSZWN0KHNuYXBzaG90UmVjdCkpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpn
ZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTM3LDcg
KzkzNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZy
YW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJ
RCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXgg
YzU5ZTI0NzQ0ZTVhZGVjNjg0OGQ5ZmFjMmExYjc2YWYwZjgwZWIxZC4uMDFiMWM0MjkyNzkwZDAy
NzRiMDliNGMyYjFmMGY2NjRkZTRkOGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
aApAQCAtNzAsMTggKzcwLDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIENh
bGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9y
PFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQs
IE9wdGlvbmFsPGRvdWJsZT4gY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4pPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJik7Ci0gICAgdm9pZCByZXNvbHZl
UGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOwotICAgIHZvaWQgY29tcHV0
ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0g
ICAgdm9pZCBzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUs
IFZlY3RvcjxTdHJpbmc+JiYgZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJv
b2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCYmKT4mJik7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIGNvb2tp
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAg
IHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+
JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmKTsKKyAgICB2b2lk
IHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50
UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2
b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBz
ZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVj
dG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNj
cmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+JiYpOworICAgIHZvaWQgZ2V0
Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVs
ZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklk
ZW50aWZpZXI7CiAgICAgSlNDOjpQcml2YXRlTmFtZSBtX3NjcmlwdE9iamVjdElkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCA1
OWUzMDhmNmI4YjU5YWFjNzdkZmRkOGQ5NGFiMmFhM2ZkOGRlYzA3Li5hOGQ5ZGRlNzU1NTlkNWE4
OWE1YTI2YzFhMzQ5ZDEwMTY5YmZkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIzICsyMSwyMyBAQAogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgewot
ICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+IGNhbGxiYWNrVGltZW91dCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNo
aWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhh
bmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKSBBc3luYwotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFy
ZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBBc3luYworICAg
IFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgdWlu
dDMyX3Qgb3JkaW5hbCkgLT4gKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBBc3luYworICAgIFJl
c29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgQXN5bmMKKyAgICBS
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBu
YW1lKSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVu
dEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCkgQXN5bmMKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMK
KyAgICBDb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFz
eW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNl
bGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgU2V0
RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSkgQXN5bmMKKyAgICBTZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKSAt
PiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3Jl
ZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBTbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCkgQXN5bmMKKyAgICBTbmFwc2hvdFJlY3RGb3JTY3Jl
ZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQpIC0+IChzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QpIEFzeW5jCiAKLSAg
ICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAg
ICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCisgICAgR2V0Q29va2llc0ZvckZyYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAgIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggYTA3MDE3NzNh
NGE4YmY5YzljNzViY2M0MWJjMGViYTgwOWE4YWY5NC4uM2FmNjA5NTljN2YzOGY4Nzc4NzE5Nzk1
NDkwNWY0NWUwNTMyZmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAg
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1f
bWVzc2FnZVJlY2VpdmVyTWFwOyB9CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHZvaWQg
c2V0QXVkaXRUb2tlbihPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fYXVk
aXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9CisgICAgdm9pZCBzZXRBdWRp
dFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX2F1ZGl0
VG9rZW4gPSBhdWRpdFRva2VuOyB9CisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBA
IC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBt
X21lc3NhZ2VSZWNlaXZlck1hcDsKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgT3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9hdWRpdFRva2VuOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
SW5mby5oCmluZGV4IDI3MzNlZTFkZGFhY2ZjMTM5MTVmNGExYzkxMjEyZDdlNmRlZDAwNGMuLmNm
Mzk5MzgxMzY1MGM4NzZiMWQxMGExZjI2YWI2YzQ3Y2E0NmM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBHUFVQcm9jZXNzQ29u
bmVjdGlvbkluZm8gewogICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uOwogI2lmIEhBVkUo
QVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKIAogICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA0ZmE3YzI4
MmZiZDA4MmNmOGI2N2U4MTQwZjRlNTU2NjAzZTFmNTcxLi5lM2IzZjdkY2U1OGYzMjcxMzQzOGRm
YmJiZTA0YjcwOGYwOWMxNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
LCBQcmUKICAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7CiB9CiAKLU9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0
LCBzcmNSZWN0LCBtX2JpdG1hcC0+ZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IGI2YTk0ZjEwMzExMDQ3ZjkyMTg5M2I2NzRl
MTE3MmUyNzNlMzY0NjcuLjE4NDdmYTZmYmRlNDA2ZWQ2YTZhZDA2MDQ5OGI4ODVjNWUzNmJiM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4g
Y29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBp
eGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1h
dCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBkNDdjOTNiNDFjZDExODU2MDA3
YzM2OGEzZDFkM2JkZGFkNTA0ZjQxLi5kZDJlODBiNjVkMjM0ZDY5OGU5MGM4M2EwYzVkYzM5OTU4
N2RkN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzE1
LDcgKzMxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5z
dGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOwogICAgIHZvaWQgbXVsdGlE
cmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5h
bDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0
LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCBkYjlhMTkxYzcyM2Qw
MWZlOGM3NGQxNjNmYTlhYWUzMTk5MjYwMDdiLi43ODFkZjE4ODgyOWQ0YjNiMzk1NzJhZjYwMDdm
MTVjMWVmNDI4MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTIzNjYsOSArMjM2Niw5
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlCiAgICAgfQogfQogCi1PcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVm
ZmVyPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0
dXJuVmFsdWUgPSB7IH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4g
cmV0dXJuVmFsdWUgPSB7IH07CiAgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKICAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpKTsKICAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaAppbmRleCA4MzFkZWEyZWJiZTViNmI5NmYxNmM5M2RkM2M0ODQ1OTFi
M2U1NDgyLi42ZGNmMWQ1MmYxYThhMTk4MTdmNWE1MWMwYmQwMzk3MzQ5YzkxNDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUs
IHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCBv
dmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMDEsNyArMjAxLDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4
ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDE3
YTYyZTNjOTBhMTcwZjUzMDZkY2E1ZTU5MzNjOTk1N2MzZmZiZGEuLjAxNDU4NzE2ODdjNDliMGIx
NTZiZWM4NjIwOTgyZTNiYzA1NmRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFy
ZWRNZW1vcnkoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi1TdHJp
bmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorU3RyaW5nIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJl
c2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRl
ZCgpOwogCkBAIC0yMTEsNyArMjExLDcgQEAgU3RyaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVQKICAgICBy
ZXR1cm4gdXJsU3RyaW5nOwogfQogCi1WZWN0b3I8dWludDhfdD4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorVmVjdG9yPHVpbnQ4X3Q+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmREZWZlcnJlZFdh
a2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaAppbmRleCAxZTJmYzNmZTM3Y2ZhZTkxMjBkYzE4ZTBkYWZjZTlmNjlkMDJkYzBiLi42MzE0
OTY3MGEzNTk0ZTI1YTJkYTVjZDE5NzYxMTQ2MWM2MTc5NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogCiAgICAgLy8g
TWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwotICAgIFN0cmluZyBnZXREYXRh
VVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFn
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgU3RyaW5nIGdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRh
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gZ2V0U2hhcmVhYmxlQml0bWFwKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpAQCAtMTQwLDExICsxNDAsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhh
c2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAg
ICBEZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRl
bnRpZmllcnNPZlJldXNhYmxlSGFuZGxlczsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOwotICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBt
X2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9jdXJyZW50RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cz4gbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHM7CiAgICAgdW5z
aWduZWQgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCB7IDAgfTsK
IAotICAgIE9wdGlvbmFsPElQQzo6U2VtYXBob3JlPiBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3Jl
OworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTZW1hcGhvcmU+IG1fZ2V0UGl4ZWxCdWZmZXJTZW1h
cGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1l
bW9yeTsKICAgICB1aW50NjRfdCBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5TGVuZ3RoIHsg
MCB9OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5VGltZXIgeyAqdGhpcywgJlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdl
dFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGNmMzlhMWM0
NjA0YmQxMTZlMDM5OGY4YTU1ZjlmNTU1ZmJmNTI4Ni4uNjBlODllMTQ2MDlkZmNlMGRmMWRhZDM2
ODVkYWZkODQ4ODUyYzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTAyLDE5ICsxMDIsMTkgQEAg
dm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEYKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91YmxlPiwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6dG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgUHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZDo6dG9EYXRhKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPGRvdWJsZT4pIGNv
bnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
Ojp0b0RhdGEoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBjb25zdAogewog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRSZWN0
JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
LCBjb25zdCBJbnRSZWN0JikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzNzBiZTFmMjE0ZjgxNDU2ZmFh
MjU1MDcxNzNmYzVkM2QwYTMzNWFkLi43MzkzNWUyYjM3MDhmMDZlYTc4Nzc1NTBmYTEzMWQ5Yjli
ODBlN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTU3LDkgKzU3LDkgQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHksIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3Rvcjx1aW50OF90
PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0
UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRV
cHBlckxlZnRDb3JuZXIgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgKaW5kZXggMWRj
NTkwYTU1NzhlNDdjYmViODMxNTNhYmQ3MzRjZGFhYjlkNzA3Zi4uZGI3OWMxNTk1MjJkZGY0ODEx
MmI2ZTg0NWUwNzZmMjE2ZDdhMWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oCkBAIC0z
MiwxMSArMzIsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nIHsKLSAgICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNBQzsKLSAgICBPcHRp
b25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3lz
dGVtSGFzQUM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92ZXJyaWRlcz4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5EYXRhT3ZlcnJpZGVzPiB2cDlTY3JlZW5TaXpl
QW5kU2NhbGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00OCwyNCArNDgsMjQgQEAgc3RydWN0IE1lZGlh
T3ZlcnJpZGVzRm9yVGVzdGluZyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNBQzsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNBQzsKICAgICAgICAgZGVjb2RlciA+PiBz
eXN0ZW1IYXNBQzsKICAgICAgICAgaWYgKCFzeXN0ZW1IYXNBQykKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IHN5c3Rl
bUhhc0JhdHRlcnk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4g
c3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0ZW1IYXNCYXR0ZXJ5Owog
ICAgICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiB2cDlIYXJkd2FyZURl
Y29kZXJEaXNhYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGJvb2w+
PiB2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiB2cDlIYXJk
d2FyZURlY29kZXJEaXNhYmxlZDsKICAgICAgICAgaWYgKCF2cDlIYXJkd2FyZURlY29kZXJEaXNh
YmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92ZXJyaWRlcz4+IHZwOVNjcmVlblNpemVB
bmRTY2FsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmVlbkRhdGFPdmVycmlkZXM+PiB2cDlTY3JlZW5TaXplQW5kU2NhbGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlOwogICAgICAgICBpZiAoIXZwOVNjcmVlblNpemVB
bmRTY2FsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggNzc1NWU1YjY4OTg3YzYzZTRhMWUxMzUzMTk4MjVkMzQ3M2Vl
ZDJkZC4uMDA1OTU5NjJkYWYwZjMzOGZhZWQ1MDY0NWI3YTQxMTQ4MTJhYjU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVk
aWFQbGF5ZXI6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQogewotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkp
IHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgYXV0
byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0aCgpOwpAQCAtOTc2LDcgKzk3Niw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
KCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTdGF0ZS5kaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
OwogfQogCi1PcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxkVGFp
bnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7CiAgICAgaWYgKG9yaWdpbi5kYXRhKCkg
PT0gbV9kb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRTdGF0
ZS53b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKQEAgLTk4NCw3ICs5ODQsNyBAQCBP
cHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbV93b3VsZFRhaW50
T3JpZ2luQ2FjaGUuZ2V0KG9yaWdpbi5kYXRhKCkpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHdvdWxkVGFpbnQ7CiAgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OldvdWxkVGFpbnRPcmlnaW4ob3JpZ2luLmRhdGEoKSksIE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpXb3VsZFRhaW50T3JpZ2luOjpSZXBseSh3
b3VsZFRhaW50KSwgbV9pZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTEx
ODQsNyArMTE4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRl
b1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFsKGNvbnN0IFNlCiAgICAgY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvUGxheWJhY2tN
ZXRyaWNzVXBkYXRlSW50ZXJ2YWwobV92aWRlb1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFs
LnZhbHVlKCkpLCBtX2lkKTsKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpCitzdGQ6Om9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAgIGNv
bnN0IFNlY29uZHMgbWF4aW11bVBsYXliYWNrUXVhbGl0eU1ldHJpY3NTYW1wbGVUaW1lRGVsdGEg
PSAwLjI1X3M7CiAKQEAgLTEyNDEsNyArMTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUgbW9k
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1l
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBjb25zdCBNZWRpYVRp
bWUmIG1lZGlhVGltZSkKIHsKLSAgICBhdXRvIGFzeW5jUmVwbHlIYW5kbGVyID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxNZWRpYVRpbWU+IGN1cnJlbnRUaW1lLCBPcHRp
b25hbDxNb25vdG9uaWNUaW1lPiBxdWVyeVRpbWUpIG11dGFibGUgeworICAgIGF1dG8gYXN5bmNS
ZXBseUhhbmRsZXIgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8
TWVkaWFUaW1lPiBjdXJyZW50VGltZSwgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBxdWVy
eVRpbWUpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFjdXJyZW50VGltZSB8
fCAhcXVlcnlUaW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaAppbmRleCBkMTY5NDRlNDU4ODc1MDQ5MGQ0MjVkNWI0MDhkMDEzN2ZlYzJkNDU2Li45NDI4
ZDk4MGI0ZWFhNjEzODU5N2U5MzFmNmI0NDVlNDM4MjYwOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTMxNyw3ICszMTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nl
c3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNb3ZpZUxv
YWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBmaW5hbDsKIApAQCAtMzcwLDcgKzM3MCw3IEBA
IHByaXZhdGU6CiAKICAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgZmluYWw7CiAK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVZpZGVvUGxheWJhY2tNZXRyaWNzVXBkYXRlSW50
ZXJ2YWwoY29uc3QgU2Vjb25kcyYpOwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKQEAgLTQy
MCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgUmVmPFRleHRUcmFja1ByaXZhdGVSZW1vdGU+PiBtX3RleHRUcmFja3M7CiAKICAg
ICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9kb2N1bWVudFNlY3VyaXR5T3JpZ2luOwot
ICAgIG11dGFibGUgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvbmFs
PGJvb2w+PiBtX3dvdWxkVGFpbnRPcmlnaW5DYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hNYXA8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPGJvb2w+PiBtX3dvdWxkVGFp
bnRPcmlnaW5DYWNoZTsKIAogICAgIE1lZGlhVGltZSBtX2NhY2hlZE1lZGlhVGltZTsKICAgICBN
b25vdG9uaWNUaW1lIG1fY2FjaGVkTWVkaWFUaW1lUXVlcnlUaW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLmgKaW5k
ZXggZjU4NjE3ZjliOTlmNzI3YTgwY2Y1NzJhZmE4ZDg1ZmFmMTRiZDE2YS4uOWU2YmNlYjA2YmU5
MDQzYmU2ZTZjNjhhZjA2MmMwYTMxMTU1NzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5oCkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAKICAgICBDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeSB7IENhdGVnb3J5
VHlwZTo6Tm9uZSB9OwogICAgIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSBtX3JvdXRlU2hh
cmluZ1BvbGljeSB7IFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCB9OwotICAg
IE9wdGlvbmFsPFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24+IG1f
Y29uZmlndXJhdGlvbjsKICAgICBXZWFrUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaAppbmRleCBhYjU2ZDYzYWMzODFlNGJhOWFkYmVkODUwYzJkODk2MTMxZDU5MzhmLi4xNzZl
Mjc5YmU4MGMzNTM0OWVhMjgwYTI3ZmRhYjJhNWZmOWIwMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
U2Vzc2lvbkNvbmZpZ3VyYXRpb24uaApAQCAtNTUsNDQgKzU1LDQ0IEBAIHN0cnVjdCBSZW1vdGVB
dWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvdXRpbmdDb250ZXh0VUlEOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGlmICghcm91dGluZ0NvbnRleHRV
SUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PGZsb2F0PiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVS
YXRlOwogICAgICAgICBkZWNvZGVyID4+IHNhbXBsZVJhdGU7CiAgICAgICAgIGlmICghc2FtcGxl
UmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8c2l6ZV90PiBidWZmZXJTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnVm
ZmVyU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWJ1
ZmZlclNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4g
bnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKICAgICAgICAgaWYgKCFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxzaXplX3Q+IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRl
Y29kZXIgPj4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbWF4
aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHByZWZlcnJlZEJ1ZmZlclNpemU7CiAgICAgICAg
IGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFwcmVmZXJyZWRC
dWZmZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxib29sPiBpc011dGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTXV0
ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNdXRlZDsKICAgICAgICAgaWYgKCFpc011dGVkKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29s
PiBpc0FjdGl2ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FjdGl2ZTsKICAgICAg
ICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAgaWYgKCFpc0FjdGl2ZSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggNDIyNDQ2YjlhODEyNWM0YWY2ZjlkMzAzZDE1
MGI1MmRmOTcwNTEzNy4uZGFlNDk1YmY2ZGRkM2YyY2ZkZGJiNjhlODFmNTI3ZWI1ZDg4ODRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjCiAgICAgcmV0dXJu
IHJlc3BvbnNlLmNvcHkoKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBp
bnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKCkuCiAgICAg
cmV0dXJuIHNlc3Npb25JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oCmluZGV4IDI2ZDZmMzY5NzliMDQ1MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhl
OGYuLjBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5z
dGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7
IH0KICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZFJvYnVzdG5lc3NlczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaAppbmRleCBkY2I0MWJhYTE5YmYxNjVlMWQzYjY0MjAxNmI5OWE0
YTA5NzI1N2MzLi43OTkwMmRiODVmMGY1OTA1YTczMmE0NTk4NjczNzFlODJmYTVjMjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAtNDcsMjQgKzQ3LDI0IEBAIHN0cnVjdCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxWZWN0
b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CiAgICAgICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOwogICAg
ICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAg
ICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lv
bnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXNzaW9uczsKICAgICAg
ICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAgICBpZiAoIXN1cHBvcnRzU2Vz
c2lvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgKaW5kZXggZTg4OTYxMmFlZDA5YzEzOWQyZTY5MDZiOGNkNTI5
NjVhMmZjODgzNi4uNDAzM2QzNWY3MDNkMTZjZjAyODA4MmE3Y2M4OTc3ZGUxNjE5YjY0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC00MSw5ICs0MSw5IEBAIHN0
cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGtleVN5c3RlbTsKICAgICAgICAgZGVjb2RlciA+
PiBrZXlTeXN0ZW07CiAgICAgICAgIGlmICgha2V5U3lzdGVtKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA5MWFkNGY5
MjljYTVkZmZkOWMxYjJlNjM2NGUzODliOTc5NGU5NTlkLi44MmY0NzUzYTNhODNjN2I0NTBhZTBk
NzdmNzNiZjEwNWVmN2Y3YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRp
b25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBj
aGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgV1RGTW92ZShyZXNw
b25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Ns
b3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3Nh
Z2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
ayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2Vk
RXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZh
aWxlZCk7CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlw
ZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9w
dGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYm
IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgeworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Np
b24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1
cmUpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RG
TW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1
Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9
CkBAIC0xMDksOCArMTA5LDggQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKLSAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdl
ID0gc3RkOjpudWxsb3B0OworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVz
c2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdl
LnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDBlZGQ4YjJmZDY2
MzMwOGI4MzQ3MjJmMzgzNDAyNWIwOWQ0YzdlMWEuLjUzZDAxNTc4MWM0ZGI2NmFhNjQ5MTIwYTdj
OGRhYWFmYjM4NDA4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTE2Niw4ICsxNjYs
OCBAQCBQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3B0aW9uYWw8TWFjaFNl
bmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGNvbG9yU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2Vu
ZFJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVG
cmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJp
Z2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHNpemVfdCBmcmFtZUNvdW50OwogICAg
IEludFNpemUgc2l6ZTsKICAgICBib29sIGhhc1RyYWNrOwotICAgIE9wdGlvbmFsPFZlY3RvcjxJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwogICAgIGlmICghbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVu
Y2UsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3Mp
LCAwKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCBkZTlkYzMz
ZjA5ZDU2ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0Li5lNWNmZTk0ZWNkM2E5YzA2MDBmYzAw
MzIwZmY0MzA2MWM5MGVkNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQo
KSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICBXZWJDb3Jl
OjpJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xl
dmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CkBA
IC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxpbnQsIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludD4+IG1fZnJhbWVJbWFnZXM7CiAgICAgVmVjdG9yPEltYWdlRGVjb2Rlcjo6
RnJhbWVJbmZvPiBtX2ZyYW1lSW5mb3M7CiAgICAgc2l6ZV90IG1fZnJhbWVDb3VudCB7IDAgfTsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3NpemU7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRTaXplPiBtX3NpemU7CiAgICAgYm9vbCBtX2hhc1RyYWNrIHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDZkMWFm
ZDg0ODM4NzcxYjYxNjliNzBkZTgzNWIyOWQ4YjI4MjI3ZWYuLjc2ZTk3MzRlZDEwNzU0YzI2YTNj
NjgyYzVhOGY2NjkyNDg2OWM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3Jl
YXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewotICAgIE9wdGlvbmFsPEltYWdlRGVjb2Rlcklk
ZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwogICAgIGlmICgh
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVu
Y2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVh
dGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4IDE3ODg2MjViYjc2MDRkZTkwNWJhZTRlZWMx
MjUzMjIxOGU4MDNkNDUuLjc1NmY4Zjk5ZjE2MjY5MzM4N2YwOTNkZDZmMmIwNTRhOGY3OTlmNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE06OnNl
dFBsYXllcklkKE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGlmICghbV9m
YWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50
aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZp
ZXI+IG9wdGlvbmFsSWQ7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIG9wdGlvbmFsSWQg
PSBpZGVudGlmaWVyOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBsYXllcklk
KG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5k
ZXggOGExOTdlMWRhNmRiOWNjZTY3Y2M3NWE3ZmUzYmMxNWZjZGJlY2M2Ni4uZGZmNzZkMTllOTE1
MDhjMzljYmU0ZWNkYWU2ODUyM2FkODY5ZGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3Bw
CkBAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiBwbGF5ZXJJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxh
eWVySWQ7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5tZWRpYVBsYXllcigpKQogICAgICAg
ICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkubWVkaWFQbGF5ZXJNYW5hZ2VyKCku
ZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJpdmF0ZSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAKaW5kZXggZTZmNjdhY2Y0ODViNmQxZmQzZmU3YTMxMDQxMDc3MmQ3NGE5
NWZhOC4uMjdhZTk2YjNiMmY1NmIyMjE3YTM4NzlkNWRmMmQwZDMzMTExYzM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpcGNJbml0RGF0YSA9IGNv
bnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoaW5pdERhdGEpOwotICAgIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+IGlwY05leHRNZXNzYWdlOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpcGNJbml0RGF0
YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkdlbmVyYXRlS2V5UmVx
dWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOwogCiAgICAgaWYgKCFpcGNOZXh0TWVzc2FnZSkKQEAg
LTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnVwZGF0ZShVaW50
OEFycmF5KiBrZXlEYXRhLCBSZWZQdHI8VWludDhBcnJheT4mIG5leAogCiAgICAgYXV0byBpcGNL
ZXlEYXRhID0gY29udmVydFRvU2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGtleURhdGEpKTsKICAg
ICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJDb3B5PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7CiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2VlZGVkLCBpcGNOZXh0TWVzc2FnZSwgZXJy
b3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIGlmIChpcGNOZXh0TWVz
c2FnZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OmNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYga2V5SQogICAgIGlm
IChmb3VuZEluQ2FjaGUgIT0gbV9jYWNoZWRLZXlDYWNoZS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IGZvdW5kSW5DYWNoZS0+dmFsdWU7CiAKLSAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+IGlwY0tleTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gaXBj
S2V5OwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Q2FjaGVkS2V5
Rm9yS2V5SUQoa2V5SWQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpD
YWNoZWRLZXlGb3JLZXlJRDo6UmVwbHkoaXBjS2V5KSwgbV9pZGVudGlmaWVyKTsKIAogICAgIGlm
ICghaXBjS2V5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJCiAg
ICAgcmV0dXJuIGlwY0tleUJ1ZmZlcjsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bjo6c2VuZE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKIHsKICAgICBpZiAoIW1fY2xpZW50
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IDRkNWJlY2UwNTkx
MTVlNTJmMDM0ZTBhNTE0NWQwMjQ5ZWViMjFiYjMuLjQ4MzRiNDZlZDBmY2QyNTliMzA4NWExZWE3
NDZjMzkyMjA4YjRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzCi0gICAgdm9pZCBzZW5k
TWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMKTsKICAgICB2b2lkIHNlbmRFcnJvcihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSk7CiAKICAgICBX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCAxMmY2ODc4YTgzMzcwMjIwNDlmMDU1MDcx
ZTkzZGE0ZWMyYjE0ZWZkLi4zZTczMGExMGVlMGQ3M2FmNWYxZjYzZmY3ZjU5NjEyZjZlZWI5ZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsy
NCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3Vu
dGVkIHsKLSAgICBTZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1l
c3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJM
KQogICAgIFNlbmRFcnJvcihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudDo6TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaAppbmRleCAwZGU5NWVkNWVk
MjZjZjhhNmQwNzA0NmY2NjRjZjE1OGVkMWQ4YmQ2Li5hZWI0ZjEzYjM2MDM4NjU1YzJmOTg1ODdk
MGZmMzQyYzE1MjU5NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgK
QEAgLTU3LDQ0ICs1Nyw0NCBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9u
IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0
aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBlbmdpbmVEZXNjcmlwdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGVuZ2luZURlc2NyaXB0aW9u
OwogICAgICAgICBpZiAoIWVuZ2luZURlc2NyaXB0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtRHVy
YXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAgICAgICBkZWNvZGVyID4+IG1heGltdW1EdXJhdGlv
blRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAgIGlmICghbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1l
ZGlhVGltZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNTY2FubmluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzdXBwb3J0c1NjYW5uaW5nOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Nhbm5pbmc7
CiAgICAgICAgIGlmICghc3VwcG9ydHNTY2FubmluZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNGdWxsc2NyZWVuOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzRnVsbHNjcmVlbjsKICAgICAgICAg
ZGVjb2RlciA+PiBzdXBwb3J0c0Z1bGxzY3JlZW47CiAgICAgICAgIGlmICghc3VwcG9ydHNGdWxs
c2NyZWVuKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxib29sPiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOwogICAgICAgICBkZWNvZGVyID4+IHN1
cHBvcnRzUGljdHVyZUluUGljdHVyZTsKICAgICAgICAgaWYgKCFzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmc7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKICAgICAgICAgZGVjb2Rl
ciA+PiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nOwogICAgICAgICBpZiAoIXN1cHBvcnRz
QWNjZWxlcmF0ZWRSZW5kZXJpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rh
cmdldDsKICAgICAgICAgZGVjb2RlciA+PiBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
OwogICAgICAgICBpZiAoIWNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3Vs
ZElnbm9yZUludHJpbnNpY1NpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRJZ25vcmVJbnRy
aW5zaWNTaXplOwogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUludHJpbnNpY1NpemUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmgKaW5kZXggMDgxYzljYzRiZGY4Y2YyNGZmMjlmNzcxOTIwODE0YjJiOWRjYWNiNi4u
MTJjODgyM2FiOTVmMDhiZjgwNjBhYTliMmIxNmVmMGQ2ZTllYjhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5l
SWRlbnRpZmllcjsKIAogICAgIHVzaW5nIFN1cHBvcnRlZFR5cGVzQW5kQ29kZWNzS2V5ID0gc3Rk
Ojp0dXBsZTxTdHJpbmcsIGJvb2wsIGJvb2w+OwotICAgIE9wdGlvbmFsPEhhc2hNYXA8U3VwcG9y
dGVkVHlwZXNBbmRDb2RlY3NLZXksIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRz
VHlwZT4+IG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGU7Ci0gICAgT3B0aW9uYWw8SGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IG1fc3VwcG9ydGVkVHlwZXNDYWNo
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3VwcG9ydGVkVHlwZXNBbmRDb2RlY3NLZXks
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZT4+IG1fc3VwcG9ydHNUeXBl
QW5kQ29kZWNzQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRUeXBlc0NhY2hlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCmluZGV4IGE2MjdhNzM3MGMyYmMx
ZjI1MzkxYzBiZWIyMTA4ZWJkZWFiMTI5OWEuLmRiMzQ4YTE4ZWFlYTdkOTliZjNjMTcyZWJkZjY4
ZmRkM2ExYmFjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCkBAIC01NSw4ICs1NSw4IEBAIHN0
cnVjdCBSZW1vdGVNZWRpYVBsYXllclN0YXRlIHsKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZSB7IDAgfTsKICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFs
IHsgMCB9OwogICAgIHVpbnQ2NF90IHRvdGFsQnl0ZXMgeyAwIH07Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb01ldHJpY3M7Ci0gICAgT3B0
aW9uYWw8Ym9vbD4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW4geyB0cnVlIH07Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZp
ZGVvTWV0cmljczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnREb2N1bWVudFNl
Y3VyaXR5T3JpZ2luIHsgdHJ1ZSB9OwogICAgIGJvb2wgcGF1c2VkIHsgdHJ1ZSB9OwogICAgIGJv
b2wgY2FuU2F2ZU1lZGlhRGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBoYXNBdWRpbyB7IGZhbHNl
IH07CkBAIC0xMDIsNDQgKzEwMiw0NCBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFJlbW90ZU1lZGlhUGxheWVyU3RhdGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyU3RhdGU+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOwogICAgICAgICBk
ZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAoIWR1cmF0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1pblRp
bWVTZWVrYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVr
YWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5UaW1lU2Vla2FibGU7CiAgICAgICAgIGlmICgh
bWluVGltZVNlZWthYmxlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJsZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBt
YXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGlmICghbWF4VGltZVNlZWthYmxlKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0
YXJ0RGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0RGF0ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBzdGFydERhdGU7CiAgICAgICAgIGlmICghc3RhcnREYXRlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRp
bWU+IHN0YXJ0VGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGlt
ZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgICAgIGlmICghc3RhcnRUaW1l
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsKICAgICAgICAgZGVjb2RlciA+
PiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAgICAgIGlmICghbGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAg
ICAgIGRlY29kZXIgPj4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGlmICgh
d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcz4gYnVm
ZmVyZWRSYW5nZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGxhdGZvcm1UaW1l
UmFuZ2VzPiBidWZmZXJlZFJhbmdlczsKICAgICAgICAgZGVjb2RlciA+PiBidWZmZXJlZFJhbmdl
czsKICAgICAgICAgaWYgKCFidWZmZXJlZFJhbmdlcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0xNjAsODcgKzE2MCw4NyBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2lyZWxlc3NQbGF5YmFja1Rhcmdl
dFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IG5hdHVyYWxTaXplOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gbmF0dXJhbFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4g
bmF0dXJhbFNpemU7CiAgICAgICAgIGlmICghbmF0dXJhbFNpemUpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndh
cmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndhcmRSYXRl
OwogICAgICAgICBkZWNvZGVyID4+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAgICAgaWYgKCFt
YXhGYXN0Rm9yd2FyZFJhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJldmVyc2VSYXRlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJldmVyc2VSYXRlOwogICAgICAgICBkZWNvZGVyID4+
IG1pbkZhc3RSZXZlcnNlUmF0ZTsKICAgICAgICAgaWYgKCFtaW5GYXN0UmV2ZXJzZVJhdGUpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgICAg
IGRlY29kZXIgPj4gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICAgICAg
aWYgKCFzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGxpdmVVcGRhdGVJ
bnRlcnZhbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpdmVVcGRhdGVJbnRlcnZh
bDsKICAgICAgICAgZGVjb2RlciA+PiBsaXZlVXBkYXRlSW50ZXJ2YWw7CiAgICAgICAgIGlmICgh
bGl2ZVVwZGF0ZUludGVydmFsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKICAgICAgICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVz
OwogICAgICAgICBpZiAoIXRvdGFsQnl0ZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0cmljczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0
cmljczsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb01ldHJpY3M7CiAgICAgICAgIGlmICghdmlk
ZW9NZXRyaWNzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxPcHRpb25hbDxib29sPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4gd291bGRUYWludERv
Y3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4gd291bGRUYWludERvY3Vt
ZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGlmICghd291bGRUYWludERvY3VtZW50U2VjdXJp
dHlPcmlnaW4pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IHBhdXNlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBwYXVzZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gcGF1c2VkOwogICAgICAgICBpZiAoIXBhdXNlZCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2Fu
U2F2ZU1lZGlhRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBjYW5TYXZlTWVkaWFE
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGNhblNhdmVNZWRpYURhdGE7CiAgICAgICAgIGlmICgh
Y2FuU2F2ZU1lZGlhRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXVkaW87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaGFzQXVkaW87CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQXVkaW87CiAgICAgICAgIGlmICgh
aGFzQXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGhhc1ZpZGVvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1Zp
ZGVvOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZpZGVvOwogICAgICAgICBpZiAoIWhhc1ZpZGVv
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxi
b29sPiBoYXNDbG9zZWRDYXB0aW9uczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXND
bG9zZWRDYXB0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBoYXNDbG9zZWRDYXB0aW9uczsKICAg
ICAgICAgaWYgKCFoYXNDbG9zZWRDYXB0aW9ucykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXZhaWxhYmxlVmlkZW9GcmFtZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lOwogICAg
ICAgICBkZWNvZGVyID4+IGhhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAgICAgICAgIGlmICghaGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CiAgICAg
ICAgIGlmICghd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1NpbmdsZVNlY3VyaXR5
T3JpZ2luOwogICAgICAgICBkZWNvZGVyID4+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOwogICAg
ICAgICBpZiAoIWhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBkaWRQYXNzQ09SU0FjY2Vzc0No
ZWNrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2s7
CiAgICAgICAgIGRlY29kZXIgPj4gZGlkUGFzc0NPUlNBY2Nlc3NDaGVjazsKICAgICAgICAgaWYg
KCFkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCmluZGV4
IDRkZWRlMzA4MWUyNGI0OTA3OGZkYTE1NzQwM2NiNDlmNzAwNDYyMDkuLmQ0NGViMzlmODM5MzE4
NTRhYmIzMGY1NjBhOThhYjI4MjFmZWFlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjQsNyArNjQsNyBAQCBQbGF0Zm9ybUxheWVyQ29u
dGFpbmVyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4g
c2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0Owog
ICAgIGlmICghY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lOjpSZXBseShzZW5kUmlnaHQp
LCBtX2lkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDcgKzg0LDcgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKLSAgICBPcHRpb25h
bDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQ7CiAgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Ok5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWU6
OlJlcGx5KHNlbmRSaWdodCksIG1faWQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5jcHAKaW5kZXggNDYwYjc1MmZmZTIzZjQ1NjJkYjk4YzNkYWM2MGZjYWE5
NmI2ZTYzZC4uYmQ4N2ZkMTMwMzI1MTg4OTk2Y2E0MzZmNTMxNDZkMjQ0YWE0NWU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fZGV2aWNlSWQ7CiAgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiAKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fZGVz
Y3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlz
dD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOwogICAgIGludDY0X3QgbV93cml0ZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgK
aW5kZXggOWM3YmIzNTU2OTllNzAzMmU3M2E5ODg5MjY5NmVlNDk4Y2IxM2E1Zi4uZWJlNjIzY2Jk
N2I3YTg1ZDI4OWU2YWM4MmQzMTk1ZDZiZTEzNWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTk4LDcgKzk4
LDcgQEAgcHVibGljOgogICAgICAgICBSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwog
ICAgICAgICB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSB7IHdlYnJ0Yzo6a1ZpZGVv
Q29kZWNHZW5lcmljIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBwYXJhbWV0ZXJzOwotICAgICAgICBPcHRpb25hbDxFbmNvZGVySW5pdGlhbGl6YXRpb25EYXRh
PiBpbml0aWFsaXphdGlvbkRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RW5jb2RlckluaXRp
YWxpemF0aW9uRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICB2b2lkKiBlbmNvZGVk
SW1hZ2VDYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kZWRJbWFnZUNhbGxiYWNrTG9j
aykgeyBudWxscHRyIH07CiAgICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwog
ICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpAQCAtMTU1LDcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggeyAwIH07
CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0IHsgMCB9OwogICAgIGJvb2wgbV9z
dXBwb3J0VlA5VlRCIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxXVEZMb2dMZXZlbD4gbV9sb2dn
aW5nTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxXVEZMb2dMZXZlbD4gbV9sb2dnaW5nTGV2ZWw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAyYzgwODI5YTQ2YmJmYmE2YjdlNzc1YzRi
NzBiYmZmZDZlYzIxM2NkLi4wNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CkBAIC01MywxNyArNTMsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYp
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZEluc2VydFRleHQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVs
ZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNv
cmU6OkFmZmluaXR5LCBib29sKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBX
ZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbQppbmRleCBjOGI1ZTQ5N2M1MGUwYmE1Y2MzN2M2NjhjMjFjMzc3ZWY3MTc0
NTUzLi4zNTJiNjYyYTQ5MTk1MzQwMmI3NGEzZjFmNGM0NGFmYjZmNmE2NzAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1t
CkBAIC02NSw3ICs2NSw3IEBAIC0gKENvY29hSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlv
bnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMKIAogLSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVk
SW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucyB3aWR0aDooTlNOdW1i
ZXIgKil3aWR0aAogewotICAgIE9wdGlvbmFsPGZsb2F0PiBvcHRpb25hbFdpZHRoOworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9wdGlvbmFsV2lkdGg7CiAgICAgaWYgKHdpZHRoKQogICAgICAg
ICBvcHRpb25hbFdpZHRoID0gd2lkdGguZmxvYXRWYWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCA2YTA4ZWU2MWM0MmY4OWI2NzM5MWRkNGQxNGM0NzM4N2ZkMmYzZmU2Li42
OTM4MjAzZTg4NjExZjYzNWVkNjE2N2Q2YWYxYTczOTdmMjM5MjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtODYzLDcgKzg2Myw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdl
Q29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIAog
dm9pZCBXS0J1bmRsZVBhZ2VTZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yKiBiZWhhdmlvcikKIHsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gYmVoYXZpb3JW
YWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
PiBiZWhhdmlvclZhbHVlOwogICAgIGlmIChiZWhhdmlvcikgewogICAgICAgICBzd2l0Y2ggKCpi
ZWhhdmlvcikgewogICAgICAgICBjYXNlIGtXS0V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yUmVzcG9u
c2l2ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCA4MjM4
ZTY0MzBlZDdmOTQ3ODkyMWM2MGI3MWMzYjViNDgwODYyYmJhLi5kODU0MmEyYjEwYjFiM2UxNTM2
MTQxNTQxMTVlZjdlY2VjNDRlYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29u
dGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViS2l0OjpXZWJQYWdlT3Zlcmxh
eSYgcGFnZU92ZXJsYXksIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIGZpbmFsCisgICAg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpBY3Rpb25Db250ZXh0PiBhY3Rp
b25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJLaXQ6OldlYlBhZ2VPdmVybGF5JiBwYWdlT3Zl
cmxheSwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikgZmluYWwKICAgICB7CiAgICAgICAg
IGlmICghbV9jbGllbnQuYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IGM1NTA4YTYwOGQ4OTUxZTNhZTIyMzNiZDkwZTIzZDhjNDI3ZTEwODUuLmNiZjM5NTU4MWY0
NTUwZDU0MGFiZWZiNjk1NTBkYzk5ZDFlMWQzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KQEAgLTU4Myw3ICs1ODMsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6
KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHQsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbiBhY3Rpb24pIGZpbmFsCisgICAgICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dCwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLnNob3VsZEluc2VydFRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01OTEsNyArNTkxLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIHJldHVybiBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBzaG91bGRJ
bnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nUmFuZ2U6d3JhcHBlcigqV2ViS2l0OjpjcmVhdGVIYW5k
bGUocmFuZ2VUb1JlcGxhY2UpKSBnaXZlbkFjdGlvbjp0b1dLKGFjdGlvbildOwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmlu
aXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbAorICAgICAgICBib29sIHNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IGFmZmlu
aXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fZGVsZWdhdGVNZXRob2RzLnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MTUsNyArNjE1LDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0
KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJEaWRDaGFuZ2VCeUVk
aXRpbmc6bV9jb250cm9sbGVyXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgcmFuZ2UpIGZpbmFsCisgICAgICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiByYW5nZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVn
YXRlTWV0aG9kcy53aWxsV3JpdGVUb1Bhc3RlYm9hcmQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjIzLDcgKzYyMyw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdL
V2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAg
ICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFz
dGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCAwZWNjMmRjODhk
ZDY1ZmEyMWRlNjZmN2Q1NGRlNzZiY2M1M2QxOTJmLi5jODkwYzU3YWFmNDBkMjc0ZDliZGVlNjI3
NzI3OTI3MjI5NWIzNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgSW50UmVjdCBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkKICAgICByZXR1cm4gbV9ub2RlLT5w
aXhlbFNuYXBwZWRSZW5kZXJSZWN0KGlzUmVwbGFjZWQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHBhaW50aW5nUmVjdCwgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCitzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3Qo
RnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBhaW50aW5nUmVjdCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VG
b3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiBwYWludGkKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLVJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3Vs
ZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCkKK1Jl
ZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3Qg
c3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoKQogewogICAgIGlmICghbV9ub2RlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oCmluZGV4IDg5YjYzZmY4NjE5MDRiMDM1YWFlYmM0MWUzMzBmMmI2Yzk5N2JhYjIu
LjUyMDQzOTY1MzMwMjAyOTQxNTEzMjllNDM2YjcxMWNkYWVkMmE1ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gTm90ZTogVGhlc2Ugc2hvdWxkIG9ubHkgYmUgb3BlcmF0aW9ucyB0aGF0IGFyZSBu
b3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJv
dW5kcygpOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVuZGVyUmVjdChib29sKik7Ci0gICAgUmVm
UHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucywgYm9vbCBzaG91bGRF
eGNsdWRlT3ZlcmZsb3csIGNvbnN0IE9wdGlvbmFsPGZsb2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6
Om51bGxvcHQpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFnZShTbmFwc2hvdE9w
dGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlPiB2aXNpYmxlUmFuZ2UoKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVs
ZW1lbnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRF
bGVtZW50U3BlbGxjaGVja0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA1YTI2ZTUzM2ZjMTVmZWZmMjVlZDgwYzcyN2Qx
M2UwYTc0ZWNkYmFhLi42NDk5MWJiMmRhMjhkZjdlYTYyOWIwOGVlMWJjNmI1MmFhMTRjZGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6dGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSk7CiB9CiAKLVJlZlB0cjxJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlPiBjcmVhdGVIYW5kbGUoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBjcmVh
dGVIYW5kbGUoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
KQogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShj
cmVhdGVMaXZlUmFuZ2UocmFuZ2UpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggNWU4YmVlZGExMDBkMjVmMDkxZTdlMGMxZjc2YTRm
MGNiMTRjMjQ5Ni4uMzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTY0LDYgKzY0
LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IG1fcmFuZ2U7CiB9OwogCi1S
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOworUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IGNyZWF0ZUhhbmRsZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggNGFiODJkMTI1Y2RmM2JkMTkwMWY2ZjEy
NGNiNDIzZmY5YWZlYzQyMS4uY2JjMjRkNjFiNWJjOTg0MjYzMWI0Yjg2MWM4YmQ5NGM2NGNmZTc1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAK
QEAgLTM3LDIxICszNywyMSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbkZvck1v
dXNlRXZlbnREYXRhKGNvbnN0IE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhPiYgbW91c2VFdmVudERhdGEpCitzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNl
QnV0dG9uRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uOjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewogICAgIGlmIChtb3VzZUV2
ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0YS0+
aXNUcnVzdGVkKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0
dG9uPihtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKTsKICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
Tm9CdXR0b247CiB9CiAKLXN0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUg
c3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudERhdGEoY29uc3QgT3B0aW9uYWw8TmF2aWdh
dGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKK3N0YXRpYyBXZWJN
b3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VF
dmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50
RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewogICAgIGlmIChtb3VzZUV2ZW50RGF0YSAmJiBtb3Vz
ZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBl
Pihtb3VzZUV2ZW50RGF0YS0+c3ludGhldGljQ2xpY2tUeXBlKTsKICAgICByZXR1cm4gV2ViTW91
c2VFdmVudDo6Tm9UYXA7CiB9CiAgICAgCi1zdGF0aWMgRmxvYXRQb2ludCBjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudERhdGEoY29uc3QgT3B0aW9uYWw8TmF2
aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKK3N0YXRpYyBG
bG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
PiYgbW91c2VFdmVudERhdGEpCiB7CiAgICAgaWYgKG1vdXNlRXZlbnREYXRhICYmIG1vdXNlRXZl
bnREYXRhLT5idXR0b25Eb3duICYmIG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCiAgICAgICAg
IHJldHVybiBtb3VzZUV2ZW50RGF0YS0+bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IGI1
NTQxOGRlZGNmODJlMTE4OWZhNjQyMGVjYzBkZTA1ODMyZGVlZTUuLjM1MzYwNjUyNWI4NDU3Njhl
MzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
IFNpbXBsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UmIHBhZ2UsIE5vZGUmIG5vZGUsIGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFj
dGlvbiBhY3Rpb24pCitib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxk
SW5zZXJ0Tm9kZShXZWJQYWdlJiBwYWdlLCBOb2RlJiBub2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
CiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUpIHsKICAgICAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6Z2V0T3JDcmVhdGUobm9kZSk7CkBAIC03NywyOCArNzcsMjggQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoV2ViUGFnZSYgcGFn
ZSwgTm9kZSYgbm9kZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNl
LCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVk
aXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2Vy
dFRleHQpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRJbnNlcnRUZXh0KHRvQVBJKCZw
YWdlKSwgdG9BUEkodGV4dC5pbXBsKCkpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2VUb1JlcGxh
Y2UpLmdldCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OnNob3VsZERlbGV0ZVJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UpCitib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6c2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRE
ZWxldGVSYW5nZSkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZERlbGV0ZVJhbmdlKHRv
QVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFu
Z2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIGlmICht
X2NsaWVudC5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm4gbV9jbGll
bnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhh
bmRsZShmcm9tUmFuZ2UpLmdldCgpKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHRvUmFuZ2UpLmdldCgp
KSwgdG9BUEkoYWZmaW5pdHkpLCBzdGlsbFNlbGVjdGluZywgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAobV9jbGllbnQuc2hvdWxkQXBwbHlTdHls
ZSkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEFwcGx5U3R5bGUodG9BUEkoJnBhZ2Up
LCB0b0FQSShjcmVhdGVIYW5kbGUoc3R5bGUpLmdldCgpKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CkBAIC0xMjksMTMgKzEyOSwx
MyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6ZGlkQ2hhbmdlU2VsZWN0
aW9uKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cgogICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VT
ZWxlY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1lLmltcGwoKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmIChtX2NsaWVudC53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQpCiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0
b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggY2MwNmIxYWY5NDUxNWRj
ZTE1Y2JkNDNhZWU2ZmUxMGE2MDQ1ZTMyYi4uMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2
ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaApAQCAtNTQsMTcgKzU0LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBzaG91
bGRCZWdpbkVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmlu
YWw7CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJQYWdlJiwg
V2ViQ29yZTo6Tm9kZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2VUb1JlcGxhY2UsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7Ci0gICAgYm9v
bCBzaG91bGRJbnNlcnRUZXh0KFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIGJvb2wg
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3Rpbmcp
IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UmLCBXZWJDb3JlOjpO
b2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9S
ZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hv
dWxkSW5zZXJ0VGV4dChXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAg
Ym9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJQYWdl
JiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZEJlZ2luRWRpdGluZyhX
ZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lk
IGRpZEVuZEVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYs
IGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7Ci0gICAgdm9pZCB3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikg
ZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24s
IGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOGFlZWEzZTRjYjIwOGY1NjgwODIy
ZTkxMTVhYjBmMjMyOWFjYzc0Zi4uMjQ2YjIzYWMyMDkxM2Y5OTYzZmIxMjhkZjdjZDU1NmU1OWM2
NDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjp0aW1l
bGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBhY3RpdmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUlQcm94eTo6VGltZWxpbmVSZWNvcmRpbmdDaGFuZ2VkKGFjdGl2ZSksIG1fcGFnZS0+aWRl
bnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnNldERldmVsb3BlclByZWZlcmVu
Y2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxvcGVy
UHJlZmVyZW5jZSwgT3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKK3ZvaWQgV2ViSW5zcGVj
dG9yOjpzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZl
bG9wZXJQcmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
b3ZlcnJpZGVWYWx1ZSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSVByb3h5OjpTZXRE
ZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoZGV2ZWxvcGVyUHJlZmVyZW5jZSwgb3ZlcnJpZGVW
YWx1ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCmluZGV4IDFiZWRjMmUzODk1NTRmY2Q4
Mjg3ZDFlMWI4ZmY2MDUwOTdmMWIzMTUuLmMyODA3OTNkYzI4YTVlYzFjOTM3Y2ZlZWUyY2FkYWYz
OGYzZDkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3IuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wRWxl
bWVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCk7
CiAgICAgdm9pZCB0aW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRE
ZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZl
bG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXREZXZlbG9wZXJQ
cmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVm
ZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAogICAgIHZvaWQgc2V0RnJvbnRlbmRDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlODE0N2Jm
NWUzNDk4YjU5OWMxZDU2MzVjZGViNGJhMGIyYWU2MWFjLi5lZTZiYTI1ZDA3NjY3NGU3MTZmNDJh
ZjQ0MGNiN2QxZGNjZTcxNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yMzUsNyArMjM1LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRpbWVsaW5lUmVjb3JkaW5nQ2hhbmdlZChib29s
IGFjdGl2ZSkKICAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+dGltZWxpbmVSZWNvcmRpbmdD
aGFuZ2VkKGFjdGl2ZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXREZXZlbG9w
ZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQ
cmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFs
dWUpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJy
aWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9w
ZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAg
aWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCiAgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNl
dERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShkZXZlbG9wZXJQcmVmZXJlbmNlLCBvdmVycmlk
ZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDE5YWYwNjIwMGFmMmVmNzc2MDE3Yzg5ZDM5MjNi
OTdjYTI0YWVmNGMuLmEwNWFlNzUwZjM2YTEzMDY2ZDA4M2ZlYmE3YWY1MTBkZmZlNTAwNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JDbGllbnQuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3ZlcnJp
ZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBzaG93UGFpbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPikgZmluYWw7Cisg
ICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsK
IAogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2b2lkIHdpbGxNb3ZlVG9QYWdlKFdl
YkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGFjOTRjYzBiODJlODEy
OGY3NzdhMTA5NjYwMjczY2IyNzg1MjUwOGYuLjE3M2IyMTg0MmQxYmZkNzJjMWQxNzBjYjI5YWU5
OGRhNzhiNWMwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Ojp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2VJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uUmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9y
RnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFs
dWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBzd2l0
Y2ggKHJlc3VsdC5lcnJvcigpKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNw
ZWN0b3I6OkUKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0
aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTb3VyY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVu
ZENsaWVudCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
Z25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2Ny
aXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
ZnJvbnRlbmRDbGllbnQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmgKaW5kZXggMWJjNDQxODI4MGM0ZjA2NjgzYmYwMTJmZmIwMTA4YmIw
OGE4MTk0Yi4uMThlYThmZmMyYWY4MDIzYmIyOWM3Y2RhMTk0NGZiZTU1ZDA2M2ZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02Niw4ICs2Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJ
Y29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
Pik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRp
b25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmKTsKLSAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9y
ZUNhY2hlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFs
PFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworICAgIHZvaWQgZXZhbHVh
dGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZyYW1lVVJM
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
IGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+
JiYpOwogCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOwot
ICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlRXh0ZW5zaW9uRXJy
b3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gcGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7
CiAKICAgICBXZWFrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250
ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdG9yUGFnZUlk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ5MmI0Y2E2NThiNWU4ODBkZGM5ZjI1YjJmNzIxZDE4OTcx
NGU4ZGUuLjk0ODE5ZmIwOWIwMTZkMTNmZTlmYTIwM2JjMDgzMDJmNjY0ZmM4OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
CkBAIC0yNyw4ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBl
eHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
IHJlc3VsdCkgQXN5bmMKIAogICAgIENyZWF0ZVRhYkZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNvblVSTCwgVVJMIHNvdXJjZVVSTCkgLT4g
KEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3lu
YwotICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3Ry
aW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBj
b250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IGVycm9yKSBBc3luYwotICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5z
aW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBPcHRpb25hbDxTdHJpbmc+IHVzZXJB
Z2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAgIEV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgc3RkOjpv
cHRpb25hbDxVUkw+IGZyYW1lVVJMLCBzdGQ6Om9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlscywgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBSZWxvYWRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVu
c2lvbklELCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gdXNlckFnZW50LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaW5qZWN0ZWRTY3JpcHQpIC0+
IChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1Jl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBiZWZkMzU2NzkxYTYzNzNjMjEx
OGRhNzQzYTVkMzA5ZmEwMDE0YmQ2Li4wNzZiZWRlZjMxZmM4YzBhMWU0NWZjNTViYTZkMDE3Y2Qz
MWI1ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9u
L1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6flJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
QUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3BhZ2Uuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
OjpKb2luIHsgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mJiBleGNlcHRpb24pIG11dGFibGUgewpAQCAtODUsNyArODUs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgpCiAgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Okxl
YXZlIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtU
byhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6c2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBTFdBWVNf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHRpbWUpOwogICAgIG1fcGFnZS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OkNvb3JkaW5hdGVTZWVrVG8geyB0aW1lIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgIH0pOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykK
K3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3Bh
Z2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5OjpDb29yZGluYXRlUGxheSB7IH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgIH0p
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJh
Y2spCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxs
YmFjaykKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAg
IG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdGVQYXVzZSB7IH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcgog
ICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFj
ayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFja0lkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUik7CiAgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0ZVNldFRyYWNrIHsgdHJh
Y2tJZGVudGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhj
b25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAgIH0pOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxX
QVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNo
YW5nZWQgeyBzdGF0ZSB9KTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrU2Vzc2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlv
bkhhbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRU
aW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUik7CiAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Np
b24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaAppbmRleCA1YTdjM2EzODZmZGIzOThh
NzU3ZTVjZmNmZDg4NTY2ZjEzMDMzNDgyLi5iZTVlZjA4ZGQwZWU2OTkwYWRmMWIzZTAzYjM5MmZl
MDQyOGJmMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNz
aW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCkBA
IC01NSwyMSArNTUsMjEgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VSZWNlaXZlcnMuCiAg
ICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgcGxheVNlc3Npb24oT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9u
YWw8ZG91YmxlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBw
bGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwYXVzZVNlc3Npb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJh
Y2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlKTsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSBvdmVy
cmlkZXMuCiAgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KLSAgICB2b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGpvaW4oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYp
IGZpbmFsOwogICAgIHZvaWQgbGVhdmUoKSBmaW5hbDsKLSAgICB2b2lkIHNlZWtUbyhkb3VibGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFs
OwotICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
ZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7CisgICAgdm9p
ZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlh
UG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tTdGF0
ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgZmluYWw7CiAgICAg
dm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KaW5k
ZXggZWE0NTk5NDBiOWJlZjlhNDNhYzlkMjhlM2EzZDkzY2VjNGVkNTg0NC4uMTlkMzdkZGViNDlh
MGUyMTI0MmMzMGJjNmMzMzc4YmY1OTgyMDcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIE5vdFJlZkNvdW50ZWQgewog
CiAgICAgU2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRpbWUpIC0+IChib29sIHJlc3VsdCkgQXN5
bmMKIAotICAgIFBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxk
b3VibGU+IGhvc3RUaW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCisgICAgUGxheVNlc3Npb24o
c3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RU
aW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKICAgICBQYXVzZVNlc3Npb24oKSAtPiAoYm9v
bCByZXN1bHQpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNw
cAppbmRleCAyMWE2Nzg5MmQ0ZjU0NWFmYzIwYjA5OWEzMDM1ZmZjZjZmODdiZjQ5Li43NDIwN2Ez
NjQ1YTdjNWQ4YjA4YTkxMGYzNTkzMTY0MGRkNTRmZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNl
U2FuZGJveEV4dGVuc2lvbnMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTWVkaWFEZXZp
Y2VTYW5kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZHMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gaGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5PiBoYW5kbGVzOwogICAgIGRlY29kZXIgPj4gaGFuZGxlczsKICAgICBpZiAoIWhhbmRsZXMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDJm
YTQ1YzRmY2JlY2NiODA0OGEyYzBjZmRiNmMwYzc3M2UxNTM5OTMuLjU0Mzc2ZWExZTI2ZjQwMGZi
NWI3N2M2NTc2YzhmMWNlYjk3YWU5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpicm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzCiB9CiAKICNpZiBFTkFCTEUo
V0VCX1JUQykKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb25uZWN0VG9SVENEYXRh
Q2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgbG9j
YWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgcmVtb3RlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYgY2FsbGJh
Y2spCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdFRvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGxvY2FsSWRl
bnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHJlbW90ZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgY2FsbGJhY2soUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkuY29ubmVjdFRvUmVtb3RlU291cmNlKGxvY2FsSWRlbnRpZmllciwgcmVtb3RlSWRl
bnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyY2YzNTVjOTlhNjFlYzYy
OGU5MGZiNThlMjUwZDFkMWEzZjEwZmZhLi42NDZkMWRmMjdiZTdkNDYxNmQ3MzkzNjA5MjUxNWRk
YThlYWQ1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzQsOCArNzQsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgdm9pZCBzZXROZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBt
X25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBPcHRpb25hbDxh
dWRpdF90b2tlbl90PiBuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oKSBjb25zdCB7IHJldHVybiBt
X25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbjsgfQorICAgIHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NB
dWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25l
dHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IG5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuOyB9CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkhU
VFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9jb29raWVBY2NlcHRQb2xpY3k7IH0KQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VC
X1JUQykKLSAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJv
b2w+KT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPGJvb2w+KT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJv
bSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuOwogI2Vu
ZGlmCiAKICAgICBSZWZQdHI8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPiBtX3dlYklEQkNvbm5l
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZWEy
YTg2NzNjYzIwOWE1ODRiNjRjMGY4ODVlZmE4NmViZDg1ZTI1My4uYzhiNGExOGY3ZTk0MjQ1NGIw
YWE5NjY2MTJmMTkzYWNmZGFjODY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JUQykK
LSAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3lu
YworICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVtb3RlU291cmNlKHN0cnVjdCBXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3Vs
dCkgQXN5bmMKICNlbmRpZgogCiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oCmluZGV4IDlmNDY4NWQxM2FiZDJiNGFjOGM1
Mzc4YjhlNTEyZjljMDI5ZGIzYjAuLjAzNzYzYWE1ZmI4ZWJkM2JjMjQyNGU3Njk5ZWIxMmI1Zjc4
ZmM2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTM0LDcgKzM0LDcgQEAg
c3RydWN0IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uOwogICAgIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2ll
QWNjZXB0UG9saWN5OwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW47CiAjZW5kaWYKIAogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA1MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZm
MDQ0NDQxNGI3NmJhZDA2Li40YjBiNjZiZWJiZjc2MDliY2E0MGY5MjhlNjQwMThhMzEwZDk5YjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgV2ViTG9hZGVyU3RyYXRlZ3k6OlN5
bmNMb2FkUmVzdWx0IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkRGF0YVVSTFN5bmNocm9ub3VzbHko
Y28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6
U3luY0xvYWRSZXN1bHQ+IFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNs
eVVzaW5nVVJMU2NoZW1lSGFuZGxlcihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQorc3RkOjpvcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6U3luY0xvYWRSZXN1bHQ+IFdlYkxv
YWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxl
cihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGF1dG8qIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5jbGll
bnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/ICZ3ZWJG
cmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CkBAIC03NzQsNyArNzc0LDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2UKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBC
b3VuZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkxvYWRl
clN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZCgqcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDZlNTZm
YzQwNjdiM2U4OTQ1ZjY1OTgzMTRhMjZmOGJkMmExZmI3NWMuLmNhMjM0OTk1ODY2NmE4MDFiMGUw
YTZiZDc2N2RiYmNjY2ZiNzE2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwogICAgIH07Ci0gICAgT3B0aW9uYWw8U3luY0xvYWRSZXN1bHQ+IHRy
eUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKFdlYkNvcmU6OkZyYW1l
TG9hZGVyJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTeW5jTG9hZFJlc3VsdD4gdHJ5TG9hZGluZ1N5
bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBTeW5jTG9hZFJlc3VsdCBsb2FkRGF0YVVSTFN5bmNocm9ub3VzbHkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRl
bnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBiYzBiY2Q5ZGVmZDIwZWUyY2I4Mjk4ODcyYzg5
MTk3ODI5Mjk1YWQyLi4zYjRhYzI5YjBkZjc2NWMyNDlmNzcyNTcxZjQ5NDY2YzU4OWU3MWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6cGxhdGZv
cm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPAogICAg
IG1fc2VuZERhdGFDYWxsYmFja3MuYWRkKGRhdGFJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U3RyZWFtOjpwbGF0Zm9ybVNlbmRIYW5k
c2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5LCBGdW5jdGlv
bjx2b2lkKGJvb2wsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJTb2NrZXRT
dHJlYW06OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
PiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3QgbmV4dERhdGFJZGVudGlmaWVyID0g
MTsKICAgICB1aW50NjRfdCBkYXRhSWRlbnRpZmllciA9IG5leHREYXRhSWRlbnRpZmllcisrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aAppbmRleCBiNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2RkZTliMDYxMjczNmEwOTc4Li40NmQwNDc2
NWJlNjcxZWEzNGQ3MWExYTNkMDEzOTliZDIwN2ZhOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlCiAgICAgdm9pZCBwbGF0
Zm9ybVNlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCwgRnVuY3Rpb248dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNp
emVfdCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJik7CisgICAgdm9pZCBwbGF0Zm9ybVNl
bmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2b2lkKGJv
b2wsIGJvb2wpPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKICAgICBzaXpl
X3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5oCmluZGV4IDMyM2Yy
NWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1ZTQuLmM1OGI1OTkzZDMwYTY1NDBjNjRj
ZDlkNWQxMDNjNTFiZjA0ZTU3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTk0LDcgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgU1RBVEVfQklORElORyB9OwogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE1BWF9TT0NLRVRfT1BUSU9OIHsgcnRjOjpTb2NrZXQ6Ok9Q
VF9SVFBfU0VORFRJTUVfRVhUTl9JRCArIDEgfTsKLSAgICBPcHRpb25hbDxpbnQ+IG1fb3B0aW9u
c1tNQVhfU09DS0VUX09QVElPTl07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fb3B0aW9uc1tN
QVhfU09DS0VUX09QVElPTl07CiAKICAgICBEZXF1ZTxzaXplX3Q+IG1fYmVpbmdTZW50UGFja2V0
U2l6ZXM7CiAgICAgc2l6ZV90IG1fYXZhaWxhYmxlU2VuZGluZ0J5dGVzIHsgNjU1MzYgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGZhYjAwZGFkYzY2NDYzNTNjNjgyZjkxOWIwNWUxZWFhYzJiMzFiYzAuLmMwMmY4NDBjNDA3
NDgwMWJkODc0ZjZjZjgzMmU5N2I4ODQxZjVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjM0Miw3ICsyMzQyLDcgQEAg
Ym9vbCBQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAgICAgaWYgKCFuc01lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBPcHRpb25hbDxpbnQ+IG9wZW5JblByZXZpZXdJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludD4gb3BlbkluUHJldmlld0luZGV4OwogICAgIFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+
IGl0ZW1zOwogICAgIGF1dG8gaXRlbUNvdW50ID0gW25zTWVudSBudW1iZXJPZkl0ZW1zXTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1Db3VudDsgaSsrKSB7CkBAIC0yMzU2LDcgKzIzNTYs
NyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBldmVudCkKICAgICB9CiAgICAgUERGQ29udGV4dE1lbnUgY29udGV4dE1lbnUgeyBw
b2ludCwgV1RGTW92ZShpdGVtcyksIFdURk1vdmUob3BlbkluUHJldmlld0luZGV4KSB9OwogCi0g
ICAgT3B0aW9uYWw8aW50PiBzZWxlY3RlZEluZGV4ID0gLTE7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IHNlbGVjdGVkSW5kZXggPSAtMTsKICAgICB3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93UERGQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIG1faWRlbnRpZmll
ciksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQREZDb250ZXh0TWVudTo6UmVwbHkoc2Vs
ZWN0ZWRJbmRleCkpOwogCiAgICAgaWYgKHNlbGVjdGVkSW5kZXggJiYgKnNlbGVjdGVkSW5kZXgg
Pj0gMCAmJiAqc2VsZWN0ZWRJbmRleCA8IGl0ZW1Db3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjZmZDQ0NDA3YzI5Nzc1NGJi
MjFiZDQwNmVlYTIwZGRlN2M2ZDFjZS4uYjY0YWNhYmRmNzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcw
ZWQzMjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUZy
YW1lTG9hZFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVz
dC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgPyBzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
IDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdldCBm
cmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBi
b29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmlldyBm
cm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9y
IHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nl
c3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxs
b3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9w
dXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgcmV0dXJuIG1fbnBSdW50aW1lT2Jq
ZWN0TWFwLmV2YWx1YXRlKG5wT2JqZWN0LCBzY3JpcHRTdHJpbmcsIHJlc3VsdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCmluZGV4IGM2YWYzZmI4YzQ3YjgxZDZlZTg2NzUwM2Y5ZDVmZjlkMzI2
N2Q4YTguLmE4NWQ2YjdhNzY3NGExOWZlNjc3MzJjMTZiNTYxMzk2YzQxZWRlMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cmVmcmVzaFBsdWdpbnMoKQogI2VuZGlmCiB9CiAKLVZlY3RvcjxQbHVnaW5JbmZvPiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oUGFnZSYgcGFnZSwgT3B0aW9uYWw8VmVjdG9y
PFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMp
CitWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBh
Z2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiYgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgcG9wdWxhdGVQbHVnaW5DYWNoZShwYWdlKTsKQEAgLTg4LDcgKzg4LDcg
QEAgVmVjdG9yPFBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhQ
YWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3IKIAogVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYgcGFnZSwg
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnM7CiAgICAgYXV0byBwbHVnaW5zID0gcGx1Z2luSW5mbyhw
YWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CiAKICAgICBwbHVnaW5zLnJlbW92ZUFs
bE1hdGNoaW5nKFsmXSAoYXV0byYgcGx1Z2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDQ4Mzgz
YjM2M2Y1OTJlYTQwMDk4NjkxZTRiODk5ODA4MWY2MGQ0MzIuLjk3MDY2NmVhYzAwZGEwODhhZGJk
ZGQyZGEwZDBiYzNlZDkyZWRlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKLSAgICBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFs
OworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBh
Z2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlm
aWVyPj4mKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJs
ZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQg
cmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKICAgICBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4gbV9jYWNoZWRBcHBsaWNhdGlvblBsdWdpbnM7Ci0gICAgT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX2NhY2hlZFN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX2NhY2hlZFN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXJzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBhYjU3MGJmZTI5M2Y2
NGFjNzI3MzAzYzlhZWY2ZjA3ODQ0M2YzNjliLi5lNGQ3MWZkMjNkZWJhNGRlYWQxYjEwZmRiOTQy
M2JjMGI2ZTA0NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0
YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCB1c2VyQWdlbnQgfSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVJc0ltcG9ydGVkKCkKICAgICAgICAgbV90YXNrc1Bl
bmRpbmdPcmlnaW5JbXBvcnQudGFrZUZpcnN0KCkoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoaW5nUmVxdWVzdCwg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVzdWx0KQordm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNo
aW5nUmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4m
JiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggNjk3OGExZTUzNzY4MDc1MmE3YzA2MTE5YzQ2YWM0ZjVkM2Q4NDJlYy4uMWI1NTRj
OTQ0OWRhNGVhYTI0NjE3ZjExYTExZmE3NTNiNWQ2ZWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAg
LTczLDEyICs3MywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxl
VW5yZWdpc3RlckpvYkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmluYWw7CiAK
ICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgbWF0Y2hSZXF1
ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE+JiYpOworICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgbWF0Y2hS
ZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCBkaWRHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90
IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50
VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
Z2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IGI3ODE4Njg2OGJlMDg2NDAzMGQwYTEyNGI1Njc1MmNmNWE2MTY3MTEuLmQyMmQ2ZmQ2
OGEyN2ZhM2NhOGQxNzQ1ZjA2NmYyZDI3MGQxYmZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dDbGllbnRD
b25uZWN0aW9uIHsKICAgICBKb2JSZWplY3RlZEluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwg
ZW51bTpib29sIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpCiAgICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZldGNoT3B0
aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCi0gICAgVXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQorICAgIFVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIFVwZGF0
ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlIHN0
YXRlKQogICAgIEZpcmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0UmVnaXN0cmF0aW9uTGFzdFVw
ZGF0ZVRpbWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgV2FsbFRpbWUgbGFzdFVwZGF0ZVRpbWUpCkBAIC0zOCw3ICszOCw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU2V0U1dPcmlnaW5UYWJsZVNoYXJl
ZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKICAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIg
ZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzIG1lc3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSBz
b3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAKLSAgICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1
aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gZGF0YSkKKyAgICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1
aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBkYXRhKQogICAgIERpZEdldFJlZ2lzdHJhdGlv
bnModWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRpb25zKQogICAgIFJlZ2lzdHJhdGlv
blJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdElkZW50aWZpZXIsIHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMDkwMDU0ZjAxNjA2NTlmMDZmYjU3ZTEz
MjNhYWYzYmQwY2EzODE2MS4uNjM4NDExN2NkNWUxNTUxNmQwOThjZWFiMDZkM2M1NDliN2QxYzhk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTcyLDEyICsxNzIs
MTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0VXNlckFnZW50KFN0
cmluZyYmIHVzZXJBZ2VudCkKICAgICBtX3VzZXJBZ2VudCA9IFdURk1vdmUodXNlckFnZW50KTsK
IH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0
YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgZG9lc0hhbmRsZUZldGNoKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6c2VydmljZVdvcmtlclN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCiB7CiAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3RhcnRlZCB7IGpvYkRhdGFJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZG9lc0hhbmRsZUZldGNoIH0sIDApOwogfQogCi12
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyRmFpbGVkVG9T
dGFydChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6c2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNl
cHRpb25NZXNzYWdlKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQgeyBqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGV4Y2VwdGlvbk1lc3NhZ2UgfSwgMCk7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIHNlcnYKICAgICB9CiAKICAgICBhdXRvIGNsaWVudCA9IFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLmNv
cHlSZWYoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1
ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4pOwotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBjbGllbnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBjbGllbnRJZDsKICAgICBpZiAob3B0aW9ucy5jbGllbnRJZGVudGlmaWVy
KQogICAgICAgICBjbGllbnRJZCA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG9wdGlvbnMuY2xpZW50SWRlbnRpZmllci52YWx1ZSgp
IH07CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aQogICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4p
LCAwKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNo
SW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZGlkRmluaXNoSW5zdGFsbChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxsKGpvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCksIDApOwogfQpAQCAtMzE5LDcgKzMxOSw3IEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZp
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlCiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpGaW5kQ2xp
ZW50QnlJZGVudGlmaWVyIHsgcmVxdWVzdElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGll
bnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNs
aWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKIHsKICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZp
ZXIpKSB7CiAgICAgICAgIGlmIChoYXNTZWN1cml0eUVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCA5NWQ4MTgxZjIzNTM2ZjBlYjMyYWFkZDhiN2U3ZWQ2ZjdlNjY1
MjYyLi4zMzE0MzM5ZTA5M2JjNjVjNzJkYmE1MmNlYWRhYWM3NDUyZjFjZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLgogICAgIHZvaWQgZXN0YWJs
aXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50
cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9p
ZCB3b3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRD
aGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAKICAgICAvLyBJ
UEMgbWVzc2FnZXMuCi0gICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChPcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFsOwotICAgIHZvaWQgc2Vy
dmljZVdvcmtlckZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlV29ya2Vy
U3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVG
ZXRjaCkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2Up
IGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0
cmluZyYmIHJlZmVycmVyKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpT
Y3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBv
cnRlZFNjcmlwdHMpOwogI2VuZGlmCi0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKKyAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRf
dCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2Vu
dCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTMxLDggKzEzMSw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9mcmFtZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgppbmRleCA4NGIxNjhhMDQwZWNkYmM4NTI2NThmN2Q2Y2FkMTA1MWJj
MzZhZTNiLi5mNjY0YTRlOTEyMmMxNTFlMmM1Njc1NTA5MDVlYzk1MDI1NzdiYjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyAr
MzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlw
dCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsK
ICNlbmRpZgotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xp
ZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKKyAgICBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wg
aGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFs
bFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGNsaWVudHNEYXRhKQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAg
IFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBlMGY0N2Q4
NmE5NjhmYzhjZjk1Y2VmM2EzZTE1MDQzNTRiYjFlZjU1Li45ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4
ZGY1NDMwNGVlNzUzMTY5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOwotICAgIE9wdGlvbmFs
PEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+
IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBWYXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5p
cXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggZmI2MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0
OThlODBkMGVmNTYxNy4uNzJlZTliYTRhNTJhMDA4OTMxOWYyZGYwMjVmYzBmYmZmNWYxYzA4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygp
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3Jp
cHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgY29uc3QgT3B0aW9u
YWw8dWludDY0X3Q+JiB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3Jp
cHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKK3ZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU2Ny
aXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBpZiAoaW1tZWRpYXRlbHkgPT0gSW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpIHsKICAgICAgICAgUGFnZTo6Zm9yRWFjaFBhZ2Uo
WyZdIChhdXRvJiBwYWdlKSB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1f
dXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgW10geyByZXR1cm4gVmVjdG9yPHN0ZDo6cGFpcjxP
cHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+
dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgm
d29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50NjRf
dD4sIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KHVzZXJTY3JpcHRJZGVudGlmaWVyICYmIHNjcmlwdHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0o
YXV0byYgcGFpcikgeyByZXR1cm4gcGFpci5maXJzdCA9PSB1c2VyU2NyaXB0SWRlbnRpZmllcjsg
fSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDcwLDkgKzQ3MCw5IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiB3b3JsCiAgICAgbV91c2VyU2NyaXB0cy5yZW1vdmUoJndvcmxkKTsK
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0SW50
ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IE9wdGlvbmFsPHVp
bnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyLCBVc2VyU3R5bGVTaGVldCYmIHVzZXJT
dHlsZVNoZWV0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFVzZXJTdHlsZVNo
ZWV0JiYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0g
bV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgW10geyByZXR1cm4gVmVjdG9yPHN0ZDo6
cGFpcjxPcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4oKTsgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0
eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICh1c2VyU3R5bGVTaGVldElkZW50aWZpZXIgJiYgc3R5bGVT
aGVldHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgcGFpcikgeyByZXR1cm4gcGFpci5m
aXJzdCA9PSB1c2VyU3R5bGVTaGVldElkZW50aWZpZXI7IH0pICE9IG5vdEZvdW5kKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCBjZTkwYTlkOTNl
NDEwODIyYmQzNDZlZDI2MjQ4Njk1OTM3NmEwZjMxLi4yMGZmODUxNWIxMmIxOWIxZmRkYjkwYWI3
ODdmMGE4MTFjNjRiNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC0xMDgs
OSArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMo
KTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdXNlclNjcmlwdElkZW50
aWZpZXIsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mIHVzZXJTY3JpcHRJZGVudGlmaWVy
LCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAg
ICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZFVzZXJTdHls
ZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFs
PHVpbnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU3R5bGVT
aGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwogICAgIHZvaWQgcmVt
b3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWlu
dDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdF
X0hBTkRMRVJTKQogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xMTksMTAgKzExOSwxMCBA
QCBwcml2YXRlOgogCiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPE9wdGlvbmFsPHVpbnQ2NF90PiwgV2ViQ29yZTo6VXNl
clNjcmlwdD4+PiBXb3JsZFRvVXNlclNjcmlwdE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4+IFdvcmxkVG9Vc2VyU2NyaXB0
TWFwOwogICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1fdXNlclNjcmlwdHM7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3Rk
OjpwYWlyPE9wdGlvbmFsPHVpbnQ2NF90PiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+Pj4gV29y
bGRUb1VzZXJTdHlsZVNoZWV0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4sIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50
NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4+IFdvcmxkVG9Vc2VyU3R5bGVTaGVldE1h
cDsKICAgICBXb3JsZFRvVXNlclN0eWxlU2hlZXRNYXAgbV91c2VyU3R5bGVTaGVldHM7CiAKICNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcAppbmRleCA3OWEwNDYyOWM5YzIyNzFmNTk0NWE0NTFhMmFhYTMxYTU0NjA4
MjRkLi42NDdhNzc1MDFjZDljMjRkMDlmYTVjMWU3OTg2ZDY5OWFlYmMwNTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwg
T3B0aW9uYWw8RmxvYXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFn
ZXMgYWxsb3dBbmltYXRlZEltYWdlcykKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNo
YXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFnZXMgYWxsb3dBbmlt
YXRlZEltYWdlcykKIHsKICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IHJlbmRlckltYWdlLmNhY2hl
ZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCmluZGV4IGFmM2Q5ZThh
ZDRiNmU2ZDQxNGQ0MjM1NDhhMzI5NDcyMmYxNzE3NTMuLjAwOGNmZDc4MmQwN2VmZGJlNzhiMmI2
NjQ0YmU1ODFiMTJkM2VjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgK
QEAgLTM4LDYgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRt
YXA7CiAKIGVudW0gY2xhc3MgQWxsb3dBbmltYXRlZEltYWdlcyA6IGJvb2wgeyBObywgWWVzIH07
Ci1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6
UmVuZGVySW1hZ2UmLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNjcmVlblNpemVJblBp
eGVscyA9IHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlcyA9IEFsbG93QW5pbWF0ZWRJ
bWFnZXM6Olllcyk7CitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRt
YXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2Vz
ID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggMThjMTc1OTJkNGM0OTM5YjkzZWUzNTI5Y2I1Y2ZiNjA1OThiNDkwOC4uZTlmNDZkOTFm
MDEwNDM3ZDliOWFkZDhmYjI4NzZkMDhjNGU5NDMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTI4Miw4ICsyODIsOCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhG
cmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZQogCiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKLSAgICBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG5ld1BhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uo
d2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmll
cigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywg
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQ
YWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCBJ
UEM6OlRpbWVvdXQ6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246Ok1haW50YWluT3Jk
ZXJpbmdXaXRoQXN5bmNNZXNzYWdlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01
MzEsNyArNTMxLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmhvdmVyU3VwcG9ydGVkQnlBbnlB
dmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5ob3ZlclN1
cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKTsKIH0KIAotT3B0aW9uYWw8UG9p
bnRlckNoYXJhY3RlcmlzdGljcz4gV2ViQ2hyb21lQ2xpZW50Ojpwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzPiBXZWJDaHJvbWVDbGllbnQ6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS5wb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKTsKIH0KQEAgLTg0OCw3
ICs4NDgsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbGV0aQogICAgIG1fcGFnZS5zaG93U2hhcmVT
aGVldChzaGFyZURhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKQogewogICAg
IG1fcGFnZS5zaG93Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUKICAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvbW1lbmRlZFNjcm9sbGJhclN0
eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1N0eWxlKSkpOwogfQogCi1PcHRp
b25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PiBXZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7CiAg
ICAgcmV0dXJuIG1fcGFnZS5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA4NzhhNTg2Yjk3NGY4NDE5Mzc0ZWYyZmMzYmY4NGRkNDU5YTk3MzhhLi41N2Qz
MjhmZTY4Zjg1NGJkODk1MzM5ZDQzNWJlZWE2ZDJkNmEyN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRC
eVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaG92ZXJTdXBw
b3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3Rlcmlz
dGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25TZXQ8
V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09m
QWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBIb3N0
V2luZG93IG1lbWJlciBmdW5jdGlvbiBmaW5hbHMuCkBAIC0yMDEsNyArMjAxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Rmls
ZUNob29zZXImKSBmaW5hbDsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFj
dHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBzaG93Q29u
dGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJ
bmZvPj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyJikgZmluYWw7CiAKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBmaW5hbDsKQEAgLTMyNiw3ICszMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAgICAgdm9pZCByZWNvbW1lbmRlZFNj
cm9sbGJhclN0eWxlRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGJhclN0eWxlIG5ld1N0eWxlKSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJl
ZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5jcHAKaW5kZXggNzczZjIwNTU5N2RkMDg3YjRkODMxYTU3ODNjYTM0YzdmNjQwYzFj
ZS4uYTEzMDIyY2I4ZjZlZTY2MzkzM2RkODRiNjdmOGY2ZjA0NDA4Y2VkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcApAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmRldmlj
ZU9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUgYWxwaGEsCiAgICAgfQogfQogCi12b2lkIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmRldmljZU1vdGlvbkNoYW5nZWQoZG91Ymxl
IHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlv
biwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgT3B0aW9uYWw8ZG91YmxlPiB4Um90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IHlSb3Rh
dGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkKK3ZvaWQgV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjo6ZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHlSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQogewog
ICAgIFZlY3RvcjxXZWFrUHRyPFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGllbnQ+PiBjbGllbnRz
OwogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9kZXZpY2VNb3Rpb25DbGllbnRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgKaW5kZXggMmZi
ZWJiNGI1YTNjOGY0MTAyY2YxYjMzMzdjOWI4Mzk3YzY3NGNlMy4uMzJkNTIxNjg5YWMwODg3NGVh
MDVjNjExZDc3MzliYjNmMzNkZGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nRGV2aWNlTW90aW9uKFdlYkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGll
bnQmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZ0RldmljZU1vdGlvbihXZWJDb3JlOjpN
b3Rpb25NYW5hZ2VyQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNo
YW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpIGZpbmFsOwotICAg
IHZvaWQgZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgZG91YmxlLCBPcHRpb25hbDxkb3VibGU+LCBPcHRpb25hbDxkb3VibGU+LCBPcHRp
b25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIGRldmljZU1vdGlvbkNoYW5nZWQoZG91Ymxl
LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmlu
YWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5t
ZXNzYWdlcy5pbgppbmRleCBhOTk1NDdjMjZkMjc2NjJhODIxMTQwY2Q0NDJhNWQyMGQyMmZlMDQx
Li4zMzljZDIxNWQ4NTU1MzIyNGJiNjY4NjdlN2E5NjU3MTY5YTVjNjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNz
YWdlcy5pbgpAQCAtMjMsNiArMjMsNiBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiBtZXNzYWdlcyAtPiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyIHsKICAgICBEZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQoZG91YmxlIGFs
cGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGRv
dWJsZSBjb21wYXNzQWNjdXJhY3kpCi0gICAgRGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUgeEFj
Y2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBP
cHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4geVJvdGF0aW9u
UmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQorICAgIERldmljZU1vdGlvbkNo
YW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUg
ekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3Vi
bGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gelJv
dGF0aW9uUmF0ZSkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAwMDVmN2Jl
MGU1NWU4MTQzZGQwNjdjYmE0MzMzNDEwYjYwMDdiMWJhLi45MzBjYjMzMzYxZGQzOGQ3Y2E2MzBm
NDUxMmVkZjExMTVhMmM3ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQoKQogICAg
IHJldHVybiB1bmlxdWVUZXh0Q2hlY2tpbmdSZXF1ZXN0SUQrKzsKIH0KIAotYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UpCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkRGVsZXRlUmFuZ2UoKm1fcGFnZSwgcmFu
Z2UpOwogfQpAQCAtMTI2LDIyICsxMjYsMjIgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3Vs
ZEVuZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkRW5kRWRpdGluZygqbV9wYWdlLCBy
YW5nZSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUm
IG5vZGUsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRv
ckluc2VydEFjdGlvbiBhY3Rpb24pCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0
Tm9kZShOb2RlJiBub2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VU
b1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgcmV0dXJuIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRJbnNlcnROb2RlKCptX3BhZ2Us
IG5vZGUsIHJhbmdlVG9SZXBsYWNlLCBhY3Rpb24pOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVu
dDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiti
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZVRvUmVwbGFjZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uIGFjdGlvbikKIHsKICAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCgpLnNob3VsZEluc2VydFRleHQoKm1fcGFnZSwgdGV4dCwgcmFuZ2VUb1Jl
cGxhY2UsIGFjdGlvbik7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29s
IHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5
LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSgqbV9wYWdlLCBmcm9t
UmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNlbGVjdGluZyk7CiB9CiAgICAgCi1ib29s
IFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHN0eWxlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9w
YWdlLCBzdHlsZSwgcmFuZ2UpOwogfQpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZGlkV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSk7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9w
YWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggYmFkMGNiMzcxMmE0Mzg1MjBiNThlMTZiMjA0MzZkZWE4NGQ1NTAzNi4u
MzBlNTZmNzM4ZGQ4ZTVjMTA1MDhmY2FjMDdlNjU1OTY1ZjdiNDlkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJv
b2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgZmluYWw7CiAgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCkgZmluYWw7CkBAIC01NiwxMSArNTYsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICBi
b29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFs
OwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYp
IGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0
aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0
QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3Jl
OjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJD
b3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7CisgICAgYm9vbCBzaG91bGRD
aGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7
CiAgICAgCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUHJv
cGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0
ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYpIGZpbmFsOwogCkBAIC04NSw5ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxlZENvbXBvc2l0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVDb21wb3NpdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwotICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAzZWExY2EwNjcwYmNjMDQ0NGQxMDQxMjE3NGU2OGVmMDk4
YzllMmIyLi41ZWQyMzFjODU1YzA1OWVkYWY3MzQ4MWQ1MGI5MzE4ZTRlZTYyMTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKICAgICBtX2ZyYW1lLT5pbnZhbGlk
YXRlKCk7CiB9CiAKLU9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQ
YWdlUHJveHlJRCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJ
RCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
ZnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZnJhbWUtPmZyYW1lSUQoKTsKIH0KQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0cnVuY2F0ZWRU
aXRsZS5zdHJpbmcsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIE9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IHVz
ZWRMZWdhY3lUTFNGcm9tUGFnZUNhY2hlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJ
bnNlY3VyZUNvbnRlbnQsIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRM
U0Zyb21QYWdlQ2FjaGUpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC05NDksOCArOTQ5LDggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBhdXRvIHJlcXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVy
KCkudmFsdWUoKTsKIAogICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFtZSA9IHJlcXVlc3Rlci5nbG9i
YWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLmZyYW1lSUQpIDogbnVsbHB0
cjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nRnJh
bWVJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1l
SUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nRnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
cGFyZW50RnJhbWVJRDsKICAgICBpZiAocmVxdWVzdGluZ0ZyYW1lKSB7CiAgICAgICAgIG9yaWdp
bmF0aW5nRnJhbWVJRCA9IHJlcXVlc3RpbmdGcmFtZS0+ZnJhbWVJRCgpOwogICAgICAgICBpZiAo
YXV0byogcGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJhbWUtPnBhcmVudEZyYW1lKCkpCkBAIC05
NjUsNyArOTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAgICAgV1RGTW92ZShw
YXJlbnRGcmFtZUlEKSwKICAgICB9OwogCi0gICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKICAgICBpZiAoYXV0byYgcGFnZUlEID0gcmVx
dWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLnBhZ2VJRCkgewogICAgICAgICBpZiAoYXV0
byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKSkKICAg
ICAgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gd2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpOwpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93KQogfQogCiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggOTczNmRmNWJlNzJhY2NmMjVjOWYzZGQxZGMzNzE4MzJkNjc0NjUwYi4u
OTM4NmVmYTU5YTU1NTU2NWUxYTQ2NGJiZDc4MmI3NTRjZWQ4MTk0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlEKCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5
SUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkg
ZmluYWwgeyByZXR1cm4gISFtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcjsg
fQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9z
ZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6
OlVzZWRMZWdhY3lUTFM+KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKQEAgLTI3MSw3ICsyNzEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyYpIGZpbmFsOwog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVmPFdlYkZyYW1l
PiBtX2ZyYW1lOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZyYW1l
Q2FtZUZyb21CYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlSWNvbkxv
YWRpbmdDbGllbnQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgT3B0aW9uYWw8RnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyPiBt
X2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDVjOGMwOWQ3ZmU2MzFk
MWQ0MGY1Mzg5Y2VhMDdmNjEwMTYyMTczZWUuLmVhMDJmMmFjMTZmNzMxYmY1NjQyZjg2NzhkODZh
NDk4MTFkOGMzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoQWNjdXJhY3ko
Ym9vbCBlbmFibGVkKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFn
ZSwgZW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmlu
ZGV4IGVjODMwY2ViMDNhZmEzZTAxM2ZkYTA2ZjE0MGU1NDQ2NGQxZGUzNjkuLmIxNjgxNjc0ODk2
MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXZva2VBdXRob3JpemF0
aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCBhNjlkZDY1MjNiMWNmNmRjOWY1YWQ1OGM2OWQ5ZDNjYzViMTVjYzE2Li4wMjhlOGM2ZTNl
ODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogICAgIHJldHVybiBuZXcgQmxvYlJlZ2lz
dHJ5UHJveHk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50
aWZpZXIoY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIoY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFpczxQYWdlUGFzdGVib2FyZENvbnRleHQ+KGNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzkzLDE2ICszOTMsMTYgQEAg
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gaXRlbXNDb3VudDsKIH0KIAotT3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbEluZm87CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbzsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVi
b2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5m
byksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewot
ICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSwg
Y2hhbmdlQ291bnQsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwog
ICAgIHJldHVybiBpbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGIz
OGEwYjFkMGU1ZjlmODFiNTFlZjk2MjM5N2Y3NDhmYzg0YzhkMDIuLmUyODA5OTYzZjRmNTA2ODFi
N2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTkyLDggKzkyLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2
NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBib29sIGNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKaW5kZXggZjQ3NWNiMzNlYTg5NzQyY2E0ZTMzN2VjZDU2MGM4ZmM5MDM5NDYx
NC4uYmI0NzA5OTM2MDE4ZTQ5MTFlNDA3ODUyZGRkMTRiYTlhMDJlNzY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlIHsKICAgICBib29sIGRlZmF1bHRMYW5nIHsgZmFsc2UgfTsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTEsMjkgKzUxLDI5IEBA
IHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxT
dHJpbmc+IHZvaWNlVVJJOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2b2ljZVVSSTsKICAg
ICBkZWNvZGVyID4+IHZvaWNlVVJJOwogICAgIGlmICghdm9pY2VVUkkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFt
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4g
bGFuZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFuZzsKICAgICBkZWNvZGVyID4+IGxh
bmc7CiAgICAgaWYgKCFsYW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gbG9jYWxTZXJ2aWNlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9j
YWxTZXJ2aWNlOwogICAgIGRlY29kZXIgPj4gbG9jYWxTZXJ2aWNlOwogICAgIGlmICghbG9jYWxT
ZXJ2aWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gZGVmYXVsdExhbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZWZhdWx0TGFuZzsKICAg
ICBkZWNvZGVyID4+IGRlZmF1bHRMYW5nOwogICAgIGlmICghZGVmYXVsdExhbmcpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5oCmluZGV4IGNiMjM4OWZjMGRiMGZiMTgwMGY2MWFkOWY0MGY4MWEyNDkzMWU1YjMuLjdjYTNl
ZDBkZjU4ZjAxZTY1MThkOGU0Y2YwYWNiOGY2NGFiNjFjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdlYkNvcmU6OlNpbXBsZVJhbmdlIHJhbmdlOwogICAgICAgICBzaXplX3QgbG9jYXRpb25JblJv
b3Q7ICAgIAogICAgIH07Ci0gICAgT3B0aW9uYWw8UmFuZ2VBbmRPZmZzZXQ+IHJhbmdlQW5kT2Zm
c2V0UmVsYXRpdmVUb1NlbGVjdGlvbihpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgbGVuZ3RoKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJhbmdlQW5kT2Zmc2V0PiByYW5nZUFuZE9mZnNldFJlbGF0aXZl
VG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCk7CiAKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgcmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oY29u
c3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1
aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMb2NhdGlvbiwgdWlu
dDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHkubW0KaW5kZXggNGVkM2VmOTUwNWY1MWYzMjg1NTQzMDE0OTJhYzVhNGU2
OTI0ZGNiZC4uNzBkMWFiYjIwYTY0ZmVhMzkwMGY0YzcyOGRkZWFjNWUxYWU1M2VmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtNzEsNyArNzEsNyBAQCBz
dGF0aWMgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiByZWxldmFudE1hcmtl
clR5cGVzKCkKICAgICByZXR1cm4geyBEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tp
bmcsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIgfTsK
IH0KIAotT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNl
dD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJlbGF0aXZlVG9T
ZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJlbGF0aXZlVG9TZWxlY3Rpb24oaW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBhdXRvJiBmcmFtZVNlbGVjdGlvbiA9
IG1fcGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5zZWxlY3Rpb24oKTsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZVNlbGVjdGlvbi5zZWxl
Y3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCmluZGV4IGQ5Y2QyMTI2YmUxNWY1YTViNjIyNmI0MmI5ZGI3Yzc5ZjE5NWQzMDIuLmJkYzNk
YmVlN2U1OGJkY2NhNTUxYjg1ZDkyNThmNzBkYzM0ZGRhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtOTUsOCArOTUsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pID0g
MDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3Qg
LypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkqLywgTW9ub3RvbmljVGltZSAvKnN0YXJ0
VGltZSovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQo
dWludDY0X3QgLypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkqLykgeyB9CkBAIC0xODAs
NyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2Uo
T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldENvbG9yU3BhY2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBmMmY5OTczMDgzNGFiYjZjY2Q5Zjgz
NjNhZmY3MWY4ZjliNTQ3OWNmLi5hOGZmNGY1YTc5NDdkODkwZDdhOTczNWRkNjhkYjVjNDgxMDE3
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzEsOCArMzEsOCBAQCBtZXNzYWdlcyAtPiBEcmF3
aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAg
ICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRD
b2xvclNwYWNlKHN0cnVjdCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2UpCi0gICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQorICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQorICAg
IFNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmll
d0V4cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggYjYyOThkNWRkN2Y0
NmE3ZjhhNWY0MjEzNzAyMDdhYTU3YzNkYzU5OS4uMzY2ZWZkYjliNTI2YjRiMTFkMDY0MGRlZmE1
N2JlYTc0ZTIwMjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBjcmVhdGVUeXBlRXJyb3IoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICByZXR1cm4gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0
KSwgbWVzc2FnZSkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGNvbnZlcnRUb1Vp
bnQ2NChKU0M6OkpTVmFsdWUganNWYWx1ZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCiB7CiAgICAgaWYgKGpzVmFs
dWUuaXNOdW1iZXIoKSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBqc1ZhbHVlLmFzTnVtYmVy
KCk7CkBAIC02NjUsNyArNjY1LDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6YWRkT3V0Z29pbmdNZXNz
YWdlTGlzdGVuZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLAogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHVp
bnQ2NF90PiBkZXN0aW5hdGlvbklERnJvbUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlc3RpbmF0aW9uSURGcm9tQXJndW1lbnQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlUmVmLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KUyhnbG9iYWxP
YmplY3QsIHZhbHVlUmVmKTsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRUb1VpbnQ2NChqc1Zh
bHVlKTsKQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGRlc3Rp
bmF0aW9uSURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gbWVzc2FnZUlERnJv
bUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2
YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWVSZWYgdmFsdWVSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgdmFsdWVSZWYpOwogICAgIGF1dG8g
cmVzdWx0ID0gY29udmVydFRvVWludDY0KGpzVmFsdWUpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gYm9vbCBlbmNvZGVOdW1lcmljVHlwZShJUEM6
OkVuY29kZXImIGVuY29kZXIsIEpTCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclR5cGU+Ci1PcHRpb25hbDxPYmplY3RJZGVudGlm
aWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGpzT2Jq
ZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1lLCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQor
c3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0
T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1l
LCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQogewogICAgIGF1dG8ganNQcm9wZXJ0eVZhbHVlID0g
anNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhn
bG9iYWxPYmplY3QtPnZtKCksIHByb3BlcnR5TmFtZSkpOwogICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkKQEAgLTEyNzAsNyArMTI3MCw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OmNyZWF0ZVNoYXJl
ZE1lbW9yeShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CiAKLSAgICBhdXRvIHNpemUgPSBhcmd1bWVudENvdW50ID8gY29udmVydFRvVWludDY0
KHRvSlMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHNbMF0pKSA6IE9wdGlvbmFsPHVpbnQ2NF90PiB7
IH07CisgICAgYXV0byBzaXplID0gYXJndW1lbnRDb3VudCA/IGNvbnZlcnRUb1VpbnQ2NCh0b0pT
KGdsb2JhbE9iamVjdCwgYXJndW1lbnRzWzBdKSkgOiBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB7
IH07CiAgICAgaWYgKCFzaXplKSB7CiAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJy
b3IoY29udGV4dCwgIk11c3Qgc3BlY2lmeSB0aGUgc2l6ZSJfcyk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTEzNDIsNyArMTM0Miw3IEBAIEpTVmFs
dWVSZWYgSlNJUEM6OnJldHJpZXZlSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTVmFsCiAgICAgcmV0dXJuIHRvUmVmKHZtLCBqc1ZhbHVlKTsKIH0KIAot
c3RhdGljIEpTQzo6SlNWYWx1ZSBjcmVhdGVKU0FycmF5Rm9yQXJndW1lbnREZXNjcmlwdGlvbnMo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPcHRpb25hbDxWZWN0b3I8SVBDOjpB
cmd1bWVudERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERlc2NyaXB0aW9ucykKK3N0YXRpYyBKU0M6
OkpTVmFsdWUgY3JlYXRlSlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8SVBDOjpBcmd1bWVu
dERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERlc2NyaXB0aW9ucykKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50RGVzY3JpcHRpb25zKQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCmluZGV4IDc5MWYx
ZDA2ZmMyYjA3YjkwYWZlZGI4MmQ5MTY5ZWJlODY4NmFmYTkuLjZhMjhhZTk3Zjg2MWY0ZjViY2Ix
YzkzNGFiZjAyODlmYjBhMDBiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICBzdGF0aWMgT3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAg
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICAgICAgU3RyaW5nIGtleVBhdGg7CiAgICAgICAgIFBsYXRmb3JtQ0FBbmltYXRp
b246OkFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KaW5kZXggZTI1NTEwMTA2ZTkxMDhhNzgx
YzY0ODMyZmVkZjgyMWEyY2I1NzYwNy4uNmQ4NjYxN2UxYTE3ZDgzZDA0N2IxMzkyMzE1ZWY5OTUx
NTFiOWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUubW0KQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUaW1pbmdG
dW5jdGlvbihJUEM6OkVuY29kZXImIGVuY29kZXIsIFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdQog
ICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29k
ZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29kZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBUaW1pbmdGdW5jdGlvbjo6VGltaW5nRnVuY3Rpb25UeXBl
IHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBhbmltYXRpb25zOwogfQog
Ci1PcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzPiBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVz
PiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRp
ZXMgcHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5UGF0
aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggMDEwMTgxMzU4OGY4NTAwZWZmNmY0NzY4MWY3
NjFiMzNjMTcyZGJhNy4uNWVhNmM3MjJiNjk3YmE0ZmE3MmRjOTVjMjMzMjdkODA5ZjcyYjhjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
aXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbCB7IH0KLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vj
b25kKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+
IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CiAKICAgICB2b2lkIGFkanVz
dFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRleCA5MmI5YTQzNmRlOGIyMTMzYTUyODcxZTg5
YTgwNDliYjcyNjNiMTg0Li5jYzM5ZTNkMTYyNGY5N2M4ODljYmRjY2VlNjRlNjkwZjdkYTc1YWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnVwZGF0ZURyYXdpbmdBcmVhKFJlbW90ZUxh
eWVyVHJlZURyYXcKICAgICBtX2RyYXdpbmdBcmVhID0gbWFrZVdlYWtQdHIoZHJhd2luZ0FyZWEp
OwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAgIHJldHVybiBtX3ByZWZl
cnJlZEZyYW1lc1BlclNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNzMwYTJkNjkwODg0OWIyMjUyNmRjNDIzODBm
Njk3YTlmY2JjYzViYy4uZjMwYjExMzRlMjNkNTEwM2QyMDNhYzU5OWNkMmY3MTFjYTEyOTVmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmgKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVj
dChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CisgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBjb25zdCBTdHJpbmcmIGtleSwgTW9ub3Rv
bmljVGltZSBzdGFydFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRp
b25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmll
d1NpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRS
ZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2Vk
UmVjdDsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBkYXRlUmVuZGVyaW5nVGltZXI7CiAgICAg
Ym9vbCBtX2lzUmVuZGVyaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBjYmVkNGFiZWUw
MDE0M2E2ZTBiYjYwODFhZDNmNzhjOWFhZmNlODU4Li5hMThiMzE1ZTZhZDAwZjBlNGYwOWVmYWFi
MTYzY2Y1MjUzNTg5OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6YWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5
ZXJJRCwgY28KICAgICBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQtPmFuaW1hdGlvbkRpZEVuZChs
YXllcklELCBrZXkpOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRW
aWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJl
Y3QpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRWaWV3RXhwb3NlZFJlY3Qo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAg
ICBtX3ZpZXdFeHBvc2VkUmVjdCA9IHZpZXdFeHBvc2VkUmVjdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcAppbmRleCBkNmEwMDdmZWYwZmNmN2VhY2ViMmExYWVjYjhkY2IzMzNm
Njg2MmE2Li4zZmRkZWI4MDQ1ZTJiODk2NWQ4ODY3NGZjNmE2MzBlM2QyNzI2MTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0cnVjdCBG
b250U2l6ZUFuZENvdW50IHsKICAgICB1bnNpZ25lZCBjb3VudDsKIH07CiAKLU9wdGlvbmFsPHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNv
bXB1dGVUZXh0TGVnaWJpbGl0eVNjYWxlcyhkb3VibGUmIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExl
Z2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3
cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZm9udFNpemVC
aW5uaW5nSW50ZXJ2YWwgPSAyOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bU51bWJl
ck9mVGV4dFJ1bnNUb0NvbnNpZGVyID0gMjAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5o
CmluZGV4IGIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYuLmY3Zjk5OGFh
YzAxNjk3Y2Q0NzdmOTVmNTM2ZWM2YjgyNTM4ZDIxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVNaW5p
bXVtQW5kTWF4aW11bVZpZXdwb3J0U2NhbGVzKGRvdWJsZSYgdmlld3BvcnRNaW5pbXVtU2NhbGUs
IGRvdWJsZSYgdmlld3BvcnRNYXhpbXVtU2NhbGUpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjb21wdXRl
VGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91Ymxl
JiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAjZW5kaWYKIAog
ICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkOwogI2Vsc2UKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBk
b3VibGU+PiBtX2NhY2hlZFRleHRMZWdpYmlsaXR5U2NhbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gbV9jYWNoZWRUZXh0TGVnaWJpbGl0eVNjYWxlczsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGVhMzVlNDllZmI1MjQy
ZWI3NzEwNDEzNmEyNmFmMzYxM2RjMWRiOTMuLjIzZmVmY2VhNWJmNDRjYTIwMGI3NjlkZmY4NTNk
ZThiMjk5Y2NmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRl
eChpbnQgaXRlbUluZGV4KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRl
bUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6
UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggYTYwN2YyMzhkNzVhYjY2YWUzNGY5ZTNl
MTExYjY3OGJiNzg5ZDU1Yy4uNzFjOGY0MWI2MzcwZGMyYjllNjk4NTM1NGNkYWM0MzE5YTQzMmE4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwotICAgIG11dGFi
bGUgT3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJk
TGlzdENvdW50czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKaW5kZXggNGU1NDU5NTFmODJmMjQ5YzFjZTcxNjhiZTdlZjc4MGRlNDFkZGM2
Mi4uNjMzODI4OTgzZWY3NzYzMjM5MmQwZGJjMmU0YTkwNDg5ZTM0MGI5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMTMs
NyArMjEzLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29va2llc0VuYWJsZWQoKTsKIH0KIAot
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29r
aWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2ll
c0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyA9IFNob3VsZEFza0lUUDo6Tm87
CiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKQEAgLTIzOCw4ICsyMzgsOCBAQCBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKLSAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHN0ZDo6bWFrZV9vcHRp
b25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0
ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2Vi
RnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJh
bWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFn
ZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vz
cywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShy
YXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5k
ZXggNzBmODdhYzhiMTk0YjIyMGMyODVjZGIyMGVkOGNlZmZkN2VjYTI4Yy4uYmM3ODUwMmIxOGI5
OTRhM2ZmYTQ3YjkzMzI3M2ViZGI4NGZhZmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3Qg
V2ViQ29yZTo6Q29va2llJikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IGI3MmZkOTIwNjY1N2NlN2JmMjQ3ODI0Yjc0YzE3YjI2MGQ5NjAyMmUuLjE1NDE1NmJkYjQ2
ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5Y2E3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBGcmFtZUluZm9E
YXRhIFdlYkZyYW1lOjppbmZvKCkgY29uc3QKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KHVybCgp
KSwKICAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUobV9jb3JlRnJhbWUuZ2V0
KCkpLAogICAgICAgICBtX2ZyYW1lSUQsCi0gICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpudWxsb3B0
LAorICAgICAgICBwYXJlbnQgPyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpudWxsb3B0LAogICAgIH07CiAKICAgICBy
ZXR1cm4gaW5mbzsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25s
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaQog
ICAgIH0KICAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGlj
eURvd25sb2FkSUQsIHN0ZDo6bnVsbG9wdCk7CiAKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
bzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJv
dW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlzQXBwQm91bmQgPSBt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBvbGlj
eURvd25sb2FkSUQsIHJlcXVlc3QsICBpc0FwcEJvdW5kLCBzdWdnZXN0ZWROYW1lKSwgMCk7CiB9
CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAg
ICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CiAgICAgaXNB
cHBCb3VuZCA9IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICB3ZWJQcm9jZXNz
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSwgaXNBcHBCb3VuZCksIDApOwogfQpAQCAtODgxLDcgKzg4MSw3
IEBAIGJvb2wgV2ViRnJhbWU6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0
aW9ucygpCiAgICAgcmV0dXJuIHRyZWVIYXNOb25BcHBCb3VuZEZyYW1lOwogfQogCi1PcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gV2ViRnJhbWU6OmlzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBXZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJvbUNvcmVGcmFtZShtX2NvcmVGcmFtZS0+bWFp
bkZyYW1lKCkpLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCAxYmYwZTY4MDgxNmM4NTg4
M2ZiZTMyYmM0YTEyNWM2MDZiMzYzYjI4Li42OWZlN2JlZjczMTA2MjQ5MTkxMzM2Njg3NDhmMDk4
YjM5NjEyNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKTsKLSAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
IHsgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsgfTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsgfQotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdDsKKyAgICB2
b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgeyBtX2lz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47IH0KKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdDsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtMjAxLDExICsyMDEsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFdlYkNvcmU6OkZyYW1lPiBtX2NvcmVGcmFtZTsKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5
TGlzdGVuZXJJRCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXI+IG1fcG9saWN5SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllcj4gbV9wb2xpY3lJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24gbV9wb2xpY3lGdW5jdGlvbjsKICAgICBGb3JOYXZpZ2F0aW9uQWN0
aW9uIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uIHsgRm9yTmF2aWdhdGlvbkFj
dGlvbjo6Tm8gfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+PiBtX3dpbGxTdWJtaXRGb3JtQ29tcGxldGlvbkhhbmRsZXJzOwotICAgIE9wdGlvbmFsPERv
d25sb2FkSUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPERvd25sb2Fk
SUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKIAogICAgIFdlYWtQdHI8TG9hZExpc3RlbmVyPiBtX2xv
YWRMaXN0ZW5lcjsKICAgICAKQEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25JRCBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsKICNlbmRpZgotICAgIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA2NmQ3MDk3MmY5MmUzMzRlZWE5N2IzMjhhNDFlNTY0NWNj
NTlhMGYuLjczM2QzZjA1ZTg1ZjdiYzNlYzI4MzYxY2M3ZGM5YmVjZmUxZDc3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NTIsNyArNzUy
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0ZXJzLnNjcm9sbGJh
ck92ZXJsYXlTdHlsZSkKICAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlLnZhbHVlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUg
PSBPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CisgICAgICAgIG1fc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CiAK
ICAgICBzZXRUb3BDb250ZW50SW5zZXQocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpOwogCkBA
IC0xNzAxLDcgKzE3MDEsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQ
YWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xODU3LDcgKzE4NTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIFNhbmRib3hFeHRlbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2Vi
UGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3YXJkSXRlbUlELCBGcmFtZUxvYWRUeXBl
IGJhY2tGb3J3YXJkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBl
cjsKIApAQCAtMTg4Nyw5ICsxODg3LDkgQEAgV2ViUGFnZSYgV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KFBhZ2UmIHBhZ2UpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCY+KHBh
Z2UuY2hyb21lKCkuY2xpZW50KCkpLnBhZ2UoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEZyYW1l
VHJlZU5vZGVEYXRhPiBmcmFtZVRyZWVOb2RlRGF0YShGcmFtZSYgZnJhbWUpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxGcmFtZVRyZWVOb2RlRGF0YT4gZnJhbWVUcmVlTm9kZURhdGEoRnJhbWUmIGZy
YW1lKQogewotICAgIE9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBpbmZvOworICAgIHN0ZDo6
b3B0aW9uYWw8RnJhbWVUcmVlTm9kZURhdGE+IGluZm87CiAgICAgaWYgKGF1dG8qIHdlYkZyYW1l
ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpKSB7CiAgICAgICAgIFZlY3RvcjxGcmFt
ZVRyZWVOb2RlRGF0YT4gY2hpbGRyZW47CiAgICAgICAgIGZvciAoYXV0byogY2hpbGRGcmFtZSA9
IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGls
ZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3Rv
ciwgZG91YmxlIHRleHRab29tRmEKICAgICByZXR1cm4gZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhZ2Vab29tRmFjdG9yKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHRleHRab29tRmFjdG9yKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6d2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit2b2lkIFdlYlBhZ2U6OndpbmRvd1NjcmVlbkRpZENo
YW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgbV9wYWdlLT5jaHJvbWUoKS53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKIApAQCAt
Mjk0OCw3ICsyOTQ4LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlKQogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiYmIHNhbmRib3hFeHRlbnNpb25zKQor
dm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQs
IHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4
dGVuc2lvbnMpCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXNlcklzSW50ZXJhY3RpbmdDaGFu
Z2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0cnVlIH07CiAKQEAgLTMzMzQsNyArMzMzNCw3IEBA
IHZvaWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYK
IAotdm9pZCBXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCit2b2lkIFdlYlBhZ2U6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9y
KQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM2NjksNyArMzY2OSw3IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6
OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+
KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9h
cmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xp
bmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZy
YW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElk
ZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENv
bnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBO
T1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUg
b2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlw
dCBleGVjdXRpb24uCkBAIC0zNzA2LDcgKzM3MDYsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cgogICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQogICAgICAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwogCi0gICAgICAgIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKQEAgLTM3MTYsNyArMzcxNiw3IEBAIHZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVj
dXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxkKCks
IFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3Ry
aW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8
Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnZhbHVlX29yKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOwogICAgIGF1dG8gd2ViRnJhbWUgPSBt
YWtlUmVmUHRyKGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJh
bWVJRCkgOiAmbWFpbldlYkZyYW1lKCkpOwpAQCAtMzcyNyw3ICszNzI3LDcgQEAgdm9pZCBXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWUKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShjb3JlV29ybGQpOwogICAgIH0KIAotICAgIHJ1bkph
dmFTY3JpcHQod2ViRnJhbWUuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5m
aXJzdCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBl
eGNlcHRpb24pIG11dGFibGUgeworICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUuZ2V0KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bHQsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IFJlcXVl
c3QgdG8gcnVuIEphdmFTY3JpcHQgZmFpbGVkIHdpdGggZXJyb3IgJXtwcml2YXRlfXMiLCBleGNl
cHRpb24tPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UKQEAgLTM3NzQsNyAr
Mzc3NCw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODA4LDcgKzM4MDgsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODM5LDcgKzM4MzksNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNr
KQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZQog
ICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFy
Y2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZl
cmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTUyNzMsNyArNTI3Myw3IEBAIHZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1Rv
UERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBy
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCk7CiAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CkBAIC02MTMyLDcgKzYxMzIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBz
aG91bGRFeHBhbmQpCiAgICAgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRBdXRv
U2l6ZUZpeGVkTWluaW11bUhlaWdodChzaG91bGRFeHBhbmQgPyBtX3ZpZXdTaXplLmhlaWdodCgp
IDogMCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyhPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemUpCit2b2lkIFdlYlBh
Z2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemUpCiB7CiAgICAgaWYgKG1fdmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cyA9PSB2aWV3cG9ydFNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTY0
MjAsNyArNjQyMCw3IEBAIHZvaWQgV2ViUGFnZTo6dGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNz
YWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KE1lc3NhZ2VzOjpXCiAgICAgcmVwbHkodHJ1ZSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQYWdlOjpjdXJyZW50U2VsZWN0aW9uQXNS
YW5nZSgpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQYWdlOjpjdXJyZW50U2VsZWN0
aW9uQXNSYW5nZSgpCiB7CiAgICAgYXV0byogZnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV9w
YWdlLmdldCgpKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtNjU4MSwxMiArNjU4MSwxMiBAQCB2b2lk
IFdlYlBhZ2U6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQogICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IobV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCit2b2lkIFdlYlBh
Z2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3Jv
bGxiYXJTdHlsZSkKIHsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3Jv
bGxiYXJTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlID0gT3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigpOworICAgICAgICBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PigpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpOwogfQogCkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgV1RGOjpD
b21wbGV0aW9uSAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaG93U2hhcmVTaGVldChXVEZNb3ZlKHNoYXJlRGF0YSkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29u
dGFjdHNSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCit2b2lk
IFdlYlBhZ2U6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250YWN0UGlja2Vy
KHJlcXVlc3REYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtNzA5OCwxNCArNzA5OCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OnZvaWNlc0RpZENoYW5nZSgpCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBmcmFt
ZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIFdURk1vdmUoZmlsZVNpemUp
LCBmaWxlTmFtZSwgY29udGVudFR5cGUpOwogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNs
b3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdp
dGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50
KCkudXBkYXRlTGF5b3V0KCk7CkBAIC03MTM2LDcgKzcxMzYsNyBAQCBSZWZQdHI8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cgogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFu
aWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gbWFp
bkZyYW1lRG9jdW1lbnQgPyBtYWluRnJhbWVEb2N1bWVudC0+bG9hZGVyKCkgOiBudWxscHRyOwpA
QCAtNzE1MCw3ICs3MTUwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ28KICAgICBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLmFkZChjb3JlQ2FsbGJhY2tJRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRp
bmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpCit2b2lkIFdlYlBh
Z2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxs
YmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBtYW5pZmVzdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYXBwbGljYXRpb25NYW5p
ZmVzdEZldGNoQ2FsbGJhY2tNYXAudGFrZShjb3JlQ2FsbGJhY2tJRCkpCiAgICAgICAgIGNhbGxi
YWNrKG1hbmlmZXN0KTsKQEAgLTcxOTcsNyArNzE5Nyw3IEBAIFJlZlB0cjxFbGVtZW50PiBXZWJQ
YWdlOjplbGVtZW50Rm9yQ29udGV4dChjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRl
eHQpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5zZWFyY2hGb3JFbGVtZW50QnlJZGVudGlmaWVyKGVs
ZW1lbnRDb250ZXh0LmVsZW1lbnRJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSBj
b25zdAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwogICAgIGlm
ICghbV9wYWdlIHx8IGRvY3VtZW50LnBhZ2UoKSAhPSBtX3BhZ2UuZ2V0KCkpCkBAIC03NTAwLDcg
Kzc1MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCYpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKLXZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgV2ViRnJhbWUqIGZyYW1lKQordm9pZCBXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBmcmFt
ZS0+c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKTsKICAgICAKQEAgLTc1NjYsNyArNzU2Niw3IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJiBtZW1vcnlIYW5kbGVzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCit2b2lk
IFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0
b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcywgY29uc3Qgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQ
dHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVu
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGRlMzVhZTE5NWFhNGQ2NjI1OWYwMDVkNTQ0NGMxOTk0ZWFhNDcwNDQuLmZhM2NkNmMxOTQ4Mjg1
ZGJiNzZmMzlkNzcwMzg0MWVkODVjMTM3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdDsKICAgICBib29s
IGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0OwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGlj
c09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWls
YWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRJbnNlcnRNZW51RWxl
bWVudChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsKQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0OyAvLyBNYXkgcmV0dXJu
IG51bGxwdHIuCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3KCkgY29uc3Q7
IC8vIE1heSByZXR1cm4gbnVsbHB0ci4KIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiBjdXJyZW50U2VsZWN0aW9uQXNSYW5nZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb25Bc1JhbmdlKCk7CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luPiBjcmVhdGVQbHVnaW4oV2Vi
RnJhbWUqLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFBsdWdpbjo6UGFyYW1l
dGVycyYsIFN0cmluZyYgbmV3TUlNRVR5cGUpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgcGFnZVpvb21GYWN0b3IoKSBjb25zdDsKICAgICB2b2lkIHNldFBhZ2Vab29t
RmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJs
ZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKTsKLSAgICB2b2lkIHdpbmRv
d1NjcmVlbkRpZENoYW5nZShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5z
aWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAgICBTdHJpbmcgZHVtcEhpc3RvcnlGb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwog
CkBAIC03MjEsNyArNzIxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVu
dFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0KICAgICB2b2lkIHNldFNob3VsZFJldmVh
bEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihib29sKTsKIAotICAgIHZvaWQgaW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAg
ICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0PiYpPiYmKTsKICAgICB2b2lkIHJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBXZWJD
b3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0OwpAQCAtNzUzLDcgKzc1Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgdm9pZCBibHVyRm9jdXNlZEVsZW1l
bnQoKTsKLSAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4m
KT4mJik7CisgICAgdm9pZCByZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbj4mKT4mJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwg
T3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPik+JiYpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgYm9v
bCBiYXNlSXNTdGFydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+KT4mJik7CiAg
ICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+KT4mJik7CkBAIC03NzcsNyArNzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mJik+JiYpOwogICAgIHZv
aWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRP
clBvc2l0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJ
bnRQb2ludCYmKTsKKyAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudENvbnRleHRP
clBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+JiYsIFdlYkNv
cmU6OkludFBvaW50JiYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBw
ZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CiAgICAgdm9pZCBmb2N1c05l
eHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1Mo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJik7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKICAgICB2b2lkIHNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGRvdWJs
ZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7Ci0gICAg
dm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzPiYpOworICAgIHZvaWQgc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3Vt
ZW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOwog
ICAgIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbiYgdmlld3BvcnRDb25maWd1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb247IH0KIAogICAg
IHZvaWQgc2V0VXNlVGVzdGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlvbihib29sIHVzZVRlc3RpbmdW
aWV3cG9ydCkgeyBtX3VzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB1c2VUZXN0aW5n
Vmlld3BvcnQ7IH0KQEAgLTEwOTMsNyArMTA5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHNjYWxlRnJv
bVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250
ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYsIE1vbm90b25pY1Rp
bWUgb2xkZXN0VGltZXN0YW1wKTsKICNlbmRpZgogCkBAIC0xMTM5LDggKzExMzksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wg
c2hvdWxkRXhwYW5kKTsKICAgICBib29sIGF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWln
aHQoKSB7IHJldHVybiBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7IH0KIAot
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhPcHRpb25hbDxXZWJD
b3JlOjpJbnRTaXplPik7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gdmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0czsgfQorICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7IH0KIAogICAg
IGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAg
IGJvb2wgY2FuU2hvd1Jlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBj
b25zdDsKQEAgLTExNjIsOCArMTE2Miw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQ
aW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQ
aW5uaW5nQmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50
MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgKi8gcGlubmluZyk7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9Ci0gICAgdm9pZCBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlICovPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
IHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CisgICAgdm9pZCBzZXRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAogICAgIFJlZjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2Fk
ZXImLCBXZWJDb3JlOjpGcmFtZSYpOwpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgcHVibGljOgogICAg
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogdXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcygpOwogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3B1TGltaXQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQoKSBjb25zdCB7IHJldHVybiBtX2NwdUxp
bWl0OyB9CiAKICAgICBzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lKik7CiAKQEAgLTEyNzYsMTcgKzEyNzYsMTcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHNo
b3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+
JiYpPiYmKTsKKyAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRh
Y3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpOwogICAgIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgZ2V0QXBwbGlj
YXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpPiYmKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlv
bk1hbmlmZXN0KHVpbnQ2NF90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jik7CiAjZW5kaWYKIAogI2lmIFVTRShXUEVfUkVOREVSRVIpCkBAIC0xMzE0
LDcgKzEzMTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYUJ1
ZmZlcmluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFCdWZmZXJpbmcoKTsKQEAgLTEzMjIs
NyArMTMyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZUxvZ2dpbmdDaGFubmVsKGNv
bnN0IFN0cmluZyYsIFdURkxvZ0NoYW5uZWxTdGF0ZSwgV1RGTG9nTGV2ZWwpOwogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnRGb3JDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBjb250ZXh0Rm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50JikgY29uc3Q7CiAKICAgICB2b2lkIHN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMo
VmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxl
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxs
RmFpbGVkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+JiYpOwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZvaWQgbm90aWZ5UGFnZU9m
QXBwQm91bmRCZWhhdmlvcigpOwotICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkZyYW1lKik7Cisg
ICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJGcmFtZSopOwogICAgIGJvb2wgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3M7IH0KICNlbmRpZgogCkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0
T3JpZ2luYXRlZEluQXBwKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOyB9CiAKICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYmLCBj
b25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOwogICAgIHZvaWQgc2V0
QXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0VmlzaWJpbGl0
eSk7CiAjZW5kaWYKIApAQCAtMTQ5NCwxNCArMTQ5NCwxNCBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCk7CiAKLSAgICBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBmb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CisgICAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uPiBmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCBnZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSk7CiAgICAgdm9pZCBo
YW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ss
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpQb2ludGVySUQgPSBXZWJDb3JlOjptb3VzZVBv
aW50ZXJJRCk7CiAgICAgdm9pZCBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUm
IG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRp
b24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRo
ZXRpY0NsaWNrVHlwZSwgV2ViQ29yZTo6UG9pbnRlcklEID0gV2ViQ29yZTo6bW91c2VQb2ludGVy
SUQpOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiByYW5nZUZv
ckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3Rp
bmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgZGlz
cGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91
Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOwogICAg
IHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFj
dGlvbnNNYXNrKTsKLSAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEYXRhPik+JiYgcmVwbHkpOworICAgIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIGNvbXB1dGVBbmRTZW5k
RWRpdERyYWdTbmFwc2hvdCgpOwogI2VuZGlmCiAKQEAgLTE1NTUsNyArMTU1NSw3IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQg
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25zCiAg
ICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE1
NjgsNyArMTU2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1l
bnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgZ2V0UERG
Rmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAgICAgdm9pZCByZWxvYWQodWludDY0X3Qg
bmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7Ci0gICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJ
dGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsK
ICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgc2V0SW5pdGlh
bEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CkBAIC0xNTg4LDcg
KzE1ODgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJv
b2wpOwogCi0gICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4mJiBzYW5kYm94RXh0ZW5zaW9ucyk7Cisg
ICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiYmIHNhbmRib3hFeHRlbnNpb25zKTsKICAgICB2
b2lkIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgY29u
c3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CkBAIC0xNjQ1LDE1ICsxNjQ1LDE1IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYp
PiYmIGNhbGxiYWNrKTsKICNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAgdm9p
ZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lk
IGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+
Jik+JiYpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+Jik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
KT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRh
dGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKIApAQCAtMTc5Niw3ICsx
Nzk2LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKLSAg
ICBPcHRpb25hbDxzdGQ6OnR1cGxlPFdlYkNvcmU6OlNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkg
Kj4+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHN0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICB2b2lkIGlt
bWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2Fu
Y2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpOwpAQCAtMjAzMSw3
ICsyMDMxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9v
bCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayB7IGZhbHNlIH07Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9zdGFydGluZ0dlc3R1cmVSYW5n
ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjEyMiw3ICsyMTIy
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudD4+
IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Q7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+IG1fcmFuZ2VGb3JEcm9wU25hcHNob3Q7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9yYW5nZUZvckRyb3BTbmFwc2hvdDsKICNlbmRp
ZgogCiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9MZWZ0U2lkZSB7IHRydWUg
fTsKQEAgLTIxMzksNyArMjEzOSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X21pbmltdW1TaXplRm9yQXV0b0xheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZVRv
Q29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAgICAgYm9vbCBtX2F1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFNp
emU+IG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkludFNpemU+IG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czsKIAog
ICAgIGJvb2wgbV91c2VySXNJbnRlcmFjdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V2
ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB7
IGZhbHNlIH07CkBAIC0yMTczLDcgKzIxNzMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBt
X2N1cnJlbnRXb3JkUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4gbV9jdXJyZW50V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2ludGVy
YWN0aW9uTm9kZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uOwogCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtX2F2YWlsYWJsZVNjcmVlblNpemU7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fb3Zl
cnJpZGVTY3JlZW5TaXplOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1f
aW5pdGlhbFNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiBtX2luaXRpYWxTZWxlY3Rpb247CiAgICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBtX3N0
b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkgeyBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9u
KCkgfTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAg
ICAgaW50MzJfdCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwpAQCAtMjIxNiwxMiArMjIxNiwx
MiBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4g
bV9wZW5kaW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnM7CiAgICAgV2ViQ29yZTo6UG9pbnRlcklE
IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrUG9pbnRlcklkIHsgMCB9OwogICAgIEZvY3VzZWRFbGVt
ZW50SWRlbnRpZmllciBtX2N1cnJlbnRGb2N1c2VkRWxlbWVudElkZW50aWZpZXIgeyAwIH07Ci0g
ICAgT3B0aW9uYWw8RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEPiBtX3BlbmRpbmdEeW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxEeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlSUQ+IG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRDsKICAgICBk
b3VibGUgbV9sYXN0VHJhbnNhY3Rpb25QYWdlU2NhbGVGYWN0b3IgeyAwIH07CiAgICAgVHJhbnNh
Y3Rpb25JRCBtX2xhc3RUcmFuc2FjdGlvbklEV2l0aFNjYWxlQ2hhbmdlOwogCiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYmKT4gbV9w
ZW5kaW5nU3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0aW9uUmVwbHk7Ci0gICAgT3B0aW9uYWw8
c3RkOjpwYWlyPFRyYW5zYWN0aW9uSUQsIGRvdWJsZT4+IG1fbGFzdExheWVyVHJlZVRyYW5zYWN0
aW9uSWRBbmRQYWdlU2NhbGVCZWZvcmVTY2FsaW5nUGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxUcmFuc2FjdGlvbklELCBkb3VibGU+PiBtX2xhc3RMYXllclRyZWVUcmFuc2FjdGlv
bklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2U7CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6
OlRpbWVyIG1fbGF5ZXJWb2xhdGlsaXR5VGltZXI7CkBAIC0yMjI5LDEzICsyMjI5LDEzIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkVW5kZXJMb2NrIHsgZmFsc2UgfTsKIAogICAg
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbWltZVR5cGVzV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1f
YmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6
d2hpdGUgfTsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJl
c3Npb25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25U
b2tlbiB7IDAgfTsKICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9z
Y3JvbGxQaW5uaW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpEb05vdFBpbiB9OwotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBtX3VzZUFzeW5jU2Nyb2xsaW5nIHsgZmFs
c2UgfTsKIApAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkg
bV91c2VyQWN0aXZpdHk7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgeyAw
IH07Ci0gICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5nV2Vic2l0ZVBv
bGljaWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5n
V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
IHsgdHJ1ZSB9OwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFRy
YW5zYWN0aW9uSUQgbV9sYXN0RWRpdG9yU3RhdGVUcmFuc2FjdGlvbklEOwogCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
bV9pbnB1dE1ldGhvZFN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
bV9pbnB1dE1ldGhvZFN0YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpCkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IHsgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiAKICAgICBj
b25zdCBTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICBjb25zdCBP
cHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1fY3B1TGltaXQ7CiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIElQQzo6QXR0YWNo
bWVudCBtX2hvc3RGaWxlRGVzY3JpcHRvcjsKQEAgLTIyODIsNyArMjI4Miw3IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChib29sIGdyYW50ZWQpPj4gbV9z
dG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+PiBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpPj4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcDsK
ICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PExheWVyVHJlZUZyZWV6ZVJlYXNvbj4gbV9sYXllclRy
ZWVGcmVlemVSZWFzb25zOwpAQCAtMjI5Myw3ICsyMjkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5PiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2Vu
ZGlmCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlkZW50aWZpZXI7
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gbV9wZW5kaW5nSW50cmluc2ljQ29udGVu
dFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3BlbmRpbmdJbnRy
aW5zaWNDb250ZW50U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbGFzdFNlbnRJbnRyaW5z
aWNDb250ZW50U2l6ZTsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9jb250ZXh0Rm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmYzY2ZlNTFkNTI0YzI4YTVhOTc0YjFmMGEw
YTBlNzZkZWMwYjBlZC4uZTE1NzkzZDVhNGQyNDEzYTViOTRlYjIwNDljYTU3YmEwOTljMDBmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlE
IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRMYXllckhvc3RpbmdN
b2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSkKIAotICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29s
b3IpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwg
ZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nIG1lc3Nh
Z2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcG9ydERhdGEpCkBAIC00NiwxMiArNDYsMTIgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVudCkgLT4gKCkgQXN5bmMKICAgICBLZXlFdmVu
dChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQpCi0gICAgTW91c2VFdmVudChXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgZXZlbnQsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQorICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplIHNpemUsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3Rp
dmVEZXZpY2VXaWR0aCkKICAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6Rmxv
YXRTaXplIHNpemUpCiAgICAgU2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbikKLSAgICBTZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKE9wdGlvbmFsPFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1bWVudHMpCisgICAgU2V0T3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1
bWVudHMpCiAgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUg
dmlld0xheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUs
IFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVu
b2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OlJlY3RFZGdlczxm
bG9hdD4gdGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMy
X3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgs
IHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkKICAgICAKICAgICBTZXRTY3Jl
ZW5Jc0JlaW5nQ2FwdHVyZWQoYm9vbCBjYXB0dXJlZCkKQEAgLTg5LDcgKzg5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fi
b3ZlU2VsZWN0aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3lu
YwogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKSBTeW5jaHJvbm91cwogICAgIFJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3QpCi0gICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4
dE9yUG9zaXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGVsZW1lbnRDb250
ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKKyAgICBTdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgU3RvcElu
dGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikK
ICAgICBGb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCkgLT4gKCkgQXN5bmMK
QEAgLTExNCwxNCArMTE0LDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3JlKQog
ICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb3NpdGlv
bkluV2luZG93KQogICAgIENhbmNlbEF1dG9zY3JvbGwoKQotICAgIFJlcXVlc3RGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKCkgLT4gKE9wdGlvbmFsPFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbj4gaW5mbykgQXN5bmMKKyAgICBSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bigpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4g
aW5mbykgQXN5bmMKICAgICBIYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZChib29s
IGtleWJvYXJkSXNBdHRhY2hlZCkKICAgICBTZXRJc1Nob3dpbmdJbnB1dFZpZXdGb3JGb2N1c2Vk
RWxlbWVudChib29sIHNob3dpbmdJbnB1dFZpZXcpCiAgICAgVXBkYXRlU2VsZWN0aW9uV2l0aERl
bHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSkgLT4gKCkgQXN5
bmMKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5bmMKIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5z
ZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKQot
ICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3JlOjpJbnRTaXplIHNpemUpIC0+IChPcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxhY2Vob2xkZXIpIEFzeW5jCisgICAgSW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNlaG9sZGVyKSBBc3luYwogICAgIFJlbW92
ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgcGxhY2Vob2xk
ZXIpIC0+ICgpIEFzeW5jCiAgICAgVGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8c3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBj
b250ZXh0cykgQXN5bmMKICAgICBGb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFjZUNhcmV0KHN0
cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogICAgIFNjcm9sbEJ5KHVpbnQzMl90IHNjcm9sbERpcmVjdGlvbiwg
dWludDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpCiAgICAgQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxl
QXJlYSgpCiAKLSAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
c3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVt
SUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwg
ZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4g
d2Vic2l0ZVBvbGljaWVzKQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdh
dGlvbklELCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9y
d2FyZEl0ZW1JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0Zvcndh
cmRUeXBlLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogCiAgICAgTG9hZFVSTEluRnJhbWUoVVJMIHVybCwgU3RyaW5nIHJlZmVycmVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKQEAgLTIxNSwxNSArMjE1LDE1IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIEdldENvbnRlbnRzQXNN
SFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5j
CiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4g
KE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkg
QXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZl
cmVuY2UpIEFzeW5jCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAt
PiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKCkgLT4gKE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAg
ICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiBkYXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBH
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwog
Ci0gICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKKyAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAog
ICAgIEZvcmNlUmVwYWludCgpIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0QWxsKCkKQEAgLTI3OCw3
ICsyNzgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCiAg
ICAgU2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgU2V0VGV4dFpvb21G
YWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCi0gICAgV2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQz
Ml90IGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQp
CisgICAgV2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKIAogICAgIEFjY2Vzc2liaWxp
dHlTZXR0aW5nc0RpZENoYW5nZSgpCiAKQEAgLTMzMiw3ICszMzIsNyBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiAgICAgUmVxdWVzdEFkZGl0aW9u
YWxJdGVtc0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykKLSAgICBJbnNlcnREcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikgQXN5bmMKKyAgICBJbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3luYwogICAgIERp
ZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIApAQCAtNDA4LDcgKzQwOCw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8p
IC0+IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwogICAgIERyYXdUb1BERmlPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBB
c3luYwogI2VuZGlmCi0gICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKSBBc3luYwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAgICAgU2V0U2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUoV2ViQ29yZTo6
SW50U2l6ZSBzaXplKQogICAgIFNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQo
Ym9vbCBzaG91bGRFeHBhbmQpCiAKLSAgICBTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzKE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6ZSkKKyAgICBTZXRWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6
ZT4gdmlld3BvcnRTaXplKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoU3RyaW5nIHJlc3VsdCkKQEAgLTQ4OCw3ICs0ODgsNyBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IodWludDMyX3QgcGlubmluZykKLSAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9u
YWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQorICAgIFNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAogICAgIEdldEJ5dGVj
b2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogCkBAIC01NjksMTMgKzU2OSwx
MyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3Vz
cGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRBdHRh
Y2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0
cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwor
ICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4g
KCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5n
SW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFu
ZGxlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgR2V0
QXBwbGljYXRpb25NYW5pZmVzdCgpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiBtYW5pZmVzdCkgQXN5bmMKKyAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCkgLT4g
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4gbWFuaWZlc3QpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQpA
QCAtNjI5LDcgKzYyOSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVu
dW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91
cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVx
dWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVj
dG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlv
bmFsPHVuc2lnbmVkPiBpbmRleCkKKyAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRs
ZXMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogICAgIFNldEFwcEhpZ2hsaWdodHNW
aXNpYmlsaXR5KGVudW06Ym9vbCBXZWJDb3JlOjpIaWdobGlnaHRWaXNpYmlsaXR5IGhpZ2hsaWdo
dFZpc2liaWxpdHkpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwCmluZGV4IDFiYmZlNWI5YjgzNjYzNzFjYzA0M2Vi
MjZmNDcwYmM3NDU4YmMxZWMuLmNlMjNmN2ZmOGYzNDIxM2YyNDNhZjhjMWMyZjFlZmI5M2IyZmMz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VP
dmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
T3ZlcmxheS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBhZ2VPdmVybGF5OjpkaWRT
Y3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJiBmcmFtZSkKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKLWF1dG8gV2ViUGFnZU92ZXJsYXk6OmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50
KEZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IE9wdGlvbmFsPEFjdGlvbkNvbnRleHQ+CithdXRvIFdl
YlBhZ2VPdmVybGF5OjphY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChGbG9hdFBvaW50IGxv
Y2F0aW9uKSAtPiBzdGQ6Om9wdGlvbmFsPEFjdGlvbkNvbnRleHQ+CiB7CiAgICAgcmV0dXJuIG1f
Y2xpZW50LT5hY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludCgqdGhpcywgbG9jYXRpb24pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92
ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5
LmgKaW5kZXggZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVkZTcyYWZlNGEzNzNlNzQyMS4uNDJkNjMw
MWM5NDEwNzRmZDYwNjM5NjQ1YWQ0NTIzNmM4NmRiNzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbEZyYW1lKFdlYlBhZ2VPdmVy
bGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgdmlydHVh
bCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChX
ZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8QWN0aW9uQ29udGV4dD4gYWN0aW9u
Q29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViUGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpGbG9hdFBv
aW50KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFE
ZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViUGFnZU92ZXJsYXkmKSB7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShXZWJQYWdlT3ZlcmxheSYpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YURldGVjdG9yc0RpZEhpZGVVSShXZWJQYWdlT3ZlcmxheSYp
IHsgfQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFpblB0cjxEREFjdGlv
bkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgICAgIFdlYkNvcmU6OlNpbXBsZVJhbmdlIHJhbmdlOwog
ICAgIH07Ci0gICAgT3B0aW9uYWw8QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3Vs
dEF0UG9pbnQoV2ViQ29yZTo6RmxvYXRQb2ludCk7CisgICAgc3RkOjpvcHRpb25hbDxBY3Rpb25D
b250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJDb3JlOjpGbG9hdFBvaW50
KTsKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoKTsKICAgICB2b2lkIGRhdGFE
ZXRlY3RvcnNEaWRDaGFuZ2VVSSgpOwogICAgIHZvaWQgZGF0YURldGVjdG9yc0RpZEhpZGVVSSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBh
Z2VHTGliLmNwcAppbmRleCAzNzgzYjQ3YTAzNDQwNzRhYjdmNzk3ODAxOTA4NzFkMzA4OThkOTU3
Li41ZWU4YjA1NjExOThjYTI0YTM2OGU0NGRkOTFjOGQyYjExZmNiMzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShG
cmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgfQogfQogCi1zdGF0
aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gaW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
aW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICgh
ZWxlbWVudCB8fCAhZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCAwYmMwMzBkMGYwODkyZTQ0NDY2MGIzZjY4NmM1
MTMxMjdjMjk0MzczLi5lZGI5ZDQ0MWI1N2ZiMmZhNDZmOGNmMWY5ZDZjMzAwNTIxMzUwYmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBXZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5
QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFs
PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAo
c2NyZWVuSXNUb3VjaFByaW1hcnlJbnB1dERldmljZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA1OThkNjBiOGI4NDE3
MjY5MDMxMWM5NzRlY2QxOTc5Njk0MDYxMGIxLi5kNWE1MDE3NmZmNGIyYmZiZGI1MjMxYzU1Yjgx
YzU3NDlkMzRkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBTdHJpbmcgcGxh
aW5UZXh0Rm9yQ29udGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIFdl
YkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZSk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcgcGxhaW5UZXh0Rm9yQ29udGV4dChjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQorc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JDb250ZXh0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICByZXR1cm4gcmFuZ2UgPyBwbGFpblRl
eHRGb3JDb250ZXh0KCpyYW5nZSkgOiBlbXB0eVN0cmluZygpOwogfQpAQCAtMTc2LDcgKzE3Niw3
IEBAIHN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yRGlzcGxheShjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShyYW5nZSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBwbGFpblRleHRGb3JEaXNwbGF5KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UpCitzdGF0aWMgU3RyaW5nIHBsYWluVGV4dEZvckRpc3BsYXkoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4
dEZvckRpc3BsYXkoKnJhbmdlKSA6IGVtcHR5U3RyaW5nKCk7CiB9CkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gc2VsZWN0ZWRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxl
Y3RlZFJhbmdlOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgPSBtX2lz
SW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9
IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZhbHNlOwpA
QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBI
aXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAgICAgICAgIGJvdW5kZWRTY2FsZSA9IHN0ZDo6bWlu
PGZsb2F0PihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSwgc3RkOjptYXg8
ZmxvYXQ+KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpLCBib3VuZGVkU2Nh
bGUpKTsKICAgICAgICAgc2NhbGVQYWdlKGJvdW5kZWRTY2FsZSwgSW50UG9pbnQoKSk7CiAKLSAg
ICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIGlmIChoaXN0b3J5
SXRlbS5zaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSkgewogICAgICAgICAgICAgbV9kcmF3
aW5nQXJlYS0+c2V0RXhwb3NlZENvbnRlbnRSZWN0KGhpc3RvcnlJdGVtLmV4cG9zZWRDb250ZW50
UmVjdCgpKTsKICAgICAgICAgICAgIG1faGFzUmVzdG9yZWRFeHBvc2VkQ29udGVudFJlY3RBZnRl
ckRpZENvbW1pdExvYWQgPSB0cnVlOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAKICAgICAg
ICAgZG91YmxlIG5ld1NjYWxlID0gc2NhbGVBZnRlclZpZXdwb3J0V2lkdGhDaGFuZ2UoaGlzdG9y
eUl0ZW0ucGFnZVNjYWxlRmFjdG9yKCksICFoaXN0b3J5SXRlbS5zY2FsZUlzSW5pdGlhbCgpLCBt
X3ZpZXdwb3J0Q29uZmlndXJhdGlvbiwgY3VycmVudE1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMud2lkdGgoKSwgbmV3Q29udGVudFNpemUsIG9sZENvbnRlbnRTaXplLCB2
aXNpYmxlSG9yaXpvbnRhbEZyYWN0aW9uKTsKIAotICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50
PiBuZXdDZW50ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbmV3Q2VudGVy
OwogICAgICAgICBpZiAoaGlzdG9yeUl0ZW0uc2hvdWxkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkp
IHsKICAgICAgICAgICAgIGlmICghb2xkQ29udGVudFNpemUuaXNFbXB0eSgpICYmICFuZXdDb250
ZW50U2l6ZS5pc0VtcHR5KCkgJiYgbmV3Q29udGVudFNpemUgIT0gb2xkQ29udGVudFNpemUpCiAg
ICAgICAgICAgICAgICAgbmV3Q2VudGVyID0gcmVsYXRpdmVDZW50ZXJBZnRlckNvbnRlbnRTaXpl
Q2hhbmdlKGhpc3RvcnlJdGVtLnVub2JzY3VyZWRDb250ZW50UmVjdCgpLCBvbGRDb250ZW50U2l6
ZSwgbmV3Q29udGVudFNpemUpOwpAQCAtOTcxLDkgKzk3MSw5IEBAIHZvaWQgV2ViUGFnZTo6aGFu
ZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwg
T3B0aW9uCiAgICAgbm9kZVJlc3BvbmRpbmdUb0RvdWJsZUNsaWNrLT5kb2N1bWVudCgpLmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VF
dmVudChyb3VuZGVkQWRqdXN0ZWRQb2ludCwgcm91bmRlZEFkanVzdGVkUG9pbnQsIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQsIDIsIHNoaWZ0S2V5LCBjdHJsS2V5LCBh
bHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgV2ViQ29yZTo6T25lRmluZ2VyVGFw
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBpbmZvcm1hdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+IGluZm9ybWF0
aW9uOwogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KQogICAgICAgICBpbmZvcm1hdGlvbiA9IGZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKTsKIApAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhh
bmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPElu
dFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkp
Cit2b2lkIFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0
b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPEludFJlY3Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4p
PiYmIHJlcGx5KQogewogICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5pbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGltYWdlU2l6ZXMpOwogICAgIGF1dG8gcGxhY2Vob2xk
ZXJSZWN0cyA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnMoKS5tYXAoWyZdIChhdXRvJiBlbGVtZW50KSB7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lk
IFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50
U2l6ZT4mIGltYWdlU2l6ZXMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvckRhdGE7CisgICAgc3RkOjpvcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvckRhdGE7CiAgICAgY29uc3RleHByIE9w
dGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiB0ZXh0SW5kaWNhdG9yT3B0aW9ucyB7CiAgICAg
ICAgIFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRl
bnRXaXRob3V0U2VsZWN0aW9uLAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpFeHBhbmRD
bGlwQmV5b25kVmlzaWJsZVJlY3QsCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCYgZWxlbWVudAogCiB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hv
dCgpCiB7Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRh
OworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRh
OwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8VGV4dEluZGljYXRvck9wdGlvbj4gZGVmYXVsdFRl
eHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERyYWcgewogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0
aW9uOjpJbmNsdWRlU25hcHNob3RPZkFsbFZpc2libGVDb250ZW50V2l0aG91dFNlbGVjdGlvbiwK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbjo6RXhwYW5kQ2xpcEJleW9uZFZpc2libGVSZWN0
LApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgc3RhdGljIGJvb2wgaW5zaWRlSW1hZ2VPdmVybGF5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgcmV0dXJuIGNvbnRhaW5lciAmJiBI
VE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKmNvbnRhaW5lcik7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZXhwYW5kRm9ySW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBleHBhbmRG
b3JJbWFnZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIFZpc2libGVQ
b3NpdGlvbiBleHBhbmRlZFN0YXJ0KG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbigmcmFuZ2Uu
c3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSkpOwogICAgIFZpc2libGVQb3Np
dGlvbiBleHBhbmRlZEVuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oJnJhbmdlLmVuZENv
bnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpOwpAQCAtMTQzNCw3ICsxNDM0LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1
cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2ludCwgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFnczsKICAgICBH
ZXN0dXJlUmVjb2duaXplclN0YXRlIHdrR2VzdHVyZVN0YXRlID0gc3RhdGljX2Nhc3Q8R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKTsKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0
PEdlc3R1cmVUeXBlPihnZXN0dXJlVHlwZSkpIHsKQEAgLTE1NTQsNyArMTU1NCw3IEBAIHZvaWQg
V2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJl
VHlwZSBnZXN0dXJlVHlwZSwKICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2ludCwgZ2VzdHVyZVR5
cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25z
dCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludEluUm9vdFZp
ZXdDb29yZGluYXRlcyhGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBwb2ludEluUm9vdFZp
ZXdDb29yZGluYXRlcywgYm9vbCBiYXNlSXNTdGFydCkKIHsKICAgICBWaXNpYmxlU2VsZWN0aW9u
IGV4aXN0aW5nU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gZXhpc3RpbmdTZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCk7CkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjbwog
ICAgIGlmICh0YXJnZXROb2RlICYmICFIVE1MRWxlbWVudDo6c2hvdWxkRXh0ZW5kU2VsZWN0aW9u
VG9UYXJnZXROb2RlKCp0YXJnZXROb2RlLCBleGlzdGluZ1NlbGVjdGlvbikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHJlc3VsdDsKIAogICAgIGlmICh0YXJnZXROb2RlKQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKEZyYW1lJiBmcmFtZSwgY28KICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBm
cmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwg
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0
aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURp
cmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKQEAgLTE3OTIsNyArMTc5Miw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCBT
ZWxlY3Rpb25Ub3VjaCBzCiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVu
dHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2ludCk7CiAKLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFnczsKIAogICAg
IHN3aXRjaCAoc2VsZWN0aW9uVG91Y2gpIHsKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAg
ICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9u
TWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5n
JiBtYXRjaFRleHQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbWF0Y2hUZXh0LCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgYXV0byBsaXZlUmFuZ2Ug
PSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIGlmICghbGl2ZVJhbmdlKQpAQCAtMjE1NSw3
ICsyMTU1LDcgQEAgdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW4KICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxh
cml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6
cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQogewogICAgIGF1dG8gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7
CkBAIC0yNDcxLDcgKzI0NzEsNyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25J
bnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgIGlmICgh
ZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgIFN0cmluZyB0ZXh0Rm9yUmFuZ2U7CiAgICAgYXV0byBv
cmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcyA9IGZvbGRRdW90ZU1hcmtzKG9yaWdpbmFs
VGV4dCk7CiAKQEAgLTI3NjQsNyArMjc2NCw3IEBAIHN0YXRpYyB2b2lkIGRhdGFEZXRlY3Rvckxp
bmtQb3NpdGlvbkluZm9ybWF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIEludGVyYWN0aW9uSW5mCiAK
ICNlbmRpZgogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlckltYWdlJiwgSW1hZ2Um
Pj4gaW1hZ2VSZW5kZXJlckFuZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJbWFnZSY+PiBpbWFnZVJlbmRlcmVyQW5k
SW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihlbGVt
ZW50LnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzA5MSw3
ICszMDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHBvc2l0aW9uSW5mb3Jt
YXRpb24ocmVxdWVzdCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzdGFydEludGVyYWN0aW9uV2l0
aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4
dD4mJiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQmJiBwb2ludCkKK3ZvaWQgV2Vi
UGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9yUG9zaXRpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgV2ViQ29y
ZTo6SW50UG9pbnQmJiBwb2ludCkKIHsKICAgICBpZiAoZWxlbWVudENvbnRleHQpIHsKICAgICAg
ICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBlbGVtZW50Rm9yQ29udGV4dCgqZWxlbWVudENvbnRleHQp
OwpAQCAtMzE3OCw3ICszMTc4LDcgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c05leHRGb2N1c2VkRWxl
bWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCi1PcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
PiBXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQpAQCAtMzQwOCw3ICszNDA4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGRvdWIKICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50aWZpZXIgPDwgIiBzZXRWaWV3cG9ydENvbmZpZ3VyYXRp
b25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNpemUgPDwgIiBzY2FsZUZhY3RvciAiIDw8IHNjYWxlRmFj
dG9yIDw8ICIgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoICIgPDwgbWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoKTsKIAogICAgIGF1dG8gcHJldmlvdXNMYXlvdXRTaXplU2NhbGVGYWN0b3Ig
PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplU2NhbGVGYWN0b3IoKTsKLSAgICBh
dXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IHN0ZDo6bnVsbG9wdCA6IE9w
dGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKKyAgICBhdXRvIGNs
YW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNL
bm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPihtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwogICAgIGlmICghbV92
aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld0xheW91dFNpemUoc2l6ZSwgc2NhbGVGYWN0b3Is
IFdURk1vdmUoY2xhbXBlZE1pbmltdW1FZmZlY3RpdmVEZXZpY2UpKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNDM3LDcgKzM0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERldmljZU9yaWVudGF0
aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5v
cmllbnRhdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYg
YXJndW1lbnRzKQordm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+JiBhcmd1bWVudHMp
CiB7CiAgICAgbV9wYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7
CiB9CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0VmVsb2Np
dHlEYXRhRm9yQm91bmRlZFNjYWxlKFZlbG9jaXR5RGF0YSYgdmVsb2NpdHlEYXRhLAogICAgICAg
ICB2ZWxvY2l0eURhdGEuc2NhbGVDaGFuZ2VSYXRlID0gMDsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+
IFdlYlBhZ2U6OnNjYWxlRnJvbVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKSBjb25zdAorc3RkOjpvcHRpb25h
bDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pIGNvbnN0CiB7CiAg
ICAgYXV0byB0cmFuc2FjdGlvbklERm9yTGFzdFNjYWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8ubGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKICAgICBp
ZiAobV9sYXN0VHJhbnNhY3Rpb25JRFdpdGhTY2FsZUNoYW5nZSA+IHRyYW5zYWN0aW9uSURGb3JM
YXN0U2NhbGVGcm9tVUlQcm9jZXNzKQpAQCAtNDIzOSw3ICs0MjM5LDcgQEAgYm9vbCBXZWJQYWdl
Ojpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAogICAg
IHJldHVybiBoYXNBY2Nlc3NvcnlNb3VzZVBvaW50aW5nRGV2aWNlKCk7CiB9CiAKLU9wdGlvbmFs
PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NP
ZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzTW91c2VQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSA/IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmUgOiBQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzOjpDb2Fyc2U7CiB9CkBAIC00Mjc2LDcgKzQyNzYsNyBAQCBib29sIFdlYlBhZ2U6OnBs
YXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29tU2NhbGluZygpIGNvbnN0CiAjZW5k
aWYKIH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpF
bGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6aW5z
ZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBJbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1h
eSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUg
ZGVzdHJ1Y3Rpb24uCiAgICAgUmVmPEZyYW1lPiBmcmFtZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaAppbmRleCAxYmI5OGNjZDg0NzZlMzhiMGU3NmRjMzYzZjY1MWIzYjJhMjYw
MjMxLi43ZjRiN2JkNGZiMTVjNTJiNzM5NTJkYzAwNzdhMWI0ZmI5M2JhOWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNzAsOCArNzAsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0
KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGV4
cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RXhwb3NlZENv
bnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtOTgsNyAr
OTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb2xvclNw
YWNlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhZGRGZW5jZShjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJy
aWRlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+
IG1fZGVidWdJbmZvTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RM
YXllcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJl
Y3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRS
ZWN0OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RWaWV3U2l6ZUZvclNjYWxlVG9GaXQ7
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3REb2N1bWVudFNpemVGb3JTY2FsZVRvRml0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDU2ZTgzZGNlZTlj
ZTA3MmMzYmExOTI1MTU3Y2Q1MDNiMWY1OWQ0ZWEuLjc2NjA0YjVkNTBjN2ZlNjc2YjA1YTlhYjY2
NGU1NGVhZDEzYzgxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpyZXN1bWVQYWludGluZygpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZp
Y2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOkB7IEAibGF5ZXIiOiBtX2hvc3RpbmdMYXllci5n
ZXQoKSB9XTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmll
d0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJl
Y3QgPSB2aWV3RXhwb3NlZFJlY3Q7CiAKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01v
ZGUpCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4dCkpOwogfQogCi12b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgbV9sYXllckhvc3RpbmdDb250
ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1NzljNGU4OTQ5MWQyYWE0NWZmZWVlMDQ5
YWIwZTI1NjQxMjE5Y2M5Li5hMmI3OGZiZjViYTczM2Y0YmRlYzdmZjgzOGJmOWNlMTJmYTM3Y2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIGJvb2wgV2ViUGFnZTo6aG92ZXJTdXBwb3J0ZWRC
eUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJh
Y3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09m
UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gUG9pbnRlckNoYXJh
Y3RlcmlzdGljczo6RmluZTsKIH0KQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IGxvY2F0aQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVk
aWF0ZUFjdGlvbkhpdFRlc3QoaW1tZWRpYXRlQWN0aW9uUmVzdWx0LCBpbW1lZGlhdGVBY3Rpb25I
aXRUZXN0UHJldmVudHNEZWZhdWx0LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAot
T3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3
Q29vcmRpbmF0ZXMpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8V2ViQ29yZTo6U2ltcGxlUmFu
Z2UsIE5TRGljdGlvbmFyeSAqPj4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQ
b2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzKQogewogICAgIGF1dG8mIG1haW5GcmFtZSA9
IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICghbWFpbkZyYW1lLnZpZXcoKSB8fCAh
bWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0aW9uL1dlYlBhZ2VQbGF5
U3RhdGlvbi5jcHAKaW5kZXggZjllNTllYjk5Y2RhZjlmOWFlYTBhODYzMTMxM2FjNGEzMWQ0ZTFl
Zi4uMmJjZTI1ZWNkNjAzMzIwZGIxNjRlMjUwNDYyYTAyY2RiYTNmMDNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlT
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9wbGF5c3Rh
dGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgV2ViUGFn
ZTo6aG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2Vi
UGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRl
ckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRleCBmYmZjMWZk
M2VjZTA5ZGMzZGZkOTMwMGRjMWQ2N2YwNDU5NDIwNTNiLi44ZTk0NTQ1OTdiYjIzYjIyYzUwNmY5
MjkwMjBmYzNjMzdmZmFhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBXZWJQ
YWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBX
ZWJQYWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQYWdlOjpwb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdAogewogICAg
IHJldHVybiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCmluZGV4IDI4MzZh
ZWI5Mzg1ODExN2ZkZjY1MzdjNTY0MDhkYWE1MWEzOTFlMzEuLjU4NWQ5MDZiMDk3NWVkODZiN2Y3
ODQxZjQ3YTk1NzA2YzU5NjQ4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBXZWJQ
YWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdAog
I2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBpZiAoc2NyZWVuSXNUb3VjaFByaW1hcnlJbnB1dERldmljZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJiZTIwMDVhZDZkYzFm
NmMzZGNiMDdlYmM4MWQ2ZTRmNDNiYmVmOTMuLjc4ODI3ODk0M2E4MTdmM2M0ZGVmNGFkMDhlNjg1
ZmUzYTYzOTkwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIFBMQVRGT1JNKElP
UykKICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0TmVlZE1hY2hTYW5kYm94RXh0
ZW5zaW9uKHRydWUpOwogI2VuZGlmCi0gICAgaWYgKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4gPSBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSB7CiAgICAgICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIChj
b25zdCBVSW50OCopJiphdWRpdFRva2VuLCBzaXplb2YoKmF1ZGl0VG9rZW4pKSk7CiAgICAgICAg
IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNz
SW5mb3JtYXRpb24oV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCksIGF1ZGl0RGF0
YSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMjMwN2M3
MGIyMGMyYTdkNTE1YTlmNWY2NjBlZDNhNmJiNmE0ZDUyMy4uZjhkODE5Yzk3MTE2NGU4NWQwZDk2
MzU5NDZjZWMzZGFlYmJiNGEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zNDgsNyArMzQ4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCB1bmJsb2NrU2Vy
dmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYpOwogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQotICAgIHZvaWQgbm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKKyAgICB2b2lkIG5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKICAgICB2
b2lkIHVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKTsKICNlbmRpZgogICAgIHZvaWQgcG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9vbCk7CkBAIC02
OTIsNyArNjkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgeyBmYWxzZSB9OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9jcHVNb25pdG9yOwotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAog
ICAgIFN0cmluZyBtX3VpUHJvY2Vzc05hbWU7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKQEAgLTczMiw3ICs3MzIsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRl
ZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KICAgICAv
LyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFu
dGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBt
X3Nlc3Npb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25J
RDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDFl
Njc5ZDc5Y2IxZjhhMmY5ZmU4MzE5ODM1NWNiZjUwNDI0OTFlYy4uMTQ0MTEzNjQ4NDY5NWYxZTI5
NTc3MTI4NWQ5ZmNiYWJlMGIyNzgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3NSw3ICsxNzUsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFVuYmxvY2tTZXJ2aWNlc1JlcXVpcmVkQnlBY2Nlc3NpYmlsaXR5KFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlQXJyYXkpCiAjaWYgRU5BQkxFKENG
UFJFRlNfRElSRUNUX01PREUpCi0gICAgTm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBk
b21haW4sIFN0cmluZyBrZXksIE9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQorICAgIE5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQogICAgIFVuYmxvY2tQcmVmZXJlbmNlU2Vydmlj
ZShXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZUFycmF5KQogI2Vu
ZGlmCiAgICAgUG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9vbCBoYXNBQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRl
eCBlYTBmZGMxZDUyNjc1YWJhMjYwZTY5NjIwZTdmMTdjODY4YTRkNGRlLi45NzNkNjg5ZjM5NDg2
NDZlNTZmM2I5ZjczNTYyMjAxYzI4YmQyYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0yNTgsNyArMjU4
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9tYXAtPnNldEl0ZW1JZ25vcmluZ1F1b3Rh
KGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3Jh
Z2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFn
ZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJRCkgewog
ICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3RoZXIgcHJv
Y2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2UgYXJlYSBt
YXAuCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgp
CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBm
cmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQpCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxG
cmFtZT4+IGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hpbmcoUGFnZSYgcGFnZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElEKQogewogICAgIFZl
Y3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CiAgICAgcGFnZS5mb3JFYWNoRG9jdW1lbnQoWyZd
KGF1dG8mIGRvY3VtZW50KSB7CkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQ
dHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5
T3JpZ2kKICAgICByZXR1cm4gZnJhbWVzOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFy
ZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICAvLyBO
YW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVu
dCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBwYWdlIGhl
cmUuCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbEkKICAgICBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMo
KnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1
cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVy
PiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
K3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBBU1NFUlQoaXNMb2Nh
bFN0b3JhZ2UodHlwZSgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDlmNDdhOGZlNDUxNTAzNDQ3Mjg0OGJh
NmFmMjhiZDcwOWU2YWIxZDEuLjA2ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBi
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KLSAgICBjb25zdCBPcHRpb25hbDxTdG9y
YWdlQXJlYUlkZW50aWZpZXI+JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJRDsg
fQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KIAogICAgIHZvaWQgZGlzY29ubmVjdCgp
OwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVp
bnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFyKHVp
bnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBP
cHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lkIGRpc3BhdGNoU3Rv
cmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4m
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAgICAgdm9pZCBjbGVhckNhY2hlKCk7CiAKICAgICB2b2lkIHJlc2V0VmFsdWVzKCk7CkBAIC04
NywxNSArODcsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEFwcGx5Q2hhbmdlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q2hhbmdlKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hT
ZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZp
ZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAg
IHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKIAogICAgIHZvaWQgY29ubmVjdCgpOwogCiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwmIG1f
bmFtZXNwYWNlOwogICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9y
aWdpbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0g
ICAgT3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOwogICAgIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNl
ZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCmluZGV4IDNiNTMwM2MwOTQ1NDQ1MjljOWFmNWY0NDE0MWY3NGIxMzExNWY0MjUu
LjJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVh
TWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
CiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcga2V5LCBTdHJpbmcgb2xk
VmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZykKKyAgICBEaXNwYXRjaFN0
b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
cj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5n
IG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQogICAgIENsZWFyQ2FjaGUoKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCmluZGV4IGExNDIwYTE4ZWE2YmE4YjVlNGE0NTMwOGQxNzQ5N2NmMjJl
NTM3MGEuLjAxOTAxZWE3ZmE4N2VmODY4YjA2OThmYjVlYzIyMWEzMzUxMjkyNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgJnRvcExldmVs
T3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBw
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIElkZW50aWZpZXIgc3Rv
cmFnZU5hbWVzcGFjZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYgcGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKQogICAgIDogbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKICAg
ICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICAsIG1fc2Vz
c2lvblBhZ2VJRChwYWdlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGM2Zjlm
OGExYTA2MDc3OGU0NmFhMzA1Y2NhNTIxYzc0NDdmZmExOGIuLmIwYWI5ZTczMGIzMTcyYzc3ZmIy
MjRjNjM4MTI4YzU3MDAwODM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJD
b3JlOjpTdG9yYWdlVHlwZSwgSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4g
c3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7
CiAgICAgdWludDY0X3Qgc3RvcmFnZUFyZWFNYXBDb3VudEZvclRlc3RpbmcoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5zaXplKCk7IH0KQEAgLTczLDcgKzczLDcgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7
CiAgICAgY29uc3QgSWRlbnRpZmllciBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9zZXNzaW9uUGFnZUlEOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fc2Vzc2lvblBhZ2VJRDsKIAogICAgIC8v
IE9ubHkgdXNlZCBmb3IgdHJhbnNpZW50IGxvY2FsIHN0b3JhZ2UgbmFtZXNwYWNlcy4KICAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fdG9wTGV2ZWxPcmlnaW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmgKaW5kZXggNmE4YWJmMjFiOTRkNGQ4M2RhNjIzOTMyYjczY2Y3MTJkMDZjMDg0Ni4u
MDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVkNDA5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKICAg
ICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpOwotICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXll
clByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qs
IHVpbnQzMl90LCBib29sKTsKICAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tbQppbmRleCBlZjBiZDlhZTFjY2M4ZTcyODc2MGEzYjlmZjU0ODBiZjgxNGE3OGI0
Li5hM2VmYTViODgyZmU2ZDk3ZjMxZTc4ZTUxYzNkMzBmZmVhNzMzZmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHku
bW0KQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWMKICAgICBtX3BhZ2Uu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJh
bWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXll
ckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWlu
dDMyX3QsIHVpbnQzMl90LCBib29sKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhh
bmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKQogewogICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6
OmRlZmF1bHRMYXllckhhbmRsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggMDcwNWY1
MzI2N2Y1ZTQ3YTk4Y2ExZWNiMDRjYzljYjIxNDkwYTNmNS4uYmEzNDg2NzI3YzAwYjJhY2E2Zjg2
ZTM2YjI4Y2UyOTczNGNhM2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC05Niw3ICs5Niw3
IEBAIHByaXZhdGU6CiAKICAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94
eTsKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwotICAgIE9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CiAgICAg
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fc2V0dGluZ3M7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGlt
ZVZpZGVvU291cmNlLmgKaW5kZXggZjJmNjE4ZjZjNmMxM2IwZjYzNzc3YTU0ZmU4MGQzYWRkMDc4
YzgwYy4uNmFiMDFlZWNkZWY1ZTgzOGNjMWMwNmFkZjQ4M2NhNDdhZTQxODgxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ciYgbV9tYW5hZ2VyOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4g
bV9zaXplQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnRzPiBtX3NpemVDb25zdHJhaW50czsKICAgICBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwogICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggYjVhYzIzMDM3NzYxZmM5YWJl
NWJkM2ZlYTIyNzlkNjc4NDkwNzNhMi4uMDM4ZjNmOGIwNzc4MDlmZmZiYjMwMzIyMWM0OGRmODNh
YjIwZDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsK
KyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
Jik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCBiZDdiYmE1NzIxZGQxNDJiYWM1NDJiYzg5MWQ3NWMyYmU0YjE5YWI0
Li43ZGViMjUyYjgzNDIzODM3MzE2OTRiNTU4ZGFlMWY5Mzg4NjI2YjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICNlbmRpZgogICAgIFdpbGxFeGl0RnVsbHNjcmVlbihXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBEaWRF
eGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKLSAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2l6ZSkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXpl
PiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNl
ZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2Vi
Q29yZTo6RmxvYXRSZWN0IGJvdW5kcywgTWFjaFNlbmRSaWdodCBtYWNoU2VuZFJpZ2h0KQogICAg
IFNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5k
ZXggYjYyMWE2MmJiNTdhMmMyYjcxM2NjNTNhNmE5Njk2NmNmY2NkMzU2My4uZTJlMWQyMjQzYWZh
YzhhMDEwNzFkMTYwMWYzZDk2NDRkMDlhMDNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQ2NCw3
ICs0NjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2l6ZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRl
eHRJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IDFhN2IxNzJiMDc5ZGE5NTc2YWJjYTYxZmNmOWI3M2E2ODYwNjliMjku
LjM1ZTFhNTVlMmUzMjgzYzNkYWZlOTA5OWUwZTdlNzg1Mjg4ODM4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNzA0LDcg
KzcwNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlByb2Nlc3M6OnNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3QKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KSk7CiAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIWF1ZGl0VG9rZW4pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUlu
dDgqKSYqYXVkaXRUb2tlbiwgc2l6ZW9mKCphdWRpdFRva2VuKSkpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTCiB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVUxp
bWl0KCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1p
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQ7CiAgICAgaWYgKG1fcHJvY2Vz
c1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgIGNwdUxpbWl0ID0g
c2VydmljZVdvcmtlckNQVUxpbWl0OwogICAgIGVsc2UgewpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
c3RhdGljIHZvaWQgc2V0UHJlZmVyZW5jZVZhbHVlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIGtleSwgaWQgdmFsdWUKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3M6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3ZvaWQgV2ViUHJv
Y2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUp
CiB7CiAgICAgaWYgKCFlbmNvZGVkVmFsdWUpIHsKICAgICAgICAgc2V0UHJlZmVyZW5jZVZhbHVl
KGRvbWFpbiwga2V5LCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5kZXggNDA1ZDcyNjMwYTAxNDYyYzdk
ZDdhZTNiNDVmNGFhZjQ0NDg2YzQ3NC4uMjhlMjFjNWRmZDM2NzAxOTE4YzgzN2FhNTcxZTU5Njli
NDVhYjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcgotICAgIHVz
aW5nIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3Rv
cjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6
Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcywgT3B0aW9uYWw8U3RyaW5nPiBkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpPjsKKyAgICB1c2luZyBWYWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25z
dHJhaW50c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYg
YXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNl
cywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk+OwogICAg
IHZvaWQgdmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3RyYWludHMoV2ViQ29yZTo6TWVkaWFT
dHJlYW1SZXF1ZXN0LCBTdHJpbmcgaGFzaFNhbHQsIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENv
bnN0cmFpbnRzQ2FsbGJhY2smJik7CiAgICAgVmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3Ry
YWludHNDYWxsYmFjayBtX3ZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJh
Y2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2ds
aWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTEzNjkxMjAwNjcz
OTFmZjM2NjI5YWE2YzlhYmIwODkyZjY2OWI3OS4uNGViOGMxMmEyOTliODg0ZWE4MGRiZmQ3OTNh
YzFkMWZkYWQ5ZGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIv
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0
LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBtZXNzYWdlcyAtPiBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLSAgICBWYWxpZGF0ZVVzZXJNZWRp
YVJlcXVlc3RDb25zdHJhaW50cyhzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IHJl
cXVlc3QsIFN0cmluZyBoYXNoU2FsdCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0
cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBhdWRpb0RldmljZXMsIFZlY3Rv
cjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXMsIE9wdGlvbmFsPFN0cmluZz4g
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBBc3luYworICAgIFZhbGlkYXRlVXNlck1lZGlhUmVx
dWVzdENvbnN0cmFpbnRzKHN0cnVjdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGhhc2hTYWx0KSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGludmFsaWRDb25z
dHJhaW50LCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gYXVkaW9EZXZpY2VzLCBWZWN0
b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gdmlkZW9EZXZpY2VzLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBBc3luYwogICAgIEdldE1lZGlhU3RyZWFt
RGV2aWNlcygpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlcykgQXN5
bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCBhMmY1M2JlMDNmNDMwMzQwYjQ3YzU0
YWM2ZTBhMTQxM2EwOTFlYTM0Li4wMjhmOWQ2Y2IxYjdkODIxYjVmMWI3NWUzM2QzY2Q2ZTYzYjI4
OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFp
bGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3Rl
cmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2Vi
Q29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlOyB9CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNz
T2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2U7IH0KICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxh
YmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRl
ckNoYXJhY3RlcmlzdGljczo6Q29hcnNlOyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IDAzMjk5MTYzYzQw
NWQwZTJmYThlYTVmNGJhZTQ2YjE5NjFlNDcwZTcuLjc3YzA4ZDg1NzAzMDI1OGMxNWU4OWYyMjVl
MjlhMzhlOGZiNzQzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpAQCAtOTAsNyArOTAsNyBAQCAtICh2b2lk
KWFkZDooRE9NSFRNTE9wdGlvbkVsZW1lbnQgKilvcHRpb24gaW5kZXg6KHVuc2lnbmVkKWluZGV4
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGlmICghb3B0
aW9uKQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIHJhaXNlT25ET01F
cnJvcihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBPcHRpb25hbDxXZWJDb3JlOjpIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+IHsgc3RhdGljX2Nhc3Q8aW50PihpbmRleCkg
fSkpOworICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTEVsZW1lbnRPckludD4g
eyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4KSB9KSk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlOih1bnNp
Z25lZClpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJh
bmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCmluZGV4IDE0
ZjQ4OWRhYTUxMjY1NTNhZWYxZTdiMzgzMmIyN2Q5MTFiODc0OTguLjQxMTVhNjRkNjVhY2Y3Nzlm
ZWVlMmEwNTNiOGY1M2Y2OTM2ZjhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UmFuZ2UubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdl
KiB2YWx1ZSkKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCi1ET01SYW5n
ZSAqa2l0KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdmFsdWUpCitET01S
YW5nZSAqa2l0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB2YWx1
ZSkKIHsKICAgICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVSYW5nZSh2YWx1ZSkuZ2V0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZUludGVybmFsLmgKaW5kZXgg
ZjgwNGU3ZWM5MmMyODUwYmQxYzMwNzNiMjZjNmJmM2ZjMmFlMzNhYS4uMDdhMjFiNGIzMzE5MDNm
NWE4OTNjMjRmNzlmNzQzNDE4ZjBhMmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NUmFuZ2VJbnRlcm5hbC5oCkBAIC0zMyw0ICszMyw0IEBAIHN0cnVjdCBTaW1wbGVS
YW5nZTsKIAogV2ViQ29yZTo6UmFuZ2UqIGNvcmUoRE9NUmFuZ2UgKik7CiBET01SYW5nZSAqa2l0
KFdlYkNvcmU6OlJhbmdlKik7Ci1ET01SYW5nZSAqa2l0KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpOworRE9NUmFuZ2UgKmtpdChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCmluZGV4IDliMTAyZjFlNDJiZGUwNTE5MGU5NWVjNWU5NzA0YTk5ZmE5YWZhYmUuLjc1NDI2
OTM4MTJlNzhiN2Y4OWE4ZTM0NDAzNzMzMDA4YWZjM2YyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg4Myw3ICs4ODMsNyBAQCBib29sIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0
cmluZyYgc2NyaQogCiAgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3Qodm0s
IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwogCi0gICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3Rk
OjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFs
bG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC5nZXQoKSwgSlNDOjptYWtlU291cmNl
KHNjcmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGU0OTRmYzdkZmI2Yjli
YTQ2Mjc4ODczOTM0YjA4YjUwZDA4MjNkY2UuLjMzYmE1N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1
NWQ3OGUwOTVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNjMsNyArMzYzLDcgQEAgLSAoQk9P
TClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0
CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9uVk0oKSk7Ci0gICAgICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50
SXNVc2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOworICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElz
VXNlckdlc3R1cmUoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgICAgICBhY2NlcHRl
ZEV2ZW50ID0gW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+ZXZlbnQocGx1Z2lu
LCBldmVudCk7CiAgICAgfQogICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGJhZDUxZjBiMjEyZGFlN2I2NzEwMWEwYWFhNjNlNDk0OWRlN2QzNDku
LjQ0ZjQwNGZkZjViODkyNDI5MjI1MzRiODFhYjM3MjJjMTExNzFiMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaG92ZXJTdXBwb3J0
ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9p
bnRpbmdEZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hh
cmFjdGVyaXN0aWNzOjpGaW5lOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzOjpGaW5lOyB9CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3M6OkZpbmU7IH0KIAogICAgIE5TUmVzcG9uZGVyICpmaXJzdFJlc3BvbmRlcigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCAzNDAyZjM5MWU1MjZhYWE3NjIwZGNmMWUzNDgyODRlMzQzZWJj
MjU3Li40NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtNjMsMjQgKzYzLDI0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKSBmaW5hbDsKICAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKKyAgICBib29sIHNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAKICAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJD
b3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29y
ZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFu
Z2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29y
ZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wgc2hvdWxk
SW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJv
b2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgZmluYWw7
CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykgZmluYWw7CiAKLSAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFdlYkNvcmU6OlN0
eWxlUHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgZmluYWw7CiAKICAgICBib29sIHNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29u
c3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIHJhbmdlVG9CZVJlcGxhY2VkKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0
ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
MGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYxNDBjNDI5Ny4uNDE4NmY1NTVkMThjZjZh
MGVmNDAzYmUyZjlhMTJjYmVjZTdkNDBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjM2LDcg
KzIzNiw3IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkK
IAogI2VuZGlmCiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
IHsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzptX3dlYlZpZXcgc2hvdWxkRGVsZXRlRE9NUmFuZ2U6a2l0KHJhbmdlKV07CiB9CkBAIC0y
NTcsNyArMjU3LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFw
cGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGlu
Z0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwogICAgICAgICBzaG91bGRBcHBs
eVN0eWxlOmtpdCgmc3R5bGUubXV0YWJsZUNvcHkoKS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpKQpAQCAtMjk2LDEzICsyOTYsMTMgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVu
ZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBbW21fd2ViVmll
dyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRFbmRF
ZGl0aW5nSW5ET01SYW5nZTpraXQocmFuZ2UpXTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQorYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
CiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViVmlldzsKICAgICByZXR1cm4gW1t3ZWJW
aWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRJbnNl
cnRUZXh0OnRleHQgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0KHJhbmdlKSBnaXZlbkFjdGlvbjpraXQo
YWN0aW9uKV07CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVj
dGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJldHVybiBbbV93ZWJW
aWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOmtpdChmcm9tUmFuZ2UpIHRvRE9NUmFu
Z2U6a2l0KHRvUmFuZ2UpIGFmZmluaXR5OmtpdChzZWxlY3Rpb25BZmZpbml0eSkgc3RpbGxTZWxl
Y3Rpbmc6c3RpbGxTZWxlY3RpbmddOwogfQpAQCAtNDA4LDEyICs0MDgsMTIgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKICNlbmRpZgogfQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAg
IC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KQEAgLTU3MCw3ICs1
NzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uKCkKIAogI2VuZGlmIC8vIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKIAot
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYgbm9kZSwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9u
IGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9k
ZSYgbm9kZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ1Jhbmdl
LCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rpb24pCiB7IAogICAgIHJldHVybiBbW21fd2Vi
VmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRJ
bnNlcnROb2RlOmtpdCgmbm9kZSkgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0KHJlcGxhY2luZ1Jhbmdl
KSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlvbilnaXZlbkFjdGlvbl07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2MzUxYzJlYTA2NjU3MzljZDcxZTBjNDdlMzdhNDdh
ZDA2MTE0Mzc4Li5iZDUyMjNhMGNlMTUwY2YzNWEyOGI3NTUwNDgwMDRjMWZjYjU0YWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3Nl
cnRpb25zCiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgbWFrZVJl
cHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgYm9vbCBo
YXNIVE1MVmlldygpIGNvbnN0IGZpbmFsOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIGZpbmFsOwotICAgIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lUTFM+KSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzJhNTI4OWQwZjZhZGZiMDU5NTRlMGFkYWRm
M2E4ZmZhNDU3MWZmOS4uNjM0MjIwMDVmZWY0ZmIwOWNmNjdjYTIzZGYxMDJjYTc0YzVmZjk1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwNSwxMiArMjA1LDEyIEBAIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUp
CiB7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpAQCAtNjk0LDcgKzY5NCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlCiAgICAgfQogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVD
b250ZW50PiwgT3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lU
TFM+KQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwu
CiAgICAgQVNTRVJUKFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3IGRvY3VtZW50
Vmlld10gIT0gbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMzYjI4YTFmMDgz
ZWQzNjZiMjc0ZGU5ZDYzM2QyM2JkMDA3ZDZkNWQuLjc3YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5
OTBhMGE2NDgxNzFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJp
ZGUgeyB9CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCAxZWQxNDM4
YWM2NmUwNTVhMTJlZmYxODY3NTM5Y2I1MWQ5MmMxNzA0Li5lNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0
MmJhODAxOTM1N2EyNzM0ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9u
KEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRh
dGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBj
b3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggNmQ5NjZkODIxYzAw
MWM2M2U2NGM5YmI0N2VlMzkwMjlhYTRhNDU1MS4uNjEzNTdlYWM2MWM5ZTI5YmI4MDYwZTc1MGYz
YjA4MWI2NTZiNTU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
QEAgLTM2LDE5ICszNiwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQoKTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVu
dE5ldHdvcmsoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVS
THMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
TW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBk
YXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFu
Z2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRl
PiYmKSBvdmVycmlkZTsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9E
X01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KaW5kZXggNGExYmEzYzY3YWVmNzY1MTAwZmNh
MTIzNTIxYzk4ZGRhMWY1MGUyNi4uNDA3OTJhMDk3NTkzYmIwMDM0M2E2ZjIyYmY4Y2E5MWU2MjZk
OTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQpAQCAtMzks
NyArMzksNyBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6On5XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQoKQogewogfQogCi1PcHRpb25hbDxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikKK3N0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnZhbGlkYXRlZFBh
eW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KQEAgLTcyLDI3ICs3MiwyNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bQogewogfQogCi12
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYm
KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9k
VXBkYXRlPiYmKQogewogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVu
dDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikKIHsKIH0KIAotdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYpCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKQogewog
fQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5n
ZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKQor
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1v
ZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiYmKQogewogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01F
VEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQ
YXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3Vs
dD4mJikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+
JiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMzc4ZDRkNjI1NTNh
YzIzMDM4ZWU2OThkNDA5MDY0ODdiYzM1NWYxZC4uMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRl
NjFkOGIxZTU3MzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU4LDggKzU4
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBjMjM3MjgxMWNmMTM5YmFiNDhjNjg4MTI3YmYwYzM5ZmU1NmRkMTU4Li5iZGM4
NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRiMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShjb25zdCBTdHJpbmcm
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29udGFpbnNT
dHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh0eXBlKTsKIH0KIAotT3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY2hhbmdlQ291bnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRl
eCAwZTkxOGQ1NTQxYWMzMjZiZmFlZTkwN2U3Y2YwNTEwNjE5NGEyNDc4Li41MjVlZTJmY2RlZWEx
NmM1YzZmOWRmZTgxMzVlZDdkMWM1ZWJiZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNo
UGx1Z2lucygpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgY29u
c3QgVVJMJikgZmluYWw7CiAKICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBkNjVkYWM5ZDBlMmYxZTFlMjA1OThhNzE5ODFmMjg1
ZWNmY2E2MGIwLi42NjVhODAyNmU5ZGIwZmVlNTQ2MGNiYWJkM2E1MGI5MGE2MDY5MzM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygpCiAgICAgW1tXZWJQbHVnaW5EYXRhYmFz
ZSBzaGFyZWREYXRhYmFzZUlmRXhpc3RzXSByZWZyZXNoXTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQ
YWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikK
K1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdp
bkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
cGx1Z2luczsKIApAQCAtNzUsNiArNzUsNiBAQCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZwogCiBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNp
YmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewotICAgIE9w
dGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogICAgIHJldHVybiBwbHVnaW5J
bmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCmlu
ZGV4IDdkMTJiZTY2YmM1ZDI4MTNhNjBjY2JhYmNmZDljMDVlOTk5MjFiNDEuLjE3MGMzNTIzYzdj
MTU1MzZjMjhlN2I1Zjk4YTMzYTM2OTk0ODBmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtNjAsNyAr
NjAsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24q
IG9yaWVudGF0aW9uKQogICAgIHJldHVybiBvcmllbnRhdGlvbiA/IG9yaWVudGF0aW9uLT5tX2lu
dGVybmFsLT5tX29yaWVudGF0aW9uLmdldCgpIDogMDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRv
dWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkK
IHsKICAgICBpZiAoIWNhblByb3ZpZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2MTk5YThj
NDdiNGIwZmVmNGU5YjIzNTA0YjI0OTIzNTQ1YjJjZGUzLi40MTM5YmI1YTkxNjgzZTY1YWNjMDgy
NTNiZWNiM2ZkZDBhYmM2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTgwNCwxMiArODA0LDEyIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05T
UmFuZ2U6KGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJilyYW5nZQogICAgIHJldHVybiBjaGFy
YWN0ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cygqZWxlbWVudCks
IHJhbmdlKTsKIH0KIAotLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCistIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogewogICAgIHJl
dHVybiBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6bnNyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzpX
ZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290XTsKIH0KIAotLSAoT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5n
ZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8KKy0g
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFu
Z2VJc1JlbGF0aXZlVG8KIHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKaW5kZXggNjlhODEyZGFmMjRjMmY2Yzc2
NDg4ZThkMzhmMzFmMDA2ZTNlMjdhZS4uYWYxZjE1MTM0ODZiYTM3MzMzZGJjMzU5ZWNmZWM1NmRm
YjdhNzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZUludGVybmFsLmgKQEAgLTE2Niw4ICsxNjYsOCBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdl
YkZyYW1lICp3ZWJGcmFtZSk7CiAjZW5kaWYKIAogLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5n
ZTooY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKXJhbmdlOwotLSAoT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZTsKLS0gKE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2Up
cmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxh
dGl2ZVRvOworLSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRU
b0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOworLSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlIHJhbmdlSXNSZWxhdGl2
ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlzUmVsYXRpdmVUbzsKIAogLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJp
bmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5n
OwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQ
YXJhZ3JhcGhzOihOU0FycmF5ICopbm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNDNjNDdj
ZTFjNTQ1OWZhMGU3OTAyNTFiYjJjOWM4NDNhZDVhODYyOS4uZmU2YzQzZmQ4ODRjZjM0MzZjM2Ni
MGQyZWNhNWM5MDQ0Yjk1MDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtNTYsNyArNTYsNyBA
QCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAKLU9wdGlv
bmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
KnBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFs
LmgKaW5kZXggN2VhYWE5YzBlY2M1MGE4ODgxYzI4OGNkZjY5ZWM4Zjk0NGQ4NzJlNC4uZmZhYTYy
MGE3NmVhMjdiNWYxOGY2Mjc3ZjMzYzcyNGEwNWE1YWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRp
b25JbnRlcm5hbC5oCkBAIC0zMCw1ICszMCw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOwogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCAwODRhYjczMTRmOTQzNmVmMTM0ODE0MTgzN2VhMmU2OWNkZjY2
MTJkLi4zODg5ZDI2NzA5YzY3ZGE0MDQyNzUyNWFjY2ZmNDcyMmMyMGIzNzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI1MSw3ICsy
NTEsNyBAQCAtICh2b2lkKXNldE1lbnVDb250cm9sbGVyOihOYWtlZFB0cjxXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI+KW1lbnVDb250cm9sbAogLSAodm9pZClmb3J3YXJkQ29udGV4dE1l
bnVBY3Rpb246KGlkKXNlbmRlcjsKIEBlbmQKIAotc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKHRhZyA+PSBDb250ZXh0
TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICYmIHRhZyA8PSBDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9t
VGFnKSB7CkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRl
eHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdlcj4g
dG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KaW5kZXggMmQ2NjJlYzk0ZjRmM2U4M2M4OGNkMjNiYmU0NWY0OGFjNWJjMWZh
ZC4uNDY0N2Y2Y2RlYTU5M2E0YWM4ZjI2MTMwY2Y5YTIwZmMzNzM4MDRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNDI3LDcgKzQyNyw3IEBAIC0gKGlkIDxOU0ltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURl
dGVjdGVkCiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGV0ZWN0ZWRJdGVtPiBkZXRlY3RlZEl0ZW07
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXRlY3RlZEl0ZW0+IGRldGVjdGVkSXRlbTsK
IAogICAgIGlmIChbW193ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6YWN0aW9uQ29udGV4dEZvckhpdFRlc3RSZXN1bHQ6cmFuZ2U6KV0pIHsK
ICAgICAgICAgRE9NUmFuZ2UgKmN1c3RvbURhdGFEZXRlY3RvcnNSYW5nZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYmFkM2Y4YWY2OTYyMGJjZDUz
MGMwZWJmOTczMmJiMzVjM2IzZGMyLi44YTRlYzg5MTBjYTJmNDEwNGU0YjU5YjIyZjEwODEyMDBm
MjgwZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC02NDIsNyArNjQyLDcgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24gb3BlcmEKIH0KIAogI2lmIFVTRShB
UFBLSVQpCi1zdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQogewogICAg
IGlmICghZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7
CkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uTm9uZTsKIH0KICNlbHNlCi1zdGF0aWMgX1VJRHJhZ09wZXJhdGlvbiBraXQoT3B0
aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBfVUlE
cmFnT3BlcmF0aW9uIGtpdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQogICAgICAgICByZXR1cm4g
X1VJRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC02OTEsNyArNjkxLDcgQEAgc3RhdGljIF9VSURyYWdP
cGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRp
b24pCiB9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKIAotV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQo
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWN0aW9uKQorV2ViRHJhZ1NvdXJj
ZUFjdGlvbiBraXQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhY3Rp
b24pCiB7CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0
aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IGJhZDVmZDhhMTUwYWNmMmMzN2E1N2MzNjRmODIxOWRjZDQzNzMwYjMu
LmFlY2EwOWRkNmI2MzJiNDcyZTM3OGViMGU4MWI0ZWU2Nzk2NzkxMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMTA1LDcg
KzEwNSw3IEBAIHVzaW5nIENvY29hRHJhZ09wZXJhdGlvbiA9IHVpbnQ2NF90OwogCiBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJh
Z09wZXJhdGlvbik7CiAKLVdlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+KTsKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCA1ZGZh
ZDhkYTU1ZThmMjg3ZWExOTljOWViZDk4NjFlNjNkNDUxODlhLi42MmI1OTM0ZjY2MmI3ZWE0M2Ey
Yzk3YjBmYzEyNWFlZTMyZDU1ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCkBAIC0xNjIxLDcgKzE2MjEsNyBAQCBJRE9NUmFuZ2UqIERPTVJhbmdlOjpj
cmVhdGVJbnN0YW5jZShXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiAgICAgcmV0dXJuIG5ld1Jhbmdl
OwogfQogCi1JRE9NUmFuZ2UqIERPTVJhbmdlOjpjcmVhdGVJbnN0YW5jZShjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQorSURPTVJhbmdlKiBET01SYW5nZTo6Y3Jl
YXRlSW5zdGFuY2UoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJh
bmdlKQogewogICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2Up
LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVD
bGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCmluZGV4
IDU2ZjhjZjA3Y2Y4ZmZiODI1ZWM1MzNiMmFjM2RhNjQ5ZGE0NDE5YjEuLmU1ZDYxOThhMDFjMjAy
ZGJmNTdlZmQ3YzFiYTY3NmE2ZjA0MGUzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUNvcmVDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9N
Q29yZUNsYXNzZXMuaApAQCAtODIzLDcgKzgyMyw3IEBAIHByb3RlY3RlZDoKIAogcHVibGljOgog
ICAgIHN0YXRpYyBJRE9NUmFuZ2UqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OlJhbmdlKik7Ci0g
ICAgc3RhdGljIElET01SYW5nZSogY3JlYXRlSW5zdGFuY2UoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+Jik7CisgICAgc3RhdGljIElET01SYW5nZSogY3JlYXRlSW5zdGFuY2Uo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKTsKIAogcHVibGljOgog
ICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBjMGM0MDU3ZjZiZWY4M2M4MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcy
Li5hMjI0NThmZTgwNDVhNmM0ZjIxYjM1ZTdmYTkzNmFiNzM2YzU4MmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5n
SWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6
Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVx
dWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogCiAg
ICAgaWYgKGpzU3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEg
dGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3RyZWFtIGZvciBpdC4gb3RoZXJ3aXNlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAppbmRleCA4NWYyMjQ2NDAzZGYxNGE1MGJiYzljNjczMGYwNDA4YjIwYWUyNGUx
Li4wOTlhZTljNzA5ZDE1N2VhMGFhOTBmNjJjOGJiZTRlMGU4MzI0NzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhvdmVyU3VwcG9ydGVk
QnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNo
YXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2
aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGlj
czo6RmluZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3Rlcmlz
dGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsg
fQogICAgIE9wdGlvblNldDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVy
Q2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOyB9CiAKICAg
ICB2b2lkIGludmFsaWRhdGVSb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzMzA0NTRlYWE0ZDVjZmE0NTZmMzY1YzNiM2QzODJk
OGQyMTBhZGIwLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTI1NywxNiArMjU3LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpCiB7CiB9CiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1i
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRE
ZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2UpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwogICAgIGlmIChGQUlM
RUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdldCgpKQpAQCAtMjk2
LDcgKzI5Niw3IEBAIHN0YXRpYyBXZWJWaWV3SW5zZXJ0QWN0aW9uIGtpdChFZGl0b3JJbnNlcnRB
Y3Rpb24gYWN0aW9uKQogICAgIHJldHVybiBXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQ7CiB9CiAK
LWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgaW5zZXJ0aW5nUmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbiBnaXZlbkFjdGlvbikKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNl
cnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogeyAK
ICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWRpdGluZ0RlbGVnYXRlOwogICAgIGlm
IChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkaXRpbmdEZWxlZ2F0ZSkpIHx8
ICFlZGl0aW5nRGVsZWdhdGUuZ2V0KCkpCkBAIC0zMjAsNyArMzIwLDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGwKICAgICByZXR1cm4gc2hvdWxkSW5zZXJ0OwogfQogCi1ib29sIFdlYkVkaXRv
ckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0
aW9uIGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQogewog
ICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBlZGl0aW5nRGVsZWdhdGU7CiAgICAgaWYg
KEZBSUxFRChtX3dlYlZpZXctPmVkaXRpbmdEZWxlZ2F0ZSgmZWRpdGluZ0RlbGVnYXRlKSkgfHwg
IWVkaXRpbmdEZWxlZ2F0ZS5nZXQoKSkKQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgV2ViU2Vs
ZWN0aW9uQWZmaW5pdHkgdG9XZWJTZWxlY3Rpb25BZmZpbml0eShXZWJDb3JlOjpBZmZpbml0eSBh
ZmZpbml0eSkKICAgICByZXR1cm4gV2ViU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtOwogfQog
Ci1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGN1cnJlbnRSYW5nZSwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBwcm9wb3NlZFJhbmdlLCBXZWJDb3JlOjpBZmZpbml0
eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBmbGFnKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIGN1cnJlbnRSYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIHByb3Bvc2VkUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IHNlbGVjdGlvbkFmZmlu
aXR5LCBib29sIGZsYWcpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwog
ICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdl
dCgpKQpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhCiAgICAgcmV0
dXJuIHNob3VsZENoYW5nZTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5
U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJv
cGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZTAwNTk3MDNlY2ZhMmQwZmU5ZDA4Nzcx
NjRkODI1MjNlZTU3ZmU2YS4uYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5h
bDsKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
KSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNl
cnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29y
ZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7Ci0gICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlk
RW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpAQCAtNjUsMTAgKzY1LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3JlOjpGcmFtZSopIGZpbmFs
OwogICAgIHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKSBmaW5hbCB7IH0KIAotICAgIGJvb2wg
c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
ZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRJbnNlcnROb2Rl
KFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJl
cGxhY2luZ1JhbmdlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOwotICAgIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKKyAgICBib29sIHNob3Vs
ZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdSYW5nZSwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9u
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBm
aW5hbDsKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbDsKICAgICBib29sIHNob3VsZE1v
dmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5kbygpIGZpbmFsOwogICAgIHZvaWQgcmVkbygpIGZpbmFsOwogICAgIAotICAg
IGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmlu
YWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmco
V2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwogICAgIHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGlu
ZyhXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CiAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGE3MzE5NjgyMTBjZDcwOWM1MzhiYjIzMWYzYTU1MWU1NmJhNzRmNDQuLjJhN2Q1
YjBhNjVjMzcwZGM2N2IzNWIxOTA4MWE5YzFiZDk1ZjBkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTExOCwxMiArMTE4LDEyIEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+
V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogewogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlE
KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
QEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3Ry
aW5nKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+LCBPcHRpb25hbDxV
c2VkTGVnYWN5VExTPikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8
VXNlZExlZ2FjeVRMUz4pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndl
YlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxl
Z2F0ZTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAg
IHZpZXctPmZyYW1lUmVjdCgmcGl4ZWxSZWN0KTsKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dy
b3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAg
ICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWUo
cGl4ZWxSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQ1OWNlMjc4NWE1ZTQz
MGU5OWI4YjNhZWJiYjQ0NmYzNmYyNDNjZmYuLjBhZGJmOTdjM2YwMGJkM2ZhZTBlMmY5ZGU1YjY0
NjEyNjIzNDkyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsOCArNTEsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgZmlu
YWw7CiAKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRM
ZWdhY3lUTFM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VXNlZExlZ2FjeVRMUz4pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpX
aWxsQ29udGludWVMb2FkaW5nKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAppbmRleCAzOGNhMTcxY2M2Yjg4MmE0ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1
Li5lMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3ZTc3ZTk3MzU4MmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJvdmlkZXItPnVucmVnaXN0ZXJXZWJWaWV3KG1f
d2ViVmlldy5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQog
ewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYg
KEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3Njk1NTQ0MmZmYmQzMTY0MGMxZTk2NTRjOTdhZTY1
NDk5MTQxZTAwLi4xOTU3NDE3YjU1ZDdlNWQyZjliNzFlNWM5ZDljMzAzZGZlZjRlMTg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1dGhvcml6YXRpb25Ub2tlbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAK
ICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXggODI3MWNlNzFk
NTE5ZDZiYzBkNDBiMTAxZjY0MTkwYThiZjA5MGJhYy4uZDMxMGQyOTEwMDg3MDA5ZTg5YmFmZWY1
ZjBlMDEyNzYxOTRkZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygp
CiAgICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOwogfQog
Ci1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBw
b3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQorVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdl
YlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQog
ewogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBvdXRQbHVnaW5zOwogICAgIGNvbnN0
IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFs
bGVkUGx1Z2lucygpLT5wbHVnaW5zKCk7CkBAIC04Niw2ICs4Niw2IEBAIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6
UGFnZSYgcGFnCiAKIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJv
dmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVS
TCYpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5OYW1lczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luTmFtZXM7
CiAgICAgcmV0dXJuIHBsdWdpbkluZm8ocGFnZSwgc3VwcG9ydGVkUGx1Z2luTmFtZXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCA3Nzg4MDRmYmQ1MzM2NzRmMTIwOThjOTgw
ZTJmYjQxYWEzMzJiZWFlLi45MzQ4MGY0YWY3YjY2MjcyNjlkZTVkODdhZWViMzIyNTMzZmE5ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYs
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiYpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJmksIGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXgg
OGRhOTE5NDgzYjBkYWE3MTBkNjIzNjJlOWIzYTA0NjlkNTAyYmRjZi4uMWZiN2UzYmNiN2Y0MmE1
YmM4YTkyZWQ4MTAwNjc5ZWMyN2M1MDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcApAQCAtMjA2Miw3ICsyMDYyLDcgQEAgdm9pZCBXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3Vu
ZCgpCiAgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAod2ViVmlldygpLT50cmFu
c3BhcmVudCgpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnRCbGFjayk7CiAgICAgY29yZUZyYW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1
cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCBkNjRlNzZhODU2NTkyMDQyMWExOGI0
NmRhOGQxNTRlMmEwMDFlZDYyLi45MjRjNDhiMTNjNDE2NWZmZThmMDg4Yzg3ZDA2ZGY0OWM2MDM0
NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdAogICAg
IHJldHVybiBTX09LOwogfQogCi1PcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29y
ZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlv
bikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmlu
ZGV4IDk3NmIzMmFhMmNmZWQwODAxYWM5ZThkOGVhZmZkNTM5ZTk5MTg2ZDguLjBkMGQ2ODBjN2Q2
OTM2ZTYyOTI3MzJmMTA3NjdjNGE5NjQzZDIxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTQ1LDEzICs0NSwxMyBAQCBwdWJs
aWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVzdGFtcCwgZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogCi0gICAg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fcG9zaXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9wb3Np
dGlvbjsKIH07CiAKLU9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBj
b3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAK
ICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggN2UxN2Y3MWQxNDJjMTZkYTUzZmU3MjY2ZjQ0Yzg4OWNkNDM4MmUyZS4u
YWFlMDljODIyNzA0MzljMTFiNzQ0OWZjZTM5OTcwYmU2NjYzMDE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTU4MzgsNyArNTgzOCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
dmlzaWJsZUNvbnRlbnRSZWN0KF9PdXRfIExQUkVDVCByZWN0KQogICAgIHJldHVybiBTX09LOwog
fQogCi1zdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihPcHRpb25hbDxEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1
cnNvcihzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKICAgICBpZiAo
IW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfTk9ORTsKQEAgLTY0NDYsNyAr
NjQ0Niw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1l
KiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9OKiBjCiAgICAgaWYgKGNoYXJQb3MtPmR3Q2hh
clBvcyAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEludFJlY3QgY2FyZXQ7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgIGlmICh0
YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmFuZ2UgPSB0
YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMmJkOTNhMTVj
ODAzMzFlMDJlODc1YWM4OWNmZGY0NTUwNzY1MTc1Li5lYjAwNjAxMTNhNmVmM2Q0YjM2YzhkNTcz
NzlhMTViMTU0NjMyOTdhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9y
IHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFu
eSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBPcHRpb25h
bDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0yOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IGNsYW5nIHRocmVhZCBzYWZldHkgYW5ub3Rh
dGlvbnMgaW4gV1RGOjpEYXRhTXV0ZXgKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggNWM1ZjMxYWFlODgxMDhiNDZj
OTkxNWE4ZTdiOGJjMWY4N2E3ODNkMi4uMzAxYzlmOGFhYWJmYzFjYWUzMWJmYjY0ODQwMmQ3YWY0
ZmI2N2JkNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTgxLDEyICs4MSwxMiBAQCAtICh2b2lkKV9hY2Nlc3Np
YmlsaXR5U2Nyb2xsVG9HbG9iYWxQb2ludDooTlNQb2ludClwb2ludDsKIC0gKHZvaWQpX2FjY2Vz
c2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0cmli
dXRlTmFtZTsKIEBlbmQKIAotc3RhdGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBpZCBlbGVt
ZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gbWFrZVZl
Y3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGlkIGVsZW1lbnQpCiB7
CiAgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2UqLCBpZCBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSosIGlkIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIHsg
eyBlbGVtZW50IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQppbmRleCAzMjUzYWM3MjYwMjU2NWM0ZDllZDQ5N2MwOGViM2NkZDNjZGJmYmQ2Li43ZjYx
Y2UwMTQ2YjM2MGMxY2ZhMzYwMjg2NzMwMGUyZGU0OWQ3OTgzIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9sYXRpbGUg
Ym9vbCBkb25lOwogUmV0YWluUHRyPE5hdmlnYXRpb25Db250cm9sbGVyPiBnTmF2aWdhdGlvbkNv
bnRyb2xsZXI7CiBSZWZQdHI8VGVzdFJ1bm5lcj4gZ1Rlc3RSdW5uZXI7CiAKLU9wdGlvbmFsPFdU
Ujo6VGVzdE9wdGlvbnM+IG1haW5GcmFtZVRlc3RPcHRpb25zOworc3RkOjpvcHRpb25hbDxXVFI6
OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKIFdlYkZyYW1lICptYWluRnJhbWUg
PSBuaWw7CiAvLyBUaGlzIGlzIHRoZSB0b3Btb3N0IGZyYW1lIHRoYXQgaXMgbG9hZGluZywgZHVy
aW5nIGEgZ2l2ZW4gbG9hZCwgb3IgbmlsIHdoZW4gbm8gbG9hZCBpcyAKIC8vIGluIHByb2dyZXNz
LiAgVXN1YWxseSB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBtYWluIGZyYW1lLCBidXQgbm90IGFs
d2F5cy4gIEluIHRoZSBjYXNlCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29t
bW9uLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCmluZGV4IDQ2ZWY4NTky
OTI4MjZlMGI1OGQwMmM0MGExZWEwMzEwYzY5MjllYjguLmQ1MmU1Mzk1OGRjZWIwYmQzZDUyZWJj
NGJmNmEwMmRmZTIxODE3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21t
b24uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCkBAIC0yMDUsNyAr
MjA1LDcgQEAgYm9vbCBhc2tQcm94eVNldHRpbmdzKEhXTkQgaHduZCwgUHJveHlTZXR0aW5ncyYg
c2V0dGluZ3MpCiAgICAgcmV0dXJuIGRpYWxvZy5ydW4oaEluc3QsIGh3bmQsIElERF9QUk9YWSk7
CiB9CiAKLU9wdGlvbmFsPENyZWRlbnRpYWw+IGFza0NyZWRlbnRpYWwoSFdORCBod25kLCBjb25z
dCBzdGQ6OndzdHJpbmcmIHJlYWxtKQorc3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBhc2tDcmVk
ZW50aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFsbSkKIHsKICAgICBzdHJ1
Y3QgQXV0aERpYWxvZyA6IHB1YmxpYyBEaWFsb2cgewogICAgICAgICBzdGQ6OndzdHJpbmcgcmVh
bG07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmggYi9Ub29scy9N
aW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKaW5kZXggNmM0MjFjZWU2NmE5MDdiODY1ZTc4NTI1OGQw
NmQ5MTIyYjA1MDM3YS4uOTk2NGQ1ZTUwNDMxOWQ3NzgzMzY4M2RkZjU4MDliYzdmN2Y0ZGMwYiAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXB1dGVGdWxs
RGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFwcERhdGFGb2xkZXIoX2JzdHJfdCYgZGlyZWN0b3J5
KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1hbmRMaW5lKCk7CiB2b2lkIGNyZWF0ZUNy
YXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwotT3B0aW9uYWw8Q3JlZGVudGlhbD4gYXNr
Q3JlZGVudGlhbChIV05ELCBjb25zdCBzdGQ6OndzdHJpbmcmIHJlYWxtKTsKK3N0ZDo6b3B0aW9u
YWw8Q3JlZGVudGlhbD4gYXNrQ3JlZGVudGlhbChIV05ELCBjb25zdCBzdGQ6OndzdHJpbmcmIHJl
YWxtKTsKIGJvb2wgYXNrUHJveHlTZXR0aW5ncyhIV05ELCBQcm94eVNldHRpbmdzJik7CiAKIGJv
b2wgYXNrU2VydmVyVHJ1c3RFdmFsdWF0aW9uKEhXTkQsIGNvbnN0IHN0ZDo6d3N0cmluZyYgdGV4
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lIGIvVG9vbHMv
U2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQppbmRleCA5MGNkMzBlNzU2MTAyYWViZWNhNWQzNGE4
N2JkNmU4MjY1NmJkMjYxLi5mYzcxYmEwZjkzODFlNWMyNTVmMGYwMjVkZjI4ODNkZWQzYzQ5NmVk
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xz
L1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKQEAgLTExMiw2ICsxMTIsNyBAQCBteSAlcmVuYW1l
cyA9ICgKICAgICAiV1RGOjpPcHRpb25hbCIgPT4gInN0ZDo6b3B0aW9uYWwiLAogICAgICJXVEY6
Om1ha2VPcHRpb25hbCIgPT4gInN0ZDo6bWFrZV9vcHRpb25hbCIsCiAgICAgIm1ha2VPcHRpb25h
bCIgPT4gInN0ZDo6bWFrZV9vcHRpb25hbCIsCisgICAgIk9wdGlvbmFsPCIgPT4gInN0ZDo6b3B0
aW9uYWw8IiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0gKApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0
dGVzdC5weQppbmRleCAwNDIzNWNkOGVkOWMxMDBkODNmYjc0YjA5YzlkYWRhMzgzZWU3MGQ3Li5k
MGU3MGNjNmFhY2U4MzZlMjg2Yzk2ZjNlMDgxMzExZjE4YTI3ZmUzIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAt
MzA0Myw3ICszMDQzLDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgog
CiAgICAgICAgIHNlbGYucGVyZm9ybV9mdW5jdGlvbl9kZWZpbml0aW9uX2NoZWNrKAogICAgICAg
ICAgICAgJ1NvdXJjZS9XVEYvd3RmL2Zvby5oJywKLSAgICAgICAgICAgICcgICAgc3RhdGljIE9w
dGlvbmFsPHN0ZDo6dHVwbGU8Pj4gZGVjb2RlKERlY29kZXImKVxuJworICAgICAgICAgICAgJyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPD4+IGRlY29kZShEZWNvZGVyJilcbicK
ICAgICAgICAgICAgICcgICAgeycsCiAgICAgICAgICAgICB3YXJuaW5nX25vbmUpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3MuY3BwIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKaW5kZXggNTYzZDA5MDI4
NjQzMTY3MDdmYzE2ZDU1NjFmNjY1YTQ4YWIzMDVjOC4uNjM1NDEzNGE4OTk2NWY2ZjJiZGNkMjAw
ZjM4YTYxZGFiNmJkODQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5k
aW5ncy9KU0Jhc2ljcy5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9K
U0Jhc2ljcy5jcHAKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotT3B0
aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAgIHJldHVybiBKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpID8g
c3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgdmFsdWUpKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiB0b09wdGlvbmFsRG91YmxlKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxkb3VibGU+
IHRvT3B0aW9uYWxEb3VibGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkgfHwgSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0
aW9uYWwoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCBudWxscHRyKSk7CiB9CiAKLUpT
VmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBPcHRpb25hbDxib29sPiB2
YWx1ZSkKK0pTVmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBzdGQ6Om9w
dGlvbmFsPGJvb2w+IHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZSA/IEpTVmFsdWVNYWtlQm9v
bGVhbihjb250ZXh0LCB2YWx1ZS52YWx1ZSgpKSA6IEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3Mu
aCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3MuaAppbmRleCA4ZDEx
YmM0OGM4MmQ3NzRhNGMwY2FhODU2MjYwZDA4OWUyMTU5MTkxLi45MDJiZjc1OWY1MDE2MTMxNGY4
NDQ5NjlkZGNkZjgyODhjMmY3YmJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L0JpbmRpbmdzL0pTQmFzaWNzLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5n
cy9KU0Jhc2ljcy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLU9w
dGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7Ci1P
cHRpb25hbDxkb3VibGU+IHRvT3B0aW9uYWxEb3VibGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KTsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woSlNDb250ZXh0UmVmLCBKU1Zh
bHVlUmVmKTsKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b09wdGlvbmFsRG91YmxlKEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVKU1N0
cmluZyhjb25zdCBjaGFyKiA9ICIiKTsKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjcmVhdGVK
U1N0cmluZyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBKU1ZhbHVlUmVmIG1ha2VWYWx1
ZShKU0NvbnRleHRSZWYsIGNvbnN0IGNoYXIqKTsKLUpTVmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29u
dGV4dFJlZiwgT3B0aW9uYWw8Ym9vbD4pOworSlNWYWx1ZVJlZiBtYWtlVmFsdWUoSlNDb250ZXh0
UmVmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIEpTVmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4
dFJlZiwgSlNTdHJpbmdSZWYpOwogCiBKU1ZhbHVlUmVmIHByb3BlcnR5KEpTQ29udGV4dFJlZiwg
SlNPYmplY3RSZWYsIGNvbnN0IGNoYXIqIG5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCA4NDFlNTMwZTU1Zjk5NzMwNjg1MTFjOTRlOWFiZDFkMWY3ODcxYjE0Li4xYjU5NWUxN2M5ZGY4
ZTU2MjMzZmVmOTViNzdkMzAwNjU1YmUzODgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAt
OTgsOCArOTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1FZmZlY3Rp
dmVXaWR0aChkb3VibGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBbGxvd3NWaWV3cG9ydFNocmlua1RvRml0KGJvb2wpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3Qg
eyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBzdGFibGVTdGF0ZU92ZXJy
aWRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29s
PikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKICAgICB2aXJ0dWFsIEpTT2JqZWN0UmVmIGNvbnRl
bnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAppbmRleCA2NmQ3ZWFlMzkyZjA1OTEw
YjcwOTRhYzk0NjNmYWIwYThlOTIyZDMzLi45YzdmODU2YmVhYzhjNWQwODMzZDFjMDA2ZDQ4M2U4
ZWFhOTVkNmMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcg
QEAgVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYmIGNvbm5lY3Rp
b25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGkKIH0KIAogI2lmIEhBVkUoU1NMKQotdm9pZCBUQ1BT
ZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQgc29ja2V0LCBGdW5jdGlvbjx2b2lk
KFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVlc3RDbGllbnRDZXJ0
aWZpY2F0ZSwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24pCit2b2lkIFRDUFNlcnZl
cjo6c3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCBzb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NM
Kik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENsaWVudENlcnRpZmlj
YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uKQogewogICAgIFNTTF9s
aWJyYXJ5X2luaXQoKTsKIApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgVENQU2VydmVyOjpzdGFy
dFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0IHNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBz
ZWN1CiAgICAgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIoYWNjZXB0UmVzdWx0ID4gMCA/IHNzbC5n
ZXQoKSA6IG51bGxwdHIpOwogfTsKIAotVENQU2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJv
dG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIE9w
dGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uLCBzaXplX3QgY29ubmVjdGlvbnMpCitUQ1BT
ZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4m
JiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExT
VmVyc2lvbiwgc2l6ZV90IGNvbm5lY3Rpb25zKQogewogICAgIHN3aXRjaCAocHJvdG9jb2wpIHsK
ICAgICBjYXNlIFByb3RvY29sOjpIVFRQUzoKQEAgLTI1OSw3ICsyNTksNyBAQCBUQ1BTZXJ2ZXI6
On5UQ1BTZXJ2ZXIoKQogICAgICAgICBjb25uZWN0aW9uVGhyZWFkcy5qb2luKCk7CiB9CiAKLWF1
dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBjb25uZWN0aW9ucykgLT4gT3B0
aW9uYWw8U29ja2V0PgorYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNv
bm5lY3Rpb25zKSAtPiBzdGQ6Om9wdGlvbmFsPFNvY2tldD4KIHsKICAgICBTb2NrZXQgbGlzdGVu
aW5nU29ja2V0ID0gc29ja2V0KFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKICAgICBpZiAobGlz
dGVuaW5nU29ja2V0ID09IC0xKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BT
ZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgKaW5kZXggMzM2NGFjZDNl
MTg2NTYwMmFjZGMwNWFlY2JmMjVjYjY3Y2QxNzA0MS4uYjBhYWJiMTFhYzAzNGEyYzBjMDgzNzk1
OTIzNzNkY2Y5YmJjNWY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAgICAgICAg
IEhUVFBTLCBIVFRQU1Byb3h5LCBIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QKICAg
ICB9OwotICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0
aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6Om51bGxvcHQsIHNpemVfdCBjb25u
ZWN0aW9ucyA9IDEpOworICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wq
KT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiA9IHN0ZDo6bnVsbG9w
dCwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7CiAjZW5kaWYgLy8gSEFWRShTU0wpCiAgICAgflRD
UFNlcnZlcigpOwogICAgIApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgSEFW
RShTU0wpCiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhPSyhTU0wqKTsKLSAgICBzdGF0aWMg
dm9pZCBzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYm
IHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVlc3RDbGllbnRDZXJ0aWZpY2F0ZSA9
IGZhbHNlLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCwgRnVuY3Rpb248
dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgYm9vbCByZXF1ZXN0Q2xpZW50
Q2VydGlmaWNhdGUgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lv
biA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aENo
YWxsZW5nZVRoZW5PSyhTb2NrZXQpOwogCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0ZSgpOwogICAgIAogcHJpdmF0ZToK
LSAgICBPcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25z
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvY2tldD4gc29ja2V0QmluZExpc3RlbihzaXplX3QgY29u
bmVjdGlvbnMpOwogICAgIHZvaWQgbGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6ZV90IGNvbm5lY3Rp
b25zKTsKIAogICAgIFBvcnQgbV9wb3J0IHsgSW52YWxpZFBvcnQgfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAppbmRleCA3ODYz
MmVjZmZkOWI4MmFlYWNmNjRlNjY5OThmMjI3ZmNiYzdiNzlkLi4wMmU0MGUwNTE0MDMwMDg4NzM5
YjY3NWIwZTNlZDE1NjkxY2JiZTQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5UlZTdHJpbmdIYXZpbmdUd29SZWYpCiAKIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5TFZPcHRpb25hbFN0cmluZykKIHsKLSAgICBPcHRpb25h
bDxTdHJpbmc+IG9yaWdpbmFsIHsgIjEyMzQiIH07CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG9yaWdpbmFsIHsgIjEyMzQiIH07CiAgICAgYXV0byBjb3B5ID0gY3Jvc3NUaHJlYWRDb3B5KG9y
aWdpbmFsKTsKICAgICBFWFBFQ1RfVFJVRShvcmlnaW5hbC0+aW1wbCgpLT5oYXNPbmVSZWYoKSk7
CiAgICAgRVhQRUNUX1RSVUUoY29weS0+aW1wbCgpLT5oYXNPbmVSZWYoKSk7CkBAIC03MCw3ICs3
MCw3IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5TFZPcHRpb25hbFN0cmluZykK
IAogVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIE1vdmVSVk9wdGlvbmFsU3RyaW5nKQogewot
ICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWwgeyAiMTIzNCIgfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gb3JpZ2luYWwgeyAiMTIzNCIgfTsKICAgICBhdXRvIGNvcHkgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShvcmlnaW5hbCkpOwogICAgIEVYUEVDVF9UUlVFKGNvcHktPmltcGwo
KS0+aGFzT25lUmVmKCkpOwogICAgIEVYUEVDVF9OVUxMKG9yaWdpbmFsLT5pbXBsKCkpOwpAQCAt
NzksNyArNzksNyBAQCBURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgTW92ZVJWT3B0aW9uYWxT
dHJpbmcpCiBURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwgQ29weVJWT3B0aW9uYWxTdHJpbmdI
YXZpbmdUd29SZWYpCiB7CiAgICAgU3RyaW5nIHN0cmluZyB7ICIxMjM0IiB9OwotICAgIE9wdGlv
bmFsPFN0cmluZz4gb3JpZ2luYWwgeyBzdHJpbmcgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gb3JpZ2luYWwgeyBzdHJpbmcgfTsKICAgICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHko
b3JpZ2luYWwpOwogICAgIEVYUEVDVF9FUShvcmlnaW5hbC0+aW1wbCgpLT5yZWZDb3VudCgpLCAy
KTsKICAgICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWwtPmltcGwoKSA9PSBjb3B5LT5pbXBsKCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA5ZGZh
YmE3MDRlZmExYzQ3ODBmZDlkNDkxNjg1YjQ2NGZkYTFkZDUxLi44NTgzYjI5YWQ5OTBjMjJiNDcy
Yzg2OWVjY2Q4NjgyOTYyMWJiMGI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcApAQCAtNjI2LDcgKzYyNiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgaGFyZExpbmtDb3VudCkKICAgICBFWFBFQ1RfVFJVRSghbGlua0NvdW50KTsKIH0KIAotc3Rh
dGljIHZvaWQgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0KGNvbnN0IFN0cmluZyYgcGF0
aCwgRnVuY3Rpb248T3B0aW9uYWw8V2FsbFRpbWU+KGNvbnN0IFN0cmluZyYpPiYmIGZpbGVNb2Rp
ZmljYXRpb25UaW1lKQorc3RhdGljIHZvaWQgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVUZXN0
KGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxXYWxsVGltZT4oY29u
c3QgU3RyaW5nJik+JiYgZmlsZU1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgYXV0byBtb2RpZmlj
YXRpb25UaW1lID0gZmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7CiAgICAgRVhQRUNUX1RSVUUo
ISFtb2RpZmljYXRpb25UaW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Z1bmN0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0
aW9uLmNwcAppbmRleCAwZDU5ZDNlYmI0MDMyZTgwYjk4NDc1Y2ZiNTE3YTEwYjllNmRlYTRjLi43
OTM1N2M1M2I4OTIxZGZiYjhmZGQ1MmQ4YmYyMGYyZmZlMTRlNDBkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBzdHJ1
Y3QgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXIgewogICAgIH0KIAogICAgIEZ1bmN0aW9uPHVu
c2lnbmVkKCk+JiBmdW5jdGlvbjsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZnVuY3Rpb25B
c0Jvb2w7Ci0gICAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmdW5jdGlvblJlc3VsdDsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBmdW5jdGlvbkFzQm9vbDsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnVuY3Rpb25SZXN1bHQ7CiB9OwogCi1PcHRpb25hbDxi
b29sPiBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25Bc0Jvb2w7Ci1PcHRpb25h
bDx1bnNpZ25lZD4gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0Owor
c3RkOjpvcHRpb25hbDxib29sPiBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25B
c0Jvb2w7CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tl
cjo6ZnVuY3Rpb25SZXN1bHQ7CiAKIFRFU1QoV1RGX0Z1bmN0aW9uLCBBc3NpZ25CZWZvcmVEZXN0
cm95KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKaW5kZXggMGU3
NzAzZTZmMzBkZDAyNWM3NTBmNTM1OGM4MmUyNTQxYzg4NjYxZC4uZTA3YTdiM2I2NGJlYmZjM2Vk
OTE0YjRlOTdlZDA4NWU5NDc5NTMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChXVEYsIEhhc2hlcl9tdWx0aXBsZSkK
ICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjphcnJheTxpbnQs
IDE+IHsgeyAwIH0gfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNoLCBjb21wdXRlSGFz
aChWZWN0b3I8aW50PiB7IDAgfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNoLCBjb21w
dXRlSGFzaChWZWN0b3I8aW50LCAxPiB7IDAgfSkpOwotICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRI
YXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgc3RkOjpudWxsb3B0IH0pKTsKKyAgICBF
WFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjpvcHRpb25hbDxpbnQ+IHsg
c3RkOjpudWxsb3B0IH0pKTsKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhh
c2goc3RkOjptYWtlX3R1cGxlKDApKSk7CiAKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBj
b21wdXRlSGFzaCgxLCAwKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVChXVEYsIEhhc2hlcl9t
dWx0aXBsZSkKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaChzdGQ6Om1h
a2VfcGFpcigxLCAwKSkpOwogICAgIEVYUEVDVF9FUShvbmU2NEJpdEhhc2gsIGNvbXB1dGVIYXNo
KHN0ZDo6YXJyYXk8aW50LCAyPiB7IHsgMSwgMCB9IH0pKTsKICAgICBFWFBFQ1RfRVEob25lNjRC
aXRIYXNoLCBjb21wdXRlSGFzaCh7IDEsIDAgfSkpOwotICAgIEVYUEVDVF9FUShvbmU2NEJpdEhh
c2gsIGNvbXB1dGVIYXNoKE9wdGlvbmFsPGludD4geyAwIH0pKTsKKyAgICBFWFBFQ1RfRVEob25l
NjRCaXRIYXNoLCBjb21wdXRlSGFzaChzdGQ6Om9wdGlvbmFsPGludD4geyAwIH0pKTsKICAgICBF
WFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50PiB7IHsgMSwgMCB9
IH0pKTsKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50
LCAxPiB7IHsgMSwgMCB9IH0pKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTWFya2FibGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWFy
a2FibGUuY3BwCmluZGV4IDViN2UxNTMxN2NiZmU5YjYzZGUzOGY0YWQwNzlkZGU4NzVjNGI4Mjgu
LjFmNmQwOTU1M2ZlNDM1MDY0OGY1YTFjYTJiZGNhZTRhMTY4NTc3ODIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKQEAgLTEyMSw0MCArMTIxLDQwIEBAIFRF
U1QoV1RGX01hcmthYmxlLCBEZXN0cnVjdG9yKQogVEVTVChXVEZfTWFya2FibGUsIEZyb21PcHRp
b25hbCkKIHsKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gZnJvbTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IGZyb207CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxi
b29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0
czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGlj
X2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CiAgICAgewotICAgICAgICBPcHRpb25hbDxp
bnQ+IGZyb20geyA0MiB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQyIH07
CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKICAgICAgICAg
TWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCA9
IGZyb207CiAgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgogICAgICAgICBF
WFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBPcHRpb25hbDxpbnQ+IGZyb20geyA0MyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gZnJvbSB7IDQzIH07CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+
KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGlu
dCwgNDI+PiBvcHRpb25hbCA9IGZyb207CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgICAgIEVYUEVDVF9FUShvcHRpb25hbC52YWx1ZSgpLCA0
Myk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBmcm9tOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJh
aXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8aW50PiBmcm9tIHsgNDIgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+
IGZyb20geyA0MiB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9t
KSk7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQy
Pj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CiAgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhp
cyB0byBudWxsb3B0LgogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
aW9uYWwpKTsKICAgICB9CiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGZyb20geyA0MyB9
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQzIH07CiAgICAgICAgIEVYUEVD
VF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50LCBJ
bnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkg
fTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKQEAg
LTE2Nyw0MCArMTY3LDQwIEBAIFRFU1QoV1RGX01hcmthYmxlLCBUb09wdGlvbmFsKQogICAgIHsK
ICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBv
cHRpb25hbDsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFs
KSk7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNf
Y2FzdDxib29sPih0bykpOwogICAgIH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50
ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MiB9OwogICAgICAgICBF
WFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICAgICAgLy8gV2Ug
Y29udmVydCB0aGlzIHRvIG51bGxvcHQuCi0gICAgICAgIE9wdGlvbmFsPGludD4gdG8gPSBvcHRp
b25hbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CiAgICAgICAg
IEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgIH0KICAgICB7CiAgICAg
ICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9u
YWwgeyA0MyB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25h
bCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxib29sPih0bykpOwogICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUoKSwgNDMpOwogICAg
IH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxp
bnQsIDQyPj4gb3B0aW9uYWw7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29s
PihvcHRpb25hbCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25h
bCkgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25hbCkg
fTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwg
NDI+PiBvcHRpb25hbCB7IDQyIH07CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxi
b29sPihvcHRpb25hbCkpOwogICAgICAgICAvLyBXZSBjb252ZXJ0IHRoaXMgdG8gbnVsbG9wdC4K
LSAgICAgICAgT3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07CiAgICAgICAgIEVY
UEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgIH0KICAgICB7CiAgICAgICAg
IE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwg
eyA0MyB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkp
OwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25hbCkgfTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25hbCkgfTsKICAgICAgICAg
RVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKICAgICAgICAgRVhQRUNUX0VRKHRv
LnZhbHVlKCksIDQzKTsKICAgICB9CkBAIC0yNDcsMTMgKzI0NywxMyBAQCBURVNUKFdURl9NYXJr
YWJsZSwgTW92ZU9wdGlvbmFsKQogICAgICAgICBpbnQgbV92YWx1ZTsKICAgICB9OwogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8T25seU1vdmFibGU+IGZyb20geyBzdGQ6OmluX3BsYWNlLCAyMCB9
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE9ubHlNb3ZhYmxlPiBmcm9tIHsgc3RkOjppbl9wbGFj
ZSwgMjAgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOwog
ICAgICAgICBFWFBFQ1RfRVEoZnJvbS52YWx1ZSgpLnZhbHVlKCksIDIwKTsKICAgICAgICAgTWFy
a2FibGU8T25seU1vdmFibGUsIE9ubHlNb3ZhYmxlPiBjb21wYWN0ID0gV1RGTW92ZShmcm9tKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oY29tcGFjdCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoY29tcGFjdC52YWx1ZSgpLnZhbHVlKCksIDIwKTsKLSAgICAgICAgT3B0aW9u
YWw8T25seU1vdmFibGU+IHRvID0gV1RGTW92ZShjb21wYWN0KTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxPbmx5TW92YWJsZT4gdG8gPSBXVEZNb3ZlKGNvbXBhY3QpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUo
KS52YWx1ZSgpLCAyMCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rv
ci5jcHAKaW5kZXggZmRhYmE5NDcwMzk1ZWE4MDE5ODUwZThmYjhhZWEwOWFmZTM3YWY4Ny4uMTFm
Y2IxMWU5ZGMyMGIwZmVhNzczZTIwOGM2MWY5NjAyMDRlMjc4YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC05MTAsNyArOTEwLDcgQEAgVEVTVChXVEZfVmVj
dG9yLCBDb21wYWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5PcHRpb25hbCkKICAgICBWZWN0b3I8
aW50PiB2ZWN0b3IgeyAxLCAyLCAzLCA0IH07CiAKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBldmVuTXVsdGlwbGllZEJ5Rml2
ZSkpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxpbnQ+Pjo6dmFsdWUsCi0gICAgICAgICJXVEY6OmNv
bXBhY3RNYXAgcmV0dXJucyBWZWN0b3I8UmVmPD4+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiBy
ZXR1cm5zIE9wdGlvbmFsPD4iKTsKKyAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZl
Y3RvcjxSZWY8Pj4gd2hlbiB0aGUgbWFwcGVkIGZ1bmN0aW9uIHJldHVybnMgc3RkOjpvcHRpb25h
bDw+Iik7CiAgICAgYXV0byBtYXBwZWQgPSBXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBldmVuTXVs
dGlwbGllZEJ5Rml2ZSk7CiAKICAgICBFWFBFQ1RfRVEoMlUsIG1hcHBlZC5zaXplKCkpOwpAQCAt
OTUzLDcgKzk1Myw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0aW9u
UmV0dXJuUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0g
MDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RN
YXAodmVjdG9yLCBjcmVhdGVSZWZDb3VudGVkRm9yT2RkKSksIHR5cGVuYW1lIFdURjo6VmVjdG9y
PFJlZjxSZWZDb3VudGVkT2JqZWN0Pj4+Ojp2YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1h
cCByZXR1cm5zIFZlY3RvcjxpbnQ+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIE9w
dGlvbmFsPGludD4iKTsKKyAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3Rvcjxp
bnQ+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8aW50PiIp
OwogICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgY3JlYXRlUmVmQ291
bnRlZEZvck9kZCk7CiAKICAgICBFWFBFQ1RfRVEoMFUsIFJlZkNvdW50ZWRPYmplY3Q6OnNfdG90
YWxSZWZDb3VudCk7CkBAIC05NjIsNyArOTYyLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0
TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5SZWZQdHIpCiAgICAgRVhQRUNUX0VRKDMsIG1hcHBlZFsx
XS0+dmFsdWUpOwogfQogCi1PcHRpb25hbDxSZWY8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJl
ZkNvdW50ZWRGb3JFdmVuKGludCBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8UmVmPFJlZkNvdW50ZWRP
YmplY3Q+PiBjcmVhdGVSZWZDb3VudGVkRm9yRXZlbihpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlu
cHV0ICUgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk4NCw3ICs5ODQsNyBA
QCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBTdGF0aWNGdW5jdGlvblJldHVybk9wdGlvbmFs
UmVmKQogICAgIEVYUEVDVF9FUSg0LCBtYXBwZWRbMV0tPnZhbHVlKTsKIH0KIAotT3B0aW9uYWw8
UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVSZWZDb3VudGVkV2hlbkRpdmlzaWJsZUJ5
VGhyZWUoaW50IGlucHV0KQorc3RkOjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+
IGNyZWF0ZVJlZkNvdW50ZWRXaGVuRGl2aXNpYmxlQnlUaHJlZShpbnQgaW5wdXQpCiB7CiAgICAg
aWYgKGlucHV0ICUgMykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk5OSw3ICs5
OTksNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBTdGF0aWNGdW5jdGlvblJldHVybk9w
dGlvbmFsUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0g
MDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RN
YXAodmVjdG9yLCBjcmVhdGVSZWZDb3VudGVkV2hlbkRpdmlzaWJsZUJ5VGhyZWUpKSwgdHlwZW5h
bWUgV1RGOjpWZWN0b3I8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+Pj46OnZhbHVlLAotICAgICAg
ICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJlZlB0cjw+PiB3aGVuIHRoZSBtYXBw
ZWQgZnVuY3Rpb24gcmV0dXJucyBPcHRpb25hbDxSZWZQdHI8Pj4iKTsKKyAgICAgICAgIldURjo6
Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxSZWZQdHI8Pj4gd2hlbiB0aGUgbWFwcGVkIGZ1bmN0
aW9uIHJldHVybnMgc3RkOjpvcHRpb25hbDxSZWZQdHI8Pj4iKTsKICAgICBhdXRvIG1hcHBlZCA9
IFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGNyZWF0ZVJlZkNvdW50ZWRXaGVuRGl2aXNpYmxlQnlU
aHJlZSk7CiAKICAgICBFWFBFQ1RfRVEoMFUsIFJlZkNvdW50ZWRPYmplY3Q6OnNfdG90YWxSZWZD
b3VudCk7CkBAIC0xMDEzLDEzICsxMDEzLDEzIEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1h
cExhbWJkYVJldHVybk9wdGlvbmFsKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHZlY3RvciB7ICJh
IiwgImIiLCAiaGVsbG8iLCAiY2lhbyIsICJ3b3JsZCIsICJ3ZWJraXQiIH07CiAKLSAgICBhdXRv
IGZ1bmN0aW9uID0gW10oY29uc3QgU3RyaW5nJiB2YWx1ZSkgLT4gT3B0aW9uYWw8U3RyaW5nPiB7
CisgICAgYXV0byBmdW5jdGlvbiA9IFtdKGNvbnN0IFN0cmluZyYgdmFsdWUpIC0+IHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB7CiAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8IDUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gdmFsdWUuY29udmVydFRv
QVNDSUlVcHBlcmNhc2UoKTsKICAgICB9OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1bmN0aW9uKSksIHR5cGVuYW1lIFdU
Rjo6VmVjdG9yPFN0cmluZz4+Ojp2YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1
cm5zIFZlY3RvcjxTdHJpbmc+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIE9wdGlv
bmFsPFN0cmluZz4iKTsKKyAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxT
dHJpbmc+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiIpOwogICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rp
b24pOwogCiAgICAgRVhQRUNUX0VRKDNVLCBtYXBwZWQuc2l6ZSgpKTsKQEAgLTEwNjAsMTQgKzEw
NjAsMTQgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhQ29weVZlY3RvclJldHVy
bk9wdGlvbmFsQ291bnRlZE9iamVjdCkKIAogICAgIENvdW50ZWRPYmplY3Q6OmNvdW50KCkgPSAw
OwogCi0gICAgYXV0byBmdW5jdGlvbiA9IFtdKGNvbnN0IENvdW50ZWRPYmplY3QmIG9iamVjdCkg
LT4gT3B0aW9uYWw8Q291bnRlZE9iamVjdD4geworICAgIGF1dG8gZnVuY3Rpb24gPSBbXShjb25z
dCBDb3VudGVkT2JqZWN0JiBvYmplY3QpIC0+IHN0ZDo6b3B0aW9uYWw8Q291bnRlZE9iamVjdD4g
ewogICAgICAgICBpZiAob2JqZWN0LnZhbHVlKCkgJSAyKQogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVu
Y3Rpb24pKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8Q291bnRlZE9iamVjdD4+Ojp2YWx1ZSwKLSAg
ICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxDb3VudGVkT2JqZWN0PiB3aGVu
IHRoZSBsYW1iZGEgcmV0dXJucyBPcHRpb25hbDxDb3VudGVkT2JqZWN0PiIpOworICAgICAgICAi
V1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPENvdW50ZWRPYmplY3Q+IHdoZW4gdGhlIGxh
bWJkYSByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8Q291bnRlZE9iamVjdD4iKTsKICAgICBhdXRvIG1h
cHBlZCA9IFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1bmN0aW9uKTsKIAogICAgIEVYUEVDVF9F
USgyVSwgQ291bnRlZE9iamVjdDo6Y291bnQoKSk7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCBURVNU
KFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJuT3B0aW9uYWxDb3Vu
dGVkT2JqZWN0KQogCiAgICAgQ291bnRlZE9iamVjdDo6Y291bnQoKSA9IDA7CiAKLSAgICBhdXRv
IGZ1bmN0aW9uID0gW10oQ291bnRlZE9iamVjdCYmIG9iamVjdCkgLT4gT3B0aW9uYWw8Q291bnRl
ZE9iamVjdD4geworICAgIGF1dG8gZnVuY3Rpb24gPSBbXShDb3VudGVkT2JqZWN0JiYgb2JqZWN0
KSAtPiBzdGQ6Om9wdGlvbmFsPENvdW50ZWRPYmplY3Q+IHsKICAgICAgICAgaWYgKG9iamVjdC52
YWx1ZSgpICUgMikKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBURVNUKFdURl9WZWN0
b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0
KQogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAoV1RGTW92ZSh2
ZWN0b3IpLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxDb3VudGVkT2JqZWN0Pj46
OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPENvdW50ZWRP
YmplY3Q+IHdoZW4gdGhlIGxhbWJkYSByZXR1cm5zIE9wdGlvbmFsPENvdW50ZWRPYmplY3Q+Iik7
CisgICAgICAgICJXVEY6OmNvbXBhY3RNYXAgcmV0dXJucyBWZWN0b3I8Q291bnRlZE9iamVjdD4g
d2hlbiB0aGUgbGFtYmRhIHJldHVybnMgc3RkOjpvcHRpb25hbDxDb3VudGVkT2JqZWN0PiIpOwog
ICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKFdURk1vdmUodmVjdG9yKSwgZnVuY3Rp
b24pOwogCiAgICAgRVhQRUNUX0VRKDBVLCBDb3VudGVkT2JqZWN0Ojpjb3VudCgpKTsKQEAgLTEx
NTUsNyArMTE1NSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9w
dGlvbmFsUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0g
MDsKIAotICAgIGF1dG8gZnVuY3Rpb24gPSBbJl0oaW50IHZhbHVlKSAtPiBPcHRpb25hbDxSZWZQ
dHI8UmVmQ291bnRlZE9iamVjdD4+IHsKKyAgICBhdXRvIGZ1bmN0aW9uID0gWyZdKGludCB2YWx1
ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IHsKICAgICAgICAg
aWYgKCEodmFsdWUgJSAyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmICghKHZhbHVlICUgMykpCkBAIC0xMTY0LDcgKzExNjQsNyBAQCBURVNUKFdURl9WZWN0
b3IsIENvbXBhY3RNYXBMYW1iZGFSZXR1cm5PcHRpb25hbFJlZlB0cikKICAgICB9OwogCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3Rv
ciwgZnVuY3Rpb24pKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8UmVmUHRyPFJlZkNvdW50ZWRPYmpl
Y3Q+Pj46OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJl
ZlB0cjxSZWZDb3VudGVkT2JqZWN0Pj4gd2hlbiB0aGUgbGFtYmRhIHJldHVybnMgT3B0aW9uYWw8
UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiIpOworICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJl
dHVybnMgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0Pj4gd2hlbiB0aGUgbGFtYmRhIHJl
dHVybnMgc3RkOjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+Iik7CiAgICAgVmVj
dG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0Pj4gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKHZl
Y3RvciwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VRKDBVLCBSZWZDb3VudGVkT2JqZWN0Ojpz
X3RvdGFsUmVmQ291bnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvY2YvUmV0YWluUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1Jl
dGFpblB0ci5jcHAKaW5kZXggNzUwNTllOWUwNzJiNWZiZDcyNzAwYmYyOGM2NDBjZGExOWVhNWI2
YS4uNjE4MGQyMTk2NjU0MmMwNGY1OGI3N2RlYzc0MzUyNDU0ZTNhNmM0MyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9jZi9SZXRhaW5QdHIuY3BwCkBAIC0xMzIsMTMgKzEz
MiwxMyBAQCBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxSZXRhaW5QdHJDRikKIHsKICAgICAvLyBU
ZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdENGKCkuCiAgICAgZmxvYXQgdmFsdWUgPSAzLjE0MTU5
MjY1MzU7Ci0gICAgT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmpl
Y3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGTnVt
YmVyUmVmPj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOwogICAgIEVYUEVDVF9F
USgxLCBDRkdldFJldGFpbkNvdW50KG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKSk7CiAg
ICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBvYmplY3QxID0gb3B0aW9uYWxPYmplY3QxLnZhbHVl
KCk7CiAgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QxKTsKIAog
ICAgIC8vIFRlc3QgYXNzaWdubWVudCBmcm9tIHJldGFpblB0cigpLgotICAgIE9wdGlvbmFsPFJl
dGFpblB0cjxDRk51bWJlclJlZj4+IG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkp
OworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmpl
Y3QyID0gcmV0YWluUHRyKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CiAgICAgQ0ZSZWxlYXNlKG9wdGlvbmFsT2JqZWN0Mi52
YWx1ZSgpLmdldCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvcHRpb25h
bE9iamVjdDIudmFsdWUoKS5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gb2Jq
ZWN0MiA9IG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1Qo
UmV0YWluUHRyLCBPcHRpb25hbFJldGFpblB0ckNGKQogCiAgICAgRVhQRUNUX05FKG9iamVjdDEs
IG9iamVjdDIpOwogCi0gICAgLy8gVGVzdCBhc3NpZ25tZW50IGZyb20gT3B0aW9uYWw8UmV0YWlu
UHRyPENGTnVtYmVyUmVmPj4uCisgICAgLy8gVGVzdCBhc3NpZ25tZW50IGZyb20gc3RkOjpvcHRp
b25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4KICAgICBvcHRpb25hbE9iamVjdDEgPSBvcHRp
b25hbE9iamVjdDI7CiAgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkpOwog
ICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxSZXRhaW5QdHJDRikKICAgICBFWFBF
Q1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDEpOwogICAgIEVYUEVDVF9FUShv
cHRpb25hbE9iamVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CiAKLSAgICAvLyBUZXN0IG1vdmUgZnJv
bSBPcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4KKyAgICAvLyBUZXN0IG1vdmUgZnJv
bSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+LgogICAgIEVYUEVDVF9FUSgy
LCBDRkdldFJldGFpbkNvdW50KG9iamVjdDIuZ2V0KCkpKTsKICAgICBvcHRpb25hbE9iamVjdDEg
PSBXVEZNb3ZlKG9wdGlvbmFsT2JqZWN0Mik7CiAgICAgRVhQRUNUX0VRKDIsIENGR2V0UmV0YWlu
Q291bnQob2JqZWN0Mi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
bnMvUmV0YWluUHRyLm1tCmluZGV4IDcyNWQyOWNmYmU5NmMyZTBmMDYzZjZiMjgzODIyMWIzYzNl
MDkwMGYuLjE2ZWFiMTQ3ZGMwM2JhNDE5MmJlZGQ2NWU5NDE5MGM3MzgxNjU4MDQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL25zL1JldGFpblB0ci5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIubW0KQEAgLTIxNSwxMyAr
MjE1LDEzIEBAIFRFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdubWVudEZyb21TaW1pbGFyTlNUeXBl
UmV2ZXJzZWQpCiBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxSZXRhaW5QdHJOUykKIHsKICAgICAv
LyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdE5TKCkuCi0gICAgT3B0aW9uYWw8UmV0YWluUHRy
PE5TT2JqZWN0Pj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHROUyhbTlNPYmplY3QgbmV3XSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDEgPSBh
ZG9wdE5TKFtOU09iamVjdCBuZXddKTsKICAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3Vu
dChvcHRpb25hbE9iamVjdDEudmFsdWUoKS5nZXQoKSkpOwogICAgIFJldGFpblB0cjxOU09iamVj
dD4gb2JqZWN0MSA9IG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpOwogICAgIEVYUEVDVF9FUShvcHRp
b25hbE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7CiAKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQg
ZnJvbSByZXRhaW5QdHIoKS4KLSAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRp
b25hbE9iamVjdDI7CisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRp
b25hbE9iamVjdDI7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIG9wdGlvbmFsT2Jq
ZWN0MiA9IHJldGFpblB0cihbW05TT2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdKTsKICAgICB9CkBA
IC0yMzEsNyArMjMxLDcgQEAgVEVTVChSZXRhaW5QdHIsIE9wdGlvbmFsUmV0YWluUHRyTlMpCiAK
ICAgICBFWFBFQ1RfTkUob2JqZWN0MSwgb2JqZWN0Mik7CiAKLSAgICAvLyBUZXN0IGFzc2lnbm1l
bnQgZnJvbSBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+Pi4KKyAgICAvLyBUZXN0IGFzc2ln
bm1lbnQgZnJvbSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxOU09iamVjdD4+LgogICAgIG9wdGlv
bmFsT2JqZWN0MSA9IG9wdGlvbmFsT2JqZWN0MjsKICAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9i
amVjdDEudmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCku
Z2V0KCkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIFRFU1QoUmV0YWluUHRyLCBPcHRpb25hbFJldGFp
blB0ck5TKQogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7
CiAgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpLCBvYmplY3QyKTsKIAotICAg
IC8vIFRlc3QgbW92ZSBmcm9tIE9wdGlvbmFsPFJldGFpblB0cjxOU09iamVjdD4+LgorICAgIC8v
IFRlc3QgbW92ZSBmcm9tIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPE5TT2JqZWN0Pj4uCiAgICAg
RVhQRUNUX0VRKDIsIENGR2V0UmV0YWluQ291bnQob2JqZWN0Mi5nZXQoKSkpOwogICAgIG9wdGlv
bmFsT2JqZWN0MSA9IFdURk1vdmUob3B0aW9uYWxPYmplY3QyKTsKICAgICBFWFBFQ1RfRVEoMiwg
Q0ZHZXRSZXRhaW5Db3VudChvYmplY3QyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDk3
NmQ2ODMyNjhmYTQyNWU1NzY3OTkwYTE1NTU2ZTllYzJiMWNhMTUuLjhlYWJjODIyOGZkMWI4ZGM5
YTRiNGQwMzdiMTVhNDA0ZGJlYTA3NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIFN5bmNUYXNrcykKIAogICAgIGF1dG8gYmFj
a2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNN
YWluVGhyZWFkKCkpOwotICAgICAgICBPcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9
IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oWyZdKCkgLT4gRmFu
Y3lSZXNwb25zZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9u
c2UgPSB0YXNrUXVldWUuZW5xdWV1ZVRhc2tBbmRXYWl0PEZhbmN5UmVzcG9uc2U+KFsmXSgpIC0+
IEZhbmN5UmVzcG9uc2UgewogICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKICAgICAgICAgICAgIEVYUEVDVF9FUSgxLCBj
dXJyZW50U3RlcCk7CkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUs
IEFib3J0KQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOwogICAgICAgICB9KTsKICAg
ICAgICAgLy8gVGhpcyBjYWxsIG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgYXJl
IGFib3J0aW5nLgotICAgICAgICBPcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRh
c2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5jeVJl
c3BvbnNlIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9
IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oW10oKSAtPiBGYW5j
eVJlc3BvbnNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgdGFzayBzaG91bGQgbm90IGhhdmUgYmVl
biBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBvZiB0aGlzIHRlc3QuCiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gRmFuY3lSZXNwb25z
ZSgxMDApOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIFRFU1QoQWJvcnRhYmxlVGFza1F1ZXVlLCBBYm9y
dEJlZm9yZVN5bmNUYXNrUnVuKQogICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0g
WyZdKCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAg
IE9wdGlvbmFsPEZhbmN5UmVzcG9uc2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVUYXNr
QW5kV2FpdDxGYW5jeVJlc3BvbnNlPihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgeworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEZhbmN5UmVzcG9uc2U+IHJlc3BvbnNlID0gdGFza1F1ZXVlLmVucXVldWVU
YXNrQW5kV2FpdDxGYW5jeVJlc3BvbnNlPihbXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAgICAg
ICAgICAgLy8gVGhpcyB0YXNrIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gcnVuIHVuZGVy
IHRoZSBzY2hlZHVsaW5nIG9mIHRoaXMgdGVzdC4KICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZh
bHNlKTsKICAgICAgICAgICAgIHJldHVybiBGYW5jeVJlc3BvbnNlKDEwMCk7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIEFib3J0ZWRCeVN5bmNUYXNrSGFuZGxl
cikKICAgICAgICAgY3VycmVudFN0ZXArKzsKICAgICAgICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRT
dGVwKTsKIAotICAgICAgICBPcHRpb25hbDxGYW5jeVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tR
dWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNwb25zZT4oWyZdKCkgLT4gRmFuY3lSZXNw
b25zZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0
YXNrUXVldWUuZW5xdWV1ZVRhc2tBbmRXYWl0PEZhbmN5UmVzcG9uc2U+KFsmXSgpIC0+IEZhbmN5
UmVzcG9uc2UgewogICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKICAgICAgICAgICAgIEVYUEVD
VF9FUSgyLCBjdXJyZW50U3RlcCk7CiAgICAgICAgICAgICB0YXNrUXVldWUuc3RhcnRBYm9ydGlu
ZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0FuaW1h
dGlvbkZyYW1lUmF0ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5p
bWF0aW9uRnJhbWVSYXRlLmNwcAppbmRleCA4MDlhOTBhYThhZjk1MjM1ZGVlNGU5Y2RmZjNkY2My
MmJhYjliZGQ4Li40MjYyZGU3MjY0NTNhNTM4M2M5MzNmNWQzYTU5YzkyNTEzMGYzYzA5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVS
YXRlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9u
RnJhbWVSYXRlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwg
ZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCkKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRl
LCBwcmVmZXJyZWRGcmFtZUludGVydmFsV2l0aFVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNl
Y29uZCkKIHsKICAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOwot
ICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVy
U2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1bnNwZWNpZmllZE5v
bWluYWxGcmFtZXNQZXJTZWNvbmQ7CiAgICAgCiAgICAgYm9vbCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmROZWFyNjBGUFMgPSBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFt
ZVJhdGVTZXR0aW5nOwogICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhy
b3R0bGluZywgdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAKaW5kZXggYmM3YTg0OWFkNzRlNGE2NDM1ODgxOTQ3OGZlNDM4MzU3MWU4NzUyYS4uMGZk
ZWRmZTc2YjQ3YTU3NmMyZWI4MTc3Yzg4MWJhY2UxMTAxZGM2YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBmaW5h
bAorICAgICAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlw
ZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCmlu
ZGV4IDY0ZmUwMTc0MWEzODJiMTc1ZjgyODIzMjMyOWMzZmFlZmI0Njg5OGIuLjJlNmExNWQ0OWRl
NGI2MWU3MDdmZjU3ODZkZmQzMGFjOTNkMDJhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCkBAIC0xMTQs
NyArMTE0LDcgQEAgVEVTVChXZWJDb3JlLCBQYXJzZWRSZXF1ZXN0UmFuZ2UpCiAgICAgZm9yIChj
b25zdCBhdXRvJiBpbnB1dCA6IGZhaWx1cmVDYXNlcykKICAgICAgICAgRVhQRUNUX0VRKHN0ZDo6
bnVsbG9wdCwgUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCkpOwogCi0gICAgYXV0byBj
b21wYXJlID0gW10gKGNvbnN0IFN0cmluZyYgaW5wdXQsIE9wdGlvbmFsPHNpemVfdD4gYmVnaW4s
IE9wdGlvbmFsPHNpemVfdD4gZW5kKSB7CisgICAgYXV0byBjb21wYXJlID0gW10gKGNvbnN0IFN0
cmluZyYgaW5wdXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBiZWdpbiwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGVuZCkgewogICAgICAgICBhdXRvIHJhbmdlID0gUGFyc2VkUmVxdWVzdFJhbmdlOjpw
YXJzZShpbnB1dCk7CiAgICAgICAgIEVYUEVDVF9ORShzdGQ6Om51bGxvcHQsIHJhbmdlKTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFy
c2VkQ29udGVudFR5cGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Bh
cnNlZENvbnRlbnRUeXBlLmNwcAppbmRleCAzYzMxYTNhODAyZjMzZjMyMjAzZTQ1ZWY5Y2E4ZTRm
MGYxNmViZGVkLi40MTM1YjIyYTlmMzcxZWQ0OWU0OWNmNzFmNzY3YzM2YmY2YjIwNmE3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFR5
cGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250
ZW50VHlwZS5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZXNjYXBl
Tm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiBzdGF0aWMg
Y29uc3QgY2hhciogc2VyaWFsaXplSWZWYWxpZChjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAg
IGlmIChPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJz
ZWRDb250ZW50VHlwZTo6Y3JlYXRlKGlucHV0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxQYXJz
ZWRDb250ZW50VHlwZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3Jl
YXRlKGlucHV0KSkKICAgICAgICAgcmV0dXJuIGVzY2FwZU5vbkFTQ0lJUHJpbnRhYmxlQ2hhcmFj
dGVycyhwYXJzZWRDb250ZW50VHlwZS0+c2VyaWFsaXplKCkpOwogICAgIHJldHVybiAiTk9UVkFM
SUQiOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Nh
bXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFw
LmNwcAppbmRleCA0ODE4ZjNmODEzZjMyZTFiNWNlY2NjZjA4MDk3ODk4ZmY4YWU4ODcyLi5kMTQ2
Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwg
eyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQotICAgIE9wdGlv
bmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3QgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDE2YmYyODkyYWRkN2FhMzFkOTlhYzJi
YmRhZTgyMDI1NTYyOGFiMzIuLmUyMmQyYWY2MDczNWYzMzI0MDQ2ZjUzOGQwZjE2YzM1OWViMDM2
NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmNwcApAQCAtNzcsOCArNzcsOCBAQCBwcml2YXRlOgogCiBURVNUX0YoU2VjdXJp
dHlPcmlnaW5UZXN0LCBTZWN1cml0eU9yaWdpbkNvbnN0cnVjdG9ycykKIHsKLSAgICBhdXRvIG8x
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIE9wdGlvbmFs
PHVpbnQxNl90Pig4MCkpOwotICAgIGF1dG8gbzIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJo
dHRwIiwgImV4YW1wbGUuY29tIiwgT3B0aW9uYWw8dWludDE2X3Q+KCkpOworICAgIGF1dG8gbzEg
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImV4YW1wbGUuY29tIiwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4oODApKTsKKyAgICBhdXRvIG8yID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+KCkpOwogICAg
IGF1dG8gbzMgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZygiaHR0cDovL2V4YW1w
bGUuY29tIik7CiAgICAgYXV0byBvNCA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KCJodHRwOi8vZXhhbXBsZS5jb206ODAiKTsKICAgICBhdXRvIG81ID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShVUkwoVVJMKCksICJodHRwOi8vZXhhbXBsZS5jb20iKSk7CkBAIC0xMjIsNyArMTIy
LDcgQEAgVEVTVF9GKFNlY3VyaXR5T3JpZ2luVGVzdCwgU2VjdXJpdHlPcmlnaW5Db25zdHJ1Y3Rv
cnMpCiAgICAgRVhQRUNUX0ZBTFNFKG80LT5wb3J0KCkpOwogICAgIEVYUEVDVF9GQUxTRShvNS0+
cG9ydCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobzYtPnBvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKG83
LT5wb3J0KCksIE9wdGlvbmFsPHVpbnQxNl90Pig4MSkpOworICAgIEVYUEVDVF9FUShvNy0+cG9y
dCgpLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pig4MSkpOwogICAgIEVYUEVDVF9GQUxTRShvOC0+
cG9ydCgpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBFWFBFQ1RfRkFMU0UobzktPnBvcnQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlz
cGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDBlMGU0MDQ3NjY4NWI2OTI3MzMwOWE1Nzg2
OGQ3ZTZhZmQyOTllZmEuLmY2NWUwZDAwNGU1NWNjOGYzOTI5OWRmOTE4ZDJhNmI4NDdmZDdiMzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5
TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBJdGVtQnVm
ZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZp
ZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBl
LCB1aW50OF90KikgZmluYWwKKyAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5
cGUsIHVpbnQ4X3QqKSBmaW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1U
eXBlOjpGaWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA0NGFi
ODRiZmI5N2NmOTgzZDU3OGQzMzhhMTgxNWFmMjQ4YjE2ZGQ0Li4wMmZiY2JkMWRhMGI3Y2FmODZk
N2FmNGZkNjJmNjFmM2Q1NjA3MGM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTE3MTAsNyArMTcxMCw3IEBAIFRFU1QoV0tE
b3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKIAogVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRl
clplcm9CeXRlc1JlY2VpdmVkKQogewotICAgIE9wdGlvbmFsPFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb24+IHNlcnZlckNvbm5lY3Rpb247CisgICAgc3RkOjpvcHRpb25hbDxUZXN0V2ViS2l0QVBJ
OjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOwogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtj
b25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlvbl0oVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rp
b25Db3VudCkgewogICAgICAgICBjYXNlIDE6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRl
eCA2MTExZjZiMzY3YWMzNjZhMzUyZGNmNjU2OWQzYjkyYjgwNGI1MTRlLi5iMjkzOGU3M2M2ZjZh
ZTY2NmY3YjBmZjM3OWM2MzhlYzgzZGRjMWExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
QEAgLTExMTEsOCArMTExMSw4IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNGcm9tTmV0
d29yaykKICAgICAgICAgY29ubmVjdGlvbi53ZWJTb2NrZXRIYW5kc2hha2UoKTsKICAgICB9KTsK
IAotICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRTdWNjZXNzOwotICAgIE9wdGlvbmFsPGJvb2w+IHdl
YlNvY2tldFN1Y2Nlc3M7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdlYlNvY2tldFN1Y2Nlc3M7CiAgICAgYm9vbCBkb25lID0g
ZmFsc2U7CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxl
ciBuZXddKTsKQEAgLTEyMDIsNyArMTIwMiw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxs
b3dlZE5ldHdvcmtIb3N0c1JlZGlyZWN0KQogICAgICAgICB9fX0sCiAgICAgfSk7CiAKLSAgICBP
cHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRT
dWNjZXNzOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRv
cHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDY2
NGQ5NTczYWJkZTkyMDcxM2ZkOWRmMGJlNTdlZTU2MDQzYjE5NjUuLjU4MjUwYjZmN2QyYzc0NTQ0
ZWIwMGI1M2QzNmNlNzI1MWJmYWVjMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC02NCw4ICs2NCw4
IEBAIHN0YXRpYyBib29sIGRvbmVDb21waWxpbmc7CiBzdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0
Owogc3RhdGljIGJvb2wgZmluaXNoZWROYXZpZ2F0aW9uOwogCi1zdGF0aWMgT3B0aW9uYWw8X1dL
QXV0b3BsYXlFdmVudD4gcmVjZWl2ZWRBdXRvcGxheUV2ZW50Owotc3RhdGljIE9wdGlvbmFsPF9X
S0F1dG9wbGF5RXZlbnRGbGFncz4gcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3M7CitzdGF0aWMg
c3RkOjpvcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50PiByZWNlaXZlZEF1dG9wbGF5RXZlbnQ7Citz
dGF0aWMgc3RkOjpvcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50RmxhZ3M+IHJlY2VpdmVkQXV0b3Bs
YXlFdmVudEZsYWdzOwogCiBzdGF0aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CiAKQEAgLTY1NSw3ICs2
NTUsNyBAQCBzdHJ1Y3QgUGFyc2VkUmFuZ2UgewogICAgICAgICBpZiAobWluIDw9IG1heCkKICAg
ICAgICAgICAgIHJhbmdlID0gc3RkOjptYWtlX3BhaXIobWluLCBtYXgpOwogICAgIH0KLSAgICBP
cHRpb25hbDxzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+PiByYW5nZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4+IHJhbmdlOwogfTsKIAogQGludGVyZmFjZSBU
ZXN0U2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWJlMGI4NzAyZGIxN2JlZmM5NDk1ZGZjODYyMjJm
NzNiYzkyMGQ1Ni4uZWE4ZDdmMDNkZDQzYzVkN2Y0ZTU5NjI2NzIyMGRiMGMzNTFlYjcxYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzMsMTAgKzMzLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgZG91YmxlIGxvbmdpdHVkZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkgfTsKICAgICAgICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
YWx0aXR1ZGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeTsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IHNwZWVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gaGVhZGluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNw
ZWVkOwogICAgIH07CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gc3RhcnRDYWxsYmFjayhXZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIsIEdlb2xvY2F0aW9uVGVzdCogdGVzdCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5kZXggYjkyODYyYTc2MDczNWU0YzUxOGZm
Yzk5Nzc3YmM1MTdkYzY3NjcwYy4uNWIwZGU4Y2M0NGIwOWRhYzVkZjQ0MGNkMjc2NzY3MWQwMTdl
NzAzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0cCwg
SHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUywgSHR0cDIgfTsKICAgICB1c2luZyBDZXJ0aWZpY2F0
ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3Ry
dXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+OwogCi0gICAgSFRUUFNlcnZl
cihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4s
IFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9IG51bGxw
dHIsIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4mJiA9IG51bGxwdHIsIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0ID0geyB9KTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxz
dGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0
cCwgQ2VydGlmaWNhdGVWZXJpZmllciYmID0gbnVsbHB0ciwgUmV0YWluUHRyPFNlY0lkZW50aXR5
UmVmPiYmID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHsgfSk7CiAg
ICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFBy
b3RvY29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBj
b25zdDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGFyc2VQ
YXRoKGNvbnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IFJldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IGxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCwg
Q2VydGlmaWNhdGVWZXJpZmllciYmLCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+JiYsIE9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0KTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPG53X3BhcmFtZXRlcnNf
dD4gbGlzdGVuZXJQYXJhbWV0ZXJzKFByb3RvY29sLCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYsIFJl
dGFpblB0cjxTZWNJZGVudGl0eVJlZj4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7
CiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwgUmVmPFJlcXVl
c3REYXRhPik7CiAKICAgICBSZWY8UmVxdWVzdERhdGE+IG1fcmVxdWVzdERhdGE7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXggNzk2ZmEwMWVjNzY5Yjc0ZGYyOTZm
NzAzMDJkZjZlNDQzOGNkYzk1Mi4uZTlkYmFhMTNiNGEyNTg3NzJkYzY1MjYxYjJiMWZiMjVhNmM4
YzE3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQpAQCAtNTIsNyAr
NTIsNyBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6UmVxdWVzdERhdGEgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVxdWVzdERhdGEsIFdURjo6RAogICAgIFZlY3RvcjxDb25uZWN0aW9uPiBj
b25uZWN0aW9uczsKIH07CiAKLVJldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6
Omxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCBwcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmll
ciYmIHZlcmlmaWVyLCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+JiYgY3VzdG9tVGVzdElkZW50
aXR5LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK1JldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+
IEhUVFBTZXJ2ZXI6Omxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCBwcm90b2NvbCwgQ2VydGlm
aWNhdGVWZXJpZmllciYmIHZlcmlmaWVyLCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+JiYgY3Vz
dG9tVGVzdElkZW50aXR5LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIGlm
IChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cCAmJiAhY3VzdG9tVGVzdElkZW50aXR5KQogICAg
ICAgICBjdXN0b21UZXN0SWRlbnRpdHkgPSB0ZXN0SWRlbnRpdHkoKTsKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIEhUVFBTZXJ2ZXI6OmNhbmNlbCgpCiAgICAgICAgIGNvbm5lY3Rpb24uY2FuY2Vs
KCk7CiB9CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9j
b2wsIENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllciwgUmV0YWluUHRyPFNlY0lkZW50aXR5
UmVmPiYmIGlkZW50aXR5LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK0hUVFBTZXJ2ZXI6OkhU
VFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNw
b25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXIm
JiB2ZXJpZmllciwgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiYmIGlkZW50aXR5LCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgIDogbV9yZXF1ZXN0RGF0YShhZG9wdFJlZigqbmV3
IFJlcXVlc3REYXRhKHJlc3BvbnNlcykpKQogICAgICwgbV9saXN0ZW5lcihhZG9wdE5TKG53X2xp
c3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJvdG9jb2wsIFdURk1vdmUodmVyaWZp
ZXIpLCBXVEZNb3ZlKGlkZW50aXR5KSwgcG9ydCkuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wo
cHJvdG9jb2wpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZE
b2N1bWVudC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaApp
bmRleCA2MzlmNmEwZmE2NmU4YTRmMmNiMmJjMDJkYTQwZWRlNjgyNTgwMmFmLi40ZDcwN2ZjNzA2
ODQ5YzgyZjFjZjJjOWE1ODVmYzY3ZmY4ZTA3NTdiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBUZXN0UERGUGFnZShQREZQYWdlICopOwogICAgIFJldGFpblB0cjxQREZQYWdlPiBt
X3BhZ2U7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0
aW9uczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFN0cmluZz4gbV90ZXh0V2l0aG91dFN1cnJvdW5k
aW5nV2hpdGVzcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxUZXN0UERGQW5ub3RhdGlv
bj4+IG1fYW5ub3RhdGlvbnM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV90
ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hpdGVzcGFjZTsKIH07CiAKIGNsYXNzIFRlc3RQREZEb2N1
bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4gewpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQppbmRleCA5NmYyNDU1NjUy
N2FmNjkzMmE0ZmExNThmNzRhN2Y0ODkwNDc5NGQ5Li5mMjJjMzcyMjc5Njk0NGI1NmZhZjQ1Yzgw
NTBkNzQ0ZGI4NmEyOWY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJy
ZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoT3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRl
bnRNb2RlID0geyB9LCBPcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29u
dGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6
ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
aWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmll
d0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0
TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWly
PFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmcoT3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBPcHRpb25hbDxTdHJp
bmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENH
U2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxW
aWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0Nv
bnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1Np
emUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlv
bkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHRO
UyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RpY3Rpb25hcnlGdW5jdGlvbnMuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oCmluZGV4IDg0YzlkOTEzMTkx
MWViNjc3MTY4MjY3NDVmYmNlZGJhYWVhN2Q3YmEuLjE1YmZhNzNhZWE4YzYwZjAwMDFjYWYwYmRi
YjIyMjkwMjE4OWNjOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGljdGlv
bmFyeUZ1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1
bmN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgYm9vbGVhblZhbHVlKFdLVHlwZVJlZik7
CiBib29sIGJvb2xlYW5WYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS1R5cGVSZWY+Jik7CiAKIGRv
dWJsZSBkb3VibGVWYWx1ZShXS1R5cGVSZWYpOwotT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERv
dWJsZVZhbHVlKFdLVHlwZVJlZik7CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3Vi
bGVWYWx1ZShXS1R5cGVSZWYpOwogCiBXS1N0cmluZ1JlZiBzdHJpbmdWYWx1ZShXS1R5cGVSZWYp
OwogV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoV0tUeXBlUmVmKTsKQEAgLTUwLDcgKzUwLDcgQEAg
ZG91YmxlIGRvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIFdL
U3RyaW5nUmVmIHN0cmluZ1ZhbHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsK
IHVpbnQ2NF90IHVpbnQ2NFZhbHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsK
IAotT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwg
Y29uc3QgY2hhcioga2V5KTsKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZh
bHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5
UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgY29uc3QgV0tSZXRhaW5QdHI8VD4mIHZhbHVlKTsKIHZv
aWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mLCBj
b25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpOwpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIHNldFZh
bHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3QgY2hh
cioga2V5LCBkb3VibAogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgV0tTdHJpbmdSZWYgdmFsdWUpOwogdm9p
ZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNv
bnN0IGNoYXIqIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwogdm9pZCBzZXRWYWx1ZShjb25zdCBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgY29u
c3QgV1RGOjpTdHJpbmcmIHZhbHVlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0VmFs
dWUoY29uc3QgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mLCBjb25zdCBjaGFy
KiBrZXksIGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+Jiwg
Y29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSk7CiB2b2lkIHNl
dFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3Qg
Y2hhcioga2V5LCBpbnQgdmFsdWUpID0gZGVsZXRlOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1Jl
dGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgdW5zaWdu
ZWQgdmFsdWUpID0gZGVsZXRlOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011
dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUp
ID0gZGVsZXRlOwpAQCAtODUsNyArODUsNyBAQCBpbmxpbmUgZG91YmxlIGRvdWJsZVZhbHVlKFdL
VHlwZVJlZiB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgV0tHZXRUeXBlSUQodmFsdWUpID09
IFdLRG91YmxlR2V0VHlwZUlEKCkgPyBXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91
YmxlUmVmPih2YWx1ZSkpIDogMDsKIH0KIAotaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4gb3B0aW9u
YWxEb3VibGVWYWx1ZShXS1R5cGVSZWYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQogewogICAgIHJldHVybiB2
YWx1ZSAmJiBXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSA/IHN0ZDo6
bWFrZV9vcHRpb25hbChXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPih2
YWx1ZSkpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgdWlu
dDY0X3QgdWludDY0VmFsdWUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIq
IGtleSkKICAgICByZXR1cm4gdWludDY0VmFsdWUodmFsdWUoZGljdGlvbmFyeSwga2V5KSk7CiB9
CiAKLWlubGluZSBPcHRpb25hbDxkb3VibGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwg
Y29uc3QgY2hhcioga2V5KQogewogICAgIHJldHVybiBvcHRpb25hbERvdWJsZVZhbHVlKHZhbHVl
KGRpY3Rpb25hcnksIGtleSkpOwogfQpAQCAtMTgwLDcgKzE4MCw3IEBAIGlubGluZSB2b2lkIHNl
dFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBkaWN0aW9u
YXJ5LCBjb25zCiAgICAgc2V0VmFsdWUoZGljdGlvbmFyeSwga2V5LCBhZG9wdFdLKFdLRG91Ymxl
Q3JlYXRlKHZhbHVlKSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldFZhbHVl
KGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBkaWN0aW9uYXJ5LCBj
b25zdCBjaGFyKiBrZXksIGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFy
eVJlZj4mIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSwgY29uc3Qgc3RkOjpvcHRpb25hbDxU
PiYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlKQogICAgICAgICBzZXRWYWx1ZShkaWN0aW9uYXJ5
LCBrZXksICp2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9u
UHJvdmlkZXJNb2NrLmgKaW5kZXggOWJmNjMzODRhZTI3ZGIyOGM1ZjU0MDU2ODViODhmNzViZWQ3
YjUxNi4uOGU3OWZkNTZjMjVjNDEwNzdmMzViYjU0NTgxNGU4MDE2MmU2YjU2ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0
UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92aWRlck1vY2soKTsKIAotICAgIHZvaWQgc2V0UG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ks
IE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1
cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBP
cHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOworICAgIHZvaWQgc2V0UG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBhbHRpdHVkZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJh
Y3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
c3BlZWQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmbG9vckxldmVsKTsKICAgICB2b2lkIHNldFBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihXS1N0cmluZ1JlZiBlcnJvck1lc3NhZ2UpOwogCiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggNzgxODJlZTkwYzRlMjc5NzU2ZmM2OTU4
YTQxMmUxY2FiMjQwZTI2MC4uMjE5NGNhM2UwYjg3NTc0ZTFiOGM4Mjc0ZmYxNGY1Y2E4NWYyYjEz
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKQEAgLTY4LDcgKzY4
LDcgQEAgaW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6aXNFcXVhbChB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKICNlbmRpZgogICAgIAogI2lmZGVmIF9fT0JK
Q19fCi1pbmxpbmUgT3B0aW9uYWw8UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+
PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4qLCBpZCByYW5nZSkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U6OmNyZWF0ZShyYW5nZSkgfSB9OyB9CitpbmxpbmUgc3RkOjpvcHRpb25hbDxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiosIGlkIHJhbmdlKSB7IHJldHVybiB7IHsg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHJhbmdlKSB9IH07IH0KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXgg
Y2FjNjE4MjZlYmFmODJlMzZlNmY3OTg5NTc2N2U0MzcyY2Q1Yjg5NS4uYWQ2MzEzYjA1MzM5ZTE1
ZmZhNTc1ZDcxZjkyNDc4ZmRmMjgzZmYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgK
QEAgLTQxMyw3ICs0MTMsNyBAQCBwcml2YXRlOgogfTsKICAgICAKICNpZmRlZiBfX09CSkNfXwot
aW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gbWFrZVZlY3Rv
ckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KiwgaWQgZWxlbWVu
dCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSB9
IH07IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KSB9IH07IH0KICNlbmRpZgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAppbmRleCA2MTBlMjI0MzA0NWU4ZWJmMTFkMjU3MmUyYjEzZmE4NTAwODdkY2YxLi42
N2IzNTNmMzAwZmZiZjY1ZDM0NDZjMmU0ZDgyMTIwNWU2M2UxN2E3IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbihib29sIGVuYWJsZWQpCiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJTZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24iLCBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShlbmFibGVkKSkpOwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91
YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25h
bDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJs
ZT4gZmxvb3JMZXZlbCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBh
bHRpdHVkZUFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZywgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHNwZWVkLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKIHsK
ICAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAg
ICAgc2V0VmFsdWUoYm9keSwgImxhdGl0dWRlIiwgbGF0aXR1ZGUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4
IGJmNzE1NTNiNzVlYzg2NjM4ODIwZWYzMWEzNGUyZmY3Nzc1MjQ4M2IuLjM1OWQ4OTY3Y2Y5YzBh
MzM3NjcyNTIzMWRjMGY2MjFmMTVlMWUyMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTk2LDcgKzk2LDcg
QEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9u
YWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBP
cHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFs
PGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVm
IGVycm9yTWVzc2FnZSk7CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggNGM1MDk4ZGU1N2U0ZjAyYzgwODkyYTZiYzExZTBiZjU5N2Nl
MjViNC4uM2I5NWZkZTJlM2RhOTI4ZTExYWE1NDk0MzcxY2M0YjFmYWNiY2I2ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpleGVjQ29tbWFuZChKU1N0cmlu
Z1JlZiBuYW1lLCBKU1N0cmluZ1JlZiBzaG93VUksIEpTU3RyaW5nUmVmIHYKICAgICBXS0J1bmRs
ZVBhZ2VFeGVjdXRlRWRpdGluZ0NvbW1hbmQocGFnZSgpLCB0b1dLKG5hbWUpLmdldCgpLCB0b1dL
KHZhbHVlKS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXS0ZpbmRPcHRpb25zPiBmaW5k
T3B0aW9uc0Zyb21BcnJheShKU1ZhbHVlUmVmIG9wdGlvbnNBcnJheUFzVmFsdWUpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxXS0ZpbmRPcHRpb25zPiBmaW5kT3B0aW9uc0Zyb21BcnJheShKU1ZhbHVl
UmVmIG9wdGlvbnNBcnJheUFzVmFsdWUpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gbWFpbkZyYW1l
SlNDb250ZXh0KCk7CiAgICAgYXV0byBvcHRpb25zQXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgb3B0aW9uc0FycmF5QXNWYWx1ZSwgbnVsbHB0cik7CkBAIC04NTksNyArODU5LDcgQEAg
Ym9vbCBUZXN0UnVubmVyOjppc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKQogICAgIHJldHVy
biBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuaXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZl
KCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFs
PGRvdWJsZT4gYWx0aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0
aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxk
b3VibGU+IGZsb29yTGV2ZWwpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBh
bHRpdHVkZUFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZywgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHNwZWVkLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKIHsK
ICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlLCBhbHRpdHVkZUFjY3Vy
YWN5LCBoZWFkaW5nLCBzcGVlZCwgZmxvb3JMZXZlbCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDYzMzE4YzZhNzVh
NmQ4YTM4ZWE3ZDI1ODcxZTM2NTQ5MDc5Mzk3NWUuLjFiZTY2M2Q4ZWQ4MWMzOTBjMWQ4YjljNmNi
NjEwMGRiYTg0NTE0MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0yOTAsNyArMjkwLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7
Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhl
YWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZl
bCk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIGJv
b2wgaXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTgxNzczYzQ1MTgwZDRkMTUyNDNiYThlMmQwNzY1
Yzk4NzdlNGZjOC4uY2ZjOWM0NDgzYzgyNWQ5MTNlZDI3YTRkNTU4ODRmMjQyZDc2ZjAwMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyNDksNyArMjI0
OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
IGVuYWJsZWQpCiAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dElmUG9zc2libGUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNw
ZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGZsb29yTGV2ZWwpCiB7CiAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyLT5zZXRQb3NpdGlv
bihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgYWx0aXR1ZGUsIGFsdGl0dWRlQWNjdXJh
Y3ksIGhlYWRpbmcsIHNwZWVkLCBmbG9vckxldmVsKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCBjMTQ5NWEyMDBiZmI4N2Y0ZDYxZTdjZWMzOWQ5M2FmMTEy
YWUxYzBjLi5iYzBlYzUyNjkzNDczNjFjMzE1ZTZlNGQwN2RiODFhYmI2YjQ3YzZlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91
YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25h
bDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJs
ZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1
cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAgIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9y
TWVzc2FnZSk7CiAgICAgdm9pZCBoYW5kbGVHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9u
UHJvdmlkZXJBY3RpdmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
SElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMWU0YjI2MDFiZTkzNGMxYjVmOTQ5OWMxNTQ5ZDg1
ZjFmOGJhOWE5Yy4uMDQ1YWZhNzhlODFhMzk5MGM5NzJjZDY2NmExODI3MTg4ODQ4NmNhYiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAg
LTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkV3JhcFdpdGhTaGlmdEtl
eUV2ZW50Rm9yQ2hhcmFjdGVyKE5TU3RyaW5nICprZXkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0
cmluZyAqa2V5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGtleUNvZGVGb3JET01G
dW5jdGlvbktleShOU1N0cmluZyAqa2V5KQogewogICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0
cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMg
KGkuZS4gIkYxIiwuLi4sIkYyNCIpLgogICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBm
dW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4gT24gaU9TIHRoZSBrZXkgY29kZXMg
Zm9yIHRoZSBmaXJzdCAxMgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MuaAppbmRleCBiN2JmNzcyNDVlNDkyYTkxMjMzMTE2YjcyZWRmZGI0
NTM0OTU2YzIwLi45ODA3OTQ5NTQ0NTE2YzgwNDQxNDJlNjc0N2Q5MWU4Y2Q5NGY4ZDE4IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
aApAQCAtMTA2LDggKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0
aW9uKEpTU3RyaW5nUmVmIG5ld1N0cmluZywgSlNTdHJpbmdSZWYgb2xkU3RyaW5nLCBKU1ZhbHVl
UmVmKSBvdmVycmlkZTsKICAgICBkb3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGRvdWJsZSBtYXhpbXVtWm9vbVNjYWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVl
KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJpZGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3RkOjpv
cHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKSBvdmVycmlkZTsKICAgICBKU09iamVjdFJlZiBj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBKU09iamVjdFJlZiB0ZXh0
U2VsZWN0aW9uUmFuZ2VSZWN0cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTT2JqZWN0UmVmIHRl
eHRTZWxlY3Rpb25DYXJldFJlY3QoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCBiY2Y0YmJj
NjUzZTYzM2ExNWU0MTFmZjExNzg1OGU4NzJhNzk4ODI5Li5hZGFlMzAyMTc4NDJmNmVmZDRkZDZh
OWJmNTE3YTNjNzI3NzFiMGU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC03NTIsNyArNzUyLDcgQEAgZG91YmxlIFVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHdlYlZpZXcoKS5zY3JvbGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CiB9CiAKLU9wdGlvbmFsPGJv
b2w+IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c3RhYmxlU3RhdGVPdmVy
cmlkZSgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHRoaXMt
PndlYlZpZXcoKTsKICAgICBpZiAod2ViVmlldy5fc3RhYmxlU3RhdGVPdmVycmlkZSkKQEAgLTc2
MSw3ICs3NjEsNyBAQCBPcHRpb25hbDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnN0YWJs
ZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZv
aWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFs
PGJvb2w+IG92ZXJyaWRlVmFsdWUpCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2V0U3Rh
YmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAg
ICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKICAgICBp
ZiAob3ZlcnJpZGVWYWx1ZSkK
</data>
<flag name="review"
          id="451497"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="451499"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430132</attachid>
            <date>2021-05-30 00:02:43 -0700</date>
            <delta_ts>2021-05-30 09:12:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226433-20210530000238.patch</filename>
            <type>text/plain</type>
            <size>5041233</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OGU4Yjk1Zjg0OTk3YmU0NzJmNjEyZmFhYTc4OGMyZjhkNGM3NTY5Li4xNWQ2YTFiZjEwYWMzZDc4
YjkxYTRkZGJiYzU5ZGQ5MDgyNzYyNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwg
dXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBk
by13ZWJjb3JlLXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25h
bDw+LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29s
VHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3Bh
eWxvYWQpOiBVc2UgYXV0byBpbnN0ZWFkCisgICAgICAgIG9mIE9wdGlvbmFsPD4uIEFsc28gdXNl
ICogaW5zdGVhZCBvZiB2YWx1ZSgpIGFuZCBuZXN0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBsb2Nh
bCBpbnNpZGUgYW4gaWYKKyAgICAgICAgc3RhdGVtZW50IGluIHRoZSBjYXNlIHdoZXJlIGl0J3Mg
YW4gb3B0aW9uYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC8qOiBSZWdlbmVyYXRlZCB0aGVzZSByZXN1bHRzLgorCiAyMDIxLTA1LTI5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTQzo6Q29uY3VycmVudEpTTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZWY0ZTFlMDgyMzc1OWVlYzQ3MzhlZWVj
Nzg3MmRlM2QyZjRiMzk3Li41NjdhN2M3MjFiMjc1NTQyMmJjNTM1NDcwYzVkZDI3ZDZjNDVkZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBzdGQ6
Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+
OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUgT3B0aW9uYWw8PiB0byBz
dGQ6Om9wdGlvbmFsPD4uCisKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDogUmVtb3ZlIFdURjo6
T3B0aW9uYWwuCisKIDIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdURjo6
RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ2Nzk0OTczZjA0NzIzM2EzNDU4ZWFmZjM1ZTJiNjM0
ZTlmZjg5Ny4uZjRhZTAxNGMxYjVkMjhjNGFiMzg2YzhlNjE4OTk1ZmMzYTgxOGY0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBzdGQ6
Om9wdGlvbmFsLCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+
OiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlwdCByZW5hbWUgT3B0aW9uYWw8PiB0byBz
dGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGlu
IFdURjo6RGF0YU11dGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA0NjNmMDUxYTRlYjk1MDk5NDE2
YTFhNWEwZTRmZjJjMWE4MmQwMjM5Li41YWQyZGIxZTI3MzcxY2M0ODAyZDFhZTFjNDQ2YzE1ODI5
OTgzOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0
aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0
ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBkby13ZWJjb3JlLXJlbmFtZSBzY3JpcHQg
cmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25hbDw+LgorCiAyMDIxLTA1LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hv
dyBjb250ZXh0IG1lbnUgd2hlbiBjbGlja2luZyBvbiBkYXRhIGRldGVjdGlvbiByZXN1bHRzIGlu
IGltYWdlIG92ZXJsYXlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IGI2YzM3MjU3MGVjMTJlNDFjZWUwNjhh
NWIwNDNhNGQxOTgxNzg3MDUuLjgwODI2ODUyYzFiNzhjYzllNjIwMzgzMTQ2ZGE3YmFmODNlNWY1
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5
bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0
bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
KiA8bWFueSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBP
cHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0yOCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xpZW50cyBvZiBvcHRpb25hbCBzaG91bGQg
dXNlIGhhc192YWx1ZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaGFzVmFsdWUgbWFjcm8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDNhNmRlNGYzZjVjMDIyYzliNjk5MWJhODFlMTA0N2EwMjVkOTM0My4uZWNkOWNiZjY4
NTMwNjcyNmNhOGUxZDA2NDY3NTYxMDgzNTY5YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhh
dCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBD
aHJpcyBEdW1lei4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogTGV0IHRoZSBkby13ZWJjb3Jl
LXJlbmFtZSBzY3JpcHQgcmVuYW1lIE9wdGlvbmFsPD4gdG8gc3RkOjpvcHRpb25hbDw+LgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHM6IFJlZ2VuZXJhdGVkIGV4cGVjdGVkIHJlc3Vs
dHMsIGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQgInB5dGhvbgorICAgICAgICBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlc191bml0dGVzdC5weSAtciIuIChIb3cgYW0gSSBzdXBwb3NlZCB0byBrbm93IHRv
IGRvIHRoYXQ/KQorCiAyMDIxLTA1LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGllbnRzIG9mIG9wdGlvbmFsIHNob3VsZCB1c2UgaGFzX3ZhbHVlIGluc3Rl
YWQgb2YgcmVseWluZyBvbiBoYXNWYWx1ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CmluZGV4IGUxODZmM2NjODMwYTMwZDg4YTRmM2NkZTQ1ZGJlNDJiNjQyMGRlZTkuLmI4N2I1MjZj
ZjgxZWViNTFlOTk1MDFlMzc3ZGY3MGY5NDkwOWFkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3Rk
OjpvcHRpb25hbCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudElPUy5oOiBMZXQgdGhlIGRvLXdlYmNvcmUtcmVuYW1lIHNjcmlw
dCByZW5hbWUKKyAgICAgICAgT3B0aW9uYWw8PiB0byBzdGQ6Om9wdGlvbmFsPD4uCisKIDIwMjEt
MDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVz
aW5nIGhvbGRMb2NrKCkgaW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3Qg
Y29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCA4NmVjMjI4NDE2NzdhZWVjZjQ3ODFjM2ZmYTU3YmNjMDAxYmYz
MDRlLi5lZDRlOTIyMDE0OGU1YWVjY2I3NDJmYTg0MDllZjgxNTE0MTIwZDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok9wdGlvbmFsIHN5
bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3MgdGVtcGxhdGUgZGlyZWN0
bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
KiA8bWFueSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUgc2NyaXB0IHJlbmFtZSBP
cHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6
Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVk
ZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA2M2RiOWEyMTU5NTUwYjg1NDdjYTQ5
MGFmYWZhNmM1NjRkOTdiOWZjLi4zNmRkNmU2YzA5NDMzZGQwNjBmMjBkNWI3YjMwNzRiNjI2Mzhj
MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEt
MDUtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBX
VEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3Mg
dGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUg
c2NyaXB0IHJlbmFtZSBPcHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0y
NyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTmV4dCBzdGVwIHRv
d2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6
Ok9wdGlvbmFsIHR5cGVkZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNDQ4YWJlYmFjZTc4YjEzYTU3MDA3NWMy
NThmMDRmOGYzZWI1ZGY4Zi4uNDczMWE0ZDE3MmY2OTFjOWM3MDBhMTUyYWZjNjI3MTMwMjU3NTg1
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgIH0KIAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pj4sICJFbnN1cmUgbm8gZGVyaXZlZCBjbGFzc2VzIGhhdmUgY3VzdG9tIGRl
bGV0ZVByb3BlcnR5QnlJbmRleCBpbXBsZW1lbnRhdGlvbiIpOwotICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFBhcmVudDo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSkpOwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDE4
MDRiZmU5ZjNlODZmODdmOTI1ZmE5NjVmMDg5NDVmMWI3MWYwMTUuLmZiYzIxNzY0YmM3MjExMTIz
YzA1MzNmOWE2MzhhOGFlMzRmNGU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTQ0NhbGxiYWNrRnVuY3Rpb24sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQVBJQ2FsbGJhY2tGdW5jdGlvbjo6
Y29uc3RydWN0SW1wbDxKU0NDYWxsYmFja0Z1bmN0aW9uPihnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSk7CiB9CiAKLUpTQ0NhbGxiYWNrRnVuY3Rpb24qIEpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgVHlwZSB0eXBlLCBKU0NDbGFzcyoganNjQ2xhc3MsIEdSZWZQdHI8R0Nsb3N1cmU+JiYgY2xv
c3VyZSwgR1R5cGUgcmV0dXJuVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0
ZXJzKQorSlNDQ2FsbGJhY2tGdW5jdGlvbiogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBU
eXBlIHR5cGUsIEpTQ0NsYXNzKiBqc2NDbGFzcywgR1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJl
LCBHVHlwZSByZXR1cm5UeXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1l
dGVycykKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2xpYkNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU0NDYWxsYmFja0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KHZt
LmhlYXApKSBKU0NDYWxsYmFja0Z1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIHR5cGUsIGpzY0NsYXNz
LCBXVEZNb3ZlKGNsb3N1cmUpLCByZXR1cm5UeXBlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKQEAg
LTczLDcgKzczLDcgQEAgSlNDQ2FsbGJhY2tGdW5jdGlvbiogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICByZXR1cm4gZnVuY3Rp
b247CiB9CiAKLUpTQ0NhbGxiYWNrRnVuY3Rpb246OkpTQ0NhbGxiYWNrRnVuY3Rpb24oVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHlwZSB0eXBlLCBKU0NDbGFzcyoganNjQ2xhc3MsIEdS
ZWZQdHI8R0Nsb3N1cmU+JiYgY2xvc3VyZSwgR1R5cGUgcmV0dXJuVHlwZSwgT3B0aW9uYWw8VmVj
dG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQorSlNDQ2FsbGJhY2tGdW5jdGlvbjo6SlNDQ2FsbGJh
Y2tGdW5jdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUeXBlIHR5cGUsIEpTQ0Ns
YXNzKiBqc2NDbGFzcywgR1JlZlB0cjxHQ2xvc3VyZT4mJiBjbG9zdXJlLCBHVHlwZSByZXR1cm5U
eXBlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1ldGVycykKICAgICA6IElu
dGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEpTQ0NhbGxiYWNrRnVuY3Rpb24sIHR5
cGUgPT0gVHlwZTo6Q29uc3RydWN0b3IgPyBjb25zdHJ1Y3RKU0NDYWxsYmFja0Z1bmN0aW9uIDog
bnVsbHB0cikKICAgICAsIG1fZnVuY3Rpb25DYWxsYmFjayhjYWxsQXNGdW5jdGlvbikKICAgICAs
IG1fY29uc3RydWN0Q2FsbGJhY2soY2FsbEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBlNWE1
ZWU1M2QyMGFhNTg4NDlkNzA0M2JiZDZkY2MzYTE4ZWM4ZDIxLi44ODNiYzA3MWEzMDg5MDM5MzA2
YWYxMDBhN2ZkZmJjMDcyMTkyM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgICAgICBDb25zdHJ1Y3RvcgogICAgIH07CiAKLSAgICBzdGF0aWMgSlNDQ2FsbGJhY2tG
dW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIE9wdGlvbmFsPFZl
Y3RvcjxHVHlwZT4+JiYpOworICAgIHN0YXRpYyBKU0NDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgVHlwZSwgSlNDQ2xhc3Mq
LCBHUmVmUHRyPEdDbG9zdXJlPiYmLCBHVHlwZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8R1R5cGU+
PiYmKTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0KEpTQ29udGV4dFJlZiwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgSlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIFN0cnVj
dHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIE9wdGlv
bmFsPFZlY3RvcjxHVHlwZT4+JiYpOworICAgIEpTQ0NhbGxiYWNrRnVuY3Rpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBUeXBlLCBKU0NDbGFzcyosIEdSZWZQdHI8R0Nsb3N1cmU+JiYsIEdUeXBlLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYpOwogCiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGZ1bmN0aW9uQ2FsbGJhY2soKSB7IHJldHVybiBtX2Z1bmN0aW9uQ2FsbGJhY2s7
IH0KICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY29uc3RydWN0Q2FsbGJh
Y2soKSB7IHJldHVybiBtX2NvbnN0cnVjdENhbGxiYWNrOyB9CkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgR1JlZlB0cjxKU0NDbGFzcz4gbV9jbGFzczsKICAgICBHUmVmUHRyPEdDbG9z
dXJlPiBtX2Nsb3N1cmU7CiAgICAgR1R5cGUgbV9yZXR1cm5UeXBlOwotICAgIE9wdGlvbmFsPFZl
Y3RvcjxHVHlwZT4+IG1fcGFyYW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlw
ZT4+IG1fcGFyYW1ldGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAKaW5kZXggYTRlMWI1NDJiZmZjNDk2N2Vh
ZTc5ZDk0ODlkMmM4NDA3MGQzOTZlYS4uM2Y2ZTgzYWNmY2M2ZDRiNDM3NjQzZmE4ZjczOGM0ZmI5
Yzc4NmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Ns
YXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3Bw
CkBAIC01NDYsNyArNTQ2LDcgQEAgSlNDQ2xhc3MqIGpzY19jbGFzc19nZXRfcGFyZW50KEpTQ0Ns
YXNzKiBqc2NDbGFzcykKICAgICByZXR1cm4ganNjQ2xhc3MtPnByaXYtPnBhcmVudENsYXNzOwog
fQogCi1zdGF0aWMgR1JlZlB0cjxKU0NWYWx1ZT4ganNjQ2xhc3NDcmVhdGVDb25zdHJ1Y3RvcihK
U0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5hbWUsIEdDYWxsYmFjayBjYWxsYmFjaywg
Z3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJl
dHVyblR5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1ldGVycykKK3N0YXRpYyBH
UmVmUHRyPEpTQ1ZhbHVlPiBqc2NDbGFzc0NyZWF0ZUNvbnN0cnVjdG9yKEpTQ0NsYXNzKiBqc2ND
bGFzcywgY29uc3QgY2hhciogbmFtZSwgR0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2Vy
RGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeSwgR1R5cGUgcmV0dXJuVHlwZSwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSWYgdGhl
IGNvbnN0cnVjdG9yIGRvZXNuJ3QgaGF2ZSBhcmd1bWVudHMsIHdlIG5lZWQgdG8gc3dhcCB0aGUg
ZmFrZSBpbnN0YW5jZSBhbmQgdXNlciBkYXRhIHRvIGVuc3VyZQogICAgIC8vIHVzZXIgZGF0YSBp
cyB0aGUgZmlyc3QgcGFyYW1ldGVyIGFuZCBmYWtlIGluc3RhbmNlIGlnbm9yZWQuCkBAIC03MDEs
NyArNzAxLDcgQEAgSlNDVmFsdWUqIGpzY19jbGFzc19hZGRfY29uc3RydWN0b3JfdmFyaWFkaWMo
SlNDQ2xhc3MqIGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW0KICAgICByZXR1cm4ganNjQ2xhc3ND
cmVhdGVDb25zdHJ1Y3Rvcihqc2NDbGFzcywgbmFtZSA/IG5hbWUgOiBwcml2LT5uYW1lLmRhdGEo
KSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBzdGQ6Om51
bGxvcHQpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIHZvaWQganNjQ2xhc3NBZGRNZXRob2QoSlND
Q2xhc3MqIGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhY2sgY2FsbGJhY2ssIGdw
b2ludGVyIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5LCBHVHlwZSByZXR1
cm5UeXBlLCBPcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCitzdGF0aWMgdm9p
ZCBqc2NDbGFzc0FkZE1ldGhvZChKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5hbWUs
IEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRl
c3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdUeXBl
Pj4mJiBwYXJhbWV0ZXJzKQogewogICAgIEpTQ0NsYXNzUHJpdmF0ZSogcHJpdiA9IGpzY0NsYXNz
LT5wcml2OwogICAgIEdSZWZQdHI8R0Nsb3N1cmU+IGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xv
c3VyZV9uZXcoY2FsbGJhY2ssIHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90
aWZ5PihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAppbmRleCAzNTkxYmI3OTI0
NDQ1MjUxYzU5MjdlYWNiMmZlMjg4OTJhZmM1MDZjLi5kYTlhOWY2ZmUzYmEwZTQ2MDg5YzVhOWE0
ZDU5YjZkNWZhOTRiNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5jcHAKQEAgLTExNDQsNyArMTE0NCw3IEBAIHZvaWQganNjX3ZhbHVlX29iamVjdF9kZWZp
bmVfcHJvcGVydHlfYWNjZXNzb3IoSlNDVmFsdWUqIHZhbHVlLCBjb25zdCBjaGFyKiBwcm9wCiAg
ICAgfQogfQogCi1zdGF0aWMgR1JlZlB0cjxKU0NWYWx1ZT4ganNjVmFsdWVGdW5jdGlvbkNyZWF0
ZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhY2sgY2FsbGJh
Y2ssIGdwb2ludGVyIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5LCBHVHlw
ZSByZXR1cm5UeXBlLCBPcHRpb25hbDxWZWN0b3I8R1R5cGU+PiYmIHBhcmFtZXRlcnMpCitzdGF0
aWMgR1JlZlB0cjxKU0NWYWx1ZT4ganNjVmFsdWVGdW5jdGlvbkNyZWF0ZShKU0NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVz
ZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5LCBHVHlwZSByZXR1cm5UeXBlLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1ldGVycykKIHsKICAgICBHUmVmUHRy
PEdDbG9zdXJlPiBjbG9zdXJlOwogICAgIC8vIElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUg
YXJndW1lbnRzLCB3ZSBuZWVkIHRvIHN3YXAgdGhlIGZha2UgaW5zdGFuY2UgYW5kIHVzZXIgZGF0
YSB0byBlbnN1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCmluZGV4IDA4ZmZkMTEyNWE4ZjI0N2FmMDVkNjE0Njc4MDZjMjI4M2M2ZTBkMjcuLmE1
MDhkOGRlZDFlYjM3NGI3YTYzNzg2ZjdhNzdiY2ViZjA1N2RkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBA
IHZvaWQgTGlua0J1ZmZlcjo6Y2xlYXJQcm9maWxlU3RhdGlzdGljcygpCiAgICAgfQogfQogCi12
b2lkIExpbmtCdWZmZXI6OmR1bXBQcm9maWxlU3RhdGlzdGljcyhPcHRpb25hbDxQcmludFN0cmVh
bSo+IG91dFN0cmVhbSkKK3ZvaWQgTGlua0J1ZmZlcjo6ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKHN0
ZDo6b3B0aW9uYWw8UHJpbnRTdHJlYW0qPiBvdXRTdHJlYW0pCiB7CiAgICAgc3RydWN0IFN0YXQg
ewogICAgICAgICBQcm9maWxlIHByb2ZpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IDgxNWRjZjg3Mzc0YWEzYjM1Nzk4OWRmNjdmZTcyYmE5
NDBiMzNhNTkuLmExNDM5NDg1ZmRjNjE1YTQ2NTJmMDE1NDIzMGExNWYyNDdkMDAzOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0zNDAsNyAr
MzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQWxyZWFkeURpc2Fzc2VtYmxlKCkgeyBtX2Fs
cmVhZHlEaXNhc3NlbWJsZWQgPSB0cnVlOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBjbGVhclByb2ZpbGVTdGF0aXN0aWNzKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE9wdGlvbmFsPFByaW50U3RyZWFtKj4g
PSBzdGQ6Om51bGxvcHQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBQ
cm9maWxlU3RhdGlzdGljcyhzdGQ6Om9wdGlvbmFsPFByaW50U3RyZWFtKj4gPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGFkZE1haW5U
aHJlYWRGaW5hbGl6YXRpb25UYXNrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmlu
ZGV4IDU3ZDViOTRmN2I4NTI0ZDE5MTIzNmMxZWRlZTlkOWY4NWRlMGE3ZDAuLjg5MzAwMTM3Mjkw
ZDk2ZThmZDdjYWE1NmFjYjJhNDQ5MDIzOTVlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC00MDQ0LDcgKzQw
NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29u
ZGl0aW9uPihBc3NlbWJsZXI6OmludmVydChzdGF0aWNfY2FzdDxBc3NlbWJsZXI6OkNvbmRpdGlv
bj4oY29uZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9u
PiBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJl
VG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKICAgICAgICAg
c3dpdGNoIChjb25kKSB7CiAgICAgICAgIGNhc2UgRXF1YWw6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5k
ZXggNDhlOTUwZTljOGU0MWNkY2JkNmY1NDczZGY2M2Y0NThhNWE5MTg1Yy4uOTMzMzc4OTRkMDdm
MDIzZjRlYjA1NDNkNGY1M2IxNTgxNDkxOGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzEw
OCw3ICszMTA4LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhdGljIE9w
dGlvbmFsPFJlc3VsdENvbmRpdGlvbj4gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0Q29u
ZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29uZCkgewogICAgICAgICBjYXNlIEVxdWFs
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKaW5kZXggYzI3
ZmI0YzEzNGExNDZlZThiZTgxOTk0ZDJjMTJhOWUzMjYzNDY3NC4uYzJkZjYyMmI1MWFjNTQ5OTNh
M2FjMTlhMDQwNTEyM2FlMmE2YmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
aGVja1NwZWNpYWwuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSW5zdCBDaGVja1NwZWNpYWw6Omhp
ZGRlbkJyYW5jaChjb25zdCBJbnN0JiBpbnN0KSBjb25zdAogdm9pZCBDaGVja1NwZWNpYWw6OmZv
ckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxs
YmFjaz4mIGNhbGxiYWNrKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7Ci0gICAgT3B0aW9u
YWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxXaWR0aD4g
b3B0aW9uYWxEZWZBcmdXaWR0aDsKICAgICBJbnN0IGhpZGRlbiA9IGhpZGRlbkJyYW5jaChpbnN0
KTsKICAgICBoaWRkZW4uZm9yRWFjaEFyZygKICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpS
b2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGggd2lkdGgpIHsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIENoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1i
ZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYQogICAgICAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzWzEg
KyBpbmRleF0sIHJvbGUsIGJhbmssIHdpZHRoKTsKICAgICAgICAgfSk7CiAKLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleDsKICAgICBpZiAobV9jaGVja0tpbmQub3Bjb2Rl
ID09IEJyYW5jaEFkZDMyIHx8IG1fY2hlY2tLaW5kLm9wY29kZSA9PSBCcmFuY2hBZGQ2NCkKICAg
ICAgICAgZmlyc3RSZWNvdmVyYWJsZUluZGV4ID0gMTsKICAgICBmb3JFYWNoQXJnSW1wbChudW1C
M0FyZ3MoaW5zdCksIG1fbnVtQ2hlY2tBcmdzICsgMSwgaW5zdCwgbV9zdGFja21hcFJvbGUsIGZp
cnN0UmVjb3ZlcmFibGVJbmRleCwgY2FsbGJhY2ssIG9wdGlvbmFsRGVmQXJnV2lkdGgpOwpAQCAt
MTUwLDkgKzE1MCw5IEBAIGJvb2wgQ2hlY2tTcGVjaWFsOjphZG1pdHNFeHRlbmRlZE9mZnNldEFk
ZHIoSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAgcmV0dXJuIGFkbWl0c1N0YWNr
KGluc3QsIGFyZ0luZGV4KTsKIH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6
c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IENoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKIHsKLSAgICBp
ZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGJyYW5jaERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91
bGRUcnlBbGlhc2luZ0RlZigpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBicmFu
Y2hEZWYgPSBoaWRkZW5CcmFuY2goaW5zdCkuc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkKICAgICAg
ICAgcmV0dXJuICpicmFuY2hEZWYgKyAxOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCmluZGV4IDc1OWE5YjdkYTEy
NmE2OTdlMGU4NGFkODhjODc3MGFiMWIwMWQyNTQuLjgwZGYwMDQzNTNhNmFiNDliNGFiYWIxYTY3
ZTFmOWYxNzA2OWY1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lh
bC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmFsaWQoQWlyOjpJ
bnN0JikgZmluYWw7CiAgICAgYm9vbCBhZG1pdHNTdGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBh
cmdJbmRleCkgZmluYWw7CiAgICAgYm9vbCBhZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoQWlyOjpJ
bnN0JiwgdW5zaWduZWQpIGZpbmFsOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlB
bGlhc2luZ0RlZihBaXI6Okluc3QmKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBzaG91bGRUcnlBbGlhc2luZ0RlZihBaXI6Okluc3QmKSBmaW5hbDsKIAogICAgIC8vIE5PVEU6
IHRoZSBnZW5lcmF0ZSBtZXRob2Qgd2lsbCBnZW5lcmF0ZSB0aGUgaGlkZGVuIGJyYW5jaCBhbmQg
dGhlbiByZWdpc3RlciBhIExhdGVQYXRoIHRoYXQKICAgICAvLyBnZW5lcmF0ZXMgdGhlIHN0YWNr
bWFwLiBTdXBlciBjcmF6eSBkdWRlIQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAK
aW5kZXggYjBlYmE1YTQxMzIwZGU4NzY4Mzg3YzQ4OTE4N2JmNzNkYWUzZTJiZS4uNThjMTVmMDRi
ZDc5MjVjMzkyZWY4NGFlMDZjNzIxNzZlODEyZTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb21tb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgc2hvdWxkU2F2ZUlSQmVmb3JlUGhh
c2UoKQogICAgIHJldHVybiBPcHRpb25zOjp2ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmUoKTsKIH0K
IAotT3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRFeHRlbmRlZE9mZnNldEFkZHJSZWdpc3RlcigpCitz
dGQ6Om9wdGlvbmFsPEdQUlJlZz4gcGlubmVkRXh0ZW5kZWRPZmZzZXRBZGRyUmVnaXN0ZXIoKQog
ewogI2lmIENQVShBUk02NCkKICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1wUmVn
aXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCmluZGV4IDYyZTk3MWU5MTY5NTI1
MDE0MmUxZjMyNTY4NGEwNWUzYWEwNGQ1ZDAuLjY0OGRlYjlmMWRmYWNkNmYxMGMwZGZhYzE5NGE3
MWUzMDRmOTBkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1v
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCkBAIC0xODMsNyAr
MTgzLDcgQEAgaW5saW5lIHVuc2lnbmVkIGRlZmF1bHRPcHRMZXZlbCgpCiAgICAgcmV0dXJuIE9w
dGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCk7CiB9CiAKLU9wdGlvbmFsPEdQUlJlZz4gcGlubmVk
RXh0ZW5kZWRPZmZzZXRBZGRyUmVnaXN0ZXIoKTsKK3N0ZDo6b3B0aW9uYWw8R1BSUmVnPiBwaW5u
ZWRFeHRlbmRlZE9mZnNldEFkZHJSZWdpc3RlcigpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBiOTdi
Mjg1MDcyZjUzZTdhNWQ0OTVlZDAxNjQyNzYzYzQ0YjBmMmJiLi5lYjJlZmQwNmE2YmNjZDA1ZTVj
OTE4ZjZhODhmZWMzNmM1OTA3M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGwsIEludCBvZmZz
ZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBJbnQgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChz
aGwtPm9wY29kZSgpICE9IFNobCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC01NDUsNyArNTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IGFk
ZHJlc3MtPmNoaWxkKDEpOwogCiAgICAgICAgICAgICBhdXRvIHRyeUluZGV4ID0gWyZdIChWYWx1
ZSogaW5kZXgsIFZhbHVlKiBiYXNlKSAtPiBBcmcgewotICAgICAgICAgICAgICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKKyAg
ICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hs
KGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9j
a2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkp
CkBAIC0yMTA0LDcgKzIxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBhdXRvIHRyeVNobCA9IFsmXSAoVmFsdWUqIHNobCwgVmFsdWUqIG90aGVyKSAtPiBib29s
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKHNo
bCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlID0g
c2NhbGVGb3JTaGwoc2hsLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKCFzY2FsZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwo
c2hsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDdjMmZhMGMwOTI0
OGNhN2ZjYTRmNDc2NWUwMjZlNGIyZWY0OTIxNjEuLmI4OTM0ZjNmZjQ1MTU2OGU5MjZiZjA2OGY3
YjU1ODJkYzliYjRlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAt
MzYsNyArMzYsNyBAQCBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLU9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21w
YXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZl
cnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bj
b2RlKSB7CiAgICAgY2FzZSBFcXVhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5k
ZXggOGU2YTI0YTU3NjY0ODU5ZGE2ZjVjYzNkZWM4MGI4MGJkYzA5NjdkNy4uMWRjYzg2YTNhZWE0
NTMwZTlkMWZhZmQ4NzEzMDEyZmNjYjc1YTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmgKQEAgLTM4MSw3ICszODEsNyBAQCBpbmxpbmUgYm9vbCBpc0NoZWNrTWF0aChPcGNvZGUg
b3Bjb2RlKQogICAgIH0KIH0KIAotT3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bj
b2RlLCBUeXBlKTsKK3N0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2Rl
LCBUeXBlKTsKIAogaW5saW5lIE9wY29kZSBjb25zdFB0ck9wY29kZSgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAppbmRleCA0YTc0
OGE3NjQzNTU3OTZmMjczMmRlOTNkMjllMDMzNjBlOWE5YzhhLi5jNWFlZDQ0YmQ3ZTA2M2EyZTk5
OTdjZDQ4ZWIzNjRkMmZkZGE0MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJGb3VuZCBzdG9yZS9s
b2FkOiIsICpzdG9yZSk7CiAKLSAgICAgICAgYXV0byBleHRyYWN0QXJyYXlJbmZvID0gWyZdIChW
YWx1ZSogdmFsdWUpIC0+IE9wdGlvbmFsPEFkZHJJbmZvPiB7CisgICAgICAgIGF1dG8gZXh0cmFj
dEFycmF5SW5mbyA9IFsmXSAoVmFsdWUqIHZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPEFkZHJJbmZv
PiB7CiAgICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQodmFsdWUpOwogCi0gICAg
ICAgICAgICBPcHRpb25hbDxBZGRySW5mbz4gYWRkciA9IHsgQWRkckluZm8oKSB9OworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxBZGRySW5mbz4gYWRkciA9IHsgQWRkckluZm8oKSB9OwogCiAg
ICAgICAgICAgICBWYWx1ZSogc3VtID0gdmFsdWU7CiAgICAgICAgICAgICBpZiAodmFsdWUtPm9w
Y29kZSgpID09IFpFeHQzMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21h
cFNwZWNpYWwuY3BwCmluZGV4IDdjY2MzYjI2Yjk1M2NhYTU0NWNjOThiOTAyODVjMjhmMWQ3Y2Rh
MDguLjNjZDI0Mjc2ZjM0M2NlMDM5YWE2Nzc5ZGEyMTQ1YmUxZjNhMGJmNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtNzUsOCArNzUs
OCBAQCBSZWdpc3RlclNldCBTdGFja21hcFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdz
KEluc3QmIGluc3QpCiAKIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgKICAg
ICB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywK
LSAgICBJbnN0JiBpbnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGZp
cnN0UmVjb3ZlcmFibGVJbmRleCwKLSAgICBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFy
Z0NhbGxiYWNrPiYgY2FsbGJhY2ssIE9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRo
KQorICAgIEluc3QmIGluc3QsIFJvbGVNb2RlIHJvbGVNb2RlLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXgsCisgICAgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6
OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25h
bERlZkFyZ1dpZHRoKQogewogICAgIFN0YWNrbWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4t
PmFzPFN0YWNrbWFwVmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKaW5kZXggYzhmZjkwZDI2MDY1MzQ0OTdk
ZGE5NGYzZjU3Y2VjZjE0NjNkNDE5My4uZTZjOTJjYmVhYjc1OWRkZWNjNGVjYzE3YjJlNjA4MjNj
NThlMzdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBT
cGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmgKQEAgLTU5LDggKzU5LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIHN1YmNsYXNzZXMgdGhhdCBp
bXBsZW1lbnQgdGhhdC4KICAgICB2b2lkIGZvckVhY2hBcmdJbXBsKAogICAgICAgICB1bnNpZ25l
ZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICAgICAg
QWlyOjpJbnN0JiwgUm9sZU1vZGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxl
SW5kZXgsCi0gICAgICAgIGNvbnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxs
YmFjaz4mLCBPcHRpb25hbDxXaWR0aD4gb3B0aW9uYWxEZWZBcmdXaWR0aCk7CisgICAgICAgIEFp
cjo6SW5zdCYsIFJvbGVNb2RlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJh
YmxlSW5kZXgsCisgICAgICAgIGNvbnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdD
YWxsYmFjaz4mLCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoKTsKIAog
ICAgIGJvb2wgaXNWYWxpZEltcGwoCiAgICAgICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3Ms
IHVuc2lnbmVkIG51bUlnbm9yZWRBaXJBcmdzLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
aWRhdGUuY3BwCmluZGV4IGFmNTBmNTU3MmU0ZWY2NGJiNWM2M2RjZDk2NGU1NzYwYTU3YTRmZDIu
LjRlZTdlYzg4ZmZhYTJmODhhN2JjY2I3Y2I0MzFiYTYwNWNjOWFhMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAg
ICAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWduZWQ+IHZhbHVlSW5CbG9jazsKICAgICAgICAgSGFz
aE1hcDxWYWx1ZSosIEJhc2ljQmxvY2sqPiB2YWx1ZU93bmVyOwogICAgICAgICBIYXNoTWFwPFZh
bHVlKiwgdW5zaWduZWQ+IHZhbHVlSW5kZXg7Ci0gICAgICAgIEhhc2hNYXA8VmFsdWUqLCBWZWN0
b3I8T3B0aW9uYWw8VHlwZT4+PiBleHRyYWN0aW9uczsKKyAgICAgICAgSGFzaE1hcDxWYWx1ZSos
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFR5cGU+Pj4gZXh0cmFjdGlvbnM7CiAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCB0dXBsZSA9IDA7IHR1cGxlIDwgbV9wcm9jZWR1cmUudHVwbGVzKCkuc2l6ZSgp
OyArK3R1cGxlKSB7CiAgICAgICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS50dXBsZXMoKVt0
dXBsZV0uc2l6ZSgpLCAoIkluIHR1cGxlICIsIHR1cGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5jcHAKaW5kZXggY2UxMzcxMjFiZDhjNGUwMjZiOGZjNzA3OGJhZmI4ZWNmODEyMmI4
ZC4uODYwOGQ3ODdlY2MxZTQyMGM1NWUyZTA2YjZmNDA3MzhmODU2OTVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIFZhbHVlKiBWYWx1ZTo6
aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICBpZiAobnVtQ2hp
bGRyZW4oKSAhPSAyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoT3B0aW9uYWw8
T3Bjb2RlPiBpbnZlcnRlZE9wY29kZSA9IEIzOjppbnZlcnRlZENvbXBhcmUob3Bjb2RlKCksIGNo
aWxkKDApLT50eXBlKCkpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRl
ZE9wY29kZSA9IEIzOjppbnZlcnRlZENvbXBhcmUob3Bjb2RlKCksIGNoaWxkKDApLT50eXBlKCkp
KSB7CiAgICAgICAgIEFTU0VSVCgha2luZCgpLmhhc0V4dHJhQml0cygpKTsKICAgICAgICAgcmV0
dXJuIHByb2MuYWRkPFZhbHVlPigqaW52ZXJ0ZWRPcGNvZGUsIHR5cGUoKSwgb3JpZ2luKCksIGNo
aWxkKDApLCBjaGlsZCgxKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRT
dGFja0FuZEdlbmVyYXRlQ29kZS5jcHAKaW5kZXggMjkwYzQ5NGMxNTI0ZjE1MmRlYjg1MzU3ODQ2
ZDFlMmIxYTcxY2MzNi4uZTNjNjM4NDNmMGViZGI3MWNiNmY2YWNkZTI1ZjEzYWEzY2VhOGJjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3Bw
CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpn
ZW5lcmF0ZShDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgaWYgKGRpc2Fzc2VtYmxlcikKICAg
ICAgICAgICAgIGRpc2Fzc2VtYmxlci0+c3RhcnRCbG9jayhibG9jaywgKm1faml0KTsKIAotICAg
ICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGVudHJ5cG9pbnRJbmRleCA9IG1fY29kZS5lbnRy
eXBvaW50SW5kZXgoYmxvY2spKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBlbnRyeXBvaW50SW5kZXggPSBtX2NvZGUuZW50cnlwb2ludEluZGV4KGJsb2NrKSkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fY29kZS5pc0VudHJ5cG9pbnQoYmxvY2spKTsKICAgICAgICAgICAg
IGlmIChkaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICAgICAgZGlzYXNzZW1ibGVyLT5zdGFydEVu
dHJ5cG9pbnQoKm1faml0KTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3Bw
CmluZGV4IDAyMmQyOTk5MzUxMWQxMmNkYTM5ZGQ5ZDVhOGEyNTRhNjA0OWM3ZTUuLmZiMjE1N2Y5
NWY4ZjFkNDZlYjcwOWE2NWU5ZWI3NDJjNzA3M2YzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNC
eUdyYXBoQ29sb3JpbmcuY3BwCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBJR05PUkVfR0NDX1dBUk5J
TkdTX0VORAogICAgICAgICBtX3dvcmtsaXN0TW92ZXMuc3RhcnRBZGRpbmdMb3dQcmlvcml0eU1v
dmVzKCk7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKICAgICAg
ICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAgICAgICAgIGlmIChP
cHRpb25hbDx1bnNpZ25lZD4gZGVmQXJnSW5kZXggPSBpbnN0LnNob3VsZFRyeUFsaWFzaW5nRGVm
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZGVmQXJn
SW5kZXggPSBpbnN0LnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgQXJnIG9wMSA9IGluc3QuYXJnc1sqZGVmQXJnSW5kZXggLSAyXTsKICAgICAgICAgICAgICAg
ICAgICAgQXJnIG9wMiA9IGluc3QuYXJnc1sqZGVmQXJnSW5kZXggLSAxXTsKICAgICAgICAgICAg
ICAgICAgICAgQXJnIGRlc3QgPSBpbnN0LmFyZ3NbKmRlZkFyZ0luZGV4XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IDVmMGEzYTQ5ZDRhYmUzMzlkNzc5OTMyMWVlZDNl
YjhkNzczMDJhYzUuLjRlNjg3MTRmNGEyYWEyMmUxOTQwZjEwYWJmYzJkMGUxZjVmYzFkOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNTg2LDcgKzU4Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9w
dGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgT3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1
bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTEx
ODIsNyArMTE4Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkQWRkckZvcm0oSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3Rk
OjpudWxsb3B0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRBZGRyRm9ybShJbnQgb2Zmc2V0LCBz
dGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAg
IGlmIChpc1g4NigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjA4LDcgKzEyMDgs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFt
ZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZElu
ZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRo
ID0gc3RkOjpudWxsb3B0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbmRleEZvcm0odW5zaWdu
ZWQgc2NhbGUsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUoc2NhbGUsIHdpZHRoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1YmxpYzoK
ICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIHdpZHRoIHRoZW4gdGhpcyBvcHRpbWlzdGljYWxs
eSBhc3N1bWVzIHRoYXQgeW91J3JlIHVzaW5nIHRoZSByaWdodCB3aWR0aC4gQnV0CiAgICAgLy8g
dGhlIHdpZHRoIGlzIHJlbGV2YW50IHRvIHZhbGlkaXR5LCBzbyBwYXNzaW5nIGEgbnVsbCB3aWR0
aCBpcyBvbmx5IHVzZWZ1bCBmb3IgYXNzZXJ0aW9ucy4gRG9uJ3QKICAgICAvLyBwYXNzIG51bGwg
d2lkdGhzIHdoZW4gY2FzY2FkaW5nIHRocm91Z2ggQXJncyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc2Vs
ZWN0b3IhCi0gICAgYm9vbCBpc1ZhbGlkRm9ybShPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6
Om51bGxvcHQpIGNvbnN0CisgICAgYm9vbCBpc1ZhbGlkRm9ybShzdGQ6Om9wdGlvbmFsPFdpZHRo
PiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgSW52YWxpZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwCmluZGV4IGMwNGYwOTVjZGQ2MzdhY2UzNjYyN2IyZTQxOGE4YmI0NDU2Njgz
NjQuLmFjY2FlMmRhMjlmOTc4ZGM2ZTMzMTFjOTYzNjA3Mjk0YTM5MTk5MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wg
Q29kZTo6aXNFbnRyeXBvaW50KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+IENvZGU6OmVudHJ5cG9pbnRJbmRleChCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IENvZGU6OmVudHJ5
cG9pbnRJbmRleChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChtX2VudHJ5cG9pbnRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
ZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmgKaW5kZXggZDhlZTQxMjdiNTczMzU0NGIyYTE0MjE5ZjdhZjFmYzk2ODcxZDU5NC4uM2Vj
N2M1N2RhNjQzNDVjNDNhNmIyNzk5NzE4ODE2MTMxZDJmNDQ4NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgRnJlcXVlbnRlZEJsb2NrJiBlbnRyeXBvaW50KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2VudHJ5cG9pbnRzW2luZGV4XTsgfQogICAgIGJvb2wgaXNFbnRyeXBvaW50KEJhc2lj
QmxvY2sqKSBjb25zdDsKICAgICAvLyBOb3RlOiBJdCBpcyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhp
cyBmdW5jdGlvbiBhZnRlciBMb3dlckVudHJ5U3dpdGNoLgotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBlbnRyeXBvaW50SW5kZXgoQmFzaWNCbG9jayopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGVudHJ5cG9pbnRJbmRleChCYXNpY0Jsb2NrKikgY29uc3Q7CiAKICAgICAvLyBO
b3RlOiBXZSBhbGxvdyB0aGlzIHRvIGJlIGNhbGxlZCBldmVuIGJlZm9yZSB3ZSBzZXQgbV9lbnRy
eXBvaW50cyBqdXN0IGZvciBjb252ZW5pZW5jZSB0byB1c2VycyBvZiB0aGlzIEFQSS4KICAgICAv
LyBIb3dldmVyLCBpZiB5b3UgY2FsbCB0aGlzIGJlZm9yZSBzZXROdW1FbnRyeXBvaW50cywgc2V0
TnVtRW50cnlwb2ludHMgd2lsbCBvdmVyd3JpdGUgdGhpcyB2YWx1ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCmluZGV4IDUyYmVhZGFiZDQwNDc0NmE4N2M5NzMxYTdk
ZTc4NTVjNWNmZjQyOWYuLjJmZTI3ZTBlMmZlNDJkNTJhY2NhNTI1ZDI3MzNjMTlmMTE5MDEwYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaApAQCAtODksNyArODks
NyBAQCBzdHJ1Y3QgUGF0Y2hDdXN0b20gewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNw
ZWNpYWwoKS0+YWRtaXRzRXh0ZW5kZWRPZmZzZXRBZGRyKGluc3QsIGFyZ0luZGV4KTsKICAgICB9
CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKElu
c3QmIGluc3QpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFs
aWFzaW5nRGVmKEluc3QmIGluc3QpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBd
LnNwZWNpYWwoKS0+c2hvdWxkVHJ5QWxpYXNpbmdEZWYoaW5zdCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5k
ZXggOTc1MGFkZjdmNDkwZjA5MTc3NTkzMWU1MTMxZGE0NzNhZjA2ZjhjOC4uNjI1NjEzZTM1OTA0
ZjkzOWQ0NTNkNzY0NjI2NWUwYTE4OTdlNzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0xMjEsMTEgKzEyMSwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3Qu
YXJnc1sxXSkpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMoU2xvdENvbnN0KGluc3QuYXJnc1sx
XS5zdGFja1Nsb3QoKSwgaW5zdC5hcmdzWzBdLnZhbHVlKCkpKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzBdKSAmJiBpbnN0LmFyZ3NbMV0uaXNSZWcoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3Rh
dGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdz
WzBdKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhSZWdDb25zdChpbnN0LmFyZ3NbMV0ucmVn
KCksICpjb25zdGFudCkpOwogICAgICAgICAgICAgICAgIGZ1bmMoUmVnU2xvdChpbnN0LmFyZ3Nb
MV0ucmVnKCksIGluc3QuYXJnc1swXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChpbnN0LmFyZ3NbMF0uaXNSZWcoKSAmJiBpc1NwaWxsU2xv
dChpbnN0LmFyZ3NbMV0pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+
IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAg
ICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25z
dGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBmdW5jKFNsb3RDb25z
dChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksICpjb25zdGFudCkpOwogICAgICAgICAgICAgICAg
IGZ1bmMoUmVnU2xvdChpbnN0LmFyZ3NbMF0ucmVnKCksIGluc3QuYXJnc1sxXS5zdGFja1Nsb3Qo
KSwgUmVnU2xvdDo6QWxsQml0cykpOwogICAgICAgICAgICAgfQpAQCAtMTM4LDExICsxMzgsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFy
Z3NbMV0pKQogICAgICAgICAgICAgICAgICAgICBmdW5jKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0u
c3RhY2tTbG90KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihpbnN0LmFyZ3NbMF0udmFsdWUoKSkp
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzBdKSAmJiBp
bnN0LmFyZ3NbMV0uaXNSZWcoKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2
NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAg
ICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUu
Y29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhSZWdD
b25zdChpbnN0LmFyZ3NbMV0ucmVnKCksIHN0YXRpY19jYXN0PHVpbnQzMl90PigqY29uc3RhbnQp
KSk7CiAgICAgICAgICAgICAgICAgZnVuYyhSZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5z
dC5hcmdzWzBdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpaRXh0MzIpKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoaW5zdC5hcmdzWzBdLmlzUmVnKCkgJiYgaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFd
KSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1f
c3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5h
cmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgZnVuYyhTbG90Q29uc3QoaW5zdC5hcmdzWzFd
LnN0YWNrU2xvdCgpLCBzdGF0aWNfY2FzdDxpbnQzMl90PigqY29uc3RhbnQpKSk7CiAgICAgICAg
ICAgICAgICAgZnVuYyhSZWdTbG90KGluc3QuYXJnc1swXS5yZWcoKSwgaW5zdC5hcmdzWzFdLnN0
YWNrU2xvdCgpLCBSZWdTbG90OjpNYXRjaDMyKSk7CiAgICAgICAgICAgICB9CkBAIC01MDQsNyAr
NTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAKLSAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gY29uc3RhbnRGb3IoY29uc3QgQXJnJiBhcmcp
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gY29uc3RhbnRGb3IoY29uc3QgQXJnJiBh
cmcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChhcmcuaXNSZWcoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChjb25zdCBSZWdDb25zdCogYWxpYXMgPSBnZXRSZWdDb25zdChhcmcucmVnKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRleCBh
OGFhNmMxMWJkZjEyZjNhNjI4MmQ0ODM2ODA2YzI0MmNmNjkxNWE5Li40ZjVjNzQwODAwYmY2MWRl
NzI1NTg0NTUwMDNkYzA3ODk5NWU2MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHN0YXRpYyB2b2lkIGdlbmVy
YXRlV2l0aEFscmVhZHlBbGxvY2F0ZWRSZWdpc3RlcnMoQ29kZSYgY29kZSwgQ0NhbGxIZWxwZXJz
JiBqaXQpCiAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBkaXNhc3NlbWJs
ZXItPnN0YXJ0QmxvY2soYmxvY2ssIGppdCk7IAogCi0gICAgICAgIGlmIChPcHRpb25hbDx1bnNp
Z25lZD4gZW50cnlwb2ludEluZGV4ID0gY29kZS5lbnRyeXBvaW50SW5kZXgoYmxvY2spKSB7Cisg
ICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBlbnRyeXBvaW50SW5kZXggPSBjb2Rl
LmVudHJ5cG9pbnRJbmRleChibG9jaykpIHsKICAgICAgICAgICAgIEFTU0VSVChjb2RlLmlzRW50
cnlwb2ludChibG9jaykpOwogCiAgICAgICAgICAgICBpZiAoZGlzYXNzZW1ibGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAppbmRleCBkY2NhZWUyYjNjODQ2NjJmMzJhNjAy
OGI1OGQ0NmYyMTcxNTQyZWFlLi5lODI1ODJiYjVlZDAyMjJmZjc0NDNlZWEyNjIzODM0MTU5OGE1
NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaApAQCAtMjAwLDcgKzIw
MCw3IEBAIHN0cnVjdCBJbnN0IHsKICAgICAvLyBGb3IgZXhhbXBsZSwKICAgICAvLyAgICAgQWRk
IFRtcDEsIFRtcDIsIFRtcDMKICAgICAvLyByZXR1cm5zIDIgaWYgMCBhbmQgMSBiZW5lZml0IGZy
b20gYWxpYXNpbmcgdG8gVG1wMy4KLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxp
YXNpbmdEZWYoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2lu
Z0RlZigpOwogICAgIAogICAgIC8vIFRoaXMgY29tcHV0ZXMgYSBoYXNoIGZvciBjb21wYXJpbmcg
dGhpcyB0byBKU0FpcidzIEluc3QuCiAgICAgdW5zaWduZWQganNIYXNoKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKaW5kZXggZGFhODk1
MzA0YTRjYzgzMmI3MWU0YzQ3YmUxYzNhNTllMGUyMzM5ZC4uODM1YjEwNTRjMWFkZjI3YzZmMDFi
NjQ0ZmZlNzQ5YzRiNzUzZmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaApAQCAtMTE2LDcgKzExNiw3IEBAIGlubGluZSBib29sIEluc3Q6OmFk
bWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihBcmcmIGFyZykKICAgICByZXR1cm4gYWRtaXRzRXh0ZW5k
ZWRPZmZzZXRBZGRyKCZhcmcgLSAmYXJnc1swXSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDx1bnNp
Z25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkKIHsKICAgICBpZiAoIWlzWDg2
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJTcGVjaWFsLmNwcAppbmRleCA5NTVlOGE5NzAxNTJjN2IwMjYzNmQzOGFjMTE5
MDBkNWUzNzQyNTlkLi5lODI1NzY3YjA0ZDhhYjNiOWNlYzc1YWY0ZTkxOTgwYTg5MjkwNTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgQ1N0cmluZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRv
Q1N0cmluZygpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxp
YXNpbmdEZWYoSW5zdCYpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTcGVjaWFsOjpzaG91bGRU
cnlBbGlhc2luZ0RlZihJbnN0JikKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAppbmRleCAwNTZmZDUxODk3YzVh
NWJmNzRiMjZhZmJmNDk5NjI5YThlOTZhMzFhLi5hNmFjM2M2YWFjNGRjZWU2N2JlOGYwMGM0MzY0
NDYwMjY4Yjk2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwu
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoSW5z
dCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWRtaXRzU3RhY2soSW5zdCYsIHVuc2lnbmVkIGFy
Z0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJ
bnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHVuc2ln
bmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CiAKICAgICAvLyBUaGlz
IGdldHMgY2FsbGVkIG9uIGZvciBlYWNoIEluc3QgdGhhdCB1c2VzIHRoaXMgU3BlY2lhbC4gTm90
ZSB0aGF0IHRoZXJlIGlzIG5vIHdheSB0bwogICAgIC8vIGd1YXJhbnRlZSB0aGF0IGEgU3BlY2lh
bCBnZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJbnN0LCBiZWNhdXNlIEFpciBtaWdodCB0YWlsZHVw
IGxhdGUuIFNvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBlOGU3NWY2ZDE2OTQ4ZmYzNTgzODA2OWQ5NTI5NDEy
YWExYTRmZjNlLi5iYTZiOTk5MzcwZWYyOWU4ZjkyOGU0YjgwZDBiM2M1M2EzNWQ1NTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAg
dW5zaWduZWQgbGluZUNvdW50ID0gMDsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSAwOwogICAg
IHVuc2lnbmVkIG9mZnNldE9mTGFzdE5ld2xpbmUgPSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBvZmZzZXRPZlNlY29uZFRvTGFzdE5ld2xpbmU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gb2Zmc2V0T2ZTZWNvbmRUb0xhc3ROZXdsaW5lOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2aWV3Lmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPT0g
J1xuJykgewogICAgICAgICAgICAgaWYgKGxpbmVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBjNWZmNzgyMjYyZTcxODViODc1MDQ4
NzBkNGI0YzliYzQ5MmE0YWE0Li4xMmE5N2EyZDI1ZDVlYmQxZTk5YTVlNWFjMjljMjI4OTNiYTgz
OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgICAgICAvLyBHZXQgdGhlIGFjY2Vz
c29yOyBpZiB0aGVyZSBhaW4ndCBvbmUgdGhlbiB0aGUgcmVzdWx0IGlzIGpzVW5kZWZpbmVkKCku
CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgR2V0dGVyU2V0dGVyIGFsd2F5cyBoYXMgY2VsbHMg
Zm9yIGJvdGguIElmIGl0IGlzIG5vdCBzZXQgKGxpa2UsIGdldHRlciBleGl0cywgYnV0IHNldHRl
ciBpcyBub3Qgc2V0KSwgTnVsbHtHZXR0ZXIsU2V0dGVyfUZ1bmN0aW9uIGlzIHN0b3JlZC4KLSAg
ICAgICAgICAgIE9wdGlvbmFsPENDYWxsSGVscGVyczo6SnVtcD4gcmV0dXJuVW5kZWZpbmVkOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxDQ2FsbEhlbHBlcnM6Okp1bXA+IHJldHVyblVuZGVm
aW5lZDsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gU2V0dGVyKSB7CiAgICAgICAgICAgICAg
ICAgaml0LmxvYWRQdHIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhsb2FkZWRWYWx1ZUdQUiwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDE1YTY2YTk0NzhkZDhjNjBhMTIyNmY5ZjllY2U1NzAz
ZWYyMjdkOWEuLmNmOTU2MjZjNmIwNmUxOTc1NmNlZTNiZmM2NjkxYTQ1NjMwZDE4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmF0KG1fZW50ZXJQb2ludCk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8R2VuZXJhdG9yRnJhbWVEYXRhPiBnZW5lcmF0b3JGcmFtZURhdGEoKSBjb25zdAor
ICAgIHN0ZDo6b3B0aW9uYWw8R2VuZXJhdG9yRnJhbWVEYXRhPiBnZW5lcmF0b3JGcmFtZURhdGEo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVEYXRhOwogICAg
IH0KQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmIChtX3N0b3JhZ2Vz
LnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsg
MSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tp
bmRleF0pCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0
b3JhZ2VzW2luZGV4XSkKICAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKIAogICAgICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CkBAIC0x
NjksMTEgKzE2OSwxMSBAQCBwcml2YXRlOgogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fYnl0
ZWNvZGVHZW5lcmF0b3I7CiAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBtX2VudGVyUG9p
bnQ7Ci0gICAgT3B0aW9uYWw8R2VuZXJhdG9yRnJhbWVEYXRhPiBtX2dlbmVyYXRvckZyYW1lRGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlbmVyYXRvckZyYW1lRGF0YT4gbV9nZW5lcmF0b3JGcmFt
ZURhdGE7CiAgICAgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIG1fY29kZUJsb2NrOwogICAg
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyJiBtX2luc3RydWN0aW9uczsKICAgICBCeXRlY29kZUdy
YXBoIG1fZ3JhcGg7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOwor
ICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOwogICAgIFlpZWxk
cyBtX3lpZWxkczsKICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZTsKICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaAppbmRleCAwZjU5
NWQ0MTg5Zjk1NDA3NTVhNzNhMDA4NGU3MTc4OWVhYTkwMzdmLi5jOGQ0YTUxNjE4Yzc4Yzg0YTMz
YjFhYTNiZmMyOWFhZjQ5ODJhOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgotICAgIHZvaWQgZHVtcChDb2RlQmxv
Y2tUeXBlKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMs
IE9wdGlvbmFsPFZlY3RvcjxPcGVyYW5kczxTcGVjdWxhdGVkVHlwZT4+PiBzcGVjdWxhdGlvbkF0
SGVhZCwgUHJpbnRTdHJlYW0mIHByaW50ZXIgPSBXVEY6OmRhdGFGaWxlKCkpCisgICAgdm9pZCBk
dW1wKENvZGVCbG9ja1R5cGUqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGlu
c3RydWN0aW9ucywgc3RkOjpvcHRpb25hbDxWZWN0b3I8T3BlcmFuZHM8U3BlY3VsYXRlZFR5cGU+
Pj4gc3BlY3VsYXRpb25BdEhlYWQsIFByaW50U3RyZWFtJiBwcmludGVyID0gV1RGOjpkYXRhRmls
ZSgpKQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrVHlw
ZT46OmR1bXBHcmFwaChjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgKnRoaXMsIHNwZWN1bGF0aW9u
QXRIZWFkLCBwcmludGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggMzM5
Y2FhOTRhMzQzNDk3YzI3ZTJkOTczM2NlZDZiNzRmOGMwNGY1Ny4uNTQ2ODE0MjgyYjFjMDVjZjJi
M2ViNmZmNmRlNmI0MjY0MzcxMDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtMTE2
LDcgKzExNiw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkoVk0mIHZtKQogICAgIG1fYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6RmllbGQ6OlN0YXRlKSkpOwogfQogCi1PcHRpb25hbDxCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAorc3RkOjpvcHRpb25hbDxCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIGlmICghaWRlbnQuaXNQcml2YXRlTmFtZSgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggNzg1
N2RiYTAxMTU4YTc2ZjdlMDE2YTIzNzkzNTA1ZDZkYTViMzBjMy4uY2Q3ZTE1MzBhYWFlYzUzOWI5
MGU4ODA4ZmQ0YjcyODBlNDQ2YTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yMDUsNyAr
MjA1LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICB9OwogCi0gICAgT3B0
aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1l
KSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShKU0NfREVDTEFSRV9CWVRF
Q09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMWNmOTMyYjY1ZjU5NWUxYmUwMTVlOGJi
OWY4NmI4OTNlNWUxMjc4My4uYTg1NDQ1MmI5ZTgxOTRlZWFiYjNkYzNjNDMzMWFiOWNhMjQzMWI3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTIwNTgsNyArMjA1OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgaW50CiAgICAgbGluZSArPSBv
d25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCk7CiB9CiAKLWJvb2wgQ29kZUJsb2NrOjpoYXNP
cERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCBPcHRpb25hbDx1bnNpZ25lZD4g
Y29sdW1uKQorYm9vbCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2ln
bmVkIGxpbmUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbikKIHsKICAgICBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25TdHJlYW0gPSBpbnN0cnVjdGlvbnMoKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogaW5zdHJ1Y3Rpb25TdHJlYW0pIHsKQEAgLTM0NDUsMzMg
KzM0NDUsMzMgQEAgdm9pZCBDb2RlQmxvY2s6OnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5p
cXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJiBtYXApCiAgICAgZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fcGNUb0NvZGVPcmlnaW5NYXAgPSBXVEZNb3ZlKG1hcCk7CiB9CiAKLU9wdGlvbmFsPENv
ZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBjKQorc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2b2lkKiBwYykKIHsKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAgIGlmIChqaXREYXRhLT5tX3BjVG9D
b2RlT3JpZ2luTWFwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+
IGNvZGVPcmlnaW4gPSBqaXREYXRhLT5tX3BjVG9Db2RlT3JpZ2luTWFwLT5maW5kUEMocGMpKQor
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4g
PSBqaXREYXRhLT5tX3BjVG9Db2RlT3JpZ2luTWFwLT5maW5kUEMocGMpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Zm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykg
ewogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29udGFpbnNQQyhwYykpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihzdHViSW5mby0+Y29kZU9y
aWdpbik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmln
aW4+KHN0dWJJbmZvLT5jb2RlT3JpZ2luKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChPcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2Rl
LT5maW5kUEModGhpcywgcGMpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGNv
ZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYykpCiAgICAgICAgIHJldHVybiBj
b2RlT3JpZ2luOwogCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCi1PcHRpb25hbDxCeXRlY29kZUluZGV4PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5k
ZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpCitzdGQ6Om9w
dGlvbmFsPEJ5dGVjb2RlSW5kZXg+IENvZGVCbG9jazo6Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0
ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCkKIHsKLSAgICBPcHRpb25hbDxCeXRl
Y29kZUluZGV4PiBieXRlY29kZUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRl
eD4gYnl0ZWNvZGVJbmRleDsKICAgICBKSVRUeXBlIGppdFR5cGUgPSB0aGlzLT5qaXRUeXBlKCk7
CiAgICAgaWYgKGppdFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBl
ID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKQogICAgICAgICBieXRlY29kZUluZGV4ID0gY2FsbFNp
dGVJbmRleC5ieXRlY29kZUluZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggNzczMjlmM2E0MWUwNGExYzcyZGI2MmMxZDU4ZjRmNWMzNjM5NzI1
MS4uYTM2OWUxMTAwOTEwYTc2YjNlMmRjYjg4Yzc5MjUwNmZjMDA3NGU1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjU2LDcgKzI1Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJ
bmRleCwgaW50JiBkaXZvdCwKICAgICAgICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZz
ZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0
ZUluZGV4KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXhG
cm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAogICAgIC8vIEJlY2F1c2Ugd2UgbWln
aHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBk
YXRhIChtX2ppdERhdGEpLAogICAgIC8vIHlvdSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhl
IGxpZmV0aW1lIG9mIHdoZW4geW91IHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rp
b24uCkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgc2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiYmKTsKLSAg
ICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMpOworICAgIHN0ZDo6b3B0aW9u
YWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKIAogICAgIHZvaWQgc2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CiAgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJz
KFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiYpOwpAQCAtNzk0LDcgKzc5NCw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICBpbnQgc3RhY2tQb2ludGVyT2Zm
c2V0KCk7CiAKLSAgICBib29sIGhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxp
bmUsIE9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1bW4pOworICAgIGJvb2wgaGFzT3BEZWJ1Z0Zvckxp
bmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY29sdW1u
KTsKIAogICAgIGJvb2wgaGFzRGVidWdnZXJSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVi
dWdnZXJSZXF1ZXN0czsgfQogICAgIHZvaWQqIGRlYnVnZ2VyUmVxdWVzdHNBZGRyZXNzKCkgeyBy
ZXR1cm4gJm1fZGVidWdnZXJSZXF1ZXN0czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVm
YzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNmZjdjZjM4MzYuLjBjM2M0MTIxZDU4NjYyN2VhOTUw
NDFiZjcxNzBkYzdjOWQ1MGFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBv
aW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4g
Y3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCi0gICAgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgc3RkOjpvcHRpb25hbDxET01BdHRy
aWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIEdldHRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg3M2U3YzM1ODg4ZWIzYjEyMWRiZmQ3YWYw
NmUyY2FiZWI3ZDMzYjIuLmE4NDg4NDU4ZjRhYmQyYWFkMmViYWY2MmIyOGEzM2M0MTg2MDQwODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lIGlzIGRlc3Ryb3llZC4KICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvOyB9CiAgICAgSlNPYmplY3QqIGN1
c3RvbVNsb3RCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21TbG90QmFzZS5nZXQoKTsgfQot
ICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9tQXR0cmlidXRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1
dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2RvbUF0dHJpYnV0
ZTsgfQogCiAgICAgYm9vbCBoYXNBbHRlcm5hdGVCYXNlKCkgY29uc3QgZmluYWw7CiAgICAgSlNP
YmplY3QqIGFsdGVybmF0ZUJhc2UoKSBjb25zdCBmaW5hbDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAg
ICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxT
ZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCi0gICAg
ICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3Rh
dGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CisgICAgICAgIEpTT2JqZWN0
KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwg
U3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAg
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmLCBib29sIHZpYVByb3h5ID0gZmFsc2UsCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2N1c3RvbVNsb3RCYXNlOwogICAgIENh
bGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm8geyBudWxscHRyIH07CiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IG1fY3VzdG9tQWNjZXNzb3I7Ci0gICAgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gbV9kb21BdHRyaWJ1dGU7CisgICAgc3RkOjpvcHRpb25hbDxE
T01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKaW5kZXggMTlhMzU1NmNkZTFhNDI3Nzgx
YzEzZTA2ZTBjNTUyNWVhNmRmNGVlOS4uZDA0NDA1ZDlkNDJmZDFmNDhjNGI4OWQ1ZjM2ODI2MzYx
YWZkZGZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCkBAIC01MTUsNyArNTE1LDcgQEAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb25Gb3JTZWxmRXF1aXZhbGVu
Y2UoCiB9CiAKIC8vIEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJlIGNhbid0IGJlIG51
bGwuCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJl
Q2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3Vy
cmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNh
Y2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKIHsKICAgICBBU1NFUlQoc3RydWN0
dXJlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC01NzcsMTggKzU3Nywx
OCBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJl
Q2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9w
dGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0
YXJnZXQpCitzdGQ6Om9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFy
ZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJh
c2UsIEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAgICAgcmV0dXJuIHByZXBhcmVDaGFpbkZvckNhY2hp
bmcoZ2xvYmFsT2JqZWN0LCBiYXNlLCBiYXNlLT5zdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgp
KSwgdGFyZ2V0KTsKIH0KIAotT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBw
cmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorc3RkOjpvcHRpb25hbDxQcm90b3R5
cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6IHNs
b3Quc2xvdEJhc2UoKTsKICAgICByZXR1cm4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxP
YmplY3QsIGJhc2UsIHRhcmdldCk7CiB9CiAKLU9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGlu
Z1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCitzdGQ6Om9w
dGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUs
IEpTT2JqZWN0KiB0YXJnZXQpCiB7CiAgICAgcmV0dXJuIHByZXBhcmVDaGFpbkZvckNhY2hpbmco
Z2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNlU3RydWN0dXJlLCB0YXJnZXQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQuaAppbmRleCA1ZDkwNTQ1OTc0ZjFlZDM3ZjI4Y2FmM2EyYWViMzQ2YTQ5MTBh
MjgzLi4zZDIzM2ZhZDEzMzkyZGUwMmJmM2IzYzk3ZmQwNjQ3ZjBkMWFhZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQuaApAQCAtMTk1LDggKzE5NSw4IEBAIHN0cnVjdCBQcm90b3R5cGVDaGFpbkNh
Y2hpbmdTdGF0dXMgewogICAgIGJvb2wgZmxhdHRlbmVkRGljdGlvbmFyeTsKIH07CiAKLU9wdGlv
bmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1PcHRp
b25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmco
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOwotT3B0aW9u
YWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKK3N0ZDo6
b3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNo
aW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsK
K3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5G
b3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0
KTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hh
aW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCog
dGFyZ2V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCA4NTI3OTQwYmYwNTQ2N2EzZDFk
YzY0Y2I5MTMyMTM4NTYxYWQ4YTA4Li5kODExZDkxM2M4ZmUxMmRlNmM0NzkzZDQ5M2NmNjdiMmVk
MTUzOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5
VHlwZUZyb21TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHJldHVybiBOb3RU
eXBlZEFycmF5OwogfQogCi1PcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9t
SlNUeXBlKEpTVHlwZSB0eXBlKQorc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3Vs
YXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgU3RyaW5nVHlwZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgKaW5kZXggZDU5MDZmNTc5ZTFiZWMzZmQ0YjEzYjM2MTY3ODdhNWM3ZWMx
YWFlOC4uMGViZjlhY2I0N2Y5OTcyMDExZjg2MzBiMzA1YmY1NTU3NTlkNGRiMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTUwOCw3
ICs1MDgsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhbHVlKTsKIC8vIElmIGl0J3MgYW4gYW55SW50KCksIGl0J2xsIHJldHVybiBz
cGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIEludDUyIGxhdHRpY2UuCiAvLyBPdGhlcndpc2UsIGl0
J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBKU1ZhbHVlIGxhdHRpY2UuCiBKU19FWFBPUlRfUFJJ
VkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3YXJlU3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1
ZSk7Ci1PcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlw
ZSk7CitzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUo
SlNUeXBlKTsKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUo
VHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KIFR5cGVkQXJy
YXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDgyNmJkNTY5YmI0MzlkMzM2MWZhZDIxZWEwNDhl
MGJmYzg2YWE0NzguLmNmOWE3NGMyZGQ1M2I0YTczM2M3MWEzODc5ZDFhMTFjZGYzOGQwZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQorVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUs
IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZmly
c3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgpIC0gcGFyZW50U291cmNlLmZpcnN0TGluZSgp
Lm9uZUJhc2VkSW50KCkpCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJp
Y3RDb250ZXh0KCkpCkBAIC0xODEsNyArMTgxLDcgQEAgU291cmNlQ29kZSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bGlua2VkU291cmNlQ29kZShjb25zdCBTb3VyY2VDb2RlJiBwYXNzZWQK
ICAgICByZXR1cm4gU291cmNlQ29kZShwYXJlbnRTb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4p
OwogfQogCi1GdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjps
aW5rKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBwYXNzZWRQYXJlbnRTb3VyY2UsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5l
TnVtYmVyLCBJbnRyaW5zaWMgaW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bikKK0Z1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6Omxpbmso
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHBhc3NlZFBhcmVudFNvdXJjZSwgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGlu
ZU51bWJlciwgSW50cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pCiB7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBsaW5rZWRTb3VyY2VDb2RlKHBhc3NlZFBh
cmVudFNvdXJjZSk7CiAgICAgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5mbyBvdmVycmlk
ZUluZm87CkBAIC0yMDEsNyArMjAxLDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIHQKIAogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAotICAgIEpTT2JqZWN0KiYg
ZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pCisgICAgSlNPYmplY3QqJiBleGNlcHRp
b24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
aW5kZXggZDE2OTJlMTc2ZTEwZTgxYWIwNTlhMmRiZWViMTZjZjc2Mzk3ZDY3YS4uM2Q1NDdlYzRm
Njg2M2EyODhhNWFmYjJmNWQyZmEyMTAyZDIxNDg1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwg
Ym9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1l
RW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZh
bHNlKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLmhlYXApKQogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUs
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZN
b3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVj
dG9yKTsKQEAgLTEyMywxMCArMTIzLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4
Y2VwdGlvbiwgCi0gICAgICAgIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAgICAgIGludCBv
dmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKIAogICAgIFNvdXJjZUNvZGUgbGlua2VkU291cmNlQ29k
ZShjb25zdCBTb3VyY2VDb2RlJikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rp
b25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9wdGlvbmFsPGludD4gb3ZlcnJp
ZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2
ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIHN0ZDo6b3B0aW9u
YWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBzdGQ6Om51bGxvcHQsIEludHJpbnNpYyA9IE5v
SW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKTsKIAogICAg
IHZvaWQgY2xlYXJDb2RlKFZNJiB2bSkKICAgICB7CkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYs
IFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVu
bGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUs
IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+LCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25t
ZW50PiwgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFz
c0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1l
bnQ+LCBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBj
b25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDVkYTY1Mjc4ZDdmMGY3MGNhMmE0MjIwNjk4M2Jl
NWM1MzJjMTYyYmMuLjJkNjlmNjk5MjEzNjkwMWRhZDdlODYyNzFmMDAyMjVhOWNkMDAxNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0zMDExLDcgKzMwMTEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25t
ZW50LAogICAgIG1fVERaU3RhY2suYXBwZW5kKFREWlN0YWNrRW50cnkgeyBXVEZNb3ZlKG1hcCks
IG51bGxwdHIgfSk7CiB9CiAKLU9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKQorc3RkOjpvcHRp
b25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxh
YmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCkKIHsKICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHJl
c3VsdDsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKj4gZXhjbHVkZWROYW1lczsKQEAg
LTMyNjYsNyArMzI2Niw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCoKICAgICB9CiAKICAgICBh
dXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVzVW5kZXJURFooKTsKLSAgICBPcHRp
b25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50
ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisgICAgc3RkOjpvcHRpb25hbDxQ
cml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0
QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZTsKICAgICBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7CiAKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKICAgICB9CiB9CiAK
LXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTdHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVy
SUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3RlciwgT3B0aW9u
YWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hT
dHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IGVudW1lcmF0b3JSZWdpc3Rlciwgc3RkOjpvcHRpb25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxl
KQogewogICAgIGlmICghbG9jYWxSZWdpc3RlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGNhZmE1NzllMzdjZjA3ZTJhYWU4ODIwYTQ3MzQ3ZDc2ODcwM2U2OTguLmNiOTY5MzQy
YWRkOGRmNjJjNjU2ZDQwNGI4NWQ0ZmE3ZjMzOTc4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMxMCw3
ICszMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgSW5JbnN0ID0gR2V0SW5z
dDsKICAgICAgICAgdXNpbmcgSGFzT3duUHJvcGVydHlKdW1wSW5zdCA9IHN0ZDo6dHVwbGU8dW5z
aWduZWQsIHVuc2lnbmVkPjsKIAotICAgICAgICBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0
ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogcHJvcGVydHlSZWdpc3RlciwgUmVnaXN0ZXJJRCogZW51bWVyYXRvclJlZ2lzdGVyLCBPcHRp
b25hbDxWYXJpYWJsZT4gYmFzZVZhcmlhYmxlLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9m
ZnNldCkKKyAgICAgICAgU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQqIGxvY2FsUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIGluZGV4UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIGVudW1lcmF0b3JSZWdpc3Rlciwgc3RkOjpvcHRpb25hbDxWYXJp
YWJsZT4gYmFzZVZhcmlhYmxlLCB1bnNpZ25lZCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAg
ICAgICAgICAgIDogRm9ySW5Db250ZXh0KGxvY2FsUmVnaXN0ZXIsIFR5cGU6OlN0cnVjdHVyZUZv
ckluLCBib2R5Qnl0ZWNvZGVTdGFydE9mZnNldCkKICAgICAgICAgICAgICwgbV9pbmRleFJlZ2lz
dGVyKGluZGV4UmVnaXN0ZXIpCiAgICAgICAgICAgICAsIG1fcHJvcGVydHlSZWdpc3Rlcihwcm9w
ZXJ0eVJlZ2lzdGVyKQpAQCAtMzIyLDcgKzMyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhSZWdpc3Rlci5nZXQo
KTsgfQogICAgICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlSZWdpc3Rlci5nZXQoKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbnVtZXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9lbnVtZXJhdG9yUmVnaXN0ZXIuZ2V0KCk7IH0KLSAgICAgICAgY29u
c3QgT3B0aW9uYWw8VmFyaWFibGU+JiBiYXNlVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBtX2Jh
c2VWYXJpYWJsZTsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZhcmlhYmxlPiYgYmFz
ZVZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVmFyaWFibGU7IH0KIAogICAgICAgICB2
b2lkIGFkZEdldEluc3QodW5zaWduZWQgaW5zdEluZGV4LCBpbnQgcHJvcGVydHlSZWdJbmRleCkK
ICAgICAgICAgewpAQCAtMzQ1LDcgKzM0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gbV9pbmRleFJlZ2lzdGVyOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gbV9wcm9wZXJ0eVJlZ2lzdGVyOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9l
bnVtZXJhdG9yUmVnaXN0ZXI7Ci0gICAgICAgIE9wdGlvbmFsPFZhcmlhYmxlPiBtX2Jhc2VWYXJp
YWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWYXJpYWJsZT4gbV9iYXNlVmFyaWFibGU7CiAg
ICAgICAgIFZlY3RvcjxHZXRJbnN0PiBtX2dldEluc3RzOwogICAgICAgICBWZWN0b3I8SW5JbnN0
PiBtX2luSW5zdHM7CiAgICAgICAgIFZlY3RvcjxIYXNPd25Qcm9wZXJ0eUp1bXBJbnN0PiBtX2hh
c093blByb3BlcnR5SnVtcEluc3RzOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Tm9kZUZvclByb3BlcnR5KFJlZ2lzdGVySUQqIGRz
dCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChub2Rl
LT5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgoc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGUpLT52YWx1ZSgp
KSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2RlKS0+dmFsdWUoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKGluZGV4LnZhbHVl
KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZShkc3QsIG5v
ZGUpOwpAQCAtMTA1Niw3ICsxMDU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBwdXNoSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwsIFJlZ2lzdGVySUQqIGlu
ZGV4KTsKICAgICAgICAgdm9pZCBwb3BJbmRleGVkRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2Nh
bCk7Ci0gICAgICAgIHZvaWQgcHVzaFN0cnVjdHVyZUZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9j
YWwsIFJlZ2lzdGVySUQqIGluZGV4LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
ZW51bWVyYXRvciwgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2UpOworICAgICAgICB2b2lkIHB1c2hT
dHJ1Y3R1cmVGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGVudW1lcmF0b3IsIHN0ZDo6b3B0aW9u
YWw8VmFyaWFibGU+IGJhc2UpOwogICAgICAgICB2b2lkIHBvcFN0cnVjdHVyZUZvckluU2NvcGUo
UmVnaXN0ZXJJRCogbG9jYWwpOwogCiAgICAgICAgIExhYmVsU2NvcGUqIGJyZWFrVGFyZ2V0KGNv
bnN0IElkZW50aWZpZXImKTsKQEAgLTEyMDksNyArMTIwOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIG9wdGlvbmFsVmFyaWFibGVzVW5kZXJU
RFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigpOwotICAgICAgICAgICAgT3B0aW9uYWw8UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWls
YWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQcml2
YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZh
aWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hv
dWxkIGJlIHJlb3JnYW5pemVkLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBn
ZXRWYXJpYWJsZXNVbmRlclREWigpOwotICAgICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmly
b25tZW50PiBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNz
TmFtZXMoKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
QEAgLTEyOTcsNyArMTI5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiBtX2NhY2hlZFBhcmVudFREWjsKICAgICAgICAgVmVjdG9yPFREWlN0
YWNrRW50cnk+IG1fVERaU3RhY2s7CiAgICAgICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudmlyb25t
ZW50PiBtX3ByaXZhdGVOYW1lc1N0YWNrOwotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFy
U2NvcGVMZXhpY2FsU2NvcGVTdGFja0luZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbV92YXJTY29wZUxleGljYWxTY29wZVN0YWNrSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFRE
WlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRp
b24sIFREWlJlcXVpcmVtZW50KTsKIAogICAgICAgICBTY29wZU5vZGUqIGNvbnN0IG1fc2NvcGVO
b2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDljNDAzYzJhMGM1N2JlMGZjZDFhZWNlNzI1MjgyODg5Yjc4NWExZDgu
LmFkYWVhYTE0YmFlZWVmZGQ5MTIyOTY2ODQ4ZmEzNTExMDNlODEyOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg1
OSw3ICs4NTksNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3Bl
cnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAgICAgaWYgKGNvbnN0IGF1
dG8qIGlkZW50aWZpZXIgPSBub2RlLm5hbWUoKSkgewogICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZSk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJ
bmRleCgqaWRlbnRpZmllcik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlv
bmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFvcHRpb25h
bEluZGV4KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQobmV3T2Jq
LCAqaWRlbnRpZmllciwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAx
OCw3ICszMDE4LDcgQEAgUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IHRoaXMtPm9wY29kZUlEKCk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbGVzcyB8
fCBvcGNvZGVJRCA9PSBvcF9sZXNzZXEgfHwgb3Bjb2RlSUQgPT0gb3BfZ3JlYXRlciB8fCBvcGNv
ZGVJRCA9PSBvcF9ncmVhdGVyZXEpIHsKLSAgICAgICAgYXV0byBpc1VJbnQzMiA9IFsmXSAoRXhw
cmVzc2lvbk5vZGUqIG5vZGUpIC0+IE9wdGlvbmFsPFVJbnQzMlJlc3VsdD4geworICAgICAgICBh
dXRvIGlzVUludDMyID0gWyZdIChFeHByZXNzaW9uTm9kZSogbm9kZSkgLT4gc3RkOjpvcHRpb25h
bDxVSW50MzJSZXN1bHQ+IHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeU9wTm9kZSgp
ICYmIHN0YXRpY19jYXN0PEJpbmFyeU9wTm9kZSo+KG5vZGUpLT5vcGNvZGVJRCgpID09IG9wX3Vy
c2hpZnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFVJbnQzMlJlc3VsdDo6VUludDMyOwogICAg
ICAgICAgICAgaWYgKG5vZGUtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KG5vZGUpLT5pc0ludGVnZXJOb2RlKCkpIHsKQEAgLTQxOTQsNyArNDE5NCw3IEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsb2NhbCA9IHRoaXMtPnRyeUdldEJv
dW5kTG9jYWwoZ2VuZXJhdG9yKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZW51bWVyYXRvcklu
ZGV4OwogCi0gICAgT3B0aW9uYWw8VmFyaWFibGU+IGJhc2VWYXJpYWJsZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZhcmlhYmxlPiBiYXNlVmFyaWFibGU7CiAgICAgaWYgKG1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpKQogICAgICAgICBiYXNlVmFyaWFibGUgPSBnZW5lcmF0b3IudmFyaWFibGUoc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2V4cHIpLT5pZGVudGlmaWVyKCkpOwogICAgIGVsc2UgaWYg
KG1fZXhwci0+aXNUaGlzTm9kZSgpKSB7CkBAIC00NzM4LDcgKzQ3MzgsNyBAQCB2b2lkIFRyeU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEVuZExhYmVsOwogICAgIFJlZlB0cjxMYWJl
bD4gZmluYWxseUxhYmVsOwogICAgIFJlZlB0cjxMYWJlbD4gZmluYWxseUVuZExhYmVsOwotICAg
IE9wdGlvbmFsPEZpbmFsbHlDb250ZXh0PiBmaW5hbGx5Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZpbmFsbHlDb250ZXh0PiBmaW5hbGx5Q29udGV4dDsKIAogICAgIGlmIChtX2ZpbmFsbHlC
bG9jaykgewogICAgICAgICBmaW5hbGx5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTU1NDIsNyArNTU0Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgewogICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0OwogICAgICAgICBJZGVudGlmaWVyU2V0IGV4
Y2x1ZGVkU2V0OwotICAgICAgICBPcHRpb25hbDxDYWxsQXJndW1lbnRzPiBhcmdzOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPENhbGxBcmd1bWVudHM+IGFyZ3M7CiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mQ29tcHV0ZWRQcm9wZXJ0aWVzID0gMDsKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkFy
Z3VtZW50cyA9IDI7CiAgICAgICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQpIHsKQEAgLTU1
OTUsNyArNTU5NSw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICAgICAg
ICAgIHRlbXAgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAKICAgICAgICAgICAgICAgICBp
ZiAoIXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgICAgICAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRp
b25hbEluZGV4ID0gcGFyc2VJbmRleCh0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggZTI5MWU0ZDkzYmE5NzE5ZDJjMjUxMmVlMzY4MjJmOTAy
OGQ0MjQ0Yy4uNTI1MzE1YmU3MGMzNjE5YjlmZTM1MTkwMzE4NTYxZmQxZGJmNzIyNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0zNjIsNyArMzYy
LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnIKICAgICAvLyBJbnNwZWN0b3IgYnJlYWtwb2lu
dCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFyZSB6ZXJvLWJhc2VkIGJ1dCB0aGUgZXhlY3V0YWJs
ZQogICAgIC8vIGFuZCBDb2RlQmxvY2sgbGluZSBhbmQgY29sdW1uIHZhbHVlcyBhcmUgb25lLWJh
c2VkLgogICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmVOdW1iZXIoKSArIDE7Ci0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBjb2x1bW47CiAgICAgaWYgKGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpCiAgICAgICAgIGNv
bHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkgKyAxOwogCkBAIC00NTcsNyArNDU3LDcg
QEAgYm9vbCBEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2lu
dCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVAKICAgICB9CiAKICAgICBEZWJ1Z2dlclBhcnNlRGF0
YSYgcGFyc2VEYXRhID0gZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCgpLCBz
b3VyY2VQcm92aWRlcik7Ci0gICAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9z
aXRpb24gPSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGlu
ZUNvbHVtbihsaW5lLCBjb2x1bW4pOworICAgIHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+
IHJlc29sdmVkUG9zaXRpb24gPSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExv
Y2F0aW9uRm9yTGluZUNvbHVtbihsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcmVzb2x2ZWRQb3Np
dGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBEZWJ1
Z2dlckNhbGxGcmFtZSYgRGVidWdnZXI6OmN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpCiAgICAg
cmV0dXJuICptX2N1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6
c2V0QmxhY2tib3hUeXBlKFNvdXJjZUlEIHNvdXJjZUlELCBPcHRpb25hbDxCbGFja2JveFR5cGU+
IHR5cGUpCit2b2lkIERlYnVnZ2VyOjpzZXRCbGFja2JveFR5cGUoU291cmNlSUQgc291cmNlSUQs
IHN0ZDo6b3B0aW9uYWw8QmxhY2tib3hUeXBlPiB0eXBlKQogewogICAgIGlmICh0eXBlKQogICAg
ICAgICBtX2JsYWNrYm94ZWRTY3JpcHRzLnNldChzb3VyY2VJRCwgdHlwZS52YWx1ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggMzNlYzhmNjg3MjM1
MTQ0ZGI4YmM2NGJkYjg1YmZjOTAxM2Y5ODkyNC4uOTM4ODAyM2E2NDE2YTNmMDRjMGIwYTI0YjFh
Mzc3NDM4ZTI1MmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5jdGlv
bigpOwogCiAgICAgZW51bSBjbGFzcyBCbGFja2JveFR5cGUgeyBEZWZlcnJlZCwgSWdub3JlZCB9
OwotICAgIHZvaWQgc2V0QmxhY2tib3hUeXBlKFNvdXJjZUlELCBPcHRpb25hbDxCbGFja2JveFR5
cGU+KTsKKyAgICB2b2lkIHNldEJsYWNrYm94VHlwZShTb3VyY2VJRCwgc3RkOjpvcHRpb25hbDxC
bGFja2JveFR5cGU+KTsKICAgICB2b2lkIGNsZWFyQmxhY2tib3goKTsKIAogICAgIGJvb2wgaXNQ
YXVzZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGF1c2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCA3NDBhZDgy
Yzc5NTRhMGY5ODI4MjI4MzU2OGIxM2UxOWY4NDFiZmYzLi5hMzFmYzFmMTVkNGI4Mzg5NDhmNDJi
NGNmMWMwOWM0N2QzOTk1MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBUZXh0UG9z
aXRpb24gRGVidWdnZXJDYWxsRnJhbWU6OmN1cnJlbnRQb3NpdGlvbihWTSYgdm0pCiAKICAgICBp
ZiAoaXNUYWlsRGVsZXRlZCgpKSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9z
aGFkb3dDaGlja2VuRnJhbWUuY29kZUJsb2NrOwotICAgICAgICBpZiAoT3B0aW9uYWw8Qnl0ZWNv
ZGVJbmRleD4gYnl0ZWNvZGVJbmRleCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVJbmRleEZyb21DYWxs
U2l0ZUluZGV4KG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNhbGxTaXRlSW5kZXgpKSB7CisgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXggPSBjb2RlQmxv
Y2stPmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChtX3NoYWRvd0NoaWNrZW5GcmFtZS5j
YWxsU2l0ZUluZGV4KSkgewogICAgICAgICAgICAgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRpbmFs
TnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVJ
bmRleCgqYnl0ZWNvZGVJbmRleCkpLAogICAgICAgICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZy
b21PbmVCYXNlZEludChjb2RlQmxvY2stPmNvbHVtbk51bWJlckZvckJ5dGVjb2RlSW5kZXgoKmJ5
dGVjb2RlSW5kZXgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCmluZGV4IDU2OGZlMzM4YWEwNjc1MWYy
NzZkMzU0ZTJiOGUwMDFkYTNhZTM1MzAuLjZjODhmZDkwYzMwMDkxNDEzYjg5NTE2NTgwMjg0MTc3
ODM5ZTQxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclBhcnNlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyUGFyc2VEYXRhLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFr
cG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxpbmUsIGludCBjb2x1bW4pCitzdGQ6Om9w
dGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50
TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVn
Z2VyUGF1c2VQb3NpdGlvbiBwb3NpdGlvbiA9IHsgRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6
SW52YWxpZCwgSlNUZXh0UG9zaXRpb24obGluZSwgY29sdW1uLCAwKSB9OwogICAgIGF1dG8gaXQg
PSBzdGQ6Omxvd2VyX2JvdW5kKG1fcG9zaXRpb25zLmJlZ2luKCksIG1fcG9zaXRpb25zLmVuZCgp
LCBwb3NpdGlvbiwgW10gKGNvbnN0IERlYnVnZ2VyUGF1c2VQb3NpdGlvbiYgYSwgY29uc3QgRGVi
dWdnZXJQYXVzZVBvc2l0aW9uJiBiKSB7CkBAIC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPEpTVGV4
dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JM
aW5lQ29sdW1uCiAgICAgLy8gVmFsaWQgcGF1c2UgbG9jYXRpb24uIFVzZSBpdC4KICAgICBhdXRv
JiBmaXJzdFNsaWRlUG9zaXRpb24gPSAqaXQ7CiAgICAgaWYgKGZpcnN0U2xpZGVQb3NpdGlvbi50
eXBlICE9IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6OkVudGVyKQotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KGZpcnN0U2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihmaXJzdFNsaWRlUG9z
aXRpb24ucG9zaXRpb24pOwogCiAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBlbnRlciB0
aGlzIGZ1bmN0aW9uIG9yIHNraXAgcGFzdCBpdC4KICAgICAvLyBJZiBlbnRyeVN0YWNrU2l6ZSBp
cyA+IDAgd2UgYXJlIHNraXBwaW5nIGZ1bmN0aW9ucy4KQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9u
YWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2Nh
dGlvbkZvckxpbmVDb2x1bW4KICAgICAgICAgfQogCiAgICAgICAgIC8vIEZvdW5kIHBhdXNlIHBv
c2l0aW9uLgotICAgICAgICByZXR1cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KHNsaWRlUG9z
aXRpb24ucG9zaXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxKU1RleHRQb3Np
dGlvbj4oc2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CiAgICAgfQogCiAgICAgLy8gTm8gcGF1c2Ug
cG9zaXRpb25zIGZvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJQYXJzZURhdGEuaAppbmRleCAzYjA3YzkyM2M2OGE2ZjcyYWRmODNkMzZjNzIzNjc3
NWQ1NWEwYzcwLi43N2JlYWU4NWRkMjIzYzNlM2M2MTQ3MDk3ODI3N2Q4ZTExZGYwYzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEu
aApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcG9zaXRpb25zLmFwcGVuZCh7
IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6OkxlYXZlLCBwb3NpdGlvbiB9KTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNv
bHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7CisgICAgc3RkOjpvcHRpb25hbDxKU1RleHRQb3Np
dGlvbj4gYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVt
bik7CiAKICAgICB2b2lkIHNvcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL1NjcmlwdFByb2ZpbGluZ1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaAppbmRleCBjMzQwYThiNTVmMjIzOTBi
Yzc0YzQ4MzY2NGY3NWU0YTYzODZjMzcyLi5jNGJlZTRkMTYyMGE4NmUwNzBhODhiMjhkZTAxYzQy
NmI0YWMyZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2Ny
aXB0UHJvZmlsaW5nU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
U2NyaXB0UHJvZmlsaW5nU2NvcGUuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdCB7IG51bGxwdHIgfTsKLSAgICBP
cHRpb25hbDxTZWNvbmRzPiBtX3N0YXJ0VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IG1fc3RhcnRUaW1lOwogICAgIFByb2ZpbGluZ1JlYXNvbiBtX3JlYXNvbjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCA0OTNmMzY4ZTVlZWUwZGNkYTM2ZWViYzY3MTMxOTZmYjFiMGY0ZTEx
Li4xYjJhNWUwN2EwYjJlMGY1NGFhODc3N2E5YTM5ZTYwM2JhYzZjZTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC03MDIsNyArNzAyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgCiAgICAgY2FzZSBEb3VibGVSZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+
IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZl
KCkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKCpudW1i
ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MzcsNyArODM3LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgQXJpdGhDbHozMjogewogICAgICAg
ICBKU1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAg
ICAgICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVBy
aW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0g
b3BlcmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAg
ICAgICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAgIGlmIChPcHRpb25h
bDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVy
RnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihmYWJzKCpudW1iZXIpKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzSW50MzIo
KSkgewogICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCByZXN1bHQpOwpAQCAt
MTI0Miw3ICsxMjQyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIHNl
dE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgICAgIGlmIChPcHRpb25h
bDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVy
RnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNE
b3VibGVOdW1iZXIoZmFicygqbnVtYmVyKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgSlNW
YWx1ZSBvcGVyYW5kID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAg
aWYgKE9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRp
dmUoKSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJh
bmQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgIT0gRG91YmxlUmVwVXNlKQogICAgICAgICAgICAgICAgIGRpZEZvbGRD
bG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgIApAQCAtMTM2NSw3ICsxMzY1LDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgTWFwSGFzaDogewogICAgICAgICBpZiAoSlNW
YWx1ZSBrZXkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGhhc2ggPSBjb25jdXJyZW50SlNNYXBIYXNoKGtleSkp
IHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBoYXNoID0gY29uY3Vy
cmVudEpTTWFwSGFzaChrZXkpKSB7CiAgICAgICAgICAgICAgICAgLy8gQWx0aG91Z2ggQysrIGNv
ZGUgdXNlcyB1aW50MzJfdCBmb3IgdGhlIGhhc2gsIHRoZSBjbG9zZXN0IHR5cGUgaW4gREZHIElS
IGlzIEludDMyCiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoYXQncyB3aGF0IE1hcEhhc2ggcmV0
dXJucy4gU28sIHdlIGhhdmUgdG8gY2FzdCB0byBpbnQzMl90IHRvIGF2b2lkIGxhcmdlCiAgICAg
ICAgICAgICAgICAgLy8gdW5zaWduZWQgdmFsdWVzIGJlY29taW5nIGRvdWJsZXMuIFRoaXMgY2Fz
dGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQKQEAgLTE1NDksNyArMTU0OSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZTogewogICAgICAgICAgICAg
ICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3Vs
dDsKICAgICAgICAgICAgICAgICAgICAgY2hpbGQubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKICAgICAg
ICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IG5vZGUtPnF1ZXJpZWRUeXBlKCk7CkBAIC0xNzQ1LDcgKzE3NDUs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBJc0NlbGxXaXRoVHlwZTogewotICAgICAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRl
ZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0
ZWRUeXBlRm9yUXVlcnkoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0NlbGwpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwpAQCAtMzc4Niw3ICszNzg2
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlH
ZXRGb2xkYWJsZVZpZXcoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSk7CiAgICAgICAg
IGlmICh2aWV3KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldCA9
IHZpZXctPmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGJ5dGVPZmZzZXQgPSB2aWV3LT5ieXRlT2Zmc2V0Q29uY3VycmVudGx5KCk7
CiAgICAgICAgICAgICBpZiAoYnl0ZU9mZnNldCkgewogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzTnVtYmVyKCpieXRlT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC00ODcyLDcgKzQ4NzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlw
ZT4KIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVE
b3VibGVVbmFyeU9wRWZmZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlv
bikoZG91YmxlKSkKIHsKICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKTsKLSAgICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051
bWJlckZyb21QcmltaXRpdmUoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVt
YmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBEb3VibGVSZXBVc2UpCiAgICAgICAgICAgICBkaWRGb2xk
Q2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KGVxdWl2YWxlbnRGdW5jdGlvbigqbnVtYmVyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjY2U3ODJjMWUzYzc4MDk1YWE0ZjU3
NWYwMWQyZjY1NWI0MzFiZjIyLi43MDc5ZTUyYWRhOGIyZjljYzAzZGQzNDQ2MzU2MDIzNGU4YzVk
ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtMjQ0NSw3ICsyNDQ1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICAgICAg
ICAgY2FzZSBBcnJheVZhbHVlc0ludHJpbnNpYzogewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tz
KCk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGtpbmQgPSBpbnRlcmF0
aW9uS2luZEZvckludHJpbnNpYyhpbnRyaW5zaWMpOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxJdGVyYXRpb25LaW5kPiBraW5kID0gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoaW50cmlu
c2ljKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEha2luZCk7CiAKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ug
d2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKaW5kZXggNDYwODA1Zjc2
YzJiNTg2MGY5NTE4NGIzNzJmMjZlOTQ3ZWQ2NDBlMC4uY2MwZDAxNGRhMjkzMWZmM2VjZGNlOTQy
OWNjMjYyNTYxZTJmN2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkFQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFz
ZS5jcHAKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIHR5cGUgd2lk
ZW5pbmcgaXMgY3JpdGljYWwgdG8gbmF2aWVyLXN0b2tlcy4gV2l0aG91dCBpdCwgbmF2aWVyLXN0
b2tlcyBoYXMgbW9yZSBzdHJpY3QgY29uc3RyYWludCBvbiBPU1IgZW50cnkgYW5kCiAgICAgICAg
IC8vIGZhaWxzIE9TUiBlbnRyeSByZXBlYXRlZGx5LgogICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFu
ZGxlVmFsdWVzID0gbV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZhbHVlcygpOworICAgICAgICBj
b25zdCBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyA9
IG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBPcGVyYW5k
IG9wZXJhbmQgPSBtdXN0SGFuZGxlVmFsdWVzLm9wZXJhbmRGb3JJbmRleChpKTsKLSAgICAgICAg
ICAgIE9wdGlvbmFsPEpTVmFsdWU+IHZhbHVlID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtdXN0SGFuZGxlVmFsdWVzW2ld
OwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIE5vdCBsaXZlIGluIGJ5dGVjb2Rl
OiAiLCBvcGVyYW5kLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNw
cAppbmRleCA2ZDVhNDQwOTgyMjdiNTk1NWQ4MjU4ZDI0ZWViZGE4YzI4NTFkOGRlLi42NTA3OWZj
ZjFlNTczNTE2OTdhOTlmNWQ5Y2IzNDViOWY2ZTNhNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEcml2ZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBGdW5jdGlvbkFsbG93
bGlzdCYgZW5zdXJlR2xvYmFsREZHQWxsb3dsaXN0KCkKIAogc3RhdGljIENvbXBpbGF0aW9uUmVz
dWx0IGNvbXBpbGVJbXBsKAogICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVC
bG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlLAotICAg
IEJ5dGVjb2RlSW5kZXggb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxPcHRp
b25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1ZXMsCisgICAgQnl0ZWNvZGVJbmRleCBvc3JF
bnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+
JiBtdXN0SGFuZGxlVmFsdWVzLAogICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21w
aWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpKQpAQCAtOTEsNyAr
OTEsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiB9CiAjZWxzZSAv
LyBFTkFCTEUoREZHX0pJVCkKIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgK
LSAgICBWTSYsIENvZGVCbG9jayosIENvZGVCbG9jayosIEpJVENvbXBpbGF0aW9uTW9kZSwgQnl0
ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiwKKyAgICBWTSYs
IENvZGVCbG9jayosIENvZGVCbG9jayosIEpJVENvbXBpbGF0aW9uTW9kZSwgQnl0ZWNvZGVJbmRl
eCwgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mLAogICAgIFJlZjxEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYpCiB7CiAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFp
bGVkOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxl
SW1wbCgKIAogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYgdm0sIENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbk1vZGUgbW9kZSwKLSAgICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwg
Y29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzLAorICAg
IEJ5dGVjb2RlSW5kZXggb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxzdGQ6
Om9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcywKICAgICBSZWY8RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIENvbXBpbGF0aW9uUmVzdWx0
IHJlc3VsdCA9IGNvbXBpbGVJbXBsKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEcml2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgK
aW5kZXggMmExYzljMTAxN2UyYzUzZTI5MmMwYzNmOTk5YmZmMDQxN2UyZDg4YS4uZWViMWE0Yzcx
OWZhNzVjMDliOTQ1ZTQwNzJlMDllZmFhN2U5NTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5oCkBAIC00MSw3ICs0MSw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IGdldE51bUNvbXBpbGF0aW9ucygpOwogLy8gY29tcGlsZS4gRXZlbiBpZiB3ZSBkbyBhIHN5bmNo
cm9ub3VzIGNvbXBpbGUsIHdlIGNhbGwgdGhlIGNhbGxiYWNrIHdpdGggdGhlIHJlc3VsdC4KIENv
bXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUoCiAgICAgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sq
IHByb2ZpbGVkREZHQ29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk1vZGUsCi0gICAgQnl0ZWNvZGVJ
bmRleCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFs
dWU+PiYgbXVzdEhhbmRsZVZhbHVlcywKKyAgICBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNv
ZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5k
bGVWYWx1ZXMsCiAgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJik7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCmluZGV4IGY2NWY5YjU3OTBlNjZlMWQ5MmUyMTJjN2ExZTU1NGU4OWQ4YThi
ZWEuLjhhMDlmYjQ1MTg4NzU0YWIyMmFhOTFjOTE5ZTEzZjlmOGI4YWI2ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTA3Myw3ICsxMDczLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjog
ewotICAgICAgICAgICAgICAgIE9wdGlvbmFsPEFycmF5OjpTcGVjdWxhdGlvbj4gc2FuZUNoYWlu
U3BlY3VsYXRpb247CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxBcnJheTo6U3BlY3Vs
YXRpb24+IHNhbmVDaGFpblNwZWN1bGF0aW9uOwogICAgICAgICAgICAgICAgIGlmIChhcnJheU1v
ZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgSW5Cb3VuZHNTYW5lQ2hhaW4gd2lsbCB3b3JrIG9uIGEgcGVyLXR5cGUg
YmFzaXMuIE5vdGUgdGhhdDoKICAgICAgICAgICAgICAgICAgICAgLy8KQEAgLTMwMTQsNyArMzAx
NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpeHVwSXNDZWxsV2l0aFR5cGUoTm9kZSogbm9k
ZSkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBmaWx0ZXIgPSBub2Rl
LT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3Vs
YXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKICAgICAg
ICAgaWYgKGZpbHRlcikgewogICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXIudmFsdWUoKSkgewog
ICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCmluZGV4IDliNjg0ZWUzMGU0ZGM1ZDJiOThkYTk4YzZjMjk4MWU2N2FlMjFhYTAuLjc2Zjlk
YjgyZjkxMTg5MWRjOTMzNjUwNWM3NmRkNjEzNjNmZTQ2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKQEAgLTExOTEsNyArMTE5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1f
aGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0luU1NBQ29udmVy
c2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmFsaWRhdGluZyB7IGZhbHNlIH07Ci0gICAg
T3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAg
ICAgQmFnPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAppbmRleCAyNDQ5ODAxZmYwYjRlMTE2YmQ0YmU0OTli
NTNjZDY0ZTM4ZGEzMTI2Li41ZTJmMGEwZDA4MTlkNjQzODc5ODJmMTk1Y2QwMjhkODRmNzA5MTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKQEAgLTcxLDEyICs3
MSwxMiBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAogICAgICAgICBjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIG1pbmlmaWVkREZHLCBzdHJlYW1JbmRleCwgcmVzdWx0KTsKIH0KIAotdm9pZCBK
SVRDb2RlOjpyZWNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIE9wZXJh
bmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgcmVzdWx0KQordm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVj
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZT4+JiByZXN1bHQpCiB7CiAgICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4gcmVjb3Zl
cmllczsKICAgICByZWNvbnN0cnVjdChjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIHN0cmVhbUluZGV4
LCByZWNvdmVyaWVzKTsKICAgICAKLSAgICByZXN1bHQgPSBPcGVyYW5kczxPcHRpb25hbDxKU1Zh
bHVlPj4oT3BlcmFuZHNMaWtlLCByZWNvdmVyaWVzKTsKKyAgICByZXN1bHQgPSBPcGVyYW5kczxz
dGQ6Om9wdGlvbmFsPEpTVmFsdWU+PihPcGVyYW5kc0xpa2UsIHJlY292ZXJpZXMpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSByZXN1bHQuc2l6ZSgpOyBpLS07KQogICAgICAgICByZXN1bHRbaV0gPSBy
ZWNvdmVyaWVzW2ldLnJlY292ZXIoY2FsbEZyYW1lKTsKIH0KQEAgLTIyNCwxMiArMjI0LDEyIEBA
IHZvaWQgSklUQ29kZTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2Vz
JiB0cmFja2VkUmVmZXJlbmNlcykKICAgICBtaW5pZmllZERGRy52YWxpZGF0ZVJlZmVyZW5jZXMo
dHJhY2tlZFJlZmVyZW5jZXMpOwogfQogCi1PcHRpb25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpm
aW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJ
VENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQm
IGV4aXQgOiBtX29zckV4aXQpIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUq
IGhhbmRsZSA9IGV4aXQubV9jb2RlLmV4ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAg
aWYgKGhhbmRsZS0+c3RhcnQoKS51bnRhZ2dlZFB0cigpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5l
bmQoKS51bnRhZ2dlZFB0cigpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2Rl
T3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4
aXRQcm9maWxlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAppbmRleCBiMTU4MjNjMzYxYmFkODI1MGZlZDkzODBiYjMyMWRlNzI0MzBjZTc2
Li5lYzJiNDgzMzI4ZTM4OTRkMTZmNDFlODYwNDhiMGZiYjM2NGQ5NzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gc3RhY2suIEN1cnJlbnRseSwgaXQgYWxzbyBoYXMgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhl
IHZhbHVlcyBtdXN0IGJlIGluIHRoZWlyCiAgICAgLy8gYnl0ZWNvZGUtZGVzaWduYXRlZCBzdGFj
ayBzbG90cy4KICAgICB2b2lkIHJlY29uc3RydWN0KAotICAgICAgICBDYWxsRnJhbWUqLCBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgT3BlcmFuZHM8T3B0aW9u
YWw8SlNWYWx1ZT4+JiByZXN1bHQpOworICAgICAgICBDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBD
b2RlT3JpZ2luLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxK
U1ZhbHVlPj4mIHJlc3VsdCk7CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICAvLyBOQi4gQWxs
IG9mIHRoZXNlIG1ldGhvZHMgdGFrZSBDb2RlQmxvY2sqIGJlY2F1c2UgdGhleSBtYXkgd2FudCB0
byB1c2UKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBj
b21tb25EYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpJVENvZGUsIGNvbW1v
bik7IH0KIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lk
KiBwYykgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJs
b2NrKiwgdm9pZCogcGMpIGZpbmFsOwogCiAgICAgdXNpbmcgRGlyZWN0SklUQ29kZTo6aW5pdGlh
bGl6ZUNvZGVSZWZGb3JERkc7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDU4OTNiZTgwNjYwMTY5OWI2NzAxNDBiMjFjZTliNzRlYWY5M2QxMWEuLjE2OTYxN2JlYWFm
ZjZlMjI5ZDIyMmE2NTYyMjRmNDk1ZGEwYjYyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC0xNDQ3LDcgKzE0NDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgp
ID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBl
PiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRU
eXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKICAgICB7CiAgICAgICAgIHJldHVybiBzcGVj
dWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNzUxM2I0ZDRiZTBkMDlmYTEwM2Y1
OGIxNzdlM2FmYmVjOTgwYTM1Yy4uZmNiMDQ0NjBhM2ZkMDcxNWQ5NDc1ZmJhYWYwMzgxMzcwZjc4
ZDI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbEludGVy
bmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwKICAgICBKU1ZhbHVlIHBy
b3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWlu
dDMySW5kZXgoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHB1dEJ5VmFs
PHN0cmljdCwgZGlyZWN0PihnbG9iYWxPYmplY3QsIHZtLCBiYXNlVmFsdWUsICppbmRleCwgdmFs
dWUpOwogICAgICAgICByZXR1cm47CkBAIC0xMzEsNyArMTMxLDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgdm9pZCBwdXRCeVZhbEludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwKICAgICBpZiAoZGlyZWN0KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VW
YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChiYXNlVmFsdWUpOwotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgc3RyaWN0ID8gUHV0RGlyZWN0SW5k
ZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTUxLDcgKzE1MSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
cHV0QnlWYWxDZWxsSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mCiAg
ICAgaWYgKGRpcmVjdCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLT5pc09iamVjdCgp
KTsKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlKTsKLSAgICAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIHN0cmljdCA/IFB1dERp
cmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjYyLDcgKzY2Miw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbENlbGwsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRQcm9wZXJ0eSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cHJvcGVydHkudHJ5R2V0QXNVaW50MzJJbmRleCgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3Qs
IGJhc2UsICppbmRleCkpOwogCiAgICAgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKQEAgLTE1
NTksNyArMTU1OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZh
bFdpdGhUaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqCiAgICAgfQogICAgIAogICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7
CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJh
c2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4
KGdsb2JhbE9iamVjdCwgaSkpOwpAQCAtMzczMSw3ICszNzMxLDcgQEAgc3RhdGljIHZvaWQgdHJp
Z2dlckZUTFJlcGxhY2VtZW50Q29tcGlsZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRDb2RlKgogICAgIC8vIFdlIG5lZWQgdG8gY29tcGlsZSB0aGUgY29kZS4KICAgICBjb21waWxl
KAogICAgICAgICB2bSwgY29kZUJsb2NrLT5uZXdSZXBsYWNlbWVudCgpLCBjb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uTW9kZTo6RlRMLCBCeXRlY29kZUluZGV4KCksCi0gICAgICAgIE9wZXJhbmRz
PE9wdGlvbmFsPEpTVmFsdWU+PigpLCBUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6
Y3JlYXRlKCkpOworICAgICAgICBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PigpLCBU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y3JlYXRlKCkpOwogCiAgICAgLy8gSWYg
d2UgcmVhY2hlZCBoZXJlLCB0aGUgY291bnRlciBoYXMgbm90IGJlIHJlc2V0LiBEbyB0aGF0IG5v
dy4KICAgICBqaXRDb2RlLT5zZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRp
b25SZXN1bHQoCkBAIC0zOTcwLDcgKzM5NzAsNyBAQCBzdGF0aWMgY2hhciogdGllclVwQ29tbW9u
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEJ5dGVjb2RlSW5kZXggb3JpZ2luQnl0ZQog
CiAgICAgSklUQ29kZTo6VHJpZ2dlclJlYXNvbiogdHJpZ2dlckFkZHJlc3MgPSAmKHRyaWdnZXJJ
dGVyYXRvci0+dmFsdWUpOwogCi0gICAgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IG11c3RI
YW5kbGVWYWx1ZXM7CisgICAgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4gbXVzdEhh
bmRsZVZhbHVlczsKICAgICB1bnNpZ25lZCBzdHJlYW1JbmRleCA9IGppdENvZGUtPmJ5dGVjb2Rl
SW5kZXhUb1N0cmVhbUluZGV4LmdldChvcmlnaW5CeXRlY29kZUluZGV4KTsKICAgICBqaXRDb2Rl
LT5yZWNvbnN0cnVjdChjYWxsRnJhbWUsIGNvZGVCbG9jaywgQ29kZU9yaWdpbihvcmlnaW5CeXRl
Y29kZUluZGV4KSwgc3RyZWFtSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpOwogICAgIENvZGVCbG9j
ayogcmVwbGFjZW1lbnRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPm5ld1JlcGxhY2VtZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBkMjkzZWM3NDgxZjkyMzgyNGY3
ZjhjYzdlMTdkZmJmZmEwMjllMDMwLi4yZDJhMjIxYjU0YjMyMzI4NTllYzNkZmM1MWU0Yzk1ZTU5
NTU5MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTEyNiw3ICsx
MjYsNyBAQCBQcm9maWxlcjo6Q29tcGlsYXRpb25LaW5kIHByb2ZpbGVyQ29tcGlsYXRpb25LaW5k
Rm9yTW9kZShKSVRDb21waWxhdGlvbk1vZGUgbW9kZQogCiBQbGFuOjpQbGFuKENvZGVCbG9jayog
cGFzc2VkQ29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgIEpJ
VENvbXBpbGF0aW9uTW9kZSBtb2RlLCBCeXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCwKLSAgICBjb25zdCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5kbGVWYWx1
ZXMpCisgICAgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5k
bGVWYWx1ZXMpCiAgICAgICAgIDogQmFzZShtb2RlLCBwYXNzZWRDb2RlQmxvY2spCiAgICAgICAg
ICwgbV9wcm9maWxlZERGR0NvZGVCbG9jayhwcm9maWxlZERGR0NvZGVCbG9jaykKICAgICAgICAg
LCBtX211c3RIYW5kbGVWYWx1ZXMobXVzdEhhbmRsZVZhbHVlcykKQEAgLTYxMyw3ICs2MTMsNyBA
QCBib29sIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKEFic3RyYWN0U2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAKICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7IGktLTsp
IHsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtX211c3RIYW5kbGVWYWx1ZXNb
aV07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSBtX211c3RIYW5kbGVW
YWx1ZXNbaV07CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWQodmFsdWUudmFsdWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uaAppbmRleCBhNTY4N2I2NjJhMzk4ZDEwMDgxODFjMmQ3YzAwMmFiMDhmNzBmNGQ2Li40
MDgwMzI5NmE2ZGJlMGU0N2VhMzgzM2RiYmYyNGE2YzI5MDNiNmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUGxhbigKICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tUb0NvbXBpbGUsIENvZGVCbG9jayogcHJvZmlsZWRE
RkdDb2RlQmxvY2ssCiAgICAgICAgIEpJVENvbXBpbGF0aW9uTW9kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFbnRyeUJ5dGVjb2RlSW5kZXgsCi0gICAgICAgIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpT
VmFsdWU+PiYgbXVzdEhhbmRsZVZhbHVlcyk7CisgICAgICAgIGNvbnN0IE9wZXJhbmRzPHN0ZDo6
b3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzKTsKICAgICB+UGxhbigpOwogCiAg
ICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QgZmluYWw7CkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBC
eXRlY29kZUluZGV4IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Ny
RW50cnlCeXRlY29kZUluZGV4OyB9Ci0gICAgY29uc3QgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1
ZT4+JiBtdXN0SGFuZGxlVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9tdXN0SGFuZGxlVmFsdWVz
OyB9CisgICAgY29uc3QgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVlPj4mIG11c3RIYW5k
bGVWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX211c3RIYW5kbGVWYWx1ZXM7IH0KICAgICBQcm9m
aWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxh
dGlvbi5nZXQoKTsgfQogCiAgICAgRmluYWxpemVyKiBmaW5hbGl6ZXIoKSBjb25zdCB7IHJldHVy
biBtX2ZpbmFsaXplci5nZXQoKTsgfQpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gVGhlc2UgY2FuIGJlIHJhdyBwb2ludGVycyBiZWNhdXNlIHdlIHZpc2l0IHRoZW0gZHVyaW5n
IGV2ZXJ5IEdDIGluIGNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuLgogICAgIENvZGVCbG9j
ayogbV9wcm9maWxlZERGR0NvZGVCbG9jazsKIAotICAgIE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFs
dWU+PiBtX211c3RIYW5kbGVWYWx1ZXM7CisgICAgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1Zh
bHVlPj4gbV9tdXN0SGFuZGxlVmFsdWVzOwogICAgIGJvb2wgbV9tdXN0SGFuZGxlVmFsdWVzTWF5
SW5jbHVkZUdhcmJhZ2UgV1RGX0dVQVJERURfQllfTE9DSyhtX211c3RIYW5kbGVWYWx1ZUNsZWFu
aW5nTG9jaykgeyB0cnVlIH07CiAgICAgTG9jayBtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9j
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IDYwMzA1MGUxOThjNjZjYjJlNzkyYjQ5MDY5ODA2
Nzg2ZmU1NTkyMDYuLjk4NjYyZmE1OWJhOTBkMmE5Mjc1MTcyZmQ3NDhiNmYzZjc4MDQ5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0g
bV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBjb25zdCBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4m
IG11c3RIYW5kbGVWYWx1ZXMgPSBtX2dyYXBoLm1fcGxhbi5tdXN0SGFuZGxlVmFsdWVzKCk7Cisg
ICAgICAgICAgICBjb25zdCBPcGVyYW5kczxzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhh
bmRsZVZhbHVlcyA9IG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXMoKTsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IG11c3RIYW5kbGVWYWx1ZXMub3Bl
cmFuZEZvckluZGV4KGkpOwotICAgICAgICAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWU+IHZhbHVl
ID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEpT
VmFsdWU+IHZhbHVlID0gbXVzdEhhbmRsZVZhbHVlc1tpXTsKICAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3
Y2UyMTBkMTNiYThlNTVhODBhOTZjZTkzNTJlMGZmZDA3Mjg0YjFkLi4wYWY1ZGQ5ODM5YzgwMjE2
ZWY4YmNmMGRlNjNkZTNiYzg5NWIzYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJhdG9yTGFtYmRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBs
YW1iZGEpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyJiBwY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpCiB7CiAgICAgYXV0
byBtYXJrU2xvd1BhdGhJZk5lZWRlZCA9IFsmXSAoTm9kZSogbm9kZSkgewotICAgICAgICBPcHRp
b25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7CiAgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wREZHSklUU2l6ZVN0YXRpc3RpY3MoKSkpIHsKICAg
ICAgICAgICAgIFN0cmluZyBpZCA9IG1ha2VTdHJpbmcoIkRGR19zbG93XyIsIG1fZ3JhcGgub3BO
YW1lKG5vZGUtPm9wKCkpKTsKICAgICAgICAgICAgIHNpemVNYXJrZXIgPSB2bSgpLmppdFNpemVT
dGF0aXN0aWNzLT5tYXJrU3RhcnQoaWQsIG1faml0KTsKQEAgLTg2Miw4ICs4NjIsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXA7Ci0gICAgT3B0aW9uYWw8
R1BSUmVnPiB0ZW1wR1BSOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiB0ZW1wR1BSOwogICAgIHN3aXRjaCAoYXJyYXlNb2Rl
LnR5cGUoKSkgewogICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgIGNhc2UgQXJyYXk6OkRvdWJs
ZToKQEAgLTE3MzAsOCArMTczMCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
bmdTbGljZShOb2RlKiBub2RlKQogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzdGFydCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSUmVnIHN0YXJ0R1BSID0gc3RhcnQuZ3ByKCk7CiAK
LSAgICBPcHRpb25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+IGVuZDsKLSAgICBPcHRpb25hbDxH
UFJSZWc+IGVuZEdQUjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3BlcmFuZD4g
ZW5kOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiBlbmRHUFI7CiAgICAgaWYgKG5vZGUtPmNo
aWxkMygpKSB7CiAgICAgICAgIGVuZC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAg
ICAgICAgZW5kR1BSLmVtcGxhY2UoZW5kLT5ncHIoKSk7CkBAIC0yMTA3LDcgKzIxMDcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmdm0oKS5kaWRFbnRlclZNKTsKICAgICAg
ICAgfQogCi0gICAgICAgIE9wdGlvbmFsPEpJVFNpemVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVN
YXJrZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4g
c2l6ZU1hcmtlcjsKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBERkdKSVRTaXpl
U3RhdGlzdGljcygpKSkgewogICAgICAgICAgICAgU3RyaW5nIGlkID0gbWFrZVN0cmluZygiREZH
X2Zhc3RfIiwgbV9ncmFwaC5vcE5hbWUobV9jdXJyZW50Tm9kZS0+b3AoKSkpOwogICAgICAgICAg
ICAgc2l6ZU1hcmtlciA9IHZtKCkuaml0U2l6ZVN0YXRpc3RpY3MtPm1hcmtTdGFydChpZCwgbV9q
aXQpOwpAQCAtNDEyMSw4ICs0MTIxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlw
ZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICBPcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4gcmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIAogICAgIEpTVmFsdWVS
ZWdzIGxlZnRSZWdzOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsKQEAgLTQzMzksOCArNDMz
OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0
Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdo
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OworICAgIHN0ZDo6b3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7
CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzOwpAQCAtNDcwNiw4ICs0NzA2LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aEkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBPcHRpb25hbDxK
U1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7
CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwog
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsKQEAgLTQ3MjAsMTQgKzQ3MjAsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aEkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7
CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBJbnZhbGlkRlBSUmVnOwogCi0gICAgT3B0aW9uYWw8
RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOworICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5
PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVkc1NjcmF0Y2hGUFJSZWcpIHsKICAgICAgICAgZnBy
U2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBSID0gZnByU2NyYXRjaC0+
ZnByKCk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IGdwclNjcmF0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNj
cmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRjaEdQUlJlZykgewogICAgICAgICBncHJTY3JhdGNo
LmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBncHJTY3JhdGNoLT5ncHIoKTsK
QEAgLTUzNzYsNyArNTM3Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJQywgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcsIFJlcGF0Y2hpbmdGdW5jdGlv
biByZXBhdGNoaW5nRnVuY3Rpb24sIE5vblJlcGF0Y2hpbmdGdW5jdGlvbiBub25SZXBhdGNoaW5n
RnVuY3Rpb24pCiB7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAg
IE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKICAgICBpZiAobmVlZHNTY3JhdGNoR1BSUmVnKSB7CiAg
ICAgICAgIGdwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgc2NyYXRjaEdQUiA9IGdw
clNjcmF0Y2gtPmdwcigpOwpAQCAtNTc0MSw4ICs1NzQxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAKICAgICBBU1NFUlQobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBs
ZWZ0OwotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IHJpZ2h0OwogCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3Mg
cmlnaHRSZWdzOwpAQCAtOTA4Niw3ICs5MDg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFJlc3RMZW5ndGgoTm9kZSogbm9kZSkKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0UG9wdWxhdGVTbGlj
ZUluZGV4KEVkZ2UmIHRhcmdldCwgT3B0aW9uYWw8R1BSUmVnPiBpbmRleEdQUiwgR1BSUmVnIGxl
bmd0aEdQUiwgR1BSUmVnIHJlc3VsdEdQUikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRQb3B1
bGF0ZVNsaWNlSW5kZXgoRWRnZSYgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPEdQUlJlZz4gaW5kZXhH
UFIsIEdQUlJlZyBsZW5ndGhHUFIsIEdQUlJlZyByZXN1bHRHUFIpCiB7CiAgICAgaWYgKHRhcmdl
dC0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHRhcmdldC0+
YXNJbnQzMigpOwpAQCAtOTExMCw3ICs5MTEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFBvcHVsYXRlU2xpY2VJbmRleChFZGdlJiB0YXJnZXQsIE9wdGlvbmFsPEdQUlJlZz4gaW5kZXgK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUludDMyT3Bl
cmFuZD4gaW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+IGlu
ZGV4OwogICAgIGlmICghaW5kZXhHUFIpIHsKICAgICAgICAgaW5kZXguZW1wbGFjZSh0aGlzLCB0
YXJnZXQpOwogICAgICAgICBpbmRleEdQUiA9IGluZGV4LT5ncHIoKTsKQEAgLTEwMzA2LDcgKzEw
MzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSog
bm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAg
ICByZWdzLmFwcGVuZChTbmlwcGV0UGFyYW1zOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZv
ck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCkpKTsKIAotICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxP
cGVyYW5kPiBnbG9iYWxPYmplY3Q7CisgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVDZWxsT3Bl
cmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChzbmlwcGV0LT5yZXF1aXJlR2xvYmFsT2JqZWN0
KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9iamVjdEVkZ2UgPSBub2RlLT5jaGlsZDIoKTsKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LmVtcGxhY2UodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTJlMWU4
Y2Q1MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkxN2RjODlmMy4uNzRjMTVlNjk3ZTJjYzMyZjZlOWIy
ZTdjMjVhNmUxOGMxM2Q0MGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVU
aGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldENhbGxlZShDb2RlT3JpZ2luLCBHUFJSZWcg
Y2FsbGVlR1BSKTsKICAgICB2b2lkIGVtaXRHZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4sIEdQ
UlJlZyBzdGFydEdQUik7Ci0gICAgdm9pZCBlbWl0UG9wdWxhdGVTbGljZUluZGV4KEVkZ2UmLCBP
cHRpb25hbDxHUFJSZWc+IGluZGV4R1BSLCBHUFJSZWcgbGVuZ3RoR1BSLCBHUFJSZWcgcmVzdWx0
R1BSKTsKKyAgICB2b2lkIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgoRWRnZSYsIHN0ZDo6b3B0aW9u
YWw8R1BSUmVnPiBpbmRleEdQUiwgR1BSUmVnIGxlbmd0aEdQUiwgR1BSUmVnIHJlc3VsdEdQUik7
CiAgICAgCiAgICAgLy8gR2VuZXJhdGUgYW4gT1NSIGV4aXQgZnV6eiBjaGVjay4gUmV0dXJucyBK
dW1wKCkgaWYgT1NSIGV4aXQgZnV6eiBpcyBub3QgZW5hYmxlZCwgb3IgaWYKICAgICAvLyBpdCdz
IGluIHRyYWluaW5nIG1vZGUuCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCBwdWJsaWM6CiAgICAgfTsK
ICAgICBWZWN0b3I8U2xvd1BhdGhMYW1iZGE+IG1fc2xvd1BhdGhMYW1iZGFzOwogICAgIFZlY3Rv
cjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuPiBtX3BsYW5zOwotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBtX291dE9mTGluZVN0cmVhbUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
b3V0T2ZMaW5lU3RyZWFtSW5kZXg7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGI1N2MzN2FhMDVkZDQ5
MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2MzkuLmYxMmY4NmYwZDY4OWM1NDYwM2VmMGRmM2MwNzdh
MjE0YmUxZjkzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDAwMSw4ICs0MDAxLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlSUQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAg
ICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKLSAgICAgICAgT3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxK
U1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsK
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CiAg
ICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uZWY4YmEzODY4ZTg1
ODdjMTRjMzc0MDJiOGJjMzg0MzA5YzgxMjBhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuKE5vZGUqIG5vZGUsIGJvb2wgaW52
ZXJ0KQogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
IW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHNjcmF0Y2g7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNo
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlm
IChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgICAgIHNjcmF0
Y2guZW1wbGFjZSh0aGlzKTsKQEAgLTIwODcsNyArMjA4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRCcmFuY2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnByVmFsdWUodGhpcyk7CiAgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgZnByVGVtcCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzY3JhdGNoOwogCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwpA
QCAtMjgzMCw4ICsyODMwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBy
ZXN1bHQ7Ci0gICAgICAgICAgICBPcHRpb25hbDxHUFJSZWc+IHJlc3VsdFJlZzsKKyAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiByZXN1bHQ7CisgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPEdQUlJlZz4gcmVzdWx0UmVnOwogICAgICAgICAgICAgaWYgKCFyZXN1bHRJc1Vu
Ym94ZWQpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuZW1wbGFjZSh0aGlzKTsKICAgICAgICAg
ICAgICAgICByZXN1bHRSZWcgPSByZXN1bHQtPmdwcigpOwpAQCAtMzI5Niw3ICszMjk2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgLy8g
V2UgYXJlIGluIGdlbmVyaWMgbW9kZSEKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgYmFzZUVkZ2UpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgaW5kZXgodGhpcywg
aW5kZXhFZGdlKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBhcmdzWzJd
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gYXJnc1syXTsKICAg
ICAgICAgICAgIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgaW5kZXhHUFIgPSBp
bmRleC5ncHIoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUV4dHJhQXJnczsg
aS0tOykgewpAQCAtNDA3MSw3ICs0MDcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAKICAg
ICAgICAgR1BSUmVnIHRlbXBHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHRlbXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0
ZW1wOwogICAgICAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID4gMSkgewogICAg
ICAgICAgICAgdGVtcC5lbXBsYWNlKHRoaXMpOwogICAgICAgICAgICAgdGVtcEdQUiA9IHRlbXAt
PmdwcigpOwpAQCAtNDUwOSw3ICs0NTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgaW5wdXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gdGVtcDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0
ZW1wOwogCiAgICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKQEAgLTQ5
NjgsOCArNDk2OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZUlEKHRoaXMpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogCi0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVy
YW5kPiBrZXlBc0NlbGw7Ci0gICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1Zh
bHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBrZXlBc0Nl
bGw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CiAg
ICAgICAgIEdQUlJlZyBrZXlHUFI7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgewogICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKQEAgLTUyNTgsNyArNTI1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMp
OwogICAgICAgICBHUFJSZWcgdDIgPSB0ZW1wMi5ncHIoKTsKIAotICAgICAgICBPcHRpb25hbDxT
cGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiBpc0xpdHRsZUVuZGlhbk9wZXJh
bmQ7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKSkKICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuT3BlcmFuZC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVn
IGlzTGl0dGxlRW5kaWFuR1BSID0gaXNMaXR0bGVFbmRpYW5PcGVyYW5kID8gaXNMaXR0bGVFbmRp
YW5PcGVyYW5kLT5ncHIoKSA6IEludmFsaWRHUFJSZWc7CkBAIC01NDIyLDEwICs1NDIyLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
OwogICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKIAotICAgICAgICBPcHRp
b25hbDxTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ+IGludDUyVmFsdWU7Ci0gICAgICAgIE9w
dGlvbmFsPFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ+IGRvdWJsZVZhbHVlOwotICAgICAgICBPcHRp
b25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+IGludDMyVmFsdWU7Ci0gICAgICAgIE9wdGlvbmFs
PEZQUlRlbXBvcmFyeT4gZnByVGVtcG9yYXJ5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1
bGF0ZVN0cmljdEludDUyT3BlcmFuZD4gaW50NTJWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTcGVjdWxhdGVEb3VibGVPcGVyYW5kPiBkb3VibGVWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTcGVjdWxhdGVJbnQzMk9wZXJhbmQ+IGludDMyVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJUZW1wb3Jhcnk7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IEludmFsaWRGUFJS
ZWc7CiAgICAgICAgIEZQUlJlZyB0ZW1wRlBSID0gSW52YWxpZEZQUlJlZzsKQEAgLTU0NjEsNyAr
NTQ2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAzKHRoaXMpOwogICAgICAgICBHUFJSZWcgdDMgPSB0ZW1wMy5n
cHIoKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4gaXNMaXR0
bGVFbmRpYW5PcGVyYW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUJvb2xlYW5P
cGVyYW5kPiBpc0xpdHRsZUVuZGlhbk9wZXJhbmQ7CiAgICAgICAgIGlmIChtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDMpKQogICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW5PcGVyYW5kLmVtcGxh
Y2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgIEdQUlJlZyBp
c0xpdHRsZUVuZGlhbkdQUiA9IGlzTGl0dGxlRW5kaWFuT3BlcmFuZCA/IGlzTGl0dGxlRW5kaWFu
T3BlcmFuZC0+Z3ByKCkgOiBJbnZhbGlkR1BSUmVnOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNDBmMTEx
OTI3M2JkYmUxYTViOTUyMTU4ODVmOTI3NDQwZmM5MTEwNy4uNDdkZDE3MTg0YTFlN2UxYTMyNmFj
NTg4M2U0MjhlODIyOTI5ZGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChEb3VibGVS
ZXBVc2UpCiAgICAgICAgICAgICAgICAgJiYgbV9ub2RlLT5jaGlsZDIoKS0+aXNOdW1iZXJDb25z
dGFudCgpKSB7CiAKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8ZG91YmxlPiByZWNpcHJv
Y2FsID0gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KG1fbm9kZS0+Y2hpbGQyKCktPmFzTnVt
YmVyKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZWNp
cHJvY2FsID0gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KG1fbm9kZS0+Y2hpbGQyKCktPmFz
TnVtYmVyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHJlY2lwcm9jYWxOb2RlID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2lu
LCBqc0RvdWJsZU51bWJlcigqcmVjaXByb2NhbCksIERvdWJsZUNvbnN0YW50KTsKICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5zZXRPcChBcml0aE11bCk7CiAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHJlY2lwcm9jYWxOb2RlLCBEb3VibGVSZXBVc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKaW5kZXggNDM3Y2U1OGFkMjU2ZDJmNGM4N2JlMTA5NDI3YTc4OTI4ZjMxMDk1
YS4uMTE3NmQzZTdhZjI4MzMyYjAzMDc0MWI0ZDljNDBmMGJlZjFkMDM4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCkBAIC00NTYsNyArNDU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxh
bi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGNvbnN0IE9wZXJhbmRzPE9wdGlvbmFsPEpTVmFsdWU+PiYgbXVzdEhhbmRsZVZh
bHVlcyA9IG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXMoKTsKKyAgICAgICAgICAgIGNv
bnN0IE9wZXJhbmRzPHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4+JiBtdXN0SGFuZGxlVmFsdWVzID0g
bV9ncmFwaC5tX3BsYW4ubXVzdEhhbmRsZVZhbHVlcygpOwogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgT3BlcmFuZCBvcGVyYW5kID0gbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgo
aSk7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
b3BlcmFuZChvcGVyYW5kKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIVR5cGVDaGVjazo6aXNW
YWxpZFRvSG9pc3QoaXRlci0+dmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBPcHRpb25hbDxKU1ZhbHVlPiB2YWx1ZSA9IG11c3RIYW5kbGVWYWx1
ZXNbaV07CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiB2YWx1ZSA9IG11
c3RIYW5kbGVWYWx1ZXNbaV07CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUu
dmFsdWUoKSB8fCAhdmFsdWUudmFsdWUoKS5pc0NlbGwoKSB8fCBUeXBlQ2hlY2s6OmlzQ29udHJh
dmVuZWRCeVZhbHVlKGl0ZXItPnZhbHVlLCB2YWx1ZS52YWx1ZSgpKSkgewogICAgICAgICAgICAg
ICAgICAgICBUeXBlQ2hlY2s6OmRpc2FibGVIb2lzdGluZyhpdGVyLT52YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29k
ZS5jcHAKaW5kZXggMGM2NWI5NjA3ZDI5MzVhZDAxZTFjYTAxNDc4YTc0NWI3YWE4YTIyNy4uYmRh
Njk1OWM4MDNlMWY4N2Y5Y2M2N2RlOTMxMGQ4NTkxMjIxYTNhYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCkBAIC0xNjMsMTkgKzE2MywxOSBAQCBSZWdpc3RlclNl
dCBKSVRDb2RlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxs
U2l0ZShDb2RlQmxvYwogICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+
IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogcGMpCitzdGQ6Om9w
dGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dm9pZCogcGMpCiB7CiAgICAgZm9yIChPU1JFeGl0JiBleGl0IDogbV9vc3JFeGl0KSB7CiAgICAg
ICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVj
dXRhYmxlTWVtb3J5KCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkudW50YWdn
ZWRQdHIoKSA8PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5kKCkudW50YWdnZWRQdHIoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5G
b3JFeGl0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29k
ZU9yaWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+JiBsYXp5U2xvd1Bh
dGggOiBsYXp5U2xvd1BhdGhzKSB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxl
KiBoYW5kbGUgPSBsYXp5U2xvd1BhdGgtPnN0dWIoKS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAg
ICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkudW50YWdnZWRQdHIoKSA8PSBwYyAmJiBwYyA8
IGhhbmRsZS0+ZW5kKCkudW50YWdnZWRQdHIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8Q29kZU9yaWdpbj4oY29kZUJsb2NrLT5jb2RlT3JpZ2luKGxhenlTbG93UGF0aC0+Y2Fs
bFNpdGVJbmRleCgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29k
ZU9yaWdpbj4oY29kZUJsb2NrLT5jb2RlT3JpZ2luKGxhenlTbG93UGF0aC0+Y2FsbFNpdGVJbmRl
eCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmgKaW5kZXggZTdiOGU4YjNjZTRiNDZlYzMyNWYzNzA0ZTNkZWVjYTA4ZWVkYWIyMy4uMThi
OGFjMzNkZmNkMDQ1MzBiNzM4Zjc3Y2I3ZmRjNjk5ZDE4NTcxOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRDb2RlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgUmVn
aXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNp
dGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxD
b2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBvdmVy
cmlkZTsKIAogICAgIENvZGVSZWY8SlNFbnRyeVB0clRhZz4gYjNDb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9iM0NvZGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhi
ZjM1Li44MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1YzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTg3Miw4ICsx
NTg3Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShmYXN0Q2FzZSk7CiAKLSAgICAgICAgT3B0
aW9uYWw8dW5zaWduZWQ+IHN0YXRpY1ZlY3Rvckxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHN0YXRpY1ZlY3Rvckxlbmd0aEZyb21QdWJsaWNMZW5ndGg7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXRpY1ZlY3Rvckxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gc3RhdGljVmVjdG9yTGVuZ3RoRnJvbVB1YmxpY0xlbmd0aDsKICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50UHRyKCkpIHsKICAgICAgICAgICAgIGlmIChwdWJsaWNM
ZW5ndGgtPmhhc0ludDMyKCkpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwdWJsaWNMZW5n
dGhDb25zdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwdWJsaWNMZW5ndGgtPmFzSW50MzIoKSk7
CkBAIC0xODMwMSw3ICsxODMwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGpzVmFsdWVUb1N0cmlj
dEludDUyKGVkZ2UsIGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7
CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBKU1R5cGVS
YW5nZSBxdWVyaWVkVHlwZVJhbmdlLCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExW
YWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlUmFuZ2UgcXVlcmllZFR5cGVS
YW5nZSwgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVy
eSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKICAgICAgICAgaWYg
KHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpIHsKICAgICAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVu
ID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnku
dmFsdWUoKSkpCkBAIC0xODMyMCw3ICsxODMyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBtX291dC5iZWxvd09yRXF1YWwoZmlyc3QsIG1fb3V0LmNvbnN0SW50MzIocXVlcmllZFR5cGVS
YW5nZS5sYXN0IC0gcXVlcmllZFR5cGVSYW5nZS5maXJzdCkpOwogICAgIH0KIAotICAgIExWYWx1
ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlIHF1ZXJpZWRUeXBlLCBPcHRpb25h
bDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2Vs
bCwgSlNUeXBlIHF1ZXJpZWRUeXBlLCBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVj
dWxhdGVkVHlwZUZvclF1ZXJ5LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAg
ICAgewogICAgICAgICByZXR1cm4gaXNDZWxsV2l0aFR5cGUoY2VsbCwgSlNUeXBlUmFuZ2UgeyBx
dWVyaWVkVHlwZSwgcXVlcmllZFR5cGUgfSwgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgdHlwZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRy
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCAw
NDFhY2RmZjc0MTkwMzgxMjY2MzgzMWU5OWVhNWZmNDg0ODBjYzQwLi42NzQ4ZTZiNzQxNDUyNzE4
ZWJkMGNhZDRlNDdmOWNiMzYwNTNiYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkVudHJ5LmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeSgK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIE9wZXJhbmRzPE9wdGlv
bmFsPEpTVmFsdWU+PiB2YWx1ZXM7CisgICAgT3BlcmFuZHM8c3RkOjpvcHRpb25hbDxKU1ZhbHVl
Pj4gdmFsdWVzOwogICAgIGRmZ0NvZGUtPnJlY29uc3RydWN0KGNhbGxGcmFtZSwgZGZnQ29kZUJs
b2NrLCBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpLCBzdHJlYW1JbmRleCwgdmFsdWVzKTsKICAg
ICAKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgVmFsdWVzIGF0
IGVudHJ5OiAiLCB2YWx1ZXMpOwogICAgIAotICAgIE9wdGlvbmFsPEpTVmFsdWU+IHJlY29uc3Ry
dWN0ZWRUaGlzOworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gcmVjb25zdHJ1Y3RlZFRoaXM7
CiAgICAgZm9yIChpbnQgYXJndW1lbnQgPSB2YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJn
dW1lbnQtLTspIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZU9uU3RhY2sgPSBjYWxsRnJhbWUtPnIo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50KSkuYXNhblVu
c2FmZUpTVmFsdWUoKTsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZT4gcmVjb25zdHJ1Y3RlZFZh
bHVlID0gdmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxK
U1ZhbHVlPiByZWNvbnN0cnVjdGVkVmFsdWUgPSB2YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpOwog
ICAgICAgICB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlVG9WYWxpZGF0ZSA9IHJlY29uc3Ry
dWN0ZWRWYWx1ZSA/ICpyZWNvbnN0cnVjdGVkVmFsdWUgOiB2YWx1ZU9uU3RhY2s7CiAgICAgICAg
ICAgICBhdXRvIGZsdXNoRm9ybWF0ID0gZW50cnlDb2RlLT5hcmd1bWVudEZsdXNoRm9ybWF0cygp
W2FyZ3VtZW50XTsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAg
ICAgICAgIGVudHJ5Q29kZS0+ZW50cnlCdWZmZXIoKS0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAg
ICBmb3IgKGludCBsb2NhbCA9IHZhbHVlcy5udW1iZXJPZkxvY2FscygpOyBsb2NhbC0tOykgewot
ICAgICAgICBPcHRpb25hbDxKU1ZhbHVlPiB2YWx1ZSA9IHZhbHVlcy5sb2NhbChsb2NhbCk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gdmFsdWUgPSB2YWx1ZXMubG9jYWwobG9jYWwp
OwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICBzY3JhdGNoW2xvY2FsXSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZS52YWx1ZSgpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NSZXF1ZXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1JlcXVlc3QuaAppbmRleCBhOGE1Y2Q2MWYwNjQ0ZjFjNDdiZmIxZWNlYTE2YzBj
ZGZkODFkNDg4Li4yZTgxYzAyYWFmNTA0ZjVhMmU4N2Y3ZjE5ZjdjNTk5N2U5OGE0YzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1JlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1JlcXVlc3QuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgR0NSZXF1ZXN0IHsKICAgICB7CiAgICAgfQogICAgIAotICAgIEdDUmVxdWVzdChPcHRpb25h
bDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQorICAgIEdDUmVxdWVzdChzdGQ6Om9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAgICAgIDogc2NvcGUoc2NvcGUpCiAgICAgewogICAg
IH0KQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IEdDUmVxdWVzdCB7CiAgICAgCiAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCi0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGU7CiAg
ICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4gZGlkRmluaXNoRW5kUGhhc2U7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDFjOGZiZDk3YWE3NzFjYmM3M2ZmM2Y2
NGJhZWNkMGY1OTJiNzdlMTkuLmNiMDc5YmY3NWExZDc0ODRjOGIyODc3YjQyNDgzNWQ0NjcyYzA5
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
U2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIENvbGxlY3Rpb25TY29w
ZSBzY29wZSkKIAogY2xhc3MgVGltaW5nU2NvcGUgewogcHVibGljOgotICAgIFRpbWluZ1Njb3Bl
KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAg
VGltaW5nU2NvcGUoc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlLCBjb25zdCBj
aGFyKiBuYW1lKQogICAgICAgICA6IG1fc2NvcGUoc2NvcGUpCiAgICAgICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgewpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAg
IAotICAgIHZvaWQgc2V0U2NvcGUoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKKyAg
ICB2b2lkIHNldFNjb3BlKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAg
ICB7CiAgICAgICAgIG1fc2NvcGUgPSBzY29wZTsKICAgICB9CkBAIC0yMjEsNyArMjIxLDcgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxDb2xsZWN0
aW9uU2NvcGU+IG1fc2NvcGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1f
c2NvcGU7CiAgICAgTW9ub3RvbmljVGltZSBtX2JlZm9yZTsKICAgICBjb25zdCBjaGFyKiBtX25h
bWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDNhZDc4MWFjYzgxOTAwNThi
NDAyYTcyMDgzODBkZWM1MDFkYjIzYzEuLmUzMGRjZGU2NzU4MmY2ZjQxYjIwOTJjZjhhNTEwNzYz
M2YyNDRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE2Niw3ICsxNjYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVy
KSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQogCiAgICAgTXV0YXRvclN0
YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9Ci0gICAg
T3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbGxlY3Rpb25TY29wZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3Bl
PiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQog
ICAgIGJvb2wgaGFzSGVhcEFjY2VzcygpIGNvbnN0OwogICAgIGJvb2wgd29ybGRJc1N0b3BwZWQo
KSBjb25zdDsKICAgICBib29sIHdvcmxkSXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gIXdvcmxk
SXNTdG9wcGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3Qu
Y3BwCmluZGV4IGZlNDQ3ZGY3N2EyMWE2OWM0OGEzNmQ0ODZhYzI1MjIxODAxOGNjMTYuLjFjMmM4
NTZlOTcyODI0NTFkYWFkY2QwNzcwYzNkYmJlYWRkOTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSGVh
cFNuYXBzaG90OjpmaW5hbGl6ZSgpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8SGVhcFNuYXBzaG90
Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCitzdGQ6Om9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBj
ZWxsKQogewogICAgIEFTU0VSVChtX2ZpbmFsaXplZCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBP
cHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2Vs
bCogY2VsbCkKICAgICAgICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IHN0YXJ0ICsgKChlbmQgLSBz
dGFydCkgLyAyKTsKICAgICAgICAgICAgIEhlYXBTbmFwc2hvdE5vZGUmIG5vZGUgPSBtX25vZGVz
W21pZGRsZV07CiAgICAgICAgICAgICBpZiAoY2VsbCA9PSBub2RlLmNlbGwpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAg
ICAgICAgICAgaWYgKGNlbGwgPCBub2RlLmNlbGwpCiAgICAgICAgICAgICAgICAgZW5kID0gbWlk
ZGxlOwogICAgICAgICAgICAgZWxzZQpAQCAtMTU3LDcgKzE1Nyw3IEBAIE9wdGlvbmFsPEhlYXBT
bmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhl
YXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRp
ZmllcikKK3N0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2Rl
Rm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3RJZGVudGlmaWVyKQogewogICAgIGlm
IChpc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcHJldmlvdXMpCkBAIC0xNzYsNyArMTc2LDcg
QEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0
SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3QKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG1fbm9k
ZXMpIHsKICAgICAgICAgaWYgKG5vZGUuaWRlbnRpZmllciA9PSBvYmplY3RJZGVudGlmaWVyKQot
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4obm9kZSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFNuYXBzaG90LmgKaW5kZXggNDUxNzFhNDNkZTE5YzE5MmZjMGQwYjFlZTg4OGQzOGQ2
ZjFhYjU2NC4uM2EyMzFjNzlkNzIwZDMzMTk0MWZiZTI5NmZlMmNiZjk1NzBjNDcxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKQEAgLTQ0LDggKzQ0LDggQEAg
cHVibGljOgogICAgIHZvaWQgZmluYWxpemUoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZXMuaXNFbXB0eSgpOyB9Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90
Tm9kZT4gbm9kZUZvckNlbGwoSlNDZWxsKik7Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9k
ZT4gbm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcik7Cisg
ICAgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBub2RlRm9yQ2VsbChKU0NlbGwqKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG5vZGVGb3JPYmplY3RJZGVudGlm
aWVyKHVuc2lnbmVkIG9iamVjdElkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBIZWFwU25hcHNob3RCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCmluZGV4IDZjN2ZhNmMwOGZlMDlj
MGQ4NTk3OThkYWI1ZWNiNGIwMjI1ZTY5ZGEuLjA2OTBjNjYwNWEwM2Q0ZDU3YzllZTgwNGM2NzNi
NDJkMGIzMDg2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U29sdmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBNYXJraW5n
Q29uc3RyYWludFNvbHZlcjo6ZGlkVmlzaXRTb21ldGhpbmcoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZXhlY3V0ZShTY2hlZHVs
ZXJQcmVmZXJlbmNlIHByZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25lZD4o
KT4gcGlja05leHQpCit2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpleGVjdXRlKFNjaGVk
dWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVkTGFtYmRhPHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+KCk+IHBpY2tOZXh0KQogewogICAgIG1fcGlja05leHRJc1N0aWxsQWN0aXZlID0gdHJ1
ZTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9udW1UaHJlYWRzVGhhdE1heVByb2R1Y2VXb3JrKTsK
QEAgLTg4LDggKzg4LDggQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZHJhaW4oQml0
VmVjdG9yJiB1bmV4ZWN1dGVkKQogICAgIGF1dG8gZW5kID0gdW5leGVjdXRlZC5lbmQoKTsKICAg
ICBpZiAoaXRlciA9PSBlbmQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBpY2tOZXh0ID0g
c2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPigKLSAgICAgICAgWyZdICgpIC0+IE9w
dGlvbmFsPHVuc2lnbmVkPiB7CisgICAgYXV0byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPigpPigKKyAgICAgICAgWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHsKICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuICppdGVyKys7CkBAIC0x
MjUsOCArMTI1LDggQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6Y29udmVyZ2UoY29u
c3QgVmVjdG9yPE1hcmtpbmdDb25zdHJhaW50Kj4mIG9yZGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBhdXRvIHBpY2tOZXh0ID0gc2NvcGVkTGFtYmRhPE9wdGlvbmFs
PHVuc2lnbmVkPigpPigKLSAgICAgICAgWyZdICgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7Cisg
ICAgYXV0byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigp
PigKKyAgICAgICAgWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAg
ICAgIGlmIChkaWRWaXNpdFNvbWV0aGluZygpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIE1hcmtpbmdD
b25zdHJhaW50U29sdmVyOjphZGRQYXJhbGxlbFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvcgogICAgIG1fdG9FeGVjdXRlSW5QYXJhbGxlbC5hcHBlbmQoVGFza1dpdGhDb25z
dHJhaW50KFdURk1vdmUodGFzayksICZjb25zdHJhaW50KSk7CiB9CiAKLXZvaWQgTWFya2luZ0Nv
bnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1dGlvblRocmVhZChTbG90VmlzaXRvciYgdmlzaXRvciwg
U2NoZWR1bGVyUHJlZmVyZW5jZSBwcmVmZXJlbmNlLCBTY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5z
aWduZWQ+KCk+IHBpY2tOZXh0KQordm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6cnVuRXhl
Y3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBTY2hlZHVsZXJQcmVmZXJlbmNlIHBy
ZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4
dCkKIHsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGJvb2wgZG9QYXJhbGxlbFdvcmtNb2RlOwpA
QCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXI6OnJ1bkV4ZWN1
dGlvblRocmVhZChTbG90VmlzaXRvciYgdmlzaXRvciwgU2NoZWR1bGVyCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1
bnNpZ25lZD4gcGlja1Jlc3VsdCA9IHBpY2tOZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwaWNrUmVzdWx0ID0gcGlja05leHQoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghcGlja1Jlc3VsdCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGlja05leHRJc1N0aWxsQWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmgKaW5kZXggOGU0ZjJmNGRkZjMxY2Zj
ODA3MWNmM2JlY2I2ZTVlMjc4YWVjYjAxZS4uZjYzZjVjNjdhMDI4MmUxZDk1MTAyNmJjM2FhY2E5
ZTgxYmQ4NzljNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2lu
Z0NvbnN0cmFpbnRTb2x2ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNvbHZlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
TmV4dENvbnN0cmFpbnRGaXJzdAogICAgIH07CiAKLSAgICB2b2lkIGV4ZWN1dGUoU2NoZWR1bGVy
UHJlZmVyZW5jZSwgU2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCk7
CisgICAgdm9pZCBleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UsIFNjb3BlZExhbWJkYTxzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCk7CiAgICAgCiAgICAgdm9pZCBkcmFpbihC
aXRWZWN0b3ImIHVuZXhlY3V0ZWQpOwogICAgIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRQYXJhbGxlbFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRv
ciYpPj4sIE1hcmtpbmdDb25zdHJhaW50Jik7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgcnVu
RXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiwgU2NoZWR1bGVyUHJlZmVyZW5jZSwgU2NvcGVk
TGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPiBwaWNrTmV4dCk7CisgICAgdm9pZCBydW5FeGVj
dXRpb25UaHJlYWQoU2xvdFZpc2l0b3ImLCBTY2hlZHVsZXJQcmVmZXJlbmNlLCBTY29wZWRMYW1i
ZGE8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKT4gcGlja05leHQpOwogICAgIAogICAgIHN0cnVj
dCBUYXNrV2l0aENvbnN0cmFpbnQgewogICAgICAgICBUYXNrV2l0aENvbnN0cmFpbnQoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAKaW5kZXggNjVmOGQ2YmYxN2FmMjdiNTU5ZDViZWYzMDg5NzU3ZmZhODVjNTRkZS4uOGIyOTBm
YWViYzE4NjU1MTliMGU3YzUxNGY0OTc1ODVkZmMwYmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgSW5qZWN0ZWRTY3JpcHQ6On5JbmplY3RlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmV4ZWN1dGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmdW5jdGlvblN0cmluZywgRXhlY3V0ZU9wdGlvbnMmJiBvcHRpb25zLCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9v
bD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OmV4ZWN1dGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvblN0cmluZywgRXhlY3V0ZU9wdGlvbnMmJiBvcHRpb25zLCBS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJleGVjdXRlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1bmN0
aW9uU3RyaW5nKTsKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXhlY3V0
ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKICAg
ICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93biwg
c2F2ZWRSZXN1bHRJbmRleCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKFBy
b3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3Vs
dCwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlv
bmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCit2
b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24s
IHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2
YWx1YXRlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5nJiBwcm9t
aXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlWYQogICAgIG1ha2VBc3luY0NhbGwoZnVuY3Rpb24s
IFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0
aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50
cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNU
aHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFs
dWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duKQogewogICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQp
OwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9u
T24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3QKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChyZXR1cm5CeVZhbHVlKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCi0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3Vs
dEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogICAgIG1h
a2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZl
ZFJlc3VsdEluZGV4KTsKICAgICBBU1NFUlQoIXNhdmVkUmVzdWx0SW5kZXgpOwogfQogCi12b2lk
IEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNh
bGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBP
cHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZh
bHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0M6
OkpTVmFsdWUgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywg
Ym9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGlu
dD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1l
Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvCiAgICAgZW50cmllcyA9IFByb3RvY29sOjpCaW5kaW5n
VHJhaXRzPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+
OjpydW50aW1lQ2FzdChyZXN1bHQucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRKU09OLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3Vs
dEluZGV4KQordm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6
b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNhdmVSZXN1
bHQiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggNTljMDdh
MzQxZWFhMjc4OGYzMTg5ZmI2YzM5ZTJmNmI2MzM4NTljNC4uZTZiMjQ5NjcyNzMwOTVhZTQyNGFj
OWIzZmU1ZTA4MWVlODk5OWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtNTksMTIgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBzYXZlUmVzdWx0IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPEpTQzo6SlNWYWx1
ZT4gYXJnczsKICAgICB9OwotICAgIHZvaWQgZXhlY3V0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uU3RyaW5nLCBFeGVjdXRlT3B0aW9ucyYmLCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4m
IHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgdm9pZCBl
eGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJp
bmcsIEV4ZWN1dGVPcHRpb25zJiYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9u
YWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICB2b2lkIGV2YWx1YXRlKFByb3RvY29s
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJv
d24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOworICAgIHZvaWQgZXZhbHVhdGUo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1
cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxi
b29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOwog
ICAgIHZvaWQgYXdhaXRQcm9taXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZU9iamVjdElkLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNhdmVSZXN1bHQsIEFz
eW5jQ2FsbENhbGxiYWNrJiYpOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBj
YWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBi
b29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwg
T3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCk7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25P
bihQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5
VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bik7CisgICAgdm9p
ZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYsIEpTQzo6SlNWYWx1
ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29sIHNh
dmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2
ZWRSZXN1bHRJbmRleCk7CisgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJh
dGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duKTsKICAgICB2b2lkIGdldEZ1bmN0aW9u
RGV0YWlscyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQs
IFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIHJlc3VsdCk7CiAg
ICAgdm9pZCBmdW5jdGlvbkRldGFpbHMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgSlNDOjpKU1Zh
bHVlLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiByZXN1bHQp
OwogICAgIHZvaWQgZ2V0UHJldmlldyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBy
ZXN1bHQpOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXREaXNwbGF5YWJs
ZVByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgaW50IGZldGNoU3RhcnQsIGludCBmZXRjaENvdW50LCBib29sIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKFByb3RvY29sOjpF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0KTsKICAgICB2b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKFBy
b3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXAsIGludCBmZXRjaFN0YXJ0LCBpbnQgZmV0Y2hDb3VudCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVz
KTsKLSAgICB2b2lkIHNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjYWxsQXJndW1lbnRKU09OLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsK
KyAgICB2b2lkIHNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjYWxsQXJndW1lbnRKU09OLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgp
OwogCiAgICAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
PiB3cmFwQ2FsbEZyYW1lcyhKU0M6OkpTVmFsdWUpIGNvbnN0OwogICAgIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwCmluZGV4IDE1YjAxNmZjZGI1MDJkZWQxMzNlNTA3ZjEzMDNjMzc0NGU2N2U4MzQu
LmRhN2UwOWNkNzkxOWIwYmJmNjIwNTZjNDdlYTE5NjU4ZDliODg1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAK
QEAgLTEwMCw5ICsxMDAsOSBAQCBSZWY8SlNPTjo6VmFsdWU+IEluamVjdGVkU2NyaXB0QmFzZTo6
bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdQogICAgIHJldHVybiBy
ZXN1bHRKU09OVmFsdWUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlw
dEJhc2U6Om1ha2VFdmFsQ2FsbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIG91dF9yZXN1bHRPYmplY3QsIE9wdGlvbmFsPGJvb2w+
JiBvdXRfd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBvdXRfc2F2ZWRSZXN1bHRJbmRleCkKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHRPYmplY3QsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJl
c3VsdEluZGV4KQogewotICAgIGNoZWNrQ2FsbFJlc3VsdChlcnJvclN0cmluZywgbWFrZUNhbGwo
ZnVuY3Rpb24pLCBvdXRfcmVzdWx0T2JqZWN0LCBvdXRfd2FzVGhyb3duLCBvdXRfc2F2ZWRSZXN1
bHRJbmRleCk7CisgICAgY2hlY2tDYWxsUmVzdWx0KGVycm9yU3RyaW5nLCBtYWtlQ2FsbChmdW5j
dGlvbiksIHJlc3VsdE9iamVjdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAog
dm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VBc3luY0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgQXN5bmNDYWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAg
LTE0Myw3ICsxNDMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIH0KIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdEJhc2U6OmNoZWNrQ2FsbFJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCwgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBvdXRfcmVzdWx0T2JqZWN0LCBPcHRpb25hbDxi
b29sPiYgb3V0X3dhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgb3V0X3NhdmVkUmVzdWx0SW5kZXgp
Cit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRp
b25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBlbXB0eSJfczsKQEAgLTE2MSwyOCArMTYxLDI5IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjaGVja0NhbGxSZXN1bHQoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgUmVmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHJlc3VsdE9iamVjdCA9IHJlc3VsdFR1cGxlLT5nZXRPYmplY3QoInJlc3VsdCJfcyk7Ci0g
ICAgaWYgKCFyZXN1bHRPYmplY3QpIHsKKyAgICBhdXRvIHR5cGVsZXNzUmVzdWx0T2JqZWN0ID0g
cmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zKTsKKyAgICBpZiAoIXR5cGVsZXNzUmVz
dWx0T2JqZWN0KSB7CisgICAgICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgYm90aGVyIGNoZWNraW5n
IGZvciBudWxsIGhlcmUsIGJ1dCBub3QgY2hlY2tpbmcgdGhhdCB0aGUgdHlwZSBpcyBQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PyBTdXJlbHkgdGhlIHR3byBwb3NzaWJsZSBlcnJvcnMg
Z28gaGFuZCBpbiBoYW5kLgogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjog
cmVzdWx0IGlzIG5vdCBhIHBhaXIgb2YgdmFsdWUgYW5kIHdhc1Rocm93biBmbGFnIl9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgb3V0X3dhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOwotICAgIGlmICghb3V0X3dhc1Rocm93bikgeworICAg
IHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOworICAg
IGlmICghd2FzVGhyb3duKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvdXRfcmVzdWx0T2JqZWN0ID0gUHJvdG9jb2w6
OkJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVD
YXN0KHJlc3VsdE9iamVjdC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBvdXRfc2F2ZWRSZXN1bHRJ
bmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRlZ2VyKCJzYXZlZFJlc3VsdEluZGV4Il9zKTsKKyAg
ICByZXN1bHRPYmplY3QgPSBQcm90b2NvbDo6QmluZGluZ1RyYWl0czxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QodHlwZWxlc3NSZXN1bHRPYmplY3QucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRl
Z2VyKCJzYXZlZFJlc3VsdEluZGV4Il9zKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6
OmNoZWNrQXN5bmNDYWxsUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBjb25zdCBB
c3luY0NhbGxDYWxsYmFjayYgY2FsbGJhY2spCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
IGVycm9yU3RyaW5nOwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiByZXN1bHRPYmplY3Q7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gd2FzVGhyb3duOwotICAgIE9wdGlv
bmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdhc1Ro
cm93bjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKIAogICAgIGNo
ZWNrQ2FsbFJlc3VsdChlcnJvclN0cmluZywgcmVzdWx0LCByZXN1bHRPYmplY3QsIHdhc1Rocm93
biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCmluZGV4IGY0ZTZhMGZlZWE0MTFjZDA1ODU5
ODRiZDc0YWNjNGIyNGFhOGVkMGYuLjYzNzZiZjEzNmNlN2NkMzJjNGIyMzk4NjY0YjA3NjRjNTE0
YTY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRGdW5jdGlvbkNh
bGw7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi11c2luZyBBc3luY0NhbGxDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiwgT3B0aW9uYWw8Ym9vbD4mJiwgT3B0aW9uYWw8
aW50PiYmKT47Cit1c2luZyBBc3luY0NhbGxDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mJiwgc3RkOjpvcHRpb25hbDxib29sPiYmLCBzdGQ6Om9wdGlvbmFsPGludD4mJik+Owog
CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgpA
QCAtNjgsMTEgKzY4LDExIEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CiAgICAgRXhwZWN0ZWQ8SlND
OjpKU1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4+IGNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmKSBjb25zdDsKICAgICBSZWY8
SlNPTjo6VmFsdWU+IG1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYpOwot
ICAgIHZvaWQgbWFrZUV2YWxDYWxsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0T2JqZWN0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxp
bnQ+JiBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICB2b2lkIG1ha2VFdmFsQ2FsbChQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRpb25h
bDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgp
OwogICAgIHZvaWQgbWFrZUFzeW5jQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwm
LCBBc3luY0NhbGxDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNoZWNrQ2FsbFJl
c3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCwg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHRPYmplY3QsIE9w
dGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgp
OworICAgIHZvaWQgY2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6
Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpOwogICAgIHZvaWQgY2hlY2tBc3luY0Nh
bGxSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIGNvbnN0IEFzeW5jQ2FsbENhbGxi
YWNrJik7CiAKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggMmJhMDUzZGI1ODQwZjBh
NzlmNWRjZGQ4NjczODAxYzJlNjZlMTA0My4uNGYzYWQzYjZiMGFhZGYyYjdmMGIzYzlkODdiNmQ0
MmYzOGZiZDJlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00NCwxMiArNDQsMTIgQEAgcHVibGljOgogICAgIEpT
Qzo6SlNWYWx1ZSB3cmFwcGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2b2lkIGNsZWFy
QWxsV3JhcHBlcnMoKTsKIAotICAgIHZvaWQgc2V0U2F2ZWRSZXN1bHRBbGlhcyhjb25zdCBPcHRp
b25hbDxTdHJpbmc+JiBhbGlhcykgeyBtX3NhdmVkUmVzdWx0QWxpYXMgPSBhbGlhczsgfQotICAg
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHNhdmVkUmVzdWx0QWxpYXMoKSBjb25zdCB7IHJldHVy
biBtX3NhdmVkUmVzdWx0QWxpYXM7IH0KKyAgICB2b2lkIHNldFNhdmVkUmVzdWx0QWxpYXMoY29u
c3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBhbGlhcykgeyBtX3NhdmVkUmVzdWx0QWxpYXMgPSBh
bGlhczsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgc2F2ZWRSZXN1bHRBbGlh
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRSZXN1bHRBbGlhczsgfQogCiBwcml2YXRlOgogICAg
IFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZCBtX3dyYXBwZXJzOwotICAgIE9wdGlvbmFsPFN0
cmluZz4gbV9zYXZlZFJlc3VsdEFsaWFzOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX3Nh
dmVkUmVzdWx0QWxpYXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggNDYwNDZlZGIwMTNiNDcwMDIwMWUyNTMxMjc3YzE1YWY2
ODQwMTRlZS4uNDg5NWM1YTcwZDZhNDc0NTU5N2Y3NzE2M2JjOTJlMDc0NTU5NDgyOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewogICAgICAg
ICAvLyBJbiBjYXNlIHRoaXMgaXMgYSByZS1lbnRyYW50IGNhbGwgZnJvbSBhIG5lc3RlZCBydW4g
bG9vcCwgd2UgZG9uJ3Qgd2FudCB0byBsb3NlCiAgICAgICAgIC8vIHRoZSBvdXRlciByZXF1ZXN0
J3MgaWQganVzdCBiZWNhdXNlIHRoZSBpbm5lciByZXF1ZXN0IGlzIGJvZ3VzLgotICAgICAgICBT
ZXRGb3JTY29wZTxPcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVl
c3RJZCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxs
b25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsK
IAogICAgICAgICBhdXRvIHBhcnNlZE1lc3NhZ2UgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKG1l
c3NhZ2UpOwogICAgICAgICBpZiAoIXBhcnNlZE1lc3NhZ2UpIHsKQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiAKICAgICB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGJlIGNhbGxlZCByZS1lbnRyYW50bHkgZnJv
bSBhIG5lc3RlZCBydW4gbG9vcCwgc28gcmVzdG9yZSB0aGUgcHJldmlvdXMgaWQuCi0gICAgICAg
IFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVx
dWVzdElkLCByZXF1ZXN0SWQpOworICAgICAgICBTZXRGb3JTY29wZTxzdGQ6Om9wdGlvbmFsPGxv
bmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOwogCiAg
ICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBtZXNzYWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9k
Il9zKTsKICAgICAgICAgaWYgKCFtZXRob2RWYWx1ZSkgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZv
aWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2Rl
IGVycm9yQ29kZSwgY29uc3QgU3RyCiAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihtX2N1cnJlbnRS
ZXF1ZXN0SWQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAotdm9pZCBCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihPcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVz
dElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRp
b25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwg
ZXJyb3JDb2RlID49IDApOwogCkBAIC0zMTMsMjMgKzMxMywyMyBAQCBUIEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRQcm9wZXJ0eVZhbHVlKEpTT046Ok9iamVjdCogcGFyYW1zLCBjb25zdCBTdHJpbmcm
IG5hbWUsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gQmFja2VuZERp
c3BhdGNoZXI6OmdldEJvb2xlYW4oSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCByZXF1aXJlZCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gQmFja2VuZERpc3BhdGNo
ZXI6OmdldEJvb2xlYW4oSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCByZXF1aXJlZCkKIHsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxPcHRpb25hbDxi
b29sPj4ocGFyYW1zLCBuYW1lLCByZXF1aXJlZCwgJkpTT046OlZhbHVlOjphc0Jvb2xlYW4sICJC
b29sZWFuIik7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8c3RkOjpvcHRpb25hbDxib29s
Pj4ocGFyYW1zLCBuYW1lLCByZXF1aXJlZCwgJkpTT046OlZhbHVlOjphc0Jvb2xlYW4sICJCb29s
ZWFuIik7CiB9CiAKLU9wdGlvbmFsPGludD4gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIo
SlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCkK
K3N0ZDo6b3B0aW9uYWw8aW50PiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihKU09OOjpP
YmplY3QqIHBhcmFtcywgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKQogewogICAg
IC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNzk4NDc+IHNpbXBsaWZ5IHRoaXMgd2hl
biBsZWdhY3kgSW5zcGVjdG9yT2JqZWN0IHN5bWJvbHMgYXJlIG5vIGxvbmdlciBuZWVkZWQuCi0g
ICAgT3B0aW9uYWw8aW50PiAoSlNPTjo6VmFsdWU6Oiphc0ludGVnZXIpKCkgY29uc3QgPSAmSlNP
Tjo6VmFsdWU6OmFzSW50ZWdlcjsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxPcHRpb25h
bDxpbnQ+PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCBhc0ludGVnZXIsICJJbnRlZ2VyIik7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IChKU09OOjpWYWx1ZTo6KmFzSW50ZWdlcikoKSBjb25zdCA9
ICZKU09OOjpWYWx1ZTo6YXNJbnRlZ2VyOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPHN0
ZDo6b3B0aW9uYWw8aW50Pj4ocGFyYW1zLCBuYW1lLCByZXF1aXJlZCwgYXNJbnRlZ2VyLCAiSW50
ZWdlciIpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3Vi
bGUoSlNPTjo6T2JqZWN0KiBwYXJhbXMsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJl
ZCkKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEpT
T046Ok9iamVjdCogcGFyYW1zLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpCiB7
CiAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzE3OTg0Nz4gc2ltcGxpZnkgdGhp
cyB3aGVuIGxlZ2FjeSBJbnNwZWN0b3JPYmplY3Qgc3ltYm9scyBhcmUgbm8gbG9uZ2VyIG5lZWRl
ZC4KLSAgICBPcHRpb25hbDxkb3VibGU+IChKU09OOjpWYWx1ZTo6KmFzRG91YmxlKSgpIGNvbnN0
ID0gJkpTT046OlZhbHVlOjphc0RvdWJsZTsKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxP
cHRpb25hbDxkb3VibGU+PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCBhc0RvdWJsZSwgIk51bWJl
ciIpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiAoSlNPTjo6VmFsdWU6Oiphc0RvdWJsZSko
KSBjb25zdCA9ICZKU09OOjpWYWx1ZTo6YXNEb3VibGU7CisgICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWU8c3RkOjpvcHRpb25hbDxkb3VibGU+PihwYXJhbXMsIG5hbWUsIHJlcXVpcmVkLCBhc0Rv
dWJsZSwgIk51bWJlciIpOwogfQogCiBTdHJpbmcgQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
ZyhKU09OOjpPYmplY3QqIHBhcmFtcywgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmluZGV4IDIxN2IzMTkzZTU4ZjNmMTFjZGE2ZTY4YTgy
OWE5YjhhOWMxMDFmNjAuLjIzODIwMzQwZWFkMDU2MTY4OGFhMDI4ZGJhODkyYjU0MzExODliOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAgLTk2LDExICs5NiwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZW5kUGVuZGluZ0Vycm9ycygpOwogCiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVy
cm9yKENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZv
aWQgcmVwb3J0UHJvdG9jb2xFcnJvcihPcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBD
b21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHJl
cG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBD
b21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAotICAgIE9wdGlv
bmFsPGJvb2w+IGdldEJvb2xlYW4oSlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIHJlcXVpcmVkKTsKLSAgICBPcHRpb25hbDxpbnQ+IGdldEludGVnZXIoSlNPTjo6T2JqZWN0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IGdldERvdWJsZShKU09OOjpPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVx
dWlyZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2V0Qm9vbGVhbihKU09OOjpPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBnZXRJbnRlZ2VyKEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBy
ZXF1aXJlZCk7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdldERvdWJsZShKU09OOjpPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgcmVxdWlyZWQpOwogICAgIFN0cmluZyBnZXRT
dHJpbmcoSlNPTjo6T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHJlcXVpcmVkKTsK
ICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IGdldFZhbHVlKEpTT046Ok9iamVjdCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gZ2V0
T2JqZWN0KEpTT046Ok9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCByZXF1aXJlZCk7
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZvciBzeW5jaHJvbm91c2x5
IGhhbmRsZWQgcmVxdWVzdHMsIGF2b2lkIHBsdW1iaW5nIHJlcXVlc3RJZCB0aHJvdWdoIGV2ZXJ5
CiAgICAgLy8gY2FsbCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGZhaWwgd2l0aCBhIHByb3RvY29s
IGVycm9yLgotICAgIE9wdGlvbmFsPGxvbmc+IG1fY3VycmVudFJlcXVlc3RJZCB7IHN0ZDo6bnVs
bG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZz4gbV9jdXJyZW50UmVxdWVzdElkIHsgc3Rk
OjpudWxsb3B0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5jcHAKaW5kZXggYzc2ZjFmMjA2M2NiNWU5MDBjZGIzMjQ3OTUwMDEzZmQwOWNl
NjYwYi4uMzBhY2FmMzM0NTgwNTM3NGQ4MWRiYjBiMWM1ZDQ5ZmY3YWYwYTZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JBdWRp
dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQog
ewogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50
OjpzZXR1cChPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
IGV4ZWN1dGlvbkNvbnRleHRJZCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckF1ZGl0QWdlbnQ6OnNldHVwKHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC04NCw3ICs4NCw3IEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKE9wdGlvbmFsPFBy
b3RvY29sOjpSdW50CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlv
bmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihjb25z
dCBTdHJpbmcmIHRlc3QsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250
ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3Rk
Ojp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKGNvbnN0
IFN0cmluZyYgdGVzdCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEwMCw4ICsxMDAsOCBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
T3B0aW9uYQogICAgICAgICBvcHRpb25zLmFyZ3MgPSB7IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JB
dWRpdFZhbHVlLmdldCgpIH07CiAKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gcmVzdWx0OwotICAgIE9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKLSAgICBPcHRp
b25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNU
aHJvd247CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKICAgICBK
U0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1w
b3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKICAgICB0ZW1w
b3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
dWRpdEFnZW50LmgKaW5kZXggYmY1MDZjMzZkMmRmZjNmNmZjYTU5OWY2N2U1ODU0YTI2OGE3YjFk
NS4uZDgyOGI5YmNmM2Q0MWRkZDY0MTg1YzQ1M2I2ZjIxZWVhZDU3NzM0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckF1ZGl0QWdlbnQuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKIAogICAgIC8v
IEF1ZGl0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc2V0dXAoT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJikgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdh
c1Rocm93biAqLz4+IHJ1bihjb25zdCBTdHJpbmcmIHRlc3QsIE9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IHNldHVwKHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gcnVuKGNvbnN0IFN0cmluZyYgdGVzdCwgc3Rk
OjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5h
bDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiB0ZWFyZG93bigpIGZpbmFsOwog
CiAgICAgYm9vbCBoYXNBY3RpdmVBdWRpdCgpIGNvbnN0OwpAQCAtNjMsNyArNjMsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpIHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFsIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7
CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0
aW9uQ29udGV4dElkPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVBdWRpdE9i
amVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mIGF1
ZGl0T2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMmQ5
NDQzZDVjYWI5ZDQ1MmYzYjBmMWZkNDFjNTdhYTBlZDkyOWU0Li5iZTkxMGViMjgyZWU1M2U3ZjM1
ZjZiMDNhNjY5YzU5Mzk3YzFkOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgYm9vbCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIHJldHVybiBzb3VyY2VVUkwuc3RhcnRzV2l0aCgi
X19JbmplY3RlZFNjcmlwdF8iKSAmJiBzb3VyY2VVUkwuZW5kc1dpdGgoIi5qcyIpOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8SlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU+IGJyZWFrcG9pbnRB
Y3Rpb25UeXBlRm9yU3RyaW5nKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEpTQzo6QnJlYWtw
b2ludDo6QWN0aW9uOjpUeXBlPiBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiB7
CiAgICAgYXV0byB0eXBlID0gUHJvdG9jb2w6OkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU+KHR5cGVTdHJp
bmcpOwogICAgIGlmICghdHlwZSkgewpAQCAtMTQ0LDE2ICsxNDQsMTYgQEAgc3RhdGljIFQgcGFy
c2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBS
ZWZQdHI8SlNPTjoKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlv
bnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEpTQzo6U291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpTb3VyY2VJRCBzb3VyY2VJ
RCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlv
bnM8T3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUob3B0
aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0
aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291
bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4geworICAgIHJldHVybiBwYXJzZUJy
ZWFrcG9pbnRPcHRpb25zPHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50Pj4oZXJyb3JT
dHJpbmcsIFdURk1vdmUob3B0aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpT
Qzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVl
LCBzaXplX3QgaWdub3JlQ291bnQpIC0+IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50
PiB7CiAgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGlu
dWUsIGlnbm9yZUNvdW50KTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90
b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25z
KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9p
bnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxv
YWQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmws
IGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVy
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIHBhcnNlQnJl
YWtwb2ludE9wdGlvbnM8T3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcs
IFdURk1vdmUob3B0aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJl
YWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXpl
X3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4geworICAgIHJl
dHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3Bv
aW50Pj4oZXJyb3JTdHJpbmcsIFdURk1vdmUob3B0aW9ucyksIFsmXSAoY29uc3QgU3RyaW5nJiBj
b25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wg
YXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IHN0ZDo6b3B0aW9uYWw8UHJvdG9j
b2xCcmVha3BvaW50PiB7CiAgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQodXJsLCBp
c1JlZ2V4LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rp
b25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CiAgICAgfSk7CiB9CkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjppbnRlcm5hbEVuYWJsZSgpCiAg
ICAgICAgIGxpc3RlbmVyLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKIAogICAgIGZvciAoYXV0byYg
W3NvdXJjZUlELCBzY3JpcHRdIDogbV9zY3JpcHRzKSB7Ci0gICAgICAgIE9wdGlvbmFsPEpTQzo6
RGVidWdnZXI6OkJsYWNrYm94VHlwZT4gYmxhY2tib3hUeXBlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4gYmxhY2tib3hUeXBlOwogICAgICAgICBp
ZiAoaXNXZWJLaXRJbmplY3RlZFNjcmlwdChzY3JpcHQuc291cmNlVVJMKSkgewogICAgICAgICAg
ICAgaWYgKCFtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKQogICAgICAgICAgICAgICAgIGJsYWNr
Ym94VHlwZSA9IEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZTo6SWdub3JlZDsKQEAgLTUzOSw3
ICs1MzksNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0
aW9uPj4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBPcHRp
b25hbDxpbnQ+JiYgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMp
CitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0
aW9uPj4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFJlZ2V4LCBzdGQ6
Om9wdGlvbmFsPGludD4mJiBjb2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0
aW9ucykKIHsKICAgICBpZiAoIXVybCA9PSAhdXJsUmVnZXgpCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZCJfcyk7
CkBAIC03MjgsNyArNzI4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKFJlZjxKU08KICAgICByZXR1cm4g
eyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZWFyY2hJbkNvbnRlbnQoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpTY3JpcHRJZCYgc2Ny
aXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIE9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2
ZSwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVm
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KGNvbnN0IFByb3RvY29sOjpEZWJ1
Z2dlcjo6U2NyaXB0SWQmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgp
CiB7CiAgICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52YWx1ZV9vcigwKSk7CiAgICAgaWYg
KGl0ID09IG1fc2NyaXB0cy5lbmQoKSkKQEAgLTk5Miw3ICs5OTIsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWljcm90
YXNrcyhib29sCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFs
PGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4
ICovPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQ
cm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYm
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0
aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3Vs
dCwgT3B0aW9uYWw8Ym9vbD4mJiAgLyogZW11bGF0ZVVzZXJHZXN0dXJlICovKQorUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFs
PGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYg
Y2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwg
c3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykKIHsKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEwMTIsOCArMTAxMiw4IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+LCBPcHRpb25hCiAgICAgfQogCiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdDsKLSAgICBPcHRpb25hbDxib29sPiB3YXNUaHJvd247
Ci0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gd2FzVGhyb3duOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4
OwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywg
bV9jdXJyZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZV9vcihmYWxzZSksIHJldHVybkJ5VmFs
dWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZl
UmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5k
ZXgpOwogCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAg
IHJldHVybiB7IHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUod2FzVGhyb3duKSwg
V1RGTW92ZShzYXZlZFJlc3VsdEluZGV4KSB9IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNob3VsZEJsYWNrYm94VVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBib29sIHNob3VsZEJsYWNrYm94LCBPcHRpb25hbDxib29sPiYmIG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8Ym9vbD4mJiBvcHRpb25hbElzUmVnZXgpCitQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRT
aG91bGRCbGFja2JveFVSTChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwg
c3RkOjpvcHRpb25hbDxib29sPiYmIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRpb25h
bDxib29sPiYmIG9wdGlvbmFsSXNSZWdleCkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVUkwgbXVzdCBub3QgYmUgZW1wdHkiX3MpOwpA
QCAtMTA0Nyw3ICsxMDQ3LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0U2hvdWxkQmxhY2tib3hVUkwoY29uc3QKICAgICAgICAgaWYg
KGlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoc2NyaXB0LnNvdXJjZVVSTCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBPcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+
IGJsYWNrYm94VHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFj
a2JveFR5cGU+IGJsYWNrYm94VHlwZTsKICAgICAgICAgaWYgKHNob3VsZEJsYWNrYm94VVJMKHNj
cmlwdC5zb3VyY2VVUkwpIHx8IHNob3VsZEJsYWNrYm94VVJMKHNjcmlwdC51cmwpKQogICAgICAg
ICAgICAgYmxhY2tib3hUeXBlID0gSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpEZWZlcnJl
ZDsKICAgICAgICAgbV9kZWJ1Z2dlci5zZXRCbGFja2JveFR5cGUoc291cmNlSUQsIGJsYWNrYm94
VHlwZSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZUZvckludGVybmFsU2NyaXB0cwogCiAg
ICAgbV9wYXVzZUZvckludGVybmFsU2NyaXB0cyA9IHNob3VsZFBhdXNlOwogCi0gICAgYXV0byBi
bGFja2JveFR5cGUgPSAhbV9wYXVzZUZvckludGVybmFsU2NyaXB0cyA/IE9wdGlvbmFsPEpTQzo6
RGVidWdnZXI6OkJsYWNrYm94VHlwZT4oSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25v
cmVkKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIGJsYWNrYm94VHlwZSA9ICFtX3BhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzID8gc3RkOjpvcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5
cGU+KEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZTo6SWdub3JlZCkgOiBzdGQ6Om51bGxvcHQ7
CiAgICAgZm9yIChhdXRvJiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAg
ICAgaWYgKCFpc1dlYktpdEluamVjdGVkU2NyaXB0KHNjcmlwdC5zb3VyY2VVUkwpKQogICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggZmY2ZjE0
NGI1MzhmZWIzZTBiYWE5YWRmYWU3MGZlZGI1NTc0YTUxNC4uNDM4ZGEzNjEyNDQ5ZDc0MTQxMjNh
NTc3Y2I2NGM5MGRkNzIyZjgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAt
NzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
ZGlzYWJsZSgpIGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldEFz
eW5jU3RhY2tUcmFjZURlcHRoKGludCkgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc2V0QnJlYWtwb2ludHNBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJ
ZCwgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+Pj4gc2V0
QnJlYWtwb2ludEJ5VXJsKGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB1cmxSZWdleCwgT3B0aW9uYWw8aW50PiYmIGNvbHVtbk51bWJlciwgUmVmUHRyPEpT
T046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBSZWY8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4+PiBzZXRCcmVha3BvaW50QnlV
cmwoaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFJl
Z2V4LCBzdGQ6Om9wdGlvbmFsPGludD4mJiBjb2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+JiYgb3B0aW9ucykgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0
dXBsZTxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgUmVmPFByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+Pj4gc2V0QnJlYWtwb2ludChSZWY8SlNPTjo6T2JqZWN0PiYmIGxvY2F0
aW9uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZpbmFsOwogICAgIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoKSBmaW5hbDsKQEAgLTg0LDcgKzg0LDcg
QEAgcHVibGljOgogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0ZXBPdXQoKSBm
aW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBwYXVzZSgpIGZpbmFsOwog
ICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlc3VtZSgpIGZpbmFsOwotICAgIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4+IHNlYXJjaEluQ29udGVudChjb25zdCBQcm90b2NvbDo6RGVi
dWdnZXI6OlNjcmlwdElkJiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBj
YXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpIGZpbmFsOworICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPj4+IHNlYXJjaEluQ29udGVudChjb25zdCBQcm90b2NvbDo6RGVidWdn
ZXI6OlNjcmlwdElkJiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGNhc2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdldFNjcmlwdFNvdXJjZShjb25zdCBQ
cm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElkJikgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPj4gZ2V0RnVu
Y3Rpb25EZXRhaWxzKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCkgZmluYWw7CiAgICAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhib29s
IGVuYWJsZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucykgZmluYWw7CkBAIC05Miw4
ICs5Miw4IEBAIHB1YmxpYzoKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRQ
YXVzZU9uQXNzZXJ0aW9ucyhib29sIGVuYWJsZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0
aW9ucykgZmluYWw7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0UGF1c2VP
bk1pY3JvdGFza3MoYm9vbCBlbmFibGVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMp
IGZpbmFsOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFBhdXNlRm9ySW50
ZXJuYWxTY3JpcHRzKGJvb2wgc2hvdWxkUGF1c2UpIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
LCBPcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRS
ZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWVJZCYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgT3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9w
dGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRp
b25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2
aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0
ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBzZXRTaG91bGRCbGFja2JveFVSTChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFj
a2JveCwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlz
UmVnZXgpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8q
IHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+
PiBldmFsdWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
SWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJh
dGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkgb3ZlcnJpZGU7CisgICAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gc2V0U2hvdWxkQmxhY2tib3hVUkwoY29uc3QgU3RyaW5nJiB1cmws
IGJvb2wgc2hvdWxkQmxhY2tib3gsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkgZmluYWw7CiAKICAgICAvLyBKU0M6OkRl
YnVnZ2VyOjpDbGllbnQKICAgICBKU0M6OkpTT2JqZWN0KiBkZWJ1Z2dlclNjb3BlRXh0ZW5zaW9u
T2JqZWN0KEpTQzo6RGVidWdnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYpIGZpbmFsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgaW50ZXJuYWxEaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7CiAKICAg
ICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9Ci0gICAgdmlydHVhbCBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9u
YWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOworICAgIHZp
cnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJv
clN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJikgPSAwOwogCiAgICAgSlNDOjpEZWJ1Z2dlciYgZGVidWdnZXIoKSB7IHJldHVybiBt
X2RlYnVnZ2VyOyB9CiAKQEAgLTE3Miw4ICsxNzIsOCBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBy
b3RvY29sQnJlYWtwb2ludCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gZnJv
bVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG9wdGlvbnMgPSBudWxscHRyKTsKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sQnJl
YWtwb2ludD4gZnJvbVBheWxvYWQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMgPSBudWxscHRyKTsKKyAgICAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBKU0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0aW9ucyA9
IG51bGxwdHIpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm90b2NvbEJyZWFrcG9p
bnQ+IGZyb21QYXlsb2FkKFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJs
LCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
ciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zID0gbnVsbHB0cik7CiAKICAgICAgICAg
UHJvdG9jb2xCcmVha3BvaW50KCk7CiAgICAgICAgIFByb3RvY29sQnJlYWtwb2ludChKU0M6OlNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlv
bnNWZWN0b3ImJiBhY3Rpb25zID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXpl
X3QgaWdub3JlQ291bnQgPSAwKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IG1fcHJlQmxhY2tib3hQYXVzZURhdGE7CiAKICAgICBIYXNoTWFw
PEFzeW5jQ2FsbElkZW50aWZpZXIsIFJlZlB0cjxBc3luY1N0YWNrVHJhY2U+PiBtX3BlbmRpbmdB
c3luY0NhbGxzOwotICAgIE9wdGlvbmFsPEFzeW5jQ2FsbElkZW50aWZpZXI+IG1fY3VycmVudEFz
eW5jQ2FsbElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxBc3luY0NhbGxJZGVudGlmaWVy
PiBtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlmaWVyOwogICAgIGludCBtX2FzeW5jU3RhY2tUcmFj
ZURlcHRoIHsgMCB9OwogCiAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQXNz
ZXJ0aW9uc0JyZWFrcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBjZjJjZDhm
ZmM5ZTg5MTVhODRiMTY4OTM4MzdkMmU5YmU5ZTc0OTc4Li43NjAzMDQxMDIyM2U3MjI4NTg3YTlm
ZTI4YTVlOWNiNTRlNjVkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE1Miw3
ICsxNTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JIZWFwQWdl
bnQ6OnN0b3BUcmFja2luZygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZp
ZXIoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgdW5zaWduZWQgaGVhcE9iamVj
dElkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEluc3BlY3Rvckhl
YXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKQogewogICAgIEhl
YXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0gbV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxl
cigpOwogICAgIGlmICghaGVhcFByb2ZpbGVyKSB7CkBAIC0xNjYsNyArMTY2LDcgQEAgT3B0aW9u
YWw8SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVj
dElkZW50aWZpZXIoUHJvdG8KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
LSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFw
c2hvdC0+bm9kZUZvck9iamVjdElkZW50aWZpZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gc25h
cHNob3QtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAg
ICBpZiAoIW9wdGlvbmFsTm9kZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJObyBvYmplY3Qg
Zm9yIGlkZW50aWZpZXIsIGl0IG1heSBoYXZlIGJlZW4gY29sbGVjdGVkIl9zOwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg1LDcgKzE4NSw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8U3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5j
dGlvbkRlCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgdW5zaWduZWQgaGVh
cE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcE9iamVjdElkKTsK
LSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2Rl
Rm9ySGVhcE9iamVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9k
ZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElk
ZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2RlKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCkBAIC0yMzUsNyArMjM1LDcgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0
b3JIZWFwQWdlbnQKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAKICAgICB1bnNpZ25l
ZCBoZWFwT2JqZWN0SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwT2JqZWN0
SWQpOwotICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9
IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50
aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9u
YWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKGVycm9yU3RyaW5nLCBoZWFwT2Jq
ZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFvcHRpb25hbE5vZGUpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKaW5kZXgg
Y2FhNTEyZDBhYjJlMTBhODhlMGVlNjBjMmUzMmQ3NDM5NDIyMjdhZC4uYTU0NzEzNWQ3ODFkM2M2
MmE0NGE2MGJiMDQ5MTljMjA4MmExOWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKQEAgLTcy
LDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdhcmJhZ2VD
b2xsZWN0ZWRFdmVudChQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUsIFNl
Y29uZHMgc3RhcnRUaW1lLCBTZWNvbmRzIGVuZFRpbWUpOwogCiBwcml2YXRlOgotICAgIE9wdGlv
bmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKFBy
b3RvY29sOjpFcnJvclN0cmluZyYsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckhlYXBPYmplY3RJ
ZGVudGlmaWVyKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVu
dGlmaWVyKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMDRk
MmYzMWY5MzE2YWM0ODI2MTU3MmFkYzY5ZDAxYTdiNjY0OGQ5YS4uNzZkNzJjNzI3M2YxYmIyMTcw
NDg1MDE1ZDkzMWIxZmJhOTJkM2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UHJv
dG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSwgU3RyaW5nIC8qCiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7CiAgICAgY2hlY2tTeW50YXgobV92bSwgSlNDOjptYWtlU291cmNlKGV4cHJlc3Np
b24sIHsgfSksIGVycm9yKTsKIAotICAgIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpTeW50
YXhFcnJvclR5cGU+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU+IHJlc3VsdDsKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IHJhbmdlOwogCkBAIC0xMjEsNyArMTIx
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6UnVudGlt
ZTo6U3ludGF4RXJyb3JUeXBlLCBTdHJpbmcgLyoKICAgICByZXR1cm4geyB7ICpyZXN1bHQsIG1l
c3NhZ2UsIFdURk1vdmUocmFuZ2UpIH0gfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFs
PGJvb2w+IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4
ICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBPcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRl
eHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1
ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2
ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCitQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVj
dXRpb25Db250ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
c2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAq
LykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEzMCw4
ICsxMzAsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IHJlc3VsdDsKLSAgICBPcHRpb25hbDxib29sPiB3YXNUaHJvd247Ci0gICAg
T3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
d2FzVGhyb3duOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCiAg
ICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMg
dGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CiAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgIHJldHVybiB7IHty
ZXN1bHQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh3YXNUaHJvd24pLCBXVEZNb3ZlKHNhdmVk
UmVzdWx0SW5kZXgpIH0gfTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0
UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIHByb21pc2VP
YmplY3RJZCwgT3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25hbDxib29sPiYm
IGdlbmVyYXRlUHJldmlldywgT3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBSZWY8QXdhaXRQ
cm9taXNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
YXdhaXRQcm9taXNlKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgcHJv
bWlzZU9iamVjdElkLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpv
cHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNh
dmVSZXN1bHQsIFJlZjxBd2FpdFByb21pc2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmlu
amVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQocHJvbWlzZU9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0SWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGluamVjdGVkU2NyaXB0
LmF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFs
c2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29y
KGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mJiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiYg
c2F2ZWRSZXN1bHRJbmRleCkgeworICAgIGluamVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9t
aXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZp
ZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYmIHNhdmVkUmVz
dWx0SW5kZXgpIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBjYWxsYmFjay0+
c2VuZEZhaWx1cmUoZXJyb3JTdHJpbmcpOwogICAgICAgICBlbHNlCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQKICAgICB9KTsKIH0KIAotUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbkRlY2xhcmF0aW9uLCBSZWZQdHI8SlNPTjo6
QXJyYXk+JiYgYXJndW1lbnRzLCBPcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgT3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBPcHRpb25h
bDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgT3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNl
ckdlc3R1cmUgKi8pCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNU
aHJvd24gKi8+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0IFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwg
c3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdl
c3R1cmUgKi8pCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBA
IC0xNzcsNyArMTc3LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0
SWQiX3MpOwogCiAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJl
c3VsdDsKLSAgICBPcHRpb25hbDxib29sPiB3YXNUaHJvd247CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiB3YXNUaHJvd247CiAKICAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVF
eGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50
cyhtX2RlYnVnZ2VyKTsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4+IEluc3BlY3RvclJ1bnRp
bWVBCiAgICAgcmV0dXJuIHByZXZpZXcucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpnZXRQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3RJZCYgb2JqZWN0SWQsIE9wdGlvbmFsPGJvb2w+JiYgb3duUHJvcGVydGllcywgT3B0aW9uYWw8
aW50PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50LCBPcHRpb25hbDxi
b29sPiYmIGdlbmVyYXRlUHJldmlldykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3I+Pj4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhj
b25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgb3duUHJvcGVydGllcywgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hT
dGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGdlbmVyYXRlUHJldmlldykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JT
dHJpbmc7CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAg
IHJldHVybiB7IHsgcHJvcGVydGllcy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFs
UHJvcGVydGllcykgfSB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxl
PFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJv
cGVydGllcyhjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElk
LCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgT3B0aW9uYWw8aW50PiYmIGZldGNoQ291bnQs
IE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3KQorUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dElkJiBvYmplY3RJZCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRp
b25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJl
dmlldykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTI5
OSw3ICsyOTksNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIHJldHVybiB7IHsgcHJv
cGVydGllcy5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGludGVybmFsUHJvcGVydGllcykgfSB9
OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
Q29sbGVjdGlvbkVudHJpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElk
JiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9uYWw8aW50PiYmIGZl
dGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50KQorUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRy
eT4+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKGNvbnN0IFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIHN0ZDo6b3B0aW9u
YWw8aW50PiYmIGZldGNoQ291bnQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9y
U3RyaW5nOwogCkBAIC0zMjUsNyArMzI1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVm
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+PgogICAg
IHJldHVybiBlbnRyaWVzLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVByb3RvY29sOjpFcnJvclN0
cmluZ09yPE9wdGlvbmFsPGludD4gLyogc2F2ZVJlc3VsdEluZGV4ICovPiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OnNhdmVSZXN1bHQoUmVmPEpTT046Ok9iamVjdD4mJiBjYWxsQXJndW1lbnQsIE9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9u
Q29udGV4dElkKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjpvcHRpb25hbDxpbnQ+IC8q
IHNhdmVSZXN1bHRJbmRleCAqLz4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KFJl
ZjxKU09OOjpPYmplY3Q+JiYgY2FsbEFyZ3VtZW50LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAg
IFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtMzQyLDcgKzM0Miw3IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPE9wdGlvbmFsPGludD4gLyogc2F2ZVJlc3VsdEluZGV4
ICovPiBJbnNwZWN0b3JSdW50aW1lQWdlCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJfcyk7CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJlc3Vs
dChlcnJvclN0cmluZywgY2FsbEFyZ3VtZW50LT50b0pTT05TdHJpbmcoKSwgc2F2ZWRSZXN1bHRJ
bmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggZjQwMjk0NmZmNmRhYTg4
YzQ4NWQwOTdhYWM2MWMxZDllYmZjMDlhYS4uYzRmNmZhNWI5ZGU1NDMxN2RhMDdjMjM3MWE3MTI2
YWFlMWM5NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTYwLDE1ICs2MCwx
NSBAQCBwdWJsaWM6CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5hYmxlKCkg
b3ZlcnJpZGU7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGlzYWJsZSgpIG92
ZXJyaWRlOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6
OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSwgU3RyaW5nIC8qIG1lc3NhZ2UgKi8sIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4+PiBwYXJzZShjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24pIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3YXNU
aHJvd24gKi8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRl
KGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0
aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIE9wdGlvbmFsPGJvb2w+JiYgZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBPcHRpb25hbDxQcm90b2NvbDo6UnVu
dGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFs
dWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNh
dmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsK
LSAgICB2b2lkIGF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0SWQmLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYg
Z2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIFJlZjxBd2FpdFBy
b21pc2VDYWxsYmFjaz4mJikgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3Rk
Ojp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJv
b2w+IC8qIHdhc1Rocm93biAqLz4+IGNhbGxGdW5jdGlvbk9uKGNvbnN0IFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3RJZCYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwg
UmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBh
dXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlW
YWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYg
ZW11bGF0ZVVzZXJHZXN0dXJlKSBvdmVycmlkZTsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpv
cHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZl
ZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25D
b250ZXh0SWQ+JiYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2
ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhd2FpdFByb21pc2UoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdElkJiwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZl
UmVzdWx0LCBSZWY8QXdhaXRQcm9taXNlQ2FsbGJhY2s+JiYpIGZpbmFsOworICAgIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IGNhbGxGdW5jdGlv
bk9uKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywg
c3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdl
c3R1cmUpIG92ZXJyaWRlOwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbGVh
c2VPYmplY3QoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJikgZmluYWw7
CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpPYmpl
Y3RQcmV2aWV3Pj4gZ2V0UHJldmlldyhjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0SWQmKSBmaW5hbDsKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJl
ZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Piwg
UmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlE
ZXNjcmlwdG9yPj4+PiBnZXRQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3RJZCYsIE9wdGlvbmFsPGJvb2w+JiYgb3duUHJvcGVydGllcywgT3B0aW9uYWw8aW50
PiYmIGZldGNoU3RhcnQsIE9wdGlvbmFsPGludD4mJiBmZXRjaENvdW50LCBPcHRpb25hbDxib29s
PiYmIGdlbmVyYXRlUHJldmlldykgZmluYWw7Ci0gICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlE
ZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGNvbnN0
IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIE9wdGlvbmFsPGludD4mJiBmZXRj
aFN0YXJ0LCBPcHRpb25hbDxpbnQ+JiYgZmV0Y2hDb3VudCwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5l
cmF0ZVByZXZpZXcpIGZpbmFsOwotICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pj4gZ2V0Q29sbGVj
dGlvbkVudHJpZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIE9wdGlv
bmFsPGludD4mJiBmZXRjaENvdW50KSBmaW5hbDsKLSAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxPcHRpb25hbDxpbnQ+IC8qIHNhdmVSZXN1bHRJbmRleCAqLz4gc2F2ZVJlc3VsdChSZWY8SlNP
Tjo6T2JqZWN0PiYmIGNhbGxBcmd1bWVudCwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlE
ZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+Pj4gZ2V0UHJvcGVydGllcyhjb25zdCBQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3duUHJvcGVy
dGllcywgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRpb25hbDxpbnQ+
JiYgZmV0Y2hDb3VudCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldykgZmlu
YWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4sIFJlZlB0cjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
Pj4gZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3RJZCYsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIGZldGNoU3RhcnQsIHN0ZDo6b3B0aW9u
YWw8aW50PiYmIGZldGNoQ291bnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZp
ZXcpIGZpbmFsOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9m
PFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pj4gZ2V0Q29sbGVjdGlvbkVudHJp
ZXMoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgZmV0Y2hTdGFydCwgc3RkOjpvcHRp
b25hbDxpbnQ+JiYgZmV0Y2hDb3VudCkgZmluYWw7CisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVSZXN1bHRJbmRleCAqLz4gc2F2ZVJlc3VsdChS
ZWY8SlNPTjo6T2JqZWN0PiYmIGNhbGxBcmd1bWVudCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBzZXRTYXZlZFJlc3VsdEFsaWFzKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbGVhc2VPYmplY3RHcm91cChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4+IGdldFJ1bnRp
bWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhSZWY8SlNPTjo6QXJyYXk+JiYgbG9jYXRpb25z
KSBmaW5hbDsKQEAgLTgzLDcgKzgzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsgfQogCi0gICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm11
dGVDb25zb2xlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcAppbmRleCBiNzhlM2E1MGQ2N2FlMGY0ZjgyYzZmNDRlNWQ4YjFmN2NkZTE1NzIxLi43MTRh
Y2E0NzcyMmI3ZDlhNGQ1YThmOTE0ZTcyZjU5ZTZjNDg5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEluc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzbwogICAgIH0KIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhPcHRpb25hbDxib29s
PiYmIGluY2x1ZGVTYW1wbGVzKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgaW5jbHVkZVNhbXBsZXMpCiB7CiAgICAgaWYgKG1fdHJhY2tpbmcpCiAgICAgICAgIHJldHVy
biB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgKaW5kZXggMzM2
MTVmMmQ3N2IyNTBiODAzZjVjYjdiZDU4NjBkY2VjYzE2MGVkNC4uZTk3MGZlNjZmNDI1Zjc4NmEx
YmU0ZmY5MDM5YmU5ODY3YmVkZmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKIAogICAgIC8vIFNj
cmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCi0gICAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gc3RhcnRUcmFja2luZyhPcHRpb25hbDxib29sPiYmIGluY2x1ZGVTYW1w
bGVzKSBmaW5hbDsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFRyYWNr
aW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlU2FtcGxlcykgZmluYWw7CiAgICAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcFRyYWNraW5nKCkgZmluYWw7CiAKICAgICAv
LyBKU0M6OkRlYnVnZ2VyOjpQcm9maWxpbmdDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdEF1
ZGl0QWdlbnQuY3BwCmluZGV4IDI5ZmNlYzk3YmI4ZTdmNDc3MmQ0ZDdjYzhmYWQ2YzkyMzE3MWY4
OTcuLmFhMzdmODQyNTM3ZjFiNjZjNjExNmFhMGNmNjRkMTcwYjgwOTNjNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0QXVk
aXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBKU0dsb2JhbE9i
amVjdEF1ZGl0QWdlbnQ6OkpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudChKU0FnZW50Q29udGV4dCYg
Y29udGV4dCkKIAogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Ojp+SlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdEF1ZGl0
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
IGV4ZWN1dGlvbkNvbnRleHRJZCkKK0luamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0QXVkaXRB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBv
cnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4
dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmgKaW5kZXggYjg0Y2IxMmU2MTA4
YjE0OTlhNDRjMWJmNjc1ZWViZjQ5NmQ4ZTBhMC4uN2JhZGZiNTdlNDk4YzY2Nzk0NGEyMDUzZTM1
ZGEzOTU1ZjM5ZTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIH5KU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQoKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1
dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CiAKICAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0JiBtX2dsb2JhbE9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzYjcwMjg3OGExY2E1MTYyNDQwOTk5ZjRlNjRiNTNmYzM0
Zjk1MzJmLi43NjUzNDdiMjkyNmNmY2ZmMjgzN2E5NGQ0YzgwYTQ2NjczNDhmZGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQo
SlNBZ2VudENvbnRleHQmIGNvbnRleHQKIAogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Ojp+
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlw
dCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90
b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGlt
ZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKK0luamVjdGVkU2Ny
aXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFBy
b3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAg
ICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJleGVj
dXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0cyBhcyB0aGVyZSBp
cyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKaW5kZXggOTY5YmI0MGU2OTgwNzNiNzlhZGNjMjkyZTA1YzdhNTE3ZjI4
NjdjNi4uODNkYzU0NzNlYzQ2MmFkY2RlMTQ2MzE0NmEzMmJkNzg0YTQ0ODFmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmluYWw7CisgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgZmlu
YWw7CiAKICAgICAvLyBOT1RFOiBKYXZhU2NyaXB0IGluc3BlY3RvciBkb2VzIG5vdCB5ZXQgbmVl
ZCB0byBtdXRlIGEgY29uc29sZSBiZWNhdXNlIG5vIG1lc3NhZ2VzCiAgICAgLy8gYXJlIHNlbnQg
dG8gdGhlIGNvbnNvbGUgb3V0c2lkZSBvZiB0aGUgQVBJIGJvdW5kYXJ5IG9yIGNvbnNvbGUgb2Jq
ZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IGUyNTQ0
ODc0OGYxNGU1MGEyZmM1Y2RlNzZiMDY4OTAyYjAzODNiMWUuLmY1NzRmNTQ5YjEzMTMwMzBhNTIy
MWZlNWVlZWZiN2JmMjQ3ZTM1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBKU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6fkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KCkgPSBk
ZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9w
dGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9u
Q29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhl
Y3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IEpTQ29udGV4dHMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAppbmRleCBkZmRhYmVlNDk4OTlhNThl
MTZlMTRlOTM4NjE0MTg0YjIwMTE2MTcxLi45ZTViZDRmYmJmZmUzNjU3NjhlYTk2Y2RlNjZlYmQ4
YzkzZTFiMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIH5KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCgpIGZp
bmFsOwogCiBwcml2YXRlOgotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZh
bChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhl
Y3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2Nv
bDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSBmaW5hbDsKIAogICAgIC8vIE5PVEU6
IEphdmFTY3JpcHQgaW5zcGVjdG9yIGRvZXMgbm90IHlldCBuZWVkIHRvIG11dGUgYSBjb25zb2xl
IGJlY2F1c2Ugbm8gbWVzc2FnZXMKICAgICAvLyBhcmUgc2VudCB0byB0aGUgY29uc29sZSBvdXRz
aWRlIG9mIHRoZSBBUEkgYm91bmRhcnkgb3IgY29uc29sZSBvYmplY3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0LmNwcAppbmRleCBjNTRmZmUwYTY2ZDg0M2U4MmM2N2I5MzMzZWY5
MzJiOThkODc5ZTQxLi40YTBhNmU1YzRmZGIwMWQ5MzAxMjAyMzRmYzJlOWI5YWYwMWMwYzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKQEAgLTEwOSw5ICsxMDksOSBA
QCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKICAgICBtX3Rh
cmdldCA9IG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAorc3RkOjpvcHRpb25hbDxUYXJnZXRJ
RD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdl
dElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1fdGFyZ2V0ID8gc3Rk
OjpvcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuaAppbmRleCA3MDIxZGM3M2M5MWQ5MzFlYTdmNmI2MWI1YjAxNTBlYWI2MmQ3YTQ5
Li5kZmI3OTYyODkwOWMxMGM0N2FjNmE1NTdmYWQ3NTNjYjAyNGViMGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKLSAgICBPcHRpb25hbDxUYXJn
ZXRJRD4gdGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8VGFyZ2V0
SUQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBO
U1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVz
dGluYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggYTA3MWRiMTNlYmIyNWQyMmRk
ZjAwMTI5ZWRhMDE1MTZhYjZhN2YyMi4uMGU1YzY4MjZkNmQzZjg4ODU2YjI0YzcxODM2NWQ4Nzkz
ZTJjOWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTkzLDE3ICs5MywxNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gY2VydGlmaWNhdGVz
OwogICAgICAgICAgICAgc3RydWN0IFByb3h5IHsKICAgICAgICAgICAgICAgICBTdHJpbmcgdHlw
ZTsKLSAgICAgICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGZ0cFVSTDsKLSAgICAgICAgICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IGh0dHBVUkw7Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBodHRwc1VSTDsKLSAgICAgICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNvY2tz
VVJMOworICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmdHBVUkw7CisgICAg
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGh0dHBVUkw7CisgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGh0dHBzVVJMOworICAgICAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzb2Nrc1VSTDsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5n
PiBpZ25vcmVBZGRyZXNzTGlzdDsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBPcHRpb25h
bDxQcm94eT4gcHJveHk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFByb3h5PiBwcm94eTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
YWxsb3dJbnNlY3VyZU1lZGlhQ2FwdHVyZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1
cHByZXNzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBhbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZzsKICNlbmRpZgogICAgICAgICB9
OwogCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xp
ZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Kik7CiAgICAgdm9pZCBjbGllbnRDYXBhYmlsaXRp
ZXNEaWRDaGFuZ2UoKTsKLSAgICBPcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2Fw
YWJpbGl0aWVzPiBjbGllbnRDYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudENh
cGFiaWxpdGllczsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6
OkNhcGFiaWxpdGllcz4gY2xpZW50Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnRDYXBhYmlsaXRpZXM7IH0KIAogICAgIHZvaWQgc2V0dXBGYWlsZWQoVGFyZ2V0SUQpOwogICAg
IHZvaWQgc2V0dXBDb21wbGV0ZWQoVGFyZ2V0SUQpOwpAQCAtMjY4LDE0ICsyNjgsMTQgQEAgcHJp
dmF0ZToKIAogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICAvLyBDb25uZWN0
aW9uIGZyb20gUmVtb3RlSW5zcGVjdG9yQ2xpZW50IG9yIFdlYkRyaXZlci4KLSAgICBPcHRpb25h
bDxDb25uZWN0aW9uSUQ+IG1fY2xpZW50Q29ubmVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gbV9jbGllbnRDb25uZWN0aW9uOwogICAgIGJvb2wgbV9yZWFkeVRvUHVzaExp
c3RpbmdzIHsgZmFsc2UgfTsKIAogICAgIFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1BhdGg7CiAj
ZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIg
fTsKLSAgICBPcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBt
X2NsaWVudENhcGFiaWxpdGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6
Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCBlODI0NWUx
ZTc5MWNjNThmYjgwMzM0YmFiN2RjMWVjZmJlNzZmZGQ3Li4yYmZkYTFkMzBjYjdlOGNhZmNjY2Rj
MWE2MTU1ZjFmODRkMTMzMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtMTIxLDkgKzEyMSw5IEBAIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCgpCiAgICAgdGVhcmRvd25SdW5M
b29wKCk7CiB9CiAKLU9wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6
OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAorc3RkOjpvcHRpb25hbDxUYXJnZXRJRD4gUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZp
ZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1fdGFyZ2V0ID8gc3RkOjpvcHRpb25h
bDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50LmNwcAppbmRleCA3ZTlkZmYzODNhMTdiZDY4N2Y1ZGZlZmQ2MGQ2
ZDEwOWE0MTkzZjcwLi4wZTZiNzMzNTI5OTNhMzNjOTljZDQ3NjUyOTNmMzA0NGIwYmQ2M2ZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudDo6flJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQoKQogICAgIGVuZHBvaW50Lmlu
dmFsaWRhdGVDbGllbnQoKnRoaXMpOwogfQogCi1PcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90
ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZl
ckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQpCitzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4g
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Y29ubmVjdEluZXQoY29uc3QgY2hhciog
c2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCkKIHsKICAgICBhdXRvJiBlbmRwb2ludCA9
IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNpbmdsZXRvbigpOwog
ICAgIHJldHVybiBlbmRwb2ludC5jb25uZWN0SW5ldChzZXJ2ZXJBZGRyLCBzZXJ2ZXJQb3J0LCAq
dGhpcyk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCitzdGQ6
Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6
Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiB7CiAgICAgYXV0byYgZW5k
cG9pbnQgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzaW5nbGV0
b24oKTsKICAgICByZXR1cm4gZW5kcG9pbnQuY3JlYXRlQ2xpZW50KHNvY2tldCwgKnRoaXMpOwpA
QCAtODUsNyArODUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRp
ZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLAogICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUucHVzaFJlY2VpdmVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
fQogCi1PcHRpb25hbDxSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpFdmVudD4gUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZXh0cmFjdEV2ZW50KENvbm5lY3Rpb25JRCBj
bGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3N0ZDo6b3B0aW9uYWw8UmVtb3RlSW5z
cGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZlbnQ+IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQ6OmV4dHJhY3RFdmVudChDb25uZWN0aW9uSUQgY2xpZW50SUQsIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTE5LDcgKzExOSw3IEBAIE9wdGlvbmFsPFJlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQ6OkV2ZW50PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50CiAg
ICAgcmV0dXJuIGV2ZW50OwogfQogCi1PcHRpb25hbDxWZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+
PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpwYXJzZVRhcmdldExpc3RKU09OKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxKU09OOjpPYmpl
Y3Q+Pj4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6cGFyc2VUYXJnZXRMaXN0SlNP
Tihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBtZXNzYWdlVmFsdWUgPSBKU09O
OjpWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOwogICAgIGlmICghbWVzc2FnZVZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmgK
aW5kZXggMjVmMWY4Y2NlNzU2YzA1NDgyZjQ5YmQwZjUxYzM2ZmM2OGVkMGU3OS4uZmQ0NTFhNTAz
ODA2YjBkZTY3ZTY0ODA2MWYzNjIzZDA1NzNjZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oCkBAIC00Myw4ICs0Myw4IEBA
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQg
OiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yCiBwdWJsaWM6CiAgICAgflJlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQoKSBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4g
Y29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCk7
Ci0gICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRU
eXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3Qg
Y2hhciogc2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCk7CisgICAgc3RkOjpvcHRpb25h
bDxDb25uZWN0aW9uSUQ+IGNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUpOwogICAgIHZv
aWQgc2VuZChDb25uZWN0aW9uSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0
aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmKSBmaW5hbDsKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJs
aWM6CiAgICAgc3RydWN0IEV2ZW50IHsKICAgICAgICAgU3RyaW5nIG1ldGhvZE5hbWU7CiAgICAg
ICAgIENvbm5lY3Rpb25JRCBjbGllbnRJRCB7IH07Ci0gICAgICAgIE9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gY29ubmVjdGlvbklEOwotICAgICAgICBPcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SUQ7
Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVzc2FnZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxDb25uZWN0aW9uSUQ+IGNvbm5lY3Rpb25JRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUYXJn
ZXRJRD4gdGFyZ2V0SUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOwog
ICAgIH07CiAKICAgICB1c2luZyBDYWxsSGFuZGxlciA9IHZvaWQgKFJlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQ6OiopKGNvbnN0IEV2ZW50Jik7CiAgICAgdmlydHVhbCBIYXNoTWFwPFN0
cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1hcCgpID0gMDsKIAogcHJvdGVjdGVkOgotICAg
IE9wdGlvbmFsPFZlY3RvcjxSZWY8SlNPTjo6T2JqZWN0Pj4+IHBhcnNlVGFyZ2V0TGlzdEpTT04o
Y29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEpTT046Ok9iamVj
dD4+PiBwYXJzZVRhcmdldExpc3RKU09OKGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIE9w
dGlvbmFsPEV2ZW50PiBleHRyYWN0RXZlbnQoQ29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4m
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXZlbnQ+IGV4dHJhY3RFdmVudChDb25uZWN0
aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmKTsKIAogICAgIEhhc2hNYXA8Q29ubmVjdGlvbklELCBN
ZXNzYWdlUGFyc2VyPiBtX3BhcnNlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlcnNMb2Nr
KTsKICAgICBMb2NrIG1fcGFyc2Vyc0xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDYyMDRkNDFkMzhkNDZhMTk3MjlmYzgyODAyNGZkNTI4NDY2
NDI3NGIuLjAyZTdkYTJiNjk5NWZkNjBmMGNiOWU4N2I0NTY1OWEwNjhmNTRkZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGJvb2wgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1
aW50MTZfdCBwb3J0KQogICAgIHJldHVybiBpc1J1bm5pbmcoKTsKIH0KIAotT3B0aW9uYWw8dWlu
dDE2X3Q+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Z2V0UG9ydCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmdldFBvcnQoKSBjb25zdAogewog
ICAgIGlmICghaXNSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02
OCw3ICs2OCw3IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6Omdl
dFBvcnQoKSBjb25zdAogICAgIHJldHVybiBlbmRwb2ludC5nZXRQb3J0KG1fc2VydmVyLnZhbHVl
KCkpOwogfQogCi1PcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6
ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVuZHBvaW50LCBQbGF0Zm9y
bVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVu
ZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5k
ZXggNWY5Yjk3ZTRhYWNlNWY0MjU2ODY4ZWZkZjk4NWY5OTc4M2IyM2M3Yi4uYmQwZTFlY2QwNDA0
NGY0MDZhZmUyOGYxYjEzZmFkNzg1N2U5N2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuaApAQCAtMzksMTcgKzM5LDE3IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVtb3RlSW5zcGVjdG9yU2VydmVyJiBzaW5nbGV0b24oKTsKIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdWlu
dDE2X3QgcG9ydCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGdl
dFBvcnQoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBnZXRQb3J0KCkgY29uc3Q7CiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVy
biAhIW1fc2VydmVyOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExhenlOZXZlckRl
c3Ryb3llZDxSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI+OwogICAgIFJlbW90ZUluc3BlY3RvclNlcnZl
cigpIHsgU29ja2V0Ojppbml0KCk7IH0KIAotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gZG9B
Y2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBQbGF0Zm9ybVNvY2tldFR5cGUp
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBkb0FjY2VwdChSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIFBsYXRmb3JtU29ja2V0VHlwZSkgZmluYWw7CiAgICAg
dm9pZCBkaWRDaGFuZ2VTdGF0dXMoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25u
ZWN0aW9uSUQsIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpMaXN0ZW5lcjo6U3RhdHVz
KSBmaW5hbCB7IH07CiAKLSAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fc2VydmVyOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX3NlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oCmlu
ZGV4IGFkOGNmYjM5NTg2ODU0Njk0MDA1MzgyZWMxNWI0ZTg4YTJiNDBhMTQuLjUzMmY5NzUyMjc3
OTZkYWZmOTNkOWE3NzJjYjI4Mzk2NGZkYWVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0LmgKQEAgLTY1LDE4ICs2NSwxOCBAQCBlbnVtIGNsYXNzIERvbWFpbiB7
CiAKIHZvaWQgaW5pdCgpOwogCi1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxQbGF0Zm9ybVNv
Y2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2Vy
dmVyUG9ydCk7Ci1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+
IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KTsKLUpTX0VYUE9SVF9Q
UklWQVRFIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0
VHlwZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29j
a2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3Ms
IHVpbnQxNl90IHNlcnZlclBvcnQpOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxQ
bGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBw
b3J0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBl
PiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCk7CiAK
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0dXAoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZChQbGF0Zm9ybVNvY2tldFR5cGUpOwogSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc0xpc3RlbmluZyhQbGF0Zm9ybVNvY2tldFR5cGUpOwotSlNfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlKTsK
K0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZv
cm1Tb2NrZXRUeXBlKTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8c2l6ZV90PiByZWFk
KFBsYXRmb3JtU29ja2V0VHlwZSwgdm9pZCogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSk7Ci1KU19F
WFBPUlRfUFJJVkFURSBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSwg
Y29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUpOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlLCB2b2lkKiBidWZmZXIsIGludCBi
dWZmZXJTaXplKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB3cml0
ZShQbGF0Zm9ybVNvY2tldFR5cGUsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKTsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZShQbGF0Zm9ybVNvY2tldFR5cGUmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5k
ZXggZTQ1MDFkZjVkYjc4MDUyMTFkMWVjNWE0MWYyOTA5MGE5NmJlZmMwOC4uM2VkZTZmNDZjNDM5
YzQwM2U4ZWU2NzM3ZTZhNmY0ZGFkNDY5ZjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC04MCwxNCArODAsMTQgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6d2FrZXVwV29ya2VyVGhyZWFkKCkK
ICAgICAgICAgU29ja2V0Ojp3cml0ZShtX3dha2V1cFNlbmRTb2NrZXQsICIxIiwgMSk7CiB9CiAK
LU9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNv
bm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQs
IENsaWVudCYgY2xpZW50KQorc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNz
LCB1aW50MTZfdCBzZXJ2ZXJQb3J0LCBDbGllbnQmIGNsaWVudCkKIHsKICAgICBpZiAoYXV0byBz
b2NrZXQgPSBTb2NrZXQ6OmNvbm5lY3Qoc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCkpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVDbGllbnQoKnNvY2tldCwgY2xpZW50KTsKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBv
cnQsIExpc3RlbmVyJiBsaXN0ZW5lcikKK3N0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNz
LCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYgbGlzdGVuZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlv
bklEKCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlkKQogCiBpbnQgUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnBvbGxpbmdUaW1lb3V0KCkKIHsKLSAgICBPcHRpb25hbDxNb25vdG9u
aWNUaW1lPiBtb3N0UmVjZW50V2FrZXVwOworICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGlt
ZT4gbW9zdFJlY2VudFdha2V1cDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gOiBt
X2xpc3RlbmVycykgewogICAgICAgICBpZiAoY29ubmVjdGlvbi52YWx1ZS0+bmV4dFJldHJ5VGlt
ZSkgewogICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnRXYWtldXApCkBAIC0xOTksNyArMTk5LDcg
QEAgQ29ubmVjdGlvbklEIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpnZW5lcmF0ZUNv
bm5lY3Rpb25JRCgpCiAgICAgcmV0dXJuIGlkOwogfQogCi1PcHRpb25hbDxDb25uZWN0aW9uSUQ+
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2Nr
ZXRUeXBlIHNvY2tldCwgQ2xpZW50JiBjbGllbnQpCitzdGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25J
RD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNv
Y2tldFR5cGUgc29ja2V0LCBDbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQoU29ja2V0Ojpp
c1ZhbGlkKHNvY2tldCkpOwogCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludDo6aW52YWxpZGF0ZUxpc3RlbmVyKExpc3RlbmVyJiBsaXN0ZW5lcikK
ICAgICB9KTsKIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25J
RCBpZCkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fbGlzdGVuZXJzLmdldChpZCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmlu
ZGV4IDk3ZTRlMDlhMTkzMGQ1NWYyYjZiY2NmNDdlZDBlNTdmY2I4YjMxN2EuLjc3MDQ0Y2FkZWMw
YmUxNmNhMDg3ZmU2M2I0NmVmZDFhM2YwYWYxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB+TGlzdGVuZXIoKSB7IH0KIAogICAgICAgICAvLyBUaGVzZSBj
YWxsYmFja3MgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KLSAgICAgICAgdmlydHVhbCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0KFJl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0KFJlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0dXMoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQmLCBDb25uZWN0aW9uSUQsIFN0YXR1cykgPSAwOwogICAgIH07CiAKQEAgLTY5LDggKzY5
LDggQEAgcHVibGljOgogICAgIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50KCk7CiAgICAg
flJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50KCk7CiAKLSAgICBPcHRpb25hbDxDb25uZWN0
aW9uSUQ+IGNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZl
clBvcnQsIENsaWVudCYpOwotICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gbGlzdGVuSW5ldChj
b25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRy
LCB1aW50MTZfdCBzZXJ2ZXJQb3J0LCBDbGllbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5l
Y3Rpb25JRD4gbGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBM
aXN0ZW5lciYpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNsaWVudChDbGllbnQmKTsKICAgICB2b2lk
IGludmFsaWRhdGVMaXN0ZW5lcihMaXN0ZW5lciYpOwogCkBAIC03OCw5ICs3OCw5IEBAIHB1Ymxp
YzoKICAgICBpbmxpbmUgdm9pZCBzZW5kKENvbm5lY3Rpb25JRCBpZCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSB7IHNlbmQoaWQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7IH0KICAg
ICBpbmxpbmUgdm9pZCBzZW5kKENvbm5lY3Rpb25JRCBpZCwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgeyBzZW5kKGlkLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsgfQogCi0gICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGll
bnQoUGxhdGZvcm1Tb2NrZXRUeXBlLCBDbGllbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbm5l
Y3Rpb25JRD4gY3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwZSwgQ2xpZW50Jik7CiAKLSAg
ICBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChDb25uZWN0aW9uSUQpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoQ29ubmVjdGlvbklEKSBjb25zdDsKIAogICAg
IHZvaWQgZGlzY29ubmVjdChDb25uZWN0aW9uSUQpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBTdHJpbmcgYWRkcmVzczsKICAgICAgICAgdWludDE2X3QgcG9ydDsK
ICAgICAgICAgTGlzdGVuZXImIGxpc3RlbmVyOwotICAgICAgICBPcHRpb25hbDxNb25vdG9uaWNU
aW1lPiBuZXh0UmV0cnlUaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+
IG5leHRSZXRyeVRpbWU7CiAgICAgICAgIFNlY29uZHMgcmV0cnlJbnRlcnZhbCB7IGluaXRpYWxS
ZXRyeUludGVydmFsIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBP
U0lYLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9w
b3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQT1NJWC5jcHAKaW5kZXggZGE2ODUxODlkNTJmMDY2
NGM1NDFkMzVhNjQyOWFhNDBiMDE3MTRiMC4uOGE5ODU4NzZlYWRiZGRlOGVlNGMzN2RkYTA5ODM1
YjFiNmYwZjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBPU0lYLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0UE9TSVguY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgaW5pdCgpCiB7
CiB9CiAKLU9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBz
ZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9y
bVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qg
c2VydmVyUG9ydCkKIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzcyA9IHsgfTsKIApA
QCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29u
c3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUAogICAgIHJldHVybiBmZDsK
IH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRk
cmVzc1N0ciwgdWludDE2X3QgcG9ydCkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBl
PiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKIHsKICAgICBz
dHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzcyA9IHsgfTsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIE9w
dGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIs
IHVpbnQxNl90IHBvcnQpCiAgICAgcmV0dXJuIGZkTGlzdGVuOwogfQogCi1PcHRpb25hbDxQbGF0
Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpv
cHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0KQogewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzID0geyB9OwogCkBAIC0xMzgs
NyArMTM4LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1T
b2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25h
bDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQorc3RkOjpv
cHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQog
ewogICAgIHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPiBzb2NrZXRzOwogCkBAIC0x
ODksNyArMTg5LDcgQEAgYm9vbCBpc0xpc3RlbmluZyhQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxh
dGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQo
UGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQp
KTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQb3J0KFBsYXRm
b3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgcmV0dXJuIGFkZHJlc3Muc2luX3BvcnQ7CiB9CiAK
LU9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBi
dWZmZXIsIGludCBidWZmZXJTaXplKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZv
cm1Tb2NrZXRUeXBlIHNvY2tldCwgdm9pZCogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKIHsKICAg
ICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsKIApAQCAtMjE0LDcgKzIxNCw3IEBAIE9wdGlvbmFs
PHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGlu
dCBidWZmZXJTaXplKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHNp
emVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwg
aW50IHNpemUpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBl
IHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUpCiB7CiAgICAgQVNTRVJUKGlzVmFs
aWQoc29ja2V0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVj
dG9yU29ja2V0V2luLmNwcAppbmRleCA2ZWQ4MGViYjdiYWQ0NjE2ZDZjYjIzZDFhYzJkOWY4ZmU4
YmY2NTU4Li40NDg5YTQ1MTE5ODdjNjA0MDFmYjEzNWZlZDc5MzIwM2FhZWU4NTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvd2luL1Jl
bW90ZUluc3BlY3RvclNvY2tldFdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwCkBA
IC0xNTcsNyArMTU3LDcgQEAgc3RhdGljIFBsYXRmb3JtU29ja2V0VHlwZSBiaW5kQW5kTGlzdGVu
KHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKICAgICByZXR1cm4gc29ja2V0LmxlYWsoKTsK
IH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNl
cnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclBvcnQpCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3Jt
U29ja2V0VHlwZT4gY29ubmVjdChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBz
ZXJ2ZXJQb3J0KQogewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyZXNzID0geyB9OwogCkBA
IC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNv
bnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclAKICAgICByZXR1cm4gc29j
a2V0OwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFy
KiBhZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0KQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVNvY2tl
dFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0KQogewog
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IEFGX0lORVQ2IGNvbm5lY3Rpb25zLgogICAgIHN0cnVjdCBz
b2NrYWRkcl9pbiBhZGRyZXNzID0geyB9OwpAQCAtMTkyLDcgKzE5Miw3IEBAIE9wdGlvbmFsPFBs
YXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90
IHBvcnQpCiAgICAgcmV0dXJuIHNvY2tldDsKIH0KIAotT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRU
eXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK3N0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKIHsKICAg
ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzcyA9IHsgfTsKIApAQCAtMjA1LDcgKzIwNSw3IEBA
IE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBz
b2NrZXQpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8c3RkOjphcnJh
eTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKK3N0ZDo6b3B0aW9uYWw8c3Rk
OjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKIHsKICAgICBzdHJ1
Y3Qgc29ja2FkZHJfaW4gYWRkcmVzczsKICAgICBhZGRyZXNzLnNpbl9mYW1pbHkgPSBBRl9JTkVU
OwpAQCAtMjE2LDcgKzIxNiw3IEBAIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRU
eXBlLCAyPj4gY3JlYXRlUGFpcigpCiAgICAgaWYgKCFzZXJ2ZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gc2VydmVyUG9ydCA9IGdldFBv
cnQoc2VydmVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBzZXJ2ZXJQb3J0ID0gZ2V0
UG9ydChzZXJ2ZXIpOwogICAgIGlmICghc2VydmVyUG9ydCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgaXNMaXN0ZW5pbmcoUGxhdGZvcm1T
b2NrZXRUeXBlIHNvY2tldCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPHVpbnQx
Nl90PiBnZXRQb3J0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCitzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiBnZXRQb3J0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiB7CiAgICAgQVNTRVJU
KGlzVmFsaWQoc29ja2V0KSk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBPcHRpb25hbDx1aW50MTZf
dD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogICAgIHJldHVybiBudG9ocyhh
ZGRyZXNzLnNpbl9wb3J0KTsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29j
a2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCitzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIs
IGludCBidWZmZXJTaXplKQogewogICAgIEFTU0VSVChpc1ZhbGlkKHNvY2tldCkpOwogCkBAIC0y
ODksNyArMjg5LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBz
b2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiB3
cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6
ZSkKIHsKICAgICBBU1NFUlQoaXNWYWxpZChzb2NrZXQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3IucHkKaW5kZXggMzU5ODhkYmQ4OTE5ZmQ4MDg3MDM3MTFlYmQ2ZjdkZGY3MjRhZGNk
NS4uNGIwZTA2NjQ3ODg0OTA4YmYyY2ZmMjcwZTc4ZTZmYjcxNTI1NGZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVy
YXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0yMDAsNyArMjAwLDcgQEAgY2xhc3MgQ3BwR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIHR5
cGUiKQogCiAgICAgICAgIGlmIGlzX29wdGlvbmFsOgotICAgICAgICAgICAgY3BwX25hbWUgPSAn
T3B0aW9uYWw8JXM+JiYnICUgY3BwX25hbWUKKyAgICAgICAgICAgIGNwcF9uYW1lID0gJ3N0ZDo6
b3B0aW9uYWw8JXM+JiYnICUgY3BwX25hbWUKICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAKICAg
ICBAc3RhdGljbWV0aG9kCkBAIC0yNDQsNyArMjQ0LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIHR5cGUiKQog
CiAgICAgICAgIGlmIGlzX29wdGlvbmFsOgotICAgICAgICAgICAgY3BwX25hbWUgPSAnT3B0aW9u
YWw8JXM+JyAlIGNwcF9uYW1lCisgICAgICAgICAgICBjcHBfbmFtZSA9ICdzdGQ6Om9wdGlvbmFs
PCVzPicgJSBjcHBfbmFtZQogICAgICAgICByZXR1cm4gY3BwX25hbWUKIAogICAgIEBzdGF0aWNt
ZXRob2QKQEAgLTI4OCw3ICsyODgsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToK
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gdHlwZSIpCiAKICAgICAgICAg
aWYgaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICBjcHBfbmFtZSA9ICdPcHRpb25hbDwlcz4mJicg
JSBjcHBfbmFtZQorICAgICAgICAgICAgY3BwX25hbWUgPSAnc3RkOjpvcHRpb25hbDwlcz4mJicg
JSBjcHBfbmFtZQogICAgICAgICByZXR1cm4gY3BwX25hbWUKIAogICAgIEBzdGF0aWNtZXRob2QK
QEAgLTMzMiw3ICszMzIsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gdHlwZSIpCiAKICAgICAgICAgaWYgaXNf
b3B0aW9uYWw6Ci0gICAgICAgICAgICBjcHBfbmFtZSA9ICdPcHRpb25hbDwlcz4mJicgJSBjcHBf
bmFtZQorICAgICAgICAgICAgY3BwX25hbWUgPSAnc3RkOjpvcHRpb25hbDwlcz4mJicgJSBjcHBf
bmFtZQogICAgICAgICByZXR1cm4gY3BwX25hbWUKIAogICAgIEBzdGF0aWNtZXRob2QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNf
aGVhZGVyLnB5CmluZGV4IDk1M2JmYjg3NTU3MWE2MTIyYWNjNjBhMGQ5NWI5ODM5NjEzMjAxNGYu
LjMwNGQwZjZjMmEyODFmMTE2OTI0MjMyOGM2MmFjNTVhN2MzNzYwOTAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRl
ci5weQpAQCAtNDE4LDExICs0MTgsMTEgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdl
bmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ25hbWVzcGFjZSAlcyB7JyAlIHNl
bGYuaGVscGVyc19uYW1lc3BhY2UoKSwKICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgJ3Rl
bXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+JywKLSAgICAgICAgICAgICdPcHRpb25h
bDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7JywKKyAgICAgICAgICAgICdzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsnLAogICAgICAgICBdKSkKIAogICAg
ICAgICBkZWYgcmV0dXJuX3R5cGVfd2l0aF9leHBvcnRfbWFjcm8oY3BwX3Byb3RvY29sX3R5cGUp
OgotICAgICAgICAgICAgZW51bV9yZXR1cm5fdHlwZSA9ICdPcHRpb25hbDwlcz4nICUgY3BwX3By
b3RvY29sX3R5cGUKKyAgICAgICAgICAgIGVudW1fcmV0dXJuX3R5cGUgPSAnc3RkOjpvcHRpb25h
bDwlcz4nICUgY3BwX3Byb3RvY29sX3R5cGUKICAgICAgICAgICAgIHJlc3VsdF90ZXJtcyA9IFtl
bnVtX3JldHVybl90eXBlXQogICAgICAgICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgp
LmZyYW1ld29yay5zZXR0aW5nKCdleHBvcnRfbWFjcm8nLCBOb25lKQogICAgICAgICAgICAgaWYg
ZXhwb3J0X21hY3JvIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVz
X2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
CmluZGV4IGNkODkzOTY1Y2I3Y2NhMDdiY2IyZDZjODJhYjk3MGViMjVmM2RjNTIuLjIwNDk2MjY1
NzBmNWZhY2VmNmNjMTQ0ZmE1OWFkMmUxYjY3ZTAxYzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVt
ZW50YXRpb24ucHkKQEAgLTEwOCw4ICsxMDgsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgZGVmIGdlbmVyYXRl
X2NvbnZlcnNpb25fbWV0aG9kX2JvZHkoZW51bV90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSk6CiAg
ICAgICAgICAgICBib2R5X2xpbmVzID0gW10KICAgICAgICAgICAgIGJvZHlfbGluZXMuZXh0ZW5k
KFsKLSAgICAgICAgICAgICAgICAndGVtcGxhdGU8PicsCi0gICAgICAgICAgICAgICAgJ09wdGlv
bmFsPCVzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8JXM+KGNvbnN0IFN0cmluZyYgcHJvdG9j
b2xTdHJpbmcpJyAlIChjcHBfcHJvdG9jb2xfdHlwZSwgY3BwX3Byb3RvY29sX3R5cGUpLAorICAg
ICAgICAgICAgICAgICd0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzwlcz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90
b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSksCiAgICAgICAgICAgICAgICAgJ3snLAogICAg
ICAgICAgICAgICAgICcgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0g
eycsCiAgICAgICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weQppbmRleCBjMGZlN2E3OGUzN2ZhNTEyNDM1MjQzOGZiOWQ0NWFlOTg4YTc0NTUzLi5mZTY3
ZTQzZmY3NThlZWFhZTNlMjk4NzM5NWU4Y2MyODNjNzYyMjY1IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMjEwLDcgKzIxMCw3IEBAIGNsYXNzIE9iakNC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgog
ICAgICAgICAgICAgb2JqY19pbl9wYXJhbV9uYW1lID0gJ29fJXMnICUgaW5fcGFyYW1fbmFtZQog
ICAgICAgICAgICAgb2JqY190eXBlID0gc2VsZi5vYmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwg
Y29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRlciwgRmFsc2UpCiAgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAgICAgICAgICAgb2Jq
Y190eXBlID0gJ09wdGlvbmFsPCVzPicgJSBvYmpjX3R5cGUKKyAgICAgICAgICAgICAgICBvYmpj
X3R5cGUgPSAnc3RkOjpvcHRpb25hbDwlcz4nICUgb2JqY190eXBlCiAgICAgICAgICAgICBwYXJh
bV9leHByZXNzaW9uID0gaW5fcGFyYW1fZXhwcmVzc2lvbihpbl9wYXJhbV9uYW1lLCBwYXJhbWV0
ZXIpCiAgICAgICAgICAgICBpbXBvcnRfZXhwcmVzc2lvbiA9IHNlbGYub2JqY19wcm90b2NvbF9p
bXBvcnRfZXhwcmVzc2lvbl9mb3JfcGFyYW1ldGVyKHBhcmFtX2V4cHJlc3Npb24sIGRvbWFpbiwg
Y29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRlcikKICAgICAgICAgICAgIGlmIG5vdCBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVy
c2lvbnNfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5w
eQppbmRleCBhNmE2NDNmYzg4NTMzMmYxYjBiZGQ4Yjc1OGUyODQwOGZlZjVmNTE2Li5jMGFmZTU1
ZmJkMWUwODVhMjViZGNmZWFlNGJkY2MwMjAwZTc2Zjc3IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3Rv
Y29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9j
b252ZXJzaW9uc19oZWFkZXIucHkKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBPYmpDUHJvdG9j
b2xUeXBlQ29udmVyc2lvbnNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgZGVm
IF9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKHNlbGYsIG9iamNfZW51bV9uYW1l
LCBlbnVtX3ZhbHVlcyk6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5k
KCd0ZW1wbGF0ZTw+JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCdpbmxpbmUgT3B0aW9uYWw8JXM+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKScgJSBvYmpjX2VudW1fbmFt
ZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdpbmxpbmUgc3RkOjpvcHRpb25hbDwlcz4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpJyAlIG9iamNfZW51bV9uYW1lKQogICAg
ICAgICBsaW5lcy5hcHBlbmQoJ3snKQogICAgICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3Zh
bHVlczoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScg
JSBlbnVtX3ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxl
bWVudGF0aW9uLnB5CmluZGV4IGIxMjJjNTU4NDI3NDczN2JjZTRiZTdkNDQ1MThjOWU4NGJkNjIx
NDIuLmE2YzBmNzIwOGZkYmQ2MWRlOGE5MDM5YjVlNDExNjI1NmYyNjNmNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEzNSw3
ICsxMzUsNyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKICAg
ICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQs
IFtOU1N0cmluZyBjbGFzc10pOycpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBPcHRp
b25hbDwlKHR5cGUpcz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8JSh0
eXBlKXM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsnICUgeyd0eXBlJzogc2VsZi5v
YmpjX25hbWVfZm9yX3R5cGUocmVzb2x2ZWRfdHlwZSl9KQorICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzwlKHR5
cGUpcz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOycgJSB7J3R5cGUnOiBzZWxmLm9i
amNfbmFtZV9mb3JfdHlwZShyZXNvbHZlZF90eXBlKX0pCiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCIlcyIp
OycgJSBkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCkpCiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsnKQogICAgICAgICBlbGlmIGlz
aW5zdGFuY2UocmVzb2x2ZWRfdHlwZSwgKEFycmF5VHlwZSwgUHJpbWl0aXZlVHlwZSkpOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggYTBlN2I5MDA0NDU1YmJlN2UxMWU4
YTBiYzVlZDUxMTBmZTFhMWE0NC4uZDM3NWExMjE5NDA1NTY3YmNjNjQ5MGFiNjEzMGI2NmY1Njg3
MDFmZiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xNDMsMTMgKzE0
MywxMyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9i
akNHZW5lcmF0b3IpOgogICAgICAgICAgICAgdmFyX25hbWUgPSBPYmpDR2VuZXJhdG9yLmlkZW50
aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKG1lbWJlcl9uYW1lKQogICAgICAgICAgICAgY29udmVy
c2lvbl9leHByZXNzaW9uID0gc2VsZi5wYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVt
YmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJl
ci50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgT3B0
aW9uYWw8JXM+ICVzID0gJXM7JyAlIChvYmpjX3R5cGUsIHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4
cHJlc3Npb24pKQogICAgICAgICAgICAgICAgIGlmIG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6Cisg
ICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGF1dG8gJXMgPSAlczsnICUgKHZh
cl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQogICAgICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKCVzLCBAIiVz
Iik7JyAlICh2YXJfbmFtZSwgbWVtYmVyX25hbWUpKQotICAgICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBzZWxmLiVzID0gJXMudmFsdWUoKTsnICUgKHZhcl9uYW1lLCB2YXJfbmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAqJXM7
JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICglcyknICUgdmFyX25hbWUpCi0gICAg
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBzZWxmLiVzID0gJXMudmFsdWUo
KTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIGlmIChhdXRvICVzID0gJXMpJyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHBy
ZXNzaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHNlbGYu
JXMgPSAqJXM7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFt
ZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IGY4NmZiZTk1MTVhOWQyYzdlYzhiNTllMGVh
YjlkMjFkNDk3ZDk1ZmYuLjRlODAyY2RiMDk0NjM0MWEyMDZhZWQzMTQzNTQ5NmFmYTg0ZDk0MmIg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkK
QEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7IiIiKQogCiAgICAgVHlwZUNv
bnZlcnNpb25zSGVhZGVyU3RhbmRhcmQgPSAoCiAgICAgIiIidGVtcGxhdGU8dHlwZW5hbWUgT2Jq
Q0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7IiIiKQorc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsiIiIpCiAKICAgICBCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlclByZWx1ZGUgPSAoCiAgICAgIiIiJHtpbmNsdWRlc30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kLXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNv
bi1yZXN1bHQKaW5kZXggNDdiNzE2ODY3OGRiY2E3NTZjMWY2MjNhOTlhNmJiZmM4MzgxZTQ2OC4u
NTY4ZmUwMzBiYjFkNDkxOTVlNWQyOTA3Mjc0ODRjOTg1NmQ4N2NiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNv
bi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
YmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggNDVjZWNm
Mjg0MWIzYjFlMjRmZDVlYTAyMTc2NjU0YmMxOGU4ZDljOS4uNjMxOTU5ZWIyMTQ4ODBlNzcxYmMy
YTQ1M2VkZTU0NzUwYzFkMTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdApAQCAtMTUxLDExICsxNTEsMTEgQEAgY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
cHVibGljOgotICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmlu
ZyAvKiBvcHRfbm90ZXMgKi8sIE9wdGlvbmFsPGRvdWJsZT4gLyogb3B0X3RpbWVzdGFtcCAqLywg
UmVmUHRyPEpTT046Ok9iamVjdD4gLyogb3B0X3ZhbHVlcyAqLywgUmVmUHRyPEpTT046OlZhbHVl
PiAvKiBvcHRfcGF5bG9hZCAqLywgT3B0aW9uYWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJZCAqLywg
UmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAqLywgT3B0
aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRfc2NyZWVuQ29s
b3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0X2FsdGVy
bmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIG9wdF9wcmludENvbG9yICovPj4gZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhpbnQgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVy
eSkgPSAwOworICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmlu
ZyAvKiBvcHRfbm90ZXMgKi8sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiAvKiBvcHRfdGltZXN0YW1w
ICovLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiAvKiBvcHRfdmFsdWVzICovLCBSZWZQdHI8SlNPTjo6
VmFsdWU+IC8qIG9wdF9wYXlsb2FkICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogb3B0X2RhdGFi
YXNlSWQgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiAvKiBvcHRfc3FsRXJy
b3IgKi8sIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiAv
KiBvcHRfc2NyZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gLyogb3B0X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIG9wdF9wcmludENvbG9yICov
Pj4gZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhpbnQgZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBxdWVyeSkgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKLSAgICAg
ICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBv
cHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxK
U09OOjpWYWx1ZT4mJiBvcHRfcGF5bG9hZCwgT3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlk
LCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIE9wdGlv
bmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3Is
IFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3Vj
Y2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29u
c3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3Rh
bXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVl
PiYmIG9wdF9wYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVm
UHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgb3B0X3NxbEVycm9yLCBzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4mJiBvcHRfc2NyZWVuQ29sb3Is
IFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBvcHRfYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKTsKICAgICB9OwogICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhpbnQgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2s+JiYpID0gMDsKICAgICB2aXJ0dWFsIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gLyogY29sdW1uTmFtZXMgKi8s
IFN0cmluZyAvKiBub3RlcyAqLywgZG91YmxlIC8qIHRpbWVzdGFtcCAqLywgUmVmPEpTT046Ok9i
amVjdD4gLyogdmFsdWVzICovLCBSZWY8SlNPTjo6VmFsdWU+IC8qIHBheWxvYWQgKi8sIGludCAv
KiBkYXRhYmFzZUlkICovLCBSZWY8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gLyogc3FsRXJy
b3IgKi8sIFJlZjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogYWx0ZXJuYXRlQ29s
b3JzICovLCBQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgLyogc2NyZWVuQ29sb3Ig
Ki8sIFN0cmluZyAvKiBwcmludENvbG9yICovPj4gZXhlY3V0ZVNRTFN5bmMoaW50IGRhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgcXVlcnkpID0gMDsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXMobG9uZyBwcm90b2NvbAogCiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhl
Y3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
KFdURk1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
Q2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiYgb3B0
X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91YmxlPiYm
IG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRy
PEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBPcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFiYXNl
SWQsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIG9wdF9zcWxFcnJvciwgT3B0
aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiYmIG9wdF9zY3JlZW5Db2xv
ciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVD
b2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0Nh
bGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVm
UHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBvcHRf
ZGF0YWJhc2VJZCwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgb3B0X3NxbEVy
cm9yLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4mJiBv
cHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBv
cHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKQogewogICAg
IGF1dG8gcHJvdG9jb2xfanNvbk1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGlmICghIW9wdF9jb2x1bW5OYW1lcykKQEAgLTY4OCwxMSArNjg4LDExIEBAIHB1YmxpYzoKIG5h
bWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5
cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRh
YmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0SGVscGVycwogCkBAIC03NjgsOCArNzY4LDcgQEAgU3RyaW5nIGdldEVudW1Db25z
dGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAnRGF0YWJhc2UnIERvbWFp
bgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0
aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcm
IHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1
ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM6OlJlZCwKQEAgLTEzOTYsNyArMTM5NSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIHsK
QEAgLTE0MTEsNyArMTQxMCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVz
dFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gInJlZCIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CkBAIC0xNDM3LDcgKzE0MzYs
NyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0
aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJp
bnRDb2xvckN5YW47CkBAIC0xNDY1LDcgKzE0NjQsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
bgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29s
b3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CkBAIC0xNDkzLDcg
KzE0OTIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3IgdmFsdQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxp
bmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3I+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3I+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAi
Y3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
UHJpbnRDb2xvckN5YW47CkBAIC0xNTIxLDcgKzE1MjAsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
IHZhbAogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckN5YW47CkBAIC0xNTk2LDcg
KzE1OTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VQcmlt
YXJ5Q29sb3JzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAog
ewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNs
YXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFz
ZVByaW1hcnlDb2xvcnM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRv
IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlByaW1hcnlDb2xvcnMi
KTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IGRkNzc2NWU1YjdiMjU4MmM3ZThkYmU5NTM1OTMxNzg1YmFmYzI3NTEuLmI2NzM3ZTE4ZGY2
MGU2Y2RhMjk5YTY3NDBiMzcyNDUxODE4NDJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+QWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xfcmVxdWVz
dElkLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcm
IG9wdF9ub3RlcywgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2Fk
LCBPcHRpb25hbDxpbnQ+JiYgb3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3B0X3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPEpTT046
OkFycmF5PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50Q29s
b3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIHByb3RvY29sX3JlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdF9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9w
dF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpT
T046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBvcHRfZGF0YWJh
c2VJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYg
b3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJlZjxK
U09OOjpBcnJheT4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRp
bWVzdGFtcCwgUmVmPEpTT046Ok9iamVjdD4mJiB2YWx1ZXMsIFJlZjxKU09OOjpWYWx1ZT4mJiBw
YXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmPEpTT046Ok9iamVjdD4mJiBzcWxFcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmPEpTT046OkFycmF5PiYmIGFsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKSA9IDA7CiB9OwogCkBAIC0xNDYsNyArMTQ2LDcg
QEAgY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKIAogY2xhc3MgRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJp
bmc+PiAvKiBvcHRfY29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBvcHRfbm90ZXMgKi8sIE9wdGlv
bmFsPGRvdWJsZT4gLyogb3B0X3RpbWVzdGFtcCAqLywgUmVmUHRyPEpTT046Ok9iamVjdD4gLyog
b3B0X3ZhbHVlcyAqLywgUmVmUHRyPEpTT046OlZhbHVlPiAvKiBvcHRfcGF5bG9hZCAqLywgT3B0
aW9uYWw8aW50PiAvKiBvcHRfZGF0YWJhc2VJZCAqLywgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IC8qIG9wdF9zcWxFcnJvciAqLywgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNl
OjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRfc2NyZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8q
IG9wdF9wcmludENvbG9yICovPj4gZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8
SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rlcywg
T3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2FkLCBPcHRpb25hbDxp
bnQ+JiYgb3B0X2RhdGFiYXNlSWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3NxbEVycm9y
LCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+JiYgb3B0X3NjcmVl
bkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiAvKiBvcHRf
Y29sdW1uTmFtZXMgKi8sIFN0cmluZyAvKiBvcHRfbm90ZXMgKi8sIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiAvKiBvcHRfdGltZXN0YW1wICovLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiAvKiBvcHRfdmFs
dWVzICovLCBSZWZQdHI8SlNPTjo6VmFsdWU+IC8qIG9wdF9wYXlsb2FkICovLCBzdGQ6Om9wdGlv
bmFsPGludD4gLyogb3B0X2RhdGFiYXNlSWQgKi8sIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiAvKiBvcHRfc3FsRXJyb3IgKi8sIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiAvKiBvcHRfc2NyZWVuQ29sb3IgKi8sIFJlZlB0cjxQcm90b2Nv
bDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gLyogb3B0X2FsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5n
IC8qIG9wdF9wcmludENvbG9yICovPj4gZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhSZWZQ
dHI8SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG9wdF9ub3Rl
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIHN0
ZDo6b3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG9wdF9zcWxFcnJvciwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnM+JiYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2FsdGVy
bmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1
YWwgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxT
dHJpbmc+PiAvKiBjb2x1bW5OYW1lcyAqLywgU3RyaW5nIC8qIG5vdGVzICovLCBkb3VibGUgLyog
dGltZXN0YW1wICovLCBSZWY8SlNPTjo6T2JqZWN0PiAvKiB2YWx1ZXMgKi8sIFJlZjxKU09OOjpW
YWx1ZT4gLyogcGF5bG9hZCAqLywgaW50IC8qIGRhdGFiYXNlSWQgKi8sIFJlZjxQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiAvKiBzcWxFcnJvciAqLywgUHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzIC8qIHNjcmVlbkNvbG9yICovLCBSZWY8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IC8qIGFsdGVybmF0ZUNvbG9ycyAqLywgU3RyaW5nIC8qIHByaW50Q29sb3IgKi8+PiBl
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmPEpTT046OkFycmF5PiYmIGNvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6T2JqZWN0
PiYmIHZhbHVlcywgUmVmPEpTT046OlZhbHVlPiYmIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBS
ZWY8SlNPTjo6T2JqZWN0PiYmIHNxbEVycm9yLCBQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlD
b2xvcnMgc2NyZWVuQ29sb3IsIFJlZjxKU09OOjpBcnJheT4mJiBhbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CkBAIC02MDEsMTEgKzYwMSwxMSBAQCBw
dWJsaWM6CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90
b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBl
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGlu
IHRoZSAnRGF0YWJhc2UnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNjgxLDggKzY4MSw3IEBAIFN0cmluZyBn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFi
YXNlJyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRhdGFiYXNl
OjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8
PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29u
c3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNv
bnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzOjpSZWQsCkBAIC03NDgsNyArNzQ3LDcgQEAgY2xhc3MgT2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRGF0YWJh
c2VCYWMKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmpDSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURv
bWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KLSAgICB2b2lk
IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBwcm90b2NvbF9yZXF1ZXN0SWQsIFJl
ZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25v
dGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIE9wdGlv
bmFsPGludD4mJiBvcHRfZGF0YWJhc2VJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfc3Fs
RXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SlNPTjo6QXJyYXk+
JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xvcikgZmlu
YWw7CisgICAgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcHJvdG9jb2xf
cmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0X2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIG9wdF9ub3Rlcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwg
UmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYg
b3B0X3BheWxvYWQsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG9wdF9kYXRhYmFzZUlkLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBvcHRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJp
bmcmIG9wdF9wcmludENvbG9yKSBmaW5hbDsKICAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVycyhsb25nIHByb3RvY29sX3JlcXVlc3RJZCwgUmVmPEpTT046OkFycmF5PiYmIGNvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWY8SlNPTjo6
T2JqZWN0PiYmIHZhbHVlcywgUmVmPEpTT046OlZhbHVlPiYmIHBheWxvYWQsIGludCBkYXRhYmFz
ZUlkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNv
bG9yLCBSZWY8SlNPTjo6QXJyYXk+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHBy
aW50Q29sb3IpIGZpbmFsOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29s
RGF0YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKQEAgLTc5Nyw3ICs3OTYsNyBAQCBw
cml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBPYmpDSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25n
IHByb3RvY29sX3JlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5PiYmIGluX29wdF9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBpbl9vcHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBpbl9v
cHRfdGltZXN0YW1wLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGluX29wdF92YWx1ZXMsIFJlZlB0
cjxKU09OOjpWYWx1ZT4mJiBpbl9vcHRfcGF5bG9hZCwgT3B0aW9uYWw8aW50PiYmIGluX29wdF9k
YXRhYmFzZUlkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGluX29wdF9zcWxFcnJvciwgY29uc3Qg
U3RyaW5nJiBpbl9vcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxKU09OOjpBcnJheT4mJiBpbl9vcHRf
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX29wdF9wcmludENvbG9yKQordm9pZCBP
YmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhsb25nIHByb3RvY29sX3JlcXVlc3RJZCwgUmVmUHRyPEpTT046OkFycmF5PiYm
IGluX29wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9vcHRfbm90ZXMsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiYmIGluX29wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
aW5fb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIGluX29wdF9wYXlsb2FkLCBzdGQ6
Om9wdGlvbmFsPGludD4mJiBpbl9vcHRfZGF0YWJhc2VJZCwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBpbl9vcHRfc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fb3B0X3NjcmVlbkNvbG9yLCBSZWZQ
dHI8SlNPTjo6QXJyYXk+JiYgaW5fb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBp
bl9vcHRfcHJpbnRDb2xvcikKIHsKICAgICBpZiAoIVttX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxi
YWNrOnN1Y2Nlc3NDYWxsYmFjazpjb2x1bW5OYW1lczpub3Rlczp0aW1lc3RhbXA6dmFsdWVzOnBh
eWxvYWQ6ZGF0YWJhc2VJZDpzcWxFcnJvcjpzY3JlZW5Db2xvcjphbHRlcm5hdGVDb2xvcnM6cHJp
bnRDb2xvcjopXSkgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2Nv
bEVycm9yKHByb3RvY29sX3JlcXVlc3RJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZv
dW5kLCAiJ0RhdGFiYXNlLmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMnIHdhcyBub3QgZm91
bmQiX3MpOwpAQCAtODYyLDEzICs4NjEsMTMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHAKICAg
ICBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX29wdF9zcWxFcnJvcjsKICAgICBpZiAo
ISFpbl9vcHRfc3FsRXJyb3IpCiAgICAgICAgIG9faW5fb3B0X3NxbEVycm9yID0gYWRvcHROUyhb
W1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDppbl9v
cHRfc3FsRXJyb3IucmVsZWFzZU5vbk51bGwoKV0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgT3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBvX2luX29wdF9zY3JlZW5Db2xv
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4g
b19pbl9vcHRfc2NyZWVuQ29sb3I7CiAgICAgaWYgKCEhaW5fb3B0X3NjcmVlbkNvbG9yKQogICAg
ICAgICBvX2luX29wdF9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX29wdF9zY3JlZW5Db2xvcik7CiAgICAgTlNBcnJh
eS8qPE5TU3RyaW5nPiovICpvX2luX29wdF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgaWYgKCEhaW5f
b3B0X2FsdGVybmF0ZUNvbG9ycykKICAgICAgICAgb19pbl9vcHRfYWx0ZXJuYXRlQ29sb3JzID0g
dG9PYmpDU3RyaW5nQXJyYXkoaW5fb3B0X2FsdGVybmF0ZUNvbG9ycy5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZShhbm9ueW1vdXMpPiBvX2luX29w
dF9wcmludENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2UoYW5v
bnltb3VzKT4gb19pbl9vcHRfcHJpbnRDb2xvcjsKICAgICBpZiAoISFpbl9vcHRfcHJpbnRDb2xv
cikKICAgICAgICAgb19pbl9vcHRfcHJpbnRDb2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0
UHJvdG9jb2xEYXRhYmFzZShhbm9ueW1vdXMpPihpbl9vcHRfcHJpbnRDb2xvcik7CiAgICAgW21f
ZGVsZWdhdGUgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOmVy
cm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczoo
ISFpbl9vcHRfY29sdW1uTmFtZXMgPyAmb19pbl9vcHRfY29sdW1uTmFtZXMgOiBuaWwpIG5vdGVz
OighIWluX29wdF9ub3RlcyA/ICZvX2luX29wdF9ub3RlcyA6IG5pbCkgdGltZXN0YW1wOighIWlu
X29wdF90aW1lc3RhbXAgPyAmb19pbl9vcHRfdGltZXN0YW1wIDogbmlsKSB2YWx1ZXM6KCEhaW5f
b3B0X3ZhbHVlcyA/ICZvX2luX29wdF92YWx1ZXMgOiBuaWwpIHBheWxvYWQ6KCEhaW5fb3B0X3Bh
eWxvYWQgPyAmb19pbl9vcHRfcGF5bG9hZCA6IG5pbCkgZGF0YWJhc2VJZDooISFpbl9vcHRfZGF0
YWJhc2VJZCA/ICZvX2luX29wdF9kYXRhYmFzZUlkIDogbmlsKSBzcWxFcnJvcjooISFpbl9vcHRf
c3FsRXJyb3IgPyAmb19pbl9vcHRfc3FsRXJyb3IgOiBuaWwpIHNjcmVlbkNvbG9yOighIWluX29w
dF9zY3JlZW5Db2xvciA/ICZvX2luX29wdF9zY3JlZW5Db2xvci52YWx1ZSgpIDogbmlsKSBhbHRl
cm5hdGVDb2xvcnM6KCEhaW5fb3B0X2FsdGVybmF0ZUNvbG9ycyA/ICZvX2luX29wdF9hbHRlcm5h
dGVDb2xvcnMgOiBuaWwpIHByaW50Q29sb3I6KCEhaW5fb3B0X3ByaW50Q29sb3IgPyAmb19pbl9v
cHRfcHJpbnRDb2xvci52YWx1ZSgpIDogbmlsKV07CkBAIC05MTUsMTMgKzkxNCwxMyBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMobG9uZyBwcgogICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXls
b2FkID0gYWRvcHROUyhbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09O
T2JqZWN0OldURk1vdmUoaW5fcGF5bG9hZCldKS5hdXRvcmVsZWFzZSgpOwogICAgIGludCBvX2lu
X2RhdGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlkOwogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3IgKm9faW5fc3FsRXJyb3IgPSBhZG9wdE5TKFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBh
bGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OldURk1vdmUoaW5fc3FsRXJyb3IpXSkuYXV0b3JlbGVh
c2UoKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IG9f
aW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQ
cmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9j
b2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xv
cik7CiAgICAgaWYgKCFvX2luX3NjcmVlbkNvbG9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRj
aGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJh
bXMsICJQYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyBvZiBtZXRob2QgJ0RhdGFiYXNlLmV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycycgY2Fubm90IGJlIHByb2Nlc3NlZCJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNv
bG9ycyA9IHRvT2JqQ1N0cmluZ0FycmF5KFdURk1vdmUoaW5fYWx0ZXJuYXRlQ29sb3JzKSk7Ci0g
ICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2UoYW5vbnltb3VzKT4gb19pbl9wcmludENv
bG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlKGFub255bW91cyk+
KGluX3ByaW50Q29sb3IpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2Uo
YW5vbnltb3VzKT4gb19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbERhdGFiYXNlKGFub255bW91cyk+KGluX3ByaW50Q29sb3IpOwogICAgIGlmICghb19pbl9w
cmludENvbG9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29s
RXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsICJQYXJhbWV0ZXIgJ3ByaW50
Q29sb3InIG9mIG1ldGhvZCAnRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzJyBj
YW5ub3QgYmUgcHJvY2Vzc2VkIl9zKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI2NSw3ICsxMjY0
LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8
T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Citz
dGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZhbHVlKQogewpAQCAtMTI4MCw3ICsxMjc5LDcgQEAgaW5s
aW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZSA9PSAicmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9yc1JlZDsKQEAgLTEzMDYsNyArMTMwNSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnNQCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lh
biIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTEzMzYsNyArMTMzNSw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTEzNjQsNyArMTM2Myw3
IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTEzOTQs
NyArMTM5Myw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByCiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsK
QEAgLTE0NjksNyArMTQ2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lk
KV9wYXJzZVByaW1hcnlDb2xvcnM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBb
TlNTdHJpbmcgY2xhc3NdKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQp
OworICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9h
ZCk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiUHJp
bWFyeUNvbG9ycyIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDFmZTU5YjM0MGYwMDkyNTY1
ZjFkZmJjNGUwMWY2ZTkyYmU5NTRjNmEuLjhjYzY0MjhlNzRmYzNlOWE1ZDk5ZjczNjZkZjcxMmE4
MTNhMzk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTEw
NzUsNyArMTA3NSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4K
LU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tZGVidWdnYWJsZVR5
cGVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi1kZWJ1Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQKaW5kZXgg
YjlkZWNhMmJjZTdhMWJjZjAzMzBkOGI5MThhYjVjNmNiMzEwOThlMS4uZDRlZTM5OWU4MTUyODEz
OTYxMWZhMGM1MTNjNDlkMjcxYTkyODc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi1kZWJ1Z2dhYmxlVHlw
ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi1kZWJ1Z2dhYmxlVHlwZXMuanNvbi1yZXN1bHQKQEAg
LTkxMiw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+
Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZG9tYWluLXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlw
ZS5qc29uLXJlc3VsdAppbmRleCA0N2VkMjM5ZmQ0ZmM4MzIxYWY3ZDYwMjA0NDI1N2Q4M2I4OGNi
Y2VlLi43YjA0Zjg5NGI5NjE3ZjJlMGRhZmJiMzhmZjc5NDMwMWNjMTVhYzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZG9tYWluLXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUu
anNvbi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGVzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFp
bi10YXJnZXRUeXBlcy5qc29uLXJlc3VsdAppbmRleCA0N2U1Mjc5MTUxMjZjNGY1NjlkOTI5NTdk
MThiYzgwYjcxYzZjYmJiLi5hYTJkNjFhODc4MjRjMDVlYmVmOTUxZWYxMWI2MjU0MzQ4NTExZjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFy
Z2V0VHlwZXMuanNvbi1yZXN1bHQKQEAgLTkxMiw3ICs5MTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1U
eXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFu
ZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0CmluZGV4IDI5NjNlOTkxMzU5MDljNTU5MGM2MWMwN2NiNmQ3ZDE4YWNiYzhmMGUu
LjNmOWUwMDRkZDczOTMwZWY0NThhZDBmODdkZGY0MWU0YWUxZGMzNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21h
aW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xMjkxLDcgKzEyOTEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpD
RW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3Vs
dAppbmRleCBmMjYyMzcxODdlNjdjMzhhZjQxMjcyOTZlNTA1MTQ2OTczZjdlOGNiLi40OTI2M2Jh
Yzk0MzgwMWZmZGQ5NmI4ZjM3NWE1NWQ4ZGU2ZTc1YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC0xNTYsNyArMTU2LDcg
QEAgY2xhc3MgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOwogCiBjbGFz
cyBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OlR5cGVE
b21haW46OkVudW0gLyogZW51bVJlcXVpcmVkICovLCBPcHRpb25hbDxQcm90b2NvbDo6VHlwZURv
bWFpbjo6RW51bT4gLyogb3B0X2VudW1PcHRpb25hbCAqLywgU3RyaW5nIC8qIHJldHVyblJlcXVp
cmVkICovLCBTdHJpbmcgLyogb3B0X3JldHVybk9wdGlvbmFsICovPj4gY29tbWFuZChQcm90b2Nv
bDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVxdWlyZWQsIE9wdGlvbmFsPFByb3RvY29sOjpUeXBl
RG9tYWluOjpFbnVtPiYmIG9wdF9lbnVtT3B0aW9uYWwsIGNvbnN0IFN0cmluZyYgcGFyYW1ldGVy
UmVxdWlyZWQsIGNvbnN0IFN0cmluZyYgb3B0X3BhcmFtZXRlck9wdGlvbmFsKSA9IDA7CisgICAg
dmlydHVhbCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFByb3RvY29sOjpUeXBl
RG9tYWluOjpFbnVtIC8qIGVudW1SZXF1aXJlZCAqLywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
VHlwZURvbWFpbjo6RW51bT4gLyogb3B0X2VudW1PcHRpb25hbCAqLywgU3RyaW5nIC8qIHJldHVy
blJlcXVpcmVkICovLCBTdHJpbmcgLyogb3B0X3JldHVybk9wdGlvbmFsICovPj4gY29tbWFuZChQ
cm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVxdWlyZWQsIHN0ZDo6b3B0aW9uYWw8UHJv
dG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwgY29uc3QgU3RyaW5n
JiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0aW9uYWwp
ID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Db21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIFNoYXJlZE9wdGlvbmFsID0gNSwKICAgICAgICAgICAgIEdyZWVuID0gNiwKICAgICAgICAg
fTsgLy8gZW51bSBjbGFzcyBQYXJhbWV0ZXJPcHRpb25hbAotICAgIHZvaWQgZXZlbnQoUHJvdG9j
b2w6OlR5cGVEb21haW46OkVudW0gZW51bVJlcXVpcmVkLCBPcHRpb25hbDxQcm90b2NvbDo6VHlw
ZURvbWFpbjo6RW51bT4mJiBvcHRfZW51bU9wdGlvbmFsLCBjb25zdCBTdHJpbmcmIHBhcmFtZXRl
clJlcXVpcmVkLCBjb25zdCBTdHJpbmcmIG9wdF9wYXJhbWV0ZXJPcHRpb25hbCk7CisgICAgdm9p
ZCBldmVudChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSBlbnVtUmVxdWlyZWQsIHN0ZDo6b3B0
aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwgY29u
c3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVy
T3B0aW9uYWwpOwogcHJpdmF0ZToKICAgICBGcm9udGVuZFJvdXRlciYgbV9mcm9udGVuZFJvdXRl
cjsKIH07CkBAIC00MDIsNyArNDAyLDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKLXZvaWQgRXZlbnREb21haW5Gcm9udGVuZERpc3BhdGNoZXI6OmV2ZW50KFByb3RvY29s
OjpUeXBlRG9tYWluOjpFbnVtIGVudW1SZXF1aXJlZCwgT3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVE
b21haW46OkVudW0+JiYgb3B0X2VudW1PcHRpb25hbCwgY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJS
ZXF1aXJlZCwgY29uc3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0aW9uYWwpCit2b2lkIEV2ZW50
RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpldmVudChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51
bSBlbnVtUmVxdWlyZWQsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+
JiYgb3B0X2VudW1PcHRpb25hbCwgY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJSZXF1aXJlZCwgY29u
c3QgU3RyaW5nJiBvcHRfcGFyYW1ldGVyT3B0aW9uYWwpCiB7CiAgICAgYXV0byBwcm90b2NvbF9q
c29uTWVzc2FnZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcHJvdG9jb2xfanNvbk1l
c3NhZ2UtPnNldFN0cmluZygibWV0aG9kIl9zLCAiRXZlbnREb21haW4uZXZlbnQiX3MpOwpAQCAt
NTAyLDExICs1MDIsMTEgQEAgZW51bSBjbGFzcyBFbnVtIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVy
cyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90
b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Citz
dGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdUeXBlRG9tYWluJyBEb21haW4KIHRl
bXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+KGNvbnN0IFN0cmluZyYp
Oworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPihjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNTg2LDggKzU4Niw3IEBAIFN0cmlu
ZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1R5
cGVEb21haW4nIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6VHlwZURv
bWFpbjo6RW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUeXBlRG9tYWlu
OjpFbnVtPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6Om9w
dGlvbmFsPFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OlR5cGVEb21haW46OkVudW0+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAg
ICAgICAoc2l6ZV90KVByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtOjpTaGFyZWQsCkBAIC03MjUs
MjAgKzcyNCwyMCBAQCB2b2lkIE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXI6OmNvbW1hbmQobG9uZyBwcm90b2NvbF9yZXF1ZXN0SQogICAgICAgICBiYWNrZW5kRGlz
cGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocHJvdG9jb2xfcmVxdWVzdElkLCBXVEZNb3ZlKHByb3Rv
Y29sX2pzb25NZXNzYWdlKSwgZmFsc2UpOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxUZXN0UHJv
dG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9lbnVtUmVxdWlyZWQgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+KGluX2VudW1SZXF1aXJlZCk7CisgICAgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9lbnVtUmVxdWlyZWQg
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+KGluX2VudW1S
ZXF1aXJlZCk7CiAgICAgaWYgKCFvX2luX2VudW1SZXF1aXJlZCkgewogICAgICAgICBiYWNrZW5k
RGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCAiUGFyYW1ldGVyICdlbnVtUmVxdWlyZWQnIG9mIG1ldGhvZCAnQ29tbWFuZERv
bWFpbi5jb21tYW5kJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gb19pbl9vcHRf
ZW51bU9wdGlvbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFpbkVu
dW0+IG9faW5fb3B0X2VudW1PcHRpb25hbDsKICAgICBpZiAoISFpbl9vcHRfZW51bU9wdGlvbmFs
KQogICAgICAgICBvX2luX29wdF9lbnVtT3B0aW9uYWwgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sVHlwZURvbWFpbkVudW0+KGluX29wdF9lbnVtT3B0aW9uYWwpOwotICAgIE9wdGlv
bmFsPFRlc3RQcm90b2NvbENvbW1hbmREb21haW4oYW5vbnltb3VzKT4gb19pbl9wYXJhbWV0ZXJS
ZXF1aXJlZCA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluKGFu
b255bW91cyk+KGluX3BhcmFtZXRlclJlcXVpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQ
cm90b2NvbENvbW1hbmREb21haW4oYW5vbnltb3VzKT4gb19pbl9wYXJhbWV0ZXJSZXF1aXJlZCA9
IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluKGFub255bW91cyk+
KGluX3BhcmFtZXRlclJlcXVpcmVkKTsKICAgICBpZiAoIW9faW5fcGFyYW1ldGVyUmVxdWlyZWQp
IHsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNr
ZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgIlBhcmFtZXRlciAncGFyYW1ldGVyUmVxdWly
ZWQnIG9mIG1ldGhvZCAnQ29tbWFuZERvbWFpbi5jb21tYW5kJyBjYW5ub3QgYmUgcHJvY2Vzc2Vk
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xD
b21tYW5kRG9tYWluKGFub255bW91cyk+IG9faW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbihhbm9ueW1vdXMpPiBvX2lu
X29wdF9wYXJhbWV0ZXJPcHRpb25hbDsKICAgICBpZiAoISFpbl9vcHRfcGFyYW1ldGVyT3B0aW9u
YWwpCiAgICAgICAgIG9faW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsID0gZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbENvbW1hbmREb21haW4oYW5vbnltb3VzKT4oaW5fb3B0X3BhcmFtZXRl
ck9wdGlvbmFsKTsKICAgICBbbV9kZWxlZ2F0ZSBjb21tYW5kV2l0aEVycm9yQ2FsbGJhY2s6ZXJy
b3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrIGVudW1SZXF1aXJlZDpv
X2luX2VudW1SZXF1aXJlZC52YWx1ZSgpIGVudW1PcHRpb25hbDooISFpbl9vcHRfZW51bU9wdGlv
bmFsID8gJm9faW5fb3B0X2VudW1PcHRpb25hbC52YWx1ZSgpIDogbmlsKSBwYXJhbWV0ZXJSZXF1
aXJlZDpvX2luX3BhcmFtZXRlclJlcXVpcmVkLnZhbHVlKCkgcGFyYW1ldGVyT3B0aW9uYWw6KCEh
aW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsID8gJm9faW5fb3B0X3BhcmFtZXRlck9wdGlvbmFsLnZh
bHVlKCkgOiBuaWwpXTsKQEAgLTEwODgsNyArMTA4Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmlu
ZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtIHZhbHVlKQogewpA
QCAtMTEwMyw3ICsxMTAyLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFR5cGVEb21haW5FbnVtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0
aW9uYWw8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVHlwZURv
bWFpbkVudW0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAic2hhcmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVE
b21haW5FbnVtU2hhcmVkOwpAQCAtMTE2Nyw3ICsxMTY2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlRW51bTooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBh
eWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBh
eWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVE
b21haW5FbnVtPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xUeXBlRG9tYWluRW51bT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOworICAg
IGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29s
VHlwZURvbWFpbkVudW0+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJP
V19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJFbnVtIik7CiAgICAgKm91
dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnQtdGFyZ2V0VHlw
ZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnQtdGFyZ2V0
VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQKaW5kZXggOTIy
ZjI2ZTQ2NzNkOTg3OWYwOTI4YTUyMTEyZmUzMjBjNTYzNmU4Zi4uMWRhYzZmYTNiYzE0MjEyNDE0
MjZkMTEwMjliNjhkZTBkZGQ1MTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50LXRhcmdldFR5cGUtbWF0Y2hp
bmctZG9tYWluLWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudC10YXJnZXRUeXBl
LW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdApAQCAtOTEyLDcgKzkx
Miw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFs
PE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
c3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVu
dHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlv
bmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggMzU0MmZlZWZkMWI5ZDMxNGRlZTgwNzRh
ZTM2ODQ3NDExYTMyYjAxNS4uODM1N2E0YTU5N2Y3MWVjMTQwMzgzNTdjZTdmNjNlY2FmNDM3ZTdm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTIzMyw3
ICsyMzMsNyBAQCBjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXIoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyKSA6IG1fZnJvbnRlbmRSb3V0ZXIoZnJv
bnRlbmRSb3V0ZXIpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nJiBvcHRfbm90ZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRfdGltZXN0YW1wLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIG9wdF92YWx1ZXMsIFJlZlB0cjxKU09OOjpWYWx1ZT4mJiBvcHRfcGF5
bG9hZCwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgb3B0X3NxbEVycm9yLCBj
b25zdCBTdHJpbmcmIG9wdF9zY3JlZW5Db2xvciwgUmVmUHRyPFByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYmIG9wdF9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgb3B0X3ByaW50
Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBvcHRf
bm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYmIG9wdF9wYXlsb2Fk
LCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBvcHRfc3FsRXJyb3IsIGNvbnN0
IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBvcHRfcHJpbnRDb2xv
cik7CiAgICAgdm9pZCBkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmPEpTT046OkFy
cmF5T2Y8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91Ymxl
IHRpbWVzdGFtcCwgUmVmPEpTT046Ok9iamVjdD4mJiB2YWx1ZXMsIFJlZjxKU09OOjpWYWx1ZT4m
JiBwYXlsb2FkLCBSZWY8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29u
c3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVmPFByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKIHByaXZhdGU6
CiAgICAgRnJvbnRlbmRSb3V0ZXImIG1fZnJvbnRlbmRSb3V0ZXI7CkBAIC0yNzksNyArMjc5LDcg
QEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgRGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4mJiBvcHRfY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgb3B0X25v
dGVzLCBPcHRpb25hbDxkb3VibGU+JiYgb3B0X3RpbWVzdGFtcCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBvcHRfdmFsdWVzLCBSZWZQdHI8SlNPTjo6VmFsdWU+JiYgb3B0X3BheWxvYWQsIFJlZlB0
cjxQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIG9wdF9zcWxFcnJvciwgY29uc3QgU3RyaW5n
JiBvcHRfc2NyZWVuQ29sb3IsIFJlZlB0cjxQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4m
JiBvcHRfYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIG9wdF9wcmludENvbG9yKQordm9p
ZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYmIG9wdF9jb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nJiBvcHRfbm90ZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9wdF90aW1lc3RhbXAs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3B0X3ZhbHVlcywgUmVmUHRyPEpTT046OlZhbHVlPiYm
IG9wdF9wYXlsb2FkLCBSZWZQdHI8UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBvcHRfc3Fs
RXJyb3IsIGNvbnN0IFN0cmluZyYgb3B0X3NjcmVlbkNvbG9yLCBSZWZQdHI8UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+JiYgb3B0X2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBv
cHRfcHJpbnRDb2xvcikKIHsKICAgICBhdXRvIHByb3RvY29sX2pzb25NZXNzYWdlID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwcm90b2NvbF9qc29uTWVzc2FnZS0+c2V0U3RyaW5nKCJt
ZXRob2QiX3MsICJEYXRhYmFzZS5kaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzIl9zKTsKQEAg
LTk3Miw3ICs5NzIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+
Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13
aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0
dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCAxZDQ1YzZmMjc4Njg5ZWEwYTIwMjc5MWRmZDcx
NDRlZmJmZGIxYjViLi44M2RlZTA1MDg5MDMyNDFjMTBhZmQxMjJlMzcxYmU1ZjdjNDU5OThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAg
LTk5Nyw3ICs5OTcsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+
Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZl
cmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNv
bi1yZXN1bHQKaW5kZXggZDU1NWE3MzQ0MGZmMDljYmRiZDMyNmQwNjc1ZmY3OTNlNzk3NDYwYy4u
OGMxNjFhNWE5YjZjZjBiN2JkNWJiYzQ5YWMzZTdiMzhkMGJmZjQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUt
dHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAtNzMwLDcgKzczMCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3No
YWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggOWMzYjAyYzEzMWQ1OWM5ZmUwNmM1ZTUz
ZWFkYjZkZDQwOThhYmVhYS4uNTVmNGIyOWZmZDEwMmMyZDQ4M2YxNDlmZTFiM2NkYmY4MDhjZDY3
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MTQsMTEg
KzQxNCwxMSBAQCBwdWJsaWM6CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90
b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
IC8vIEVudW1zIGluIHRoZSAnUnVudGltZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQ
cm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PFByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTQ4MCw4ICs0ODAsNyBAQCBT
dHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhl
ICdSdW50aW1lJyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRp
bWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVu
dGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3RlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihj
b25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
Y29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQcm90b2NvbDo6UnVudGltZTo6
S2V5UGF0aDo6VHlwZTo6TnVsbCwKQEAgLTg2OCw3ICs4NjcsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1U
eXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUgdmFs
dWUpCiB7CkBAIC04ODMsNyArODgyLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8Pgot
aW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAibnVsbCIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVOdWxsOwpAQCAtMTAwMiw5ICsxMDAxLDkgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAInR5cGUiXSwgQCJ0
eXBlIik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPiB0eXBl
ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJ0eXBlIl0pOworICAgIGF1dG8gdHlwZSA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AidHlwZSJdKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9FTlVNX1ZBTFVFKHR5cGUsIEAidHlwZSIpOwotICAgIHNlbGYudHlwZSA9IHR5cGUudmFs
dWUoKTsKKyAgICBzZWxmLnR5cGUgPSAqdHlwZTsKIAogICAgIHNlbGYuc3RyaW5nID0gcGF5bG9h
ZFtAInN0cmluZyJdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3Nob3VsZC1zdHJpcC1jb21tZW50cy5qc29uLXJlc3VsdAppbmRleCAzZDEyNmYzMzk2NmUz
OTRkYzc0ODg3MGZlOTlkZjM5NDk2MDU2OGQ2Li41OTI4N2FhYjM0MjIyZTU1YTUwZmQyZmM3MTNm
ZTZkOTg5MjAxZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9zaG91bGQtc3RyaXAtY29tbWVudHMuanNvbi1yZXN1bHQKQEAgLTcyMCw3ICs3MjAsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpD
RW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXBy
aW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDI4ODA0ZDA2ZDRjM2E1ODBlN2NhZDgwNDFj
YWJlOTkxZDg5ZTY4N2MuLjk1ODJkZWY3N2UyNzYyY2Q1ZTQ1NDRiNDZiMWNkNGIyYWI5YmM2NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJl
c3VsdApAQCAtNzI1LDcgKzcyNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXkt
dHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQK
aW5kZXggNTM0YWI2NGI1NjliNDYxOTE0MDc0ODlhMmI4MDdhNzJmOTRkYTNlYS4uZmUxNDI4YzEy
NjBmNTMxMWE0NWNlMWZhNGZjMjFjMjQzNjc3ZWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBl
Lmpzb24tcmVzdWx0CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBlbnVtIGNsYXNzIFJlYXNvbiB7CiBu
YW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1U
eXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnRGVi
dWdnZXInIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRlYnVnZ2VyOjpS
ZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNv
bj4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEZWJ1Z2dlcjo6UmVh
c29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+
KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC00NDAs
OCArNDQwLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8v
IEVudW1zIGluIHRoZSAnRGVidWdnZXInIERvbWFpbgogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQ
cm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVt
cGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZh
bHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uOjpE
aWVkLApAQCAtODIwLDcgKzgxOSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQ
cm90b2NvbERlYnVnZ2VyUmVhc29uKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUg
U3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24gdmFsdWUp
CiB7CkBAIC04MzUsNyArODM0LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbERlYnVnZ2VyUmVhc29uIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUg
T3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGVi
dWdnZXJSZWFzb24+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZSA9PSAiRGllZCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1
Z2dlclJlYXNvbkRpZWQ7CkBAIC05MTgsNyArOTE3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICsgKHZvaWQpX3BhcnNlUmVhc29uOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5
bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5
bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdn
ZXJSZWFzb24+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbERlYnVnZ2VyUmVhc29uPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7CisgICAg
YXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xE
ZWJ1Z2dlclJlYXNvbj4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlJlYXNvbiIpOwogICAgICpv
dXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24t
cmVzdWx0CmluZGV4IDg0NWZmOGQ5NTEzZWVlZWIyODUzODZhMmNmMDhkMTA2OTg0NWM4ZGMuLjc1
NjQwZjViZWU5NDRjZDQ2MzVlMTkyMWU4MjVjZWQ1NWE2YTM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVt
LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM2MSwxMyArMzYxLDEzIEBAIGVudW0gY2xhc3MgVHdvTGVn
Z2VkQW5pbWFscyB7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVu
dW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVu
dW1zIGluIHRoZSAnUnVudGltZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2Nv
bDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2Nv
bDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGU8
PgotT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29u
c3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRB
bmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xl
Z2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVy
cwogCkBAIC00NDUsOCArNDQ1LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBj
b2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScgRG9tYWluCiAKLXRlbXBsYXRlPD4K
LU9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPFByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4oY29uc3QgU3RyaW5nJiBw
cm90b2NvbFN0cmluZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGlt
ZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnVudGlt
ZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVBy
b3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFsczo6UGlncywKQEAgLTQ2MSw4ICs0NjAsNyBAQCBP
cHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxQcm90b2NvbDo6UnVudAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRl
bXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1h
bHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9u
YWw8UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5n
JiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFs
dWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpUHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFu
aW1hbHM6OkR1Y2tzLApAQCAtODUwLDcgKzg0OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzKSB7CiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6
Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVu
dGltZUZhcm1BbmltYWxzIHZhbHVlKQogewpAQCAtODY3LDcgKzg2NSw3IEBAIGlubGluZSBTdHJp
bmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgdmFsdWUp
CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lRmFy
bUFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3Mi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzUGlnczsKQEAg
LTg5NSw3ICs4OTMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0
UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJEdWNrcyIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tzOwpAQCAtOTYyLDcg
Kzk2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUZhcm1B
bmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewog
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNz
XSk7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPiByZXN1bHQg
PSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFu
aW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9
IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFscz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOwogICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIkZhcm1BbmltYWxzIik7CiAgICAgKm91dFZh
bHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CkBAIC05NzAsNyArOTY4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlVHdvTGVnZ2VkQW5pbWFsczooTlNOdW1i
ZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlv
bmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0
b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFs
cz4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWQpOworICAgIGF1dG8gcmVzdWx0ID0gSW5z
cGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFu
aW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJUd29MZWdnZWRBbmltYWxzIik7CiAgICAg
Km91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBl
Lmpzb24tcmVzdWx0CmluZGV4IDZiYjlmNTIyOTg0NTcwYTk1ZWExYjNkNjdlMDIwZjMzMGRjYjNm
M2MuLmJkNDIwMjFiOTYzMjg2MmM5NzIwOTVmOWE2OGQxNjU2NzJkMTBlYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC05MzYsMTkgKzkzNiwxOSBAQCBwdWJsaWM6
CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVu
dW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAn
RGF0YWJhc2UnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNl
OjpNb3VzZUJ1dHRvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFz
ZTo6TW91c2VCdXR0b24+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6
OkRhdGFiYXNlOjpNb3VzZUJ1dHRvbj4oY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRp
b25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rp
b25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0
aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmKTsKK3N0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6
RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJh
c2U6Ok9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29uc3QgU3RyaW5n
Jik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1
bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6
RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYp
Oworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGly
ZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6
OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYpOwogCiAvLyBF
bnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6
OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4o
Y29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJC
dW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6
OlRlc3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC0xMDIzLDggKzEwMjMsNyBAQCBTdHJp
bmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdE
YXRhYmFzZScgRG9tYWluCiAKLXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFz
ZTo6TW91c2VCdXR0b24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJh
c2U6Ok1vdXNlQnV0dG9uPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8
PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNlQnV0dG9uPihjb25zdCBT
dHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3Rh
bnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQcm90b2NvbDo6RGF0YWJhc2U6Ok1vdXNl
QnV0dG9uOjpOb25lLApAQCAtMTAzOSw4ICsxMDM4LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OkRh
dGFiYXNlOjpNb3VzZUJ1dHRvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpE
YXQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQ
cm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0
eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQ
YXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3Ry
aW5nKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9u
YWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8UHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9u
YWxpdHk+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpE
YXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5OjpMVFIsCkBA
IC0xMDUzLDggKzEwNTEsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6Ok9wdGlvbmFs
UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVgogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPD4KLU9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFz
ZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4o
Y29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQ
cm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1bmRsZTo6
RGlyZWN0aW9uYWxpdHk+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KVBy
b3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eTo6TFRSLApA
QCAtMTA2OSw4ICsxMDY2LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpQYXJhbWV0
ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb20KIAogLy8gRW51bXMg
aW4gdGhlICdUZXN0JyBEb21haW4KIAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlRl
c3Q6OlBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4oY29u
c3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxQcm90
b2NvbDo6VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFs
aXR5Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClQcm90b2NvbDo6VGVz
dDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eTo6TFRSLApAQCAtMTUzOCw3ICsxNTM0
LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT3B0aW9uYWw8
T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Citz
dGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
RGF0YWJhc2VNb3VzZUJ1dHRvbiB2YWx1ZSkKIHsKQEAgLTE1NTUsNyArMTU1MSw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9u
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VNb3VzZUJ1dHRvbj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUg
PT0gIk5vbmUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRv
bk5vbmU7CkBAIC0xNTc5LDcgKzE1NzUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdAogfQog
CiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25h
bFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJMVFIiKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVj
dGlvbmFsaXR5TFRSOwpAQCAtMTU5OSw3ICsxNTk1LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxp
dHkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQ
YXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJMVFIiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eUxUUjsKQEAg
LTE2MTksNyArMTYxNSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkgdmFsCiB9CiAKIHRlbXBsYXRl
PD4KLWlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0
aW9uYWxpdHk+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFs
aXR5PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gIkxUUiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVy
QnVuZGxlRGlyZWN0aW9uYWxpdHlMVFI7CkBAIC0xNzA0LDcgKzE3MDAsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VNb3VzZUJ1dHRvbjooTlNOdW1iZXIgKiop
b3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlTW91c2VCdXR0b24+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVBy
b3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlTW91c2VCdXR0b24+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVBy
b3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlTW91c2VCdXR0b24+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilwYXlsb2FkKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZB
TFVFKHJlc3VsdCwgQCJNb3VzZUJ1dHRvbiIpOwogICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZh
bHVlKCkpOwogfQpAQCAtMTg1NSw5ICsxODUxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogICAgIHNlbGYuYnV0dG9ucyA9IHBheWxvYWRbQCJidXR0b25zIl07CiAKLSAgICBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERh
dGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKLSAgICBpZiAoZGlyZWN0aW9u
YWxpdHkpCi0gICAgICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSBkaXJlY3Rpb25hbGl0eS52YWx1
ZSgpOworICAgIGlmIChhdXRvIGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKSkKKyAgICAg
ICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9ICpkaXJlY3Rpb25hbGl0eTsKIAogICAgIHNlbGYubm90
ZXMgPSBwYXlsb2FkW0Aibm90ZXMiXTsKIApAQCAtMTk5Nyw5ICsxOTkyLDkgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKICAgICBzZWxmLmJ1dHRvbnMgPSBwYXlsb2FkW0AiYnV0dG9ucyJd
OwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Ai
ZGlyZWN0aW9uYWxpdHkiXSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAgIE9wdGlvbmFsPFRlc3RQ
cm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGRpcmVjdGlvbmFs
aXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVu
ZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0
aW9uYWxpdHkiXSk7CisgICAgYXV0byBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtAImRpcmVjdGlvbmFsaXR5Il0pOwogICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoZGlyZWN0aW9uYWxpdHksIEAiZGlyZWN0aW9u
YWxpdHkiKTsKLSAgICBzZWxmLmRpcmVjdGlvbmFsaXR5ID0gZGlyZWN0aW9uYWxpdHkudmFsdWUo
KTsKKyAgICBzZWxmLmRpcmVjdGlvbmFsaXR5ID0gKmRpcmVjdGlvbmFsaXR5OwogCiAgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Aibm90ZXMiXSwgQCJu
b3RlcyIpOwogICAgIHNlbGYubm90ZXMgPSBwYXlsb2FkW0Aibm90ZXMiXTsKQEAgLTIyODksOSAr
MjI4NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJk
aXJlY3Rpb25hbGl0eSJdLCBAImRpcmVjdGlvbmFsaXR5Iik7Ci0gICAgT3B0aW9uYWw8VGVzdFBy
b3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0eSA9
IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0
aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHki
XSk7CisgICAgYXV0byBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfRU5VTV9WQUxVRShkaXJlY3Rpb25hbGl0eSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAg
IHNlbGYuZGlyZWN0aW9uYWxpdHkgPSBkaXJlY3Rpb25hbGl0eS52YWx1ZSgpOworICAgIHNlbGYu
ZGlyZWN0aW9uYWxpdHkgPSAqZGlyZWN0aW9uYWxpdHk7CiAKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJidXR0b25zIl0sIEAiYnV0dG9ucyIpOwog
ICAgIHNlbGYuYnV0dG9ucyA9IHBheWxvYWRbQCJidXR0b25zIl07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1y
ZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1l
LWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IGU2YzU1NGFhZTcyNTc4N2MxYTc4ZGI4NjFkMTFhMjcw
N2EwNzJhNjcuLjlmZjhmNWY0NjZlNmZmZWFhYWExYTgwM2QwMGQ5YTBlYjVmOGM2MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJl
cXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC01NzgsMTMgKzU3OCwxMyBAQCBz
dGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSopOwogbmFt
ZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlw
ZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1Rlc3Qn
IERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFu
aW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6VW5j
YXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OlVu
Y2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90
b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3Rv
Y29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQ
cm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTY2Miw4ICs2NjIsNyBAQCBTdHJpbmcgZ2V0RW51bUNv
bnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4K
IAotdGVtcGxhdGU8PgotT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PFByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xT
dHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewog
ICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM6OlBpZ3MsCkBA
IC02NzgsOCArNjc3LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFs
cz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXMKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZTw+Ci1PcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6Q2Fz
dGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXN0OjpDYXN0
ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQordGVtcGxhdGU8PiBzdGQ6
Om9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJv
dG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1td
ID0gewogICAgICAgICAoc2l6ZV90KVByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzOjpEdWNr
cywKQEAgLTExOTAsNyArMTE4OCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNF
bnVtVHlwZT4KLU9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29s
U3RyaW5nKFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgdmFsdWUpCiB7CkBAIC0xMjA3
LDcgKzEyMDUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
VGVzdFVuY2FzdGVkQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIE9wdGlv
bmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVz
dFVuY2FzdGVkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlID09ICJQaWdzIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFRlc3RVbmNhc3RlZEFuaW1hbHNQaWdzOwpAQCAtMTIzNSw3ICsxMjMzLDcgQEAgaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVl
KQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiRHVja3Mi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKQEAg
LTEzMjUsNyArMTMyMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9w
YXJzZVVuY2FzdGVkQW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlk
KXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtO
U1N0cmluZyBjbGFzc10pOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFu
aW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2Nv
bFRlc3RVbmNhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2Nv
bFRlc3RVbmNhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJVbmNhc3RlZEFu
aW1hbHMiKTsKICAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KQEAgLTEzMzMs
NyArMTMzMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUNh
c3RlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2Fk
CiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcg
Y2xhc3NdKTsKLSAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gcmVz
dWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRB
bmltYWxzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZCk7CiAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiQ2FzdGVkQW5pbWFscyIpOwogICAgICpv
dXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQpAQCAtMTQwOCw5ICsxNDA2LDkgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBzZWxmLm51bWJlciA9IFtwYXlsb2FkW0AibnVt
YmVyIl0gaW50ZWdlclZhbHVlXTsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURf
UFJPUEVSVFkocGF5bG9hZFtAImFuaW1hbHMiXSwgQCJhbmltYWxzIik7Ci0gICAgT3B0aW9uYWw8
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilw
YXlsb2FkW0AiYW5pbWFscyJdKTsKKyAgICBhdXRvIGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilw
YXlsb2FkW0AiYW5pbWFscyJdKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZB
TFVFKGFuaW1hbHMsIEAiYW5pbWFscyIpOwotICAgIHNlbGYuYW5pbWFscyA9IGFuaW1hbHMudmFs
dWUoKTsKKyAgICBzZWxmLmFuaW1hbHMgPSAqYW5pbWFsczsKIAogICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImlkIl0sIEAiaWQiKTsKICAgICBzZWxm
LmlkZW50aWZpZXIgPSBbcGF5bG9hZFtAImlkIl0gaW50ZWdlclZhbHVlXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLXdpdGgtb3Blbi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZGU5NjRlNDU0NzBkZTdiYjhmYmJmMGI2ODFkOTkzZWQ0
M2FhNDFiMi4uZjc3NzZmNWIwZWZkM2FkYWViY2IyZTdmNTBiNzg2ZDI0ZDBlYjZiMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1v
cGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTg4MCw3ICs4ODAsNyBAQCBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdmVyc2lvbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CmluZGV4
IDVhZTIwZWU0OTJmYTYyMDRjMDA1MmFjZGZjMmM3MTA0ZThlMmY3YTEuLjJhNjA5NTlhMTJlNWU4
ZTg2YjEyYWVmNjEyNDAxMzM3ZjA0MGUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CkBAIC03MzAsNyArNzMwLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPYmpDRW51bVR5cGU+Ci1PcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCBlMDNjYTkyMDQ1ZDI2NWY0NzUyOTM2ZTRlZDg2Yjg0Y2NkYzAyMzc5
Li44M2ZmMjhmMjMxMTk3MDI1M2QwYjIwYmZkNmQ3N2M1ZGY5MjU5ZjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU1OSw3
ICs1NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogICAgIHsKICNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAgICBPcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gY3VycmVudENhbGxlZVNhdmVzID0gdmlzaXRvci0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVu
d2luZGluZygpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBj
dXJyZW50Q2FsbGVlU2F2ZXMgPSB2aXNpdG9yLT5jYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5k
aW5nKCk7CiAKICAgICAgICAgaWYgKCFjdXJyZW50Q2FsbGVlU2F2ZXMpCiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuY3BwCmluZGV4IDJkNDkyODZjMTdiN2Q3ZDMwYWFjNGMzMWVjMWQxNTQyN2FiZWE3OGIu
LjU3YTFiZGI2ZGJkNWIxNjA2OTFjNjU2NTBmYzBkNDVkYmU4MDllYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNTEs
NyArMjUxLDcgQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9yOjpG
cmFtZTo6Y29kZVR5cGUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKLU9wdGlv
bmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZl
UmVnaXN0ZXJzRm9yVW53aW5kaW5nKCkKK3N0ZDo6b3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExp
c3Q+IFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmco
KQogewogICAgIGlmICghTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQm
IGNvbHVtbikKICAgICBsaW5lID0gZGl2b3RMaW5lICsgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+Zmlyc3RMaW5lKCk7CiAgICAgY29sdW1uID0gZGl2b3RDb2x1bW4gKyAoZGl2b3RMaW5l
ID8gMSA6IGNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCkpOwogCi0gICAgaWYgKE9w
dGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+b3ZlcnJpZGVMaW5lTnVtYmVyKGNvZGVCbG9jay0+dm0oKSkpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5vdmVycmlkZUxpbmVOdW1iZXIoY29kZUJsb2NrLT52bSgpKSkKICAgICAgICAgbGlu
ZSA9IG92ZXJyaWRlTGluZU51bWJlci52YWx1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKaW5kZXggZTBkOTkxY2ViZjFlN2Fj
MTBlZDcxOWMxNTM3ZDgwNzAxMjcyZDdlNy4uMGJiOWFmNTgxNWE1MTA2M2EwM2IzMjAwMDQxMzYx
ODg0Y2U2ZGYyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2ln
bmVkJiBjb2x1bW4pIGNvbnN0OwogCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKLSAgICAgICAgT3B0
aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRp
bmcoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gY2FsbGVl
U2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZygpOwogI2VuZGlmCiAKICAgICAgICAgQ2xvbmVkQXJn
dW1lbnRzKiBjcmVhdGVBcmd1bWVudHMoVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGQyNTYyMzE3MGFkYTFkMDI5ZmRkOGU3MDBhNWVlY2U5
MjE1Njg1ZjAuLjYwNmQwZDFhZjIxNDM4MjVjYTAyNmZiMDMwYTI0OWM3NjVjM2I5ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNTY0LDcgKzU2
NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBkZXN0ID0gYmFzZSArIGluZGV4IDw8IHNo
aWZ0LgotICAgIHZvaWQgc2hpZnRBbmRBZGQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCB1aW50OF90IHNoaWZ0LCBSZWdpc3RlcklEIGRlc3QsIE9wdGlvbmFsPFJlZ2lzdGVySUQ+
IG9wdGlvbmFsU2NyYXRjaCA9IHsgfSkKKyAgICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgdWludDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0LCBz
dGQ6Om9wdGlvbmFsPFJlZ2lzdGVySUQ+IG9wdGlvbmFsU2NyYXRjaCA9IHsgfSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChzaGlmdCA8IDMyKTsKICAgICAgICAgaWYgKHNoaWZ0IDw9IDMpIHsKQEAg
LTYzNyw3ICs2MzcsNyBAQCBwdWJsaWM6CiAKICNpZiBDUFUoQVJNNjQpCiAgICAgLy8gZGVzdCA9
IGJhc2UgKyBpbmRleCA8PCBzaGlmdC4KLSAgICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgdWludDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0LCBP
cHRpb25hbDxSZWdpc3RlcklEPiA9IHsgfSkKKyAgICB2b2lkIHNoaWZ0QW5kQWRkKFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgdWludDhfdCBzaGlmdCwgUmVnaXN0ZXJJRCBkZXN0
LCBzdGQ6Om9wdGlvbmFsPFJlZ2lzdGVySUQ+ID0geyB9KQogICAgIHsKICAgICAgICAgQVNTRVJU
KHNoaWZ0IDwgMzIpOwogICAgICAgICBBU1NFUlQoYmFzZSAhPSBpbmRleCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCAwYmZh
Y2M3NjMwYmJkYzZjODU0MWJhNjUwMjk3OGFkMGY0ZjhjNDA2Li5mOWE3NTU0MjZiY2Q5Zjc2ODBh
M2IyNzNlM2U0MjA2MWI0NTIxNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKQEAgLTc4NCw3ICs3ODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHNpemVf
dD4gaXNsYW5kQml0KHVpbnRwdHJfdCBpc2xhbmQpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpc2xhbmRCaXQodWludHB0cl90IGlzbGFuZCkKICAgICAgICAgewogICAgICAgICAgICAg
dWludHB0cl90IGVuZCA9IHRoaXMtPmVuZCgpOwogICAgICAgICAgICAgaWYgKGlzbGFuZEJlZ2lu
KCkgPD0gaXNsYW5kICYmIGlzbGFuZCA8IGVuZCkKQEAgLTgwNCw3ICs4MDQsNyBAQCBwcml2YXRl
OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoQmFzZTo6aXNJbkFsbG9jYXRlZE1lbW9yeShs
b2NrZXIsIGFkZHJlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgaWYgKE9wdGlvbmFsPHNpemVfdD4gYml0ID0gaXNsYW5kQml0KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGFkZHJlc3MpKSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBiaXQgPSBpc2xhbmRCaXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcykpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGJpdC52YWx1ZSgpIDwgaXNsYW5kQml0cy5zaXplKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAhIWlzbGFuZEJpdHNbYml0LnZhbHVlKCldOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGI3Mzk1OGJjMjVhZWE5MTQ0
Mjc0ZmU0MWFlYWQyNThmNTU2YzNhZTkuLmVlMWE0ZTM3ZmZjMjc3ZGNkOTZkNGIwMjJiNzcyN2M1
YmJmNzQyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAKLSAgICAgICAgT3B0
aW9uYWw8SklUU2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxKSVRTaXplU3RhdGlzdGljczo6TWFya2VyPiBzaXplTWFya2VyOwogICAgICAg
ICBpZiAoVU5MSUtFTFkobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCAmJiBP
cHRpb25zOjpkdW1wQmFzZWxpbmVKSVRTaXplU3RhdGlzdGljcygpKSkgewogICAgICAgICAgICAg
U3RyaW5nIGlkID0gbWFrZVN0cmluZygiQmFzZWxpbmVfZmFzdF8iLCBvcGNvZGVOYW1lc1tvcGNv
ZGVJRF0pOwogICAgICAgICAgICAgc2l6ZU1hcmtlciA9IG1fdm0tPmppdFNpemVTdGF0aXN0aWNz
LT5tYXJrU3RhcnQoaWQsICp0aGlzKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3Vy
cmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogCi0gICAgICAgIE9wdGlvbmFsPEpJVFNpemVT
dGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SklU
U2l6ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKICAgICAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7CiAgICAgICAgICAg
ICBTdHJpbmcgaWQgPSBtYWtlU3RyaW5nKCJCYXNlbGluZV9zbG93XyIsIG9wY29kZU5hbWVzW29w
Y29kZUlEXSk7CiAgICAgICAgICAgICBzaXplTWFya2VyID0gbV92bS0+aml0U2l6ZVN0YXRpc3Rp
Y3MtPm1hcmtTdGFydChpZCwgKnRoaXMpOwpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSklUOjpj
b21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICAKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
KCksIENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogCi0gICAgT3B0aW9uYWw8SklUU2l6
ZVN0YXRpc3RpY3M6Ok1hcmtlcj4gc2l6ZU1hcmtlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEpJVFNp
emVTdGF0aXN0aWNzOjpNYXJrZXI+IHNpemVNYXJrZXI7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmR1bXBCYXNlbGluZUpJVFNpemVTdGF0aXN0aWNzKCkpKSB7CiAgICAgICAgIFN0cmluZyBp
ZCA9IG1ha2VTdHJpbmcoIkJhc2VsaW5lX3Byb2xvZ3VlIik7CiAgICAgICAgIHNpemVNYXJrZXIg
PSBtX3ZtLT5qaXRTaXplU3RhdGlzdGljcy0+bWFya1N0YXJ0KGlkLCAqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDg1NTdkMGVlNWQ4YWQ4YjE0NDJkODMwZTRkNjc3
MWZmMGNhOGIzNzEuLjRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2aXJ0dWFsIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3Rl
cnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jayosIENhbGxT
aXRlSW5kZXgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVC
bG9jayosIHZvaWQqIHBjKSB7IFVOVVNFRF9QQVJBTShwYyk7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9j
ayosIHZvaWQqIHBjKSB7IFVOVVNFRF9QQVJBTShwYyk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICNlbmRpZgogCiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIHsgcmV0dXJuIG1faW50cmluc2lj
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5k
ZXggYmU2ZDRkNDBjNDExNzg4MzEwNjEwNDhiN2I1MWI5NGZhZDU2NGJhOS4uMTI5ZjA2NWFjMzU0
YzhjZDlmYzE0MmUyYmFkNjdjMTUyN2ZiNDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEpJVERpdkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBsb2FkT3Bl
cmFuZChqaXQsIG1fbGVmdE9wZXJhbmQsIG1fbGVmdCwgbV9sZWZ0RlBSKTsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWw7CiAgICAgaWYgKG1fcmlnaHRPcGVyYW5k
LmlzQ29uc3QoKSkgewogICAgICAgICBkb3VibGUgY29uc3RhbnQgPSBtX3JpZ2h0T3BlcmFuZC5h
c0NvbnN0TnVtYmVyKCk7CiAgICAgICAgIHNhZmVSZWNpcHJvY2FsID0gc2FmZVJlY2lwcm9jYWxG
b3JEaXZCeUNvbnN0KGNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDIxYWYzNjUzMDlkMjc5MzM3MWRlNmViNDAwYjQ0NjhhYTgzNzBi
MjUuLjA2MDNmOTNhOWFmZjIxZDlkZDRiMWJiNDk3OTljOWMyYTNhY2ZjNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtODIwLDcgKzgyMCw3IEBA
IHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgo
KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50
cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOwogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4OwogICAgICAgICBpZiAoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpIHsKQEAgLTg2Myw3ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQ
dXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZU9iamVj
dCwgSgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IG1h
eWJlSW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heWJlSW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50
MzJJbmRleCgpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAg
ICAgICAgdWludDMyX3QgaW5kZXggPSAqbWF5YmVJbmRleDsKIApAQCAtODg5LDcgKzg4OSw3IEBA
IHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21h
TW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwpAQCAtMTk3OCw3ICsxOTc4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSogdm1Q
b2ludGVyLAogICAgICAgICBpZiAoYnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgIG51bVZhcnNX
aXRoVmFsdWVzID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKIAotICAgICAgICBPcGVy
YW5kczxPcHRpb25hbDxKU1ZhbHVlPj4gbXVzdEhhbmRsZVZhbHVlcyhjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSwgbnVtVmFyc1dpdGhWYWx1ZXMsIDApOworICAgICAgICBPcGVyYW5kczxzdGQ6
Om9wdGlvbmFsPEpTVmFsdWU+PiBtdXN0SGFuZGxlVmFsdWVzKGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpLCBudW1WYXJzV2l0aFZhbHVlcywgMCk7CiAgICAgICAgIGludCBsb2NhbHNVc2VkRm9y
Q2FsbGVlU2F2ZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBP
cGVyYW5kIG9wZXJhbmQgPSBtdXN0SGFuZGxlVmFsdWVzLm9wZXJhbmRGb3JJbmRleChpKTsKQEAg
LTIyMzcsNyArMjIzNyw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0
QXNJbnQzMigpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNJbnQzMigpKSB7CiAgICAgICAgIGludDMyX3QgaSA9ICppbmRleDsKICAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGkgPj0g
MCAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKQEAgLTIzNDksNyArMjM0
OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUu
aXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsK
IAotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0
QXNVaW50MzJJbmRleCgpKQorICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQzMkluZGV4KCkpCiAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFsV2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwg
KmluZGV4KSk7CiAKICAgICAgICAgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKaW5kZXggMGIzN2E0
MTk1OTdkMzM1NjMyNmZhNjQ1ZjllYzI3NjQyNTdlNTI1ZC4uYWY1ZmFmYWE1OGY2NzNkNTNhNzU3
N2QxZjA5N2JmMDkwMGNlZjI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBkb3VibGUgUENUb0NvZGVP
cmlnaW5NYXA6Om1lbW9yeVNpemUoKQogICAgIHJldHVybiBzaXplOwogfQogCi1PcHRpb25hbDxD
b2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBj
KSBjb25zdAogewogICAgIHVpbnRwdHJfdCBwY0FzSW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4ocGMpOwogICAgIGlmICghKG1fcGNSYW5nZVN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8
PSBtX3BjUmFuZ2VFbmQpKQpAQCAtMjk1LDcgKzI5NSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+
IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CiAgICAgICAgICAgICAv
LyBXZSBzdWJ0cmFjdCAxIGJlY2F1c2Ugd2UgZ2VuZXJhdGUgZW5kIHBvaW50cyBpbmNsdXNpdmVs
eSBpbiB0aGlzIHRhYmxlLCBldmVuIHRob3VnaCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiByYW5nZXMg
b2YgdGhlIGZvcm06IFtwcmV2aW91c1BDLCBjdXJyZW50UEMpCiAgICAgICAgICAgICB1aW50cHRy
X3QgZW5kT2ZSYW5nZSA9IGN1cnJlbnRQQyAtIDE7CiAgICAgICAgICAgICBpZiAoc3RhcnRPZlJh
bmdlIDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBlbmRPZlJhbmdlKQotICAgICAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihwcmV2aW91c09yaWdpbik7IC8vIFdlIHJldHVy
biBwcmV2aW91c09yaWdpbiBoZXJlIGJlY2F1c2UgQ29kZU9yaWdpbidzIGFyZSBtYXBwZWQgdG8g
dGhlIHN0YXJ0VmFsdWUgb2YgdGhlIHJhbmdlLgorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPENvZGVPcmlnaW4+KHByZXZpb3VzT3JpZ2luKTsgLy8gV2UgcmV0dXJuIHByZXZp
b3VzT3JpZ2luIGhlcmUgYmVjYXVzZSBDb2RlT3JpZ2luJ3MgYXJlIG1hcHBlZCB0byB0aGUgc3Rh
cnRWYWx1ZSBvZiB0aGUgcmFuZ2UuCiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaAppbmRleCBiMGQ1NjFmYzU2ZDVmMDgx
MGM4YzBlY2ZhZmY3MjJkMmQzYjMzZjI1Li4zMzVjZDg5N2E0MjdkNTg5MDY4Nzc1MDgzMDAyYWUy
YzQ5OTg1NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2Rl
T3JpZ2luTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdp
bk1hcC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBQQ1RvQ29kZU9yaWdpbk1hcChQ
Q1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImJiwgTGlua0J1ZmZlciYpOwogICAgIH5QQ1RvQ29kZU9y
aWdpbk1hcCgpOwogCi0gICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYykgY29u
c3Q7CiAKICAgICBkb3VibGUgbWVtb3J5U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2YTgwOGU1Zjg2NDc4NzFhNDQxYjI5
Li45MDVmOGQ3ZjJhZmJmNWIwMDYxZWYzZDc1ZjdmNjY2ZWJkMWRjYTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQogICAg
ICAgICAgICAgICAgIGdldHRlciA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBzbG90
LmdldHRlclNldHRlcigpLT5nZXR0ZXIoKSk7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPERPTUF0
dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlOwogICAgICAgICAgICAgaWYg
KHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSAmJiBzbG90LmRvbUF0dHJpYnV0ZSgpKQogICAgICAg
ICAgICAgICAgIGRvbUF0dHJpYnV0ZSA9IHNsb3QuZG9tQXR0cmlidXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGU0NDA1NTc0
NjJlMDQ2YTJiNTA4NzBjNWYzZTk1NmYyMmQzM2RkYzMuLmZiMGRkZjYxZjQ1MzQ2MDdhMzI2MDMw
NjNiMjA5MmNmM2IxYzM3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGUKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4
KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgICAgICBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTExNTgsNyArMTE1
OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpT
VmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAg
ICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAg
ICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRB
c1VpbnQzMkluZGV4KCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkg
PSAqaW5kZXg7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CkBAIC0xMTkwLDcgKzEx
OTAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3Qp
CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9k
ZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKLSAgICBpZiAoT3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgIGlm
IChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQz
MkluZGV4KCkpIHsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3Vs
ZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VO
RCgpOwogICAgIH0KQEAgLTEyMDAsNyArMTIwMCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5l
eGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQorICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVl
LCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0
SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCmluZGV4IDY3MzAzOTQyNjNmMzJmMWI1MzU0YzIwZDU0ZGUyNDMwNDcyOTli
YmYuLjE5YzgxNWY4NWIzOTRhNzIwOWJiYTU2MzdjYmQ2NDBlZGY3ZWNhZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xNTI4LDcgKzE1MjgsNyBAQCB0eXBlbmFt
ZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRl
cmFsKEpTVG9rZW5EYXRhKgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4KK0FMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBzdGQ6Om9wdGlv
bmFsPE51bWJlclBhcnNlUmVzdWx0PgogewogICAgIEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQobV9j
dXJyZW50KSk7CiAKQEAgLTE1ODIsNyArMTU4Miw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhl
cjxUPjo6cGFyc2VIZXgoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmlu
YXJ5KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CitBTFdBWVNfSU5MSU5FIGF1dG8g
TGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gc3RkOjpvcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4KIHsKICAgICBBU1NFUlQoaXNBU0NJSUJpbmFyeURpZ2l0KG1fY3VycmVudCkpOwogCkBAIC0x
NjM2LDcgKzE2MzYsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5
KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9u
YWw8TnVtYmVyUGFyc2VSZXN1bHQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNl
T2N0YWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogewogICAgIEFTU0VS
VChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKTsKICAgICBBU1NFUlQoIW1fYnVmZmVyOC5z
aXplKCkgfHwgKG1fYnVmZmVyOC5zaXplKCkgPT0gMSAmJiBtX2J1ZmZlcjhbMF0gPT0gJzAnKSk7
CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNl
T2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlRGVjaW1hbCgpIC0+
IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgorQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+
OjpwYXJzZURlY2ltYWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0Pgogewog
ICAgIEFTU0VSVChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSB8fCBtX2J1ZmZlcjguc2l6ZSgpKTsK
ICAgICBib29sIGlzTGVnYWN5TGl0ZXJhbCA9IG1fYnVmZmVyOC5zaXplKCkgJiYgaXNBU0NJSURp
Z2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAppbmRleCAxNjc0OGRkOTMwZTRiMWYyZGJhNzU2Zjg3OWVmNzM3NDVkMTY4YmNiLi45ZDM1Zjdi
MjQzZTc4Y2NiYzBjMTM3ZDE1MWUyODEyZjE5ODQwZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCkBAIC0xODEsMTAgKzE4MSwxMCBAQCBwcml2YXRlOgogICAgIEFMV0FZU19J
TkxJTkUgU3RyaW5nUGFyc2VSZXN1bHQgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEq
LCBSYXdTdHJpbmdzQnVpbGRNb2RlKTsKICAgICAKICAgICB1c2luZyBOdW1iZXJQYXJzZVJlc3Vs
dCA9IFZhcmlhbnQ8ZG91YmxlLCBjb25zdCBJZGVudGlmaWVyKj47Ci0gICAgQUxXQVlTX0lOTElO
RSBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4gcGFyc2VIZXgoKTsKLSAgICBBTFdBWVNfSU5M
SU5FIE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJzZUJpbmFyeSgpOwotICAgIEFMV0FZ
U19JTkxJTkUgT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+IHBhcnNlT2N0YWwoKTsKLSAgICBB
TFdBWVNfSU5MSU5FIE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PiBwYXJzZURlY2ltYWwoKTsK
KyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+IHBhcnNl
SGV4KCk7CisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0
PiBwYXJzZUJpbmFyeSgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxOdW1iZXJQ
YXJzZVJlc3VsdD4gcGFyc2VPY3RhbCgpOworICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25h
bDxOdW1iZXJQYXJzZVJlc3VsdD4gcGFyc2VEZWNpbWFsKCk7CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKTsKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCk7CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBkMDA4MDNkOWNmOWMzOTY0NWY5NmNj
ZDdiODg4ZDI5MzQxY2M1NGVhLi45ZTAyNDIxOGRhYjhlZjRjNzY3NTRiNTk5OGU5MTc4NDg5YmRl
ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5
emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJs
ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUsIGNvbnN0CiAgICAgLy8gSW5k
aXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgogICAgIC8vIGltcG9ydCBhIGZyb20gIm1vZCIKICAg
ICAvLyBleHBvcnQgeyBhIH0KLSAgICBPcHRpb25hbDxKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50
cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+dHJ5R2V0SW1wb3J0RW50
cnkobG9jYWxOYW1lLmdldCgpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpJ
bXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT50cnlHZXRJ
bXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOwogICAgIEFTU0VSVChvcHRpb25hbEltcG9ydEVu
dHJ5KTsKICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkmIGltcG9ydEVudHJ5
ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAgICAgZm9yIChhdXRvJiBleHBvcnROYW1lIDogbW9k
dWxlUHJvZ3JhbU5vZGUubW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0ZWRCaW5kaW5ncygpLmdldChs
b2NhbE5hbWUuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IDg3NTYwMGEwNzRmZDM3YjAwNzMxYWNjNjU3MDZhNjc4MWI5MjE2MTQuLjdjZGYxYzkwNzNm
MGQ1ZTk4ZWU2NTBiZWQ4ZWM0Mzg1ZDdiMDMwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEpTVG9rZW46OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LUV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBT
dHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IEZpeGVkVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpCitFeHBlY3RlZDx0eXBlbmFtZSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29u
dGV4dCBwYXJzaW5nQ29udGV4dCwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogY2xhc3NGaWVsZExvY2F0aW9ucywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFy
ZW50U2NvcGVQcml2YXRlTmFtZXMpCiB7CiAgICAgQVNUQnVpbGRlciBjb250ZXh0KGNvbnN0X2Nh
c3Q8Vk0mPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgY29uc3RfY2FzdDxTb3VyY2VDb2RlKj4obV9z
b3VyY2UpKTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gc291cmNlUGFyc2VNb2Rl
KCk7CkBAIC02NDksNyArNjQ5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNHZW4KIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNpbmdsZUZ1bmN0aW9u
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24pCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTaW5nbGVGdW5jdGlvbihUcmVl
QnVpbGRlciYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24pCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVs
ZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwogICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gMDsKQEAgLTIzNjksNyArMjM2OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMgcmVxdWlyZW1l
bnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24pCiB7CiAgICAgYXV0byBtb2RlID0gc291cmNlUGFyc2VNb2RlKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CkBAIC0yNzE0LDcgKzI3MTQsNyBA
QCBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZ2V0
TWV0YWRhdGEoUGFyc2VyRnVuY3Rpb25Jbgogc3RhdGljIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBn
ZXRNZXRhZGF0YShQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8pIHsgcmV0dXJu
IGluZm8uYm9keTsgfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uRGVjbGFy
YXRpb25UeXBlIGRlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlwZSBleHBvcnRUeXBlLCBEZWNsYXJh
dGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvbkRlY2xhcmF0
aW9uVHlwZSBkZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUgZXhwb3J0VHlwZSwgRGVjbGFyYXRp
b25EZWZhdWx0Q29udGV4dCBkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0LCBzdGQ6Om9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKIHsKICAgICBB
U1NFUlQobWF0Y2goRlVOQ1RJT04pKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKQEAgLTI3NzYsNyArMjc3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRl
Y2xhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNG
dW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9y
dFR5cGUsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4
dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4
dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xh
cmF0aW9uRGVmYXVsdENvbnRleHQsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikp
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpAQCAtNDM5
Myw3ICs0MzkzLDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkg
Ly8gQ292ZXJJbml0aWFsaXplZE5hbWUgaXMgZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFu
ZCBBc3NpZ25tZW50UGF0dGVybgogICAgICAgICAgICAgY2xhc3NpZnlFeHByZXNzaW9uRXJyb3Io
RXJyb3JJbmRpY2F0ZXNQYXR0ZXJuKTsKIAotICAgICAgICBPcHRpb25hbDxQcm9wZXJ0eU5vZGU6
OlR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVydHlOb2RlOjpUeXBlPiB0
eXBlOwogICAgICAgICBpZiAod2FzVW5lc2NhcGVkSWRlbnQpIHsKICAgICAgICAgICAgIGlmICgq
aWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5nZXQpCiAgICAgICAgICAgICAgICAgdHlwZSA9
IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwpAQCAtNTAzMyw3ICs1MDMzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VB
cmd1bWVudChUcmUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyLCB0eXBlbmFt
ZSBQYXJzZXJUeXBlLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxUcmVlQnVpbGRlciwgQVNUQnVpbGRlcj46OnZhbHVlPjo6dHlwZT4KLXN0YXRpYyBpbmxp
bmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqIHBhcnNlciwgVk0mIHZt
LCBPcHRpb25hbDx0eXBlbmFtZSBQYXJzZXJUeXBlOjpDYWxsT3JBcHBseURlcHRoU2NvcGU+JiBj
YWxsT3JBcHBseURlcHRoU2NvcGUsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uKQorc3RhdGlj
IGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSogcGFyc2VyLCBW
TSYgdm0sIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgUGFyc2VyVHlwZTo6Q2FsbE9yQXBwbHlEZXB0
aFNjb3BlPiYgY2FsbE9yQXBwbHlEZXB0aFNjb3BlLCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lv
bikKIHsKICAgICBpZiAoZXhwcmVzc2lvbi0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewogICAgICAg
ICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4
cHJlc3Npb24pOwpAQCAtNTA0NCw3ICs1MDQ0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29y
ZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSogcGFyc2VyLCBWTSYgdm0sIE9wdGlvbmFsPHQK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyLCB0eXBlbmFtZSBQYXJzZXJUeXBl
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxUcmVlQnVp
bGRlciwgU3ludGF4Q2hlY2tlcj46OnZhbHVlPjo6dHlwZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCBy
ZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBWTSYsIE9wdGlvbmFsPHR5cGVuYW1l
IFBhcnNlclR5cGU6OkNhbGxPckFwcGx5RGVwdGhTY29wZT4mLCBTeW50YXhDaGVja2VyOjpFeHBy
ZXNzaW9uKQorc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2Vy
VHlwZSosIFZNJiwgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBQYXJzZXJUeXBlOjpDYWxsT3JBcHBs
eURlcHRoU2NvcGU+JiwgU3ludGF4Q2hlY2tlcjo6RXhwcmVzc2lvbikKIHsKIH0KIApAQCAtNTIy
MSw3ICs1MjIxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzaXplX3QgdXNlZFZhcmlhYmxlc1NpemUgPSBj
dXJyZW50U2NvcGUoKS0+Y3VycmVudFVzZWRWYXJpYWJsZXNTaXplKCk7CiAgICAgICAgICAgICAg
ICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDxDYWxsT3JBcHBseURlcHRoU2NvcGU+
IGNhbGxPckFwcGx5RGVwdGhTY29wZTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxDYWxsT3JBcHBseURlcHRoU2NvcGU+IGNhbGxPckFwcGx5RGVwdGhTY29wZTsKICAgICAgICAg
ICAgICAgICAgICAgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0aDxUcmVlQnVpbGRlcj4odGhpcywgbV92
bSwgY2FsbE9yQXBwbHlEZXB0aFNjb3BlLCBiYXNlKTsKIAogICAgICAgICAgICAgICAgICAgICBU
cmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggM2Y1ZDNjOWE1NjMxMzA0MmEwZjczNzU1
NWY1Y2Y5YzJiYWQ3Yjg1My4uOTZhZmI0YWE0YTFjZDY2ZDQ3MjZhNWE0YTcyZWRkNmM0YzJiNmI0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC05OTIsNyArOTkyLDcg
QEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWRO
b2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYs
IGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlv
bkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0LCBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIHN0
ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
ID0gc3RkOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIs
IGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKIAogICAgIEpT
VGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBt
X2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0
VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8U2NvcGVSZWY+IGZpbmRQcml2YXRlTmFtZVNjb3BlKCkKKyAgICBzdGQ6Om9wdGlvbmFsPFNj
b3BlUmVmPiBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9z
Y29wZVN0YWNrLnNpemUoKSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6
ZSgpIC0gMTsKQEAgLTE1MTIsNyArMTUxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0
dXJlcyBmZWF0dXJlczsKICAgICAgICAgaW50IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4
cGVjdGVkPFBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlm
aWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+Kiwg
Y29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwor
ICAgIEV4cGVjdGVkPFBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJ
ZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZh
dGVOYW1lcyk7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJl
cG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25NZXRhZGF0YU5vZGUoU2NvcGVOb2RlKikgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTE3NDIsMTYgKzE3NDIsMTYgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZUFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRl
ciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9k
ZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
cGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVpbGRlciYsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVp
bGRlciYsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
VHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGly
ZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmll
ciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBudWxscHRy
KTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VDbGFz
c0RlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4
cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29u
dGV4dDo6U3RhbmRhcmQpOwogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUg
eyBEZWNsYXJhdGlvbiwgU3RhdGVtZW50IH07Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlID0gRnVuY3Rpb25EZWNsYXJhdGlvblR5cGU6OkRlY2xh
cmF0aW9uLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9u
RGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3Rk
OjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJh
dGlvblR5cGUgPSBGdW5jdGlvbkRlY2xhcmF0aW9uVHlwZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5
cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9
IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkLCBzdGQ6Om9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVu
Y3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChUcmVlQnVpbGRlciYsIGJvb2wgcGFyZW50QWxsb3dz
RnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJl
ZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0
aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0g
c3RkOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRU
eXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQg
PSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgc3RkOjpvcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVZh
cmlhYmxlRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5
cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRG9XaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVdo
aWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CkBAIC0xODIxLDcgKzE4MjEsNyBAQCBwcml2YXRl
OgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhw
cmVzc2lvbiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoVHJlZUJ1aWxkZXImLCBjb25zdCBJ
ZGVudGlmaWVyKiwgYm9vbCBpc0V2YWwsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJik7CiAKICAgICBlbnVtIGNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUg
eyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwgTWV0aG9kIH07Ci0gICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVp
bGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdT
Y29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9u
TmFtZVJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVu
Y3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIHN0ZDo6b3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3Rk
OjpudWxsb3B0KTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAg
ICAgCkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwg
Y29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRl
eHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMs
IGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykK
K3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFy
c2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29u
dGV4dCBwYXJzaW5nQ29udGV4dCwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVy
ck1zZzsKQEAgLTIyNzEsNyArMjI3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFBy
b2dyYW1Ob2RlPiBwYXJzZUZ1bmN0aW9uRm9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlv
biogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxQcm9n
cmFtTm9kZT4gcGFyc2VGdW5jdGlvbkZvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24q
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIEFTU0VSVCghc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGVLZXkuaAppbmRleCA0YjNiM2JlMzAzZWJlYWRjODY0MDA5N2M3Zjg4
NTdlMTdhNGVkYmRlLi4wMGQzYWY5NGQzMWMzMmFhNzE1MGRjZjIzN2I0MGE0OGI0MGM2OWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgU291cmNlQ29kZUtleSgKICAgICAgICAgY29uc3QgVW5s
aW5rZWRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNvdXJjZUNv
ZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgCiAgICAgICAg
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsCi0gICAgICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uKQorICAgICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291
cmNlQ29kZSkKICAgICAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fZmxh
Z3MoY29kZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwg
ZXZhbENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb2RlR2VuZXJhdGlvbk1v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAKaW5kZXggN2JmNWMzZTAxYmNjMDAxNjZmNzA0MTVmODMzY2QxNzJkZjVk
NTZmYy4uMWFkNDAzZmIwZjVhNjNhNjk1NTJiZWU2ZjJlZmQxOGE0YWFkNjNiZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmNwcApAQCAtMTAzLDIwICsxMDMsMjAgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6YWRk
RXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQogICAgIEFTU0VSVF9VTlVTRUQo
aXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFy
c2VyLgogfQogCi1hdXRvIEFic3RyYWN0TW9kdWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShV
bmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKSAtPiBPcHRpb25hbDxJbXBvcnRFbnRyeT4KK2F1
dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJ
bXBsKiBsb2NhbE5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8SW1wb3J0RW50cnk+CiB7CiAgICAgY29u
c3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CiAgICAg
aWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52
YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52
YWx1ZSk7CiB9CiAKLWF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5
KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25hbDxFeHBvcnRFbnRyeT4K
K2F1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJp
bmdJbXBsKiBleHBvcnROYW1lKSAtPiBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PgogewogICAg
IGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lKTsK
ICAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRyaWVzLmVuZCgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0
b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0
b3ItPnZhbHVlKTsKIH0KIAogYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSkgLT4gRXhwb3J0RW50cnkKQEAgLTE2NCw3ICsxNjQsNyBAQCBhdXRvIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IElkZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBPcHRpb25hbDxJbXBv
cnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFt
ZS5pbXBsKCkpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0
RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKICAgICBpZiAoIW9w
dGlvbmFsSW1wb3J0RW50cnkpCiAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgp
OwogCkBAIC0yNDMsMTIgKzI0MywxMiBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6UmVzb2x2ZVF1ZXJ5OjpIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmCiAgICAgcmV0
dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFt
ZSA9PSByaHMuZXhwb3J0TmFtZTsKIH0KIAotYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5
R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0
aW9uYWw8UmVzb2x1dGlvbj4KK2F1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldENhY2hl
ZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IHN0ZDo6b3B0aW9u
YWw8UmVzb2x1dGlvbj4KIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvbHV0aW9u
Q2FjaGUuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvbHV0aW9u
Q2FjaGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIE9w
dGlvbmFsPFJlc29sdXRpb24+KGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8UmVzb2x1dGlvbj4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAogdm9pZCBBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6Y2FjaGVSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1l
LCBjb25zdCBSZXNvbHV0aW9uJiByZXNvbHV0aW9uKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgYXV0
byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydEltcGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QKIAogICAgICAgICAgICAgLy8gIDQuIE9uY2Ugd2UgZm9sbG93
IHN0YXIgbGlua3MsIHdlIHNob3VsZCBub3QgcmV0cmlldmUgdGhlIHJlc3VsdCBmcm9tIHRoZSBj
YWNoZSBhbmQgc2hvdWxkIG5vdCBjYWNoZSB0aGUgcmVzdWx0LgogICAgICAgICAgICAgaWYgKCFm
b3VuZFN0YXJMaW5rcykgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxSZXNvbHV0aW9u
PiBjYWNoZWRSZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT50cnlHZXRDYWNoZWRSZXNvbHV0aW9u
KHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0
Q2FjaGVkUmVzb2x1dGlvbihxdWVyeS5leHBvcnROYW1lLmdldCgpKSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKCpjYWNoZWRSZXNvbHV0aW9uKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBjb25zdCBPcHRpb25hbDxFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBv
cnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFt
ZS5nZXQoKSk7CisgICAgICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PiBv
cHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRyeShxdWVy
eS5leHBvcnROYW1lLmdldCgpKTsKICAgICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBvcnRFbnRy
eSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0ZWQg
YmluZGluZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCiAgICAgICAgICAgICAgICAgLy8gd2UgbmVl
ZCB0byBsb29rIGludG8gdGhlIHN0YXJzLgpAQCAtNzEyLDcgKzcxMiw3IEBAIGF1dG8gQWJzdHJh
Y3RNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnRJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0CiBhdXRvIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUp
IC0+IFJlc29sdXRpb24KIHsKICAgICAvLyBMb29rIHVwIHRoZSBjYWNoZWQgcmVzb2x1dGlvbiBm
aXJzdCBiZWZvcmUgZW50ZXJpbmcgdGhlIHJlc29sdmluZyBsb29wLCBzaW5jZSB0aGUgbG9vcCBz
ZXR1cCB0YWtlcyBzb21lIGNvc3QuCi0gICAgaWYgKE9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hl
ZFJlc29sdXRpb24gPSB0cnlHZXRDYWNoZWRSZXNvbHV0aW9uKGV4cG9ydE5hbWUuaW1wbCgpKSkK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gdHJ5
R2V0Q2FjaGVkUmVzb2x1dGlvbihleHBvcnROYW1lLmltcGwoKSkpCiAgICAgICAgIHJldHVybiAq
Y2FjaGVkUmVzb2x1dGlvbjsKICAgICByZXR1cm4gcmVzb2x2ZUV4cG9ydEltcGwoZ2xvYmFsT2Jq
ZWN0LCBSZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmlu
ZGV4IDhkZDk3ZTNhM2U4MTYxYjljZjNmZGI3NTg4ZjE5NWQyYjg4ZjA0MDEuLmE4ZTlhNGZkNzlm
NDI4Yzc3YjFjNThhZTdmZjM4MDBiMjYzZjllZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaApAQCAtMTA3LDggKzEwNyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7
CiAgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCi0gICAgT3B0
aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBs
b2NhbE5hbWUpOwotICAgIE9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShV
bmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxJbXBvcnRF
bnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4gdHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0
cmluZ0ltcGwqIGV4cG9ydE5hbWUpOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5
KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRp
ZmllclNldCYgcmVxdWVzdGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9k
dWxlczsgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3Ry
dWN0IFJlc29sdmVRdWVyeTsKICAgICBzdGF0aWMgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0SW1w
bChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFJlc29sdmVRdWVyeSYpOwotICAgIE9wdGlvbmFsPFJl
c29sdXRpb24+IHRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9y
dE5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1
dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAgICAgdm9pZCBjYWNoZVJlc29s
dXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUsIGNvbnN0IFJlc29sdXRpb24mKTsK
IAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRo
ZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJl
c2VudCB0aGlzIG1vZHVsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcAppbmRleCBjYjFmOWZmMDdhM2YyNzZiNDQ5YmM4M2E5ODAwZTJhN2EzYThjMDFi
Li4xMmQzN2QyZmY2OWM5MGI1MjcxMmNiZjBjOGViMWIyMDZkOTkyMWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xNDAsNyArMTQwLDcg
QEAgcHVibGljOgogICAgICAgICBtX3B0clRvT2Zmc2V0TWFwLmFkZChwdHIsIG9mZnNldCk7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8cHRyZGlmZl90PiBjYWNoZWRPZmZzZXRGb3JQdHIoY29uc3Qg
dm9pZCogcHRyKQorICAgIHN0ZDo6b3B0aW9uYWw8cHRyZGlmZl90PiBjYWNoZWRPZmZzZXRGb3JQ
dHIoY29uc3Qgdm9pZCogcHRyKQogICAgIHsKICAgICAgICAgYXV0byBpdCA9IG1fcHRyVG9PZmZz
ZXRNYXAuZmluZChwdHIpOwogICAgICAgICBpZiAoaXQgPT0gbV9wdHJUb09mZnNldE1hcC5lbmQo
KSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghc3JjKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChPcHRpb25hbDxwdHJkaWZmX3Q+IG9mZnNldCA9
IGVuY29kZXIuY2FjaGVkT2Zmc2V0Rm9yUHRyKHNyYykpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8cHRyZGlmZl90PiBvZmZzZXQgPSBlbmNvZGVyLmNhY2hlZE9mZnNldEZvclB0cihzcmMp
KSB7CiAgICAgICAgICAgICB0aGlzLT5tX29mZnNldCA9ICpvZmZzZXQgLSBlbmNvZGVyLm9mZnNl
dE9mKCZ0aGlzLT5tX29mZnNldCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTUwMSw3ICs1MDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBwdHJkaWZmX3Qg
YnVmZmVyT2Zmc2V0ID0gZGVjb2Rlci5vZmZzZXRPZih0aGlzLT5idWZmZXIoKSk7Ci0gICAgICAg
IGlmIChPcHRpb25hbDx2b2lkKj4gcHRyID0gZGVjb2Rlci5jYWNoZWRQdHJGb3JPZmZzZXQoYnVm
ZmVyT2Zmc2V0KSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx2b2lkKj4gcHRyID0gZGVj
b2Rlci5jYWNoZWRQdHJGb3JPZmZzZXQoYnVmZmVyT2Zmc2V0KSkgewogICAgICAgICAgICAgaXNO
ZXdBbGxvY2F0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U291
cmNlKj4oKnB0cik7CiAgICAgICAgIH0KQEAgLTgyMyw5ICs4MjMsOSBAQCBwcml2YXRlOgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIENhY2hlZE9wdGlvbmFsIDogcHVibGljIFZh
cmlhYmxlTGVuZ3RoT2JqZWN0PE9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+PiB7CitjbGFzcyBDYWNo
ZWRPcHRpb25hbCA6IHB1YmxpYyBWYXJpYWJsZUxlbmd0aE9iamVjdDxzdGQ6Om9wdGlvbmFsPFNv
dXJjZVR5cGU8VD4+PiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgT3B0aW9uYWw8U291cmNlVHlwZTxUPj4mIHNvdXJjZSkKKyAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+JiBz
b3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTgzMyw3ICs4MzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRoaXMtPnRlbXBsYXRlIGFsbG9j
YXRlPFQ+KGVuY29kZXIpLT5lbmNvZGUoZW5jb2RlciwgKnNvdXJjZSk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8U291cmNlVHlwZTxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0Cisg
ICAgc3RkOjpvcHRpb25hbDxTb3VyY2VUeXBlPFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmICh0aGlzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODQxLDcgKzg0MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHsgdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKSB9Owog
ICAgIH0KIAotICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFNvdXJj
ZVR5cGU8VD4+JiBkc3QpIGNvbnN0CisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
c3RkOjpvcHRpb25hbDxTb3VyY2VUeXBlPFQ+PiYgZHN0KSBjb25zdAogICAgIHsKICAgICAgICAg
ZHN0ID0gZGVjb2RlKGRlY29kZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKaW5kZXggYzYyYWM1NDcxOTFjOGE4MDJlZjQwM2RlN2M0MzA2ODZjNjQ5
ZDQ4Zi4uOGVkNWRhYzM3NDU5ZmE4YjVlNmU3ZTQxMDc1ZGI4YjAxMDZmZWQ0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBz
dHJ1Y3QgQ2xhc3NJbmZvIHsKICAgICBjb25zdCBDbGFzc0luZm8qIHBhcmVudENsYXNzOwogICAg
IGNvbnN0IEhhc2hUYWJsZSogc3RhdGljUHJvcEhhc2hUYWJsZTsKICAgICBDaGVja0pTQ2FzdFNu
aXBwZXRGdW5jdGlvblB0ciBjaGVja1N1YkNsYXNzU25pcHBldDsKLSAgICBjb25zdCBPcHRpb25h
bDxKU1R5cGVSYW5nZT4gaW5oZXJpdHNKU1R5cGVSYW5nZTsgLy8gVGhpcyBpcyByYW5nZSBvZiBK
U1R5cGVzIGZvciBkb2luZyBpbmhlcml0YW5jZSBjaGVja2luZy4gSGFzIHRoZSBmb3JtOiBbZmly
c3RKU1R5cGUsIGxhc3RKU1R5cGVdIChpbmNsdXNpdmUpLgorICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SlNUeXBlUmFuZ2U+IGluaGVyaXRzSlNUeXBlUmFuZ2U7IC8vIFRoaXMgaXMgcmFuZ2Ugb2Yg
SlNUeXBlcyBmb3IgZG9pbmcgaW5oZXJpdGFuY2UgY2hlY2tpbmcuIEhhcyB0aGUgZm9ybTogW2Zp
cnN0SlNUeXBlLCBsYXN0SlNUeXBlXSAoaW5jbHVzaXZlKS4KICAgICBNZXRob2RUYWJsZSBtZXRo
b2RUYWJsZTsKICAgICBjb25zdCBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5U3RvcmFnZVR5cGU7
CiAgICAgY29uc3QgdW5zaWduZWQgc3RhdGljQ2xhc3NTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggMTQ5NGM3ZThjZmNmYzg3YTc1MDFhNDlj
ODZiNzJlMWYzMzI3ZmFmYS4uOGFmZDAyYWEzMGExYzM5YjdmOTMwZmFhMGQzNmVkZThmOTkwNGUw
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0y
MDMsNyArMjAzLDcgQEAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6
OmdldFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYKICAgICByZXR1cm4gZ2V0VW5s
aW5rZWRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwg
ZXhlY3V0YWJsZSwgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpNb2R1bGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24sIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQgPSBmYWxzZTsKICAgICBTb3VyY2VDb2RlS2V5IGtleSgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggMGRkZjY0OTFlNzY2NjY0NmFiNTliODY5
YjQxNjNmMDg3NDBmNDFiNC4uYzQxZjRhMzAxMzNjM2ZkYTkxZjM3MjdiNDA5Y2Q0NGEyODU1OTFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTIyMyw3
ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2soVk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0VW5saW5rZWRF
dmFsQ29kZUJsb2NrKFZNJiwgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQ
YXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSk7CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBnZXRVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZ2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIFBh
cnNlckVycm9yJik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGdldFVubGlua2Vk
R2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgc3RkOjpvcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIFBhcnNlckVycm9y
Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNhY2hlKGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIGNvbnN0IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCmluZGV4IDA4NTM5YjAxM2NkYWU1MmNiNDFjMTZl
ZTA4OGQ3ZDk0MzQ1N2M3MDUuLjJhZDE0ZjFhY2E3NTBlMTM2OTIxYjZlM2ZmZDAwYWQ3YmU0OWM2
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRK
U0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNM
b2NrLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxDb25jdXJyZW50SlNMb2NrZXJJbXBsPiBtX2xvY2tlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvbmN1cnJlbnRKU0xvY2tlckltcGw+IG1fbG9ja2VyOwogfTsKIAogY2xhc3MgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyIDogcHVibGljIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgewpAQCAt
MTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKIHByaXZhdGU6
Ci0gICAgT3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6b3B0aW9u
YWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
CmluZGV4IGYzYjhlOTE0MTk0MjJmMjA3YzRmNjExODU5YTRhZWQ0NTY2Yzc1MTIuLjVlZmUxYjYy
MTYxNDEyOWIyMjE3N2U3ZmQ1NTFiMWFiN2ZjYTI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0
YWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0
YWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc1dyaXRhYmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgIT0gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gY29uZmlndXJh
YmxlKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVudW1lcmFibGUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKCFoYXNFbnVtZXJhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6
emVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6
emVyQWdlbnQuY3BwCmluZGV4IGQwZTFiZjVhMTAwMjUwOWVhODVmN2VhM2IxMWEwZjZhZjk0OGU1
NWUuLmUyY2ExNjJlMGI1NGUyNWNmMDY5ZWVhOGM4N2UxZWVhMmU0Y2Q1YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgRmlsZUJhc2VkRnV6emVyQWdlbnQ6OkZpbGVCYXNlZEZ1enpl
ckFnZW50KFZNJiB2bSkKIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFnZW50OjpnZXRQ
cmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFByZWRpY3Rpb25UYXJnZXQm
IHRhcmdldCwgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWwpCiB7CiAgICAgRnV6emVyUHJlZGljdGlv
bnMmIGZ1enplclByZWRpY3Rpb25zID0gZW5zdXJlR2xvYmFsRnV6emVyUHJlZGljdGlvbnMoKTsK
LSAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gZ2VuZXJhdGVkID0gZnV6emVyUHJlZGljdGlv
bnMucHJlZGljdGlvbkZvcih0YXJnZXQubG9va3VwS2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNw
ZWN1bGF0ZWRUeXBlPiBnZW5lcmF0ZWQgPSBmdXp6ZXJQcmVkaWN0aW9ucy5wcmVkaWN0aW9uRm9y
KHRhcmdldC5sb29rdXBLZXkpOwogCiAgICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gY29k
ZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpOwogICAgIGF1dG8gc291cmNlVXBUb0Rpdm90ID0g
cHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0cmluZyh0YXJnZXQuZGl2b3QgLSB0YXJnZXQuc3RhcnRP
ZmZzZXQsIHRhcmdldC5zdGFydE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGQyM2RmZjk5YmVhOTkw
ZDEwNTBjOGFlZTExMWJmZGQ3ZmE4MjNmYzAuLmJmODNkNDI3MGY1MzEyZjc0NmU2NDUwZjY2NDVl
ODBhMGRmNjU1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIC8vIEhvdyB3ZSBz
dHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07Ci0gICAgT3B0aW9uYWw8aW50PiBmdW5jdGlv
bkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn0i
KTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAxODZmYjI0
ZmFiYTBjNDZjZWJlMDI3ZWE1NmMwNzJhNzVjOWNhY2I4Li44ZjVjYjVjZGVkNjBiNmI3N2MzNTEx
MDlkNWU1YTdlOWE4NjQxYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgREVGSU5FX1ZJ
U0lUX0NISUxEUkVOKEZ1bmN0aW9uRXhlY3V0YWJsZSk7CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZSog
RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIAotICAgIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVy
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24p
CisgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIHN0ZDo6
b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQog
ewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSAK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApp
bmRleCBhZTgyNDY0ZTk2MmJjMzUxM2MwYTg5MjI0NDNjNDFlY2Y5YTkxODQ0Li4yMjNhYzcyNjI0
ZjJlN2Q4ZThhMzNiMDg3YTY1ZDQyZjBjYjUyYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxD
b2RlKAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFNvdXJjZUNvZGUmLCAKLSAgICAgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbik7CisgICAgICAgIEpTT2JqZWN0KiYgZXhjZXB0aW9uLCBpbnQgb3ZlcnJp
ZGVMaW5lTnVtYmVyLCBzdGQ6Om9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbik7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
ICAgICAgICAKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZVJhcmVE
YXRhKCkubV9vdmVycmlkZUxpbmVOdW1iZXIgPSBvdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIoKSBjb25zdAorICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fb3ZlcnJpZGVMaW5lTnVtYmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwCmluZGV4IDNjMDQ4OWY4ODY3ZGMxZjg3NjlkOTcw
MTdlMTYxZmQxOWRmOTYzMTguLjk3MDIxNWUyNDZjYjJjOGI4MjkwNWZhYzlmM2Y2YmUxYTE4NzE2
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRp
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVk
aWN0aW9ucy5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRnV6emVyUHJlZGljdGlvbnM6OkZ1enplclBy
ZWRpY3Rpb25zKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogICAgIH0KIH0KIAotT3B0aW9uYWw8U3Bl
Y3VsYXRlZFR5cGU+IEZ1enplclByZWRpY3Rpb25zOjpwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmlu
ZyYga2V5KQorc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gRnV6emVyUHJlZGljdGlvbnM6
OnByZWRpY3Rpb25Gb3IoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IG1fcHJl
ZGljdGlvbnMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBtX3ByZWRpY3Rpb25zLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmgK
aW5kZXggMGRiOTZhNDg5Y2I0ZDU0YTVhMGFmMzJjMjE2YTIxY2VkMzRjNjZmMC4uZmMxYjZjYmI5
NjA0ZGFjNDY1NmE1NTYwMDNiMDhmZjgzNWU0ZjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIEZ1enplclByZWRpY3Rpb25zIHsKIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBG
dXp6ZXJQcmVkaWN0aW9ucyhjb25zdCBjaGFyKik7CiAKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVk
VHlwZT4gcHJlZGljdGlvbkZvcihjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNw
ZWN1bGF0ZWRUeXBlPiBwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgog
ICAgIEhhc2hNYXA8U3RyaW5nLCBTcGVjdWxhdGVkVHlwZT4gbV9wcmVkaWN0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oCmluZGV4IDhjMjhlMzVmYTRkNmFhOWRiMTJlZTFkMmE5OTk0MjUyNTdhOGYyNjYuLjcy
MzE1MDNiMzQ2ZGRmMzE2N2RkYmY3YmEzZmNmYjE1NmQ4YTFhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApA
QCAtNjUsNyArNjUsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdAogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlk
ZW50KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KGlkZW50KSkKICAgICAgICAgcmV0dXJuIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHNsb3Qp
OwogCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFBybwogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhp
c09iamVjdCkpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0
U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdC50aGlzVmFs
dWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3Qt
PmlzTWFwcGVkQXJndW1lbnQoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+
c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB9CiAKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29s
IEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lm
TmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKLSAgICB9IGVsc2UgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbElu
ZGV4ID0gcGFyc2VJbmRleChpZGVudCkpIHsKKyAgICB9IGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAgICB1
aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTsKICAgICAgICAgYm9vbCBpc01h
cHBlZCA9IHRoaXNPYmplY3QtPmlzTWFwcGVkQXJndW1lbnQoaW5kZXgpOwogICAgICAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgbmV3RGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggNzIw
ZTY4ZThiNmFiM2ZmZTRjMGEyMDVlOWY4MmVkMWU3NzQ1NTFiZS4uMjA1ZTFhOTM5NDNiMzVhYWQx
YmZmNTI5MDkyZGUzMTNhY2UwNTgwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSArIGlt
cGwtPmhhc2goKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPGJvb2w+IGdl
dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BOYW1lKQorICAgIEFMV0FZ
U19JTkxJTkUgc3RkOjpvcHRpb25hbDxib29sPiBnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wTmFtZSkKICAgICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsID0gcHJvcE5hbWUudWlkKCk7CiAgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gc3RydWN0dXJl
LT5pZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1h
cEltcGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1w
bElubGluZXMuaAppbmRleCBmMTFmMGE1YjRjNmE5NWZiODQ4OWU3NTUwZTAyYjY2MWMxMWI4OGE3
Li41MTYwZTgxOGMwMTliZWQ3MjYxODNhMzQ5ZTY2NzgxNjFkNjIwMTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaApAQCAtMTE3
LDcgKzExNyw3IEBAIEFMV0FZU19JTkxJTkUgdWludDMyX3QganNNYXBIYXNoRm9yQWxyZWFkeUhh
c2hlZFZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgcmV0dXJuIGpzTWFwSGFz
aEltcGw8RXhjZXB0aW9uRXhwZWN0YXRpb246OlNob3VsZE5vdFRocm93PihnbG9iYWxPYmplY3Qs
IHZtLCB2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1
cnJlbnRKU01hcEhhc2goSlNWYWx1ZSBrZXkpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNWYWx1ZSBrZXkpCiB7CiAgICAga2V5ID0g
bm9ybWFsaXplTWFwS2V5KGtleSk7CiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMTcxNGI4YWRkNWRiOWRl
NjVlNWMxNjM5OTkwNGJjMzMxZGUzNmM3YS4uYjdiOTFmMDA5ZWFkNjNjNWVjNWViZThlYzI4MzU1
MGQ3YjQxMGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aApAQCAtMzgsNyArMzgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbmRleCh1aW50MzJfdCBp
bmRleCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBP
cHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YXJzZUluZGV4KGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0
aCkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFy
c2VJbmRleChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgo
U3RyaW5nSW1wbCYgaW1wbCkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
cGFyc2VJbmRleChTdHJpbmdJbXBsJiBpbXBsKQogewogICAgIGlmIChpbXBsLmlzOEJpdCgpKQog
ICAgICAgICByZXR1cm4gcGFyc2VJbmRleChpbXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVuZ3Ro
KCkpOwpAQCAtMjcyLDcgKzI3Miw3IEBAIGlubGluZSBib29sIElkZW50aWZpZXI6OmVxdWFsKGNv
bnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5nCiAgICAgcmV0
dXJuIFdURjo6ZXF1YWwociwgcywgbGVuZ3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25h
bDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorQUxX
QVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byB1aWQgPSBpZGVudGlmaWVyLmltcGwoKTsK
ICAgICBpZiAoIXVpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDI4YmJmNmYzZWViMzEyMzZiNzgzZDQ2YTUxOGI5
M2Q3MDBhODZjYjUuLjI3MjlkZjlkZDRkMTVlMTliN2IyMDE5Y2E5NGRkNzY0N2M1YTY3MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5z
aW9uS2V5OjpIYyldID0gU3RyaW5nKGhvdXJDeWNsZVN0cmluZyhob3VyQ3ljbGUpKTsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBJZiB0aGVyZSBpcyBob3VyMTIsIGhvdXJDeWNsZSBpcyBpZ25v
cmVkLgotICAgICAgICAvLyBXZSBhcmUgc2V0dGluZyBudWxsIFN0cmluZyBleHBsaWNpdGx5IGhl
cmUgKGxvY2FsZU9wdGlvbnMnIGVudHJpZXMgYXJlIE9wdGlvbmFsPFN0cmluZz4pLiBUaGlzIGxl
YWRzIHVzIHRvIHVzZSBIb3VyQ3ljbGU6Ok5vbmUgbGF0ZXIuCisgICAgICAgIC8vIFdlIGFyZSBz
ZXR0aW5nIG51bGwgU3RyaW5nIGV4cGxpY2l0bHkgaGVyZSAobG9jYWxlT3B0aW9ucycgZW50cmll
cyBhcmUgc3RkOjpvcHRpb25hbDxTdHJpbmc+KS4gVGhpcyBsZWFkcyB1cyB0byB1c2UgSG91ckN5
Y2xlOjpOb25lIGxhdGVyLgogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6SGMpXSA9IFN0cmluZygpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApp
bmRleCA0ZmRkYWYxNWYzZmY3MDRlZDBlN2MwMTAyMjM4NTAwNDM5Yjg4NGQxLi40MmI3YjBjMDFi
YWE4NzAzNGVhYTE0NjBmNzE0YWYzNjdiY2IwNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5hcnJv
dyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsgImxv
bmciX3MsIFN0eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIs
IFwic2hvcnRcIiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxP
cHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50
eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5
cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJf
cywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIs
IFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0
KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRsT3B0aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJf
cywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVnaW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2Ny
aXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAiY3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0g
fSwgInR5cGUgbXVzdCBiZSBlaXRoZXIgXCJsYW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlw
dFwiLCBvciBcImN1cnJlbmN5XCIiX3MsIHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVk
Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAppbmRleCBl
MWQ4NWM5MWYxMmRiOGE5NzE4MjM1NTI5NmRiYTEwZjNlNWM2NzM3Li4zMTRmOTRkYTRhYjdkNTU2
ODQ5NDkzMzNjMjBiZWY4MzE0ZDNkZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oCkBAIC04NSwxMSArODUsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9sYW5ndWFnZTsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CiAgICAgU3RyaW5nIG1fcmVnaW9uOwot
ICAgIE9wdGlvbmFsPFN0cmluZz4gbV9jYWxlbmRhcjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1f
Y2FzZUZpcnN0OwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9jb2xsYXRpb247Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBtX2hvdXJDeWNsZTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fbnVtYmVyaW5n
U3lzdGVtOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2NhbGVuZGFyOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBtX2Nhc2VGaXJzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bV9jb2xsYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1faG91ckN5Y2xlOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX251bWJlcmluZ1N5c3RlbTsKICAgICBUcmlTdGF0ZSBt
X251bWVyaWMgeyBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA1ZTI0
Yzk0NTMwYTJkN2E1YWM4OTgxNTAzNGZhMGM0OTU3MzU1NThhLi40MmE4ZTk1ZmVkMTk0ODIxYmY1
YmU4MTAwNGU2YTRiMDQ2MDZkNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBN
ZWFzdXJlVW5pdCB7CiAgICAgQVNDSUlMaXRlcmFsIHN1YlR5cGU7CiB9OwogCi1zdGF0aWMgT3B0
aW9uYWw8TWVhc3VyZVVuaXQ+IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdW
aWV3IHVuaXRJZGVudGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IHNh
bmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaWVyKQog
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgTWVhc3VyZVVuaXQgc2ltcGxlVW5pdHNbXSA9IHsKICAg
ICAgICAgeyAiYXJlYSJfcywgImFjcmUiX3MgfSwKQEAgLTIzMywxMCArMjMzLDEwIEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBNZWFzdXJlVW5pdCBudW1lcmF0b3I7Ci0gICAgT3B0aW9uYWw8TWVh
c3VyZVVuaXQ+IGRlbm9taW5hdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8TWVhc3VyZVVuaXQ+IGRl
bm9taW5hdG9yOwogfTsKIAotc3RhdGljIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9y
bWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5n
VmlldyB1bml0SWRlbnRpZmllcikKIHsKICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLWlzd2VsbGZvcm1lZHVuaXRpZGVudGlmaWVyCiAgICAgaWYgKGF1dG8gdW5pdCA9IHNhbmN0
aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcih1bml0SWRlbnRpZmllcikpCkBAIC0zMzUsNyArMzM1
LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIFN0cmluZyB1bml0ID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1bml0IiksIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKLSAgICBPcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZv
cm1lZFVuaXQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVu
aXQ7CiAgICAgaWYgKCF1bml0LmlzTnVsbCgpKSB7CiAgICAgICAgIHdlbGxGb3JtZWRVbml0ID0g
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKHVuaXQpOwogICAgICAgICBpZiAoIXdlbGxGb3JtZWRV
bml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmlu
ZGV4IDdjZjljODY3MDZiZjY1NTQzZjhkZTlhMzE0OTNmZWVjMTAyOGMxMTEuLmUxNDAzY2YwZDE3
NzI0MDgwNTI4MWQ2NTJjODIzMDJkMWViZDk1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNDM4LDcgKzE0MzgsNyBAQCBib29sIGlzV2Vs
bEZvcm1lZEN1cnJlbmN5Q29kZShTdHJpbmdWaWV3IGN1cnJlbmN5KQogICAgIHJldHVybiBjdXJy
ZW5jeS5sZW5ndGgoKSA9PSAzICYmIGN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNB
U0NJSUFscGhhPigpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxp
emVMb2NhbGVJRFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdCBjaGFyKiBsb2NhbGVJRCkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIsIDMyPj4gY2Fub25pY2FsaXplTG9jYWxlSURXaXRob3V0
TnVsbFRlcm1pbmF0b3IoY29uc3QgY2hhciogbG9jYWxlSUQpCiB7CiAgICAgQVNTRVJUKGxvY2Fs
ZUlEKTsKICAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA5NWViN2JiNzk5YjVlNzI4MjE4NTNmOWE5YmE0
YmIyOTAyMWJkMDUyLi5lZTZjOTZhZTAxMTc1MjczYTNkOTUyOTg2ZGZlODU3ODQzMjM5ZWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAgVmVjdG9yPGNoYXIsIDMyPiBsb2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnV2l0
aE51bGxUZXJtaW5hdG9yKGNvbnN0IENTdHJpbmcmKTsKIFN0cmluZyBsYW5ndWFnZVRhZ0Zvckxv
Y2FsZUlEKGNvbnN0IGNoYXIqLCBib29sIGlzSW1tb3J0YWwgPSBmYWxzZSk7CiBWZWN0b3I8U3Ry
aW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2Nh
bGVzKTsKIAotdXNpbmcgUmVzb2x2ZUxvY2FsZU9wdGlvbnMgPSBzdGQ6OmFycmF5PE9wdGlvbmFs
PFN0cmluZz4sIG51bWJlck9mUmVsZXZhbnRFeHRlbnNpb25LZXlzPjsKK3VzaW5nIFJlc29sdmVM
b2NhbGVPcHRpb25zID0gc3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIG51bWJlck9m
UmVsZXZhbnRFeHRlbnNpb25LZXlzPjsKIHVzaW5nIFJlbGV2YW50RXh0ZW5zaW9ucyA9IHN0ZDo6
YXJyYXk8U3RyaW5nLCBudW1iZXJPZlJlbGV2YW50RXh0ZW5zaW9uS2V5cz47CiBzdHJ1Y3QgUmVz
b2x2ZWRMb2NhbGUgewogICAgIFN0cmluZyBsb2NhbGU7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9v
bCBpc1N0cnVjdHVyYWxseVZhbGlkTGFuZ3VhZ2VUYWcoU3RyaW5nVmlldyk7CiAKIGJvb2wgaXNX
ZWxsRm9ybWVkQ3VycmVuY3lDb2RlKFN0cmluZ1ZpZXcpOwogCi1PcHRpb25hbDxWZWN0b3I8Y2hh
ciwgMzI+PiBjYW5vbmljYWxpemVMb2NhbGVJRFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdCBj
aGFyKiBsb2NhbGVJRCk7CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyLCAzMj4+IGNhbm9uaWNh
bGl6ZUxvY2FsZUlEV2l0aG91dE51bGxUZXJtaW5hdG9yKGNvbnN0IGNoYXIqIGxvY2FsZUlEKTsK
IAogc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKICAgICB2b2lkIG9wZXJh
dG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCA2MmM0ODhmMDU0MzdhZjIzMDNlYmRkNGRmYTQ4ZTYxNGMzYjg3ZDRhLi4wYjU5NjYxMmZmOGMz
NWYxYTFkZTI0ZGNmMGM3NmVlM2RhYjg0YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjA3LDcg
KzIwNyw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQp
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRp
bWV1bml0Ci1zdGF0aWMgT3B0aW9uYWw8VVJlbGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRp
bWVVbml0VHlwZShTdHJpbmdWaWV3IHVuaXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxVUmVsYXRp
dmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZlVGltZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKIHsK
ICAgICBTdHJpbmdWaWV3IHNpbmd1bGFyID0gc2luZ3VsYXJVbml0KHVuaXQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCBkNGFiNDlhYTFjNDVl
ZjY0NDIxMDM1NDM1NmIxOTkwZmQ0ZTgyMGNiLi40MGE5MjI0ZDY4NTk3YzEwOTA4YTE5YTUzOTlj
YTcxMWE1NTg4YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJp
bnNpYyBpbnRyaW5zaWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPEl0ZXJh
dGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMp
CitzdGQ6Om9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2lj
KEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKICAgICBj
YXNlIEFycmF5VmFsdWVzSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAppbmRleCA3YTljZDcwMjllMzhmZGMzZjExMDUwOTE0ZDRkZDIwYjUzZGEzNTJh
Li43YTg0OTY3ODVmYmUyYmM0MGVlOTI4MzQ0N2QwZGQ4NDc1OGI5NjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTk2LDcgKzE5Niw3IEBAIGVudW0g
SW50cmluc2ljIDogdWludDhfdCB7CiAgICAgV2FzbUZ1bmN0aW9uSW50cmluc2ljLAogfTsKIAot
T3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRyaW5zaWMoSW50cmlu
c2ljKTsKK3N0ZDo6b3B0aW9uYWw8SXRlcmF0aW9uS2luZD4gaW50ZXJhdGlvbktpbmRGb3JJbnRy
aW5zaWMoSW50cmluc2ljKTsKIAogY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDc5YzAz
NDMyZTJhNjQ3OWZlMDljOTQwNThjNjcxODAyNDc1OTgxZmEuLjMyYzQ4ODAzZWFmYjI2YjBkZmJh
YmM4MjlhMDY2MGMzNDUwZTliNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAg
ICAgLy8gNC4gRWxzZSBpZiBQIGlzIGFuIGFycmF5IGluZGV4ICgxNS40KSwgdGhlbgogICAgIC8v
IGEuIExldCBpbmRleCBiZSBUb1VpbnQzMihQKS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAvLyBiLiBSZWplY3QgaWYgaW5kZXggPj0gb2xkTGVuIGFuZCBvbGRM
ZW5EZXNjLltbV3JpdGFibGVdXSBpcyBmYWxzZS4KICAgICAgICAgdWludDMyX3QgaW5kZXggPSBv
cHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBOb3RoaW5nIHByZXZlbnRz
IHRoaXMgZnJvbSBiZWluZyBjYWxsZWQgb24gYSBSdW50aW1lQXJyYXksIGFuZCB0aGUgbGVuZ3Ro
IGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAwIGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5j
cHAKaW5kZXggNzdjOTJlY2Y4YTVlZDU3YTI4MDFhMjAxZDM1ODZjYmVkM2YyNTJlZC4uNjFmZmU4
Y2EwZjBiNDlhODU4OTUyMjY1MzY4ZmNlYzJmMmM3ZmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlCdWZm
ZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHNoYXJlZEFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVu
Z3RoKTsKIAotT3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JT
bG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmpl
Y3QsIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgbW9kZSkKK3N0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4g
YXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QsIEFycmF5QnVmZmVyU2hhcmluZ01vZGUg
bW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJheUJ1ZmZl
cio+IHNwZWNpZXNDbwogCiAgICAgLy8gRmFzdCBwYXRoIGluIHRoZSBub3JtYWwgY2FzZSB3aGVy
ZSB0aGUgdXNlciBoYXMgbm90IHNldCBhbiBvd24gY29uc3RydWN0b3IgYW5kIHRoZSBBcnJheUJ1
ZmZlci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm9ybWFsLgogICAgIC8vIFdlIG5lZWQgcHJv
dG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5QnVmZmVyLCB3aGljaCBhcmUgQXJy
YXlCdWZmZXIgb2JqZWN0cyBidXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUgYnkgZGVmYXVs
dC4KLSAgICBPcHRpb25hbDxKU1ZhbHVlPiBzcGVjaWVzID0gYXJyYXlCdWZmZXJTcGVjaWVzQ29u
c3RydWN0b3IoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBtb2RlKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWU+IHNwZWNpZXMgPSBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihnbG9i
YWxPYmplY3QsIHRoaXNPYmplY3QsIG1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVycm9yUmVzdWx0KTsKICAgICBpZiAoIXNwZWNpZXMpCiAgICAgICAgIHJldHVybiBmYXN0
UGF0aFJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaAppbmRleCA3YjkwZjk0ZGU3NzNiYmQ3ZWZlY2RlOWQxZWM3
NzNjZjFmMjcyMWU3Li5iY2UxYTdkZDU3MTdhZTI2ZGVkMGNkZjk3ZTc3ZDg2MjIyNTkzOTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5oCkBAIC01MSw2ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CiB9
OwogCi1PcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3co
SlNHbG9iYWxPYmplY3QqLCBKU0FycmF5QnVmZmVyKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7
CitzdGQ6Om9wdGlvbmFsPEpTVmFsdWU+IGFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVjdG9yU2xv
dyhKU0dsb2JhbE9iamVjdCosIEpTQXJyYXlCdWZmZXIqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaAppbmRleCA1
YmE4M2VhYTg1MjAyYjdhZDhlNTgzYWQxODNkYzBiY2UzYjE2ZTQ0Li42MmQ3NDdjOTBjZWYzM2Yy
NDY3ZDBmZGQwMDczOGU1MGY5YTFhZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKQEAg
LTUwLDcgKzUwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxp
ZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBBcnJheUIKICAgICAgICAgJiYgZ2xvYmFs
T2JqZWN0LT5hcnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0KG1vZGUpLnN0YXRlT25KU1Ro
cmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDxKU1ZhbHVl
PiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1v
ZGUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVj
aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNBcnJheUJ1ZmZl
ciogdGhpc09iamVjdCwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBtb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuaAppbmRleCAwY2NmNjQyMWI0NjdmOWM2MWNhZjFmNmI0OTFmZDQ3OTliNjc5ZTY4
Li42NjZjNTQyNDc3N2EyODc3MmM3YWVkZmQyNGJjZDBhYTUzNzllOGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE5Miw3
ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92
ZWN0b3IuZ2V0TWF5QmVOdWxsKGxlbmd0aCgpKTsgfQogICAgIAogICAgIGlubGluZSB1bnNpZ25l
ZCBieXRlT2Zmc2V0KCk7Ci0gICAgaW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlT2Zmc2V0
Q29uY3VycmVudGx5KCk7CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVP
ZmZzZXRDb25jdXJyZW50bHkoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lu
bGluZXMuaAppbmRleCA1YjE3MTA1NjFjNjFmNzFjNzVlNWM4YzRjOTAzMDc1NmZkZjNhMzMwLi5k
OTViNDc4ODBlYWY3Y2Y0MmNhNTIzOTQzNDA2YTFmZjQ5ZDFiN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aApAQCAtMTE1LDkgKzExNSw5IEBAIGlubGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6
Ynl0ZU9mZnNldCgpCiAgICAgcmV0dXJuIGJ5dGVPZmZzZXRJbXBsPE11dGF0b3IsIHVuc2lnbmVk
PigpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEpTQXJyYXlCdWZmZXJWaWV3Ojpi
eXRlT2Zmc2V0Q29uY3VycmVudGx5KCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBK
U0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldENvbmN1cnJlbnRseSgpCiB7Ci0gICAgcmV0dXJu
IGJ5dGVPZmZzZXRJbXBsPENvbmN1cnJlbnRUaHJlYWQsIE9wdGlvbmFsPHVuc2lnbmVkPj4oKTsK
KyAgICByZXR1cm4gYnl0ZU9mZnNldEltcGw8Q29uY3VycmVudFRocmVhZCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4+KCk7CiB9CiAKIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0Fy
cmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAwMGFiYjk5MjVmNzE2MzI0
ZTQ4MmUxNzZhOGY0Yzc5ZmRmZWMwYThlLi4xNzUzNzExZjRiYjY5MGJlM2E5MjMzYzBiMzIzMmE4
MzE2OTIxMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0lu
dDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEJpZ0ludEltcGw+Ci1PcHRpb25hbDxKU0JpZ0ludDo6RGlnaXQ+IEpTQmlnSW50
Ojp0b1NoaWZ0QW1vdW50KEJpZ0ludEltcGwgeCkKK3N0ZDo6b3B0aW9uYWw8SlNCaWdJbnQ6OkRp
Z2l0PiBKU0JpZ0ludDo6dG9TaGlmdEFtb3VudChCaWdJbnRJbXBsIHgpCiB7CiAgICAgaWYgKHgu
bGVuZ3RoKCkgPiAxKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzA3NCw3ICsz
MDc0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY29tcHV0ZUhhc2goSlNCaWdJ
bnQ6OkRpZ2l0KiBkaWdpdHMsIHVuc2lnbmVkIGxlbmcKICAgICByZXR1cm4gaGFzaGVyLmhhc2go
KTsKIH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+IEpTQmlnSW50Ojpjb25jdXJyZW50SGFzaCgpCitz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBKU0JpZ0ludDo6Y29uY3VycmVudEhhc2goKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgSlNCaWdJbnQ6OmNvbmN1cnJlbnRIYXNoIGJ5IGluc2VydGlu
ZyByaWdodCBzdG9yZSBiYXJyaWVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaAppbmRleCA2NjVlZDFkNGMxMDU2ZjkzMjQzNDhiZjQ4Yjc3MzZmZWNhZTNjNmIyLi44OTYx
YzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQ1NCw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNCaWdJbnQqIHJpZ2h0VHJpbShKU0dsb2JhbE9iamVjdCopOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQmlnSW50KiB0cnlSaWdodFRyaW0oVk0mKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVuc2lnbmVkPiBjb25jdXJyZW50SGFzaCgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbmN1cnJlbnRI
YXNoKCk7CiAgICAgdW5zaWduZWQgaGFzaCgpCiAgICAgewogICAgICAgICBpZiAobV9oYXNoKQpA
QCAtNTkyLDcgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEltcGxSZXN1bHQgcmlnaHRT
aGlmdEJ5TWF4aW11bShKU0dsb2JhbE9iamVjdCosIGJvb2wgc2lnbik7CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KLSAgICBzdGF0aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hp
ZnRBbW91bnQoQmlnSW50SW1wbCB4KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaWdpdD4g
dG9TaGlmdEFtb3VudChCaWdJbnRJbXBsIHgpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJp
Z0ludEltcGw+CiAgICAgc3RhdGljIEltcGxSZXN1bHQgYXNJbnROSW1wbChKU0dsb2JhbE9iamVj
dCosIHVpbnQ2NF90LCBCaWdJbnRJbXBsKTsKQEAgLTYwNSw3ICs2MDUsNyBAQCBwcml2YXRlOgog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChK
U0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPHVpbnQ2
NF90PiB0b1VpbnQ2NEhlYXAoSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7CiAKICAg
ICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggYTk3NGQ5NWM3YzcyYjQw
NGZjN2EzNmJmMGNmMWVlNjZhNGY4OWE5ZC4uMTEyMDQ3ZWVkZWVmZjRkODNlMjlkYmY2ZTNiOWVk
NDM5ZTBjOGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gaXNVbmRlZmlu
ZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KIH0K
IAotT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgp
IGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJl
IGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDNlZTZjYmIyNTU0MWM5NWU0
Yzc3NmFhNTBmZmY1ZTZiYTU2NDViZGYuLjhmNGQyMDJlNjMwOWViZDkzYTJlNGNiMTNkMmJjYjA5
ODUyZmVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
QEAgLTIxOSw4ICsyMTksOCBAQCBwdWJsaWM6CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25z
dDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQzMl90
PiB0cnlHZXRBc1VpbnQzMkluZGV4KCk7Ci0gICAgT3B0aW9uYWw8aW50MzJfdD4gdHJ5R2V0QXNJ
bnQzMigpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRyeUdldEFzVWludDMySW5kZXgo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IHRyeUdldEFzSW50MzIoKTsKICAgICBpbnQ2
NF90IGFzQW55SW50KCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNVSW50MzJBc0FueUludCgpIGNv
bnN0OwogICAgIGludDMyX3QgYXNJbnQzMkFzQW55SW50KCkgY29uc3Q7CkBAIC0yODIsNyArMjgy
LDcgQEAgcHVibGljOgogICAgIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAg
IC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVm
ZmVjdHMuCi0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29u
c3Q7CiAKICAgICBKU1N0cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8g
T24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4KICAgICBKU1N0cmlu
ZyogdG9TdHJpbmdPck51bGwoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9u
LCB0aGlzIHJldHVybnMgbnVsbCwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tzIGZhc3Rlci4KQEAg
LTMwMyw3ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgaW50NjRfdCB0b0JpZ0ludDY0KEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAgICAgdWludDY0X3QgdG9CaWdVSW50NjQoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0b1VJbnQzMkFmdGVyVG9OdW1lcmlj
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdG9V
SW50MzJBZnRlclRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgLy8gRmxv
YXRpbmcgcG9pbnQgY29udmVyc2lvbnMgKHRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBm
b3IgV2ViQ29yZTsKICAgICAvLyBzaW5nbGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJl
c2VudGF0aW9uIHVzZWQgaW4gSlMgb3IgSlNDKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDg4MzRkZDg3MDk1YmMyZGJjN2Q0
NDIwNTdkYjUwY2QxN2UxYTMwMjkuLjM0ZWEyMTQ2MGEwZGI0NWE3ZDAyNjA3YWY3YmFlNDVhNzcz
YzViMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNO
dW1iZXIoKSBjb25zdAogICAgIHJldHVybiBpc0ludDMyKCkgPyBhc0ludDMyKCkgOiBhc0RvdWJs
ZSgpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWlu
dDMySW5kZXgoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdl
dEFzVWludDMySW5kZXgoKQogewogICAgIGlmIChpc1VJbnQzMigpKSB7CiAgICAgICAgIEFTU0VS
VChpc0luZGV4KGFzVUludDMyKCkpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgT3B0aW9u
YWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWludDMySW5kZXgoKQogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxpbnQzMl90PiBKU1ZhbHVlOjp0cnlH
ZXRBc0ludDMyKCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IEpTVmFsdWU6OnRyeUdl
dEFzSW50MzIoKQogewogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0ludDMy
KCk7CkBAIC04NDksNyArODQ5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRv
TnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBq
c051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IEpT
VmFsdWU6OnRvVUludDMyQWZ0ZXJUb051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gSlNWYWx1ZTo6
dG9VSW50MzJBZnRlclRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
c3QuaAppbmRleCBjY2ZmNGE4YjYwZTlhYmUzYTRjNzdlNWYxMjNmNTVhYWI2ZTdmMjhjLi42OGMw
ZTViYzJlYTA0YjMwMmRjNDNkMjQ4YWI1MTg4ZjRiM2UzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Nhc3QuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIGlubGluZSBib29sIGluaGVy
aXRzSlNUeXBlSW1wbChWTSYgdm0sIEZyb20qIGZyb20sIEpTVHlwZVJhbmdlIHJhbmdlKQogLy8g
d2F5IHRvIHNheSB0aGF0IHdlIGFyZSBvdmVybG9hZGluZyBqdXN0IHRoZSBmaXJzdCB0eXBlIGlu
IGEgdGVtcGxhdGUgbGlzdC4uLgogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0Pgogc3RydWN0IElu
aGVyaXRzVHJhaXRzIHsKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdl
PiB0eXBlUmFuZ2UgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZyb20+CiAgICAgc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZN
JiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gRmluYWxUeXBlRGlzcGF0Y2hlcjxzdGQ6OmlzX2Zp
bmFsPFRhcmdldD46OnZhbHVlPjo6dGVtcGxhdGUgaW5oZXJpdHNHZW5lcmljPFRhcmdldD4odm0s
IGZyb20pOyB9CiB9OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBJbmhlcml0c1RyYWl0cyB7
CiAjZGVmaW5lIERFRklORV9UUkFJVFNfRk9SX0pTX1RZUEVfT1ZFUkxPQUQoY2xhc3NOYW1lLCBm
aXJzdEpTVHlwZSwgbGFzdEpTVHlwZSkgXAogICAgIHRlbXBsYXRlPD4gXAogICAgIHN0cnVjdCBJ
bmhlcml0c1RyYWl0czxjbGFzc05hbWU+IHsgXAotICAgICAgICBzdGF0aWMgY29uc3RleHByIE9w
dGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oZmly
c3RKU1R5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KGxhc3RKU1R5cGUpIH0gfTsgXAorICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7
IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihmaXJzdEpTVHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4o
bGFzdEpTVHlwZSkgfSB9OyBcCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+IFwKICAg
ICAgICAgc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyBy
ZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPGNsYXNzTmFtZSwgRnJvbT4odm0sIGZyb20sICp0eXBl
UmFuZ2UpOyB9IFwKICAgICB9OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDQ1YTllZmZmZDY5YjNh
YTdkNTM5ODAxMzBhZjkxOTkxYmViZDUzN2UuLjNhMzE0MTRlNTA0NmQ0ZWM4ODkzNjY1NjA4Njg3
MmNkOWY1ZDVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgY3VzdG9tR2V0dGVyRnVuY3Rp
b24tPnByb3BlcnR5TmFtZSgpKSk7CiB9CiAKLUpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
UHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0ZXIs
IE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK0pTQ3VzdG9t
R2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEN1c3RvbUZ1
bmN0aW9uUG9pbnRlciBnZXR0ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlKQogICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Byb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCBwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAtNTksNyAr
NTksNyBAQCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uKFZN
JiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YQogewogfQogCi1KU0N1c3RvbUdldHRlckZ1
bmN0aW9uKiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgQ3Vz
dG9tRnVuY3Rpb25Qb2ludGVyIGdldHRlciwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlKQorSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciBnZXR0
ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQog
ewogICAgIEFTU0VSVChnZXR0ZXIpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24uaAppbmRleCAyMzhiOWEwMzA1ZDk3OTQ2MzYxMWU3OGQzZjZkMmVhOWNhYmJlZDc0
Li4zNjYwYmRmNWNkZDQ1ODAzZmQ4YzQxNDJmYTZhNjE5OWNhZmIxMGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
CkBAIC01MSwyMSArNTEsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gPSBzdGQ6Om51bGxvcHQpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwg
c3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWU7IH0KICAgICBDdXN0b21GdW5j
dGlvblBvaW50ZXIgZ2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9nZXR0ZXI7IH07CiAgICAgQ3Vz
dG9tRnVuY3Rpb25Qb2ludGVyIGN1c3RvbUZ1bmN0aW9uUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZ2V0dGVyOyB9OwotICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tQXR0cmlidXRlOyB9OworICAgIHN0ZDo6b3B0
aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kb21BdHRyaWJ1dGU7IH07CiAKIHByaXZhdGU6Ci0gICAgSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIEN1c3RvbUZ1bmN0aW9uUG9pbnRlciwgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4pOworICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24oVk0mLCBO
YXRpdmVFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCBDdXN0b21GdW5jdGlvblBvaW50ZXIsIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmli
dXRlQW5ub3RhdGlvbj4pOwogCiAgICAgSWRlbnRpZmllciBtX3Byb3BlcnR5TmFtZTsKICAgICBD
dXN0b21GdW5jdGlvblBvaW50ZXIgbV9nZXR0ZXI7Ci0gICAgT3B0aW9uYWw8RE9NQXR0cmlidXRl
QW5ub3RhdGlvbj4gbV9kb21BdHRyaWJ1dGU7CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1
dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKaW5kZXggZGJlMjExZDk2N2ViODM0N2U2ZTQ2ZDQ4MmM0M2Y4MWUyYTRjNTY1
Mi4uNDVhNzg0MTk4MDk0Njc1NWU5OWVlOWE4NTlmNzg1MGVjNTI2MzhhYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVsZW1lbnRUeXBl
IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZhbHVlPEFkYXB0b3I+KGdsb2Jh
bE9iamVjdCwganNWYWx1ZSk7IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkg
eyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1
ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0
aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9O
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KIAogICAg
IHZvaWQgc29ydCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKaW5kZXggZTlkZjg0MzVlNjk4ZTJjMDg1MTY2YmVjYTc1NWZkOGQ2ZGVhMmFh
MS4uZDI1ODQwNjdlODNmZGYyNjlmYzBhOGRjZjlkMDFlMmQ0NGRhNDA5NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xMTUsNyArMTE1LDcg
QEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVk
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBpZiAoc291cmNlLT5pc1NoYXJlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE9wdGlvbmFsPEpTVmFsdWU+IHNwZWNpZXMg
PSBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHNvdXJjZSwgQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCk7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
PiBzcGVjaWVzID0gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmICghc3BlY2llcykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNv
bnN0cnVjdEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFy
Z3VtZW50LCB1bnNpZ25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCitp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVu
Y29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzYsNyAr
Mjc2LDcgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbXBsKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgSlNWYWx1ZSBmaXJzdFZhbHVl
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQg
PSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQg
PiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCBmYTI1Y2Q4MmFkZDNlNzcxZjkwNzYzNTdjYjkzMmRhNjkwMTU3YjM3Li40NTAy
Mzg3OTJkMTAzYWEyMDljZmEzODM3MDlkM2UxZjU0OTcxYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMzU1LDcgKzM1NSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5U2xvdCgKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9i
amVjdCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19maW5hbF92PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiwgImdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXggbXVzdCBub3QgYmUgb3ZlcnJpZGRlbiIpOwogICAgICAgICByZXR1cm4g
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4
LnZhbHVlKCksIHNsb3QpOwogICAgIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxs
KTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zp
bmFsX3Y8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+LCAicHV0QnlJbmRleCBtdXN0
IG5vdCBiZSBvdmVycmlkZGVuIik7CiAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpOwogICAgIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSgKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwogCi0gICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewogICAgICAgICBhdXRvIHRocm93VHlwZUVycm9ySWZOZWVkZWQgPSBbJl0gKGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgbWFrZVN0cmluZyhlcnJvck1lc3NhZ2UsICppbmRleCkpOwpAQCAtNDQwLDcgKzQ0MCw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAog
ewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+PiwgImRlbGV0ZVByb3BlcnR5QnlJbmRleCBtdXN0IG5vdCBiZSBvdmVycmlkZGVuIik7
CiAgICAgICAgIHJldHVybiBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA1OTEzZmM2MDE3YTZjMGJiMjhjZTMyMzRi
ZmU4MzczNTExOGQ0YzQ2Li5jNDVhMGY5MzE2ZGFmMGFjOThiMTMzNjM2MTlkNDk4NWQzNDUxYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTU2Myw3ICs1NjMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1ibHlEaXNh
YmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7CiAgICAg
V2Vha1B0cjxDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
c3RhY2tUcmFjZUxpbWl0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3Qg
V2Vha0N1c3RvbUdldHRlck9yU2V0dGVySGFzaCB7CkBAIC02MTgsOCArNjE4LDggQEAgcHVibGlj
OgogICAgIFdhdGNocG9pbnRTZXQmIGVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRT
ZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHN0YWNrVHJhY2VMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tUcmFjZUxpbWl0OyB9Ci0g
ICAgdm9pZCBzZXRTdGFja1RyYWNlTGltaXQoT3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7IG1f
c3RhY2tUcmFjZUxpbWl0ID0gdmFsdWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBz
dGFja1RyYWNlTGltaXQoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrVHJhY2VMaW1pdDsgfQorICAg
IHZvaWQgc2V0U3RhY2tUcmFjZUxpbWl0KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbHVlKSB7
IG1fc3RhY2tUcmFjZUxpbWl0ID0gdmFsdWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5k
ZXggZTY2YTA4OWU5OTE4OWJlMTE4NDZjNGQ1MzI3ZTgzYjk3ZGMyZjAxNy4uYWRhZDgyMWZlYjU2
M2EwNGI2MGFlZmQxMDI1Mzc2NDk1M2I3OGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtODY3
LDcgKzg2Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jQ29weURhdGFQ
cm9wZXJ0aWVzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAKICAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGNvbnN0IElkZW50aWZpZXJT
ZXQqIGV4Y2x1ZGVkU2V0ID0gbnVsbHB0cjsKLSAgICBPcHRpb25hbDxJZGVudGlmaWVyU2V0PiBu
ZXdseUNyZWF0ZWRTZXQ7CisgICAgc3RkOjpvcHRpb25hbDxJZGVudGlmaWVyU2V0PiBuZXdseUNy
ZWF0ZWRTZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID4gMSkgewogICAg
ICAgICBpbnQzMl90IHNldEluZGV4ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5h
c1VJbnQzMkFzQW55SW50KCk7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ2V0Q2Fs
bGVyQ29kZUJsb2NrKGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCmluZGV4IDZmYmFhMDcyYjAzMDlkYjMxNTk4YjY5ZmQyYWNiYWJiNTZmYzFkYzEuLjdiY2M1
YmQzMjJmZGRmMWIwZDMxYjUzMWMzMDZhY2U3MTNjYjVlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2
bSgpIHsgcmV0dXJuIG1fdm07IH0KIAotICAgIE9wdGlvbmFsPFJlZlB0cjxUaHJlYWQ+PiBvd25l
clRocmVhZCgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJU
aHJlYWQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1faGFzT3duZXJUaHJlYWQpCiAgICAg
ICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCA3NjFjMzZlYTM4MGQ5YTU5ZGU5OTBhMjY3YzBmZmRlOTE3
ZGNhODk2Li5mYmI2Y2NjOTM0ODhhM2FlOWViOTY1MzBiNGIyMDU0ZDI4YTEyNmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xODc3LDcgKzE4Nzcs
NyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcAogewogICAgIEFTU0VSVChhdHRyaWJ1dGVzICYg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBy
ZXR1cm4gcHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBhY2Nlc3Nv
ciwgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKIAogICAgIHJldHVy
biBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlO
YW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyk7CkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBib29sIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1
ZSgpKTsKIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBi
b29sIEpTT2JqZWN0OjpnZXRPd25TdGF0aWNQcm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8
U3RydWN0dXJlOjpQcm9wZXJ0eUhhc2hFbnRyeT4gSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hF
bnRyeShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFN0cnVjdHVyZTo6UHJvcGVydHlIYXNoRW50cnk+IEpTT2JqZWN0OjpmaW5kUHJvcGVydHlI
YXNoRW50cnkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAg
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1l
KTsKIH0KQEAgLTM1MDIsNyArMzUwMiw3IEBAIHN0cnVjdCBXZWFrQ3VzdG9tR2V0dGVyT3JTZXR0
ZXJIYXNoVHJhbnNsYXRvciB7CiAgICAgfQogfTsKIAotc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdl
dFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRl
KQorc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1c3RvbUdldHRlckZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVuYywgc3RkOjpvcHRpb25hbDxET01B
dHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCiB7CiAgICAgdXNpbmcgVHJhbnNsYXRv
ciA9IFdlYWtDdXN0b21HZXR0ZXJPclNldHRlckhhc2hUcmFuc2xhdG9yPEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24+OwogCkBAIC0zNTU4LDcgKzM1NTgsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YQogCiBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICByZXR1cm4gcHV0RGlyZWN0KGdsb2JhbE9i
amVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiB9CkBAIC0zNjgwLDcgKzM2ODAsNyBA
QCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIC8vIElmIGl0J3MgYW4gYXJyYXkgaW5kZXgs
IHRoZW4gdXNlIHRoZSBpbmRleGVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewogICAgICAgICAvLyBjLiBMZXQgc3VjY2VlZGVkIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0
aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kICg4LjEyLjkp
IG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRzLgogICAgICAgICAv
LyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlzIGZhbHNlLgogICAgICAgICAvLyBlLiBJZiBpbmRl
eCA+PSBvbGRMZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4
IDRiMGQ5YzAxNThiODU3YzBlZGM5NDIyZWZlMzExNjNkYjgyOTI5YzAuLjZjMDIyOTA1NWU4Mzcy
NjNlNDBkNTBhMWQ5MTYwNjVkZDRiODg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaApAQCAtOTU3LDcgKzk1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUJl
UHJvdG90eXBlKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRCZWNvbWVQcm90b3R5cGUoKTsKIAotICAg
IE9wdGlvbmFsPFN0cnVjdHVyZTo6UHJvcGVydHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hF
bnRyeShWTSYsIFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJ1Y3R1
cmU6OlByb3BlcnR5SGFzaEVudHJ5PiBmaW5kUHJvcGVydHlIYXNoRW50cnkoVk0mLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtMTQzMSw3ICsx
NDMxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RJ
bXBsKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2IKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3Qp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE0NjEsNyArMTQ2MSw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlCiAgICAgICAgICAgICAvLyBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCks
IHNvIHdlIGNhbm5vdCBzYWZlbHkgY2FsbCB0aGUgb3ZlcnJpZGRlbiBnZXRPd25Qcm9wZXJ0eVNs
b3QKICAgICAgICAgICAgIC8vIChsZXN0IHdlIHJldHVybiBhIHByb3BlcnR5IGZyb20gYSBwcm90
b3R5cGUgdGhhdCBpcyBzaGFkb3dlZCkuIENoZWNrIG5vdyBmb3IgYW4gaW5kZXgsCiAgICAgICAg
ICAgICAvLyBpZiBzbyB3ZSBuZWVkIHRvIHN0YXJ0IGFmcmVzaCBmcm9tIHRoaXMgb2JqZWN0Lgot
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAg
ICAgICAvLyBTYWZlIHRvIGNvbnRpbnVlIHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247
IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBh
cnNpbmcgdGhlIGludCBhZ2Fpbi4KQEAgLTE0ODMsNyArMTQ4Myw3IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlCiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CiAgICAgfQog
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGU2YWVk
NzY0MDgwN2M1ZmU1MTdkYzljYmJhYmJlYzg1ZThkMWY1OWUuLjRmM2E3NDNlMjZlM2YzNTMzZTVm
NDc4NzBmZjMyOTJjNDk4ZThhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0yNjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KgogCiAgICAgLy8gVHJ5IGluZGV4ZWQgcHV0IGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVk
IGZvciBjb3JyZWN0bmVzcywgc2luY2UgbG9hZHMgb24gcHJvcGVydHkgbmFtZXMgdGhhdCBhcHBl
YXIgbGlrZQogICAgIC8vIHZhbGlkIGluZGljZXMgd2lsbCBuZXZlciBsb29rIGluIHRoZSBuYW1l
ZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKHZtLCBwcm9wZXJ0eU5hbWUpKSB7CkBAIC01MjAs
NyArNTIwLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJl
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOwogICAgIHZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdElu
ZGV4TGlrZVB1dERpcmVjdCk7CiAKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDIxZDBiY2ZiMzAz
YTA2NjAzNjUzNWY3YTJmYWExYTUwY2Y4N2UwOTcuLjRiOGZjZjZkZWU0NTgyZTEzYTRkYzVkZTI2
YmI1NGI3ZGExY2JmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUnVuTG9vcFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpjYW5jZWxUaW1lcihKU1J1bkxvb3BUaW1lciYgdGltZXIpCiAgICAgZGF0YS50
aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDBfcywgc2NoZWR1bGVUaW1lIC0gTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSkpOwogfQogCi1PcHRpb25hbDxTZWNvbmRz
PiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYg
dGltZXIpCitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0
aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKIHsKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9tYXBwaW5nLmZpbmQodGltZXIubV9hcGlM
b2NrKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBKU1J1bkxvb3BUaW1lcjo6fkpTUnVuTG9vcFRpbWVy
KCkKIHsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6OnRpbWVVbnRpbEZp
cmUoKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBKU1J1bkxvb3BUaW1lcjo6dGltZVVudGlsRmly
ZSgpCiB7CiAgICAgcmV0dXJuIE1hbmFnZXI6OnNoYXJlZCgpLnRpbWVVbnRpbEZpcmUoKnRoaXMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29w
VGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgK
aW5kZXggYTM1NzczOWEzMTBmNGIxY2VlMDQ4ODAwMzdkYmUyOWI4MmY0YTcyMS4uNDJlMmQyZjY5
ODdmZjkwMTBmNzc1MWQ5YTdjMGJmYzY0YWEzOWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKEpTUnVuTG9vcFRpbWVyJiwgU2Vjb25kcyBuZXh0
RmlyZVRpbWUpOwogICAgICAgICB2b2lkIGNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJik7CiAK
LSAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVVudGlsRmlyZShKU1J1bkxvb3BUaW1lciYp
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVVbnRpbEZpcmUoSlNSdW5Mb29w
VGltZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIExvY2sgbV9sb2NrOwpAQCAtOTYsNyAr
OTYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRUaW1lclNldE5v
dGlmaWNhdGlvbihUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKFRpbWVyTm90aWZpY2F0aW9uQ2Fs
bGJhY2spOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVVu
dGlsRmlyZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
dGltZVVudGlsRmlyZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNv
bmRzIHNfZGVjYWRlIHsgNjAgKiA2MCAqIDI0ICogMzY1ICogMTAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBjNGQzODViMmFjY2I1NzY0MzBjYjc4
NDA5ODQzMDAzNTQ3NDk0NTA0Li5hNWNlN2QxOGViYmM2YzNkZDg1ZGE5MzNmNjk2NjAwYzA0NzVj
NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00
MjUsNyArNDI1LDcgQEAgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8
IGxlbmd0aCgpKSB7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXRJbmRleChn
bG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggM2Y1OWJhYWM4ZDRl
OTVlYjYxNjZhODQ3OGM1NzNlNmU0MjJlZTBhNS4uNjY5MmYwNTViM2Y4YWUwNTE3MmQ4Yzg4YzQ5
OTIxZjlhNGVmMTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CkBAIC05NDYsNyArOTQ2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgp
IDwgbGVuZ3RoKCkpIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgudmFsdWUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVy
YWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHAKaW5kZXggOWRhZGFmYzg0ZGY3MTU4YjM4ZWE2Y2Q3ODY4MTE0OTViMzRmZGY1My4uYzg3
ZWJhMDk3MGNkMTNkYzA2ZTM3NTExYmUyY2YyMzA0MjE5M2YzMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTEyMDIsNyArMTIwMiw3
IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGlu
aXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0LCBtX251bGxPckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA6IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0U3RhY2subGFzdCgpLnB1dChtX2dsb2JhbE9iamVjdCwgaWRlbnQsIGxhc3RWYWx1ZSwg
c2xvdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KGlkZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
bV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBpZGVudCwgbGFzdFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YWNoaW5lQ29udGV4dC5oCmluZGV4IGRkMjliMDNlY2NhOThjNjBmM2FiZmUyNGJiZWRlMWUyYWFk
OTMyZTUuLmFmMGU1ZTlhMDliODQyYmI2NDk2ZDgxNTU2NDhhNjExNDNmZGJlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaApAQCAtNDUsNyAr
NDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IFQgZnJhbWVQb2ludGVyKGNvbnN0
IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHZvaWQg
c2V0RnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgVCk7CiBpbmxpbmUgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25z
dCBQbGF0Zm9ybVJlZ2lzdGVycyYpOwogaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRm
b3JtUmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOwot
aW5saW5lIE9wdGlvbmFsPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BD
UHRyVGFnPj4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7Citp
bmxpbmUgc3RkOjpvcHRpb25hbDxNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3Rl
cnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYp
OwogaW5saW5lIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOwogCiB0ZW1wbGF0ZTxzaXpl
X3QgTj4gdm9pZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlckltcGwo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB9CiAjZW5kaWYgLy8gIVVTRShQTEFURk9STV9SRUdJ
U1RFUlNfV0lUSF9QUk9GSUxFKQogCi1pbmxpbmUgT3B0aW9uYWw8TWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+PiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9pbnRl
cihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKICNpZiBVU0UoUExBVEZPUk1fUkVH
SVNURVJTX1dJVEhfUFJPRklMRSkKICAgICB2b2lkKiB2YWx1ZSA9IFdURl9SRUFEX1BMQVRGT1JN
X1JFR0lTVEVSU19QQ19XSVRIX1BST0ZJTEUocmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggNjMxNzE3ZjkwYTQ5MTMwNmU0NTRjMjcxMTczOGJm
MmVlYTRmMDZhNi4uYWYyODI5YWJiY2UzZDcyOGJmMzBiZjk2MjUxMDc1MTkyOWNlODE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtMTc4LDcgKzE3
OCw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFVDUFVTdHJpY3RJbnQzMiB0b1VDUFVTdHJp
Y3RJbnQzMihpbnQzMl90IHZhbHVlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxVQ1BVU3RyaWN0
SW50MzI+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwogfQogCi1pbmxpbmUgT3B0aW9u
YWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3Qo
ZG91YmxlIGNvbnN0YW50KQogewogICAgIC8vIE5vICJ3ZWlyZCIgbnVtYmVycyAoTmFOLCBEZW5v
cm1hbCwgZXRjKS4KICAgICBpZiAoIWNvbnN0YW50IHx8ICFzdGQ6Omlzbm9ybWFsKGNvbnN0YW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAppbmRleCBiMTdmNTkzNmZlZmM5NjM4ZWNmNDlhZWViZWM4NzBjMDg2NGNlYmM4Li45
Y2E0NGQyYzQ2N2VhNTg3ZjhiN2JlN2RjNjFjYWY5MWY2NThjYzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC05MTks
NyArOTE5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9ySXMs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOwogfQogCi1KU0FycmF5KiBvd25Qcm9w
ZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwg
UHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2Rl
IGRvbnRFbnVtUHJvcGVydGllc01vZGUsIE9wdGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5k
PiBraW5kKQorSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9k
ZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlLCBzdGQ6Om9w
dGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXNLaW5kPiBraW5kKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaAppbmRleCA1YzI4Yjc5YWMxOTM4OGNmYmZkYzBiYjVhYzYyZDBjYjA5MGRkOWQxLi43NGUw
N2EwNmNjMTM2YWE4MGU4ZTQ3ZTNhYTBhZmU5NmFmMDIwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTE2Myw3ICsxNjMs
NyBAQCBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IG9iamVjdENvbnN0cnVjdG9yU2VhbChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiBKU1Zh
bHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
Kik7Ci1KU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCos
IFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUsIE9wdGlvbmFsPENhY2hl
ZFByb3BlcnR5TmFtZXNLaW5kPik7CitKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01v
ZGUsIHN0ZDo6b3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ+KTsKIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKIAogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvcklzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuaAppbmRleCAyZDg0ZGRkNWJhZWMwYzkzOTI0NTI2Nzg3MTExNGZlZGFh
M2Q3Y2VkLi4wYWM3Yzg0ZjRiYjM5MWRhM2U5OTNhMDMxZDYxMjhiZDNkZDY3Nzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNj
b3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZS5oCkBAIC01MCw4ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlQ
cm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKIAogICAgIFZNJiBtX3ZtOwotICAg
IE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKLSAgICBPcHRpb25hbDxEaXNhbGxv
d1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5OworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dH
Qz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dWTUVudHJ5PiBtX2Rp
c2FsbG93Vk1FbnRyeTsKICAgICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAppbmRleCA2ODZjNjZiMzlmNjM4YzY3ZWMzODgxMDk0Y2E0MzFlM2NjNzVjMmIyLi5iOTkxNjQ2
ODhkMzE3ZDE5ODRlMmQwMzk0OTFhMGJmM2U3ZTA3MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCBib29sIG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYmFzZSwgYwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093
blByb3BlcnR5Q2FjaGUgPSB2bS5lbnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7Ci0gICAgaWYg
KE9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9IGhhc093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQg
PSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CiAg
ICAgICAgIEFTU0VSVCgqcmVzdWx0ID09IHRoaXNPYmplY3QtPmhhc093blByb3BlcnR5KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
RXhjZXB0VGVybWluYXRpb24oKTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggMzlkNDIwM2E1MDkzMDNiMzc3
ZWUxNWZkY2RlZGFmZGIxZjNjNGQ3NC4uY2U3MzBmM2JmOTY1ODQ3YzQ4ZDk0MWI1NmNkYmMyZTVm
YmZiYzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApA
QCAtODAxLDkgKzgwMSw5IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1VSU2hpZnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZWZ0LCBKU1ZhCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBsZWZ0VWludDMyID0gbGVmdC50b1VJbnQz
MkFmdGVyVG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbGVmdFVpbnQzMiA9IGxlZnQudG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgT3B0aW9uYWw8dWlu
dDMyX3Q+IHJpZ2h0VWludDMyID0gcmlnaHQudG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHJpZ2h0VWludDMyID0gcmlnaHQu
dG9VSW50MzJBZnRlclRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJp
Z2h0VWludDMyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApp
bmRleCBjY2M5MzBjM2Y5NjFkZWM1Nzk3MmJlMWY1YWFkNmQ3MjJmNzJmNDg0Li41MmY0MjQxMWJh
NTY5ZDlmYjc5NGYwOTA5NTE0NWU0OTMzMTVhNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcApAQCAtNTksMTAgKzU5LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9wdGlvbmFsPFQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0
cmluZyk7CitzdGQ6Om9wdGlvbmFsPFQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZyk7CiAKIHRl
bXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFy
KiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25z
dCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZywgInRydWUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcs
ICJ5ZXMiKSB8fCAhc3RyY21wKHN0cmluZywgIjEiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25z
dCBjaGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdl
OjpJbnQzMj4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25z
U3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBpbnQzMl90
IHZhbHVlOwogICAgIGlmIChzc2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDEpCkBAIC04
MSw3ICs4MSw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nKQogfQogCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6
VW5zaWduZWQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0aW9u
c1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgdW5z
aWduZWQgdmFsdWU7CiAgICAgaWYgKHNzY2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMSkK
QEAgLTkxLDcgKzkxLDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcpCiAKICNpZiBDUFUoQUREUkVTUzY0KSB8fCBPUyhEQVJXSU4p
CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nKQorc3RkOjpvcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2Uo
Y29uc3QgY2hhciogc3RyaW5nKQogewogICAgIHNpemVfdCB2YWx1ZTsKICAgICBpZiAoc3NjYW5m
KHN0cmluZywgIiV6dSIsICZ2YWx1ZSkgPT0gMSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25h
bDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogI2VuZGlm
IC8vIENQVShBRERSRVNTNjQpIHx8IE9TKERBUldJTikKIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQorc3RkOjpv
cHRpb25hbDxPcHRpb25zU3RvcmFnZTo6RG91YmxlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcp
CiB7CiAgICAgZG91YmxlIHZhbHVlOwogICAgIGlmIChzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZh
bHVlKSA9PSAxKQpAQCAtMTEwLDcgKzExMCw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpE
b3VibGU+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9u
YWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblJhbmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcp
CitzdGQ6Om9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRpb25SYW5nZT4gcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nKQogewogICAgIE9wdGlvblJhbmdlIHJhbmdlOwogICAgIGlmIChyYW5nZS5p
bml0KHN0cmluZykpCkBAIC0xMTksNyArMTE5LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6
Ok9wdGlvblJhbmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBsYXRlPD4K
LU9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmc+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZz4gcGFy
c2UoY29uc3QgY2hhciogc3RyaW5nKQogewogICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gbnVsbHB0
cjsKICAgICBpZiAoIXN0cmxlbihzdHJpbmcpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFs
PE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmc+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykK
IH0KIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWw+IHBh
cnNlKGNvbnN0IGNoYXIqIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkdD
TG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm9uZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZywgIm5vIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCAhc3RyY21wKHN0cmluZywgIjAiKSkKICAgICAgICAgcmV0
dXJuIEdDTG9nZ2luZzo6Tm9uZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIG92ZXJyaWRlT3B0
aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIq
IG5hbWUsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoYXZhaWxhYmxlKSB7
Ci0gICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVlID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFQ+IHZhbHVlID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOwogICAg
ICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgIHZhcmlhYmxlID0gdmFsdWUudmFsdWUoKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODQ0LDcgKzg0NCw3IEBAIGJvb2wgT3B0aW9u
czo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNvbnN0IGNoYXIqIGFyZykKICAgICAgICAgaWYgKEF2
YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCiAg
ICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUobmFtZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWls
YWJpbGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRpb25hbDxPcHRpb25zU3RvcmFn
ZTo6dHlwZV8+IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxPcHRpb25zU3RvcmFnZTo6dHlwZV8+IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgdmFsdWUgPSBwYXJzZTxPcHRpb25zU3RvcmFnZTo6dHlwZV8+KHZhbHVlU3RyKTsg
ICAgICAgICAgICBcCiAgICAgICAgIGlmICh2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlLnZh
bHVlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTg2Myw3ICs4NjMsNyBA
QCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpCiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBpbnZlcnRCb29sT3B0aW9uVmFsdWUoY29uc3QgY2hhciogdmFs
dWVTdHIpCiB7Ci0gICAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+IHZhbHVlID0gcGFy
c2U8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+KHZhbHVlU3RyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9w
dGlvbnNTdG9yYWdlOjpCb29sPiB2YWx1ZSA9IHBhcnNlPE9wdGlvbnNTdG9yYWdlOjpCb29sPih2
YWx1ZVN0cik7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIHZhbHVlLnZhbHVlKCkgPyAiZmFsc2UiIDogInRydWUiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAppbmRleCA1ZjE2YjFh
MmEwYmExODgzNmYxZWIwZDU0N2ZlMWNkNWY5ZjllOGI5Li43OTdiZWMwNGE4ZTk0MmNlNjhmOGFk
YjU5N2EwYzRhODllZDRjNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApAQCAtMTAwLDE2ICsxMDAsMTYgQEAgaW5saW5lIFBy
b3BlcnR5RGVzY3JpcHRvciB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1Zh
bHVlIGdldHRlciwgSlMKICAgICAvLyBXZSBhc3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFscmVh
ZHkgZG9uZS4KICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYzsKIAotICAgIGlmIChPcHRpb25h
bDxib29sPiBlbnVtZXJhYmxlID0gYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkpCisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJsZSA9IGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKQog
ICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoZW51bWVyYWJsZS52YWx1ZSgpKTsKIAotICAgIGlm
IChPcHRpb25hbDxib29sPiBjb25maWd1cmFibGUgPSBhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgp
KQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0ZXMu
Y29uZmlndXJhYmxlKCkpCiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3VyYWJs
ZS52YWx1ZSgpKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCiAgICAgICAgIGRl
c2Muc2V0VmFsdWUodmFsdWUpOwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0g
YXR0cmlidXRlcy53cml0YWJsZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHdyaXRh
YmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQogICAgICAgICBkZXNjLnNldFdyaXRhYmxlKHdy
aXRhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IDlkNDA1MWM1ZjJm
MmE0MGRhM2JlNjNlZmY4MDllNTA4NWZiOTVlODUuLmUxOTc3NzFlZjFmM2Y4NTMzYTcyODA4NjVj
MzI2NGY3ODgyMzYzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCkBAIC0xMjIsNyArMTIyLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9w
ZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1lIGIpCiAgICAgcmV0dXJuIGEudWlkKCkgIT0gYi51aWQo
KTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1
aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgaWYgKCF1aWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IDViMDY0MjJjYmRhZDMyNzAwYTQz
NTc5MzkwOTAwOWE4MTVjNGVhOWIuLjNiYTI3OGM5Yzc4YjdmZWQ5NjUwYjc0NDUyNDhkOTIzZjk0
NTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CkBAIC0xODgsNyArMTg4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93YXRjaHBvaW50
U2V0OwogICAgIH0KIAotICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0
dHJpYnV0ZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
PiBkb21BdHRyaWJ1dGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fYWRkaXRpb25hbERh
dGFUeXBlID09IEFkZGl0aW9uYWxEYXRhVHlwZTo6RE9NQXR0cmlidXRlKQogICAgICAgICAgICAg
cmV0dXJuIG1fYWRkaXRpb25hbERhdGEuZG9tQXR0cmlidXRlOwpAQCAtMjAwLDcgKzIwMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgc2NvcGVPZmZzZXQ7CiAgICAgfTsKIAotICAgIE9w
dGlvbmFsPE1vZHVsZU5hbWVzcGFjZVNsb3Q+IG1vZHVsZU5hbWVzcGFjZVNsb3QoKSBjb25zdAor
ICAgIHN0ZDo6b3B0aW9uYWw8TW9kdWxlTmFtZXNwYWNlU2xvdD4gbW9kdWxlTmFtZXNwYWNlU2xv
dCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUgPT0gQWRk
aXRpb25hbERhdGFUeXBlOjpNb2R1bGVOYW1lc3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gbV9h
ZGRpdGlvbmFsRGF0YS5tb2R1bGVOYW1lc3BhY2VTbG90OwpAQCAtMzkwLDcgKzM5MCw3IEBAIHBy
aXZhdGU6CiAgICAgQWRkaXRpb25hbERhdGFUeXBlIG1fYWRkaXRpb25hbERhdGFUeXBlIHsgQWRk
aXRpb25hbERhdGFUeXBlOjpOb25lIH07CiAgICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2Jq
ZWN0IHsgZmFsc2UgfTsKIHB1YmxpYzoKLSAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IGRp
c2FsbG93Vk1FbnRyeTsKKyAgICBzdGQ6Om9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxs
b3dWTUVudHJ5OwogcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFu
bm90YXRpb24gZG9tQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCBiMGE3MTM5MGRlMzVjY2M2Y2UwOWU2M2Qy
Y2M0NjRmN2FmYTUyNDU4Li40NDE1OWU1MGM3OTMzYmYyNTg2MTU2ZjhkODhmNDI2MWQwZTYzZjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNh
bXBsZShTZWNvbmRzJiBzdGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUpCiAgICAgICAgIExvY2tlciBt
YWNoaW5lVGhyZWFkc0xvY2tlciB7IG1fdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmdldExvY2so
KSB9OwogICAgICAgICBMb2NrZXIgY29kZUJsb2NrU2V0TG9ja2VyIHsgbV92bS5oZWFwLmNvZGVC
bG9ja1NldCgpLmdldExvY2soKSB9OwogICAgICAgICBMb2NrZXIgZXhlY3V0YWJsZUFsbG9jYXRv
ckxvY2tlciB7IEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpLmdldExvY2soKSB9Owot
ICAgICAgICBPcHRpb25hbDxMb2NrSG9sZGVyPiB3YXNtQ2FsbGVlc0xvY2tlcjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxMb2NrSG9sZGVyPiB3YXNtQ2FsbGVlc0xvY2tlcjsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgIGlmIChXYXNtOjppc1N1cHBvcnRlZCgpKQogICAgICAgICAg
ICAgd2FzbUNhbGxlZXNMb2NrZXIuZW1wbGFjZShXYXNtOjpDYWxsZWVSZWdpc3RyeTo6c2luZ2xl
dG9uKCkuZ2V0TG9jaygpKTsKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmls
ZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgICAgICBpZiAo
T3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVu
cHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5w
cm9jZXNzZWRTdGFja1RyYWNlLnRvcFBDKSkgewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRD
b2RlT3JpZ2luKHRvcENvZGVCbG9jaywgKmNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAg
ICBzdG9yZUNhbGxlZUludG9MYXN0RnJhbWUodW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1sw
XSk7CiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAxOwpAQCAtMTEzMSw3ICsxMTMx
LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJl
YW0mIG91dCkKICAgICAgICAgaWYgKCFzdGFja1RyYWNlLmZyYW1lcy5zaXplKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24gPSBb
Jl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8V2FzbTo6Q29t
cGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlKSAtPiBTdHJpbmcgeworICAgICAgICBh
dXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24gPSBbJl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlv
biBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxXYXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21w
aWxhdGlvbk1vZGUpIC0+IFN0cmluZyB7CiAgICAgICAgICAgICBTdHJpbmcgYnl0ZWNvZGVJbmRl
eDsKICAgICAgICAgICAgIFN0cmluZyBjb2RlQmxvY2tIYXNoOwogICAgICAgICAgICAgU3RyaW5n
IGppdFR5cGU7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJl
cG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogCiAgICAgICAgIFN0YWNrRnJhbWUm
IGZyYW1lID0gc3RhY2tUcmFjZS5mcmFtZXMuZmlyc3QoKTsKICAgICAgICAgYXV0byBmcmFtZURl
c2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRp
b25Gb3JMb2NhdGlvbihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRp
b25Nb2RlKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29k
ZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxv
Y2F0aW9uKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdGFja0ZyYW1l
OjpDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+PiBtYWNoaW5lTG9jYXRpb24gPSBmcmFtZS5tYWNo
aW5lTG9jYXRpb24pIHsKICAgICAgICAgICAgIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5n
KGZyYW1lRGVzY3JpcHRpb24sICIgPC0tICIsCiAgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0
aW9uLT5zZWNvbmQtPmluZmVycmVkTmFtZSgpLmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlv
bihtYWNoaW5lTG9jYXRpb24tPmZpcnN0LCBzdGQ6Om51bGxvcHQpKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCmluZGV4
IGQxNWI5YWQ2Mjk3ZjM2YzQ5ZDQyNzU2MDU0MTMzZTNkMWQxYzc4NTMuLjZiYTkxOWM0MmQyOTNi
OTBkYWU3OWNkYzk2MWI3YjIyYjEyNzg0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgog
ICAgICAgICBDb2RlQmxvY2sqIHZlcmlmaWVkQ29kZUJsb2NrIHsgbnVsbHB0ciB9OwogICAgICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXg7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQot
ICAgICAgICBPcHRpb25hbDxXYXNtOjpJbmRleE9yTmFtZT4gd2FzbUluZGV4T3JOYW1lOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdhc206OkluZGV4T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7CiAj
ZW5kaWYKLSAgICAgICAgT3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGls
YXRpb25Nb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhc206OkNvbXBpbGF0aW9uTW9kZT4g
d2FzbUNvbXBpbGF0aW9uTW9kZTsKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBGcmFtZVR5cGUg
eyAKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSB7IG51bGxwdHIgfTsKICAgICAgICAgSlNPYmplY3QqIGNhbGxlZSB7IG51bGxwdHIg
fTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgIE9wdGlvbmFsPFdhc206OkluZGV4
T3JOYW1lPiB3YXNtSW5kZXhPck5hbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FzbTo6SW5k
ZXhPck5hbWU+IHdhc21JbmRleE9yTmFtZTsKICNlbmRpZgotICAgICAgICBPcHRpb25hbDxXYXNt
OjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21waWxhdGlvbk1vZGU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlOwogCiAgICAg
ICAgIHN0cnVjdCBDb2RlTG9jYXRpb24gewogICAgICAgICAgICAgYm9vbCBoYXNDb2RlQmxvY2tI
YXNoKCkgY29uc3QKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAKICAg
ICAgICAgQ29kZUxvY2F0aW9uIHNlbWFudGljTG9jYXRpb247Ci0gICAgICAgIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRo
aXMgaXMgbm9uLW51bGwgaWYgd2Ugd2VyZSBpbmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNo
aW5lIGZyYW1lIHdlIHdlcmUgaW5saW5lZCBpbnRvLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+PiBtYWNoaW5lTG9jYXRpb247IC8vIFRo
aXMgaXMgbm9uLW51bGwgaWYgd2Ugd2VyZSBpbmxpbmVkLiBJdCByZXByZXNlbnRzIHRoZSBtYWNo
aW5lIGZyYW1lIHdlIHdlcmUgaW5saW5lZCBpbnRvLgogCiAgICAgICAgIGJvb2wgaGFzRXhwcmVz
c2lvbkluZm8oKSBjb25zdCB7IHJldHVybiBzZW1hbnRpY0xvY2F0aW9uLmhhc0V4cHJlc3Npb25J
bmZvKCk7IH0KICAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDJl
ZWQxOWNhYTU3YmNkMTMzMzVjOWRkOWNiOGQzNTU3NTU4ZWNiNjAuLjU0ZjQ2ZTgzMGVkNzMyNmZk
NzJlN2FkM2Q2MjI4ODVjOGJmMzMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC00OTcsNyArNDk3LDcgQEAgQ29kZUJs
b2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkgY29uc3QKICAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChzb3VyY2UoKSwga2luZCk7CiB9
CiAKLU9wdGlvbmFsPGludD4gU2NyaXB0RXhlY3V0YWJsZTo6b3ZlcnJpZGVMaW5lTnVtYmVyKFZN
JiB2bSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBTY3JpcHRFeGVjdXRhYmxlOjpvdmVycmlk
ZUxpbmVOdW1iZXIoVk0mIHZtKSBjb25zdAogewogICAgIGlmIChpbmhlcml0czxGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBGdW5jdGlvbkV4ZWN1
dGFibGUqPih0aGlzKS0+b3ZlcnJpZGVMaW5lTnVtYmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKaW5kZXggZDBmMWZjZGRkYTcxOTkx
ODVlODNmNDE4ZWRjMmRkYTcwOTBmOGQ1ZC4uZjRiZWE3MDhjYzRjODI4YTY4OWEzOWI3MjhmYmQ2
MWM4OGQyYjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3Rh
cnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5zdGFydENvbHVtbigpLm9uZUJhc2Vk
SW50KCk7IH0KICAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyKFZNJikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlcihWTSYpIGNvbnN0OwogICAg
IHVuc2lnbmVkIHR5cGVQcm9maWxpbmdTdGFydE9mZnNldChWTSYpIGNvbnN0OwogICAgIHVuc2ln
bmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQoVk0mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCA5ZTkzZjhiMjlmMWZjY2JkOTA5
MWMwMTIzZTQ1MjVlODgwMTViMWZlLi42ZWUxYzViOTJjZDU2OTFjZjNlODE2NDNhNmUxOWJlNDM2
MThiOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU3RhY2tGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1
bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0CiAgICAgbV9jb2RlQmxv
Y2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4LCBkaXZv
dCwgdW51c2VkU3RhcnRPZmZzZXQsIHVudXNlZEVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKIAog
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCk7Ci0gICAgaWYgKE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gZXhl
Y3V0YWJsZS0+b3ZlcnJpZGVMaW5lTnVtYmVyKG1fY29kZUJsb2NrLT52bSgpKSkKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IGV4ZWN1dGFibGUtPm92ZXJy
aWRlTGluZU51bWJlcihtX2NvZGVCbG9jay0+dm0oKSkpCiAgICAgICAgIGxpbmUgPSBvdmVycmlk
ZUxpbmVOdW1iZXIudmFsdWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggODRmMmM1YmJmN2MxMjg2YWRhZGVjYmJhOTNmODEy
M2M1MTk0NTJhOS4uNDU3Njk3YzdlYzljZWQ4OWNhOWViZWY3NGVlNDdiOGE0YzdhNGIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKIAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKSAKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHB1dEJ5SW5kZXgoY2VsbCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNPYmplY3Q6OnB1dChjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdPYmplY3QqIG9iamUKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKICAgICAgICAgaWYgKG9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRl
eChpbmRleC52YWx1ZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEz
MSw3ICsxMzEsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcgogICAgIFN0cmluZ09iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5j
YW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggOWNkZTQ2MzQxNzIzYzdlNDJmMWY5MThkNzc5M2M0
MGVhNTA4ZTRlZi4uZjVmYjc4NWRiYTFmNGQzNWI0M2JiMjc2ZDEyNDFiMWI1MDE5ODlhZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxh
Y2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCByZXBsYWNlVmFsdWUpOwotICAgIE9wdGlvbmFsPENhY2hlZENhbGw+IGNhY2hl
ZENhbGw7CisgICAgc3RkOjpvcHRpb25hbDxDYWNoZWRDYWxsPiBjYWNoZWRDYWxsOwogICAgIFN0
cmluZyByZXBsYWNlU3RyaW5nOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOb25lKSB7CiAgICAgICAgIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IDA3YTZhMzAyY2QyYTQ5OTIyYjQ4NjljOTBlY2YzMzY5MjljNTI0Mzcu
LjFjYWU4MjE5ZGU4NDZlMjI3YTc1YjRkZmEyNGVlMTU3YmNkOGY1NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAg
Ym9vbCBTdHJ1Y3R1cmU6OmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1hdXRvIFN0cnVjdHVyZTo6ZmluZFByb3Bl
cnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0IC0+IE9wdGlvbmFs
PFByb3BlcnR5SGFzaEVudHJ5PgorYXV0byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRy
eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFsPFByb3Bl
cnR5SGFzaEVudHJ5PgogewogICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2xhc3NJ
bmZvKCk7IGluZm87IGluZm8gPSBpbmZvLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoY29u
c3QgSGFzaFRhYmxlKiBwcm9wSGFzaFRhYmxlID0gaW5mby0+c3RhdGljUHJvcEhhc2hUYWJsZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA0NDc1YThi
OWFjMjVmNmI3ZjEwYmUzMWVhNTE2M2Y4MWU2NmUwMjljLi40NWNlMTdmZWM2MjQzNTYzOTM2MDZm
NGUzY2E5ZDQwNjIxYjE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaApAQCAtNjg3LDcgKzY4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiB0YWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIHZhbHVlOwogICAgIH07
Ci0gICAgT3B0aW9uYWw8UHJvcGVydHlIYXNoRW50cnk+IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQ
cm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UHJvcGVydHlIYXNoRW50cnk+
IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIAogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKaW5kZXggNzNlNDNmYTJjMTdhN2Y1
ZTdlM2Q2NzMzZWE1YThjY2UwZjg0ZGUxZC4uY2NmOTA0Zjg4OGM4NDRkYmY5ZjIzNmFiOTdmN2Yx
OGMxYjYyNDJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yVGFibGU7CiBjbGFzcyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFZlY3RvcjxTdHJpbmcsIDQ+IFN0cmluZ1ZlY3RvcjsKLSAgICB0eXBl
ZGVmIFZlY3RvcjxPcHRpb25hbDxTdHJpbmc+LCA0PiBPcHRpb25hbFN0cmluZ1ZlY3RvcjsKKyAg
ICB0eXBlZGVmIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIDQ+IE9wdGlvbmFsU3RyaW5n
VmVjdG9yOwogCiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKICAg
ICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRGVsZXRlZFZhbHVlVGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGJiN2Yx
YzU4YTA2NGMzNGM1ZmZkODVjYzA5ODFmNjQ2OTA1ZGMwOGEuLjk1ZTY3YWUwZjI1N2YyY2YzZTJj
YjlhZDNjNDlhNzlhZDc3NzM2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaApAQCAtNTcsNyArNTcsNyBAQCB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHRvTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotT3B0aW9uYWw8dHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNW
YWx1ZSB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ0ludDY0QWRhcHRvcj4gfHwgc3RkOjpp
c19zYW1lX3Y8QWRhcHRvciwgQmlnVWludDY0QWRhcHRvcj4pIHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0JpZ0ludCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZWRBcnJheUFkYXB0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
ZEFycmF5QWRhcHRvcnMuaAppbmRleCA1MzQ5ZGYxNmEyZWM0NDFlZTQ2MTJlM2M5NjY0OGZmODNk
MzZlYzI3Li4xNWI2MzE3NWQzMzNhYWM1YjNjN2Q5NDE4NWJjNDVlZDEyY2RiNDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApA
QCAtNzgsMTQgKzc4LDE0IEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAg
ICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOwogICAg
IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRD
b2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRv
TmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAg
ICAgICBpZiAoKHZhbHVlID49IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA+IHN0
YXRpY19jYXN0PHVpbnQzMl90PihtYXhWYWx1ZSkpIHx8IHZhbHVlIDwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4obWluVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
T3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90
IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbVVpbnQz
MldpdGhvdXRDb2VyY2lvbih1aW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1
ZSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgSW50ZWdyYWxUeXBlZEFycmF5
QWRhcHRvciB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRD
b2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9O
YXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCkBAIC0xNDUsMTIgKzE0NSwx
MiBAQCBzdHJ1Y3QgRmxvYXRUeXBlZEFycmF5QWRhcHRvciB7CiAgICAgICAgIHJldHVybiBPdGhl
ckFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3Qg
dmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJX
aXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+
IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9u
KGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSB8fCBz
dGQ6OmlzaW5mKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2
YWx1ZSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3Igewog
ICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldp
dGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5
cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAg
ewogICAgICAgICBpZiAodmFsdWUgPiBtYXhWYWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMwNSw3ICszMDUsNyBAQCBzdHJ1Y3Qg
VWludDhDbGFtcGVkQWRhcHRvciB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2
YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURv
dWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIHVpbnQ4X3QgaW50ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZh
bHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0MmMzMzVjYzAxYjgyMDg1NjYxNjE2
YmJmYTI1MDNiYmUwNTdlYTBhLi45OGE3NWM2ZjhiOGRiMjc5ZDAyNmYzMmViZjNiYmNjNTQxYmFi
MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwOTYsNyArMTA5Niw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgbG9nRXZlbnQo
Q29kZUJsb2NrKiwgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgRnVuYyYgZnVuYyk7CiAKLSAg
ICBPcHRpb25hbDxSZWZQdHI8VGhyZWFkPj4gb3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBt
X2FwaUxvY2stPm93bmVyVGhyZWFkKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxUaHJl
YWQ+PiBvd25lclRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBpTG9jay0+b3duZXJUaHJlYWQo
KTsgfQogCiAgICAgVk1UcmFwcyYgdHJhcHMoKSB7IHJldHVybiBtX3RyYXBzOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZmRlYzZiZjEyMzQyMzNj
YWFlMDI0OGFiODVlYWFjMTViMjJmYTZiMC4uOWZlZGM1MWE2ZDZjZTExYWNjOGFlODc0YWVlNWFh
MTgyMzRiZmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1U
cmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB7IH0KIAogcHVibGljOgotICAgIHN0YXRp
YyBPcHRpb25hbDxTaWduYWxDb250ZXh0PiB0cnlDcmVhdGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z2lzdGVycykKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaWduYWxDb250ZXh0PiB0cnlDcmVh
dGUoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKICAgICB7CiAgICAgICAgIGF1dG8gaW5z
dHJ1Y3Rpb25Qb2ludGVyID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdp
c3RlcnMpOwogICAgICAgICBpZiAoIWluc3RydWN0aW9uUG9pbnRlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBlNjkwYTY1ZTJkM2Y2ZTRlNWRmMDk5
YmZmM2NmYThhMGU4ZmI1OTBjLi5mZjEzNjViODc0OTIyNTY5MmI3YWQ1NGRkOWVmMjdlNzM3NmM0
MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC02
MDksNyArNjA5LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoaW5kZXggJiYgaW5k
ZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc051bWJlcih0aGlzT2JqZWN0LT5tX3ZlY3Rvcltp
bmRleC52YWx1ZSgpXSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggMTdj
MmE1ZjM4YzQ0NWRkYjA0Zjc2MDQ0YjZkY2U5Njg5NzNjMGY4MS4uYTJkOTU0ZmFmZmQ5YzU1YTli
YWY5OWFjMDAzMDMwYzg0YThjNTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcApAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIHsgfQogCiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNpZ25hbENvbnRleHQ+
IHRyeUNyZWF0ZShQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNpZ25hbENvbnRleHQ+IHRyeUNyZWF0ZShQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
aXN0ZXJzKQogICAgIHsKICAgICAgICAgYXV0byBpbnN0cnVjdGlvblBvaW50ZXIgPSBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycyk7CiAgICAgICAgIGlmICghaW5z
dHJ1Y3Rpb25Qb2ludGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAKaW5kZXggMDBhMTdjNDA2NGE2MDMwYzNlNGE0Zjk2NzcyMTRhNTdh
N2JmNzk5MC4uZjRhNmRhOTY5MjU1MDliZjE1NzkzYzI0NTIzNWY1MzM5ZmQ5ODIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBA
IC0yMTYzLDcgKzIxNjMsNyBAQCBpbmxpbmUgVHlwZWRUbXAgQWlySVJHZW5lcmF0b3I6OmVtaXRB
dG9taWNMb2FkT3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVAogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEIzOjpBaXI6Ok9wY29kZT4gb3Bjb2RlOwogICAgIGlmIChpc1g4NigpIHx8IGlz
QVJNNjRFKCkpCiAgICAgICAgIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0Fk
ZCwgYWNjZXNzV2lkdGgob3ApKTsKICAgICBCMzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2Rl
ID0gT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQWRkLCBhY2Nlc3NXaWR0aChvcCkpOwpAQCAt
MjIzNSw3ICsyMjM1LDcgQEAgaW5saW5lIHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRBdG9taWNT
dG9yZU9wKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1ZVR5cGUKICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8QjM6OkFpcjo6T3Bjb2RlPiBvcGNvZGU7CisgICAgc3RkOjpv
cHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKICAgICBpZiAoaXNYODYoKSB8fCBpc0FS
TTY0RSgpKQogICAgICAgICBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGFj
Y2Vzc1dpZHRoKG9wKSk7CiAgICAgQjM6OkFpcjo6T3Bjb2RlIG5vbkF0b21pY09wY29kZSA9IEIz
OjpBaXI6Ok5vcDsKQEAgLTIyODksNyArMjI4OSw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9y
OjplbWl0QXRvbWljQmluYXJ5Uk1XT3AoRXh0QXRvbWljT3BUeXBlIG9wLCBUeXBlIHZhbHVlVHlw
CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEIzOjpBaXI6Ok9wY29kZT4gb3Bj
b2RlOworICAgIHN0ZDo6b3B0aW9uYWw8QjM6OkFpcjo6T3Bjb2RlPiBvcGNvZGU7CiAgICAgQjM6
OkFpcjo6T3Bjb2RlIG5vbkF0b21pY09wY29kZSA9IEIzOjpBaXI6Ok5vcDsKICAgICBCMzo6Q29t
bXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gQjM6Ok5vdENvbW11dGF0aXZlOwogICAgIHN3aXRj
aCAob3ApIHsKQEAgLTI0ODYsNyArMjQ4Niw3IEBAIFR5cGVkVG1wIEFpcklSR2VuZXJhdG9yOjpl
bWl0QXRvbWljQ29tcGFyZUV4Y2hhbmdlKEV4dEF0b21pY09wVHlwZSBvcCwgVHlwZSB2YWx1CiAK
ICAgICBtX2N1cnJlbnRCbG9jayA9IGZhaWx1cmVDYXNlOwogICAgIChbJl0gewotICAgICAgICBP
cHRpb25hbDxCMzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxC
Mzo6QWlyOjpPcGNvZGU+IG9wY29kZTsKICAgICAgICAgaWYgKGlzWDg2KCkgfHwgaXNBUk02NEUo
KSkKICAgICAgICAgICAgIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwg
YWNjZXNzV2lkdGgpOwogICAgICAgICBCMzo6QWlyOjpPcGNvZGUgbm9uQXRvbWljT3Bjb2RlID0g
T1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQWRkLCBhY2Nlc3NXaWR0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMTU4Nzhl
MzYzNDBkMjRhMWY5MTI1MjEyMGZlYzFmMGI0OTI5NDdhNi4uMTA2Y2E1ZmQ1NWQ2ZGJkMmEzYWYx
ODM4NDVjYTRhNzk4NzdiZDZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKSB7IH0KICAgICB2b2lkIGRpZFBvcFZhbHVlRnJv
bVN0YWNrKCkgeyB9CiAKLSAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJp
dHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBzdGQ6Om51bGxvcHQpOworICAgIFZhbHVlKiBjb25zdGFu
dChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgc3RkOjpvcHRpb25hbDxPcmlnaW4+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICBWYWx1ZSogZnJhbWVQb2ludGVyKCk7CiAgICAgdm9pZCBpbnNlcnRDb25z
dGFudHMoKTsKIApAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdEV4
Y2VwdGlvbkNoZWNrKENDYWxsSGVscGVycyYgaml0LCBFeGNlcHRpb25UeXBlIHR5cGUpCiAgICAg
fSk7CiB9CiAKLVZhbHVlKiBCM0lSR2VuZXJhdG9yOjpjb25zdGFudChCMzo6VHlwZSB0eXBlLCB1
aW50NjRfdCBiaXRzLCBPcHRpb25hbDxPcmlnaW4+IG1heWJlT3JpZ2luKQorVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmNvbnN0YW50KEIzOjpUeXBlIHR5cGUsIHVpbnQ2NF90IGJpdHMsIHN0ZDo6b3B0
aW9uYWw8T3JpZ2luPiBtYXliZU9yaWdpbikKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fY29uc3Rh
bnRQb29sLmVuc3VyZShWYWx1ZUtleShvcGNvZGVGb3JDb25zdGFudCh0eXBlKSwgdHlwZSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oYml0cykpLCBbJl0gewogICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
bV9wcm9jLmFkZENvbnN0YW50KG1heWJlT3JpZ2luID8gKm1heWJlT3JpZ2luIDogb3JpZ2luKCks
IHR5cGUsIGJpdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcAppbmRleCAyYTUzZDdlNmVkMjM2YWZmYmZjMDMzMjZmMzcxM2Q3ZmY5ZDdiZDkzLi5jNTQ5
MjQyOTE5ZmY1NGVlMTEyOGQxYjYzNjYwNWM4YzRiOWM0MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQg
RW50cnlQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAg
ICBpZiAoIWhhc1dvcmsoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8VHJhY2VT
Y29wZT4gdHJhY2VTY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRyYWNlU2NvcGU+IHRyYWNlU2Nv
cGU7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVRyYWNlUG9pbnRzKCkpCiAgICAgICAgIHRyYWNlU2Nv
cGUuZW1wbGFjZShXZWJBc3NlbWJseUNvbXBpbGVTdGFydCwgV2ViQXNzZW1ibHlDb21waWxlRW5k
KTsKICAgICBUaHJlYWRDb3VudEhvbGRlciBob2xkZXIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcAppbmRleCA2YTJiMGYzM2Y1ZTViODY2MmE2NDc1MTBm
MmVlMWU3OGFlZTE4NzgxLi5mNjBhNDU2NTA5NDU1MTQ5YmUzNjViNGE4MjA2MTU3NzRkODhjOTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmNwcApAQCAtMzQsNyAr
MzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1TZWdtZW50OjpQ
dHIgU2VnbWVudDo6Y3JlYXRlKE9wdGlvbmFsPEkzMkluaXRFeHByPiBvZmZzZXQsIHVpbnQzMl90
IHNpemVJbkJ5dGVzLCBLaW5kIGtpbmQpCitTZWdtZW50OjpQdHIgU2VnbWVudDo6Y3JlYXRlKHN0
ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+IG9mZnNldCwgdWludDMyX3Qgc2l6ZUluQnl0ZXMsIEtp
bmQga2luZCkKIHsKICAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxC
eXRlc0NoZWNrZWQgPSBzaXplSW5CeXRlczsKICAgICB0b3RhbEJ5dGVzQ2hlY2tlZCArPSBzaXpl
b2YoU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXgg
ZmE5NmIzNGQ4NGIxNzA3NjJmZDY5N2E1MTc1NmZjOTA5ZDVlMGQ5Mi4uODc1NWExMzZjY2M5YjU3
MDQ1YmVjNzBkMzk0MGE3MDIwNTcwOTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaApAQCAtMjI2LDcgKzIyNiw3IEBAIHN0cnVjdCBTZWdtZW50IHsKIAogICAgIEtp
bmQga2luZDsKICAgICB1aW50MzJfdCBzaXplSW5CeXRlczsKLSAgICBPcHRpb25hbDxJMzJJbml0
RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CisgICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zm
c2V0SWZBY3RpdmU7CiAgICAgLy8gQnl0ZXMgYXJlIGFsbG9jYXRlZCBhdCB0aGUgZW5kLgogICAg
IHVpbnQ4X3QmIGJ5dGUodWludDMyX3QgcG9zKQogICAgIHsKQEAgLTIzNiw3ICsyMzYsNyBAQCBz
dHJ1Y3QgU2VnbWVudCB7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFNlZ21lbnQqKTsKICAg
ICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxTZWdtZW50LCBkZWNsdHlwZSgmU2VnbWVudDo6ZGVz
dHJveSk+IFB0cjsKLSAgICBzdGF0aWMgU2VnbWVudDo6UHRyIGNyZWF0ZShPcHRpb25hbDxJMzJJ
bml0RXhwcj4sIHVpbnQzMl90LCBLaW5kKTsKKyAgICBzdGF0aWMgU2VnbWVudDo6UHRyIGNyZWF0
ZShzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiwgdWludDMyX3QsIEtpbmQpOwogCiAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQgPT0gS2luZDo6QWN0aXZlOyB9CiAgICAg
Ym9vbCBpc1Bhc3NpdmUoKSBjb25zdCB7IHJldHVybiBraW5kID09IEtpbmQ6OlBhc3NpdmU7IH0K
QEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgICAgIERlY2xhcmVkLAog
ICAgIH07CiAKLSAgICBFbGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlw
ZSBlbGVtZW50VHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+IHRhYmxlSW5kZXgsIE9wdGlvbmFsPEkz
MkluaXRFeHByPiBpbml0RXhwcikKKyAgICBFbGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFi
bGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdGFibGVJ
bmRleCwgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHIpCiAgICAgICAgIDoga2lu
ZChraW5kKQogICAgICAgICAsIGVsZW1lbnRUeXBlKGVsZW1lbnRUeXBlKQogICAgICAgICAsIHRh
YmxlSW5kZXhJZkFjdGl2ZShXVEZNb3ZlKHRhYmxlSW5kZXgpKQpAQCAtMjc1LDggKzI3NSw4IEBA
IHN0cnVjdCBFbGVtZW50IHsKIAogICAgIEtpbmQga2luZDsKICAgICBUYWJsZUVsZW1lbnRUeXBl
IGVsZW1lbnRUeXBlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0YWJsZUluZGV4SWZBY3RpdmU7
Ci0gICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IG9mZnNldElmQWN0aXZlOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHRhYmxlSW5kZXhJZkFjdGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEkz
MkluaXRFeHByPiBvZmZzZXRJZkFjdGl2ZTsKIAogICAgIC8vIEluZGV4IG1heSBiZSBudWxsRnVu
Y0luZGV4LgogICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwpAQCAtMjkwLDcg
KzI5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCEqdGhpcyk7CiAgICAgfQogCi0gICAg
VGFibGVJbmZvcm1hdGlvbih1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4
aW11bSwgYm9vbCBpc0ltcG9ydCwgVGFibGVFbGVtZW50VHlwZSB0eXBlKQorICAgIFRhYmxlSW5m
b3JtYXRpb24odWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11
bSwgYm9vbCBpc0ltcG9ydCwgVGFibGVFbGVtZW50VHlwZSB0eXBlKQogICAgICAgICA6IG1faW5p
dGlhbChpbml0aWFsKQogICAgICAgICAsIG1fbWF4aW11bShtYXhpbXVtKQogICAgICAgICAsIG1f
aXNJbXBvcnQoaXNJbXBvcnQpCkBAIC0zMDMsMTMgKzMwMywxMyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJv
b2wgaXNJbXBvcnQoKSBjb25zdCB7IHJldHVybiBtX2lzSW1wb3J0OyB9CiAgICAgdWludDMyX3Qg
aW5pdGlhbCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbDsgfQotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQogICAg
IFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFR5
cGUgd2FzbVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVGFibGVFbGVtZW50VHlwZTo6
RnVuY3JlZiA/IFR5cGVzOjpGdW5jcmVmIDogVHlwZXM6OkV4dGVybnJlZjsgfQogCiBwcml2YXRl
OgogICAgIHVpbnQzMl90IG1faW5pdGlhbDsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbV9tYXhp
bXVtOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4aW11bTsKICAgICBib29sIG1f
aXNJbXBvcnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBU
YWJsZUVsZW1lbnRUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggYzAxNjVhOGQ5ZWRhOWEyZmMxODkxMTg3
MTRiMDBmNmEyM2Y2OWNmZC4uMzc2NmYyYTFmMTE2NjhhMzQ1MDE3NTJhOGZhYjRmNzllNjkxMzcz
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmgKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgVmVjdG9y
PEZ1bmN0aW9uRGF0YT4gZnVuY3Rpb25zOwogCiAgICAgVmVjdG9yPEV4cG9ydD4gZXhwb3J0czsK
LSAgICBPcHRpb25hbDx1aW50MzJfdD4gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgVmVjdG9y
PFNlZ21lbnQ6OlB0cj4gZGF0YTsKICAgICBWZWN0b3I8RWxlbWVudD4gZWxlbWVudHM7CiAgICAg
VmVjdG9yPFRhYmxlSW5mb3JtYXRpb24+IHRhYmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKaW5kZXggNjg5YTA5ZmRjM2NjODkyOTE4ZDIxMmYzNjYy
Zjc2ZmJjZGFhM2M0Ny4uZmU2M2NmNTU0NzM2NmZjMTc0MGMxZjBjNzBiYTgxYmU3NTM2YTg4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lU2Vj
dGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBzZXRIYXNoKGNvbnN0IE9wdGlvbmFsPENTdHJpbmc+
ICZoYXNoKQorICAgIHZvaWQgc2V0SGFzaChjb25zdCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+ICZo
YXNoKQogICAgIHsKICAgICAgICAgbW9kdWxlSGFzaCA9IE5hbWUoaGFzaCA/IGhhc2gtPmxlbmd0
aCgpIDogMyk7CiAgICAgICAgIGlmIChoYXNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYmZkYTliM2IwZWZlNDYwMjRlNGM3
ZWE2YWVlM2FjMzI5NjVhNTViMC4uNTExZmNkOGMwMGMyNzJhNzY0OTVlMzk5NGQwMDRlNzdlY2Q0
ZWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5j
dGlvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQzMl90JiBpbml0aWFsLCBPcHRpb25h
bDx1aW50MzJfdD4mIG1heGltdW0sIGJvb2wmIGlzU2hhcmVkLCBMaW1pdHNUeXBlIGxpbWl0c1R5
cGUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VSZXNpemFibGVM
aW1pdHModWludDMyX3QmIGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVt
LCBib29sJiBpc1NoYXJlZCwgTGltaXRzVHlwZSBsaW1pdHNUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0
CiB7CiAgICAgQVNTRVJUKCFtYXhpbXVtKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VUYWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVz
dWx0CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlICE9IHN0YXRpY19jYXN0PGludDhfdD4o
VHlwZUtpbmQ6OkZ1bmNyZWYpICYmIHR5cGUgIT0gc3RhdGljX2Nhc3Q8aW50OF90PihUeXBlS2lu
ZDo6RXh0ZXJucmVmKSwgIlRhYmxlIHR5cGUgc2hvdWxkIGJlIGZ1bmNyZWYgb3IgYW55cmVmLCBn
b3QgIiwgdHlwZSk7CiAKICAgICB1aW50MzJfdCBpbml0aWFsOwotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBtYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAg
Ym9vbCBpc1NoYXJlZCA9IGZhbHNlOwogICAgIFBhcnRpYWxSZXN1bHQgbGltaXRzID0gcGFyc2VS
ZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSwgaXNTaGFyZWQsIExpbWl0c1R5cGU6OlRh
YmxlKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpbWl0cykpCkBAIC0yNDgsNyArMjQ4LDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZU1lbW9yeUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgYm9vbCBpc1NoYXJlZCA9IGZhbHNlOwogICAgIHsKICAgICAgICAgdWlu
dDMyX3QgaW5pdGlhbDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgICAgIFBhcnRpYWxSZXN1
bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSwgaXNTaGFy
ZWQsIExpbWl0c1R5cGU6Ok1lbW9yeSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbGltaXRzKSkK
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKGxpbWl0cy5lcnJvcigp
KSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQo
KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJ
bmRleCA9IDA7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRl
RWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8STMy
SW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhw
cj4gaW5pdEV4cHI7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNl
STMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihpbml0RXhwcikpOwogCiAgICAgICAgICAgICB1
aW50MzJfdCBpbmRleENvdW50OwpAQCAtNDMwLDcgKzQzMCw3IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxl
bWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOwog
Ci0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGlu
aXRFeHByKSk7CiAKICAgICAgICAgICAgIHVpbnQ4X3QgZWxlbWVudEtpbmQ7CkBAIC00NjcsNyAr
NDY3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVz
dWx0CiAgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7CiAgICAg
ICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4
KHRhYmxlSW5kZXgpKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRF
eHByOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CiAg
ICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHJGb3JF
bGVtZW50U2VjdGlvbihpbml0RXhwcikpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENv
dW50OwpAQCAtNTA0LDcgKzUwNCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVs
ZW1lbnQgdGFibGUgaW5kZXgiKTsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJ
TFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOwogCi0gICAgICAgICAgICBP
cHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJf
RkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGluaXRFeHByKSk7CiAKICAg
ICAgICAgICAgIFR5cGUgcmVmVHlwZTsKQEAgLTY0MSw3ICs2NDEsNyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90IHRhYmxlSW5kZXgpIC0+IFBh
cnRpYWxSZXN1bAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByLCBBU0NJSUxpdGVy
YWwgZmFpbE1lc3NhZ2UpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VJMzJJbml0RXhwcihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIsIEFTQ0lJ
TGl0ZXJhbCBmYWlsTWVzc2FnZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHVpbnQ4X3QgaW5p
dE9wY29kZTsKICAgICB1aW50NjRfdCBpbml0RXhwckJpdHM7CkBAIC02NTMsNyArNjUzLDcgQEAg
YXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHBy
PiYgaW5pdEV4cHIsIEFTQ0lJTGl0ZXIKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihPcHRpb25hbDxJMzJJ
bml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRF
eHByPiYgaW5pdEV4cHIpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXR1cm4gcGFyc2VJMzJJ
bml0RXhwcihpbml0RXhwciwgIkVsZW1lbnQgaW5pdF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIi
X3MpOwogfQpAQCAtNzIwLDcgKzcyMCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVt
ZW50U2VnbWVudFZlY3Rvck9mSW5kZXhlcyhWZWN0b3I8dWludDMyX3Q+JiByZXN1bHQsCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9y
RGF0YVNlY3Rpb24oT3B0aW9uYWw8STMySW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJl
c3VsdAorYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24o
c3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0CiB7
CiAgICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIsICJEYXRhIGluaXRfZXhwciBt
dXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKIH0KQEAgLTc1MCw3ICs3NTAsNyBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlRGF0YSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIGNvbnN0
IHVpbnQzMl90IG1lbW9yeUluZGV4ID0gbWVtb3J5SW5kZXhPckRhdGFGbGFnOwogICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtZW1vcnlJbmRleCA+PSBtX2luZm8tPm1lbW9yeUNvdW50
KCksIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQgaGFzIGluZGV4ICIsIG1lbW9yeUlu
ZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBNZW1vcmllcyAiLCBtX2luZm8tPm1l
bW9yeUNvdW50KCkpOwogCi0gICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4
cHI7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckRh
dGFTZWN0aW9uKGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFCeXRlTGVu
Z3RoOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VEYXRhKCkg
LT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YXJVSW50MzIobWVtb3J5SW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIHNlZ21lbnROdW1iZXIsICJ0aCBE
YXRhIHNlZ21lbnQncyBpbmRleCIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRiht
ZW1vcnlJbmRleCA+PSBtX2luZm8tPm1lbW9yeUNvdW50KCksIHNlZ21lbnROdW1iZXIsICJ0aCBE
YXRhIHNlZ21lbnQgaGFzIGluZGV4ICIsIG1lbW9yeUluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhl
IG51bWJlciBvZiBNZW1vcmllcyAiLCBtX2luZm8tPm1lbW9yeUNvdW50KCkpOwogCi0gICAgICAg
ICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckRhdGFTZWN0aW9uKGluaXRFeHByKSk7CiAK
ICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFCeXRlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKaW5kZXggNmY5NTc3NDgzZDM1MGVmMzJh
NDFhM2I5YjE4MmJjNDk4MDIwYzAzYi4uOTFmZDNlZDgzNDIyNWM4MTNlMmQwMTM5MmI0OWU4ZDlj
M2JlMmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5oCkBAIC02NSwxOCArNjUsMTggQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeUhlbHBlcihib29sIGlzSW1wb3J0KTsKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVRhYmxlSGVscGVyKGJvb2wgaXNJ
bXBvcnQpOwogICAgIGVudW0gY2xhc3MgTGltaXRzVHlwZSB7IE1lbW9yeSwgVGFibGUgfTsKLSAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVJlc2l6YWJsZUxpbWl0cyh1
aW50MzJfdCYgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1No
YXJlZCwgTGltaXRzVHlwZSk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+JiBtYXhpbXVtLCBib29sJiBpc1NoYXJlZCwgTGltaXRzVHlwZSk7CiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbml0RXhwcih1aW50OF90JiwgdWludDY0
X3QmLCBUeXBlJiBpbml0RXhwclR5cGUpOwotICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlSTMySW5pdEV4cHIoT3B0aW9uYWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRl
cmFsIGZhaWxNZXNzYWdlKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUkzMkluaXRFeHByKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+JiwgQVNDSUlMaXRlcmFs
IGZhaWxNZXNzYWdlKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZh
bGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oT3B0aW9uYWw8
STMySW5pdEV4cHI+Jik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+
Jik7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtZW50S2lu
ZCh1aW50OF90JiBlbGVtZW50S2luZCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VJbmRleENvdW50Rm9yRWxlbWVudFNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1
bnNpZ25lZCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVt
ZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lvbnMoVmVjdG9yPHVpbnQzMl90PiYsIGNvbnN0IHVu
c2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mSW5kZXhlcyhWZWN0b3I8dWludDMyX3Q+
JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0IHVuc2lnbmVkKTsKIAotICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMySW5pdEV4cHJGb3JEYXRhU2VjdGlvbihPcHRpb25h
bDxJMzJJbml0RXhwcj4mKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUkzMkluaXRFeHByRm9yRGF0YVNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4m
KTsKIAogICAgIHNpemVfdCBtX29mZnNldEluU291cmNlOwogICAgIFJlZjxNb2R1bGVJbmZvcm1h
dGlvbj4gbV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVN0cmVhbWluZ1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3Ry
ZWFtaW5nUGFyc2VyLmNwcAppbmRleCAxZWNhNDM2ZGY1OTJmMDdmMzgzZWQwN2E5ZDE5YjQ3YjU0
ZGNkZGUxLi44OGM2MjdjMTYwYzY5YjZhNzU4YzcyY2QzMTE5ODdlNTQ4MTVmMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApA
QCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwog
ICAgICAgICB9IFwKICAgICB9IHdoaWxlICgwKQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVp
bnQ4X3Q+IHBhcnNlVUludDcoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsIHNp
emVfdCBzaXplKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUlu
dDcoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsIHNpemVfdCBzaXplKQogewog
ICAgIGlmIChvZmZzZXQgPj0gc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg4LDcg
KzE4OCw3IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZVNlY3Rpb25QYXlsb2FkKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpIC0+IFN0YXRlCiAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9uSUQ7
CiB9CiAKLWF1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mZnNldEluQnl0ZXMsIHNpemVfdCByZXF1aXJl
ZFNpemUpIC0+IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4KK2F1dG8gU3RyZWFtaW5nUGFyc2Vy
Ojpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBzaXplX3Qm
IG9mZnNldEluQnl0ZXMsIHNpemVfdCByZXF1aXJlZFNpemUpIC0+IHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PgogewogICAgIGlmIChtX3JlbWFpbmluZy5zaXplKCkgPT0gcmVxdWlyZWRT
aXplKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQgPSBXVEZNb3ZlKG1fcmVtYWlu
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJz
ZXIuaAppbmRleCAxYmNiNTA2YmQ1MWRmMTFlZDRmN2RjMzVjZGVlMTQzMGI0NDVkNjM1Li43YzY0
MDA4Y2JkOWFjMDM5ZmY0YTgxOGViMWNkYmFkNmU3NThlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHJpdmF0ZToKICAgICBTdGF0ZSBwYXJzZUZ1bmN0aW9uU2l6ZSh1aW50MzJfdCk7CiAgICAg
U3RhdGUgcGFyc2VGdW5jdGlvblBheWxvYWQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogCi0gICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QsIHNpemVfdCYsIHNpemVfdCk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNvbnN1bWUoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCwgc2l6ZV90Jiwgc2l6ZV90KTsK
ICAgICBFeHBlY3RlZDx1aW50MzJfdCwgU3RhdGU+IGNvbnN1bWVWYXJVSW50MzIoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCwgc2l6ZV90JiwgSXNFbmRPZlN0cmVhbSk7CiAKICAgICB2b2lk
IG1vdmVUb1N0YXRlSWZOb3RGYWlsZWQoU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UYWJsZS5jcHAKaW5kZXggOWFhNjcwMjMwZWU3MTc5ZThlYjE4YTRjYWQ1N2I0OWY5MTgw
NjNkZS4uOGE1NDc2MTg1NGNjNjFlNWRlZThiMGY0MDMyNGYyODM0OTU0MWMyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQg
VGFibGU6OnNldExlbmd0aCh1aW50MzJfdCBsZW5ndGgpCiAgICAgQVNTRVJUKG1fbWFzayA9PSBX
VEY6Om1hc2tGb3JTaXplKGFsbG9jYXRlZExlbmd0aChsZW5ndGgpKSk7CiB9CiAKLVRhYmxlOjpU
YWJsZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFibGVF
bGVtZW50VHlwZSB0eXBlKQorVGFibGU6OlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGUgdHlwZSkKICAgICA6IG1f
dHlwZSh0eXBlKQogICAgICwgbV9tYXhpbXVtKG1heGltdW0pCiAgICAgLCBtX293bmVyKG51bGxw
dHIpCkBAIC02NSw3ICs2NSw3IEBAIFRhYmxlOjpUYWJsZSh1aW50MzJfdCBpbml0aWFsLCBPcHRp
b25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFibGVFbGVtZW50VHlwZSB0eXBlCiAgICAgfQogfQog
Ci1SZWZQdHI8VGFibGU+IFRhYmxlOjp0cnlDcmVhdGUodWludDMyX3QgaW5pdGlhbCwgT3B0aW9u
YWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGUgdHlwZSkKK1JlZlB0cjxUYWJs
ZT4gVGFibGU6OnRyeUNyZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc1ZhbGlk
TGVuZ3RoKGluaXRpYWwpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc5LDcgKzc5LDcg
QEAgUmVmUHRyPFRhYmxlPiBUYWJsZTo6dHJ5Q3JlYXRlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlv
bmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWIKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1PcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEs
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdy
b3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fb3duZXIpOwogICAgIGlmIChkZWx0YSA9PSAwKQpAQCAtMTkwLDcgKzE5MCw3IEBA
IEZ1bmNSZWZUYWJsZSogVGFibGU6OmFzRnVuY3JlZlRhYmxlKCkKICAgICByZXR1cm4gbV90eXBl
ID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYgPyBzdGF0aWNfY2FzdDxGdW5jUmVmVGFibGUq
Pih0aGlzKSA6IG51bGxwdHI7CiB9CiAKLUZ1bmNSZWZUYWJsZTo6RnVuY1JlZlRhYmxlKHVpbnQz
Ml90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKQorRnVuY1JlZlRhYmxlOjpG
dW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4
aW11bSkKICAgICA6IFRhYmxlKGluaXRpYWwsIG1heGltdW0sIFRhYmxlRWxlbWVudFR5cGU6OkZ1
bmNyZWYpCiB7CiAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHdvcnRoIHRyeWluZyB0byBwcmUt
YWxsb2NhdGUgbWF4aW11bSBoZXJlLiBUaGUgc3BlYyByZWNvbW1lbmRzIGRvaW5nIHNvLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaAppbmRleCAxOGVkNTAwMDM0NzBiOTNlNWNj
NDgzZThhMmM2MjIwZDViODZiN2JmLi5hMDMwNjFhNmFlYzc3Y2Q1NDA1N2E5NmE4ZTFkMDRhMWVi
M2Y1YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaApAQCAtNDUsMTEg
KzQ1LDExIEBAIGNsYXNzIFRhYmxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRhYmxl
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFibGUpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFRhYmxlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFRhYmxlPiB0cnlD
cmVhdGUodWludDMyX3QgaW5pdGlhbCwgT3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW0sIFRhYmxl
RWxlbWVudFR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8VGFibGU+IHRyeUNyZWF0ZSh1aW50MzJf
dCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVsZW1lbnRU
eXBlKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5UYWJsZSgpID0gZGVmYXVsdDsKIAotICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4aW11bTsgfQogICAgIHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFRhYmxlLCBtX2xlbmd0aCk7IH0KQEAgLTc4LDIwICs3OCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXQodWludDMyX3QsIEpTVmFsdWUpOwogICAgIEpTVmFsdWUgZ2V0KHVp
bnQzMl90KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBncm93KHVpbnQzMl90IGRl
bHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Z3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpOwogICAgIHZvaWQgY29w
eShjb25zdCBUYWJsZSogc3JjVGFibGUsIHVpbnQzMl90IGRzdEluZGV4LCB1aW50MzJfdCBzcmNJ
bmRleCk7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKIAogcHJvdGVjdGVkOgotICAg
IFRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJs
ZUVsZW1lbnRUeXBlID0gVGFibGVFbGVtZW50VHlwZTo6RXh0ZXJucmVmKTsKKyAgICBUYWJsZSh1
aW50MzJfdCBpbml0aWFsLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWJsZUVs
ZW1lbnRUeXBlID0gVGFibGVFbGVtZW50VHlwZTo6RXh0ZXJucmVmKTsKIAogICAgIHZvaWQgc2V0
TGVuZ3RoKHVpbnQzMl90KTsKIAogICAgIHVpbnQzMl90IG1fbGVuZ3RoOwogICAgIHVpbnQzMl90
IG1fbWFzazsKICAgICBjb25zdCBUYWJsZUVsZW1lbnRUeXBlIG1fdHlwZTsKLSAgICBjb25zdCBP
cHRpb25hbDx1aW50MzJfdD4gbV9tYXhpbXVtOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG1fbWF4aW11bTsKIAogICAgIE1hbGxvY1B0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4s
IFZNTWFsbG9jPiBtX2pzVmFsdWVzOwogICAgIEpTT2JqZWN0KiBtX293bmVyOwpAQCAtMTExLDcg
KzExMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5zdGFuY2Vz
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmNSZWZUYWJsZSwgbV9pbnN0YW5jZXMpOyB9
CiAKIHByaXZhdGU6Ci0gICAgRnVuY1JlZlRhYmxlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFs
PHVpbnQzMl90PiBtYXhpbXVtKTsKKyAgICBGdW5jUmVmVGFibGUodWludDMyX3QgaW5pdGlhbCwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSk7CiAKICAgICBNYWxsb2NQdHI8V2FzbVRv
V2FzbUltcG9ydGFibGVGdW5jdGlvbiwgVk1NYWxsb2M+IG1faW1wb3J0YWJsZUZ1bmN0aW9uczsK
ICAgICAvLyBjYWxsX2luZGlyZWN0IG5lZWRzIHRvIGRvIGFuIEluc3RhbmNlIGNoZWNrIHRvIHBv
dGVudGlhbGx5IGNvbnRleHQgc3dpdGNoIHdoZW4gY2FsbGluZyBhIGZ1bmN0aW9uIHRvIGFub3Ro
ZXIgaW5zdGFuY2UuIFdlIGNhbiBob2xkIHJhdyBwb2ludGVycyB0byBJbnN0YW5jZSBoZXJlIGJl
Y2F1c2UgdGhlIGVtYmVkZGVyIGVuc3VyZXMgdGhhdCBUYWJsZSBrZWVwcyBhbGwgdGhlIGluc3Rh
bmNlcyBhbGl2ZS4gV2UgY291bGRuJ3QgaG9sZCBhIFJlZiBoZXJlIGJlY2F1c2UgaXQgd291bGQg
Y2F1c2UgY3ljbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuaAppbmRleCA2ZjQxNjIyOWViYmY0Y2MwNmZlNTRhNzlmZDA0ZDdkNjcw
ZTYwYWQwLi5jOTUzMGU5Y2EyODdkNTcwM2QwNzgzNWI2NjI4ZDcyNWYzZjk1ZDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaApA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZExlbmd0aCh1aW50MzJfdCBsZW5ndGgpIHsgcmV0dXJuIFdhc206OlRhYmxl
Ojppc1ZhbGlkTGVuZ3RoKGxlbmd0aCk7IH0KLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUtPm1heGltdW0oKTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVtKCk7
IH0KICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5ndGgo
KTsgfQogICAgIHVpbnQzMl90IGFsbG9jYXRlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFi
bGUtPmFsbG9jYXRlZExlbmd0aChsZW5ndGgoKSk7IH0KICAgICBib29sIGdyb3codWludDMyX3Qg
ZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKSBXQVJOX1VOVVNFRF9SRVRVUk47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CmluZGV4IGM1YmFjMjU5YTkxYjIxMWFiMzVjYmE4NjgwM2M4NDNmMmU5MjdiYjcuLjMwMTUwMDkw
YzYxNWU4NWM2YmZlZTc3NDA4YWYwMGIwOTMxNWJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC02OSw3ICs2
OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhl
IG1lbW9yeSB3ZSB0aGluayB3ZSBhcmUgZ29pbmcgdG8gcnVuIHdpdGggbWF0Y2hlcyB0aGUgb25l
IHdlIGV4cGVjdC4KICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5j
ZSgpLmNvZGVCbG9jaygpLT5pc1NhZmVUb1J1bih3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPm1l
bW9yeSgpLT5tZW1vcnkoKS5tb2RlKCkpKTsKIAotICAgIE9wdGlvbmFsPFRyYWNlU2NvcGU+IHRy
YWNlU2NvcGU7CisgICAgc3RkOjpvcHRpb25hbDxUcmFjZVNjb3BlPiB0cmFjZVNjb3BlOwogICAg
IGlmIChPcHRpb25zOjp1c2VUcmFjZVBvaW50cygpKQogICAgICAgICB0cmFjZVNjb3BlLmVtcGxh
Y2UoV2ViQXNzZW1ibHlFeGVjdXRlU3RhcnQsIFdlYkFzc2VtYmx5RXhlY3V0ZUVuZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcAppbmRleCA5ZmIxZTkzYjZmOTFiOTUwNTNiOWJiMTAwMDFlNmE3ZjYzNTE4
NjEzLi41NWY5ZDgyYWRkMmEyNGU1OWU5NDRlZjNmNjg5OTliNjEzNjU0YTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCkBAIC0zMzYsOCArMzM2LDggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGlua0ltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAg
ICAgICAgICAgIGlmIChhY3R1YWxJbml0aWFsIDwgZXhwZWN0ZWRJbml0aWFsKQogICAgICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9i
YWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAi
cHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikpKTsKIAotICAgICAgICAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1h
dGlvbi50YWJsZXNbaW1wb3J0LmtpbmRJbmRleF0ubWF4aW11bSgpKSB7Ci0gICAgICAgICAgICAg
ICAgT3B0aW9uYWw8dWludDMyX3Q+IGFjdHVhbE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOwor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9
IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlc1tpbXBvcnQua2luZEluZGV4XS5tYXhpbXVtKCkpIHsK
KyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0g
dGFibGUtPm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJs
ZSBpbXBvcnQiLCAiZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1
aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwogICAgICAgICAgICAgICAgIGlmICgqYWN0dWFsTWF4aW11
bSA+ICpleHBlY3RlZE1heGltdW0pCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGkKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocHV0UmVzdWx0KTsKIAotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAg
ICAgICAgICAgZXhwb3J0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRl
eC52YWx1ZSgpLCBleHBvcnRlZFZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNTc5LDcgKzU3OSw3IEBAIEpT
VmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAKICAgICBjb25zdCBWZWN0b3I8V2FzbTo6U2VnbWVudDo6UHRyPiYgZGF0
YSA9IG1vZHVsZUluZm9ybWF0aW9uLmRhdGE7CiAgICAgCi0gICAgT3B0aW9uYWw8SlNWYWx1ZT4g
ZXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gZXhjZXB0aW9uOwogCiAgICAg
YXV0byBmb3JFYWNoQWN0aXZlRWxlbWVudCA9IFsmXSAoYXV0byBmbikgewogICAgICAgICBmb3Ig
KGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5lbGVtZW50
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjgwNThhOWQyYTUzNGRhNGNhN2Jh
Nzk2NjlmYzM2NDk0YWJlMGYwZC4uMWFiMmYyZjM4NDQ4NDAyNmVhYmFjZTMxOWRkNTY1YWFkNDM5
ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICAvLyBJbiBXZWJJREwsICJwcmVzZW50IiBtZWFucyB0
aGF0IFtbR2V0XV0gcmVzdWx0IGlzIHVuZGVmaW5lZCwgbm90IFtbSGFzUHJvcGVydHldXSByZXN1
bHQuCiAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25h
cmllcwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG1heGltdW07CiAgICAgSWRlbnRpZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibWF4aW11bSIpOwogICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVl
ID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGdsb2JhbE9iamVjdCwgbWF4aW11bUlkZW50KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAKaW5kZXggMjk3MDFmNjFmZDk3ODhk
MTBmZGQ2MDRkMGYyMGVlYzliODBmMDA5Mi4uYjhhMzgyMzZjYTNjNzUzMWE4MjVmYjA3M2ZmYjA1
MzM4ODIxNDgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZs
YWdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLU9w
dGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCitz
dGQ6Om9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJp
bmcpCiB7CiAgICAgT3B0aW9uU2V0PEZsYWdzPiBmbGFnczsKICAgICBmb3IgKGF1dG8gY2hhcmFj
dGVyIDogc3RyaW5nLmNvZGVVbml0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJG
bGFncy5oCmluZGV4IDUwYzgzOTUzMzBlODVkZmYxZWFmYzU5M2ZkNzgyOGZlY2FhNDNlYjguLmUw
NzJjMmU3ZGIzYjEzZTRhMTkzYTU4YzEwYjE1YmU4ZmExZWRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJGbGFncy5oCkBAIC00MCw2ICs0MCw2IEBAIGVudW0gY2xhc3MgRmxhZ3Mg
OiB1aW50OF90IHsKICAgICBEZWxldGVkVmFsdWUgPSAxIDw8IDcKIH07CiAKLUpTX0VYUE9SVF9Q
UklWQVRFIE9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7
CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNl
RmxhZ3MoU3RyaW5nVmlldyk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCAyY2QxZDYy
ZTcyOWE2NzJkOTBmODViODdiMTdjNTA1NmM2MmI4MDIzLi4zYjM0OWJlODNiNDRjMDAzNmYwMTA2
Zjc1OTI1MmU2Yjk2NzdlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5jcHAKQEAgLTIwNTksNyArMjA1OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IG5ld0FsdGVybmF0aXZlSW5kZXg7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1bmN0
aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVudGhl
c2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQorICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3JDb2Rl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiog
ZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50
QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVj
a2VkKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpUb29NYW55RGlzanVuY3Rpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA1MmMwMzg3YTg4MzA3NmUxYmEwNGZh
NjE2NjViYjhlMzM0ZjMzYjUyLi4zYjUzNjllYThiMjBhN2ZiZGQ0OTMyZmYyMDY5NzU4MjJmOWE2
ZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNDIxMyw3ICs0
MjEzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQgdG8gZGV0ZWN0IHJlZ3VsYXIgZXhwcmVz
c2lvbiBjb25zdHJ1Y3RzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0ZWQg
aW4gdGhlIEpJVDsgZmFsbCBiYWNrIHRvIHRoZSBpbnRlcnByZXRlciB3aGVuIHRoaXMgaXMgZGV0
ZWN0ZWQuCi0gICAgT3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogCiAg
ICAgYm9vbCBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzOwogICAgIGJvb2wgbV91bmljb2RlSWdub3Jl
Q2FzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCAzYThlNWYyM2ZiMjg5
OGE5NTQ3ZmYwODk0NTc4MWYzZDkyZDI2YzIyLi45NzRkNTgxZmRiMWRlZmEwNWE4Y2Y0MTJjNjU0
NTA3MjFkMjNkNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBZYXJyQ29kZUJsb2NrKCkgPSBkZWZhdWx0OwogCiAgICAg
dm9pZCBzZXRGYWxsQmFja1dpdGhGYWlsdXJlUmVhc29uKEpJVEZhaWx1cmVSZWFzb24gZmFpbHVy
ZVJlYXNvbikgeyBtX2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uOyB9Ci0gICAgT3B0aW9u
YWw8SklURmFpbHVyZVJlYXNvbj4gZmFpbHVyZVJlYXNvbigpIHsgcmV0dXJuIG1fZmFpbHVyZVJl
YXNvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gZmFpbHVyZVJlYXNv
bigpIHsgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgp
IHsgcmV0dXJuIG1fcmVmOC5zaXplKCk7IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0
dXJuIG1fcmVmMTYuc2l6ZSgpOyB9CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5
ODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBt
X21hdGNoT25seTE2OwogICAgIGJvb2wgbV91c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxz
ZSB9OwotICAgIE9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKIH07CiAK
IGVudW0gWWFyckpJVENvbXBpbGVNb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXJzZXIuaAppbmRleCBmZWFmYWFjYmFmMTM3ZmQxNTQ4NzgzNDdmMjRlNmNkNTExYWQ1MWM1Li5m
MDc3N2Q0YWZlYWRmOTBhMzEyNTdlNjJmNmZkYTcyZTBjYjA3NmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gbjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRyeUNvbnN1
bWVHcm91cE5hbWUoKQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0cnlDb25zdW1lR3JvdXBO
YW1lKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExMzQsNyArMTEzNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB3aGlsZSAoIWF0RW5kT2ZQYXR0ZXJuKCkpIHsKICAgICAgICAgICAgICAgICBjaCA9
IHRyeUNvbnN1bWVJZGVudGlmaWVyQ2hhcmFjdGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNo
ID09ICc+JykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFN0cmluZz4oaWRl
bnRpZmllckJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4oaWRlbnRpZmllckJ1aWxkZXIudG9TdHJpbmcoKSk7CiAKICAg
ICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2gpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTExNDgsNyArMTE0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNs
YXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uKCkKKyAgICBzdGQ6Om9w
dGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5
RXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSB8fCAhaXNV
bmljb2RlUHJvcGVydHlWYWx1ZUV4cHJlc3Npb25DaGFyKHBlZWsoKSkpIHsKICAgICAgICAgICAg
IG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lv
bjsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHByaXZhdGU6CiAgKiAgICB2b2lkIGF0b21DaGFyYWN0
ZXJDbGFzc1JhbmdlKFVDaGFyMzIgYmVnaW4sIFVDaGFyMzIgZW5kKQogICogICAgdm9pZCBhdG9t
Q2hhcmFjdGVyQ2xhc3NCdWlsdEluKEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEIGNsYXNzSUQsIGJv
b2wgaW52ZXJ0KQogICogICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NFbmQoKQotICogICAgdm9p
ZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0
aW9uYWw8U3RyaW5nPiBncm91cE5hbWUpOworICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJw
YXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGdy
b3VwTmFtZSk7CiAgKiAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9v
bCBpbnZlcnQgPSBmYWxzZSk7CiAgKiAgICB2b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpOwogICog
ICAgdm9pZCBhdG9tQmFja1JlZmVyZW5jZSh1bnNpZ25lZCBzdWJwYXR0ZXJuSWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDllMzYxNzA4NWQxYThh
ZTc3ZWJmNjhkZjM0ZTQ4MTdkYjVlZGMwY2MuLjIxZDc1YjE1OWFhN2RlMzk4OTdiNDgzZjE3OTRk
ZTJjNzM1YWYyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGF0dGVybi5tX3VzZXJD
aGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld0NoYXJhY3RlckNsYXNzKSk7CiAgICAg
fQogCi0gICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJl
ID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBvcHRHcm91cE5hbWUgPSBzdGQ6Om51bGxvcHQpCisg
ICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0gdHJ1
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9wdEdyb3VwTmFtZSA9IHN0ZDo6bnVsbG9wdCkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IG1fcGF0dGVybi5tX251bVN1YnBh
dHRlcm5zICsgMTsKICAgICAgICAgaWYgKGNhcHR1cmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwCmluZGV4IDAwYjhhYmQy
Y2I4OTBmZGI2NGQ3N2MxOWYwM2RhYjZhZjJhOGQ5NTMuLjViZTM5ODZiZWM5ODNlNWU1ZDZmNGEw
ZDEyZWRjZmRmMzZlMjg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3QgSGFz
aFRhYmxlIHsKIAogI2luY2x1ZGUgIlVuaWNvZGVQYXR0ZXJuVGFibGVzLmgiCiAKLU9wdGlvbmFs
PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB1bmljb2RlTWF0Y2hQcm9wZXJ0eVZhbHVlKFdURjo6
U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eU5hbWUsIFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXJ0eVZh
bHVlKQorc3RkOjpvcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNo
UHJvcGVydHlWYWx1ZShXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVydHlOYW1lLCBXVEY6OlN0cmlu
ZyB1bmljb2RlUHJvcGVydHlWYWx1ZSkKIHsKICAgICBpbnQgcHJvcGVydHlJbmRleCA9IC0xOwog
CkBAIC04NiwxMCArODYsMTAgQEAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVu
aWNvZGVNYXRjaFByb3BlcnR5VmFsdWUoV1RGOjpTdHJpbmcgdW5pY29kZVAKICAgICBpZiAocHJv
cGVydHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8QnVpbHRJ
bkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PGludD4oQnVpbHRJbkNoYXJhY3RlckNsYXNz
SUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJRCkgKyBwcm9wZXJ0eUluZGV4KSk7CisgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PEJ1aWx0
SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1aWx0SW5DaGFyYWN0ZXJDbGFz
c0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQpICsgcHJvcGVydHlJbmRleCkpOwogfQogCi1PcHRp
b25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHkoV1RGOjpT
dHJpbmcgdW5pY29kZVByb3BlcnR5VmFsdWUpCitzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0
ZXJDbGFzc0lEPiB1bmljb2RlTWF0Y2hQcm9wZXJ0eShXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVy
dHlWYWx1ZSkKIHsKICAgICBpbnQgcHJvcGVydHlJbmRleCA9IC0xOwogCkBAIC0xMDAsNyArMTAw
LDcgQEAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3Bl
cnR5KFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXIKICAgICBpZiAocHJvcGVydHlJbmRleCA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBPcHRpb25hbDxC
dWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNz
SUQ+KHN0YXRpY19jYXN0PGludD4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2Rl
UHJvcGVydHlJRCkgKyBwcm9wZXJ0eUluZGV4KSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFz
c0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29k
ZVByb3BlcnR5SUQpICsgcHJvcGVydHlJbmRleCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hh
cmFjdGVyQ2xhc3M+IGNyZWF0ZVVuaWNvZGVDaGFyYWN0ZXJDbGFzc0ZvcihCdWlsdEluQ2hhcmFj
dGVyQ2xhc3NJRCB1bmljb2RlQ2xhc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgKaW5kZXggZjdmMWE2OWE0NzM4OGYzYmY5YWQ3
OTZhMDRjY2MxMzUzYmMyNGNiNS4uZTdiNThkMmFiZjlmZDI2YWUwOWJlZDUxM2U3ZGU4NmYxZjc0
Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQ
cm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQ
cm9wZXJ0aWVzLmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZ
YXJyIHsKIAogc3RydWN0IENoYXJhY3RlckNsYXNzOwogCi1KU19FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShX
VEY6OlN0cmluZywgV1RGOjpTdHJpbmcpOwotSlNfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8QnVp
bHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nKTsK
K0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+
IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUoV1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nKTsKK0pT
X0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVu
aWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nKTsKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJh
Y3RlckNsYXNzPiBjcmVhdGVVbmljb2RlQ2hhcmFjdGVyQ2xhc3NGb3IoQnVpbHRJbkNoYXJhY3Rl
ckNsYXNzSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DUFVUaW1lLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9DUFVUaW1lLmgKaW5kZXggZTk4ODZlN2Y4ZjZjYTYxNTcyMTg4NTYyYzBlOTJk
ZmQ1ZjhjNGNjOC4uOTI2ODY5ZTVmMDc4YjBkNzRjNmI2ZWViZWE1ZjFiY2U3OTExNDc2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ1BVVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NQ
VVRpbWUuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQ1BVVGltZSB7CiAKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgZG91YmxlIHBlcmNlbnRhZ2VDUFVVc2FnZVNpbmNlKGNvbnN0IENQVVRpbWUm
KSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgT3B0aW9uYWw8Q1BVVGlt
ZT4gZ2V0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENQ
VVRpbWU+IGdldCgpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBDUFUgdGltZSBvZiB0
aGUgY3VycmVudCB0aHJlYWQuCiAgICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24g
cGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1Ro
cmVhZENvcGllci5oCmluZGV4IDY4MGFhZWM5NGFhYzQ4OWE0ZGQ0MzJjODdiODgyNzA0Yjg5YjYy
NWMuLjhjMWFlMjY2YzkwNjY1ZThlM2U0MzA5NmFkNWFjODRmMTJmMzgzNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTU1LDggKzE1NSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEYsIHR5cGVuYW1lIFM+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBzdGQ6CiB9OwogCiAvLyBEZWZhdWx0IHNwZWNpYWxpemF0aW9uIGZvciBPcHRpb25hbCBvZiBD
cm9zc1RocmVhZENvcHlhYmxlIGNsYXNzLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIE9wdGlvbmFsPFQ+PiB7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIE9wdGlvbmFsPFQ+IGNvcHkoVSYmIHNvdXJjZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBzdGQ6Om9wdGlvbmFsPFQ+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VD4gY29weShVJiYgc291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFz
b3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRRdWV1ZS5oCmluZGV4IGEyNDk4MGE2YmUwMDQ5MmNhNTMxNTkxZmY4NDNhNzkwOWViZjljM2Yu
LjU2YzhlMjM4Y2EzM2IzYzRlN2QwNWI3ZDk3ODg1NTlhNWRmMjNlMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9z
c1RocmVhZFF1ZXVlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
KERhdGFUeXBlJiYpOwogCiAgICAgRGF0YVR5cGUgd2FpdEZvck1lc3NhZ2UoKTsKLSAgICBPcHRp
b25hbDxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0YVR5
cGU+IHRyeUdldE1lc3NhZ2UoKTsKIAogICAgIHZvaWQga2lsbCgpOwogICAgIGJvb2wgaXNLaWxs
ZWQoKSBjb25zdDsKQEAgLTg3LDcgKzg3LDcgQEAgRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1ZTxE
YXRhVHlwZT46OndhaXRGb3JNZXNzYWdlKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5
cGU+Ci1PcHRpb25hbDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdl
dE1lc3NhZ2UoKQorc3RkOjpvcHRpb25hbDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRh
VHlwZT46OnRyeUdldE1lc3NhZ2UoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93
dGYvRGF0ZU1hdGguY3BwCmluZGV4IDBmZjhkZTNiNmYwZjE3MmY3MDczZTFkMGIyZjFkYTM4NDY1
NWZlNDIuLmViZDY5YTRjNzZjZDdhY2IwYTIzM2JlNTUyMDcxMTU4Y2EyMTcxY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRl
TWF0aC5jcHAKQEAgLTczNCw3ICs3MzQsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBpc0xvYwogICAg
IGlmIChkYXkgPCAwKQogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKIAotICAgIE9wdGlvbmFsPGludD4geWVhcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4geWVhcjsKICAgICBpZiAoZGF5ID4gMzEpIHsKICAgICAgICAgLy8gIyMjIHdoZXJl
IGlzIHRoZSBib3VuZGFyeSBhbmQgd2hhdCBoYXBwZW5zIGJlbG93PwogICAgICAgICBpZiAoKmRh
dGVTdHJpbmcgIT0gJy8nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCA0ODMxYjA0N2Q1ODk5OWJl
NzZiYTk1MDdlNGQwNTA1ZTIxM2VkM2I5Li45MWRkY2YyNjE5MGI5NzI0YmExOTM1Y2QwZTNjMDA1
YzE5OWI0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRp
YyBTYWx0IG1ha2VTYWx0KCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAotT3B0aW9uYWw8U2FsdD4g
cmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxTYWx0PiBy
ZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMocGF0aCkpIHsKICAgICAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKQEAgLTU4OCw3ICs1
ODgsNyBAQCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5n
JiBuZXdQYXRoKQogICAgIHJldHVybiBzdGQ6OmZpbGVzeXN0ZW06OnJlbW92ZV9hbGwoZnNPbGRQ
YXRoLCBlYyk7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcm
IHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gc2l6ZSA9IHN0ZDo6Zmls
ZXN5c3RlbTo6ZmlsZV9zaXplKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKQEAgLTYw
NCw3ICs2MDQsNyBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgcmV0dXJuICFlYzsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVl
U3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAg
ICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6ZmlsZXN5c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpOwpAQCAtNjQxLDcgKzY0MSw3IEBAIGJvb2wgaGFyZExpbmtPckNvcHlG
aWxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKICAg
ICByZXR1cm4gIWVjOwogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25z
dCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgdWludDY0
X3QgbGlua0NvdW50ID0gc3RkOjpmaWxlc3lzdGVtOjpoYXJkX2xpbmtfY291bnQodG9TdGRGaWxl
U3lzdGVtUGF0aChwYXRoKSwgZWMpOwpAQCAtNjU1LDcgKzY1NSw3IEBAIGJvb2wgZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhZWM7CiB9CiAK
LU9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gbW9kaWZp
Y2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6bGFzdF93cml0ZV90aW1lKHRvU3RkRmlsZVN5
c3RlbVBhdGgocGF0aCksIGVjKTsKQEAgLTY4NCw3ICs2ODQsNyBAQCBib29sIGlzSGlkZGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rcyB7IE5vLCBZZXMgfTsKLXN0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQ
b3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhj
b25zdCBTdHJpbmcmIHBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcykKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBzdGF0
dXMgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6OlllcyA/IHN0ZDo6ZmlsZXN5c3RlbTo6c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0
aCksIGVjKSA6IHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpOwpAQCAtNzAxLDEyICs3MDEsMTIgQEAgc3RhdGljIE9wdGlvbmFsPEZp
bGVUeXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5n
JiBwYXQKICAgICByZXR1cm4gRmlsZVR5cGU6OlJlZ3VsYXI7CiB9CiAKLU9wdGlvbmFsPEZpbGVU
eXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVUeXBl
PiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVUeXBlUG90
ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
OjpObyk7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtz
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlRm9s
bG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlVHlw
ZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6WWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCAwNWMyNzIxZTI3MDFhY2MxZTA3M2Rj
OTc0MmIxMmNkZWEyYzZiNjFiLi5hZWNkMDg0ZjlmNTJmNDdiYmMxZTQ4ZTM4YzY4YTg2MGJkOTc2
YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xMDksMTEgKzEwOSwxMSBAQCBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1Bh
dGgpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25z
dCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5rcy4KLVdURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBPcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxvd3Mgc3ltbGlua3MuCitXVEZfRVhQT1JUX1BSSVZB
VEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHVwZGF0ZUZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7IC8vIFNldHMgbW9kaWZpY2F0
aW9uIHRpbWUgdG8gbm93LgotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFdhbGxUaW1lPiBm
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9y
ZSBmaWxlIGNyZWF0aW9uIHRpbWUuCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBwbGF0
Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGNvbXBvbmVudCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBv
bmVudHMpOwpAQCAtMTIxLDE0ICsxMjEsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBs
YXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYKIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoRmlsZU5hbWUoY29uc3QgU3RyaW5n
Jik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhcmVudFBhdGgoY29uc3QgU3RyaW5nJik7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShj
b25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxpbnQzMl90PiBnZXRG
aWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBD
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwog
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KTsKIAogZW51bSBjbGFzcyBGaWxlVHlwZSB7IFJlZ3VsYXIsIERp
cmVjdG9yeSwgU3ltYm9saWNMaW5rIH07Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8Rmls
ZVR5cGU+IGZpbGVUeXBlKGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlKGNvbnN0
IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8RmlsZVR5cGU+IGZp
bGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIgPSB7IH0pOwogCkBAIC0xNDMsNyAr
MTQzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IDg+OwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNv
bnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0
PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hh
dCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRo
LgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7
IH0pOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGFwcGVuZEZp
bGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBoYXJkTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0
IFN0cmluZyYgbGlua1BhdGgpOwogLy8gSGFyZCBsaW5rcyBhIGZpbGUgaWYgcG9zc2libGUsIGNv
cGllcyBpdCBpZiBub3QuCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXJkTGlua09yQ29weUZp
bGUoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIGxpbmtQYXRoKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBT
dHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGhhcmRMaW5rQ291bnQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogI2lmIFVTRShGSUxFX0xPQ0sp
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIE9w
dGlvblNldDxGaWxlTG9ja01vZGU+KTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBXVEZfRVhQT1JUX1BS
SVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0
b3J5UHJlZml4KQogLy8gQWxsb3cgcmVhZGluZyBjbG91ZCBmaWxlcyB3aXRoIG5vIGxvY2FsIGNv
cHkuCiBlbnVtIGNsYXNzIFBvbGljeVNjb3BlIDogdWludDhfdCB7IFByb2Nlc3MsIFRocmVhZCB9
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0QWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNz
RmlsZXMoYm9vbCwgUG9saWN5U2NvcGUpOwotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPGJv
b2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRh
bGVzc0ZpbGVzKFBvbGljeVNjb3BlKTsKICNlbmRpZgogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5j
cHAKaW5kZXggZWM5ZTUzNDFiM2JhZGExMzdlMzBhMTdhMTRmMTVmYTdmZWQ3OWRiOC4uYzRiZWI2
ZjAwZDA5NGNmOWU3OTc0YjVjNDc5MTFkODU5NTg3ZDQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSlNPTlZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAK
QEAgLTU2NiwyMSArNTY2LDIxIEBAIFN0cmluZyBWYWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFZhbHVl
Ojphc0Jvb2xlYW4oKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBWYWx1ZTo6YXNCb29sZWFu
KCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkJvb2xlYW4pCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUuYm9vbGVhbjsKIH0KIAotT3B0
aW9uYWw8ZG91YmxlPiBWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IFZhbHVlOjphc0RvdWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpE
b3VibGUgJiYgdHlwZSgpICE9IFR5cGU6OkludGVnZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUubnVtYmVyOwogfQogCi1PcHRpb25hbDxpbnQ+IFZh
bHVlOjphc0ludGVnZXIoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVn
ZXIoKSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6RG91YmxlICYmIHR5cGUoKSAh
PSBUeXBlOjpJbnRlZ2VyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjQ4LDcg
KzY0OCw3IEBAIHNpemVfdCBPYmplY3RCYXNlOjptZW1vcnlDb3N0KCkgY29uc3QKICAgICByZXR1
cm4gbWVtb3J5Q29zdDsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gT2JqZWN0QmFzZTo6Z2V0Qm9vbGVh
bihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IE9iamVjdEJh
c2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFs
dWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNjU2LDcgKzY1Niw3IEBA
IE9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdAogICAgIHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKCk7CiB9CiAKLU9wdGlvbmFsPGRv
dWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBPYmplY3RCYXNlOjpnZXREb3VibGUoY29uc3QgU3RyaW5nJiBu
YW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBpZiAo
IXZhbHVlKQpAQCAtNjY0LDcgKzY2NCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6
Z2V0RG91YmxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUtPmFz
RG91YmxlKCk7CiB9CiAKLU9wdGlvbmFsPGludD4gT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcihjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gT2JqZWN0QmFzZTo6Z2V0
SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdl
dFZhbHVlKG5hbWUpOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9KU09OVmFsdWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKaW5kZXggYmUzM2Jl
ODJiYThkZDA1ZGVlNTUwZWMxMDk2OTczN2Y5ZjQ4ZTdiZS4uMWMxZmRmMTFmMTllOTlkNWIwMzhl
OGNhMGM0MGM5YjVhOTFmNWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVl
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuaApAQCAtOTMsOSArOTMsOSBAQCBw
dWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TnVsbDsgfQogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gYXNCb29sZWFuKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBhc0lu
dGVnZXIoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGFzRG91YmxlKCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBhc0Jvb2xlYW4oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4gYXNJbnRlZ2VyKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFz
RG91YmxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3Q7CiAgICAgUmVmUHRy
PFZhbHVlPiBhc1ZhbHVlKCk7CiAgICAgdmlydHVhbCBSZWZQdHI8T2JqZWN0PiBhc09iamVjdCgp
OwpAQCAtMTg4LDkgKzE4OCw5IEBAIHByb3RlY3RlZDoKICAgICBpdGVyYXRvciBmaW5kKGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gZ2V0Qm9vbGVhbihjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2V0RG91YmxlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBnZXRJbnRlZ2VyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBnZXRCb29sZWFuKGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdldERvdWJs
ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBnZXRJ
bnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFN0cmluZyhj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFJlZlB0cjxPYmplY3Q+IGdldE9iamVjdChj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFJlZlB0cjxBcnJheT4gZ2V0QXJyYXkoY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hcmth
YmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXJrYWJsZS5oCmluZGV4IGMzOWRkMzY2ZWY3ODhlNDQ0
ZmU2NDY2ODc4ODY4ZmVkOWU3MmU4OGQuLjkyNDhhODA4MzRmMjgxZWU3OThiNjA2NTVhNGI1NjQz
OTczY2YyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKKysrIGIvU291
cmNlL1dURi93dGYvTWFya2FibGUuaApAQCAtMTA2LDExICsxMDYsMTEgQEAgcHVibGljOgogICAg
ICAgICA6IG1fdmFsdWUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQogICAgIHsgfQogCi0g
ICAgY29uc3RleHByIE1hcmthYmxlKGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICBjb25z
dGV4cHIgTWFya2FibGUoY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiAgICAgICAgIDog
bV92YWx1ZShib29sKHZhbHVlKSA/ICp2YWx1ZSA6IFRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAg
IHsgfQogCi0gICAgY29uc3RleHByIE1hcmthYmxlKE9wdGlvbmFsPFQ+JiYgdmFsdWUpCisgICAg
Y29uc3RleHByIE1hcmthYmxlKHN0ZDo6b3B0aW9uYWw8VD4mJiB2YWx1ZSkKICAgICAgICAgOiBt
X3ZhbHVlKGJvb2wodmFsdWUpID8gV1RGTW92ZSgqdmFsdWUpIDogVHJhaXRzOjplbXB0eVZhbHVl
KCkpCiAgICAgeyB9CiAKQEAgLTEyOCwyMyArMTI4LDIzIEBAIHB1YmxpYzoKICAgICBjb25zdGV4
cHIgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBj
b25zdGV4cHIgVCYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBvcGVy
YXRvciBPcHRpb25hbDxUPigpICYmCisgICAgb3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPigpICYm
CiAgICAgewogICAgICAgICBpZiAoYm9vbCgqdGhpcykpCiAgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBvcGVyYXRvciBPcHRpb25hbDxUPigpIGNvbnN0JgorICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9u
YWw8VD4oKSBjb25zdCYKICAgICB7CiAgICAgICAgIGlmIChib29sKCp0aGlzKSkKICAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAotICAgIE9wdGlvbmFsPFQ+IGFzT3B0aW9uYWwoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8
VD4gYXNPcHRpb25hbCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gT3B0aW9uYWw8VD4o
KnRoaXMpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxUPigqdGhpcyk7CiAgICAgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXgg
OWUwODgyNGJlNTU4MzY3OTY1OTAwMTM1MGFiNDI3ZjAxMzM3NjA0Yy4uNWIwN2RmODA5NGRlMjli
ZmM3MzAwMDc3MzRhOTdjNTRhN2JhM2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnNldFBhZ2VDb3VudCh1bnNpZ25lZCBwYWdlQ291bnQpCiAgICAgc2luZ2xldG9uKCkubV9w
YWdlQ291bnQgPSBwYWdlQ291bnQ7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRocmVzaG9sZEZvck1lbW9yeUtpbGwoKQogewogICAg
IHN3aXRjaCAobV9wcm9jZXNzU3RhdGUpIHsKICAgICBjYXNlIFdlYnNhbVByb2Nlc3NTdGF0ZTo6
SW5hY3RpdmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDA1YTFm
ZjFhYTExZjcwYzAwY2FmYjE0ZTliYzg4NWVhNDgyMGY4ZTAuLmZmZjIwZDMyODI4NWY2ZjZiNDY3
NTJhNTFjOWNhNTYyOGM3MTY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oCkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzaXplX3QgcmVz
aWRlbnQgeyAwIH07CiAgICAgICAgICAgICBzaXplX3QgcGh5c2ljYWwgeyAwIH07CiAgICAgICAg
IH07Ci0gICAgICAgIE9wdGlvbmFsPE1lbW9yeVVzYWdlPiBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVtb3J5VXNhZ2U+IHBsYXRmb3JtTWVtb3J5VXNhZ2Uo
KTsKICAgICAgICAgdm9pZCBsb2dNZW1vcnlVc2FnZUNoYW5nZSgpOwogCiAgICAgICAgIGNvbnN0
IGNoYXIqIG1fbG9nU3RyaW5nOwotICAgICAgICBPcHRpb25hbDxNZW1vcnlVc2FnZT4gbV9pbml0
aWFsTWVtb3J5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lbW9yeVVzYWdlPiBtX2luaXRpYWxN
ZW1vcnk7CiAKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNfbG9nZ2lu
Z0VuYWJsZWQ7CiAgICAgfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTaG91bGRMb2dNZW1vcnlNZW1vcnlQcmVzc3VyZUV2ZW50cyhib29sIHNob3VsZExvZykgeyBt
X3Nob3VsZExvZ01lbW9yeU1lbW9yeVByZXNzdXJlRXZlbnRzID0gc2hvdWxkTG9nOyB9CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiB0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRocmVzaG9sZEZvck1lbW9yeUtpbGwoKTsKICAgICB2
b2lkIG1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdlZCgpOwogCiAgICAgdm9pZCB1bmluc3RhbGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaCBiL1NvdXJjZS9X
VEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRleCA1NDRhYTQ3N2MwMjVmYjQxNDVmMmU2NmIwMWNm
NTBhNzg5MWYwNDQ3Li40Y2U3YWJjNTFhMDI4M2M4YzVlYzRiZTQ0OTNjYmM1OWY4MGViYzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0xNDksOSArMTQ5LDkgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1vbm90
b25pY1RpbWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1vbm90b25pY1RpbWU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiB0aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
dGltZTsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgICAgICBpZiAoIXRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
T2JqZWN0SWRlbnRpZmllci5oIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmlu
ZGV4IGIwOGYwNTQ4NDU1YTY0ZTNlZDZmYjRlOGE4ODBmYmMyMmExNDVlYTYuLjkxZTJmYmY4ODA0
ZjBmYTE0N2FhOTJiMGM5NTBkY2M0ZDI5ZDI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVy
LmgKQEAgLTcxLDkgKzcxLDkgQEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRp
ZmllcjsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8T2JqZWN0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRp
Zmllcj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gaWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlk
ZW50aWZpZXIgfHwgIWlzVmFsaWRJZGVudGlmaWVyKCppZGVudGlmaWVyKSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCmluZGV4IDc3ZTYyODliYzUwNjNkNDcz
YWRmN2JhOTkyNTVlNjZmNTQ3OTVkZDkuLmI1YTZhYzhkOWEwZjNjZjdhM2E1NjZmNDliYWJiNDlj
NWQ5YjgwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgY29uc3RleHByIE9wdGlvblNldChPcHRpb25hbDxFPiBvcHRp
b25hbCkKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0KHN0ZDo6b3B0aW9uYWw8RT4gb3B0aW9uYWwp
CiAgICAgICAgIDogbV9zdG9yYWdlKG9wdGlvbmFsID8gc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+
KCpvcHRpb25hbCkgOiAwKQogICAgIHsKICAgICB9CkBAIC0yMDYsOSArMjA2LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9zdG9yYWdlICYmICEobV9zdG9yYWdlICYgKG1fc3RvcmFnZSAt
IDEpKTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgp
IGNvbnN0CisgICAgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8RT4gdG9TaW5nbGVWYWx1ZSgpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gaGFzRXhhY3RseU9uZUJpdFNldCgpID8gT3B0aW9u
YWw8RT4oc3RhdGljX2Nhc3Q8RT4obV9zdG9yYWdlKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBoYXNFeGFjdGx5T25lQml0U2V0KCkgPyBzdGQ6Om9wdGlvbmFsPEU+KHN0YXRpY19j
YXN0PEU+KG1fc3RvcmFnZSkpIDogc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0ZXhw
ciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0
aW9uYWwuaAppbmRleCBhZGY2ZmE4MGM0ZjlmZTA4NGQyMWNkM2VjNjMxZWMyMGEwMzAwNzFlLi42
NmUyNGFiYjM4ZGU0ZmY3NzNkZTRlNmVhOWZiY2M2MmM5YjM5MzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAg
LTI0LDggKzI0LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHVzaW5nIE9wdGlvbmFsID0gc3RkOjpvcHRpb25hbDxUPjsKLQogdGVtcGxhdGU8dHlwZW5hbWUg
T3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25h
bFR5cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5
cGU6OnZhbHVlX3R5cGUKIHsKICAgICByZXR1cm4gb3B0aW9uYWwgPyAqb3B0aW9uYWwgOiBjYWxs
YmFjaygpOwpAQCAtMzMsNSArMzEsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcHRpb25hbFR5cGUs
IGNsYXNzIENhbGxiYWNrPiBhdXRvIHZhbHVlT3JDb21wdXRlKE9wdGlvbmFsVHlwZQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpPcHRpb25hbDsKIHVzaW5nIFdURjo6dmFsdWVP
ckNvbXB1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAppbmRleCBlOTQ2MDEzYmRmZTQ4MTk4M2M0M2RmOTRi
MWU3ZmUwMjE0YzM4YmMxLi43NjE1YjRlNjI4OWNjMzk1MzFlOGVjZjY1MWIzNTc4NmU4MWYzZDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBGb3JtYXRJbXBsPFR5cGVz
Li4uPiBmb3JtYXQoVHlwZXMuLi4gdmFsdWVzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IE9wdGlvbmFsPFQ+JiB2
YWx1ZSkKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFQ+JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIG91dC5wcmludCgq
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oCmluZGV4IDg1ZjAzNzI4MjU5NzYwNzI3ZTlhNDJlZDE0YmY5NTc2NTY5
NzhlMTAuLmUzZmJkZmJhNGMyZDg1MGViODU3ODhhYmJiYWZkM2FjZGY0ZWQ3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRz
LmgKQEAgLTIyOSw5ICsyMjksOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNlY29uZHM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzZWNvbmRzOwogICAgICAgICBkZWNvZGVyID4+
IHNlY29uZHM7CiAgICAgICAgIGlmICghc2Vjb25kcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIv
U291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAppbmRleCBmOTI4MTJiYTkyNDY3MmU0YmI5
OGUxZTJjYTEwY2Y5NDkzNjljNzhlLi45YjQ4YmVlZmE3NGRlNDkyNWY5MTdiN2M2MTI5NGY3MDhj
MTRiNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgZW51bSBj
bGFzcyBBU0NJSVN1YnNldCB7IEFsbCwgTm9VcHBlcmNhc2VMZXR0ZXJzLCBOb1VwcGVyY2FzZUxl
dHRlcnNPcHRpbWl6ZWQgfTsKIHRlbXBsYXRlPEFTQ0lJU3Vic2V0PiBzdHJ1Y3QgQ29tcGFyYWJs
ZUFTQ0lJU3Vic2V0TGl0ZXJhbCB7CiAgICAgQVNDSUlMaXRlcmFsIGxpdGVyYWw7CiAgICAgdGVt
cGxhdGU8dW5zaWduZWQgc2l6ZT4gY29uc3RleHByIENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVy
YWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW3NpemVdKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
Q29tcGFyYWJsZVN0cmluZ1ZpZXc+IHBhcnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSB7IHJldHVybiB7
IHsgc3RyaW5nIH0gfTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBhcmFibGVTdHJp
bmdWaWV3PiBwYXJzZShTdHJpbmdWaWV3IHN0cmluZykgeyByZXR1cm4geyB7IHN0cmluZyB9IH07
IH0KIH07CiAKIHVzaW5nIENvbXBhcmFibGVBU0NJSUxpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlT
dWJzZXRMaXRlcmFsPEFTQ0lJU3Vic2V0OjpBbGw+OwpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWRfdjxTdG9yYWdlSW50ZWdlcj4p
OwogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gY29uc3RleHByIFBhY2tlZEFTQ0lJTG93
ZXJDb2Rlcyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbc2l6ZV0pOwotICAgIHN0YXRpYyBPcHRp
b25hbDxQYWNrZWRBU0NJSUxvd2VyQ29kZXM+IHBhcnNlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcz4gcGFyc2UoU3RyaW5nVmlldyk7
CiAgICAgY29uc3RleHByIFN0b3JhZ2VJbnRlZ2VyIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogCiBwcml2YXRlOgpAQCAtMzQxLDcgKzM0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFN0b3JhZ2VJbnRlZ2VyPiB0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgU3RvcmFn
ZUludGVnCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFn
ZUludGVnZXI+IGF1dG8gUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPjo6cGFy
c2UoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcz4K
K3RlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBhdXRvIFBhY2tlZEFTQ0lJTG93ZXJD
b2RlczxTdG9yYWdlSW50ZWdlcj46OnBhcnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBzdGQ6Om9w
dGlvbmFsPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlcz4KIHsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCgp
ID4gc2l6ZW9mKFN0b3JhZ2VJbnRlZ2VyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwIGIvU291cmNlL1dURi93
dGYvU3RhY2tUcmFjZS5jcHAKaW5kZXggZmY2MWU2NmIzNDNmYWJkYzdhN2IxOTdkNzkzMWNjNDZi
NzAwYzI2MC4uZDQzMmUwZTY4YzYyZmVlODljZDY3YzFiMzdiMjE2ZGE3YTE5NmMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
U3RhY2tUcmFjZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJh
Y2U+IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMsIGludCBmcmEK
ICAgICByZXR1cm4gdHJhY2U7CiB9CiAKLWF1dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCog
cGMpIC0+IE9wdGlvbmFsPERlbWFuZ2xlRW50cnk+CithdXRvIFN0YWNrVHJhY2U6OmRlbWFuZ2xl
KHZvaWQqIHBjKSAtPiBzdGQ6Om9wdGlvbmFsPERlbWFuZ2xlRW50cnk+CiB7CiAjaWYgSEFWRShE
TEFERFIpCiAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5oIGIvU291cmNlL1dURi93dGYvU3RhY2tUcmFj
ZS5oCmluZGV4IDg2ZWQ0YjgwOGNiYzJjMWVjMTNlY2RmOTM4MGE0MDVkN2MyYzMyODMuLmYyN2Zh
NzU0YzhjN2Y1MjkxNTFlODFjMTI4ZTdhMjA3MmM0OWUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1N0YWNrVHJhY2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgY2hh
cltdLCBTeXN0ZW1GcmVlPGNvbnN0IGNoYXJbXT4+IG1fZGVtYW5nbGVkTmFtZTsKICAgICB9Owog
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxEZW1hbmdsZUVudHJ5PiBk
ZW1hbmdsZSh2b2lkKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPERlbWFuZ2xlRW50cnk+IGRlbWFuZ2xlKHZvaWQqKTsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBpbmRlbnRTdHJpbmcgPSBu
dWxscHRyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMzE3YTQ2ZmMyMDRlOTc0ZGFi
ZGI1MDNlODIzMmEzYTRiZTIwMjhlZC4uZDE4MDJiZDEyZjIxNWQ5NGIyYzk0MmRiMWU2MTU0OTJi
NzAwMDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
VEYgewogCiBMb2NrIFRocmVhZDo6c19hbGxUaHJlYWRzTG9jazsKIAotc3RhdGljIE9wdGlvbmFs
PHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKIHsKICAgICAv
LyBSZXR1cm4gdGhlIHN0YWNrIHNpemUgZm9yIHRoZSBjcmVhdGVkIHRocmVhZCBiYXNlZCBvbiBp
dHMgdHlwZS4KICAgICAvLyBJZiB0aGUgc3RhY2sgc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVu
IHVzZSB0aGUgc3lzdGVtIGRlZmF1bHQuIFBsYXRmb3JtcyBjYW4gdHVuZSB0aGUgdmFsdWVzIGhl
cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5oCmluZGV4IDk4MDA1NTIwZTUxNjliOWQyMjk5NjExZmY2YTU4NjBkOGMy
MTFiZTguLmNmYWU0MmE0NDE3YTAxNjcyMGIwM2NlNjNjMWQ3M2YyZGQ5OTMyZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5oCkBAIC0yNjAsNyArMjYwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6
ZUluVGhyZWFkKCk7CiAKICAgICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQg
ZXN0YWJsaXNobWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICBib29sIGVzdGFibGlzaEhhbmRsZShO
ZXdUaHJlYWRDb250ZXh0KiwgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsIFFPUyk7CisgICAg
Ym9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCosIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzdGFja1NpemUsIFFPUyk7CiAKICNpZiBVU0UoUFRIUkVBRFMpCiAgICAgdm9pZCBlc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmlu
ZGV4IDc1ODEzNzgxNDU2ZTkxM2ZiZGY0M2M3ZThlOGQ3ODg2OTlhYzFmNmQuLmUyZTljYmY2NWMw
OTFjZTgxZWMyYmYyMDk3ZDQyNTE2Mjk0NzM3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBA
IFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RFbmQgLSBzdGFydCk7CiB9CiAKLU9wdGlvbmFs
PHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJM
Ojpwb3J0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJbnRlZ2Vy
PHVpbnQxNl90PihTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwg
bV9wb3J0TGVuZ3RoIC0gMSkpIDogc3RkOjpudWxsb3B0OwogfQpAQCAtMTU2LDcgKzE1Niw3IEBA
IFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogICAgICk7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1
dCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25lZCBp
bmRleCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGggfHwg
aW5wdXRbaW5kZXhdICE9ICclJykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5
OCw3ICsyOTgsNyBAQCB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKQogICAgICAgICBtYXAtPmNsZWFyKCk7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBkZWZh
dWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCitzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7CiAg
ICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrIH07CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3Ry
aW5nVmlldyBuZXdIb3N0KQogICAgICkpOwogfQogCi12b2lkIFVSTDo6c2V0UG9ydChPcHRpb25h
bDx1aW50MTZfdD4gcG9ydCkKK3ZvaWQgVVJMOjpzZXRQb3J0KHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKQEAgLTg4
Nyw3ICs4ODcsNyBAQCBib29sIFVSTDo6cHJvdG9jb2xJc0Fib3V0KCkgY29uc3QKIAogYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5w
b3J0KCk7CiAKICAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVy
biBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgogICAgIGlmICghcG9ydCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggOTBl
NzU4NjdhY2Y5Y2QzYzIxYjE3NDAzZWIzZmJjMDAxMGIzNTVkNC4uZjQ0NTQyMWUxZmUyM2NhYmI2
MTU3ZjcwZDljNDQ2YTI4NmM1ZjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgK
KysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeSgpIGNvbnN0OwpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRQcm90b2NvbChT
dHJpbmdWaWV3KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRIb3N0KFN0cmluZ1Zp
ZXcpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50
MTZfdD4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBvcnQoc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4pOwogCiAgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5j
b206ODAwMCIuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3Ry
aW5nVmlldyk7CkBAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzU3BlY2lhbFNjaGVtZSgpIGNvbnN0OwogCkBAIC0y
NTcsNyArMjU3LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdW
aWV3IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCk7CiAKLVdURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJp
bmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQs
IFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93
ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNrbGlzdCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1
c2VkIGZvciBXZWIgcmVzb3VyY2VzLgogCkBAIC0yNzIsNyArMjcyLDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYp
OwogI2lmZGVmIF9fT0JKQ19fCiAKIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8aWQ+IG1h
a2VOU0FycmF5RWxlbWVudChjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25h
bDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFVSTCosIGlkKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFVSTD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgVVJMKiwgaWQp
OwogCiAjZW5kaWYKIApAQCAtMjk3LDkgKzI5Nyw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IGJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4g
VVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IHN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJp
bmc7CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCmluZGV4IGYyNjhmMTBhYjdjNjg1
MmM0YjIyZDM5ODEwMGUyYjY3YTUxMTUwNDMuLjljMTVlN2YxZjA5MDRjYjE0OTA2NzUyYmU3Yjc2
YTY4MGNmZjc1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JW
YWxpZEhvc3RDaGFyYWN0ZXIoQ2gKIH0KIAogdGVtcGxhdGUgPFVTY3JpcHRDb2RlIFNjcmlwdFR5
cGU+Ci1ib29sIGlzTG9va2FsaWtlU2VxdWVuY2UoY29uc3QgT3B0aW9uYWw8VUNoYXIzMj4mIHBy
ZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNvZGVQb2ludCkKK2Jvb2wgaXNMb29rYWxpa2VTZXF1
ZW5jZShjb25zdCBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNo
YXIzMiBjb2RlUG9pbnQpCiB7CiAgICAgaWYgKCFwcmV2aW91c0NvZGVQb2ludCB8fCAqcHJldmlv
dXNDb2RlUG9pbnQgPT0gJy8nKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDMsNyArMTQz
LDcgQEAgYm9vbCBpc0xvb2thbGlrZVNlcXVlbmNlKGNvbnN0IE9wdGlvbmFsPFVDaGFyMzI+JiBw
cmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjb2QKICAgICAgICAgfHwgaXNMb29rYWxpa2VQYWly
KCpwcmV2aW91c0NvZGVQb2ludCwgY29kZVBvaW50KTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb29r
YWxpa2VDaGFyYWN0ZXIoY29uc3QgT3B0aW9uYWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50
LCBVQ2hhcjMyIGNvZGVQb2ludCkKK3N0YXRpYyBib29sIGlzTG9va2FsaWtlQ2hhcmFjdGVyKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4mIHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNv
ZGVQb2ludCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFz
IHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CiAgICAgLy8gYW55IG5vbi1wcmludGFibGUg
Y2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKQEAgLTM0
Niw3ICszNDYsNyBAQCBzdGF0aWMgYm9vbCBhbGxDaGFyYWN0ZXJzSW5BbGxvd2VkSUROU2NyaXB0
TGlzdChjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbgogewogICAgIGxvYWRJRE5BbGxv
d2VkU2NyaXB0TGlzdCgpOwogICAgIGludDMyX3QgaSA9IDA7Ci0gICAgT3B0aW9uYWw8VUNoYXIz
Mj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91
c0NvZGVQb2ludDsKICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewogICAgICAgICBVQ2hhcjMyIGM7
CiAgICAgICAgIFUxNl9ORVhUKGJ1ZmZlciwgaSwgbGVuZ3RoLCBjKTsKQEAgLTU3NCw3ICs1NzQs
NyBAQCBzdGF0aWMgYm9vbCBhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNo
YXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCiB9CiAKIC8vIFJldHVybiB2YWx1ZSBvZiBudWxs
IG1lYW5zIG5vIG1hcHBpbmcgaXMgbmVjZXNzYXJ5LgotT3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0
TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlvbiBkZWNvZGVGdW5j
dGlvbikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhv
c3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlvbiBkZWNvZGVGdW5jdGlvbikKIHsKICAgICBpZiAoaG9z
dE5hbWUubGVuZ3RoKCkgPiBob3N0TmFtZUJ1ZmZlckxlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwpAQCAtNjA5LDcgKzYwOSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gbWFwSG9zdE5hbWUo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSwgVVJMRGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVuCiAgICAg
cmV0dXJuIFN0cmluZyhkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7
CiB9CiAKLXVzaW5nIE1hcHBpbmdSYW5nZXNWZWN0b3IgPSBPcHRpb25hbDxWZWN0b3I8c3RkOjp0
dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQsIFN0cmluZz4+PjsKK3VzaW5nIE1hcHBpbmdSYW5nZXNW
ZWN0b3IgPSBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25l
ZCwgU3RyaW5nPj4+OwogCiBzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
LCBNYXBwaW5nUmFuZ2VzVmVjdG9yJiBhcnJheSwgVVJMRGVjb2RlRnVuY3Rpb24gZGVjb2RlRnVu
Y3Rpb24pCiB7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbG9jYXRpb24KICAg
ICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBudWxsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBh
bmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNhdGUgZXJyb3IuCiAKICAgICBTdHJpbmcgc3Vic3Ry
aW5nID0gc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGxvY2F0aW9uLCBsZW5ndGgpOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN1YnN0cmluZywgZGVjb2RlRnVu
Y3Rpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3Vi
c3RyaW5nLCBkZWNvZGVGdW5jdGlvbik7CiAKICAgICBpZiAoaG9zdCAmJiAhKmhvc3QpCiAgICAg
ICAgIHJldHVybjsKQEAgLTc3Myw3ICs3NzMsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2Fm
ZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2VCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gc291cmNlQnVmZmVyLmxlbmd0aCgpOwogCi0gICAgT3B0aW9uYWw8VUNoYXIzMj4g
cHJldmlvdXNDb2RlUG9pbnQ7CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0Nv
ZGVQb2ludDsKIAogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsg
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9VUkxIZWxwZXJzLmgKaW5kZXggNzBkOGU5NDRlOTQwOWYyYzc5NTI0MjI2YTBkNjFhNmE0
NmJkM2E4Yi4uNGU2Y2I0N2I5Y2ViMDAwNWM0ZWY5MzI0ZGVjNGI2OWEwYThmZDhlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TEhlbHBlcnMuaApAQCAtNDAsNyArNDAsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVz
ZXJWaXNpYmxlVVJMKGNvbnN0IENTdHJpbmcmIFVSTCk7CiB2b2lkIGxvYWRJRE5BbGxvd2VkU2Ny
aXB0TGlzdCgpOwogdm9pZCBhZGRTY3JpcHRUb0lETkFsbG93ZWRTY3JpcHRMaXN0KGNvbnN0IGNo
YXIqIHNjcmlwdE5hbWUpOwogdm9pZCBpbml0aWFsaXplRGVmYXVsdElETkFsbG93ZWRTY3JpcHRM
aXN0KCk7Ci1PcHRpb25hbDxTdHJpbmc+IG1hcEhvc3ROYW1lKGNvbnN0IFN0cmluZyYsIFVSTERl
Y29kZUZ1bmN0aW9uKTsKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBT
dHJpbmcmLCBVUkxEZWNvZGVGdW5jdGlvbik7CiBTdHJpbmcgbWFwSG9zdE5hbWVzKGNvbnN0IFN0
cmluZyYsIFVSTERlY29kZUZ1bmN0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgVVJMSGVscGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1VSTFBhcnNlci5jcHAKaW5kZXggNDZlNDUzOWM1ZGJkMzExODBjN2YyMDJjZGFjODEyN2ZmZWJk
YjRjMS4uYmUxYTdlNjcxMGMwMDMyNjUyZTQ4MzgwOTRlZTBlYzdmMmM4OTk3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQ
YXJzZXIuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVU
RjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmMKICAg
ICB9CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJz
ZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MTZfdCBmdHBQb3J0ID0gMjE7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MTZfdCBodHRwUG9ydCA9IDgwOwpAQCAtNjk4LDcgKzY5OCw3IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgfQogfQogCi1P
cHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1l
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwODAsOSArMjA4
MCw5IEBAIHN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8
dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QKICAgICByZXR1cm4gZW5kIC0gYmVnaW47CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0
IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90
LCA4PiYgYWRkcmVzcykKIHsKLSAgICBPcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CiAgICAgc2l6ZV90IGxvbmdlc3RMZW5ndGggPSAw
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgIHNpemVfdCBs
ZW5ndGggPSB6ZXJvU2VxdWVuY2VMZW5ndGgoYWRkcmVzcywgaSk7CkBAIC0yMjkyLDcgKzIyOTIs
NyBAQCBFeHBlY3RlZDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJz
aW5nRXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJUAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotT3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJ
bnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3N0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKIHsKICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMjUs
MTEgKzIzMjUsMTEgQEAgT3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3QKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVS
TFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gaXRlcmF0b3IpCitzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiB7CiAgICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9
IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRv
cikpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2
NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCiAgICAgICAgICAgICBhZGRyZXNzID0gKGFkZHJl
c3MgPDwgOCkgKyBwaWVjZS52YWx1ZSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM0Nyw3ICsyMzQ3LDcgQEAgT3B0aW9uYWw8VVJMUGFyc2Vy
OjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2Rl
UG9pbnQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVS
TFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZB
ZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4gYykKIHsKICAgICBBU1NFUlQoKmMgPT0gJ1snKTsKICAgICBjb25zdCBhdXRvIGhv
c3RCZWdpbiA9IGM7CkBAIC0yMzU3LDcgKzIzNTcsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQ
djZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cgogCiAgICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19
OwogICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIE9wdGlvbmFsPHNpemVfdD4gY29t
cHJlc3NQb2ludGVyOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7
CiAgICAgYm9vbCBwcmV2aW91c1ZhbHVlV2FzWmVybyA9IGZhbHNlOwogICAgIGJvb2wgaW1tZWRp
YXRlbHlBZnRlckNvbXByZXNzID0gZmFsc2U7CiAKQEAgLTIzODgsNyArMjM4OCw3IEBAIE9wdGlv
bmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBv
aW50ZXIgPCA2KSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0
QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2NihjKSkgewogICAgICAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIg
JiYgcGllY2VQb2ludGVyID09IDUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CkBAIC0y
NDQxLDcgKzI0NDEsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgIH0gZWxzZSBpZiAo
cGllY2VQb2ludGVyICE9IDgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJv
U2VxdWVuY2UoYWRkcmVzcyk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CiAgICAgaWYg
KHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQogICAgICAgICBwb3NzaWJsZUNvbXByZXNzUG9pbnRl
ci52YWx1ZSgpKys7CiAgICAgaWYgKFVOTElLRUxZKGNvbXByZXNzUG9pbnRlciAhPSBwb3NzaWJs
ZUNvbXByZXNzUG9pbnRlcikpCkBAIC0yNTE0LDcgKzI1MTQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6
YWRkTm9uU3BlY2lhbERvdFNsYXNoKCkKICAgICBtX3VybC5tX3F1ZXJ5RW5kICs9IDI7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFVSTFBhcnNlcjo6TENo
YXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUko
U3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKIHsKICAgICBMQ2hhckJ1ZmZl
ciBhc2NpaTsKICAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSAmJiAhc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkb21haW4sICJ4bi0tIikpIHsKQEAgLTI3ODcsNyArMjc4Nyw3
IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxT
dHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0
KQogewogICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAg
aWYgKHV0ZjguaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCmluZGV4IDRlODA1MDY5M2FhODhkMzVjNzgz
NDhjYjU3MzhkMDMwODc2YTc5MWUuLjA4YzMxNTgyYzFjZWY5NWRkZDE0M2UyNzZkNDk1MjI1NDI2
MjQwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1VSTFBhcnNlci5oCkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVk
Rm9ybSYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzU3BlY2lhbFNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBPcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBtYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKICAg
ICBzdGF0aWMgY29uc3QgVUlETkEmIGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
OwogICAgIHN0YXRpYyBib29sIGlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhcik7CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmll
dyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woU3RyaW5nVmlldyk7CiAKIHByaXZhdGU6CiAgICAgVVJMUGFyc2VyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsK
QEAgLTk5LDEwICs5OSwxMCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZElu
dGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9w
dGlvbmFsPExDaGFyQnVmZmVyPiBkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwmLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVy
IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
ICAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVf
dCk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3
IGlucHV0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUo
U3RyaW5nVmlldyBpbnB1dCk7CiAgICAgc3RhdGljIGJvb2wgaGFzRm9yYmlkZGVuSG9zdENvZGVQ
b2ludChjb25zdCBMQ2hhckJ1ZmZlciYpOwogICAgIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWlu
dDhfdCk7CiAgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFyMzIpOwpAQCAtMTI1LDkg
KzEyNSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZv
clN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFk
ZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJz
ZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRh
eFZpb2xhdGlvbik7CiAgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90
LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY2
QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+
IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPElQdjRB
ZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2
NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKICAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJl
c3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oCmluZGV4IGY2ODQ1ODA0ZTFlY2I3ZjViZTkxNGQ1MzJiN2Q3NjI5M2JjNDgy
MjQuLmJlN2I4YmJiY2FlMWI4ODg5MDZhNzdlNzA3MmJmODdhMTcwNzU4MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBA
IC0xNzA1LDEwICsxNzA1LDEwIEBAIHN0cnVjdCBDb21wYWN0TWFwVHJhaXRzIHsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQ29tcGFjdE1hcFRyYWl0czxPcHRpb25hbDxUPj4g
eworc3RydWN0IENvbXBhY3RNYXBUcmFpdHM8c3RkOjpvcHRpb25hbDxUPj4gewogICAgIHVzaW5n
IEl0ZW1UeXBlID0gVDsKLSAgICBzdGF0aWMgYm9vbCBoYXNWYWx1ZShjb25zdCBPcHRpb25hbDxU
PiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuICEhcmV0dXJuVmFsdWU7IH0KLSAgICBzdGF0aWMgSXRl
bVR5cGUgZXh0cmFjdFZhbHVlKE9wdGlvbmFsPFQ+JiYgcmV0dXJuVmFsdWUpIHsgcmV0dXJuIFdU
Rk1vdmUoKnJldHVyblZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGhhc1ZhbHVlKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VD4mIHJldHVyblZhbHVlKSB7IHJldHVybiAhIXJldHVyblZhbHVlOyB9Cisg
ICAgc3RhdGljIEl0ZW1UeXBlIGV4dHJhY3RWYWx1ZShzdGQ6Om9wdGlvbmFsPFQ+JiYgcmV0dXJu
VmFsdWUpIHsgcmV0dXJuIFdURk1vdmUoKnJldHVyblZhbHVlKTsgfQogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2Nv
YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9DUFVUaW1lQ29jb2EuY3BwCmluZGV4IGJkZjlj
ZjUxODg1YWFmMzcxM2QwMGRiZWU5ZTFkZDU1Yjk5N2UzMTEuLjRlMWVlOTA1ZDZjNzU2MTVlZWI4
ZTk5ZTk5MWY1MTU4Mzc4MDA5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQ
VVRpbWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW50NjRfdCB0aW1lVmFsdWVUb01pY3Jvc2Vjb25k
cyhjb25zdCB0aW1lX3ZhbHVlX3QmIHZhbHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9w
dGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCitzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IENQ
VVRpbWU6OmdldCgpCiB7CiAgICAgLy8gQWNjb3VudCBmb3IgY3VycmVudCB0aHJlYWRzLgogICAg
IHRhc2tfdGhyZWFkX3RpbWVzX2luZm8gdGhyZWFkSW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggOGU2OTcxZDUxMjRlYTc1NDg2MjczZWExMjRmMjJj
NjQwOGY0ZTQ2OS4uOGY5MDA3OTk3MmU4ZmI0NTg5YWEwY2NhYjAyOTNmZjg4ODkwNDU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMTc0LDcgKzE3NCw3IEBA
IGJvb2wgc2V0QWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoYm9vbCBhbGxvdywgUG9s
aWN5U2NvcGUgc2NvcGUpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8Ym9vbD4gYWxsb3dzTWF0ZXJp
YWxpemluZ0RhdGFsZXNzRmlsZXMoUG9saWN5U2NvcGUgc2NvcGUpCitzdGQ6Om9wdGlvbmFsPGJv
b2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlIHNjb3BlKQog
ewogI2lmZGVmIElPUE9MX1RZUEVfVkZTX01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTCiAgICAg
aW50IHJldCA9IGdldGlvcG9saWN5X25wKElPUE9MX1RZUEVfVkZTX01BVEVSSUFMSVpFX0RBVEFM
RVNTX0ZJTEVTLCB0b0lPUG9saWN5U2NvcGUoc2NvcGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dURi93
dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KaW5kZXggYjY4NzM3ZGE2ZTI5
MjM1ZDUxMjUwODAyMTE5ZjJiOGZjNjM3ZDMyOS4uYTdiYmRkMzkwYjgwOWNhYjY4ZjExZTc3NmUz
MThmZjk1ZjhiMDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5
bmNocm9ubwogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKICAgICB0YXNrX3ZtX2luZm9f
ZGF0YV90IHZtSW5mbzsKICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19W
TV9JTkZPX0NPVU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRy
YXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCA3NTA4ZjJm
NGYyZGM0MmU4MmFmODFmNjM0ODIwYzVkZDc2MDY1ZDBmLi40NWQyYjRkYzRiOGE4ZGZmMmE1ZjE5
ZTg2YmYwODEyYmQwNDQ2MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAt
MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAKIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3Ry
aW5nKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN0cmluZywg
bnVsbHB0cik7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhvc3QgPSBtYXBIb3N0TmFtZShz
dHJpbmcsIG51bGxwdHIpOwogICAgIGlmICghaG9zdCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4gISpob3N0ID8gc3RyaW5nIDogKE5TU3RyaW5nICopKmhvc3Q7CkBAIC0xMDgsNyAr
MTA4LDcgQEAgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCiAKIE5T
U3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQogewotICAgIE9wdGlvbmFs
PFN0cmluZz4gaG9zdCA9IG1hcEhvc3ROYW1lKHN0cmluZywgZGVjb2RlUGVyY2VudEVzY2FwZXMp
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3RyaW5nLCBk
ZWNvZGVQZXJjZW50RXNjYXBlcyk7CiAgICAgaWYgKCFob3N0KQogICAgICAgICByZXR1cm4gbmls
OwogICAgIHJldHVybiAhKmhvc3QgPyBzdHJpbmcgOiAoTlNTdHJpbmcgKikqaG9zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
LmNwcAppbmRleCBjNWJjYjA2YmVhNjQwMGJjNWRmNDgxMGIwM2I2MjdkNGI4ZTRkZjg3Li5lOTI4
YjFlZDYxM2I5YmIxNzljZmY3NzI0MDhiOWMxMTIyMzdkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwCkBAIC0z
MSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdGF0aWMgT3B0aW9uYWw8dWludDMy
X3Q+JiBhcHBsaWNhdGlvblNES1ZlcnNpb25PdmVycmlkZSgpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4mIGFwcGxpY2F0aW9uU0RLVmVyc2lvbk92ZXJyaWRlKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8dWludDMyX3Q+PiB2ZXJzaW9uOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPHVpbnQzMl90Pj4gdmVyc2lvbjsKICAgICBy
ZXR1cm4gdmVyc2lvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJM
Q29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCBhMTc5NzIw
Mzc5MzA2ZDA5Mjc1NzhiNDBkYTI0MjAzYTRhMzIwYjAzLi5kMWQxYjFiZGI2YzUyMmJiZGI5OTU3
YWIxYTk5Y2M3Nzc2Y2QzM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtOTIsNyAr
OTIsNyBAQCBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBVUkwmIHZlY3Rv
ckVsZW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0TlMoKF9fYnJpZGdlX3RyYW5zZmVyIGlkKXZlY3Rv
ckVsZW1lbnQuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwogfQogCi1PcHRpb25hbDxVUkw+IG1h
a2VWZWN0b3JFbGVtZW50KGNvbnN0IFVSTCosIGlkIGFycmF5RWxlbWVudCkKK3N0ZDo6b3B0aW9u
YWw8VVJMPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBVUkwqLCBpZCBhcnJheUVsZW1lbnQpCiB7
CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6TlNVUkwuY2xhc3NdKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvVmVjdG9yQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKaW5k
ZXggNmU4NDQ0YWZkMzU5NzU3NTEzY2E2YzY4Yzc2OTczOGUxMTE0NDg2Mi4uNTEyM2M1N2Q5MjA0
ZmFhMmVkZDYxZmM2Mjg1NzMwZjhkZWU0YzY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBhIGNvbnN0JiB0byBh
IGNvbGxlY3Rpb24gZWxlbWVudCBhbmQgY2FuIHJldHVybiBlaXRoZXIgYSBSZXRhaW5QdHI8aWQ+
IG9yIGFuIGlkCiAvLyBpZiB0aGUgdmFsdWUgaXMgYXV0b3JlbGVhc2VkLiBUaGUgbWFrZVZlY3Rv
ckVsZW1lbnQgZnVuY3Rpb24gdGFrZXMgYW4gaWdub3JlZAogLy8gcG9pbnRlciB0byB0aGUgdmVj
dG9yIGVsZW1lbnQgdHlwZSwgbWFraW5nIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgd29yaywg
YW5kIGFuCi0vLyBpZCBmb3IgdGhlIGFycmF5IGVsZW1lbnQsIGFuZCByZXR1cm5zIGFuIE9wdGlv
bmFsPFQ+IG9mIHRoZSB0aGUgdmVjdG9yIGVsZW1lbnQsCisvLyBpZCBmb3IgdGhlIGFycmF5IGVs
ZW1lbnQsIGFuZCByZXR1cm5zIGFuIHN0ZDo6b3B0aW9uYWw8VD4gb2YgdGhlIHRoZSB2ZWN0b3Ig
ZWxlbWVudCwKIC8vIGFsbG93aW5nIHVzIHRvIGZpbHRlciBvdXQgYXJyYXkgZWxlbWVudHMgdGhh
dCBhcmUgbm90IG9mIHRoZSBleHBlY3RlZCB0eXBlLgogLy8KIC8vICAgIFJldGFpblB0cjxpZD4g
bWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IENvbGxlY3Rpb25FbGVtZW50VHlwZSYgY29sbGVjdGlv
bkVsZW1lbnQpOwogLy8gICAgICAgIC1vci0KIC8vICAgIGlkIG1ha2VOU0FycmF5RWxlbWVudChj
b25zdCBWZWN0b3JFbGVtZW50VHlwZSYgdmVjdG9yRWxlbWVudCk7CiAvLwotLy8gICAgT3B0aW9u
YWw8VmVjdG9yRWxlbWVudFR5cGU+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1l
bnRUeXBlKiwgaWQgYXJyYXlFbGVtZW50KTsKKy8vICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yRWxl
bWVudFR5cGU+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFZlY3RvckVsZW1lbnRUeXBlKiwgaWQg
YXJyYXlFbGVtZW50KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+IFJldGFp
blB0cjxOU0FycmF5PiBjcmVhdGVOU0FycmF5KENvbGxlY3Rpb25UeXBlJiYpOwogdGVtcGxhdGU8
dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0b3JFbGVtZW50VHlwZT4gbWFr
ZVZlY3RvcihOU0FycmF5ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZnVjaHNpYS9D
UFVUaW1lRnVjaHNpYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lh
LmNwcAppbmRleCA3ZTc3MzE2MTI0OGZjZTU2NDYwY2YyN2NlOTVjZWNmYzI1ODMyN2ExLi5mYWJm
NGM4YzRiMmNhZGQxY2NjYTQyNjczODYwOTM1ZTQ4OTA5NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9mdWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9m
dWNoc2lhL0NQVVRpbWVGdWNoc2lhLmNwcApAQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgU2Vjb25k
cyB0aW1lVG9TZWNvbmRzKHp4X3RpbWVfdCB0KQogICAgIHJldHVybiBTZWNvbmRzKHQgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KFpYX1NFQygxKSkpOwogfQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVU
aW1lOjpnZXQoKQorc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAg
IC8vIEZ1Y2hzaWEgaXNzdWUgWlgtMjMxOCB0cmFja3MgYmVpbmcgYWJsZSB0byBnZXQgdGhlIG1v
bm90b25pYyBhbmQgdGhyZWFkCiAgICAgLy8gdGltZXMgYXRvbWljYWxseSBhbmQgYmVpbmcgYWJs
ZSB0byBzZXBhcmF0ZSBaWF9DTE9DS19USFJFQUQgaW50byB1c2VyIGFuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJHZW5lcmljLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5jcHAK
aW5kZXggMWFlYTQ2YWFlYTI2OTZkMDBiY2ZjMmE4YTc1ZGYxYzk0MjQyN2FkYi4uNDUzMzg3M2Q5
NjE1YTlhZTRjYTM0NjI1NmQ3MDI3M2RkMzUxOTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNzdXJlSGFuZGxlckdlbmVyaWMuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVz
c3VyZShDcml0aWNhbCwgU3luY2hyb25vdXMpCiB7CiB9CiAKLU9wdGlvbmFsPE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQorc3RkOjpvcHRpb25hbDxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9DaGFzc2lzVHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcApp
bmRleCAyZGQ2NWY0NmI1YjA4Y2I5ODA4YzA5MTNiMzY3MGQ2MDMwYzIzZTAzLi5hMWQ3NzY5NDJk
OTMzMTVlMzIwN2FhOTBjZjY4MTlkZjM1ZmQ0MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNU
eXBlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIE9w
dGlvbmFsPENoYXNzaXNUeXBlPiByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlwZSgpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxDaGFzc2lzVHlwZT4gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKQog
ewogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gYnVmZmVyOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBl
PiByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlwZSgpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkRE1JQ2hhc3Npc1R5cGUoKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCiB7
CiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBidWZmZXI7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJy
b3I+IGVycm9yOwpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+
IHJlYWRETUlDaGFzc2lzVHlwZSgpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3Rh
dGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkQUNQSUNoYXNzaXNUeXBlKCkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkQUNQSUNoYXNzaXNUeXBlKCkKIHsKICAgICBH
VW5pcXVlT3V0UHRyPGNoYXI+IGJ1ZmZlcjsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CkBAIC0xMjksNyArMTI5LDcgQEAgQ2hhc3Npc1R5cGUgY2hhc3Npc1R5cGUoKQogICAgIHN0
YXRpYyBDaGFzc2lzVHlwZSBjaGFzc2lzVHlwZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
aW5pdGlhbGl6ZUNoYXNzaXM7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUNoYXNzaXMs
IFtdIHsKLSAgICAgICAgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IG9wdGlvbmFsQ2hhc3Npc1R5cGUg
PSByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlwZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENo
YXNzaXNUeXBlPiBvcHRpb25hbENoYXNzaXNUeXBlID0gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5
cGUoKTsKICAgICAgICAgaWYgKCFvcHRpb25hbENoYXNzaXNUeXBlKQogICAgICAgICAgICAgb3B0
aW9uYWxDaGFzc2lzVHlwZSA9IHJlYWRETUlDaGFzc2lzVHlwZSgpOwogICAgICAgICBpZiAoIW9w
dGlvbmFsQ2hhc3Npc1R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmlu
ZGV4IDQzMDJmYTlmMWI0YmJhYTlmM2U5OTczMmY1YjI4YzZjYjNmZDgzOWIuLjFiNjZmMGVmYmE2
ZmQzOTIzOTRiMmJiMzYxYjRhOTgzZWQxNmFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxh
eShjb25zdCBTdHJpbmcmIHN0cmluZykKICNlbmRpZgogfQogCi1PcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgR1JlZlB0cjxH
RmlsZUluZm8+IGluZm8gPSBhZG9wdEdSZWYoZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhh
bmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKSk7
CiAgICAgaWYgKCFpbmZvKQpAQCAtMTI4LDcgKzEyOCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBm
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogICAgIHJldHVybiBnX2ZpbGVfaW5m
b19nZXRfc2l6ZShpbmZvLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkg
dG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0
IHN1cHBvcnQgaXQ/CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzNiw3ICsyMzYsNyBA
QCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1PcHRpb25hbDxpbnQzMl90PiBnZXRG
aWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90
PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewogICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmc0ZpbGUuZGF0YSgp
KSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9x
dWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RF
VklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50Q29kZXIuaAppbmRleCA2MTViZDEyNTdjODk3MjQwNzQzZjNiNTVhMjYyMTNiNjJh
MDM5MDg1Li5hZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3MTBkYjI2MDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtNDAsNyArNDAs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXIgewogICAgICAgICB0LmVuY29k
ZShlbmNvZGVyKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAK
aW5kZXggYjYwMzVkYjRlNzRkNzY3ODRlOGJhYWU2ZDA4YjQ4MWQ0Mzc2N2E3Yi4uNDYzNThiZGNi
ZjY1MmY3MTRiYTc3NmE2MmVjY2RjYmUyNDY2OTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgdm9pZCBD
b2RlcjxBdG9tU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEF0b21TdHJp
bmcmIGF0b21TdHJpbmcpCiAgICAgZW5jb2RlciA8PCBhdG9tU3RyaW5nLnN0cmluZygpOwogfQog
Ci1PcHRpb25hbDxBdG9tU3RyaW5nPiBDb2RlcjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IENvZGVyPEF0b21TdHJpbmc+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5n
OwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAs
OSArNjAsOSBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBsZW5ndGgp
OwogfQogCi1PcHRpb25hbDxDU3RyaW5nPiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwNCw3
ICsxMDQsNyBAQCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNv
ZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxl
bmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUg
dGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIu
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAt
MTE4LDkgKzExOCw5IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJp
bmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmlu
ZzsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBPcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gaXM4Qml0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXM4Qml0OwogICAgIGRlY29k
ZXIgPj4gaXM4Qml0OwogICAgIGlmICghaXM4Qml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgQ29kZXI8U0hBMTo6RGlnZXN0Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNIQTE6OkRpZ2VzdCYgZGlnZXN0KQogICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRpZ2VzdC5kYXRhKCksIHNpemVvZihkaWdlc3QpKTsK
IH0KIAotT3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBDb2RlcjxTSEEx
OjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTSEExOjpEaWdlc3Qg
dG1wOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEodG1wLmRhdGEoKSwg
c2l6ZW9mKHRtcCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVycy5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5oCmluZGV4IDU2ZDhkNjk5ZjYwMDNhNTAzZGQ5MTc1YmNkOGMzMzBmYTk1OWYzYTMuLmI3
NzIxNzY3ZDU4OTVmYzA1YTRhNzU5NjA3MmVjMWFmZDA4NTczN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgKQEAgLTQ2LDE0ICs0NiwxNCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQ29kZXI8c3RkOjpwYWlyPFQs
IFU+PiB7CiAgICAgICAgIGVuY29kZXIgPDwgcGFpci5maXJzdCA8PCBwYWlyLnNlY29uZDsKICAg
ICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFQsIFU+PiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8VCwgVT4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8VD4gZmlyc3Q7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gZmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmly
c3Q7CiAgICAgICAgIGlmICghZmlyc3QpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPFU+IHNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxV
PiBzZWNvbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29u
ZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02Miw4ICs2Miw4IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBDb2RlcjxzdGQ6OnBhaXI8VCwg
VT4+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0
aW9uYWw8VD4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENv
ZGVyPHN0ZDo6b3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAg
ICBpZiAoIW9wdGlvbmFsKSB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwpAQCAtNzQs
MjEgKzc0LDIxIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxU
Pj4gewogICAgICAgICBlbmNvZGVyIDw8IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAgfQogICAgIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxPcHRpb25hbDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxUPj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNFbmdhZ2VkOwogICAgICAgICBkZWNvZGVyID4+
IGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoISppc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+IHsgT3B0aW9uYWw8VD4geyBzdGQ6Om51bGxvcHQgfSB9
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxUPj4geyBz
dGQ6Om9wdGlvbmFsPFQ+IHsgc3RkOjpudWxsb3B0IH0gfTsKICAgICAgICAgCi0gICAgICAgIE9w
dGlvbmFsPFQ+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IHZhbHVlOwogICAgICAg
ICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRp
b25hbDxUPj4geyBPcHRpb25hbDxUPiB7IFdURk1vdmUoKnZhbHVlKSB9IH07CisgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8VD4+IHsgc3RkOjpvcHRpb25hbDxUPiB7
IFdURk1vdmUoKnZhbHVlKSB9IH07CiAgICAgfQogfTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IENvZGVy
PFdURjo6S2V5VmFsdWVQYWlyPEtlCiAgICAgICAgIGVuY29kZXIgPDwgcGFpci5rZXkgPDwgcGFp
ci52YWx1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8
S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxLZXlUeXBlPiBr
ZXk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8S2V5VHlwZT4ga2V5OwogICAgICAgICBkZWNvZGVy
ID4+IGtleTsKICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PnZhbHVlOwogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEy
NCwxNiArMTI0LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gc3RydWN0IFZlY3RvckNvZGVyPGZhbHNlLCBULCBpbmxpbmVDCiAgICAgICAgICAgICBlbmNv
ZGVyIDw8IHZlY3RvcltpXTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwog
ICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4gdG1wOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFQ+IGVsZW1l
bnQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGVsZW1lbnQ7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IGVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1Miw5ICsxNTIsOSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JDb2Rlcjx0cnVl
LCBULCBpbmxpbmVDYQogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNpemUo
KSAqIHNpemVvZihUKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkU2l6ZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZGVjb2RlZFNpemU7CiAgICAgICAgIGRl
Y29kZXIgPj4gZGVjb2RlZFNpemU7CiAgICAgICAgIGlmICghZGVjb2RlZFNpemUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTkyLDkgKzE5Miw5IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBl
bmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBlbmNvZGVyIDw8ICppdDsKICAgICB9CiAKLSAgICBz
dGF0aWMgT3B0aW9uYWw8SGFzaE1hcFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hNYXBUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXNoTWFwU2l6ZTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaGFzaE1hcFNpemU7CiAgICAgICAgIGRlY29kZXIg
Pj4gaGFzaE1hcFNpemU7CiAgICAgICAgIGlmICghaGFzaE1hcFNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAyLDExICsyMDIsMTEgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWkKICAgICAgICAgSGFzaE1hcFR5cGUgdGVtcEhhc2hNYXA7CiAgICAgICAgIHRlbXBI
YXNoTWFwLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpoYXNo
TWFwU2l6ZSkpOwogICAgICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgKmhhc2hNYXBTaXpl
OyArK2kpIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPEtleUFyZz4ga2V5OworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRlY29kZXIgPj4ga2V5Owog
ICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1hcHBlZEFyZz4gdmFsdWU7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1hcHBlZEFyZz4gdmFsdWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZh
bHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjMxLDE2ICsyMzEsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBDb2RlcjwK
ICAgICAgICAgICAgIGVuY29kZXIgPDwgKml0OwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25h
bDxIYXNoU2V0VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SGFzaFNldFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhhc2hTZXRTaXplOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBoYXNoU2V0U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNoU2V0U2l6
ZTsKICAgICAgICAgaWYgKCFoYXNoU2V0U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgSGFzaFNldFR5cGUgdGVtcEhhc2hTZXQ7CiAgICAgICAgIGZvciAo
dWludDY0X3QgaSA9IDA7IGkgPCAqaGFzaFNldFNpemU7ICsraSkgewotICAgICAgICAgICAgT3B0
aW9uYWw8S2V5QXJnPiBrZXk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEtleUFyZz4ga2V5
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgICAgICBpZiAoIWtleSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjYxLDkgKzI2MSw5IEBAIHRl
bXBsYXRlPD4gc3RydWN0IENvZGVyPFNlY29uZHM+IHsKICAgICAgICAgZW5jb2RlciA8PCBzZWNv
bmRzLnZhbHVlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFNlY29uZHM+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2
YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNv
ZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTI3Nyw5ICsyNzcsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxX
YWxsVGltZT4gewogICAgICAgICBlbmNvZGVyIDw8IHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxXYWxsVGltZT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1
ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTI5MCwyMiArMjkwLDIyIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdh
bGxUaW1lPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPEF0b21TdHJpbmc+IHsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBBdG9t
U3RyaW5nJik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBPcHRpb25hbDxBdG9tU3Ry
aW5nPiBkZWNvZGUoRGVjb2RlciYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxBdG9tU3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29kZXI8Q1N0cmluZz4gewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IENTdHJpbmcmKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIE9wdGlvbmFsPENTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxTdHJpbmc+IHsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcm
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8
U0hBMTo6RGlnZXN0PiB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgU0hBMTo6RGlnZXN0Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBPcHRpb25hbDxTSEExOjpEaWdlc3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4M2NkY2Q1NDJmODVmOWUxYzA4NjZhNmVhMDA1NTUz
ZDJhNzBhZmU0Li5jMDRiYTNmMmFjMWNiMTYyMjVmYjg3ODRiOTlkNTBhNzUyNTkzMTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2Rl
ciYgRGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKK0RlY29kZXIm
IERlY29kZXI6OmRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKIHsKICAg
ICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKICAgICAgICAg
cmV0dXJuICp0aGlzOwpAQCAtODMsNTIgKzgzLDUyIEBAIERlY29kZXImIERlY29kZXI6OmRlY29k
ZU51bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1E
ZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCitEZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKIHsK
ICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6
Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6
Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90PiYgcmVzdWx0KQogewogICAgIHJldHVy
biBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+
PihPcHRpb25hbDx1aW50MTZfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9y
Pj4oc3RkOjpvcHRpb25hbDx1aW50MTZfdD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8aW50MTZfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpv
cHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQogewogICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVz
dWx0KTsKIH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJf
dD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9
CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1
bHQpCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
JiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwogfQogCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCitEZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkK
IHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29k
ZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29k
ZXI6Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxpbnQ2NF90PiYgcmVzdWx0KQogewogICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxmbG9hdD4mIHJlc3VsdCkKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9y
Pj4oc3RkOjpvcHRpb25hbDxmbG9hdD4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7CiB9CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
ZG91YmxlPiYgcmVzdWx0KQorRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4mIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVj
b2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApp
bmRleCA3MDkxNDI5MzA3MDFkOTJjNzNhYjBmYzRhN2U3ZGRlYzczMjFkYzU0Li44NzYwNjJkMzQw
MWI0YmQzMjk3NmVjMWMxMWNkMzI5YjkxZmIzN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTQ1LDI5ICs0NSwyOSBAQCBwdWJsaWM6
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFs
PGJvb2w+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3Rk
OjpvcHRpb25hbDx1aW50OF90PiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6
b3B0aW9uYWw8aW50MTZfdD4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3Bl
cmF0b3I+PihzdGQ6Om9wdGlvbmFsPGludDMyX3Q+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxpbnQ2NF90PiYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+Jik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25h
bDxkb3VibGU+Jik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1
ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCisgICAgRGVjb2RlciYgb3BlcmF0b3I+Pihz
dGQ6Om9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICByZXN1bHQgPSBDb2RlcjxU
Pjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KLSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPEU+JiByZXN1
bHQpCisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPEU+JiByZXN1bHQpCiAg
ICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSA4LCAiRW51bSB0eXBlIFQg
bXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAg
ICAgICAgKnRoaXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+
IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7
CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2J1
ZmZlclBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggNmEyNTU0NjhiMGM0OTBmMDgzZjg1ZjkyMDEzM2Zi
MzFjODcyYjcxNi4uY2RhNWU1ZTE2MzI1MjQxYTFlN2I5NzE3MzA3Y2ZhZWI2YmQ4YzM0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRp
b24uY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIEZpbGVT
eXN0ZW1JbXBsIHsKIAogZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsgTm8s
IFllcyB9Owotc3RhdGljIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9s
bG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5nJiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzIHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxl
VHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
KQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0
aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQogICAgIHJldHVybiByZW5hbWUob2xkRmlsZW5hbWUu
ZGF0YSgpLCBuZXdGaWxlbmFtZS5kYXRhKCkpICE9IC0xOwogfQogCi1PcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIG1h
a2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRo
KQorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdHZmcyBmaWxlU3lzdGVtU3RhdDsKICAgICBpZiAoIXN0
YXR2ZnMoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVTeXN0ZW1T
dGF0KSkKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKICAgICByZXR1cm4gYXBw
ZW5kUmVzdWx0OwogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gaGFyZExpbmtDb3VudChjb25zdCBT
dHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBhdXRvIGxpbmtQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBzdGF0IHN0YXQ7CkBAIC0yNTIsNyArMjUyLDcgQEAg
Ym9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0
dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4g
ZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKQEAgLTI4
NSwxMiArMjg1LDEyIEBAIGJvb2wgaXNIaWRkZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICByZXR1cm4gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiB9CiAK
LU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9w
dGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0
dXJuIGZpbGVUeXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhwYXRoLCBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpObyk7CiB9CiAKLU9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlwZUZv
bGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZVR5
cGU+IGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IHJldHVybiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MocGF0aCwgU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCmluZGV4IGE3YmEwNDdiMDU3YzdiYzQzNzc3ZWUyMjkxOTRjZjliOGYyZmU3
NTUuLmJmNGY3Mzk3OTAzOTY5ODI3Y2ZhMjAzNWZhOTA1ZmViZjUyNDAzY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wg
dW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogfQogI2VuZGlmCiAKLU9wdGlv
bmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIHsK
ICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKICAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUlu
Zm8pKQpAQCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogICAgIHJldHVybiBmaWxlSW5mby5zdF9zaXplOwogfQog
Ci1PcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
CitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICNpZiBPUyhEQVJXSU4pIHx8IE9TKE9QRU5CU0QpIHx8IE9TKE5FVEJTRCkgfHwg
T1MoRlJFRUJTRCkKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGVuZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0o
Q09DT0EpCiAKLU9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
JiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBD
U3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0
YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1Ro
cmVhZGluZ1BPU0lYLmNwcAppbmRleCA1OTE3YjM3OWYxMmFmZjVmZjQyZDEzNDdmYmRjYjFmMjA4
YTA3MDdmLi5lZGI5YjUxODQ4Zjg5MGVkNGU1ZDA5NDAxNGY2ZGQ3ZjQyOTFhOGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgZGlz
cGF0Y2hfcW9zX2NsYXNzX3QgVGhyZWFkOjpkaXNwYXRjaFFPU0NsYXNzKFFPUyBxb3MpCiB9CiAj
ZW5kaWYKIAotYm9vbCBUaHJlYWQ6OmVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiBj
b250ZXh0LCBPcHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9TIHFvcykKK2Jvb2wgVGhyZWFk
Ojplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCogY29udGV4dCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9TIHFvcykKIHsKICAgICBwdGhyZWFkX3QgdGhyZWFkSGFu
ZGxlOwogICAgIHB0aHJlYWRfYXR0cl90IGF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXgg
YWEyN2JjZGIxM2FjODIzMTc1ZWEzYWM0MDJmNjRjODdiMDZmYzk2ZS4uYWFhZTAwNDlhZjI0NmQx
NWY5ZGQwYzJlNTlhZWM3ZGRjYWUyMjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMTc2
LDcgKzE3Niw3IEBAIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiBpbnB1
dERhdGFCdWZmZXIsIHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBCCiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoYmFzZTY0RW5jb2RlZChpbnB1dERhdGFCdWZmZXIsIGlucHV0TGVuZ3RoLCBwb2xpY3ksIG1h
cCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBpbnB1dERhdGFCdWZmZXIsIHVu
c2lnbmVkIGlucHV0TGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9u
cywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QgVCog
aW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERl
Y29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKCFp
bnB1dExlbmd0aCkKICAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IH07CkBAIC0yNTUs
NyArMjU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QKICAgICByZXR1cm4gZGVzdGluYXRp
b247CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0
cmluZyYgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNl
NjREZWNvZGVNYXAgbWFwKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERl
Y29kZShjb25zdCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4g
b3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBp
bnB1dC5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKQEAgLTI2
Myw3ICsyNjMsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25z
dCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjbwogICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvcHRpb25zLCBtYXAp
OwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3
IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVj
b2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUo
U3RyaW5nVmlldyBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMs
IEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0yNzEsMzEgKzI3
MSwzMSBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3
IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlTwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOwogfQog
Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFz
ZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRE
ZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29k
ZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlucHV0
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5w
dXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQsIE9w
dGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFw
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0
b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywg
QmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9
CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9w
dGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgT3B0
aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXAp
CiB7CiAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGRhdGEsIGxlbmd0aCwgb3B0aW9u
cywgbWFwKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0
aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFw
IG1hcCkKIHsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KGRhdGEpLCBsZW5ndGgsIG9wdGlvbnMsIG1hcCk7CiB9CiAKLU9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0
cmluZyYgaW5wdXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAg
ICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbnB1
dCkKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCks
IGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgg
fHwgaW5wdXQuaXM4Qml0KCkpCkBAIC0zMTEsMjYgKzMxMSwyNiBAQCBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQogICAgIHJldHVybiBi
YXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB7IH0sIEJh
c2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBp
bnB1dCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBi
YXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgeyB9LCBCYXNl
NjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCiB7
CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0RGVj
b2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgp
KSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAotT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVS
TERlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0
dXJuIGJhc2U2NERlY29kZUludGVybmFsKGRhdGEsIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVN
YXA6OlVSTCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJM
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmluZGV4IDY4NDFiZWM4OTEwNmFlNTliMGVlZjM1M2NhZTg1
ODUxNTY4MmYxMzkuLjM5ZTU2MDhkNjUyZjhiZDMzYjNhMmVkMGRjMWU2YzFhYWZmN2QwZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9CYXNlNjQuaApAQCAtNjksMTIgKzY5LDEyIEBAIFN0cmluZyBiYXNlNjRFbmNvZGVU
b1N0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNl
NjRFCiBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+JiwgQmFz
ZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFz
ZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIFN0cmluZyBiYXNlNjRF
bmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0
RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5j
b2RlTWFwOjpEZWZhdWx0KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNv
ZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZh
dWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NERlY29kZShTdHJpbmdWaWV3LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0s
IEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNl
NjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2Rl
TWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFw
ID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIE9w
dGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFz
ZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxC
YXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2Rl
TWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1ZpZXcsIE9wdGlvblNldDxCYXNlNjREZWNvZGVP
cHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVP
cHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRp
b25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
RGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9w
dGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQp
OworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0
aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7
CiAKIGlubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5j
b2RlTWFwIG1hcCkKIHsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIFN0cmluZyBiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8Y2hhcj4mKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhjb25zdCBDU3RyaW5nJik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJp
bmdWaWV3KTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJh
c2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8
Y2hhcj4mKTsKLVdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJh
c2U2NFVSTERlY29kZShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1Zp
ZXcpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBW
ZWN0b3I8Y2hhcj4mKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERl
Y29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L051bGxUZXh0QnJlYWtJdGVyYXRv
ci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9OdWxsVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBj
NTgzZmI0NDQ4NzFkZWM2ZTFiYmEwYTE5YmNlZDAyNmNiY2JlMWIwLi43ZDY2OGM3Nzc5MjQwMDZj
NzZhNjQ3NTRlNTAwODFjN2I5NDk1NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L051bGxUZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTnVsbFRl
eHRCcmVha0l0ZXJhdG9yLmgKQEAgLTMzLDEzICszMywxMyBAQCBwdWJsaWM6CiAgICAgTnVsbFRl
eHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgTnVsbFRleHRCcmVha0l0ZXJhdG9yJikg
PSBkZWxldGU7CiAgICAgTnVsbFRleHRCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oTnVsbFRleHRC
cmVha0l0ZXJhdG9yJiYpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwcmVj
ZWRpbmcodW5zaWduZWQpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2Vk
aW5nKHVuc2lnbmVkKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZv
bGxvd2luZyh1bnNpZ25lZCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xs
b3dpbmcodW5zaWduZWQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmgKaW5kZXggMzU2Yzc1NmM2OWE0ZDM2ZGE5N2IzMDUxYTAxYTQw
NWFiZDQ1ZTBlNy4uZTE5YWZlZGY1Y2FiYWM2NGM2ZTAwNTMxODIwNjg5NzBkYzcyOTdlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgKQEAg
LTM3LDEyICszNywxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRk
IGEgdmVyc2lvbiB0aGF0IGFsbG93cyBvdGhlciBkZWZpbml0aW9ucyBvZiBzcGFjZXMsIGxpa2Ug
aXNIVE1MU3BhY2Ugb3IgaXNIVFRQU3BhY2U/CiAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCBhIHZl
cnNpb24gdGhhdCBkb2VzIG5vdCBhbGxvdyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXM/CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBw
YXJzZUludGVnZXIoU3RyaW5nVmlldywgdWludDhfdCBiYXNlID0gMTApOwotdGVtcGxhdGU8dHlw
ZW5hbWUgSW50ZWdyYWxUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rKFN0cmluZ1ZpZXcsIHVpbnQ4X3QgYmFzZSA9IDEwKTsKK3RlbXBs
YXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHBh
cnNlSW50ZWdlcihTdHJpbmdWaWV3LCB1aW50OF90IGJhc2UgPSAxMCk7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnRlZ3JhbFR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuayhTdHJpbmdWaWV3LCB1aW50OF90IGJhc2UgPSAxMCk7CiAK
IGVudW0gY2xhc3MgVHJhaWxpbmdKdW5rUG9saWN5IHsgRGlzYWxsb3csIEFsbG93IH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0
aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCBiYXNlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5
KQordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGQ6Om9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgYmFzZSwgVHJhaWxpbmdKdW5rUG9s
aWN5IHBvbGljeSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC05NiwxNCArOTYsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICByZXR1
cm4gdmFsdWUudW5zYWZlR2V0KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlw
ZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwYXJzZUludGVnZXIoU3RyaW5nVmlldyBzdHJpbmcs
IHVpbnQ4X3QgYmFzZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRp
b25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlcihTdHJpbmdWaWV3IHN0cmluZywgdWludDhf
dCBiYXNlKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJz
ZUludGVnZXI8SW50ZWdyYWxUeXBlPihzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpLCBiYXNlLCBUcmFpbGluZ0p1bmtQb2xpY3k6OkRpc2FsbG93KTsKICAgICByZXR1cm4gcGFy
c2VJbnRlZ2VyPEludGVncmFsVHlwZT4oc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCksIGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeTo6RGlzYWxsb3cpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4gcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bmsoU3RyaW5nVmlldyBzdHJpbmcsIHVpbnQ4X3QgYmFzZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gc3RkOjpvcHRpb25hbDxJbnRlZ3JhbFR5
cGU+IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKFN0cmluZ1ZpZXcgc3RyaW5nLCB1
aW50OF90IGJhc2UpCiB7CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IHBhcnNlSW50ZWdlcjxJbnRlZ3JhbFR5cGU+KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcu
bGVuZ3RoKCksIGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeTo6QWxsb3cpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5jcHAKaW5kZXggZTA5NjcyOTAxZWY5M2ZmOTNiMzM0OTAxMDY3YTc1MzZmYmQx
MjcwNC4uNmNmNjIxMjkwZDBhYTFhMzQyOTlmMGViYTE2ZWY4MmM2YjgyZmY3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgYXV0byBTdHJpbmdWaWV3
OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKSAtPiBJdGVyYXRvciYKIGNsYXNz
IFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbXBsKGNvbnN0IFN0cmluZ1ZpZXcm
IHN0cmluZ1ZpZXcsIE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+JiYg
aXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQorICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYgc3Ry
aW5nVmlldywgc3RkOjpvcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiYm
IGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5n
VmlldykKICAgICAgICAgLCBtX2l0ZXJhdG9yKFdURk1vdmUoaXRlcmF0b3IpKQogICAgICAgICAs
IG1faW5kZXgoaW5kZXgpCkBAIC0xNzksMTMgKzE3OSwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OwotICAgIE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25h
bDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIHVuc2ln
bmVkIG1faW5kZXg7CiAgICAgdW5zaWduZWQgbV9pbmRleEVuZDsKIH07CiAKIFN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBz
dHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+
KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25h
bDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0
ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCmluZGV4IDg5MTlhMGQzNzRlMzcxNDE4NTBi
OTZkOWYwYmJhN2IyNTNiMTM0NmYuLmQwMDZhOGY2ZGY1OTA5ZjI0OGVmYWM0OTZhNjJiNTE4ZTMy
MzJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTU4LDE0
ICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgVGV4dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25z
dCBUZXh0QnJlYWtJdGVyYXRvciYpID0gZGVsZXRlOwogICAgIFRleHRCcmVha0l0ZXJhdG9yJiBv
cGVyYXRvcj0oVGV4dEJyZWFrSXRlcmF0b3ImJikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHByZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gc3dpdGNoT24obV9iYWNraW5nLCBbJl0oY29uc3QgYXV0byYgaXRl
cmF0b3IpIHsKICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcobG9jYXRpb24p
OwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZm9sbG93aW5n
KHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZv
bGxvd2luZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBz
d2l0Y2hPbihtX2JhY2tpbmcsIFsmXShjb25zdCBhdXRvJiBpdGVyYXRvcikgewogICAgICAgICAg
ICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhsb2NhdGlvbik7CkBAIC0xNzMsMTIgKzE3Mywx
MiBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3ImIG9wZXJhdG9yPShjb25z
dCBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciYpID0gZGVsZXRlOwogICAgIENhY2hlZFRleHRCcmVh
a0l0ZXJhdG9yJiBvcGVyYXRvcj0oQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3ImJikgPSBkZWZhdWx0
OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikg
Y29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9j
YXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iYWNraW5nLnByZWNlZGluZyhs
b2NhdGlvbik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbGxvd2luZyh1bnNp
Z25lZCBsb2NhdGlvbikgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dp
bmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iYWNr
aW5nLmZvbGxvd2luZyhsb2NhdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0uaApp
bmRleCA3MmM1NDY4NzIxNWU3YTg2NGQzMjY2NmNkYjBmMWFkZmU3ZjE4YTRjLi5jZDliOTkzNDc4
ZjFhZTE1ZWZhNTk5NGJmMWE4NGU3NThhNTA0MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRTdHJlYW0u
aApAQCAtMTk1LDcgKzE5NSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFZhbHVlT3JOdWxsPFQ+IGl0ZW0pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPcHRpb25hbDxJdGVt
PiYgaXRlbSkKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SXRlbT4mIGl0ZW0pCiB7CiAgICAgaWYgKGl0ZW0pCiAgICAgICAgIHJldHVy
biB0cyA8PCBpdGVtLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA5NzZmZGMx
MzhjYzdmMDkzNDZjN2RkZDAzYWUxNTBhZmY4ZjQ3NDc1Li4wYTVlZTdmOWIwYzcwMmI5MjMxYjc1
Mjg2Nzk4ZmJhZGM4MDc2Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQyMiw3ICs0
MjIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8
U3RyaW5nPiB7CiAjaWZkZWYgX19PQkpDX18KIAogV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0
cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPFN0cmluZz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgU3RyaW5nKiwgaWQp
OworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxl
bWVudChjb25zdCBTdHJpbmcqLCBpZCk7CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCmluZGV4IDExZjIyN2RhMzg1N2VmOGNlNDM4OWQ2
MTdmYTQ4YmMxYTFlZjRiMGIuLmVjYTY0ZGZmYjM4ODZkODU2ZjZjYzRlMTVmNzBjNTYxZmY4Yzdh
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JD
Ri5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvVGV4dEJyZWFrSXRlcmF0b3JDRi5oCkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zdHJpbmcgPSBzdHJpbmcuY3JlYXRl
Q0ZTdHJpbmdXaXRob3V0Q29weWluZygpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gcHJlY2VkaW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJhbmdlLmxvY2F0aW9uOwogICAgIH0KIAotICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9uKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKGxvY2F0aW9uID49IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KENGU3RyaW5nR2V0TGVuZ3RoKG1fc3RyaW5nLmdldCgpKSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdD
b2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KaW5kZXgg
ZjVhMzYzNTA1MGVkNWU3YzMwNTcxZjVkZDc5Mzk5MDIxZjA5MzVkYi4uNDYxODVjNmFlNjY1Mjhk
MTc4MGU3ZmU2MDcxZThhYjgyZTMyZmFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0
cmluZ0NvY29hLm1tCkBAIC0zNSw3ICszNSw3IEBAIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlF
bGVtZW50KGNvbnN0IFN0cmluZyYgdmVjdG9yRWxlbWVudCkKICAgICByZXR1cm4gYWRvcHROUygo
X19icmlkZ2VfdHJhbnNmZXIgaWQpdmVjdG9yRWxlbWVudC5jcmVhdGVDRlN0cmluZygpLmxlYWtS
ZWYoKSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgU3Ry
aW5nKiwgaWQgYXJyYXlFbGVtZW50KQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JF
bGVtZW50KGNvbnN0IFN0cmluZyosIGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJh
eUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0QnJl
YWtJdGVyYXRvcklDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuaAppbmRleCBkOWQzZWYwZGYyZGNhMmJiYTAwMTcwNTZmOWRjMDhlYzJlYjc1NzcyLi41
NzRkY2M4NjcxMGJiNGQ2YzA4Y2FiZjQ1MmU1Yjc0NWIxNDgwMmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2ljdS9UZXh0QnJlYWtJdGVyYXRvcklDVS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvaWN1L1RleHRCcmVha0l0ZXJhdG9ySUNVLmgKQEAgLTEyMCw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHByZWNlZGluZyh1bnNpZ25lZCBsb2NhdGlvbikgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjZWRpbmcodW5zaWduZWQgbG9jYXRpb24p
IGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKG1faXRl
cmF0b3IsIGxvY2F0aW9uKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCkBAIC0x
MjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmb2xsb3dpbmcodW5zaWduZWQgbG9jYXRpb24pIGNvbnN0
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZm9sbG93aW5nKHVuc2lnbmVkIGxvY2F0aW9u
KSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhtX2l0
ZXJhdG9yLCBsb2NhdGlvbik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gVUJSS19ET05FKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCA2NjU3NzQ4YWUxZDU0NDY0NWM5ZjMzN2M1ODhhYjBj
ZjdmNTI5MmFlLi42YjcyYzBlNGI4NTBkN2I4ZDEzOGYxOGQ1MzMxMGJmMWY0NjQwMWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtNTksNyArNTksNyBAQCBlbnVtIGNsYXNzIFNpZ25h
bCB7CiAgICAgVW5rbm93biA9IE51bWJlck9mU2lnbmFscwogfTsKIAotaW5saW5lIHN0ZDo6dHVw
bGU8aW50LCBPcHRpb25hbDxpbnQ+PiB0b1N5c3RlbVNpZ25hbChTaWduYWwgc2lnbmFsKQoraW5s
aW5lIHN0ZDo6dHVwbGU8aW50LCBzdGQ6Om9wdGlvbmFsPGludD4+IHRvU3lzdGVtU2lnbmFsKFNp
Z25hbCBzaWduYWwpCiB7CiAgICAgc3dpdGNoIChzaWduYWwpIHsKICAgICBjYXNlIFNpZ25hbDo6
QWNjZXNzRmF1bHQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHU0VHViwgU0lHQlVTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvQ1BVVGltZVVuaXguY3BwIGIvU291cmNlL1dU
Ri93dGYvdW5peC9DUFVUaW1lVW5peC5jcHAKaW5kZXggN2JjNDg1NjBlNjc5ZDllZWQ0MWRkNWRh
MTVhNmE5NTY3OGNkNDgzNi4uMDU5MGYzMzliNDgzZTdmNmVjNzk5MzVlZGFhMDhmMzA4ZjM3MTc5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5peC9DUFVUaW1lVW5peC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdW5peC9DUFVUaW1lVW5peC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3Rh
dGljIFNlY29uZHMgdGltZXZhbFRvU2Vjb25kcyhjb25zdCBzdHJ1Y3QgdGltZXZhbCYgdmFsdWUp
CiAgICAgcmV0dXJuIFNlY29uZHModmFsdWUudHZfc2VjKSArIFNlY29uZHM6OmZyb21NaWNyb3Nl
Y29uZHModmFsdWUudHZfdXNlYyk7CiB9CiAKLU9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6Omdl
dCgpCitzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiB7CiAgICAgc3RydWN0
IHJ1c2FnZSByZXNvdXJjZSB7IH07CiAgICAgaW50IHJldCA9IGdldHJ1c2FnZShSVVNBR0VfU0VM
RiwgJnJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyVW5peC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L01lbW9yeVByZXNzdXJl
SGFuZGxlclVuaXguY3BwCmluZGV4IGE5NmU0ZTVmNWFhNGY0Yjg4MDk0OWM4YTE5NjM4N2ZjZjQy
YWExNDAuLjRiY2QyNGY0NzAzODYzZTE1ZGRhNmExODIzMDczY2NlZTM3MGM2NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyVW5peC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdW5peC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJVbml4LmNwcApAQCAt
MTU0LDcgKzE1NCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVh
c2VNZW1vcnkoQ3JpdGljYWwpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIHJl
dHVybiBNZW1vcnlVc2FnZSB7cHJvY2Vzc01lbW9yeVVzYWdlKCksIG1lbW9yeUZvb3RwcmludCgp
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcAppbmRleCA0YTFhM2U1NDIyNWY1MjgwYTkw
ZmVlZWE3NDAzMTcxNmFjZWE1MTczLi4yY2VjOWVjYWRkODIyZGZhMWEwZjM4MzNhMDQyYWQ0NzM4
MWY1ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvd2luL0NQVVRpbWVXaW4uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0
YXRpYyBTZWNvbmRzIGZpbGVUaW1lVG9TZWNvbmRzKGNvbnN0IEZJTEVUSU1FJiBmaWxlVGltZSkK
ICAgICByZXR1cm4gU2Vjb25kcyB7IGR1cmF0aW9uSW4xMDBOUy5RdWFkUGFydCAvIGh1bmRyZWRz
T2ZOYW5vc2Vjb25kc1BlclNlY29uZCB9OwogfQogCi1PcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1l
OjpnZXQoKQorc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogewogICAgIC8v
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2phLWpwL2xpYnJhcnkvd2luZG93cy9kZXNrdG9w
L21zNjgzMjIzKHY9dnMuODUpLmFzcHgKICAgICBGSUxFVElNRSBjcmVhdGlvblRpbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMWQwYTIwNDRlODYyYWEzMGVmODA1NTFi
ZTFkNmMwZWQ3MmI5MzNkMS4uNmVmZGQ3NjEwOTE2ODY2MGM5YzVkZWNhZjFhZThjZDE4ZmM2NGE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCBz
dGF0aWMgYm9vbCBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFX
JiBmaW5kRGF0YSwgbG9uZyBsb25nJgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8dWludDY0X3Q+IGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3Ry
dWN0dXJlKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mb3JtYXRpb24p
CitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZ2V0RmlsZVNpemVGcm9tQnlIYW5kbGVG
aWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04m
IGZpbGVJbmZvcm1hdGlvbikKIHsKICAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKICAgICBm
aWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOwpAQCAtMTAz
LDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRh
KGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCB0CiAgICAgdGltZSA9IGZpbGVUaW1l
LlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7CiB9CiAK
LU9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlSGFuZGxlKQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1h
dGlvbjsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmlsZUhhbmRsZSwg
JmZpbGVJbmZvcm1hdGlvbikpCkBAIC0xMTIsNyArMTEyLDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+
IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlKQogICAgIHJldHVybiBnZXRG
aWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlvblN0cnVjdHVyZShmaWxlSW5mb3JtYXRp
b24pOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlm
ICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQpAQCAtMzM5LDcgKzMzOSw3IEBAIFN0cmlu
ZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hl
ZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7CiB9CiAKLU9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwog
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAppbmRleCA3YWI0YTA0ZjE3ODJhYzFkNjRiYzI3
YjY5ZThmZjA0NDJiMTQwNjg3Li5lNmJlYmRjMWNhMjAyNjE5ZWE0ZmQ3NjQyOWM5Y2UzZmU1MGFj
OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2lu
LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9u
ZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogICAgIHJlbGVh
c2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIAotT3B0aW9uYWw8TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFs
PE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3Bw
CmluZGV4IDYwMDZkMDEzNDUyMzAyYWRhOTBiODU4ZjRiMzdhNDMxZmEwNDE4MDQuLmRjMjQ4OWZm
ODllOGY5Zjg5MTRiYzhlM2ZjMjk2NmY0ZGVlZTU3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHVuc2lnbmVkIF9fc3RkY2FsbCB3
dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqIGRhdGEpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wg
VGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCogZGF0YSwgT3B0aW9uYWw8
c2l6ZV90PiBzdGFja1NpemUsIFFPUykKK2Jvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHN0YWNrU2l6ZSwgUU9T
KQogewogICAgIHVuc2lnbmVkIHRocmVhZElkZW50aWZpZXIgPSAwOwogICAgIHVuc2lnbmVkIGlu
aXRGbGFnID0gc3RhY2tTaXplID8gU1RBQ0tfU0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9OIDog
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlE
ZXRhaWxzVXBkYXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheURldGFpbHNVcGRhdGVCYXNlLmgKaW5kZXggOTQ4ZmI1NTg1NmVlOTk2MjY2OTEzNDY4ZGZl
ODgzZjY0NjkzNGY4NC4uZjQ0MTg0MjQ5YTJkZDM0NzIzYmJmYTNjNjEzMjNlZWMzM2U0OTdkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFp
bHNVcGRhdGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheURldGFpbHNVcGRhdGVCYXNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEFwcGxlUGF5
RGV0YWlsc1VwZGF0ZUJhc2UgOiBwdWJsaWMgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAg
ICAgVmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+IG5ld0xpbmVJdGVtczsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFz
ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlPiBkZWNvZGUoRGVjb2RlciYp
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlQmFzZShEZWNvZGVyJik7CiB9OwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEFwcGxlUGF5
RGV0YWlsc1VwZGF0ZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFz
ZT4gQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U+IEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5RGV0YWls
c1VwZGF0ZUJhc2UgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2Rlcikp
CkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZTo6ZGVjb2Rl
QmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNkZWZpbmUg
REVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3Rk
OjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYg
KCFuYW1lKSBcCiAgICAgICAgIHJldHVybiBmYWxzZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApp
bmRleCBlODMxZDAyZjJmYWUzNzJkN2U2NDUzNzJmYjE5YjE2MWYzZjBiOTA4Li5hNDAyNDFjNzg5
YmI0MjE5ZDZlMmEzYTNjOWE2ODRkODc5Y2E0ZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApA
QCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSB7CiAjZW5k
aWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YShEZWNvZGVyJik7CiB9OwpAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YT4gQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+
IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRl
Y29kZURhdGEoZGVjb2RlcikpCkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CiBib29sIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE6OmRlY29kZURhdGEoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwKLSAgICBPcHRpb25hbDx0
eXBlPiBuYW1lOyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2Rl
ciA+PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgIHJldHVybiBmYWxzZTsgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaAppbmRl
eCAyNTliMjBmNDQ0MjZmN2YxMTYyMzVkNTU2ZDI2N2YxODZkZTg1YzRiLi42YTBhODBiMTEyZWU4
NzI2MzE0ZTM0ZGFmNjMyYjZhYzc5ODgwNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5RXJyb3IuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxlUGF5RXJyb3IgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBcHBsZVBheUVycm9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheUVycm9y
PiBjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGUgY29kZSwgT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNv
bnRhY3RGaWVsZD4gY29udGFjdEZpZWxkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgc3Rh
dGljIFJlZjxBcHBsZVBheUVycm9yPiBjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGUgY29kZSwgc3Rk
OjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFw
cGxlUGF5RXJyb3IoY29kZSwgY29udGFjdEZpZWxkLCBtZXNzYWdlKSk7CiAgICAgfQpAQCAtNDks
OCArNDksOCBAQCBwdWJsaWM6CiAgICAgQXBwbGVQYXlFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZTsgfQogICAgIHZvaWQgc2V0Q29kZShBcHBsZVBheUVycm9yQ29kZSBjb2Rl
KSB7IG1fY29kZSA9IGNvZGU7IH0KIAotICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0
RmllbGQ+IGNvbnRhY3RGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFjdEZpZWxkOyB9Ci0g
ICAgdm9pZCBzZXRDb250YWN0RmllbGQoT3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVs
ZD4gY29udGFjdEZpZWxkKSB7IG1fY29udGFjdEZpZWxkID0gY29udGFjdEZpZWxkOyB9CisgICAg
c3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhY3RGaWVsZDsgfQorICAgIHZvaWQgc2V0Q29udGFjdEZpZWxk
KHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkKSB7
IG1fY29udGFjdEZpZWxkID0gY29udGFjdEZpZWxkOyB9CiAKICAgICBTdHJpbmcgbWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogICAgIHZvaWQgc2V0TWVzc2FnZShTdHJpbmcm
JiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSk7IH0KQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8
QXBwbGVQYXlFcnJvcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBBcHBsZVBh
eUVycm9yKEFwcGxlUGF5RXJyb3JDb2RlIGNvZGUsIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250
YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgIEFwcGxl
UGF5RXJyb3IoQXBwbGVQYXlFcnJvckNvZGUgY29kZSwgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVy
cm9yQ29udGFjdEZpZWxkPiBjb250YWN0RmllbGQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAg
ICAgICAgOiBtX2NvZGUoY29kZSkKICAgICAgICAgLCBtX2NvbnRhY3RGaWVsZChjb250YWN0Rmll
bGQpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgQXBwbGVQYXlFcnJvckNvZGUgbV9jb2RlOwotICAgIE9wdGlvbmFs
PEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IG1fY29udGFjdEZpZWxkOworICAgIHN0ZDo6b3B0
aW9uYWw8QXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZD4gbV9jb250YWN0RmllbGQ7CiAgICAgU3Ry
aW5nIG1fbWVzc2FnZTsKIH07CiAKQEAgLTgzLDEzICs4MywxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgogUmVmUHRyPEFwcGxlUGF5RXJyb3I+IEFwcGxlUGF5RXJyb3I6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAotICAgIE9wdGlv
bmFsPHR5cGU+IG5hbWU7IFwKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBk
ZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAoIW5hbWUpIFwKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7IFwKIAogICAgIERFQ09ERShjb2RlLCBBcHBsZVBheUVycm9yQ29kZSkKLSAgICBERUNPREUo
Y29udGFjdEZpZWxkLCBPcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPikKKyAgICBE
RUNPREUoY29udGFjdEZpZWxkLCBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0Rmll
bGQ+KQogICAgIERFQ09ERShtZXNzYWdlLCBTdHJpbmcpCiAKICN1bmRlZiBERUNPREUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKaW5k
ZXggYmVhNGIyM2EzNmZjY2ZkMzU0MDE1MDU5NmY5MTBlMTEyNTFmODY2MS4uNjIzYTExZmMwMzhm
MDBiNTFlM2YxYTMzMjk3MzE0YzY3NzNlMmNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3Ry
dWN0IEFwcGxlUGF5TGluZUl0ZW0gZmluYWwgOiBwdWJsaWMgQXBwbGVQYXlMaW5lSXRlbURhdGEg
ewogICAgIFN0cmluZyBhbW91bnQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRl
bT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01
OCwyNiArNTgsMjYgQEAgdm9pZCBBcHBsZVBheUxpbmVJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxl
UGF5TGluZUl0ZW0+IEFwcGxlUGF5TGluZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxBcHBsZVBheUxpbmVJdGVtPiBBcHBsZVBheUxpbmVJdGVtOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheUxpbmVJdGVtIHJlc3VsdDsKIAogICAg
IGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8VHlw
ZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBs
YWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmxhYmVsID0gV1RGTW92ZSgqbGFiZWwpOwog
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBhbW91bnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGFtb3VudDsKICAgICBkZWNvZGVyID4+IGFtb3VudDsKICAgICBpZiAoIWFtb3VudCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaAppbmRleCA5NThlMzZmYzBiNjU0Mjdm
MzViNjAwOGQ3NjAwMzBlYjdhZjAzZWI5Li44NDBmZWU4MTQyZDU3ODAzNDYyMWZlYTZkNGY4NDZl
YzA0ZDUyYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TGluZUl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBcHBsZVBh
eUxpbmVJdGVtRGF0YSB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlM
aW5lSXRlbURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKERlY29kZXImKTsKIH07CkBA
IC01Nyw3ICs1Nyw3IEBAIHZvaWQgQXBwbGVQYXlMaW5lSXRlbURhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8
QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxlUGF5
TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBheUxp
bmVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudC5o
CmluZGV4IGI5NjNlNGUyMTI0YzQxNTIxMGJjNWU5NDIyNzQzMmI4ZTE4ZmExZDEuLjc1Yjc0NDYy
MjY4MTI0MTk2NmE0Zjg5NjZlZmJkOTU0MTdjZGIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBz
dHJ1Y3QgQXBwbGVQYXlQYXltZW50IHsKICAgICB9OwogCiAgICAgVG9rZW4gdG9rZW47Ci0gICAg
T3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7Ci0gICAgT3B0
aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gc2hpcHBpbmdDb250YWN0OworICAgIHN0ZDo6
b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CiAgICAg
U3RyaW5nIGluc3RhbGxtZW50QXV0aG9yaXphdGlvblRva2VuOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRDb250YWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3Qu
aAppbmRleCA1ZTExYTg0ZGJiMWI4NTQ0OWEzYWQzNDlmYmEwZjYyMTBmZWFlOTUzLi5kYmE5OWZm
OGUwNDAzNDlkOTQyYTQzODQ5Mjg1Y2U0YzdlNTY3MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudENvbnRhY3QuaApAQCAt
NDIsNyArNDIsNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCB7CiAgICAgU3RyaW5n
IHBob25ldGljR2l2ZW5OYW1lOwogICAgIFN0cmluZyBwaG9uZXRpY0ZhbWlseU5hbWU7CiAgICAg
U3RyaW5nIGxvY2FsaXplZFBob25ldGljTmFtZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gYWRkcmVzc0xpbmVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFkZHJl
c3NMaW5lczsKICAgICBTdHJpbmcgc3ViTG9jYWxpdHk7CiAgICAgU3RyaW5nIGxvY2FsaXR5Owog
ICAgIFN0cmluZyBwb3N0YWxDb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kLmgKaW5kZXggZWViNWM4MzMxZmEzYzgy
NDdiNTdmMmVmY2Q1ODE1OTY1NDljOWY5Yi4uM2RhMjQwZmZkNDEyMDJiNjQwMTdkZWU1YjhkNzcx
ZTA1YWViNThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZC5oCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBBcHBs
ZVBheVBheW1lbnRNZXRob2QgewogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIFN0cmlu
ZyBuZXR3b3JrOwotICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7Ci0gICAgT3B0aW9uYWw8QXBwbGVQ
YXlQYXltZW50UGFzcz4gcGF5bWVudFBhc3M7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxUeXBlPiB0eXBlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50UGFzcz4gcGF5bWVudFBhc3M7CisgICAg
c3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBiaWxsaW5nQ29udGFjdDsKICAg
ICBTdHJpbmcgYmluZFRva2VuOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUu
aAppbmRleCBhYzdmNjI5ZjJiMGVmMGRiMGYyYjk0ZmNlYWUxOTA3N2E1MDc3ZjgwLi5jYjBhM2Qx
MDFjMzJkODc2NDlkZWI5NWNhOGE1ZjRlN2FjY2Y0ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGUuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0
aG9kTW9kZVVwZGF0ZSBmaW5hbCA6IHB1YmxpYyBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlCiAg
ICAgVmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IG5ld1NoaXBwaW5nTWV0aG9kczsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlQYXlt
ZW50TWV0aG9kTW9kZVVwZGF0ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
QEAgLTU0LDIwICs1NCwyMCBAQCB2b2lkIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gQXBwbGVQYXlQ
YXltZW50TWV0aG9kTW9kZVVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1l
dGhvZE1vZGVVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5
UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUgcmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2Rl
QmFzZShkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+PiBlcnJvcnM7CisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRlY29kZXIg
Pj4gZXJyb3JzOwogICAgIGlmICghZXJyb3JzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5lcnJvcnMgPSBXVEZNb3ZlKCplcnJvcnMpOwogCi0gICAgT3B0aW9uYWw8
VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBuZXdTaGlwcGluZ01ldGhvZHM7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IG5ld1NoaXBwaW5n
TWV0aG9kczsKICAgICBkZWNvZGVyID4+IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBpZiAoIW5l
d1NoaXBwaW5nTWV0aG9kcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dE1ldGhvZFVwZGF0ZS5oCmluZGV4IDcxOTVjOTM3ODU5MDY3NWE5OGM0YzM1M2JiYTRiOGI0ODE0
MTNjZDEuLjNhYzZkZmU2MDQ2NTU3MTk0NzliYmIxZmFlYzE4OTdhYzlmZDA5NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlIGZpbmFsIDogcHVibGljIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2Ug
ewogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RV
cGRhdGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDcgKzUyLDcgQEAg
dm9pZCBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kVXBkYXRlPiBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRh
dGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHJlc3VsdDsKIApAQCAtNjAsNyAr
NjAsNyBAQCBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZTo6ZGVjb2RlKERlY29kZQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4g
bmFtZTsgXAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4g
bmFtZTsgXAogICAgIGlmICghbmFtZSkgXAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5
bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQ
YXltZW50UmVxdWVzdC5oCmluZGV4IGI3NTI1NjEwNWMxYzNjNDQ2NjEyNWM2ZWU4ZDc0YmQ5OWUw
NmU2NjUuLjY0NjU1OTU3NThjOTVjNDBhNjNjYTcwNzYyYjUxMzlhYjI2YmU0Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50UmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
UmVxdWVzdC5oCkBAIC00NSwxMCArNDUsMTAgQEAgc3RydWN0IEFwcGxlUGF5UGF5bWVudFJlcXVl
c3QgOiBBcHBsZVBheVJlcXVlc3RCYXNlIHsKICAgICBTdHJpbmcgY3VycmVuY3lDb2RlOwogCiAg
ICAgU2hpcHBpbmdUeXBlIHNoaXBwaW5nVHlwZSB7IFNoaXBwaW5nVHlwZTo6U2hpcHBpbmcgfTsK
LSAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IHNoaXBwaW5nTWV0
aG9kczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPj4g
c2hpcHBpbmdNZXRob2RzOwogCiAgICAgQXBwbGVQYXlMaW5lSXRlbSB0b3RhbDsKLSAgICBPcHRp
b25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+IGxpbmVJdGVtczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gbGluZUl0ZW1zOwogCiAjaWYgZGVmaW5lZChB
cHBsZVBheVBheW1lbnRSZXF1ZXN0QWRkaXRpb25zX21lbWJlcnMpCiAgICAgQXBwbGVQYXlQYXlt
ZW50UmVxdWVzdEFkZGl0aW9uc19tZW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCmluZGV4IDMyMGE3MzYxZTMwNzQz
NzA2NWE3NGNiYmViODNkNzZlZjdlOGJiNzIuLjhkYzVhZTUyODJhZTc3NjNjOWFmNDliMGQwNjVk
YzM5ZTRmMDE0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlSZXF1ZXN0QmFzZS5oCkBAIC00NiwxNyArNDYsMTcgQEAgc3RydWN0IEFwcGxl
UGF5UmVxdWVzdEJhc2UgewogICAgIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZE5ldHdvcmtzOwog
ICAgIFN0cmluZyBjb3VudHJ5Q29kZTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBsZVBheUNv
bnRhY3RGaWVsZD4+IHJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM7Ci0gICAgT3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1aXJlZEJpbGxpbmdDb250YWN0Rmll
bGRzOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50Q29udGFjdD4gYmlsbGluZ0Nv
bnRhY3Q7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlDb250YWN0RmllbGQ+PiByZXF1
aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczsKLSAgICBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRD
b250YWN0PiBzaGlwcGluZ0NvbnRhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QXBwbGVQ
YXlDb250YWN0RmllbGQ+PiByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRhY3Q+IHNoaXBwaW5nQ29udGFjdDsKIAogICAg
IFN0cmluZyBhcHBsaWNhdGlvbkRhdGE7CiAgICAgVmVjdG9yPFN0cmluZz4gc3VwcG9ydGVkQ291
bnRyaWVzOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCi0gICAgT3B0aW9u
YWw8QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IGluc3RhbGxtZW50Q29uZmlndXJh
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
PiBpbnN0YWxsbWVudENvbmZpZ3VyYXRpb247CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQXBwbGVQ
YXlSZXF1ZXN0QmFzZUFkZGl0aW9uc19tZW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IDgxYjdhYjM3MjU3Mzk0
YjYxZWY1YzdmYjhjZDhjNzNmZmNiODAzZDAuLjhlZGYyZmY5YTM5ZDMyM2EzMjAzOTc3OGVhMDBk
ODgwYTIxNzFjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8QXBwbGVQYXlMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0m
JiBsaW5lSQogICAgIHJldHVybiBXVEZNb3ZlKGxpbmVJdGVtKTsKIH0KIAotc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4gY29udmVydEFuZFZhbGlkYXRlKE9wdGlv
bmFsPFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPj4mJiBsaW5lSXRlbXMpCitzdGF0aWMgRXhjZXB0
aW9uT3I8VmVjdG9yPEFwcGxlUGF5TGluZUl0ZW0+PiBjb252ZXJ0QW5kVmFsaWRhdGUoc3RkOjpv
cHRpb25hbDxWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4+JiYgbGluZUl0ZW1zKQogewogICAgIFZl
Y3RvcjxBcHBsZVBheUxpbmVJdGVtPiByZXN1bHQ7CiAgICAgaWYgKCFsaW5lSXRlbXMpCkBAIC01
ODgsOCArNTg4LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1bnNpZ25lZCBzaG8KIHsKICAgICBBcHBsZVBheVNo
aXBwaW5nQ29udGFjdFVwZGF0ZSB1cGRhdGU7CiAKLSAgICBPcHRpb25hbDxBcHBsZVBheUVycm9y
Q29kZT4gZXJyb3JDb2RlOwotICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+
IGNvbnRhY3RGaWVsZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb2RlPiBlcnJv
ckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkPiBjb250
YWN0RmllbGQ7CiAKICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgIGNhc2UgQXBwbGVQYXlTZXNz
aW9uOjpTVEFUVVNfU1VDQ0VTUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKaW5k
ZXggNDE1NjFkMWY2Mzk1OWM4YTZiMTk2MDc5ZTI0ZGFmOWRkNDA1MDMyMi4uYjdmNzA0Nzg4MWE4
MzhhMTgyYTEzMThmOTk3YjkyM2NmN2U0MzY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0KCkgPSBkZWZhdWx0OwogCiBBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6fkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0KCkgPSBk
ZWZhdWx0OwogCi1ib29sIGlzRmluYWxTdGF0ZVJlc3VsdChjb25zdCBPcHRpb25hbDxQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKK2Jvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdC5oCmluZGV4IDNhNzhkOGQ3ZDQ2YjlhZmJmMDg1ZTRjNWE2NWRiNTc3MGYyMzVl
NDQuLjNlNmJlMmRhMmNiMGIxNDY1N2U4YjA4N2U4MzAyMjNmZmY0MmMzNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0LmgKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQgewogICAgIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IGVy
cm9yczsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNGaW5hbFN0YXRlUmVzdWx0KGNvbnN0
IE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYpOworV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0ZpbmFsU3RhdGVSZXN1bHQoY29uc3Qgc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdD4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXBXZWJDb3JlLmgK
aW5kZXggODEzNmNhMzE1YjcyMjBmZDkwZWMwMTQzZmU3ZmM0NDk3MjEwZWEyOS4uZmVmMmJlZDdl
ZDVlM2UxY2NhYzk2ODY5MDkxM2NiOTVmZWVhNGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwV2ViQ29yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cFdlYkNvcmUuaApAQCAtNjMsOCAr
NjMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBm
aW5hbDsKIAogICAgIEFwcGxlUGF5U2V0dXBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsK
LSAgICBPcHRpb25hbDxTZXR1cEZlYXR1cmVzUHJvbWlzZT4gbV9zZXR1cEZlYXR1cmVzUHJvbWlz
ZTsKLSAgICBPcHRpb25hbDxCZWdpblByb21pc2U+IG1fYmVnaW5Qcm9taXNlOworICAgIHN0ZDo6
b3B0aW9uYWw8U2V0dXBGZWF0dXJlc1Byb21pc2U+IG1fc2V0dXBGZWF0dXJlc1Byb21pc2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxCZWdpblByb21pc2U+IG1fYmVnaW5Qcm9taXNlOwogICAgIFJlZlB0
cjxQZW5kaW5nQWN0aXZpdHk8QXBwbGVQYXlTZXR1cD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNo
aXBwaW5nQ29udGFjdFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oCmluZGV4IGRmMjdkYzg1MTYyNTFmYzIzOWVi
MzA1ZjNlNzg5ZjQ2ZWE1YmEyM2EuLmIwNjkyMjg0N2ZmODQxY2ZiMjExNjg3ODE2NjFjY2YzZjYx
NDQ4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
c3RydWN0IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlIGZpbmFsIDogcHVibGljIEFwcGxl
UGF5RGV0YWlsc1VwZGF0ZUJhc2UgewogICAgIFZlY3RvcjxBcHBsZVBheVNoaXBwaW5nTWV0aG9k
PiBuZXdTaGlwcGluZ01ldGhvZHM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFVwZGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVw
ZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQ
YXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlIHJlc3VsdDsKIApAQCAtNjIsNyArNjIsNyBA
QCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RVcGRhdGU6OmRlY29kZShEZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAjZGVmaW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsg
XAorICAgIHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsg
XAogICAgIGlmICghbmFtZSkgXAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdN
ZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5oCmluZGV4IGNjZmJkNzE0NjE3NTM4YjljNjM2NDZkMzZjOTllMDRkYzMxOGE2ZjAu
LjBjNDMzM2NkMGE1NTE1YmMyNGVlOWRkZjhhOWMxODQzOTk0ZDA4MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIGZpbmFs
IDogcHVibGljIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhIHsKICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBw
bGVQYXlTaGlwcGluZ01ldGhvZD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxl
UGF5U2hpcHBpbmdNZXRob2Q+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKIApAQCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09E
RShuYW1lLCB0eXBlKSBcCi0gICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAorICAgIHN0ZDo6b3B0
aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFt
ZSkgXAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRh
LmgKaW5kZXggOGJiYTU0MWU3YTcwMzU5Mzg0YTQ1NTBiNDgyMWE4ODNlZGIzYmRjNi4uY2IwYmYy
OTVjZGUwMDMxNjBiOTNiN2RiODg4MGMzN2FjZmIzZjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERh
dGEuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEg
ewogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2REYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YShEZWNvZGVyJik7CiB9OwpAQCAt
NTcsNyArNTcsNyBAQCB2b2lkIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBp
bmdNZXRob2REYXRhPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEgcmVzdWx0OwogICAg
IGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0
ZS5oCmluZGV4IDg3ZmFjODhjNWQ0NjY3YjgyOTJlYjYxYTNhYjM0M2UwYzgxMTNlN2UuLjJhNWUz
NDdjZjVlNDEzMGUyODNiYmNlYjZhNWIyMmU4NWJlMDAwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFVwZGF0ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUgZmluYWwgOiBwdWJsaWMgQXBwbGVQYXlEZXRh
aWxzVXBkYXRlQmFzZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hp
cHBpbmdNZXRob2RVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RV
cGRhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4gQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZFVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2RVcGRhdGUgcmVzdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggNDg5M2JlMjExYzc5NDRj
ZmE5MTZiMjkxZmJhOTg0NTg1Y2QyZGY2Yi4uNWQ4Y2JiNjRiYTgyNmMyZTcxMzBiZjJjNTVkZTVk
OTA2Y2E0ZGQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMTMzLDIxICsxMzMsMjEgQEAgdm9pZCBQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24KICAgICBtX2NsaWVudC5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihw
YXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01l
dGhvZFVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24pOwogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
KSIpOwogICAgIG1fY2xpZW50LmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV1RGTW92
ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBp
bmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmIHVwZGF0ZSkKIHsKICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9uKTsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbigpIik7CiAg
ICAgbV9jbGllbnQuY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRh
dGUpKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBkYXRl
KQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7
CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lvbik7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKCkiKTsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5U
X01FVEhPRF9NT0RFKQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50
TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRl
PiYmIHVwZGF0ZSkKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRo
b2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0
ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lvbik7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZSgpIik7CkBA
IC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8QXBwbGVQYXlQYXltZW4KIAogI2VuZGlmIC8vIEVO
QUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKIAotdm9pZCBQYXltZW50Q29vcmRp
bmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHQ+JiYgcmVzdWx0KQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5
bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJiBy
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lvbik7CiAKQEAgLTI3Niw3ICsyNzYs
NyBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oUGF5
bWVudFNlc3Npb25FcnJvciYmIGVycm9yKQogICAgIG1fYWN0aXZlU2Vzc2lvbiA9IG51bGxwdHI7
CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXlt
ZW50TmV0d29yayhEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgcGF5
bWVudE5ldHdvcmspIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5h
dG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24s
IGNvbnN0IFN0cmluZyYgcGF5bWVudE5ldHdvcmspIGNvbnN0CiB7CiAgICAgaWYgKHZlcnNpb24g
PCAyICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocGF5bWVudE5ldHdvcmssICJqY2IiKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDE2N2VjMTUyMzE4MGE0ODZk
NjRlNmExNzRlMDBmZTljN2RlODZhYTcuLmE3YTc5ZDMyZjdiNmU1NjUzNmFkZDlhMmU4OWM4Mzhh
M2JhM2EyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuaApAQCAtNzMsMTMgKzczLDEzIEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgYmVnaW5QYXltZW50U2Vzc2lvbihEb2N1bWVudCYsIFBheW1lbnRTZXNzaW9uJiwgY29uc3Qg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hh
bnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01l
dGhvZFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBj
b21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0
aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21w
bGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGU+JiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5n
ZShzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpOwogI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+
JiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKTsKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24o
KTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAg
cHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKFBheW1lbnRT
ZXNzaW9uRXJyb3ImJik7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnRO
ZXR3b3JrKERvY3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3Vt
ZW50JiwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBib29s
IHNob3VsZEVuYWJsZUFwcGxlUGF5QVBJcyhEb2N1bWVudCYpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIEV4cGVjdGVkPHZvaWQsIEV4Y2VwdGlvbkRldGFpbHM+IHNob3VsZEFsbG93VXNlckFn
ZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggMzQw
ZGUyZmJkNjU0ODkzNDg0NmI4MDRlNzJjMTJkNjY3OTE4NzUzMC4uM2QzYmE5NjI2NDlhZTgyMWQy
ZDVjYjkzZDAwMjZhMzE5NjE5MzQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC01MSwyMCAr
NTEsMjAgQEAgY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzVmVyc2lvbih1bnNpZ25lZCB2ZXJzaW9uKTsKIAotICAgIHZpcnR1YWwgT3B0
aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdv
cmsoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5NYWtlUGF5bWVudHMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNv
bnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0
VXBkYXRlPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRo
b2RVcGRhdGU+JiYpID0gMDsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01P
REUpCi0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0
aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8QXBw
bGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJikgPSAwOwogI2VuZGlmIC8vIEVOQUJMRShB
UFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQ
YXltZW50U2Vzc2lvbihPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnRQYXltZW50U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3ll
ZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQppbmRleCBjZTU3MDg5
NmZmZDliZGVkYzk0ZmM3YzZmYTNhMTNkMTA0ZjU4NDcwLi44N2U1M2QyZDk4NjE3MDk5ZTcyYzRh
NDA2YTU0ODhiYTBjNzk1Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1t
CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVt
ZW50KGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVtJiBpdGVtKQogICAgIHJldHVybiBpbnN0
YWxsbWVudEl0ZW07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRl
bT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBh
cnJheUVsZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50SXRl
bT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBpZCBh
cnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6UEFM
OjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudEl0ZW1DbGFzcygpXSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKaW5kZXggMjY4NmE5MDEyMDU3ZjUxOTczZmFlYzE4
OGUzYTMxM2Q1NjIwZmU4Yi4uMWQ1NGIwYWYwMTZmMTk3Y2I5ZTBhYWM0YWQzYzM3N2Q3ZWYyM2Ix
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVy
Y2hhbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZnJvbUpT
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBmcm9t
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogCiAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX3BrUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDEyOTMzYTQx
YjliOWY5MDBhNzFmMGNkNmQ3OGJhNDk3YWU0YTczOTQuLmI3MWY4NDgxZmMyOTZkODZjNzQwYTM5
OWM5ODJmMzU5NjU5ZTMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29h
Lm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8
UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSwgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTog
RG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBOU1N0cmluZy4KICAgICBhdXRvIGpzb25TdHJpbmcgPSBK
U09OU3RyaW5naWZ5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhv
ZENvY29hLm1tCmluZGV4IDNiYjYzZjAxNzZhZTI4MTFkYjJjMzE4NTM1NDk2Mzc5NDM4YTM3Mjku
Ljc2NTNkZTU0YWY1MzlmMjU2MWY0MjIzNmQzMGVjNjFhYjU4MDNkZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhv
ZENvY29hLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBBcHBsZVBheVBheW1lbnRQYXNzOjpB
Y3RpdmF0aW9uU3RhdGUgY29udmVydChQS1BheW1lbnRQYXNzQWN0aXZhdGlvblN0YXRlCiAgICAg
fQogfQogCi1zdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50UGFzcz4gY29udmVydChQS1Bh
eW1lbnRQYXNzICpwYXltZW50UGFzcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5
bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50UGFzcyAqcGF5bWVudFBhc3MpCiB7CiAgICAgaWYg
KCFwYXltZW50UGFzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTgxLDcgKzgx
LDcgQEAgc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXlt
ZW50UGFzcyAqcGF5bWVudFBhc3MpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZDo6VHlwZT4gY29udmVydChQS1BheW1lbnRNZXRo
b2RUeXBlIHBheW1lbnRNZXRob2RUeXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kOjpUeXBlPiBjb252ZXJ0KFBLUGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudE1l
dGhvZFR5cGUpCiB7CiAgICAgc3dpdGNoIChwYXltZW50TWV0aG9kVHlwZSkgewogICAgIGNhc2Ug
UEtQYXltZW50TWV0aG9kVHlwZURlYml0OgpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lk
IGNvbnZlcnQoQ05MYWJlbGVkVmFsdWU8Q05Qb3N0YWxBZGRyZXNzKj4gKnBvc3RhbEFkZHJlc3Ms
IEFwcGxlUGF5UGF5CiAgICAgcmVzdWx0LmNvdW50cnlDb2RlID0gcG9zdGFsQWRkcmVzcy52YWx1
ZS5JU09Db3VudHJ5Q29kZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENv
bnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxsaW5nQ29udGFjdCkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxsaW5n
Q29udGFjdCkKIHsKICAgICBpZiAoIWJpbGxpbmdDb250YWN0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQppbmRleCAyYzA2YjQ2
ZTgzNDRiNmY3N2U2NGNjNTRiY2JmYTRhYzY4MGI4Y2Q5Li4yMmQ1NDFjZGMxNjY3NTUzOGZiM2Qw
ZjE1OWMwZGYyNjg5NDM0MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQpA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25h
bDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9yKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uRXJyb3I+IGFkZGl0aW9uYWxFcnJv
cihOU0Vycm9yICplcnJvcikKIHsKICNpZiBIQVZFKFBBU1NLSVRfSU5TVEFMTE1FTlRTKQogICAg
IC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggUEtQYXltZW50RXJyb3JCaW5kVG9rZW5Vc2VySW5mb0tl
eSBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlNb2RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKaW5kZXggNGQxMjlhZWFlMGI4
NTM2MDU1MTFlY2E2MWQyMmFmMjk5YWU0YmZlNy4uNWIwMGIwZjhjYThhN2RkNGZlOWNmNTY0YWM4
NjJmYWRlNWFiMjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheU1vZGlmaWVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5TW9kaWZp
ZXIgewotICAgIE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFR5cGU+IHBheW1lbnRNZXRo
b2RUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVHlwZT4gcGF5
bWVudE1ldGhvZFR5cGU7CiAgICAgVmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+IGFkZGl0
aW9uYWxTaGlwcGluZ09wdGlvbnM7CiAKICNpZiBkZWZpbmVkKEFwcGxlUGF5TW9kaWZpZXJBZGRp
dGlvbnNfbWVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwCmluZGV4IDU2MDE0MTg1OWUxY2IyYjI4YjdlZDU5ZDE1MGQ4YTc5Y2JjNjc4YzEuLjMy
M2M0Njc0ODU3ZjJiM2Q0ZjdkZjAzZDQzZTE2OTdlZGQzMWRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtMzYzLDcgKzM2Myw3IEBAIEV4
Y2VwdGlvbk9yPHN0ZDo6dHVwbGU8QXBwbGVQYXlMaW5lSXRlbSwgVmVjdG9yPEFwcGxlUGF5TGlu
ZUl0ZW0+Pj4gQXBwbGVQYXlQYXltCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodG90YWwpLCBXVEZN
b3ZlKGxpbmVJdGVtcykgfX07CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkRXJyb3IoU3RyaW5nJiYgbWVzc2FnZSwgT3B0aW9uYWw8QXBwbGVQYXlF
cnJvckNvbnRhY3RGaWVsZD4gY29udGFjdEZpZWxkLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJy
b3I+PiYgZXJyb3JzKQorc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFNoaXBwaW5nQ29udGFjdElu
dmFsaWRFcnJvcihTdHJpbmcmJiBtZXNzYWdlLCBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JD
b250YWN0RmllbGQ+IGNvbnRhY3RGaWVsZCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4m
IGVycm9ycykKIHsKICAgICBpZiAoIW1lc3NhZ2UuaXNOdWxsKCkpCiAgICAgICAgIGVycm9ycy5h
cHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpTaGlwcGluZ0Nv
bnRhY3RJbnZhbGlkLCBXVEZNb3ZlKGNvbnRhY3RGaWVsZCksIFdURk1vdmUobWVzc2FnZSkpKTsK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyhKU0M6OkpTT2JqZQogc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHZhbGlkYXRlKGNvbnN0IEFwcGxlUGF5TW9kaWZpZXImKSB7IHJldHVybiB7
IH07IH0KICNlbmRpZgogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnRE
ZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxl
cjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdAorRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9kaWZpZXI+
Pj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Zmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25z
dAogewogICAgIGF1dG8mIGRldGFpbHMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWls
cygpOwogICAgIGlmICghZGV0YWlscy5tb2RpZmllcnMpCkBAIC02NDQsNyArNjQ0LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0
ZWQoVmVjdG9yPFJlZlB0cjxBcHAKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1
bHQpCit2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAg
ICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0KHN0ZDo6bnVsbG9wdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRy
ZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAppbmRleCA4MDBlNzdiOTI0YmZmYjBmOTcx
OTQ0MzQyNDE4ZWQwNDZhM2NjYTM4Li4zMWIyOWRmMjM2ZDJiNDljMjdkMTNkNGQwMDVhNThhZjFj
MWZmNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1l
bnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaApA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMo
U3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVy
cm9yPj4mKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmll
bGRzJiYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+JikgY29uc3Q7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1lbnRNZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5
bWVudE1ldGhvZEVycm9ycywgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4mKSBjb25zdDsK
LSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZp
ZXIsIEFwcGxlUGF5TW9kaWZpZXI+Pj4gZmlyc3RBcHBsaWNhYmxlTW9kaWZpZXIoKSBjb25zdDsK
KyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGF5bWVudERldGFpbHNN
b2RpZmllciwgQXBwbGVQYXlNb2RpZmllcj4+PiBmaXJzdEFwcGxpY2FibGVNb2RpZmllcigpIGNv
bnN0OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hpcHBpbmdBZGRyZXNzVXBkYXRlZChWZWN0
b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiYmIGVycm9ycyk7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2hpcHBpbmdPcHRpb25VcGRhdGVkKCk7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGV0
YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3Is
IEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXlt
ZW50TWV0aG9kRXJyb3JzKSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFudFZh
bGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbHVlJiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxl
dGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRl
KHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmKSBmaW5hbDsKIAogICAgIC8v
IFBheW1lbnRTZXNzaW9uCkBAIC05NSw4ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBQYXltZW50
UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFBheW1lbnRS
ZXF1ZXN0PiBtX3BheW1lbnRSZXF1ZXN0OwotICAgIE9wdGlvbmFsPEFwcGxlUGF5UmVxdWVzdD4g
bV9hcHBsZVBheVJlcXVlc3Q7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVHlw
ZT4gbV9zZWxlY3RlZFBheW1lbnRNZXRob2RUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGVQ
YXlSZXF1ZXN0PiBtX2FwcGxlUGF5UmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5
UGF5bWVudE1ldGhvZFR5cGU+IG1fc2VsZWN0ZWRQYXltZW50TWV0aG9kVHlwZTsKIAogICAgIGVu
dW0gY2xhc3MgVXBkYXRlU3RhdGUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlv
bk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IGJlMTgzMjMxYWU5NWMzNzM2MzNhNzRlMWM3NGU3
MWE5YjFhYzQxMGMuLmE0MzI2Yzk0ZTg3Njc4YjViZDE1OWJlYTcwODk5NTdkODYwNjRjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3Qg
QXBwbGljYXRpb25NYW5pZmVzdCB7CiAgICAgQ29sb3IgdGhlbWVDb2xvcjsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBcHBsaWNhdGlv
bk1hbmlmZXN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxBcHBsaWNh
dGlvbk1hbmlmZXN0PiBBcHBsaWNhdGlvbk1hbmlmZXN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggMTk5
NzA1ZTU3OTdiMDg3ZTczMzcwNWQ5YTEwNTNkYWUyMjJhNjI2MS4uZTlkOGFmZTM2ZGJhOGZmM2Q0
YTg4NTJjNDk2NmNhYzA1NTJmN2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OmludmFsaWRhdGUoKQogICAgICAgICByZWplY3QoKTsK
IH0KIAotdm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OnNldERhdGEoT3B0aW9uYWw8UGFzdGVi
b2FyZEN1c3RvbURhdGE+JiYgZGF0YSwgc2l6ZV90IGluZGV4KQordm9pZCBDbGlwYm9hcmQ6Okl0
ZW1Xcml0ZXI6OnNldERhdGEoc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mJiBk
YXRhLCBzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IG1fZGF0YVRvV3JpdGUuc2l6
ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAppbmRleCBhNmM1OGJjOTI5
YjViYzc1NTJjYmQ2NTU0ZjQ4Mjk0N2EzNDI4MWQ3Li44YjI2NjZjOWMzYjgyZmQ4MWQzNTFiZTg5
ZTQ0ZjkxYTIxYThmN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaApAQCAtOTUsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAg
cHJpdmF0ZToKICAgICAgICAgSXRlbVdyaXRlcihDbGlwYm9hcmQmLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKTsKIAotICAgICAgICB2b2lkIHNldERhdGEoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiYsIHNpemVfdCBpbmRleCk7CisgICAgICAgIHZvaWQgc2V0RGF0YShzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYmLCBzaXplX3QgaW5kZXgpOwogICAgICAgICB2b2lk
IGRpZFNldEFsbERhdGEoKTsKICAgICAgICAgdm9pZCByZWplY3QoKTsKIAogICAgICAgICBXZWFr
UHRyPENsaXBib2FyZD4gbV9jbGlwYm9hcmQ7Ci0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4+IG1fZGF0YVRvV3JpdGU7CisgICAgICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPj4gbV9kYXRhVG9Xcml0ZTsKICAgICAgICAgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlOwogICAgICAgICB1bnNpZ25lZCBtX3BlbmRp
bmdJdGVtQ291bnQ7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3Rl
Ym9hcmQ7CkBAIC0xMTEsOSArMTExLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVzb2x2
ZU9yUmVqZWN0KEl0ZW1Xcml0ZXImKTsKIAotICAgIE9wdGlvbmFsPFNlc3Npb24+IG1fYWN0aXZl
U2Vzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlc3Npb24+IG1fYWN0aXZlU2Vzc2lvbjsKICAg
ICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPFBh
c3RlYm9hcmRDdXN0b21EYXRhPj4gbV9kYXRhVG9Xcml0ZTsKKyAgICBWZWN0b3I8c3RkOjpvcHRp
b25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4+IG1fZGF0YVRvV3JpdGU7CiAgICAgUmVmUHRyPEl0
ZW1Xcml0ZXI+IG1fYWN0aXZlSXRlbVdyaXRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXgg
NzkzNWQ3YTI5NjQ0ZmQ2MDJlODY5ZmM5YjZmOTMwMTI0YjM5ZWQyNS4uZDMzM2M2MTRhNDY1YmM2
NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1fZGF0YVNvdXJjZS0+Z2V0VHlwZSh0
eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBDbGlwYm9hcmRJdGVtOjpjb2xsZWN0
RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYmIGNvbXBsZXRpb24pCit2b2lk
IENsaXBib2FyZEl0ZW06OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3Rv
bURhdGE+KT4mJiBjb21wbGV0aW9uKQogewogICAgIG1fZGF0YVNvdXJjZS0+Y29sbGVjdERhdGFG
b3JXcml0aW5nKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0u
aAppbmRleCAyN2UxNzFhMjllYTdiZjI4ODY4YmVhNDIwYjRjMWRiYjljYjdkZjVmLi5kYWM2YWZm
YzY3NzU5Yzc1NzlhYmEyNjVkM2Y1YzFjMGNlNmVlN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5oCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwogICAg
IHZvaWQgZ2V0VHlwZShjb25zdCBTdHJpbmcmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAot
ICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGluYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJik7
CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
Pik+JiYpOwogCiAgICAgUHJlc2VudGF0aW9uU3R5bGUgcHJlc2VudGF0aW9uU3R5bGUoKSBjb25z
dCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblN0eWxlOyB9OwogICAgIE5hdmlnYXRvciogbmF2aWdh
dG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
CmluZGV4IGE2MjAxNmJiNTUwNDFlM2RhODg3ZjRmMWRmZjdjNzkyMDQ4YzA4ZjIuLjFhMTJlMDk5
MmE3NmNmYjQ0MmY1YTg2ZGM2OGY0YzEzNWM0NTNjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBD
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPERlZmVycmVkUHIKICAgICB9KTsKIH0KIAotdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4p
PiYmIGNvbXBsZXRpb24pCit2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmNv
bGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0
aW9uKQogewogICAgIG1faXRlbVR5cGVMb2FkZXJzLmNsZWFyKCk7CiAgICAgQVNTRVJUKCFtX2Nv
bXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaAppbmRleCBlODRmYmMzM2M1YzIyYzhlNDdkOTkwN2MwZGFiZmJlN2JjZDQwZGQ1Li45
MTRkYzMyNzI4MjczOGEwMDY3OWU2ZWQ0NDc0NzgxMGNlM2ZmYjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGdldFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4p
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQmIGRl
c3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEN1c3RvbURhdGE+KT4mJikgZmluYWw7CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5k
bGVyKCk7CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZlBlbmRpbmdDbGlwYm9hcmRUeXBlcyB7IDAgfTsKLSAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPik+IG1fY29tcGxldGlv
bkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgVmVjdG9yPFJlZjxD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4+IG1faXRlbVR5cGVMb2FkZXJzOwogICAgIFdlYWtQdHI8
Q2xpcGJvYXJkPiBtX3dyaXRpbmdEZXN0aW5hdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1EYXRh
U291cmNlLmgKaW5kZXggZjI5ODc1MzY5YTY5MjAyZjAzYTgxODFjMTllN2YyMWI3NjQ3MTJmMy4u
NmU0ZDI5YWFjYjQzOWU3M2YxNDJmYmNjNTYzNTg0MWMxNTJmN2Y5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbURhdGFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtRGF0YVNvdXJjZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFR5cGUoY29uc3QgU3RyaW5nJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJkJiBkZXN0aW5hdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4pPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQm
IGRlc3RpbmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVi
b2FyZEN1c3RvbURhdGE+KT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2xpcGJvYXJkSXRl
bSYgbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNv
dXJjZS5jcHAKaW5kZXggNzg1NWMwZWQxNTA4ZWJkNTRkNTllZjZmZDhkYmM2ZGRhYmI1OWU1ZS4u
MWViYmEzZWU5YjljNTU3MmQwMGQ3MDlkN2JlYmIxNWYwNzI0ZTVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlOjpnZXRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkCiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RB
bGxvd2VkRXJyb3IpOwogfQogCi12b2lkIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQordm9pZCBD
bGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhD
bGlwYm9hcmQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEN1c3RvbURhdGE+KT4mJiBjb21wbGV0aW9uKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVt
ZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1iYWNrZWQg
Q2xpcGJvYXJkSXRlbXMKICAgICAvLyBiYWNrIHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5nIENsaXBi
b2FyZC53cml0ZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFT
b3VyY2UuaAppbmRleCBlNWI3M2ZlNDMxZGYyNjIxYjBiNTM0ZWFkNzZjYzMxMDdkODJiZTdmLi41
ZDk4ZWQyYjY4MGIwM2M1YTk1YzlhYWE1MmE1ODA4MjQ5ZjZmMDhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2Fy
ZERhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBnZXRUeXBlKGNvbnN0IFN0cmluZyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYp
IGZpbmFsOwotICAgIHZvaWQgY29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYgZGVzdGlu
YXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURh
dGE+KT4mJikgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0RGF0YUZvcldyaXRpbmcoQ2xpcGJvYXJk
JiBkZXN0aW5hdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPik+JiYpIGZpbmFsOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbV90eXBl
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVh
Y29uLmNwcAppbmRleCBkMjRlZTI5ZGFlMzdmNDJhZGExNTEwN2IxNWNlODJmOTJkM2RhMWU2Li4y
ODgyYTg0ODcxYzljMmRlOTU5ZDVhY2ExMDVkMDVjZmU2MmVlNThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTk5LDcgKzk5
LDcgQEAgdm9pZCBOYXZpZ2F0b3JCZWFjb246OmxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpO
ZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJCZWFjb24gQVBJIGNhbm5v
dCBsb2FkICJfcywgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCBtZXNzYWdlTWlkZGxlLCBk
ZXNjcmlwdGlvbikpOwogfQogCi1FeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNl
bmRCZWFjb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8
RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFj
b246OnNlbmRCZWFjb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3Rk
OjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKIHsKICAgICBVUkwgcGFyc2VkVXJs
ID0gZG9jdW1lbnQuY29tcGxldGVVUkwodXJsKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIEV4Y2Vw
dGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9v
bD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBPcHRpb25hbDxGZXRjaEJvZHk6Oklu
aXQ+JiYgYm9keSkKK0V4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNv
bihOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKIHsKICAgICByZXR1
cm4gTmF2aWdhdG9yQmVhY29uOjpmcm9tKG5hdmlnYXRvciktPnNlbmRCZWFjb24oZG9jdW1lbnQs
IHVybCwgV1RGTW92ZShib2R5KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5oCmluZGV4IDgxM2I3NTFlNDIzYWViNDZmMTczZjZmMDVhMTUx
ZDE1ZjA4Y2VhMGIuLjkyZWIxOWQ0OTU1NDQ4N2FiZGViZTUxZWMxMTZjYTc1ZWU2N2IxYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oCkBA
IC00NCwxNCArNDQsMTQgQEAgY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1
cHBsZW1lbnQ8TmF2aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXMKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBOYXZpZ2F0b3JCZWFjb24oTmF2aWdhdG9yJik7CiAgICAgfk5hdmlnYXRvckJlYWNv
bigpOwotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBzZW5kQmVhY29uKE5hdmlnYXRvciYs
IERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIE9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4m
Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHNlbmRCZWFjb24oTmF2aWdhdG9yJiwg
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6Oklu
aXQ+JiYpOwogCiAgICAgc2l6ZV90IGluZmxpZ2h0QmVhY29uc0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9pbmZsaWdodEJlYWNvbnMuc2l6ZSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5hdmlnYXRvciYpOwogCiBwcml2YXRlOgotICAgIEV4
Y2VwdGlvbk9yPGJvb2w+IHNlbmRCZWFjb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHVybCwg
T3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBzZW5k
QmVhY29uKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hC
b2R5OjpJbml0PiYmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDk1YTg3
ZGQ3OTFhMzEyNDUyZDA3ZmM3YmNjYTgxNGFlYjJmNzA0ODYuLjEwZjg4YjE4OGExNjFkODFkNjMx
N2MyZjhhNDY1YjVkODE1OTZhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNlPj4g
RE9NQ2FjaGU6OmNsb25lUmVzcG9uc2VzKGNvbnN0IFZlY3RvcjxET01DYWNoZUVuZ2luZToKICAg
ICB9KTsKIH0KIAotdm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoT3B0aW9uYWw8UmVxdWVzdEluZm8+
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBNYXRjaEFsbFByb21pc2UmJiBw
cm9taXNlKQordm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5m
bz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIE1hdGNoQWxsUHJvbWlzZSYm
IHByb21pc2UpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
KQogICAgICAgICByZXR1cm47CkBAIC00MjEsNyArNDIxLDcgQEAgc3RhdGljIFJlZjxGZXRjaFJl
cXVlc3Q+IGNyZWF0ZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRE8KICAgICByZXR1cm4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5y
ZXF1ZXN0IH0sIEZldGNoT3B0aW9ucyB7IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29y
ZC5yZWZlcnJlciB9KTsKIH0KIAotdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0
SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYg
cHJvbWlzZSkKK3ZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4m
JiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlz
ZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCA5
MjBlNDIwYjEyYTg4ZDgyOTNkZTY3Y2EyODkxMTlkYWFkMDE3NGJmLi4xMzk3NTRkMzBlNDAwNzg1
NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCkBAIC00NywxMyArNDcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbWF0Y2goUmVx
dWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CiAKICAgICB1c2luZyBNYXRjaEFsbFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+Pj47Ci0gICAgdm9pZCBtYXRjaEFsbChP
cHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgTWF0Y2hBbGxQcm9t
aXNlJiYpOworICAgIHZvaWQgbWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwg
Q2FjaGVRdWVyeU9wdGlvbnMmJiwgTWF0Y2hBbGxQcm9taXNlJiYpOwogICAgIHZvaWQgYWRkKFJl
cXVlc3RJbmZvJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIHZvaWQgYWRk
QWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwog
ICAgIHZvaWQgcHV0KFJlcXVlc3RJbmZvJiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCByZW1vdmUoUmVxdWVzdEluZm8mJiwgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwotICAg
IHZvaWQga2V5cyhPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwg
S2V5c1Byb21pc2UmJik7CisgICAgdm9pZCBrZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+
JiYsIENhY2hlUXVlcnlPcHRpb25zJiYsIEtleXNQcm9taXNlJiYpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdWludDY0X3QgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IDhlNjJmYTE5MWMyYzllODM3Zjhl
ZDA5MzI0ZDc5OGViNTJmNWM4NDQuLmE0OTUwYjU5NDYyMjc2ZGQyNWRiNTJkMjllY2Y2ODEyMmU3
YzQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IENhY2hlSW5mb3MgewogICAgIENhY2hlSW5mb3Mg
aXNvbGF0ZWRDb3B5KCk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPENhY2hlSW5mb3M+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJbmZvcz4gZGVjb2RlKERlY29kZXIm
KTsKIAogICAgIFZlY3RvcjxDYWNoZUluZm8+IGluZm9zOwogICAgIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXI7CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBDYWNoZUluZm9zIHsKIAogc3RydWN0IENh
Y2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwog
CiAgICAgdWludDY0X3QgaWRlbnRpZmllciB7IDAgfTsKICAgICAvLyBUcnVlIGluIGNhc2Ugc3Rv
cmluZyBjYWNoZSBsaXN0IG9uIHRoZSBmaWxlc3lzdGVtIGZhaWxlZC4KQEAgLTExNSw3ICsxMTUs
NyBAQCB1c2luZyBDYWNoZUluZm9zQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENh
Y2hlSW5mb3NPckVycm9yJiYpPjsKIHVzaW5nIFJlY29yZHNPckVycm9yID0gRXhwZWN0ZWQ8VmVj
dG9yPFJlY29yZD4sIEVycm9yPjsKIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVjb3Jkc09yRXJyb3ImJik+OwogCi11c2luZyBDb21wbGV0aW9uQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEVycm9yPiYmKT47Cit1c2luZyBD
b21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
RXJyb3I+JiYpPjsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgQ2FjaGVJ
bmZvczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0xMjMsMTQgKzEyMywx
NCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDYWNoZUluZm9zOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVwZGF0ZUNvdW50ZXI7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxDYWNoZUluZm9z
PiBDYWNoZUluZm9zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPENhY2hlSW5mb3M+IENhY2hlSW5mb3M6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+PiBp
bmZvczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+PiBpbmZvczsKICAgICBk
ZWNvZGVyID4+IGluZm9zOwogICAgIGlmICghaW5mb3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdXBkYXRlQ291bnRlcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB1cGRhdGVDb3VudGVyOwogICAgIGRlY29kZXIgPj4gdXBkYXRl
Q291bnRlcjsKICAgICBpZiAoIXVwZGF0ZUNvdW50ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0xNDQsMTQgKzE0NCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxp
bmUgdm9pZCBDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ6OmVuY29kZShFbmNvZAogICAg
IGVuY29kZXIgPDwgaGFkU3RvcmFnZUVycm9yOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlk
ZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3Bl
cmF0aW9uUmVzdWx0PiBDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQ6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVu
dGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBkZWNvZGVyID4+IGhhZFN0b3JhZ2VFcnJv
cjsKICAgICBpZiAoIWhhZFN0b3JhZ2VFcnJvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCBmYTA1MGMyOGNmZmU1ZmZlZDk2ZDg4OGY5ODIyOWRkNDIyNDk1YTdhLi44YTljYjFm
Yzg3NWYyMzU3NzkzYTU4NjUwZTExZDllMWFmOWEyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERP
TUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZjxDYWNoZVN0b3JhCiAKIERPTUNhY2hlU3RvcmFnZTo6fkRPTUNhY2hlU3RvcmFn
ZSgpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0b3JhZ2U6
Om9yaWdpbigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogewogICAgIGF1dG8qIG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6
IG51bGxwdHI7CiAgICAgaWYgKCFvcmlnaW4pCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBET01D
YWNoZVN0b3JhZ2U6OmRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGlu
Zm8sIENhY2hlUXVlcnkKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpS
ZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBpbmZv
ID0gV1RGTW92ZShpbmZvKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKKyAgICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgaW5mbyA9IFdURk1vdmUoaW5mbyksIG9wdGlv
bnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5
T3B0aW9ucyYmIG9wCiAKIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBu
YW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewotICAgIHJl
dHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0
aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgcmV0cmlldmVDYWNo
ZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgp
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDEsNyArMTQxLDcgQEAgUmVmPERPTUNhY2hl
PiBET01DYWNoZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm8mJiBpbmYKICAgIHJldHVybiBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIFdURk1vdmUoaW5mby5uYW1lKSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rp
b24uY29weVJlZigpKTsKIH0KIAotdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFj
aykKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBh
dXRvIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigpOwogICAgIGlmICghb3JpZ2luKSB7CkBAIC0xODIs
NyArMTgyLDcgQEAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3QKIAogdm9pZCBET01DYWNoZVN0b3Jh
Z2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJm
YWNlPERPTUNhY2hlPj4mJiBwcm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBu
YW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4
Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRp
b24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZQogCiB2b2lkIERPTUNhY2hl
U3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsKLSAgICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRp
b24pIG11dGFibGUgeworICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDUs
NyArMjQ1LDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYg
bmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4KIAogdm9pZCBET01DYWNoZVN0b3Jh
Z2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQogewotICAgIHJldHJpZXZlQ2FjaGVzKFt0
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4
Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11
dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBi
NDBlYWFjZGVjODhmODc1NWEzMWU1OTliMmY3NTY1ZjJhMjlmNjg2Li4xOTQ3ZmM3YWNjYzllM2M5
OTM0NjM2NWRlZmQ5ZmNiNzc3MjUzYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKQEAgLTU1LDkgKzU1LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRvT3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8RE9NQ2FjaGU+PiYmKTsKICAgICB2b2lkIGRvUmVtb3ZlKGNvbnN0IFN0cmluZyYsIERP
TVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKICAgICB2b2lkIGRvU2VxdWVudGlhbE1h
dGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKLSAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgdm9pZCByZXRyaWV2ZUNh
Y2hlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
Jik7CiAgICAgUmVmPERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvJiYpOwotICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IG9yaWdpbigpIGNvbnN0OwogCiAgICAg
VmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2FjaGVzOwogICAgIHVpbnQ2NF90IG1fdXBkYXRlQ291
bnRlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0
cmlldmVSZWNvcmRzT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRy
aWV2ZVJlY29yZHNPcHRpb25zLmgKaW5kZXggYWZmMjc4ZDc1MWZjZDNkOGIwNDk3OTYwZDNhMjgy
ZGY4NmE1MGFkMS4uZThlNDhmZTRiYWRjYzYzYzhhYTdkYTc1NTRjNGY2YjIyOTRjYTcxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNP
cHRpb25zLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IFJldHJpZXZlUmVjb3Jkc09wdGlvbnMg
ewogICAgIFJldHJpZXZlUmVjb3Jkc09wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4geyByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwg
aWdub3JlVmFyeSwgc2hvdWxkUHJvdmlkZVJlc3BvbnNlIH07IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmV0cmlldmVSZWNvcmRzT3B0aW9ucz4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgYm9vbCBpZ25vcmVTZWFyY2ggeyBmYWxzZSB9
OwpAQCAtNDgsMjkgKzQ4LDI5IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lk
IFJldHJpZXZlUmVjb3Jkc09wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2Rl
ciA8PCByZXF1ZXN0IDw8IGlnbm9yZVNlYXJjaCA8PCBpZ25vcmVNZXRob2QgPDwgaWdub3JlVmFy
eSA8PCBzaG91bGRQcm92aWRlUmVzcG9uc2U7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IGlubGluZSBPcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRpb25zPiBSZXRyaWV2ZVJlY29yZHNP
cHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IFJldHJpZXZlUmVj
b3Jkc09wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJl
c291cmNlUmVxdWVzdD4gcmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVz
dD4gcmVxdWVzdDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaWdub3Jl
U2VhcmNoOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlU2VhcmNoOwogICAgIGRlY29k
ZXIgPj4gaWdub3JlU2VhcmNoOwogICAgIGlmICghaWdub3JlU2VhcmNoKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlTWV0aG9kOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlTWV0aG9kOwogICAgIGRlY29kZXIgPj4gaWdub3Jl
TWV0aG9kOwogICAgIGlmICghaWdub3JlTWV0aG9kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlVmFyeTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlnbm9yZVZhcnk7CiAgICAgZGVjb2RlciA+PiBpZ25vcmVWYXJ5OwogICAgIGlmICgh
aWdub3JlVmFyeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PGJvb2w+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNo
b3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBkZWNvZGVyID4+IHNob3VsZFByb3ZpZGVSZXNwb25z
ZTsKICAgICBpZiAoIXNob3VsZFByb3ZpZGVSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNr
ZXIvQ29udGFjdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIv
Q29udGFjdEluZm8uaAppbmRleCAzMGViNDYxN2JhYTg4MmNkOWVkMTk4NmQxNjJlMWEzZGU4N2Zk
M2E3Li4wNDllMmJlMDdiNDM4ZDMzYThhODE0ZWM1OTM1YzE3Nzk3ZWI0ZWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0SW5mby5oCkBA
IC0zNyw3ICszNyw3IEBAIHN0cnVjdCBDb250YWN0SW5mbyB7CiAgICAgVmVjdG9yPFN0cmluZz4g
dGVsOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb250
YWN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxDb250YWN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00OSwxOSArNDksMTkgQEAgdm9pZCBDb250YWN0
SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxDb250YWN0SW5mbz4gQ29udGFjdEluZm86OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb250YWN0SW5mbz4gQ29udGFjdEluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBu
YW1lOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5hbWU7CiAgICAgZGVjb2Rl
ciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbWFpbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBlbWFpbDsKICAgICBkZWNvZGVyID4+IGVtYWlsOwogICAgIGlmICgh
ZW1haWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0
b3I8U3RyaW5nPj4gdGVsOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHRlbDsK
ICAgICBkZWNvZGVyID4+IHRlbDsKICAgICBpZiAoIXRlbCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNr
ZXIvQ29udGFjdHNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1w
aWNrZXIvQ29udGFjdHNNYW5hZ2VyLmNwcAppbmRleCBlYTRiNmJlZGUxMmIxODMyMmIzMTRmM2Zl
OTU4MzdjZTRlMzNiNzk5Li41NzUxMzY3OGQzOTViMTUxYzg1MGFjZjcyMjRmZjM1MGMzNmE4YzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRh
Y3RzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tl
ci9Db250YWN0c01hbmFnZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBDb250YWN0c01h
bmFnZXI6OnNlbGVjdChjb25zdCBWZWN0b3I8Q29udGFjdFByb3BlcnR5PiYgcHJvcGVydGllcywg
Y29uc3QgQ28KIAogICAgIG1fY29udGFjdFBpY2tlcklzU2hvd2luZyA9IHRydWU7CiAKLSAgICBm
cmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJ
bmZvPj4mJiBpbmZvKSB7CisgICAgZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd0NvbnRhY3RQ
aWNrZXIocmVxdWVzdERhdGEsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGhpc10gKHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJiBpbmZvKSB7CiAgICAgICAgIG1fY29u
dGFjdFBpY2tlcklzU2hvd2luZyA9IGZhbHNlOwogICAgICAgICBpZiAoaW5mbykgewogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExTZXF1ZW5jZTxJRExEaWN0aW9uYXJ5PENvbnRhY3RJ
bmZvPj4+KCppbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFj
dC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
b250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKaW5kZXggMzBiMGNmMjczOGM4YmE0
MWVlYzU4MGU2ZDk1YjI4NmFlNDQ1MmU3Mi4uOTI4OWEyMzU0ZjMyMTUzZjRmYzY1NzAzZTMyOTg5
OTQ2ZGJlYjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBp
Y2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
b250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3Ry
dWN0IENvbnRhY3RzUmVxdWVzdERhdGEgewogICAgIFN0cmluZyB1cmw7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbnRhY3RzUmVxdWVzdERhdGE+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8Q29udGFjdHNSZXF1ZXN0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01MSwxOSArNTEsMTkgQEAgdm9pZCBDb250YWN0c1Jl
cXVlc3REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENvbnRhY3RzUmVxdWVzdERhdGE+IENvbnRhY3RzUmVx
dWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb250YWN0
c1JlcXVlc3REYXRhPiBDb250YWN0c1JlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8Q29udGFjdFByb3BlcnR5Pj4gcHJvcGVydGllczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250YWN0UHJvcGVydHk+PiBwcm9wZXJ0aWVzOwog
ICAgIGRlY29kZXIgPj4gcHJvcGVydGllczsKICAgICBpZiAoIXByb3BlcnRpZXMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBtdWx0aXBsZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG11bHRpcGxlOwogICAgIGRlY29kZXIgPj4gbXVsdGlwbGU7
CiAgICAgaWYgKCFtdWx0aXBsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPFN0cmluZz4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1cmw7CiAg
ICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L0NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4
IDIzN2I2ZjI5MzFkNjgyZTFjMTExMmEzMTRhM2RkNDc0M2M5ZThlYWQuLmE4NjUzMzkyYmNkMzFk
NmViNWQ1MjUxMzAxNTZiMDYzZGZiMDg5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucy5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgewogICAgIFJlZlB0cjxBYm9ydFNp
Z25hbD4gc2lnbmFsOwotICAgIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM+IHB1YmxpY0tleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM+IHB1YmxpY0tleTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRl
bnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCmluZGV4IDhjNzc0OWNj
NGUyZTJkNjg1YTg3MDlmOTVmNGM4NmU2MTc5NjI5ZDUuLjgxYzk0ZWFhZmE3NTlkZDhkMjY5NTUz
YWUzMThiNjhmNDFmZGQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
IHsKIAogICAgIE1lZGlhdGlvblJlcXVpcmVtZW50IG1lZGlhdGlvbjsKICAgICBSZWZQdHI8QWJv
cnRTaWduYWw+IHNpZ25hbDsKLSAgICBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM+IHB1YmxpY0tleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucz4gcHVibGljS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4
IDAxNmUwM2Y4Zjc3M2Y3NDhmMDZiYWE1Y2UzNDJmZGE4ZjhhOGU4OTYuLmMxZjRiZjQyZjZmYjk4
OGUyNGQyNTY4YTRjZGVkNTA3ZDg3NDlkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0K
IAotT3B0aW9uYWw8U3RyaW5nPiBDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IENETTo6c2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uaAppbmRleCAyMjMyYmYzOTYwZDJjYzE3ODhmMmUzMmYzNzI2NzY0OWJmMGQwNGU4
Li4xMDNkZGMwYzBhY2FhZGM2ZjJjNmIxYzExNDk4Yzk2YTZmM2U0OTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8Q0RNPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSk7CiAgICAgfkNETSgpOwogCi0gICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJh
dGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+KT47CiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImKTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKICAgICBTdHJpbmcgc3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCA0MTlkYjhkNTE3ZGZi
M2E0MzQwN2U4YTFiMTEwZmZlMDIxNTkxMTc1Li4wYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFh
NjcwNzQ0MGYyZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgbmFt
ZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9
IDUxMjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1J
RCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0
ZW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgIHJldHVy
biBwc3NoQm94ZXM7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJl
Z2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKIApAQCAtMjA1LDcgKzIwNSw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwpA
QCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXRE
YXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUu
c2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggNzlmZTUxMjgwNjE0ODVlY2Ey
OWYxYzM4MjYxNmI3ZTQ4NmUxOTAyMi4uNzMyOGU5ZjA0MGNmMTM1ODhkMmFkNWI2ZTg0NTkxNzg0
OGQ4M2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiAg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewogICAgICAgICB1c2luZyBT
YW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihj
b25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFj
ayA9IEZ1bmN0aW9uPE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVu
Y3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBTaGFy
ZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXpl
SW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpA
QCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtl
eWlkc05hbWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGI0OTEzMzFhMTY3ODYzNDZlOGU3
Yzc3NDM5OTE4OWE0YTdkYjk5MjIuLjYzOGQxNTkwM2JhNWU0ZmIwOWE5NmQwZGJmZWI3ZWEyZTRj
NGRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taQogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCBzZXNzaW9uSWQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDguMS4gTGV0IHNhbml0
aXplZCBzZXNzaW9uIElEIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBv
ZiBzZXNzaW9uSWQuCiAgICAgICAgIC8vIDguMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxl
ZCwgb3IgaWYgc2FuaXRpemVkIHNlc3Npb24gSUQgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdp
dGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZWRTZXNzaW9uSWQgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVNlc3Npb25JZChz
ZXNzaW9uSWQpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lv
bklkID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKICAg
ICAgICAgaWYgKCFzYW5pdGl6ZWRTZXNzaW9uSWQgfHwgc2FuaXRpemVkU2Vzc2lvbklkLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2Fu
aXRpemVkU1Nlc3Npb25JRCBlbXB0eSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5
cGVFcnJvcik7CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAg
ICAgICAgLy8gOC42LiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAgICAgICAgIC8vIDguNy4g
TGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3Mg
Y2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA4LjguIFVzZSB0aGUgY2RtIHRvIGV4ZWN1
dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmxvYWRT
ZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHNhbml0aXplZFNlc3Npb25JZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWQsIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFu
Y2VTZXNzaW9uLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklk
LCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRpemVkU2Vz
c2lvbklkLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKHN0ZDo6b3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1
cmUpIG11dGFibGUgewogICAgICAgICAgICAgLy8gOC44LjEuIElmIHRoZXJlIGlzIG5vIGRhdGEg
c3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbiwgcmVzb2x2
ZSBwcm9taXNlIHdpdGggZmFsc2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAg
Ly8gOC44LjIuIElmIHRoZSBzdG9yZWQgc2Vzc2lvbidzIHNlc3Npb24gdHlwZSBpcyBub3QgdGhl
IHNhbWUgYXMgdGhlIGN1cnJlbnQgTWVkaWFLZXlTZXNzaW9uIHNlc3Npb24gdHlwZSwgcmVqZWN0
IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAgICAgLy8g
OC44LjMuIExldCBzZXNzaW9uIGRhdGEgYmUgdGhlIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRp
emVkIHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbi4gVGhpcyBtdXN0IG5vdCBpbmNsdWRlIGRhdGEg
ZnJvbSBvdGhlciBvcmlnaW4ocykgb3IgdGhhdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIG9y
aWdpbi4KQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAg
ICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBM
ZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBj
ZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0
ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRl
TGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVs
ZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKndlYWtUaGlzKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5n
ZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVz
c2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQs
IG1fc2Vzc2lvblR5cGUsIHNhbml0aXplZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKGJvb2wgc2Vzc2lvbldh
c0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRp
b24sIHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2Us
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NjAwLDcgKzYwMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUg
bnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxv
d2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRh
KG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqd2Vha1RoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5z
dGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlw
ZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKndlYWtUaGlzKSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCBkOTM3ZmM5M2Fh
ZGM3OGY0MDBkZTJkOTNkMTlmNjE4YjNiNmEyMTJlLi40ZmY5MjNmNTJlMmVlOWZhOWM5YmE5Mzkz
NjhhYjkwNmJhNjRmMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtOTQsNyArOTQsNyBA
QCBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Okl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFw
JiBtYXApCiB7CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9y
OjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpW
YXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6
Om5leHQoKQogewogICAgIGlmICghbV9tYXAtPm1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBhMWQ5YTVkYmIxNTBkZTc5NGRmN2Ri
NDhmMTdkNzQyZTEyMTkwYmMwLi44ZmZkNGNmN2Q5ZmJhOWVhNGNjNTRmZWM2ODEyNzY3MjM2MWVh
ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBj
bGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihN
ZWRpYUtleVN0YXR1c01hcCYpOwotICAgICAgICBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJl
ZjxNZWRpYUtleVN0YXR1c01hcD4gbV9tYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKaW5kZXggZmM2MTM3NGUyMTY0
MWMxNjc0MWQ3ZTUxZGQwZTNlN2EyZDUyYjY2Mi4uNjM3ZDQzNTIwNTU4NjcwY2Y1NDg0NTAxZjY0
Y2M1MjViNzljMWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApAQCAtNTksOCArNTksOCBAQCBzdHJ1Y3QgTG9n
QXJndW1lbnQ8VmVjdG9yPFQ+PiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0
IExvZ0FyZ3VtZW50PE9wdGlvbmFsPFQ+PiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhj
b25zdCBPcHRpb25hbDxUPiYgdmFsdWUpCitzdHJ1Y3QgTG9nQXJndW1lbnQ8c3RkOjpvcHRpb25h
bDxUPj4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qgc3RkOjpvcHRpb25hbDxU
PiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gdmFsdWUgPyAibnVsbG9wdCJfcyA6IExv
Z0FyZ3VtZW50PFQ+Ojp0b1N0cmluZyh2YWx1ZS52YWx1ZSgpKTsKICAgICB9CkBAIC0xMzMsNyAr
MTMzLDcgQEAgc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRy
PENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE0KICAgICAgICAgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKHN1cHBvcnRlZENv
bmZpZ3VyYXRpb25zLmZpcnN0KCkpOwogICAgICAgICBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5y
ZW1vdmUoMCk7CiAKLSAgICAgICAgQ0RNOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sg
Y2FsbGJhY2sgPSBbaW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29u
ZmlndXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSwg
bG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KV0gKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmln
dXJhdGlvbikgbXV0YWJsZSB7CisgICAgICAgIENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNh
bGxiYWNrIGNhbGxiYWNrID0gW2ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBv
cnRlZENvbmZpZ3VyYXRpb25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHBy
b21pc2UsIGxvZ2dlciA9IFdURk1vdmUobG9nZ2VyKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChzdGQ6Om9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3Vw
cG9ydGVkQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICAvLyA2LjMuMy4gSWYg
c3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IE5vdFN1cHBvcnRlZCwgcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CiAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgewog
ICAgICAgICAgICAgICAgIC8vIDYuMy4zLjEuIExldCBhY2Nlc3MgYmUgYSBuZXcgTWVkaWFLZXlT
eXN0ZW1BY2Nlc3Mgb2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IGIwMGE0OGRhNDNjOThkMzA0ODU4YWNlYTYxNjViMjY1ODRkNDQxNmQuLjY2ZWNhMWJkN2Q2
YmQ0Y2JjNjE1NTAxMjFhYWIzOTlkYzU1MmI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
c3RydWN0IExpc3RlZENoaWxkIHsKICAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0KIH07CiAKLXN0
YXRpYyBPcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRl
bkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxl
U3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShmdWxsUGF0
aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
aAppbmRleCAxYTA5OThhY2FlZWFhMjYwZWE4MzE0ZjZhMDNmMzZiNjhhOTg0YzViLi40ZmU5MjM1
Y2Y2NmU3MzIyNGQ0ZDljZjUyZTZkMmU2ZDBmZmY4MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKIAogICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IG1fZGlyZWN0b3J5
OwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4gbV9lcnJvcjsKICAgICBib29sIG1faXNSZWFkaW5nIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNEb25lIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKaW5kZXggNDIyZTA2M2YxYTVlN2ZlYTFlNmM2NDc4ODliMDlhMTc0MDIz
NTJiMy4uZWRhNTFkMGZlNWRkNTU0Y2E4NDljZDY3ZDdhMDI4ZmQxMDMxMmZiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtNzcsNyArNzcsNyBAQCBF
eGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJbml0JiYgdmFsdWUsIFN0
cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRm9y
bURhdGEmIGZvcm1EYXRhKQorc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJv
bUZvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZvcm1EYXRhJiBmb3Jt
RGF0YSkKIHsKICAgICBBU1NFUlQoIWZvcm1EYXRhLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDMxODdmOTBjZmQyYTE4ZjdjNmUxNTgy
OWFlZGQ3NDFiNzc2YmIxOWUuLjE4ZjI3ZDVlZTYyNjkwOTJkNTEwMTgxNWEwMzA0NjVmYjBmYzRh
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gZXh0cmFj
dChJbml0JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IGZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRm9ybURhdGEmKTsKIAogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNl
cHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IGZjNmE2YTFiMDk0OTdkMWU1MzdlOWM4M2Y3Y2ZmZjlkZTc0ZTM3NTMu
LjU1Zjc5YjcwN2NmMTY5Yzc4NjMwOWEzNTRiZTFjNTdjYzczZDAyNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcnNlUGFyYW1ldGVy
cyhTdHJpbmdWaWV3IGlucHV0LCBzaXplX3QgcG9zaXRpb24KIH0KIAogLy8gaHR0cHM6Ly9taW1l
c25pZmYuc3BlYy53aGF0d2cub3JnLyNwYXJzaW5nLWEtbWltZS10eXBlCi1zdGF0aWMgT3B0aW9u
YWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgU3RyaW5nIGlucHV0ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBlKTsKICAgICBzaXplX3Qgc2xhc2hJbmRleCA9IGlucHV0
LmZpbmQoJy8nKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRh
PiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogICAgIAotICAgIGF1dG8gcGFyc2VNdWx0aXBh
cnRCb3VuZGFyeSA9IFtdIChjb25zdCBPcHRpb25hbDxNaW1lVHlwZT4mIG1pbWVUeXBlKSAtPiBP
cHRpb25hbDxTdHJpbmc+IHsKKyAgICBhdXRvIHBhcnNlTXVsdGlwYXJ0Qm91bmRhcnkgPSBbXSAo
Y29uc3Qgc3RkOjpvcHRpb25hbDxNaW1lVHlwZT4mIG1pbWVUeXBlKSAtPiBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gewogICAgICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUt
PnR5cGUsICJtdWx0aXBhcnQiKSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT5z
dWJ0eXBlLCAiZm9ybS1kYXRhIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMzFjY2E5MmM3MzZmZGJiNWE3MDQ4N2NjZDJiOTk1
ZTJjMTFmNDk4Yi4uYmRmZTQxN2I4MjU3YjBmOWExYWQ3NjIyOTM3ZTg4ODRkNDc0YWFhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GZXRjaEJvZHlPd25lcjo6
RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8
RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycykKK0ZldGNoQm9k
eU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBz
dGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRl
cnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2JvZHkoV1RGTW92
ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQpAQCAtMzc1LDEzICsz
NzUsMTMgQEAgUmVzb3VyY2VFcnJvciBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0Vycm9yKCkgY29u
c3QKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6bG9h
ZGluZ0V4Y2VwdGlvbigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gRmV0Y2hCb2R5
T3duZXI6OmxvYWRpbmdFeGNlcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fbG9hZGluZ0Vycm9yLCBbXShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgewogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLmlzRW1wdHkoKSA/ICJMb2FkaW5nIGZhaWxlZCJfcyA6IGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkgfTsKICAgICB9LCBbXShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikgewog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgZXhjZXB0aW9uIH07Ci0gICAgfSwgW10oYXV0byYm
KSAtPiBPcHRpb25hbDxFeGNlcHRpb24+IHsKKyAgICB9LCBbXShhdXRvJiYpIC0+IHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uPiB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5k
ZXggMjQ1OGVkMzZjZmEyY2IyYTU0ZWQ2OGE0NjBmZjU0NjMzZmQ2NzlkMi4uMWM5ZWVjMzVkZDI5
ZmY1MzIxMzhhNmIzM2ZhODhlNmY3NTRjYWFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hC
b2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBGZXRjaEJv
ZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmKTsKKyAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYp
OwogICAgIH5GZXRjaEJvZHlPd25lcigpOwogCiAgICAgYm9vbCBib2R5VXNlZCgpIGNvbnN0IHsg
cmV0dXJuIGlzRGlzdHVyYmVkKCk7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNMb2FkaW5nRXJyb3IoKSBjb25zdDsKICAgICBSZXNvdXJjZUVycm9yIGxvYWRpbmdF
cnJvcigpIGNvbnN0OwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbj4gbG9hZGluZ0V4Y2VwdGlvbigp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBsb2FkaW5nRXhjZXB0aW9uKCkg
Y29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50VHlwZTsgfQogCkBAIC0xMjEsMTQgKzEyMSwxNCBAQCBwcml2YXRlOgogICAgIH07
CiAKIHByb3RlY3RlZDoKLSAgICBPcHRpb25hbDxGZXRjaEJvZHk+IG1fYm9keTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZldGNoQm9keT4gbV9ib2R5OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwog
ICAgIGJvb2wgbV9pc0Rpc3R1cmJlZCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPEZldGNoQm9keVNv
dXJjZT4gbV9yZWFkYWJsZVN0cmVhbVNvdXJjZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hl
YWRlcnM7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVy
OworICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wg
bV9pc0JvZHlPcGFxdWUgeyBmYWxzZSB9OwogCiAgICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
RXhjZXB0aW9uLCBSZXNvdXJjZUVycm9yPiBtX2xvYWRpbmdFcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCA4NjM3NTk5NjJjODkzOWY2
ZTZmOWE4MWZjYTE1NmYxMmQ5YjE1ZDBhLi5jM2RhY2M3YjkwMDJjODlkYzIzNTIyYTVhOGVlMWUz
MGFjZTMzYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRl
cnMuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxI
ZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYgaGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICBy
ZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gRmV0Y2hIZWFk
ZXJzOjpjcmVhdGUoT3B0aW9uYWw8SW5pdD4mJiBoZWFkZXJzSW5pdCkKK0V4Y2VwdGlvbk9yPFJl
ZjxGZXRjaEhlYWRlcnM+PiBGZXRjaEhlYWRlcnM6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPEluaXQ+
JiYgaGVhZGVyc0luaXQpCiB7CiAgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwogCkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBGZXRjaEhlYWRlcnM6OmZpbHRlckFuZEZpbGwoY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycywgR3VhcmQgZ3VhcmQpCiAgICAgfQogfQogCi1PcHRpb25hbDxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5l
eHQoKQorc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZl
dGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQogewogICAgIHdoaWxlIChtX2N1cnJlbnRJbmRl
eCA8IG1fa2V5cy5zaXplKCkpIHsKICAgICAgICAgYXV0byBrZXkgPSBtX2tleXNbbV9jdXJyZW50
SW5kZXgrK107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaApp
bmRleCA2NmQyZTg1NDU4YmNkNjM4Nzg2YmViMDU5OTJkYmZiNTg3OTBkOGRmLi5jNjdlMTE1Yzgy
ODI0ZTdiMmZhYjE1OTAyZTU2N2JkMGRkM2E4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07
CiAKICAgICB1c2luZyBJbml0ID0gVmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0
b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj47Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBjcmVhdGUoT3B0aW9uYWw8SW5pdD4mJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhlYWRlcnM+PiBjcmVhdGUoc3RkOjpvcHRpb25h
bDxJbml0PiYmKTsKIAogICAgIHN0YXRpYyBSZWY8RmV0Y2hIZWFkZXJzPiBjcmVhdGUoR3VhcmQg
Z3VhcmQgPSBHdWFyZDo6Tm9uZSwgSFRUUEhlYWRlck1hcCYmIGhlYWRlcnMgPSB7IH0pIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hIZWFkZXJzIHsgZ3VhcmQsIFdURk1vdmUoaGVhZGVycykg
fSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoSGVhZGVycz4gY3JlYXRlKGNvbnN0IEZldGNoSGVh
ZGVycyYgaGVhZGVycykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaEhlYWRlcnMgeyBoZWFk
ZXJzIH0pOyB9CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsK
LSAgICAgICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJp
bmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBt
X2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5j
cHAKaW5kZXggMzQ4YWI0NDI0OWNkOTJhZGIyZTQ3ZTM3YzA0Mjc2ZTIwOThhNDk5ZS4uZmQ1OTEz
ODFkMzJlZWNiZGVkYjZiNDAxYWYzNzg5NTFiNDI5MjBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1ldGhvZChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgaW5pdE1ldGhvZCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBpbml0TWV0aG9kKQogewogICAgIGlmICghaXNWYWxpZEhUVFBU
b2tlbihpbml0TWV0aG9kKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
Ik1ldGhvZCBpcyBub3QgYSB2YWxpZCBIVFRQIHRva2VuLiJfcyB9OwpAQCAtNjksNyArNjksNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiBjb21wdXRlUmVmZXJyZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIHJldHVybiBTdHJpbmcgeyByZWZlcnJlclVS
TC5zdHJpbmcoKSB9OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlv
bnMoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0cmlu
ZyYgcmVmZXJyZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNo
UmVxdWVzdDo6SW5pdCYgaW5pdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gYnVp
bGRPcHRpb25zKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdHJpbmcmIHJlZmVycmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBGZXRjaFJlcXVlc3Q6OkluaXQmIGluaXQpCiB7CiAgICAgaWYgKCFpbml0LndpbmRvdy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpICYmICFpbml0LndpbmRvdy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJXaW5kb3cgY2FuIG9ubHkgYmUgbnVsbC4iX3MgfTsK
QEAgLTE0NSw3ICsxNDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRp
YWxpemVPcHRpb25zKGNvbnN0IEluaXQmIGluaXQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3Rh
dGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRpb24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxpZFNpZ25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQogewogICAgIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlIHsgIkZldGNoUmVxdWVzdEluaXQu
c2lnbmFsIHNob3VsZCBiZSB1bmRlZmluZWQsIG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0
LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS4iX3MgfTsKICAgICBjb250ZXh0
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmgKaW5kZXggMDc5MGRjYjE0ZjNmM2FjZTdkNTFjMTZlMjI2NTY0NmM2ZjlmZWFjZS4uMzNiYThj
NmJkMjMyYTVjNzg1NjQzNDgzNWQ0ZTM0M2NkOGFhNWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q7CiAKICAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgSW5mbyYmLCBJbml0JiYpOwotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYm
IGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1v
dmUoaGVhZGVycyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUo
cmVmZXJyZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJv
ZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUo
aGVhZGVycyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVm
ZXJyZXIpKSk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0Lmh0dHBNZXRob2QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKCkg
Y29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRmV0Y2hSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRl
cnM+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYgcmVmZXJy
ZXIpOworICAgIEZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYm
LCBGZXRjaE9wdGlvbnMmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOwogCiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gaW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgSW5pdCYpOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGluaXRpYWxpemVXaXRoKEZldGNoUmVxdWVzdCYsIEluaXQmJik7CkBAIC0xMDAsNyArMTAw
LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8QWJvcnRTaWduYWw+IG1fc2lnbmFsOwogfTsKIAotaW5s
aW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhl
YWRlcnMsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IFN0cmluZyYmIHJlZmVycmVyKQoraW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYm
IGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiAgICAgOiBG
ZXRjaEJvZHlPd25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQog
ICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBtX29wdGlvbnMoV1RGTW92
ZShvcHRpb25zKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3RJbml0LmgKaW5kZXggYzA2NWUxNThhNzBlOGQwNTFhNjEyZTBhOTQ2YzcyZDAwNjJkMjEyNy4u
ZGQyMzg3NDQ3OGEzOTIxMzQ0OWYzMjNkNjhmZjA4Mjg3ZWJhODZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3RJbml0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3RJbml0LmgKQEAgLTM3LDE2ICszNywx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGZXRjaFJlcXVlc3RJbml0IHsKICAg
ICBTdHJpbmcgbWV0aG9kOwotICAgIE9wdGlvbmFsPEZldGNoSGVhZGVyczo6SW5pdD4gaGVhZGVy
czsKLSAgICBPcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+IGJvZHk7CisgICAgc3RkOjpvcHRpb25h
bDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhlYWRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEJv
ZHk6OkluaXQ+IGJvZHk7CiAgICAgU3RyaW5nIHJlZmVycmVyOwotICAgIE9wdGlvbmFsPFJlZmVy
cmVyUG9saWN5PiByZWZlcnJlclBvbGljeTsKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6Ok1v
ZGU+IG1vZGU7Ci0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscz4gY3JlZGVu
dGlhbHM7Ci0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpDYWNoZT4gY2FjaGU7Ci0gICAgT3B0
aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4gcmVkaXJlY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxSZWZlcnJlclBvbGljeT4gcmVmZXJyZXJQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxGZXRj
aE9wdGlvbnM6Ok1vZGU+IG1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6OkNy
ZWRlbnRpYWxzPiBjcmVkZW50aWFsczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6
Q2FjaGU+IGNhY2hlOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRpcmVjdD4g
cmVkaXJlY3Q7CiAgICAgU3RyaW5nIGludGVncml0eTsKLSAgICBPcHRpb25hbDxib29sPiBrZWVw
YWxpdmU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBrZWVwYWxpdmU7CiAgICAgSlNDOjpKU1Zh
bHVlIHNpZ25hbDsKICAgICBKU0M6OkpTVmFsdWUgd2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBjZWZlZmM3M2ZjMjU2Zjdh
MDE1MDZiNzQ1ZTMxNzliYTg3YTFkNzk5Li41OTBhYmZjODM3ODZiZTIzNjhmNTc3YmQ0YTUwZjVh
ZDQ4NjQxNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTnVsbEJvZHlT
dGF0dXMoaW50IHN0YXR1cykKICAgICByZXR1cm4gc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0g
MjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3RhdHVzID09IDMwNDsKIH0KIAotUmVmPEZldGNoUmVz
cG9uc2U+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgRmV0Y2hIZWFkZXJzOjpHdWFyZCBndWFy
ZCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNo
UmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9w
dGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBGZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgYm9vbCBpc1N5bnRoZXRpYyA9IHJlc3Bv
bnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0IHx8IHJlc3BvbnNl
LnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcjsKICAgICBib29sIGlzT3Bh
cXVlID0gcmVzcG9uc2UudGFpbnRpbmcoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6
T3BhcXVlOwpAQCAtNjMsNyArNjMsNyBAQCBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25z
ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbgogICAgIHJl
dHVybiBmZXRjaFJlc3BvbnNlOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBP
cHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSwgSW5pdCYmIGluaXQpCitFeGNlcHRpb25P
cjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5
LCBJbml0JiYgaW5pdCkKIHsKICAgICAvLyAxLiBJZiBpbml04oCZcyBzdGF0dXMgbWVtYmVyIGlz
IG5vdCBpbiB0aGUgcmFuZ2UgMjAwIHRvIDU5OSwgaW5jbHVzaXZlLCB0aGVuIHRocm93IGEgUmFu
Z2VFcnJvci4KICAgICBpZiAoaW5pdC5zdGF0dXMgPCAyMDAgIHx8IGluaXQuc3RhdHVzID4gNTk5
KQpAQCAtOTIsNyArOTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNo
UmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjbwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
RmV0Y2hCb2R5PiBleHRyYWN0ZWRCb2R5OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiBl
eHRyYWN0ZWRCb2R5OwogCiAgICAgLy8gOC4gSWYgYm9keSBpcyBub24tbnVsbCwgcnVuIHRoZXNl
IHN1YnN0ZXBzOgogICAgIGlmIChib2R5KSB7CkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPEZldGNoUmVzcG9uc2U+PiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JgogICAgIHJldHVybiByZWRpcmVjdFJlc3BvbnNlOwogfQogCi1GZXRjaFJl
c3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9w
dGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK0ZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+
JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UpCiAgICAgOiBGZXRjaEJvZHlPd25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBX
VEZNb3ZlKGhlYWRlcnMpKQogICAgICwgbV9pbnRlcm5hbFJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCBiZGU5ODU0YjI2MWQzZDk1NTkzMDc0MzkzY2MxYTU4OWYyOTllZTM5Li44MzZmNGUxNjM2
YjRmNTg3MjNkNGYxY2E4OTY3N2VmZGZjZjI3NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNTQsMTIgKzU0LDEyIEBAIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1cyB7IDIwMCB9Owog
ICAgICAgICBTdHJpbmcgc3RhdHVzVGV4dDsKLSAgICAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJz
OjpJbml0PiBoZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZldGNoSGVhZGVyczo6SW5p
dD4gaGVhZGVyczsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGZXRj
aFJlc3BvbnNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNo
Qm9keT4mJiwgRmV0Y2hIZWFkZXJzOjpHdWFyZCwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIEZldGNoSGVhZGVyczo6
R3VhcmQsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFs
PEZldGNoQm9keTo6SW5pdD4mJiwgSW5pdCYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0
aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmLCBJbml0JiYpOwogICAgIHN0YXRpYyBSZWY8RmV0Y2hS
ZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cyk7CiAKQEAgLTExMiw3ICsxMTIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXYXNtTUlNRVR5cGUoKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRj
aEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisgICAg
RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAg
ICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFscyBtX2NyZWRlbnRpYWxzOwogICAgIH07CiAKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPFJlc291cmNlUmVzcG9uc2U+IG1fZmlsdGVyZWRSZXNwb25zZTsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXNwb25zZT4gbV9maWx0ZXJlZFJlc3BvbnNl
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9pbnRlcm5hbFJlc3BvbnNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxCb2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9y
ZXNwb25zZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbi5jcHAKaW5kZXggNjhiZGM0NThkZWYzZjI2ZTE2MWE4ZTM5OTQ3M2FhMjk3ODcz
Y2VlZS4uNzk5NWQ0ZGQ0NjFkZTAzNmNkODY5MWIzZmYxODFhZWFlZmIxMmQ5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAg
LTU2LDcgKzU2LDcgQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBvcmlnaW5DYW5ub3RSZXF1
ZXN0R2VvbG9jYXRpb25FcnJvck1lc3NhZ2UgeyAiT3JpZ2luIGQKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEdlb2xvY2F0aW9uKTsKIAotc3RhdGljIFJlZlB0cjxHZW9sb2NhdGlvblBv
c2l0aW9uPiBjcmVhdGVHZW9sb2NhdGlvblBvc2l0aW9uKE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhPiYmIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiBjcmVhdGVHZW9sb2NhdGlvblBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGE+JiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFwb3NpdGlvbikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggYTFlNzM5YmZhZDhmZGQyNzg4ZjY3MDMxMTA3
OWEyM2Q0MTExNjg3YS4uNTgxYTI5MjViNDA0MmU0MGNlMjEyNWVjNDY2NmU3ZWFhZmEzYmZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2Ugc2hvdWxk
IHVwZGF0ZSBXZWJLaXQgdG8gcmVmbGVjdCB0aGlzIGlmIGFuZCB3aGVuIHRoZSBWMiBzcGVjaWZp
Y2F0aW9uCiAgICAgLy8gaXMgcHVibGlzaGVkLgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjEzYjU1ZDc5MjE4MjViYWU3MjhjMWY1ZGI2MTBhYjZm
ZjI3YTg5My4uMDYxNjI5MTYwZDliY2M3ZDVkYWY3NGNmYzRmODE1NTBiYTQ4ZGU4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiYgZ2VvbG9jYXRp
b24pCiAgICAgbV9jbGllbnQuY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoZ2VvbG9jYXRpb24pOwog
fQogCi12b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IE9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiYgcG9zaXRpb24pCit2b2lkIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE+JiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IHBv
c2l0aW9uOwogICAgIFZlY3RvcjxSZWY8R2VvbG9jYXRpb24+PiBvYnNlcnZlcnNWZWN0b3I7CkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJy
ZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihl
cnJvcik7CiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9z
aXRpb25EYXRhPiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAg
aWYgKG1fbGFzdFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24udmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDk3ODRlOTFhMzRlYmE2OTUwYmFkN2YyMDU3MmVl
YWUzY2IzMDBjMGUuLjQyZjVkMDYyZGI2ZjA5YzY2MDExMWQ2NmQ5ZjBmY2ZmZjNiMjA3NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtNTMsMTAgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJik7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNz
aW9uUmVxdWVzdChHZW9sb2NhdGlvbiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3Np
dGlvbkNoYW5nZWQoY29uc3QgT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVy
cm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYpOwogCi0gICAgT3B0aW9uYWw8R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE+IGxhc3RQb3NpdGlvbigpOwogCiAgICAgR2VvbG9jYXRpb25DbGll
bnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IG1fbGFzdFBvc2l0aW9uOwogCiAgICAgdHlwZWRlZiBIYXNo
U2V0PFJlZjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKICAgICAvLyBBbGwgb2JzZXJ2ZXJz
OyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
b3JkaW5hdGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29vcmRpbmF0ZXMuaAppbmRleCA4NzUxY2FjNDc0MjE3YTE1NzVhNjdhYWNkOWU5NDQ1NDc0
NzRkZDc5Li41N2JkZmQxYTg2YWEwZGNhMmFkM2JhODkyMThhNzc1NWQ0MzY4MjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRp
bmF0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29vcmRpbmF0ZXMuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIGRvdWJs
ZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubGF0aXR1ZGU7IH0KICAgICBk
b3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5sb25naXR1ZGU7IH0K
LSAgICBPcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlv
bi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGU7IH0KICAgICBkb3VibGUgYWNjdXJhY3koKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmFjY3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91Ymxl
PiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRpdHVkZUFj
Y3VyYWN5OyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi5oZWFkaW5nOyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb24uc3BlZWQ7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGZsb29y
TGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmZsb29yTGV2ZWw7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFk
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmbG9vckxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5mbG9vckxldmVsOyB9CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEdlb2xv
Y2F0aW9uQ29vcmRpbmF0ZXMoR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb25EYXRhLmgKaW5kZXggNmFiYzIxMzUwYjg1NjVmZjRlNzZiZDAzODJhZDY1Mjc3MjAzYWIw
Yi4uOThkMzgyY2I5ZTBkODJiNmVmNGMxZjJmNTE3YWQxOWJmN2Q5OWNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGEuaApAQCAtNTgsMTEgKzU4LDExIEBAIHB1YmxpYzoKICAgICBkb3VibGUgbG9u
Z2l0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogICAg
IGRvdWJsZSBhY2N1cmFjeSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCkgfTsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7Ci0gICAgT3B0aW9uYWw8ZG91
YmxlPiBhbHRpdHVkZUFjY3VyYWN5OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZzsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IHNwZWVkOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZl
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhl
YWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBmbG9vckxldmVsOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXgg
MGVkNDI3Yjc0MDA5ZjFkOTUzNjVkY2UxMzY4ZjY3ODFkODE2ZTZhNC4uOWU2ZGJiOGFmYWM3NDJm
NGMyNDhhZjU5NTlhYjE4Nzc3ODVmM2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM5LDEyICszOSwxMiBAQCBlbnVtIGNsYXNz
IEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBz
dHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdo
bGlnaHQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CiAg
ICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdo
bGlnaHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
CkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IGxlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbGVuZ3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3Ro
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25h
bDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQuZGF0YSgpLCBo
aWdobGlnaHQuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFN0cmluZz4+IHRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPFN0cmluZz4+IHRleHQ7CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICgh
dGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmlu
ZGV4IDI5NWM1OGZhNmVlYTA5ZTViNzQ2ZDYyZWMzYTFjNTE2NTU5YWZlMTAuLjRmNGM4NmE1NzFl
NjE5YmJmODU4MDg5NTNiNWViYzViOWY5MTQ1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAt
NDEsMTAgKzQxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7
CiB9CkBAIC02NCwyNCArNjQsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBI
aWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW4KICAgICBlbmNv
ZGVyIDw8IHBhdGhJbmRleDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudD4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25l
bnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRl
bnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNv
ZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CiAgICAgZGVjb2RlciA+PiBub2RlTmFtZTsKICAg
ICBpZiAoIW5vZGVOYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dERh
dGE7CiAgICAgZGVjb2RlciA+PiB0ZXh0RGF0YTsKICAgICBpZiAoIXRleHREYXRhKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRl
eDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXRoSW5kZXg7CiAgICAgZGVjb2RlciA+
PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC05OCwyOSArOTgsMjkgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAgICBl
bmNvZGVyIDw8IG1fZW5kT2Zmc2V0OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE5vZGVQYXRo
PiBzdGFydENvbnRhaW5lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRh
aW5lcjsKICAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVyOwogICAgIGlmICghc3RhcnRDb250
YWluZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gc3RhcnRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZz
ZXQ7CiAgICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVu
ZENvbnRhaW5lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CiAg
ICAgZGVjb2RlciA+PiBlbmRDb250YWluZXI7CiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zm
c2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZE9mZnNldDsKICAgICBkZWNvZGVy
ID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggODlmOGNmNzQ1NzY2MjZmYmY4NjUwMWI5MWE1
ZmQ4MmEwY2FkYmU1MS4uMWRhOTRlNjU4ZDNiM2RkZGQwZjI0MzVkMjc1MWQzNTQwYjA4NzllMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgewogICAgICAg
ICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIG5vZGVOYW1lOwpAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHVz
aW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKQEAgLTEwNSw3ICsxMDUs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9l
bmRPZmZzZXQ7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggYWIzN2RkMjI4NTY5MjVmOWRkMTQ5
M2EwYTc3ODAzOThjMDAxNDAyNy4uNmZiZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0M2VkMDM1
NzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgUmVmUHRy
PE5vZGU+IGZpbmROb2RlKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGgmIHBh
dGgsIERvY3VtZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IGZpbmRSYW5nZUJ5SWRlbnRpZnlpbmdTdGFydEFuZEVuZFBvc2l0aW9ucyhjb25z
dCBBcHBIaWdobGlnaHRSYW5nZURhdGEmIHJhbmdlLCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlQnlJZGVudGlmeWluZ1N0YXJ0
QW5kRW5kUG9zaXRpb25zKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIHN0YXJ0Q29udGFpbmVyID0gZmluZE5vZGUocmFu
Z2Uuc3RhcnRDb250YWluZXIoKSwgZG9jdW1lbnQpOwogICAgIGlmICghc3RhcnRDb250YWluZXIp
CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFu
Z2VCeUlkZW50aWZ5aW5nU3RhcnRBbmRFbmRQb3NpdGlvbnMoY29uc3QgQXAKICAgICByZXR1cm4g
bWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBlbmQpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IGZpbmRSYW5nZUJ5U2VhcmNoaW5nVGV4dChjb25zdCBBcHBIaWdobGlnaHRSYW5nZURh
dGEmIHJhbmdlLCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gZmluZFJhbmdlQnlTZWFyY2hpbmdUZXh0KGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBIYXNoU2V0PFN0cmluZz4g
aWRlbnRpZmllcnNJblN0YXJ0UGF0aDsKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IHJhbmdl
LnN0YXJ0Q29udGFpbmVyKCkpIHsKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5U2VhcmNoaW5nVGV4dChjb25zdCBBcHBIaWdobGlnaHRS
YW5nZURhdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gZmluZFJhbmdlKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2Us
IERvY3VtZW50JiBkb2N1bWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBm
aW5kUmFuZ2UoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiByYW5nZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIGlmIChhdXRvIGZvdW5kUmFuZ2UgPSBmaW5kUmFuZ2VCeUlkZW50aWZ5
aW5nU3RhcnRBbmRFbmRQb3NpdGlvbnMocmFuZ2UsIGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJu
IGZvdW5kUmFuZ2U7CkBAIC0yMjIsNyArMjIyLDcgQEAgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6fkFw
cEhpZ2hsaWdodFN0b3JhZ2UoKSA9IGRlZmF1bHQ7CiB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6
OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURhdGEocmFuZ2UpOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gdGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAogICAgIGlm
ICghZGF0YS50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmgKaW5kZXggN2ZiZmNhOTkxMGVkZDdhYjgzM2Q1N2RkODRjMGQyZjk0ZDhjNGM3Ni4u
YmNjZjg3ZjhhNGFlOGZmZjRhYzFjZjQ0NDJhMzI5Mjg1MWVlOGQ1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApA
QCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsKICAgICBWZWN0
b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRIaWdobGlnaHRzOwotICAgIE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV91bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0
OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRT
Y3JvbGxIaWdobGlnaHQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvSGlnaGxpZ2h0LmgKaW5kZXggMzQ0NjZhM2MwNDQwMmM4MTdkM2M3ZDkzOWJjODlk
OTI3MjNkOGVkMC4uMDA1MmMzZmJiNTEzYTJkMzgzODUwMjg5ZjYyZGRlMzE0MGVjM2VhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKQEAgLTQ4LDgg
KzQ4LDggQEAgc3RydWN0IEhpZ2hsaWdodFJhbmdlRGF0YSA6IFJlZkNvdW50ZWQ8SGlnaGxpZ2h0
UmFuZ2VEYXRhPiwgcHVibGljIENhbk1ha2VXZWFrUHQKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSGlnaGxpZ2h0UmFuZ2VEYXRhKFdURk1vdmUocmFuZ2UpKSk7CiAgICAgfQogICAgIFJl
ZjxTdGF0aWNSYW5nZT4gcmFuZ2U7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRp
b247Ci0gICAgT3B0aW9uYWw8UG9zaXRpb24+IGVuZFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8UG9zaXRpb24+IHN0YXJ0UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbj4g
ZW5kUG9zaXRpb247CiB9OwogCiBjbGFzcyBIaWdobGlnaHQgOiBwdWJsaWMgUmVmQ291bnRlZDxI
aWdobGlnaHQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCmluZGV4IGUwNjVhNDg0ODNlZjhhZjUwOTMwMWYxMmIxNGQ5OThlYmZlMjEwMGYuLjU4
ZDBjZGY2ODdjYzIzMjEyYTFjODllNTg4Yzk0MjBiYjM1YTdlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzY1LDcgKzM2NSw3IEBA
IHZvaWQgSURCQ3Vyc29yOjpjbGVhcldyYXBwZXJzKCkKICAgICBtX3ZhbHVlV3JhcHBlci5jbGVh
cigpOwogfQogCi1PcHRpb25hbDxJREJHZXRSZXN1bHQ+IElEQkN1cnNvcjo6aXRlcmF0ZVdpdGhQ
cmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0
aW9uSUQpCitzdGQ6Om9wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0
aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVy
YXRpb25JRCkKIHsKICAgICB1bnNpZ25lZCBzdGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOwog
ICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9w
ZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBjZjllZTE3MzY5MmRlYjM0MDE1YjZkMjAx
YWU4OTEwNjY5MWUwZjIzLi40ZjZkM2UxZjMzNDEwNzkyMWRiNTU0MjBlZGU3ZmUyYTdlMDBhYTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgSURCS2V5KiBrZXkoKSB7IHJldHVybiBtX2tleS5n
ZXQoKTsgfTsKICAgICBJREJLZXkqIHByaW1hcnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXku
Z2V0KCk7IH07CiAgICAgSURCVmFsdWUgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9OwotICAg
IGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBwcmltYXJ5S2V5UGF0aCgpIHsgcmV0dXJuIG1f
a2V5UGF0aDsgfTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBwcmltYXJ5
S2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfTsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0JiBrZXlXcmFwcGVyKCkgeyByZXR1cm4gbV9rZXlXcmFwcGVyOyB9CiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCYgcHJpbWFyeUtleVdyYXBwZXIoKSB7IHJldHVybiBtX3ByaW1hcnlLZXlX
cmFwcGVyOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgdmFsdWVXcmFwcGVyKCkgeyBy
ZXR1cm4gbV92YWx1ZVdyYXBwZXI7IH0KQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzS2V5Q3Vyc29yV2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIE9wdGlvbmFsPElEQkdldFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVj
b3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAg
IHN0ZDo6b3B0aW9uYWw8SURCR2V0UmVzdWx0PiBpdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRz
KHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCk7CiAgICAgdm9p
ZCBjbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CiAKIHByb3RlY3RlZDoKQEAgLTEwOSw3ICsxMDks
NyBAQCBwcml2YXRlOgogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEg
bV9wcmltYXJ5S2V5RGF0YTsKICAgICBJREJWYWx1ZSBtX3ZhbHVlOwotICAgIE9wdGlvbmFsPElE
QktleVBhdGg+IG1fa2V5UGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5
UGF0aDsKIAogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpT
VmFsdWVJbldyYXBwZWRPYmplY3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IGE0OWRhNzdjMzgxNmQ4
MmRmYjY2Y2IwOGI0MTkwMmM2N2NiMGJmOTMuLjMzOGYzMGU2N2U0OTk2ZjJjN2RlMTEyZjdkN2Fh
MTRiM2RjNDYxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgUmVmPERPTVN0cmluZ0xp
c3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBh
cmFtZXRlcnMgewotICAgICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBrZXlQYXRoOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0lu
Y3JlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGMyZjE3MDc0ZThlYmJlYTY1
ODc0NjJlMThkNjBjZjkwNDgwMmVkYzAuLjYyYTAwOTBkYTA2M2NiNjJhMDNhNTJkNjVhNzMwNTdh
ZTJiMzcyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvblN0cmluZyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZUlk
ZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3Ry
aW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKQEAgLTExOCwxOSArMTE4LDE5IEBAIHZvaWQgSURC
RGF0YWJhc2VJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4g
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPiBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gZGF0YWJhc2VOYW1l
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkYXRhYmFzZU5hbWU7CiAgICAgZGVjb2RlciA+
PiBkYXRhYmFzZU5hbWU7CiAgICAgaWYgKCFkYXRhYmFzZU5hbWUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2lu
OwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1Ry
YW5zaWVudDsKICAgICBkZWNvZGVyID4+IGlzVHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2ll
bnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZU5hbWVBbmRW
ZXJzaW9uUmVxdWVzdC5jcHAKaW5kZXggZDJmMjY4MDg4NjY2OGFiMzIyMzZlY2FjNjViYjRlY2Q1
OTNiODU0Mi4uYjE0ZDZjMmU0OGU1YmIzMGRlOGY3YWE3NzRmMmZmMTVjMDlhN2U0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0LmNwcApAQCAtNTAsNyArNTAsNyBAQCBJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdDo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lv
blJlcXVlc3QoU2NyaXB0RXhlY3V0aQogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi12b2lk
IElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0Ojpjb21wbGV0ZShPcHRpb25hbDxWZWN0
b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYgZGF0YWJhc2VzKQordm9pZCBJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdDo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxWZWN0b3I8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYgZGF0YWJhc2VzKQogewogICAgIEFTU0VSVChj
YW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdC5oCmluZGV4IDlhN2M1NjE5MWY5ZTkw
YTM2YWVkZTE1ZTQwYjUwOWRjYWZhMGFiYTkuLjZkYWRjMzkzNzRmZDUyOTNjYzE0MDA2NjMxODc1
M2Y4OWUwOWJmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuaApAQCAt
NDUsNyArNDUsNyBAQCBjbGFzcyBJREJDb25uZWN0aW9uUHJveHk7CiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdD4sIHB1Ymxp
YyBJREJBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSURCRGF0
YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QpOwogcHVibGljOgotICAgIHVzaW5nIEluZm9DYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24+PiYmKT47CisgICAgdXNpbmcgSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPj4mJik+OwogCiAgICAg
c3RhdGljIFJlZjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIEluZm9D
YWxsYmFjayYmKTsKIApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+OjpyZWY7CiAg
ICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJl
cXVlc3Q+OjpkZXJlZjsKIAotICAgIHZvaWQgY29tcGxldGUoT3B0aW9uYWw8VmVjdG9yPElEQkRh
dGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKIAogcHJpdmF0ZToKICAg
ICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBJbmZvQ2FsbGJhY2smJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDA1
NDRlZjA2NmIzNGE1ZTFlZWRjOTUzODU2NGJjOGE3NmYyMTM0MTcuLjU2YzE3MjdkZGI4MjEwZDEz
Njk3NzViYmMzOTVlZjdmOGZiNjM5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC03Miw3ICs3Miw3IEBAIElEQkZhY3Rvcnk6OklE
QkZhY3RvcnkoSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSkK
IAogSURCRmFjdG9yeTo6fklEQkZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJz
aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVu
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
RmFjdG9yeTo6b3BlbiIpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCmluZGV4IDNmN2E1MjNjM2NkNzBhNWU3ZTUyYjNjMzYxZDU4NzQxYzM4
M2M5ZmYuLjYyZTkxYWM0YTAwNGVlYTg1ZDU4ZTViYTBkZjY2OTdlODFmMzkwN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgICAgICB1aW50NjRfdCB2ZXJzaW9uOwogICAgIH07CiAKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gb3BlbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2
ZXJzaW9uKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IGRlbGV0ZURh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAg
ICAgRXhjZXB0aW9uT3I8c2hvcnQ+IGNtcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlIGZpcnN0LCBKU0M6OkpTVmFsdWUgc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldEFsbFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVzdWx0LmgKaW5kZXggZjdlYjdjNjY3MGRiNjcx
ZDNlZTEwNTY5NDFlOGY5NmUyMjRlZjJiZS4uOWEzOWE2NDdlMjVkY2Q1MzFkZjc0ZTEzNjdhZGRh
YTEwMTQyNjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0QWxsUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0QWxsUmVzdWx0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBJREJHZXRBbGxSZXN1bHQoSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIGNvbnN0
IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorICAgIElEQkdldEFsbFJlc3VsdChJbmRl
eGVkREI6OkdldEFsbFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX2tleVBhdGgoa2V5
UGF0aCkKICAgICB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBJREJHZXRBbGxSZXN1
bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0
aDsgfQogICAgIGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5cygpIGNvbnN0OwogICAgIGNv
bnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVlcygpIGNvbnN0OwogCkBAIC03MSw3ICs3MSw3IEBA
IHByaXZhdGU6CiAgICAgSW5kZXhlZERCOjpHZXRBbGxUeXBlIG1fdHlwZSB7IEluZGV4ZWREQjo6
R2V0QWxsVHlwZTo6S2V5cyB9OwogICAgIFZlY3RvcjxJREJLZXlEYXRhPiBtX2tleXM7CiAgICAg
VmVjdG9yPElEQlZhbHVlPiBtX3ZhbHVlczsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tl
eVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJHZXRSZXN1bHQuaAppbmRleCAxZmUyOWZmMTAyYmIwZTg3NWRkNTgyNzNhZmMzMGI0
OTRlZjNmNWE0Li44Yjk5YjdmYTE1MjdhNmY5NDhiMzllMjg3YjY4MDRjNjI4NWQ4YWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAt
NTQsMjEgKzU0LDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgSURCR2V0UmVzdWx0
KGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorICAgIElEQkdldFJl
c3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogICAg
ICAgICA6IG1fdmFsdWUoYnVmZmVyKQogICAgICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQogICAg
ICAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQogICAgIHsKICAgICB9CiAKLSAgICBJREJHZXRSZXN1
bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0
aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mIGtleVBhdGgpCiAgICAgICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAg
ICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKICAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkK
ICAgICB7CiAgICAgfQogCi0gICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURh
dGEsIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhLCBJREJWYWx1ZSYmIHZhbHVlLCBj
b25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKKyAgICBJREJHZXRSZXN1bHQoY29u
c3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEs
IElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCiAgICAgICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tleURh
dGEoa2V5RGF0YSkKICAgICAgICAgLCBtX3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQpA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIElEQkdldFJlc3Vs
dChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgsIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgIElE
QkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5RGF0YSwgSURCVmFsdWUmJiB2YWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYga2V5UGF0aCwgVmVjdG9yPElEQkN1cnNvclJlY29yZD4mJiBwcmVmZXRlY2hlZFJl
Y29yZHMpCiAgICAgICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2tl
eURhdGEoa2V5RGF0YSkKICAgICAgICAgLCBtX3ByaW1hcnlLZXlEYXRhKHByaW1hcnlLZXlEYXRh
KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSURCVmFsdWUmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIGNvbnN0IElEQktleURhdGEmIGtleURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2tleURhdGE7IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBwcmlt
YXJ5S2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleURhdGE7IH0KLSAgICBjb25z
dCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0
aDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICBjb25zdCBWZWN0b3I8SURCQ3Vyc29yUmVjb3Jk
PiYgcHJlZmV0Y2hlZFJlY29yZHMoKSBjb25zdCB7IHJldHVybiBtX3ByZWZldGNoZWRSZWNvcmRz
OyB9CiAgICAgYm9vbCBpc0RlZmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVmaW5lZDsgfQog
CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBJREJWYWx1ZSBtX3ZhbHVlOwogICAg
IElEQktleURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsK
LSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiBtX2tleVBhdGg7CiAgICAgVmVjdG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVm
ZXRjaGVkUmVjb3JkczsKICAgICBib29sIG1faXNEZWZpbmVkIHsgdHJ1ZSB9OwogfTsKQEAgLTEy
NCwxMyArMTI0LDEzIEBAIHZvaWQgSURCR2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29sIElEQkdldFJlc3VsdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIElEQkdldFJlc3VsdCYgcmVzdWx0KQogewotICAgIE9wdGlv
bmFsPElEQktleURhdGE+IGtleURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBr
ZXlEYXRhOwogICAgIGRlY29kZXIgPj4ga2V5RGF0YTsKICAgICBpZiAoIWtleURhdGEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQubV9rZXlEYXRhID0gV1RGTW92ZSgqa2V5RGF0
YSk7CiAKLSAgICBPcHRpb25hbDxJREJLZXlEYXRhPiBwcmltYXJ5S2V5RGF0YTsKKyAgICBzdGQ6
Om9wdGlvbmFsPElEQktleURhdGE+IHByaW1hcnlLZXlEYXRhOwogICAgIGRlY29kZXIgPj4gcHJp
bWFyeUtleURhdGE7CiAgICAgaWYgKCFwcmltYXJ5S2V5RGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTQyLDEzICsxNDIsMTMgQEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBJREJHZXRSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2lzRGVmaW5lZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9w
dGlvbmFsPElEQlZhbHVlPiB2YWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPElEQlZhbHVlPiB2YWx1
ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXN1bHQubV92YWx1ZSA9IFdURk1vdmUoKnZhbHVlKTsKIAotICAgIE9w
dGlvbmFsPFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsK
ICAgICBkZWNvZGVyID4+IHByZWZldGNoZWRSZWNvcmRzOwogICAgIGlmICghcHJlZmV0Y2hlZFJl
Y29yZHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCBjMTk5OWU1OTA3OTgxMGRkZDdmNDYyMDgxNzg0
MzgwM2JmMDA1Y2I3Li45YTBhNWJmOWNkYTBhZWUxMDg4NWVkMjBlYTg4ZThkODAyYzU5ZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0z
MzcsNyArMzM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9H
ZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgRXhjZXAKICAgICByZXR1cm4gdHJhbnNh
Y3Rpb24ucmVxdWVzdEdldEtleShleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKEpTR2xvYmFsT2Jq
ZWN0JiBleGVjU3RhdGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxF
eGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zNTYsMTQgKzM1NiwxNCBAQCBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbChKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBPcHRpbwogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVx
dWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIs
IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0
YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUs
IGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5n
ZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1
aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNv
dW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0
ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVj
dCYgZXhlY1N0YXRlLCBKU1ZhbHVlCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKSk7CkBAIC0zOTMsMTQgKzM5MywxNCBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNT
dGF0ZSwgTwogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdl
dEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4
ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0
YXRlLCBjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4g
cmFuZ2U7CiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXks
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbEtl
eXMoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRlPSZleGVjU3RhdGUsIGtleV0oKSB7CiAgICAgICAg
IGF1dG8gb25seVJlc3VsdCA9IElEQktleVJhbmdlOjpvbmx5KCpzdGF0ZSwga2V5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGMxZjlhNjA3MzI2
YzJiYTEwMGMyOTA1ZjEzZDU5OTEyOWU4Mjg3MGQuLmViYzZkYTQ1Yjc0NjM3ZWI0MDRjMDU5OGVl
OGM4ZDU1NDYwMDY0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaApAQCAtNjksMTAgKzY5LDEwIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBP
cHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZ2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25h
bDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0
QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBPcHRp
b25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
Z2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdl
dEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtl
eSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwogCiAgICAgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKQEAgLTkwLDggKzkwLDggQEAg
cHJpdmF0ZToKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKICAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+ICYmKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
T3BlbktleUN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBX
VEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJf
dD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4o
KT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Lgog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCAwNDNlYzZi
NmE3ZmI3ZjRlNjBkNjQ1Y2Q5ZDVmYzdhNWMxNDcwM2ZlLi5lODZjNDYwZTRhNzU2MDE2ZTEzNGYy
Nzg1ZmZjYWYyZTRhMjkzMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5RGF0YS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldE51bWJlclZhbHVlKGRvdWJsZSk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPElEQktleURhdGE+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0
YT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKQEAgLTI1MSw3ICsyNTEsNyBA
QCB2b2lkIElEQktleURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+IElEQktl
eURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElEQktleURhdGEga2V5RGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEubV9pc051bGwpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCmluZGV4IGJiMGVhZDUyYzMy
MWQ3OTA2MjFiZTIyZTRlN2Q2NjBhN2ZlNzU4NzYuLmIxYjNkYmJlYjA5ODZiNWY1MGViYmFjN2Vm
MjExYmEyOWYzNDZiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBjbGFzcyBJREJLZXlQYXRoUGFyc2VF
cnJvciB7CiAKIHZvaWQgSURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JiwgSURCS2V5UGF0aFBhcnNlRXJyb3ImKTsKIElEQktleVBhdGggaXNvbGF0ZWRDb3B5KGNv
bnN0IElEQktleVBhdGgmKTsKLWlubGluZSBPcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENv
cHkoY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIHZhcmlhbnQpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENvcHkoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYgdmFyaWFudCkKIHsKICAgICBpZiAoIXZhcmlhbnQpCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5n
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0
YS5oCmluZGV4IGYzMDVjMGVmODg2NzllODMyOWY3NTgwZmU3MTk4YmMzMWE0ZTBkYzQuLmNmNjA1
MDIxNDQzMTBlNzFiODZjMzRjZWQ2Y2RhNjA5MWY3YmIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCkBAIC0xMDUsMTMgKzEw
NSwxMyBAQCBib29sIElEQktleVJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCiAgICAgaWYgKGtleVJhbmdlLmlzTnVsbCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBPcHRpb25hbDxJREJLZXlEYXRhPiB1cHBlcktleTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPElEQktleURhdGE+IHVwcGVyS2V5OwogICAgIGRlY29kZXIgPj4gdXBw
ZXJLZXk7CiAgICAgaWYgKCF1cHBlcktleSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGtl
eVJhbmdlLnVwcGVyS2V5ID0gV1RGTW92ZSgqdXBwZXJLZXkpOwogICAgIAotICAgIE9wdGlvbmFs
PElEQktleURhdGE+IGxvd2VyS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gbG93
ZXJLZXk7CiAgICAgZGVjb2RlciA+PiBsb3dlcktleTsKICAgICBpZiAoIWxvd2VyS2V5KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZTBkZDlhMDhkNWNjYjk1ZWY3ZDM1YmMyZjhj
YTI1NGQzYzRiYzBlMC4uOGI2MzczM2E4N2Q2ZmRkZGFmNTE1ZTg4ZmIzY2ZmYTNhODFhMjUwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0
b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4geyB9OwogfQogCi1j
b25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25z
dAorY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogICAgIHJl
dHVybiBtX2luZm8ua2V5UGF0aCgpOwpAQCAtNTk2LDcgKzU5Niw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q291bnQoZXhlY1N0YXRl
LCAqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpkb0dldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRpb25hbDx1
aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJh
bmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2Jq
ZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpnZXRBbGwiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVh
ZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAg
LTYxNSwxNCArNjE1LDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsCiAgICAgcmV0dXJuIG1f
dHJhbnNhY3Rpb24ucmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUsICp0
aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3Vu
dCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Omdl
dEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFu
Z2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3Zl
KHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2Jq
ZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoSlNHbG9i
YWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQogewogICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9
JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFu
Z2U6Om9ubHkoKnN0YXRlLCBrZXkpOwpAQCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBKCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBPcHRp
b25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElE
QktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSkpOwpAQCAtNjUyLDE0ICs2NTIsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3QK
ICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRz
KGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
OjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2Jq
ZWN0U3RvcmU6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElE
QktleVJhbmdlPiYmIHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEpTR2xvYmFsT2Jq
ZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUs
IGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5n
ZTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwg
T3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgcmV0dXJuIGRv
R2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsK
ICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmgKaW5kZXggNDU0ODIyYmM1MWYxNDEwMDc0ZmViNGY5NzJjODc0NWI2OTZjYTg1ZS4uNDM3YjA0
NWQ1MGU3MDhiYjMyOTM2MjkzNzU4NGE3YmI1MmFhNWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldE5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgT3B0aW9uYWw8SURC
S2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7CiAgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29s
IGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKQEAgLTkxLDEwICs5MSwxMCBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJ
REJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5
UmFuZ2U+JiYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBr
ZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFu
Z2U+JiYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUg
a2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+
JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtl
eSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktl
eVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAKICAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IHB1dEZvckN1cnNvclVwZGF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5Pik7CiAKQEAgLTExOCw4ICsxMTgs
OCBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElE
QktleVJhbmdlPj4oKT4gJiYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9P
cGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQs
IFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwot
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0
aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxs
S2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQs
IFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaAppbmRleCA0ODlkNzllMWYxZWI0OTNiMDJjNTk1YzQxMzU5OTFjNzYzMTVk
Nzk4Li4zMWVjNjkyNDlmMmMwNzE4YWRkZjZlY2YwZjM4N2FkYTMyOGQ3NGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjdXJzb3JXcmFwcGVyKCkg
eyByZXR1cm4gbV9jdXJzb3JXcmFwcGVyOyB9CiAKICAgICB1c2luZyBTb3VyY2UgPSBWYXJpYW50
PFJlZlB0cjxJREJPYmplY3RTdG9yZT4sIFJlZlB0cjxJREJJbmRleD4sIFJlZlB0cjxJREJDdXJz
b3I+PjsKLSAgICBjb25zdCBPcHRpb25hbDxTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U291cmNlPiYgc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KIAogICAgIEV4Y2VwdGlvbk9yPERPTUV4Y2VwdGlv
bio+IGVycm9yKCkgY29uc3Q7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIHVp
bnQ2NF90IG1fY3VycmVudFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQgeyAwIH07CiAKICAgICBSZXN1
bHQgbV9yZXN1bHQ7Ci0gICAgT3B0aW9uYWw8U291cmNlPiBtX3NvdXJjZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNvdXJjZT4gbV9zb3VyY2U7CiAKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRp
bmdDdXJzb3I7CiAgICAgUmVmPElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2Nvbm5l
Y3Rpb25Qcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCA5OThhMWZjOWVhMmNmNTVhNjcwMmQ1MTA4MzNmNDUyODY0
MTE2YWJhLi4wMjZjNjFkYzMwZmZkNjBhYmVkODJkOTRjYmU3MWZiZTA5MTUxM2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNv
ck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICBjb21wbGV0
ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFs
bFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VS
VChpc0FjdGl2ZSgpKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpKU0dsb2JhbE9i
agogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUs
IElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIElu
ZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQp
CitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29y
ZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxU
eXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMiKTsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCA2NWJjNDUzYmQ4NmFiZTZiMThjZGMwMGIzNGVjNWYxNWQ3
MWZiNTgwLi44MDExNDI2ODhmNjE5OTkxNTVjY2VhYmMzMzVmMjE0NTllYzM5Y2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1
dE9yQWRkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJPYmplY3RTdG9yZSYsIFJlZlB0cjxJREJL
ZXk+JiYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlKTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldFJlY29yZChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7
Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlND
OjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAg
IFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0
QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURC
T2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5
cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0
ZVJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJWYWx1ZS5oCmluZGV4IDJhNjY0MzJiNWJkOTcxOTJhMWFiNGZmNjA5MGMwYmU5NWQy
M2JkNzQuLmY0MDBkODViNzA3ODFmNDMyZWM5ZWY0OGJjYzg5OGEwYzcwOGIzYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2JGaWxlUGF0aHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8SURCVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SURCVmFsdWU+IGRlY29k
ZShEZWNvZGVyJik7CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogcHJpdmF0ZToKQEAgLTY4
LDcgKzY4LDcgQEAgdm9pZCBJREJWYWx1ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxJREJWYWx1ZT4gSURCVmFs
dWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJREJWYWx1ZT4gSURC
VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElEQlZhbHVlIHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2RhdGEpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApp
bmRleCBjZDJlNjBhYmU2OWMzY2Q5MmZhNzc1YTNiZjYyODRmODVhNDM4ZDZjLi5hYzA0YTZhZWE2
ODlmMmE4NGMwYTVkOGY3NGZmMzNhMDdlZjNmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CiAgICAg
ICAgIHVpbnQ2NF90IG9sZFZlcnNpb24geyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdWZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9u
OwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlRXZlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9vbGRWZXJz
aW9uOyB9Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX25ld1ZlcnNpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CiAKIHByaXZhdGU6CiAgICAgSURCVmVy
c2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSk7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICBJ
REJSZXNvdXJjZUlkZW50aWZpZXIgbV9yZXF1ZXN0SWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBt
X29sZFZlcnNpb247Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbmV3VmVyc2lvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX25ld1ZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCmluZGV4IGM1NjQ2MjhkYzE0Njkw
ZDI2ZTFlMDkzNWJjMmE5NDk3Y2I4YTgyZWUuLjQ2ZWRkYTlhOGMxMjAxNjIyMzAyNmY1ZThiMTM5
MDU1YTYwOTA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC01MDgsNyArNTA4
LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcygpCiAg
ICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblByb3h5
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvbj4+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZl
cnNpb24+PiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBDbGllbnRPcmlnaW4gb3JpZ2luIHsgY29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCksIGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgp
IH07CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgY2Fs
bENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zLCByZXF1ZXN0LT5yZXNvdXJjZUlkZW50aWZpZXIoKSwgb3Jp
Z2luKTsKIH0KIAotdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCBPcHRpb25hbDxWZWN0b3I8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4+JiYgZGF0YWJh
c2VzKQordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPj4mJiBkYXRhYmFz
ZXMpCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0PiByZXF1
ZXN0OwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCBiYzQzNzNmYzc1OTdlMDMy
YWJiNDBiMDI5NDg3ZDY3YzVlOGQ5MDJkLi5mZGMzYWQzNmY5YjNkZTIyOWM0ZDViOTkyOTU0NjRi
ZjA3NDc1ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0xMTUsOCArMTE1LDggQEAg
cHVibGljOgogICAgIHZvaWQgcmVmKCk7CiAgICAgdm9pZCBkZXJlZigpOwogCi0gICAgdm9pZCBn
ZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1
bmN0aW9uPHZvaWQoT3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYm
KT4mJik7Ci0gICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgT3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+PiYmKTsKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPj4mJik+JiYpOworICAgIHZvaWQgZGlkR2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+PiYmKTsKIAogICAg
IHZvaWQgcmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oSURCRGF0YWJhc2UmKTsKICAgICB2b2lk
IHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oSURCRGF0YWJhc2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAppbmRleCA5ZjA2NGQ5MjgwN2IyZTA5NzNhODg4MjlhY2IwYWNmYTFmMzVlOTRl
Li45MjgzMzg4YzRiYjRlY2FlNjEwYzdlOGU2Yjg5MjVlNDc5YjVlNDM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29u
c3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29k
ZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoKQogICAgIHJldHVybiBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwogfQog
Ci1ib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mIHJlc3VsdCkKK2Jvb2wgZGVzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiByZXN1bHQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFzaXplKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCBmNWY2NzQ0MmUzNjc4YTIwYWVi
NThmZWFjOWFjMzlmNzhjNWUxZDc5Li42NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3
YTRmNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7Ci1ib29sIGRl
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7Citib29sIGRl
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURC
S2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJbmRleC5jcHAKaW5kZXggNWMxNWJmYWIyNzExNTVlYjA0NWQ1YjYwZWM5
Yjg2NjJhNmQzMGFlMi4uNDUxM2IwZDM0MjhkNTkwYTY2NGM1NGE0OTVjNDcyMjk5MGVlMzdhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdWludDY0X3QgTWVtb3J5SW5kZXg6
OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpblJhbmdlKQogICAgIHJl
dHVybiBjb3VudDsKIH0KIAotdm9pZCBNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJ
REJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJ
bmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0
Cit2b2lkIE1lbW9yeUluZGV4OjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAogewogICAgIExP
RyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3JkcyIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCmlu
ZGV4IGIxNDliNmI5ODIzN2M2MTA2MzgwMGI5YzJhOTE4YjExYjM4YmEwYzAuLjMxNWM0ZWZjM2Uw
ZjZmOWY2ZTQ3NDE5NGMxY2E4MThkYTQ0MDk0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKIAogICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRl
eGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAg
ICAgdWludDY0X3QgY291bnRGb3JLZXlSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAg
ICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNv
bnN0OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRB
bGxSZXN1bHQmKSBjb25zdDsKIAogICAgIElEQkVycm9yIHB1dEluZGV4S2V5KGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJbmRleEtleSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRl
eCAwM2MzMTFkZmY3YjJjMjQzNDlkMjdjYTg2MzQ3ZWM5ZGJmZGU3ZTliLi5jMmU5ZWEyNDYxN2E4
OGU5ZjRiOGYwMTBkN2NlMDNlYjAwMWViMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAK
QEAgLTQwNyw3ICs0MDcsNyBAQCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9y
ZTo6dmFsdWVGb3JLZXlSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmCiAgICAgcmV0dXJuIG1f
a2V5VmFsdWVTdG9yZS0+Z2V0KGtleSk7CiB9CiAKLXZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6Omdl
dEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJl
c3VsdCYgcmVzdWx0KSBjb25zdAordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQm
IHJlc3VsdCkgY29uc3QKIHsKICAgICByZXN1bHQgPSB7IHR5cGUsIG1faW5mby5rZXlQYXRoKCkg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA0MzQ5OWQ1YmNiZWM2MjZhZDExYzQ1ODJi
NmFiNjY0ZGEyNmRkMDE4Li41Njk3NmRlZDEyNzE2YjhiMzczMjA2MGM1YzU5MGFiOTMzYTczNDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAg
SURCR2V0UmVzdWx0IGluZGV4VmFsdWVGb3JLZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBj
b25zdDsKICAgICB1aW50NjRfdCBjb3VudEZvcktleVJhbmdlKHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAKLSAgICB2b2lkIGdldEFsbFJl
Y29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJ
bmRleGVkREI6OkdldEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQg
Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25z
dDsKIAogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mbzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oCmluZGV4IDAyODUz
NTYzZGUxNjBlNDVlN2RiNDVkYWMxMTE1MjY4ZjA1ODhlYjMuLmViY2VjODI4MTdhZDFlZTA3ZTM5
OTk5ZDNkMjY1OTA1YjA4M2FiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5o
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBJREJLZXlSYW5nZURhdGEgbV9yZW1h
aW5pbmdSYW5nZTsKIAotICAgIE9wdGlvbmFsPElEQktleURhdGFTZXQ6Oml0ZXJhdG9yPiBtX2l0
ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YVNldDo6aXRlcmF0b3I+IG1faXRl
cmF0b3I7CiAKICAgICBJREJLZXlEYXRhIG1fY3VycmVudFBvc2l0aW9uS2V5OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggODU0N2JhZTdhZjQ1ZmU2M2ZjOTFmYmVk
NTAxNjYyNzBmZDk2NjA2ZS4uODgzNGQyYWFjNmU3NTQzNzAwMTE2ZTZhMjRjODBmMWNlZmM3MWNl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAogICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwLCAwKTsKIH0KIAotT3B0aW9u
YWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9i
amVjdFN0b3JlSW5mb1RhYmxlKCkKK3N0ZDo6b3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCkKIHsK
ICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3Blbigp
KTsKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAgICAg
ICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZSA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKICAgICAgICAg
ICAgIGF1dG8ga2V5UGF0aEJ1ZmZlclZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDIpOwogCi0g
ICAgICAgICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBvYmplY3RTdG9yZUtleVBhdGg7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aDsKICAg
ICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlQYXRoKGtleVBhdGhCdWZmZXJWaWV3LmRh
dGEoKSwga2V5UGF0aEJ1ZmZlclZpZXcuc2l6ZSgpLCBvYmplY3RTdG9yZUtleVBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9t
IGRhdGFiYXNlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NTgsNyAr
ODU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICAgICAgICAgIHVpbnQ2NF90IG9i
amVjdFN0b3JlSUQgPSBzcWwtPmNvbHVtbkludDY0KDIpOwogICAgICAgICAgICAgYXV0byBrZXlQ
YXRoQnVmZmVyVmlldyA9IHNxbC0+Y29sdW1uQmxvYlZpZXcoMyk7CiAKLSAgICAgICAgICAgIE9w
dGlvbmFsPElEQktleVBhdGg+IGluZGV4S2V5UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6
ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZlclZpZXcuZGF0YSgpLCBrZXlQYXRoQnVmZmVyVmlldy5z
aXplKCksIGluZGV4S2V5UGF0aCkpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBleHRyYWN0IGtleSBwYXRoIGZyb20gZGF0YWJhc2UiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTkzNyw3ICs5MzcsNyBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpmdWxsRGF0YWJhc2VQYXRoKCkgY29uc3QKICAgICByZXR1cm4gZnVsbERhdGFiYXNl
UGF0aEZvckRpcmVjdG9yeShtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIH0KIAotT3B0aW9uYWw8SURC
RGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5h
bWVBbmRWZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCitzdGQ6Om9w
dGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRo
KQogewogICAgIFNRTGl0ZURhdGFiYXNlIGRhdGFiYXNlOwogICAgIGlmICghZGF0YWJhc2Uub3Bl
bihkYXRhYmFzZVBhdGgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGVm
YzhjNTRhMmYyYjM1MjE1OTVmZjc4ZjUwODMyMzBhZmE2ZTMxOC4uNGUxYTQ4ZjEwOWE5ODRiMWE2
YTNkYmIxYmEzZTM1Y2I3ODJhNDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApA
QCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEaXJlY3Rvcnk7IH07CiAgICAgc3RhdGljIFN0
cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBkYXRhYmFzZU5hbWVBbmRW
ZXJzaW9uRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxl
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAg
ICAgSURCRXJyb3IgZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpOwogICAgIElEQkVycm9y
IGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgoKTsKICAgICBJREJFcnJvciBlbnN1
cmVWYWxpZEJsb2JUYWJsZXMoKTsKLSAgICBPcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBlbnN1
cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCk7CisgICAgc3RkOjpvcHRpb25hbDxJc1NjaGVt
YVVwZ3JhZGVkPiBlbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKCk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gY3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gZXh0cmFjdEV4
aXN0aW5nRGF0YWJhc2VJbmZvKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggNGNlMmJm
MjU4YTNlYmU3ZmQ4NDI4YWY0NzdiZTQyMDk0ODk1NTc2YS4uODkzOGNjZmZkN2Y4MzM5NWM0ZWJk
MDc3ZmExZmEwMzk4M2VmNWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTk5LDcgKzk5
LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+U1FMaXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFu
c2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRoaXMpOwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6
Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgc2hvdWxkSW5jbHVk
ZVByZWZldGNoZWRSZWNvcmRzKQordm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElE
QkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgc2hvdWxkSW5jbHVkZVByZWZldGNo
ZWRSZWNvcmRzKQogewogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggODgzMGZlZGE5MmEzMWIxMzZjMTY3ZDM0MjM5MjJlOTUz
NTRkMzUzMy4uZjc4NzkzMjY2NTY0NzA0ODkwZDMwYzBhMWYxZTJmMDEyY2NjZjM1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYmplY3RT
dG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVm
ZXRjaGVkUmVjb3JkcyB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJl
c3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNo
ZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CisgICAgdm9p
ZCBjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVByZWZl
dGNoZWRSZWNvcmRzOjpObyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDhl
ZDZlODE2N2UxODVjYjcyNmFjNmNlODI5YmQxNWQzMDg2NjdhZWMuLmU0NGFiNjMwMTcyMDM5Y2Fm
ODVjNDlmZDk2ZmMwYjE2ZjExOGM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZGVudGlmaWVycygpOwogCiAgICAgdm9pZCBzZXRNYWlu
VGhyZWFkQWJvcnRSZXN1bHQoY29uc3QgSURCRXJyb3ImIGVycm9yKSB7IG1fbWFpblRocmVhZEFi
b3J0UmVzdWx0ID0geyBlcnJvciB9OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCRXJyb3I+JiBt
YWluVGhyZWFkQWJvcnRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX21haW5UaHJlYWRBYm9ydFJl
c3VsdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCRXJyb3I+JiBtYWluVGhyZWFkQWJv
cnRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsgfQogCiBw
cml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CkBAIC05OSw3ICs5OSw3
IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlm
aWVyczsKIAotICAgIE9wdGlvbmFsPElEQkVycm9yPiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPElEQkVycm9yPiBtX21haW5UaHJlYWRBYm9ydFJlc3VsdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAppbmRleCBi
NGE2M2UyNGRiMjkxMGJmNzgwYjc0N2RkZDYzMzZlMmI0NGQxZDIyLi5hYmFlYzZjNWNmYmNlZDlm
YzY2ZWY1NGZkOGRmZDJjN2EyN2M5MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcApAQCAtNjks
NyArNjksNyBAQCBib29sIElEQkRhdGFiYXNlSW5mbzo6aGFzT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSURCT2JqZWN0U3RvcmVJ
bmZvIElEQkRhdGFiYXNlSW5mbzo6Y3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
K0lEQk9iamVjdFN0b3JlSW5mbyBJREJEYXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBJREJPYmplY3RTdG9yZUluZm8gaW5mbygrK21f
bWF4T2JqZWN0U3RvcmVJRCwgbmFtZSwgV1RGTW92ZShrZXlQYXRoKSwgYXV0b0luY3JlbWVudCk7
CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQoaW5mby5pZGVudGlmaWVyKCksIGluZm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFi
YXNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRh
dGFiYXNlSW5mby5oCmluZGV4IDczNjMwOTdhNWNlOGU5NmY5ZjI4MmE1MWExZTU1Zjg4ZmE0NThh
NDIuLjcxYmNjZDA1ZmM0ZGY3MjQ1NjhhODM4YWYzYTUwODMxMWQ0ZmY5ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJh
c2VJbmZvLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAogICAgIGJvb2wgaGFzT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRl
TmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYm
LCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlSW5mbyBjcmVhdGVOZXdP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
JiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAgICB2b2lkIGFkZEV4aXN0aW5nT2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZv
Rm9yRXhpc3RpbmdPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwog
ICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uLmgKaW5kZXggOWMxMGI0MzAxMzIyZDlkNWYwZjRiNWU1NmQxNzk5ODRiMjhiOGM5Yi4uZjRj
NzVlMGUyN2E2OTA2M2Q0NzZkY2NiOWRkNzhjNWM4ZGRhNjJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0
YWJhc2VOYW1lQW5kVmVyc2lvbi5oCkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uIHsKICAgICB1aW50NjRfdCB2ZXJzaW9uIHsgMCB9OwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRW
ZXJzaW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IGRlY29kZShEZWNv
ZGVyJik7CiAKICAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogfTsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9u
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJREJE
YXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIGluZm87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RXJyb3IuY3BwCmluZGV4IDQ4YTA3Y2ZiMmNlNDBlZGFhMTcxOWQwZTg4MzdiYThkYzgwNjNjYzIu
LjJlMGE1N2FjNjY3YjYyY2M2Y2ZiZGJlNGNmNmYxNTE4OTliMjE4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkVycm9yOjpJREJFcnJv
cihPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitJ
REJFcnJvcjo6SURCRXJyb3Ioc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBjb2RlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgOiBtX2NvZGUoY29kZSkKICAgICAsIG1fbWVzc2FnZSht
ZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaAppbmRleCA3NGZjYzc0NzRmMGQ0OTBjMjcyYzgxY2MyNWE4NDY4Y2Q4NTVm
NzgwLi5mZjE3Yzk4YTQxMTVkZTYyY2FjYzcwYWQzMjUyYmQ2ZWRmMTFmMzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yIHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJvcihPcHRpb25hbDxFeGNl
cHRpb25Db2RlPiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0geyB9KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJvcihzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbkNvZGU+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0pOwog
CiAgICAgc3RhdGljIElEQkVycm9yIHVzZXJEZWxldGVFcnJvcigpCiAgICAgewpAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8RE9NRXhjZXB0aW9uPiB0b0RPTUV4Y2VwdGlv
bigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gY29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAg
U3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgSURCRXJyb3ImKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxFeGNl
cHRpb25Db2RlPiBtX2NvZGU7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBtX2Nv
ZGU7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRh
LmgKaW5kZXggYzYxMjgzZGEyZTdlNjI4NzNiYzhjZWY3ZjRkOTBjMDQ5NzQwYmE2MS4uZGY5MzFi
YjRjMzE4ZTE2N2MzM2JkYWJlNzA5YzFmYTYyODJiNDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29y
ZHNEYXRhLmgKQEAgLTM3LDcgKzM3LDcgQEAgZW51bSBjbGFzcyBHZXRBbGxUeXBlIDogdWludDhf
dDsKIHN0cnVjdCBJREJHZXRBbGxSZWNvcmRzRGF0YSB7CiAgICAgSURCS2V5UmFuZ2VEYXRhIGtl
eVJhbmdlRGF0YTsKICAgICBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZTsKLSAgICBP
cHRpb25hbDx1aW50MzJfdD4gY291bnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQ7CiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAppbmRleCBjNjlhYjQ1
OTRiNmM1Yjc2YTIxY2M4MDI3YjJkZmQ4NGUzMjBkNTk0Li4zZDAwN2IzNzljNTNhMGJmYzQ0ZGY2
ZWI2YTA5ZjhiMmVmYmNjYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaApAQCAtNTUs
MTMgKzU1LDEzIEBAIHZvaWQgSURCSXRlcmF0ZUN1cnNvckRhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgSURCSXRlcmF0ZUN1
cnNvckRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYg
aXRlcmF0b3JDdXJzb3JEYXRhKQogewotICAgIE9wdGlvbmFsPElEQktleURhdGE+IGtleURhdGE7
CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBrZXlEYXRhOwogICAgIGRlY29kZXIgPj4g
a2V5RGF0YTsKICAgICBpZiAoIWtleURhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
dGVyYXRvckN1cnNvckRhdGEua2V5RGF0YSA9IFdURk1vdmUoKmtleURhdGEpOwogCi0gICAgT3B0
aW9uYWw8SURCS2V5RGF0YT4gcHJpbWFyeUtleURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxJREJL
ZXlEYXRhPiBwcmltYXJ5S2V5RGF0YTsKICAgICBkZWNvZGVyID4+IHByaW1hcnlLZXlEYXRhOwog
ICAgIGlmICghcHJpbWFyeUtleURhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9y
ZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9i
amVjdFN0b3JlSW5mby5jcHAKaW5kZXggMmU3MDE2MWE2MDk1MTYzNzRhNTZjNGJlY2FkZTYyNDk3
NzI5ZTE2NS4uYTRkZDYxYWU2YTM0ZDdiZjNjMWEyOTljNzBkNmExYzBiYjZlYjE4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0
b3JlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQk9iamVjdFN0b3JlSW5mby5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgSURCT2JqZWN0U3RvcmVJ
bmZvOjpJREJPYmplY3RTdG9yZUluZm8oKQogewogfQogCi1JREJPYmplY3RTdG9yZUluZm86OklE
Qk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUs
IE9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURC
T2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50KQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAg
LCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5UGF0aChXVEZNb3ZlKGtleVBhdGgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0
b3JlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9i
amVjdFN0b3JlSW5mby5oCmluZGV4IDBlYTZhOTdkOTYwOGRjYTU5NmQ3OWJlZTMxZWU4YjA1NTAy
M2M1MTYuLjQwM2ZkNDA1OTg2YmM1ZDkyN2I0ZTYzYWRmMGM5NWZlZjFhZTk2OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9y
ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
T2JqZWN0U3RvcmVJbmZvLmgKQEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJREJPYmplY3RTdG9yZUluZm8gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IElEQk9iamVjdFN0b3JlSW5mbygpOwotICAgIElEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYsIGJv
b2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmLCBi
b29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIGJv
b2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0luY3JlbWVudDsgfQogCiAg
ICAgdm9pZCByZW5hbWUoY29uc3QgU3RyaW5nJiBuZXdOYW1lKSB7IG1fbmFtZSA9IG5ld05hbWU7
IH0KQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBPcHRpb25hbDxJREJLZXlQ
YXRoPiBtX2tleVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7
CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgSURCSW5kZXhJbmZvPiBtX2luZGV4TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA3YTA1
NDJiYTMyNGEzOTFkODlkY2QwN2MwNGJiM2JlODc1ZmMwNzE1Li4wMThjYjEzZTc1ZWI2NDVkZDEx
NGUyNGY2ZGJmZWEzNGNmNTViMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtODcsNyArODcsNyBA
QCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1faW5kZXhJZGVudGlmaWVyIHsgMCB9OwogICAgIElu
ZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIG1faW5kZXhSZWNvcmRUeXBlIHsgSW5kZXhlZERCOjpJ
bmRleFJlY29yZFR5cGU6OktleSB9OwogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxJREJEYXRhYmFz
ZUlkZW50aWZpZXI+IG1fZGF0YWJhc2VJZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxJREJEYXRhYmFzZUlkZW50aWZpZXI+IG1fZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIHVp
bnQ2NF90IG1fcmVxdWVzdGVkVmVyc2lvbiB7IDAgfTsKIAogICAgIEluZGV4ZWREQjo6UmVxdWVz
dFR5cGUgbV9yZXF1ZXN0VHlwZSB7IEluZGV4ZWREQjo6UmVxdWVzdFR5cGU6Ok90aGVyIH07CkBA
IC0xMzQsNyArMTM0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVxdWVzdC5tX2luZGV4SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4+IGRhdGFiYXNlSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlm
aWVyPj4gZGF0YWJhc2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gZGF0YWJhc2VJZGVudGlm
aWVyOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaAppbmRleCBiYjk0ZmE3MzczMWU2N2Q3MWNkZTI1ZGNkNzI0MjcxMzFjNGEx
MzBmLi5iNTE3YzM3NzQzNzBhZmE0NTk1Zjg0NTU1ZTQ2NTIxNTIyOWNkMDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJ
REJSZXN1bHREYXRhKCk7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxJREJSZXN1bHREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQlJlc3VsdERhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6CiAgICAgSURCUmVzdWx0RGF0YShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIElEQlJlc3VsdERhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBlbmNvZGVyIDw8ICptX2dldEFsbFJl
c3VsdDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0
YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmVxdWVzdElkZW50aWZpZXIpKQpAQCAtMjAz
LDcgKzIwMyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERh
dGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1h
a2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKLSAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0
aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAg
ICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggOWZiZmZj
MTAwMDRlNDQxODQxNTgxMDcyM2Y5NWFmODQzY2U0NDNhYi4uMDRhODBmNTllYzVjYzRlNGUwYjdh
NjFiZTE0NGNjMGExY2I2MDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC0xNTMsNyArMTUz
LDcgQEAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4gTWVkaWFDb250cm9sc0hvc3Q6OnNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0wKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKS5zb3J0ZWRUcmFja0xpc3RGb3JNZW51KCZ0cmFja0xpc3QpOwog
fQogCi1TdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3Qg
T3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mIHRyYWNrKQorU3RyaW5nIE1lZGlhQ29udHJvbHNI
b3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dE9yQXVkaW9U
cmFjaz4mIHRyYWNrKQogewogICAgIGlmICghbV9tZWRpYUVsZW1lbnQgfHwgIXRyYWNrKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggZDM3ODhhYTZh
N2IyMTJiYmExNmZkN2M4MTU4YjJmOWE3ZDRkNDAzNC4uN2E4OTBhMGRkMWNmYTE5OTEyMWQwM2Fl
YWI0YzMxYzIzNTc1NDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1l
bnUoQXVkaW9UcmFja0xpc3QmKTsKIAogICAgIHVzaW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6
OlZhcmlhbnQ8UmVmUHRyPFRleHRUcmFjaz4sIFJlZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3Ry
aW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4m
KTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRl
eHRPckF1ZGlvVHJhY2s+Jik7CiAKICAgICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9uTWVudU9m
Zkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmNwcAppbmRleCBiMDk1OWFjZmJkMzUwZWU0NTc5YjkzM2U3NTk5MmZlYzYzNzNk
MmI4Li40NzVjYzg1ZjhmM2Q4NjM5ZTVmNjM2NjBhN2RjNjJjZWY4YTdlZjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIu
Y3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgY29uc3QgY2hhciogTWVkaWFSZWNvcmRlcjo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJNZWRpYVJlY29yZGVyIjsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoT3B0aW9uYWw8
dW5zaWduZWQ+IHRpbWVTbGljZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0
YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVTbGljZSkKIHsKICAgICBp
ZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIlRoZSBNZWRpYVJlY29yZGVyIGlzIG5vdCBhY3RpdmUiX3MgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4
IGI4OWQ1MTNmYTA1ZmNjZTY3NTI5Mjc4MTZhNTFmNGRmYWE5NzExYmIuLjc3MTJiNDQ1MjgzNjdk
OGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtNjksNyArNjksNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OmRlcmVmOwogICAgIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0UmVjb3JkaW5nKE9wdGlv
bmFsPHVuc2lnbmVkPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRSZWNvcmRpbmcoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4pOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlcXVlc3REYXRhKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGF1
c2VSZWNvcmRpbmcoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIFJlY29yZGluZ1N0
YXRlIG1fc3RhdGUgeyBSZWNvcmRpbmdTdGF0ZTo6SW5hY3RpdmUgfTsKICAgICBWZWN0b3I8UmVm
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gbV90cmFja3M7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fdGltZVNsaWNlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fdGltZVNsaWNl
OwogICAgIFRpbWVyIG1fdGltZVNsaWNlVGltZXI7CiAgICAgCiAgICAgYm9vbCBtX2lzQWN0aXZl
IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFJbWFnZS5oCmluZGV4IDQ5MzI0MDBhMDJmODc2OWQxOTQ4OWNkMzhhMmRhODAzYTQ4MWMyNGMu
LmEyNmEwNTA3YjMzMGFmYzQyYWI0YjNjZTBhNTdkMDUwZTM4NWU4OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYUltYWdlLmgKQEAgLTM1LDcgKzM1
LDcgQEAgc3RydWN0IE1lZGlhSW1hZ2UgewogICAgIFN0cmluZyB0eXBlOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUltYWdlPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1lZGlhSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiBpbmxpbmUgdm9pZCBNZWRpYUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKQEAgLTQzLDcgKzQzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQg
TWVkaWFJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBzcmMgPDwgc2l6ZXMgPDwgdHlwZTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5s
aW5lIE9wdGlvbmFsPE1lZGlhSW1hZ2U+IE1lZGlhSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFJ
bWFnZT4gTWVkaWFJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3RyaW5n
IHNyYzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNyYykpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDkyNmNm
NjUzNTYzNTQzYTAwNzhiOTAwODJlMDBmNjY1MGNiYzY0ZGEuLjZmOWMyZjQ5MjQyZjJkYTcxNDZh
NWVmZjcwMGJkZjcxNmRlZjczYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgbV9jYWxsYmFjayhiaXRtYXBJbWFnZS5wdHIoKSk7CiB9
CiAKLUV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gTWVkaWFNZXRhZGF0YTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJ
bml0PiYmIGluaXQpCitFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRhZGF0YT4+IE1lZGlhTWV0YWRh
dGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFs
PE1lZGlhTWV0YWRhdGFJbml0PiYmIGluaXQpCiB7CiAgICAgYXV0byBtZXRhZGF0YSA9IGFkb3B0
UmVmKCpuZXcgTWVkaWFNZXRhZGF0YSk7CiAgICAgaWYgKGluaXQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAppbmRleCAyOTYw
YjQ0YTg2M2JjODJiNGY5MjNhY2IzNWE2Y2UxYjBkMTM4MjMyLi5kNTc3NGI1MDlkOWE1NjBmMmMy
ODc1ZDQxNDcwNzhlOGY2NWYxMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRh
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5p
dD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0
PiYmKTsKICAgICB+TWVkaWFNZXRhZGF0YSgpOwogCiAgICAgdm9pZCBzZXRNZWRpYVNlc3Npb24o
TWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFNZXRhZGF0YUluaXQuaAppbmRleCA1ZDdlMzc3NmE2ZjMzMWE4ZDNiMGY5
MjJkZTFhNzlkNzI4MzZhYWRhLi44N2FiY2VmYzA0YmFkNWFmMzkwN2E3MDQ3OGY0MzE2NDQ2ZGNj
OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhSW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGFJbml0LmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IE1lZGlhTWV0YWRh
dGFJbml0IHsKICAgICBWZWN0b3I8TWVkaWFJbWFnZT4gYXJ0d29yazsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYU1ldGFkYXRhSW5pdDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01MywzMSArNTMsMzEgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gaW5saW5lIHZvaWQgTWVkaWFNZXRhZGF0YUluaXQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKQogICAgIDw8IGFydHdvcms7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlu
bGluZSBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4gTWVkaWFNZXRhZGF0YUluaXQ6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6
b3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+IE1lZGlhTWV0YWRhdGFJbml0OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRpdGxlOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAgICBkZWNvZGVyID4+IHRpdGxlOwogICAgIGlmICgh
dGl0bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGFydGlz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXJ0aXN0OwogICAgIGRlY29kZXIgPj4gYXJ0
aXN0OwogICAgIGlmICghYXJ0aXN0KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9u
YWw8U3RyaW5nPiBhbGJ1bTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYWxidW07CiAgICAg
ZGVjb2RlciA+PiBhbGJ1bTsKICAgICBpZiAoIWFsYnVtKQogICAgICAgICByZXR1cm4geyB9Owog
CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fUExBWUxJU1QpCi0gICAgT3B0aW9uYWw8U3RyaW5n
PiB0cmFja0lkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRyYWNrSWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IHRyYWNrSWRlbnRpZmllcjsKICAgICBpZiAoIXRyYWNrSWRl
bnRpZmllcikKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8VmVj
dG9yPE1lZGlhSW1hZ2U+PiBhcnR3b3JrOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlh
SW1hZ2U+PiBhcnR3b3JrOwogICAgIGRlY29kZXIgPj4gYXJ0d29yazsKICAgICBpZiAoIWFydHdv
cmspCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVBvc2l0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCmluZGV4IDA3NmZhZTQ1MTg5
ZWNiMGM5ZGJmNjg2ZGIwZDg5OGJiOTkyNjVjZTMuLjBhYmNiNTkyMmZmOTAzMzA4YWY1OTVjYjU0
YmNhYmY0YzY5ZWY1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVj
dCBNZWRpYVBvc2l0aW9uU3RhdGUgewogICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFQb3Np
dGlvblN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4gZGVjb2RlKERlY29kZXIm
KTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmIG90aGVy
KSBjb25zdCB7IHJldHVybiBkdXJhdGlvbiA9PSBvdGhlci5kdXJhdGlvbiAmJiBwbGF5YmFja1Jh
dGUgPT0gb3RoZXIucGxheWJhY2tSYXRlICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOyB9
CiB9OwpAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9p
ZCBNZWRpYVBvc2l0aW9uU3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKQogICAgIGVuY29k
ZXIgPDwgZHVyYXRpb24gPDwgcGxheWJhY2tSYXRlIDw8IHBvc2l0aW9uOwogfQogCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRp
YVBvc2l0aW9uU3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBNZWRpYVBv
c2l0aW9uU3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGRvdWJsZSBkdXJh
dGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGR1cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDVi
MjU0NGNlZWQwNTdmNjUwNzY2MmQ4NzNlNWEyYTZjZDBhZmYxODQuLjFlMTRkNzc4NTQzNjZiMDA4
NjYzNWZjYzlkZmRhMTU5YjZiNGRjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9y
bUNvbW1hbmRGb3JNZWRpYVNlcwogICAgIHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9D
b21tYW5kOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb21tYW5kQXJndW1lbnQ+PiBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24o
Y29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0YWlscykKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
Pj4gcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGNvbnN0IE1lZGlhU2Vzc2lv
bkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGFpbHMpCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5vQ29tbWFuZDsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFy
Z3VtZW50IGFyZ3VtZW50OwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpj
YWxsQWN0aW9uSGFuZGxlcihjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25E
ZXRhCiBib29sIE1lZGlhU2Vzc2lvbjo6Y2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNz
aW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0YWlscywgVHJpZ2dlckdlc3R1cmVJbmRpY2F0b3Ig
dHJpZ2dlckdlc3R1cmVJbmRpY2F0b3IpCiB7CiAgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fYWN0
aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRldGFpbHMuYWN0aW9uKSkgewotICAgICAgICBPcHRpb25h
bDxVc2VyR2VzdHVyZUluZGljYXRvcj4gbWF5YmVHZXN0dXJlSW5kaWNhdG9yOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFVzZXJHZXN0dXJlSW5kaWNhdG9yPiBtYXliZUdlc3R1cmVJbmRpY2F0b3I7
CiAgICAgICAgIGlmICh0cmlnZ2VyR2VzdHVyZUluZGljYXRvciA9PSBUcmlnZ2VyR2VzdHVyZUlu
ZGljYXRvcjo6WWVzKQogICAgICAgICAgICAgbWF5YmVHZXN0dXJlSW5kaWNhdG9yLmVtcGxhY2Uo
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBkb2N1bWVudCgpKTsKICAgICAgICAgaGFuZGxlci0+aGFu
ZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBNZWRpYVNl
c3Npb246OmNhbGxBY3Rpb25IYW5kbGVyKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMm
IGFjdGlvbkRldGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVk
aWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4m
JiBzdGF0ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0
ZShzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJiBzdGF0ZSkKIHsKICAgICBpZiAo
c3RhdGUpCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc3RhdGUudmFsdWUoKSk7
CkBAIC0zMzMsNyArMzMzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQ
b3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJgogICAgIHJldHVybiB7
IH07CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gTWVkaWFTZXNzaW9uOjpjdXJyZW50UG9zaXRpb24o
KSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0
aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9zaXRpb25TdGF0ZSB8fCAhbV9sYXN0UmVwb3J0
ZWRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNTczMTg5
NTAwYzM5NDczZjMzM2RhMGQ2ZmQ0NThhOWRjYjllOGM5Yi4uM2U2NDYwNTNjN2I5OGE5YTY1Yzk1
NmEyZWZiNTI2MmU1ZDBmM2ViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhbGxBY3Rpb25IYW5kbGVyKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFp
bHMmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJik7Ci0gICAg
T3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBwb3NpdGlvblN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvblN0YXRlOyB9CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9zaXRpb25T
dGF0ZShzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJik7CisgICAgc3RkOjpvcHRp
b25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IHBvc2l0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uU3RhdGU7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRvdWJsZT4g
Y3VycmVudFBvc2l0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3Q7CiAgICAgCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWV0
YWRhdGFDaGFuZ2VkKGNvbnN0IFJlZlB0cjxNZWRpYU1ldGFkYXRhPiYpIHsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3Np
dGlvblN0YXRlPiYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5n
ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25QbGF5YmFja1N0
YXRlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGFjdGlvbkhhbmRsZXJzQ2hhbmdlZCgpIHsg
fQogCkBAIC0xNDcsOCArMTQ3LDggQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4g
bV9uYXZpZ2F0b3I7CiAgICAgUmVmUHRyPE1lZGlhTWV0YWRhdGE+IG1fbWV0YWRhdGE7CiAgICAg
TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBNZWRpYVNlc3Npb25Q
bGF5YmFja1N0YXRlOjpOb25lIH07Ci0gICAgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBt
X3Bvc2l0aW9uU3RhdGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRlZFBvc2l0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiBtX3Bvc2l0aW9uU3Rh
dGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fbGFzdFJlcG9ydGVkUG9zaXRpb247CiAg
ICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExhc3RQb3NpdGlvblVwZGF0ZTsKICAgICBIYXNoTWFw
PE1lZGlhU2Vzc2lvbkFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhhbmRsZXI+LCBX
VEY6OkludEhhc2g8TWVkaWFTZXNzaW9uQWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0
czxNZWRpYVNlc3Npb25BY3Rpb24+PiBtX2FjdGlvbkhhbmRsZXJzOwogICAgIFJlZlB0cjxjb25z
dCBMb2dnZXI+IG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscy5oCmluZGV4IGY1
OTA5ZDQ2ZjhlYWM2NmQwZjNjOWRkN2U3NTMyZTM2MDQ2OGQ2YTQuLjliMzQxMDJlZmU2NWNiNDI5
Y2ExOTUzMGJlN2Q2MzY3Mzc0ZTA2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzLmgK
QEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgTWVkaWFTZXNz
aW9uQWN0aW9uRGV0YWlscyB7CiAgICAgTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiA9IE1lZGlh
U2Vzc2lvbkFjdGlvbjo6UGxheTsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNlZWtPZmZzZXQ7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBzZWVrVGltZTsKLSAgICBPcHRpb25hbDxib29sPiBmYXN0U2Vl
azsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2Vla09mZnNldDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gc2Vla1RpbWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBmYXN0U2VlazsK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9QTEFZTElTVCkKICAgICBTdHJpbmcgdHJhY2tJZGVu
dGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggOWM2MDI4
ZDE0MGQ2ODNiYjEyNzU1MGZkMTQ0MmRhYmM0NDFkZjViYS4uYmMwYjhiYjhkOTdkMWU1NmRhNGZm
NmMzNzNhNDEzMWE0NTliYzNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApAQCAt
NzYsNyArNzYsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
KnRoaXMpLCBpZGVudGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5h
dG9yLT5qb2luKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIs
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Np
b24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZh
dGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigq
dGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8
RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0
b3ItPnNlZWtUbyh0aW1lLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVu
dGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+
bV9zZXNzaW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjUsNyBA
QCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+cGxheShbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBpZGVu
dGlmaWVyLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbj4m
JiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnBhdXNlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2Uo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldIChPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2UoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAg
ICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fc2Vzc2lvbikgewogICAgICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0
VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFj
aywgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgaWRlbnRpZmllciwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2V0VHJhY2sodHJhY2ssIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGlkZW50aWZpZXIsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSAoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Nlc3Npb24pIHsKICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6Om1ldGFkYXRhQ2hhbmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mIG1l
dGFkCiAjZW5kaWYKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25T
dGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgcG9zaXRpb25T
dGF0ZSkKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2Vk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgcG9zaXRpb25TdGF0ZSkK
IHsKICAgICBpZiAocG9zaXRpb25TdGF0ZSkKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCBwb3NpdGlvblN0YXRlLnZhbHVlKCkpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRU
aW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIFVOVVNFRF9QQVJBTShob3N0VGltZSk7CiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4
IGJlNTIwMDAyYTViYjFiZjdlYzY5ZjBkYjNkNmUyNjU2YzdiYTMxMTcuLjMzMGM0YWViNjA1MWUz
ZTNkZThhNGY5YWFiMDcxNWE0NjM1MjRhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApA
QCAtNjgsMTMgKzY4LDEzIEBAIHByaXZhdGU6CiAKICAgICAvLyBNZWRpYVNlc3Npb246Ok9ic2Vy
dmVyCiAgICAgdm9pZCBtZXRhZGF0YUNoYW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRhdGE+
JikgZmluYWw7Ci0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxN
ZWRpYVBvc2l0aW9uU3RhdGU+JikgZmluYWw7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdl
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2
b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIGZpbmFs
OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSkgZmlu
YWw7CiAKICAgICAvLyBNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vl
a1Nlc3Npb25Ub1RpbWUoZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRp
b25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdFRpbWUs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBj
b29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0
YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXgg
ZjM2ZWVkMmMyNjE0ZTk2YTcxNmM4YjI4NTExMmI3Mjk0ZDQ1ZWFjNC4uODU1YWY2OWI2ZTg0ZTNi
NDY5OTJjZDU5YjM3MjAwNDBiN2Y3ZTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcml2YXRlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5U2Vzc2lvbihPcHRpb25hbDxkb3VibGU+IGF0
VGltZSwgT3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gYXRUaW1lLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaG9zdFRpbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VTZXNz
aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSkgeyB9OwpAQCAtNTgsMTUgKzU4
LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBsZWF2ZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8TWVkaWFQb3Np
dGlvblN0YXRlPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25SZWFkeVN0YXRlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25z
dCBTdHJpbmcmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGZkN2I4YTkwODgyNzRmOTZmODU2Njc3MjNkZGJjNzE2
ZDMzNDhiZTguLjQ1OTM1YmY5OThhYWQ4MTQwMDM2YWFhODFjODNlNTk2ODk5MThjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFk
eVN0YXRlIHN0YXRlKQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZShvbGRTdGF0ZSwgc3RhdGUpOwog
fQogCi1FeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8
RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6
ZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC01NTIsNyArNTUyLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFt
RXJyb3I+IGVycm9yKQogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN0
cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQordm9p
ZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Ioc3RkOjpvcHRpb25hbDxFbmRPZlN0
cmVhbUVycm9yPiBlcnJvcikKIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAo
ZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmgKaW5kZXggM2Y0OTUzMzI3MTQxZWEwMGJiODMzOTI5MTgxMDRjNmFhOGMyMWRjNi4uMTkx
ZTAwMzJiYmE3ZjYyZGY4OTBkNjZjMTA5ZGE5NjExMWI0Yzk1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJEaWRDaGFuZ2VCdWZmZXJlZERpcnR5KFNv
dXJjZUJ1ZmZlciYsIGJvb2wpOwogCiAgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsg
TmV0d29yaywgRGVjb2RlIH07Ci0gICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPik7CisgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihzdGQ6
Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIE1lZGlhVGltZSBkdXJhdGlvbigp
IGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCkgY29uc3QgZmluYWw7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogCiAgICAg
ZW51bSBjbGFzcyBSZWFkeVN0YXRlIHsgQ2xvc2VkLCBPcGVuLCBFbmRlZCB9OwogICAgIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGVuZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmRPZlN0cmVhbShzdGQ6Om9wdGlvbmFsPEVuZE9mU3Ry
ZWFtRXJyb3I+KTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjay5jcHAKaW5kZXggYzg1MjQ1ZWRmZDFhYTY4NDAxMGE1ODE1ZjcwMzE5MzZh
NzNlMGVkOC4uMDg4MDkzMzRhODIwYmQ4ZjYyNWM5MzMwMzQyYWZiODlhOTZhZjI5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2spOwogCi1SZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2s+IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+JiYgY2FudmFzLCBPcHRpb25hbDxkb3VibGU+JiYg
ZnJhbWVSZXF1ZXN0UmF0ZSkKK1JlZjxDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjaz4gQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxIVE1MQ2FudmFzRWxlbWVudD4mJiBjYW52YXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZy
YW1lUmVxdWVzdFJhdGUpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjazo6U291cmNlOjpjcmVhdGUoY2FudmFzLmdldCgpLCBXVEZNb3ZlKGZyYW1lUmVx
dWVzdFJhdGUpKTsKICAgICBhdXRvIHRyYWNrID0gYWRvcHRSZWYoKm5ldyBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjayhkb2N1bWVudCwgV1RGTW92ZShjYW52YXMpLCBXVEZNb3ZlKHNvdXJj
ZSkpKTsKQEAgLTU2LDcgKzU2LDcgQEAgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OkNh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwKIHsKIH0KIAot
UmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U+IENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFz
LCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK1JlZjxDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlPiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6
U291cmNlOjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgc3RkOjpvcHRpb25hbDxk
b3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVm
KCpuZXcgU291cmNlKGNhbnZhcywgV1RGTW92ZShmcmFtZVJlcXVlc3RSYXRlKSkpOwogICAgIHNv
dXJjZS0+c3RhcnQoKTsKQEAgLTc1LDcgKzc1LDcgQEAgY29uc3QgY2hhciogQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogfQogCiAvLyBG
SVhNRTogR2l2ZSBzb3VyY2UgaWQgYW5kIG5hbWUKLUNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBPcHRpb25hbDxk
b3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
OjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShU
eXBlOjpWaWRlbywgIkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrIl9zKQogICAgICwgbV9m
cmFtZVJlcXVlc3RSYXRlKFdURk1vdmUoZnJhbWVSZXF1ZXN0UmF0ZSkpCiAgICAgLCBtX3JlcXVl
c3RGcmFtZVRpbWVyKCp0aGlzLCAmU291cmNlOjpyZXF1ZXN0RnJhbWVUaW1lckZpcmVkKQpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJj
ZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52YXMpCiAgICAgc2V0U2l6ZShJbnRTaXpl
KG1fY2FudmFzLT53aWR0aCgpLCBtX2NhbnZhcy0+aGVpZ2h0KCkpKTsKIH0KIAotdm9pZCBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jh
c2UmIGNhbnZhcywgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpCit2b2lkIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2Fu
dmFzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKQogewogICAgIEFTU0VSVF9VTlVT
RUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5oCmluZGV4IDc1ZmRkZmI5OTMwNmI5Y2EwNzBiNWIxOTYzMzFkYmFhMDBlYmE1
MDUuLmI3ZDA0ZGI0MDNhNmExODFiMTE1NzRkYWEwNGM3MjJhMTliMDQ5NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2U7
CiBjbGFzcyBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayBmaW5hbCA6IHB1YmxpYyBNZWRp
YVN0cmVhbVRyYWNrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+
JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsKKyAgICBzdGF0aWMgUmVm
PENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8SFRN
TENhbnZhc0VsZW1lbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJh
dGUpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFz
LmdldCgpOyB9CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoKSB7IHN0YXRpY19jYXN0PFNvdXJjZSY+
KHNvdXJjZSgpKS5yZXF1ZXN0RnJhbWUoKTsgfQpAQCAtNTIsMTYgKzUyLDE2IEBAIHByaXZhdGU6
CiAKICAgICBjbGFzcyBTb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwg
cHJpdmF0ZSBDYW52YXNPYnNlcnZlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVm
PFNvdXJjZT4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZy
YW1lUmVxdWVzdFJhdGUpOworICAgICAgICBzdGF0aWMgUmVmPFNvdXJjZT4gY3JlYXRlKEhUTUxD
YW52YXNFbGVtZW50Jiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSk7
CiAgICAgICAgIAogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZSgpIHsgbV9zaG91bGRFbWl0RnJh
bWUgPSB0cnVlOyB9Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0UmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZXF1ZXN0UmF0ZTsgfQorICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZnJhbWVSZXF1ZXN0UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZXF1
ZXN0UmF0ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVt
ZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmKTsKKyAgICAgICAgU291cmNlKEhUTUxDYW52YXNFbGVt
ZW50Jiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYpOwogCiAgICAgICAgIC8vIENhbnZhc09ic2Vy
dmVyIEFQSQotICAgICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IE9w
dGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENh
bnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBjYW52YXNSZXNpemVkKENhbnZhc0Jhc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBj
YW52YXNEZXN0cm95ZWQoQ2FudmFzQmFzZSYpIGZpbmFsOwogCkBAIC03NiwxMCArNzYsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWVUaW1lckZpcmVkKCk7CiAKICAgICAg
ICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFtZSB7IHRydWUgfTsKLSAgICAgICAgT3B0aW9uYWw8ZG91
YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
X2ZyYW1lUmVxdWVzdFJhdGU7CiAgICAgICAgIFRpbWVyIG1fcmVxdWVzdEZyYW1lVGltZXI7CiAg
ICAgICAgIFRpbWVyIG1fY2FwdHVyZUNhbnZhc1RpbWVyOwotICAgICAgICBPcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7
CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBtX2NhbnZhczsKICAgICAgICAgUmVmUHRyPElt
YWdlPiBtX2N1cnJlbnRJbWFnZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9EZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RldGFjaGVkUlRDRGF0YUNoYW5uZWwuaAppbmRleCA0
ZDkxNmY4OWJmNWZhOGE4ZDAxYTkwMWFhODExMGM2NjEyYzI5NmM5Li4wZjM2Yzc4MzdmMTViYjIw
MDVkMjVmZTZiYjQyMzc5OTgwZjE3MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0RldGFjaGVkUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RldGFjaGVkUlRDRGF0YUNoYW5uZWwuaApAQCAtNjQs
NyArNjQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERldGFjaGVkUlRDRGF0YUNo
YW5uZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjbwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4gRGV0YWNoZWRSVENE
YXRhQ2hhbm5lbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC03Mywx
MiArNzMsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjp1bmlxdWVfcHRyPERldGFj
aGVkUlRDRGF0YUNoYW5uZWw+IERldGFjaGVkUlRDRGF0YUMKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGxhYmVsKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPFJUQ0RhdGFD
aGFubmVsSW5pdD4gb3B0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5p
dD4gb3B0aW9uczsKICAgICBkZWNvZGVyID4+IG9wdGlvbnM7CiAgICAgaWYgKCFvcHRpb25zKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxTdGF0ZT4g
c3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxSVENEYXRhQ2hhbm5lbFN0YXRlPiBzdGF0ZTsKICAg
ICBkZWNvZGVyID4+IHN0YXRlOwogICAgIGlmICghc3RhdGUpCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJh
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RvdWJsZVJhbmdlLmgK
aW5kZXggMmNiNTEwYTEwNGQ2MTBkYzk5ODEwMmU2NzQyYjQ0N2Q3ZGEzMjEwNi4uODRhNDZiZDYw
YzY1YzU0NmM2NDc1OTk2NzJlMmU3ZGI1MzA4YmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Eb3VibGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vRG91YmxlUmFuZ2UuaApAQCAtMzEsOCArMzEsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRG91YmxlUmFuZ2UgewotICAgIE9wdGlvbmFsPGRv
dWJsZT4gbWF4OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBtYXg7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1pbjsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9uZ1JhbmdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0xvbmdSYW5nZS5oCmluZGV4IDA3
MzI2MjcwNzlmYzQ4ODRjZjgxNjcyMjlhNjJlNWExNjdmNTcwYjEuLjE2MGVmODZiNjA4MjdjZjcz
ZmJiYzZiZGM0N2ZjOThiNzA1NDUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTG9uZ1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Mb25nUmFuZ2UuaApAQCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgTG9uZ1JhbmdlIHsKLSAgICBPcHRpb25hbDxpbnQ+IG1heDsKLSAgICBP
cHRpb25hbDxpbnQ+IG1pbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbWF4OworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBtaW47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA5MmM4ZGY4YmIx
MWIwZDYxY2I3NDc0ZDQ5ZGZhYTU1ZWQ1NmZmOGE5Li45ZjAzY2Y0NmQ2ZGEyM2JiY2U0MWM5ZmZj
MzJkNjE1NGE2MDg0ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBNZWRp
YVN0cmVhbVRyYWNrOjpUcmFja0NhcGFiaWxpdGllcyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBh
YmlsaXRpZXMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBNZWRpYUNv
bnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3QgT3B0aW9uYWw8TWVkaWFUcmFj
a0NvbnN0cmFpbnRzPiYgY29uc3RyYWludHMpCitzdGF0aWMgTWVkaWFDb25zdHJhaW50cyBjcmVh
dGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFp
bnRzPiYgY29uc3RyYWludHMpCiB7CiAgICAgaWYgKCFjb25zdHJhaW50cykgewogICAgICAgICBN
ZWRpYUNvbnN0cmFpbnRzIHZhbGlkQ29uc3RyYWludHM7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3Rh
dGljIE1lZGlhQ29uc3RyYWludHMgY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdCBPcHRpb25h
bDxNZWRpYVRyYWNrQ29uc3RyYWkKICAgICByZXR1cm4gY3JlYXRlTWVkaWFDb25zdHJhaW50cyhj
b25zdHJhaW50cy52YWx1ZSgpKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4mIGNvbnN0cmFp
bnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQordm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0Nv
bnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiB7CiAgICAgbV9wcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPj4oV1RGTW92ZShwcm9taXNlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggNTkyYWIyYmIxNThl
N2QzNTUyMGJiNWU0ZWM0YjA3ZmQwMTkyMTRjYS4uNzc3MDhiZTg5ODM2MjBlZWU4OTcyNWQ5Zjk0
NDVjNGYyZTBmNTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTEwMiwxNiArMTAyLDE2IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQ2FwdHVyZVRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcHR1cmVUcmFj
azsgfQogCiAgICAgc3RydWN0IFRyYWNrU2V0dGluZ3MgewotICAgICAgICBPcHRpb25hbDxpbnQ+
IHdpZHRoOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiBhc3BlY3RSYXRpbzsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlv
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwogICAgICAgICBTdHJp
bmcgZmFjaW5nTW9kZTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2b2x1bWU7Ci0gICAgICAg
IE9wdGlvbmFsPGludD4gc2FtcGxlUmF0ZTsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBzYW1wbGVT
aXplOwotICAgICAgICBPcHRpb25hbDxib29sPiBlY2hvQ2FuY2VsbGF0aW9uOwotICAgICAgICBP
cHRpb25hbDxib29sPiBkaXNwbGF5U3VyZmFjZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHZvbHVtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNhbXBsZVJhdGU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzYW1wbGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGVjaG9DYW5jZWxsYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlz
cGxheVN1cmZhY2U7CiAgICAgICAgIFN0cmluZyBsb2dpY2FsU3VyZmFjZTsKICAgICAgICAgU3Ry
aW5nIGRldmljZUlkOwogICAgICAgICBTdHJpbmcgZ3JvdXBJZDsKQEAgLTExOSwyMiArMTE5LDIy
IEBAIHB1YmxpYzoKICAgICBUcmFja1NldHRpbmdzIGdldFNldHRpbmdzKCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgVHJhY2tDYXBhYmlsaXRpZXMgewotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+
IHdpZHRoOwotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+IGhlaWdodDsKLSAgICAgICAgT3B0
aW9uYWw8RG91YmxlUmFuZ2U+IGFzcGVjdFJhdGlvOwotICAgICAgICBPcHRpb25hbDxEb3VibGVS
YW5nZT4gZnJhbWVSYXRlOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZmFjaW5n
TW9kZTsKLSAgICAgICAgT3B0aW9uYWw8RG91YmxlUmFuZ2U+IHZvbHVtZTsKLSAgICAgICAgT3B0
aW9uYWw8TG9uZ1JhbmdlPiBzYW1wbGVSYXRlOwotICAgICAgICBPcHRpb25hbDxMb25nUmFuZ2U+
IHNhbXBsZVNpemU7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjxib29sPj4gZWNob0NhbmNlbGxh
dGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMb25nUmFuZ2U+IHdpZHRoOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPExvbmdSYW5nZT4gaGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERv
dWJsZVJhbmdlPiBhc3BlY3RSYXRpbzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEb3VibGVSYW5n
ZT4gZnJhbWVSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBmYWNp
bmdNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZVJhbmdlPiB2b2x1bWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8TG9uZ1JhbmdlPiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPExvbmdSYW5nZT4gc2FtcGxlU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8Ym9vbD4+IGVjaG9DYW5jZWxsYXRpb247CiAgICAgICAgIFN0cmluZyBkZXZpY2VJZDsKICAg
ICAgICAgU3RyaW5nIGdyb3VwSWQ7CiAgICAgfTsKICAgICBUcmFja0NhcGFiaWxpdGllcyBnZXRD
YXBhYmlsaXRpZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50cyYg
Z2V0Q29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9Ci0gICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4m
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7IH0KICAgICBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50cy5jcHAKaW5kZXggY2QxYzBlMzE5OGE1ZGI1NzBlZGFjZGUzYWEwZmRhZmRj
M2FkNzA2My4uOWYxMDQ4MjE5Njk0MWIwZjUyNDY4NTMxYzQwNGY1NGY2MGE0N2M0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3Ry
YWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHNldChN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBl
LCBjb25zCiAgICAgbWFwLnNldCh0eXBlLCBXVEZNb3ZlKGNvbnN0cmFpbnQpKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSB2b2lkIHNldChNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBjb25zdCBjaGFyKiB0
eXBlQXNTdHJpbmcsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgY29uc3QgT3B0aW9uYWw8VD4m
IHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSB2b2lkIHNldChNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBzZXRUeXBlLCBj
b25zdCBjaGFyKiB0eXBlQXNTdHJpbmcsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXA+IGNvbnZlcnRBZHZhbmNlZFRvSW50ZXJuYWxGb3JtKGNvbnN0IFZlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cD4gY29udmVydEFkdmFuY2VkVG9JbnRlcm5hbEZvcm0oY29uc3QgT3B0aW9uYWw8VmVjdG9yPE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0Pj4mIG9wdGlvbmFsVmVjdG9yKQorc3RhdGljIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gY29udmVydEFkdmFuY2VkVG9JbnRlcm5hbEZvcm0o
Y29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+PiYgb3B0
aW9uYWxWZWN0b3IpCiB7CiAgICAgaWYgKCFvcHRpb25hbFZlY3RvcikKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhVHJhY2tDb25zdHJhaW50cy5oCmluZGV4IDAwNzJhYmEzMzZmZmU5MjQ1Zjk1OWI0ZjIy
ZWUyYmJlZWEzMmRmYzUuLjczMTQyODVlY2YyOWQyMmE1ZGYxMDA0MGNjYzdjYTg2MzYyYWJkNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludHMuaApAQCAtMzcsMjMgKzM3LDIzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogCiBzdHJ1Y3QgQ29uc3RyYWluQm9vbGVh
blBhcmFtZXRlcnMgewotICAgIE9wdGlvbmFsPGJvb2w+IGV4YWN0OwotICAgIE9wdGlvbmFsPGJv
b2w+IGlkZWFsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZXhhY3Q7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBpZGVhbDsKIH07CiAKIHN0cnVjdCBDb25zdHJhaW5ET01TdHJpbmdQYXJhbWV0
ZXJzIHsKLSAgICBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBleGFj
dDsKLSAgICBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBpZGVhbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IGV4YWN0
OworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gaWRl
YWw7CiB9OwogCiBzdHJ1Y3QgQ29uc3RyYWluRG91YmxlUmFuZ2UgOiBEb3VibGVSYW5nZSB7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBleGFjdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGlkZWFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleGFjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gaWRlYWw7CiB9OwogCiBzdHJ1Y3QgQ29uc3RyYWluTG9uZ1JhbmdlIDogTG9uZ1JhbmdlIHsK
LSAgICBPcHRpb25hbDxpbnQ+IGV4YWN0OwotICAgIE9wdGlvbmFsPGludD4gaWRlYWw7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IGV4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZGVhbDsK
IH07CiAKIHVzaW5nIENvbnN0cmFpbkJvb2xlYW4gPSBWYXJpYW50PGJvb2wsIENvbnN0cmFpbkJv
b2xlYW5QYXJhbWV0ZXJzPjsKQEAgLTYyLDIzICs2MiwyMyBAQCB1c2luZyBDb25zdHJhaW5Eb3Vi
bGUgPSBWYXJpYW50PGRvdWJsZSwgQ29uc3RyYWluRG91YmxlUmFuZ2U+OwogdXNpbmcgQ29uc3Ry
YWluTG9uZyA9IFZhcmlhbnQ8aW50LCBDb25zdHJhaW5Mb25nUmFuZ2U+OwogCiBzdHJ1Y3QgTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQgewotICAgIE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHdpZHRo
OwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IGhlaWdodDsKLSAgICBPcHRpb25hbDxDb25z
dHJhaW5Eb3VibGU+IGFzcGVjdFJhdGlvOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkRvdWJsZT4g
ZnJhbWVSYXRlOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkRPTVN0cmluZz4gZmFjaW5nTW9kZTsK
LSAgICBPcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IHZvbHVtZTsKLSAgICBPcHRpb25hbDxDb25z
dHJhaW5Mb25nPiBzYW1wbGVSYXRlOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHNhbXBs
ZVNpemU7Ci0gICAgT3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gZWNob0NhbmNlbGxhdGlvbjsK
LSAgICBPcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+IGRldmljZUlkOwotICAgIE9wdGlvbmFs
PENvbnN0cmFpbkRPTVN0cmluZz4gZ3JvdXBJZDsKLSAgICBPcHRpb25hbDxDb25zdHJhaW5ET01T
dHJpbmc+IGRpc3BsYXlTdXJmYWNlOwotICAgIE9wdGlvbmFsPENvbnN0cmFpbkJvb2xlYW4+IGxv
Z2ljYWxTdXJmYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluTG9uZz4gd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Mb25nPiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25h
bDxDb25zdHJhaW5Eb3VibGU+IGFzcGVjdFJhdGlvOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3Ry
YWluRG91YmxlPiBmcmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJp
bmc+IGZhY2luZ01vZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5Eb3VibGU+IHZvbHVt
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnN0cmFpbkxvbmc+IHNhbXBsZVJhdGU7CisgICAgc3Rk
OjpvcHRpb25hbDxDb25zdHJhaW5Mb25nPiBzYW1wbGVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29uc3RyYWluQm9vbGVhbj4gZWNob0NhbmNlbGxhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bnN0cmFpbkRPTVN0cmluZz4gZGV2aWNlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5E
T01TdHJpbmc+IGdyb3VwSWQ7CisgICAgc3RkOjpvcHRpb25hbDxDb25zdHJhaW5ET01TdHJpbmc+
IGRpc3BsYXlTdXJmYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RyYWluQm9vbGVhbj4gbG9n
aWNhbFN1cmZhY2U7CiB9OwogCiBzdHJ1Y3QgTWVkaWFUcmFja0NvbnN0cmFpbnRzIDogTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQgewotICAgIE9wdGlvbmFsPFZlY3RvcjxNZWRpYVRyYWNrQ29uc3Ry
YWludFNldD4+IGFkdmFuY2VkOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0Pj4gYWR2YW5jZWQ7CiB9OwogCiBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1l
ZGlhQ29uc3RyYWludHMoY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKaW5kZXggNjI2MTQ0NzkxMjhjMTgyZWUzMmM1MTU1OTkyNTU1NDUzYjIwMDU5
NS4uNmRhYjFlZjdiNmVlNmI4NzZmMjhjNGNhMzg3OGVkMDFiNTg0MjRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVOb1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQ
CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNy
ZWF0ZSA9IGNyZWF0ZU5vUGVlckNvbm5lY3Rpb25CYWNrZW5kOwogCi1PcHRpb25hbDxSVENSdHBD
YXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpCitzdGQ6Om9wdGlvbmFsPFJU
Q1J0cENhcGFiaWxpdGllcz4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxp
dGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxSVENSdHBD
YXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxSVENS
dHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2VuZGVyQ2FwYWJpbGl0aWVz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA5
YmQyYmQ5OWMwOWYzNzBkYzFjNTU1ZmY1M2VjOTQ1MTRlOGNlOTliLi4zMzY5NzYzOWUwYmM1MGI2
OWU4OGY4ZmM4N2M4Y2VjYTQ0MDc5NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTgzLDgg
KzgzLDggQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kCiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBjcmVhdGU7CiAKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiByZWNlaXZlckNhcGFiaWxpdGll
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBzZW5kZXJDYXBhYmlsaXRpZXMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYga2luZCk7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiByZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IHNlbmRlckNhcGFiaWxpdGllcyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKIAogICAgIGV4cGxpY2l0IFBlZXJD
b25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYpOwogICAgIHZpcnR1YWwgflBlZXJD
b25uZWN0aW9uQmFja2VuZCgpOwpAQCAtMTY4LDkgKzE2OCw5IEBAIHB1YmxpYzoKICAgICAgICAg
fQogCiAgICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBleHBpcmVz
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXhwaXJlczsKIAotICAgICAgICBPcHRp
b25hbDxSU0E+IHJzYVBhcmFtZXRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UlNBPiByc2FQ
YXJhbWV0ZXJzOwogICAgIH07CiAgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVDZXJ0aWZpY2F0ZShE
b2N1bWVudCYsIGNvbnN0IENlcnRpZmljYXRlSW5mb3JtYXRpb24mLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPFJUQ0NlcnRpZmljYXRlPj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKaW5kZXggMzA3
ZGVlZmVlOGUwNjQxMDRjNmNhZWJiMDI5Yjk4NDYwODdhZGMyZC4uZGQxZTE3YzBkNjMwM2Y1YWI2
OTFlMDdlMTRhYjcxYWNjNGUyODRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJUQ0NvbmZpZ3VyYXRpb24gewotICAgIE9wdGlv
bmFsPFZlY3RvcjxSVENJY2VTZXJ2ZXI+PiBpY2VTZXJ2ZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJUQ0ljZVNlcnZlcj4+IGljZVNlcnZlcnM7CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9s
aWN5IGljZVRyYW5zcG9ydFBvbGljeTsKICAgICBSVENCdW5kbGVQb2xpY3kgYnVuZGxlUG9saWN5
OwogICAgIFJUQ1BNdXhQb2xpY3kgcnRjcE11eFBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAppbmRleCA2MDFkODg5NDI1
NzQ2NTk4YzQzYWNlNzVjYWY1YTQyYzgyMWU5YzIyLi45ZGE3NjU2ODc4NmRhYjI5ZDY4NDVkMzE3
ZThmNGE3MzI1YzczMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC01NywxMSArNTcsMTEgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLCBTdHJpbmcmJiwgUlRDRGF0YUNoYW5uZWxJbml0
JiYsIFJUQ0RhdGFDaGFubmVsU3RhdGUpOwogCiAgICAgYm9vbCBvcmRlcmVkKCkgY29uc3QgeyBy
ZXR1cm4gKm1fb3B0aW9ucy5vcmRlcmVkOyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IG1heFBhY2tldExpZmVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLm1heFBhY2tldExp
ZmVUaW1lOyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcHRpb25zLm1heFJldHJhbnNtaXRzOyB9CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRpbWUoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnMubWF4UGFja2V0TGlmZVRpbWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
IHNob3J0PiBtYXhSZXRyYW5zbWl0cygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5tYXhSZXRy
YW5zbWl0czsgfQogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9u
cy5wcm90b2NvbDsgfQogICAgIGJvb2wgbmVnb3RpYXRlZCgpIGNvbnN0IHsgcmV0dXJuICptX29w
dGlvbnMubmVnb3RpYXRlZDsgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnMuaWQ7IH07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZCBzaG9ydD4gaWQoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuaWQ7IH07CiAgICAgUlRDUHJp
b3JpdHlUeXBlIHByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnByaW9yaXR5OyB9
OwogICAgIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fb3B0aW9uczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKaW5kZXggMjZmY2IwNzFjMjY3MzIyNGEw
ZGJkOWExMzg5MGVlZjM0ZDFiMjM5Ny4uNTNlMWYyMGQ3N2UxZjYyMzBhN2Y4ZWJmMjI0OWRmMTNh
MDVkMmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENFbmNvZGVkQXVkaW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFJlZjxSVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWU+JiYpOwogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9t
ZXRhZGF0YTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKaW5kZXggMzk4
ZDJmNmViZGJlYmIwYTQ0NTM3NjliMTZjZDg3M2U3NDI4NzZkNi4uYzY4MjBlYjE0NzkzZDhhNGQ3
NGMwZDkyNDk0ZDNmOWFmMDlmZmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOwogCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxNZXRhZGF0YT4gbV9tZXRhZGF0YTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8TWV0YWRhdGE+IG1fbWV0YWRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5jcHAKaW5kZXggN2MwNTkxMzRjMDdmNjkzMzk5ZGY0OGE0NDgwZTg5YjA4NTE1NzQzYi4u
OGQ5NWI4MTI4YTUwODZkNzM2ODhmZjkyM2QwY2FiNDJmYWY3MDYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChSVENJY2VDYW5kaWRhdGUpOwogCi1SVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNh
bmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4LCBGaWVsZHMmJiBmaWVsZHMpCitS
VENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwg
Y29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1M
aW5lSW5kZXgsIEZpZWxkcyYmIGZpZWxkcykKICAgICA6IG1fY2FuZGlkYXRlKGNhbmRpZGF0ZSkK
ICAgICAsIG1fc2RwTWlkKHNkcE1pZCkKICAgICAsIG1fc2RwTUxpbmVJbmRleChzZHBNTGluZUlu
ZGV4KQpAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4g
UlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRlSQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShkaWN0aW9uYXJ5LmNhbmRpZGF0ZSwgZGlj
dGlvbmFyeS5zZHBNaWQsIGRpY3Rpb25hcnkuc2RwTUxpbmVJbmRleCwgV1RGTW92ZShmaWVsZHMp
KSk7CiB9CiAKLVJlZjxSVENJY2VDYW5kaWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5z
aWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCitSZWY8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VD
YW5kaWRhdGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBz
ZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCiB7CiAg
ICAgYXV0byBmaWVsZHMgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1pZCwgc2Rw
TUxpbmVJbmRleCwgV1RGTW92ZSgqZmllbGRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgKaW5kZXggNmQzYTdlMjY4YWM3
N2I0MjVmM2M4ZjQzNzdmZTJmOWZjODRiMGVlMS4uM2VmZjNmZTYxYjRmOTZmMWM4ZTYyYjE1MmNj
NWU5NTE1ZjBkNmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCkBAIC00Nyw1MCArNDcsNTAgQEAgY2xhc3MgUlRDSWNl
Q2FuZGlkYXRlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwgcHVi
bGljIFNjcmlwdFcKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ0ljZUNhbmRpZGF0ZSk7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBj
cmVhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRlSW5pdCYpOwotICAgIHN0YXRpYyBSZWY8UlRDSWNl
Q2FuZGlkYXRlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYg
c2RwTWlkLCBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CisgICAgc3Rh
dGljIFJlZjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwg
Y29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1M
aW5lSW5kZXgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUoKSBjb25zdCB7IHJldHVy
biBtX2NhbmRpZGF0ZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2RwTWlkKCkgY29uc3QgeyByZXR1
cm4gbV9zZHBNaWQ7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwTUxpbmVJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NkcE1MaW5l
SW5kZXg7IH0KIAogICAgIHN0cnVjdCBGaWVsZHMgewogICAgICAgICBTdHJpbmcgZm91bmRhdGlv
bjsKLSAgICAgICAgT3B0aW9uYWw8UlRDSWNlQ29tcG9uZW50PiBjb21wb25lbnQ7Ci0gICAgICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSVENJ
Y2VDb21wb25lbnQ+IGNvbXBvbmVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
cHJpb3JpdHk7CiAgICAgICAgIFN0cmluZyBhZGRyZXNzOwotICAgICAgICBPcHRpb25hbDxSVENJ
Y2VQcm90b2NvbD4gcHJvdG9jb2w7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBw
b3J0OwotICAgICAgICBPcHRpb25hbDxSVENJY2VDYW5kaWRhdGVUeXBlPiB0eXBlOwotICAgICAg
ICBPcHRpb25hbDxSVENJY2VUY3BDYW5kaWRhdGVUeXBlPiB0Y3BUeXBlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiBwcm90b2NvbDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZCBzaG9ydD4gcG9ydDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSVENJY2VDYW5k
aWRhdGVUeXBlPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0
ZVR5cGU+IHRjcFR5cGU7CiAgICAgICAgIFN0cmluZyByZWxhdGVkQWRkcmVzczsKLSAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHJlbGF0ZWRQb3J0OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkIHNob3J0PiByZWxhdGVkUG9ydDsKICAgICAgICAgU3RyaW5nIHVzZXJuYW1l
RnJhZ21lbnQ7CiAgICAgfTsKIAogICAgIFN0cmluZyBmb3VuZGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9maWVsZHMuZm91bmRhdGlvbjsgfQotICAgIE9wdGlvbmFsPFJUQ0ljZUNvbXBvbmVudD4g
Y29tcG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuY29tcG9uZW50OyB9Ci0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IHByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucHJpb3Jp
dHk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNvbXBvbmVudD4gY29tcG9uZW50KCkgY29u
c3QgeyByZXR1cm4gbV9maWVsZHMuY29tcG9uZW50OyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy5wcmlvcml0eTsgfQogICAg
IFN0cmluZyBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMuYWRkcmVzczsgfQotICAg
IE9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmll
bGRzLnByb3RvY29sOyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHBvcnQoKSBjb25z
dCB7IHJldHVybiBtX2ZpZWxkcy5wb3J0OyB9Ci0gICAgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRl
VHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmllbGRzLnR5cGU7IH0KLSAgICBPcHRpb25h
bDxSVENJY2VUY3BDYW5kaWRhdGVUeXBlPiB0Y3BUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9maWVs
ZHMudGNwVHlwZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNlUHJvdG9jb2w+IHByb3RvY29s
KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucHJvdG9jb2w7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkIHNob3J0PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucG9ydDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmllbGRzLnR5cGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0
ZVR5cGU+IHRjcFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpZWxkcy50Y3BUeXBlOyB9CiAgICAg
U3RyaW5nIHJlbGF0ZWRBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRlZEFk
ZHJlc3M7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcmVsYXRlZFBvcnQoKSBjb25z
dCB7IHJldHVybiBtX2ZpZWxkcy5yZWxhdGVkUG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQgc2hvcnQ+IHJlbGF0ZWRQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maWVsZHMucmVsYXRl
ZFBvcnQ7IH0KICAgICBTdHJpbmcgdXNlcm5hbWVGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQ7IH0KIAogICAgIFJUQ0ljZUNhbmRpZGF0ZUluaXQgdG9K
U09OKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUlRDSWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmlu
ZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hv
cnQ+IHNkcE1MaW5lSW5kZXgsIEZpZWxkcyYmKTsKKyAgICBSVENJY2VDYW5kaWRhdGUoY29uc3Qg
U3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4LCBGaWVsZHMmJik7CiAKICAgICBTdHJpbmcgbV9j
YW5kaWRhdGU7CiAgICAgU3RyaW5nIG1fc2RwTWlkOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNo
b3J0PiBtX3NkcE1MaW5lSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4g
bV9zZHBNTGluZUluZGV4OwogICAgIEZpZWxkcyBtX2ZpZWxkczsKIH07CiAKLU9wdGlvbmFsPFJU
Q0ljZUNhbmRpZGF0ZTo6RmllbGRzPiBwYXJzZUljZUNhbmRpZGF0ZVNEUChjb25zdCBTdHJpbmcm
KTsKK3N0ZDo6b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlOjpGaWVsZHM+IHBhcnNlSWNlQ2FuZGlk
YXRlU0RQKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRl
SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGVJbml0LmgKaW5kZXggNTYwMzlkNmRkYjEzMWY2YzQ4MzA3MDFmOGEzMzFjNGQ3YTAyMzgzNy4u
NTE4NmFmYmVhNGYxZWUxMmUwZWNlMGUzNTc2NGU0ZThhZmY2NWJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJUQ0ljZUNh
bmRpZGF0ZUluaXQgewogICAgIFN0cmluZyBjYW5kaWRhdGU7CiAgICAgU3RyaW5nIHNkcE1pZDsK
LSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4OwogICAgIFN0cmluZyB1c2VybmFt
ZUZyYWdtZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiZTU3YmQ5ZGZjYjI4MzI4ZGQw
Nzc0ODRhYjJhMzkwZGYzMTYyZGMxLi40NjBjYWRhOWI2ZjYyZDc4MTljZjdjZTc5NGJkZDVmMGQw
MzA1OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYgb3B0aW9ucywgUmVm
PERlZmVycmVkUHJvCiAgICAgfSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNldExv
Y2FsRGVzY3JpcHRpb24oT3B0aW9uYWw8RGVzY3JpcHRpb24+JiYgbG9jYWxEZXNjcmlwdGlvbiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
c2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om9wdGlvbmFsPERlc2NyaXB0aW9uPiYmIGxvY2FsRGVz
Y3JpcHRpb24sIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXND
bG9zZWQoKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwpA
QCAtMjk4LDcgKzI5OCw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IFJUQ1BlZXJD
b25uZWN0aW9uOjpwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zCiAKIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmFkZEljZUNhbmRpZGF0ZShDYW5kaWRhdGUmJiBydGNDYW5kaWRhdGUsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBPcHRpb25hbDxFeGNlcHRpb24+
IGV4Y2VwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAg
IFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+IGNhbmRpZGF0ZTsKICAgICBpZiAocnRjQ2FuZGlkYXRl
KSB7CiAgICAgICAgIGNhbmRpZGF0ZSA9IHN3aXRjaE9uKCpydGNDYW5kaWRhdGUsIFsmZXhjZXB0
aW9uXShSVENJY2VDYW5kaWRhdGVJbml0JiBpbml0KSAtPiBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRl
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKaW5kZXggNmU1OGQ2ODA5NDA4OTQ5NGIxMDQ2ODI3MzEwYzRkMGNkNGIy
YjM2NS4uM2VjOGQ3NGYzNTA3MmIwMmY0Mzk1ODJhMjE5NGU0ZThlMWZhNjE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaApAQCAtOTQsOSArOTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAg
ICAgICBTdHJpbmcgaGFzaDsKICAgICAgICAgU3RyaW5nIG5hbWVkQ3VydmU7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBtb2R1bHVzTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBtb2R1bHVzTGVuZ3RoOwogICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gcHVibGlj
RXhwb25lbnQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZXhwaXJlczsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGV4cGlyZXM7CiAgICAgfTsKIAogICAgIHVzaW5nIEFsZ29yaXRo
bUlkZW50aWZpZXIgPSBWYXJpYW50PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+LCBTdHJpbmc+
OwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFuc3dlcihSVENB
bnN3ZXJPcHRpb25zJiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdXNpbmcgRGVz
Y3JpcHRpb24gPSBWYXJpYW50PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQsIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+PjsKLSAgICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oT3B0aW9u
YWw8RGVzY3JpcHRpb24+JiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgc2V0
TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om9wdGlvbmFsPERlc2NyaXB0aW9uPiYmLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBsb2NhbERl
c2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3Vy
cmVudExvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OwpAQCAtMTE3LDcgKzExNyw3
IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9u
PiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdDsKIAotICAgIHVzaW5nIENhbmRpZGF0
ZSA9IE9wdGlvbmFsPFZhcmlhbnQ8UlRDSWNlQ2FuZGlkYXRlSW5pdCwgUmVmUHRyPFJUQ0ljZUNh
bmRpZGF0ZT4+PjsKKyAgICB1c2luZyBDYW5kaWRhdGUgPSBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8
UlRDSWNlQ2FuZGlkYXRlSW5pdCwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4+PjsKICAgICB2b2lk
IGFkZEljZUNhbmRpZGF0ZShDYW5kaWRhdGUmJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
ICAgICBSVENTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2lnbmFsaW5nU3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50LmNw
cAppbmRleCAzZGNjYjdjYWIxNzM1Yjg2NzRiMWM5YmJlNzE3OGNlZTliNTllNWNjLi5lNjY2Njhk
MDFhZDg5MTc1YjZiZDNhZTc1MDVmYzIwZDgwYTI3ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkljZUVycm9yRXZlbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJy
b3JFdmVudCk7CiAKLVJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IFJUQ1BlZXJD
b25uZWN0aW9uSWNlRXJyb3JFdmVudDo6Y3JlYXRlKENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2Fu
Y2VsYWJsZSBpc0NhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYgZXJyb3JU
ZXh0KQorUmVmPFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudD4gUlRDUGVlckNvbm5lY3Rp
b25JY2VFcnJvckV2ZW50OjpjcmVhdGUoQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
IGlzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRkcmVzcywgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
cG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50MTZfdCBlcnJvckNvZGUsIFN0cmluZyYmIGVycm9yVGV4
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9y
RXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRpZGF0ZWVycm9yRXZlbnQsIGNhbkJ1YmJsZSwgaXND
YW5jZWxhYmxlLCBXVEZNb3ZlKGFkZHJlc3MpLCBwb3J0LCBXVEZNb3ZlKHVybCksIGVycm9yQ29k
ZSwgV1RGTW92ZShlcnJvclRleHQpKSk7CiB9CkBAIC00Niw3ICs0Niw3IEBAIFJlZjxSVENQZWVy
Q29ubmVjdGlvbkljZUVycm9yRXZlbnQ+IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudDo6
Y3JlYXRlKGNvbnN0CiAgICAgICAgIGluaXQuY2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVz
IDogSXNDYW5jZWxhYmxlOjpObywgV1RGTW92ZShpbml0LmFkZHJlc3MpLCBpbml0LnBvcnQsIFdU
Rk1vdmUoaW5pdC51cmwpLCBXVEZNb3ZlKGluaXQuZXJyb3JDb2RlKSwgV1RGTW92ZShpbml0LmVy
cm9yVGV4dCkpKTsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQZWVy
Q29ubmVjdGlvbkljZUVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxl
IGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIE9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwg
U3RyaW5nJiYgZXJyb3JUZXh0KQorUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50OjpSVENQ
ZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3Ms
IHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIFN0cmluZyYmIHVybCwgdWludDE2X3QgZXJy
b3JDb2RlLCBTdHJpbmcmJiBlcnJvclRleHQpCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUpCiAgICAgLCBtX2FkZHJlc3MoV1RGTW92ZShhZGRyZXNzKSkKICAgICAsIG1f
cG9ydChwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50LmgKaW5kZXggNDIy
MTNkZDljYWRkMjFhODc3N2U1MDdmOTZkN2VkMDcyNzhkZTQxMy4uMGE1ODZiYjQ5Njk1YjFkMjRh
NzUwMDE0NjY5NjRmNGQ4NTNkODZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JF
dmVudC5oCkBAIC00MSwxNyArNDEsMTcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEluaXQgOiBF
dmVudEluaXQgewogICAgICAgICBTdHJpbmcgYWRkcmVzczsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAgICAg
ICAgIFN0cmluZyB1cmw7CiAgICAgICAgIHVpbnQxNl90IGVycm9yQ29kZSB7IDAgfTsKICAgICAg
ICAgU3RyaW5nIGVycm9yVGV4dDsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxSVENQZWVyQ29u
bmVjdGlvbkljZUVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0
JiYpOwotICAgIHN0YXRpYyBSZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2ZW50PiBjcmVh
dGUoQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFN0cmluZyYmIGFkZHJlc3MsIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29kZSwgU3RyaW5nJiYg
ZXJyb3JUZXh0KTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVu
dD4gY3JlYXRlKENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBTdHJpbmcmJiBhZGRyZXNzLCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBTdHJpbmcmJiB1cmwsIHVpbnQxNl90IGVycm9yQ29k
ZSwgU3RyaW5nJiYgZXJyb3JUZXh0KTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fYWRkcmVzczsgfQotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9wb3J0OyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICB1aW50MTZfdCBlcnJvckNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yQ29kZTsgfQogICAgIGNvbnN0IFN0cmluZyYgZXJyb3JUZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvclRleHQ7IH0KQEAgLTU5LDEwICs1OSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRkcmVzcywgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQsIFN0cmluZyYmIHVybCwgdWludDE2X3QgZXJyb3JDb2RlLCBTdHJpbmcm
JiBlcnJvclRleHQpOworICAgIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgU3RyaW5nJiYgYWRkcmVz
cywgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgU3RyaW5nJiYgdXJsLCB1aW50MTZfdCBl
cnJvckNvZGUsIFN0cmluZyYmIGVycm9yVGV4dCk7CiAKICAgICBTdHJpbmcgbV9hZGRyZXNzOwot
ICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gbV9wb3J0OwogICAgIFN0cmluZyBtX3VybDsKICAgICB1aW50MTZfdCBtX2Vycm9yQ29kZSB7
IDAgfTsKICAgICBTdHJpbmcgbV9lcnJvclRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0Y3BQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0Y3BQYXJhbWV0ZXJzLmgKaW5kZXggNjVlODJjYzM0
ZGFhMTUyNWJkNDg5MDlhZmY1Mjc1ZTAxZDlkMjY2NC4uN2U4YzFkMTI5NzY1NTJlOTFmZDE2MWU1
NWQyNzFjYjcwZTVlNzUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdGNwUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRjcFBhcmFtZXRlcnMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBSVENSdGNwUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGNu
YW1lOwotICAgIE9wdGlvbmFsPGJvb2w+IHJlZHVjZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gcmVkdWNlZFNpemU7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwQ29udHJpYnV0aW5nU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cENvbnRyaWJ1dGluZ1NvdXJjZS5oCmluZGV4
IDQwNjY5MjNiNjkyNzJjZWY3OWQ1MWRkOTIyZjAyOTQwMWQyNDA2YjguLmFjNzNiYWI5NmExMDU2
ZmE3NjgzMDdiYjQwMWU0MGM2MzczZjkwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwQ29udHJpYnV0aW5nU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBDb250cmlidXRpbmdTb3VyY2UuaApA
QCAtMzMsNyArMzMsNyBAQCBzdHJ1Y3QgUlRDUnRwQ29udHJpYnV0aW5nU291cmNlIHsKICAgICBk
b3VibGUgdGltZXN0YW1wOwogICAgIHVuc2lnbmVkIGxvbmcgcnRwVGltZXN0YW1wOwogICAgIHVu
c2lnbmVkIGxvbmcgc291cmNlOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKIH07CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwRW5jb2RpbmdQ
YXJhbWV0ZXJzLmgKaW5kZXggZjhjOTA5ZGRiYWU3M2FmNzlkMjgwNzdlNWI3ZjU0NDNkMWE2MDhk
Yi4uNTc0ZTAzNTJhMjEyNTg2ZDY1M2U5OTcwZjVkMWNlMjMwOTNiNDJjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBFbmNvZGluZ1BhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cEVuY29k
aW5nUGFyYW1ldGVycy5oCkBAIC0zOSwxMCArMzksMTAgQEAgc3RydWN0IFJUQ1J0cEVuY29kaW5n
UGFyYW1ldGVycyA6IFJUQ1J0cENvZGluZ1BhcmFtZXRlcnMgewogICAgIHVuc2lnbmVkIGxvbmcg
c3NyYyB7IDAgfTsKICAgICBSVENSdHBSdHhQYXJhbWV0ZXJzIHJ0eDsKICAgICBSVENSdHBGZWNQ
YXJhbWV0ZXJzIGZlYzsKLSAgICBPcHRpb25hbDxSVENEdHhTdGF0dXM+IGR0eDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJUQ0R0eFN0YXR1cz4gZHR4OwogICAgIGJvb2wgYWN0aXZlIHsgZmFsc2V9Owog
ICAgIFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5VHlwZTo6TG93IH07Ci0g
ICAgT3B0aW9uYWw8UlRDUHJpb3JpdHlUeXBlPiBuZXR3b3JrUHJpb3JpdHk7CisgICAgc3RkOjpv
cHRpb25hbDxSVENQcmlvcml0eVR5cGU+IG5ldHdvcmtQcmlvcml0eTsKICAgICB1bnNpZ25lZCBs
b25nIG1heEJpdHJhdGUgeyAwIH07CiAgICAgdW5zaWduZWQgbG9uZyBtYXhGcmFtZXJhdGUgeyAw
IH07CiAgICAgZG91YmxlIHNjYWxlUmVzb2x1dGlvbkRvd25CeSB7IDEgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5k
ZXggOWEwMzg1ZDNiNDUzOWM0MDUwZjc2ZTkwOGY5NjgzYWRlMjViNTNkYy4uZDVjNTRjMGM0OTlm
YmEzYTE4YTNiMzUyNjZlYzk5ZDhmYmI4MjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBSVENSdHBSZWNlaXZlcjo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIG1fY29ubmVjdGlvbi0+Z2V0U3RhdHMoKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpn
ZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBraW5kKQorc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2Vp
dmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBraW5kKQogewogICAgIHJldHVybiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJl
Y2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQpOwogfQpAQCAtMTE1LDcgKzExNSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oc3RkOjp1bmlx
dWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4mCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8
UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSgpCitz
dGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IFJUQ1J0cFJlY2VpdmVyOjp0
cmFuc2Zvcm0oKQogewogICAgIGlmICghbV90cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyLmgKaW5kZXggYjlkOTk2OTFkNjM4YWQ4YjVhMWRkNzE3YWI0MTQ1ODBhNDI5NWQwMC4uZDgz
ODdlZjQzOGJhZGJhZjg4OGIwOGVjZjNlZDI0N2I0OGIxZGYwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaApAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5SVENSdHBSZWNlaXZlcigpOwogCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gZ2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIGtpbmQpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gZ2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIGtpbmQpOwogCiAgICAgdm9pZCBzdG9wKCk7CiAKQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2Vu
ZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVy
bmFsPiB0cmFuc2Zvcm0oKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IHRyYW5zZm9ybSgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRo
VHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyV2l0aFRyYW5zZm9ybS5oCmluZGV4IDgxNmNhNzljOWQzYjcwYjI3OTRlYjk2YjgyN2Nm
YTUyOTMzNjkzNzcuLjQwZDI4ZDMzNjQzYjE5MTE3NDA2YTk0NzQxYzNiYzhjNDVkNDJjMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2
ZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBS
VENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRy
YW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5z
Zm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENS
dHBSZWNlaXZlciYgcmVjZWl2ZXIsIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+
JiYgdHJhbnNmb3JtKSB7IHJldHVybiByZWNlaXZlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNm
b3JtOjpmcm9tKFdURk1vdmUodHJhbnNmb3JtKSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiBy
ZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2ZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgc3Rk
OjpvcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1
cm4gcmVjZWl2ZXIuc2V0VHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRy
YW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uY3BwCmluZGV4IDJjNjczZmY0ZWVhZTM2MTU4MTc2MjYxMWRhNmM2MWY3ZTE2NTU0ODAu
LjQwOWYzNTc0Zjc5YWZiNmJjOGZkZjYwZDM1MzU0NzJlZTk0MzcyZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtKCkKIHsKIH0KIAotdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OnNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJ
ZCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYga2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsK
ICAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5hbGdvcml0aG0oKTsKICAgICBpZiAoIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxnb3JpdGhtPihhbGdvcml0aG0pKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaAppbmRleCAzMWUxNDZkZjExZmY4NzJmMjZjYjlmODExOWIyZmU5OWJmMjJjNWY4
Li42Yjc4YmJmNWM2NWQyYzU3ZmVmYmM2OTg0YjA4Mjg4YmNiOGVmZmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
T3B0aW9ucyBvcHRpb25zKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybShjb250ZXh0LCBvcHRpb25zKSk7IH0KICAgICB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7
CiAKLSAgICB2b2lkIHNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5JiwgT3B0aW9uYWw8dWludDY0
X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBzZXRFbmNyeXB0aW9u
S2V5KENyeXB0b0tleSYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CiAKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdDsKICAgICB2b2lkIGlu
aXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAppbmRleCBmNjlmMTg5NThhMTA0MjRmYWRjYTllYTZmZDY2
MzY2NTJhZThkMjYyLi42MDMwMGRlY2QzZTkyNDEyMjQyN2FlY2E5ZTliZTgyOTcwYmY1MzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdCBT
RnJhbWVIZWFkZXJJbmZvIHsKICAgICB1aW50NjRfdCBrZXlJZDsKICAgICB1aW50NjRfdCBjb3Vu
dGVyOwogfTsKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VT
RnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byogc3RhcnQgPSBkYXRh
OwogCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6flJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyKCkKIHsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9rZXlMb2NrIH07CiAgICAgcmV0dXJuIHVwZGF0ZUVuY3J5cHRpb25LZXkocmF3
S2V5LCBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5czo6WWVzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9p
ZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgU2hvdWxkVXBk
YXRlS2V5cyBzaG91bGRVcGRhdGVLZXlzKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
YXdLZXksIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGtleUlkLCBTaG91bGRVcGRhdGVLZXlzIHNo
b3VsZFVwZGF0ZUtleXMpCiB7CiAgICAgQVNTRVJUKG1fa2V5TG9jay5pc0xvY2tlZCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lci5oCmluZGV4IGRjNzQ5ZjQ1NWI4YmI5YzRjNWIxZWM0MTMyMDJj
NzM5N2RjMjU5MzIuLjE5ODg0OTVhYTlkNjRlMDM1MDlhMmUxYzllMzVmNjJiODdkNTdjNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QXV0aGVudGljYXRpb25TaXplKHVpbnQ2NF90KTsKICAgICB2b2lkIHNldE1lZGlhVHlw
ZShSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGUpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd0tleSwgT3B0aW9uYWw8dWludDY0X3Q+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3
S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7
CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbktleTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVLZXlzIHsgTm8s
IFllcyB9OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRl
S2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6OlllcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2Nr
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRl
S2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6OlllcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2Nr
KTsKIAogICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZVNhbHRLZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBj
b21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5k
ZXggZjg5MzI5Mzc3NjQ4NTA0YmM4MjQ5ODZiMzMyODczNzIzNjQwODdmZC4uYTk2ZTRjYTc1YmU2
NzQ5NGJiZTdlOTMwODI5ZWYxNmY1MzBiMGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBA
IGJvb2wgUlRDUnRwU2VuZGVyOjppc0NyZWF0ZWRCeShjb25zdCBSVENQZWVyQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gJmNvbm5lY3Rpb24gPT0gbV9jb25uZWN0aW9u
LmdldCgpOwogfQogCi1PcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFNlbmRlcjo6
Z2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBSVENSdHBTZW5k
ZXI6OmdldENhcGFiaWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2Vu
ZGVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQpOwogfQpAQCAtMjA0LDcgKzIwNCw3IEBAIFJU
Q0RUTUZTZW5kZXIqIFJUQ1J0cFNlbmRlcjo6ZHRtZigpCiAgICAgcmV0dXJuIG1fZHRtZlNlbmRl
ci5nZXQoKTsKIH0KIAotT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IFJUQ1J0
cFNlbmRlcjo6Y3VycmVudFRyYW5zY2VpdmVyRGlyZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5z
Y2VpdmVyRGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENS
dHBTZW5kZXI6OnNldFRyYW5zZm9ybShzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiYm
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gUlRDUnRwU2VuZGVyOjp0cmFuc2Zvcm0oKQorc3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2Zv
cm06OkludGVybmFsPiBSVENSdHBTZW5kZXI6OnRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3Ry
YW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDUyYWJmM2QxOWUzOTZlZWM4NzU2
ODczNzAwZWY1MzhiYTQyMTU5NWIuLmJmMjc3Y2FmNWExYzkxYzkzMDdhY2Y5ODM2YTE2NzZhODA2
MWQ4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENS
dHBTZW5kZXI+IGNyZWF0ZShSVENQZWVyQ29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwg
c3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogICAgIH5SVENSdHBTZW5k
ZXIoKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IGdldENhcGFi
aWxpdGllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IGdldENhcGFiaWxpdGll
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBraW5kKTsKIAogICAgIE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjay5nZXQoKTsgfQogCkBAIC04
Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3JlYXRlZEJ5KGNvbnN0IFJUQ1BlZXJD
b25uZWN0aW9uJikgY29uc3Q7CiAKICAgICBSVENEVE1GU2VuZGVyKiBkdG1mKCk7Ci0gICAgT3B0
aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVj
dGlvbigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKCk7CisgICAgc3RkOjpvcHRpb25h
bDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRUcmFuc2Zvcm0oc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFRyYW5zZm9ybT4mJik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oCmluZGV4IDQ2ZDM3YTc3MzZm
MTZkYzA3OTViOTVkNDA1OGVhYTk0M2ZkYTZiNzcuLmQ0YmUxYjRlNjk4NDA0Mjc4YjhjZThlYjY0
YzVlZTNjNDMzNzY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICsz
Niw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybTsKIAogY2xhc3MgUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6
SW50ZXJuYWw+IHRyYW5zZm9ybShSVENSdHBTZW5kZXImIHNlbmRlcikgeyByZXR1cm4gc2VuZGVy
LnRyYW5zZm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9y
bShSVENSdHBTZW5kZXImIHNlbmRlciwgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHNlbmRlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNm
b3JtOjpmcm9tKFdURk1vdmUodHJhbnNmb3JtKSkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyKSB7IHJldHVybiBzZW5kZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBzdGQ6Om9wdGlvbmFs
PFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIu
c2V0VHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU3luY2hyb25pemF0aW9uU291
cmNlLmgKaW5kZXggNTcyYWU4NTk4NTg3YmEwNWVjYTE4OThiYzQ3MDUwNmNkMGI1MDEzMy4uN2Yz
MzgxNmE3NWZkMWRjMzBjNmY0ODc3ZDk1Njg0MmVhZjA2Y2UzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFN5bmNocm9u
aXphdGlvblNvdXJjZS5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UgOiBSVENSdHBDb250cmlidXRpbmdT
b3VyY2UgewotICAgIE9wdGlvbmFsPGJvb2w+IHZvaWNlQWN0aXZpdHlGbGFnOworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwVHJhbnNjZWl2ZXIuY3BwCmluZGV4IDM2NzZhYjQ1YzJkNjk0ZjVmNjllYmY4MGRmOTll
N2MwNmMyY2JmZDkuLmMyZGZkY2UzNTcyZjNlOTUxMDVlZjIwZWU0ZDFlNzFlM2JkMDBhYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0
aW9uIFJUQ1J0cFRyYW5zY2VpdmVyOjpkaXJlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX2Jh
Y2tlbmQtPmRpcmVjdGlvbigpOwogfQogCi1PcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVj
dGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAorc3RkOjpv
cHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6OmN1
cnJlbnREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9iYWNrZW5kKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oCmluZGV4IDRjMWQ0MDQ4MzUzYjRmNjVhNWVh
ZDJiMTc0MDg2MTcwNTNjMjdjNmEuLmE1MWRiNjIwMWM4NGQ0YTQ2YzllZmQ5NjA5YTRmZjkzNzVj
MjhlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zY2VpdmVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKIAogICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGly
ZWN0aW9uPiBjdXJyZW50RGlyZWN0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlvbigpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKTsKICAgICBTdHJpbmcg
bWlkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oCmluZGV4IDNjNWZiMTVmYzFh
NzY0ZGUyYmUyN2EwMDcwZDk0YzcwNzQyZjNlMzMuLjRiZjUwZmMxZWZmZDhkNzA1ZDY0NDdjMTcy
ZmU5NDBjZTU5MDEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaApAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kKCkgPSBk
ZWZhdWx0OwogCiAgICAgdmlydHVhbCBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbj4gY3VycmVudERpcmVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IGN1cnJlbnREaXJlY3Rpb24oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERpcmVjdGlvbihSVENSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbikgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbWlkKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0u
Y3BwCmluZGV4IDljYWViOTZmY2IyODYyODhlNWZjMWEwZThkZDRlNjhmYTc4NTUwYmUuLmRhZjg5
N2VhNDcyMTg2ZDZjYzdiN2FkNjIyZGZmNjZmYTYxNzc1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8UlRD
UnRwVHJhbnNmb3JtPiBSVENSdHBUcmFuc2Zvcm06OmZyb20oT3B0aW9uYWw8SW50ZXJuYWw+JiYg
aW50ZXJuYWwpCitzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwVHJhbnNmb3JtPiBSVENSdHBUcmFuc2Zv
cm06OmZyb20oc3RkOjpvcHRpb25hbDxJbnRlcm5hbD4mJiBpbnRlcm5hbCkKIHsKICAgICBpZiAo
IWludGVybmFsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oCmluZGV4IDI0ZjJkYjAz
YmE5NzkwMWFhMmYxMDFiOWQxMjk4MzlkN2E1YmUzZGYuLjFhNzk1OGI1MDc4MjJhNDE5ZDk0YTc5
YTM0ZmMwMjE0Njk3ZmZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBSVENS
dHBUcmFuc2Zvcm0gIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB1c2luZyBJbnRlcm5hbCA9IFZhcmlhbnQ8UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4s
IFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PjsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShPcHRpb25hbDxJbnRlcm5hbD4mJik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBUcmFuc2Zvcm0+IGZyb20oc3RkOjpvcHRpb25hbDxJ
bnRlcm5hbD4mJik7CiAKICAgICBleHBsaWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwmJik7
CiAgICAgflJUQ1J0cFRyYW5zZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKaW5kZXgg
MDM5MTM5MzllYmM5MTQ4MmZjYTlhMGM3ZmY0MjVjMDZkMTFlYzc0Ni4uZWMwZDlhMjZiZTQ0NDFj
OGQ2Y2JjMTQ0NTk1MmNjM2ZmMzVkNGM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBA
IC0zNywxMiArMzcsMTIgQEAgc3RydWN0IFJUQ0VuY29kZWRBdWRpb0ZyYW1lTWV0YWRhdGEgewog
fTsKIAogc3RydWN0IFJUQ0VuY29kZWRWaWRlb0ZyYW1lTWV0YWRhdGEgewotICAgIE9wdGlvbmFs
PGludDY0X3Q+IGZyYW1lSWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBmcmFtZUlkOwog
ICAgIFZlY3RvcjxpbnQ2NF90PiBkZXBlbmRlbmNpZXM7CiAgICAgdWludDE2X3Qgd2lkdGg7CiAg
ICAgdWludDE2X3QgaGVpZ2h0OwotICAgIE9wdGlvbmFsPGludDMyX3Q+IHNwYXRpYWxJbmRleDsK
LSAgICBPcHRpb25hbDxpbnQzMl90PiB0ZW1wb3JhbEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gc3BhdGlhbEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gdGVtcG9y
YWxJbmRleDsKICAgICB1aW50MzJfdCBzeW5jaHJvbml6YXRpb25Tb3VyY2U7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgK
aW5kZXggZjMxOWUzZTM5N2JkNmU4OGIwNDYxMWE0ZmNiZTViNGIwNDI0MjljNS4uMTI1NGI5MzY3
NGY3NTRhM2I5MGQ5NDU0ZTZlMzE1ODcxNDQ2OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBvcnQuaApAQCAtNjksMjIgKzY5LDIy
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IFJlY2VpdmVkUnRwU3RyZWFtU3RhdHMg
OiBSdHBTdHJlYW1TdGF0cyB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVj
ZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IHBhY2tldHNMb3N0OwotICAgICAgICBP
cHRpb25hbDxkb3VibGU+IGppdHRlcjsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tl
dHNEaXNjYXJkZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVwYWlyZWQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBidXJzdFBhY2tldHNMb3N0OwotICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gYnVyc3RQYWNrZXRzRGlzY2FyZGVkOwotICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gYnVyc3RMb3NzQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBi
dXJzdERpc2NhcmRDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBidXJzdExvc3NSYXRl
OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGJ1cnN0RGlzY2FyZFJhdGU7Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gZ2FwTG9zc1JhdGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2Fw
RGlzY2FyZFJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOwot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcGFydGlhbEZyYW1lc0xvc3Q7Ci0gICAgICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBmdWxsRnJhbWVzTG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFja2V0c1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhY2tldHNMb3N0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaml0dGVyOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzRGlzY2FyZGVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzUmVwYWlyZWQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGJ1cnN0UGFja2V0c0xvc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGJ1cnN0UGFja2V0c0Rpc2NhcmRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gYnVyc3RMb3NzQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGJ1cnN0RGlzY2FyZENvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYnVyc3RM
b3NzUmF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJ1cnN0RGlzY2FyZFJhdGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBnYXBMb3NzUmF0ZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGdhcERpc2NhcmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBwYXJ0aWFsRnJhbWVzTG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnVs
bEZyYW1lc0xvc3Q7CiAgICAgfTsKIAogICAgIHN0cnVjdCBJbmJvdW5kUnRwU3RyZWFtU3RhdHMg
OiBSZWNlaXZlZFJ0cFN0cmVhbVN0YXRzIHsKQEAgLTkyLDQ0ICs5Miw0NCBAQCBwdWJsaWM6CiAK
ICAgICAgICAgU3RyaW5nIHJlY2VpdmVySWQ7CiAgICAgICAgIFN0cmluZyByZW1vdGVJZDsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc0RlY29kZWQ7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQzMl90PiBrZXlGcmFtZXNEZWNvZGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZnJhbWVXaWR0aDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lSGVpZ2h0OwotICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVCaXREZXB0aDsKLSAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1
bTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbERlY29kZVRpbWU7Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gdG90YWxJbnRlckZyYW1lRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gdG90YWxTcXVhcmVkSW50ZXJGcmFtZURlbGF5OwotICAgICAgICBPcHRpb25hbDxib29s
PiAgdm9pY2VBY3Rpdml0eUZsYWc7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbGFzdFBhY2tl
dFJlY2VpdmVkVGltZXN0YW1wOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF2ZXJhZ2VSdGNw
SW50ZXJ2YWw7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJCeXRlc1JlY2VpdmVk
OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmVjUGFja2V0c1JlY2VpdmVkOwotICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZmVjUGFja2V0c0Rpc2NhcmRlZDsKLSAgICAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWNrZXRzRmFpbGVkRGVjcnlwdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhY2tl
dHNEdXBsaWNhdGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gbmFja0NvdW50OwotICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gZmlyQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBwbGlDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGVzdGltYXRlZFBsYXlvdXRUaW1lc3RhbXA7Ci0gICAgICAg
IE9wdGlvbmFsPGRvdWJsZT4gaml0dGVyQnVmZmVyRGVsYXk7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiB0b3RhbFNhbXBsZXNSZWNlaXZlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNh
bXBsZXNEZWNvZGVkV2l0aFNpbGs7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVz
RGVjb2RlZFdpdGhDZWx0OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uY2VhbGVkU2Ft
cGxlczsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpbGVudENvbmNlYWxlZFNhbXBsZXM7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBjb25jZWFsbWVudEV2ZW50czsKLSAgICAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IGluc2VydGVkU2FtcGxlc0ZvckRlY2VsZXJhdGlvbjsKLSAgICAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlbW92ZWRTYW1wbGVzRm9yQWNjZWxlcmF0aW9uOwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJs
ZT4gdG90YWxBdWRpb0VuZXJneTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBs
ZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEZWNvZGVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBrZXlGcmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBmcmFtZVdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBmcmFtZUhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVC
aXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lc1BlclNlY29uZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXBTdW07CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB0b3RhbERlY29kZVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB0b3RhbEludGVyRnJhbWVEZWxheTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHRvdGFsU3F1YXJlZEludGVyRnJhbWVEZWxheTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiAgdm9pY2VBY3Rpdml0eUZsYWc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsYXN0
UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBh
dmVyYWdlUnRjcEludGVydmFsOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoZWFk
ZXJCeXRlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmZWNQYWNr
ZXRzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZlY1BhY2tldHNE
aXNjYXJkZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhY2tldHNGYWlsZWREZWNyeXB0aW9u
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWNrZXRzRHVwbGljYXRlZDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbmFja0NvdW50OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGxpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGppdHRlckJ1ZmZlckRlbGF5OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsU2FtcGxlc1JlY2VpdmVkOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVzRGVjb2RlZFdpdGhTaWxrOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVzRGVjb2RlZFdpdGhDZWx0OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBzaWxlbnRDb25jZWFsZWRTYW1wbGVzOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25jZWFsbWVudEV2ZW50czsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gaW5zZXJ0ZWRTYW1wbGVzRm9yRGVjZWxlcmF0aW9uOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZW1vdmVkU2FtcGxlc0ZvckFjY2VsZXJhdGlvbjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB0b3RhbEF1ZGlvRW5lcmd5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gdG90YWxTYW1wbGVzRHVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGZyYW1lc1JlY2VpdmVkOwogCiAgICAgICAgIFN0cmluZyB0cmFja0lkOwogICAgIH07CkBA
IC0xMzgsNjAgKzEzOCw2MCBAQCBwdWJsaWM6CiAgICAgICAgIFJlbW90ZUluYm91bmRSdHBTdHJl
YW1TdGF0cygpIHsgdHlwZSA9IFJUQ1N0YXRzUmVwb3J0OjpUeXBlOjpSZW1vdGVJbmJvdW5kUnRw
OyB9CiAKICAgICAgICAgU3RyaW5nIGxvY2FsSWQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
cm91bmRUcmlwVGltZTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbFJvdW5kVHJpcFRp
bWU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhY3Rpb25Mb3N0OwotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gcmVwb3J0c1JlY2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gcm91bmRUcmlwVGltZU1lYXN1cmVtZW50czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHJvdW5kVHJpcFRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFJv
dW5kVHJpcFRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFjdGlvbkxvc3Q7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlcG9ydHNSZWNlaXZlZDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcm91bmRUcmlwVGltZU1lYXN1cmVtZW50czsKICAg
ICB9OwogCiAgICAgc3RydWN0IFNlbnRSdHBTdHJlYW1TdGF0cyA6IFJ0cFN0cmVhbVN0YXRzIHsK
LSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBhY2tldHNTZW50OwotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YWNrZXRzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50Owog
ICAgIH07CiAKICAgICBzdHJ1Y3QgT3V0Ym91bmRSdHBTdHJlYW1TdGF0cyA6IFNlbnRSdHBTdHJl
YW1TdGF0cyB7CiAgICAgICAgIE91dGJvdW5kUnRwU3RyZWFtU3RhdHMoKSB7IHR5cGUgPSBSVENT
dGF0c1JlcG9ydDo6VHlwZTo6T3V0Ym91bmRSdHA7IH0KIAotICAgICAgICBPcHRpb25hbDx1aW50
MzJfdD4gcnR4U3NyYzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcnR4U3NyYzsK
ICAgICAgICAgU3RyaW5nIG1lZGlhU291cmNlSWQ7CiAgICAgICAgIFN0cmluZyBzZW5kZXJJZDsK
ICAgICAgICAgU3RyaW5nIHJlbW90ZUlkOwogICAgICAgICBTdHJpbmcgcmlkOwotICAgICAgICBP
cHRpb25hbDxkb3VibGU+IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wOwotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
cGFja2V0c0Rpc2NhcmRlZE9uU2VuZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVz
RGlzY2FyZGVkT25TZW5kOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZmVjUGFja2V0c1Nl
bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWl0dGVkUGFja2V0c1NlbnQ7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IHRhcmdldEJpdHJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiB0b3RhbEVuY29kZWRCeXRlc1RhcmdldDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGZyYW1lV2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsK
LSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lQml0RGVwdGg7Ci0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gZnJhbWVzUGVyU2Vjb25kOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4g
ZnJhbWVzU2VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGh1Z2VGcmFtZXNTZW50Owot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzRW5jb2RlZDsKLSAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGtleUZyYW1lc0VuY29kZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBmcmFtZXNEaXNjYXJkZWRPblNlbmQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBxcFN1
bTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBzYW1wbGVzRW5jb2RlZFdpdGhTaWxrOwotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gc2FtcGxlc0VuY29kZWRXaXRoQ2VsdDsKLSAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gdm9pY2VBY3Rpdml0eUZsYWc7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxF
bmNvZGVUaW1lOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHRvdGFsUGFja2V0U2VuZERlbGF5
OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Ci0gICAgICAg
IC8vIE9wdGlvbmFsPFJUQ1F1YWxpdHlMaW1pdGF0aW9uUmVhc29uIHF1YWxpdHlMaW1pdGF0aW9u
UmVhc29uOwotICAgICAgICAvLyBPcHRpb25hbDxyZWNvcmQ8RE9NU3RyaW5nLCBkb3VibGU+IHF1
YWxpdHlMaW1pdGF0aW9uRHVyYXRpb25zOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gcXVh
bGl0eUxpbWl0YXRpb25SZXNvbHV0aW9uQ2hhbmdlczsKLSAgICAgICAgLy8gT3B0aW9uYWw8cmVj
b3JkPFVTVlN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nPiBwZXJEc2NwUGFja2V0c1NlbnQ7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBuYWNrQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBmaXJDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHBsaUNvdW50Owot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gc2xpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gaGVhZGVyQnl0ZXNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwYWNrZXRzRGlzY2FyZGVkT25TZW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBieXRlc0Rpc2NhcmRlZE9uU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gZmVjUGFja2V0c1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJldHJh
bnNtaXR0ZWRQYWNrZXRzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmV0
cmFuc21pdHRlZEJ5dGVzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRhcmdl
dEJpdHJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsRW5jb2RlZEJ5
dGVzVGFyZ2V0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZVdpZHRoOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZUhlaWdodDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gZnJhbWVCaXREZXB0aDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gZnJhbWVzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaHVnZUZyYW1l
c1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc0VuY29kZWQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGtleUZyYW1lc0VuY29kZWQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc0Rpc2NhcmRlZE9uU2VuZDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXBTdW07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHRvdGFsU2FtcGxlc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHNhbXBsZXNFbmNvZGVkV2l0aFNpbGs7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHNhbXBsZXNFbmNvZGVkV2l0aENlbHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdm9p
Y2VBY3Rpdml0eUZsYWc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEVuY29k
ZVRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFBhY2tldFNlbmREZWxh
eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGF2ZXJhZ2VSdGNwSW50ZXJ2YWw7Cisg
ICAgICAgIC8vIHN0ZDo6b3B0aW9uYWw8UlRDUXVhbGl0eUxpbWl0YXRpb25SZWFzb24gcXVhbGl0
eUxpbWl0YXRpb25SZWFzb247CisgICAgICAgIC8vIHN0ZDo6b3B0aW9uYWw8cmVjb3JkPERPTVN0
cmluZywgZG91YmxlPiBxdWFsaXR5TGltaXRhdGlvbkR1cmF0aW9uczsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gcXVhbGl0eUxpbWl0YXRpb25SZXNvbHV0aW9uQ2hhbmdlczsKKyAg
ICAgICAgLy8gc3RkOjpvcHRpb25hbDxyZWNvcmQ8VVNWU3RyaW5nLCB1bnNpZ25lZCBsb25nIGxv
bmc+IHBlckRzY3BQYWNrZXRzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
bmFja0NvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmaXJDb3VudDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGxpQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHNsaUNvdW50OwogICAgICAgICAvLyBET01TdHJpbmcgZW5jb2Rlcklt
cGxlbWVudGF0aW9uOwogCiAgICAgICAgIFN0cmluZyB0cmFja0lkOwpAQCAtMjAxLDMxICsyMDEs
MzEgQEAgcHVibGljOgogICAgICAgICBNZWRpYVN0cmVhbVRyYWNrU3RhdHMoKSB7IHR5cGUgPSBS
VENTdGF0c1JlcG9ydDo6VHlwZTo6VHJhY2s7IH0KIAogICAgICAgICBTdHJpbmcgdHJhY2tJZGVu
dGlmaWVyOwotICAgICAgICBPcHRpb25hbDxib29sPiByZW1vdGVTb3VyY2U7Ci0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGVuZGVkOwotICAgICAgICBPcHRpb25hbDxib29sPiBkZXRhY2hlZDsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lV2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBmcmFtZUhlaWdodDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJT
ZWNvbmQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNTZW50OwotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gZnJhbWVzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBmcmFtZXNEZWNvZGVkOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnJhbWVzRHJv
cHBlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc0NvcnJ1cHRlZDsKLSAgICAg
ICAgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnRpYWxGcmFtZXNMb3N0OwotICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gZnVsbEZyYW1lc0xvc3Q7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gYXVk
aW9MZXZlbDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKLSAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zc0VuaGFuY2VtZW50OwotCi0gICAgICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBmcmVlemVDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IHBhdXNlQ291bnQ7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmVlemVzRHVy
YXRpb247Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxQYXVzZXNEdXJhdGlvbjsKLSAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyYW1lc0R1cmF0aW9uOwotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IHN1bU9mU3F1YXJlZEZyYW1lc0R1cmF0aW9uOwotCi0gICAgICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBqaXR0ZXJCdWZmZXJGbHVzaGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJlbW90ZVNvdXJjZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmRlZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBkZXRhY2hlZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gZnJhbWVXaWR0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gZnJhbWVIZWlnaHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJT
ZWNvbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc1NlbnQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZyYW1lc1JlY2VpdmVkOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBmcmFtZXNEZWNvZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBmcmFtZXNEcm9wcGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBmcmFtZXNDb3JydXB0ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnRp
YWxGcmFtZXNMb3N0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBmdWxsRnJhbWVz
TG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGVjaG9SZXR1cm5Mb3NzRW5oYW5jZW1lbnQ7CisKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gZnJlZXplQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IHBhdXNlQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZy
ZWV6ZXNEdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUGF1c2Vz
RHVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyYW1lc0R1cmF0
aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3VtT2ZTcXVhcmVkRnJhbWVzRHVy
YXRpb247CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaml0dGVyQnVmZmVyRmx1
c2hlczsKICAgICB9OwogCiAgICAgc3RydWN0IERhdGFDaGFubmVsU3RhdHMgOiBTdGF0cyB7CkBA
IC0yMzMsMTIgKzIzMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGFi
ZWw7CiAgICAgICAgIFN0cmluZyBwcm90b2NvbDsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBkYXRh
Y2hhbm5lbGlkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZGF0YWNoYW5uZWxpZDsKICAg
ICAgICAgU3RyaW5nIHN0YXRlOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWVzc2FnZXNT
ZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OwotICAgICAgICBPcHRp
b25hbDx1aW50MzJfdD4gbWVzc2FnZXNSZWNlaXZlZDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1lc3Nh
Z2VzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtZXNzYWdlc1JlY2VpdmVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBieXRlc1JlY2VpdmVkOwogICAgIH07CiAKICAgICBlbnVt
IGNsYXNzIEljZUNhbmRpZGF0ZVBhaXJTdGF0ZSB7CkBAIC0yNTcsMzUgKzI1NywzNSBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cmluZyBsb2NhbENhbmRpZGF0ZUlkOwogICAgICAgICBTdHJpbmcgcmVt
b3RlQ2FuZGlkYXRlSWQ7CiAgICAgICAgIEljZUNhbmRpZGF0ZVBhaXJTdGF0ZSBzdGF0ZTsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHByaW9yaXR5OwotICAgICAgICBPcHRpb25hbDxib29s
PiBub21pbmF0ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlOwotICAgICAgICBP
cHRpb25hbDxib29sPiByZWFkYWJsZTsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVz
U2VudDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7Ci0gICAgICAg
IE9wdGlvbmFsPGRvdWJsZT4gdG90YWxSb3VuZFRyaXBUaW1lOwotICAgICAgICBPcHRpb25hbDxk
b3VibGU+IGN1cnJlbnRSb3VuZFRyaXBUaW1lOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF2
YWlsYWJsZU91dGdvaW5nQml0cmF0ZTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhdmFpbGFi
bGVJbmNvbWluZ0JpdHJhdGU7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXF1ZXN0c1Jl
Y2VpdmVkOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVxdWVzdHNTZW50OwotICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcmVzcG9uc2VzUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiByZXNwb25zZXNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gcmV0
cmFuc21pc3Npb25zUmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXRyYW5z
bWlzc2lvbnNTZW50OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlcXVlc3Rz
UmVjZWl2ZWQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBjb25zZW50UmVxdWVzdHNTZW50
OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlc3BvbnNlc1JlY2VpdmVkOwot
ICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29uc2VudFJlc3BvbnNlc1NlbnQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHByaW9yaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IG5vbWluYXRlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiByZWFkYWJsZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gYnl0ZXNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBieXRlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxSb3Vu
ZFRyaXBUaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFJvdW5kVHJp
cFRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVPdXRnb2luZ0Jp
dHJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhdmFpbGFibGVJbmNvbWluZ0Jp
dHJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlcXVlc3RzUmVjZWl2ZWQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlcXVlc3RzU2VudDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVzcG9uc2VzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlc1NlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHJldHJhbnNtaXNzaW9uc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiByZXRyYW5zbWlzc2lvbnNTZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBjb25zZW50UmVxdWVzdHNSZWNlaXZlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gY29uc2VudFJlcXVlc3RzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gY29uc2VudFJlc3BvbnNlc1JlY2VpdmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBjb25zZW50UmVzcG9uc2VzU2VudDsKICAgICB9OwogCiAgICAgc3RydWN0IEljZUNh
bmRpZGF0ZVN0YXRzIDogU3RhdHMgewogICAgICAgICBTdHJpbmcgdHJhbnNwb3J0SWQ7CiAgICAg
ICAgIFN0cmluZyBhZGRyZXNzOwotICAgICAgICBPcHRpb25hbDxpbnQzMl90PiBwb3J0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IHBvcnQ7CiAgICAgICAgIFN0cmluZyBwcm90b2Nv
bDsKLSAgICAgICAgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gY2FuZGlkYXRlVHlwZTsK
LSAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4gcHJpb3JpdHk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gY2FuZGlkYXRlVHlwZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxpbnQzMl90PiBwcmlvcml0eTsKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9v
bCBkZWxldGVkIHsgZmFsc2UgfTsKICAgICB9OwpAQCAtMzA3LDEyICszMDcsMTIgQEAgcHVibGlj
OgogICAgIHN0cnVjdCBDb2RlY1N0YXRzIDogU3RhdHMgewogICAgICAgICBDb2RlY1N0YXRzKCkg
eyB0eXBlID0gUlRDU3RhdHNSZXBvcnQ6OlR5cGU6OkNvZGVjOyB9CiAKLSAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IHBheWxvYWRUeXBlOwotICAgICAgICBPcHRpb25hbDxDb2RlY1R5cGU+IGNv
ZGVjVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGF5bG9hZFR5cGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29kZWNUeXBlPiBjb2RlY1R5cGU7CiAgICAgICAgIFN0cmlu
ZyB0cmFuc3BvcnRJZDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gY2xvY2tSYXRlOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gY2hhbm5l
bHM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNsb2NrUmF0ZTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY2hhbm5lbHM7CiAgICAgICAgIFN0cmluZyBzZHBGbXRw
TGluZTsKICAgICAgICAgU3RyaW5nIGltcGxlbWVudGF0aW9uOwogICAgIH07CkBAIC0zMjAsOCAr
MzIwLDggQEAgcHVibGljOgogICAgIHN0cnVjdCBUcmFuc3BvcnRTdGF0cyA6IFN0YXRzIHsKICAg
ICAgICAgVHJhbnNwb3J0U3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6VHJh
bnNwb3J0OyB9CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKLSAgICAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IGJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGJ5dGVzU2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
Ynl0ZXNSZWNlaXZlZDsKICAgICAgICAgU3RyaW5nIHJ0Y3BUcmFuc3BvcnRTdGF0c0lkOwogICAg
ICAgICBTdHJpbmcgc2VsZWN0ZWRDYW5kaWRhdGVQYWlySWQ7CiAgICAgICAgIFN0cmluZyBsb2Nh
bENlcnRpZmljYXRlSWQ7CkBAIC0zMzUsMzQgKzMzNSwzNCBAQCBwdWJsaWM6CiAgICAgc3RydWN0
IFBlZXJDb25uZWN0aW9uU3RhdHMgOiBTdGF0cyB7CiAgICAgICAgIFBlZXJDb25uZWN0aW9uU3Rh
dHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6UGVlckNvbm5lY3Rpb247IH0KIAot
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGF0YUNoYW5uZWxzT3BlbmVkOwotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gZGF0YUNoYW5uZWxzQ2xvc2VkOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBkYXRhQ2hhbm5lbHNPcGVuZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGRhdGFDaGFubmVsc0Nsb3NlZDsKICAgICB9OwogCiAgICAgc3RydWN0IE1lZGlh
U291cmNlU3RhdHMgOiBTdGF0cyB7CiAgICAgICAgIFN0cmluZyB0cmFja0lkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBraW5kOwotICAgICAgICBPcHRpb25hbDxib29sPiByZWxheWVkU291cmNl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlbGF5ZWRTb3VyY2U7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBBdWRpb1NvdXJjZVN0YXRzIDogTWVkaWFTb3VyY2VTdGF0cyB7CiAgICAgICAg
IEF1ZGlvU291cmNlU3RhdHMoKSB7IHR5cGUgPSBSVENTdGF0c1JlcG9ydDo6VHlwZTo6TWVkaWFT
b3VyY2U7IH0KIAotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGF1ZGlvTGV2ZWw7Ci0gICAgICAg
IE9wdGlvbmFsPGRvdWJsZT4gdG90YWxBdWRpb0VuZXJneTsKLSAgICAgICAgT3B0aW9uYWw8ZG91
YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hv
UmV0dXJuTG9zczsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBlY2hvUmV0dXJuTG9zc0VuaGFu
Y2VtZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXVkaW9MZXZlbDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsQXVkaW9FbmVyZ3k7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiB0b3RhbFNhbXBsZXNEdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGVjaG9SZXR1cm5Mb3NzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZWNob1JldHVybkxvc3NFbmhhbmNlbWVudDsKICAgICB9OwogCiAgICAgc3RydWN0IFZpZGVv
U291cmNlU3RhdHMgOiBNZWRpYVNvdXJjZVN0YXRzIHsKICAgICAgICAgVmlkZW9Tb3VyY2VTdGF0
cygpIHsgdHlwZSA9IFJUQ1N0YXRzUmVwb3J0OjpUeXBlOjpNZWRpYVNvdXJjZTsgfQogCi0gICAg
ICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IHdpZHRoOwotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZCBsb25nPiBoZWlnaHQ7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGJpdERl
cHRoOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZCBsb25nPiBmcmFtZXM7Ci0gICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gZnJhbWVzUGVyU2Vjb25kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkIGxvbmc+IHdpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+
IGhlaWdodDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBsb25nPiBiaXREZXB0aDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBsb25nPiBmcmFtZXM7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZXNQZXJTZWNvbmQ7CiAgICAgfTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3Nh
Z2VQYXJzaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RVTk1l
c3NhZ2VQYXJzaW5nLmNwcAppbmRleCA4YWU0MjFiYTE4YWJkNWM2OGMzNDM1MDhmNmVmMWVkY2Nh
ZjRjODEzLi5jZDdmMmQ5OTkzNjUzMmI2YTllMmE4ZjRkZDU2YzUzNmRmYzIwYmEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVOTWVzc2Fn
ZVBhcnNpbmcuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0dW5N
ZXNzYWdlKHVpbnQxNl90IG1lc3NhZ2VUeXBlKQogICAgIHJldHVybiAhKG1lc3NhZ2VUeXBlICYg
MHhDMDAwKTsKIH0KIAotT3B0aW9uYWw8U1RVTk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVOT3JUVVJO
TWVzc2FnZUxlbmd0aHMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitzdGQ6Om9w
dGlvbmFsPFNUVU5NZXNzYWdlTGVuZ3Rocz4gZ2V0U1RVTk9yVFVSTk1lc3NhZ2VMZW5ndGhzKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplIDwgNCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2luZy5oCmluZGV4IGY2Y2Q3NDhmYzE2ZTEzMjJlZmM4
NGY4ZWJlNjgzZWViMmIyODBhNzUuLmYwNjMyMzEwNTIxOGE5ODA0ZTY4OTYzODQ4ODAyOTcyMzIy
OWFkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU1RV
Tk1lc3NhZ2VQYXJzaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9TVFVOTWVzc2FnZVBhcnNpbmcuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU1RVTk1lc3Nh
Z2VMZW5ndGhzIHsKICAgICBzaXplX3QgbWVzc2FnZUxlbmd0aFdpdGhQYWRkaW5nIHsgMCB9Owog
fTsKIAotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U1RVTk1lc3NhZ2VMZW5ndGhzPiBnZXRTVFVO
T3JUVVJOTWVzc2FnZUxlbmd0aHMoY29uc3QgdWludDhfdCosIHNpemVfdCk7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPFNUVU5NZXNzYWdlTGVuZ3Rocz4gZ2V0U1RVTk9yVFVSTk1lc3Nh
Z2VMZW5ndGhzKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VU
eXBlIHsgU1RVTiwgRGF0YSB9OwogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJh
Y3RNZXNzYWdlcyhWZWN0b3I8dWludDhfdD4mJiwgTWVzc2FnZVR5cGUsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQ2Vy
dGlmaWNhdGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwCmluZGV4IGI4Y2Nm
MTQ1ZDU2NzY3NmVhYjk2NjRlODNhNGMxNjQ5MWUxMTc4MjYuLmY4ZmU2OGU4NTU0ZWU5ODFiODA3
MTIxMmE3YTQyNWRlMDFiYTZlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwotICAgIE9wdGlvbmFs
PERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRDQ2VydGlmaWNhdGU+Pj4gbV9wcm9t
aXNlOworICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxS
VENDZXJ0aWZpY2F0ZT4+PiBtX3Byb21pc2U7CiB9OwogCiBzdGF0aWMgaW5saW5lIHJ0Yzo6S2V5
UGFyYW1zIGtleVBhcmFtc0Zyb21DZXJ0aWZpY2F0ZVR5cGUoY29uc3QgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpDZXJ0aWZpY2F0ZUluZm9ybWF0aW9uJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggODk0YzZkMjc5
ZGQ3ZWE3NjIxZDlmNDQ5MDQxM2I2OTAwYTk0Y2JkNi4uY2JiZTZkNzE2OTY5ODVmZDMwY2IyZTkz
OTI3NDkzODJmNzY0OWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlCiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKIAot
T3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2Vp
dmVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYga2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICBhdXRvKiBwYWdlID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC03Niw3ICs3
Niw3IEBAIE9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpyZWNlaXZlckNhcGFiaWxpdGllcyhTY3JpcHRFCiAgICAgcmV0dXJuIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkucmVjZWl2ZXJDYXBhYmlsaXRpZXMoa2luZCk7CiB9CiAKLU9wdGlvbmFsPFJU
Q1J0cENhcGFiaWxpdGllcz4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZW5kZXJDYXBhYmlsaXRp
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kKQor
c3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
c2VuZGVyQ2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYga2luZCkKIHsKICAgICBhdXRvKiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmgKaW5kZXggN2IzZjU5YmMzODlhNzJlYzkwMWVhYTVmMDY0Yzlh
MmVkNDNjMzc0OC4uZTE0MWJlNTBkOGJlNzY2M2M2YTdlZWYzOWIzNmRlOTcwOGVmYjU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtNzYsNyAr
NzYsNyBAQCBwcml2YXRlOgogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRl
ckludGVyZmFjZT4gbV9ydGNTZW5kZXI7CiAgICAgU291cmNlIG1fc291cmNlOwogICAgIFJlZlB0
cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX3RyYW5zZm9ybUJhY2tlbmQ7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDx3ZWJydGM6OlJ0cFBhcmFtZXRlcnM+IG1fY3VycmVudFBhcmFtZXRlcnM7Cisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UnRwUGFyYW1ldGVycz4gbV9jdXJyZW50
UGFyYW1ldGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IDYzZTRj
ZTcyMGMyOGJiMzUzZjM4ODM1MDZkZjM2NDA0M2JjZGI5MDAuLmQxZjczYWQ3ZjQ3OGY2MDQ3MjVi
MDYwOTlmZGU2OTBjNzNlZDViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIHRvUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24obV9ydGNU
cmFuc2NlaXZlci0+ZGlyZWN0aW9uKCkpOwogfQogCi1PcHRpb25hbDxSVENSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbj4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjdXJyZW50RGlyZWN0
aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IExp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3VycmVudERpcmVjdGlvbigpIGNvbnN0CiB7
CiAgICAgYXV0byB2YWx1ZSA9IG1fcnRjVHJhbnNjZWl2ZXItPmN1cnJlbnRfZGlyZWN0aW9uKCk7
CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmgKaW5kZXggZmRiMjdiYWNjZDIzM2U3N2MxOTFiYzQzZGJiZmNhMDY5
Y2NjZTM4Yy4uYjI5NGRiMDU5OTM5YzRkNWVlZmI5ZTAwMDU3YzlkMjc4Y2VlNDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJUQ1J0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFJUQ1J0cFRy
YW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50RGlyZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudERpcmVjdGlv
bigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uKSBmaW5hbDsKICAgICBTdHJpbmcgbWlkKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmNwcAppbmRleCBiOGFlZTBkY2VhMjVlYjhhNzFlNmE3ZGFkNTI0ZWU5MjIxMTBj
ZGZiLi5hMTY0OThmYTJkYjAzMDMzZDJjNjNlZWQwNDkxYzBjM2Q3OGY5NzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBSVENFbmNvZGVkVmlkZW9GcmFtZU1ldGFkYXRhIExpYldlYlJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZTo6dmlkZW9NZXRhZGF0YSgpIGNvbgogICAgIGF1dG8qIHZpZGVv
RnJhbWUgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlRyYW5zZm9ybWFibGVWaWRlb0ZyYW1lSW50ZXJm
YWNlKj4obV9ydGNGcmFtZS5nZXQoKSk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSB2aWRlb0ZyYW1l
LT5HZXRNZXRhZGF0YSgpOwogCi0gICAgT3B0aW9uYWw8aW50NjRfdD4gZnJhbWVJZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZyYW1lSWQ7CiAgICAgaWYgKG1ldGFkYXRhLkdldEZyYW1l
SWQoKSkKICAgICAgICAgZnJhbWVJZCA9ICptZXRhZGF0YS5HZXRGcmFtZUlkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcAppbmRleCA0Yzg1M2U3MmM3
ZTg2N2ZhOWU3NTBhZjZjMzQ1YjE0MjQxMzNhNzhhLi5kODgyOWFkOWYxMmZjMTFhYTliNzMzNzU2
NmVmMGMyODU4NzBjNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xs
ZWN0b3IuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENJ
Y2VDYW5kaWRhdGVQYWlyU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXIKICAg
ICAgICAgc3RhdHMuY29uc2VudFJlc3BvbnNlc1NlbnQgPSAqcnRjU3RhdHMucmVzcG9uc2VzX3Nl
bnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gaWNl
Q2FuZGlkYXRlU3RhdGUoY29uc3Qgc3RkOjpzdHJpbmcmIHN0YXRlKQorc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPFJUQ0ljZUNhbmRpZGF0ZVR5cGU+IGljZUNhbmRpZGF0ZVN0YXRlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdGF0ZSkKIHsKICAgICBpZiAoc3RhdGUgPT0gImhvc3QiKQogICAgICAg
ICByZXR1cm4gUlRDSWNlQ2FuZGlkYXRlVHlwZTo6SG9zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0
aWxzLmNwcAppbmRleCBhMWZjZGUyYThkNWU2ZGM4MzQ1ZTIwYTEyYmZiMWJiMjU2NGJkZmMxLi41
OWNmOGM2Mzk5NTUwY2U3MTMzMTRiYTU1MDQ1MTczY2NhOTE2MjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDVXRpbHMuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIGlubGluZSBSVENJY2VD
b21wb25lbnQgdG9SVENJY2VDb21wb25lbnQoaW50IGNvbXBvbmVudCkKICAgICByZXR1cm4gY29t
cG9uZW50ID09IGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX1JUUCA/IFJUQ0ljZUNv
bXBvbmVudDo6UnRwIDogUlRDSWNlQ29tcG9uZW50OjpSdGNwOwogfQogCi1zdGF0aWMgaW5saW5l
IE9wdGlvbmFsPFJUQ0ljZVByb3RvY29sPiB0b1JUQ0ljZVByb3RvY29sKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwcm90b2NvbCkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSVENJY2VQcm90b2Nv
bD4gdG9SVENJY2VQcm90b2NvbChjb25zdCBzdGQ6OnN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAg
aWYgKHByb3RvY29sID09ICIiKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzc2LDcgKzM3Niw3
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNlUHJvdG9jb2w+IHRvUlRDSWNlUHJvdG9j
b2woY29uc3Qgc3RkOjpzdHJpbmcmIHByb3RvCiAgICAgcmV0dXJuIFJUQ0ljZVByb3RvY29sOjpU
Y3A7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNlVGNwQ2FuZGlkYXRlVHlwZT4g
dG9SVENJY2VUY3BDYW5kaWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlKQorc3RhdGlj
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRvUlRDSWNlVGNw
Q2FuZGlkYXRlVHlwZShjb25zdCBzdGQ6OnN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAodHlwZSA9
PSAiIikKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvbmFsPFJUQ0ljZVRjcENhbmRpZGF0ZVR5cGU+IHRvUlRDSWNlVGNwQ2FuZGlkYXRl
VHlwZShjb25zdCBzdAogICAgIHJldHVybiBSVENJY2VUY3BDYW5kaWRhdGVUeXBlOjpTbzsKIH0K
IAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSVENJY2VDYW5kaWRhdGVUeXBlPiB0b1JUQ0ljZUNh
bmRpZGF0ZVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGUpCitzdGF0aWMgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8UlRDSWNlQ2FuZGlkYXRlVHlwZT4gdG9SVENJY2VDYW5kaWRhdGVUeXBlKGNvbnN0
IHN0ZDo6c3RyaW5nJiB0eXBlKQogewogICAgIGlmICh0eXBlID09ICIiKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UlRDSWNl
Q2FuZGlkYXRlVHlwZT4gdG9SVENJY2VDYW5kaWRhdGVUeXBlKGNvbnN0IHN0ZDo6c3RyCiAgICAg
cmV0dXJuIFJUQ0ljZUNhbmRpZGF0ZVR5cGU6OlJlbGF5OwogfQogCi1PcHRpb25hbDxSVENJY2VD
YW5kaWRhdGU6OkZpZWxkcz4gcGFyc2VJY2VDYW5kaWRhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHAp
CitzdGQ6Om9wdGlvbmFsPFJUQ0ljZUNhbmRpZGF0ZTo6RmllbGRzPiBwYXJzZUljZUNhbmRpZGF0
ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkKIHsKICAgICBjcmlja2V0OjpDYW5kaWRhdGUgY2FuZGlk
YXRlOwogICAgIGlmICghd2VicnRjOjpQYXJzZUNhbmRpZGF0ZShzZHAudXRmOCgpLmRhdGEoKSwg
JmNhbmRpZGF0ZSwgbnVsbHB0ciwgdHJ1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaAppbmRleCBlMTcz
ZDY4NWE3OWE2Yjk5NGM4MzBhZmU0M2FlMzM2OTEyNzVkMDU0Li5mNDNkMGY3NjA3MzJmOGE3YWZi
MTBlNWM5OGIxNzE4ZTFlMTYzZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmgKQEAgLTM3LDkgKzM3
LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBheW1lbnREZXRhaWxzQmFzZSB7
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRJdGVtPj4gZGlzcGxheUl0ZW1zOwotICAgIE9w
dGlvbmFsPFZlY3RvcjxQYXltZW50U2hpcHBpbmdPcHRpb24+PiBzaGlwcGluZ09wdGlvbnM7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnREZXRhaWxzTW9kaWZpZXI+PiBtb2RpZmllcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5bWVudFNoaXBwaW5nT3B0aW9uPj4gc2hpcHBpbmdPcHRp
b25zOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBheW1lbnREZXRhaWxzTW9kaWZpZXI+PiBt
b2RpZmllcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzTW9kaWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNN
b2RpZmllci5oCmluZGV4IDRiNjFmMDFlZmUxODk2ZDE4ODg2M2M2YmMzMDAxMGU3OTljZWE5OGIu
LmVlZDlhYjRjMWE1ZjkxMzI3NDE3NDRkMTQ2Mjg5MDE5ZWJlNWNiMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNNb2RpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERl
dGFpbHNNb2RpZmllci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IFBheW1lbnREZXRhaWxzTW9kaWZpZXIgewogICAgIFN0cmluZyBzdXBwb3J0ZWRNZXRo
b2RzOwotICAgIE9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBheW1lbnRJdGVtPiB0b3RhbDsKICAgICBWZWN0b3I8UGF5bWVudEl0ZW0+IGFkZGl0aW9uYWxE
aXNwbGF5SXRlbXM7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gZGF0YTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRE
ZXRhaWxzVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnREZXRhaWxzVXBkYXRlLmgKaW5kZXggNzdiOTYyMDgzYTA1MDM4ZGRhMGZmMTlhZDNkMGY2
YzQ3MGMyNjIxZi4uM2U0MGUyYjYzNzdmNmJiZGJiYzRjN2QwZTA1NjU1YmQ3YWNiM2JhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0
YWlsc1VwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudERldGFpbHNVcGRhdGUuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBQYXltZW50RGV0YWlsc1VwZGF0ZSBmaW5hbCA6IFBheW1lbnREZXRhaWxz
QmFzZSB7CiAgICAgU3RyaW5nIGVycm9yOwotICAgIE9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3Rh
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBheW1lbnRJdGVtPiB0b3RhbDsKICAgICBBZGRyZXNzRXJy
b3JzIHNoaXBwaW5nQWRkcmVzc0Vycm9yczsKICAgICBQYXllckVycm9yRmllbGRzIHBheWVyRXJy
b3JzOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBheW1lbnRNZXRob2RFcnJvcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRIYW5kbGVyLmgKaW5kZXggODExYTI4NWFlNTQ0NGJmOTBmZWNjZjc1Y2Y2YTE3MzU5NzY3MDhi
YS4uOTU1ZTM5YTcyMjg1MmMyMjBmMmJlOTQ2OWRkYjUxN2M2MGY4OWRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIu
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXlt
ZW50KERvY3VtZW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkZXRhaWxzVXBkYXRlZChQ
YXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9y
cyYmLCBQYXllckVycm9yRmllbGRzJiYsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJv
cnMpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IG1lcmNoYW50VmFsaWRhdGlv
bkNvbXBsZXRlZChKU0M6OkpTVmFsdWUmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0
ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29t
cGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpID0gMDsKICAgICB2aXJ0dWFs
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYpID0gMDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggOWI5MDIyMDBmZGM4YWQyMTMyNDhiYWZhM2RjYjc5
ZjZkZDM2NzVkMC4uYTQxZmEwODY0MjRiNTY4MTI2NjQ1NDQzNDc5YWVhZjljNjk3M2Y0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJM
QmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBVUkwmIHVybCkKIAogLy8gSW1wbGVt
ZW50cyAidmFsaWRhdGUgYSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgogLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL3BheW1lbnQtbWV0aG9kLWlkLyN2YWxpZGl0eQotT3B0aW9uYWw8UGF5bWVu
dFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRo
b2RJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8UGF5
bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50aWZpZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRN
ZXRob2RJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBVUkwgdXJs
IHsgVVJMKCksIGlkZW50aWZpZXIgfTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKQEAgLTUy
NCw3ICs1MjQsNyBAQCBjb25zdCBTdHJpbmcmIFBheW1lbnRSZXF1ZXN0OjppZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGV0YWlscy5pZDsKIH0KIAotT3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlw
ZT4gUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nVHlwZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRTaGlwcGluZ1R5cGU+IFBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ1R5cGUoKSBjb25zdAog
ewogICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFNoaXBwaW5nKQogICAgICAgICByZXR1cm4gbV9v
cHRpb25zLnNoaXBwaW5nVHlwZTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFBheW1lbnRSZXF1
ZXN0OjphY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBQYXltZW50UmVzcG9uc2U6OkRl
dGFpbHNGdQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBQYXltZW50UmVxdWVzdDo6Y29tcGxldGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYm
IHJlc3VsdCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShzdGQ6
Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkNsb3NlZCk7CiAgICAgaWYgKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5oCmluZGV4IDhjNWE5YWZiYTk3NjUyMWFhOWVlOWRkMDA3YmEzZDYyMjdjMzQ3NTcu
Ljc4OTU1OGRlNDliOWY4ZjJkNWRhZjY2OGZmY2MxOWExNzVjZjFlZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdDsK
ICAgICBQYXltZW50QWRkcmVzcyogc2hpcHBpbmdBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9z
aGlwcGluZ0FkZHJlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHNoaXBwaW5nT3B0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaGlwcGluZ09wdGlvbjsgfQotICAgIE9wdGlvbmFsPFBheW1l
bnRTaGlwcGluZ1R5cGU+IHNoaXBwaW5nVHlwZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
UGF5bWVudFNoaXBwaW5nVHlwZT4gc2hpcHBpbmdUeXBlKCkgY29uc3Q7CiAKICAgICBlbnVtIGNs
YXNzIFN0YXRlIHsKICAgICAgICAgQ3JlYXRlZCwKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZVdpdGgoVXBkYXRlUmVhc29uLCBSZWY8RE9NUHJv
bWlzZT4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oRXZlbnQmLCBSZWY8RE9NUHJvbWlzZT4mJik7CiAgICAgdm9pZCBhY2NlcHQoY29uc3QgU3Ry
aW5nJiBtZXRob2ROYW1lLCBQYXltZW50UmVzcG9uc2U6OkRldGFpbHNGdW5jdGlvbiYmLCBSZWY8
UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXllckVtYWlsLCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpOwot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXBsZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4m
Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50
Q29tcGxldGU+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRWYWxpZGF0
aW9uRXJyb3JzJiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxQYXltZW50QWRkcmVzcz4gbV9zaGlwcGluZ0FkZHJlc3M7CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpDcmVhdGVkIH07CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNob3dQcm9taXNlPiBtX3Nob3dQcm9taXNlOwotICAgIE9wdGlvbmFsPFBheW1lbnRIYW5kbGVy
V2l0aFBlbmRpbmdBY3Rpdml0eT4gbV9hY3RpdmVQYXltZW50SGFuZGxlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFBheW1lbnRIYW5kbGVyV2l0aFBlbmRpbmdBY3Rpdml0eT4gbV9hY3RpdmVQYXltZW50
SGFuZGxlcjsKICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gbV9kZXRhaWxzUHJvbWlzZTsKICAgICBS
ZWZQdHI8RE9NUHJvbWlzZT4gbV9tZXJjaGFudFNlc3Npb25Qcm9taXNlOwogICAgIFJlZlB0cjxQ
YXltZW50UmVzcG9uc2U+IG1fcmVzcG9uc2U7CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faXNDYW5jZWxQZW5kaW5nIHsgZmFsc2UgfTsKIH07CiAKLU9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50
TWV0aG9kSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworc3RkOjpvcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnRpZmllcj4gY29udmVydEFuZFZhbGlkYXRlUGF5
bWVudE1ldGhvZElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAKaW5kZXggMDVkMWNhNGJiNzZmODRl
NjY5NjRiOWVkYTEzMmUwZGJmMDUzNWVlYi4uMjY0NzI1MjYzNTAzNDg1MmFiMmFlOTViMjY4ZDIy
Nzg4NjU5ZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBh
eW1lbnRSZXNwb25zZTo6c2V0RGV0YWlsc0Z1bmN0aW9uKERldGFpbHNGdW5jdGlvbiYmIGRldGFp
bHNGdW5jdGlvbikKICAgICBtX2NhY2hlZERldGFpbHMgPSB7IH07CiB9CiAKLXZvaWQgUGF5bWVu
dFJlc3BvbnNlOjpjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQordm9pZCBQYXltZW50UmVzcG9uc2U6
OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6U3RvcHBlZCB8fCAhbV9yZXF1ZXN0KSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaAppbmRleCBjNGZmNGI2ZjFhMDY0ODdl
MzU4Y2JiNzY4ZTU1OTU3OTc2NGIyN2Q5Li40ZDdiYTdmNmQ3MDZmOGYxMmU4MDc5ZDU0ZGJkYTYw
MzU1ZDYzM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5ZXJQaG9uZTsg
fQogICAgIHZvaWQgc2V0UGF5ZXJQaG9uZShjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpIHsgbV9w
YXllclBob25lID0gcGF5ZXJQaG9uZTsgfQogCi0gICAgdm9pZCBjb21wbGV0ZShPcHRpb25hbDxQ
YXltZW50Q29tcGxldGU+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lk
IGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCByZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYm
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBhYm9ydFdpdGhFeGNlcHRp
b24oRXhjZXB0aW9uJiYpOwogICAgIGJvb2wgaGFzUmV0cnlQcm9taXNlKCkgY29uc3QgeyByZXR1
cm4gISFtX3JldHJ5UHJvbWlzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcAppbmRleCA5NmRkMmI3ZDNlNzVl
NDNjNzRmOWRjOTBkNjY3NTdiNTU4M2VmYjMyLi5kMWJiMDQ5ZDRiMjE4ZjUyODFmMjEwMGZjODk4
YzUxYjg4YTNmMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBs
YXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Jl
bW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
UmVtb3RlUGxheWJhY2s6OndhdGNoQXZhaWxhYmlsaXR5KFJlZjxSZW1vdGVQbGF5YmFja0F2YWls
YWJpbGl0eUNhbGxiYWNrPiYmCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlUGxheWJhY2s6OmNh
bmNlbFdhdGNoQXZhaWxhYmlsaXR5KE9wdGlvbmFsPGludDMyX3Q+IGlkLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCit2b2lkIFJlbW90ZVBsYXliYWNrOjpjYW5jZWxXYXRjaEF2YWls
YWJpbGl0eShzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgLy8gNi4yLjEuNSBTdG9wIG9ic2VydmluZyByZW1vdGUgcGxheWJh
Y2sgZGV2aWNlcyBhdmFpbGFiaWxpdHkKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vcmVt
b3RlLXBsYXliYWNrLyNzdG9wLW9ic2VydmluZy1yZW1vdGUtcGxheWJhY2stZGV2aWNlcy1hdmFp
bGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJh
Y2svUmVtb3RlUGxheWJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJh
Y2svUmVtb3RlUGxheWJhY2suaAppbmRleCBjZjIzMTgxYzcxYTZlYmU5NmRkOTBmZGI3NTQ3ODY4
MWEyNDhkZTVkLi4yZDI3MzYyZThiNDkyMzI2ZTZlZjhkYjAwODI0NGE5YTc2MzkyNWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXli
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQ
bGF5YmFjay5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB+UmVtb3RlUGxheWJhY2so
KTsKIAogICAgIHZvaWQgd2F0Y2hBdmFpbGFiaWxpdHkoUmVmPFJlbW90ZVBsYXliYWNrQXZhaWxh
YmlsaXR5Q2FsbGJhY2s+JiYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwotICAgIHZvaWQgY2Fu
Y2VsV2F0Y2hBdmFpbGFiaWxpdHkoT3B0aW9uYWw8aW50MzJfdD4gaWQsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYpOworICAgIHZvaWQgY2FuY2VsV2F0Y2hBdmFpbGFiaWxpdHkoc3RkOjpvcHRpb25h
bDxpbnQzMl90PiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBwcm9tcHQo
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBib29sIGhhc0F2YWlsYWJpbGl0eUNhbGxi
YWNrcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggODhiZmYy
YzBiZDZlMTUyYjdmNmYxNjVlODYzNTcyOTQ0NGFjNzdlZC4uMzQ5YWRmNmI0MmNjYjNjYzFkNmMw
N2EyZTU0NGMyYmM1OTNhY2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuY3BwCkBA
IC00Myw5ICs0Myw5IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjptdXRl
KCkKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLU9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZTo6ZmluZENhcHR1cmVEZXZpY2UoKQorc3Rk
OjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U6
OmZpbmRDYXB0dXJlRGV2aWNlKCkKIHsKLSAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0
dXJlRGV2aWNlOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmlj
ZTsKICAgICBhdXRvIGRldmljZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0
b24oKS5hdWRpb0NhcHR1cmVGYWN0b3J5KCkuYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpLmNh
cHR1cmVEZXZpY2VzKCk7CiAgICAgZm9yIChhdXRvIGRldmljZSA6IGRldmljZXMpIHsKICAgICAg
ICAgaWYgKCFkZXZpY2UuZW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaAppbmRl
eCAwOGFhY2FkMmQ0M2U5YzgyYWI0YTY5NWQxZWY5MzFkYTdkMTlhMzkyLi44NDQwNjBkYWRmYTNm
NTk0MDQzOTJiNGIyNzc5Y2NkNWIzZjcwOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2Uu
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+OwogICAgIHVzaW5nIFN0
YXRlVXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJik+OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZShTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3RhdGVV
cGRhdGVDYWxsYmFjayYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGZpbmRDYXB0
dXJlRGV2aWNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4gZmluZENhcHR1cmVEZXZpY2UoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJj
ZShjb25zdCBDYXB0dXJlRGV2aWNlJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oCmluZGV4IDc2MzRi
ZDAwMzMzN2JiZmZiMjcxNmNmMDcyNDFlZmQwMjhiYjFiYzIuLmM5Y2NhOTc3ZTQ5MWI4ZDY4ODZm
ZjhmMjAzNDI1NDA0ZmQyY2FlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3Ry
dWN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgewogICAgIFN0cmluZyBtZXNzYWdlOwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTUsMTQgKzU1LDE0IEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25FcnJvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gU3BlZWNoUmVjb2duaXRpb25F
cnJvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVj
b2duaXRpb25FcnJvclR5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkVycm9yVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBt
ZXNzYWdlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIGRlY29kZXIg
Pj4gbWVzc2FnZTsKICAgICBpZiAoIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggOTQyNmM5NGM3OWI0MzgzOGFmMzA3ZDky
YjdmNzQwM2I1NzA0OGVkMC4uOGQ1OTg1MzE5NDYzNDY4NjNhY2EzNDI0OTVkMjk5NDEzOWY3MGJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRl
bnRpZmllcjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTUxLDM5ICs1MSwzOSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7Cisg
ICAgc3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsK
ICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxhbmc7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGxhbmc7CiAgICAgZGVjb2RlciA+PiBsYW5nOwogICAgIGlmICghbGFuZykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGNvbnRpbnVvdXM7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBjb250aW51b3VzOwogICAgIGRlY29kZXIgPj4gY29udGludW91
czsKICAgICBpZiAoIWNvbnRpbnVvdXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxib29sPiBpbnRlcmltUmVzdWx0czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGludGVyaW1SZXN1bHRzOwogICAgIGRlY29kZXIgPj4gaW50ZXJpbVJlc3VsdHM7CiAgICAg
aWYgKCFpbnRlcmltUmVzdWx0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBtYXhBbHRlcm5hdGl2ZXM7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbWF4QWx0ZXJuYXRpdmVzOwogICAgIGRlY29kZXIgPj4gbWF4QWx0ZXJuYXRpdmVz
OwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgc3RkOjpv
cHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVu
dE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBmcmFtZUlkZW50aWZpZXI7CiAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCmluZGV4IDVh
YTQ4NTIwY2I4ZjY3NzZkMzA1Mzg0ZDc0Njk0MTQzNzM1YzcwZDguLjhmOGFjY2M0YzhjMTQwNThj
NGY0MmNkZGFlNTk3MzMyYWIwOGYzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCkBAIC0zMiw3
ICszMiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7CiAgICAg
ZG91YmxlIGNvbmZpZGVuY2UgeyAwLjAgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFNw
ZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNwZWVjaFJlY29n
bml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
QWx0ZXJuYXRpdmVEYXRhPiBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURh
dGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zY3JpcHQpKQpA
QCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsKICAg
ICBib29sIGlzRmluYWwgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
PiBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5hbHRlcm5hdGl2ZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggYzI5YmIyNWEzMTY0YzRhMWMyZTFh
ZTEyYThiNjBiYzkwNTQzOTQzNy4uMTI3MGNiODg0M2JjZjQ3OGExZTFjNWRhMmNkYzA5MDI5MmQ2
MDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHQoKSBj
b25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlh
bnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJlY29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKQEAgLTc5LDE5ICs3OSwxOSBAQCB2b2lkIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlPiBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGNs
aWVudElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGlm
ICghY2xpZW50SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+
IHR5cGU7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8Q29udGVudD4gY29udGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnQ+
IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50OwogICAgIGlmICghY29udGVudCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKaW5kZXggNmYxNWZiZWQxMTQ4M2NiYTM3MjI3
Y2YxODZhZWU3ZjlmYzc0MzM1My4uMDZmYmRkMmZlNDNjMTU1NjE2YzY5ZWE5ODNjNTBjZWYyOGEy
NDVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU3BlZWNoUmVjb2duaXplcjo6U3BlZWNoUmVj
b2duaXplcihEZWxlZ2F0ZUNhbGxiYWNrJiYgZGVsZWdhdGVDYWxsYmFjaywgVW5pcXVlUmUKIHsK
IH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmIGVycm9yKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydChzdGQ6Om9w
dGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkFib3J0aW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkluYWN0aXZlKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pemVyLmgKaW5kZXggYTZiODgyMGRjMWNkM2Y3YjU0OGVjYWYzMDNkOTQxNDVjMmY0MTAy
My4uZDM0Njk4M2NiOTJiMWM2NWQyY2Q5MmZjMTQwNjZjNTMwNDJlYmFlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVl
Y2hSZWNvZ25pdGlvbkVuYWJsZWQpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
Ym9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmID0gc3RkOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KHN0ZDo6b3B0aW9uYWw8U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1Tb3VyY2UuaAppbmRleCAwM2I2NjlkNTI3ZGE4ZmIwNzA1MWI0YWY5NzIwOTgwYTRmZjZiMzI3
Li44NmFlNTNiZDJlYmIxMGViMGViZjFkNTcxNTNlYzA2NDc4OWJkN2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaApA
QCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9wcm9taXNlOwotICAgIE9wdGlvbmFsPFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07
CiAKIGNsYXNzIFNpbXBsZVJlYWRhYmxlU3RyZWFtU291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5k
ZXggMDkyYzdkNmZmNGUwYmUwY2VlNzllOTlmYmZhNWE1NDQzMjgzMjEyOC4uNmY5NGViZWExZTA5
MGY3NzJkY2E0OTZiMmQ5MjY0NTU0YTVmZTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDUy
LDEyICs0NTIsMTIgQEAgdW5zaWduZWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNo
YW5uZWxzKCkKICAgICByZXR1cm4gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRMYXRlcihkb3Vi
bGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBPcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRp
b24pCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0TGF0ZXIo
ZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdy
YWluRHVyYXRpb24pCiB7CiAgICAgcmV0dXJuIHN0YXJ0UGxheWluZyh3aGVuLCBncmFpbk9mZnNl
dCwgZ3JhaW5EdXJhdGlvbik7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9w
dGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbikKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZz
ZXQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAid2hlbiA9ICIs
IHdoZW4sICIsIG9mZnNldCA9ICIsIGdyYWluT2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIsIGdyYWlu
RHVyYXRpb24udmFsdWVfb3IoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggYjczM2Q3MGM2ZmNiYWFh
NWRiYTQ2NWNiNjhhZTMyMzYyZDI3YzZlNy4uN2U1OWU5MDg1NjU0YzRkYmJmMTM1YzJkYmQ3ZDNi
ZjI5YmEwODA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCk7CiAKICAgICAvLyBQbGF5LXN0YXRlCi0gICAg
RXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRMYXRlcihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zm
c2V0LCBPcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pOwogCiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0
ZSB3YXMgb3JpZ2luYWxseSBleHBvc2VkIGFzIC5sb29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25z
aXN0ZW50IGluIG5hbWluZyB3aXRoIDxhdWRpbz4KICAgICAvLyBhbmQgd2l0aCBob3cgaXQncyBk
ZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24sIHRoZSBwcm9wZXIgYXR0cmlidXRlIG5hbWUg
aXMgLmxvb3AKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5
aW5nKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3Jh
aW5EdXJhdGlvbik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKGRvdWJsZSB3
aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0
aW9uKTsKICAgICB2b2lkIGFkanVzdEdyYWluUGFyYW1ldGVycygpOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIG9uIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZWRmMDJiMDRjMjA3NjJjZmM1MTlkMjFkOWM2MzUwOTE1
ZDMxYThjMS4uNTA1NWI0NmI4OWJmYjg2YWRmMTc1YTQ3ZDg0NzAxYTUxZjA2NzA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAt
NjgsOSArNjgsOSBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0KTsK
IHN0YXRpYyB1bnNpZ25lZCBoYXJkd2FyZUNvbnRleHRDb3VudDsKICNlbmRpZgogCi1zdGF0aWMg
T3B0aW9uYWw8ZmxvYXQ+JiBkZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3RpbmcoKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+JiBkZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3RpbmcoKQogewotICAg
IHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKICAgICByZXR1cm4gc2FtcGxlUmF0ZTsKIH0KIApAQCAt
ODEsNyArODEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1
dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnQucXVp
cmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKIH0KIAotdm9p
ZCBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhPcHRpb25hbDxm
bG9hdD4gc2FtcGxlUmF0ZSkKK3ZvaWQgQXVkaW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxlUmF0
ZUZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKIHsKICAgICBkZWZh
dWx0U2FtcGxlUmF0ZUZvclRlc3RpbmcoKSA9IHNhbXBsZVJhdGU7CiB9CkBAIC0yMzksNyArMjM5
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0
aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnN1c3BlbmQoW3RoaXMsIGFj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewog
ICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZN
b3ZlKCpleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3MCw3ICsyNzAsNyBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVzdGluYXRp
b24oKS5yZXN1bWUoW3RoaXMsIGFjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigpLnJlc3VtZShbdGhpcywgYWN0aXZpdHkg
PSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KCk7
CiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJp
bmcoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikgeworICAgIGRlc3RpbmF0aW9uKCkuc3RhcnRSZW5kZXJpbmcoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIGlmICghZXhjZXB0aW9uKQogICAgICAgICAgICAg
c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogICAgIH0pOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAog
ICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0aW5hdGlvbigpLnJlc3VtZShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhj
ZXB0aW9uKSB7CisgICAgZGVzdGluYXRpb24oKS5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7
CiAgICAgICAgIHNldFN0YXRlKGV4Y2VwdGlvbiA/IFN0YXRlOjpTdXNwZW5kZWQgOiBTdGF0ZTo6
UnVubmluZyk7CiAgICAgfSk7CiB9CkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgZGVz
dGluYXRpb24oKS5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIHsKKyAgICBkZXN0aW5hdGlvbigpLnN1
c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGE4OGE4YzVkNGZlZTdiN2JhZjMzM2JhMzk2ZWQ0Y2U5ZWQ4M2U0
NTkuLmYyNDBiOWM1NmU4ZjI3ZjVmYzgxOTU3NzdkZTYzNzI5MjdlNmQ0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBj
cmVhdGUoRG9jdW1lbnQmLCBBdWRpb0NvbnRleHRPcHRpb25zJiYpOwogICAgIH5BdWRpb0NvbnRl
eHQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldERlZmF1bHRTYW1wbGVS
YXRlRm9yVGVzdGluZyhPcHRpb25hbDxmbG9hdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhzdGQ6Om9wdGlvbmFsPGZsb2F0
Pik7CiAKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRPcHRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dE9wdGlv
bnMuaAppbmRleCA4ZmNlYzYwMDIxZjdiM2Q4NjY3ZmMwNzJjYzU1NTAxY2QyMDVkYjFjLi42MzJm
NDY5YjdkZDdmNzYwYmMwZDA3NjI4ODhiMzljMWY4YmM0NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dE9wdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dE9wdGlvbnMuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBdWRpb0NvbnRleHRPcHRp
b25zIHsKICAgICBWYXJpYW50PEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeSwgZG91YmxlPiBs
YXRlbmN5SGludCB7IEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeTo6SW50ZXJhY3RpdmUgfTsK
LSAgICBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBzYW1wbGVSYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmlu
ZGV4IDlmMzRiNTkwMGQ4NWU5ZGNkMTk1NmEwMzg0OWU5MTBkMzVjNDk2NTguLjZhOTViZmM1ZDY0
YjFiOWRiZTA4ZDI4NzkzYjM2ZjhjMzdlOGYzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZSBsb2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3Bl
Y2lmaWVkIGRldmljZS4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Rh
cnRSZW5kZXJpbmcoKSB7IH0KIAogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlcyBhcmUgb3du
ZWQgYnkgdGhlIEJhc2VBdWRpb0NvbnRleHQgc28gd2UgZm9yd2FyZCB0aGUgcmVmY291bnRpbmcg
dG8gaXRzIEJhc2VBdWRpb0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlT3B0aW9ucy5oCmluZGV4IDA0MGYwNzg0NjYyMGM3NzEyNWZhNWVm
NTMzMzUxZTk1YWNmYmM1YzcuLjI4YzE3ZGNmNGZmYjk2ZGQ2MzYyOTUzNzZiYWJmYTBjYjM2NjYw
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3B0aW9ucy5oCkBAIC0zNCw5ICszNCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBBdWRpb05vZGVPcHRpb25zIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gY2hhbm5lbENvdW50
OwotICAgIE9wdGlvbmFsPENoYW5uZWxDb3VudE1vZGU+IGNoYW5uZWxDb3VudE1vZGU7Ci0gICAg
T3B0aW9uYWw8Q2hhbm5lbEludGVycHJldGF0aW9uPiBjaGFubmVsSW50ZXJwcmV0YXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2hhbm5lbENvdW50OworICAgIHN0ZDo6b3B0aW9u
YWw8Q2hhbm5lbENvdW50TW9kZT4gY2hhbm5lbENvdW50TW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PENoYW5uZWxJbnRlcnByZXRhdGlvbj4gY2hhbm5lbEludGVycHJldGF0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDU0ZmNhYmE0NTI0ZmQyODgwN2Iz
NzkxZTllMmY5NGJjMjAwMTk3ODQuLjZkNTliNDg1YzY3NzAzMTcwYTA3NmUwYzUyOTFjMzZkOGY0
YmVmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAgLTI0MSw4ICsyNDEsOCBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbEFuZEhvbGRBdFRpbWUoU2Vjb25kcyBjYW5jZWxU
aW1lKQogICAgIGF1dG8gZXZlbnRUeXBlID0gY2FuY2VsbGVkRXZlbnQudHlwZSgpOwogCiAgICAg
Ly8gTmV3IGV2ZW50IHRvIGJlIGluc2VydGVkLCBpZiBhbnksIGFuZCBhIFNldFZhbHVlRXZlbnQg
aWYgbmVlZGVkLgotICAgIE9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld0V2ZW50OwotICAgIE9wdGlv
bmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZhbHVlRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQYXJh
bUV2ZW50PiBuZXdFdmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhcmFtRXZlbnQ+IG5ld1NldFZh
bHVlRXZlbnQ7CiAKICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgewogICAgIGNhc2UgUGFyYW1FdmVu
dDo6TGluZWFyUmFtcFRvVmFsdWU6CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBBdWRpb1BhcmFt
VGltZWxpbmU6OnJlbW92ZUNhbmNlbGxlZEV2ZW50cyhzaXplX3QgZmlyc3RFdmVudFRvUmVtb3Zl
KQogICAgIG1fZXZlbnRzLnJlbW92ZShmaXJzdEV2ZW50VG9SZW1vdmUsIG1fZXZlbnRzLnNpemUo
KSAtIGZpcnN0RXZlbnRUb1JlbW92ZSk7CiB9CiAKLU9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFt
VGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCitzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUo
QmFzZUF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBtaW5W
YWx1ZSwgZmxvYXQgbWF4VmFsdWUpCiB7CiAgICAgewogICAgICAgICBpZiAoIW1fZXZlbnRzTG9j
ay50cnlMb2NrKCkpCkBAIC05MzIsNyArOTMyLDcgQEAgYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6
OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVlQ3VydmVFdmVudChWZWN0b3I8ZmxvYXQ+JiYgY3UK
ICAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpTZXRWYWx1ZUN1cnZlLCAwLCB0aW1lLCAwLCBkdXJh
dGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1cnZlUG9pbnRzUGVyU2Vjb25kLCBjdXJ2ZUVuZFZhbHVl
LCBzdGQ6Om51bGxvcHQgfTsKIH0KIAotYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZl
bnQ6OmNyZWF0ZUNhbmNlbFZhbHVlc0V2ZW50KFNlY29uZHMgY2FuY2VsVGltZSwgT3B0aW9uYWw8
U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50KSAtPiBQYXJhbUV2ZW50CithdXRvIEF1ZGlvUGFyYW1U
aW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQoU2Vjb25kcyBjYW5j
ZWxUaW1lLCBzdGQ6Om9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYgc2F2ZWRFdmVudCkgLT4gUGFyYW1F
dmVudAogewogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKHNhdmVkRXZlbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
CmluZGV4IGJkZjYzMTdkN2ZlZGJkNGRmNWE2ZjJkNmZiZjI3N2JlODM5NGIzODIuLmNiZTAxYzAz
YjVmOTcxNGNlNmY0OGNlNWE0YWE3Y2VlZTFjNmI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlk
IHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFs
dWUgaXMgcmV0dXJuZWQuCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHZhbHVlRm9yQ29udGV4dFRpbWUo
QmFzZUF1ZGlvQ29udGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgZmxvYXQgbWluVmFsdWUsIGZs
b2F0IG1heFZhbHVlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB2YWx1ZUZvckNvbnRleHRU
aW1lKEJhc2VBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGZsb2F0IG1pblZhbHVl
LCBmbG9hdCBtYXhWYWx1ZSk7CiAKICAgICAvLyBHaXZlbiB0aGUgdGltZSByYW5nZSwgY2FsY3Vs
YXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGludG8gdGhlIHZhbHVlcyBidWZmZXIKICAgICAvLyBhbmQg
cmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0ZXIgdmFsdWUgY2FsY3VsYXRlZCBmb3IgInZhbHVlcyIg
b3IgdGhlIGRlZmF1bHRWYWx1ZSBpZiBub25lIHdlcmUgY2FsY3VsYXRlZC4KQEAgLTg3LDkgKzg3
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFBhcmFtRXZlbnQgY3JlYXRlRXhwb25lbnRp
YWxSYW1wRXZlbnQoZmxvYXQgdmFsdWUsIFNlY29uZHMgdGltZSk7CiAgICAgICAgIHN0YXRpYyBQ
YXJhbUV2ZW50IGNyZWF0ZVNldFRhcmdldEV2ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcyB0aW1l
LCBmbG9hdCB0aW1lQ29uc3RhbnQpOwogICAgICAgICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVT
ZXRWYWx1ZUN1cnZlRXZlbnQoVmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBTZWNvbmRzIHRpbWUsIFNl
Y29uZHMgZHVyYXRpb24pOwotICAgICAgICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVDYW5jZWxW
YWx1ZXNFdmVudChTZWNvbmRzIGNhbmNlbFRpbWUsIE9wdGlvbmFsPFNhdmVkRXZlbnQ+JiYpOwor
ICAgICAgICBzdGF0aWMgUGFyYW1FdmVudCBjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChTZWNvbmRz
IGNhbmNlbFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2F2ZWRFdmVudD4mJik7CiAKLSAgICAgICAgUGFy
YW1FdmVudChUeXBlIHR5cGUsIGZsb2F0IHZhbHVlLCBTZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVD
b25zdGFudCwgU2Vjb25kcyBkdXJhdGlvbiwgVmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBkb3VibGUg
Y3VydmVQb2ludHNQZXJTZWNvbmQsIGZsb2F0IGN1cnZlRW5kVmFsdWUsIE9wdGlvbmFsPFNhdmVk
RXZlbnQ+JiYgc2F2ZWRFdmVudCkKKyAgICAgICAgUGFyYW1FdmVudChUeXBlIHR5cGUsIGZsb2F0
IHZhbHVlLCBTZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCwgU2Vjb25kcyBkdXJhdGlv
biwgVmVjdG9yPGZsb2F0PiYmIGN1cnZlLCBkb3VibGUgY3VydmVQb2ludHNQZXJTZWNvbmQsIGZs
b2F0IGN1cnZlRW5kVmFsdWUsIHN0ZDo6b3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50
KQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICAgICAgICAgICwgbV90aW1lKHRpbWUpCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gaG9sZHMgdGhlIGV2ZW50IHRoYXQgaXMgYmVpbmcgY2FuY2VsbGVkLCBz
byB0aGF0IHByb2Nlc3NpbmcgY2FuCiAgICAgICAgIC8vIGNvbnRpbnVlIGFzIGlmIHRoZSBldmVu
dCBzdGlsbCBleGlzdGVkIHVwIHVudGlsIHdlIHJlYWNoIHRoZSBhY3R1YWwKICAgICAgICAgLy8g
c2NoZWR1bGVkIGNhbmNlbCB0aW1lLgotICAgICAgICBPcHRpb25hbDxTYXZlZEV2ZW50PiBtX3Nh
dmVkRXZlbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2F2ZWRFdmVudD4gbV9zYXZlZEV2ZW50
OwogICAgIH07CiAKICAgICAvLyBTdGF0ZSBvZiB0aGUgdGltZWxpbmUgZm9yIHRoZSBjdXJyZW50
IGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggZTVlYjk0OGYyZGQyZjY5MzQ5NmM1YmEw
NzgzMDRjZTY2NmNlMDcwMy4uNjgwOGQwMmI3NTc4MDBlODE4MjlhNTkwOTc0MzVmNDM0N2U1Y2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBtX2VuZFRpbWUgaXMgdGhlIHRpbWUgdG8gc3RvcCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBj
b250ZXh0J3MgdGltZWxpbmUgKDAgb3IgYSB0aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdzIGN1
cnJlbnQgdGltZSBtZWFucyAibm93IikuCiAgICAgLy8gSWYgaXQgaGFzbid0IGJlZW4gc2V0IGV4
cGxpY2l0bHksIHRoZW4gdGhlIHNvdW5kIHdpbGwgbm90IHN0b3AgcGxheWluZyAoaWYgbG9vcGlu
Zykgb3Igd2lsbCBzdG9wIHdoZW4gdGhlIGVuZCBvZiB0aGUgQXVkaW9CdWZmZXIKICAgICAvLyBo
YXMgYmVlbiByZWFjaGVkLgotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9lbmRUaW1lOyAvLyBpbiBz
ZWNvbmRzCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZW5kVGltZTsgLy8gaW4gc2Vjb25k
cwogICAgIGJvb2wgbV9oYXNFbmRlZEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRH
bG9iYWxTY29wZS5oCmluZGV4IDAwMjE5ZjJkMDI5MTgzMDkxMzQ0NTg0MWEwYTRjNzAxYWRkMzc1
MjcuLjZhZDA4ODg2YmJmNTcwNjc0MjFhNGIxYzI2YjY3YTAyNjIwM2RhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBmbG9hdCBtX3Nh
bXBsZVJhdGU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxKU0F1ZGlvV29ya2xldFByb2Nl
c3NvckNvbnN0cnVjdG9yPj4gbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YT4gbV9wZW5kaW5n
UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTsKLSAgICBPcHRpb25hbDxKU0M6OkpTTG9ja0hvbGRl
cj4gbV9sb2NrRHVyaW5nUmVuZGVyaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU0xvY2tI
b2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuY3BwCmluZGV4IGFmYjFhNWFiMjUzYzE2NTBiYThiYTIxZmRkZmEzZTdmMzMwMDg3NmYu
LmJhYzliMTRhYjFkNzQ0Y2M5M2IwNWI4NzcxMmJiYmRlNGFhZjA5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dvcmtsZXROb2RlKCkKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2Ny
aXB0b3JzLCBjb25zdCBPcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBk
b3VibGU+Pj4mIHBhcmFtVmFsdWVzKQordm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2Ny
aXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJp
bmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLT5tYXAoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAppbmRleCAy
NDBjNDVjZmE4ZTVjOTk3OWM0ZDY1YmVmN2FlYTRlNTlmM2Y2NWMxLi5jNTRmYzhiNzRlNzMxZjZk
NWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAogICAg
IHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYpOwotICAg
IHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURl
c2NyaXB0b3I+JiwgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmlu
ZywgZG91YmxlPj4+JiBwYXJhbVZhbHVlcyk7CisgICAgdm9pZCBpbml0aWFsaXplQXVkaW9QYXJh
bWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1W
YWx1ZXMpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1l
c3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaAppbmRleCA4MDc1NzIyYzUzMDYxYzhjNjZj
N2ExYTQ4OGRhNmYxN2VlOGEwZWM5Li5hMmE5ZGFiZmFlZDkxODljNDJhMGVkNjMzYzJlYTE4MmY3
NGJiNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE5vZGVPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlv
bnMgewogICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dHMgPSAxOwotICAgIE9wdGlvbmFsPFZlY3Rvcjx1bnNpZ25lZD4+IG91dHB1dENo
YW5uZWxDb3VudDsKLSAgICBPcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBkb3VibGU+Pj4gcGFyYW1ldGVyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1bnNp
Z25lZD4+IG91dHB1dENoYW5uZWxDb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiBwYXJhbWV0ZXJEYXRhOwogICAgIEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHByb2Nlc3Nvck9wdGlvbnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRl
eCAwZTNkM2Y4NzFjYzYzMjNlNjA0NzJiNmVlZjc2ZDYzZGQ5Y2MwZjMwLi44N2ZkYTZkZjNmNzBk
MDk0NWIwNGY4ZmRhYzBjMjQ5MTI3MzE3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTI4Myw3ICsyODMsNyBA
QCBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBCYXNlQXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaAogICAgIHJldHVybiBBdWRpb0J1ZmZlcjo6Y3JlYXRl
KEF1ZGlvQnVmZmVyT3B0aW9ucyB7bnVtYmVyT2ZDaGFubmVscywgbGVuZ3RoLCBzYW1wbGVSYXRl
fSk7CiB9CiAKLXZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJh
eUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nl
c3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywg
T3B0aW9uYWw8UmVmPERlZmVycmVkUHJvbWlzZT4+JiYgcHJvbWlzZSkKK3ZvaWQgQmFzZUF1ZGlv
Q29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZWY8RGVmZXJy
ZWRQcm9taXNlPj4mJiBwcm9taXNlKQogewogICAgIGlmIChwcm9taXNlICYmICghZG9jdW1lbnQo
KSB8fCAhZG9jdW1lbnQoKS0+aXNGdWxseUFjdGl2ZSgpKSkgewogICAgICAgICBwcm9taXNlLnZh
bHVlKCktPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkRvY3VtZW50IGlz
IG5vdCBmdWxseSBhY3RpdmUiX3MgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oCmluZGV4IGYzZTY4YjFiM2NmZmNkZTVlZTgwZWFl
M2RiN2Y5Mjc3YmU2ODg0YjYuLmZhYTNkN2UxM2Y2ZmJmNGY1NTg5MTg4NjQ2YWRkZTg4YzhhOGFl
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKTsKIAogICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRh
dGEgZGVjb2RpbmcuCi0gICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYm
LCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJh
Y2s+JiYsIE9wdGlvbmFsPFJlZjxEZWZlcnJlZFByb21pc2U+PiYmID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgc3RkOjpv
cHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNlPj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBB
dWRpb0xpc3RlbmVyJiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVuZXI7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGI2MGMyMmEzNzFjNWY5Mjg1NGJmYzM2ZTBjNWM4
MzY3YzY0NzVmNTIuLmJkZDAyZGRhZDE1ZjEzOTY5OTM3NjljYzBlMzIzZjMyMDA5M2UxNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlKTsKIAotRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxmbG9hdD4g
c2FtcGxlUmF0ZSkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxmbG9hdD4g
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUudmFsdWVfb3IoQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkpKQogewog
ICAgIEFTU0VSVChCYXNlQXVkaW9Db250ZXh0Ojppc1N1cHBvcnRlZFNhbXBsZVJhdGUoQXVkaW9E
ZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBG
dW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6ZGlzcGF0Y2hUb1JlbmRlcgogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOwogICAgIGlmICghaXNJbml0aWFs
aXplZCgpKQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAg
bV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCksIFdU
Rk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlh
bGl6ZWQoKSk7CiAgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpIHsKQEAgLTE3Nyw3ICsxNzcsNyBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aQogICAgIH0pOwogfQogCi12b2lkIERlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNJ
bml0aWFsaXplZCgpKTsKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKaW5kZXggOGNmMTQ4OTNlYzVjM2RlZmE0ZDkwZTA4YTU0YjNkM2ZkMGRmMDc4
Zi4uNGIwOGU1MDFjYzJiZDAxNWM5YzUwNmY1Nzg0Y2MwZGE0ZTg5N2MyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247
CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgT3B0aW9u
YWw8ZmxvYXQ+IHNhbXBsZVJhdGUgPSBzdGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0IERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBzYW1wbGVSYXRlID0gc3RkOjpudWxsb3B0KTsKICAgICB+RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlKCk7CiAKICAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKTsKQEAgLTQ0LDkgKzQ0LDkg
QEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Q7CiAgICAg
Ci0gICAgdm9pZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7Ci0gICAgdm9pZCBzdXNwZW5kKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgdm9p
ZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOworICAgIHZvaWQgc3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAg
ICAgdm9pZCBjbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBz
ZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggNjE4ZThkNThiMmNmNTRjZTE3ZjdmODAyNmFhNzkyNzU2ZTY0ZmE0OS4uZTFiMGYwMmUxYWQz
MzllMzQ1NzljNzZmNGIyNDI3YTFlMzNmNWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAg
ZGVzdGluYXRpb24oKS5zdGFydFJlbmRlcmluZyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5hdGlvbigp
LnN0YXJ0UmVuZGVyaW5nKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0NvbnRl
eHQ6OnJlc3VtZVJlbmRlcmluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
fQogICAgIEFTU0VSVChzdGF0ZSgpID09IEF1ZGlvQ29udGV4dFN0YXRlOjpTdXNwZW5kZWQpOwog
Ci0gICAgZGVzdGluYXRpb24oKS5zdGFydFJlbmRlcmluZyhbdGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
XShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBkZXN0aW5h
dGlvbigpLnN0YXJ0UmVuZGVyaW5nKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA3
Y2JhNDFjOTNjMzdiYmRmYWI2MDA5NDdjMTgxMzEwNTIyYjFhNWYzLi4zODYyZDA5NzQzZGIzZDA5
NmZhZmFkMmZmNDFkNDY3YTFjMjhmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVu
aW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCBjOTU0NjhkOWU3ZTVmZTU2ZTNmNzI5NTZmYjY3NjdmNTYwMzQyODU0
Li5lZmRkYTQ2YmQzYWE1MjZmYWNhZjhjZGExMDMzN2M1ZDA2NzJiN2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gQXVkaW9E
ZXN0aW5hdGlvbk5vZGUKICAgICB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgfQotICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5h
bDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFJlbmRlclJlc3VsdCB7IEZhaWx1cmUsIFN1
c3BlbmRlZCwgQ29tcGxldGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QZXJpb2RpY1dhdmVPcHRpb25zLmgKaW5kZXggNjYzYjI0YzUwZDE0M2FkZDMzYzNm
ZmE0NzFjZTk1MDgzNGQ0Nzc0Yy4uYjQ0YWM2NjY5OTFhMzM0NmNlNTk5Y2YxYzI2ZDRlNDgyMWU1
NTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2Rp
Y1dhdmVPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmVPcHRpb25zLmgKQEAgLTM0LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IFBlcmlvZGljV2F2ZU9wdGlvbnMgOiBQZXJpb2RpY1dhdmVDb25zdHJhaW50cyB7
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGZsb2F0Pj4gcmVhbDsKLSAgICBPcHRpb25hbDxWZWN0b3I8
ZmxvYXQ+PiBpbWFnOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGZsb2F0Pj4gcmVhbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxmbG9hdD4+IGltYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJPcHRpb25zLmgKaW5kZXggNzdjYmVmMzJkNzI4ODIxNzJlNTkzNjlkODA0MWExM2QxMTdh
OWM1OC4uNDMzNmE4ZjQwMmIzNmNmYjkxYjQ0MzFiNTA3YWY1Njk0Zjg2MTM3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck9wdGlvbnMuaApA
QCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2F2ZVNoYXBl
ck9wdGlvbnMgOiBBdWRpb05vZGVPcHRpb25zIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+
PiBjdXJ2ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxmbG9hdD4+IGN1cnZlOwogICAgIE92
ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUgeyBPdmVyU2FtcGxlVHlwZTo6Tm9uZSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKaW5kZXggOWRmYmNmYTU2
ZjQxZTE5MTVmYzk5NWY0ZmE0MzA3YjQ3MDQ2ZTc3MC4uNzE0YzFjYjA1MTgwNGVjZTE3ZDdjOWIy
ZGQ2ZGU0ZWYzYjc4ZDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElu
cHV0cy5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHMgewogICAgIGJvb2wgZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTQ2LDE3ICs0NiwxNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudElucHV0czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHM+IEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0czo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cz4gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1
dHMgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYXBwaWQ7CiAgICAgZGVjb2RlciA+PiBhcHBpZDsKICAgICBpZiAoIWFwcGlk
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1v
dmUoKmFwcGlkKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9y
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKICAg
ICBkZWNvZGVyID4+IGdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydDsKICAgICBpZiAoIWdvb2dsZUxl
Z2FjeUFwcGlkU3VwcG9ydCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50T3V0cHV0cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKaW5kZXggMjhmZjgzZmUxNGQ2OGI1
MGY4MjlmNjI0NzZhMGFlOTcyMDYxZWYzNy4uZDk5MTRjMmEwNjcwZTZjNzgxZGIzMTNhMDk0Njcz
ZjJmMmJmMWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRz
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEF1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMgewotICAgIE9wdGlvbmFsPGJvb2w+IGFw
cGlkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYXBwaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKaW5kZXggMGJmMjNm
MDI4NTZiODAwNzVhZGM2YWMwOWRkZTc0ZTFlZjM4M2FlMC4uMDczNDViMzdiZTMwZjU1ZGRmZTUw
ZDFhNmM3ZGMyZjE5YWY1ZTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIGF1dGhl
bnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cz4mJiBleHRlbnNpb25zKQorUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGljYXRvckRhdGEsIFJlZjxB
cnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxl
LCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHM+JiYg
ZXh0ZW5zaW9ucykKIHsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUoYXV0aGVudGlj
YXRvckRhdGEpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUodXNlckhhbmRsZSkpKTsKICAg
ICBpZiAoZXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJh
ZDY2NWUxMjgxODAzYTIyMjJmZTIzNmVlNjA1NGJiZGM5YWYxMDAuLjgwMTFmY2NkM2NkNDgwMDhk
NjkzN2UwM2NhNjk0YTdjYzJkNDJlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
aApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2Ugewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBj
cmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVu
dGljYXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzPiYmKTsKKyAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcmF3SWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1
c2VySGFuZGxlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYpOwogICAgIHZpcnR1YWwgfkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCAzZDU2NmY4N2FlYjlhMDE3ZGMwYTk5
OTc2YTc4NjFjMzI4ZTZkZTFhLi43MzQzNmE3MjIwZjdmMWVmNzEyMWI0MTMyZWMwNGUzODA4NWVm
M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGlj
IFN0cmluZyBwcm9jZXNzQXBwSWRFeHRlbnNpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0
SWQsIGNvbnN0IFN0cmluZyYKIH0KIAogLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGZvciBnb29n
bGUuY29tIGlzIHRvIGFsd2F5cyB0dXJuIG9uIHRoZSBsZWdhY3kgQXBwSUQgc3VwcG9ydC4KLXN0
YXRpYyBib29sIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oY29uc3Qg
T3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiYgZXh0ZW5zaW9u
cywgY29uc3QgU3RyaW5nJiBycElkKQorc3RhdGljIGJvb2wgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFw
cElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcnBJZCkKIHsK
ICAgICBpZiAocnBJZCAhPSAiZ29vZ2xlLmNvbSJfcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEuaAppbmRleCA2MWExYmJiMDI0YTZmYTUwMzFiYzEwOTRiODIzZDgx
NTdmNzY0ZWJjLi4yMzgwYTQyZDVmYTVhY2M5N2EwZjA2ZjU4NTFmODdkZWMzY2MwOTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YSB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiByYXdJZDsKIAogICAgIC8v
IEV4dGVuc2lvbnMKLSAgICBPcHRpb25hbDxib29sPiBhcHBpZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGFwcGlkOwogCiAgICAgLy8gQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGF0dGVzdGF0aW9uT2JqZWN0OwpAQCAtNTIsNyArNTIs
NyBAQCBzdHJ1Y3QgQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YSB7CiAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiB1c2VySGFuZGxlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRp
Y2F0b3JSZXNwb25zZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVBcnJheUJ1ZmZl
cihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyKQogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTQsMTEgKzExNCwx
MSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8QXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YT4gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+
IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gaXNFbXB0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRW1wdHk7CiAgICAgZGVjb2Rl
ciA+PiBpc0VtcHR5OwogICAgIGlmICghaXNFbXB0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBPcHRpb25hbDxBdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhPiBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghcmVzdWx0LnJhd0lkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Ym9vbD4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAg
ZGVjb2RlciA+PiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOwogICAgIGlmICgh
aXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTE1MCwxMyArMTUwLDEzIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFyZXN1bHQuc2lnbmF0dXJlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IGFwcGlkOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxib29sPj4gYXBwaWQ7CiAgICAgZGVjb2RlciA+PiBhcHBpZDsKICAgICBp
ZiAoIWFwcGlkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBp
ZCA9IFdURk1vdmUoKmFwcGlkKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNVc2VySGFuZGxlOwogICAgIGRlY29kZXIgPj4g
aGFzVXNlckhhbmRsZTsKICAgICBpZiAoIWhhc1VzZXJIYW5kbGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4
IDcyODQwNjc0OTM3ZjI5NGZiMzI1ZWM2YTg4NTY2Yjg5ZjJmZDAyNzMuLmJiOWZkNDY0OTYzYjcx
ZWUyNWUzNmVhODBmZTcwNTAxYWIyMmJjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5oCkBAIC02MCwxNiArNjAsMTYgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgewogICAgICAgICBpbnQ2NF90IGFsZzsKIAogICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBz
dHJ1Y3QgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhIHsKLSAgICAgICAgT3B0aW9uYWw8
QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PiBhdXRoZW50aWNhdG9yQXR0
YWNobWVudDsKICAgICAgICAgYm9vbCByZXF1aXJlUmVzaWRlbnRLZXkgeyBmYWxzZSB9OwogICAg
ICAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVzZXJW
ZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkIH07CiAKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlv
bkNyaXRlcmlhPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+
IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIFJwRW50aXR5IHJwOwpAQCAtNzgsMTQg
Kzc4LDE0IEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHsKICAg
ICBCdWZmZXJTb3VyY2UgY2hhbGxlbmdlOwogICAgIFZlY3RvcjxQYXJhbWV0ZXJzPiBwdWJLZXlD
cmVkUGFyYW1zOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdGltZW91dDsKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3I+IGV4Y2x1ZGVDcmVkZW50aWFsczsKLSAgICBPcHRpb25hbDxBdXRoZW50aWNh
dG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CisgICAgc3RkOjpv
cHRpb25hbDxBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IGF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb247CiAgICAgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSBhdHRlc3RhdGlvbjsK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0
cz4gZXh0ZW5zaW9uczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IGRlY29k
ZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0
ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFt
ZXRlcnM+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzIHJlc3VsdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKQEAgLTExNCwxNyArMTE0LDE3IEBAIHZv
aWQgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhOjplbmNvZGUoCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uQ3JpdGVyaWE+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhl
bnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0
b3JTZWxlY3Rpb25Dcml0ZXJpYT4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6
QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9y
U2VsZWN0aW9uQ3JpdGVyaWEgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ+PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+PiBhdXRoZW50aWNh
dG9yQXR0YWNobWVudDsKICAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50Owog
ICAgIGlmICghYXV0aGVudGljYXRvckF0dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmVzdWx0LmF1dGhlbnRpY2F0b3JBdHRhY2htZW50ID0gV1RGTW92ZSgqYXV0
aGVudGljYXRvckF0dGFjaG1lbnQpOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWlyZVJlc2lk
ZW50S2V5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVxdWlyZVJlc2lkZW50S2V5OwogICAg
IGRlY29kZXIgPj4gcmVxdWlyZVJlc2lkZW50S2V5OwogICAgIGlmICghcmVxdWlyZVJlc2lkZW50
S2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucnAuaWQpKQpAQCAtMTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHViS2V5Q3JlZFBhcmFtcykpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+
IHRpbWVvdXQ7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gdGlt
ZW91dDsKICAgICBkZWNvZGVyID4+IHRpbWVvdXQ7CiAgICAgaWYgKCF0aW1lb3V0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTc1LDE5ICsxNzUsMTkgQEAgT3B0aW9uYWw8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczoKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leGNsdWRlQ3JlZGVu
dGlhbHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPj4gYXV0aGVudGljYXRvclNlbGVj
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVj
dGlvbkNyaXRlcmlhPj4gYXV0aGVudGljYXRvclNlbGVjdGlvbjsKICAgICBkZWNvZGVyID4+IGF1
dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAgaWYgKCFhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uID0gV1RGTW92ZSgqYXV0aGVudGljYXRvclNlbGVjdGlvbik7CiAKLSAgICBPcHRpb25h
bDxBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlPiBhdHRlc3RhdGlvbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U+IGF0dGVzdGF0aW9uOwog
ICAgIGRlY29kZXIgPj4gYXR0ZXN0YXRpb247CiAgICAgaWYgKCFhdHRlc3RhdGlvbikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuYXR0ZXN0YXRpb24gPSBXVEZNb3Zl
KCphdHRlc3RhdGlvbik7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpvcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+PiBleHRlbnNp
b25zOwogICAgIGRlY29kZXIgPj4gZXh0ZW5zaW9uczsKICAgICBpZiAoIWV4dGVuc2lvbnMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgK
aW5kZXggMzJiYjcyOGFiZTgxNjY5NTJjZDU5NzUxY2NhOGQ5NGY4YzZkZmQ4Yi4uZDI5YmUwMzJh
Yjc3NjMyMWE3NWExMzYzY2M3OTMyMTYwZjU0NTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2Ny
aXB0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2Ny
aXB0b3IgewogICAgIFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBA
IC01Myw3ICs1Myw3IEBAIHZvaWQgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRp
YWxEZXNjcmlwdG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9y
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvciByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAppbmRleCBlYTI1MmE0ZjMzNWE2MjQ0
M2YxYmJhNWI4ZWUwN2JlZjk3MWVmNzY2Li5jY2JhMGMzZmE1MDZmMjdjMTQ0MDViZTM3MGJjOWRj
ODg3MTE1NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKQEAgLTM4
LDE1ICszOCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEJ1ZmZlclNv
dXJjZSBjaGFsbGVuZ2U7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVvdXQ7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91dDsKICAgICBtdXRhYmxlIFN0cmluZyBycElkOwog
ICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dDcmVkZW50aWFs
czsKICAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvbiB7IFVz
ZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkIH07Ci0gICAgT3B0aW9uYWw8QXV0
aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OwotICAgIG11dGFi
bGUgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNp
b25zOworICAgIHN0ZDo6b3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxBdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+IGV4dGVuc2lvbnM7CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IGRlY29k
ZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKIH07CiAKQEAgLTU5LDEx
ICs1OSwxMSBAQCB2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9u
YWw8dW5zaWduZWQ+PiB0aW1lb3V0OworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAgZGVjb2RlciA+PiB0aW1lb3V0OwogICAgIGlmICghdGlt
ZW91dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0LDEzICs3NCwxMyBAQCBP
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+IFB1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9uczo6ZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFs
bG93Q3JlZGVudGlhbHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0
aW9uOwogICAgIGRlY29kZXIgPj4gdXNlclZlcmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJWZXJp
ZmljYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJW
ZXJpZmljYXRpb24gPSBXVEZNb3ZlKCp1c2VyVmVyaWZpY2F0aW9uKTsKIAotICAgIE9wdGlvbmFs
PE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lv
bnM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lvbnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNpb25z
OwogICAgIGlmICghZXh0ZW5zaW9ucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQu
Y3BwCmluZGV4IDczZDI2M2ZjMjJjOTFlZDAzZDFmOTNiNjI4ZjBmODg3YzM1Y2E0ZmUuLjAxYjY5
Mzc4ZGFjOWJmN2Q0YzQxMzNiZTk2ZGM3NzI5ODA3Njk2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCB1aW50MTZfdCBwYXJzZU1lc3NhZ2VMZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBtZXNzYWdlLCBzaXplX3Qgb2Zmc2V0KQogCiB9IC8vIG5hbWVzcGFjZQogCi1PcHRpb25hbDxB
cGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgbWVzc2FnZSkKK3N0ZDo6b3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5k
OjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCiB7CiAg
ICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpIDwga0FwZHVNaW5IZWFkZXIgfHwgbWVzc2FnZS5zaXplKCkg
PiBrQXBkdU1heExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmgKaW5kZXgg
NmE5ZTZjYjRmZTMyY2FmYTdjMDU3OTdkMzRkZGZhMTIyMjk0YzdjNC4uMjgxMTFhNWE4NWQ1NDE3
NDcwMGJjZDlhZDFkYjMzYmEyNDk3OTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQXBkdUNvbW1hbmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFw
ZHVDb21tYW5kKTsKIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3RzIGFuIEFQRFUgY29tbWFuZCBm
cm9tIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgZGF0YS4KLSAgICBzdGF0aWMgT3B0aW9uYWw8QXBk
dUNvbW1hbmQ+IGNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwZHVDb21tYW5kPiBjcmVhdGVGcm9tTWVzc2FnZShjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKIAogICAgIEFwZHVDb21tYW5kKCkgPSBkZWZhdWx0OwogICAg
IEFwZHVDb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9hcGR1L0FwZHVSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2FwZHUvQXBkdVJlc3BvbnNlLmNwcAppbmRleCA5M2E1ZmFhZDRjMTVkNTVkY2I3N2Y3ZTgyZTgw
NDAwMzM5OThiNzM3Li43MGViNTk1NGM2ZGE1MWYwMzdhNjA2NThiOGE1ZmI1NjM2MDM5NDIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJl
c3BvbnNlLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIGFwZHUgewogCiAvLyBzdGF0
aWMKLU9wdGlvbmFsPEFwZHVSZXNwb25zZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2Fn
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitzdGQ6Om9wdGlvbmFsPEFwZHVSZXNwb25z
ZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpCiB7CiAgICAgLy8gSW52YWxpZCBtZXNzYWdlIHNpemUsIGRhdGEgaXMgYXBwZW5kZWQg
Ynkgc3RhdHVzIGJ5dGUuCiAgICAgaWYgKGRhdGEuc2l6ZSgpIDwgMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuaAppbmRleCA2MzU1
Yjg0Yjk1ZWQ1OTkxZTBiY2Q5Y2Y2ZjA1NDU4MTU5MzhkYjExLi5kZjcxMjM1YmZiZmJmZGJiZWI1
MjA2YjA1MTQzZTAzYTg3ZmEwYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgQVBEVSByZXNwb25zZSBmcm9tIHRoZSBzZXJpYWxp
emVkIG1lc3NhZ2UuCi0gICAgc3RhdGljIE9wdGlvbmFsPEFwZHVSZXNwb25zZT4gY3JlYXRlRnJv
bU1lc3NhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBcGR1UmVzcG9uc2U+IGNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSk7CiAKICAgICBBcGR1UmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
U3RhdHVzKTsKICAgICBBcGR1UmVzcG9uc2UoQXBkdVJlc3BvbnNlJiYgdGhhdCkgPSBkZWZhdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JS
ZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFk
ZXIuY3BwCmluZGV4IGVlNTgzMjBhZTM4ZTlhMTljNDI2ZDlkNmRiZjBhYTc2N2Q3M2UzYzUuLjEz
YzgwZmFjYmNkYjNkYWQ0MTIyMDkzNzVmNmY5ZDQ5NTdkODk5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKQEAgLTgwLDEw
ICs4MCwxMCBAQCBDQk9SUmVhZGVyOjp+Q0JPUlJlYWRlcigpCiB9CiAKIC8vIHN0YXRpYwotT3B0
aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNv
ZGVyRXJyb3IqIGVycm9yQ29kZU91dCwgaW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9u
YWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVy
RXJyb3IqIGVycm9yQ29kZU91dCwgaW50IG1heE5lc3RpbmdMZXZlbCkKIHsKICAgICBDQk9SUmVh
ZGVyIHJlYWRlcihkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpOwotICAgIE9wdGlvbmFsPENCT1JW
YWx1ZT4gZGVjb2RlZENib3IgPSByZWFkZXIuZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBkZWNvZGVkQ2JvciA9IHJlYWRlci5kZWNvZGVD
Qk9SKG1heE5lc3RpbmdMZXZlbCk7CiAKICAgICBpZiAoZGVjb2RlZENib3IpCiAgICAgICAgIHJl
YWRlci5jaGVja0V4dHJhbmVvdXNEYXRhKCk7CkBAIC05NSw3ICs5NSw3IEBAIE9wdGlvbmFsPENC
T1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZChjb25zdCBCeXRlcyYgZGF0YSwgRGVjb2RlckVycm9y
KiBlcnJvckNvZGVPCiAgICAgcmV0dXJuIGRlY29kZWRDYm9yOwogfQogCi1PcHRpb25hbDxDQk9S
VmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6
b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVDQk9SKGludCBtYXhOZXN0aW5n
TGV2ZWwpCiB7CiAgICAgaWYgKG1heE5lc3RpbmdMZXZlbCA8IDAgfHwgbWF4TmVzdGluZ0xldmVs
ID4ga0NCT1JNYXhEZXB0aCkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6
VG9vTXVjaE5lc3Rpbmc7CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBDQk9SUmVhZGVyOjpyZWFk
VmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90KiB2
YWwKICAgICByZXR1cm4gY2hlY2tNaW5pbWFsRW5jb2RpbmcoYWRkaXRpb25hbEJ5dGVzLCBpbnRE
YXRhKTsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRv
TmVnYXRpdmUodWludDY0X3QgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJl
YWRlcjo6ZGVjb2RlVmFsdWVUb05lZ2F0aXZlKHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFu
Z2VJbnRlZ2VyVmFsdWU7CkBAIC0xODMsNyArMTgzLDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBD
Qk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3QgdmFsdWUpCiAgICAgcmV0
dXJuIENCT1JWYWx1ZSgtc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIC0gMSk7CiB9CiAKLU9w
dGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2
NF90IHZhbHVlKQorc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZVZh
bHVlVG9VbnNpZ25lZCh1aW50NjRfdCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSB7CiAg
ICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpPdXRPZlJhbmdlSW50ZWdlclZhbHVl
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVj
b2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVlKQogICAgIHJldHVybiBDQk9SVmFsdWUo
c3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKIH0KIAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBD
Qk9SUmVhZGVyOjpyZWFkU2ltcGxlVmFsdWUodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0
X3QgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBs
ZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90IHZhbHVlKQogewogICAgIC8v
IEZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuCiAgICAgaWYgKGFkZGl0
aW9uYWxJbmZvID4gMjQgJiYgYWRkaXRpb25hbEluZm8gPCAyOCkgewpAQCAtMjE0LDcgKzIxNCw3
IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4
X3QgYWRkaXRpb25hbEluZm8sIHVpbnQ2NF90CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51
bUJ5dGVzKQorc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTdHJpbmco
dWludDY0X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYgKCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewog
ICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpA
QCAtMjMyLDcgKzIzMiw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFN0
cmluZyh1aW50NjRfdCBudW1CeXRlcykKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1P
cHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRCeXRlcyh1aW50NjRfdCBudW1CeXRl
cykKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0
X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYgKCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAg
ICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwpAQCAtMjQ3
LDExICsyNDcsMTEgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXMo
dWludDY0X3QgbnVtQnl0ZXMpCiAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JCeXRl
U3RyaW5nKSk7CiB9CiAKLU9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JB
cnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpCitzdGQ6Om9wdGlvbmFs
PENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGlu
dCBtYXhOZXN0aW5nTGV2ZWwpCiB7CiAgICAgQ0JPUlZhbHVlOjpBcnJheVZhbHVlIGNib3JBcnJh
eTsKICAgICB3aGlsZSAobGVuZ3RoLS0gPiAwKSB7Ci0gICAgICAgIE9wdGlvbmFsPENCT1JWYWx1
ZT4gY2JvckVsZW1lbnQgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gY2JvckVsZW1lbnQgPSBkZWNvZGVDQk9SKG1heE5l
c3RpbmdMZXZlbCAtIDEpOwogICAgICAgICBpZiAoIWNib3JFbGVtZW50KQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY2JvckFycmF5LmFwcGVuZChXVEZNb3ZlKGNi
b3JFbGVtZW50LnZhbHVlKCkpKTsKQEAgLTI1OSwxMiArMjU5LDEyIEBAIE9wdGlvbmFsPENCT1JW
YWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhO
ZXN0aW5nTGV2CiAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJheSkpOwogfQog
Ci1PcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRDQk9STWFwKHVpbnQ2NF90IGxl
bmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbCkKK3N0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9S
UmVhZGVyOjpyZWFkQ0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwp
CiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIHdoaWxlIChsZW5ndGgt
LSA+IDApIHsKLSAgICAgICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBrZXkgPSBkZWNvZGVDQk9SKG1h
eE5lc3RpbmdMZXZlbCAtIDEpOwotICAgICAgICBPcHRpb25hbDxDQk9SVmFsdWU+IHZhbHVlID0g
ZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwgLSAxKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxD
Qk9SVmFsdWU+IGtleSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiB2YWx1ZSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xl
dmVsIC0gMSk7CiAgICAgICAgIGlmICgha2V5IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vY2Jvci9DQk9SUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUlJlYWRlci5oCmluZGV4IDdmYmYzMzU5ZTI1ODM5ZWJiNmEyM2JmZDgwYmE2ZWRl
NDJkMTlhZjAuLjE2MTY0ZGVkNGU0NWU3YmM0YjgwOGZkZjY4ZWJlOGJmY2Y0Nzc1ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuaApA
QCAtMTAxLDIyICsxMDEsMjIgQEAgcHVibGljOgogICAgIC8vIENCT1IgZGF0YS0gdGhlbiBhbiBl
bXB0eSBvcHRpb25hbCBpcyByZXR1cm5lZC4gT3B0aW9uYWwgfGVycm9yQ29kZU91dHwKICAgICAv
LyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBhYm91dAogICAgIC8vIGRlY29kaW5nIGZhaWx1cmVzLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBPcHRpb25hbDxDQk9SVmFsdWU+IHJlYWQoY29uc3QgQnl0ZXMmLCBEZWNvZGVy
RXJyb3IqIGVycm9yQ29kZU91dCA9IG51bGxwdHIsIGludCBtYXhOZXN0aW5nTGV2ZWwgPSBrQ0JP
Uk1heERlcHRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDQk9S
VmFsdWU+IHJlYWQoY29uc3QgQnl0ZXMmLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU91dCA9IG51
bGxwdHIsIGludCBtYXhOZXN0aW5nTGV2ZWwgPSBrQ0JPUk1heERlcHRoKTsKIAogICAgIC8vIFRy
YW5zbGF0ZXMgZXJyb3JzIHRvIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2VzLgogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBlcnJvckNvZGVUb1N0cmluZyhEZWNvZGVyRXJyb3IgZXJyb3JDb2Rl
KTsKIAogcHJpdmF0ZToKICAgICBDQk9SUmVhZGVyKEJ5dGVzOjpjb25zdF9pdGVyYXRvciwgY29u
c3QgQnl0ZXM6OmNvbnN0X2l0ZXJhdG9yKTsKLSAgICBPcHRpb25hbDxDQk9SVmFsdWU+IGRlY29k
ZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBkZWNv
ZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3QgdmFsdWUpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1
ZT4gZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVlKTsKLSAgICBPcHRpb25hbDxD
Qk9SVmFsdWU+IHJlYWRTaW1wbGVWYWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRf
dCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZUNCT1IoaW50IG1h
eE5lc3RpbmdMZXZlbCk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+IGRlY29kZVZhbHVl
VG9OZWdhdGl2ZSh1aW50NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxDQk9SVmFsdWU+
IGRlY29kZVZhbHVlVG9VbnNpZ25lZCh1aW50NjRfdCB2YWx1ZSk7CisgICAgc3RkOjpvcHRpb25h
bDxDQk9SVmFsdWU+IHJlYWRTaW1wbGVWYWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50
NjRfdCB2YWx1ZSk7CiAgICAgYm9vbCByZWFkVmFyaWFkaWNMZW5ndGhJbnRlZ2VyKHVpbnQ4X3Qg
YWRkaXRpb25hbEluZm8sIHVpbnQ2NF90KiB2YWx1ZSk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVl
PiByZWFkQnl0ZXModWludDY0X3QgbnVtQnl0ZXMpOwotICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4g
cmVhZFN0cmluZyh1aW50NjRfdCBudW1CeXRlcyk7Ci0gICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBy
ZWFkQ0JPUkFycmF5KHVpbnQ2NF90IGxlbmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbCk7Ci0gICAg
T3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhO
ZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQnl0ZXModWlu
dDY0X3QgbnVtQnl0ZXMpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkU3RyaW5n
KHVpbnQ2NF90IG51bUJ5dGVzKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENCT1JWYWx1ZT4gcmVhZENC
T1JBcnJheSh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q0JPUlZhbHVlPiByZWFkQ0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhO
ZXN0aW5nTGV2ZWwpOwogICAgIGJvb2wgY2FuQ29uc3VtZSh1aW50NjRfdCBieXRlcyk7CiAgICAg
dm9pZCBjaGVja0V4dHJhbmVvdXNEYXRhKCk7CiAgICAgYm9vbCBjaGVja0R1cGxpY2F0ZUtleShj
b25zdCBDQk9SVmFsdWUmIG5ld0tleSwgY29uc3QgQ0JPUlZhbHVlOjpNYXBWYWx1ZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3Bw
CmluZGV4IDhjZWY0ZWFiY2M5ZjMwZTZlYjgwYjFlYTY4MWMyODUzYmIzNjMxMTIuLjcxZjU4YzAy
NmFiYmRkNzIxYTVmYThjNjI0OTMzZTk4NzFkODkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRlci5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgQ0JPUldyaXRlcjo6fkNCT1JXcml0ZXIoKQogfQogCiAvLyBzdGF0aWMKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gQ0JPUldyaXRlcjo6d3JpdGUoY29uc3QgQ0JPUlZhbHVlJiBub2RlLCBz
aXplX3QgbWF4TmVzdGluZ0xldmVsKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENC
T1JXcml0ZXI6OndyaXRlKGNvbnN0IENCT1JWYWx1ZSYgbm9kZSwgc2l6ZV90IG1heE5lc3RpbmdM
ZXZlbCkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY2JvcjsKICAgICBDQk9SV3JpdGVyIHdyaXRl
cigmY2Jvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Ni
b3IvQ0JPUldyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NC
T1JXcml0ZXIuaAppbmRleCBiNTI1NjE3Njg2YWE5NWUyN2M0MWJlNTFiNjc1YmU1MGU5NmMwMmQ5
Li41Zjk0NmMxMDA1NWZjNTU2MDM4MjllNjkzNGM5YmE4MDZjYzllZTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3JpdGVyLmgKQEAgLTg3LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgIC8vIGFycmF5cy9tYXBzIHRoYXQgaGFzIHRvIGJlIHRyYXZl
cnNlZCB0byByZWFjaCB0aGUgbW9zdCBuZXN0ZWQgQ0JPUlZhbHVlCiAgICAgLy8gY29udGFpbmVk
IGluIHxub2RlfC4gUHJpbWl0aXZlIHZhbHVlcyBhbmQgZW1wdHkgY29udGFpbmVycyBoYXZlIG5l
c3RpbmcKICAgICAvLyBkZXB0aHMgb2YgMC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB3cml0ZShjb25zdCBDQk9SVmFsdWUmLCBzaXplX3QgbWF4
TmVzdGluZ0xldmVsID0ga0RlZmF1bHRNYXhOZXN0aW5nRGVwdGgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gd3JpdGUoY29uc3QgQ0JP
UlZhbHVlJiwgc2l6ZV90IG1heE5lc3RpbmdMZXZlbCA9IGtEZWZhdWx0TWF4TmVzdGluZ0RlcHRo
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQk9SV3JpdGVyKFZlY3Rvcjx1aW50OF90Piop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0F1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmgKaW5kZXggMDBlNTU3NTQyM2M1
Yjk3OWI1MTg0OGIyNDljZTQ4M2NiNzMyZGZhYy4uYzA2M2M0ZjVjOTM1Zjk3M2RjMTE1NDAyMDM1
OTdjNTg1NmMzNGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0F1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZS5oCkBA
IC01NSwxNyArNTUsMTcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RkU2V0PFByb3RvY29sVmVy
c2lvbj4mIHZlcnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uczsgfQogICAgIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYWFndWlkKCkgY29uc3QgeyByZXR1cm4gbV9hYWd1aWQ7IH0KLSAg
ICBjb25zdCBPcHRpb25hbDx1aW50MzJfdD4mIG1heE1zZ1NpemUoKSBjb25zdCB7IHJldHVybiBt
X21heE1zZ1NpemU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBwaW5Q
cm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGluUHJvdG9jb2xzOyB9Ci0gICAgY29uc3QgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBleHRlbnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9leHRl
bnNpb25zOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIG1heE1zZ1NpemUo
KSBjb25zdCB7IHJldHVybiBtX21heE1zZ1NpemU7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4mIHBpblByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9waW5Qcm90
b2NvbHM7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiYgZXh0ZW5z
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uczsgfQogICAgIGNvbnN0IEF1dGhlbnRp
Y2F0b3JTdXBwb3J0ZWRPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
OyB9CiAKIHByaXZhdGU6CiAgICAgU3RkU2V0PFByb3RvY29sVmVyc2lvbj4gbV92ZXJzaW9uczsK
ICAgICBWZWN0b3I8dWludDhfdD4gbV9hYWd1aWQ7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG1f
bWF4TXNnU2l6ZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1fcGluUHJvdG9jb2xz
OwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX2V4dGVuc2lvbnM7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gbV9tYXhNc2dTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBtX3BpblByb3RvY29sczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBtX2V4dGVuc2lvbnM7CiAgICAgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnMgbV9v
cHRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwCmluZGV4IGY4ZGY3NWNh
MGY3Y2JkMGVmYjliOTQ1OWZiNDYxMTY4MDA4NzdkODAuLjVjYmRlOTZmZDFlMGU0MmEwMDg5YWFh
MzVhNDA5MjA3ODU4NjQyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAKQEAgLTg3
LDcgKzg3LDcgQEAgc3RhdGljIENCT1JWYWx1ZSBjb252ZXJ0RGVzY3JpcHRvclRvQ0JPUihjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYgZGUKICAgICByZXR1cm4gQ0JPUlZhbHVl
KFdURk1vdmUoY2JvckRlc2NyaXB0b3JNYXApKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFVWQXZh
aWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluKQorVmVj
dG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0
b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgc3RkOjpvcHRpb25hbDxQ
aW5QYXJhbWV0ZXJzPiBwaW4pCiB7CiAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBjYm9yTWFwOwog
ICAgIGNib3JNYXBbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZShoYXNoKTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBWZWN0b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9S
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgYwogICAgIHJldHVybiBjYm9yUmVxdWVzdDsK
IH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJpbGl0eSwgT3B0aW9uYWw8
UGluUGFyYW1ldGVycz4gcGluKQorVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJl
cXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFVWQXZhaWxhYmlsaXR5IHV2Q2FwYWJp
bGl0eSwgc3RkOjpvcHRpb25hbDxQaW5QYXJhbWV0ZXJzPiBwaW4pCiB7CiAgICAgQ0JPUlZhbHVl
OjpNYXBWYWx1ZSBjYm9yTWFwOwogICAgIGNib3JNYXBbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1
ZShvcHRpb25zLnJwSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggOWEy
MTU1MzlmZmM4ZWU0OWIxODY5ODQ3NjQ3YTI0YjliMjIyMTdjOS4uN2NiMmIzMjVhMWM2N2YwYmY0
ZGRjY2VhZDRlZDcwODkyYzk5MzQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
CkBAIC01NCwxMyArNTQsMTMgQEAgc3RhdGljIFByb3RvY29sVmVyc2lvbiBjb252ZXJ0U3RyaW5n
VG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIHJldHVybiBQcm90
b2NvbFZlcnNpb246OmtVbmtub3duOwogfQogCi1PcHRpb25hbDxjYm9yOjpDQk9SVmFsdWU+IGRl
Y29kZVJlc3BvbnNlTWFwKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9w
dGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpbkJ1ZmZlcikKIHsKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25z
ZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVz
cG9uc2VDb2RlOjprU3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5z
aXplKCkgLSAxIH07Ci0gICAgT3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6
Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8Q0JPUj4gZGVjb2Rl
ZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIpOwogICAgIGlmICghZGVj
b2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRlY29kZWRSZXNwb25zZTsKQEAgLTEyMSw3ICsx
MjEsNyBAQCBSZWZQdHI8QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U+IHJlYWRDVEFQ
TWFrZUNyZWRlbnRpYWxSZXNwb25zZShjb25zdCBWZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBhdXRvIGF0dFN0bXQgPSBpdC0+c2Vjb25kLmNsb25lKCk7CiAKLSAgICBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGF0dGVzdGF0aW9uT2JqZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBhdHRlc3RhdGlvbk9iamVjdDsKICAgICBpZiAoYXR0ZXN0YXRpb24gPT0g
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSkgewogICAgICAgICAvLyBUaGUg
cmVhc29uIHdoeSB3ZSBjYW4ndCBkaXJlY3RseSBwYXNzIGF1dGhlbnRpY2F0b3JEYXRhL2Zvcm1h
dC9hdHRTdG10IHRvIGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QKICAgICAgICAgLy8gaXMgdGhhdCB0
aGV5IGFyZSBDQk9SVmFsdWUgaW5zdGVhZCBvZiB0aGUgcmF3IHR5cGUuCkBAIC0xOTgsNyArMTk4
LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZENUQVBHZXRB
c3NlcnRpb25SZXNwb25zZShjb25zdCBWZWN0b3IKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAK
LU9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jl
c3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6Om9wdGlvbmFsPEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVj
b2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmgKaW5kZXggMGUxM2FiZGYzOTI5ZDU5MTcyNzczMWNkNmMyZTI5NTRj
MDY4OTEyMy4uZTRjNmQ1ZTI0YWFkY2RjNTgxZGNkMzY3NzkzMmJlZTYwOTEzZGI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Rl
dmljZVJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAKIC8vIENUQVAgcHJvdG9j
b2wsIG51bGwgb3B0aW9uYWwgaXMgcmV0dXJuZWQuCiBuYW1lc3BhY2UgZmlkbyB7CiAKLU9wdGlv
bmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CitzdGQ6Om9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKIC8vIFBhcnNlcyByZXNwb25zZSBjb2RlIGZyb20g
cmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSB0aGUgYXV0aGVudGljYXRvci4gSWYKIC8vIHVua25vd24g
cmVzcG9uc2UgY29kZSB2YWx1ZSBpcyByZWNlaXZlZCwgdGhlbiBDVEFQMl9FUlJfT1RIRVIgaXMg
cmV0dXJuZWQuCkBAIC02MSw3ICs2MSw3IEBAIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRDVEFQR2V0QXNzZXJ0CiAKIC8v
IERlLXNlcmlhbGl6ZXMgQ0JPUiBlbmNvZGVkIHJlc3BvbnNlIHRvIEF1dGhlbnRpY2F0b3JHZXRJ
bmZvIHJlcXVlc3QgdG8KIC8vIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ugb2JqZWN0Lgot
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVh
ZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQ
R2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDA1NTNmY2IzZDAxZDBkMjQwNmM1NzU4Mzg4N2Uz
M2E4ZDA1Y2RhYzEuLjk5YTlmMmMzZTE4NDIxMzE0ZTIxNTdlZjFhNzMyMDJjNDk0ZmFlZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVz
c2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRNZXNzYWdlLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIGZpZG8gewogCiAvLyBz
dGF0aWMKLU9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVp
bnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQorc3RkOjpvcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1l
c3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5
cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBpZiAoZGF0YS5zaXplKCkg
PiBrSGlkTWF4TWVzc2FnZVNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04
MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3Jl
YXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljCiB9CiAKIC8vIHN0YXRpYwotT3B0
aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXpl
ZERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzZXJpYWxpemVkRGF0YSkKK3N0ZDo6b3B0aW9u
YWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERh
dGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzZXJpYWxpemVkRGF0YSkKIHsKICAgICBzaXplX3Qg
cmVtYWluaW5nU2l6ZSA9IDA7CiAgICAgaWYgKHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtIaWRQ
YWNrZXRTaXplIHx8IHNlcmlhbGl6ZWREYXRhLnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVhZGVy
U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkTWVzc2FnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0Zp
ZG9IaWRNZXNzYWdlLmgKaW5kZXggZDQ2ZmEwZjhkZmI4MjUyMzY0MDg4MTliZjg2NDcyMDc3MzBl
YjQ2YS4uMzcyOWU3MDhhMmNhNWFkMDVmYTc5YWIxYWEyMGJhMDMwZDJlZTAzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdl
LmgKQEAgLTQzLDEwICs0MywxMCBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBGaWRvSGlkTWVzc2Fn
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlkb0hpZE1lc3NhZ2UpOwogcHVibGljOgog
ICAgIC8vIFN0YXRpYyBmdW5jdGlvbnMgdG8gY3JlYXRlIENUQVAvVTJGIEhJRCBjb21tYW5kcy4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IGNyZWF0ZSh1aW50MzJfdCBjaGFu
bmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBjcmVhdGUodWludDMy
X3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKTsKIAogICAgIC8vIFJlY29uc3RydWN0IGEgbWVzc2FnZSBmcm9tIHNlcmlhbGl6ZWQg
bWVzc2FnZSBkYXRhLgotICAgIHN0YXRpYyBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gY3JlYXRl
RnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAKICAgICBGaWRvSGlkTWVzc2FnZShGaWRvSGlkTWVzc2Fn
ZSYmIHRoYXQpID0gZGVmYXVsdDsKICAgICBGaWRvSGlkTWVzc2FnZSYgb3BlcmF0b3I9KEZpZG9I
aWRNZXNzYWdlJiYgb3RoZXIpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5kZXggYWQyODliZmRjZGMyNTBjNjdkYTc2YWFjNjU5YTk3
ZTlkNGFkODBiNC4uOTE0MmFiYmM4YzY0ODE2MjAyOWExMjk3OWU4OTViNjcxMjc4MTBlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHgsIGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1cm4gcmF3S2V5OwogfQog
Ci1PcHRpb25hbDxDU3RyaW5nPiB2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjgoY29uc3QgU3RyaW5n
JiBwaW4pCitzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChj
b25zdCBTdHJpbmcmIHBpbikKIHsKICAgICBpZiAoIWhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhw
aW4pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlUGluQ29tbWFuZChTdWJjb21tYW5kIHN1YmNvbW1h
bmQsIEZ1bmN0aW9uPHZvaWQoQ0JPCiAKIFJldHJpZXNSZXNwb25zZTo6UmV0cmllc1Jlc3BvbnNl
KCkgPSBkZWZhdWx0OwogCi1PcHRpb25hbDxSZXRyaWVzUmVzcG9uc2U+IFJldHJpZXNSZXNwb25z
ZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIpCiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VN
YXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKQEAgLTEzMyw3ICsxMzMsNyBAQCBL
ZXlBZ3JlZW1lbnRSZXNwb25zZTo6S2V5QWdyZWVtZW50UmVzcG9uc2UoUmVmPENyeXB0b0tleUVD
PiYmIHBlZXJLZXkpCiB7CiB9CiAKLU9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlB
Z3JlZW1lbnRSZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNl
OjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQogewogICAgIGF1dG8gZGVj
b2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRN
YXApCkBAIC0xNDksNyArMTQ5LDcgQEAgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtl
eUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4KICAgICByZXR1
cm4gcGFyc2VGcm9tQ09TRShjb3NlS2V5KTsKIH0KIAotT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVz
cG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWx1
ZTo6TWFwVmFsdWUmIGNvc2VLZXkpCitzdGQ6Om9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNl
PiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2VGcm9tQ09TRShjb25zdCBDQk9SVmFsdWU6Ok1h
cFZhbHVlJiBjb3NlS2V5KQogewogICAgIC8vIFRoZSBDT1NFIGtleSBtdXN0IGJlIGEgUC0yNTYg
cG9pbnQuIFNlZQogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3Nl
Y3Rpb24tNy4xCkBAIC0xOTksNyArMTk5LDcgQEAgVG9rZW5SZXNwb25zZTo6VG9rZW5SZXNwb25z
ZShSZWY8V2ViQ29yZTo6Q3J5cHRvS2V5SE1BQz4mJiB0b2tlbikKIHsKIH0KIAotT3B0aW9uYWw8
VG9rZW5SZXNwb25zZT4gVG9rZW5SZXNwb25zZTo6cGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRv
S2V5QUVTJiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpCitzdGQ6
Om9wdGlvbmFsPFRva2VuUmVzcG9uc2U+IFRva2VuUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFdlYkNv
cmU6OkNyeXB0b0tleUFFUyYgc2hhcmVkS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVm
ZmVyKQogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVy
KTsKICAgICBpZiAoIWRlY29kZWRNYXApCkBAIC0yNDIsNyArMjQyLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IGVuY29kZUFzQ0JPUihjb25zdCBLZXlBZ3JlZW1lbnRSZXF1ZXN0JikKICAgICByZXR1cm4g
ZW5jb2RlUGluQ29tbWFuZChTdWJjb21tYW5kOjprR2V0S2V5QWdyZWVtZW50KTsKIH0KIAotT3B0
aW9uYWw8VG9rZW5SZXF1ZXN0PiBUb2tlblJlcXVlc3Q6OnRyeUNyZWF0ZShjb25zdCBDU3RyaW5n
JiBwaW4sIGNvbnN0IENyeXB0b0tleUVDJiBwZWVyS2V5KQorc3RkOjpvcHRpb25hbDxUb2tlblJl
cXVlc3Q+IFRva2VuUmVxdWVzdDo6dHJ5Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3Qg
Q3J5cHRvS2V5RUMmIHBlZXJLZXkpCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRz
IFNlY3Rpb24gNS41LjQgR2V0dGluZyBzaGFyZWRTZWNyZXQgZnJvbSBBdXRoZW50aWNhdG9yLgog
ICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxOTAx
MzAvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTkwMTMw
Lmh0bWwjZ2V0dGluZ1NoYXJlZFNlY3JldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1Bpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1Bpbi5oCmluZGV4IGY1YjFlY2EyZjU0YWIyNzJmNWY0ZDFmNTdjZGM1ODQ3MTI1MGIz
ODEuLjVjZTk1MTA5ZjRiNmI3Y2I3YzE3MmFhYTY1NGY4MDMwNzdkZTVmMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmgKQEAgLTg4LDcgKzg4LDcgQEAgV0VC
Q09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBlbmNvZGVDT1NFUHVibGljS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF8KIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNv
ZGVSYXdQdWJsaWNLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBYLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIFkpOwogCiAvLyB2YWxpZGF0ZUFuZENvbnZlcnRUb1VURjggY29udmVydCB0aGUgaW5w
dXQgdG8gYSBVVEY4IENTdHJpbmcgaWYgaXQgaXMgYSBzeW50YWN0aWNhbGx5IHZhbGlkIFBJTi4K
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRG
OChjb25zdCBTdHJpbmcmIHBpbik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPENTdHJp
bmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbik7CiAKIC8vIGtN
aW5CeXRlcyBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgKmJ5dGVzKiBvZiBQSU4gZGF0YSB0aGF0
IGEgQ1RBUDIgZGV2aWNlCiAvLyB3aWxsIGFjY2VwdC4gU2luY2UgdGhlIFBJTiBpcyBVVEYtOCBl
bmNvZGVkLCB0aGlzIGNvdWxkIGJlIGEgc2luZ2xlIGNvZGUKQEAgLTEwNiw3ICsxMDYsNyBAQCBz
dHJ1Y3QgUmV0cmllc1JlcXVlc3QgewogCiAvLyBSZXRyaWVzUmVzcG9uc2UgcmVmbGVjdHMgYW4g
YXV0aGVudGljYXRvcidzIHJlc3BvbnNlIHRvIGEgfFJldHJpZXNSZXF1ZXN0fC4KIHN0cnVjdCBS
ZXRyaWVzUmVzcG9uc2UgewotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZXRy
aWVzUmVzcG9uc2U+IHBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHJpZXNSZXNwb25zZT4gcGFyc2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CiAKICAgICAvLyByZXRyaWVzIGlzIHRoZSBudW1iZXIgb2YgUElO
IGF0dGVtcHRzIHJlbWFpbmluZyBiZWZvcmUgdGhlIGF1dGhlbnRpY2F0b3IKICAgICAvLyBsb2Nr
cy4KQEAgLTEyNSw4ICsxMjUsOCBAQCBzdHJ1Y3QgS2V5QWdyZWVtZW50UmVxdWVzdCB7CiAvLyB8
S2V5QWdyZWVtZW50UmVxdWVzdHwgYW5kIGlzIGFsc28gdXNlZCBhcyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUKIC8vIGF1dGhlbnRpY2F0b3IncyBlcGhlbWVyYWwga2V5Lgogc3RydWN0IEtleUFncmVl
bWVudFJlc3BvbnNlIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8S2V5QWdy
ZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxLZXlBZ3JlZW1lbnRSZXNwb25zZT4gcGFyc2VGcm9t
Q09TRShjb25zdCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IHBhcnNlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBwYXJzZUZyb21DT1NFKGNvbnN0IGNib3I6OkNCT1JW
YWx1ZTo6TWFwVmFsdWUmKTsKIAogICAgIFJlZjxXZWJDb3JlOjpDcnlwdG9LZXlFQz4gcGVlcktl
eTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiBjbGFzcyBUb2tlblJlcXVlc3Qgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuUmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFRva2VuUmVxdWVzdD4gdHJ5Q3JlYXRlKGNvbnN0
IENTdHJpbmcmIHBpbiwgY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5RUMmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxUb2tlblJlcXVlc3Q+IHRyeUNyZWF0ZShjb25z
dCBDU3RyaW5nJiBwaW4sIGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUVDJik7CiAgICAgVG9rZW5S
ZXF1ZXN0KFRva2VuUmVxdWVzdCYmKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBzaGFyZWRLZXkgcmV0
dXJucyB0aGUgc2hhcmVkIEVDREgga2V5IHRoYXQgd2FzIHVzZWQgdG8gZW5jcnlwdCB0aGUgUElO
LgpAQCAtMTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAvLyBuZWVkZWQgdG8gc2hvdyB1c2VyLXZl
cmlmaWNhdGlvbiBpbiBmdXR1cmUgb3BlcmF0aW9ucy4KIGNsYXNzIFRva2VuUmVzcG9uc2Ugewog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxUb2tlblJlc3BvbnNl
PiBwYXJzZShjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlBRVMmIHNoYXJlZEtleSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VG9rZW5SZXNwb25zZT4gcGFyc2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVT
JiBzaGFyZWRLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5CdWZmZXIpOwogCiAgICAgLy8g
cGluQXV0aCByZXR1cm5zIGEgcGluQXV0aCBwYXJhbWV0ZXIgZm9yIGEgcmVxdWVzdCB0aGF0IHdp
bGwgdXNlIHRoZSBnaXZlbgogICAgIC8vIGNsaWVudC1kYXRhIGhhc2guCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29u
c3RydWN0b3IuY3BwCmluZGV4IDQxMmIyOTVlMDA3ZGIzYTBhZjViMDZkMWIxZDA1NzhhZGQyMDRl
YzguLjExN2Y0MmY2OGVhY2E4ZjVlMzIyNGFjNTM5N2ZiYjZhNTA2ODc3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21t
YW5kQ29uc3RydWN0b3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBw
bGljCiAgICAgcmV0dXJuIGNvbW1hbmQuZ2V0RW5jb2RlZENvbW1hbmQoKTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxl
LCBib29sIGNoZWNrT25seSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Y29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlv
blBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKIHsKICAgICBp
ZiAoa2V5SGFuZGxlLnNpemUoKSA+IGtNYXhLZXlIYW5kbGVMZW5ndGgpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgaXNDb252ZXJ0aWJsZVRvVTJm
U2lnbkNvbW1hbmQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1
CiAgICAgcmV0dXJuIChyZXF1ZXN0LnVzZXJWZXJpZmljYXRpb24gIT0gVXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYgIXJlcXVlc3QuYWxsb3dDcmVkZW50aWFscy5pc0Vt
cHR5KCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0
ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdp
c3RlckNvbW1hbmQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0x
MDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZSZWdp
c3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGkKICAgICByZXR1cm4gY29uc3Ry
dWN0VTJmUmVnaXN0ZXJDb21tYW5kKHByb2R1Y2VScElkSGFzaCghYXBwSWQgPyByZXF1ZXN0LnJw
LmlkIDogYXBwSWQpLCBjbGllbnREYXRhSGFzaCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYgcmVxdWVzdCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImIGtleUhh
bmRsZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09u
bHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiByZXF1ZXN0LCBjb25zdCBQdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYga2V5SGFuZGxlKQogewogICAgIGlmIChrZXlIYW5k
bGUudHlwZSAhPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+CiAgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlNpZ25Db21tYW5kKHByb2R1Y2VScElkSGFz
aChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gsIGtleUhhbmRsZS5pZFZlY3RvciwgdHJ1
ZSAvKiBjaGVja09ubHkgKi8pOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZl
cnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gs
IGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgcmVxdWVzdCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNBcHBJZCkKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmIHJlcXVlc3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlz
QXBwSWQpCiB7CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzMSw3ICsxMzEsNyBAQCBWZWN0
b3I8dWludDhfdD4gY29uc3RydWN0Qm9ndXNVMmZSZWdpc3RyYXRpb25Db21tYW5kKCkKICAgICBy
ZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKGtC
b2d1c0FwcFBhcmFtLCBzaXplb2Yoa0JvZ3VzQXBwUGFyYW0pKSwgY29udmVydEJ5dGVzVG9WZWN0
b3Ioa0JvZ3VzQ2hhbGxlbmdlLCBzaXplb2Yoa0JvZ3VzQ2hhbGxlbmdlKSkpOwogfQogCi1TdHJp
bmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25h
bDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25zKQorU3Ry
aW5nIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oY29uc3Qgc3RkOjpv
cHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25z
KQogewogICAgIGlmICghZXh0ZW5zaW9ucykgewogICAgICAgICAvLyBBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmNyZWF0ZSBzaG91bGQgYWx3YXlzIHNldCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0
b3IuaAppbmRleCAyODQyNzYyZWQxYzQwZWQyNjRiOTAxYzU3NzEyM2MyMDgxZWE5ZDk2Li40Zjhh
YzQzMjVlOTVkM2I3ZjVhZWRhZTM1YmVmNDY4M2Q1ODUzYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5oCkBAIC01NSwyMCArNTUsMjAgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnZlcnRp
YmxlVG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3IKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJik7CiAKIC8vIEV4dHJhY3RzIEFQ
RFUgZW5jb2RlZCBVMkYgcmVnaXN0ZXIgY29tbWFuZCBmcm9tIFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVu
dERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29u
dmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0
YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
KTsKIAogLy8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiBjaGVjayBvbmx5IHNpZ24gY29tbWFu
ZCBmcm9tCiAvLyBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLiBJbnZva2VkIHdo
ZW4gVTJGIHJlZ2lzdGVyIG9wZXJhdGlvbiBpbmNsdWRlcyBrZXkKIC8vIGhhbmRsZXMgaW4gZXhj
bHVkZSBsaXN0LgotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252
ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVu
dERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKK1dF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZD
aGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNo
LCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKIAogLy8gRXh0cmFj
dHMgQVBEVSBlbmNvZGVkIFUyRiBzaWduIGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0
YUhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlzQXBwSWQgPSBmYWxzZSk7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRv
VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29u
c3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNBcHBJZCA9IGZhbHNlKTsKIAogV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9uQ29t
bWFuZCgpOwogCiAvLyBSZXR1cm5zICJodHRwczovL3d3dy5nc3RhdGljLmNvbS9zZWN1cml0eWtl
eS9vcmlnaW5zLmpzb24iIGFzIGFuIEFwcElEIHdoZW4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0
IGlzIHRydWUuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElk
U3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRJbnB1dHM+Jik7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvY2Vzc0dv
b2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mKTsKIAogfSAvLyBuYW1l
c3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZURldGFpbHMuaAppbmRleCAzOTAwNGRhZTgwYjk3Y2Y0MmI1ZmFmYTMwZjMwMjEx
ZjkwMmE1N2E0Li5iNGNlNTQ3MzllODBjNjZhZGU4NjgzNzJmMTU1NWQxZTBkMTc3NGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWls
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRh
aWxzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogCi0gICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCB1aW50NjRf
dCBjdXJyZW50VXNhZ2UsIE9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlvblRpbWUsIE9wdGlvbmFs
PFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lKQorICAgIERhdGFiYXNlRGV0YWlscyhjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZSwgdWludDY0X3QgY3VycmVudFVzYWdlLCBzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBjcmVhdGlvblRpbWUsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNhdGlvblRp
bWUpCiAgICAgICAgIDogbV9uYW1lKGRhdGFiYXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlO
YW1lKGRpc3BsYXlOYW1lKQogICAgICAgICAsIG1fZXhwZWN0ZWRVc2FnZShleHBlY3RlZFVzYWdl
KQpAQCAtODAsOCArODAsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KICAgICB1aW50NjRfdCBleHBlY3Rl
ZFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFVzYWdlOyB9CiAgICAgdWludDY0X3Qg
Y3VycmVudFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0KLSAgICBPcHRp
b25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRp
bWU7IH0KLSAgICBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRpb25UaW1lOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kaWZpY2F0aW9uVGltZTsgfQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgVGhyZWFkJiB0aHJl
YWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaAppbmRleCBkNzE2
ZmJmMDE1N2VmZjhlMThkY2Q2Y2ZiYmFiZjYyYmJhZmU4YmVlLi5lMjI4Mzk5OWZhODlhM2M2ZmY3
MTZjMTRjNTg5NGY1MzhmZDg0NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAg
ICBTUUxSZXN1bHRTZXQoKTsKIAogICAgIFJlZjxTUUxSZXN1bHRTZXRSb3dMaXN0PiBtX3Jvd3M7
Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gbV9pbnNlcnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dDY0X3Q+IG1faW5zZXJ0SWQ7CiAgICAgaW50IG1fcm93c0FmZmVjdGVkIHsgMCB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAppbmRleCAyYmM1OWVjZTIzZTA0NmNmMjJiYmQ4MzFiNWNlNjcyODNlOWQyY2Q0Li4x
NDkwN2M2YjI2YWY4MTY0ZWI1OGU5ZThjY2FhMDM4ODdmZTg2OGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAt
NzMsNyArNzMsNyBAQCBTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24oUmVmPERhdGFiYXNl
PiYmIGRhdGFiYXNlLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYQogCiBTUUxUcmFuc2FjdGlvbjo6
flNRTFRyYW5zYWN0aW9uKCkgPSBkZWZhdWx0OwogCi1FeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFu
c2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYWw8
VmVjdG9yPFNRTFZhbHVlPj4mJiBhcmd1bWVudHMsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFj
az4mJiBjYWxsYmFjaywgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYgY2FsbGJh
Y2tFcnJvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNv
bnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+
JiYgYXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJl
ZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmIGNhbGxiYWNrRXJyb3IpCiB7CiAgICAg
aWYgKCFtX2V4ZWN1dGVTcWxBbGxvd2VkIHx8ICFtX2RhdGFiYXNlLT5vcGVuZWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKaW5kZXggZDJj
ODA3OTY3ODE1NjEwZmVkNDZiYTZmZGY0ZjE0NjllZTk5MzgxNy4uNDVlNDg3MTZhMDY2ZDU3YzQ0
ZGU5MWMyZjg2YzkwZGVhMjIzMzFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxTUUxUcmFuc2FjdGlvbj4gY3JlYXRlKFJlZjxEYXRhYmFzZT4mJiwg
UmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYg
c3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmLCBS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKICAgICB+U1FM
VHJhbnNhY3Rpb24oKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGV4ZWN1dGVTcWwoY29uc3Qg
U3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1l
bnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBleGVjdXRlU3FsKGNvbnN0
IFN0cmluZyYgc3FsU3RhdGVtZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYg
YXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrPiYmKTsKIAogICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CiAgICAg
dm9pZCBwZXJmb3JtTmV4dFN0ZXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKaW5kZXggNzc5MjJj
YWNhZTBhNzM0NjI1MWU2NWZhYzg2NDM1NjcwZjViMjBmNy4uYjE4NjY2OGI2NjdlODQ2NWM3ODk4
OWEwMDA2YjZhMGY2ZDBkMjE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwdWJsaWM6CiAgICAgVHlwZUFubm90YXRpb24mIG9wZXJhdG9yPShjb25zdCBUeXBl
QW5ub3RhdGlvbiYpID0gZGVmYXVsdDsKICAgICBUeXBlQW5ub3RhdGlvbiYgb3BlcmF0b3I9KFR5
cGVBbm5vdGF0aW9uJiYgb3RoZXIpID0gZGVmYXVsdDsKIAotICAgIE9wdGlvbmFsPEFkZHJlc3NT
cGFjZT4gbGVmdEFkZHJlc3NTcGFjZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxBZGRyZXNz
U3BhY2U+IGxlZnRBZGRyZXNzU3BhY2UoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X2VtcHR5KTsKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPiht
X2lubmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKaW5kZXggY2NhZmVkYmVhNzMyNGNjYjg0YmE0
ZjZhMTJlODg1MTg0MGM4MzRlOS4uZTljMDQyYjYxYjllMmY4ZTc3ZGFkMzY1NjUxZjRkNjM1MGM1
NDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQmFzZVNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQmFzZVNlbWFudGljLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgICAgICBJbnB1dCwKICAgICAgICAgT3V0cHV0CiAgICAgfTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBj
b25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CiAKIHBy
aXZhdGU6CiAgICAgQ29kZUxvY2F0aW9uIG1fY29kZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0
SW5TZW1hbnRpYy5jcHAKaW5kZXggYTJhODMzMzIzMTE3Y2M0YmExNjE4ZjA4MWVjYWFlNDk0MDJm
NTI3NC4uYzNlNGRmMmVjMWI0MTRkMGNiODNjNjliMjc2NjI0NGI5YjZiNjcyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNl
bWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgQnVpbHRJblNl
bWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwg
Y29uc3QgSW50CiAgICAgfQogfQogCi1ib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlwZSkgY29uc3QKK2Jvb2wg
QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRl
ckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRU
eXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoICgqZW50cnlQb2ludFR5
cGUpIHsKICAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5T
ZW1hbnRpYy5oCmluZGV4IDMzYTExNjg1ZTUyZjEzM2UwNGYxZDMzYjM3NzU4Mjk4N2M5MGE5NGYu
LjI3ZWRmNGM3NjdiM2E1OTkzMjhkMzQ2Y2RmMTFhODM4MGQ4NGQ4ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRp
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1
aWx0SW5TZW1hbnRpYy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHcm91
cFRocmVhZElECiAgICAgfTsKIAotICAgIEJ1aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBPcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRl
eCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBCdWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJ
bmRleCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBCYXNlU2VtYW50aWMobG9jYXRpb24pCiAg
ICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKICAgICAgICAgLCBtX3RhcmdldEluZGV4KFdU
Rk1vdmUodGFyZ2V0SW5kZXgpKQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgQnVpbHRJ
blNlbWFudGljKEJ1aWx0SW5TZW1hbnRpYyYmKSA9IGRlZmF1bHQ7CiAKICAgICBWYXJpYWJsZSB2
YXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGU7IH0KLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4mIHRhcmdldEluZGV4KCkgeyByZXR1cm4gbV90YXJnZXRJbmRleDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+JiB0YXJnZXRJbmRleCgpIHsgcmV0dXJuIG1fdGFyZ2V0SW5kZXg7
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCdWlsdEluU2VtYW50aWMmIG90aGVyKSBj
b25zdAogICAgIHsKQEAgLTExOCwxMSArMTE4LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBi
b29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNz
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGly
ZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBl
PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURp
cmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9p
bnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFZhcmlhYmxlIG1fdmFy
aWFibGU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fdGFyZ2V0SW5kZXg7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbV90YXJnZXRJbmRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFT
VApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQ29uc3RhbnRFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAppbmRleCA5NGVlOWZjZjdlMDBiODBi
ZmEzYTYwYjlhYWJkOWVhN2JmOThiNDgzLi4zZDQxMzdlODViZmNjNTgxN2I3ZDI1ZmRmZjViNDA2
NGUwOGEzNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApAQCAtMTExLDcg
KzExMSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBDb25zdGFudEV4cHJl
c3Npb24mIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcmVzdWx0
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdDsKICAgICAgICAgZG91YmxlIHZh
bHVlOwogICAgICAgICB2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBJbnRlZ2VyTGl0
ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVy
YWwudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaAppbmRleCA1Y2MzYjdlYTIxZjY2MDBkZTY5MWEy
Yzg5ODU2OGY2NjljNzVkOTE0Li5jODgxYzM0MWFmZDgxMGYwNjM2ZGQ1N2Y5NmNlNzFjYTM2MmM1
M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBDb2RlTG9jYXRpb24gbV9jb2RlTG9jYXRpb247CiAgICAgUmVmUHRyPFVubmFt
ZWRUeXBlPiBtX3R5cGU7Ci0gICAgT3B0aW9uYWw8VHlwZUFubm90YXRpb24+IG1fdHlwZUFubm90
YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxUeXBlQW5ub3RhdGlvbj4gbV90eXBlQW5ub3RhdGlv
bjsKICAgICBLaW5kIG1fa2luZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRp
b24uaAppbmRleCA1Y2E5ZmM4NDExZGIyMGVhNWQ0ZmE0ZjY2NDZhMWU4YWM4OTNjYmRkLi5jZWIy
NGQyZTI4ZjYxY2ZiNWFkYzk0MmUyNjg4ZTM0YTcyMzcyOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBBU1QgewogY2xh
c3MgRnVuY3Rpb25EZWNsYXJhdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbihDb2RlTG9jYXRpb24gbG9jYXRpb24sIEF0
dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBl
bnRyeVBvaW50VHlwZSwgUmVmPFVubmFtZWRUeXBlPiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJp
YWJsZURlY2xhcmF0aW9ucyYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4m
JiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKKyAg
ICBGdW5jdGlvbkRlY2xhcmF0aW9uKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgQXR0cmlidXRlQmxv
Y2smJiBhdHRyaWJ1dGVCbG9jaywgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQ
b2ludFR5cGUsIFJlZjxVbm5hbWVkVHlwZT4gdHlwZSwgU3RyaW5nJiYgbmFtZSwgVmFyaWFibGVE
ZWNsYXJhdGlvbnMmJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2Vt
YW50aWMsIGJvb2wgaXNPcGVyYXRvciwgUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiAgICAgICAg
IDogbV9jb2RlTG9jYXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhX
VEZNb3ZlKGF0dHJpYnV0ZUJsb2NrKSkKICAgICAgICAgLCBtX2VudHJ5UG9pbnRUeXBlKGVudHJ5
UG9pbnRUeXBlKQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICBBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBtX2F0dHJpYnV0ZUJs
b2NrOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnlQb2ludFR5cGU7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2VudHJ5UG9pbnRUeXBlOyB9CiAgICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlw
ZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpA
QCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvZGVMb2NhdGlvbiBtX2Nv
ZGVMb2NhdGlvbjsKICAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJsb2NrOwotICAgIE9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOworICAgIHN0ZDo6b3B0aW9u
YWw8RW50cnlQb2ludFR5cGU+IG1fZW50cnlQb2ludFR5cGU7CiAgICAgYm9vbCBtX2lzT3BlcmF0
b3I7CiAgICAgUGFyc2luZ01vZGUgbV9wYXJzaW5nTW9kZTsKICAgICBSZWY8VW5uYW1lZFR5cGU+
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApp
bmRleCBmNjNiNDZkODhlMzI1OTgwOGIwMzdkZTIyN2Q2NWJlZTcwZTkyYTIwLi41MTAzZWM4ZDE4
MGM4YjU5Y2QxZGIxNGNmNWQ1NjdhYjA1MTY5ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC0xMjgsOCArMTI4LDggQEAgcHJpdmF0ZToKICAg
ICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sZWZ0VmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlh
YmxlRGVjbGFyYXRpb24+IG1fb2xkVmFsdWU7CiAgICAgVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFy
YXRpb24+IG1fbmV3VmFsdWU7Ci0gICAgT3B0aW9uYWw8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBt
X25ld1ZhbHVlRXhwcmVzc2lvbjsKLSAgICBPcHRpb25hbDxVbmlxdWVSZWY8RXhwcmVzc2lvbj4+
IG1fcmVzdWx0RXhwcmVzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVuaXF1ZVJlZjxFeHByZXNz
aW9uPj4gbV9uZXdWYWx1ZUV4cHJlc3Npb247CisgICAgc3RkOjpvcHRpb25hbDxVbmlxdWVSZWY8
RXhwcmVzc2lvbj4+IG1fcmVzdWx0RXhwcmVzc2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFT
VApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcAppbmRleCA5MzFmZmIxMjc3ZTA3Y2Fm
ODUyODI3YTUzOWU3NTE2ZGZmY2IyMmM5Li4yNDZlN2EyYmZmOGIxNGZkYjYwOGFhNDQ3ZGFjOGJi
N2Y4YzcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBib29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbgogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJj
ZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1E
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25z
dAorYm9vbCBSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0
aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJ
dGVtRGlyZWN0aW9uOjpJbnB1dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaAppbmRl
eCBlY2NiYjFiYjdiZmRhNDYwYjc2YzAwZjgyNzE5MmFmZDNkNTg1ZGU3Li5mOGQ1ZWQzN2U4YWI5
N2ZmN2E1OTAyZDdmMWVhZWJmYTY1NWVhYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRp
Yy5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0
YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRl
ckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFk
ZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1vZGUgbV9tb2RlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKaW5kZXggYjBh
MGRjOWFkOTg2Y2ZiN2ExNTUwNjEwMDlmNjJjZWM3ZWRjM2Q0YS4uMTRmMDE1Mzk0ZTFmNjZlYTY3
NDU3NDFkNzA3OTlkNmEyZDViZWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFt
ZWRUeXBlJiB1bm5hbWVkCiAgICAgcmV0dXJuIGRvd25jYXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNOdW1iZXIoKTsKIH0KIAotYm9vbCBT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1E
aXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVu
dHJ5UG9pbnRUeXBlPiYpIGNvbnN0Citib29sIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAog
ewogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5o
CmluZGV4IGM3ZDRkNWRkYjk2MjA3NGE0ODg3MTRkZmQ3ZGMyMzJmYWExZmI0NWIuLjY2MzllYzE5
NmY4OTk1YzIwOTVlZDFlMmMwNGY4OGZlODhkMWM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5
cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9w
dGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCmluZGV4IGJhNDlmNzlj
ZTMyYzNhZGFkOTExMGRjNzU1NWEyMTYzMDVjMGJiZjYuLjE2ZGM2NDk2NWIzMjMxNjU1MDllYzYx
Y2NlMmRiNGE5NjgwZWJkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBib29sIFN0YWdlSW5PdXRTZW1hbnRpYzo6aXNBY2NlcHRhYmxl
VHlwZShjb25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0CiAgICAgICAgIHx8IG5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5pc01hdHJpeCgpOwogfQogCi1ib29sIFN0YWdlSW5PdXRTZW1h
bnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiBlbnRyeVBvaW50
VHlwZSkgY29uc3QKK2Jvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFk
ZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0CiB7CiAgICAg
c3dpdGNoICgqZW50cnlQb2ludFR5cGUpIHsKICAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0
ZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCmluZGV4IDMxNjdjNmMyMjc1Njgx
ZDU1OWUyODlkMzNiZmQzOWZiZjRlMWRjMTUuLjMwZTIzY2FhNGQ3ZTIxMmY2MmEwYzUzNmE3ZTNh
YzlmNGExMzc5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29u
c3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rp
b24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKaW5k
ZXggZWY1Zjg4NzMxNzY0OTgyYmExNmU2OWQ3YWUyYmZjOWZjYTllYWY4Ni4uMjY1N2E4OTE2ZDM2
NjVkZGM2Y2RjZjg3OTJiMTQyMmFkM2VmZTk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaENhc2UuaApAQCAtNDMs
NyArNDMsNyBAQCBuYW1lc3BhY2UgQVNUIHsKIGNsYXNzIFN3aXRjaENhc2UgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTd2l0Y2hDYXNlKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8Q29uc3RhbnRFeHBy
ZXNzaW9uPiYmIHZhbHVlLCBCbG9jayYmIGJsb2NrKQorICAgIFN3aXRjaENhc2UoQ29kZUxvY2F0
aW9uIGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mJiB2YWx1ZSwg
QmxvY2smJiBibG9jaykKICAgICAgICAgOiBTdGF0ZW1lbnQobG9jYXRpb24sIEtpbmQ6OlN3aXRj
aENhc2UpCiAgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgLCBtX2Js
b2NrKFdURk1vdmUoYmxvY2spKQpAQCAtNTUsMTEgKzU1LDExIEBAIHB1YmxpYzoKICAgICBTd2l0
Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hDYXNlKFN3aXRj
aENhc2UmJikgPSBkZWZhdWx0OwogCi0gICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYg
dmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4
cHJlc3Npb24+JiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBCbG9jayYgYmxvY2so
KSB7IHJldHVybiBtX2Jsb2NrOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8Q29uc3RhbnRF
eHByZXNzaW9uPiBtX3ZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9u
PiBtX3ZhbHVlOwogICAgIEJsb2NrIG1fYmxvY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9s
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xF
bnRyeVBvaW50U2NhZmZvbGRpbmcuaAppbmRleCAwMTZhNTgxODA3N2JhNzBiZTUyYTg4MjlhMGUz
ZDA4OWNkYTkxYjY3Li4xYjU2Mjg4Y2JlYTI1NzFhZjFkMDlkMTUxMTIzMTU4MGJkNWViZTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTkzLDcgKzkz
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0cnVjdCBOYW1lZEJpbmRpbmcgewogICAgICAgICBNYW5n
bGVkU3RydWN0dXJlRWxlbWVudE5hbWUgZWxlbWVudE5hbWU7CiAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4OwotICAgICAgICBPcHRpb25hbDxMZW5ndGhJbmZvcm1hdGlvbj4gbGVuZ3RoSW5mb3JtYXRp
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoSW5mb3JtYXRpb24+IGxlbmd0aEluZm9y
bWF0aW9uOwogICAgIH07CiAgICAgc3RydWN0IE5hbWVkQmluZEdyb3VwIHsKICAgICAgICAgTWFu
Z2xlZFR5cGVOYW1lIHN0cnVjdE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
CmluZGV4IDdjY2Y1N2E1NmYwNGIzMzc4ZmRhYmQwYjgzNDNiZjMxMDhhYmNlMWYuLmMyYjQ1OTBh
NTVmYzMxN2IyNjAyMzFkZTM4YjQyMGZmYTY5N2RhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBTd2l0
Y2gKICAgICB9OwogCi0gICAgT3B0aW9uYWw8QnJlYWtDb250ZXh0PiBtX2N1cnJlbnRCcmVha0Nv
bnRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+IG1fY3VycmVudEJyZWFrQ29u
dGV4dDsKIAogICAgIFN0cmluZ0J1aWxkZXImIG1fc3RyaW5nQnVpbGRlcjsKICAgICBJbnRyaW5z
aWNzJiBtX2ludHJpbnNpY3M7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IG1fZW50cnlQb2ludFNjYWZmb2xk
aW5nOwogICAgIExheW91dCYgbV9sYXlvdXQ7CiAgICAgdW5zaWduZWQgbV92YXJpYWJsZUNvdW50
IHsgMCB9OwotICAgIE9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IG1fYnJlYWtPdXRPZkN1
cnJlbnRMb29wRWFybHlWYXJpYWJsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJs
ZU5hbWU+IG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZTsKICAgICBJbmRlbnRh
dGlvbjw0PiBtX2luZGVudCB7IDAgfTsKICAgICBIYXNoTWFwPEFTVDo6RXhwcmVzc2lvbiosIFZl
Y3RvcjxWYXJpYWJsZT4+IG1faG9pc3RlZFZhcmlhYmxlczsKIH07CkBAIC0zMzEsNyArMzMxLDcg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RmFsbHRocm91Z2gm
KQogCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoTG9vcENvbmRpdGlv
bkxvY2F0aW9uIGxvb3BDb25kaXRpb25Mb2NhdGlvbiwgQVNUOjpFeHByZXNzaW9uKiBjb25kaXRp
b25FeHByZXNzaW9uLCBBU1Q6OkV4cHJlc3Npb24qIGluY3JlbWVudCwgQVNUOjpTdGF0ZW1lbnQm
IGJvZHkpCiB7Ci0gICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+
IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwg
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOworICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9u
YWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4+IGxvb3BWYXJpYWJsZVNjb3BlKG1fYnJlYWtPdXRPZkN1
cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCkpOwogCiAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgKICAgICAgICAgbV9pbmRlbnQsICJib29sICIsICpt
X2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIsCkBAIC0z
NTAsNyArMzUwLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKExv
b3BDb25kaXRpb25Mb2NhdGlvbiBsb29wQ29uZGl0aW9uTG9jYXQKICAgICAgICAgfQogCiAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkbyB7XG4iKTsKLSAgICAgICAg
U2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVu
dEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpMb29wKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8
c3RkOjpvcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtD
b250ZXh0LCBCcmVha0NvbnRleHQ6Okxvb3ApOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIElu
ZGVudGF0aW9uU2NvcGUgZG9TY29wZShtX2luZGVudCk7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNo
Q2FzZSkKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiOlxuIik7CiAgICAgfSBlbHNl
CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9pbmRlbnQsICJkZWZhdWx0OlxuIik7
Ci0gICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1f
Y3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOworICAgIFNldEZvclNj
b3BlPHN0ZDo6b3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJy
ZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpTd2l0Y2gpOwogICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChzd2l0Y2hDYXNlLmJsb2NrKCkpOwogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODEyIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBuZWVkIHRv
IGJyZWFrIG9yIGZhbGx0aHJvdWdoLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcAppbmRleCBhYTNhNjk4NGI2MTZmNjVkMGIwYTAwYmY5ZjJiNTdkNGZiNDEz
YThlLi4zZmQyYzhhODdiYzY3YzlmZTYyY2UzZTY0NGE2NjRhODY0YzQ2NWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1
bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IGVudW0gY2xhc3MgU2FtcGxlVHlwZSB7CiAgICAgU2FtcGxlR3JhZAogfTsKIAotc3RhdGljIE9w
dGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTYW1wbGVUeXBlPiBzYW1wbGVUeXBlKGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lKQogewogICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZSIpCiAg
ICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGU7CkBAIC01MjgsMjIgKzUyOCwyMiBAQCB2
b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYQogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgY29u
c3QgTWFuZ2xlZFZhcmlhYmxlTmFtZSYgd2lkdGhOYW1lID0gYXJnc1tpbmRleF07CiAgICAgICAg
ICsraW5kZXg7Ci0gICAgICAgIE9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGhlaWdodE5h
bWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gaGVpZ2h0TmFt
ZTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSA+PSAyKSB7CiAg
ICAgICAgICAgICBoZWlnaHROYW1lID0gYXJnc1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4
OwogICAgICAgICB9Ci0gICAgICAgIE9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGRlcHRo
TmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBkZXB0aE5h
bWU7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgPj0gMykgewog
ICAgICAgICAgICAgZGVwdGhOYW1lID0gYXJnc1tpbmRleF07CiAgICAgICAgICAgICArK2luZGV4
OwogICAgICAgICB9Ci0gICAgICAgIE9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5hbWU+IGVsZW1l
bnRzTmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNYW5nbGVkVmFyaWFibGVOYW1lPiBlbGVt
ZW50c05hbWU7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAg
ICAgICAgICAgICBlbGVtZW50c05hbWUgPSBhcmdzW2luZGV4XTsKICAgICAgICAgICAgICsraW5k
ZXg7CiAgICAgICAgIH0KLSAgICAgICAgT3B0aW9uYWw8TWFuZ2xlZFZhcmlhYmxlTmFtZT4gbnVt
YmVyT2ZMZXZlbHNOYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmdsZWRWYXJpYWJsZU5h
bWU+IG51bWJlck9mTGV2ZWxzTmFtZTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRh
YmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKSB7CiAg
ICAgICAgICAgICBudW1iZXJPZkxldmVsc05hbWUgPSBhcmdzW2luZGV4XTsKICAgICAgICAgICAg
ICsraW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xDaGVja2VyLmNwcAppbmRleCA3MjFjYmEzMGFjMTljNWY0NzZhYzJkM2UxMTMwZTRjMTNj
ZDUxNjZmLi43YWEyN2E2YzhhOThjM2U1YmY2N2ZmMjljMjJhYmE4NjA4M2YyZDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5j
cHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBlbnVtIGNsYXNzIEFjY2VwdGFiaWxpdHkgewogICAgIE5v
CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiBy
ZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxv
Y2F0aW9uLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBl
Pj4mIHR5cGVzLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0YW50aWF0
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSZXNvbHZpbmdUeXBlPj4mIHR5cGVzLCBjb25zdCBJ
bnRyaW5zaWNzJiBpbnRyaW5zaWNzKQogewogICAgIGlmIChuYW1lID09ICJvcGVyYXRvcj09IiAm
JiB0eXBlcy5zaXplKCkgPT0gMikgewogICAgICAgICBhdXRvIGFjY2VwdGFiaWxpdHkgPSBbXShS
ZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKSAtPiBBY2NlcHRhYmlsaXR5IHsKQEAgLTI1MSw3
ICsyNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
PiByZXNvbHZlQnlJbnN0YW50aWF0aW9uKGNvbnN0IFN0cgogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrU2VtYW50aWNzKFZlY3RvcjxFbnRyeVBvaW50SXRl
bT4mIGlucHV0SXRlbXMsIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIG91dHB1dEl0ZW1zLCBjb25z
dCBPcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0IElu
dHJpbnNpY3MmIGludHJpbnNpY3MpCitzdGF0aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8
RW50cnlQb2ludEl0ZW0+JiBpbnB1dEl0ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRw
dXRJdGVtcywgY29uc3Qgc3RkOjpvcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQ
b2ludFR5cGUsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCiB7CiAgICAgewogICAgICAg
ICBhdXRvIGNoZWNrRHVwbGljYXRlU2VtYW50aWNzID0gWyZdKGNvbnN0IFZlY3RvcjxFbnRyeVBv
aW50SXRlbT4mIGl0ZW1zKSAtPiBib29sIHsKQEAgLTQwMCw4ICs0MDAsOCBAQCBwcml2YXRlOgog
ICAgICAgICBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlOwogICAgICAgICBjb25zdCBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVj
dXJzZUluZm8+IHJlY3Vyc2VBbmRHZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYsIGJvb2wgcmVxdWly
ZXNMZWZ0VmFsdWUgPSBmYWxzZSk7Ci0gICAgT3B0aW9uYWw8UmVjdXJzZUluZm8+IGdldEluZm8o
QVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSA9IGZhbHNlKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlY3Vyc2VJbmZvPiByZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Np
b24mLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlID0gZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVjdXJzZUluZm8+IGdldEluZm8oQVNUOjpFeHByZXNzaW9uJiwgYm9vbCByZXF1aXJlc0xlZnRW
YWx1ZSA9IGZhbHNlKTsKICAgICBSZWZQdHI8QVNUOjpVbm5hbWVkVHlwZT4gcmVjdXJzZUFuZFdy
YXBCYXNlVHlwZShBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpOwogICAgIGJvb2wgcmVj
dXJzZUFuZFJlcXVpcmVCb29sVHlwZShBU1Q6OkV4cHJlc3Npb24mKTsKICAgICB2b2lkIGFzc2ln
bkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEFT
VDo6VHlwZUFubm90YXRpb24pOwpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgQ2hlY2tlcjo6dmlz
aXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKIH0KIAotYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0
SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUp
IC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZvPgorYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5m
byhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+
IHN0ZDo6b3B0aW9uYWw8UmVjdXJzZUluZm8+CiB7CiAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVz
c2lvbik7CiAgICAgaWYgKGhhc0Vycm9yKCkpCkBAIC03NDEsNyArNzQxLDcgQEAgYXV0byBDaGVj
a2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wg
cmVxdWlyZXNMZWZ0VmEKICAgICByZXR1cm4gZ2V0SW5mbyhleHByZXNzaW9uLCByZXF1aXJlc0xl
ZnRWYWx1ZSk7CiB9CiAKLWF1dG8gQ2hlY2tlcjo6Z2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4
cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IE9wdGlvbmFsPFJlY3Vyc2VJbmZv
PgorYXV0byBDaGVja2VyOjpnZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9v
bCByZXF1aXJlc0xlZnRWYWx1ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWN1cnNlSW5mbz4KIHsKICAg
ICBhdXRvIHR5cGVJdGVyYXRvciA9IG1fdHlwZU1hcC5maW5kKCZleHByZXNzaW9uKTsKICAgICBB
U1NFUlQodHlwZUl0ZXJhdG9yICE9IG1fdHlwZU1hcC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVu
c2lvbnMuY3BwCmluZGV4IDRlNTFhYjc5M2U3MDRkNjNjZjE0Nzg2YzUzYzU5M2EwNWVkNDRlNWYu
LjBkNjJiNzg4ZTY0MGE5OGRmZGQwYTdjYTljOWNkNjRiMDU2YmZlNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0
ZURpbWVuc2lvbnMuY3BwCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIFdITFNMIHsKIAotT3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVE
aW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0sIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBlbnRy
eVBvaW50KQorc3RkOjpvcHRpb25hbDxDb21wdXRlRGltZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGVudHJ5UG9pbnQp
CiB7Ci0gICAgT3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zOwog
CiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVm
aW5pdGlvbnMoKSkgewogICAgICAgICBib29sIGZvdW5kTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmli
dXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmgKaW5kZXggYjhmZjQ0ZjI5ZWVhNzJl
ZjllMGUyNDNkMjRkZmY1MmIyNWZhYTUxNC4uNTU2MzA4ZDE5YzZhY2JmNjEzOWEwODJlMWEwNTdm
ODFhZTljMDNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuaApAQCAtNDIsNyArNDIsNyBAQCBj
bGFzcyBGdW5jdGlvbkRlZmluaXRpb247CiAKIGNsYXNzIFByb2dyYW07CiAKLU9wdGlvbmFsPENv
bXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9ucyhQcm9ncmFtJiwgQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKTsKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVE
aW1lbnNpb25zKFByb2dyYW0mLCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAK
aW5kZXggYTljNmEyNjg0ZTFjNDZiZDM3N2MyNWI1YzIwOTFiODZhOGFiYTU3OC4uOWQ2YjBlYWNj
ZDk1ZTEzMTk4ZTY4NjMzZmNhOTZmYjQ3NDNiOTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKQEAgLTE2ODUsNyArMTY4NSw3
IEBAIGF1dG8gTGV4ZXI6OmxpbmVBbmRDb2x1bW5OdW1iZXJGcm9tT2Zmc2V0KGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkCiAgICAgcmV0dXJuIHsgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyIH07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9t
TmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2Ux
LCBjb25zdCBTdHJpbmcqIHNvdXJjZTIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmdWaWV3
PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UxLCBjb25zdCBTdHJpbmcqIHNvdXJjZTIpCiB7CiAgICAgc3dpdGNoIChuYW1l
U3BhY2UpIHsKICAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNv
bnRleHQuY3BwCmluZGV4IGE4ZGFlYTVjZWM2NDQ1ZjQ3YmIwNzQwZmM4ZmQzNGM4NWMzN2ViMzAu
LjYwMGRhODRiOGY0MTIwMWFmZWI2MDhkNDE0MTA2NWRkZTE5NGQ0ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQu
Y3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBOYW1lQ29u
dGV4dDo6c2VhcmNoRnVuY3Rpb25zKFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotT3B0aW9uYWw8Q29kZUxvY2F0aW9uPiBOYW1lQ29udGV4dDo6dG9wTGV2ZWxF
eGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAorc3RkOjpvcHRpb25hbDxDb2RlTG9jYXRpb24+IE5h
bWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYg
KGF1dG8qIHR5cGUgPSBzZWFyY2hUeXBlcyhuYW1lKSkKICAgICAgICAgcmV0dXJuIHR5cGUtPmNv
ZGVMb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lQ29udGV4dC5oCmluZGV4IDQxNjRiN2UyYWMzNGE0MDQ3M2IxMDcyZWNm
MWIyYjkwZDkyZDU5ODEuLjM0MDdkNTA2YTJjN2QxNGQ0MjAzYmJkNjE1Y2JlNDZlY2ExZTI2ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFt
ZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVDb250ZXh0LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBB
U1Q6Ok5hbWVkVHlwZSogc2VhcmNoVHlwZXMoU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24qIHNlYXJjaEZ1bmN0aW9ucyhTdHJpbmcmIG5hbWUpIGNvbnN0
OwotICAgIE9wdGlvbmFsPENvZGVMb2NhdGlvbj4gdG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1l
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvZGVMb2NhdGlvbj4gdG9wTGV2ZWxFeGlzdHMo
U3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24qIGxvY2Fs
RXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+LCAxPj4gbV90eXBlc1tBU1Q6
Om5hbWVTcGFjZUNvdW50XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCBmZjMzZmM0NTkxMzJiMTFmNDAwOGY3ZGEzN2U1
NDY3MzVhNDUwNzFmLi40ZmQ0NzIxNmMyMzJjOWVlMGJkYWU2MjgwYzQ3MDExZGRmMzU1OWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJz
ZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBQYXJzZXI6OnBlZWtUeXBlcygpCiAgICAg
cmV0dXJuIFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSk7CiB9CiAKLU9wdGlv
bmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9u
YWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShUb2tlbjo6VHlwZSB0eXBlKQogewogICAgIGF1dG8g
dG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSA9PSB0eXBlKQpAQCAt
MjExLDcgKzIxMSw3IEBAIE9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5
cGUgdHlwZSkKIH0KIAogdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgotT3B0aW9uYWw8
VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZXMoKQorc3RkOjpvcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0
cnlUeXBlcygpCiB7CiAgICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwogICAgIGlmIChU
eXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRva2VuLnR5cGUpKQpAQCAtMzQzLDExICszNDMsMTEg
QEAgYXV0byBQYXJzZXI6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpIC0+IEV4
cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4KICAgICBhdXRvIGludGVncmFsTGl0ZXJhbCA9IGNvbnN1
bWVJbnRlZ3JhbExpdGVyYWwoKTsKICAgICBpZiAoIWludGVncmFsTGl0ZXJhbCkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbC5lcnJvcigpKTsKLSAgICBhdXRv
IHJlc3VsdCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gT3B0aW9u
YWw8dW5zaWduZWQ+IHsKKyAgICBhdXRvIHJlc3VsdCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbXShpbnQgeCkgLT4gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICBpZiAo
eCA8IDApCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4g
eDsKLSAgICB9LCBbXSh1bnNpZ25lZCB4KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4geworICAgIH0s
IFtdKHVuc2lnbmVkIHgpIC0+IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgcmV0
dXJuIHg7CiAgICAgfSksICppbnRlZ3JhbExpdGVyYWwpOwogICAgIGlmIChyZXN1bHQpCkBAIC04
NjksNyArODY5LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25NZW1iZXIoaW50NjRf
dCBkZWZhdWx0VmFsdWUpIC0+IEV4cGVjdGVkPEFTVDo6RW51bWUKICAgICBpZiAodHJ5VHlwZShU
b2tlbjo6VHlwZTo6RXF1YWxzU2lnbikpIHsKICAgICAgICAgUEFSU0UoY29uc3RhbnRFeHByZXNz
aW9uLCBDb25zdGFudEV4cHJlc3Npb24pOwogCi0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IHZh
bHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHZhbHVlOwogICAgICAgICBjb25z
dGFudEV4cHJlc3Npb24tPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxp
dGVyYWwmIGludGVnZXJMaXRlcmFsKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRl
cmFsLnZhbHVlKCk7CiAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwm
IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCmluZGV4IGMwYjQ4N2M1M2Y2YWVmMTMwMDhkZDg1
NTlkNzU0NDYyOTgxMDY4NGMuLmU5YmNiZTQ5MmUyMGVmZWY3MTE5NTEzNjdmZTgyNmIwZTAzMjhl
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuaApAQCAtNjgsOSArNjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcGVla1R5cGUoVG9r
ZW46OlR5cGUpOwogICAgIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KICAgICBib29s
IHBlZWtUeXBlcygpOwotICAgIE9wdGlvbmFsPFRva2VuPiB0cnlUeXBlKFRva2VuOjpUeXBlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFRva2VuPiB0cnlUeXBlKFRva2VuOjpUeXBlKTsKICAgICB0ZW1w
bGF0ZSA8VG9rZW46OlR5cGUuLi4gdHlwZXM+Ci0gICAgT3B0aW9uYWw8VG9rZW4+IHRyeVR5cGVz
KCk7CisgICAgc3RkOjpvcHRpb25hbDxUb2tlbj4gdHJ5VHlwZXMoKTsKICAgICBFeHBlY3RlZDxU
b2tlbiwgRXJyb3I+IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlKTsKICAgICB0ZW1wbGF0ZSA8VG9r
ZW46OlR5cGUuLi4gdHlwZXM+CiAgICAgRXhwZWN0ZWQ8VG9rZW4sIEVycm9yPiBjb25zdW1lVHlw
ZXMoKTsKQEAgLTgzLDE0ICs4MywxNCBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBUeXBlU3VmZml4
QWJicmV2aWF0ZWQgewogICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb247CiAgICAgICAgIFRv
a2VuIHRva2VuOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbnVtRWxlbWVudHM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51bUVsZW1lbnRzOwogICAgIH07CiAgICAgRXhw
ZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4QWJicmV2
aWF0ZWQoKTsKICAgICBzdHJ1Y3QgVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkIHsKICAgICAgICAg
Q29kZUxvY2F0aW9uIGxvY2F0aW9uOwogICAgICAgICBUb2tlbiB0b2tlbjsKLSAgICAgICAgT3B0
aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+IGFkZHJlc3NTcGFjZTsKLSAgICAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG51bUVsZW1lbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEFTVDo6QWRkcmVz
c1NwYWNlPiBhZGRyZXNzU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51
bUVsZW1lbnRzOwogICAgIH07CiAgICAgRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVk
LCBFcnJvcj4gcGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKTsKICAgICBFeHBlY3RlZDxS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPiBwYXJzZUFkZHJlc3NTcGFjZVR5cGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxp
bmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBpcGVsaW5lRGVzY3JpcHRvci5oCmluZGV4IDQ0YjIxM2VlZDc1ZWI1NjhmODFhYzZlNTM5ODM2
Mzc1OTQwMjg1YWEuLjEyNzA1OTg4MGQ1M2RlY2E4YjY0MjRmZTI2MDU1ZmVhMGNlZWZiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGlwZWxp
bmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgQXR0YWNo
bWVudERlc2NyaXB0b3IgewogCiBzdHJ1Y3QgQXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3Igewog
ICAgIFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4gYXR0YWNobWVudERlc2NyaXB0b3JzOwot
ICAgIE9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjsKIH07CiAKIGVudW0gY2xhc3MgU2hhZGVyU3Rh
Z2UgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByZXBhcmUuY3BwCmluZGV4IDgyNjFmOWIwMTY4OWMwNzM4ZjE2NjM2ZTg2ZTRj
Mjk1MDI5YjJiM2MuLmQ4YWQ1MzA0YzQ3MzRlYTA2MDhjZTZjMjA1YjRiZWUyODc3ZDc3YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVw
YXJlLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIEV4cGVjdGVkPFJlbmRlclByZXBhcmVSZXN1bHQs
IFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHZlcnRleFNoYWRlck1vCiAgICAg
ICAgIGlmICghcHJvZ3JhbSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChwcm9n
cmFtLmVycm9yKCkpOwogCi0gICAgICAgIE9wdGlvbmFsPE1hdGNoZWRSZW5kZXJTZW1hbnRpY3M+
IG1hdGNoZWRTZW1hbnRpY3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNl
bWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsKICAgICAgICAgewogICAgICAgICAgICAgUGhhc2VU
aW1lciBwaGFzZVRpbWVyKCJtYXRjaFNlbWFudGljcyIsIHBoYXNlVGltZXMpOwogICAgICAgICAg
ICAgbWF0Y2hlZFNlbWFudGljcyA9IG1hdGNoU2VtYW50aWNzKCpwcm9ncmFtLCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IsIGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyTW9k
dWxlKTsKQEAgLTI4OSw3ICsyODksNyBAQCBFeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJlc3VsdCwg
U3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLAogewogICAg
IFBoYXNlVGltZXMgcGhhc2VUaW1lczsKICAgICBNZXRhbDo6Q29tcHV0ZU1ldGFsQ29kZSBnZW5l
cmF0ZWRDb2RlOwotICAgIE9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5z
aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5z
aW9uczsKIAogICAgIHsKICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRv
dGFsIiwgcGhhc2VUaW1lcyk7CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhwZWN0ZWQ8Q29tcHV0ZVBy
ZXBhcmVSZXN1bHQsIFN0cmluZz4gcHJlcGFyZShjb25zdCBTaGFkZXJNb2R1bGUmIHNoYWRlck1v
ZHVsZSwKICAgICAgICAgaWYgKCFwcm9ncmFtKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKHByb2dyYW0uZXJyb3IoKSk7CiAKLSAgICAgICAgT3B0aW9uYWw8TWF0Y2hlZENvbXB1
dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0
Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoZWRTZW1hbnRpY3M7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIFBoYXNlVGltZXIgcGhhc2VUaW1lcigibWF0Y2hTZW1hbnRpY3MiLCBwaGFzZVRpbWVz
KTsKICAgICAgICAgICAgIG1hdGNoZWRTZW1hbnRpY3MgPSBtYXRjaFNlbWFudGljcygqcHJvZ3Jh
bSwgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKaW5k
ZXggNWUzZjBmMDM2Njg2NWY0MDIzOWFlZWZmOWUwZTI1ODRkMjE0ZGU2My4uYTYxNGQ2YjgzOTkz
MmU1OTcyMmM1MDg5NDA2ZjY2MjJhZWQwNTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9vbCBtYXRjaE1vZGUoQmluZGluZzo6QmluZGluZ0Rl
dGFpbHMgYmluZGluZ1R5cGUsIEFTVDo6UmVzb3VyY2VTZW1hbnRpYwogICAgIH0pLCBiaW5kaW5n
VHlwZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBt
YXRjaFJlc291cmNlcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBlbnRyeVBvaW50SXRlbXMsIExh
eW91dCYgbGF5b3V0LCBTaGFkZXJTdGFnZSBzaGFkZXJTdGFnZSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxFbnRy
eVBvaW50SXRlbT4mIGVudHJ5UG9pbnRJdGVtcywgTGF5b3V0JiBsYXlvdXQsIFNoYWRlclN0YWdl
IHNoYWRlclN0YWdlKQogewogICAgIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4gcmVzdWx0Owog
ICAgIEhhc2hTZXQ8c2l6ZV90LCBEZWZhdWx0SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IGl0ZW1JbmRpY2VzOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9y
bWF0LCBBU1Q6OlVubmFtZWRUeXBlJiB1bm5hCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8
SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMo
VmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1dGVzJiB2
ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJp
YnV0ZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgdmVydGV4SW5wdXRzLCBWZXJ0ZXhBdHRyaWJ1
dGVzJiB2ZXJ0ZXhBdHRyaWJ1dGVzLCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQogewogICAgIEhh
c2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90PiByZXN1bHQ7CiAgICAgSGFzaFNldDxzaXpl
X3QsIERlZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8c2l6ZV90Pj4gaXRlbUluZGljZXM7CkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIGJvb2wg
aXNBY2NlcHRhYmxlRm9ybWF0KFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCwgQVNUOjpVbm5h
bWVkVHlwZSYgdW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxIYXNo
TWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRz
KFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0cywgVmVjdG9yPEF0dGFjaG1l
bnREZXNjcmlwdG9yPiYgYXR0YWNobWVudERlc2NyaXB0b3JzLCBJbnRyaW5zaWNzJiBpbnRyaW5z
aWNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvcios
IHNpemVfdD4+IG1hdGNoQ29sb3JBdHRhY2htZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBm
cmFnbWVudE91dHB1dHMsIFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1lbnRE
ZXNjcmlwdG9ycywgSW50cmluc2ljcyYgaW50cmluc2ljcykKIHsKICAgICBIYXNoTWFwPEF0dGFj
aG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90PiByZXN1bHQ7CiAgICAgSGFzaFNldDxzaXplX3QsIERl
ZmF1bHRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6
ZV90Pj4gaXRlbUluZGljZXM7CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhh
c2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+PiBtYXRjaENvbG9yQXR0YWNobWVu
dHMoVmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0
YWNobWVudChWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIE9wdGlvbmFs
PEF0dGFjaG1lbnREZXNjcmlwdG9yPiYgZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3Is
IEludHJpbnNpY3MmIGludHJpbnNpY3MpCitzdGF0aWMgYm9vbCBtYXRjaERlcHRoQXR0YWNobWVu
dChWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMsIHN0ZDo6b3B0aW9uYWw8
QXR0YWNobWVudERlc2NyaXB0b3I+JiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwg
SW50cmluc2ljcyYgaW50cmluc2ljcykKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpmaW5k
X2lmKGZyYWdtZW50T3V0cHV0cy5iZWdpbigpLCBmcmFnbWVudE91dHB1dHMuZW5kKCksIFsmXShF
bnRyeVBvaW50SXRlbSYgaXRlbSkgewogICAgICAgICBhdXRvJiBzZW1hbnRpYyA9ICppdGVtLnNl
bWFudGljOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBib29sIG1hdGNoRGVwdGhBdHRhY2ht
ZW50KFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIGZyYWdtZW50T3V0cHV0cywgT3B0aW9uCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRj
aFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29s
IGZyYWdtZW50U2hhZGVyRXhpc3RzKQorc3RkOjpvcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50
aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hh
ZGVyLCBib29sIGZyYWdtZW50U2hhZGVyRXhpc3RzKQogewogICAgIGF1dG8gdmVydGV4RnVuY3Rp
b25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2Ux
KTsKICAgICBpZiAodmVydGV4RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlv
bnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRp
b24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSkpCkBAIC0zMTMsNyArMzEzLDcgQEAgT3B0aW9u
YWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3Jh
bSwgUmVuZGVyUGlwZWxpbmUKICAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQs
ICZmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMs
ICpmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKnZlcnRleFNoYWRlclJlc291cmNlTWFw
LCAqZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCAq
bWF0Y2hlZENvbG9yQXR0YWNobWVudHMgfX07CiB9CiAKLU9wdGlvbmFsPE1hdGNoZWRDb21wdXRl
U2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFtLCBDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxN
YXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwg
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikKIHsK
ICAgICBhdXRvIGZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMo
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5lbnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6
Ok5hbWVTcGFjZTEpOwogICAgIGlmIChmdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZ1bmN0aW9u
c1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
bj4oZnVuY3Rpb25zWzBdLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5oCmluZGV4IDk2NGVjOTE1
Zjg0N2ViM2RhZDU2OTY0ZGRjOGQ3MWY5NmMzMjhlNmMuLmZkYmY2YzY3M2QzZGViNmM3ZmMxZjMy
MzllYThiMGZkMGEzMjc4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuaApAQCAtNDgsNyArNDgsNyBA
QCBzdHJ1Y3QgTWF0Y2hlZFJlbmRlclNlbWFudGljcyB7CiAgICAgSGFzaE1hcDxBdHRhY2htZW50
RGVzY3JpcHRvciosIHNpemVfdD4gbWF0Y2hlZENvbG9yQXR0YWNobWVudHM7CiB9OwogCi1PcHRp
b25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgYm9vbCBkaXN0aW5jdEZyYWdtZW50U2hhZGVyLCBib29s
IGZyYWdtZW50U2hhZGVyRXhpc3RzKTsKK3N0ZDo6b3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFu
dGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYs
IGJvb2wgZGlzdGluY3RGcmFnbWVudFNoYWRlciwgYm9vbCBmcmFnbWVudFNoYWRlckV4aXN0cyk7
CiAKIHN0cnVjdCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyB7CiAgICAgQVNUOjpGdW5jdGlvbkRl
ZmluaXRpb24qIHNoYWRlcjsKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IE1hdGNoZWRDb21wdXRl
U2VtYW50aWNzIHsKICAgICBIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+IHJlc291cmNlTWFwOwog
fTsKIAotT3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFBy
b2dyYW0mLCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7CitzdGQ6Om9wdGlvbmFsPE1hdGNo
ZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiwgQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciYpOwogCiB9IC8vIG5hbWVzcGFjZSBXSExTTAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCA2YjM5YmRjNzhjZmIxMzI3ODdmNDBkNmVi
OTk4NjNlN2YyMGE1NzRlLi42ZDVkOTNlMTQwNDE3ZjE0N2RiMGRjNmJhMjBiODc4NGYzNWZmNDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgUmVmPFdlYkdQVT4gV2ViR1BVOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVSk7CiB9CiAKLXZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihPcHRpb25hbDxH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYgb3B0aW9ucywgV2ViR1BVQWRhcHRlclByb21pc2Um
JiBkZWZlcnJlZCkgY29uc3QKK3ZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihzdGQ6Om9wdGlv
bmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJiBvcHRpb25zLCBXZWJHUFVBZGFwdGVyUHJv
bWlzZSYmIGRlZmVycmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0
ZXI6OmNyZWF0ZShXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0
ZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuaAppbmRleCAxNjFl
NmNkZTc3ODgzOTg3YTgxODFlMmNjYTI5NDEyZDFhNGMxMGEyLi44YjA1MjQwZDAwNmIzYzQyNGI0
OTA2N2MyM2UxNDkzY2FiZDIzMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBXZWJHUFVBZGFwdGVy
UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8V2ViR1BVQWRhcHRlcj4+
OwogCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnM+JiYsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgcmVxdWVz
dEFkYXB0ZXIoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYsIFdlYkdQ
VUFkYXB0ZXJQcm9taXNlJiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdlYkdQVSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKaW5kZXggNmRiYTdkMDY3Y2VjZTQ5YjRmZDU4YjI1M2M2YjlhZDM1MGRjZjM3Mi4uYmI2Zjk5
NGZiMjAzNTRiM2VhOTg5MzIzN2RjYzExMTFiNmVlYjE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKQEAgLTM1LDEyICszNSwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVy
OjpjcmVhdGUoT3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCitS
ZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVQWRhcHRlcihXVEZNb3ZlKG9wdGlvbnMpKSk7CiB9CiAKLVdlYkdQVUFkYXB0
ZXI6OldlYkdQVUFkYXB0ZXIoT3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9w
dGlvbnMpCitXZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKHN0ZDo6b3B0aW9uYWw8R1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zPiYmIG9wdGlvbnMpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShv
cHRpb25zKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFk
YXB0ZXIuaAppbmRleCA5ZDdjMTdjYWExNzNhNzFhNWM0MmM4Mzk3ODc4MDZjZDM0ODZjMTIxLi4z
MjFiZGU1NzFmZmU2NDhjZDE3ZWI0YjE0OTllNDk1NGRiNDMxZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCkBAIC00MiwxNyArNDIsMTcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOwogCiBj
bGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKE9wdGlvbmFsPEdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVy
PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiYpOwogCiAg
ICAgdXNpbmcgRGV2aWNlUmVxdWVzdFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPFdlYkdQVURldmljZT4+OwogICAgIHZvaWQgcmVxdWVzdERldmljZShEb2N1bWVudCYs
IERldmljZVJlcXVlc3RQcm9taXNlJiYpIGNvbnN0OwogICAgIAotICAgIGNvbnN0IE9wdGlvbmFs
PEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnM7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cz4mIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXZWJHUFVBZGFwdGVyKE9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cz4mJik7CisgICAgZXhwbGljaXQgV2ViR1BVQWRhcHRlcihzdGQ6Om9wdGlvbmFsPEdQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucz4mJik7CiAKLSAgICBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnM+IG1fb3B0aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucz4gbV9vcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmNwcAppbmRleCA4ZWZlYTU1NWNlOTJjMWM0MTk5NjFhNGY1NjJlYTU1MzRlMjEwYzY2
Li4yOWM4ZWQ5M2ExODA0YzA5ODc5NzFhOWU3ZmIxMmE2YTM1MTc2OTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlckJp
bmRpbmdUeXBlKGNvbnN0IEdQVUJ1ZmZlciogYnVmZmVyLCBjb25zdCBHUFVCaW5kR3JvdQogICAg
IH0KIH0KIAotT3B0aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3Vw
RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQmluZEdyb3VwRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCgp
IjsKIApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBX
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVCaW5kR3JvdQogCiAgICAgICAg
IGNvbnN0IGF1dG8gbGF5b3V0QmluZGluZyA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgICAgICBh
dXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFJl
ZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2FtcGxlcikgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291
cmNlPiB7CisgICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlVmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoW10oY29uc3QgUmVmUHRyPFdlYkdQVVNhbXBsZXI+JiBzYW1wbGVyKSAtPiBzdGQ6Om9w
dGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAgICAgICAgaWYgKCFzYW1wbGVyKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIGdw
dVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVyKCk7CkBAIC05Niw3ICs5Niw3IEBAIE9wdGlvbmFs
PEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNy
ZWF0ZUdQVUJpbmRHcm91CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJl
ZigqZ3B1U2FtcGxlcikpOwotICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8V2ViR1BVVGV4dHVy
ZVZpZXc+JiB2aWV3KSAtPiBPcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKKyAgICAgICAg
fSwgW10oY29uc3QgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiYgdmlldykgLT4gc3RkOjpvcHRp
b25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKICAgICAgICAgICAgIGlmICghdmlldykKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byB0ZXh0dXJl
ID0gdmlldy0+dGV4dHVyZSgpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIE9wdGlvbmFsPEdQVUJpbmRH
cm91cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJp
bmRHcm91CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqdGV4dHVy
ZSkpOwotICAgICAgICB9LCBbJmxheW91dEJpbmRpbmcsIGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1
ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZykgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNl
PiB7CisgICAgICAgIH0sIFsmbGF5b3V0QmluZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BVQnVm
ZmVyQmluZGluZyBidWZmZXJCaW5kaW5nKSAtPiBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRpbmdSZXNv
dXJjZT4gewogICAgICAgICAgICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBi
dWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgKaW5kZXggZmM4
OWViNWZmOTBmZWEwOTRiZTRlYWU4ODliZTE4YWJiMGNjNDNmYi4uNDEzMzEwNTllZWI5ODU1OTNl
NzU3NzU1MTAwYjBmYWRjY2I0NmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgR1BVQmluZEdyb3VwRGVzY3JpcHRvcjsK
IAogc3RydWN0IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IgewotICAgIE9wdGlvbmFsPEdQVUJp
bmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQ
VUJpbmRHcm91cERlc2NyaXB0b3IoKSBjb25zdDsKIAogICAgIFJlZlB0cjxjb25zdCBXZWJHUFVC
aW5kR3JvdXBMYXlvdXQ+IGxheW91dDsKICAgICBWZWN0b3I8V2ViR1BVQmluZEdyb3VwQmluZGlu
Zz4gYmluZGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKaW5kZXggOTc3MDlkZWE2MTY0MTYyZTYzNDg1OTEwMDgy
ZDQyMjYxN2Q0NjMyYi4uZjU3NWUwMGRlNTNiNDYzNjU2NTNkNGE1NjJjODAxMzBkYjQ2NTkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRFbmNvZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3Jl
YXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdAorc3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5
Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkg
Y29uc3QKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewogICAgICAg
ICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBj
b3B5ISIpOwpAQCAtNTMsNyArNTMsNyBAQCBPcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2Vi
R1BVQnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgYwogICAgIHJl
dHVybiBHUFVCdWZmZXJDb3B5VmlldyB7IG1ha2VSZWYoKmJ1ZmZlci0+YnVmZmVyKCkpLCAqdGhp
cyB9OwogfQogCi1PcHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5
Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRl
eHR1cmVDb3B5VmlldygpIGNvbnN0CiB7CiAgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50
ZXh0dXJlKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJ
bnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaAppbmRleCBkYmU4ZGUyZDk5Y2U2NjYw
Yjc5ZDkzNWI4MzE5OGRkMDU5ZjE3ZWNlLi4zNmUxODRhMTE0ZjJkZGRmZjkwYmUzMzI4ZjVkMWU2
MDc0NWNiNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRFbmNvZGVyLmgKQEAgLTQzLDEzICs0MywxMyBAQCBzdHJ1Y3QgR1BVRXh0ZW50
M0Q7CiBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVC
dWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BV
QnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZp
ZXcoKSBjb25zdDsKIAogICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKIH07CiAKIHN0
cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKLSAg
ICBPcHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5Vmll
dygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVh
dGVHUFVUZXh0dXJlQ29weVZpZXcoKSBjb25zdDsKIAogICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJl
PiB0ZXh0dXJlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXggYjRl
YzU4YzlmNzVkZTI4NTJhZmFlZGJiNjk3MGVhZGM0YTg3NWI5Yi4uZDhkYjdkMzU4OGI3ZjFhZjgy
MDMwYjQ5YTg1MTExMDgxZjkxYjM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yOjp0cnlDcmVhdGVHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVz
JiBlcnJvclNjb3BlcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcj4gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0
CiB7CiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5b3V0
LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuaAppbmRleCA0NDA0MDVjNGNhOGFlYmRhMDc4ZjhiNTk5YzFjZTZkYzY4M2Q1ZTA0Li43NTkx
ZmRiZjFlMWIyODg2ODIyNzI3ZjQ3MTBlOTliYmE3NTEyYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEdQVUVycm9yU2NvcGVzOwogc3Ry
dWN0IEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I7CiAKIHN0cnVjdCBXZWJHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Ci0gICAg
T3B0aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwogCiAgICAgV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIGNvbXB1dGVTdGFnZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCA5MWVjM2UwYzU3NTlh
MjFhNzMzMjRjMDUyYmRmN2NiZmQzODcyN2M3Li44YTk4NDIyYjBlMzJlZDE4MmJlNGI3ZDZlZWJh
MmRjYmVhMjExNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCBSZWY8V2ViR1BVUXVldWU+IFdlYkdQVURl
dmljZTo6Z2V0UXVldWUoKSBjb25zdAogdm9pZCBXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUo
RXJyb3JQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7Ci0gICAg
T3B0aW9uYWw8R1BVRXJyb3I+IGVycm9yID0gbV9lcnJvclNjb3Blcy0+cG9wRXJyb3JTY29wZShm
YWlsTWVzc2FnZSk7CisgICAgc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9y
U2NvcGVzLT5wb3BFcnJvclNjb3BlKGZhaWxNZXNzYWdlKTsKICAgICBpZiAoZmFpbE1lc3NhZ2Uu
aXNFbXB0eSgpKQogICAgICAgICBwcm9taXNlLnJlc29sdmUoZXJyb3IpOwogICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCmluZGV4IDExZWQxYWVkZGE4OTc1ZGI1ZDUxYTg2
NjVjZWQ4MWE1NGNjODIzOTIuLmMxOGMyOGViMTU0MWNjY2JiOWEwYmU4MGRlNmM0MjNjYzVjMDI4
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1PcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERl
c2NyaXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8R1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I6OnRyeUNyZWF0
ZUdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZjxj
b25zdCBHUFVCaW5kR3JvdXBMYXlvdXQ+PiBncHVMYXlvdXRzOwogICAgIGdwdUxheW91dHMucmVz
ZXJ2ZUNhcGFjaXR5KGJpbmRHcm91cExheW91dHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yLmgKaW5kZXggZGNlNjg5NTU4NmMzMGQzNzA0ZDI5MjA0MGJiYWYzZWUxODVlZWQzNC4u
OTFkNzU4MTZjNGIyZmI4MWE1YWIyNzM5NDg2OGJiNDE3MmI1YzU5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKIAogc3RydWN0IFdlYkdQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciB7Ci0gICAgT3B0aW9uYWw8R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yPiB0cnlDcmVhdGVHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yKCkgY29uc3Q7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdQ
VUJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvci5jcHAKaW5kZXggNDc3NWE4ODVmYzc2YjRjZjk1YzU4M2U1ODY5OTQ5
ZWUxODk5ZWFhNy4uZjZhNGY3ZmJlOWNiMzBjY2Y5Nzk2MGIzMzE0MThiNDJlZWM0NTM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVBy
b2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdQVVByb2dy
YW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
Ojp0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdAogewogICAg
IGlmICghbW9kdWxlIHx8ICFtb2R1bGUtPm1vZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3IuaAppbmRleCAxYTQ0MTRhYWMxMDczNjc5MTBlMWIzNTg0ZDIyOGQzNWViYjU4ZGEzLi5k
ZjcxMzJkNTA1MDUxYTRlYTQwODcyYzk0M2I4MTVlYzVhNjI4MTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIDogR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yQmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yPiB0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3Io
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4gdHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCkgY29uc3Q7CiAKICAg
ICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBtb2R1bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY3BwCmluZGV4IDQzOTU3MTdiYjVlYzQzNWUxNTJiZjgxOWJkZWExNjBlMmI3MTJhZjAuLjhh
OGI0NzgyYzdlNzM1YWFjNDFiMzE3ZDQwMzMwYTczMmUzMzRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWUKIHsKIH0K
IAotT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBJbXByb3ZlIGVycm9yIGNoZWNraW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IGlzIGFkZGVkIHRvIHNwZWMuCiAgICAgaWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7
CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiBXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyCiAgICAgICAgIGdwdUNv
bG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsgbWFrZVJlZigqY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSksIGNv
bG9yQXR0YWNobWVudCB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdURlcHRoQXR0YWNobWVudDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cj4gZ3B1RGVwdGhBdHRhY2htZW50OwogCiAgICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
IHsKICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaAppbmRleCBkY2M5YThhYWQyZGRhNTRhY2QwYWEwNWZkMTAwZGZmMzJmYjEx
M2ViLi5lYTVkZDViNTU0NmU5Y2FmNWY0OTAwNTc2Y2Y1ZWU1NmRkODc3NTkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmgKQEAgLTQ2LDEwICs0NiwxMCBAQCBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIDogR1BVUmVuZGVyUGFzc0RlcHRoU3Rlbgog
fTsKIAogc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKLSAgICBPcHRpb25hbDxH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Io
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yPiB0cnlD
cmVhdGVHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIGNvbnN0OwogCiAgICAgVmVjdG9yPFdlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzOwot
ICAgIE9wdGlvbmFsPFdlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcj4gZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsQXR0
YWNobWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCBl
OTI5YzU0ZmQxNjk0YmVlYTZkY2QzOWYxM2VlYjQ5ZDU2OGYxNzg1Li5iZjhjZmU5NWZmNjEzYTI5
MzY0ZjY3NDc4ZThkNDZiZWEyMTg2NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IGJvb2wgV2ViR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGlsZShjb25zdCBXZWJHUFVEZXZpY2Um
IGRldmljZSkKICAgICBpZiAobV9yZW5kZXJQaXBlbGluZSAmJiBtX3ZlcnRleFNoYWRlci5tb2R1
bGUpIHsKICAgICAgICAgaWYgKGF1dG8qIGdwdVZlcnRleFNoYWRlck1vZHVsZSA9IG1fdmVydGV4
U2hhZGVyLm1vZHVsZS0+bW9kdWxlKCkpIHsKICAgICAgICAgICAgIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZShtYWtlUmVmKCpncHVWZXJ0ZXhTaGFkZXJNb2R1bGUp
LCB7IG1fdmVydGV4U2hhZGVyLmVudHJ5UG9pbnQgfSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRT
dGFnZTsKICAgICAgICAgICAgIGlmIChtX2ZyYWdtZW50U2hhZGVyLm1vZHVsZSkgewogICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBncHVGcmFnbWVudFNoYWRlck1vZHVsZSA9IG1fZnJhZ21lbnRT
aGFkZXIubW9kdWxlLT5tb2R1bGUoKSkKICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFn
ZSA9IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcihtYWtlUmVmKCpncHVGcmFnbWVudFNo
YWRlck1vZHVsZSksIHsgbV9mcmFnbWVudFNoYWRlci5lbnRyeVBvaW50IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXggNDUwNmU1NDgwMGRhMzBkNjU3OWVhZTAzNDUzMTBi
OGY5MzY5NGRmMS4uNjZiY2RiOWRmOTBjODQ1OTA3MzEzNDdmOGQ1YTk2NTg3YzkxYzc3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNj
b3BlcyYgZXJyb3JTY29wZXMpIGNvbnN0CiB7CiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxh
eW91dCA/IG1ha2VSZWZQdHIobGF5b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7CiAK
ICAgICBhdXRvIHZlcnRleCA9IHZlcnRleFN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvcigpOwogCi0gICAgT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yPiBmcmFnbWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdl
RGVzY3JpcHRvcj4gZnJhZ21lbnQ7CiAgICAgaWYgKGZyYWdtZW50U3RhZ2UpCiAgICAgICAgIGZy
YWdtZW50ID0gZnJhZ21lbnRTdGFnZS0+dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKaW5kZXggNTUzOWMxMDJmZjAw
ODY0ZDYzOTMzMDhkZjRkOTk0ZmU4NmM3ZDQyYS4uNmUzOGU5NjEzOTIyMmM0ZDNhNDc5ODBiNDIx
Y2UxNTU1ZWFkMDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKQEAgLTM3LDEwICsz
NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHUFVFcnJvclNjb3BlczsKIAogc3Ry
dWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIE9wdGlvbmFs
PEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKEdQVUVycm9yU2NvcGVzJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwogCiAgICAgV2ViR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOwotICAgIE9wdGlvbmFsPFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gZnJhZ21lbnRTdGFnZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKaW5kZXggZGM4MjgyN2ZmMzA0
ODY4MmUwNTA5Mjc4NDg0Yzc5MzI3NDcwZjhjNi4uMTEzNGZjZDMzMzczOTk1ZjZhOThkNDc5YWY0
MDJmN2NkOTdiMDY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
PiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlm
ICghZGV2aWNlKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpjb25m
aWd1cmVTd2FwQ2hhaW4oKTogSW52YWxpZCBHUFVEZXZpY2UhIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgK
aW5kZXggZGEwYzY3NDE3Y2MzODk4ZDhjMzVkZmJmMDlmZDI2MTEyNWI5MmJiYi4uMTlhNzg2YjY5
YjBkN2YwNzA0ZDAwZGU3MDk4MTAwZDA2NzYxY2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApAQCAt
MzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvciA6IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3JCYXNlIHsKLSAgICBPcHRpb25h
bDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBhc0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I+IGFzR1BVU3dhcENo
YWluRGVzY3JpcHRvcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2aWNl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE2OWQ5YzlkZTMzMGEx
NjRhNDc0N2E3NTkxODFjODhhZDM5YmFiY2MuLmE2Y2IyY2ZlOGM3NjZhZWEzODVmOTYzMmViYTE5
NWMzYjhlZTk0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODUsNyAr
ODUsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoKQogewogfQogCi1PcHRpb25hbDxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6VmFs
aWRhdGVkVVJMPiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6dmFsaWRhdGVVUkwoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJlcXVlc3RlZFVSTCkKK3N0ZDo6b3B0aW9uYWw8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlkYXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OnZhbGlkYXRlVVJMKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByZXF1
ZXN0ZWRVUkwpCiB7CiAgICAgVmFsaWRhdGVkVVJMIHZhbGlkYXRlZFVSTCB7IHJlcXVlc3RlZFVS
TCwgdHJ1ZSB9OwogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKSB7CkBAIC0x
MDksNyArMTA5LDcgQEAgT3B0aW9uYWw8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlZhbGlk
YXRlZFVSTD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnYKICAgICByZXR1cm4gdmFsaWRh
dGVkVVJMOwogfQogCi1PcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjp3ZWJTb2NrZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjp3ZWJTb2NrZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGF1dG8gdmFsaWRhdGVkVVJMID0gdmFsaWRhdGVV
UkwoZG9jdW1lbnQsIHVybCk7CiAgICAgaWYgKCF2YWxpZGF0ZWRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDcxNGIxY2FjMjVjZjkxOTZhYWNlNjRhOThjZDZmYzA4NWEyMGFi
MTAuLjczMTE5ZTZmN2E2MzcxMjY3OGQxOGE2ZjJmZTJlODM4ZDYwNzcyZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC05Niw4ICs5Niw4IEBAIHByb3RlY3RlZDoKICAgICAgICAg
VVJMIHVybDsKICAgICAgICAgYm9vbCBhcmVDb29raWVzQWxsb3dlZCB7IHRydWUgfTsKICAgICB9
OwotICAgIHN0YXRpYyBPcHRpb25hbDxWYWxpZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERvY3VtZW50
JiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlc291
cmNlUmVxdWVzdD4gd2ViU29ja2V0Q29ubmVjdFJlcXVlc3QoRG9jdW1lbnQmLCBjb25zdCBVUkwm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWYWxpZGF0ZWRVUkw+IHZhbGlkYXRlVVJMKERv
Y3VtZW50JiwgY29uc3QgVVJMJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiB3ZWJTb2NrZXRDb25uZWN0UmVxdWVzdChEb2N1bWVudCYs
IGNvbnN0IFVSTCYpOwogCiAgICAgV2ViU29ja2V0SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCBkY2M3ODNhZGExYWY3MDRkODU2Mjk3MTY1MmUxMDFhNmRhNDBkZjY3Li5hYjIwZjgwZTg4
YjA5YzQ1N2ZhZTk1MjllMTUxNTcxOTIyODY1ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVy
biB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y2xvc2UoT3B0aW9uYWw8
dW5zaWduZWQgc2hvcnQ+IG9wdGlvbmFsQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCitFeGNl
cHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hv
cnQ+IG9wdGlvbmFsQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgaW50IGNvZGUg
PSBvcHRpb25hbENvZGUgPyBvcHRpb25hbENvZGUudmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4o
V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpOwogICAgIGlmIChj
b2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGZmODQ1
MTUyYmRlZWNjZDJlN2FjZjAyMjc2NmRmOTYyZDhmNDg4MzQuLmEyZmU1ZGQ5YWRjNGUyOTYzZmE2
NjEyYTcxYzRiZWE3NTJjMmI3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNlbmQoSlNDOjpBcnJheUJ1ZmZlclZpZXcmKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZW5kKEJsb2ImKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsb3NlKE9wdGlvbmFs
PHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gY2xvc2Uoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsPiBjaGFubmVsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlNWUyN2Q0ZjQ1ZjU3MmNk
ZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyLi43M2UxMDUwMThkOGEyNjdjYWJkNDJmNTMxYmZmODRl
NDAzNGU1MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxl
KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50LmdldCgpLCBtX3Byb2dyZXNzSWRlbnRpZmllciwgbV9o
YW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoV1RGTW92ZShjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSkpKTsKICAgICB9CiAgICAgYXV0byBoYW5kc2hha2VNZXNzYWdlID0gbV9o
YW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKTsKLSAgICBPcHRpb25hbDxDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7Cisg
ICAgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHk7CiAgICAgaWYgKG1fYWxsb3dDb29raWVzKQogICAgICAgICBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSA9IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHkoKm1fZG9jdW1lbnQsIG1faGFuZHNoYWtlLT5odHRwVVJMRm9yQXV0aGVu
dGljYXRpb25BbmRDb29raWVzKCkpOwogICAgIGhhbmRsZS5zZW5kSGFuZHNoYWtlKFdURk1vdmUo
aGFuZHNoYWtlTWVzc2FnZSksIFdURk1vdmUoY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzLCBi
b29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDk1MmZhYThjYzgyODBjMzU3NjMyMWExZWE2MzJhZWMwNjk3
ZDFhYzMuLjBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDExLDcgKzQxMSw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyCiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFr
ZSB0aGlzIG1peGVkIGNvbnRlbnQgY2hlY2sgZXF1aXZhbGVudCB0byB0aGUgZG9jdW1lbnQgbWl4
ZWQgY29udGVudCBjaGVjayBjdXJyZW50bHkgaW4gV2ViU29ja2V0Ojpjb25uZWN0KCkKICAgICAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBlcnJvclN0cmluZyA9IE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9y
TWl4ZWRDb250ZW50SW5GcmFtZVRyZWUoKmZyYW1lLCB1cmwpOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGVycm9yU3RyaW5nID0gTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tG
b3JNaXhlZENvbnRlbnRJbkZyYW1lVHJlZSgqZnJhbWUsIHVybCk7CiAgICAgICAgICAgICBpZiAo
ZXJyb3JTdHJpbmcpIHsKICAgICAgICAgICAgICAgICBwZWVyLT5mYWlsKGVycm9yU3RyaW5nLnZh
bHVlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggZDg1Yzc0ZDE1NTQwYmJlZTQzMWU5ZDM2NGU0Nzg2MGJm
YmU4MzcwMy4uZmE5MDBkYzIyZjY5MTU5Zjc5MjdjNzIxYzI1ZDBkYzc2NDA5MDc2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTcyLDcgKzcyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG11c3RQb3Nlc0JlTGltaXRlZChjb25zdCBXZWJYUlNwYWNlJiwg
Y29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0OwogCiAgICAgc3RydWN0IFBvcHVsYXRlZFBvc2U7Ci0g
ICAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UG9wdWxhdGVkUG9zZT4+IHBvcHVsYXRlUG9zZShjb25z
dCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAog
ICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1l
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZW5kZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVu
ZGVyU3RhdGUuY3BwCmluZGV4IDk0MzJhNWFmMTkzOGI0OTRiMTFlOWNiYzZkM2QzOTE0Mjk1NTk2
NDIuLmZmYjZjMTc5MzcyNzE5ZDUzODQxMzhmYjE4ZTY4N2JlMDRkMzc2NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBSZWY8V2ViWFJSZW5kZXJTdGF0ZT4gV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRl
KFhSU2Vzc2lvbk1vZGUgbW9kZSkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlbmRl
clN0YXRlKG1vZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lID8gc3RkOjptYWtlX29wdGlvbmFs
KHBpT3ZlclR3b0RvdWJsZSkgOiBzdGQ6Om51bGxvcHQpKTsKIH0KIAotV2ViWFJSZW5kZXJTdGF0
ZTo6V2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3VibGU+IGlubGluZVZlcnRpY2FsRmllbGRP
ZlZpZXcpCitXZWJYUlJlbmRlclN0YXRlOjpXZWJYUlJlbmRlclN0YXRlKHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KQogICAgIDogbV9pbmxpbmVWZXJ0aWNh
bEZpZWxkT2ZWaWV3KGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCmluZGV4IGRjMGRlNGE2
NWQxNGYxNjEwNjNmZTVmYmZmOTQ5ZGFiNmIwNTIyYTAuLmNjODdmYjE0YzU2ZjI2ZTRiZWFhODhj
NTg2OWQxNDc0OGRhZGJmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZW5kZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZW5kZXJTdGF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUg
ZGVwdGhGYXIoKSBjb25zdCB7IHJldHVybiBtX2RlcHRoLmZhcjsgfQogICAgIHZvaWQgc2V0RGVw
dGhGYXIoZG91YmxlIGZhcikgeyBtX2RlcHRoLmZhciA9IGZhcjsgfTsKIAotICAgIE9wdGlvbmFs
PGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbmxp
bmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVWZXJ0aWNhbEZp
ZWxkT2ZWaWV3OyB9CiAgICAgdm9pZCBzZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KGRvdWJs
ZSBmaWVsZE9mVmlldykgeyBtX2lubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgPSBmaWVsZE9mVmll
dzsgfQogCiAgICAgUmVmUHRyPFdlYlhSV2ViR0xMYXllcj4gYmFzZUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNlTGF5ZXI7IH0KQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29tcG9zaXRpb25FbmFibGVkKGJvb2wgY29tcG9zaXRpb25FbmFibGVkKSB7IG1fY29tcG9z
aXRpb25FbmFibGVkID0gY29tcG9zaXRpb25FbmFibGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgV2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3KTsKKyAg
ICBleHBsaWNpdCBXZWJYUlJlbmRlclN0YXRlKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmaWVsZE9m
Vmlldyk7CiAgICAgZXhwbGljaXQgV2ViWFJSZW5kZXJTdGF0ZShjb25zdCBXZWJYUlJlbmRlclN0
YXRlJik7CiAKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNp
bml0aWFsaXplLXRoZS1yZW5kZXItc3RhdGUKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgZG91YmxlIG5lYXIgeyAwLjEgfTsgLy8gaW4gbWV0ZXJzCiAgICAgICAgIGRvdWJsZSBm
YXIgeyAxMDAwIH07IC8vIGluIG1ldGVycwogICAgIH0gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxk
b3VibGU+IG1faW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2lubGluZVZlcnRpY2FsRmllbGRPZlZpZXc7IC8vIGluIHJh
ZGlhbnMKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBtX2Jhc2VMYXllcjsKICAgICBXZWFr
UHRyPEhUTUxDYW52YXNFbGVtZW50PiBtX291dHB1dENhbnZhczsKICAgICBib29sIG1fY29tcG9z
aXRpb25FbmFibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmgKaW5kZXggNDljOWY2OGI3MWVmYjRjOTQ4OTE1NWM2ZmQxMmM4ZWMxZWMzOWIw
OS4uODkyOWQ4ZmY4NTgxZDQ5OTZlZWViYjI5NTg1NjgzOGVkYjBlYWQwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0xMzEsNyArMTMxLDcgQEAg
cHJpdmF0ZToKICAgICBYUlZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICAgICBV
bmlxdWVSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBtX2lucHV0U291cmNlczsKICAgICBib29s
IG1fZW5kZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEVuZFByb21pc2U+IG1fZW5kUHJvbWlz
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVuZFByb21pc2U+IG1fZW5kUHJvbWlzZTsKIAogICAgIFdl
YlhSU3lzdGVtJiBtX3hyU3lzdGVtOwogICAgIFhSU2Vzc2lvbk1vZGUgbV9tb2RlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCA2ZTNhYjdjMjEy
M2QzNDA0MjAyYmU0MWUwZDBlZjBhYjVkYjQ0YWU5Li40YjYyYWQ5YjI1MWIyNjg1ZmQ1ZGZkNDhl
OGQ1MjRkZDMzNmY0OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0cnVjdCBXZWJYUlN5c3RlbTo6UmVzb2x2
ZWRSZXF1ZXN0ZWRGZWF0dXJlcyB7CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI3Jlc29sdmUtdGhlLXJlcXVlc3RlZC1mZWF0dXJlcwotT3B0aW9uYWw8V2Vi
WFJTeXN0ZW06OlJlc29sdmVkUmVxdWVzdGVkRmVhdHVyZXM+IFdlYlhSU3lzdGVtOjpyZXNvbHZl
UmVxdWVzdGVkRmVhdHVyZXMoWFJTZXNzaW9uTW9kZSBtb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0
JiBpbml0LCBQbGF0Zm9ybVhSOjpEZXZpY2UqIGRldmljZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJYUlN5c3RlbTo6UmVzb2x2ZWRS
ZXF1ZXN0ZWRGZWF0dXJlcz4gV2ViWFJTeXN0ZW06OnJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhY
UlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IFhSU2Vzc2lvbkluaXQmIGluaXQsIFBsYXRmb3JtWFI6
OkRldmljZSogZGV2aWNlLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgLy8gMS4gTGV0IGNvbnNlbnRSZXF1aXJlZCBiZSBhbiBlbXB0eSBsaXN0IG9mIERP
TVN0cmluZy4KICAgICAvLyAyLiBMZXQgY29uc2VudE9wdGlvbmFsIGJlIGFuIGVtcHR5IGxpc3Qg
b2YgRE9NU3RyaW5nLgpAQCAtMzI1LDcgKzMyNSw3IEBAIE9wdGlvbmFsPFdlYlhSU3lzdGVtOjpS
ZXNvbHZlZFJlcXVlc3RlZEZlYXR1cmVzPiBXZWJYUlN5c3RlbTo6cmVzb2x2ZVJlcXVlc3RlZEZl
CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3JlcXVlc3Qt
dGhlLXhyLXBlcm1pc3Npb24KLU9wdGlvbmFsPFdlYlhSU3lzdGVtOjpGZWF0dXJlTGlzdD4gV2Vi
WFJTeXN0ZW06OnJlc29sdmVGZWF0dXJlUGVybWlzc2lvbnMoWFJTZXNzaW9uTW9kZSBtb2RlLCBj
b25zdCBYUlNlc3Npb25Jbml0JiBpbml0LCBQbGF0Zm9ybVhSOjpEZXZpY2UqIGRldmljZSwgSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxXZWJY
UlN5c3RlbTo6RmVhdHVyZUxpc3Q+IFdlYlhSU3lzdGVtOjpyZXNvbHZlRmVhdHVyZVBlcm1pc3Np
b25zKFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgWFJTZXNzaW9uSW5pdCYgaW5pdCwgUGxhdGZv
cm1YUjo6RGV2aWNlKiBkZXZpY2UsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkg
Y29uc3QKIHsKICAgICAvLyAxLiBTZXQgc3RhdHVzJ3MgZ3JhbnRlZCB0byBhbiBlbXB0eSBGcm96
ZW5BcnJheS4KICAgICAvLyAyLiBMZXQgcmVxdWlyZWRGZWF0dXJlcyBiZSBkZXNjcmlwdG9yJ3Mg
cmVxdWlyZWRGZWF0dXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uaAppbmRleCA2NDU4NTc0ZTAxODQ5NTFhYTgwMzQ3ZjE5ODAzOWFjZTBlOGI5MjBkLi4yODEx
YzgyODg0MTkyMWUyNDY0YTExMzZkZjZkNmIxNDE5ZjQ5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGlubGluZVNlc3Npb25SZXF1ZXN0SXNBbGxvd2VkRm9yR2xvYmFsT2JqZWN0KERP
TVdpbmRvdyYsIERvY3VtZW50JiwgY29uc3QgWFJTZXNzaW9uSW5pdCYpIGNvbnN0OwogCiAgICAg
c3RydWN0IFJlc29sdmVkUmVxdWVzdGVkRmVhdHVyZXM7Ci0gICAgT3B0aW9uYWw8UmVzb2x2ZWRS
ZXF1ZXN0ZWRGZWF0dXJlcz4gcmVzb2x2ZVJlcXVlc3RlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGUs
IGNvbnN0IFhSU2Vzc2lvbkluaXQmLCBQbGF0Zm9ybVhSOjpEZXZpY2UqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8RmVhdHVyZUxpc3Q+IHJlc29sdmVGZWF0dXJl
UGVybWlzc2lvbnMoWFJTZXNzaW9uTW9kZSwgY29uc3QgWFJTZXNzaW9uSW5pdCYsIFBsYXRmb3Jt
WFI6OkRldmljZSosIEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlc29sdmVkUmVxdWVzdGVkRmVhdHVyZXM+IHJlc29sdmVSZXF1ZXN0ZWRGZWF0dXJlcyhY
UlNlc3Npb25Nb2RlLCBjb25zdCBYUlNlc3Npb25Jbml0JiwgUGxhdGZvcm1YUjo6RGV2aWNlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmVhdHVyZUxp
c3Q+IHJlc29sdmVGZWF0dXJlUGVybWlzc2lvbnMoWFJTZXNzaW9uTW9kZSwgY29uc3QgWFJTZXNz
aW9uSW5pdCYsIFBsYXRmb3JtWFI6OkRldmljZSosIEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25z
dDsKIAogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RlZmF1
bHQtaW5saW5lLXhyLWRldmljZQogICAgIGNsYXNzIER1bW15SW5saW5lRGV2aWNlIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtWFI6OkRldmljZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHJlcXVl
c3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkg
Y29uc3QgZmluYWw7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBj
cmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKSBmaW5hbCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9v
bCkgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgICAgIHZvaWQgZGVsZXRlTGF5
ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlJ
bmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5saW5lRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwCmluZGV4IGZjZTZiZjExNDVmZTAzZTBjZDE3NmZkMTcxN2E4
OGZlZWM5NTUwMWQuLjdhNDE5NjBjYTExYzZkYjIyMmM2MTU5MmVlMGZkNGUxMmJlNGY1NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKQEAgLTU3LDE0ICs1
NywxNCBAQCBXZWJYUlZpZXc6OldlYlhSVmlldyhSZWY8V2ViWFJGcmFtZT4mJiBmcmFtZSwgWFJF
eWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybQogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkg
PSBkZWZhdWx0OwogCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNk
b20teHJ2aWV3LXJlY29tbWVuZGVkdmlld3BvcnRzY2FsZQotT3B0aW9uYWw8ZG91YmxlPiBXZWJY
UlZpZXc6OnJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gV2ViWFJWaWV3OjpyZWNvbW1lbmRlZFZpZXdwb3J0U2NhbGUoKSBjb25zdAogewogICAg
IC8vIFJldHVybiBudWxsIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlz
dGljIG9yIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNkb20teHJ2aWV3LXJlcXVlc3R2aWV3cG9ydHNjYWxlCi12b2lkIFdlYlhSVmll
dzo6cmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZSkKK3ZvaWQgV2Vi
WFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRTY2FsZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWUp
CiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPD0gMC4wKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaAppbmRleCAxOTY0ZTg4NTNjMDgx
MDlkYTUwMzQwYzE5YTdhNjc5M2M5MmJlMTE4Li4yYWJiMjYyNDBlNDdmMDEzOGVhZmRjOTVkYjNj
ZDY3Njc5MTQyMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgK
QEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVj
dGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbi5nZXQoKTsgfQogICAgIGNv
bnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNmb3JtLmdldCgpOyB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3Bv
cnRTY2FsZSgpIGNvbnN0OwotICAgIHZvaWQgcmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0aW9uYWw8
ZG91YmxlPik7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRT
Y2FsZSgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdFZpZXdwb3J0U2NhbGUoc3RkOjpvcHRpb25h
bDxkb3VibGU+KTsKIAogICAgIGRvdWJsZSByZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0
TW9kaWZpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRNb2RpZmlhYmxlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAppbmRleCBiYTMw
NTJjOWQ4MDBjNzJkMWMxYjlhZjM5ZWQ0M2UzZGJmMGY2MTZlLi4xYTA2ZjU0MjZiMjhkNWY0Mjkx
MzUxY2M5N2RiYjk1OWEzZGI5MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJXZWJHTExheWVyLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgSW50U2l6ZSBjb21wdXRlTmF0aXZlV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKTsKICAg
ICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlUmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1
dGlvbigpOwogCi0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JikgZmluYWwgeyB9OworICAgIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52
YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWwgeyB9OwogICAg
IHZvaWQgY2FudmFzUmVzaXplZChDYW52YXNCYXNlJikgZmluYWw7CiAgICAgdm9pZCBjYW52YXNE
ZXN0cm95ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsgfTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBt
X3Nlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5w
dXRTb3VyY2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUklucHV0U291
cmNlRXZlbnQuaAppbmRleCBlM2M1NDExMzQ1NTFiYzI3NWFmMGZjNDFiNjdlYWM0Mzk4MzNmMDkx
Li4zMTQyMGM5NzQ4ZDdkODI3M2ExOGQ5MGFjNTkwZmNkNzY4YjIxMzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZUV2ZW50LmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJYUkZyYW1lPiBtX2ZyYW1lOwogICAg
IFJlZlB0cjxXZWJYUklucHV0U291cmNlPiBtX2lucHV0U291cmNlOwotICAgIE9wdGlvbmFsPGlu
dD4gbV9idXR0b25JbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9idXR0b25JbmRleDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJSZW5kZXJTdGF0ZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvWFJSZW5kZXJTdGF0ZUluaXQuaAppbmRleCA0YzQyOTNlMWE0M2Y4OGQ0MTM4NmQz
ZDEzMGE5Y2MyNzZjMWY1NWNlLi4wYjY0Y2I4ZDBjM2RjNDVjYTMxZTI0NWVhOTZmMGZlNGNlOTQ2
MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSUmVuZGVyU3Rh
dGVJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUlJlbmRlclN0YXRl
SW5pdC5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IFhSUmVuZGVyU3RhdGVJbml0IHsKLSAgICBPcHRpb25hbDxkb3VibGU+IGRlcHRoTmVhcjsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IGRlcHRoRmFyOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5saW5l
VmVydGljYWxGaWVsZE9mVmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGVwdGhOZWFy
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkZXB0aEZhcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gaW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsKICAgICBSZWZQdHI8V2ViWFJXZWJH
TExheWVyPiBiYXNlTGF5ZXI7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJYUkxheWVy
Pj4+IGxheWVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViWFJMYXllcj4+
PiBsYXllcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9T
ZXNzaW9uSUQuaAppbmRleCA1YjM1NmEzMWZmYTBlOTVmYjk4YjMzNDk5Y2FiNTE4MDgxYjYwM2I4
Li41ZDZkNTBiYjAwZWZkZDM3Nzk0MDYyMWQ5NjZiYTZkN2JmZmM4NWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvU2Vzc2lvbklELmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gIWlzRXBoZW1lcmFsKCk7IH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2Vzc2lvbklE
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNlc3Npb25JRD4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIFNlc3Npb25J
RCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogCkBAIC05NCw5ICs5NCw5
IEBAIHZvaWQgU2Vzc2lvbklEOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlc3Npb25JRD4gU2Vzc2lvbklEOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2Vzc2lvbklEPiBTZXNzaW9u
SUQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBz
ZXNzaW9uSUQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2Vzc2lvbklEOwogICAgIGRl
Y29kZXIgPj4gc2Vzc2lvbklEOwogICAgIGlmICghc2Vzc2lvbklEIHx8ICFpc1ZhbGlkU2Vzc2lv
bklEVmFsdWUoKnNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0LmgK
aW5kZXggZjFkNjhjODFmMGM0MjI5MzQzYThjZTU4ZTNiZjJjOTBmZjcxNGE3NC4uMDBlOWU2MDY1
OWI1Yzk4MmU3ODMxMjBhNjIyYmNkYThkNTZlNGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBPdXRwdXREZXZpY2U7CiAKIGNsYXNzIE91dHB1dENvbnRleHQgewogcHVibGljOgot
ICAgIHN0YXRpYyBPcHRpb25hbDxPdXRwdXRDb250ZXh0PiYgc2hhcmVkQXVkaW9QcmVzZW50YXRp
b25PdXRwdXRDb250ZXh0KCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8T3V0cHV0Q29udGV4
dD4mIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpOwogCiAgICAgYm9vbCBz
dXBwb3J0c011bHRpcGxlT3V0cHV0RGV2aWNlcygpOwogICAgIFN0cmluZyBkZXZpY2VOYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRD
b250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29u
dGV4dC5tbQppbmRleCAwYzkxZjY1ZDY1NDAzY2NmNWNjMjRlMzQ4ODEwNWZhMTZiZjEyNTU4Li4y
NGIxMWFmZmViMjM2M2E3YzQ3NDcxOWQyNDM5NmM2NWZmY2FiMDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQubW0KQEAgLTQz
LDkgKzQzLDkgQEAgT3V0cHV0Q29udGV4dDo6T3V0cHV0Q29udGV4dChSZXRhaW5QdHI8QVZPdXRw
dXRDb250ZXh0PiYmIGNvbnRleHQpCiB7CiB9CiAKLU9wdGlvbmFsPE91dHB1dENvbnRleHQ+JiBP
dXRwdXRDb250ZXh0OjpzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQoKQorc3Rk
OjpvcHRpb25hbDxPdXRwdXRDb250ZXh0PiYgT3V0cHV0Q29udGV4dDo6c2hhcmVkQXVkaW9QcmVz
ZW50YXRpb25PdXRwdXRDb250ZXh0KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0
aW9uYWw8T3V0cHV0Q29udGV4dD4+IHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4
dCA9IFtdICgpIC0+IE9wdGlvbmFsPE91dHB1dENvbnRleHQ+IHsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8c3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0Pj4gc2hhcmVkQXVkaW9QcmVzZW50
YXRpb25PdXRwdXRDb250ZXh0ID0gW10gKCkgLT4gc3RkOjpvcHRpb25hbDxPdXRwdXRDb250ZXh0
PiB7CiAgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4
dCldKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oCmluZGV4IDI3NGUwYWFmMWRm
ZWI4YzcyMTYxODA3NWFhNzJiZTA3NmE0MTY1MGYuLjYyOTJhMGY4MGJiMGY1ODI2NTMyZmU0MWIz
YmFhMDkxYmRlMmM2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2djcnlwdC9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvVXRpbGl0aWVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxv
Z0Vycm9yKGdjcnlfZXJyb3JfdCBlcnJvcikKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIE9w
dGlvbmFsPGludD4gYWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShzaXplX3Qga2V5U2l6ZSkKK3N0YXRp
YyBpbmxpbmUgc3RkOjpvcHRpb25hbDxpbnQ+IGFlc0FsZ29yaXRobUZvcktleVNpemUoc2l6ZV90
IGtleVNpemUpCiB7CiAgICAgc3dpdGNoIChrZXlTaXplKSB7CiAgICAgY2FzZSAxMjg6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAppbmRl
eCA0NTVlMDgzOTNlZTUwMzY4ZDc4NDc4NTI5NzI5NjIzZjYwYjg0NzlhLi40MDNlMTNmNDE4NjM0
OWNkMzE4NmY4MjAyMjg2MzZlMjk0NTY4NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29s
IGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1l
LCBjb25zdCBWZWN0b3I8dWludAogICAgIHJldHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOwogfQog
Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBj
b25zdCBjaGFyKiBlbGVtZW50TmFtZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBl
bGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCiB7CiAg
ICAgaW50IGxlbmd0aCA9IDA7CiAgICAgdW5zaWduZWQgdHlwZSA9IDA7CkBAIC0xNDIsNyArMTQy
LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9v
dCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLU9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5jb2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNo
YXIqIGVsZW1lbnROYW1lKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVuY29kZWRE
YXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSkKIHsKICAgICBpbnQg
bGVuZ3RoID0gMDsKICAgICBpbnQgcmV0ID0gYXNuMV9kZXJfY29kaW5nKHJvb3QsIGVsZW1lbnRO
YW1lLCBudWxscHRyLCAmbGVuZ3RoLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKaW5kZXggYmFkNmUzOTA1MjBiNGNkYzhiZmQ3
OGQyOTA3ZjRkM2I4YzZhMDljMi4uMGFkNzI4OWVjZWVhOTc1NGFmYzgzNzM0ZmJlMjhiNDFjMWRk
NjExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0
aWVzLmgKQEAgLTU2LDggKzU2LDggQEAgcHJpdmF0ZToKIAogYm9vbCBjcmVhdGVTdHJ1Y3R1cmUo
Y29uc3QgY2hhciogZWxlbWVudE5hbWUsIGFzbjFfbm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0
cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50
RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpOwotT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBlbmNvZGVkRGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciog
ZWxlbWVudE5hbWUpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRh
KGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSk7CitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZW5jb2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIq
IGVsZW1lbnROYW1lKTsKIGJvb2wgd3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290LCBjb25zdCBj
aGFyKiBlbGVtZW50TmFtZSwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsKIAog
fSAvLyBuYW1lc3BhY2UgVEFTTjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMv
U2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCA4NTJkNjdiN2IyODlk
NmIzYTcwZmRiZjlmY2IyNmU5MWQ1ZjY5ZmFlLi43ZTkxZDM1YzM5YmU0NjIwYjczNGRjNjc0ZjJi
MWFmNjE3YmY4MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdz
VGVtcGxhdGVzL1NldHRpbmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9T
ZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5jcHAuZXJiCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSAlPig8JT0gQHNldHRp
bmcucGFyYW1ldGVyVHlwZSAlPgogCiA8JS0gZm9yIEBzZXR0aW5nIGluIEBhbGxTZXR0aW5nc1Nl
dC5pbnNwZWN0b3JPdmVycmlkZVNldHRpbmdzIGRvIC0lPgogPCUtIGlmIEBzZXR0aW5nLmhhc0Nv
bXBsZXhTZXR0ZXI/IC0lPgotdm9pZCBTZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0
aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKE9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0
ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlKQordm9pZCBT
ZXR0aW5nczo6PCU9IEBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSAlPkluc3BlY3Rvck92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4+IDwlPSBAc2V0
dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUpCiB7CiAgICAgaWYgKG1fdmFsdWVzLjwlPSBA
c2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUgPT0gPCU9IEBzZXR0aW5nLm5hbWUgJT5J
bnNwZWN0b3JPdmVycmlkZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYiBiL1NvdXJjZS9X
ZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIKaW5kZXggOWZm
YWVmYmMwNjY2NmQ4YTk3N2JjYjljNDE3NDdiMDRiNjc0MTE2OC4uNjgyYWRmNzI4OTIwNjcwMjdk
YjMxYTEyZGUyMDc1NWU2ZGUxYTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0
cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJiCkBAIC02Myw5ICs2Myw5IEBA
IHB1YmxpYzoKIAogPCUtIGZvciBAc2V0dGluZyBpbiBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9y
T3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAgICA8JS0gaWYgQHNldHRpbmcuaGFzQ29tcGxleFNl
dHRlcj8gLSU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCA8JT0gQHNldHRpbmcuc2V0dGVyRnVu
Y3Rpb25OYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnBhcmFt
ZXRlclR5cGUgJT4+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIDwlPSBAc2V0dGluZy5zZXR0
ZXJGdW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0
dGluZy5wYXJhbWV0ZXJUeXBlICU+Pik7CiAgICAgPCUtIGVsc2UgLSU+Ci0gICAgdm9pZCA8JT0g
QHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUoT3B0aW9uYWw8
PCU9IEBzZXR0aW5nLnBhcmFtZXRlclR5cGUgJT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVj
dG9yT3ZlcnJpZGUpIHsgbV92YWx1ZXMuPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVy
cmlkZSA9IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGU7IH0KKyAgICB2b2lk
IDwlPSBAc2V0dGluZy5zZXR0ZXJGdW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShzdGQ6
Om9wdGlvbmFsPDwlPSBAc2V0dGluZy5wYXJhbWV0ZXJUeXBlICU+PiA8JT0gQHNldHRpbmcubmFt
ZSAlPkluc3BlY3Rvck92ZXJyaWRlKSB7IG1fdmFsdWVzLjwlPSBAc2V0dGluZy5uYW1lICU+SW5z
cGVjdG9yT3ZlcnJpZGUgPSA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOyB9
CiAgICAgPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAgICAgRm9udEdlbmVyaWNGYW1pbGllcyYg
Zm9udEdlbmVyaWNGYW1pbGllcygpIGZpbmFsIHsgcmV0dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmlj
RmFtaWxpZXM7IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBWYWx1ZXMgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKIDwlLSBmb3IgQHNldHRpbmcgaW4gQGFsbFNldHRpbmdzU2V0
Lmluc3BlY3Rvck92ZXJyaWRlU2V0dGluZ3MgZG8gLSU+Ci0gICAgICAgIE9wdGlvbmFsPDwlPSBA
c2V0dGluZy50eXBlICU+PiA8JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPDwlPSBAc2V0dGluZy50eXBlICU+PiA8JT0gQHNldHRpbmcu
bmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlOwogPCUtIGVuZCAtJT4KIAogICAgICAgICBGb250R2Vu
ZXJpY0ZhbWlsaWVzIGZvbnRHZW5lcmljRmFtaWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlYWI4MDQ1YmE3OGEyNWY0ZjU1MzJi
ZDI2OTEyZThhNGNiNTEyYmRjLi5mOTIzNTA1YmM2NWU0ZmJjODg3OGM3ZjFjNmYyMzcxNDU3YTQ3
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKQEAgLTIwMjYsNyArMjAyNiw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsCiAgICAgcmV0
dXJuIENoYXJhY3Rlck9mZnNldChjdXJyZW50Tm9kZSwgbGFzdFN0YXJ0T2Zmc2V0LCBvZmZzZXRJ
bkNoYXJhY3RlciwgcmVtYWluaW5nKTsKIH0KIAotaW50IEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZv
clJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCitpbnQgQVhPYmplY3RD
YWNoZTo6bGVuZ3RoRm9yUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIwNTQsNyAr
MjA1NCw3IEBAIFNpbXBsZVJhbmdlIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNvbnRlbnRz
KE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhu
b2RlKTsKIH0KICAgICAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBvcmlnaW5hbFJhbmdlLCBj
b25zdCBTdHJpbmcmIG1hdGNoVGV4dCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2Jq
ZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIG9y
aWdpbmFsUmFuZ2UsIGNvbnN0IFN0cmluZyYgbWF0Y2hUZXh0KQogewogICAgIC8vIENyZWF0ZSBh
IGxhcmdlIGVub3VnaCByYW5nZSB0byBmaW5kIHRoZSB0ZXh0IHdpdGhpbiBpdCB0aGF0J3MgYmVp
bmcgc2VhcmNoZWQgZm9yLgogICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSBtYXRjaFRleHQubGVu
Z3RoKCk7CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBzdGF0aWMgTm9kZSogcmVzZXROb2RlQW5kT2Zm
c2V0Rm9yUmVwbGFjZWROb2RlKE5vZGUmIHJlcGxhY2VkTm9kZSwgaW50JiBvZmZzZXQsCiAgICAg
cmV0dXJuIHJlcGxhY2VkTm9kZS5wYXJlbnROb2RlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFj
dGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0
LCBib29sIGlzU3RhcnQpCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxNTcsNyArMjE1Nyw3IEBAIHN0YXRpYyBi
b29sIHNldFJhbmdlU3RhcnRPckVuZFdpdGhDaGFyYWN0ZXJPZmZzZXQoU2ltcGxlUmFuZ2UmIHJh
bmdlLCBjb25zdCBDaGFyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldDIpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVj
dENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQxLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rl
ck9mZnNldDIpCiB7CiAgICAgYm9vbCBhbHJlYWR5SW5PcmRlciA9IGNoYXJhY3Rlck9mZnNldHNJ
bk9yZGVyKGNoYXJhY3Rlck9mZnNldDEsIGNoYXJhY3Rlck9mZnNldDIpOwogICAgIGF1dG8gc3Rh
cnQgPSBib3VuZGFyeVBvaW50KGFscmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MSA6IGNo
YXJhY3Rlck9mZnNldDIsIHRydWUpOwpAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJE
YXRhKFRleHRNYXIKICAgICByZXR1cm4gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CiB9CiAK
LU9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCitzdGQ6
Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCiB7CiAg
ICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogfQogCiAvLyBU
aGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lk
IGEgc3luY2hyb25vdXMgbGF5b3V0LgotT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0
Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQorc3RkOjpvcHRpb25hbDxUZXh0TWFy
a2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5U
ZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50Pih0ZXh0Q29udHJvbCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNjI3LDE0ICsyNjI3LDE0IEBAIENoYXJhY3Rlck9mZnNl
dCBBWE9iamVjdENhY2hlOjpuZXh0V29yZEVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmCiAgICAgcmV0dXJuIGVuZENoYXJhY3Rlck9mZnNldE9mV29yZChuZXh0T2Zmc2V0
LCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9i
amVjdENhY2hlOjpsZWZ0V29yZFJhbmdlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVy
T2Zmc2V0KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6bGVmdFdv
cmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBD
aGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0
ZXJPZmZzZXQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5k
ID0gZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZXb3JkKHN0YXJ0KTsKICAgICByZXR1cm4gcmFuZ2VGb3JV
bm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwogfQogCi1PcHRpb25hbDxTaW1w
bGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmlnaHRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVj
dENhY2hlOjpyaWdodFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNl
dE9mV29yZChjaGFyYWN0ZXJPZmZzZXQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgQ2hh
cmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mV29yZChzdGFydCk7CkBAIC0y
ODU1LDcgKzI4NTUsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFj
dGVyT2Zmc2V0T2ZQYXJhZ3JhcGgoY29uc3QgQ2hhcmFjdGVyT2ZmcwogICAgIHJldHVybiBzdGFy
dE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UocmFuZ2VGb3JOb2RlQ29udGVudHMobm9kZSks
IGZhbHNlKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFn
cmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFw
aEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNl
dCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9m
UGFyYWdyYXBoKGNoYXJhY3Rlck9mZnNldCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVu
ZENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKHN0YXJ0KTsKQEAgLTI4OTYsNyArMjg5Niw3IEBA
IENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRl
bmNlKGNvbnN0IENoYXJhY3Rlck9mZnNlCiAgICAgcmV0dXJuIG5leHRCb3VuZGFyeShjaGFyYWN0
ZXJPZmZzZXQsIGVuZFNlbnRlbmNlQm91bmRhcnkpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQVhPYmplY3RDYWNoZTo6c2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBB
WE9iamVjdENhY2hlOjpzZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBz
dGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UoY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBDaGFy
YWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZTZW50ZW5jZShzdGFydCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDVjM2Jm
MmYxN2Y2ODk3ZGIxNTgzY2VkYzM1MDZiOTU5NWFlYTg4YmUuLjU2NDcxNmNlMzRiZGRjNzZjNjQ0
ZmVmMzFhODFhMGYwZTNhNDNlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oCkBAIC0yMjYsOCArMjI2LDggQEAgcHVibGljOgogICAgIFZlY3RvcjxS
ZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBj
b25zdDsKIAogICAgIC8vIFRleHQgbWFya2VyIHV0aWxpdGllcy4KLSAgICBPcHRpb25hbDxUZXh0
TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJik7Ci0gICAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRh
Rm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQm
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250
cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0
YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRN
YXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgdm9pZCB0ZXh0TWFya2Vy
RGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0Jik7CkBAIC0yMzksMjMgKzIzOSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYsIGNvbnN0IFNp
bXBsZVJhbmdlJiwgYm9vbCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0T3JFbmRDaGFyYWN0
ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wgZW50ZXJUZXh0
Q29udHJvbHMgPSBmYWxzZSk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0
eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7Ci0gICAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiByYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgc3RhdGljIFNpbXBs
ZVJhbmdlIHJhbmdlRm9yTm9kZUNvbnRlbnRzKE5vZGUmKTsKLSAgICBzdGF0aWMgaW50IGxlbmd0
aEZvclJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIHN0YXRpYyBpbnQg
bGVuZ3RoRm9yUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKICAgICAK
ICAgICAvLyBXb3JkIGJvdW5kYXJ5CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRXb3JkRW5kQ2hh
cmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNl
dCBwcmV2aW91c1dvcmRTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
KTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmlnaHRXb3JkUmFuZ2UoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbGVm
dFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiByaWdodFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICAK
ICAgICAvLyBQYXJhZ3JhcGgKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcGFyYWdyYXBoRm9y
Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IHBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dFBhcmFncmFwaEVuZENoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJl
dmlvdXNQYXJhZ3JhcGhTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
KTsKICAgICAKICAgICAvLyBTZW50ZW5jZQotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZW50
ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dFNlbnRlbmNlRW5kQ2hh
cmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNl
dCBwcmV2aW91c1NlbnRlbmNlU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0Jik7CiAgICAgCkBAIC0zNTUsNyArMzU1LDcgQEAgcHVibGljOgogICAgIEFYQ29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVDYWNoZSogY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSgpIHsgcmV0
dXJuIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZS5nZXQoKTsgfQogCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQotICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEOyB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxk
UmVwb3N0Tm90aWZpY2F0aW9uc0ZvclRlc3RzKGJvb2wgdmFsdWUpOwpAQCAtMzY3LDcgKzM2Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCk7CiAgICAg
dm9pZCBkZWZlclRleHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBwcmV2aW91c1ZhbHVlKTsKIAot
ICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgc3RhdGljIFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCkBAIC00NzYsNyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGhhbmRsZU1vZGFsQ2hhbmdlKEVsZW1lbnQmKTsKICAgICAKICAgICBEb2N1bWVudCYgbV9kb2N1
bWVudDsKLSAgICBjb25zdCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdlSUQ7IC8vIGNv
bnN0YW50IGZvciBvYmplY3QncyBsaWZldGltZS4KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBtX3BhZ2VJRDsgLy8gY29uc3RhbnQgZm9yIG9iamVjdCdzIGxpZmV0aW1l
LgogICAgIEhhc2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBtX29iamVj
dHM7CiAgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBBWElEPiBtX3JlbmRlck9iamVjdE1hcHBp
bmc7CiAgICAgSGFzaE1hcDxXaWRnZXQqLCBBWElEPiBtX3dpZGdldE9iamVjdE1hcHBpbmc7CkBA
IC02MjEsNyArNjIxLDcgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGls
ZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpzZXRJc1N5bmNocm9uaXppbmdTZWxlY3Rpb24oYm9vbCkgeyB9CiBpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0U2VsZWN0aW9uSW50ZW50KGNvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50JikgeyB9Ci1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0
Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
K2lubGluZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZv
clVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiBpbmxpbmUgSW50UmVj
dCBBWE9iamVjdENhY2hlOjphYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogaW5saW5lIENoYXJh
Y3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNv
bnN0IEFYQ29yZU9iamVjdCopIHsgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CiBpbmxpbmUg
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRG
b3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIENoYXJhY3Rl
ck9mZnNldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA1ZGZkZDhkMjNiYTJmNjA5MWZmNGZhZDZmNjEzMzk2
YzgxOTQxOTUyLi42ZTZlNzY0MDRlZTEzOGIzY2IwNjIzYTVhZWFhZDU0YTdjMWU0YmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01p
c3NwZWxsaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNNaXNzcGVsbGVkOwogfQogCi1PcHRpb25h
bDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0
aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewogICAgIGF1dG8gbm9kZSA9IHRo
aXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSogY3JpdGUKIC8vIFJldHVybnMgdGhlIHJhbmdlIHRoYXQgaXMgZmV3ZXIgcG9zaXRp
b25zIGF3YXkgZnJvbSB0aGUgcmVmZXJlbmNlIHJhbmdlLgogLy8gTk9URTogVGhlIGFmdGVyIHJh
bmdlIGlzIGV4cGVjdGVkIHRvIEFDVFVBTExZIGJlIGFmdGVyIHRoZSByZWZlcmVuY2UgcmFuZ2Ug
YW5kIHRoZSBiZWZvcmUKIC8vIHJhbmdlIGlzIGV4cGVjdGVkIHRvIEFDVFVBTExZIGJlIGJlZm9y
ZS4gVGhlc2UgYXJlIG5vdCBjaGVja2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotc3RhdGlj
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUNsb3Nlc3RUb1JhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiByZWZlcmVuY2VSYW5nZSwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiYgYmVmb3JlUmFuZ2UpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VDbG9zZXN0VG9SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmVm
ZXJlbmNlUmFuZ2UsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiYgYWZ0ZXJSYW5nZSwgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mJiBiZWZvcmVSYW5nZSkKIHsKICAgICBpZiAoIWJlZm9y
ZVJhbmdlKQogICAgICAgICByZXR1cm4gV1RGTW92ZShhZnRlclJhbmdlKTsKQEAgLTUyMiw3ICs1
MjIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQ2xvc2VzdFRvUmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVyZW5jZVJhbgogICAgIHJldHVybiBXVEZNb3ZlKGRpc3Rh
bmNlQmVmb3JlIDw9IGRpc3RhbmNlQWZ0ZXIgPyBiZWZvcmVSYW5nZSA6IGFmdGVyUmFuZ2UpOwog
fQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VPZlN0
cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHJlZmVyZW5j
ZVJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIHNlYXJjaERpcmVjdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3MpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFu
Z2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYgcmVmZXJlbmNlUmFuZ2UsIEFjY2Vzc2li
aWxpdHlTZWFyY2hEaXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoU3RyaW5ncykgY29uc3QKIHsKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC01MzMsNyArNTMzLDcgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUlu
RGlyZWN0aW8KICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKICAgICAgICAgZmluZE9wdGlvbnMu
YWRkKEZpbmRPcHRpb25GbGFnOjpCYWNrd2FyZHMpOwogICAgIAotICAgIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBjbG9zZXN0U3RyaW5nUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gY2xvc2VzdFN0cmluZ1JhbmdlOwogICAgIGZvciAoYXV0byYgc2VhcmNoU3RyaW5nIDogc2Vh
cmNoU3RyaW5ncykgewogICAgICAgICBpZiAoYXV0byBmb3VuZFN0cmluZ1JhbmdlID0gZnJhbWUt
PmVkaXRvcigpLnJhbmdlT2ZTdHJpbmcoc2VhcmNoU3RyaW5nLCByZWZlcmVuY2VSYW5nZSwgZmlu
ZE9wdGlvbnMpKSB7CiAgICAgICAgICAgICBib29sIGZvdW5kU3RyaW5nSXNDbG9zZXI7CkBAIC01
NTMsNyArNTUzLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW8KIAogLy8gUmV0dXJucyBhbiBj
b2xsYXBzZWQgcmFuZ2UgcHJlY2VkaW5nIHRoZSBkb2N1bWVudCBjb250ZW50cyBpZiB0aGVyZSBp
cyBubyBzZWxlY3Rpb24uCiAvLyBGSVhNRTogV2h5IGlzIHRoYXQgYmVoYXZpb3IgbW9yZSB1c2Vm
dWwgdGhhbiByZXR1cm5pbmcgbnVsbCBpbiB0aGF0IGNhc2U/Ci1PcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBjb25zdAorc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBj
b25zdAogewogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CkBAIC01NjYsNyArNTY2LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNlbGVjdGlvblJhbmdlKCkgY29uc3QKICAgICByZXR1cm4geyB7IHsgZG9jdW1lbnQs
IDAgfSwgeyBkb2N1bWVudCwgMCB9IH0gfTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdAogewog
ICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCkBAIC01NzQsOSAr
NTc0LDkgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1l
bnRSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNv
bnRlbnRzKCpub2RlKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaFN0cmluZ3Ms
IGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6ZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoU3Ry
aW5ncywgY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZv
dW5kOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZvdW5kOwogICAgIGlmIChkaXJl
Y3Rpb24gPT0gQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb246OkZvcndhcmQpCiAgICAg
ICAgIGZvdW5kID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc3RhcnQs
IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQsIHNlYXJjaFN0cmluZ3MpOwogICAg
IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dERpcmVjdGlvbjo6
QmFja3dhcmQpCkBAIC01OTksNyArNTk5LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHMKIAog
VmVjdG9yPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kVGV4dFJhbmdlcyhj
b25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhJiBjcml0ZXJpYSkgY29uc3QKIHsK
LSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gcmFuZ2U7CiAgICAgaWYgKGNyaXRlcmlhLnN0YXJ0ID09IEFjY2Vzc2liaWxpdHlT
ZWFyY2hUZXh0U3RhcnRGcm9tOjpTZWxlY3Rpb24pCiAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9u
UmFuZ2UoKTsKICAgICBlbHNlCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBWaXNpYmxlUG9zaXRpb25S
YW5nZSBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNv
bnN0IFBsYQogICAgIHJldHVybiB7IHN0YXJ0UG9zaXRpb24sIHZpc2libGVQb3NpdGlvbkZvcklu
ZGV4KHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoKSB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVS
YW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQ
bGFpblRleHRSYW5nZSYgcmFuZ2UpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4
dFJhbmdlJiByYW5nZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZ2V0TGVu
Z3RoRm9yVGV4dFJhbmdlKCk7CiAgICAgaWYgKHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoID4g
dGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggNGQ5YzkzMzE4YTg2NzFiM2JlMDk0MmMwZWMyZmI3NjE0ZTNl
ZDk3Ny4uYmQ1MDE5NjVhM2JlNmU2MzdiMDFiNGJkMWE5MTkyNDg5NThjM2ZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAg
LTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc01pc3NwZWxsaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBj
b25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtaXNzcGVsbGlu
Z1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVj
dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3Jl
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhc1Nh
bWVGb250Q29sb3IoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTUyNCw3ICs1MjQsNyBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb25SYW5nZSgpOyB9CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWaXNp
YmxlUG9zaXRpb25SYW5nZSgpOyB9CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVu
dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
ZWxlbWVudFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RhdGljIGJvb2wgcmVwbGFjZWRO
b2RlTmVlZHNDaGFyYWN0ZXIoTm9kZSogcmVwbGFjZWROb2RlKTsKIAogICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtNTM4LDcgKzUzOCw3IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2
aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9y
UGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdl
Rm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTc5
NSw5ICs3OTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU9mU3Ry
aW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2li
aWxpdHlTZWFyY2hEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGlvblJhbmdlKCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNzaWJpbGl0eVNlYXJjaFRl
eHREaXJlY3Rpb24pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdl
T2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdlJiwgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3Rpb25SYW5nZSgpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNlYXJjaFN0cmluZ3MsIGNvbnN0IFNpbXBsZVJhbmdlJiBzdGFydCwgQWNjZXNz
aWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgQVhJRCBtX2lkIHsgMCB9
OwogcHJvdGVjdGVkOiAvLyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDk4MjMwNmI1NDgyZDIyYzFmMGM2ODY2OGFkODZkY2Jh
YWYyZTU0OGEuLmZmNWM2NGZlMDllMDAzOTc2NmEyNmY4OTU2YmExMTUyYWJhM2I2YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCkBAIC05NjcsNyArOTY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRh
bGljRm9udCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc3BlbGxpbmcoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYgc3RhcnQsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rp
b24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1p
c3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHN0YXJ0LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1BsYWluVGV4dCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoY29uc3QgQVhDb3JlT2Jq
ZWN0JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKGNvbnN0
IEFYQ29yZU9iamVjdCYpIGNvbnN0ID0gMDsKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
aXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBlbGVtZW50UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbGVtZW50UmFuZ2UoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3Jk
ZXJlZFBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSBwb3NpdGlv
bk9mTGVmdFdvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcG9zaXRpb25PZlJpZ2h0V29yZChjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCA9IDA7CkBAIC0xMjczLDcgKzEyNzMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdl
KGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgbGluZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQ
bGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCA9IDA7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8v
IEZJWE1FOiBtYWtlIHRoaXMgYSBDT0NPQSBtZXRob2QuCiAgICAgdmlydHVhbCBBWFRleHRNYXJr
ZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNvbnN0IE5TUmFuZ2UmKSBjb25z
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxYzQ1MjY2ZWI3ZDVlZTRmYTdkYmIzNDdk
NTVlMGQ3MTVmMGZjMjYwLi5kZDUwNDUyODdjYjEzMmJjNDMyYWUyZTk2ZjM5MTg2YTlhOGJmNmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTY0OSw3ICs2NDksNyBAQCBTdHJpbmcgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudAogICAgICAgICAvLyBJZiBwb3NzaWJsZSwgdXNlIGEgdGV4dCBpdGVyYXRvciB0
byBnZXQgdGhlIHRleHQsIHNvIHRoYXQgd2hpdGVzcGFjZQogICAgICAgICAvLyBpcyBoYW5kbGVk
IGNvbnNpc3RlbnRseS4KICAgICAgICAgRG9jdW1lbnQqIG5vZGVEb2N1bWVudCA9IG51bGxwdHI7
Ci0gICAgICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB0ZXh0UmFuZ2U7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHRleHRSYW5nZTsKICAgICAgICAgaWYgKE5vZGUqIG5vZGUg
PSBtX3JlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgIG5vZGVEb2N1bWVudCA9ICZub2Rl
LT5kb2N1bWVudCgpOwogICAgICAgICAgICAgdGV4dFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggMDY4
M2UwY2JhODE0ZmJlYWVmYjNkMmM5Njk4YzQwNTM4NGMzMWIzOC4uMWUzM2RjY2UyYjg4ZDk1MTVk
ODAxNTViYTg5NzQ1ZWFiM2E1NzAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rR2V0T2JqZWN0KEF0a0h5cGVybGluayogbGluaywgZ2ludCBpbgogICAgIHJldHVybiBBVEtf
T0JKRUNUKGFjY2Vzc2libGVIeXBlcmxpbmstPnByaXYtPmh5cGVybGlua0ltcGwpOwogfQogCi1z
dGF0aWMgZ2ludCByYW5nZUxlbmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmos
IGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCitzdGF0aWMgZ2ludCByYW5nZUxl
bmd0aEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmosIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNDg5NGY4
NzcxZGNhNTM5YjE1MmY2ZmVkNTcxMDdjYzBkMWZhNjlkYS4uYTljYWU2ZDcwMTdkMTQzNTMxYWU3
OTZmODNiMzM0N2VmYWNhNWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIDogTlNPYmplY3QKIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0
TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uJil2aXNpYmxlUG9zIGNh
Y2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
ICopdGV4dE1hcmtlcldpdGhDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFj
dGVyT2Zmc2V0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsKLSsgKFdlYkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0YXJ0OihCT09MKWlzU3RhcnQgY2FjaGU6KEFYT2Jq
ZWN0Q2FjaGUqKWNhY2hlOworKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9y
RW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
cmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZTsK
IAogQGVuZAogCkBAIC0yMDcsNyArMjA3LDcgQEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JikKICAg
ICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0
V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAotKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlOihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlIGlzU3RhcnQ6
KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUKKysgKFdlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNo
ZTooQVhPYmplY3RDYWNoZSopY2FjaGUKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtMjM5MCw3ICsyMzkwLDcgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5n
ZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlCiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKGNoYXJh
Y3RlckNvdW50KHsgeyAqc2NvcGUsIDAgfSwgcmFuZ2Uuc3RhcnQgfSksIGNoYXJhY3RlckNvdW50
KHJhbmdlKSk7CiB9CiAKLS0gKE9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFu
Z2U6KE5TUmFuZ2UpcmFuZ2UKKy0gKHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0
VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQogewogICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjc3NCw3ICsyNzc0
LDcgQEAgLSAoQ0dSZWN0KWZyYW1lRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilhcnJheQogICAg
IHJldHVybiBbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6cmVjdCBzcGFjZTpBY2Nlc3NpYmlsaXR5
Q29udmVyc2lvblNwYWNlOjpTY3JlZW5dOwogfQogCi0tIChPcHRpb25hbDxTaW1wbGVSYW5nZT4p
cmFuZ2VGcm9tTWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgd2l0aFRleHQ6KE5TU3RyaW5nICop
dGV4dAorLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGcm9tTWFya2VyczooTlNB
cnJheSAqKW1hcmtlcnMgd2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAogewogICAgIGF1dG8gb3Jp
Z2luYWxSYW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlcnM6bWFya2Vyc107CiAgICAgaWYg
KCFvcmlnaW5hbFJhbmdlKQpAQCAtMjg0OCw3ICsyODQ4LDcgQEAgLSAoV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVy
T2Zmc2UKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFs
bG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAotLSAoT3B0aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1h
cmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFya2VycworLSAoc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4pcmFuZ2VGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCiB7CiAgICAgaWYg
KFt0ZXh0TWFya2VycyBjb3VudF0gIT0gMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTI5MDEsNyArMjkwMSw3IEBAIC0gKE5TQXJyYXkgKil0ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMKICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlcnNG
b3JSYW5nZTpbc2VsZiByYW5nZUZvclRleHRNYXJrZXJzOnRleHRNYXJrZXJzXV07CiB9CiAKLS0g
KE5TQXJyYXkgKil0ZXh0TWFya2Vyc0ZvclJhbmdlOihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mKXJhbmdlCistIChOU0FycmF5ICopdGV4dE1hcmtlcnNGb3JSYW5nZTooY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZDY0NjcwNjFjNjVk
NDg3Njg1MGJlMWFjZGYyMTc0YTM4MjMwZjQ5NC4uOWY4ZTY1YzY4YWIxODk0NDI0OTJmYzliM2U3
ZmZmMTM5ZmE1NzkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTk2Niw3ICs5
NjYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAg
ICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmIGF4UmFuZ2UpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElz
b2xhdGVkT2JqZWN0OjpyYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdl
JiBheFJhbmdlKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0
byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKQEAgLTExNDIsNyArMTE0Miw3IEBA
IFN0cmluZyBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlU
ZXh0VW5kZXJFbGVtZW50TW9kZSkgY29uCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6Om1pc3Nw
ZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7CkBAIC0xNDM4LDcg
KzE0MzgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0
aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZwogICAgICAgICBvYmplY3QtPnNldFNl
bGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpOwogfQogCi1P
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJhbmdlKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRS
YW5nZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBh
eE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmlu
ZGV4IDBhZDgwMDBjNGZiMjU4MGE2ZDg4ZjEyNzkxZWNlZmUyYWY1NDgwZTYuLmY2MWNlZjJmNzky
MGVkYTNjMWZkZWM5ZDg0Y2YxZTEwNDJmYTk5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgK
QEAgLTM5MCw3ICszOTAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25S
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQ
b3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVsZW1lbnRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9z
aXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHBvc2l0aW9uT2ZMZWZ0V29y
ZChjb25zdCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSBwb3NpdGlvbk9mUmlnaHRXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHByaXZhdGU6CiAgICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2Ugc3R5bGVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlv
blJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2Uo
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25z
dCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTQ0Niw3ICs0NDYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29s
KSBvdmVycmlkZTsKIAogICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlU
ZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgp
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3BlbGxpbmdS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1pc3NwZWxsaW5n
UmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uKSBj
b25zdCBvdmVycmlkZTsKICAgICBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBG
bG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQppbmRleCBjODhhM2Q2NjEzMzZhNWRlMWUwZjE5NDU4ZTM4YzAzMjQyNzY3
MDFjLi4xMzBiY2JhNTE3MzRhODA0YjhhMTM1YzdiNzkwMmQ3M2VlZjUxZWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
QEAgLTczNiw3ICs3MzYsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4
dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyUgogCiAvLyBUZXh0TWFy
a2VyUmFuZ2UgPC0+IFNpbXBsZVJhbmdlIGNvbnZlcnNpb24uCiAKLUFYVGV4dE1hcmtlclJlZiBz
dGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBib29sIGlzU3RhcnQpCitBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKQEAg
LTc1MCw3ICs3NTAsNyBAQCBBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JS
YW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uYQogICAgIHJldHVybiBhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLUFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK0FY
VGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hl
KiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFjYWNoZSkKQEAgLTc2MSw3ICs3NjEs
NyBAQCBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmpl
Y3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbgogICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VG
cm9tTWFya2VycyhzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9i
amVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlKQor
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmpl
Y3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJr
ZXJSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBh
ZGM3NDA1ODVlOTIxZTAxYjJlZDk4ZjVjZDYwYTdiMWFmOTVjNTk5Li5lODk0OTYxNGUyYzNkZDZh
ODkzNThhMTI3NTEyYmNmZTUxNzU1NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLm1tCkBAIC02NTgsNyArNjU4LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzZWFyY2hLZXkpID8gc2VhcmNoS2V5IDogQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXkqLCBpZCBhcnJheUVsZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5KiwgaWQgYXJyYXlFbGVtZW50KQogewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tp
bmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oCmluZGV4IGIzMDUyNTRjNDVhOGU3
YWZiMzdjMDc5NGQ4OGVhOTljODczNDExMmMuLjc0MmIzZDAzYTQ4ZjJiOGViNzJhMDlhODUzZjdh
MjE5ZmFiZTJhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaApAQCAt
ODAsOCArODAsOCBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNl
dChBWE9iamVjdENhY2hlKiwgY29uc3QgQ2hhcmFjdGVyT2ZmcwogQ2hhcmFjdGVyT2Zmc2V0IGNo
YXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJl
Zik7CiAKIC8vIFRleHRNYXJrZXJSYW5nZSA8LT4gU2ltcGxlUmFuZ2UgY29udmVyc2lvbi4KLUFY
VGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUq
LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBib29sIGlzU3RhcnQpOwotQVhUZXh0TWFy
a2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRnJvbVJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZv
clRleHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiwgQVhUZXh0TWFya2VyUmFuZ2VSZWYpOwor
QVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoQVhPYmplY3RDYWNo
ZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgYm9vbCBpc1N0YXJ0KTsKK0FY
VGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hl
KiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBBWFRleHRN
YXJrZXJSYW5nZVJlZik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KaW5kZXggY2IzNTkyMWRkZDRlNjA3OTk3MzE1MDJiZWRmZjFhYjNmMTM3NmNhNS4uODk3M2Uz
OTU2NDc0NmRjMzc1ZmE1YjZhMDJjMGRjODU5NGRkYzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcwOSwxMSArNzA5LDExIEBAIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5VGV4dE9wZXJhdGlvbiBhY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbkZvclBhcmFtZXRl
cml6ZWRBdHRyCiAgICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjxP
cHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vz
c2liaWxpdHlNaXNzcGVsbGluZ1NlYXJjaENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFt
cykKK3N0YXRpYyBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2li
aWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vzc2liaWxpdHlNaXNzcGVsbGluZ1NlYXJjaENyaXRl
cmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
LCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtcykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgc3RkOjpwYWlyPE9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0
eVNlYXJjaERpcmVjdGlvbj4gY3JpdGVyaWE7CisgICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uPiBjcml0ZXJpYTsKIAog
ICAgIEFTU0VSVChBWE9iamVjdElzVGV4dE1hcmtlclJhbmdlKFtwYXJhbXMgb2JqZWN0Rm9yS2V5
OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdKSk7CiAgICAgY3JpdGVyaWEuZmlyc3QgPSByYW5n
ZUZvclRleHRNYXJrZXJSYW5nZShheE9iamVjdENhY2hlLCAoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
W3BhcmFtcyBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl0pOwpAQCAtMzU3
OSw3ICszNTc5LDcgQEAgLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpdGV4dE1hcmtlclJhbmdlQXRU
ZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpdGV4dE1hcmtlcgogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgICAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZv
clRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gcmFuZ2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwog
ICAgICAgICBzd2l0Y2ggKHRleHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRX
b3JkOgogICAgICAgICAgICAgcmFuZ2UgPSBjYWNoZS0+bGVmdFdvcmRSYW5nZShjaGFyYWN0ZXJP
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApp
bmRleCBjOWU4ZGYxZmNkNTg3ZTlhMWEyODAyY2Y4NDQyODk1YjI5ZDFiYzJjLi5jZThmOGNkMzcw
NjFiMjM4ZmZmZWUxMDkxMmZjNTczNzBjZDYwYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIEVmZmVjdFRpbWlu
ZyBBbmltYXRpb25FZmZlY3Q6OmdldFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRpbWluZzsK
IH0KIAotQmFzaWNFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhP
cHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGNvbnN0CitCYXNpY0VmZmVjdFRpbWluZyBBbmlt
YXRpb25FZmZlY3Q6OmdldEJhc2ljVGltaW5nKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRU
aW1lKSBjb25zdAogewogICAgIC8vIFRoZSBXZWIgQW5pbWF0aW9ucyBzcGVjIGludHJvZHVjZXMg
YSBudW1iZXIgb2YgYW5pbWF0aW9uIGVmZmVjdCB0aW1lLXJlbGF0ZWQgZGVmaW5pdGlvbnMgdGhh
dCByZWZlcgogICAgIC8vIHRvIGVhY2ggb3RoZXIgYSBmYWlyIGJpdCwgc28gcmF0aGVyIHRoYW4g
aW1wbGVtZW50aW5nIHRoZW0gYXMgaW5kaXZpZHVhbCBtZXRob2RzLCBpdCdzIG1vcmUgZWZmaWNp
ZW50CiAgICAgLy8gdG8gcmV0dXJuIHRoZW0gYWxsIGFzIGEgc2luZ2xlIEJhc2ljRWZmZWN0VGlt
aW5nLgogCi0gICAgYXV0byBsb2NhbFRpbWUgPSBbdGhpcywgc3RhcnRUaW1lXSgpIC0+IE9wdGlv
bmFsPFNlY29uZHM+IHsKKyAgICBhdXRvIGxvY2FsVGltZSA9IFt0aGlzLCBzdGFydFRpbWVdKCkg
LT4gc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB7CiAgICAgICAgIC8vIDQuNS40LiBMb2NhbCB0aW1l
CiAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNs
b2NhbC10aW1lLXNlY3Rpb24KIApAQCAtMTE5LDcgKzExOSw3IEBAIEJhc2ljRWZmZWN0VGltaW5n
IEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRU
aW1lKSBjCiAgICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOwogICAg
IH0oKTsKIAotICAgIGF1dG8gYWN0aXZlVGltZSA9IFt0aGlzLCBsb2NhbFRpbWUsIHBoYXNlXSgp
IC0+IE9wdGlvbmFsPFNlY29uZHM+IHsKKyAgICBhdXRvIGFjdGl2ZVRpbWUgPSBbdGhpcywgbG9j
YWxUaW1lLCBwaGFzZV0oKSAtPiBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHsKICAgICAgICAgLy8g
My44LjMuMS4gQ2FsY3VsYXRpbmcgdGhlIGFjdGl2ZSB0aW1lCiAgICAgICAgIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtYWN0aXZl
LXRpbWUKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlv
bkVmZmVjdDo6Z2V0QmluZGluZ3NDb21wdXRlZFRpbWluZygpIGNvbnN0CiAgICAgcmV0dXJuIGdl
dENvbXB1dGVkVGltaW5nKCk7CiB9CiAKLUNvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVm
ZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjb25z
dAorQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWlu
ZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgY29uc3QKIHsKICAgICAvLyBUaGUg
V2ViIEFuaW1hdGlvbnMgc3BlYyBpbnRyb2R1Y2VzIGEgbnVtYmVyIG9mIGFuaW1hdGlvbiBlZmZl
Y3QgdGltZS1yZWxhdGVkIGRlZmluaXRpb25zIHRoYXQgcmVmZXIKICAgICAvLyB0byBlYWNoIG90
aGVyIGEgZmFpciBiaXQsIHNvIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVtIGFzIGluZGl2
aWR1YWwgbWV0aG9kcywgaXQncyBtb3JlIGVmZmljaWVudApAQCAtMTc3LDcgKzE3Nyw3IEBAIENv
bXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgYXV0byBhY3RpdmVUaW1lID0gYmFzaWNFZmZlY3RU
aW1pbmcuYWN0aXZlVGltZTsKICAgICBhdXRvIHBoYXNlID0gYmFzaWNFZmZlY3RUaW1pbmcucGhh
c2U7CiAKLSAgICBhdXRvIG92ZXJhbGxQcm9ncmVzcyA9IFt0aGlzLCBwaGFzZSwgYWN0aXZlVGlt
ZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIG92ZXJhbGxQcm9ncmVzcyA9IFt0
aGlzLCBwaGFzZSwgYWN0aXZlVGltZV0oKSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAg
ICAgICAvLyAzLjguMy4yLiBDYWxjdWxhdGluZyB0aGUgb3ZlcmFsbCBwcm9ncmVzcwogICAgICAg
ICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRp
bmctdGhlLW92ZXJhbGwtcHJvZ3Jlc3MKIApAQCAtMjA0LDcgKzIwNCw3IEBAIENvbXB1dGVkRWZm
ZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vj
b25kcz4gc3RhcnRUCiAgICAgICAgIHJldHVybiBzdGQ6OmFicyhvdmVyYWxsUHJvZ3Jlc3MpOwog
ICAgIH0oKTsKIAotICAgIGF1dG8gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MgPSBbdGhpcywgb3Zl
cmFsbFByb2dyZXNzLCBwaGFzZSwgYWN0aXZlVGltZV0oKSAtPiBPcHRpb25hbDxkb3VibGU+IHsK
KyAgICBhdXRvIHNpbXBsZUl0ZXJhdGlvblByb2dyZXNzID0gW3RoaXMsIG92ZXJhbGxQcm9ncmVz
cywgcGhhc2UsIGFjdGl2ZVRpbWVdKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAg
ICAgLy8gMy44LjMuMy4gQ2FsY3VsYXRpbmcgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MK
ICAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2Nh
bGN1bGF0aW5nLXRoZS1zaW1wbGUtaXRlcmF0aW9uLXByb2dyZXNzCiAKQEAgLTIzMyw3ICsyMzMs
NyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGlt
aW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogICAgICAgICByZXR1cm4gc2ltcGxlSXRlcmF0
aW9uUHJvZ3Jlc3M7CiAgICAgfSgpOwogCi0gICAgYXV0byBjdXJyZW50SXRlcmF0aW9uID0gW3Ro
aXMsIGFjdGl2ZVRpbWUsIHBoYXNlLCBzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcywgb3ZlcmFsbFBy
b2dyZXNzXSgpIC0+IE9wdGlvbmFsPGRvdWJsZT4geworICAgIGF1dG8gY3VycmVudEl0ZXJhdGlv
biA9IFt0aGlzLCBhY3RpdmVUaW1lLCBwaGFzZSwgc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MsIG92
ZXJhbGxQcm9ncmVzc10oKSAtPiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICAvLyAz
LjguNC4gQ2FsY3VsYXRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uCiAgICAgICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxjdWxhdGluZy10aGUtY3Vy
cmVudC1pdGVyYXRpb24KIApAQCAtMjgyLDcgKzI4Miw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5n
IEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3Rh
cnRUCiAgICAgICAgIHJldHVybiBBbmltYXRpb25FZmZlY3Q6OkNvbXB1dGVkRGlyZWN0aW9uOjpS
ZXZlcnNlOwogICAgIH0oKTsKIAotICAgIGF1dG8gZGlyZWN0ZWRQcm9ncmVzcyA9IFtzaW1wbGVJ
dGVyYXRpb25Qcm9ncmVzcywgY3VycmVudERpcmVjdGlvbl0oKSAtPiBPcHRpb25hbDxkb3VibGU+
IHsKKyAgICBhdXRvIGRpcmVjdGVkUHJvZ3Jlc3MgPSBbc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3Ms
IGN1cnJlbnREaXJlY3Rpb25dKCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAg
Ly8gMy45LjEuIENhbGN1bGF0aW5nIHRoZSBkaXJlY3RlZCBwcm9ncmVzcwogICAgICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jY2FsY3VsYXRpbmctdGhl
LWRpcmVjdGVkLXByb2dyZXNzCiAKQEAgLTMwMiw3ICszMDIsNyBAQCBDb21wdXRlZEVmZmVjdFRp
bWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+
IHN0YXJ0VAogICAgICAgICByZXR1cm4gMSAtICpzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKICAg
ICB9KCk7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUHJvZ3Jlc3MgPSBbdGhpcywgZGlyZWN0ZWRQ
cm9ncmVzcywgY3VycmVudERpcmVjdGlvbiwgcGhhc2VdKCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7
CisgICAgYXV0byB0cmFuc2Zvcm1lZFByb2dyZXNzID0gW3RoaXMsIGRpcmVjdGVkUHJvZ3Jlc3Ms
IGN1cnJlbnREaXJlY3Rpb24sIHBoYXNlXSgpIC0+IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB7CiAg
ICAgICAgIC8vIDMuMTAuMS4gQ2FsY3VsYXRpbmcgdGhlIHRyYW5zZm9ybWVkIHByb2dyZXNzCiAg
ICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNjYWxj
dWxhdGluZy10aGUtdHJhbnNmb3JtZWQtcHJvZ3Jlc3MKIApAQCAtMzUyLDcgKzM1Miw3IEBAIENv
bXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgcmV0dXJuIGNvbXB1dGVkVGltaW5nOwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9w
dGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCitFeGNlcHRpb25Pcjx2b2lkPiBB
bmltYXRpb25FZmZlY3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9u
YWxFZmZlY3RUaW1pbmc+IHRpbWluZykKIHsKICAgICBhdXRvIHJldFZhbCA9IHVwZGF0ZVRpbWlu
Zyh0aW1pbmcpOwogICAgIGlmICghcmV0VmFsLmhhc0V4Y2VwdGlvbigpICYmIHRpbWluZyAmJiBp
czxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSkKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OmJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFs
PE9wdGlvbmFsRWZmZWN0VAogICAgIHJldHVybiByZXRWYWw7CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IEFuaW1hdGlvbkVmZmVjdDo6dXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0
VGltaW5nPiB0aW1pbmcpCitFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25FZmZlY3Q6OnVwZGF0
ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPiB0aW1pbmcpCiB7CiAg
ICAgLy8gNi41LjQuIFVwZGF0aW5nIHRoZSB0aW1pbmcgb2YgYW4gQW5pbWF0aW9uRWZmZWN0CiAg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLyN1cGRhdGluZy1h
bmltYXRpb25lZmZlY3QtdGltaW5nCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBBbmltYXRpb25F
ZmZlY3Q6OnNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mIHRp
bWluZ0Z1bmMKICAgICBtX3RpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb247CiB9CiAKLU9w
dGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uRWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91
YmxlIGl0ZXJhdGlvblByb2dyZXNzKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1h
dGlvbkVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVz
cykgY29uc3QKIHsKICAgICBpZiAoIWlzPFN0ZXBzVGltaW5nRnVuY3Rpb24+KG1fdGltaW5nRnVu
Y3Rpb24pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCmluZGV4IGEwMmQyNjI5Y2NiYjkyOTc0MTM0MmFjZDdk
YTEwYTE0OGM1YzcwZGEuLjVhODVlZTBhOWM3NjZiMjZiNjk3NjkyMGE2ZGU0OTM5NDA2ZDhlYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKQEAgLTU1LDEz
ICs1NSwxMyBAQCBwdWJsaWM6CiAKICAgICBFZmZlY3RUaW1pbmcgZ2V0QmluZGluZ3NUaW1pbmco
KSBjb25zdDsKICAgICBFZmZlY3RUaW1pbmcgZ2V0VGltaW5nKCkgY29uc3Q7Ci0gICAgQmFzaWNF
ZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OworICAgIEJhc2ljRWZmZWN0VGltaW5nIGdldEJhc2ljVGltaW5nKHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIENvbXB1dGVkRWZmZWN0
VGltaW5nIGdldEJpbmRpbmdzQ29tcHV0ZWRUaW1pbmcoKSBjb25zdDsKLSAgICBDb21wdXRlZEVm
ZmVjdFRpbWluZyBnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYmluZGluZ3NVcGRhdGVUaW1pbmco
T3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiB1
cGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKKyAgICBDb21wdXRl
ZEVmZmVjdFRpbWluZyBnZXRDb21wdXRlZFRpbWluZyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0g
c3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1VwZGF0
ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5nKHN0ZDo6b3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1p
bmc+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+
ID0gc3RkOjpudWxsb3B0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRUaWNrKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRQbGF5KCkgPSAwOwpAQCAtMTA3LDcg
KzEwNyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25FZmZl
Y3QoKTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0
ZXAoZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcm9n
cmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIENvbXB1dGVkRGlyZWN0aW9uIDogdWludDhfdCB7IEZvcndhcmRzLCBSZXZlcnNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3BwCmluZGV4
IDZmODQxYzVkN2Y2NzgwOTY3MmQwNTI4ZWRkZjk3ZmU2ZDA4ZWE0YjMuLjFkMDEzNTJmNzliMjkz
NWU4NThmYjM0MzYxYTg3MmRjZGE4ODdmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFuaW1hdGlvbkV2ZW50QmFz
ZSk7CiAKLUFuaW1hdGlvbkV2ZW50QmFzZTo6QW5pbWF0aW9uRXZlbnRCYXNlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uLCBPcHRpb25hbDxTZWNvbmRzPiB0
aW1lbGluZVRpbWUpCitBbmltYXRpb25FdmVudEJhc2U6OkFuaW1hdGlvbkV2ZW50QmFzZShjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbiwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Olll
cywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fYW5pbWF0aW9uKGFuaW1hdGlvbikKICAgICAs
IG1fdGltZWxpbmVUaW1lKHRpbWVsaW5lVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25FdmVudEJhc2UuaAppbmRleCBjNzc4MTQ4YTdhZTdmYTQzYTY2OWM3OWRlNzQ5
OGNjMTZmZWNhNjU0Li4yODJjZjBiOGEzNzllMTBiZTQ2MDQ2Nzk4OTRmM2RhYjAyYTAyODRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkV2ZW50QmFzZS5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIEFuaW1hdGlvbkV2ZW50QmFz
ZSA6IHB1YmxpYyBFdmVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25F
dmVudEJhc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24sIE9w
dGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2
ZW50QmFzZT4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiogYW5p
bWF0aW9uLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBhbmltYXRp
b24sIHRpbWVsaW5lVGltZSkpOwogICAgIH0KQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW9uRXZlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zaXRpb25FdmVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVsaW5lVGltZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxp
bmVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZVRpbWU7IH0KICAgICBXZWJBbmltYXRp
b24qIGFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFu
aW1hdGlvbiosIE9wdGlvbmFsPFNlY29uZHM+KTsKKyAgICBBbmltYXRpb25FdmVudEJhc2UoY29u
c3QgQXRvbVN0cmluZyYsIFdlYkFuaW1hdGlvbiosIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwog
ICAgIEFuaW1hdGlvbkV2ZW50QmFzZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRXZlbnRJbml0
JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZlB0cjxXZWJBbmltYXRpb24+IG1fYW5pbWF0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQu
Y3BwCmluZGV4IGEyNjcwZDc5MjA5NjhjMGEyNTQxZDc2ZjYxYjIwMDNlNDVhODQzODEuLjg1NmNi
ZTUxYTg5MWFiODdjMzBkOThhYWE0ZTlmMjc1M2JmYzgzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBBbmkKICAgICAgICAgbV90aW1lbGluZVRpbWUgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKLUFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXli
YWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVu
dFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmlt
YXRpb24pCitBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUs
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1h
dGlvbikKICAgICA6IEFuaW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5l
VGltZSkKICAgICAsIG1fY3VycmVudFRpbWUoY3VycmVudFRpbWUpCiB7CkBAIC01NSwxNCArNTUs
MTQgQEAgQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hbDwKIAogQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6
fkFuaW1hdGlvblBsYXliYWNrRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU9wdGlvbmFsPGRvdWJsZT4g
QW5pbWF0aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50
VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUaW1lKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSht
X2N1cnJlbnRUaW1lLnZhbHVlKCkpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblBs
YXliYWNrRXZlbnQ6OmJpbmRpbmdzVGltZWxpbmVUaW1lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpiaW5kaW5nc1RpbWVsaW5lVGltZSgpIGNv
bnN0CiB7CiAgICAgaWYgKCF0aW1lbGluZVRpbWUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5
YmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tF
dmVudC5oCmluZGV4IDM1ZmY5N2M3NDNlYTQ0ODg1ODQyZWRkYTg0ODllNGU0ZmVmZjdhMzkuLjE2
YWZmMzJiYTFhM2I1OGMyYzUzOTNlMjc0ZDNkMGNiNjJlYjQ5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRpb25QbGF5YmFja0V2ZW50IGZp
bmFsIDogcHVibGljIEFuaW1hdGlvbkV2ZW50QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChBbmltYXRpb25QbGF5YmFja0V2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFu
aW1hdGlvblBsYXliYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRp
b25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
LCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXli
YWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSwg
V2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmltYXRpb25QbGF5YmFja0V2ZW50KHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRp
bWUsIGFuaW1hdGlvbikpOwogICAgIH0KQEAgLTQ4LDE0ICs0OCwxNCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQW5pbWF0aW9uUGxheWJhY2tFdmVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0
OwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50VGltZTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NUaW1lbGluZVRpbWUo
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRp
bmdzVGltZWxpbmVUaW1lKCkgY29uc3Q7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFuaW1hdGlvblBsYXliYWNrRXZlbnRJbnRl
cmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAgQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25z
dCBBdG9tU3RyaW5nJiwgT3B0aW9uYWw8U2Vjb25kcz4sIE9wdGlvbmFsPFNlY29uZHM+LCBXZWJB
bmltYXRpb24qKTsKKyAgICBBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcm
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmlt
YXRpb24qKTsKICAgICBBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBBbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBNYXJr
YWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDUw
Mjc0NGRmZGIyNDZhMWY2NDQxZmIxYzdmMWJiOWVkOWRjNDkwMGIuLjdlNWY1OTkwMDg1YzRkYWRj
NzI3OTQyZDAyNTdjMDJjYWRmMWY2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEFuaW1hdGlvblRp
bWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgfQog
fQogCi1PcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblRpbWVsaW5lOjpiaW5kaW5nc0N1cnJlbnRU
aW1lKCkKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25UaW1lbGluZTo6YmluZGluZ3ND
dXJyZW50VGltZSgpCiB7CiAgICAgYXV0byB0aW1lID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAo
IXRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmlu
ZGV4IDZhZTc2NjlmNGUxMjMxNmE2M2NiZTRlNGQ2NjQzM2JlZDQ3NjhjNWIuLmM1ZGFhZjZiZDIx
ODk0MjA2ZDE2NGIzM2M0MmM5MGQwMjkyZDJiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVGltaW5nRGlkQ2hhbmdlKFdlYkFuaW1hdGlvbiYpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJik7CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCk7CisgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGlt
ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKaW5kZXggMThjYzAzZDQ4OGJh
YWI1MzY3MzYxMmNjZDVjYjU5NGZiMWFmZTc2NS4uMGRjOWFhZDc3MzEzYjcwODNiY2UyNjNiYWU2
OTVjNWIxN2QzZTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0Fu
aW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5j
cHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NFZmZl
Y3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdD4mJiBuZXdFZmZlY3QpCiAgICAgfQogfQogCi12b2lk
IENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBzdGFy
dFRpbWUpCit2b2lkIENTU0FuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRp
b25hbDxkb3VibGU+IHN0YXJ0VGltZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLWFuaW1hdGlvbnMtMi8jYW5pbWF0aW9ucwogCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9p
ZCBDU1NBbmltYXRpb246OmVmZmVjdEtleWZyYW1lc1dlcmVTZXRVc2luZ0JpbmRpbmdzKCkKICAg
ICBtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmFkZChQcm9wZXJ0eTo6VGltaW5nRnVuY3Rpb24pOwog
fQogCi1SZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBDU1NBbmltYXRpb246OmNyZWF0ZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCitSZWY8QW5pbWF0
aW9uRXZlbnRCYXNlPiBDU1NBbmltYXRpb246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKIHsKICAgICByZXR1cm4gQW5pbWF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIG1fYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUs
IHBzZXVkb0lkLCB0aW1lbGluZVRpbWUsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU0FuaW1hdGlvbi5oCmluZGV4IGFmYzk1ZjUzMTM2NjUxMzU0NDg5MWQ3ZGY0YjA3Y2FhNDY3
YzMzZjIuLjUwMzk5NzhkZTAxY2U3ZWE5NmFkODc2NjUwNTNkMWQ1MzIwZDFhMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBwcml2
YXRlOgogICAgIENTU0FuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24m
KTsKIAogICAgIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFs
OwotICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lk
LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpIGZpbmFsOworICAgIFJlZjxBbmltYXRp
b25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91
YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5k
aW5nc1BsYXkoKSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BhdXNlKCkg
ZmluYWw7CiAgICAgdm9pZCBzZXRCaW5kaW5nc0VmZmVjdChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0
PiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldEJpbmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJs
ZT4pIGZpbmFsOworICAgIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxk
b3VibGU+KSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1JldmVyc2UoKSBm
aW5hbDsKIAogICAgIGVudW0gY2xhc3MgUHJvcGVydHkgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDg1MTli
YjZiOTUzNmJjYjZmYjU0MjUwNDc3YzQxYjE1ZDMyZjk5NWEuLmNiYTgwNTFjYjNlYWJiNmRlMmRj
NzQ2YzFmYzMzNWUxYzZkYmYyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRpYyBpbmxp
bmUgRm9udFNlbGVjdGlvblZhbHVlIGJsZW5kRnVuYyhGb250U2VsZWN0aW9uVmFsdWUgZnJvbSwg
Rm9udFNlbGVjdGlvCiAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZShzdGQ6Om1heCgwLjBm
LCBibGVuZEZ1bmMoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyb20pLCBzdGF0aWNfY2FzdDxmbG9hdD4o
dG8pLCBjb250ZXh0KSkpOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25WYWx1ZT4gYmxlbmRGdW5jKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZnJvbSwgT3B0
aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0Nv
bnRleHQmIGNvbnRleHQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlv
blZhbHVlPiBibGVuZEZ1bmMoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZyb20s
IHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB0bywgY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGJsZW5kRnVuYygqZnJvbSwg
KnRvLCBjb250ZXh0KTsKIH0KQEAgLTE5OTAsMTEgKzE5OTAsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOwogfTsKIAotY2xhc3Mg
UHJvcGVydHlXcmFwcGVyRm9udFN0eWxlIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxP
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+PiB7CitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJGb250
U3R5bGUgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPHN0ZDo6b3B0aW9uYWw8Rm9udFNl
bGVjdGlvblZhbHVlPj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFByb3BlcnR5V3JhcHBlckZvbnRTdHlsZSgpCi0gICAgICAgIDogUHJvcGVydHlXcmFwcGVy
PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4+KENTU1Byb3BlcnR5Rm9udFN0eWxlLCAmUmVu
ZGVyU3R5bGU6OmZvbnRJdGFsaWMsICZSZW5kZXJTdHlsZTo6c2V0Rm9udEl0YWxpYykKKyAgICAg
ICAgOiBQcm9wZXJ0eVdyYXBwZXI8c3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+PihD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgJlJlbmRlclN0eWxlOjpmb250SXRhbGljLCAmUmVuZGVyU3R5
bGU6OnNldEZvbnRJdGFsaWMpCiAgICAgewogICAgIH0KIApAQCAtMjAyOSw3ICsyMDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBBdXRvUHJvcGVydHlXcmFwcGVyIGZpbmFsIDog
cHVibGljIFByb3BlcnR5V3JhcHBlcjxUPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgQXV0b1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oipz
ZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQg
KFJlbmRlclN0eWxlOjoqYXV0b1NldHRlcikoKSwgT3B0aW9uYWw8VD4gbWluVmFsdWUgPSBzdGQ6
Om51bGxvcHQpCisgICAgQXV0b1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oipz
ZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQg
KFJlbmRlclN0eWxlOjoqYXV0b1NldHRlcikoKSwgc3RkOjpvcHRpb25hbDxUPiBtaW5WYWx1ZSA9
IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXI8VD4ocHJvcGVydHksIGdl
dHRlciwgc2V0dGVyKQogICAgICAgICAsIG1fYXV0b0dldHRlcihhdXRvR2V0dGVyKQogICAgICAg
ICAsIG1fYXV0b1NldHRlcihhdXRvU2V0dGVyKQpAQCAtMjA2NSw3ICsyMDY1LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgKFJlbmRlclN0eWxlOjoqbV9hdXRvR2V0dGVyKSgpIGNvbnN0OwogICAg
IHZvaWQgKFJlbmRlclN0eWxlOjoqbV9hdXRvU2V0dGVyKSgpOwotICAgIE9wdGlvbmFsPFQ+IG1f
bWluVmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxUPiBtX21pblZhbHVlOwogfTsKIAogY2xhc3Mg
Tm9uTmVnYXRpdmVGbG9hdFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXI8
ZmxvYXQ+IHsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIGJvb2wgQ1NTUHJvcGVydHlBbmltYXRpb246
OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0ZWQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1DU1NQcm9wZXJ0eUlEIENTU1Byb3BlcnR5QW5pbWF0aW9u
OjpnZXRQcm9wZXJ0eUF0SW5kZXgoaW50IGksIE9wdGlvbmFsPGJvb2w+JiBpc1Nob3J0aGFuZCkK
K0NTU1Byb3BlcnR5SUQgQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChp
bnQgaSwgc3RkOjpvcHRpb25hbDxib29sPiYgaXNTaG9ydGhhbmQpCiB7CiAgICAgQ1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwJiBtYXAgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXA6OnNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5oCmluZGV4IGU2ZTg0ZjY1NGQzMDQ5MGUyOWYyZjk1YmE0MDA2ZDZjNDZj
MTZmMGQuLjZlZjU0MWYyNWU2ZWY0NGYyZjUxM2EwMWFmNjZlZTM1YjNmZmJlYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbmltYXRpb25PZlByb3BlcnR5SXNB
Y2NlbGVyYXRlZChDU1NQcm9wZXJ0eUlEKTsKICAgICBzdGF0aWMgYm9vbCBwcm9wZXJ0aWVzRXF1
YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmIGEsIGNvbnN0IFJlbmRlclN0eWxl
JiBiKTsKICAgICBzdGF0aWMgYm9vbCBjYW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVkKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiBhLCBjb25zdCBSZW5kZXJTdHlsZSYgYik7Ci0gICAg
c3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0UHJvcGVydHlBdEluZGV4KGludCwgT3B0aW9uYWw8Ym9v
bD4mIGlzU2hvcnRoYW5kKTsKKyAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBnZXRQcm9wZXJ0eUF0
SW5kZXgoaW50LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpc1Nob3J0aGFuZCk7CiAgICAgc3RhdGlj
IGludCBnZXROdW1Qcm9wZXJ0aWVzKCk7CiAKICAgICBzdGF0aWMgSGFzaFNldDxDU1NQcm9wZXJ0
eUlEPiBhbmltYXRhYmxlU2hvcnRoYW5kc0FmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IGZlNDU5
ZmE2OTY5Y2E3ZGQyY2Q0YzIzMjQ0OGQzMTk0NzM0YTMxNWEuLjQwYmMzNGQ2YTE0YzBkY2QyZGIz
N2FjMGRiNTFhNTYzNjY2NTM1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJh
bnNpdGlvbi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlv
bihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwKIHsK
IH0KIAotdm9pZCBDU1NUcmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25k
cz4gc3RhcnRUaW1lKQordm9pZCBDU1NUcmFuc2l0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCiB7CiAgICAgRGVjbGFyYXRpdmVBbmltYXRpb246
OnJlc29sdmUodGFyZ2V0U3R5bGUsIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RhcnRUaW1lKTsKICAg
ICBtX2N1cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgQ1NTVHJhbnNpdGlvbjo6c2V0VGltaW5nUHJvcGVydGllcyhT
ZWNvbmRzIGRlbGF5LCBTZWNvbmRzIGR1cmF0aW9uKQogICAgIHVuc3VzcGVuZEVmZmVjdEludmFs
aWRhdGlvbigpOwogfQogCi1SZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBDU1NUcmFuc2l0aW9uOjpj
cmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGlt
ZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
KQorUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvSWQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQogewogICAg
IHJldHVybiBUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGdldFByb3BlcnR5TmFt
ZVN0cmluZyhtX3Byb3BlcnR5KSwgZWxhcHNlZFRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUs
IHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5z
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKaW5kZXgg
ZjMzNmJmYzQ1NGE1YmQ1ZWE3M2NiMjAxZjVjNzM1OTU4MjdlMWU0Yy4uYTkyZmMwNjlhN2UxN2Y1
MjczNmJlMmYwNTdkODc2NmZhYWMxODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU1RyYW5zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
VHJhbnNpdGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHJhbnNp
dGlvblByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKG1fcHJv
cGVydHkpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHk7IH0KICAgICBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0aW9uVGltZTsgfQotICAgIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5l
VGltZUF0Q3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb247
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb247IH0KICAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV90YXJnZXRTdHlsZTsgfQog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9j
dXJyZW50U3R5bGU7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRT
dGFydFN0eWxlKCkgY29uc3QgeyByZXR1cm4gKm1fcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxl
OyB9CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTVHJhbnNpdGlv
bihjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRp
b25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2lu
Z0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRp
ZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbik7Ci0gICAgUmVmPEFuaW1hdGlvbkV2
ZW50QmFzZT4gY3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUg
ZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRp
bWVsaW5lVGltZSkgZmluYWw7Ci0gICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vj
b25kcz4pIGZpbmFsOworICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7
CisgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPikgZmluYWw7
CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CiAgICAgTW9ub3RvbmljVGltZSBtX2dl
bmVyYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5jcHAKaW5kZXggNzI1ZThmYmFhMGIxODYzMzg2MzMxMGYyOTdmMjhlOTkwMTEz
ZTg0MC4uYjU4MjcyNTIyNzJmZjZlZGNlOGE2ZWNjNGVkZDVkNDg2OGE5NDliZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC01
NSw3ICs1NSw3IEBAIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24o
KQogewogfQogCi1jb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IERlY2xhcmF0aXZlQW5p
bWF0aW9uOjpvd25pbmdFbGVtZW50KCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3duaW5nRWxlbWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fb3duaW5nRWxlbWVudCkKICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9v
d25pbmdFbGVtZW50LmdldCgpLCBtX293bmluZ1BzZXVkb0lkKTsKQEAgLTEzMCwyNSArMTMwLDI1
IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdB
bmltYXRpb24oKQogewogfQogCi1PcHRpb25hbDxkb3VibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9u
OjpiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVjbGFy
YXRpdmVBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKIHsKICAgICBmbHVzaFBl
bmRpbmdTdHlsZUNoYW5nZXMoKTsKICAgICByZXR1cm4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc1N0
YXJ0VGltZSgpOwogfQogCi12b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0
YXJ0VGltZShPcHRpb25hbDxkb3VibGU+IHN0YXJ0VGltZSkKK3ZvaWQgRGVjbGFyYXRpdmVBbmlt
YXRpb246OnNldEJpbmRpbmdzU3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdGFydFRp
bWUpCiB7CiAgICAgZmx1c2hQZW5kaW5nU3R5bGVDaGFuZ2VzKCk7CiAgICAgcmV0dXJuIFdlYkFu
aW1hdGlvbjo6c2V0QmluZGluZ3NTdGFydFRpbWUoc3RhcnRUaW1lKTsKIH0KIAotT3B0aW9uYWw8
ZG91YmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdzQ3Vy
cmVudFRpbWUoKSBjb25zdAogewogICAgIGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpOwogICAg
IHJldHVybiBXZWJBbmltYXRpb246OmJpbmRpbmdzQ3VycmVudFRpbWUoKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUo
T3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50VGltZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERlY2xhcmF0
aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBjdXJyZW50VGltZSkKIHsKICAgICBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKTsKICAgICBy
ZXR1cm4gV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5k
ZXggNmVjYzU1ZDA0NTdhMTFiNGQxNDI5NGJlZDJhOGVlYWYwNWViNDhjYi4uODUyNGI3OGQ3NDMx
ZmE5Nzk3NDYyNzQ5MzZiOTI0NzBmZWMwNDNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG93bmluZ0Vs
ZW1lbnQoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4g
b3duaW5nRWxlbWVudCgpIGNvbnN0OwogICAgIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZ0FuaW1hdGlvbjsgfQogICAgIHZvaWQgc2V0
QmFja2luZ0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbEZyb21T
dHlsZSgpOwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0
IGZpbmFsOwotICAgIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPikg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29u
c3QgZmluYWw7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QmluZGluZ3NDdXJyZW50VGltZShP
cHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGlu
Z3NTdGFydFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldEJpbmRpbmdzU3RhcnRUaW1l
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7
CiAgICAgV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGUgYmluZGluZ3NQbGF5U3RhdGUoKSBjb25zdCBm
aW5hbDsKICAgICBXZWJBbmltYXRpb246OlJlcGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxhY2VTdGF0
ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgYmluZGluZ3NQZW5kaW5nKCkgY29uc3QgZmluYWw7
CkBAIC03OSw3ICs3OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3Bl
cnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogICAgIC8vIGVsYXBzZWRUaW1lIGlzIHRoZSBh
bmltYXRpb24ncyBjdXJyZW50IHRpbWUgYXQgdGhlIHRpbWUgdGhlIGV2ZW50IGlzIGFkZGVkIGFu
ZCBpcyBleHBvc2VkIHRocm91Z2ggdGhlIERPTSBBUEksIHRpbWVsaW5lVGltZSBpcyB0aGUgYW5p
bWF0aW9ucycKICAgICAvLyB0aW1lbGluZSBjdXJyZW50IHRpbWUgYW5kIGlzIG5vdCBleHBvc2Vk
IHRocm91Z2ggdGhlIERPTSBBUEkgYnV0IHVzZWQgYnkgdGhlIERvY3VtZW50VGltZWxpbmUgZm9y
IHNvcnRpbmcgZXZlbnRzIGJlZm9yZSBkaXNwYXRjaC4gCi0gICAgdmlydHVhbCBSZWY8QW5pbWF0
aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRv
dWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZWxpbmVUaW1lKSA9IDA7CisgICAgdmlydHVhbCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNl
PiBjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2Vk
VGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1l
bGluZVRpbWUpID0gMDsKICAgICB2b2lkIGludmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFw
c2VkVGltZSA9IDBfcyk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggNDkxNDQxMThlMjdiNzE0N2NiOWZkOTBjYTQ5YmYw
YjM0Mzc1NjU5ZC4uYTI0Y2IxOTRjNzQ3Y2RmNzczMzI1YTQyMTYyN2RjY2EwOTliNGZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHVuc2lnbmVkIERvY3VtZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXZlQW5p
bWF0aW9uc0ZvclRlc3RpbmcoKSBjb25zdAogICAgIHJldHVybiBjb3VudDsKIH0KIAotT3B0aW9u
YWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGluZTo6Y3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpjdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKGF1
dG8qIGNvbnRyb2xsZXIgPSB0aGlzLT5jb250cm9sbGVyKCkpIHsKICAgICAgICAgaWYgKGF1dG8g
Y3VycmVudFRpbWUgPSBjb250cm9sbGVyLT5jdXJyZW50VGltZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKaW5kZXggOGUzMDQ5MTE2ZDUwNGNhNTNiZTAw
MTNhZmFmMmRmODI5OGJkOWViMS4uNGFjYWNiYmFmMTgyNDQ4ZmM3ZGRhNGY1ZjNjOTVlMjRlOGY1
YWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KIAotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1
cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50
VGltZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoV2Vi
QW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0
aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCmluZGV4IGJmOTJjYzcwNGNmNGM3NGI2OWU3
OTdlMzJmMzAzMWJmZGZiMDZiYWMuLjkzNTc1ODY3YTQ5MzY3YTg0MzUyNjYyMzE2YjZlNzlmYjRi
ZTRlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgUmVkdWNlZFJlc29s
dXRpb25TZWNvbmRzIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6bGl2ZUN1cnJlbnRUaW1l
KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudC5kb21XaW5kb3coKS0+bm93VGltZXN0YW1w
KCk7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6
Y3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lc0Nv
bnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQuZG9tV2luZG93
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKaW5kZXggZDc0OWEw
NjVkYzUzZDU3MTIxZGRhNGNiOTY2MWVkMjU2MjA4YzAwMi4uMWFiNTJhZmRjMDBiNzVjNWZiNDJj
MDBiNjk2MmJjNTA4Y2FjZjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKICAgICB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
Y3VycmVudFRpbWUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlv
bnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDU3MWYwMzViMjZj
YzAzODI1ZDZlMjkxYWQ3MzdjNDIyMDIzYzQ2ODUuLmQ3YjNkOTZiZmM4ZjRmYWFlOGM5YjNiODM4
MDYzNGE3OGNmMjNhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmNwcApAQCAtNjcsNyArNjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAotc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JT
dHlsZWFibGUoY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgc3R5bGVhYmxlKQorc3Rh
dGljIEVsZW1lbnQqIGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoY29uc3Qgc3Rk
OjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBzdHlsZWFibGUpCiB7CiAgICAgaWYgKCFzdHls
ZWFibGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMg
RWxlbWVudCogZWxlbWVudE9yUHNldWRvRWxlbWVudEZvclN0eWxlYWJsZShjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRh
dGVFbGVtZW50KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3N0
YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlRWxlbWVudChjb25zdCBzdGQ6Om9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKIHsKICAgICBpZiAoYXV0byogZWxlbWVudE9yUHNl
dWRvRWxlbWVudCA9IGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVhYmxl
KSkKICAgICAgICAgZWxlbWVudE9yUHNldWRvRWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJu
YWwoKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZU1pc3Np
bmdLZXlmcmFtZU9mZnNldHMoVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQYXJzZWRLZQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyAxLiBGb3IgZWFjaCBrZXlmcmFtZSwgaW4ga2V5ZnJhbWVzLCBs
ZXQgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiB0aGUga2V5ZnJhbWUgYmUgZXF1YWwg
dG8gaXRzIGtleWZyYW1lIG9mZnNldCB2YWx1ZS4KLSAgICAvLyBJbiBvdXIgaW1wbGVtZW50YXRp
b24sIHdlIG9ubHkgc2V0IG5vbi1udWxsIHZhbHVlcyB0byBhdm9pZCBtYWtpbmcgY29tcHV0ZWRP
ZmZzZXQgT3B0aW9uYWw8ZG91YmxlPi4gSW5zdGVhZCwgd2UnbGwga25vdworICAgIC8vIEluIG91
ciBpbXBsZW1lbnRhdGlvbiwgd2Ugb25seSBzZXQgbm9uLW51bGwgdmFsdWVzIHRvIGF2b2lkIG1h
a2luZyBjb21wdXRlZE9mZnNldCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4uIEluc3RlYWQsIHdlJ2xs
IGtub3cKICAgICAvLyB0aGF0IGEga2V5ZnJhbWUgaGFzbid0IGhhZCBhIGNvbXB1dGVkIG9mZnNl
dCBieSBjaGVja2luZyBpZiBpdCBoYXMgYSBudWxsIG9mZnNldCBhbmQgYSAwIGNvbXB1dGVkT2Zm
c2V0LCBzaW5jZSB0aGUgZmlyc3QKICAgICAvLyBrZXlmcmFtZSB3aWxsIGFscmVhZHkgaGF2ZSBh
IDAgY29tcHV0ZWRPZmZzZXQuCiAgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lcykg
ewpAQCAtNDM2LDkgKzQzNiw5IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJv
Y2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYKICAgICAvLyA1LiBM
ZXQgb2Zmc2V0cyBiZSBhIHNlcXVlbmNlIG9mIG51bGxhYmxlIGRvdWJsZSB2YWx1ZXMgYXNzaWdu
ZWQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIOKAnG9mZnNldOKAnSBtZW1iZXIgb2YgdGhlIHBy
b3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgYXMgZm9sbG93czoKICAgICAvLyAgICAtIHNlcXVlbmNl
PGRvdWJsZT8+LCB0aGUgdmFsdWUgb2Yg4oCcb2Zmc2V04oCdIGFzLWlzLgogICAgIC8vICAgIC0g
ZG91YmxlPywgYSBzZXF1ZW5jZSBvZiBsZW5ndGggb25lIHdpdGggdGhlIHZhbHVlIG9mIOKAnG9m
ZnNldOKAnSBhcyBpdHMgc2luZ2xlIGl0ZW0sIGkuZS4gwqsgb2Zmc2V0IMK7LAotICAgIFZlY3Rv
cjxPcHRpb25hbDxkb3VibGU+PiBvZmZzZXRzOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3RvcjxPcHRpb25hbDxkb3VibGU+Pj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFz
ZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAgICAgICAgb2Zmc2V0cyA9IFdURjo6Z2V0PFZlY3RvcjxP
cHRpb25hbDxkb3VibGU+Pj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMu
b2Zmc2V0KTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+PiBvZmZzZXRzOworICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+
Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQorICAgICAg
ICBvZmZzZXRzID0gV1RGOjpnZXQ8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+KHByb3Bl
cnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgZWxzZSBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJh
c2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAgICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRv
dWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAg
ICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJfdD4ocHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKQEAgLTUwNyw3ICs1MDcs
NyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4
ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8SlNP
YmplY3Q+JiYga2V5ZnJhbWVzLCBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZl
Y3RPcHRpb25zPj4mJiBvcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4g
S2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiYmIG9wdGlvbnMp
CiB7CiAgICAgYXV0byBrZXlmcmFtZUVmZmVjdCA9IGFkb3B0UmVmKCpuZXcgS2V5ZnJhbWVFZmZl
Y3QodGFyZ2V0LCBQc2V1ZG9JZDo6Tm9uZSkpOwogCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lk
IEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCiAg
ICAgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiB9CiAKLWNvbnN0IE9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0Citj
b25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnRhcmdl
dFN0eWxlYWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdGFyZ2V0KQogICAgICAgICByZXR1cm4g
U3R5bGVhYmxlKCptX3RhcmdldCwgbV9wc2V1ZG9JZCk7CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudChjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBLZXlmcmFt
ZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKQordm9pZCBLZXlmcmFtZUVmZmVjdDo6
ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgU3R5bGVh
YmxlPiYgcHJldmlvdXNUYXJnZXRTdHlsZWFibGUpCiB7CiAgICAgYXV0byBuZXdUYXJnZXRTdHls
ZWFibGUgPSB0YXJnZXRTdHlsZWFibGUoKTsKIApAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBL
ZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4mIHAKICAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFy
Z2V0U3R5bGVhYmxlLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlz
KTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNv
bmRzPiBzdGFydFRpbWUpCit2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYg
dGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQogewogICAgIGlmICghbV90YXJnZXQpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNl
dEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3Vi
CiAgICAgICAgIC8vIDYuIFJlbW92ZSBhbnkga2V5ZnJhbWVzIGZyb20gcHJvcGVydHktc3BlY2lm
aWMga2V5ZnJhbWVzIHRoYXQgZG8gbm90IGhhdmUgYSBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGFyZ2V0
IHByb3BlcnR5LgogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zm
c2V0ID0gMDsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZLZXlmcmFtZXNXaXRoT25lT2Zmc2V0
ID0gMDsKLSAgICAgICAgVmVjdG9yPE9wdGlvbmFsPHNpemVfdD4+IHByb3BlcnR5U3BlY2lmaWNL
ZXlmcmFtZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPHNpemVfdD4+IHByb3BlcnR5
U3BlY2lmaWNLZXlmcmFtZXM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibGVu
ZGluZ0tleWZyYW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYga2V5ZnJhbWUg
PSBtX2JsZW5kaW5nS2V5ZnJhbWVzW2ldOwogICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBrZXlm
cmFtZS5rZXkoKTsKQEAgLTE0ODIsNyArMTQ4Miw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNl
dEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3Vi
CiAgICAgICAgIH0KIAogICAgICAgICAvLyAxMC4gTGV0IGludGVydmFsIGVuZHBvaW50cyBiZSBh
biBlbXB0eSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMuCi0gICAgICAgIFZlY3RvcjxPcHRpb25hbDxz
aXplX3Q+PiBpbnRlcnZhbEVuZHBvaW50czsKKyAgICAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8
c2l6ZV90Pj4gaW50ZXJ2YWxFbmRwb2ludHM7CiAKICAgICAgICAgLy8gMTEuIFBvcHVsYXRlIGlu
dGVydmFsIGVuZHBvaW50cyBieSBmb2xsb3dpbmcgdGhlIHN0ZXBzIGZyb20gdGhlIGZpcnN0IG1h
dGNoaW5nIGNvbmRpdGlvbiBmcm9tIGJlbG93OgogICAgICAgICBpZiAoaXRlcmF0aW9uUHJvZ3Jl
c3MgPCAwICYmIG51bWJlck9mS2V5ZnJhbWVzV2l0aFplcm9PZmZzZXQgPiAxKSB7CkBAIC0xOTk3
LDcgKzE5OTcsNyBAQCBib29sIEtleWZyYW1lRWZmZWN0OjpyZXF1aXJlc1BzZXVkb0VsZW1lbnQo
KSBjb25zdAogICAgIHJldHVybiBtX2JsZW5kaW5nS2V5ZnJhbWVzU291cmNlID09IEJsZW5kaW5n
S2V5ZnJhbWVzU291cmNlOjpXZWJBbmltYXRpb24gJiYgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKTsK
IH0KIAotT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRT
dGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Q
cm9ncmVzcykgY29uc3QKIHsKICAgICBBU1NFUlQoaXRlcmF0aW9uUHJvZ3Jlc3MgPj0gMCAmJiBp
dGVyYXRpb25Qcm9ncmVzcyA8PSAxKTsKIApAQCAtMjAxMCw3ICsyMDEwLDcgQEAgT3B0aW9uYWw8
ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVy
YXRpb25Qcm9ncmVzcykKICAgICBpZiAobV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHByb2dyZXNzVW50aWxOZXh0
U3RlcEluSW50ZXJ2YWwgPSBbaXRlcmF0aW9uUHJvZ3Jlc3NdKGRvdWJsZSBpbnRlcnZhbFN0YXJ0
UHJvZ3Jlc3MsIGRvdWJsZSBpbnRlcnZhbEVuZFByb2dyZXNzLCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24pIC0+IE9wdGlvbmFsPGRvdWJsZT4geworICAgIGF1dG8gcHJvZ3Jlc3NVbnRp
bE5leHRTdGVwSW5JbnRlcnZhbCA9IFtpdGVyYXRpb25Qcm9ncmVzc10oZG91YmxlIGludGVydmFs
U3RhcnRQcm9ncmVzcywgZG91YmxlIGludGVydmFsRW5kUHJvZ3Jlc3MsIFRpbWluZ0Z1bmN0aW9u
KiB0aW1pbmdGdW5jdGlvbikgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAgICAgaWYg
KCFpczxTdGVwc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbikpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5oCmluZGV4IDU4ZGE4ZGZjMDI3MzNkMGFiYjZmNTBjMjVjOWFmNTJjN2RiODg4NjIuLmVj
MDI4YTFkM2FmNjhjZDI2ODE1YTBlYjJiMmZjNzE1ODgyMzRkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEZpbHRl
ck9wZXJhdGlvbnM7CiBjbGFzcyBLZXlmcmFtZUVmZmVjdCA6IHB1YmxpYyBBbmltYXRpb25FZmZl
Y3QKICAgICAsIHB1YmxpYyBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBFbGVtZW50KiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiwgT3B0
aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+JiYpOworICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxSZWY8S2V5ZnJhbWVFZmZlY3Q+PiBjcmVhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEVsZW1lbnQqLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiYmKTsKICAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBSZWY8S2V5ZnJhbWVFZmZlY3Q+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5ZnJh
bWVFZmZlY3Q+IGNyZWF0ZShjb25zdCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIH5LZXlmcmFt
ZUVmZmVjdCgpIHsgfQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0tleWZy
YW1lRWZmZWN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgc3RydWN0IEJh
c2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZSB7Ci0gICAgICAgIFZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFZlY3RvcjxPcHRpb25hbDxkb3VibGU+PiwgZG91YmxlPiBvZmZzZXQgPSBWZWN0b3I8T3B0
aW9uYWw8ZG91YmxlPj4oKTsKKyAgICAgICAgVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgVmVjdG9y
PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4sIGRvdWJsZT4gb2Zmc2V0ID0gVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPj4oKTsKICAgICAgICAgVmFyaWFudDxWZWN0b3I8U3RyaW5nPiwgU3RyaW5n
PiBlYXNpbmcgPSBWZWN0b3I8U3RyaW5nPigpOwogICAgICAgICBWYXJpYW50PFZlY3RvcjxDb21w
b3NpdGVPcGVyYXRpb25PckF1dG8+LCBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+IGNvbXBvc2l0
ZSA9IFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+KCk7CiAgICAgfTsKQEAgLTExMCw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nIHBzZXVkb0VsZW1lbnQoKSBjb25z
dDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYp
OwogCi0gICAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiB0YXJnZXRTdHlsZWFibGUo
KSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gdGFyZ2V0
U3R5bGVhYmxlKCkgY29uc3Q7CiAKICAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4+IGdldEJpbmRpbmdzS2V5ZnJhbWVzKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IGdldEtleWZyYW1lcyhKU0M6OkpTR2xvYmFs
T2JqZWN0Jik7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9z
aXRlKENvbXBvc2l0ZU9wZXJhdGlvbiBjb21wb3NpdGVPcGVyYXRpb24pIHsgbV9jb21wb3NpdGVP
cGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247IH0KIAogICAgIHZvaWQgZ2V0QW5pbWF0ZWRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2
b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIG92ZXJy
aWRlOworICAgIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+ID0gc3Rk
OjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFBs
YXkoKSBmaW5hbDsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7
CiAgICAgdm9pZCBjb3B5UHJvcGVydGllc0Zyb21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYm
KTsKLSAgICB2b2lkIGRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUoY29uc3Qg
c3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
cHJvY2Vzc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4mJik7CiAgICAgdm9pZCBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxl
cmF0ZWRBY3Rpb24pOwogICAgIGJvb2wgY2FuQmVBY2NlbGVyYXRlZCgpIGNvbnN0OwpAQCAtMjA0
LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0
aWVzU3RhdGUoKTsKICAgICB2b2lkIHNldEJsZW5kaW5nS2V5ZnJhbWVzKEtleWZyYW1lTGlzdCYp
OwogICAgIFNlY29uZHMgdGltZVRvTmV4dFRpY2soKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25h
bDxkb3VibGU+IHByb2dyZXNzVW50aWxOZXh0U3RlcChkb3VibGUpIGNvbnN0IGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzVGFyZ2V0aW5nVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0Zvck1hdGNoaW5nVHJhbnNmb3JtRnVuY3Rpb25MaXN0cygp
OwogICAgIHZvaWQgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKaW5kZXggNzZk
MDliYWJmZGEyZTRkNTUxYWIzODg2ZGM1Y2EyM2EyYjU4NjU3Ny4uZjMxZTkyMzJkYjA1YzNhNmU3
OGM3NTg5NmVlOGFmNmNmMjVhMDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L09wdGlvbmFsRWZmZWN0VGltaW5nLmgKQEAgLTM0LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IE9wdGlvbmFsRWZmZWN0VGltaW5nIHsKLSAgICBPcHRpb25hbDxWYXJp
YW50PGRvdWJsZSwgU3RyaW5nPj4gZHVyYXRpb247Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBpdGVy
YXRpb25zOyAvLyBUaGlzIHZhbHVlIGNhbm5vdCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNlIHdl
IG5lZWQgdG8gY2hlY2sgZm9yIGEgTmFOIHZhbHVlLgorICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIFN0cmluZz4+IGR1cmF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBp
dGVyYXRpb25zOyAvLyBUaGlzIHZhbHVlIGNhbm5vdCBiZSBhIE1hcmthYmxlRG91YmxlIHNpbmNl
IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgTmFOIHZhbHVlLgogICAgIE1hcmthYmxlRG91YmxlIGRl
bGF5OwogICAgIE1hcmthYmxlRG91YmxlIGVuZERlbGF5OwogICAgIE1hcmthYmxlRG91YmxlIGl0
ZXJhdGlvblN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApp
bmRleCA3ZTU1NDQwMTk2OTcyNmRlNTU1Yjc2NzM5ZjNhMGI0NzllZTIyZDU5Li4xMzIzNjdlMjNh
MjZkZDdkODgyOWE1YWM2NDhlOWU0OGM3ODJmMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2LDggKzIwNiw4IEBAIHZvaWQgV2ViQW5pbWF0aW9u
OjpzZXRFZmZlY3RJbnRlcm5hbChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0PiYmIG5ld0VmZmVjdCwg
Ym9vbCBkCiAKICAgICBhdXRvIG9sZEVmZmVjdCA9IHN0ZDo6ZXhjaGFuZ2UobV9lZmZlY3QsIFdU
Rk1vdmUobmV3RWZmZWN0KSk7CiAKLSAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZp
b3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlm
cmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51
bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlm
cmFtZUVmZmVjdD4obV9lZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0
LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+
KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+
dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+IG5ld1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUo
KSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlv
biByZWxhdGlvbnNoaXBzIGFuZCB0aGUgdGltZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlm
IChvbGRFZmZlY3QpIHsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0
VGltZWxpbmVJbnRlcm5hbChSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAg
ICAgICAgIG1fZWZmZWN0LT5hbmltYXRpb25UaW1lbGluZURpZENoYW5nZShtX3RpbWVsaW5lLmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25z
dCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9u
YWw8Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFyZ2V0KQordm9pZCBXZWJBbmltYXRpb246OmVmZmVj
dFRhcmdldERpZENoYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHBy
ZXZpb3VzVGFyZ2V0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1Rh
cmdldCkKIHsKICAgICBpZiAobV90aW1lbGluZSkgewogICAgICAgICBpZiAocHJldmlvdXNUYXJn
ZXQpCkBAIC0yOTMsMTQgKzI5MywxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0
RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpbwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGFyZ2V0
KCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3Rh
cnRUaW1lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRp
bmdzU3RhcnRUaW1lKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3RhcnRUaW1lKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJ
VGltZSgqbV9zdGFydFRpbWUpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NT
dGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBuZXdTdGFydFRpbWUpCit2b2lkIFdlYkFuaW1hdGlv
bjo6c2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IG5ld1N0YXJ0VGlt
ZSkKIHsKICAgICBpZiAobmV3U3RhcnRUaW1lKQogICAgICAgICBzZXRTdGFydFRpbWUoU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcygqbmV3U3RhcnRUaW1lKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBXZWJBbmltYXRpb246OnNldEJpbmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4g
bmV3U3RhcnRUaW1lKQogICAgICAgICBzZXRTdGFydFRpbWUoc3RkOjpudWxsb3B0KTsKIH0KIAot
dm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFy
dFRpbWUpCit2b2lkIFdlYkFuaW1hdGlvbjo6c2V0U3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbmV3U3RhcnRUaW1lKQogewogICAgIC8vIDMuNC42IFRoZSBwcm9jZWR1cmUgdG8gc2V0
IHRoZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiwgYW5pbWF0aW9uLCB0byBuZXcgc3RhcnQgdGlt
ZSwgaXMgYXMgZm9sbG93czoKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFu
aW1hdGlvbnMvI3NldHRpbmctdGhlLXN0YXJ0LXRpbWUtb2YtYW4tYW5pbWF0aW9uCkBAIC0zNTYs
NyArMzU2LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNv
bmRzPiBuZXdTdGFydFRpbWUpCiAgICAgaW52YWxpZGF0ZUVmZmVjdCgpOwogfQogCi1PcHRpb25h
bDxkb3VibGU+IFdlYkFuaW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29u
c3QKIHsKICAgICBhdXRvIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIGlmICghdGltZSkKQEAg
LTM2NCwxOSArMzY0LDE5IEBAIE9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5n
c0N1cnJlbnRUaW1lKCkgY29uc3QKICAgICByZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQ
SVRpbWUodGltZS52YWx1ZSgpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
OjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFRpbWUpCitF
eGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGN1cnJlbnRUaW1lKQogewogICAgIGlmICghY3VycmVudFRpbWUp
CiAgICAgICAgIHJldHVybiBzZXRDdXJyZW50VGltZShzdGQ6Om51bGxvcHQpOwogICAgIHJldHVy
biBzZXRDdXJyZW50VGltZShTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGN1cnJlbnRUaW1lLnZh
bHVlKCkpKTsKIH0KIAotT3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGlt
ZShPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNlY29u
ZHM+IFdlYkFuaW1hdGlvbjo6Y3VycmVudFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzdGFy
dFRpbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZTo6
WWVzLCBzdGFydFRpbWUpOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBXZWJBbmltYXRpb246OmN1
cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSByZXNwZWN0SG9sZFRpbWUsIE9wdGlvbmFsPFNlY29u
ZHM+IHN0YXJ0VGltZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9u
OjpjdXJyZW50VGltZShSZXNwZWN0SG9sZFRpbWUgcmVzcGVjdEhvbGRUaW1lLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgY29uc3QKIHsKICAgICAvLyAzLjQuNC4gVGhlIGN1cnJl
bnQgdGltZSBvZiBhbiBhbmltYXRpb24KICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
d2ViLWFuaW1hdGlvbnMtMS8jdGhlLWN1cnJlbnQtdGltZS1vZi1hbi1hbmltYXRpb24KQEAgLTM5
OSw3ICszOTksNyBAQCBPcHRpb25hbDxTZWNvbmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1l
KFJlc3BlY3RIb2xkVGltZSByZXNwZWN0SG9sZFRpbWUsIE9wdAogICAgIHJldHVybiAoKm1fdGlt
ZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUudmFsdWVfb3IoKm1fc3RhcnRUaW1lKSkg
KiBtX3BsYXliYWNrUmF0ZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpz
aWxlbnRseVNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IHNlZWtUaW1lKQorRXhjZXB0
aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlv
bnMsIHN0cmVhbSA8PCAiV2ViQW5pbWF0aW9uICIgPDwgdGhpcyA8PCAiIHNpbGVudGx5U2V0Q3Vy
cmVudFRpbWUgIiA8PCBzZWVrVGltZSk7CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBXZWJBbmltYXRpb246OnNpbGVudGx5U2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vj
b25kcz4gc2Vla1RpbQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdl
YkFuaW1hdGlvbjo6c2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCitF
eGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gc2Vla1RpbWUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMs
IHN0cmVhbSA8PCAiV2ViQW5pbWF0aW9uICIgPDwgdGhpcyA8PCAiIHNldEN1cnJlbnRUaW1lICIg
PDwgc2Vla1RpbWUpOwogCkBAIC02NzcsNyArNjc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246Ondp
bGxDaGFuZ2VSZW5kZXJlcigpCiAgICAgICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9l
ZmZlY3QpLndpbGxDaGFuZ2VSZW5kZXJlcigpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6ZW5x
dWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9u
YWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkK
K3ZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKIHsKICAgICBhdXRvIGV2ZW50ID0gQW5p
bWF0aW9uUGxheWJhY2tFdmVudDo6Y3JlYXRlKHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRp
bWUsIHRoaXMpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CkBAIC0xMjI4LDcgKzEyMjgs
NyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dGljaygpCiAgICAgICAgIG1fZWZmZWN0LT5hbmltYXRp
b25EaWRUaWNrKCk7CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKQordm9pZCBXZWJBbmltYXRpb246OnJlc29sdmUoUmVu
ZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0
eWxlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkKIHsKICAgICBpZiAoIW1fc2hv
dWxkU2tpcFVwZGF0aW5nRmluaXNoZWRTdGF0ZVdoZW5SZXNvbHZpbmcpCiAgICAgICAgIHVwZGF0
ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Olllcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXggN2ViODRjNmRkYTliMDdj
YWYwNDM5NzhjNjc5MTY4YzA5NDI1MmFlNi4uNTAzNjY2ZjMwZmZkMGMwMDdhOGRmMjliNmE1MWEz
YmE3YTM3MjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAt
NzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAgQW5pbWF0aW9uVGltZWxpbmUqIHRpbWVsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRU
aW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYpOwogCi0gICAgT3B0aW9uYWw8U2Vj
b25kcz4gY3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogCiAgICAgZG91YmxlIHBsYXli
YWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tSYXRlICsgMDsgfQogICAgIHZvaWQg
c2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwZXJzaXN0KCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tbWl0U3R5bGVzKCk7
CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NTdGFydFRpbWUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91Ymxl
Pik7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydFRpbWU7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPik7Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0
aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmluZGlu
Z3NTdGFydFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmluZGluZ3NTdGFydFRp
bWUoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0
YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgdm9pZCBzZXRTdGFy
dFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0QmluZGluZ3NDdXJyZW50VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4p
OwogICAgIHZpcnR1YWwgUGxheVN0YXRlIGJpbmRpbmdzUGxheVN0YXRlKCkgY29uc3QgeyByZXR1
cm4gcGxheVN0YXRlKCk7IH0KICAgICB2aXJ0dWFsIFJlcGxhY2VTdGF0ZSBiaW5kaW5nc1JlcGxh
Y2VTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHJlcGxhY2VTdGF0ZSgpOyB9CiAgICAgdmlydHVhbCBi
b29sIGJpbmRpbmdzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIHBlbmRpbmcoKTsgfQpAQCAtMTIw
LDggKzEyMCw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzVGljaygpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCB0aWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0
VGljaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8
U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdl
KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEVsZW1lbnRTdHlsZSwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBlZmZlY3RUYXJnZXREaWRDaGFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBT
dHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHls
ZWFibGU+JiBuZXdUYXJnZXQpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRTdGF0ZURpZENoYW5nZSgp
OwogICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyKCk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5k
ZWQ7IH0KICAgICBib29sIGlzUmVwbGFjZWFibGUoKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZSgp
OwotICAgIHZvaWQgZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYsIE9wdGlvbmFsPFNlY29uZHM+LCBPcHRpb25hbDxTZWNvbmRzPik7CisgICAgdm9pZCBlbnF1
ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7CiAKICAgICB1aW50NjRfdCBnbG9i
YWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICB2b2lk
IHNldEdsb2JhbFBvc2l0aW9uKHVpbnQ2NF90IGdsb2JhbFBvc2l0aW9uKSB7IG1fZ2xvYmFsUG9z
aXRpb24gPSBnbG9iYWxQb3NpdGlvbjsgfQpAQCAtMTY3LDggKzE2Nyw4IEBAIHByaXZhdGU6CiAg
ICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1lKCkgY29uc3Q7CiAgICAgV2ViQW5pbWF0aW9uJiByZWFk
eVByb21pc2VSZXNvbHZlKCk7CiAgICAgV2ViQW5pbWF0aW9uJiBmaW5pc2hlZFByb21pc2VSZXNv
bHZlKCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoUmVzcGVjdEhvbGRUaW1l
LCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2lsZW50bHlTZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPik7CisgICAg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZShSZXNwZWN0SG9sZFRpbWUsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNpbGVudGx5U2V0Q3VycmVudFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7CiAg
ICAgdm9pZCBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwogICAgIGJvb2wgaGFzUGVuZGluZ1Bh
dXNlVGFzaygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayAhPSBU
aW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5n
UGxheVRhc2soKSBjb25zdCB7IHJldHVybiBtX3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayAhPSBU
aW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaAppbmRleCA4ZGM3YTA3ZWZlNzEzMjk1NTZmN2ViNWYxYmMyOTgyNzI4YzdhNDE2Li41
NzQ1ZTJhNGZlNzk3MGNlNGRmMzUxMmYwYTA2ODI4ZTA2MGQzYWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL0lETFR5cGVzLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBzdHJ1Y3QgSURMVHlwZSB7CiAgICAg
dXNpbmcgU2VxdWVuY2VTdG9yYWdlVHlwZSA9IFQ7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBl
ID0gVDsKLSAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1l
bnRhdGlvblR5cGU+OworICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IHN0ZDo6b3B0
aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsKIAogICAgIHVzaW5nIElubmVyUGFyYW1ldGVyVHlw
ZSA9IFQ7Ci0gICAgdXNpbmcgTnVsbGFibGVJbm5lclBhcmFtZXRlclR5cGUgPSBPcHRpb25hbDxJ
bXBsZW1lbnRhdGlvblR5cGU+OworICAgIHVzaW5nIE51bGxhYmxlSW5uZXJQYXJhbWV0ZXJUeXBl
ID0gc3RkOjpvcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwogCi0gICAgdXNpbmcgTnVsbGFi
bGVUeXBlID0gT3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsKKyAgICB1c2luZyBOdWxsYWJs
ZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47CiAgICAgc3RhdGljIE51
bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0
aWMgYm9vbCBpc051bGxWYWx1ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAh
dmFsdWU7IH0KICAgICBzdGF0aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgp
OyB9CkBAIC0yMDksMTQgKzIwOSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURM
U2VxdWVuY2UgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdAogICAgIHVz
aW5nIElubmVyVHlwZSA9IFQ7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVj
dG9yPHR5cGVuYW1lIFQ6OklubmVyUGFyYW1ldGVyVHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxl
UGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbm5lclBh
cmFtZXRlclR5cGU+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dHlwZW5hbWUgVDo6SW5uZXJQYXJhbWV0ZXJUeXBlPj4mOwog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEZyb3plbkFycmF5IDogSURMVHlw
ZTxWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRpb25UeXBlPj4gewogICAgIHVzaW5nIElu
bmVyVHlwZSA9IFQ7CiAKICAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5
cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1l
dGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFsPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlv
blR5cGU+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRpb25UeXBlPj4mOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RydWN0IElETFJlY29yZCA6IElETFR5
cGU8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlw
ZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4+IHsKQEAgLTIyNCw3ICsyMjQsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURM
VHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZQogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7CiAKICAg
ICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5
cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25U
eXBlPj4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IE9wdGlvbmFs
PFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUs
IHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQ
YXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRh
dGlvblR5cGU+Pj4mOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21p
c2UgOiBJRExXcmFwcGVyPERPTVByb21pc2U+IHsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3Qg
SURMVW5pb24gOiBJRExUeXBlPFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlw
ZS4uLj4+IHsKICAgICB1c2luZyBUeXBlTGlzdCA9IGJyaWdhbmQ6Omxpc3Q8VHMuLi4+OwogCiAg
ICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxl
bWVudGF0aW9uVHlwZS4uLj4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNv
bnN0IE9wdGlvbmFsPFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+
JjsKKyAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBjb25zdCBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8dHlwZW5hbWUgVHM6OkltcGxlbWVudGF0aW9uVHlwZS4uLj4+JjsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExCdWZmZXJTb3VyY2UgOiBJRExXcmFwcGVyPFQ+
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlw
dEZldGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0
Y2hlci5jcHAKaW5kZXggYzBmZmFkZDZmMjUyNDI2YWJhNzIyYTUwODQ0ZTYzNTcyZjRkNWU5My4u
NWYxNjU3YTIyZWM2OGRlNDE1YzA1OTMyZTk2ODA4NjAzM2Y0M2Y3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRG
ZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2NyaXB0KERvY3UKICAgICByZXR1cm4gcmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGludGVn
cml0eSksIHsgfSk7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2Fj
aGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwg
U3RyaW5nJiYgaW50ZWdyaXR5LCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpIGNvbnN0CitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+
IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1v
ZGUsIFN0cmluZyYmIGludGVncml0eSwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0
eT4gcmVzb3VyY2VMb2FkUHJpb3JpdHkpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudC5zZXR0
aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRleCAy
OTkyODRkY2ZiMGNmMTgxN2QzZjI2MWM1ZGIxNjA5NTExZDliYzI4Li5lNGU5ZTNiY2ZkNGYwYzli
NjljZjJiMGY0NjU0MWExNzA0YTExNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCkBAIC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoK
ICAgICB7CiAgICAgfQogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBy
ZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3VtZW50JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHksIE9wdGlvbmFs
PFJlc291cmNlTG9hZFByaW9yaXR5PikgY29uc3Q7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3VtZW50JiwgY29uc3QgVVJM
JiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRl
Z3JpdHksIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+KSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9ub25jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NUHJvbWlzZVByb3h5LmgKaW5kZXggMzgyOWMxZTFkMDU0YWFkNTBmYjE5YWJmNzJjNDBmYjk3
MzAxYTlkNy4uYzJjY2QxOGE3NWY1ZGYyMDFhMTkyMGMxZTVmNTJkY2M1YzAxNGZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbiwgUmVqZWN0QXNIYW5kbGVk
ID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7CiAgICAgCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4
Y2VwdGlvbk9yPFZhbHVlPj4gbV92YWx1ZU9yRXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
RXhjZXB0aW9uT3I8VmFsdWU+PiBtX3ZhbHVlT3JFeGNlcHRpb247CiAgICAgVmVjdG9yPFJlZjxE
ZWZlcnJlZFByb21pc2U+LCAxPiBtX2RlZmVycmVkUHJvbWlzZXM7CiB9OwogCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxl
ZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8pOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEV4Y2Vw
dGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JFeGNlcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9yRXhjZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8RGVmZXJy
ZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJlZFByb21pc2VzOwogfTsKIApAQCAtMTA2LDcgKzEwNiw3
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgUmVzb2x2ZUNhbGxiYWNrIG1fcmVzb2x2
ZUNhbGxiYWNrOwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX3ZhbHVlT3JFeGNl
cHRpb247CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV92YWx1ZU9yRXhj
ZXB0aW9uOwogICAgIFZlY3RvcjxSZWY8RGVmZXJyZWRQcm9taXNlPiwgMT4gbV9kZWZlcnJlZFBy
b21pc2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAppbmRleCBkZjVkMTU3ZjNiMTdmYTQ2MTM1MzgzMjdjNDQ4YzEzODg5
OWYzMzk0Li42Nzc1Y2JmNThmNDk5ZmQ2YzQ0OGM4NjU2MGYyNzIyYTliNGUzM2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtNDMwLDcgKzQzMCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIHRv
SlMoKmxleGljYWxHbG9iYWxPYmplY3QsICpnbG9iYWxPYmplY3QsIGtleURhdGEubWF5YmVDcmVh
dGVJREJLZXkoKS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8SURCS2V5RGF0YT4gY3JlYXRl
S2V5UGF0aEFycmF5KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIE9wdGlvbmFsPElEQktleVBhdGg+IG9i
amVjdFN0b3JlS2V5UGF0aCwgY29uc3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCitzdGF0
aWMgVmVjdG9yPElEQktleURhdGE+IGNyZWF0ZUtleVBhdGhBcnJheShKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSURCSW5kZXhJbmZvJiBp
bmZvLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aCwgY29uc3Qg
SURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjpt
YWtlVmlzaXRvcihbJl0oY29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+IFZlY3RvcjxJREJLZXlEYXRh
PiB7CiAgICAgICAgIC8vIFZhbHVlIGRvZXNuJ3QgY29udGFpbiBhdXRvLWdlbmVyYXRlZCBrZXks
IHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgYWRkIGtleSBpZiBpdCBpcyBwb3NzaWJseSBhdXRvLWdl
bmVyYXRlZC4KQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgVmVjdG9yPElEQktleURhdGE+IGNy
ZWF0ZUtleVBhdGhBcnJheShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdAogICAg
IHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGluZm8ua2V5UGF0aCgpKTsKIH0KIAotdm9pZCBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgSlNWYWx1ZSB2YWx1ZSwgSW5kZXhLZXkmIG91
dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIG9iamVjdFN0b3JlS2V5UGF0aCwgY29u
c3QgSURCS2V5RGF0YSYgb2JqZWN0U3RvcmVLZXkpCit2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JW
YWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvLCBKU1ZhbHVlIHZhbHVlLCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBvYmplY3RTdG9yZUtleVBhdGgsIGNvbnN0IElEQktleURhdGEm
IG9iamVjdFN0b3JlS2V5KQogewogICAgIGF1dG8ga2V5RGF0YXMgPSBjcmVhdGVLZXlQYXRoQXJy
YXkobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIGluZm8sIG9iamVjdFN0b3JlS2V5UGF0aCwg
b2JqZWN0U3RvcmVLZXkpOwogICAgIGlmIChrZXlEYXRhcy5pc0VtcHR5KCkpCkBAIC01MDMsNyAr
NTAzLDcgQEAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG8KICAgICByZXR1cm4gaW5kZXhLZXlzOwog
fQogCi1PcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5q
ZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0
aD4mIGtleVBhdGgpCitzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJW
YWx1ZVdpdGhLZXlJbmplY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8ganNWYWx1ZSA9IGRl
c2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIWtleVBhdGggfHwgIVdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkpIHx8ICFpc0lEQktleVBhdGhWYWxp
ZChrZXlQYXRoLnZhbHVlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oCmluZGV4IGE3ZDZkN2U1YWE4ZjM3MDU0YWJjZTI0OWU0OWRkOTc4
Njc3OGJmOTguLjU5Zjg0ODUxOTk0OTg1NmVmYTE3YjdhMDc4Yjk5ZjZkNGJkOGI4NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAg
LTUwLDcgKzUwLDcgQEAgUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoKEpTQzo6SlNHbG9iYWxPYmplY3QmLAogYm9vbCBjYW5JbmplY3RJREJL
ZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYpOwogYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQktleURhdGEmLCBKU0M6OkpTVmFsdWUsIGNvbnN0IElE
QktleVBhdGgmKTsKIAotdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91
dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mLCBjb25zdCBJREJLZXlEYXRhJik7Cit2
b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3Qg
SURCSW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVlLCBJbmRleEtleSYgb3V0S2V5LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiwgY29uc3QgSURCS2V5RGF0YSYpOwogCiBJbmRleElEVG9J
bmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYpOwogCkBAIC02Miw1ICs2Miw1IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IElEQlZhbHVlJik7CiBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYs
IElEQktleSopOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgY29uc3QgSURCS2V5RGF0YSYpOwogCi1PcHRpb25hbDxKU0M6OkpTVmFs
dWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBPcHRpb25hbDxJ
REJLZXlQYXRoPiYpOworc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURC
VmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJWYWx1
ZSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9w
ZXJhdGlvbnMuaAppbmRleCA1ZDM0MDVjOGZmYjgwOGUzMDgyMWFjYmU3NWYxNjc1Mjg4ZTU4MjU2
Li4wYjM3ZDc3YWQwZGQ2NmFiZThlODE1N2FjMmIxMjRmOWNkODg3MmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKQEAg
LTkxLDcgKzkxLDcgQEAgc3RhdGljIGRlY2x0eXBlKGF1dG8pIHZpc2libGVOYW1lZFByb3BlcnR5
SXRlbUFjY2Vzc29yRnVuY3RvcihJbm5lckl0ZW1BY2Nlc3NvciYKICAgICBpZiBjb25zdGV4cHIg
KElzRXhjZXB0aW9uT3I8c3RkOjppbnZva2VfcmVzdWx0X3Q8SW5uZXJJdGVtQWNjZXNzb3IsIEpT
Q2xhc3MmLCBKU0M6OlByb3BlcnR5TmFtZT4+KSB7CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUg
PSBFeGNlcHRpb25Pcjx0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+OwogCi0g
ICAgICAgIHJldHVybiBbaW5uZXJJdGVtQWNjZXNzb3IgPSBzdGQ6OmZvcndhcmQ8SW5uZXJJdGVt
QWNjZXNzb3I+KGlubmVySXRlbUFjY2Vzc29yKV0gKEpTQ2xhc3MmIHRoaXNPYmplY3QsIEpTQzo6
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8UmV0dXJuVHlwZT4geworICAg
ICAgICByZXR1cm4gW2lubmVySXRlbUFjY2Vzc29yID0gc3RkOjpmb3J3YXJkPElubmVySXRlbUFj
Y2Vzc29yPihpbm5lckl0ZW1BY2Nlc3NvcildIChKU0NsYXNzJiB0aGlzT2JqZWN0LCBKU0M6OlBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gewog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpbm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkgfTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgZGVjbHR5cGUoYXV0bykgdmlzaWJsZU5h
bWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yKElubmVySXRlbUFjY2Vzc29yJgogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGU7CiAKLSAgICAgICAgcmV0dXJuIFtpbm5lckl0ZW1BY2Nlc3NvciA9IHN0
ZDo6Zm9yd2FyZDxJbm5lckl0ZW1BY2Nlc3Nvcj4oaW5uZXJJdGVtQWNjZXNzb3IpXSAoSlNDbGFz
cyYgdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDxSZXR1cm5UeXBlPiB7CisgICAgICAgIHJldHVybiBbaW5uZXJJdGVtQWNjZXNzb3IgPSBzdGQ6
OmZvcndhcmQ8SW5uZXJJdGVtQWNjZXNzb3I+KGlubmVySXRlbUFjY2Vzc29yKV0gKEpTQ2xhc3Mm
IHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4gc3RkOjpvcHRp
b25hbDxSZXR1cm5UeXBlPiB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlubmVySXRlbUFj
Y2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIUlETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5
cGUgeyBJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAppbmRleCBmYmExYzA5ZWFl
N2YyYzY3ZDcxYWY0ZWY0NjM4YjRhODkyNWQxNjQ2Li4xOWQ1ZmE5NGYzMGE5OWU0MzM0YzhhOWNl
YjMxMzI2NjU2NGRiNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRBbnkuaApAQCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRl
cjxJRExBbnk+IHsKIHRlbXBsYXRlPD4gc3RydWN0IFZhcmlhZGljQ29udmVydGVyPElETEFueT4g
ewogICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJRExBbnk6OkltcGxlbWVudGF0aW9uVHlwZTsK
IAotICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRFbnVtZXJhdGlvbi5oCmluZGV4IDY0MmUwNmY2MWY2YjZlNzAzMGJh
NmY5NzFkNjA2MjUzYWViMTk5ODYuLmQ0NThlNGFhOGNiM2VlZmU1NDI1ZjNhMGZjMTdmYzA5NTdm
MjhiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0RW51bWVyYXRpb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBTcGVjaWFsaXplZCBieSBnZW5lcmF0ZWQgY29kZSBmb3IgSURMIGVudW1lcmF0aW9uIGNv
bnZlcnNpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25hbDxUPiBwYXJzZUVudW1lcmF0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RkOjpvcHRpb25hbDxUPiBwYXJzZUVudW1lcmF0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOwogCiAvLyBTcGVjaWFsaXplZCBieSBnZW5lcmF0ZWQg
Y29kZSBmb3IgSURMIGVudW1lcmF0aW9uIGNvbnZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCmluZGV4IDQ4ZWExN2MwZWU3
MjZiYjc5YWFlOTMzZDE3NjFiOWRhNDcwMDMzMDcuLmM2M2FhNzZjOTc4ODU0MDUyNTcyMDJhNjA4
M2M4ZTU0M2Q1ZDhlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydEludGVyZmFjZS5oCkBAIC05MSwxMiArOTEsMTIgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEpTQ29udmVydGVyPElETEludGVyZmFjZTxUPj4gewogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFZhcmlhZGljQ29udmVydGVyPElETEludGVyZmFjZTxUPj4gewogICAg
IHVzaW5nIEl0ZW0gPSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFQ+OwogCi0gICAgc3RhdGljIE9w
dGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+
IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgYXV0byogcmVzdWx0ID0gQ29udmVydGVyPElE
TEludGVyZmFjZTxUPj46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxJdGVtPiB7ICpyZXN1bHQgfTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8SXRlbT4geyAqcmVzdWx0IH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKaW5kZXggYTMyMzY2YzkzOTBm
ZjEyNTBhMjNlNmU0ZWEzMWNhZTVmMWY0ZDBlNi4uMDc2MjExYTc2ZTRhMzdhODU0ZGRkOWUwNjg1
YTcxYzY4MzIyZWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRVbmlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVy
OwogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4KIHN0cnVjdCBDb25kaXRpb25hbFJldHVy
bmVyPFJldHVyblR5cGUsIHRydWU+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0
YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBnZXQoVCYmIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJldHVyblR5cGU+IGdldChUJiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gUmV0dXJuVHlwZShzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKTsKICAgICB9CkBAIC01MSw3ICs1
MSw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIHRydWU+IHsKIHRl
bXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxSZXR1cm5lcjxS
ZXR1cm5UeXBlLCBmYWxzZT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFJldHVyblR5cGU+IGdldChUJiYpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmV0dXJuVHlwZT4gZ2V0KFQmJikKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0
aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewotICAgIHN0YXRpYyBPcHRpb25h
bDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1
cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlKENv
bnZlcnRlcjxUPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSkpOwogICAgIH0K
QEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVyPFJldHVyblR5cGUs
IFQsIHRydWU+IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUgVD4K
IHN0cnVjdCBDb25kaXRpb25hbENvbnZlcnRlcjxSZXR1cm5UeXBlLCBULCBmYWxzZT4gewotICAg
IHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBKU0M6OkpTVmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC04MSw3ICs4MSw3IEBAIHN0cnVjdCBDb25k
aXRpb25hbFNlcXVlbmNlQ29udmVydGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
LCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0dXJu
VHlwZSwgVCwgdHJ1ZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3Qq
IG9iamVjdCwgSlNDOjpKU1ZhbHVlIG1ldGhvZCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU1ZhbHVlIG1ldGhvZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBSZXR1cm5UeXBlKENvbnZlcnRlcjxUPjo6Y29udmVydChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBvYmplY3QsIG1ldGhvZCkpOwogICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgc3Ry
dWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRp
dGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgZmFsc2U+IHsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1
cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBA
IC0xOTEsNyArMTkxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRl
cjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgLy8gICAg
IDIuIElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0
aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KICAgICAgICAgLy8gICAgICAgICAo
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBvYmplY3QgYW5kIHN0ZXAgNC4yKQogICAgICAgICBpZiAo
YnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEludGVyZmFjZTxicmlnYW5kOjpfMT4+Ojp2YWx1
ZSkgewotICAgICAgICAgICAgT3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+IHJldHVyblZhbHVlOwogICAgICAgICAg
ICAgYnJpZ2FuZDo6Zm9yX2VhY2g8SW50ZXJmYWNlVHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkg
ewogICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExVCiAgICAg
ICAgIC8vICAgICAgICAgKEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb2JqZWN0IGFuZCBzdGVwIDku
MikKICAgICAgICAgY29uc3RleHByIGJvb2wgaGFzVHlwZWRBcnJheVR5cGUgPSBicmlnYW5kOjph
bnk8VHlwZUxpc3QsIElzSURMVHlwZWRBcnJheTxicmlnYW5kOjpfMT4+Ojp2YWx1ZTsKICAgICAg
ICAgaWYgKGhhc1R5cGVkQXJyYXlUeXBlKSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxSZXR1cm5U
eXBlPiByZXR1cm5WYWx1ZTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4g
cmV0dXJuVmFsdWU7CiAgICAgICAgICAgICBicmlnYW5kOjpmb3JfZWFjaDxUeXBlZEFycmF5VHlw
ZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1
ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewog
ICAgIHsKICAgICAgICAgYXV0byBpbmRleCA9IHZhcmlhbnQuaW5kZXgoKTsKIAotICAgICAgICBP
cHRpb25hbDxKU0M6OkpTVmFsdWU+IHJldHVyblZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEpTQzo6SlNWYWx1ZT4gcmV0dXJuVmFsdWU7CiAgICAgICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNl
cXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKICAgICAgICAgICAgIHVzaW5nIEkgPSB0eXBlbmFt
ZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsK
ICAgICAgICAgICAgIGlmIChJOjp2YWx1ZSA9PSBpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKaW5kZXggNDQ0MzI1ZjZkN2U3
ZDVjNzM4YjQ2Y2M1NTA2N2ZlOGUyYThiOTM5Yy4uN2Y4ZDg5MzFlNDc2ZjhjNGY5ZWVmODBkNjc1
N2YzZmU1ZGU0NTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0VmFyaWFkaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRWYXJpYWRpYy5oCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElE
TFR5cGU+CiBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXIgewogICAgIHVzaW5nIEl0ZW0gPSB0eXBl
bmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
SXRlbT4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SXRlbT4gY29udmVy
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiAgICAgewogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYTNjNmJk
YTYzYmZlMGYwYmE2YmI5MWVhNjY5YzgxOWE1ZDc2ZTY4ZC4uOTE1OWIwN2RlM2VhYjlkZmY3NmJh
MzcyYzhiZGU2ZWUyYTI3OGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
SXRlcmF0b3IuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAotICAgIE9wdGlvbmFsPHR5cGVuYW1lIERPTVdy
YXBwZWQ6Okl0ZXJhdG9yPiBtX2l0ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUg
RE9NV3JhcHBlZDo6SXRlcmF0b3I+IG1faXRlcmF0b3I7CiAgICAgSXRlcmF0aW9uS2luZCBtX2tp
bmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggMzk3ZTI5NDA0N2RlZjRlODY1NzY2YTkyZjNmZTZiN2Y0YjA1ZmJiYy4u
MTkzYWE2YzhhYzg5YzdjNWIzNDk3MTc4MDVmYzgxMjUzZGMyZDUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTc0LDcgKzE3
NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsCiB7CiAgICAgLy8gKDEpIEZpcnN0LCBpbmRl
eGVkIHByb3BlcnRpZXMuCiAgICAgLy8gSGFuZCBvZmYgYWxsIGluZGV4ZWQgYWNjZXNzIHRvIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIHdoaWNoIHN1cHBvcnRzIHRoZSBpbmRleGVkIGdldHRl
ci4KLSAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCBzbG90KTsKIAog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oCmluZGV4IDgxY2I5
MTBmYWY2Nzk5YTI2ZTFlZTE0ZDRiNjQ1Y2I0OTc1MDZhMTAuLjY5OWMwZDYxM2I0N2Y5MzU5OTMz
MmE2YjE3NzFiNzJhYmRiNmYwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQ2FzdGluZ0hl
bHBlcnMgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2ViQ29yZTo6SlNE
b2N1bWVudD4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5
cGVSYW5nZSB7IEpTVHlwZVJhbmdlIHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0Rv
Y3VtZW50V3JhcHBlclR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRG9jdW1l
bnRXcmFwcGVyVHlwZSkgfSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxK
U1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgSlNUeXBlUmFuZ2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+
KFdlYkNvcmU6OkpTRG9jdW1lbnRXcmFwcGVyVHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oV2Vi
Q29yZTo6SlNEb2N1bWVudFdyYXBwZXJUeXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9t
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVu
dEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgK
aW5kZXggMjVhNjgzYzllYzliYjU1MDc1YmZlYzgwNTJhZmJiNTg5ZjEwNTliMS4uZWM5YjAzMjNh
OGNkMjA1ODg0YmJjMDYwYTk0NzU1NjY5ODhiZDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpT
Q2FzdGluZ0hlbHBlcnMgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8V2Vi
Q29yZTo6SlNFbGVtZW50PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVS
YW5nZT4gdHlwZVJhbmdlIHsgSlNUeXBlUmFuZ2UgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNv
cmU6OkpTRWxlbWVudFR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRWxlbWVu
dFR5cGUpIH0gfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8SlNUeXBlUmFu
Z2U+IHR5cGVSYW5nZSB7IEpTVHlwZVJhbmdlIHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3Jl
OjpKU0VsZW1lbnRUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihXZWJDb3JlOjpKU0VsZW1lbnRU
eXBlKSB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaAppbmRleCBlMDNhMGRjNWZkZDE1YTdmZmYwOWRj
NWIyMzA1NmNlY2FkYWQzN2NkLi44MjcxYjkzM2Q4NjcyMjA4MWRjYzQ3YjhjZjI1OTAwMTA4MGY4
NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Nhc3RpbmdIZWxwZXJzIHsKIAogdGVtcGxhdGU8Pgog
c3RydWN0IEluaGVyaXRzVHJhaXRzPFdlYkNvcmU6OkpTRXZlbnQ+IHsKLSAgICBzdGF0aWMgY29u
c3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpT
VHlwZT4oV2ViQ29yZTo6SlNFdmVudFR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6
OkpTRXZlbnRUeXBlKSB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPEpT
VHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oV2ViQ29yZTo6SlNF
dmVudFR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTRXZlbnRUeXBlKSB9IH07
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5o
ZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmgKaW5kZXggMzQ0Y2U4MTVhYjYzMTQ5ZmZmZTgwODM1MzljMjNjMWFi
Mjg4ZDZiMS4uZmJkNDY4ZDQ3ZWNhZjI4NzIzZDA3NmIyN2U5MWYyZjJiZjE1MGRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIEpTQ2FzdGluZ0hlbHBlcnMgewogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSW5oZXJp
dHNUcmFpdHM8V2ViQ29yZTo6SlNOb2RlPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25h
bDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6
OkpTTm9kZVR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5cGUgKyBX
ZWJDb3JlOjpKU05vZGVUeXBlTWFzaykgfSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpv
cHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KFdl
YkNvcmU6OkpTTm9kZVR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KFdlYkNvcmU6OkpTTm9kZVR5
cGUgKyBXZWJDb3JlOjpKU05vZGVUeXBlTWFzaykgfSB9OwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkgPT0gdHlwZVJhbmdlLT5sYXN0KTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0
cyhWTSYgdm0sIEZyb20qIGZyb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUN1c3RvbS5jcHAKaW5kZXggZDYyYTY5
ODc1ZjRjN2NhZDhjODVkMWNmYTkwNmM2MGRmYjc0N2IzMS4uOWIwY2Q1NDM4N2E4ZTI5OWUzYWE4
NjdkYjZkNDgwNTc5ZTJhOWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm1DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtQ3VzdG9tLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBKU1ZhbHVlIEpTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsTwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwganNVbmRlZmluZWQoKSk7CiAKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQxID0gY2FsbEZyYW1lLmFyZ3VtZW50KDEpOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBrZXlJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJRDsKICAgICBpZiAoIWFy
Z3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50MS52
YWx1ZSgpLmlzQmlnSW50KCkpIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudDEudmFsdWUoKS5h
c0hlYXBCaWdJbnQoKS0+bGVuZ3RoKCkgPiAxKSB7CkBAIC02MSw3ICs2MSw3IEBAIEpTVmFsdWUg
SlNSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBrZXlJRCA9IEpTQmln
SW50Ojp0b0JpZ1VJbnQ2NChhcmd1bWVudDEudmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAga2V5SUQgPSBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46
OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIGtleUlEID0gc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8
SURMVW5zaWduZWRMb25nTG9uZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCkpKTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBqc1VuZGVm
aW5lZCgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxOTIx
MDVjMzE5ZjViYzkwMmVjZDYzNGI2Mjg5YjhjODNjMGYzOWFkLi4xYTM1ZmRjNzRmMDEyMTVmOGJj
ZTI5OTBhYWZhMjliMzVlNmFiNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogCiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1JlbW90ZURPTVdpbmRvdyo+KG9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggMGQz
NWIwNzMzOWQ1ZGE2N2FiNzdjYjg3MTIzODY1ZWZmN2JhNjA2OC4uOTEzYTZmMTVjMTY1NDVkYTQy
ODMwZGZjMzVjZTg5NWQxMDhjMTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8UmVh
ZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleAogICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqanNDYXN0PEpTUmVhZGFibGVT
dHJlYW0qPihvYmplY3QpKTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxKU0M6OkpTVmFs
dWU+IGludm9rZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU0M6
OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmd1
bWVudHMpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBpbnZva2VS
ZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJndW1lbnRzKQogewog
ICAgIEpTQzo6Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFt
OjpwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJiBzaW5rKQogICAgIGludm9rZVJlYWRhYmxlU3Ry
ZWFtRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIEpTQzo6anNVbmRl
ZmluZWQoKSwgYXJndW1lbnRzKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPFJlZjxSZWFkYWJs
ZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKK3N0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0
cmVhbT4+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKIHsKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gKm1fZ2xvYmFsT2JqZWN0OwogICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDdj
YWM3MjNjZjA2ZDlmOTRhOTE2ZDAwZGQ3NjhiNjFiMDlhNDJlNGEuLmJjMWM3M2I3Y2ZlZjMxN2M4
MTUxZjc4NDQyYmI4NDVhMTJkZjQ3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVTdHJlYW0uaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1cmJlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1ZhbHVlKTsKIAotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+
LCBSZWY8UmVhZGFibGVTdHJlYW0+Pj4gdGVlKCk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8UmVmPFJlYWRhYmxlU3RyZWFtPiwgUmVmPFJlYWRhYmxlU3RyZWFtPj4+IHRlZSgpOwogCiAg
ICAgdm9pZCBsb2NrKCk7CiAgICAgdm9pZCBwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaAppbmRleCA4NGIwZmMwZGIxZjE3NTdjNzNkMjZhZjAyMjkzNzVkMmEyMDYyOWYxLi4wNmFk
ODlkNGY2NDNiMGExM2Q4OTA1YjZjYmVlOWIwYTZlZTE3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTM4LDcg
KzM4LDcgQEAgZW51bSBjbGFzcyBGb3JjZVVzZXJHZXN0dXJlIDogYm9vbCB7IE5vLCBZZXMgfTsK
IHVzaW5nIEFyZ3VtZW50V2lyZUJ5dGVzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50
OF90Pj47CiAKIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7Ci0gICAgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMoU3RyaW5nJiYgc291cmNlLCBVUkwmJiBzb3VyY2VVUkwsIFJ1bkFzQXN5
bmNGdW5jdGlvbiBydW5Bc0FzeW5jRnVuY3Rpb24sIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVz
TWFwPiYmIGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlKQorICAg
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJM
LCBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFy
Z3VtZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVz
ZXJHZXN0dXJlKQogICAgICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwg
c291cmNlVVJMKFdURk1vdmUoc291cmNlVVJMKSkKICAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rp
b24ocnVuQXNBc3luY0Z1bmN0aW9uKQpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMgewogICAgIHsKICAgICB9CiAKLSAgICBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJMLCBib29sIHJ1bkFzQXN5
bmNGdW5jdGlvbiwgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBi
b29sIGZvcmNlVXNlckdlc3R1cmUpCisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIFVSTCYmIHNvdXJjZVVSTCwgYm9vbCBydW5Bc0FzeW5jRnVuY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZv
cmNlVXNlckdlc3R1cmUpCiAgICAgICAgIDogc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBzb3Vy
Y2VVUkwoV1RGTW92ZShzb3VyY2VVUkwpKQogICAgICAgICAsIHJ1bkFzQXN5bmNGdW5jdGlvbihy
dW5Bc0FzeW5jRnVuY3Rpb24gPyBSdW5Bc0FzeW5jRnVuY3Rpb246OlllcyA6IFJ1bkFzQXN5bmNG
dW5jdGlvbjo6Tm8pCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyB7CiAgICAgewogICAgIH0KIAotICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzKFN0cmlu
ZyYmIHNvdXJjZSwgVVJMJiYgc291cmNlVVJMLCBib29sIHJ1bkFzQXN5bmNGdW5jdGlvbiwgT3B0
aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+JiYgYXJndW1lbnRzLCBib29sIGZvcmNlVXNlckdl
c3R1cmUpCisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMoU3RyaW5nJiYgc291cmNlLCBVUkwm
JiBzb3VyY2VVUkwsIGJvb2wgcnVuQXNBc3luY0Z1bmN0aW9uLCBzdGQ6Om9wdGlvbmFsPEFyZ3Vt
ZW50V2lyZUJ5dGVzTWFwPiYmIGFyZ3VtZW50cywgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogICAg
ICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgc291cmNlVVJMKFdURk1v
dmUoc291cmNlVVJMKSkKICAgICAgICAgLCBydW5Bc0FzeW5jRnVuY3Rpb24ocnVuQXNBc3luY0Z1
bmN0aW9uID8gUnVuQXNBc3luY0Z1bmN0aW9uOjpZZXMgOiBSdW5Bc0FzeW5jRnVuY3Rpb246Ok5v
KQpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAg
IFN0cmluZyBzb3VyY2U7CiAgICAgVVJMIHNvdXJjZVVSTDsKICAgICBSdW5Bc0FzeW5jRnVuY3Rp
b24gcnVuQXNBc3luY0Z1bmN0aW9uOwotICAgIE9wdGlvbmFsPEFyZ3VtZW50V2lyZUJ5dGVzTWFw
PiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJn
dW1lbnRzOwogICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2VzdHVyZTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CkBAIC03Niw3ICs3Niw3IEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAg
ICAgICAgIGVuY29kZXIgPDwgc291cmNlIDw8IHNvdXJjZVVSTCA8PCBydW5Bc0FzeW5jRnVuY3Rp
b24gPDwgYXJndW1lbnRzIDw8IGZvcmNlVXNlckdlc3R1cmU7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSdW5KYXZhU2NyaXB0UGFyYW1ldGVycz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCkBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVu
QXNBc3luY0Z1bmN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCA0MTMwNzE1YzdhY2QzZDFkMTU2ZTU2OTk5NzVh
Y2EzN2ZlYjg5N2Y5Li45ZDllNTJkYWVjMGMwNGVkMjE2MWViODI1NmFmYTY3NzU1MTVlMjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAw
IH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOworICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCBkZDY4MTJiZjgwNTMwODA4ZTI5NThhMGNhYmUwMDgyOGMwYmM3NGZhLi5hZGZi
MzhhZWZiZTlmNzI0NzRkYWY3MjdhZmVkYzRhNmM4NjM4NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBA
IFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4gb3B0aW9uYWxEZXRhaWxzOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGV0YWls
cz4gb3B0aW9uYWxEZXRhaWxzOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAg
ICAgIEV4Y2VwdGlvbkRldGFpbHMgZGV0YWlsczsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZn
bG9iYWxPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0
KCksICZkZXRhaWxzKTsKQEAgLTU5MSw3ICs1OTEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2
aW9yKCk7CiAjZW5kaWYKIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/
IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogc3RkOjpudWxsb3B0LCBtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09
IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQsIG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRl
U2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhj
ZXB0aW9uRGV0YWlscyB7ICJDYW5ub3QgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIHRoaXMgZG9jdW1l
bnQiX3MgfSk7CkBAIC02NTksNyArNjU5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250
cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXQKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBz
b3VyY2VVUkwuc3RyaW5nKCksIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3Rh
cnRDb2x1bW4oKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4
Y2VwdGlvbjsKLSAgICBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7
CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBvcHRpb25hbERldGFpbHM7CiAg
ICAgSlNWYWx1ZSByZXR1cm5WYWx1ZTsKICAgICBkbyB7CiAgICAgICAgIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRFdmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBK
U0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0
aW9uRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDAwMDg3NDk5MDc2MjM5MjBlMWJhMzhkM2Y0YjEx
NmY5NmNiNjQ3YTUuLjVhNTBmZmQxM2Y1MDljZWJjMjVjOWU2ZDJhZWMyMzA3OWJmYWQxYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMjA3MCw3ICsyMDcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3Ry
OwogICAgIH0KIAotICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRz
LCBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisg
ICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6
Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52
YXNlcwogI2VuZGlmCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICBzaXpl
X3QgbV9pbmRleDsKICAgICB9OwogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3RvcjxPcHRpb25hbDxJbWFn
ZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkq
IGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFj
a2luZz4+JiYgYmFja2luZ1N0b3JlcywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIKICNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMgPSB7IH0KICNlbmRpZgpAQCAtMjE4NCw3ICsyMTg0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIG1fdmVyc2lvbiA9IDB4RkZGRkZGRkY7CiAgICAgfQogCi0gICAgQ2xvbmVE
ZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYg
bWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVu
dHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVy
Q29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFw
QmFja2luZz4+JiYgYmFja2luZ1N0b3JlcworICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIHNoYXJl
ZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFj
a2luZ1N0b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAg
ICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYg
ZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCkBAIC0yNDQ2LDcgKzI0NDYsNyBAQCBw
cml2YXRlOgogICAgICAgICBDYWNoZWRTdHJpbmdSZWYgbmFtZTsKICAgICAgICAgaWYgKCFyZWFk
U3RyaW5nRGF0YShuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgT3B0
aW9uYWw8aW50NjRfdD4gb3B0aW9uYWxMYXN0TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gb3B0aW9uYWxMYXN0TW9kaWZpZWQ7CiAgICAgICAgIGlmIChtX3ZlcnNpb24g
PiA2KSB7CiAgICAgICAgICAgICBkb3VibGUgbGFzdE1vZGlmaWVkOwogICAgICAgICAgICAgaWYg
KCFyZWFkKGxhc3RNb2RpZmllZCkpCkBAIC0zMDMzLDcgKzMwMzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChtX2xleGljYWxHbG9iYWxPYmplY3QsIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgVDo6Y3JlYXRlKHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxET01Qb2ludEluaXQ+IHJlYWRE
T01Qb2ludEluaXQoKQorICAgIHN0ZDo6b3B0aW9uYWw8RE9NUG9pbnRJbml0PiByZWFkRE9NUG9p
bnRJbml0KCkKICAgICB7CiAgICAgICAgIERPTVBvaW50SW5pdCBwb2ludDsKICAgICAgICAgaWYg
KCFyZWFkKHBvaW50LngpKQpAQCAtMzY4Nyw3ICszNjg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYkZpbGVQYXRo
czsKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIG1fc2hhcmVkQnVmZmVyczsKLSAgICBW
ZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4gbV9iYWNraW5nU3RvcmVzOworICAg
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IG1fYmFja2luZ1N0b3Jl
czsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gbV9pbWFnZUJpdG1hcHM7CiAjaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZh
c2VzOwpAQCAtMzkyMyw3ICszOTIzLDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKICAgICBt
X21lbW9yeUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0
VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0
b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCitTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBi
dWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVu
aXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0Fy
cmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdT
dG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAzYTRkOGI3ZWI0ODNjMzFjZjg1
OGFiZDNmNjQ3YjNhOTE0ZTYyMTI3Li4xYzc1NDVlY2I1NzEzOTNmMjg1ODM2MGFkYzAxZThjODk4
ZTY1MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAg
ICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+
JiYgYmFja2luZ1N0b3JlcworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
aXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQogI2VuZGlmCkBAIC0xMzksNyArMTM5LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheTsKLSAgICBWZWN0b3I8T3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNr
aW5nPj4gbV9iYWNraW5nU3RvcmVzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0
bWFwQmFja2luZz4+IG1fYmFja2luZ1N0b3JlczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
U19JTl9XT1JLRVJTKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXM7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdEZldGNoZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdEZldGNoZXIuaAppbmRleCBlNzUy
MzIwNjUxNTY5ZDFiOGE5MWY3ZGUyMmY1YjVhY2I3OTNjNDZkLi4zZDYwOWRjYWU3MThlOWJjNmY4
ZjQxNGYwMmJjM2Q2NzQ0ZDI4MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRGZXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0RmV0Y2hlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBib29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvYWRlZDsgfQotICAg
IE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yOyB9CisgICAgc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9y
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25z
dCB7IHJldHVybiBtX3dhc0NhbmNlbGVkOyB9CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVs
ZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlS2V5LmdldCgpOyB9CiAgICAgTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJl
clBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyB9OwogICAgIFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4gbV9tb2R1bGVLZXk7CiAgICAgUmVmPE1vZHVsZUZldGNoUGFyYW1ldGVy
cz4gbV9wYXJhbWV0ZXJzOwotICAgIE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9l
cnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsK
ICAgICBib29sIG1fd2FzQ2FuY2VsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRlZCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiYTNmNGM1NTgyZGEyMWE5YzY3MTI0YmRlNDY5NmMwMjMw
ZmQyN2ExLi4yM2ZlN2M1MzgyMGI2ZTgzOTQ5MzMxODA4NjI4NWNkNzNjZGM1OTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMjM2NCw3ICsyMzY0LDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlv
bkNvbnRlbnQKICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBKU0ds
b2JhbE9iamVjdCYuCiAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJpbmdPck51bGwg
dG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICMgRklYTUU6IENvbnNpZGVy
IGZpbmRpbmcgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gbWF0Y2ggYWdhaW5zdCBhbGwgdGhlIHN0
cmluZ3MgcXVpY2tseS4KLSAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFz
c05hbWU+IHBhcnNlRW51bWVyYXRpb248JGNsYXNzTmFtZT4oSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpXG4iOworICAgICRyZXN1bHQgLj0gInRlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05h
bWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKVxu
IjsKICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIjsKICAg
ICBmb3JlYWNoIG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTI0MTcs
NyArMjQxNyw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSGVhZGVyQ29udGVudAogCiAgICAg
JHJlc3VsdCAuPSAiJHtleHBvcnRNYWNyb31TdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoJGNsYXNzTmFtZSk7XG4iOwogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJHtleHBvcnRN
YWNyb31KU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCAkY2xhc3NOYW1lKTtcblxuIjsKLSAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICR7
ZXhwb3J0TWFjcm99T3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NO
YW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTtcbiI7CisgICAgJHJlc3Vs
dCAuPSAidGVtcGxhdGU8PiAke2V4cG9ydE1hY3JvfXN0ZDo6b3B0aW9uYWw8JGNsYXNzTmFtZT4g
cGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTtcbiI7CiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAke2V4cG9ydE1hY3JvfWNv
bnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8JGNsYXNzTmFtZT4oKTtcblxuIjsK
ICAgICAkcmVzdWx0IC49ICIjZW5kaWZcblxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAg
CkBAIC02MTM3LDggKzYxMzcsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJGFy
Z3VtZW50LT50eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSAibnVsbHB0ciI7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVs
dFZhbHVlID0gIk9wdGlvbmFsPENvbnZlcnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJuVHlw
ZT4oKSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmF0aXZlVmFsdWVDYXN0RnVuY3Rpb24g
PSAiT3B0aW9uYWw8Q29udmVydGVyPCRhcmd1bWVudElETFR5cGU+OjpSZXR1cm5UeXBlPiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gInN0ZDo6b3B0aW9uYWw8Q29u
dmVydGVyPCRhcmd1bWVudElETFR5cGU+OjpSZXR1cm5UeXBlPigpIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRuYXRpdmVWYWx1ZUNhc3RGdW5jdGlvbiA9ICJzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjwkYXJndW1lbnRJRExUeXBlPjo6UmV0dXJuVHlwZT4iOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4g
IkVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudCR7YXJndW1lbnRJbmRleH0gPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
CmluZGV4IDBmODg2Y2JlNDE0NThiNzliZGRkMjA5ZTBkNWY4Y2M0ZmVlYTk4MWUuLjhlNTc5ZDMw
ZWNmZGJlZDM3YTc0ZGEyNmY2OTZlMDEzOGMyYjczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5j
cHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNF
RF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7Ci0gICAgYXV0byB2YXJpYW50T3B0aW9uYWxBcmcgPSBhcmd1bWVudDAudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4s
IElETEZsb2F0LCBJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZl
cnRlcjxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVy
blR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmlu
Zz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8g
dmFyaWFudE9wdGlvbmFsQXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExE
T01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVu
aW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZT4oY29u
dmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1w
bC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKICAgICAgICAgVGVzdEludGVy
ZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhPcHRp
b25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vz
c0FyZ3VtZW50KGltcGwsIHZhcmlhbnRPcHRpb25hbEFyZykgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCBjNDViNTg5Y2Y3ZDgzYjlhZjhhMjE0YzRmY2E1MjJk
MDE5Y2ViOWNlLi5mMGQ4ZTcxZDQ0MmQyZGNmMzEzZWRlZTcxNTZiNjAyZmY2MmZhMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdGVt
cGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlv
blZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNl
OjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4oSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0
ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5n
VmFsdWUgPT0gInZhbHVlMSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCmluZGV4
IGE3ODU4ZjkxMGYzMDVlNzJkMGQzZmU2ZTk1YjllMDc3YmNhN2VlNDcuLjIyZmVmYmMyM2M3YTM1
MWU5Nzg0NmVlMDNjZTQ1MmZhZTM4ODcxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZS5oCkBAIC02OSw3ICs2OSw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKCppbXBsCiBTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtKTsK
IHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtKTsKIAotdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248
VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6
OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPihKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciog
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+KCk7
CiAKIHRlbXBsYXRlPD4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RGljdGlvbmFyeT4oSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVt
LmNwcAppbmRleCA2MGExMmNlNGQ1NjVmNGU3OGYxOTU1ZWY2OTMwNjEzMDgwMTg2YjE0Li4xNmRj
NGQxMWQwMjRkZDhiOWZiNzNjZDZmNmM0MTBiMDBhYjM1NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09ORW51bS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdERlZmF1bHRUb0pTT05FbnVtPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdERlZmF1
bHRUb0pTT05FbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51bT4oSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
YXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05F
bnVtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkVudW0uaAppbmRleCAzZmFlMDA3ZjY2NjcyMDEzZjYzY2EwOWE2ZjEwNWYxOGVi
OTQyNzUwLi5lMWE0ZmNjNmIyMTlkODcyMDZiZGY2MGY1ODcxNmU2ZmE0NDg1MGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkVudW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdERlZmF1bHRU
b0pTT05FbnVtKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdERlZmF1bHRUb0pTT05FbnVtKTsKIAotdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248
VGVzdERlZmF1bHRUb0pTT05FbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVl
KTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNl
RW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnVtPihKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczxUZXN0RGVmYXVsdFRvSlNPTkVudW0+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggYTUyZWM3MGE3MTAzOTYz
YjdkMWJiM2M2MGEyYjA1ZmE2OGNlYzA2My4uY2MxMzQzYmY4YzVmMDQwOTBlNTM2YTZkODA1MjVi
MTc2MTAwNTZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTIwNiw3
ICsyMDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZXNw
YWNlT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbl9vdmVybAogICAgIGF1dG8gb2JqQXJnID0gY29u
dmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgIm9iakFyZyIsICJUZXN0SW50ZXJm
YWNlTmFtZSIsICJvdmVybG9hZGVkTmFtZXNwYWNlT3BlcmF0aW9uIiwgIlRlc3RPYmoiKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKLSAgICBhdXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgp
ID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8
Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSkpOworICAgIGF1dG8gbG9uZ0FyZyA9IGFy
Z3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+
OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBUZXN0TmFtZXNwYWNlT2JqZWN0OjpvdmVybG9hZGVkTmFtZXNwYWNlT3BlcmF0aW9uKFdU
Rk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGIw
YjQ4ZGEyNGI0MTA4NDAwNGU5NjcyYThiNDJlOTZjZDY0MzBhZWQuLjJhYmY1MThiMjNiODY4MWZk
MTI0N2YxZDIxZjJhNDRjNzA4ODVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAg
dGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCkBAIC0xODMsNyArMTgzLDcgQEAg
dGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCkBAIC0yMTksNyArMjE5LDcgQEAg
dGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJh
dGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+
IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PEFsdGVybmF0ZUVudW1OYW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMSIpCkBAIC0yNTEsNyArMjUx
LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2Fj
aGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhl
bnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51
bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRv
IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQSIpCkBAIC0yODMsNyArMjgzLDcgQEAgdGVtcGxhdGU8
PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVl
KSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVy
YXRpb248VGVzdE9iajo6RW51bUI+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1C
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0g
dmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdW
YWx1ZSA9PSAiQiIpCkBAIC0zMTUsNyArMzE1LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
RW51bUM+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6OkVudW1DPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJp
bmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQyIpCkBA
IC0zNDcsNyArMzQ3LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3Rk
OjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewog
ICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJxdWljayIpCkBAIC0zNzksNyArMzc5LDcg
QEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVt
ZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0
T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJzbWFsbCIpCkBAIC00MTEsNyArNDExLDcgQEAgdGVtcGxhdGU8PiBK
U1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7
CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2Jq
OjpDb25maWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1
dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJoaWdoIikKQEAgLTU5MjksNyArNTkyOSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoT3B0aW9uYWxFCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGVudW1B
cmcgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVy
PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj46OlJldHVyblR5cGU+KCkgOiBPcHRp
b25hbDxDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJu
VHlwZT4oY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiZW51bUFy
ZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSkpOworICAgIGF1dG8gZW51
bUFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENv
bnZlcnRlcjxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+OjpSZXR1cm5UeXBlPigp
IDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5
cGU+Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlw
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1Bcmci
LCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsgfSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhXVEZN
b3ZlKGVudW1BcmcpKTsgfSkpKTsKIH0KQEAgLTYzODgsNyArNjM4OCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RX
aXRoT3B0aW9uYWxBCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIG9wdCA9IGFyZ3VtZW50
MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJl
dHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNv
bnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7
CisgICAgYXV0byBvcHQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpv
cHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFs
PENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOyB9KSkpOwogfQpAQCAt
NjQyOSw3ICs2NDI5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhOb25PcHRpb24KICAgICBhdXRvIG5vbk9w
dCA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwotICAgIGF1dG8gb3B0ID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFs
PENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIG9wdCA9IGFyZ3Vt
ZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExM
b25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpS
ZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDEudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOyB9
KSkpOwogfQpAQCAtNjQ1MiwxMCArNjQ1MiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE5vbk9wdGlvbgog
ICAgIGF1dG8gbm9uT3B0ID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBvcHQxID0gYXJndW1lbnQxLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKKyAgICBh
dXRvIG9wdDEgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25h
bDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZl
cnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwotICAgIGF1dG8gb3B0MiA9IGFyZ3Vt
ZW50Mi52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46
OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgp
KSk7CisgICAgYXV0byBvcHQyID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0
ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMTG9uZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RG
TW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdDEpLCBXVEZNb3ZlKG9wdDIpKTsgfSkpKTsKIH0KQEAg
LTY3MDcsNyArNjcwNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRob2RXaXRoT3B0aW9uYWxMCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKLSAgICBhdXRvIG51bWJlciA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkg
PyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETExvbmdMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nTG9u
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CisgICAgYXV0byBu
dW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxD
b252ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252
ZXJ0ZXI8SURMTG9uZ0xvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmdMb25nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJl
dHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKFdURk1vdmUobnVtYmVyKSk7IH0p
KSk7CiB9CkBAIC02NzQzLDcgKzY3NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsVQogICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBudW1iZXIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1
cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+OjpSZXR1
cm5UeXBlPihjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1dG8gbnVtYmVyID0gYXJndW1lbnQwLnZhbHVl
KCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVuc2lnbmVkTG9u
Z0xvbmc+OjpSZXR1cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5zaWdu
ZWRMb25nTG9uZz46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVt
YmVyKSk7IH0pKSk7CiB9CkBAIC02ODE1LDcgKzY4MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlv
bmFsQgogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBiID0gYXJndW1lbnQwLnZhbHVlKCku
aXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlw
ZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVy
dDxJRExCb29sZWFuPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsK
KyAgICBhdXRvIGIgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRp
b25hbDxDb252ZXJ0ZXI8SURMQm9vbGVhbj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFs
PENvbnZlcnRlcjxJRExCb29sZWFuPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExCb29sZWFuPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7IH0pKSk7
CiB9CkBAIC02ODY5LDcgKzY4NjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsTwogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7Ci0gICAgYXV0byBhID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExPYmplY3Q+OjpSZXR1cm5UeXBlPigpIDogT3B0aW9u
YWw8Q29udmVydGVyPElETE9iamVjdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMT2JqZWN0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGEgPSBh
cmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8
SURMT2JqZWN0Pjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETE9i
amVjdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMT2JqZWN0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3ZlKGEpKTsgfSkpKTsKIH0KQEAgLTczMDIsNyArNzMw
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMkJvCiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBsb25nQXJn
ID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0
dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQx
LnZhbHVlKCkpKTsKKyAgICBhdXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+KCkg
OiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBX
VEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KQEAgLTc1MzIsNyArNzUzMiw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVy
bG9hZGVkTWV0aG9kV2l0CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElE
TEludGVyZmFjZTxUZXN0T2JqPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBs
b25nQXJnID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZl
cnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25n
Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQxLnZhbHVlKCkpKTsKKyAgICBhdXRvIGxvbmdBcmcgPSBhcmd1bWVudDEudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5
cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oY29u
dmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsgfSkpKTsKIH0KQEAg
LTc5MDksNyArNzkwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2NsYXNzTWV0aG9kV2l0aE9wCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAg
IGF1dG8gYXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENv
bnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IE9wdGlvbmFsPENvbnZlcnRlcjxJRExM
b25nPjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCkpKTsKKyAgICBhdXRvIGFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlw
ZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252
ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBUZXN0T2JqOjpjbGFzc01l
dGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSkpOwogfQpAQCAtODE0Miw3ICs4MTQyLDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX29wZXJhdGlvbldpdGhPcHRpb24KICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8g
b3B0aW9uYWxVbmlvbiA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25h
bDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3Ry
aWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5p
b248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExV
bnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKSk7CisgICAgYXV0byBvcHRpb25hbFVuaW9uID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRl
ZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETFVuaW9uPElETERPTVN0cmluZywg
SURMU2VxdWVuY2U8SURMVW5yZXN0cmljdGVkRG91YmxlPj4+OjpSZXR1cm5UeXBlPigpIDogc3Rk
OjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJ
RExVbnJlc3RyaWN0ZWREb3VibGU+Pj46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURM
RE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExVbnJlc3RyaWN0ZWREb3VibGU+Pj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5vcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlcihXVEZNb3ZlKG9wdGlvbmFs
VW5pb24pKTsgfSkpKTsKIH0KQEAgLTg0NzQsNyArODQ3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0UHJvbWlzZUZ1
bmN0aW9uCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGEgPSBhcmd1bWVudDAudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBl
PigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOworICAgIGF1
dG8gYSA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENv
bnZlcnRlcjxJRExMb25nPjo6UmV0dXJuVHlwZT4oKSA6IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVy
PElETExvbmc+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFByb21pc2U8SURMVW5kZWZpbmVkPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7IH0p
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKaW5kZXggNWE1YzI1NjdhYTM0NDU3MDY3NDU4MGZlZTg5MzZjODkxYTExZWE0
ZS4uYmUyZjM3M2M2Mjk1NWRlZTk5YmJjNWY0ZmI1NGQ0ZjcxMzg0YzEyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAt
MTE4LDE5ICsxMTgsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVy
VHJhaXRzPFRlc3RPYmo+IHsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0
T2JqOjpFbnVtVHlwZSk7CiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJh
dGlvblRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFRlc3RPYmo6OkVudW1UeXBlKTsKIAotdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtVHlwZT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1w
bGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248
VGVzdE9iajo6RW51bVR5cGU+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwog
dGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6
OkVudW1UeXBlPigpOwogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9i
ajo6T3B0aW9uYWwpOwogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRp
b25Ub0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBUZXN0T2JqOjpPcHRpb25hbCk7CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6T3B0aW9uYWw+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6Ok9wdGlvbmFsPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRl
bXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpP
cHRpb25hbD4oKTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFsdGVybmF0
ZUVudW1OYW1lKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgQWx0ZXJuYXRlRW51bU5hbWUpOwogCi10ZW1wbGF0
ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0
ZUVudW1OYW1lPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRl
PD4gc3RkOjpvcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRl
cm5hdGVFbnVtTmFtZT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1w
bGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51
bU5hbWU+KCk7CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKQEAgLTEzOCw3ICsxMzgsNyBAQCB0
ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRl
RW51bU5hbWU+KCk7CiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVGVzdE9iajo6
RW51bUEpOwogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBUZXN0T2JqOjpFbnVtQSk7CiAKLXRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlv
bmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciog
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQT4oKTsKIAogI2VuZGlmCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigpOwogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKFRlc3RPYmo6OkVudW1CKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6RW51bUIpOwog
Ci10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6OkVudW1CPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtQj4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0
ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUI+
KCk7CiAKICNlbmRpZgpAQCAtMTU4LDcgKzE1OCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciog
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQj4oKTsKIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpFbnVtQyk7CiB0ZW1wbGF0ZTw+IEpTQzo6
SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFRl
c3RPYmo6OkVudW1DKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFy
c2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpT
VmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PFRlc3RPYmo6OkVudW1DPigpOwogCiAjZW5kaWYKQEAgLTE2NiwxOSArMTY2LDE5IEBAIHRlbXBs
YXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVt
Qz4oKTsKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpLaW5kKTsK
IHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6S2luZCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2Jq
OjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RPYmo6OktpbmQ+KCk7CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhUZXN0T2JqOjpTaXplKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6U2l6ZSk7
CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpTaXplPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OlNpemU+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8
PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OlNpemU+KCk7
CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhUZXN0T2JqOjpDb25maWRlbmNl
KTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgVGVzdE9iajo6Q29uZmlkZW5jZSk7CiAKLXRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25m
aWRlbmNlPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkNvbmZpZGVuY2U+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNv
bmZpZGVuY2U+KCk7CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4
IDhhZTg5MzNlYmMzY2Y1N2E4NGJkYWM2M2Y4MWFhOTA5MTZlNjcxZjEuLmMxZWMzMGVhMWFhMDkx
YzQ2NTZkMmFkZGI4MjBlMGJlMGY0NzJmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcq
IGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZW51bWVyYXRpb25WYWx1ZSkpOwogfQogCi10
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRh
bG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlv
bmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25h
bDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5Rmls
ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5k
YWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1W
YWx1ZTEiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaAppbmRleCBkYzFi
NGUzYmU4ZDdiNzAxOTU2MDMwNmViNjJlNDI2MDQ4ZDlhZjE2Li41MmExOTQ5NzZlMmFlODEwNGY0
ZGNhODFkNDIzODQxOGE2OTY3MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnkuaApAQCAtMzUsNyArMzUsNyBAQCBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBj
b252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NRwogU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51
bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlKTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUpOwogCi10ZW1wbGF0
ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURp
Y3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6
RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxU
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4o
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNo
YXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpF
bnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKaW5kZXggNGE3
YTkxYTU0NTk1MDBkODE0YmQ5NWVkNGZhOTVlMGZiMTVmZWMwOC4uNDZhNjI0NDlmNTZhNDYwMGFi
MTZmM2JhMTY0NTg4MjZhOWI3YzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVF
bnVtZXJhdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhlbnVtZXJhdGlvblZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlv
bjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24+KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFu
ZGFsb25lRW51bWVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaAppbmRleCBlMDNkNTFiOTNkNjM4YTdk
ZDhjZjlhNDU5OTk3OTUyM2E5ZDRkZTI2Li45NGQ1N2YwMDZmOGU5Y2NjM2ZiNWRhOTljN2NkZmU3
OTJiYjkwMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oCkBA
IC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uKTsKIHRlbXBsYXRlPD4gSlND
OjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbik7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1l
cmF0aW9uPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpT
VmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDU1YWNhODBlY2YxMWFmYzJiYjgyMDYxMmY1MmIyMjVk
MWU4ZjQyNzcuLmE4MTJiMTIzYzk5ZTUzMjY1OWM5ZWNlNjQ2YjBlOWU5OWJmZDcyMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX3NldFNoYWRvd0Jv
ZHkoCiAgICAgYXV0byBjb2xvciA9IGFyZ3VtZW50My52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBT
dHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQzLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50NCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoNCk7Ci0gICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50NC52YWx1ZSgp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+
OjpSZXR1cm5UeXBlPigpIDogT3B0aW9uYWw8Q29udmVydGVyPElETFVucmVzdHJpY3RlZEZsb2F0
Pjo6UmV0dXJuVHlwZT4oY29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50NC52YWx1ZSgpKSk7CisgICAgYXV0byBhbHBoYSA9IGFyZ3VtZW50
NC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbnJl
c3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJ
RExVbnJlc3RyaWN0ZWRGbG9hdD46OlJldHVyblR5cGU+KGNvbnZlcnQ8SURMVW5yZXN0cmljdGVk
RmxvYXQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDQudmFsdWUoKSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwuc2V0U2hhZG93KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhl
aWdodCksIFdURk1vdmUoYmx1ciksIFdURk1vdmUoY29sb3IpLCBXVEZNb3ZlKGFscGhhKSk7IH0p
KSk7CiB9CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25fZnVuY1dpdGhDbGFtcEIKICAgICBh
dXRvIGFyZzEgPSBjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8g
YXJnMiA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxDb252ZXJ0
ZXI8SURMQ2xhbXBBZGFwdG9yPElETFVuc2lnbmVkTG9uZ0xvbmc+Pjo6UmV0dXJuVHlwZT4oKSA6
IE9wdGlvbmFsPENvbnZlcnRlcjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRMb25nTG9uZz4+
OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CisgICAgYXV0byBh
cmcyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29u
dmVydGVyPElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25lZExvbmdMb25nPj46OlJldHVyblR5cGU+
KCkgOiBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExDbGFtcEFkYXB0b3I8SURMVW5zaWduZWRM
b25nTG9uZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETENsYW1wQWRhcHRvcjxJRExVbnNpZ25l
ZExvbmdMb25nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5mdW5jV2l0aENsYW1wKFdURk1vdmUoYXJnMSksIFdU
Rk1vdmUoYXJnMikpOyB9KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCmluZGV4IDAwZTYyNjVjOGE0MzJhYzdkYjc0MzdkOTJiZjQ2ZWM3MzEwNTUzZTQuLjAzMjY0
NGM0ZTU4MTkyNGNiN2QwZDcyMTc4NmY2YmU5NGRlMTViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEcKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
aW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlKSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmdldENv
bmNyZXRlQXJyYXkoKS0+dmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgp
KSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAxNjQz
MjkwNDkxOGU3M2NlMGNmYzBjOWViNDY0ZTYxOGViNDNjODJlLi5lZjUyY2JiZThlZDU1ZWVkMmM5
ODcxNjg0OWYxZDE0MTczN2E4OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4g
Z2V0RG9tYWluTGlzdChKU0dsb2JhbE9iamVjdCYgbAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBnZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VGbGFn
cyYgZmxhZ3MsIE9wdGlvbmFsPE9wdGlvblNldDxUPj4gKCpzdHJpbmdUb1R5cGUpKFN0cmluZ1Zp
ZXcpKQorc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBnZXRUeXBlRmxhZ3MoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTVmFsdWUmIHR5cGVWYWx1ZSwgUmVzb3VyY2VG
bGFncyYgZmxhZ3MsIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFQ+PiAoKnN0cmluZ1RvVHlwZSko
U3RyaW5nVmlldykpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI0Nyw3ICsyNDcs
NyBAQCBib29sIGlzVmFsaWRDU1NTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogICAg
IHJldHVybiAhIXBhcnNlci5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yKTsKIH0KIAotc3RhdGljIEV4
cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmpl
Y3QpCitzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2Nv
ZGU+IGxvYWRBY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0
IEpTT2JqZWN0JiBydWxlT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0y
OTEsNyArMjkxLDcgQEAgc3RhdGljIEV4cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJy
b3JfY29kZT4gbG9hZEFjdGlvbihKU0dsb2JhbE9iamVjdCYgbGUKICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwog
fQogCi1zdGF0aWMgRXhwZWN0ZWQ8T3B0aW9uYWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6
OmVycm9yX2NvZGU+IGxvYWRSdWxlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb25zdCBKU09iamVjdCYgcnVsZU9iamVjdCkKK3N0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlv
bmFsPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkUnVsZShKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmpl
Y3QpCiB7CiAgICAgYXV0byB0cmlnZ2VyID0gbG9hZFRyaWdnZXIobGV4aWNhbEdsb2JhbE9iamVj
dCwgcnVsZU9iamVjdCk7CiAgICAgaWYgKCF0cmlnZ2VyLmhhc192YWx1ZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0
cy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVz
dWx0cy5oCmluZGV4IGU3MmMxNDQ3YWQ2ZjNiMjAzOGMyYjE4ZTQ5OWYzN2U5NWJjYTA1NWUuLjBm
NDAzYzJkMDg1NWUzZjM2YTZjODMyZjQwNjc3MTNhZjA2ZDdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RSZXN1bHRz
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgewogICAg
ICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgfTsKICAgICBzdHJ1Y3QgU3VtbWFyeSB7CiAgICAgICAgIGJvb2wgYmxvY2tlZExvYWQgeyBm
YWxzZSB9OwpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyB7
CiAgICAgICAgIGJvb2wgaGFzTm90aWZpY2F0aW9ucyB7IGZhbHNlIH07CiAKICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3VtbWFyeT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U3VtbWFyeT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogICAgIHVzaW5nIENv
bnRlbnRSdWxlTGlzdElkZW50aWZpZXIgPSBTdHJpbmc7CiAKQEAgLTc2LDE0ICs3NiwxNCBAQCBz
dHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyB7CiAgICAgICAgIGVuY29kZXIgPDwgc3VtbWFy
eTsKICAgICAgICAgZW5jb2RlciA8PCByZXN1bHRzOwogICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29udGVudFJ1bGVMaXN0UmVzdWx0cz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q29udGVudFJ1bGVMaXN0UmVzdWx0cz4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTdW1tYXJ5PiBzdW1tYXJ5OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFN1bW1hcnk+IHN1bW1hcnk7CiAgICAgICAgIGRlY29kZXIgPj4gc3VtbWFy
eTsKICAgICAgICAgaWYgKCFzdW1tYXJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFJ1
bGVMaXN0SWRlbnRpZmllciwgUmVzdWx0Pj4+IHJlc3VsdHM7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyLCBSZXN1bHQ+Pj4g
cmVzdWx0czsKICAgICAgICAgZGVjb2RlciA+PiByZXN1bHRzOwogICAgICAgICBpZiAoIXJlc3Vs
dHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTAzLDI0ICsxMDMsMjQg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpS
ZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmMKICAgICBlbmNvZGVyIDw8IG5vdGlmaWNhdGlvbnM7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0
czo6UmVzdWx0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8UmVzdWx0Pgor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gYXV0byBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1
bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFJlc3VsdD4KIHsK
LSAgICBPcHRpb25hbDxib29sPiBibG9ja2VkTG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGJsb2NrZWRMb2FkOwogICAgIGRlY29kZXIgPj4gYmxvY2tlZExvYWQ7CiAgICAgaWYgKCFibG9j
a2VkTG9hZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25h
bDxib29sPiBtYWRlSFRUUFM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtYWRlSFRUUFM7CiAg
ICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7CiAgICAgaWYgKCFtYWRlSFRUUFMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tp
ZXM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBibG9ja2VkQ29va2llczsKICAgICBkZWNvZGVy
ID4+IGJsb2NrZWRDb29raWVzOwogICAgIGlmICghYmxvY2tlZENvb2tpZXMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5v
dGlmaWNhdGlvbnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbm90aWZpY2F0
aW9uczsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbnM7CiAgICAgaWYgKCFub3RpZmljYXRp
b25zKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQxLDI0ICsxNDEsMjQgQEAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpTdW1t
YXJ5OjplbmNvZGUoRW5jb2RlciYgZW4KICAgICBlbmNvZGVyIDw8IGhhc05vdGlmaWNhdGlvbnM7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0
czo6U3VtbWFyeTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFN1bW1hcnk+
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBhdXRvIENvbnRlbnRSdWxlTGlzdFJlc3VsdHM6OlN1
bW1hcnk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFN1bW1hcnk+
CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZExvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBibG9ja2VkTG9hZDsKICAgICBkZWNvZGVyID4+IGJsb2NrZWRMb2FkOwogICAgIGlmICgh
YmxvY2tlZExvYWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBT
OwogICAgIGRlY29kZXIgPj4gbWFkZUhUVFBTOwogICAgIGlmICghbWFkZUhUVFBTKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRD
b29raWVzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAgICAgZGVj
b2RlciA+PiBibG9ja2VkQ29va2llczsKICAgICBpZiAoIWJsb2NrZWRDb29raWVzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGhhc05vdGlm
aWNhdGlvbnM7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNOb3RpZmljYXRpb25zOwogICAg
IGRlY29kZXIgPj4gaGFzTm90aWZpY2F0aW9uczsKICAgICBpZiAoIWhhc05vdGlmaWNhdGlvbnMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKaW5kZXggNjQ4M2ExZjFiM2E5MWYyY2IxM2QzYTg4ZWEz
ZDVkYTE5ODJlYjRjMS4uYjA0YjUyMWQzYWRlZDEzYWFkOWM3NTc4MjNiZDA1MjI5MTYwMmNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAt
MzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRl
REZBTm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5vZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1
ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpLT5tX2RmYU5vZGVJZDsKIH0KIAotT3B0
aW9uYWw8REZBPiBORkFUb0RGQTo6Y29udmVydChORkEmJiBuZmEpCitzdGQ6Om9wdGlvbmFsPERG
QT4gTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiYgbmZhKQogewogICAgIGF1dG8gc2VyaWFsaXplZE5G
QSA9IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZShXVEZNb3ZlKG5mYSkpOwogICAgIGlmICghc2Vy
aWFsaXplZE5GQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L05GQVRvREZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5o
CmluZGV4IDlmZDNhMWQzZDk5Njc1MDI5NDZkYjdhNzEyY2MzYjA0MzMwZTZkNGEuLjJmNzJhYTAw
M2Y4NzkyODllNjVjOGEwMzBlNjk3MWM2MzdlZDQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgTkZBOwog
Ly8gTkZBVG9ERkEgcHJvdmlkZXMgYSB3YXkgdG8gYnVpbGQgYSBERkEgY29ycmVzcG9uZGluZyB0
byBhIE5GQS4KIGNsYXNzIE5GQVRvREZBIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgT3B0aW9uYWw8REZBPiBjb252ZXJ0KE5GQSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxERkE+IGNvbnZlcnQoTkZBJiYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggNTlkY2RhNmI5MDI5MGRjMTNmMzFhYWRh
MGM5ZDlhOTU4Zjk1MTdlZi4uMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5ZGU2YzVl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1PcHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJp
YWxpemUoTkZBJiYgbmZhKQorc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVk
TkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAgICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJpYWxpemVkTkZBIiwgZmlsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmgKaW5kZXggN2U5OGIw
MjU3NGViOTRlOTFmMjc0MjJhNzYyOTdkMzVjYjQwNmUwNC4uYTk2OWI1NDM1ZGE4NzViMDk3YjA1
ZDNhNzI4MzYzY2QxOGY5MWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL1NlcmlhbGl6ZWRORkEuaApAQCAtMzcsNyArMzcsNyBAQCBzdHJ1Y3QgTkZBOwogCiBj
bGFzcyBTZXJpYWxpemVkTkZBIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VyaWFs
aXplZE5GQT4gc2VyaWFsaXplKE5GQSYmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJp
YWxpemVkTkZBPiBzZXJpYWxpemUoTkZBJiYpOwogICAgIFNlcmlhbGl6ZWRORkEoU2VyaWFsaXpl
ZE5GQSYmKSA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5k
ZXggNTlmZGNjYjUwNjM3M2FlZDQxODJkYmFiNjFjZDdkODdhMjJjZWZjMi4uZDg3MjlkMzkwZDkw
NzMwYTBlYjdkYjNhOGM5ZjE3MThjODZmN2EzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcg
QEAgcHVibGljOgogICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6QXRvbUNoYXJhY3Rlcik7
CiAgICAgfQogCi0gICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9
IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHAKaW5kZXggODJkZmJjZWRkYzI5ZThmYzZiYjIxNDhlOGY4MjQ3ZGZjNmQ3
NWJmNS4uOTJjOTBmYmU0MTE0NGFhM2E5OGU1ZGQwZWUxZGQyZDI0YzYyNzJiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeSgpCiAgICAgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMoKTsKIH0KIAotT3B0aW9uYWw8
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuaAppbmRleCA2Mjg2MDk5NDBkZGQyNWIxYzBmNjE3OGEyOTMyMDg0ZjRmYzMwZGQ4Li40
OWQ3NWIyYWZlZWEyYjk5NTE3MzVjZmI4ODZkYWQzOGUxN2IyMGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaApAQCAtNDUsNyArNDUsNyBA
QCBjbGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKIAotICAgIE9wdGlvbmFsPENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI+IGlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgc3Rk
OjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBpZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBuYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiAg
ICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9Kc29uV2ViS2V5LmgKaW5kZXggNWFlZDM5YzU1NjFhNzg2M2M4
MGRlMzExODE0ZjhhNzhkYmYxODBjZS4uZWVjMDBkNzQ3ZTZiMDcyMTZkMDliMzhkMDcxMzk0NmI2
OTcxN2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vSnNvbldlYktleS5oCkBAIC0zNywxMSArMzcsMTEg
QEAgc3RydWN0IEpzb25XZWJLZXkgewogICAgIFN0cmluZyBrdHk7CiAgICAgU3RyaW5nIHVzZTsK
ICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWVyZ2luZyBrZXlfb3BzIGFuZCB1c2FnZXMuCi0gICAg
T3B0aW9uYWw8VmVjdG9yPENyeXB0b0tleVVzYWdlPj4ga2V5X29wczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxDcnlwdG9LZXlVc2FnZT4+IGtleV9vcHM7CiAgICAgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzOwogICAgIFN0cmluZyBhbGc7CiAKLSAgICBPcHRpb25hbDxib29sPiBleHQ7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBleHQ7CiAKICAgICBTdHJpbmcgY3J2OwogICAgIFN0
cmluZyB4OwpAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgSnNvbldlYktleSB7CiAgICAgU3RyaW5n
IGRwOwogICAgIFN0cmluZyBkcTsKICAgICBTdHJpbmcgcWk7Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PFJzYU90aGVyUHJpbWVzSW5mbz4+IG90aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSc2FP
dGhlclByaW1lc0luZm8+PiBvdGg7CiAgICAgU3RyaW5nIGs7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCmluZGV4IGQ1ODMxYmQxZjBm
Mzc4ZjI2ZGI0OWI4NDg3NzM5ZGY0OGVlYThmYjcuLmYxY2YwMjA1ODZhZWE0OGU2ZGJiYzZkNTIz
MGQyMmI0YzNlOGM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxp
emVkQ3J5cHRvS2V5V3JhcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IG9mIHByb3RlY3Rpb24gaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBzcGVjIGFzIG9mIDExIERlY2Vt
YmVyIDIwMTQ6CiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJLyNzZWN1cml0
eS1kZXZlbG9wZXJzCiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
ZGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSgpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKTsKIFdFQkNPUkVf
RVhQT1JUIGJvb2wgZGVsZXRlRGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSgpOwogCiBXRUJDT1JF
X0VYUE9SVCBib29sIHdyYXBTZXJpYWxpemVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCBhMjIy
Y2QwM2JjNDk4OGRlMWNmNzliOWFmMjAyYzdhNGU4YWM4ZjIzLi43NjY0YzA2OWYxNDlmYmVlNmQx
YjU0NzE2Mjg2MTk4MmQ2MTg5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRv
LmNwcApAQCAtNDQyLDMyICs0NDIsMzIgQEAgc3RhdGljIHZvaWQgbm9ybWFsaXplSnNvbldlYktl
eShKc29uV2ViS2V5JiB3ZWJLZXkpCiAgICAgd2ViS2V5LnVzYWdlcyA9IHdlYktleS5rZXlfb3Bz
ID8gdG9DcnlwdG9LZXlVc2FnZUJpdG1hcCh3ZWJLZXkua2V5X29wcy52YWx1ZSgpKSA6IDA7CiB9
CiAKLS8vIEZJWE1FOiBUaGlzIHJldHVybnMgYW4gT3B0aW9uYWw8S2V5RGF0YT4gYW5kIHRha2Vz
IGEgcHJvbWlzZSwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuCisvLyBGSVhNRTogVGhpcyByZXR1
cm5zIGFuIHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4gYW5kIHRha2VzIGEgcHJvbWlzZSwgcmF0aGVy
IHRoYW4gcmV0dXJuaW5nIGFuCiAvLyBFeGNlcHRpb25PcjxLZXlEYXRhPiBhbmQgbGV0dGluZyB0
aGUgY2FsbGVyIGhhbmRsZSB0aGUgcHJvbWlzZSwgdG8gd29yayBhcm91bmQgYW4gaXNzdWUgd2hl
cmUKIC8vIFZhcmlhbnQgdHlwZXMgKHdoaWNoIEtleURhdGEgaXMpIGluIEV4Y2VwdGlvbk9yPD4g
Y2F1c2UgY29tcGlsZSBpc3N1ZXMgb24gc29tZSBwbGF0Zm9ybXMuIFRoaXMKIC8vIHNob3VsZCBi
ZSByZXNvbHZlZCBieSBhZG9wdGluZyBhIHN0YW5kYXJkcyBjb21wbGlhbnQgc3RkOjp2YXJpYW50
IChzZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1NTgzKQotc3RhdGljIE9wdGlvbmFsPEtleURh
dGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0
bzo6S2V5RGF0YVZhcmlhbnQmJiBrZXlEYXRhVmFyaWFudCwgUmVmPERlZmVycmVkUHJvbWlzZT4m
IHByb21pc2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxl
Q3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBTdWJ0bGVDcnlwdG86OktleURhdGFWYXJpYW50JiYg
a2V5RGF0YVZhcmlhbnQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiBwcm9taXNlKQogewogICAgIHN3
aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6U3BraToK
ICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpQa2NzODoKICAgICBjYXNlIFN1YnRs
ZUNyeXB0bzo6S2V5Rm9ybWF0OjpSYXc6CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGtl
eURhdGFWYXJpYW50LAotICAgICAgICAgICAgWyZwcm9taXNlXSAoSnNvbldlYktleSYpIC0+IE9w
dGlvbmFsPEtleURhdGE+IHsKKyAgICAgICAgICAgIFsmcHJvbWlzZV0gKEpzb25XZWJLZXkmKSAt
PiBzdGQ6Om9wdGlvbmFsPEtleURhdGE+IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICB9LAotICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNv
dXJjZSkgLT4gT3B0aW9uYWw8S2V5RGF0YT4geworICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZl
clNvdXJjZSkgLT4gc3RkOjpvcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEtleURhdGEgeyBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
U291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3VyY2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAg
ICAgICB9CiAgICAgICAgICk7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6Sndr
OgogICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihrZXlEYXRhVmFyaWFudCwKLSAgICAgICAg
ICAgIFtdIChKc29uV2ViS2V5JiB3ZWJLZXkpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKKyAgICAg
ICAgICAgIFtdIChKc29uV2ViS2V5JiB3ZWJLZXkpIC0+IHN0ZDo6b3B0aW9uYWw8S2V5RGF0YT4g
ewogICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUpzb25XZWJLZXkod2ViS2V5KTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gS2V5RGF0YSB7IHdlYktleSB9OwogICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIFsmcHJvbWlzZV0gKGF1dG8mKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CisgICAgICAg
ICAgICBbJnByb21pc2VdIChhdXRvJikgLT4gc3RkOjpvcHRpb25hbDxLZXlEYXRhPiB7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCA0ZTUyMWQ2MjU3NGZiZGYxMzZjOTk3OTU1ZDVhNjgzNmNiOGU3NTU4Li5k
ZDJkOTBlZWM4MGJhZjQyZWEyY2FkZmYzNGIyMjUwMmE0NGExZTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVDREg6OmRlcml2ZUJpdHMo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byB1bmlmaWVkQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVfdCBsZW5n
dGgpIG11dGFibGUgeworICAgIGF1dG8gdW5pZmllZENhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmIGRlcml2ZWRLZXksIHNpemVf
dCBsZW5ndGgpIG11dGFibGUgewogICAgICAgICBpZiAoIWRlcml2ZWRLZXkpIHsKICAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaAppbmRleCAxNGUzNzI3YjdhNzAzOGRiMjQ0NGRkZjVmNzUyYTdiNDU2NDRk
NjVhLi45M2ExNWEyZGEzNTFkY2U3Mjc0MzM4MTk3ZDI2NjMxMDU4NWY3YmY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29y
aXRobT4gY3JlYXRlKCk7CiAKICAgICAvLyBPcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZGly
ZWN0bHkuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5
RUMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IENyeXB0
b0tleUVDJik7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtRUNESCgpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwCmluZGV4IGYyZjg2NmYyZTZjYzg4ZTgzMzU4YTcz
OTU5MDYwYjRlZGMwMzg3NzUuLjg0NGFlYWNkN2YxMzg5ZDM3YmFhZmY2MDZkZjA4YWVhZTcyYjRh
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0
KQogewogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtl
eSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZv
cktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4
dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewogICAgIC8vIERldGVybWluZSB0aGUg
QUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGht
ID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfQ1RSR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKaW5kZXggNzJjMWVmNDc5ZGY5MjJjYzc4OTI1OTQ3MmMw
ZDgyZTY4MzM0ZDI1OS4uMjJjMTI5OTY1YWFkY2QwMmM2N2I4YzhjZWExYTA4MmJjNGE4YTA3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfQ1RSR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUFFU19DVFJHQ3J5cHQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJlc2V0cyB0aGUg
Y2lwaGVyIG9iamVjdCwgc2V0cyB0aGUgcHJvdmlkZWQgY291bnRlciBkYXRhLAogLy8gYW5kIGV4
ZWN1dGVzIHRoZSBlbmNyeXB0IG9yIGRlY3J5cHQgb3BlcmF0aW9uLCByZXRyaWV2aW5nIGFuZCBy
ZXR1cm5pbmcgdGhlIG91dHB1dCBkYXRhLgotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXJhdGlvbiwg
Z2NyeV9jaXBoZXJfaGRfdCBoYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwg
Y29uc3QgdWludDhfdCogZGF0YSwgY29uc3Qgc2l6ZV90IHNpemUpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGxPcGVyYXRpb24oUEFMOjpHQ3J5cHQ6OkNpcGhlck9w
ZXJhdGlvbiBvcGVyYXRpb24sIGdjcnlfY2lwaGVyX2hkX3QgaGFuZGxlLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvdW50ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGNvbnN0IHNpemVfdCBzaXpl
KQogewogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX3Jlc2V0KGhhbmRsZSk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsbE9wZXJhdGlvbihQQUw6OkdDcnlw
dDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXIKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBo
ZXJPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyYXRp
b24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNv
dW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0
VGV4dCkKIHsKICAgICBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGF1dG8g
YWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUo
KSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKaW5kZXggNGE1MWQxZDcyM2Q5MmM4MTZk
MjcyMDM0NjA0ZDE5ZTIxNDYwYWY3Ny4uN2RkMDA1MDhjYmIwODNjZmUwMTM3MmYwZWIxYzNjOGIy
YmM1YTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Z2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHBsYWluVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwg
dWludDhfdCB0YWdMZW5ndGgpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGht
IGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlw
dDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNpcGhlclRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERh
dGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogewog
ICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXpl
LgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNp
emUoa2V5LnNpemUoKSAqIDgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCmluZGV4IGI2MjJiNGU5
Zjk4NjQ3MDA2NDUwNDIyMDA0ZDk4MGRmZWJlNDRmNWUuLjZhZjJmNzFjMDZlNjk1NTNlNGFiNjk2
NTFmZWE0YWQzNTJiMWViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHRXcmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0g
Zm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0
OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKQEAgLTc1LDcgKzc1LDcg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gRGV0
ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0
byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6
ZSgpICogOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAppbmRleCAwNTRlYzgyNTJiMTI5YzhkMTAyNmIy
Yzk3NGQ0MDY3MmE4NTYzNzBhLi40OThlNjIxNjgzM2I1NGUyZGZlZjBhOTYzMzU0ZWIzZWU3YzEw
ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUVDREhHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJp
dmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAsIGdjcnlfc2V4cF90IHB1YmxpY0tleVNleHAsIHNp
emVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4cF90IGJhc2VLZXlTZXhwLCBnY3J5X3NleHBfdCBwdWJs
aWNLZXlTZXhwLCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCiB7CiAgICAgLy8gRmlyc3QsIHJldHJp
ZXZlIHByaXZhdGUga2V5IGRhdGEsIHdoaWNoIGlzIHJvdWdobHkgb2YgdGhlIGZvbGxvd2luZyBm
b3JtOgogICAgIC8vIChwcml2YXRlLWtleQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4
cCwgZ2NyeV9zZXhwCiAgICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEoeE1QSSwga2V5U2l6
ZUluQnl0ZXMpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYgYmFzZUtleSwgY29u
c3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5
RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleUVDJiBwdWJsaWNLZXkpCiB7CiAgICAgcmV0dXJu
IGdjcnlwdERlcml2ZShiYXNlS2V5LnBsYXRmb3JtS2V5KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtl
eSgpLCAoYmFzZUtleS5rZXlTaXplSW5CaXRzKCkgKyA3KSAvIDgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0Ny
eXB0LmNwcAppbmRleCAyZGJiYTA5NmJmMTY4Mzc4YTE2NjExNmIyNDg0ODBhNDE0ODdjODA1Li44
ZjU4OWZjNmMzNWJmYWYxNjBiZTBiYTEwNzNiMGIxZTc2YmU5MDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0Ny
eXB0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgYm9vbCBleHRyYWN0RUNEU0FTaWduYXR1
cmVJbnRlZ2VyKFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBnY3J5X3NleHBfdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRT
aWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtl
eVNpemVJbkJ5dGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90
IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRo
IHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhSGFzaDsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aQogICAgIHJldHVybiBzaWduYXR1cmU7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxib29sPiBn
Y3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAvLyBCYWlsIGlmIHRoZSBzaWduYXR1
cmUgc2l6ZSBpc24ndCBkb3VibGUgdGhlIGtleSBzaXplIChpLmUuIGNvbmNhdGVuYXRlZCByIGFu
ZCBzIGNvbXBvbmVudHMpLgogICAgIGlmIChzaWduYXR1cmUuc2l6ZSgpICE9IGtleVNpemVJbkJ5
dGVzICogMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IDFiMTYyYjcyN2U5Y2I0NDRkYmEwNWE0
YjM1YThiZTk0MDQ0OWZkOWUuLmYyZTYxNzEwYTIwZjkzMzNjMzllNjg0YmVjOTEwNTJmOTUwNmNh
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBXZSBzaG91bGQgc3dpdGNoIHRvIHRoZSBsaWJnY3J5cHQtcHJvdmlkZWQgaW1w
bGVtZW50YXRpb24gb25jZSBpdCdzIGF2YWlsYWJsZS4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE1MzYKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVf
dCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbmZvLCBzaXplX3QgbGVuZ3RoSW5CeXRlcywgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0
IHByb3ZpZGUgSEtERiBzdXBwb3J0LCBzbyB3ZSBoYXZlIHRvIGltcGxlbWVudAogICAgIC8vIHRo
ZSBmdW5jdGlvbmFsaXR5IG91cnNlbHZlcyBhcyBzcGVjaWZpZWQgaW4gUkZDNTg2OS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dD
cnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhN
QUNHQ3J5cHQuY3BwCmluZGV4IDMwYTMyODkyNTY2NWIxZjY5YzcyZTVjYmIzOTZkZmM0NjAzZjY2
ZjguLmE2OTAzNDBmMGJiOGRlYmMzZTg4ZGEwZWI1NDkyZDgxNjE0ZWM1ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFD
R0NyeXB0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgaW50IGdldEdDcnlwdERpZ2VzdEFs
Z29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKICAgICB9CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShp
bnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAg
ICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAK
aW5kZXggOWIxMWJhYWMyZmE2Njc4YjQ5Y2FlMzExNTIyMDY1NzBlN2IyYzJlOC4uNjZlZGZiZDgx
OTk4ZjE3ZTBjMjg1NzhiMWQ0ZWViMzViZjcxYzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNw
cApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXlEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHREYXRhLCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyLCBzaXplX3QgaXRlcmF0aW9ucywgc2l6ZV90
IGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVy
aXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleURhdGEsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgc2FsdERhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaElkZW50aWZpZXIs
IHNpemVfdCBpdGVyYXRpb25zLCBzaXplX3QgbGVuZ3RoKQogewogICAgIC8vIERldGVybWluZSB0
aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGRlcml2YXRpb24uCiAgICAg
YXV0byBoYXNoQWxnb3JpdGhtID0gZGlnZXN0QWxnb3JpdGhtKGhhc2hJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDA2ZTI4ZTc0MGUy
ZDRmNDQyMjY4Y2ZjMTg3NzAyYmYwNzk4NjMzZmMuLjBlNGUyZGU3MTlmMjc1OWQ1NWY1Yzk1ZjM1
ODg0NWU2Mjg5M2E4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRl
cykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6
ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEg
aW4gYSBgZGF0YWAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOwpAQCAtNjMsNyArNjMsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90
IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFT
ZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBg
ZW5jLXZhbGAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGVuY1ZhbFNleHA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDJjMWEzMWRmMzdiMzBlNTg3Y2NiMmVkZDgy
MzhmNjY3NWY3YTY5YmQuLmJlNmFhODZmODA3OTM1OTRmODExOTZiNDQ0OGE2ZTEwYTEyNGRjYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAvLyBQZXJmb3JtIGRp
Z2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4g
ZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CkBAIC04Niw3ICs4Niw3IEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAgICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEoc1Nl
eHAsIGtleVNpemVJbkJ5dGVzKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZl
cmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVy
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2Ny
eXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpCiB7CiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qg
b3BlcmF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEu
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNw
cAppbmRleCBkNzRlNzkyNGVmMWEwYzYzNDgzZDUyNmFlOWE5MGM2MjUyYWViOTMxLi44N2M1NmMw
NjczMTU2OTAzZmE0NTA3NDI5YmUwNjA0ZmQ2MThlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0Ny
eXB0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBwbGFpblRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4
dCwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0
IGRhdGEgaW4gYSBkYXRhIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8g
RW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgp
LgpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZwogICAgIHJldHVybiBt
cGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
aXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRE
ZWNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIs
IGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbGFiZWxWZWN0b3Is
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUg
Y2lwaGVyLXRleHQgZGF0YSBpbiBhbiBlbmMtdmFsIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBh
ZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdj
cnlfc2V4cF9idWlsZCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKaW5kZXggN2RlOWVlZDIw
M2Y4ZWFkOWY3NDJhYTgwZjdjNTU4YTFmMGRhNzA2ZC4uZmUxNjE4YTc0NTc0M2JiNTBlOTg4Yjg5
ZjczMmU5NzhmZTdlNGMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoLCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3Qgc2FsdExlbmd0aCwgc2l6ZV90IGtl
eVNpemVJbkJ5dGVzKQogewogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRo
ZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhSGFzaDsKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkK
ICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0
VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0
dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQogewogICAgIC8v
IFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9u
IHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXgg
MDNhMGI4OTM3MTBlMWI0YmIxYWM0NDA2YTZiNzdmMWE5MmI0MTg5MS4uMzNkZGRiZDgyYzQzMGJl
ZTIxMWExNTk2NGM1NmNhMzA3M2YxNGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29s
IENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRlZEN1cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAg
ICAgcmV0dXJuIGN1cnZlID09IE5hbWVkQ3VydmU6OlAyNTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2
ZTo6UDM4NCB8fCBjdXJ2ZSA9PSBOYW1lZEN1cnZlOjpQNTIxOwogfQogCi1PcHRpb25hbDxDcnlw
dG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitzdGQ6Om9wdGlvbmFsPENyeXB0b0tl
eVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfc2V4cF90PiBnZW5rZXlTZXhwOwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlf
c2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwgbnVsbHB0ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkp
IiwgY3VydmVOYW1lKGN1cnZlKSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGtleUlk
ZW50aWZpZXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDcnlwdG9L
ZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJZGVudGlmaWVyKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1
cnZlPiBjdXJ2ZUZvcklkZW50aWZpZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVy
KQogewogICAgIGF1dG8qIGRhdGEgPSBpZGVudGlmaWVyLmRhdGEoKTsKICAgICBhdXRvIHNpemUg
PSBpZGVudGlmaWVyLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRleCA1YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUx
NDUyNmYzYzQ4OWI0NWUwLi4wMzMxNTgwN2RiN2Y3N2M3OTI0NTRjMjdmNzQxNTUwZDE2YWRlNDBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FH
Q3J5cHQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgc2l6ZV90IENyeXB0b0tleVJTQTo6a2V5U2l6
ZUluQml0cygpIGNvbnN0CiB9CiAKIC8vIENvbnZlcnQgdGhlIGV4cG9uZW50IHZlY3RvciB0byBh
IDMyLWJpdCB2YWx1ZSwgaWYgcG9zc2libGUuCi1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGV4
cG9uZW50VmVjdG9yVG9VSW50MzIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBvbmVudFZlY3RvclRvVUludDMyKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+
IDQpIHsKICAgICAgICAgaWYgKHN0ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50
LmVuZCgpIC0gNCwgW10odWludDhfdCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQpA
QCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBib29sIHN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZp
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rv
cjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwIHVzYWdlcykKIHsKICAgICAvLyBEZWNvZGUgdGhlIGBTdWJqZWN0UHVibGljS2V5SW5mb2Ag
c3RydWN0dXJlIHVzaW5nIHRoZSBwcm92aWRlZCBrZXkgZGF0YS4KICAgICBQQUw6OlRBU04xOjpT
dHJ1Y3R1cmUgc3BraTsKQEAgLTMwOSw3ICszMDksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gu
dmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0
b0tleVR5cGU6OlB1YmxpYywgUGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVs
ZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9y
PHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8v
IERlY29kZSB0aGUgYFByaXZhdGVLZXlJbmZvYCBzdHJ1Y3R1cmUgdXNpbmcgdGhlIHByb3ZpZGVk
IGtleSBkYXRhLgogICAgIFBBTDo6VEFTTjE6OlN0cnVjdHVyZSBwa2NzODsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcAppbmRleCA4MzAwZTcw
NWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0YTgyZTg4NzhhLi5iYzE1ZmVlZjU3ZWMzYTM4MzVmNjhh
YzVkOTRkNjgyM2VmMmZlYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0dDcnlwdFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9HQ3J5cHRVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotT3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+
IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8xOgpAQCAtNTAsNyArNTAsNyBAQCBPcHRpb25hbDxjb25zdCBjaGFyKj4g
aGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8aW50PiBobWFjQWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzd2l0Y2ggKGlkZW50
aWZpZXIpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAt
NjgsNyArNjgsNyBAQCBPcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBkaWdlc3RB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQorc3RkOjpvcHRp
b25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7CiAgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMToKQEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8aW50PiBk
aWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IH0KIH0KIAotT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0
b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCitz
dGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdl
c3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAg
IHN3aXRjaCAoaWRlbnRpZmllcikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzE6CkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0KICAg
ICB9CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkp
CitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiB7
CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSBsZW5ndGggZm9yIHRoZSB1bnNpZ25lZCBmb3JtYXQu
CiAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAwOwpAQCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFs
PHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIGRhdGFM
ZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfc2V4cF90IHBhcmFt
U2V4cCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QgcGFyYW1T
ZXhwKQogewogICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4
cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9t
cGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZN
VF9VU0cpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBPcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChn
Y3J5X3NleHBfdCBwYXJhbVNleHApCiAgICAgcmV0dXJuIG1waUxlbmd0aChwYXJhbU1QSSk7CiB9
CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X21waV90IHBhcmFtTVBJ
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJh
bU1QSSkKIHsKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIGxlbmd0aC4KICAgICBhdXRvIGxlbmd0
aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgcmV0dXJuIG91
dHB1dDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWREYXRh
KGdjcnlfbXBpX3QgcGFyYW1NUEksIHNpemVfdCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90IHBhcmFtTVBJ
LCBzaXplX3QgdGFyZ2V0TGVuZ3RoKQogewogICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgbGVuZ3Ro
LiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRhcmdldCBsZW5n
dGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgocGFyYW1NUEkpOwpAQCAtMTY1LDcgKzE2
NSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5
X21waV90IHBhcmFtTVBJLCBzaXplX3QgdGFyZ2V0CiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAot
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFt
U2V4cCkKIHsKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1l
eHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
bXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9G
TVRfVVNHKSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBt
cGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKICAgICByZXR1cm4gbXBpRGF0YShwYXJhbU1Q
SSk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShn
Y3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnZXRMZW5ndGgpCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNl
eHAsIHNpemVfdCB0YXJnZXRMZW5ndGgpCiB7CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1
ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCiAgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJh
bVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNl
eHAsIHNpemVfdCB0YXJnCiAgICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEocGFyYW1NUEks
IHRhcmdldExlbmd0aCk7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVk
RGF0YShnY3J5X21waV90IG1waSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlT
aWduZWREYXRhKGdjcnlfbXBpX3QgbXBpKQogewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEobXBp
KTsKICAgICBpZiAoIWRhdGEpCkBAIC0xOTcsNyArMTk3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3QgbXBpKQogICAgIHJldHVybiBkYXRhOwog
fQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhwX3Qg
cGFyYW1TZXhwKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEo
Z2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEocGFyYW1T
ZXhwKTsKICAgICBpZiAoIWRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9H
Q3J5cHRVdGlsaXRpZXMuaAppbmRleCBkODRkNDUyMGQ0MjUyMTE1OWU1N2IyOWUwM2JkMGFjZGUz
NGIyYWVmLi5mMGE0MTM0NTZhOTQ0NTk5NThmOWE3ZjAyNTQ1MzQ0YjVmYjZjM2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKQEAgLTY3LDE5
ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hlcyhjb25zdCB2b2lkKiBsaHMsIHNp
emVfdCBzaXplLCBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4XwogCiB9IC8vIG5hbWVzcGFjZSBDcnlw
dG9Db25zdGFudHMKIAotT3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwotCi1PcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0aG0o
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7Ci1PcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKLU9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcik7Ci0KLU9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfbXBpX3QpOwotT3B0
aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3QpOwotT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3QpOwotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBt
cGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfbXBpX3QsIHNpemVfdCB0YXJnZXRMZW5ndGgpOwotT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90KTsKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X3NleHBfdCwgc2l6ZV90IHRh
cmdldExlbmd0aCk7Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2Ny
eV9tcGlfdCk7Ci1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9z
ZXhwX3QpOworc3RkOjpvcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CisKK3N0ZDo6b3B0aW9uYWw8aW50PiBobWFjQWxnb3Jp
dGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOworc3RkOjpvcHRpb25hbDxpbnQ+IGRpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKK3N0ZDo6b3B0aW9uYWw8UEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyKTsKKworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0
aChnY3J5X21waV90KTsKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhw
X3QpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCk7
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5
X21waV90LCBzaXplX3QgdGFyZ2V0TGVuZ3RoKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfc2V4cF90LCBzaXplX3QgdGFyZ2V0TGVuZ3RoKTsK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfbXBpX3Qp
Oworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVNpZ25lZERhdGEoZ2NyeV9zZXhw
X3QpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwR0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3Bw
CmluZGV4IDI1MGQyZjIzNWNkYTJkNDRkMWQ3NDdkNGYzMjhkZTJmYzI3NmRiYjUuLjRlNzYwYjg4
NDUzM2RiNjg3NGZkY2M4OTc3YzUzMGU5MzgwMzQxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5
cHQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAKaW5kZXggM2RjNThmNTM0Nzc1NDY3ODM4
YTY2YmE1ZmM0OGRkY2NiNjY2ZTQ4NC4uZDM2ZDM0MGY3MGE4ZjRhMTdmZjVmNjE5Y2ViMWQ5ZDg0
NWNhMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIFAyNTYgeyAiUC0yNTYi
X3MgfTsKIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgUDM4NCB7ICJQLTM4NCJfcyB9Owogc3Rh
dGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBQNTIxIHsgIlAtNTIxIl9zIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0cmluZyYg
Y3VydmUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9O
YW1lZEN1cnZlKGNvbnN0IFN0cmluZyYgY3VydmUpCiB7CiAgICAgaWYgKGN1cnZlID09IFAyNTYp
CiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDI1NjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oCmluZGV4IDc3N2RmZDNhODVjNzRiMmJkZWRk
ZjU2Njk1OTZkNTVjNmQwYzkzMGUuLmI5NjA2MDU5YzhhNjU2MTFiNmViNDRjOWQ4MTkzZGVlMWYw
ZmY0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaApAQCAtOTgs
NyArOTgsNyBAQCBwcml2YXRlOgogICAgIEtleUFsZ29yaXRobSBhbGdvcml0aG0oKSBjb25zdCBm
aW5hbDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2
ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENyeXB0b0tleVBhaXI+IHBsYXRmb3JtR2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlw
dG9LZXlQYWlyPiBwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
LCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAg
ICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlFQz4gcGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQ
dHI8Q3J5cHRvS2V5RUM+IHBsYXRmb3JtSW1wb3J0SldLUHVibGljKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90
PiYmIHksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0
aWMgUmVmUHRyPENyeXB0b0tleUVDPiBwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9y
PHVpbnQ4X3Q+JiYgeSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5UlNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eVJTQS5jcHAKaW5kZXggOGQwYmZkODFiZDQ1NDRjOGVlZjc3ZTk0NTA3Zjk5MmYwMjVmMDFkYy4u
MDE4M2MxZGQ0ODdhZjAxMGU1ZTUwOWQyMjYwZDY1MjI1MTk1ZDQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIE9wdGlvbmFsPENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRv
S2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGFsZ29yaXRobSwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNo
LCBKc29uV2ViS2V5JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzKQogewogICAgIGlmIChrZXlEYXRhLmt0eSAhPSAiUlNBIikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlSU0EuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5o
CmluZGV4IGVlOTM2ZWFhYTdiNTk5NjFlZmYxY2E5NmIxZmQyNzA1YmU2ZWYwMjIuLjBiYjBhYWU3
MmIxYmQ3YWQ0NTdiMDI5NDYwN2VmY2FmMjIwMzc0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleVJTQS5oCkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5UGFpciYmKT47
CiAgICAgdXNpbmcgVm9pZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OwogICAgIHN0
YXRpYyB2b2lkIGdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xl
bmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwdWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0
aWMgUmVmUHRyPENyeXB0b0tleVJTQT4gaW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkm
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwotICAgIHN0YXRpYyBS
ZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50
OF90PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgc3Rh
dGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25X
ZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOworICAgIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVj
dG9yPHVpbnQ4X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsK
KyAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleVJTQT4gaW1wb3J0UGtjczgoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBo
YXNoLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXApOwogCiAgICAgUGxhdGZvcm1SU0FLZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtS2V5LmdldCgpOyB9CiAgICAgSnNvbldlYktleSBleHBvcnRKd2soKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
RUNESE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVD
REhNYWMuY3BwCmluZGV4IGVlODRhZTk3MmU3YTUyYzVhMmFhYzU3MjI0ODlmMDFmODMzMjg0ODIu
LmE3MjA2MGUzZmNlZThlZTk1MTBmZTJhZDQ2ZDE3ZjlkZTFlMThmNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcApAQCAt
MzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENy
eXB0b0tleUVDJiBiYXNlS2V5LCBjb25zdCBDcnlwdG9LZXlFQyYgcHVibGljS2V5KQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVy
aXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1
YmxpY0tleSkKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3Rk
OjpudWxsb3B0OwogICAgIFZlY3Rvcjx1aW50OF90PiBkZXJpdmVkS2V5KGJhc2VLZXkua2V5U2l6
ZUluQml0cygpIC8gOCk7IC8vIFBlciBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5
MCNzZWN0aW9uLTQuCiAgICAgc2l6ZV90IHNpemUgPSBkZXJpdmVkS2V5LnNpemUoKTsKICAgICBp
ZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChiYXNlS2V5LnBsYXRmb3JtS2V5KCks
IHB1YmxpY0tleS5wbGF0Zm9ybUtleSgpLCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5j
cHAKaW5kZXggMzAzMDc3MjAwZDc1N2M3OGJhMzZmZTYyOTdiY2RlZjNkYmNlMzUzOS4uOTgwNzVi
NTY4MTYzYjI1MjdhMWFlZjI4MWIyNzQ5YjYzMWI2MjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPENDSG1hY0Fs
Z29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGhhc2hGdW5jdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4g
Y29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hG
dW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9EaWdlc3RBbGdvcml0aG0uaAppbmRleCA4ZDE3ODE3ZTc0MThlOTUxMGU4ZTAz
ODdmYTk4ZTdkMjVjNTZlMjVlLi44NDhkODk0MTZhMDM2MWMxYWRkMTY1YjkyNzAyNTZjNWVlNmU3
NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFs
Z29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvRGlnZXN0QWxn
b3JpdGhtLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgT3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxn
b3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxn
b3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3
aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5
RUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAK
aW5kZXggZjU0ZGI3N2QyOTM2MjAwNjk2MDRjM2UyMTNjODc3NjkxMGQzN2ViYS4uODlmYjU0Mzlh
ZWQ0NGE3YzRjODdlYzljMWE1NzEwMjRiZGU5NmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIENyeXB0
b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRlZEN1cnZlKE5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0
dXJuIGN1cnZlID09IE5hbWVkQ3VydmU6OlAyNTYgfHwgY3VydmUgPT0gTmFtZWRDdXJ2ZTo6UDM4
NDsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2Vu
ZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2
ZSBjdXJ2ZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQor
c3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1
cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAg
ICAgc2l6ZV90IHNpemUgPSBnZXRLZXlTaXplRnJvbU5hbWVkQ3VydmUoY3VydmUpOwogICAgIEND
RUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCA2ZjFhODQyMjJhYjJmYjEzZmI0OGY0
YmM1NTM2ZDUzYTBiMTQ4OWVkLi45MTY2Y2E1NTA4NjZkMzkyM2IxZWVkNzY3NzlkYjE1OGVjMGE0
OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICB9KTsKIH0K
IAotUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjppbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8
dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMpCiB7CiAgICAgLy8gVGhlIGN1cnJlbnQgU2VjTGlicmFyeSBjYW5ub3QgaW1wb3J0
IGEgU1BLSSBmb3JtYXQgYmluYXJ5LiBIZW5jZSwgd2UgbmVlZCB0byBzdHJpcCBvdXQgdGhlIFNQ
S0kgaGVhZGVyLgogICAgIC8vIFRoaXMgaGFjayBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8v
cHJvYmxlbS8yOTUyMzI4Nj4gaXMgcmVzb2x2ZWQuCkBAIC0zNTQsNyArMzU0LDcgQEAgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25zdAog
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+IENy
eXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWlu
dDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gVGhl
IGN1cnJlbnQgU2VjTGlicmFyeSBjYW5ub3QgaW1wb3J0IGEgUEtDUzggZm9ybWF0IGJpbmFyeS4g
SGVuY2UsIHdlIG5lZWQgdG8gc3RyaXAgb3V0IHRoZSBQS0NTOCBoZWFkZXIuCiAgICAgLy8gVGhp
cyBoYWNrIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI5NTIzMjg2PiBpcyBy
ZXNvbHZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXBNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6
ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCmluZGV4IDg5OTMzODg4YjIyZDlhMzk4ODRmOTFhZTgyZWIz
Mzg5YjlhZDExYWMuLjg2Y2U5ZmE2Y2Y1N2YwYzEwM2Q1NWZmNTdkZGEyNjNhNDRmZjMxYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdy
YXBNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRv
S2V5V3JhcE1hYy5tbQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIG1hc3Rlcktl
eUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKCkKICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNyeXB0by5tYXN0ZXIrJUAi
LCBidW5kbGVJZGVudGlmaWVyXTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gY3JlYXRlQW5kU3RvcmVNYXN0ZXJLZXkoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBjcmVhdGVBbmRTdG9yZU1hc3RlcktleSgpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NDcmVkZW50
aWFscykpOwogCkBAIC0xNTAsNyArMTUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgcmV0dXJuIG1hc3RlcktleURhdGE7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxzKSk7
CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBm
aW5kTWFzdGVyS2V5KCkKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRM
ZW5ndGgoa2V5RGF0YS5nZXQoKSkpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
ZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQogewogICAgIGlmIChhdXRvIG1hc3RlcktleSA9
IGZpbmRNYXN0ZXJLZXkoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXN0ZXJLZXktPnNp
emUoKSA9PSBtYXN0ZXJLZXlTaXplSW5CeXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5j
cHAKaW5kZXggYzllYzk5YzlhODliMWFhOTlkNzA0MGVkZmQxZWYxZjIxMzZhODA1MC4uYzI3MWMw
NjdmMzU2MjI4ZWZmZGVkYThmOTM1MWUzMTZmMTg4ODAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNP
cGVuU1NMLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiogYWVz
QWxnb3JpdGhtKHNpemVfdCBrZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYm
IHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRF
bmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQpCiB7CiAgICAgY29uc3QgRVZQX0NJUEhF
UiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3Jp
dGhtKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBj
cnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgcmV0dXJu
IGNpcGhlclRleHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0
RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y2lwaGVyVGV4dCkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdv
cml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZC
T3BlblNTTC5jcHAKaW5kZXggYWI2ODdmNmNjZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZkMTc4Njc5
NC4uOTI1YWIyZjY0NjA4MDM5NTdlOGQzZTRiNjM2OWVmOWM3ZDA0N2NhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5T
U0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bUFFU19DRkJPcGVuU1NMLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgRVZQX0NJ
UEhFUiogYWVzQWxnb3JpdGhtKHNpemVfdCBrZXlTaXplKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1
aW50OF90PiYmIHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQpCiB7CiAgICAgY29uc3Qg
RVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlm
ICghYWxnb3JpdGhtKQpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAg
ICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0g
PSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RS
T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1BRVNfQ1RST3BlblNTTC5jcHAKaW5kZXggOTMxNDYyMzk2ZGQxYzIzYWEyNmY5NjAyNzY1NWI5
MmE5MGUyOThhZC4uY2EyZjliNTU5MDMzYzcyODVkZDc4Y2JkMGJmNjUxMTgwZTRkMTliYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUk9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29u
c3QgRVZQX0NJUEhFUiogYWVzQWxnb3JpdGhtKHNpemVfdCBrZXlTaXplKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQg
b3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dFRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0
KGludCBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGlucHV0VGV4dCkKIHsKICAgICBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2
OwogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19HQ01PcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcAppbmRleCAwNWY2ZWM5NTRlZGM2Mzdh
YjJhNzljNmYxNWQzMjA3OWMzNmE4OTU2Li4wMTE3NTI0YzgzMjM2NjRlYzhlMjE3YTQyOWFlYzFk
NDBmYjJhNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIHN0YXRpYyBjb25zdCBFVlBfQ0lQSEVSKiBhZXNBbGdvcml0aG0oc2l6ZV90IGtleVNpemUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgcGxhaW5UZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRh
LCB1aW50OF90IHRhZ0xlbmd0aCkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0g
PSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCkBAIC0xMDMs
NyArMTAzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIHJldHVybiBjaXBoZXJUZXh0
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRp
dGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0
aCkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5
LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3Bw
CmluZGV4IGExN2MyOWNhNGQyNjJjYmU4YTZjM2VmNjk3YjE1ZGM2M2FkYTNiOWIuLjBlOWZlMjVh
YzRlYTE4OTVjNTZiNGJmMThlNDA0ZTA3ODEwZjY5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5T
U0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBFVlBfQ0lQSEVSKiBhZXNBbGdv
cml0aG0oc2l6ZV90IGtleVNpemUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVS
KiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0
aG0pCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNy
eXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICByZXR1cm4g
Y2lwaGVyVGV4dDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRV
bndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndy
YXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0o
a2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAK
aW5kZXggMmVmMGVjZGZlYTcwYzczYzhjOGJiZGE1OTgxZTQwYTQ5YzZmMjdhMS4uY2Y5NzgzNTIz
Mjg1NzhjNTY1OGE1M2IyYWRlNzc2NWExMzc0YjFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDREhPcGVuU1NMLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNv
bnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5RUMmKQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25z
dCBDcnlwdG9LZXlFQyYsIGNvbnN0IENyeXB0b0tleUVDJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKaW5kZXggMjIyNmI3
ZjAwOGRiNzk2ODE5YzJhOGY3MGM1MzY5NzJhM2E5Nzg5Yy4uMTkyY2NmNTZlZDU4YWUxZjlmZWJj
YzJjNjAxZmUzNzliYTU0NDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhNQUNPcGVuU1NMLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShjb25zdCBFVlBfTUQqIGFsZ29yaXRobSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVT
aWduYXR1cmUoY29uc3QgRVZQX01EKiBhbGdvcml0aG0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICAvLyBD
cmVhdGUgdGhlIE1lc3NhZ2UgRGlnZXN0IENvbnRleHQKICAgICBFdnBEaWdlc3RDdHhQdHIgY3R4
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAKaW5kZXgg
YWUzMmI2Zjg2ZGMzYjVkY2NmMTk5MTdiMDgyMzU0ZmZkMzZjOTViZC4uYWNmZWVlNzkwZmNkMDA2
MjE3OWQ1MWQ4MzQwZGVhZGZmZTYyMGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU9wZW5TU0wuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2ln
bihjb25zCiAgICAgaWYgKCFtZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNh
bGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdlc3Qp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogCkBAIC03NCw3
ICs3NCw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LCiAgICAgaWYgKCFtZCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdChtZCwgZGF0YSk7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRpZ2VzdCA9IGNhbGN1bGF0ZURpZ2VzdCht
ZCwgZGF0YSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTT3BlblNTTC5jcHAKaW5kZXggOWUz
ZDllY2ZmNzI0NjQyYjJkMTU2NTE3NjA3YjAzOWM0MTQ2MDExYS4uNjIyNjdjNTgxNzEwODRmMTZh
NTMzYmJkYTc1MjFmMGM2Y2Y1NGNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NPcGVuU1NMLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbAogICAgIGlmICghbWQpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEp
OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVE
aWdlc3QobWQsIGRhdGEpOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIApAQCAtODYsNyArODYsNyBAQCBFeGNlcHRpb25Pcjxi
b29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1ScwogICAgIGlmICghbWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciB9OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkaWdlc3Qg
PSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBkaWdlc3QgPSBjYWxjdWxhdGVEaWdlc3QobWQsIGRhdGEpOwogICAgIGlmICghZGln
ZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5j
cHAKaW5kZXggZGM2NjJhZDc4YjM0MjNmM2I4ZGZjM2Q1Y2YwMDNkYzVlZmJjZDU4Zi4uZjMxMWVk
M2I2ZmRjYzc4NDg5ZGRmOGEzZjAyYjkzZGI1MTRjNzA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIGJvb2wgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtU3VwcG9ydGVkQ3VydmUoTmFtZWRDdXJ2
ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0
b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBO
YW1lZEN1cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3N0ZDo6
b3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWly
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwKQogewogICAgIFVOVVNFRF9QQVJBTShleHRyYWN0YWJsZSk7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKaW5kZXggOTNmYTBhZThjMjk1ZTY5MmY1
ZmVkZjJhNjUwZWQxMjViMDExMmM0My4uZDMyOTlmZjUzMmIyZTI0OTg2NThmZDc1YzMxY2FlZDhl
MWMzMzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
S2V5UlNBT3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvS2V5UlNBT3BlblNTTC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzaXplX3QgQ3J5cHRvS2V5
UlNBOjprZXlTaXplSW5CaXRzKCkgY29uc3QKIH0KIAogLy8gQ29udmVydCB0aGUgZXhwb25lbnQg
dmVjdG9yIHRvIGEgMzItYml0IHZhbHVlLCBpZiBwb3NzaWJsZS4KLXN0YXRpYyBPcHRpb25hbDx1
aW50MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4
cG9uZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9yVG9V
SW50MzIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCkKIHsKICAgICBpZiAoZXhwb25l
bnQuc2l6ZSgpID4gNCkgewogICAgICAgICBpZiAoc3RkOjphbnlfb2YoZXhwb25lbnQuYmVnaW4o
KSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1aW50OF90IGVsZW1lbnQpIHsgcmV0dXJuICEhZWxl
bWVudDsgfSkpCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAg
ICBjYWxsYmFjayhDcnlwdG9LZXlQYWlyIHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHBy
aXZhdGVLZXkpIH0pOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRh
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8
Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICAvLyBXZSBuZWVkIGEgbG9jYWwgcG9p
bnRlciB2YXJpYWJsZSB0byBwYXNzIHRvIGQyaSAoREVSIHRvIGludGVybmFsKSBmdW5jdGlvbnMo
KS4KICAgICBjb25zdCB1aW50OF90KiBwdHIgPSBrZXlEYXRhLmRhdGEoKTsKQEAgLTIyMiw3ICsy
MjIsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShw
a2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVp
bnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIFdl
IG5lZWQgYSBsb2NhbCBwb2ludGVyIHZhcmlhYmxlIHRvIHBhc3MgdG8gZDJpIChERVIgdG8gaW50
ZXJuYWwpIGZ1bmN0aW9ucygpLgogICAgIGNvbnN0IHVpbnQ4X3QqIHB0ciA9IGtleURhdGEuZGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0
aWVzLmNwcAppbmRleCA4YzIxMjM3YzJmY2FmOWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliLi43
NGI0NmQ2NzAwMTJjZjBlMWJlM2NlNDE5NWQ4ODM3YjU5YjQ5NzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBjb25zdCBFVlBfTUQqIGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2hGdW5jdGlvbikKICAgICB9CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIG1lc3NhZ2UpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3Vs
YXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IG1lc3NhZ2UpCiB7CiAgICAgRXZwRGlnZXN0Q3R4UHRyIGN0eDsKICAgICBpZiAoIShjdHggPSBF
dnBEaWdlc3RDdHhQdHIoRVZQX01EX0NUWF9jcmVhdGUoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oCmluZGV4IGQyYzkxYmZjNDdiODhm
M2JkZmM0NmQ1Zjk4ODY4MDc2ZjM2ZGE5NjguLmVmMGE2MDY4ODUwNDBmZDE2M2NkNGI4Y2FiOTUx
NjZiYWYwMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09w
ZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVu
U1NMVXRpbGl0aWVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
b25zdCBFVlBfTUQqIGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhh
c2hGdW5jdGlvbik7CiAKLU9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0
KGNvbnN0IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2Up
Oworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZURpZ2VzdChjb25zdCBF
VlBfTUQqIGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcAppbmRl
eCAxMjNkYTU3NGMzMWZmYTk1YTJmMTM2MjJjM2Y0MjlkYzZmYWU0MjhiLi44NmNjNmIxZjk3YTJh
MWM3Njc1YTE3MGY3NzJiYTkwYjgzZGU2NDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwT3BlblNT
TC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBh
cmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGht
QWVzR2NtUGFyYW1zLmgKaW5kZXggZTI5NjYyYTIyNzU1N2NmNjFkNGIxNDA3Y2E1ODc5NTMyODA0
MWY5YS4uNjdhZjAzOTg3ZmVjNjk1NDJmOGQ3YzkyY2FmYjBhMDY5YTdjNDExNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2Nt
UGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxn
b3JpdGhtQWVzR2NtUGFyYW1zLmgKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgQ3J5cHRvQWxnb3Jp
dGhtQWVzR2NtUGFyYW1zIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMg
ewogcHVibGljOgogICAgIEJ1ZmZlclNvdXJjZSBpdjsKICAgICAvLyBVc2UgYWRkaXRpb25hbERh
dGFWZWN0b3IoKSBpbnN0ZWFkIG9mIGFkZGl0aW9uYWxEYXRhLiBUaGUgbGFiZWwgd2lsbCBiZSBn
b25lIG9uY2UgYWRkaXRpb25hbERhdGFWZWN0b3IoKSBpcyBjYWxsZWQuCi0gICAgbXV0YWJsZSBP
cHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBhZGRpdGlvbmFsRGF0YTsKLSAgICBt
dXRhYmxlIE9wdGlvbmFsPHVpbnQ4X3Q+IHRhZ0xlbmd0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4gYWRkaXRpb25hbERhdGE7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHRhZ0xlbmd0aDsKIAogICAgIENsYXNzIHBhcmFt
ZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpBZXNHY21QYXJhbXM7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxn
b3JpdGhtSG1hY0tleVBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMv
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCmluZGV4IGU4NGU0MTdhMDgzNjZjMTQwZjJl
MzQ5YTNjM2Q5NzY1OGMwZmZiZjYuLjlkMTA5YzBmODRiNmNjOGNkZWZjYjM2YTA1YWYzZTY3MmE3
OGUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFy
YW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zLmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBtZXJnaW5nIGhhc2ggYW5kIGhhc2hJZGVu
dGlmaWVyLgogICAgIFZhcmlhbnQ8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4sIFN0cmluZz4g
aGFzaDsKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyOwotICAg
IE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5n
dGg7CiAKICAgICBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBD
bGFzczo6SG1hY0tleVBhcmFtczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKaW5k
ZXggMzVkNDUwMWRhNzZiMmVhYzU3YTliMWM0YTBlNzE0NzQyNzkzMjUwMi4uNzY5ZjNkOWNiM2Fh
YTc5OTY3MmZjNzU1NDcyOTU4M2U2M2I0MDE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMgewogcHVibGljOgogICAgIC8vIFVzZSBsYWJlbFZlY3RvcigpIGluc3RlYWQgb2YgbGFi
ZWwuIFRoZSBsYWJlbCB3aWxsIGJlIGdvbmUgb25jZSBsYWJlbFZlY3RvcigpIGlzIGNhbGxlZC4K
LSAgICBtdXRhYmxlIE9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+IGxhYmVsOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBsYWJl
bDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENs
YXNzOjpSc2FPYWVwUGFyYW1zOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3Bw
CmluZGV4IGQ5ZDFmZTI0MmU4ZjA4YzcyYTE3ODIzNDZiOGExMmM0NzE4YmVmZWIuLjE3ZjM2ODlj
NjdiMDRiZmNkMGY2NDVmNWNkZGJkOWZiNWZiNGRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bnZhc1ZhbHVlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTdHJpbmcgQ1NTQ2FudmFzVmFsdWU6OmN1
c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKCItd2Via2l0LWNhbnZh
cygiLCBtX25hbWUsICcpJyk7CiB9CiAKLXZvaWQgQ1NTQ2FudmFzVmFsdWU6OmNhbnZhc0NoYW5n
ZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2Vk
UmVjdCkKK3ZvaWQgQ1NTQ2FudmFzVmFsdWU6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1l
bnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGNoYW5nZWRSZWN0KQogewogICAg
IGlmICghY2hhbmdlZFJlY3QpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmgKaW5kZXggNmIxZDYxYzdjZmZhM2IxZDM5NzVlMTM3YTcwYjVhMjhmNGE2OTk3Yy4u
NjU4OWY0ZDMzMDM5MTcxZTg3YWQ4OTE5ZTVlZjdiOGQ1MmI1Mzk2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICBjb25z
dCBDU1NDYW52YXNWYWx1ZSYgb3duZXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJWYWx1
ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jh
c2UmIGNhbnZhc0Jhc2UsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIGNoYW5nZWRSZWN0KSBm
aW5hbAorICAgICAgICB2b2lkIGNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBjaGFuZ2VkUmVjdCkgZmluYWwKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKGlzPEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNl
KSk7CiAgICAgICAgICAgICBtX293bmVyVmFsdWUuY2FudmFzQ2hhbmdlZChkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSksIGNoYW5nZWRSZWN0KTsKQEAgLTkzLDcgKzkzLDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKEhUTUxD
YW52YXNFbGVtZW50JiwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJlY3QpOwor
ICAgIHZvaWQgY2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJlY3QpOwogICAgIHZvaWQgY2FudmFzUmVzaXplZChI
VE1MQ2FudmFzRWxlbWVudCYpOwogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNF
bGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKaW5kZXggYTZkNTQzYmNlZGY1OTM1ODMzYWEyY2E3OTc0OWJiMDA1NTVh
MzE1Ny4uYzRiYjk2NTE3OTdlZGY3YzZhMzJhYjEwYjI3OGQ1Mjk4ZTM5MjZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTE4NDIsNyArMTg0Miw3IEBAIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Zm9udE5vbktleXdvcmRTdHlsZUZyb21TdHlsZVZhbHVlCiAgICAgcmV0dXJuIENT
U0ZvbnRTdHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPYmxpcXVlKSwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oaXRhbGljKSwgQ1NTVW5pdFR5cGU6OkNT
U19ERUcpKTsKIH0KIAotUmVmPENTU0ZvbnRTdHlsZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpmb250U3R5bGVGcm9tU3R5bGVWYWx1ZShPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
IGl0YWxpYywgRm9udFN0eWxlQXhpcyBmb250U3R5bGVBeGlzKQorUmVmPENTU0ZvbnRTdHlsZVZh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5bGVGcm9tU3R5bGVWYWx1ZShzdGQ6
Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljLCBGb250U3R5bGVBeGlzIGZvbnRT
dHlsZUF4aXMpCiB7CiAgICAgaWYgKGF1dG8ga2V5d29yZCA9IGZvbnRTdHlsZUtleXdvcmQoaXRh
bGljLCBmb250U3R5bGVBeGlzKSkKICAgICAgICAgcmV0dXJuIENTU0ZvbnRTdHlsZVZhbHVlOjpj
cmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoa2V5
d29yZC52YWx1ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgKaW5kZXggNGNkNjQzNTVjOWI4NDM2MjljNDUyODQyNjNlN2Y1MzZiOWQ3
YzE1ZC4uY2RkMGM0YTNjOWZlZTBjZDE5NWE1ODVkZjY1MjE4M2ZhYWRlOTI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9u
dE5vbktleXdvcmRTdHJldGNoRnJvbVN0eWxlVmFsdWUoRm9udFNlbGVjdGlvblZhbHVlKTsKICAg
ICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3RyZXRjaEZyb21TdHlsZVZhbHVl
KEZvbnRTZWxlY3Rpb25WYWx1ZSk7CiAgICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4g
Zm9udE5vbktleXdvcmRTdHlsZUZyb21TdHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0g
ICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9udFN0eWxlRnJvbVN0eWxlVmFsdWUo
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiwgRm9udFN0eWxlQXhpcyk7CisgICAgc3RhdGlj
IFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoc3RkOjpvcHRp
b25hbDxGb250U2VsZWN0aW9uVmFsdWU+LCBGb250U3R5bGVBeGlzKTsKIAogcHJpdmF0ZToKICAg
ICAvLyBUaGUgc3R5bGVkIGVsZW1lbnQgaXMgZWl0aGVyIHRoZSBlbGVtZW50IHBhc3NlZCBpbnRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDQyYzg1Y2U4ODY0NjQzMzY1MzNhMmViZWM3
ZTQwODI3YzNhNDhmMjEuLmZmMDg4M2E1NWYwYjU5ZDcxYmE4MTIxMGMxZDNhOTIxMGIzYTkyOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC04NCwxNCArODQsMTQgQEAgcHVibGljOgog
ICAgIHN0cnVjdCBVbmljb2RlUmFuZ2U7CiAgICAgCiAgICAgLy8gT3B0aW9uYWwgcmV0dXJuIHZh
bHVlcyB0byByZXByZXNlbnQgZGVmYXVsdCBzdHJpbmcgZm9yIG1lbWJlcnMgb2YgRm9udEZhY2Uu
aAotICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGlj
X2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9Ci0gICAg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRp
b25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29t
cHV0ZVdlaWdodCgpKTsgfQotICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVs
bG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0KLSAgICBPcHRpb25hbDxGb250
U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1
czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7
IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJl
ID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFi
aWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcygpKTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFu
Z2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUg
PyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdl
Pj4+KG1fcmFuZ2VzKTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+
IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFp
bHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0
dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KLSAgICBPcHRpb25hbDxGb250TG9hZGluZ0Jl
aGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0
dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExv
YWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8Q1NTVmFsdWVMaXN0Kj4gZmFtaWxpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9
PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlv
bmFsPENTU1ZhbHVlTGlzdCo+PihtX2ZhbWlsaWVzLmdldCgpKTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9
PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21w
dXRlV2VpZ2h0KCkpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHN0
cmV0Y2goKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6
Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+
KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3Rk
OjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMuY29tcHV0ZVNsb3BlKCkpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8c3Rk
OjpvcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPj4obV9mb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzLmNvbXB1dGVGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkpOyB9CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4gcmFuZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGlj
X2Nhc3Q8c3RkOjpvcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQor
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpu
dWxsb3B0IDogc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPj4o
bV9mZWF0dXJlU2V0dGluZ3MpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGb250TG9hZGluZ0JlaGF2
aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6
OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAgc3RhdGljX2Nhc3Q8c3RkOjpvcHRpb25hbDxGb250
TG9hZGluZ0JlaGF2aW9yPj4obV9sb2FkaW5nQmVoYXZpb3IpOyB9CiAgICAgdm9pZCBzZXRXZWln
aHQoRm9udFNlbGVjdGlvblJhbmdlIHdlaWdodCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMud2VpZ2h0ID0gd2VpZ2h0OyB9CiAgICAgdm9pZCBzZXRTdHJldGNoKEZvbnRTZWxlY3Rpb25S
YW5nZSBzdHJldGNoKSB7IG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy53aWR0aCA9IHN0cmV0
Y2g7IH0KICAgICB2b2lkIHNldFN0eWxlKEZvbnRTZWxlY3Rpb25SYW5nZSBpdGFsaWMpIHsgbV9m
b250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlID0gaXRhbGljOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCA3YjQyODcxZDJiOTUzMzhjY2Y1Yzk2MWY5ODM0NDY2
MGNjZDEyZDI3Li44YWMxMjYwMDRlZWVmNzVhZjkyY2NiMGM3MzhhOGFhNThiMDRkMDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0
aWMgRm9udFNlbGVjdGlvblJlcXVlc3QgY29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KENTU1By
b3BlcnR5UGFyc2VySGVscGVycwogICAgIEFTU0VSVChzdHJldGNoU2VsZWN0aW9uVmFsdWUpOwog
CiAgICAgYXV0byBzdHlsZUtleXdvcmQgPSBmb250LnN0eWxlID8gZm9udC5zdHlsZS0+c3R5bGUg
OiBDU1NWYWx1ZU5vcm1hbDsKLSAgICBhdXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBbJl0gKCkg
LT4gT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7CisgICAgYXV0byBzdHlsZVNlbGVjdGlv
blZhbHVlID0gWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB7CiAg
ICAgICAgIGlmIChzdHlsZUtleXdvcmQgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoc3R5bGVLZXl3b3JkID09IENTU1ZhbHVl
SXRhbGljKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAppbmRleCAzMWMwMDA4MWNjNjQ4
Y2I3Y2E0MDFmYzNmNDUxMjAxMjg2ZDlhNmQ0Li5iNjFiZTdiZTI0NmZkOWNkMjE0ZmJkNWExMDgz
YjgyOTdiZTZhMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApAQCAtOTksNyAr
OTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFN0cmluZyBmYW1pbHlOYW1lRnJvbVByaW1p
dGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogCi0gICAgdXNpbmcgRm9udFNlbGVjdGlv
bktleSA9IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SZXF1ZXN0PjsKKyAgICB1c2luZyBGb250U2Vs
ZWN0aW9uS2V5ID0gc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uUmVxdWVzdD47CiAgICAgc3Ry
dWN0IEZvbnRTZWxlY3Rpb25LZXlIYXNoIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgRm9udFNlbGVjdGlvbktleSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvbnRTZWxlY3Rpb25LZXkmIGEsIGNv
bnN0IEZvbnRTZWxlY3Rpb25LZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCAxOGY5N2ZlZjdjNjk1YTFkM2I2ZWRlMzA1M2Zi
MGVhY2QyOGFhM2QxLi45ODZlMTg0Y2JlYTQ2NDMwNTlkZmYxNDNiY2U2OGIzOGFlYWM4OWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBA
IHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpmb250Q2FjaGVJbnZhbGlkYXRlZCgpCiAgICAgZGlzcGF0
Y2hJbnZhbGlkYXRpb25DYWxsYmFja3MoKTsKIH0KIAotT3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NT
Rm9udFNlbGVjdG9yOjpyZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKK3N0ZDo6b3B0
aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9udFNlbGVjdG9yOjpyZXNvbHZlR2VuZXJpY0ZhbWlseShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5TmFtZSkKIHsKICAgICBhdXRvIHBsYXRmb3JtUmVzdWx0ID0gRm9udERlc2NyaXB0aW9u
OjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5KGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKSwg
Zm9udERlc2NyaXB0aW9uLmNvbXB1dGVkTG9jYWxlKCksIGZhbWlseU5hbWUpOwogICAgIGlmICgh
cGxhdGZvcm1SZXN1bHQuaXNOdWxsKCkpCkBAIC0zMTAsNyArMzEwLDcgQEAgRm9udFJhbmdlcyBD
U1NGb250U2VsZWN0b3I6OmZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3IKICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1pbHlO
YW1lID09IG1fZm9udEZhbWlseU5hbWVzLmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFt
aWx5KTsKIAogICAgIEF0b21TdHJpbmcgZmFtaWx5Rm9yTG9va3VwID0gZmFtaWx5TmFtZTsKLSAg
ICBPcHRpb25hbDxGb250RGVzY3JpcHRpb24+IG92ZXJyaWRlRm9udERlc2NyaXB0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0aW9uPiBvdmVycmlkZUZvbnREZXNjcmlwdGlvbjsK
ICAgICBjb25zdCBGb250RGVzY3JpcHRpb24qIGZvbnREZXNjcmlwdGlvbkZvckxvb2t1cCA9ICZm
b250RGVzY3JpcHRpb247CiAgICAgYXV0byByZXNvbHZlQW5kQXNzaWduR2VuZXJpY0ZhbWlseSA9
IFsmXSgpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VuZXJpY0ZhbWlseU9wdGlvbmFsID0gcmVzb2x2
ZUdlbmVyaWNGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuaAppbmRleCA0MzQ3ZTg1YTE1NjIzNGE5M2NlYmVkMTQ3YzIzMjZj
MjFiNTFhZTg5Li44NTkwODY4NGIwY2UxNWFlYjg5YWU2ZWU4NTE2YjM3MTZlZDg5YmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSk7CisgICAgc3Rk
OjpvcHRpb25hbDxBdG9tU3RyaW5nPiByZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpOwogCiAgICAgLy8gQ1NTRm9udEZh
Y2U6OkNsaWVudAogICAgIHZvaWQgZm9udExvYWRlZChDU1NGb250RmFjZSYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggNDA2OTc5ODQ2N2RlOGE4MmVkMzQ1
MmY0MmRlNjRjMDMyY2FlMWEzMy4uZjlhMTg3NmEzMTBiM2JiNzVlOTY0ZWVhMTFiMWY2ZWFkODFi
M2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC0xMjQsNyArMTI0
LDcgQEAgcHJpdmF0ZToKICAgICBDU1NHcmFkaWVudFR5cGUgbV9ncmFkaWVudFR5cGU7CiAgICAg
Ym9vbCBtX3JlcGVhdGluZyB7IGZhbHNlIH07CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+
IG1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PGJvb2w+IG1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQ7CiB9OwogCiBjbGFzcyBDU1NMaW5l
YXJHcmFkaWVudFZhbHVlIGZpbmFsIDogcHVibGljIENTU0dyYWRpZW50VmFsdWUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDAwOTRjNjg0Y2RmMWI3YzU4MTk2
NTJiMzExNzkzZDBiNTFiYmM1NWUuLjM2NTFlZWIzYzhlNThhNmRmYmZmZmE5MWUyZTBjOTQzNzVl
NTZiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIFN0eWxlUnVsZUtleWZyYW1lczo6d3JhcHBlclJlbW92ZUtleWZyYW1l
KHVuc2lnbmVkIGluZGV4KQogICAgIG1fa2V5ZnJhbWVzLnJlbW92ZShpbmRleCk7CiB9CiAKLU9w
dGlvbmFsPHNpemVfdD4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRleChjb25z
dCBTdHJpbmcmIGtleSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTdHlsZVJ1bGVLZXlm
cmFtZXM6OmZpbmRLZXlmcmFtZUluZGV4KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogewogICAg
IHBhcnNlRGVmZXJyZWRSdWxlc0lmTmVlZGVkKCk7CiAgICAgYXV0byBrZXlzID0gQ1NTUGFyc2Vy
OjpwYXJzZUtleWZyYW1lS2V5TGlzdChrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNS
dWxlLmgKaW5kZXggYjQ4YjE1MjFhYmI1MzU5ZTA5OTc3ZDUwMTZkZjE4MDIzYzA2NTFlMi4uZDQ4
ODQ4YjVmN2ZmNGU1ODRlYmZjYzFjZTZlZTBmMWIwYTdkZTM2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBB
dG9tU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXRO
YW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQogCi0gICAgT3B0
aW9uYWw8c2l6ZV90PiBmaW5kS2V5ZnJhbWVJbmRleChjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRLZXlmcmFtZUluZGV4KGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdDsKIAogICAgIFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUtleWZyYW1lcygqdGhpcykpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGE1OTUyMTU5YjBk
ODUwYWVjMjI3NjM4ZGI3YzBhZTA5Yzc5YzJmODAuLjE4ZWNhOTFmMmUxNjcxYzk3YjVlYmQyODRk
NzU5ZTUxNzFiYmJhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cApAQCAtODMzLDIxICs4MzMsMjEgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVW
YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHByaW1pdGl2ZVVuaXRUeXBlKCkgIT0gQ1NTVW5pdFR5
cGU6OkNTU19DQUxDID8gbV92YWx1ZS5udW0gOiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7
CiB9CiAKLU9wdGlvbmFsPGJvb2w+IENTU1ByaW1pdGl2ZVZhbHVlOjppc1plcm8oKSBjb25zdAor
c3RkOjpvcHRpb25hbDxib29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsK
ICAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0K
IAotT3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxib29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNQb3NpdGl2ZSgpIGNvbnN0
CiB7CiAgICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxD
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3ZhbHVlLm51bSA+
IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IENTU1ByaW1pdGl2ZVZhbHVlOjppc05lZ2F0aXZlKCkg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTmVnYXRpdmUo
KSBjb25zdAogewogICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpD
U1NfQ0FMQykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTg1OSw3ICs4NTksNyBA
QCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0NlbnRlclBvc2l0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gdmFsdWVJRCgpID09IENTU1ZhbHVlQ2VudGVyIHx8IGRvdWJsZVZhbHVlKENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSkgPT0gNTA7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5p
dFR5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRv
dWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CiB7
CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHByaW1pdGl2
ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHJl
cXVlc3RlZFVuaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggZmUzMTY0MWIzODRiY2YwZGY1YjI3N2Ni
NzUxOTAyOGU1YmQ0OGVjZS4uZWM1ZjY1NWY0YzllZmQ3NjcwNzE4MTZhMjRhODU2YTY5YWNkMzMz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTE1Niw5ICsxNTYs
OSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Q7CiAKICAgICAvLyBU
aGVzZSByZXR1cm4gbnVsbG9wdCBmb3IgY2FsYywgZm9yIHdoaWNoIHJhbmdlIGNoZWNraW5nIGlz
IG5vdCBkb25lIGF0IHBhcnNlIHRpbWU6IDxodHRwczovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1
ZXMvI2NhbGMtcmFuZ2U+LgotICAgIE9wdGlvbmFsPGJvb2w+IGlzWmVybygpIGNvbnN0OwotICAg
IE9wdGlvbmFsPGJvb2w+IGlzUG9zaXRpdmUoKSBjb25zdDsKLSAgICBPcHRpb25hbDxib29sPiBp
c05lZ2F0aXZlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1plcm8oKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzUG9zaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzTmVnYXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzQ2VudGVyUG9z
aXRpb24oKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIHZhbHVl
KENTU1VuaXRUeXBlIHR5cGUpIGNvbnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZG91YmxlVmFsdWUo
dHlwZSkpOyB9CkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0ZToKICAgICBDU1NVbml0VHlwZSBw
cmltaXRpdmVVbml0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1VuaXRUeXBl
PihtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQogICAgIHZvaWQgc2V0UHJpbWl0aXZlVW5pdFR5cGUo
Q1NTVW5pdFR5cGUgdHlwZSkgeyBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHR5cGUpOyB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlSW50ZXJu
YWwoQ1NTVW5pdFR5cGUgdGFyZ2V0VW5pdFR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKENTU1VuaXRUeXBlIHRhcmdldFVuaXRUeXBlKSBj
b25zdDsKIAogICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50
ZWRGb250RmFjZS5jcHAKaW5kZXggYTY0YWQ1YWUyM2I2NjU5ZWRlYmIwMzE3ZDYwMDFhYTcwYmIx
MzYzZC4uMjExZDIzNWUwOGI1Mjk1NjJkYWJjNmYwNjFlMDdjY2JmYzYwYzcxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3Jlc3VsdCAmJiBtX3Jlc3VsdC52YWx1ZSgpICYm
IG1fcmVzdWx0LnZhbHVlKCktPmlzSW50ZXJzdGl0aWFsKCk7CiAgICAgfQogCi0gICAgbXV0YWJs
ZSBPcHRpb25hbDxSZWZQdHI8Rm9udD4+IG1fcmVzdWx0OyAvLyBDYWNoZXMgbnVsbHB0ciB0b28K
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2Fj
aGVzIG51bGxwdHIgdG9vCiAgICAgbXV0YWJsZSBSZWY8Q1NTRm9udEZhY2U+IG1fZm9udEZhY2U7
CiAgICAgRm9udERlc2NyaXB0aW9uIG1fZm9udERlc2NyaXB0aW9uOwogICAgIGJvb2wgbV9zeW50
aGV0aWNCb2xkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDZiNDM4OTZk
MzhiNjZjMTRhMDY1ODBhZjZkYTA5ZGFjNDQ4ZjVjMTkuLmEyNTY1YmU2NWQxNWEzNTYxYzRkMDAz
OTU5MGEzZDRmYjg5NjFiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTczLDcgKzczLDcgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBDU1NJbXAKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAot
UmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
c0NsZWFuT3JpZ2luKQorUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mIGlzQ2xlYW5PcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRp
b24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4pKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgQ1NTU3R5
bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRz
LCBDU1NJbXBvcnRSdWxlKgogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwog
fQogCi1DU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYgY29udGVudHMsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlz
T3JpZ2luQ2xlYW4pCitDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCwgY29uc3Qgc3RkOjpvcHRp
b25hbDxib29sPiYgaXNPcmlnaW5DbGVhbikKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250
ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCiAg
ICAgLCBtX2lzT3JpZ2luQ2xlYW4oaXNPcmlnaW5DbGVhbikKQEAgLTI4Niw3ICsyODYsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4
KQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6
YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRp
b25hbDx1bnNpZ25lZD4gaW5kZXgpCitFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFk
ZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgYXV0byB0ZXh0ID0gbWFrZVN0cmluZyhz
ZWxlY3RvciwgIiB7ICIsIHN0eWxlLCAhc3R5bGUuaXNFbXB0eSgpID8gIiAiIDogIiIsICd9Jyk7
CiAgICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LCBpbmRleC52YWx1
ZV9vcihsZW5ndGgoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggZTdiZGUz
YTRiZGQwZmU3ZWIzNjlhNGNkYmFkYzM1YzExOTk4NmU3NC4uMmQ1MDRiNjE2ZjViZTVkZjNjYzll
NDVhMDI0NTZhMmZjY2MwMzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFNjb3BlOwogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1
YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+
IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1
bGUgPSAwKTsKLSAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBp
c09yaWdpbkNsZWFuID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hl
ZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4gPSBzdGQ6Om51bGxvcHQpOwog
ICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYsIEVsZW1lbnQmIG93bmVyLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24pOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2Vy
dFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAg
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRl
eCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGluZGV4KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGlu
ZGV4KSB7IHJldHVybiBkZWxldGVSdWxlKGluZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NS
dWxlTGlzdC4KQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU1N0
eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJS
dWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUq
IG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCk7Ci0gICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwg
Ym9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+Jik7CisgICAgQ1NT
U3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmluZyB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNEaXNhYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGF0ZWRSdWxlcyB7IGZhbHNlIH07
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0cjxN
ZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
aW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggNDUxNjljNGQ5MGJkY2I5ZTVhZTA4YzU0YTVjMWVm
YmYxNmYxM2Q4YS4uM2ViOGYxY2I1ZDIyMWIyNDA5ZGMyYWU3MTc4YjY0ZDk3NDY0NWM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC02NCwyMCAr
NjQsMjAgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlIGZp
bmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGludCBzdGVwcywgT3B0aW9uYWw8U3RlcHNUaW1p
bmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCisgICAgc3RhdGljIFJlZjxD
U1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShpbnQgc3RlcHMsIHN0ZDo6b3B0aW9u
YWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoc3RlcHMsIHN0ZXBQb3NpdGlvbikpOwogICAgIH0KIAogICAgIGludCBudW1iZXJPZlN0ZXBz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQotICAgIE9wdGlvbmFsPFN0ZXBzVGltaW5nRnVu
Y3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVw
UG9zaXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQ
b3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0K
IAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoaW50IHN0ZXBzLCBPcHRpb25hbDxTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24+IHN0ZXBQb3NpdGlvbikKKyAgICBDU1NTdGVwc1Rp
bWluZ0Z1bmN0aW9uVmFsdWUoaW50IHN0ZXBzLCBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGltaW5nRnVu
Y3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQogICAgICAgICA6IENTU1ZhbHVlKFN0
ZXBzVGltaW5nRnVuY3Rpb25DbGFzcykKICAgICAgICAgLCBtX3N0ZXBzKHN0ZXBzKQogICAgICAg
ICAsIG1fc3RlcFBvc2l0aW9uKHN0ZXBQb3NpdGlvbikKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0
ZToKICAgICB9CiAKICAgICBpbnQgbV9zdGVwczsKLSAgICBPcHRpb25hbDxTdGVwc1RpbWluZ0Z1
bmN0aW9uOjpTdGVwUG9zaXRpb24+IG1fc3RlcFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKIH07CiAK
IGNsYXNzIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFs
dWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgK
aW5kZXggNjhkMmI2MDNhOTgwY2IwZDEyZWJhNzhhMzdhNjJlMmU2MjhhYWZmOC4uOGM4NWI3ZmFj
ZGE3N2RlNTUwNDAzNTY4ZGM5MTJkOTE2MjdkM2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJl
bmRlclZpZXc7CiAKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgewogcHVibGljOgot
ICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENT
U1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHls
ZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8Q1NTUHJv
cGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQsIFJlbmRlclN0eWxlKiB2
aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSA9IG51bGxwdHIpCiAgICAgICAgIDogbV9z
dHlsZShzdHlsZSkKICAgICAgICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwg
bV9wYXJlbnRTdHlsZShwYXJlbnRTdHlsZSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoem9vbSA+IDApOwogICAgIH0KIAotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJl
bmRlclZpZXcsIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3Rk
OjpudWxsb3B0KQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIHN0ZDo6b3B0aW9u
YWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQpCiAgICAg
ICAgIDogbV9zdHlsZShzdHlsZSkKICAgICAgICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAg
ICAgICAgICwgbV9wYXJlbnRTdHlsZShwYXJlbnRTdHlsZSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLCBt
X3Jvb3RTdHlsZSwgbV9wYXJlbnRTdHlsZSwgbV9yZW5kZXJWaWV3LCBuZXdab29tLCBtX3Byb3Bl
cnR5VG9Db21wdXRlKTsKICAgICB9CiAKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNv
cHlXaXRoQWRqdXN0ZWRab29tQW5kUHJvcGVydHlUb0NvbXB1dGUoZmxvYXQgem9vbSwgT3B0aW9u
YWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUpIGNvbnN0CisgICAgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSBjb3B5V2l0aEFkanVzdGVkWm9vbUFuZFByb3BlcnR5VG9Db21wdXRl
KGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1
dGUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YShtX3N0eWxlLCBtX3Jvb3RTdHlsZSwgbV9wYXJlbnRTdHlsZSwgbV9yZW5kZXJWaWV3LCB6b29t
LCBwcm9wZXJ0eVRvQ29tcHV0ZSk7CiAgICAgfQpAQCAtOTUsOCArOTUsOCBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFJlbmRlclN0eWxlKiBtX3BhcmVudFN0eWxlIHsgbnVsbHB0ciB9OwogICAgIFJl
bmRlclN0eWxlKiBtX3ZpZXdwb3J0RGVwZW5kZW5jeURldGVjdGlvblN0eWxlIHsgbnVsbHB0ciB9
OwogICAgIGNvbnN0IFJlbmRlclZpZXcqIG1fcmVuZGVyVmlldyB7IG51bGxwdHIgfTsKLSAgICBP
cHRpb25hbDxmbG9hdD4gbV96b29tOwotICAgIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IG1fcHJv
cGVydHlUb0NvbXB1dGU7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV96b29tOworICAgIHN0
ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gbV9wcm9wZXJ0eVRvQ29tcHV0ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYzM1NGU5
NzgyNzNiYTU2ZTJmZmI1NDdmZjM5MTgzMzljZDBmY2NhZi4uNzU2NjQ3NTIzZmJkNjk2YjIyODAy
NGVkM2U0YWYyMjYwOWRjZDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5v
cmcvZ2VvbWV0cnkvI2RvbS1kb21tYXRyaXhyZWFkb25seS1kb21tYXRyaXhyZWFkb25seQotRXhj
ZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5n
LCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBE
T01NYXRyaXg6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYg
aW5pdCkKIHsKICAgICBpZiAoIWluaXQpCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERP
TU1hdHJpeCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojp0
cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCwgZG91YmxlIHR5LCBkb3VibGUgdHopCiB9CiAKIC8vIGh0
dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dlb21ldHJ5LyNkb20tZG9tbWF0cml4LXNjYWxlc2VsZgot
UmVmPERPTU1hdHJpeD4gRE9NTWF0cml4OjpzY2FsZVNlbGYoZG91YmxlIHNjYWxlWCwgT3B0aW9u
YWw8ZG91YmxlPiBzY2FsZVksIGRvdWJsZSBzY2FsZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUg
b3JpZ2luWSwgZG91YmxlIG9yaWdpblopCitSZWY8RE9NTWF0cml4PiBET01NYXRyaXg6OnNjYWxl
U2VsZihkb3VibGUgc2NhbGVYLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZLCBkb3VibGUg
c2NhbGVaLCBkb3VibGUgb3JpZ2luWCwgZG91YmxlIG9yaWdpblksIGRvdWJsZSBvcmlnaW5aKQog
ewogICAgIGlmICghc2NhbGVZKQogICAgICAgICBzY2FsZVkgPSBzY2FsZVg7CkBAIC0xODIsNyAr
MTgyLDcgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4OjpzY2FsZTNkU2VsZihkb3VibGUgc2Nh
bGUsIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3JpZ2kKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMu
Znh0Zi5vcmcvZ2VvbWV0cnkvI2RvbS1kb21tYXRyaXgtcm90YXRlc2VsZgotUmVmPERPTU1hdHJp
eD4gRE9NTWF0cml4Ojpyb3RhdGVTZWxmKGRvdWJsZSByb3RYLCBPcHRpb25hbDxkb3VibGU+IHJv
dFksIE9wdGlvbmFsPGRvdWJsZT4gcm90WikKK1JlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90
YXRlU2VsZihkb3VibGUgcm90WCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJvdFksIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiByb3RaKQogewogICAgIGlmICghcm90WSAmJiAhcm90WikgewogICAgICAg
ICByb3RaID0gcm90WDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAppbmRleCAzOTgxNmMxZDY2MzllYmZl
ZTJiYmM2YTgxZGUzOGRjMmIzNTI2ZTZlLi5kNzU2ODQwNTg4YjAxYjA5OTUxMWY0NjU1NWRjMGE0
YjFlMTgwYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERPTU1hdHJpeCA6IHB1YmxpYyBET01N
YXRyaXhSZWFkT25seSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01N
YXRyaXg+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPFZhcmlhbnQ8
U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
RE9NTWF0cml4Pj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYpOwogCiAgICAgc3RhdGljIFJlZjxE
T01NYXRyaXg+IGNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBJczJE
IGlzMkQpCiAgICAgewpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeD4+IG11bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5p
dCYmIG90aGVyKTsKICAgICBSZWY8RE9NTWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9
IDAsIGRvdWJsZSB0eSA9IDAsIGRvdWJsZSB0eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNj
YWxlU2VsZihkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6
Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBv
cmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2Fs
ZVNlbGYoZG91YmxlIHNjYWxlWCA9IDEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBz
dGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJs
ZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBz
Y2FsZTNkU2VsZihkb3VibGUgc2NhbGUgPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBv
cmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKLSAgICBSZWY8RE9NTWF0cml4PiByb3Rh
dGVTZWxmKGRvdWJsZSByb3RYID0gMCwgT3B0aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxs
b3B0LCBPcHRpb25hbDxkb3VibGU+IHJvdFogPSBzdGQ6Om51bGxvcHQpOyAvLyBBbmdsZXMgYXJl
IGluIGRlZ3JlZXMuCisgICAgUmVmPERPTU1hdHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9
IDAsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6bnVsbG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVl
cy4KICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVGcm9tVmVjdG9yU2VsZihkb3VibGUgeCA9IDAs
IGRvdWJsZSB5ID0gMCk7CiAgICAgUmVmPERPTU1hdHJpeD4gcm90YXRlQXhpc0FuZ2xlU2VsZihk
b3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwgZG91YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAw
KTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiBza2V3WFNlbGYo
ZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4MkRJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4MkRJbml0LmgKaW5kZXggYzg3MWM0OGZmOTRjOGM0YzAyNTNmYWFkNjhlYmVjYzI5ZjE4
YTlkZC4uZjM5ZDI3OTU4NTFkYmU2MTc5NTZkOGY0ZWI1Mjk4MjZhOWYxZTQ1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeDJESW5pdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01NYXRyaXgyREluaXQuaApAQCAtMzAsMTggKzMwLDE4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBET01NYXRyaXgyREluaXQgewotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gYTsKLSAgICBPcHRpb25hbDxkb3VibGU+IGI7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBjOwot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gZDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGU7Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBmOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTExOwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gbTEyOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTIxOwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gbTIyOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbTQxOwotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gbTQyOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBiOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBlOworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBmOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtMTE7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG0xMjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbTIxOwor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtMjI7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IG00MTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbTQyOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXhJbml0LmgKaW5kZXggZjViNTkzNGMwMzljNmJlNTNhNDk2NDcwYjBlMTcxOGJm
MTI0ZjNlOC4uMTY4ZGIzZDNiYjczYTE4NTczNDM3OTdlNzYxMGU1YzY5ZTk1NzdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeEluaXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4SW5pdC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBET01NYXRy
aXhJbml0IDogRE9NTWF0cml4MkRJbml0IHsKICAgICBkb3VibGUgbTM0IHsgMCB9OwogICAgIGRv
dWJsZSBtNDMgeyAwIH07CiAgICAgZG91YmxlIG00NCB7IDEgfTsKLSAgICBPcHRpb25hbDxib29s
PiBpczJEOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXMyRDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFk
T25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCmluZGV4
IGMyNmNhNDYyYzg4NWJiYTQ4NzE1ZmYzYzU0ZTA4ZGNhODVmYTBmNDguLjc1NDQ5Y2ZmNjExZjgw
N2VmNjJlMTMzMmRjMzBkZGViN2U3ZDRmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRE9NTWF0cml4UmVhZE9ubHkpOwogCiAvLyBodHRwczov
L2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tLWRvbW1hdHJpeHJlYWRvbmx5LWRvbW1hdHJp
eHJlYWRvbmx5Ci1FeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBET01NYXRyaXhS
ZWFkT25seTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8ZG91YmxlPj4+JiYgaW5pdCkK
K0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IERPTU1hdHJpeFJlYWRPbmx5Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3Rk
OjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPGRvdWJsZT4+PiYmIGluaXQpCiB7CiAg
ICAgaWYgKCFpbml0KQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01NYXRyaXhSZWFk
T25seSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERP
TU1hdHJpeFJlYWRPbmx5OjptdWx0aXBseShET01NYXRyaXhJbml0JiYgb3RoZXIpIGMKICAgICBy
ZXR1cm4gbWF0cml4LT5tdWx0aXBseVNlbGYoV1RGTW92ZShvdGhlcikpOwogfQogCi1SZWY8RE9N
TWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6c2NhbGUoZG91YmxlIHNjYWxlWCwgT3B0aW9uYWw8
ZG91YmxlPiBzY2FsZVksIGRvdWJsZSBzY2FsZVosIGRvdWJsZSBvcmlnaW5YLCBkb3VibGUgb3Jp
Z2luWSwgZG91YmxlIG9yaWdpblopCitSZWY8RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6
c2NhbGUoZG91YmxlIHNjYWxlWCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNjYWxlWSwgZG91Ymxl
IHNjYWxlWiwgZG91YmxlIG9yaWdpblgsIGRvdWJsZSBvcmlnaW5ZLCBkb3VibGUgb3JpZ2luWikK
IHsKICAgICBhdXRvIG1hdHJpeCA9IGNsb25lQXNET01NYXRyaXgoKTsKICAgICByZXR1cm4gbWF0
cml4LT5zY2FsZVNlbGYoc2NhbGVYLCBzY2FsZVksIHNjYWxlWiwgb3JpZ2luWCwgb3JpZ2luWSwg
b3JpZ2luWik7CkBAIC0zMDMsNyArMzAzLDcgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVh
ZE9ubHk6OnNjYWxlM2QoZG91YmxlIHNjYWxlLCBkb3VibGUgb3JpZ2luWCwgZG91YmxlIG8KICAg
ICByZXR1cm4gbWF0cml4LT5zY2FsZTNkU2VsZihzY2FsZSwgb3JpZ2luWCwgb3JpZ2luWSwgb3Jp
Z2luWik7CiB9CiAKLVJlZjxET01NYXRyaXg+IERPTU1hdHJpeFJlYWRPbmx5Ojpyb3RhdGUoZG91
YmxlIHJvdFgsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSwgT3B0aW9uYWw8ZG91YmxlPiByb3RaKQor
UmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVhZE9ubHk6OnJvdGF0ZShkb3VibGUgcm90WCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHJvdFksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RaKQogewog
ICAgIGF1dG8gbWF0cml4ID0gY2xvbmVBc0RPTU1hdHJpeCgpOwogICAgIHJldHVybiBtYXRyaXgt
PnJvdGF0ZVNlbGYocm90WCwgcm90WSwgcm90Wik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhS
ZWFkT25seS5oCmluZGV4IDhmOWVlZTExNjM4ZmRhNjIzNjdkMTFiN2U5YzZkYTkwZjZiMGUwZTcu
LmVjY2UzZjAyNjMwZWIxY2ExZTYwNzE2YzU4ZTJiMzBmMmVmNGM4MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBET01Qb2lu
dEluaXQ7CiBjbGFzcyBET01NYXRyaXhSZWFkT25seSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBSZWZDb3VudGVkPERPTU1hdHJpeFJlYWRPbmx5PiB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChET01NYXRyaXhSZWFkT25seSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIFZlY3Rvcjxkb3VibGU+Pj4mJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywgVmVjdG9yPGRv
dWJsZT4+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgSXMyRCB7IE5vLCBZZXMgfTsKICAgICBzdGF0
aWMgUmVmPERPTU1hdHJpeFJlYWRPbmx5PiBjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgSXMyRCBpczJEKQpAQCAtMTAxLDkgKzEwMSw5IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gbXVsdGlwbHkoRE9NTWF0cml4SW5pdCYmIG90aGVy
KSBjb25zdDsKICAgICBSZWY8RE9NTWF0cml4PiBmbGlwWCgpOwogICAgIFJlZjxET01NYXRyaXg+
IGZsaXBZKCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gc2NhbGUoZG91YmxlIHNjYWxlWCA9IDEsIE9w
dGlvbmFsPGRvdWJsZT4gc2NhbGVZID0gc3RkOjpudWxsb3B0LCBkb3VibGUgc2NhbGVaID0gMSwg
ZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9IDAsIGRvdWJsZSBvcmlnaW5aID0g
MCk7CisgICAgUmVmPERPTU1hdHJpeD4gc2NhbGUoZG91YmxlIHNjYWxlWCA9IDEsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBk
b3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAw
KTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2FsZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBv
cmlnaW5YID0gMCwgZG91YmxlIG9yaWdpblkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAg
IFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4g
cm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiByb3RaID0gc3RkOjpudWxsb3B0
KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShk
b3VibGUgcm90WCA9IDAsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByb3RZID0gc3RkOjpudWxsb3B0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6bnVsbG9wdCk7IC8vIEFuZ2xlcyBh
cmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVGcm9tVmVjdG9yKGRvdWJs
ZSB4ID0gMCwgZG91YmxlIHkgPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVBeGlzQW5n
bGUoZG91YmxlIHggPSAwLCBkb3VibGUgeSA9IDAsIGRvdWJsZSB6ID0gMCwgZG91YmxlIGFuZ2xl
ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCiAgICAgUmVmPERPTU1hdHJpeD4gc2tld1go
ZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaAppbmRleCA5ODhiZjk3ZDA3YjQyZjM5
MTY2MmIzODY3MGQ0Y2YwN2M2Njk3MzAyLi5mZDg3YzkwMGIzNjU1ZmFmZTcxOWVmZDBjYWRjNDAz
YzRkNzI1Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJ
bmxpbmVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIGJvb2wgaXNDU1MyMVdlaWdodChpbnQg
d2VpZ2h0KQogICAgIHJldHVybiAhKCh3ZWlnaHQgJSAxMDApIHx8IHdlaWdodCA8IDEwMCB8fCB3
ZWlnaHQgPiA5MDApOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdo
dEtleXdvcmQoRm9udFNlbGVjdGlvblZhbHVlIHdlaWdodCkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PENTU1ZhbHVlSUQ+IGZvbnRXZWlnaHRLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQp
CiB7CiAgICAgaWYgKHdlaWdodCA9PSBub3JtYWxXZWlnaHRWYWx1ZSgpKQogICAgICAgICByZXR1
cm4gQ1NTVmFsdWVOb3JtYWw7CkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBPcHRpb25hbDxDU1NW
YWx1ZUlEPiBmb250V2VpZ2h0S2V5d29yZChGb250U2VsZWN0aW9uVmFsdWUgd2VpZ2h0KQogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9u
VmFsdWU+IGZvbnRXZWlnaHRWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJRCB2YWx1
ZSkKIHsKICAgICBzd2l0Y2ggKHZhbHVlKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAg
LTcyLDcgKzcyLDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFdl
aWdodFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgfQogfQogCi1pbmxpbmUgT3B0aW9uYWw8
Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNo
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZv
bnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQogewogICAgIGlmIChzdHJldGNoID09IHVsdHJhQ29u
ZGVuc2VkU3RyZXRjaFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVVsdHJhQ29uZGVu
c2VkOwpAQCAtOTUsNyArOTUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0
cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRT
dHJldGNoVmFsdWUoQ1NTVmFsdWVJRCB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAg
IHN3aXRjaCAodmFsdWUpIHsKICAgICBjYXNlIENTU1ZhbHVlVWx0cmFDb25kZW5zZWQ6CkBAIC0x
MjEsNyArMTIxLDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0
cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQogICAgIH0KIH0KIAotaW5saW5lIE9wdGlvbmFs
PENTU1ZhbHVlSUQ+IGZvbnRTdHlsZUtleXdvcmQoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiBzdHlsZSwgRm9udFN0eWxlQXhpcyBheGlzKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NTVmFs
dWVJRD4gZm9udFN0eWxlS2V5d29yZChzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4g
c3R5bGUsIEZvbnRTdHlsZUF4aXMgYXhpcykKIHsKICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLnZh
bHVlKCkgPT0gbm9ybWFsSXRhbGljVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9y
bWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGIz
NjA5YzJlODEyZTg3NWY3MDE5ZmI4MzliYjA3MWMwOWRmMjkyNmQuLmE0N2IyZmU1NDlhODk0MTRh
MjA3ODY0YWFiZTg5N2QwN2E1OTcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNw
ZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVk
aQogICAgIHJldHVybiBjb21wYXJlVmFsdWUod2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRv
clZhbHVlKCksIGhlaWdodCAqIGFzcGVjdFJhdGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUp
CiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHN0YXRpYyBib29sIGdyaWRFdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtCiAg
ICAgcmV0dXJuIHplcm9FdmFsdWF0ZSh2YWx1ZSwgb3ApOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
ZG91YmxlPiBjb21wdXRlTGVuZ3RoKENTU1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBjb21wdXRlTGVuZ3RoKENTU1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJp
Y3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKQogewog
ICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTc0MCw3ICs3NDAsNyBAQCBzdGF0aWMgYm9vbCBhbnlIb3ZlckV2YWx1
YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsCiBz
dGF0aWMgYm9vbCBwb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCiB7
CiAgICAgYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICBhdXRvIHBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6
IE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CisgICAgYXV0byBwb2ludGVyQ2hh
cmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UgPSBwYWdlID8gcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkucG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNl
KCkgOiBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5
UG9pbnRpbmdEZXZpY2UgPT0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggZDFhM2Y3YTdkMGEwNDE5NGFhZTg3MWY0
YjU4MDgxZGZmZDNiNzIwOC4uODQ4ZjhjNDQ2NWY1MTAwOGMzNjIwNTk0YzZjMDAwNWQ5NDY1NWMy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtOTAsNyArOTAsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgY29uc3QgU2VsZWN0b3JDaGVja2VyOjpNb2RlIHJlc29sdmluZ01v
ZGU7CiAgICAgICAgIFBzZXVkb0lkIHBzZXVkb0lkIHsgUHNldWRvSWQ6Ok5vbmUgfTsKLSAgICAg
ICAgT3B0aW9uYWw8U3R5bGVTY3JvbGxiYXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U3R5bGVTY3JvbGxiYXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGU7CiAgICAg
ICAgIEF0b21TdHJpbmcgbmFtZUZvckhpZ2h0bGlnaHRQc2V1ZG9FbGVtZW50OwogICAgICAgICBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBpc01h
dGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5jcHAKaW5kZXggYzEzN2M1OTgxZjc3ZWVmNTJlY2E2NTNiYjhmOWFlNGEwZWU2ZWY3
Ni4uNmY2Y2U0MWQ5NzFmYTI0MTUxNWYwYmNlNDRlZTVmODBmNDNiZGFkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBTdHJpbmcgU3R5
bGVQcm9wZXJ0aWVzOjpnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkg
Y29uc3QKICAgICB9CiB9CiAKLU9wdGlvbmFsPENvbG9yPiBTdHlsZVByb3BlcnRpZXM6OnByb3Bl
cnR5QXNDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAorc3RkOjpvcHRpb25hbDxD
b2xvcj4gU3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSkgY29uc3QKIHsKICAgICBhdXRvIGNvbG9yVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVl
KHByb3BlcnR5KTsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVlKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAppbmRleCAwMjY1YmFkYjk5YzY1OGViYjc1
OWNhYjVlMDIzZDcwZDg0YTM3NzAyLi5iMDIxYWViN2MyMDM3MGM5ZmMxN2JlNWZiNGM1ZmY2ZTQx
N2ZiN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0xMTUsNyArMTE1
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIE9wdGlvbmFsPENvbG9yPiBwcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxDb2xvcj4gcHJvcGVydHlB
c0NvbG9yKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTU1ZhbHVl
SUQgcHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKICAgICBib29sIHBy
b3BlcnR5SXNJbXBvcnRhbnQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlUGFyc2VyLmNwcAppbmRl
eCBjMDdkZjdhMWI2NjE5N2Q0YjUxOGY5YjU0NGFhOGYxYmE2ZDZjODY0Li42MTAwYmRjODJiMzQw
OGU0NDdiM2UzZDEwOGUzOGNhNmI0YzEyYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvY2FsYy9DU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9jYWxjL0NTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlci5jcHAKQEAgLTExMCw3ICsx
MTAsNyBAQCBib29sIENTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VDYWxjRnVuY3Rp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLAogCiAgICAgLy8gImFyZ3VtZW50cyIgcmVm
ZXJzIHRvIHRoaW5ncyBiZXR3ZWVuIGNvbW1hcy4KICAgICB1bnNpZ25lZCBtaW5Bcmd1bWVudENv
dW50ID0gMTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbWF4QXJndW1lbnRDb3VudDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtYXhBcmd1bWVudENvdW50OwogCiAgICAgc3dpdGNoIChm
dW5jdGlvbklEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU1pbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNPcGVyYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9jYWxjL0NTU0NhbGNPcGVyYXRpb25Ob2RlLmNwcAppbmRleCA5YjdlNzQ3ODk3ZDJkMmY4
YTM1ODc1ODJlNTRiNDJkMjM1MDZkOWY4Li42MWJjZDcxNWNhZWJlN2QzMGE2NzVlZjQ2MzA3ZTZi
YmI1NzM1N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvY2FsYy9DU1NDYWxjT3Bl
cmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJh
dGlvbk5vZGUuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgUmVmUHRyPENTU0NhbGNPcGVyYXRpb25O
b2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y3JlYXRlTWluT3JNYXhPckNsYW1wKENhbGNPcGUK
ICAgICBBU1NFUlQob3AgPT0gQ2FsY09wZXJhdG9yOjpNaW4gfHwgb3AgPT0gQ2FsY09wZXJhdG9y
OjpNYXggfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCk7CiAgICAgQVNTRVJUX0lNUExJRVMo
b3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCwgdmFsdWVzLnNpemUoKSA9PSAzKTsKIAotICAgIE9w
dGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVnb3J5ID0gc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8Q2FsY3VsYXRpb25DYXRlZ29yeT4gY2F0ZWdvcnkgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykgewogICAgICAgICBhdXRvIHZhbHVl
Q2F0ZWdvcnkgPSByZXNvbHZlZFR5cGVGb3JNaW5Pck1heE9yQ2xhbXAodmFsdWUtPmNhdGVnb3J5
KCksIGRlc3RpbmF0aW9uQ2F0ZWdvcnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlci5jcHAKaW5kZXggZmE1ZTczMDg0ZTM0NjE5ZjljMTI2ZWQ0NTlhZjAwZGZlMzUyMjA1YS4u
NDA2ZGI4YzhkZTVlMzRlZmNjZTAxMGY4MGI3ZGRjY2I3ZjIxMTQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcApAQCAtMTE2LDEyICsxMTYsMTIgQEAgQ29sb3IgQ1NT
UGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3Ioa2V5d29yZCwgeyB9KTsKIH0KIAot
T3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENTU1BhcnNlcjo6cGFyc2VOYW1lZENvbG9yKFN0cmlu
Z1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyOjpw
YXJzZU5hbWVkQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIENTU1BhcnNl
ckZhc3RQYXRoczo6cGFyc2VOYW1lZENvbG9yKHN0cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBDU1NQYXJzZXI6OnBhcnNlSGV4Q29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCitz
dGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXI6OnBhcnNlSGV4Q29sb3IoU3Ry
aW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VI
ZXhDb2xvcihzdHJpbmcpOwogfQpAQCAtMTU1LDcgKzE1NSw3IEBAIENTU1BhcnNlcjo6UGFyc2VS
ZXN1bHQgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRlY2xh
cmF0aW9uCiAgICAgcmV0dXJuIENTU1BhcnNlckltcGw6OnBhcnNlVmFsdWUoJmRlY2xhcmF0aW9u
LCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgbV9jb250ZXh0KTsKIH0KIAotT3B0aW9u
YWw8Q1NTU2VsZWN0b3JMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPENTU1NlbGVjdG9yTGlzdD4gQ1NTUGFyc2VyOjpwYXJz
ZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHJldHVybiBwYXJzZUNTU1Nl
bGVjdG9yKENTU1Rva2VuaXplcihzdHJpbmcpLnRva2VuUmFuZ2UoKSwgbV9jb250ZXh0LCBudWxs
cHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCmluZGV4IDYwZjE0ZDc4
YzUxMTdlZTEyMTU2ZWMzZWY0NDY2NDFjMWNmOWMyMGMuLmM5OGM5ZTFhNWU1NzhkYzlkYWQzYWUz
NmE5YTQ3YmEzYzhmMjdkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApA
QCAtODUsMTQgKzg1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNl
RGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVj
bGFyYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgRWxlbWVudCopOwogCi0gICAgT3B0aW9uYWw8
Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhD
U1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYs
IGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBDb2xvciBwYXJzZVN5c3RlbUNvbG9y
KFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VO
YW1lZENvbG9yKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcpOwog
CiBwcml2YXRlOgogICAgIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYsIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggNTM0MjYw
MTY3NDk1ZTg2MzAxNjBkMGJmMTY5NzczNGI3OGE3OWI4MC4uMzRkMWQ0NWYzYTNiNGJhMDc1Nzlm
Njk2MzM5YWE1YTdkMWM5Y2M4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQg
ewogICAgIFVSTCBiYXNlVVJMOwogICAgIFN0cmluZyBjaGFyc2V0OwogICAgIENTU1BhcnNlck1v
ZGUgbW9kZSB7IEhUTUxTdGFuZGFyZE1vZGUgfTsKLSAgICBPcHRpb25hbDxTdHlsZVJ1bGVUeXBl
PiBlbmNsb3NpbmdSdWxlVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVu
Y2xvc2luZ1J1bGVUeXBlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwogCiAg
ICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcApp
bmRleCBjZGI1ZjUwMzQ2NmVlY2E5NmFmMDM4NjE3ZmVmZDdmMWZiZWUyNGFmLi45MWI0YjZiYTU1
ZTRmYzBmZDU5NThjNjMyOTkzNWRkMmViZmYyMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgc3Rh
dGljIGludCBwYXJzZURvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENo
YXJhY3RlclR5cGUqIGVuZCwgY28KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShj
b25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNv
bnN0IGNoYXIgdGVybWluYXRvciwgQ1NTVW5pdFR5cGUmIGV4cGVjdCkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPHVpbnQ4X3Q+IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY29uc3QgQ2hhcmFjdGVy
VHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1p
bmF0b3IsIENTU1VuaXRUeXBlJiBleHBlY3QpCiB7CiAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y3VycmVudCA9IHN0cmluZzsKICAgICBkb3VibGUgbG9jYWxWYWx1ZSA9IDA7CkBAIC0zMzQsNyAr
MzM0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVGVudGhBbHBoYShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHJpbmcsIGNvbnN0IGludCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBPcHRpb25hbDx1aW50OF90PiBwYXJzZUFscGhh
VmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSog
ZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8
dWludDhfdD4gcGFyc2VBbHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNv
bnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yKQogewogICAgIHdo
aWxlIChzdHJpbmcgIT0gZW5kICYmIGlzSFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KCpzdHJpbmcp
KQogICAgICAgICBzdHJpbmcrKzsKQEAgLTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgbWlnaHRCZVJHQihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1sy
XSwgJ2InKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJz
aW5nSGV4Q29sb3IodWludDMyX3QgdmFsdWUsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodWludDMyX3Qg
dmFsdWUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgIGNh
c2UgMzoKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+
IGZpbmlzaFBhcnNpbmdIZXhDb2xvcih1aW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvckludGVybmFsKGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZUhleENvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGggIT0gMyAmJiBsZW5ndGggIT0g
NCAmJiBsZW5ndGggIT0gNiAmJiBsZW5ndGggIT0gOCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlSGV4Q29sb3JJbgogICAgIHJl
dHVybiBmaW5pc2hQYXJzaW5nSGV4Q29sb3IodmFsdWUsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4g
cGFyc2VOdW1lcmljQ29sb3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBib29sIHN0cmljdCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2xvcihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgc3Ry
aWN0KQogewogICAgIGlmIChsZW5ndGggPj0gNCAmJiBjaGFyYWN0ZXJzWzBdID09ICcjJykgewog
ICAgICAgICBpZiAoYXV0byBoZXhDb2xvciA9IHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjaGFyYWN0
ZXJzICsgMSwgbGVuZ3RoIC0gMSkpCkBAIC01MDcsNyArNTA3LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51
bWVyaWNDb2wKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IHBhcnNlTnVtZXJpY0NvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8
dWludDhfdD4+IHBhcnNlTnVtZXJpY0NvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIGJvb2wgc3RyaWN0ID0gIWlzUXVpcmtzTW9k
ZUJlaGF2aW9yKGNvbnRleHQubW9kZSk7CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKQEAgLTUy
OSw3ICs1MjksNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvbG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjbwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdOYW1l
ZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdOYW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgbGVuZ3RoKQogewogICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKICAgICBhdXRv
IG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwpAQCAtNTM4LDcgKzUzOCw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gZmluaXNoUGFyc2luZ05hbWVkQ29s
b3IoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsCiAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29s
b3I6OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VO
YW1lZENvbG9ySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xvckludGVybmFsKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBjaGFyIGJ1
ZmZlcls2NF07IC8vIEVhc2lseSBiaWcgZW5vdWdoIGZvciB0aGUgbG9uZ2VzdCBjb2xvciBuYW1l
LgogICAgIGlmIChsZW5ndGggPiBzaXplb2YoYnVmZmVyKSAtIDEpCkBAIC01NTIsMjggKzU1Miwy
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xvcgogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nTmFt
ZWRDb2xvcihidWZmZXIsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvcklu
dGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCBzdHJpY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKGNvbnN0
IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBzdHJpY3Qp
CiB7CiAgICAgaWYgKGF1dG8gY29sb3IgPSBwYXJzZU51bWVyaWNDb2xvcihjaGFyYWN0ZXJzLCBs
ZW5ndGgsIHN0cmljdCkpCiAgICAgICAgIHJldHVybiBjb2xvcjsKICAgICByZXR1cm4gcGFyc2VO
YW1lZENvbG9ySW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VTaW1wbGVDb2xvcihTdHJpbmdW
aWV3IHN0cmluZywgYm9vbCBzdHJpY3QpCitzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBD
U1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2ltcGxlQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcsIGJv
b2wgc3RyaWN0KQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBw
YXJzZVNpbXBsZUNvbG9ySW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSwgc3RyaWN0KTsKICAgICByZXR1cm4gcGFyc2VTaW1wbGVDb2xvckludGVybmFsKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBzdHJpY3QpOwogfQogCi1PcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZUhleENvbG9yKFN0cmlu
Z1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ1NTUGFyc2VyRmFz
dFBhdGhzOjpwYXJzZUhleENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUhleENvbG9ySW50ZXJuYWwoc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHBhcnNlSGV4Q29s
b3JJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAK
LU9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlTmFtZWRD
b2xvcihTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IENT
U1BhcnNlckZhc3RQYXRoczo6cGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZU5hbWVkQ29sb3JJ
bnRlcm5hbChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCmluZGV4IGY3MTIzN2Fh
NDM5OGE4ODMxY2JmN2QzZGEyNWM5ZGEwMzMxODNiMjkuLjg0OTY5NDRkNzE0MzQxMWNjMTRiYmY0
NzJlMzY0M2EyM2Y5OTZlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyRmFzdFBhdGhzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuaApAQCAtNTUsOSArNTUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVl
SUQsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAogICAgIC8vIFBhcnNlcyBudW1lcmljIGFu
ZCBuYW1lZCBjb2xvcnMuCi0gICAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJz
ZVNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsgLy8g
SGV4IGNvbG9ycyBvZiBsZW5ndGggMywgNCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIjIi4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTmFtZWRDb2xvcihTdHJp
bmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VT
aW1wbGVDb2xvcihTdHJpbmdWaWV3LCBib29sIHN0cmljdCA9IGZhbHNlKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihTdHJpbmdWaWV3KTsg
Ly8gSGV4IGNvbG9ycyBvZiBsZW5ndGggMywgNCwgNiwgb3IgOCwgd2l0aG91dCBsZWFkaW5nICIj
Ii4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENv
bG9yKFN0cmluZ1ZpZXcpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBmZDUxMDYx
OTczZTI1MGM5ZjVkZDEyNmQ4MWM4YTc4MzMzNWM3YWYzLi5kNzRmOTRlMTA1NjJhYTg0NWFhZjc3
OTdlNjZhM2RjMjkwN2NhZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDI0LDggKzQyNCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVEaXNwbGF5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIH0K
IAogICAgIC8vIFBhcnNlIFsgPGRpc3BsYXktb3V0c2lkZT4gfHwgPGRpc3BsYXktaW5zaWRlPiBd
Ci0gICAgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2VkRGlzcGxheU91dHNpZGU7Ci0gICAgT3B0
aW9uYWw8Q1NTVmFsdWVJRD4gcGFyc2VkRGlzcGxheUluc2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PENTU1ZhbHVlSUQ+IHBhcnNlZERpc3BsYXlPdXRzaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q1NT
VmFsdWVJRD4gcGFyc2VkRGlzcGxheUluc2lkZTsKICAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkp
IHsKICAgICAgICAgYXV0byBuZXh0VmFsdWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOwogICAgICAg
ICBzd2l0Y2ggKG5leHRWYWx1ZUlEKSB7CkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAg
ICAgaWYgKCFzdGVwc1ZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBP
cHRpb25hbDxTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24+IHN0ZXBQb3NpdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3Rl
cFBvc2l0aW9uOwogICAgIGlmIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KSB7CiAgICAgICAgIHN3aXRjaCAoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlk
KCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1bXBTdGFydDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCAw
YjRmNmJmYjgyYWNiMDc4N2ZiMTY3ODE0N2VkNWE2NWJmMTFiYWZlLi41NDQzYmIwZTIxZjcwYmRl
ZjQ3NjE5ODMxYmZkYjUyZjBiMjEwM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IENTU1BhcnNlclRva2VuUmFuZ2UgY29uc3VtZUZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogICAgIHJldHVybiBjb250ZW50czsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJs
ZT4gY29uc3VtZU51bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5
MTAwUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2Ug
PSBWYWx1ZVJhbmdlOjpBbGwpCiB7CiAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJj
ZW50UmF3KHJhbmdlLCB2YWx1ZVJhbmdlKSkKICAgICAgICAgcmV0dXJuICpwZXJjZW50IC8gMTAw
LjA7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3RkOjpyb3VuZChzdGQ6Om1heChtX2NhbGNWYWx1ZS0+ZG91YmxlVmFs
dWUoKSwgbWluaW11bVZhbHVlKSksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1l
SW50ZWdlclR5cGVSYXcoZG91YmxlIG1pbmltdW1WYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRUeXBlPiBzdGQ6Om9wdGlvbmFsPEludFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhk
b3VibGUgbWluaW11bVZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV92YWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9jYWxjVmFsdWUtPmRv
dWJsZVZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBjb25zdW1lTnVtYmVyUmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwg
bV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KCkKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Nh
bGNWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYy
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCk7
CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCisgICAg
c3RkOjpvcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KCkKICAgICB7CiAgICAgICAg
IGlmICghbV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRp
b25DYXRlZ29yeTo6QW5nbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpLCBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KCkKKyAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdygpCiAgICAgewogICAgICAgICBpZiAo
IW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0
ZWdvcnk6Okxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzgs
NyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmlt
aXRpdmVUeXBlKCksIG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXco
KQorICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50UmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAg
Q1NTVmFsdWVQb29sJiBtX3ZhbHVlUG9vbDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludFR5
cGU+IE9wdGlvbmFsPEludFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIElu
dFR5cGU+IHN0ZDo6b3B0aW9uYWw8SW50VHlwZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAgIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlw
ZSgpID09IE51bWJlclRva2VuKSB7CkBAIC0yMjYsNyArMjI2LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50VHlwZT4gT3B0aW9uYWw8SW50VHlwZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1Bh
cnNlclRva2UKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxpbnQ+IGNv
bnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11
bVZhbHVlKQorc3RkOjpvcHRpb25hbDxpbnQ+IGNvbnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAgIHJldHVybiBjb25z
dW1lSW50ZWdlclR5cGVSYXc8aW50PihyYW5nZSwgbWluaW11bVZhbHVlKTsKIH0KQEAgLTIzOCw3
ICsyMzgsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2VyKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1PcHRpb25hbDx1bnNpZ25lZD4gY29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNvbnN1bWVQb3Np
dGl2ZUludGVnZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgcmV0dXJu
IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdzx1bnNpZ25lZD4ocmFuZ2UsIDEpOwogfQpAQCAtMjUwLDcg
KzI1MCw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdl
cihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
T3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3Vt
ZU51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJh
bmdlKQogewogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsK
ICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CkBAIC0yOTIsNyArMjkyLDcg
QEAgc3RhdGljIGlubGluZSBib29sIGRpdmlzaWJsZUJ5MTAwKGRvdWJsZSB2YWx1ZSkKIH0KICNl
bmRpZgogCi1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250
V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIC8vIFZh
bHVlcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
MTAwMCBhcmUgcGFyc2UgZXJyb3JzLgogICAgIGF1dG8mIHRva2VuID0gcmFuZ2UucGVlaygpOwpA
QCAtMzQzLDcgKzM0Myw3IEBAIGlubGluZSBib29sIHNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUo
ZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsCiAgICAgcmV0dXJuIGNz
c1BhcnNlck1vZGUgPT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWly
azo6QWxsb3c7CiB9CiAKLU9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCitzdGQ6Om9wdGlvbmFs
PExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsK
QEAgLTQwOCw3ICs0MDgsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5n
dGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZh
bHVlUmFuZ2UgdmFsdWVSYW5nZSkKIHsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4p
IHsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBzdGF0aWMgYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENh
bGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotT3B0aW9uYWw8TGVuZ3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cykKK3N0ZDo6b3B0aW9uYWw8TGVuZ3RoT3JQZXJjZW50UmF3PiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKIHsK
ICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVy
VG9rZW4pIHsKQEAgLTUwOCw3ICs1MDgsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTUwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIFVuaXRsZXNzWmVyb1F1aXJrIHVuaXRsZXNzWmVybykK
K3N0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVu
aXRsZXNzLCBVbml0bGVzc1plcm9RdWlyayB1bml0bGVzc1plcm8pCiB7CiAgICAgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gRGltZW5zaW9uVG9rZW4pIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVSZXNvbHV0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBB
bGxvd1hSZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxDU1NWYWx1ZUlEPiBj
b25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFs
PENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
IHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjU0LDcgKzY1NCw3IEBAIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUlkZW50V29ya2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNv
bnN1bWVJZGVudFJhbmdlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZUlE
IGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQorc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25z
dW1lSWRlbnRSYW5nZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBs
b3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBs
b3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVwcGVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNzM3LDcgKzczNyw3IEBAIHN0YXRpYyBDb2xvciBjb25zdW1lT3JpZ2luQ29s
b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4CiAgICAg
cmV0dXJuIFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoa2V5d29yZCwgeyB9KTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRp
b25hbEFscGhhKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmICghY29uc3Vt
ZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCiAgICAgICAgIHJldHVybiAxLjA7CkBA
IC03NDgsNyArNzQ4LDcgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU9wdGlvbmFs
QWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0
aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9y
SWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IGFsbG93ZWRJZGVudHM+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NW
YWx1ZUlEPj4gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIGlmIChhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEocmFu
Z2UpKQogICAgICAgICByZXR1cm4geyAqYWxwaGEgfTsKQEAgLTc1OSw3ICs3NTksNyBAQCB0ZW1w
bGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50
PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5n
bGVSYXcocmFuZ2UsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVz
c1plcm9RdWlyazo6Rm9yYmlkKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlRGVncmVlcyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVlKTsKQEAgLTc2Nyw3ICs3Njcs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lSHVlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDbwogICAgIHJldHVybiBjb25zdW1lTnVtYmVyUmF3
KHJhbmdlKTsKIH0KIAotdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0
aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJZGVudChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBpZiAoYXV0byBodWUgPSBjb25zdW1lSHVlKHJhbmdlLCBjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuIHsgKmh1ZSB9OwpAQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBkb3VibGUg
bm9ybWFsaXplSHVlKGRvdWJsZSBodWUpCiAgICAgcmV0dXJuIHN0ZDo6Zm1vZChzdGQ6OmZtb2Qo
aHVlLCAzNjAuMCkgKyAzNjAuMCwgMzYwLjApOwogfQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
YXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1i
ZXJSYXcocmFuZ2UpKQogICAgICAgICByZXR1cm4geyAqbnVtYmVyIH07CkBAIC03OTQsNyArNzk0
LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9u
YWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25h
bDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+IGNvbnN1bWVQZXJjZW50T3JJZGVudChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElk
ZW50cz4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBj
b25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAg
aWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KHJhbmdlKSkKICAgICAgICAgcmV0
dXJuIHsgKnBlcmNlbnQgfTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1l
UkdCT3JIU0xBbHBoYVNlcGFyYXRvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBSR0JPckhT
TFNlcAogICAgIHJldHVybiBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lUkdCT3JIU0xPcHRpb25hbEFscGhh
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIFJHQk9ySFNMU2VwYXJhdG9yU3ludGF4IHN5bnRh
eCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVJHQk9ySFNMT3B0aW9uYWxB
bHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBSR0JPckhTTFNlcGFyYXRvclN5bnRheCBz
eW50YXgpCiB7CiAgICAgaWYgKCFjb25zdW1lUkdCT3JIU0xBbHBoYVNlcGFyYXRvcihhcmdzLCBz
eW50YXgpKQogICAgICAgICByZXR1cm4gMS4wOwpAQCAtODc3LDEwICs4NzcsMTAgQEAgc3RhdGlj
IE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVJHQk9ySFNMT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLAogCiBzdHJ1Y3QgUmVsYXRpdmVSR0JDb21wb25lbnQgewogICAgIFZh
cmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiB2YWx1ZTsKLSAgICBPcHRpb25hbDxSR0JDb21wb25l
bnRUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gdHlwZTsK
IH07CiAKLXRlbXBsYXRlPENTU1ZhbHVlSUQgQz4gc3RhdGljIE9wdGlvbmFsPFJlbGF0aXZlUkdC
Q29tcG9uZW50PiBjb25zdW1lUmVsYXRpdmVSR0JDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgT3B0aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gY29tcG9uZW50VHlwZSkKK3RlbXBs
YXRlPENTU1ZhbHVlSUQgQz4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25l
bnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBzdGQ6Om9wdGlvbmFsPFJHQkNvbXBvbmVudFR5cGU+IGNvbXBvbmVudFR5cGUpCiB7CiAgICAg
aWYgKCFjb21wb25lbnRUeXBlKSB7CiAgICAgICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVO
dW1iZXJSYXcoYXJncykpCkBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVs
YXRpdmVSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1Bh
cnMKICAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5cGU+IGNvbXBvbmVudFR5cGU7CisgICAgc3Rk
OjpvcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBlOwogICAgIGF1dG8gcmVk
UmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdCQ29tcG9uZW50PENTU1ZhbHVlUj4oYXJncywgY29t
cG9uZW50VHlwZSk7CiAgICAgaWYgKCFyZWRSZXN1bHQpCiAgICAgICAgIHJldHVybiB7IH07CkBA
IC05ODYsNyArOTg2LDcgQEAgdGVtcGxhdGU8UkdCRnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBD
b2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW4KICAgICAgICAgUkdCQ29t
cG9uZW50VHlwZSB0eXBlOwogICAgIH07CiAKLSAgICBhdXRvIGNvbnN1bWVJbml0aWFsQ29tcG9u
ZW50ID0gW10oYXV0byYgYXJncykgLT4gT3B0aW9uYWw8SW5pdGlhbENvbXBvbmVudD4geworICAg
IGF1dG8gY29uc3VtZUluaXRpYWxDb21wb25lbnQgPSBbXShhdXRvJiBhcmdzKSAtPiBzdGQ6Om9w
dGlvbmFsPEluaXRpYWxDb21wb25lbnQ+IHsKICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29u
c3VtZU51bWJlclJhdyhhcmdzKSkKICAgICAgICAgICAgIHJldHVybiB7IHsgKm51bWJlciwgUkdC
Q29tcG9uZW50VHlwZTo6TnVtYmVyIH0gfTsKICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNv
bnN1bWVQZXJjZW50UmF3KGFyZ3MpKQpAQCAtMTYwMSw3ICsxNjAxLDcgQEAgc3RhdGljIENvbG9y
IHBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY28KICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmIChjb25zdW1lZFRvKSB7
Ci0gICAgICAgIGF1dG8gdGFyZ2V0Q29udHJhc3QgPSBbJl0gKCkgLT4gT3B0aW9uYWw8ZG91Ymxl
PiB7CisgICAgICAgIGF1dG8gdGFyZ2V0Q29udHJhc3QgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25h
bDxkb3VibGU+IHsKICAgICAgICAgICAgIGlmIChjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVBQT4o
YXJncykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDQuNTsKICAgICAgICAgICAgIGlmIChjb25z
dW1lSWRlbnRSYXc8Q1NTVmFsdWVBQUxhcmdlPihhcmdzKSkKQEAgLTE2MjksOSArMTYyOSw5IEBA
IGVudW0gY2xhc3MgQ29sb3JNaXhDb2xvclNwYWNlIHsKICAgICBMY2gKIH07CiAKLXN0YXRpYyBP
cHRpb25hbDxDb2xvck1peENvbG9yU3BhY2U+IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRD
b21tYShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29s
b3JNaXhDb2xvclNwYWNlPiBjb25zdW1lQ29sb3JNaXhDb2xvclNwYWNlQW5kQ29tbWEoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncykKIHsKLSAgICBhdXRvIGNvbnN1bWVJZGVudEFuZENvbW1hID0g
W10oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ29sb3JNaXhDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpIC0+IE9wdGlvbmFsPENvbG9yTWl4Q29sb3JTcGFjZT4geworICAgIGF1dG8gY29uc3VtZUlk
ZW50QW5kQ29tbWEgPSBbXShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDb2xvck1peENvbG9y
U3BhY2UgY29sb3JTcGFjZSkgLT4gc3RkOjpvcHRpb25hbDxDb2xvck1peENvbG9yU3BhY2U+IHsK
ICAgICAgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTY1OCwxMCArMTY1OCwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29sb3JNaXhDb2xv
clNwYWNlPiBjb25zdW1lQ29sb3JNaXhDb2xvclNwYWNlQW5kQ29tbWEoQ1NTUGFyc2VyVAogCiBz
dHJ1Y3QgQ29sb3JNaXhDb21wb25lbnQgewogICAgIENvbG9yIGNvbG9yOwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gcGVyY2VudGFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGVyY2VudGFn
ZTsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9y
TWl4Q29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4g
Y29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ29sb3JNaXhDb21wb25lbnQgcmVz
dWx0OwogCkBAIC0xODQxLDcgKzE4NDEsNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvck1peEZ1
bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQwogICAg
IHJldHVybiBtaXhDb2xvckNvbXBvbmVudHMoKmNvbG9yU3BhY2UsICptaXhDb21wb25lbnQxLCAq
bWl4Q29tcG9uZW50Mik7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFy
c2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBhY2NlcHRRdWlya3lD
b2xvcnMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xv
cihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCiB7
CiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBTdHJpbmdWaWV3IHZpZXc7CkBAIC0xOTkyLDcgKzE5
OTIsNyBAQCBzdGF0aWMgUG9zaXRpb25Db29yZGluYXRlcyBwb3NpdGlvbkZyb21PbmVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiAgICAgcmV0dXJuIHsgdmFsdWUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2VudGVyKSB9OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZTEsIENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTIpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMo
Q1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMikKIHsK
ICAgICBib29sIG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KHZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFs
dWUxLmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTIuaXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3Jk
ZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6
b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMik7CkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBz
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoQXJn
cyYmLi4uIGFyZ3MpCiAvLyAgIFsgY2VudGVyIHwgWyBsZWZ0IHwgcmlnaHQgXSA8bGVuZ3RoLXBl
cmNlbnRhZ2U+PyBdICYmCiAvLyAgIFsgY2VudGVyIHwgWyB0b3AgfCBib3R0b20gXSA8bGVuZ3Ro
LXBlcmNlbnRhZ2U+PyBdCiAvLwotc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+
IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1By
aW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9u
Q29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQ6
OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcykKIHsKICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJlc3VsdFg7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBy
ZXN1bHRZOwpAQCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29v
cmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKIC8v
ICAgWyBbIGxlZnQgfCByaWdodCBdIDxsZW5ndGgtcGVyY2VudGFnZT4gXSAmJgogLy8gICBbIFsg
dG9wIHwgYm90dG9tIF0gPGxlbmd0aC1wZXJjZW50YWdlPiBdCiAvLwotc3RhdGljIE9wdGlvbmFs
PFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3RkOjph
cnJheTxDU1NQcmltaXRpdmVWYWx1ZSosIDU+JiB2YWx1ZXMpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0ZDo6
YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUqLCA1PiYgdmFsdWVzKQogewogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJl
c3VsdFk7CkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29y
ZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91clZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTUwogCiAv
LyBGSVhNRTogVGhpcyBtYXkgY29uc3VtZSBmcm9tIHRoZSByYW5nZSB1cG9uIGZhaWx1cmUuIFRo
ZSBiYWNrZ3JvdW5kCiAvLyBzaG9ydGhhbmQgd29ya3MgYXJvdW5kIGl0LCBidXQgd2Ugc2hvdWxk
IGp1c3QgZml4IGl0IGhlcmUuCi1PcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1l
UG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBQb3NpdGlvblN5bnRh
eCBwb3NpdGlvblN5bnRheCkKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29u
c3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25T
eW50YXggcG9zaXRpb25TeW50YXgpCiB7CiAgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRp
b25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZh
bHVlMSkKQEAgLTIxNjAsNyArMjE2MCw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29u
c3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1
bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cykKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFs
dWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewogICAgIGF1
dG8gdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTEpCkBAIC0yOTcxLDE3ICsyOTcxLDE3IEBAIEF0
b21TdHJpbmcgY29uc3VtZUNvdW50ZXJTdHlsZU5hbWVJblByZWx1ZGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcHJlbHVkZSkKICAgICByZXR1cm4gaXNQcmVkZWZpbmVkQ291bnRlclN0eWxlKG5hbWVU
b2tlbi5pZCgpKSA/IG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IG5hbWUudG9TdHJp
bmcoKTsKIH0KIAotT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjFS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+
IGNvbnN1bWVGb250VmFyaWFudENTUzIxUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQog
ewogICAgIHJldHVybiBjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU21h
bGxDYXBzPihyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250V2Vp
Z2h0S2V5d29yZFZhbHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRp
b25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9udFdlaWdodEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENTU1Zh
bHVlTm9ybWFsLCBDU1NWYWx1ZUJvbGQsIENTU1ZhbHVlQm9sZGVyLCBDU1NWYWx1ZUxpZ2h0ZXI+
KHJhbmdlKTsKIH0KIAotT3B0aW9uYWw8Rm9udFdlaWdodFJhdz4gY29uc3VtZUZvbnRXZWlnaHRS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPEZvbnRXZWlnaHRS
YXc+IGNvbnN1bWVGb250V2VpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewog
ICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KHJh
bmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwpAQCAtMjk5MCwxNyArMjk5MCwxNyBA
QCBPcHRpb25hbDxGb250V2VpZ2h0UmF3PiBjb25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25h
bDxDU1NWYWx1ZUlEPiBjb25zdW1lRm9udFN0cmV0Y2hLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250
U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENTU1ZhbHVlVWx0cmFDb25kZW5zZWQsIENTU1ZhbHVl
RXh0cmFDb25kZW5zZWQsIENTU1ZhbHVlQ29uZGVuc2VkLCBDU1NWYWx1ZVNlbWlDb25kZW5zZWQs
IENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNlbWlFeHBhbmRlZCwgQ1NTVmFsdWVFeHBhbmRlZCwg
Q1NTVmFsdWVFeHRyYUV4cGFuZGVkLCBDU1NWYWx1ZVVsdHJhRXhwYW5kZWQ+KHJhbmdlKTsKIH0K
IAotT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29u
c3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
IHsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUl0
YWxpYywgQ1NTVmFsdWVPYmxpcXVlPihyYW5nZSk7CiB9CiAKLU9wdGlvbmFsPEZvbnRTdHlsZVJh
dz4gY29uc3VtZUZvbnRTdHlsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3RkOjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1
bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250U3R5bGVLZXl3
b3JkVmFsdWVSYXcocmFuZ2UpOwogICAgIGlmICghcmVzdWx0KQpAQCAtMzA1MSwxMiArMzA1MSwx
MiBAQCBTdHJpbmcgY29uc3VtZUZhbWlseU5hbWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShyYW5nZSk7CiB9CiAKLU9wdGlv
bmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVHZW5lcmljRmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lR2VuZXJpY0ZhbWls
eVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gY29uc3VtZUlk
ZW50UmFuZ2VSYXcocmFuZ2UsIENTU1ZhbHVlU2VyaWYsIENTU1ZhbHVlV2Via2l0Qm9keSk7CiB9
CiAKLU9wdGlvbmFsPFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWls
eVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8V1RGOjpWZWN0
b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogewogICAgIFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+IGxpc3Q7CiAgICAg
ZG8gewpAQCAtMzA3Miw3ICszMDcyLDcgQEAgT3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWls
eVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKICAgICBy
ZXR1cm4gbGlzdDsKIH0KIAotT3B0aW9uYWw8Rm9udFNpemVSYXc+IGNvbnN1bWVGb250U2l6ZVJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQorc3RkOjpvcHRpb25hbDxGb250U2l6ZVJhdz4gY29u
c3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCiB7CiAgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID49IENTU1ZhbHVlWHhTbWFsbCAmJiByYW5nZS5wZWVrKCkuaWQoKSA8PSBD
U1NWYWx1ZUxhcmdlcikgewogICAgICAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJh
dyhyYW5nZSkpCkBAIC0zMDg2LDcgKzMwODYsNyBAQCBPcHRpb25hbDxGb250U2l6ZVJhdz4gY29u
c3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNv
bnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCitzdGQ6Om9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVM
aW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9y
bWFsKSB7CiAgICAgICAgIGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3KHJhbmdlKSkK
QEAgLTMxMDMsNyArMzEwMyw3IEBAIE9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5l
SGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzCiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0
ZDo6b3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICAvLyBMZXQncyBjaGVj
ayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0IG9yIGluaXRpYWwgc29tZXdoZXJlIGluIHRoZSBzaG9y
dGhhbmQuCiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
CmluZGV4IDE1ZWRlNGI1NzZiYThmNWRkZjFjNGIwZWVhYTRmNTQ4MmJlZjk2YmUuLjdjZWQ2ZGRh
Njc2MmJkMGYyZWIzZWI3NTRlODhkYzUzZGYzMTMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaApAQCAtNzQsMzUgKzc0
LDM1IEBAIHN0cnVjdCBMZW5ndGhSYXcgewogCiB1c2luZyBMZW5ndGhPclBlcmNlbnRSYXcgPSBW
YXJpYW50PExlbmd0aFJhdywgZG91YmxlPjsKIAotT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdl
clJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKK3N0ZDo6b3B0aW9uYWw8aW50PiBjb25zdW1l
SW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1z
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVt
VmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7Ci1PcHRpb25hbDx1
bnNpZ25lZD4gY29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7
CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0
aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1PcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdl
OjpBbGwpOworc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlOjpBbGwpOwogUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJh
bmdlKTsKLU9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXJSYXcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0
TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRm9udFdlaWdodE51bWJlcldvcmtlclNhZmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlUG9vbCYpOwotT3B0aW9uYWw8TGVuZ3RoUmF3PiBj
b25zdW1lTGVuZ3RoUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK3N0ZDo6b3B0
aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBD
U1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6
Rm9yYmlkKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUxlbmd0aChDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Ci1PcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlID0gVmFsdWVSYW5nZTo6QWxsKTsK
K3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiwgVmFsdWVSYW5nZSA9IFZhbHVlUmFuZ2U6OkFsbCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsK
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcmNlbnRXb3JrZXJTYWZlKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlLCBDU1NWYWx1ZVBvb2wmKTsKLU9wdGlvbmFsPExl
bmd0aE9yUGVyY2VudFJhdz4gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCk7CitzdGQ6Om9wdGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29u
c3VtZUxlbmd0aE9yUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBV
bml0bGVzc1F1aXJrOjpGb3JiaWQpOwotT3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVu
aXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcmsgPSBVbml0bGVzc1plcm9RdWly
azo6Rm9yYmlkKTsKK3N0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNz
UXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcmsgPSBVbml0bGVzc1plcm9RdWlyazo6Rm9y
YmlkKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUFuZ2xlKENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6
Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyayA9IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOwog
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQW5nbGVXb3JrZXJTYWZlKENTU1BhcnNl
clRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBDU1NWYWx1ZVBvb2wmLCBVbml0bGVzc1F1aXJr
ID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyayA9IFVuaXRsZXNzWmVy
b1F1aXJrOjpGb3JiaWQpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVGltZShD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NR
dWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVSZXNvbHV0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBBbGxvd1hSZXNvbHV0aW9u
VW5pdCA9IEFsbG93WFJlc29sdXRpb25Vbml0OjpGb3JiaWQpOwogCi1PcHRpb25hbDxDU1NWYWx1
ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25h
bDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
OwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRXb3JrZXJTYWZlKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZVBvb2wmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNv
bnN1bWVJZGVudFJhbmdlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2Vy
LCBDU1NWYWx1ZUlEIHVwcGVyKTsKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlk
ZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1Zh
bHVlSUQgdXBwZXIpOwogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnRSYW5n
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBl
cik7CiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVu
dE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCk7Ci10ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJ
ZGVudHM+IE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJik7Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0ZDo6b3B0
aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
IHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogdGVtcGxhdGU8Q1NT
VmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVJZGVudFdvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlUG9vbCYpOwog
CkBAIC0xMjUsOCArMTI1LDggQEAgc3RydWN0IFBvc2l0aW9uQ29vcmRpbmF0ZXMgewogfTsKIAog
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIFBvc2l0aW9uU3ludGF4KTsKLU9w
dGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKENT
U1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBQb3NpdGlv
blN5bnRheCk7Ci1PcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lT25lT3JUd29W
YWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJN
b2RlLCBVbml0bGVzc1F1aXJrKTsKK3N0ZDo6b3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4g
Y29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcmssIFBvc2l0aW9uU3ludGF4KTsKK3N0ZDo6b3B0aW9uYWw8UG9z
aXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRl
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7CiAK
IGVudW0gY2xhc3MgQWxsb3dlZEltYWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIFVSTEZ1bmN0aW9u
ID0gMSA8PCAwLApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29u
c3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyCiAK
IHN0cnVjdCBGb250U3R5bGVSYXcgewogICAgIENTU1ZhbHVlSUQgc3R5bGU7Ci0gICAgT3B0aW9u
YWw8QW5nbGVSYXc+IGFuZ2xlOworICAgIHN0ZDo6b3B0aW9uYWw8QW5nbGVSYXc+IGFuZ2xlOwog
fTsKIHVzaW5nIEZvbnRXZWlnaHRSYXcgPSBWYXJpYW50PENTU1ZhbHVlSUQsIGRvdWJsZT47CiB1
c2luZyBGb250U2l6ZVJhdyA9IFZhcmlhbnQ8Q1NTVmFsdWVJRCwgQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXc+OwpAQCAtMTU2LDEyICsxNTYsMTIgQEAgdXNpbmcg
TGluZUhlaWdodFJhdyA9IFZhcmlhbnQ8Q1NTVmFsdWVJRCwgZG91YmxlLCBDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OkxlbmcKIHVzaW5nIEZvbnRGYW1pbHlSYXcgPSBWYXJpYW50PENTU1ZhbHVl
SUQsIFN0cmluZz47CiAKIHN0cnVjdCBGb250UmF3IHsKLSAgICBPcHRpb25hbDxGb250U3R5bGVS
YXc+IHN0eWxlOwotICAgIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IHZhcmlhbnRDYXBzOwotICAgIE9w
dGlvbmFsPEZvbnRXZWlnaHRSYXc+IHdlaWdodDsKLSAgICBPcHRpb25hbDxDU1NWYWx1ZUlEPiBz
dHJldGNoOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFN0eWxlUmF3PiBzdHlsZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHZhcmlhbnRDYXBzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9u
dFdlaWdodFJhdz4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gc3RyZXRj
aDsKICAgICBGb250U2l6ZVJhdyBzaXplOwotICAgIE9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGxp
bmVIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lSGVpZ2h0UmF3PiBsaW5lSGVpZ2h0Owog
ICAgIFZlY3RvcjxGb250RmFtaWx5UmF3PiBmYW1pbHk7CiB9OwogCkBAIC0xNjksMTkgKzE2OSwx
OSBAQCBib29sIGlzUHJlZGVmaW5lZENvdW50ZXJTdHlsZShDU1NWYWx1ZUlEKTsKIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNvdW50ZXJTdHlsZU5hbWUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYpOwogQXRvbVN0cmluZyBjb25zdW1lQ291bnRlclN0eWxlTmFtZUluUHJlbHVkZShDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CiAKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250VmFy
aWFudENTUzIxUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+
IGNvbnN1bWVGb250V2VpZ2h0S2V5d29yZFZhbHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
LU9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IGNvbnN1bWVGb250V2VpZ2h0UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKLU9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3RyZXRjaEtleXdv
cmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci1PcHRpb25hbDxDU1NWYWx1ZUlEPiBj
b25zdW1lRm9udFN0eWxlS2V5d29yZFZhbHVlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLU9w
dGlvbmFsPEZvbnRTdHlsZVJhdz4gY29uc3VtZUZvbnRTdHlsZVJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiwgQ1NTUGFyc2VyTW9kZSk7CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVG
b250VmFyaWFudENTUzIxUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK3N0ZDo6b3B0aW9uYWw8
Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRXZWlnaHRLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxGb250V2VpZ2h0UmF3PiBjb25zdW1lRm9udFdlaWdo
dFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNv
bnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Citz
dGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVGb250U3R5bGVLZXl3b3JkVmFsdWVSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxGb250U3R5bGVSYXc+IGNvbnN1
bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwogU3Ry
aW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiBTdHJpbmcg
Y29uc3VtZUZhbWlseU5hbWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotT3B0aW9uYWw8Q1NT
VmFsdWVJRD4gY29uc3VtZUdlbmVyaWNGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwot
T3B0aW9uYWw8VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJik7Ci1PcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXpl
UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrID0g
VW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKLU9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVM
aW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKLU9wdGlv
bmFsPEZvbnRSYXc+IGNvbnN1bWVGb250UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUdlbmVyaWNGYW1pbHlS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm9udEZhbWls
eVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK3N0ZDo6
b3B0aW9uYWw8Rm9udFNpemVSYXc+IGNvbnN1bWVGb250U2l6ZVJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7CitzdGQ6Om9wdGlvbmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsKK3N0ZDo6b3B0aW9uYWw8Rm9udFJh
dz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwog
Y29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHkoQ1NTVmFsdWVJRCk7CiBXZWJLaXRG
b250RmFtaWx5TmFtZXM6OkZhbWlseU5hbWVzSW5kZXggZ2VuZXJpY0ZvbnRGYW1pbHlJbmRleChD
U1NWYWx1ZUlEKTsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQgaGVh
ZCwgQ1NTVmFsdWVJRC4uLiB0YWlsPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJ
CiAgICAgcmV0dXJuIGlkID09IGhlYWQgfHwgaWRlbnRNYXRjaGVzPHRhaWwuLi4+KGlkKTsKIH0K
IAotdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBuYW1lcz4gT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29u
c3VtZUlkZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQordGVtcGxhdGU8Q1NTVmFs
dWVJRC4uLiBuYW1lcz4gc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBl
KCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRlbnRNYXRjaGVzPG5hbWVzLi4uPihyYW5nZS5wZWVrKCku
aWQoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKaW5k
ZXggYjgwYjY3OGEyYWM3ZTdiOTY1OTY1NTM2MWZmYmE5OWNjMWQ3ZDJjMi4uZmQ5NTM3OGJmOGI2
M2NhZjc3ZGVmNDIxMjRmZjgyZDdjYzBlMDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcApAQCAtNTEs
NyArNTEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPENTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Rm9udFJhdz4gQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlOjpwYXJz
ZUZvbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgbW9kZSkKK3N0ZDo6b3B0
aW9uYWw8Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3PiBDU1NQcm9wZXJ0eVBhcnNl
cldvcmtlclNhZmU6OnBhcnNlRm9udChjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9k
ZSBtb2RlKQogewogICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoc3RyaW5nKTsKICAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlKHRva2VuaXplci50b2tlblJhbmdlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZl
LmgKaW5kZXggNWQxZTIwODNiOTM4MWU4NmIwMGRlODNiNGE0MjFlM2NhOTMwOTcwMy4uMDU0ZmJi
ZTZjZjE1NzExOTdkZDQzOGYwYzcxMGNhMDI2Y2Y2NjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBDU1NQcm9w
ZXJ0eVBhcnNlcldvcmtlclNhZmUgewogcHVibGljOgogICAgIHN0YXRpYyBDb2xvciBwYXJzZUNv
bG9yKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OkZvbnRSYXc+IHBhcnNlRm9udChjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2Rl
ID0gSFRNTFN0YW5kYXJkTW9kZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpGb250UmF3PiBwYXJzZUZvbnQoY29uc3QgU3RyaW5nJiwgQ1NTUGFy
c2VyTW9kZSA9IEhUTUxTdGFuZGFyZE1vZGUpOwogCiAgICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHBhcnNlRm9udEZhY2VTcmMoY29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYpOwogICAgIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRm9udEZhY2VTdHlsZShj
b25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDk4MjcxZDAxZDJkYjM0
NDZjN2ZkMTM5MzkwZmNkMGFmYjJhYzFlM2MuLjc3NzRjYTc3YThjMzA1MWIzMmU1NTBmNWQ1NGEx
N2M4MGZkNTRkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2Vs
ZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiBzdGF0aWMgQXRvbVN0cmlu
ZyBzZXJpYWxpemVBTlBsdXNCKGNvbnN0IHN0ZDo6cGFpcjxpbnQsIGludD4mKTsKIHN0YXRpYyBi
b29sIGNvbnN1bWVBTlBsdXNCKENTU1BhcnNlclRva2VuUmFuZ2UmLCBzdGQ6OnBhaXI8aW50LCBp
bnQ+Jik7CiAKLU9wdGlvbmFsPENTU1NlbGVjdG9yTGlzdD4gcGFyc2VDU1NTZWxlY3RvcihDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBT
dHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCitzdGQ6Om9wdGlvbmFsPENTU1NlbGVjdG9y
TGlzdD4gcGFyc2VDU1NTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQp
CiB7CiAgICAgQ1NTU2VsZWN0b3JQYXJzZXIgcGFyc2VyKGNvbnRleHQsIHN0eWxlU2hlZXQpOwog
ICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmgKaW5kZXggMjc3NjYxY2UxMDFlNmRmYTY4YmExMDhmNTE5
MWFkNmFmNmMyOWVjMi4uNTUwMDIxNDQ3ZDlmMTZmMWM0OGFmMTlmN2M0ODlkZTAwMmIxZDdmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaApAQCAt
OTEsNiArOTEsNiBAQCBwcml2YXRlOgogCiAKIAotT3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0PiBw
YXJzZUNTU1NlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmLCBTdHlsZVNoZWV0Q29udGVudHMqKTsKK3N0ZDo6b3B0aW9uYWw8Q1NTU2VsZWN0b3JMaXN0
PiBwYXJzZUNTU1NlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBmYjY3
Mjc3NDM2ZjBlYTVmNDkwOGE0MzcxZTNlMTk0ODg5NDM2YzFmLi45MGYwNDM5YjcyZjY0MTQxNWFm
ZjhlMDBmMzU4NmNhMWU5MTgyYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01l
ZGlhUXVlcnlQYXJzZXIuaApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIE1l
ZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJp
Y3RvcjsgfQogICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9u
cygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7IH0KLSAgICAgICAgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KKyAgICAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhVHlwZTsgfQogCiAgICAgICAgIGJvb2wgY3VycmVudE1lZGlhUXVlcnlDaGFuZ2VkKCkg
Y29uc3QKICAgICAgICAgewpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2
YXRlOgogICAgICAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIG1fcmVzdHJpY3RvciB7IE1lZGlh
UXVlcnk6Ok5vbmUgfTsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtX21lZGlhVHlwZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1fbWVkaWFUeXBlOwogICAgICAgICBWZWN0b3I8
TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1fZXhwcmVzc2lvbnM7CiAgICAgICAgIFN0cmluZyBtX21l
ZGlhRmVhdHVyZTsKICAgICAgICAgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgbV9jb250ZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IGUzODljM2U5
MTUzZWRkNjEwOGI2MTQwYzAwNzA4YmM4ZjlkOWU0ZWUuLjI2YWI2YjkwNmQ1YzFkMTkyNDNhMTBk
ZTM0NTFiY2EyNmFlZDQ0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAKQEAgLTM4OSw4ICszODksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVF
bGVtZW50SXNUYXJnZXQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogICAg
IC8vIEhlbHBlcnMuCi0gICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmlu
Z1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5
cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwotICAgIHZv
aWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2lu
Z0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246
OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAg
IHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6
OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpUeXBlLCBzdGQ6Om9wdGlvbmFs
PEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVB
ZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0ZDo6
b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSA9IHsgfSk7CiAgICAgQXNzZW1i
bGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBicmFu
Y2hPblJlc29sdmluZ01vZGUoQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3Rv
ckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwog
ICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNGaXJzdExpbmsoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCk7CkBAIC0yNDQ1LDcg
KzI0NDUsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVJbmRpcmVjdEFk
amFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaQogICAgIGxvY2FsRmFpbHVyZUNhc2Vz
LmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKLXZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25U
eXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUo
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxh
dGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKIHsK
ICAgICBpZiAobV9zZWxlY3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVj
dG9yKQogICAgICAgICByZXR1cm47CkBAIC0yNDcxLDcgKzI0NzEsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTW9kdWxvSGVscGVyLCBpbnQsIChpbnQgZGl2aWRlbmQsIGlu
dCBkaXZpc29yKQogfQogI2VuZGlmCiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4
dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSBy
ZWxhdGlvblR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUpCit2b2lk
IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVt
ZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBzdGQ6Om9wdGlvbmFsPEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250
ZXh0ICE9IFNlbGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9EaXNwbGF5VHJlZS5jcHAKaW5kZXggZWZmZjllMTIyMDZmODM0YWVmZWM4ZWZkNzU0NTI5
MTIzNDFlOTFiNi4uMWVhNjQ4YzBlM2FlMTk4MTAyZGVlODA4ODg0MzI3ZGRiZjdiOTcwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgY29u
c3QgQ29udGFpbmVyQm94JiBUcmVlOjpyb290Qm94KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNh
c3Q8Q29udGFpbmVyQm94PihtX3Jvb3RTdGFja2luZ0l0ZW0tPmJveCgpKTsKIH0KIAotdm9pZCBU
cmVlOjpzZXRCb3hOZWVkc0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+
KSBjb25zdAordm9pZCBUcmVlOjpzZXRCb3hOZWVkc0Rpc3BsYXkoQm94Jiwgc3RkOjpvcHRpb25h
bDxBYnNvbHV0ZUZsb2F0UmVjdD4pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEZvciBub3csIGp1
c3QgcmVwYWludCB0aGUgd29ybGQuCiAgICAgaWYgKG1fdmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
RGlzcGxheVRyZWUuaAppbmRleCBiMGE4YWU3NGZiNTYxOTdjZWVkMTYzZGViZTU4NTRhMjBmYWZi
NTZlLi5mMGMwYzQyNzQ0Yzc1ZDA3YjE2YjJmNDAzMjZjNWZkN2NkYTdmODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdGFja2luZ0l0ZW0mIHJvb3RTdGFja2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiAqbV9y
b290U3RhY2tpbmdJdGVtOyB9CiAgICAgIGNvbnN0IENvbnRhaW5lckJveCYgcm9vdEJveCgpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRCb3hOZWVkc0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1
dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgc2V0
Qm94TmVlZHNEaXNwbGF5KEJveCYsIHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1
YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0Um9v
dFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKaW5kZXggMWY0NjEyZWNlZmE2MDA5ODlh
NThkOWEwM2E4MzQ2ZTY0NGE4ZDYzYi4uNzNlN2ZkMDRmYzI1ZGIyM2U0OWVhYjc1MzA3ZDYyMzFi
YzE3NWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgYm9vbCBCb3g6OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpIGNv
bnN0CiAgICAgcmV0dXJuICFpc0xpbmVCcmVha0JveCgpICYmIHN0eWxlKCkucGFydGljaXBhdGVz
SW5aT3JkZXJTb3J0aW5nKCk7CiB9CiAKLXZvaWQgQm94OjpzZXROZWVkc0Rpc3BsYXkoT3B0aW9u
YWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QpCit2b2lkIEJveDo6c2V0TmVlZHNEaXNwbGF5
KHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QpCiB7CiAgICAgbV90cmVl
LnNldEJveE5lZWRzRGlzcGxheSgqdGhpcywgc3VicmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94LmgKaW5kZXggNjVmZmUzYWM0MWE4MWJkY2ZlNzA1NGE2NmRkZjhi
MTBlOGRiNTliNS4uZTk2NjljZjVjYmYxN2Y3OTZkYTFjMDNjYThkZTQyZDRkZGYyNmUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgQm94KiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dFNpYmxpbmcuZ2V0KCk7IH0KICAgICB2b2lkIHNldE5leHRTaWJsaW5nKHN0ZDo6dW5pcXVlX3B0
cjxCb3g+JiYpOwogCi0gICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVG
bG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94Q2xpcC5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveENsaXAuaAppbmRleCBkNTFkOGU0
ZDhhZDdlYTQ1MzZhNWI0ZGE0YTc5Y2RkZWJlMTJkMDllLi5mMjc2OTk1Njc3MDBkY2MzYjk1YWQz
ZjQ2ZTg5YjdkOTJlODIyMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5Qm94Q2xpcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3hDbGlwLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Qm94
Q2xpcD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb3hDbGlwKTsgfQogICAgIFJl
ZjxCb3hDbGlwPiBjb3B5KCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVj
dD4gY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBS
ZWN0OyB9CiAgICAgCiAgICAgYm9vbCBhZmZlY3RlZEJ5Qm9yZGVyUmFkaXVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZmZlY3RlZEJ5Qm9yZGVyUmFkaXVzOyB9CiAgICAgY29uc3QgVmVjdG9yPEZsb2F0
Um91bmRlZFJlY3Q+JiBjbGlwU3RhY2soKSBjb25zdCB7IHJldHVybiBtX2NsaXBTdGFjazsgfQpA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIEJveENsaXAoKTsKICAgICBCb3hDbGlwKGNv
bnN0IEJveENsaXAmKTsKIAotICAgIE9wdGlvbmFsPEFic29sdXRlRmxvYXRSZWN0PiBtX2NsaXBS
ZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IG1fY2xpcFJlY3Q7CiAg
ICAgVmVjdG9yPEZsb2F0Um91bmRlZFJlY3Q+IG1fY2xpcFN0YWNrOwogICAgIGJvb2wgbV9hZmZl
Y3RlZEJ5Qm9yZGVyUmFkaXVzIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25QYWludGVyLmNwcAppbmRl
eCBkNDY4ZmJjMGY3NmFiMGIyZGIyMjJhZDYwYWNjZGU0YzY2NWRmMjBiLi4wMTI5OTA0YjA4OGE5
ODI3NjY1ODBkZDYzMWJlNDk4MjQ5Y2VlZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5Qm94RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hEZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTEw
MDAsNyArMTAwMCw3IEBAIHZvaWQgQm9yZGVyUGFpbnRlcjo6cGFpbnRCb3JkZXJzKFBhaW50aW5n
Q29udGV4dCYgcGFpbnRpbmdDb250ZXh0KSBjb25zdAogICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVk
Z2VzID0gdHJ1ZTsKICAgICBpbnQgbnVtRWRnZXNWaXNpYmxlID0gNDsKICAgICBib29sIGFsbEVk
Z2VzU2hhcmVDb2xvciA9IHRydWU7Ci0gICAgT3B0aW9uYWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxl
U2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAg
Qm94U2lkZVNldCBlZGdlc1RvRHJhdzsKIAogICAgIGZvciAoYXV0byBzaWRlIDogYWxsQm94U2lk
ZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNwcAppbmRleCA0MGY1ODU2MTgzYjI3
NjE4NjUyN2NlMzBkYzAxOWIxMzIzZDk5MjAwLi42YjYyOTRjNmY4MTg5NWJlZjY1ZDg2YTA1OWYz
ZTQ5Y2YwZmIyNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCkBAIC00MCwx
NCArNDAsMTQgQEAgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJlZjxBYnN0cmFj
dFJhbmdlPiYgcmFuZ2UpCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQoKSk7
CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJh
Y3RSYW5nZSogcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFu
Z2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKCpyYW5n
ZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVm
UHRyPEFic3RyYWN0UmFuZ2U+JiByYW5nZSkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1h
a2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8QWJzdHJhY3RSYW5nZT4mIHJhbmdlKQogewogICAg
IHJldHVybiBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0
cmFjdFJhbmdlLmgKaW5kZXggZWE4ZTM0YzYxNmJmZmQwNGQ4ZDgzMzNkN2ExMmIyNGUyYzlkOGZl
Ny4uZGM4OWQ0NmU2OTJjMmM3MTBiNzMyODFhZWVmMTcwMDY0N2E1YTA0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQWJzdHJhY3RSYW5nZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogV0VCQ09SRV9F
WFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmKTsK
IFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWY8QWJzdHJhY3RSYW5nZT4mKTsK
LU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5n
ZSopOwotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8
QWJzdHJhY3RSYW5nZT4mKTsKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVS
YW5nZShjb25zdCBBYnN0cmFjdFJhbmdlKik7CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBt
YWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmUHRyPEFic3RyYWN0UmFuZ2U+Jik7CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKaW5kZXggYTA3N2E1YzYz
NGY3OTE5OWY0N2YyODgyYTFkNDkzZmQ3ODU1OTUyMy4uYzJkZjczZjJiM2YxZGFmZGY5N2NlNGY3
MzEyODZiZTQ3Njk5ODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50
TGlzdGVuZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVu
ZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewotICAg
IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKGJvb2wgY2FwdHVyZSA9IGZhbHNlLCBPcHRpb25hbDxi
b29sPiBwYXNzaXZlID0gc3RkOjpudWxsb3B0LCBib29sIG9uY2UgPSBmYWxzZSwgUmVmUHRyPEFi
b3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51bGxwdHIpCisgICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0
ZDo6bnVsbG9wdCwgYm9vbCBvbmNlID0gZmFsc2UsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBzaWdu
YWwgPSBudWxscHRyKQogICAgICAgICA6IEV2ZW50TGlzdGVuZXJPcHRpb25zKGNhcHR1cmUpCiAg
ICAgICAgICwgcGFzc2l2ZShwYXNzaXZlKQogICAgICAgICAsIG9uY2Uob25jZSkKQEAgLTQwLDcg
KzQwLDcgQEAgc3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9w
dGlvbnMgewogICAgIHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiBwYXNzaXZlOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZTsKICAgICBib29sIG9uY2UgeyBmYWxzZSB9Owog
ICAgIFJlZlB0cjxBYm9ydFNpZ25hbD4gc2lnbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0
aW9uRXZlbnQuY3BwCmluZGV4IDhmYjE5ZDU5MDc5NTExZmNkMzAxNmE4M2Q1MjlmNjk0MjY3Y2Q2
MjcuLjRmMjk1NGVlN2MzYmI0NGQ2YmIxZmJiOWEwMDNhZjExZjRjMWZjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FuaW1hdGlvbkV2ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBBbmltYXRpb25FdmVu
dDo6QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIsCiB7CiB9CiAKLUFuaW1hdGlvbkV2ZW50OjpBbmltYXRpb25FdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBlbGFw
c2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0
aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQorQW5pbWF0aW9uRXZlbnQ6OkFu
aW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQs
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1h
dGlvbikKICAgICA6IEFuaW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5l
VGltZSkKICAgICAsIG1fYW5pbWF0aW9uTmFtZShhbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFw
c2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Bbmlt
YXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKaW5kZXgg
Nzk1NWQ3MTFjYWI3ZjdiOWRkYmY2YTBhY2Q5MGY2MGJjMDEzM2Y5Yy4uZmVlMTMwZTA0ZDk2ZmQ4
NjFlOGUwMDRjMWM3Y2Q2NzY3MmUyNGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FuaW1hdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50
LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9u
RXZlbnQgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uRXZlbnRCYXNlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEFuaW1hdGlvbkV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFu
aW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRv
RWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFu
aW1hdGlvbikKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNl
ZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0aW9uRXZlbnQodHlwZSwgYW5pbWF0aW9uTmFtZSwg
ZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQsIHRpbWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAg
ICAgfQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBBbmltYXRpb25FdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxT
ZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiopOworICAgIEFuaW1hdGlvbkV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91
YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBT
dHJpbmcgbV9hbmltYXRpb25OYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jv
dW5kYXJ5UG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCmlu
ZGV4IGQyNmQyZWNhNjQ2YjhhZWM0YzRlZWU4NDQyMWEzZWE4ODMwOGE1YmMuLmNiMTIwNjc1MGY4
YmIxMTRhYzNlMDgwYjIzZGY0OTRmZDIxMDc0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Cb3VuZGFyeVBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQ
b2ludC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVP
cmRlcjxUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2kKIHRlbXBs
YXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8IFNoYWRvd0luY2x1ZGluZ1RyZWUgPihjb25z
dCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwogdGVtcGxhdGUgUGFydGlh
bE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBj
b25zdCBCb3VuZGFyeVBvaW50Jik7CiAKLU9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3Vu
ZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJiBub2RlKQorc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRv
IHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtNDEsNyAr
NDEsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5v
ZGUoTm9kZSYgbm9kZSkKICAgICByZXR1cm4gQm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUu
Y29tcHV0ZU5vZGVJbmRleCgpIH07CiB9CiAKLU9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VC
b3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5
UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0
byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQm91bmRhcnlQb2ludC5oCmluZGV4IDZkMTgwMjZiZWUwYjc4OTQxNzIzMzk5MmY0NDliYWI0
N2FjYTE5OGUuLjU5NjExMTIzOWIwMzViZDE3ZDAzYjczM2NhZDYwMTU1NWVmZGFmMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApAQCAtNDMsOCArNDMsOCBAQCBib29sIG9wZXJhdG9y
IT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogdGVtcGxh
dGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5k
YXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJik7Ci1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFm
dGVyTm9kZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJik7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5v
ZGUmKTsKIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMo
Tm9kZSYpOwogQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZUNvbnRlbnRz
KE5vZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVy
dHlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmgKaW5kZXgg
N2ZhZWQ5OGEwYjFlYjEyYTllYTBhYWY2ZjAwOTk3MzZkOGJjODM4Yi4uNjBhNWIxMmQ2NWQ3Mzlj
ODI5Yjk5ZTExN2ZlYzNkNGM0MWQyYzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnN0YW50UHJvcGVydHlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQ
cm9wZXJ0eU1hcC5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVD
b25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygpOwogICAgIHZvaWQgdXBkYXRlQ29uc3RhbnRzRm9y
RnVsbHNjcmVlbigpOwogCi0gICAgT3B0aW9uYWw8VmFsdWVzPiBtX3ZhbHVlczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZhbHVlcz4gbV92YWx1ZXM7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
LmNwcAppbmRleCAwNThjZmExMDZkZjc5ODk3OTgwNTc0MzEyMWI3YzI1MmZiYzg0ZmYxLi5iMjZl
NzlhODY4M2I3YmJjM2FhMTFkYjk3NmMyY2Y1M2RlNzQzZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb2xk
RG9jdW1lbnQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX25ld0RvY3VtZW50OwotICAgIE9wdGlv
bmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFF1
YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKICAgICBBdG9tU3RyaW5nIG1fb2xkVmFsdWU7
CiAgICAgQXRvbVN0cmluZyBtX25ld1ZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW1MaXN0LmgKaW5kZXggMjEzNWMyMThjOTAwN2MwMmQ4NDQ3MDNkNDIyNzAwYjMw
ZjAwMmIyYS4uODNjYWRjZWU3OTdlNzEyMThjZmRkZmE5YWQyN2UwNDJjYTkxZWRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgKQEAgLTc5LDcgKzc5LDcgQEAg
cHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIERhdGFUcmFu
c2ZlciYgbV9kYXRhVHJhbnNmZXI7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxWZWN0b3I8UmVmPERh
dGFUcmFuc2Zlckl0ZW0+Pj4gbV9pdGVtczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxEYXRhVHJhbnNmZXJJdGVtPj4+IG1faXRlbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5jcHAKaW5kZXggMTEy
NDc4NThhYjIxYmIxYjVlZTJjZWNiMDA0MWI4NjlkNzM3Y2Q3Ny4uMDY4MTZhNmM4OTE0MTIzMmYy
NjVmZWYwYWEzZDA0OTc3NjAzYWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25E
YXRhLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBAIFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBEZXZpY2VN
b3Rpb25EYXRhOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZU1vdGlv
bkRhdGEpOwogfQogCi1SZWY8RGV2aWNlTW90aW9uRGF0YT4gRGV2aWNlTW90aW9uRGF0YTo6Y3Jl
YXRlKFJlZlB0cjxBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0
aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+
JiYgcm90YXRpb25SYXRlLCBPcHRpb25hbDxkb3VibGU+IGludGVydmFsKQorUmVmPERldmljZU1v
dGlvbkRhdGE+IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0aW9uPiYm
IGFjY2VsZXJhdGlvbiwgUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5LCBSZWZQdHI8Um90YXRpb25SYXRlPiYmIHJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGludGVydmFsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmlj
ZU1vdGlvbkRhdGEoV1RGTW92ZShhY2NlbGVyYXRpb24pLCBXVEZNb3ZlKGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHkpLCBXVEZNb3ZlKHJvdGF0aW9uUmF0ZSksIGludGVydmFsKSk7CiB9CiAK
LURldmljZU1vdGlvbkRhdGE6OkRldmljZU1vdGlvbkRhdGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4m
JiBhY2NlbGVyYXRpb24sIFJlZlB0cjxBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eSwgUmVmUHRyPFJvdGF0aW9uUmF0ZT4mJiByb3RhdGlvblJhdGUsIE9wdGlvbmFs
PGRvdWJsZT4gaW50ZXJ2YWwpCitEZXZpY2VNb3Rpb25EYXRhOjpEZXZpY2VNb3Rpb25EYXRhKFJl
ZlB0cjxBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYm
IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYgcm90
YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpCiAgICAgOiBtX2FjY2Vs
ZXJhdGlvbihXVEZNb3ZlKGFjY2VsZXJhdGlvbikpCiAgICAgLCBtX2FjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHkoV1RGTW92ZShhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KSkKICAgICAs
IG1fcm90YXRpb25SYXRlKFdURk1vdmUocm90YXRpb25SYXRlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlTW90aW9uRGF0YS5oCmluZGV4IGU3OTk0ZTM3ZTcyMDE2ZWRiMzk1NmIzYTdhMjhkYzMwMTcx
MWRjNWMuLmNjZGI4N2EwOGY1NDU0MGFmMmIxMWIyNWUyZWUwNDE2MDg3NGYyNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuaApAQCAtMzksMjcgKzM5LDI3IEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0aW9u
KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUmVmPEFjY2VsZXJhdGlvbj4gY3JlYXRlKE9w
dGlvbmFsPGRvdWJsZT4geCwgT3B0aW9uYWw8ZG91YmxlPiB5LCBPcHRpb25hbDxkb3VibGU+IHop
CisgICAgICAgIHN0YXRpYyBSZWY8QWNjZWxlcmF0aW9uPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxk
b3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZWxlcmF0
aW9uKHgsIHksIHopKTsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4geCgp
IGNvbnN0IHsgcmV0dXJuIG1feDsgfQotICAgICAgICBPcHRpb25hbDxkb3VibGU+IHkoKSBjb25z
dCB7IHJldHVybiBtX3k7IH0KLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyBy
ZXR1cm4gbV96OyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB4KCkgY29uc3QgeyBy
ZXR1cm4gbV94OyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5KCkgY29uc3QgeyBy
ZXR1cm4gbV95OyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB6KCkgY29uc3QgeyBy
ZXR1cm4gbV96OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBBY2NlbGVyYXRpb24oKSA9IGRl
ZmF1bHQ7Ci0gICAgICAgIEFjY2VsZXJhdGlvbihPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFs
PGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91YmxlPiB6KQorICAgICAgICBBY2NlbGVyYXRpb24oc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4geikKICAgICAgICAgICAgIDogbV94KHgpCiAgICAgICAgICAgICAsIG1feSh5
KQogICAgICAgICAgICAgLCBtX3ooeikKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiBtX3g7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbV95OwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IG1fejsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IG1feDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1feTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1fejsKICAgICB9OwogCiAgICAgY2xhc3MgUm90YXRpb25SYXRlIDog
cHVibGljIFJlZkNvdW50ZWQ8RGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlPiB7CkBAIC02
OCw0NiArNjgsNDYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSb3RhdGlvblJhdGUpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBSZWY8
Um90YXRpb25SYXRlPiBjcmVhdGUoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91
YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hKQorICAgICAgICBzdGF0aWMgUmVmPFJv
dGF0aW9uUmF0ZT4gY3JlYXRlKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBnYW1tYSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUm90YXRpb25SYXRlKGFscGhhLCBi
ZXRhLCBnYW1tYSkpOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhbHBo
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGE7IH0KLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBi
ZXRhKCkgY29uc3QgeyByZXR1cm4gbV9iZXRhOyB9Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
Z2FtbWEoKSBjb25zdCB7IHJldHVybiBtX2dhbW1hOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGE7IH0KKyAgICAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdCB7IHJldHVybiBtX2JldGE7IH0KKyAgICAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hKCkgY29uc3QgeyByZXR1cm4gbV9nYW1tYTsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUm90YXRpb25SYXRlKCkgPSBkZWZhdWx0OwotICAgICAg
ICBSb3RhdGlvblJhdGUoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hKQorICAgICAgICBSb3RhdGlvblJhdGUoc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGdhbW1hKQogICAgICAgICAgICAgOiBtX2FscGhhKGFscGhhKQogICAg
ICAgICAgICAgLCBtX2JldGEoYmV0YSkKICAgICAgICAgICAgICwgbV9nYW1tYShnYW1tYSkKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwot
ICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1fYmV0YTsKLSAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBtX2dhbW1hOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9hbHBoYTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fYmV0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fZ2FtbWE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEZXZpY2VNb3Rpb25EYXRhPiBjcmVhdGUoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiwgUmVmUHRy
PEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90
YXRpb25SYXRlPiYmLCBPcHRpb25hbDxkb3VibGU+IGludGVydmFsKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERldmljZU1vdGlvbkRhdGE+IGNyZWF0ZShSZWZQdHI8QWNjZWxlcmF0
aW9uPiYmLCBSZWZQdHI8QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIFJlZlB0cjxSb3RhdGlvblJhdGU+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnRlcnZh
bCk7CiAKICAgICBjb25zdCBBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYWNjZWxlcmF0aW9uLmdldCgpOyB9CiAgICAgY29uc3QgQWNjZWxlcmF0aW9uKiBhY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRpb25J
bmNsdWRpbmdHcmF2aXR5LmdldCgpOyB9CiAgICAgY29uc3QgUm90YXRpb25SYXRlKiByb3RhdGlv
blJhdGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uUmF0ZS5nZXQoKTsgfQogICAgIAotICAg
IE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcnZhbDsgfQogCiBwcml2YXRlOgogICAgIERldmljZU1vdGlvbkRhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgRGV2aWNlTW90aW9uRGF0YShSZWZQdHI8QWNjZWxlcmF0aW9uPiYmLCBSZWZQdHI8QWNj
ZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIFJlZlB0cjxSb3RhdGlv
blJhdGU+JiYsIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpOworICAgIERldmljZU1vdGlvbkRh
dGEoUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiwgUmVmUHRyPEFjY2VsZXJhdGlvbj4mJiBhY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBSZWZQdHI8Um90YXRpb25SYXRlPiYmLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gaW50ZXJ2YWwpOwogCiAgICAgUmVmUHRyPEFjY2VsZXJhdGlvbj4gbV9hY2Nl
bGVyYXRpb247CiAgICAgUmVmUHRyPEFjY2VsZXJhdGlvbj4gbV9hY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5OwogICAgIFJlZlB0cjxSb3RhdGlvblJhdGU+IG1fcm90YXRpb25SYXRlOwotICAg
IE9wdGlvbmFsPGRvdWJsZT4gbV9pbnRlcnZhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bV9pbnRlcnZhbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCmluZGV4IDg0MmY2ZWVjYjMzY2IzZGUxYmM2ZTM1ZmE0
OTcwYjhhYjVkMGZhMjguLjRlYThhOGNjM2I0MGNmZjI4Nzk3MjQ4NDg1YTBhZjIwNTQ3ODcyOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcApAQCAtNDgsNyArNDgs
NyBAQCBEZXZpY2VNb3Rpb25FdmVudDo6RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYQogewogfQogCi1zdGF0aWMgT3B0aW9uYWw8RGV2
aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25E
YXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERl
dmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+IGNvbnZlcnQoY29uc3QgRGV2aWNlTW90aW9u
RGF0YTo6QWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb24pCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRp
b24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRp
YyBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KGNvbnN0
IERldmljZU1vdGlvbkRhdGE6CiAgICAgcmV0dXJuIERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVy
YXRpb24geyBhY2NlbGVyYXRpb24tPngoKSwgYWNjZWxlcmF0aW9uLT55KCksIGFjY2VsZXJhdGlv
bi0+eigpIH07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90YXRp
b25SYXRlPiBjb252ZXJ0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90
YXRpb25SYXRlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0
aW9uUmF0ZT4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJv
dGF0aW9uUmF0ZSkKIHsKICAgICBpZiAoIXJvdGF0aW9uUmF0ZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlv
bkV2ZW50OjpSb3RhdGlvblJhdGU+IGNvbnZlcnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YToKICAg
ICByZXR1cm4gRGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+
YWxwaGEoKSwgcm90YXRpb25SYXRlLT5iZXRhKCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9Owog
fQogCi1zdGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gY29udmVy
dChPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlv
bikKK3N0YXRpYyBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0
KHN0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVy
YXRpb24pCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OkFjY2Vs
ZXJhdGlvbj4gY29udmVydChPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudAogICAgIHJldHVybiBE
ZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShhY2NlbGVyYXRpb24tPngsIGFj
Y2VsZXJhdGlvbi0+eSwgYWNjZWxlcmF0aW9uLT56KTsKIH0KIAotc3RhdGljIFJlZlB0cjxEZXZp
Y2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+IGNvbnZlcnQoT3B0aW9uYWw8RGV2aWNlTW90aW9u
RXZlbnQ6OlJvdGF0aW9uUmF0ZT4mJiByb3RhdGlvblJhdGUpCitzdGF0aWMgUmVmUHRyPERldmlj
ZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gY29udmVydChzdGQ6Om9wdGlvbmFsPERldmljZU1v
dGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlKQogewogICAgIGlmICghcm90
YXRpb25SYXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg2LDI3ICs4NiwyNyBAQCBz
dGF0aWMgUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gY29udmVydChPcHRp
b25hbDxEZXZpY2VNb3Rpb25FdmVudAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25EYXRhOjpSb3Rh
dGlvblJhdGU6OmNyZWF0ZShyb3RhdGlvblJhdGUtPmFscGhhLCByb3RhdGlvblJhdGUtPmJldGEs
IHJvdGF0aW9uUmF0ZS0+Z2FtbWEpOwogfQogCi1PcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6
QWNjZWxlcmF0aW9uPiBEZXZpY2VNb3Rpb25FdmVudDo6YWNjZWxlcmF0aW9uKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gRGV2aWNlTW90aW9u
RXZlbnQ6OmFjY2VsZXJhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnZlcnQobV9kZXZp
Y2VNb3Rpb25EYXRhLT5hY2NlbGVyYXRpb24oKSk7CiB9CiAKLU9wdGlvbmFsPERldmljZU1vdGlv
bkV2ZW50OjpBY2NlbGVyYXRpb24+IERldmljZU1vdGlvbkV2ZW50OjphY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFj
Y2VsZXJhdGlvbj4gRGV2aWNlTW90aW9uRXZlbnQ6OmFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHkoKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0KG1fZGV2aWNlTW90aW9uRGF0YS0+YWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpKTsKIH0KIAotT3B0aW9uYWw8RGV2aWNlTW90aW9u
RXZlbnQ6OlJvdGF0aW9uUmF0ZT4gRGV2aWNlTW90aW9uRXZlbnQ6OnJvdGF0aW9uUmF0ZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IERldmlj
ZU1vdGlvbkV2ZW50Ojpyb3RhdGlvblJhdGUoKSBjb25zdAogewogICAgIHJldHVybiBjb252ZXJ0
KG1fZGV2aWNlTW90aW9uRGF0YS0+cm90YXRpb25SYXRlKCkpOwogfQogCi1PcHRpb25hbDxkb3Vi
bGU+IERldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gRGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9kZXZpY2VNb3Rpb25EYXRhLT5pbnRlcnZhbCgpOwogfQogCi12b2lkIERldmljZU1vdGlvbkV2
ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBi
dWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2Nl
bGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uLCBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNj
ZWxlcmF0aW9uPiYmIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIE9wdGlvbmFsPERldmlj
ZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+JiYgcm90YXRpb25SYXRlLCBPcHRpb25hbDxkb3Vi
bGU+IGludGVydmFsKQordm9pZCBEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxl
LCBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxl
cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYg
YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxEZXZpY2VNb3Rpb25F
dmVudDo6Um90YXRpb25SYXRlPiYmIHJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGludGVydmFsKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCmluZGV4IGU1MGY3NDYxZjQy
OWI3ZDVkYzQ2Njk5ZWQ0MjVkNGE4MTkwMWUwMjEuLjhhM2M0ZmMzYzZlZDA3ZWNmZTUzZDRjNjRm
NDI5OGVkYzU2NjljYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rp
b25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5oCkBA
IC00MSwxNiArNDEsMTYgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0
aCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24KICAgICBzdHJ1Y3QgQWNjZWxlcmF0aW9u
IHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB4OwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IHk7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gejsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gejsKICAgICB9OwogCiAgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMg
d2l0aCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUKICAgICBzdHJ1Y3QgUm90YXRpb25S
YXRlIHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBhbHBoYTsKLSAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiBiZXRhOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGdhbW1hOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBiZXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWE7CiAgICAgfTsKIAog
ICAgIHN0YXRpYyBSZWY8RGV2aWNlTW90aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIERldmljZU1vdGlvbkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCkBAIC02Mywx
MiArNjMsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VN
b3Rpb25FdmVudCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8QWNjZWxlcmF0aW9uPiBhY2NlbGVy
YXRpb24oKSBjb25zdDsKLSAgICBPcHRpb25hbDxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHkoKSBjb25zdDsKLSAgICBPcHRpb25hbDxSb3RhdGlvblJhdGU+IHJvdGF0
aW9uUmF0ZSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwoKSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPEFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uKCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHkoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJvdGF0aW9uUmF0ZT4gcm90YXRpb25SYXRl
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGludGVydmFsKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGluaXREZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBi
b29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8QWNjZWxlcmF0aW9uPiYmLCBP
cHRpb25hbDxBY2NlbGVyYXRpb24+JiYsIE9wdGlvbmFsPFJvdGF0aW9uUmF0ZT4mJiwgT3B0aW9u
YWw8ZG91YmxlPik7CisgICAgdm9pZCBpbml0RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0aW9uYWw8
QWNjZWxlcmF0aW9uPiYmLCBzdGQ6Om9wdGlvbmFsPEFjY2VsZXJhdGlvbj4mJiwgc3RkOjpvcHRp
b25hbDxSb3RhdGlvblJhdGU+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPik7CiAKICNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIHVzaW5nIFBlcm1pc3Npb25TdGF0ZSA9IERldmlj
ZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCmluZGV4IDNiOWQ3MTMxNTEzY2Y3M2QzNzlkNjA2
MGViMzgzOWRmMTY5NGViODMuLjY2OGE0MWY1NDgwZjE3NGVmNTBkOTYyYzBlYjY5MDBjYjdmNjgx
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCkBA
IC0zMSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5T
b3VyY2UgZGlmZmVyZW5jZXMuCi1SZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmll
bnRhdGlvbkRhdGE6OmNyZWF0ZShPcHRpb25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3Vi
bGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFz
c0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0FjY3VyYWN5KQorUmVmPERldmljZU9y
aWVudGF0aW9uRGF0YT4gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGV2aWNlT3JpZW50YXRpb25EYXRhKGFscGhhLCBiZXRhLCBnYW1tYSwgY29tcGFz
c0hlYWRpbmcsIGNvbXBhc3NBY2N1cmFjeSkpOwogfQogCi1EZXZpY2VPcmllbnRhdGlvbkRhdGE6
OkRldmljZU9yaWVudGF0aW9uRGF0YShPcHRpb25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxk
b3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIE9wdGlvbmFsPGRvdWJsZT4gY29t
cGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0FjY3VyYWN5KQorRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoc3RkOjpvcHRpb25hbDxkb3VibGU+
IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpCiAgICAgOiBtX2FscGhhKGFscGhhKQogICAgICwg
bV9iZXRhKGJldGEpCiAgICAgLCBtX2dhbW1hKGdhbW1hKQpAQCAtNDcsMTIgKzQ3LDEyIEBAIERl
dmljZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50YXRpb25EYXRhKE9wdGlvbmFsPGRvdWJs
ZT4gYWxwaGEsIE9wdGlvbmFsPGRvCiAKICNlbHNlCiAKLVJlZjxEZXZpY2VPcmllbnRhdGlvbkRh
dGE+IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEs
IE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8
Ym9vbD4gYWJzb2x1dGUpCitSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRh
dGlvbkRhdGE6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlT3Jp
ZW50YXRpb25EYXRhKGFscGhhLCBiZXRhLCBnYW1tYSwgYWJzb2x1dGUpKTsKIH0KIAotRGV2aWNl
T3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoT3B0aW9uYWw8ZG91YmxlPiBh
bHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRp
b25hbDxib29sPiBhYnNvbHV0ZSkKK0RldmljZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50
YXRpb25EYXRhKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGJldGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgc3RkOjpvcHRpb25hbDxib29s
PiBhYnNvbHV0ZSkKICAgICA6IG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX2JldGEoYmV0YSkKICAg
ICAsIG1fZ2FtbWEoZ2FtbWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
T3JpZW50YXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25E
YXRhLmgKaW5kZXggZGFjYjNkNTI4MDBlY2MwYWM5YzcwNTkxMzEyMTdjZDU4Mzk4NDQ2Yy4uYzgw
NTFkZGY0NzY4MzRiOTBiMGFlNzFkYjhjYTUzZmIxYzA4ZjQ2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaApAQCAtMzksMzcgKzM5LDM3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoT3B0aW9uYWw8ZG91YmxlPiBh
bHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRp
b25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1
cmFjeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRh
dGE+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFj
eSk7CiAjZWxzZQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlT3JpZW50YXRp
b25EYXRhPiBjcmVhdGUoT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0
ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRh
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1
dGUpOwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1
cm4gbV9hbHBoYTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmV0YTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEoKSBjb25zdCB7IHJldHVybiBt
X2dhbW1hOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhKCkgY29uc3QgeyByZXR1
cm4gbV9hbHBoYTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZXRhOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hKCkgY29uc3Qg
eyByZXR1cm4gbV9nYW1tYTsgfQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9u
YWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGFzc0hlYWRp
bmc7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcGFzc0FjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBh
c3NIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXNzSGVhZGluZzsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvbXBh
c3NBY2N1cmFjeTsgfQogI2Vsc2UKLSAgICBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWJzb2x1dGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFic29sdXRl
KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
RGV2aWNlT3JpZW50YXRpb25EYXRhKCkgPSBkZWZhdWx0OwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9w
dGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8ZG91
YmxlPiBjb21wYXNzSGVhZGluZywgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNjdXJhY3kpOwor
ICAgIERldmljZU9yaWVudGF0aW9uRGF0YShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGNvbXBhc3NBY2N1cmFjeSk7CiAjZWxzZQotICAgIERldmljZU9yaWVudGF0aW9uRGF0YShPcHRp
b25hbDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJs
ZT4gZ2FtbWEsIE9wdGlvbmFsPGJvb2w+IGFic29sdXRlKTsKKyAgICBEZXZpY2VPcmllbnRhdGlv
bkRhdGEoc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGFi
c29sdXRlKTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2FscGhhOwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gbV9iZXRhOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9nYW1tYTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9hbHBoYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gbV9iZXRhOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2dhbW1hOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2NvbXBhc3NIZWFkaW5nOwot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jb21wYXNzQWNjdXJhY3k7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IG1fY29tcGFzc0hlYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1f
Y29tcGFzc0FjY3VyYWN5OwogI2Vsc2UKLSAgICBPcHRpb25hbDxib29sPiBtX2Fic29sdXRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9hYnNvbHV0ZTsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCmluZGV4IDExZjdhZWEz
MzAyNDlhMzFkNWJhY2EzNGIwYWUzNzU0OTJjOTk4ZWMuLmE1NmQ3OTJiZWY0N2Q0NzlkODI0N2U4
Mjk1MmI0ZWZmOGYyMjMzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25FdmVudC5jcHAKQEAgLTQ4LDM0ICs0OCwzNCBAQCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
OjpEZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2
aQogewogfQogCi1PcHRpb25hbDxkb3VibGU+IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFscGhh
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojph
bHBoYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmFscGhhKCk7CiB9CiAK
LU9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24tPmJldGEoKTsKIH0KIAotT3B0aW9uYWw8ZG91
YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX29yaWVudGF0aW9uLT5nYW1tYSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAotT3B0aW9uYWw8ZG91YmxlPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpjb21wYXNzSGVh
ZGluZygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6Y29tcGFzc0hlYWRpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5j
b21wYXNzSGVhZGluZygpOwogfQogCi1PcHRpb25hbDxkb3VibGU+IERldmljZU9yaWVudGF0aW9u
RXZlbnQ6OmNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6Y29tcGFzc0FjY3VyYWN5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9vcmllbnRhdGlvbi0+Y29tcGFzc0FjY3VyYWN5KCk7CiB9CiAKLXZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4g
YWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0
aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzQWNj
dXJhY3kpCit2b2lkIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlv
bkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxh
YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBi
ZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBj
b21wYXNzSGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSkKIHsK
ICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsMTIg
Kzg2LDEyIEBAIHZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0
aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwKIAogI2Vsc2UKIAotT3B0aW9uYWw8Ym9v
bD4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGUoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxib29sPiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fb3JpZW50YXRpb24tPmFic29sdXRlKCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxw
aGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9u
YWw8Ym9vbD4gYWJzb2x1dGUpCit2b2lkIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZp
Y2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywg
Ym9vbCBjYW5jZWxhYmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBiZXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gYWJzb2x1dGUpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5o
CmluZGV4IDgxOWVjYmIwNjg1OTExNmNjOTgwYmY3MmZhM2EzY2U5MmI0MDJkODAuLjFlZWYzNjc5
MGJiOTU0ODE0YTE1MGE3N2U5MDk2Y2IyMjBiZWUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uRXZlbnQuaApAQCAtNDksMTkgKzQ5LDE5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uRXZlbnQoKTsKIAotICAgIE9wdGlvbmFsPGRv
dWJsZT4gYWxwaGEoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGJldGEoKSBjb25zdDsK
LSAgICBPcHRpb25hbDxkb3VibGU+IGdhbW1hKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGFscGhhKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEoKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEoKSBjb25zdDsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZygp
IGNvbnN0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0FjY3VyYWN5KCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NIZWFkaW5nKCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0OwogCi0gICAgdm9pZCBp
bml0RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1
YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8
ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+IGNv
bXBhc3NIZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSk7CisgICAgdm9p
ZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29s
IGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFscGhhLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdhbW1hLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBjb21wYXNzQWNjdXJhY3kpOwogI2Vsc2UKLSAgICBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSgp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUoKSBjb25zdDsKIAotICAg
IHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Ym9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9w
dGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9v
bD4gYWJzb2x1dGUpOworICAgIHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBhbHBoYSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJldGEsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBnYW1tYSwgc3RkOjpvcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCBiMTk3NTllNGNmOWU1YzZiNGM4YmJkOGE2MmIzNDBmY2M2ODcwYmU1Li43NDAxNGQz
MjAzNDRjYzFiODk5Y2ZkYmNjZTEwYWY2MGJkMmVkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTE1OTUsNyArMTU5NSw3IEBAIFJlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQogICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UoeyAq
Ym91bmRhcnksICpib3VuZGFyeSB9KTsKIH0KIAotT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gRG9j
dW1lbnQ6OmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBv
aW50KQorc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBEb2N1bWVudDo6Y2FyZXRQb3NpdGlv
bkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpCiB7CiAgICAgaWYgKCFo
YXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01
MzAxLDcgKzUzMDEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0RG9tYWluKGNv
bnN0IFN0cmluZyYgbmV3RG9tYWluKQogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRG9jdW1l
bnQ6Om92ZXJyaWRlTGFzdE1vZGlmaWVkKGNvbnN0IE9wdGlvbmFsPFdhbGxUaW1lPiYgbGFzdE1v
ZGlmaWVkKQordm9pZCBEb2N1bWVudDo6b3ZlcnJpZGVMYXN0TW9kaWZpZWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4mIGxhc3RNb2RpZmllZCkKIHsKICAgICBtX292ZXJyaWRlTGFzdE1v
ZGlmaWVkID0gbGFzdE1vZGlmaWVkOwogfQpAQCAtNTMwOSw3ICs1MzA5LDcgQEAgdm9pZCBEb2N1
bWVudDo6b3ZlcnJpZGVMYXN0TW9kaWZpZWQoY29uc3QgT3B0aW9uYWw8V2FsbFRpbWU+JiBsYXN0
TW9kaWZpZWQpCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNkb20tZG9jdW1lbnQtbGFzdG1vZGlmaWVkCiBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RN
b2RpZmllZCgpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGVUaW1lOworICAg
IHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRhdGVUaW1lOwogICAgIGlmIChtX292ZXJyaWRlTGFz
dE1vZGlmaWVkKQogICAgICAgICBkYXRlVGltZSA9IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWQ7CiAg
ICAgZWxzZSBpZiAobG9hZGVyKCkpCkBAIC02MzU3LDcgKzYzNTcsNyBAQCB2b2lkIERvY3VtZW50
OjpkZXRhY2hSYW5nZShSYW5nZSYgcmFuZ2UpCiAgICAgbV9yYW5nZXMucmVtb3ZlKCZyYW5nZSk7
CiB9CiAKLU9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50OjpnZXRDU1NDYW52YXND
b250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCitzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50Ojpn
ZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1l
bnQgPSBnZXRDU1NDYW52YXNFbGVtZW50KG5hbWUpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTc3
NzcsMTAgKzc3NzcsMTAgQEAgc3RhdGljIHZvaWQgZXhwYW5kUm9vdEJvdW5kc1dpdGhSb290TWFy
Z2luKEZsb2F0UmVjdCYgbG9jYWxSb290Qm91bmRzLCBjb25zdCBMZW4KICAgICBsb2NhbFJvb3RC
b3VuZHMuZXhwYW5kKHJvb3RNYXJnaW5GbG9hdEJveCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxM
YXlvdXRSZWN0PiBjb21wdXRlQ2xpcHBlZFJlY3RJblJvb3RDb250ZW50c1NwYWNlKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZUNsaXBwZWRSZWN0SW5Sb290Q29udGVudHNT
cGFjZShjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikKIHsKICAgICBPcHRpb25TZXQ8UmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHRPcHRp
b24+IHZpc2libGVSZWN0T3B0aW9ucyA9IHsgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRl
eHRPcHRpb246OlVzZUVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24sIFJlbmRlck9iamVjdDo6Vmlz
aWJsZVJlY3RDb250ZXh0T3B0aW9uOjpBcHBseUNvbXBvc2l0ZWRDbGlwcywgUmVuZGVyT2JqZWN0
OjpWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OkFwcGx5Q29tcG9zaXRlZENvbnRhaW5lclNjcm9s
bHMgfTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0SW5GcmFtZUFic29sdXRlU3BhY2Ug
PSByZW5kZXJlci0+Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIocmVjdCwgJnJlbmRlcmVy
LT52aWV3KCksICB7ZmFsc2UgLyogaGFzUG9zaXRpb25GaXhlZERlc2NlbmRhbnQgKi8sIGZhbHNl
IC8qIGRpcnR5UmVjdElzRmxpcHBlZCAqLywgdmlzaWJsZVJlY3RPcHRpb25zIH0pOworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdEluRnJhbWVBYnNvbHV0ZVNwYWNlID0gcmVuZGVy
ZXItPmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsICZyZW5kZXJlci0+dmlldygp
LCAge2ZhbHNlIC8qIGhhc1Bvc2l0aW9uRml4ZWREZXNjZW5kYW50ICovLCBmYWxzZSAvKiBkaXJ0
eVJlY3RJc0ZsaXBwZWQgKi8sIHZpc2libGVSZWN0T3B0aW9ucyB9KTsKICAgICBpZiAoIXJlY3RJ
bkZyYW1lQWJzb2x1dGVTcGFjZSB8fCByZW5kZXJlci0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKQog
ICAgICAgICByZXR1cm4gcmVjdEluRnJhbWVBYnNvbHV0ZVNwYWNlOwogCkBAIC03ODA0LDcgKzc4
MDQsNyBAQCBzdHJ1Y3QgSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZSB7CiAgICAgYm9vbCBp
c0ludGVyc2VjdGluZyB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0
aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldyYg
ZnJhbWVWaWV3LCBjb25zdCBJbnRlcnNlY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIEVsZW1lbnQm
IHRhcmdldCwgYm9vbCBhcHBseVJvb3RNYXJnaW4pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRl
cnNlY3Rpb25PYnNlcnZhdGlvblN0YXRlPiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVW
aWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludGVyc2VjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgRWxl
bWVudCYgdGFyZ2V0LCBib29sIGFwcGx5Um9vdE1hcmdpbikKIHsKICAgICBhdXRvKiB0YXJnZXRS
ZW5kZXJlciA9IHRhcmdldC5yZW5kZXJlcigpOwogICAgIGlmICghdGFyZ2V0UmVuZGVyZXIpCkBA
IC03ODUzLDcgKzc4NTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRp
b25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldwogICAgIH0gZWxzZSBp
ZiAoaXM8UmVuZGVyTGluZUJyZWFrPih0YXJnZXRSZW5kZXJlcikpCiAgICAgICAgIGxvY2FsVGFy
Z2V0Qm91bmRzID0gZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPih0YXJnZXRSZW5kZXJlciktPmxp
bmVzQm91bmRpbmdCb3goKTsKIAotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IHJvb3RMb2NhbFRh
cmdldFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiByb290TG9jYWxUYXJnZXRS
ZWN0OwogICAgIGlmIChvYnNlcnZlci5yb290KCkpIHsKICAgICAgICAgT3B0aW9uU2V0PFJlbmRl
ck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uPiB2aXNpYmxlUmVjdE9wdGlvbnMgPSB7
IFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZl
SW50ZXJzZWN0aW9uLCBSZW5kZXJPYmplY3Q6OlZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6QXBw
bHlDb21wb3NpdGVkQ2xpcHMsIFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0T3B0aW9u
OjpBcHBseUNvbXBvc2l0ZWRDb250YWluZXJTY3JvbGxzIH07CiAgICAgICAgIHJvb3RMb2NhbFRh
cmdldFJlY3QgPSB0YXJnZXRSZW5kZXJlci0+Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIo
bG9jYWxUYXJnZXRCb3VuZHMsIHJvb3RSZW5kZXJlciwgeyBmYWxzZSAvKiBoYXNQb3NpdGlvbkZp
eGVkRGVzY2VuZGFudCAqLywgZmFsc2UgLyogZGlydHlSZWN0SXNGbGlwcGVkICovLCB2aXNpYmxl
UmVjdE9wdGlvbnMgfSk7CkBAIC03OTM5LDcgKzc5MzksNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50SW50ZXJzZWN0aW9uUmVjdCA9IHRhcmdldEZyYW1lVmlldy0+YWJzb2x1dGVUb0NsaWVudFJl
Y3QoaW50ZXJzZWN0aW9uU3RhdGUtPmFic29sdXRlSW50ZXJzZWN0aW9uUmVjdCwgdGFyZ2V0LT5y
ZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgT3B0aW9uYWw8RE9NUmVjdEluaXQ+IHJlcG9ydGVkUm9vdEJvdW5k
czsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPERPTVJlY3RJbml0PiByZXBvcnRlZFJv
b3RCb3VuZHM7CiAgICAgICAgICAgICAgICAgaWYgKGlzU2FtZU9yaWdpbk9ic2VydmF0aW9uKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVkUm9vdEJvdW5kcyA9IERPTVJlY3RJbml0KHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJvb3RCb3VuZHMueCgpLApAQCAtODIxNSwx
MiArODIxNSwxMiBAQCBMb2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9s
b2dnZXI7CiB9CiAgICAgCi1PcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJ
RCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6cGFnZUlE
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkucGFnZUlEKCk7CiB9CiAK
LU9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3VtZW50OjpmcmFtZUlEKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogfQpAQCAtODgzNiw3ICs4
ODM2LDcgQEAgdm9pZCBEb2N1bWVudDo6Y2xlYXJDYW52YXNQcmVwYXJhdGlvbihIVE1MQ2FudmFz
RWxlbWVudCYgY2FudmFzKQogICAgIG1fY2FudmFzZXNOZWVkaW5nRGlzcGxheVByZXBhcmF0aW9u
LnJlbW92ZShjYW52YXMpOwogfQogCi12b2lkIERvY3VtZW50OjpjYW52YXNDaGFuZ2VkKENhbnZh
c0Jhc2UmIGNhbnZhc0Jhc2UsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mKQordm9pZCBEb2N1
bWVudDo6Y2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4mKQogewogICAgIGlmICghaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNh
bnZhc0Jhc2UpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk4MTM0
N2ZlNzUwNzE4MDJjMDIyNzEzMGY0MjYzZjU4ZWE0MGRkNjguLjZiMDFkYzY5YzAwYWUyYTc2MzFl
M2E3NjYzYjI5YmVkNmY0ZDAwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00NDYsNyArNDQ2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0
dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGlu
dCB5KTsKLSAgICBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBjYXJldFBvc2l0aW9uRnJvbVBvaW50
KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CisgICAgc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBjYXJldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRQb2ludCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBzY3JvbGxpbmdFbGVtZW50
Rm9yQVBJKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogc2Nyb2xsaW5nRWxlbWVudCgp
OwpAQCAtNjQ1LDggKzY0NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckFYT2JqZWN0Q2Fj
aGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgp
IGNvbnN0OwogCiAgICAgLy8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFi
aWMgcGFnZXMgcmlnaHQKICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwpAQCAtOTQ2LDcg
Kzk0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZG9tYWluKCkgY29u
c3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9t
YWluKTsKIAotICAgIHZvaWQgb3ZlcnJpZGVMYXN0TW9kaWZpZWQoY29uc3QgT3B0aW9uYWw8V2Fs
bFRpbWU+Jik7CisgICAgdm9pZCBvdmVycmlkZUxhc3RNb2RpZmllZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0TW9kaWZpZWQo
KSBjb25zdDsKIAogICAgIC8vIFRoZSBjb29raWVVUkwgaXMgdXNlZCB0byBxdWVyeSB0aGUgY29v
a2llIGRhdGFiYXNlIGZvciB0aGlzIGRvY3VtZW50J3MKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aE1pc3NpbmdTdHlsZSgpIHsgbV9oYXNOb2Rl
c1dpdGhNaXNzaW5nU3R5bGUgPSB0cnVlOyB9CiAKICAgICAvLyBFeHRlbnNpb24gZm9yIG1hbmlw
dWxhdGluZyBjYW52YXMgZHJhd2luZyBjb250ZXh0cyBmb3IgdXNlIGluIENTUwotICAgIE9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IGdldENTU0NhbnZhc0NvbnRleHQoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiBnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwog
ICAgIEhUTUxDYW52YXNFbGVtZW50KiBnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgU3RyaW5nIG5hbWVGb3JDU1NDYW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52
YXNFbGVtZW50JikgY29uc3Q7CiAKQEAgLTE2MDcsNyArMTYwNyw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJlcGFyZUNhbnZhc2VzRm9yRGlzcGxheUlmTmVlZGVkKCk7CiAgICAgdm9pZCBjbGVh
ckNhbnZhc1ByZXBhcmF0aW9uKEhUTUxDYW52YXNFbGVtZW50Jik7Ci0gICAgdm9pZCBjYW52YXND
aGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7Cisg
ICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mKSBmaW5hbDsKICAgICB2b2lkIGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZp
bmFsIHsgfTsKICAgICB2b2lkIGNhbnZhc0Rlc3Ryb3llZChDYW52YXNCYXNlJikgZmluYWw7CiAK
QEAgLTE3OTQsNyArMTc5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1D
b250cm9sbGVyPiBtX2Zvcm1Db250cm9sbGVyOwogCiAgICAgQ29sb3IgbV9jYWNoZWRUaGVtZUNv
bG9yOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4+PiBtX21l
dGFUaGVtZUNvbG9yRWxlbWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vha1B0cjxI
VE1MTWV0YUVsZW1lbnQ+Pj4gbV9tZXRhVGhlbWVDb2xvckVsZW1lbnRzOwogICAgIFdlYWtQdHI8
SFRNTE1ldGFFbGVtZW50PiBtX2FjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudDsKICAgICBDb2xv
ciBtX2FwcGxpY2F0aW9uTWFuaWZlc3RUaGVtZUNvbG9yOwogCkBAIC0yMDEzLDcgKzIwMTMsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fY2FjaGVkRE9NQ29va2llczsKIAotICAgIE9wdGlv
bmFsPFdhbGxUaW1lPiBtX292ZXJyaWRlTGFzdE1vZGlmaWVkOworICAgIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWQ7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxF
bGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlzYWJs
ZWRGaWVsZHNldEVsZW1lbnRzQ291bnQgeyAwIH07CkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBwcml2
YXRlOgogICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGU7CiAg
ICAgYm9vbCBtX3VzZXJIYXNJbnRlcmFjdGVkV2l0aE1lZGlhRWxlbWVudCB7IGZhbHNlIH07CiAg
ICAgQmFja0ZvcndhcmRDYWNoZVN0YXRlIG1fYmFja0ZvcndhcmRDYWNoZVN0YXRlIHsgTm90SW5C
YWNrRm9yd2FyZENhY2hlIH07Ci0gICAgT3B0aW9uYWw8UmVmZXJyZXJQb2xpY3k+IG1fcmVmZXJy
ZXJQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gbV9yZWZlcnJlclBv
bGljeTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IENvbXBsZXRlIH07CiAKICAgICBN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggMjM3MDk1
NGUzNmE4ODlmYmVlOGY4NzYyYjRiZGM3ODJiZThhYWEwZS4uZTAxNGNiNTJiYzc4ZDJiNDU0ZDRi
NjE1ODk3NDQwODRlMDYxZjk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm8K
ICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNj
ZXNzKFdURk1vdmUocHJvbWlzZSkpOwogfQogCi1PcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKK3N0ZDo6b3B0aW9uYWw8Ym9v
bD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpCiB7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZCgpKTsKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlCiAgICAg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLU9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jl
c3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hl
Y2soKQorc3RkOjpvcHRpb25hbDxTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ+IERvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKIHsKICAgICBBU1NF
UlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKaW5kZXggOWYwMjk3OTk1
ZjIwNzVlMDA1N2IxMmIwZDMwNmYzOThhMzVkNjMzNy4uN2VmNGVhYzJiMDYyMzUzZDY4ZGRkOGU4
NTcxNGE5NTg2ZTczYjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3RvcmFnZUFjY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1
bHQgewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluOwogICAgIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiBjb25zdCB1bnNpZ25lZCBtYXhOdW1iZXJPZlRpbWVzRXhwbGljaXRs
eURlbmllZEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzID0gMjsKQEAgLTg1LDExICs4NSwxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1
bWVudFF1aXJrKERvY3VtZW50JiBob3N0aW5nRG9jdW1lbnQsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVxdWVzdGluZ0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCk+JiYpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0b3JhZ2VB
Y2Nlc3NRdWlja0NoZWNrKCk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNTdG9yYWdlQWNj
ZXNzUXVpY2tDaGVjaygpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKTsKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NRdWlyaygpOwogCi0gICAgT3B0
aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0PiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNr
Q2hlY2soKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzRm9yRG9jdW1lbnRRdWlyayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3Vt
ZW50UXVpcmsoUmVnaXN0cmFibGVEb21haW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CkBAIC0xMTksMjkgKzEx
OSwyOSBAQCB2b2lkIFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJl
cXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0PiBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNz
UmVzdWx0PiBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ+IHdhc0dyYW50ZWQ7
CisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZD4gd2FzR3JhbnRlZDsK
ICAgICBkZWNvZGVyID4+IHdhc0dyYW50ZWQ7CiAgICAgaWYgKCF3YXNHcmFudGVkKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duPiBwcm9tcHRXYXNTaG93bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bj4gcHJvbXB0V2FzU2hvd247CiAgICAgZGVjb2RlciA+PiBwcm9tcHRX
YXNTaG93bjsKICAgICBpZiAoIXByb21wdFdhc1Nob3duKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1Njb3BlPiBzY29wZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NTY29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBz
Y29wZTsKICAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1lRG9tYWluOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1lRG9tYWluOwogICAgIGRlY29kZXIg
Pj4gdG9wRnJhbWVEb21haW47CiAgICAgaWYgKCF0b3BGcmFtZURvbWFpbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJG
cmFtZURvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFt
ZURvbWFpbjsKICAgICBkZWNvZGVyID4+IHN1YkZyYW1lRG9tYWluOwogICAgIGlmICghc3ViRnJh
bWVEb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggMGE1MjhlYmI3NWYyMzBmMmY2OTcxNGNjNjMxNTJkZTNmZjQ0Mzg2MC4uNzA3OGVh
OTcyNmU2YjI5YWY3Yzc1NDBlOTM1OWYyMGM5ZGU1ZTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMjUwLDcgKzI1MCw3IEBAIGlubGluZSB2b2lkIE5vZGU6OnNldFRhYkluZGV4U3RhdGUo
VGFiSW5kZXhTdGF0ZSBzdGF0ZSkKICAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMp
OwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+
IHRhYkluZGV4KQordm9pZCBFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpvcHRp
b25hbDxpbnQ+IHRhYkluZGV4KQogewogICAgIGlmICghdGFiSW5kZXgpIHsKICAgICAgICAgc2V0
VGFiSW5kZXhTdGF0ZShUYWJJbmRleFN0YXRlOjpOb3RTZXQpOwpAQCAtMjY5LDcgKzI2OSw3IEBA
IHZvaWQgRWxlbWVudDo6c2V0VGFiSW5kZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5k
ZXgpCiAgICAgfSgpKTsKIH0KIAotT3B0aW9uYWw8aW50PiBFbGVtZW50Ojp0YWJJbmRleFNldEV4
cGxpY2l0bHkoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0
RXhwbGljaXRseSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKICAg
ICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5vdFNldDoKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnNldEJlaW5nRHJhZ2dlZChib29sIGZsYWcpCiAgICAgZG9jdW1lbnQoKS51c2VyQWN0
aW9uRWxlbWVudHMoKS5zZXRCZWluZ0RyYWdnZWQoKnRoaXMsIGZsYWcpOwogfQogCi1pbmxpbmUg
U2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9wdGlv
bmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlLCBib29sIGlzTFRSKQoraW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVu
dEZvcklubGluZURpcmVjdGlvbihzdGQ6Om9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4g
cG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBib29sIGlzTFRSKQogewogICAgIHN3
aXRjaCAocG9zaXRpb24udmFsdWVfb3IoU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpOZWFyZXN0KSkg
ewogICAgIGNhc2UgU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydDogewpAQCAtODY0LDcgKzg2
NCw3IEBAIGlubGluZSBTY3JvbGxBbGlnbm1lbnQgdG9TY3JvbGxBbGlnbm1lbnRGb3JJbmxpbmVE
aXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xsTG9naWNhCiAgICAgfQogfQogCi1pbmxpbmUgU2Nyb2xs
QWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9yQmxvY2tEaXJlY3Rpb24oT3B0aW9uYWw8U2Ny
b2xsTG9naWNhbFBvc2l0aW9uPiBwb3NpdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitp
bmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9yQmxvY2tEaXJlY3Rpb24o
c3RkOjpvcHRpb25hbDxTY3JvbGxMb2dpY2FsUG9zaXRpb24+IHBvc2l0aW9uLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkKIHsKICAgICBzd2l0Y2ggKHBvc2l0aW9uLnZhbHVlX29yKFNjcm9sbExv
Z2ljYWxQb3NpdGlvbjo6U3RhcnQpKSB7CiAgICAgY2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246
OlN0YXJ0OiB7CkBAIC05MDcsNyArOTA3LDcgQEAgaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Nj
cm9sbEFsaWdubWVudEZvckJsb2NrRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWwKICAg
ICB9CiB9CiAKLXZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoT3B0aW9uYWw8VmFyaWFudDxi
b29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+PiYmIGFyZykKK3ZvaWQgRWxlbWVudDo6c2Nyb2xs
SW50b1ZpZXcoc3RkOjpvcHRpb25hbDxWYXJpYW50PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0aW9u
cz4+JiYgYXJnKQogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKQEAgLTE1ODMsNyArMTU4Myw3IEBAIExheW91dFJlY3QgRWxlbWVudDo6
YWJzb2x1dGVFdmVudEhhbmRsZXJCb3VuZHMoYm9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxl
bWVuCiAgICAgcmV0dXJuIGFic29sdXRlRXZlbnRCb3VuZHNPZkVsZW1lbnRBbmREZXNjZW5kYW50
cyhpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxz
dGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgTGF5b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRp
bmdCb3goRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxS
ZW5kZXJPYmplY3QqLCBMYXlvdXRSZWN0Pj4gbGlzdEJveEVsZW1lbnRCb3VuZGluZ0JveChFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50Owog
ICAgIGJvb2wgaXNHcm91cDsKQEAgLTE2MDAsNyArMTYwMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxz
dGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgTGF5b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRp
bmdCb3goCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiByZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KCpzZWxlY3RFbGVtZW50LT5yZW5kZXJlcigpKTsK
LSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFJlY3Q+IGJvdW5kaW5nQm94OwogICAgIGludCBvcHRpb25JbmRleCA9IDA7CiAgICAg
Zm9yIChhdXRvKiBpdGVtIDogc2VsZWN0RWxlbWVudC0+bGlzdEl0ZW1zKCkpIHsKICAgICAgICAg
aWYgKGl0ZW0gPT0gJmVsZW1lbnQpIHsKQEAgLTE2NDYsNyArMTY0Niw3IEBAIFJlZjxET01SZWN0
TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMoKQogICAgIHJldHVybiBET01SZWN0TGlzdDo6
Y3JlYXRlKHF1YWRzKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZs
b2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpCitz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCBGbG9hdFJlY3Q+PiBFbGVtZW50
Ojpib3VuZGluZ0Fic29sdXRlUmVjdFdpdGhvdXRMYXlvdXQoKQogewogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1
YWRzOwpAQCAtMTcxNSw3ICsxNzE1LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0
QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogfQogCiAv
LyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1lbGVtZW50LXRvZ2dsZWF0dHJpYnV0
ZQotRXhjZXB0aW9uT3I8Ym9vbD4gRWxlbWVudDo6dG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21T
dHJpbmcmIHF1YWxpZmllZE5hbWUsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKQorRXhjZXB0aW9uT3I8
Ym9vbD4gRWxlbWVudDo6dG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmll
ZE5hbWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpCiB7CiAgICAgaWYgKCFEb2N1bWVudDo6
aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKQEAgLTQzNTEsNyArNDM1MSw3IEBAIHZvaWQgRWxlbWVu
dDo6ZGlkRGV0YWNoUmVuZGVyZXJzKCkKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZl
Q2FsbGJhY2tzKCkpOwogfQogCi1PcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHls
ZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAg
ICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC00NTY0LDEwICs0NTY0LDEwIEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmZp
bmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50Ojph
bmltYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+JiYga2V5ZnJhbWVzLCBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwg
S2V5ZnJhbWVBbmltYXRpb25PcHRpb25zPj4mJiBvcHRpb25zKQorRXhjZXB0aW9uT3I8UmVmPFdl
YkFuaW1hdGlvbj4+IEVsZW1lbnQ6OmFuaW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJiBrZXlmcmFtZXMsIHN0
ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYg
b3B0aW9ucykKIHsKICAgICBTdHJpbmcgaWQgPSAiIjsKLSAgICBPcHRpb25hbDxWYXJpYW50PGRv
dWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPj4ga2V5ZnJhbWVFZmZlY3RPcHRpb25zOworICAg
IHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4+IGtl
eWZyYW1lRWZmZWN0T3B0aW9uczsKICAgICBpZiAob3B0aW9ucykgewogICAgICAgICBhdXRvIG9w
dGlvbnNWYWx1ZSA9IG9wdGlvbnMudmFsdWUoKTsKICAgICAgICAgVmFyaWFudDxkb3VibGUsIEtl
eWZyYW1lRWZmZWN0T3B0aW9ucz4ga2V5ZnJhbWVFZmZlY3RPcHRpb25zVmFyaWFudDsKQEAgLTQ1
OTUsNyArNDU5NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+PiBFbGVtZW50Ojph
bmltYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iCiAgICAgcmV0dXJuIGFuaW1h
dGlvbjsKIH0KIAotVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmlt
YXRpb25zKE9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb25zPiBvcHRpb25zKQorVmVjdG9yPFJl
ZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKHN0ZDo6b3B0aW9uYWw8
R2V0QW5pbWF0aW9uc09wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgLy8gSWYgd2UgYXJlIHRvIHJl
dHVybiBhbmltYXRpb25zIGluIHRoZSBzdWJ0cmVlLCB3ZSBjYW4gZ2V0IGFsbCBvZiB0aGUgZG9j
dW1lbnQncyBhbmltYXRpb25zIGFuZCBmaWx0ZXIKICAgICAvLyBhbmltYXRpb25zIHRhcmdldGlu
ZyB0aGF0IGFyZSBub3QgcmVnaXN0ZXJlZCBvbiB0aGlzIGVsZW1lbnQsIG9uZSBvZiBpdHMgcHNl
dWRvIGVsZW1lbnRzIG9yIGEgY2hpbGQncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmU4NWJiNDc5
ODIwYzkwYzdlMzE4NzhhY2Q4NWE1ZDk5YTAzNzU3OC4uNzNlYmVmMjRmYzgzOGY3ODNhOGI4MGFh
ZDRhOTdmMWVmYzY0MTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBwYXJzZUF0dHJp
YnV0ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5n
JiBxdWFsaWZpZWROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21T
dHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIAotICAgIEV4
Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZp
ZWROYW1lLCBPcHRpb25hbDxib29sPiBmb3JjZSk7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gdG9n
Z2xlQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gZm9yY2UpOwogCiAgICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0SWRBdHRyaWJ1dGUo
KSBjb25zdDsKICAgICB2b2lkIHNldElkQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4
QnlOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRE
YXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShuYW1lKTsgfQogICAgIHVuc2lnbmVkIGZp
bmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRB
dHRyaWJ1dGVJbmRleEJ5TmFtZShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxJbnRvVmlldyhPcHRpb25hbDxWYXJpYW50
PGJvb2wsIFNjcm9sbEludG9WaWV3T3B0aW9ucz4+JiYgYXJnKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcm9sbEludG9WaWV3KHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJ
bnRvVmlld09wdGlvbnM+PiYmIGFyZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxJ
bnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0cnVlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCA9IHRydWUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50
ZXJJZk5vdFZpc2libGUgPSB0cnVlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogCi0gICAg
T3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+IGJvdW5kaW5nQWJz
b2x1dGVSZWN0V2l0aG91dExheW91dCgpOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJl
bmRlck9iamVjdCosIEZsb2F0UmVjdD4+IGJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG91dExheW91
dCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGJvdW5kaW5nQ2xpZW50UmVjdCgp
OwogCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRm9jdXNWaXNp
YmxlKGJvb2wpOwogICAgIHZvaWQgc2V0SGFzRm9jdXNXaXRoaW4oYm9vbCk7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IHRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKSBjb25zdDsKICAgICBib29sIHNob3VsZEJl
SWdub3JlZEluU2VxdWVudGlhbEZvY3VzTmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRlZmF1
bHRUYWJJbmRleCgpIDwgMCAmJiAhc3VwcG9ydHNGb2N1cygpOyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBj
b25zdDsKQEAgLTU1Miw3ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0
dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRlcmVycygpOwotICAgIHZpcnR1YWwgT3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSk7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUV2ZW50SGFu
ZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cykgb3ZlcnJpZGU7
CiAKQEAgLTYxOSw4ICs2MTksOCBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBmaW5kQW5jaG9y
RWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRBbmNob3JOYW1lKTsKIAotICAgIEV4Y2VwdGlvbk9y
PFJlZjxXZWJBbmltYXRpb24+PiBhbmltYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYmLCBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgS2V5ZnJhbWVB
bmltYXRpb25PcHRpb25zPj4mJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBn
ZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb25zPik7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFdlYkFuaW1hdGlvbj4+IGFuaW1hdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYsIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxkb3VibGUs
IEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4+JiYpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5p
bWF0aW9uPj4gZ2V0QW5pbWF0aW9ucyhzdGQ6Om9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb25z
Pik7CiAKICAgICBFbGVtZW50SWRlbnRpZmllciBjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpOwog
CkBAIC02MzYsNyArNjM2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRl
cygpOwogCi0gICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50Pik7Cisg
ICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpvcHRpb25hbDxpbnQ+KTsKIAogICAg
IHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3Ry
aW5nKTsKICAgICB2b2lkIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5l
d1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKaW5kZXggMTIxNzZjYWFlZDUy
MjBmYzc4ZGJkMTQ2YWU5MWY2NmE4OTAwYTdmMy4uNmNkZjAyYTE0NmFjNzEwMDUzZTBjMzIwNGM5
NjI2NDgxZmM3MTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgc3RydWN0IEVsZW1lbnRDb250ZXh0IHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFbGVtZW50Q29udGV4dCYgYSwgY29uc3QgRWxlbWVudENvbnRleHQmIGIp
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgRWxlbWVudENvbnRleHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RWxl
bWVudENvbnRleHQ+IEVsZW1lbnRDb250ZXh0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IEVsZW1lbnRDb250ZXh0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBFbGVtZW50Q29udGV4dCBjb250ZXh0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaAppbmRleCA4NWQxOThjNTQw
ZmY5OTEwYzU0NmVlZjM2OTAxOTdhNzlkNDA0ZmRmLi4zOTNiMzUxYzc0NzYwODA2YjBjOGFhZjM0
M2YyYTU0ZDdiZDI4NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0
ZXJhdG9yQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0
b3JBc3NlcnRpb25zLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBj
b25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICB1aW50NjRfdCBtX2luaXRpYWxET01UcmVl
VmVyc2lvbjsKLSAgICBPcHRpb25hbDxTY3JpcHREaXNhbGxvd2VkU2NvcGU+IG1fZXZlbnREaXNw
YXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdERpc2FsbG93ZWRTY29wZT4g
bV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uOwogfTsKIAogLy8gRklYTUU6IE5vIHJlYWwgcG9pbnQg
aW4gZG9pbmcgdGhlc2UgYXMgaW5saW5lczsgdGhleSBhcmUgZm9yIGRlYnVnZ2luZyBhbmQgd2Ug
dXN1YWxseSB0dXJuIG9mZiBpbmxpbmluZyBpbiBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNw
cAppbmRleCBkM2ExNzc1YWM5YzRlYjk3MjEwYzg3ZGZlYzJlYzhlMTg5NDlmY2UwLi45M2Y3MDlj
ZjAwYzhkMWUyNGVlNjkyNTU0ZTFjYzlkNjQ0MTIwYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCB2b2lkIEV2ZW50OjpzZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmIHRhcmdldCkKICAgICAgICAgcmVjZWl2ZWRUYXJnZXQoKTsKIH0KIAotdm9pZCBFdmVudDo6
c2V0Q3VycmVudFRhcmdldChFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgT3B0aW9uYWw8Ym9v
bD4gaXNJblNoYWRvd1RyZWUpCit2b2lkIEV2ZW50OjpzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFy
Z2V0KiBjdXJyZW50VGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVlKQog
ewogICAgIG1fY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQ7CiAgICAgbV9jdXJyZW50VGFy
Z2V0SXNJblNoYWRvd1RyZWUgPSBpc0luU2hhZG93VHJlZSA/ICppc0luU2hhZG93VHJlZSA6IChp
czxOb2RlPihjdXJyZW50VGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPigqY3VycmVudFRhcmdldCku
aXNJblNoYWRvd1RyZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDUyODE1MDU3NzdlNmU1YzBiMzE3
YzE2M2IxMzExMTE2NDMyOGU2MWUuLjgxY2JiNGU4ZDU0NTNiMGE1Y2QzNDY5NzE3MjllNzJhNmI0
YzRkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFRhcmdldChSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOwogCiAgICAgRXZlbnRUYXJnZXQqIGN1
cnJlbnRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUYXJnZXQuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldEN1cnJlbnRUYXJnZXQoRXZlbnRUYXJnZXQqLCBPcHRpb25hbDxib29sPiBpc0lu
U2hhZG93VHJlZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2
ZW50VGFyZ2V0Kiwgc3RkOjpvcHRpb25hbDxib29sPiBpc0luU2hhZG93VHJlZSA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgYm9vbCBjdXJyZW50VGFyZ2V0SXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRUYXJnZXRJc0luU2hhZG93VHJlZTsgfQogCiAgICAgdW5zaWduZWQgc2hv
cnQgZXZlbnRQaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRQaGFzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA0YmYwNDU0NjQ0OTRiMmZlMGE3MzRjODM1
Mzg1MWJhMDhhMTVlOWQzLi5jZDFkYmM4NjA4ZjRlYzFmMWIxM2RiMGM5ZTU3MWVkNWU2ZWMxMjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3
IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50
JiBldmVudCkKIAogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVudCB9OwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQ2xlYXJUYXJnZXRzQWZ0ZXJEaXNwYXRjaDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2g7CiAgICAg
Zm9yIChzaXplX3QgaSA9IGV2ZW50UGF0aC5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAg
Y29uc3QgRXZlbnRDb250ZXh0JiBldmVudENvbnRleHQgPSBldmVudFBhdGguY29udGV4dEF0KGkg
LSAxKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIHNldCBzaG91bGRDbGVhclRh
cmdldHNBZnRlckRpc3BhdGNoIHRvIHRydWUgaWYgYW4gRXZlbnRUYXJnZXQgb2JqZWN0IGluIGV2
ZW50Q29udGV4dCdzIHRvdWNoIHRhcmdldCBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vR0NSZWFjaGFibGVSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJl
Zi5oCmluZGV4IDIxNjE2ZDdiYmM4MzY3Y2M0ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAuLmU3NDVh
N2FmNDY0ZGQ5ZWI3MmI5MDc0OTdiNDQ2M2RkMmFkODRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1Jl
YWNoYWJsZVJlZi5oCkBAIC0xMjQsOCArMTI0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6R0NSZWFjaGFibGVSZWY8UD4+IDogU2ltcGxlQ2xhc3MK
ICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBSZWY8UD4mIHZhbHVlKSB7IHJldHVybiBj
b25zdF9jYXN0PFBlZWtUeXBlPih2YWx1ZS5wdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUo
KSk7IH0KICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7
IH0KIAotICAgIHR5cGVkZWYgT3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMg
VGFrZVR5cGUgdGFrZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVl
KSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9Cisg
ICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFJlZjxQPj4gVGFrZVR5cGU7CisgICAgc3RhdGljIFRh
a2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkg
PyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9
CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggYmVkOTdlMTBjNmE2MjU1Yjcy
NmQ1ZTI2YzAxOTJmZWFhOWU3ODRiZS4uZWM1ZjI4MjI4NTE0YThmMDJmOWYyOWUwNjhmYWExYzFj
OTU4ZjQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4
dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgT3B0aW9uYWw8SW5saW5lU3R5bGVTaGVldENhY2hlS2V5PiBtYWtlSW5saW5l
U3R5bGVTaGVldENhY2hlS2V5KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElubGluZVN0eWxlU2hlZXRDYWNoZUtleT4gbWFr
ZUlubGluZVN0eWxlU2hlZXRDYWNoZUtleShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gT25seSBjYWNoZSBmb3Igc2hhZG93IHRyZWVzLiBNYWlu
IGRvY3VtZW50IGlubGluZSBzdHlsZXNoZWV0cyBhcmUgZ2VuZXJhbGx5IHVuaXF1ZSBhbmQgY2Fu
J3QgYmUgc2hhcmVkIGJldHdlZW4gZG9jdW1lbnRzLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxk
IGJlIHJlbGF4ZWQgd2hlbiBhIHN0eWxlc2hlZXQgZG9lcyBub3QgY29udGFpbiBkb2N1bWVudC1y
ZWxhdGl2ZSBVUkxzIChvciAjdXJscykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRl
eCA3YjY1ZWViOGFhNjUyMGZjMjBmMDRhMTE5ZGU3MzZiYWRjOGU4ZTM2Li45MWU4M2ZkNzg0ODBl
Y2E3MGY2ZTUxZDI4MjhhNWNjOTY2MTM2MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIExlZ2FjeS4KICAgICAg
ICAgU3RyaW5nIGtleUlkZW50aWZpZXI7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBrZXlM
b2NhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4ga2V5TG9jYXRpb247CiAg
ICAgICAgIHVuc2lnbmVkIGNoYXJDb2RlOwogICAgICAgICB1bnNpZ25lZCBrZXlDb2RlOwogICAg
ICAgICB1bnNpZ25lZCB3aGljaDsKQEAgLTEwNiw5ICsxMDYsOSBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fbG9jYXRpb24geyBET01fS0VZX0xPQ0FUSU9OX1NUQU5EQVJEIH07CiAgICAgYm9v
bCBtX3JlcGVhdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQ29tcG9zaW5nIHsgZmFsc2UgfTsK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9jaGFyQ29kZTsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbV9rZXlDb2RlOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3doaWNoOworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbV9rZXlDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fd2hpY2g7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDb21tYW5kcyB0aGF0IHdlcmUgc2VudCBieSBBcHBL
aXQgd2hlbiBpbnRlcnByZXRpbmcgdGhlIGV2ZW50LiBEb2Vzbid0IGluY2x1ZGUgaW5wdXQgbWV0
aG9kIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmNwcAppbmRleCA0OGU4MzFiYTg2MTJjNWY1NDNkMjg0MThhMmQzNmViMmMyZmNlZmNlLi44ZjQ2
ZWQ4NjhjMzgxYmEwYWY3NWVjNjEwNTc0YTU1Y2QyMDRmZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIExv
YWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NhY2hl
ZFNjcmlwdC0+aXNMb2FkZWQoKTsKIH0KIAotT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9y
PiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TG9h
ZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9jYWNoZWRTY3JpcHQpOwogICAgIGlmIChtX2Vycm9yKQpAQCAtMTI4
LDcgKzEyOCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFNj
cmlwdCk7CiAKLSAgICBhdXRvIHByaW9yaXR5ID0gWyZdKCkgLT4gT3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+IHsKKyAgICBhdXRvIHByaW9yaXR5ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gewogICAgICAgICBpZiAobV9pc0FzeW5jKQogICAgICAg
ICAgICAgcmV0dXJuIERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6YXN5bmNTY3JpcHQ7CiAg
ICAgICAgIC8vIFVzZSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCmluZGV4IDM4YzAzMTAxNzhmOWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDgu
LmU4OGQ1NGRlNDU0YzQ2NWQyZjQ0MThhODQ2MDJhOWE5YWJjOTEyYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgUmVmZXJyZXJQb2xpY3ksIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUs
IGJvb2wgaXNBc3luYyk7CiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IGZpbmFsOwotICAgIE9w
dGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RXJy
b3I+IGVycm9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IGZp
bmFsOwogCiAgICAgQ2FjaGVkU2NyaXB0JiBjYWNoZWRTY3JpcHQoKSB7IHJldHVybiAqbV9jYWNo
ZWRTY3JpcHQ7IH0KQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0
IHsgfTsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7IHN0ZDo6bnVsbG9wdCB9OworICAg
IHN0ZDo6b3B0aW9uYWw8RXJyb3I+IG1fZXJyb3IgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBTdHJp
bmcgbV9pbnRlZ3JpdHk7CiAgICAgYm9vbCBtX2lzQXN5bmMgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCmluZGV4IGZmOTBhMjc5M2Nh
YjA2ODllZTA2YTI4ODJhYzY0Y2ZhMmM2NWU5NGQuLmIwZTlhYjQxN2JmZjEwNGM0MWJjZmJlMDky
OGU4NDc0NDczOTA4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1v
ZHVsZVNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2Ny
aXB0LmNwcApAQCAtNTIsNyArNTIsNyBAQCBib29sIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojppc0xv
YWRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNMb2FkZWQ7CiB9CiAKLU9wdGlvbmFsPExvYWRh
YmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmVycm9yKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6
ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2Vycm9yOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAppbmRleCBkMjUzNTk2M2Y2NDhiMDJhOGEwMWZkNjNi
YjFlMzgxMzg2Y2VlNDM2Li44Njc4MzcyMGIzOTdjOTg5MjJmNTY2MTY4OTk1NDc4ZTA4MGY5YzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaApAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5LCBSZWZlcnJl
clBvbGljeSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSk7CiAKICAgICBib29sIGlzTG9hZGVkKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0
aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxFcnJv
cj4gZXJyb3IoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmlu
YWw7CiAKICAgICBib29sIGlzQ2xhc3NpY1NjcmlwdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8TW9kdWxlRmV0Y2hQ
YXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBt
X21vZHVsZUtleTsKLSAgICBPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7
CisgICAgc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CiAgICAg
Ym9vbCBtX3dhc0NhbmNlbGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNMb2FkZWQgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKaW5kZXggYzNlNmYxNmU1MzIx
ZGFjMjI2M2Q2Nzc2NDFhOTBmYzlhNTRlZTg1Mi4uYmI3MzM2YmMzZDAwMWZlNjkyYTM3YWNmOGJl
MDhiZGMzNDNlZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKQEAgLTUzLDEz
ICs1MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRXJyb3IgewogICAgICAgICBFcnJvclR5
cGUgdHlwZTsKLSAgICAgICAgT3B0aW9uYWw8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZTsK
ICAgICB9OwogCiAgICAgdmlydHVhbCB+TG9hZGFibGVTY3JpcHQoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxFcnJvcj4gZXJyb3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEVy
cm9yPiBlcnJvcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgd2FzQ2FuY2VsZWQoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShTY3JpcHRFbGVtZW50JikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCBmNWZmZmI5MDM3YmU5MzQ0MjZl
ODhjMjZmZWZmODk0YjY3OGJiOTJkLi4zMmNmZDBkNjdmMzg0YjA3YWUzZjcwYWY3Y2M2ZTViNWQ1
MTAxYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtNTEsNyArNTEsNyBA
QCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJcwogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitpbmxpbmUgTWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKICAgICA6
IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2Vs
YWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9y
aWdpbikKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmEKIHsKIH0KIAot
UmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYgcG9ydHMsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291
cmNlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRh
dGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMp
KSk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemUKIAogTWVz
c2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1ZhbHVlIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYg
c291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK3ZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50
U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7
CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaAppbmRleCA5NzI4NGZjM2I3ZDBjM2IxNjliMzk4ZjVhZjliNzBhZTNm
YTlkY2Q4Li4wYTkzNDBkNzJhZWYzYmY3ZGY2OWMyZjUxYjUwM2ZlMjI2YWQ2OWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0
Pj47CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNl
PiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+
IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7CiAgICAgc3RhdGlj
IFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luID0geyB9KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJl
ZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKQEAgLTU5LDE4ICs1OSwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3Jp
Z2luOwogICAgICAgICBTdHJpbmcgbGFzdEV2ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPE1lc3Nh
Z2VFdmVudFNvdXJjZT4gc291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4gc291cmNlOwogICAgICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9y
dHM7CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAg
ICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBK
U0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiYpOworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+
JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2U7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIHBvcnRzKCkgY29u
c3QgeyByZXR1cm4gbV9wb3J0czsgfQogCiAgICAgdXNpbmcgRGF0YVR5cGUgPSBWYXJpYW50PEpT
VmFsdWVJbldyYXBwZWRPYmplY3QsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBTdHJpbmcs
IFJlZjxCbG9iPiwgUmVmPEFycmF5QnVmZmVyPj47CkBAIC04NSwxNCArODUsMTQgQEAgcHJpdmF0
ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgSW5pdCYmLCBJc1RydXN0ZWQpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKLSAgICBNZXNzYWdlRXZl
bnQoRGF0YVR5cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9w
dCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOworICAgIE1lc3NhZ2VFdmVu
dChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51
bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKIAogICAgIEV2ZW50
SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKICAgICBEYXRhVHlwZSBt
X2RhdGE7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwot
ICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gbV9zb3VyY2U7CisgICAgc3RkOjpvcHRp
b25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+IG1fc291cmNlOwogICAgIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiBtX3BvcnRzOwogCiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2NhY2hl
ZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKaW5kZXgg
MWY1NGQ4N2ZjZDBhMTg5YmEzMjhjYzk3YzJjOTA5NGQzMjE0Zjc1ZC4uMDQ2ZmNhMTRiMjcxYjVk
N2YwNjBlNzU2NTI0NjQ0YzJhY2Q5NDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydElkZW50aWZpZXIuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNZXNzYWdlUG9ydElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiAKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgU3RyaW5nIGxvZ1N0cmluZygpIGNvbnN0OwpAQCAtNTgsMTQgKzU4LDE0
IEBAIHZvaWQgTWVzc2FnZVBvcnRJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1lc3NhZ2VQb3J0
SWRlbnRpZmllcj4gTWVzc2FnZVBvcnRJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8TWVzc2FnZVBvcnRJZGVudGlmaWVyPiBNZXNzYWdlUG9ydElkZW50
aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFByb2Nlc3NJ
ZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJ
ZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVu
dGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVy
VHlwZT4+IHBvcnRJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmll
cjxQb3J0SWRlbnRpZmllclR5cGU+PiBwb3J0SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHBv
cnRJZGVudGlmaWVyOwogICAgIGlmICghcG9ydElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA0ZDM4
N2JjM2QyZDdiNmQ3YjY5MTc5MjVhMWE5NjliNTM5OThkMWRiLi5kNmMxYjRlNGU3NDI2NDc0MWY0
OGRjMzRiMjBhYjVlZmM4MjZmN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmgKQEAgLTgyLDEyICs4MiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAg
ICAgIGJvb2wgY2hpbGRMaXN0OwotICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVzOwot
ICAgICAgICBPcHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGF0dHJpYnV0ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFj
dGVyRGF0YTsKICAgICAgICAgYm9vbCBzdWJ0cmVlOwotICAgICAgICBPcHRpb25hbDxib29sPiBh
dHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9s
ZFZhbHVlOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVy
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZU9sZFZhbHVlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNoYXJhY3RlckRhdGFPbGRWYWx1ZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOwogICAgIH07CiAKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBvYnNlcnZlKE5vZGUmLCBjb25zdCBJbml0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAppbmRleCAyYjdjYTdmNjM3Nzc2Y2I4MDAyZDNjMGQ2ZjNlNzkwNGQzMjI5
Yzc5Li5lMzBjMTI3ZTUyZWIzNWUxMDUwYmQxNGI0NzU3MzgxNGJmYjllZTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKQEAgLTE2MDIsNyArMTYwMiw3IEBAIFBvc2l0aW9uIG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJu
IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocG9pbnQuY29udGFpbmVyLnB0cigpLCBwb2lu
dC5vZmZzZXQpOwogfQogCi1PcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2lu
dChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBhdXRv
IGNvbnRhaW5lciA9IG1ha2VSZWZQdHIocG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKICAgICBp
ZiAoIWNvbnRhaW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggYzc0OTA5ZGY4ZWNkZGFjMjc4
YjY3ZmE3NTcxZWVjMTk1ZjFiYjg1OC4uNGJhODkyMmZjZWM3ZjUwMzE4ZDhjNTg0MzE2Y2NhOTQz
OTc1ZmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBXRUJDT1JF
X0VYUE9SVCBQb3NpdGlvbiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oY29uc3QgQm91bmRh
cnlQb2ludCYpOwogUG9zaXRpb24gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihOb2RlKiwg
dW5zaWduZWQgb2Zmc2V0KTsKIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIG1ha2VEZXByZWNhdGVk
TGVnYWN5UG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwogCi1XRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYp
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRh
cnlQb2ludChjb25zdCBQb3NpdGlvbiYpOwogCiBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShOb2RlKik7CiBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKE5vZGUq
KTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdHJ1Y3QgUG9zaXRpb25SYW5nZSB7CiAgICAgUG9zaXRp
b24gZW5kOwogfTsKIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25z
dCBQb3NpdGlvblJhbmdlJik7CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxl
UmFuZ2UoY29uc3QgUG9zaXRpb25SYW5nZSYpOwogCiAvLyBpbmxpbmVzCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCmluZGV4IDI4NWE3MGQ3MjhjZmVhNTE4NTk0MTNiYjlhMTk5ZTRjZjIyZDFhMjAuLmFiOWYx
NDIyNmZhZDMwMzc0MTg4ZDE5NDYzZmU5YWU5ZjBjMGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApA
QCAtMTA3MywxNCArMTA3MywxNCBAQCBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3Qg
UmVmPFJhbmdlPiYgcmFuZ2UpCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShyYW5nZS5nZXQo
KSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmFu
Z2UqIHJhbmdlKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNv
bnN0IFJhbmdlKiByYW5nZSkKIHsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UoKnJhbmdlKTsKIH0KIAotT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+JiBy
YW5nZSkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBS
ZWZQdHI8UmFuZ2U+JiByYW5nZSkKIHsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdl
LmdldCgpKTsKIH0KQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1S
ZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQorUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA0MjUwM2M5N2Y0OWFjYTIwMzkwMjIzODc0ODQ0
NGVjMjI1MDhmNTI2Li5jYzE0MTE4ZjkzMzU4NDRiYmQ0NDgxNTA5NDQzOTE2YmFiMDVjMDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuaApAQCAtMTM0LDExICsxMzQsMTEgQEAgcHJpdmF0ZToKIAogV0VCQ09SRV9F
WFBPUlQgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlJik7CiBXRUJDT1JF
X0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYpOwot
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25z
dCBSYW5nZSopOwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1w
bGVSYW5nZShjb25zdCBSZWZQdHI8UmFuZ2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqKTsKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBS
ZWZQdHI8UmFuZ2U+Jik7CiAKIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNy
ZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKK1dFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwCmluZGV4IDRhMmRkZjgzOWU3ZGZhNmI0NjcxYmM2YjkzODdhNzQ0OTI4
ZWQ3NjQuLjlmY2VlODQ2MzhlNDk5ZWY3ZjEwOWVjNTA2NzM0MzQ5MjBhMjJiNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNjcmlw
dEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAgbV9lbGVtZW50LmRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLU9wdGlvbmFsPFNjcmlwdEVs
ZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVn
YWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzKSBjb25zdAorc3RkOjpvcHRpb25hbDxT
Y3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRU
eXBlKExlZ2FjeVR5cGVTdXBwb3J0IHN1cHBvcnRMZWdhY3lUeXBlcykgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoKSBpcyBub3QgdmFs
aWQgSFRNTDUuIEl0IGlzIHVzZWQgaGVyZSB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eSB3aXRoIGV4aXN0aW5nIGxheW91dCB0ZXN0cy4gVGhlIHNwZWNpZmljIHZpb2xhdGlvbnMg
YXJlOgogICAgIC8vIC0gQWxsb3dpbmcgdHlwZT1qYXZhc2NyaXB0LiB0eXBlPSBzaG91bGQgb25s
eSBzdXBwb3J0IE1JTUUgdHlwZXMsIHN1Y2ggYXMgdGV4dC9qYXZhc2NyaXB0LgpAQCAtMTkxLDcg
KzE5MSw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9z
aXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIExlZ2FjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFNjcmlwdFR5cGUgc2NyaXB0VHlwZSA9IFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAg
aWYgKE9wdGlvbmFsPFNjcmlwdFR5cGU+IHJlc3VsdCA9IGRldGVybWluZVNjcmlwdFR5cGUoc3Vw
cG9ydExlZ2FjeVR5cGVzKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiByZXN1
bHQgPSBkZXRlcm1pbmVTY3JpcHRUeXBlKHN1cHBvcnRMZWdhY3lUeXBlcykpCiAgICAgICAgIHNj
cmlwdFR5cGUgPSByZXN1bHQudmFsdWUoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2
ZW50UmVzcGVjdGluZ1VzZXJHZXN0dXJlSW5kaWNhdG9yKCkKIAogdm9pZCBTY3JpcHRFbGVtZW50
OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVT
Y3JpcHQpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3Ig
PSBsb2FkYWJsZVNjcmlwdC5lcnJvcigpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMb2FkYWJs
ZVNjcmlwdDo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UgPSBlcnJvci0+Y29uc29sZU1lc3NhZ2Up
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IGxv
YWRhYmxlU2NyaXB0LmVycm9yKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFi
bGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdl
KQogICAgICAgICAgICAgbV9lbGVtZW50LmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWVz
c2FnZS0+c291cmNlLCBtZXNzYWdlLT5sZXZlbCwgbWVzc2FnZS0+bWVzc2FnZSk7CiAgICAgICAg
IGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgIH0gZWxzZSBpZiAoIWxvYWRhYmxlU2NyaXB0Lndh
c0NhbmNlbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDRkNGJmYjU0
Yjk5NzEwNjkyZDI1NGVhYzNlMTRiNTA2NWNmNTUzYjMuLjQ0YjI2ZGJjYTJmOTYzNmY0YzkwNDli
YWIxNGJhMTRmN2M4ZjhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMTAz
LDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlU2NyaXB0
QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYpOwogCi0gICAgT3B0aW9uYWw8U2NyaXB0
VHlwZT4gZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXBlU3VwcG9ydCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiBkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVT
dXBwb3J0KSBjb25zdDsKICAgICBib29sIGlnbm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0OwogICAg
IGJvb2wgaXNTY3JpcHRGb3JFdmVudFN1cHBvcnRlZCgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGF0
Y2hMb2FkRXZlbnRSZXNwZWN0aW5nVXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCA5ZTVjZjdhYTgyNjg3YzY2ZDM0ZDVmOTBlOWQ4OTA2N2ExMmRm
ZTNkLi5hODUyODgyMjVhODY0NmIzZjE4ZTFhNDhiOWE1NmRmZjIyNTA3YWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzU2hh
ZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKICAg
ICB2b2lkKiBzdHlsZVNoZWV0TGlzdDsKICAgICBXZWFrUHRyPEVsZW1lbnQ+IGhvc3Q7CiAgICAg
dm9pZCogc2xvdEFzc2lnbm1lbnQ7Ci0gICAgT3B0aW9uYWw8SGFzaE1hcDxBdG9tU3RyaW5nLCBB
dG9tU3RyaW5nPj4gcGFydE1hcHBpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFydE1hcHBpbmdzOwogfTsKIAogQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFNoYWRvd1Jvb3QpID09IHNpemVvZihTYW1lU2l6ZUFzU2hhZG93Um9vdCksIHNoYWRv
d3Jvb3Rfc2hvdWxkX3N0YXlfc21hbGwpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGNvbnN0IFZlY3Rv
cjxXZWFrUHRyPE5vZGU+PiogU2hhZG93Um9vdDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3Qg
SFRNTFNsb3RFbGVtCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9kZXNG
b3JTbG90KHNsb3QsICp0aGlzKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPj4gcGFyc2VQYXJ0TWFwcGluZyhTdHJpbmdWaWV3IG1hcHBpbmdT
dHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0
cmluZz4+IHBhcnNlUGFydE1hcHBpbmcoU3RyaW5nVmlldyBtYXBwaW5nU3RyaW5nKQogewogICAg
IGNvbnN0IGF1dG8gZW5kID0gbWFwcGluZ1N0cmluZy5sZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKaW5kZXggNTczMWJjZjFkZmQ4MTNjNDNkNmRmYjdkNzU4NTk0Mzc1MmIxYTQ2NS4u
YmI5OTZiMjdiYzE1NzBhMjQ5NDUyNjAyOTAxMDUxOWQzNzIxMjg2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdHlsZTo6U2NvcGU+IG1fc3R5bGVTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
dEFzc2lnbm1lbnQ+IG1fc2xvdEFzc2lnbm1lbnQ7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxQYXJ0
TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxQYXJ0
TWFwcGluZ3M+IG1fcGFydE1hcHBpbmdzOwogfTsKIAogaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jv
b3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5k
ZXggYWQ2ZTk2ZDFmMjJlZmU5NmNjYTkwODA0ZGQ2NTk2MDI0MGM2NTFkNC4uYWIyNTg5OTNjMGVm
MTMwYmZkZGU5N2E3MTMxZjM2ZTc1MDJkYmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2Uu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYg
YSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAm
JiBhLmVuZCA9PSBiLmVuZDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNl
bGVjdGluZ05vZGUoTm9kZSYgbm9kZSkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VS
YW5nZVNlbGVjdGluZ05vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUu
cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdGVt
cGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlLCBjb25zdCBCb3VuZGEKIAogdGVtcGxhdGUgYm9vbCBjb250YWluczxUcmVlPihjb25z
dCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAotdGVtcGxhdGU8VHJlZVR5
cGUgdHJlZVR5cGU+IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25z
dCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYgcG9pbnQpCit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVl
VHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mIHBvaW50KQogewogICAgIHJldHVybiBwb2ludCAmJiBj
b250YWluczx0cmVlVHlwZT4ocmFuZ2UsICpwb2ludCk7CiB9CiAKLXRlbXBsYXRlIGJvb2wgY29u
dGFpbnM8Q29tcG9zZWRUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE9wdGlvbmFsPEJv
dW5kYXJ5UG9pbnQ+Jik7Cit0ZW1wbGF0ZSBib29sIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7CiAK
IGJvb2wgY29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSwgY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiB7CkBAIC0yNDYsNyArMjQ2LDcg
QEAgU2ltcGxlUmFuZ2UgdW5pb25SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2lt
cGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIHsgc3RkOjptaW4oYS5zdGFydCwgYi5zdGFydCwgY29t
cGFyZUJ5Q29tcG9zZWRUcmVlT3JkZXIpLCBzdGQ6Om1heChhLmVuZCwgYi5lbmQsIGNvbXBhcmVC
eUNvbXBvc2VkVHJlZU9yZGVyKSB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJz
ZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYSwgY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiBiKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgYikKIHsKICAgICAvLyBGSVhNRTogQ2FuIHRoaXMgYmUgZG9uZSBtb3JlIGVm
ZmljaWVudGx5LCB3aXRoIGZld2VyIGNhbGxzIHRvIHRyZWVPcmRlcj8KICAgICBpZiAoIWEgfHwg
IWIgfHwgIWludGVyc2VjdHM8Q29tcG9zZWRUcmVlPigqYSwgKmIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuaAppbmRleCBlZmQ4ZmRmNTJiNTI1NzNkMmEyYTYwZjY5ZGNhN2Y1MWY2OTVkNDAyLi5h
MzY4OWQwZjBiMTI3M2Q2ZTMzYjQwNzgyMjcwMzFlM2FlYjQ5ZDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
cGxlUmFuZ2UuaApAQCAtNDUsMjAgKzQ1LDIwIEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiB9Owog
CiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYmLCBCb3Vu
ZGFyeVBvaW50JiYpOwotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBl
cihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmLCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmKTsK
K3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJik7
CiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYmKTsKLU9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoT3B0aW9uYWw8Qm91bmRh
cnlQb2ludD4mJik7CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VI
ZWxwZXIoc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmKTsKIAogaW5saW5lIEJvdW5kYXJ5
UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQp
IHsgcmV0dXJuIHBvaW50OyB9CiBpbmxpbmUgQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2lu
dEhlbHBlcihCb3VuZGFyeVBvaW50JiYgcG9pbnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9
Ci1pbmxpbmUgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRIZWxwZXIo
Y29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mIHBvaW50KSB7IHJldHVybiBwb2ludDsgfQot
aW5saW5lIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKE9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgcG9pbnQpIHsgcmV0dXJuIFdURk1vdmUocG9pbnQpOyB9
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEhl
bHBlcihjb25zdCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiBwb2ludCkgeyByZXR1cm4g
cG9pbnQ7IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFy
eVBvaW50SGVscGVyKHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJiBwb2ludCkgeyByZXR1
cm4gV1RGTW92ZShwb2ludCk7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGF1dG8gbWFrZUJvdW5k
YXJ5UG9pbnRIZWxwZXIoVCYmIGFyZ3VtZW50KSAtPiBkZWNsdHlwZShtYWtlQm91bmRhcnlQb2lu
dChzdGQ6OmZvcndhcmQ8VD4oYXJndW1lbnQpKSkgeyByZXR1cm4gbWFrZUJvdW5kYXJ5UG9pbnQo
c3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50KSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgLi4uVD4g
YXV0byBtYWtlU2ltcGxlUmFuZ2UoVCYmIC4uLmFyZ3VtZW50cykgLT4gZGVjbHR5cGUobWFrZVNp
bXBsZVJhbmdlSGVscGVyKG1ha2VCb3VuZGFyeVBvaW50SGVscGVyKHN0ZDo6Zm9yd2FyZDxUPihh
cmd1bWVudHMpKS4uLikpIHsgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZUhlbHBlcihtYWtlQm91bmRh
cnlQb2ludEhlbHBlcihzdGQ6OmZvcndhcmQ8VD4oYXJndW1lbnRzKSkuLi4pOyB9CiAKIC8vIEZJ
WE1FOiBXb3VsZCBsaWtlIHRoZXNlIHR3byBmdW5jdGlvbnMgdG8gaGF2ZSBzaG9ydGVyIG5hbWVz
OyBhbm90aGVyIG9wdGlvbiBpcyB0byBjaGFuZ2UgcHJlZml4IHRvIG1ha2VTaW1wbGVSYW5nZS4K
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlKE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1h
a2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYpOwogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2Ug
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKE5vZGUmKTsKIAogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKQEAgLTY2LDcgKzY2LDcg
QEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2Um
KTsKIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gTm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0
b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29s
IGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVt
cGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Y29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJl
ZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Qm91bmRhcnlQb2ludD4mKTsKIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlu
cyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGlubmVy
UmFuZ2UpOwogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNp
bXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogCkBAIC05Myw3ICs5Myw3IEBAIE9mZnNldFJhbmdl
IGNoYXJhY3RlckRhdGFPZmZzZXRSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUm
KTsKIC8vIEZJWE1FOiBTdGFydCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGVwcmVjYXRlZCBzaW5j
ZSB0aGV5IHNpbGVudGx5IGRlZmF1bHQgdG8gQ29tcG9zZWRUcmVlLgogCiBXRUJDT1JFX0VYUE9S
VCBTaW1wbGVSYW5nZSB1bmlvblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxl
UmFuZ2UmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rp
b24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNl
Y3Rpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYpOwogCiBjbGFzcyBJbnRlcnNlY3RpbmdOb2RlUmFuZ2U7CiBJbnRl
cnNlY3RpbmdOb2RlUmFuZ2UgaW50ZXJzZWN0aW5nTm9kZXMoY29uc3QgU2ltcGxlUmFuZ2UmKTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVs
cGVyKEJvdW5kYXJ5UG9pbnQmJiBzdGFydCwgQm91bmRhcnlQb2ludCYmCiAgICAgcmV0dXJuIHsg
V1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSB9OwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYm
IHN0YXJ0LCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYmIGVuZCkKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiYmIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQog
ewogICAgIGlmICghc3RhcnQgfHwgIWVuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTE5MCw3ICsxOTAsNyBAQCBpbmxpbmUgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVs
cGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2ludCkKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVs
cGVyKFdURk1vdmUocG9pbnQpLCBXVEZNb3ZlKGVuZCkpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZUhlbHBlcihPcHRpb25hbDxCb3VuZGFyeVBvaW50
PiYmIHBvaW50KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVS
YW5nZUhlbHBlcihzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgcG9pbnQpCiB7CiAgICAg
aWYgKCFwb2ludCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNzT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdWNjZXNz
T3IuaAppbmRleCBiMGIzZTA1NjBkODg2NDljOGJmZTQwOGQ1ZDI0OTE5ZmExODE0MzllLi42NWEz
MDU5MWJmOWEwMTE0Nzg4YTU2NDMwM2E4N2ZlNzk2YjA1NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3VjY2Vzc09yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N1Y2Nlc3NP
ci5oCkBAIC0zMCwxMiArMzAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBTdWNjZXNzT3IgOiBwdWJsaWMgT3B0aW9uYWw8VD4geworY2xh
c3MgU3VjY2Vzc09yIDogcHVibGljIHN0ZDo6b3B0aW9uYWw8VD4gewogcHVibGljOgotICAgIFN1
Y2Nlc3NPcigpIDogT3B0aW9uYWw8VD4oKSB7IH0KLSAgICBTdWNjZXNzT3IoVCYmIGVycm9yKSA6
IE9wdGlvbmFsPFQ+KGVycm9yKSB7IH0KKyAgICBTdWNjZXNzT3IoKSA6IHN0ZDo6b3B0aW9uYWw8
VD4oKSB7IH0KKyAgICBTdWNjZXNzT3IoVCYmIGVycm9yKSA6IHN0ZDo6b3B0aW9uYWw8VD4oZXJy
b3IpIHsgfQogCi0gICAgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhT3B0aW9uYWw8VD46Om9wZXJhdG9yIGJvb2woKTsgfQorICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIXN0ZDo6b3B0aW9uYWw8VD46
Om9wZXJhdG9yIGJvb2woKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RGVjb2Rlci5jcHAKaW5kZXggNWNmYTY0YjQzYTZiYzZlMzVhMmU2YjRkNTBlMzli
YWMwYWZlYzNiZi4uNjdlMTlkMWQ5YzhhOGI5OTZlOGUzZmQ4N2Y2ODQ1M2Q4MmZhOTRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dERlY29kZXIuY3BwCkBAIC01Miw5ICs1Miw5IEBAIEV4Y2VwdGlvbk9y
PFJlZjxUZXh0RGVjb2Rlcj4+IFRleHREZWNvZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJl
bCwgT3B0aW9ucyBvCiAgICAgcmV0dXJuIGRlY29kZXI7CiB9CiAKLUV4Y2VwdGlvbk9yPFN0cmlu
Zz4gVGV4dERlY29kZXI6OmRlY29kZShPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
PiBpbnB1dCwgRGVjb2RlT3B0aW9ucyBvcHRpb25zKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0
RGVjb2Rlcjo6ZGVjb2RlKHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4g
aW5wdXQsIERlY29kZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBPcHRpb25hbDxCdWZmZXJTb3Vy
Y2U+IGlucHV0QnVmZmVyOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlPiBpbnB1dEJ1
ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gbnVsbHB0cjsKICAgICBzaXplX3QgbGVu
Z3RoID0gMDsKICAgICBpZiAoaW5wdXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKaW5kZXgg
OWQ4ZTdjZjliZTkzOWNjMjFmODU3NWMzNjA0MGY0YmU2ZDZkOWI2ZC4uMzJmYjE1MjA2YjRkZjQ3
MDViM2NjNDZiMWU3OWNhNWI0MjE1OWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBEZWNvZGVPcHRpb25zIHsKICAgICAg
ICAgYm9vbCBzdHJlYW0geyBmYWxzZSB9OwogICAgIH07Ci0gICAgRXhjZXB0aW9uT3I8U3RyaW5n
PiBkZWNvZGUoT3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4sIERlY29kZU9wdGlv
bnMpOworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGVjb2RlKHN0ZDo6b3B0aW9uYWw8QnVmZmVy
U291cmNlOjpWYXJpYW50VHlwZT4sIERlY29kZU9wdGlvbnMpOwogCiBwcml2YXRlOgogICAgIFRl
eHREZWNvZGVyKGNvbnN0IGNoYXIqLCBPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5jcHAKaW5kZXggOWE3Y2FkMTEyNTcwNWVkZjM1YTcz
NGQzNTBhMzY2N2YyMmRhMjNiYS4uNDFhY2M2OTI2M2ViZTg0YmZiZWZkOWRlOWUzODYwY2M5ZGVh
NzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVjb2Rl
ci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyOjpUZXh0RGVj
b2RlclN0cmVhbURlY29kZXIoUmVmPFRleHREZWNvZGVyPiYmIHRleHREZWNvZGUKIHsKIH0KIAot
RXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVjb2RlclN0cmVhbURlY29kZXI6OmRlY29kZShPcHRp
b25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPFN0cmlu
Zz4gVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyOjpkZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlPiB2YWx1ZSkKIHsKICAgICByZXR1cm4gbV90ZXh0RGVjb2Rlci0+
ZGVjb2RlKFdURk1vdmUodmFsdWUpLCB7IHRydWUgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmgKaW5kZXggNzYxODY4NTA1NzE4NjZiNmIyYmYw
YTE0MWQxMDBmMGY3Y2RkZjY0YS4uYTM5NTBhMzg5OTFlZmJkNWI5ODk3NTExNTY3ZjM1YTBjZjhm
ZmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyU3RyZWFtRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2RlclN0cmVhbURlY29kZXIu
aApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxU
ZXh0RGVjb2RlclN0cmVhbURlY29kZXI+PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9v
bCBmYXRhbCwgYm9vbCBpZ25vcmVCT00pOwogCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0RGVjb2Rlci0+ZW5jb2RpbmcoKTsgfQotICAgIEV4Y2VwdGlvbk9yPFN0
cmluZz4gZGVjb2RlKE9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+KTsKKyAgICBF
eGNlcHRpb25PcjxTdHJpbmc+IGRlY29kZShzdGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFy
aWFudFR5cGU+KTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGZsdXNoKCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmgKaW5kZXgg
MGFhMDRiM2JmYjNhM2U1ZmNkYjk3YjQ5YzNlZTQ1NGNlYzk4MWJkYS4uYjQ1NmQ5ZTM4YjlkN2Yy
ODYxZjJkNDAwNjdjYWVkMTUwMjJkNjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
RW5jb2RlclN0cmVhbUVuY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFRleHRFbmNvZGVyU3RyZWFtRW5jb2RlcigpID0gZGVmYXVsdDsKIAotICAgIE9wdGlv
bmFsPFVDaGFyPiBtX3BlbmRpbmdIaWdoU3Vycm9nYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VUNo
YXI+IG1fcGVuZGluZ0hpZ2hTdXJyb2dhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFu
c2l0aW9uRXZlbnQuY3BwCmluZGV4IDNkNTkyNjU3NTc3MWUzODM4YTI4MzhkYTQ3ZmZhOWUyMjA1
ZGRhZmUuLmRmYmFhYzE0OTQ1YTUwNTVjMDkyOWQyN2U3ZTU1NDU4YjM5N2NkNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRyYW5zaXRpb25FdmVu
dCk7CiAKLVRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNv
bnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
LCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKK1RyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBk
b3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAg
IDogQW5pbWF0aW9uRXZlbnRCYXNlKHR5cGUsIGFuaW1hdGlvbiwgdGltZWxpbmVUaW1lKQogICAg
ICwgbV9wcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKQogICAgICwgbV9lbGFwc2VkVGltZShlbGFw
c2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaAppbmRleCAyMzEzNmQ3M2Yw
N2JiZDliYzE0YWNiODIxMzQ3NzdiMTIwOGViMTBlLi5hNTdmMjQ4MzMxMjg4ZjQyYTJlNDg3NmE0
MmU5YjQ2MDUyNmMxYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlv
bkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRyYW5zaXRpb25FdmVudCBm
aW5hbCA6IHB1YmxpYyBBbmltYXRpb25FdmVudEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoVHJhbnNpdGlvbkV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRyYW5zaXRp
b25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlv
bikKKyAgICBzdGF0aWMgUmVmPFRyYW5zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUs
IGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1l
bGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVHJhbnNpdGlvbkV2ZW50KHR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNl
ZFRpbWUsIHBzZXVkb0VsZW1lbnQsIHRpbWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQpA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBUcmFuc2l0aW9uRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBl
bGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRz
PiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiopOworICAgIFRyYW5zaXRpb25FdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVs
YXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qKTsKICAgICBUcmFuc2l0aW9uRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCk7CiAKICAgICBTdHJpbmcgbV9wcm9wZXJ0eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CmluZGV4IDAzNzQ5ZTc3YTljYzc3ZDUyNTAwOTBmYzZiZTY3MDZjZDFkZTc2ZWYuLjFlY2IzNmU4
ODA3MWViMWM4YjkzY2YwZDg3MTQ4YTUxMGU1ZmNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJl
bEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKICAgICByZXR1
cm4gbV9sYWJlbHNCeUZvckF0dHJpYnV0ZS0+Z2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRyaWJ1dGUo
KmZvckF0dHJpYnV0ZVZhbHVlLmltcGwoKSwgKnRoaXMpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJZk5vdENsaXBwZWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxM
YXlvdXRQb2ludD4gYWJzb2x1dGVQb2ludElmTm90Q2xpcHBlZChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKIHsKICAgICBpZiAoIWRvY3VtZW50LmZy
YW1lKCkgfHwgIWRvY3VtZW50LnZpZXcoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCmluZGV4IDEyYzQz
NjQzNjk0NjVjNmY1MDdkNzYzYjkzY2FkNmQyMDRkYjMxY2MuLmQwMzQyZDg2YmQzNDczMzA1NWQz
YjhjNDMwMjFlYTliYmE1NjUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJl
SW5kaWNhdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBib29sIFVzZXJHZXN0dXJlVG9rZW46Omlz
VmFsaWRGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZG9jdW1lbnRzSW1wYWN0ZWRCeVVzZXJHZXN0dXJlLmNvbnRhaW5zKGRvY3VtZW50KTsK
IH0KIAotVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBV
c2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlIHByb2Nl
c3NJbnRlcmFjdGlvblN0eWxlKQorVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5k
aWNhdG9yKHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+IHN0YXRlLCBE
b2N1bWVudCogZG9jdW1lbnQsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgUHJvY2Vzc0lu
dGVyYWN0aW9uU3R5bGUgcHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUpCiAgICAgOiBtX3ByZXZpb3Vz
VG9rZW4geyBjdXJyZW50VG9rZW4oKSB9CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKaW5kZXggZjVjYzdmYWQy
MTAyMTk3MjYwYTQzY2NmYzQxN2YxNDNjYWY0NDI1Yy4uYTFhNDUwNDU0YzBiZGRjNDFhYjczYTNm
Y2Y1MGNmNTZiYjk0NDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiBhIGRvY3VtZW50
IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93biB1c2VyIGdlc3R1cmUgdGltZXN0YW1wIGlzIHVw
ZGF0ZWQuCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSB7IEltbWVkaWF0
ZSwgRGVsYXllZCB9OwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5k
aWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0g
bnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0gVXNlckdlc3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vz
c0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZTo6SW1tZWRpYXRlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwg
VXNlckdlc3R1cmVUeXBlID0gVXNlckdlc3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0
aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZTo6SW1tZWRpYXRlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1
cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9r
ZW46Okdlc3R1cmVTY29wZTo6QWxsLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9t
RmV0Y2ggPSBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCmluZGV4IGViZDE1ZTQxMThlNDZmOGFiZjkzYjg0YTVl
ZmEzNDI3YTE2NGY3MjkuLmE4NTI4MGExZjVlNTcyYzlmNzY2NmMwNTQ4MTljZDBjMzg2YjRiMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBWaXNpdGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpCiAg
ICAgfQogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFNoYXJlZFN0cmluZ0hhc2g+IGxpbmtI
YXNoRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQoraW5saW5lIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNoYXJlZFN0cmluZ0hhc2g+IGxpbmtIYXNoRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkudmlz
aXRlZExpbmtIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAppbmRleCA2MjQ0YTMyMjFiNmEz
MDU3NGU0ZjU0MDUwZjlmZDUxODhjYjA3MjNmLi40ODdjNzA1OGViOTc2MWE0ODJhYmY5ZWIzNTY5
NzUzNzhjOTY4NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChp
bnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKLSAgICBjb25zdCBP
cHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZlbnQ+JiB1bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7IH0KKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCiAgICAgZG91Ymxl
IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9IC8vIFBvc2l0aXZlIHdoZW4gc2Ny
b2xsaW5nIHJpZ2h0LgogICAgIGRvdWJsZSBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRh
WTsgfSAvLyBQb3NpdGl2ZSB3aGVuIHNjcm9sbGluZyBkb3duLgpAQCAtODcsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSBtX2RlbHRhWSB7IDAgfTsKICAgICBkb3VibGUgbV9kZWx0YVog
eyAwIH07CiAgICAgdW5zaWduZWQgbV9kZWx0YU1vZGUgeyBET01fREVMVEFfUElYRUwgfTsKLSAg
ICBPcHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZlbnQ+IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQ7
CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVdoZWVsRXZlbnQ+IG1fdW5kZXJseWluZ1BsYXRm
b3JtRXZlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXgg
ZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzViMjlkNDg2YjQ4MGE0ZGU3OC4uY2IzYjRlN2VjYWZhMjJk
MGEwYjBkOWQ1NTk3MWFhNzE2YWQ1NzZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtNjAsNyArNjAsNyBA
QCBNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNzYWdlUG9ydENoYW5uZWwoKQogICAgIG1fcmVnaXN0
cnkubWVzc2FnZVBvcnRDaGFubmVsRGVzdHJveWVkKCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8UHJv
Y2Vzc0lkZW50aWZpZXI+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cHJvY2Vzc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQorc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRp
Zmllcj4gTWVzc2FnZVBvcnRDaGFubmVsOjpwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQocG9ydCA9PSBtX3BvcnRzWzBdIHx8IHBvcnQgPT0gbV9wb3J0c1sxXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaApp
bmRleCBhODgyNmI4YzAwYzAwYjdhODc2YWQzOGFmYWU2MWFlNzhlOGFjZDg2Li45YzcyYmM4NWM3
MjI2MzlkZWQ3YzZlODgzNWUwMTQwNjgyNjBkOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEoKSBjb25z
dCB7IHJldHVybiBtX3BvcnRzWzBdOyB9CiAgICAgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiBwb3J0MigpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydHNbMV07IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBy
b2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImKTsKICAgICBib29sIGluY2x1ZGVzUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
KTsKICAgICB2b2lkIGVudGFuZ2xlUG9ydFdpdGhQcm9jZXNzKGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIFByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpc2VudGFuZ2xlUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
IAogICAgIE1lc3NhZ2VQb3J0SWRlbnRpZmllciBtX3BvcnRzWzJdOwogICAgIGJvb2wgbV9pc0Ns
b3NlZFsyXSB7IGZhbHNlLCBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVy
PiBtX3Byb2Nlc3Nlc1syXTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBt
X3Byb2Nlc3Nlc1syXTsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2VudGFuZ2xl
ZFRvUHJvY2Vzc1Byb3RlY3RvcnNbMl07CiAgICAgVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiBtX3BlbmRpbmdNZXNzYWdlc1syXTsKICAgICBIYXNoU2V0PFJlZlB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+PiBtX3BlbmRpbmdNZXNzYWdlUG9ydFRyYW5zZmVyc1syXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaAppbmRleCBjNTYwYWYwZTBkYjAzYjk3NTYxMzY1NTk2MmY0MDRjYjQ2N2UxMzIyLi5kNDVm
NzYzNGM2MThiMDk3MGI5OGRhOGMyZjQ5NzI2YjliOTAxOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7CiAgICAg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5IHRyYW5zZmVycmVkUG9ydHM7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyByZXN1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5k
ZXggYjlkMzdjNzkxODcwNGI1NmUzMWE2OGYxOGI0OWVjOGI5ZDY4NmNmNS4uZjU1MDAzNTZiNjBj
ZGJjYWQyOWRkM2JmNzI1OGUzYWIyOTJjMDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgbWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2Nv
cnJlY3Rpb25BZnRlckNvbW1hbmQoRWRpdENvbW1hbmQqKTsKIAogICAgIFRpbWVyIG1fdGltZXI7
Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmU7CisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZTsKICAgICBi
b29sIG1faXNBY3RpdmUgeyB9OwogICAgIGJvb2wgbV9pc0Rpc21pc3NlZEJ5RWRpdGluZyB7IH07
CiAgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAKaW5kZXggMzI5MWFiZTUyZjkxN2YyOGRm
MDZjMzU2MWZmZTFlMTkzZDIxNmU3Ni4uNDc0YmVjOGFhMzA0OGZjMDQxNThiN2NmZjZiZGMzNmY1
MmIyMWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlw
ZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVD
b21tYW5kLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlLCBSZWY8
SFRNTEVsZW1lbnQ+Pj4gbGlzdENvbnZlcnNpb25UeXBlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxD
aGFuZ2VMaXN0VHlwZUNvbW1hbmQ6OlR5cGUsIFJlZjxIVE1MRWxlbWVudD4+PiBsaXN0Q29udmVy
c2lvblR5cGVGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
ewogICAgIGF1dG8gc3RhcnROb2RlID0gc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgp
OwogICAgIGF1dG8gZW5kTm9kZSA9IHNlbGVjdGlvbi5lbmQoKS5jb250YWluZXJOb2RlKCk7CkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8Q2hhbmdlTGlzdFR5cGVD
b21tYW5kOjpUeXBlLCBSZWY8SFRNTEVsZW1lbnQ+Pj4gbGlzdENvCiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Q2hhbmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlPiBDaGFu
Z2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RDb252ZXJzaW9uVHlwZShEb2N1bWVudCYgZG9jdW1lbnQp
CitzdGQ6Om9wdGlvbmFsPENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6VHlwZT4gQ2hhbmdlTGlzdFR5
cGVDb21tYW5kOjpsaXN0Q29udmVyc2lvblR5cGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC5mcmFtZSgpKSkgewogICAgICAg
ICBpZiAoYXV0byB0eXBlQW5kRWxlbWVudCA9IGxpc3RDb252ZXJzaW9uVHlwZUZvclNlbGVjdGlv
bihmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmgKaW5kZXggMTQzOWYyMjdmMjVmZTQwZGYyYjI4
YTJjODdiNDIxZmNjMTljM2Q1NC4uZWZmZGU4MWM5NTMwMjhiNTk3ZWJiY2FmZWRiNjY5ZTYzYzZl
NDkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFu
ZC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgQ2hhbmdlTGlz
dFR5cGVDb21tYW5kIGZpbmFsIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgQ29udmVydFRvT3JkZXJlZExpc3Qs
IENvbnZlcnRUb1Vub3JkZXJlZExpc3QgfTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gbGlz
dENvbnZlcnNpb25UeXBlKERvY3VtZW50Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlw
ZT4gbGlzdENvbnZlcnNpb25UeXBlKERvY3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxDaGFuZ2VM
aXN0VHlwZUNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgdHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5nZUxpc3RUeXBlQ29tbWFuZChk
b2N1bWVudCwgdHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAppbmRleCA3NmVkMTE1Y2I1YjZhYmUxNWZhNzJhOTVlMTMwZjc4NzA0Y2Jj
NzlkLi4xMGFmMTNhNTgzNWQxM2EzY2RkNjQ4ZDExYzVlOWNhNGEwNzIwZDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTQzMyw4
ICsxNDMzLDggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKIAogICAgIEFTU0VSVCgoc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZS5pc051bGwoKSAmJiBlbmRPZlBhcmFncmFwaFRvTW92ZS5pc051bGwo
KSkgfHwgIWVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmlzTnVsbCgpKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBzdGFydEluZGV4OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRJbmRleDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGVuZEluZGV4OwogICAgIGJvb2wgb3JpZ2luYWxJc0RpcmVjdGlvbmFsID0gZW5k
aW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpOwogICAgIGlmIChwcmVzZXJ2ZVNlbGVjdGlv
biAmJiAhZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgYXV0byB2aXNpYmxl
U3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKQEAgLTE1NDUsNyArMTU0
NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgfQogfQogCi1PcHRpb25hbDxWaXNp
YmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5
TGlzdEl0ZW0oKSBjb25zdAorc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdAogewog
ICAgIGF1dG8gZW1wdHlMaXN0SXRlbSA9IGVuY2xvc2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwogICAgIGlmICghZW1wdHlMaXN0SXRlbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCBjOTZlNDlh
Y2IxZmQxMzFhZDc5ZWRhNmVhZWY0Nzc0YzAyMjdmMDkzLi4yZWY2NzJiOGEyNmFkNWNjOWM3MWFl
OTA1YTM2YzQ5MzgyYjQ3ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25z
dCBQb3NpdGlvbiYgZW5kLCBOb2RlKiBvdXRlck5vZGUsIEVsZW1lbnQqIGJsb2NrRWxlbWVudCk7
CiAgICAgdm9pZCBjbGVhbnVwQWZ0ZXJEZWxldGlvbihWaXNpYmxlUG9zaXRpb24gZGVzdGluYXRp
b24gPSBWaXNpYmxlUG9zaXRpb24oKSk7CiAgICAgCi0gICAgT3B0aW9uYWw8VmlzaWJsZVNlbGVj
dGlvbj4gc2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHNob3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkg
Y29uc3Q7CiAgICAgYm9vbCBicmVha091dE9mRW1wdHlMaXN0SXRlbSgpOwogICAgIGJvb2wgYnJl
YWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdyYXBoKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKaW5kZXggNjVmMTZlZmI2ODRj
MTdhMGM1ZWNhMDMzOTgyOTc4MjcyYTUwODg4Ni4uMjFiZDcxODY5YmEyMDM0ZDM5NzI3M2EzM2M1
OTAzMTA0MDlhMTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGlvbkhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQg
ewogICAgIENvbG9yIGNvbG9yIHsgZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yIH07CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvbXBvc2l0aW9uSGln
aGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTYyLDE5ICs2MiwxOSBAQCB2b2lk
IENvbXBvc2l0aW9uSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0
PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIg
Pj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFydE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZW5kT2Zmc2V0
OwogICAgIGlmICghZW5kT2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9y
OwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRl
eCBmMzA2MTM4OTdlZGUxNDEzNTQ4ZWViY2Y0YzE2NmE2OWZiZjJjZmMxLi5jOWNiZTEzZGRmN2Mz
ODdmNTdkYzNmNWE1YmVmY2M2MGFmZDI3M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IEVkaXRpbmdTdHlsZTo6c3R5bGVXaXRoUmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKSBjb24K
ICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLU9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRp
bmdTdHlsZTo6dGV4dERpcmVjdGlvbigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdyaXRpbmdEaXJl
Y3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDgsNyAr
MTYwOCw3IEBAIFJlZjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6aW52ZXJzZVRyYW5zZm9y
bUNvbG9ySWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxl
IHx8ICFyZW5kZXJlciB8fCAhcmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwbGVDb2xvckZpbHRlcigp
KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZklu
dmVydGlibGUgPSBbJl0oQ1NTUHJvcGVydHlJRCBpZCkgLT4gT3B0aW9uYWw8Q29sb3I+IHsKKyAg
ICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZkludmVydGlibGUgPSBbJl0oQ1NTUHJvcGVydHlJRCBp
ZCkgLT4gc3RkOjpvcHRpb25hbDxDb2xvcj4gewogICAgICAgICBhdXRvIGNvbG9yID0gbV9tdXRh
YmxlU3R5bGUtPnByb3BlcnR5QXNDb2xvcihpZCk7CiAgICAgICAgIGlmICghY29sb3IgfHwgIWNv
bG9yLT5pc1Zpc2libGUoKSB8fCBjb2xvci0+aXNTZW1hbnRpYygpKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4
IGNmNzRkNDlhYzkxMzRjNzY3ZGMzMmNjMGE1YmQ4ZmQ5OGI2Nzg2NzcuLjQ3OGU1YjY1ZDZlZjFm
NzA4ZGI5MjJmYmJmYzg4Y2Q3ZTg5MGI4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMqIHN0eWxlKCkgeyByZXR1cm4gbV9tdXRhYmxlU3R5bGUuZ2V0KCk7IH0KICAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGVXaXRoUmVzb2x2ZWRUZXh0RGVjb3JhdGlv
bnMoKSBjb25zdDsKLSAgICBPcHRpb25hbDxXcml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0aW9u
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXcml0aW5nRGlyZWN0aW9uPiB0ZXh0RGlyZWN0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHls
ZShSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4mJik7CiAgICAgdm9pZCBvdmVycmlkZVdp
dGhTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCA1ZDgxYzJmMjU2NzQ1YjY5NTM5OWQ5MjA1Y2U3YWQwYjVmYWY5YTViLi4xZmJmZDkz
YjIzOTA5N2ZjOWJkNGE5ZThlOTBiYzZjODViNDQyODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBDbGVhclRleHRDb21tYW5kOjpDcmVhdGVB
bmRBcHBseShEb2N1bWVudCYgZG9jdW1lbnQpCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
dXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAotVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdl
OjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25hbDxW
aXNpYmxlU2VsZWN0aW9uPiB0ZW1wb3JhcnlTZWxlY3Rpb24sIE9wdGlvblNldDxUZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMpCitUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBv
cmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8Vmlz
aWJsZVNlbGVjdGlvbj4gdGVtcG9yYXJ5U2VsZWN0aW9uLCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uPiBvcHRpb25zKQogICAgIDogbV9kb2N1bWVudChSZWZQdHIoJmRvY3VtZW50
KSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV93YXNJZ25vcmluZ1NlbGVjdGlv
bkNoYW5nZXMoZG9jdW1lbnQuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQpAQCAt
NjYyLDcgKzY2Miw3IEBAIGJvb2wgRWRpdG9yOjpjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQo
KS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgcGFzdGVib2FyZC5jYW5TbWFydFJlcGxh
Y2UoKTsKIH0KIAotYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydEZyYWdtZW50KERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ0RP
TVJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rpb24pCitib29sIEVkaXRvcjo6c2hv
dWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdET01SYW5nZSwgRWRpdG9ySW5zZXJ0QWN0
aW9uIGdpdmVuQWN0aW9uKQogewogICAgIGlmICghY2xpZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTc0MSwxMiArNzQxLDEyIEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTZWxlY3RSZXBsYWNlbWVudCBzZWxlCiAgICAg
cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpyYW5n
ZSwgdGV4dCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGU6Olll
cywgZWRpdGluZ0FjdGlvbik7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnNl
bGVjdGVkUmFuZ2UoKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpzZWxlY3Rl
ZFJhbmdlKCkKIHsKICAgICByZXR1cm4gbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQogCi1ib29sIEVkaXRvcjo6c2hvdWxkRGVsZXRlUmFu
Z2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkgY29uc3QKK2Jvb2wgRWRpdG9y
OjpzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJhbmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKCkgJiYg
Y2FuRGVsZXRlUmFuZ2UoKnJhbmdlKSAmJiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkRGVs
ZXRlUmFuZ2UoKnJhbmdlKTsKIH0KQEAgLTc2Nyw3ICs3NjcsNyBAQCBib29sIEVkaXRvcjo6dHJ5
REhUTUxDdXQoKQogICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRU
YXJnZXRGcm9tU2VsZWN0aW9uKCksIENsaXBib2FyZEV2ZW50S2luZDo6Q3V0KTsKIH0KIAotYm9v
bCBFZGl0b3I6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKSBjb25z
dAorYm9vbCBFZGl0b3I6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBh
Y3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKG1fZG9jdW1lbnQuZnJhbWUoKS0+bWFpbkZyYW1lKCku
bG9hZGVyKCkuc2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZygpICYmIGFjdGlvbiA9
PSBFZGl0b3JJbnNlcnRBY3Rpb246OlR5cGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
ODUzLDcgKzE4NTMsNyBAQCB2b2lkIEVkaXRvcjo6ZGlkRW5kRWRpdGluZygpCiAgICAgICAgIGNs
aWVudCgpLT5kaWRFbmRFZGl0aW5nKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3Zv
aWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChyYW5nZSk7CkBAIC0yNDI0
LDcgKzI0MjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpIGNvbnN0CiBUZXh0Q2hlY2tpbmdHdWVzc2VzIEVkaXRv
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwoKQogewogICAgIGlmICh1bmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsKLSAgICAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHJhbmdlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICAg
ICAgYXV0byBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwog
ICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlvcigpLnNob3VsZEFsbG93
U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgYXV0
byB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKQEAg
LTI2MjQsNyArMjYyNCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBp
bmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB3b3JkU3RhcnQsCiAjZW5kaWYKIH0KICAg
ICAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdy
YW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBib29sIGNoZWNrU3BlbGxp
bmcpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NP
ckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBib29sIGNoZWNr
U3BlbGxpbmcpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNlbGVjdGlvbiBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQg
Ym91bmRhcmllcy4KQEAgLTI2ODMsNyArMjY4Myw3IEBAIGJvb2wgRWRpdG9yOjppc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzU3BlbGxDaGVj
a2luZ0VuYWJsZWRGb3IobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
LmRlcHJlY2F0ZWROb2RlKCkpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpt
YXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgcmV0dXJuIG1hcmtNaXNzcGVsbGluZ3NP
ckJhZEdyYW1tYXIoc2VsZWN0aW9uLCB0cnVlKTsKIH0KQEAgLTI2OTMsNyArMjY5Myw3IEBAIHZv
aWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24pCiAgICAgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihzZWxlY3Rpb24sIGZhbHNlKTsK
IH0KIAotdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc3BlbGxpbmdSYW5nZSwgY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiBhdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIGdyYW1tYXJSYW5nZSkKK3ZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgc3BlbGxpbmdS
YW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGF1dG9tYXRpY1JlcGxhY2Vt
ZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBncmFtbWFyUmFuZ2Up
CiB7CiAgICAgaWYgKHBsYXRmb3JtRHJpdmVuVGV4dENoZWNrZXJFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwOTEsNyArMzA5MSw3IEBAIHZvaWQgRWRpdG9yOjpkZWxldGVkQXV0b2Nv
cnJlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU3RyCiAg
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBv
c2l0aW9uKHBvc2l0aW9uLCBvcmlnaW5hbFN0cmluZyk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBFZGl0b3I6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQor
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclBvaW50KGNvbnN0IElu
dFBvaW50JiB3aW5kb3dQb2ludCkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbV9kb2N1bWVudC5m
cmFtZSgpLT5kb2N1bWVudEF0UG9pbnQod2luZG93UG9pbnQpOwogICAgIGlmICghZG9jdW1lbnQp
CkBAIC0zMTI5LDcgKzMxMjksNyBAQCB2b2lkIEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0aW9uQ2hh
bmdlcyhib29sIGlnbm9yZSwgUmV2ZWFsU2VsZWN0aW9uIHNob3VsZFJldmVhbAogICAgICAgICBy
ZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oU2Nyb2xsQWxpZ25tZW50OjphbGln
blRvRWRnZUlmTmVlZGVkLCBSZXZlYWxFeHRlbnQpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5n
ZT4gRWRpdG9yOjpjb21wb3NpdGlvblJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEVkaXRvcjo6Y29tcG9zaXRpb25SYW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Nv
bXBvc2l0aW9uTm9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM0NjcsNyAr
MzQ2Nyw3IEBAIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSBj
b25zdAogYm9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRP
cHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVmPERvY3VtZW50PiBwcm90ZWN0ZWREb2N1bWVudCht
X2RvY3VtZW50KTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmVzdWx0UmFuZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmVzdWx0UmFuZ2U7CiAgICAgewogICAgICAgICBt
X2RvY3VtZW50LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAg
ICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGRpc2FibGVyKG1fZG9jdW1l
bnQpOwpAQCAtMzUwMSw3ICszNTAxLDcgQEAgc3RhdGljIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5k
YXJ5UG9pbnRBZnRlck5vZGVDb250ZW50cyhOb2RlJiBub2RlLCBGaW5kT3B0aW9ucwogICAgIHJl
dHVybiBvcHRpb25zLmNvbnRhaW5zKEJhY2t3YXJkcykgPyBtYWtlQm91bmRhcnlQb2ludEJlZm9y
ZU5vZGVDb250ZW50cyhub2RlKSA6IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMo
bm9kZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQ
b2ludEFmdGVyTm9kZShOb2RlJiBub2RlLCBGaW5kT3B0aW9ucyBvcHRpb25zKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9k
ZSYgbm9kZSwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICByZXR1cm4gb3B0aW9ucy5jb250
YWlucyhCYWNrd2FyZHMpID8gbWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlKG5vZGUpIDogbWFr
ZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUobm9kZSk7CiB9CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCBz
dGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFwc2VJZlJvb3RzRGlmZmVyKFNpbXBsZVJhbmdlJiYgcmFu
Z2UpCiAgICAgICAgID8gV1RGTW92ZShyYW5nZSkgOiBTaW1wbGVSYW5nZSB7IHJhbmdlLnN0YXJ0
LCByYW5nZS5zdGFydCB9OwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5n
ZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJlZmVyZW5jZVJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zKQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0zNTcxLDEyICszNTcxLDEyIEBAIHN0YXRpYyBib29sIGlzRnJh
bWVJblJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVj
dG9yPFNpbXBsZVJhbmdlPiogbWF0Y2hlcykKK3Vuc2lnbmVkIEVkaXRvcjo6Y291bnRNYXRjaGVz
Rm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9vbCBt
YXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBsZVJhbmdlPiogbWF0Y2hlcykKIHsKICAgICBpZiAodGFy
Z2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gc2VhcmNoUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VhcmNo
UmFuZ2U7CiAgICAgaWYgKHJhbmdlKSB7CiAgICAgICAgIGlmICgmcmFuZ2UtPnN0YXJ0LmRvY3Vt
ZW50KCkgPT0gJmRvY3VtZW50KCkpCiAgICAgICAgICAgICBzZWFyY2hSYW5nZSA9ICpyYW5nZTsK
QEAgLTM2OTgsNyArMzY5OCw3IEBAIHN0YXRpYyBWZWN0b3I8U2ltcGxlUmFuZ2U+IHNjYW5Gb3JU
ZWxlcGhvbmVOdW1iZXJzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGV4dGVuZFNlbGVjdGlvbihj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIGNoYXJhY3RlcnNUb0V4dGVuZCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBleHRlbmRTZWxlY3Rpb24oY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9FeHRlbmQpCiB7CiAgICAgYXV0
byBzdGFydCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpOwogICAg
IGF1dG8gZW5kID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5lbmQpOwpAQCAt
Mzk0MCwxMyArMzk0MCwxMyBAQCBTdHJpbmcgRWRpdG9yOjpzdHJpbmdGb3JDYW5kaWRhdGVSZXF1
ZXN0KCkgY29uc3QKICAgICByZXR1cm4gcGxhaW5UZXh0KCpyYW5nZSk7CiB9CiAKLU9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBFZGl0b3I6OmNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpjb250ZXh0UmFuZ2VGb3JD
YW5kaWRhdGVSZXF1ZXN0KCkgY29uc3QKIHsKICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uo
c3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpLCBlbmRPZlBhcmFncmFw
aChzZWxlY3Rpb24udmlzaWJsZUVuZCgpKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBF
ZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3Vs
dCYgcmVzdWx0KSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5n
ZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkg
Y29uc3QKIHsKICAgICBpZiAoIXJlc3VsdC5yYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC00MjAzLDcgKzQyMDMsNyBAQCB2b2lkIEVkaXRvcjo6bm90aWZ5Q2xp
ZW50T2ZBdHRhY2htZW50VXBkYXRlcygpCiAgICAgfQogfQogCi12b2lkIEVkaXRvcjo6aW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8gYXR0YWNobWVu
dCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRh
ZywgZG9jdW1lbnQoKSk7CiAgICAgYXR0YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihpZGVu
dGlmaWVyKTsKQEAgLTQyNTYsNyArNDI1Niw3IEBAIHZvaWQgRWRpdG9yOjp0b2dnbGVPdmVyd3Jp
dGVNb2RlRW5hYmxlZCgpCiAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZXRTaG91bGRTaG93
QmxvY2tDdXJzb3IobV9vdmVyd3JpdGVNb2RlRW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBFZGl0b3I6OmFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKQorc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gRWRpdG9yOjphZGp1c3RlZFNlbGVjdGlvblJhbmdlKCkKIHsKICAgICAvLyBG
SVhNRTogV2h5IGRvIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzZWxlY3Rpb24gdG8gaW5jbHVkZSB0
aGUgYW5jaG9yIHRhZyBpdCdzIGluPyBXaG9ldmVyIHdyb3RlIHRoaXMgY29kZSBvcmlnaW5hbGx5
IGZvcmdvdCB0byBsZWF2ZSB1cyBhIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgcmF0aW9uYWxlLgog
ICAgIGF1dG8gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCA5MmRiNGViYjk5NDQ2ODA4YzJlYmJiYTQ5OGI1NmZhY2YzZjYyZTMyLi4xNThiODdjYzE4
ZWRmMTg1NWY1NGIxMGZlMzcyMjJjNDU1OTNiMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTEyNiw3ICsxMjYsNyBAQCBlbnVtIGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6
IHVpbnQ4X3QgewogCiBjbGFzcyBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9w
dGlvbmFsPFZpc2libGVTZWxlY3Rpb24+ID0gc3RkOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9y
YXJ5U2VsZWN0aW9uT3B0aW9uPiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlKERvY3VtZW50Jiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9u
PiA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gPSB7
IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoKTsKIAog
cHJpdmF0ZToKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCBtX2FwcGVhcmFuY2VVcGRhdGVzV2VyZUVuYWJsZWQ7CiAjZW5kaWYK
LSAgICBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBtX3NlbGVjdGlvblRvUmVzdG9yZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IG1fc2VsZWN0aW9uVG9SZXN0b3JlOwog
fTsKIAogY2xhc3MgSWdub3JlU2VsZWN0aW9uQ2hhbmdlRm9yU2NvcGUgewpAQCAtMjE4LDkgKzIx
OCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG91dGRlbnQoKTsKICAgICB2
b2lkIHRyYW5zcG9zZSgpOwogCi0gICAgYm9vbCBzaG91bGRJbnNlcnRGcmFnbWVudChEb2N1bWVu
dEZyYWdtZW50JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0
aW9uKTsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoRG9jdW1lbnRGcmFn
bWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0
aW9uKTsKKyAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mKSBjb25zdDsKICAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlv
bik7CkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcGVsbENoZWNraW5n
RW5hYmxlZEluRm9jdXNlZE5vZGUoKSBjb25zdDsKICAgICBib29sIGlzU3BlbGxDaGVja2luZ0Vu
YWJsZWRGb3IoTm9kZSopIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya01pc3Nw
ZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZFN0YXJ0
LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25BZnRlclR5cGluZywgYm9vbCBkb1Jl
cGxhY2VtZW50KTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJik7IC8vIFJldHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFu
Z2UuCisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5ncyhjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7IC8vIFJldHVybnMgZmlyc3QgbWlzc3BlbGxpbmcgcmFuZ2Uu
CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAg
dm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CiAgICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihjb25z
dCBTcGVsbENoZWNrUmVxdWVzdCYsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7
CkBAIC0zMzYsNyArMzM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNPdmVyd3JpdGVNb2RlRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiAKLSAgICB2b2lk
IG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoT3B0aW9uU2V0PFRleHRD
aGVja2luZ1R5cGU+LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHNwZWxsaW5nUmFuZ2Us
IGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSwg
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBncmFtbWFyUmFuZ2UpOworICAgIHZvaWQgbWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhPcHRpb25TZXQ8VGV4dENoZWNr
aW5nVHlwZT4sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBzcGVsbGluZ1Jhbmdl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGdyYW1tYXJSYW5nZSk7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVAogI2Vu
ZGlmCkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRp
bmcoKTsKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKLSAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYpOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKIAog
ICAgIHZvaWQgc2hvd0ZvbnRQYW5lbCgpOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbmZpcm1PckNhbmNlbENvbXBvc2l0aW9uQW5kTm90aWZ5Q2xpZW50KCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwogICAgIGJvb2wgY2FuY2Vs
Q29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBjb21wb3NpdGlvblJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gY29tcG9zaXRpb25SYW5nZSgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24odW5z
aWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aW9uRW5kKSBjb25zdDsKIAog
ICAgIC8vIGdldHRpbmcgaW50ZXJuYXRpb25hbCB0ZXh0IGlucHV0IGNvbXBvc2l0aW9uIHN0YXRl
IChmb3IgdXNlIGJ5IElubGluZVRleHRCb3gpCkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhib29sLCBS
ZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFsRXhpc3RpbmdTZWxlY3Rpb24gPSBSZXZlYWxTZWxl
Y3Rpb246Olllcyk7CiAgICAgYm9vbCBpZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93
UG9pbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKIAogICAgIHZvaWQgY2xl
YXIoKTsKIApAQCAtNDE3LDcgKzQxNyw3IEBAIHB1YmxpYzoKIAogICAgIEVkaXRpbmdCZWhhdmlv
ciBiZWhhdmlvcigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGVk
UmFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3RlZFJhbmdlKCk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
ZmlybU1hcmtlZFRleHQoKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJp
bmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHNlYXJjaFJhbmdlLCBGaW5kT3B0aW9u
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VP
ZlN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
c2VhcmNoUmFuZ2UsIEZpbmRPcHRpb25zKTsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IG1hcmsoKSBjb25zdDsgLy8gTWFyaywgdG8gYmUgdXNlZCBhcyBlbWFjcyB1c2VzIGl0LgogICAg
IHZvaWQgc2V0TWFyayhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CkBAIC00NjcsNyArNDY3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFZGl0b3JV
SU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBu
ZXdTZWxlY3Rpb24sIEFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1p
dCwgYm9vbCBtYXJrTWF0Y2hlcywgVmVjdG9yPFNpbXBsZVJhbmdlPiopOworICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIGNvdW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbGltaXQs
IGJvb2wgbWFya01hdGNoZXMsIFZlY3RvcjxTaW1wbGVSYW5nZT4qKTsKICAgICBib29sIG1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoYm9vbCk7CiAKQEAgLTU1Miwx
NSArNTUyLDE1IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdG
b3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0Q2hlY2tpbmdSZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0
KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVGV4dENoZWNraW5n
UmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGNvbnRleHRSYW5nZUZvckNhbmRpZGF0ZVJl
cXVlc3QoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRl
eHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmKSBjb25zdDsKICAgICBi
b29sIGlzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5k
bGluZ0FjY2VwdGVkQ2FuZGlkYXRlOyB9CiAKICAgICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25h
cnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7
IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVy
biBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZp
bGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBxdW90ZUZy
YWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50Jik7CiAKICAgICB2b2lkIHJldmVhbFNl
bGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBE
b05vdFJldmVhbEV4dGVudCk7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1hcmtNaXNzcGVs
bGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVs
bGluZyk7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nKTsK
ICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVN
YXNrKGNvbnN0IE5vZGUmIHJvb3RFZGl0YWJsZUVsZW1lbnQsIE9wdGlvblNldDxUZXh0Q2hlY2tp
bmdUeXBlPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VsZWN0ZWRUZXh0KFRleHRJ
dGVyYXRvckJlaGF2aW9yKSBjb25zdDsKQEAgLTYxMyw3ICs2MTMsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOworICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5o
CmluZGV4IGEyYmZhNmRlOTFkYjQ4NGM2MWRkOTgwOWUyYzhjZjg0OTY5N2QwY2EuLjlkYTgwNzM4
NWUwM2MzOTEwY2JhZjgwOGFiM2ZjYmU3ZWUyMTg5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwcml2YXRl
OgogCiAgICAgU3RyaW5nIG1fZm9udE5hbWU7CiAgICAgU3RyaW5nIG1fZm9udEZhbWlseTsKLSAg
ICBPcHRpb25hbDxkb3VibGU+IG1fZm9udFNpemU7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2Zv
bnRTaXplRGVsdGE7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9ib2xkOwotICAgIE9wdGlvbmFsPGJv
b2w+IG1faXRhbGljOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplOworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZvbnRTaXplRGVsdGE7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBtX2JvbGQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2l0YWxpYzsKIH07CiAK
IGNsYXNzIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIHsKQEAgLTg2LDEyICs4NiwxMiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgRWRpdEFjdGlvbiBlZGl0QWN0aW9uKCkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8VmVydGljYWxBbGlnbkNoYW5nZT4gbV92ZXJ0aWNhbEFsaWdu
OwotICAgIE9wdGlvbmFsPENvbG9yPiBtX2JhY2tncm91bmRDb2xvcjsKLSAgICBPcHRpb25hbDxD
b2xvcj4gbV9mb3JlZ3JvdW5kQ29sb3I7Ci0gICAgT3B0aW9uYWw8Rm9udFNoYWRvdz4gbV9zaGFk
b3c7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9zdHJpa2VUaHJvdWdoOwotICAgIE9wdGlvbmFsPGJv
b2w+IG1fdW5kZXJsaW5lOworICAgIHN0ZDo6b3B0aW9uYWw8VmVydGljYWxBbGlnbkNoYW5nZT4g
bV92ZXJ0aWNhbEFsaWduOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IG1fYmFja2dyb3VuZENv
bG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IG1fZm9yZWdyb3VuZENvbG9yOworICAgIHN0
ZDo6b3B0aW9uYWw8Rm9udFNoYWRvdz4gbV9zaGFkb3c7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBtX3N0cmlrZVRocm91Z2g7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3VuZGVybGluZTsK
ICAgICBGb250Q2hhbmdlcyBtX2ZvbnRDaGFuZ2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb250QXR0cmlidXRlcy5oCmluZGV4IGZmMmYyMjY5NjJlZTJiMDAzNTc0MWJmOTNjMjAxNmZh
MDVmODA0MDUuLjc3MDA1NTQ1ZTdmZWFhMTZlYzIxZjU4M2Q0ZGM0YzhiMTRlMWE3NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3Ry
dWN0IFRleHRMaXN0IHsKICAgICBib29sIG9yZGVyZWQgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxUZXh0TGlzdD4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxU
ZXh0TGlzdD4gZGVjb2RlKERlY29kZXImKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJl
dGFpblB0cjxOU1RleHRMaXN0PiBjcmVhdGVUZXh0TGlzdCgpIGNvbnN0OwpAQCAtNTQsMTkgKzU0
LDE5IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFRleHRMaXN0OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0eWxlKSA8PCBzdGFydGluZ0l0ZW1OdW1iZXIgPDwgb3JkZXJlZDsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFRleHRMaXN0PiBUZXh0TGlzdDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
c3RkOjpvcHRpb25hbDxUZXh0TGlzdD4gVGV4dExpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IHN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDhfdD4gc3R5bGU7CiAgICAgZGVjb2RlciA+PiBzdHlsZTsKICAgICBpZiAoIXN0eWxlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0
ZW1OdW1iZXI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAg
ICBkZWNvZGVyID4+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAgICBpZiAoIXN0YXJ0aW5nSXRlbU51
bWJlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIg
Pj4gb3JkZXJlZDsKICAgICBpZiAoIW9yZGVyZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5k
ZXggM2M1NGEzMGM3ZDFhNmViZGU4YjFjMmYwNzNmODcyN2VjNWJlMDQ5MC4uYmRkOWZkYmJlNzY5
NGU5NDkyZmNjMGM4OWFhMWRlZjI4YzMzZmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgRm9ybWF0
QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBv
c2l0aW9uJiBlbmQsCiAgICAgICAgIGluc2VydEJsb2NrUGxhY2Vob2xkZXIobGFzdFBhcmFncmFw
aEluQmxvY2tOb2RlKTsKIH0KICAgICAKLUVsZW1lbnQqIEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxl
bWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlKQorRWxlbWVudCogRm9ybWF0QmxvY2tDb21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tD
b21tYW5kKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5oCmluZGV4IGRhMmFkNTA0YmMxMDUzNzk4NDRlN2NhYTUw
MjUwNmQxNTExNjI3OTQuLjE5NTAxYzg2NDcwM2E2MjY3MGFhN2NlYzM2M2E5NjBmOTM3N2NlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBwcmVzZXJ2ZXNUeXBpbmdTdHlsZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHN0YXRpYyBFbGVtZW50KiBl
bGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
OworICAgIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAgICAgYm9vbCBkaWRBcHBseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlkQXBwbHk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggMjRkZThkN2QwYWIwMmZmMGZkYTU3N2YxODg2YmI1
OTZhOTY2NjRhNi4uOTFmZmIzZjVmZTJmM2YzZDE1YjMyMTJhOGExOThlYzMwOTMwNjZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIwMjYsNyArMjAy
Niw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAgICAgfQogfQogCi1ib29s
IEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZyBjbG9zZVR5
cGluZywgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCkKK2Jvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBBZmZpbml0eSBhZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcgY2xvc2VUeXBpbmcsIEVVc2Vy
VHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjUyMyw3ICsyNTIzLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhw
YW5kU2VsZWN0aW9uVG9FbGVtZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKICAgICBzZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24oKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVs
ZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBl
bGVtZW50ID0gZGVwcmVjYXRlZEVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQobV9zZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKICAgICBp
ZiAoIWVsZW1lbnQpCkBAIC0yNTQ3LDcgKzI1NDcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpl
eHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQogICAgICAgICBz
ZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1l
U2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQorc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OndvcmRSYW5nZUNvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbigpCiB7CiAgICAgcmV0dXJuIHdvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRT
ZWxlY3Rpb24obV9zZWxlY3Rpb24pLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CkBAIC0yNjAxLDEy
ICsyNjAxLDEyIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KCkg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1l
U2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25z
dAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlNb3Zp
bmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJhbmdl
QnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oQWx0ZXJhdGlvbk1vdmUsIGFtb3VudCk7CiB9CiAK
LU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQg
YW1vdW50KSBjb25zdAogewogICAgIHJldHVybiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0
aW9uKEFsdGVyYXRpb25FeHRlbmQsIGFtb3VudCk7CiB9CkBAIC0yNzQ4LDcgKzI3NDgsNyBAQCBi
b29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246
OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlvbiwg
aW50IGFtb3VudCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0
aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uIGFsdGVyYXRp
b24sIGludCBhbW91bnQpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjc5Nyw3ICsyNzk3LDcgQEAgdm9pZCBG
cmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRDb2xvcihjb25zdCBDb2xvciYgY2FyZXRDb2xvcikKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXN0YXRpYyBib29sIGNvbnRhaW5zRW5k
cG9pbnRzKGNvbnN0IFdlYWtQdHI8RG9jdW1lbnQ+JiBkb2N1bWVudCwgY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3N0YXRpYyBib29sIGNvbnRhaW5zRW5kcG9pbnRzKGNvbnN0
IFdlYWtQdHI8RG9jdW1lbnQ+JiBkb2N1bWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBkb2N1bWVudCAmJiByYW5nZSAmJiBkb2N1bWVu
dC0+Y29udGFpbnMocmFuZ2UtPnN0YXJ0LmNvbnRhaW5lcikgJiYgZG9jdW1lbnQtPmNvbnRhaW5z
KHJhbmdlLT5lbmQuY29udGFpbmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaAppbmRleCA2YmNhN2E4NTZkYzYxMGIwZmYzNWZlMDhiNjA3YjY3YmE5ZDJlYWI5Li45
M2E1OWQ1ODY0MjRiMjdmNmE4YTg3NzBhNGJmZDUzMjIxMjYyNDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
LCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRp
b25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQo
KSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4
dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAK
ICAgICBlbnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgQWZmaW5pdHksIFNob3VsZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9
IE5vdFVzZXJUcmlnZ2VyZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRS
YW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBTaG91bGRD
bG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFsbCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoKTsKICAgICB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tRnJhbWUoKTsKQEAgLTIxMCwxNSArMjEw
LDE1IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJh
bmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2Vs
ZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25U
b1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlQ29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRT
ZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVUNoYXIgY2hhcmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50
IGFtb3VudCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25BdFNlbnRl
bmNlU3RhcnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGlvbkF0V29y
ZFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVu
dFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1v
dW50KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiByYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ3VycmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQg
c2V0Q2FyZXRCbGlua3MoYm9vbCBjYXJldEJsaW5rcyA9IHRydWUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtMzEzLDE0ICszMTMsMTQg
QEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoU2VsZWN0U3RhcnQoKTsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlBbHRlcmlu
Z0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24sIGludCBhbW91bnQpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24o
RUFsdGVyYXRpb24sIGludCBhbW91bnQpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0
ZUFzc29jaWF0ZWRMaXZlUmFuZ2UoKTsKIAogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgUmVmUHRyPFJhbmdlPiBtX2Fzc29jaWF0ZWRMaXZlUmFuZ2U7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb247CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fc2VsZWN0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBt
X29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0byBzdG9yZSBiYXNlIGJlZm9yZSB0aGUgYWRqdXN0bWVu
dCBhdCBiaWRpIGJvdW5kYXJ5LgogICAgIFRleHRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsg
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBhYTE5YTAwZTI5NDIyZDFiYjIx
ZTBlN2MyZjUyZGIxZjFjMWNjNjExLi45ODkyYzkxNmFhMDIzNTE4ZGEwMTYzZmI5NWNjZGUzN2Ew
YTdjMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNw
cApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJp
YnV0ZShTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IEVsZW1lbnQmIGVsCiAKICAgICByZXN1
bHQuYXBwZW5kKCcgJyk7CiAKLSAgICBPcHRpb25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3RpdmVY
TUxQcmVmaXhlZE5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxRdWFsaWZpZWROYW1lPiBlZmZlY3Rp
dmVYTUxQcmVmaXhlZE5hbWU7CiAgICAgaWYgKGlzU2VyaWFsaXppbmdIVE1MKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKGh0bWxBdHRyaWJ1dGVTZXJpYWxpemF0aW9uKGF0dHJpYnV0ZSkpOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCBh
Y2FjODBlNmNlZmNmY2RmMzk0NmFmZjc4MTUwOTMwMjA5M2I1N2FjLi41YzA4N2UwMTEwZGY1ZWQ2
MTgxOTBkOTNiZGRlZDVhNTQ3MzEzMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRl
cmVkUG9zaXRpb24uaApAQCAtODUsOCArODUsOCBAQCBwcml2YXRlOgogICAgIExheW91dEludGVn
cmF0aW9uOjpSdW5JdGVyYXRvciBtX3J1bjsKICAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsK
IAotICAgIG11dGFibGUgT3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBt
X3ByZXZpb3VzTGVhZk9uTGluZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPExheW91dEludGVncmF0
aW9uOjpSdW5JdGVyYXRvcj4gbV9uZXh0TGVhZk9uTGluZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yPiBtX3ByZXZpb3VzTGVhZk9uTGlu
ZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJh
dG9yPiBtX25leHRMZWFmT25MaW5lOwogfTsKIAogYm9vbCByZW5kZXJPYmplY3RDb250YWluc1Bv
c2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFBvc2l0aW9uJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDMy
YTViNmQ4YjZkNmE4ZDNjZmNkMjU2N2Y4N2JhNjQ5NGZhNjFjNTUuLjQ3NTA0OTM4YWU3YzU2YmRj
ZmRiOWM1NGU2ODlhODMzYmVlNzQxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgc3RhdGlj
IGJvb2wgZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQoUmVwbGFjZW1lbnRGcmFnbWVudCYg
ZnJhZ21lbnQsIGNvbnN0IFAKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcHJvcGVydHlM
aWdodG5lc3MgPSBbJl0oY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBpbmxpbmVTdHlsZSwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICBhdXRvIHByb3Bl
cnR5TGlnaHRuZXNzID0gWyZdKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgaW5saW5lU3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgLT4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHsKICAgICAg
ICAgYXV0byBjb2xvciA9IGlubGluZVN0eWxlLnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKTsK
ICAgICAgICAgaWYgKCFjb2xvciB8fCAhY29sb3IudmFsdWUoKS5pc1Zpc2libGUoKSB8fCBjb2xv
ci52YWx1ZSgpLmlzU2VtYW50aWMoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xODIw
LDcgKzE4MjAsNyBAQCBib29sIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpwZXJmb3JtVHJpdmlh
bFJlcGxhY2UoY29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCYgZgogICAgIHJldHVybiB0cnVlOwog
fQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2Vy
dGVkQ29udGVudFJhbmdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRlZENvbnRlbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0T2ZJbnNlcnRlZENvbnRlbnQsIG1fZW5kT2ZJ
bnNlcnRlZENvbnRlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCmluZGV4IGU2Zjg3MWE2Zjk1NGNjOTM1MzU4YjliMGQzZjNjNjA4
MmJkN2FjYjguLjc1OWU4MDBiYmFlYjc2OThhODhlNGQ2YTZhYzg3Y2U4YzZhM2MyYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVj
dGlvbkZvckluc2VydGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNlbGVjdGlvbkZv
ckluc2VydGVkVGV4dDsgfQogICAgIFN0cmluZyBkb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0OyB9CiAKLSAgICBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gaW5zZXJ0ZWRDb250ZW50UmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnNlcnRlZENvbnRlbnRSYW5nZSgpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiwgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlvblNldDxDb21tYW5kT3B0aW9uPiwgRWRpdEFjdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXgg
OGY3MTVmNGYxMDhhNjdmNTQ2M2EzNmM2ZmIxOTJiMWY1YWY5MWUzMy4uZWIwYzc2OTYwM2Y0ZGRl
MTRhYTY1MDdhNTEzZWYyOWFjNmE4YjAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIFRleHRDaGVja2luZ1Bh
cmFncmFwaDo6VGV4dENoZWNraW5nUGFyYWdyYXBoKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkK
IHsKIH0KIAotVGV4dENoZWNraW5nUGFyYWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoY29u
c3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0IFNpbXBsZVJhbmdlJiByZXBsYWNl
bWVudFJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHBhcmFncmFwaFJhbmdlKQor
VGV4dENoZWNraW5nUGFyYWdyYXBoOjpUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoY29uc3QgU2ltcGxl
UmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0IFNpbXBsZVJhbmdlJiByZXBsYWNlbWVudFJhbmdl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcGFyYWdyYXBoUmFuZ2UpCiAgICAg
OiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdSYW5nZSkKICAgICAsIG1fYXV0b21hdGljUmVwbGFj
ZW1lbnRSYW5nZShyZXBsYWNlbWVudFJhbmdlKQogICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJh
Z3JhcGhSYW5nZSkKQEAgLTIyOCw5ICsyMjgsOSBAQCBUZXh0Q2hlY2tpbmdIZWxwZXI6OlRleHRD
aGVja2luZ0hlbHBlcihFZGl0b3JDbGllbnQmIGNsaWVudCwgY29uc3QgU2ltcGxlUmFuZ2UmCiB7
CiB9CiAKLWF1dG8gVGV4dENoZWNraW5nSGVscGVyOjpmaW5kTWlzc3BlbGxlZFdvcmRzKE9wZXJh
dGlvbiBvcGVyYXRpb24pIGNvbnN0IC0+IHN0ZDo6cGFpcjxNaXNzcGVsbGVkV29yZCwgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+PgorYXV0byBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRNaXNzcGVsbGVk
V29yZHMoT3BlcmF0aW9uIG9wZXJhdGlvbikgY29uc3QgLT4gc3RkOjpwYWlyPE1pc3NwZWxsZWRX
b3JkLCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPj4KIHsKLSAgICBzdGQ6OnBhaXI8TWlzc3Bl
bGxlZFdvcmQsIE9wdGlvbmFsPFNpbXBsZVJhbmdlPj4gZmlyc3Q7CisgICAgc3RkOjpwYWlyPE1p
c3NwZWxsZWRXb3JkLCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPj4gZmlyc3Q7CiAKICAgICB1
aW50NjRfdCBjdXJyZW50Q2h1bmtPZmZzZXQgPSAwOwogCkBAIC0yOTcsNyArMjk3LDcgQEAgYXV0
byBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsZWRXb3JkT3JVbmdyYW1tYXRp
Y2FsUGhyYXNlKGJvb2wgY2hlY2sKICAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAK
ICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7Ci0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1p
c3NwZWxsZWRXb3JkUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWlzc3Bl
bGxlZFdvcmRSYW5nZTsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZTsKICAgICAKICAgICAv
LyBFeHBhbmQgdGhlIHNlYXJjaCByYW5nZSB0byBlbmNvbXBhc3MgZW50aXJlIHBhcmFncmFwaHMs
IHNpbmNlIHRleHQgY2hlY2tpbmcgbmVlZHMgdGhhdCBtdWNoIGNvbnRleHQuCkBAIC01NTEsNyAr
NTUxLDcgQEAgVGV4dENoZWNraW5nR3Vlc3NlcyBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNG
b3JNaXNzcGVsbGVkV29yZE9yVW5ncmFtbWF0aWNhbFAKICAgICByZXR1cm4geyB9OwogfQogCi1P
cHRpb25hbDxTaW1wbGVSYW5nZT4gVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxl
ZFdvcmRzKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFRleHRDaGVja2luZ0hl
bHBlcjo6bWFya0FsbE1pc3NwZWxsZWRXb3JkcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmRN
aXNzcGVsbGVkV29yZHMoT3BlcmF0aW9uOjpNYXJrQWxsKS5zZWNvbmQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAppbmRleCBiNWQyM2EyZWUzZjVlZmE4
ZThjY2MyZTM4OGNjMDk5ODRmMmQ4NzcxLi44MmNkOTYxMzU5OWZmNGU1MmQzMjJjNmJmNTg0MjY4
ZmEzNTY5NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIGNsYXNzIFRl
eHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dENoZWNraW5n
UGFyYWdyYXBoKGNvbnN0IFNpbXBsZVJhbmdlJiBjaGVja2luZ0FuZEF1dG9tYXRpY1JlcGxhY2Vt
ZW50UmFuZ2UpOwotICAgIFRleHRDaGVja2luZ1BhcmFncmFwaChjb25zdCBTaW1wbGVSYW5nZSYg
Y2hlY2tpbmdSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFu
Z2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcGFyYWdyYXBoUmFuZ2UpOworICAgIFRl
eHRDaGVja2luZ1BhcmFncmFwaChjb25zdCBTaW1wbGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICB1aW50NjRfdCByYW5n
ZUxlbmd0aCgpIGNvbnN0OwogICAgIFNpbXBsZVJhbmdlIHN1YnJhbmdlKENoYXJhY3RlclJhbmdl
KSBjb25zdDsKQEAgLTY5LDEzICs2OSwxMyBAQCBwcml2YXRlOgogCiAgICAgU2ltcGxlUmFuZ2Ug
bV9jaGVja2luZ1JhbmdlOwogICAgIFNpbXBsZVJhbmdlIG1fYXV0b21hdGljUmVwbGFjZW1lbnRS
YW5nZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX3BhcmFncmFwaFJhbmdl
OwotICAgIG11dGFibGUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1fb2Zmc2V0QXNSYW5nZTsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1fcGFyYWdyYXBoUmFuZ2U7Cisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX29mZnNldEFzUmFuZ2U7CiAg
ICAgbXV0YWJsZSBTdHJpbmcgbV90ZXh0OwotICAgIG11dGFibGUgT3B0aW9uYWw8dWludDY0X3Q+
IG1fY2hlY2tpbmdTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2NoZWNr
aW5nTGVuZ3RoOwotICAgIG11dGFibGUgT3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0b21hdGljUmVw
bGFjZW1lbnRTdGFydDsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2F1dG9tYXRp
Y1JlcGxhY2VtZW50TGVuZ3RoOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
bV9jaGVja2luZ1N0YXJ0OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9j
aGVja2luZ0xlbmd0aDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fYXV0
b21hdGljUmVwbGFjZW1lbnRTdGFydDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG1fYXV0b21hdGljUmVwbGFjZW1lbnRMZW5ndGg7CiB9OwogCiBjbGFzcyBUZXh0Q2hlY2tp
bmdIZWxwZXIgewpAQCAtOTYsMTQgKzk2LDE0IEBAIHB1YmxpYzoKICAgICBVbmdyYW1tYXRpY2Fs
UGhyYXNlIGZpbmRGaXJzdFVuZ3JhbW1hdGljYWxQaHJhc2UoKSBjb25zdDsKICAgICBWYXJpYW50
PE1pc3NwZWxsZWRXb3JkLCBVbmdyYW1tYXRpY2FsUGhyYXNlPiBmaW5kRmlyc3RNaXNzcGVsbGVk
V29yZE9yVW5ncmFtbWF0aWNhbFBocmFzZShib29sIGNoZWNrR3JhbW1hcikgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFya0FsbE1pc3NwZWxsZWRXb3JkcygpIGNvbnN0OyAv
LyBSZXR1cm5zIHRoZSByYW5nZSBvZiB0aGUgZmlyc3QgbWlzc3BlbGxlZCB3b3JkLgorICAgIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1hcmtBbGxNaXNzcGVsbGVkV29yZHMoKSBjb25zdDsg
Ly8gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgdGhlIGZpcnN0IG1pc3NwZWxsZWQgd29yZC4KICAgICB2
b2lkIG1hcmtBbGxVbmdyYW1tYXRpY2FsUGhyYXNlcygpIGNvbnN0OwogCiAgICAgVGV4dENoZWNr
aW5nR3Vlc3NlcyBndWVzc2VzRm9yTWlzc3BlbGxlZFdvcmRPclVuZ3JhbW1hdGljYWxQaHJhc2Uo
Ym9vbCBjaGVja0dyYW1tYXIpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgT3Bl
cmF0aW9uIDogYm9vbCB7IEZpbmRGaXJzdCwgTWFya0FsbCB9OwotICAgIHN0ZDo6cGFpcjxNaXNz
cGVsbGVkV29yZCwgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+PiBmaW5kTWlzc3BlbGxlZFdvcmRzKE9w
ZXJhdGlvbikgY29uc3Q7IC8vIFJldHVybnMgdGhlIGZpcnN0LgorICAgIHN0ZDo6cGFpcjxNaXNz
cGVsbGVkV29yZCwgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4+IGZpbmRNaXNzcGVsbGVkV29y
ZHMoT3BlcmF0aW9uKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgZmlyc3QuCiAgICAgVW5ncmFtbWF0
aWNhbFBocmFzZSBmaW5kVW5ncmFtbWF0aWNhbFBocmFzZXMoT3BlcmF0aW9uKSBjb25zdDsgLy8g
UmV0dXJucyB0aGUgZmlyc3QuCiAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkg
Y29uc3Q7CiAgICAgaW50IGZpbmRVbmdyYW1tYXRpY2FsUGhyYXNlcyhPcGVyYXRpb24sIGNvbnN0
IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIHVpbnQ2NF90IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIHVpbnQ2NF90IGVuZE9mZnNldCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQwNjMwZTMyZGM5MGU0N2NlNmM0NDZjYjA2NjRlODE5MTJkNGJmN2MuLjRhYzM3
YzkxNDhjM2UzYjVkZGM3ZDAyNGQ4ZDc0NmU2ZDAzYTEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gVHlwZTo6RXhjbHVkZTsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxUeXBlPiB0eXBlRm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQorICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZUZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKICAgICB7CiAgICAgICAgIGF1dG8gaXQgPSBtX2NhY2hlLmZpbmQoZWxlbWVudCk7CiAg
ICAgICAgIGlmIChpdCAhPSBtX2NhY2hlLmVuZCgpKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgVGV4dEl0ZXJhdG9yIG1faXRlcmF0b3I7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9wYXN0RW5kTm9kZTsKLSAgICBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gbV90ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fdGV4
dDsKIH07CiAKIHN0YXRpYyBib29sIHNob3VsZEV4dHJhY3RWYWx1ZUZvclRleHRNYW5pcHVsYXRp
b24oY29uc3QgSFRNTElucHV0RWxlbWVudCYgaW5wdXQpCkBAIC0yODgsNyArMjg4LDcgQEAgc3Rh
dGljIGJvb2wgYXJlRXF1YWxJZ25vcmluZ0xlYWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzKGNv
bnN0IFN0cmluZyYgY29udGVudCwKICAgICByZXR1cm4gY29udGVudC5zdHJpcFdoaXRlU3BhY2Uo
KSA9PSBvcmlnaW5hbENvbnRlbnQuc3RyaXBXaGl0ZVNwYWNlKCk7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiB0
b2tlbkluZm8oTm9kZSogbm9kZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm8+IHRva2VuSW5mbyhOb2RlKiBub2Rl
KQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc1
NCw3ICs3NTQsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjp1cGRhdGVJbnNl
cnRpb25zKFZlY3RvcjxOb2RlRW50cnk+JiBsYXN0VG9wRG93bgogICAgICAgICBpbnNlcnRpb25z
LmFwcGVuZChOb2RlSW5zZXJ0aW9uIHsgbGFzdFRvcERvd25QYXRoLnNpemUoKSA/IGxhc3RUb3BE
b3duUGF0aC5sYXN0KCkuc2Vjb25kLnB0cigpIDogbnVsbHB0ciwgKmN1cnJlbnROb2RlIH0pOwog
fQogCi1hdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlw
dWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+JiBy
ZXBsYWNlbWVudFRva2VucywgSGFzaFNldDxSZWY8Tm9kZT4+JiBjb250YWluZXJzV2l0aG91dFZp
c3VhbE92ZXJmbG93QmVmb3JlUmVwbGFjZW1lbnQpIC0+IE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZh
aWx1cmVUeXBlPgorYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25z
dCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRv
a2VuPiYgcmVwbGFjZW1lbnRUb2tlbnMsIEhhc2hTZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dp
dGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJlcGxhY2VtZW50KSAtPiBzdGQ6Om9wdGlvbmFsPE1h
bmlwdWxhdGlvbkZhaWx1cmVUeXBlPgogewogICAgIGlmIChpdGVtLnN0YXJ0LmlzT3JwaGFuKCkg
fHwgaXRlbS5lbmQuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1
cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCAxYmMwMTgxYmFmYjRlZTRmYTJiZTcx
ZTU4YzVlNGQyZWZlM2Q3ZGJjLi4yZWZhNWYyZGI2ZGQzYjJiMDJkZGZmYzY5ODNiZjVmZDI0MDg4
ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlci5oCkBAIC01NSwxNyArNTUsMTcgQEAgcHVibGljOgogICAgICAgICBib29sIGlz
VmlzaWJsZSB7IGZhbHNlIH07CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBkZWNvZGUoRGVjb2RlciYp
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxN
YW5pcHVsYXRpb25Ub2tlbkluZm8+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0
cnVjdCBNYW5pcHVsYXRpb25Ub2tlbiB7CiAgICAgICAgIFRva2VuSWRlbnRpZmllciBpZGVudGlm
aWVyOwogICAgICAgICBTdHJpbmcgY29udGVudDsKLSAgICAgICAgT3B0aW9uYWw8TWFuaXB1bGF0
aW9uVG9rZW5JbmZvPiBpbmZvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvblRv
a2VuSW5mbz4gaW5mbzsKICAgICAgICAgYm9vbCBpc0V4Y2x1ZGVkIHsgZmFsc2UgfTsKIAogICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNYW5pcHVs
YXRpb25Ub2tlbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFuaXB1bGF0aW9uVG9rZW4+IGRlY29kZShEZWNv
ZGVyJik7CiAgICAgfTsKIAogICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRv
a2VuczsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxNYW5pcHVsYXRpb25JdGVtPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYW5pcHVsYXRpb25JdGVtPiBk
ZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgRXhjbHVzaW9uUnVsZSB7CkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEF0b21TdHJpbmcgbG9jYWxOYW1l
OwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8RWxlbWVudFJ1bGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50UnVsZT4gZGVj
b2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgQXR0cmlidXRlUnVs
ZSB7CkBAIC05NCwxNCArOTQsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgU3RyaW5nIHZhbHVl
OwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8QXR0cmlidXRlUnVsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0ZVJ1bGU+
IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0IENsYXNzUnVs
ZSB7CiAgICAgICAgICAgICBBdG9tU3RyaW5nIGNsYXNzTmFtZTsKIAogICAgICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENsYXNzUnVsZT4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENsYXNzUnVsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAg
fTsKIAogICAgICAgICBUeXBlIHR5cGU7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIG1hdGNoKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKIAogICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxFeGNsdXNpb25SdWxlPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxFeGNsdXNpb25SdWxlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAg
ICB1c2luZyBNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9j
dW1lbnQmLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uSXRlbT4mKT47CkBAIC0xMzQsNyArMTM0
LDcgQEAgcHVibGljOgogICAgICAgICBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZSB0eXBlOwogCiAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1hbmlw
dWxhdGlvbkZhaWx1cmU+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGRlY29k
ZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxNYW5pcHVs
YXRpb25GYWlsdXJlPiBjb21wbGV0ZU1hbmlwdWxhdGlvbihjb25zdCBWZWN0b3I8TWFuaXB1bGF0
aW9uSXRlbT4mKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIE5vZGVF
bnRyeSA9IHN0ZDo6cGFpcjxSZWY8Tm9kZT4sIFJlZjxOb2RlPj47CiAgICAgVmVjdG9yPFJlZjxO
b2RlPj4gZ2V0UGF0aChOb2RlKiwgTm9kZSopOwogICAgIHZvaWQgdXBkYXRlSW5zZXJ0aW9ucyhW
ZWN0b3I8Tm9kZUVudHJ5PiYsIGNvbnN0IFZlY3RvcjxSZWY8Tm9kZT4+JiwgTm9kZSosIEhhc2hT
ZXQ8UmVmPE5vZGU+PiYsIFZlY3RvcjxOb2RlSW5zZXJ0aW9uPiYpOwotICAgIE9wdGlvbmFsPE1h
bmlwdWxhdGlvbkZhaWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRh
JiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYsIEhhc2hTZXQ8UmVmPE5vZGU+PiYg
Y29udGFpbmVyc1dpdGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJlcGxhY2VtZW50KTsKKyAgICBz
dGQ6Om9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0IE1hbmlw
dWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYsIEhhc2hT
ZXQ8UmVmPE5vZGU+PiYgY29udGFpbmVyc1dpdGhvdXRWaXN1YWxPdmVyZmxvd0JlZm9yZVJlcGxh
Y2VtZW50KTsKIAogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hh
c2hTZXQ8RWxlbWVudD4gbV9lbGVtZW50c1dpdGhOZXdSZW5kZXJlcjsKQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbklu
Zm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgotT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
SW5mbz4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuSW5mbzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm8+IFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIE1hbmlwdWxhdGlvblRva2VuSW5mbyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudGFnTmFtZSkpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb24KIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIE1hbmlwdWxhdGlvblRva2VuIHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2
b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29ucwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVt
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNYW5pcHVsYXRpb25JdGVtIHJlc3Vs
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKQEAgLTI3Miw3
ICsyNzIsNyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxl
PiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpF
eGNsdXNpb25SdWxlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRXhjbHVzaW9uUnVsZSByZXN1bHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCkBAIC0yODksNyArMjg5LDcgQEAg
dm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6RWxlbWVudFJ1
bGU6OmVuY29kZShFbmNvZGVyJiBlbmMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOjpFbGVtZW50
UnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRS
dWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6RWxlbWVudFJ1bGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIEVsZW1lbnRSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5sb2NhbE5hbWUpKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmVuY29k
ZShFbmNvZGVyJiBlCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6QXR0cmlidXRlUnVsZT4gVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6QXR0cmlidXRlUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1bGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEF0dHJpYnV0ZVJ1bGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm5hbWUpKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkNsYXNzUnVsZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6Q2xhc3NSdWxlPiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6Q2xhc3NSdWxlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1
c2lvblJ1bGU6OkNsYXNzUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lv
blJ1bGU6OkNsYXNzUnVsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ2xhc3NS
dWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05hbWUpKQpA
QCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvbkZhaWx1cmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjCiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFu
aXB1bGF0aW9uRmFpbHVyZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
bkZhaWx1cmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4gVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIE1hbmlwdWxhdGlvbkZhaWx1cmUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKaW5kZXggOTBjYzEwNTkxYmM0MGIxZDM4YTdhYjYyNzMyNGVlYWEyNTY2NjdiMy4u
NzY4ZDM3MzcwNDQ2YTUyNjVjOTNjYzcyZThmYzQ0NmIxZTMwMWU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBUeXBp
bmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29t
bWFuZFR5cGUpCiAgICAgfQogfQogCi1ib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdU
b09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSkKK2Jvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UpCiB7CiAgICAgbV9jdXJyZW50VGV4dFRvSW5zZXJ0ID0gdGV4dDsKICAgICBtX2N1cnJl
bnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5
cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSwgbV9pc0F1dG9jb21wbGV0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKaW5kZXggNjkwZWUyNjI1ZTBkMTY0
MmY4YTYyOTcxMGEwYjhiMDFjYjNhNzcwYi4uZDUzZjQxZmI0OWM4Y2MxMDZkN2MxMzU5ZTlmNmY5
MzM4ZGVhYWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21t
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvbklm
RGlmZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24oVHlwaW5nQ29tbWFuZCosIERvY3VtZW50Jik7
CiAKICAgICB2b2lkIHVwZGF0ZVByZXNlcnZlc1R5cGluZ1N0eWxlKEVUeXBpbmdDb21tYW5kKTsK
LSAgICBib29sIHdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0
R3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgPSBlbXB0eVN0cmluZygpLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mID0geyB9KTsKKyAgICBib29sIHdpbGxBZGRUeXBpbmdUb09wZW5Db21t
YW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0R3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgPSBlbXB0
eVN0cmluZygpLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgPSB7IH0pOwogICAg
IHZvaWQgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kKTsKICAgICB2
b2lkIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCk7CiAgICAgYm9vbCBt
YWtlRWRpdGFibGVSb290RW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcAppbmRleCBlMGYxMzQ4ODY2MTc1MGYyNGI1MTA3ODIwN2MwMDJiOTVmOGNiMjEz
Li43ZTc2OGM1YmIyNTEzMzlhNDdkMDY1MzUxYTIwMjdjMDIyMjJmZDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgYm9v
bCBWaXNpYmxlUG9zaXRpb246OmVxdWFscyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIG90aGVyKSBj
b25zdAogICAgIHJldHVybiBtX2FmZmluaXR5ID09IG90aGVyLm1fYWZmaW5pdHkgJiYgbV9kZWVw
UG9zaXRpb24uZXF1YWxzKG90aGVyLm1fZGVlcFBvc2l0aW9uKTsKIH0KIAotT3B0aW9uYWw8Qm91
bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbikKK3N0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICByZXR1cm4gbWFrZUJvdW5kYXJ5
UG9pbnQocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CiB9CkBAIC03ODUsMTIgKzc4NSwxMiBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpbwogICAgIHJldHVybiBzdHJlYW07CiB9CiAKLU9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSkKIHsKICAgICByZXR1cm4gbWFrZVNpbXBs
ZVJhbmdlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwogfQogCi1WaXNpYmxlUG9zaXRpb25SYW5n
ZSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSkKK1Zpc2libGVQb3NpdGlvblJhbmdlIG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5oCmluZGV4IGVlY2JmN2U5YjkyNzZiNWZhMzIzNGEzNzhlNTQ5MTRmM2Q0YWU0MzMuLmE5MmNh
ODFiY2VmZTNlNDc2YzRjNTQ2NjBkOTcyMDg0ZWVlY2ZhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OwogYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpOwogCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtl
Qm91bmRhcnlQb2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxv
d0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKQEAgLTEzNSw4ICsxMzUsOCBAQCBz
dHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgewogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpOyB9CiB9OwogCi1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJik7Ci1XRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtl
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlv
blJhbmdlIG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYpOwogCiBOb2RlKiBjb21tb25JbmNsdXNpdmVBbmNlc3Rvcihjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmNwcAppbmRleCAzMTc2NGRlNmZhYWE0ZGViMjk0MDYwNmUxZGQzOGViOWI0OTQ5YTQ1Li41
MDI1Y2FmOTExZTFhNTgxZmRhZjNkYmZlZTM2YjQxM2I5ODc1ZTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBQb3Np
dGlvbiBWaXNpYmxlU2VsZWN0aW9uOjp1bmNhbm9uaWNhbGl6ZWRFbmQoKSBjb25zdAogICAgIHJl
dHVybiBtX2FuY2hvcklzRmlyc3QgPyBtX2ZvY3VzIDogbV9hbmNob3I7CiB9CiAKLU9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1ha2VTaW1wbGVSYW5nZSh1bmNhbm9uaWNhbGl6ZWRTdGFydCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpLCB1bmNhbm9uaWNhbGl6ZWRFbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKSk7CiB9CkBAIC0xNTksNyArMTU5LDcgQEAgUmVmUHRyPERvY3VtZW50PiBWaXNpYmxl
U2VsZWN0aW9uOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGJhc2VEb2N1bWVudDsKIH0K
IAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RS
YW5nZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTm9uZU9yT3JwaGFuZWQoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VT
aW1wbGVSYW5nZShtX3N0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtX2VuZC5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBWaXNp
YmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0CiB7
CiAgICAgaWYgKGlzTm9uZU9yT3JwaGFuZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggYjE3ZTJi
M2FkMWRlZWQ1YmNmZGY3ZjdjMDBiMTc4ZmI5Y2E0YmE4OS4uYTRhZDhkOWY1YmEzNmU3NzUxMjBj
MWIyYzBjODU1NDg4NDlhNzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2Vs
ZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFBvc2l0aW9uIHVuY2Fub25p
Y2FsaXplZEVuZCgpIGNvbnN0OwogICAgIFBvc2l0aW9uIGFuY2hvcigpIGNvbnN0OwogICAgIFBv
c2l0aW9uIGZvY3VzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gcmFuZ2UoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhlc2Ug
dG8gaW5jbHVkZSB0aGUgd29yZCAiY2Fub25pY2FsIiBvciByZW1vdmUuCiAgICAgUG9zaXRpb24g
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQpAQCAtMTAxLDExICsxMDEsMTEgQEAgcHVi
bGljOgogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0byBpbmNsdWRlIHRoZSB3b3JkICJjYW5vbmlj
YWwiIGFuZCByZW1vdmUgdGhlIHdvcmQgImZpcnN0IiBvciByZW1vdmUuCiAgICAgLy8gV2UgZG9u
J3QgeWV0IHN1cHBvcnQgbXVsdGktcmFuZ2Ugc2VsZWN0aW9ucywgc28gd2Ugb25seSBldmVyIGhh
dmUgb25lIHJhbmdlIHRvIHJldHVybi4KLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gZmlyc3RSYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IGZpcnN0UmFuZ2UoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBN
b3N0IGNhbGxlcnMgcHJvYmFibHkgZG9uJ3Qgd2FudCB0aGlzIGZ1bmN0aW9uLCBhbmQgc2hvdWxk
IHVzZSByYW5nZSBpbnN0ZWFkLgogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29udHJhY3RzIHRoZSBy
YW5nZSBhcm91bmQgdGV4dCBhbmQgbW92ZXMgdGhlIGNhcmV0IHVwc3RyZWFtIGJlZm9yZSByZXR1
cm5pbmcgdGhlIHJhbmdlLgotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiB0b05vcm1hbGl6ZWRSYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IHRvTm9ybWFsaXplZFJhbmdlKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiByb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IGJjOTlmZDU5MWZhZDBmYTUxMTY2Y2E1ZTNi
YTRjOWRhMTU4NGZkZGIuLjhhOTNmYmQwMTI0ODQ1ZWJmZmQ2OWM0YTdjYmI5MzEyZWZmODNmZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTMxNSw3ICszMTUs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbgogICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpKTsKICAgICBMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3IgcHJldmlvdXNs
eVZpc2l0ZWRSdW47CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRp
b247Ci0gICAgT3B0aW9uYWw8VmlzaWJsZVBvc2l0aW9uPiBwcmV2aW91c1Bvc2l0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVBvc2l0aW9uPiBwcmV2aW91c1Bvc2l0aW9uOwogICAgIFVC
cmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0cjsKIAogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4g
c3RyaW5nOwpAQCAtMTczOCw3ICsxNzM4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFQKICAg
ICB9CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQorc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICAvLyBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbmVmZmljaWVudC4gIFdl
IGNvdWxkIGVhc2lseSBvYnRhaW4gdGhlIGFuc3dlciB3aXRoIHRoZSBib3VuZGFyaWVzIGNvbXB1
dGVkIGJlbG93LgogICAgIGlmICghd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBncmFu
dWxhcml0eSwgZGlyZWN0aW9uKSkKQEAgLTE4NDksNyArMTg0OSw3IEBAIHZvaWQgY2hhcmFjdGVy
c0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIFVDaGFyMzIm
IG9uZUFmdGVyCiAgICAgdHdvQmVmb3JlID0gY2hhcmFjdGVyc1syXTsKIH0KIAotT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKHBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg5Niw3ICsxODk2
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25B
dFdvcmRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVy
T2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rp
b25BdFdvcmRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVt
YmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgUG9zaXRpb24gc3RhcnQgPSBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBv
c2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CkBAIC0xOTE1LDcgKzE5MTUs
NyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkoY29uc3QgVgogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2Uo
c3RhcnQsIGVuZCk7CiB9ICAgIAogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRl
ZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRp
b24sIGludCBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCkKK3N0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91bmRQb3NpdGlvbkJ5Q2hhcmFjdGVycyhjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQpCiB7
CiAgICAgUG9zaXRpb24gc3RhcnQgPSBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBv
c2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuaAppbmRleCAyNGY1ODhjNWIwN2NhNDcyZjc4NzdmZTE3Mzg4NDMzMmU3
ODFlMzM5Li5hNmRlNDIxNTI2ZDQ2ZTI4MmZmNDA3NTRmNzA5Mzg2YmQ5MzMxMGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKQEAgLTEwMSwxMyArMTAxLDEzIEBAIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9u
RGlyZWN0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFy
aXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJp
dHksIFNlbGVjdGlvbkRpcmVjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0
eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbik7CiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnB0cmRpZmZfdCBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OwogV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFVD
aGFyMzImIG9uZUFmdGVyLCBVQ2hhcjMyJiBvbmVCZWZvcmUsIFVDaGFyMzImIHR3b0JlZm9yZSk7
Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3Vu
ZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1iZXJP
ZkNoYXJhY3RlcnNUb0V4cGFuZCk7Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50IG51bWJlck9mQ2hhcmFjdGVyc1RvRXhwYW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb24pOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGludCBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCk7CitXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5E
aXJlY3Rpb25BdFdvcmRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgbnVtYmVy
T2ZDaGFyYWN0ZXJzVG9FeHBhbmQsIFNlbGVjdGlvbkRpcmVjdGlvbik7CiBlbnVtIGNsYXNzIFdp
dGhpbldvcmRCb3VuZGFyeSA6IGJvb2wgeyBObywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZv
clBvc2l0aW9uV2l0aG91dENyb3NzaW5nTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAK
aW5kZXggMGE4MDI4YmVkZjhiOWNhMzVjODcxMWYyODBlYmI4MjA1MTM2YzIyZS4uNWFlMzI1Nzgy
MGI2NjJhMjg3M2NkZjJjODEwYzYzOWQyNzA2ZTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEF1
dG9maWxsRWxlbWVudHM6OkF1dG9maWxsRWxlbWVudHMoUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
JiYgdXNlcm5hbWUsIFJlZlB0cjxICiB7CiB9CiAKLU9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+
IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRF
bGVtZW50PiBzdGFydCkKK3N0ZDo6b3B0aW9uYWw8QXV0b2ZpbGxFbGVtZW50cz4gQXV0b2ZpbGxF
bGVtZW50czo6Y29tcHV0ZUF1dG9maWxsRWxlbWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHN0
YXJ0KQogewogICAgIGlmICghc3RhcnQtPmRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9BdXRvZmlsbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9m
aWxsRWxlbWVudHMuaAppbmRleCA3NzZmMTY2NzE5YTdlZWUzMDYyNjhlYWY4YTM5ZjUzMTg1NGE4
MzAyLi42YTBlOGNlZjYwMDc5ZDMyYTQ5N2QzZmNiZWE1YzJlYjllNDk4MzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRvZmlsbEVsZW1lbnRzIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgT3B0aW9uYWw8QXV0b2ZpbGxFbGVtZW50cz4gY29tcHV0ZUF1dG9maWxsRWxlbWVudHMo
UmVmPEhUTUxJbnB1dEVsZW1lbnQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBdXRvZmlsbEVsZW1lbnRzPiBjb21wdXRlQXV0b2ZpbGxFbGVtZW50cyhSZWY8SFRN
TElucHV0RWxlbWVudD4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXV0b2ZpbGwoU3RyaW5n
LCBTdHJpbmcpOwogCiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogdXNlcm5hbWUoKSBjb25z
dCB7IHJldHVybiBtX3VzZXJuYW1lLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5oCmluZGV4IGU3NmE2YThlYzk3MzI0NDQ5ZmE1YmM0ZmEzNmNk
ZjVhZDliMGMwZDIuLjU0NzNiYjAwYzQ4NjhiNTQ5MTE0M2EzYWU4ODk3MDliOGVlOGRmYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC01NCw3
ICs1NCw3IEBAIHN0cnVjdCBEZXRlY3RlZEl0ZW0gewogY2xhc3MgRGF0YURldGVjdGlvbiB7CiBw
dWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRp
b25hbDxEZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhp
dFRlc3RSZXN1bHQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxE
ZXRlY3RlZEl0ZW0+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5ICpkZXRl
Y3RDb250ZW50SW5SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIE9wdGlvblNldDxEYXRhRGV0ZWN0
b3JUeXBlPiwgTlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQoRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA1NTY2
ODU5ZDZiZjM2YWZkMzc1YTMwYWRjMjdkNDFjMTUwMTY4ZThlLi5kYjZjZGE1YzJjMjAwNTM3ZGM0
YzhiNzBhNTRlNzFjZDNkODRkYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKICNpZiBQTEFURk9STShNQUMpCiAKLXN0YXRpYyBPcHRpb25hbDxEZXRlY3RlZEl0
ZW0+IGRldGVjdEl0ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU2lt
cGxlUmFuZ2UmIGNvbnRleHRSYW5nZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERldGVjdGVkSXRl
bT4gZGV0ZWN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBTaW1w
bGVSYW5nZSYgY29udGV4dFJhbmdlKQogewogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPERldGVj
dGVkSXRlbT4gZGV0ZWN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25z
dAogCiAgICAgLy8gRmluZCB0aGUgRERSZXN1bHRSZWYgdGhhdCBpbnRlcnNlY3RzIHRoZSBoaXRU
ZXN0UmVzdWx0J3MgVmlzaWJsZVBvc2l0aW9uLgogICAgIEREUmVzdWx0UmVmIG1haW5SZXN1bHQg
PSBudWxscHRyOwotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWluUmVzdWx0UmFuZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFpblJlc3VsdFJhbmdlOwogICAgIENGSW5k
ZXggcmVzdWx0Q291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzdWx0cy5nZXQoKSk7CiAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgcmVzdWx0Q291bnQ7IGkrKykgewogICAgICAgICBhdXRvIHJl
c3VsdCA9IGNoZWNrZWRfY2ZfY2FzdDxERFJlc3VsdFJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChyZXN1bHRzLmdldCgpLCBpKSk7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIE9wdGlvbmFs
PERldGVjdGVkSXRlbT4gZGV0ZWN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
LCBjb25zdAogICAgIH0gfTsKIH0KIAotT3B0aW9uYWw8RGV0ZWN0ZWRJdGVtPiBEYXRhRGV0ZWN0
aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXRUZXN0UmVzdWx0KQorc3RkOjpvcHRpb25hbDxEZXRlY3RlZEl0ZW0+IERhdGFEZXRlY3Rpb246
OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRl
c3RSZXN1bHQpCiB7CiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0
YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzCiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb247Ci0gICAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGNvbnRleHRSYW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBjb250ZXh0UmFuZ2U7CiAKICAgICBpZiAoIWlzPEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgcG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRp
b25Gb3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggNTA2
MmJjYjg4MjU2YmVlZmY5NzY5NTEzYWU2YmMwMmI4OWJkZTAzMC4uY2QxYWY4NWQ3YjM3MzU5OWJj
MDcwODU0Yjg4MThhNThhYzI5YTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBib29s
IGNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25h
bDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29r
dXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikK
K3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24pCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTI5
NCw3ICsyOTQsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25h
cnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFy
eSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVS
YW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMzIxLDcgKzMyMSw3IEBAIE9wdGlvbmFsPHN0
ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VBdEhpdFRlCiAgICAgYXV0byBzZWxlY3Rpb24gPSBmcmFtZS0+cGFnZSgpLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsK
ICAgICBOU1JhbmdlIHNlbGVjdGlvblJhbmdlOwogICAgIE5TVUludGVnZXIgaGl0SW5kZXg7Ci0g
ICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGZ1bGxDaGFyYWN0ZXJSYW5nZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2U7CiAgICAgCiAgICAgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAgYXV0byBzZWxlY3Rpb25TdGFydCA9IHNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKTsKQEAgLTUyMSwxMiArNTIxLDEyIEBAIFdLUmV2ZWFsQ29udHJv
bGxlciBEaWN0aW9uYXJ5TG9va3VwOjphbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3Qg
RGljdGlvbmFyCiAKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFFTkFCTEUoUkVWRUFMKQogCi1PcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJh
bmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBs
ZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLU9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAq
Pj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJl
c3VsdCYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNjk5
YzQ2ZWMzMThkNDM1NzMwY2E3NDY1NGZhMmIyZTRlMTAwZjM1Mi4uYTRlNTMyMzE5OTMzZjBhODYx
MmQyYzIyNTE4Mjk4ZDU5ZDRlOTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQyNiw3ICs0MjYsNyBAQCBz
dHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9Owog
Ci1zdGF0aWMgT3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hp
dmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFy
a3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC03MjYsNyArNzI2LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIH0KIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZv
ckRpc3BsYXk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5
OwogICAgIGlmICghaXNEaXJlY3RvcnkpCiAgICAgICAgIGZpbGVTaXplRm9yRGlzcGxheSA9IEZp
bGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKaW5kZXggNzlhYzg1YTcxYTYyZGQyNmY2
ZDVmNWZhNGQ4ZDhhNzFhMzIzMThmNS4uMTEwYjhmODI2Zjg0MTc1ZGQ5MmFhNDBlODdlYzJhM2Fm
YzdkNDcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAuaApAQCAtNTUsOCArNTUsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIGNsYXNzIERpY3Rp
b25hcnlMb29rdXAgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25h
bDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IHJhbmdlRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
T3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0
SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5
ICo+PiByYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwg
TlNEaWN0aW9uYXJ5ICo+PiByYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dHVwbGU8TlNTdHJpbmcgKiwgTlNE
aWN0aW9uYXJ5ICo+IHN0cmluZ0ZvclBERlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKik7CiAKICAg
ICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
IGhlcmUgdG9vLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlv
bmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25h
cnlMb29rdXBMZWdhY3kubW0KaW5kZXggMTYyM2U5OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBh
ZDVlMTUyOC4uYTI2Mjk0NjM5MzUzZTczMjk1NDM3MDY4ZDVlYTE5MmZjYjBmZGQ2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5
Lm1tCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJu
IHNlbGVjdGVkUmFuZ2UgJiYgY29udGFpbnM8Q29tcG9zZWRUcmVlPigqc2VsZWN0ZWRSYW5nZSwg
bWFrZUJvdW5kYXJ5UG9pbnQocG9zaXRpb24pKTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxT
aW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCitzdGQ6Om9wdGlvbmFs
PHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1
cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQog
ewogICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8c3Rk
Ojp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpy
YW5nZUZvclNlbGUKICAgICByZXR1cm4geyB7ICpzZWxlY3RlZFJhbmdlLCBvcHRpb25zIH0gfTsK
IH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXRUZXN0UmVzdWx0KQorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBO
U0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNv
bnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CiAgICAgYXV0byogbm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2Rl
LT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGQ2NTdkMzU3ZTFm
ZThjYjU1NGEwMzA4MGRjMTQ2NWNhNjJiZjQwODYuLjhhZTQ4OTE1NjNlYTc3ZTYwZDEzZTU0OTFk
YmQ1NTA3MDlhZjE5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTIwOCw3ICsy
MDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJD
b250ZW50KCkKICAgICByZXR1cm4gcGFnZTsKIH0KIAotU3RyaW5nIHNhbml0aXplTWFya3VwKGNv
bnN0IFN0cmluZyYgcmF3SFRNTCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBPcHRpb25h
bDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6
ZXIpCitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBNU09MaXN0
UXVpcmtzIG1zb0xpc3RRdWlya3MsIHN0ZDo6b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERv
Y3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyKQogewogICAgIGF1dG8gcGFnZSA9
IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAgIERvY3VtZW50KiBzdGFn
aW5nRG9jdW1lbnQgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmgKaW5kZXggMjhlZGI2MTQ4NjMwNDcxMDQ3NDMxMjUxZTc1OGI4NDBmZGIyZjQzNy4u
YmI3NTk2NDM4ZWUwMjg2YThjMTg4Njg1OTg4ZTlmODVjMjZkZDUwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5oCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRy
aWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBXVEY6OkZ1bmN0aW9uPGJvb2woCiAKIHN0
ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsK
IGVudW0gY2xhc3MgTVNPTGlzdFF1aXJrcyA6IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxl
ZCB9OwotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3Mg
PSBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgT3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERv
Y3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKK1N0
cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIHN0ZDo6b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3Vt
ZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKIFN0cmlu
ZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21l
bnQ+JiYsIERvY3VtZW50JiwgTVNPTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1h
cmt1cCk7CiAKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRl
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGQ1
ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2Njk5MWY4NWI3YTFjM2EuLjdhOWRhYWUwNmEwNDdiYTU1
ZTExMTMyMzU2MzkxNWUyZDI2NzA0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6
cGVyZm9ybShXVEY6OkZ1bmN0aW9uPFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50
JgogICAgIH0pOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJp
bmcmIHBhdGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2
b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBGSVhN
RTogRXhwbGljaXQgcmV0dXJuIHR5cGUgaGVyZSBhbmQgaW4gYWxsIHRoZSBvdGhlciBjYXNlcyBs
aWtlIHRoaXMgYmVsb3cgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGRlZmljaWVuY3kKICAgICAvLyBp
biB0aGUgV2luZG93cyBjb21waWxlciBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuIENvdWxk
IHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJlc29sdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmgKaW5kZXggODRhMjQxYTI2M2JjMzgxMmU0YmVmNzc5OGJkZmQyNGNmMmYy
MDcxYi4uOTlhOTFiMGM5MTVmNTg1YjhhMWNiNmJlY2RhNGI2ZGJlMTc5ZTk1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYpOwogICAg
IH5Bc3luY0ZpbGVTdHJlYW0oKTsKIAotICAgIHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZv
aWQgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgdm9pZCBvcGVuRm9yUmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQg
Y2xvc2UoKTsKICAgICB2b2lkIHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuY3BwCmluZGV4IDJmM2NkY2VjY2IzMmFhMjkyMzM4ZDMyN2Y3ZjQ1NDU0MTRi
NGZkM2MuLjQyZjIyYjQ2ZmMwNGE0NDZjOGM3ZTNhYzhkOTI0MDg0MmJkNDBmMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEJsb2I6OkJsb2IoUmVmZXJlbmNp
bmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5h
bFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAotQmxvYjo6Qmxv
YihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNp
Z25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCitCbG9i
OjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3R5cGUobm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCkBAIC0yOTgsNyArMjk4
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJlYWRhYmxlU3RyZWFtPj4gQmxvYjo6c3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWMKICAgICAgICAgVW5pcXVlUmVmPEZpbGVSZWFk
ZXJMb2FkZXI+IG1fbG9hZGVyOwogICAgICAgICBzaXplX3QgbV9ieXRlc1JlYWQgeyAwIH07CiAg
ICAgICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxFeGNl
cHRpb24+IG1fZXhjZXB0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9l
eGNlcHRpb247CiAgICAgfTsKIAogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDE1ZDdj
MjgxNjc5MzAwZTU3M2ZkNDc3NWE5NzUwODEzM2UzYjBkMmQuLmU0MjUxYjJlNmNhNGVhZDA2MGM1
YmY2MzVlZDU0ZDE3YzkzNDczZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0xNDEsNyArMTQx
LDcgQEAgcHJvdGVjdGVkOgogICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CiAKICAgICBlbnVtIERl
c2VyaWFsaXphdGlvbkNvbnRydWN0b3IgeyBkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIH07Ci0g
ICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWdu
ZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CiAKICAg
ICAvLyBGb3Igc2xpY2luZy4KICAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIG1fdHlwZTsKIAotICAgIG11dGFibGUgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBt
X3NpemU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9z
aXplOwogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2Fk
ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAppbmRleCBhNDI4N2NkZDkz
ZDc5Y2VlZWMxOGEzMmQ3MTc3N2FjMjEyZjYzY2FiLi4yMDYzYzQ5YTgzOGNkNGNmYWFjMGVkNTFj
YTEwZDk1YzhmZmQ3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2xvYWRlciAmJiBtX2NvbXBsZXRpb25IYW5kbGVyOyB9CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2FkZXItPnN0cmluZ1Jlc3VsdCgpIDog
U3RyaW5nKCk7IH0KICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXJSZXN1
bHQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3Vs
dCgpIDogbnVsbHB0cjsgfQotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IGVycm9yQ29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2FkZXItPmVycm9yQ29kZSgpIDogc3RkOjpu
dWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5lcnJvckNvZGUoKSA6IHN0ZDo6bnVs
bG9wdDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA0NzNjMDMxOTkwZTE3Y2I3Y2VlYjViM2MzYWVh
YjdiNTEyODMzODZiLi44YmY3NGNlMzMxZmNhOGNjOGI0NmE1MzM0YjI2MDUwZTNkYmEwM2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRmlsZTo6RmlsZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0
cmluZyYmIHAKIHsKIH0KIAotRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
T3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKK0ZpbGU6OkZpbGUoRGVzZXJpYWxpemF0
aW9uQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKICAg
ICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4dCwgdXJsLCB0eXBlLCB7
IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaAppbmRleCA5Zjc4MDBhZTU0MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVm
Li40ODAzOGM2MWY4NDQ0OTkyN2E1MmYzZjMxM2MwZDY4ZjRjYTk2NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2Ig
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEZpbGUsIFdFQkNPUkVfRVhQT1JU
KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUHJvcGVydHlCYWcgOiBCbG9iUHJvcGVydHlCYWcgewot
ICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBsYXN0TW9kaWZpZWQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlmaWVkOwogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBm
aWxlIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxl
Lm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRo
ZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGZpbGU7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlh
bGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IHN0ZDo6bnVsbG9wdCkK
KyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+JiBsYXN0TW9kaWZpZWQgPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBhdXRvIGZp
bGUgPSBhZG9wdFJlZigqbmV3IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29udGV4
dCwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsKICAgICAgICAgZmls
ZS0+c3VzcGVuZElmTmVlZGVkKCk7CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkgeyBtX3JlbGF0aXZl
UGF0aCA9IHJlbGF0aXZlUGF0aDsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgbGFzdE1vZGlmaWVk
KCkgY29uc3Q7IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCi0gICAgY29u
c3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZE92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGU7IH0gLy8gTnVtYmVyIG9mIG1pbGxpc2Vjb25k
cyBzaW5jZSBFcG9jaC4KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9k
aWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRl
OyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCiAKICAgICBzdGF0aWMg
U3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCkBAIC05OSw3
ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRmlsZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICBGaWxlKERl
c2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7Cisg
ICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4mIGxh
c3RNb2RpZmllZCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYg
ZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxF
KEZJTEVfUkVQTEFDRU1FTlQpCkBAIC0xMTMsOCArMTEzLDggQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9yZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKIAotICAgIE9wdGlvbmFsPGlu
dDY0X3Q+IG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8
Ym9vbD4gbV9pc0RpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fbGFzdE1v
ZGlmaWVkRGF0ZU92ZXJyaWRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2lz
RGlyZWN0b3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMDliMmEwMzhiYTEyZGU5YWNhZTk0ZjY3Y2ExN2IyNzVl
MTRhZWM3YS4uZmJlZTA3MmE1YjkxZmIzZmMzNTRjZjc5ZmZmMmMzMGNhNTllNzk0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBG
aWxlUmVhZGVyOjpmaXJlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICBkaXNwYXRj
aEV2ZW50KFByb2dyZXNzRXZlbnQ6OmNyZWF0ZSh0eXBlLCB0cnVlLCBtX2xvYWRlciA/IG1fbG9h
ZGVyLT5ieXRlc0xvYWRlZCgpIDogMCwgbV9sb2FkZXIgPyBtX2xvYWRlci0+dG90YWxCeXRlcygp
IDogMCkpOwogfQogCi1PcHRpb25hbDxWYXJpYW50PFN0cmluZywgUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+Pj4gRmlsZVJlYWRlcjo6cmVzdWx0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFu
dDxTdHJpbmcsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4+IEZpbGVSZWFkZXI6OnJlc3VsdCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2xvYWRlciB8fCBtX2Vycm9yIHx8IG1fc3RhdGUgIT0gRE9O
RSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmgKaW5kZXggMjhmMzNmNTEyMjkxOWNiZWVkMGEyZDc2ZDJhN2Y4YmFhZjU2Nzk2NC4uYTJh
ZGY5YzgzNTFiZmEwNDE5ODAyYTNkYWQ3ZjcwZTVmMGMzMGY2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICBET01FeGNlcHRpb24q
IGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQogICAgIEZpbGVSZWFkZXJMb2FkZXI6
OlJlYWRUeXBlIHJlYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkVHlwZTsgfQotICAgIE9w
dGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiByZXN1bHQo
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4+PiByZXN1bHQoKSBjb25zdDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJl
ZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggMWFmNjA1OTYwYjMwNDhkY2Q4YWExZTEzYWIxOTBkOWIy
NTE1OTkxOS4uOTZmOWY3OWJlMTc5ZTdiMjMxMjZkZTI1ZDg3ZTFlMzFmYjQ3Njg3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlclJlc3VsdCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KLSAgICBPcHRpb25hbDxFeGNlcHRpb25Db2RlPiBl
cnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29kZTsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uQ29kZT4gZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7
IH0KIAogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRE
YXRhVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKSB7IG1fZGF0YVR5cGUgPSBkYXRhVHlwZTsg
fQpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlc0xvYWRl
ZDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZXM7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25D
b2RlPiBtX2Vycm9yQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXJy
b3JDb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAppbmRleCA5YzcyNjBjNDIy
NjBhNGI1Y2QxYzcxZWFhOWEyYmFlYTgwOGZjNmZiLi5jM2E4ZWJlZDk3YmM3NTI3YTIzNWRkOGY3
YWU5MzQ2MWQ1ZGRjMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciB7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIHByb2Nlc3NJZGVudGlmaWVyICYmIGl0ZW1JZGVudGlmaWVyOyB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29k
ZXImKTsKIAogICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHBy
b2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgaXRlbUlkZW50aWZpZXIudG9VSW50NjQo
KSk7IH0KIApAQCAtNzgsMTQgKzc4LDE0IEBAIHZvaWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHBy
b2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHBy
b2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
aWYgKCFwcm9jZXNzSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPj4gaXRlbUlk
ZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlm
aWVyVHlwZT4+IGl0ZW1JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7
CiAgICAgaWYgKCFpdGVtSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4
IDNkODA5MzU1OTg1NGJlMTQzODVkMmE0ZjJjMTljMjM4MjgyOGZkZGUuLmYxMDhiNTJhMGJmMWQ5
YjlkMmM5ZGM2Zjk0OGRmZWE0YTY5MWM3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAg
ICAgICBPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4gbV9yZXN1bHRz
OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRv
RGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMo
ZG91YmxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25k
VG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMm
LCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNW
YWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRv
dWJsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCAwN2ViNjUxNDlm
Yzk5NjcwNTdlODJhYzY0OTVkZDEyMGMyZDVlMjU4Li41YmJkOTdkMDBkNjg3YjZiOTI4M2E1YmRh
Y2E1YmY4YjJkOTFiM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIENhbnZhc0Jhc2U6OnJlbW92ZU9ic2VydmVyKENhbnZhc09ic2VydmVy
JiBvYnNlcnZlcikKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VD
U1NDYW52YXNDbGllbnROb2RlcygqdGhpcyk7CiB9CiAKLXZvaWQgQ2FudmFzQmFzZTo6bm90aWZ5
T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0KQor
dm9pZCBDYW52YXNCYXNlOjpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5jYW52YXNDaGFuZ2VkKCp0aGlzLCByZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKaW5kZXggOTJjZmI3NjJmZGIzZTJiM2ZmNTI2MWEx
ZjdmOTgxOGNjY2I0ZjM5YS4uODRiYmRmZGZmNzYyNWU3NzRkM2YyMGQ3NmU4MGVmODBjMjJjM2Fh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGlzQ2FudmFzT2JzZXJ2ZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwg
Y29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgY2hhbmdlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+JiBjaGFuZ2VkUmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW52YXNSZXNpemVk
KENhbnZhc0Jhc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbnZhc0Rlc3Ryb3llZChDYW52
YXNCYXNlJikgPSAwOwogfTsKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
ZGRPYnNlcnZlcihDYW52YXNPYnNlcnZlciYpOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQ2Fu
dmFzT2JzZXJ2ZXImKTsKLSAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoY29u
c3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFz
Q2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKTsKICAgICB2b2lkIG5vdGlm
eU9ic2VydmVyc0NhbnZhc1Jlc2l6ZWQoKTsKICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZh
c0Rlc3Ryb3llZCgpOyAvLyBNdXN0IGJlIGNhbGxlZCBpbiBkZXN0cnVjdGlvbiBiZWZvcmUgY2xl
YXJpbmcgbV9jb250ZXh0LgogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEdy
YXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSA9IDA7
CiAKICAgICB2aXJ0dWFsIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKaW5kZXggMzJjM2I0NGZhYzA1NTE4MGJiNDU0MDBmNjBiNjc5OTcz
MDE1OTllZi4uZWE4MWJiMTlkMTQ0YTUwNjBhMDczODA4ZDhkOWZiNjhmZjg2MDhjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGlj
IGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogfQogCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jb21tb24tbWljcm9zeW50YXhlcy5o
dG1sI3J1bGVzLWZvci1wYXJzaW5nLXNpbXBsZS1jb2xvdXItdmFsdWVzCi1zdGF0aWMgT3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmlu
ZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9y
VmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3Io
c3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q3VzdG9tUGFpbnRDYW52YXMuaAppbmRleCBjMjgzZjgxZWQxMjhkYmRhMmMwNzBiZTAwYzc5YTgw
Y2FlNDQ4YjY3Li4wYzE4ZDRjOWFjNjMwZjIyMzI4NzExYmE3YTZkMWI2NTYwNzlhMjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFs
IHsgfQorICAgIHZvaWQgZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBm
aW5hbCB7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmlu
YWwgeyBBU1NFUlQobV9kZXN0aW5hdGlvbkdyYXBoaWNzQ29udGV4dCAmJiBtX2NvcGllZEJ1ZmZl
cik7IHJldHVybiBtX2NvcGllZEJ1ZmZlci0+YmFzZVRyYW5zZm9ybSgpOyB9CiAgICAgSW1hZ2Uq
IGNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3Bw
CmluZGV4IDY4MDJhMTVmZTY4ZjBlYThlNTk4ODZkZTFkNjEwYzg4OTM5ZDc4NmQuLmU3YzRkYTQ3
OWNkZjcyZjhmY2ViZTFmMjdjZGRjMmQ0MGUyYTIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9y
bURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRE9NRm9ybURhdGE6OnJlbW92ZShjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgfSk7CiB9CiAKLWF1dG8gRE9NRm9ybURhdGE6OmdldChjb25z
dCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlvbmFsPEZvcm1EYXRhRW50cnlWYWx1ZT4KK2F1dG8gRE9N
Rm9ybURhdGE6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8Rm9ybURh
dGFFbnRyeVZhbHVlPgogewogICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpIHsKICAgICAg
ICAgaWYgKGl0ZW0ubmFtZSA9PSBuYW1lKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRE9NRm9y
bURhdGE6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAKIHZvaWQgRE9NRm9ybURhdGE6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIEl0
ZW0mJiBpdGVtKQogewotICAgIE9wdGlvbmFsPHNpemVfdD4gaW5pdGlhbE1hdGNoTG9jYXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluaXRpYWxNYXRjaExvY2F0aW9uOwogCiAgICAg
Ly8gRmluZCBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgaXRlbSB3aXRoIGEgbWF0Y2hpbmcgbmFtZS4K
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKQEAgLTE1
NSw3ICsxNTUsNyBAQCBET01Gb3JtRGF0YTo6SXRlcmF0b3I6Okl0ZXJhdG9yKERPTUZvcm1EYXRh
JiB0YXJnZXQpCiB7CiB9CiAKLU9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJpbmcsIERPTUZvcm1E
YXRhOjpGb3JtRGF0YUVudHJ5VmFsdWU+PiBET01Gb3JtRGF0YTo6SXRlcmF0b3I6Om5leHQoKQor
c3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBET01Gb3JtRGF0YTo6Rm9ybURhdGFF
bnRyeVZhbHVlPj4gRE9NRm9ybURhdGE6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBp
dGVtcyA9IG1fdGFyZ2V0LT5pdGVtcygpOwogICAgIGlmIChtX2luZGV4ID49IGl0ZW1zLnNpemUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuaAppbmRleCBjODA0ODhkNDQ4ZDI4OTIxYTJlMGQ3
ZWMxZjYzNDZkZjFkMzQxMzRjLi44MDYyNDRiZDUwZjI3OTdhZjY4MzI0YzFjZDc5NzM4ZTBhNzNl
OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgQmxvYiYsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUgPSB7IH0pOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFt
ZSk7Ci0gICAgT3B0aW9uYWw8Rm9ybURhdGFFbnRyeVZhbHVlPiBnZXQoY29uc3QgU3RyaW5nJiBu
YW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvcm1EYXRhRW50cnlWYWx1ZT4gZ2V0KGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAgICAgVmVjdG9yPEZvcm1EYXRhRW50cnlWYWx1ZT4gZ2V0QWxsKGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAgICAgYm9vbCBoYXMoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2
b2lkIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwpAQCAtNjcs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZXhwbGljaXQgSXRlcmF0b3IoRE9NRm9ybURhdGEmKTsKLSAgICAgICAgT3B0aW9uYWw8
S2V5VmFsdWVQYWlyPFN0cmluZywgRm9ybURhdGFFbnRyeVZhbHVlPj4gbmV4dCgpOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJpbmcsIEZvcm1EYXRhRW50cnlWYWx1ZT4+
IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxET01Gb3JtRGF0YT4gbV90YXJn
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKaW5kZXggOWE0MTBjNzBlNGMwN2Uz
YjQzNWE3MGY4ZjFjODBlNjM2MWVmY2JmYi4uYWJjYTZkOWJjMmUyZWY2YjZlY2Y1NGFhNmEzNDlk
Y2JhY2IzOWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTMyLDcg
KzEzMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEF0
b21TdHJpbmcmIHRva2VuKQogICAgIHJldHVybiByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5n
KCksIDEpOwogfQogCi1FeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25z
dCBBdG9tU3RyaW5nJiB0b2tlbiwgT3B0aW9uYWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25Pcjxi
b29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgc3RkOjpv
cHRpb25hbDxib29sPiBmb3JjZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVG9rZW4o
dG9rZW4pOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01U
b2tlbkxpc3QuaAppbmRleCBiMzI0MDJkMDM3ZGE5MGQ4ZmVhMmZhYWQ0NmQ5N2FmNzNkNjI4MDg2
Li40NmI4NTk4OTlmMTI0OTUyMzUxM2NlNzRmZWQ0OTk5ZjM0YjBkZDY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGFkZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
cmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVt
b3ZlKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxi
b29sPiB0b2dnbGUoY29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxib29sPiB0b2dnbGUoY29uc3QgQXRvbVN0cmlu
ZyYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpOwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHJl
cGxhY2UoY29uc3QgQXRvbVN0cmluZyYgdG9rZW4sIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Rva2Vu
KTsKICAgICBFeGNlcHRpb25Pcjxib29sPiBzdXBwb3J0cyhTdHJpbmdWaWV3IHRva2VuKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlv
bi5oCmluZGV4IDRkNmQwMmNmZGYzZjEyNDBkZDNjODY3Y2I5YzQ5ZmE1ZGNlZjliZTkuLmJmZmQ3
ZGJmZjdiNThmYmE1MTVlY2QxOGQ3YTczNmRmOWJmZDEyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgc3RydWN0IERhdGFMaXN0U3VnZ2VzdGlvbiB7CiAgICAgU3RyaW5nIGxhYmVsOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEYXRhTGlzdFN1Z2dl
c3Rpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIERh
dGFMaXN0U3VnZ2VzdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IERhdGFM
aXN0U3VnZ2VzdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERh
dGFMaXN0U3VnZ2VzdGlvbj4gRGF0YUxpc3RTdWdnZXN0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVs
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVs
OwogICAgIGlmICghbGFiZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Niw3
ICs3Niw3IEBAIHN0cnVjdCBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiB7CiAgICAgSW50
UmVjdCBlbGVtZW50UmVjdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0YUxp
c3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODgsMTggKzg4LDE4IEBAIHZvaWQgRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFjdGl2YXRpb25UeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0
aW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdn
ZXN0aW9uczsKICAgICBkZWNvZGVyID4+IHN1Z2dlc3Rpb25zOwogICAgIGlmICghc3VnZ2VzdGlv
bnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0
PiBlbGVtZW50UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IGVsZW1lbnRSZWN0Owog
ICAgIGRlY29kZXIgPj4gZWxlbWVudFJlY3Q7CiAgICAgaWYgKCFlbGVtZW50UmVjdCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDkxZWJmMGVjYTA5OTNiODVmNDM3OWUwOWY2YjA2ZTgwYjZmMWIwOTQuLjE5MWU5OTE3
NWQyYjQ4ZTRkOGNkYTA3MjIwMGU4ZWIzOWEyOGI0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcApAQCAtNzQsMTIgKzc0LDEyIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QK
ICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBSYW5nZUxpbWl0YXRpb25zOjpWYWxpZCwg
bWluaW11bSwgbWF4aW11bSwgc3RlcCwgZGF0ZVN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLU9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBEYXRlSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMo
Y29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gRGF0ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1Zp
ZXcmIHNvdXJjZSkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJz
aW5nRGF0ZShzb3VyY2UpOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUlucHV0
VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVJbnB1dFR5cGU6OnNldE1pbGxpc2Vj
b25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERh
dGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUodmFsdWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCBiMzE4MjIxOWRmMmU0NzAwYjYz
ODM5ZjY2NDRlZTA0MzExNDVmODdkLi40MTZmMGU2NjE4ZGU1MDAxY2FjZTZkNDRkMDRjZTFiNDMw
OWI5OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaApAQCAtNDUsOCArNDUsOCBA
QCBwcml2YXRlOgogICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIERhdGVDb21wb25lbnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25z
dCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21w
b25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gcGFyc2VUb0Rh
dGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMo
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxpZEZvcm1hdChPcHRpb25T
ZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNvbnN0IGZpbmFsOwogICAgIFN0
cmluZyBmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUm
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVG
aWVsZHNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgK
aW5kZXggYzVhMzEwNDZlNGZmZjRjMGFlYWEwNjFmZDIzYmQxYjc5YjZjNTQwMi4uYWU1NmFmN2Ux
ZTU5NmFmZDY4N2I5MzMwNjc1NDhhOWZmMWNkMDAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlVGltZUZpZWxkc1N0YXRlLmgKQEAgLTM4LDIxICszOCwyMSBAQCBzdHJ1Y3QgRGF0ZVRpbWVG
aWVsZHNTdGF0ZSB7CiAgICAgICAgIFBNLAogICAgIH07CiAKLSAgICBpbmxpbmUgT3B0aW9uYWw8
dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0CisgICAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGhvdXIyMygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhvdXIgfHwgIW1lcmlkaWVt
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuICgqaG91
ciAlIDEyKSArICgqbWVyaWRpZW0gPT0gRGF0ZVRpbWVGaWVsZHNTdGF0ZTo6TWVyaWRpZW06OlBN
ID8gMTIgOiAwKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4geWVhcjsKLSAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbW9udGg7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGRheU9mTW9u
dGg7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGhvdXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IG1pbnV0ZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2Vjb25kOwotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBtaWxsaXNlY29uZDsKLSAgICBPcHRpb25hbDxNZXJpZGllbT4gbWVyaWRpZW07Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4geWVhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBtb250aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBkYXlPZk1vbnRoOworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhvdXI7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbWludXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNlY29uZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBtaWxsaXNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lcmlk
aWVtPiBtZXJpZGllbTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4IGQzOTFjOTcwMzFl
ODNhYThiMjVjMGZmNTBhZDg5MzRjZWJiZTY3NWYuLjcwYWIwMjcyNjI4YjJiYmMyMDdkMDJmOTIy
MWYzMmZjODA0MGY3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIFN0ZXBSYW5nZSBEYXRlVGltZUxvY2Fs
SW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGlu
CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6VmFsaWQs
IG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIGRhdGVUaW1lTG9jYWxTdGVwRGVzY3JpcHRpb24pOwog
fQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6cGFy
c2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJjZSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnBhcnNlVG9E
YXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoc291cmNlKTsKIH0K
IAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OnNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29u
ZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRl
Q29tcG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKHZh
bHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgK
aW5kZXggMDJkNmNhMDFiMzczMDlhMTEwZTAwMTY3NTZiODViZDQwMDYzOTZiZC4uZmExNTM5ZDA3
ZTU3OGYxMDQ1NDc2MDlmNjNiMGZmMTdjMjg0OTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0ZToKICAg
ICBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUpIGNvbnN0IGZpbmFsOwogICAgIFN0ZXBSYW5nZSBjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gc2V0TWlsbGlzZWNvbmRU
b0RhdGVDb21wb25lbnRzKGRvdWJsZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNl
Y29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNW
YWxpZEZvcm1hdChPcHRpb25TZXQ8RGF0ZVRpbWVGb3JtYXRWYWxpZGF0aW9uUmVzdWx0cz4pIGNv
bnN0IGZpbmFsOwogICAgIFN0cmluZyBmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERh
dGVUaW1lRmllbGRzU3RhdGUmKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKaW5kZXggNDRmNzg0YjdhMTI1MGJlZDc1N2I5ODgzNDRlNTNiNTk4NDE0NDNj
Zi4uNDkxZDA1N2I3NTBlNzM3YTFhZGY2NDU2MTRmZTg2NDg0OTUwYzU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHNlcmlhbGl6ZUZvcm1Db250cm9sU3RhdGVUbyhjb25zdCBGb3JtQ29udHJvbFN0YXRl
JiBmb3JtQ29udHIKICAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKHZhbHVlLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IHZhbHVlKTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxGb3Jt
Q29udHJvbFN0YXRlPiBkZXNlcmlhbGl6ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3QmIGluZGV4KQorc3RhdGljIGlubGluZSBzdGQ6Om9w
dGlvbmFsPEZvcm1Db250cm9sU3RhdGU+IGRlc2VyaWFsaXplRm9ybUNvbnRyb2xTdGF0ZShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5kZXgpCiB7CiAgICAgaWYg
KGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKaW5kZXggY2M2NWVh
YzhiYjI1YmE5MTFkOTM3NTJjYjkzMWQxNzU3YzY4ZmFhZS4uN2YyNmU5ZTcyMDc5ZmZlYmJjM2Q0
ZWNjYzU2MWFmNTllMDdjYzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1M
QWxsQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHQKIH0KIAog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUu
aHRtbCNkb20taHRtbGFsbGNvbGxlY3Rpb24taXRlbQotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFt
ZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8
RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhj
b25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9ySW5k
ZXguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MCw3ICs2MCw3
IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1l
bnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5hCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjY29uY2VwdC1nZXQtYWxsLW5h
bWVkCi1PcHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVt
ZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbU9ySXRl
bXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMg
PSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKaW5kZXggZjZlZDMzN2M1YjdhYjEyNWVkYzQ3ODg5YWUzOWYxM2NjNTM0ZjYzNC4u
NmU4NjAxZjVlOWFjMDAwZTk3YjM5ZTJmMzA4MGE3YWFlNWM1OTExNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaApAQCAtMzMsOCArMzMsOCBAQCBjbGFzcyBIVE1MQWxs
Q29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYs
IENvbGxlY3Rpb25UeXBlKTsKIAotICAgIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25z
dCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBuYW1lZEl0ZW1Pckl0ZW1z
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRPckluZGV4ZWRJdGVt
T3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+
IG5hbWVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIEhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBhM2Q3NjU3ZDY0NDdkZDEz
MjViNjg0MmM0NGIyOWJhYzRkMmVmNGE5Li5iMTBmMjQyZGZkMDdjYWNkM2VkYzExMGM5YmJlNWZk
NWZkMWQyM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApA
QCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6OmlzU3lzdGVtUHJldmll
d0xpbmsoKQogfQogI2VuZGlmCiAKLU9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBI
VE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6
cGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0CiB7CiAgICAgdXNpbmcgU291cmNl
SUQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQ7CiAgICAgdXNpbmcgU291cmNl
U2l0ZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlOwpAQCAtNTE3LDcgKzUx
Nyw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkK
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gaGFzUmVsKFJlbGF0aW9uOjpOb1JlZmVycmVyKSA/
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyIDogdGhpcy0+cmVmZXJyZXJQb2xpY3koKTsKIAog
ICAgIGF1dG8gZWZmZWN0aXZlVGFyZ2V0ID0gdGhpcy0+ZWZmZWN0aXZlVGFyZ2V0KCk7Ci0gICAg
T3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5OworICAg
IHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG5ld0ZyYW1lT3BlbmVyUG9saWN5
OwogICAgIGlmIChoYXNSZWwoUmVsYXRpb246Ok9wZW5lcikpCiAgICAgICAgIG5ld0ZyYW1lT3Bl
bmVyUG9saWN5ID0gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93OwogICAgIGVsc2UgaWYgKGhh
c1JlbChSZWxhdGlvbjo6Tm9PcGVuZXIpIHx8IChkb2N1bWVudCgpLnNldHRpbmdzKCkuYmxhbmtB
bmNob3JUYXJnZXRJbXBsaWVzTm9PcGVuZXJFbmFibGVkKCkgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShlZmZlY3RpdmVUYXJnZXQsICJfYmxhbmsiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmgKaW5kZXggOTU5NzQ2OTdiMzQ5Y2U1ZjY5NzQ3NzI1NWJjMGJjMTRkNTg2
OWJkYS4uNGIwODQwYTQ0OTAzZjUzNzliNGNlNjNkMjExNWQ1MGQ2ZTM3ZGQ1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIAot
ICAgIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBwYXJzZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gcGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBo
YW5kbGVDbGljayhFdmVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKaW5kZXggOTkyZjVhMmY1MjJlOTVmNTYwYjY2YTViY2FiMWM4NzI5ZDQ5
ZTI5YS4uNDk2YjQxMTRlNzliNTA5NDZjZWNhMDY1NmQwYWQ4Y2YyMDY5MzY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29u
c3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRh
Y2htZW50cGF0aEF0dHIpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
QXR0cmlidXRlcyhPcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSkKK3ZvaWQgSFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmV3RmlsZW5hbWUpCiB7CiAgICAgaWYgKCFuZXdGaWxlbmFtZS5pc051bGwoKSkKICAgICAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0
ciwgbmV3RmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKaW5kZXggMjA1NzU0ZDU0YWE5MjEzMjU5NjRiZWYwMDBjOTZhMzhjNDZiZWM3Ni4uNTcz
ZWMyZWFlMWNkYzA2MDlmMjYxYzM4NDAwYmIwMmM0ODBmN2JkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBF
bGVtZW50JikgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0
ZXMoT3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVu
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERh
dGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1h
Z2U+JiB0aHVtYm5haWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGI4MzJiNjAyN2Q1NTA0YmZkMDRkNzk0ZTlkOTQyMzk0MDliOTE0MTMuLjlmNTU2
MDgwMmJhYzMyYmI0OTllYzk3YzliMGFlMzJlMTFjNjIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHNpemVfdCBzaXplKQogICAg
IG1heEFjdGl2ZVBpeGVsTWVtb3J5Rm9yVGVzdGluZyA9IHNpemU7CiB9CiAKLUV4Y2VwdGlvbk9y
PE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKK0V4Y2VwdGlvbk9y
PHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJ
ZCwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogewogICAg
IGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNQbGFjZWhvbGRlcigp
KQpAQCAtMjQ1LDI4ICsyNDUsMjggQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAg
ICBpZiAobV9jb250ZXh0LT5pczJkKCkpIHsKICAgICAgICAgICAgIGlmICghaXMyZFR5cGUoY29u
dGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0PiB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0
PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0
IH07CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KG1fY29udGV4dC0+aXNCaXRtYXBSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQml0
bWFwUmVuZGVyZXJUeXBlKGNvbnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07Ci0gICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0PiB7ICZkb3duY2FzdDxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2Nv
bnRleHQpIH0gfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0PiB7ICZkb3duY2FzdDxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQp
IH0gfTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBpZiAobV9jb250
ZXh0LT5pc1dlYkdMKCkpIHsKICAgICAgICAgICAgIGlmICghaXNXZWJHTFR5cGUoY29udGV4dElk
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBz
dGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgYXV0byB2ZXJzaW9u
ID0gdG9XZWJHTFZlcnNpb24oY29udGV4dElkKTsKICAgICAgICAgICAgIGlmICgodmVyc2lvbiA9
PSBXZWJHTFZlcnNpb246OldlYkdMMSkgIT0gbV9jb250ZXh0LT5pc1dlYkdMMSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdD
b250ZXh0PigqbV9jb250ZXh0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2Fz
dDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1fY29u
dGV4dCkgfSB9OwogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAgICAgICAgICBBU1NFUlQoaXM8V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkpOwotICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+
IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRy
PFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ+KCptX2NvbnRleHQpIH0gfTsKICNlbmRpZgogICAgICAgICB9CiAjZW5kaWYKQEAgLTI3NCwx
MyArMjc0LDEzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAjaWYgRU5BQkxFKFdFQkdQVSkK
ICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNXZWJHUFUoKSkgewogICAgICAgICAgICAgaWYgKCFp
c1dlYkdQVVR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8
UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKLSAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxHUFVDYW52YXNDb250ZXh0PiB7ICZk
b3duY2FzdDxHUFVDYW52YXNDb250ZXh0PigqbV9jb250ZXh0KSB9IH07CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQg
fTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
UmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCpt
X2NvbnRleHQpIH0gfTsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpczJkVHlwZShjb250ZXh0
SWQpKSB7CkBAIC0yOTAsOCArMjkwLDggQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAg
ICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0MmQoY29udGV4dElkLCBXVEZNb3ZlKHNl
dHRpbmdzKSk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPiB7IGNvbnRleHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PiB7IGNvbnRleHQgfSB9OwogICAgIH0KIAogICAgIGlmIChpc0JpdG1hcFJlbmRlcmVyVHlwZShj
b250ZXh0SWQpKSB7CkBAIC0zMDEsOCArMzAxLDggQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8K
IAogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29u
dGV4dElkLCBXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9
OwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9OwogICAgIH0KIAogI2lmIEVO
QUJMRShXRUJHTCkKQEAgLTMxMywxMyArMzEzLDEzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xv
CiAKICAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJz
aW9uKGNvbnRleHRJZCksIFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6
Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAKICAgICAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5n
Q29udGV4dD4oKmNvbnRleHQpKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkgfSB9OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSB9IH07CiAj
aWYgRU5BQkxFKFdFQkdMMikKICAgICAgICAgQVNTRVJUKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ+KCpjb250ZXh0KSk7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IFJlZlB0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PigqY29udGV4dCkgfSB9OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiB7ICZk
b3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqY29udGV4dCkgfSB9OwogI2VuZGlmCiAg
ICAgfQogI2VuZGlmCkBAIC0zMjgsMTIgKzMyOCwxMiBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoSlNDOjpKU0ds
bwogICAgIGlmIChpc1dlYkdQVVR5cGUoY29udGV4dElkKSkgewogICAgICAgICBhdXRvIGNvbnRl
eHQgPSBjcmVhdGVDb250ZXh0V2ViR1BVKGNvbnRleHRJZCk7CiAgICAgICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6
bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBS
ZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4geyBjb250ZXh0IH0gfTsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CisgICAg
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNh
bnZhc0NvbnRleHQ+IHsgY29udGV4dCB9IH07CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICByZXR1cm4g
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25z
dCBTdHJpbmcmIHR5cGUpCkBAIC01NjUsNyArNTY1LDcgQEAgSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnN0
IFMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Kj4o
bV9jb250ZXh0LmdldCgpKTsKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhj
b25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0KQordm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
ZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xl
YXJDb3BpZWRJbWFnZSgpOwogICAgIApAQCAtNzA2LDcgKzcwNiw3IEBAIHN0YXRpYyBTdHJpbmcg
dG9FbmNvZGluZ01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB9CiAKIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2Etc2VyaWFsaXNh
dGlvbi1vZi10aGUtYml0bWFwLWFzLWEtZmlsZQotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNWYWx1ZSBxdWFsaXR5VmFsdWUpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9tSlNWYWx1ZShKU0M6OkpTVmFsdWUgcXVhbGl0eVZh
bHVlKQogewogICAgIGlmICghcXVhbGl0eVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC04MzksNyArODM5LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSgpCiAjZW5kaWYKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPE1lZGlhU3RyZWFtPj4gSFRNTENhbnZhc0VsZW1lbnQ6OmNhcHR1cmVTdHJlYW0oRG9j
dW1lbnQmIGRvY3VtZW50LCBPcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKK0V4
Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbT4+IEhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3Ry
ZWFtKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1
ZXN0UmF0ZSkKIHsKICAgICBpZiAoIW9yaWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24oU2VjdXJpdHlFcnJvciwgIkNhbnZhcyBpcyB0YWludGVkIl9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAxMDcxZjY0NzE5MTQyNjVlZDg3NzI0NDJh
YTkwNWZhMjRkMThhZGU4Li40NTk4ZjQ4ZWEyZTNmNmY1NjdjYmRkYWQ2ZDg1MTQyMmRjNDA0OWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC03Myw3ICs3Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgb3Zl
cnJpZGU7CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IGdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPj4mJiBhcmd1bWVudHMpOworICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4+IGdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmlu
ZyYgY29udGV4dElkLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVu
dHMpOwogCiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJp
bmcmKTsKIApAQCAtMTA3LDEzICsxMDcsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBV
c2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lkIGRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRS
ZWN0PiYpIGZpbmFsOworICAgIHZvaWQgZGlkRHJhdyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4mKSBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUoKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJl
YW0+PiBjYXB0dXJlU3RyZWFtKERvY3VtZW50JiwgT3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVx
dWVzdFJhdGUpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbT4+IGNhcHR1cmVTdHJl
YW0oRG9jdW1lbnQmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsK
ICNlbmRpZgogCiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CkBAIC0xODYs
NyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dD4gbV9jb250ZXh0OwogICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZElt
YWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUg
dG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRvIHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1
ZSkuCiAKLSAgICBPcHRpb25hbDxib29sPiBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmc7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmc7CiAgICAgYm9vbCBt
X3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9pZ25vcmVS
ZXNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYWJm
NDQwZmFmY2FmZDAwZjdjMjZmM2E1YjFkM2Q2OGVlYjdiMzg1Mi4uMDczYjJiYzM5ZTQwYmEwZWZk
ZDk2OWI2NzQ2ZjI1NWFiN2ZjYmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNw
cApAQCAtMTIwLDcgKzEyMCw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50Ojpj
cmVhdGVQYXJzZXIoKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9kb20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRpdGVtCi1PcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCAhaGFzRG9jdW1lbnRO
YW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDI3ZWRlNWE3NmMxMzgwNGU5YTExZDAzMWRm
MjY4NTEyY2FhYjdmZjEuLmUzNTNhYmRiZmExZDUyZTU4ODcyN2IyODU2YTk2NWNhNzQ1NmMyMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHdpZHRoKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGhlaWdodCgpOwogICAgIAotICAgIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5
PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNv
bnN0IEF0b21TdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRv
d1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJ
dGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpIGNvbnN0OwogCiAgICAgRWxlbWVudCogZG9jdW1lbnROYW1lZEl0ZW0o
Y29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1l
ZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGFkYmExZTZiMzQzZTI5MzNhNTljNTZkYzVk
N2YyODA3NDk1YzA1ZDYuLjg0ZjZiMDBlODExOTA2NGI3MGFiMDI1OGRjNTgxMjEzZWY4NjVjMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCB2
b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSwgQ1NTUHJvcGVydAogCiAvLyBDb2xvciBwYXJzaW5nIHRoYXQgbWF0Y2hlcyBI
VE1MJ3MgInJ1bGVzIGZvciBwYXJzaW5nIGEgbGVnYWN5IGNvbG9yIHZhbHVlIgogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jcnVsZXMtZm9yLXBhcnNpbmctYS1sZWdhY3ktY29sb3Vy
LXZhbHVlCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlTGVnYWN5Q29sb3JW
YWx1ZShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8g
QW4gZW1wdHkgc3RyaW5nIGRvZXNuJ3QgYXBwbHkgYSBjb2xvci4KICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAKaW5kZXggZjM1M2U5YTliZWY4MTcwMjk0NWRjNzU4MDcxYjFlODFiZTI5ZmIx
My4uYWI2YmRkNDhkMTIyMzdiNTJhZWJlYzg3ZTllYjBkZDE5NzI1NzU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTU0
LDcgKzU0LDcgQEAgUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUKIAogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpID0gZGVmYXVsdDsKIAotT3B0
aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1Pckl0ZW1zKGNvbnN0IFN0cmluZyYg
bmFtZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4s
IFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1P
ckl0ZW1zKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIG5hbWVkSXRlbXMg
PSB0aGlzLT5uYW1lZEl0ZW1zKG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKaW5kZXggNmM3YzRiODk3MTRjNWNkMzMxZmUyZTlm
MTE5MDNlYmZlYmM1N2JiYS4uYjViODk5NzI5M2E5MGJlMGIzMWNiZDc2ODNiYmIxMmQyNTU3ZDgw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24oKTsKIAogICAgIEhUTUxFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNl
dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2Rl
TGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbU9ySXRlbXMoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0Piwg
UmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJdGVtT3JJdGVtcyhjb25zdCBTdHJpbmcmKSBjb25zdDsK
IAogICAgIEhUTUxGb3JtRWxlbWVudCYgb3duZXJOb2RlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAxZTZlZTEwMDFiODBjOTNkNzEzNmE3NTNl
ZDU3NDViYmY5YTQ4YzQxLi5hY2E2NmVjZmFjYzQyOWYxZGUyMmZmZTUxYjhiOTU2MDA4NjQ5YjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcw
LDcgQEAgSFRNTEVsZW1lbnQqIEhUTUxGb3JtRWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbmRleCkK
ICAgICByZXR1cm4gZWxlbWVudHMoKS0+aXRlbShpbmRleCk7CiB9CiAKLU9wdGlvbmFsPFZhcmlh
bnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxWYXJp
YW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1FbGVt
ZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIG5hbWVk
SXRlbXMgPSBuYW1lZEVsZW1lbnRzKG5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAppbmRleCA1YTYxZjUyMzQxYzhlZGYxNmFmNGNhY2U3YmU2MTE4MWFmMjNmYThhLi5j
OGFkNmFmM2VmNjMzMTg2ZDgyOGJiN2M3MWU2Mzc4YTU2NDAyZWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIGl0
ZW0odW5zaWduZWQgaW5kZXgpOwotICAgIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9k
ZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxF
bGVtZW50Pj4+IG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgVmVjdG9yPEF0b21T
dHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIFN0cmluZyBlbmN0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXggMjFjMzdjNmZiMTRkNDM0MTEy
ZGFjYmMxNzljMTg0MDBlMWRkZGE3YS4uMjc3ZTU5ZGUzZjY1OTE5MGQ1YjFkYThhMzBhN2NiMzll
YzEwMDZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNzEs
NyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNMYXp5TG9hZE9ic2VydmVyQWN0aXZlKCkg
Y29uc3QgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NVG9rZW5MaXN0PiBtX3NhbmRi
b3g7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxGZWF0dXJlUG9saWN5PiBtX2ZlYXR1cmVQb2xpY3k7
CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEZlYXR1cmVQb2xpY3k+IG1fZmVhdHVyZVBvbGlj
eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eUxvYWRGcmFtZU9ic2VydmVyPiBtX2xhenlMb2Fk
RnJhbWVPYnNlcnZlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCmluZGV4IDdmODc4OGU4NzRhZTFlMGE4M2UzMDM0YjMzMzAzN2FlYzlmMGYwMGYuLmVkYjY4
Y2Q3OGVlODkyODY0ZDkwYzJhZGZjN2U2Y2VmZDVhMWQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIVE1MSW1hZ2VFbGVtZW50
Ojp+SFRNTEltYWdlRWxlbWVudCgpCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0
aGlzKTsKIH0KIAotUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0
ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbmFsPHVu
c2lnbmVkPiB3aWR0aCwgT3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCkKK1JlZjxIVE1MSW1hZ2VF
bGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24o
RG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdFJlZigq
bmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwogICAgIGlmICh3aWR0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNmUxYjMzMjk3MWU1ZTRh
Yzk5ZDRjMWMyMDUyNTk2M2Y3OTYxZDk0MC4uZTY3ZTEyMmE0OTQxNmZhOGVjMzQwZmM0YTBkZWQx
MzllZjFiMjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwg
cHVibGljIEZvcm1OYW1lZEl0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEltYWdl
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVt
ZW50KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRl
Rm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3VtZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+IHdp
ZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmPEhUTUxJbWFn
ZUVsZW1lbnQ+IGNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQp
OwogCiAgICAgdmlydHVhbCB+SFRNTEltYWdlRWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBkOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkw
MzdlNTI1NzM4NDNhLi4xOTlmNmJkZTRlODMzMGRiZmZhNzFkNmIyMDA3MTk1Y2UyZmZlZTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTQwNSwxMiArNDA1
LDEyIEBAIFN0ZXBSYW5nZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3Rl
cEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uCiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKLU9wdGlvbmFsPERlY2ltYWw+IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmRDbG9zZXN0
VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8RGVjaW1h
bD4gSFRNTElucHV0RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2lt
YWwmIHZhbHVlKQogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKHZhbHVlKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBIVE1MSW5wdXRFbGVtZW50Ojps
aXN0T3B0aW9uVmFsdWVBc0RvdWJsZShjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxl
bWVudCkKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBIVE1MSW5wdXRFbGVtZW50OjpsaXN0T3B0aW9u
VmFsdWVBc0RvdWJsZShjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCkKIHsK
ICAgICBhdXRvIG9wdGlvblZhbHVlID0gb3B0aW9uRWxlbWVudC52YWx1ZSgpOwogICAgIGlmICgh
aXNWYWxpZFZhbHVlKG9wdGlvblZhbHVlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggNTJhYjgzMTdmMGI5YmJlYWM5NzMxOGMxNzJjZTgwYTY4NjRiZmFlZS4uNWVk
OTRiYmY3NmUxMzFkYTI0OWE4NGNiODViN2VkNTI0Mzk4MmEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIFN0ZXBS
YW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQotICAgIE9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlj
a01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJik7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBsaXN0T3B0
aW9uVmFsdWVBc0RvdWJsZShjb25zdCBIVE1MT3B0aW9uRWxlbWVudCYpOworICAgIHN0ZDo6b3B0
aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbGlzdE9wdGlvblZhbHVlQXNEb3VibGUoY29uc3Qg
SFRNTE9wdGlvbkVsZW1lbnQmKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0
aW9uT3I8dm9pZD4gc3RlcFVwKGludCA9IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVu
dC5jcHAKaW5kZXggYjJhYTg4NTQ2OTE0NTI4MGEyMjYwMjNhM2U4NDFlZTdmMTFiMGI5MC4uYjQ2
MTRiZjdjNjFmNDRmZTI0ODUwZDViNzlkZWZhY2NjOTE2ODFmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMSUVsZW1lbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBIVE1MTElFbGVtZW50
OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogaW5saW5lIHZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VW
YWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7
Ci0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBleHBsaWNpdFZhbHVlOwogICAgIGlmIChhdXRvIHBhcnNlZFZhbHVlID0gcGFyc2VIVE1MSW50
ZWdlcih2YWx1ZSkpCiAgICAgICAgIGV4cGxpY2l0VmFsdWUgPSAqcGFyc2VkVmFsdWU7CiAgICAg
ZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcigpKS5zZXRFeHBsaWNpdFZhbHVlKGV4
cGxpY2l0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4
IGYwZTAyYzk3MWRjMzU5ODdhNmJjNGNhMmMzMjI4N2QzYTE3NDliNzMuLmI5Yjk2NjcyMjcwNjdl
NzI1ZTYxZGE4YzdlZmExMmJmZjVjMjZhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAKICAgICAgICAgYm9vbCBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRydWU7CiAgICAgICAg
IGlmICghbV9tZWRpYS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlclN0
eWxlPiBkb2N1bWVudFN0eWxlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJTdHls
ZT4gZG9jdW1lbnRTdHlsZTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlID0gU3R5bGU6OnJlc29s
dmVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIGF1dG8gbWVkaWEgPSBNZWRp
YVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1l
bnQoKSkpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNz
KCkKICAgICAgICAgYWRkUGVuZGluZ1NoZWV0KGlzQWN0aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFj
dGl2ZVNoZWV0KTsKIAogICAgICAgICAvLyBMb2FkIHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBu
ZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgaW1tZWRpYXRlbHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0g
ICAgICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIGlm
ICghaXNBY3RpdmUpCiAgICAgICAgICAgICBwcmlvcml0eSA9IERlZmF1bHRSZXNvdXJjZUxvYWRQ
cmlvcml0eTo6aW5hY3RpdmVTdHlsZVNoZWV0OwogCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzdHls
ZVNoZWV0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0JiBjYWNoZWRTdHlsZVNoZWV0LCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dCBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBvcmlnaW5DbGVh
biBzaG91bGQgYmUgdHVybmVkIHRvIGZhbHNlIGV4Y2VwdCBpZiBmZXRjaCBtb2RlIGlzIENPUlMu
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gb3JpZ2luQ2xlYW47CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBvcmlnaW5DbGVhbjsKICAgICBpZiAoY2FjaGVkU3R5bGVTaGVldC5vcHRpb25zKCkubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCiAgICAgICAgIG9yaWdpbkNsZWFuID0gY2FjaGVk
U3R5bGVTaGVldC5pc0NPUlNTYW1lT3JpZ2luKCk7CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCBjb25z
dCBBdG9tU3RyaW5nJiBIVE1MTGlua0VsZW1lbnQ6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKIH0KIAotT3B0aW9uYWw8
TGlua0ljb25UeXBlPiBIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8TGlua0ljb25UeXBlPiBIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9yZWxBdHRyaWJ1dGUuaWNvblR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAppbmRleCA4MGYwYzVjMWZiOTY4ZTU0OThlYTcyY2UwMGVmNjFkMjFh
YjNkYzA4Li45MzY5YjczMDk5YjIwZDg2YzhmNzE4OTcyZDZiZDVlZjQyNzRmNjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGlu
a0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGlua0ljb25U
eXBlPiBpY29uVHlwZSgpIGNvbnN0OwogCiAgICAgQ1NTU3R5bGVTaGVldCogc2hlZXQoKSBjb25z
dCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IDM5ODE4MjIyOTRmNzBlYjJiYzJkMjg5MTA0ZWUyOWQxZmEzNjA1
MzAuLjQwNTJhMTM3ZjQ4ZGQ2NzkwMmZmZmYyZjY1ODM0OGIxMmViM2EyM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlh
VGltZSYgbW92aWVUaW1lKQogICAgIGlmIChhdXRvIG5lYXJlc3RFbmRpbmdDdWUgPSBzdGQ6Om1p
bl9lbGVtZW50KGN1cnJlbnRDdWVzLmJlZ2luKCksIGN1cnJlbnRDdWVzLmVuZCgpLCBjb21wYXJl
Q3VlSW50ZXJ2YWxFbmRUaW1lKSkKICAgICAgICAgbmV4dEludGVyZXN0aW5nVGltZSA9IG5lYXJl
c3RFbmRpbmdDdWUtPmRhdGEoKS0+ZW5kTWVkaWFUaW1lKCk7CiAKLSAgICBPcHRpb25hbDxDdWVJ
bnRlcnZhbD4gbmV4dEN1ZSA9IG1fY3VlRGF0YS0+Y3VlVHJlZS5uZXh0SW50ZXJ2YWxBZnRlciht
b3ZpZVRpbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8Q3VlSW50ZXJ2YWw+IG5leHRDdWUgPSBtX2N1
ZURhdGEtPmN1ZVRyZWUubmV4dEludGVydmFsQWZ0ZXIobW92aWVUaW1lKTsKICAgICBpZiAobmV4
dEN1ZSkKICAgICAgICAgbmV4dEludGVyZXN0aW5nVGltZSA9IHN0ZDo6bWluKG5leHRJbnRlcmVz
dGluZ1RpbWUsIG5leHRDdWUtPmxvdygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA0NTY5ODMwNDNmNTdkZGQ4YWJhM2QwMTUwZDk0YjhjZTk3YmFmYzUyLi5k
ODUxMDA4NTkwNTdkMTRkZDk3OWM0YmI2MjljZjEyYTc5YmFkMTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFJlbW90ZVBs
YXliYWNrOwogdXNpbmcgQ3VlSW50ZXJ2YWwgPSBQT0RJbnRlcnZhbDxNZWRpYVRpbWUsIFRleHRU
cmFja0N1ZSo+OwogdXNpbmcgQ3VlTGlzdCA9IFZlY3RvcjxDdWVJbnRlcnZhbD47CiAKLXVzaW5n
IE1lZGlhUHJvdmlkZXIgPSBPcHRpb25hbDxWYXJpYW50PAordXNpbmcgTWVkaWFQcm92aWRlciA9
IHN0ZDo6b3B0aW9uYWw8VmFyaWFudDwKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbT4sCiAjZW5kaWYKQEAgLTExMTYsNyArMTExNiw3IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fc3VidGl0bGVUcmFja0xhbmd1YWdlOwogICAgIE1lZGlhVGltZSBtX2xh
c3RUZXh0VHJhY2tVcGRhdGVUaW1lIHsgLTEsIDEgfTsKIAotICAgIE9wdGlvbmFsPENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZT4gbV9jYXB0aW9uRGlzcGxheU1vZGU7
CisgICAgc3RkOjpvcHRpb25hbDxDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxh
eU1vZGU+IG1fY2FwdGlvbkRpc3BsYXlNb2RlOwogCiAgICAgUmVmUHRyPEF1ZGlvVHJhY2tMaXN0
PiBtX2F1ZGlvVHJhY2tzOwogICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7
CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxjb25zdCBNZWRp
YVJlc291cmNlTG9hZGVyPiBtX2xhc3RNZWRpYVJlc291cmNlTG9hZGVyRm9yVGVzdGluZzsKIAot
ICAgIE9wdGlvbmFsPER5bmFtaWNSYW5nZU1vZGU+IG1fb3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2Rl
OworICAgIHN0ZDo6b3B0aW9uYWw8RHluYW1pY1JhbmdlTW9kZT4gbV9vdmVycmlkZUR5bmFtaWNS
YW5nZU1vZGU7CiAKICAgICBmcmllbmQgY2xhc3MgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBhM2MwNzIwYTY3MTAy
OGVmNzNmODFiODE4Mjg2MWEyMmU3NDhhYzVjLi5mMDIyNmY2MjlkMWI5Y2M5NTM0MDZjYzc2NDAw
YTA2ZDQyOTdiY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIGJvb2wgSFRNTE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoKQogICAgIGlmICghbV9tZWRpYSkKICAgICAgICAgbV9tZWRpYSA9IE1lZGlhUXVlcnlTZXQ6
OmNyZWF0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlhQXR0cikuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsK
IAotICAgIE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CiAgICAgaWYgKGRvY3VtZW50Lmhhc0xp
dmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZl
Rm9yRG9jdW1lbnQoZG9jdW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
aAppbmRleCBmNTk5MzkzZTgxZDM5ODMxZjRlZTllY2IyODQ2MmVjYjJiOWQ0ZjVhLi5lYjYxNThh
NGVhMmY2NGQxZjllYmRiN2I1ZDFmZTdjM2E1ZjkzOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGFFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxN
ZWRpYVF1ZXJ5U2V0PiBtX21lZGlhOwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENv
bG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENvbG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T0xpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5j
cHAKaW5kZXggN2M4YjkzNTQxMWUwYzk5NTBjNjM4YmM0ZmNkYjUyMjk2NTgxMGNiNi4uODY0OGE0
YWYwN2QzNGI4YzNhMjVjZDM4Y2EwZWYyOWU5N2M0NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIC8vIEZJWE1FOiBUaGVy
ZSBzaG91bGQgYmUgYSBzdGFuZGFyZCB3YXkgdG8gdHVybiBhIHN0ZDo6ZXhwZWN0ZWQgaW50byBh
IE9wdGlvbmFsLgogLy8gTWF5YmUgd2Ugc2hvdWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBm
aWxlIGZvciBFeHBlY3RlZCBhbmQgZ2l2ZSBpdCBhIGJldHRlciBuYW1lLgotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRT4gaW5saW5lIE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhw
ZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBl
eHBlY3RlZCkKIHsKLSAgICByZXR1cm4gZXhwZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4
cGVjdGVkLnZhbHVlKCkpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gZXhwZWN0ZWQgPyBz
dGQ6Om9wdGlvbmFsPFQ+KFdURk1vdmUoZXhwZWN0ZWQudmFsdWUoKSkpIDogc3RkOjpudWxsb3B0
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5oCmluZGV4IDJmNGMzOTcyMGVjZTg0YWYyYzI4YWI5NzBiNjdkM2ZjZWExY2I2MjkuLjU2
MzI0YTY2OTczMzg3NjRkNjkyYzEwOTM0NGY0MThjM2VkMjgzZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1fc3RhcnQ7Ci0gICAgbXV0YWJsZSBPcHRp
b25hbDx1bnNpZ25lZD4gbV9pdGVtQ291bnQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fc3Rh
cnQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2l0ZW1Db3VudDsKICAg
ICBib29sIG1faXNSZXZlcnNlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXggMzBiYmNmMzY5ODQyNzYxZGQwYjUz
NDQxNzhiNDcwMTA2MzU1NTIyMC4uZjVjYjJmMWNmMjQ3ODMxMTA5NjhjNDEyZTQ2YjQyYTg1MDIw
ODcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYgc2VsZQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoY29uc3QgT3B0aW9uT3JPcHRH
cm91cEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBi
ZWZvcmUpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChjb25z
dCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxI
VE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQogewogICAgIHJldHVybiBzZWxlY3RFbGVtZW50KCku
YWRkKGVsZW1lbnQsIGJlZm9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaAppbmRleCA2NzY1MmU5YjQ5NGE2M2UxMmE3N2RmOWY1YzVkMTRiNDBlYzYx
MTZlLi41YTMxZmM0ZGI1MmYzMWZjZGZhMDk3OWQ1MTVlZDYzNmQ5NGVlNDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIAogICAgIHVzaW5nIE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50ID0gVmFyaWFu
dDxSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+LCBSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4+
OwogICAgIHVzaW5nIEhUTUxFbGVtZW50T3JJbnQgPSBWYXJpYW50PFJlZlB0cjxIVE1MRWxlbWVu
dD4sIGludD47Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0
IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiwgY29uc3QgT3B0aW9uYWw8SFRNTEVsZW1lbnRPcklu
dD4mIGJlZm9yZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNv
bnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxl
bWVudE9ySW50PiYgYmVmb3JlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShpbnQg
aW5kZXgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMzRkYWViOGRj
NDNmZDJmNjNmMDA4NDJjN2E4NzNjYWJmNzkwZDA3OC4uODliZThkYTc3MzgwNDE2MGFmYWE1ZTBi
NjRmZTBhOTJiMDc5ZmQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNl
bGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJ
bmRleCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKGNv
bnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBPcHRpb25hbDxIVE1M
RWxlbWVudE9ySW50PiYgYmVmb3JlKQorRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1l
bnQ6OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQogewogICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gYmVmb3JlRWxlbWVudDsKICAgICBpZiAoYmVmb3JlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggMjcyZjFjNDA0ODMxNjkwNTMxMmE2Yzk0MGQ5
ZTRmZWJkNjE0ZTY0Yy4uNjU0MjZjMTM0MDFmYmJkNzQxMzRhYjZmYjFhMGQ5M2UwZGQxZjAxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCA9IFZhcmlhbnQ8
UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiwgUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+PjsK
ICAgICB1c2luZyBIVE1MRWxlbWVudE9ySW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTEVsZW1lbnQ+
LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBP
cHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIGNvbnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+
JiBiZWZvcmUpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25z
dCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SFRNTEVsZW1l
bnRPckludD4mIGJlZm9yZSk7CiAKICAgICB1c2luZyBOb2RlOjpyZW1vdmU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmUoaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVs
ZW1lbnQuaAppbmRleCBlNGFlMWE1NGYxOGYyMDZjNWE0OGE5MGMxYzQ4ZWNmYjEyZGJlODc3Li4x
YWI2NmMwYjQwYWEyM2U0OGQ3ZDAzYTA3OTllMzYyNmE4MTRmNzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
VGltZXIgbV9lcnJvckV2ZW50VGltZXI7CiAgICAgYm9vbCBtX3Nob3VsZFJlc2NoZWR1bGVFcnJv
ckV2ZW50T25SZXN1bWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRDYWxsU291cmNlc0No
YW5nZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVmUHRyPGNvbnN0IE1lZGlh
UXVlcnlTZXQ+PiBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmlidXRlOworICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgTWVkaWFRdWVyeVNldD4+IG1fY2FjaGVkUGFyc2VkTWVk
aWFBdHRyaWJ1dGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDRjYTAz
ZGI4NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1ZmM3OWEyMTNhOTkuLjQ0MjM5MDhkMTUzZGRhOGI0MjZk
ODlkOGRlYTgwZGNmMGQ5NmYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIHZv
aWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9yUmFuZ2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zm
c2V0LCBOb2RlKiYgY28KICAgICB9CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25zdAog
ewogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhaXNUZXh0RmllbGQoKSB8fCAhaGFzQ2FjaGVkU2Vs
ZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMDg1NjUzNjlkMTQz
ZmY3YTk5NDA0Y2E2YTkwZTA1M2JlZjVmZDZkMC4uNjRjMTg1MmZhOTJmZWQxYWYxNTI5NGIyOGQ3
N2ExYmM1ZGIwZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
ZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGludCBzdGFy
dCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uID0gU2VsZWN0aW9uSGFzTm9E
aXJlY3Rpb24sIFNlbGVjdGlvblJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05v
dFJldmVhbCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSk7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uKCkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0aW9uKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHNlbGVjdGVkVGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNwYXRjaEZvcm1D
b250cm9sQ2hhbmdlRXZlbnQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAK
aW5kZXggMGI0YjE4MDY2NDYwNDQzOTI4MTFlOGQxMGYxNzNkZmVkOTg5ODRkNS4uNzlhMzYxYThm
N2VhMzA2Mjk4ODZkNjY4NjJjNjAwMjI2NGEzZGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJp
dG1hcC5jcHAKQEAgLTczLDcgKzczLDcgQEAgUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICBy
ZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
c2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CiB9CiAKLVJlZjxJbWFnZUJpdG1hcD4gSW1h
Z2VCaXRtYXA6OmNyZWF0ZShPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0
b3JlKQorUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8
SW1hZ2VCaXRtYXBCYWNraW5nPiYmIGJhY2tpbmdTdG9yZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZUJpdG1hcChXVEZNb3ZlKGJhY2tpbmdTdG9yZSkpKTsKIH0KQEAgLTEwMSw5
ICsxMDEsOSBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgKTsKIH0KIAotVmVjdG9yPE9w
dGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+IEltYWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFZl
Y3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYmIGJpdG1hcHMpCitWZWN0b3I8c3RkOjpvcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBJbWFnZUJpdG1hcDo6ZGV0YWNoQml0bWFwcyhWZWN0b3I8
UmVmUHRyPEltYWdlQml0bWFwPj4mJiBiaXRtYXBzKQogewotICAgIFZlY3RvcjxPcHRpb25hbDxJ
bWFnZUJpdG1hcEJhY2tpbmc+PiBidWZmZXJzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPElt
YWdlQml0bWFwQmFja2luZz4+IGJ1ZmZlcnM7CiAgICAgZm9yIChhdXRvJiBiaXRtYXAgOiBiaXRt
YXBzKQogICAgICAgICBidWZmZXJzLmFwcGVuZChiaXRtYXAtPnRha2VJbWFnZUJpdG1hcEJhY2tp
bmcoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcnM7CkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGJv
b2wgdGFpbnRzT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIEhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvKQogI2VuZGlmCiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2ltYWdlYml0bWFwLWFuZC1hbmltYXRpb25zLmh0bWwjY3JvcHBlZC10by10aGUtc291cmNl
LXJlY3RhbmdsZS13aXRoLWZvcm1hdHRpbmcKLXN0YXRpYyBFeGNlcHRpb25PcjxJbnRSZWN0PiBj
cm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRpbmcoSW50U2l6ZSBpbnB1dFNpemUsIElt
YWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCkKK3N0YXRp
YyBFeGNlcHRpb25PcjxJbnRSZWN0PiBjcm9wcGVkU291cmNlUmVjdGFuZ2xlV2l0aEZvcm1hdHRp
bmcoSW50U2l6ZSBpbnB1dFNpemUsIEltYWdlQml0bWFwT3B0aW9ucyYgb3B0aW9ucywgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiByZWN0KQogewogICAgIC8vIDIuIElmIGVpdGhlciBvciBib3RoIG9m
IHJlc2l6ZVdpZHRoIGFuZCByZXNpemVIZWlnaHQgbWVtYmVycyBvZiBvcHRpb25zIGFyZSBsZXNz
CiAgICAgLy8gICAgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVq
ZWN0ZWQgd2l0aCAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWMKIAogLy8gMTMuIFJldHVybiBvdXRwdXQuCiAKLXZvaWQgSW1hZ2VC
aXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdl
Qml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0
bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlv
bnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBw
cm9taXNlKQogewogICAgIC8vIDIuIElmIGltYWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJs
ZSwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxp
ZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zOTks
MTkgKzM5OSwxOSBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgcHJvbWlzZS5yZXNvbHZl
KFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQ
dHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYm
IHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewog
ICAgIGNyZWF0ZVByb21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQs
IFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQog
CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJl
ZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYm
IHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+
JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlv
bmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAg
ICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50LCBX
VEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KICNl
bmRpZgogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDYW52YXNCYXNl
JiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIu
IElmIHRoZSBjYW52YXMgZWxlbWVudCdzIGJpdG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBk
aW1lbnNpb24gb3IgYSB2ZXJ0aWNhbAogICAgIC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJv
LCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJy
b3IiCkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogfQogCiAjaWYg
RU5BQkxFKFZJREVPKQotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTFZpZGVvRWxl
bWVudD4mIHZpZGVvLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRS
ZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgdmlkZW8sIEltYWdlQml0bWFwT3B0
aW9ucyYmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6
OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlLyNkb20tY3JlYXRlaW1hZ2ViaXRtYXAKICAgICAvLyBXSEFUV0cgSFRNTCAy
MTAyOTEzYjMxMzA3OGNkOGVlYWM3ZTgxZTZhODc1NmNiZDNlNzczCkBAIC01NDUsMTMgKzU0NSwx
MyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVFlQ
RURfT00pCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25z
JiYsIE9wdGlvbmFsPEludFJlY3Q+LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6
b3B0aW9uYWw8SW50UmVjdD4sIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAg
ICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCIpOwog
fQogI2VuZGlmCiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlQml0bWFwPiYg
ZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleGlzdGluZ0ltYWdlQml0bWFw
LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJl
Y3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFn
ZSdzIFtbRGV0YWNoZWRdXSBpbnRlcm5hbCBzbG90IHZhbHVlIGlzIHRydWUsIHJldHVybiBhIHBy
b21pc2UKICAgICAvLyAgICByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9N
RXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KQEAgLTY0MCw3ICs2NDAsNyBAQCBwcml2
YXRlOgogY2xhc3MgUGVuZGluZ0ltYWdlQml0bWFwIGZpbmFsIDogcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxCbG9iPiYmIGJsb2IsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKKyAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8QmxvYj4mJiBi
bG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+
IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKICAgICB7CiAgICAgICAgIGlm
IChzY3JpcHRFeGVjdXRpb25Db250ZXh0LmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02NDksNyArNjQ5LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBQZW5kaW5nSW1hZ2VCaXRtYXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEJsb2I+JiYgYmxvYiwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlBy
b21pc2UmJiBwcm9taXNlKQorICAgIFBlbmRpbmdJbWFnZUJpdG1hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8QmxvYj4mJiBibG9iLCBJbWFn
ZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIElt
YWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKICAgICAgICAgOiBBY3RpdmVET01PYmplY3Qo
JnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgICwgbV9ibG9iTG9hZGVyKEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKQogICAgICAgICAsIG1fYmxvYihXVEZN
b3ZlKGJsb2IpKQpAQCAtNzIzLDEzICs3MjMsMTMgQEAgcHJpdmF0ZToKICAgICBGaWxlUmVhZGVy
TG9hZGVyIG1fYmxvYkxvYWRlcjsKICAgICBSZWZQdHI8QmxvYj4gbV9ibG9iOwogICAgIEltYWdl
Qml0bWFwT3B0aW9ucyBtX29wdGlvbnM7Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4gbV9yZWN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gbV9yZWN0OwogICAgIEltYWdlQml0bWFwOjpQcm9t
aXNlIG1fcHJvbWlzZTsKICAgICBTdXNwZW5kYWJsZVRpbWVyIG1fY3JlYXRlSW1hZ2VCaXRtYXBU
aW1lcjsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3M7CiB9
OwogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1
ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBj
b25zdCBVUkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwgU3RyaW5nIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0LCBQ
cm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoIWFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
IHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3Jl
YXRlIGFuIEltYWdlQml0bWFwIGZyb20gYW4gZW1wdHkgYnVmZmVyIik7CkBAIC03NzAsMTMgKzc3
MCwxMyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIHByb21pc2UucmVzb2x2ZShXVEZN
b3ZlKGltYWdlQml0bWFwKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEJs
b2I+JiBibG9iLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxCbG9iPiYgYmxvYiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
c3RkOjpvcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21p
c2UpCiB7CiAgICAgLy8gMi4gUmV0dXJuIGEgbmV3IHByb21pc2UsIGJ1dCBjb250aW51ZSBydW5u
aW5nIHRoZXNlIHN0ZXBzIGluIHBhcmFsbGVsLgogICAgIFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0
Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShibG9iKSwgV1RGTW92ZShvcHRpb25z
KSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmVmUHRyPEltYWdlRGF0YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25z
JiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2Um
JiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1h
Z2VEYXRhLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPEludFJl
Y3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyA2LjEu
IExldCBidWZmZXIgYmUgaW1hZ2UncyBkYXRhIGF0dHJpYnV0ZSB2YWx1ZSdzIFtbVmlld2VkQXJy
YXlCdWZmZXJdXQogICAgIC8vICAgICAgaW50ZXJuYWwgc2xvdC4KQEAgLTgzMiw3ICs4MzIsNyBA
QCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1h
Z2VCaXRtYXApKTsKIH0KIAotSW1hZ2VCaXRtYXA6OkltYWdlQml0bWFwKE9wdGlvbmFsPEltYWdl
Qml0bWFwQmFja2luZz4mJiBiYWNraW5nU3RvcmUpCitJbWFnZUJpdG1hcDo6SW1hZ2VCaXRtYXAo
c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQogICAgIDog
bV9iYWNraW5nU3RvcmUoV1RGTW92ZShiYWNraW5nU3RvcmUpKQogewogICAgIEFTU0VSVF9JTVBM
SUVTKG1fYmFja2luZ1N0b3JlLCBtX2JhY2tpbmdTdG9yZS0+YnVmZmVyKCkpOwpAQCAtODQ2LDcg
Kzg0Niw3IEBAIEltYWdlQml0bWFwOjp+SW1hZ2VCaXRtYXAoKQogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtpbWFnZUJ1ZmZlciA9IFdURk1vdmUoaW1hZ2VCdWZmZXIpXSB7IH0pOwogfQogCi1P
cHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCaXRtYXBC
YWNraW5nKCkKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBJbWFnZUJpdG1hcDo6
dGFrZUltYWdlQml0bWFwQmFja2luZygpCiB7CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9i
YWNraW5nU3RvcmUsIHN0ZDo6bnVsbG9wdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgK
aW5kZXggMzI2ZjgwYjg3Y2Q1Mjk5YmM3OWZmZGQ2Yjg2NDg3ZTk4YTFkODlkNS4uMzI0NmQ0MjQ0
ZDQ2YmUxOTRiMGVkODBkOThhYzYyMjQ2YWEzNzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEpOwogCiAg
ICAgc3RhdGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBJbnRTaXplJik7Ci0gICAgc3RhdGljIFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKE9w
dGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJik7CisgICAgc3RhdGljIFJlZjxJbWFnZUJpdG1h
cD4gY3JlYXRlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5J
bWFnZUJpdG1hcCgpOwogCkBAIC0xMDIsMzYgKzEwMiwzNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
cmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgJiYgbV9iYWNr
aW5nU3RvcmUtPnByZW11bHRpcGx5QWxwaGEoKTsgfQogICAgIGJvb2wgZm9yY2libHlQcmVtdWx0
aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgJiYgbV9iYWNraW5nU3Rv
cmUtPmZvcmNpYmx5UHJlbXVsdGlwbHlBbHBoYSgpOyB9CiAKLSAgICBPcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+IHRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQml0bWFwQmFja2luZz4gdGFrZUltYWdlQml0bWFwQmFja2luZygpOwogICAgIGJvb2wg
aXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tpbmdTdG9yZTsgfQogICAgIHZvaWQg
Y2xvc2UoKSB7IHRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKTsgfQogCi0gICAgc3RhdGljIFZlY3Rv
cjxPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiBkZXRhY2hCaXRtYXBzKFZlY3RvcjxSZWZQ
dHI8SW1hZ2VCaXRtYXA+PiYmKTsKKyAgICBzdGF0aWMgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPj4gZGV0YWNoQml0bWFwcyhWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFw
Pj4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEltYWdlQml0bWFwSW1hZ2VPYnNl
cnZlcjsKICAgICBmcmllbmQgY2xhc3MgUGVuZGluZ0ltYWdlQml0bWFwOwogCi0gICAgSW1hZ2VC
aXRtYXAoT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKKyAgICBJbWFnZUJpdG1hcChz
dGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGJvb2wg
b3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mLCBJbWFn
ZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3Rh
dGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50
UmVjdD4sIFByb21pc2UmJik7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MVmlkZW9FbGVt
ZW50PiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYm
KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICNlbmRpZgotICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4m
LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7Ci0g
ICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJ
bnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZv
aWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50PiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+
LCBQcm9taXNlJiYpOwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3Jl
ZW5DYW52YXM+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9t
aXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0
ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAjZW5kaWYKLSAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNlJiwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxC
bG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYm
KTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBSZWZQdHI8SW1hZ2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRS
ZWN0PiwgUHJvbWlzZSYmKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRt
YXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxBcnJheUJ1
ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFBy
b21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgQ2FudmFzQmFzZSYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6Om9wdGlvbmFs
PEludFJlY3Q+LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYm
LCBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+Jiwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYsIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7
CisgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBzdGQ6
Om9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZy
b21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3Ry
aW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwm
LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYm
KTsKIAotICAgIE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4gbV9iYWNraW5nU3RvcmU7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+IG1fYmFja2luZ1N0b3JlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBPcHRpb25zLmgKaW5kZXggNjFhMGIz
YTc0YjljZjcwNWNmZGIxZDkwMzBhZTgzNGYwODQxMTA1YS4uZDVmMDliN2QxZjllZTdiMzhhNzlm
YmM4MzlkODlkNDlmZWQxYzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwT3B0
aW9ucy5oCkBAIC0zOCw4ICszOCw4IEBAIHN0cnVjdCBJbWFnZUJpdG1hcE9wdGlvbnMgewogICAg
IE9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRpb24geyBPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAg
IFByZW11bHRpcGx5QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSB7IFByZW11bHRpcGx5QWxwaGE6OkRl
ZmF1bHQgfTsKICAgICBDb2xvclNwYWNlQ29udmVyc2lvbiBjb2xvclNwYWNlQ29udmVyc2lvbiB7
IENvbG9yU3BhY2VDb252ZXJzaW9uOjpEZWZhdWx0IH07Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHJlc2l6ZVdpZHRoOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiByZXNpemVIZWlnaHQ7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcmVzaXplV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gcmVzaXplSGVpZ2h0OwogICAgIFJlc2l6ZVF1YWxpdHkgcmVzaXplUXVhbGl0eSB7
IFJlc2l6ZVF1YWxpdHk6OkxvdyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmlu
ZGV4IDk3ODdiMDY3M2E4ZTQxMmMyMzc1ZDM0NjQ3ODEzZjVmZGVlNDQzYmYuLjkxNmRmYjBmMmI4
ZmUyOWU1ZjNmYzI4MTU2MzhjNjQwMWI1NzE0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBjb21wdXRlRGF0YVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gY2hl
Y2tlZERhdGFTaXplOwogfQogCi1QcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1
dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJlZGVm
aW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UpCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJ
bWFnZURhdGE6OmNvbXB1dGVDb2xvclNwYWNlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGlu
Z3M+IHNldHRpbmdzLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSkKIHsK
ICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVy
biAqc2V0dGluZ3MtPmNvbG9yU3BhY2U7CkBAIC01Niw3ICs1Niw3IEBAIFJlZjxJbWFnZURhdGE+
IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmZXIpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHBpeGVsQnVmZmVyLnNpemUoKSwgcGl4ZWxCdWZmZXIu
dGFrZURhdGEoKSwgKmNvbG9yU3BhY2UpKTsKIH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VE
YXRhOjpjcmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCitSZWZQdHI8
SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYm
IHBpeGVsQnVmZmVyKQogewogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtODMsNyArODMsNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JgogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNv
bG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cs
IFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VE
YXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQogewogICAgIEludFNpemUgc2l6ZShyb3dz
LCBwaXhlbHNQZXJSb3cpOwogICAgIGF1dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6
ZSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdl
RGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ24KICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxs
KCksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdl
RGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRh
U2V0dGluZ3M+IHNldHRpbmdzKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0
YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwpAQCAtMTIxLDcgKzEyMSw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywg
dW5zaWduZWQgc2gsIE9wdGlvbmFsCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFt
cGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNo
LCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCitFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5
dGVBcnJheSwgdW5zaWduZWQgc3csIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBzdGQ6Om9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBieXRlQXJyYXktPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAlIDQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCBjYTEyOGVkYmZlYWY4YmU3MjExNTlkZmUzNzVh
ZGFlZTI0MTc5N2MxLi5lMDc4ZWM0OGZhZWI4NzBkZDc2MGNiM2M2YTA3YzViZTNjZTk1ZTUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsK
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRl
KFBpeGVsQnVmZmVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VE
YXRhPiBjcmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0
ZShjb25zdCBJbnRTaXplJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQ
cmVkZWZpbmVkQ29sb3JTcGFjZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVu
c2lnbmVkIHBpeGVsc1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3Bh
Y2UsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5z
aWduZWQgc3csIHVuc2lnbmVkIHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVk
PiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBk
ZWZhdWx0Q29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBzdGQ6
Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1h
Z2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgc3RkOjpvcHRpb25hbDxJ
bWFnZURhdGFTZXR0aW5ncz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25P
cjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWdu
ZWQgc3csIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0
YVNldHRpbmdzPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VEYXRhKCk7CiAKLSAgICBz
dGF0aWMgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSA9
IFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCKTsKKyAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9y
U3BhY2UgY29tcHV0ZUNvbG9yU3BhY2Uoc3RkOjpvcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4s
IFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9y
U3BhY2U6OlNSR0IpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKaW5kZXgg
MWIwODEwMzNmM2ZhNzMzMjhlMGRmZGU2ZDk5ZTAyZTdmZGYyYjIzMy4uMmRkZDdlOTZiMmQyYWFi
MTk5MDk3MWVhMTE4NzQ3MDJkMzhiYTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGFTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
U2V0dGluZ3MuaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgSW1hZ2VEYXRhU2V0dGluZ3MgewotICAgIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNl
PiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNv
bG9yU3BhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAKaW5kZXggNGQzYTc4YTJjN2UzYjFjMzVlZTg3MmU2Y2RmYjgyZDAwODM2MGMwNC4u
MTUwZDUwODA1YjkwODZkNTIxZjBmNzcxNjBmMDQ5ZWMyOWFkZTVjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkYXRhTGlz
dE1heUhhdmVDaGFuZ2VkKCkKIHsKIH0KIAotT3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRUeXBlOjpm
aW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpCitzdGQ6Om9wdGlvbmFsPERl
Y2ltYWw+IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwm
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAwNzkzMGNjZTczZWQ5NTdmZWMwNjY0NTRiNGYw
YTE0YWJlNjhlNzdmLi5iYjgyY2Q4MDgxY2UwMDVmNzRhMWI0Y2MxMTJjMTljZWNkMTRiMDYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTM3NSw3ICszNzUsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgZGF0YUxpc3RNYXlI
YXZlQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RU
aWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNv
bkNvbGxlY3Rvci5jcHAKaW5kZXggMjgxOTI0Njk2NzZiNjU2NzcxODY4NzEwY2I3ZjUyZGFmZmE3
Y2NhYi4uOTcyM2FiNWU2ZTZlMTE2YzZiMTRkMGEzOGM4MDI2ZTg0OTczNDhhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYXV0
byBMaW5rSWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+
IGljb25UeXBlcykgLT4gVmVjdG8KICAgICAgICAgLy8gVGhpcyBpY29uIHNpemUgcGFyc2luZyBp
cyBhIGxpdHRsZSB3b25reSAtIGl0IG9ubHkgcGFyc2VzIHRoZSBmaXJzdAogICAgICAgICAvLyBw
YXJ0IG9mIHRoZSBzaXplLCAiNjB4NzAiIGJlY29tZXMgIjYwIi4gVGhpcyBpcyBmb3IgY29tcGF0
aWJpbGl0eSByZWFzb25zCiAgICAgICAgIC8vIGFuZCBpcyBwcm9iYWJseSBnb29kIGVub3VnaCBm
b3Igbm93LgotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gaWNvblNpemU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGljb25TaXplOwogICAgICAgICBpZiAobGlua0VsZW1lbnQu
c2l6ZXMoKS5sZW5ndGgoKSkKICAgICAgICAgICAgIGljb25TaXplID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGxpbmtFbGVtZW50LnNpemVzKCkuaXRlbSgwKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDZm
YjNmNmNhM2M5N2NhMzYyZTg2NWFmNGUyMzNlZDZkM2VhNzRlOGEuLjdhMjc1ZDdjMzE1NzViZmY4
MDk4YzJkOWIyNmVkOGVhZjM2ZWZhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG1fc2Vzc2lvbikKICAgICAgICAgICAgIG1fc2Vzc2lvbi0+bWV0YWRhdGFDaGFuZ2VkKG1ldGFk
YXRhKTsKICAgICB9Ci0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25h
bDxNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICB2b2lkIHBvc2l0aW9uU3Rh
dGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUp
IGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9zZXNzaW9uKQogICAgICAgICAgICAgbV9zZXNz
aW9uLT5wb3NpdGlvblN0YXRlQ2hhbmdlZChzdGF0ZSk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2
b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cAogfQogI2VuZGlmCiAKLU9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5m
bygpIGNvbnN0CiB7CiAgICAgYXV0byogcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2Uo
KTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPSBwYWdlICYm
ICFwYWdlLT5pc1Zpc2libGVBbmRBY3RpdmUoKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygp
IGNvbnN0CiAgICAgYXV0byogc2Vzc2lvbiA9IG1lZGlhU2Vzc2lvbigpOwogICAgIGF1dG8qIHNl
c3Npb25NZXRhZGF0YSA9IHNlc3Npb24gPyBzZXNzaW9uLT5tZXRhZGF0YSgpIDogbnVsbHB0cjsK
ICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhKSB7Ci0gICAgICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvQXJ0d29yaz4gYXJ0d29yazsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5m
b0FydHdvcms+IGFydHdvcms7CiAgICAgICAgIGlmIChzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtJ
bWFnZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1h
Z2UoKS0+ZGF0YSgpLCAiQW4gaW1hZ2UgbXVzdCBhbHdheXMgaGF2ZSBhc3NvY2lhdGVkIGRhdGEi
KTsKICAgICAgICAgICAgIGFydHdvcmsgPSBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9u
TWV0YWRhdGEtPmFydHdvcmtTcmMoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+
bWltZVR5cGUoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CkBA
IC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1ldGFkYXRhQ2hh
bmdlZChjb25zdCBSZWZQdHI8TWVkaWFNZXRhZGF0YT4mKQogICAgIGNsaWVudENoYXJhY3Rlcmlz
dGljc0NoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwb3NpdGlvblN0
YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JikgeyB9Cit2b2lk
IE1lZGlhRWxlbWVudFNlc3Npb246OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYpIHsgfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246OnBsYXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IGQ5M2ZkMGY4
N2Y5NmJkMmY4ODdiZGU2NGFlN2VlNTliYTQwYTNhNTQuLjNmOGE1ODgwZWJiZDE0ZDVmZjM5OTFh
NmI2MjNiMWI0ZjUwN2MyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oCkBAIC0xNzMsMTAgKzE3MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICB8fCB0eXBl
ID09IE1lZGlhVHlwZTo6VmlkZW9BdWRpbzsKICAgICB9CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5
aW5nSW5mbz4gbm93UGxheWluZ0luZm8oKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbygpIGNvbnN0IGZpbmFsOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkgZmluYWw7Ci0gICAg
T3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYVVzYWdlSW5mbzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1l
ZGlhVXNhZ2VJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVVzYWdlSW5mbzsgfQogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZpbmFsOwog
I2VuZGlmCiAgICAgdm9pZCBtZXRhZGF0YUNoYW5nZWQoY29uc3QgUmVmUHRyPE1lZGlhTWV0YWRh
dGE+Jik7Ci0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRp
YVBvc2l0aW9uU3RhdGU+Jik7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKTsKICAgICB2b2lkIHBsYXliYWNrU3Rh
dGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpOwogICAgIHZvaWQgYWN0aW9uSGFu
ZGxlcnNDaGFuZ2VkKCk7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxN
ZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsKICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3Ry
aWN0aW9uczsKIAotICAgIE9wdGlvbmFsPE1lZGlhVXNhZ2VJbmZvPiBtX21lZGlhVXNhZ2VJbmZv
OworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IG1fbWVkaWFVc2FnZUluZm87CiAK
ICAgICBib29sIG1fZWxlbWVudElzSGlkZGVuVW50aWxWaXNpYmxlSW5WaWV3cG9ydCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2VsZW1lbnRJc0hpZGRlbkJlY2F1c2VJdFdhc1JlbW92ZWRGcm9tRE9N
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggZGQ5
NDBlYjkzNmRhMDY3NDZiOWZkZTMyOWZiMTRiY2I5MTNlZGEzYy4uZDQyZWM4YTkyMDc3YTQwMWJk
ZWM4N2JhZjVmODJhZGFmMjhkNmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
b250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlw
ZS5jcHAKQEAgLTExNywxMiArMTE3LDEyIEBAIERlY2ltYWwgTW9udGhJbnB1dFR5cGU6OnBhcnNl
VG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWCiAgICAg
cmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUobW9udGhzKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNv
bXBvbmVudHM+IE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3Ry
aW5nVmlldyYgc291cmNlKSBjb25zdAorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gTW9u
dGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3Vy
Y2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ01vbnRo
KHNvdXJjZSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBNb250aElucHV0VHlwZTo6
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IE1vbnRoSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29t
cG9uZW50czo6ZnJvbU1vbnRoc1NpbmNlRXBvY2godmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
b250aElucHV0VHlwZS5oCmluZGV4IGQxZTVhMWFhOGMwNjg3MDFmYjllNTgzMzczYjk1ZmQ3NWU2
YTVlYzQuLmM2N2FkNWJiY2U2OWFhZmIzMDIwZDJlMGU3M2FiMzliYWU3MTUwY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAg
ICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91Ymxl
KSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJz
ZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9u
ZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNl
dDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNGU4ZmMyNmNjNzIxMjE3MWI2YWZl
NGVkMDMzYmIwNDhkNGEwNWNkMy4uYzQ5MDY2Mzg1NDY3MjI2MGVjNTliYTVmY2MxN2QwZjU5MzY3
ZjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVDb250ZXh0V2ViR0woUmVuZGVy
aW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIFdlYkdMCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKLUV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBP
ZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIFJl
bmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPj4mJiBhcmd1bWVudHMpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPE9mZnNjcmVl
blJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0ds
b2JhbE9iamVjdCYgc3RhdGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1f
ZGV0YWNoZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9tRG91
YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5RnJvbURvdWJsZShkb3VibGUgcXVhbGl0eU51bWJlcikKIHsKICAgICBpZiAoIShxdWFs
aXR5TnVtYmVyID49IDAgJiYgcXVhbGl0eU51bWJlciA8PSAxKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29u
dmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgog
ICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4o
V1RGTW92ZShibG9iKSk7CiB9CiAKLXZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpkaWREcmF3KGNvbnN0
IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QpCit2b2lkIE9mZnNjcmVlbkNhbnZhczo6ZGlkRHJh
dyhjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QpCiB7CiAgICAgY2xlYXJDb3Bp
ZWRJbWFnZSgpOwogICAgIHNjaGVkdWxlQ29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKaW5kZXggNjA3MmQ2NjlmNjVmYTdkOTc0ZTlk
Y2MzZTFkMDM3OGM1OTk4M2IwZC4uNjE3YWQwYzEwYTI1OTMzMThhYzM2NmQ1OGQwMjFiNDAxZjAy
MjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMjYsMTEgKzEy
NiwxMSBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdD
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKLSAgICBF
eGNlcHRpb25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVuZGVyaW5nQ29udGV4dFR5cGUsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CisgICAgRXhjZXB0aW9uT3I8c3Rk
OjpvcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gZ2V0Q29udGV4dChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgUmVuZGVyaW5nQ29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+PiYmIGFyZ3VtZW50cyk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdl
Qml0bWFwPj4gdHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7CiAgICAgdm9pZCBjb252ZXJ0VG9CbG9i
KEltYWdlRW5jb2RlT3B0aW9ucyYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZv
aWQgZGlkRHJhdyhjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBk
aWREcmF3KGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYpIGZpbmFsOwogCiAgICAgSW1h
Z2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdl
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4
IDRmZjUwY2IzOWVkNGYzMzI3ODhkOGQ5NWRhOTA1MDgzZjE0YTU4ZjguLjQ3NmUzMzY1NDgwOWQx
YWZjYjc0ZDQ3ZjAyOGZiZDk5MGZmNGE1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6dXBkYXRl
VGlja01hcmtWYWx1ZXMoKQogICAgIHN0ZDo6c29ydChtX3RpY2tNYXJrVmFsdWVzLmJlZ2luKCks
IG1fdGlja01hcmtWYWx1ZXMuZW5kKCkpOwogfQogCi1PcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlu
cHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQor
c3RkOjpvcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewogICAgIHVwZGF0ZVRpY2tNYXJrVmFsdWVz
KCk7CiAgICAgaWYgKCFtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSkKQEAgLTQyNCw4ICs0MjQsOCBA
QCBPcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBzdGQ6
Om1ha2Vfb3B0aW9uYWwobV90aWNrTWFya1ZhbHVlc1ttaWRkbGUgLSAxXSkgOiBzdGQ6Om51bGxv
cHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlj
a01hcmtWYWx1ZXMuc2l6ZSgpID8gc3RkOjptYWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNb
bWlkZGxlXSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9z
ZXN0TGVmdCA9IG1pZGRsZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21p
ZGRsZSAtIDFdKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNs
b3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/IHN0ZDo6bWFr
ZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFjbG9zZXN0TGVmdCkKICAgICAgICAgcmV0dXJuIGNsb3Nlc3RSaWdodDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCA1ZjdjYTc4YjAxZDJlNjNiMTliNjhmOTY1
MTgzYTM3NzU4ZjNjZjMyLi43M2VkOTRjZmUxMzEwYWZiMjkxYjBmMWVkNjU3OWIzNGU2NDAzNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC02OSw3ICs2OSw3IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdm9pZCBkYXRhTGlzdE1h
eUhhdmVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwot
ICAgIE9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNp
bWFsJikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tN
YXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpIGZpbmFsOwogCiAgICAgYm9vbCBtX3RpY2tNYXJrVmFs
dWVzRGlydHkgeyB0cnVlIH07CiAgICAgVmVjdG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCA3MDFhYmIwMDBkZGUwODc3
Yjc3ZGZiNmU3OWEzNjlkNTVmNzdiOWZlLi45YjkwNTA1OTBmNWVmNThhZjczOGYyODk5NTM5NmVj
NzkyMjY4OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTkyLDEy
ICs5MiwxMiBAQCBTdGVwUmFuZ2UgVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0
ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShz
dGVwQmFzZSwgUmFuZ2VMaW1pdGF0aW9uczo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAs
IHRpbWVTdGVwRGVzY3JpcHRpb24pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gVGlt
ZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJj
ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnBh
cnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2UpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ1RpbWUoc291cmNlKTsKIH0KIAot
T3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IFRpbWVJbnB1dFR5cGU6OnNldE1pbGxpc2Vjb25kVG9E
YXRlQ29tcG9uZW50cyhkb3VibGUgdmFsdWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBUaW1lSW5wdXRUeXBlOjpzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91
YmxlIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxp
c2Vjb25kc1NpbmNlTWlkbmlnaHQodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5
cGUuaAppbmRleCBhM2JlZDcxMWRlZDhlZDJmNGNjMjU4ZjhmODViNTkyNTFkNjY2ZGVlLi42MWRj
NmZmYTZmN2RjZTk0ZDI3NDNkNjcwOTg2ODZkNDdiN2IxMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVJbnB1dFR5cGUuaApAQCAtNDYsOCArNDYsOCBAQCBwcml2YXRlOgogICAgIERhdGVDb21wb25l
bnRzVHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERlY2ltYWwgZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVD
b21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBzZXRNaWxsaXNlY29uZFRv
RGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IHNldE1p
bGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBp
c1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZhbGlkYXRpb25SZXN1bHRzPikg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRl
eCAxZTcxODcxNWRjODA0OWE5MmU2YmRhMjhjZDcxMGI4YjU4YjczMjkyLi5iYWUxNGQ0OGM1ODhm
NzQ0N2JlNzFiODczYzZjNDRjMjk4NjgyNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVj
b21wb3NpdGlvbi5jcHAKQEAgLTE2OCwxNiArMTY4LDE2IEBAIFN0cmluZyBVUkxEZWNvbXBvc2l0
aW9uOjpwb3J0KCkgY29uc3QKIH0KIAogLy8gT3V0ZXIgb3B0aW9uYWwgaXMgd2hldGhlciB3ZSBj
b3VsZCBwYXJzZSBhdCBhbGwuIElubmVyIG9wdGlvbmFsIGlzICJubyBwb3J0IHNwZWNpZmllZCIu
Ci1zdGF0aWMgT3B0aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+PiBwYXJzZVBvcnQoU3RyaW5nVmll
dyBzdHJpbmcsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90Pj4gcGFyc2VQb3J0KFN0cmluZ1ZpZXcgc3RyaW5nLCBTdHJpbmdW
aWV3IHByb3RvY29sKQogewogICAgIGF1dG8gZGlnaXRzT25seSA9IHN0cmluZy5sZWZ0KGNvdW50
QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAgICAgaWYgKGRpZ2l0c09ubHkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIGF1
dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oZGlnaXRzT25seSk7CiAgICAgaWYgKCFw
b3J0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8dWludDE2X3Q+IHsgc3RkOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIHJldHVybiB7IHsgKnBvcnQgfSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKaW5kZXggMGM4OGEw
NWU3ZGI0NDEwZWFjM2QwYzUyZjVkOThkOTI1NjE3MjJlOS4uM2NmNGY0OGIxOTkyYmY2NTMwYzkx
MGQ4MDZmNjQ3Y2U2ODMxN2M3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxT
ZWFyY2hQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1z
LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9t
QXNzb2NpYXRlZFVSTCgpCiAgICAgbV9wYWlycyA9IHNlYXJjaC5zdGFydHNXaXRoKCc/JykgPyBX
VEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vi
c3RyaW5nKDEpKSA6IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHNlYXJjaCk7
CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2Vh
cmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQ
YWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCiB7
CiAgICAgYXV0byYgcGFpcnMgPSBtX3RhcmdldC0+cGFpcnMoKTsKICAgICBpZiAobV9pbmRleCA+
PSBwYWlycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJj
aFBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaAppbmRleCBh
YzU2NDZhNTE2NWYxMmYzNjBiM2ZkNDNjYzU3MGVlZGE0OTMzMmIyLi5hZWE2NDU3NjBlOWJjNTNh
ZjlmOGY3MjRlMGVlYzlkMjUxMTg4NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFNlYXJjaFBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0ZXJhdG9yKFVSTFNlYXJjaFBhcmFtcyYpOwot
ICAgICAgICBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQo
KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxVUkxTZWFyY2hQYXJhbXM+
IG1fdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKaW5kZXggYjU1MjAx
OWM4MTkzYWQ2N2ZjMDFlMjY5ODEzY2RkN2EzOTQwMmM3MS4uZGQ2MmM3OTk1ODU4ZjA2ODkyNTVh
YjVkOTAyMDMxMzE2NzQ4NDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVr
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3Bw
CkBAIC02OCwxMiArNjgsMTIgQEAgU3RlcFJhbmdlIFdlZWtJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogICAgIHJldHVybiBT
dGVwUmFuZ2Uoc3RlcEJhc2UsIFJhbmdlTGltaXRhdGlvbnM6OlZhbGlkLCBtaW5pbXVtLCBtYXhp
bXVtLCBzdGVwLCB3ZWVrU3RlcERlc2NyaXB0aW9uKTsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBv
bmVudHM+IFdlZWtJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmdW
aWV3JiBzb3VyY2UpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBXZWVrSW5w
dXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nVmlldyYgc291cmNlKSBj
b25zdAogewogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6ZnJvbVBhcnNpbmdXZWVrKHNvdXJj
ZSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBXZWVrSW5wdXRUeXBlOjpzZXRNaWxs
aXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlIHZhbHVlKSBjb25zdAorc3RkOjpvcHRpb25h
bDxEYXRlQ29tcG9uZW50cz4gV2Vla0lucHV0VHlwZTo6c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21w
b25lbnRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6
OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayh2YWx1ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IDVkY2IxMDEyYjI3NWQ3MDQ5MWFmYzFiNzYwYjZlMmRh
NmI4YmExNDguLmRjYzViYzQzZDQwNzg3ZjE1NzE5Njg3NzZiODhmYWI1OTJjYzU2ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00OCw4ICs0OCw4IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgRGF0ZUNvbXBvbmVudHNUeXBlIGRhdGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3Rl
cFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3Qg
U3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPERhdGVDb21wb25lbnRz
PiBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBwYXJzZVRvRGF0ZUNvbXBvbmVudHMo
Y29uc3QgU3RyaW5nVmlldyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RGF0
ZUNvbXBvbmVudHM+IHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc1ZhbGlkRm9ybWF0KE9wdGlvblNldDxEYXRlVGltZUZvcm1hdFZh
bGlkYXRpb25SZXN1bHRzPikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlNzU4MmFi
MzliYjI3ZDNkZmUxNDJjZmE1MjEzY2IwODhjNzI5ZTFlLi5kNWIwNDkzOGQyZmVmYWU3NGE3NzFk
MTNjM2M4MWMxNTRlMjBiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE4MSwxMiArMTgxLDEyIEBA
IENhbnZhc0RpcmVjdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIHRvVGV4dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gVGV4
dERpcmVjdGlvbjo6UlRMID8gQ2FudmFzRGlyZWN0aW9uOjpSdGwgOiBDYW52YXNEaXJlY3Rpb246
Okx0cjsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRo
KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7
CiAgICAgZHJhd1RleHRJbnRlcm5hbCh0ZXh0LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7CiB9CiAK
LXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBk
cmF3VGV4dEludGVybmFsKHRleHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CkBAIC0yMjQs
NyArMjI0LDcgQEAgYXV0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+
IGNvbnN0IEZvbnRQcm94eSoKICAgICByZXR1cm4gJnN0YXRlKCkuZm9udDsKIH0KIAotdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0
aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2Fu
dmFzQmFzZSgpKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApp
bmRleCA0OWZlZTJlOTEzZjcwMmUxZmJjN2FjMDdjMWQ3OTkwNzU2OWVlNTcwLi45MzA3NGVmOGUw
ZTQ0MGEyZmE2NDZhZTE0MjcwZmIyYmUwMDdkOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtNDksOCArNDks
OCBAQCBwdWJsaWM6CiAKICAgICBDYW52YXNEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
T3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lkIHN0cm9r
ZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6
Om51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KTsKIAogcHJpdmF0ZToKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9p
ZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
Ym9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAg
IHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0
IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdm9pZCBkcmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmLCBF
bGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggZDc5MGM2MmJlZGIyY2E4ZmQ4
MDk0ZDk2YTBhZDE3MjI0YmQ3YzUyMi4uYzdlMWNiMmNiNWMwZDE4YWE4MWI1NmJjMTczNTM4ZTIz
MmFjMGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc3RvcmUoKQogICAgICAgICByZXR1cm47
CiAgICAgbV9wYXRoLnRyYW5zZm9ybShzdGF0ZSgpLnRyYW5zZm9ybSk7CiAgICAgbV9zdGF0ZVN0
YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBpZiAoT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZl
cnNlID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFs
PEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKSkK
ICAgICAgICAgbV9wYXRoLnRyYW5zZm9ybShpbnZlcnNlLnZhbHVlKCkpOwogICAgIEdyYXBoaWNz
Q29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtODgwLDcgKzg4
MCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0o
KQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gPSB0cnVlOwog
fQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFN0cm9rZUNvbG9yKGNv
bnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwg
c3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpCiB7CiAgICAgaWYgKGFscGhhKSB7CiAgICAgICAg
IGlmIChzdGQ6OmlzbmFuKCphbHBoYSkpCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTdHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBm
bG9hdCBiLCBmbG8KICAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShjb2xvcikpOwogfQog
Ci12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEZpbGxDb2xvcihjb25zdCBT
dHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEpIHsKICAgICAgICAgaWYgKHN0
ZDo6aXNuYW4oKmFscGhhKSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0
aCwgZmxvCiAgICAgfQogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNl
dFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJp
bmcmIGNvbG9yU3RyaW5nLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEpCit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEgJiYgc3RkOjppc25hbigqYWxwaGEpKQogICAgICAg
ICByZXR1cm47CkBAIC0yMDYxLDcgKzIwNjEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52YXMoKQogICAgIGRpZERyYXcoYmFja2luZ1N0b3Jl
Qm91bmRzKCksIERpZERyYXdPcHRpb246OkFwcGx5Q2xpcCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyhPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QsIE9w
dGlvblNldDxEaWREcmF3T3B0aW9uPiBvcHRpb25zKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkaWREcmF3KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25T
ZXQ8RGlkRHJhd09wdGlvbj4gb3B0aW9ucykKIHsKICAgICBpZiAoIWRyYXdpbmdDb250ZXh0KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIxNjksNyArMjE2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
bWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEo
SW1hZ2VECiAgICAgcmV0dXJuIG5ld0ltYWdlRGF0YTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShp
bnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25z
dAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgc3RkOjpvcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwpAQCAtMjE4MCw3ICsyMTgw
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3cKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8
SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gs
IGludCBzeSwgaW50IHN3LCBpbnQgc2gsIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+
IHNldHRpbmdzKSBjb25zdAogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKQEAgLTIzNjAsNyArMjM2MCw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RGlyZWN0aW9uKERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiAgICAgbW9kaWZpYWJsZVN0YXRlKCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogfQog
Ci1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNhbkRyYXdUZXh0KGZsb2F0IHgs
IGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQorYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYW5EcmF3VGV4dChmbG9hdCB4LCBmbG9hdCB5LCBi
b29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGlmICghZm9u
dFByb3h5KCktPnJlYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0MTcsNyAr
MjQxNyw3IEBAIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpub3JtYWxpemVT
cGFjZXMoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUoY2hhclZlY3RvcikpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9v
bCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBpZiAoIWNhbkRy
YXdUZXh0KHgsIHksIGZpbGwsIG1heFdpZHRoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQyOCw3
ICsyNDI4LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHkKICAgICBkcmF3VGV4dFVuY2hlY2tl
ZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBtYXhXaWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgp
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpv
cHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0
KCk7CiAgICAgYXV0byYgZm9udFByb3h5ID0gKnRoaXMtPmZvbnRQcm94eSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5oCmluZGV4IDBjOWVkMWNlOTVhNzg2YmQ4YmExOWRiMDI5Zjg5M2QzMWE0MmRjOTAuLjU1
M2Q4ZTlmN2MzYTgwYjZlZWE2Y2QxNzY1ZTdhNTgwNGFkNzU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmgKQEAgLTE0MSwxMSArMTQxLDExIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0JiYpOwogICAgIHZvaWQgcmVzZXRUcmFuc2Zvcm0o
KTsKIAotICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9u
YWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHNldFN0cm9rZUNvbG9y
KGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQg
YWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcm
IGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
c2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFs
cGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2
ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwg
ZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmaWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KTsKICAgICB2b2lkIHN0cm9rZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCk7CiAKLSAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIE9w
dGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRTaGFkb3co
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xv
ciA9IFN0cmluZygpLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTaGFk
b3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQg
ZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKQEAgLTE5NCw4ICsxOTQsOCBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENhbnZhc0lt
YWdlU291cmNlJiYsIGNvbnN0IFN0cmluZyYgcmVwZXRpdGlvbik7CiAKICAgICBFeGNlcHRpb25P
cjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YSYpIGNvbnN0OwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pIGNvbnN0OwotICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ksIGludCBz
dywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pIGNvbnN0OworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPikgY29uc3Q7CisgICAgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IGdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3
LCBpbnQgc2gsIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2
b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEmLCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBw
dXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBk
aXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQgZGlydHlIZWlnaHQpOwogCkBAIC0zMDIsOSArMzAy
LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIFN0cmluZyBub3JtYWxpemVTcGFjZXMoY29u
c3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6
Om51bGxvcHQpOwotICAgIGJvb2wgY2FuRHJhd1RleHQoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBm
aWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQg
ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wg
ZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgYm9v
bCBjYW5EcmF3VGV4dChmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0VW5jaGVj
a2VkKGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIFJlZjxUZXh0TWV0
cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuJik7CiAgICAgUmVmPFRleHRN
ZXRyaWNzPiBtZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCk7CkBAIC0zMjIs
NyArMzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQXBwbHlTaGFkb3cgPSAxIDw8IDEsCiAgICAg
ICAgIEFwcGx5Q2xpcCA9IDEgPDwgMiwKICAgICB9OwotICAgIHZvaWQgZGlkRHJhdyhPcHRpb25h
bDxGbG9hdFJlY3Q+LCBPcHRpb25TZXQ8RGlkRHJhd09wdGlvbj4gPSB7IERpZERyYXdPcHRpb246
OkFwcGx5VHJhbnNmb3JtLCBEaWREcmF3T3B0aW9uOjpBcHBseVNoYWRvdywgRGlkRHJhd09wdGlv
bjo6QXBwbHlDbGlwIH0pOworICAgIHZvaWQgZGlkRHJhdyhzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4sIE9wdGlvblNldDxEaWREcmF3T3B0aW9uPiA9IHsgRGlkRHJhd09wdGlvbjo6QXBwbHlUcmFu
c2Zvcm0sIERpZERyYXdPcHRpb246OkFwcGx5U2hhZG93LCBEaWREcmF3T3B0aW9uOjpBcHBseUNs
aXAgfSk7CiAgICAgdm9pZCBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAKICAgICB2b2lkIHBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCAwYWNmODk5ODU0M2EwMTBhZTA4MGRkMjNkZWUzMjVh
N2FjM2VlNDkwLi5hMjgzNjNmOTJiODE3NWZkYTlkYWQ3ODdjYWU4OTVlODkxN2VjNmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIVdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SW52YWxpZD4obV9zdHlsZSk7IH0KICAgICBib29sIGlzQ3VycmVudENvbG9y
KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDdXJyZW50Q29sb3I+KG1f
c3R5bGUpOyB9Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJl
dHVybiBXVEY6OmdldDxDdXJyZW50Q29sb3I+KG1fc3R5bGUpLm92ZXJyaWRlQWxwaGE7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKCkgY29uc3QgeyByZXR1cm4gV1RG
OjpnZXQ8Q3VycmVudENvbG9yPihtX3N0eWxlKS5vdmVycmlkZUFscGhhOyB9CiAKICAgICBTdHJp
bmcgY29sb3IoKSBjb25zdDsKICAgICBSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGNhbnZhc0dyYWRp
ZW50KCkgY29uc3Q7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEludmFs
aWQgeyB9OwogCiAgICAgc3RydWN0IEN1cnJlbnRDb2xvciB7Ci0gICAgICAgIE9wdGlvbmFsPGZs
b2F0PiBvdmVycmlkZUFscGhhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlk
ZUFscGhhOwogICAgIH07CiAKICAgICBDYW52YXNTdHlsZShDdXJyZW50Q29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggYmFhZTMyYjIwNDlkN2Y4ZDUzZDYzZmFmN2Uw
YWQ2MTMwY2Y1NjNiNi4uMTRkYTAwOWE4NDI2ZWQ5NGQwMmE5MTBjMzI2OTAxMTAzNTdkZGJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBh
dXRvIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9udFByb3h5KCkgLT4gY29u
c3QgRm9udFByb3h5KiB7CiAgICAgcmV0dXJuICZzdGF0ZSgpLmZvbnQ7CiB9CiAKLXZvaWQgT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKK3ZvaWQgT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewog
ICAgIGRyYXdUZXh0KHRleHQsIHgsIHksIHRydWUsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBPZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIE9m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQog
ewogICAgIGRyYXdUZXh0KHRleHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDQxM2RlOTIyOTk3OGU4ZjZlYWUxOGQ5MTk2MGZiYjY4
YzQyMGU2NGEuLjhkODRmMWQ4NjQ4ZGMyNjNiNjJkMDc0NzNlYTc4NDE0ZDc2NmE0MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcmKTsKICAgICBDYW52YXNEaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
T3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGZpbGxU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1h
eFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKaW5kZXggNGIzYTQxOTY4ZTM1
NDI5Njk2NjY4MDEyMDM5ZjFmZTcxYWY1MDExMy4uYTU1YTBjYWQwMzE4NDYzYzVkNTZjZDEzYmM1
YjlhZDgzZDMxNTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJl
ZGVmaW5lZENvbG9yU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKLU9w
dGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKK3N0ZDo6b3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlKQogewogICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3Bh
Y2U6OlNSR0I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENv
bG9yU3BhY2UuaAppbmRleCAyYTUzYjA1MzJkNDJhM2MyOWYyMzc3YjA5YjdiYjAwMDFkZjk3YzQ2
Li5mODFlZGYwNjdjMjhmMjdkNmU3NDRkMWE2OGY2ZDA3OWU2YjYzYTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKQEAgLTQwLDcg
KzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3Bh
Y2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitzdGQ6Om9wdGlvbmFsPFByZWRlZmlu
ZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNDQ3YzEyMGFkMTQyOGU2MzljYmMyNTU4
ZmM2M2ZkOWE4Y2UyMWVjNS4uMmIxYjBmMWVlY2I1MTUzZWViNTI5YmM3OTQ5Y2FhM2EzYTg1NzA3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IFdURk1vdmUoZGF0YSkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgT3B0aW9u
YWw8VGV4SW1hZ2VTb3VyY2U+IGRhdGEpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3Rk
OjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4gZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAg
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGkKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgV1RGTW92ZShzcmNEYXRhKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBPcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBkYXRh
KQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
VGV4SW1hZ2VTb3VyY2U+JiYgZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjUxNiw3ICsyNTE2LDcgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGkKICAgICB9CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG5hbWVzKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8
R0NHTHVpbnQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKICAgICBp
ZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm1JbmRpY2VzIiwgJnBy
b2dyYW0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjcwOCw3ICsyNzA4LDcg
QEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBib29s
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShH
Q0dMZW51bSB0eXBlLCB1bnNpZwogICAgIGF1dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVy
LT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKIAotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBtYXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4
SW5kZXgodHlwZSk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbWF4SW5kZXggPSBlbGVt
ZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUpOwogICAgIGlmICghbWF4SW5k
ZXgpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSBpbmRleCBpbiB0aGUgZW50aXJl
IGJ1ZmZlciBmb3IgdGhlIGdpdmVuIHR5cGUgb2YgaW5kZXguCiAgICAgICAgIHN3aXRjaCAodHlw
ZSkgewpAQCAtMzQzNCw3ICszNDM0LDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2
YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW4KIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+Ci1PcHRpb25hbDxH
Q0dMU3Bhbjxjb25zdCBUPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDbGVhckJ1
ZmZlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGJ1ZmZlciwgVHlwZWRMaXN0
PFR5cGVkQXJyYXlUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpCitzdGQ6Om9w
dGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBU
eXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCkK
IHsKICAgICBDaGVja2VkPEdDR0xzaXplaSwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTaXplKHZh
bHVlcy5sZW5ndGgoKSk7CiAgICAgY2hlY2tlZFNpemUgLT0gc3JjT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDgwZTExZGJmNTA3YTJmY2VkYmNjZTRjODIxMmMxNjE0Y2Y5YmM1ZGQuLmEyYjAyZjNmMmQ3MDEy
MGNjZDY3MzAwMjdlZTYzMzBkMTlkNmIzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gTXVzdCBvdmVycmlkZSB0aGUgV2ViR0wgMS4wIHNpZ25hdHVyZXMgdG8g
YWRkIGV4dHJhIHZhbGlkYXRpb24uCiAgICAgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IE9wdGlvbmFsPFRleEltYWdlU291cmNlPikgb3ZlcnJpZGU7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9u
YWw8VGV4SW1hZ2VTb3VyY2U+KSBvdmVycmlkZTsKICAgICAvLyBXZWJHTCAyLjAgZW50cnkgcG9p
bnRzOgogICAgIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIFRleEltYWdlU291cmNlJiYpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIHRvIGFk
ZCBleHRyYSB2YWxpZGF0aW9uLgogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJikgb3ZlcnJpZGU7Ci0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKSBvdmVycmlkZTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJikgb3ZlcnJpZGU7CiAgICAg
Ly8gV2ViR0wgMi4wIGVudHJ5IHBvaW50czoKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgcGJvT2Zmc2V0KTsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBUZXhJbWFnZVNvdXJjZSYmKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kQnVmZmVyQmFzZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBXZWJHTEJ1ZmZlciopOwogICAgIHZvaWQgYmluZEJ1
ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiwg
R0NHTGludDY0IG9mZnNldCwgR0NHTGludDY0IHNpemUpOwogICAgIFdlYkdMQW55IGdldEluZGV4
ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCk7Ci0gICAgT3B0aW9u
YWw8VmVjdG9yPEdDR0x1aW50Pj4gZ2V0VW5pZm9ybUluZGljZXMoV2ViR0xQcm9ncmFtJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcyk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8R0NHTHVpbnQ+PiBnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKTsKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3Jt
cyhXZWJHTFByb2dyYW0mLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywg
R0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFdlYkdM
UHJvZ3JhbSYsIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSk7CiAgICAgV2ViR0xBbnkg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIHZl
cnRleEFycmF5KTsKICAgICAKICAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIFdlYkdMQW55IGdldFBhcmFtZXRl
cihHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoZSBXZWJH
TCAxLjAgc2lnbmF0dXJlIGluIG9yZGVyIHRvIGFkZCBleHRyYSB2YWxpZGF0aW9uLgpAQCAtMjkz
LDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKICAgICBib29sIHZh
bGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIGNhcCkg
ZmluYWw7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZWRBcnJheVR5cGU+
Ci0gICAgT3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSBidWZmZXIsIFR5cGVkTGlzdDxUeXBlZEFy
cmF5VHlwZSwgVD4mIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0NHTGVudW0gYnVmZmVyLCBUeXBlZExpc3Q8VHlwZWRBcnJheVR5cGUsIFQ+
JiB2YWx1ZXMsIEdDR0x1aW50IHNyY09mZnNldCk7CiAgICAgYm9vbCB2YWxpZGF0ZUZyYW1lYnVm
ZmVyVGFyZ2V0KEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xGcmFtZWJ1ZmZlciog
Z2V0RnJhbWVidWZmZXJCaW5kaW5nKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAgICAgV2ViR0xG
cmFtZWJ1ZmZlciogZ2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCmluZGV4IDNlMzRhMThmN2Y2ZjY5NGU0
Y2FmZWU1ZTExNTM3ZmY1NDA1NmFlMGQuLjNlMzJmMTUxNjY1Y2JmYTg0MGM1ZjVkMjMxZTg5Yjg1
ZTZkMDQxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBHQ0dMc2l6ZWlwdHIgV2ViR0xCdWZmZXI6OmJ5dGVMZW5ndGgo
KSBjb25zdAogICAgIHJldHVybiBtX2J5dGVMZW5ndGg7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVk
PiBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSkKK3N0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IFdlYkdMQnVmZmVyOjpnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0
eXBlKQogewogICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX21heEluZGV4Q2FjaGUpIHsKICAgICAg
ICAgaWYgKGNhY2hlLnR5cGUgPT0gdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oCmluZGV4IDFlNmJhNzg2MzlmZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQu
LjM0OTBhMWRkM2Q2ODI0ODUzZmMxNGViMjVjZmIxM2U5YjlkYjBhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyOyB9CiAKICAgICAvLyBHZXRzIHRoZSBj
YWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZSBpZiBvbmUgaGFzIGJlZW4gc2V0Lgot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBnZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0
eXBlKTsKICAgICAvLyBTZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlw
ZS4KICAgICB2b2lkIHNldENhY2hlZE1heEluZGV4KEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkIHZh
bHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKaW5kZXggZmE2NzU4M2RlM2EyMDZiMTA4Y2E0MDI3NjlhN2JjZTU2ZDJk
MGI1ZC4uNGE1Mjc2NjAzZmI5ZTE2ZmYwYjJiZDlhY2NiNDUzNjgwZDVhNjQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CkBAIC0yMTcsNyArMjE3LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U3VwcG9ydGVkRXh0ZW5zaW9ucygpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00MDMsNyAr
NDAzLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZ24KICAgICBhdXRvIGJ1ZmZlciA9IGVsZW1l
bnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7
CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXIt
PmdldENhY2hlZE1heEluZGV4KHR5cGUpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1h
eEluZGV4ID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKICAg
ICBpZiAoIW1heEluZGV4KSB7CiAgICAgICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXgg
aW4gdGhlIGVudGlyZSBidWZmZXIgZm9yIHRoZSBnaXZlbiB0eXBlIG9mIGluZGV4LgogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYTcxMGEwZjFlNjI5ODJlYjIwYzA3OTU4OWZlNjU0
MmZlZWVjZmZmZS4uMDFkZTczODdhZTUxODM5ODliNmEzZWI3ODVkMmIxNjdkM2I4MWU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpIGZpbmFsOwogCiAgICAgV2ViR0xBbnkgZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDFjYWYwNDZhNTEwNTRmOTcwOTQwM2NlNmVjYzZhM2QzNWRmZGI5MDYuLmNkZTdlODBjMmQ2OGI5
OGE4NGNmM2MxYTNmZDhhMTdkNzgwNDhkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMjM2LDcg
KzEyMzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCkKICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCpiYXNlLmJ1ZmZlcigpKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIo
KQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MDIs
NyArMTYwMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQ0dMCiAgICAgfQogfQogCi12b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBPcHRp
b25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgc3RkOjpv
cHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4NjYs
NyArMjg2Niw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtCiAgICAgcmV0dXJuIFdlYkdMQWN0
aXZlSW5mbzo6Y3JlYXRlKGluZm8ubmFtZSwgaW5mby50eXBlLCBpbmZvLnNpemUpOwogfQogCi1P
cHRpb25hbDxWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhXZWJHTFByb2dyYW0mIHByb2dyYW0pCitzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdldEF0dGFjaGVkU2hhZGVycyIsICZw
cm9ncmFtKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5MzgsNyArMjkzOCw3
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3N0ZDo6b3B0aW9u
YWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
Q29udGV4dEF0dHJpYnV0ZXMoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00Mjc1LDcgKzQyNzUsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aAogICAgIC8vIEFOR0xFIHdpbGwgdmFsaWRhdGUgdGhlIHJlYWRi
YWNrIGZyb20gdGhlIGZyYW1lYnVmZmVyIGFjY29yZGluZwogICAgIC8vIHRvIFdlYkdMJ3MgcmVz
dHJpY3Rpb25zLiBBdCB0aGlzIGxldmVsLCBqdXN0IHZhbGlkYXRlIHRoZSB0eXBlCiAgICAgLy8g
b2YgdGhlIHJlYWRiYWNrIGFnYWluc3QgdGhlIHR5cGVkIGFycmF5J3MgdHlwZS4KLSAgICBpZiAo
IXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKCJyZWFkUGl4ZWxzIiwgdHlwZSwgT3B0aW9uYWw8SlND
OjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLmdldFR5cGUoKSkpKQorICAgIGlmICghdmFsaWRhdGVB
cnJheUJ1ZmZlclR5cGUoInJlYWRQaXhlbHMiLCB0eXBlLCBzdGQ6Om9wdGlvbmFsPEpTQzo6VHlw
ZWRBcnJheVR5cGU+KHBpeGVscy5nZXRUeXBlKCkpKSkKICAgICAgICAgcmV0dXJuOwogI2Vsc2UK
ICAgICBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCA9IDA7CkBAIC01MjM1LDcgKzUyMzUsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQwogICAgIHRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVy
KFRleEltYWdlRnVuY3Rpb25JRDo6VGV4U3ViSW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgMCwgd2lk
dGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCBXVEZN
b3ZlKHBpeGVscyksIE51bGxOb3RBbGxvd2VkLCAwKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmIHNvdXJj
ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlv
bmFsPFRleEltYWdlU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNTI0OCw3ICs1MjQ4LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0wKICAgICByZXR1cm4gdGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4
SW1hZ2VGdW5jdGlvbklEOjpUZXhTdWJJbWFnZTJELCB0YXJnZXQsIGxldmVsLCAwLCAwLCBmb3Jt
YXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHNlbnRpbmVsRW1wdHlSZWN0KCksIDEsIDAs
IFdURk1vdmUoKnNvdXJjZSkpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVu
dW0gdHlwZSwgT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4gYXJyYXlUeXBlKQorYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8SlNDOjpUeXBl
ZEFycmF5VHlwZT4gYXJyYXlUeXBlKQogewogI2RlZmluZSBUWVBFX1ZBTElEQVRJT05fQ0FTRShh
cnJheVR5cGVNYWNybykgaWYgKGFycmF5VHlwZSAmJiBhcnJheVR5cGUudmFsdWUoKSAhPSBKU0M6
OmFycmF5VHlwZU1hY3JvKSB7IFwKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiQXJyYXlCdWZm
ZXJWaWV3IG5vdCAiICNhcnJheVR5cGVNYWNybyk7IFwKQEAgLTUzMTQsNyArNTMxNCw3IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIFRlCiAKICAgICBpZiAoIXZhbGlkYXRlU2V0dGFibGVUZXhJbnRl
cm5hbEZvcm1hdChmdW5jdGlvbk5hbWUsIGZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4
ZWxzID8gT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLT5nZXRUeXBlKCkpIDog
c3RkOjpudWxsb3B0KSkKKyAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9u
TmFtZSwgdHlwZSwgcGl4ZWxzID8gc3RkOjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPihw
aXhlbHMtPmdldFR5cGUoKSkgOiBzdGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzUmVxdWlyZWQsIHNraXBCeXRlczsKQEAgLTU3MjQs
NyArNTcyNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAjZW5kaWYKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiBzb3VyY2Up
CitFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNv
dXJjZT4gc291cmNlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CkBAIC03MTcwLDcgKzcxNzAsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IEdDRwogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGVkTGlzdFR5cGU+Ci1P
cHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCitz
dGQ6Om9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYgdmFsdWVzLCBHQ0dMc2l6
ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKICAgICBpZiAoIXZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24pKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNzIwMiwxMyArNzIwMiwxMyBAQCBPcHRp
b25hbDxHQ0dMU3Bhbjxjb25zdCBUPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYQogfQogCiB0ZW1wbGF0ZQotT3B0aW9uYWw8R0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzPEdDR0x1aW50LCBVaW50MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgVHlwZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD4mIHZhbHVlcywgR0NHTHNp
emVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpOworc3RkOjpvcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnM8R0NHTHVpbnQs
IFVpbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8VWludDMy
QXJyYXksIHVpbnQzMl90PiYgdmFsdWVzLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CiAKIHRlbXBsYXRlCi1PcHRpb25h
bDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVl
cywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpOworc3RkOjpvcHRpb25hbDxHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50Pj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxH
Q0dMaW50LCBJbnQzMkFycmF5Pihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUeXBlZExpc3Q8
SW50MzJBcnJheSwgaW50MzJfdD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiB0ZW1wbGF0ZQotT3B0
aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJh
eT4oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxv
YXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKK3N0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVyczxHQ0dMZmxvYXQsIEZsb2F0MzJBcnJheT4oY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgVHlwZWRMaXN0PEZsb2F0MzJBcnJheSwgZmxvYXQ+JiB2YWx1ZXMsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsK
IAogV2ViR0xCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQnVmZmVy
RGF0YVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHVzYWdlKQogewpAQCAtNzQxNSw3ICs3NDE1LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVNpbXVsYXRlZFZlcnRleEF0dHJpYjAoR0NHTHVpbnQg
bnVtVmVydGUKICAgICByZXR1cm4gIWJ1ZmZlckRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSAmJiBi
dWZmZXJEYXRhU2l6ZS51bnNhZmVHZXQoKSA+IDA7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1W
ZXJ0ZXgpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNp
bXVsYXRlVmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZXgpCiB7CiAgICAgaWYgKCFtX2N1
cnJlbnRQcm9ncmFtKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2Ri
NDkxZTZkODRmNTZmYzA4MjYyMTBhM2UzZDk2MDIyYzllMWNlNS4uOTJjMTU2MmRlMjQ1OWJjZDlj
YTA1ZjE3NzMwYjhlYjJkZTYxYjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTU1LDcgKzE1NSw3IEBA
IHB1YmxpYzoKIAogICAgIHVzaW5nIEJ1ZmZlckRhdGFTb3VyY2UgPSBXVEY6OlZhcmlhbnQ8UmVm
UHRyPEFycmF5QnVmZmVyPiwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4+OwogICAgIHZvaWQgYnVm
ZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQ0dMZW51bSB1c2FnZSk7
Ci0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0
YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4mJiwgR0NHTGVudW0gdXNh
Z2UpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBv
ZmZzZXQsIEJ1ZmZlckRhdGFTb3VyY2UmJik7CiAKICAgICBHQ0dMZW51bSBjaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCk7CkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9n
cmFtJiwgR0NHTHVpbnQgaW5kZXgpOwogICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFj
dGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgaW5kZXgpOwotICAgIE9wdGlvbmFs
PFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+Pj4gZ2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJv
Z3JhbSYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+PiBn
ZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtJik7CiAgICAgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdlYkdMQW55
IGdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKTsKLSAg
ICBPcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygp
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gZ2V0Q29udGV4dEF0
dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpOwogICAgIHZpcnR1YWwgV2ViR0xF
eHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFdlYkdMQW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CkBAIC0yMjMs
NyArMjIzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hh
ZGVyJik7CiAgICAgUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwgR0NHTGVudW0gcHJlY2lzaW9uVHlw
ZSk7CiAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciYpOwotICAgIHZpcnR1
YWwgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKCkgPSAwOwogICAgIHZpcnR1YWwgV2ViR0xBbnkgZ2V0VGV4UGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpOwogICAgIFdlYkdMQW55IGdldFVuaWZvcm0o
V2ViR0xQcm9ncmFtJiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24mKTsKICAgICBSZWZQdHI8
V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0mLCBj
b25zdCBTdHJpbmcmKTsKQEAgLTI4NCwxNCArMjg0LDE0IEBAIHB1YmxpYzoKICAgICB1c2luZyBU
ZXhJbWFnZVNvdXJjZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8SW1hZ2VCaXRtYXA+LCBSZWZQdHI8
SW1hZ2VEYXRhPiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+LCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+PjsKICNlbmRpZgogCi0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3Vy
Y2U+KTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPik7CiAK
ICAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGZsb2F0IHBhcmFtKTsKICAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSk7CiAKICAgICAvLyBUaGVzZSBtdXN0IGJl
IHZpcnR1YWwgc28gbW9yZSB2YWxpZGF0aW9uIGNhbiBiZSBhZGRlZCBpbiBXZWJHTCAyLjAuCiAg
ICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIFJlZlB0cjxB
cnJheUJ1ZmZlclZpZXc+JiYpOwotICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFs
PFRleEltYWdlU291cmNlPiYmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBzdGQ6Om9w
dGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBlZEFy
cmF5LCBjbGFzcyBEYXRhVHlwZT4KICAgICBjbGFzcyBUeXBlZExpc3QgewpAQCAtMzkxLDcgKzM5
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBm
aW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZm
ZXIoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb1BpeGVsQnVmZmVyKCk7CiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNo
YXJlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlQ29udGV4dE9iamVjdChXZWJHTENvbnRleHRP
YmplY3QmKTsKQEAgLTEwMjksMTIgKzEwMjksMTIgQEAgcHJvdGVjdGVkOgogICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB1bmlmb3JtIGZ1bmN0
aW9ucy4KICAgICBib29sIHZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgotICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNv
bnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBUeXBlZExpc3Q8
VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCkKKyAgICBzdGQ6Om9w
dGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+PiB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBjb25zdCBUeXBlZExpc3Q8VHlwZWRMaXN0VHlwZSwgVD4mIHZhbHVlcywgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0gMCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
ID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2YWx1ZXMsIHJlcXVpcmVkTWluU2l6
ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBUeXBlZExpc3RUeXBlPgotICAgIE9wdGlvbmFsPEdDR0xTcGFuPGNvbnN0IFQ+
PiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IFR5cGVkTGlzdDxUeXBlZExpc3RUeXBlLCBUPiYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCA9IDAsIEdDR0x1aW50IHNyY0xlbmd0aCA9IDApOworICAg
IHN0ZDo6b3B0aW9uYWw8R0NHTFNwYW48Y29uc3QgVD4+IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgVHlwZWRMaXN0PFR5cGVkTGlzdFR5
cGUsIFQ+JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0ID0g
MCwgR0NHTHVpbnQgc3JjTGVuZ3RoID0gMCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8g
dmFsaWRhdGUgcGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1
cnJlbnQgYm91bmQgYnVmZmVyIHRvIHRhcmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZh
bGlkLgpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgcHJvdGVjdGVkOgogI2lmICFVU0UoQU5HTEUpCiAg
ICAgLy8gSGVscGVycyBmb3Igc2ltdWxhdGluZyB2ZXJ0ZXhBdHRyaWIwLgogICAgIHZvaWQgaW5p
dFZlcnRleEF0dHJpYjAoKTsKLSAgICBPcHRpb25hbDxib29sPiBzaW11bGF0ZVZlcnRleEF0dHJp
YjAoR0NHTHVpbnQgbnVtVmVydGV4KTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNpbXVsYXRl
VmVydGV4QXR0cmliMChHQ0dMdWludCBudW1WZXJ0ZXgpOwogICAgIGJvb2wgdmFsaWRhdGVTaW11
bGF0ZWRWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnRleCk7CiAgICAgdm9pZCByZXN0b3Jl
U3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIwU2ltdWxhdGlvbigpOwogI2VuZGlmCkBAIC0xMTEzLDEw
ICsxMTEzLDEwIEBAIHByb3RlY3RlZDoKICAgICBPZmZzY3JlZW5DYW52YXMqIG9mZnNjcmVlbkNh
bnZhcygpOwogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIE9wdGlv
bmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSk7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IGNoZWNr
ZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSk7CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHVuc2lnbmVkIGdldE1heEluZGV4KGNvbnN0IFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIsIEdDR0xpbnRwdHIgdW9mZnNldCwgR0NHTHNp
emVpIG4pOwogCi0gICAgYm9vbCB2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEdDR0xlbnVtIHR5cGUsIE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+
KTsKKyAgICBib29sIHZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgR0NHTGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRhc2tUb0Rpc3BhdGNoQ29udGV4dExvc3RF
dmVudCgpOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIE9wdGlvbmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSkKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRB
bmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0aXBseSkKIHsKICAgICBDaGVja2VkPFQs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkUmVzdWx0ID0gQ2hlY2tlZDxUPih2YWx1ZSk7CiAgICAg
Y2hlY2tlZFJlc3VsdCArPSBDaGVja2VkPFQ+KGFkZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYmNmZjhhN2VjYmMx
MDI5OWQ0ZjkxZDQ3MDU1NjAzMzRhYmY4YTUzMi4uNDk4MGY0NWQ3NjcyMmQ0ZDFkMzNkYTQ5MGJi
M2I4MWFiMDNkNjY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNzIyLDcgKzcyMiw3IEBAIFJlZjxIVE1MU3RhY2tJ
dGVtPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhU
TUxTdGFja0l0CiAgICAgcmV0dXJuIEhUTUxTdGFja0l0ZW06OmNyZWF0ZShjcmVhdGVIVE1MRWxl
bWVudChmYWtlVG9rZW4pLCBXVEZNb3ZlKGZha2VUb2tlbiksIGl0ZW0ubmFtZXNwYWNlVVJJKCkp
OwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZG
aXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTczMiw3ICs3MzIsNyBAQCBP
cHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3Bl
bkZvcm1hdHRpbmdFbGVtZW50KCkgYwogICAgICAgICBjb25zdCBhdXRvJiBlbnRyeSA9IG1fYWN0
aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmF0KGluZGV4KTsKICAgICAgICAgaWYgKGVudHJ5LmlzTWFy
a2VyKCkgfHwgbV9vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxlbWVudCgpKSkgewogICAg
ICAgICAgICAgdW5zaWduZWQgZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPSBpbmRleCArIDE7Ci0g
ICAgICAgICAgICByZXR1cm4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPCBtX2FjdGl2ZUZvcm1h
dHRpbmdFbGVtZW50cy5zaXplKCkgPyBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA6IE9wdGlvbmFs
PHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVu
RWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RV
bm9wZW5FbGVtZW50SW5kZXggOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQp
OwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoaW5kZXgpOwogCkBAIC03NDEsNyArNzQxLDcgQEAg
T3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9w
ZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGMKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVj
b25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKQogewotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA9IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1h
dHRpbmdFbGVtZW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5F
bGVtZW50SW5kZXggPSBpbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpOwogICAg
IGlmICghZmlyc3RVbm9wZW5FbGVtZW50SW5kZXgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXgg
YzA4ZDY2N2Y3YzgxMmNhM2JlYmJkYTNlOTA4OTY4MTE3NWZhZDA4YS4uNTczMWZiMDVhMjRjZmNj
YjJiNDg0NTQ0MzEyYWNkZDhiMzViYjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgc2hvdWxkRm9zdGVyUGFyZW50KCkgY29uc3Q7CiAgICAgdm9pZCBmb3N0ZXJQ
YXJlbnQoUmVmPE5vZGU+JiYpOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4T2ZGaXJz
dFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gaW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdDsKICAgICB2
b2lkIHJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAKICAgICB2b2lk
IGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYzkxNzJjMGE0ZjIxMjRmOWYxYzhjMWRhYzAw
NWI2M2ZmN2M1MTE1OS4uYzQzYjIxOTU2MGRjYmU1YjRiMjFjOTlmNGJhYmNmOTZiYzkxMGMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBFeHBlY3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJzaW5n
RXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFs
aWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9z
aXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGlu
dD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQogewogICAgIC8vIEEg
c3RyaW5nIGlzIGEgdmFsaWQgbm9uLW5lZ2F0aXZlIGludGVnZXIgaWYgaXQgY29uc2lzdHMgb2Yg
b25lIG9yIG1vcmUgQVNDSUkgZGlnaXRzLgogICAgIGZvciAoYXV0byogYyA9IHBvc2l0aW9uOyBj
IDwgZW5kOyArK2MpIHsKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBw
YXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cAogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRp
dmUtaW50ZWdlcgotT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCBP
cHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcg
aW5wdXQpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVy
bmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IEFTU0VSVChsZW5ndGggPiAwKTsKIApAQCAtMjYyLDExICsyNjIsMTEgQEAgc3RhdGljIE9wdGlv
bmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29u
c3QgQ2hhcmFjdGUKIAogICAgIHNpemVfdCBwYXJzZWRMZW5ndGggPSAwOwogICAgIGRvdWJsZSBu
dW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlvbiwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgpOwotICAg
IHJldHVybiBwYXJzZWRMZW5ndGggPT0gbGVuZ3RoICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSA/
IG51bWJlciA6IE9wdGlvbmFsPGRvdWJsZT4oKTsKKyAgICByZXR1cm4gcGFyc2VkTGVuZ3RoID09
IGxlbmd0aCAmJiBzdGQ6OmlzZmluaXRlKG51bWJlcikgPyBudW1iZXIgOiBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4oKTsKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQt
ZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1PcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxv
YXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxkb3VibGU+
IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQogewog
ICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggNTM4
NWM5NjUyNjE3NjkyZGY2NjJjYjgxZjVmZTg4MTkxYjljZTE2YS4uYWRmMThjMTRkZmM1NDBmNzc1
NjcyMmU0ZDBkNzMxYmEwNzk1MTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtNjgsMTAgKzY4LDEwIEBAIFdFQkNPUkVfRVhQT1JUIEV4
cGVjdGVkPGludCwgSFRNTEludGVnZXJQYXJzaW5nRXJyb3I+IHBhcnNlSFRNTEludGVnZXIoU3Ry
aW5nVmllCiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDx1bnNpZ25lZCwgSFRNTEludGVnZXJQYXJz
aW5nRXJyb3I+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9uLW5lZ2F0aXZlLWludGVnZXIK
LU9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmll
dyk7CitzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIo
U3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWZs
b2F0aW5nLXBvaW50LW51bWJlcgotT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0
aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VW
YWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZv
ci1wYXJzaW5nLWZsb2F0aW5nLXBvaW50LW51bWJlci12YWx1ZXMKIFZlY3Rvcjxkb3VibGU+IHBh
cnNlSFRNTExpc3RPZk9mRmxvYXRpbmdQb2ludE51bWJlclZhbHVlcyhTdHJpbmdWaWV3KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmlu
ZGV4IGI3MWYxYjRlNGIwMzNmMjZhMmIzOTcxYmQ4ZDhjMTc0ZWMzYjE0YTIuLjk0ODE5ZWNlZTll
NzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2NoYXJzZXQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJlc291cmNlVHlwZSgpIGNvbnN0CisgICAgc3RkOjpvcHRp
b25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV90YWdJZCkgewogICAgICAgICBjYXNlIFRhZ0lkOjpTY3JpcHQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmluZGV4
IGRlZGQzYmZhNDFkZTU4MDBmMDhmNDlkOWRlOTExNzNmMGJmZjM2OWMuLjYwNjIwZjU2YzRlYjhm
MDRiNDNkZjJlMTUxOGE0ZjZmNmJkOTc5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBzdGF0aWMg
Ym9vbCBwYXJzZURlc2NyaXB0b3JzKFZlY3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERl
c2NyaXB0b3JQYXJzaW5nUgogICAgICAgICBpZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3gnKSB7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkg
fHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBkZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGlu
Z1BvaW50TnVtYmVyKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGRlbnNpdHkgPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoZGVzY3JpcHRv
cik7CiAgICAgICAgICAgICBpZiAoIWRlbnNpdHkgfHwgZGVuc2l0eS52YWx1ZSgpIDwgMCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0RGVuc2l0
eShkZW5zaXR5LnZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3JDaGFyID09
ICd3JykgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhh
c1dpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3B0
aW9uYWw8aW50PiByZXNvdXJjZVdpZHRoID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVn
ZXIoZGVzY3JpcHRvcik7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzb3VyY2VX
aWR0aCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOwogICAg
ICAgICAgICAgaWYgKCFyZXNvdXJjZVdpZHRoIHx8IHJlc291cmNlV2lkdGgudmFsdWUoKSA8PSAw
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJlc3VsdC5zZXRS
ZXNvdXJjZVdpZHRoKHJlc291cmNlV2lkdGgudmFsdWUoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAg
c3RhdGljIGJvb2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0
b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IKICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUg
J2gnIGRlc2NyaXB0b3IgaXMgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0Rl
bnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8aW50PiByZXNvdXJjZUhlaWdodCA9IHBhcnNlVmFs
aWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IHJlc291cmNlSGVpZ2h0ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIXJlc291cmNlSGVpZ2h0IHx8IHJl
c291cmNlSGVpZ2h0LnZhbHVlKCkgPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICByZXN1bHQuc2V0UmVzb3VyY2VIZWlnaHQocmVzb3VyY2VIZWlnaHQudmFs
dWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZp
ZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudC5jcHAKaW5kZXggZWRkMGMxODE5MDlhMWQ2YzgzZDE3MjE0YWYzODVhYzFkYjEyYTI0
OS4uYzM2Mzc4MmYwNGY1ZmZiMmM5Y2JlNTc5ZjEzNjdlNWQ0ZDE5NGJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcApAQCAt
NjMsNyArNjMsNyBAQCB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojppbml0aWFsaXplKGNvbnN0
IEF0b21TdHJpbmcmIHBzZXVkbykKICAgICBzZXRQc2V1ZG8ocHNldWRvKTsKIH0KIAotT3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERh
dGVUaW1lRmllbGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAg
IGF1dG8gZWxlbWVudFN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgaWYg
KCFlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaAppbmRleCBlYmQwYTc5MTc2YWViOTFkODMxNTZk
MTlmMmYzMmM3YjlkODZhNGZmLi4zNjM4MWY5NGMxNjI4NjQwZmFmODA2Mzc1MzgxZDFhYTU2MGE1
MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRF
bGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVCbHVyRXZlbnQoRXZlbnQmKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxTdHlsZTo6
RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSZW5kZXJTdHlsZSopIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVy
U3R5bGUqKSBmaW5hbDsKIAogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCA1NzUyZTc5NzQ5ZGJjYzAxZWI3NGIzZmI4MzI2MzdlMmViMmMwNzg0Li4yOTgw
YTEzMzczYzk2NmEyZGU5ZjkzNDBmZjZhZmQ4YzAxYjA4NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTI5OCw3ICsyOTgs
NyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CiAgICAgY29uc3QgTGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVyKCktPnRo
ZW1lKCkuc2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBwaW5nVGhy
ZXNob2xkID4gMCkgewotICAgICAgICBpZiAoT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdCA9IGlu
cHV0LT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUodmFsdWUpKSB7CisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKHZhbHVlKSkgewogICAgICAgICAgICAgZG91YmxlIGNsb3Nlc3RGcmFjdGlvbiA9IHN0ZXBS
YW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKCpjbG9zZXN0KS50b0RvdWJsZSgpOwogICAgICAgICAg
ICAgZG91YmxlIGNsb3Nlc3RSYXRpbyA9IGlzVmVydGljYWwgfHwgIWlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24gPyAxLjAgLSBjbG9zZXN0RnJhY3Rpb24gOiBjbG9zZXN0RnJhY3Rpb247CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGNsb3Nlc3RQb3NpdGlvbiB7IHRyYWNrTGVuZ3RoICogY2xvc2VzdFJh
dGlvIH07CkBAIC01ODUsNyArNTg1LDcgQEAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IFNsaWRl
clRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxT
dHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAg
ICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBh
IGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4K
IApAQCAtNjM5LDcgKzYzOSw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250
YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNu
J3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNo
YWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IDA2YWJiZjk2NzAw
ZDFkZGRhMTZkNTUyM2U1NTAwMjNjNTJhMDYwZWEuLmIzY2RlYmE1NjdlOTVmOTViZjRmODlhZDk1
M2Y1ZDJkMmNjMzYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2
b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IFJlbmRlclN0eWxlKikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSopIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0RHJhZ2dpbmcoKTsKQEAgLTEzNCw3ICsxMzQsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQm
KTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAgIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1NsaWRlckNvbnRhaW5lckVsZW1lbnQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGE0OWJj
OTAwMGQ5NjFjZWQ5OTA5ZmZjNWYyYjYxYWNhYmQ4ODZjMWUuLjkzMzQ3MjI2ZTk2ZjIxOTdjNWY1
NmVkNzI2MTE0NjY5YmIxMGE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtODEsNyArODEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTdHJvbmdQYXNzd29yZFRleHRGaWVsZChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQogICAgIHJldHVybiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS0+aGFzQXV0b0ZpbGxTdHJvbmdQYXNz
d29yZEJ1dHRvbigpOwogfQogCi1PcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbElubmVyQ29udGFpbmVyOjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsK
ICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogICAg
IGlmIChpc1N0cm9uZ1Bhc3N3b3JkVGV4dEZpZWxkKHNoYWRvd0hvc3QoKSkpIHsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBSZWY8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKQorc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZVB0cigpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9z
dFN0eWxlKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sq
IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50Ojpy
ZW5kZXJlcigpKTsKIH0KIAotT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0
eWxlKTsKICAgICByZXR1cm4geyBtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxl
KSkgfTsKQEAgLTIwOSw3ICsyMDksNyBAQCBSZWY8VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1l
bnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbgogICAgIHJl
dHVybiBlbGVtZW50OwogfQogCi1PcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0
ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9
IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogCkBAIC0yMzksNyArMjM5LDcgQEAgUmVmPFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShEb2MKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVt
ZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBz
aGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUp
CiB7CiAgICAgYXV0byBpbnB1dCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oc2hhZG93SG9zdCgpKSk7CiAgICAgaWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkg
Pj0gMCkKQEAgLTMwNiw3ICszMDYsNyBAQCBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bQogICAgIHJl
dHVybiBlbGVtZW50OwogfQogCi1PcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5
bGU6OkVsZW1lbnRTdHlsZT4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0
eWxlKTsKICAgICBhdXRvJiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqc2hhZG93SG9zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggNDVmZjg0ODNjMTBlMWNhZmFhNzk1NTM2
ZmE1NzA4ZDJmYjM1YWEzNy4uN2MzMmJiNGEyMTc3NzBjMTRmNjIxZTI0Y2ZkYmI2YjBhN2M3MTUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBU
ZXh0Q29udHJvbElubmVyQ29udGFpbmVyKERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUp
IG92ZXJyaWRlOwogfTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTERpdkVsZW1lbnQgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBPcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC03NSw3ICs3NSw3IEBA
IHByaXZhdGU6CiAKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
QEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNl
aG9sZGVyRWxlbWVudChEb2N1bWVudCYpOwogICAgIAotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVt
ZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RT
dHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9j
dW1lbnQmKTsKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1NlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJh
bmNlIHsgdHJ1ZSB9OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01v
dXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IHJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVS
ZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIu
Y3BwCmluZGV4IGI1OGZkMzhjMDRhMGY1ZGE1OTU4ZDVmOTU0YjZmNTRjYTcxMDAwNDMuLjc4OGE5
NzI2ZTJmZDllYjBlODNiMGI0ZDNhMzc1MzFiYjc0OGE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJl
YWRlcjo6bmV4dExpbmUoKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRl
cjo6bmV4dExpbmUoKQogewogICAgIGlmIChtX21heWJlU2tpcExGKSB7CiAgICAgICAgIC8vIFdl
IHJhbiBvdXQgb2YgZGF0YSBhZnRlciBhIENSIChVKzAwMEQpLCB3aGljaCBtZWFucyB0aGF0IHdl
IG1heSBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExp
bmVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVy
LmgKaW5kZXggMWEyMTFjOTU0ZmZhNDBmMTc1YmUwNzUzZWRmOWZhZGY3MjExNjJkNS4uOTMzNGFl
NzNlZmU5YjMyOWE5OGZmZGZjODhkMjJlZTIyMGQ0NDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJlYWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZEVuZE9mU3RyZWFtKCkgeyBtX2VuZE9mU3RyZWFtID0gdHJ1ZTsg
fQogICAgIGJvb2wgaXNBdEVuZE9mU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZlN0cmVh
bSAmJiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAotICAgIE9wdGlvbmFsPFN0cmluZz4gbmV4dExp
bmUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV4dExpbmUoKTsKIAogcHJpdmF0ZToK
ICAgICBTZWdtZW50ZWRTdHJpbmcgbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaAppbmRleCA4YWVkZmIwYmE4MDhjNzA4OGJiYzZkYzdiYmRmZWI0NGNmNTkwNmY0Li45
YTUzMzQ4NDIyZWJkYTkxOGJmYTNmYjVjMTBlNjM5NTFmYTgxNDQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAg
Y29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBzdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVTaGVldHM7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiYgc3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2hlZXRzOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUHVyZ2VDdWVzRnJvbVVuYnVmZmVyZWRSYW5nZXMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWVzTm90SW5UaW1l
UmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcyYpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldEtpbmQoS2luZCk7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlz
dD4gbV9jdWVzOwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fc3R5bGVTaGVldHM7CiAKIHByaXZh
dGU6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KQEAg
LTE3Myw4ICsxNzMsOCBAQCBwcml2YXRlOgogICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7
CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3Jl
YWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07Ci0gICAgT3B0aW9uYWw8aW50PiBtX3RyYWNrSW5k
ZXg7Ci0gICAgT3B0aW9uYWw8aW50PiBtX3JlbmRlcmVkVHJhY2tJbmRleDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gbV90cmFja0luZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX3JlbmRl
cmVkVHJhY2tJbmRleDsKICAgICBib29sIG1faGFzQmVlbkNvbmZpZ3VyZWQgeyBmYWxzZSB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKaW5kZXggODYwOWY4
ZmExNGYwNTU0ZDlkZDkxZDY5YzUyMjRmZDI3ZTQ5MDNhYS4uN2M5Y2Y5NzhlMjFlMjQ5NTdhOWZk
Yzc1ZTAxMTAwZjYxYzgxZDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFRyYWNrRXZlbnQpOwogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFRyYWNrRXZlbnQ6OlRyYWNrRXZlbnRUcmFjaz4gY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFJl
ZjxUcmFja0Jhc2U+JiYgdHJhY2spCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VHJhY2tF
dmVudDo6VHJhY2tFdmVudFRyYWNrPiBjb252ZXJ0VG9UcmFja0V2ZW50VHJhY2soUmVmPFRyYWNr
QmFzZT4mJiB0cmFjaykKIHsKICAgICBzd2l0Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNl
IFRyYWNrQmFzZTo6QmFzZVRyYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
aAppbmRleCAzM2VkNjc0ZDBkODhjMjQ3MTBkNDAzODY1OWM0YTFhMjU5ZjI3YTcwLi5mN2NlMDc0
MWQxNjljYmYwY2RiOGZlMTQ4ZDVlMWZjZTZkZDc4ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVHJh
Y2tFdmVudFRyYWNrID0gVmFyaWFudDxSZWZQdHI8VmlkZW9UcmFjaz4sIFJlZlB0cjxBdWRpb1Ry
YWNrPiwgUmVmUHRyPFRleHRUcmFjaz4+OwogCiAgICAgc3RydWN0IEluaXQgOiBwdWJsaWMgRXZl
bnRJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8VHJhY2tFdmVudFRyYWNrPiB0cmFjazsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxUcmFja0V2ZW50VHJhY2s+IHRyYWNrOwogICAgIH07CiAKICAgICBz
dGF0aWMgUmVmPFRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0
JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNr
RXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplciksIGlzVHJ1c3RlZCkpOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3Ry
YWNrOyB9CisgICAgc3RkOjpvcHRpb25hbDxUcmFja0V2ZW50VHJhY2s+IHRyYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFjazsgfQogCiBwcml2YXRlOgogICAgIFRyYWNrRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYp
OwpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFRyYWNrRXZlbnRUcmFj
az4gbV90cmFjazsKKyAgICBzdGQ6Om9wdGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gbV90cmFjazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggNDQ4M2RmNzAwM2ZiMWVkNTQ5NmRjYWJiMjMwM2VhYTU1MGM3ZGZlMS4uNjI5ZGYzYzk3
Y2MyNTZhYmM0N2IxODE5YzIyMzNmMzY4MmY2ODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTEwMCwxMSArMTAwLDExIEBAIHN0YXRpYyB2b2lkIGFkZENoaWxkcmVuKEFYQ29y
ZU9iamVjdCYgcGFyZW50T2JqZWN0LCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgY2hpbGROCiAgICAg
fQogfQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQor
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q2hpbGROb2RlcyhOb2RlJiBub2RlKQogewog
ICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9k
ZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2li
bGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4g
Y2hpbGROb2RlczsKQEAgLTExNSwxMSArMTE1LDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZl
Y3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlJiBub2Rl
KQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdDo6Z2V0Q29tcHV0ZWRQcm9wZXJ0aWVzKE5vZGUmIG5vZGUpCiB7CiAgICAgRVJST1JfSUZf
Tk9fQUNUSVZFX0FVRElUKCk7CiAKLSAgICBPcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+
IHJlc3VsdDsKIAogICAgIGlmIChBWENvcmVPYmplY3QqIGF4T2JqZWN0ID0gYWNjZXNzaWJsaXR5
T2JqZWN0Rm9yTm9kZShub2RlKSkgewogICAgICAgICBDb21wdXRlZFByb3BlcnRpZXMgY29tcHV0
ZWRQcm9wZXJ0aWVzOwpAQCAtMjM5LDExICsyMzksMTEgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+PiBJ
bnMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8
UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0Q29u
dHJvbGxlZE5vZGVzKE5vZGUmIG5vZGUpCitFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRD
b250cm9sbGVkTm9kZXMoTm9kZSYgbm9kZSkKIHsKICAgICBFUlJPUl9JRl9OT19BQ1RJVkVfQVVE
SVQoKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gcmVzdWx0OwogCiAgICAgaWYgKEFY
Q29yZU9iamVjdCogYXhPYmplY3QgPSBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKG5vZGUpKSB7
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNvbnRyb2xsZWROb2RlczsKQEAgLTI2MSwx
MSArMjYxLDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4g
SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotRXhjZXB0aW9uT3I8T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEZsb3dlZE5vZGVzKE5vZGUmIG5vZGUpCitF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRGbG93ZWROb2RlcyhOb2RlJiBub2RlKQogewog
ICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9k
ZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2li
bGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4g
Zmxvd2VkTm9kZXM7CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Tm9k
ZT4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TW91c2VFdmVudE5vZGUo
TgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8
UmVmUHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3du
ZWROb2RlcyhOb2RlJiBub2RlKQorRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
UHRyPE5vZGU+Pj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0T3duZWRO
b2RlcyhOb2RlJiBub2RlKQogewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0g
ICAgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0
KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAg
aWYgKGF4T2JqZWN0LT5zdXBwb3J0c0FSSUFPd25zKCkpIHsKQEAgLTMzMSwxMSArMzMxLDExIEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlPj4gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpnZXRQYXJlbnROb2RlKE5vZGUmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUV4Y2Vw
dGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gSW5zcGVjdG9yQXVkaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpnZXRTZWxlY3RlZENoaWxkTm9kZXMoTm9kZSYgbm9kZSkKK0V4Y2Vw
dGlvbk9yPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldFNlbGVjdGVkQ2hpbGROb2RlcyhOb2RlJiBub2RlKQog
ewogICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9y
PFJlZlB0cjxOb2RlPj4+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8
Tm9kZT4+PiByZXN1bHQ7CiAKICAgICBpZiAoQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGFjY2Vz
c2libGl0eU9iamVjdEZvck5vZGUobm9kZSkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2Rl
Pj4gc2VsZWN0ZWRDaGlsZE5vZGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGNiYmEy
Yjg2ZDhjYjNkMDVlNzdjNmI4ODc5ZjQyYjM0NWIxNjg4NTEuLmI2ODZhODZmOTMzZjdjMWFiNGMw
OGQ3NGYyMzBiZmJhZmExYzVjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ3LDM5
ICs0NywzOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IGdl
dEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHJvbGUsIE5v
ZGUqIGNvbnRhaW5lcik7CiAKICAgICBzdHJ1Y3QgQ29tcHV0ZWRQcm9wZXJ0aWVzIHsKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gYnVzeTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBidXN5
OwogICAgICAgICBTdHJpbmcgY2hlY2tlZDsKICAgICAgICAgU3RyaW5nIGN1cnJlbnRTdGF0ZTsK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlzYWJsZWQ7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+
IGV4cGFuZGVkOwotICAgICAgICBPcHRpb25hbDxib29sPiBmb2N1c2VkOwotICAgICAgICBPcHRp
b25hbDxpbnQ+IGhlYWRpbmdMZXZlbDsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGlkZGVuOwot
ICAgICAgICBPcHRpb25hbDxpbnQ+IGhpZXJhcmNoaWNhbExldmVsOwotICAgICAgICBPcHRpb25h
bDxib29sPiBpZ25vcmVkOwotICAgICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVkQnlEZWZhdWx0
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpc2FibGVkOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGV4cGFuZGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvY3Vz
ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWFkaW5nTGV2ZWw7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaGlkZGVuOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGll
cmFyY2hpY2FsTGV2ZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlZDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZ25vcmVkQnlEZWZhdWx0OwogICAgICAgICBTdHJp
bmcgaW52YWxpZFN0YXR1czsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNQb3BVcEJ1dHRvbjsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1BvcFVwQnV0dG9uOwogICAgICAgICBTdHJp
bmcgbGFiZWw7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGxpdmVSZWdpb25BdG9taWM7Ci0gICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbGl2ZVJlZ2lvbkF0b21pYzsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gbGl2ZVJlZ2lvblJlbGV2YW50OwogICAgICAgICBTdHJpbmcg
bGl2ZVJlZ2lvblN0YXR1czsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcHJlc3NlZDsKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gcmVhZG9ubHk7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHJlcXVp
cmVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHByZXNzZWQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gcmVhZG9ubHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVx
dWlyZWQ7CiAgICAgICAgIFN0cmluZyByb2xlOwotICAgICAgICBPcHRpb25hbDxib29sPiBzZWxl
Y3RlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzZWxlY3RlZDsKICAgICB9OwogCiAg
ICAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGU+PiBnZXRBY3RpdmVEZXNjZW5kYW50KE5vZGUmKTsK
LSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENoaWxk
Tm9kZXMoTm9kZSYpOwotICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPENvbXB1dGVkUHJvcGVydGll
cz4+IGdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlJik7Ci0gICAgRXhjZXB0aW9uT3I8T3B0aW9u
YWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRDb250cm9sbGVkTm9kZXMoTm9kZSYpOwotICAg
IEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0Rmxvd2VkTm9k
ZXMoTm9kZSYpOworICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxO
b2RlPj4+PiBnZXRDaGlsZE5vZGVzKE5vZGUmKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPENvbXB1dGVkUHJvcGVydGllcz4+IGdldENvbXB1dGVkUHJvcGVydGllcyhOb2RlJik7Cisg
ICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldENv
bnRyb2xsZWROb2RlcyhOb2RlJik7CisgICAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmUHRyPE5vZGU+Pj4+IGdldEZsb3dlZE5vZGVzKE5vZGUmKTsKICAgICBFeGNlcHRpb25P
cjxSZWZQdHI8Tm9kZT4+IGdldE1vdXNlRXZlbnROb2RlKE5vZGUmKTsKLSAgICBFeGNlcHRpb25P
cjxPcHRpb25hbDxWZWN0b3I8UmVmUHRyPE5vZGU+Pj4+IGdldE93bmVkTm9kZXMoTm9kZSYpOwor
ICAgIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxOb2RlPj4+PiBnZXRP
d25lZE5vZGVzKE5vZGUmKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Tm9kZT4+IGdldFBhcmVu
dE5vZGUoTm9kZSYpOwotICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9k
ZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzKE5vZGUmKTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8Tm9kZT4+Pj4gZ2V0U2VsZWN0ZWRDaGlsZE5vZGVzKE5v
ZGUmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGM5Y2U4MGIyZDFkYWFkOGRl
ZWEyOTNiZmIwOWQ4MDhhNThiOTM0OWMuLmU0ZDc2YjAxMzczYmE5ODdlZTgzOWU0OTFhYmMxMTdi
M2E2ZjRmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCkBAIC0zNDEsNTEgKzM0MSw1MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKAogICAgIHJl
dHVybiBhcnJheTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0Rp
cmVjdGlvbiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc0ZpbGxSdWxlIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoQ2FudmFzRmlsbFJ1bGUgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhG
b3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChDYW52YXNJbWFnZVNvdXJjZSYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJjZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJu
IHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChDYW52YXNMaW5lQ2FwIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGluZUNhcCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQp
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0xpbmVKb2luIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGluZUpvaW4gYXJndW1lbnQpCiB7CiAgICAgcmV0
dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3Vt
ZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZh
cmlhbnQmIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGVWYXJpYW50JiBhcmd1bWVudCkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgewogICAg
ICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKICAgICB9KTsKIH0KIAotT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkK
IHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVu
dCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRCYXNlbGlu
ZSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmlu
ZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KERPTU1hdHJpeDJESW5p
dCYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChET01NYXRy
aXgyREluaXQmIGFyZ3VtZW50KQogewogICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRv
dWJsZT46OmNyZWF0ZSgpOwogICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmEudmFsdWVfb3Io
MSkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiAgICAgcmV0
dXJuIHt7IFdURk1vdmUoYXJyYXkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6RE9NTWF0cml4IH19
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoRWxlbWVudCogYXJndW1lbnQp
CitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChFbGVtZW50KiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
NDA3LDEyOSArNDA3LDEyOSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIHJldHVybiB7
eyB2YWx1ZUluZGV4Rm9yRGF0YSgiRWxlbWVudCJfcyksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpO
b25lIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxl
bWVudCogYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChIVE1M
SW1hZ2VFbGVtZW50KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1
bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKIH0KIAotT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlQml0bWFwKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlQml0bWFwKiBhcmd1bWVudCkKIHsKICAgICBpZiAo
IWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2
YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZUJp
dG1hcCB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YSog
YXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEq
IGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
LgogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxpdHkgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxpdHkgYXJndW1lbnQpCiB7CiAg
ICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07CiB9CiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChPcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQorc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoc3RkOjpvcHRpb25hbDxmbG9hdD4mIGFy
Z3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91Ymxl
PigqYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFBhdGgyRCogYXJndW1lbnQpCitzdGQ6Om9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChQYXRoMkQqIGFyZ3VtZW50KQogewogICAgIGlmICgh
YXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZh
bHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzR3JhZGllbnQ+JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50KQogewog
ICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OkNhbnZhc1BhdHRlcm4gfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChS
ZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGFyZ3VtZW50KQogewog
ICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OkltYWdlIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJu
IHByb2Nlc3NBcmd1bWVudChhcmd1bWVudC5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChSZWZQdHI8SW1hZ2VCaXRtYXA+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxJbWFnZUJpdG1hcD4mIGFyZ3VtZW50KQog
ewogICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwogfQogCi1PcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFyZ3VtZW50KQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFy
Z3VtZW50KQogewogICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwog
fQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyVmlldz4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVh
dGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OwogfQogCi1PcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiYgYXJndW1l
bnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpGbG9h
dDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkludDMyQXJyYXk+JiBhcmd1bWVudCkKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkludDMyQXJyYXk+JiBh
cmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFJlZlB0cjxKU0M6OlVpbnQzMkFycmF5PiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpVaW50MzJBcnJheT4mIGFyZ3VtZW50KQog
ewogICAgIGlmICghYXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpU
eXBlZEFycmF5IH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoU3RyaW5n
JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFN0cmluZyYg
YXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwg
UmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudCkKIHsKICAgICBhdXRv
IGRlZHVwbGljYXRlZCA9IGFyZ3VtZW50Lm1hcChbJl0gKGNvbnN0IFN0cmluZyYgaXRlbSkgewog
ICAgICAgICByZXR1cm4gaW5kZXhGb3JEYXRhKGl0ZW0pOwpAQCAtNTM3LDEyICs1MzcsMTIgQEAg
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKICAgICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3Rv
cihXVEZNb3ZlKGRlZHVwbGljYXRlZCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19
OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPGZsb2F0PiYgYXJn
dW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8ZmxvYXQ+
JiBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3Rvcihhcmd1bWVu
dCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFZlY3Rvcjx1aW50MzJfdD4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPHVpbnQzMl90PiYgYXJndW1lbnQpCiB7CiAg
ICAgYXV0byBtYXBwZWQgPSBhcmd1bWVudC5tYXAoWyZdICh1aW50MzJfdCBpdGVtKSB7CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGl0ZW0pOwpAQCAtNTUwLDcgKzU1MCw3IEBA
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiAgICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0
b3IobWFwcGVkKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkFycmF5IH19OwogfQogCi1PcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPGludDMyX3Q+JiBhcmd1bWVudCkKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxpbnQzMl90PiYgYXJndW1lbnQp
CiB7CiAgICAgYXV0byBtYXBwZWQgPSBhcmd1bWVudC5tYXAoWyZdIChpbnQzMl90IGl0ZW0pIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oaXRlbSk7CkBAIC01NTgsNDkgKzU1
OCw0OSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIHJldHVybiB7eyBidWlsZEFycmF5
Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKIH0KIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGRvdWJsZSBhcmd1bWVudCkKK3N0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGRvdWJsZSBhcmd1bWVudCkKIHsKICAgICByZXR1
cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChmbG9hdCBh
cmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGZsb2F0IGFyZ3Vt
ZW50KQogewogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRv
dWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKIH0KIAot
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHVpbnQ2NF90IGFyZ3VtZW50KQorc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDY0X3QgYXJndW1lbnQpCiB7CiAgICAg
cmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVu
dCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OwogfQogCi1PcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoaW50NjRfdCBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KGludDY0X3QgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIHt7IEpTT046
OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6TnVtYmVyIH19OwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQodWludDMyX3QgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dCh1aW50MzJfdCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpO
dW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChpbnQzMl90IGFy
Z3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoaW50MzJfdCBhcmd1
bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxk
b3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAK
LU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50OF90IGFyZ3VtZW50KQorc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDhfdCBhcmd1bWVudCkKIHsKICAgICBy
ZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChib29sIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoYm9vbCBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpCb29sZWFuIH19OwogfQogCiAj
aWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWYWx1ZT4mIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYgYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTYxMSw3ICs2MTEsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPiYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgYXJndW1lbnQpCiB7CiAgICAgaWYg
KCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYyMiw3ICs2MjIs
NyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1PcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiBhcmd1
bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlk
ZW9FbGVtZW50PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYzMyw3ICs2MzMsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQQogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4m
IGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoc3RkOjpvcHRp
b25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRhU291cmNlPiYgYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTY0Myw3ICs2NDMsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogICAgIH0pOwogfQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KHN0ZDo6b3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjUzLDEwNSArNjUzLDEwNSBAQCBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQQogICAgIH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTEJ1ZmZlciB9fTsKIH0KIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMRnJhbWVidWZmZXIqIGFyZ3VtZW50KQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZlciogYXJn
dW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OldlYkdMRnJhbWVidWZmZXIgfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTFByb2dyYW0qIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoV2ViR0xQcm9ncmFtKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1
ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xQcm9ncmFtIH19OwogfQog
Ci1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xRdWVyeSogYXJndW1lbnQpCitz
dGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
V2ViR0xRdWVyeSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdM
UmVuZGVyYnVmZmVyKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9
CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpCdWZmZXJEYXRhU291cmNlJiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2Um
IGFyZ3VtZW50KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1
dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwogICAg
IH0pOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3N0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZs
b2F0MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nl
c3NBcmd1bWVudCh2YWx1ZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBl
JiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlzdDo6VmFyaWFudFR5cGUmIGFyZ3VtZW50KQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAg
ICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1PcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4
SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7
CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwogICAgIH0pOwogfQogCi1P
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKK3N0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU2FtcGxlciogYXJndW1lbnQp
CiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OldlYkdMU2FtcGxlciB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdl
YkdMU2hhZGVyKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMU2hhZGVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDAp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTaGFkZXIgfX07CiB9CiAKLU9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFN5bmMqIGFyZ3VtZW50KQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTeW5jKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFy
Z3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTeW5jIH19Owog
fQogCi1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUZXh0dXJlKiBhcmd1bWVu
dCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJn
dW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBhcmd1bWVudCkKIHsKICAgICBp
ZiAoIWFyZ3VtZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlm
b3JtTG9jYXRpb24gfX07CiB9CiAKLU9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiBhcmd1bWVudCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIGFyZ3VtZW50KQogewogICAgIGlmICgh
YXJndW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03NjIsMTQgKzc2Miwx
NCBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogCiAjaWYgRU5BQkxFKFdFQkdMMikKIAotT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGFyZ3Vt
ZW50KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVj
b3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2sgfX07CiB9CiAKLU9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJM
aXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYg
YXJndW1lbnQpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0
byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CkBAIC04
OTksNyArODk5LDcgQEAgYm9vbCBJbnNwZWN0b3JDYW52YXM6Om92ZXJGcmFtZUNvdW50KCkgY29u
c3QKIAogUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9yQ2FudmFzOjpidWls
ZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmVCYWNrdHJhY2UpCiB7Ci0gICAgdXNpbmcgQ29u
dGV4dFR5cGVUeXBlID0gT3B0aW9uYWw8UHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU+Owor
ICAgIHVzaW5nIENvbnRleHRUeXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkNhbnZh
czo6Q29udGV4dFR5cGU+OwogICAgIGF1dG8gY29udGV4dFR5cGUgPSBXVEY6OnN3aXRjaE9uKG1f
Y29udGV4dCwKICAgICAgICAgW10gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dD4gY29udGV4dFdyYXBwZXIpIC0+IENvbnRleHRUeXBlVHlwZSB7CiAgICAgICAg
ICAgICBhdXRvJiBjb250ZXh0ID0gY29udGV4dFdyYXBwZXIuZ2V0KCk7CkBAIC0xMzQzLDcgKzEz
NDMsNyBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZWxzZSBp
ZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCkpIHsKICAgICAgICAgYXV0
byYgY29udGV4dFdlYkdMQmFzZSA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+
KCpjb250ZXh0KTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0V2ViR0xCYXNlLmdldENvbnRleHRBdHRy
aWJ1dGVzKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmli
dXRlcz4gd2ViR0xDb250ZXh0QXR0cmlidXRlcyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4
dEF0dHJpYnV0ZXMoKSkgewogICAgICAgICAgICAgYXV0byB3ZWJHTENvbnRleHRBdHRyaWJ1dGVz
UGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRl
eHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxwaGEiX3MsIHdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMtPmFscGhhKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXls
b2FkLT5zZXRCb29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+ZGVwdGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDI2MjVi
ZDBhNzYzZjA2NmMxMWYyYjI0MGY3YzlhN2M5NDBjMWVkMDkuLjU5Nzk5OGE0Y2MxNmIzY2MxYTcy
MWRlZThkN2JiNTE5MzZjYjg3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcgogI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFy
Z3VtZW50VHlwZSkgXAotICAgIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQXJndW1lbnRUeXBlKTsgXAorICAgIHN0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IHByb2Nlc3NBcmd1bWVudChBcmd1bWVudFR5cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdV
TUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNT
X0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICBN
b25vdG9uaWNUaW1lIG1fY3VycmVudEZyYW1lU3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bmFu
KCkgfTsKICAgICBzaXplX3QgbV9idWZmZXJMaW1pdCB7IDEwMCAqIDEwMjQgKiAxMDI0IH07CiAg
ICAgc2l6ZV90IG1fYnVmZmVyVXNlZCB7IDAgfTsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJh
bWVDb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9mcmFtZUNvdW50OwogICAgIHNp
emVfdCBtX2ZyYW1lc0NhcHR1cmVkIHsgMCB9OwogICAgIGJvb2wgbV9jb250ZW50Q2hhbmdlZCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCmluZGV4IDY5M2FjZmU1MzQzNTE3MGQyZGY1ZTkwMjlj
Y2Y1MmMwNmFiMTM2MTEuLjcwMDg0ZTM2YmMwYTFmYjEyODU0YzBiZDEwNDRmMTdjN2I5MjFjODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIEluc3BlY3RvckNhbnZhc0Fn
ZW50KiBlbmFibGVkQ2FudmFzQWdlbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmUK
IH0KIAogI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04oQXJndW1lbnRUeXBlKSBc
Ci1PcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkg
XAorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1
bWVudCkgXAogeyBcCiAgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gZW5hYmxlZENhbnZhc0Fn
ZW50KGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpKSBcCiAgICAgICAgIHJldHVybiBjYW52YXNBZ2Vu
dC0+cHJvY2Vzc0FyZ3VtZW50KGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGFyZ3VtZW50KTsgXApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3Jk
QWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlCiAgICAgICAgIGNhbnZh
c0FnZW50LT5yZWNvcmRBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAotT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnBy
b2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgdWlu
dDMyX3QgYXJndW1lbnQpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJn
dW1lbnQoY29uc3QgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQsIHVpbnQzMl90IGFy
Z3VtZW50KQogewogICAgIEFTU0VSVChjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSk7
CiAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCgqY2FudmFzRWxlbWVudC5yZW5kZXJpbmdDb250
ZXh0KCksIGFyZ3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oCmluZGV4IGM1ZDMxMWVlNDljNjA1ZmExMDE2ZTExZGZi
ZjczODIwMjMyZjg2ZWEuLjY3OGI0MDljNGRmNDk4N2UzYWJmYzI4ZDQxYWQ3MGIzYmRjMDBkZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuaApAQCAtMTA2LDggKzEwNiw4IEBAIGVudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5
OwogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFT
X0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5UKG1hY3JvKSBcCi0gICAgbWFjcm8oT3B0aW9uYWw8
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCi0gICAgbWFj
cm8oT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+Jikg
XAorICAgIG1hY3JvKHN0ZDo6b3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVm
ZmVyRGF0YVNvdXJjZT4mKSBcCisgICAgbWFjcm8oc3RkOjpvcHRpb25hbDxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZT4mKSBcCiAgICAgbWFjcm8oV2ViR0xCdWZmZXIq
KSBcCiAgICAgbWFjcm8oV2ViR0xGcmFtZWJ1ZmZlciopIFwKICAgICBtYWNybyhXZWJHTFByb2dy
YW0qKSBcCkBAIC0xNTMsNyArMTUzLDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAg
ICAgbWFjcm8oSW1hZ2VEYXRhKikgXAogICAgIG1hY3JvKEltYWdlRGF0YVNldHRpbmdzJikgXAog
ICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVhbGl0eSkgXAotICAgIG1hY3JvKE9wdGlvbmFsPGZs
b2F0PiYpIFwKKyAgICBtYWNybyhzdGQ6Om9wdGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQ
YXRoMkQqKSBcCiAgICAgbWFjcm8oUmVmUHRyPENhbnZhc0dyYWRpZW50PiYpIFwKICAgICBtYWNy
byhSZWZQdHI8Q2FudmFzUGF0dGVybj4mKSBcCkBAIC0xOTMsMTcgKzE5MywxNyBAQCBwdWJsaWM6
CiAgICAgICAgIFJlY29yZGluZ1N3aXp6bGVUeXBlIHN3aXp6bGVUeXBlOwogICAgIH07CiAKLSAg
ICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8T3B0aW9u
YWw8UHJvY2Vzc2VkQXJndW1lbnQ+PjsKKyAgICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpvcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4+Owog
CiAjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYsIEFyZ3VtZW50VHlwZSk7IFwKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9E
RUNMQVJBVElPTgogICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJH
VU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNTX0FSR1VN
RU5UX0RFQ0xBUkFUSU9OCiAKICAgICBzdGF0aWMgdm9pZCByZWNvcmRBY3Rpb24oQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYsIFN0cmluZyYmLCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiAK
LSAgICBzdGF0aWMgT3B0aW9uYWw8UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChj
b25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KGNvbnN0IEhUTUxDYW52YXNF
bGVtZW50JiwgdWludDMyX3QpOwogICAgIHN0YXRpYyB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBI
VE1MQ2FudmFzRWxlbWVudCYsIFN0cmluZyYmLCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
YTY3MGUzMjhhNWJmYzg4MGJkNTQ1ZDg3OTdhNjJhNjAyYjE5Y2MwNy4uZTRjMDY3ZmRiMzY1ODFl
OTE2OTdkYjdkZThjNGMyYjMwZjk4NGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIElUUERl
YnVnTW9kZUVuYWJsZWQsCiAgICAgICAgIE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsCiAgICAg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKERldmVs
b3BlclByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKERldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4pIHsgfQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdmly
dHVhbCBib29sIGFsbG93UmVtb3RlSW5zcGVjdGlvblRvUGFnZURpcmVjdGx5KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBlNzcwNmJlNDQyZjkxN2ZjYzhm
NDdiYjk5Y2RkZjZlOTY0NzExNmNjLi5mYjE5ZDdmODI5ZjU1YzUzM2FmOWFkNjAyOWIxYzBiMmRl
OGFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQog
ICAgIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWln
aHQocHJlZmVycmVkSGVpZ2h0LCBpbnNwZWN0ZWRQYWdlSGVpZ2h0KSk7CiB9CiAKLU9wdGlvbmFs
PGJvb2w+IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmV2YWx1YXRpb25SZXN1bHRUb0Jv
b2xlYW4oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJl
c3VsdCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6
OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggYmNmZmQyMmQ3NzlmOTljNTVj
NjM0YjI3NmFhMWI5ODQ3OGIxMDIzYy4uY2U2OWE2OTliZTFmNDdkODAxNjc1OWI2MDUxYzJlOGIz
MjJhOTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKLSAgICBP
cHRpb25hbDxib29sPiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvblJlc3VsdCk7CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3Bl
Y3RlZFBhZ2VDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdl
IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAppbmRleCA1MTIyYTIzMWM1ZmVhOThhMjU4YTMzNDNkMTkwMDA1MjQy
NzA2ZTU3Li4zMTdkNDI4YmViZDI2NmIxMjdlMmQ4ODRjMTE4OWU0YjA0MmMwMWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApA
QCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkZWQoKQog
ICAgICAgICBtX2NsaWVudC0+ZnJvbnRlbmRMb2FkZWQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFs
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZT4gZG9ja1NpZGVGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU+IGRvY2tTaWRlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIGRvY2tTaWRlU3RyaW5nKQogewogICAgIGlmIChkb2NrU2lkZVN0cmluZyA9PSAidW5kb2Nr
ZWQiKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpV
bmRvY2tlZDsKQEAgLTYwMyw3ICs2MDMsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
c2hvd0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZENlcnRpZmljYXRlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotICAgIE9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2
MzAsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlhZ25vc3RpY0xvZ2dpbmdBdmFp
bGFibGUoKQogICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+ZGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50OjpWYWx1ZVBheWxvYWQ+IHZhbHVlUGF5bG9hZEZyb21KU09OVmFsdWUoUmVmPEpTT046OlZh
bHVlPiYmIHZhbHVlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ6OlZhbHVlUGF5bG9hZD4gdmFsdWVQYXlsb2FkRnJvbUpTT05WYWx1ZShSZWY8SlNPTjo6VmFs
dWU+JiYgdmFsdWUpCiB7CiAgICAgc3dpdGNoICh2YWx1ZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBK
U09OOjpWYWx1ZTo6VHlwZTo6QXJyYXk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggOGIyZDU4MGIwZjMyMjM5Y2U5ZTIwNmE4MWEy
ZDBjZGMxNDMyZTA4Ny4uNmQyZTU2YzdhZThmZWRmYTY1OTBmMTRiMWFkZjgwOGEyZmEwMGJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aApAQCAtMTEyLDEwICsxMTIsMTAgQEAgcHVibGljOgogICAgIHN0cnVjdCBDb250ZXh0TWVudUl0
ZW0gewogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGxhYmVsOwotICAgICAg
ICBPcHRpb25hbDxpbnQ+IGlkOwotICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVkOwotICAg
ICAgICBPcHRpb25hbDxib29sPiBjaGVja2VkOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29u
dGV4dE1lbnVJdGVtPj4gc3ViSXRlbXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGNoZWNrZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRleHRN
ZW51SXRlbT4+IHN1Ykl0ZW1zOwogICAgIH07CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZl
bnQmLCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGExNjkzMTYyYmNmN2FmYmVmMjczN2U1
ZGVjNGE4YWJiYWJlYzQyN2IuLjdkZjM1Y2RlZWVlNzBhMmQwZmQ5Yjc0ZmVkNTA0YjQ2MTQ0ZDJh
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
QEAgLTE2MDYsNyArMTYwNiw3IEBAIHN0YXRpYyBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6
OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbCBidWlsZExhYmVsKFN0cmluCiAgICAgcmV0dXJu
IGxhYmVsOwogfQogCi1PcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRI
aWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JPdmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0
IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmIGdyaWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5
U2Nyb2xsKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRI
aWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JPdmVybGF5OjpidWlsZEdyaWRPdmVybGF5KGNvbnN0
IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmIGdyaWRPdmVybGF5LCBib29sIG9mZnNldEJvdW5kc0J5
U2Nyb2xsKQogewogICAgIC8vIElmIHRoZSBub2RlIFdlYWtQdHIgaGFzIGJlZW4gY2xlYXJlZCwg
dGhlbiB0aGUgbm9kZSBpcyBnb25lIGFuZCB0aGVyZSdzIG5vdGhpbmcgdG8gZHJhdy4KICAgICBp
ZiAoIWdyaWRPdmVybGF5LmdyaWROb2RlKSB7CkBAIC0xOTE4LDEwICsxOTE4LDEwIEBAIE9wdGlv
bmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IElu
c3BlY3Rvck92ZXJsYXk6OmJ1CiAgICAgICAgICAgICBhdXRvIHJvd1N0YXJ0TGluZSA9IHJvd0xp
bmVBdChyb3dQb3NpdGlvbnNbYXJlYS5yb3dzLnN0YXJ0TGluZSgpXSk7CiAgICAgICAgICAgICBh
dXRvIHJvd0VuZExpbmUgPSByb3dMaW5lQXQocm93UG9zaXRpb25zW2FyZWEucm93cy5lbmRMaW5l
KCkgLSAxXSArIHJvd0hlaWdodHNbYXJlYS5yb3dzLmVuZExpbmUoKSAtIDFdKTsKIAotICAgICAg
ICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdCA9IGNvbHVtblN0YXJ0TGluZS5pbnRl
cnNlY3Rpb25XaXRoKHJvd1N0YXJ0TGluZSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiB0b3BSaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExp
bmUpOwotICAgICAgICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gYm90dG9tUmlnaHQgPSBjb2x1
bW5FbmRMaW5lLmludGVyc2VjdGlvbldpdGgocm93RW5kTGluZSk7Ci0gICAgICAgICAgICBPcHRp
b25hbDxGbG9hdFBvaW50PiBib3R0b21MZWZ0ID0gY29sdW1uU3RhcnRMaW5lLmludGVyc2VjdGlv
bldpdGgocm93RW5kTGluZSk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IHRvcExlZnQgPSBjb2x1bW5TdGFydExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUp
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiB0b3BSaWdodCA9IGNvbHVt
bkVuZExpbmUuaW50ZXJzZWN0aW9uV2l0aChyb3dTdGFydExpbmUpOworICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodCA9IGNvbHVtbkVuZExpbmUuaW50ZXJz
ZWN0aW9uV2l0aChyb3dFbmRMaW5lKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gYm90dG9tTGVmdCA9IGNvbHVtblN0YXJ0TGluZS5pbnRlcnNlY3Rpb25XaXRoKHJvd0Vu
ZExpbmUpOwogCiAgICAgICAgICAgICAvLyBJZiBhbnkgdHdvIGxpbmVzIGFyZSBjb2luY2lkZW50
IHdpdGggZWFjaCBvdGhlciwgdGhleSB3aWxsIG5vdCBoYXZlIGFuIGludGVyc2VjdGlvbiwgd2hp
Y2ggY2FuIG9jY3VyIHdpdGggZXh0cmVtZSBgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSguLi4pYCB2
YWx1ZXMuCiAgICAgICAgICAgICBpZiAoIXRvcExlZnQgfHwgIXRvcFJpZ2h0IHx8ICFib3R0b21S
aWdodCB8fCAhYm90dG9tTGVmdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5oCmluZGV4IDU1YmE1OGY1M2ZiOTdjMDY2NDMwYzc1YzIyYjk3NjA1NGQ2NGI3MmEu
LjAzN2I5YmIxYTA5ODA4NWY3YzI5NjhiNTllYmE5ZWQ0NzdhMTc0NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JP
dmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRP
dmVybGF5OjpMYWJlbD4gZGVjb2RlKERlY29kZXImKTsKICNlbmRpZgogICAgICAgICAgICAgfTsK
IApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRP
dmVybGF5OjpBcmVhPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICAgICAgICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6Okhp
Z2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkFyZWE+IGRlY29kZShEZWNvZGVyJik7CiAj
ZW5kaWYKICAgICAgICAgICAgIH07CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6
R3JpZEhpZ2hsaWdodE92ZXJsYXk+IGRlY29kZShEZWNvZGVyJik7CisgICAgICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5
OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBkZWNvZGUoRGVjb2RlciYpOwogI2Vu
ZGlmCiAgICAgICAgIH07CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZHJhd0xheW91dExhYmVsKEdyYXBoaWNzQ29udGV4dCYsIFN0cmluZywgRmxvYXRQb2ludCwgTGFi
ZWxBcnJvd0RpcmVjdGlvbiwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZWxBcnJvd0VkZ2VQb3NpdGlv
biwgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gQ29sb3I6OndoaXRlLCBmbG9hdCBtYXhpbXVtV2lk
dGggPSAwKTsKIAogICAgIHZvaWQgZHJhd0dyaWRPdmVybGF5KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXkmKTsK
LSAgICBPcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRP
dmVybGF5PiBidWlsZEdyaWRPdmVybGF5KGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OkdyaWQmLCBi
b29sIG9mZnNldEJvdW5kc0J5U2Nyb2xsID0gZmFsc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheT4gYnVpbGRHcmlk
T3ZlcmxheShjb25zdCBJbnNwZWN0b3JPdmVybGF5OjpHcmlkJiwgYm9vbCBvZmZzZXRCb3VuZHNC
eVNjcm9sbCA9IGZhbHNlKTsKIAogICAgIHZvaWQgdXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQo
KTsKIApAQCAtMjc4LDcgKzI3OCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6CiAgICAgZW5j
b2RlciA8PCBsYWJlbHM7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElu
c3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk+IEluc3BlY3Rv
ck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5PiBJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRP
dmVybGF5IGdyaWRIaWdobGlnaHRPdmVybGF5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ3Jp
ZEhpZ2hsaWdodE92ZXJsYXkuY29sb3IpKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxp
Z2h0T3ZlcmxheTo6CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyb3dF
ZGdlUG9zaXRpb24pOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpMYWJlbD4gSW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6TGFiZWw6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpM
YWJlbD4gSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpHcmlkSGlnaGxpZ2h0T3ZlcmxheTo6
TGFiZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEluc3BlY3Rvck92ZXJsYXk6
OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXk6OkxhYmVsIGxhYmVsOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobGFiZWwudGV4dCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdo
bGlnaHRPdmVybGF5OjoKICAgICBlbmNvZGVyIDw8IHF1YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hs
aWdodE92ZXJsYXk6OkFyZWE+IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hs
aWdodE92ZXJsYXk6OkFyZWE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6Okdy
aWRIaWdobGlnaHRPdmVybGF5OjpBcmVhPiBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6Okdy
aWRIaWdobGlnaHRPdmVybGF5OjpBcmVhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkdyaWRIaWdobGlnaHRPdmVybGF5OjpBcmVh
IGFyZWE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmVhLm5hbWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGRl
NWNkNmU5NTE5OTg0YmE1YmQzOGYzMWI3MGQ1NzMxMjNhZTAyZWQuLjFkY2IwZTA5Y2JjZjU5OWUw
NWZiNDZhZmVlMWYyZWQ0NzYzMjdkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtOjpidWlsZE9iagogewogICAgIGJvb2wgc2hhcmVzVmVydGV4RnJhZ21lbnRTaGFk
ZXIgPSBmYWxzZTsKIAotICAgIHVzaW5nIFByb2dyYW1UeXBlVHlwZSA9IE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU+OworICAgIHVzaW5nIFByb2dyYW1U
eXBlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9n
cmFtVHlwZT47CiAgICAgYXV0byBwcm9ncmFtVHlwZSA9IFdURjo6c3dpdGNoT24obV9wcm9ncmFt
LAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFdlYkdMUHJvZ3JhbT4pIC0+IFByb2dyYW1UeXBlVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA1NGMxNTA1YmIxNzk0
OTg0ZDViYTcxZTI4MDhlOTg5OWM0NmFlM2ZlLi5hNzc4ODRkYmU1YTJjMzFiNmYwNTM5YzA0MGYz
ODdjZTdmZjkyMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmNsZWFyKE9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVySWQpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpjbGVhcihzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVy
SWQpCiB7CiAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuY2xlYXIoKTsKICAgICBtX2NvbnRlbnRTaXpl
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKaW5kZXggOWU2OWIyMzQxYjk1MWFlZmNiOWQxOWQ0MzVhOThiNjU5YjZhNTEwMS4uZjk2NjEx
MjYyMTU2YjhlY2E0MjA5YjM4NWEyZTIyOGFlYmMzMTBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTkxLDggKzkxLDggQEAgcHVi
bGljOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAot
ICAgICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQotICAgICAgICB2b2lkIHNldENl
cnRpZmljYXRlSW5mbyhjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KKyAgICAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQorICAgICAgICB2b2lkIHNldENlcnRp
ZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmlj
YXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQogCiAgICAg
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNl
OyB9CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwotICAgICAg
ICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdl
bnQ6Ok90aGVyUmVzb3VyY2UgfTsKICAgICAgICAgaW50IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3Ry
aW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjbGVhcihz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVySWQgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIFZlY3RvcjxSZXNvdXJjZURhdGEqPiByZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmlt
YXRpb25BZ2VudC5jcHAKaW5kZXggMzBkNzYyZmMzYzhjYTUzZGE3YjgzOWU0ZmY4MzEwMjAwYWRl
NzkzOS4uZDE2MTFkOThkYTE0OTY3YWU5OTk3MDEwNDlhOWIwNTM4YWI4YzY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmlt
YXRpb25BZ2VudC5jcHAKQEAgLTY1LDE0ICs2NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHBy
b3RvY29sVmFsdWVGb3JTZWNvbmRzKGNvbnN0IFNlY29uZHMmIHNlY29uZHMpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHByb3RvY29sVmFsdWVGb3JTZWNvbmRzKGNvbnN0IFNlY29uZHMm
IHNlY29uZHMpCiB7CiAgICAgaWYgKHNlY29uZHMgPT0gU2Vjb25kczo6aW5maW5pdHkoKSB8fCBz
ZWNvbmRzID09IFNlY29uZHM6Om5hbigpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBzZWNvbmRzLm1pbGxpc2Vjb25kcygpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
UHJvdG9jb2w6OkFuaW1hdGlvbjo6UGxheWJhY2tEaXJlY3Rpb24+IHByb3RvY29sVmFsdWVGb3JQ
bGF5YmFja0RpcmVjdGlvbihQbGF5YmFja0RpcmVjdGlvbiBwbGF5YmFja0RpcmVjdGlvbikKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OlBsYXliYWNrRGlyZWN0aW9u
PiBwcm90b2NvbFZhbHVlRm9yUGxheWJhY2tEaXJlY3Rpb24oUGxheWJhY2tEaXJlY3Rpb24gcGxh
eWJhY2tEaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChwbGF5YmFja0RpcmVjdGlvbikgewogICAg
IGNhc2UgUGxheWJhY2tEaXJlY3Rpb246Ok5vcm1hbDoKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OlBsYXliYWNrRGlyZWN0aW9uPiBwcm90b2Nv
bFZhbHVlRm9yUGxheWJhY2sKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6RmlsbE1vZGU+IHByb3RvY29sVmFsdWVGb3JG
aWxsTW9kZShGaWxsTW9kZSBmaWxsTW9kZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3RvY29s
OjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmlsbE1vZGUg
ZmlsbE1vZGUpCiB7CiAgICAgc3dpdGNoIChmaWxsTW9kZSkgewogICAgIGNhc2UgRmlsbE1vZGU6
Ok5vbmU6CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6
d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUUKICAgICB9
KTsKICAgICBhdXRvJiB0cmFja2luZ0RhdGEgPSBlbnN1cmVSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogCi0gICAgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3Rh
dGU+IGFuaW1hdGlvbkFuaW1hdGlvblN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6
OkFuaW1hdGlvbjo6QW5pbWF0aW9uU3RhdGU+IGFuaW1hdGlvbkFuaW1hdGlvblN0YXRlOwogCiAg
ICAgaWYgKChlbnN1cmVSZXN1bHQuaXNOZXdFbnRyeSB8fCAhaXNEZWxheWVkKHRyYWNraW5nRGF0
YS5sYXN0Q29tcHV0ZWRUaW1pbmcpKSAmJiBpc0RlbGF5ZWQoY29tcHV0ZWRUaW1pbmcpKQogICAg
ICAgICBhbmltYXRpb25BbmltYXRpb25TdGF0ZSA9IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1h
dGlvblN0YXRlOjpEZWxheWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBjMmIxODAwMzdlOTQ3Y2M2YmQ1MjZj
MzQ2Y2RjN2E4YWM2ZmZiYTFkLi4wZjcyMmRkNDJiMzE2ZWIzNmEzYzllZTVmZDFkZDdhYWEwMWYx
MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcApAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6
OlBzCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+
IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRv
SWQoUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgc3dpdGNoIChwc2V1ZG9JZCkgewogICAgIGNh
c2UgUHNldWRvSWQ6OkZpcnN0TGluZToKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgT3B0aW9u
YWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IHByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1
ZG9JZCBwc2V1ZAogICAgIH0KIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBs
ZTxSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiwgUmVmUHRy
PEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxK
U09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+Pj4+IEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgbm9kZUlkLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVQc2V1ZG8sIE9wdGlvbmFsPGJvb2w+
JiYgaW5jbHVkZUluaGVyaXRlZCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8
UmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4sIFJlZlB0cjxK
U09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4+PiBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoUHJvdG9jb2w6OkRPTTo6Tm9kZUlk
IG5vZGVJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0cmlu
ZyBlcnJvclN0cmluZzsKIApAQCAtOTM1LDcgKzkzNSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKFByb3RvY29sOjpE
T006CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6TGF5b3V0
Q29udGV4dFR5cGU+IEluc3BlY3RvckNTU0FnZW50OjpsYXlvdXRDb250ZXh0VHlwZUZvclJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6
OkxheW91dENvbnRleHRUeXBlPiBJbnNwZWN0b3JDU1NBZ2VudDo6bGF5b3V0Q29udGV4dFR5cGVG
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmIChpczxSZW5kZXJH
cmlkPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250
ZXh0VHlwZTo6R3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA4NTVkYWEzMThiZjlhNmIzNTk1MTY1ZGI1M2E0Zjgx
MDg0MzljNWNmLi5hNGM2MTI3ZDBhMmNmZDRkY2M0ZjVkZTg2YjA2OTAyOTgzZGE3NmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIENTU1N0
eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlPiBsYXlvdXRDb250ZXh0
VHlwZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRl
eHRUeXBlRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7CiAKICAgICAvLyBJbnNwZWN0b3JBZ2Vu
dEJhc2UKICAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopOwpAQCAtOTUsNyAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxS
ZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5
bGVQcm9wZXJ0eT4+PiBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpGb250Pj4gZ2V0Rm9udERhdGFGb3JOb2RlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGU+IC8qIGlubGluZVN0eWxlICovLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gLyogYXR0cmlidXRlc1N0eWxlICovPj4gZ2V0SW5saW5lU3R5bGVz
Rm9yTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7Ci0gICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4sIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4sIFJlZlB0cjxK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4+Pj4gZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQsIE9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZVBzZXVkbywgT3B0aW9uYWw8Ym9vbD4mJiBp
bmNsdWRlSW5oZXJpdGVkKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHN0ZDo6dHVwbGU8UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSdWxlTWF0Y2g+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4+PiBnZXRNYXRjaGVkU3R5bGVzRm9y
Tm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGluY2x1ZGVQc2V1ZG8sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlSW5oZXJpdGVk
KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+PiBnZXRB
bGxTdHlsZVNoZWV0cygpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+PiBnZXRTdHls
ZVNoZWV0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdldFN0eWxlU2hl
ZXRUZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldElkJik7CkBA
IC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkIHsg
MSB9OwogICAgIGJvb2wgbV9jcmVhdGluZ1ZpYUluc3BlY3RvclN0eWxlU2hlZXQgeyBmYWxzZSB9
OwogCi0gICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgT3B0aW9u
YWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZT4+IG1fbm9kZXNX
aXRoUGVuZGluZ0xheW91dENvbnRleHRUeXBlQ2hhbmdlczsKKyAgICBIYXNoTWFwPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+PiBtX25vZGVzV2l0aFBlbmRpbmdMYXlvdXRDb250
ZXh0VHlwZUNoYW5nZXM7CiAgICAgVGltZXIgbV9sYXlvdXRDb250ZXh0VHlwZUNoYW5nZWRUaW1l
cjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlQ2hhbmdl
ZE1vZGUgbV9sYXlvdXRDb250ZXh0VHlwZUNoYW5nZWRNb2RlIHsgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWRNb2RlOjpPYnNlcnZlZCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKaW5kZXggZjA0NWMzNDI2MWY1OGY3NzZlZDNhY2JhZDkxNDhmMmNhNGNkOWQz
Ny4uMjI2Yzc5NDgxZjZlN2ZiMTdlM2ViNmIzZmRhZDhlNzZhYzhmMTlhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6c2V0UmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZQogICAgIHJl
dHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNh
bnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvbDo6Q2FudmFzOjpDYW52YXNJ
ZCYgY2FudmFzSWQsIE9wdGlvbmFsPGludD4mJiBmcmFtZUNvdW50LCBPcHRpb25hbDxpbnQ+JiYg
bWVtb3J5TGltaXQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoY29uc3QgUHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzSWQm
IGNhbnZhc0lkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBmcmFtZUNvdW50LCBzdGQ6Om9wdGlvbmFs
PGludD4mJiBtZW1vcnlMaW1pdCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JT
dHJpbmc7CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpk
aWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dAogICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2FudmFzTWVtb3J5Q2hhbmdlZChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgbm9kZS0+bWVtb3J5Q29zdCgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBj
b25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JikKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNh
bnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+JikKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZS5yZW5kZXJpbmdD
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxp
bmUmIHBpcGVsaW5lKQogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKICNkZWZpbmUgUFJPQ0VT
U19BUkdVTUVOVF9ERUZJTklUSU9OKEFyZ3VtZW50VHlwZSkgXAotT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50
Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50KSBcCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQsIEFyZ3VtZW50VHlwZSBhcmd1bWVudCkgXAogeyBcCiAgICAgYXV0byBpbnNwZWN0
b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOyBc
CiAgICAgQVNTRVJUKGluc3BlY3RvckNhbnZhcyk7IFwKQEAgLTgyNSw3ICs4MjUsNyBAQCBJbnNw
ZWN0b3JDYW52YXMmIEluc3BlY3RvckNhbnZhc0FnZW50OjpiaW5kQ2FudmFzKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmIGNvbnRleAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCkpIHsKICAgICAgICAgYXV0byYgY29udGV4dFdl
YkdMID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY29udGV4dCk7Ci0gICAg
ICAgIGlmIChPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZXh0ZW5zaW9ucyA9IGNvbnRleHRXZWJH
TC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IGV4dGVuc2lvbnMgPSBjb250ZXh0V2ViR0wuZ2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucygpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uIDog
KmV4dGVuc2lvbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGV4dFdlYkdMLmV4dGVuc2lv
bklzRW5hYmxlZChleHRlbnNpb24pKQogICAgICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+ZXh0ZW5zaW9uRW5hYmxlZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
ZXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCBiZDc4NmQ5ODQ2YTJkMTFlZWExYjY0ODM1MDdj
ZmY3Y2YyOTg5MmExLi45NmY4Njg5NDI0MGE1NGFkNzQwNzc2OTYzYzMwNGUzOWI1Yjg1ZGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkPj4+IHJlcXVlc3RDbGllbnROb2Rlcyhjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Pj4gcmVzb2x2ZUNvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpDYW52
YXNJZCYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0UmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50
KGludCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFy
dFJlY29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJiwg
T3B0aW9uYWw8aW50PiYmIGZyYW1lQ291bnQsIE9wdGlvbmFsPGludD4mJiBtZW1vcnlMaW1pdCk7
CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFJlY29y
ZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJiwgc3RkOjpv
cHRpb25hbDxpbnQ+JiYgZnJhbWVDb3VudCwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgbWVtb3J5TGlt
aXQpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcFJl
Y29yZGluZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OkNhbnZhc0lkJik7CiAj
aWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFCTEUoV0VCR1BVKQogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiByZXF1ZXN0U2hhZGVyU291cmNlKGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbUlkJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q2FudmFzOjpTaGFkZXJUeXBlKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKIAogICAgIC8vIENhbnZhc09ic2VydmVy
Ci0gICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25zdCBPcHRpb25hbDxGbG9h
dFJlY3Q+JikgZmluYWw7CisgICAgdm9pZCBjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mKSBmaW5hbDsKICAgICB2b2lkIGNhbnZhc1Jlc2l6
ZWQoQ2FudmFzQmFzZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKENhbnZh
c0Jhc2UmKSBmaW5hbDsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIKICNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJB
VElPTihBcmd1bWVudFR5cGUpIFwKLSAgICBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmLCBBcmd1bWVudFR5cGUpOyBcCisgICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdV
TUVOVF9ERUNMQVJBVElPTgogICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTikKICN1bmRlZiBQUk9DRVNT
X0FSR1VNRU5UX0RFQ0xBUkFUSU9OCkBAIC0xMjgsOSArMTI4LDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHN0cnVjdCBSZWNvcmRpbmdPcHRpb25zIHsKLSAgICAgICAgT3B0aW9uYWw8bG9u
Zz4gZnJhbWVDb3VudDsKLSAgICAgICAgT3B0aW9uYWw8bG9uZz4gbWVtb3J5TGltaXQ7Ci0gICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxsb25nPiBm
cmFtZUNvdW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IG1lbW9yeUxpbWl0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICB9OwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5n
OjpJbml0aWF0b3IsIFJlY29yZGluZ09wdGlvbnMmJiA9IHsgfSk7CiAKQEAgLTE4MCw3ICsxODAs
NyBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVjb3JkaW5nQ2FudmFzSWRl
bnRpZmllcnM7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVG
cmFtZUNvdW50OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX3JlY29yZGluZ0F1dG9DYXB0
dXJlRnJhbWVDb3VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggZTYzNjJjNTZlY2E3MDA3NTRkMWE0M2U0NmEwMWY4YWVmYmM4Y2U5OC4uZDQ2MmVmYzMwNmEy
OTliNThlNzhjNWQ5NGU2ZTg3NTdlMTczNGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEzMiw3ICsxMzIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhU
ZXh0U2l6ZSA9IDEwMDAwOwogc3RhdGljIGNvbnN0IFVDaGFyIGVsbGlwc2lzVUNoYXJbXSA9IHsg
MHgyMDI2LCAwIH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+
IHBhcnNlQ29sb3IoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvck9iamVjdCkKIHsKICAgICBp
ZiAoIWNvbG9yT2JqZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTc3LDcg
KzU3Nyw3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9ySWQoUHJvdG9jb2w6OkRP
TTo6Tm9kZUlkIGlkKQogICAgIHJldHVybiBtX2lkVG9Ob2RlLmdldChpZCk7CiB9CiAKLVByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGRO
b2RlcyhQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBPcHRpb25hbDxpbnQ+JiYgZGVwdGgp
CitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVz
dENoaWxkTm9kZXMoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgc3RkOjpvcHRpb25hbDxp
bnQ+JiYgZGVwdGgpCiB7CiAgICAgaW50IHNhbml0aXplZERlcHRoOwogCkBAIC0xMDcwLDcgKzEw
NzAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM+PiBJbnNwZWN0b3JETwogICAgIHJldHVybiBidWlsZE9iamVjdEZv
ckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKCpub2RlKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8c3RkOjp0dXBsZTxTdHJpbmcgLyogc2VhcmNoSWQgKi8sIGludCAvKiByZXN1bHRDb3Vu
dCAqLz4+IEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmluZyYgcXVl
cnksIFJlZlB0cjxKU09OOjpBcnJheT4mJiBub2RlSWRzLCBPcHRpb25hbDxib29sPiYmIGNhc2VT
ZW5zaXRpdmUpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAvKiBz
ZWFyY2hJZCAqLywgaW50IC8qIHJlc3VsdENvdW50ICovPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OnBl
cmZvcm1TZWFyY2goY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmUHRyPEpTT046OkFycmF5PiYmIG5v
ZGVJZHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlKQogewogICAgIFByb3Rv
Y29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtMTI2MSw3ICsxMjYxLDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RN
b2RlRW5hYmxlZChib29sIGVuYWIKICAgICByZXR1cm4geyB9OwogfQogI2Vsc2UKLVByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVu
YWJsZWQoYm9vbCBlbmFibGVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGhpZ2hsaWdodENvbmZp
ZywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93UnVsZXJzKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChib29sIGVuYWJs
ZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmlnLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgc2hvd1J1bGVycykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JT
dHJpbmc7CiAKQEAgLTEyNzQsNyArMTI3NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFiCiB9
CiAjZW5kaWYKIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGlu
ZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKK1Byb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNv
bG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVl
PEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhp
Z2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUob3V0bGlu
ZUNvbG9yKSwgV1RGTW92ZSh1c2VQYWdlQ29vcmRpbmF0ZXMpKTsKQEAgLTEyODIsNyArMTI4Miw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRSZWN0KGludCB4LCBpbnQgeSwgaW50CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQo
UmVmPEpTT046OkFycmF5PiYmIHF1YWRPYmplY3QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29s
b3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYm
IHVzZVBhZ2VDb29yZGluYXRlcykKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKFJlZjxKU09OOjpBcnJheT4mJiBxdWFkT2JqZWN0
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91
dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsK
ICAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNl
UXVhZChXVEZNb3ZlKHF1YWRPYmplY3QpLCBxdWFkLmdldCgpKSkKQEAgLTEyOTMsNyArMTI5Myw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRRdWFkKFJlZjxKU09OOjpBcnJheT4mCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dFF1YWQ+IHF1YWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRl
cykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1
ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgc3RkOjpvcHRpb25hbDxib29sPiYmIHVz
ZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihXVEZNb3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFNlbGVjdG9yKFJl
ZjxKU09OOjpPYmoKICAgICByZXR1cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShSZWY8SlNPTjo6T2JqZWN0
PiYmIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCwgT3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkPiYmIG5vZGVJZCwgY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBv
YmplY3RJZCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHROb2RlKFJlZjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpET006Ok5vZGVJZD4mJiBub2RlSWQsIGNvbnN0
IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQpCiB7CiAgICAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hs
aWdodCgpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0dyaWRPdmVybGF5KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgIFJlZjxKU09OOjpPYmplY3Q+JiYgZ3Jp
ZENvbG9yLCBPcHRpb25hbDxib29sPiYmIHNob3dMaW5lTmFtZXMsIE9wdGlvbmFsPGJvb2w+JiYg
c2hvd0xpbmVOdW1iZXJzLCBPcHRpb25hbDxib29sPiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywg
T3B0aW9uYWw8Ym9vbD4mJiBzaG93VHJhY2tTaXplcywgT3B0aW9uYWw8Ym9vbD4mJiBzaG93QXJl
YU5hbWVzKQorSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JET01BZ2VudDo6c2hvd0dyaWRPdmVybGF5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkIG5vZGVJZCwgIFJlZjxKU09OOjpPYmplY3Q+JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgc2hvd0xpbmVOYW1lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVt
YmVycywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpv
cHRpb25hbDxib29sPiYmIHNob3dUcmFja1NpemVzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hv
d0FyZWFOYW1lcykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAg
ICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CkBAIC0xNTAy
LDcgKzE1MDIsNyBAQCBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvckRPTUFnZW50OjpzaG93R3JpZE92ZXJsYXkoSW5zcAogICAgIHJldHVybiB7IH07CiB9
CiAKLUluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZGVHcmlkT3ZlcmxheShPcHRpb25hbDxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYg
bm9kZUlkKQorSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JET01BZ2VudDo6aGlkZUdyaWRPdmVybGF5KHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkPiYmIG5vZGVJZCkKIHsKICAgICBpZiAobm9kZUlkKSB7CiAgICAgICAgIFByb3RvY29s
OjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKQEAgLTE1MTgsNyArMTUxOCw3IEBAIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVH
cmlkT3ZlcmxheShPcHRpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBJbnNwZWN0b3JET01BZ2VudDo6bW92ZVRvKFBy
b3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQsIFByb3RvY29sOjpET006Ok5vZGVJZCB0YXJnZXRO
b2RlSWQsIE9wdGlvbmFsPFByb3RvY29sOjpET006Ok5vZGVJZD4mJiBpbnNlcnRCZWZvcmVOb2Rl
SWQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3Bl
Y3RvckRPTUFnZW50Ojptb3ZlVG8oUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgUHJvdG9j
b2w6OkRPTTo6Tm9kZUlkIHRhcmdldE5vZGVJZCwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6RE9N
OjpOb2RlSWQ+JiYgaW5zZXJ0QmVmb3JlTm9kZUlkKQogewogICAgIFByb3RvY29sOjpFcnJvclN0
cmluZyBlcnJvclN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGZkNGVhMjVkNTIwZjQxMWM4YTgwZGRjMzkx
ZmMxYTNhY2YyNTljN2UuLjc0YTYwZjYxODA5MjY3NmQ4YmVlODc1MzhjOWQ2OTdmM2M1ODQzMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcXVl
cnlTZWxlY3RvcihJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3Rvcik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+PiBxdWVyeVNl
bGVjdG9yQWxsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9yKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBnZXREb2N1bWVudCgpOwotICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVxdWVzdENoaWxkTm9kZXMoSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE9wdGlvbmFsPGludD4mJiBkZXB0aCk7Cisg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZXF1ZXN0Q2hpbGRO
b2RlcyhJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxpbnQ+
JiYgZGVwdGgpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
c2V0QXR0cmlidXRlVmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRBdHRyaWJ1dGVzQXNUZXh0KEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZW1v
dmVBdHRyaWJ1dGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIo
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVySWQsIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgb3B0aW9ucyk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiByZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkV2ZW50TGlzdGVuZXJJZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllcz4+IGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGVJZCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxzdGQ6OnR1cGxlPFN0cmluZyAvKiBzZWFyY2hJZCAqLywgaW50IC8qIHJlc3VsdENvdW50
ICovPj4gcGVyZm9ybVNlYXJjaChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBSZWZQdHI8SlNPTjo6QXJy
YXk+JiYgbm9kZUlkcywgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8U3RyaW5nIC8qIHNlYXJj
aElkICovLCBpbnQgLyogcmVzdWx0Q291bnQgKi8+PiBwZXJmb3JtU2VhcmNoKGNvbnN0IFN0cmlu
ZyYgcXVlcnksIFJlZlB0cjxKU09OOjpBcnJheT4mJiBub2RlSWRzLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgY2FzZVNlbnNpdGl2ZSk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+
PiBnZXRTZWFyY2hSZXN1bHRzKGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgs
IGludCB0b0luZGV4KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IGRpc2NhcmRTZWFyY2hSZXN1bHRzKGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IHJlc29sdmVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKQEAgLTEzMywyMCArMTMz
LDIwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0SW5zcGVjdE1vZGVFbmFibGVkKGJvb2ws
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmlnKTsKICNlbHNlCi0gICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcsIE9wdGlvbmFs
PGJvb2w+JiYgc2hvd1J1bGVycyk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoYm9vbCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBoaWdobGlnaHRDb25maWcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzaG93UnVsZXJzKTsK
ICNlbmRpZgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IHJlcXVlc3ROb2RlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcHVzaE5v
ZGVCeVBhdGhUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWRlSGlnaGxpZ2h0KCk7Ci0gICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWdobGlnaHRSZWN0KGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9y
LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1
c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gaGlnaGxpZ2h0UXVhZChSZWY8SlNPTjo6QXJyYXk+JiYgcXVhZCwgUmVmUHRyPEpT
T046Ok9iamVjdD4mJiBjb2xvciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3Is
IE9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodFJlY3QoaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNl
UGFnZUNvb3JkaW5hdGVzKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IGhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5PiYmIHF1YWQsIFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGhpZ2hsaWdodFNlbGVjdG9yKFJlZjxKU09O
OjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5n
LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7Ci0gICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWdobGlnaHROb2RlKFJlZjxK
U09OOjpPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmlnLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZD4mJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0SWQmKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IGhpZ2hsaWdodE5vZGUoUmVmPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRDb25maWcs
IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+JiYsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJik7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBoaWdobGlnaHROb2RlTGlzdChS
ZWY8SlNPTjo6QXJyYXk+JiYgbm9kZUlkcywgUmVmPEpTT046Ok9iamVjdD4mJiBoaWdobGlnaHRD
b25maWcpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gaGln
aGxpZ2h0RnJhbWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYs
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0
bGluZUNvbG9yKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IHNob3dHcmlkT3ZlcmxheShJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgUmVmPEpT
T046Ok9iamVjdD4mJiBncmlkQ29sb3IsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0xpbmVOYW1lcywg
T3B0aW9uYWw8Ym9vbD4mJiBzaG93TGluZU51bWJlcnMsIE9wdGlvbmFsPGJvb2w+JiYgc2hvd0V4
dGVuZGVkR3JpZExpbmVzLCBPcHRpb25hbDxib29sPiYmIHNob3dUcmFja1NpemVzLCBPcHRpb25h
bDxib29sPiYmIHNob3dBcmVhTmFtZXMpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gaGlkZUdyaWRPdmVybGF5KE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkPiYmKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBtb3ZlVG8oSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCB0YXJnZXROb2RlSWQsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkPiYmIGluc2VydEJlZm9yZU5vZGVJZCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBzaG93R3JpZE92ZXJsYXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlSWQsIFJlZjxKU09OOjpPYmplY3Q+JiYgZ3JpZENvbG9yLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgc2hvd0xpbmVOYW1lcywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dMaW5lTnVtYmVy
cywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNob3dFeHRlbmRlZEdyaWRMaW5lcywgc3RkOjpvcHRp
b25hbDxib29sPiYmIHNob3dUcmFja1NpemVzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2hvd0Fy
ZWFOYW1lcyk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBo
aWRlR3JpZE92ZXJsYXkoc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZD4mJik7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gbW92ZVRvKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZUlkIG5vZGVJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgdGFyZ2V0
Tm9kZUlkLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiYm
IGluc2VydEJlZm9yZU5vZGVJZCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiB1bmRvKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiByZWRvKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBtYXJrVW5kb2FibGVTdGF0ZSgpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1
YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29s
b3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYm
IHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1
bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNl
UGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggMjU2NjgxNWMzYWYwYmIxYjVkMzcyN2RiYzQ2OGYzMGUzZTY0
ODIyYy4uYWU3ZmE0ODI3MzgwNjA0YjE0ZjE2MjUyYzhhODBhMmVkNGQ3MjlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaWRGaXJlVGltZXIoYm9vbCBvbmVTaG90KQogICAgIG1fZGVidWdnZXJB
Z2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAK
LVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnNldFVSTEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIE9wdGlvbmFsPGJvb2w+JiYgaXNS
ZWdleCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKQorUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0VVJMQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3B0aW9ucykKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJy
b3JTdHJpbmc7CiAKQEAgLTM0MCw3ICszNDAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRVUkxCcmVha3BvaW50KGNvbnN0CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVy
bCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgpCiB7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxVUkxzQnJlYWtwb2ludCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggODk2MDllY2ZjMGQ4Nzk2NzQxZDQ1NWEwM2U3ZGFj
MDkxZThkY2M4ZC4uODVlMDVhMzFlNWM4N2NmYjJmYmRhZDMzMDlmNzFjZDYzZDlhMDhmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAKICAgICAvLyBET01EZWJ1Z2dlckJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcgotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0VVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBp
c1JlZ2V4LCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZpbmFsOwotICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVtb3ZlVVJMQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHVybCwgT3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKKyAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFVSTEJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiB1cmwsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4LCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIG9wdGlvbnMpIGZpbmFsOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gcmVtb3ZlVVJMQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVy
bCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgpIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0RXZlbnRCcmVha3BvaW50KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvcHRpb25zKSBmaW5hbDsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHJlbW92ZUV2ZW50QnJl
YWtwb2ludChJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50
VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IDc1ZGU1N2E1ZWQ4ZjhlN2NmMGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYuLjdmODA2
ZDRmYzgxY2QyYjA0MzIyYjNkMGQ4MGJlNDQ0MDRiYmQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFy
dChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKIH0KIAogCi1z
dGF0aWMgUmVmPFByb3RvY29sOjpJbmRleGVkREI6OktleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5
UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgaWRiS2V5UGF0aCkKK3N0YXRpYyBSZWY8
UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkYktleVBhdGgpCiB7CiAgICAgaWYgKCFpZGJL
ZXlQYXRoKQogICAgICAgICByZXR1cm4gUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UGF0aDo6Y3Jl
YXRlKCkuc2V0VHlwZShQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlQYXRoOjpUeXBlOjpOdWxsKS5y
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZDk5ODNjMDA2ODMxNjM3NTIxMzBiYzY1
OGQ2ZDVkNzcwOTVmZjU5NC4uMTJhNmQzZTI3ZDRkMzkzYzNhY2NiYjdiYjYwNDU5MGUwOWUwNjA0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIFJlZjxQcm90b2NvbDo6
TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JUaW1pCiAgICAgYXV0byBlbGFwc2VkVGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9u
aWNUaW1lJiB0aW1lKSB7CiAgICAgICAgIHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0
b3B3YXRjaCgpLmVsYXBzZWRUaW1lU2luY2UodGltZSkuc2Vjb25kcygpOwogICAgIH07Ci0gICAg
T3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBlbXB0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CiAgICAgaWYgKCF0aW1pbmcpIHsKICAgICAgICAgZW1w
dHkuZW1wbGFjZSgpOwogICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKQEAgLTQ1OSw3
ICs0NTksNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIGF1dG8gaW5pdGlhdG9yT2Jq
ZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QoZG9jdW1lbnQsICZyZXF1ZXN0KTsKIAogICAgIFN0
cmluZyB1cmwgPSBsb2FkZXIgPyBsb2FkZXItPnVybCgpLnN0cmluZygpIDogcmVxdWVzdC51cmwo
KS5zdHJpbmcoKTsKLSAgICBPcHRpb25hbDxQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlPiB0
eXBlUGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5
cGU+IHR5cGVQYXlsb2FkOwogICAgIGlmICh0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3Ro
ZXJSZXNvdXJjZSkKICAgICAgICAgdHlwZVBheWxvYWQgPSBwcm90b2NvbFJlc291cmNlVHlwZTsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBm
cmFtZUlkLCBsb2FkZXJJZCwgdXJsLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KSwgc2VuZFRpbWVzdGFtcCwgd2FsbHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCksIFdURk1vdmUoaW5pdGlhdG9yT2JqZWN0KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKHJlZGlyZWN0UmVzcG9uc2UsIG51bGxwdHIpLCBXVEZNb3ZlKHR5cGVQYXlsb2FkKSwgdGFy
Z2V0SWQpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAKICAg
ICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRp
Zmllcik7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlc3BvbnNlPiByZWFsUmVzcG9uc2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlc3BvbnNlPiByZWFsUmVzcG9uc2U7CiAgICAgaWYg
KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5oYXZlUGVyZm9ybWVkU2Vj
dXJpdHlDaGVja3MocmVzcG9uc2UpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFsmXSB7CiAgICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBpc29sYXRlIHJlc3BvbnNl
IHNpbmNlIGl0IGNvbWVzIHN0cmFpZ2h0IGZyb20gSVBDLCBidXQgd2UgbWlnaHQgd2FudCB0byBp
c29sYXRlIGl0IGZvciBleHRyYSBzYWZldHkuCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudEwKICAgICBpZiAocmVzb3VyY2VEYXRhICYmIHJlc291cmNlRGF0YS0+Y2Fj
aGVkUmVzb3VyY2UoKSkKICAgICAgICAgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJj
ZSgpKTsKIAotICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gcmVhbE1ldHJpY3M7Cisg
ICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IHJlYWxNZXRyaWNzOwogICAgIGlm
IChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+c2hvdWxkUGVyZm9ybVNl
Y3VyaXR5Q2hlY2tzKCkgJiYgIW5ldHdvcmtMb2FkTWV0cmljcy5pc0NvbXBsZXRlKCkpIHsKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKICAgICAgICAgICAgIHJlYWxNZXRy
aWNzID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPm5ldHdvcmtNZXRy
aWNzRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCk7
CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVyY2VwdGlvbkVuYWJsZWQoYm9vbAogICAgIHJldHVy
biB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBQcm90b2NvbDo6TmV0
d29yazo6TmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vu
c2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihjb25zdCBTdHJp
bmcmIHVybCwgUHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
aXNSZWdleCkKIHsKICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwg
PSB1cmw7CkBAIC0xMDgyLDcgKzEwODIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihjb25zdCBTdHJpbgogICAg
IHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBQcm90
b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4m
JiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlv
bihjb25zdCBTdHJpbmcmIHVybCwgUHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3
b3JrU3RhZ2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGlu
dGVyY2VwdC51cmwgPSB1cmw7CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0
KGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgUHJv
dG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
aW50PiYmIHN0YXR1cywgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0LCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGhlYWRlcnMpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdCBQcm90b2NvbDo6TmV0d29y
azo6UmVxdWVzdElkJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNl
NjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBz
dGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBo
ZWFkZXJzKQogewogICAgIGF1dG8gcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5n
SW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZSkKQEAgLTEzNTYsNyArMTM1Niw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9z
LCAiVVRGLTgiKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291
cmNlKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6dGV4dENv
bnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7
CiAgICAgaWYgKCFJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KGNhY2hl
ZFJlc291cmNlLm1pbWVUeXBlKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTQyMSw3ICsxNDIxLDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0
PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBQcm90b2MKICAgICByZXR1cm4gc2Vh
cmNoUmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJl
c291cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhJiByZXNv
dXJjZURhdGEpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yUmVz
b3VyY2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHJlc291
cmNlRGF0YSkKIHsKICAgICBpZiAocmVzb3VyY2VEYXRhLmhhc0NvbnRlbnQoKSAmJiAhcmVzb3Vy
Y2VEYXRhLmJhc2U2NEVuY29kZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YS5jb250
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4YjJlMjk2NzA1YTVhZDdiMzdiNTVhNGZiNjY3ZmYw
ZDhkMzJmOTc5Li5lYmVkMjkyN2QxNzYxYzZiYzFmY2EzM2Y4ZjA0ZTE0YWMwMTAzNDgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIFJl
ZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBPcHRp
b25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Um
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yQ2FjaGVk
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKICAgICBzdGF0aWMgYm9vbCBjYWNoZWRSZXNvdXJj
ZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5j
b2RlZCk7CiAKICAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKQEAgLTg3LDExICs4NywxMSBAQCBw
dWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IGdl
dFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpSZXF1ZXN0SWQmKSBmaW5hbDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiByZXNv
bHZlV2ViU29ja2V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJ
ZCYsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIGZpbmFsOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0SW50ZXJjZXB0aW9uRW5hYmxlZChib29sKSBm
aW5hbDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGFkZElu
dGVyY2VwdGlvbihjb25zdCBTdHJpbmcmIHVybCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlLCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFs
PGJvb2w+JiYgaXNSZWdleCkgZmluYWw7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiByZW1vdmVJbnRlcmNlcHRpb24oY29uc3QgU3RyaW5nJiB1cmwsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSwgT3B0aW9uYWw8Ym9vbD4mJiBj
YXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlzUmVnZXgpIGZpbmFsOworICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gYWRkSW50ZXJjZXB0aW9uKGNvbnN0
IFN0cmluZyYgdXJsLCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2Us
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgaXNSZWdleCkgZmluYWw7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiByZW1vdmVJbnRlcmNlcHRpb24oY29uc3QgU3RyaW5nJiB1cmwsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNh
c2VTZW5zaXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KSBmaW5hbDsKICAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGludGVyY2VwdENvbnRpbnVl
KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSkgZmluYWw7CiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRXaXRoUmVxdWVzdChjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBwb3N0RGF0YSkgZmluYWw7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGlu
dD4mJiBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBoZWFkZXJzKSBmaW5hbDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IGludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpSZXF1ZXN0SWQmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxpbnQ+JiYgc3Rh
dHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgaGVh
ZGVycykgZmluYWw7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlcXVlc3RJZCYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRF
bmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcm
IHN0YXR1c1RleHQsIFJlZjxKU09OOjpPYmplY3Q+JiYgaGVhZGVycykgZmluYWw7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBpbnRlcmNlcHRSZXF1ZXN0V2l0
aEVycm9yKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDMzMGM3NTM2OWYxYTYwNjA3YTRkNTljYzNlZDY2NmQ1ZmViN2QyMGQu
LmY1NWNiZWYzN2UyOTRlYTdhYmU5Mzg5YTZiMGE0NGIxY2I3MWFkYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTM5NCw3ICszOTQsNyBAQCBkb3VibGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAo
KQogICAgIHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLmVsYXBzZWRU
aW1lKCkuc2Vjb25kcygpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChPcHRpb25hbDxib29sPiYmIGlnbm9yZUNhY2hlLCBPcHRp
b25hbDxib29sPiYmIHJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCitQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3Vy
Y2VzKQogewogICAgIE9wdGlvblNldDxSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAg
aWYgKGlnbm9yZUNhY2hlICYmICppZ25vcmVDYWNoZSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlVXNl
ckFnZW50KGNvbnN0IFN0cmluZwogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6b3ZlcnJpZGVTZXR0aW5nKFByb3Rv
Y29sOjpQYWdlOjpTZXR0aW5nIHNldHRpbmcsIE9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpCitQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJyaWRlU2V0
dGluZyhQcm90b2NvbDo6UGFnZTo6U2V0dGluZyBzZXR0aW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgdmFsdWUpCiB7CiAgICAgYXV0byYgaW5zcGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0
ZWRQYWdlLnNldHRpbmdzKCk7CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UGFnZTo6Q29va2llPj4+IEluc3Bl
Y3RvclBhZwogICAgIHJldHVybiBidWlsZEFycmF5Rm9yQ29va2llcyhhbGxSYXdDb29raWVzKTsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmPEpTT046Ok9iamVjdD4mJiBjb29raWVPYmpl
Y3QpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZjxKU09OOjpPYmplY3Q+JiYgY29va2ll
T2JqZWN0KQogewogICAgIENvb2tpZSBjb29raWU7CiAKQEAgLTcwMyw3ICs3MDMsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEJvb3RzdHJh
cFNjcmlwdChjb25zdCBTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPj4+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShjb25zdCBQcm90
b2NvbDo6TmV0d29yazo6RnJhbWVJZCYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgcXVlcnksIE9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9uYWw8
Ym9vbD4mJiBpc1JlZ2V4LCBjb25zdCBQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdElkJiByZXF1
ZXN0SWQpCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJj
aEluUmVzb3VyY2UoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgY2FzZVNlbnNpdGl2ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGlzUmVnZXgsIGNvbnN0IFBy
b3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0SWQmIHJlcXVlc3RJZCkKIHsKICAgICBQcm90b2NvbDo6
RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTc1Niw3ICs3NTYsNyBAQCBzdGF0aWMgUmVm
PFByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0
KGNvbnN0IFByb3RvYwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4+
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdl
eCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+Pj4gSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNl
cyhjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCkBA
IC0xMDI4LDcgKzEwMjgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5nJgogfQogCiAjaWYgRU5B
QkxFKERBUktfTU9ERV9DU1MpIHx8IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi1Qcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVh
cmFuY2UoT3B0aW9uYWw8UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2U+JiYgYXBwZWFyYW5jZSkK
K1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Rm9y
Y2VkQXBwZWFyYW5jZShzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYm
IGFwcGVhcmFuY2UpCiB7CiAgICAgaWYgKCFhcHBlYXJhbmNlKSB7CiAgICAgICAgIG1faW5zcGVj
dGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CkBAIC0x
MTA3LDcgKzExMDcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3Rv
clBhZ2VBZ2VudDo6YXJjaGl2ZSgpCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKLVBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVu
U2l6ZU92ZXJyaWRlKE9wdGlvbmFsPGludD4mJiB3aWR0aCwgT3B0aW9uYWw8aW50PiYmIGhlaWdo
dCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0
U2NyZWVuU2l6ZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8aW50PiYmIHdpZHRoLCBzdGQ6Om9wdGlv
bmFsPGludD4mJiBoZWlnaHQpCiB7CiAgICAgaWYgKHdpZHRoLmhhc192YWx1ZSgpICE9IGhlaWdo
dC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJTY3JlZW4gd2lk
dGggYW5kIGhlaWdodCBvdmVycmlkZSBzaG91bGQgYmUgYm90aCBzcGVjaWZpZWQgb3Igb21pdHRl
ZCJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuaAppbmRleCA3OGE5ODIyNGFiNTQ1MGUwNzI5NzUxNTcxZmUxYmI5NTdkMzAz
MzAxLi5kZWMzZDAwMWIxZDQxZDRmM2YyNDVjYWY1MGFkZjc4OGExOTY1MDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgK
QEAgLTk0LDI1ICs5NCwyNSBAQCBwdWJsaWM6CiAgICAgLy8gUGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5h
YmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNh
YmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiByZWxv
YWQoT3B0aW9uYWw8Ym9vbD4mJiBpZ25vcmVDYWNoZSwgT3B0aW9uYWw8Ym9vbD4mJiByZXZhbGlk
YXRlQWxsUmVzb3VyY2VzKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IHJlbG9hZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaWdub3JlQ2FjaGUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiByZXZhbGlkYXRlQWxsUmVzb3VyY2VzKTsKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IG92ZXJyaWRlVXNl
ckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gb3ZlcnJpZGVTZXR0aW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNl
dHRpbmcsIE9wdGlvbmFsPGJvb2w+JiYgdmFsdWUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gb3ZlcnJpZGVTZXR0aW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNldHRpbmcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiB2YWx1ZSk7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpDb29raWU+Pj4gZ2V0Q29va2llcygpOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0Q29va2llKFJlZjxKU09OOjpPYmplY3Q+
JiYpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGVsZXRl
Q29va2llKGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPj4gZ2V0UmVzb3VyY2VUcmVlKCk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFN0cmluZywgYm9vbCAv
KiBiYXNlNjRFbmNvZGVkICovPj4gZ2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRCb290c3RyYXBTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+PiBzZWFyY2hJblJlc291cmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OkZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlz
UmVnZXgsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYpOwot
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4+IHNlYXJjaEluUmVzb3Vy
Y2VzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPGJvb2w+JiYgY2FzZVNlbnNpdGl2ZSwgT3B0aW9u
YWw8Ym9vbD4mJiBpc1JlZ2V4KTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g+Pj4gc2VhcmNoSW5SZXNvdXJjZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpGcmFtZUlkJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVl
cnksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgaXNSZWdleCwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVz
dElkJik7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+Pj4gc2VhcmNo
SW5SZXNvdXJjZXMoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxib29sPiYmIGNhc2VTZW5z
aXRpdmUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpc1JlZ2V4KTsKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNl
dFNob3dSdWxlcnMoYm9vbCk7CiAjZW5kaWYKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IHNldFNob3dQYWludFJlY3RzKGJvb2wpOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0RW11bGF0ZWRNZWRpYShjb25zdCBTdHJp
bmcmKTsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgfHwgSEFWRShPU19EQVJLX01PREVfU1VQ
UE9SVCkKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldEZv
cmNlZEFwcGVhcmFuY2UoT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFy
YW5jZT4mJik7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBz
ZXRGb3JjZWRBcHBlYXJhbmNlKHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6QXBwZWFyYW5jZT4mJik7CiAjZW5kaWYKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPFN0cmluZz4gc25hcHNob3ROb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4g
c25hcHNob3RSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpDb29yZGluYXRlU3lzdGVtKTsKQEAgLTEyMCw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+
IGFyY2hpdmUoKTsKICNlbmRpZgogI2lmICFQTEFURk9STShDT0NPQSkKLSAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldFNjcmVlblNpemVPdmVycmlkZShPcHRp
b25hbDxpbnQ+JiYgd2lkdGgsIE9wdGlvbmFsPGludD4mJiBoZWlnaHQpOworICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0U2NyZWVuU2l6ZU92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8aW50PiYmIHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBoZWlnaHQpOwog
I2VuZGlmCiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCmluZGV4IDU0MTM3MDdiNTdkOTRlYWIyM2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUuLmI3YzZi
MGViMjM0ZmIxMDMzOWVkMWFmZDI4YTU5NzJhYTE0MDQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpc2FibGUoKQogICAgIHJldHVybiB7IH07CiB9CiAKLVByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KE9w
dGlvbmFsPGludD4mJiBtYXhDYWxsU3RhY2tEZXB0aCkKK1Byb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYm
IG1heENhbGxTdGFja0RlcHRoKQogewogICAgIG1fdHJhY2tpbmdGcm9tRnJvbnRlbmQgPSB0cnVl
OwogCkBAIC0xNzgsNyArMTc4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SW5zdHJ1bWVudHMoUmVmPEpTT046OkEKICAgICByZXR1
cm4geyB9OwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQo
T3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0RlcHRoKQordm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjppbnRlcm5hbFN0YXJ0KHN0ZDo6b3B0aW9uYWw8aW50PiYmIG1heENhbGxTdGFja0Rl
cHRoKQogewogICAgIGlmIChtX3RyYWNraW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCmluZGV4IDk0ZjdlZmY3MzU1ZjhjNWNhMGMzYmJlYjU2NGQwYjU1NmJhZjE0ZjcuLjI3Zjk2
OGUzMzAzZmRiZjI1Y2Y0ZTFkM2QyMWViODYxMjVkNzcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBA
IC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZW5h
YmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBkaXNh
YmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFy
dChPcHRpb25hbDxpbnQ+JiYgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RhcnQoc3RkOjpvcHRpb25hbDxpbnQ+JiYgbWF4
Q2FsbFN0YWNrRGVwdGgpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gc3RvcCgpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gc2V0QXV0b0NhcHR1cmVFbmFibGVkKGJvb2wpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gc2V0SW5zdHJ1bWVudHMoUmVmPEpTT046OkFycmF5PiYmKTsK
QEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBUaW1lbGluZVJlY29yZFR5cGUg
dHlwZTsKICAgICB9OwogCi0gICAgdm9pZCBpbnRlcm5hbFN0YXJ0KE9wdGlvbmFsPGludD4mJiBt
YXhDYWxsU3RhY2tEZXB0aCk7CisgICAgdm9pZCBpbnRlcm5hbFN0YXJ0KHN0ZDo6b3B0aW9uYWw8
aW50PiYmIG1heENhbGxTdGFja0RlcHRoKTsKICAgICB2b2lkIGludGVybmFsU3RvcCgpOwogICAg
IGRvdWJsZSB0aW1lc3RhbXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5jcHAKaW5kZXggOWFjZmU0ZGQ0YjE2MGVl
OWIzODkxMGNjOWM3NWEyNDEyNGNlZmVkZi4uZDUxMGRjMTcwNThlMTJiYWRlOWFlMDkyZDgwMTll
YTg2YzhkMzM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhZ2VBdWRpdEFn
ZW50OjpQYWdlQXVkaXRBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBQYWdlQXVk
aXRBZ2VudDo6flBhZ2VBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwogCi1JbmplY3RlZFNjcmlwdCBQ
YWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKE9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0
ZWRTY3JpcHQgUGFnZUF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29u
dGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpCiAgICAgICAgIHJldHVybiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250
ZXh0SWQpOwpAQCAtNjUsNyArNjUsNyBAQCBJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOgogICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IFBhZ2VBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZv
ckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9j
b2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJ
bmplY3RlZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoV1RG
TW92ZShleGVjdXRpb25Db250ZXh0SWQpKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZUF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQXVkaXRBZ2VudC5oCmluZGV4IDY5M2ZhYzMyNzQ2OWE5MDQ0ZDg3MDE3NmZhYTJhMWQ0
OWZiYTFiMzkuLjdlYjk1YTZkZmE4ZjY0NjdmMzcwMDFkZDlhYzdhM2QyZjVkYzgzYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRB
Z2VudC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB+UGFnZUF1ZGl0QWdlbnQoKTsK
IAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
Rm9yRXZhbChPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25D
b250ZXh0SWQ+JiYpOwotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKKyAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7
CisgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKICAgICB2b2lkIHBv
cHVsYXRlQXVkaXRPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+JiBhdWRpdE9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDVmZjk1NmMwZDUyMjc2ZjljOTQwNDg2ZmY1YzAwZDQ1YjhmZmM1ODguLjZjMjA3MmM0Mjk5NGNl
N2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApA
QCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1l
bnRVcGRhdGVkKEZyYW1lJiBmcmFtZSkKIH0KIAogCi1zdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBj
YWxjdWxhdGVEaXN0YW5jZShOb2RlJiBjaGlsZCwgTm9kZSYgYW5jZXN0b3IpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGNhbGN1bGF0ZURpc3RhbmNlKE5vZGUmIGNoaWxkLCBOb2RlJiBh
bmNlc3RvcikKIHsKICAgICBzaXplX3QgZGlzdGFuY2UgPSAwOwogCkBAIC0xODIsNyArMTgyLDcg
QEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFy
ZW50KQogICAgIGlmIChtX2RvbVN1YnRyZWVNb2RpZmllZEJyZWFrcG9pbnRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBjbG9zZXN0RGlzdGFuY2U7
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNsb3Nlc3REaXN0YW5jZTsKICAgICBSZWZQdHI8
SlNDOjpCcmVha3BvaW50PiBjbG9zZXN0QnJlYWtwb2ludDsKICAgICBOb2RlKiBjbG9zZXN0QnJl
YWtwb2ludE93bmVyID0gbnVsbHB0cjsKIApAQCAtMjE4LDkgKzIxOCw5IEBAIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKG1f
ZG9tTm9kZVJlbW92ZWRCcmVha3BvaW50cy5pc0VtcHR5KCkgJiYgbV9kb21TdWJ0cmVlTW9kaWZp
ZWRCcmVha3BvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFs
PHNpemVfdD4gY2xvc2VzdERpc3RhbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjbG9z
ZXN0RGlzdGFuY2U7CiAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gY2xvc2VzdEJyZWFrcG9p
bnQ7Ci0gICAgT3B0aW9uYWw8UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlw
ZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkRP
TURlYnVnZ2VyOjpET01CcmVha3BvaW50VHlwZT4gY2xvc2VzdEJyZWFrcG9pbnRUeXBlOwogICAg
IE5vZGUqIGNsb3Nlc3RCcmVha3BvaW50T3duZXIgPSBudWxscHRyOwogCiAgICAgZm9yIChhdXRv
IFticmVha3BvaW50T3duZXIsIGJyZWFrcG9pbnRdIDogbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9p
bnRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3NDZkYTFhNGQzZTAzYTg3MWI3ODgwYTNl
NTI4NTZiMGVkMjgzNWNkLi5lNmMxZDAxODBjNGJjYzg5NWQyOTU0MTI1YjQ2MTkxN2M1ZjVhZDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURl
YnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBQYWdlRGVidWdn
ZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdlbnQoKSA9PSB0aGlzICYmIFdlYkRlYnVnZ2VyQWdlbnQ6
OmVuYWJsZWQoKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Ro
cm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZURlYnVn
Z2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWVJZCYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgT3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJh
dGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYg
ZW11bGF0ZVVzZXJHZXN0dXJlKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Lyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAq
Lz4+IFBhZ2VEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZh
bHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2Vz
dHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUo
bV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVy
ZSk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3Bv
aW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIG1f
aW5zcGVjdGVkUGFnZS5jb25zb2xlKCkuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0
aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25D
b250ZXh0SWQpCitJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250
ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpK
U0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVj
dGVkUGFnZS5tYWluRnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IGVlODE0Njc0NTI4Yjkz
YjQ2MDhkNzdiODViOTlmOTFlMGEwNDRiMWUuLjE3ODgxYjExNGUzMzA5ZDdkM2I3ODBkZTBkYWIz
YTIwNDRmYmJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKIAogICAgIC8vIERlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyCi0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBP
cHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIE9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1
bHRJbmRleCAqLz4+IGV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgT3B0aW9uYWw8Ym9vbD4mJiBnZW5l
cmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4m
JiBlbXVsYXRlVXNlckdlc3R1cmUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8c3RkOjp0dXBsZTxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9u
YWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05v
dFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBy
ZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxh
dGVVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKICAgICB2b2lk
IGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9p
bnQ6OkFjdGlvbiYpOwpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbXV0ZUNv
bnNvbGUoKTsKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKTsKIAotICAgIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0
aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
KTsKIAogICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKICAgICBWZWN0b3I8VW5pcXVlUmVmPFVz
ZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU+PiBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVt
dWxhdGlvblNjb3BlU3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMDBlNjlmMWFhMmUzZjhl
YTJmNDQ1ZThkZDQ0NmRkMTZlYTYzNjNkZi4uYjMyZjNmNjk5YzJkMmEzNzcyODk3NjBiMjQ1YWM4
MTc4NDEwMjQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFt
ZSwgRE9NV3JhcHBlcldvcmxkCiAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQocGFnZUFnZW50LT5m
cmFtZUlkKCZmcmFtZSksIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCksIHdvcmxk
KTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQor
SW5qZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFBy
b3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAg
ICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVj
dCogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWlu
RnJhbWUoKSk7CkBAIC0xODksMTMgKzE4OSwxMyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5v
dGlmeUNvbnRleHRDcmVhdGVkKGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcgog
ICAgICAgICAucmVsZWFzZSgpKTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0
dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+
IC8qIHdhc1Rocm93biAqLywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4g
UGFnZVJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhl
Y3V0aW9uQ29udGV4dElkLCBPcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFs
PGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBPcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIE9w
dGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQorUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2
ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpv
cHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5l
cmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGUgdXNlckdlc3R1cmVTY29wZShtX2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2Vz
dHVyZSAmJiAqZW11bGF0ZVVzZXJHZXN0dXJlKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRl
Q29tbWFuZExpbmVBUEkpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSksIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVl
KSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3Zl
KGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYWw8Ym9v
bD4gLyogd2FzVGhyb3duICovPj4gUGFnZVJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29u
c3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgb3B0aW9uYWxBcmd1bWVudHMs
IE9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBP
cHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIE9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQ
cmV2aWV3LCBPcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKK1Byb3RvY29sOjpF
cnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IFBhZ2VSdW50aW1lQWdl
bnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJ
ZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEpTT046OkFycmF5
PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlW
YWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25h
bDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUVtdWxhdGlv
blNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1
cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVyZSk7CiAgICAgcmV0dXJuIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Y2FsbEZ1bmN0aW9uT24ob2JqZWN0SWQsIGV4cHJlc3Npb24sIFdURk1vdmUob3B0aW9u
YWxBcmd1bWVudHMpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2VuZXJhdGVQcmV2aWV3KSwgV1RG
TW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDI5ODQ2NWM1MmI0
MjQ2NGMyNzMzNjU5ZTA3ZjNmNzYwMTc0YTk1ZWIuLjZhYmEzYTJjNmU4YmJiN2EwYmNhNGYwNzgy
NGNmNGRlOGNlMzZmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTYsMTUgKzU2LDE1IEBAIHB1Ymxp
YzoKICAgICAvLyBSdW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBlbmFibGUoKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGRpc2FibGUoKTsKLSAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAq
LywgT3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBPcHRpb25hbDxi
b29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiwgT3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5C
eVZhbHVlLCBPcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgT3B0aW9uYWw8Ym9vbD4m
JiBzYXZlUmVzdWx0LCBPcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7Ci0gICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hbDxib29sPiAvKiB3
YXNUaHJvd24gKi8+PiBjYWxsRnVuY3Rpb25Pbihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3RJZCYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRy
PEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIE9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwg
T3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIE9wdGlvbmFsPGJvb2w+JiYgZW11bGF0
ZVVzZXJHZXN0dXJlKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0
ZDo6dHVwbGU8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4g
Lyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1
cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVV
c2VyR2VzdHVyZSk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IGNhbGxGdW5jdGlvbk9uKGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkJiwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdl
bmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7
CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICB2b2lkIGZyYW1lTmF2aWdh
dGVkKEZyYW1lJik7CiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUm
LCBET01XcmFwcGVyV29ybGQmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNv
bnRleHRJZD4mJik7CisgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAg
ICAgdm9pZCBtdXRlQ29uc29sZSgpOwogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpOwogICAgIHZv
aWQgcmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVs
YXRpb25TY29wZS5jcHAKaW5kZXggMmI5MDczNTdjYmNiYWI1YjUwOWU5ZDU4MmMwMzRjZDA4ZjNj
NGU5Zi4uZjg5NzdkNjNiMDkzZDNiMDEyZWE3MmE1MzZjMDMxOWRjZTUzZjFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9V
c2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUpCiAg
ICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQoaW5zcGVjdGVkUGFnZS5jaHJvbWUoKS5jbGllbnQoKSkK
LSAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6
bnVsbG9wdCkKKyAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBz
dGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogc3RkOjpudWxsb3B0KQogICAgICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0
ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2VyV2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRp
dEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckF1ZGl0QWdlbnQuY3BwCmluZGV4IDUxNTkwNDRiYWViMDA0ZDA3ZWI2ZDQ2ZjE3MDNiN2MyMDg3
OTgxNDguLjhmN2UxNWVkOTVmMWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckF1ZGl0QWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFdvcmtlckF1ZGl0QWdlbnQ6Oldvcmtl
ckF1ZGl0QWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogCiBXb3JrZXJBdWRpdEFn
ZW50Ojp+V29ya2VyQXVkaXRBZ2VudCgpID0gZGVmYXVsdDsKIAotSW5qZWN0ZWRTY3JpcHQgV29y
a2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250
ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQorSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJleGVjdXRpb25Db250ZXh0SWQgaXMgbm90IHN1cHBv
cnRlZCBmb3Igd29ya2VycyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCJf
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuaAppbmRleCA4NTUyMDc5ODUwZTUwZGVlODVjZTIyNzRiOWY0NTVi
NDQ5NDMzNTk1Li5mZGE5NDgyNWFhNDU0MDgwZDk2OTZkZTBiZTQ5ZDNmNDE2NzY1MzE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRp
dEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQXVkaXRBZ2VudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB+V29ya2VyQXVk
aXRBZ2VudCgpOwogCiBwcml2YXRlOgotICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0
aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
KTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAogICAgIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAKaW5kZXggNTA0NzJjZDgxMDUxNDBhNzNlZGJmNzY4MjcyM2Q3YmMyZjJlNWFk
MC4uZDQ2ODQzZmQ2Y2I4MDBkYWJlNTE1MTdjZmExMDQ2MGZjYzdlNDVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWMKICAgICBtX2dsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpKSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBPcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKK0luamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0
Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFs
PFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4
dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiZXhlY3V0aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMg
dGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmgKaW5kZXggODQzM2UzYmNhZmY4MzdlYzFlYTMxOGU0OGVhZDBmNjY1OWExZDU2ZC4uZjg5
NmNhODY0YjlkNmNlOTc4Y2QwMTgwOGZmNWEwMTc5M2M0YjE3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbXV0ZUNvbnNvbGUo
KSB7IH0KICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSB7IH0KIAotICAgIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0
aW9uQ29udGV4dElkPiYmKTsKKyAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
KTsKIAogICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDEyYjgwMGZjNzhkYTc0ODE5ODQ0MjdlMzJk
MjBhOTE1MGRiODZjMTcuLjU4MGRjMGE5M2IzNjc3ODFmNzI4OTk1ZGIxYWVkYmViMzdjMTJiYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpID0gZGVmYXVsdDsK
IAotSW5qZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCitJbmpl
Y3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90
b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAg
IGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiZXhlY3V0
aW9uQ29udGV4dElkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25s
eSBvbmUgZXhlY3V0aW9uIGNvbnRleHQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IGI5
MmRiMzczZTYxNWMxODg3NjNkN2I4NzEzYmRiMDA2ZjMyYjg0NTIuLmE4NGQ4NzU3ZDBlN2MzNDNj
YWY2ZmMyYzgwMzVhOWM3ZGEzYmYxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICB+V29ya2VyUnVudGltZUFnZW50KCk7CiAKIHByaXZhdGU6
Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOworICAgIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBtdXRlIGNv
bnNvbGUgZm9yIHdvcmtlcnMuCiAgICAgdm9pZCBtdXRlQ29uc29sZSgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDU2YzFlODFiMWE5NWZhZTYxYjA4YzZm
YjAzZWE5ZDM4ZTNjOTkyNTMuLjVjZTBkM2JiMTVlNzcxN2FkMGM2YjliY2QzNTgyMGFkNDBhYzdj
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTQ5LDExICs0
OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBCb3gmKTsKIAogICAg
IHZvaWQgc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmLCAgSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyk7Ci0gICAgT3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25z
dHJhaW50cz4gaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IGludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjbGVh
ckludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94Jik7CiAKICAgICB2b2lkIHNldElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKSB7IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJp
bnNpY1dpZHRoQ29uc3RyYWludHM7IH0KLSAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzPiBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0
aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QmxvY2s7IH0KICAgICBi
b29sIGlzSW5saW5lRm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OklubGluZTsgfQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIExheW91dFN0YXRl
JiBtX2xheW91dFN0YXRlOwogICAgIFJlZjxGbG9hdGluZ1N0YXRlPiBtX2Zsb2F0aW5nU3RhdGU7
CiAgICAgSGFzaE1hcDxjb25zdCBCb3gqLCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2lu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3hlczsKLSAgICBPcHRpb25hbDxJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHM7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgV2Vha0xpc3RIYXNoU2V0CiAgICAgT3V0
T2ZGbG93Qm94TGlzdCBtX291dE9mRmxvd0JveGVzOwogICAgIFR5cGUgbV90eXBlOwpAQCAtOTgs
NyArOTgsNyBAQCBpbmxpbmUgdm9pZCBGb3JtYXR0aW5nU3RhdGU6OmNsZWFySW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyhjb25zdCBCb3gmIGxheW91dEJveAogICAgIG1faW50cmluc2ljV2lkdGhD
b25zdHJhaW50c0ZvckJveGVzLnJlbW92ZSgmbGF5b3V0Qm94KTsKIH0KIAotaW5saW5lIE9wdGlv
bmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0ZTo6aW50cmluc2lj
V2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0
ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoJm1fbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94
KGxheW91dEJveCkgPT0gdGhpcyk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1faW50cmluc2ljV2lk
dGhDb25zdHJhaW50c0ZvckJveGVzLmZpbmQoJmxheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0UGhhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRQaGFzZS5oCmluZGV4IGQzZTk4Yzg4ZmZiMjgyOGYwYjUxNDc2YWZiMjBjNzAxYTYwOWNm
ODMuLjY2NzU5NTUxNjFkZDcyYjNkMDA4YmFmNjE3MjcyYTJlZjQ0MmUyODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRQaGFzZS5oCkBAIC01MCw5ICs1MCw5IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNldChUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQogICAgIHZvaWQgcmVzZXQoKSB7
IG1fdHlwZSA9IHsgfTsgfQotICAgIE9wdGlvbmFsPFR5cGU+IG9wZXJhdG9yKigpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICBPcHRpb25hbDxUeXBlPiBtX3R5cGU7CisgICAg
c3RkOjpvcHRpb25hbDxUeXBlPiBtX3R5cGU7CiB9OwogCiBjbGFzcyBQaGFzZVNjb3BlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5kZXggN2JjYzViZmVmMjM2Y2NlNzE4MGMzNzM1
OTk5YzdiMTIyYzUzNWJiMS4uZjkwYmNmMDA4M2Q5Y2IyMTI5MjAxYWM2ZDkwZmRjODcxNjViN2My
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBz
dHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsKIAogc3RydWN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMgewogICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBsb2dpY2FsSGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhl
aWdodDsKIH07CiAKIHN0cnVjdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgewpAQCAtMTkz
LDEzICsxOTMsMTMgQEAgc3RydWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewogfTsKIAog
c3RydWN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzIHsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiB3aWR0aDsKLSAgICBPcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxV
c2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOwogfTsKIAogc3RydWN0IE92ZXJyaWRkZW5WZXJ0
aWNhbFZhbHVlcyB7CiAgICAgLy8gQ29uc2lkZXIgY29sbGFwc2luZyBpdC4KLSAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWln
aHQ7CiB9OwogCiBpbmxpbmUgTGF5b3V0VW5pdCB0b0xheW91dFVuaXQoSW5saW5lTGF5b3V0VW5p
dCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKaW5kZXggYzM5ZDU2NTM0NDU3
NDRkMmZhNjIyODhmM2EyOWZkZTk2ZGZjMWY4My4uNmM3NDVmMjBkZjlkZmI5YzI4YWE3NGZmYTJi
YThmNzk4MDFiNTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKQEAgLTM0LDgg
KzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIHN0cnVj
dCBDb21wdXRlZFZlcnRpY2FsTWFyZ2luIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBiZWZv
cmU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0ZXI7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBiZWZvcmU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhZnRlcjsK
IH07CiAKIHN0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4gewpAQCAtNDYsOCArNDYsOCBAQCBzdHJ1
Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAgICBOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFw
c2VkVmFsdWVzOwogCiAgICAgc3RydWN0IENvbGxhcHNlZFZhbHVlcyB7Ci0gICAgICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGJlZm9yZTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYWZ0
ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYmVmb3JlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGFmdGVyOwogICAgICAgICBib29sIGlzQ29sbGFwc2Vk
VGhyb3VnaCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2Vk
VmFsdWVzOwpAQCAtNjIsOCArNjIsOCBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKICAg
ICAgICAgc3RydWN0IFZhbHVlcyB7CiAgICAgICAgICAgICBib29sIGlzTm9uWmVybygpIGNvbnN0
IHsgcmV0dXJuIHBvc2l0aXZlLnZhbHVlX29yKDApIHx8IG5lZ2F0aXZlLnZhbHVlX29yKDApOyB9
CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBvc2l0aXZlOwotICAgICAgICAg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbmVnYXRpdmU7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IHBvc2l0aXZlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBuZWdhdGl2ZTsKICAgICAgICAgICAgIGJvb2wgaXNRdWlyayB7IGZhbHNlIH07CiAg
ICAgICAgIH07CiAgICAgICAgIFZhbHVlcyBiZWZvcmU7CkBAIC04NSw4ICs4NSw4IEBAIHN0YXRp
YyBpbmxpbmUgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcihjb25zdCBVc2VkVmVydGljYWxNYXJnaW4m
IHVzZWRWZXJ0aWNhbE1hcmdpCiB9CiAKIHN0cnVjdCBDb21wdXRlZEhvcml6b250YWxNYXJnaW4g
ewotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGVuZDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHN0YXJ0OworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZW5kOwogfTsKIAogc3RydWN0IFVzZWRIb3Jpem9udGFsTWFy
Z2luIHsKQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsKIHN0
cnVjdCBQcmVjb21wdXRlZE1hcmdpbkJlZm9yZSB7CiAgICAgTGF5b3V0VW5pdCB1c2VkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBjb2xsYXBzZWRWYWx1ZS52YWx1ZV9vcihub25Db2xsYXBzZWRWYWx1
ZSk7IH0KICAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZFZhbHVlOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGNvbGxhcHNlZFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29sbGFwc2VkVmFsdWU7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0
aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5CZWZvcmU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5k
ZXggOWMxZTg3ZjQzMjZiZjdlMmRlYzA4OTEyZGU2MmU5OWZmM2NmMjA0ZC4uZDM1Zjk0MjBlNWE3
MDZhNzgyMzRkYzkzZTA5MzdkZmNlZTM3YzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6
CiAgICAgc3RydWN0IExlZnRSaWdodEluZGV4IHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIWxlZnQgJiYgIXJpZ2h0O30KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbGVmdDsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHJpZ2h0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBsZWZ0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiByaWdodDsKICAgICB9OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9m
bG9hdFBhaXIuaXNFbXB0eSgpOyB9CkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICBQb3Np
dGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxDb25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0aWNhbFBvc2l0aW9uOyB9CiAKICAgICBzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsK
LSAgICAgICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBsZWZ0OwotICAgICAgICBP
cHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gbGVmdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+IHJpZ2h0OwogICAgIH07CiAgICAgSG9yaXpvbnRhbENvbnN0
cmFpbnRzIGhvcml6b250YWxDb25zdHJhaW50cygpIGNvbnN0OwogICAgIFBvc2l0aW9uSW5Db250
ZXh0Um9vdCBib3R0b20oKSBjb25zdDsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgSXRlcmF0b3IgewogcHVibGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IEZsb2F0aW5nU3RhdGU6
OkZsb2F0TGlzdCYsIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gdmVydGljYWxQb3Np
dGlvbik7CisgICAgSXRlcmF0b3IoY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0Jiwgc3Rk
OjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHZlcnRpY2FsUG9zaXRpb24pOwogCiAg
ICAgY29uc3QgRmxvYXRQYWlyJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7
IH0KICAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwpAQCAtMTY3LDggKzE2Nyw4IEBAIHN0YXRp
YyBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBMCiAKIHN0YXRpYyBGbG9hdFBhaXI6OkxlZnRSaWdodEluZGV4IGZp
bmRBdmFpbGFibGVQb3NpdGlvbihGbG9hdEF2b2lkZXImIGZsb2F0QXZvaWRlciwgY29uc3QgRmxv
YXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMpCiB7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25J
bkNvbnRleHRSb290PiBib3R0b21Nb3N0OwotICAgIE9wdGlvbmFsPEZsb2F0UGFpcjo6TGVmdFJp
Z2h0SW5kZXg+IGlubmVyTW9zdExlZnRBbmRSaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gYm90dG9tTW9zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UGFp
cjo6TGVmdFJpZ2h0SW5kZXg+IGlubmVyTW9zdExlZnRBbmRSaWdodDsKICAgICBhdXRvIGVuZCA9
IExheW91dDo6ZW5kKGZsb2F0cyk7CiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oZmxv
YXRzLCB7IGZsb2F0QXZvaWRlci50b3AoKSB9KTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9y
KSB7CiAgICAgICAgIEFTU0VSVCghKCppdGVyYXRvcikuaXNFbXB0eSgpKTsKQEAgLTI0NSw3ICsy
NDUsNyBAQCBMYXlvdXRQb2ludCBGbG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQoY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6bwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgIGlmIChs
YXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKSB7CiAgICAgICAgIC8vIFRoZSB2ZXJ0aWNhbCBwb3Np
dGlvbiBjYW5kaWRhdGUgbmVlZHMgdG8gY2xlYXIgdGhlIGV4aXN0aW5nIGZsb2F0cyBpbiB0aGlz
IGNvbnRleHQuCi0gICAgICAgIGF1dG8gZmxvYXRCb3R0b20gPSBbJl0oKSAtPiBPcHRpb25hbDxM
YXlvdXRVbml0PiB7CisgICAgICAgIGF1dG8gZmxvYXRCb3R0b20gPSBbJl0oKSAtPiBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IHsKICAgICAgICAgICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxl
KCkuY2xlYXIoKSkgewogICAgICAgICAgICAgY2FzZSBDbGVhcjo6TGVmdDoKICAgICAgICAgICAg
ICAgICByZXR1cm4gbGVmdEJvdHRvbSgpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIExheW91dFBvaW50
IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JOb25GbG9hdGluZ0Zsb2F0QXZvaWRlcihjb25z
dCBCb3gmIGxheW91CiAgICAgcmV0dXJuIHsgZmxvYXRBdm9pZGVyLmxlZnQoKSAtIGNvbnRhaW5p
bmdCbG9ja1RvcExlZnQueCgpLCBmbG9hdEF2b2lkZXIudG9wKCkgLSBjb250YWluaW5nQmxvY2tU
b3BMZWZ0LnkoKSB9OwogfQogCi1PcHRpb25hbDxGbG9hdGluZ0NvbnRleHQ6OlBvc2l0aW9uV2l0
aENsZWFyYW5jZT4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5j
ZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRpbmdDb250
ZXh0OjpQb3NpdGlvbldpdGhDbGVhcmFuY2U+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3Np
dGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpOwogICAgIEFTU0VSVChhcmVGbG9hdHNIb3Jp
em9udGFsbHlTb3J0ZWQobV9mbG9hdGluZ1N0YXRlKSk7CkBAIC0zMDcsNyArMzA3LDcgQEAgT3B0
aW9uYWw8RmxvYXRpbmdDb250ZXh0OjpQb3NpdGlvbldpdGhDbGVhcmFuY2U+IEZsb2F0aW5nQ29u
dGV4dDo6dmVydGljYWxQb3NpdGkKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBib3R0b20gPSBbJl0oYXV0byBmbG9hdEJvdHRvbSkgLT4gT3B0aW9u
YWw8UG9zaXRpb25XaXRoQ2xlYXJhbmNlPiB7CisgICAgYXV0byBib3R0b20gPSBbJl0oYXV0byBm
bG9hdEJvdHRvbSkgLT4gc3RkOjpvcHRpb25hbDxQb3NpdGlvbldpdGhDbGVhcmFuY2U+IHsKICAg
ICAgICAgaWYgKCFmbG9hdEJvdHRvbSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IC8vIDkuNS4yIENvbnRyb2xsaW5nIGZsb3cgbmV4dCB0byBmbG9hdHM6IHRoZSAnY2xlYXInIHBy
b3BlcnR5CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBPcHRpb25hbDxGbG9hdGluZ0NvbnRleHQ6OlBv
c2l0aW9uV2l0aENsZWFyYW5jZT4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aQogICAg
IHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6
Ym90dG9tKENsZWFyIHR5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZsb2F0
aW5nQ29udGV4dDo6Ym90dG9tKENsZWFyIHR5cGUpIGNvbnN0CiB7CiAgICAgLy8gVE9ETzogQ3Vy
cmVudGx5IHRoaXMgaXMgb25seSBjYWxsZWQgb25jZSBmb3IgZWFjaCBmb3JtYXR0aW5nIGNvbnRl
eHQgcm9vdCB3aXRoIGZsb2F0cyBwZXIgbGF5b3V0LgogICAgIC8vIENhY2hlIHRoZSB2YWx1ZSBp
ZiB3ZSBlbmQgdXAgY2FsbGluZyBpdCBtb3JlIGZyZXF1ZW50bHkgKGFuZCB1cGRhdGUgaXQgYXQg
YXBwZW5kL3JlbW92ZSkuCi0gICAgYXV0byBib3R0b20gPSBPcHRpb25hbDxMYXlvdXRVbml0PiB7
IH07CisgICAgYXV0byBib3R0b20gPSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKICAg
ICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZsb2F0aW5nU3RhdGUoKS5mbG9hdHMoKSkgewogICAg
ICAgICBpZiAoKHR5cGUgPT0gQ2xlYXI6OkxlZnQgJiYgIWZsb2F0SXRlbS5pc0xlZnRQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICB8fCAodHlwZSA9PSBDbGVhcjo6UmlnaHQgJiYgZmxvYXRJdGVt
LmlzTGVmdFBvc2l0aW9uZWQoKSkpCkBAIC0zNzgsOSArMzc4LDkgQEAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gRmxvYXRpbmdDb250ZXh0Ojpib3R0b20oQ2xlYXIgdHlwZSkgY29uc3QKICAgICByZXR1
cm4gYm90dG9tOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGbG9hdGluZ0NvbnRleHQ6OnRv
cCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZsb2F0aW5nQ29udGV4dDo6dG9w
KCkgY29uc3QKIHsKLSAgICBhdXRvIHRvcCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAg
ICBhdXRvIHRvcCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4geyB9OwogICAgIGZvciAoYXV0
byYgZmxvYXRJdGVtIDogZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpKQogICAgICAgICB0b3AgPSAh
dG9wID8gZmxvYXRJdGVtLnJlY3RXaXRoTWFyZ2luKCkudG9wKCkgOiBzdGQ6Om1pbigqdG9wLCBm
bG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKS50b3AoKSk7CiAgICAgcmV0dXJuIHRvcDsKQEAgLTU3
NSw4ICs1NzUsOCBAQCBib29sIEZsb2F0UGFpcjo6b3BlcmF0b3IgPT0oY29uc3QgRmxvYXRQYWly
JiBvdGhlcikgY29uc3QKIAogRmxvYXRQYWlyOjpIb3Jpem9udGFsQ29uc3RyYWludHMgRmxvYXRQ
YWlyOjpob3Jpem9udGFsQ29uc3RyYWludHMoKSBjb25zdAogewotICAgIE9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gbGVmdEVkZ2U7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRl
eHRSb290PiByaWdodEVkZ2U7CisgICAgc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+IGxlZnRFZGdlOworICAgIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBy
aWdodEVkZ2U7CiAKICAgICBpZiAobGVmdCgpKQogICAgICAgICBsZWZ0RWRnZSA9IFBvc2l0aW9u
SW5Db250ZXh0Um9vdCB7IGxlZnQoKS0+cmVjdFdpdGhNYXJnaW4oKS5yaWdodCgpIH07CkBAIC01
OTMsOCArNTkzLDggQEAgUG9zaXRpb25JbkNvbnRleHRSb290IEZsb2F0UGFpcjo6Ym90dG9tKCkg
Y29uc3QKICAgICBhdXRvKiByaWdodCA9IHRoaXMtPnJpZ2h0KCk7CiAgICAgQVNTRVJUKGxlZnQg
fHwgcmlnaHQpOwogCi0gICAgYXV0byBsZWZ0Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhN
YXJnaW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHJpZ2h0Qm90dG9t
ID0gcmlnaHQgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250
ZXh0Um9vdCB7IHJpZ2h0LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxs
b3B0OworICAgIGF1dG8gbGVmdEJvdHRvbSA9IGxlZnQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJn
aW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0g
cmlnaHQgPyBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNv
bnRleHRSb290IHsgcmlnaHQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAobGVmdEJvdHRvbSAmJiByaWdodEJvdHRvbSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4KCpsZWZ0Qm90dG9tLCAqcmlnaHRCb3R0b20pOwpAQCAtNjA1LDcgKzYwNSw3
IEBAIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBGbG9hdFBhaXI6OmJvdHRvbSgpIGNvbnN0CiAgICAg
cmV0dXJuICpyaWdodEJvdHRvbTsKIH0KIAotSXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IEZsb2F0
aW5nU3RhdGU6OkZsb2F0TGlzdCYgZmxvYXRzLCBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+IHZlcnRpY2FsUG9zaXRpb24pCitJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgRmxvYXRpbmdT
dGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMsIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRS
b290PiB2ZXJ0aWNhbFBvc2l0aW9uKQogICAgIDogbV9mbG9hdHMoZmxvYXRzKQogICAgICwgbV9j
dXJyZW50KGZsb2F0cykKIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBJdGVyYXRvcjo6SXRlcmF0b3Io
Y29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMsIE9wdGlvbmFsPFBvc2l0aW9u
SW5DbwogICAgICAgICBzZXQoKnZlcnRpY2FsUG9zaXRpb24pOwogfQogCi1pbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxvYXRpbmdU
eXBlLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpGbG9hdExpc3QmIGZsb2F0cywgdW5zaWduZWQgY3Vy
cmVudEluZGV4KQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmV2aW91
c0Zsb2F0aW5nSW5kZXgoRmxvYXQgZmxvYXRpbmdUeXBlLCBjb25zdCBGbG9hdGluZ1N0YXRlOjpG
bG9hdExpc3QmIGZsb2F0cywgdW5zaWduZWQgY3VycmVudEluZGV4KQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGN1cnJlbnRJbmRleCA8PSBmbG9hdHMuc2l6ZSgpKTsKIApAQCAtNjMzLDcgKzYzMyw3
IEBAIEl0ZXJhdG9yJiBJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICBhdXRvIGZpbmRQcmV2aW91c0Zsb2F0aW5nV2l0aExvd2VyQm90dG9t
ID0gWyZdKEZsb2F0IGZsb2F0aW5nVHlwZSwgdW5zaWduZWQgY3VycmVudEluZGV4KSAtPiBPcHRp
b25hbDx1bnNpZ25lZD4geworICAgIGF1dG8gZmluZFByZXZpb3VzRmxvYXRpbmdXaXRoTG93ZXJC
b3R0b20gPSBbJl0oRmxvYXQgZmxvYXRpbmdUeXBlLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpIC0+
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChjdXJy
ZW50SW5kZXggPCBtX2Zsb2F0cy5zaXplKCkpOwogCkBAIC02NDMsNyArNjQzLDcgQEAgSXRlcmF0
b3ImIEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKIAogICAgICAgICBhdXRvIGN1cnJlbnRCb3R0b20g
PSBtX2Zsb2F0c1tjdXJyZW50SW5kZXhdLnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCk7CiAKLSAg
ICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4ID0gY3VycmVudEluZGV4OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IGN1cnJlbnRJbmRleDsKICAgICAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgICAgIGluZGV4ID0gcHJldmlvdXNGbG9hdGluZ0luZGV4KGZs
b2F0aW5nVHlwZSwgbV9mbG9hdHMsICppbmRleCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQpA
QCAtNjYzLDggKzY2Myw4IEBAIEl0ZXJhdG9yJiBJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiAgICAg
Ly8gRW5zdXJlIHRoYXQgdGhlIG5ldyBmbG9hdGluZydzIGJvdHRvbSBlZGdlIGlzIHBvc2l0aW9u
ZWQgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgLXdoaWNoIGVzc2VudGlhbGx5IG1lYW5zIHNr
aXBwaW5nIGluLWJldHdlZW4gZmxvYXRzIHRoYXQgYXJlIHBvc2l0aW9uZWQgaGlnaGVyKS4KICAg
ICAvLyAzLiBSZXNldCB0aGUgdmVydGljYWwgcG9zaXRpb24gYW5kIGFsaWduIGl0IHdpdGggdGhl
IG5ldyBsZWZ0LXJpZ2h0IHBhaXIuIFRoZXNlIGZsb2F0cyBhcmUgbm93IHRoZSBpbm5lci1tb3N0
IGJveGVzIGZvciB0aGUgY3VycmVudCB2ZXJ0aWNhbCBwb3NpdGlvbi4KICAgICAvLyBBcyB0aGUg
cmVzdWx0IHdlIGhhdmUgbW9yZSBob3Jpem9udGFsIHNwYWNlIG9uIHRoZSBjdXJyZW50IHZlcnRp
Y2FsIHBvc2l0aW9uLgotICAgIGF1dG8gbGVmdEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBP
cHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgp
KSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0
KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5i
b3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBsZWZ0Qm90dG9tID0gbV9jdXJyZW50
LmxlZnQoKSA/IHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihtX2N1cnJlbnQu
bGVmdCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byByaWdodEJvdHRvbSA9
IG1fY3VycmVudC5yaWdodCgpID8gc3RkOjpvcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+
KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwgKCFyaWdodEJvdHRv
bSB8fCAobGVmdEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA8ICpyaWdodEJvdHRvbSkpOwogICAgIGF1
dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwgKCFsZWZ0Qm90
dG9tIHx8IChyaWdodEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA+ICpyaWdodEJvdHRvbSkpOwpAQCAt
Njk3LDcgKzY5Nyw3IEBAIHZvaWQgSXRlcmF0b3I6OnNldChQb3NpdGlvbkluQ29udGV4dFJvb3Qg
dmVydGljYWxQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZmlu
ZEZsb2F0aW5nQmVsb3cgPSBbJl0oRmxvYXQgZmxvYXRpbmdUeXBlKSAtPiBPcHRpb25hbDx1bnNp
Z25lZD4geworICAgIGF1dG8gZmluZEZsb2F0aW5nQmVsb3cgPSBbJl0oRmxvYXQgZmxvYXRpbmdU
eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB7CiAKICAgICAgICAgQVNTRVJUKCFtX2Zs
b2F0cy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9h
dGluZ0NvbnRleHQuaAppbmRleCBlYThlOGEwYzJjNTIzZDBiNWJlNWMwMDE1MTJlNjhmOThhNTdm
N2RhLi4yZjEwNjY1MTE0N2RmZGQ4YWRhNmRlODVkODQ3NmI2YzA1NTg5NWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKQEAgLTUzLDI3ICs1
MywyNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgUG9zaXRpb25XaXRoQ2xlYXJhbmNlIHsKICAg
ICAgICAgTGF5b3V0VW5pdCBwb3NpdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y2xlYXJhbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNsZWFyYW5jZTsK
ICAgICB9OwotICAgIE9wdGlvbmFsPFBvc2l0aW9uV2l0aENsZWFyYW5jZT4gdmVydGljYWxQb3Np
dGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxQ
b3NpdGlvbldpdGhDbGVhcmFuY2U+IHZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0
IEJveCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdG9wKCkgY29uc3Q7Ci0g
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVmdEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRv
bShDbGVhcjo6TGVmdCk7IH0KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiByaWdodEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIGJvdHRvbShDbGVhcjo6UmlnaHQpOyB9Ci0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gYm90dG9tKCkgY29uc3QgeyByZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdG9wKCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBsZWZ0Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gYm90dG9tKENsZWFy
OjpMZWZ0KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcmlnaHRCb3R0b20oKSBj
b25zdCB7IHJldHVybiBib3R0b20oQ2xlYXI6OlJpZ2h0KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYm90dG9tKCkgY29uc3QgeyByZXR1cm4gYm90dG9tKENsZWFyOjpCb3RoKTsg
fQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlLmZs
b2F0cygpLmlzRW1wdHkoKTsgfQogCiAgICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAg
T3B0aW9uYWw8UG9pbnRJbkNvbnRleHRSb290PiBsZWZ0OwotICAgICAgICBPcHRpb25hbDxQb2lu
dEluQ29udGV4dFJvb3Q+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBvaW50SW5Db250
ZXh0Um9vdD4gbGVmdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+
IHJpZ2h0OwogICAgIH07CiAgICAgQ29uc3RyYWludHMgY29uc3RyYWludHMoTGF5b3V0VW5pdCBj
YW5kaWRhdGVUb3AsIExheW91dFVuaXQgY2FuZGlkYXRlQm90dG9tKSBjb25zdDsKIAogICAgIEZs
b2F0aW5nU3RhdGU6OkZsb2F0SXRlbSB0b0Zsb2F0SXRlbShjb25zdCBCb3gmIGZsb2F0Qm94KSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBib3R0b20oQ2xlYXIp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYm90dG9tKENsZWFyKSBjb25z
dDsKIAogICAgIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxvYXRpbmdTdGF0ZS5sYXlvdXRTdGF0ZSgpOyB9CiAgICAgY29uc3QgRm9ybWF0dGluZ0Nv
bnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29u
dGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBjNmIzMGM0ZTc4MDE3MTU5
MGM2NjA0MDk5Y2I4MTNlZDU4MGUzMTZkLi4yNDgxMDFhMDA5ZDcyNTYxY2RlOTA5YjI2OWZmZjdi
NmZlM2RiODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNzQsNyArNzQsNyBA
QCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnko
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVu
dCYgY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSk7Ci0gICAgYXV0byBjb21wdXRlID0gWyZdKE9wdGlvbmFsPExheW91dFVuaXQ+IHVz
ZWRXaWR0aCkgeworICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IHVzZWRXaWR0aCkgewogICAgICAgICByZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkub3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgY29uc3RyYWludHMuaG9yaXpvbnRh
bCwgY29uc3RyYWludHMudmVydGljYWwsIHsgdXNlZFdpZHRoLCB7IH0gfSk7CiAgICAgfTsKIApA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZs
b3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsCiB2b2lkIEZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50JiBjb25zdHJhaW50
cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKLSAg
ICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkgewor
ICAgIGF1dG8gY29tcHV0ZSA9IFsmXShzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWln
aHQpIHsKICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLm91dE9mRmxvd1ZlcnRp
Y2FsR2VvbWV0cnkobGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCBjb25zdHJhaW50
cy52ZXJ0aWNhbCwgeyB1c2VkSGVpZ2h0IH0pOwogICAgIH07CiAKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IGxheW91dCBvdXQtb2YtZmxvdyBjb250ZW50
IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlKCkgPDwgIiByb290OiAiIDw8ICZyb290KCkp
OwogfQogCi1jb25zdCBCb3hHZW9tZXRyeSYgRm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9y
Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxFc2NhcGVSZWFzb24+IGVzY2FwZVJl
YXNvbikgY29uc3QKK2NvbnN0IEJveEdlb21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0
cnlGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8RXNjYXBlUmVhc29u
PiBlc2NhcGVSZWFzb24pIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGVzY2FwZVJlYXNvbik7
CiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBkMjNmOWZm
ZDAyMjc1YTIzZTBiOGJjZWE0MDNmODYzNzMwMWQwODk4Li5jNjZhZjUzN2JiOTNjNGMyYmNhYzQ1
Mzk3MjllMDdlN2VjMTVmYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Myw3ICs3
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaywKICAg
ICAgICAgVGFibGVOZWVkc0FjY2Vzc1RvVGFibGVXcmFwcGVyCiAgICAgfTsKLSAgICBjb25zdCBC
b3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVh
c29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgY29uc3QgQm94R2VvbWV0cnkmIGdlb21l
dHJ5Rm9yQm94KGNvbnN0IEJveCYsIHN0ZDo6b3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsg
fQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJv
b3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0
dGluZ0dlb21ldHJ5LmNwcAppbmRleCBhZDgwMzI2OTBjMzEzZjk4ZWNiNjBkNDAxYWU1NmI4ZjQz
ZGU4OWE2Li5mMjllMjE4YmZkNGU4NTNlMzg4YTM1MjNjM2RmOGM3NTA2ZmFjMjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Rm9ybWF0dGluZ0dlb21ldHJ5KGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0
aW5nQ29udGV4CiB7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCwgSGVpZ2h0VHlwZSBo
ZWlnaHRUeXBlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0
ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmIGxheW91dEJveCwgSGVpZ2h0VHlwZSBoZWlnaHRUeXBl
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QK
IHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gaGVpZ2h0
ID0gaGVpZ2h0VHlwZSA9PSBIZWlnaHRUeXBlOjpOb3JtYWwgPyBzdHlsZS5sb2dpY2FsSGVpZ2h0
KCkgOiBoZWlnaHRUeXBlID09IEhlaWdodFR5cGU6Ok1pbiA/IHN0eWxlLmxvZ2ljYWxNaW5IZWln
aHQoKSA6IHN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBPcHRp
b25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0VmFsdWUo
Y29uc3QgQm94JiBsYXlvdXRCbwogICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChoZWlnaHQsICpj
b250YWluaW5nQmxvY2tIZWlnaHQpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHQoY29uc3QgQm94
JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVp
Z2h0KSBjb25zdAogewogICAgIGlmIChhdXRvIGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFsdWUo
bGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIGNvbnRhaW5pbmdCbG9ja0hlaWdodCkpIHsK
ICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmJveFNpemluZygpID09IEJveFNpemluZzo6
Q29udGVudEJveCkKQEAgLTExNyw3ICsxMTcsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcAog
ICAgIHJldHVybiB7IH07CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRXaWR0aFZhbHVlKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBXaWR0aFR5cGUg
d2lkdGhUeXBlLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGhWYWx1
ZShjb25zdCBCb3gmIGxheW91dEJveCwgV2lkdGhUeXBlIHdpZHRoVHlwZSwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICAvLyBBcHBsaWVzIHRvOiBhbGwgZWxl
bWVudHMgZXhjZXB0IG5vbi1yZXBsYWNlZCBpbmxpbmVzIChvdXQtb2YtZmxvdyBjaGVjayBpcyBy
ZXF1aXJlZCBmb3IgcG9zaXRpb25lZCA8YnI+IGFzIGZvciBzb21lIHJlYXNvbiB3ZSBkb24ndCBi
bG9ja2lmeSB0aGVtKS4KICAgICBBU1NFUlQoIWxheW91dEJveC5pc0lubGluZUJveCgpIHx8IGxh
eW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoVmFsdWUo
Y29uc3QgQm94JiBsYXlvdXRCb3gKICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxMYXlv
dXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiBsYXlv
dXRCb3gsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRXaWR0aChjb25zdCBC
b3gmIGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byBjb21wdXRlZFdpZHRoID0gY29tcHV0ZWRXaWR0aFZhbHVlKGxheW91dEJv
eCwgV2lkdGhUeXBlOjpOb3JtYWwsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSkgewogICAgICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIExheW91
dFVuaXQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRl
eHRSb290KGNvbnN0IENvbnRhCiAgICAgcmV0dXJuIHVzZWRDb250ZW50SGVpZ2h0OwogfQogCi1P
cHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmFsdWUoY29u
c3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0cnk6
OmNvbXB1dGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5LCBMYXlvdXRVbml0
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAogewogICAgIC8vICBJbiBnZW5lcmFsLCB0aGUg
Y29tcHV0ZWQgdmFsdWUgcmVzb2x2ZXMgdGhlIHNwZWNpZmllZCB2YWx1ZSBhcyBmYXIgYXMgcG9z
c2libGUgd2l0aG91dCBsYXlpbmcgb3V0IHRoZSBjb250ZW50LgogICAgIGlmIChnZW9tZXRyeVBy
b3BlcnR5LmlzRml4ZWQoKSB8fCBnZW9tZXRyeVByb3BlcnR5LmlzUGVyY2VudCgpIHx8IGdlb21l
dHJ5UHJvcGVydHkuaXNDYWxjdWxhdGVkKCkpCkBAIC0yMDEsNyArMjAxLDcgQEAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0
aCYgZ2VvbWV0cnlQcm8KICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVBy
b3BlcnR5KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2VvbWV0
cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KSBjb25zdAogewog
ICAgIGlmICghZ2VvbWV0cnlQcm9wZXJ0eS5pc0ZpeGVkKCkpCiAgICAgICAgIHJldHVybiB7IH07
CkBAIC0yMTIsMjIgKzIxMiwyMiBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nR2Vv
bWV0cnk6OmZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcgogLy8gU3BlY2lm
aWVzIGEgcGVyY2VudGFnZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIHVzZWQgdmFsdWUuIFRoZSBwZXJj
ZW50YWdlIGlzIGNhbGN1bGF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIGdl
bmVyYXRlZCBib3gncyBjb250YWluaW5nIGJsb2NrLgogLy8gSWYgdGhlIGhlaWdodCBvZiB0aGUg
Y29udGFpbmluZyBibG9jayBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRl
cGVuZHMgb24gY29udGVudCBoZWlnaHQpLCBhbmQgdGhpcyBlbGVtZW50IGlzIG5vdCBhYnNvbHV0
ZWx5IHBvc2l0aW9uZWQsCiAvLyB0aGUgcGVyY2VudGFnZSB2YWx1ZSBpcyB0cmVhdGVkIGFzICcw
JyAoZm9yICdtaW4taGVpZ2h0Jykgb3IgJ25vbmUnIChmb3IgJ21heC1oZWlnaHQnKS4KLU9wdGlv
bmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRNYXhIZWlnaHQoY29u
c3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wdXRlZE1heEhlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
bXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpNYXgsIGNvbnRhaW5pbmdC
bG9ja0hlaWdodCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29tcHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZE1pbkhlaWdodChjb25zdCBCb3gmIGxh
eW91dEJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWln
aHRUeXBlOjpNaW4sIGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKLU9wdGlvbmFsPExheW91
dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmIGxh
eW91dEJveCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZE1pbldpZHRoKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25z
dAogewogICAgIHJldHVybiBjb21wdXRlZFdpZHRoVmFsdWUobGF5b3V0Qm94LCBXaWR0aFR5cGU6
Ok1pbiwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBG
b3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkTWF4V2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gs
IExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRNYXhXaWR0aChjb25zdCBCb3gm
IGxheW91dEJveCwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY29tcHV0ZWRXaWR0aFZhbHVlKGxheW91dEJveCwgV2lkdGhUeXBlOjpNYXgsIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKTsKIH0KQEAgLTYwOCw4ICs2MDgsOCBAQCBWZXJ0aWNhbEdlb21l
dHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5
KGNvbnN0IFJlcAogICAgIGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2Fs
Qm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGhlaWdodCA9IGlubGlu
ZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMp
LmNvbnRlbnRIZWlnaHQ7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZv
cmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZTsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyOworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYmVmb3JlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1h
cmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKICAgICBhdXRvIHBhZGRp
bmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBw
YWRkaW5nQm90dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwog
ICAgIGF1dG8gYm9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CkBAIC02OTIsOCAr
NjkyLDggQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QKICAgICBhdXRvIGxlZnQgPSBjb21wdXRl
ZFZhbHVlKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBh
dXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0
YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OwotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1h
cmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiAgICAgYXV0byB3aWR0aCA9
IGlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFs
VmFsdWVzKS5jb250ZW50V2lkdGg7CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5
LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hH
ZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKQEAgLTkwMyw3ICs5MDMsNyBAQCBD
b250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjpmbG9hdGluZ0NvbnRlbnRX
aWR0aEFuZE1hcmdpbihjb25zdCBCbwogICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkQ29udGVu
dFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKTsKIH0KIAotQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVu
dEhlaWdodEFuZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0
aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKK0NvbnRlbnRIZWln
aHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRIZWln
aHRBbmRNYXJnaW4oY29uc3QgUmVwbGFjZWRCb3gmIHJlcGxhY2VkQm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgc3RkOjpvcHRpb25hbDxWZXJ0
aWNhbENvbnN0cmFpbnRzPiB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICAvLyAx
MC42LjIgSW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVt
ZW50cyBpbiBub3JtYWwgZmxvdywgJ2lubGluZS1ibG9jaycgcmVwbGFjZWQgZWxlbWVudHMgaW4g
bm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTk0
Niw3ICs5NDYsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6
aW5saW5lUmVwbGFjZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKAogICAgIHJldHVybiB7ICpoZWln
aHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9OwogfQogCi1Db250ZW50V2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25z
dCBSZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCBPcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiB2ZXJ0
aWNhbENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYgb3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMpIGNvbnN0CitDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0
dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBS
ZXBsYWNlZEJveCYgcmVwbGFjZWRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9y
aXpvbnRhbENvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+IHZl
cnRpY2FsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJiBvdmVy
cmlkZGVuSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICAvLyAxMC4zLjIgSW5saW5lLCBy
ZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBFZGdlcyBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogICAgIH07CiB9CiAKLU9wdGlvbmFsPEVkZ2VzPiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1
dGVkUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RWRnZXM+IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXRV
bml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdAogewogICAgIGlmICghbGF5b3V0Qm94Lmlz
UGFkZGluZ0FwcGxpY2FibGUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEx
NjUsNyArMTE2NSw3IEBAIENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5n
R2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVuCiAgICAgICAgIGJveEdlb21l
dHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07CiB9CiAKLUNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBD
b250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVz
Y2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAorQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0
IENvbnRhaW5lckJveCYgY29udGFpbmVyQm94LCBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250
ZXh0OjpFc2NhcGVSZWFzb24+IGVzY2FwZVJlYXNvbikgY29uc3QKIHsKICAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goY29udGFpbmVyQm94
LCBlc2NhcGVSZWFzb24pOwogICAgIHJldHVybiB7IHsgYm94R2VvbWV0cnkuY29udGVudEJveExl
ZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwgeyBib3hHZW9tZXRyeS5jb250
ZW50Qm94VG9wKCksIGNvbXB1dGVkSGVpZ2h0KGNvbnRhaW5lckJveCkgfSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2Vv
bWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0
dGluZ0dlb21ldHJ5LmgKaW5kZXggMDYyNGYyZjRkZTFmMTgzOTU4NDgxNDNjNDdmOGE4ZTc2ZTgx
Y2RmNi4uYjdmODlkOWI2ZWZmZmZmOWU3NjkxMmNjYjdjYjIxNzkxODNmYTVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2Vv
bWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdHZW9tZXRyeS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBDb250ZW50
SGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdDb250ZW50
V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwg
Y29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKIAotICAgIENvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNvbnN0
IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgT3B0aW9uYWw8VmVy
dGljYWxDb25zdHJhaW50cz4sIGNvbnN0IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0
OwotICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFu
ZE1hcmdpbihjb25zdCBSZXBsYWNlZEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYs
IE9wdGlvbmFsPFZlcnRpY2FsQ29uc3RyYWludHM+LCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRh
bFZhbHVlcyYpIGNvbnN0OworICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFj
ZWRDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IFJlcGxhY2VkQm94JiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbENvbnN0cmFpbnRzPiwgY29u
c3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJikgY29uc3Q7CisgICAgQ29udGVudFdpZHRoQW5k
TWFyZ2luIGlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0IFJlcGxhY2Vk
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgc3RkOjpvcHRpb25hbDxWZXJ0aWNh
bENvbnN0cmFpbnRzPiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsK
IAogICAgIExheW91dFNpemUgaW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJv
eCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpIGNvbnN0OwogCkBAIC02NSwyOSArNjUs
MjkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgc2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gm
LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKSBjb25zdDsKIAogICAgIEVkZ2VzIGNvbXB1dGVk
Qm9yZGVyKGNvbnN0IEJveCYpIGNvbnN0OwotICAgIE9wdGlvbmFsPEVkZ2VzPiBjb21wdXRlZFBh
ZGRpbmcoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxFZGdlcz4gY29tcHV0ZWRQYWRkaW5nKGNvbnN0IEJveCYsIExh
eW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgQ29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25zdDsKICAgICBDb21wdXRlZFZlcnRpY2FsTWFyZ2lu
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVl
KGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxv
Y2tXaWR0aCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25z
dCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHksIExh
eW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkpIGNv
bnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3Qg
Qm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1heEhlaWdo
dChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQg
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29t
cHV0ZWRNaW5IZWlnaHQoY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250
YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXhIZWlnaHQoY29uc3QgQm94Jiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gm
LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZE1heFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29t
cHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWF4V2lkdGgo
Y29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAKICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0cmFpbkJ5TWluTWF4V2lkdGgoY29uc3Qg
Qm94JiwgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0
IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQ29udGFpbmVyQm94
JikgY29uc3Q7CiAKICAgICBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWlu
dHNGb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0OwotICAgIENv
bnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29u
c3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNv
bj4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94Jiwgc3RkOjpv
cHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBC
b3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29u
c3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFdpZHRoKGNvbnN0
IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0Nv
bnRleHQoKS5pc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKTsgfQpAQCAtMTE0LDEwICsxMTQsMTAgQEAgcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bv
c2l0aW9uZWQoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7
CiAKICAgICBlbnVtIGNsYXNzIEhlaWdodFR5cGUgeyBNaW4sIE1heCwgTm9ybWFsIH07Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHRWYWx1ZShjb25zdCBCb3gmLCBIZWln
aHRUeXBlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHRWYWx1ZShjb25z
dCBCb3gmLCBIZWlnaHRUeXBlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFdpZHRoVHlwZSB7IE1pbiwgTWF4
LCBOb3JtYWwgfTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFdpZHRoVmFsdWUo
Y29uc3QgQm94JiwgV2lkdGhUeXBlLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGhWYWx1ZShj
b25zdCBCb3gmLCBXaWR0aFR5cGUsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNv
bnN0OwogCiAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIG1fZm9ybWF0dGluZ0NvbnRleHQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggYzliOGU5NTQzMzlkNDk0ZjFhZjdkOTRhNjgzMWM2YzZlYzQzY2U3Zi4uZjgyMjgwNGUxMDdm
YzliYWMxMDIyYTdmYWUwZWNkM2NkMzRjMjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xODksOCArMTg5LDggQEAgTGF5b3V0VW5pdCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CiAgICAgLy8g
SW4gYWRkaXRpb24sIGlmIHRoZSBlbGVtZW50IGhhcyBhbnkgZmxvYXRpbmcgZGVzY2VuZGFudHMg
d2hvc2UgYm90dG9tIG1hcmdpbiBlZGdlIGlzIGJlbG93IHRoZSBlbGVtZW50J3MgYm90dG9tIGNv
bnRlbnQgZWRnZSwKICAgICAvLyB0aGVuIHRoZSBoZWlnaHQgaXMgaW5jcmVhc2VkIHRvIGluY2x1
ZGUgdGhvc2UgZWRnZXMuIE9ubHkgZmxvYXRzIHRoYXQgcGFydGljaXBhdGUgaW4gdGhpcyBibG9j
ayBmb3JtYXR0aW5nIGNvbnRleHQgYXJlIHRha2VuCiAgICAgLy8gaW50byBhY2NvdW50LCBlLmcu
LCBmbG9hdHMgaW5zaWRlIGFic29sdXRlbHkgcG9zaXRpb25lZCBkZXNjZW5kYW50cyBvciBvdGhl
ciBmbG9hdHMgYXJlIG5vdC4KLSAgICBhdXRvIHRvcCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsg
fTsKLSAgICBhdXRvIGJvdHRvbSA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRv
IHRvcCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4geyB9OworICAgIGF1dG8gYm90dG9tID0g
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7IH07CiAgICAgaWYgKHJvb3QoKS5oYXNJbkZsb3dD
aGlsZCgpKSB7CiAgICAgICAgIHRvcCA9IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGdlb21l
dHJ5Rm9yQm94KCpyb290KCkuZmlyc3RJbkZsb3dDaGlsZCgpKSkudG9wKCk7CiAgICAgICAgIGJv
dHRvbSA9IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCku
bGFzdEluRmxvd0NoaWxkKCkpKS5ib3R0b20oKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBMYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKICAg
ICByZXR1cm4gKmJvdHRvbSAtICp0b3A7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjb25z
dCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gs
IGNvbnN0IENvbnN0cmFpbnRzUGFpciYgY29uc3RyYWludHNQYWlyKQorc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JG
bG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJhaW50c1BhaXImIGNvbnN0cmFpbnRzUGFpcikK
IHsKICAgICAvLyBOb3JtYWxseSB0aGUgYXZhaWxhYmxlIHdpZHRoIGZvciBhbiBpbi1mbG93IGJs
b2NrIGxldmVsIGJveCBpcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb250
ZW50IGJveC4KICAgICAvLyBIb3dldmVyIChhbmQgY2FuJ3QgZmluZCBpdCBhbnl3aGVyZSBpbiB0
aGUgc3BlYykgbm9uLWZsb2F0aW5nIHBvc2l0aW9uZWQgZmxvYXQgYXZvaWRlciBibG9jayBsZXZl
bCBib3hlcyBhcmUgY29uc3RyYWluZWQgYnkgZXhpc3RpbmcgZmxvYXRzLgpAQCAtMzU4LDcgKzM1
OCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRp
b25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRp
bmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29uc3RyYWludHNQYWlyJiBj
b25zdHJhaW50c1BhaXIpCiB7Ci0gICAgYXV0byBhdmFpbGFibGVXaWR0aEZsb2F0QXZvaWRlciA9
IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIGF2YWlsYWJsZVdpZHRoRmxvYXRB
dm9pZGVyID0gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7IH07CiAgICAgaWYgKGxheW91dEJv
eC5pc0Zsb2F0QXZvaWRlcigpKSB7CiAgICAgICAgIC8vIEZsb2F0IGF2b2lkZXJzJyBhdmFpbGFi
bGUgd2lkdGggbWlnaHQgYmUgc2hydW5rIGJ5IGV4aXN0aW5nIGZsb2F0cyBpbiB0aGUgY29udGV4
dC4KICAgICAgICAgYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIgPSB1c2VkQXZhaWxhYmxlV2lk
dGhGb3JGbG9hdEF2b2lkZXIoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIGNvbnN0cmFpbnRz
UGFpcik7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKIAogdm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFp
bnRzKQogewotICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
SGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsKKyAgICBhdXRvIGNvbXB1dGUgPSBb
Jl0oc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KSAtPiBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIHsKICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxvdygpKQogICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJn
aW4obGF5b3V0Qm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCB7IHVzZWRIZWlnaHQgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYThmZDlm
NWE4NjU5NWVjMjljMzFkMmEwYWQxNzJjM2YzMjY2Y2EwMi4uMWQ3ODcxYzM1ODIxYzBmZDhiYjEy
NWU5NTg4Y2ViYTQ0NzQ1YWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5p
dCB2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGlj
YWxNYXJnaW4mLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNQYWlyJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2
b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWlu
dHNQYWlyJik7CiAgICAgdm9pZCB1cGRhdGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhj
b25zdCBCb3gmKTsKIAogICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUo
KSB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRl
eHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCA1NTlmZTM2MzZmNDk5ODk2Nzc4NTM4NmFkNjZlMTRk
NDZkZTRiZDE1Li44YzdmMzY5OTFhMWIxY2NjY2ZlMWYzNTA5NGQ0MzYwZDkyNGU4ZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjk5
LDkgKzI5OSw5IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eTo6aW5GbG93Q29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0CiAgICAgcmV0dXJuIGluRmxvd1Jl
cGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRC
b3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKTsK
IH0KIAotQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21w
dXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyKSBjb25zdAorQ29udGVudFdpZHRoQW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBo
b3Jpem9udGFsQ29uc3RyYWludHMsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
V2lkdGhGbG9hdEF2b2lkZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBjb21wdXRlID0gWyZdIChhdXRv
IGNvbnN0cmFpbnRzRm9yV2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgewor
ICAgIGF1dG8gY29tcHV0ZSA9IFsmXSAoYXV0byBjb25zdHJhaW50c0ZvcldpZHRoLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkgewogICAgICAgICBpZiAobGF5b3V0Qm94Lmlz
RmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmxvYXRpbmdDb250ZW50
V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBjb25zdHJhaW50c0ZvcldpZHRoLCB7IHVzZWRXaWR0
aCwgeyB9IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
LmgKaW5kZXggM2ZhOGZhZmI2MjU3YWRiNmNmZDk4ZTc2MDg1N2JiY2I5MzU5MDg2OS4uNWQzYjI0
YWI5NjY1ZDZlMzYxZTY4NzQxNjAyNjAxYzcxMTM0MDBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9t
ZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAK
ICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
Y29uc3QgQm94JikgY29uc3Q7CiAKLSAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gY29tcHV0ZWRD
b250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGhGbG9hdEF2b2lkZXIpIGNv
bnN0OworICAgIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGluRmxvd05vblJlcGxhY2VkQ29udGVu
dEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA4ZmNmMjgyOGMzZGUwZGVmZTEy
NzkzNmIxM2UwMTVjNDYwOTdlNWZmLi5lYjUzNDI2NDQ4YmE5OWJlMzk5MTRlOTVlN2U0MjUzZDZm
NGM5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBib29sIG5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gm
IGxheW91dEJveCkKICAgICByZXR1cm4gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgp
LmlzQXV0bygpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWly
a3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjb25zdCBCb3gmIGxheW91dEJv
eCwgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hl
ZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhl
aWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKSBjb25zdAogewogICAgIEFTU0VS
VChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpKTsKICAgICBpZiAoIW5lZWRzU3RyZXRjaGlu
ZyhsYXlvdXRCb3gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgK
aW5kZXggYTA0NDQ2NjZkNTVhY2RhNDQ3YjEzMDRlMWM0NjQxMjQ3NDg4YTljYy4uOGQ0ZTVmODJm
ZjljODE0YzA0NGU4MTcyZmFiZjM0YTNmYjgyYTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEJsb2NrRm9ybWF0
dGluZ1F1aXJrcyA6IHB1YmxpYyBGb3JtYXR0aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBCbG9j
a0Zvcm1hdHRpbmdRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNv
bnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvbnN0IEJv
eCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3Vs
ZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEJveCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBC
b3gmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVu
dE1hcmdpbkFmdGVyKGNvbnN0IEJveCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5D
b2xsYXBzZS5jcHAKaW5kZXggNGI0OWJiNTJmMjIwM2ZlZjUzZjY1YTYyNDlkODkwMzE2NjcxNmY5
MC4uM2ZjOTcyZmE4NDZlNzQ5YmNhNjFlMmYzMDI2ZjE4OGZmMDQ0MWFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgVXNl
ZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFy
Z2luQ29sbGFwc2U6OmNvbXB1dGUKICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKLU9w
dGlvbmFsPExheW91dFVuaXQ+IEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpblZhbHVlKFVzZWRW
ZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBtYXJnaW5WYWx1
ZXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrTWFyZ2luQ29sbGFwc2U6
Om1hcmdpblZhbHVlKFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6
OlZhbHVlcyBtYXJnaW5WYWx1ZXMpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB0d28gb3IgbW9yZSBt
YXJnaW5zIGNvbGxhcHNlLCB0aGUgcmVzdWx0aW5nIG1hcmdpbiB3aWR0aCBpcyB0aGUgbWF4aW11
bSBvZiB0aGUgY29sbGFwc2luZyBtYXJnaW5zJyB3aWR0aHMuCiAgICAgLy8gSW4gdGhlIGNhc2Ug
b2YgbmVnYXRpdmUgbWFyZ2lucywgdGhlIG1heGltdW0gb2YgdGhlIGFic29sdXRlIHZhbHVlcyBv
ZiB0aGUgbmVnYXRpdmUgYWRqb2luaW5nIG1hcmdpbnMgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgbWF4
aW11bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaAppbmRleCA0ZDc1NmMx
NjEzMTg5ZGExMjQxYTA4NzFiZGQ4ODg5MDE2NTNhMWI0Li44MTJjMWY5MTA5NjAxNDBjN2RkYjBj
OTAxMzk1NjM1Y2I2ZTg5ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6
UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRp
dmVNYXJnaW5CZWZvcmUoY29uc3QgQm94JiwgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBz
ZWRWYWx1ZXMsIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5JikgY29uc3Q7CiAgICAgVXNl
ZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHByZWNvbXB1
dGVkUG9zaXRpdmVOZWdhdGl2ZVZhbHVlcyhjb25zdCBCb3gmLCBjb25zdCBCbG9ja0Zvcm1hdHRp
bmdHZW9tZXRyeSYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWFyZ2luVmFs
dWUoVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblZhbHVlKFVzZWRWZXJ0
aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcykgY29uc3Q7CiAKICAg
ICBib29sIGhhc0NsZWFyYW5jZShjb25zdCBCb3gmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIv
VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA4ZTRiNzMyNjExYzgzY2YwMjRkNTI2NGMy
Yzg0ZmNhMzFlMGMwNGVlLi45ZjAwODEyZWJmNGNmNmI4Njc4MWE5N2Q4NDA1YTIzNDAxNTA4ZDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxl
d3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjIxLDcg
KzIyMSw3IEBAIHZvaWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KGNvbnN0CiAgICAgQVNTRVJUKHRhYmxlQm94Lmlz
VGFibGVCb3goKSk7CiAgICAgLy8gVGFibGUgaXMgYSBzcGVjaWFsIEJGQyBjb250ZW50LiBJdHMg
aGVpZ2h0IGlzIG1haW5seSBkcml2ZW4gYnkgdGhlIGNvbnRlbnQuIENvbXB1dGVkIGhlaWdodCwg
bWluLWhlaWdodCBhbmQgbWF4LWhlaWdodCBhcmUgYWxsCiAgICAgLy8gYWxyZWFkeSBiZWVuIHRh
a2VuIGludG8gYWNjb3VudCBkdXJpbmcgdGhlIFRGQyBsYXlvdXQuCi0gICAgYXV0byBvdmVycmlk
ZGVuVGFibGVIZWlnaHQgPSBbJl0oKSAtPiBPcHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgYXV0
byBvdmVycmlkZGVuVGFibGVIZWlnaHQgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IHsKICAgICAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZm9ybWF0dGluZ1F1aXJrcygpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJs
ZUJveCk7CiAgICAgICAgIGlmICh0YWJsZUJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxN2Y3
Mzg1ZjQ1YWQ2YjJiZGUzYzYyMWExNjJkMjg5NjM3N2MxZTIzLi4zN2E2NWI1YzRmZjg5MmEyNGFk
NDJjNjk2NzUyMmQyMmJiYTI5ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEJyZWFrZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
Tm9uQ29udGVudFJ1bnNPbmx5KGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3Vz
Q28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+
IGZpcnN0VGV4dFJ1bkluZGV4KGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3Vz
Q29udGVudCYgY29udGludW91c0NvbnRlbnQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBmaXJzdFRleHRSdW5JbmRleChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29u
dGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50KQogewogICAgIGF1dG8mIHJ1bnMgPSBj
b250aW51b3VzQ29udGVudC5ydW5zKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CkBAIC0xNjIsMTEgKzE2MiwxMSBAQCBzdHJ1Y3Qg
T3ZlcmZsb3dpbmdUZXh0Q29udGVudCB7CiAgICAgICAgICAgICAvLyBUcmFpbGluZyBjb250ZW50
IGlzIGVpdGhlciB0aGUgcnVuJ3MgbGVmdCBzaWRlICh3aGVuIHdlIGJyZWFrIHRoZSBydW4gc29t
ZXdoZXJlIGluIHRoZSBtaWRkbGUpIG9yIHRoZSBwcmV2aW91cyBydW4uCiAgICAgICAgICAgICAv
LyBTb21ldGltZXMgdGhlIGJyZWFraW5nIHBvc2l0aW9uIGlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmlu
ZyBvZiB0aGUgZmlyc3QgcnVuLCBzbyB0aGVyZSdzIG5vIHRyYWlsaW5nIHJ1biBhdCBhbGwuCiAg
ICAgICAgICAgICBib29sIG92ZXJmbG93cyB7IGZhbHNlIH07Ci0gICAgICAgICAgICBPcHRpb25h
bDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gcGFydGlhbFJ1biB7IH07CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBw
YXJ0aWFsUnVuIHsgfTsKICAgICAgICAgfTsKLSAgICAgICAgT3B0aW9uYWw8VHJhaWxpbmdDb250
ZW50PiB0cmFpbGluZ0NvbnRlbnQgeyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYWlsaW5n
Q29udGVudD4gdHJhaWxpbmdDb250ZW50IHsgfTsKICAgICB9OwotICAgIE9wdGlvbmFsPEJyZWFr
aW5nUG9zaXRpb24+IGJyZWFraW5nUG9zaXRpb24geyB9OyAvLyBXaGVyZSB3ZSBhY3R1YWxseSBi
cmVhayB0aGlzIG92ZXJmbG93aW5nIGNvbnRlbnQuCisgICAgc3RkOjpvcHRpb25hbDxCcmVha2lu
Z1Bvc2l0aW9uPiBicmVha2luZ1Bvc2l0aW9uIHsgfTsgLy8gV2hlcmUgd2UgYWN0dWFsbHkgYnJl
YWsgdGhpcyBvdmVyZmxvd2luZyBjb250ZW50LgogfTsKIAogSW5saW5lQ29udGVudEJyZWFrZXI6
OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudChj
b25zdCBDb250aW51b3VzQ29udGVudCYgb3ZlcmZsb3dDb250ZW50LCBjb25zdCBMaW5lU3RhdHVz
JiBsaW5lU3RhdHVzKSBjb25zdApAQCAtMTk5LDcgKzE5OSw3IEBAIElubGluZUNvbnRlbnRCcmVh
a2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRl
bnQoY29uCiAKICAgICBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCA9IDA7CiAgICAgaWYgKGhh
c1RleHRSdW4oY29udGludW91c0NvbnRlbnQpKSB7Ci0gICAgICAgIGF1dG8gdHJ5QnJlYWtpbmdD
b250ZW50V2l0aFRleHQgPSBbJl0oKSAtPiBPcHRpb25hbDxSZXN1bHQ+IHsKKyAgICAgICAgYXV0
byB0cnlCcmVha2luZ0NvbnRlbnRXaXRoVGV4dCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8UmVz
dWx0PiB7CiAgICAgICAgICAgICAvLyAxLiBUaGlzIHRleHQgY29udGVudCBpcyBub3QgYnJlYWth
YmxlLgogICAgICAgICAgICAgLy8gMi4gVGhpcyBicmVha2FibGUgdGV4dCBjb250ZW50IGRvZXMg
bm90IGZpdCBhdCBhbGwuIE5vdCBldmVuIHRoZSBmaXJzdCBnbHlwaC4gVGhpcyBpcyBhIHZlcnkg
c3BlY2lhbCBjYXNlLgogICAgICAgICAgICAgLy8gMy4gV2UgY2FuIGJyZWFrIHRoZSBjb250ZW50
IGJ1dCBpdCBzdGlsbCBvdmVyZmxvd3MuCkBAIC0yNzgsNyArMjc4LDcgQEAgT3ZlcmZsb3dpbmdU
ZXh0Q29udGVudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVu
dFdpdGhUZXh0KGMKICAgICAgICAgcmV0dXJuIGlzV3JhcHBpbmdBbGxvd2VkKHJ1bi5pbmxpbmVJ
dGVtKTsKICAgICB9OwogCi0gICAgYXV0byBmaW5kVHJhaWxpbmdSdW5JbmRleCA9IFsmXSAoYXV0
byBicmVha2FibGVSdW5JbmRleCkgLT4gT3B0aW9uYWw8c2l6ZV90PiB7CisgICAgYXV0byBmaW5k
VHJhaWxpbmdSdW5JbmRleCA9IFsmXSAoYXV0byBicmVha2FibGVSdW5JbmRleCkgLT4gc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHsKICAgICAgICAgLy8gV2hlbiB0aGUgYnJlYWtpbmcgcG9zaXRpb24g
aXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcnVuLCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBw
cmV2aW91cyBvbmUuCiAgICAgICAgIGlmICghYnJlYWthYmxlUnVuSW5kZXgpCiAgICAgICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMzA4LDcgKzMwOCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQg
SW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChj
CiAgICAgLy8gV2UgaGF2ZSB0byBoYXZlIGFuIG92ZXJmbG93aW5nIHJ1bi4KICAgICBSRUxFQVNF
X0FTU0VSVChvdmVyZmxvd2luZ1J1bkluZGV4IDwgcnVucy5zaXplKCkpOwogCi0gICAgYXV0byB0
cnlCcmVha2luZ092ZXJmbG93aW5nUnVuID0gWyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdU
ZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdPdmVy
Zmxvd2luZ1J1biA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVu
dDo6QnJlYWtpbmdQb3NpdGlvbj4gewogICAgICAgICBhdXRvIG92ZXJmbG93aW5nUnVuID0gcnVu
c1tvdmVyZmxvd2luZ1J1bkluZGV4XTsKICAgICAgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihvdmVy
Zmxvd2luZ1J1bikpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMzI4LDcgKzMyOCw3IEBA
IE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVy
Zmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAgICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9
IHRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4oKSkKICAgICAgICAgcmV0dXJuIHsgb3ZlcmZsb3dp
bmdSdW5JbmRleCwgYnJlYWtpbmdQb3NpdGlvbiB9OwogCi0gICAgYXV0byB0cnlCcmVha2luZ1By
ZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdU
ZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdQcmV2
aW91c05vbk92ZXJmbG93aW5nUnVucyA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dp
bmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gewogICAgICAgICBhdXRvIHByZXZpb3Vz
Q29udGVudFdpZHRoID0gYWNjdW11bGF0ZWRDb250ZW50V2lkdGg7CiAgICAgICAgIGZvciAoYXV0
byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXg7IGluZGV4LS07KSB7CiAgICAgICAgICAgICBh
dXRvJiBydW4gPSBydW5zW2luZGV4XTsKQEAgLTM1MSw3ICszNTEsNyBAQCBPdmVyZmxvd2luZ1Rl
eHRDb250ZW50IElubGluZUNvbnRlbnRCcmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50
V2l0aFRleHQoYwogICAgIGlmIChhdXRvIGJyZWFraW5nUG9zaXRpb24gPSB0cnlCcmVha2luZ1By
ZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zKCkpCiAgICAgICAgIHJldHVybiB7IG92ZXJmbG93aW5n
UnVuSW5kZXgsIGJyZWFraW5nUG9zaXRpb24gfTsKIAotICAgIGF1dG8gdHJ5QnJlYWtpbmdOZXh0
T3ZlcmZsb3dpbmdSdW5zID0gWyZdKCkgLT4gT3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVu
dDo6QnJlYWtpbmdQb3NpdGlvbj4geworICAgIGF1dG8gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dp
bmdSdW5zID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpC
cmVha2luZ1Bvc2l0aW9uPiB7CiAgICAgICAgIGF1dG8gbmV4dENvbnRlbnRXaWR0aCA9IGFjY3Vt
dWxhdGVkQ29udGVudFdpZHRoICsgcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XS5sb2dpY2FsV2lk
dGg7CiAgICAgICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBp
bmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBy
dW5zW2luZGV4XTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBPcHRpb25TZXQ8SW5saW5lQ29udGVudEJy
ZWFrZXI6OldvcmRCcmVha1J1bGU+IElubGluZUNvbnRlbnRCcmVha2VyOjp3b3JkQnJlYWtCZQog
ICAgIHJldHVybiBicmVha1J1bGVzOwogfQogCi1PcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtl
cjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihj
b25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lk
dGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVu
dEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVu
JiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0
dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKG92ZXJmbG93aW5n
UnVuLmlubGluZUl0ZW0uaXNUZXh0KCkpOwogICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93
bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG92ZXJmbG93aW5nUnVuLmlubGluZUl0ZW0pOwpAQCAtNDM1
LDcgKzQzNSw3IEBAIE9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0CiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBpZiAoYnJlYWtSdWxlcy5jb250YWlucyhXb3JkQnJlYWtSdWxlOjpBdEh5cGhlbmF0
aW9uT3Bwb3J0dW5pdGllcykpIHsKLSAgICAgICAgYXV0byB0cnlCcmVha2luZ0F0SHlwaGVuYXRp
b25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IE9wdGlvbmFsPFBhcnRpYWxSdW4+IHsKKyAgICAgICAg
YXV0byB0cnlCcmVha2luZ0F0SHlwaGVuYXRpb25PcHBvcnR1bml0eSA9IFsmXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8UGFydGlhbFJ1bj4gewogICAgICAgICAgICAgLy8gRmluZCB0aGUgaHlwaGVuIHBv
c2l0aW9uIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAvLyAxLiBTcGxpdCB0aGUgdGV4dCBieSB0
YWtpbmcgdGhlIGh5cGhlbiB3aWR0aCBpbnRvIGFjY291bnQKICAgICAgICAgICAgIC8vIDIuIEZp
bmQgdGhlIGxhc3QgaHlwaGVuIHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BsaXQgcG9zaXRpb24KQEAg
LTUwMCw3ICs1MDAsNyBAQCBPcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1
bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dAogICAgIHJldHVybiB7IH07
CiB9CiAKLXZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBl
bmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCit2b2lk
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElu
bGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBzdGQ6
Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbGxhcHNpYmxlV2lkdGgpCiB7CiAgICAgbV9y
dW5zLmFwcGVuZCh7IGlubGluZUl0ZW0sIGxvZ2ljYWxXaWR0aCB9KTsKICAgICBtX2xvZ2ljYWxX
aWR0aCA9IGNsYW1wVG88SW5saW5lTGF5b3V0VW5pdD4obV9sb2dpY2FsV2lkdGggKyBsb2dpY2Fs
V2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmgKaW5kZXgg
NWQyZDRkNmNlOGMxODkzMWQ1ZmU4YjUwYTM3MzAxZDRhY2E4ZTdkOS4uYzZkOTVhNjk1MmFiYTJk
NDQzOTJmYWM0ZjhkZDMwNmE2MzkxYzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVD
b250ZW50QnJlYWtlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFy
dGlhbFJ1biB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggeyAwIH07CiAgICAgICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMCB9OwotICAgICAgICBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBoeXBoZW5XaWR0aCB7IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4gaHlwaGVuV2lkdGggeyB9OwogICAgIH07CiAgICAgZW51bSBjbGFzcyBJc0VuZE9m
TGluZSB7IE5vLCBZZXMgfTsKICAgICBzdHJ1Y3QgUmVzdWx0IHsKQEAgLTU4LDExICs1OCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIHN0cnVjdCBQYXJ0aWFsVHJhaWxpbmdDb250
ZW50IHsKICAgICAgICAgICAgIHNpemVfdCB0cmFpbGluZ1J1bkluZGV4IHsgMCB9OwotICAgICAg
ICAgICAgT3B0aW9uYWw8UGFydGlhbFJ1bj4gcGFydGlhbFJ1bjsgLy8gbnVsbG9wdCBwYXJ0aWFs
IHJ1biBtZWFucyB0aGUgdHJhaWxpbmcgcnVuIGlzIGEgY29tcGxldGUgcnVuLgorICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFsUnVuPiBwYXJ0aWFsUnVuOyAvLyBudWxsb3B0IHBhcnRp
YWwgcnVuIG1lYW5zIHRoZSB0cmFpbGluZyBydW4gaXMgYSBjb21wbGV0ZSBydW4uCiAgICAgICAg
IH07CiAgICAgICAgIEFjdGlvbiBhY3Rpb24geyBBY3Rpb246OktlZXAgfTsKICAgICAgICAgSXNF
bmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJc0VuZE9mTGluZTo6Tm8gfTsKLSAgICAgICAgT3B0aW9u
YWw8UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWlsaW5nQ29udGVudCB7IH07Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWls
aW5nQ29udGVudCB7IH07CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIGxhc3RXcmFwT3Bwb3J0
dW5pdHlJdGVtIHsgbnVsbHB0ciB9OwogICAgIH07CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgICAgICBib29sIGhhc1RyYWlsaW5nQ29sbGFwc2libGVDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gISFjb2xsYXBzaWJsZUxvZ2ljYWxXaWR0aCgpOyB9CiAgICAgICAgIGJvb2wgaXNGdWxs
eUNvbGxhcHNpYmxlKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFdpZHRoKCkgPT0gY29sbGFwc2li
bGVMb2dpY2FsV2lkdGgoKTsgfQogCi0gICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0
ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0
VW5pdD4gY29sbGFwc2libGVXaWR0aCk7CisgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGlu
ZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgc3RkOjpvcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0PiBjb2xsYXBzaWJsZVdpZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOwog
CiAgICAgICAgIHN0cnVjdCBSdW4gewpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0IHsgMCB9OwogICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoIHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGNvbGxhcHNpYmxlV2lkdGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHRyYWlsaW5nU29mdEh5cGhlbldpZHRoOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nU29mdEh5cGhlbldpZHRoOwogICAgICAgICBib29s
IGhhc0Z1bGx5Q29sbGFwc2libGVUcmFpbGluZ1J1biB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wg
aGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQ
cmV2aW91c1Bvc2l0aW9uIHsgZmFsc2UgfTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFJlc3VsdCBwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50KGNvbnN0IENvbnRp
bnVvdXNDb250ZW50JiwgY29uc3QgTGluZVN0YXR1cyYpIGNvbnN0OwogICAgIE92ZXJmbG93aW5n
VGV4dENvbnRlbnQgcHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGNvbnN0IENvbnRp
bnVvdXNDb250ZW50JiwgY29uc3QgTGluZVN0YXR1cyYpIGNvbnN0OwotICAgIE9wdGlvbmFsPFBh
cnRpYWxSdW4+IHRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVu
JiBvdmVyZmxvd1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQ
cmV2aW91c1Bvc2l0aW9uKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhcnRpYWxSdW4+IHRy
eUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd1J1
biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3Vz
UG9zaXRpb24pIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBXb3JkQnJlYWtSdWxlIHsKICAgICAg
ICAgQXRBcmJpdHJhcnlQb3NpdGlvbiAgICAgICAgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZWU4MWExNzExNzM4OGNj
ZjFmODg2YWI2Y2FkOGI5NjQ1OWYzNjU0ZC4uNzg2NGFlY2Q3MjE2ZmRjMjAyMDJlZDdiNzlmZDIy
MGY3NzE3MDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMTgyLDkgKzE4Miw5IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAg
ICAgc3RydWN0IFByZXZpb3VzTGluZSB7CiAgICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVt
UmFuZ2UgcmFuZ2U7CiAgICAgICAgIHNpemVfdCBvdmVyZmxvd0NvbnRlbnRMZW5ndGggeyAwIH07
Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRo
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNh
bFdpZHRoOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7
CisgICAgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+IHByZXZpb3VzTGluZTsKICAgICBhdXRv
JiBmbG9hdGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKICAgICBh
dXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0
YXRlIH07CiAgICAgYXV0byBpc0ZpcnN0TGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmlz
RW1wdHkoKTsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSG9yaXpvbnRhbE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29ucwogCiB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENv
bnN0cmFpbnRzKQogewotICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkV2lkdGgpIHsKKyAgICBhdXRvIGNvbXB1dGUgPSBbJl0oc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiB1c2VkV2lkdGgpIHsKICAgICAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0
aW5nQ29udGVudFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCB7IHVzZWRXaWR0aCwgeyB9IH0pOwogICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxv
Y2tCb3goKSkKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0CiAKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENv
bnN0cmFpbnRzKQogewotICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0
PiB1c2VkSGVpZ2h0KSB7CisgICAgYXV0byBjb21wdXRlID0gWyZdKHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gdXNlZEhlaWdodCkgewogICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQ
b3NpdGlvbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGluZ0dlb21ldHJ5KCkuZmxv
YXRpbmdDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCB7IHVzZWRIZWlnaHQgfSk7CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9j
a0JveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAKaW5kZXggYmM2YzBlNTc1OGQ0NDJkZjk3OWY1Y2I1MDcxODYxNjM1NmVjZjk4YS4uOThi
OTRhOWY4ZjkzNTE0ZTQ2YjRkMjFkY2VjNDNhMjIxOTJjNjZlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgc3RydWN0IFNpbXBsaWZpZWRWZXJ0aWNhbEFsaWdubWVudCB7CiAgICAg
ICAgIFNpbXBsaWZpZWRWZXJ0aWNhbEFsaWdubWVudChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZl
bEJveCYgcm9vdElubGluZUJveCk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgY2FuVXNlU2ltcGxp
ZmllZEFsaWdubWVudChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgcm9vdElubGluZUJv
eCwgY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmLCBPcHRpb25hbDxjb25zdCBCb3hHZW9t
ZXRyeT4gaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSk7CisgICAgICAgIHN0YXRpYyBib29sIGNhblVz
ZVNpbXBsaWZpZWRBbGlnbm1lbnQoY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmIHJvb3RJ
bmxpbmVCb3gsIGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94Jiwgc3RkOjpvcHRpb25hbDxj
b25zdCBCb3hHZW9tZXRyeT4gaW5saW5lTGV2ZWxCb3hHZW9tZXRyeSk7CiAKICAgICAgICAgdm9p
ZCBhbGlnbihMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAg
c3RhdGljIEhhbmdpbmdUcmFpbGluZ1doaXRlc3BhY2VDb250ZW50IGNvbGxlY3RIYW5naW5nVHJh
aWxpbmdXaGl0ZXNwYWNlQ29udGVudCgKICAgICByZXR1cm4gaGFuZ2luZ0NvbnRlbnQ7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBob3Jpem9udGFsQWxpZ25tZW50T2Zm
c2V0KGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBJ
bmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsV2lkdGgsIElubGluZUxheW91dFVuaXQgY29udGVu
dExvZ2ljYWxXaWR0aCwgYm9vbCBpc0xhc3RMaW5lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChjb25zdCBMaW5lOjpSdW5M
aXN0JiBydW5zLCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgSW5saW5lTGF5b3V0VW5pdCBsaW5l
TG9naWNhbFdpZHRoLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgsIGJvb2wg
aXNMYXN0TGluZSkKIHsKICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gbGluZUxvZ2ljYWxXaWR0
aCAtIGNvbnRlbnRMb2dpY2FsV2lkdGg7CiAgICAgYXV0byBoYW5naW5nVHJhaWxpbmdXaGl0ZXNw
YWNlQ29udGVudCA9IGNvbGxlY3RIYW5naW5nVHJhaWxpbmdXaGl0ZXNwYWNlQ29udGVudChydW5z
LCBpc0xhc3RMaW5lKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpj
b25zdHJ1Y3RBbmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3Qg
TAogICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRoIHN1cHBvcnQgZm9yIGxpbmUtaGVpZ2h0IGNv
bnRlbnQuCiAgICAgc2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50LnNldEVuYWJsZWQobGF5b3V0
U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSAmJiByb290Qm94KCkuc3R5bGUoKS5saW5lSGVpZ2h0
KCkuaXNOZWdhdGl2ZSgpKTsKIAotICAgIGF1dG8gc2ltcGxpZmllZEFsaWduVmVydGljYWxseUlm
QXBwbGljYWJsZSA9IFsmXShhdXRvJiBpbmxpbmVMZXZlbEJveCwgT3B0aW9uYWw8Y29uc3QgQm94
R2VvbWV0cnk+IGJveEdlb21ldHJ5KSB7CisgICAgYXV0byBzaW1wbGlmaWVkQWxpZ25WZXJ0aWNh
bGx5SWZBcHBsaWNhYmxlID0gWyZdKGF1dG8mIGlubGluZUxldmVsQm94LCBzdGQ6Om9wdGlvbmFs
PGNvbnN0IEJveEdlb21ldHJ5PiBib3hHZW9tZXRyeSkgewogICAgICAgICBpZiAoIXNpbXBsaWZp
ZWRWZXJ0aWNhbEFsaWdubWVudC5pc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgaWYgKCFTaW1wbGlmaWVkVmVydGljYWxBbGlnbm1lbnQ6OmNhblVzZVNpbXBsaWZpZWRB
bGlnbm1lbnQocm9vdElubGluZUJveCwgaW5saW5lTGV2ZWxCb3gsIGJveEdlb21ldHJ5KSkgewpA
QCAtNDAxLDggKzQwMSw4IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVp
Z2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5lCiAgICAgICAgIH07CiAg
ICAgICAgIEhhc2hNYXA8Y29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRv
cEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKIAotICAg
ICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
eyB9OwotICAgICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0gT3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4geyB9OworICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2lj
YWxCb3R0b20gPSBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKICAgICAgICAg
aWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJ
bmxpbmVCb3gsIGxpbmVCb3gpKSB7CiAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IElu
bGluZUxheW91dFVuaXQgeyB9OwogICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBy
b290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBA
IHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShMaW5lCiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTGluZUJveDo6
SW5saW5lTGV2ZWxCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRl
QmFzZWxpbmVPZmZzZXRNYXA7CiAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGlu
ZU9mZnNldE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKIAot
ICAgICAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0g
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OworICAgICAgICBhdXRvIG1heGltdW1Ub3BP
ZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7IH07CiAgICAgICAgIGlmIChmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxC
b3hBZmZlY3RzTGluZUJveChyb290SW5saW5lQm94LCBsaW5lQm94KSkKICAgICAgICAgICAgIG1h
eGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcm9vdElubGluZUJveC5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAKQEAgLTYyMiw3ICs2MjIsNyBAQCBMaW5lQm94QnVpbGRl
cjo6U2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50OjpTaW1wbGlmaWVkVmVydGljYWxBbGlnbm1l
bnQoY29uc3QgTAogICAgIGFkanVzdChyb290SW5saW5lQm94KTsKIH0KIAotYm9vbCBMaW5lQm94
QnVpbGRlcjo6U2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxp
Z25tZW50KGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94JiByb290SW5saW5lQm94LCBjb25z
dCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gsIE9wdGlvbmFsPGNvbnN0
IEJveEdlb21ldHJ5PiBpbmxpbmVMZXZlbEJveEdlb21ldHJ5KQorYm9vbCBMaW5lQm94QnVpbGRl
cjo6U2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50OjpjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50
KGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94JiByb290SW5saW5lQm94LCBjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gsIHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
Qm94R2VvbWV0cnk+IGlubGluZUxldmVsQm94R2VvbWV0cnkpCiB7CiAgICAgaWYgKGlubGluZUxl
dmVsQm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgewogICAgICAgICBBU1NFUlQoaW5saW5l
TGV2ZWxCb3hHZW9tZXRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggNjky
ZTk2NjM4MzhlZDMyYThkZGIxOWI1ZmVhZDI0Njk3OTlmMWMxMC4uNmFjYmM0YmJmZTMwZGJhMjg3
OTUwZTQ2YWM3ZjIwZWI4NTE4MjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBMaW5lQm94OjpJbmxpbmVM
ZXZlbEJveCBjcmVhdGVHZW5lcmljSW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZWxpbmU7IH0KLSAgICAgICAgT3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gZGVzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY2VudDsgfQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVy
biBtX2Rlc2NlbnQ7IH0KICAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
aW5saW5lLTMvI2xheW91dC1ib3VuZHMKICAgICAgICAgc3RydWN0IExheW91dEJvdW5kcyB7CiAg
ICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2Vu
dCArIGRlc2NlbnQ7IH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIElubGlu
ZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAgICAgICAgTGF5b3V0Qm91bmRzIG1fbGF5b3V0Qm91bmRz
OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmUgeyAwIH07Ci0gICAgICAgIE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fZGVzY2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiBtX2Rlc2NlbnQ7CiAgICAgICAgIGJvb2wgbV9oYXNDb250ZW50
IHsgZmFsc2UgfTsKICAgICAgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpJbmxpbmVCb3ggfTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGEzNTk5
M2QzZjVmNGFlMDQ1MTk5YThlNDhkM2FlODkxZjE0NzBiNmEuLmYzOTE0YjRiMDAyNmEwYzhjYTkx
ZDE3MjRmODJlNWEzNGQxYjY0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50
OjpJbmxpbmVDb250ZW50KGJvb2wgaWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKQogaW5saW5l
IHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5lSXRlbShjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkK
IHsKICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkg
fHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJv
eEVuZCgpKTsKLSAgICBhdXRvIGNvbGxhcHNpYmxlV2lkdGggPSBbJl0oKSAtPiBPcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB7CisgICAgYXV0byBjb2xsYXBzaWJsZVdpZHRoID0gWyZdKCkgLT4g
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CiAgICAgICAgIGlmICghaW5saW5lSXRl
bS5pc1RleHQoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwpAQCAtMjU3
LDcgKzI1Nyw3IEBAIExpbmVCdWlsZGVyOjpMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsCiB7CiB9CiAKLUxpbmVCdWlsZGVy
OjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxp
bmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRl
bnRMZW5ndGgsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRo
LCBjb25zdCBJbmxpbmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBib29sIGlzRmlyc3RM
aW5lKQorTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVD
b250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgc2l6ZV90IHBh
cnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0
PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCwgY29uc3QgSW5saW5lUmVjdCYgaW5pdGlhbExpbmVMb2dp
Y2FsUmVjdCwgYm9vbCBpc0ZpcnN0TGluZSkKIHsKICAgICBpbml0aWFsaXplKGluaXRpYWxDb25z
dHJhaW50c0ZvckxpbmUoaW5pdGlhbExpbmVMb2dpY2FsUmVjdCwgaXNGaXJzdExpbmUpKTsKIApA
QCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgVXNl
ZENvbnN0cmFpbnRzJiBsaW5lQ29uc3RyYWludHMpCiAgICAgbV9jb250ZW50SXNDb25zdHJhaW5l
ZEJ5RmxvYXQgPSBsaW5lQ29uc3RyYWludHMuaXNDb25zdHJhaW5lZEJ5RmxvYXQ7CiB9CiAKLUxp
bmVCdWlsZGVyOjpDb21taXR0ZWRDb250ZW50IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUNvbnRl
bnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBzaXplX3QgcGFydGlh
bExlYWRpbmdDb250ZW50TGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFkaW5n
TG9naWNhbFdpZHRoKQorTGluZUJ1aWxkZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6
OnBsYWNlSW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFu
Z2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCkKIHsKICAgICBhdXRvIGxpbmVDYW5k
aWRhdGUgPSBMaW5lQ2FuZGlkYXRlIHsgbGF5b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGlu
Z0xldHRlclNwYWNpbmcoKSB9OwogICAgIGF1dG8gaW5saW5lQ29udGVudEJyZWFrZXIgPSBJbmxp
bmVDb250ZW50QnJlYWtlciB7IH07CkBAIC0zNzUsNyArMzc1LDcgQEAgTGluZUJ1aWxkZXI6Oklu
bGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW8KICAgICByZXR1cm4gbGluZVJhbmdlOwogfQogCi1PcHRpb25hbDxIb3Jpem9udGFs
Q29uc3RyYWludHM+IExpbmVCdWlsZGVyOjpmbG9hdENvbnN0cmFpbnRzKGNvbnN0IElubGluZVJl
Y3QmIGxpbmVMb2dpY2FsUmVjdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0
cmFpbnRzPiBMaW5lQnVpbGRlcjo6ZmxvYXRDb25zdHJhaW50cyhjb25zdCBJbmxpbmVSZWN0JiBs
aW5lTG9naWNhbFJlY3QpIGNvbnN0CiB7CiAgICAgYXV0byogZmxvYXRpbmdTdGF0ZSA9IHRoaXMt
PmZsb2F0aW5nU3RhdGUoKTsKICAgICBpZiAoIWZsb2F0aW5nU3RhdGUgfHwgZmxvYXRpbmdTdGF0
ZS0+ZmxvYXRzKCkuaXNFbXB0eSgpKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIExpbmVCdWlsZGVyOjpV
c2VkQ29uc3RyYWludHMgTGluZUJ1aWxkZXI6OmluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoY29u
c3QgSW5saW5lCiAgICAgcmV0dXJuIFVzZWRDb25zdHJhaW50cyB7IHsgaW5pdGlhbExpbmVMb2dp
Y2FsUmVjdC50b3AoKSwgbGluZUxvZ2ljYWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxv
Z2ljYWxMZWZ0LCBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LmhlaWdodCgpIH0sIGxpbmVJc0NvbnN0
cmFpbmVkQnlGbG9hdCB9OwogfQogCi12b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50
Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgY3VycmVudElubGlu
ZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgc2l6ZV90IHBh
cnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVh
ZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQor
dm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYg
bGluZUNhbmRpZGF0ZSwgc2l6ZV90IGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwg
SW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQogewogICAgIEFTU0VSVChjdXJy
ZW50SW5saW5lSXRlbUluZGV4IDwgbGF5b3V0UmFuZ2UuZW5kKTsKICAgICBsaW5lQ2FuZGlkYXRl
LnJlc2V0KCk7CkBAIC01NTYsNyArNTU2LDcgQEAgc2l6ZV90IExpbmVCdWlsZGVyOjpuZXh0V3Jh
cE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6SW4KICAg
ICAvLyBbZXgtXVtpbmxpbmUgYm94IHN0YXJ0XVtpbmxpbmUgYm94IGVuZF1bZmxvYXRdW2FtcGxl
XSAoZXgtPHNwYW4+PC9zcGFuPjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQiPjwvZGl2PmFtcGxlKS4g
V3JhcCBpbmRleCBpcyBhdCBbZXgtXS4KICAgICAvLyBbZXhdW2lubGluZSBib3ggc3RhcnRdW2Ft
cC1dW2lubGluZSBib3ggc3RhcnRdW2xlXSAoZXg8c3Bhbj5hbXAtPHNwYW4+YW1wbGUpLiBXcmFw
IGluZGV4IGlzIGF0IFthbXAtXS4KICAgICAvLyBbZXgtXVtpbmxpbmUgYm94IHN0YXJ0XVtsaW5l
IGJyZWFrXVthbXBsZV0gKGV4LTxzcGFuPjxicj5hbXBsZSkuIFdyYXAgaW5kZXggaXMgYWZ0ZXIg
W2JyXS4KLSAgICBhdXRvIHByZXZpb3VzSW5saW5lSXRlbUluZGV4ID0gT3B0aW9uYWw8c2l6ZV90
PiB7IH07CisgICAgYXV0byBwcmV2aW91c0lubGluZUl0ZW1JbmRleCA9IHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiB7IH07CiAgICAgZm9yIChhdXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBs
YXlvdXRSYW5nZS5lbmQ7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IG1f
aW5saW5lSXRlbXNbaW5kZXhdOwogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVhaygp
IHx8IGlubGluZUl0ZW0uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKSB7CkBAIC02OTUsNyArNjk1
LDcgQEAgTGluZUJ1aWxkZXI6OlJlc3VsdCBMaW5lQnVpbGRlcjo6aGFuZGxlSW5saW5lQ29udGVu
dChJbmxpbmVDb250ZW50QnJlYWtlciYgaW5saW4KICAgICAgICAgcmV0dXJuIHsgcmVzdWx0Lmlz
RW5kT2ZMaW5lLCB7IGNhbmRpZGF0ZVJ1bnMuc2l6ZSgpLCBmYWxzZSB9IH07CiAgICAgfQogCi0g
ICAgYXV0byBlbGlnaWJsZU92ZXJmbG93V2lkdGhBc0xlYWRpbmcgPSBbJl0gKCkgLT4gT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4geworICAgIGF1dG8gZWxpZ2libGVPdmVyZmxvd1dpZHRoQXNM
ZWFkaW5nID0gWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gewogICAg
ICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIG9mIGNvbnRpbnVvdXMg
Y29udGVudC4KICAgICAgICAgQVNTRVJUKHJlc3VsdC5hY3Rpb24gPT0gSW5saW5lQ29udGVudEJy
ZWFrZXI6OlJlc3VsdDo6QWN0aW9uOjpXcmFwIHx8IHJlc3VsdC5hY3Rpb24gPT0gSW5saW5lQ29u
dGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0aW9uOjpCcmVhayk7CiAgICAgICAgIGlmIChjYW5kaWRh
dGVSdW5zLnNpemUoKSAhPSAxIHx8ICFjYW5kaWRhdGVSdW5zLmZpcnN0KCkuaW5saW5lSXRlbS5p
c1RleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDBlMjE3
MTUwNWVmZmI0MmZkZjBiMzIxNjQzYjM0M2Q4YzU1ZmNhZWYuLmIxZTc5NGQ3ZTNiYTA4MWJkNzhi
NTk0OTFhOTI1MTc0ZGQ1NGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExpbmVDb250ZW50IHsK
ICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlubGluZUl0ZW1SYW5nZTsKICAgICAgICAgc2l6ZV90
IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoOwogICAgICAgICBjb25z
dCBGbG9hdExpc3QmIGZsb2F0czsKICAgICAgICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCB7IGZh
bHNlIH07CiAgICAgICAgIElubGluZUxheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0OwpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVs
Qm94Q291bnQgeyAwIH07CiAgICAgICAgIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAg
fTsKLSAgICBMaW5lQ29udGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1S
YW5nZSYsIHNpemVfdCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxlYWRpbmdMb2dpY2FsV2lkdGgsIGNvbnN0IElubGluZVJlY3QmIGluaXRp
YWxMaW5lTG9naWNhbFJlY3QsIGJvb2wgaXNGaXJzdExpbmUpOworICAgIExpbmVDb250ZW50IGxh
eW91dElubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxM
ZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsZWFk
aW5nTG9naWNhbFdpZHRoLCBjb25zdCBJbmxpbmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0
LCBib29sIGlzRmlyc3RMaW5lKTsKIAogICAgIHN0cnVjdCBJbnRyaW5zaWNDb250ZW50IHsKICAg
ICAgICAgSW5saW5lSXRlbVJhbmdlIGlubGluZUl0ZW1SYW5nZTsKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIEludHJpbnNpY0NvbnRlbnQgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIGNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUm
LCBzaXplX3QgaW5saW5lSXRlbUluZGV4LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5
b3V0UmFuZ2UsIHNpemVfdCBvdmVyZmxvd0xlbmd0aCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5p
dD4gbGVhZGluZ0xvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJp
Z2h0KTsKKyAgICB2b2lkIGNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmLCBz
aXplX3QgaW5saW5lSXRlbUluZGV4LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0
UmFuZ2UsIHNpemVfdCBvdmVyZmxvd0xlbmd0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiBsZWFkaW5nTG9naWNhbFdpZHRoLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2Fs
UmlnaHQpOwogICAgIHNpemVfdCBuZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4
LCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSkgY29uc3Q7
CiAKICAgICBzdHJ1Y3QgUmVzdWx0IHsKQEAgLTgzLDE0ICs4MywxNCBAQCBwcml2YXRlOgogICAg
ICAgICB9OwogICAgICAgICBDb21taXR0ZWRDb250ZW50Q291bnQgY29tbWl0dGVkQ291bnQgeyB9
OwogICAgICAgICBzaXplX3QgcGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCB7IDAgfTsKLSAg
ICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGggeyB9
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNh
bFdpZHRoIHsgfTsKICAgICB9OwogICAgIHN0cnVjdCBVc2VkQ29uc3RyYWludHMgewogICAgICAg
ICBJbmxpbmVSZWN0IGxvZ2ljYWxSZWN0OwogICAgICAgICBib29sIGlzQ29uc3RyYWluZWRCeUZs
b2F0IHsgZmFsc2UgfTsKICAgICB9OwogICAgIFVzZWRDb25zdHJhaW50cyBpbml0aWFsQ29uc3Ry
YWludHNGb3JMaW5lKGNvbnN0IElubGluZVJlY3QmIGluaXRpYWxMaW5lTG9naWNhbFJlY3QsIGJv
b2wgaXNGaXJzdExpbmUpIGNvbnN0OwotICAgIE9wdGlvbmFsPEhvcml6b250YWxDb25zdHJhaW50
cz4gZmxvYXRDb25zdHJhaW50cyhjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBmbG9hdENvbnN0
cmFpbnRzKGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCkgY29uc3Q7CiAKICAgICB2
b2lkIGhhbmRsZUZsb2F0Q29udGVudChjb25zdCBJbmxpbmVJdGVtJik7CiAgICAgUmVzdWx0IGhh
bmRsZUlubGluZUNvbnRlbnQoSW5saW5lQ29udGVudEJyZWFrZXImLCBjb25zdCBJbmxpbmVJdGVt
UmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IExpbmVDYW5kaWRhdGUmKTsKQEAgLTEwMSw5
ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBDb21taXR0ZWRDb250ZW50IHsKICAgICAg
ICAgc2l6ZV90IGlubGluZUl0ZW1Db3VudCB7IDAgfTsKICAgICAgICAgc2l6ZV90IHBhcnRpYWxU
cmFpbGluZ0NvbnRlbnRMZW5ndGggeyAwIH07Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRoIHsgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCB7IH07CiAgICAgfTsKLSAgICBD
b21taXR0ZWRDb250ZW50IHBsYWNlSW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2Um
LCBzaXplX3QgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiBvdmVyZmxvd0xvZ2ljYWxXaWR0aCk7CisgICAgQ29tbWl0dGVkQ29udGVudCBwbGFj
ZUlubGluZUNvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiwgc2l6ZV90IHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBvdmVyZmxv
d0xvZ2ljYWxXaWR0aCk7CiAgICAgSW5saW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElubGluZUl0
ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29tbWl0dGVkQ29udGVudCYpOwogCiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYsIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KSBjb25zdDsKQEAgLTExOSwxMyArMTE5
LDEzIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ7CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKiBtX2lubGlu
ZUZvcm1hdHRpbmdTdGF0ZSB7IG51bGxwdHIgfTsKICAgICBGbG9hdGluZ1N0YXRlKiBtX2Zsb2F0
aW5nU3RhdGUgeyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRz
PiBtX3Jvb3RIb3Jpem9udGFsQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxIb3Jpem9u
dGFsQ29uc3RyYWludHM+IG1fcm9vdEhvcml6b250YWxDb25zdHJhaW50czsKIAogICAgIExpbmUg
bV9saW5lOwogICAgIElubGluZVJlY3QgbV9saW5lTG9naWNhbFJlY3Q7CiAgICAgY29uc3QgSW5s
aW5lSXRlbXMmIG1faW5saW5lSXRlbXM7CiAgICAgRmxvYXRMaXN0IG1fZmxvYXRzOwotICAgIE9w
dGlvbmFsPElubGluZVRleHRJdGVtPiBtX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW07CisgICAgc3Rk
OjpvcHRpb25hbDxJbmxpbmVUZXh0SXRlbT4gbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtOwogICAg
IFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVtKj4gbV93cmFwT3Bwb3J0dW5pdHlMaXN0OwogICAgIHVu
c2lnbmVkIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQgeyAwIH07CiAgICAgYm9vbCBt
X2NvbnRlbnRJc0NvbnN0cmFpbmVkQnlGbG9hdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lUnVuLmgKaW5kZXggY2UwMDcwOTcwYmFkODljYTM4ZDM0YTMxYWQyNDE2YWViYzdkNmRl
YS4uODIyNDJkZDA3MThiNDY1MmQzNjhlNmJkNzhkNWMzZDRhOTYyYzBjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVSdW4uaApAQCAtNjAsNyArNjAsNyBAQCBzdHJ1Y3QgTGluZVJ1biB7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBFeHBhbnNpb247Ci0gICAgTGluZVJ1bihzaXplX3QgbGluZUlu
ZGV4LCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiwgRXhwYW5zaW9uLCBPcHRpb25hbDxU
ZXh0PiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgTGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25z
dCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiwgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+
ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQogCkBAIC03Myw4ICs3Myw4IEBAIHN0cnVj
dCBMaW5lUnVuIHsKICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBsb2dpY2FsUmVjdCgpLmhlaWdodCgpOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNh
bGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbFJlY3QubW92ZVZlcnRpY2Fs
bHkob2Zmc2V0KTsgfQotICAgIE9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0
OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dDsgfQogCiAgICAgc3RydWN0IEV4cGFuc2lvbiB7CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2
aW9yIGJlaGF2aW9yIHsgRGVmYXVsdEV4cGFuc2lvbiB9OwpAQCAtOTAsMTAgKzkwLDEwIEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxjb25zdCBMYXlvdXQ6OkJveD4gbV9sYXlvdXRCb3g7CiAgICAg
SW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAg
ICBPcHRpb25hbDxUZXh0PiBtX3RleHQ7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3RleHQ7
CiB9OwogCi1pbmxpbmUgTGluZVJ1bjo6TGluZVJ1bihzaXplX3QgbGluZUluZGV4LCBjb25zdCBM
YXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCwgRXhw
YW5zaW9uIGV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dD4gdGV4dCkKK2lubGluZSBMaW5lUnVuOjpM
aW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNv
bnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9w
dGlvbmFsPFRleHQ+IHRleHQpCiAgICAgOiBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAgLCBt
X2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQogICAgICwgbV9sb2dpY2FsUmVjdChs
b2dpY2FsUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaAppbmRleCAyZGYxNDQ2YzAwMTYwNmY3
MDg1NmZmM2E5ZDAyOGNlYzhkNjIzOWZiLi4yOWFlMjk1MzA3ZThkZTczZjRiYTk3M2FkNzMxZDJm
NmI0Mjc0ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQpOwogICAgIHZv
aWQgbW92ZUJ5KElubGluZUxheW91dFBvaW50KTsKIAotICAgIHZvaWQgZXhwYW5kKE9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+LCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Pik7CisgICAgdm9p
ZCBleHBhbmQoc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Piwgc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0Pik7CiAgICAgdm9pZCBleHBhbmRUb0NvbnRhaW4oY29uc3QgSW5saW5l
UmVjdCYpOwogICAgIHZvaWQgZXhwYW5kSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgZGVs
dGEpIHsgZXhwYW5kKGRlbHRhLCB7IH0pOyB9CiAgICAgdm9pZCBleHBhbmRWZXJ0aWNhbGx5KElu
bGluZUxheW91dFVuaXQgZGVsdGEpIHsgZXhwYW5kKHsgfSwgZGVsdGEpOyB9CkBAIC0yNTAsNyAr
MjUwLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6bW92ZUJ5KElubGluZUxheW91dFBvaW50
IG9mZnNldCkKICAgICBtX3JlY3QubW92ZUJ5KG9mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkIElu
bGluZVJlY3Q6OmV4cGFuZChPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gaGVpZ2h0KQoraW5saW5lIHZvaWQgSW5saW5lUmVjdDo6ZXhw
YW5kKHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gaGVpZ2h0KQogewogICAgIEFTU0VSVCghd2lkdGggfHwgbV9oYXNW
YWxpZFdpZHRoKTsKICAgICBBU1NFUlQoIWhlaWdodCB8fCBtX2hhc1ZhbGlkSGVpZ2h0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmNWQ2MTBkZTE3NjBkZTBmYWE4
MTY2ZTEyOThhNTFjMGNlMzNmYTJkLi41MzkzZWE0OWZkMTU3NTlkN2YwODBiNmFkMDVlMmRiMDFi
ODc2NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBXaGl0ZXNwYWNlQ29udGVudCB7CiAgICAgc2l6ZV90IGxlbmd0aCB7IDAg
fTsKICAgICBib29sIGlzV29yZFNlcGFyYXRvciB7IHRydWUgfTsKIH07Ci1zdGF0aWMgT3B0aW9u
YWw8V2hpdGVzcGFjZUNvbnRlbnQ+IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oY29u
c3QgU3RyaW5nVmlldyYgdGV4dENvbnRlbnQsIHNpemVfdCBzdGFydFBvc2l0aW9uLCBib29sIHBy
ZXNlcnZlTmV3bGluZSwgYm9vbCBwcmVzZXJ2ZVRhYikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdo
aXRlc3BhY2VDb250ZW50PiBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGNvbnN0IFN0
cmluZ1ZpZXcmIHRleHRDb250ZW50LCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgYm9vbCBwcmVzZXJ2
ZU5ld2xpbmUsIGJvb2wgcHJlc2VydmVUYWIpCiB7CiAgICAgYXV0byBoYXNXb3JkU2VwYXJhdG9y
Q2hhcmFjdGVyID0gZmFsc2U7CiAgICAgYXV0byBpc1doaXRlc3BhY2VDaGFyYWN0ZXIgPSBbJl0o
YXV0byBjaGFyYWN0ZXIpIHsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6
Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25z
dAogICAgIGF1dG8gbGluZUJyZWFrSXRlcmF0b3IgPSBMYXp5TGluZUJyZWFrSXRlcmF0b3IgeyB0
ZXh0LCBzdHlsZS5jb21wdXRlZExvY2FsZSgpLCBUZXh0VXRpbDo6bGluZUJyZWFrSXRlcmF0b3JN
b2RlKHN0eWxlLmxpbmVCcmVhaygpKSB9OwogICAgIHVuc2lnbmVkIGN1cnJlbnRQb3NpdGlvbiA9
IDA7CiAKLSAgICBhdXRvIGlubGluZUl0ZW1XaWR0aCA9IFsmXShhdXRvIHN0YXJ0UG9zaXRpb24s
IGF1dG8gbGVuZ3RoKSAtPiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CisgICAgYXV0byBp
bmxpbmVJdGVtV2lkdGggPSBbJl0oYXV0byBzdGFydFBvc2l0aW9uLCBhdXRvIGxlbmd0aCkgLT4g
c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7CiAgICAgICAgIGlmICghaW5saW5lVGV4
dEJveC5jYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZygpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgcmV0dXJuIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBz
dGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uICsgbGVuZ3RoLCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4
dEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZVRleHRJdGVtLmgKaW5kZXggM2MwY2YyNmJiODAxNWRjZDUyNWM5MTI4MmQwNGZjYmQw
N2E4ZjQzMS4uYTcwZGQ1Mzg1ODk1MWI1MzcwYjlmYTI2NWViNThhOGZiZjFmNjk3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lVGV4dEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEl0ZW1UeXBlID09IFRl
eHRJdGVtVHlwZTo6V2hpdGVzcGFjZTsgfQogICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9pc1dvcmRTZXBhcmF0b3I7IH0KICAgICBib29sIGhhc1RyYWlsaW5nU29m
dEh5cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVHJhaWxpbmdTb2Z0SHlwaGVuOyB9Ci0gICAg
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2hhc1dp
ZHRoID8gc3RkOjptYWtlX29wdGlvbmFsKG1fd2lkdGgpIDogT3B0aW9uYWw8SW5saW5lTGF5b3V0
VW5pdD4geyB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzV2lkdGggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkg
OiBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsgfQogICAgIGJvb2wgaXNFbXB0
eUNvbnRlbnQoKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZVRleHRCb3gmIGlubGluZVRleHRC
b3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3goKSk7
IH0KQEAgLTU5LDIwICs1OSwyMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVzaW5nIElubGlu
ZUl0ZW06OlRleHRJdGVtVHlwZTsKIAotICAgIElubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRl
eHRCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWlsaW5n
U29mdEh5cGhlbiwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVu
aXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUpOworICAgIElubGluZVRleHRJdGVtKGNvbnN0IElubGlu
ZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWls
aW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gd2lkdGgsIFRleHRJdGVtVHlwZSk7CiAgICAgZXhwbGljaXQgSW5saW5lVGV4
dEl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYpOwogCi0gICAgc3RhdGljIElubGluZVRleHRJdGVt
IGNyZWF0ZVdoaXRlc3BhY2VJdGVtKGNvbnN0IElubGluZVRleHRCb3gmLCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzV29yZFNlcGFyYXRvciwgT3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gd2lkdGgpOwotICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVOb25X
aGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4sIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlV2hpdGVz
cGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIGJvb2wgaXNXb3JkU2VwYXJhdG9yLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVu
aXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlTm9uV2hpdGVzcGFj
ZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IHdpZHRoKTsKICAgICBzdGF0aWMgSW5saW5lVGV4dEl0ZW0gY3JlYXRlRW1wdHlJdGVt
KGNvbnN0IElubGluZVRleHRCb3gmKTsKIH07CiAKLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxp
bmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5s
aW5lVGV4dEJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1dvcmRT
ZXBhcmF0b3IsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKQoraW5saW5lIElubGlu
ZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxp
bmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
LCBib29sIGlzV29yZFNlcGFyYXRvciwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3
aWR0aCkKIHsKICAgICByZXR1cm4geyBpbmxpbmVUZXh0Qm94LCBzdGFydCwgbGVuZ3RoLCBmYWxz
ZSwgaXNXb3JkU2VwYXJhdG9yLCB3aWR0aCwgVGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlIH07CiB9
CiAKLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hpdGVz
cGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4sIE9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IHdpZHRoKQoraW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRl
eHRJdGVtOjpjcmVhdGVOb25XaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxp
bmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhhc1RyYWls
aW5nU29mdEh5cGhlbiwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCkKIHsK
ICAgICAvLyBGSVhNRTogVXNlIHRoZSBmb2xsb3dpbmcgbGlzdCBvZiBub24td2hpdGVzcGFjZSBj
aGFyYWN0ZXJzIHRvIHNldCB0aGUgImlzV29yZFNlcGFyYXRvciIgYml0OiBub0JyZWFrU3BhY2Us
IGV0aGlvcGljV29yZHNwYWNlLCBhZWdlYW5Xb3JkU2VwYXJhdG9yTGluZSBhZWdlYW5Xb3JkU2Vw
YXJhdG9yRG90IHVnYXJpdGljV29yZERpdmlkZXIuCiAgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJv
eCwgc3RhcnQsIGxlbmd0aCwgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuLCBmYWxzZSwgd2lkdGgsIFRl
eHRJdGVtVHlwZTo6Tm9uV2hpdGVzcGFjZSB9OwpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgSW5s
aW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUVtcHR5SXRlbShjb25zdCBJbmxpbmVU
ZXh0Qm94JiBpbmxpbgogICAgIHJldHVybiBJbmxpbmVUZXh0SXRlbSB7IGlubGluZVRleHRCb3gg
fTsKIH0KIAotaW5saW5lIElubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxp
bmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
LCBib29sIGhhc1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIE9wdGlv
bmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUgdGV4dEl0ZW1UeXBlKQor
aW5saW5lIElubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94
JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGhh
c1RyYWlsaW5nU29mdEh5cGhlbiwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgsIFRleHRJdGVtVHlwZSB0ZXh0SXRlbVR5cGUpCiAgICAg
OiBJbmxpbmVJdGVtKGlubGluZVRleHRCb3gsIFR5cGU6OlRleHQpCiB7CiAgICAgbV9zdGFydE9y
UG9zaXRpb24gPSBzdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IGQwN2ZmYTRkZDBlZGY4NTg2MDAxNGNhOTcwNGNmMmNlOWFkMmI2NWYu
LjdlMzM1MGYzNTI5ZDcwMTUwMjc1NDA0MDc1NDJlNWJhZDUzODhkM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBA
IHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMo
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgYXV0byBzZWN0aW9uV2lkdGggPSBncmlkLmNv
bHVtbnMoKS5sb2dpY2FsV2lkdGgoKSArIDIgKiBncmlkLmhvcml6b250YWxTcGFjaW5nKCk7CiAg
ICAgYXV0byBsb2dpY2FsVG9wID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKICAg
ICBhdXRvIHZlcnRpY2FsU3BhY2luZyA9IGdyaWQudmVydGljYWxTcGFjaW5nKCk7Ci0gICAgYXV0
byBwYWRkaW5nQmVmb3JlID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4geyB2ZXJ0aWNhbFNwYWNpbmcg
fTsKKyAgICBhdXRvIHBhZGRpbmdCZWZvcmUgPSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsg
dmVydGljYWxTcGFjaW5nIH07CiAgICAgYXV0byBwYWRkaW5nQWZ0ZXIgPSB2ZXJ0aWNhbFNwYWNp
bmc7CiAgICAgZm9yIChhdXRvJiBzZWN0aW9uQm94IDogY2hpbGRyZW5PZlR5cGU8Q29udGFpbmVy
Qm94Pih0YWJsZUJveCkpIHsKICAgICAgICAgYXV0byYgc2VjdGlvbkJveEdlb21ldHJ5ID0gZm9y
bWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkoc2VjdGlvbkJveCk7CkBAIC0yNzcsNyArMjc3LDcg
QEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9u
cyhjb25zdCBDb25zdHJhaW50c0ZvckluRmwKICAgICB9CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91
dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCkKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQgYXZh
aWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50KQogewogICAgIEFTU0VSVChjZWxsLmJveCgpLmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKIApAQCAtNDE3LDkgKzQxNyw5IEBAIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQ
cmVmZXJyZWRXaWR0aEZvckNvbHVtCiAKICAgICAvLyAyLiBDb2xsZWN0IHRoZSBmaXhlZCB3aWR0
aCA8Y29sPnMuCiAgICAgYXV0byYgY29sdW1uTGlzdCA9IGdyaWQuY29sdW1ucygpLmxpc3QoKTsK
LSAgICBWZWN0b3I8T3B0aW9uYWw8TGF5b3V0VW5pdD4+IGZpeGVkV2lkdGhDb2x1bW5zOworICAg
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+PiBmaXhlZFdpZHRoQ29sdW1uczsKICAg
ICBmb3IgKGF1dG8mIGNvbHVtbiA6IGNvbHVtbkxpc3QpIHsKLSAgICAgICAgYXV0byBmaXhlZFdp
ZHRoID0gWyZdICgpIC0+IE9wdGlvbmFsPExheW91dFVuaXQ+IHsKKyAgICAgICAgYXV0byBmaXhl
ZFdpZHRoID0gWyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gewogICAgICAgICAg
ICAgYXV0byogY29sdW1uQm94ID0gY29sdW1uLmJveCgpOwogICAgICAgICAgICAgaWYgKCFjb2x1
bW5Cb3gpIHsKICAgICAgICAgICAgICAgICAvLyBBbm95bm1vdXMgY29sdW1ucyBkb24ndCBoYXZl
IGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIGFuZCBjYW4ndCBoYXZlIGZpeGVkIGNvbCBzaXplLgpA
QCAtNDg4LDcgKzQ4OCw3IEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtCiAgICAgcmV0dXJuIHRh
YmxlV2lkdGhDb25zdHJhaW50czsKIH0KIAotdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhU3BhY2UoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9u
dGFsU3BhY2UsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpCit2
b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFj
ZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKQogewogICAgIC8vIENvbXB1dGUgYW5kIGJh
bGFuY2UgdGhlIGNvbHVtbiBhbmQgcm93IHNwYWNlcy4KICAgICBhdXRvJiBncmlkID0gZm9ybWF0
dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IDk0MWNmMDlhYTY5YTFjMzY0ZTkyNjgxZTQyN2QwZTQyZWUwYzdm
YTMuLjFlODI1NTAxNWU0MTE5Yjc4YWQ5MDFlZDBmYmNkMDZlZTIyYWJkODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdXNpbmcgRGlzdHJpYnV0ZWRTcGFjZXMgPSBWZWN0b3I8TGF5b3V0
VW5pdD47CiAgICAgICAgIERpc3RyaWJ1dGVkU3BhY2VzIGRpc3RyaWJ1dGVkSG9yaXpvbnRhbFNw
YWNlKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlKTsKLSAgICAgICAgRGlzdHJp
YnV0ZWRTcGFjZXMgZGlzdHJpYnV0ZWRWZXJ0aWNhbFNwYWNlKE9wdGlvbmFsPExheW91dFVuaXQ+
IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpOworICAgICAgICBEaXN0cmlidXRlZFNwYWNlcyBkaXN0
cmlidXRlZFZlcnRpY2FsU3BhY2Uoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVW
ZXJ0aWNhbFNwYWNlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFRhYmxlRm9ybWF0
dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0
aW5nQ29udGV4dDsgfQpAQCAtNzUsMTMgKzc1LDEzIEBAIHByaXZhdGU6CiAgICAgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBU
YWJsZUxheW91dCgqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCkpOyB9CiAKICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgbGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNl
bGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgbGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2
YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRV
c2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSk7
CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JSb3dzKExheW91dFVuaXQgYXZhaWxhYmxlSG9y
aXpvbnRhbFNwYWNlKTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOwogCiAgICAgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBjb21wdXRlZFByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpOwotICAgIHZvaWQgY29t
cHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRh
bFNwYWNlLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKKyAg
ICB2b2lkIGNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJs
ZUhvcml6b250YWxTcGFjZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVWZXJ0
aWNhbFNwYWNlKTsKIAogICAgIFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUo
KSB7IHJldHVybiBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRl
eHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGMyZGQxNmRkYTg3ZmNkZTBiYjk3NGE4YTBkYWYx
MTM3MTZlYjQ0ODEuLjJhODUwM2JlMmU2ODhlMGQwZDI5ZDY5ZjNlNTEyMTVjZWM1MjEwNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0x
MDksNyArMTA5LDcgQEAgRWRnZXMgVGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ2Vs
bEJvcmRlcihjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwpIGMKICAgICByZXR1cm4gYm9yZGVy
OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29t
cHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gVGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVk
Q29sdW1uV2lkdGgoY29uc3QgQ29udGFpbmVyQm94JiBjb2x1bW5Cb3gpIGNvbnN0CiB7CiAgICAg
Ly8gQ2hlY2sgYm90aCBzdHlsZSBhbmQgPGNvbD4ncyB3aWR0aCBhdHRyaWJ1dGUuCiAgICAgLy8g
RklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIGNhbGN1bGF0ZWQgdmFsdWVzLCBsaWtl
IDxjb2wgc3R5bGU9IndpZHRoOiAxMCUiPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nR2VvbWV0cnkuaAppbmRleCBmMTExNjM0ZjA4NTQ2ZTA1YWIwZTAwYTZiZWQzNTRkZGJl
NzE0ZjA1Li5iMGI0NTc4MGYyMzQwZWZlNDdjMjY3YTJkNjM4ODA1ZjBkMzRjOGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgY2VsbEJveENvbnRlbnRIZWlnaHQoY29uc3Qg
Q29udGFpbmVyQm94JikgY29uc3Q7CiAgICAgRWRnZXMgY29tcHV0ZWRDZWxsQm9yZGVyKGNvbnN0
IFRhYmxlR3JpZDo6Q2VsbCYpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29udGFpbmVyQm94JiBjb2x1bW5Cb3gpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250
YWluZXJCb3gmIGNvbHVtbkJveCkgY29uc3Q7CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQ2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwm
KSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0IHVzZWRCYXNlbGluZUZvckNlbGwoY29uc3Qg
Q29udGFpbmVyQm94JiBjZWxsQm94KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJs
ZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IGFjOWUyOGM4ZDdjNWExZTAxM2MxNzk4N2ExNWY2
MzdmOTNiMjg3OGEuLmUxMjFiODgzMzgzYmRkZTIyMmM5YTNjY2E4ZmY1YzcxMDQ5NDQyOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgTGF5b3V0VW5pdCBUYWJsZUZvcm1hdHRpbmdRdWlya3M6OmhlaWdodFZhbHVlT2ZO
ZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGUKICAgICAvLyBjb250ZXh0LiBJZiB3ZSBj
YW4ndCByZXNvbHZlIGl0IHdpdGhpbiB0aGUgdGFibGUgc3VidHJlZSwgd2UgZGVmYXVsdCBpdCB0
byAwLgogICAgIC8vIGUuZyA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMHB4Ij48dGFibGU+PHRyPjx0
ZCBzdHlsZT0iaGVpZ2h0OiAxMDAlIj48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4gaXMgcmVzb2x2
ZWQgdG8gMHB4LgogICAgIGF1dG8mIHRhYmxlQm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290
KCk7Ci0gICAgYXV0byBmaXhlZExvZ2ljYWxIZWlnaHQgPSBbJl0oY29uc3QgYXV0byYgYW5jZXN0
b3JCb3gpIC0+IE9wdGlvbmFsPExheW91dFVuaXQ+IHsKKyAgICBhdXRvIGZpeGVkTG9naWNhbEhl
aWdodCA9IFsmXShjb25zdCBhdXRvJiBhbmNlc3RvckJveCkgLT4gc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiB7CiAgICAgICAgIGF1dG8gaGVpZ2h0ID0gYW5jZXN0b3JCb3guc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgIGlmICghaGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUdyaWQuaAppbmRleCBhZmU4NDE3YzlhZTE5NTc5YThl
M2I2MGI3MWNiM2MwM2YzZGMwOWM2Li42ZDUzYjQ1OGYxNWQ1YjMzMDg3ZWQ2ZjA3YjJlZDZkN2U4
YTJmNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL3RhYmxlL1RhYmxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVHcmlkLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRp
Y2FsU3BhY2luZzsgfQogCiAgICAgdm9pZCBzZXRDb2xsYXBzZWRCb3JkZXIoY29uc3QgRWRnZXMm
IGNvbGxhcHNlZEJvcmRlcikgeyBtX2NvbGxhcHNlZEJvcmRlciA9IGNvbGxhcHNlZEJvcmRlcjsg
fQotICAgIE9wdGlvbmFsPEVkZ2VzPiBjb2xsYXBzZWRCb3JkZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbGxhcHNlZEJvcmRlcjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbGxhcHNlZEJv
cmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkQm9yZGVyOyB9CiAKICAgICB2b2lkIHNl
dFdpZHRoQ29uc3RyYWludHMoSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKSB7IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM7IH0KLSAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
PiB3aWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiB3
aWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzOyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Nsb3RNYXAuaXNF
bXB0eSgpOyB9CiAgICAgLy8gQ29sdW1uIHJlcHJlc2VudHMgYSB2ZXJ0aWNhbCBzZXQgb2Ygc2xv
dHMgaW4gdGhlIGdyaWQuIEEgY29sdW1uIGhhcyBob3Jpem9udGFsIHBvc2l0aW9uIGFuZCB3aWR0
aC4KQEAgLTIzMSw4ICsyMzEsOCBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBtX2hvcml6
b250YWxTcGFjaW5nOwogICAgIExheW91dFVuaXQgbV92ZXJ0aWNhbFNwYWNpbmc7Ci0gICAgT3B0
aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzOwotICAgIE9wdGlvbmFsPEVkZ2VzPiBtX2NvbGxhcHNlZEJvcmRlcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IG1faW50cmluc2ljV2lkdGhDb25zdHJh
aW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPEVkZ2VzPiBtX2NvbGxhcHNlZEJvcmRlcjsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKaW5kZXggMjQ1MTk3ZGQ5YjJlNDMyMjliODU3
ZjU5MDc1NTU4ZTliYWZiNmU0Yi4uNTVkNTNhMTM2Nzc3Y2Y4ZWEzNDZmMDc4NzhiNzcwZTAyMDZm
NDljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBz
dGF0aWMgVmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBU
YWJsZUdyaWQmIGdyaWQsIExheW91dAogICAgIGF1dG8mIGNvbHVtbnMgPSBncmlkLmNvbHVtbnMo
KTsKICAgICBhdXRvJiByb3dzID0gZ3JpZC5yb3dzKCk7CiAgICAgLy8gMS4gQ29sbGVjdCB0aGUg
bm9uLXNwYW5uaW5nIHNwYWNlcyBmaXJzdC4gVGhleSBhcmUgdXNlZCBmb3IgdGhlIGZpbmFsIGRp
c3RyaWJ1dGlvbiBhcyB3ZWxsIGFzIGZvciBkaXN0cmlidXRpbmcgdGhlIHNwYW5uaW5nIHNwYWNl
LgotICAgIFZlY3RvcjxPcHRpb25hbDxSZXNvbHZlZEl0ZW0+PiByZXNvbHZlZEl0ZW1zKFNwYW5U
eXBlOjpzaXplKGdyaWQpKTsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxSZXNvbHZlZEl0ZW0+
PiByZXNvbHZlZEl0ZW1zKFNwYW5UeXBlOjpzaXplKGdyaWQpKTsKICAgICBmb3IgKHNpemVfdCBj
b2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5k
ZXgpIHsKICAgICAgICAgZm9yIChzaXplX3Qgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3Mu
c2l6ZSgpOyArK3Jvd0luZGV4KSB7CiAgICAgICAgICAgICBhdXRvJiBzbG90ID0gKmdyaWQuc2xv
dCh7IGNvbHVtbkluZGV4LCByb3dJbmRleCB9KTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6VAogICAgIH0pOwogfQogCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpU
YWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFi
bGVMYXlvdXQ6OmRpc3RyaWJ1dGVkVmVydGljYWxTcGFjZShPcHRpb25hbDxMYXlvdXRVbml0PiBh
dmFpbGFibGVWZXJ0aWNhbFNwYWNlKQorVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlv
dXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0
OjpkaXN0cmlidXRlZFZlcnRpY2FsU3BhY2Uoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVWZXJ0aWNhbFNwYWNlKQogewogICAgIGF1dG8mIHJvd3MgPSBtX2dyaWQucm93cygpOwog
ICAgIGF1dG8mIGNvbHVtbnMgPSBtX2dyaWQuY29sdW1ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292
ZXJhZ2UuY3BwCmluZGV4IGUzMDQ4YjZiNGNkNWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMu
LjNkMzU2NTExYjUzYmNiMTllNzIyYjA2M2E1YjFhOGNkM2NhNDBmOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvblNl
dDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckNoYXJhY3RlcihMQ2hhciBjaGFyYWN0ZXIsIGJv
b2wgdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBPcHRp
b25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JUZXh0KGNvbnN0IENoYXJhY3RlclR5cGUq
IHRleHQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBP
cHRpb25hbDxmbG9hdD4gbGluZUhlaWdodENvbnN0cmFpbnQsCitzdGF0aWMgT3B0aW9uU2V0PEF2
b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yVGV4dChjb25zdCBDaGFyYWN0ZXJUeXBlKiB0ZXh0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgc3RkOjpvcHRp
b25hbDxmbG9hdD4gbGluZUhlaWdodENvbnN0cmFpbnQsCiAgICAgYm9vbCB0ZXh0SXNKdXN0aWZp
ZWQsIEluY2x1ZGVSZWFzb25zIGluY2x1ZGVSZWFzb25zKQogewogICAgIE9wdGlvblNldDxBdm9p
ZGFuY2VSZWFzb24+IHJlYXNvbnM7CkBAIC00OTYsNyArNDk2LDcgQEAgc3RhdGljIE9wdGlvblNl
dDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvclRleHQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdGV4
dCwgdW5zaWcKICAgICByZXR1cm4gcmVhc29uczsKIH0KIAotc3RhdGljIE9wdGlvblNldDxBdm9p
ZGFuY2VSZWFzb24+IGNhblVzZUZvclRleHQoU3RyaW5nVmlldyB0ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udENhc2NhZGUsIE9wdGlvbmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludCwg
Ym9vbCB0ZXh0SXNKdXN0aWZpZWQsIEluY2x1ZGVSZWFzb25zIGluY2x1ZGVSZWFzb25zKQorc3Rh
dGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvclRleHQoU3RyaW5nVmlldyB0
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IGxpbmVIZWlnaHRDb25zdHJhaW50LCBib29sIHRleHRJc0p1c3RpZmllZCwgSW5jbHVkZVJlYXNv
bnMgaW5jbHVkZVJlYXNvbnMpCiB7CiAgICAgaWYgKHRleHQuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiBjYW5Vc2VGb3JUZXh0KHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSwgZm9u
dENhc2NhZGUsIGxpbmVIZWlnaHRDb25zdHJhaW50LCB0ZXh0SXNKdXN0aWZpZWQsIGluY2x1ZGVS
ZWFzb25zKTsKQEAgLTUxMSw3ICs1MTEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5jZVJl
YXNvbj4gY2FuVXNlRm9yRm9udEFuZFRleHQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAg
IGF1dG8mIGZvbnRDYXNjYWRlID0gc3R5bGUuZm9udENhc2NhZGUoKTsKICAgICBpZiAoZm9udENh
c2NhZGUucHJpbWFyeUZvbnQoKS5pc0ludGVyc3RpdGlhbCgpKQogICAgICAgICBTRVRfUkVBU09O
X0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dJc01pc3NpbmdQcmltYXJ5Rm9udCwgcmVhc29ucywg
aW5jbHVkZVJlYXNvbnMpOwotICAgIE9wdGlvbmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWlu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKICAgICBp
ZiAoc3R5bGUubGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhz
KSkKICAgICAgICAgbGluZUhlaWdodENvbnN0cmFpbnQgPSBjb250YWluZXIubGluZUhlaWdodChm
YWxzZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykudG9GbG9h
dCgpOwogICAgIGJvb2wgZmxvd0lzSnVzdGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4
dEFsaWduTW9kZTo6SnVzdGlmeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5k
ZXggNjgyMGIwZmFhYTY5ZDQ1NGQ5OTJiZDlkMGZiYjA3YWExYzJlNTQ3Zi4uZDUzYjVkY2IxMzll
ZGI5MDQwOTdmYmNjY2MzYmRhZTFmODZmNWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHAKQEAgLTM2NSw3ICszNjUsNyBAQCBUZXh0UnVuSXRlcmF0b3IgTGluZUxheW91dDo6
dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9y
UmVuZGVyZXIocmVuZGVyVGV4dCk7CiAKLSAgICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBP
cHRpb25hbDxzaXplX3Q+IHsKKyAgICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5l
Q29udGVudC0+cnVucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKCZtX2lubGluZUNv
bnRlbnQtPnJ1bnNbaV0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCAyYmI2YTJhNzI2
M2M4NjU4MjVmMDMwYjliNWRkODRiOWQ3ODg5ZTg1Li4wOTFhNjAxNGI3MTliNTNlYzQ3ZjA1MmFh
M2FiYTg2ZjhmYTA2ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0xMjMs
NyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3Rh
dGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGlu
Z1N0YXRlOwogICAgIFJlZlB0cjxJbmxpbmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9wYWdpbmF0ZWRIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBtX3BhZ2luYXRlZEhlaWdodDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgK
aW5kZXggM2RmZWVjYjIxYmNmY2M2NDliY2E3N2MyZTFhYjFmMWMzOWJkNTY4YS4uMTg5MDg4N2Vi
MmMwMjUwZDM4OWI2Njc5NWRjMmY3N2JhMzEyZjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTYx
LDEzICs2MSwxMyBAQCBzdHJ1Y3QgUnVuIHsKICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFuc2lv
bjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIE9wdGlv
bmFsPFRleHRDb250ZW50PiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUnVuKHNpemVfdCBsaW5lSW5k
ZXgsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiA9IHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3JlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCi0gICAgT3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0ZXh0
Q29udGVudCgpIHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxU
ZXh0Q29udGVudD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGVudDsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENvbnRlbnQ+JiB0ZXh0Q29udGVudCgpIHsgcmV0dXJu
IG1fdGV4dENvbnRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZW50PiYg
dGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRDb250ZW50OyB9CiAgICAgLy8gRklY
TUU6IFRoaXMgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHByZXNlcnZlZCBhdCBSdW4gY29uc3RydWN0
aW9uIHRpbWUuCiAgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJv
eCgpLmlzTGluZUJyZWFrQm94KCkgfHwgKHRleHRDb250ZW50KCkgJiYgdGV4dENvbnRlbnQoKS0+
b3JpZ2luYWxDb250ZW50KCkgPT0gIlxuIiAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKTsg
fQogCkBAIC05NCwxMCArOTQsMTAgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0Owog
ICAgIEZsb2F0UmVjdCBtX2lua092ZXJmbG93OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsK
LSAgICBPcHRpb25hbDxUZXh0Q29udGVudD4gbV90ZXh0Q29udGVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFRleHRDb250ZW50PiBtX3RleHRDb250ZW50OwogfTsKIAotaW5saW5lIFJ1bjo6UnVuKHNp
emVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFu
c2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+IHRleHRDb250ZW50KQoraW5saW5lIFJ1bjo6UnVu
KHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4
cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0Q29udGVudD4gdGV4dENvbnRlbnQpCiAgICAgOiBt
X2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAgLCBtX2xheW91dEJveChtYWtlV2Vha1B0cihsYXlv
dXRCb3gpKQogICAgICwgbV9yZWN0KHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBiYTIyYWYyNDM0ZDhhNTI2ZmU3OWRhODM1NGNj
ODMwMzExZTJmMmYxLi5mZTBhYTExMTljYzdlMjUyYjViYjRmNjU0OGJhN2U4YzcxMjdjYjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChCb3gpOwogCi1Cb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0
cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFz
ZVR5cGVGbGFncykKK0JveDo6Qm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0
dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+IGJh
c2VUeXBlRmxhZ3MpCiAgICAgOiBtX3N0eWxlKFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9lbGVt
ZW50QXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBl
RmxhZ3MudG9SYXcoKSkKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIEJveDo6c2V0Q29sdW1uV2lk
dGgoTGF5b3V0VW5pdCBjb2x1bW5XaWR0aCkKICAgICBlbnN1cmVSYXJlRGF0YSgpLmNvbHVtbldp
ZHRoID0gY29sdW1uV2lkdGg7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEJveDo6Y29sdW1u
V2lkdGgoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3g6OmNvbHVtbldpZHRo
KCkgY29uc3QKIHsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IDM0
MWMwOWY0MzlkMmFmYTA2MDNmZGY5MjkzYjU5NTNkZTg4NzE5N2YuLmY5ZDZiZjUxMTgyZTYzNzQx
MGQ3ODY0OGY4ZjU2ZTY3ZTA2NzFhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5oCkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgIHNpemVf
dCBjb2x1bW5TcGFuKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbHVtbldpZHRoKExheW91dFVu
aXQpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbHVtbldpZHRoKCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBzZXRQYXJlbnQoQ29udGFpbmVyQm94JiBwYXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9
CiAgICAgdm9pZCBzZXROZXh0U2libGluZyhCb3gmIG5leHRTaWJsaW5nKSB7IG1fbmV4dFNpYmxp
bmcgPSAmbmV4dFNpYmxpbmc7IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDYWNoZWRHZW9tZXRyeUZvckxheW91dFN0YXRlKExheW91dFN0YXRlJiwgc3RkOjp1bmlx
dWVfcHRyPEJveEdlb21ldHJ5PikgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBCb3goT3B0aW9u
YWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVG
bGFnPik7CisgICAgQm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJT
dHlsZSYmLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3Mg
Qm94UmFyZURhdGEgewpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJveFJh
cmVEYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIENlbGxTcGFuIHRhYmxlQ2VsbFNwYW47Ci0g
ICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbHVtbldpZHRoOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbHVtbldpZHRoOwogICAgIH07CiAKICAgICBib29sIGhhc1Jh
cmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YTsgfQpAQCAtMjA4LDcgKzIwOCw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJhcmVEYXRhTWFwJiByYXJlRGF0YU1hcCgpOwogCiAg
ICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsKLSAgICBPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4g
bV9lbGVtZW50QXR0cmlidXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVz
PiBtX2VsZW1lbnRBdHRyaWJ1dGVzOwogCiAgICAgQ29udGFpbmVyQm94KiBtX3BhcmVudCB7IG51
bGxwdHIgfTsKICAgICBCb3gqIG1fcHJldmlvdXNTaWJsaW5nIHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5LmgK
aW5kZXggNmQwZmI4MThjY2Q2ZjAxMTA1MGQxYTA2YjYxOWI1OWU5MzFlZDBlMS4uNzQyNGY2Y2Jh
YzRmOTBmYjdiYmFiNDM5NTliNzc1MjJlYWFlMzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRyeS5oCkBAIC03MCwxMiArNzAs
MTIgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgdmVydGljYWxCb3JkZXIoKSBjb25zdCB7IHJl
dHVybiBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBob3Jp
em9udGFsQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQo
KTsgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ1RvcCgpIGNvbnN0OwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRpbmdMZWZ0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gcGFkZGluZ0JvdHRvbSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IHBhZGRpbmdSaWdodCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHZlcnRp
Y2FsUGFkZGluZygpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhvcml6b250YWxQ
YWRkaW5nKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5nVG9w
KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5nTGVmdCgpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ0JvdHRvbSgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ1JpZ2h0KCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CiAK
ICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hUb3AoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94
VG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRl
bnRCb3hMZWZ0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQoKSArIHBhZGRpbmdMZWZ0
KCkudmFsdWVfb3IoMCk7IH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CiAKICAgICB2b2lkIHNldFZlcnRpY2FsUGFkZGluZyhM
YXlvdXQ6OlZlcnRpY2FsRWRnZXMpOwotICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxMYXlv
dXQ6OkVkZ2VzPik7CisgICAgdm9pZCBzZXRQYWRkaW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpF
ZGdlcz4pOwogCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNwYWNlRm9yU2Nyb2xsYmFyKExheW91dFVu
aXQgc2Nyb2xsYmFySGVpZ2h0KSB7IG1fdmVydGljYWxTcGFjZUZvclNjcm9sbGJhciA9IHNjcm9s
bGJhckhlaWdodDsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKExh
eW91dFVuaXQgc2Nyb2xsYmFyV2lkdGgpIHsgbV9ob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIg
PSBzY3JvbGxiYXJXaWR0aDsgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgVmVy
dGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKIAogICAgIExheW91dDo6RWRnZXMgbV9ib3Jk
ZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gbV9wYWRkaW5nOworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0OjpFZGdlcz4gbV9wYWRkaW5nOwogCiAgICAgTGF5b3V0VW5pdCBtX3ZlcnRp
Y2FsU3BhY2VGb3JTY3JvbGxiYXI7CiAgICAgTGF5b3V0VW5pdCBtX2hvcml6b250YWxTcGFjZUZv
clNjcm9sbGJhcjsKQEAgLTI4Nyw3ICsyODcsNyBAQCBpbmxpbmUgdm9pZCBCb3hHZW9tZXRyeTo6
c2V0Qm9yZGVyKExheW91dDo6RWRnZXMgYm9yZGVyKQogICAgIG1fYm9yZGVyID0gYm9yZGVyOwog
fQogCi1pbmxpbmUgdm9pZCBCb3hHZW9tZXRyeTo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6
OkVkZ2VzPiBwYWRkaW5nKQoraW5saW5lIHZvaWQgQm94R2VvbWV0cnk6OnNldFBhZGRpbmcoc3Rk
OjpvcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQogewogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgc2V0SGFzVmFsaWRQYWRkaW5nKCk7CkBAIC0zMzksNyArMzM5LDcgQEAgaW5saW5lIExh
eW91dFVuaXQgQm94R2VvbWV0cnk6Om1hcmdpbkVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faG9y
aXpvbnRhbE1hcmdpbi5lbmQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hH
ZW9tZXRyeTo6cGFkZGluZ1RvcCgpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ1RvcCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFz
VmFsaWRQYWRkaW5nKTsKICAgICBpZiAoIW1fcGFkZGluZykKQEAgLTM0Nyw3ICszNDcsNyBAQCBp
bmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBhZGRpbmdUb3AoKSBjb25z
dAogICAgIHJldHVybiBtX3BhZGRpbmctPnZlcnRpY2FsLnRvcDsKIH0KIAotaW5saW5lIE9wdGlv
bmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0CitpbmxpbmUg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ0xlZnQoKSBjb25z
dAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcp
CkBAIC0zNTUsNyArMzU1LDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21l
dHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFkZGluZy0+aG9yaXpvbnRh
bC5sZWZ0OwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnBh
ZGRpbmdCb3R0b20oKSBjb25zdAoraW5saW5lIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94
R2VvbWV0cnk6OnBhZGRpbmdCb3R0b20oKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlk
UGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRpbmcpCkBAIC0zNjMsNyArMzYzLDcgQEAgaW5saW5l
IE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nQm90dG9tKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wYWRkaW5nLT52ZXJ0aWNhbC5ib3R0b207CiB9CiAKLWlubGluZSBPcHRp
b25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6cGFkZGluZ1JpZ2h0KCkgY29uc3QKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBj
b25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7CiAgICAgaWYgKCFtX3BhZGRp
bmcpCkBAIC0zNzEsNyArMzcxLDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdl
b21ldHJ5OjpwYWRkaW5nUmlnaHQoKSBjb25zdAogICAgIHJldHVybiBtX3BhZGRpbmctPmhvcml6
b250YWwucmlnaHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRy
eTo6dmVydGljYWxQYWRkaW5nKCkgY29uc3QKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IEJveEdlb21ldHJ5Ojp2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdAogewogICAgIGF1dG8gcGFk
ZGluZ1RvcCA9IHRoaXMtPnBhZGRpbmdUb3AoKTsKICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB0
aGlzLT5wYWRkaW5nQm90dG9tKCk7CkBAIC0zODAsNyArMzgwLDcgQEAgaW5saW5lIE9wdGlvbmFs
PExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojp2ZXJ0aWNhbFBhZGRpbmcoKSBjb25zdAogICAgIHJl
dHVybiBwYWRkaW5nVG9wLnZhbHVlX29yKDApICsgcGFkZGluZ0JvdHRvbS52YWx1ZV9vcigwKTsK
IH0KIAotaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFs
UGFkZGluZygpIGNvbnN0CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9t
ZXRyeTo6aG9yaXpvbnRhbFBhZGRpbmcoKSBjb25zdAogewogICAgIGF1dG8gcGFkZGluZ0xlZnQg
PSB0aGlzLT5wYWRkaW5nTGVmdCgpOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gdGhpcy0+cGFk
ZGluZ1JpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcAppbmRleCAxZGIyZjM4NTJlZmEzYjc2YWMxMTZlNjdm
OTM5NjZhMThjMjY3NDE0Li45YzNlNzEzZjIwOTk2MWFhZmQ3ZWQyY2UxMzc1NzMzMDJkNWFiNGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250
YWluZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dENvbnRhaW5lckJveC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDb250YWluZXJCb3gpOwogCi1Db250YWluZXJC
b3g6OkNvbnRhaW5lckJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4gYmFzZVR5cGVGbGFn
cykKK0NvbnRhaW5lckJveDo6Q29udGFpbmVyQm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJp
YnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIE9wdGlvblNldDxCYXNlVHlw
ZUZsYWc+IGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBCb3goYXR0cmlidXRlcywgV1RGTW92ZShzdHls
ZSksIGJhc2VUeXBlRmxhZ3MgfCBDb250YWluZXJCb3hGbGFnKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaAppbmRl
eCA2MTFkOWM0YmQzNTFhMTE2YzhmYmQ4YWY2OTg1NGVjNWNkN2U4NzZiLi5lMGFmYTRhOGI3NWY5
ZjQ1OGJjNjUyMTJlZGQyMGZhM2M5MmJjNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNsYXNzIENvbnRhaW5lckJveCA6IHB1YmxpYyBCb3ggewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29udGFpbmVyQm94KTsKIHB1YmxpYzoKLSAgICBD
b250YWluZXJCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmLCBP
cHRpb25TZXQ8QmFzZVR5cGVGbGFnPiA9IHsgQ29udGFpbmVyQm94RmxhZyB9KTsKKyAgICBDb250
YWluZXJCb3goc3RkOjpvcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYs
IE9wdGlvblNldDxCYXNlVHlwZUZsYWc+ID0geyBDb250YWluZXJCb3hGbGFnIH0pOwogCiAgICAg
Y29uc3QgQm94KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAg
ICAgY29uc3QgQm94KiBmaXJzdEluRmxvd0NoaWxkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCmluZGV4IDUy
MWY2MTI3M2M1NzFjM2NjNDkyMWM2MDJlY2NjNzlhODNjMTg5ZmQuLjM3ODRjZjkzZjgxZmMxYzM4
NGQ3MThiYmViNzYxOTkwOWY2MjE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExheW91dFVuaXQpOwogICAgIHZvaWQgbW92
ZUJ5KExheW91dFBvaW50KTsKIAotICAgIHZvaWQgZXhwYW5kKE9wdGlvbmFsPExheW91dFVuaXQ+
LCBPcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAgdm9pZCBleHBhbmQoc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0Piwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pik7CiAgICAgdm9pZCBleHBhbmRI
b3Jpem9udGFsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoZGVsdGEsIHsgfSk7IH0KICAg
ICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoeyB9LCBk
ZWx0YSk7IH0KICAgICB2b2lkIGV4cGFuZFRvQ29udGFpbihjb25zdCBSZWN0Jik7CkBAIC0yODYs
NyArMjg2LDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6bW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkK
ICAgICBtX3JlY3QubW92ZUJ5KG9mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkIFJlY3Q6OmV4cGFu
ZChPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
KQoraW5saW5lIHZvaWQgUmVjdDo6ZXhwYW5kKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lk
dGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQogewogICAgIEFTU0VSVCghd2lk
dGggfHwgbV9oYXNWYWxpZFdpZHRoKTsKICAgICBBU1NFUlQoIWhlaWdodCB8fCBtX2hhc1ZhbGlk
SGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFJlcGxhY2VkQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFJlcGxhY2VkQm94LmNwcAppbmRleCA2Yjg5NjQwNzNmZmVhZDkxYTgwNWQ4ZjU4NDc2Zjc0
OTk2NWQwN2Q3Li42NDM4NGI5YTk4M2EyN2MzMTBkNmJmNzMwMTkxZWYyNzFkYzZlZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0UmVwbGFj
ZWRCb3guY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoUmVwbGFjZWRCb3gpOwogCi1SZXBsYWNlZEJveDo6UmVwbGFj
ZWRCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQorUmVwbGFjZWRCb3g6OlJlcGxhY2VkQm94KHN0ZDo6b3B0aW9uYWw8
RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogQm94KGVsZW1lbnRBdHRyaWJ1dGVzLCBXVEZNb3ZlKHN0eWxlKSwgQm94OjpSZXBs
YWNlZEJveEZsYWcpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0UmVwbGFjZWRCb3guaAppbmRleCA1NmJmY2FlNjAwZTFiNDdkNDU0YzVlMWIz
NjMwMjcyZjIwZWRkMWQ5Li44ZTFmZDM5NGE4NWQxY2EwNzI3MTEzZmQxYmFkNjRhZjAwNTk4ZjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBs
YWNlZEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFJl
cGxhY2VkQm94LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBS
ZXBsYWNlZEJveCA6IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVw
bGFjZWRCb3gpOwogcHVibGljOgotICAgIFJlcGxhY2VkQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRy
aWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVwbGFjZWRCb3goc3RkOjpvcHRpb25hbDxF
bGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlcGxhY2Vk
Qm94KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSYg
Y2FjaGVkSW1hZ2UpIHsgbV9jYWNoZWRJbWFnZSA9ICZjYWNoZWRJbWFnZTsgfQpAQCAtNTgsMTQg
KzU4LDE0IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGludHJpbnNpY1JhdGlvKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldEJhc2VsaW5lKExheW91dFVuaXQgYmFzZWxpbmUpIHsgbV9iYXNlbGlu
ZSA9IGJhc2VsaW5lOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmFzZWxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBi
YXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZWxpbmU7IH0KIAogcHJpdmF0ZToKICAgICBi
b29sIGhhc0FzcGVjdFJhdGlvKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBt
X2ludHJpbnNpY1NpemU7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9pbnRyaW5zaWNSYXRp
bzsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2Jhc2VsaW5lOworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0U2l6ZT4gbV9pbnRyaW5zaWNTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gbV9pbnRyaW5zaWNSYXRpbzsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1f
YmFzZWxpbmU7CiAgICAgQ2FjaGVkSW1hZ2UqIG1fY2FjaGVkSW1hZ2UgeyBudWxscHRyIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKaW5kZXggOTQ1NjRkMGJlMmQyZjRlYjllY2FhMmNlNThlZDk4ODExZjJl
NzA4NC4uNTllNmQ4MThmOGU5MzgwM2U1ZTI5OGY0OWQ0ZDAyYWU5NTA1MjU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZChDb250YWluZXJC
b3gmIHBhcmVudCwgQm94JiBuZXdDaGlsZCkKICAgICBwYXJlbnQuc2V0TGFzdENoaWxkKG5ld0No
aWxkKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zmc2V0
Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVhdGlvbihjb25zdCBSZW5kZXJCb3gmIGJsb2NrKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gYWNjdW11bGF0ZWRPZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbmVkQ29udGludWF0aW9uKGNvbnN0IFJlbmRlckJveCYgYmxvY2spCiB7CiAgICAg
Ly8gRklYRTogVGhpcyBpcyBhIHdvcmthcm91bmQgb2YgdGhlIGNvbnRpbnVhdGlvbiBsb2dpYyB3
aGVuIHRoZSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgcGFyZW50IGlubGluZSBib3gKICAgICAvLyBi
ZWNvbWVzIGEgc2libGluZyBib3ggb2YgdGhpcyBibG9jayBhbmQgb25seSByZWFjaGFibGUgdGhy
b3VnaCB0aGUgY29udGludWF0aW9uIGxpbmsgd2hpY2ggd2UgZG9uJ3QgaGF2ZSBoZXJlLgpAQCAt
MTMzLDcgKzEzMyw3IEBAIFRyZWVCdWlsZGVyOjpUcmVlQnVpbGRlcihMYXlvdXRUcmVlJiBsYXlv
dXRUcmVlKQogewogfQogCi1Cb3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVSZXBsYWNlZEJveChPcHRp
b25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKK0JveCYgVHJlZUJ1aWxkZXI6OmNyZWF0ZVJlcGxhY2VkQm94KHN0ZDo6b3B0
aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiB7CiAgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5pcXVlPFJlcGxhY2VkQm94
PihlbGVtZW50QXR0cmlidXRlcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGF1dG8mIGJveCA9ICpu
ZXdCb3g7CkBAIC0xNTcsNyArMTU3LDcgQEAgQm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGluZUJy
ZWFrQm94KGJvb2wgaXNPcHRpb25hbCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICByZXR1cm4g
Ym94OwogfQogCi1Db250YWluZXJCb3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIoT3B0
aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCitDb250YWluZXJCb3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIo
c3RkOjpvcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKICAgICBhdXRvIG5ld0NvbnRhaW5lciA9IG1ha2VVbmlx
dWU8Q29udGFpbmVyQm94PihlbGVtZW50QXR0cmlidXRlcywgV1RGTW92ZShzdHlsZSkpOwogICAg
IGF1dG8mIGNvbnRhaW5lciA9ICpuZXdDb250YWluZXI7CkBAIC0xNjcsNyArMTY3LDcgQEAgQ29u
dGFpbmVyQm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxl
bWVudEF0dHJpYnV0ZXM+IGVsZW0KIAogQm94KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94
KGNvbnN0IENvbnRhaW5lckJveCYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJPYmplY3Qm
IGNoaWxkUmVuZGVyZXIpCiB7Ci0gICAgYXV0byBlbGVtZW50QXR0cmlidXRlcyA9IFtdIChjb25z
dCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikgLT4gT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmli
dXRlcz4geworICAgIGF1dG8gZWxlbWVudEF0dHJpYnV0ZXMgPSBbXSAoY29uc3QgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIpIC0+IHN0ZDo6b3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4g
ewogICAgICAgICBpZiAocmVuZGVyZXIuaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBl
OjpEb2N1bWVudCB9OwogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1l
bnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmgKaW5kZXggMmJjNmZmN2M1Yjk3ZTI4NWMzZWM0N2NmM2VhYWUxMTY3YmU3
MTc3ZC4uNTI1Y2U2M2JiZGUxMzJlYWM0Y2Y2OGNjZmQ4NThmM2YyNjZjNmI1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5o
CkBAIC02OCwxMCArNjgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1
cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW5lckJveCYgdGFibGVX
cmFwcGVyQm94KTsKICAgICBCb3gqIGNyZWF0ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gm
IHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKIAot
ICAgIEJveCYgY3JlYXRlUmVwbGFjZWRCb3goT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRl
cz4sIFJlbmRlclN0eWxlJiYpOworICAgIEJveCYgY3JlYXRlUmVwbGFjZWRCb3goc3RkOjpvcHRp
b25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7CiAgICAgQm94JiBj
cmVhdGVUZXh0Qm94KFN0cmluZyB0ZXh0LCBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3Vy
aW5nLCBSZW5kZXJTdHlsZSYmKTsKICAgICBCb3gmIGNyZWF0ZUxpbmVCcmVha0JveChib29sIGlz
T3B0aW9uYWwsIFJlbmRlclN0eWxlJiYpOwotICAgIENvbnRhaW5lckJveCYgY3JlYXRlQ29udGFp
bmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKKyAg
ICBDb250YWluZXJCb3gmIGNyZWF0ZUNvbnRhaW5lcihzdGQ6Om9wdGlvbmFsPEJveDo6RWxlbWVu
dEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIExheW91dFRyZWUmIG1fbGF5b3V0
VHJlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci5jcHAKaW5kZXggMzMxZDMwNTdmODI1MmI2YWU2MjYwM2M3OGQ0MjQ3NWFmZGEw
MGU3NS4uNmQ3ZGMzZjdkOWY3YmQ2OTgwYzM5ZTQyYzQ3ZThjZDE3YzNjM2FhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcApA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIH0KIH0KIAotT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIEFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZXI6OnByb2Nlc3NNYW5pZmVzdCgpCitzdGQ6Om9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyOjpwcm9jZXNzTWFu
aWZlc3QoKQogewogICAgIGlmICghbV9wcm9jZXNzZWRNYW5pZmVzdCAmJiBtX3Jlc291cmNlKSB7
CiAgICAgICAgIGF1dG8gbWFuaWZlc3RVUkwgPSBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCmluZGV4IGJhYjU0ZTAwNzQyYTll
YWMyZGY1OTgwNGI2NzVjYWM4MjdkYWM2ZDMuLmQ1Zjc0NmFhYjE1ZGJjMjEyNDhjZTI0ODE2Yzll
ZWY0OTNlMDZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaApAQCAtNDksMTMgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHN0
YXJ0TG9hZGluZygpOwogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAotICAgIE9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9jZXNzTWFuaWZlc3QoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBwcm9jZXNzTWFuaWZlc3QoKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKLSAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OworICAgIHN0
ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKICAg
ICBVUkwgbV91cmw7CiAgICAgYm9vbCBtX3VzZUNyZWRlbnRpYWxzOwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1fcmVzb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCmluZGV4IDU3OTFmMDA0ODNiZmVmMWRmNmJiM2E3MzFhYTVi
NTczNDQ2Y2E5ZjUuLjFiMmZiYjc4ZTZhNWE3YzRlNmExZjU4NGY3NTI3ODY5YTJjYzZkZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIFN0cmluZyBD
b29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIAogICAgIGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJl
Q29va2llcyhkb2N1bWVudCwgdXJsKTsKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFt
ZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwogICAg
ICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkucGFnZUlEKCk7CkBAIC0xMDEsOCArMTAxLDgg
QEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MKIHsKICAgICBUcmFjZVNjb3BlIHNjb3BlKEZldGNo
Q29va2llc1N0YXJ0LCBGZXRjaENvb2tpZXNFbmQpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUlE
KCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKTsKQEAgLTExMyw4
ICsxMTMsOCBAQCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogCiB2b2lkIENvb2tpZUphcjo6c2V0
Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7
Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewog
ICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmZyYW1lSUQoKTsKICAgICAgICAgcGFn
ZUlEID0gZnJhbWUtPmxvYWRlcigpLnBhZ2VJRCgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wg
Q29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3Vs
dCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5v
KTsKQEAgLTE0OCw4ICsxNDgsOCBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNj
ZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdQogCiBTdHJpbmcg
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5m
cmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVJRCgpOwog
ICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkucGFnZUlEKCk7CkBAIC0xNjMsOCArMTYz
LDggQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIAogYm9vbCBDb29raWVKYXI6OmdldFJhd0Nv
b2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuaAppbmRleCAwN2I0ZWRlOWZiNzg0ZmZlMWI4MDMwOTI5MjE3ZTEwNDE1ZTdmZjgyLi45
ODI2OTFkZDJkZmUyZjY1MjAxMzcwYTEyMzAyYjUwODY3MDNjMTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llcyhEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYp
IGNvbnN0OwotICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vz
c2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
Piwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFJh
d0Nvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IENvb2tpZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAppbmRleCBlNTgyYTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRmMDU1
MDkwNGE2Li5mYTAyNGYxNjE4MTEwNWZiNTNlZTJmYmVjZThhNTRmNmY3YTRhZjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApA
QCAtMzA0LDE0ICszMDQsMTQgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZENyb3NzT3JpZ2lu
UmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKGNvbnN0IFNlY3VyaXR5T3JpZ2kKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlQ3Jvc3NPcmlnaW5S
ZXNvdXJjZVBvbGljeShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3koY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoc2hvdWxkQ3Jvc3NPcmlnaW5SZXNv
dXJjZVBvbGljeUNhbmNlbExvYWQob3JpZ2luLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdFVSTCwg
bWFrZVN0cmluZygiQ2FuY2VsbGVkIGxvYWQgdG8gIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgcmVzb3Vy
Y2UncyBDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IHJlc3BvbnNlIGhlYWRlci4iKSwgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLU9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRG
bGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCitzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VS
ZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzUmFuZ2VSZXF1ZXN0
ZWQoKSAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDIwNiAmJiByZXNwb25zZS50eXBl
KCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlICYmICFyZXF1ZXN0Lmhhc0hUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UpKQogICAgICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcih7IH0sIDAsIHJlc3BvbnNlLnVybCgpLCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6
OkdlbmVyYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oCmluZGV4IGEzYmY5OTM2NzI0NzJmODUzYzNhODg1ZmFiM2Y3NTNlOTA3YmM5NTYu
LjA1NzQ4M2YyOWZkY2E3NjVlNmI0MDk4YjkzYWQwNzYyYTVkZDdiN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKQEAgLTgwLDggKzgw
LDggQEAgcHJpdmF0ZToKIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gcGFz
c2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyKik7CiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDx2b2lk
LCBTdHJpbmc+IHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25z
dCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlz
YWJsZXIqKTsKIAotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRh
dGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4g
dmFsaWRhdGVSYW5nZVJlcXVlc3RlZEZsYWcoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZUVycm9yPiB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlP
cmlnaW4mLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CitzdGQ6Om9wdGlv
bmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIFN0cmluZyB2YWxpZGF0ZUNy
b3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5MjdiNGExMDNlZDFlNGI1MDNkZGRjZmFkNWE4
MWY0NTE5NDU2ZjBlLi44YTIyNjI4NzhjMDZkMTI4OTVlNTdjMjMwZmJmYTY4NjJiNmZkNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEV4cGVjdGVkPFVuaXF1ZVJlZjxD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4sIFN0cmluZz4gQ3Jvc3NPcmlnaW5Q
cmVmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZUl0ZW0+KE1vbm90b25pY1RpbWU6Om5vdygpICsgZXhwaXJ5RGVsdGEsIHBvbGljeSwgV1RG
TW92ZSgqbWV0aG9kcyksIFdURk1vdmUoKmhlYWRlcnMpKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5n
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRI
ZWFkZXJzKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0
SGVhZGVycykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbTo6dmFsaWRhdGVNZXRob2RBbmRIZWFkZXJzKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykgY29uc3QKIHsKICAg
ICBpZiAoIWFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKG1ldGhvZCwgbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJNZXRob2QgIiwgbWV0aG9kLCAi
IGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMuIik7CkBAIC04
OCw3ICs4OCw3IEBAIGJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFs
bG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbV9tZXRob2Rz
LmNvbnRhaW5zKG1ldGhvZCkgfHwgKG1fbWV0aG9kcy5jb250YWlucygiKiIpICYmIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ICE9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHx8IGlzT25B
Y2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvZEFsbG93bGlzdChtZXRob2QpOwogfQogCi1P
cHRpb25hbDxTdHJpbmc+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjp2YWxp
ZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVy
cywgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0
ZW06OnZhbGlkYXRlQ3Jvc3NPcmlnaW5IZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVl
c3RIZWFkZXJzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSkgY29uc3QKIHsKICAgICBib29sIHZhbGlkV2lsZGNhcmQgPSBtX2hlYWRlcnMuY29udGFpbnMo
IioiKSAmJiBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6VXNlOwogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogcmVxdWVzdEhlYWRlcnMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5oCmluZGV4IDU2NGNlN2FhMzAxMWRiMDY5NWYyNmJjZTE1N2IxYjg3OTI1ZjRj
YzQuLmVkZWRlOWUyYzZmODM4N2U5M2FhMDBmYzNiNGJlNDdkMjlkZmVlYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGVJdGVtKE1vbm90b25pY1RpbWUsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBIYXNoU2V0PFN0cmluZz4mJiwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mJik7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlTWV0aG9kQW5kSGVhZGVy
cyhjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZU1ldGhvZEFuZEhlYWRlcnMoY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmKSBjb25zdDsKICAgICBib29sIGFsbG93
c1JlcXVlc3QoU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBIVFRQSGVhZGVyTWFwJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd3ND
cm9zc09yaWdpbk1ldGhvZChjb25zdCBTdHJpbmcmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSkg
Y29uc3Q7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhj
b25zdCBIVFRQSGVhZGVyTWFwJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZUNyb3NzT3JpZ2luSGVhZGVycyhjb25zdCBI
VFRQSGVhZGVyTWFwJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIGNvbnN0OwogCiAgICAgLy8g
RklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHRvIGhvbGRpbmcgb250byB0aGUgYWJzb2x1dGUgZXhw
aXJhdGlvbiB0aW1lIG1pZ2h0IGJlCiAgICAgLy8gdG8gc3RhcnQgYSB0aW1lciBmb3IgdGhlIGV4
cGlyYXRpb24gZGVsdGEgdGhhdCByZW1vdmVzIHRoaXMgZnJvbSB0aGUgY2FjaGUgd2hlbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oCmluZGV4IDdmMTQxY2Y4MTFk
MTVhOTc4MThlNjIyYjhlZWMyZWQ1YzFiYzIyYTEuLjMyYTE2ODEwZTBkMjFlYjFhZGIxNDE2M2U2
NjZlM2U3NjZmMzljODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdXN0b21I
ZWFkZXJGaWVsZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmll
bGRzLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIEN1c3RvbUhlYWRl
ckZpZWxkcyB7CiAgICAgYm9vbCB0aGlyZFBhcnR5RG9tYWluc01hdGNoKGNvbnN0IFVSTCYpIGNv
bnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDdXN0
b21IZWFkZXJGaWVsZHM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3VzdG9tSGVhZGVyRmllbGRzPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ5LDE0ICs0OSwxNCBA
QCB2b2lkIEN1c3RvbUhlYWRlckZpZWxkczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxDdXN0b21IZWFkZXJGaWVs
ZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEN1c3RvbUhlYWRlckZpZWxkcz4gQ3VzdG9tSGVhZGVyRmllbGRzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8SFRUUEhlYWRlckZpZWxkPj4g
ZmllbGRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxk
czsKICAgICBkZWNvZGVyID4+IGZpZWxkczsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhp
cmRQYXJ0eURvbWFpbnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQ
YXJ0eURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5RG9tYWluczsKICAgICBpZiAo
IXRoaXJkUGFydHlEb21haW5zKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOThjZjk1ZGNkZmU0YWQ2ZGU1
MzMwYmMxN2I3ZDVlMjhlNjBlNDIwOC4uYWFmZDg2ZjY1OGZkNWI3MTNhY2E0OGNkZGQ3YTYyNWRj
YThlOTVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01
NzAsNyArNTcwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF0Y2hSZWdpc3RyYXRpb24oY29u
c3QgVVJMJiB1cmwsIFNXQ2xpZW50Q29ubmVjdGlvbjo6UmVnaXMKICAgICBjb25uZWN0aW9uLm1h
dGNoUmVnaXN0cmF0aW9uKFdURk1vdmUob3JpZ2luKSwgdXJsLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZWdpc3RyYXRpb25zRXF1YWwoY29uc3QgT3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiBhLCBjb25zdCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mIGIpCitzdGF0aWMgaW5saW5lIGJvb2wgYXJl
UmVnaXN0cmF0aW9uc0VxdWFsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiBhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYgYikKIHsKICAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybiAhYjsKQEAgLTE0
ODEsNyArMTQ4MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRlCiAgICAgbV9hcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVycy5yZW1vdmUoJmxvYWRlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCkK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IG1hbmlmZXN0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSWRl
bnRpZmllcik7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDdiMmEwZWM1ODVhMTllYmRlOTZlZWE3Nzc1MzMwODE3
NTM1Zjc0NTUuLjM3MzU2ZjQ2NjVjM2Y2ZjMyZTFkNTcyOTRiYjRhZTRkYWQ2NDhmMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MzksNyArNDM5LDcgQEAgcHJp
dmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpPiYmKTsKKyAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdv
cmtlckNsaWVudCgpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+
KTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CkBAIC02
NTAsOCArNjUwLDggQEAgcHJpdmF0ZToKICAgICBNb3VzZUV2ZW50UG9saWN5IG1fbW91c2VFdmVu
dFBvbGljeSB7IE1vdXNlRXZlbnRQb2xpY3k6OkRlZmF1bHQgfTsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4g
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKLSAgICBPcHRpb25hbDxEb2N1bWVudElk
ZW50aWZpZXI+IG1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPiBtX3RlbXBv
cmFyeVNlcnZpY2VXb3JrZXJDbGllbnQ7CiAjZW5kaWYKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGI5Mzk2NWRjMTBhN2IxNGE3MzQwNjZmYjk1MmU4ZWFhNzM0ODZmNDIuLmY4ZDIwZjBj
YmZiNjNjNDFhOWM5ZGE3ODVhMTY2ZDAyNGUyYzU0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02NTQsNyArNjU0LDcg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRp
ZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgY29uc3QgYXV0byogdGlt
aW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwotICAg
IE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgc3RkOjpvcHRpb25hbDxO
ZXR3b3JrTG9hZE1ldHJpY3M+IGVtcHR5OwogICAgIGlmICghdGltaW5nKSB7CiAgICAgICAgIGVt
cHR5LmVtcGxhY2UoKTsKICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNDU2
ZjQxN2JhMzA3NDAyN2FhN2IzMjc3NDU4MTE0NDBiYTcyZjU2My4uYmY0MTYyN2UxZDc3ODg4YWQw
N2QyMzBlZmMzNTQ1YzM0ZGQ1ODhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtMTM0LDEyICsxMzQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1fYXN5bmM7CiAgICAgICAgIGJvb2wgbV9kZWxheUNh
bGxiYWNrc0ZvckludGVncml0eUNoZWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9u
YWw8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAg
ICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVj
a2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFk
ZXJzOwogCiAgICAgICAgIFNob3VsZExvZ0Vycm9yIG1fc2hvdWxkTG9nRXJyb3I7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1f
YnlwYXNzaW5nUHJlZmxpZ2h0Rm9yU2VydmljZVdvcmtlclJlcXVlc3Q7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiBtX2J5cGFzc2luZ1ByZWZsaWdodEZvclNlcnZpY2VX
b3JrZXJSZXF1ZXN0OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IDMxNjA1ZTY4MmRiNGRjZDYxNmYxYjhmMDVjZWU2Y2Q3NGRiOTBkZjguLjZj
NzA4OWUxODFkMGE4NzJjNDk2YmZmZTFmNTEyNDdjYWYyMjMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNs
aWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5
UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAg
ICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfTsKICAgICBP
cHRpb25TZXQ8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09m
QWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9
CiAKICAgICB2b2lkIGludmFsaWRhdGVSb290Vmlldyhjb25zdCBJbnRSZWN0JikgZmluYWwgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggZTM1Y2E4M2E1MDQ1Y2Y2MTBj
OTNiMzc4NWNkMzRhYjAyZTIyZjQ5NS4uYzdmMzEzODQyZTE0ZDNkY2ZjODNlMDYyZDk4NTU3NGRk
NWZlMGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNDksNyArNDks
NyBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZVBlcnNpc3RlbnQoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVQZXJzaXN0ZW50
KERlY29kZXImLCBGZXRjaE9wdGlvbnMmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEZldGNoT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IGRl
Y29kZShEZWNvZGVyJik7CiAKICAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3RpbmF0
aW9uOjpFbXB0eVN0cmluZyB9OwogICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29ycyB9OwpAQCAt
MTg5LDQyICsxODksNDIgQEAgaW5saW5lIHZvaWQgRmV0Y2hPcHRpb25zOjplbmNvZGVQZXJzaXN0
ZW50KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogaW5s
aW5lIGJvb2wgRmV0Y2hPcHRpb25zOjpkZWNvZGVQZXJzaXN0ZW50KERlY29kZXImIGRlY29kZXIs
IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uPiBkZXN0aW5hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb24+IGRlc3RpbmF0aW9uOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CiAg
ICAgaWYgKCFkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9u
YWw8RmV0Y2hPcHRpb25zOjpNb2RlPiBtb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRp
b25zOjpNb2RlPiBtb2RlOwogICAgIGRlY29kZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPEZldGNoT3B0aW9uczo6Q3JlZGVu
dGlhbHM+IGNyZWRlbnRpYWxzOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpDcmVk
ZW50aWFscz4gY3JlZGVudGlhbHM7CiAgICAgZGVjb2RlciA+PiBjcmVkZW50aWFsczsKICAgICBp
ZiAoIWNyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxG
ZXRjaE9wdGlvbnM6OkNhY2hlPiBjYWNoZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9u
czo6Q2FjaGU+IGNhY2hlOwogICAgIGRlY29kZXIgPj4gY2FjaGU7CiAgICAgaWYgKCFjYWNoZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8RmV0Y2hPcHRpb25zOjpSZWRp
cmVjdD4gcmVkaXJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM6OlJlZGlyZWN0
PiByZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IHJlZGlyZWN0OwogICAgIGlmICghcmVkaXJlY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBy
ZWZlcnJlclBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiByZWZlcnJl
clBvbGljeTsKICAgICBkZWNvZGVyID4+IHJlZmVycmVyUG9saWN5OwogICAgIGlmICghcmVmZXJy
ZXJQb2xpY3kpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4g
aW50ZWdyaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpbnRlZ3JpdHk7CiAgICAgZGVj
b2RlciA+PiBpbnRlZ3JpdHk7CiAgICAgaWYgKCFpbnRlZ3JpdHkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGtlZXBBbGl2ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGtlZXBBbGl2ZTsKICAgICBkZWNvZGVyID4+IGtlZXBBbGl2ZTsKICAgICBpZiAoIWtl
ZXBBbGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ5LDEzICsyNDksMTMgQEAgaW5s
aW5lIHZvaWQgRmV0Y2hPcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWlubGluZSBPcHRpb25hbDxGZXRjaE9wdGlvbnM+
IEZldGNoT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxGZXRjaE9wdGlvbnM+IEZldGNoT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKCFkZWNvZGVQZXJzaXN0ZW50
KGRlY29kZXIsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPj4gY2xpZW50SWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPj4gY2xp
ZW50SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNsaWVudElkZW50aWZpZXI7CiAgICAgaWYg
KCFjbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMTNmYTY5M2FkNGE0ZGU4OGYwYmM4YzE2
MjI3ZTliYzZiN2NhZTI1ZS4uZjI5ZjlhMDJjMWZmZDBlNzQzZGQxYWE0ZGVkYWNjNGMwNjBjMDkz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zNzUsMTIgKzM3NSwx
MiBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBV
UkwmKQogICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJh
Y2tlcj4obV9mcmFtZSk7CiB9CiAKLU9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBGcmFtZUxvYWRl
cjo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1lTG9h
ZGVyOjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnQoKS5wYWdlSUQoKTsKIH0K
IAotT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBGcmFtZUxvYWRlcjo6ZnJhbWVJRCgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRnJhbWVMb2FkZXI6OmZyYW1lSUQoKSBj
b25zdAogewogICAgIHJldHVybiBjbGllbnQoKS5mcmFtZUlEKCk7CiB9CkBAIC00MjMsNyArNDIz
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGUKICAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1
ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmli
dXRlKCksIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdl
TG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVu
dCogdHJpZ2dlcmluZ0V2ZW50LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ks
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBzeXN0
ZW1QcmV2aWV3SW5mbywgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5n
RXZlbnQsIGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJlclBvbGljeSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlv
bmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21TdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVtUHJldmll
d0luZm8sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQpCiB7CiAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29t
bW9uVk0oKTsKICAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUt
PmlzTWFpbkZyYW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlN
YWluRnJhbWU6OlVua25vd247CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0
LCBFdmUKICAgICBjaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB0cmln
Z2VyaW5nRXZlbnQsIFdURk1vdmUocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lUmVx
dWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFu
Z2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dl
cmluZ0V2ZW50LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KQogewogICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hhbmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogICAgIEFTU0VSVChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhv
ZCgpID09ICJHRVQiKTsKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dHVwRm9yUmVwbGFjZSgpCiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgT3B0aW9uYWw8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCit2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCog
ZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZh
dGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KQogewogICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZy
YW1lUmVxdWVzdDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKQEAgLTEzMTMsNyArMTMxMyw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OmlzU3RvcExvYWRpbmdBbGxvd2VkKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQgPT0gUGFnZURpc21pc3NhbFR5
cGU6Ok5vbmU7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVz
dCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5
cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3Rh
dGUsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBF
dmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkVVJMOiBm
cmFtZSBsb2FkIHN0YXJ0ZWQiKTsKICAgICBBU1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdFVCIpOwpAQCAtMjMzMCw3ICsyMzMwLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAg
IEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAK
LSAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZp
ZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0Pihz
dGQ6Om51bGxvcHQpOworICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJh
bWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDog
c3RkOjpvcHRpb25hbDxJbnRSZWN0PihzdGQ6Om51bGxvcHQpOwogICAgIG1fZnJhbWUuc2V0Vmll
dyh2aWV3KTsKIAogICAgIC8vIFVzZSB0aGUgcHJldmlvdXMgU2Nyb2xsVmlldydzIGZyYW1lIHJl
Y3QuCkBAIC0zOTg5LDcgKzM5ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGluaXRp
YWxIYXNJbnNlY3VyZUNvbnRlbnQsIE9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2Vk
TGVnYWN5VExTKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6
b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50LCBz
dGQ6Om9wdGlvbmFsPFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2VkTGVnYWN5VExTKQogewogICAg
IGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMjdkMGQ1Mzli
Y2IxMDFiMTY3ZTgzNzI5NjQzM2Q1Yjg0YzBkNDdiZS4uYTk0MmI0NWU0M2I1MGU5YjRkMjIzNzRk
NGMzODFhOTM1ZmI3NmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2Ug
aGF2ZSB0b28gbWFueS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsgLy8gQ2FsbGVkIGJ5
IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQb3N0UmVxdWVzdCBhbmQgbG9hZFVSTC4KKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVu
dCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMg
bG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBs
b2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRp
b25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2
aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKLSAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwg
RXZlbnQqID0gbnVsbHB0ciwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBz
dGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xp
Y3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1l
T3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxs
cHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxs
b3B0KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+ID0geyB9
KTsKQEAgLTIxNiw4ICsyMTYsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRnJhbWVMb2FkZXJDbGll
bnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgRnJhbWVM
b2FkZXJDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29s
KTsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFJlbG9h
ZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoRG9jdW1lbnRMb2FkZXImKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhh
c0luc2VjdXJlQ29udGVudCwgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gaW5pdGlhbFVzZWRMZWdh
Y3lUTFMpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFz
SW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50LCBzdGQ6Om9wdGlvbmFs
PFVzZWRMZWdhY3lUTFM+IGluaXRpYWxVc2VkTGVnYWN5VExTKTsKIAogICAgIHZvaWQgbG9hZFdp
dGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUsIFJlZlB0cjxG
b3JtU3RhdGU+JiYsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8gQ2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5CiAgICAgdm9pZCBsb2FkKERvY3VtZW50TG9hZGVyJik7IC8vIENhbGxzIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIKQEAgLTM4Miw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRp
b25BY3Rpb24mJiwgRnJhbWVMb2FkVHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0p
OyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVyCiAKICAgICB2b2lkIGxvYWRQb3N0UmVx
dWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9h
ZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYs
IE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgbG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4m
Jiwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0IFVSTCYgY3Vy
cmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7CiAKQEAgLTQ5MCw4ICs0OTAsOCBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29y
a2luZ0NvbnRleHQ7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4g
bV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxv
YWRQcmlvcml0eT4gbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2Fj
aGVQb2xpY3lGb3JUZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3Jp
dHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBt
X2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsg
ZmFsc2UgfTsKIAogICAgIExvYWRDb250aW51aW5nU3RhdGUgbV9jdXJyZW50TG9hZENvbnRpbnVp
bmdTdGF0ZSB7IExvYWRDb250aW51aW5nU3RhdGU6Ok5vdENvbnRpbnVpbmcgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzRlNTE1YWUzMmU2Yjk1MjY5
NjdjOTZmNzdkYjY3ZWE5MzRjMmYxMi4uMzFkMzNhMzM5ZDBmNzBjZWU1NjliZWJmZWQ1MmYzNjk0
Nzg2NWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2xpZW50IGZv
cmNlZCB0aGUgbGF5b3V0LgpAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVD
b250ZW50PiwgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Piwg
c3RkOjpvcHRpb25hbDxVc2VkTGVnYWN5VExTPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIFdpbGxDb250
aW51ZUxvYWRpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpID0gMDsKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZVdpbmRvdyhET01XaW5kb3cmKSB7IH0KIAogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
QXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3QgT3B0aW9uYWw8QXBwbGljYXRpb25N
YW5pZmVzdD4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiYpIHsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggOWJjMjUzMTRh
OTNjYTExOWQ1YWIwYWUwNmI0ZDg0OTYyYzI3NGU1My4uODQ5NzFjYjJmMzU4YWM5ZWY0MzRmMzM2
NGM0N2I0YzRlZWI3MjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBl
cy5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
UG9saWN5Q2hlY2tJZGVudGlmaWVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzID09
IG90aGVyLm1fcHJvY2VzcyAmJiBtX3BvbGljeUNoZWNrID09IG90aGVyLm1fcG9saWN5Q2hlY2s7
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UG9saWN5
Q2hlY2tJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvbGljeUNoZWNrSWRlbnRpZmllcj4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIoUHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2VzcywgdWludDY0X3QgcG9saWN5Q2hlY2spCkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UG9saWN5Q2hl
Y2tJZGVudGlmaWVyPiBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxQb2xpY3lDaGVja0lkZW50aWZpZXI+IFBvbGljeUNoZWNrSWRl
bnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm9jZXNzID0g
UHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3MpCkBA
IC0xOTMsNyArMTkzLDcgQEAgc3RydWN0IFN5c3RlbVByZXZpZXdJbmZvIHsKICAgICBib29sIGlz
UHJldmlldyB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTIw
MywxOSArMjAzLDE5IEBAIHZvaWQgU3lzdGVtUHJldmlld0luZm86OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U3lz
dGVtUHJldmlld0luZm8+IFN5c3RlbVByZXZpZXdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+IFN5c3RlbVByZXZpZXdJbmZvOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxFbGVtZW50Q29udGV4dD4g
ZWxlbWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBlbGVtZW50OwogICAg
IGRlY29kZXIgPj4gZWxlbWVudDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEludFJlY3Q+IHByZXZpZXdSZWN0OwogICAgIGRlY29kZXIgPj4gcHJldmll
d1JlY3Q7CiAgICAgaWYgKCFwcmV2aWV3UmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlzUHJldmlldzsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzUHJldmlldzsKICAgICBkZWNvZGVyID4+IGlzUHJldmlldzsKICAgICBpZiAoIWlzUHJl
dmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hUVFBIZWFkZXJGaWVsZC5jcHAKaW5kZXggYjIzMGJmZjQ4ZmI1NTRjNGQyNjYxNDdjYTJlZGU4
MWQyMmI2ZTkzNS4uYTRkMTAxYmRkMWNkYTkwZDJkYjVlNjQzMThiMjk0YTFjMWI3Y2I2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFsdWUoU3RyaW5nVmlldyB2YWx1ZSkKIAogfSAvLyBu
YW1lc3BhY2UgUkZDNzIzMAogCi1PcHRpb25hbDxIVFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJG
aWVsZDo6Y3JlYXRlKFN0cmluZyYmIHVucGFyc2VkTmFtZSwgU3RyaW5nJiYgdW5wYXJzZWRWYWx1
ZSkKK3N0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmNyZWF0
ZShTdHJpbmcmJiB1bnBhcnNlZE5hbWUsIFN0cmluZyYmIHVucGFyc2VkVmFsdWUpCiB7CiAgICAg
U3RyaW5nVmlldyBzdHJpcHBlZE5hbWUgPSBTdHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2Up
OwogICAgIFN0cmluZ1ZpZXcgc3RyaXBwZWRWYWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1
ZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1do
aXRlc3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJG
aWVsZC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oCmluZGV4IDBm
NzYwZmJjOGMxOGFkYjQxN2FjODNkMGU5OTMwMGZiMGQ4YTU2NzguLmM1ZmJjMWI0MzY3MzVhODAx
MDZmMDY4YWQ0MGMxMDYyMzI3ZTA3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IVFRQSGVhZGVyRmllbGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRl
ckZpZWxkLmgKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEhUVFBIZWFkZXJGaWVsZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9w
dGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gY3JlYXRlKFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHZh
bHVlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyRmllbGQ+IGNyZWF0ZShT
dHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB2YWx1ZSk7CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxIVFRQSGVhZGVyRmllbGQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SFRUUEhlYWRlckZpZWxk
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEhUVFBIZWFkZXJGaWVsZChTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiB2YWx1ZSkKQEAgLTU2LDE0ICs1NiwxNCBAQCB2b2lkIEhUVFBI
ZWFkZXJGaWVsZDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxIVFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVs
ZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJGaWVs
ZD4gSFRUUEhlYWRlckZpZWxkOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IG5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAg
ZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHZhbHVlOwogICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNw
cAppbmRleCA0OGRmZWFjZDk1YWQwOGRmNTgwOGEwMzkwNDZlMTg2YmY0MzllNDI4Li5mMTNmYjcz
MGUzZjlmODgzYjI0ZmZlM2U0Y2I0YmNiNjk4YjZlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0hlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtIZWFkZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBib29sIGlzRXh0ZW5zaW9uUGFy
YW1ldGVyKExpbmtIZWFkZXI6OkxpbmtQYXJhbWV0ZXJOYW1lIG5hbWUpCiAvLyA8Y2F0LmpwZz47
IHJlbD1wcmVsb2FkCiAvLyAgICAgICAgICBeICAgICAgICAgICAgXgogLy8gICAgICAgICAgcG9z
aXRpb24gICAgIGVuZAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFN0cmluZz4gZmluZFVSTEJvdW5kYXJpZXMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmaW5kVVJMQm91bmRhcmllcyhTdHJpbmdQYXJzaW5n
QnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VP
clRhYj4oYnVmZmVyKTsKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZlciwgJzwnKSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCBzdGF0aWMgTGlua0hlYWRlcjo6TGlua1BhcmFtZXRlck5hbWUgcGFyYW10
ZXJOYW1lRnJvbVN0cmluZyhTdHJpbmdWaWV3IG5hbWUpCiAvLyA8Y2F0LmpwZz47IHJlbD1wcmVs
b2FkCiAvLyAgICAgICAgICAgICAgICBeICAgICAgXgogLy8gICAgICAgICAgICBwb3NpdGlvbiAg
ZW5kCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlu
a0hlYWRlcjo6TGlua1BhcmFtZXRlck5hbWU+IHBhcnNlUGFyYW1ldGVyTmFtZShTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVy
TmFtZT4gcGFyc2VQYXJhbWV0ZXJOYW1lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlcikKIHsKICAgICBhdXRvIG5hbWVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwog
ICAgIHNraXBXaGlsZTxpc1ZhbGlkUGFyYW1ldGVyTmFtZUNoYXI+KGJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggY2M4OGFlODE4NzgyOWY3MDFhNmNkNjE2MTc5
NjhiYzgyYjNhNDRmMy4uZmRkYjA3YmVlNWYwMzYyMzk4ZThlYzE0MWI2Yjk2ZjliNzM0NWJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZv
aWQgTGlua0xvYWRlcjo6bG9hZExpbmtzRnJvbUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlclZh
bHVlLCBjb25zdCBVUkwmIGJhc2VVCiAgICAgfQogfQogCi1PcHRpb25hbDxDYWNoZWRSZXNvdXJj
ZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgYXMsIERvY3VtZW50JiBkb2N1bWVudCkKK3N0ZDo6b3B0aW9uYWw8Q2FjaGVkUmVzb3Vy
Y2U6OlR5cGU+IExpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBT
dHJpbmcmIGFzLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGFzLCAiZmV0Y2giKSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291
cmNlOjpUeXBlOjpSYXdSZXNvdXJjZTsKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIExpbmtMb2Fk
ZXI6OnByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiBwYXJhbXMsIERv
Y3VtZW50JiBkbwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZG9jdW1lbnQuc2V0dGlu
Z3MoKS5saW5rUHJlZmV0Y2hFbmFibGVkKCkpOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFBy
aW9yaXR5PiBwcmlvcml0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5
PiBwcmlvcml0eTsKICAgICBDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlID0gQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OkxpbmtQcmVmZXRjaDsKIAogICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggNGVkYjQyODBjZjVlYjIzMjNiMWI0
MjFlYjA5Y2M5YmEwNzVjZmQ3ZC4uYjVmMDc2NDNiM2JmYjVmOWI2MmJkYTBlY2E2YmI2ZjUwOTU3
ZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVyKCk7CiAKICAgICB2b2lkIGxvYWRMaW5rKGNv
bnN0IExpbmtMb2FkUGFyYW1ldGVycyYsIERvY3VtZW50Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PENhY2hlZFJlc291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNv
dXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYsIERv
Y3VtZW50Jik7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhQXR0cmlidXRlQ2hlY2sgeyBNZWRpYUF0
dHJpYnV0ZUVtcHR5LCBNZWRpYUF0dHJpYnV0ZU5vdEVtcHR5LCBTa2lwTWVkaWFBdHRyaWJ1dGVD
aGVjayB9OwogICAgIHN0YXRpYyB2b2lkIGxvYWRMaW5rc0Zyb21IZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXJWYWx1ZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBEb2N1bWVudCYsIE1lZGlhQXR0cmli
dXRlQ2hlY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVu
dENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwCmluZGV4IDUxNjk2NzFmNTk3ZDQzZjZlNDY1MmFkM2IzMDRkNTkyNjk0M2I5MWMuLjIxOTBk
OTdiOGQ4YTFkZGUyMWIzN2FiMjg0MjExYWJiNTE1Yzk0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYgZnJh
bWUsIFNlY3VyaXR5T3JpZ2luJgogICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRD
aGVja2VyOjpjaGVja0Zvck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2hlY2tGb3JNaXhlZENvbnRlbnRJbkZyYW1lVHJlZShjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKaW5kZXgg
MTYwOWUwZjhmNDdhMTc2NWFlNjk1YWNhN2U3ZmUyMzRmNWM2Y2YyNi4uZWU1ZGVlOWRiZGRlNzlm
NzZlYTA0YWJhNmQ4NGM0MmYwOWY0NmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01peGVkQ29udGVudENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoRnJhbWUmLCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0
IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIGNoZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYs
IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNNaXhlZENv
bnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBjaGVja0Zvck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiwgY29u
c3QgVVJMJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjaGVja0Zvck1peGVk
Q29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW1lJiwgY29uc3QgVVJMJik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKaW5kZXggYTZiZjZhZmU1YjVhNzU3Y2E2ODViZWQzZTU2ZWVjM2I5MDk4NjAyZC4uZmRm
OTQxOTFkYTRkNTk1OGJmZTkyMDU0MjIzMDFjOTU2NjhiY2VlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtODQsMTQgKzg0LDE0IEBAIHN0YXRpYyBi
b29sIHNob3VsZFRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwu
cHJvdG9jb2xJc0RhdGEoKSB8fCAodXJsLnByb3RvY29sSXNCbG9iKCkgJiYgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TmF2
aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZvckZp
cnN0RXZlbnRXaXRoS2V5U3RhdGUoRXZlbnQqIGV2ZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGE+IGtleVN0YXRlRGF0YUZv
ckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChVSUV2ZW50
V2l0aEtleVN0YXRlKiB1aUV2ZW50ID0gZmluZEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSkKICAg
ICAgICAgcmV0dXJuIE5hdmlnYXRpb25BY3Rpb246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsg
KnVpRXZlbnQgfTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+IG1vdXNlRXZlbnREYXRhRm9yRmly
c3RNb3VzZUV2ZW50KEV2ZW50KiBldmVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
b25BY3Rpb246Ok1vdXNlRXZlbnREYXRhPiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVu
dChFdmVudCogZXZlbnQpCiB7CiAgICAgZm9yIChFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+
dW5kZXJseWluZ0V2ZW50KCkpIHsKICAgICAgICAgaWYgKGUtPmlzTW91c2VFdmVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggZGMyMDAxOTAwZjU1ZDYy
ODk4Yzg3NDkzNWQ1ZGE3ZmQ4MjlmNTQwOS4uMGM1M2M4YjdkZjJhNGQzYmIyZmNiMjIyZTMyZmMz
YzUzZWY5NzA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25B
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X29yaWdpbjsKICAgICAgICAgR2xvYmFsRnJhbWVJZGVudGlmaWVyIG1fZ2xvYmFsRnJhbWVJZGVu
dGlmaWVyOwogICAgIH07Ci0gICAgY29uc3QgT3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVzdGVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFJlcXVlc3Rlcj4mIHJlcXVlc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyOyB9CiAK
ICAgICBzdHJ1Y3QgVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEgewogICAgICAgICBVSUV2ZW50V2l0
aEtleVN0YXRlRGF0YShjb25zdCBVSUV2ZW50V2l0aEtleVN0YXRlJik7CkBAIC05Niw4ICs5Niw4
IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlOwog
ICAgICAgICBib29sIGJ1dHRvbkRvd247CiAgICAgfTsKLSAgICBjb25zdCBPcHRpb25hbDxVSUV2
ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPE1vdXNlRXZlbnREYXRh
PiYgbW91c2VFdmVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX21vdXNlRXZlbnREYXRhOyB9Cisg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0YXRl
RXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQorICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW91c2VFdmVudERhdGE7IH0KIAogICAgIE5hdmlnYXRpb25BY3Rpb24gY29w
eVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpIGNvbnN0OwogCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRPcGVuZWRCeURPTVdpdGhPcGVuZXIoKSB7IG1fb3BlbmVkQnlET01XaXRoT3BlbmVyID0gdHJ1
ZTsgfQogCiAgICAgdm9pZCBzZXRUYXJnZXRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0mKTsK
LSAgICBjb25zdCBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYgdGFyZ2V0QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllcj4mIHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3RhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7IH0KIAogICAgIHZvaWQg
c2V0U291cmNlQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgY29uc3QgT3B0aW9u
YWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4mIHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiBz
b3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOyB9CiAKICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KICAgICB2b2lkIHNldExvY2tIaXN0
b3J5KExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5KSB7IG1fbG9ja0hpc3RvcnkgPSBsb2NrSGlzdG9y
eTsgfQpAQCAtMTM3LDI5ICsxMzcsMjkgQEAgcHVibGljOgogICAgIExvY2tCYWNrRm9yd2FyZExp
c3QgbG9ja0JhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJk
TGlzdDsgfQogICAgIHZvaWQgc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChMb2NrQmFja0ZvcndhcmRM
aXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpIHsgbV9sb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0Jh
Y2tGb3J3YXJkTGlzdDsgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ7IH07CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IHByaXZhdGVDbGlja01lYXN1cmVtZW50
OyB9OwogCiBwcml2YXRlOgogICAgIC8vIERvIG5vdCBhZGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRv
IHRoZSBvcmlnaW5hdGluZyBkb2N1bWVudCBvciBhIHN1Ym9iamVjdCB0aGF0IGhvbGRzIHRoZQog
ICAgIC8vIG9yaWdpbmF0aW5nIGRvY3VtZW50LiBTZWUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3Mg
Zm9yIG1vcmUgZGV0YWlscy4KLSAgICBPcHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiBtX3JlcXVlc3RlcjsKICAgICBSZXNvdXJjZVJl
cXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7CiAgICAgTmF2aWdhdGlvblR5cGUgbV90eXBlOwogICAg
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OwogICAgIEluaXRpYXRlZEJ5TWFpbkZyYW1lIG1faW5pdGlhdGVkQnlNYWluRnJhbWU7Ci0g
ICAgT3B0aW9uYWw8VUlFdmVudFdpdGhLZXlTdGF0ZURhdGE+IG1fa2V5U3RhdGVFdmVudERhdGE7
Ci0gICAgT3B0aW9uYWw8TW91c2VFdmVudERhdGE+IG1fbW91c2VFdmVudERhdGE7CisgICAgc3Rk
OjpvcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsK
KyAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlRXZlbnREYXRhPiBtX21vdXNlRXZlbnREYXRhOwogICAg
IFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVy
ZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCkgfTsKICAgICBBdG9tU3RyaW5nIG1fZG93
bmxvYWRBdHRyaWJ1dGU7CiAgICAgYm9vbCBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsK
ICAgICBib29sIG1faGFzT3BlbmVkRnJhbWVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3BlbmVk
QnlET01XaXRoT3BlbmVyIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyPiBtX3RhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7Ci0gICAgT3B0aW9u
YWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gbV90
YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcj4gbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwog
ICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3RvcnkgeyBMb2NrSGlzdG9yeTo6Tm8gfTsKICAgICBM
b2NrQmFja0ZvcndhcmRMaXN0IG1fbG9ja0JhY2tGb3J3YXJkTGlzdCB7IExvY2tCYWNrRm9yd2Fy
ZExpc3Q6Ok5vIH07Ci0gICAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmgKaW5kZXggODVjZmRkNjQ5ZmQyMTk5OTIxYTNmZTExMTFmZGRkMzY4ZTJlZmU0Yy4uNmUw
NjI2NGUzMTQ3YjY4MzE3ZjgyMTYzYmY2NjJmZDAwZTExMTU2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTE4MywxOSArMTgzLDE5
IEBAIHB1YmxpYzoKICAgICAgICAgV2FzU2VudCB3YXNTZW50ID0gV2FzU2VudDo6Tm87CiAKICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXR0cmli
dXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4g
ZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uU2Vjb25k
c1VudGlsU2VuZERhdGEgewotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBzb3VyY2VTZWNvbmRz
OwotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBkZXN0aW5hdGlvblNlY29uZHM7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc291cmNlU2Vjb25kczsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBkZXN0aW5hdGlvblNlY29uZHM7CiAKICAgICAgICAgYm9vbCBoYXNWYWxp
ZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
c291cmNlU2Vjb25kcyAmJiBkZXN0aW5hdGlvblNlY29uZHM7CiAgICAgICAgIH0KIAotICAgICAg
ICBPcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRzVW50aWxTZW5kKCkKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRzVW50aWxTZW5kKCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzICYmICFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxMywxNCArMjEzLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgICAg
IHN0YXRpYyBPcHRpb25hbDxBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRz
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBzb3Vy
Y2VTZWNvbmRzOwogICAgICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VTZWNvbmRzOwogICAgICAg
ICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5h
dGlvblNlY29uZHM7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4+IGRlc3RpbmF0aW9uU2Vjb25kczsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZGVzdGlu
YXRpb25TZWNvbmRzOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblNlY29uZHMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMCwxMCArMjMwLDEwIEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgewot
ICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOwotICAg
ICAgICBPcHRpb25hbDxXYWxsVGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgp
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmICFk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgOiBk
ZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlv
bmFsPFdhbGxUaW1lPiBsYXRlc3RUaW1lVG9TZW5kKCkKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gbGF0ZXN0VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
c291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjU1LDcgKzI1NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
PyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgOiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZDsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPEF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmIGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQgPCAqZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCkBAIC0y
ODAsMTQgKzI4MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8QXR0cmlidXRpb25UaW1lVG9T
ZW5kRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGE+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IHNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxXYWxsVGltZT4+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAg
IGRlY29kZXIgPj4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgaWYgKCFz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxXYWxsVGltZT4+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAg
ICAgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAg
ICAgIGlmICghZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMyMSw3ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgQXR0
cmlidXRpb25UaW1lVG9TZW5kRGF0YSB0aW1lc1RvU2VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXNUb1NlbmQ7IH07CiAgICAgdm9pZCBzZXRUaW1lc1RvU2VuZChBdHRyaWJ1dGlvblRpbWVUb1Nl
bmREYXRhIGRhdGEpIHsgbV90aW1lc1RvU2VuZCA9IGRhdGE7IH0KICAgICBjb25zdCBTb3VyY2VJ
RCYgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEOyB9Ci0gICAgT3B0aW9uYWw8
QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpIHsgcmV0dXJu
IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRp
b25UcmlnZ2VyRGF0YT4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpIHsgcmV0dXJuIG1fYXR0cmli
dXRpb25UcmlnZ2VyRGF0YTsgfQogICAgIHZvaWQgc2V0QXR0cmlidXRpb24oQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpIHsgbV9hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiBzb3VyY2VEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRGVzY3Jp
cHRpb247IH0KQEAgLTMzOSwxMSArMzM5LDExIEBAIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJh
bFNvdXJjZU5vbmNlJiYpOwotICAgIE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBlcGhl
bWVyYWxTb3VyY2VOb25jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXBoZW1lcmFsU291cmNlTm9uY2U7
IH07CisgICAgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gZXBoZW1lcmFsU291
cmNlTm9uY2UoKSBjb25zdCB7IHJldHVybiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOyB9OwogICAg
IHZvaWQgY2xlYXJFcGhlbWVyYWxTb3VyY2VOb25jZSgpIHsgbV9lcGhlbWVyYWxTb3VyY2VOb25j
ZS5yZXNldCgpOyB9OwogCiAgICAgc3RydWN0IFNvdXJjZVNlY3JldFRva2VuIHsKQEAgLTM2MCwx
MSArMzYwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTb3VyY2VVbmxpbmth
YmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fc291cmNlVW5saW5rYWJsZVRv
a2VuLnZhbHVlQmFzZTY0VVJMID0gdmFsdWU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxTb3VyY2VT
ZWNyZXRUb2tlbj4mIHNvdXJjZVVubGlua2FibGVUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlU2VjcmV0VG9rZW47IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVNlY3JldFRv
a2VuPiYgc291cmNlVW5saW5rYWJsZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZWNy
ZXRUb2tlbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U291cmNlU2VjcmV0VG9rZW4o
U291cmNlU2VjcmV0VG9rZW4mJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0OwpAQCAtMzc2LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fcHVyY2hhc2VyOwogICAgIFdhbGxUaW1lIG1fdGltZU9mQWRDbGljazsKIAotICAgIE9wdGlv
bmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IG1fYXR0cmlidXRpb25Ucmln
Z2VyRGF0YTsKICAgICBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIG1fdGltZXNUb1NlbmQ7CiAK
ICAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJsZVRva2VuIHsKQEAgLTM4OCw5ICszODgsOSBAQCBw
cml2YXRlOgogICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CiAgICAgfTsKIAotICAgIE9w
dGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOworICAg
IHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9u
Y2U7CiAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOwot
ICAgIE9wdGlvbmFsPFNvdXJjZVNlY3JldFRva2VuPiBtX3NvdXJjZVNlY3JldFRva2VuOworICAg
IHN0ZDo6b3B0aW9uYWw8U291cmNlU2VjcmV0VG9rZW4+IG1fc291cmNlU2VjcmV0VG9rZW47CiB9
OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDA4LDQ5ICs0MDgsNDkgQEAgdm9pZCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBzb3VyY2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzb3VyY2VJRDsKICAgICBk
ZWNvZGVyID4+IHNvdXJjZUlEOwogICAgIGlmICghc291cmNlSUQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHNvdXJj
ZVJlZ2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+
IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFi
bGVEb21haW47CiAgICAgaWYgKCFzb3VyY2VSZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4g
ZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBkZXN0aW5hdGlvblJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4g
ZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0
cmFibGVEb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNjcmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc291cmNlRGVzY3JpcHRpb247CiAgICAgZGVjb2RlciA+PiBzb3VyY2VEZXNjcmlwdGlvbjsK
ICAgICBpZiAoIXNvdXJjZURlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcHVyY2hhc2VyOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAgICAgZGVjb2RlciA+PiBwdXJjaGFzZXI7CiAgICAgaWYg
KCFwdXJjaGFzZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8V2FsbFRpbWU+IHRpbWVPZkFkQ2xpY2s7CisgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gdGltZU9mQWRDbGljazsKICAgICBkZWNvZGVyID4+IHRpbWVPZkFkQ2xpY2s7CiAgICAgaWYg
KCF0aW1lT2ZBZENsaWNrKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8T3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+PiBlcGhlbWVyYWxTb3VyY2VOb25j
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+
PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKICAgICBkZWNvZGVyID4+IGVwaGVtZXJhbFNvdXJjZU5v
bmNlOwogICAgIGlmICghZXBoZW1lcmFsU291cmNlTm9uY2UpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
Pj4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9u
YWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAg
ZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRp
b25hbDxBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhPiB0aW1lc1RvU2VuZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGE+IHRpbWVzVG9TZW5kOwogICAgIGRlY29k
ZXIgPj4gdGltZXNUb1NlbmQ7CiAgICAgaWYgKCF0aW1lc1RvU2VuZCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTQ3Nyw5ICs0NzcsOSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsU291cmNlTm9uY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U+IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBub25jZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gbm9uY2U7CiAgICAgZGVjb2RlciA+PiBub25jZTsKICAgICBpZiAoIW5vbmNl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDk0LDE5ICs0OTQsMTkgQEAgdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25U
cmlnZ2VyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWlu
dDMyX3Q+IGRhdGE7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZGF0YTsKICAgICBkZWNv
ZGVyID4+IGRhdGE7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAotICAgIE9wdGlvbmFsPFByaW9yaXR5VmFsdWU+IHByaW9yaXR5OworICAgIHN0ZDo6
b3B0aW9uYWw8UHJpb3JpdHlWYWx1ZT4gcHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0
eTsKICAgICBpZiAoIXByaW9yaXR5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPFdhc1NlbnQ+IHdhc1NlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXYXNT
ZW50PiB3YXNTZW50OwogICAgIGRlY29kZXIgPj4gd2FzU2VudDsKICAgICBpZiAoIXdhc1NlbnQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGQ4N2JkNDYxOGYw
NWIzNTY4Y2RjZjU3YTNlMzU0NTBkZDNhNTcwYTIuLjBiODNiYjFiNzY1MTNiZWE3MzA3YTMwN2Y3
NWM5NmI3Mjc1NjVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtPiBwYXJzZUhhc2hB
bGdvcml0aG1BZHZhbmNpbmdQb3NpdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobT4gcGFyc2VI
YXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9zaXRpb24oU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHdvdWxkIGJlIG11Y2ggY2xl
YW5lciB3aXRoIGEgbG9va3VwIHRhYmxlIG9mIHBhaXJzIG9mIGxhYmVsIC8gYWxnb3JpdGhtIGVu
dW0gdmFsdWVzLCBidXQgSSBjYW4ndAogICAgIC8vIGZpZ3VyZSBvdXQgaG93IHRvIGtlZXAgdGhl
IGxhYmVscyBjb21waWxldGltZSBzdHJpbmdzIGZvciBza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlD
YXNlLgpAQCAtNDksNyArNDksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbAogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdEltcGwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVy
KQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBs
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAo
YnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04MCwxNyAr
ODAsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFs
PFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1PcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBw
YXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1Bh
cnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8TENoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dEltcGwoYnVmZmVyKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5j
b2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5j
b2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xMTMsMTcgKzExMywxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZwogICAgIHJldHVybiBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHsgKmFs
Z29yaXRobSwgU3RyaW5nKGJlZ2luSGFzaFZhbHVlLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2lu
SGFzaFZhbHVlKSB9OwogfQogCi1PcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8VUNoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2VFbmNvZGVkQ3J5cHRv
Z3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVyKTsKIH0KIAotT3B0aW9uYWw8RW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJp
bmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBhcnNl
RW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBlbmNv
ZGVkRGlnZXN0KQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRl
Y29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgZW5jb2RlZERpZ2VzdCkKIHsKICAgICBpZiAoYXV0byBk
aWdlc3QgPSBiYXNlNjREZWNvZGUoZW5jb2RlZERpZ2VzdC5kaWdlc3QsIEJhc2U2NERlY29kZU9w
dGlvbnM6OlZhbGlkYXRlUGFkZGluZykpCiAgICAgICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QgeyBlbmNvZGVkRGlnZXN0LmFsZ29yaXRobSwgV1RGTW92ZSgqZGlnZXN0KSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5oCmluZGV4IGExNzY4Y2U3NjI2YTRhNGFlZTZjZTA0MjEwNzc0OGQwODY4NWZjNGYuLmZj
YzBiMDQ0YWFhMjRlNWVhN2ExMWNlYWMxZmY3ZWJhNTM0OTAwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTY2LDEz
ICs2NiwxMyBAQCBzdHJ1Y3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAg
ICAgU3RyaW5nIGRpZ2VzdDsKIH07CiAKLU9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+
Jik7Ci1PcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOworc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJp
bmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVy
PExDaGFyPiYpOwogCi1PcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNo
YXI+Jik7Ci1PcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJz
ZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7
CitzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNl
RW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsK
K3N0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VF
bmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwog
Ci1PcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdCYpOworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRl
Y29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qg
Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAppbmRleCBlNDg1MmYyOTNhMGZmNTlk
OTE3NDUxZWRkNTBiZmJlYjA0MTIyMjlhLi41NGI4MWJmYmVkYjVkOTc5NjYyOTZkZjhiOTVjZGQ1
OWI0MDc3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBl
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotT3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5
cGUoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBl
Pj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdWaWV3IG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
ImRvY3VtZW50IikKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9OwpA
QCAtMTE2LDcgKzExNiw3IEBAIE9wdGlvbmFsPE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFk
UmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcgbmFtZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1PcHRpb25hbDxPcHRpb25TZXQ8TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmll
dyBuYW1lKQorc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUo
U3RyaW5nVmlldyBuYW1lKQogewogICAgIGlmIChuYW1lID09ICJmaXJzdC1wYXJ0eSIpCiAgICAg
ICAgIHJldHVybiB7IExvYWRUeXBlOjpGaXJzdFBhcnR5IH07CkBAIC0xMjUsNyArMTI1LDcgQEAg
T3B0aW9uYWw8T3B0aW9uU2V0PExvYWRUeXBlPj4gcmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxPcHRpb25TZXQ8TG9h
ZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQorc3RkOjpvcHRpb25h
bDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1l
KQogewogICAgIGlmIChuYW1lID09ICJ0b3AtZnJhbWUiKQogICAgICAgICByZXR1cm4geyBMb2Fk
Q29udGV4dDo6VG9wRnJhbWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5m
by5oCmluZGV4IGQ0NWI1Nzc5ODhmM2M0MGNmOTViZTliNmNiMGRmZmM5OTU3NDExNmMuLmUwOGVi
ODJkMDUwZDdlN2U3YjZlOTAyNWYwZTRkZWUzZWU3Y2ZmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uaApAQCAtNzksOSArNzksOSBAQCBjb25zdCB1aW50NjRfdCBB
Y3Rpb25GbGFnTWFzayA9IDB4MDAwMEZGRkYwMDAwMDAwMDsKIGNvbnN0IHVpbnQ2NF90IElmQ29u
ZGl0aW9uRmxhZyA9IDB4MDAwMTAwMDAwMDAwMDAwMDsKIAogT3B0aW9uU2V0PFJlc291cmNlVHlw
ZT4gdG9SZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdEJh
c2U6OlJlcXVlc3Rlcik7Ci1PcHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJl
c291cmNlVHlwZShTdHJpbmdWaWV3KTsKLU9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+IHJl
YWRMb2FkVHlwZShTdHJpbmdWaWV3KTsKLU9wdGlvbmFsPE9wdGlvblNldDxMb2FkQ29udGV4dD4+
IHJlYWRMb2FkQ29udGV4dChTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJl
c291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFs
PE9wdGlvblNldDxMb2FkVHlwZT4+IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0
aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0Pj4gcmVhZExvYWRDb250ZXh0KFN0cmluZ1ZpZXcp
OwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyB7CiAgICAgVVJMIHJlc291cmNlVVJMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCAzNjlkYzM1
MmEwZmY1N2E4ZWVjN2JkODA3MjM1MDNlMzFiNWIwNTM0Li41MzkwMDFjODkwMjY0Y2RkYmZhZjZh
MDg2ZDJlY2Q1NjhjODEzM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
RnJhbWUmIG1fZnJhbWU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gbV9pbml0aWFsUmVx
dWVzdElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBsb25nPiBtX2luaXRp
YWxSZXF1ZXN0SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCmluZGV4IDYyOTVh
ZWE1ZTMwYzk5MjZkNmRkZWM5OTI2MDE0ZTZkNzRhOTBjOTIuLjRkMGM2OTBiMjc2MmFhOTBlNzFl
YTM4N2YzYTNkODBmNjQxMzhiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUludGVncml0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlSW50ZWdyaXR5LmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgYm9vbCBpc1ZDSEFS
KENoYXJhY3RlclR5cGUgYykKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdHJ1
Y3QgSW50ZWdyaXR5TWV0YWRhdGFQYXJzZXIgewogcHVibGljOgotICAgIEludGVncml0eU1ldGFk
YXRhUGFyc2VyKE9wdGlvbmFsPFZlY3RvcjxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Pj4mIGRpZ2VzdHMpCisgICAgSW50ZWdyaXR5TWV0YWRhdGFQYXJzZXIoc3RkOjpvcHRpb25h
bDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+JiBkaWdlc3RzKQog
ICAgICAgICA6IG1fZGlnZXN0cyhkaWdlc3RzKQogICAgIHsKICAgICB9CkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEVuY29k
ZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiYgbV9kaWdlc3RzOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiYgbV9kaWdl
c3RzOwogfTsKIAogfQpAQCAtOTYsMTIgKzk2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGxp
dE9uU3BhY2VzKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyLCBGdW5j
CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+PiBwYXJzZUludGVncml0eU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgaW50
ZWdyaXR5TWV0YWRhdGEpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHBhcnNlSW50ZWdyaXR5TWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkKIHsKICAgICBpZiAoaW50ZWdyaXR5TWV0YWRhdGEuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVj
dG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiByZXN1bHQ7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHJl
c3VsdDsKICAgICAKICAgICByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoaW50ZWdyaXR5TWV0YWRh
dGEsIFsmcmVzdWx0XSAoYXV0byBidWZmZXIpIHsKICAgICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlw
ZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNoYXJhY3RlclR5cGU7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgc3RhdGljIGJvb2wgaXNSZXNwb25zZUVsaWdpYmxlKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICByZXR1cm4gcmVzb3VyY2UuaXNDT1JTU2FtZU9yaWdpbigpOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtPiBwcmlvcml0aXplZEhhc2hGdW5jdGlvbihFbmNvZGVkUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYSwgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtIGIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0+IHByaW9yaXRpemVkSGFzaEZ1bmN0aW9uKEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhLCBFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYikKIHsKICAgICBpZiAoYSA9PSBi
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjA1ZTVjNjg1MGI4Yjg1Mjk0ZjRmOTNlNGQxYjVh
MTRlYTMxZWJjNS4uNDg1MTMzZDg3YWMzNjhiNTBhYWY5ZTIzZDMwM2JhNGQzM2FhZWRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NDMsNyAr
NzQzLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICAgICAgLy8gY29tcGxldGUgbG9h
ZCBtZXRyaWNzIGluIGRpZEZpbmlzaExvYWQuIEluIHRob3NlIGNhc2VzLCBmYWxsIGJhY2sgdG8g
dGhlIHBvc3NpYmlsaXR5CiAgICAgICAgIC8vIHRoYXQgdGhleSBwb3B1bGF0ZWQgcGFydGlhbCBs
b2FkIHRpbWluZyBpbmZvcm1hdGlvbiBvbiB0aGUgUmVzb3VyY2VSZXNwb25zZS4KICAgICAgICAg
Y29uc3QgYXV0byogdGltaW5nID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7Ci0gICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0
cmljcz4gZW1wdHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBl
bXB0eTsKICAgICAgICAgaWYgKCF0aW1pbmcpIHsKICAgICAgICAgICAgIGVtcHR5LmVtcGxhY2Uo
KTsKICAgICAgICAgICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAxMWY1YjFhMjIwYzUxYTg5NTM5N2UyYjEx
MzhiZGU2NDc5Mzg2MjM3Li5lZDU5MTkyMTljYmJmMzM0Mzk3NjY0ZDUxMmE5ZjdkNmM5N2VjYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtMTI5LDcg
KzEyOSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJj
ZTsKICAgICBTdWJyZXNvdXJjZUxvYWRlclN0YXRlIG1fc3RhdGU7Ci0gICAgT3B0aW9uYWw8UmVx
dWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOwogICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiBtX3BvbGljeUZvclJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdW5zaWduZWQgbV9y
ZWRpcmVjdENvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRl
eCA3MGQxNTE3YmJiZjI4ZmNiZjVmZmRhZjkwNjdhYmFhZTdjOTE4NjFkLi5jOGE5YmJkZTNlMzdk
YTA1NzdlOTA0MWUxOTk2M2U0NGYxYTI1MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFy
c2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgY2FjaGVNb2RlSWRlbnRpZgogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBl
IGZhbGxiYWNrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdB
JywgJ0MnLCAnSycgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBj
b25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBuZXR3b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAn
RScsICdUJywgJ1cnLCAnTycsICdSJywgJ0snIH07CiAKLU9wdGlvbmFsPEFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBh
cnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBl
W10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNw
YWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1h
bmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CkBAIC04MCw3ICs4MCw3IEBA
IE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pCiAKICAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUo
Y2FjaGVNYW5pZmVzdE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxl
bmd0aCk7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3Ry
aW5nLCBbJl0oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dD4geworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcobWFuaWZlc3RTdHJpbmcs
IFsmXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3Q+IHsKICAgICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1
ZmZlcik6OkNoYXJhY3RlclR5cGU7CiAgICAgCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdCBtYW5pZmVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaAppbmRleCBlMGNmOTJk
NzBmYmI4MzViYzU0NGNhYWU5OWRjZjkwNWYzYTM3ZTM1Li4wYmY5ZjlmMTZhNWFmNjlmY2FmYTAx
NjlkOWU2NjQ0MWIxZjlmODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCkBAIC00
MSw2ICs0MSw2IEBAIHN0cnVjdCBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgewogICAgIGJvb2wg
YWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgeyBmYWxzZSB9OyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBO
RVRXT1JLIHNlY3Rpb24uCiB9OwogCi1PcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNWU2ODExZTFiYWEzNzU1
MDRjYThjZTcyM2RkNWNlOTI3MGE2MWUxMC4uMWFjNGIxZmI4YzQ0MjAzMGZlZDllMGY5NTFkOTQz
YTBlZWVhZWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVj
dG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxW
ZWN0b3I8VVJMPj4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcygpCitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxVUkw+PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RV
UkxzKCkKIHsKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFu
c2FjdGlvbkNvdW50ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNmJhMGE5OTdiZWIyYTdiNDM1
M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNi4uMTdiOGYwN2ExZDNjNzljMTI3N2U1Y2EwODEyODRiOWEz
ODIxNTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdl
SUQpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFVSTD4+IG1hbmlmZXN0VVJMcygp
OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVSTD4+IG1hbmlmZXN0VVJMcygpOwogICAgIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1h
bmlmZXN0VVJMKSBjb25zdDsKICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5n
JiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAppbmRleCAyYjY1YWMwZjM2MzI1OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5Li5m
Yjg3NjJhNTllN2UzYzk3NGQ2ZGRhZTg1ZjI3YzE0NjJhZjUzZjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwCkBAIC01OSw3ICs1OSw3IEBAIFN0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpl
bmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7
CiB9CiAKLU9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OnByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVu
dFVSTCwgRG9jdW1lbnQqIGRvY3VtZW50KQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAg
ICBpZiAoIW1fdGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5o
CmluZGV4IDhmYTg2Y2FjOGJjNWNkZDI2MWE3OTMzNzc3N2U2ZThhZTZlZGVmYzAuLmFkMzYxMDQz
OGUzYTRjMGRlOTM1YzRmYWM0NzVhMzFiMjZlM2RiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0IGZpbmFsIDogcHVibGlj
IENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKICAgICBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENv
b2tpZUphciopOwogCi0gICAgT3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHBy
b2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9j
dW1lbnQqID0gbnVsbHB0cik7CisgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25N
YW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBSZWY8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwot
ICAgIE9wdGlvbmFsPFN0cmluZz4gbV90ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBt
X3RleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA3OGQ4NGJmYWJjZGVl
NjJiMWU2ZmZiZTdhN2NiZjMyMzE4NTQzMzkyLi5kN2JkMzI4NzVkNTJkNmQzOTFjM2FlMGZhMWFi
YzU5MmJhZGRmODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNh
Y2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlw
ZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAK
LU9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAg
ICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNmE2
YzQ3YjU3MDM1OWQ0NDM1YjhmNzMyOWIwYTZlZTA3YTljNmIxZi4uYzk2ZWI3YWEyNDgyYjM5ZWE2
OTUwNTFiYWUwNWVjMDE4NDgxYWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
YWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBPcHRpb25hbDxTaGFyZWRCdWZm
ZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVm
ZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAg
ICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC05NCw3ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07Ci0gICAgT3B0aW9uYWw8RGVsYXll
ZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CisgICAgc3RkOjpvcHRpb25h
bDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCmluZGV4IDJkYTk3ZjE0Mjk1NDFmM2I1NjkwMWY3OGZjOGQ3YjgxNDEz
YmI3YzcuLmE3Y2UwMGQxYWZmYjBkNmFhZThlN2ZhYWE1NzQ5YzA3NWY1YzI1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtODc5LDcg
Kzg3OSw3IEBAIHVuc2lnbmVkIENhY2hlZFJlc291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdAog
ICAgIHJldHVybiBzaXplb2YoQ2FjaGVkUmVzb3VyY2UpICsgbV9yZXNwb25zZS5tZW1vcnlVc2Fn
ZSgpICsga0F2ZXJhZ2VDbGllbnRzSGFzaE1hcFNpemUgKyBtX3Jlc291cmNlUmVxdWVzdC51cmwo
KS5zdHJpbmcoKS5sZW5ndGgoKSAqIDI7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExv
YWRQcmlvcml0eShjb25zdCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mIGxvYWRQcmlv
cml0eSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExvYWRQcmlvcml0eShjb25zdCBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYgbG9hZFByaW9yaXR5KQogewogICAgIGlmIChs
b2FkUHJpb3JpdHkpCiAgICAgICAgIG1fbG9hZFByaW9yaXR5ID0gbG9hZFByaW9yaXR5LnZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4
IGJmMjVjYWRkNDM0MDcyZmM1ZjVkODdhZGI3ZDJlMjJmNmNmNGVjMDcuLmFmZTNkMzVkOTJkYTlk
MDMxODMxMmJkNmYzMDFhNTljMmRiNjM1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHNob3VsZFVzZVBpbmdMb2FkKFR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBU
eXBlOjpCZWFjb24gfHwgdHlwZSA9PSBUeXBlOjpQaW5nOyB9CiAKICAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQot
ICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9y
aXR5PiYpOworICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VMb2FkUHJpb3JpdHk+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IGI1MzdmYzU0NWFm
MTljMjk3NzY5NWZjNzU4MjdmZjhhMWY0MGVkOWQuLjgzNGI2MjU0MTdhYzZlY2YwYjgyZmNhNzFh
Y2UxMzEwZTVlYTY1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0
eSwgU3RyaW5nJiYgY2hhcnNldCkKK0NhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9y
aXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0
KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSkKICAgICAsIG1fY2hhcnNldChXVEZNb3ZlKGNoYXJz
ZXQpKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldFNlbGVjdGVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXJJZk5lZWQKICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVz
dDo6c2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpzZXROYXZpZ2F0aW9uU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mIGRhdGEp
CiB7CiAgICAgaWYgKCFkYXRhIHx8ICFkYXRhLT5hY3RpdmVXb3JrZXIpIHsKICAgICAgICAgbV9v
cHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
aAppbmRleCBmMzAwMDEyZjA1YzllYTljOTc1YzA2MDNkNzFkZjhhMzNkNTIzM2FhLi5lZDJiNWFm
NTZhNDg4ZGZiY2Q4ZmY2NmZiMmY4MzY5Y2YzYjYxMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGJvb2wgaXNSZXF1ZXN0Q3Jvc3NPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFJlc291cmNlCiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVz
dCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlv
cml0eT4gPSBzdGQ6Om51bGxvcHQsIFN0cmluZyYmIGNoYXJzZXQgPSBTdHJpbmcoKSk7CisgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmLCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6
bnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVx
dWVzdCYmIHJlbGVhc2VSZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3Vy
Y2VSZXF1ZXN0KTsgfQogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KQEAgLTU5LDggKzU5LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogICAgIHZvaWQgc2V0T3B0aW9ucyhjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIHsgbV9vcHRpb25zID0gb3B0aW9uczsgfQogCi0gICAg
Y29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpb3JpdHk7IH0KLSAgICB2b2lkIHNldFByaW9yaXR5KE9wdGlvbmFsPFJlc291
cmNlTG9hZFByaW9yaXR5PiYmIHByaW9yaXR5KSB7IG1fcHJpb3JpdHkgPSBXVEZNb3ZlKHByaW9y
aXR5KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBw
cmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpb3JpdHk7IH0KKyAgICB2b2lkIHNldFByaW9y
aXR5KHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiYgcHJpb3JpdHkpIHsgbV9w
cmlvcml0eSA9IFdURk1vdmUocHJpb3JpdHkpOyB9CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihF
bGVtZW50Jik7CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7
CkBAIC0xMDcsMTQgKzEwNywxNCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgc2V0Q2xpZW50SWRlbnRpZmllcklmTmVlZGVkKERvY3VtZW50SWRlbnRpZmll
cik7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVySWZOZWVkZWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIHZv
aWQgc2V0TmF2aWdhdGlvblNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYpOworICAgIHZvaWQgc2V0TmF2aWdh
dGlvblNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBS
ZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsK
ICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbV9vcHRpb25zOwotICAgIE9wdGlvbmFsPFJlc291
cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+IG1fcHJpb3JpdHk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9y
RWxlbWVudDsKICAgICBBdG9tU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgK
aW5kZXggZTdlODVjYTZjZTExOWE1YjFmNzQ3MzQ4MmRkMDEzMzA1ODdhYmNmMy4uOTBiMjBhYzkz
ZDRlNDFjYjRkNWY2YWYwZDU0ODdjZmExN2U0YmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyZXRjaGVk
ID0gMTgKICAgICB9OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lm
aWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQu
Y3BwCmluZGV4IDNjNDM5MzkwMGNmZTc2OTc3MDk3ZGE5MGZjYTE2N2NjNGIwMmE4ODcuLjQwZjMy
Y2ZmMTNmYzQwOTdmNTUzNTExZDZlZTQ3ODA3MTc3N2I2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNv
bnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpsaW5lVGhp
Y2tuZXNzKCkKICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzLnZhbHVlKCk7CiB9CiAKLU1hdGhN
TEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRp
b25hbDxGcmFjdGlvbkFsaWdubWVudD4mIGFsaWdubWVudCkKK01hdGhNTEZyYWN0aW9uRWxlbWVu
dDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlv
bkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPEZyYWN0
aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50KQogewogICAgIGlmIChhbGlnbm1lbnQpCiAgICAgICAg
IHJldHVybiBhbGlnbm1lbnQudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxGcmFjdGlvbkVsZW1lbnQuaAppbmRleCBkOGM2NmEzODY0YjYzNTVmN2E4ZTc1MTQ3ZDM0YjM4
Y2YyMTA1ZTViLi42OTVjNTgxMzIxNjk0YzQwZTAxNWE5ZjIwOGQyYTVhNzNjZmU2MmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC00OSwx
MSArNDksMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZy
YWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFs
aWdubWVudD4mKTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4m
KTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNzOwotICAgIE9wdGlvbmFs
PEZyYWN0aW9uQWxpZ25tZW50PiBtX251bWVyYXRvckFsaWdubWVudDsKLSAgICBPcHRpb25hbDxG
cmFjdGlvbkFsaWdubWVudD4gbV9kZW5vbWluYXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25B
bGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxpZ25tZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rp
b25BbGlnbm1lbnQ+IG1fZGVub21pbmF0b3JBbGlnbm1lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKaW5kZXggYTBlMzJhODFmYzBk
ZTJjNjkxMWZkZGNkZTdhYTA0ZDMwYzFlOWQxMy4uMDUwNmI1ZjAwMGZmMWRhMGE4MzlkMjA2ZmEy
MDBhY2M3ZGU2NzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1l
bmNsb3NlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJOb3Rh
dGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uKE1l
bmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykgeyBtX25vdGF0aW9uRmxhZ3MudmFsdWUo
KSB8PSBub3RhdGlvbkZsYWc7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uRmxhZ3MoU3RyaW5nVmll
dyBub3RhdGlvbik7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IG1fbm90YXRpb25GbGFnczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX25vdGF0aW9uRmxhZ3M7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCmlu
ZGV4IGVjNTA1MjA5NjQzMWFhYjg2MGJkMWRhNWNlNzQzNTkyNGM2ZmI0ZjMuLjRmMjkwZGFkOTNh
OTBjNGExYWIwMDg5MDFiNjE5YzIxM2MwZmUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCkBAIC0xMTI2LDcgKzExMjYsNyBA
QCBzdGF0aWMgY29uc3QgVUNoYXIzMiBob3Jpem9udGFsT3BlcmF0b3JzW10gPSB7CiAgICAgMHgw
MDNELCAweDAwNUUsIDB4MDA1RiwgMHgwMDdFLCAweDAwQUYsIDB4MDJDNiwgMHgwMkM3LCAweDAy
QzksIDB4MDJDRCwgMHgwMkRDLCAweDAyRjcsIDB4MDMwMiwgMHgwMzMyLCAweDIwM0UsIDB4MjBE
MCwgMHgyMEQxLCAweDIwRDYsIDB4MjBENywgMHgyMEUxLCAweDIxOTAsIDB4MjE5MiwgMHgyMTk0
LCAweDIxOTgsIDB4MjE5OSwgMHgyMTlDLCAweDIxOUQsIDB4MjE5RSwgMHgyMUEwLCAweDIxQTIs
IDB4MjFBMywgMHgyMUE0LCAweDIxQTYsIDB4MjFBOSwgMHgyMUFBLCAweDIxQUIsIDB4MjFBQywg
MHgyMUFELCAweDIxQjQsIDB4MjFCOSwgMHgyMUJDLCAweDIxQkQsIDB4MjFDMCwgMHgyMUMxLCAw
eDIxQzQsIDB4MjFDNiwgMHgyMUM3LCAweDIxQzksIDB4MjFDQiwgMHgyMUNDLCAweDIxRDAsIDB4
MjFEMiwgMHgyMUQ0LCAweDIxREEsIDB4MjFEQiwgMHgyMURDLCAweDIxREQsIDB4MjFFMCwgMHgy
MUUyLCAweDIxRTQsIDB4MjFFNSwgMHgyMUU2LCAweDIxRTgsIDB4MjFGMCwgMHgyMUY2LCAweDIx
RkQsIDB4MjFGRSwgMHgyMUZGLCAweDIzQjQsIDB4MjNCNSwgMHgyM0RDLCAweDIzREQsIDB4MjNE
RSwgMHgyM0RGLCAweDIzRTAsIDB4MjNFMSwgMHgyNTAwLCAweDI3RjUsIDB4MjdGNiwgMHgyN0Y3
LCAweDI3RjgsIDB4MjdGOSwgMHgyN0ZBLCAweDI3RkIsIDB4MjdGQywgMHgyN0ZELCAweDI3RkUs
IDB4MjdGRiwgMHgyOTBDLCAweDI5MEQsIDB4MjkwRSwgMHgyOTBGLCAweDI5MTAsIDB4Mjk0RSwg
MHgyOTUwLCAweDI5NTIsIDB4Mjk1MywgMHgyOTU2LCAweDI5NTcsIDB4Mjk1QSwgMHgyOTVCLCAw
eDI5NUUsIDB4Mjk1RiwgMHgyQjQ1LCAweDJCNDYsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzcsIDB4
RkUzOCwgMHgxRUVGMCwgMHgxRUVGMQogfTsKIAotT3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0sIGJv
b2wgZXhwbGljaXRGb3JtKQorc3RkOjpvcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBs
aWNpdEZvcm0pCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5LmgKaW5kZXggMWM1ZDBhMjlhOWU4MTk4MjhlOTcwMDU1ZTI1NDI3YmM2NDBkOWUyOC4uNjBl
YTY3N2JhNGZiNGY4MGM5MmIyMzE1NmViYTJlMTIzYmRiNzYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaApAQCAtNTIsNyArNTIsNyBA
QCBzdHJ1Y3QgUHJvcGVydHkgewogICAgIC8vIERlZmF1bHQgb3BlcmF0b3IgcHJvcGVydGllcyBh
cmUgYWxsIHNldCB0byAiZmFsc2UiLgogICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzIHsgMCB9Owog
fTsKLU9wdGlvbmFsPFByb3BlcnR5PiBzZWFyY2goVUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNp
dEZvcm0pOworc3RkOjpvcHRpb25hbDxQcm9wZXJ0eT4gc2VhcmNoKFVDaGFyMzIsIEZvcm0sIGJv
b2wgZXhwbGljaXRGb3JtKTsKIGJvb2wgaXNWZXJ0aWNhbChVQ2hhcjMyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAppbmRleCAzNGJi
ODFhZDdkZTMxYjNlZWM2MzkxMmIwODQ0YWQzZTQ1MzIyODhkLi44NmRmNjNjMDIwZjUwZGI1ZGE1
Y2YxZjI4OWVhZGQwOTk4YjNjZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTWF0aE1MT3Bl
cmF0b3JFbGVtZW50Ojpjb21wdXRlT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6RmxhZyBmCiB7CiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzICYgZmxhZyk7
CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IHByb3BlcnR5OworICAgIHN0ZDo6b3B0aW9u
YWw8Qm9vbGVhblZhbHVlPiBwcm9wZXJ0eTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gcHJvcGVy
dHlGbGFnVG9BdHRyaWJ1dGVOYW1lKGZsYWcpOwogICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFs
dWUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKG5hbWUsIHByb3BlcnR5KTsKICAgICBzd2l0Y2gg
KHZhbHVlKSB7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIE1hdGhNTFRv
a2VuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5
RmxhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnPiBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRy
KQogICAgICAgICByZXR1cm4gQWNjZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE9wZXJhdG9yRWxlbWVudC5oCmluZGV4IGJiNTZmNzk0NmU4ZjE1ZTkyYjI4ZjQ2MWU0YjJlN2Zj
ZTljNzZjMjkuLmUxYzllNjc0Y2U2ODVlZDU4NzRlYzcyZWZkYzM5MDNjMmQxOWFkYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKQEAgLTU4LDkg
KzU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPE9wZXJhdG9yQ2hh
cj4gbV9vcGVyYXRvckNoYXI7CisgICAgc3RkOjpvcHRpb25hbDxPcGVyYXRvckNoYXI+IG1fb3Bl
cmF0b3JDaGFyOwogCi0gICAgT3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpQcm9w
ZXJ0eT4gbV9kaWN0aW9uYXJ5UHJvcGVydHk7CisgICAgc3RkOjpvcHRpb25hbDxNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnk6OlByb3BlcnR5PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKICAgICBNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5IGNvbXB1dGVEaWN0aW9uYXJ5UHJvcGVydHko
KTsKICAgICBjb25zdCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5JiBkaWN0aW9u
YXJ5UHJvcGVydHkoKTsKIApAQCAtNzEsMTAgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgT3BlcmF0
b3JQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsKICAgICB2b2lkIGNvbXB1dGVPcGVyYXRvckZsYWco
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9sZWFkaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3BhY2U7Ci0g
ICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21pblNpemU7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21h
eFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbGVhZGluZ1NwYWNlOworICAgIHN0
ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxM
ZW5ndGg+IG1fbWluU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9tYXhTaXplOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5k
ZXggNTk3MmM0OGRiY2EwNWU0YzhjYmIyYmZjM2RjZDZkNDkyZjJiNDI2Ni4uNjM5NDc4OTFkNDJj
MWNhMDQ1NWNjODRlNmM1ZTU5NzRlM2Q4MGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00NiwxMSArNDYsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAot
ICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVp
Z2h0OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+
IG1fbHNwYWNlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV92b2Zmc2V0OworICAgIHN0ZDo6b3B0
aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdo
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExlbmd0aD4gbV9sc3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fdm9mZnNldDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50LmNwcAppbmRleCBhMjY5ZGM5YTA3NjUwZTljZTk1ZmEyMzRkM2U4YmFkMWFhZmI3
M2E2Li5mZDVjNGUyMmVkMWE0NDMxMjllZGEwZTdmY2YyNjc1Yjc2YTAwZTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBA
IC0xODYsNyArMTg2LDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojppc0Zsb3dD
b250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5W
YWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1
dGUpCitjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0
dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZSgpOwpAQCAtMzExLDcgKzMx
MSw3IEBAIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojpw
YXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHBhcnNlTmFtZWRTcGFj
ZShzdHJpcHBlZExlbmd0aCk7CiB9CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIE9wdGlvbmFsPExlbmd0aD4mIGxlbmd0aCkKK2NvbnN0IE1hdGhNTEVsZW1l
bnQ6Okxlbmd0aCYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3Ro
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiYgbGVuZ3Ro
KQogewogICAgIGlmIChsZW5ndGgpCiAgICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUoKTsKQEAg
LTM2MSw3ICszNjEsNyBAQCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKAogICAgIHJldHVybiBNYXRo
VmFyaWFudDo6Tm9uZTsKIH0KIAotT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKK3N0ZDo6
b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRoVmFy
aWFudEF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKaW5kZXggZTI0
NjVmMWRmYzlmMDc5MThhMmZiZTZkNjNmYTEzNDc3OGIyYzNiNi4uM2YyYTc3OGJiNTk3MWM0Yzgx
MmUyOWIyODAyZGRjNGE0MWJlYTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCkBAIC00NSwxNiArNDUsMTYgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBib29sIGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKTsKICAgICBz
dGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmKTsKIAotICAgIHN0YXRpYyBPcHRp
b25hbDxib29sPiB0b09wdGlvbmFsQm9vbChjb25zdCBCb29sZWFuVmFsdWUmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQgPyBzdGQ6Om51bGxvcHQgOiBPcHRp
b25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9Ci0gICAgY29uc3QgQm9v
bGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBP
cHRpb25hbDxCb29sZWFuVmFsdWU+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
dG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
PT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxi
b29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZh
bHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9w
dGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxM
ZW5ndGgoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5n
dGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPExlbmd0aD4mKTsKKyAgICBjb25zdCBM
ZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRp
b25hbDxMZW5ndGg+Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0
cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3Bl
Y2lmaWVkTWF0aFZhcmlhbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50
PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8TWF0aFZhcmlh
bnQ+IG1fbWF0aFZhcmlhbnQ7CisgICAgc3RkOjpvcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRo
VmFyaWFudDsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlw
dHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQu
aAppbmRleCA0M2RjNGZjOWYyNzE1MmRkNzdjNmI1ZWZjZTVmNDVjZTFmZTk2MzliLi40YWE2MzJh
OGRhNzBmYjI4MDVkMzMyN2Q5N2ZiYjFiYjgxNjJmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwot
ICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKLSAgICBPcHRpb25hbDxMZW5n
dGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdWJz
Y3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCmlu
ZGV4IDVjZTk0YmRhZmMwM2FmNTg0ZWRjZjlmMjBlMTRiMThmNzkzOGE3OTEuLmVkNTI0YWRiNTJj
Y2IwZGY5MzNmZjQ4YWI0OTMyOGRjZWI5YWI2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU3BhY2VFbGVtZW50LmgKQEAgLTQzLDkgKzQzLDkgQEAgcHJpdmF0ZToKICAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAotICAg
IE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0
OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0
aD4gbV93aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9oZWlnaHQ7CisgICAgc3Rk
OjpvcHRpb25hbDxMZW5ndGg+IG1fZGVwdGg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCmluZGV4IDdiZGFmNjEwNGU4ODg5M2FlYzkzN2Zm
NTJmMWE3MzNjODM4NzVmNGIuLjU1NWRkMmVkZjJjNDAzOWYyNjQxZDQ1YTA2MDVhYzcyMzNjYTEz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBA
IC04MSwxMyArODEsMTMgQEAgYm9vbCBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGlzUGhyYXNp
bmdDb250ZW50KGNoaWxkKSAmJiBTdHlsZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNoaWxkKTsKIH0KIAotT3B0aW9uYWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpj
b252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyBzdHJpbmcpCitzdGQ6Om9wdGlvbmFs
PFVDaGFyMzI+IE1hdGhNTFRva2VuRWxlbWVudDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0
cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1dG8gY29kZVBvaW50cyA9IHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRUUFNwYWNlcyhzdHJpbmcpLmNvZGVQb2ludHMoKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gY29kZVBvaW50cy5iZWdpbigpOwogICAgIGlmIChpdGVyYXRvciA9PSBjb2RlUG9pbnRz
LmVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVDaGFy
MzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNo
YXJhY3RlciA9ICppdGVyYXRvcjsKICAgICArK2l0ZXJhdG9yOwogICAgIHJldHVybiBpdGVyYXRv
ciA9PSBjb2RlUG9pbnRzLmVuZCgpID8gY2hhcmFjdGVyIDogc3RkOjpudWxsb3B0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oCmluZGV4IGE0ZWU5ZTQ5YzMx
NGIwYWIwNmNjMTI4Nzg4NzBiN2Y0N2FjMWUyNTQuLjNhZTc2MmY5ODZkYWIxMTdjNmIwMzkxMWJl
YmJkNTVhOTdkMDA3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxU
b2tlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVt
ZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgTWF0aE1MVG9rZW5FbGVtZW50IDogcHVibGlj
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0
aE1MVG9rZW5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVD
b2RlUG9pbnQoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4g
Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
TWF0aE1MVG9rZW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaApp
bmRleCBmNjM0MDJmMGQ3NjJmNGEwODZjMzI0OTU4OTVjZDQ0YzczYTcyYzIzLi4xY2NjYWI3MGM3
ODM0NTA5ZGFkYmUyYTA4M2MzODZiZjQ2OTFhMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmgKQEAgLTQzLDggKzQzLDggQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnQ7Ci0gICAgT3B0aW9uYWw8
Qm9vbGVhblZhbHVlPiBtX2FjY2VudFVuZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZh
bHVlPiBtX2FjY2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnRV
bmRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBiZDAzNDhjYThmYWI4Njdi
OGQxNDdkZTE5YTlhZjQzNmQ2MmNlNDg1Li5hMGMwOTMwNmY5NjI4YjE2NGE5MjIyZjM3MTBkODdl
YTU5ODA0YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9p
ZCBDaHJvbWU6OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXIKICAgICBtX2NsaWVudC5zaG93U2hhcmVTaGVldChzaGFyZURh
dGEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBDaHJvbWU6OnNob3dDb250YWN0UGlj
a2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBDaHJvbWU6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PENvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9jbGllbnQuc2hvd0NvbnRh
Y3RQaWNrZXIocmVxdWVzdERhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KQEAgLTU0Niw3ICs1
NDYsNyBAQCBQbGF0Zm9ybURpc3BsYXlJRCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZS5kaXNwbGF5SUQoKTsKIH0KIAotdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVl
bkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1Bl
clNlY29uZD4gbm9taW5hbEZyYW1lSW50ZXJ2YWwpCit2b2lkIENocm9tZTo6d2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFt
ZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZUludGVydmFsKQogewogICAgIG1fcGFnZS53aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCBhYjUxNjY1OGQ3ODAxMDBiNzA5MWU0MWY0YjFlNWFkMmNiMzdjYTgz
Li4xNWE0OTFiODRjMjA2ZGQ4YjUxYWRjNmVlMWRiNjg4OGI3ZjQzZTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHdpbmRvd1NjcmVl
bkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPikgb3ZlcnJpZGU7CiAKICAgICBGbG9h
dFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBhdmFpbGFi
bGVTY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpOwogICAgIHZv
aWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29u
dGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9y
PENvbnRhY3RJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3Qg
Q29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4mJik7CiAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXImKTsKIAogICAgIHZvaWQgZGlz
cGF0Y2hEaXNhYmxlZEFkYXB0YXRpb25zRGlkQ2hhbmdlKGNvbnN0IE9wdGlvblNldDxEaXNhYmxl
ZEFkYXB0YXRpb25zPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXgg
YzhmODEyN2FlZjQ0MzI4NTI1ZGYyMTRlOTYwMzQxMmU2MDI2ZDRiZi4uZWM3MmU5NTQ5MmE2YTc1
NzkxYjg3MDUwNmNiYmRlOGViOWU3ZDI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhvdmVyU3Vw
cG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJh
Y3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ltbWVkaWF0ZUludmFsaWRhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5Q
YW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93U2hh
cmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYm
IGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYm
IGNhbGxiYWNrKSB7IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7IH0KICAgICAKICAgICAvLyBBc3lu
Y2hyb25vdXMgcmVxdWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMu
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBGaWxlSWNvbkxvYWRlciYpID0gMDsKQEAgLTQ2Myw3ICs0NjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgSW50
UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlk
Q2hhbmdlKFNjcm9sbGJhclN0eWxlKSB7IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2Vk
KGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmln
aW4uaAppbmRleCBlODQ5YWJkNTBmMDVlMjkwMDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzLi5kNzcz
ZDliMzEyYjM2YTk1NjBkY2Y0NGQ1MThiMTFjYmMwYWRjYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNvbnN0OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q2xpZW50T3JpZ2luPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgQ2xpZW50T3JpZ2luIGlz
b2xhdGVkQ29weSgpIGNvbnN0OwogICAgIGJvb2wgaXNSZWxhdGVkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlciB8fCBjbGll
bnRPcmlnaW4gPT0gb3RoZXI7IH0KQEAgLTc1LDEwICs3NSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgY2xpZW50T3JpZ2luOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0
ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwot
ICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gY2xpZW50T3JpZ2luOworICAgIHN0ZDo6
b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CisgICAgc3RkOjpvcHRpb25h
bDxTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IHRvcE9y
aWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbiB8fCB0b3BPcmlnaW4tPmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApp
bmRleCA3NDIxNDkzZTQyZGEzODdlM2EyNTQzNWQ0MWYzNzRjYzM1ZmQzYWEyLi4wOGQ1OTZkNGVi
NzI5NWQyZGJjNjc0NzJiZWY2MDI0OTViNTJhM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxl
Y3Rpb24uY3BwCkBAIC02NCw3ICs2NCw3IEBAIFJlZlB0cjxGcmFtZT4gRE9NU2VsZWN0aW9uOjpm
cmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIERPTVdpbmRvd1Byb3BlcnR5OjpmcmFtZSgpOwogfQog
Ci1PcHRpb25hbDxTaW1wbGVSYW5nZT4gRE9NU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBET01TZWxlY3Rpb246OnJhbmdlKCkgY29uc3QKIHsKICAg
ICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmgKaW5kZXggNTQxYmU0MjM5ODdmN2E0NDQwZTExNWU5YTFkM2YxNTFk
NDYwODFiOS4uYzg2YzQxOGYwMTUzMTI2MzZjYWU1Y2FlMWYxZjhkNjA5NDU5ZTRiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBGSVhNRTogQ2hhbmdlIERPTVdpbmRvd1Byb3BlcnR5OjpmcmFtZSB0byByZXR1cm4gUmVm
UHRyIGFuZCB0aGVuIGRlbGV0ZSB0aGlzLgogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUoKSBjb25z
dDsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZSgpIGNvbnN0OwogCiAgICAgUG9zaXRpb24gYW5jaG9y
UG9zaXRpb24oKSBjb25zdDsKICAgICBQb3NpdGlvbiBmb2N1c1Bvc2l0aW9uKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IDc2ZDJmZTdkOWIwNmU4OWFjM2Y1NTZjMTJkOGFi
NDQ5MDViYjQ5ZGEuLjQ1MDIwNGVhZWRiYjNiNzg3ODhmNzI0M2U5MjZkODI1ODE3ZTI2NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgU2Vjb25kcyBET01U
aW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKCkgY29uc3QKICAgICByZXR1cm4gaW50ZXJ2
YWw7CiB9CiAKLU9wdGlvbmFsPE1vbm90b25pY1RpbWU+IERPTVRpbWVyOjphbGlnbmVkRmlyZVRp
bWUoTW9ub3RvbmljVGltZSBmaXJlVGltZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TW9ub3Rvbmlj
VGltZT4gRE9NVGltZXI6OmFsaWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBj
b25zdAogewogICAgIFNlY29uZHMgYWxpZ25tZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4
VGltZXJOZXN0aW5nTGV2ZWwpOwogICAgIGlmICghYWxpZ25tZW50SW50ZXJ2YWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmgKaW5kZXggYTU1OWY0MTkzMDkxYmRlNmMyYzc3NjY4ZTUxY2RiOWNmMjBhZmE1
OC4uMTFjZmE3ZTUwZmVhOTc5ZWRjMjMzMGJhNWY1ZTdhNzU3OTZkOTdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIFN1c3BlbmRhYmxl
VGltZXJCYXNlCiAgICAgdm9pZCBmaXJlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RvcCgp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGFs
aWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1lKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IGFsaWduZWRGaXJlVGltZShNb25v
dG9uaWNUaW1lKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEku
CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGYyNmNlNDNiZjNlZDAyN2E5NGYyNjdhYWU4
YjQyMGZiNjBlOTZhNzcuLmE4ZjVlZjNhY2Q2MWRjMjUxYWQyMGIxNzk0Y2U3NDA1M2QzZjg5Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE1MSw5ICsxNTEsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0VHJhbnNp
ZW50QWN0aXZhdGlvbkR1cmF0aW9uIHsgMl9zIH07CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNvbmRz
PiYgdHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uT3ZlcnJpZGVGb3JUZXN0aW5nKCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+JiB0cmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25PdmVy
cmlkZUZvclRlc3RpbmcoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxT
ZWNvbmRzPj4gb3ZlcnJpZGVGb3JUZXN0aW5nOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+PiBvdmVycmlkZUZvclRlc3Rpbmc7CiAgICAgcmV0dXJuIG92
ZXJyaWRlRm9yVGVzdGluZzsKIH0KIApAQCAtMTUxOSw3ICsxNTE5LDcgQEAgRG9jdW1lbnQqIERP
TVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4o
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9
CiAKLXZvaWQgRE9NV2luZG93OjpvdmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZv
clRlc3RpbmcoT3B0aW9uYWw8U2Vjb25kcz4mJiBvdmVycmlkZSkKK3ZvaWQgRE9NV2luZG93Ojpv
dmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpvcHRpb25h
bDxTZWNvbmRzPiYmIG92ZXJyaWRlKQogewogICAgIHRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlv
bk92ZXJyaWRlRm9yVGVzdGluZygpID0gV1RGTW92ZShvdmVycmlkZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAppbmRleCAxNWE2YmNhZmVlNDY1ZWQzZjAwZGQyY2IxMDFjZTYxMzNmZGUxNzEz
Li4wMTA1ZDk0MGFmNDY2MzAwOTA3MmM5NDE3YmQwZTQ2NzYxZWFjZGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdG9yKiBv
cHRpb25hbE5hdmlnYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdG9yLmdldCgpOyB9CiAg
ICAgTmF2aWdhdG9yJiBjbGllbnRJbmZvcm1hdGlvbigpIHsgcmV0dXJuIG5hdmlnYXRvcigpOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBvdmVycmlkZVRyYW5zaWVudEFjdGl2
YXRpb25EdXJhdGlvbkZvclRlc3RpbmcoT3B0aW9uYWw8U2Vjb25kcz4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgb3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25G
b3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4mJik7CiAgICAgdm9pZCBzZXRMYXN0QWN0
aXZhdGlvblRpbWVzdGFtcChNb25vdG9uaWNUaW1lIGxhc3RBY3RpdmF0aW9uVGltZXN0YW1wKSB7
IG1fbGFzdEFjdGl2YXRpb25UaW1lc3RhbXAgPSBsYXN0QWN0aXZhdGlvblRpbWVzdGFtcDsgfQog
ICAgIE1vbm90b25pY1RpbWUgbGFzdEFjdGl2YXRpb25UaW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RBY3RpdmF0aW9uVGltZXN0YW1wOyB9CiAgICAgdm9pZCBub3RpZnlBY3RpdmF0ZWQo
TW9ub3RvbmljVGltZSk7CkBAIC00MzIsNyArNDMyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkUHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3Vz
cGVuZGVkRm9yRG9jdW1lbnRTdXNwZW5zaW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdXNw
ZW5kaW5nT2JzZXJ2ZXJzIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX2NhblNob3dN
b2RhbERpYWxvZ092ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYW5TaG93TW9k
YWxEaWFsb2dPdmVycmlkZTsKIAogICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsK
IApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIFJlZlB0cjxQZXJm
b3JtYW5jZT4gbV9wZXJmb3JtYW5jZTsKIAotICAgIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcz4gbV9mcm96ZW5Ob3dUaW1lc3RhbXA7CisgICAgc3RkOjpvcHRpb25hbDxSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHM+IG1fZnJvemVuTm93VGltZXN0YW1wOwogCiAgICAgLy8gRm9yIHRo
ZSBwdXJwb3NlIG9mIHRyYWNraW5nIHVzZXIgYWN0aXZhdGlvbiwgZWFjaCBXaW5kb3cgVyBoYXMg
YSBsYXN0IGFjdGl2YXRpb24gdGltZXN0YW1wLiBUaGlzIGlzIGEgbnVtYmVyIGluZGljYXRpbmcg
dGhlIGxhc3QgdGltZSBXIGdvdAogICAgIC8vIGFuIGFjdGl2YXRpb24gbm90aWZpY2F0aW9uLiBJ
dCBjb3JyZXNwb25kcyB0byBhIERPTUhpZ2hSZXNUaW1lU3RhbXAgdmFsdWUgZXhjZXB0IGZvciB0
d28gY2FzZXM6IHBvc2l0aXZlIGluZmluaXR5IGluZGljYXRlcyB0aGF0IFcgaGFzIG5ldmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjAwYTY1ZDk4YzYyYjRk
NzI5NTY3YmMzYzk4YWVlNThiNzhjODMuLjRmZWU4NmVjOGE1MjEwMDM5ZTUyZDY5MDBjZDhhYjgz
NTdmOTJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGllbnQo
KS5kcmFnRW5kZWQoKTsKIH0KIAotT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEp
OwogfQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQo
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91
c2UgPSBudWxscHRyOwogfQogCi1PcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7
CiB9CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZElu
dG9Eb2N1bWVudChEb2N1bWVudCogbmV3RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91
c2UgPSBuZXdEb2N1bWVudDsKIH0KIAotT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0
ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JV
cGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBtb3VzZU1vdmVkSW50b0Rv
Y3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50
UG9zaXRpb24oKSkpOwogCkBAIC0zMTcsNyArMzE3LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBk
cmEKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICBtX2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3Vt
ZW50RHJhZyhkcmFnRGF0YSwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0
aW9uKTsKICAgICBpZiAobV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9k
OjpOb25lICYmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOjpMb2FkKSkpIHsKICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlv
bkZvckxvYWQoZHJhZ0RhdGEpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChE
cmFnSGFuCiAKICNlbmRpZgogCi1EcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRy
eURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4mIGRyYWdPcGVyYXRpb24pCitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6
OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgc3RkOjpvcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRl
ck1vdXNlKQogICAgICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwpAQCAtNDky
LDcgKzQ5Miw3IEBAIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBEcmFnQ29udHJvbGxlcjo6
ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvCiAgICAgcmV0dXJuIG1fZHJhZ1Nv
dXJjZUFjdGlvbjsKIH0KIAotT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6
Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLm1h
aW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKTsKIApA
QCAtNjkzLDcgKzY5Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0
byBtYXRjaCBJRSdzIG9wZXJhdGlvbiBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAv
LyB0aGUgcGFnZSBjYWxscyBwcmV2ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9l
c24ndCBzZXQgZHJvcEVmZmVjdC4KQEAgLTcxNCw3ICs3MTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+CiAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkdlbmVyaWM7CiB9CiAKLWJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlv
bmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCitib29sIERyYWdDb250cm9sbGVyOjp0cnlE
SFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBzdGQ6Om9wdGlvbmFsPERyYWdPcGVy
YXRpb24+JiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRVbmRlck1vdXNlKTsK
ICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkpOwpAQCAtOTM3LDcg
KzkzNyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUm
IHNvdXJjZSwgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3RpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8
SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRyb2xsZXI6OmhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQo
RnJhbWUmIHNvdXJjZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
KSBjb25zdAorc3RkOjpvcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0
VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBJbnRQb2ludCYgbG9jYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzb3VyY2Uudmlldygp
IHx8ICFzb3VyY2UuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggNTJiYjQ5MTBkMTdhNjM3
NWFmZjI1ODlkMjY4YzhmZjM1ODU2NzE3Ny4uZmU0OTczZTk4Zjc0ODBiYmExMzg4MTJlNDAyZGUw
ODBkYjI1NmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNjEsOSAr
NjEsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRHJhZ09wZXJhdGlvbiBwbGF0Zm9ybUdlbmVy
aWNEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnVXBkYXRlZChj
b25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RHJhZ09w
ZXJhdGlvbj4gZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhY2VEcmFnQ2FyZXQoY29uc3QgSW50UG9pbnQm
KTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+JiBkcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVy
czsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgZHJvcHBlZEltYWdlUGxhY2Vo
b2xkZXJSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5n
ZTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBkcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlclJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
clJhbmdlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplRHJvcHBlZEltYWdl
UGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CkBAIC0xMTAsMTEg
KzExMCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihG
cmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBE
cmFnRGF0YSYpOwogICAgIGJvb2wgY29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwot
ICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJik7Ci0gICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uRm9yTG9hZChj
b25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdIYW5kbGluZ01ldGhvZCB0cnlEb2N1bWVudERyYWco
Y29uc3QgRHJhZ0RhdGEmLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiwgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4mKTsKLSAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0
YSYsIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+Jik7Ci0gICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RHJh
Z09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0Rh
dGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdE
YXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIHN0ZDo6b3B0aW9uYWw8RHJh
Z09wZXJhdGlvbj4mKTsKKyAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIHN0
ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERyYWdPcGVy
YXRpb24+IGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJh
Z0NhcmV0KCk7CiAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJh
Z0RhdGEmKTsKICAgICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbW91c2VNb3ZlZEludG9Eb2N1bWVudChE
b2N1bWVudCopOwogICAgIGJvb2wgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29u
c3QgSW1hZ2UmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RS
ZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmLCBFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHRGb3JEcmFn
U3RhcnQoRnJhbWUmLCBFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIHZv
aWQgZG9JbWFnZURyYWcoRWxlbWVudCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYs
IEZyYW1lJiwgSW50UG9pbnQmLCBjb25zdCBEcmFnU3RhdGUmLCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvJiYpOwogICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRQb2ludCYsIEZyYW1lJiwgY29uc3QgRHJhZ1N0YXRlJiwgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyYmKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIFVSTCBtX2Ry
YWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9Owog
ICAgIFZlY3RvcjxSZWY8SFRNTEltYWdlRWxlbWVudD4+IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzOwotICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVy
UmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbV9kcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlclJhbmdlOwogfTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RyYWdnYWJsZUxpbmso
Y29uc3QgRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNzAyNDI1NDMxMDNm
NGYxZTFhOWM0YmJjZDcxMTdhYmI4Nzg4YzkwYy4uM2IwZmM5ZTQ1NThhYjg3ZTNhNzBiYzY1M2M4
NjIxZjlmYjk3Y2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVt
ZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRo
ZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUuCiAgICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50czsK
LSAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gdHlwZTsgLy8gU2hvdWxkIGJlIE9wdGlv
bmFsPD4uIFNlZSBCdWcgMjEzMDg2LgorICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiB0
eXBlOyAvLyBTaG91bGQgYmUgc3RkOjpvcHRpb25hbDw+LiBTZWUgYnVnIDIxMzA4Ni4KICAgICBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0aGUgc291
cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCBhMTczZGFhZWIzMDk5MmY5YTljMTY1YzYwYzVjNzlhOWNjNTI1MjNmLi5mNjE4NWExMjM1
Y2ZjZTdiNzQ5MjhhZGU3MzI4YTEwYzNlMjAwNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5FZGl0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCkgPSAwOyAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpID0gMDsKQEAgLTY3LDEzICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUmLCBjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwg
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBBZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH07CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1cHBy
ZXNzUGFzc3dvcmRFY2hvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgCi0gICAgdmly
dHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBs
eVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBseVN0eWxlKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5n
ZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCkBAIC05NSw5ICs5NSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRh
YmlsaXR5Q2hhbmdlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4
dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDdmNjk2NjIxYTEzOTM5ZDU5NzkzY2JhNzhlODVlMjY0MzA0NDEyYjQuLjk0N2M3ZTY5MzAw
NGRhZmRlYmMxZjRiYTZjOTMzZTUzYzRiOTM0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTM5NSw4ICszOTUsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQog
ICAgIG1fZHJhZ1RhcmdldCA9IG51bGxwdHI7CiAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVy
RXZlbnQgPSBmYWxzZTsKICNlbmRpZgotICAgIG1fbW91c2VQb3NpdGlvbklzVW5rbm93biA9IHRy
dWU7Ci0gICAgbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uID0geyB9OworICAgIG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2xhc3RLbm93bk1vdXNlR2xvYmFs
UG9zaXRpb24gPSB7IH07CiAgICAgbV9tb3VzZVByZXNzTm9kZSA9IG51bGxwdHI7CiAgICAgbV9t
b3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTkzMiw3ICs5MzEsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7ICBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmll
dy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQ
b3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOwogICAgIGRvY3VtZW50LT5oaXRUZXN0KGhp
dFR5cGUsIHJlc3VsdCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKHJlc3VsdCk7
CiB9CkBAIC0xMjk3LDcgKzEyOTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9s
bFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTYwogCiBJbnRQ
b2ludCBFdmVudEhhbmRsZXI6Omxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25zdAogewotICAg
IHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgcmV0dXJuIG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKTsKIH0KIAogUmVmUHRyPEZyYW1lPiBF
dmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBoaXRUZXN0UmVzdWx0KQpAQCAtMTM3NSw3ICsxMzc0LDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcklmTmVlZGVkKCkKIAogdm9pZCBFdmVudEhhbmRs
ZXI6OnVwZGF0ZUN1cnNvcigpCiB7Ci0gICAgaWYgKG1fbW91c2VQb3NpdGlvbklzVW5rbm93bikK
KyAgICBpZiAoIW1fbGFzdEtub3duTW91c2VQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewpAQCAtMTQwMSw3ICsxNDAwLDcg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcigpCiAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5
LCBtZXRhS2V5KTsKIAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBbGxvd0ZyYW1lU2Nyb2xsYmFycyB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cygqbV9sYXN0S25v
d25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0
KTsKIAogICAgIHVwZGF0ZUN1cnNvcigqdmlldywgcmVzdWx0LCBzaGlmdEtleSk7CkBAIC0xNDE1
LDcgKzE0MTQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYg
dmlldywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBibwogICAgIH0KIH0KIAotT3B0aW9u
YWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGJvb2wgc2hpZnRLZXkpCitzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5k
bGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNoaWZ0
S2V5KQogewogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXpl
TW9kZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk0OSw3ICsxOTQ4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICNlbmRpZgogCiAgICAgaWYgKG1fc3ZnUGFuKSB7
Ci0gICAgICAgIGRvd25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRh
dGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uKSk7CisgICAgICAgIGRvd25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVu
dCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25v
d25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMjExNSw3ICsyMTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1N
b3UKIAogICAgIGlmIChtX3N2Z1BhbikgewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAg
ICAgICBkb3duY2FzdDxTVkdEb2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFu
KG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlv
bikpOworICAgICAgICBkb3duY2FzdDxTVkdEb2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSku
dXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTIyOTcsNyArMjI5Niw3IEBAIHN0YXRpYyBib29sIHRhcmdldElzRnJhbWUo
Tm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFn
T3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlv
bihjb25zdCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24g
PT0gImNvcHkiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKQEAgLTIzMDgs
NyArMjMwNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oY29uc3QgU3RyCiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVP
cGVyYXRpb24oT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQorc3RhdGljIFN0cmlu
ZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oc3RkOjpvcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7CiAgICAgaWYgKG9wZXJhdGlvbikgewogICAgICAg
ICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKQEAgLTIzNDAsNyArMjMzOSw3IEBAIHN0YXRpYyBib29s
IGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQog
ICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9wem9uZUF0dHIpLCB0cnVlKTsKICAgICAgICAg
Ym9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKGF1dG8gb3BlcmF0aW9uRnJv
bUtleXdvcmQgPSBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29y
ZHNbaV0pKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQpAQCAtMjgwOCw3
ICsyODA3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
U25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb24KICAgICAKIEludFBvaW50IEV2ZW50
SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBj
b25zdAogewotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgcmV0dXJu
IG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKTsKIH0KICAgICAK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTMwNTgsNyArMzA1Nyw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoCiAgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLmhhbmRsZVdo
ZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgZ2VzdHVyZVN0YXRlKTsKIH0KIAotT3B0
aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxH
ZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKK3N0ZDo6b3B0aW9uYWw8V2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGlu
Zz4gZXZlbnRIYW5kbGluZykKIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAg
aWYgKCFtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3Rh
cnQoKSAmJiBldmVudEhhbmRsaW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRpc3BhdGNoZWRU
b0RPTSkpCkBAIC0zMjg3LDcgKzMyODYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRTb29uKCkKICAgICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX21vdXNlUG9zaXRpb25Jc1Vua25vd24pCisgICAgaWYgKCFt
X2xhc3RLbm93bk1vdXNlUG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKQEAgLTMzMTQsNyArMzMxMyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxv
YXRRdWFkJiBxdWFkKQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFxdWFkLmNvbnRhaW5zUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24pKSkKKyAgICBpZiAoIXF1YWQuY29udGFpbnNQb2ludCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24o
KTsKQEAgLTMzNDMsNyArMzM0Miw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3Zl
RXZlbnRUaW1lckZpcmVkKCkKICAgICBib29sIGFsdEtleTsKICAgICBib29sIG1ldGFLZXk7CiAg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtl
eSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFr
ZU1vdXNlTW92ZUV2ZW50KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiwgbV9sYXN0S25vd25Nb3Vz
ZUdsb2JhbFBvc2l0aW9uLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwg
c2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgV2FsbFRpbWU6Om5vdygpLCAwLCBO
b1RhcCk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVudChtX2xhc3RL
bm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSksIG1fbGFzdEtub3duTW91c2VH
bG9iYWxQb3NpdGlvbiwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNo
aWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgTm9U
YXApOwogICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZUV2ZW50KTsKIH0KICNlbmRpZiAvLyAh
RU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0zMzY5LDcgKzMzNjgsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKCkKIAogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1f
ZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS52aWV3KCkpIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRv
d1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CisgICAgICAgICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQ
b3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOwogICAgICAgICAgICAgY29uc3RleHByIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgICAgICAgICBkb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQp
OwogICAgICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoaGl0VHlwZSwg
cmVzdWx0LnRhcmdldEVsZW1lbnQoKSk7CkBAIC0zODY3LDcgKzM4NjYsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZHJhZ2dlZENvbnRlbnRSYW5nZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwogICAgIGlm
IChkcmFnU3RhdGUoKS50eXBlLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikp
CiAgICAgICAgIGRyYWdnZWRDb250ZW50UmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgZWxzZQpAQCAtNDU3Miw3ICs0NTcxLDYg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxl
ZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQKIAogdm9pZCBFdmVudEhhbmRsZXI6OnNldExhc3RL
bm93bk1vdXNlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAg
ICBtX21vdXNlUG9zaXRpb25Jc1Vua25vd24gPSBmYWxzZTsKICAgICBtX2xhc3RLbm93bk1vdXNl
UG9zaXRpb24gPSBldmVudC5wb3NpdGlvbigpOwogICAgIG1fbGFzdEtub3duTW91c2VHbG9iYWxQ
b3NpdGlvbiA9IGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAppbmRleCBmZmI3MzY5NDUwZTQ5MzllYzdiY2FlMmRiYTdiYTkyODVmOGY2NzFiLi5l
OTY2MTM4YTFkZGY1ODg5YzZhMjVhNjg2YzZlOGE3YWFkNTBlODIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9v
bCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4+IG9wZXJhdGlvbk1hc2s7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+PiBvcGVyYXRpb25NYXNrOwogICAgIH07CiAgICAgRHJhZ1RhcmdldFJlc3Bv
bnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgY2FuY2VsRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKQEAg
LTM0MiwxMCArMzQyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNl
bFNlbGVjdGlvbkF1dG9zY3JvbGwoKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hp
ZnRLZXkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RD
dXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOwogCiAjaWYgRU5BQkxF
KEtJTkVUSUNfU0NST0xMSU5HKQotICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiB3aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFu
ZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
U2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwotICAgIE9wdGlvbmFs
PFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIHN0ZDo6
b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRl
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAK
ICAgICBib29sIHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2lkZ2V0JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxh
YmxlQXJlYT4mKTsKIApAQCAtNTY3LDkgKzU2Nyw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0U2l6
ZSBtX29mZnNldEZyb21SZXNpemVDb3JuZXI7IC8vIEluIHRoZSBjb29yZHMgb2YgbV9yZXNpemVM
YXllci4KICAgICAKICAgICBpbnQgbV9jbGlja0NvdW50IHsgMCB9OwotICAgIGJvb2wgbV9tb3Vz
ZVBvc2l0aW9uSXNVbmtub3duIHsgdHJ1ZSB9OyAvLyBGSVhNRTogVXNlIE9wdGlvbmFsPD4gaW5z
dGVhZC4KIAotICAgIEludFBvaW50IG1fbGFzdEtub3duTW91c2VQb3NpdGlvbjsgLy8gU2FtZSBj
b29yZGluYXRlcyBhcyBQbGF0Zm9ybU1vdXNlRXZlbnQ6OnBvc2l0aW9uKCkuCisgICAgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uOyAvLyBTYW1lIGNvb3Jk
aW5hdGVzIGFzIFBsYXRmb3JtTW91c2VFdmVudDo6cG9zaXRpb24oKS4KICAgICBJbnRQb2ludCBt
X2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uOwogICAgIFdhbGxUaW1lIG1fbW91c2VEb3duVGltZXN0YW1wOwpAQCAt
NTk3LDcgKzU5Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKLSAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gbV93aGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC02NDEsNyArNjQwLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0RHJhZyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQXV0b3Njcm9sbGluZyB7IGZhbHNlIH07CiAgICAgSW50
UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3Jk
aW5hdGVzOwotICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Nyb2xs
UG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOworICAgIHN0ZDo6b3B0aW9u
YWw8SW50UG9pbnQ+IG1faW5pdGlhbFRhcmdldEF1dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxl
ZFJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKaW5kZXggZGJmNjM3Y2ZiMjk4MDY2MWFhNjc3MGE3OGE0NDdhZmVkMDM1OWE4Ny4u
ZmVhODIyZjMwMWYwNzk3YWMyYWI1NTcyYzhhNzQ1NjQyN2Y4ZTk4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKQEAgLTMwOSw4ICszMDksOCBAQCB2b2lkIEV2ZW50U291cmNlOjpw
YXJzZUV2ZW50U3RyZWFtKCkKICAgICAgICAgICAgIG1fZGlzY2FyZFRyYWlsaW5nTmV3bGluZSA9
IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxpbmVMZW5n
dGg7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbGluZUxlbmd0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZmllbGRMZW5ndGg7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc2l0aW9u
OyAhbGluZUxlbmd0aCAmJiBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1f
cmVjZWl2ZUJ1ZmZlcltpXSkgewogICAgICAgICAgICAgY2FzZSAnOic6CkBAIC0zNDYsNyArMzQ2
LDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbSgpCiAgICAgICAgIG1fcmVj
ZWl2ZUJ1ZmZlci5yZW1vdmUoMCwgcG9zaXRpb24pOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpw
YXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+
IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBsaW5lTGVuZ3RoKQordm9pZCBFdmVudFNvdXJjZTo6cGFy
c2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBsaW5lTGVuZ3RoKQogewogICAgIGlmICghbGluZUxl
bmd0aCkgewogICAgICAgICBpZiAoIW1fZGF0YS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgKaW5kZXggY2UyNTMwZmMxM2U5ZmEyNDExYjkyYmUxZDdhNmYwY2U0ODMxNTEwYS4u
MTdmYjVmYzFkMzk3MjM3ODY3OTk1OThiZmQ4ZDY1ODgzOTA3NDY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZVJlY29ubmVjdCgpOwogICAgIHZvaWQgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwogICAg
IHZvaWQgcGFyc2VFdmVudFN0cmVhbSgpOwotICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUo
dW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWdu
ZWQgbGluZUxlbmd0aCk7CisgICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBw
b3NpdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxp
bmVMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKTsKIAogICAgIGJvb2wg
cmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggNWJiZjUzYmU4NzkyODRlZWJlODI5OTNhM2NmMzYyYzU2NzFiMGQ4Ny4u
MWFmMjdkODRmMzVhZjBkM2JhMWZiOWRiYWZhMzFlNDNjNjY2MTMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTcxMiwxMiArNzEyLDEyIEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRz
QXdhaXRpbmdOb3RpZmljYXRpb24oKQogICAgICAgICBpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkod29ybGQsIHNjcmlwdC5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBG
cmFtZTo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IEZyYW1l
OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBsb2FkZXIoKS5wYWdlSUQoKTsKIH0KIAot
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBGcmFtZTo6ZnJhbWVJRCgpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRnJhbWU6OmZyYW1lSUQoKSBjb25zdAogewogICAgIHJl
dHVybiBsb2FkZXIoKS5mcmFtZUlEKCk7CiB9CkBAIC04NDUsNyArODQ1LDcgQEAgRG9jdW1lbnQq
IEZyYW1lOjpkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIHJldHVy
biByZXN1bHQuaW5uZXJOb2RlKCkgPyAmcmVzdWx0LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDog
MDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0
IEludFBvaW50JiBmcmFtZVBvaW50KQorc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWU6
OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiB7CiAgICAgYXV0byBw
b3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpOwogCkBAIC04NjYs
NyArODY2LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNv
bnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LXZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvciwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZp
ZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvbG9y
PiYgYmFja2dyb3VuZENvbG9yLAogICAgIGNvbnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwg
Y29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsCiAgICAgYm9vbCB1c2VGaXhl
ZExheW91dCwgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jp
em9udGFsTG9jaywKICAgICBTY3JvbGxiYXJNb2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9v
bCB2ZXJ0aWNhbExvY2spCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFu
ZFRleHRab29tRmFjdG9ycyhmbG9hdCBwYWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21GYWN0
b3IKICAgICBpZiAoaXM8U1ZHRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIWRvd25jYXN0PFNWR0Rv
Y3VtZW50PigqZG9jdW1lbnQpLnpvb21BbmRQYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPiBzY3JvbGxQb3NpdGlvbkFmdGVyWm9vbWVk
OworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+IHNjcm9sbFBvc2l0aW9uQWZ0ZXJa
b29tZWQ7CiAgICAgaWYgKG1fcGFnZVpvb21GYWN0b3IgIT0gcGFnZVpvb21GYWN0b3IpIHsKICAg
ICAgICAgLy8gQ29tcHV0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdpdGggc2NhbGUgYWZ0ZXIgem9v
bWluZyB0byBzdGF5IHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSBjb250ZW50LgogICAgICAgICBp
ZiAoRnJhbWVWaWV3KiB2aWV3ID0gdGhpcy0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXgg
NmY5ZjJlZDk0MjJiYjM5YzQ0ZmEzMzk3Y2U4ODY0NGU4ZjcxMmQwYy4uMzdiMWFmMjExZTM0MDk3
NGUwYzUyN2JlZThiMTczYjY2NjhlZWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTQwLDcgKzE0
MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXaXRoU2ltcGxlSFRN
TERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29uc3QgT3B0aW9u
YWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVh
dGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvbG9yPiYgYmFja2dy
b3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0
IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgICAgICBib29sIHVzZUZpeGVk
TGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIGhvcml6
b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRv
LCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKQEAgLTE3OCw4ICsxNzgsOCBAQCBwdWJsaWM6
CiAgICAgU2NyaXB0Q29udHJvbGxlciYgc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAg
ICBjb25zdCBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVu
ZGVyIHRyZWUgZm9yIHRoZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBSZW5kZXJXaWRnZXQqIG93bmVyUmVuZGVyZXIoKSBjb25zdDsgLy8gUmVu
ZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhpcyBmcmFtZS4KQEAgLTI3MCw3
ICsyNzAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpIGNvbnN0
OwogICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1Bv
aW50KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQ
b2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJh
bWVQb2ludCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJv
dmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBIVE1MVGFibGVDZWxs
RWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwogICAgIFN0
cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
YWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0lu
Q2VsbEFib3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyZjRjZTEzNjYxYzc2
YTBjMzg5MzlmMDFjZDI1ZDIzOWY3ZDg0YjExLi4yYTk1NmMyOWEzNzRlMGIxZDg3MzRjMWM3ZTg5
ZWQ0ODRhYWVlZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zODIsNyArMzgy
LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlQmFzZUJhY2tncm91bmRDb2xvcigpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fdXNlc0RhcmtBcHBlYXJhbmNlID0gdXNpbmdEYXJrQXBw
ZWFyYW5jZTsKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAobV9pc1RyYW5zcGFyZW50
KQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CkBA
IC0xNjg4LDcgKzE2ODgsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QmFzZUxheW91dFZpZXdwb3J0
T3JpZ2luKExheW91dFBvaW50IG9yaWdpbiwgVHJpZ2dlckxheW91dE9yTgogICAgIH0KIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExh
eW91dFJlY3Q+IHJlY3QsIFRyaWdnZXJMYXlvdXRPck5vdCBsYXlvdXRUcmlnZ2VyaW5nKQordm9p
ZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8
TGF5b3V0UmVjdD4gcmVjdCwgVHJpZ2dlckxheW91dE9yTm90IGxheW91dFRyaWdnZXJpbmcpCiB7
CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTcwNiw3ICsxNzA2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QsIFRyaWdnZXIKICAg
ICAgICAgc2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiB9CiAKLXZv
aWQgRnJhbWVWaWV3OjpzZXRWaXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlv
dXRSZWN0PiByZWN0KQordm9pZCBGcmFtZVZpZXc6OnNldFZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdCkKIHsKICAgICBtX3Zpc3VhbFZpZXdw
b3J0T3ZlcnJpZGVSZWN0ID0gcmVjdDsKIH0KQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29s
b3IpCiAgICAgc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25h
bDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkoY29uc3Qgc3RkOjpvcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xv
cikKIHsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQogICAgIENvbG9yIGJhc2VCYWNr
Z3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVfb3IoUmVuZGVyVGhlbWU6OnNpbmds
ZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3VuZCwg
c3R5bGVDb2xvck9wdGlvbnMoKSkpOwpAQCAtNDkzMCwzMCArNDkzMCwzMCBAQCBJbnRQb2ludCBG
cmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmIHBhcmVu
dFBvaW50KSBjb25zdAogICAgIHJldHVybiBwYXJlbnRQb2ludDsKIH0KIAotZmxvYXQgRnJhbWVW
aWV3Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0
aXZlWm9vbSkgY29uc3QKK2Zsb2F0IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3Ioc3RkOjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAv
LyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Va
b29tRmFjdG9yKCkuIAogICAgIHJldHVybiBlZmZlY3RpdmVab29tLnZhbHVlX29yKGZyYW1lKCku
cGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAotZmxv
YXQgRnJhbWVWaWV3OjphYnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9h
dD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKK2Zsb2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3Vt
ZW50U2NhbGVGYWN0b3Ioc3RkOjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QK
IHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3Jz
IGluIHBhZ2Vab29tRmFjdG9yKCkuIAogICAgIHJldHVybiAxIC8gZG9jdW1lbnRUb0Fic29sdXRl
U2NhbGVGYWN0b3IoZWZmZWN0aXZlWm9vbSk7CiB9CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFi
c29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0IHJlY3QsIE9wdGlvbmFsPGZsb2F0PiBlZmZl
Y3RpdmVab29tKSBjb25zdAorRmxvYXRSZWN0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50
UmVjdChGbG9hdFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkg
Y29uc3QKIHsKICAgICByZWN0LnNjYWxlKGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKGVm
ZmVjdGl2ZVpvb20pKTsKICAgICByZXR1cm4gcmVjdDsKIH0KIAotRmxvYXRQb2ludCBGcmFtZVZp
ZXc6OmFic29sdXRlVG9Eb2N1bWVudFBvaW50KEZsb2F0UG9pbnQgcCwgT3B0aW9uYWw8ZmxvYXQ+
IGVmZmVjdGl2ZVpvb20pIGNvbnN0CitGbG9hdFBvaW50IEZyYW1lVmlldzo6YWJzb2x1dGVUb0Rv
Y3VtZW50UG9pbnQoRmxvYXRQb2ludCBwLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVa
b29tKSBjb25zdAogewogICAgIHJldHVybiBwLnNjYWxlZChhYnNvbHV0ZVRvRG9jdW1lbnRTY2Fs
ZUZhY3RvcihlZmZlY3RpdmVab29tKSk7CiB9CiAKLUZsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29s
dXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCByZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZl
Wm9vbSkgY29uc3QKK0Zsb2F0UmVjdCBGcmFtZVZpZXc6OmFic29sdXRlVG9DbGllbnRSZWN0KEZs
b2F0UmVjdCByZWN0LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tKSBjb25zdAog
ewogICAgIHJldHVybiBkb2N1bWVudFRvQ2xpZW50UmVjdChhYnNvbHV0ZVRvRG9jdW1lbnRSZWN0
KHJlY3QsIGVmZmVjdGl2ZVpvb20pKTsKIH0KQEAgLTUxMzcsNyArNTEzNyw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIHdpZGdldCkKICAgICBTY3JvbGxWaWV3OjpyZW1v
dmVDaGlsZCh3aWRnZXQpOwogfQogCi1ib29sIEZyYW1lVmlldzo6aGFuZGxlV2hlZWxFdmVudEZv
clNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFs
PFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIEZyYW1lVmlldzo6
aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVT
dGF0ZSkKIHsKICAgICAvLyBOb3RlIHRoYXQgdG8gYWxsb3cgZm9yIHJ1YmJlci1iYW5kIG92ZXIt
c2Nyb2xsIGJlaGF2aW9yLCBldmVuIG5vbi1zY3JvbGxhYmxlIHZpZXdzCiAgICAgLy8gc2hvdWxk
IGhhbmRsZSB3aGVlbCBldmVudHMuCkBAIC01NDYyLDcgKzU0NjIsNyBAQCB2b2lkIEZyYW1lVmll
dzo6bm90aWZ5V2lkZ2V0cyhXaWRnZXROb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogICAgICAg
ICB3aWRnZXQtPm5vdGlmeVdpZGdldChub3RpZmljYXRpb24pOwogfQogCi12b2lkIEZyYW1lVmll
dzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KQordm9pZCBGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogewogICAgIGlmIChtX3ZpZXdFeHBvc2VkUmVjdCA9PSB2
aWV3RXhwb3NlZFJlY3QpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IDAyYTkwNjhjN2MzNzAxZDFmYjMzZDNmNWMwODMyMjJkZmFiYWYxOTEuLmI2OTEyN2ZkMWI2
NGMyYjQxMmRkMjNhOGRjMjg4NGI0YjYzM2EwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJh
c2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tn
cm91bmRDb2xvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoY29uc3Qgc3RkOjpvcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAK
ICAgICBlbnVtIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVk
QmFja2dyb3VuZE1vZGVOb25lICAgICAgICAgID0gMCwKQEAgLTI3MywxMSArMjczLDExIEBAIHB1
YmxpYzoKICAgICAKICAgICAvLyBJZiBzZXQsIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCAibV9sYXlv
dXRWaWV3cG9ydE9yaWdpbiwgc2l6ZSBvZiBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2siIHJlY3Qu
CiAgICAgLy8gVXNlZCB3aXRoIGRlbGVnYXRlZCBzY3JvbGxpbmcgKGkuZS4gaU9TKS4KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFs
PExheW91dFJlY3Q+LCBUcmlnZ2VyTGF5b3V0T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6Olll
cyk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9wdGlv
bmFsPExheW91dFJlY3Q+LCBUcmlnZ2VyTGF5b3V0T3JOb3QgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6
Olllcyk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBsYXlvdXRWaWV3cG9ydE92ZXJy
aWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Q7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Qo
T3B0aW9uYWw8TGF5b3V0UmVjdD4pOwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IHZpc3VhbFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxWaWV3cG9ydE92ZXJy
aWRlUmVjdDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlzdWFsVmlld3BvcnRPdmVy
cmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0PiB2aXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Q7IH0KIAogICAgIC8vIFRoZXNlIGFyZSBpbiBkb2N1
bWVudCBjb29yZGluYXRlcywgdW5hZmZlY3RlZCBieSBwYWdlIHNjYWxlIChidXQgYWZmZWN0ZWQg
Ynkgem9vbWluZykuCiAgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9y
dFJlY3QoKSBjb25zdDsKQEAgLTQ5MywxMyArNDkzLDEzIEBAIHB1YmxpYzoKICAgICBGbG9hdFBv
aW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBmaW5h
bDsKICAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50
JikgY29uc3QgZmluYWw7CiAKLSAgICBmbG9hdCBkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3Rv
cihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7Ci0g
ICAgZmxvYXQgYWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVm
ZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIGZsb2F0IGRvY3VtZW50VG9B
YnNvbHV0ZVNjYWxlRmFjdG9yKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OworICAgIGZsb2F0IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFj
dG9yKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJl
Y3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1l
bnRQb2ludChGbG9hdFBvaW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9E
b2N1bWVudFJlY3QoRmxvYXRSZWN0LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29t
ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGFi
c29sdXRlVG9Eb2N1bWVudFBvaW50KEZsb2F0UG9pbnQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVm
ZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgRmxvYXRSZWN0IGFic29s
dXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCwgT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRvQ2xpZW50UmVj
dChGbG9hdFJlY3QsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogCiAgICAgRmxvYXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3Qo
RmxvYXRSZWN0KSBjb25zdDsKQEAgLTU2OCw3ICs1NjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBleGlzdHMgZm9yIHBvcnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZl
bnRzIG1hbnVhbGx5LgogICAgIC8vIE9uIE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Ny
b2xsVmlldyBqdXN0IGRvZXMgdGhlIHNjcm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZv
cm1zCiAgICAgLy8gd2UgbmVlZCB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3Jv
bGwgb3Vyc2VsdmVzLgotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4p
IGZpbmFsOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikg
ZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
VGVzdGluZ0VuYWJsZWQoYm9vbCk7CiAKQEAgLTY0MCw4ICs2NDAsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gb2YgdGhlIHZpZXcgaXMgYWN0dWFsbHkgZXhwb3NlZCBvbiBzY3JlZW4gKHRha2luZyBpbnRv
IGFjY291bnQKICAgICAvLyBjbGlwcGluZyBieSBvdGhlciBVSSBlbGVtZW50cyksIHdoZXJlYXMg
dmlzaWJsZUNvbnRlbnRSZWN0IGlzCiAgICAgLy8gaW50ZXJuYWwgdG8gV2ViQ29yZSBhbmQgZG9l
c24ndCByZXNwZWN0IHRob3NlIHRoaW5ncy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+KTsKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIGZpbmFsOwpAQCAt
ODQzLDggKzg0Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRMYXlvdXQoV2Vha1B0cjxSZW5k
ZXJFbGVtZW50PiBsYXlvdXRSb290KTsKIAogICAgIHN0cnVjdCBPdmVycmlkZVZpZXdwb3J0U2l6
ZSB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gd2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPGludD4g
aGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGg7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE92
ZXJyaWRlVmlld3BvcnRTaXplJiByaHMpIGNvbnN0IHsgcmV0dXJuIHJocy53aWR0aCA9PSB3aWR0
aCAmJiByaHMuaGVpZ2h0ID09IGhlaWdodDsgfQogICAgIH07CkBAIC04OTgsMTAgKzg5OCwxMCBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bvc3RMYXlv
dXRDYWxsYmFja1F1ZXVlOwogCiAgICAgTGF5b3V0UG9pbnQgbV9sYXlvdXRWaWV3cG9ydE9yaWdp
bjsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0
OwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IG1fdmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Q7
IC8vIFVzZWQgd2hlbiB0aGUgaU9TIGtleWJvYXJkIGlzIHNob3dpbmcuCisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRSZWN0PiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0UmVjdD4gbV92aXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdDsgLy8gVXNl
ZCB3aGVuIHRoZSBpT1Mga2V5Ym9hcmQgaXMgc2hvd2luZy4KIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1f
dmlld0V4cG9zZWRSZWN0OwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG1fcGFpbnRC
ZWhhdmlvcjsKIApAQCAtOTE2LDEwICs5MTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNl
Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QgeyBmYWxzZSB9OwogCiAgICAgSW50UmVjdCBt
X2N1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1f
Y3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9j
dXN0b21TaXplRm9yUmVzaXplRXZlbnQ7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPE92ZXJyaWRl
Vmlld3BvcnRTaXplPiBtX292ZXJyaWRlVmlld3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8
T3ZlcnJpZGVWaWV3cG9ydFNpemU+IG1fb3ZlcnJpZGVWaWV3cG9ydFNpemU7CiAKICAgICAvLyBU
aGUgdmlldyBzaXplIHdoZW4gYXV0b3NpemluZy4KICAgICBJbnRTaXplIG1fYXV0b1NpemVDb25z
dHJhaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5k
ZXggNDMwMTg0OWRkN2Q2ZTE3ZDQ3MGZmYmExODA4NmIxNDQzMjlhNWRjOS4uNjJkMGU2N2Q1NWY5
MDJhNjA4YzFjYjc0NjQ4NTJkOWIyMjZkODAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ds
b2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBHbG9iYWxGcmFt
ZUlkZW50aWZpZXIgewogICAgIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEds
b2JhbEZyYW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVy
ID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7
CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAppbmRleCA4NjI5MzcwNTlh
NDM0Y2ZkMDExMmMyM2EyM2IzZGMwNjBjY2NmNTM2Li5jMDQ2N2Q3YzdkYzA4YTZiYjZiYmM5MGZh
OTQyNzQ5OGJhNmNiYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lk
ZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmll
ciB7CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImIGEsIGNvbnN0IEds
b2JhbFdpbmRvd0lkZW50aWZpZXImIGIpCkBAIC02NiwxNCArNjYsMTQgQEAgdm9pZCBHbG9iYWxX
aW5kb3dJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZpZXI+IEds
b2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxHbG9iYWxXaW5kb3dJZGVudGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4g
cHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4g
cHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAg
ICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2luZG93SWRlbnRpZmllcj4gd2luZG93SWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdpbmRvd0lkZW50aWZpZXI+IHdpbmRvd0lkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOwogICAgIGlmICghd2luZG93SWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKaW5kZXggNzMxY2MwNmM5YzE2YWQ1MDI5OWY3OWZiMmEwYjRiODE2
ZTFkZDFhYi4uMTRiYWVhMGRmZTQzNTZiYjk3OTU4ZWY3MzRkMGJjM2RkZTM2YTc5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTIzNyw3ICsy
MzcsNyBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjpyb290RGVzdHJveWVkKCkKICAgICBt
X3Jvb3QgPSBudWxscHRyOwogfQogCi1PcHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+
IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3dUaW1lc3RhbXAoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3dUaW1l
c3RhbXAoKSBjb25zdAogewogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaApp
bmRleCBkYmYzN2ExNTU1YmM4ODQ2OWNmZmJhMTFiYWQ5NDkzY2ZjZTVhNmIxLi5mNTA5ZDM1NjUx
OGQyMTc0YTkwYzUwMzlkMTE2YjM4MTBjN2RmY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlci5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIENvbnRhaW5lck5v
ZGU7CiAKIHN0cnVjdCBJbnRlcnNlY3Rpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiB7CiAgICAgV2Vh
a1B0cjxJbnRlcnNlY3Rpb25PYnNlcnZlcj4gb2JzZXJ2ZXI7Ci0gICAgT3B0aW9uYWw8c2l6ZV90
PiBwcmV2aW91c1RocmVzaG9sZEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2
aW91c1RocmVzaG9sZEluZGV4OwogfTsKIAogc3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSB7CkBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgewog
Y2xhc3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcnNlY3Rp
b25PYnNlcnZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxJbnRlcnNlY3Rpb25PYnNlcnZlcj4gewogcHVibGljOgogICAgIHN0cnVjdCBJbml0IHsKLSAg
ICAgICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxEb2N1bWVudD4+
PiByb290OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8RG9jdW1lbnQ+Pj4gcm9vdDsKICAgICAgICAgU3RyaW5nIHJvb3RNYXJnaW47CiAgICAg
ICAgIFZhcmlhbnQ8ZG91YmxlLCBWZWN0b3I8ZG91YmxlPj4gdGhyZXNob2xkOwogICAgIH07CkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc09ic2VydmF0aW9uVGFyZ2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2YXRpb25UYXJnZXRzLnNpemUoKTsgfQogICAgIHZvaWQg
cm9vdERlc3Ryb3llZCgpOwogCi0gICAgT3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRz
PiBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcz4gbm93VGltZXN0YW1wKCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1ZXVl
ZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiYmKTsKICAgICB2b2lkIG5vdGlm
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ckVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnku
aAppbmRleCBmNzAzYjJmOWIyMWMxZGM5MWFmOTYwOTVjYjlkNGQ0Y2I1YmYwNDc4Li5iNzk5NjQy
Njg0YzQ3MTk2Mjg2MTQxNDViYzdhODNjYTNlOWRiNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIGRvdWJsZSB0aW1lOwotICAgICAgICBP
cHRpb25hbDxET01SZWN0SW5pdD4gcm9vdEJvdW5kczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxE
T01SZWN0SW5pdD4gcm9vdEJvdW5kczsKICAgICAgICAgRE9NUmVjdEluaXQgYm91bmRpbmdDbGll
bnRSZWN0OwogICAgICAgICBET01SZWN0SW5pdCBpbnRlcnNlY3Rpb25SZWN0OwogICAgICAgICBk
b3VibGUgaW50ZXJzZWN0aW9uUmF0aW87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDU1ZWEwMmFjZWNmYzgwZTdlZmQ2MWY1
YmJhOWY0MDhiMDVkZTNkNTQuLmFlMmY4NmM2NTI1ODRkOGE4MWVmZTM4NTljZjJmNzA1NDQ3NGNm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbS5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBNZWRpYUNvbnRyb2xzQ29udGV4dE1l
bnVJdGVtIHsKICAgICBWZWN0b3I8TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4gY2hpbGRy
ZW47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlh
Q29udHJvbHNDb250ZXh0TWVudUl0ZW0+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CkBAIC01OCwxMCArNTgsMTAgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+IE1lZGlhQ29udHJvbHND
b250ZXh0TWVudUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxN
ZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVt
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUp
IFwKLSAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgc3RkOjpvcHRpb25hbDx0eXBlPiBu
YW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBj
NTQ4MzM5MWRlYWNiZTZmNjgzZTI0YjI5NjgzMDdjOGQ4MGIzZGZlLi45ZGFiZTE1OTZjNDFhNzNl
ZDBlN2Q1NjU5ZDMyYmJiOWM2YzUyYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBA
IC0xMTAsNyArMTEwLDcgQEAgYm9vbCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8VVJMPiBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VVJMPiBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChk
YXRhLnVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE1NSw3
ICsxNTUsNyBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTaGFyZURhdGEmIGRhdGEsIFJlZjxEZWZlcnJlZFBybwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8VVJMPiB1cmwgPSBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoZG9j
dW1lbnQsIGRhdGEpOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmwgPSBzaGFyZWFibGVVUkxG
b3JTaGFyZURhdGEoZG9jdW1lbnQsIGRhdGEpOwogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCA5OWJhMzkyNmM0YWJlODdmNmE0MGMxZGQyOWY2Y2FhODg1NGM2YzViLi43YTllOWNj
YjJiYWRjOTkyYzE2NjU4NjNkMmEyNzU5NjM0YTIwNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTQzNiw3ICs0MzYsNyBAQCBWaWV3cG9ydEFyZ3VtZW50cyBQYWdlOjp2aWV3cG9ydEFyZ3VtZW50
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1haW5GcmFtZSgpLmRvY3VtZW50KCkgPyBtYWluRnJhbWUo
KS5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsK
IH0KIAotdm9pZCBQYWdlOjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlv
bmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3BvcnRBcmd1bWVudHMpCit2b2lkIFBhZ2U6OnNl
dE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3Qgc3RkOjpvcHRpb25hbDxWaWV3cG9ydEFy
Z3VtZW50cz4mIHZpZXdwb3J0QXJndW1lbnRzKQogewogICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50
cyA9PSBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpCiAgICAgICAgIHJldHVybjsKQEAgLTY2
Myw3ICs2NjMsNyBAQCBib29sIFBhZ2U6OnNob3dBbGxQbHVnaW5zKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWlubGluZSBPcHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExp
c3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYs
IERvY3VtZW50Jj4+ICBQYWdlOjp0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkKIHsKICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgp
KQpAQCAtNzczLDcgKzc3Myw3IEBAIGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFBhZ2U6OnJhbmdlT2ZTdHJpbmco
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJl
bmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmVmZXJlbmNlUmFuZ2UsIEZpbmRPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0xMTkwLDcgKzExOTAsNyBAQCB2b2lkIFBhZ2U6OnNjcmVlblByb3BlcnRpZXNEaWRD
aGFuZ2UoKQogICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lk
IFBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQs
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQg
UGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwg
c3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7
CiAgICAgaWYgKGRpc3BsYXlJRCA9PSBtX2Rpc3BsYXlJRCAmJiBub21pbmFsRnJhbWVzUGVyU2Vj
b25kID09IG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybjsK
QEAgLTEyOTEsNyArMTI5MSw3IEBAIGJvb2wgUGFnZTo6aXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSBj
b25zdAogICAgIHJldHVybiAhaXNVdGlsaXR5UGFnZSgpICYmIG5vblV0aWxpdHlQYWdlQ291bnQg
PT0gMTsKIH0KIAotdm9pZCBQYWdlOjpzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JU
ZXN0aW5nKE9wdGlvbmFsPGJvb2w+IGlzRW5hYmxlZCkKK3ZvaWQgUGFnZTo6c2V0TG93UG93ZXJN
b2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGluZyhzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRW5hYmxl
ZCkKIHsKICAgICAvLyBSZW1vdmUgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIHNvIGhh
bmRsZUxvd01vZGVQb3dlckNoYW5nZSgpIGNhbiBkbyBpdHMgd29yay4KICAgICBtX3Rocm90dGxp
bmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZy5yZW1vdmUoVGhyb3R0bGluZ1JlYXNvbjo6TG93
UG93ZXJNb2RlKTsKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25zKCkKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBQ
YWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVGcmFtZXNQZXJTZWNvbmQoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IFBhZ2U6OnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0
ZUZyYW1lc1BlclNlY29uZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZChtX3Rocm90dGxpbmdSZWFzb25zLCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vj
b25kLCBzZXR0aW5ncygpLnByZWZlclBhZ2VSZW5kZXJpbmdVcGRhdGVzTmVhcjYwRlBTRW5hYmxl
ZCgpKTsKIH0KQEAgLTMyMzAsNyArMzIzMCw3IEBAIGJvb2wgUGFnZTo6dXNlRGFya0FwcGVhcmFu
Y2UoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2VP
dmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1ZU92ZXJyaWRlKQordm9pZCBQYWdlOjpzZXRVc2VE
YXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmFsdWVPdmVycmlkZSkK
IHsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQogICAgIGlmICh2YWx1ZU92ZXJyaWRl
ID09IG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOTE3YTFh
ZDc2OWQ5NGNiMGVjMzUxNjljMWRmMDkwZDc2OTU0YTM5Mi4uNjU0ODMzYmJlOTMzMzIxZTkxYmVj
YzFlZGM5MmVjYzFmMDVjNGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI1MCw4ICsyNTAsOCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+
IGRpc2FibGVkQWRhcHRhdGlvbnMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWaWV3cG9y
dEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0OwogCi0gICAgY29uc3QgT3B0aW9u
YWw8Vmlld3BvcnRBcmd1bWVudHM+JiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdw
b3J0QXJndW1lbnRzPiYpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVu
dHM+JiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+
Jik7CiAKICAgICBzdGF0aWMgdm9pZCByZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSgpOwpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmV2ZWFsQ3VycmVudFNlbGVj
dGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdl
T2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBzZWFy
Y2hSYW5nZSwgRmluZE9wdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHNlYXJjaFJhbmdlLCBGaW5kT3B0aW9ucyk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRP
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBtYXJrQWxsTWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGJv
b2wgc2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm9NYXRjaEFmdGVyVXNlclNlbGVjdGlvbiBpZiB0aGVy
ZSBpcyBubyBtYXRjaGluZyB0ZXh0IGFmdGVyIHRoZSB1c2VyIHNlbGVjdGlvbi4KICAgICBzdHJ1
Y3QgTWF0Y2hpbmdSYW5nZXMgewogICAgICAgICBWZWN0b3I8U2ltcGxlUmFuZ2U+IHJhbmdlczsK
LSAgICAgICAgaW50IGluZGV4Rm9yU2VsZWN0aW9uIHsgMCB9OyAvLyBGSVhNRTogQ29uc2lkZXIg
T3B0aW9uYWw8dW5zaWduZWQ+IG9yIHVuc2lnbmVkIGZvciB0aGlzIGluc3RlYWQuCisgICAgICAg
IGludCBpbmRleEZvclNlbGVjdGlvbiB7IDAgfTsgLy8gRklYTUU6IENvbnNpZGVyIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG9yIHVuc2lnbmVkIGZvciB0aGlzIGluc3RlYWQuCiAgICAgfTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBOb01hdGNoQWZ0ZXJVc2VyU2VsZWN0aW9uID0gLTE7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWF0Y2hpbmdSYW5nZXMgZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhDb3VudCk7CkBAIC00MjIsMTQgKzQyMiwx
NCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbml0aWFsU2NhbGVJZ25v
cmluZ0NvbnRlbnRTaXplKGZsb2F0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyZWVu
UHJvcGVydGllc0RpZENoYW5nZSgpOwotICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQpOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5SUQ7IH0KLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFs
RnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1Bl
clNlY29uZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9t
aW5hbEZyYW1lc1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQ7IH0KIAogICAgIC8vIFRoaXMgY2FuIHJldHVybiBudWxsb3B0IGlmIHRocm90
dGxpbmcgcmVhc29ucyByZXN1bHQgaW4gYSBmcmVxdWVuY3kgbGVzcyB0aGFuIG9uZSwgaW4gd2hp
Y2ggY2FzZQogICAgIC8vIHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUludGVydmFsIHByb3ZpZGVz
IHRoZSBmcmVxdWVuY3kuCiAgICAgLy8gRklYTUU6IEhhdmUgYSBzaW5nbGUgZnVuY3Rpb24gdGhh
dCByZXR1cm5zIGEgVmFyaWFudDw+LgotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gcHJl
ZmVycmVkUmVuZGVyaW5nVXBkYXRlRnJhbWVzUGVyU2Vjb25kKCkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUZyYW1lc1Bl
clNlY29uZCgpIGNvbnN0OwogICAgIFNlY29uZHMgcHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50
ZXJ2YWwoKSBjb25zdDsKIAogICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG9wQ29udGVudEluc2V0OyB9CkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
ZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UsIGJvb2wg
dXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpOwogICAgIGJvb2wgZGVmYXVsdFVzZURhcmtB
cHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsgfQotICAgIHZv
aWQgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9p
ZCBzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ1dpZHRoOyB9CkBAIC01MjQsNyArNTI0
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgY29uc3QgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIGFwcGxpY2F0aW9uTWFu
aWZlc3QoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7IH0KKyAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBhcHBsaWNhdGlvbk1hbmlmZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQpAQCAtNzg3LDExICs3ODcsMTEgQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9y
OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJv
b2wgZGlzYWJsZWQpIHsgbV9yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yID0g
ZGlzYWJsZWQ7IH0KIAotICAgIE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVu
dFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhh
dmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRsaW5n
KSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdC
ZWhhdmlvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlv
ck92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
KHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHRocm90dGxpbmcpIHsgbV9l
dmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlID0gdGhyb3R0bGluZzsgfQogCi0gICAgT3B0
aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IGNvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGU7IH0KLSAgICB2b2lkIHNldENv
bXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IHBvbGlj
eSkgeyBtX2NvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUgPSBwb2xpY3k7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPENvbXBvc2l0aW5nUG9saWN5PiBjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRD
b21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+
IHBvbGljeSkgeyBtX2NvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUgPSBwb2xpY3k7IH0KIAogI2lm
IEVOQUJMRShXRUJHTCkKICAgICBXZWJHTFN0YXRlVHJhY2tlciogd2ViR0xTdGF0ZVRyYWNrZXIo
KSBjb25zdCB7IHJldHVybiBtX3dlYkdMU3RhdGVUcmFja2VyLmdldCgpOyB9CkBAIC04MTIsNyAr
ODEyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKFRocm90dGxpbmdSZWFzb246
Okxvd1Bvd2VyTW9kZSk7IH0KICAgICBib29sIGNhblVwZGF0ZVRocm90dGxpbmdSZWFzb24oVGhy
b3R0bGluZ1JlYXNvbiByZWFzb24pIGNvbnN0IHsgcmV0dXJuICFtX3Rocm90dGxpbmdSZWFzb25z
T3ZlcnJpZGVuRm9yVGVzdGluZy5jb250YWlucyhyZWFzb24pOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFs
PGJvb2w+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWRP
dmVycmlkZUZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDxib29sPik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoYm9v
bCk7CiAKICAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gdGhyb3R0bGluZ1JlYXNvbnMo
KSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxpbmdSZWFzb25zOyB9CkBAIC04NzcsNyArODc3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIGZpbmRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgU2hvdWxkSGlnaGxpZ2h0
TWF0Y2hlcywgU2hvdWxkTWFya01hdGNoZXMpOwogCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVu
ZXImLCBEb2N1bWVudCY+PiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgdm9pZCBwbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVy
RmlyZWQoKTsKQEAgLTk1MCw3ICs5NTAsNyBAQCBwcml2YXRlOgogICAgIFJUQ0NvbnRyb2xsZXIg
bV9ydGNDb250cm9sbGVyOwogCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAw
IH07Ci0gICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVz
UGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlO
b21pbmFsRnJhbWVzUGVyU2Vjb25kOwogCiAgICAgaW50IG1fbmVzdGVkUnVuTG9vcENvdW50IHsg
MCB9OwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3VubmVzdENhbGxiYWNrOwpAQCAtOTg3
LDcgKzk4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFuY2UgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV91c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3VzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsKLSAgICBPcHRpb25h
bDxib29sPiBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRP
U0laSU5HKQogICAgIGZsb2F0IG1fdGV4dEF1dG9zaXppbmdXaWR0aCB7IDAgfTsKQEAgLTEwMDUs
NyArMTAwNSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXNlclN0eWxlU2hlZXRQYXRoOwog
ICAgIG11dGFibGUgU3RyaW5nIG1fdXNlclN0eWxlU2hlZXQ7CiAgICAgbXV0YWJsZSBib29sIG1f
ZGlkTG9hZFVzZXJTdHlsZVNoZWV0IHsgZmFsc2UgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFdh
bGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZTsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lOwog
CiAgICAgU3RyaW5nIG1fY2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQ7CiAKQEAgLTEx
MTMsMTUgKzExMTMsMTUgQEAgcHJpdmF0ZToKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OkxUUiB9OwogICAgIAogICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIE9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+IG1fY29tcG9zaXRpbmdQb2xpY3lP
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb21wb3Np
dGluZ1BvbGljeT4gbV9jb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFBlcmZvcm1hbmNlTW9uaXRvcj4gbV9wZXJmb3JtYW5jZU1vbml0b3I7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExvd1Bvd2VyTW9kZU5vdGlmaWVyPiBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVy
OwogICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zOwog
ICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJp
ZGVuRm9yVGVzdGluZzsKIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpb24+IG1fbmF2aWdhdGlvblRv
TG9nV2hlblZpc2libGU7CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uPiBtX25hdmlnYXRp
b25Ub0xvZ1doZW5WaXNpYmxlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTG9n
Z2luZz4gbV9wZXJmb3JtYW5jZUxvZ2dpbmc7CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQpAQCAtMTE0NCwxMCArMTE0NCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVz
dD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25N
YW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxW
aWV3cG9ydEFyZ3VtZW50cz4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOworICAgIHN0ZDo6
b3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsK
IAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgUmVmUHRyPERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI+IG1fZGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlcjsKQEAgLTExNTksNyArMTE1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
czsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0lu
amVjdGlvbjsKLSAgICBPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtI
b3N0czsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29y
a0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVu
c2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9Owog
ICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKQEAgLTExNzAsNyAr
MTE3MCw3IEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRh
dGVUaW1lc3RhbXA7CiAKICAgICBDb2xvciBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPENvbG9yPiBtX3NhbXBsZWRQYWdlVG9wQ29sb3I7CisgICAgc3Rk
OjpvcHRpb25hbDxDb2xvcj4gbV9zYW1wbGVkUGFnZVRvcENvbG9yOwogCiAgICAgY29uc3QgYm9v
bCBtX2h0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgbXV0YWJsZSBNZWRpYVNlc3Np
b25Hcm91cElkZW50aWZpZXIgbV9tZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCAyMDc3MGY3OTM5NDkyODI3Nzkw
MmNhYmNmMTJjZWNhZmU0NzViOTgxLi43MjBhNzIzNTM2NjAxNjY0Nzc0Y2FhMTk3ZWUyY2ExZmUx
NmUzMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKQEAgLTEx
MCw3ICsxMTAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU2FtcGxlTG9jYXRpb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9j
dW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYWI8Zmxv
YXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24p
CiB7CiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVk
IFBhZ2UgVG9wIENvbG9yOiBob29rIGludG8gcGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtp
bmcgc25hcHNob3RzKQogCkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIExhYjxmbG9hdD4gYXZl
cmFnZUNvbG9yKExhYjxmbG9hdD4gY29sb3JzW10sIHNpemVfdCBjb3VudCkKICAgICB9OwogfQog
Ci1PcHRpb25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2Up
CitzdGQ6Om9wdGlvbmFsPENvbG9yPiBQYWdlQ29sb3JTYW1wbGVyOjpzYW1wbGVUb3AoUGFnZSYg
cGFnZSkKIHsKICAgICAvLyBJZiBgc3RkOjpudWxsb3B0YCBpcyByZXR1cm5lZCB0aGVuIHRoYXQg
bWVhbnMgdGhhdCBubyBzYW1wbGVzIHdlcmUgdGFrZW4gKGkuZS4gdGhlIGBQYWdlYCBpcyBub3Qg
cmVhZHkgeWV0KS4KICAgICAvLyBJZiBhbiBpbnZhbGlkIGBDb2xvcmAgaXMgcmV0dXJuZWQgdGhl
biB0aGF0IG1lYW5zIHRoYXQgc2FtcGxlcyBXZXJlIHRha2VuIGJ1dCB0aGV5IHdlcmUgdG9vIGRp
ZmZlcmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmgKaW5kZXggYTlmZDkx
NjgyMGI4ZTQ4ZGQ3ZTZkZDBmNmQwZDhlMzRkY2QxYTA2OS4uNWUxOGVhNDY3YTAyMWRiMTgwYjlj
NWYzYzc2NDJlNmY5NWE3MTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29sb3JTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVy
LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUGFnZTsKIAogY2xhc3MgUGFnZUNvbG9yU2FtcGxl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIE9wdGlvbmFsPENvbG9yPiBzYW1wbGVUb3AoUGFnZSYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzYW1wbGVUb3AoUGFnZSYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oCmluZGV4IDQxZDUzZjExZjkzYmZhMjMwNjEyNGViOGUzNzRkMGIxMTExZGUzNTQuLmYx
NzVkMWNkMWJjZDdhMzRhODIyZjc3MzU5MWQ4MWE0YTAyMDY0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8QXBwbGlj
YXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAogICAgIFVu
aXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4gbGliV2ViUlRDUHJvdmlkZXI7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBhbGwgYmUg
U2V0dGluZ3MuCiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRp
b25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgYm9vbCB1c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyB7IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAg
IGJvb2wgaHR0cHNVcGdyYWRlRW5hYmxlZCB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggM2MyYWM4M2ZlZmYzMjg0Y2NiMjZmZmNjMjdkZDE2
ZTlhNDBkMTMwNS4uMWMxMzAyNjQ3NDkyOWU1NjRmMGZmMGI5NmViNGIyNzY5NGM5NDVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmPAogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFs
PFN0cmluZz4gc25hcHNob3RDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQs
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNuYXBzaG90Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBj
YW52YXNFbGVtZW50LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0KQogewogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZT4oY2FudmFzUmVuZGVyaW5nQ29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlUGFzdGVib2FyZENvbnRleHQuaAppbmRleCA0ZWI0YmQ2MmEwYTM2OTVjNjZjNTUzMDExZTJh
MTA2ZDFkNzE4ZjI1Li4wN2ZmZGE3ODcyMmVjMGMxNmI2NzAwNjkyZjVkMGU1YjUxNGQxOGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFnZVBhc3RlYm9hcmRDb250ZXh0
IGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmRDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlUGFzdGVib2FyZENvbnRleHQoT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQorICAgIFBhZ2VQYXN0ZWJvYXJk
Q29udGV4dChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVs
bG9wdCkKICAgICAgICAgOiBQYXN0ZWJvYXJkQ29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQo
V1RGTW92ZShwYWdlSUQpKQogICAgIHsKQEAgLTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiAKICAg
ICB+UGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgeyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVhdGUoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYg
cGFnZUlEID0gc3RkOjpudWxsb3B0KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZENvbnRleHQ+IGNyZWF0ZShzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJ
RCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhZ2VQ
YXN0ZWJvYXJkQ29udGV4dD4oV1RGTW92ZShwYWdlSUQpKTsKICAgICB9CiAKLSAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VJRDsgfQogICAgIGJvb2wgaXNQYWdlUGFzdGVib2FyZENvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG1fcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1fcGFn
ZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmNwcAppbmRleCA1MGQ1ZGExODNiYTM0YTQyMGE0MWU5Mjc1ZWEyNDViYTE5ZTg0MTBmLi5i
NzRjNzAzNTc1YzQ3YmYwM2VhNTA4MTEzZWI4MmQ4Y2JjMDQ0MjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJl
c291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogICAgIG1fd2FpdGluZ0ZvckJhY2t1
cEJ1ZmZlclRvQmVQcm9jZXNzZWQgPSBmYWxzZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFBlcmZv
cm1hbmNlTWFyaz4+IFBlcmZvcm1hbmNlOjptYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBtYXJrTmFtZSwgT3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJr
T3B0aW9ucz4mJiBtYXJrT3B0aW9ucykKK0V4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+
PiBQZXJmb3JtYW5jZTo6bWFyayhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cmluZyYgbWFya05hbWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9u
cz4mJiBtYXJrT3B0aW9ucykKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKICAgICAgICAgbV91
c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxQZXJmb3JtYW5jZVVzZXJUaW1pbmc+KCp0aGlzKTsKQEAg
LTMzNyw3ICszMzcsNyBAQCB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmlu
ZyYgbWFya05hbWUpCiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNlOjptZWFz
dXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZWFz
dXJlTmFtZSwgT3B0aW9uYWw8U3RhcnRPck1lYXN1cmVPcHRpb25zPiYmIHN0YXJ0T3JNZWFzdXJl
T3B0aW9ucywgY29uc3QgU3RyaW5nJiBlbmRNYXJrKQorRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1h
bmNlTWVhc3VyZT4+IFBlcmZvcm1hbmNlOjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFy
dE9yTWVhc3VyZU9wdGlvbnM+JiYgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcm
IGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCiAgICAgICAgIG1fdXNlclRpbWlu
ZyA9IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VVc2VyVGltaW5nPigqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlLmgKaW5kZXggNWU0Njg2NGJmZDA3NzExNDM0OThmZWNhNGU1NTA5NTU2MzM4
NjM2Yi4uZDU5ODkzNzRiNzlhMDA5YTA0NGU3MWY1YzUwZDUzNWUwZjA4YTQxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtODgsMTEgKzg4LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZVRpbWluZ0J1ZmZl
clNpemUodW5zaWduZWQpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+
IG1hcmsoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlv
bmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJm
b3JtYW5jZU1hcms+PiBtYXJrKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG1h
cmtOYW1lLCBzdGQ6Om9wdGlvbmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+JiYpOwogICAgIHZv
aWQgY2xlYXJNYXJrcyhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKTsKIAogICAgIHVzaW5nIFN0YXJ0
T3JNZWFzdXJlT3B0aW9ucyA9IFZhcmlhbnQ8U3RyaW5nLCBQZXJmb3JtYW5jZU1lYXN1cmVPcHRp
b25zPjsKLSAgICBFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJlPj4gbWVhc3VyZShK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgT3B0aW9uYWw8
U3RhcnRPck1lYXN1cmVPcHRpb25zPiYmLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1lYXN1cmU+PiBtZWFzdXJlKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0YXJ0T3JN
ZWFzdXJlT3B0aW9ucz4mJiwgY29uc3QgU3RyaW5nJiBlbmRNYXJrKTsKICAgICB2b2lkIGNsZWFy
TWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSk7CiAKICAgICB2b2lkIGFkZE5hdmln
YXRpb25UaW1pbmcoRG9jdW1lbnRMb2FkZXImLCBEb2N1bWVudCYsIENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTG9hZFRpbWluZyYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5jcHAKaW5kZXggZGU3ODY3NmRiODlhODY0MzhkYzYz
NjgyMjdlYjc5YWY2MmJkZTNiMy4uZDE4MmQ4NWMxNTAyNWQ1YTMyYWQ4MDUzMGJhOTM2YTg1NzEy
NGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuY3BwCkBAIC00Nywy
MiArNDcsMjIgQEAgUGVyZm9ybWFuY2VFbnRyeTo6UGVyZm9ybWFuY2VFbnRyeShjb25zdCBTdHJp
bmcmIG5hbWUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZQogCiBQZXJmb3JtYW5jZUVudHJ5Ojp+
UGVyZm9ybWFuY2VFbnRyeSgpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8UGVyZm9ybWFuY2VFbnRy
eTo6VHlwZT4gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3QgU3Ry
aW5nJiBlbnRyeVR5cGUpCitzdGQ6Om9wdGlvbmFsPFBlcmZvcm1hbmNlRW50cnk6OlR5cGU+IFBl
cmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGNvbnN0IFN0cmluZyYgZW50cnlU
eXBlKQogewogICAgIGlmIChlbnRyeVR5cGUgPT0gIm5hdmlnYXRpb24iKQotICAgICAgICByZXR1
cm4gT3B0aW9uYWw8VHlwZT4oVHlwZTo6TmF2aWdhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPFR5cGU+KFR5cGU6Ok5hdmlnYXRpb24pOwogCiAgICAgaWYgKGVudHJ5VHlwZSA9
PSAibWFyayIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBlOjpNYXJrKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VHlwZT4oVHlwZTo6TWFyayk7CiAgICAgaWYgKGVu
dHJ5VHlwZSA9PSAibWVhc3VyZSIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxUeXBlPihUeXBl
OjpNZWFzdXJlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8VHlwZT4oVHlwZTo6TWVh
c3VyZSk7CiAKICAgICBpZiAoZW50cnlUeXBlID09ICJyZXNvdXJjZSIpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxUeXBlPihUeXBlOjpSZXNvdXJjZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFR5cGU+KFR5cGU6OlJlc291cmNlKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnBhaW50VGltaW5nRW5hYmxlZCgpKSB7CiAgICAgICAg
IGlmIChlbnRyeVR5cGUgPT0gInBhaW50IikKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxU
eXBlPihUeXBlOjpQYWludCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxUeXBl
PihUeXBlOjpQYWludCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKaW5kZXggM2RmNWU0ZWZiYWYzMjZjNTcxZjVl
NmU2NWUzNTZjMmQ0MzJmZjBmMC4uZjkyYzJmMjA0MDY3MzQ2NzdhY2NiZGJlYmYzOGJhNjcyM2U0
MTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7
CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBlbnRyeVR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHBhcnNl
RW50cnlUeXBlU3RyaW5nKGNvbnN0IFN0cmluZyYgZW50cnlUeXBlKTsKIAogICAgIHN0YXRpYyBi
b29sIHN0YXJ0VGltZUNvbXBhcmVMZXNzVGhhbihjb25zdCBSZWZQdHI8UGVyZm9ybWFuY2VFbnRy
eT4mIGEsIGNvbnN0IFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiYgYikKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAKaW5kZXggMWQ1ZWNlYmE1N2NlNGUy
NmE0M2Y0MGUwYmNlNzZlM2JmYjkwNDdhNy4uYWNhODc1MDUwZmMyMTMxODcyMTFiYmQ2MjU4ZDBj
OTczMjBjZDRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxv
Z2dpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUGVyZm9ybWFuY2VMb2dnaW5nOjpkaWRSZWFjaFBv
aW50T2ZJbnRlcmVzdChQb2ludE9mSW50ZXJlc3QgcG9pKQogCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogdm9pZCBQZXJmb3JtYW5jZUxvZ2dpbmc6OmdldFBsYXRmb3JtTWVtb3J5VXNhZ2VTdGF0aXN0
aWNzKEhhc2hNYXA8Y29uc3QgY2hhciosIHNpemVfdD4mKSB7IH0KLU9wdGlvbmFsPHVpbnQ2NF90
PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBo
eXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmgKaW5kZXggNmE4NWMxM2FmOGQ5
MTg5MTZiMjFlYjVmNTE1MWI3MDY5ZDI1YjhiMS4uMzJiNGMwZTlhMWUxMjE4MjlkYWI2ZmJjZWMw
ODljYWJkZDY5OTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZUxvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5o
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBI
YXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gamF2YVNjcmlwdE9iamVjdENvdW50cygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoTWFwPGNvbnN0IGNoYXIqLCBzaXplX3Q+IG1lbW9y
eVVzYWdlU3RhdGlzdGljcyhTaG91bGRJbmNsdWRlRXhwZW5zaXZlQ29tcHV0YXRpb25zKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IHBoeXNpY2FsRm9vdHBy
aW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBoeXNpY2FsRm9vdHByaW50KCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0UGxh
dGZvcm1NZW1vcnlVc2FnZVN0YXRpc3RpY3MoSGFzaE1hcDxjb25zdCBjaGFyKiwgc2l6ZV90PiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuY3BwCmluZGV4IGY0MGQ0N2RiMWVh
MzIwZDI0YzI4ZTg4ZDIyZjI5ODgxNDI0NTc4ZjkuLjMwMjIwMmM3YWE0ZjM0YWRiYTM4YjQ2YjU5
ZWJkZTA2YzQyNWQwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNYXJrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGRvdWJsZSBwZXJmb3JtYW5jZU5vdyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIHJldHVybiAwOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9ybWFuY2VNYXJrOjpjcmVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFs
PFBlcmZvcm1hbmNlTWFya09wdGlvbnM+JiYgbWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxSZWY8
UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9ybWFuY2VNYXJrOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8UGVyZm9ybWFuY2VN
YXJrT3B0aW9ucz4mJiBtYXJrT3B0aW9ucykKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpICYmIFBlcmZvcm1hbmNlVXNlclRpbWluZzo6aXNSZXN0cmljdGVk
TWFya05hbWUobmFtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgKaW5kZXggYjc1MTRmMDE1MzU4MDlk
YWI1M2NjYWMwNjRjNTJiMGYxOGViNmM2Yi4uODdhNTU4NWQxYmUzNTdhY2NhNTRjMTdmNzBlNDI4
MWEzMjMwMWE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1h
cmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5oCkBAIC00MCw3
ICs0MCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFBlcmZvcm1h
bmNlTWFyayBmaW5hbCA6IHB1YmxpYyBQZXJmb3JtYW5jZUVudHJ5IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPFBlcmZvcm1hbmNlTWFyaz4+IGNyZWF0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
T3B0aW9uYWw8UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8
UGVyZm9ybWFuY2VNYXJrT3B0aW9ucz4mJik7CiAKICAgICBKU0M6OkpTVmFsdWUgZGV0YWlsKEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1hcmtPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TWFya09wdGlvbnMuaAppbmRleCBkYmQxODVlYzJmMTFmOWFmZTg4MjY1YjIwNDVjYWM1YTMxYmZj
YWZjLi44NGU1M2Y5MzVhMmNiZTUwNDE3YTYxNDRkNzNhMGMyNjMwZmFmZGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFya09wdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFya09wdGlvbnMuaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBQZXJmb3JtYW5jZU1hcmtPcHRpb25zIHsK
ICAgICBKU0M6OkpTVmFsdWUgZGV0YWlsOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gc3RhcnRUaW1l
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWU7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oCmluZGV4IGM5MzQ3
M2EwMDNmN2QwZTZmOGEzZjY1MWZhZDZkNjMwMTQyNzA3N2YuLmIxZmQ4NjM5Zjc2MjQzNmNlMDFl
NDhmZmJjZTlkZWM1Zjc5MmVkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VNZWFzdXJlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VNZWFzdXJlT3B0aW9ucy5oCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IFBlcmZvcm1hbmNlTWVhc3VyZU9wdGlvbnMgewogICAgIEpTQzo6SlNWYWx1
ZSBkZXRhaWw7Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IHN0YXJ0Owot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gZHVyYXRpb247Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxTdHJp
bmcsIGRvdWJsZT4+IGVuZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3Vi
bGU+PiBzdGFydDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZHVyYXRpb247CisgICAgc3Rk
OjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gZW5kOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCmluZGV4IDBhNmQyMDM5OWE3NjIy
ZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZkNjEuLjBmYzZkNmRiZWY4MjRjODRlZDUzZmVmODY2ZDZm
NmEyM2ExYjNkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VN
b25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5j
cHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBv
c3RMb2FkQ1BVVXNhZ2UoKQogICAgICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVy
LnN0YXJ0T25lU2hvdChwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgT3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRp
bWU6OmdldCgpOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6
OmdldCgpOwogICAgIGlmICghY3B1VGltZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTYsNyAr
MTk2LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZE1lbW9yeVVz
YWdlKCkKICAgICBpZiAoIW1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5j
ZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7
CiAgICAgaWYgKCFtZW1vcnlVc2FnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ01l
bW9yeVVzYWdlKCkKICAgICBpZiAoIW1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJm
b3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbWVtb3J5VXNhZ2UgPSBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHBy
aW50KCk7CiAgICAgaWYgKCFtZW1vcnlVc2FnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzYs
NyArMjM2LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3Vu
ZGluZ0NQVVVzYWdlKCkKICAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRp
bWVyLnN0YXJ0T25lU2hvdChiYWNrZ3JvdW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBPcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0g
Q1BVVGltZTo6Z2V0KCk7CisgICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gQ1BV
VGltZTo6Z2V0KCk7CiAgICAgaWYgKCFjcHVUaW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTI4
MCw3ICsyODAsNyBAQCB2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5B
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6OmdldCgpOwogICAg
IGlmICghY3B1VGltZSkgewogICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1vbml0b3IuaAppbmRleCA4NTVmZTZlNzUzNzA2ZDc3MzUyM2I3ODJhZGVlMjY5MzJjYzI3N2Rj
Li40NDIyMTVmZTM0ZjVjNzI4NWQ0ODA0Yjg0NjM1MWU3ZmRmZGEyZmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmgKQEAgLTU2LDExICs1NiwxMSBAQCBwcml2YXRl
OgogICAgIFBhZ2UmIG1fcGFnZTsKIAogICAgIFRpbWVyIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VU
aW1lcjsKLSAgICBPcHRpb25hbDxDUFVUaW1lPiBtX3Bvc3RMb2FkQ1BVVGltZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdExvYWRDUFVUaW1lOwogICAgIFRpbWVyIG1fcG9zdEJh
Y2tncm91bmRpbmdDUFVVc2FnZVRpbWVyOwotICAgIE9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJh
Y2tncm91bmRpbmdDUFVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0QmFj
a2dyb3VuZGluZ0NQVVRpbWU7CiAgICAgVGltZXIgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VU
aW1lcjsKLSAgICBPcHRpb25hbDxDUFVUaW1lPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZTsKIAog
ICAgIFRpbWVyIG1fcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VUaW1lcjsKICAgICBUaW1lciBtX3Bv
c3RCYWNrZ3JvdW5kaW5nTWVtb3J5VXNhZ2VUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmNwcAppbmRleCA5ODFiMzViZTZjNDVh
ZGNmODVjNjkzYTE5YzNhYTJkODAwODkzMzg2Li42OTU1OTVmZmJmMjg5MmNlZmEzNjY4NTVjMmE1
NzlmZDY3NDM3ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvblRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU5hdmlnYXRpb25UaW1pbmcuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFBlcmZvcm1hbmNlTmF2aWdh
dGlvblRpbWluZzo6UGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nKE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpCiAKIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZzo6flBlcmZvcm1hbmNlTmF2aWdh
dGlvblRpbWluZygpID0gZGVmYXVsdDsKIAotZG91YmxlIFBlcmZvcm1hbmNlTmF2aWdhdGlvblRp
bWluZzo6bWlsbGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSB0aW1lLCBPcHRpb25h
bDxNb25vdG9uaWNUaW1lPiB0aW1lT3JpZ2luKSBjb25zdAorZG91YmxlIFBlcmZvcm1hbmNlTmF2
aWdhdGlvblRpbWluZzo6bWlsbGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSB0aW1l
LCBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVPcmlnaW4pIGNvbnN0CiB7CiAgICAg
aWYgKCF0aW1lKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCmluZGV4IGIwZTYyMjY1MzgxYmZjM2JlMjQ5
MTVmNTQzNDIyMWZhYmIxNWNiYTcuLmVkMmQxM2FiNzc4NGYwNTE1YmVlMzJlZmU0NjhmZWI0OGJh
Yjk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRp
b25UaW1pbmcuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBlcmZv
cm1hbmNlTmF2aWdhdGlvblRpbWluZyhNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIENhY2hlZFJl
c291cmNlJiwgY29uc3QgTG9hZFRpbWluZyYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIGNv
bnN0IERvY3VtZW50VGltaW5nJiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZSk7CiAKLSAgICBkb3VibGUgbWlsbGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3Rv
bmljVGltZSwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kc1NpbmNlT3JpZ2luKE1vbm90b25pY1Rp
bWUsIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAgICAgYm9vbCBzYW1lT3JpZ2luQ2hlY2tGYWlscygpIGNvbnN0OwogCiAgICAg
RG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZU9ic2VydmVyLmgKaW5kZXggNDE5MzA1ZDQ3YzIxNTI3ZDhlMWNiZWI1N2JjZTVjMGQ4
MmMyYTdkOC4uNmJmYWJlMjUxZWI4OTlmZjEzZDlkNzE5NWJlZWJhN2ViYTQ4NDhmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmgKQEAgLTQxLDggKzQxLDggQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFBlcmZvcm1hbmNlT2JzZXJ2ZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZU9ic2VydmVyPiB7CiBwdWJsaWM6CiAgICAg
c3RydWN0IEluaXQgewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZW50cnlUeXBl
czsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBlbnRyeVR5cGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gdHlwZTsKICAgICAgICAgYm9vbCBidWZmZXJlZDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0LmNwcAppbmRleCBk
ZDdmYzk3Y2EzOGY4M2UyNDU1ZTkyNzA4MjM1MTUwMDNlOWE5Y2U5Li5hOWJkOGY4Y2NkZGEyYzc3
NDlhMjg4ZWIzY2ExNDIyY2I0YjEwMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgVmVj
dG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj4gUGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlz
dDo6Z2V0RW50cmllc0J5TmFtZSgKIAogICAgIC8vIFBlcmZvcm1hbmNlT2JzZXJ2ZXJzIGNhbiBv
bmx5IGJlIHJlZ2lzdGVyZWQgZm9yIHZhbGlkIHR5cGVzLgogICAgIC8vIFNvIGlmIHRoZSBpbmNv
bWluZyBlbnRyeVR5cGUgaXMgYW4gdW5rbm93biB0eXBlLCB0aGVyZSB3aWxsIGJlIG5vIG1hdGNo
ZXMuCi0gICAgT3B0aW9uYWw8UGVyZm9ybWFuY2VFbnRyeTo6VHlwZT4gdHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFBlcmZvcm1hbmNlRW50cnk6OlR5cGU+IHR5cGU7CiAgICAgaWYgKCFlbnRyeVR5
cGUuaXNOdWxsKCkpIHsKICAgICAgICAgdHlwZSA9IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50
cnlUeXBlU3RyaW5nKGVudHJ5VHlwZSk7CiAgICAgICAgIGlmICghdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCA0MDE1Mjc3ZTA3YzQz
ZDlmOTg5YTE3ZWFiYWUxNTIwYjllYzhhMThlLi5hMzY4ODcyMzc0YzEyZjdjYTMwZTFiZjljMjkx
MDM1OThlM2EwOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJU
aW1pbmcuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgYWRkUGVyZm9ybWFuY2VF
bnRyeShQZXJmb3JtYW5jZUVudHJ5TWFwJiBtYXAsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGUKICAg
ICBwZXJmb3JtYW5jZUVudHJ5TGlzdC5hcHBlbmQoJmVudHJ5KTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPFBlcmZvcm1hbmNlTWFyaz4+IFBlcmZvcm1hbmNlVXNlclRpbWluZzo6bWFyayhKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWFya05hbWUsIE9wdGlv
bmFsPFBlcmZvcm1hbmNlTWFya09wdGlvbnM+JiYgbWFya09wdGlvbnMpCitFeGNlcHRpb25PcjxS
ZWY8UGVyZm9ybWFuY2VNYXJrPj4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjptYXJrKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpv
cHRpb25hbDxQZXJmb3JtYW5jZU1hcmtPcHRpb25zPiYmIG1hcmtPcHRpb25zKQogewogICAgIGF1
dG8gbWFyayA9IFBlcmZvcm1hbmNlTWFyazo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgKm1fcGVyZm9y
bWFuY2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtYXJrTmFtZSwgV1RGTW92ZShtYXJrT3B0
aW9ucykpOwogICAgIGlmIChtYXJrLmhhc0V4Y2VwdGlvbigpKQpAQCAtMjU3LDcgKzI1Nyw3IEBA
IHN0YXRpYyBib29sIGlzTm9uRW1wdHlEaWN0aW9uYXJ5KGNvbnN0IFBlcmZvcm1hbmNlTWVhc3Vy
ZU9wdGlvbnMmIG1lYXN1cmVPcHRpb25zCiAgICAgcmV0dXJuICFtZWFzdXJlT3B0aW9ucy5kZXRh
aWwuaXNVbmRlZmluZWQoKSB8fCBtZWFzdXJlT3B0aW9ucy5zdGFydCB8fCBtZWFzdXJlT3B0aW9u
cy5kdXJhdGlvbiB8fCBtZWFzdXJlT3B0aW9ucy5lbmQ7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxQ
ZXJmb3JtYW5jZU1lYXN1cmU+PiBQZXJmb3JtYW5jZVVzZXJUaW1pbmc6Om1lYXN1cmUoSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBP
cHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBj
b25zdCBTdHJpbmcmIGVuZE1hcmspCitFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNZWFzdXJl
Pj4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjptZWFzdXJlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFy
dE9yTWVhc3VyZU9wdGlvbnM+JiYgc3RhcnRPck1lYXN1cmVPcHRpb25zLCBjb25zdCBTdHJpbmcm
IGVuZE1hcmspCiB7CiAgICAgaWYgKHN0YXJ0T3JNZWFzdXJlT3B0aW9ucykgewogICAgICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbigqc3RhcnRPck1lYXN1cmVPcHRpb25zLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmgKaW5kZXggY2Q4MDI4Nzc2NjBiMDJlZjUy
OThjMzNjMDQ0MWNhOWI2NTg5OWYyMC4uNWJmMmVjZWFmZTdhNzllNzU1MmQ1ZWVhZjE2YTFiMjY3
NzMwN2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJU
aW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5o
CkBAIC00NiwxMSArNDYsMTEgQEAgY2xhc3MgUGVyZm9ybWFuY2VVc2VyVGltaW5nIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBQZXJmb3JtYW5jZVVzZXJUaW1pbmcoUGVyZm9ybWFuY2UmKTsKIAot
ICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJmb3JtYW5jZU1hcms+PiBtYXJrKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBjb25zdCBTdHJpbmcmIG1hcmtOYW1lLCBPcHRpb25hbDxQZXJmb3JtYW5jZU1hcmtP
cHRpb25zPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyZm9ybWFuY2VNYXJrPj4gbWFyayhK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5nJiBtYXJrTmFtZSwgc3RkOjpvcHRpb25h
bDxQZXJmb3JtYW5jZU1hcmtPcHRpb25zPiYmKTsKICAgICB2b2lkIGNsZWFyTWFya3MoY29uc3Qg
U3RyaW5nJiBtYXJrTmFtZSk7CiAKICAgICB1c2luZyBTdGFydE9yTWVhc3VyZU9wdGlvbnMgPSBW
YXJpYW50PFN0cmluZywgUGVyZm9ybWFuY2VNZWFzdXJlT3B0aW9ucz47Ci0gICAgRXhjZXB0aW9u
T3I8UmVmPFBlcmZvcm1hbmNlTWVhc3VyZT4+IG1lYXN1cmUoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIE9wdGlvbmFsPFN0YXJ0T3JNZWFzdXJlT3B0aW9u
cz4mJiwgY29uc3QgU3RyaW5nJiBlbmRNYXJrKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyZm9y
bWFuY2VNZWFzdXJlPj4gbWVhc3VyZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgU3RyaW5n
JiBtZWFzdXJlTmFtZSwgc3RkOjpvcHRpb25hbDxTdGFydE9yTWVhc3VyZU9wdGlvbnM+JiYsIGNv
bnN0IFN0cmluZyYgZW5kTWFyayk7CiAgICAgdm9pZCBjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmlu
ZyYgbWVhc3VyZU5hbWUpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj4g
Z2V0TWFya3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2Fy
bUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5o
CmluZGV4IDE2YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAuLjRhZTQ1YjE3
NmQxOTNmOTY3NWQ0YTI3OWY4NjU5ZDc1MDY0YzFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgUHJld2FybUluZm9ybWF0aW9uIHsKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlv
biBmb250Q2FjaGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFByZXdhcm1JbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3YXJtSW5mb3JtYXRpb24+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDYsOSAr
NDYsOSBAQCB2b2lkIFByZXdhcm1JbmZvcm1hdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQcmV3YXJtSW5m
b3JtYXRpb24+IFByZXdhcm1JbmZvcm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFByZXdhcm1JbmZvcm1hdGlvbj4gUHJld2FybUluZm9ybWF0aW9uOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250Q2FjaGU6OlByZXdhcm1J
bmZvcm1hdGlvbj4gZm9udENhY2hlUHJld2FybUluZm9ybWF0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24+IGZvbnRDYWNoZVByZXdhcm1JbmZvcm1h
dGlvbjsKICAgICBkZWNvZGVyID4+IGZvbnRDYWNoZVByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBp
ZiAoIWZvbnRDYWNoZVByZXdhcm1JbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmNwcAppbmRleCBlNzBiMmJmZmZiYmZlMTljZmI4MTA1MDFhYjMyZmQ3MzBj
ZDJhOTFhLi45NmQyMGQyZjJmMmYwOGEyZGIwNmMwNWQzMGZhMzM4MjkzZTJmYzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZERp
c3BhdGNoZWRTaW11bGF0ZWRNb3VzZUV2ZW50c0Fzc3VtZURlZmF1bHRQcmV2ZW50ZWQoRXZlbnRU
YXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+
IFF1aXJrczo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbnRUYXJnZXQqIHRh
cmdldCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpz
aW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldChFdmVudFRhcmdldCogdGFyZ2V0KSBjb25z
dAogewogICAgIGlmICghc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyh0YXJnZXQp
KQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggZDgxZDk4YWU2OGM2
N2ZjM2FiZGEyNTcxYWYzZGY5ZDkxODAyZjNiNS4uMzUyYzJhZmYyMTk2OWEzNTQ5ODQ1ZjQ1Nzkz
YWU5YTBmOTI2N2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hTaW11
bGF0ZWRNb3VzZUV2ZW50cyhFdmVudFRhcmdldCopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGlz
cGF0Y2hlZFNpbXVsYXRlZE1vdXNlRXZlbnRzQXNzdW1lRGVmYXVsdFByZXZlbnRlZChFdmVudFRh
cmdldCopIGNvbnN0OwotICAgIE9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IHNpbXVsYXRl
ZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW50VGFyZ2V0KikgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRh
cmdldChFdmVudFRhcmdldCopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkTWFrZVRvdWNoRXZlbnRO
b25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2ZW50VGFyZ2V0KikgY29uc3Q7CiAgICAgYm9vbCBzaG91
bGRQcmV2ZW50UG9pbnRlck1lZGlhUXVlcnlGcm9tRXZhbHVhdGluZ1RvQ29hcnNlKCkgY29uc3Q7
CiAgICAgYm9vbCBzaG91bGRQcmV2ZW50RGlzcGF0Y2hPZlRvdWNoRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYsIEV2ZW50VGFyZ2V0KikgY29uc3Q7CkBAIC0xNjYsMTYgKzE2NiwxNiBAQCBwcml2YXRl
OgogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIAotICAgIG11dGFibGUgT3B0
aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyazsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNGdWxsV2lkdGhIZWlnaHRGdWxsc2NyZWVu
U3R5bGVRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNCcm9rZW5F
bmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9uZWVkc0Z1bGxXaWR0aEhlaWdodEZ1bGxzY3JlZW5TdHlsZVF1aXJrOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzR01h
aWxPdmVyZmxvd1Njcm9sbFF1aXJrOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVk
c1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1aXJrOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4g
bV9uZWVkc1ByZWxvYWRBdXRvUXVpcms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25l
ZWRzRnVsbHNjcmVlbkRpc3BsYXlOb25lUXVpcms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29s
PiBtX3Nob3VsZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2ViQ29udGVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0dNYWlsT3ZlcmZsb3dTY3JvbGxRdWlyazsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc1lvdVR1YmVPdmVyZmxvd1Njcm9sbFF1
aXJrOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX25lZWRzUHJlbG9hZEF1dG9R
dWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0Z1bGxzY3JlZW5E
aXNwbGF5Tm9uZVF1aXJrOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3Nob3Vs
ZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2ViQ29udGVudDsKICNlbmRpZgotICAgIG11dGFibGUgT3B0
aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRWxlbWVudEZ1bGxzY3JlZW5RdWlyazsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRWxlbWVudEZ1bGxzY3Jl
ZW5RdWlyazsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGVudW0gY2xhc3MgU2hvdWxk
RGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyA6IHVpbnQ4X3QgewogICAgICAgICBVbmtub3du
LApAQCAtMTg2LDIwICsxODYsMjAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFNob3VsZERpc3Bh
dGNoU2ltdWxhdGVkTW91c2VFdmVudHMgbV9zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZl
bnRzUXVpcmsgeyBTaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzOjpVbmtub3duIH07
CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPGJvb2w+IG1fc2hvdWxkU3ludGhlc2l6ZVRvdWNoRXZlbnRzUXVpcms7CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkU3ludGhlc2l6ZVRvdWNoRXZlbnRzUXVpcms7
CiAjZW5kaWYKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNDYW5QbGF5QWZ0ZXJT
ZWVrZWRRdWlyazsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc2hvdWxkQnlwYXNzQXN5
bmNTY3JpcHREZWZlcnJpbmc7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX25lZWRzVlA5
RnVsbFJhbmdlRmxhZ1F1aXJrOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9uZWVkc0hE
UlBpeGVsRGVwdGhRdWlyazsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFj
a0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBt
X3JlcXVpcmVzVXNlckdlc3R1cmVUb1BhdXNlSW5QaWN0dXJlSW5QaWN0dXJlOwotICAgIG11dGFi
bGUgT3B0aW9uYWw8Ym9vbD4gbV9yZXF1aXJlc1VzZXJHZXN0dXJlVG9Mb2FkSW5QaWN0dXJlSW5Q
aWN0dXJlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX25lZWRzQ2FuUGxheUFm
dGVyU2Vla2VkUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc2hvdWxk
QnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmc7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fbmVlZHNWUDlGdWxsUmFuZ2VGbGFnUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1fbmVlZHNIRFJQaXhlbERlcHRoUXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fbmVlZHNCbGFja0Z1bGxzY3JlZW5CYWNrZ3JvdW5kUXVpcms7CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNVc2VyR2VzdHVyZVRvUGF1c2VJ
blBpY3R1cmVJblBpY3R1cmU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVx
dWlyZXNVc2VyR2VzdHVyZVRvTG9hZEluUGljdHVyZUluUGljdHVyZTsKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zaG91bGRFbmFibGVMZWdh
Y3lHZXRVc2VyTWVkaWFRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9z
aG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyazsKICNlbmRpZgotICAgIG11dGFibGUg
T3B0aW9uYWw8Ym9vbD4gbV9ibG9ja3NSZXR1cm5Ub0Z1bGxzY3JlZW5Gcm9tUGljdHVyZUluUGlj
dHVyZVF1aXJrOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRW5k
RnVsbHNjcmVlbkV2ZW50V2hlbkVudGVyaW5nUGljdHVyZUluUGljdHVyZUZyb21GdWxsc2NyZWVu
UXVpcms7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fYmxvY2tzUmV0dXJuVG9G
dWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmVRdWlyazsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9zaG91bGREaXNhYmxlRW5kRnVsbHNjcmVlbkV2ZW50V2hlbkVudGVyaW5n
UGljdHVyZUluUGljdHVyZUZyb21GdWxsc2NyZWVuUXVpcms7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
CmluZGV4IDczNmQzZDE1YTkyMTlkMmQwYTdlYzE4NDUxODVkOTM5NTAzZjcwNjMuLjA3YmNjZmM2
NTU5MWFmNDE5MWQxNDBiNjM3MTFkY2FhZjRmZGQ1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgcHJpdmF0ZToK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBtX21vdXNlRXZlbnRzU2ltdWxh
dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGJvb2w+IG1fdG91Y2hFdmVudHNF
bmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAj
ZW5kaWYKIAogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Njcm9sbEludG9WaWV3T3B0aW9ucy5oCmluZGV4IGYyNzVmMmZiZDFhM2ZjODAxZWJj
MGFlODZjZGE5MTk5Njg5ZjQ1MDUuLmViYmIwMTNlM2M0MjYyMTI1Y2Q1ZjRlYTcyOTQwODEzOTE3
ZmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsSW50b1ZpZXdPcHRp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxJbnRvVmlld09wdGlvbnMuaApA
QCAtMjUsOCArMjUsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zIDogU2Nyb2xsT3B0aW9ucyB7Ci0gICAgT3B0aW9uYWw8U2Nyb2xsTG9naWNh
bFBvc2l0aW9uPiBibG9ja1Bvc2l0aW9uIHsgU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydCB9
OwotICAgIE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gaW5saW5lUG9zaXRpb24geyBT
Y3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9s
bExvZ2ljYWxQb3NpdGlvbj4gYmxvY2tQb3NpdGlvbiB7IFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6
U3RhcnQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gaW5saW5l
UG9zaXRpb24geyBTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xs
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgKaW5kZXggZTE4
NjdjNjAxNTBhNTU0MTFjYzBmMWE3YTA0OWUyYmMxZGMxM2Q5Ny4uNTYzZTFlNjg1NjMxMWZkNGRh
MjA5OTIwZjljODJhODk5NWMxMzQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
Y3JvbGxPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxPcHRpb25zLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNjcm9sbE9w
dGlvbnMgewotICAgIE9wdGlvbmFsPFNjcm9sbEJlaGF2aW9yPiBiZWhhdmlvciB7IFNjcm9sbEJl
aGF2aW9yOjpBdXRvIH07CisgICAgc3RkOjpvcHRpb25hbDxTY3JvbGxCZWhhdmlvcj4gYmVoYXZp
b3IgeyBTY3JvbGxCZWhhdmlvcjo6QXV0byB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmgKaW5kZXggZjU3NzRkNDRhZWYwNGE4
NWViMTQ3MjE3ZTdmYWFiODcyZjI0M2Q4Yi4uMzE4NGZkYTZmZWZiZWQ0ZTNmZWMxNTE2OWY0NWJm
ZTIxZTQ1MGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbFRvT3B0aW9ucy5oCkBAIC0zNSw4
ICszNSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTY3JvbGxUb09wdGlvbnMg
OiBTY3JvbGxPcHRpb25zIHsKLSAgICBPcHRpb25hbDxkb3VibGU+IGxlZnQ7Ci0gICAgT3B0aW9u
YWw8ZG91YmxlPiB0b3A7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxlZnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHRvcDsKIAogICAgIFNjcm9sbFRvT3B0aW9ucygpID0gZGVmYXVs
dDsKICAgICBTY3JvbGxUb09wdGlvbnMoZG91YmxlIHgsIGRvdWJsZSB5KQpAQCAtNDUsNyArNDUs
NyBAQCBzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25zIDogU2Nyb2xsT3B0aW9ucyB7CiAgICAgeyB9CiB9
OwogCi1pbmxpbmUgZG91YmxlIG5vcm1hbGl6ZU5vbkZpbml0ZVZhbHVlT3JGYWxsQmFja1RvKE9w
dGlvbmFsPGRvdWJsZT4gdmFsdWUsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQoraW5saW5lIGRvdWJs
ZSBub3JtYWxpemVOb25GaW5pdGVWYWx1ZU9yRmFsbEJhY2tUbyhzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gdmFsdWUsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKQogewogICAgIC8vIE5vcm1hbGl6ZSBub24t
ZmluaXRlIHZhbHVlcyAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI25vcm1h
bGl6ZS1ub24tZmluaXRlLXZhbHVlcykuCiAgICAgcmV0dXJuIHZhbHVlID8gKHN0ZDo6aXNmaW5p
dGUoKnZhbHVlKSA/ICp2YWx1ZSA6IDApIDogZmFsbGJhY2tWYWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNmI2OTZkNGMwZGIzNDhiMDg3MWNhYTMxOWY5ZTk4
ZDk2YWM2YWQxMS4uMzM0OWQxYWE4Njk0OWNjNjI4MDQ5ZWFmM2JkZWIyOWVjYjYzZTNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBS
ZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFVSTChVUkwoKSwgb3JpZ2luU3RyaW5nKSk7CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
aG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVjb2Rl
ZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4g
PSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDA4YzZmMWRmNTdhOWNmYTJlNWFlODA2
NTRkNzFhODg3MWZiYTQ5MWIuLmU2YWI1NzU5OTYzNGRmNjY1MzRiOTVlYTBjMjI0OGQ3YzVkZmE2
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNy
ZWF0ZVVuaXF1ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
cG9ydCk7CiAKICAgICAvLyBRdWlja0xvb2sgZG9jdW1lbnRzIGFyZSBpbiBub24tbG9jYWwgb3Jp
Z2lucyBldmVuIHdoZW4gbG9hZGVkIGZyb20gZmlsZTogVVJMcy4gVGhleSBuZWVkIHRvCiAgICAg
Ly8gYmUgYWxsb3dlZCB0byBkaXNwbGF5IHRoZWlyIG93biBmaWxlOiBVUkxzIGluIG9yZGVyIHRv
IHBlcmZvcm0gcmVsb2FkcyBhbmQgc2FtZS1kb2N1bWVudApAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5w
cm90b2NvbDsgfQogICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5ob3N0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2Rv
bWFpbjsgfQotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLnBvcnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLnBvcnQ7IH0KIAogICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUhvc3Qo
Y29uc3QgVVJMJik7CiAKQEAgLTI3MSw3ICsyNzEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiBpbmxpbmUgdm9pZCBTZWN1cml0eU9yaWdpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBkYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlP
cmlnaW5EYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCmluZGV4IGEwMGRhYzQ3OTBlZTJlOTU1YWUyZmUyY2ZjNjVmMGE0MGRhODM2YzIu
LjIyYmVhOGI0MzQyZGE0ZGRjZGUzNWNkODY0YWJkOGM3NzY1MzA5MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgU3RyaW5n
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1
cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3J0LnZhbHVlX29y
KDApKTsKIH0KIAotT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZp
ZXIpCitzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVy
KQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6
ZV90IHNlcGFyYXRvcjEgPSBkYXRhYmFzZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggOTA3OWM1
YjU1MjhiMGViYjk0YjgwZDZmZTg1MzcxN2I2NDEyMGQ4OS4uNGIzOTUyNDkxNjU4ZWNhYWYzOGUw
YmIwMGE3Mjk1MDkwMmJjMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3Qg
U2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICBTZWN1cml0eU9yaWdpbkRhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCisgICAgU2VjdXJpdHlPcmlnaW5E
YXRhKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCkKICAgICAgICAgOiBwcm90b2NvbChwcm90b2NvbCkKICAgICAg
ICAgLCBob3N0KGhvc3QpCiAgICAgICAgICwgcG9ydChwb3J0KQpAQCAtNjIsMTcgKzYyLDE3IEBA
IHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogCiAgICAgU3RyaW5nIHByb3RvY29sOwogICAg
IFN0cmluZyBob3N0OwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0eU9yaWdp
bkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3Vy
aXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQgYXMgcGFydCBvZgogICAg
IC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2VkIGluIHN0b3JhZ2UgQVBJ
cyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5E
YXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZnJvbURhdGFi
YXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdAogICAgIHsKQEAgLTEwMywxOSArMTAzLDE5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW5E
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5E
YXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFN0cmluZz4gcHJvdG9jb2w7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBy
b3RvY29sOwogICAgIGRlY29kZXIgPj4gcHJvdG9jb2w7CiAgICAgaWYgKCFwcm90b2NvbCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGhv
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhvc3Q7CiAgICAgZGVjb2RlciA+PiBob3N0
OwogICAgIGlmICghaG9zdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDxPcHRpb25hbDx1aW50MTZfdD4+IHBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDxz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90Pj4gcG9ydDsKICAgICBkZWNvZGVyID4+IHBvcnQ7CiAgICAg
aWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKaW5kZXggZmVlNmI5OWUzZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOC4uNjhi
MGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBSYXdGaWxlIHsKICAgICAKIHN0cnVjdCBT
aGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKICAgICBTaGFyZURhdGEgc2hhcmVEYXRhOwotICAgIE9w
dGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgVmVjdG9y
PFJhd0ZpbGU+IGZpbGVzOwogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJh
bnNsYXRpb25Db250ZXh0TWVudUluZm8uaAppbmRleCAxMjFhZmFhODNlNTVjMDMyM2ZjYjI0MWQ2
YzM3ZTRjNDhhZjQyNGYxLi5mODM5YTkwZWI5NjEzMmJmMzViOGZmNDM3MzhkOWZjZThjMmEwMjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5m
by5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbyB7
CiAgICAgVHJhbnNsYXRpb25Db250ZXh0TWVudU1vZGUgbW9kZSB7IFRyYW5zbGF0aW9uQ29udGV4
dE1lbnVNb2RlOjpOb25FZGl0YWJsZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxU
cmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNTQsMjQgKzU0LDI0IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm86OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyCiAgICAgZW5jb2RlciA8PCBtb2RlOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4gVHJhbnNsYXRpb25D
b250ZXh0TWVudUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbz4gVHJhbnNs
YXRpb25Db250ZXh0TWVudUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAg
ICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8SW50UmVjdD4gc2VsZWN0aW9uQm91bmRzSW5Sb290Vmll
dzsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IHNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXc7
CiAgICAgZGVjb2RlciA+PiBzZWxlY3Rpb25Cb3VuZHNJblJvb3RWaWV3OwogICAgIGlmICghc2Vs
ZWN0aW9uQm91bmRzSW5Sb290VmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPEludFBvaW50PiBsb2NhdGlvbkluUm9vdFZpZXc7CisgICAgc3RkOjpvcHRp
b25hbDxJbnRQb2ludD4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRp
b25JblJvb3RWaWV3OwogICAgIGlmICghbG9jYXRpb25JblJvb3RWaWV3KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VHJhbnNsYXRpb25Db250ZXh0TWVudU1v
ZGU+IG1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51TW9kZT4g
bW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAppbmRleCA4Y2Q5YzMwYzZi
NmE2NGVlNjZkZjk5MzNlYjM3ODU4OGM0OThhMjVjLi41MDMzNDJhMzU1MGY5MmI1MDZjZDM3NjU5
ZGI3ZTgzODI0MTU3NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3Jp
cHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyB3YWl0
Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV93YWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVzZXJTY3JpcHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VXNlclNjcmlwdD4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CkBAIC04
NiwzOSArODYsMzkgQEAgdm9pZCBVc2VyU2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFVzZXJTY3JpcHQ+
IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxVc2Vy
U2NyaXB0PiBVc2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHNvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlOwog
ICAgIGRlY29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IGFsbG93bGlzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2xp
c3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd2xpc3Q7CiAgICAgaWYgKCFhbGxvd2xpc3QpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IGJsb2NrbGlzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibG9ja2xp
c3Q7CiAgICAgZGVjb2RlciA+PiBibG9ja2xpc3Q7CiAgICAgaWYgKCFibG9ja2xpc3QpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VXNlclNjcmlwdElu
amVjdGlvblRpbWU+IGluamVjdGlvblRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9uVGltZTsKICAgICBkZWNvZGVyID4+IGluamVjdGlvblRp
bWU7CiAgICAgaWYgKCFpbmplY3Rpb25UaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAotICAgIE9wdGlvbmFsPFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVk
RnJhbWVzOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5q
ZWN0ZWRGcmFtZXM7CiAgICAgZGVjb2RlciA+PiBpbmplY3RlZEZyYW1lczsKICAgICBpZiAoIWlu
amVjdGVkRnJhbWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9w
dGlvbmFsPFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmlj
YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0
aW5nPiB3YWl0Rm9yTm90aWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gd2FpdEZvck5vdGlmaWNh
dGlvbjsKICAgICBpZiAoIXdhaXRGb3JOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggY2Y2YTFjNDAz
ZjJmMGI2YzY5ZmNmM2I2YmVlNzJjZDFjZTY4NTM5ZS4uYzM1YzRmY2QzYmZhYzk0MWJjMTdmMjVm
M2ZjMTFmNjU3NTk2ZWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVzZXJTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBh
bGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKKyAgICBVc2VyU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxs
b3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwsIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBtX3NvdXJj
ZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fYWxsb3dsaXN0KFdU
Rk1vdmUoYWxsb3dsaXN0KSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9ja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrbGlzdDsgfQog
ICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGVkRnJhbWVzOyB9CiAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwoKSBjb25z
dCB7IHJldHVybiBtX2xldmVsOyB9Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zb3VyY2U7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFN0cmluZz4gbV9ibG9ja2xpc3Q7CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBt
X2luamVjdGVkRnJhbWVzOwogICAgIFVzZXJTdHlsZUxldmVsIG1fbGV2ZWw7Ci0gICAgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IG1fcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG1fcGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDE0ZDBjNWY1YTUx
MjA5OTczNWQ4NTA4ODc1MTFhZWZmNTJlNjlmNDcuLmNhZTQyNDAxNTQ1MDdiYjY3NDgwYjU2ZTky
ZGU4OGNjNjYyNmM0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld0xheW91dFNp
emUoY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgT3B0aW9uYWw8ZG91YmxlPiYmIHNj
YWxlRmFjdG9yLCBPcHRpb25hbDxkb3VibGU+JiYgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
KQorYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgdmlld0xheW91dFNpemUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFj
dG9yLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgp
CiB7CiAgICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3IudmFsdWVfb3IobV9s
YXlvdXRTaXplU2NhbGVGYWN0b3IpOwogICAgIGRvdWJsZSBuZXdFZmZlY3RpdmVXaWR0aCA9IG1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aC52YWx1ZV9vcihtX21pbmltdW1FZmZlY3RpdmVEZXZp
Y2VXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaApp
bmRleCBjNDQ2NzkzZjhkN2MxNzI0NDQ2ZWY4OWM3ZDBiNTJkOTg2ZGZjNTFiLi4xNDYzNjJjNTJh
ZDBkYzMxZjg1ODhkZDRkM2U3YTM5ODFiZDU1YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdMYXlv
dXRTaXplOyB9CiAKICAgICBjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2V0Vmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiwgT3B0aW9uYWw8ZG91YmxlPiYm
IHNjYWxlRmFjdG9yID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxkb3VibGU+JiYgZWZmZWN0aXZl
V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Vmlld0xh
eW91dFNpemUoY29uc3QgRmxvYXRTaXplJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgc2NhbGVG
YWN0b3IgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGVmZmVjdGl2ZVdp
ZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0
YXRpb25zPiYgZGlzYWJsZWRBZGFwdGF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRB
ZGFwdGF0aW9uczsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0RGlzYWJsZWRBZGFwdGF0
aW9ucyhjb25zdCBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9ucz4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggNTI5Zjk5NjQxMGZhY2FlNjE0ZDk4Y2FjMzJm
NDMyOTI5MDgxMDZhZS4uZGU5OWY5YzAyOWJmMDY2NGQwNmRlMTgxM2RjN2QwNzU2ODFiNmI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTM4LDggKzM4LDggQEAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dG
ZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKTsKIAogc3RhdGljIERp
YWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlhbG9nRmVhdHVyZXNNYXAoY29uc3QgU3RyaW5nJik7Ci1z
dGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAm
LCBjb25zdCBjaGFyKiBrZXkpOwotc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUo
Y29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxv
YXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERp
YWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFy
KiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy8jZmVhdHVyZS1zZXBhcmF0b3IKIHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFy
IGNoYXJhY3RlciwgRmVhdHVyZU1vZGUgbW9kZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBXaW5kb3dG
ZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNT
dHJpbmcsIGNvbnN0IEZsbwogICAgIHJldHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywg
Y29uc3QgY2hhcioga2V5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUo
Y29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXkpCiB7CiAg
ICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMu
ZW5kKCkpCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0
dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioKICAgICAg
ICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJvbiIpOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01h
cCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVz
TWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsK
ICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJl
cy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaAppbmRleCBkNzgwZDI4OWFi
Y2Q3Yjg0ZWQwOWEzZTQ1MjI3MDVlNmJkZDM1ZGZmLi5jNjdhNDRmNmNlZWRiMGM0ZGI2ZmNlYTVm
Zjc3NGYxYTBmY2E0ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCkBAIC00
MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRSZWN0OwogCiBz
dHJ1Y3QgV2luZG93RmVhdHVyZXMgewotICAgIE9wdGlvbmFsPGZsb2F0PiB4OwotICAgIE9wdGlv
bmFsPGZsb2F0PiB5OwotICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKLSAgICBPcHRpb25hbDxm
bG9hdD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHg7CisgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4geTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7CiAKICAgICBib29sIG1lbnVCYXJWaXNpYmxlIHsgdHJ1
ZSB9OwogICAgIGJvb2wgc3RhdHVzQmFyVmlzaWJsZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dnaW5nQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1BlcmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tCmluZGV4IDdk
MzIzOWVkNzIwZTE2ZTlmYzI0Zjc1ZjZjNjNiNzA5YTc4ZmVkOGEuLjI4OTZmZTE5NzZmZmIxOGFk
ZmE3OTY2NmZlNjhlMTYzN2FiMjUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUGVyZm9ybWFuY2VMb2dnaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9QZXJmb3JtYW5jZUxvZ2dpbmdDb2NvYS5tbQpAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dp
bmc6OnBoeXNpY2FsRm9vdHByaW50KCkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1h
bmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKQogewogICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1JbmZvOwogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lO
Rk9fQ09VTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5oCmluZGV4IDUxYTEzZmM0OWE1MzIxOWRmMmY5YWUwOGNlMjVhZjkxMWI5NGQ1NjguLmJm
NmEyODEzZTRkNjA2MjUzMTkyZGMyMGNhYjY5MmZiNmFlMDBmMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0yMTgsNyArMjE4LDcg
QEAgcHJpdmF0ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgeyBudWxscHRyIH07CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBt
X2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBVUkwgbV9wcm90ZWN0ZWRVUkw7Ci0gICAgT3B0aW9u
YWw8VVJMPiBtX2RvY3VtZW50VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX2RvY3VtZW50
VVJMOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+IG1f
c2VsZlNvdXJjZTsKICAgICBTdHJpbmcgbV9zZWxmU291cmNlUHJvdG9jb2w7CiAgICAgQ1NQRGly
ZWN0aXZlTGlzdFZlY3RvciBtX3BvbGljaWVzOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IG1faGFz
aEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzOwogICAgIE9wdGlvblNldDxDb250ZW50U2VjdXJp
dHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVl
dHM7CiAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG1faW5zZWN1cmVOYXZpZ2F0aW9u
UmVxdWVzdHNUb1VwZ3JhZGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY2FjaGVkUmVzcG9uc2VIZWFkZXJzOworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1f
Y2FjaGVkUmVzcG9uc2VIZWFkZXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNw
cAppbmRleCAxNjE0MzRlYjkyMmYyNGUxMThmODUwOGFjY2NmNTlmYWJiZjgwNjVkLi5hNzJiMTBh
MTQ4ZTBiNzBmYzcwNGQzYjk3YTE0ZThiNjIzYzMyODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0LmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1CiAvLyBk
aXJlY3RpdmUtbmFtZSAgICA9IDEqKCBBTFBIQSAvIERJR0lUIC8gIi0iICkKIC8vIGRpcmVjdGl2
ZS12YWx1ZSAgID0gKiggV1NQIC8gPFZDSEFSIGV4Y2VwdCAiOyI+ICkKIC8vCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnBhcnNlRGlyZWN0aXZlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4g
YnVmZmVyKSAtPiBPcHRpb25hbDxQYXJzZWREaXJlY3RpdmU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBh
cnNlRGlyZWN0aXZlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKSAt
PiBzdGQ6Om9wdGlvbmFsPFBhcnNlZERpcmVjdGl2ZT4KIHsKICAgICBza2lwV2hpbGU8aXNBU0NJ
SVNwYWNlPihidWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKaW5kZXggNTQxYTVmZTZi
MjlmODQ4MzZlMDdhOTI0MWIwM2YyYWZmZWU4OWViZC4uYjMyZTg4NDVjMGRmOGNhNWYwOWQ5N2M2
NWNmOTAxMjE0YWJiODA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaApAQCAtOTMsNyArOTMs
NyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVl
OwogICAgIH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8
UGFyc2VkRGlyZWN0aXZlPiBwYXJzZURpcmVjdGl2ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9w
dGlvbmFsPFBhcnNlZERpcmVjdGl2ZT4gcGFyc2VEaXJlY3RpdmUoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdm9pZCBwYXJzZVJlcG9ydFVSSShQYXJzZWREaXJlY3Rp
dmUmJik7CiAgICAgdm9pZCBhZGREaXJlY3RpdmUoUGFyc2VkRGlyZWN0aXZlJiYpOwogICAgIHZv
aWQgYXBwbHlTYW5kYm94UG9saWN5KFBhcnNlZERpcmVjdGl2ZSYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLmgKaW5kZXggZjNiYjFhN2JiOWQzYjI5MzI0MzZiM2MxYzllZTUzY2IyMjNiZDhh
Yy4uOTQ4ZDhjYzg3NDI4ZGU4OWEwZmM4MDk5YzY1YmQwM2FjYWNkNWRiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIGVudW0gRW1wdHlUYWcg
eyBFbXB0eSB9OwogICAgIHN0cnVjdCBNYXJrYWJsZVRyYWl0cyB7CkBAIC04NCwyMCArODQsMjAg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlv
bmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBoZWFkZXJzOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4gaGVhZGVyc1NpemU7CiAgICAgaWYgKCFoZWFk
ZXJzU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
aGVhZGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaGVhZGVyOwogICAgICAgICBk
ZWNvZGVyID4+IGhlYWRlcjsKICAgICAgICAgaWYgKCFoZWFkZXIpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lI
ZWFkZXJUeXBlPiBoZWFkZXJUeXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1
cml0eVBvbGljeUhlYWRlclR5cGU+IGhlYWRlclR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVh
ZGVyVHlwZTsKICAgICAgICAgaWYgKCFoZWFkZXJUeXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTEwNSw3ICsxMDUsNyBAQCBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM+IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZAog
ICAgIH0KICAgICBoZWFkZXJzLm1faGVhZGVycy5zaHJpbmtUb0ZpdCgpOwogCi0gICAgT3B0aW9u
YWw8aW50PiBodHRwU3RhdHVzQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaHR0cFN0YXR1
c0NvZGU7CiAgICAgZGVjb2RlciA+PiBodHRwU3RhdHVzQ29kZTsKICAgICBpZiAoIWh0dHBTdGF0
dXNDb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXgg
N2IyYTcyMjdiNTUxNjhhZDU5Y2FhZGM3NzEwMzMyNTUwMTBlOTAyMC4uNWMxM2ZlYTI4ZGYzN2Yx
ZTIzZjI4Y2MzMjk1Y2E3ZTEyMmIzYjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRj
YXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCkKK0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYg
cG9saWN5LCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dp
bGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCkKICAgICA6IG1fcG9saWN5KHBvbGljeSkKICAg
ICAsIG1fc2NoZW1lKHNjaGVtZSkKICAgICAsIG1faG9zdChob3N0KQpAQCAtOTYsNyArOTYsNyBA
QCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgaWYgKG1fcG9ydEhhc1dpbGRjYXJkKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKIAogICAgIGlmIChwb3J0
ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmluZGV4IDhhZmYxZDll
Zjk3YjE5YjE5NzljMmI2Zjc1YzlhYmU2NTRhOThlOTEuLmEyZGI1MDQzODk4ZjJlNjk0N2JjN2Iw
YTJkZDY0NDNhYjUxNDM4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBT
ZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNh
cmQpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhh
c1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7CiAKICAgICBib29sIG1hdGNoZXMoY29u
c3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsK
IApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NjaGVtZTsKICAgICBT
dHJpbmcgbV9ob3N0OwogICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+
IG1fcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CiAKICAgICBib29s
IG1faG9zdEhhc1dpbGRjYXJkOwogICAgIGJvb2wgbV9wb3J0SGFzV2lsZGNhcmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3QuY3BwCmluZGV4IGI4N2Q4NWFmZDEzNzU0OTQzNzQ1NmZkYWMzNGNiYjY5MzAyZTUx
NjUuLjkyNTY3NWYzMzBhZTliZTgyNTIxODM5MDFlNzdlMjk2ZWJlYmI5NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3QuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShTdHIK
IC8vICAgICAgICAgICAgICAgICAgIC8gKCBbIHNjaGVtZSAiOi8vIiBdIGhvc3QgWyBwb3J0IF0g
WyBwYXRoIF0gKQogLy8gICAgICAgICAgICAgICAgICAgLyAiJ3NlbGYnIgogLy8KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3Q6OlNvdXJjZT4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VT
b3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7
CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMzM2LDcgKzMzNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlv
bmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAvLyAgICAgICAgICAg
ICAgICAgICAgIDsgPHNjaGVtZT4gcHJvZHVjdGlvbiBmcm9tIFJGQyAzOTg2CiAvLyBzY2hlbWUg
ICAgICA9IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyAiKyIgLyAiLSIgLyAiLiIgKQogLy8KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFy
c2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAg
ICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQoKSk7CiAKQEAgLTM2MCw3
ICszNjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxTdHJp
bmc+IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpcwogLy8gICAgICAgICAgICAgICAgICAg
LyAiKiIKIC8vIGhvc3QtY2hhciAgICAgICAgID0gQUxQSEEgLyBESUdJVCAvICItIgogLy8KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3Q6Okhvc3Q+IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBh
cnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlcikKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdDo6SG9zdD4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VIb3N0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewog
ICAgIEFTU0VSVChidWZmZXIucG9zaXRpb24oKSA8PSBidWZmZXIuZW5kKCkpOwogCkBAIC0zOTYs
NyArMzk2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6SG9zdD4KICAgICByZXR1cm4gaG9zdDsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBhdGgoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewog
ICAgIEFTU0VSVChidWZmZXIucG9zaXRpb24oKSA8PSBidWZmZXIuZW5kKCkpOwogICAgIApAQCAt
NDE1LDcgKzQxNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PFN0cmluZz4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzCiAKIC8vIHBvcnQgICAgICAg
ICAgICAgID0gIjoiICggMSpESUdJVCAvICIqIiApCiAvLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9y
dD4gQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RkOjpvcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQ
b3J0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBvcnQoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlci5w
b3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQoKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXgg
ODE3MzgwN2IxMzY1MWQwZjlkYTU4MmYwMWQ4OGU0YTNlNzliYzkyMy4uZjU3NDRlMmE5OTM2ZDgz
YzM5MTdmYTY2NjgyMmZmZjJkYjExMjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtNjAsNyAr
NjAsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGhhc1dpbGRjYXJkIHsgZmFsc2UgfTsKICAg
ICB9OwogICAgIHN0cnVjdCBQb3J0IHsKLSAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHZhbHVl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB2YWx1ZTsKICAgICAgICAgYm9vbCBo
YXNXaWxkY2FyZCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBzdHJ1Y3QgU291cmNlIHsKQEAgLTcz
LDExICs3MywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQcm90b2NvbEFsbG93ZWRCeVN0YXIo
Y29uc3QgVVJMJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFNvdXJjZT4gcGFyc2VTb3Vy
Y2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBwYXJzZVNjaGVtZShTdHJpbmdQ
YXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxIb3N0PiBwYXJzZUhvc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0
aW9uYWw8UG9ydD4gcGFyc2VQb3J0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFN0cmluZz4g
cGFyc2VQYXRoKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8U291cmNlPiBwYXJzZVNv
dXJjZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGFyc2VTY2hlbWUo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxIb3N0PiBwYXJzZUhvc3QoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RkOjpvcHRpb25hbDxQb3J0PiBwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHBhcnNlUGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBh
cnNlTm9uY2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhhc2hTb3VyY2UoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCBiNmE5YzM2ZDEyZWJkZDk2MGFjNjc3
MDlmMGQxNzY0YzI1ZWY4YzQzLi43OWZiOTVhYTgwMTg3MzVmYmNhMGY1MDZmZWVkNmUwOWIxNDIx
YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpLmNvbnRh
aW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJc0NvcHlLZXlEb3duKTsKIH0KIAotT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQorc3RkOjpvcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VS
TCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aAppbmRleCA0OTZkOGI3ODI2MDgyMzc1NTg2YTBiMzE5MWYzZDM2NDZlYTY1ZDhkLi5mNzk0ODli
ZDE4ZWFjYTI4N2IyYzg2NDI1NTY1NGJhOGQ5YzM5MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJs
aWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29udGVudENoYW5nZU9ic2VydmVyJiBtX2NvbnRl
bnRDaGFuZ2VPYnNlcnZlcjsKICAgICAgICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwotICAg
ICAgICBPcHRpb25hbDxib29sPiBtX3dhc0hpZGRlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBtX3dhc0hpZGRlbjsKICAgICAgICAgYm9vbCBtX2hhZFJlbmRlcmVyIHsgZmFsc2UgfTsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRs
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5k
ZXggZjlhNDMwYTFkYmRlNWRiZjNkMGFhYzE4MGQ1YTRmMGY3YWYyZDA4Yy4uMjA1OTAwNGU3MDdl
YzM1NDNjOGJiYThkNTdlNmQwYTg1ZjM4YjVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Nyb2xsKCkKICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVy
LT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiB9CiAKLXN0YXRpYyBJbnRQb2ludCBhZGp1c3RBdXRv
c2Nyb2xsRGVzdGluYXRpb25Gb3JJbnNldEVkZ2VzKEludFBvaW50IGF1dG9zY3JvbGxQb2ludCwg
T3B0aW9uYWw8SW50UG9pbnQ+IGluaXRpYWxBdXRvc2Nyb2xsUG9pbnQsIEZsb2F0UmVjdCB1bm9i
c2N1cmVkUm9vdFZpZXdSZWN0KQorc3RhdGljIEludFBvaW50IGFkanVzdEF1dG9zY3JvbGxEZXN0
aW5hdGlvbkZvckluc2V0RWRnZXMoSW50UG9pbnQgYXV0b3Njcm9sbFBvaW50LCBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBpbml0aWFsQXV0b3Njcm9sbFBvaW50LCBGbG9hdFJlY3QgdW5vYnNjdXJl
ZFJvb3RWaWV3UmVjdCkKIHsKICAgICBJbnRQb2ludCByZXN1bHRQb2ludCA9IGF1dG9zY3JvbGxQ
b2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlVGhyZWFkTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlVGhyZWFkTGludXguY3BwCmluZGV4IGZlMWRmNmY2OTFiOWQxNGRiOTNjNjViZWIzYzc3MWE0
ZGI5NTZjYzMuLjg1YjI5MGFjYmE1NzM5NjhiMmU2Y2E0ZjY0ODFmNmI3MzUzNmEzMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRM
aW51eC5jcHAKQEAgLTEwNyw4ICsxMDcsOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBs
YXRmb3JtU2F2ZVN0YXRlQmVmb3JlU3RhcnRpbmcoKQogfQogCiBzdHJ1Y3QgVGhyZWFkSW5mbyB7
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwotICAgIE9wdGlvbmFsPGZsb2F0PiBjcHVVc2Fn
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBjcHVVc2FnZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcHJldmlvdXNVdGltZSB7IDAg
fTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcHJldmlvdXNTdGltZSB7IDAgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDU4NjQ5MzE5
NjI2YjBmY2ZlMmEyN2RlNWMyNmZiYWM4M2Y1ZTJiN2IuLmQzNDhkNjA5MzE4MzZiMTQzMmI3ZDEx
NDJiMDVhMWJhMGNmNGJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29w
eUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0YS5m
bGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJc0NvcHlLZXlEb3duKTsKIH0K
ICAgICAKLU9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6b3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogewogICAgIGlmIChkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZs
YWdzOjpJc01vZGFsKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCBkMDE5NTQzNzQ4YTNkMjU2MTJj
NDgzOTA2MTFhOTNkMmViYzAwMjc0Li5jZGE3NDhhOTM2ODUxZjJjYjRkMjM3NTZlYTAzYmUzZmZi
MTI1ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBA
IC0xMDc4LDEwICsxMDc4LDEwIEBAIEludFBvaW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRp
b25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewogICAgIFBhZ2UqIHBh
Z2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9z
aXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSk7CiAKICAgICBhdXRvIGZyYW1lID0gdG9Vc2VyU3Bh
Y2VGb3JQcmltYXJ5U2NyZWVuKHNjcmVlblJlY3RGb3JEaXNwbGF5KHBhZ2UtPmNocm9tZSgpLmRp
c3BsYXlJRCgpKSk7Ci0gICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiArIGF1dG9z
Y3JvbGxBZGp1c3RtZW50RmFjdG9yRm9yU2NyZWVuQm91bmRhcmllcyhtX2xhc3RLbm93bk1vdXNl
R2xvYmFsUG9zaXRpb24sIGZyYW1lKTsKKyAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0
aW9uLnZhbHVlX29yKEludFBvaW50KCkpICsgYXV0b3Njcm9sbEFkanVzdG1lbnRGYWN0b3JGb3JT
Y3JlZW5Cb3VuZGFyaWVzKG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwgZnJhbWUpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDEzOWY0ZTc2NTFkYzg4MTE3MDRlYzM0
ZWY0NmI5MzE0ZjgxY2NkNzUuLmU4MDU3ZjM4ZDcwM2Q2NjZmZjA0YjA4OTJkZjA1OWMwNWRlYjBk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbml6ZVN0YXRlRnJvbVNjcm9sbGluZ1RyZWUo
KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXBwbHlQZW5kaW5nU2Nyb2xsVXBk
YXRlcygpOwogCi0gICAgbV9zY3JvbGxpbmdUcmVlLT50cmF2ZXJzZVNjcm9sbGluZ1RyZWUoWyZd
KFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFNjcm9sbGluZ05vZGVUeXBlLCBPcHRpb25hbDxGbG9h
dFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3Bv
cnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpIHsKKyAgICBtX3Njcm9sbGlu
Z1RyZWUtPnRyYXZlcnNlU2Nyb2xsaW5nVHJlZShbJl0oU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwg
U2Nyb2xsaW5nTm9kZVR5cGUsIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRp
b24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wg
c2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpIHsKICAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICYm
IHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
U2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9u
aXplU3RhdGVGcm9tU2Nyb2xsaW5nVHJlZSAtIG5vZGUgIiA8PCBub2RlSUQgPDwgIiBzY3JvbGwg
cG9zaXRpb24gIiA8PCBzY3JvbGxQb3NpdGlvbik7CiAgICAgICAgICAgICB1cGRhdGVTY3JvbGxQ
b3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbi52YWx1ZSgpLCBs
YXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZTo6VXNlciwgU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbjo6U2V0KTsKQEAgLTM0NywxMyArMzQ3LDEzIEBAIEZyYW1lVmlldyogQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjphcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlE
LCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2ludD4g
bGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjphcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQg
c2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpv
cHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3Jv
bGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24pCiB7CiAgICAgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogICAgIHVwZGF0
ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChzY3JvbGxpbmdOb2RlSUQsIHNjcm9sbFBv
c2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsVHlwZSwgc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbik7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxp
bmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBPcHRpb25hbDxGbG9h
dFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3
cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIApAQCAtMzk3LDEzICszOTcsMTMgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpyZWNvbmNpbGVTY3JvbGxpbmdTdGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldywg
Y28KIAogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCBnZXRDdXJyZW50
UHJvY2Vzc0lEKCkgPDwgIiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yICIgPDwgdGhpcyA8PCAi
IHJlY29uY2lsZVNjcm9sbGluZ1N0YXRlIHNjcm9sbFBvc2l0aW9uICIgPDwgc2Nyb2xsUG9zaXRp
b24gPDwgIiB0eXBlICIgPDwgc2Nyb2xsVHlwZSA8PCAiIHN0YWJpbGl0eSAiIDw8IHZpZXdwb3J0
UmVjdFN0YWJpbGl0eSA8PCAiICIgPDwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAK
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxheW91dFZpZXdwb3J0UmVjdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmlld3BvcnRSZWN0OwogCiAgICAgV1RGOjpzd2l0Y2hP
bihsYXlvdXRWaWV3cG9ydE9yaWdpbk9yT3ZlcnJpZGVSZWN0LAotICAgICAgICBbJmZyYW1lVmll
d10oT3B0aW9uYWw8RmxvYXRQb2ludD4gb3JpZ2luKSB7CisgICAgICAgIFsmZnJhbWVWaWV3XShz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IG9yaWdpbikgewogICAgICAgICAgICAgaWYgKG9yaWdp
bikKICAgICAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2lu
KExheW91dFBvaW50KG9yaWdpbi52YWx1ZSgpKSwgRnJhbWVWaWV3OjpUcmlnZ2VyTGF5b3V0T3JO
b3Q6Ok5vKTsKLSAgICAgICAgfSwgWyZmcmFtZVZpZXcsICZsYXlvdXRWaWV3cG9ydFJlY3QsIHZp
ZXdwb3J0UmVjdFN0YWJpbGl0eV0oT3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZVJlY3QpIHsK
KyAgICAgICAgfSwgWyZmcmFtZVZpZXcsICZsYXlvdXRWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVj
dFN0YWJpbGl0eV0oc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlUmVjdCkgewogICAg
ICAgICAgICAgaWYgKCFvdmVycmlkZVJlY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC03OTcsNyArNzk3LDcgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU2Nyb2xsaW5nTm9kZUlEIG4KICNlbmRpZgogfQogCi12
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6d2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAgaWYgKG1f
c2Nyb2xsaW5nVHJlZSkKICAgICAgICAgbV9zY3JvbGxpbmdUcmVlLT53aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aAppbmRleCA4NzE0OThlZjY0NjQ5YzlmNzhmZmUyYTI1M2ZiOTYzNGY0ZWE0Zjc2Li4yYzgwZGUy
MmU2MjBiYWI0ZGYzOGViMTJmMjM1NTNjYjM1Y2IyNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHlQZW5kaW5nU2Nyb2xsVXBk
YXRlcygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVNjcm9sbFVwZGF0ZShTY3Jv
bGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVNjcm9sbFVwZGF0ZShTY3JvbGxpbmdO
b2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91
dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxl
V2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2Up
IGZpbmFsOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU2Nyb2xsaW5nTm9kZUlELCBPcHRp
b25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb24+KSBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhc1N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTY3JvbGxpbmdOb2RlSUQp
IGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzU3Vic2Nyb2xsZXJzKCkgY29uc3QgZmluYWw7CiAKQEAgLTE1Nyw3ICsxNTcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpOwog
ICAgIHZvaWQgdXBkYXRlRXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICAgICAKLSAgICB2b2lkIHVw
ZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0
IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwg
U2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBG
bG9hdFBvaW50Jiwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgCiAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IGVjMzk5MDI3NDgzMDRkZDEwOGQ2NDI2Zjk5MTU3ZGE2
ZWJiZDgxNGYuLmRhMTFlYzA1ZmM1Nzc3OTg2YmQwOGRkNGZmMmY2OGM4ODk4MzUxZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0
U25hcE9mZnNldHMoTGF5b3V0VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2ZmcwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBPcHRpb25hbDx1bnNpZ25l
ZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29u
c3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlw
ZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRC
ZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0
VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91
dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAgTGF5b3V0VHlwZSBkaWZmZXJl
bmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAg
aWYgKCFkaWZmZXJlbmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAxZWNmYWQxNmUxMzhlMGZiYzU5MThmZDIy
YjdhYmRmNjQ3YjY3MzRlLi4xNTVhOTc0NjFkMjBjMDc1NjdkZWJmYmRlYjhmYjYwNDI0NWJkNWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+IE91dHB1dFR5cGUgY29u
dmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8VW5p
dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0
IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsUG9zaXRpb25Gb3JE
aXJlY3Rpb25hbFNuYXBwaW5nID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldChTY3Jv
bGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFVuaXRUeXBlIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxVbml0VHlw
ZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogfTsKIAogdXNpbmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xs
U25hcE9mZnNldHNJbmZvPExheW91dFVuaXQsIExheW91dFJlY3Q+OwpAQCAtODIsMTMgKzgyLDEz
IEBAIHVzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0LCBGbG9hdFJlY3Q+OwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KIExheW91dFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVu
aXRzKGZsb2F0IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdDsKIHRlbXBsYXRlIDw+IHRl
bXBsYXRlIDw+Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
LCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPGZs
b2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zm
c2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiAK
IHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvcikgY29uc3Q7CiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86
OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmll
d3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxv
Y2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFs
U25hcHBpbmcpIGNvbnN0OworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVu
c2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7
CiAKIAogY29uc3QgdW5zaWduZWQgaW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFYOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmgKaW5kZXggNTkwOTg0ZjM1NjdjM2M4ZDEyOTAwN2RjNTE3YmY2NWJlYTA5NjQ1MS4uNjY3
NDY2M2FhZTY0MGE3YWNiMjY1ZTg5MDg2MWRhMzg1N2EwMzllNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBn
aXZlbiBmcmFtZSB2aWV3IGhhcyBiZWVuIGxhaWQgb3V0LgogICAgIHZpcnR1YWwgdm9pZCBmcmFt
ZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYpIHsgfQogCi0gICAgdXNpbmcgTGF5b3V0Vmll
d3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVjdCA9IFdURjo6VmFyaWFudDxPcHRpb25hbDxGbG9hdFBv
aW50PiwgT3B0aW9uYWw8RmxvYXRSZWN0Pj47CisgICAgdXNpbmcgTGF5b3V0Vmlld3BvcnRPcmln
aW5Pck92ZXJyaWRlUmVjdCA9IFdURjo6VmFyaWFudDxzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+OwogICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVT
Y3JvbGxpbmdTdGF0ZShGcmFtZVZpZXcmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgTGF5b3V0
Vmlld3BvcnRPcmlnaW5Pck92ZXJyaWRlUmVjdCYsIFNjcm9sbFR5cGUsIFZpZXdwb3J0UmVjdFN0
YWJpbGl0eSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikgeyB9CiAKICAgICAvLyBTaG91
bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBzbG93IHJlcGFpbnQgb2JqZWN0cyBzZXQgY2hhbmdl
cy4KQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdmlydHVhbCBmdW5j
dGlvbnMgYXJlIGN1cnJlbnRseSB1bmlxdWUgdG8gdGhlIHRocmVhZGVkIHNjcm9sbGluZyBhcmNo
aXRlY3R1cmUuIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoU2Nyb2xsYWJs
ZUFyZWEmLCBjb25zdCBJbnRQb2ludCYsIFNjcm9sbFR5cGUgPSBTY3JvbGxUeXBlOjpQcm9ncmFt
bWF0aWMsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmco
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZT4pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBTY3JvbGxpbmdOb2RlSUQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzUHJv
Y2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSB7IH0KIAogICAgIC8vIENyZWF0ZSBhbiB1bnBh
cmVudGVkIG5vZGUuCiAgICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgY3JlYXRlTm9kZShTY3Jv
bGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5ld05vZGVJRCkgeyByZXR1cm4gbmV3Tm9k
ZUlEOyB9CkBAIC0xNzUsNyArMTc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEm
LCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IC8qIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiAvKiBub21pbmFsRnJhbWVzUGVyU2Vjb25kICovKSB7IH0KIAogICAgIHN0YXRp
YyBTdHJpbmcgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE9wdGlvblNldDxTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbj4pOwogICAgIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnNBc1RleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggNzNlOTJh
NjRkMjMyNWM1ZTFlYTU2OGM0NGQyZDZmOGRkZmE2YTc1Mi4uYTFkOWMwODRkOGYyOWNjMzBmNTQy
MGRhNTVlNDA1MmFkZTI4YWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0U2l6ZSBtX2NvbnRlbnRTaXplOwogCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0OworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7CiB9Owog
CiBjbGFzcyBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgewpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgog
ICAgIEZsb2F0U2l6ZSBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07CiAg
ICAgYm9vbCBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OwotICAg
IE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
LmNwcAppbmRleCAxODJmMDdlNjg3NDY0YTY2ZDYzZDA0M2ZjN2NhNTVkZTYyYjgxZjkxLi5lYTQx
ZjVhMTQxNjg1ZGJlYWY5MDA5YTFlNDQ3NjRmNmY4NGUyOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxv
YXRQb2kKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6Ok1heExheW91dFZpZXdwb3J0
T3JpZ2luKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoT3B0aW9uYWw8RmxvYXRTaXplPiB2aWV3cG9ydFNp
emUpCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRPdmVycmlkZVZp
c3VhbFZpZXdwb3J0U2l6ZShzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gdmlld3BvcnRTaXplKQog
ewogICAgIGlmICh2aWV3cG9ydFNpemUgPT0gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggODdi
MGM3Yzc2OWZhNWIxMTNiNDVhMDg1YWUzYjNmNWI3ZTE5MTgzOS4uMDY3YTg4MWZkNjBjMmE0NzM5
NmQ5YTRjMzMyNTExMWMzMWQ1NTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5o
CkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IG1heExheW91dFZpZXdw
b3J0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXhMYXlvdXRWaWV3cG9ydE9yaWdpbjsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3Qg
RmxvYXRQb2ludCYpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBvdmVycmlkZVZpc3VhbFZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemU7
IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6
ZShPcHRpb25hbDxGbG9hdFNpemU+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gb3Zl
cnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlVmlzdWFs
Vmlld3BvcnRTaXplOyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3ZlcnJpZGVWaXN1
YWxWaWV3cG9ydFNpemUoc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+KTsKIAogICAgIGludCBoZWFk
ZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0SGVhZGVySGVpZ2h0KGludCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9sYXlvdXRWaWV3cG9ydDsKICAgICBGbG9hdFBvaW50IG1f
bWluTGF5b3V0Vmlld3BvcnRPcmlnaW47CiAgICAgRmxvYXRQb2ludCBtX21heExheW91dFZpZXdw
b3J0T3JpZ2luOwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZpZXdw
b3J0U2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9vdmVycmlkZVZpc3VhbFZp
ZXdwb3J0U2l6ZTsKIAogICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZhY3RvciB7IDEgfTsKICAgICBm
bG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggNzQ3MTQ4MmNmNGEzZTA1MzM4NmJiMDhl
ODdiNWIzNmE1ZWMzNjliYi4uMGVjMjdhMmUwMWI5ZjY3MTFkMDliMjJjZGZjNjQ4MTVkODU1NGY4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5j
cHAKQEAgLTIzNSwxNCArMjM1LDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dHJhdmVyc2VTY3Jv
bGxpbmdUcmVlKFZpc2l0b3JGdW5jdGlvbiYmIHZpc2l0b3JGdW5jdGlvbikKIHZvaWQgU2Nyb2xs
aW5nVHJlZTo6dHJhdmVyc2VTY3JvbGxpbmdUcmVlUmVjdXJzaXZlKFNjcm9sbGluZ1RyZWVOb2Rl
JiBub2RlLCBjb25zdCBWaXNpdG9yRnVuY3Rpb24mIHZpc2l0b3JGdW5jdGlvbikKIHsKICAgICBi
b29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0ID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8RmxvYXRQ
b2ludD4gc2Nyb2xsUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3Jv
bGxQb3NpdGlvbjsKICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KG5vZGUp
KSB7CiAgICAgICAgIGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZT4obm9kZSk7CiAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5n
Tm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgc2Nyb2xsZWRTaW5jZUxhc3RD
b21taXQgPSBzY3JvbGxpbmdOb2RlLnNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KCk7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoaXM8
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAgIGxheW91dFZp
ZXdwb3J0T3JpZ2luID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4o
bm9kZSkubGF5b3V0Vmlld3BvcnQoKS5sb2NhdGlvbigpOwogCkBAIC00NzYsNyArNDc2LDcgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlOjpub3RpZnlSZWxhdGVkTm9kZXNSZWN1cnNpdmUoU2Nyb2xsaW5n
VHJlZU5vZGUmIG5vZGUpCiAgICAgfQogfQogCi1PcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNj
cm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxp
bmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlSUQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2xhdGNoaW5nQ29udHJvbGxlci5sYXRjaGVkTm9kZUlEKCk7CiB9CkBAIC00OTgsMTMg
KzQ5OCwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9u
KEZsb2F0UG9pbnQgcG9zaXRpb24pCiAgICAgbV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9z
aXRpb24gPSBwb3NpdGlvbjsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRHZXN0dXJlU3Rh
dGUoT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKK3ZvaWQg
U2Nyb2xsaW5nVHJlZTo6c2V0R2VzdHVyZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVl
U3RhdGVMb2NrIH07CiAgICAgbV90cmVlU3RhdGUuZ2VzdHVyZVN0YXRlID0gZ2VzdHVyZVN0YXRl
OwogfQogCi1PcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gU2Nyb2xsaW5nVHJlZTo6
Z2VzdHVyZVN0YXRlKCkKK3N0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IFNj
cm9sbGluZ1RyZWU6Omdlc3R1cmVTdGF0ZSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJl
ZVN0YXRlTG9jayB9OwogICAgIHJldHVybiBtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGU7CkBAIC02
NzMsNyArNjczLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxCeVNpbXVsYXRpbmdXaGVl
bEV2ZW50Rm9yVGVzdGluZyhTY3JvbGxpbmdOb2RlSUQgbm9kZUkKICAgICBkb3duY2FzdDxTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpLnNjcm9sbEJ5KGRlbHRhKTsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdUcmVlOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQpCit2b2lkIFNjcm9sbGluZ1RyZWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFs
RnJhbWVzUGVyU2Vjb25kKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sg
fTsKICAgICBtX3RyZWVTdGF0ZS5kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC03MDAsNyArNzAw
LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp3aWxsUHJvY2Vzc1doZWVsRXZlbnQoKQogICAgIG1f
bGFzdFdoZWVsRXZlbnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAKLU9wdGlvbmFs
PHVuc2lnbmVkPiBTY3JvbGxpbmdUcmVlOjpub21pbmFsRnJhbWVzUGVyU2Vjb25kKCkKK3N0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IFNjcm9sbGluZ1RyZWU6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmQo
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4g
bV90cmVlU3RhdGUubm9taW5hbEZyYW1lc1BlclNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBkY2YxNGNkNmI2YmYwNTBiZTc5Nzk2
MjY3N2NiYjI5Yjg0NTBjYzczLi41ZDkzZTQ0ZGRhYjhmM2U2ZDlmZDk1MDRjNzFmZWUzZjVhZmJk
OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFNj
cm9sbGluZ1RyZWVOb2RlKiBub2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdDsKIAotICAg
IHVzaW5nIFZpc2l0b3JGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZCAoU2Nyb2xsaW5nTm9k
ZUlELCBTY3JvbGxpbmdOb2RlVHlwZSwgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRp
b24sIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHNjcm9s
bGVkU2luY2VMYXN0Q29tbWl0KT47CisgICAgdXNpbmcgVmlzaXRvckZ1bmN0aW9uID0gV1RGOjpG
dW5jdGlvbjx2b2lkIChTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ05vZGVUeXBlLCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9p
bnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47
CiAgICAgdm9pZCB0cmF2ZXJzZVNjcm9sbGluZ1RyZWUoVmlzaXRvckZ1bmN0aW9uJiYpOwogCiAg
ICAgLy8gQ2FsbGVkIGFmdGVyIGEgc2Nyb2xsaW5nIHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBhIHNj
cm9sbCBhbmQgdXBkYXRlZCBpdHMgbGF5ZXJzLgpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGUuZ2V0KCk7IH0K
LSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IGxhdGNoZWROb2RlSUQoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0Owog
ICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9kZSgpOwogCiAgICAgYm9vbCBoYXNGaXhlZE9yU3RpY2t5
KCkgY29uc3QgeyByZXR1cm4gISFtX2ZpeGVkT3JTdGlja3lOb2RlQ291bnQ7IH0KQEAgLTIxOCw3
ICsyMTgsNyBAQCBwdWJsaWM6CiAKICAgICBMb2NrJiB0cmVlTG9jaygpIFdURl9SRVRVUk5TX0xP
Q0sobV90cmVlTG9jaykgeyByZXR1cm4gbV90cmVlTG9jazsgfQogCi0gICAgdm9pZCB3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21p
bmFsRnJhbWVzUGVyU2Vjb25kKTsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKTsK
ICAgICAKICAgICBib29sIGhhc1Byb2Nlc3NlZFdoZWVsRXZlbnRzUmVjZW50bHkoKTsKQEAgLTIy
Nyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFNjcm9sbFVwZGF0ZSB7CiAgICAgICAg
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQgeyAwIH07CiAgICAgICAgIEZsb2F0UG9pbnQgc2Nyb2xs
UG9zaXRpb247Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3Jp
Z2luOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3Jp
Z2luOwogICAgICAgICBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHVwZGF0ZUxheWVyUG9z
aXRpb25BY3Rpb24geyBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jIH07CiAgICAg
ICAgIAogICAgICAgICBib29sIGNhbk1lcmdlKGNvbnN0IFNjcm9sbFVwZGF0ZSYgb3RoZXIpIGNv
bnN0CkBAIC0yNTEsMTAgKzI1MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgRmxvYXRQb2ludCBtYWlu
RnJhbWVTY3JvbGxQb3NpdGlvbigpIGNvbnN0IFdURl9SRVFVSVJFU19MT0NLKG1fdHJlZVN0YXRl
TG9jayk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihGbG9hdFBvaW50KTsK
IAotICAgIHZvaWQgc2V0R2VzdHVyZVN0YXRlKE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlPik7Ci0gICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0
ZSgpOworICAgIHZvaWQgc2V0R2VzdHVyZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUoKTsKIAotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZCgpOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKCk7CiAKICAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnNJ
bnRlcm5hbCgpIFdURl9SRVFVSVJFU19MT0NLKG1fdHJlZUxvY2spOwogICAgIHZvaWQgcmVtb3Zl
QWxsTm9kZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3RyZWVMb2NrKTsKQEAgLTI5NSw4ICsyOTUs
OCBAQCBwcml2YXRlOgogICAgICAgICBFdmVudFRyYWNraW5nUmVnaW9ucyBldmVudFRyYWNraW5n
UmVnaW9uczsKICAgICAgICAgRmxvYXRQb2ludCBtYWluRnJhbWVTY3JvbGxQb3NpdGlvbjsKICAg
ICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEIHsgMCB9OwotICAgICAgICBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7Ci0gICAgICAgIE9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGU7CiAg
ICAgICAgIEhhc2hTZXQ8U2Nyb2xsaW5nTm9kZUlEPiBub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5k
aW5nOwogICAgICAgICBIYXNoU2V0PFNjcm9sbGluZ05vZGVJRD4gbm9kZXNXaXRoQWN0aXZlU2Ny
b2xsU25hcDsKICAgICAgICAgSGFzaFNldDxTY3JvbGxpbmdOb2RlSUQ+IG5vZGVzV2l0aEFjdGl2
ZVVzZXJTY3JvbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyMjAz
Y2UyZjMwYjJlY2U2ZjUyYmZiYzUzYzQ2OWJmZDc1ZTdkZTU1Li5mNjI2ZDlkNjViZjU4MTE4NTJi
ZTJiNTEwNGViYjMzZGFiYzYwM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNw
cApAQCAtODcsNyArODcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nUwogICAgICAgICBtX292
ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplID0gc3RhdGUub3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUoKTsKIH0KIAotYm9vbCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxQ
b3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IE9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCkKK2Jvb2wgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9y
dE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCkKIHsKICAgICByZXR1cm4gcG9zaXRpb24gPT0gY3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCkgJiYgKCFvdmVycmlkZUxheW91dFZpZXdwb3J0IHx8IG92ZXJy
aWRlTGF5b3V0Vmlld3BvcnQudmFsdWUoKSA9PSBtX2xheW91dFZpZXdwb3J0KTsKIH0KQEAgLTEx
NCw3ICsxMTQsNyBAQCBGbG9hdFJlY3QgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
bGF5b3V0Vmlld3BvcnRGb3JTY3JvbGxQb3NpdGlvbihjb25zdAogICAgIHJldHVybiBsYXlvdXRW
aWV3cG9ydDsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRh
dGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+IG92
ZXJyaWRlTGF5b3V0Vmlld3BvcnQpCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGU6OnVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0KQogewogICAgIGlmIChvdmVycmlkZUxh
eW91dFZpZXdwb3J0KQogICAgICAgICBzZXRMYXlvdXRWaWV3cG9ydChvdmVycmlkZUxheW91dFZp
ZXdwb3J0LnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDZhZGYw
YTU2YzNmMzZlNjliZDE5YjZhZTA2ODNlZDZhYzU4MzZmZGMuLjkyMjA0YThmMDMxMmQzMjg1Nzhm
M2MzOWNiOGZlZDBiNDMzNzdhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAg
LTY1LDggKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cyBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Jl
aGF2aW9yRm9yRml4ZWQ7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9y
Q3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAg
IGJvb2wgc2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRp
b24oc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbFBv
c2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpIG92ZXJyaWRl
OwogICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmLCBmbG9hdCBzY2FsZSwgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzID0g
U3RpY2tUb0RvY3VtZW50Qm91bmRzKSBjb25zdDsKIAogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMo
V1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xh
eW91dFZpZXdwb3J0OwogICAgIEZsb2F0UG9pbnQgbV9taW5MYXlvdXRWaWV3cG9ydE9yaWdpbjsK
ICAgICBGbG9hdFBvaW50IG1fbWF4TGF5b3V0Vmlld3BvcnRPcmlnaW47Ci0gICAgT3B0aW9uYWw8
RmxvYXRTaXplPiBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplOworICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRTaXplPiBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplOwogICAgIAogICAgIGZs
b2F0IG1fZnJhbWVTY2FsZUZhY3RvciB7IDEgfTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNl
dCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggNGFkZDlmYjNm
ODdlOTZjOTYwYmExMGNhNzdjMjc1NDg0MjkxOGE0OS4uNWU1ZWZlNjAzNTgyNTBmZTI5ZDMwOTBh
MDdlNDViZTRmZTJhMmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAg
LTU2LDcgKzU2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpyZWNl
aXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICB9CiB9CiAKLU9wdGlv
bmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9j
ZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nRGF0
YUZvckV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBhbGxv
d0xhdGNoaW5nKSBjb25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250
cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlTGF0
Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0RhdGFGb3JFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgYWxsb3dMYXRjaGluZykgY29uc3QKIHsKICAgICBpZiAo
IWFsbG93TGF0Y2hpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Miw3ICs3
Miw3IEBAIE9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGlu
Z05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250
cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9k
ZUlEPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29u
c3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICBpZiAo
bV9sYXRjaGVkTm9kZUFuZFN0ZXBzKQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxTY3JvbGxp
bmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2RlSUQo
KSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFNjcm9sbGlu
Z1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+
IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2RlQW5kU3RlcHMoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3Jv
bGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9s
bGVyOjpsYXRjaGVkTm9kZUFuZFN0ZXBzKCkgY29uc3QKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICByZXR1cm4gbV9sYXRjaGVkTm9kZUFuZFN0ZXBzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxh
dGNoaW5nQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oCmluZGV4IDI4OWExYzQwMDg4MTczYjQ4YzNhZTQ1
MGQ2NmVmYTFiZTVmNzE1YzguLjY5YmFlN2VlMWYyNWRiYzdiYzk5NDQ5ODIzY2Y2MWUwZDdmMDc5
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmgKQEAgLTUwLDExICs1MCwxMSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4sIGJvb2wgYWxsb3dM
YXRjaGluZyk7CiAKLSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBz
PiBsYXRjaGluZ0RhdGFGb3JFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29sIGFs
bG93TGF0Y2hpbmcpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFBy
b2Nlc3NpbmdTdGVwcz4gbGF0Y2hpbmdEYXRhRm9yRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgYm9vbCBhbGxvd0xhdGNoaW5nKSBjb25zdDsKICAgICB2b2lkIG5vZGVEaWRIYW5kbGVF
dmVudChTY3JvbGxpbmdOb2RlSUQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
PiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgYm9vbCBhbGxvd0xhdGNoaW5nKTsKIAotICAg
IE9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gbGF0Y2hlZE5vZGVJRCgpIGNvbnN0OwotICAgIE9w
dGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+IGxhdGNoZWROb2RlQW5kU3Rl
cHMoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gbGF0Y2hlZE5v
ZGVJRCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3Np
bmdTdGVwcz4gbGF0Y2hlZE5vZGVBbmRTdGVwcygpIGNvbnN0OwogCiAgICAgdm9pZCBub2RlV2Fz
UmVtb3ZlZChTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZvaWQgY2xlYXJMYXRjaGVkTm9kZSgpOwpA
QCAtNjMsOCArNjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbGF0Y2hlZE5vZGVJc1JlbGV2YW50
KCkgY29uc3Q7CiAKICAgICBtdXRhYmxlIExvY2sgbV9sYXRjaGVkTm9kZUxvY2s7Ci0gICAgT3B0
aW9uYWw8U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gbV9sYXRjaGVkTm9kZUFuZFN0
ZXBzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sYXRjaGVkTm9kZUxvY2spOwotICAgIE9wdGlvbmFs
PE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPj4gbV9wcm9jZXNzaW5nU3RlcHNG
b3JDdXJyZW50R2VzdHVyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGluZ05vZGVBbmRQcm9j
ZXNzaW5nU3RlcHM+IG1fbGF0Y2hlZE5vZGVBbmRTdGVwcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bGF0Y2hlZE5vZGVMb2NrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzPj4gbV9wcm9jZXNzaW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdExhdGNoZWROb2RlSW50ZXJhdGlvblRpbWU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTIwNGYzM2YxZjA2MTY3M2I0OWZiNGE2Nzg4Nzhi
N2NlOTk2YWZmYi4uY2VjOWZkNGFjM2IzNDQ5OWZkNWIwNWM3N2Y0YjIxNTdiYTBlM2VhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6OmN1cnJlbnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoU2Nyb2xsVHlw
ZSwgU2Nyb2xsCiAgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KCp0aGlzLCBhY3Rpb24pOwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpz
Y3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24sIE9wdGlvbmFsPEZsb2F0UmVjdD4pCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjpzY3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PikKIHsKICAgICByZXR1cm4gcG9z
aXRpb24gPT0gbV9jdXJyZW50U2Nyb2xsUG9zaXRpb247CiB9CkBAIC0yODEsNyArMjgxLDcgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAg
ICAgcmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6d2FzU2Nyb2xsZWRCeURlbGVnYXRlZFNjcm9sbGluZyhjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp3YXNTY3JvbGxlZEJ5RGVsZWdh
dGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQogewogICAgIGJvb2wgc2Nyb2xsUG9z
aXRpb25DaGFuZ2VkID0gIXNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChwb3Np
dGlvbiwgb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCk7CiAgICAgaWYgKCFzY3JvbGxQb3NpdGlvbkNo
YW5nZWQgJiYgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiAhPSBTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uOjpTZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCA1NWJjZWQzZTBlNjEy
MTA2ZDkzZjg1MmVlZjdkNDY0MjEwNTI1NDM4Li5mZWVlZWI0ZDg2MzYzMTNiNzFhMmNmYmUwOTEw
ZGUyNzlhZTU3M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgeyB9OwogCi0g
ICAgdm9pZCB3YXNTY3JvbGxlZEJ5RGVsZWdhdGVkU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQgPSB7
IH0sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uOjpTeW5jKTsKKyAgICB2b2lkIHdhc1Njcm9sbGVkQnlEZWxlZ2F0ZWRTY3JvbGxpbmco
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVy
cmlkZUxheW91dFZpZXdwb3J0ID0geyB9LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0g
U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyk7CiAgICAgCiAjaWYgRU5BQkxFKFND
Uk9MTElOR19USFJFQUQpCiAgICAgT3B0aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
PiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29uczsgfQpAQCAtMTI0LDggKzEyNCw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY3VycmVudFNjcm9sbFBvc2l0aW9uQ2hhbmdlZChTY3JvbGxUeXBl
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbjo6U3luYyk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNj
cm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4gPSB7IH0pIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0Y2goY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVMYXlvdXRWaWV3cG9ydCk7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9u
KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiA9IHsgfSkgeyB9CisgICAgdmlydHVhbCBib29sIHNj
cm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5b3V0Vmlld3BvcnQpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmlu
ZGV4IDJlMGU4MzZlNmU0OTVlOTI4MjEwMGQyZDY4MDc2MjllODYwN2M3NWQuLjJhYzcyMzRjOTcx
NTk1Mjg2ODY0NjlhNmFmNTYzNGY1NDA3NDY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtVwogICAgIHJldHVybiBTY3JvbGxpbmdUcmVl
OjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7CiB9CiAKLWJv
b2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFk
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRh
cmdldE5vZGVJRCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0
ZSkKK2Jvb2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWlu
VGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9k
ZUlEIHRhcmdldE5vZGVJRCwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4g
Z2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VSVChTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVudFRo
cmVhZCgpKTsKIApAQCAtODUsNyArODUsNyBAQCBib29sIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6
aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRQogICAg
IHJldHVybiByZXN1bHQud2FzSGFuZGxlZDsKIH0KIAotdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2Vz
dHVyZVN0YXRlKQordm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndoZWVsRXZlbnRXYXNQcm9j
ZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBz
dGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQgLSBnZXN0dXJlU3RhdGUg
IiA8PCBnZXN0dXJlU3RhdGUpOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2QKICAgICBpZiAoaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdp
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luOwog
ICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihub2RlKSkKICAgICAg
ICAgbGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlPihub2RlKS5sYXlvdXRWaWV3cG9ydCgpLmxvY2F0aW9uKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgK
aW5kZXggNDA0NTFjYWNjMmE2ZjEzZDhjNGVhZGIzNzczM2YwODQzNmUxYWYyMi4uMjMyMDgyZDVj
MWJmNWE5Nzg0MTNiOGIzYzI2MTdhYjJiYzk0ZGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTQ3LDggKzQ3
LDggQEAgcHVibGljOgogCiAgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9j
ZXNzaW5nU3RlcHM+KSBvdmVycmlkZTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEFmdGVy
TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFs
PFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50QWZ0
ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwg
c3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pOworICAgIHZvaWQgd2hlZWxF
dmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBz
dGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdpbGxTZW5kRXZlbnRUb01haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9yRXZlbnRUb0JlUHJv
Y2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMuaAppbmRleCBkY2IwNzc4YjQ5ZjIxM2U1YmVkYTZjNGE2NTk3YmIwN2M2
OWM2ZDc2Li4yYmQ4MWZjODRmMTkwYTYyNGU2OTJkYWQ2ZTNiMDVjYWZhMjJlMjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMuaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21t
aXRUcmVlU3RhdGVJZk5lZWRlZCgpIGZpbmFsOwogCiAgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBl
dmVudCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3
YXMgaGFuZGxlZCBvciBub3QuCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9j
ZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRG
b3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBz
dGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CisgICAgdm9pZCB3
aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW0KaW5kZXggNTVhMGI3Y2FmNjY1ZGY5Yzc5ZDE2ODNhYzM2OTgxMWU4NDBk
Y2Q0OS4uMGJjYmY2OTM2YzAyOTI2YjQ3YTEzNDJiNTdjMDY5MTUyYTkzYjYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5tbQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjOjpwYWdlRGVzdHJveWVkKCkKICAgICB9KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwg
c3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC05Miw3
ICs5Miw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRG
b3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1h
aW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQordm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5n
LCBzdHJlYW0gPDwgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp3aGVlbEV2ZW50V2FzUHJvY2Vz
c2VkQnlNYWluVGhyZWFkICIgPDwgZ2VzdHVyZVN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5oCmluZGV4IGViMTA4ZjY0YzUzMmI5NWE3ZjA3ZGIxZTk1MzBlMmRkYjYz
YWRjMTEuLjg5ZjMzNmI2ZTljNjA1YzJmOTQ0OGNkZjFhY2UyMmU3NDhkNjUyMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIHJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKTsKIAogICAgIFJldGFpblB0cjxf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0
b3I7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOwogICAgIEZs
b2F0UG9pbnQgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW47CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Tmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKaW5kZXggNzUxYmEwMTM2YjU4NTJiMDIxMzZlYjM2
NmE0MmYwYWMzODUxYjNiYy4uZmM1MTUxOThlYTJlMWU4ZDgyYmU3ZWViMmIyMjE2MzllNDExODgw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcApAQCAtNzEsNyAr
NzEsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRl
SWZOZWVkZWQoKQogICAgIHNjcm9sbGluZ1RyZWUoKS0+Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUo
c3RhdGVUcmVlKSk7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjpoYW5k
bGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGUsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCitib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3Np
YTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJRCB0YXJnZXROb2RlLCBzdGQ6Om9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBT
Y3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmco
Y29uc3QgUGxhdGZvcm1XaGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvck5pY29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29z
aWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhy
ZWFkZWRTY3JvbGxpbmdUcmVlID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3Jv
bGxpbmdUcmVlKCkpOwogICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1By
b2Nlc3NlZEJ5TWFpblRocmVhZCh3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGlu
YXRvck5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmgKaW5kZXggNGJmM2NmNDQwOGUzZjNkYzgzMGNmZDVl
MzAwMTkyNzQwYjZkOGI0OC4uZTY4MzI1ZTEyODcyNGI2ODI2MTYxNmU1M2VhNjBlZDkyYWY5ZmI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdDb29yZGluYXRvck5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5oCkBAIC00NCw4ICs0NCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBvdmVycmlk
ZTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWlu
VGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxF
dmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBz
dGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGQ1MDhiNmY5
YzhkMzM4MDBiZTM1NmMxM2IwNzZjOGZhZWRhM2UyY2MuLjJmODRiM2M5Y2U2MGQ2ZTNjZjg2ZDQw
ZmYxNTRmN2ZiN2JmY2FhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Ry
YWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVy
OjpEcmFnSWNvbkJvdHRvbUluc2V0ID0gMzsKIAogY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6
OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKLU9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0ZDo6
b3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIC8vIEZJWE1FOiBUbyBtYXRjaCB0aGUgbWFj
T1MgYmVoYXZpb3VyIHdlIHNob3VsZCByZXR1cm4gc3RkOjpudWxsb3B0LgogICAgIC8vIElmIHdl
IGFyZSBhIG1vZGFsIHdpbmRvdywgd2UgYXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRv
dyBpcyBhbiBhdHRhY2hlZCBzaGVldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRh
YmxlVGFza1F1ZXVlLmgKaW5kZXggMWQwY2Y0NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0
MDdmNi4uZTRmZGE4OTdiOTNmMjk4MDdmYzI5N2Q1MDA2YjJlYjdjYzdiYTg3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTEzOCw3ICsxMzgs
NyBAQCBwdWJsaWM6CiAgICAgLy8gSXQgaXMgYWxsb3dlZCBmb3IgdGhlIG1haW4gdGhyZWFkIHRh
c2sgaGFuZGxlciB0byBhYm9ydCB0aGUgQWJvcnRhYmxlVGFza1F1ZXVlLiBJbiB0aGF0IGNhc2Us
IHRoZSByZXR1cm4KICAgICAvLyB2YWx1ZSBpcyBkaXNjYXJkZWQgYW5kIHRoZSBjYWxsZXIgcmVj
ZWl2ZXMgYW4gZW1wdHkgb3B0aW9uYWwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUj4KLSAgICBP
cHRpb25hbDxSPiBlbnF1ZXVlVGFza0FuZFdhaXQoV1RGOjpGdW5jdGlvbjxSKCk+JiYgbWFpblRo
cmVhZFRhc2tIYW5kbGVyKQorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0
KFdURjo6RnVuY3Rpb248UigpPiYmIG1haW5UaHJlYWRUYXNrSGFuZGxlcikKICAgICB7CiAgICAg
ICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRocmVhZCB3aXRoIGl0c2VsZi4KICAgICAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBvc3RU
YXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkVGFza0hhbmRsZXJdKCkgewogICAgICAg
ICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZFRhc2tIYW5kbGVyKCk7CiAgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuY3BwCmluZGV4IDVjYmI3MGFlZWUxZDZiOTM0MmYyM2E3ZDVkMTgwNDVlNjRkMWEwY2Iu
LmUyNzU2NzNjY2I0YjIwNmU3OTRhYmQ2YTI3YTQ0M2M0YzczYzUyODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBAIENQVU1vbml0b3I6OkNQ
VU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYm
IGV4Y2VlZGVkCiB7CiB9CiAKLXZvaWQgQ1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoY29uc3QgT3B0
aW9uYWw8ZG91YmxlPiYgY3B1TGltaXQpCit2b2lkIENQVU1vbml0b3I6OnNldENQVUxpbWl0KGNv
bnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgY3B1TGltaXQpCiB7CiAgICAgaWYgKG1fY3B1TGlt
aXQgPT0gY3B1TGltaXQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuaAppbmRleCAwODhkZjU0M2UwNDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2Li40
MzhlNzI1MTc3MmJlOGU1YTQ3ODEwNWI1MjBjYmM1ZGVmZmI1YTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBF
eGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAg
ICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9yKFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVk
ZWRDUFVMaW1pdEhhbmRsZXImJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxp
bWl0KGNvbnN0IE9wdGlvbmFsPGRvdWJsZT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgdGltZXJGaXJlZCgpOwpAQCAtNDYsOCArNDYsOCBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9jaGVja0ludGVydmFsOwogICAgIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVk
ZWRDUFVMaW1pdEhhbmRsZXI7CiAgICAgVGltZXIgbV90aW1lcjsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IG1fY3B1TGltaXQ7Ci0gICAgT3B0aW9uYWw8Q1BVVGltZT4gbV9sYXN0Q1BVVGltZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENQ
VVRpbWU+IG1fbGFzdENQVVRpbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBkMjIzMDE4NDdhMjAyMzZhYzA4ZWIx
ZDBiMzQ1Y2ViNjUzMTgyMjRmLi41M2I1YjBjMjQzNGJjYzNmMGI4MDBlYzViNzExODU4YTRkYzk0
ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKQEAgLTU2LDkgKzU2LDkg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBp
ZiAoIXR5cGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db29raWUuaAppbmRleCA4OTNhOTQ1MGE1MjNkN2Y3MjNmYmM0NTY2ZjVhNTJkZGY2NDQ3OGU4
Li4zNWQ1YmUzOTRiMmE5OTJjM2QyMzczZWUzYjVmOTgyYWM0MjRmYjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db29raWUuaApAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgQ29va2llIHsKICAgICBDb29r
aWUoKSA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPENvb2tpZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IGRlY29kZShEZWNvZGVyJik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29va2llJikgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwpAQCAtODYsNyArODYsNyBA
QCBzdHJ1Y3QgQ29va2llIHsKICAgICBTdHJpbmcgcGF0aDsKICAgICAvLyBDcmVhdGlvbiBhbmQg
ZXhwaXJhdGlvbiBkYXRlcyBhcmUgZXhwcmVzc2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUg
VU5JWCBlcG9jaC4KICAgICBkb3VibGUgY3JlYXRlZCB7IDAgfTsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IGV4cGlyZXM7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGV4cGlyZXM7CiAgICAgYm9v
bCBodHRwT25seSB7IGZhbHNlIH07CiAgICAgYm9vbCBzZWN1cmUgeyBmYWxzZSB9OwogICAgIGJv
b2wgc2Vzc2lvbiB7IGZhbHNlIH07CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDb29raWU6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgotT3B0aW9uYWw8Q29va2llPiBDb29raWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxDb29raWU+IENvb2tpZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgQ29va2llIGNvb2tpZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAppbmRleCA5Yzg4MTVk
ZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAwYjRjNmY2NDVjLi5jMDZiNDljM2Y3MGM3MzdkMmJjM2M5
OWRhMTBjODY3YjYyMDkzNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlQ29tcG9uZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBv
bmVudHMuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIHVuc2lnbmVkIGNvdW50RGlnaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXIKIH0K
IAogLy8gRGlmZmVyZW5jZXMgZnJvbSBwYXJzZUludGVnZXI8aW50PjogVGFrZXMgU3RyaW5nUGFy
c2luZ0J1ZmZlci4gRG9lcyBub3QgYWxsb3cgbGVhZGluZyBvciB0cmFpbGluZyBzcGFjZXMuIERv
ZXMgbm90IGFsbG93IGxlYWRpbmcgIisiLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VJbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNl
KQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
aW50PiBwYXJzZUludChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIs
IHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpCiB7CiAgICAgaWYgKG1heGlt
dW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UgPiBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgfHwgIW1h
eGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xMjgsNyArMTI4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIE9wdGlvbmFsPGludD4gcGFyc2VJbnQoU3RyaW5nUGFyc2luZ0J1ZmYKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHBhcnNlSW50V2l0aGluTGltaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlciwgdW5zaWduZWQgbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSwg
aW50IG1pbmltdW1WYWx1ZSwgaW50IG1heGltdW1WYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VJbnRXaXRoaW5MaW1p
dHMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCB1bnNpZ25lZCBt
YXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlLCBpbnQgbWluaW11bVZhbHVlLCBpbnQgbWF4aW11
bVZhbHVlKQogewogICAgIGF1dG8gdmFsdWUgPSBwYXJzZUludChidWZmZXIsIG1heGltdW1OdW1i
ZXJPZkRpZ2l0c1RvUGFyc2UpOwogICAgIGlmICghKHZhbHVlICYmICp2YWx1ZSA+PSBtaW5pbXVt
VmFsdWUgJiYgKnZhbHVlIDw9IG1heGltdW1WYWx1ZSkpCkBAIC0xODcsMTIgKzE4NywxMiBAQCBz
dGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0ZUxpbWl0cyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQg
bW9udGhEYXksIGludCBob3VyLCBpbgogICAgIHJldHVybiAhaG91ciAmJiAhbWludXRlICYmICFz
ZWNvbmQgJiYgIW1pbGxpc2Vjb25kOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMg
T3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3Vy
Y2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldyBzb3Vy
Y2UsIEYmJiBwYXJzZUZ1bmN0aW9uKQogewogICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9y
UGFyc2luZyhzb3VyY2UsIFsmXShhdXRvIGJ1ZmZlcikgLT4gT3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IHsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1
dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiB7CiAgICAgICAgIERh
dGVDb21wb25lbnRzIGRhdGU7CiAgICAgICAgIGlmICghcGFyc2VGdW5jdGlvbihidWZmZXIsIGRh
dGUpIHx8ICFidWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yMDAsMzUgKzIwMCwzNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdGF0aWMgT3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nVmlldwogICAgIH0pOwog
fQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJzaW5n
TW9udGgoU3RyaW5nVmlldyBzb3VyY2UpCitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBE
YXRlQ29tcG9uZW50czo6ZnJvbVBhcnNpbmdNb250aChTdHJpbmdWaWV3IHNvdXJjZSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlRnJvbVN0cmluZyhzb3VyY2UsIFtdIChhdXRvJiBidWZmZXIsIGF1dG8m
IGRhdGUpIHsKICAgICAgICAgcmV0dXJuIGRhdGUucGFyc2VNb250aChidWZmZXIpOwogICAgIH0p
OwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJz
aW5nRGF0ZShTdHJpbmdWaWV3IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ0RhdGUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRv
JiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlRGF0ZShidWZmZXIpOwogICAgIH0p
OwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJz
aW5nV2VlayhTdHJpbmdWaWV3IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ1dlZWsoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRv
JiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlV2VlayhidWZmZXIpOwogICAgIH0p
OwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJz
aW5nVGltZShTdHJpbmdWaWV3IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ1RpbWUoU3RyaW5nVmlldyBzb3VyY2UpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAoYXV0byYgYnVmZmVyLCBhdXRv
JiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlVGltZShidWZmZXIpOwogICAgIH0p
OwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21QYXJz
aW5nRGF0ZVRpbWVMb2NhbChTdHJpbmdWaWV3IHNvdXJjZSkKK3N0ZDo6b3B0aW9uYWw8RGF0ZUNv
bXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tUGFyc2luZ0RhdGVUaW1lTG9jYWwoU3RyaW5n
VmlldyBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21TdHJpbmcoc291cmNlLCBbXSAo
YXV0byYgYnVmZmVyLCBhdXRvJiBkYXRlKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnBhcnNlRGF0
ZVRpbWVMb2NhbChidWZmZXIpOwpAQCAtNDUxLDggKzQ1MSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlVGltZShTdHJpbmdQYXJz
aW5nQnVmCiAKICAgICAvLyBPcHRpb25hbCBzZWNvbmQgcGFydC4KICAgICAvLyBEbyBub3QgcmV0
dXJuIHdpdGggZmFsc2UgYmVjYXVzZSB0aGUgcGFydCBpcyBvcHRpb25hbC4KLSAgICBPcHRpb25h
bDxpbnQ+IHNlY29uZDsKLSAgICBPcHRpb25hbDxpbnQ+IG1pbGxpc2Vjb25kOworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBzZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1pbGxpc2Vjb25k
OwogCiAgICAgYXV0byB0ZW1wb3JhcnlCdWZmZXIgPSBidWZmZXI7CiAgICAgaWYgKHNraXBFeGFj
dGx5KHRlbXBvcmFyeUJ1ZmZlciwgJzonKSkgewpAQCAtNTIwLDcgKzUyMCw3IEBAIHN0YXRpYyBp
bmxpbmUgZG91YmxlIHBvc2l0aXZlRm1vZChkb3VibGUgdmFsdWUsIGRvdWJsZSBkaXZpZGVyKQog
ICAgIHJldHVybiByZW1haW5kZXIgPCAwID8gcmVtYWluZGVyICsgZGl2aWRlciA6IHJlbWFpbmRl
cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25l
bnRzPiBjcmVhdGVGcm9tVGltZU9mZnNldChkb3VibGUgdGltZU9mZnNldCwgRiYmIGZ1bmN0aW9u
KQordGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IGNyZWF0ZUZyb21UaW1lT2Zmc2V0KGRvdWJsZSB0aW1lT2Zmc2V0LCBGJiYgZnVuY3Rpb24p
CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgcmVzdWx0OwogICAgIGlmICghZnVuY3Rpb24ocmVzdWx0
LCB0aW1lT2Zmc2V0KSkKQEAgLTUyOCw0MiArNTI4LDQyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEY+
IHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gY3JlYXRlRnJvbVRpbWVPZmZzZXQoZG91
YmxlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IERh
dGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91YmxlIG1z
KQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShkb3VibGUgbXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZUZyb21UaW1lT2Zmc2V0KG1zLCBbXSAoYXV0byYgZGF0ZSwgYXV0byBtcykgewogICAgICAgICBy
ZXR1cm4gZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShtcyk7CiAgICAgfSk7
CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6ZnJvbU1pbGxp
c2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBtcykKK3N0ZDo6b3B0aW9u
YWw8RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKQogewogICAgIHJldHVybiBjcmVhdGVGcm9t
VGltZU9mZnNldChtcywgW10gKGF1dG8mIGRhdGUsIGF1dG8gbXMpIHsKICAgICAgICAgcmV0dXJu
IGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwobXMpOwogICAg
IH0pOwogfQogCi1PcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21N
aWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yTW9udGgoZG91YmxlIG1zKQogewogICAgIHJldHVybiBjcmVhdGVGcm9tVGltZU9mZnNldCht
cywgW10gKGF1dG8mIGRhdGUsIGF1dG8gbXMpIHsKICAgICAgICAgcmV0dXJuIGRhdGUuc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvck1vbnRoKG1zKTsKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IERhdGVDb21wb25lbnRzOjpmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvcldlZWsoZG91YmxlIG1zKQorc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNv
bXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhkb3VibGUgbXMpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21UaW1lT2Zmc2V0KG1zLCBbXSAoYXV0byYgZGF0ZSwgYXV0
byBtcykgewogICAgICAgICByZXR1cm4gZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
V2Vlayhtcyk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29t
cG9uZW50czo6ZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKQorc3RkOjpv
cHRpb25hbDxEYXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21NaWxsaXNlY29uZHNT
aW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbVRpbWVPZmZz
ZXQobXMsIFtdIChhdXRvJiBkYXRlLCBhdXRvIG1zKSB7CiAgICAgICAgIHJldHVybiBkYXRlLnNl
dE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQobXMpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gRGF0ZUNvbXBvbmVudHM6OmZyb21Nb250aHNTaW5jZUVwb2NoKGRvdWJs
ZSBtb250aHMpCitzdGQ6Om9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBEYXRlQ29tcG9uZW50czo6
ZnJvbU1vbnRoc1NpbmNlRXBvY2goZG91YmxlIG1vbnRocykKIHsKICAgICByZXR1cm4gY3JlYXRl
RnJvbVRpbWVPZmZzZXQobW9udGhzLCBbXSAoYXV0byYgZGF0ZSwgYXV0byBtb250aHMpIHsKICAg
ICAgICAgcmV0dXJuIGRhdGUuc2V0TW9udGhzU2luY2VFcG9jaChtb250aHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgKaW5kZXggMGE5MDIzMTAzMDUyNjdlOWExNDFi
MzFjMDhhN2RhYTQyNDQzN2NkYS4uYWE5NThkNDIxNDRmNGNiNjdmZDM5NzZhNjI0NGE1NGFmMmZm
NGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oCkBAIC04Nywz
MSArODcsMzEgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQgPSBT
ZWNvbmRGb3JtYXQ6Ok5vbmUpIGNvbnN0OwogCiAgICAgLy8gU2V0cyB5ZWFyIGFuZCBtb250aC4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21QYXJzaW5nTW9udGgoU3Ry
aW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21Q
YXJzaW5nTW9udGgoU3RyaW5nVmlldyk7CiAgICAgLy8gU2V0cyB5ZWFyLCBtb250aCBhbmQgbW9u
dGhEYXkuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ0Rh
dGUoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+
IGZyb21QYXJzaW5nRGF0ZShTdHJpbmdWaWV3KTsKICAgICAvLyBTZXRzIHllYXIgYW5kIHdlZWsu
Ci0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ1dlZWsoU3Ry
aW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21Q
YXJzaW5nV2VlayhTdHJpbmdWaWV3KTsKICAgICAvLyBTZXRzIGhvdXIsIG1pbnV0ZSwgc2Vjb25k
IGFuZCBtaWxsaXNlY29uZC4KLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZy
b21QYXJzaW5nVGltZShTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRl
Q29tcG9uZW50cz4gZnJvbVBhcnNpbmdUaW1lKFN0cmluZ1ZpZXcpOwogICAgIC8vIFNldHMgeWVh
ciwgbW9udGgsIG1vbnRoRGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQu
Ci0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBmcm9tUGFyc2luZ0RhdGVUaW1l
TG9jYWwoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVu
dHM+IGZyb21QYXJzaW5nRGF0ZVRpbWVMb2NhbChTdHJpbmdWaWV3KTsKIAogCiAgICAgLy8gRm9y
IERhdGUgdHlwZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGggYW5kIG1fbW9udGhEYXkuCi0gICAg
c3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBmcm9tTWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvckRhdGUoZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGRvdWJsZSBtcyk7CiAgICAg
Ly8gRm9yIERhdGVUaW1lTG9jYWwgdHlwZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGgsIG1fbW9u
dGhEYXksIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAg
IHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBtcyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2Nh
bChkb3VibGUgbXMpOwogICAgIC8vIEZvciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQg
bV9tb250aC4KLSAgICBzdGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21NaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChk
b3VibGUgbXMpOwogICAgIC8vIEZvciBXZWVrIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBtX3dl
ZWsuCi0gICAgc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBmcm9tTWlsbGlzZWNvbmRz
U2luY2VFcG9jaEZvcldlZWsoZG91YmxlIG1zKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBt
cyk7CiAKICAgICAvLyBGb3IgVGltZSB0eXBlLiBVcGRhdGVzIG1faG91ciwgbV9taW51dGUsIG1f
c2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAgIHN0YXRpYyBPcHRpb25hbDxEYXRlQ29tcG9u
ZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gZnJvbU1pbGxpc2Vjb25kc1NpbmNlTWlk
bmlnaHQoZG91YmxlIG1zKTsKIAogICAgIC8vIEFub3RoZXIgaW5pdGlhbGl6ZXIgZm9yIE1vbnRo
IHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBtX21vbnRoLgotICAgIHN0YXRpYyBPcHRpb25hbDxE
YXRlQ29tcG9uZW50cz4gZnJvbU1vbnRoc1NpbmNlRXBvY2goZG91YmxlIG1vbnRocyk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGZyb21Nb250aHNTaW5jZUVwb2No
KGRvdWJsZSBtb250aHMpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vj
b25kcyBmcm9tIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgogICAgIC8vIEZvciBhIERhdGVDb21w
b25lbnRzIGluaXRpYWxpemVkIHdpdGggcGFyc2VEYXRlVGltZUxvY2FsKCksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKaW5kZXgg
MjNhMzM4NmJiNTgwNmJhYmRjN2EwOTk4ZDcxZWViZDc5NGI4MGUxZi4uYTQyYzI5N2NmZTRjZmY0
OTA3NWU2ODdmNTk2ZDJlNjdjY2VhYzc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaApAQCAtNTQsNyArNTQsNyBAQCBzdHJ1
Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyB7CiAgICAgYm9vbCBoYXNNaWxsaXNlY29uZEZp
ZWxkIHsgZmFsc2UgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRlVGltZUNob29z
ZXJQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM+IERhdGVUaW1lQ2hvb3NlclBh
cmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzPiBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBBdG9tU3RyaW5nIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0eXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCA1NWFi
ZDU2OTk2ZDhkNTM4NWFhN2M2OTA2MjFiNDljZmRmZTRkNTZkLi5mMzI1NzMyMzRmYTAzZWNjNzYz
ZDk2YzMwYjZhOTUyYzE2NDQ1ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3Bw
CkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0o
Q09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBk
ZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCitE
cmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9u
RmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlv
bkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6
IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00NCw3
ICs0NCw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRy
YWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywg
T3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncywgT3B0aW9uU2V0PERy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBv
c2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1f
cGxhdGZvcm1EcmFnRGF0YSgwKQpAQCAtNTgsNyArNTgsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEo
Y29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IERyYWdEYXRhOjpjcmVh
dGVQYXN0ZWJvYXJkQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFBhZ2VQYXN0ZWJvYXJk
Q29udGV4dDo6Y3JlYXRlKE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0pOwor
ICAgIHJldHVybiBQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiB7IG1fcGFnZUlEIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCBkOWNjNmFlM2M3YmRjN2MzZjkxMzdh
ODY2MzI2ODUzNmQ3YzMwZjI1Li42NjAwZGZhN2IxODllMTVmYWI3ZmI3OTZmNjZlZjFhNzlkY2Qy
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTc4LDEzICs3OCwxMyBAQCBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JG
aWxlVXBsb2FkLCBGb3JDb2xvckNvbnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlz
IHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRh
cmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQgPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBP
cHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlv
bigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24o
KSwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKSwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2Vk
IG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxp
emVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdE
YXRhKCkgPSBkZWZhdWx0OwogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBE
cmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9
IHsgfSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFn
QXBwbGljYXRpb25GbGFncz4gPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgY29uc3QgRHJhZ0RhdGFNYXAmIGRyYWdEYXRhTWFw
KCk7CiAgICAgdm9pZCBnZXREcmFnRmlsZURlc2NyaXB0b3JEYXRhKGludCYgc2l6ZSwgU3RyaW5n
JiBwYXRobmFtZSk7CiAgICAgdm9pZCBnZXREcmFnRmlsZUNvbnRlbnREYXRhKGludCBzaXplLCB2
b2lkKiBkYXRhQmxvYik7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29u
dGFpbnNQcm9taXNlKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZVBhc3RlYm9hcmRD
b250ZXh0KCkgY29uc3Q7CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlv
blNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rp
b24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gbV9wYWdlSUQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbV9wYWdl
SUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmluZGV4IDE5MzlmYjkwYzIy
NTY0ZDAyY2FkZjY1YmRhZjdmNjVjY2I3Y2U5YTcuLjkwMzQyOGYzZWE2NDMzYTcwZGMxYjhkNTU4
MDFlMzc3NDY1OTZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAt
MTQ5LDcgKzE0OSw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKICAgICB9
CiAKICAgICBjb25zdCBGcmFtZSYgZnJhbWU7Ci0gICAgT3B0aW9uYWw8UmVuZGVyUmFuZ2U+IHNl
bGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclJhbmdlPiBzZWxlY3Rpb247CiB9Owog
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CmluZGV4IGVhN2IzMWVlN2EyZDU4MzZmZWRiMTliZWY2ZGQ3OWJkZjFhOTZhMzUuLmMxM2EzYzA1
MWJiNjRkYzViZTZjYjM4M2FkYzEwMjA5NGY0NmJmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCkBAIC0xMDksMTkgKzEwOSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElu
ZGljYXRvckRhdGEoY29uc3QgVGV4dEluZGljYXRvckRhdGEmIGRhdGEpIHsgbV9pbmRpY2F0b3JE
YXRhID0gZGF0YTsgfQogICAgIGJvb2wgaGFzSW5kaWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9pbmRpY2F0b3JEYXRhOyB9Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGlu
ZGljYXRvckRhdGEoKSBjb25zdCB7IHJldHVybiBtX2luZGljYXRvckRhdGE7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBpbmRpY2F0b3JEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9pbmRpY2F0b3JEYXRhOyB9CiAKICAgICB2b2lkIHNldFZpc2libGVQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpIHsgbV92aXNpYmxlUGF0aCA9IHBhdGg7IH0KICAgICBib29sIGhhc1Zpc2libGVQ
YXRoKCkgY29uc3QgeyByZXR1cm4gISFtX3Zpc2libGVQYXRoOyB9Ci0gICAgT3B0aW9uYWw8UGF0
aD4gdmlzaWJsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVQYXRoOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxQYXRoPiB2aXNpYmxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVBh
dGg7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
ZHJhZ0ltYWdlUmVmOyB9CiAgICAgRHJhZ0ltYWdlUmVmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJhZ0ltYWdlUmVmOyB9CiAKIHByaXZhdGU6CiAgICAgRHJhZ0ltYWdlUmVmIG1fZHJhZ0ltYWdl
UmVmOwotICAgIE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBtX2luZGljYXRvckRhdGE7Ci0g
ICAgT3B0aW9uYWw8UGF0aD4gbV92aXNpYmxlUGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRJ
bmRpY2F0b3JEYXRhPiBtX2luZGljYXRvckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQYXRoPiBt
X3Zpc2libGVQYXRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKaW5kZXgg
MWQxZjJhNzg5NWJlMTA0ODA5YzQ4YzRkZGM4NjhjNWJmZGRkMzhhYy4uMDBmMGNiZDk1OTk0YWNk
NzhkZjJmNjI2MDEyNzNhNzllMjhjMGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBEcmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUg
dGhlIGltYWdlIHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAg
ICAgRmxvYXRQb2ludCBpbWFnZUFuY2hvclBvaW50OwogCi0gICAgT3B0aW9uYWw8RHJhZ1NvdXJj
ZUFjdGlvbj4gc291cmNlQWN0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlv
bj4gc291cmNlQWN0aW9uOwogICAgIEludFBvaW50IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29y
ZGluYXRlczsKICAgICBJbnRQb2ludCBkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsK
ICAgICBJbnRQb2ludCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOwpAQCAtOTcsNyAr
OTcsNyBAQCBib29sIERyYWdJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0m
IHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0luZGljYXRvckRhdGEpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc0luZGljYXRvckRhdGEpIHsKLSAgICAgICAg
T3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAgICAgIGRlY29k
ZXIgPj4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgaWYgKCFpbmRpY2F0b3JEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgRHJhZ0l0ZW06OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnSXRlbSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzVmlzaWJsZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGhhc1Zpc2libGVQYXRoKSB7Ci0gICAgICAgIE9wdGlvbmFsPFBhdGg+IHZpc2libGVQYXRoOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHZpc2libGVQYXRoOwogICAgICAgICBkZWNvZGVy
ID4+IHZpc2libGVQYXRoOwogICAgICAgICBpZiAoIXZpc2libGVQYXRoKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCAy
ODQ1YmZkMjZhM2ViMWUyNTJhOWRjNDczMzRiNDc3YmNhZWU4NzU3Li4wYzk4MGFhYjA2ZmMzMThj
NDYzODEyYWYwNzQxODVjNmY5MTczYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmNwcApAQCAtNDcsNyArNDcsNyBAQCBGaWxlU3RyZWFtOjp+RmlsZVN0cmVhbSgpCiAgICAg
Y2xvc2UoKTsKIH0KIAotbG9uZyBsb25nIEZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3RyaW5n
JiBwYXRoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorbG9u
ZyBsb25nIEZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgLy8gQ2hlY2sg
dGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcG9zc2libGUgZmlsZSBjaGFuZ2UuCiAgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUo
cGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggNWU1ZWUwZTAyNGJl
NjUyMDE3MWI0YTcwYmIwODYwODdlYmVjMGY1MS4uZGYyMjRjZjA3ZjQ0MjhmYmRlOTE1ZjJhZmQ0
NmI4MDk2NDI0YTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgZmlsZS4gQWxz
byB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYgdGhlIGV4
cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJvLgogICAg
IC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0xIG90aGVy
d2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFs
PFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKIAogICAgIC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhl
IHJlYWRpbmcgc3RhcnRzIGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRo
ZSBzcGVjaWZpZWQgbGVuZ3RoLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxz
ZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggMGVhYWUw
YTUyZjljYWM3MjQ5MzM1ZTE3NWQ3MmI0MTRiN2MyZGJmNC4uZjZjY2UyZWRjOGQ2Y2Y0NzA1OTg1
NzA5YjYwOTUxOGZhZmVjOTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRl
blVudGlsTW91c2VNb3Zlcyhib29sKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5v
bWluYWxGcmFtZXNQZXJTZWNvbmQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFNpemUg
c2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBhdmFpbGFibGVT
Y3JlZW5TaXplKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFn
ZUV4dHJhY3Rpb25SZXN1bHQuaAppbmRleCBiZjdkYTEzMjlmM2EzYjAyYWE5MDJmYTIwODZiYTQ1
NDE5YTdmODdmLi44ZWY1MzE5NGIzZDM1OWFmNzg4NjEwYWFkZGI0NmY1NTgxZGExODI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaApAQCAt
NDksNyArNDksNyBAQCBzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uVGV4dERhdGEgewogICAgIEZsb2F0
UXVhZCBub3JtYWxpemVkUXVhZDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uVGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VFeHRy
YWN0aW9uVGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIEltYWdlRXh0cmFjdGlvblRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKQEAgLTU4LDE0ICs1OCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIEltYWdlRXh0cmFjdGlvblRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgYwog
ICAgIGVuY29kZXIgPDwgbm9ybWFsaXplZFF1YWQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPEltYWdlRXh0cmFjdGlvblRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFjdGlvblRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB0
ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4
dDsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1hbGl6ZWRRdWFkOworICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkOwog
ICAgIGlmICghbm9ybWFsaXplZFF1YWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC04NCw3ICs4NCw3IEBAIHN0cnVjdCBJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YSB7CiAgICAgVmVj
dG9yPEltYWdlRXh0cmFjdGlvblRleHREYXRhPiBjaGlsZHJlbjsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uTGluZURhdGE+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uTGluZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpAQCAtMTA5LDE0ICsxMDksMTQgQEAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGMKICAgICBlbmNvZGVyIDw8IGNoaWxkcmVuOwogfQogCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VF
eHRyYWN0aW9uTGluZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4gSW1hZ2VF
eHRyYWN0aW9uTGluZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPEZsb2F0UXVhZD4gbm9ybWFsaXplZFF1YWQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFF1
YWQ+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGRlY29kZXIgPj4gbm9ybWFsaXplZFF1YWQ7CiAgICAg
aWYgKCFub3JtYWxpemVkUXVhZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPFZlY3RvcjxJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YT4+IGNoaWxkcmVuOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFjdGlvblRleHREYXRhPj4gY2hpbGRyZW47
CiAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBJbWFnZUV4dHJh
Y3Rpb25SZXN1bHQgewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEltYWdlRXh0cmFj
dGlvblJlc3VsdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKQEAgLTE1NiwxNSArMTU2LDE1IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAjZW5k
aWYKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9u
UmVzdWx0PiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25SZXN1
bHQ+IEltYWdlRXh0cmFjdGlvblJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFjdGlvbkxpbmVEYXRhPj4gbGluZXM7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VFeHRyYWN0aW9uTGluZURhdGE+PiBsaW5lczsKICAg
ICBkZWNvZGVyID4+IGxpbmVzOwogICAgIGlmICghbGluZXMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgT3B0aW9uYWw8VmVj
dG9yPEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+PiBkYXRhRGV0ZWN0b3JzOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+PiBk
YXRhRGV0ZWN0b3JzOwogICAgIGRlY29kZXIgPj4gZGF0YURldGVjdG9yczsKICAgICBpZiAoIWRh
dGFEZXRlY3RvcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGlua0ljb24uaAppbmRleCA0YmEwNTI0NmY3ZWM4NTMzOGU2ODc1MDg1OWVmZjBmMGNhOWIz
NDhkLi5hODJiZmEwNDg0ZjBlNWI4NDNhODQ2MmUyN2E1ZDcyZWU2NzJhYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xpbmtJY29uLmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IExpbmtJY29uIHsK
ICAgICBVUkwgdXJsOwogICAgIExpbmtJY29uVHlwZSB0eXBlOwogICAgIFN0cmluZyBtaW1lVHlw
ZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzaXplOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhdHRyaWJ1
dGVzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmgKaW5k
ZXggZDRiMDI5ZjIyMzk3MmI3M2E3YTk5NzgxZDJjYzE0ZTcyMmFmMzRjMy4uYjRiMjBhYjY1ZmFi
ZGE2MDBjOTQ5YTkzOTc2M2U0OGViYmJjZTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Mb2dJbml0aWFsaXphdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBAIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBsb2dMZXZlbFN0cmluZygpOwogYm9vbCBpc0xvZ0NoYW5uZWxFbmFibGVkKGNvbnN0IFN0
cmluZyYgbmFtZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxMb2dD
aGFubmVsc1RvQWNjdW11bGF0ZSgpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9n
Q2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpv
cHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5j
cHAKaW5kZXggOGNmMDE4N2M3NzAzNDg0ODg1NzZmZGVmZWQ4N2ZiMzMwNGNlZWI5NC4uNjFmZThk
Mzc1MjE1ODNkMmQ0NjUxOTM4MDUwMjg1ZjNjNDM1Nzc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBjbGVhckFsbExvZ0NoYW5uZWxzVG9B
Y2N1bXVsYXRlKCkKICAgICBsb2dDaGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CiB9
CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5n
PiBsb2dDaGFubmVsU3RyaW5nKQordm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9nQ2hhbm5lbFN0cmluZykKIHsKICAgICBpZiAoIWxv
Z0NoYW5uZWxzTmVlZEluaXRpYWxpemF0aW9uICYmICFsb2dDaGFubmVsU3RyaW5nKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFi
aWxpdGllc0RlY29kaW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBh
YmlsaXRpZXNEZWNvZGluZ0luZm8uaAppbmRleCAxNTVjOWQ1MWYyNjhkMTRkYmE0NjY5M2I5OThj
MjA1MTA3NGU2NDU1Li5kZjQ3N2Y0NGYzYmVkMzRkY2I4ZGQzZjE5NTA1MGM1NmNiY2NjNGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVz
RGVjb2RpbmdJbmZvLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVz
RGVjb2RpbmdJbmZvIDogTWVkaWFDYXBhYmlsaXRpZXNJbmZvIHsKICAgICBNZWRpYURlY29kaW5n
Q29uZmlndXJhdGlvbiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5m
bz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbz4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC02MCwxMyArNjAsMTMgQEAg
dm9pZCBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNZWRpYUNh
cGFiaWxpdGllc0RlY29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0Rl
Y29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm86OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGF1dG8gaW5mbyA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVj
b2RlKGRlY29kZXIpOwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uPiBzdXBwb3J0ZWRD
b25maWd1cmF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRp
b24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mby5oCmluZGV4IDkxNTg3YmIzOWExNGYwNjEzOWZm
ZDUyMTE1YWQ0MWJkN2MzZWQ5MTYuLjNhY2Y1OWY2OTYzZmU5MDU1NTgzYzlkZDZhZjRlMTFmNDU3
NGE2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0
aWVzRW5jb2RpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBh
YmlsaXRpZXNFbmNvZGluZ0luZm8uaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgTWVkaWFDYXBh
YmlsaXRpZXNFbmNvZGluZ0luZm8gOiBNZWRpYUNhcGFiaWxpdGllc0luZm8gewogICAgIE1lZGlh
RW5jb2RpbmdDb25maWd1cmF0aW9uIHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5j
b2RpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTYwLDEzICs2
MCwxMyBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5n
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJp
bGl0aWVzRW5jb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8TWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1
cHBvcnRlZENvbmZpZ3VyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29u
ZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbjsKICAgICBkZWNvZGVyID4+IHN1cHBv
cnRlZENvbmZpZ3VyYXRpb247CiAgICAgaWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9uKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRleCA3NzE1YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQw
ZGZmNzAyMDVlNWI1Li4wNDAyMjMxMDYwMzExMDk0ODE0MjJkNDJkZmYwMDk5ZWMzNzc2OWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApA
QCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIHsKICAgICBib29s
IHBvd2VyRWZmaWNpZW50IHsgZmFsc2UgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CkBAIC00NywxOSArNDcsMTkgQEAgdm9pZCBNZWRpYUNhcGFiaWxpdGllc0luZm86
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0lu
Zm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxp
dGllc0luZm8+IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc3VwcG9ydGVkOwogICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkOwogICAgIGlmICghc3VwcG9y
dGVkKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4g
c21vb3RoOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc21vb3RoOwogICAgIGRlY29kZXIgPj4g
c21vb3RoOwogICAgIGlmICghc21vb3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gcG93ZXJFZmZpY2llbnQ7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBwb3dlckVmZmljaWVudDsKICAgICBkZWNvZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAg
IGlmICghcG93ZXJFZmZpY2llbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAwMmRmNzljNjEwMGNhYzRmZmFlZmM5
N2IyNDQ1ZjVjZjVhOWNkYmJmLi44ZGE2MDM3Nzg4MjQzMzMwYWUyNTBkOWMxMGM3MmVlMDU4OGU3
NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTk1LDcgKzk1LDcg
QEAgcHVibGljOgogICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsKICAgICAgICAgc2l6
ZV90IGJ5dGVMZW5ndGggeyAwIH07CiAgICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEJ5dGVS
YW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0ID0gMDsKIAogICAgIGVudW0gY2xhc3MgVmlkZW9S
b3RhdGlvbiB7CiAgICAgICAgIE5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggYWIyZTQwYzE4YjAxYWRiMTUzYWM4NTY0YTEyZGI2YTcw
MDFhMDQ3Zi4uZDU2YzMyOGIxNTNmNTRjMjM2YmZlYTJlMDJhNGM2OWVlNzhmM2MzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC02NywxMiArNjcs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZVJlbW90ZUNvbW1hbmRMaXN0ZW5lckNyZWF0
ZWQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBtX3JlbW90
ZUNvbW1hbmRMaXN0ZW5lcjsKICAgICBXZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Ci0gICAgT3B0
aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CisgICAgc3RkOjpvcHRpb25h
bDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0Nh
Y2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VEYXRhOwogICAgIH07Ci0gICAgT3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlp
bmdJbmZvQXJ0d29yazsKKyAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5
aW5nSW5mb0FydHdvcms7CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsg
ZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRElu
dGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgK
aW5kZXggOGM1ZDYxNTk2YjMxZTAzZWEzNWE0ODA1MWIzNjMyYmY5NGVmMmE1NS4uMDQzOWM4MTg4
MWRiNzc0MDU2MWM0ODQ3NGI3N2Y0MDVjODdjZGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBz
ZWFyY2hGb3JPdmVybGFwc0Zyb20odGhpcy0+cm9vdCgpLCBhZGFwdGVyKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxJbnRlcnZhbFR5cGU+IG5leHRJbnRlcnZhbEFmdGVyKGNvbnN0IFQmIHBvaW50
KQorICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJ2YWxUeXBlPiBuZXh0SW50ZXJ2YWxBZnRlcihjb25z
dCBUJiBwb2ludCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dCA9IHNtYWxsZXN0Tm9kZUdyZWF0
ZXJUaGFuRnJvbShwb2ludCwgdGhpcy0+cm9vdCgpKTsKICAgICAgICAgaWYgKCFuZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAyNjEwNGY0M2JkYTYyMWZkYjMx
NDIzNzg3YTNkYTU5ZWJhYjZkMTQ0Li4xNTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4
Yzc3ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBT
dHJpbmcmIHR5cGUpCiAKICNlbmRpZgogCi1PcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8q
IHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQpA
QCAtNzEsNyArNzEsNyBAQCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFz
dGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBh
c3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRl
eCkgY29uc3QKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoYXV0byogc3RyYXRlZ3kg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMDVjNmFmZTQ1N2ZmOWU5MWRmYjE5MjVlMjQ4YTc3
NDFjOWM1NjgyZS4uN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjEzLDkgKzIxMyw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFs
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIHZp
cnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFp
blRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dV
UkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0
dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5
cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2aXJ0
dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVh
ZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBzdGQ6Om51bGxvcHQpOworICAgIHZpcnR1
YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdGF0aWMg
Ym9vbCBjYW5Xcml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoKTsKIApAQCAtMjkyLDgg
KzI5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVu
dCYsIGNvbnN0IFVSTCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAK
LSAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJv
YXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNp
emVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CkBAIC0zMDQsNyAr
MzA0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7Ci0gICAgdm9pZCByZWFkUmVzcGVj
dGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90Pik7CisgICAgdm9pZCByZWFkUmVzcGVjdGlu
Z1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KTsKIAogICAgIGVudW0gY2xhc3MgUmVh
ZGVyUmVzdWx0IHsKICAgICAgICAgUmVhZFR5cGUsCkBAIC0zMTksNyArMzE5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdyaXRlUmFuZ2VUb0RhdGFPYmplY3QoY29uc3QgU2ltcGxlUmFuZ2UmLCBG
cmFtZSYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogICAgIHZvaWQgd3JpdGVVUkxU
b0RhdGFPYmplY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB3cml0ZVBs
YWluVGV4dFRvRGF0YU9iamVjdChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOwot
ICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiByZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiByZWFkUGFzdGVi
b2FyZEN1c3RvbURhdGEoKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMzQs
MTQgKzMzNCwxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29u
dGV4dD4gbV9jb250ZXh0OwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIE9wdGlvbmFsPFNlbGVj
dGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRh
dGE+IG1fc2VsZWN0aW9uRGF0YTsKICAgICBTdHJpbmcgbV9uYW1lOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgbV9wYXN0ZWJvYXJkTmFtZTsKICAgICBpbnQ2NF90
IG1fY2hhbmdlQ291bnQ7Ci0gICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3Vz
dG9tRGF0YUNhY2hlOworICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1f
Y3VzdG9tRGF0YUNhY2hlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMzMxMGQw
YjMzMGVlNTg3MDUxYjc3OTQ5YzAzYzEwZDBhMjYyY2VlZi4uZWJkNDU2NzA3MmUwMWMzMjFkMmM3
ODQ2MWM3NzM2MDU5NjhlYTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtOTcsMjMgKzk3LDIzIEBAIFBhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heFN1cHBvcnRlZERhdGFTZXJpYWxp
emF0aW9uVmVyc2lvbk51bWJlciA9IDE7CiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSByZXN1
bHQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdmVyc2lvbjsKICAgICBkZWNvZGVyID4+IHZlcnNpb247CiAgICAgaWYgKCF2ZXJz
aW9uIHx8ICp2ZXJzaW9uID4gbWF4U3VwcG9ydGVkRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uTnVt
YmVyKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW47
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9yaWdpbjsKICAgICBkZWNvZGVyID4+IG9yaWdp
bjsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXN1bHQubV9v
cmlnaW4gPSBXVEZNb3ZlKCpvcmlnaW4pOwogCi0gICAgT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4+IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhOwogICAg
IGRlY29kZXIgPj4gc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGE7CiAgICAgaWYgKCFzYW1lT3Jp
Z2luQ3VzdG9tU3RyaW5nRGF0YSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBvcmRlcmVkVHlwZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gb3JkZXJlZFR5cGVzOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZFR5cGVzOwogICAg
IGlmICghb3JkZXJlZFR5cGVzKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaAppbmRleCBiMWM3ZDQ3OGYzNzFmNmNjY2Q1
NGFkZWZkNjc4ZWEyZDdhNzYyZTBmLi4xZTViYzI5M2FkYmNlOWMzYjQzOGU4NTEzZmM5NWUyNTI5
NTgwYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRl
bUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8u
aApAQCAtMzgsMTEgKzM4LDExIEBAIGVudW0gY2xhc3MgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRp
b25TdHlsZSB7CiB9OwogCiBzdHJ1Y3QgUHJlc2VudGF0aW9uU2l6ZSB7Ci0gICAgT3B0aW9uYWw8
ZG91YmxlPiB3aWR0aDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UHJlc2VudGF0
aW9uU2l6ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxQcmVzZW50YXRpb25TaXplPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBQcmVz
ZW50YXRpb25TaXplOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFByZXNlbnRhdGlvblNpemU+IFByZXNlbnRhdGlv
blNpemU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQcmVzZW50YXRp
b25TaXplPiBQcmVzZW50YXRpb25TaXplOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBQcmVzZW50YXRpb25TaXplIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC53aWR0aCkpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTEzMSw3ICsxMzEs
NyBAQCB2b2lkIFBhc3RlYm9hcmRJdGVtSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gcmVzdWx0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhdGhzRm9yRmlsZVVwbG9hZCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDJjYzliMDA0ZmE3
MzNmMjM2NDM0Njg2MjJmYWJjYTUxMzcyMWJjMTIuLjFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJi
Y2RhMTY5ZDY3MmViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGlu
dCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5k
ZXggZWQyZWVlZjA5MGNjNmE3MGJjNDAxZWUwZWIzMDM4ZDZmOGZjNzdkOS4uZmNlNGNhZGIxMGY4
ODFjYmRmYTBiNzY2ZTFkOGIxZTkyM2E0YWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH07CiAKLSAgICBjb25zdCBPcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQo
KSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
UGxhaW5UZXh0PiYgcGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblRleHQ7IH0KICAg
ICB2b2lkIHNldFBsYWluVGV4dChQbGFpblRleHQpOwogCiAgICAgc3RydWN0IFVSTERhdGEgewpA
QCAtNzYsMTYgKzc2LDE2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKLSAgICBjb25zdCBP
cHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgdm9pZCBzZXRVUkxEYXRhKFVSTERhdGEpOwogCi0gICAgY29uc3QgT3B0aW9u
YWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvbnRlbnQ+JiB3ZWJDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV93ZWJDb250ZW50OyB9CiAgICAgdm9pZCBzZXRXZWJDb250ZW50KFdlYkNv
bnRlbnQpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPFBsYWluVGV4dD4gbV9wbGFpblRleHQ7
Ci0gICAgT3B0aW9uYWw8VVJMRGF0YT4gbV91cmw7Ci0gICAgT3B0aW9uYWw8V2ViQ29udGVudD4g
bV93ZWJDb250ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8UGxhaW5UZXh0PiBtX3BsYWluVGV4dDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggNWFhOWZjODUyMDZmZjE2NzE5
MTRhZjIyNmY1OGU4NzJlNThlZDRlYi4uYzE3OTljYzY3YzU3OTE0Y2MwMjZlYmYyMzAxZjY0MWQ1
MmM1ODJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
T3B0aW9uYWw8T3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPj4gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpzX2N1cnJlbnRNb2RpZmllcnM7ICAgIAorc3RkOjpvcHRpb25hbDxPcHRpb25T
ZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+PiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNfY3Vy
cmVudE1vZGlmaWVyczsgICAgCiAKIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJy
ZW50TW9kaWZpZXJTdGF0ZShPcHRpb25TZXQ8TW9kaWZpZXI+IG1vZGlmaWVycykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKaW5kZXggMWEx
MzY3ZjdhOWRmMGFiMWFjZTE2ZDAzNjVlNTVmNjUzOGQwY2JkNi4uZjkwZjFkYWQ2YjdiNGU2NzAz
NzQ1YzljYjk3YTMyYzg3MmZhMWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKQEAgLTk0LDkgKzk0LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9oYW5kbGVkQnlJbnB1dE1ldGhvZDsgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBV
U0UoTElCV1BFKQotICAgICAgICBjb25zdCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJldHVybiBtX3By
ZWVkaXRVbmRlcmxpbmVzOyB9Ci0gICAgICAgIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJl
ZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRTZWxlY3Rp
b25SYW5nZVN0YXJ0OyB9Ci0gICAgICAgIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgcHJlZWRp
dFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wcmVlZGl0U2VsZWN0aW9u
UmFuZ2VMZW5ndGg7IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVuZGVybGluZXMoKSBjb25zdCB7IHJl
dHVybiBtX3ByZWVkaXRVbmRlcmxpbmVzOyB9CisgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2VTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQ7IH0KKyAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4mIHByZWVkaXRTZWxlY3Rpb25SYW5nZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoOyB9CiAjZW5kaWYKICNpZiBVU0UoQVBQS0lU
KQogICAgICAgICBjb25zdCBWZWN0b3I8S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1hbmRzOyB9CkBAIC0xNjMsOSArMTYzLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1faGFuZGxlZEJ5SW5wdXRNZXRob2QgeyBmYWxzZSB9Owog
I2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotICAgICAgICBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxp
bmVzOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2VT
dGFydDsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdl
TGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZT4+IG1fcHJlZWRpdFVuZGVybGluZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoOwogI2VuZGlmCiAj
aWYgVVNFKEFQUEtJVCkKICAgICAgICAgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4gbV9jb21tYW5k
czsKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNlbmRp
ZgogICAgICAgICAvLyBUaGUgbW9kaWZpZXIgc3RhdGUgaXMgb3B0aW9uYWwsIHNpbmNlIGl0IGlz
IG5vdCBuZWVkZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb3IgaW4gbGVnYWN5IFdlYktpdC4KLSAgICAg
ICAgc3RhdGljIE9wdGlvbmFsPE9wdGlvblNldDxNb2RpZmllcj4+IHNfY3VycmVudE1vZGlmaWVy
czsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PE1vZGlmaWVyPj4gc19j
dXJyZW50TW9kaWZpZXJzOwogICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDZhYjQx
ZmI3ZTEyOWYwYmU5NWNiZGNhOGZlODFjZmFjY2NjM2M0ZGUuLjdhMmEzMTAwNzQyNTAwMjQzYmI0
NmZmNTk4Njg2MWU4NGEyZmQ5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwog
I2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291bnQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHBlcmZvcm1Bc0RhdGFPd25lcihEYXRhT3duZXJUeXBlLCBGdW5j
dGlvbjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9jZXNzSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzSWRl
bnRpZmllci5jcHAKaW5kZXggZTlkZDY4ZGYyZmI0ZWQ2MTdjM2JhZWVmZjM4OWJiN2Q5ODY3ODE0
Ni4uODllN2E0ZDAxMDI4NTlhNzNjMzFlMTg2NjY5OTZlODMyZDhhYWEyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NJZGVudGlmaWVyLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFByb2Nlc3MgewogCi1zdGF0aWMgT3B0
aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IGdsb2JhbElkZW50aWZpZXI7CitzdGF0aWMgc3RkOjpv
cHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gZ2xvYmFsSWRlbnRpZmllcjsKIAogdm9pZCBzZXRJ
ZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwCmluZGV4IGJlMDQ2MDE1MDU1YTVm
YmQ4NDdhNzU3MzJjMjE0OTAyNWVlYzNmMjYuLmM0OTQwZDYyOTk0Y2YzOGZlMjkyMmQ5MDQ4NmQw
OGM1NTBiZjljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVy
UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNo
b3VsZFBhcnNlTGVnYWN5S2V5d29yZHMgeyBObywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25hbDxS
ZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5
LCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzIHNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHMpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRv
a2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzIHNob3VsZFBh
cnNlTGVnYWN5S2V5d29yZHMpCiB7CiAgICAgLy8gIm5ldmVyIiAvICJkZWZhdWx0IiAvICJhbHdh
eXMiIGFyZSBsZWdhY3kga2V5d29yZHMgdGhhdCB3ZSBzdXBwb3J0IGFuZCBzdGlsbCBkZWZpbmVk
IGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb246CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy8jbWV0YS1yZWZlcnJlcgpAQCAtNjcsMTIgKzY3LDEyIEBAIHN0YXRpYyBPcHRpb25h
bDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9s
aWN5LCBTaG91CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICAgICAKLU9wdGlvbmFsPFJl
ZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5n
LCBSZWZlcnJlclBvbGljeVNvdXJjZSBzb3VyY2UpCitzdGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9s
aWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJl
clBvbGljeVNvdXJjZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNl
IFJlZmVycmVyUG9saWN5U291cmNlOjpIVFRQSGVhZGVyOiB7CiAgICAgICAgIC8vIEltcGxlbWVu
dGluZyBodHRwczovL3d3dy53My5vcmcvVFIvMjAxNy9DUi1yZWZlcnJlci1wb2xpY3ktMjAxNzAx
MjYvI3BhcnNlLXJlZmVycmVyLXBvbGljeS1mcm9tLWhlYWRlci4KLSAgICAgICAgT3B0aW9uYWw8
UmVmZXJyZXJQb2xpY3k+IHJlc3VsdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcnJlclBv
bGljeT4gcmVzdWx0OwogICAgICAgICBmb3IgKGF1dG8gdG9rZW5WaWV3IDogcG9saWN5U3RyaW5n
LnNwbGl0KCcsJykpIHsKICAgICAgICAgICAgIGF1dG8gdG9rZW4gPSBwYXJzZVJlZmVycmVyUG9s
aWN5VG9rZW4oc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHRva2VuVmlldyksIFNo
b3VsZFBhcnNlTGVnYWN5S2V5d29yZHM6Ok5vKTsKICAgICAgICAgICAgIGlmICh0b2tlbiAmJiB0
b2tlbi52YWx1ZSgpICE9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oCmluZGV4IGQ1ZDQ5ODQ2NWUxYWJlY2Q4YmVlYTNl
NGQ2ZDQwZTQ4MzQ4NzExZWYuLjM4Y2Y0N2ExZWMyMzY1Zjg4MmU4NzBiNjczNjk1MjVjNTEwZTg0
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaApAQCAtNDksNyAr
NDksNyBAQCBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5IDogdWludDhfdCB7CiB9OwogCiBlbnVt
IGNsYXNzIFJlZmVycmVyUG9saWN5U291cmNlIDogdWludDhfdCB7IE1ldGFUYWcsIEhUVFBIZWFk
ZXIsIFJlZmVycmVyUG9saWN5QXR0cmlidXRlIH07Ci1PcHRpb25hbDxSZWZlcnJlclBvbGljeT4g
cGFyc2VSZWZlcnJlclBvbGljeShTdHJpbmdWaWV3LCBSZWZlcnJlclBvbGljeVNvdXJjZSk7Citz
dGQ6Om9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1Zp
ZXcsIFJlZmVycmVyUG9saWN5U291cmNlKTsKIFN0cmluZyByZWZlcnJlclBvbGljeVRvU3RyaW5n
KGNvbnN0IFJlZmVycmVyUG9saWN5Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDFiN2U1ZGMxMjM4YWYwNGZmOWU5MDllOWM0MWJkMDk5
OWNkMzJjNTYuLmVjM2UwZmZkM2FmMzU0NTMyMGMzNzhmODBhODU0MmQ5NzZlODY1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaApAQCAtOTcsNyArOTcs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFp
bj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJvdGVjdGVkOgogCkBAIC0xNDIsOSArMTQyLDkgQEAg
dm9pZCBSZWdpc3RyYWJsZURvbWFpbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4g
UmVnaXN0cmFibGVEb21haW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxSZWdpc3RyYWJsZURvbWFpbj4gUmVnaXN0cmFibGVEb21haW46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gZG9tYWluOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBkb21haW47CiAgICAgZGVjb2RlciA+PiBkb21haW47CiAgICAgaWYgKCFkb21h
aW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCA5ODBmZmU5NTgw
MDNlZGFlODZhY2I4OGRiOTQxMjM3NzliMjk3MzBkLi5jZTAwZGYzYWYxMTU5MmEzNTM2YjFhMTYx
ZWE5NjM5ZGI4NjZlYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RhdGljIGJvb2wgcHJlc2VudGluZ0FwcGxpY2F0aW9uUElET3ZlcnJpZGVXYXNR
dWVyaWVkOwogI2VuZGlmCiAKLXN0YXRpYyBPcHRpb25hbDxpbnQ+JiBwcmVzZW50aW5nQXBwbGlj
YXRpb25QSURPdmVycmlkZSgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ+JiBwcmVzZW50aW5n
QXBwbGljYXRpb25QSURPdmVycmlkZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9w
dGlvbmFsPGludD4+IHBpZDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25h
bDxpbnQ+PiBwaWQ7CiAjaWYgIUFTU0VSVF9NU0dfRElTQUJMRUQKICAgICBwcmVzZW50aW5nQXBw
bGljYXRpb25QSURPdmVycmlkZVdhc1F1ZXJpZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MCw5ICs2
MCw5IEBAIHZvaWQgc2V0UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElET3ZlcnJpZGUoKSA9IHBpZDsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiYgYXV4aWxpYXJ5UHJvY2Vzc1R5cGUoKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8QXV4aWxpYXJ5UHJvY2Vzc1R5cGU+JiBhdXhpbGlhcnlQcm9jZXNzVHlw
ZSgpCiB7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEF1eGlsaWFyeVByb2Nlc3NUeXBlPiBhdXhpbGlh
cnlQcm9jZXNzVHlwZTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdXhpbGlhcnlQcm9jZXNz
VHlwZT4gYXV4aWxpYXJ5UHJvY2Vzc1R5cGU7CiAgICAgcmV0dXJuIGF1eGlsaWFyeVByb2Nlc3NU
eXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9w
ZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKaW5k
ZXggZDZlOTdlM2EyMDkxNDE4OTE3N2Y2MDczYTIwMTQ5M2E4NDAxNDExZS4uZTNhMzNjYTlkOTlm
MjAwZjBjY2RlNDAxYTBlYzk4YmI0YTg0MTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjcmVlblByb3BlcnRpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgU2NyZWVuRGF0YSB7
CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdXNpbmcgU2NyZWVuRGF0YU1hcCA9IEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQsIFNjcmVl
bkRhdGE+OwpAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiAgICAg
U2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNjcmVlblBy
b3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgpAQCAtNzYsMTQgKzc2LDE0IEBAIHZvaWQgU2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8U2NyZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydGllczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+IHByaW1hcnlEaXNwbGF5SUQ7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJ
RD4gcHJpbWFyeURpc3BsYXlJRDsKICAgICBkZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5SUQ7CiAg
ICAgaWYgKCFwcmltYXJ5RGlzcGxheUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8U2NyZWVuRGF0YU1hcD4gc2NyZWVuRGF0YU1hcDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNjcmVlbkRhdGFNYXA+IHNjcmVlbkRhdGFNYXA7CiAgICAgZGVjb2RlciA+PiBzY3Jl
ZW5EYXRhTWFwOwogICAgIGlmICghc2NyZWVuRGF0YU1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTEwNiw3MiArMTA2LDcyIEBAIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRlY29k
ZXIgPj4gc2NyZWVuQXZhaWxhYmxlUmVjdDsKICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJlY3Qp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IHNjcmVlblJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAg
ICAgZGVjb2RlciA+PiBzY3JlZW5SZWN0OwogICAgIGlmICghc2NyZWVuUmVjdCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IHNjcmVlbkNvbG9yU3BhY2U7
CiAgICAgaWYgKCFzY3JlZW5Db2xvclNwYWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8aW50PiBzY3JlZW5EZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gc2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNj
cmVlbkRlcHRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
aW50PiBzY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudDsKICAgICBpZiAoIXNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yOwogICAgIGRlY29kZXIgPj4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogICAgIGlm
ICghc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBzY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKICAgICBkZWNvZGVy
ID4+IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwogICAgIGlmICghc2NyZWVuSGFzSW52ZXJ0ZWRD
b2xvcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29s
PiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAgICAgaWYgKCFzY3JlZW5TdXBwb3J0c0hpZ2hEeW5h
bWljUmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgT3B0aW9uYWw8Ym9vbD4gc2NyZWVuSXNNb25vY2hyb21lOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gc2NyZWVuSXNNb25vY2hyb21lOwogICAgIGRlY29kZXIgPj4gc2NyZWVuSXNN
b25vY2hyb21lOwogICAgIGlmICghc2NyZWVuSXNNb25vY2hyb21lKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOwogICAgIGRlY29kZXIgPj4gZGlz
cGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPElPUmVnaXN0cnlHUFVJRD4gZ3B1SUQ7CisgICAgc3RkOjpv
cHRpb25hbDxJT1JlZ2lzdHJ5R1BVSUQ+IGdwdUlEOwogICAgIGRlY29kZXIgPj4gZ3B1SUQ7CiAg
ICAgaWYgKCFncHVJRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPER5bmFtaWNSYW5nZU1vZGU+IHByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxEeW5hbWljUmFuZ2VNb2RlPiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwog
ICAgIGRlY29kZXIgPj4gcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKICAgICBpZiAoIXByZWZl
cnJlZER5bmFtaWNSYW5nZU1vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRp
b25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVG
YWN0b3I7CiAgICAgZGVjb2RlciA+PiBzY2FsZUZhY3RvcjsKICAgICBpZiAoIXNjYWxlRmFjdG9y
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAppbmRleCA3ODZjNDk2M2FkZWQwNTBm
ZWJkM2IyNzY3ZDc3MjEzODIzMzFmMjhkLi4yMThkYmFhMGU1ZTczZjEyMGU2NGE4Yjg4MWM3N2Q3
YjcwYmFkMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBG
bG9hCiAgICAgYXV0byBkZWx0YSA9IGRlbHRhVG9OZXh0RnJhbWUoKTsKICAgICBhdXRvIGV4dGVu
dHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwogCi0gICAgYXV0byBhY2N1bXVsYXRlVmVs
b2NpdHkgPSBbJl0oZG91YmxlIHZlbG9jaXR5LCBPcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0Rh
dGEpIC0+IGRvdWJsZSB7CisgICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91Ymxl
IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91Ymxl
IHsKICAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9s
bChkZWx0YSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVsb2NpdHkgPSBheGlzRGF0YS52
YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAgICAgICBpZiAoKHN0ZDo6c2lnbmJpdChsYXN0VmVs
b2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggMjA3ZWU0OTgxOGEwNDhmODVm
ZjY2ZWRiYzlhODE2YzdjMTkxNjhlZS4uZjllMDliYWFhODI5OGMwZDQ3NzRkODkwNzc5MDNiOGM4
OGQwMjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bktpbmV0aWMuaApAQCAtODAsOCArODAsOCBAQCBwcml2YXRlOgogICAgIFNjcm9sbEV4dGVudHND
YWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbjsKICAgICBOb3RpZnlQb3NpdGlvbkNoYW5n
ZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOwogCi0gICAgT3B0aW9u
YWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRhbERhdGE7Ci0gICAgT3B0aW9uYWw8UGVyQXhpc0Rh
dGE+IG1fdmVydGljYWxEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9y
aXpvbnRhbERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERh
dGE7CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAgIFJ1bkxvb3A6OlRpbWVy
PFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggOGFiYzhhZmZiMzRiOTZiOWRlZmY5
NzU2ODE4NTk2ZTVlOTk4YjIyNS4uYjMwZWQzZjNmYTIxZmM5NDU3YzNjZmE5ZWM3ZjBhZWZmMzE1
ZGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAt
NDIxLDcgKzQyMSw3IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRG
b3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2ZW50QXhpcyBheGlzCiAgICAgaWYgKCFtX3Njcm9s
bENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkKICAgICAgICAgcmV0dXJuIG5ld09mZnNldDsK
IAotICAgIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBvcmlnaW5hbE9mZnNldDsKICAgICBmbG9hdCB2ZWxvY2l0eSA9IDAuOwogICAgIGlm
IChtZXRob2QgPT0gU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kOjpEaXJlY3Rpb25hbCkg
ewogICAgICAgICBGbG9hdFNpemUgc2Nyb2xsT3JpZ2luID0gdG9GbG9hdFNpemUobV9zY3JvbGxh
YmxlQXJlYS5zY3JvbGxPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmgKaW5kZXggOTNhZjU4YjMzM2U4YzRkMzJkZTNkMTI0MDMzYTk1YWVmYmIzMTZh
YS4uZmU0NThiMzY4MjA3OWI0OTNiNjgxOTBjNmFkYzFjNjVlZGYwYjhmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2
ZW50QXhpcykgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Ny
b2xsYWJsZUFyZWEmKTsKICAgICB2b2lkIHVwZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0gICAgZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24oU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2Np
dHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCk7CisgICAgZmxvYXQgYWRqdXN0U2Ny
b2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZXN0aW5hdGlvbk9mZnNldCwg
ZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0KTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAg
ICBlbnVtIGNsYXNzIFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwotICAgIHN0YXRp
YyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFz
ID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Nyb2xs
RGlyZWN0aW9uPiBkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
c3RkOjpvcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlz
Qmlhczo6Tm9uZSk7CiAgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2Fy
ZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgaXNTY3Jv
bGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CmluZGV4IDlmNGNlZWUxZjdiYTkzZmRiODg1ODcxOTFhYTZiYWM0ZDkwMjg3NDQuLjEwNzhhM2M0
NDU5YzcwMzVmN2IzN2E1ZTQ1NWNlODRmYmJjMTVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKQEAgLTU0NSw3ICs1NDUsNyBAQCBwcml2YXRlOgogICAgICAgICBGbG9hdFNp
emUgdW5vYnNjdXJlZENvbnRlbnRTaXplOwogICAgICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRl
bnRSZWN0OwogICAgIH07Ci0gICAgT3B0aW9uYWw8RGVsZWdhdGVkU2Nyb2xsaW5nR2VvbWV0cnk+
IG1fZGVsZWdhdGVkU2Nyb2xsaW5nR2VvbWV0cnk7CisgICAgc3RkOjpvcHRpb25hbDxEZWxlZ2F0
ZWRTY3JvbGxpbmdHZW9tZXRyeT4gbV9kZWxlZ2F0ZWRTY3JvbGxpbmdHZW9tZXRyeTsKIAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAvLyBGSVhNRTogZXhwb3NlZENvbnRlbnRS
ZWN0IGlzIGEgdmVyeSBzaW1pbGFyIGNvbmNlcHQgdG8gZml4ZWRWaXNpYmxlQ29udGVudFJlY3Qg
ZXhjZXB0IGl0IGRvZXMgbm90IGRpZmZlcmVudGlhdGUKQEAgLTU1Nyw4ICs1NTcsOCBAQCBwcml2
YXRlOgogICAgIEludFNpemUgbV9maXhlZExheW91dFNpemU7CiAgICAgSW50U2l6ZSBtX2NvbnRl
bnRzU2l6ZTsKIAotICAgIE9wdGlvbmFsPEludFNpemU+IG1fZGVmZXJyZWRTY3JvbGxEZWx0YTsg
Ly8gTmVlZGVkIGZvciBXZWJLaXQgc2Nyb2xsaW5nCi0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFNj
cm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0Pj4gbV9kZWZlcnJlZFNjcm9sbE9mZnNldHM7IC8vIE5l
ZWRlZCBmb3IgcGxhdGZvcm0gd2lkZ2V0IHNjcm9sbGluZworICAgIHN0ZDo6b3B0aW9uYWw8SW50
U2l6ZT4gbV9kZWZlcnJlZFNjcm9sbERlbHRhOyAvLyBOZWVkZWQgZm9yIFdlYktpdCBzY3JvbGxp
bmcKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNl
dD4+IG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzOyAvLyBOZWVkZWQgZm9yIHBsYXRmb3JtIHdpZGdl
dCBzY3JvbGxpbmcKIAogICAgIEludFBvaW50IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMTMyYWVhMjg5ZTA5
NzcyMjY5M2QxMmNlMDcwMDZhNTkxNjk2MWY2Yi4uYTE3N2U4MGQ1ZGMzMjFhODg3ZjgwYmZiYjQx
NDIyYWEzNTQ0ZTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0
aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgICAgIHNjcm9s
bEFuaW1hdG9yKCkubm90aWZ5Q29udGVudEFyZWFTY3JvbGxlZChzY3JvbGxQb3NpdGlvbigpIC0g
b2xkUG9zaXRpb24pOwogfQogCi1ib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50
Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KQorYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxl
V2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KQogewogICAgIGlmICgh
aXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBkNDgxZjdlZGNiZmJm
MzNiZGFiNjYzNjc3YzhmZDUwYjczOGFmOWE2Li4wMTk1YTE1NTQzNzlhOWMzZTE2OTVmN2M0NGVj
ZGQzZGVmZDA3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
QEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4gc29t
ZXRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6
OlVzZXIsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBo
YW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0
ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KTsKIAogICAgIGJvb2wgdXNlc1Nj
cm9sbFNuYXAoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oCmluZGV4IGFlZTBkODc2ZWYzNjY4YzVhMDE4OWZjMjI3MjQwNzU3MDNhMzIzYjcuLmMw
OWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlw
ZSkgZmluYWw7CiAKLSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4
dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwg
T3B0aW9uYWw8c2l6ZV90PiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZWFk
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9w
dGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4
dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6
Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJl
YWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gPSBz
dGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
VVJMJikgZmluYWw7CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAppbmRleCBiYzk3ZTRlNGJmNTQyN2VjZWQ3MWY4
N2M0ZTFjOGE0ZmM1YjkyZWJhLi4yMDI3MmJiZTM1NGM0MDE3MjU5NDUyZWRiYzRjZmU5ODlkOGY5
MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIGludCBU
aGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0CiAgICAg
cmV0dXJuIDA7CiB9CiAKLU9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lOjpj
b250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRyb2xGb250
KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAogewogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCBkZGMyNjBl
M2VlYmEzZTMyZGJjODc3OGVmYTYwZmM1ZDYzZjcxNGNlLi4xY2Y1NmMyODZmYWJmZjZkNDBiZDc4
M2Y5MTQ4OTdkOWQ3MTVmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50
KENvbnRyb2xQYXJ0KSBjb25zdDsKIAogICAgIC8vIFRoZSBmb250IGRlc2NyaXB0aW9uIHJlc3Vs
dCBzaG91bGQgaGF2ZSBhIHpvb21lZCBmb250IHNpemUuCi0gICAgdmlydHVhbCBPcHRpb25hbDxG
b250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CiAKICAgICAvLyBUaGUg
c2l6ZSBoZXJlIGlzIGluIHpvb21lZCBjb29yZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXpl
IGlzIHJldHVybmVkLCBpdCBhbHNvIG5lZWRzIHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4K
ICAgICB2aXJ0dWFsIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5kZXggZTFmNmUyMmEyYTNkZmY2
ODQyNjgxMjVjODM4N2Q5N2ZiZDdlOTIxNS4uZjA3MzQ4ZjgwOGQ3ZjAzMzVkYTg5NmY1ZTY0MDBl
YjEzZmVmODk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcApAQCAtNDM1LDcgKzQzNSw3
IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBvbGRU
aW1lKQogICAgICAgICByZXR1cm47CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBvbGRIZWFwSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb2xk
SGVhcEluZGV4OwogICAgIGlmIChtX2hlYXBJdGVtLT5pc0luSGVhcCgpKQogICAgICAgICBvbGRI
ZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFwSW5kZXgoKTsKICNlbmRpZgpAQCAtNDUwLDcgKzQ1
MCw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBv
bGRUaW1lKQogICAgICAgICBoZWFwSW5jcmVhc2VLZXkoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5ld0hlYXBJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBuZXdIZWFwSW5kZXg7CiAgICAgaWYgKG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkp
CiAgICAgICAgIG5ld0hlYXBJbmRleCA9IG1faGVhcEl0ZW0tPmhlYXBJbmRleCgpOwogICAgIEFT
U0VSVChuZXdIZWFwSW5kZXggIT0gb2xkSGVhcEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
CmluZGV4IDU2Zjc2NTc4MWMzYjEzNzRhMjE2MjU5NWIxYjA5MmI5ZWRkNzU3MDUuLjhlNDVmODdi
MjAxYzA2M2FlZTJlOTdiN2RlMjU1YmEzMTJjNTIwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBm
aXJlZCgpID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25l
ZEZpcmVUaW1lKE1vbm90b25pY1RpbWUpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQor
ICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNUaW1lPiBhbGlnbmVkRmlyZVRpbWUo
TW9ub3RvbmljVGltZSkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5n
RnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5j
dGlvbi5oCmluZGV4IDMxNWFlNGIyMDdmNzBjODdlMzhkZjdiNjg0Mzk1ZWMxZjNjOTJkNTMuLjJi
ZjZhYzY5ZWFiYWJlMjQyM2M5ZGYxYjRiZmNmMjUyNWExM2U3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yMDgsNyAr
MjA4LDcgQEAgcHVibGljOgogICAgICAgICBFbmQsCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGludCBzdGVwcywgT3B0aW9uYWw8U3RlcFBvc2l0
aW9uPiBzdGVwUG9zaXRpb24pCisgICAgc3RhdGljIFJlZjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBj
cmVhdGUoaW50IHN0ZXBzLCBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9u
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RlcHNUaW1pbmdGdW5jdGlv
bihzdGVwcywgc3RlcFBvc2l0aW9uKSk7CiAgICAgfQpAQCAtMjI4LDExICsyMjgsMTEgQEAgcHVi
bGljOgogICAgIGludCBudW1iZXJPZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsgfQog
ICAgIHZvaWQgc2V0TnVtYmVyT2ZTdGVwcyhpbnQgc3RlcHMpIHsgbV9zdGVwcyA9IHN0ZXBzOyB9
CiAKLSAgICBPcHRpb25hbDxTdGVwUG9zaXRpb24+IHN0ZXBQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RlcFBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRTdGVwUG9zaXRpb24oT3B0aW9uYWw8
U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb24pIHsgbV9zdGVwUG9zaXRpb24gPSBzdGVwUG9zaXRp
b247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zdGVwUG9zaXRpb247IH0KKyAgICB2b2lkIHNldFN0ZXBQb3NpdGlvbihz
dGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKSB7IG1fc3RlcFBvc2l0aW9u
ID0gc3RlcFBvc2l0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RlcHNUaW1pbmdGdW5jdGlvbihp
bnQgc3RlcHMsIE9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uKQorICAgIFN0ZXBz
VGltaW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBzdGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gc3Rl
cFBvc2l0aW9uKQogICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCiAgICAg
ICAgICwgbV9zdGVwcyhzdGVwcykKICAgICAgICAgLCBtX3N0ZXBQb3NpdGlvbihzdGVwUG9zaXRp
b24pCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgaW50IG1f
c3RlcHM7Ci0gICAgT3B0aW9uYWw8U3RlcFBvc2l0aW9uPiBtX3N0ZXBQb3NpdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0ZXBQb3NpdGlvbj4gbV9zdGVwUG9zaXRpb247CiB9OwogCiBjbGFzcyBT
cHJpbmdUaW1pbmdGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCmluZGV4IGMy
OWI4NTg2NjAyZWNlMTEwYjY2MmM1ODEwZTliZTdjNDJhMzE2ZDEuLjRmMDA3OTdiNTlkZjdkZWUz
ODgwMTdlZmE2NTg2NTNlNzFkM2M1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCkBAIC00OCwxNCArNDgsMTQgQEAgc3RydWN0IEF1ZGlv
SU9Qb3NpdGlvbiB7CiAgICAgICAgIGVuY29kZXIgPDwgdGltZXN0YW1wOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBdWRpb0lPUG9zaXRp
b24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF1ZGlvSU9Qb3NpdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKICAgICAgICAgZGVjb2RlciA+
PiBwb3NpdGlvbjsKICAgICAgICAgaWYgKCFwb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZXN0YW1w
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVzdGFtcDsKICAgICAg
ICAgZGVjb2RlciA+PiB0aW1lc3RhbXA7CiAgICAgICAgIGlmICghdGltZXN0YW1wKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IDhlNjg2ZTQ0N2I5YjY2ZGNlOGFiN2UyMTM3MTRm
ZGU2MGU5M2JiNWMuLjVmNjE2OWU3MTdmYWY2MzU5NjY5MTA0Zjc4MjA2ZjVmZDI1NDI1NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAt
NDEsOSArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxV
bmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4mIHNoYXJlZEF1ZGlvU2Vzc2lvbigpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4mIHNoYXJlZEF1ZGlvU2Vzc2lvbigp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nl
c3Npb24+Pj4gc2Vzc2lvbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpvcHRpb25h
bDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb24u
Z2V0KCk7CiB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6YXVkaW9P
dXRwdXREZXZpY2VDaGFuZ2VkKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEF1
ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
PikKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggYjhmN2QzMGY3ZDY1
MTA4ZGIzZDBiNzM2OTg4OTdlMzA2MGY5OGJiOC4uYTk0NzdlMWQwMTcxNmExNDkzNzJhMTI1NDhh
Y2JiYWM4NTk5NzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKikgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9v
bD4pOwogCiAgICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggYzMwNzY2NDM0OTE2NjFh
NWY2ZjBmZmUyNTM0NjhlNjkzOGVlMDdjYS4uYjQyOTQ3ZWZjYzNmMmM4M2EzY2Q2ZDUzNTg5M2Y4
YjdjMmM3YTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aApAQCAtODAsMTEgKzgwLDExIEBAIHByaXZhdGU6CiAgICAgQ3Jvc3NmYWRlU2VsZWN0aW9uIG1f
Y3Jvc3NmYWRlU2VsZWN0aW9uIHsgQ3Jvc3NmYWRlU2VsZWN0aW9uMSB9OwogCiAgICAgLy8gYXpp
bXV0aC9lbGV2YXRpb24gZm9yIENyb3NzZmFkZVNlbGVjdGlvbjEuCi0gICAgT3B0aW9uYWw8aW50
PiBtX2F6aW11dGhJbmRleDE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fYXppbXV0aEluZGV4
MTsKICAgICBkb3VibGUgbV9lbGV2YXRpb24xIHsgMCB9OwogCiAgICAgLy8gYXppbXV0aC9lbGV2
YXRpb24gZm9yIENyb3NzZmFkZVNlbGVjdGlvbjIuCi0gICAgT3B0aW9uYWw8aW50PiBtX2F6aW11
dGhJbmRleDI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fYXppbXV0aEluZGV4MjsKICAgICBk
b3VibGUgbV9lbGV2YXRpb24yIHsgMCB9OwogCiAgICAgLy8gQSBjcm9zc2ZhZGUgdmFsdWUgMCA8
PSBtX2Nyb3NzZmFkZVggPD0gMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9O
b3dQbGF5aW5nSW5mby5oCmluZGV4IDU4ZjBiY2M5MGY3ODg2ZDJlMWI3NjdiZTgzZjE1ODlmNzUx
NDliZmUuLjMzMzYwNWU3NWJkMTE4MDU1YjBjZWE1MDcwNWFhYTdlY2IwNTRlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtNTAsNyAr
NTAsNyBAQCBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29y
az4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNTgsNyArNTgsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6
OmVuY29kZShFbmNvZGVyJiBlbmNvZAogICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8
IGltYWdlRGF0YTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTdHJpbmcgc3JjOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3JjKSkKQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKICAg
ICBNZWRpYVVuaXF1ZUlkZW50aWZpZXIgdW5pcXVlSWRlbnRpZmllcjsKICAgICBib29sIGlzUGxh
eWluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdv
cms7CisgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAog
ICAgIHsKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93UGxheWlu
Z0luZm8+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mbzo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0xMTcsNyArMTE3LDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0luZm86OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8
PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUg
PDwgc3VwcG9ydHNTZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPDwgYXJ0d29yazsKIH0KIAotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5
aW5nSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFN0cmluZyB0aXRsZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHRpdGxlKSkKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpk
ZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDxOb3dQbGF5
aW5nSW5mb0FydHdvcms+IGFydHdvcms7CisgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5m
b0FydHdvcms+IGFydHdvcms7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDI5NzI2ZDMxYWUzODk0ZDQzYWE5
ODk0YmViMDA4YTQzZjg3ZjRlMDYuLjYyODQ3MTcyNjQyNTRmZDY0OGVmZWEwYjE3ODlhZGRiM2Vj
YmVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjptYW5hZ2VyKCkKICAgICByZXR1cm4g
Km1fbWFuYWdlcjsKIH0KIAotT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCA3YWFjNTI0YjQ5NjA1OTZhYmQxMjBmMWEwNTgz
MDkxZTIxNTgwODdkLi44MjEyN2E4Nzg4OWNkMTMzMzI2ZTFlMmUwOGUwOTM5MjczMzhkNzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgKQEAgLTExOSwxMSArMTE5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAgICAgCiAgICAgc3RydWN0IFJlbW90ZUNvbW1hbmRBcmd1
bWVudCB7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdGltZTsKLSAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gZmFzdFNlZWs7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0aW1lOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhc3RTZWVrOwogCiAgICAgICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlbW90ZUNvbW1hbmRBcmd1bWVudD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVtb3RlQ29tbWFuZEFyZ3VtZW50PiBkZWNvZGUoRGVjb2RlciYpOwog
ICAgIH07CiAKICAgICBlbnVtIFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVy
aW5nQXVkaW8oKSBjb25zdCA9IDA7CiAgICAgfTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Tm93
UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbygpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkgeyB9CiAKICAgICBNZWRpYVNlc3Np
b25JZGVudGlmaWVyIG1lZGlhU2Vzc2lvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhU2Vzc2lvbklkZW50aWZpZXI7IH0KQEAgLTI5MSwxMCArMjkxLDEwIEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IGlubGluZSB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21t
YW5kQXJndW1lbnQ6CiAgICAgZW5jb2RlciA8PCB0aW1lIDw8IGZhc3RTZWVrOwogfQogCi10ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8UGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4gUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1h
bmRBcmd1bWVudDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29t
bWFuZEFyZ3VtZW50PiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUp
IFwKLSAgICBPcHRpb25hbDxPcHRpb25hbDx0eXBlPj4gbmFtZTsgXAorICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDx0eXBlPj4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAog
ICAgIGlmICghbmFtZSkgXAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAKaW5kZXggNmJiZjQ2Y2RhMDdkMTY1NzY3ZmEwNjQwNmIyMjNmYzE2Mjli
NmE0OS4uZDc3OWE4ZmQzM2Q3NzgyMzQ3MzIxODZkYTJhYTVlZGNjZTIzMTdlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIHZhbGlkYXRlQXVkaW9CdWZm
ZXJMaXN0KEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdCkKICAgICBpZiAoIWJ1ZmZlckxpc3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHBlY3Rl
ZERhdGFTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGV4cGVjdGVkRGF0YVNpemU7
CiAgICAgY29uc3QgQXVkaW9CdWZmZXIqIGJ1ZmZlciA9IGJ1ZmZlckxpc3QtPm1CdWZmZXJzOwog
ICAgIGNvbnN0IEF1ZGlvQnVmZmVyKiBidWZmZXJFbmQgPSBidWZmZXIgKyBidWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVyczsKICAgICBmb3IgKCA7IGJ1ZmZlciA8IGJ1ZmZlckVuZDsgKytidWZmZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggMmM0Yzc3ZmRmMjk3MWEyNzMxYjY2OTYyYmI0
ODg0MmJlMmVkNTJmZi4uZGExZmFjZTU3ZjU0NjE4MzgzZDQzNTk2MjJjMDViNjdmZGM0MGRkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1w
bGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTg3LDggKzg3LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcHVzaFNhbXBsZXNJbnRlcm5hbChjb25zdCBBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBN
ZWRpYVRpbWUmLCBzaXplX3QgZnJhbWVDb3VudCk7CiAKLSAgICBPcHRpb25hbDxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+IG1faW5wdXREZXNjcmlwdGlvbjsKLSAgICBPcHRpb25hbDxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisgICAgc3RkOjpvcHRpb25h
bDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5wdXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsK
IAogICAgIE1lZGlhVGltZSBob3N0VGltZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KaW5kZXggYzJiNmMwNGQxZjQyMGU2Njk2MTg3MDM2NTkzMWZmMDA0OTA4MmU1OS4u
ZDczYmE2OTQ4ZjI3YmVmYzU3OGU4YjFiNjRkMDc3NmIzMjMzNTBhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIAotICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5m
bzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSkKICAgICAg
ICAgbm93UGxheWluZ0luZm8gPSBzZXNzaW9uLT5ub3dQbGF5aW5nSW5mbygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZm
ZXJMaXN0LmNwcAppbmRleCBlYzRhZjZiNmIzMjQ3M2VmYzBjMzVmM2ZjODUyY2M5ZWFiNTk0Yzgz
Li44NDg1NjczYWZhNTM1N2FiM2Y0YTQ3NzU3YjUwMDA5YThjMWRjM2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVy
TGlzdC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgV2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1
ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHUKICAgICBz
ZXRTYW1wbGVDb3VudChzYW1wbGVDb3VudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gY29tcHV0ZUJ1ZmZlclNpemVzKHVpbnQzMl90IG51
bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscywgdWludDMyX3QgYnl0ZXNQZXJGcmFtZSwgdWludDMy
X3QgbnVtYmVyT2ZDaGFubmVsU3RyZWFtcywgdWludDMyX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gY29tcHV0ZUJ1
ZmZlclNpemVzKHVpbnQzMl90IG51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscywgdWludDMyX3Qg
Ynl0ZXNQZXJGcmFtZSwgdWludDMyX3QgbnVtYmVyT2ZDaGFubmVsU3RyZWFtcywgdWludDMyX3Qg
c2FtcGxlQ291bnQpCiB7CiAgICAgc2l6ZV90IHRvdGFsU2FtcGxlQ291bnQ7CiAgICAgYm9vbCBy
ZXN1bHQgPSBXVEY6OnNhZmVNdWx0aXBseShzYW1wbGVDb3VudCwgbnVtYmVyT2ZJbnRlcmxlYXZl
ZENoYW5uZWxzLCB0b3RhbFNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVk
aW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGRkNDgyOWQzN2MyM2E2ZDVmMjUwNjMwMDUyYjRi
MjBhZWYzZWVkYTEuLjFjNjk5ZmJlZTQ1OGEzODUyN2E1MDIxZjFmMGNhMDI3ZDJkOWIxOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRX
ZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjk0
LDcgKzI5NCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsCiAgICAgfQogfQogCi1zdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3JjQWxs
b2NhdGVCdWZmZXJzKFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8R1JlZlB0cjxHc3RCdWZmZXI+Pj4gd2ViS2l0V2ViQXVkaW9TcmNBbGxvY2F0ZUJ1
ZmZlcnMoV2ViS2l0V2ViQXVkaW9TcmMqIHNyYykKIHsKICAgICBXZWJLaXRXZWJBdWRpb1NyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IGVkZWYz
MDdmMjdhYzNiOGRiZGY4MmE3YmNlNjQzMjliM2VmZWFjZGEuLmE1MjE1Mzg0NzRjZjcwNmViYjlm
MTY1MTUzYjM4ZTIxYjI3MWI0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtOTgsNyArOTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZSgpOwogI2lmIEhBVkUoQ0VMRVNUSUFMKQogICAgIHZvaWQgbWVkaWFTZXJ2ZXJDb25uZWN0
aW9uRGllZCgpOwotICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJv
b2w+JiYpOworICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRG
T1JNKFdBVENIT1MpCiAgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKGJvb2wpOwpA
QCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZl
ckNvbm5lY3Rpb25EaWVkKCkKICAgICBNZWRpYVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29u
bmVjdGlvbkRpZWQoKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNh
clBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKK3Zv
aWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3RkOjpv
cHRpb25hbDxib29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKIHsKICAgICBpZiAoY2FyUGxheUlz
Q29ubmVjdGVkKSB7CiAgICAgICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGNh
clBsYXlJc0Nvbm5lY3RlZC52YWx1ZSgpKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCAtICh2b2lkKWNh
clBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
ICAgICBpZiAoIV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlz
Q29ubmVjdGVkOwogICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJv
bGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgewogICAgICAg
ICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5m
b10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5v
dGlmaWNhdGlvblBhcmFtZXRlcigpXTsKICAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5oCmluZGV4IGYwNWJiZDg1MmNjYzg4M2Q3Yjg5MjNlZjZiOGQxNTMzMzQyOTc5MDUuLjFh
ZDhmNjE3YWMyMjJjNDQyOTlmYmI1ZDcyMDU0NjMyMzViMjBlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBBdWRpb1Nlc3Npb24KICAgICBDYXRlZ29yeVR5cGUg
Y2F0ZWdvcnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5OyB9CiAgICAgdm9pZCBh
dWRpb091dHB1dERldmljZUNoYW5nZWQoKSBmaW5hbDsKLSAgICB2b2lkIHNldElzUGxheWluZ1Rv
Qmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pIGZpbmFsOworICAgIHZvaWQgc2V0SXNQ
bGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAg
ICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVTaGFyaW5nUG9saWN5KSBmaW5h
bDsKICAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeU92ZXJyaWRlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jYXRlZ29yeU92ZXJyaWRlOyB9CiAgICAgdm9pZCBzZXRDYXRl
Z29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSkgZmluYWw7CkBAIC02NywxOSArNjcsMTkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIq
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2Jz
ZXJ2ZXIqKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IG1fbGFzdE11dGVkU3RhdGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2xhc3RNdXRlZFN0YXRlOwogICAgIEF1ZGlvU2Vzc2lv
bjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6
Tm9uZSB9OwogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGJvb2wgbV9zZXR1
cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2luUm91dGluZ0FyYml0
cmF0aW9uIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290
aDsKLSAgICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9wbGF5aW5nVG9CbHVldG9vdGg7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOwogI2VuZGlmCiAgICAgQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXNTYW1wbGVSYXRl
T2JzZXJ2ZXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2hhc0J1ZmZlclNpemVPYnNl
cnZlciB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxkb3VibGU+IG1fc2FtcGxlUmF0
ZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHNpemVfdD4gbV9idWZmZXJTaXplOworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fc2FtcGxlUmF0ZTsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBtX2J1ZmZlclNpemU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQppbmRleCBmNDEw
NjZmZGE0OTk3OTYzNGE3NjI1YTg3MjdmYmZkMWI3Y2UyMTU1Li5lNWVlZTk4NTRmMWU0NTEwYmY4
NmJjZWNlNWEyODUzMTE4YWE3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGlj
IEF1ZGlvRGV2aWNlSUQgZGVmYXVsdERldmljZSgpCiB9CiAKICNpZiBFTkFCTEUoUk9VVElOR19B
UkJJVFJBVElPTikKLXN0YXRpYyBPcHRpb25hbDxib29sPiBpc1BsYXlpbmdUb0JsdWV0b290aE92
ZXJyaWRlOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5nVG9CbHVldG9vdGhP
dmVycmlkZTsKIAogc3RhdGljIGZsb2F0IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290
aCgpCiB7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25NYWM6OmF1ZGlvT3V0
cHV0RGV2aWNlQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNl
dElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCit2b2lk
IEF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShzdGQ6Om9w
dGlvbmFsPGJvb2w+IHZhbHVlKQogewogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQog
ICAgIGlzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJh
dG9yLmgKaW5kZXggM2EyNTU1NWM0NTA0ODBkMjliMTQyOTRmYWZhYTk4MjU2N2FhNDg4MC4uYTQ4
YzI0MmNiMzRlNzliNzAxMGU0MTcwMzk0YzEwZGY0NmU1YWZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL1NoYXJlZFJvdXRpbmdBcmJpdHJh
dG9yLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUm91dGluZ0FyYml0
cmF0aW9uRm9yVG9rZW4oY29uc3QgVG9rZW4mKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZT4gbV9jdXJyZW50Q2F0ZWdvcnkgeyBBdWRpb1Nlc3Np
b246OkNhdGVnb3J5VHlwZTo6Tm9uZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGU+IG1fY3VycmVudENhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29y
eVR5cGU6Ok5vbmUgfTsKICAgICBXZWFrSGFzaFNldDxUb2tlbj4gbV90b2tlbnM7CiAgICAgVmVj
dG9yPEFyYml0cmF0aW9uQ2FsbGJhY2s+IG1fZW5xdWV1ZWRDYWxsYmFja3M7CiAgICAgYm9vbCBt
X3NldHVwQXJiaXRyYXRpb25PbmdvaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCmluZGV4IDU4MTY4NTI4
MjI1YTA0NzA3NzFmYjdhNWZiM2YwYTJmZmYwMmRjOTAuLjRlMjVlZDBkN2NiMjNlZWE5MmVkNDYz
MzNhY2MwY2E4MjI3NjMyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZp
Y2U7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CiAK
IHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQppbmRleCBiNTJm
N2I4MWNmZWQyZjNjYzQwNWZmMmRjZDkxZWNiMTZjYjQ4NmM5Li4wOWI2N2FmYmZkN2RlZWQxZWM5
Nzg2YTQ3YjAxNTMwZjQ0OWQxZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTEzMSw3ICsxMzEsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICNlbmRpZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0
YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBP
cHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24p
CiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9y
bURyYWdEYXRhKGRhdGEpCkBAIC0xNDcsNyArMTQ3LDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERy
YWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VO
YW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9y
YWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25TZXQ8RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggODc5MmIxNmJlZDFhMzg2NjViNDBkYzRiNjM2NjA0Mjk5
ZmUyMmU1NC4uNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAt
MjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIH0KICNlbmRpZgogCi12b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PiBpdGVt
SW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRl
ciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKICAgICBpZiAoIWl0ZW1JbmRl
eCkgewogICAgICAgICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29j
b2EubW0KaW5kZXggNjE1Y2JiNGExYjAyYWFiZmI5MWU0OGI1NWRhZTRhMDY3N2U1YjhjNC4uNGFm
YTgzZGUwNTIzNjA2OTBkZWE4YTFlNjg1MmYwZTFhZWE2NDdmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0K
QEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxWZWN0
b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oaW50NjRfdCBjaGFuZ2VDb3VudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGludDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3Rl
Ym9hcmQgY2hhbmdlQ291bnRdKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCAwODliM2Q4MTc5OWNmNWQ0NzRlZDJlYjZh
ZmY0MDMyNGVjMDI0MzQ5Li5lMDU3Zjk3ZDE0NDI5YjcyYjI5NTRhYmUxN2Y4Y2E1ODhkZjFhN2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtNTYxLDggKzU2MSw4IEBA
IHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFT
ZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICBUZXh0VHJhY2smIG9mZkl0ZW0gPSBUZXh0VHJhY2s6
OmNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIFRleHRUcmFjayYgYXV0b21hdGljSXRlbSA9IFRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7CiAKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gc2VsZWN0ZWRJbmRleDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gb2ZmSW5kZXg7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2VsZWN0ZWRJbmRleDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBvZmZJbmRleDsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBtX2xlZ2libGVUcmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewogICAgICAgICBh
dXRvJiB0cmFjayA9IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5oCmluZGV4IDBm
NmNmZjQ3NmYwMzIyYmEzYTAyZmFmZjM3YTcxZjBhYThhN2ExY2MuLmEwOTZlMDZhODE5ZDk3MDFl
NGQ3NjQ2MzJlNDc2MDU2ODNkMjE2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeVBvd2VyU291cmNlQ2hhbmdlZCgpOwogCi0gICAg
T3B0aW9uYWw8aW50PiBtX3Rva2VuSUQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fdG9rZW5J
RDsKICAgICBQb3dlclNvdXJjZU5vdGlmaWVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EubW0KaW5kZXggMDdlMGU5NzA2ZDRmZDZmZTRmY2M5MzkyZDkzMWE2OWI3
MjExNjA5Ni4uMGNhMWVjN2UwYzhjYmJkZjA1NGIyZGMwNGFlZDhmYmUyYmIxMmJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgT3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29t
bWFuZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNUk1lZGlhUmVtb3Rl
Q29tbWFuZD4gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKIHsKICAgICBzdGF0
aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKICAgICAg
ICAgdXNpbmcgQ29tbWFuZFRvQWN0aW9uTWFwID0gSGFzaE1hcDxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZCwgV1RGOjpJ
bnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGU+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1N5c3RlbUJhdHRlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3Rl
bUJhdHRlcnkuaAppbmRleCA5NzM1MjQyNzEzYWYwYzA5ZDdiMzVlYTc2ZmM0ZGMzZDBkMDI0NDFj
Li43MTczMTQxMzEzYmUyOGQzNmM2YTM4ZDRlMzhlYTIxODI2NjAwZmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oCkBAIC0zNiwyMyArMzYsMjMg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCk7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlc2V0U3lzdGVtSGFzQUMoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3lzdGVt
SGFzQUMoYm9vbCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIHN5c3RlbUhhc0FDKCk7Ci1XRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxib29sPiBjYWNoZWRTeXN0ZW1IYXNBQygpOworV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxib29sPiBjYWNoZWRTeXN0ZW1IYXNBQygpOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlcyB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzJiBzaW5nbGV0
b24oKTsKIAotICAgIHZvaWQgc2V0SGFzQUMoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gaGFzQUMoKSB7IHJldHVybiBtX2hhc0FDOyB9CisgICAgdm9pZCBzZXRIYXNBQyhz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQUMoKSB7
IHJldHVybiBtX2hhc0FDOyB9CiAKLSAgICB2b2lkIHNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9v
bD4mJik7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzQmF0dGVyeSgpIHsgcmV0dXJuICBtX2hhc0Jh
dHRlcnk7IH0KKyAgICB2b2lkIHNldEhhc0JhdHRlcnkoc3RkOjpvcHRpb25hbDxib29sPiYmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0JhdHRlcnkoKSB7IHJldHVybiAgbV9oYXNCYXR0
ZXJ5OyB9CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2soc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPGJvb2w+IG1faGFz
QmF0dGVyeTsKLSAgICBPcHRpb25hbDxib29sPiBtX2hhc0FDOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9oYXNCYXR0ZXJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNBQzsKICAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0
dGVyeS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkubW0K
aW5kZXggZDQ1MjlhMjBmNTM5Njc1MjE5OWMwZWNkYWY4Njg1OGRhZDcxNTJiZi4uZGU5YjU5ODFh
M2RlZGI2MWViNmNmZjc1OTdiYWZkMGMzYTAyM2RlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5Lm1tCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGhhc0JhdHRlcnk7Ci1zdGF0
aWMgT3B0aW9uYWw8Ym9vbD4gaGFzQUM7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBoYXNC
YXR0ZXJ5Oworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQUM7CiAKIHZvaWQgc2V0U3lz
dGVtSGFzQmF0dGVyeShib29sIGJhdHRlcnkpCiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBz
eXN0ZW1IYXNBQygpCiAgICAgcmV0dXJuICpoYXNBQzsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gY2Fj
aGVkU3lzdGVtSGFzQUMoKQorc3RkOjpvcHRpb25hbDxib29sPiBjYWNoZWRTeXN0ZW1IYXNBQygp
CiB7CiAgICAgcmV0dXJuIGhhc0FDOwogfQpAQCAtMTI1LDE0ICsxMjUsMTQgQEAgU3lzdGVtQmF0
dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXMmIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3Zl
cnJpZGVzOjpzaW5nbGUKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgU3lzdGVtQmF0
dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXM6OnNldEhhc0JhdHRlcnkoT3B0aW9uYWw8Ym9vbD4m
JiBoYXNCYXR0ZXJ5KQordm9pZCBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6
c2V0SGFzQmF0dGVyeShzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaGFzQmF0dGVyeSkKIHsKICAgICBt
X2hhc0JhdHRlcnkgPSBXVEZNb3ZlKGhhc0JhdHRlcnkpOwogICAgIGlmIChtX2NvbmZpZ3VyYXRp
b25DaGFuZ2VkQ2FsbGJhY2spCiAgICAgICAgIG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFj
aygpOwogfQogCi12b2lkIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzZXRI
YXNBQyhPcHRpb25hbDxib29sPiYmIGhhc0FDKQordm9pZCBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVz
dGluZ092ZXJyaWRlczo6c2V0SGFzQUMoc3RkOjpvcHRpb25hbDxib29sPiYmIGhhc0FDKQogewog
ICAgIG1faGFzQUMgPSBXVEZNb3ZlKGhhc0FDKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uQ2hh
bmdlZENhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA2MzVkYmJmMGE4N2MxNzRj
OTQ3ZDhhNTk4YmZiZjk0MGIwOWJkZjdiLi4xODU3YWI2MTU3NTYyZGQwZDFlZDI3ZDhkYzUxNjVi
ZTY0MWYxYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtODMsNyArODMsNyBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQ6OktleVN0YXR1c1ZlY3RvcjsKICAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47Ci0gICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNo
YW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpPjsKKyAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlT
dGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5n
ZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCk+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lv
bkxvYWRGYWlsdXJlIDogdWludDhfdCB7CkBAIC05NCwxMyArOTQsMTMgQEAgcHVibGljOgogICAg
ICAgICBPdGhlciwKICAgICB9OwogCi0gICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25h
bDxkb3VibGU+JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vzc2lvbkxv
YWRGYWlsdXJlKT47CisgICAgdXNpbmcgTG9hZFNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiYmLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYsIFN1Y2Nlc3NWYWx1ZSwgU2Vz
c2lvbkxvYWRGYWlsdXJlKT47CiAgICAgdmlydHVhbCB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsK
IAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwg
U3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVj
b3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJk
MDhiZjZiZWRmYWUuLmEzMDI2MTBkYWRlYWZjN2UwOGFiNzhkNDJlMmQ4OGExYzA5MDFlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTYyLDM5ICs2MiwzOSBAQCBz
dHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAo
IWxhYmVsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBpbml0
RGF0YVR5cGVzOwogICAgICAgICBpZiAoIWluaXREYXRhVHlwZXMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFi
aWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIg
Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxpdGllczsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAg
ICAgICAgIGRlY29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGlmICghdmlkZW9D
YXBhYmlsaXRpZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAg
ICAgICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghZGlz
dGluY3RpdmVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCi0gICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IHBlcnNpc3RlbnRTdGF0ZTsK
ICAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGU7CiAgICAgICAgIGlmICghcGVyc2lz
dGVudFN0YXRlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxWZWN0b3I8Q0RNU2Vzc2lvblR5cGU+PiBzZXNzaW9uVHlwZXM7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPENETVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOwogICAgICAg
ICBkZWNvZGVyID4+IHNlc3Npb25UeXBlczsKICAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAppbmRl
eCBjYjUwMDRmM2NkNzhjNjUxYWJiYTEzNDFkZWY2ZjJlY2I3NzJjMjFiLi5jMjU2MTM5Y2ZjOWFm
ZjQ5YTVjMTQzOTExZmM3OTc5YmI2M2FiZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmls
aXR5IHsKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgU3RyaW5nIHJvYnVzdG5lc3M7Ci0g
ICAgT3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4gZW5jcnlwdGlvblNjaGVtZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENETUVuY3J5cHRpb25TY2hlbWU+IGVuY3J5cHRpb25TY2hlbWU7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CkBAIC00OSwxOSArNDksMTkgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eSB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlv
bmFsPENETU1lZGlhQ2FwYWJpbGl0eT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q0RNTWVkaWFDYXBhYmlsaXR5PiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICAgICAgZGVjb2RlciA+
PiBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFjb250ZW50VHlwZSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByb2J1c3RuZXNz
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKICAgICAgICAgZGVj
b2RlciA+PiByb2J1c3RuZXNzOwogICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPENETUVu
Y3J5cHRpb25TY2hlbWU+PiBlbmNyeXB0aW9uU2NoZW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRpb25TY2hlbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKICAgICAgICAgaWYgKCFlbmNyeXB0
aW9uU2NoZW1lKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKaW5k
ZXggNzQxNTQ0MTM3ZjA0OTM4ZjVkYjAzZjU0NTYyNTIzYjMxYjRjNzhlMC4uMTM5MjE0NjJjMTRi
NjIwYTllNzI3NjU1ZWQwZDI0YzA4NWU0ZTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKQEAgLTEzMSw3ICsxMzEs
NyBAQCBib29sIENETVByaXZhdGU6OmlzUGVyc2lzdGVudFR5cGUoQ0RNU2Vzc2lvblR5cGUgc2Vz
c2lvblR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25hbDxDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJl
c3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzKQorc3Rk
OjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBw
b3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNhbmRp
ZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zLCBMb2NhbFN0
b3JhZ2VBY2Nlc3MgYWNjZXNzKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvI2dldC1zdXBwb3J0ZWQtY29uZmlndXJhdGlvbi1hbmQtY29uc2VudAogICAg
IC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC0zNTksNyArMzU5LDcg
QEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgIC8vIE5PVEU6IENvbnRpbnVlZCBpbiBnZXRD
b25zZW50U3RhdHVzKCkuCiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+
PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShD
RE1Qcml2YXRlOjpBdWRpb1ZpZGVvVHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVkaWFDYXBh
YmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlv
bnMpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1ZpZGVvVHlwZShDRE1Qcml2YXRlOjpB
dWRpb1ZpZGVvVHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVx
dWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0
aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCiB7CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZ2V0LXN1cHBvcnRlZC1j
YXBhYmlsaXRpZXMtZm9yLWF1ZGlvLXZpZGVvLXR5cGUKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJh
ZnQgMDkgTm92ZW1iZXIgMjAxNgpAQCAtMzg3LDcgKzM4Nyw3IEBAIE9wdGlvbmFsPFZlY3RvcjxD
RE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNG
b3JBdWRpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDMu
NC4gSWYgY29udGVudCB0eXBlIGlzIGFuIGludmFsaWQgb3IgdW5yZWNvZ25pemVkIE1JTUUgdHlw
ZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICBPcHRpb25hbDxQYXJz
ZWRDb250ZW50VHlwZT4gY29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKHJl
cXVlc3RlZENhcGFiaWxpdHkuY29udGVudFR5cGUsIE1vZGU6OlJmYzIwNDUpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBjb250ZW50VHlwZSA9IFBhcnNlZENvbnRl
bnRUeXBlOjpjcmVhdGUocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZSwgTW9kZTo6UmZj
MjA0NSk7CiAgICAgICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oCmluZGV4IDNiOTZlYjc0ODRkY2ExNzk3NjNiNWM2ZjMyYzU4MTU2NGMxNThkZDYuLjRk
NWU3ZjczMTQ5MDNmOGYwYWJhOWNlNmJkZGEwZmUyZGUzNDEzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgICAgICBBbGxvd2VkLAogICAgIH07CiAKLSAgICB1c2luZyBT
dXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9u
YWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uPik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBj
YW5kaWRhdGVDb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZp
Z3VyYXRpb25DYWxsYmFjayYmKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1
cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCA9IDA7CkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0OwogICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBDRE1Qcml2YXRlKCk7CkBAIC0x
MDAsOCArMTAwLDggQEAgcHJvdGVjdGVkOgogICAgIH07CiAKICAgICB2b2lkIGRvU3VwcG9ydGVk
Q29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNv
bmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBv
cnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKLSAgICBPcHRpb25hbDxDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYs
IExvY2FsU3RvcmFnZUFjY2Vzcyk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJp
bGl0eT4+IGdldFN1cHBvcnRlZENhcGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlk
ZW9UeXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJp
bGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJh
dGlvbiwgQ0RNUmVzdHJpY3Rpb25zJik7CisgICAgc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYs
IExvY2FsU3RvcmFnZUFjY2Vzcyk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFD
YXBhYmlsaXR5Pj4gZ2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaW9WaWRlb1R5cGUoQXVk
aW9WaWRlb1R5cGUsIGNvbnN0IFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+JiByZXF1ZXN0ZWRD
YXBhYmlsaXRpZXMsIGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIHBhcnRpYWxDb25m
aWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmKTsKIAogICAgIHVzaW5nIENvbnNlbnRTdGF0dXND
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDb25zZW50U3RhdHVzLCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiYsIENETVJlc3RyaWN0aW9ucyYmKT47CiAgICAgdm9pZCBnZXRDb25zZW50
U3RhdHVzKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRp
b24sIENETVJlc3RyaWN0aW9ucyYmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIENvbnNlbnRTdGF0dXND
YWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByb3h5LmNwcAppbmRleCA1NTE1ZWU3MDUyNjFhMDgwZWM4Yzk4Njg2ZDgzZDVhMDNh
ZWYzYTdlLi5lN2Q2N2JmNDNlMDgxODI5N2U2MzQ2Nzg2OGI2NjBhYTg4YTgyMWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3Bw
CkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBDRE1Qcm94eTo6YWJvcnRXYWl0aW5nRm9yS2V5KCkg
Y29uc3QKICAgICBtX2tleXNDb25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKLU9wdGlvbmFsPFJl
ZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6dHJ5V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5
cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6dHJ5V2FpdEZvcktl
eUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlv
bkNsaWVudD4mJiBjbGllbnQpIGNvbnN0CiB7CiAgICAgc3RhcnRlZFdhaXRpbmdGb3JLZXkoKTsK
ICAgICAvLyBVbmNvbmRpdGlvbmFsbHkgc2F5aW5nIHdlIGhhdmUgc3RvcHBlZCB3YWl0aW5nIGZv
ciBhIGtleSBtZWFucyB0aGF0IGRlY3J5cHRvcnMgb25seSBnZXQKQEAgLTMyNyw3ICszMjcsNyBA
QCBib29sIENETVByb3h5OjprZXlBdmFpbGFibGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29u
c3QKICAgICByZXR1cm4ga2V5QXZhaWxhYmxlVW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25h
bDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBL
ZXlJRFR5cGUmIGtleUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGll
bnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6Z2V0T3JX
YWl0Rm9yS2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYga2V5SUQsIFdlYWtQdHI8Q0RNUHJveHlE
ZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVudCkgY29uc3QKIHsKICAgICBpZiAoIWtleUF2YWlsYWJs
ZShrZXlJRCkpIHsKICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IGtleSBjYWNoZSBk
b2VzIG5vdCBjb250YWluIGtleSBJRCAlcyIsIHZlY3RvclRvSGV4U3RyaW5nKGtleUlEKS5hc2Np
aSgpLmRhdGEoKSk7CkBAIC0zMzgsNyArMzM4LDcgQEAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+
IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwK
ICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpKTsK
IH0KIAotT3B0aW9uYWw8S2V5SGFuZGxlVmFsdWVWYXJpYW50PiBDRE1Qcm94eTo6Z2V0T3JXYWl0
Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5
cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAorc3RkOjpvcHRpb25hbDxLZXlIYW5kbGVWYWx1
ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlWYWx1ZShjb25zdCBLZXlJRFR5cGUm
IGtleUlELCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4mJiBjbGllbnQpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8ga2V5SGFuZGxlID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlE
LCBXVEZNb3ZlKGNsaWVudCkpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKCgq
a2V5SGFuZGxlKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCA0Njk3YjI1MTdhYTU4ZWY0MzJkZmFlZDQ2MDU5
MjBkOTI2NTBjN2I4Li5lNjAzYjI1MjZjNTRjMjI2ODRhNDhmZjMyMTg4ZmQ0MDdjZmI4YTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmgKQEAgLTE2Myw5ICsxNjMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4g
a2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxl
KGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQo
Y29uc3QgS2V5SURUeXBlJikgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlzTG9jayk7Ci0g
ICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5
SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAg
IE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBnZXRPcldhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5
SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0OwotICAg
IE9wdGlvbmFsPEtleUhhbmRsZVZhbHVlVmFyaWFudD4gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29u
c3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUo
Y29uc3QgS2V5SURUeXBlJiwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IGdldE9yV2FpdEZvcktleUhh
bmRsZShjb25zdCBLZXlJRFR5cGUmLCBXZWFrUHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudD4m
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9y
V2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0
aW9uQ2xpZW50PiYmKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29u
c3Q7CiAgICAgdm9pZCBzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0IENE
TUluc3RhbmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IDgw
N2M4ZTU2M2I1ZTg3YjQ4MjRkMDNhYjZkZjYyMjE0NWI2NzE3ZTEuLjY2YTAxMWVkNGE4YWY4ZDE4
OGI2NzhlMjgxOTlkM2VkMTdkNmJjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC00NiwxOSArNDYs
MTkgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPENETVJlc3RyaWN0aW9ucz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q0RNUmVzdHJpY3Rp
b25zPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGJv
b2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZGlz
dGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOwogICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRp
ZmllckRlbmllZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudFN0YXRlRGVuaWVkOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsKICAgICAgICAgZGVjb2RlciA+PiBwZXJz
aXN0ZW50U3RhdGVEZW5pZWQ7CiAgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVuaWVkKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxIYXNo
U2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0
cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhh
c2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25U
eXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNz
aW9uVHlwZXM7CiAgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBi
NmMyYWU5ZjI4YjE4YjlmYTViNGJiZjMzMzk0NTM2OGVjNjk5NjZlLi4xNWU2MGYyMDVjZWQyYTU2
NDg5YTQ3NGYwMTE0NzJiNzk4YTZjMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxlPj4+IHBhcnNlTGljZW5zZUZvcm1hdChjb25zdCBK
U09OOjpPYmplY3QmIHJvb3QpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEtl
eUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQog
ewogICAgIC8vIElmIHRoZSAna2V5cycga2V5IGlzIHByZXNlbnQgaW4gdGhlIHJvb3Qgb2JqZWN0
LCBwYXJzZSB0aGUgSlNPTiBmdXJ0aGVyCiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZp
ZWQgJ2xpY2Vuc2UnIGZvcm1hdC4KQEAgLTQxNCw3ICs0MTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZQogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CiAKLU9wdGlvbmFsPFN0cmlu
Zz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSBjb25zdAogewogICAg
IC8vIFZhbGlkYXRlIHRoZSBzZXNzaW9uIElEIHN0cmluZyBhcyBhbiAzMi1iaXQgaW50ZWdlci4K
ICAgICBpZiAoIXBhcnNlSW50ZWdlcjx1aW50MzJfdD4oc2Vzc2lvbklkKSkKQEAgLTQ4Myw3ICs0
ODMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVAogICAgIFVOVVNFRF9QQVJBTShzZXNzaW9u
SWQpOwogI2VuZGlmCiAgICAgYXV0byBkaXNwYXRjaENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCAmY2FsbGJhY2tdKGJvb2wgc2Vzc2lvbldhc0Nsb3Nl
ZCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSB7CisgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgJmNh
bGxiYWNrXShib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmIGNoYW5nZWRLZXlzLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25XYXND
bG9zZWQsIGNoYW5nZWRLZXlzID0gV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN1Y2NlZWRlZF0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01MDcsNyAr
NTA3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVQKIAogICAgICAgICBMT0coRU1FLCAiRU1F
IC0gQ2xlYXJLZXkgLSBzZXNzaW9uICVzIGhhcyAldSBrZXlzIGFmdGVyIHVwZGF0ZSgpIiwgc2Vz
c2lvbklkLnV0ZjgoKS5kYXRhKCksIG1fa2V5U3RvcmUubnVtS2V5cygpKTsKIAotICAgICAgICBP
cHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXM7CiAgICAgICAgIGlmIChrZXlzQ2hhbmdl
ZCkgewogICAgICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIENsZWFyS2V5IC0gc2Vzc2lvbiAlcyBo
YXMgY2hhbmdlZCBrZXlzIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAg
cGFyZW50SW5zdGFuY2UoKS5tZXJnZUtleXNGcm9tKG1fa2V5U3RvcmUpOwpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBt
X3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYg
a2V5U3RhdHVzVmVjdG9yLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBT
dWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNj
ZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2Fn
ZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCAxMDc5
MDg2MDgwZjkxMmM3ODk3NDUwY2U2MzU1NmI3YTAzZjI1NDRjLi45YzA3NDdkYzFiZDhlNjdmM2Jh
ODY0ZDliODExMzM3NjI1YzhhNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg4
LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKIH07CiAKIGNsYXNzIENETUluc3RhbmNlQ2xlYXJLZXkgZmluYWwg
OiBwdWJsaWMgQ0RNSW5zdGFuY2VQcm94eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCA2YWViYjA1OTAz
ZjYzMzQ5ZmY5MzZhNDYyYzdiN2Y3MjU1ZmIyZTJkLi44OGVmMGZiNDkxZTc2Njg0Nzk1NGEzZWE0
ZmQxZmZkN2QyNjNlNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE5vZGU+PiBtX21hcDsKIH07
CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHJlYWRTdHJpbmcoV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVhZFN0cmlu
ZyhXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHNp
emVfdD4gc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZTsKICAgICBkZWNvZGVy
ID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5ZWREZWNvZGVyR2VuZQogICAgIGF1dG8ga2V5ID0g
cmVhZFN0cmluZyhkZWNvZGVyKTsKICAgICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7CiAg
ICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05NSw3ICs5NSw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2Rlckdl
bmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAKICAgICBib29sIG9rID0g
dHJ1ZTsKICAgICB3aGlsZSAob2spIHsKLSAgICAgICAgT3B0aW9uYWw8S2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6VHlwZT4gdHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXllZEVuY29kZXJHZW5l
cmljOjpUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlmICgh
dHlwZSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgIGlmICghb2sp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHNp
emU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZTsKICAgICAgICAgICAg
IGRlY29kZXIgPj4gc2l6ZTsKICAgICAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAg
ICBvayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAKaW5kZXggNjZjZDY1NzRlZGUzNzVjNThiMDRkMDgx
ODM0YmQ5MDg2ZjAwOTE5MC4uYzM0MTY1OTYzNjkzOGI3ODY4MzZiNzkxYzJhYTRlMzlhYzk5ZTIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9u
RnJhbWVSYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Bbmlt
YXRpb25GcmFtZVJhdGUuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFt
ZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVz
UGVyCiAgICAgcmV0dXJuIGZ1bGxTcGVlZFJhdGlvIC0gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRp
bykgPD0gMC41ID8gZmxvb3JTcGVlZCA6IGNlaWxTcGVlZDsKIH0KIAotT3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdS
ZWFzb24+IHJlYXNvbnMsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1Bl
clNlY29uZCwgYm9vbCBwcmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTKQorc3RkOjpvcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0
bGluZ1JlYXNvbj4gcmVhc29ucywgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUykKIHsKICAg
ICBpZiAocmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhy
b3R0bGluZ1JlYXNvbj4gcgogICAgIHJldHVybiBmcmFtZXNQZXJTZWNvbmQ7CiB9CiAKLVNlY29u
ZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVh
c29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBi
b29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCitTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IHJlYXNvbnMsIHN0ZDo6b3B0aW9uYWw8
RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1l
UmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAgaWYgKHJlYXNvbnMuY29udGFpbnMoVGhyb3R0bGluZ1Jl
YXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKICAgICAgICAgcmV0dXJuIEFnZ3Jlc3NpdmVUaHJvdHRs
aW5nQW5pbWF0aW9uSW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCmluZGV4IGIyM2E5Mzg4NjBlNWEyZTIxYzRi
NjZjOWFlMjAxMWM3ZmFjOGMzOGQuLmVhMTg4ZjI2ODEwMDY1MTM4YTVjY2RhMTlhY2ZkNGMxYzZk
YzFjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1h
dGlvbkZyYW1lUmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Fu
aW1hdGlvbkZyYW1lUmF0ZS5oCkBAIC01Nyw5ICs1Nyw5IEBAIGNvbnN0ZXhwciBjb25zdCBGcmFt
ZXNQZXJTZWNvbmQgSGFsZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1BlclNlY29uZCA9IDMwOwogV0VC
Q09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3Bl
ZWQoRnJhbWVzUGVyU2Vjb25kKTsKIAogLy8gVGhpcyB3aWxsIHJldHVybiBzdGQ6Om51bGxvcHQg
aWYgdGhyb3R0bGluZyByZXN1bHRzIGluIGEgZnJlcXVlbmN5IDwgMWZwcy4KLVdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKE9w
dGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21p
bmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpOworV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8RnJh
bWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0
ZXNOZWFyNjBGUFMpOwogCi1XRUJDT1JFX0VYUE9SVCBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNv
bmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQ
Uyk7CitXRUJDT1JFX0VYUE9SVCBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoT3B0aW9u
U2V0PFRocm90dGxpbmdSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9t
aW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTKTsKIAog
V0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZEZy
b21JbnRlcnZhbChTZWNvbmRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDc2NDRiNDc1MDBhY2MzMWI5OGM0YTEwOGViZDJi
NWNkNzBjZjQ0NjQuLjQwY2ZkZTUzYmY2OGM4ODVlZGMwYmMyZjJjZTU4M2E4NjIwY2EzMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
QEAgLTQ5NSw3ICs0OTUsNyBAQCBCaXRtYXBJbWFnZTo6U3RhcnRBbmltYXRpb25TdGF0dXMgQml0
bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmltYXRpb24oKQogICAgIC8vIHRocm91Z2ggdGhlIGNh
bGxiYWNrIG5ld0ZyYW1lTmF0aXZlSW1hZ2VBdmFpbGFibGVBdEluZGV4KCkuIE90aGVyd2lzZSwg
YWR2YW5jZUFuaW1hdGlvbigpIHdpbGwgYmUgY2FsbGVkCiAgICAgLy8gd2hlbiB0aGUgdGltZXIg
ZmlyZXMgYW5kIG1fY3VycmVudEZyYW1lIHdpbGwgYmUgYWR2YW5jZWQgdG8gbmV4dEZyYW1lIHNp
bmNlIGl0IGlzIG5vdCBiZWluZyBkZWNvZGVkLgogICAgIGlmIChzaG91bGRVc2VBc3luY0RlY29k
aW5nRm9yQW5pbWF0ZWRJbWFnZXMoKSkgewotICAgICAgICBpZiAoZnJhbWVIYXNEZWNvZGVkTmF0
aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKE9wdGlvbmFsPEludFNpemU+KCkpKSkK
KyAgICAgICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChuZXh0RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5n
T3B0aW9ucyhzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpKSkKICAgICAgICAgICAgIExPRyhJbWFn
ZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW2NhY2hlZEZyYW1lQ291bnQgPSAl
bGQgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgKyttX2NhY2hlZEZyYW1lQ291bnQsIG5leHRGcmFtZSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVj
b2RpbmdBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCk7CkBAIC01
ODYsMjUgKzU4NiwyNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgYW5pbWF0ZWQg
aW1hZ2UgaGFzIG5vdCBiZWVuIGRpc3BsYXllZC4gSW4gdGhpcyBjYXNlLCBlaXRoZXIgdGhlIGZp
cnN0IGZyYW1lIGhhcyBub3QgYmVlbiBkZWNvZGVkIHlldCBvciB0aGUgYW5pbWF0aW9uIGhhcyBu
b3Qgc3RhcnRlZCB5ZXQuCi0gICAgICAgIGJvb2wgZnJhbWVJc0NvbXBhdGlibGUgPSBmcmFtZUhh
c0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50
RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIE9wdGlvbmFsPEludFNpemU+KCkpOwot
ICAgICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5k
SXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBPcHRpb25hbDxJ
bnRTaXplPigpKTsKKyAgICAgICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFzRGVj
b2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKTsK
KyAgICAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVjb2RlZEFu
ZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3RkOjpvcHRp
b25hbDxJbnRTaXplPigpKTsKIAogICAgICAgICBpZiAoZnJhbWVJc0NvbXBhdGlibGUpCiAgICAg
ICAgICAgICBpbnRlcm5hbFN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgICAgIGVsc2UgaWYgKCFmcmFt
ZUlzQmVpbmdEZWNvZGVkKSB7Ci0gICAgICAgICAgICBtX3NvdXJjZS0+cmVxdWVzdEZyYW1lQXN5
bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2
ZWwsIE9wdGlvbmFsPEludFNpemU+KCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RG
cmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsLCBzdGQ6Om9wdGlvbmFsPEludFNpemU+KCkpOwogICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpEZWNvZGluZzsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJs
ZSA9IGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50
U2l6ZT4oKSk7Ci0gICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkID0gZnJhbWVJc0JlaW5nRGVj
b2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgT3B0
aW9uYWw8SW50U2l6ZT4oKSk7CisgICAgYm9vbCBmcmFtZUlzQ29tcGF0aWJsZSA9IGZyYW1lSGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigp
KTsKKyAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWQgPSBmcmFtZUlzQmVpbmdEZWNvZGVkQW5k
SXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdGQ6Om9wdGlv
bmFsPEludFNpemU+KCkpOwogICAgIAogICAgIGlmIChmcmFtZUlzQ29tcGF0aWJsZSkKICAgICAg
ICAgY2FsbERlY29kaW5nQ2FsbGJhY2tzKCk7CiAgICAgZWxzZSBpZiAoIWZyYW1lSXNCZWluZ0Rl
Y29kZWQpIHsKLSAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBPcHRpb25hbDxJ
bnRTaXplPigpKTsKKyAgICAgICAgbV9zb3VyY2UtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBzdGQ6Om9w
dGlvbmFsPEludFNpemU+KCkpOwogICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOwogICAgIH0KIH0KQEAgLTY1MCw3ICs2NTAsNyBA
QCB2b2lkIEJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5k
ZXgpCiAgICAgICAgICsrbV9kZWNvZGVDb3VudEZvclRlc3Rpbmc7CiAKICAgICAvLyBDYWxsIG1f
ZGVjb2RpbmdDYWxsYmFja3Mgb25seSBpZiB0aGUgaW1hZ2UgZnJhbWUgd2FzIGRlY29kZWQgd2l0
aCB0aGUgbmF0aXZlIHNpemUuCi0gICAgaWYgKGZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29t
cGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCwgT3B0aW9uYWw8SW50U2l6ZT4oKSkpCisgICAgaWYgKGZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc3RkOjpvcHRpb25hbDxJbnRTaXplPigpKSkKICAg
ICAgICAgY2FsbERlY29kaW5nQ2FsbGJhY2tzKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggYWM5Nzg0Y2UwYjE3Njc1MDRiMzcxMWY3Njg0ZTAxMDNkOGFlZDVkNy4uMmVlODdkNDE0ZDIx
NWMxYTM1ZWM4NTYzN2Q3ZWUwZTBmNjMzNTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgdXRpKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPnV0aSgpOyB9
CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9zb3VyY2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPmFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpOyB9Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NvdXJjZS0+aG90U3BvdCgpOyB9CisgICAgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291
cmNlLT5ob3RTcG90KCk7IH0KIAogICAgIC8vIEZsb2F0U2l6ZSBkdWUgdG8gb3ZlcnJpZGUuCiAg
ICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UtPnNp
emUob3JpZW50YXRpb24pOyB9CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsgfQogCiAgICAgYm9vbCBmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsKSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUlt
YWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7IH0KLSAgICBib29sIGZyYW1lSGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsLCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zKTsgfQorICAgIGJvb2wgZnJh
bWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIHsgcmV0dXJu
IG1fc291cmNlLT5mcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucyk7IH0KIAog
ICAgIFN1YnNhbXBsaW5nTGV2ZWwgZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZVN1YnNhbXBsaW5nTGV2ZWxBdElu
ZGV4KGluZGV4KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApp
bmRleCBkYWFiMGEzNTU4ZWRkNWYzZDVlY2E3MGJkNjk4ZjQ3MTI3Y2ZmYzBmLi4yMjRjMDdkMWFh
YzVjZmQ1NjBjODdhMTE4MjdhOTMwZDMxYTQ1NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmgKQEAgLTc0LDEzICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgQ29sb3Io
KSA9IGRlZmF1bHQ7CiAKICAgICBDb2xvcihTUkdCQTx1aW50OF90PiwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7Ci0gICAgQ29sb3IoT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+LCBPcHRpb25TZXQ8
RmxhZ3M+ID0geyB9KTsKKyAgICBDb2xvcihzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+Piwg
T3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVu
dFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+KiA9IG51bGxwdHI+CiAgICAgQ29sb3IoY29uc3QgQ29s
b3JUeXBlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0
aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+KiA9IG51bGxwdHI+Ci0gICAgQ29sb3Io
Y29uc3QgT3B0aW9uYWw8Q29sb3JUeXBlPiYsIE9wdGlvblNldDxGbGFncz4gPSB7IH0pOworICAg
IENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29sb3JUeXBlPiYsIE9wdGlvblNldDxGbGFncz4g
PSB7IH0pOwogCiAgICAgZXhwbGljaXQgQ29sb3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlw
ZSk7CiAgICAgZXhwbGljaXQgQ29sb3IoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsK
QEAgLTEyOSwxMyArMTI5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBs
aWdodGVuZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkYXJrZW5lZCgpIGNv
bnN0OwogCi0gICAgQ29sb3IgaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShPcHRpb25hbDxmbG9hdD4g
YWxwaGEpIGNvbnN0OworICAgIENvbG9yIGludmVydGVkQ29sb3JXaXRoQWxwaGEoc3RkOjpvcHRp
b25hbDxmbG9hdD4gYWxwaGEpIGNvbnN0OwogICAgIENvbG9yIGludmVydGVkQ29sb3JXaXRoQWxw
aGEoZmxvYXQgYWxwaGEpIGNvbnN0OwogCi0gICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBs
aWVkQnkoT3B0aW9uYWw8ZmxvYXQ+KSBjb25zdDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYU11
bHRpcGxpZWRCeShzdGQ6Om9wdGlvbmFsPGZsb2F0PikgY29uc3Q7CiAgICAgQ29sb3IgY29sb3JX
aXRoQWxwaGFNdWx0aXBsaWVkQnkoZmxvYXQpIGNvbnN0OwogCi0gICAgQ29sb3IgY29sb3JXaXRo
QWxwaGEoT3B0aW9uYWw8ZmxvYXQ+KSBjb25zdDsKKyAgICBDb2xvciBjb2xvcldpdGhBbHBoYShz
dGQ6Om9wdGlvbmFsPGZsb2F0PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29s
b3JXaXRoQWxwaGEoZmxvYXQpIGNvbnN0OwogCiAgICAgQ29sb3Igb3BhcXVlQ29sb3IoKSBjb25z
dCB7IHJldHVybiBjb2xvcldpdGhBbHBoYSgxLjBmKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1
YmxpYzoKICAgICBDb2xvciBzZW1hbnRpY0NvbG9yKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSB1bmRlcmx5aW5nIGNvbG9yIGlmIGl0cyB0eXBlIGlzIFNSR0JBPHVpbnQ4X3Q+LgotICAg
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiB0cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiB0cnlHZXRBc1NSR0JBQnl0ZXMoKSBjb25z
dDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBDb2xvcihjb25zdCBHZGtSR0JBJik7CkBAIC0x
ODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBib29sIG91dE9mTGluZUNvbXBvbmVu
dHNzRXF1YWxJZ25vcmluZ1NlbWFudGljQ29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYp
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxDb2xvcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBPdXRPZkxpbmVDb21wb25lbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE91dE9m
TGluZUNvbXBvbmVudHM+IHsKQEAgLTMyMSw3ICszMjEsNyBAQCBpbmxpbmUgQ29sb3I6OkNvbG9y
KFNSR0JBPHVpbnQ4X3Q+IGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogICAgIHNldENv
bG9yKGNvbG9yLCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOwogfQogCi1pbmxpbmUg
Q29sb3I6OkNvbG9yKE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBjb2xvciwgT3B0aW9uU2V0PEZs
YWdzPiBmbGFncykKK2lubGluZSBDb2xvcjo6Q29sb3Ioc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiAgICAgaWYgKGNvbG9yKQog
ICAgICAgICBzZXRDb2xvcigqY29sb3IsIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7
CkBAIC0zMzQsNyArMzM0LDcgQEAgaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5cGUm
IGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9u
ZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qPgotaW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBP
cHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2lubGlu
ZSBDb2xvcjo6Q29sb3IoY29uc3Qgc3RkOjpvcHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwgT3B0
aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAgICBpZiAoY29sb3IpCiAgICAgICAgIHNldE91dE9m
TGluZUNvbXBvbmVudHMoT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25l
bnRzKCpjb2xvcikpLCBDb2xvclNwYWNlRm9yPENvbG9yVHlwZT4sIHRvRmxhZ3NJbmNsdWRpbmdQ
cml2YXRlKGZsYWdzKSk7CkBAIC00MDcsNyArNDA3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvclR5cGUgQ29sb3I6OnRvQ29sb3JUeXBlTG9zc3koKSBjb25zdAogICAgIH0p
OwogfQogCi1pbmxpbmUgQ29sb3IgQ29sb3I6OmludmVydGVkQ29sb3JXaXRoQWxwaGEoT3B0aW9u
YWw8ZmxvYXQ+IGFscGhhKSBjb25zdAoraW5saW5lIENvbG9yIENvbG9yOjppbnZlcnRlZENvbG9y
V2l0aEFscGhhKHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAogewogICAgIHJldHVy
biBhbHBoYSA/IGludmVydGVkQ29sb3JXaXRoQWxwaGEoYWxwaGEudmFsdWUoKSkgOiAqdGhpczsK
IH0KQEAgLTQxNywxMiArNDE3LDEyIEBAIGlubGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxw
aGFNdWx0aXBsaWVkQnkoZmxvYXQgYW1vdW50KSBjb25zdAogICAgIHJldHVybiBjb2xvcldpdGhB
bHBoYShhbW91bnQgKiBhbHBoYUFzRmxvYXQoKSk7CiB9CiAKLWlubGluZSBDb2xvciBDb2xvcjo6
Y29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKSBjb25zdAor
aW5saW5lIENvbG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBhbHBoYSkgY29uc3QKIHsKICAgICByZXR1cm4gYWxwaGEgPyBjb2xvcldpdGhB
bHBoYU11bHRpcGxpZWRCeShhbHBoYS52YWx1ZSgpKSA6ICp0aGlzOwogfQogCi1pbmxpbmUgQ29s
b3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhKE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkgY29uc3QKK2lu
bGluZSBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxw
aGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFscGhhID8gY29sb3JXaXRoQWxwaGEoYWxwaGEudmFs
dWUoKSkgOiAqdGhpczsKIH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBpbmxpbmUgUGFja2VkQ29sb3I6
OlJHQkEgQ29sb3I6OmFzUGFja2VkSW5saW5lKCkgY29uc3QKICAgICByZXR1cm4gZGVjb2RlZFBh
Y2tlZElubGluZUNvbG9yKG1fY29sb3JBbmRGbGFncyk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CitpbmxpbmUg
c3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygp
IGNvbnN0CiB7CiAgICAgaWYgKGlzSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgp
OwpAQCAtNTczLDcgKzU3Myw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQ29sb3I6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXNQYWNrZWRJ
bmxpbmUoKS52YWx1ZTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8Q29s
b3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBib29sIGlzVmFsaWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGVlNDMzM2M2NGQ1MzcyMmUzMjRhNTgxNGE2NzE3ZjRi
MzdkNzM3MGEuLmY3NWExMzkzNGI1MDkxN2ZmNzE3YmRkN2I2ODQ2Y2Q5NDk0ZTQxM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyBib29sIGFkdmFuY2VC
eUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNvbnN0
IFVDCiB9CiAKIC8vIEZJWE1FOiBDYXBpdGFsaXphdGlvbiBpcyBsYW5ndWFnZS1kZXBlbmRlbnQg
YW5kIGNvbnRleHQtZGVwZW5kZW50IGFuZCBzaG91bGQgb3BlcmF0ZSBvbiBncmFwaGVtZSBjbHVz
dGVycyBpbnN0ZWFkIG9mIGNvZGVwb2ludHMuCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFy
MzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKK3N0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIpCiB7
CiAgICAgaWYgKFVfR0VUX0dDX01BU0soYmFzZUNoYXJhY3RlcikgJiBVX0dDX01fTUFTSykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRTeW50aGVz
aXplKGJvb2wgZG9udFN5bnRoZXNpemVTbWFsbENhcHMsIGNvbnN0IEZvbnQqIG5leHRGb250LCBV
Q2hhcjMyIGJhc2VDaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwg
Rm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQ
cm9jZXNzaW5nKQorc3RhdGljIGJvb2wgc2hvdWxkU3ludGhlc2l6ZShib29sIGRvbnRTeW50aGVz
aXplU21hbGxDYXBzLCBjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVy
LCBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBz
IGZvbnRWYXJpYW50Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQogewog
ICAgIGlmIChkb250U3ludGhlc2l6ZVNtYWxsQ2FwcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IGVjMmRhMDIzOTJmMGFjOWNiODQ0ZGQ0NGMyZmJiYWRiNzVhNjg1OTUu
LmViMmQxNjIzYTNhMWRlMjAzMzZmZjI2ZDI4ZDc5NWQ2MjNkNjJkYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
QEAgLTIwNCw3ICsyMDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBT
dHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3Zl
cnJpZGUKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNy
ZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0KCk7CkBAIC0yMTMsNyArMjEzLDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAg
ICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgp
OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNy
ZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCmluZGV4IDg0OTNkM2E1
NDY2ZjgxN2E2NDMwYjc3NWY3NDFjYTU1NWY5ZmU4MWMuLjRkMzNkNjE5NDg4ZTQ3OTViZjJkZDVj
YmNhNWM0NjAzYWMyNzA5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgRGVjb2RpbmdPcHRpb25zKGNvbnN0IE9wdGlvbmFsPEludFNpemU+JiBz
aXplRm9yRHJhd2luZykKKyAgICBEZWNvZGluZ09wdGlvbnMoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
bnRTaXplPiYgc2l6ZUZvckRyYXdpbmcpCiAgICAgICAgIDogbV9kZWNvZGluZ01vZGVPclNpemUo
c2l6ZUZvckRyYXdpbmcpCiAgICAgewogICAgIH0KQEAgLTEwOCwxMCArMTA4LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGhhc1NpemUoKSAmJiBzaXplRm9yRHJhd2luZygpOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPEludFNpemU+IHNpemVGb3JEcmF3aW5nKCkgY29uc3QKKyAgICBzdGQ6
Om9wdGlvbmFsPEludFNpemU+IHNpemVGb3JEcmF3aW5nKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChoYXNTaXplKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8T3B0aW9uYWw8SW50
U2l6ZT4+KG1fZGVjb2RpbmdNb2RlT3JTaXplKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PHN0
ZDo6b3B0aW9uYWw8SW50U2l6ZT4+KG1fZGVjb2RpbmdNb2RlT3JTaXplKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgaW50IG1heERpbWVuc2lvbihjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTMzLDE1
ICsxMzMsMTUgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzU2l6ZSgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gaGFzPE9wdGlvbmFsPEludFNpemU+PigpOworICAgICAgICByZXR1cm4g
aGFzPHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+KCk7CiAgICAgfQogCiAgICAgLy8gRm91ciBzdGF0
ZXMgb2YgdGhlIGRlY29kaW5nOgogICAgIC8vIC0gU3luY2hyb25vdXM6IERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMKICAgICAvLyAtIEFzeW5jaHJvbm91cyArIGFueVNpemU6IERlY29kaW5nTW9k
ZTo6QXN5bmNocm9ub3VzCi0gICAgLy8gLSBBc3luY2hyb25vdXMgKyBpbnRyaW5zaWNTaXplOiBh
biBlbXB0eSBPcHRpb25hbDxJbnRTaXplPj4KLSAgICAvLyAtIEFzeW5jaHJvbm91cyArIHNpemVG
b3JEcmF3aW5nOiBhIG5vbmUgZW1wdHkgT3B0aW9uYWw8SW50U2l6ZT4+Ci0gICAgdXNpbmcgRGVj
b2RpbmdNb2RlT3JTaXplID0gVmFyaWFudDxEZWNvZGluZ01vZGUsIE9wdGlvbmFsPEludFNpemU+
PjsKKyAgICAvLyAtIEFzeW5jaHJvbm91cyArIGludHJpbnNpY1NpemU6IGFuIGVtcHR5IHN0ZDo6
b3B0aW9uYWw8SW50U2l6ZT4+CisgICAgLy8gLSBBc3luY2hyb25vdXMgKyBzaXplRm9yRHJhd2lu
ZzogYSBub25lIGVtcHR5IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4+CisgICAgdXNpbmcgRGVjb2Rp
bmdNb2RlT3JTaXplID0gVmFyaWFudDxEZWNvZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4+OwogICAgIERlY29kaW5nTW9kZU9yU2l6ZSBtX2RlY29kaW5nTW9kZU9yU2l6ZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRp
b25Db2xvclNwYWNlLmgKaW5kZXggN2RhMjNmZDgyN2RhYmQ1MTI2YTc3MTgwMWQzZTljZDEyMTdi
MmM3Ny4uNzZhMTc4NTk2MTBiNGY2YTlhMjU4M2MzNTlmYjIzNjE0OWZmMDM0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29sb3JTcGFj
ZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db2xv
clNwYWNlLmdldCgpOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1Db2xvclNw
YWNlIG1fcGxhdGZvcm1Db2xvclNwYWNlOwpAQCAtNjEsOSArNjEsOSBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9ybUNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+
PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CiAgICAgaWYgKCFwbGF0Zm9ybUNvbG9yU3BhY2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCBjNjc2OTAw
MmEyNTFmYTE1Y2JlOTViMzBhMTk2ODgyNGIyOTFjMGExLi5jNGNjM2MzNDlkMWYyMTAwNmZjZGU0
NzIyZjI1NmFjYTgxMmRjMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKQEAgLTExMSw5ICsxMTEs
OSBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50KERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQogICAgIHJldHVybiByZW1vdmVkOwogfQogCi1PcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6bWF4aW11bUNsaWVu
dFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZyYW1lc1Bl
clNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjptYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKCkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1h
eEZyYW1lc1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4
RnJhbWVzUGVyU2Vjb25kOwogICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQogICAg
ICAgICBtYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heDxGcmFtZXNQZXJTZWNvbmQ+KG1heEZy
YW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgY2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggYTIyYjYzMDU2NjY5NmQyZWY3ZjExNjRmZGVi
NTBlNzY1N2MxZDJkNS4uN2EzMWU3ZWNmNDc3MjFiOTk3YjIyZjQ2NWM4ZmUzYzg3YTAwMTBkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmgKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVt
b3ZlQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwogCiAgICAgdm9pZCBjbGll
bnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudCYpOwotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xp
ZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQ
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVz
UGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRp
c3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAK
ICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bs
YXlJRDsgfQogCkBAIC05MiwxNCArOTIsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoRnJhbWVzUGVyU2Vjb25kKSB7IH0KIAot
ICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBt
YXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3Q7CiAgICAgdm9pZCBj
b21wdXRlTWF4UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCk7CiAKICAgICBIYXNoU2V0PERpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoU2V0PERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2NsaWVudHNUb0JlTm90aWZpZWQgeyBudWxscHRyIH07
CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRCB7IDAgfTsKLSAgICBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IG1fbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtX21heENsaWVudFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZDsKIAogICAgIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9zY2hlZHVsZWQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAppbmRleCAyZTJhODU0OTBkNDM5
NDI4M2QwNmEwMGQ0MWY1ODRjNTEyMTU3NTk3Li40YjBmNWFmYTJlZGE0MTQ1NTY5YTc1ZWRiMGRm
ZDJlMmZkZjdlODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaApAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChjb25zdCBE
aXNwbGF5VXBkYXRlJik7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+IG1fZGlzcGxheUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1f
ZGlzcGxheUlEOwogICAgIEZyYW1lc1BlclNlY29uZCBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCB7IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKaW5kZXggNjgzNjc3
NmU3NmMwM2NiMjYzOTA3ZGYxZGQ4MmQyYTZkMmI5ZGM0OC4uN2I5YjlkOWI0NDkzYWY4OTZiYmYx
NDY0MzMwNmM4M2IzZDVhOTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Ondp
bmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogICAgICAgICBzY2hl
ZHVsZUFuaW1hdGlvbihjbGllbnQpOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNw
bGF5KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFj
dG9yeSogZmFjdG9yeSkKK3N0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpub21pbmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGZh
Y3RvcnkpCiB7CiAgICAgYXV0byogbW9uaXRvciA9IGVuc3VyZU1vbml0b3JGb3JEaXNwbGF5SUQo
ZGlzcGxheUlELCBmYWN0b3J5KTsKICAgICBpZiAobW9uaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaAppbmRleCBjZmFlZmEyZWU2OWI2MzQzOTY2ZmY0N2I2ZTllYWJjYzE1NGIwMzk1
Li5mNzZlZTMzMWVmNGEyZTdlODdmZDk2M2Y1NmU2NGFhZmRmZDI3ZTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNj
aGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQmKTsKICAgICAKLSAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5Kik7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlELCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7CiAKICAgICB2b2lkIGNsaWVudFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAppbmRl
eCBhYmJlY2Y2NWE0MmMyNjE2MGFlMjAyOTU4YmNlODlhNTBiODNiYTk2Li5mODM0MjRlZjAxMDMx
ZDBiNmIwMmQwNDUyMWU0N2RkMWY2ZTViMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5VXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBE
aXNwbGF5VXBkYXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbGV2YW50Rm9yVXBkYXRl
RnJlcXVlbmN5KEZyYW1lc1BlclNlY29uZCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERpc3BsYXlVcGRhdGU+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlzcGxh
eVVwZGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CkBAIC01OSwxNCArNTksMTQgQEAgdm9pZCBEaXNwbGF5VXBkYXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERp
c3BsYXlVcGRhdGU+IERpc3BsYXlVcGRhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3Rk
OjpvcHRpb25hbDxEaXNwbGF5VXBkYXRlPiBEaXNwbGF5VXBkYXRlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdXBkYXRlSW5kZXg7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdXBkYXRlSW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJ
bmRleDsKICAgICBpZiAoIXVwZGF0ZUluZGV4KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25kOworICAg
IHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25kOwogICAgIGRl
Y29kZXIgPj4gdXBkYXRlc1BlclNlY29uZDsKICAgICBpZiAoIXVwZGF0ZXNQZXJTZWNvbmQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRMaW5lLmNwcAppbmRleCBmMTdhNTg1OWU4Y2U4OTM4YmYxOGMzMDQ4Nzli
NzEyZDU3ZWMyZjU4Li5lZWQyNGFkN2UyMTlhYjU4YTE4ZWNlMWQ3ZDg4NmY0ZjEwYzlhNjMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgY29uc3QgRmxvYXRMaW5lIEZsb2F0TGluZTo6ZXh0ZW5kZWRUb0JvdW5k
cyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kcykgY29uc3QKICAgICByZXR1cm4geyBsZWZ0LCByaWdo
dCB9OwogfQogCi1jb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVyc2Vj
dGlvbldpdGgoY29uc3QgRmxvYXRMaW5lJiBvdGhlckxpbmUpIGNvbnN0Citjb25zdCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UG9pbnQ+IEZsb2F0TGluZTo6aW50ZXJzZWN0aW9uV2l0aChjb25zdCBGbG9h
dExpbmUmIG90aGVyTGluZSkgY29uc3QKIHsKICAgICBmbG9hdCBkZW5vbWluYXRvciA9ICgobV9z
dGFydC54KCkgLSBtX2VuZC54KCkpICogKG90aGVyTGluZS5zdGFydCgpLnkoKSAtIG90aGVyTGlu
ZS5lbmQoKS55KCkpKSAtICgobV9zdGFydC55KCkgLSBtX2VuZC55KCkpICogKG90aGVyTGluZS5z
dGFydCgpLngoKSAtIG90aGVyTGluZS5lbmQoKS54KCkpKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKaW5kZXggMDY4OTUwYzkzMmVjNWExOTcx
NjIyYjVmZWY2NmM3ODA5ZTZkZGNmMS4uNWUxMzcwM2QxNGIyYjQ1MzcyNTJkYjg4YmZiNGZhMmE1
ZDk1NzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5l
LmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
RmxvYXRQb2ludCBwb2ludEF0QWJzb2x1dGVEaXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAgY29u
c3QgRmxvYXRQb2ludCBwb2ludEF0UmVsYXRpdmVEaXN0YW5jZShmbG9hdCkgY29uc3Q7CiAgICAg
Y29uc3QgRmxvYXRMaW5lIGV4dGVuZGVkVG9Cb3VuZHMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7
Ci0gICAgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4gaW50ZXJzZWN0aW9uV2l0aChjb25zdCBG
bG9hdExpbmUmKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGlu
dGVyc2VjdGlvbldpdGgoY29uc3QgRmxvYXRMaW5lJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZsb2F0TGluZT4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9h
dExpbmU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgCiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQg
bV9zdGFydCB7IDAsIDAgfTsKQEAgLTcwLDE0ICs3MCwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIEZsb2F0TGluZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBtX2VuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
RmxvYXRMaW5lPiBGbG9hdExpbmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxGbG9hdExpbmU+IEZsb2F0TGluZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc3RhcnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzdGFydDsKICAgICBkZWNvZGVyID4+IHN0YXJ0
OwogICAgIGlmICghc3RhcnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBl
bmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7CiAgICAgaWYgKCFlbmQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVh
ZC5oCmluZGV4IGY1ZGNiNDY2NjAyZDNhMTgzNTFiYjBlNjI5MDk1ZmNjNDE2MDJkNzkuLjBmNjMw
M2QyZDFlNDMwN2E1MzNkOTI0MDc5OWVkOTlhZTdiOWQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb3VudGVyY2xvY2t3aXNlKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZsb2F0UXVhZD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9h
dFF1YWQ+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3Ax
OwpAQCAtMTY4LDI0ICsxNjgsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBGbG9h
dFF1YWQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9w
NDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRRdWFkPiBGbG9h
dFF1YWQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IEZsb2F0UXVhZDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcDE7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFBvaW50PiBwMTsKICAgICBkZWNvZGVyID4+IHAxOwogICAgIGlmICghcDEpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwMjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAyOwogICAgIGRlY29kZXIgPj4gcDI7CiAgICAg
aWYgKCFwMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IHAzOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcDM7CiAgICAgZGVj
b2RlciA+PiBwMzsKICAgICBpZiAoIXAzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcDQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBwNDsKICAgICBkZWNvZGVyID4+IHA0OwogICAgIGlmICghcDQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IGU1OTEyYTk5ZDBlNmRkMjBmMWVkYjMwMGI2Mzk2ZjkxMTkxMzhjYzUuLjE3YTM3YWY4
YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNjNDdmNzkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgY29uc3QgZmxvYXQgZW1w
aGFzaXNNYXJrRm9udFNpemVNdWx0aXBsaWVyID0gMC41ZjsKIAogREVGSU5FX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihGb250KTsKIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3Rp
dGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxs
YmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGlkZW50aWZpZXIpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVy
c3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBpZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1E
YXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFj
aywgaWRlbnRpZmllciwgbnVsbHB0cikpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENh
Y2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWws
IFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZh
bGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEs
IEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50
YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHks
IG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0
YSkpOwogfQpAQCAtNzcsNyArNzcsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAgIHJl
dHVybiBGb250OjpjcmVhdGUoQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
KmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRh
bGljLCB7IH0sIHsgfSksIG9yaWdpbiwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKTsKIH0KIAot
Rm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBv
cmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwg
T3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgRm9udENh
Y2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitGb250OjpGb250KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVy
c3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhKQogICAgIDogbV9wbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKQogICAgICwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgICwgbV9vcmlnaW4ob3JpZ2luKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGZp
bGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9GaWxsLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBidWZmZXJMCiAgICAgcmV0dXJuIGhhc0dseXBoczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHNp
emVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIgY29kZVBvaW50KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb2RlUG9pbnRTdXBwb3J0SW5kZXgoVUNoYXIzMiBjb2RlUG9p
bnQpCiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIHJlb3JkZXJpbmcgdGhlc2Ugc28gdGhlIG1v
c3QgY29tbW9uIG9uZXMgYXJlIGF0IHRoZSBmcm9udC4KICAgICAvLyBEb2luZyB0aGlzIGNvdWxk
IGNhdXNlIHRoZSBCaXRWZWN0b3IgdG8gZml0IGluc2lkZSBpbmxpbmUgc3RvcmFnZSBhbmQgdGhl
cmVmb3JlCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBv
aW50U3VwcG9ydEluZGV4KFVDaGFyMzIgY29kZVBvaW50KQogICAgICAgICByZXR1cm4gY29kZVBv
aW50OwogICAgIGlmIChjb2RlUG9pbnQgPj0gMHg3RiAmJiBjb2RlUG9pbnQgPCAweEEwKQogICAg
ICAgICByZXR1cm4gY29kZVBvaW50IC0gMHg3RiArIDB4MjA7Ci0gICAgT3B0aW9uYWw8c2l6ZV90
PiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlc3VsdDsKICAgICBzd2l0Y2gg
KGNvZGVQb2ludCkgewogICAgIGNhc2Ugc29mdEh5cGhlbjoKICAgICAgICAgcmVzdWx0ID0gMHg0
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCBlNWZhN2FlNDYx
Nzc0ZWZhZmJjNjNlMGI5MmE0ODRjZTU4OTQ4ODBjLi43NzhlZjBmMmEyNzMwMmNlODY0MTIwMWQz
ZjgyMzI5ZmZjMmI3NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CkBAIC05NCw5ICs5NCw5IEBAIHB1YmxpYzoKICAgICAgICAgTm8KICAgICB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
LCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5v
LAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25G
YWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9IFZp
c2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxi
YWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3Rk
OjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50
ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2li
aWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNr
OjpObywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlv
bkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5Gb250KCk7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIEdseXBoRGF0
YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAgR2x5cGggZ2x5cGhG
b3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChV
Q2hhcjMyKSBjb25zdDsKLSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIz
MiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgc3RkOjpvcHRpb25hbDxV
Q2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgUmVmUHRyPEZv
bnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJikgY29uc3Q7CiAKQEAgLTIy
MSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybXMoR2x5cGhCdWZm
ZXImLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaEluZGV4LCB1bnNpZ25lZCBiZWdpbm5pbmdTdHJp
bmdJbmRleCwgYm9vbCBlbmFibGVLZXJuaW5nLCBib29sIHJlcXVpcmVzU2hhcGluZywgY29uc3Qg
QXRvbVN0cmluZyYgbG9jYWxlLCBTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24pIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJucyBudWxsb3B0IGlmIG5vbmUgb2YgdGhlIGdseXBocyBhcmUgT1Qt
U1ZHIGdseXBocy4KLSAgICBPcHRpb25hbDxCaXRWZWN0b3I+IGZpbmRPVFNWR0dseXBocyhjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgdW5zaWduZWQgY291bnQpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8Qml0VmVjdG9yPiBmaW5kT1RTVkdHbHlwaHMoY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IHVuc2lnbmVkIGNvdW50KSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55Q29tcGxleENvbG9yRm9y
bWF0R2x5cGhzKGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7
CiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBX
RUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVy
c3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgRm9udENhY2hlKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2li
aWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiwgRm9udENhY2hlKik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwog
ICAgIHZvaWQgcGxhdGZvcm1HbHlwaEluaXQoKTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPEdseXBoUGFnZT4+IG1fZ2x5
cGhQYWdlczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NNYXA8Rmxv
YXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAgIG11dGFibGUgR2x5cGhNZXRyaWNzTWFw
PGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsKLSAgICBtdXRhYmxlIEdseXBoTWV0cmljc01hcDxP
cHRpb25hbDxQYXRoPj4gbV9nbHlwaFBhdGhNYXA7CisgICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NN
YXA8c3RkOjpvcHRpb25hbDxQYXRoPj4gbV9nbHlwaFBhdGhNYXA7CiAgICAgbXV0YWJsZSBCaXRW
ZWN0b3IgbV9jb2RlUG9pbnRTdXBwb3J0OwogCiAgICAgbXV0YWJsZSBSZWZQdHI8T3BlblR5cGVN
YXRoRGF0YT4gbV9tYXRoRGF0YTsKQEAgLTMwOSw3ICszMDksNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAjZW5kaWYKIAotICAg
IG11dGFibGUgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIAogICAg
IHN0cnVjdCBEZXJpdmVkRm9udHMgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CkBAIC0zMjcsMTIgKzMyNywxMiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPERlcml2ZWRGb250cz4gbV9kZXJpdmVkRm9udERhdGE7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0
ZWRCeVNtYWxsQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNT
dXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4g
bV9nbHlwaHNTdXBwb3J0ZWRCeVBldGl0ZUNhcHM7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxCaXRW
ZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOwotICAgIG11dGFibGUgT3B0
aW9uYWw8UEFMOjpPVFNWR1RhYmxlPiBtX290U1ZHVGFibGU7Ci0gICAgbXV0YWJsZSBPcHRpb25h
bDxDb21wbGV4Q29sb3JGb3JtYXRHbHlwaHM+IG1fZ2x5cGhzV2l0aENvbXBsZXhDb2xvckZvcm1h
dDsgLy8gU1ZHIGFuZCBzYml4CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4g
bV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5QWxsU21hbGxDYXBzOworICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlQZXRpdGVDYXBzOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlB
bGxQZXRpdGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxQQUw6Ok9UU1ZHVGFibGU+
IG1fb3RTVkdUYWJsZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q29tcGxleENvbG9yRm9y
bWF0R2x5cGhzPiBtX2dseXBoc1dpdGhDb21wbGV4Q29sb3JGb3JtYXQ7IC8vIFNWRyBhbmQgc2Jp
eAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBiNTAyZDlmZWQyYWY0ZTc5ZTI5NmRmZmUy
ZTg2NTdlNDYwNWQ3ODU2Li42ZGNkNTU2N2EzMmU2OWFlNjAyNmY1OWI0YzU2YTQyY2ZlYWYyOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
QEAgLTE2Niw3ICsxNjYsNyBAQCBGb250Q2FjaGU6OkZvbnRDYWNoZSgpCiAKIEZvbnRDYWNoZTo6
fkZvbnRDYWNoZSgpID0gZGVmYXVsdDsKIAotT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2Fj
aGU6OmFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQorc3RkOjpv
cHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25z
dCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgaWYgKGF1dG8gcGxhdGZvcm1TcGVjaWZpY0Fs
dGVybmF0ZSA9IHBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIHBsYXRmb3JtU3BlY2lmaWNBbHRlcm5hdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDdkYjBiMjk3NjJmYmZkMzlhNTA1ZDdj
YmJiZjI4ZWE3MzI2YjUxMGIuLjgxMzcyYmE5YWQ4NTZkNGE4NTE0NWMwOTViMmZhMjIxOWQ2ZGI1
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC0yODgsNyArMjg4LDcgQEAgcHVibGljOgogICAgICAgICBQcmV3YXJtSW5mb3JtYXRpb24gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UHJld2FybUluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcmV3
YXJtSW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKICAgICBQcmV3YXJtSW5m
b3JtYXRpb24gY29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJl
d2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKQEAgLTMwNyw4ICszMDcsOCBAQCBwcml2
YXRlOgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0
Zm9ybSAodW5jbGVhciB3aGljaCBmdW5jdGlvbnMgdGhpcyBjb21tZW50IGFwcGxpZXMgdG8pLgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJp
bmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyosIEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXMpOwogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxBU0NJSUxpdGVy
YWw+IGFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPEFTQ0lJTGl0ZXJhbD4gcGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFTQ0lJTGl0ZXJhbD4gYWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBU0NJSUxp
dGVyYWw+IHBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IFRpbWVyIG1fcHVyZ2VUaW1lcjsKICAgICAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIEZvbnRD
YWNoZTo6UHJld2FybUluZm9ybWF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEZvbnRDYWNoZTo6UHJld2Fy
bUluZm9ybWF0aW9uPiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9u
PiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgUHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbjsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHByZXdhcm1JbmZvcm1hdGlvbi5zZWVuRmFtaWxpZXMpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGQx
ZWZjODVlMjBmMDZjODhhN2QxNWQyYzgwMjVlZWU2ZmI4OTRkNDMuLjAzMGM1NzUwMTUxNTZlMjY2
OWQxMDU3NmFiZjgwYWM4NjU5MmFiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBHbHlwaEJ1ZmZl
ciBGb250Q2FzY2FkZTo6bGF5b3V0VGV4dChDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGxheW91dENvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8s
IGZvclRleHRFbXBoYXNpcyk7CiB9CiAKLUZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitGbG9h
dFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24g
PSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlv
dXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uKTsK
QEAgLTE5NSw3ICsxOTUsNyBAQCBGbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjbwogICAgIHJldHVybiBz
dGFydFBvaW50IC0gcG9pbnQ7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhh
c2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBm
cm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAgICBpZiAoaXNMb2Fk
aW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5
cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9pbnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGlzcGxh
eUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRl
eHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
IGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5
TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4
dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFj
dGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSk7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52
YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgRm9udENhc2Nh
ZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQmIHdpZHRoKSBjb25zdAog
ICAgIHJldHVybiBzdWNjZXNzOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rp
b25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJl
Y3QsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9u
dENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlmIChjb2RlUGF0aChydW4sIGZyb20sIHRvKSAhPSBD
b2RlUGF0aDo6Q29tcGxleCkKQEAgLTUwMCw3ICs1MDAsNyBAQCBGb250Q2FzY2FkZTo6Q29kZVBh
dGggRm9udENhc2NhZGU6OmNvZGVQYXRoKCkKICAgICByZXR1cm4gc19jb2RlUGF0aDsKIH0KIAot
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVu
JiBydW4sIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNv
bnN0CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRl
eHRSdW4mIHJ1biwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgaWYgKHNfY29kZVBhdGggIT0gQ29kZVBhdGg6OkF1
dG8pCiAgICAgICAgIHJldHVybiBzX2NvZGVQYXRoOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3Rh
dGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVu
JiB0ZXh0UnVuLCBjb25zdCBHbHkKIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbWF5IG5vdCB3
b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJrIHVzZXMgYSBjb21wbGV4IHNjcmlwdCwgYnV0IG5vbmUg
b2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBoYXNpcyBtYXJrcyBkbyBzby4KLU9wdGlvbmFsPEdseXBo
RGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBtYXJrKSBjb25zdAorc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpn
ZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsK
ICAgICBpZiAobWFyay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xMjEyLDEzICsxMjEyLDEzIEBAIE9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6Omdl
dEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3RyaW5nJiBtYXJrCiAgICAgfSBlbHNl
CiAgICAgICAgIGNoYXJhY3RlciA9IG1hcmtbMF07CiAKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+
IGdseXBoRGF0YShnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBmYWxzZSwgRW1waGFz
aXNNYXJrVmFyaWFudCkpOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEo
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1Zhcmlh
bnQpKTsKICAgICByZXR1cm4gZ2x5cGhEYXRhLnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRh
IDogc3RkOjpudWxsb3B0OwogfQogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2Vu
dChjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBjb25zdAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0
YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0ds
eXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybiAw
OwogCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Fz
Y2VudChjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBjb25zdAogCiBpbnQgRm9udENhc2NhZGU6OmVt
cGhhc2lzTWFya0Rlc2NlbnQoY29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBP
cHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERh
dGEobWFyayk7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBn
ZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQog
ICAgICAgICByZXR1cm4gMDsKIApAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgaW50IEZvbnRDYXNjYWRl
OjplbXBoYXNpc01hcmtEZXNjZW50KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiAKIGlu
dCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KGNvbnN0IEF0b21TdHJpbmcmIG1hcmsp
IGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1w
aGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBt
YXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICgh
bWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBA
IGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGdseXBoQnVmZmVyLmlzRmxhdHRlbmVkKCkpOwotICAgIE9wdGlv
bmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YSht
YXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTU1Niw3ICsxNTU2LDcgQEAgc3RydWN0IEdseXBoSXRlcmF0aW9u
U3RhdGUgewogICAgIGZsb2F0IG1heFg7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZp
bmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBvaW50IHAy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9h
dCB5LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBvaW50IHAyKQogewogICAgIGlmICgocDEueSgpIDwg
eSAmJiBwMi55KCkgPiB5KSB8fCAocDEueSgpID4geSAmJiBwMi55KCkgPCB5KSkKICAgICAgICAg
cmV0dXJuIHAxLngoKSArICh5IC0gcDEueSgpKSAqIChwMi54KCkgLSBwMS54KCkpIC8gKHAyLnko
KSAtIHAxLnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAppbmRleCA4MDI4YjNhZWE2NjhmZDk3MzAwYWEwZjI0MjU3MzMxMTk3OGFhZmIxLi42
M2U3NmNmODQwYzRjMDJiZTg2NGE4NjRmMTUxOTc5MzYzNDE1ODU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4mJiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVh
ZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0g
MCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9O
b3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3Mo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+
IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJ
bnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0xMzAs
NyArMTMwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBmbG9hdCB3aWR0aChUZXh0TGF5b3V0Jiwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cyA9IDApOwogCiAgICAgaW50IG9mZnNldEZvclBvc2l0aW9uKGNvbnN0IFRleHRSdW4m
LCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7Ci0gICAg
dm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0
byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQg
ZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlw
dGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGw7IH0KIApAQCAtMTUw
LDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNp
Z25lZCBpKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQog
CiAgICAgLy8gQSBzdGQ6Om51bGxvcHQgcmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHls
ZTogbm9ybWFsIi4KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0YWxpYygpOyB9CisgICAgc3RkOjpvcHRp
b25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERl
c2NyaXB0aW9uLml0YWxpYygpOyB9CiAgICAgRm9udFNlbGVjdGlvblZhbHVlIHdlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLndlaWdodCgpOyB9CiAgICAgRm9udFdpZHRo
VmFyaWFudCB3aWR0aFZhcmlhbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi53
aWR0aFZhcmlhbnQoKTsgfQogCkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAogICAgIGVudW0gY2xh
c3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2ltcGxlLCBDb21wbGV4LCBTaW1wbGVXaXRo
R2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRleHRSdW4mLCBP
cHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8dW5zaWduZWQ+
IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBDb2RlUGF0aCBjb2RlUGF0aChjb25zdCBU
ZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHN0YXRp
YyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExDaGFyKiwgdW5zaWduZWQp
IHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7IH0KICAgICBzdGF0aWMgQ29kZVBhdGggY2hhcmFj
dGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbik7CiAKQEAgLTE5OSw3
ICsxOTksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZmxvYXQgc3ludGhldGljT2JsaXF1ZUFu
Z2xlKCkgeyByZXR1cm4gMTQ7IH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+
IHRvID0geyB9LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBDdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb246OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVf
cHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclRleHRS
dW4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20gPSAwLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHsgfSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
ID0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNv
bnN0OwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAgICAgc3RhdGljIHZvaWQgc2V0
Rm9udFNtb290aGluZ0xldmVsKGludCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKICAg
ICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBh
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRv
bVN0cmluZyYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNp
c01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGljIGJv
b2wgY2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uaAppbmRleCBmZmYzZTYwZTQwNzk3YTdkMjU3ZTBiNWE5ZjJhZjI2OTdkMTViZmJiLi5iYjJh
MGY2ZDgyZjMxZDY3MmE1MTY5ZWVlYzg3NTA5OGY0OThkNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBJbml0aWFsIHZh
bHVlcyBmb3IgZm9udCBwcm9wZXJ0aWVzLgotICAgIHN0YXRpYyBPcHRpb25hbDxGb250U2VsZWN0
aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgRm9udFN0eWxlQXhpcyBpbml0aWFs
Rm9udFN0eWxlQXhpcygpIHsgcmV0dXJuIEZvbnRTdHlsZUF4aXM6OnNsbnQ7IH0KICAgICBzdGF0
aWMgRm9udFNlbGVjdGlvblZhbHVlIGluaXRpYWxXZWlnaHQoKSB7IHJldHVybiBub3JtYWxXZWln
aHRWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBpbml0aWFsU3RyZXRj
aCgpIHsgcmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmgKaW5kZXggNmYwN2JjNGNi
NGY0NjYyZTAxMTY3MGQ4ZjE5MTIwNWE2ZjBjOTkxMS4uYjgyODI4ZDJiNmQxNmRiMTgyNWRjZTZl
NjJiMDk0MzI4Y2JjYTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVGb250cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAg
ICAgUGl0Y2ggbV9waXRjaCB7IFVua25vd25QaXRjaCB9OwogICAgIGJvb2wgbV9pc0ZvclBsYXRm
b3JtRm9udCB7IGZhbHNlIH07CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBPcHRpb25hbDxSZWY8
VGhyZWFkPj4gbV90aHJlYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8VGhyZWFkPj4gbV90aHJl
YWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggOTgwNjFlZGIzNGE2NjA4ZDhjNTVmN2Q1NTI2NjFh
ZGQ2YTk5Y2U5MC4uMTkzOWFmZDYzNWNkMDU1MmNhM2UwMDdmNGJjNWVmYjU2ZWU4YzFkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgZmxvYXQgY29tcHV0ZWRTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jb21wdXRlZFNpemU7IH0KICAgICB1bnNpZ25lZCBjb21wdXRlZFBp
eGVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHVuc2lnbmVkKG1fY29tcHV0ZWRTaXplICsgMC41Zik7
IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZv
bnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9u
UmVxdWVzdC5zbG9wZTsgfQogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKCkgY29uc3Qg
eyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aDsgfQogICAgIEZvbnRTZWxlY3Rp
b25WYWx1ZSB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0Lndl
aWdodDsgfQogICAgIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IGZvbnRTZWxlY3Rpb25SZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdDsgfQpAQCAtMTAwLDkgKzEwMCw5
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZzsgfQogCiAg
ICAgdm9pZCBzZXRDb21wdXRlZFNpemUoZmxvYXQgcykgeyBtX2NvbXB1dGVkU2l6ZSA9IGNsYW1w
VG9GbG9hdChzKTsgfQotICAgIHZvaWQgc2V0SXRhbGljKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gaXRhbGljKSB7IG1fZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUgPSBpdGFsaWM7IH0K
KyAgICB2b2lkIHNldEl0YWxpYyhzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRh
bGljKSB7IG1fZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUgPSBpdGFsaWM7IH0KICAgICB2b2lk
IHNldFN0cmV0Y2goRm9udFNlbGVjdGlvblZhbHVlIHN0cmV0Y2gpIHsgbV9mb250U2VsZWN0aW9u
UmVxdWVzdC53aWR0aCA9IHN0cmV0Y2g7IH0KLSAgICB2b2lkIHNldElzSXRhbGljKGJvb2wgaXNJ
dGFsaWMpIHsgc2V0SXRhbGljKGlzSXRhbGljID8gT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiB7IGl0YWxpY1ZhbHVlKCkgfSA6IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4geyB9KTsg
fQorICAgIHZvaWQgc2V0SXNJdGFsaWMoYm9vbCBpc0l0YWxpYykgeyBzZXRJdGFsaWMoaXNJdGFs
aWMgPyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4geyBpdGFsaWNWYWx1ZSgpIH0g
OiBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4geyB9KTsgfQogICAgIHZvaWQgc2V0
V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWlnaHQpIHsgbV9mb250U2VsZWN0aW9uUmVxdWVz
dC53ZWlnaHQgPSB3ZWlnaHQ7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoRm9udFJlbmRl
cmluZ01vZGUgbW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bW9kZSk7IH0KICAgICB2b2lkIHNldFRleHRSZW5kZXJpbmdNb2RlKFRleHRSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZykgeyBtX3RleHRSZW5kZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVu
ZGVyaW5nKTsgfQpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRp
YyBPcHRpb25hbDxGb250RGVzY3JpcHRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Rm9udERlc2NyaXB0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBtb3ZpbmcgdGhlc2UgaW50byB0aGVpciBv
d24gb2JqZWN0IG9uIHRoZSBoZWFwICh0byBzYXZlIG1lbW9yeSkuCkBAIC0yNTAsMTY1ICsyNTAs
MTY1IEBAIHZvaWQgRm9udERlc2NyaXB0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEZvbnREZXNjcmlwdGlv
bj4gRm9udERlc2NyaXB0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8Rm9udERlc2NyaXB0aW9uPiBGb250RGVzY3JpcHRpb246OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgT3B0aW9u
YWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4g
ZmVhdHVyZVNldHRpbmdzOwogICAgIGlmICghZmVhdHVyZVNldHRpbmdzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhdGlvblNldHRpbmdzPiB2
YXJpYXRpb25TZXR0aW5nczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYXRpb25TZXR0aW5n
cz4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAgZGVjb2RlciA+PiB2YXJpYXRpb25TZXR0aW5nczsK
ICAgICBpZiAoIXZhcmlhdGlvblNldHRpbmdzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbG9jYWxlOworICAgIHN0ZDo6b3B0aW9uYWw8
QXRvbVN0cmluZz4gbG9jYWxlOwogICAgIGRlY29kZXIgPj4gbG9jYWxlOwogICAgIGlmICghbG9j
YWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9u
YWw8Rm9udFNlbGVjdGlvblZhbHVlPj4gaXRhbGljOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+PiBpdGFsaWM7CiAgICAgZGVjb2RlciA+PiBpdGFs
aWM7CiAgICAgaWYgKCFpdGFsaWMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IHN0cmV0Y2g7CisgICAgc3RkOjpvcHRpb25h
bDxGb250U2VsZWN0aW9uVmFsdWU+IHN0cmV0Y2g7CiAgICAgZGVjb2RlciA+PiBzdHJldGNoOwog
ICAgIGlmICghc3RyZXRjaCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7CiAgICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYg
KCF3ZWlnaHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxm
bG9hdD4gY29tcHV0ZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNvbXB1dGVkU2l6
ZTsKICAgICBkZWNvZGVyID4+IGNvbXB1dGVkU2l6ZTsKICAgICBpZiAoIWNvbXB1dGVkU2l6ZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRPcmllbnRh
dGlvbj4gb3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGb250T3JpZW50YXRpb24+IG9y
aWVudGF0aW9uOwogICAgIGRlY29kZXIgPj4gb3JpZW50YXRpb247CiAgICAgaWYgKCFvcmllbnRh
dGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE5vbkNK
S0dseXBoT3JpZW50YXRpb24+IG5vbkNKS0dseXBoT3JpZW50YXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxOb25DSktHbHlwaE9yaWVudGF0aW9uPiBub25DSktHbHlwaE9yaWVudGF0aW9uOwogICAg
IGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhPcmllbnRhdGlvbjsKICAgICBpZiAoIW5vbkNKS0dseXBo
T3JpZW50YXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxGb250V2lkdGhWYXJpYW50PiB3aWR0aFZhcmlhbnQ7CisgICAgc3RkOjpvcHRpb25hbDxGb250
V2lkdGhWYXJpYW50PiB3aWR0aFZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7
CiAgICAgaWYgKCF3aWR0aFZhcmlhbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxGb250UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlOwogICAgIGRlY29kZXIg
Pj4gcmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXJlbmRlcmluZ01vZGUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJl
bmRlcmluZ01vZGU7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJl
bmRlcmluZ01vZGU7CiAgICAgZGVjb2RlciA+PiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBpZiAo
IXRleHRSZW5kZXJpbmdNb2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Rm9udFN5bnRoZXNpcz4gZm9udFN5bnRoZXNpczsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZvbnRTeW50aGVzaXM+IGZvbnRTeW50aGVzaXM7CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhl
c2lzOwogICAgIGlmICghZm9udFN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29tbW9uTGln
YXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRD
b21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOwog
ICAgIGlmICghdmFyaWFudENvbW1vbkxpZ2F0dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50RGlzY3Jl
dGlvbmFyeUxpZ2F0dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVz
PiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRE
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghdmFyaWFudERpc2NyZXRpb25hcnlMaWdh
dHVyZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250
VmFyaWFudExpZ2F0dXJlcz4gdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXM7CisgICAgc3RkOjpv
cHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXM7
CiAgICAgZGVjb2RlciA+PiB2YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIXZh
cmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRDb250ZXh0dWFsQWx0
ZXJuYXRlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50
Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVhbEFs
dGVybmF0ZXM7CiAgICAgaWYgKCF2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9u
PiB2YXJpYW50UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9u
PiB2YXJpYW50UG9zaXRpb247CiAgICAgZGVjb2RlciA+PiB2YXJpYW50UG9zaXRpb247CiAgICAg
aWYgKCF2YXJpYW50UG9zaXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxGb250VmFyaWFudENhcHM+IHZhcmlhbnRDYXBzOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnRDYXBzPiB2YXJpYW50Q2FwczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRD
YXBzOwogICAgIGlmICghdmFyaWFudENhcHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+IHZhcmlhbnROdW1lcmlj
RmlndXJlOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRmlndXJlPiB2YXJp
YW50TnVtZXJpY0ZpZ3VyZTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnROdW1lcmljRmlndXJlOwog
ICAgIGlmICghdmFyaWFudE51bWVyaWNGaWd1cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVt
ZXJpY1NwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5n
PiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY1Nw
YWNpbmc7CiAgICAgaWYgKCF2YXJpYW50TnVtZXJpY1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4g
dmFyaWFudE51bWVyaWNGcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY0ZyYWN0aW9uPiB2YXJpYW50TnVtZXJpY0ZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gdmFy
aWFudE51bWVyaWNGcmFjdGlvbjsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljRnJhY3Rpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51
bWVyaWNPcmRpbmFsPiB2YXJpYW50TnVtZXJpY09yZGluYWw7CisgICAgc3RkOjpvcHRpb25hbDxG
b250VmFyaWFudE51bWVyaWNPcmRpbmFsPiB2YXJpYW50TnVtZXJpY09yZGluYWw7CiAgICAgZGVj
b2RlciA+PiB2YXJpYW50TnVtZXJpY09yZGluYWw7CiAgICAgaWYgKCF2YXJpYW50TnVtZXJpY09y
ZGluYWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250
VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybz4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvPiB2YXJpYW50TnVt
ZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
bzsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IHZhcmlh
bnRBbHRlcm5hdGVzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRBbHRlcm5hdGVzPiB2
YXJpYW50QWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRBbHRlcm5hdGVzOwogICAg
IGlmICghdmFyaWFudEFsdGVybmF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ+IHZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
PiB2YXJpYW50RWFzdEFzaWFuVmFyaWFudDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblZhcmlhbnQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldp
ZHRoPiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFu
dEVhc3RBc2lhbldpZHRoPiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7CiAgICAgZGVjb2RlciA+PiB2
YXJpYW50RWFzdEFzaWFuV2lkdGg7CiAgICAgaWYgKCF2YXJpYW50RWFzdEFzaWFuV2lkdGgpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVh
c3RBc2lhblJ1Ynk+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5OworICAgIHN0ZDo6b3B0aW9uYWw8Rm9u
dFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiB2YXJpYW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVy
ID4+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1Ynkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250T3B0aWNh
bFNpemluZz4gb3B0aWNhbFNpemluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRPcHRpY2FsU2l6
aW5nPiBvcHRpY2FsU2l6aW5nOwogICAgIGRlY29kZXIgPj4gb3B0aWNhbFNpemluZzsKICAgICBp
ZiAoIW9wdGljYWxTaXppbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxGb250U3R5bGVBeGlzPiBmb250U3R5bGVBeGlzOworICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxlQXhpczsKICAgICBkZWNvZGVyID4+IGZvbnRTdHlsZUF4
aXM7CiAgICAgaWYgKCFmb250U3R5bGVBeGlzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8QWxsb3dVc2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8QWxsb3dVc2VySW5zdGFsbGVkRm9u
dHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzOwogICAgIGRlY29kZXIgPj4gc2hvdWxk
QWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAgICAgaWYgKCFzaG91bGRBbGxvd1VzZXJJbnN0YWxs
ZWRGb250cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJv
b2w+IHNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gc2hvdWxkRGlzYWJsZUxpZ2F0dXJlc0ZvclNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBz
aG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZzsKICAgICBpZiAoIXNob3VsZERpc2FibGVM
aWdhdHVyZXNGb3JTcGFjaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDc3YWRjMTM3ODc2N2I0Y2Y3YWU1M2Y1OTk5MTdkMDMyNWI4ZDA1ZTYuLjBkMTE3ZDYwNmE1
YzVlMjRjYTQ5ZDA3MTE4YTEwNWZmM2YzMDRkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTIzNiw3ICsyMzYsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgY29uc3QgT3B0aW9uYWw8Q3JlYXRpb25E
YXRhPiYgY3JlYXRpb25EYXRhKCkgY29uc3QKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENyZWF0
aW9uRGF0YT4mIGNyZWF0aW9uRGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9j
cmVhdGlvbkRhdGE7CiAgICAgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9u
dFdpZHRoVmFyaWFudCBtX3dpZHRoVmFyaWFudCB7IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJX
aWR0aCB9OwogICAgIFRleHRSZW5kZXJpbmdNb2RlIG1fdGV4dFJlbmRlcmluZ01vZGUgeyBUZXh0
UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcgfTsKIAotICAgIE9wdGlvbmFsPENyZWF0
aW9uRGF0YT4gbV9jcmVhdGlvbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxDcmVhdGlvbkRhdGE+
IG1fY3JlYXRpb25EYXRhOwogCiAgICAgYm9vbCBtX3N5bnRoZXRpY0JvbGQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zeW50aGV0aWNPYmxpcXVlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5j
cHAKaW5kZXggMzU3YjQwMjNlZTA4ZGEwY2RlODk2ODJkOGRjYzc3OGUxYzhlZmUwMy4uMzNkYzQy
OWNhOTYyNmE2Y2YyMzNhNjI2NmZmYzE2OTNjMzFjYWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Gb250U2VsZWN0
aW9uQWxnb3JpdGhtOjpGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0
IHJlcXVlc3QsIGNvbnN0IFZlY3RvcjxDYXBhYmlsaXRpZXM+JiBjYXBhYmlsaXRpZXMsIE9wdGlv
bmFsPENhcGFiaWxpdGllcz4gYm91bmRzKQorRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6Rm9udFNl
bGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0aW9uUmVxdWVzdCByZXF1ZXN0LCBjb25zdCBWZWN0
b3I8Q2FwYWJpbGl0aWVzPiYgY2FwYWJpbGl0aWVzLCBzdGQ6Om9wdGlvbmFsPENhcGFiaWxpdGll
cz4gYm91bmRzKQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLCBtX2NhcGFiaWxpdGll
cyhjYXBhYmlsaXRpZXMpCiB7CkBAIC0xMzksNyArMTM5LDcgQEAgYXV0byBGb250U2VsZWN0aW9u
QWxnb3JpdGhtOjp3ZWlnaHREaXN0YW5jZShDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBjb25z
dCAtPgogCiBGb250U2VsZWN0aW9uVmFsdWUgRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6YmVzdFZh
bHVlKGNvbnN0IGJvb2wgZWxpbWluYXRlZFtdLCBEaXN0YW5jZUZ1bmN0aW9uIGNvbXB1dGVEaXN0
YW5jZSkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxEaXN0YW5jZVJlc3VsdD4gc21hbGxlc3REaXN0
YW5jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERpc3RhbmNlUmVzdWx0PiBzbWFsbGVzdERpc3RhbmNl
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9jYXBhYmlsaXRpZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChlbGltaW5hdGVkW2ldKQogICAgICAgICAgICAg
Y29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250U2VsZWN0aW9uQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKaW5kZXggYmM4ZDdkOWUzOWVjZTMyMjRlYzg4ZjIz
ODgwOWY5ZmJjNDc1ZTE5OC4uMmJkNzYzNDkzYzgzNGU5OTE2MGU2ZDkwNDUxZGQyMzA5NzczNjNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVj
dGlvbkFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRTZWxlY3Rpb25BbGdvcml0aG0uaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
LSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFJhd1RhZyB7IFJhd1RhZyB9OwpA
QCAtODcsOSArODcsOSBAQCB2b2lkIEZvbnRTZWxlY3Rpb25WYWx1ZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxG
b250U2VsZWN0aW9uVmFsdWU+IEZvbnRTZWxlY3Rpb25WYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gRm9udFNlbGVjdGlvblZh
bHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250U2VsZWN0
aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBiYWNraW5nOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNl
bGVjdGlvblZhbHVlOjpCYWNraW5nVHlwZT4gYmFja2luZzsKICAgICBkZWNvZGVyID4+IGJhY2tp
bmc7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MTk2LDcgKzE5Niw3IEBAIGNvbnN0ZXhwciBGb250U2VsZWN0aW9uVmFsdWUgaXRhbGljVGhyZXNo
b2xkKCkKICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlIHsgMjAgfTsKIH0KIAotY29uc3Rl
eHByIGJvb2wgaXNJdGFsaWMoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0
KQorY29uc3RleHByIGJvb2wgaXNJdGFsaWMoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFs
dWU+IGZvbnRXZWlnaHQpCiB7CiAgICAgcmV0dXJuIGZvbnRXZWlnaHQgJiYgZm9udFdlaWdodC52
YWx1ZSgpID49IGl0YWxpY1RocmVzaG9sZCgpOwogfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHN0cnVj
dCBGb250U2VsZWN0aW9uUmFuZ2UgewogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25SYW5nZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGb250U2VsZWN0aW9uUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBWYWx1ZSBtaW5p
bXVtIHsgMSB9OwogICAgIFZhbHVlIG1heGltdW0geyAwIH07CkBAIC0zNTcsMTQgKzM1NywxNCBA
QCB2b2lkIEZvbnRTZWxlY3Rpb25SYW5nZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uUmFu
Z2U+IEZvbnRTZWxlY3Rpb25SYW5nZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gRm9udFNlbGVjdGlvblJhbmdlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVl
PiBtaW5pbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlOjpWYWx1ZT4g
bWluaW11bTsKICAgICBkZWNvZGVyID4+IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJh
bmdlOjpWYWx1ZT4gbWF4aW11bTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5n
ZTo6VmFsdWU+IG1heGltdW07CiAgICAgZGVjb2RlciA+PiBtYXhpbXVtOwogICAgIGlmICghbWF4
aW11bSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTM4OSw5ICszODksOSBAQCBz
dHJ1Y3QgRm9udFNlbGVjdGlvblJlcXVlc3QgewogICAgIC8vICJmb250U3R5bGVBeGlzIiBvbiB0
aGUgRm9udERlc2NyaXB0aW9uLiBXZSBzaG91bGQgY29tZSB1cCB3aXRoIGEgdHJpLXN0YXRlIG1l
bWJlcgogICAgIC8vIHNvIHRoYXQgaXQncyBhIGxvdCBjbGVhcmVyIHdoZXRoZXIgd2UncmUgZGVh
bGluZyB3aXRoIGEgIm5vcm1hbCIsICJpdGFsaWMiIG9yIGV4cGxpY2l0CiAgICAgLy8gIm9ibGlx
dWUiIGZvbnQgc3R5bGUuIFNlZSB3ZWJraXQub3JnL2IvMTg3Nzc0LgotICAgIE9wdGlvbmFsPFZh
bHVlPiBzbG9wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlPiBzbG9wZTsKIAotICAgIHN0ZDo6
dHVwbGU8VmFsdWUsIFZhbHVlLCBPcHRpb25hbDxWYWx1ZT4+IHRpZWQoKSBjb25zdAorICAgIHN0
ZDo6dHVwbGU8VmFsdWUsIFZhbHVlLCBzdGQ6Om9wdGlvbmFsPFZhbHVlPj4gdGllZCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gV1RGOjp0aWUod2VpZ2h0LCB3aWR0aCwgc2xvcGUpOwog
ICAgIH0KQEAgLTQwMyw3ICs0MDMsNyBAQCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRm9udFNlbGVjdGlvblZhbHVlJiBmb250U2VsZQogICAgIHJl
dHVybiB0czsKIH0KIAotaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4mIG9wdGlvbmFsRm9udFNlbGVj
dGlvblZhbHVlKQoraW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiYgb3B0aW9uYWxGb250U2Vs
ZWN0aW9uVmFsdWUpCiB7CiAgICAgdHMgPDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFs
dWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgcmV0dXJuIHRzOwpAQCAtNDU5LDcgKzQ1
OSw3IEBAIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFNlbGVjdGlvbkNhcGFi
aWxpdGllcyYgYSwgY29uc3QgRm9udFNlbGVjdGlvCiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllcyB7CiAgICAgdXNpbmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllczsKICAgICB1c2luZyBSYW5nZSA9IEZvbnRTZWxlY3Rpb25SYW5nZTsKLSAg
ICB1c2luZyBPcHRpb25hbFJhbmdlID0gT3B0aW9uYWw8UmFuZ2U+OworICAgIHVzaW5nIE9wdGlv
bmFsUmFuZ2UgPSBzdGQ6Om9wdGlvbmFsPFJhbmdlPjsKIAogICAgIGNvbnN0ZXhwciBDYXBhYmls
aXRpZXMgY29tcHV0ZUZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoKSBjb25zdAogICAgIHsKQEAg
LTUwMSw3ICs1MDEsNyBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
cyB7CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxG
b250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCiAg
ICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7CiAgICAgT3B0aW9uYWxSYW5nZSB3aWR0aDsKQEAgLTUx
NywxOSArNTE3LDE5IEBAIHZvaWQgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4gRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8T3B0aW9uYWxSYW5nZT4gd2VpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8T3B0
aW9uYWxSYW5nZT4gd2VpZ2h0OwogICAgIGRlY29kZXIgPj4gd2VpZ2h0OwogICAgIGlmICghd2Vp
Z2h0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9u
YWxSYW5nZT4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxPcHRpb25hbFJhbmdlPiB3aWR0aDsK
ICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiBzbG9wZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPE9wdGlvbmFsUmFuZ2U+IHNsb3BlOwogICAgIGRlY29kZXIgPj4gc2xvcGU7
CiAgICAgaWYgKCFzbG9wZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU1Miw3
ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllczsKIAogICAgIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0oKSA9IGRlbGV0ZTsK
LSAgICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBW
ZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIE9wdGlvbmFsPENhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
Qm91bmRzID0gc3RkOjpudWxsb3B0KTsKKyAgICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRT
ZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIHN0ZDo6b3B0aW9u
YWw8Q2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXNCb3VuZHMgPSBzdGQ6Om51bGxvcHQpOwogCiAg
ICAgc3RydWN0IERpc3RhbmNlUmVzdWx0IHsKICAgICAgICAgRm9udFNlbGVjdGlvblZhbHVlIGRp
c3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFRhZ2dlZFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
VGFnZ2VkU2V0dGluZ3MuaAppbmRleCA1Y2NjZmZiYjg1OGQ5MjIyMmFlMzZiN2E1MWNhNjk0MGIy
MWMwNGZhLi40MWJkNzVhNmUwZjVmMTNmNjNjYjUyYzlkMjk4ZDdkODIwMzViYzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGlu
Z3MuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWUoKTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0
dGluZzxUPj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGb250VGFnIG1fdGFn
OwpAQCAtMTE2LDI5ICsxMTYsMjkgQEAgdm9pZCBGb250VGFnZ2VkU2V0dGluZzxUPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRh
Z2dlZFNldHRpbmc8VD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxG
b250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dlZFNldHRpbmc8VD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIwOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDhfdD4gY2hhcjA7CiAgICAgZGVjb2RlciA+PiBjaGFyMDsKICAgICBpZiAoIWNo
YXIwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dWludDhf
dD4gY2hhcjE7CisgICAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBjaGFyMTsKICAgICBkZWNvZGVy
ID4+IGNoYXIxOwogICAgIGlmICghY2hhcjEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBjaGFyMjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4
X3Q+IGNoYXIyOwogICAgIGRlY29kZXIgPj4gY2hhcjI7CiAgICAgaWYgKCFjaGFyMikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gY2hhcjM7CiAgICAgZGVjb2RlciA+PiBjaGFyMzsK
ICAgICBpZiAoIWNoYXIzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8VD4gdmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDxUPiB2YWx1ZTsKICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9udFRhZ2dl
ZFNldHRpbmdzPFQ+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nczxUPj4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+IG1f
bGlzdDsKQEAgLTIwMyw5ICsyMDMsOSBAQCB2b2lkIEZvbnRUYWdnZWRTZXR0aW5nczxUPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZ3M8VD4+IEZv
bnRUYWdnZWRTZXR0aW5nczxUPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEZvbnRUYWdnZWRTZXR0aW5nczxUPj4gRm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRp
bmc8VD4+PiBsaXN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEZvbnRUYWdnZWRTZXR0aW5n
PFQ+Pj4gbGlzdDsKICAgICBkZWNvZGVyID4+IGxpc3Q7CiAgICAgaWYgKCFsaXN0KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm91ckNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvdXJDQy5jcHAKaW5kZXggY2NkM2U4NTdhNWNhOWNkOGRhMDk2N2MxYWIwOTM0YWZjMzc0YzVl
MC4uZDlhODk2MmIwYmIwZTlhN2I4NmM4NTczMzA4Yjg1ZDk3MmI1ZDFhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3N0ZDo6b3B0aW9uYWw8Rm91ckNDPiBGb3Vy
Q0M6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKIHsKICAgICBhdXRvIGFz
Y2lpVmFsdWUgPSBzdHJpbmdWYWx1ZS5hc2NpaSgpOwogICAgIGlmIChhc2NpaVZhbHVlLmxlbmd0
aCgpICE9IDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3VyQ0MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCmluZGV4
IDFjYTAwNTBmZDYxMDJiOTgyZWNkNjIyMDg3MTkyNjFhMTdhZmQyNDEuLjJhNjRjNGJjMTU0NjNj
ZWMxNGIzYzJmMzlmMjU0ZmRkMDUzYmYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvdXJDQy5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBGb3VyQ0MgewogICAgIH0K
IAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBPcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm91ckNDPiBmcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlID09IG90aGVyLnZhbHVlOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAKaW5kZXggYzFkYjgxMjc3YTk0MDlkMTIxYTU3ZGM4OTUxNjc2YjllM2IxYzg4
NC4uNGE3NWIxMTMxMjM1NDU3NTMwYjYwNzBiZjY5MTI3NGNmYTJjMmUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNw
cApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBmbG9hdCBhbmdsZUJldHdlZW5WZWN0b3JzKGNv
bnN0IEZsb2F0U2l6ZSYgdSwgY29uc3QgRmxvYXRTaXplJiB2KQogICAgIHJldHVybiBtYWduaXR1
ZGVzID8gYWNvcyhjbGFtcFRvPGZsb2F0Pihkb3RQcm9kdWN0KHUsIHYpIC8gbWFnbml0dWRlcywg
LTEsIDEpKSA6IDA7CiB9CiAKLVJvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RXaXRoTWlu
aW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBGbG9hdFF1YWQmIHF1YWQsIE9wdGlvbmFsPGZsb2F0
PiBtaW5Sb3RhdGlvbkluUmFkaWFucykKK1JvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1JlY3RX
aXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBGbG9hdFF1YWQmIHF1YWQsIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zKQogewogICAgIGNvbnN0ZXhwciBhdXRv
IHR3b1BpRmxvYXQgPSAyICogcGlGbG9hdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKaW5kZXggODBkZTEwZWZhZGI5OWM2
OGQzZTA1YmI2MTEyMjk3OTk4NDY1ZmRmYy4uM2I3MDkxYTg1NDQyYTBmZDNhZDJkN2Q4MmIzZmI1
NDJmMGQxZjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VvbWV0cnlVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW9tZXRyeVV0aWxpdGllcy5oCkBAIC02OCw2ICs2OCw2IEBAIHN0cnVjdCBSb3RhdGVkUmVj
dCB7CiAgICAgZmxvYXQgYW5nbGVJblJhZGlhbnM7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBSb3Rh
dGVkUmVjdCByb3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29u
c3QgRmxvYXRRdWFkJiwgT3B0aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3Rk
OjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1Jl
Y3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBGbG9hdFF1YWQmLCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFkaWFucyA9IHN0ZDo6bnVsbG9wdCk7CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCmluZGV4IDk0
OTc1MGRiMGU0MDVlYWFjZjRiNWRkYzdkNzcyMWFjNzFmOGE5ZDIuLmFmZDhiYTI0ZmMxY2RlN2Nk
YTk2YzcyZTVkNmIzOTBhY2JmNTYyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgR2x5
cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9hZHZhbmNlc1tpbmRleF07IH0KICAgICBHbHlwaEJ1ZmZlck9yaWdpbiBvcmlnaW5BdCh1bnNp
Z25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5zW2luZGV4XTsgfQogICAgIEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiBtX29mZnNldHNJblN0cmluZ1tpbmRleF07IH0KLSAgICBPcHRpb25h
bDxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVk
IGluZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxH
bHlwaEJ1ZmZlclN0cmluZ09mZnNldD4gY2hlY2tlZFN0cmluZ09mZnNldEF0KHVuc2lnbmVkIGlu
ZGV4LCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvIHJl
c3VsdCA9IHVuY2hlY2tlZFN0cmluZ09mZnNldEF0KGluZGV4KTsKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PHN0ZDo6bWFrZV91bnNpZ25lZF90PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pj4ocmVz
dWx0KSA+PSBzdHJpbmdMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IGE0NGY2ODRhYzBlMjA3YTFlZTRkOTBmYjU2
ZjIwMjFlMGE3NDUxZTYuLjQ0M2M2M2FiZDE3MGM5MDdhYjczYjg1NjMyM2JmMmY5NDYxNjU3MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmlj
c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmlj
c01hcC5oCkBAIC0xMTUsNyArMTE1LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEds
eXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCiAgICAgcmV0dXJuIEZs
b2F0UmVjdCgwLCAwLCBjR2x5cGhTaXplVW5rbm93biwgY0dseXBoU2l6ZVVua25vd24pOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBPcHRpb25hbDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0aW9u
YWw8UGF0aD4+Ojp1bmtub3duTWV0cmljcygpCit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlv
bmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1l
dHJpY3MoKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBjOGFj
Mzg2YjgxMTk1NmE3NzZmZWRkZmFlZWYyMjgyYzk0YWM4NjJkLi45NGUxYTBmNzliNGZlM2ZhMTUy
MWU5ZWQ1MjI3OWQ0YmUwMDc4MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIC0tbV90cmFuc3Bh
cmVuY3lMYXllckNvdW50OwogfQogCi1GbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4
dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorRmxv
YXRTaXplIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZy
b20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIC8vIERpc3BsYXkgbGlzdCBy
ZWNvcmRpbmcgZm9yIHRleHQgY29udGVudCBpcyBkb25lIGF0IGdseXBocyBsZXZlbC4gU2VlIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocy4KICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhp
cywgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBoCiAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4g
dG8pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHRvKQogewogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3MoKnRoaXMsIHJ1biwgbWFy
aywgcG9pbnQsIGZyb20sIHRvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZmUxNWVhYjA0YjM1ZmVmOGI3NGVlMWY3
M2VlOGY4MTlkOTkwOWI3ZC4uYzA0YjAxZTdlOGZlODg5NjU1MzhmNWJlYzFiMTFlOWU1MWMyMjc3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdHJ1Y3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5
bGUgewogICAgIGJvb2wgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgeyBmYWxzZSB9OwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEb2N1bWVudE1hcmtlckxp
bmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC0xNDgsMTQgKzE0OCwxNCBA
QCB2b2lkIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERvY3VtZW50TWFy
a2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
TW9kZT4gbW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+
PiBtb2RlOwogICAgIGlmICghbW9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZURhcmtBcHBlYXJhbmNlOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiBzaG91
bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDY4LDkgKzQ2OCw5IEBAIHB1YmxpYzoK
IAogICAgIC8vIFRleHQKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRTaXplIGRy
YXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxs
b3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWdu
ZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBz
dGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3Qg
RmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7CkBAIC02OTQsNyArNjk0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShpbnRlcnBvbGF0aW9uUXVhbGl0eVRvVXNlKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBJbnRl
cnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eSkK
KyAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQsIHN0ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+
IGludGVycG9sYXRpb25RdWFsaXR5KQogICAgICAgICA6IEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lcihncmFwaGljc0NvbnRleHQsIGludGVycG9sYXRpb25RdWFsaXR5ID8gaW50ZXJwb2xh
dGlvblF1YWxpdHkudmFsdWUoKSA6IGdyYXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDU0YjRjMDYyMjI3ZTJmNzZhMGE5
ZGNhMjhmNTE2YjJlODA4NDZiMjEuLmZjMzI5Mjk3NjRmODU1MDlkNzEwY2NlZjQyZGI1MWRiNDNl
Y2YwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaApAQCAtMTI5Miw3ICsxMjkyLDcgQEAgcHVibGljOgogICAgIC8vIGRp
c3BsYXkgYnVmZmVyIGFic3RyYWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2Vw
YXJhdGUgdG8KICAgICAvLyB0aGUgY29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpID0g
MDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3Np
dGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKaW5kZXggZjhlMGI4ZTQ0MTg4ODA3OGQwZGUxNzkzNmFlYjk2OTNlYjgyMjFkMy4uN2M3
ZDRmY2M5ZWQyMjMwZDg3MDk1ZTY3NGU1OWMyZDE3NTg1ZDA2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtNjM0LDggKzYzNCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IE9w
dGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1hdGlvbkV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5p
bWF0aW9uRXh0ZW50OyB9Ci0gICAgdm9pZCBzZXRBbmltYXRpb25FeHRlbnQoT3B0aW9uYWw8Rmxv
YXRSZWN0PiBhbmltYXRpb25FeHRlbnQpIHsgbV9hbmltYXRpb25FeHRlbnQgPSBhbmltYXRpb25F
eHRlbnQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGFuaW1hdGlvbkV4
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRXh0ZW50OyB9CisgICAgdm9pZCBzZXRB
bmltYXRpb25FeHRlbnQoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFuaW1hdGlvbkV4dGVudCkg
eyBtX2FuaW1hdGlvbkV4dGVudCA9IGFuaW1hdGlvbkV4dGVudDsgfQogCiAgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3Jh
cGhpY3NMYXllciYpPiYpOwogCkBAIC02OTYsNyArNjk2LDcgQEAgcHJvdGVjdGVkOgogICAgIEZs
b2F0UG9pbnQgbV9wb3NpdGlvbjsKIAogICAgIC8vIElmIHNldCwgb3ZlcnJpZGVzIG1fcG9zaXRp
b24uIE9ubHkgdXNlZCBmb3IgY292ZXJhZ2UgY29tcHV0YXRpb24uCi0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uOwogCiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9y
UG9pbnQgeyAwLjVmLCAwLjVmLCAwIH07CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKQEAgLTc2OSw3
ICs3NjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRmxvYXRTaXplIG1fY29udGVudHNUaWxlUGhhc2U7
CiAgICAgRmxvYXRTaXplIG1fY29udGVudHNUaWxlU2l6ZTsKICAgICBGbG9hdFJvdW5kZWRSZWN0
IG1fYmFja2Ryb3BGaWx0ZXJzUmVjdDsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fYW5pbWF0
aW9uRXh0ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2FuaW1hdGlvbkV4dGVu
dDsKIAogICAgIEV2ZW50UmVnaW9uIG1fZXZlbnRSZWdpb247CiAjaWYgVVNFKENBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRl
eCBlNTgwNTJhM2RjY2VkMDQyNTI3ZmY0ZTcxNTgwN2I1M2NiYzllYjVhLi42M2NjODhjMmU2MjA4
MjcxMGE4MWViNDFjZmJjNWI1NDNiN2FkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkND
b2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKK3N0ZDo6b3B0aW9uYWw8SEVW
Q1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3Ry
aW5nKQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICdoZXZjJyBjb2RlYyBzdHJpbmcgaXMg
c3BlY2lmaWVkIGluIElTTy9JRUMgMTQ0OTYtMTU6MjAxNCwgQW5uZXggRS4zLgogICAgIFN0cmlu
Z1ZpZXcgY29kZWNWaWV3KGNvZGVjU3RyaW5nKTsKQEAgLTEwNiwxNCArMTA2LDE0IEBAIE9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBj
b2RlY1N0cmluZykKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9t
UG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZVR5cGU+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWFrZU9wdGlvbmFsRnJvbVBv
aW50ZXIoY29uc3QgVmFsdWVUeXBlKiBwb2ludGVyKQogewogICAgIGlmICghcG9pbnRlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKnBvaW50ZXI7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxEb1ZpUGFyYW1ldGVyczo6Q29kZWM+IHBhcnNlRG9WaUNvZGVjVHlwZShT
dHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzOjpD
b2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjpwYWlyPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlczx1aW50MzJfdD4sIERv
VmlQYXJhbWV0ZXJzOjpDb2RlYz4gdHlwZXNBcnJheVtdID0gewogICAgICAgICB7ICJkdmExIiwg
RG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpBVkMxIH0sCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogICAgIHJldHVybiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcih0eXBlc01h
cC50cnlHZXQoc3RyaW5nKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gcHJvZmls
ZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9maWxlKFN0cmluZ1ZpZXcgcHJvZmlsZSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwcm9maWxlSURGb3JBbHBoYWJldGljRG9WaVByb2ZpbGUo
U3RyaW5nVmlldyBwcm9maWxlKQogewogICAgIC8vIFNlZSBUYWJsZSA3IG9mICJEb2xieSBWaXNp
b24gUHJvZmlsZXMgYW5kIExldmVscyBWZXJzaW9uIDEuMy4yIgogICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjpwYWlyPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlczx1aW50NjRfdD4sIHVpbnQxNl90PiBw
cm9maWxlc0FycmF5W10gPSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxp
ZERvVmlQcm9maWxlSUQodWludDE2X3QgcHJvZmlsZUlEKQogICAgIH0KIH0KIAotc3RhdGljIE9w
dGlvbmFsPHVpbnQxNl90PiBtYXhpbXVtTGV2ZWxJREZvckRvVmlQcm9maWxlSUQodWludDE2X3Qg
cHJvZmlsZUlEKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG1heGltdW1MZXZlbElE
Rm9yRG9WaVByb2ZpbGVJRCh1aW50MTZfdCBwcm9maWxlSUQpCiB7CiAgICAgLy8gU2VlIFNlY3Rp
b24gNC4xIG9mICJEb2xieSBWaXNpb24gUHJvZmlsZXMgYW5kIExldmVscyBWZXJzaW9uIDEuMy4y
IgogICAgIHN3aXRjaCAocHJvZmlsZUlEKSB7CkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJv
b2wgaXNWYWxpZFByb2ZpbGVJREZvckNvZGVjKHVpbnQxNl90IHByb2ZpbGVJRCwgRG9WaVBhcmFt
ZXRlcnM6OkNvZGVjIGMKICAgICByZXR1cm4gY29kZWMgPT0gRG9WaVBhcmFtZXRlcnM6OkNvZGVj
OjpIVkMxIHx8IGNvZGVjID09IERvVmlQYXJhbWV0ZXJzOjpDb2RlYzo6SEVWMTsKIH0KIAotT3B0
aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3
IGNvZGVjVmlldykKK3N0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9m
IHRoZSBEb1ZpIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gIkRvbGJ5IFZpc2lvbiBQcm9m
aWxlcyBhbmQgTGV2ZWxzIFZlcnNpb24gMS4zLjIiCiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29k
ZWNWaWV3LnNwbGl0KCcuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggYTIwNDU5OGRkMDYzMGM4YzZhNzAzNmQ0YjU4NTMzNGZl
ZGM1YjdmZi4uNDE1ZTM1OGUzYTA4NTAzYTE1YmZlMDRiZDk3MjU2MTRkN2I4NWQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAt
MzYsNyArMzYsNyBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogICAgIHVpbnQxNl90IGdlbmVy
YWxMZXZlbElEQyB7IDAgfTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEhFVkNQYXJh
bWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiAgICAgZW51bSBjbGFz
cyBDb2RlYyB7IEFWQzEsIEFWQzMsIEhFVjEsIEhWQzEgfSBjb2RlYzsKQEAgLTQ0LDYgKzQ0LDYg
QEAgc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKICAgICB1aW50MTZfdCBiaXRzdHJlYW1MZXZlbElE
IHsgMCB9OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdW
aWV3KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXgg
MjQyZmUwNTc4ZmMxNGQyNzA5NjQ2NTM1MDY3MzUyZjBkYWZlNWVjZi4uZWI4NzkwYjRkMGNjNzNh
NDk4MjRlMTNhYmMxMDA5N2EzNTA5OWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBy
ZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQog
ICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBm
bG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdl
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNjRlYTQ4Mzcy
Njk2ZGFlOTA1MGJhMDQxMjVhYzIwZmEwNGUwMGI5Yy4uZjFjN2RiMTNkODU2NTc0YTE0ZDI4OGU3
NTQ5ZDhiMGNiZmFiNWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybVRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24g
PSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8
dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0
aW9uOjpObykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0
ZDo6bnVsbG9wdCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQpID0gMDsKIAogICAgIC8vIEZJWE1FOiBjdXJyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0
aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0cmljdGlvbiB0aGF0IHRoZXkgb25seSB3b3JrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAppbmRleCA0M2Y1MmJkNGJkODlkNTE2OTUzN2NiOTRjYzg1ZTA1MjljZWY4YzM1Li5h
NjJiM2M3YmQ2MzBkYjk4YmMyYWNjYTdiN2FkNDVhY2EwOTE2YTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKQogICAgIHB1dFBpeGVsQnVmZmVyKCpwaXhlbEJ1ZmZlciwgbG9naWNhbFJlY3Qo
KSwgSW50UG9pbnQ6Onplcm8oKSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGll
ZCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCB2b2lkKiBkYXRhKSBjb25zdAogewogICAgIEFTU0VSVChQaXhlbEJ1ZmZlcjo6c3VwcG9y
dGVkUGl4ZWxGb3JtYXQoZGVzdGluYXRpb25Gb3JtYXQucGl4ZWxGb3JtYXQpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aAppbmRleCBlNzNhMmE5ZjNiYmJlMDViODE5MzZiNjhkOTE3YjExY2FkZGMxYWIwLi40MjA5OWQ0
ZDM2MjVjNWI5MmRhNDQ5MmMyMjY5YjcyNmIwNWIyNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTA0LDEw
ICsxMDQsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVt
aW5hbmNlTWFzaygpOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90
PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0g
MDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhl
bEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgPSAwOwogCiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0
KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgp
KTsgfTsKICAgICBJbnRSZWN0IGJhY2tlbmRSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSgpKTsgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZv
cm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBk
ZXN0Rm9ybWF0LCB2b2lkKiBkYXRhKTsKIAogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRl
eCBmOGQ2MDQ1N2IyMTUzNmZmMzk5OTBjOTg0NmMwNzI0ZmU1ZjdjZjIzLi44NzFjMTAxNWNhNjlm
NTgwZTkzMGU2ZWM1MDJlYjQ3YjY1NjY0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdHJ1Y3QgRnJhbWVNZXRhZGF0YSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb247Ci0gICAgICAgIE9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXpl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplOwog
ICAgIH07CiAKICAgICBzdHJ1Y3QgRnJhbWVJbmZvIHsKQEAgLTY4LDE0ICs2OCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgICAg
ICBzdGF0aWMgT3B0aW9uYWw8RnJhbWVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RnJhbWVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQWxwaGE7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0FscGhhOwogICAgICAgICAgICAgZGVj
b2RlciA+PiBoYXNBbHBoYTsKICAgICAgICAgICAgIGlmICghaGFzQWxwaGEpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gZHVyYXRpb247CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9u
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKICAgICAgICAgICAgIGlmICghZHVy
YXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTExNiw3ICsx
MTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIEludFNpemUgZnJh
bWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuY3BwCmluZGV4IGNjM2I2MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2Vj
YTYyNmVkYmE0ZDEuLjBlYTBhMDMyN2I1ZmRmOTUyMzMyYzY2NDczZDFmYTgxMzgyMmZhMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBA
IC0xMDEsMTcgKzEwMSwxNyBAQCBJbnRTaXplIEltYWdlRnJhbWU6OnNpemUoKSBjb25zdAogICAg
IHJldHVybiBtX3NpemU7CiB9CiAgICAgCi1ib29sIEltYWdlRnJhbWU6Omhhc05hdGl2ZUltYWdl
KGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKSBjb25z
dAorYm9vbCBJbWFnZUZyYW1lOjpoYXNOYXRpdmVJbWFnZShjb25zdCBzdGQ6Om9wdGlvbmFsPFN1
YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewogICAgIHJldHVybiBt
X25hdGl2ZUltYWdlICYmICghc3Vic2FtcGxpbmdMZXZlbCB8fCAqc3Vic2FtcGxpbmdMZXZlbCA+
PSBtX3N1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1ib29sIEltYWdlRnJhbWU6Omhhc0Z1bGxTaXpl
TmF0aXZlSW1hZ2UoY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5n
TGV2ZWwpIGNvbnN0Citib29sIEltYWdlRnJhbWU6Omhhc0Z1bGxTaXplTmF0aXZlSW1hZ2UoY29u
c3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkgY29u
c3QKIHsKICAgICByZXR1cm4gaGFzTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkgJiYgKG1f
ZGVjb2RpbmdPcHRpb25zLmlzU3luY2hyb25vdXMoKSB8fCBtX2RlY29kaW5nT3B0aW9ucy5oYXNG
dWxsU2l6ZSgpKTsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpoYXNEZWNvZGVkTmF0aXZlSW1hZ2VD
b21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBj
b25zdAorYm9vbCBJbWFnZUZyYW1lOjpoYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0
aE9wdGlvbnMoY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGhhc05hdGl2ZUltYWdlKHN1YnNhbXBsaW5nTGV2ZWwpICYmIG1fZGVjb2Rp
bmdPcHRpb25zLmlzQXN5bmNocm9ub3VzQ29tcGF0aWJsZVdpdGgoZGVjb2RpbmdPcHRpb25zKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRl
eCBhYTczYWUzNjM4OWVjMmZhYzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzLi4zZjJiMWZjMDk5YTU4
ZDU2NGUyMDUzZWVhMzM5YjU3MTAwY2YzMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlv
bjsgfQogCiAgICAgdm9pZCBzZXREZW5zaXR5Q29ycmVjdGVkU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKSB7IG1fZGVuc2l0eUNvcnJlY3RlZFNpemUgPSBzaXplOyB9Ci0gICAgT3B0aW9uYWw8SW50
U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlbnNpdHlDb3Jy
ZWN0ZWRTaXplOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVuc2l0eUNvcnJlY3RlZFNpemU7IH0KIAogICAgIHZv
aWQgc2V0RHVyYXRpb24oY29uc3QgU2Vjb25kcyYgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1
cmF0aW9uOyB9CiAgICAgU2Vjb25kcyBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRp
b247IH0KQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9v
bCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhh
KCkgY29uc3QgeyByZXR1cm4gIWhhc01ldGFkYXRhKCkgfHwgbV9oYXNBbHBoYTsgfQogCi0gICAg
Ym9vbCBoYXNOYXRpdmVJbWFnZShjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7
IH0pIGNvbnN0OwotICAgIGJvb2wgaGFzRnVsbFNpemVOYXRpdmVJbWFnZShjb25zdCBPcHRpb25h
bDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pIGNvbnN0OwotICAgIGJvb2wgaGFzRGVjb2RlZE5h
dGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+JiwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikgY29uc3Q7CisgICAgYm9vbCBoYXNOYXRp
dmVJbWFnZShjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSkgY29u
c3Q7CisgICAgYm9vbCBoYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KSBjb25zdDsKKyAgICBib29sIGhhc0RlY29kZWROYXRp
dmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBs
aW5nTGV2ZWw+JiwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikgY29uc3Q7CiAgICAgYm9vbCBoYXNN
ZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCkuaXNFbXB0eSgpOyB9CiAKICAgICBDb2xv
ciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKICAgICBJbWFnZU9y
aWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH07Ci0gICAg
T3B0aW9uYWw8SW50U2l6ZT4gbV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IG1fZGVuc2l0eUNvcnJlY3RlZFNpemU7CiAgICAgU2Vjb25kcyBtX2R1cmF0
aW9uOwogICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAppbmRl
eCAzYzlmNDhmNDU2NDM5MTYxNmRjNmU2ZmY1ZjhkNWQwZGVjNmY2YjdmLi5hOWNjZTU2NDJjYjc3
NjE3N2YyN2I4MThlMTA1OGJmNzNkOTYwY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTU1LDcgKzU1
LDcgQEAgc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlv
blF1YWxpdHk7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZp
cnN0LCB0eXBlbmFtZS4uLiBSZXN0PgpAQCAtOTAsMjkgKzkwLDI5IEBAIHZvaWQgSW1hZ2VQYWlu
dGluZ09wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IEltYWdlUGFp
bnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8SW1h
Z2VQYWludGluZ09wdGlvbnM+IEltYWdlUGFpbnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3Bl
cmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3Bl
cmF0b3I7CiAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKICAgICBpZiAoIWNvbXBv
c2l0ZU9wZXJhdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxCbGVuZE1vZGU+IGJs
ZW5kTW9kZTsKICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKICAgICBpZiAoIWJsZW5kTW9kZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPERlY29kaW5nTW9k
ZT4gZGVjb2RpbmdNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8RGVjb2RpbmdNb2RlPiBkZWNvZGlu
Z01vZGU7CiAgICAgZGVjb2RlciA+PiBkZWNvZGluZ01vZGU7CiAgICAgaWYgKCFkZWNvZGluZ01v
ZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbWFnZU9y
aWVudGF0aW9uOjpPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxJ
bWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+
PiBvcmllbnRhdGlvbjsKICAgICBpZiAoIW9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9s
YXRpb25RdWFsaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGlu
dGVycG9sYXRpb25RdWFsaXR5OwogICAgIGRlY29kZXIgPj4gaW50ZXJwb2xhdGlvblF1YWxpdHk7
CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
UmVzb2x1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJl
c29sdXRpb24uY3BwCmluZGV4IGY3NjYwYjA5NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5
MzguLjhkMzNkMzdiZDFlNDlmZDBiZGMxZWVlMTI5MDhhODBhMzY2Y2RkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEludFNp
emU+IEltYWdlUmVzb2x1dGlvbjo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RkOjpv
cHRpb25hbDxJbnRTaXplPiBJbWFnZVJlc29sdXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgUmVzb2x1dGlvbk1ldGFkYXRhJiBtZXRh
ZGF0YSkKIHsKICAgICBpZiAobWV0YWRhdGEucmVzb2x1dGlvblVuaXQgIT0gUmVzb2x1dGlvblVu
aXQ6OkluY2hlcyB8fCBtZXRhZGF0YS5yZXNvbHV0aW9uLmlzRW1wdHkoKSB8fCBtZXRhZGF0YS5w
cmVmZXJyZWRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmgK
aW5kZXggZTFhMjYxMzBlYjRjZWNhN2Q1OTI2NzVhODY5MGFjZGM2NmIyYWNjMC4uNzMyN2YwYjBl
NWE5MmE1MjhkZjVlZmUwNzQ1MGNjODQyOWUzYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAg
c3RydWN0IEltYWdlUmVzb2x1dGlvbiB7CiAgICAgICAgIFJlc29sdXRpb25Vbml0IHJlc29sdXRp
b25Vbml0OwogICAgIH07CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNv
cnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9u
TWV0YWRhdGEmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29y
cmVjdGVkU2l6ZShjb25zdCBGbG9hdFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IFJlc29sdXRpb25N
ZXRhZGF0YSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDVkOTE2YzBmZTVk
NzAxOTFiOTJkNDBhYzc5MTRjYmRlNWMwNDM3MDUuLjQ1ZTRiM2JmMGNjMjFlYWMyY2QzNDNlMDZk
ZWE1NWI1MDE3ZTBiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIEltYWdlU291cmNlOjpz
dGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBPcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZv
ckRyYXdpbmcpCit2b2lkIEltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxJbnRTaXplPiYgc2l6ZUZvckRyYXdpbmcpCiB7CiAgICAgQVNTRVJU
KGlzRGVjb2RlckF2YWlsYWJsZSgpKTsKICAgICBpZiAoIWhhc0FzeW5jRGVjb2RpbmdRdWV1ZSgp
KQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0b3BBc3luY0RlY29kaW5n
UXVldWUoKQogICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMg
W2RlY29kaW5nIGhhcyBiZWVuIHN0b3BwZWRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VV
UkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotY29uc3QgSW1hZ2VGcmFtZSYgSW1h
Z2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZy
YW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBz
dWJzYW1wbGluZ0xldmVsKQorY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hp
bmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2
ZWwpCiB7CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRnJhbWU6OmRlZmF1bHRGcmFtZSgpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIFQgSW1hZ2VT
b3VyY2U6Om1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgY29uc3QgVCYgZGVm
YXVsdFZhbHVlLCBNZXRhCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIEltYWdlU291cmNl
OjpmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0
YVR5cGUgbWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1h
Z2VGcmFtZTo6Q2FjaGluZyBjYWNoaW5nLCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVs
PiYgc3Vic2FtcGxpbmdMZXZlbCkKK1QgSW1hZ2VTb3VyY2U6OmZpcnN0RnJhbWVNZXRhZGF0YUNh
Y2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQg
KEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hp
bmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2
ZWwpCiB7CiAgICAgaWYgKG1fY2FjaGVkTWV0YWRhdGEuY29udGFpbnMobWV0YWRhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlOwpAQCAtNTYwLDcgKzU2MCw3IEBAIFN0cmluZyBJ
bWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkKICAgICByZXR1cm4gbWV0YWRh
dGFDYWNoZUlmTmVlZGVkKG1fYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uLCBTdHJpbmcoKSwgTWV0
YWRhdGFUeXBlOjpBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24sICZJbWFnZURlY29kZXI6OmFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbik7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJj
ZTo6aG90U3BvdCgpCitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90U3Bv
dCgpCiB7CiAgICAgcmV0dXJuIG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX2hvdFNwb3QsIHsgfSwg
TWV0YWRhdGFUeXBlOjpIb3RTcG90LCAmSW1hZ2VEZWNvZGVyOjpob3RTcG90KTsKIH0KQEAgLTU3
MCw3ICs1NzAsNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbigp
CiAgICAgcmV0dXJuIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9vcmllbnRhdGlv
biwgTWV0YWRhdGFUeXBlOjpPcmllbnRhdGlvbiwgJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uLCBJ
bWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CiB9CiAKLU9wdGlvbmFsPEludFNpemU+IElt
YWdlU291cmNlOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZShJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQorc3RkOjpvcHRpb25hbDxJbnRTaXplPiBJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3Rl
ZFNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBhdXRvIHNpemUgPSBm
aXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1l
dGFkYXRhVHlwZTo6RGVuc2l0eUNvcnJlY3RlZFNpemUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29y
cmVjdGVkU2l6ZSwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6
ZSkKQEAgLTU3OSw3ICs1NzksNyBAQCBPcHRpb25hbDxJbnRTaXplPiBJbWFnZVNvdXJjZTo6ZGVu
c2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbgogICAgIGlmIChv
cmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVu
dGF0aW9uID0gdGhpcy0+b3JpZW50YXRpb24oKTsKIAotICAgIHJldHVybiBvcmllbnRhdGlvbi51
c2VzV2lkdGhBc0hlaWdodCgpID8gT3B0aW9uYWw8SW50U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5z
cG9zZWRTaXplKCkpIDogc2l6ZTsKKyAgICByZXR1cm4gb3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSA/IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4oc2l6ZS52YWx1ZSgpLnRyYW5zcG9zZWRT
aXplKCkpIDogc2l6ZTsKIH0KIAogSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQpAQCAtNjU4LDEyICs2NTgsMTIgQEAgYm9vbCBJbWFnZVNvdXJj
ZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBmcmFtZUF0
SW5kZXgoaW5kZXgpLmhhc0FscGhhKCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFz
RnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBPcHRpb25hbDxT
dWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZy
YW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIHJl
dHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxp
bmdMZXZlbCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlv
bmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewogICAgIHJldHVybiBmcmFt
ZUF0SW5kZXgoaW5kZXgpLmhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9u
cyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oCmluZGV4IDMyMTUx
OWJlMzIxM2Q5MDZlMWJhMWRmYTg2MjQ5ZGM2MGFlNjllN2QuLjgxNmRkNWFhMDdjOTFiNGRjOGEz
M2RjMzNmMWQ1YzhiNmI3NzRhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRHZW5lcmljQ3VlLmgKQEAgLTgxLDg4ICs4MSw4OCBAQCBzdHJ1Y3Qg
R2VuZXJpY0N1ZURhdGEgewogICAgIFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6VW5pbml0aWFs
aXplZCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxH
ZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8R2VuZXJpY0N1ZURh
dGE+IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDxJbmJhbmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7
CisgICAgc3RkOjpvcHRpb25hbDxJbmJhbmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7
CiAgICAgZGVjb2RlciA+PiB1bmlxdWVJZDsKICAgICBpZiAoIXVuaXF1ZUlkKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWU7
CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKICAgICBkZWNvZGVyID4+
IHN0YXJ0VGltZTsKICAgICBpZiAoIXN0YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZW5kVGltZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1lZGlhVGltZT4gZW5kVGltZTsKICAgICBkZWNvZGVyID4+IGVuZFRpbWU7CiAgICAgaWYg
KCFlbmRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250
ZW50OwogICAgIGlmICghY29udGVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPFN0cmluZz4gZm9udE5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGZvbnROYW1lOwogICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CiAgICAgaWYgKCFmb250TmFtZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gbGlu
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxpbmU7
CiAgICAgaWYgKCFsaW5lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcG9zaXRp
b247CiAgICAgZGVjb2RlciA+PiBwb3NpdGlvbjsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBzaXplOworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzaXplOwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxk
b3VibGU+IGJhc2VGb250U2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRT
aXplOwogICAgIGRlY29kZXIgPj4gYmFzZUZvbnRTaXplOwogICAgIGlmICghYmFzZUZvbnRTaXpl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBy
ZWxhdGl2ZUZvbnRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRT
aXplOwogICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKICAgICBpZiAoIXJlbGF0aXZl
Rm9udFNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxD
b2xvcj4gZm9yZWdyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZvcmVncm91
bmRDb2xvcjsKICAgICBkZWNvZGVyID4+IGZvcmVncm91bmRDb2xvcjsKICAgICBpZiAoIWZvcmVn
cm91bmRDb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gYmFja2dy
b3VuZENvbG9yOwogICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghYmFj
a2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8Q29sb3I+IGhpZ2hsaWdodENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGhpZ2hs
aWdodENvbG9yOwogICAgIGRlY29kZXIgPj4gaGlnaGxpZ2h0Q29sb3I7CiAgICAgaWYgKCFoaWdo
bGlnaHRDb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PEFsaWdubWVudD4gYWxpZ25tZW50OworICAgIHN0ZDo6b3B0aW9uYWw8QWxpZ25tZW50PiBhbGln
bm1lbnQ7CiAgICAgZGVjb2RlciA+PiBhbGlnbm1lbnQ7CiAgICAgaWYgKCFhbGlnbm1lbnQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdGF0dXM+IHN0YXR1
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0YXR1cz4gc3RhdHVzOwogICAgIGRlY29kZXIgPj4gc3Rh
dHVzOwogICAgIGlmICghc3RhdHVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKaW5k
ZXggM2EwMmU1NjA1YWIyOGNhZTM0OTRmODg3NWZjNDY1NDNjMzBiYjMwMi4uYWI0M2QxZTQzN2Ux
MzM0Mjk2ZGI5YjUzMjE1N2QwODA1MGM1NGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVj
dCBMaW5lRGF0YSB7CiAgICAgRmxvYXRQb2ludCBlbmQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExpbmVEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExpbmVEYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogc3RydWN0IEFyY0RhdGEgewpAQCAtNTcsMTQgKzU3LDE0
IEBAIHN0cnVjdCBBcmNEYXRhIHsKICAgICBUeXBlIHR5cGUgeyBUeXBlOjpBcmNPbmx5IH07CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFyY0RhdGE+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXJjRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHN0cnVjdCBNb3ZlRGF0
YSB7CiAgICAgRmxvYXRQb2ludCBsb2NhdGlvbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW92ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW92ZURhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1Y3QgUXVhZEN1cnZlRGF0YSB7CkBAIC03Myw3ICs3Myw3
IEBAIHN0cnVjdCBRdWFkQ3VydmVEYXRhIHsKICAgICBGbG9hdFBvaW50IGVuZFBvaW50OwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxRdWFkQ3VydmVEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFF1YWRDdXJ2ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiBzdHJ1
Y3QgQmV6aWVyQ3VydmVEYXRhIHsKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IEJlemllckN1cnZl
RGF0YSB7CiAgICAgRmxvYXRQb2ludCBlbmRQb2ludDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmV6aWVyQ3VydmVEYXRhPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJlemll
ckN1cnZlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgTW92ZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtOTEs
NyArOTEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIE1vdmVEYXRhOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxvY2F0aW9uOwogfQogCi10
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25h
bDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1v
dmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmxvY2F0aW9uKSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIExpbmVEYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVuZDsKIH0KIAot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8TGluZURhdGE+IExpbmVEYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8TGluZURhdGE+IExpbmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBM
aW5lRGF0YSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCkBAIC0x
MjgsNyArMTI4LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcmNEYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHR5cGU7CiB9CiAKLXRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxB
cmNEYXRhPiBBcmNEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcmNEYXRh
IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0KSkKQEAgLTE2Miw3ICsx
NjIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFF1YWRDdXJ2ZURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgZW5kUG9pbnQ7CiB9CiAK
LXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFF1YWRDdXJ2ZURhdGE+IFF1YWRDdXJ2
ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxRdWFkQ3VydmVEYXRhPiBRdWFkQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBRdWFkQ3VydmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLnN0YXJ0UG9pbnQpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgQmV6aWVyQ3VydmVEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IGVuZFBvaW50OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxCZXppZXJDdXJ2ZURhdGE+IEJlemllckN1cnZlRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFs
PEJlemllckN1cnZlRGF0YT4gQmV6aWVyQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBCZXppZXJDdXJ2ZURhdGEgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEuc3RhcnRQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXlvdXRSZWN0LmgKaW5kZXggYzljYmQ4MWRiMjBhOGI2ZTRlMTFkZDA0N2NhM2I5Y2RkYjI4ZmFk
Ny4uYWI2MjczOGQ5MTliN2NjMWNhMGM0NWY3NDhjY2FhNWM5MzEzNTIyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtNjUsMTQgKzY1LDE0
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0
YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRQb2ludD4gbGF5b3V0UG9pbnQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gbGF5b3V0UG9pbnQ7CiAgICAgICAgIGlmICghbGF5b3V0UG9pbnQpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxh
eW91dFNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbGF5b3V0U2l6ZTsK
ICAgICAgICAgZGVjb2RlciA+PiBsYXlvdXRTaXplOwogICAgICAgICBpZiAoIWxheW91dFNpemUp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCmluZGV4IGM1YTc3N2ZkN2Q2MDdiZWMy
OTJiMzhhNmJkY2Y0NjI0YjQwZmI1MTAuLmI4YjI0ZDQzZjIwN2ZhMTI4MzUyYTIzNzI0Y2MwNGZk
YWEyMDk1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01J
TUVUeXBlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NSU1F
VHlwZUNhY2hlLmgKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVFeHRlbmRlZFR5cGUoY29uc3QgQ29udGVudFR5cGUmKTsKIAotICAgIE9wdGlvbmFs
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtX3N1cHBvcnRlZFR5
cGVzOwotICAgIE9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGUsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IG1fY2FjaGVkUmVzdWx0czsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
PiBtX3N1cHBvcnRlZFR5cGVzOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIE1l
ZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4g
bV9jYWNoZWRSZXN1bHRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGY5ODIy
ZjgxMWRjZjU3ZjhhY2Q4MTkzOWZjYzZkNzNiZTM0YzkxOGEuLmVkZmQ2YTMwMzhlNzJkYTg0ZDM2
Mjc0Yzk0YzJmMDViZGYzNTRiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXI6OmVuZGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5lbmRlZCgpOwogfQog
Ci1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyOjp2aWRl
b1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQog
ewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYWEx
MTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQzNWJlZDU3YTFjMmEwZS4uYWQyY2MwN2VhNTQxNTk3ODc3
OWNkMzA1NGMzZmVhNWEwMTllYjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xMDcsMjkgKzEwNywyOSBAQCBzdHJ1Y3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q29udGVudFR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAg
aWYgKCF0eXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKICAgICAg
ICAgZGVjb2RlciA+PiB1cmw7CiAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGRlY29k
ZXIgPj4gaXNNZWRpYVNvdXJjZTsKICAgICAgICAgaWYgKCFpc01lZGlhU291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc01l
ZGlhU3RyZWFtOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07CiAg
ICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVN0cmVhbTsKICAgICAgICAgaWYgKCFpc01lZGlhU3Ry
ZWFtKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxWZWN0b3I8Q29udGVudFR5cGU+PiB0eXBlc1JlcXVpcmluZ0hhcmR3YXJlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7
CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKICAgICAgICAgaWYg
KCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ZmlsZVNpemUoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCk7CisgICAgc3RkOjpvcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
OwogCiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAg
IFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CkBA
IC02NzksOCArNjc5LDggQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5
cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07Ci0gICAgT3B0aW9uYWw8
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlk
ZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cj4gbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1l
PiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBQcmVsb2Fk
IG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCmluZGV4IDg3N2Y4YzBlYmE3ODY3MWNiYzhhYTUyZWY2Nzk0Njc1MWJhYmNiOGMu
LjliNTJlMTY0YjI0Nzc3ODBmYjI0ZjU4ZjhmYTU3OWI1N2IxM2Q5MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBA
IC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxib29sPiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1vdmll
TG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3Zp
ZUxvYWRUeXBlOjpVbmtub3duOyB9CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5kZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcygpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcygpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUlu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgK
aW5kZXggNmEyNjcwMTYxYzU1NTNhYTBlMDY4ZGVjN2FjMzViZTM4ZmEzOTA0Ny4uZTI2N2M2NmYx
ODhjNWI2MjVhY2U1ZWQzOTU0YjQ5OGQ4YjU1NTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCkBAIC0xMDUsNyArMTA1LDcgQEAg
c3RydWN0IE1lZGlhVXNhZ2VJbmZvIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhVXNhZ2VJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhVXNh
Z2VJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
aW5saW5lIHZvaWQgTWVkaWFVc2FnZUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApAQCAtMTQzLDcgKzE0Myw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lk
IE1lZGlhVXNhZ2VJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2Rl
ciA8PCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQ7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBPcHRpb25hbDxNZWRpYVVzYWdlSW5mbz4gTWVkaWFVc2FnZUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0
ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+IE1lZGlhVXNhZ2VJbmZvOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBNZWRpYVVzYWdlSW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCA4Y2VlNTU0NzE4NDkyNzFkMDljMmZhMTA4
YTVmZTY1NGQyMTk4OTdjLi4xY2E5NzYzM2Q4NjJiOGRlODMwZmJmODJhZTA2YTU4YjE3NjhlNzE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7CisgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNGZhODI3M2NkY2Nk
OTkwODFiYjJmNDIyZWNmZDExYTczODgwNmY5NC4uZTVkMWZmOWJjYWVkMDRjZTNjMmVlMDlhMTdm
ZWE2NDIwOTU0OGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtMTA1LDExICsxMDUsMTEgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImLCBjb25zdCBDb2xvciYpIGZpbmFsIHsgfQogCi0gICAgRmxvYXRTaXplIGRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyBy
ZXR1cm4geyB9OyB9CisgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IHJldHVybiB7IH07IH0KIAog
ICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQogCi0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+ID0gc3Rk
OjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9h
dFBvaW50JiwgdW5zaWduZWQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVs
bG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5
KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBG
bG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgZmluYWwgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4IGRhZDY0M2Y3ZjE0NmNkYWQ5NjRh
NzU4NmVhODg2MDVkMzY4OTE3OTQuLjU4MjRkYjUwZDhmYjBkNzc0N2U3ZDRkMWQ1NDdjZDVkMzU2
NWYwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBAIC00
MTYsNyArNDE2LDcgQEAgRmxvYXRSZWN0IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAog
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gUGF0
aDo6ZmFzdEJvdW5kaW5nUmVjdEZyb21JbmxpbmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBQYXRoOjpmYXN0Qm91bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdAog
ewogICAgIGlmIChoYXNJbmxpbmVEYXRhPEFyY0RhdGE+KCkpIHsKICAgICAgICAgYXV0byYgYXJj
ID0gaW5saW5lRGF0YTxBcmNEYXRhPigpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBGbG9h
dFJlY3QgY29tcHV0ZUFyY0JvdW5kcyhjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJh
ZGl1cywgZmxvYXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+
IFBhdGg6OmJvdW5kaW5nUmVjdEZyb21JbmxpbmVEYXRhKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBQYXRoOjpib3VuZGluZ1JlY3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiB7CiAg
ICAgaWYgKGhhc0lubGluZURhdGE8QXJjRGF0YT4oKSkgewogICAgICAgICBhdXRvJiBhcmMgPSBp
bmxpbmVEYXRhPEFyY0RhdGE+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
LmgKaW5kZXggYTAxNTY0NmM2NzA4NWM0NTM1ZTY5MzYxY2FmNDU5M2M3YWNiZTJjYi4uNzIxYWZi
ZmZmNzMxMWU5NWI5MDkzZDU4YjQ2NWM3NjYxZGVkMDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguaApAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQYXRoPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFBhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4gY29uc3QgRGF0YVR5cGUmIGlu
bGluZURhdGEoKSBjb25zdDsKQEAgLTI0NSw4ICsyNDUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFU
eXBlPiBEYXRhVHlwZSYgaW5saW5lRGF0YSgpOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZmFz
dEJvdW5kaW5nUmVjdEZyb21JbmxpbmVEYXRhKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBib3VuZGluZ1JlY3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBmYXN0Qm91bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdSZWN0RnJvbUlubGluZURhdGEoKSBj
b25zdDsKICNlbmRpZgogCiAgICAgdm9pZCBtb3ZlVG9TbG93Q2FzZShjb25zdCBGbG9hdFBvaW50
Jik7CkBAIC0yOTEsNyArMjkxLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGJvb2wgbV9jb3B5
UGF0aEJlZm9yZU11dGF0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgogI2lmIFVTRShDQUlSTykKLSAg
ICBPcHRpb25hbDxWZWN0b3I8UGF0aEVsZW1lbnQ+PiBtX2VsZW1lbnRzOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFBhdGhFbGVtZW50Pj4gbV9lbGVtZW50czsKICNlbmRpZgogfTsKIApAQCAt
MzM1LDcgKzMzNSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGF0aDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgfSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPFBhdGg+IFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBQYXRoIHBhdGg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggZTRhM2IxMzE4ZmVi
ODFhZmZhYmI0NmZhZThhM2UwNWM4YWM5NjUxZi4uODkzYWQ4NDM3ODgwMWFlNWZlZThiNjk3NjNl
YTU0YmQwYjFmOTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTQ2NCwxMyArNDY0LDEzIEBAIHN0YXRpYyBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSBhZGp1c3RlZHRSYWRpaUZvckh1Z2dpbmdDdXJ2ZShjb25zdCBGbG9h
dFNpemUmIHRvCiAgICAgcmV0dXJuIHJhZGlpOwogfQogICAgIAotc3RhdGljIE9wdGlvbmFsPEZs
b2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYg
cG9seSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNv
bnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYgcG9seSkKIHsKICAgICBpZiAocG9seS5zaXpl
KCkgIT0gNCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PigpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRQ
b2ludD4gdG9wTGVmdDsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHRvcExlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFBvaW50PiBib3R0b21SaWdodDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9s
eS5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiB0b0VkZ2UgPSBwb2x5W2ldOwog
ICAgICAgICBjb25zdCBhdXRvJiBmcm9tRWRnZSA9IChpID4gMCkgPyBwb2x5W2kgLSAxXSA6IHBv
bHlbcG9seS5zaXplKCkgLSAxXTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQb2x5Z29u
JiBwb2x5KQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghdG9wTGVmdCB8fCAhYm90dG9tUmln
aHQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxGbG9hdFJlY3Q+KCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKICAgICByZXR1cm4gRmxvYXRSZWN0KHRvcExl
ZnQudmFsdWUoKSwgYm90dG9tUmlnaHQudmFsdWUoKSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBA
QCBQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGlu
ZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PgogICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgIGNv
bnN0IGF1dG8mIHBvbHkgPSBwb2x5cy5hdCgwKTsKICAgICAvLyBGYXN0IHBhdGggd2hlbiBwb2x5
IGhhcyBvbmUgcmVjdCBvbmx5LgotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RG
cm9tUG9seWdvbihwb2x5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJl
Y3RGcm9tUG9seWdvbihwb2x5KTsKICAgICBpZiAocmVjdCkKICAgICAgICAgcmV0dXJuIHJvdW5k
ZWRSZWN0KHJlY3QudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAppbmRleCA4YzY4NmExZjIyOGM4MDA4NWM0NWU5OWViODBhYzU5Mzg0ZWViZWZh
Li4xYzk2MWZiZjQ2ZTgzNmY0MDA3ZTYwYTk4MTQxZjQ5MTI0YjU0NTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcmFtZXRl
cnM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm07CiAgICAgICAgIGJvb2wgcmVwZWF0WDsKICAgICAgICAgYm9vbCByZXBlYXRZ
OwpAQCAtMTAzLDE5ICsxMDMsMTkgQEAgdm9pZCBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IFBhdHRlcm46OlBhcmFtZXRlcnM6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBQYXR0
ZXJuOjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogICAgIGRlY29kZXIg
Pj4gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogICAgIGlmICghcGF0dGVyblNwYWNlVHJhbnNmb3Jt
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVw
ZWF0WDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlcGVhdFg7CiAgICAgZGVjb2RlciA+PiBy
ZXBlYXRYOwogICAgIGlmICghcmVwZWF0WCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBy
ZXBlYXRZOwogICAgIGRlY29kZXIgPj4gcmVwZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXggZmE3MTY2MjNlYmUzNzk4ODZlZjBmZWQzMjZm
ZDU2MDU2M2UzODc4ZC4uOTU1ODA3ZmQzYTAwMWM2MjJlMmZiOGNjMGI0OTRlZGE4OTRmZjAyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4
ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGNvbnN0IFBpeGVsQnVmZgogICAgIHJldHVybiBz
aXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiBieXRlc1BlclBpeGVsOwogfQogCi1PcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRh
dGFCeXRlTGVuZ3RoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0
IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQogewogICAgIEFTU0VSVChz
dXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKICAgICBBU1NFUlQoY29t
cHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKS51bnNhZmVHZXQoKSA9PSBkYXRhQnl0ZUxlbmd0
aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmCiAgICAgcmV0dXJu
IHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAK
LU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCitzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9y
bWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKHN1cHBvcnRl
ZFBpeGVsRm9ybWF0KGZvcm1hdC5waXhlbEZvcm1hdCkpOwogCkBAIC04MCw3ICs4MCw3IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBmb3JtYXQsIGNvCiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVs
QXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNv
bnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OkFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyKQor
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpB
cnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlcikKIHsKICAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxG
b3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCmluZGV4IGMzNTNmZWJkY2RmMzkwMmZmM2M1MmVlMTNj
ZGFkOWJmOWI5ZTBhNWMuLjEyY2EzYzhjNzJkOTM3NDY0NWRiNTFjMGMwMGE4ZDRiOWU4NjJkZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApA
QCAtNDMsOCArNDMsOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkUGl4ZWxGb3JtYXQoUGl4ZWxGb3JtYXQpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
LCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6QXJyYXlCdWZmZXI+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAK
ICAgICBQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUm
LCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJik7CiAgICAgUGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJh
eSYpOwpAQCAtNjIsMTAgKzYyLDEwIEBAIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xv
bmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiB0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0
IEludFNpemUmLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRl
TGVuZ3RoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4gY29tcHV0ZUJ1ZmZlclNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
LCBjb25zdCBJbnRTaXplJik7CiAKQEAgLTg1LDkgKzg1LDkgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
Ynl0ZUxlbmd0aCgpLCAxKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVy
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZv
cm1hdD4gZm9ybWF0OworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1h
dDsKICAgICBkZWNvZGVyID4+IGZvcm1hdDsKICAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2QKICAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOworICAgIHN0
ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYg
KCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKaW5kZXggNjA4MmU1
Yjg0NjQxMDNlNTFiNDRmZWRmMGE3YmE2ZGZkNTgwYmZjNy4uZDRmNWIwM2Y2MjJmOWQ3NzY4NWIw
ZWQ4ZjlhZWE3YTRjZWE3YTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBQ
aXhlbEJ1ZmZlckZvcm1hdCB7CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmKTsKQEAgLTQ5LDE5ICs0OSwxOSBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyRm9ybWF0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGFscGhhRm9ybWF0IDw8IHBpeGVsRm9ybWF0
IDw8IGNvbG9yU3BhY2U7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBp
eGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyRm9y
bWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgc3RkOjpv
cHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYUZvcm1hdDsKICAgICBkZWNvZGVy
ID4+IGFscGhhRm9ybWF0OwogICAgIGlmICghYWxwaGFGb3JtYXQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2RlciA+
PiBwaXhlbEZvcm1hdDsKICAgICBpZiAoIXBpeGVsRm9ybWF0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlOworICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
OwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCmluZGV4IGNiOTcwMTI1YTRiMDRiNDZh
NWMzNWJkYWNjNzZmMzA4MDFlMWM2YjkuLjJjNmEyMjNkOWU2MWI2MjRhZmNmMDdjNDYyNWUzN2Fi
ODdjNDU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtQ29sb3JTcGFjZS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBOYW1l
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1Db2xvclNwYWNlPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIE5hbWUg
bV9uYW1lOwpAQCAtNzUsOSArNzUsOSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBs
YXRmb3JtQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBtX25hbWU7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBs
YXRmb3JtQ29sb3JTcGFjZT4gUGxhdGZvcm1Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Db2xv
clNwYWNlPiBQbGF0Zm9ybUNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5h
bWU7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2su
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgK
aW5kZXggZmNiZDI3NWY5NWYzMGMyZWJjMjI0YTNhYzY4NTg1NWRkZTYyNjFkZC4uNjdiNTMyNTU5
NDY2ZjY1MzJhMzg2MTE3YzQxOWI0NGM0MWMwNWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCkBAIC03OCw0OCArNzgs
NDggQEAgc3RydWN0IFBsYXRmb3JtVGV4dFRyYWNrRGF0YSB7CiAgICAgYm9vbCBtX2lzRGVmYXVs
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZv
cm1UZXh0VHJhY2tEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGV4dFRyYWNrRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UGxh
dGZvcm1UZXh0VHJhY2tEYXRhPiBQbGF0Zm9ybVRleHRUcmFja0RhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRleHRUcmFja0RhdGE+IFBsYXRmb3Jt
VGV4dFRyYWNrRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBsYWJlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbGFiZWw7CiAgICAgZGVj
b2RlciA+PiBsYWJlbDsKICAgICBpZiAoIWxhYmVsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5ndWFnZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgZGVjb2RlciA+PiBsYW5ndWFnZTsKICAgICBpZiAoIWxh
bmd1YWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3Ry
aW5nPiB1cmw7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVybDsKICAgICBkZWNvZGVyID4+
IHVybDsKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPFRyYWNrTW9kZT4gbW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRyYWNrTW9kZT4g
bW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFtb2RlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VHJhY2tLaW5kPiBraW5kOworICAgIHN0
ZDo6b3B0aW9uYWw8VHJhY2tLaW5kPiBraW5kOwogICAgIGRlY29kZXIgPj4ga2luZDsKICAgICBp
ZiAoIWtpbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxU
cmFja1R5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxUcmFja1R5cGU+IHR5cGU7CiAgICAg
ZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGludD4gdW5pcXVlSWQ7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IHVuaXF1ZUlkOwogICAgIGRlY29kZXIgPj4gdW5pcXVlSWQ7CiAgICAgaWYgKCF1bmlxdWVJ
ZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlz
RGVmYXVsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKICAgICBkZWNvZGVy
ID4+IGlzRGVmYXVsdDsKICAgICBpZiAoIWlzRGVmYXVsdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtVGltZVJhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UaW1lUmFuZ2VzLmgKaW5kZXggNTg0NDgxZTk1NjNmYmNiOTA2YjY3ODM4ODFiOTI5MDM1
NTllNWI1Yi4uYjFlODE1ZmI0NDZlNGIyNmNiNGZiNTg4NjU3Mzg5MjNhMTYyOTM5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2Vz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFu
Z2VzLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChXVEY6OlByaW50
U3RyZWFtJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgLy8gV2UgY29uc2lkZXIgYWxsIHRo
ZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3VuZGVkIGFzIGZvbGxvdzogW3N0YXJ0LCBlbmRbCkBAIC05
MiwxNCArOTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlIDxj
bGFzcyBEZWNvZGVyPgotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8UmFuZ2U+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSYW5nZT4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gc3RhcnQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7
CiAgICAgICAgICAgICBkZWNvZGVyID4+IHN0YXJ0OwogICAgICAgICAgICAgaWYgKCFzdGFydCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRp
b25hbDxNZWRpYVRpbWU+IGVuZDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1l
PiBlbmQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGVuZDsKICAgICAgICAgICAgIGlmICghZW5k
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNTAsOSArMTUwLDkg
QEAgdm9pZCBQbGF0Zm9ybVRpbWVSYW5nZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFBsYXRmb3JtVGltZVJh
bmdlcz4gUGxhdGZvcm1UaW1lUmFuZ2VzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1UaW1lUmFuZ2VzPiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVk
OworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJhbmdlPj4gYnVmZmVyZWQ7CiAgICAgZGVjb2Rl
ciA+PiBidWZmZXJlZDsKICAgICBpZiAoIWJ1ZmZlcmVkKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3
ZWNiMWM2OTZiMmU4ZjU4OGFlMWRmYWVkMTc3MDUyMTAwODdjYTJlLi44M2M1ZWQyYWM5MjMxOGU3
MDQwYTQ2ZDViZTgwNjNmYTNmZDFhM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVnaW9uPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBk
ZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVnaW9uJik7CiAKQEAgLTg3LDcgKzg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHNlZ21lbnRJbmRleCB7IDAgfTsKIAogICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGFuPiBkZWNvZGUo
RGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBjbGFzcyBTaGFw
ZSB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGJvb2wgY29t
cGFyZVNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKIAog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFw
ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IGRlY29kZShEZWNvZGVyJik7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIHZvaWQgZHVtcCgpIGNvbnN0OwpAQCAtMjE4LDE0ICsyMTgsMTQgQEAgdm9p
ZCBSZWdpb246OlNwYW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8UmVnaW9uOjpTcGFuPiBSZWdpb246OlNwYW46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWdpb246OlNwYW4+IFJl
Z2lvbjo6U3Bhbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8aW50
PiB5OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB5OwogICAgIGRlY29kZXIgPj4geTsKICAgICBp
ZiAoIXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc2Vn
bWVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNlZ21lbnRJbmRleDsKICAg
ICBkZWNvZGVyID4+IHNlZ21lbnRJbmRleDsKICAgICBpZiAoIXNlZ21lbnRJbmRleCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTI0MSwxNCArMjQxLDE0IEBAIHZvaWQgUmVnaW9uOjpTaGFwZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxSZWdpb246OlNoYXBlPiBSZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVnaW9uOjpTaGFwZT4gUmVnaW9uOjpTaGFwZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPGludD4+IHNl
Z21lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IHNlZ21lbnRzOwogICAgIGRl
Y29kZXIgPj4gc2VnbWVudHM7CiAgICAgaWYgKCFzZWdtZW50cykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxSZWdpb246OlNwYW4+PiBzcGFuczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWdpb246OlNwYW4+PiBzcGFuczsKICAgICBkZWNv
ZGVyID4+IHNwYW5zOwogICAgIGlmICghc3BhbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0yNzEsMTQgKzI3MSwxNCBAQCB2b2lkIFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWdp
b24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZ2lv
bj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxJbnRS
ZWN0PiBib3VuZHM7CisgICAgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBib3VuZHM7CiAgICAgZGVj
b2RlciA+PiBib3VuZHM7CiAgICAgaWYgKCFib3VuZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBoYXNTaGFwZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGhhc1NoYXBlOwogICAgIGRlY29kZXIgPj4gaGFzU2hhcGU7CiAgICAgaWYgKCFoYXNT
aGFwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI4Niw3ICsyODYsNyBAQCBP
cHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgUmVn
aW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9OwogCiAgICAgaWYgKCpoYXNTaGFwZSkgewotICAgICAg
ICBPcHRpb25hbDxTaGFwZT4gc2hhcGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IHNo
YXBlOwogICAgICAgICBkZWNvZGVyID4+IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5OSw3ICsyOTksNyBAQCBPcHRpb25h
bDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgogYm9vbCBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWdpb24m
IHJlZ2lvbikKIHsKLSAgICBPcHRpb25hbDxSZWdpb24+IGRlY29kZWRSZWdpb247CisgICAgc3Rk
OjpvcHRpb25hbDxSZWdpb24+IGRlY29kZWRSZWdpb247CiAgICAgZGVjb2RlciA+PiBkZWNvZGVk
UmVnaW9uOwogICAgIGlmICghZGVjb2RlZFJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCA1ODEwMjg2OWE5YzEzNzQ0MGNlYmQwYTEwMmZkNDVjYTI4OGViYzcwLi44MzJhMjc2ZTdjNjA5
MGMxYmFlODMxYjhiZTM4ZmUyMGQ0OTQyNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIEludFNpemUg
U2hhZG93Qmx1cjo6Ymx1cnJlZEVkZ2VTaXplKCkgY29uc3QKICAgICByZXR1cm4gZWRnZVNpemU7
CiB9CiAKLU9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dC
bHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQorc3RkOjpvcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4g
U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKIHsKICAgICBMYXllckltYWdlUHJvcGVydGllcyBjYWxjdWxhdGVkTGF5
ZXJJbWFnZVByb3BlcnRpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuaAppbmRleCA4N2Y2NDZlMzRiMDA2YmI0ZThlYTBiMDRhOTA2NDhkZGRmMmJm
NTY0Li4wYzk3NmI4NzUxYmQ2ZWZmMGNhN2FkMjI3ODIzNjYxMjg4YTg4OTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC05OSw3ICs5OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIEZsb2F0U2l6ZSBsYXllckNvbnRleHRUcmFuc2xhdGlvbjsg
Ly8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRv
IGJlIGNvcnJlY3RseSBjbGlwcGVkLgogICAgIH07CiAKLSAgICBPcHRpb25hbDxTaGFkb3dCbHVy
OjpMYXllckltYWdlUHJvcGVydGllcz4gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQ
cm9wZXJ0aWVzPiBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6
ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAogICAgIHZvaWQgYmx1
clNoYWRvd0J1ZmZlcihJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgSW50U2l6ZSYgdGVt
cGxhdGVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nLmgKaW5kZXggNDZiYjZkNDMxN2JhOWJiZjRlY2IxNjBkNjMwZjc3OWJiZDFiNzQ3Ny4u
MmUwYzYxYzM5MGY4OWFiMTJiYTk1Nzg3YzY0ZTNjZmVlMzk5ZWExZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3QgPSAw
OwogCiAgICAgLy8gT25seSB1c2VkIHRvIHVwZGF0ZSB0aGUgdGlsZSBjb3ZlcmFnZSBtYXAuIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0
PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q292ZXJhZ2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb3ZlcmFnZVJl
Y3QoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCmluZGV4IGQwYjAyYTM0ODJiZjczZDFiM2ZjZWI5Mzhl
NmU5OWI0MGQxZWE1N2YuLjRkOGVlNjJlMDFiOGVhZWJhY2M2ZDI4YjNhMDk4NTI5NTJjNWQ4MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1PcHRpb25hbDx1aW50NjRfdD4gVHJhY2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAor
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gVHJhY2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25z
dAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFRyYWNr
UHJpdmF0ZUJhc2U6OmRlZmF1bHRFbmFibGVkKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4g
VHJhY2tQcml2YXRlQmFzZTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UcmFja1ByaXZhdGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UcmFja1ByaXZhdGVCYXNlLmgKaW5kZXggMzA5OTYxNDIwNDg1NWQ5OTY5ZDA0YzZmMDc5ODNj
Mjc3NzRlN2YzYi4uMjc4ZjBjNmI3MmMyODUwOWQzMDJmNzdiNDdkNjE5MmE3MTlkMDI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJh
c2UuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KIAogICAgIHZpcnR1YWwgaW50
IHRyYWNrSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1
aW50NjRfdD4gdHJhY2tVSUQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IGRl
ZmF1bHRFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiB0cmFja1VJRCgpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBkZWZh
dWx0RW5hYmxlZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBNZWRpYVRpbWUgc3RhcnRUaW1lVmFy
aWFuY2UoKSBjb25zdCB7IHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXgg
ZjU3NzI0ZDk2NDg2MjYyMDE4ZjNjYmE0NWIxZjEwMWFhNDE1YjBhZi4uOTJmNDJiNjc3ZDUzZGQ5
YzZhM2Y2YmQ2ZTNkOTFjYmFjNjZhYTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGlj
IGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVpbnQ4X3QgbWF0cml4Q29lZmZpY2ll
bnRzKQogICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbih2YWxpZE1hdHJp
eENvZWZmaWNpZW50cyksIHN0ZDo6ZW5kKHZhbGlkTWF0cml4Q29lZmZpY2llbnRzKSwgbWF0cml4
Q29lZmZpY2llbnRzKTsKIH0KIAotT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+
IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCitzdGQ6Om9wdGlv
bmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3KQogewogICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVjVmlldy5z
cGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2luKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4
IDhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRlNzRlMWQ2NDVjNzIyOGEyMzUuLmI2MTI2NGMwZmYzMjA1
YWVkYTBjYjJlMzY0ZmI2ODNmYTkxMDVhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RydWN0IFZQ
Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHsKICAgICB1aW50OF90IG1hdHJpeENvZWZmaWNpZW50
cyB7IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6QlRfNzA5XzYgfTsKIH07CiAK
LVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJz
ZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNTdHJpbmcpOworV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKTsKIAogc3RydWN0IFNjcmVlbkRhdGFP
dmVycmlkZXMgewogICAgIGRvdWJsZSB3aWR0aCB7IDAgfTsKQEAgLTE0MSwxMCArMTQxLDEwIEBA
IHN0cnVjdCBTY3JlZW5EYXRhT3ZlcnJpZGVzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0
YU92ZXJyaWRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogI2RlZmluZSBERUNP
REUobmFtZSwgdHlwZSkgXAotICAgICAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgICAgICBkZWNvZGVyID4+IG5hbWU7IFwK
ICAgICAgICAgaWYgKCFuYW1lKSBcCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Zp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCmluZGV4IDBhN2Y2NzNjZTJjMTY0MjY3ZGMxMDBk
NWUwMzI4NmNlNTYxZWUzY2UuLmM5YmI1ZjdiY2NlMTNhZDVlOGI0NjNlMjYxZjA2OGFmNWMxNDk1
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxh
eWJhY2tRdWFsaXR5TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCkBAIC00NywyOSArNDcsMjkgQEAgc3Ry
dWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOwogICAgICAgICBk
ZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghdG90YWxWaWRlb0ZyYW1l
cykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IGRyb3BwZWRWaWRlb0ZyYW1lczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gZHJvcHBlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IGRyb3BwZWRWaWRl
b0ZyYW1lczsKICAgICAgICAgaWYgKCFkcm9wcGVkVmlkZW9GcmFtZXMpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3JydXB0
ZWRWaWRlb0ZyYW1lczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY29ycnVwdGVk
VmlkZW9GcmFtZXM7CiAgICAgICAgIGRlY29kZXIgPj4gY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAg
ICAgICAgIGlmICghY29ycnVwdGVkVmlkZW9GcmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5OwogICAgICAgICBk
ZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxheTsKICAgICAgICAgaWYgKCF0b3RhbEZyYW1lRGVsYXkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBkaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJhbWVzOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBkaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNv
ZGVyID4+IGRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghZGlzcGxh
eUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwCmluZGV4IDJjMjM2YjY3ZWNhMGNiMDBjMjMxMWQ2Nzc4N2U2MTQ4YzViYjMxOGUuLmJlZTIz
ZWZmMDlkYjM1ZjJiYmJmNTNjYjg1NzYxYjNmNGQ3ZTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTIsNyArMzky
LDcgQEAgdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUFkZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIEdseXBoSW5kZXhSYW4KIAogdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBs
eUV4dHJhU3BhY2luZ0FmdGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2ln
bmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwg
dW5zaWduZWQgY2hhcmFjdGVyRGVzdGluYXRpb25JbmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0
aCkKIHsKLSAgICBWZWN0b3I8T3B0aW9uYWw8R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5k
ZXhUb0dseXBoSW5kZXhSYW5nZShtX3J1bi5sZW5ndGgoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxHbHlwaEluZGV4UmFuZ2U+PiBjaGFyYWN0ZXJJbmRleFRvR2x5
cGhJbmRleFJhbmdlKG1fcnVuLmxlbmd0aCgpLCBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3Rvcjxm
bG9hdD4gYWR2YW5jZVdpZHRocyhtX3J1bi5sZW5ndGgoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gZ2x5cGhCdWZmZXJTdGFydEluZGV4OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgYXV0byBzdHJpbmdPZmZzZXQgPSBnbHlwaEJ1ZmZlci5jaGVja2VkU3RyaW5n
T2Zmc2V0QXQoaSwgbV9ydW4ubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCmluZGV4IDZhYTEyY2RkZWNjNjRkYWVkYmZmNzFk
ZjJlNWIxN2Y1NDdkMjUxNmUuLmY2MDZmYTIzMjQ5YTZjMTFhZmY5ZjAzOWNiMjY5NjU5N2U2ZWZm
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUZXh0UnVuJiBtX3J1
bjsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiogbV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9
OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OworICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbGFzdENoYXJhY3RlckluZGV4OwogICAgIHVuc2lnbmVk
IG1fY3VycmVudENoYXJhY3RlckluZGV4IHsgMCB9OwogICAgIGZsb2F0IG1fbGVmdG92ZXJKdXN0
aWZpY2F0aW9uV2lkdGggeyAwIH07CiAgICAgZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA2YTZkMjJkODFmYTkyMTk5YzE1
MTI0Mjg5YTc4YmE3NmMwNGE4NTYyLi5mMDViMGU1MDQzNjAyODJkZGRlMjg2YjRhZWQzYjI5Yjgw
NGE0MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKLU9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0
cygpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpKTsKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwcmVwYXJlVGV4dHVyZUltcGwoKQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQor
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRS
ZW5kZXJpbmdSZXN1bHRzKCkKIHsKICAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmlu
ZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJHTDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAg
ICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDRiMmY4MTQ2ZTRlYjNlYzY5YmZmYTcwNWYx
ZjZhOGY3ZTNmYmVkZTYuLjlmYzU3MDNlYzQ1MGVhMjE3NWU5MThlNmUyZjc5Y2MxMTA5YWMwNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMTMzLDgg
KzEzMyw4IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlk
RnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAgU2NoZW1lQW5kS2V5UmVzdWx0
IHJlc3VsdDsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gMDsKLSAgICAgICAgT3B0aW9uYWw8Rm91ckNDPiBzY2hlbWU7Ci0gICAg
ICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4ga2V5SUQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Rm91ckNDPiBzY2hlbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBrZXlJRDsKIAogICAgICAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoYnVm
ZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpLCBvZmZzZXQsIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICAgICAgd2hpbGUgKGF1dG8gb3B0aW9uYWxCb3hUeXBlID0gSVNPQm94OjpwZWVrQm94KHZpZXcs
IG9mZnNldCkpIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0
IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNp
bmYoYnVmZmVyKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlcgog
ICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1Nr
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2No
ZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCiAgICAgVmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+PiBrZXlJRHM7CkBAIC00MjgsNyArNDI4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEIKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lvbklkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuaAppbmRleCAyMGQ0OWY3YjAxY2U1NDMyYzJmOTgzZjVlNWI2NmNhZGM1
ZWUyMzQ5Li4xNDk3NDM5MGY0MGIwM2EwY2I2ZTU1OWM5ZTZjMGZlMDk4YTA0MTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzMsMTQgKzczLDE0IEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5h
bWUoKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBkODFiY2EzNTQ5
MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAxYjE1Li4xYjc2M2RkODRhMzhkNzVhYTc1NDRlNDQ5
OTQ3ZmI2Y2ZkYjExZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBp
bnQgdmVyc2lvbjsKICAgICAgICAgVmVjdG9yPGludD4gcHJvdG9jb2xzOwogICAgIH07Ci0gICAg
c3RhdGljIE9wdGlvbmFsPEtleVN5c3RlbVBhcmFtZXRlcnM+IHBhcnNlS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxLZXlTeXN0ZW1Q
YXJhbWV0ZXJzPiBwYXJzZUtleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAg
CiAgICAgTGVnYWN5Q0RNKiBtX2NkbTsKICAgICBWZWN0b3I8Q0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQyo+IG1fc2Vzc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDE1MzE2OTFmMzc4MWUxZmZlYzA4ZGZkNzQ3YzE3
ZmU2MGJlNGFmNmYuLjg2MDI1ZjJhN2IxODU3OGQ0N2M4MDg5NTE1ZDMxY2FkOWUxYzYxZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb247CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYXV0byBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpwYXJzZUtleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkgLT4gT3B0aW9uYWw8S2V5
U3lzdGVtUGFyYW1ldGVycz4KK2F1dG8gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFy
c2VLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pIC0+IHN0ZDo6b3B0aW9uYWw8S2V5
U3lzdGVtUGFyYW1ldGVycz4KIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4
cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29tXFwuYXBwbGVcXC5mcHNcXC5bMjNdX1xcZCsoPzos
XFxkKykqJCIsIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCAxNDdjMzc5ZjEy
NzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkLi40ZGFkZDdkMjFlNzFlNGYyOTI5NTQwYTYz
NDFiODRjZTEyNWU1ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveC5oCkBAIC05MywxNyArOTMsMTcgQEAgcHVibGljOgogICAgIHN0YXRpYyBG
b3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIAogICAgIGNvbnN0IElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3gmIHJlcXVlc3RJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0SW5mbzsgfQotICAgIGNvbnN0IE9wdGlvbmFsPElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5QXNzZXRJZEJveD4mIGFzc2V0SUQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2V0SUQ7
IH0KLSAgICBjb25zdCBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3g+
JiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0gICAgY29uc3QgT3B0aW9u
YWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94PiYgYXNzZXRJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXNzZXRJRDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlDb250ZXh0Qm94PiYgY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsg
fQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9u
TGlzdEJveD4mIHZlcnNpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQog
CiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZz
ZXQpIG92ZXJyaWRlOwogCiAgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0Jv
eCBtX3JlcXVlc3RJbmZvOwotICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNz
ZXRJZEJveD4gbV9hc3NldElEOwotICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
Q29udGV4dEJveD4gbV9jb250ZXh0OwotICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVyc2lvbkxpc3Q7CisgICAgc3RkOjpvcHRpb25hbDxJU09G
YWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3g+IG1fYXNzZXRJRDsKKyAgICBzdGQ6Om9wdGlv
bmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveD4gbV9jb250ZXh0OworICAgIHN0
ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJz
aW9uTGlzdDsKIH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5n
SW5pdERhdGFCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBjOTc5ZWI1NzI3ZGJjMzk2MTcy
NWIwNTdjN2IxYTJhMmYzZmFjYmE4Li4xZTYyY2NmN2E1YTM3YTM5NWU1M2YyMzNlNjY5NWMyNzM0
NDg2YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGKCkKICAgICBkaXNjb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KENG
QXJyYXlSZWYgY29sb3JBcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJlZiBjb2xvckFycmF5KQog
ewogICAgIGlmIChDRkFycmF5R2V0Q291bnQoY29sb3JBcnJheSkgPCA0KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggYjFhYTVkZmU1YWE4
ZDQ4NjdkNzUyYjRmNGE1YWM4ZjNjNWI3Y2I3YS4uYmM2NTg3ZTJjODk2NGY3MWU1ZjRhNjUzYjBi
YmNiMmQ1NjU0MzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xOTAsMTEgKzE5MCwx
MSBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29s
IGlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwogCi0gICAgS2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c2VzKE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7CisgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzKHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2b2lk
IG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3Qo
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPENETUtleVN0YXR1cz4gcHJvdGVjdGlvblN0YXR1c0Zv
ckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0ICosIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxh
eUlEPikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IHByb3RlY3Rpb25T
dGF0dXNGb3JEaXNwbGF5SUQoQVZDb250ZW50S2V5UmVxdWVzdCAqLCBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtRGlzcGxheUlEPikgY29uc3Q7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7
IH07CkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM+IG1faW5zdGFuY2U7CiAgICAgUmV0YWluUHRyPEFWQ29udGVu
dEtleVJlcG9ydEdyb3VwPiBtX2dyb3VwOwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNz
aW9uPiBtX3Nlc3Npb247Ci0gICAgT3B0aW9uYWw8UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgUmV0YWlu
UHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAg
IFZlY3RvcjxSZXRhaW5QdHI8TlNEYXRhPj4gbV9leHBpcmVkU2Vzc2lvbnM7CiAgICAgV2Vha1B0
cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbQppbmRleCA4NzhmNzIyNTg4MTg4Mzc3NzlmNGNmYjQ3MDk0YTc5ODE2YzgwZjMwLi42Yjli
ZjIxMGE3MTkyMjc3ZTgxOTRlOTA0ZDk1YWNlOGRmZTYxMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQpAQCAtMjg2LDcgKzI4Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlUeXBlID0g
UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+OwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFJl
dGFpblB0cjxOU0RhdGE+OwogICAgIHVzaW5nIFJlc3BvbnNlTWFwID0gSGFzaE1hcDxLZXlUeXBl
LCBWYWx1ZVR5cGU+OwotICAgIHVzaW5nIFVwZGF0ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKE9wdGlvbmFsPFJlc3BvbnNlTWFwPiYmKT47CisgICAgdXNpbmcgVXBkYXRlQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxSZXNwb25zZU1hcD4mJik+OwogICAg
IFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yKHNpemVfdCBudW1iZXJPZkV4cGVjdGVkUmVzcG9uc2Vz
LCBVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICA6IG1fbnVtYmVyT2ZFeHBlY3Rl
ZFJlc3BvbnNlcyhudW1iZXJPZkV4cGVjdGVkUmVzcG9uc2VzKQogICAgICAgICAsIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGkKICAgICAgICAgICAgIG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IgPSBudWxscHRy
OwogICAgICAgICB9CiAKLSAgICAgICAgbV91cGRhdGVSZXNwb25zZUNvbGxlY3RvciA9IFdURjo6
bWFrZVVuaXF1ZTxVcGRhdGVSZXNwb25zZUNvbGxlY3Rvcj4obV9jdXJyZW50UmVxdWVzdC52YWx1
ZSgpLnJlcXVlc3RzLnNpemUoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlz
XSAoT3B0aW9uYWw8VXBkYXRlUmVzcG9uc2VDb2xsZWN0b3I6OlJlc3BvbnNlTWFwPiYmIHJlc3Bv
bnNlcykgeworICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0gV1RGOjptYWtlVW5p
cXVlPFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yPihtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVx
dWVzdHMuc2l6ZSgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChzdGQ6
Om9wdGlvbmFsPFVwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yOjpSZXNwb25zZU1hcD4mJiByZXNwb25z
ZXMpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xNDE0LDcgKzE0MTQsNyBAQCBzdGF0aWMgYXV0byByZXF1ZXN0U3RhdHVzVG9DRE1T
dGF0dXMoQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiAgICAgfQogfQogCi1DRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlE
PiBkaXNwbGF5SUQpIGNvbnN0CitDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzKHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IGRpc3BsYXlJRCkgY29uc3QKIHsKICAgICBL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CiAKQEAgLTE0NjAsNyArMTQ2MCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3Rl
Y3Rpb25TdGF0dXNEaWRDaGFuCiAgICAgdXBkYXRlUHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJ
RChtX2NsaWVudC0+ZGlzcGxheUlEKCkpOwogfQogCi1PcHRpb25hbDxDRE1LZXlTdGF0dXM+IENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1
c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBPcHRpb25hbDxQbGF0
Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlEKSBjb25zdAorc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0
dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlv
blN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBzdGQ6Om9w
dGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5SUQpIGNvbnN0CiB7CiAjaWYgSEFWRShB
VkNPTlRFTlRLRVlSRVFVRVNUX1BFTkRJTkdfUFJPVEVDVElPTl9TVEFUVVMpCiAgICAgaWYgKFty
ZXF1ZXN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXh0ZXJuYWxDb250ZW50UHJvdGVj
dGlvblN0YXR1cyldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKaW5kZXggNTgzNjJkYmQyY2MwN2QwMWRkZWE2ZTg5MzJkZDQ4ZjcxOGYyOGE5NS4uYTI4
ZDRjNDMwMWU2NzI1MDkyOThmNTNjZTdjN2QyOTRjZjE3OTM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAg
IFN0cmluZyB1dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBTdHJp
bmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU3RyaW5n
KCk7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIERlY29kZU9yZGVyU2FtcGxlTWFwOjppdGVyYXRvciBt
X2N1cnNvcjsKICAgICBMb2NrIG1fc2FtcGxlR2VuZXJhdG9yTG9jazsKICAgICBib29sIG1faXNB
bGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGI0MTJkNWRiZGM1NWU2
ODJlM2YwMmNlOTU5N2NkMDgzM2RiNGU0NjkuLjMwZWVhYWEzNTc0ZDVjZjU3NTMyNTY5NmE1YWRl
OTg2ZDg5YmZjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9oYXNBbHBoYSA9
IGFscGhhSW5mbyAhPSBrQ0dJbWFnZUFscGhhTm9uZSAmJiBhbHBoYUluZm8gIT0ga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdCAmJiBhbHBoYUluZm8gIT0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmly
c3Q7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBm
aW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5h
bAogICAgIHsKICAgICAgICAgaWYgKFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKG1f
c2FtcGxlLmdldCgpKQogICAgICAgICAgICAgfHwgUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdl
QnVmZmVyKG1fc2FtcGxlLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDc1ZmRjNmFh
YzZhYjM1Y2U2NGI4Mjc4Y2I1MDBiM2RhNjAzNTMyNTguLmM0MjQ4YzlkYjU0ODc4ZmYwODRjYzM5
YTM1YjMwMmZhMmFmYjkzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTIyNCw3ICsyMjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKSBmaW5hbDsK
IAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9w
dGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25z
dCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKIAogICAgIE1lZGlhVGltZSBnZXRTdGFydERh
dGUoKSBjb25zdCBmaW5hbDsKIApAQCAtMzA3LDcgKzMwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVSb3Rh
dGlvblNlc3Npb24oKTsKIAotICAgIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25h
bDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMiOyB9CkBAIC0zOTcsNyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICBNZWRp
YVRpbWUgbV9jYWNoZWREdXJhdGlvbjsKICAgICBtdXRhYmxlIE1lZGlhUGxheWVyOjpDdXJyZW50
VGltZURpZENoYW5nZUNhbGxiYWNrIG1fY3VycmVudFRpbWVEaWRDaGFuZ2VDYWxsYmFjazsKICAg
ICBtdXRhYmxlIE1lZGlhVGltZSBtX2NhY2hlZEN1cnJlbnRNZWRpYVRpbWU7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJl
bnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJl
bnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVk
Q3VycmVudFRpbWUgeyAwIH07CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKQEAg
LTQxOCwxMCArNDE4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhY2hlZENhblBsYXlGYXN0
Rm9yd2FyZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2NhY2hlZENhblBsYXlGYXN0UmV2ZXJzZSB7
IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkQXNzZXRJc0xvYWRlZCB7IGZhbHNl
IH07Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2NhY2hlZEFzc2V0SXNQbGF5YWJsZTsK
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYWNoZWRBc3NldElzUGxheWFibGU7
CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkT2JzZXJ2ZVRp
bWVDb250cm9sU3RhdHVzIHsgZmFsc2UgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1f
dHJhY2tzQXJlUGxheWFibGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdHJh
Y2tzQXJlUGxheWFibGU7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICBtdXRhYmxlIGJvb2wgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2sgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDc4N2NhNDVlMzZhYzQxMjVmMjI1ZjUzNGQxNzIzZTU1YThmMDhi
MzAuLjkyMWNhZTg4Yjg0NzlhNmUwYjNhNWU5Y2NhOGIyNzExZmFiMDNlYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMjM1Miw3ICsyMzUyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBj
b25zdAogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VMb2FkZXIgPSBtX2F2
QXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXI7CiAgICAgaWYgKCFEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OmlzQVZGb3VuZGF0aW9uTlNVUkxTZXNzaW9uRW5hYmxlZCgpCkBAIC0zNDE4LDcgKzM0
MTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFNob3Vs
ZERpc2FibGVTbGVlcChib29sIGZsYWcpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgaWYgKCFbbV92aWRlb0xheWVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MpXSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMmU4
YjY4NTQ0M2UwNjM3YzU4NDYyYjM3YmRhYjYyZGFjZGE4MzE4Ny4uOTAwMTUxNjk5ZGE4MDcwZmU3
N2JlNzE0N2M0ZjU4N2JiZTdhYzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI0
Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
PiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzKCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQog
ICAgIGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDdkYTVkMzhkOTJmYzc4ZmFjMGU1Yjlh
ZWI3YzgyZjBlYWQ0MjUxY2EuLjVhNjlhYTY3OTUxODljYjRlMDc2ZDMxOTQ2OWY5OTY1MDRmZjk0
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTcyNCw3ICs3MjQsNyBAQCBzaXpl
X3QgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpleHRyYU1lbW9yeUNvc3Qo
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcygpCiB7CiAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Npb24pIHsK
ICAgICAgICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCmluZGV4IGE0ZWFlM2MzYjZmZjRhMGI0OGVmMzA4ZTk5MDU4MTZjODFiYmQw
N2IuLjIyYTZhZWE4YjE2NGZhMGYxNjZlZWE1ODZkZDE4MjZiOGEyZTQ1MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBt
X3ZvbHVtZSB7IDEgfTsKICAgICBEaXNwbGF5TW9kZSBtX2Rpc3BsYXlNb2RlIHsgTm9uZSB9Owog
ICAgIFBsYXliYWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9
OwotICAgIE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOworICAg
IHN0ZDo6b3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IG1fdmlkZW9UcmFuc2Zvcm07CiAKICAg
ICAvLyBVc2VkIG9uIGJvdGggbWFpbiB0aHJlYWQgYW5kIHNhbXBsZSB0aHJlYWQuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmlu
ZGV4IGU2NDI2N2IxOTQyZjJhNTg1OWFmMWE3YTEzZWRkNWY2NDY2YjUxMDEuLmQwM2NkYzhkZDYy
NTQxNjA5OWE1MzcxMzVlZTExZWM5MTA3MzZhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIFNh
bXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAg
IHsKICAgICB9CiAKLSAgICBPcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBieXRlUmFu
Z2VGb3JBdHRhY2htZW50KENGU3RyaW5nUmVmIGtleSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3RyaW5n
UmVmIGtleSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSA9IGRl
ZmF1bHQ7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCA3ZDZkNTBhNWNm
ZWFjNWVhNzlkNzA4NTNjMDZiMGQyYWRkNDg5NzcyLi4xY2E4ZWZlZWQwYmY4NDM5ZDczZTY0NDc1
YTI5OTM1YWE0YWMwMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVB
VkZPYmpDLm1tCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGJ5dGVSYW5n
ZU9mZnNldEF0dGFjaG1lbnRLZXkoKQogICAgIHJldHVybiBrZXk7CiB9CiAKLU9wdGlvbmFsPE1l
ZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1wbGVBVkZP
YmpDOjpieXRlUmFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBieXRlUmFuZ2VGb3JBdHRhY2ht
ZW50KGJ5dGVSYW5nZU9mZnNldEF0dGFjaG1lbnRLZXkoKSk7CiB9CkBAIC00NzYsNyArNDc2LDcg
QEAgdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldEJ5dGVSYW5nZU9mZnNldChzaXplX3QgYnl0
ZU9mZnNldCkKICAgICBQQUw6OkNNU2V0QXR0YWNobWVudChtX3NhbXBsZS5nZXQoKSwgYnl0ZVJh
bmdlT2Zmc2V0QXR0YWNobWVudEtleSgpLCBvZmZzZXROdW1iZXIuZ2V0KCksIGtDTUF0dGFjaG1l
bnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7CiB9CiAKLU9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRl
UmFuZ2U+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudChDRlN0cmlu
Z1JlZiBrZXkpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFuZ2U+IE1l
ZGlhU2FtcGxlQVZGT2JqQzo6Ynl0ZVJhbmdlRm9yQXR0YWNobWVudChDRlN0cmluZ1JlZiBrZXkp
IGNvbnN0CiB7CiAgICAgYXV0byBieXRlT2Zmc2V0Q0YgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1i
ZXJSZWY+KFBBTDo6Q01HZXRBdHRhY2htZW50KG1fc2FtcGxlLmdldCgpLCBrZXksIG51bGxwdHIp
KTsKICAgICBpZiAoIWJ5dGVPZmZzZXRDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDQyZDFlMWQzODFlM2U2OTcwZjg3
MTNiZTc5OWRhNmRjZjcwNWMwYzkuLmMyNmZmY2I4MzExMWVkMDZhZGM5Mjk0ZTZlZmM3MmJlMjQ0
NWU3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
Rm91ckNoYXJDb2RlIG1fb3JpZ2luYWxDb2RlYzsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEF0b21T
dHJpbmc+IG1fY29kZWM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IG1f
Y29kZWM7CiAgICAgYm9vbCBtX2lzVmlkZW87CiAgICAgYm9vbCBtX2lzQXVkaW87CiAgICAgYm9v
bCBtX2lzVGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oCmluZGV4IDg4NGIwYjI2MzZmNmY0ODQ2MjM2NmQ5MWNlMjQ5NmMxYmI0
OTk5YzQuLjdkZTVhY2I5ODY5ZGM4OThjMDJiMTRiYmZkNjBhYjE5ZDc3MDJlOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApA
QCAtMjIwLDcgKzIyMCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBtX2tleUlEczsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNp
emU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9h
dFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZCB7IHRydWUg
fTsKICAgICBib29sIG1fd2FpdGluZ0ZvcktleSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZDAy
ODYzZjJlN2FjYTRiZjdmNGY0NjJkYWVhYjBiMjUyOWE0MWVhYS4uYjJkZDVkZjRmNzhhMzdhZjhi
Yzk5YWFlNWUxNjk3MjRhOThhMTgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBw
cml2YXRlOgogICAgICAgICB7IH0KIAogICAgICAgICBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcobV9uYW1lLCAnXycsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3Byb3BlcnR5KSwgJ18nLCBtX2luZGV4LCAnXycsIG1fc3ViSW5kZXgpOyB9Ci0g
ICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IGNvbXB1dGVkQmVnaW5UaW1lKCkgY29uc3QKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBjb21wdXRlZEJlZ2luVGltZSgpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX2JlZ2luVGltZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gKm1fYmVnaW5UaW1lIC0gbV90aW1lT2Zmc2V0OwpAQCAtNTAwLDcgKzUwMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGludCBtX2luZGV4OwogICAgICAgICBpbnQgbV9zdWJJbmRleDsKICAgICAg
ICAgU2Vjb25kcyBtX3RpbWVPZmZzZXQgeyAwX3MgfTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gbV9iZWdpblRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9iZWdpblRp
bWU7CiAgICAgICAgIFBsYXlTdGF0ZSBtX3BsYXlTdGF0ZSB7IFBsYXlTdGF0ZTo6UGxheVBlbmRp
bmcgfTsKICAgICAgICAgYm9vbCBtX3BlbmRpbmdSZW1vdmFsIHsgZmFsc2UgfTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwCmluZGV4IDRmYmFhN2ZiZGFhMTQ3NDQ2M2MzZTg4ZDZmZGM4NWFmNTNlNWMxMTYu
LjliOWUyMGYyZmIzODMyY2FiMjAxNTZkMTBjZGRlNzM3NTY4OGM1ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRWaXNpYmxlUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiB9CiAK
LXZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldExheW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3QpCit2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3Qo
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlv
dXRWaWV3cG9ydFJlY3QpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IDY4ODcwOTNlM2Mz
MTA5NTA3YjMxOWU0MWMxYThkMzk0ZGNhZmVhMDYuLmM0OWNjZjk4YTRhMzU5Mjk0NzdkOWVmNzQx
NGY3ZmIzZmY5Y2JkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKICAg
ICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Zpc2libGVS
ZWN0OyB9CiAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY292ZXJhZ2VSZWN0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9y
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0UmVjdDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2xheW91dFZpZXdwb3J0UmVjdDsgfQogCiAgICAgdm9pZCBzZXRUaWxlU2l6ZVVwZGF0ZURlbGF5
RGlzYWJsZWRGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOwogCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFRpbGVkQmFja2luZyBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZvaWQg
c2V0VmlzaWJsZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzZXRMYXlv
dXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PikgZmluYWw7CisgICAgdm9pZCBzZXRM
YXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSBmaW5hbDsKICAgICB2
b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIHRp
bGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBzZXRUaWxlZFNjcm9sbGluZ0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmKSBmaW5hbDsKQEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPiBtX2hpc3RvcmljYWxWZWxvY2l0eURh
dGE7IC8vIFVzZWQgd2hlbiB3ZSB0cmFjayB2ZWxvY2l0eSBpbnRlcm5hbGx5LgogCiAgICAgRmxv
YXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkgdXNlZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNl
IGxvZ2dpbmcuCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xheW91dFZpZXdwb3J0UmVjdDsg
Ly8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5kaWNhdG9yLgorICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xheW91dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5
IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5kaWNhdG9yLgogICAgIEZsb2F0UmVjdCBtX2NvdmVyYWdl
UmVjdDsKICAgICBJbnRSZWN0IG1fYm91bmRzQXRMYXN0UmV2YWxpZGF0ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGQyYzg5ZTRhYTk0Y2RlYzBjMzFjN2I5MzNm
NjMzOWFlYTU4NTI5ODguLmUwZTlhYTdkMDM3NTY5ZWVmYzQxODJhNzBjNjZlN2NkZGZiYzA1YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJgogICAgIH0KIH0KIAotU3RyaW5nIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxp
dHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgpKQpAQCAtMTM1LDcgKzEzNSw3IEBA
IFN0cmluZyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6Iiwg
bWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwg
ZW5jb2RlZEltYWdlLnNpemUoKSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKICAgICBjYWlyb19zdXJmYWNl
X3QqIGltYWdlID0gY2Fpcm9fZ2V0X3RhcmdldChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkt
PmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKaW5kZXggN2I3MDc5ZTg4YWZj
NmFlYzE1OTJiZGM2YmFjZjE3YzJmYjJmNTI5ZS4uMjRiM2M0ZGM1NmZjZTcxMTZiYjg0MzkxYWIz
MTAzNjM4YTM1NjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCkBAIC00Niw4
ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIHRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2Vu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDliNWMwYWQwNzQ0NTE4ODBkZWZkZDNjNDg5MmU0ZjczYzI4NjQyYzkuLmFkNzE2YjhjNjNiMmFj
MDRhOWIzMjBlMDIwY2Y1YTY1YzEzZGQ5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VU
b0ltYWdlKCkKICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiB9CiAK
LU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6Omdl
dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9y
bWF0LCBzcmNSZWN0LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQo
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRl
eCAwMzcwNzg3YjY5OTljZmRlMDZhZTBmYTFjZDA2NjYxMzkxNTcyMzljLi4wNjQyMjk3MDM2NzYw
ZTU5MjQ0NjdjOWY5OGRiM2YxMDUzOTAxNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBv
dmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXIm
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlclV0aWxpdGllc0NhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCmluZGV4IDVhNGQzYTUwODU5YTVl
ODQ0YzdmNDI0MTMwNjkxNzE0ODAyYjAxYzcuLjRkYjYwM2E5NGYzYWYxYjFiY2U5NGFiMGYxYWUz
NjA1NGMwMDRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCog
aW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFZlY3Rvcjx1CiAgICAgcmV0dXJuIGNhaXJv
X3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0
KSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUzsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPikKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGlt
YWdlLCBtaW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCkBAIC03Myw3ICs3Myw3IEBAIFZlY3Rvcjx1
aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvCiAgICAgcmV0dXJuIGVuY29kZWRJbWFnZTsKIH0KICNlbHNlCi1zdGF0
aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hh
cj4mIGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6
ZSYgYnVmZmVyU2l6ZSkKIHsKICAgICAvLyBMaXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBlbmNvZGlu
ZyB0eXBlcyBjb21lcyBmcm9tIHRoZSBHZGtQaXhidWYgZG9jdW1lbnRhdGlvbi4KICAgICAvLyBo
dHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nZGstcGl4YnVmL3N0YWJsZS9nZGstcGl4YnVmLUZp
bGUtc2F2aW5nLmh0bWwjZ2RrLXBpeGJ1Zi1zYXZlLXRvLWJ1ZmZlcnYKQEAgLTExNiw3ICsxMTYs
NyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbgogICAgIHJldHVybiAhZXJyb3I7CiB9CiAKLVZl
Y3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRh
KGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGJ1ZmZl
cjsKICAgICBnc2l6ZSBidWZmZXJTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWly
by5oCmluZGV4IDAwNzRjODMwZWI5YzI3NjU1MDBiNmNjNTM2M2YxOWU3YWIwMDUwNmYuLjA1YzNj
YTIxODk1OWJkNjIwYjU2MWQyMjJlOTA0ZmNmYzY5ODdjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NhaXJvLmgKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1WZWN0b3I8dWludDhfdD4gZGF0YShjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggNTFlMGE4
YzBlNjRjMzE0YWVhNmYyNWRlNGEyOTE0YzlkMTUxNzliNy4uZGFiYzdlNzczNDAwNTUwNDUxZjI3
MDRlMTFjODE4ZmNjNmQyYzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JS
ZWY+PjoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWlu
dDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5
KENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVk
cyB0byBoYW5kbGUgY29sb3Igc3BhY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXgg
YmIwNTYzN2FlZjVjYjVhOTVmYmY4ZjdjNDBlN2I2M2YwMjIxMWQ2Ni4uYzEyYjJmODBjMGIzMjI4
Yzg2MTVmM2I4ODdhYTFlOGVmYTA1YTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAt
MjEzLDcgKzIxMyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2Vu
ZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGluZyhDRlN0cmluZ1JlZiBkCiAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogfQogCi1WZWN0
b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitWZWN0b3I8dWludDhfdD4g
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgQVNTRVJUX0lNUExJRVMoIWlzSW5HUFVQcm9jZXNzKCksIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CkBAIC0y
MjcsNyArMjI3LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0Rh
dGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG8KICAgICByZXR1cm4gV2ViQ29y
ZTo6ZGF0YShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHkpOwogfQog
Ci1TdHJpbmcgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0
YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgQVNTRVJUX0lNUExJRVMoIWlzSW5HUFVQcm9jZXNzKCks
IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1p
bWVUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAppbmRleCBjMjQ1ZTk0ZmFjMTEzZDVhZTk4NmZj
Y2JhNzNhN2Y3OWUwZTgzYmRjLi4wNzY5OWQ3NzAxMmRjODkwNTkwYzVjOGYxZTdiNDU4ZjdkMjhk
ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24p
IGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAg
IFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDY4NjVmMGJkNDFi
YjQ4NDYwZGJhMWY0ZjZiYTU4MDc4NGNjYWVlNjEuLjUwMDk3NzJkMGIyODU0OWU4NDllODY3ZmQw
MTNjZDVjZGZlYWQ4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QK
IHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihvdXRwdXRG
b3JtYXQsIHNyY1JlY3QsIG1fZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aAppbmRleCAwODk3M2YzODE4OWFlNmI2MGY4MjgwZDAwMzI1ZGJiNDgwYmFlMmY0Li5jODkwZTlm
ZThmMmU4NjRmNTBiNjg4OWM5ZWI0ZjBmNTg3MmJiOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCAwYzcwNmQxODMzOTVk
OTU5NjhmYmZiZmM2Yzk3NDA5ZmQ1Yjg5MjIzLi4wN2EyMDJhMWUzNDg1ZTdiYTUyMDQyN2YwYmYy
YjRiZmYyZjFlNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTE3Niw3ICsxNzYsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVuY29kaW5nKENGU3RyaQogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGluZyhkZXN0aW5hdGlvblVUSSwg
cHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCkgY29uc3QKIHsKICAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2NrKCptX3N1cmZh
Y2UpOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKG91dHB1
dEZvcm1hdCwgc3JjUmVjdCwgbG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVlOWRlZmMyMDg0NzVmYmZiOGU1MWJiN2FmYTQ3
MmU4NjY3Zjg1M2MuLjgzYWVjOGNkOTI2ZGM1NWYxZDY4MjliYjUxMzI4NjNhNTIxMTA3YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNJblVzZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGll
c0NHLmNwcAppbmRleCAxMmIzZTQ2NTFmNDY4MTc5ZDFhNjY2M2UzYjkwNTBlMDA5NTg0NjVjLi4y
NzhiNzQwZTQ0NDIzMjkxNmFhYmU4NjI1NjA2YWUzZDM4YzVjNjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmNwcApAQCAtOTYsNyArOTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLXN0YXRp
YyBib29sIGVuY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVU
SSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBjb25zdCBTY29wZWRMYW1iZGE8UHV0Qnl0ZXND
YWxsYmFjaz4mIGZ1bmN0aW9uKQorc3RhdGljIGJvb2wgZW5jb2RlKENHSW1hZ2VSZWYgaW1hZ2Us
IENGU3RyaW5nUmVmIGRlc3RpbmF0aW9uVVRJLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKIHsKICAg
ICBpZiAoIWltYWdlIHx8ICFkZXN0aW5hdGlvblVUSSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIGVuY29kZShDR0ltYWdlUmVmIGltYWdlLCBD
RlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwgT3B0aW9uYWw8ZG91YmxlCiAgICAgcmV0dXJuIENH
SW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIH0KIAotc3RhdGlj
IGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5
dGVzQ2FsbGJhY2s+JiBmdW5jdGlvbikKK3N0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1
ZmZlciYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgY29uc3QgU2NvcGVkTGFtYmRhPFB1dEJ5dGVzQ2FsbGJhY2s+JiBmdW5jdGlv
bikKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBi
b29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkCiAgICAgcmV0dXJuIGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRp
b25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1bmN0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
U291cmNlLCB0eXBlbmFtZSBTb3VyY2VEZXNjcmlwdGlvbj4gc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGVUb1ZlY3RvcihTb3VyY2UmJiBzb3VyY2UsIFNvdXJjZURlc2NyaXB0aW9uJiYgc291
cmNlRGVzY3JpcHRpb24sIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK3RlbXBsYXRlPHR5cGVu
YW1lIFNvdXJjZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+IHN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gZW5jb2RlVG9WZWN0b3IoU291cmNlJiYgc291cmNlLCBTb3VyY2VEZXNjcmlwdGlvbiYm
IHNvdXJjZURlc2NyaXB0aW9uLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTb3VyY2VEZXNjcmlwdGlvbj4gc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBlbmMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBTb3VyY2UsIHR5cGVuYW1lIFNvdXJjZURlc2NyaXB0aW9uPiBzdGF0aWMgU3RyaW5nIGVuY29k
ZVRvRGF0YVVSTChTb3VyY2UmJiBzb3VyY2UsIFNvdXJjZURlc2NyaXB0aW9uJiYgc291cmNlRGVz
Y3JpcHRpb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkKK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU291cmNlRGVzY3JpcHRpb24+
IHN0YXRpYyBTdHJpbmcgZW5jb2RlVG9EYXRhVVJMKFNvdXJjZSYmIHNvdXJjZSwgU291cmNlRGVz
Y3JpcHRpb24mJiBzb3VyY2VEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQg
YmUgZG9uZSBtb3JlIGVmZmljaWVudGx5IHdpdGggYSBzdHJlYW1pbmcgYmFzZTY0IGVuY29kZXIu
CiAKQEAgLTIwNywyMiArMjA3LDIyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5h
bWUgU291cmNlRGVzY3JpcHRpb24+IHN0YXRpYyBTdHJpbmcgZW5jb2RlVG9EYXRhCiAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29k
ZWQoZW5jb2RlZERhdGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoQ0dJbWFnZVJlZiBp
bWFnZSwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIGRl
c3RpbmF0aW9uVVRJLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICByZXR1
cm4gZW5jb2RlVG9WZWN0b3IoaW1hZ2UsIGRlc3RpbmF0aW9uVVRJLCBxdWFsaXR5KTsKIH0KIAot
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitWZWN0b3I8dWlu
dDhfdD4gZGF0YShjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAgIHJldHVybiBl
bmNvZGVUb1ZlY3RvcihwaXhlbEJ1ZmZlciwgbWltZVR5cGUsIHF1YWxpdHkpOwogfQogCi1TdHJp
bmcgZGF0YVVSTChDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlvblVUSSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorU3RyaW5n
IGRhdGFVUkwoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewog
ICAgIHJldHVybiBlbmNvZGVUb0RhdGFVUkwoaW1hZ2UsIGRlc3RpbmF0aW9uVVRJLCBtaW1lVHlw
ZSwgcXVhbGl0eSk7CiB9CiAKLVN0cmluZyBkYXRhVVJMKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhl
bEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KQorU3RyaW5nIGRhdGFVUkwoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBy
ZXR1cm4gZW5jb2RlVG9EYXRhVVJMKHBpeGVsQnVmZmVyLCBtaW1lVHlwZSwgbWltZVR5cGUsIHF1
YWxpdHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oCmluZGV4IDk5ODMxMTc5NTUzNzExN2Y4
YzQ3NmFkYjNlMmUwZjAwN2M2OWI2MDkuLmViMWRiMjhhOTNmYzlkNDJlMjcxNmFkOTVhMmU1MmZl
OTI0MTA0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgKQEAgLTM4LDExICszOCwxMSBAQCBX
RUJDT1JFX0VYUE9SVCB1aW50OF90IHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29uc3Qg
dm9pZCogYnVmZmVyLCBzaXplX3QgYgogQ0ZTdHJpbmdSZWYganBlZ1VUSSgpOwogUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsK
IAotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoQ0dJbWFnZVJlZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRp
b25VVEksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7Ci1WZWN0b3I8dWludDhfdD4gZGF0YShj
b25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSk7CitWZWN0b3I8dWludDhfdD4gZGF0YShDR0ltYWdlUmVmLCBDRlN0cmluZ1Jl
ZiBkZXN0aW5hdGlvblVUSSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CiAKLVN0cmluZyBkYXRhVVJMKENHSW1h
Z2VSZWYsIENGU3RyaW5nUmVmIGRlc3RpbmF0aW9uVVRJLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwotU3RyaW5nIGRhdGFVUkwoY29uc3QgUGl4ZWxC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
OworU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJlZiwgQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEks
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KTsK
K1N0cmluZyBkYXRhVVJMKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAppbmRleCA2NWM3YTgyZDQ0ZGU4ZTA0NWI3YmQ4MGRmZjMwZDBiMWNk
OWRjNGMwLi5iOGFlMmY3ZmM0Yjc1MjQ0MzdlYTYzZmFkNGRmOGE0N2ZjM2JmOGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIGJvb2wgbWF5SGF2ZURlbnNpdHlDb3Jy
ZWN0ZWRTaXplKENGRGljdGlvbmFyeVJlZiBpbWFnZVByb3BlcnRpZXMpCiAgICAgICAgICYmIChy
ZXNvbHV0aW9uWCAhPSBJbWFnZVJlc29sdXRpb246OkRlZmF1bHRSZXNvbHV0aW9uIHx8IHJlc29s
dXRpb25ZICE9IEltYWdlUmVzb2x1dGlvbjo6RGVmYXVsdFJlc29sdXRpb24pOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhD
RkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0aWVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50
U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYg
aW1hZ2VQcm9wZXJ0aWVzKQogewogICAgIEFTU0VSVChpbWFnZVByb3BlcnRpZXMpOwogICAgIGF1
dG8gZXhpZkRpY3Rpb25hcnkgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUV4aWZEaWN0aW9uYXJ5KTsKQEAgLTM4
Nyw3ICszODcsNyBAQCBSZXBldGl0aW9uQ291bnQgSW1hZ2VEZWNvZGVyQ0c6OnJlcGV0aXRpb25D
b3VudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rl
ckNHOjpob3RTcG90KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rl
ckNHOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAw
LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKQEAg
LTUzMCw3ICs1MzAsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgICAgICAKICAgICAg
ICAgaWYgKGRlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgICAg
ICAvLyBTZWUgd2hpY2ggc2l6ZSBpcyBzbWFsbGVyOiB0aGUgaW1hZ2UgbmF0aXZlIHNpemUgb3Ig
dGhlIHNpemVGb3JEcmF3aW5nLgotICAgICAgICAgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZUZv
ckRyYXdpbmcgPSBkZWNvZGluZ09wdGlvbnMuc2l6ZUZvckRyYXdpbmcoKTsKKyAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc2l6ZUZvckRyYXdpbmcgPSBkZWNvZGluZ09wdGlvbnMu
c2l6ZUZvckRyYXdpbmcoKTsKICAgICAgICAgICAgIGlmIChzaXplRm9yRHJhd2luZy52YWx1ZSgp
LnVuY2xhbXBlZEFyZWEoKSA8IHNpemUudW5jbGFtcGVkQXJlYSgpKQogICAgICAgICAgICAgICAg
IHNpemUgPSBzaXplRm9yRHJhd2luZy52YWx1ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA4
MTQ5MGQ4OWRjOTc1OGY4MzI5MDY5MTA2NzkzN2FkMWRlNTI3NmYwLi45NzQwNzM2YTIxYWM5OThh
YjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyB1dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmlu
YWw7CiAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFj
a1ByaXZhdGVXZWJNLmNwcAppbmRleCBhOTc3MTYzYTA5MzAzZGMxYTU3ZmVhMGIwZDRhMzg4YjMy
MzIwOTdlLi5kZGRjYWNhN2ZlOTAwOTkwYjg4NGM1MTRlYzAyODE3YzdhZmEwOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTUxLDE0ICs1MSwxNCBAQCBBdG9tU3RyaW5n
IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6aWQoKSBjb25zdAogICAgIHJldHVybiBtX3RyYWNrSUQ7
CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNrVUlE
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
dHJhY2tVSUQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50
KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpOwogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBBdWRpb1RyYWNr
UHJpdmF0ZVdlYk06OmRlZmF1bHRFbmFibGVkKCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay5p
c19lbmFibGVkLmlzX3ByZXNlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fdHJhY2suaXNfZW5hYmxl
ZC52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAppbmRleCAxMjIyYzQ0OTdlMzk5
ZmM5OTA1ZjRjZGNkNTM4MTA0NDg0MDIwMjAwLi5iM2EyY2EzOTY0NmE1YjYxMWY2ZTI2NjE5M2U5
MmQxYzdjNGJiNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uaApAQCAtNDEsOCArNDEs
OCBAQCBwdWJsaWM6CiAgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsOwogICAgIEF0
b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbDsKICAgICBpbnQgdHJhY2tJbmRleCgpIGNv
bnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFs
OwotICAgIE9wdGlvbmFsPGJvb2w+IGRlZmF1bHRFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdHJhY2tVSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGRlZmF1bHRFbmFibGVkKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
CiAgICAgQXVkaW9UcmFja1ByaXZhdGVXZWJNKHdlYm06OlRyYWNrRW50cnkmJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAKaW5kZXggODkxZGQ1MzQzZTY5ZWVjZGRkZTA1MDFiZjY0ZTUzMzhiNDY2
NTcwNy4uNzA0ZjJkYzJlOTgyNGQ5ZTgxYjI0NTIzOGU5MDFhYjU2NzM0M2YwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcApAQCAtOTI0LDEyICs5MjQsMTIgQEAgc3RydWN0IE1pbk1heCB7CiB9
OwogCiBzdHJ1Y3QgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHsKLSAgICBPcHRpb25hbDxNaW5NYXg+
IHdlaWdodDsKLSAgICBPcHRpb25hbDxNaW5NYXg+IHdpZHRoOwotICAgIE9wdGlvbmFsPE1pbk1h
eD4gc2xvcGU7CisgICAgc3RkOjpvcHRpb25hbDxNaW5NYXg+IHdlaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPE1pbk1heD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxNaW5NYXg+IHNsb3BlOwog
fTsKIAotc3RhdGljIE9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZhcmlhdGlvbkJvdW5kcyhDRkRp
Y3Rpb25hcnlSZWYgYXhpcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZh
cmlhdGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYgYXhpcykKIHsKICAgICBDRk51bWJlclJlZiBt
aW5pbXVtVmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoYXhpcywga0NURm9udFZhcmlhdGlvbkF4aXNNaW5pbXVtVmFsdWVLZXkpKTsKICAgICBDRk51
bWJlclJlZiBtYXhpbXVtVmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoYXhpcywga0NURm9udFZhcmlhdGlvbkF4aXNNYXhpbXVtVmFsdWVLZXkpKTsK
QEAgLTExNjgsNyArMTE2OCw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKQog
c3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29u
c3QgQXRvbVN0cmluZyYgZmFtaWx5LCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFs
bGVkRm9udHMpCiB7CiAgICAgLy8gRklYTUU6IFNlZSBjb21tZW50IGluIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KCkgaW4gRm9udERlc2NyaXB0aW9uQ29jb2EuY3Bw
Ci0gICAgT3B0aW9uYWw8U3lzdGVtRm9udEtpbmQ+IHN5c3RlbURlc2lnbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN5c3RlbUZvbnRLaW5kPiBzeXN0ZW1EZXNpZ247CiAKICNpZiBIQVZFKERFU0lHTl9T
WVNURU1fVUlfRk9OVFMpCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZh
bWlseSwgInVpLXNlcmlmIikpCkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBSZWZQdHI8Rm9udD4gRm9u
dENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjcgogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwog
fQogCi1PcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVG
YW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QVNDSUlM
aXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJp
bmcmIGZhbWlseU5hbWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhlaXRpU3RyaW5nW10g
PSB7IDB4OWVkMSwgMHg0ZjUzIH07CiAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHNvbmd0aVN0cmlu
Z1tdID0geyAweDViOGIsIDB4NGY1MyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmlu
ZGV4IGYwMTZhNTI1YWZkZDY5OWE1MTNjM2UwYTlkM2RiNmQzZDFhNGZlNTMuLjVhNGVjZTY5Mjgx
YTdmNjYxYzI1M2ZmNzk1NjU2NzE3Nzk5OGNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2Nv
YS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
c3RkOjpzaXplX3Qgc2l6ZT4gaW5saW5lIHN0ZDo6YXJyYXk8VCwgc2l6ZT4gY28KICAgICByZXR1
cm4gY29udmVydEFycmF5PFQ+KGFycmF5LCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZT4g
eyB9KTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hT
eXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21T
dHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIi1hcHBsZS1zeXN0ZW0iKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZk
OTZjNDJjMjMyN2NjZjQ5MS4uNzc5ZWJkMTg5NmJjNTk2ZjcwMzMxOGI4ZThhMWUyYzczMDVmOTA2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC02NjEs
NyArNjYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQorc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCiB7CiAgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaAppbmRleCAzYWY0NmI1N2E0
ZTBjNGM3YjU5ZTFkZjhlZjUzOWM1YzFlOTg3OWI1Li44NTEyMjg1ODdmNzY0ZThiZGU2NzEyMWVh
ZDM2NmViZDg4YzNmZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaApAQCAtMzMsOCArMzMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYUNhcGFiaWxpdGllc0luZm87CiAK
LU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhj
b25zdCBIRVZDUGFyYW1ldGVycyYsIGJvb2wgaGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBv
cnQpOwotT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0
ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiwgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRy
U3VwcG9ydCk7CitzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVI
RVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYsIGJvb2wgaGFzQWxwaGFDaGFubmVs
LCBib29sIGhkclN1cHBvcnQpOworc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+
IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9WaVBhcmFtZXRlcnMmLCBib29sIGhhc0Fs
cGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2Eu
bW0KaW5kZXggYTg4ZmRlOTAxZjUyMjU5NDRlZjFhOTc0MGNhNTIzODc3MzFjZDA4OC4uZWFjZGY3
MDEzNTIwMGRhODQyNzk3YzQwYzYyNTFiOWVjNzU1NTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2Nv
YS5tbQpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZD
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3Vw
cG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQ
YXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhh
Q2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIENNVmlkZW9Db2RlY1R5cGUgY29kZWMg
PSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDOwogICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpIHsKQEAg
LTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgQ01WaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUoRG9WaVBh
cmFtZXRlcnM6OkNvZGVjIGNvZGVjKQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50MTZfdD4+IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9y
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBjb25zdCB2b2lkKiBrZXkpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDE2X3Q+PiBwYXJzZVN0cmluZ0FycmF5RnJvbURpY3Rpb25h
cnlUb1VJbnQxNlZlY3RvcihDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgY29uc3Qgdm9pZCog
a2V5KQogewogICAgIGF1dG8gdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBrZXkpOwogICAgIGlmICghdmFsdWUgfHwgQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGQXJyYXlH
ZXRUeXBlSUQoKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJheUZyb21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0b3IoQwog
ICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4g
dmFsaWRhdGVEb1ZpUGFyYW1ldGVycyhjb25zdCBEb1ZpUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Ym9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCkKK3N0ZDo6b3B0aW9uYWw8TWVk
aWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0
KQogewogICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNv
Y29hLmNwcAppbmRleCBkNWE2MzVmZDE0OGExYjE0MTdmOTkyZWUyNDJjYzc5OWI0NmQyYjQ2Li5h
MGJhZWRlODhhNzU1NjgxZWEyYTRhMTdiYTNlNmVkM2RmZGM3ZDllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIENNVmlkZW9Db2RlY1R5cGUgdmlkZW9Db2RlY1R5cGVGcm9tUkZDNDI4
MVR5cGUoU3RyaW5nVmlldyB0eXBlKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNv
bnN0IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvKGNvbnN0IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ewogICAgIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBpbmZvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IDVkYTNiNGJiNjkwOTc3N2NjZGJkMWI5ZDc0YzZlNDBlMTc1ZDI1
ZDcuLjMzM2E1ZjEwMTc1NzliNWQ4ZDViOGY4Y2ZmYWZlMDVkMTY3MzhmNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IHdlYm06OlRyYWNrRW50cnkmIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQogCiBw
cml2YXRlOgotICAgIG11dGFibGUgT3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKKyAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbV9jb2RlYzsKICAgICB3ZWJtOjpUcmFj
a0VudHJ5IG1fdHJhY2s7CiB9OwogCkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB3ZWJtOjpTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRh
ZGF0YSwgUmVhZAogICAgIHJldHVybiB0cmFja0RhdGEtPmNvbnN1bWVGcmFtZURhdGEoKnJlYWRl
ciwgbWV0YWRhdGEsIGJ5dGVzUmVtYWluaW5nLCBDTVRpbWVNYWtlKGJsb2NrLT50aW1lY29kZSAr
IG1fY3VycmVudFRpbWVjb2RlLCBtX3RpbWVzY2FsZSksIGJsb2NrLT5udW1fZnJhbWVzKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxlQnVmZmVyLCB1aW50NjRfdCB0cmFja0lELCBPcHRp
b25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9mZnNldCkKK3ZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6cHJvdmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1
ZmZlciwgdWludDY0X3QgdHJhY2tJRCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5dGVSYW5nZU9m
ZnNldCkKIHsKICAgICBtX2NhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2FtcGxlQnVm
ZmVyKSwgdHJhY2tJRCwgYnl0ZVJhbmdlT2Zmc2V0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3Vt
ZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgcmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1h
aW5pbmcpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRh
OjpjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZz
ZXQpCit2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjcmVhdGVT
YW1wbGVCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCkK
IHsKICAgICBpZiAobV9wYWNrZXREZXNjcmlwdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggMzUxYWJmODE3NDUwYjMwYzcx
YjRhMjA2N2FiNGU1MThjNTE1MWE0OS4uYmU4YTE3YTE0N2FmZjkyNTViYWFjMGExZmVkMTIyMDFj
ZjIwZDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0
IHZvaWQqIGlkZW50aWZpZXIpIGZpbmFsOwogCi0gICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90LCBPcHRpb25hbDxzaXplX3Q+IGJ5
dGVSYW5nZU9mZnNldCk7CisgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZVJhbmdl
T2Zmc2V0KTsKIAogICAgIGVudW0gY2xhc3MgRXJyb3JDb2RlIDogaW50MzJfdCB7CiAgICAgICAg
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk1FcnJvckNvZGVTdGFydCA9IDIwMDAsCkBAIC0yMDcsNyAr
MjA3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgd2VibTo6U3RhdHVzIGNvbnN1
bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwgY29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVp
bnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50KSBmaW5hbDsKLSAgICAgICAgdm9pZCBjcmVhdGVT
YW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQgPSBzdGQ6
Om51bGxvcHQpOworICAgICAgICB2b2lkIGNyZWF0ZVNhbXBsZUJ1ZmZlcihzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJBdWRpb1RyYWNrRGF0YSI7IH0KQEAgLTIxNSw4ICsyMTUsOCBAQCBwdWJsaWM6CiAgICAgICAg
IENNVGltZSBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIENNVGltZSBtX3BhY2tl
dER1cmF0aW9uOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbV9wYWNrZXREYXRhOwotICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQ7Ci0gICAgICAgIE9w
dGlvbmFsPHNpemVfdD4gbV9jdXJyZW50UGFja2V0U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBtX2N1cnJlbnRQYWNrZXRTaXplOwogICAgICAgICBzaXplX3QgbV9wYWNrZXRC
eXRlc1JlYWQgeyAwIH07CiAgICAgICAgIHNpemVfdCBtX2J5dGVPZmZzZXQgeyAwIH07CiAgICAg
ICAgIHNpemVfdCBtX3BhcnRpYWxCeXRlc1JlYWQgeyAwIH07CkBAIC0yNjksOCArMjY5LDggQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxVbmlxdWVSZWY8VHJhY2tEYXRhPj4gbV90cmFja3M7CiAg
ICAgdXNpbmcgQmxvY2tWYXJpYW50ID0gVmFyaWFudDx3ZWJtOjpCbG9jaywgd2VibTo6U2ltcGxl
QmxvY2s+OwotICAgIE9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50QmxvY2s7Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PEJsb2NrVmFyaWFudD4gbV9jdXJyZW50QmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAgIGZsb2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVy
YXRpb24geyAyIH07CiAKICAgICBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayBtX2NhbGxPbkNs
aWVudFRocmVhZENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKaW5kZXggN2NhNTQ5ZjhlOTBh
ZGRlY2ZhN2FhOGYzZmQyN2FhNmU2NzdlODg4MS4uYzA1ZjZhZjY2ZjZkYTc3OTFjZTQwY2E3ZGQ0
NDNmZGViZjVkMGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCkBAIC00Nyw3ICs0Nyw3IEBAIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CiBib29s
IGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpOwogYm9vbCBpc1ZQOERlY29kZXJBdmFpbGFibGUoKTsK
IGJvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb25zdCBWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZCYpOwotT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2
YWxpZGF0ZVZQUGFyYW1ldGVycyhjb25zdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYsIGNv
bnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOworc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGll
c0luZm8+IHZhbGlkYXRlVlBQYXJhbWV0ZXJzKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkJiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJik7CiAKIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIo
Y29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyJiwgY29uc3Qgd2VibTo6RWxlbWVudDx3
ZWJtOjpDb2xvdXI+Jik7CiAKQEAgLTY0LDI0ICs2NCwyNCBAQCBzdHJ1Y3QgVlA4RnJhbWVIZWFk
ZXIgewogICAgIGJvb2wgbmVlZHNDbGFtcGluZyB7IGZhbHNlIH07CiB9OwogCi1PcHRpb25hbDxW
UDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNp
emVfdCBmcmFtZVNpemUpOworc3RkOjpvcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhG
cmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpOwogUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQ
OEhlYWRlcihjb25zdCBWUDhGcmFtZUhlYWRlciYsIGNvbnN0IHdlYm06OkVsZW1lbnQ8d2VibTo6
Q29sb3VyPiYpOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBWUDlUZXN0aW5nT3ZlcnJpZGVzIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgVlA5VGVzdGluZ092ZXJyaWRlcyYgc2luZ2xldG9uKCk7CiAK
LSAgICB2b2lkIHNldEhhcmR3YXJlRGVjb2RlckRpc2FibGVkKE9wdGlvbmFsPGJvb2w+JiYpOwot
ICAgIE9wdGlvbmFsPGJvb2w+IGhhcmR3YXJlRGVjb2RlckRpc2FibGVkKCkgeyByZXR1cm4gbV9o
YXJkd2FyZURlY29kZXJEaXNhYmxlZDsgfQorICAgIHZvaWQgc2V0SGFyZHdhcmVEZWNvZGVyRGlz
YWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhh
cmR3YXJlRGVjb2RlckRpc2FibGVkKCkgeyByZXR1cm4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxl
ZDsgfQogCi0gICAgdm9pZCBzZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoT3B0aW9uYWw8U2NyZWVu
RGF0YU92ZXJyaWRlcz4mJik7Ci0gICAgT3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gdnA5
U2NyZWVuU2l6ZUFuZFNjYWxlKCkgIHsgcmV0dXJuIG1fc2NyZWVuU2l6ZUFuZFNjYWxlOyB9Cisg
ICAgdm9pZCBzZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRh
T3ZlcnJpZGVzPiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IHZw
OVNjcmVlblNpemVBbmRTY2FsZSgpICB7IHJldHVybiBtX3NjcmVlblNpemVBbmRTY2FsZTsgfQog
CiAgICAgdm9pZCBzZXRDb25maWd1cmF0aW9uQ2hhbmdlZENhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxib29sPiBtX2hhcmR3YXJlRGVj
b2RlckRpc2FibGVkOwotICAgIE9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVu
U2l6ZUFuZFNjYWxlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXJkd2FyZURlY29kZXJE
aXNhYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFPdmVycmlkZXM+IG1fc2NyZWVu
U2l6ZUFuZFNjYWxlOwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25D
aGFuZ2VkQ2FsbGJhY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDZlZWQwMTZm
MGJkZTA5MjQ0MjY4MDc4ZGJlY2UwNDhiMzAxZDdlMDUuLmU5Zjg2ZGVhNDM4ZTg5NWU2M2RiZGUw
N2M0ZDk1ZjliNWFlZjE4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCkBAIC01NiwxNCArNTYs
MTQgQEAgVlA5VGVzdGluZ092ZXJyaWRlcyYgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9u
KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgVlA5VGVzdGluZ092ZXJyaWRlczo6
c2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoT3B0aW9uYWw8Ym9vbD4mJiBkaXNhYmxlZCkKK3Zv
aWQgVlA5VGVzdGluZ092ZXJyaWRlczo6c2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpv
cHRpb25hbDxib29sPiYmIGRpc2FibGVkKQogewogICAgIG1faGFyZHdhcmVEZWNvZGVyRGlzYWJs
ZWQgPSBXVEZNb3ZlKGRpc2FibGVkKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uQ2hhbmdlZENh
bGxiYWNrKQogICAgICAgICBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2soKTsKIH0KIAot
dm9pZCBWUDlUZXN0aW5nT3ZlcnJpZGVzOjpzZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoT3B0aW9u
YWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4mJiBvdmVycmlkZXMpCit2b2lkIFZQOVRlc3RpbmdPdmVy
cmlkZXM6OnNldFZQOVNjcmVlblNpemVBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGFP
dmVycmlkZXM+JiYgb3ZlcnJpZGVzKQogewogICAgIG1fc2NyZWVuU2l6ZUFuZFNjYWxlID0gV1RG
TW92ZShvdmVycmlkZXMpOwogICAgIGlmIChtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2sp
CkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3Vw
cG9ydGVkKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBh
cmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJh
dGlvbiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCitzdGQ6
Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29u
c3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3Qg
VmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQ
Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MTAsNyArNjEwLDcgQEAgUmV0YWluUHRy
PENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhl
YWRlclBhcnNlcihjb24KICAgICByZXR1cm4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVjb3JkLCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhl
aWdodCgpKTsKIH0KIAotT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFk
ZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQorc3RkOjpvcHRpb25hbDxW
UDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNp
emVfdCBmcmFtZVNpemUpCiB7CiAgICAgLy8gVlA4IGZyYW1lIGhlYWRlcnMgYXJlIGRlZmluZWQg
aW4gUkZDIDYzODY6IDxodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjM4Nj4uCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJh
Y2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCmluZGV4IDNlYjI4MTg2MDgwMjBmOWY0MGE0ODg2
ZTI2NWY1NGU2ZmYyZGMzNWYuLjMwZjgzMWJjMWZlNGQ2MWQ0YmY2OTkwMDQ2N2IzNjNmYWM2MWVj
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBA
IEF0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjppZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fdHJhY2tJRDsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFZpZGVvVHJhY2tQcml2YXRlV2Vi
TTo6dHJhY2tVSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gVmlkZW9UcmFja1By
aXZhdGVXZWJNOjp0cmFja1VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdHJhY2sudHJhY2tfdWlk
LmlzX3ByZXNlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCk7
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gVmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5hYmxlZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+
IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAogewogICAgIGlm
IChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gbV90cmFj
ay5pc19lbmFibGVkLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCmluZGV4IDMy
MGY4ODhjMTAxZmE2ZjIyMzdjM2FlZTEwNDczM2U4Y2VlMWIxMzguLmU0ZGY0MWY1YzBlNDc0YzFj
ZmNmZjMyYzQ1OWM1YmRhYTkxMDA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5oCkBA
IC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmlu
YWw7CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsOwogICAgIGludCB0cmFj
a0luZGV4KCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRyYWNrVUlEKCkg
Y29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBm
aW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFja1VJRCgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGVmYXVsdEVuYWJsZWQoKSBjb25zdCBmaW5hbDsK
IAogcHJpdmF0ZToKICAgICBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0od2VibTo6VHJhY2tFbnRyeSYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLm1tCmluZGV4IDE1M2EzYjA3MGJjYzQ4NmE5MDc4ZmFhY2I3ODUzZTlhMmMwOTQ2ODUu
LjM2ZGQ3NTJhMDA2YzZlOTU1NjUwMDcwNGZjZDczYmNmYmI5YzAyY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7CiAg
ICAgQk9PTCBfcHJlcGFyZWRGb3JEaXNwbGF5OwotICAgIE9wdGlvbmFsPFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4+IF9zd2FwQ2hhaW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWlu
PiBfc3dhcENoYWluOwogfQogCiAtIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0
KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRD
b3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9G
b250Q29yZVRleHQuY3BwCmluZGV4IGVjNDk4ZDRhZTAzYzNkYTlmZDI0NjY3ZGNlNmY0MzFhMTcz
N2YxNzQuLjI5YTA3Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dENvcmVUZXh0LmNwcApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Ry
dWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKICAgICByZXR1cm4gQ0ZEaWN0
aW9uYXJ5Q29udGFpbnNLZXkoZmVhdHVyZSwga0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktl
eSkgJiYgQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmVhdHVyZSwga0NURm9udEZlYXR1cmVTZWxl
Y3RvcklkZW50aWZpZXJLZXkpOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPENGU3RyaW5n
UmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmUpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8Q0ZTdHJpbmdSZWY+IG9wZW5UeXBlRmVhdHVyZShDRkRpY3Rpb25h
cnlSZWYgZmVhdHVyZSkKIHsKICAgICBBU1NFUlQoaXNPcGVuVHlwZUZlYXR1cmUoZmVhdHVyZSkp
OwogICAgIENGU3RyaW5nUmVmIHRhZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShmZWF0dXJlLCBrQ1RGb250T3BlblR5cGVGZWF0dXJlVGFnKSk7CkBAIC00
MzIsNyArNDMyLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5
cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUs
IGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVt
YmVyR2V0VmFsdWUodmFsdWUsIGtDRk51bWJlckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNT
RVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRp
b25hbDxDRlN0cmluZ1JlZj4odGFnKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFs
dWUgPyBzdGQ6Om9wdGlvbmFsPENGU3RyaW5nUmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQog
CiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxpbnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGlj
dGlvbmFyeVJlZiBmZWF0dXJlKQpAQCAtNzIzLDcgKzcyMyw3IEBAIFBhdGggRm9udDo6cGxhdGZv
cm1QYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIHsgYWRvcHRDRihD
R1BhdGhDcmVhdGVNdXRhYmxlQ29weShyZXN1bHQuZ2V0KCkpKSB9OwogfQogCi1ib29sIEZvbnQ6
OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0ZXIsIE9wdGlvbmFsPFVD
aGFyMzI+IHZhcmlhdGlvbikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZvcm1TdXBwb3J0c0NvZGVQ
b2ludChVQ2hhcjMyIGNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24p
IGNvbnN0CiB7CiAgICAgaWYgKHZhcmlhdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODYyLDE0ICs4NjIsMTQgQEAgYm9vbCBGb250OjpnbHlwaEhhc0NvbXBsZXhDb2xvckZvcm1hdChH
bHlwaCBnbHlwaElEKSBjb25zdAogfQogI2VuZGlmCiAKLU9wdGlvbmFsPEJpdFZlY3Rvcj4gRm9u
dDo6ZmluZE9UU1ZHR2x5cGhzKGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgdW5zaWdu
ZWQgY291bnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4gRm9udDo6ZmluZE9UU1ZH
R2x5cGhzKGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgdW5zaWduZWQgY291bnQpIGNv
bnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXV0byB0YWJsZSA9IG90U1ZHVGFibGUo
KS50YWJsZTsKICAgICBpZiAoIXRhYmxlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0
aW9uYWw8Qml0VmVjdG9yPiByZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IHJl
c3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAg
ICBpZiAoUEFMOjpzb2Z0TGlua09UU1ZHT1RTVkdUYWJsZUdldERvY3VtZW50SW5kZXhGb3JHbHlw
aCh0YWJsZSwgZ2x5cGhzW2ldKSAhPSBrQ0ZOb3RGb3VuZCkgewogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggMTE1NmQ3MDJlNjgzZmQ2MjAzZTVj
NWJmZjUxYTIyZTVmOTIyNTkwYy4uYmRlZGNjZjcwYTg1YjFlNzI4NzAwODQ4OTY2NWY5OTU1YTQ0
ZmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVChjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBG
bG9hdFNpemUsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogICAgIEltYWdlUm90YXRpb25TZXNzaW9u
VlQoKSA9IGRlZmF1bHQ7CiAKLSAgICBjb25zdCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+JiB0
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2Zvcm07IH0KICAgICBjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmIHJvdGF0aW9uUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb25Qcm9wZXJ0aWVzOyB9CiAgICAgY29uc3Qg
RmxvYXRTaXplJiBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgRmxvYXRTaXpl
JiByb3RhdGVkU2l6ZSgpIHsgcmV0dXJuIG1fcm90YXRlZFNpemU7IH0KQEAgLTY5LDcgKzY5LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJvdGF0aW9uUHJvcGVydGllcyBtX3JvdGF0aW9uUHJvcGVydGll
czsKICAgICBGbG9hdFNpemUgbV9zaXplOwotICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4g
bV90cmFuc2Zvcm07CisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNm
b3JtOwogICAgIE9TVHlwZSBtX3BpeGVsRm9ybWF0OwogICAgIElzQ0dJbWFnZUNvbXBhdGlibGUg
bV9pc0NHSW1hZ2VDb21wYXRpYmxlOwogICAgIEZsb2F0U2l6ZSBtX3JvdGF0ZWRTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaAppbmRleCA5OTMyMjI2MmRmNzAyOTA0MDc5M2I2NTkwM2M1NzU1YmJh
MjI2ZWQyLi40YWM1ZGIyZTg0ZmU3NDhiZDM3NjI3ZTg4NDhhM2E4ZTE0NGNhMDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgSXRlbUJ1
ZmZlciogaXRlbUJ1ZmZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5nZXQoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIEl0ZW1CdWZmZXImIGl0ZW1CdWZmZXIoKTsKIAotICAgIHZv
aWQgYWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9uYWw8RmxvYXRSZWN0PiYmIGV4dGVudCkKKyAg
ICB2b2lkIGFkZERyYXdpbmdJdGVtRXh0ZW50KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYmIGV4
dGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyk7
CiAgICAgICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzLmFwcGVuZChXVEZNb3ZlKGV4dGVudCkpOwpA
QCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0
aXZlSW1hZ2VzOwogICAgIEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwotICAgIFZlY3RvcjxPcHRpb25hbDxG
bG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKKyAgICBWZWN0b3I8c3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJh
d2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4
IGNhY2Y3NjRmNWRlMmM4Y2Y2ZDNmNDAwMDJmZWFmNWUxMjE2OTFjODUuLmJlZTE5NGQ1MzNhMTkw
M2Q2MzRkNjkyZDU2MzNkNzMzMzI2MzA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3
MCw3ICszNzAsNyBAQCBzdHJ1Y3QgR2x5cGhzQW5kQWR2YW5jZXMgewogICAgIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSogYWR2YW5jZXM7CiAgICAgdW5zaWduZWQgbnVtR2x5cGhzOwogICAgIEds
eXBoQnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2YW5jZTsKLSAgICBPcHRpb25hbDxHbHlwaHNBbmRB
ZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaHNBbmRBZHZh
bmNlc1N0b3JhZ2U+IHN0b3JhZ2U7CiB9OwogCiBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMgZmls
dGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBu
dW1HbHlwaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXgg
NWM0MjQ1NDEzYjQwMTNiNGJiNTcxODgxZDBkYjc2NjRkNTNkNjE2YS4uYzg3MzE5ODJlZjgzOTMx
YmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxzdGQ6OnNpemVfdD4gcmVxdWlyZWRT
aXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxzdGQ6OnNpemVfdD4gcmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCog
aGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOwog
fTsKIAogLy8gQW4gSXRlbUJ1ZmZlciBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBh
bmQgY29uc2lzdHMgb2YgYSByZWFkd3JpdGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlz
cGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGYyMjJlMjE4M2Ez
OTEwM2JkNjk4NTM0NDY0ZGYzY2IwYThmZjkwN2UuLjU5N2MyYTdhYjdiNzg4ZjJlMTdhNTYxYTAx
MTFjM2I4MjY4YTE1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAg
LTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd1JlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25h
bDxGbG9hdFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBib3VuZHM7CiAg
ICAgYm91bmRzLmZpdFRvUG9pbnRzKG1fcG9pbnQxLCBtX3BvaW50Mik7CkBAIC01NDgsNyArNTQ4
LDcgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiAgICAgY29udGV4dC5kcmF3TGluZXNGb3JUZXh0KHBvaW50KCksIG1fdGhpY2tu
ZXNzLCBtX3dpZHRocywgbV9wcmludGluZywgbV9kb3VibGVMaW5lcyk7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9yVGV4dDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZXNGb3JUZXh0
Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIFRo
aXMgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gb3IgZW5jbG9zaW5n
IHdoYXQgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01v
ZGVGb3JUZXh0KCkgcmV0dXJucy4KIApAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgRHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWN0OwogfQpAQCAt
NjE5LDcgKzYxOSw3IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1BhdGg6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9wYXRoLCBt
X3dpZHRoLCBtX29mZnNldCwgbV9jb2xvcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJh
d0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdCA9
IG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgcmVzdWx0LmluZmxhdGUocGxhdGZvcm1G
b2N1c1JpbmdXaWR0aCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBEcmF3Rm9jdXNSaW5nUmVj
dHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRy
YXdGb2N1c1JpbmcobV9yZWN0cywgbV93aWR0aCwgbV9vZmZzZXQsIG1fY29sb3IpOwogfQogCi1P
cHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9j
dXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7
CiAgICAgRmxvYXRSZWN0IHJlc3VsdDsKICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX3JlY3RzKQpA
QCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCiB9CiAjZW5kaWYKIAotT3B0
aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZVJlY3Q6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJv
dW5kcyA9IG1fcmVjdDsKICAgICBib3VuZHMuZXhwYW5kKG1fbGluZVdpZHRoLCBtX2xpbmVXaWR0
aCk7CkBAIC04NzgsNyArODc4LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJv
a2VQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNj
b3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC04OTksNyArODk5
LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFN0cm9rZVBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJl
Y3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VFbGxpcHNlOjpsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC5zdHJva2VUaGlja25lc3MoKTsKIApAQCAtOTE5
LDcgKzkxOSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotT3B0aW9u
YWw8RmxvYXRSZWN0PiBTdHJva2VMaW5lOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlTGluZTo6
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAg
IGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAKQEAg
LTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSkKIAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUlubGluZVBhdGg6OmxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBTdHJva2VJbmxpbmVQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2Ug
dGhpY2tuZXNzIGludG8gYWNjb3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0
aCgpLgogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA4Mzk0YmQzODJmOTI1NWIz
OTQzNDIzZDE5M2EwMDljYzc4YTU4NTg1Li5mOGIwZDA5M2JjNTdiYmVjOWUzNzVkM2NkYzY0NWI1
MTAxNTZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI4MCw3ICsy
ODAsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi50aWxlSW1h
Z2VJZGVudGlmaWVyOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0
dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CiAKQEAgLTM3OCw5ICsz
NzgsOSBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8R3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOworICAgIHN0ZDo6b3B0aW9u
YWw8R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOwog
ICAgIGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7CiAgICAgaWYgKCFjaGFuZ2VGbGFncykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQwMCwxMiArNDAwLDEyIEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBh
cmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFy
YW1ldGVycz4gcGFyYW1ldGVyczsKICAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAg
ICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNDIyLDEyICs0MjIsMTIgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7
Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBkZWNv
ZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAgICAg
ICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDM2LDI4ICs0MzYsMjggQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAK
ICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewotICAgICAgICBPcHRpb25hbDxGbG9hdFNpemU+IHNo
YWRvd09mZnNldDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IHNoYWRvd09mZnNl
dDsKICAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dPZmZzZXQ7CiAgICAgICAgIGlmICghc2hhZG93
T2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0
ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9ICpzaGFkb3dPZmZzZXQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IHNoYWRvd0JsdXI7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKICAgICAgICAgaWYg
KCFzaGFkb3dCbHVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKIAotICAgICAg
ICBPcHRpb25hbDxDb2xvcj4gc2hhZG93Q29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IHNoYWRvd0NvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHNoYWRvd0NvbG9yOwogICAgICAg
ICBpZiAoIXNoYWRvd0NvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9yOwog
Ci0gICAgICAgIE9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93UmFkaXVzTW9kZT4gc2hhZG93UmFkaXVzTW9kZTsK
ICAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dSYWRpdXNNb2RlOwogICAgICAgICBpZiAoIXNoYWRv
d1JhZGl1c01vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDY2LDcg
KzQ2Niw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpIHsKLSAgICAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IHN0cm9rZVRoaWNrbmVzczsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNzOwogICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNr
bmVzczsKICAgICAgICAgaWYgKCFzdHJva2VUaGlja25lc3MpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtNDc1LDcgKzQ3NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRT
dGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hh
bmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+
IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUZXh0RHJhd2luZ01vZGVG
bGFncz4gdGV4dERyYXdpbmdNb2RlOwogICAgICAgICBkZWNvZGVyID4+IHRleHREcmF3aW5nTW9k
ZTsKICAgICAgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtNDg0LDcgKzQ4NCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9y
Q2hhbmdlKSkgewotICAgICAgICBPcHRpb25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHN0
cm9rZUNvbG9yOwogICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTQ5Myw3ICs0OTMsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0
U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxs
Q29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTUxMCw3ICs1MTAsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5n
ZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8V2luZFJ1bGU+IGZpbGxSdWxlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsUnVs
ZTsKICAgICAgICAgaWYgKCFmaWxsUnVsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC01MTksNyArNTE5LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKSkgewotICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRl
T3BlcmF0b3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBv
c2l0ZU9wZXJhdG9yOwogICAgICAgICBkZWNvZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAg
ICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTUyOCw3ICs1MjgsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2Up
KSB7Ci0gICAgICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGJsZW5k
TW9kZTsKICAgICAgICAgaWYgKCFibGVuZE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtNTM3LDcgKzUzNyw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpKSB7Ci0gICAgICAgIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFs
aXR5PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
dGVycG9sYXRpb25RdWFsaXR5PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBk
ZWNvZGVyID4+IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgICAgIGlmICghaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC01NDYsNyArNTQ2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKSB7Ci0gICAgICAg
IE9wdGlvbmFsPGZsb2F0PiBhbHBoYTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxw
aGE7CiAgICAgICAgIGRlY29kZXIgPj4gYWxwaGE7CiAgICAgICAgIGlmICghYWxwaGEpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTU1LDcgKzU1NSw3IEBAIE9wdGlvbmFs
PFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAg
ICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkQW50aWFsaWFzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFudGlh
bGlhczsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRBbnRpYWxpYXM7CiAgICAgICAgIGlmICgh
c2hvdWxkQW50aWFsaWFzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU2
NCw3ICs1NjQsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpIHsK
LSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21vb3RoRm9udHM7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21vb3RoRm9udHM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hv
dWxkU21vb3RoRm9udHM7CiAgICAgICAgIGlmICghc2hvdWxkU21vb3RoRm9udHMpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTczLDcgKzU3Myw3IEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogCiAgICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpIHsKLSAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKICAgICAgICAgZGVjb2RlciA+
PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CiAgICAgICAgIGlmICghc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTU4
Miw3ICs1ODIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5n
ZSkpIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAg
ICAgIGRlY29kZXIgPj4gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgICAgIGlmICghc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNjMwLDcgKzYzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxTZXRMaW5lRGFzaD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXRMaW5lRGFzaD4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKICAgICBEYXNoQXJyYXkgbV9kYXNoQXJyYXk7CkBAIC02NDUsMTQgKzY0NSwx
NCBAQCB2b2lkIFNldExpbmVEYXNoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5l
RGFzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNldExpbmVEYXNo
PiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
RGFzaEFycmF5PiBkYXNoQXJyYXk7CisgICAgc3RkOjpvcHRpb25hbDxEYXNoQXJyYXk+IGRhc2hB
cnJheTsKICAgICBkZWNvZGVyID4+IGRhc2hBcnJheTsKICAgICBpZiAoIWRhc2hBcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiBkYXNoT2Zm
c2V0OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+
PiBkYXNoT2Zmc2V0OwogICAgIGlmICghZGFzaE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTc5MCw3ICs3OTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUGF0aCYgcGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwT3V0VG9QYXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENsaXBPdXRUb1Bh
dGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCkBAIC04MDUsOSArODA1LDkgQEAgdm9pZCBDbGlwT3V0VG9QYXRoOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9w
dGlvbmFsPENsaXBPdXRUb1BhdGg+IENsaXBPdXRUb1BhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RkOjpvcHRpb25hbDxDbGlwT3V0VG9QYXRoPiBDbGlwT3V0VG9QYXRoOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6
b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRo
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODM5LDcgKzgzOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwUGF0aD4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
bGlwUGF0aD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsK
QEAgLTg1NCwxNCArODU0LDE0IEBAIHZvaWQgQ2xpcFBhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Q2xpcFBh
dGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q2xp
cFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVy
ID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2luZFJ1bGU+IHdpbmRSdWxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2lu
ZFJ1bGU+IHdpbmRSdWxlOwogICAgIGRlY29kZXIgPj4gd2luZFJ1bGU7CiAgICAgaWYgKCF3aW5k
UnVsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTg5MCw3ICs4OTAsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpAQCAtOTA1LDE0ICs5MDUsMTQgQEAgdm9p
ZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGRlc3RpbmF0aW9uOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CiAgICAgaWYg
KCFkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNvbG9y
U3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtOTQ5LDE1ICs5NDksMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1
ZmZlckdseXBoLCAxNj4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdHbHlwaHM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RHJhd0dseXBocz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIERyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVj
dG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
dXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKQEAgLTk4MiwxOSArOTgyLDE5IEBAIHZvaWQgRHJhd0ds
eXBoczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxEcmF3R2x5cGhzPiBEcmF3R2x5cGhzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBmb250SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBmb250SWRlbnRp
ZmllcjsKICAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBo
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+PiBnbHlw
aHM7CiAgICAgZGVjb2RlciA+PiBnbHlwaHM7CiAgICAgaWYgKCFnbHlwaHMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8R2x5cGhCdWZmZXJBZHZh
bmNlLCAxMjg+PiBhZHZhbmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZl
ckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOwogICAgIGRlY29kZXIgPj4gYWR2YW5jZXM7CiAgICAg
aWYgKCFhZHZhbmNlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEwMDIsMTcg
KzEwMDIsMTcgQEAgT3B0aW9uYWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgaWYgKGdseXBocy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXplKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGJvdW5kczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRzOwogICAgIGRlY29k
ZXIgPj4gYm91bmRzOwogICAgIGlmICghYm91bmRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbG9jYWxBbmNob3I7CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFBvaW50PiBsb2NhbEFuY2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5j
aG9yOwogICAgIGlmICghbG9jYWxBbmNob3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxGb250U21vb3RoaW5nTW9kZT4gc21vb3RoaW5nTW9kZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRTbW9vdGhpbmdNb2RlPiBzbW9vdGhpbmdNb2RlOwogICAgIGRlY29k
ZXIgPj4gc21vb3RoaW5nTW9kZTsKICAgICBpZiAoIXNtb290aGluZ01vZGUpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDQ1LDggKzEwNDUsOCBAQCBwdWJsaWM6CiAKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2lt
YWdlQnVmZmVySWRlbnRpZmllcjsKQEAgLTEwNzksOCArMTA3OSw4IEBAIHB1YmxpYzoKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJl
Y3Q7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pbWFn
ZUlkZW50aWZpZXI7CkBAIC0xMTExLDggKzExMTEsOCBAQCBwdWJsaWM6CiAgICAgTk9fUkVUVVJO
X0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRl
OgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2ltYWdlSWRlbnRpZmllcjsKQEAg
LTExNDAsOCArMTE0MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CkBAIC0xMTU1LDggKzEx
NTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiB9
OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBAIC0xMTc2LDggKzExNzYsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsK
QEAgLTEyMDEsOCArMTIwMSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcG9pbnQx
OwpAQCAtMTIyOCwxMSArMTIyOCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPERyYXdMaW5lc0ZvclRleHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJhd0xpbmVzRm9y
VGV4dD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYmxv
Y2tMb2NhdGlvbjsKQEAgLTEyNTUsMzQgKzEyNTUsMzQgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLU9wdGlvbmFsPERyYXdMaW5lc0ZvclRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEcmF3TGluZXNGb3JUZXh0PiBEcmF3
TGluZXNGb3JUZXh0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBibG9ja0xvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4g
YmxvY2tMb2NhdGlvbjsKICAgICBkZWNvZGVyID4+IGJsb2NrTG9jYXRpb247CiAgICAgaWYgKCFi
bG9ja0xvY2F0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8RmxvYXRTaXplPiBsb2NhbEFuY2hvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bG9jYWxBbmNob3I7CiAgICAgZGVjb2RlciA+PiBsb2NhbEFuY2hvcjsKICAgICBpZiAoIWxvY2Fs
QW5jaG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8RGFz
aEFycmF5PiB3aWR0aHM7CisgICAgc3RkOjpvcHRpb25hbDxEYXNoQXJyYXk+IHdpZHRoczsKICAg
ICBkZWNvZGVyID4+IHdpZHRoczsKICAgICBpZiAoIXdpZHRocykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiB0aGlja25lc3M7CisgICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gdGhpY2tuZXNzOwogICAgIGRlY29kZXIgPj4gdGhpY2tuZXNzOwogICAg
IGlmICghdGhpY2tuZXNzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Ym9vbD4gcHJpbnRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBwcmludGluZzsK
ICAgICBkZWNvZGVyID4+IHByaW50aW5nOwogICAgIGlmICghcHJpbnRpbmcpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBkb3VibGVMaW5lczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRvdWJsZUxpbmVzOwogICAgIGRlY29kZXIgPj4gZG91Ymxl
TGluZXM7CiAgICAgaWYgKCFkb3VibGVMaW5lcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTEzMTgsOCArMTMxOCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0
OwpAQCAtMTM0Miw4ICsxMzQyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xMzY4LDEyICsxMzY4LDEy
IEBAIHB1YmxpYzoKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRo
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdQ
YXRoPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPERyYXdQYXRoPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7
IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgUGF0aCBtX3BhdGg7CkBAIC0xMzg2LDkgKzEzODYsOSBAQCB2b2lkIERyYXdQ
YXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdQYXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPERyYXdQYXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE0MjQsMTIgKzE0MjQsMTIgQEAgcHVibGljOgog
ICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1Bh
dGg+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgUGF0aCBtX3BhdGg7CkBAIC0xNDQ4LDI0ICsxNDQ4LDI0IEBAIHZvaWQgRHJhd0ZvY3VzUmlu
Z1BhdGg6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1BhdGg+IERyYXdGb2N1c1JpbmdQYXRo
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1Bh
dGg+IERyYXdGb2N1c1JpbmdQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBk
ZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IHdpZHRoOwogICAgIGRlY29kZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gb2Zmc2V0OwogICAgIGRlY29kZXIgPj4gb2Zmc2V0Owog
ICAgIGlmICghb2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAg
IGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTE0ODgsMTEgKzE0ODgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3Rm9jdXNSaW5nUmVjdHM+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RHJh
d0ZvY3VzUmluZ1JlY3RzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFZlY3Rv
cjxGbG9hdFJlY3Q+IG1fcmVjdHM7CkBAIC0xNTExLDI0ICsxNTExLDI0IEBAIHZvaWQgRHJhd0Zv
Y3VzUmluZ1JlY3RzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdGb2N1c1JpbmdSZWN0cz4gRHJhd0ZvY3Vz
UmluZ1JlY3RzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RHJhd0Zv
Y3VzUmluZ1JlY3RzPiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0czsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0czsKICAgICBkZWNvZGVyID4+IHJlY3RzOwog
ICAgIGlmICghcmVjdHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxmbG9hdD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7CiAgICAg
ZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAoIXdpZHRoKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZmxvYXQ+IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBvZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gY29s
b3I7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xv
cjsKICAgICBpZiAoIWNvbG9yKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTU1
MSw4ICsxNTUxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xNTc1LDExICsxNTc1LDExIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmlsbFJlY3RXaXRoQ29sb3I+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsbFJl
Y3RXaXRoQ29sb3I+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0
IG1fcmVjdDsKQEAgLTE1OTQsMTQgKzE1OTQsMTQgQEAgdm9pZCBGaWxsUmVjdFdpdGhDb2xvcjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxGaWxsUmVjdFdpdGhDb2xvcj4gRmlsbFJlY3RXaXRoQ29sb3I6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdpdGhDb2xvcj4gRmls
bFJlY3RXaXRoQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gcmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAg
ICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2MjIsMTEgKzE2MjIsMTEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxs
UmVjdFdpdGhHcmFkaWVudD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV9yZWN0OwpAQCAtMTY0MSw5ICsxNjQxLDkgQEAgdm9pZCBGaWxsUmVjdFdpdGhHcmFk
aWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUmVjdFdpdGhHcmFkaWVudD4gRmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGaWxsUmVjdFdp
dGhHcmFkaWVudD4gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTY3NiwxMSArMTY3NiwxMSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEZpbGxDb21wb3NpdGVkUmVjdD4gZGVjb2RlKERlY29kZXImKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxsQ29t
cG9zaXRlZFJlY3Q+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0
IG1fcmVjdDsKQEAgLTE2OTksMjQgKzE2OTksMjQgQEAgdm9pZCBGaWxsQ29tcG9zaXRlZFJlY3Q6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8RmlsbENvbXBvc2l0ZWRSZWN0PiBGaWxsQ29tcG9zaXRlZFJlY3Q6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGaWxsQ29tcG9zaXRlZFJlY3Q+
IEZpbGxDb21wb3NpdGVkUmVjdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0
OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAgICBpZiAoIXJlY3QpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9y
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29tcG9zaXRl
T3BlcmF0b3I+IG9wOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IG9wOwog
ICAgIGRlY29kZXIgPj4gb3A7CiAgICAgaWYgKCFvcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAg
ICAgaWYgKCFibGVuZE1vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzQy
LDEyICsxNzQyLDEyIEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ibGVuZE1vZGU7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8RmlsbFJvdW5kZWRSZWN0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVj
dD4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJlY3Qo
KTsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9yZWN0OwpAQCAtMTc2NCwx
OSArMTc2NCwxOSBAQCB2b2lkIEZpbGxSb3VuZGVkUmVjdDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGaWxsUm91
bmRlZFJlY3Q+IEZpbGxSb3VuZGVkUmVjdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPEZpbGxSb3VuZGVkUmVjdD4gRmlsbFJvdW5kZWRSZWN0OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGbG9hdFJvdW5kZWRSZWN0PiByZWN0OworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSb3VuZGVkUmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJl
Y3Q7CiAgICAgaWYgKCFyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOwog
ICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgIHN0
ZDo6b3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1v
ZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xODAyLDEyICsxODAyLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xODI0LDE5ICsx
ODI0LDE5IEBAIHZvaWQgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+IEZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJl
Y3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRI
b2xlUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJvdW5kZWRIb2xl
UmVjdDsKICAgICBkZWNvZGVyID4+IHJvdW5kZWRIb2xlUmVjdDsKICAgICBpZiAoIXJvdW5kZWRI
b2xlUmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPENv
bG9yPiBjb2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVy
ID4+IGNvbG9yOwogICAgIGlmICghY29sb3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xODgzLDggKzE4ODMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgo
KS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIH07CiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKQEAgLTE5MDgsMTIgKzE5MDgsMTIgQEAgcHVibGljOgog
ICAgIGNvbnN0IFBhdGgmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmlsbFBhdGg+IGRlY29kZShE
ZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RmlsbFBhdGg+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBQ
YXRoIG1fcGF0aDsKQEAgLTE5MjYsOSArMTkyNiw5IEBAIHZvaWQgRmlsbFBhdGg6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8RmlsbFBhdGg+IEZpbGxQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6
b3B0aW9uYWw8RmlsbFBhdGg+IEZpbGxQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxQYXRoPiBwYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8UGF0aD4gcGF0aDsK
ICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTk1MSw4ICsxOTUxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJl
dHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CkBAIC0xOTc5LDcg
KzE5NzksNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9zcmNSZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgogICAgIEludFJlY3QgbV9zcmNSZWN0OwpAQCAtMTk5NCwxNCAr
MTk5NCwxNCBAQCB2b2lkIEdldFBpeGVsQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdldFBpeGVsQnVm
ZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEludFJlY3Q+IHNyY1JlY3Q7CiAgICAgZGVjb2RlciA+PiBzcmNSZWN0OwogICAgIGlmICghc3Jj
UmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFBpeGVs
QnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
ckZvcm1hdD4gb3V0cHV0Rm9ybWF0OwogICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwogICAg
IGlmICghb3V0cHV0Rm9ybWF0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAz
MCwxMSArMjAzMCwxMSBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgZGVzdFBvaW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RG
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RGb3JtYXQ7IH0KIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQb2ludCwgbV9zcmNSZWN0LnNpemUoKSB9fTsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4ge3sgbV9kZXN0UG9pbnQs
IG1fc3JjUmVjdC5zaXplKCkgfX07IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3NyY1JlY3Q7CkBA
IC0yMDUzLDEyICsyMDUzLDEyIEBAIHZvaWQgUHV0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8
UHV0UGl4ZWxCdWZmZXI+IFB1dFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8UHV0UGl4ZWxCdWZmZXI+IFB1dFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7
Ci0gICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4g
ZGVzdFBvaW50OwotICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3Jt
YXQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
IGRlc3RQb2ludDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRl
c3RGb3JtYXQ7CiAKICAgICBkZWNvZGVyID4+IHBpeGVsQnVmZmVyOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCkBAIC0yMDk1LDggKzIwOTUsOCBAQCBwdWJsaWM6CiAKICAgICBOT19SRVRVUk5fRFVF
X1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHsgbV9kZXN0aW5hdGlvbiB9OyB9CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7IG1fZGVzdGluYXRpb24gfTsgfQogCiBw
cml2YXRlOgogICAgIE1lZGlhUGxheWVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CkBAIC0yMTIx
LDggKzIxMjEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKQEAgLTIxNDYs
OCArMjE0Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fc3RhcnQ7CkBAIC0yMTc0
LDggKzIxNzQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCkBA
IC0yMTk5LDEyICsyMTk5LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9wYXRoOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFN0cm9rZVBhdGg+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ryb2tlUGF0aD4gZGVjb2RlKERl
Y29kZXImKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBQYXRoIG1fcGF0aDsKQEAgLTIyMTcsOSArMjIxNyw5IEBAIHZvaWQg
U3Ryb2tlUGF0aDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTdHJva2VQYXRoPiBTdHJva2VQYXRoOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3Ryb2tlUGF0aD4gU3Ryb2tlUGF0aDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlm
ICghcGF0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIyNDIsOCArMjI0Miw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAK
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwpAQCAtMjI2NCw4ICsyMjY0LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgogICAgIEZs
b2F0UmVjdCBtX3JlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRl
eCAzZjZiYmJkNWQ4ODdkZTU4NmRlNzA4YTExZjM3YWFlMDg0NTMxZjRlLi5kNzZlOWIyNDMxNGM1
MTcyZDU0Y2NlMTMyZWQyMWFlMGMzYzJmZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmgKQEAgLTU2LDExICs1NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgVmFs
dWUgewogICAgICAgICBJdGVtSGFuZGxlIGl0ZW07Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZXh0ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAg
ICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAgICB9OwogCi0gICAgT3B0aW9u
YWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZT4gb3Bl
cmF0b3IqKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9y
Q3VycmVudEl0ZW1dIHsgMCB9OwogICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
eyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKICAgICBzaXplX3Qg
bV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAgICBib29sIG1faXNWYWxpZCB7IHRy
dWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
ODJiMmM3YWI2NTEzODIxMGJmM2I2NTRlNTkyZWQzMDcxZTRmODEwYS4uOWUyMDE2ZTFkMWY1Nzdm
MzU4YzU5N2U3OGY4NGU3NjBhNjMzODg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgUmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQogICAgIEFmZmluZVRyYW5zZm9ybSBy
b3RhdGlvbjsKICAgICByb3RhdGlvbi5yb3RhdGUoYW5nbGVJbkRlZ3JlZXMpOwogCi0gICAgaWYg
KE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHJvdGF0aW9uLmludmVyc2UoKSkK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSByb3RhdGlv
bi5pbnZlcnNlKCkpCiAgICAgICAgIGNsaXBCb3VuZHMgPSBpbnZlcnNlLnZhbHVlKCkubWFwUmVj
dChjbGlwQm91bmRzKTsKIH0KIApAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgUmVjb3JkZXI6OkNv
bnRleHRTdGF0ZTo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogCiB2b2lkIFJlY29yZGVy
OjpDb250ZXh0U3RhdGU6OnNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsK
LSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2VUcmFuc2Zvcm1Gb3JDbGlwQm91
bmRzOworICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlVHJhbnNmb3Jt
Rm9yQ2xpcEJvdW5kczsKICAgICBpZiAoYXV0byBvcmlnaW5hbENUTUludmVyc2UgPSBjdG0uaW52
ZXJzZSgpKQogICAgICAgICBpbnZlcnNlVHJhbnNmb3JtRm9yQ2xpcEJvdW5kcyA9IG9yaWdpbmFs
Q1RNSW52ZXJzZS0+bXVsdGlwbHkobWF0cml4KS5pbnZlcnNlKCk7CiAKQEAgLTU5Myw3ICs1OTMs
NyBAQCB2b2lkIFJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIG1hdHJpeCkKIHsKICAgICBjdG0gKj0gbWF0cml4OwogCi0gICAgaWYgKE9wdGlv
bmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IG1hdHJpeC5pbnZlcnNlKCkpCisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gbWF0cml4LmludmVyc2Uo
KSkKICAgICAgICAgY2xpcEJvdW5kcyA9IGludmVyc2UudmFsdWUoKS5tYXBSZWN0KGNsaXBCb3Vu
ZHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXgg
NjQ4YjQ0MDQwNmJlMjM3NjMyZTVkMjY1ZTU3OWNmNWUyZDU3M2RhNy4uZjM3MGI0MTE4ZDAyNDNh
MWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVy
Ojpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1h
Z2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJz
LCBJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5n
ZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5p
bWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKQEAgLTY3LDcgKzY3LDcgQEAgaW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
KEdyYXBoaWMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2Vz
LCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiB7CiAgICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsK
ICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50
aWZpZXIoKTsKQEAgLTc4LDcgKzc4LDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICBy
ZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRl
bUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVt
KQogewogICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogCkBA
IC0xMDIsNyArMTAyLDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJl
bmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1h
cCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0u
Z2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRl
bnRpZmllcigpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAg
ICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFN0
b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBS
ZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKK3N0ZDo6cGFpcjxzdGQ6Om9wdGlv
bmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlm
IChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAg
ICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA2YjhiZjQ0NjI4MmM0ZWE2ZWY1NGY0OWIyZTJm
YmFkNzliZmQxYWQwLi4xNjYyN2EwMjA2ZTMwOTI0M2Y4YjdiZDE4Y2RiM2RhNTg2MDc4YThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTQ4LDggKzQ4LDggQEAg
ZW51bSBjbGFzcyBTdG9wUmVwbGF5UmVhc29uIDogdWludDhfdCB7CiBzdHJ1Y3QgUmVwbGF5UmVz
dWx0IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5NZW1vcnlEaXNwbGF5TGlzdD4gdHJhY2tlZERp
c3BsYXlMaXN0OwogICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVhZCB7IDAgfTsKLSAgICBPcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOwotICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7CisgICAgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXI7CiAgICAgU3RvcFJlcGxheVJlYXNvbiByZWFzb25Gb3JTdG9wcGluZyB7IFN0b3BS
ZXBsYXlSZWFzb246OlJlcGxheWVkQWxsSXRlbXMgfTsKIH07CiAKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAg
ICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAK
ICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlz
cGxheUxpc3QuY3BwCmluZGV4IDEyYjAyNjVhOWM5MDNkMTFjOWZkOWMxNzY2OTAwNTgyYzRkMGY4
YmYuLmVjYTUzNTg2MjliMDI3YTM2ZWQ4N2U2OWQ0Mzk4MDE0N2UxNjdiZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURp
c3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLU9wdGlvbmFsPHN0ZDo6
c2l6ZV90PiBJbk1lbW9yeURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50OjpyZXF1aXJlZFNpemVG
b3JJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxzdGQ6OnNpemVfdD4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVu
dDo6cmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0
SXRlbSkgY29uc3QKIHsKICAgICByZXR1cm4gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVz
KGRpc3BsYXlMaXN0SXRlbSk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgSW5NZW1vcnlEaXNw
bGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6ZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBsb2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQog
Ci1PcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5
TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitz
dGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3Bs
YXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikK
IHsKICAgICBjb25zdCBJdGVtSGFuZGxlIGRhdGFIYW5kbGUgeyBjb25zdF9jYXN0PHVpbnQ4X3Qq
PihkYXRhKSB9OwogICAgIEFTU0VSVF9VTlVTRUQoZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCA+PSBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGF0YUhhbmRsZS50eXBlKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCmluZGV4IDFjYzA4YWZhYmZmMmRhNTdjMWMy
ZDE4ZDg5NmZkY2Y5NWRjYWEzZDEuLjdhN2YwNjBjM2ZlOGE5NTc5MzlhMjFiZDMzZjEzZGQzMmZm
YmI5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaApAQCAtNDAsMTQg
KzQwLDE0IEBAIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBXcml0aW5nQ2xpZW50
IDogcHVibGljIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpzaXplX3Q+
IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWw7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0o
Y29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWw7CiAgICAgICAgIHZvaWQgZW5jb2Rl
SXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCB1aW50OF90KikgY29uc3QgZmluYWw7
CiAgICAgfTsKIAogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWRpbmdDbGllbnQgOiBwdWJs
aWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VO
VVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSwg
dWludDhfdCopIGZpbmFsOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBl
LCB1aW50OF90KikgZmluYWw7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApp
bmRleCBlMjU5NjE3ZDExNDk4YWYwZjgwODMzMmI5MmE0YjNlN2Y5Y2ZjMzdlLi5mZDc3NGNhOTNh
ZjYxMTQ0MzIzZDY2NDE5Mzc3MzQ0M2YxZDBhMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0y
ODUsNyArMjg1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1
bHQoKQogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1SZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0
IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFj
ZSkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRS
ZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgp
KTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXpl
KSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJF
ZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogICAgIHJldHVy
biBwaXhlbEFycmF5OwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBJ
bnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0
aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5
JiBzb3VyY2UsIFVpbnQ4Q2xhbQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZl
cikKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29s
b3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2lu
ZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlz
IHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJU
b0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYQogICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJU
b0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBw
aXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZvcm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1
dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRBbHBoYUZvcm1hdCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBkb25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxC
dWZmZXJDb252ZXJzaW9uLgogCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkm
IGRlc3QKICAgICBjb3B5SW1hZ2VCeXRlcyhjb252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBk
ZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVs
dGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3Zv
aWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsK
ICAgICAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAgY29w
eUltYWdlQnl0ZXMobV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlv
biwgcmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3Vs
dChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlKQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTU4NCw3
ICs1ODQsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCgpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLU9wdGlv
bmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiB7CiAgICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZl
Y3QgJXMgJXAgY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRo
aXMpOwogCkBAIC02MDMsNyArNjAzLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJF
ZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKICAgICByZXR1cm4gbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJF
ZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCitzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQo
KQogewogICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRlck5hbWUoKSwgdGhpcyk7CiAKQEAgLTYyMiw3ICs2MjIs
NyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KCkKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7
CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNv
bnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZXN0aW5hdGlvbkNvbG9y
U3BhY2UpCitib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VD
b252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZXN0aW5hdGlv
bkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gZGV0ZXJt
aW5lcyB3aGV0aGVyIHdlIG5lZWQgdGhlIHN0ZXAgb2YgYW4gZXh0cmEgY29sb3Igc3BhY2UgY29u
dmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggYTM3MDAwYTNjYzA5NTM1ZDAxYzllMGQ2N2QzZjA3
NGI4NTA4NDBkMy4uYjRhZDlhZGMwNDYyODJmMGRhZTI4YWQxNGQ2Nzg2ZTgwZDY1M2FlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oCkBAIC04NCwxMCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJS
ZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQo
KTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25z
dCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9w
dCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNv
bnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxs
b3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChV
aW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0Jiwgc3RkOjpvcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIHN0
ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
dm9pZCBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9
IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBzdGQ6Om9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZl
Y3RvciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkVmZmVjdElucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsg
fQpAQCAtMTg3LDggKzE4Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IGZpbHRlck5hbWUoKSBjb25zdCA9IDA7CiAKICAgICBJbWFnZUJ1ZmZlciogY3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlw
bGllZEltYWdlUmVzdWx0KCk7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBjcmVhdGVQcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYg
Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYgY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAKICAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25seSBvcGVyYXRlIGNvcnJlY3RseSBvbiB2YWxp
ZCBSR0JBIHZhbHVlcywgd2l0aAogICAgIC8vIGFscGhhIGluIFswLDI1NV0gYW5kIGVhY2ggY29s
b3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0uCkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJj
ZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7
CiAgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVm
ZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgSW50UmVjdCYpOwotICAgIGJvb2wgcmVxdWly
ZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJU
b0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBj
b25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOworICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZl
ckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNl
Pik7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29u
c3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2Zp
bHRlcjsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CiAKICAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiAKICAgICBJbnRSZWN0IG1fYWJz
b2x1dGVQYWludFJlY3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXgg
N2YwODA4ZGIwMmFlNGZlOWQwMDg5YTZjMDZlY2Q3MzU4YmRhZjY4Zi4uMzIwZTI0MGU0YTNhNzYz
ZjhmMjc5NDhiN2FhM2YzNzM3MTEyN2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgcmV0dXJu
IHBsYXRmb3JtRGF0YTsKIH0KIAotT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBs
YXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKQorc3RkOjpvcHRpb25hbDxB
U0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2lt
cGxlRm9udERhdGFGcmVlVHlwZS5jcHAKaW5kZXggZTc5MTk3OWM0ODE3ZTExYmM5MmEwMGVkODQ4
NzQ1ODdjODBhZjhkMC4uNTVkYTlhOTMwNWM2YTdiYjYyN2NiOTQwOGQ2NGM2MzdhM2Y5Mzk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2lt
cGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgc3RhdGljIGZsb2F0IHNjYWxlZEZvbnRTY2FsZUZhY3RvcihjYWlyb19zY2FsZWRfZm9udF90
KiBzY2FsZWRGb250KQogICAgIHJldHVybiB4U2NhbGUgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KGRldGVybWluYW50IC8geFNjYWxlKSA6IDAuOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGZvbnRVbml0c1BlckVtKEZUX0ZhY2UgZnJlZVR5cGVGYWNlKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1BlckVtKEZUX0ZhY2UgZnJlZVR5cGVGYWNlKQogewog
ICAgIGlmIChmcmVlVHlwZUZhY2UtPnVuaXRzX3Blcl9FTSkKICAgICAgICAgcmV0dXJuIGZyZWVU
eXBlRmFjZS0+dW5pdHNfcGVyX0VNOwpAQCAtMTE0LDEwICsxMTQsMTAgQEAgdm9pZCBGb250Ojpw
bGF0Zm9ybUluaXQoKQogICAgIGZsb2F0IGRlc2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KGZvbnRFeHRlbnRzLmRlc2NlbnQpOwogICAgIGZsb2F0IGNhcEhlaWdodCA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoZm9udEV4dGVudHMuaGVpZ2h0KTsKICAgICBmbG9hdCBsaW5lR2FwID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChmb250RXh0ZW50cy5oZWlnaHQgLSBmb250RXh0ZW50cy5hc2Nl
bnQgLSBmb250RXh0ZW50cy5kZXNjZW50KTsKLSAgICBPcHRpb25hbDxmbG9hdD4geEhlaWdodDsK
LSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdW5pdHNQZXJFbTsKLSAgICBPcHRpb25hbDxmbG9hdD4g
dW5kZXJsaW5lUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHVuZGVybGluZVRoaWNrbmVz
czsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB4SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHVuaXRzUGVyRW07CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5l
UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lVGhpY2tuZXNzOwog
CiAgICAgewogICAgICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3Bs
YXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgRm9udDo6
dmFyaWFudENhcHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMg
Zm9udFZhcmlhbnRDCiAgICAgfQogfQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2Rl
UG9pbnQoVUNoYXIzMiBjaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlvbikgY29u
c3QKK2Jvb2wgRm9udDo6cGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNoYXJhY3Rl
ciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAgQ2Fpcm9G
dEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgp
KTsKICAgICBpZiAoRlRfRmFjZSBmYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQmluZEdy
b3VwQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
QmluZEdyb3VwQWxsb2NhdG9yLmgKaW5kZXggNTZlMGFkNjA5MjI2MzNiZTViNjRkMWVmY2QyNGNh
MTRmODJkM2M4Mi4uYzI3NjE3ZmM4MDgyNTk3YTI3OTMyMzY0OWI2M2U3MmUzYjUzMDQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJpbmRHcm91
cEFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVCaW5kR3JvdXBBbGxvY2F0b3IuaApAQCAtNDIsMTMgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEdQVUJpbmRHcm91cEFsbG9jYXRvcj4gY3JlYXRlKEdQVUVycm9yU2NvcGVzJik7
CiAKICAgICBzdHJ1Y3QgQXJndW1lbnRCdWZmZXJPZmZzZXRzIHsKLSAgICAgICAgT3B0aW9uYWw8
UGxhdGZvcm1HUFVCdWZmZXJPZmZzZXQ+IHZlcnRleDsKLSAgICAgICAgT3B0aW9uYWw8UGxhdGZv
cm1HUFVCdWZmZXJPZmZzZXQ+IGZyYWdtZW50OwotICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybUdQ
VUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQ
VUJ1ZmZlck9mZnNldD4gdmVydGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtR1BV
QnVmZmVyT2Zmc2V0PiBmcmFnbWVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUdQ
VUJ1ZmZlck9mZnNldD4gY29tcHV0ZTsKICAgICB9OwogCiAjaWYgVVNFKE1FVEFMKQotICAgIE9w
dGlvbmFsPEFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExB
cmd1bWVudEVuY29kZXIgKnZlcnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRM
QXJndW1lbnRFbmNvZGVyICpjb21wdXRlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFyZ3VtZW50QnVm
ZmVyT2Zmc2V0cz4gYWxsb2NhdGVBbmRTZXRFbmNvZGVycyhNVExBcmd1bWVudEVuY29kZXIgKnZl
cnRleCwgTVRMQXJndW1lbnRFbmNvZGVyICpmcmFnbWVudCwgTVRMQXJndW1lbnRFbmNvZGVyICpj
b21wdXRlKTsKICNlbmRpZgogCiAgICAgdm9pZCB0cnlSZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCmluZGV4IGViNzcxYzkyZjI2
ZGYzZGM3ZWVmMTM2NGVkM2QwMWMwMWUyZjEyNDQuLmJmMTJlODA3NTMyNGJjZmM0YTNiZTMwYmI0
NGY3NmQ0MjIyMmIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRGV2aWNlLmgKQEAgLTY5LDcgKzY5LDcgQEAgZW51bSBjbGFzcyBHUFVCdWZmZXJN
YXBwZWRPcHRpb247CiAKIGNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURl
dmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxHUFVEZXZpY2U+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3JlYXRlKGNvbnN0IE9wdGlvbmFsPEdQVVJlcXVl
c3RBZGFwdGVyT3B0aW9ucz4mKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdQVURldmljZT4gdHJ5Q3Jl
YXRlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwogICAg
IHN0YXRpYyB2b2lkIHByZXdhcm0oKTsKIAogICAgIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0
ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
LCBHUFVFcnJvclNjb3BlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKaW5kZXggZTI5MjZiZDAwNzdmOTM1NzA0
YmZhNWQxZjJjYThjNTE0ZjkwN2M4Zi4uMmJlZTljZjFiZmQwYzAyYzIwNTViNzIyNDAxMjE4Mzg0
ZDM2YzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yU2NvcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgR1BVRXJyb3JT
Y29wZXM6OnB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRlcikKICAgICBtX2Vycm9y
U2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAK
LU9wdGlvbmFsPEdQVUVycm9yPiBHUFVFcnJvclNjb3Blczo6cG9wRXJyb3JTY29wZShTdHJpbmcm
IGZhaWxNZXNzYWdlKQorc3RkOjpvcHRpb25hbDxHUFVFcnJvcj4gR1BVRXJyb3JTY29wZXM6OnBv
cEVycm9yU2NvcGUoU3RyaW5nJiBmYWlsTWVzc2FnZSkKIHsKICAgICBpZiAobV9lcnJvclNjb3Bl
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmFpbE1lc3NhZ2UgPSAiTm8gZXJyb3Igc2NvcGUgZXhp
c3RzISI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvclNjb3Blcy5oCmluZGV4IDRkNGZkNWEwYjIyNmFkMjQ2MGQzNWNmNGM5ZDg0OWI1MTBi
YjgzMjQuLjIxZmE2MTAwMzgxZmQyMGFjODM1NGM2MDhlMGFiMDg0NjZhMWRjMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Bl
cy5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEdQVUVycm9yU2Nv
cGVzPiBjcmVhdGUoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHB1c2hF
cnJvclNjb3BlKEdQVUVycm9yRmlsdGVyKTsKLSAgICBPcHRpb25hbDxHUFVFcnJvcj4gcG9wRXJy
b3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVUVycm9y
PiBwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpOwogCiAgICAgdm9pZCBnZW5lcmF0
ZUVycm9yKGNvbnN0IFN0cmluZyYsIEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZh
bGlkYXRpb24pOwogICAgIHZvaWQgZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYp
OwpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBFcnJvclNj
b3BlIHsKICAgICAgICAgY29uc3QgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyOwotICAgICAgICBPcHRp
b25hbDxHUFVFcnJvcj4gZXJyb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BVRXJyb3I+IGVy
cm9yOwogICAgIH07CiAKICAgICBHUFVFcnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFj
ayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKaW5kZXggYTY4MGViNzYzYjJhZDdlZWQ3
Yjg5MDZhNjIxMDQ2MDNhMjcyOTkxYy4uODhiY2ViMzkyNmM0ZDdkNjk5NTY1NzczMzQ5YmVjNDU0
MGIyMTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAg
c3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBmaW5h
bCA6IEdQVVJlbmRlclBhc3NEZXB0aFMKIAogc3RydWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IHsKICAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNv
bG9yQXR0YWNobWVudHM7Ci0gICAgT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPiBkZXB0
aFN0ZW5jaWxBdHRhY2htZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVs
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlw
ZWxpbmUuaAppbmRleCA3OGNiMTFiOGY1NTUyN2FhOTEyYjM4NGMyNjFmZTEyZTRiYjUwM2MyLi45
YzU2ODljYzQwNTg0ZWFmMTMwZjFiZDI2MTA0NzVjNWRkM2IzMzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUu
aApAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZW5kZXJQaXBlbGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgcmVjb21waWxlKGNvbnN0IEdQ
VURldmljZSYsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYmIHZlcnRleFN0YWdlLCBP
cHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiYgZnJhZ21lbnRTdGFnZSk7
CisgICAgYm9vbCByZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yJiYgdmVydGV4U3RhZ2UsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yPiYmIGZyYWdtZW50U3RhZ2UpOwogCiAjaWYgVVNFKE1FVEFMKQogICAg
IE1UTERlcHRoU3RlbmNpbFN0YXRlICpkZXB0aFN0ZW5jaWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVwdGhTdGVuY2lsU3RhdGUuZ2V0KCk7IH0KICNlbmRpZgogICAgIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmUqIHBsYXRmb3JtUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KICAgICBHUFVQcmltaXRpdmVUb3BvbG9neSBwcmlt
aXRpdmVUb3BvbG9neSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVG9wb2xvZ3k7IH0KLSAg
ICBPcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4Rm9ybWF0OyB9CisgICAgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gaW5kZXhG
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4Rm9ybWF0OyB9CiAKIHByaXZhdGU6CiAjaWYg
VVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5j
aWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2
ZVRvcG9sb2d5LCBPcHRpb25hbDxHUFVJbmRleEZvcm1hdD4sIGNvbnN0IFJlZlB0cjxHUFVQaXBl
bGluZUxheW91dD4mLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJik7Cisg
ICAgR1BVUmVuZGVyUGlwZWxpbmUoUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiYmLCBQ
bGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHImJiwgR1BVUHJpbWl0aXZlVG9wb2xvZ3ksIHN0
ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+LCBjb25zdCBSZWZQdHI8R1BVUGlwZWxpbmVMYXlv
dXQ+JiwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYpOwogCiAgICAgUmV0
YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBtX2RlcHRoU3RlbmNpbFN0YXRlOwogI2VuZGlm
IC8vIFVTRShNRVRBTCkKICAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9wbGF0
Zm9ybVJlbmRlclBpcGVsaW5lOwogICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5IG1fcHJpbWl0aXZl
VG9wb2xvZ3k7Ci0gICAgT3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IG1faW5kZXhGb3JtYXQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxHUFVJbmRleEZvcm1hdD4gbV9pbmRleEZvcm1hdDsKIAogICAgIC8v
IFByZXNlcnZlZCBmb3IgV2ViIEluc3BlY3RvciByZWNvbXBpbGF0aW9uLgogICAgIFJlZlB0cjxH
UFVQaXBlbGluZUxheW91dD4gbV9sYXlvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgKaW5kZXggNjcyOGE3MzA1NWRiMGU3ZGM2M2Q4MDg5OGEzNTE2Y2NhOWNiMmUyOC4uMWE3
ZWJkNmU5YzYyZGExOWY5ZDk4YmViZjFmYzliZDZjODg2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaApAQCAtNDgsMTIgKzQ4LDEyIEBAIGVudW0gY2xhc3MgR1BVUHJp
bWl0aXZlVG9wb2xvZ3kgewogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2Ug
ewogICAgIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OwogICAgIFZlY3Rv
cjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4gY29sb3JTdGF0ZXM7Ci0gICAgT3B0aW9uYWw8R1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yPiBkZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcj4gZGVwdGhTdGVuY2lsU3Rh
dGU7CiAgICAgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHZlcnRleElucHV0OwogfTsKIAogc3Ry
dWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcihSZWZQdHI8R1BVUGlwZWxpbmVMYXlvdXQ+JiYgbGF5b3V0LCBHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2ZXJ0ZXgsIE9wdGlvbmFsPEdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcj4mJiBmcmFnbWVudCwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZSYgYmFzZSkKKyAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoUmVmUHRy
PEdQVVBpcGVsaW5lTGF5b3V0PiYmIGxheW91dCwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yJiYgdmVydGV4LCBzdGQ6Om9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4mJiBmcmFnbWVudCwgY29uc3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYgYmFz
ZSkKICAgICAgICAgOiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsgV1RGTW92ZShsYXlvdXQp
IH0KICAgICAgICAgLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlKGJhc2UpCiAgICAg
ICAgICwgdmVydGV4U3RhZ2UoV1RGTW92ZSh2ZXJ0ZXgpKQpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1
Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSwgR1BVUmVuZGVyUGlwZWxpbgogICAgIH0KIAogICAgIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmgKaW5kZXggMWY1ZTg4ZDQ0MzZiNTFh
ODlkNjQ2OTc1OTY5OGFiZGNkNTJlYTM5MC4uYmVkZjZmY2M3YmZhNmVkNzJmZDBkOThiM2Q5MjNh
NzU1NTY4MWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaApAQCAtMzcsNyArMzcs
NyBAQCBlbnVtIGNsYXNzIEdQVVBvd2VyUHJlZmVyZW5jZSB7CiB9OwogCiBzdHJ1Y3QgR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zIHsKLSAgICBPcHRpb25hbDxHUFVQb3dlclByZWZlcmVuY2U+IHBv
d2VyUHJlZmVyZW5jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQVVBvd2VyUHJlZmVyZW5jZT4gcG93
ZXJQcmVmZXJlbmNlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0
ZXhJbnB1dERlc2NyaXB0b3IuaAppbmRleCA2YmY5NmM0ZjBhOTRkZjM3NDBiYzk3OTE3YWZmZTY3
ZWJkZWU2YmI5Li45ODIzMmZlNTk5MTVlZjVhOTFhOGFhNWFhNThlNzRjMDY0MzlkYTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oCkBAIC0zOSw3ICszOSw3IEBAIGVudW0gY2xhc3Mg
R1BVSW5kZXhGb3JtYXQgewogCiBzdHJ1Y3QgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yIHsKICAg
ICBHUFVJbmRleEZvcm1hdCBpbmRleEZvcm1hdDsKLSAgICBWZWN0b3I8T3B0aW9uYWw8R1BVVmVy
dGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0
aW9uYWw8R1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcj4+IHZlcnRleEJ1ZmZlcnM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2NhdG9yTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwQWxsb2Nh
dG9yTWV0YWwubW0KaW5kZXggNDhmYjAyZGZjOTQyNDAxMTlmMjZkNGMwMGRkZWZiZjU1MzgxNGYz
Zi4uNjMxNDc0Y2E3OTk4Nzg3ZDAwNTJmNzE2NmJkNzVjYTk3NDBhZGM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFs
bG9jYXRvck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCaW5kR3JvdXBBbGxvY2F0b3JNZXRhbC5tbQpAQCAtNDcsNyArNDcsNyBAQCBH
UFVCaW5kR3JvdXBBbGxvY2F0b3I6OkdQVUJpbmRHcm91cEFsbG9jYXRvcihHUFVFcnJvclNjb3Bl
cyYgZXJyb3JzKQogCiAjaWYgVVNFKE1FVEFMKQogCi1PcHRpb25hbDxHUFVCaW5kR3JvdXBBbGxv
Y2F0b3I6OkFyZ3VtZW50QnVmZmVyT2Zmc2V0cz4gR1BVQmluZEdyb3VwQWxsb2NhdG9yOjphbGxv
Y2F0ZUFuZFNldEVuY29kZXJzKE1UTEFyZ3VtZW50RW5jb2RlciAqdmVydGV4LCBNVExBcmd1bWVu
dEVuY29kZXIgKmZyYWdtZW50LCBNVExBcmd1bWVudEVuY29kZXIgKmNvbXB1dGUpCitzdGQ6Om9w
dGlvbmFsPEdQVUJpbmRHcm91cEFsbG9jYXRvcjo6QXJndW1lbnRCdWZmZXJPZmZzZXRzPiBHUFVC
aW5kR3JvdXBBbGxvY2F0b3I6OmFsbG9jYXRlQW5kU2V0RW5jb2RlcnMoTVRMQXJndW1lbnRFbmNv
ZGVyICp2ZXJ0ZXgsIE1UTEFyZ3VtZW50RW5jb2RlciAqZnJhZ21lbnQsIE1UTEFyZ3VtZW50RW5j
b2RlciAqY29tcHV0ZSkKIHsKICAgICBpZDxNVExEZXZpY2U+IGRldmljZSA9IG5pbDsKICAgICBh
dXRvIGNoZWNrZWRPZmZzZXQgPSBDaGVja2VkPE5TVUludGVnZXI+KG1fbGFzdE9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QmluZEdyb3VwTGF5b3V0TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTGF5b3V0TWV0YWwubW0KaW5kZXggYTkwZWNkYjQyNTli
OTc3M2MzZDE3M2ZmNzcyNzI4YjFkNGE2NmJkNS4uOTc5YWNmNzg2YmJiZWU3YTkxYTA3YTM0NmU3
ZjAxZTRlMWMwMGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cExheW91dE1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBMYXlvdXRNZXRhbC5t
bQpAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxHUFVCaW5kR3JvdXBMYXlvdXQ+IEdQVUJpbmRH
cm91cExheW91dDo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlCiAgICAgdW5zaWdu
ZWQgaW50ZXJuYWxOYW1lID0gMDsKICAgICB1bnNpZ25lZCBpbnRlcm5hbExlbmd0aEJhc2UgPSBk
ZXNjcmlwdG9yLmJpbmRpbmdzLnNpemUoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGJpbmRpbmcg
OiBkZXNjcmlwdG9yLmJpbmRpbmdzKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBleHRy
YUluZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBleHRyYUluZGV4OwogICAg
ICAgICBhdXRvIGludGVybmFsRGV0YWlscyA9IChbJl0oKSAtPiBHUFVCaW5kR3JvdXBMYXlvdXQ6
OkludGVybmFsQmluZGluZ0RldGFpbHMgewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5
cGUpIHsKICAgICAgICAgICAgIGNhc2UgR1BVQmluZGluZ1R5cGU6OlVuaWZvcm1CdWZmZXI6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KaW5kZXggYTllYzE3YjhjYzA0ZGQyNTJlZDYxZjc3
ZWVmNWI3MTgxY2JjYTBiZC4uZGUzNDQyNmI0ZTU0OGUwMGE1NWIzZWI1NTkyMmY5M2ZhMTc3ZjA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQpAQCAtNDEsNyArNDEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1zdGF0aWMgT3B0aW9uYWw8R1BVQnVmZmVyQmluZGlu
Zz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJpbmRpbmcoY29uc3QgR1BVQmluZGluZ1Jlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8R1BVQnVmZmVyQmluZGluZz4gdHJ5R2V0UmVzb3VyY2VBc0J1ZmZlckJpbmRpbmco
Y29uc3QgR1BVQmluZGluZ1Jlc291cmNlJiByZXNvdXJjZSwgY29uc3QgY2hhciogY29uc3QgZnVu
Y3Rpb25OYW1lKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIFVOVVNFRF9QQVJBTShmdW5jdGlv
bk5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCmluZGV4IDc5
YTk5ZGM1YzRiNjY4MzY5NzE4ODg4NDQ4NDM3MGEyMzAxZTcxMzIuLmE5Y2EzNzhhMGVhZmRiM2Zh
NjM2M2VkYTFmYTBjMGZmMWYxOTM5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVs
aW5lTWV0YWwubW0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5j
dGlvbnMoTVRMTGlicmFyeSAqY29tcHV0ZU1ldGFsTGlicmFyeSwgTVRMQ29tcHV0ZVBpcGUKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5z
aW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
ciYgY29tcHV0ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciogbXRsRGVzY3JpcHRvciwgT3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5
U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciYgY29tcHV0
ZVN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciogbXRsRGVzY3JpcHRvciwgc3RkOjpvcHRpb25hbDxXSExTTDo6Q29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQogewogICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBjb21wdXRlTGlicmFyeTsKICAgICBTdHJp
bmcgY29tcHV0ZUVudHJ5UG9pbnQ7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RydWN0IENvbnZlcnRS
ZXN1bHQgewogICAgIFdITFNMOjpDb21wdXRlRGltZW5zaW9ucyBjb21wdXRlRGltZW5zaW9uczsK
IH07CiAKLXN0YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVz
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3Bl
cykKIHsKICAgICBSZXRhaW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVz
Y3JpcHRvcjsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVz
dWx0PiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlCiAK
ICAgICBib29sIGlzV2hsc2wgPSBjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVsZSgpOwog
Ci0gICAgT3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IHdobHNsRGVz
Y3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yPiB3aGxzbERlc2NyaXB0b3I7CiAgICAgaWYgKGlzV2hsc2wpCiAgICAgICAgIHdobHNsRGVz
Y3JpcHRvciA9IFdITFNMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKCk7CiAKQEAgLTE2MCw3
ICsxNjAsNyBAQCBzdHJ1Y3QgQ3JlYXRlUmVzdWx0IHsKICAgICBXSExTTDo6Q29tcHV0ZURpbWVu
c2lvbnMgY29tcHV0ZURpbWVuc2lvbnM7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8Q3JlYXRlUmVz
dWx0PiB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3JlYXRlUmVz
dWx0PiB0cnlDcmVhdGVNVExDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZh
bGlkIEdQVURldmljZSEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQppbmRleCBhNGYyYTgxZmRj
ZTI5Nzg2YmEzNDA1OWIwZWNhZjVhOTg3NjMyYTAzLi5hMzhmNjk1YTg3MzAyZjk1MDExMjNlOGI1
ZTNmMmE5YWMwZTBjOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCkBAIC01Miw3ICs1Miw3
IEBAIHZvaWQgR1BVRGV2aWNlOjpwcmV3YXJtKCkKICNlbmRpZgogfQogCi1SZWZQdHI8R1BVRGV2
aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZShjb25zdCBPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnM+JiBvcHRpb25zKQorUmVmUHRyPEdQVURldmljZT4gR1BVRGV2aWNlOjp0cnlDcmVh
dGUoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiBvcHRpb25z
KQogewogICAgIFJldGFpblB0cjxNVExEZXZpY2U+IGRldmljZVB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0
YWxDb252ZXJ0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKaW5kZXggMzU0YzZhMmE5
ZjUzMzkwOTY0OTlhYTdiYmI0YWQ2YmFiOTdhODA2Ny4uNWVlMDk4OGM5MzBhMDBiNzQ2Nzc3Yzdh
MDZiN2Q5ZDFmNDEzMTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRh
bENvbnZlcnRMYXlvdXQuY3BwCkBAIC00NSwyNCArNDUsMjQgQEAgc3RhdGljIE9wdGlvblNldDxX
SExTTDo6U2hhZGVyU3RhZ2U+IGNvbnZlcnRTaGFkZXJTdGFnZUZsYWdzKEdQVVNoYWRlclN0YWdl
RmxhZ3MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiBjb252ZXJ0QmluZGluZ1R5cGUoR1BVQmluZEdyb3VwTGF5
b3V0OjpJbnRlcm5hbEJpbmRpbmdEZXRhaWxzIGludGVybmFsQmluZGluZ0RldGFpbHMpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IGNvbnZlcnRC
aW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMYXlvdXQ6OkludGVybmFsQmluZGluZ0RldGFpbHMgaW50
ZXJuYWxCaW5kaW5nRGV0YWlscykKIHsKLSAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZl
cikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgcmV0
dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpV
bmlmb3JtQnVmZmVyIHVuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6OkJpbmRp
bmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVm
ZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKLSAgICB9
LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9u
YWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRH
cm91cExheW91dDo6RHluYW1pY1VuaWZvcm1CdWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8V0hMU0w6
OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hM
U0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6U2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0Rl
dGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlNhbXBsZXJCaW5kaW5nIHsgfSB9Owot
ICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0dXJlKSAtPiBPcHRpb25h
bDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKKyAgICB9LCBbJl0oR1BVQmluZEdy
b3VwTGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkgLT4gc3RkOjpvcHRpb25hbDxXSExTTDo6QmluZGlu
Zzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlRleHR1cmVCaW5k
aW5nIHsgfSB9OwotICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlN0b3JhZ2VCdWZmZXIg
c3RvcmFnZUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxz
PiB7CisgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdl
QnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4g
ewogICAgICAgICByZXR1cm4geyBXSExTTDo6U3RvcmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdl
QnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07Ci0gICAgfSwgWyZdKEdQVUJpbmRHcm91cExh
eW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpC
aW5kaW5nRGV0YWlscz4geworICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNT
dG9yYWdlQnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0
YWlscz4gewogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0pLCBpbnRlcm5hbEJp
bmRpbmdEZXRhaWxzKTsKIH0KIAotT3B0aW9uYWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91
dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYgbGF5b3V0KQorc3RkOjpvcHRpb25hbDxXSExTTDo6
TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlvdXQpCiB7
CiAgICAgV0hMU0w6OkxheW91dCByZXN1bHQ7CiAgICAgaWYgKGxheW91dC5iaW5kR3JvdXBMYXlv
dXRzKCkuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBp
cGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAppbmRleCA4ZTI5
ZDkzYWYwMjVlYTJlMWE2MTFjY2FmMzkyZTAwY2MxNmJiNjIwLi44MDUxZWUzZjdlZTExOTYxMWJj
OTk4MTM0N2UxMzBiMDMwNTJmZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVN
ZXRhbENvbnZlcnRMYXlvdXQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwogCi1PcHRpb25hbDxXSExTTDo6TGF5b3V0PiBj
b252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0Jik7CitzdGQ6Om9wdGlvbmFsPFdI
TFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCmluZGV4IGE4NDdjZTAz
ZjUyZjlhMjU2ZDkxMjAzMmVlM2RiMmJjODg0Zjk5MWEuLjhiM2JjNzc4YTYxMjJlNGE0MWMxYmM3
YmZhODc1NmFkZmUwM2ZkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFs
Lm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIFdITFNMOjpWZXJ0ZXhGb3JtYXQgY29udmVy
dFZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KQogICAgIH0KIH0KIAot
c3RhdGljIE9wdGlvbmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1h
dChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdITFNMOjpU
ZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1h
dCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6
UmdiYTh1bm9ybToKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgTVRMVmVydGV4U3RlcEZ1bmN0
aW9uIG10bFN0ZXBGdW5jdGlvbkZvckdQVUlucHV0U3RlcE1vZGUoR1BVSW5wdXRTdGVwTW9kZQog
Ly8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIEdQVUxpbWl0cyB3aGVuIHRoYXQgaXMgaW1wbGVtZW50
ZWQgcHJvcGVybHkuCiBjb25zdGV4cHIgdW5zaWduZWQgbWF4VmVydGV4QXR0cmlidXRlcyA9IDE2
OwogCi1zdGF0aWMgYm9vbCB0cnlTZXRWZXJ0ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJbnB1dERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVz
Y3JpcHRvciwgT3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNs
RGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQorc3RhdGljIGJvb2wgdHJ5
U2V0VmVydGV4SW5wdXQoY29uc3QgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIHN0ZDo6b3B0aW9u
YWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3JpcHRvciwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIGNvbnN0IGF1dG8mIGJ1ZmZlcnMgPSBk
ZXNjcmlwdG9yLnZlcnRleEJ1ZmZlcnM7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgTVRM
QmxlbmRGYWN0b3IgbXRsQmxlbmRGYWN0b3JGb3JHUFVCbGVuZEZhY3RvcihHUFVCbGVuZEZhY3Rv
ciBmYWN0b3IpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBib29sIHRy
eVNldENvbG9yU3RhdGVzKGNvbnN0IFZlY3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNv
bG9yU3RhdGVzLCBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSogYXJyYXksIE9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxz
bERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKK3N0YXRpYyBib29sIHRy
eVNldENvbG9yU3RhdGVzKGNvbnN0IFZlY3RvcjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNv
bG9yU3RhdGVzLCBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSogYXJyYXksIHN0ZDo6b3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4m
IHdobHNsRGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewogICAgIC8v
IEZJWE1FOiBSZXBsYWNlIHdpdGggbWF4aW11bSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMg
cGVyIHJlbmRlciBwYXNzIGZyb20gR1BVTGltaXRzLgogICAgIGlmIChjb2xvclN0YXRlcy5zaXpl
KCkgPiA0KSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5j
dGlvbnMoTVRMTGlicmFyeSAqdmVydGV4TWV0YWxMaWJyYXJ5LCBNVExMaWJyYXJ5ICpmcmEKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBH
UFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjb25zdCBPcHRpb25h
bDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlw
dG9yLCBPcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNj
cmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCitzdGF0aWMgYm9vbCB0cnlTZXRG
dW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFn
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+JiBm
cmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNj
b3BlcykKIHsKICAgICBSZXRhaW5QdHI8TVRMTGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21l
bnRMaWJyYXJ5OwogICAgIFN0cmluZyB2ZXJ0ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9p
bnQ7CkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+IGNvbnZlcnRSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoY28KICAgICBib29s
IGlzV2hsc2wgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCk7CiAKICAgICAvLyBT
ZXQgZGF0YSBmb3IgdGhlIE1ldGFsIHBpcGVsaW5lIGRlc2NyaXB0b3IgKGFuZCBXSExTTCdzLCBp
ZiBuZWVkZWQpLgotICAgIE9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+
IHdobHNsRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdITFNMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+IHdobHNsRGVzY3JpcHRvcjsKICAgICBpZiAoaXNXaGxzbCkKICAgICAgICAg
d2hsc2xEZXNjcmlwdG9yID0gV0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwogCkBA
IC01MzAsNyArNTMwLDcgQEAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBl
bGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLAogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3Zl
KHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0
ZXhJbnB1dC5pbmRleEZvcm1hdCwgZGVzY3JpcHRvci5sYXlvdXQsIGRlc2NyaXB0b3IpKTsKIH0K
IAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0
aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9neSB0b3BvbG9neSwgT3B0aW9u
YWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1hdCwgY29uc3QgUmVmUHRyPEdQVVBpcGVsaW5lTGF5b3V0
PiYgbGF5b3V0LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JCYXNlJiByZW5kZXJE
ZXNjcmlwdG9yQmFzZSkKK0dQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShSZXRh
aW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhTdGVuY2lsLCBSZXRhaW5QdHI8TVRM
UmVuZGVyUGlwZWxpbmVTdGF0ZT4mJiBwaXBlbGluZSwgR1BVUHJpbWl0aXZlVG9wb2xvZ3kgdG9w
b2xvZ3ksIHN0ZDo6b3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1hdCwgY29uc3QgUmVmUHRy
PEdQVVBpcGVsaW5lTGF5b3V0PiYgbGF5b3V0LCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3JCYXNlJiByZW5kZXJEZXNjcmlwdG9yQmFzZSkKICAgICA6IEdQVVBpcGVsaW5lKCkKICAg
ICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpKQogICAgICwgbV9w
bGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQpAQCAtNTQzLDcgKzU0Myw3
IEBAIEdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShSZXRhaW5QdHI8TVRMRGVw
dGhTdGVuY2lsU3RhdGU+JiYgZGVwdGhTdGVuCiAKIEdQVVJlbmRlclBpcGVsaW5lOjp+R1BVUmVu
ZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29t
cGlsZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yJiYgdmVydGV4U3RhZ2UsIE9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRv
cj4mJiBmcmFnbWVudFN0YWdlKQorYm9vbCBHUFVSZW5kZXJQaXBlbGluZTo6cmVjb21waWxlKGNv
bnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3ImJiB2
ZXJ0ZXhTdGFnZSwgc3RkOjpvcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+
JiYgZnJhZ21lbnRTdGFnZSkKIHsKICAgICBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVz
Y3JpcHRvcihtYWtlUmVmUHRyKG1fbGF5b3V0LmdldCgpKSwgV1RGTW92ZSh2ZXJ0ZXhTdGFnZSks
IFdURk1vdmUoZnJhZ21lbnRTdGFnZSksIG1fcmVuZGVyRGVzY3JpcHRvckJhc2UpOwogICAgIGF1
dG8gZXJyb3JTY29wZXMgPSBHUFVFcnJvclNjb3Blczo6Y3JlYXRlKFtdIChHUFVFcnJvciYmKSB7
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmluZGV4IDY1NmYxNDhjZDczMTRkMTdk
OWZiYzQzYmE3YzIyZjFiNmIwZGEwYWEuLjY1ZDA1MDNhOTY1MGQ4ZjdmNTc3YWQ0NjYyZDZiNTQ5
OWI0NjRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTQxLDcgKzQxLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgT3B0aW9uYWw8TVRMUGl4ZWxGb3Jt
YXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVs
Rm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogewogICAgIGF1dG8gbXRsRm9ybWF0ID0g
c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRl
eHR1cmVGb3JtYXQoZm9ybWF0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmluZGV4IGFj
MmM0MmJmNjBjMjM2MzQ5YWY4NmNjMGIwZDE2YzQ0ODg1ZGUyMGIuLjQ3MmQ0ODk2MjVmM2QwN2Jm
YjAxZGQ5ZTAzODhlODAxMmZiNTM4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQpAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgTVRMVGV4dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVU
ZXh0dXJlRGVzY3JpcHRvcihjb25zdCBHUFVUZXh0dXJlRGVzYwogICAgIH0KIH0KIAotc3RhdGlj
IE9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVz
YWdlRmxhZ3MoT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBj
aGFyKiBjb25zdCBmdW5jdGlvbk5hbWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNVExUZXh0dXJl
VXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNldDxH
UFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiBmbGFncywgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Rhd24v
R1BVRGV2aWNlRGF3bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVEZXZpY2VEYXduLmNwcAppbmRleCBhN2JmYjE5MDk3MjAzMWI3NWY4ZWNkYTQwOTYz
ZjhmZDljMDg2MGQ0Li5iOWQzMjg3ODBhZTU5ZGJmNTQyYTg0MWFhM2VkZjQzZjEzZWJhNDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVE
ZXZpY2VEYXduLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVEZXZpY2VEYXduLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxHUFVEZXZpY2U+IEdQVURldmljZTo6dHJ5Q3JlYXRlKGNvbnN0IE9w
dGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMpCitSZWZQdHI8R1BVRGV2
aWNlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZShjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZGF3bi9HUFVSZW5k
ZXJQaXBlbGluZURhd24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2Rhd24vR1BVUmVuZGVyUGlwZWxpbmVEYXduLmNwcAppbmRleCAxN2EzMWFiNjYyMGViNDIwNDU4
OWFjOTNiZTg5MWNjMjFlZTMxZWE3Li5jNTJmZTFlYzA0ZmExY2Y5NWY3MzE2OGI0YTllNWRmODMw
NTk0ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
ZGF3bi9HUFVSZW5kZXJQaXBlbGluZURhd24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9kYXduL0dQVVJlbmRlclBpcGVsaW5lRGF3bi5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5
Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLAogCiBHUFVSZW5kZXJQaXBlbGluZTo6fkdQ
VVJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwogCi1ib29sIEdQVVJlbmRlclBpcGVsaW5lOjpy
ZWNvbXBpbGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciYmIHZlcnRleFN0YWdlLCBPcHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2Ny
aXB0b3I+JiYgZnJhZ21lbnRTdGFnZSkKK2Jvb2wgR1BVUmVuZGVyUGlwZWxpbmU6OnJlY29tcGls
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
JiYgdmVydGV4U3RhZ2UsIHN0ZDo6b3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlw
dG9yPiYmIGZyYWdtZW50U3RhZ2UpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5r
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggYzM5N2FjMGE0NjFiYjRkZjU5ZmZjOGRh
ZTNkZWU0NWM4ODFlNmFhOS4uNGNmYTRmZDg0YmNmYWE5N2RjNGY3M2UxYmRhZTFiNThmMjliMzBk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0xNTIsNyArMTUy
LDcgQEAgdm9pZCB3ZWJLaXRHTFZpZGVvU2lua0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAg
ICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CiB9
CiAKLU9wdGlvbmFsPEdSZWZQdHI8R3N0Q29udGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3Qg
Y2hhciogY29udGV4dFR5cGUpCitzdGQ6Om9wdGlvbmFsPEdSZWZQdHI8R3N0Q29udGV4dD4+IHJl
cXVlc3RHTENvbnRleHQoY29uc3QgY2hhciogY29udGV4dFR5cGUpCiB7CiAgICAgYXV0byYgc2hh
cmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5n
KCk7CiAgICAgYXV0byogZ3N0R0xEaXNwbGF5ID0gc2hhcmVkRGlzcGxheS5nc3RHTERpc3BsYXko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggNTU1OGJmYjMyZTkxOTA1Y2Y2Zjk5
MjUwZmY3M2ZjY2YyMGRkYjU5Ny4uZDE4ODg3ZjUxMmRiZjU2MjUwZDkyMzI4N2U2OTI1NGIxYWNl
OThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBi
b29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKGNvbnN0IEdzdENhcHMqIGNhcHMsIFdl
YkNvcmU6OkludFNpemUmIHNpemUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPEZs
b2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25z
dCBHc3RDYXBzKiBjYXBzKQogewogICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJ
REVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8g
Z2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0aGVzZSBhcmUgbm90IGEgdmlkZW8gY2FwcyIpOwpA
QCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgYXJlRW5jcnlwdGVkQ2Fwcyhjb25zdCBHc3RDYXBzKiBj
YXBzKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gc19VSVBy
b2Nlc3NDb21tYW5kTGluZU9wdGlvbnM7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gc19VSVByb2Nlc3NDb21tYW5kTGluZU9wdGlvbnM7CiB2b2lkIHNldEdTdHJlYW1lck9w
dGlvbnNGcm9tVUlQcm9jZXNzKFZlY3RvcjxTdHJpbmc+JiYgb3B0aW9ucykKIHsKICAgICBzX1VJ
UHJvY2Vzc0NvbW1hbmRMaW5lT3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKaW5kZXggYTMxNDlhMzZjN2YwOTU2MWEwYzMxZWY4MWMyMzI0ZDkwZTI2NzNm
OC4uMmRhNWM2ZGZjYWRhYTY5MTQ1MDlmMmI0N2M3OTFmNDgwOGJjZmM1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaApAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVj
a1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIEdzdFBhZCog
d2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUq
LCBjb25zdCBnY2hhciogbmFtZSwgR3N0UGFkKiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykK
IGJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoY29uc3QgR3N0Q2FwcyosIFdlYkNv
cmU6OkludFNpemUmLCBHc3RWaWRlb0Zvcm1hdCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVy
YXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKLU9w
dGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2Fw
cyopOworc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBz
KGNvbnN0IEdzdENhcHMqKTsKIGJvb2wgZ2V0U2FtcGxlVmlkZW9JbmZvKEdzdFNhbXBsZSosIEdz
dFZpZGVvSW5mbyYpOwogI2VuZGlmCiBjb25zdCBjaGFyKiBjYXBzTWVkaWFUeXBlKGNvbnN0IEdz
dENhcHMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5k
ZXggYTdmMjM0OGE1ZmM2ZTA5M2JiMzQwNTA4Y2Y3YzczZGIzZTg2NDk1MS4uZTlkZmJhMGE3YzY3
NWJkMmU5ZGZmYzhlMTY0NWRjZmNmZjEwMTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBHTGlzdCogR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpmYWN0b3J5KEdTdHJlYW1lclJlZ2lz
dHJ5U2NhbgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjpFbGVtZW50RmFjdG9yaWVzOjpoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGUgZmFjdG9yeVR5cGUsIGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcsIEVsZW1l
bnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyIHNob3VsZENoZWNrSGFyZHdhcmVD
bGFzc2lmaWVyLCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QpIGNvbnN0
CitHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6aGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlIGZhY3RvcnlUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3Ry
aW5nLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllciBzaG91bGRDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxs
b3dlZExpc3QpIGNvbnN0CiB7CiAgICAgYXV0byogZWxlbWVudEZhY3RvcmllcyA9IGZhY3Rvcnko
ZmFjdG9yeVR5cGUpOwogICAgIGlmICghZWxlbWVudEZhY3RvcmllcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaAppbmRleCBmNzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0
MzUyM2EzOTE5MDA0ZjFkLi43YjUxYjZlM2JjM2Q1NzM3NWY1N2UxOTlkMzY5Yjc5OGE5ODU1Mjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4
NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgR0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAK
ICAgICAgICAgZW51bSBjbGFzcyBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsK
LSAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBl
LCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNr
SGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93
ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1
bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBD
aGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QgPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogCiAgICAgICAgIEdMaXN0KiBhdWRpb0RlY29kZXJGYWN0b3JpZXMgeyBudWxscHRy
IH07CiAgICAgICAgIEdMaXN0KiBhdWRpb1BhcnNlckZhY3RvcmllcyB7IG51bGxwdHIgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNwcAppbmRleCBlZWYxMjc0
YmVkZjJjYTEwYTg0MzU1NDZhYTI2MTIyYThjZGI1ZGI0Li4zOTI5ZmJiM2YxNzRiY2JjZDhkMjc2
ZTBjZGIzM2YzMzE3MDg0ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJh
bWVIb2xkZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBs
ZSwgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3Jt
LCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCkKK0dzdFZp
ZGVvRnJhbWVIb2xkZXI6OkdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlKiBzYW1wbGUsIHN0
ZDo6b3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IHZpZGVvRGVjb2RlclBsYXRmb3Jt
LCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCkKICAgICA6
IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0odmlkZW9EZWNvZGVyUGxhdGZvcm0pCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoR1NUX0lTX1NBTVBMRShzYW1wbGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9s
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9GcmFtZUhvbGRlci5oCmluZGV4IDcxNDlhYjU4ZTgxYzc2ODE4MTljNThlNzUzYTFi
ODgzZWMzMWEzNDEuLmVjZDFiMTliNjE3NmVhNGNlM2MxN2U5ZjI1YzQzMThkM2YzNGJkYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuaApAQCAtMzAsNyArMzAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdzdFZpZGVvRnJhbWVIb2xkZXIgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlVubWFuYWdlZEJ1ZmZlckRh
dGFIb2xkZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IEdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0
U2FtcGxlKiwgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+LCBUZXh0dXJlTWFwcGVy
R0w6OkZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCk7CisgICAgZXhwbGljaXQgR3N0VmlkZW9GcmFt
ZUhvbGRlcihHc3RTYW1wbGUqLCBzdGQ6Om9wdGlvbmFsPEdzdFZpZGVvRGVjb2RlclBsYXRmb3Jt
PiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgYm9vbCBnc3RHTEVuYWJsZWQpOwogICAgIHZpcnR1
YWwgfkdzdFZpZGVvRnJhbWVIb2xkZXIoKTsKIAogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElT
UExBWV9ETUFCVUYpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgR3N0VmlkZW9GcmFt
ZSBtX3ZpZGVvRnJhbWUgeyB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIGJvb2wgbV9oYXNB
bHBoYUNoYW5uZWw7Ci0gICAgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlk
ZW9EZWNvZGVyUGxhdGZvcm07CisgICAgc3RkOjpvcHRpb25hbDxHc3RWaWRlb0RlY29kZXJQbGF0
Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0Zm9ybTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IG1fZmxhZ3MgeyB9OwogICAgIEdMdWludCBtX3RleHR1cmVJRCB7IDAgfTsKICNpZiBVU0UoR1NU
UkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDkxZjky
Y2JiY2NjOGIyNmVmMDc1YzcwYzg1NTBmOWE4NWE4OWU0ZTQuLjFkMWZjZTZhZGNkNmI5YmU5NjNj
ZjUxNGJkMTI1MWE5NjY4OTQ3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0
aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTUlNRVR5
cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7IH0K
LSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdCBmaW5hbCB7IHJldHVybiBzaXplKCk7IH0KICAgICBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVybiBzYW1wbGVBdElu
ZGV4KGluZGV4KTsgfQpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgRGVjb2RlT3Jk
ZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vyc29yOwogICAgIExvY2sgbV9zYW1wbGVHZW5lcmF0
b3JMb2NrOwogICAgIGJvb2wgbV9lb3MgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEludFNpemU+
IG1fc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKICAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI+IG1faW5uZXJEZWNvZGVyOwogICAgIENvbmRpdGlvbiBtX3NhbXBsZUNvbmRpdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWIx
ODAyMTFlZmEyNjIyZGVmMWFhNGE4NzI5ZmI2MjdjNTIyZjczZS4uY2EzZDhjNTAwMTg5ZmQ5MTIw
ZDQzYjRkM2Y0ZWRhMDM5MDZkMWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJl
dHVybiByZXNvbHZlZE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2lu
LmdldCgpKTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d291bGRUYWlu
dE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAogewogICAgIEdTVF9U
UkFDRV9PQkpFQ1QocGlwZWxpbmUoKSwgIkNoZWNraW5nICV1IG9yaWdpbnMiLCBtX29yaWdpbnMu
c2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogbV9vcmlnaW5zKSB7CkBA
IC0yODYxLDcgKzI4NjEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGVy
Zm9ybVRhc2tBdE1lZGlhVGltZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzawogICAgIGlmICghbV9w
aXBlbGluZSB8fCBtX2RpZEVycm9yT2NjdXIgfHwgbV9pc1NlZWtpbmcgfHwgbV9pc1BhdXNlZCB8
fCAhbV9wbGF5YmFja1JhdGUgfHwgIWN1cnJlbnRUaW1lLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gdGFza1RvU2NoZWR1
bGU7CisgICAgc3RkOjpvcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsK
ICAgICB7CiAgICAgICAgIERhdGFNdXRleExvY2tlciB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXIg
eyBtX1Rhc2tBdE1lZGlhVGltZVNjaGVkdWxlckRhdGFNdXRleCB9OwogICAgICAgICB0YXNrQXRN
ZWRpYVRpbWVTY2hlZHVsZXItPnNldFRhc2soV1RGTW92ZSh0YXNrKSwgdGltZSwKQEAgLTM1NTUs
NyArMzU1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRTdHJlYW1W
b2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVtZSogdm9sdW1lCiAgICAgZ19zaWduYWxfY29ubmVj
dF9zd2FwcGVkKG1fdm9sdW1lRWxlbWVudC5nZXQoKSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJB
Q0sobXV0ZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogfQogCi1PcHRpb25hbDxWaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzKCkKK3N0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcygpCiB7CiAgICAgaWYgKCF3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMTgsIDApICYm
ICFtX2Zwc1NpbmspCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZGYwMjk2Y2Q2M2VkOGYzNmM0
YmJjZjhkYTFlNmUyYzc3YWE2OTZkZS4uZDQzNGMwMWUwYWQwOGZmM2VmNjQ3MjdlOTg2YjBiZmNk
OTU4YmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFs
OwotICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4mKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNpbXVsYXRl
QXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKQEAgLTE4NCw3
ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBm
aW5hbDsKICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29u
c3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBm
aW5hbDsKICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgZmluYWw7
CiAgICAgYm9vbCBwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiwgY29u
c3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAKQEAgLTMyNiw3ICszMjYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmVmPE1haW5UaHJlYWROb3RpZmllcjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9u
b3RpZmllcjsKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgU3RyaW5nIG1fcmVmZXJy
ZXI7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxNZWRpYVRpbWU+IG1fY2FjaGVkUG9zaXRpb247Cisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gbV9jYWNoZWRQb3NpdGlvbjsKICAg
ICBtdXRhYmxlIE1lZGlhVGltZSBtX2NhY2hlZER1cmF0aW9uOwogICAgIGJvb2wgbV9jYW5GYWxs
QmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXND
aGFuZ2luZ1JhdGUgeyBmYWxzZSB9OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHByb3RlY3RlZDoKICAg
ICBib29sIG1faXNXYWl0aW5nRm9yS2V5IHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgT3B0aW9u
YWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07CisgICAg
c3RkOjpvcHRpb25hbDxHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybT4gbV92aWRlb0RlY29kZXJQbGF0
Zm9ybTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXIgewpA
QCAtNDAzLDEyICs0MDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fdGFzayA9IFdURk1v
dmUodGFzayk7CiAgICAgICAgICAgICBtX3BsYXliYWNrRGlyZWN0aW9uID0gcGxheWJhY2tEaXJl
Y3Rpb247CiAgICAgICAgIH0KLSAgICAgICAgT3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4gY2hl
Y2tUYXNrRm9yU2NoZWR1bGluZyhjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lKQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEZ1bmN0aW9uPHZvaWQoKT4+IGNoZWNrVGFza0ZvclNjaGVkdWxpbmco
Y29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX3RhcmdldFRpbWUuaXNWYWxpZCgpIHx8ICFjdXJyZW50VGltZS5pc0Zpbml0ZSgpCiAgICAg
ICAgICAgICAgICAgfHwgKG1fcGxheWJhY2tEaXJlY3Rpb24gPT0gRm9yd2FyZCAmJiBjdXJyZW50
VGltZSA8IG1fdGFyZ2V0VGltZSkKICAgICAgICAgICAgICAgICB8fCAobV9wbGF5YmFja0RpcmVj
dGlvbiA9PSBCYWNrd2FyZCAmJiBjdXJyZW50VGltZSA+IG1fdGFyZ2V0VGltZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZ1bmN0aW9uPHZvaWQoKT4+KCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RnVuY3Rpb248dm9pZCgpPj4oKTsKICAgICAgICAg
ICAgIG1fdGFyZ2V0VGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKICAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKG1fdGFzayk7CiAgICAgICAgIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCBw
cml2YXRlOgogICAgIG11dGFibGUgdWludDY0X3QgbV9yZWFkUG9zaXRpb25BdExhc3REaWRMb2Fk
aW5nUHJvZ3Jlc3MgeyAwIH07CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+IG1fb3JpZ2luczsKLSAgICBPcHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmln
aW4geyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzVGFpbnRl
ZE9yaWdpbiB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zw
c1NpbmsgeyBudWxscHRyIH07CiAgICAgdWludDY0X3QgbV90b3RhbFZpZGVvRnJhbWVzIHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCA4NTgyY2I2NjI1MDlhOGQy
ZmI1MDcyODE5OTU3MjMyMWViMTM1YmM1Li44ZjYwZDhhZjk1ZWNiZmUxNDc2NjU1MDUxMjU0NTZh
ZTk4Y2ZkNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5n
Q29weSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJ5
dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVm
UHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCAy
NmI4NmE1ZDA3NWZhNTYwYzVmYTg5ZjY0NTk2MjYwYWUyYjgxMTBmLi5hZGJkYzViMDhmOWI2NjMz
MTc5YjE3Mjg5YzIwMjBhMDM2ZTE2YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmNwcApAQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xk
ZXIgewogICAgICAgICAgICAgY2xvc2UoKmZkKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxzdGQ6
OnBhaXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgpCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8dWludDMyX3QsIHNpemVfdD4+IG1hcCgpCiAgICAgewogICAgICAgICBmZCA9IG1lbWZkX2Ny
ZWF0ZSgid3BlLWF1ZGlvLWJ1ZmZlciIsIE1GRF9DTE9FWEVDKTsKICAgICAgICAgaWYgKCpmZCA9
PSAtMSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQzMl90PiBmZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IGZkOwogICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4gYnVmZmVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaAppbmRleCBl
M2Q5N2E1YzllZDdmZmIxNzVhMTM4MGVmZTVhMWMyMGUxMDgxNDk1Li5mZjc0YjFlNjMzYTEzNTc2
NWMxZmJlZjFiODJiY2RhYjhlMDg5ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZUdDcnlwdEhh
bmRsZSgpOwogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWV0aGlu
ZyBpbiBXZWJDb3JlIGZvciBjcnlwdG8uLi4KLSAgICBPcHRpb25hbDxnY3J5X2NpcGhlcl9oZF90
PiBtX2dDcnlwdEhhbmRsZSB7IHN0ZDo6bnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8Z2Ny
eV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5kbGUgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJv
bGxlckhhcmZCdXp6LmNwcAppbmRleCA0MDFjMjdlYmI3OGFkNmE5M2MyOWI0ZWQzZTliMjAwMjYx
ZWUyMzk5Li5hYWRlOGE2ZjZlYTAyN2I5ZTk5ZGEzN2UwMDc3MjE2Yzc5ODBkZGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4
dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouY3BwCkBAIC00MDEs
NyArNDAxLDcgQEAgc3RhdGljIFZlY3RvcjxoYl9mZWF0dXJlX3QsIDQ+IGZvbnRGZWF0dXJlcyhj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgRm9udFAKICAgICByZXR1cm4gZmVhdHVyZXM7
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxVU2NyaXB0Q29kZT4gY2hhcmFjdGVyU2NyaXB0KFVDaGFy
MzIgY2hhcmFjdGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVNjcmlwdENvZGU+IGNoYXJhY3Rl
clNjcmlwdChVQ2hhcjMyIGNoYXJhY3RlcikKIHsKICAgICBVRXJyb3JDb2RlIGVycm9yQ29kZSA9
IFVfWkVST19FUlJPUjsKICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlw
dChjaGFyYWN0ZXIsICZlcnJvckNvZGUpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHN0cnVjdCBIQlJ1
biB7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0OwogfTsKIAotc3RhdGljIE9wdGlvbmFsPEhCUnVu
PiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBvZmZzZXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxIQlJ1bj4gZmluZE5leHRSdW4o
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0
KQogewogICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IoY2hh
cmFjdGVycyArIG9mZnNldCwgb2Zmc2V0LCBsZW5ndGgsIGxlbmd0aCk7CiAgICAgVUNoYXIzMiBj
aGFyYWN0ZXI7CkBAIC00NTYsMTAgKzQ1NiwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8SEJSdW4+IGZp
bmROZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVucwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRTY3JpcHQgIT0gbmV4dFNjcmlwdCAmJiAh
dXNjcmlwdF9oYXNTY3JpcHQoY2hhcmFjdGVyLCBjdXJyZW50U2NyaXB0LnZhbHVlKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJdGVyYXRv
ci5jdXJyZW50SW5kZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgpIH0pOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8SEJSdW4+KHsgc3RhcnRJbmRleCwgdGV4dEl0ZXJhdG9yLmN1
cnJlbnRJbmRleCgpLCBjdXJyZW50U2NyaXB0LnZhbHVlKCkgfSk7CiAgICAgfQogCi0gICAgcmV0
dXJuIE9wdGlvbmFsPEhCUnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5k
ZXgoKSwgY3VycmVudFNjcmlwdC52YWx1ZSgpIH0pOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PEhCUnVuPih7IHN0YXJ0SW5kZXgsIHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKSwgY3VycmVu
dFNjcmlwdC52YWx1ZSgpIH0pOwogfQogCiBzdGF0aWMgaGJfc2NyaXB0X3QgZmluZFNjcmlwdEZv
clZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb24oaGJfZmFjZV90KiBmYWNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5oCmluZGV4IDJiNWY1MjRmZDE3NTIxMDg0MmE5ZmM4ZWNhY2UzMTE1NzY3
ZTkxYmUuLjQ3NTUwODY0MTEzZGU4MDkwODRjZTg3YjZhOTI3ZGIzNGY3MDY1OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKICAgICBib29sIHN0YXJ0Tm90aWZpY2F0aW9uTWVjaGFuaXNtKCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWw7Ci0gICAg
T3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgp
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5h
bEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPFdlYkRpc3BsYXlMaW5r
SGFuZGxlcj4gbV9oYW5kbGVyOwogICAgIERpc3BsYXlVcGRhdGUgbV9jdXJyZW50VXBkYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KaW5kZXggZTUxNmY4MTY5YjA1NzFiZGUzYmJj
ODMxYjE0YjI0YWE2NzM4ZmJkZS4uNjYyMmI0YWI5YWFiNjhhZjRmYTU3OWRmYThkMmMyMDdmNTk2
N2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tCkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5p
c20oKQogICAgIG1fZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCi1PcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5vbWluYWxG
cmFtZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IERpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUzo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewogICAg
IHJldHVybiBEaXNwbGF5TGlua0ZyYW1lc1BlclNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlY2Y4OTY5M2RhMzM4NTIwMTJl
NzUwMjExMjk5ODA5OWVjOGRhYzJkLi44NzBiZGM4MGYzNTUxMGQzNjJlNTM0MzM5ZGE5NjBhNzBm
YmJiNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0Jv
eC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZhdWx0OwogCi0gICAgdXNpbmcgUGVla1Jl
c3VsdCA9IE9wdGlvbmFsPHN0ZDo6cGFpcjxGb3VyQ0MsIHVpbnQ2NF90Pj47CisgICAgdXNpbmcg
UGVla1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEZvdXJDQywgdWludDY0X3Q+PjsK
ICAgICBzdGF0aWMgUGVla1Jlc3VsdCBwZWVrQm94KEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCBv
ZmZzZXQpOwogICAgIHN0YXRpYyBzaXplX3QgbWluaW11bUJveFNpemUoKSB7IHJldHVybiAyICog
c2l6ZW9mKHVpbnQzMl90KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3guY3BwCmluZGV4IDc2YzU0ZGYxMGVhMjQ1MzEzODIzYTM1YzIyNTNk
OTVhZDAyYTRjNGUuLjgwZjUwNzhiZDM4YTcyOWFmZTAzZjI0YjM5NmVkOTdjMTYwYjA5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3Bw
CkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRChKU0M6OkRhdGFWaWV3JiB2aWV3LCB1bnNpZ25l
ZCBvZmZzZXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQoSlNDOjpEYXRhVmlldyYgdmlldywg
dW5zaWduZWQgb2Zmc2V0KQogewogICAgIGF1dG8gcGVla1Jlc3VsdCA9IElTT0JveDo6cGVla0Jv
eCh2aWV3LCBvZmZzZXQpOwogICAgIGlmICghcGVla1Jlc3VsdCB8fCBwZWVrUmVzdWx0LnZhbHVl
KCkuZmlyc3QgIT0gYm94VHlwZU5hbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3guaAppbmRleCAxMTI3ODBhYmNkNWYyZjllZGEyYTcyNzU2NTIw
ZjlhZTgxNzcwZjNhLi42OGUxNzJhNTgxNGIyZTFmMDk0NGFkNDcwNTZmNDJkZDI3ZGMxYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5oCkBA
IC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlJRCA9IFZlY3Rvcjx1aW50OF90
PjsKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInBzc2giOyB9CiAK
LSAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQoSlNDOjpE
YXRhVmlldyYsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBwZWVrU3lzdGVtSUQoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkIG9mZnNl
dCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc3lzdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX3N5
c3RlbUlEOyB9CiAgICAgVmVjdG9yPEtleUlEPiBrZXlJRHMoKSBjb25zdCB7IHJldHVybiBtX2tl
eUlEczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IDgyMzk3NDIwNDZhMjZhOTJkOGJh
N2I3OWExMWM5ZWFmZTJmZWQ5OWEuLjZiMzVjNTg2YjY0ZmVkMWM2ODU0NzUxODY1MzI4NDU0MDBl
YzQ2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTMzLDggKzMzLDggQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1
bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAidGVuYyI7IH0KIAotICAgIE9wdGlvbmFsPGludDhfdD4gZGVmYXVsdENyeXB0Qnl0ZUJsb2Nr
KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0Q3J5cHRCeXRlQmxvY2s7IH0KLSAgICBPcHRpb25h
bDxpbnQ4X3Q+IGRlZmF1bHRTa2lwQnl0ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0
U2tpcEJ5dGVCbG9jazsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50OF90PiBkZWZhdWx0Q3J5cHRC
eXRlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRDcnlwdEJ5dGVCbG9jazsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8aW50OF90PiBkZWZhdWx0U2tpcEJ5dGVCbG9jaygpIGNvbnN0IHsgcmV0
dXJuIG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7IH0KICAgICBpbnQ4X3QgZGVmYXVsdElzUHJvdGVj
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0SXNQcm90ZWN0ZWQ7IH0KICAgICBpbnQ4X3Qg
ZGVmYXVsdFBlclNhbXBsZUlWU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBlclNhbXBs
ZUlWU2l6ZTsgfQogICAgIFZlY3Rvcjx1aW50OF90PiBkZWZhdWx0S0lEKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZhdWx0S0lEOyB9CkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7
CiAKLSAgICBPcHRpb25hbDxpbnQ4X3Q+IG1fZGVmYXVsdENyeXB0Qnl0ZUJsb2NrOwotICAgIE9w
dGlvbmFsPGludDhfdD4gbV9kZWZhdWx0U2tpcEJ5dGVCbG9jazsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludDhfdD4gbV9kZWZhdWx0Q3J5cHRCeXRlQmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ4
X3Q+IG1fZGVmYXVsdFNraXBCeXRlQmxvY2s7CiAgICAgaW50OF90IG1fZGVmYXVsdElzUHJvdGVj
dGVkIHsgMCB9OwogICAgIGludDhfdCBtX2RlZmF1bHRQZXJTYW1wbGVJVlNpemUgeyAwIH07CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVmYXVsdEtJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBlMjBiMTkxNzZjOTNmMzIyNmEy
NmZiM2ZlMDcwN2JiMGQ3M2RkMzQ5Li5mZWM4MGZmOTU5Y2Y2OTIxZjkwMGU5MjZiOTk2MGVlOTYw
Y2QwZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1ZUVEN1ZS5oCkBAIC03MCwzOSArNzAsMzkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxJU09XZWJWVFRDdWU+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElTT1dlYlZU
VEN1ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxN
ZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFU
aW1lPiBwcmVzZW50YXRpb25UaW1lOwogICAgICAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRp
bWU7CiAgICAgICAgIGlmICghcHJlc2VudGF0aW9uVGltZSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOwogICAgICAgICBkZWNvZGVy
ID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAoIWR1cmF0aW9uKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUlEOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc291cmNlSUQ7CiAgICAgICAgIGRlY29kZXIgPj4g
c291cmNlSUQ7CiAgICAgICAgIGlmICghc291cmNlSUQpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4g
aWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsU3RhcnRU
aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWxTdGFydFRpbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGlmICghb3JpZ2lu
YWxTdGFydFRpbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gc2V0dGluZ3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzZXR0aW5nczsKICAgICAgICAgZGVjb2RlciA+PiBzZXR0aW5nczsKICAgICAgICAgaWYgKCFz
ZXR0aW5ncykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBjdWVUZXh0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3Vl
VGV4dDsKICAgICAgICAgZGVjb2RlciA+PiBjdWVUZXh0OwogICAgICAgICBpZiAoIWN1ZVRleHQp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCmluZGV4IDA3YWFlOGFmZmNiMjQ4NTMw
OThkYjZhMDFkMTVjYzlkMjljMTRjNTEuLjgwYjg0ZWE4YmQxMGY0OTE5Zjg3OTdjZDJjMzZmMzVm
ZGI5MzUxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMubW0KQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvcigpCiAgICAgcmV0dXJuIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tTlNDb2xvcihOU0Nv
bG9yICpjb2xvcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2lt
cGxlQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICpjb2xvcikKIHsKICAgICAvLyBGSVhNRTogRXh0
ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xl
Z2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggYjY1ZDgxNzczNzkzNjQ2NmEw
ZTkwZDVhMGM3MTc2YWM0MTg5M2I0Ni4uZDEyOWQxYTdiZWUzZjcyNzZiZmQ0MGRjNzAzNmIxMTUy
MmFhMDY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
c3RvcE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiAgICAgbV9kaXNwbGF5TGlua0lzQWN0aXZlID0g
ZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gTGVnYWN5RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpCitzdGQ6Om9wdGlv
bmFsPEZyYW1lc1BlclNlY29uZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNw
bGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpCiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGlu
aygpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5oCmluZGV4IGEyZGJjNTg3ZTIwZTZmY2M1NTZmNzAzZGQxM2VjMjQ2
MzI4YjAxNWYuLjllZTA3NzhhMTIxNDM4YWNhN2NkYWE4YWQ1NDY1NmUwMGMwNDI3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsK
ICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKLSAgICBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVz
UGVyU2Vjb25kKCkgZmluYWw7CiAgICAgCiAgICAgYm9vbCBlbnN1cmVEaXNwbGF5TGluaygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUFuaW1hdGlvbi5oCmluZGV4IGQ4Y2QxZGMxYzEwYTU5NDJiNWI4MmY1OGY1ODBi
ZjU0YzNjNzEyYWEuLjAxZmRmZjY3NjkxMDhkMGVkY2Q1Nzg0Zjc4M2IwMjkzM2U4YTEyZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUFuaW1hdGlvbi5oCkBAIC0zMyw5ICszMyw5IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIEFuaW1hdGlvblN0YXRlIHsgUGxheWluZywgUGF1c2VkLCBTdG9wcGVkIH07CiAKICAg
ICBzdHJ1Y3QgQXBwbGljYXRpb25SZXN1bHQgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJhbnNmb3JtOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+
IG9wYWNpdHk7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IGZp
bHRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg+IHRyYW5zZm9ybTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9wYWNpdHk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4gZmlsdGVyczsK
ICAgICAgICAgYm9vbCBoYXNSdW5uaW5nQW5pbWF0aW9ucyB7IGZhbHNlIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggODI1MWJlZTIyN2JmNjkz
YTExMWZhMWQwYjc0ZjI4OGFiOWU4ZjY1My4uMGFiZmI2MDExY2EzMjc5NGRhY2FhMTI2NDVlM2U0
M2U4NmE2NmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0y
MjcsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBpbWFnZUIKICAgICBwYWludFRvQ2FudmFz
KGNvbnRleHRBdHRyaWJ1dGVzKCksIFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgaW1hZ2VCdWZmZXIu
YmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXIuY29udGV4dCgpKTsKIH0KIAotT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkKIHsKICAgICAv
LyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5
aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0
aXBsaWVkQWxwaGEpCkBAIC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmUK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogfQogCi1PcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yNDQsNyArMjQ0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCkKICAgICByZXR1cm4g
cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCitz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENv
bXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNTQsNyArMjU0LDcgQEAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9z
aXRlZFJlc3VsdHNGb3JQYWludGluZygKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLU9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogewogICAgIHJldHVybiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBkOGMx
NmMyMDMxYjgyMTA2MGFiYzQ2MGZiNDM3NWI4NWRjOTFhYjQ0Li5iYjMzYTExNGRjN2Y3ZDJmY2Y3
MzhiMDc5NzBiZGMwNmRkNzY4MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0
Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZp
bmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
JikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3Vs
dHNGb3JQYWludGluZygpOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRl
ZFJlc3VsdHNGb3JQYWludGluZygpOworICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJl
YWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwogCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0
Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKQEAgLTU1Myw5ICs1NTMsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAogCi0gICAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Ci0gICAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7CisgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7CiAKICAgICBib29sIHJlc2hhcGVGQk9z
KGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpAQCAtNjQ0
LDggKzY0NCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1hcHBlZFN5bWJvbE5hbWUoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgU3RyaW5nIG1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXJzWzJdLCBzaXplX3QgY291bnQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgU3RyaW5nIG9y
aWdpbmFsU3ltYm9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyU3lt
Ym9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1hcHBl
ZFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyLCBBTkdMRVNo
YWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgT3B0aW9uYWw8U3RyaW5n
PiBvcmlnaW5hbFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
LCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1hcHBlZFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VN
YXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFt
ZUhhc2hNYXBGb3JTaGFkZXJzOwogI2VuZGlmIC8vICFVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IDE4NDFjNTFlYzcyMTViOTk1M2M3
ZmYyNDI0OTYyYzJhNjc4M2IyZmIuLjJlNDZiNjE1MzZjODM1ZGZjYWNmOWY3OWUxMGU2ZDU5YWU3
YTM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBA
IC02MSw3ICs2MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRz
KCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0
OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVs
QnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggMzdlNGY4MzM2Mzg0NDhhNGNhMjc0ZDBkNTE3ODVjMmQ3NDdhYTIxOC4uNzI2
ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2YjkxN2QyYjZiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUoKQogICAgIDo6Z2xGbHVz
aCgpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7CiAgICAgYm9vbCBt
dXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLmFudGlh
bGlhcykgewpAQCAtOTE1LDcgKzkxNSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWRO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbWFrZVN0cmluZygid2ViZ2xfIiwg
aGV4KG51bWJlciwgTG93ZXJjYXNlKSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcHBlZFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjptYXBwZWRTeW1ib2xJblNoYWRlclNvdXJjZU1hcChQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwg
QU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBp
ZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQpAQCAtOTczLDcgKzk3Myw3IEBA
IFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEFOR0xFCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLU9wdGlvbmFs
PFN0cmluZz4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdpbmFsU3ltYm9sSW5TaGFkZXJT
b3VyY2VNYXAoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBz
eW1ib2xUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdpbmFsU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxh
dGZvcm1HTE9iamVjdCBzaGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1h
cC5maW5kKHNoYWRlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAyMjU1Njhj
NjQ1ZDZhMzQ1MjQ4ZWU5OWVjZTQ5NDY5NTc0M2NiMDY0Li4zODY0MTk4Zjc0YTU5MmJhNDI5YzZk
MGE4YmM2MWRlODFhMzhmNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwog
fQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQorc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHAKaW5kZXggZDNjZjgxMDAzOWU2MjZiMDNhNmU1NzdmMzgyMTBiZDQ0YjBiNTU1OC4uMjcx
ZTRmZGYyOTMzZjFkMDFjZmRkYzJjMTNlYmQ1ZDc4ZTVkYjMyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjpp
c0ludmVydGlibGUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OmlzZmluaXRlKGRldGVybWluYW50
KSAmJiBkZXRlcm1pbmFudCAhPSAwOwogfQogCi1PcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IEFm
ZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5z
Zm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBkb3VibGUgZGV0
ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zvcm0pOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkZXRl
cm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQgPT0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCmlu
ZGV4IDhjNDBkYzFmNjA4MmNkMzQ5OTY3ZTg3ZjkwZTI5NjdkMDU3ZGRhNTUuLmQwODY4MjI0Mjgy
MDcyZDc3ZmU2NWM2NjczNzAxMmQxMzY5NDE4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0u
aApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUg
eVNjYWxlKCkgY29uc3Q7CiAKICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0OyAvLyBJZiB5
b3UgY2FsbCB0aGlzIHRoaXMsIHlvdSdyZSBwcm9iYWJseSBkb2luZyBpdCB3cm9uZy4KLSAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJz
ZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBibGVuZChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9ncmVzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5jcHAKaW5kZXggN2Q2NDEzMGI5Yjg5ZjgwMjRkOTUxOTFkMjI5Yzk4MzVjY2M5NTI3Ny4uODI4
ZDkyZWJlYzAyM2E0ZWIzM2UwOWE5NWU0OTE3NjBlOTRiMmFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1TdGF0ZS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6
Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICByZXR1cm4gcXVhZDsKIH0K
IAotT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVh
ZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5z
Zm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiB7
CiAgICAgaWYgKHdhc0NsYW1wZWQpCiAgICAgICAgICp3YXNDbGFtcGVkID0gZmFsc2U7CkBAIC0x
OTYsNyArMTk2LDcgQEAgT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVk
U2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgIHJldHVybiBxdWFkOwog
fQogCi12b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25z
dCBPcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFkKQordm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFz
dFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFk
KQogewogICAgIGlmICghcXVhZCkgewogICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFk
ID0gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApp
bmRleCA4YWEzM2U4ZTYxOWViZDAzMDJlNTgzYTUyYzM3MWQ1NWMzNjczYWM3Li5hOGFjNTQ4OTE4
YmFiMGRhNGQ4ZWFjNWJkMzg2ZGY2MDE3ODgzY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcApAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgYm9vbCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6aXNJbnZlcnRpYmxlKCkgY29uc3QKICAgICByZXR1cm4gZmFicyh0eXBlID09IFR5
cGU6OkFmZmluZSA/IChtMTEoKSAqIG0yMigpIC0gbTEyKCkgKiBtMjEoKSkgOiBXZWJDb3JlOjpk
ZXRlcm1pbmFudDR4NChtX21hdHJpeCkpID49IFNNQUxMX05VTUJFUjsKIH0KIAotT3B0aW9uYWw8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0
cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CiAg
ICAgaWYgKHR5cGUgPT0gVHlwZTo6SWRlbnRpdHlPclRyYW5zbGF0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNWY3MjVhZDY2ZWY3NzA5MWU5ZmIwNjYwOThi
OGRhNzU4ZjVhZjkwZi4uOTc5MjJhODY3NmNkMTQzMzk0YWI4YzBmN2ZiYTA5MDc5MzU1ZjQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjg2LDcgKzI4Niw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNl
KCkgY29uc3Q7CiAKICAgICAvLyBEZWNvbXBvc2UgdGhlIG1hdHJpeCBpbnRvIGl0cyBjb21wb25l
bnQgcGFydHMuCiAgICAgc3RydWN0IERlY29tcG9zZWQyVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDgx
NDVjNDdmZjkxZDg3YWQ2NDRkZDA0ZGEyN2JkNzUxZTEzZmFmYzEuLmRmOTE3ZmJjOWI0NDM3OGU3
NDg3MmU1ZjI0ZWIzNjZjN2ZmZjViOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC02OTIsNyArNjkyLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250RGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25h
bDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKK3N0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250
Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWlseU5h
bWUpCiB7CiAgICAgc3dpdGNoIChmYW1pbHlOYW1lLmxlbmd0aCgpKSB7CiAgICAgLy8gT24gV2lu
ZG93cywgd2UgZG9uJ3Qgc3VwcG9ydCBiaXRtYXAgZm9udHMsIGJ1dCBsZWdhY3kgY29udGVudCBl
eHBlY3RzIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRl
eCBhZDk1NTRjMDUwYWVlMmUxMGVjMTUzNTllYjhiNDg1ZDM1MGNkYTRkLi5mYTIwODdlZTIxMWUz
OWQ2MzM4MmRlZjgzN2RhMGZiYzQ2YTA2N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5jcHAKQEAgLTI5NCwxOSArMjk0LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxkb3VibGU+LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRv
RGF0YVVSTChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIFByZXNlcnZlUmVz
b2x1dGlvbikgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAiZGF0
YTosIl9zOwogfQogCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
IGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB7IH07CiB9CiAKLU9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Z2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZm
ZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmgKaW5kZXggMDViOGNhMmEyYTgzOWVhZGViZDM0MGNmNDUyODM3MzBjNmFkYTk0
OC4uNTQyZWNiZWFmMGMxZTg1ODljYjJiZTI1OWQzNTJmYzY4MGM0NTcwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCBvdmVycmlkZTsKLSAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0
b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0
LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92
ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCBiN2Y4
NDJiNjk3NmJjMGVlYTdjMzA3YzcyZGJjY2YwYWQ5ZGE0YWNjLi45YzEwYTQ2NGEzYTkzMDllN2I1
NGNhZTI4YTdiYzU2Nzc1ZGU3OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTEy
Myw3ICsxMjMsNyBAQCBSZXBldGl0aW9uQ291bnQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnJlcGV0
aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7CiB9CiAK
LU9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXJEaXJlY3QyRDo6aG90U3BvdCgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXJEaXJlY3QyRDo6aG90U3BvdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKaW5kZXggN2UxNzdiNzk5NWI0ZGM0MzY4YzBkOTBmMDc0NzllZDVlZjE0Yzc1OC4uNGY0NzI1
ODZiNDI0YmRhMWNmNmZhMDE0M2NiYTIzZDAzMDAxNmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3QgZmluYWw7CiAKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWw7CiAKICAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDYWlyb1dpbi5j
cHAKaW5kZXggZTZlMjQyNzQyZmIyODFlZWI5Y2ViNzZiMzZhNDQwY2E0YTdlZjVmOS4uNmZkM2Qz
YzU5NTI2MDg5Nzg3YTk5MjA0ZjJjNzA5MzViODIxYjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ2Fpcm9XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNh
aXJvV2luLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgRm9udDo6ZGV0ZXJtaW5lUGl0Y2go
KQogICAgIFJlc3RvcmVEQyhkYywgLTEpOwogfQogCi1ib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9y
dHNDb2RlUG9pbnQoVUNoYXIzMiBjaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFyMzI+IHZhcmlhdGlv
bikgY29uc3QKK2Jvb2wgRm9udDo6cGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyIGNo
YXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24pIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHZhcmlhdGlvbiA/IGZhbHNlIDogZ2x5cGhGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0
Zm9ybURpc3BsYXlYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDEx
L1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKaW5kZXggMjM4YzY0OTU0ODJhN2Y5NmM2ZTA0ZGZjNTc3
NTI5ZWJiNDRjNWI5NC4uNzVhYTAxYTZmMWM4MTllZGVjN2MxMmY1NjllMzM0YzVjY2M5NDBkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3Jt
RGlzcGxheVgxMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDEx
L1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFBsYXRmb3Jt
RGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9zaXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXBw
b3J0c1hDb21wb3NpdGUudmFsdWUoKTsKIH0KIAotYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1
cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UsIE9wdGlvbmFsPGlu
dD4mIGRhbWFnZUVycm9yQmFzZSkgY29uc3QKK2Jvb2wgUGxhdGZvcm1EaXNwbGF5WDExOjpzdXBw
b3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6b3B0
aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNlKSBjb25zdAogewogICAgIGlmICghbV9zdXBwb3J0
c1hEYW1hZ2UpIHsKICAgICAgICAgbV9zdXBwb3J0c1hEYW1hZ2UgPSBmYWxzZTsKQEAgLTEzNCw3
ICsxMzQsNyBAQCBib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKE9wdGlv
bmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgT3B0aW9uYQogICAgIHJldHVybiBtX3N1cHBvcnRz
WERhbWFnZS52YWx1ZSgpOwogfQogCi1ib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNH
TFgoT3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25zdAorYm9vbCBQbGF0Zm9ybURpc3Bs
YXlYMTE6OnN1cHBvcnRzR0xYKHN0ZDo6b3B0aW9uYWw8aW50PiYgZ2x4RXJyb3JCYXNlKSBjb25z
dAogewogI2lmIFVTRShHTFgpCiAgICAgaWYgKCFtX3N1cHBvcnRzR0xYKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDEx
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5
WDExLmgKaW5kZXggYjQyNTViMTA2YzU2MGJjYTFjYmUwMjZhZWNlMDlkNjQ3YTIxYzA4Yi4uZjg3
NzEyZGFlYmY2MTYyODFkNDc3MWJkNzYwZDgzMTFhNDJmNzZmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEu
aApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KICAgICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdl
KE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJy
b3JCYXNlKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzR0xYKE9wdGlvbmFsPGludD4mIGdseEVy
cm9yQmFzZSkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxp
bnQ+JiBkYW1hZ2VFdmVudEJhc2UsIHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JCYXNl
KSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzR0xYKHN0ZDo6b3B0aW9uYWw8aW50PiYgZ2x4RXJy
b3JCYXNlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybURpc3BsYXlYMTEoOjpEaXNw
bGF5KiwgTmF0aXZlRGlzcGxheU93bmVkKTsKQEAgLTY1LDEzICs2NSwxMyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICA6OkRpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYQ29tcG9zaXRlOwotICAgIG11dGFibGUgT3B0
aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hEYW1hZ2U7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+
IG1fZGFtYWdlRXZlbnRCYXNlOwotICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUVy
cm9yQmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hDb21w
b3NpdGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYRGFtYWdl
OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZGFtYWdlRXZlbnRCYXNlOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZGFtYWdlRXJyb3JCYXNlOwogI2lmIFVTRShH
TFgpCi0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1cHBvcnRzR0xYOwotICAgIG11dGFi
bGUgT3B0aW9uYWw8aW50PiBtX2dseEVycm9yQmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9zdXBwb3J0c0dMWDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8aW50PiBt
X2dseEVycm9yQmFzZTsKICNlbmRpZgogICAgIG11dGFibGUgdm9pZCogbV92aXN1YWwgeyBudWxs
cHRyIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IGZiZTcxOTg4MzI3YWQwZDA0YmJlMTk5YjJjM2MzYTJmOGJlN2NmOTIuLmZlZThh
ODUwMDkxMjFlYWIyZTRjYjZhMThkYWFmZWU3MTRkNTk2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTI1NiwxMiArMjU2LDEyIEBAIHZv
aWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQog
fQogI2VuZGlmCiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0
ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKICAgICB0ZXh0LnRleHQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRUZXh0RnJvbUNs
aXBib2FyZChtX25hbWUpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBP
cHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+KQogewogICAgIHJlYWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdp
bigpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICB9
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVy
LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxl
UmVhZGVyJiByZWFkZXIsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKICAgICBpZiAobV9zZWxl
Y3Rpb25EYXRhKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmlsZVBhdGggOiBtX3NlbGVj
dGlvbkRhdGEtPmZpbGVuYW1lcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTlk
NmEyMWUyMTg3MDZlZDk3ZWI3MTlhMmNkNTM2MGJhM2MwOTY2YS4uMzJkNGU2ZjhiOGZhMTRhMTNi
ZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0x
OTIsNyArMTkyLDcgQEAgcHVibGljOgogCiAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNv
ciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgIC8vIGFuZCByZXR1cm5z
IHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgIE9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX3ByZW11bHRpcGx5QWxwaGE7CiAgICAgYm9vbCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlOwogICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxJ
bnRTaXplPiBtX2RlbnNpdHlDb3JyZWN0ZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4gbV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
dHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4
IGMxOGQyNWNmZTZiMjE4ZjRiNjhiODI2MzlhODBmZDRiNDMxZGIxOWMuLjg0ZjM5ZDJhNjI2YWJi
NDQ3MWM2MDNiZjBmNjBkNWJmNjU0OTg5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
CkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAg
ICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotT3B0aW9u
YWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8v
IFdoZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBU
aGlzIGlzIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRG
cmFtZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwpA
QCAtMTE3LDcgKzExNyw3IEBAIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6Omhv
dFNwb3QoKSBjb25zdAogICAgIHJldHVybiBob3RTcG90QXRJbmRleCgwKTsKIH0KIAotT3B0aW9u
YWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKGluZGV4ID49IG1fZGlyRW50
cmllcy5zaXplKCkgfHwgbV9maWxlVHlwZSAhPSBDVVJTT1IpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmQ5ZjlhMzNiMTVhMjA1Mjg0
M2JjNmZmMzYyODZjMGQyMjdlNDk4MC4uZmI3YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgz
ZmY0MzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgLy8gYXZvaWQgYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdo
ZW4gY2FsbGluZyB0aGlzIGZyb20KICAgICAvLyBpbnNpZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAg
Ym9vbCBzZXRGYWlsZWQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBlbnVtIEltYWdlVHlwZSB7CkBAIC0xMjAsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHByb2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKICAg
ICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJucyBzdGQ6Om51bGxv
cHQgaWYgdGhlcmUgaXMgbm9uZS4KLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJ
bmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgLy8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3Rv
cnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwogICAgIC8vIHxkYXRhfC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGllbnRJT1Mu
aAppbmRleCBjZTg1NTQ4Mjc0MzY4MDgxZmI3OGIyYWY0MDk3MjQ1ODBiYWQ3NDc5Li5mNWY0YzE0
NGYzZGNkYjJhYWRjNzVlMDllMGE0OTA1YjllZjllZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUsIGRvdWJsZSwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwg
T3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmVNb3Rpb25NYW5hZ2VyKiBtX21vdGlvbk1h
bmFnZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0RldmljZU1vdGlvbkNsaWVudElPUy5tbQppbmRleCA1MzhmZDI2ODg0NjVhZTM4OWYzNjBlMDYy
ZDI1Zjk3MGFiN2NiZDFiLi4zNGI2OThiYjYxYjZiYmRiYjYzMDNkYmFhMTUwMjJkZTA2M2Y4Zjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xp
ZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25D
bGllbnRJT1MubW0KQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6
OmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQogICAgIFttX21vdGlvbk1hbmFnZXIg
cmVtb3ZlTW90aW9uQ2xpZW50OnRoaXNdOwogfQogCi12b2lkIERldmljZU1vdGlvbkNsaWVudElP
Uzo6bW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRp
b24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dy
YXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBPcHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUs
IE9wdGlvbmFsPGRvdWJsZT4geVJvdGF0aW9uUmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRp
b25SYXRlKQordm9pZCBEZXZpY2VNb3Rpb25DbGllbnRJT1M6Om1vdGlvbkNoYW5nZWQoZG91Ymxl
IHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlv
biwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB5Um90YXRpb25SYXRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkK
IHsKICAgICBpZiAoIW1fdXBkYXRpbmcpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5oCmluZGV4IGE0MWI5ZDI1YzM1MjRmZWUyYzExZDgyZDIwNGNlZDU4NGIyYjdlMTcu
LjliM2FjNmRiZjQ3MWIxMTNiN2E1MjMzZWJmMGNkNGNiOWM5NmVlMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BVcGRhdGluZ0RldmljZU1vdGlvbihNb3Rpb25NYW5hZ2VyQ2xpZW50JikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rp
b25DaGFuZ2VkKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs
IE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSA9IDA7CiAgICAgCiBw
cm90ZWN0ZWQ6CiAgICAgRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcigpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAppbmRl
eCA1NzYxNmU4MTU0YzdmOGFlMjBjYTJiMWFiMjM0NGZjZDVhNjQyMjQxLi5mZmNkNWZjYjUxZjcz
OTQ3MTY5YTY0OWRiMTQzYjQ3MWJhYTdjMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBFbnN1cmUgdGhlcmUgYXJlIG5vIGFzeW5jIGNhbGxzIG9uIGEgZGVhZCB0aWxlIGNhY2hl
LgogICAgIFJldGFpblB0cjxMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmU+IG1fdG9tYnN0b25lOwog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX292ZXJyaWRlVmlzaWJsZVJlY3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdDsKIAogICAgIEludFNp
emUgbV90aWxlU2l6ZSB7IDUxMiwgNTEyIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVkRGV2aWNlTW9kZWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTG9jYWxpemVkRGV2aWNlTW9kZWwubW0KaW5kZXggNzEwNjZmYjg2MGFj
NzVlZjdlOTE2OGY4Yjg2Y2JkZjIyY2M2YjUxZC4uOWZhNmE3NDM3MDFjN2MyNTA4ZjhjZDZkNmRh
MTg1ZjE4NWVkODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xv
Y2FsaXplZERldmljZU1vZGVsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
b2NhbGl6ZWREZXZpY2VNb2RlbC5tbQpAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZpY2VN
b2RlbCgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBjYWNoZWRMb2NhbGl6ZWREZXZp
Y2VNb2RlbCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPFN0cmluZz4+
IGRldmljZU1vZGVsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPFN0
cmluZz4+IGRldmljZU1vZGVsOwogICAgIHJldHVybiBkZXZpY2VNb2RlbDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL01vdGlvbk1hbmFnZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Nb3Rpb25NYW5hZ2VyQ2xpZW50LmgKaW5kZXgg
OTk4NjAyMjA2NTdiNmUwMmUzNDJhZjEzZmY0M2FhMWQ2MDQyMTUzNS4uNTMxMzI5ODJmYTUwOGE0
YmM5MjY4ZDU1OTg1ZDk2Mjc1YTVlMjQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL01vdGlvbk1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTW90aW9uTWFuYWdlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Nb3Rpb25NYW5hZ2VyQ2xpZW50KCkgeyB9OwogCiAgICAgdmlydHVhbCB2
b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRv
dWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgT3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9u
YWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdGlv
bkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPikgeyB9CiB9OwogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQppbmRleCAyZGUxYmNiMDg3ZjUzY2RiZjYzZDAxZDNhYzI5MDRjYmQ4
ODk4Y2NhLi45MDllOGU3NjhhZGI2OGJhYjI4NDQ1ZDI4MjczNjBhM2YzZmEyMmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTYxLDcgKzE2
MSw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQs
IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQs
IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgpCiB7CiAgICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZh
bHVlX29yKDApOwogCkBAIC0zMTAsNyArMzEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCi12b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkK
K3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
LCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgpCiB7CiAgICAgcmVhZGVyLmNvbnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAg
ICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKSB7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9v
bCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSBjb25zdAogI2VuZGlmCiB9CiAK
LXZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgpCiB7CiAgICAgQVNTRVJUKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKTsKICAgICBhdXRvJiBz
dHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCBjMmM4OGYwZDJkNDBlZWIwZDkwZDNlNGUwMTRmZDQwMDcxZDZjMWMxLi5kZjU5
NmVmYWVlZjNkNWY5NzE1N2E5MWE5ODlkMDk5Y2JjMTA1ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTE5OSw3
ICsxOTksNyBAQCBzdGF0aWMgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0ZWJv
YXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKFVJUHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVCT0FS
RF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCi1PcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291bnQpCitzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAo
aW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAg
T3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV8KICAgICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlID0gcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpOwogI2VuZGlmCiAgICAgaWYgKCFDR1NpemVFcXVhbFRvU2l6
ZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgQ0dTaXplWmVybykpIHsK
LSAgICAgICAgYXV0byBhZGp1c3RlZFByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA9IFtdKGF1
dG8gaGVpZ2h0KSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICAgICAgYXV0byBhZGp1c3RlZFBy
ZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA9IFtdKGF1dG8gaGVpZ2h0KSAtPiBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gewogICAgICAgICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVN
YWlsKCkgJiYgIUlPU0FwcGxpY2F0aW9uOjppc01haWxDb21wb3NpdGlvblNlcnZpY2UoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4geyBoZWlnaHQgfTsKICAgICAgICAgICAgIC8vIE1haWwncyBt
YXgtd2lkdGg6IDEwMCU7IGRlZmF1bHQgc3R5bGUgaXMgaW4gY29uZmxpY3Qgd2l0aCB0aGUgcHJl
ZmVycmVkIHByZXNlbnRhdGlvbiBzaXplIGFuZCBjYW4gbGVhZCB0byB1bmV4cGVjdGVkbHkgc3Ry
ZXRjaGVkIGltYWdlcy4gTm90IHNldHRpbmcgdGhlIGhlaWdodCBmb3JjZXMgbGF5b3V0IHRvIHBy
ZXNlcnZlIHRoZSBhc3BlY3QgcmF0aW8uCkBAIC0yODEsNyArMjgxLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICNlbHNlCiAKLU9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVf
dCwgaW50NjRfdCkKK3N0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90LCBpbnQ2NF90KQogewog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2VsZWN0aW9uR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5oCmluZGV4IDEwMzJlZDU5OTUwY2RiYzRlNjY1ZjNhYjVl
YjgxMGQ2YjYzOWE4OWMuLjk5MDJjMmEzZjQzYjJhMzk0MTk1MTMxNGEzZDNmYzA3MTdhMDg5NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25HZW9tZXRyeS5o
CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSdWJ5VGV4dCB7IGZh
bHNlIH07CiAgICAgaW50IG1fcGFnZU51bWJlciB7IDAgfTsKIAotICAgIG11dGFibGUgT3B0aW9u
YWw8SW50UmVjdD4gbV9jYWNoZWRFbmNsb3NpbmdSZWN0OworICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxJbnRSZWN0PiBtX2NhY2hlZEVuY2xvc2luZ1JlY3Q7CiB9OwogCiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU2VsZWN0aW9u
R2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDVlNGJjOWY4NzIxNjdhMGEz
ZDE5NGU4ZTVmYTdmNGI4Mzg5Zjk5N2YuLmYxMzBjOTkzZWIyY2FhYTAwN2YyNGY0Nzc3NjkxNzA1
MjMyNWQzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTE2MzQsNyArMTYzNCw3IEBA
IGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmlzUGxheWluZ1ZpZGVvSW5Fbmhh
bmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogICAgIHJldHVybiBoYXNNb2RlKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpICYm
IFtwbGF5ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJv
b2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZDsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZDsKIAogdm9pZCBXZWJDb3JlOjpzZXRTdXBw
b3J0c1BpY3R1cmVJblBpY3R1cmUoYm9vbCBpc1N1cHBvcnRlZCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCA1OWQz
YmM4MTQ3MWQzZTdiY2E3N2NkYTIyZDdhMDU4OTVhNWEyMWI1Li40ZDg1ODJhMDJjODcxZTc5MjVi
MDcxNDU4NTIzYjgyZmRkMTlkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC05NiwxNyArOTYsMTcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGlj
eSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4pCiB7CiAgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hh
cnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ks
IE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBE
ZXRhaWxzLmgKaW5kZXggYzE0ZTE4Mzg2ODU0NTEyZGQ3MWYxYmZlZTYzZWE2ZWRhZWJlZmYxNi4u
NzdjNjUyMjI3MjI5NjQzMDIxMjFlNmNlNTg3NTkwY2MzNmFmNDY3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFVzZU92ZXJsYXlTY3JvbGxiYXJz
KGJvb2wpOwogICAgIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gbV91c2VP
dmVybGF5U2Nyb2xsYmFyczsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZU92
ZXJsYXlTY3JvbGxiYXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tCmluZGV4IGEyMjk2NDk0NTBkYjEwNGZiZTNm
MzFiMTM3ZTc2OTJhM2JhNWFmOGUuLjQ2Y2I0YjRkMDBhMzRmZmZhMDk1ZDJjNTc4MmQ0MjkwY2Vh
ODA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9OU1Njcm9sbGVy
SW1wRGV0YWlscy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTlNTY3JvbGxl
ckltcERldGFpbHMubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1PcHRpb25hbDxib29sPiBTY3JvbGxlclN0eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJzOwor
c3RkOjpvcHRpb25hbDxib29sPiBTY3JvbGxlclN0eWxlOjptX3VzZU92ZXJsYXlTY3JvbGxiYXJz
OwogCiBOU1Njcm9sbGVyU3R5bGUgU2Nyb2xsZXJTdHlsZTo6cmVjb21tZW5kZWRTY3JvbGxlclN0
eWxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
aW5kZXggMTEwZGQyNTEwYjg1ZjEwNmQzYzkxNTgxMTBkMDgwZDU4MGUyOGFiNy4uNjc3ZjhjYWRh
YjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTMyMywyMSArMzIzLDIxIEBAIHN0YXRpYyBT
dHJpbmcgam9pblBhdGhuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKQogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVhZFN0cmlu
Z0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGlj
IFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBl
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0
cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3Ry
YXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBjb250ZXh0KTsKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBP
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1J
bmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0
ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiAgICAgcmV0dXJu
IHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwog
fQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvd1VSTCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCkKIHsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1Bv
bGljeSBhbGxvdwogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQogewogICAgIGF1dG8mIHN0cmF0
ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0KaW5kZXggNTQ4MjNhMmQxNTVmZGJiMjU2Yzg0NjZjNWExM2I4NTM2YjYxNmZkNy4uMzBhNmFh
ODhjNWNlODEwMDJhN2JlZjMyYWJiZjBmNTU5ZTViMWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC01MzAsNyAr
NTMwLDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1EYXRhKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJk
IGNoYW5nZUNvdW50XTsKIH0KIAotT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBpbnQ2
NF90IGNoYW5nZUNvdW50KQorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRm
b3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGlu
dDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9h
cmQgY2hhbmdlQ291bnRdKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBlNTJkNmJh
MmQxZTViYWE3YzBiMzQyODVmMDA3ZDA5NmIwMjYyYjIzLi44NzAzOGI1OWQ5MjAwMmJjZTRjY2Qx
NGZmMTM5ZGU4YWJlMmM1YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzE5LDcgKzMxOSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxD
b250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9y
bVdoZWVsCiAgICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKIH0KIAotT3B0aW9uYWw8U2Ny
b2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+
IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlhcykKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9u
PiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywg
V2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8g
aW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBh
IGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKICAgICAvLyBoYXMgc21hbGwgZGVsdGFzIG9uIGJv
dGggYXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggMmNhNTI2
YmUzODdmODUzNTc3YWUzNTdjM2JjNzM4NDRkM2VhY2YzMS4uNTkxMTFjZWNhODAyMmM5NzQ5ODk0
YjBiMTM5OGEzNzc2NzAyZTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9u
QWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBG
b250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCiAgICAgTGVuZ3Ro
U2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhTaXplJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CiAgICAgTGVuZ3RoU2l6
ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGY3ZGMyMjAwYzdkNWI0YjNhYmNjMTAy
ZDc5ZTJlYmNhY2Y5OWFlMjQuLmJlMTM3ODkxNjdhMGVjYTUyNWExNmE5ODRjZTY4NDE0OWQyMWYw
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTc5MCw3ICs3
OTAsNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQ
YXJ0IHBhcnQpIGNvbnN0CiAgICAgcmV0dXJuIFRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0
bWVudChwYXJ0KTsKIH0KIAotT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVN
YWM6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250
LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAorc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2Ny
aXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChw
YXJ0KSB7CiAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRp
b24uaAppbmRleCBkMDk1NTY0NDQ0MGYyYmFkMzIyMjIwN2E1MTI2MzRlYzYxNDI1ZWE3Li45ZWFk
MDg4MWYzODQyNzgxMzExMGRlY2Q1OTVjYmRiMzNmNTVmMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZpZ3VyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZp
Z3VyYXRpb24uaApAQCAtMzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBBdWRpb0NvbmZpZ3VyYXRpb24gewogICAgIFN0cmluZyBjb250ZW50VHlwZTsKICAgICBTdHJp
bmcgY2hhbm5lbHM7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGJpdHJhdGU7Ci0gICAgT3B0aW9u
YWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3BhdGlhbFJlbmRl
cmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBiaXRyYXRlOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHNhbXBsZXJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGF0
aWFsUmVuZGVyaW5nOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUyLDI5
ICs1MiwyOSBAQCB2b2lkIEF1ZGlvQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxBdWRpb0Nv
bmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmlndXJhdGlvbj4gQXVkaW9Db25maWd1cmF0aW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRU
eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNoYW5uZWxzOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBjaGFubmVsczsKICAgICBkZWNvZGVyID4+IGNoYW5uZWxzOwogICAg
IGlmICghY2hhbm5lbHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDx1aW50NjRfdD4+IGJpdHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZTsKICAgICBkZWNvZGVyID4+IGJpdHJhdGU7CiAg
ICAgaWYgKCFiaXRyYXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBzYW1wbGVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4+IHNhbXBsZVJhdGU7CiAgICAgZGVjb2RlciA+PiBzYW1w
bGVSYXRlOwogICAgIGlmICghc2FtcGxlUmF0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBzcGF0aWFsUmVuZGVyaW5nOworICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxib29sPj4gc3BhdGlhbFJlbmRlcmluZzsKICAg
ICBkZWNvZGVyID4+IHNwYXRpYWxSZW5kZXJpbmc7CiAgICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5n
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24u
aAppbmRleCBhYTkwOWQzOGExYjdiY2FkODAxYzAyNTA2M2E1ZmE1MDYwMWI1OWIyLi4zNTcxMjNh
NDc5YzBiZjA2MGU4ZmViZjk0YjQwNjY3MzAwOGE4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3Vy
YXRpb24uaApAQCAtMzIsMTEgKzMyLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBNZWRpYUNvbmZpZ3VyYXRpb24gewotICAgIE9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4g
dmlkZW87Ci0gICAgT3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPiBhdWRpbzsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW87CisgICAgc3RkOjpvcHRpb25hbDxB
dWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDb25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lkIE1lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1lZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1lZGlhQ29uZmlndXJhdGlvbj4gTWVkaWFDb25m
aWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+PiB2aWRlbzsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
b3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRl
bzsKICAgICBpZiAoIXZpZGVvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPj4gYXVkaW87CisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPEF1ZGlvQ29uZmlndXJhdGlvbj4+IGF1ZGlvOwogICAgIGRl
Y29kZXIgPj4gYXVkaW87CiAgICAgaWYgKCFhdWRpbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IDIy
NjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2MDM1YWQ3MWVmNDYuLmZlYmM4YWRmM2E0MjRjY2Uz
MmFkNWMxOGJhM2RjMjUwZTdmY2FlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb24uaApAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgTWVkaWFEZWNvZGluZ0NvbmZp
Z3VyYXRpb24gOiBNZWRpYUNvbmZpZ3VyYXRpb24gewogICAgIGJvb2wgY2FuRXhwb3NlVlA5IHsg
dHJ1ZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxN
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CkBAIC00NywxOCArNDcsMTggQEAgdm9pZCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
Ci1PcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFEZWNvZGluZ0NvbmZp
Z3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYURl
Y29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gbWVkaWFDb25maWd1cmF0aW9uID0gTWVkaWFD
b25maWd1cmF0aW9uOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRp
b24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxNZWRpYURl
Y29kaW5nVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBlPiB0
eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBjYW5FeHBvc2VWUDk7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBjYW5FeHBvc2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBv
c2VWUDk7CiAgICAgaWYgKCFjYW5FeHBvc2VWUDkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaAppbmRleCAxNjVk
YzRmMmY4NjZiOTUyMjBjN2JhNjYwYzhkNDcxZTAxODdjZTdkLi4xOWI3Zjc0YzJkMTU4ZDUxZWQ5
OTU3MjI0MzRjOTU0MzkzZWM1ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25m
aWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uIDogTWVkaWFDb25maWd1cmF0aW9uIHsKICAgICBNZWRpYUVuY29kaW5nVHlwZSB0eXBl
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
bj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC00
NSwxMyArNDUsMTMgQEAgdm9pZCBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNZWRpYUVuY29kaW5n
Q29uZmlndXJhdGlvbj4gTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGF1dG8gbWVkaWFDb25maWd1cmF0aW9uID0gTWVkaWFDb25maWd1
cmF0aW9uOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFtZWRpYUNvbmZpZ3VyYXRpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxNZWRpYUVuY29kaW5n
VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwog
ICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCmluZGV4IDdhOTViZmIyOGE5MTgy
ZDkzYWFhYjg0NWEzNDhjOWM5Y2U4NTQxMGIuLmM4N2Q5NzQ4YmY1YjlkMDY3NmIxYjczNzJjM2Yz
NjIyMzA4Y2IyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oCkBAIC0zOSwxMyArMzks
MTMgQEAgc3RydWN0IFZpZGVvQ29uZmlndXJhdGlvbiB7CiAgICAgdWludDMyX3QgaGVpZ2h0Owog
ICAgIHVpbnQ2NF90IGJpdHJhdGU7CiAgICAgZG91YmxlIGZyYW1lcmF0ZTsKLSAgICBPcHRpb25h
bDxib29sPiBhbHBoYUNoYW5uZWw7Ci0gICAgT3B0aW9uYWw8Q29sb3JHYW11dD4gY29sb3JHYW11
dDsKLSAgICBPcHRpb25hbDxIZHJNZXRhZGF0YVR5cGU+IGhkck1ldGFkYXRhVHlwZTsKLSAgICBP
cHRpb25hbDxUcmFuc2ZlckZ1bmN0aW9uPiB0cmFuc2ZlckZ1bmN0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gYWxwaGFDaGFubmVsOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JHYW11dD4g
Y29sb3JHYW11dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhkck1ldGFkYXRhVHlwZT4gaGRyTWV0YWRh
dGFUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4gdHJhbnNmZXJGdW5j
dGlvbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Vmlk
ZW9Db25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC02Myw0OSArNjMsNDkg
QEAgdm9pZCBWaWRlb0NvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VmlkZW9Db25maWd1cmF0
aW9uPiBWaWRlb0NvbmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpv
cHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+IFZpZGVvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CiAgICAgZGVjb2RlciA+PiBjb250
ZW50VHlwZTsKICAgICBpZiAoIWNvbnRlbnRUeXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHdpZHRoOwogICAgIGRlY29kZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBo
ZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaGVpZ2h0OwogICAgIGRlY29kZXIg
Pj4gaGVpZ2h0OwogICAgIGlmICghaGVpZ2h0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGJpdHJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gYml0cmF0ZTsKICAgICBkZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRy
YXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZXJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBk
ZWNvZGVyID4+IGZyYW1lcmF0ZTsKICAgICBpZiAoIWZyYW1lcmF0ZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5u
ZWw7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7
CiAgICAgZGVjb2RlciA+PiBhbHBoYUNoYW5uZWw7CiAgICAgaWYgKCFhbHBoYUNoYW5uZWwpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxDb2xv
ckdhbXV0Pj4gY29sb3JHYW11dDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8Q29s
b3JHYW11dD4+IGNvbG9yR2FtdXQ7CiAgICAgZGVjb2RlciA+PiBjb2xvckdhbXV0OwogICAgIGlm
ICghY29sb3JHYW11dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPEhkck1ldGFkYXRhVHlwZT4+IGhkck1ldGFkYXRhVHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SGRyTWV0YWRhdGFUeXBlPj4gaGRyTWV0YWRhdGFUeXBl
OwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGlmICghaGRyTWV0YWRhdGFU
eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9u
YWw8VHJhbnNmZXJGdW5jdGlvbj4+IHRyYW5zZmVyRnVuY3Rpb247CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPFRyYW5zZmVyRnVuY3Rpb24+PiB0cmFuc2ZlckZ1bmN0aW9uOwogICAg
IGRlY29kZXIgPj4gdHJhbnNmZXJGdW5jdGlvbjsKICAgICBpZiAoIXRyYW5zZmVyRnVuY3Rpb24p
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMuaAppbmRleCBkZTc0ODQzODhhY2UyMWFkMTU0YmFiYzIxY2Q0YTVhNWUzNDVkNmJh
Li5iM2FjNGZjNTgyNzUxOGE1Y2UzNjQ0YzRhYTQ5ZWI1ZmQ1NDcxNTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgKQEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgewogICAgIFN0
cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gYXVkaW9CaXRzUGVyU2Vjb25k
OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB2aWRlb0JpdHNQZXJTZWNvbmQ7Ci0gICAgT3B0aW9u
YWw8dW5zaWduZWQ+IGJpdHNQZXJTZWNvbmQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
YXVkaW9CaXRzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZpZGVvQml0
c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBiaXRzUGVyU2Vjb25kOwog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25z
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTUw
LDIzICs1MCwyMyBAQCBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgotaW5saW5lIE9wdGlvbmFsPE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucz4gTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucz4gTWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTdHJpbmcgbWltZVR5
cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGF1ZGlvQml0
c1BlclNlY29uZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBh
dWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAg
ICAgaWYgKCFhdWRpb0JpdHNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHZpZGVvQml0c1BlclNlY29uZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQZXJT
ZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCF2aWRl
b0JpdHNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJTZWNvbmQ7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gYml0c1BlclNlY29uZDsKICAgICBkZWNvZGVyID4+
IGJpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFiaXRzUGVyU2Vjb25kKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmgKaW5kZXggZTNjMjJkNmFlZDllNmNlOWRkMjhjODg3ODJiZTYxOTZiZjdiNjZiZS4uNjRk
Zjc1MDJlMWIzMTViOWE4ZGQyOTA4ZjI0OGNlYTE1YmYxMDY1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZh
dGU6CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIHsgMCB9OwogICAgIHNpemVf
dCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyIHsgMCB9OwogICAgIEF1ZGlvRm9y
bWF0SUQgbV9vdXRwdXRDb2RlY1R5cGUgeyBrQXVkaW9Gb3JtYXRNUEVHNEFBQyB9OwotICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiBtX291dHB1dEJpdFJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gbV9vdXRwdXRCaXRSYXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMWI5ODUwYWVhNDI1MjZkYmY1
YjY2YTA4NWU4NTk5Yjc2NmMxNzJiLi40NjU1Y2NlMDJhNmVmNWNiZDg2NWM0Yzg5ZTJkMGMxOWEz
Y2Q4YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRmx1
c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkU3RvcEFmdGVyRmx1c2hp
bmdTYW1wbGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmlyc3RWaWRlb0ZyYW1lIHsgZmFsc2Ug
fTsKLSAgICBPcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gbV92aWRlb1RyYW5zZm9ybTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOwogICAg
IENNVGltZSBtX3Jlc3VtZWRWaWRlb1RpbWUgeyBrQ01UaW1lWmVybyB9OwogICAgIENNVGltZSBt
X2N1cnJlbnRWaWRlb0R1cmF0aW9uIHsga0NNVGltZVplcm8gfTsKICAgICBDTVRpbWUgbV9jdXJy
ZW50QXVkaW9TYW1wbGVUaW1lIHsga0NNVGltZVplcm8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IGViYzY5Mzg1NTgyNzkzODhjOTc4MzMx
MzdjNTU5OWM4MjM1Njk0OWIuLjU4OTM1MTM2MDA1ZjY4NThhNjI3YjY1YmNhMjU3MjNkYmUzNDFm
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApA
QCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VuY29kaW5nIHsgZmFsc2Ug
fTsKICAgICBmbG9hdCBtX21heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiB7IDIuMCB9OwogICAg
IHVuc2lnbmVkIG1fZXhwZWN0ZWRGcmFtZVJhdGUgeyAzMCB9OwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBtX291dHB1dEJpdFJhdGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRw
dXRCaXRSYXRlOwogICAgIFByb2ZpbGUgbV9wcm9maWxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCmluZGV4IDViODFh
NDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2YTM4ZmRhYzEuLjE1YzM1NDE1MWM5YWMyOGM0NWI2
Y2U1NDE4ZWYxYzVjMjNjMDJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKQEAgLTkwLDQ0ICs5MCw0NCBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lz
dGVudElkOwogICAgICAgICBpZiAoIXBlcnNpc3RlbnRJZCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwog
ICAgICAgICBpZiAoIWxhYmVsKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGdyb3VwSWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBncm91cElkOwogICAgICAgICBkZWNvZGVyID4+IGdyb3VwSWQ7CiAgICAgICAgIGlm
ICghZ3JvdXBJZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFi
bGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gaXNEZWZhdWx0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKICAg
ICAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7CiAgICAgICAgIGlmICghaXNEZWZhdWx0KQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlPiB0eXBlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAg
ICAgaWYgKCF0eXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxib29sPiBpc01vY2tEZXZpY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNNb2NrRGV2aWNlOwogICAgICAgICBkZWNvZGVyID4+IGlzTW9ja0RldmljZTsKICAgICAg
ICAgaWYgKCFpc01vY2tEZXZpY2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRldmljZSA9IHt7IFdURk1vdmUoKnBl
cnNpc3RlbnRJZCksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpsYWJlbCksIFdURk1vdmUoKmdy
b3VwSWQpIH19OworICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRldmljZSA9
IHt7IFdURk1vdmUoKnBlcnNpc3RlbnRJZCksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpsYWJl
bCksIFdURk1vdmUoKmdyb3VwSWQpIH19OwogICAgICAgICBkZXZpY2UtPnNldEVuYWJsZWQoKmVu
YWJsZWQpOwogICAgICAgICBkZXZpY2UtPnNldElzRGVmYXVsdCgqaXNEZWZhdWx0KTsKICAgICAg
ICAgZGV2aWNlLT5zZXRJc01vY2tEZXZpY2UoKmlzTW9ja0RldmljZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3Bw
CmluZGV4IGViYmRjNTYzZDk3NDhmNjVlOWY0ZTY2ZDM4YTJlN2QyZjNiMTBlY2IuLmZlNzY5N2Y4
NTdjMzU4YzkxY2EwZmZjYTViZjBjY2JjNzc0YWYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnMKICAgICAgICAgcmV0dXJuOwog
fQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50
VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50
KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5
cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJh
aW50KQogewogICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29u
c3RyYWludFR5cGU6OldpZHRoOgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBP
cHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQo
TWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0
KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8RG91Ymxl
Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUp
IHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkFzcGVjdFJhdGlvOgpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0
cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50
VHlwZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFp
bnRUeXBlLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7
CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50
VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlw
ZSwgT3B0aW9uYQogICAgIH0KIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6
c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0Nv
bnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6
OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRU
eXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oCmluZGV4IGViMjk0OWY0ZTdjNWVkOWI1N2Q1M2NlOWZjZDc3NTNhN2M0YmRmNzUuLmUyYWFm
Mjc3MTAyNmNjMThiNzgwZDlhNzg2MWFjMzE5MTQ1NDdmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTI5
MywxMSArMjkzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMo
VmFsdWVUeXBlIGN1cnJlbnQsIGNvbnN0IFZlY3RvcjxWYWx1ZVR5cGU+JiBkaXNjcmV0ZUNhcGFi
aWxpdHlWYWx1ZXMpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IHZhbHVlRm9y
RGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZhbHVlVHlwZSBjdXJyZW50LCBjb25zdCBWZWN0b3I8
VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBl
PiBtaW47Ci0gICAgICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbWF4OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBl
PiBtaW47CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtYXg7CiAKICAgICAgICAg
aWYgKG1fZXhhY3QpIHsKICAgICAgICAgICAgIEFTU0VSVChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1
ZXMuY29udGFpbnMobV9leGFjdC52YWx1ZSgpKSk7CkBAIC0zOTcsMTAgKzM5NywxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWlu
OwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9tYXg7Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBl
PiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9pZGVhbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZhbHVlVHlwZT4gbV9taW47CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1f
bWF4OworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0
aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOwogfTsKIAogY2xhc3MgSW50Q29uc3RyYWludCBmaW5h
bCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludDxpbnQ+IHsKQEAgLTUzNiw4ICs1MzYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsb2dBc0Jvb2xlYW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxib29sPiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPGJvb2w+IG1faWRlYWw7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9p
ZGVhbDsKIH07CiAKIGNsYXNzIFN0cmluZ0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJh
aW50IHsKQEAgLTY1NCwyNyArNjU0LDI3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8SW50Q29u
c3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50
VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIE9w
dGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgc3RkOjpvcHRp
b25hbDxEb3VibGVDb25zdHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChN
ZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYpOwogCi0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWlu
dD4gd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgT3B0aW9uYWw8SW50Q29u
c3RyYWludD4gaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICBPcHRpb25h
bDxJbnRDb25zdHJhaW50PiBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRl
OyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlU2l6ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25z
dHJhaW50PiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8SW50Q29uc3RyYWludD4gc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
UmF0ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gc2FtcGxlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsgfQogCi0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9Ci0gICAg
T3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZVJhdGU7IH0KLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiB2b2x1bWUoKSBjb25z
dCB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWlu
dD4gYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lUmF0ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gdm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KIAotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25z
dHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0
aW9uOyB9Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGRpc3BsYXlTdXJmYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3VyZmFjZTsgfQotICAgIE9wdGlvbmFsPEJvb2xlYW5D
b25zdHJhaW50PiBsb2dpY2FsU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFN1cmZh
Y2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0aW9uOyB9CisgICAgc3RkOjpvcHRp
b25hbDxCb29sZWFuQ29uc3RyYWludD4gZGlzcGxheVN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlTdXJmYWNlOyB9CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4g
bG9naWNhbFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxTdXJmYWNlOyB9CiAKLSAg
ICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9mYWNpbmdNb2RlOyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQo
KSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3Ry
YWludD4gZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZmFjaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFj
aW5nTW9kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQo
KSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdD
b25zdHJhaW50PiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICB7CkBAIC02OTYsNyArNjk2LDcgQEAgcHVibGljOgogICAgICAgICBlbmNvZGVyIDw8
IG1fZ3JvdXBJZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKICAgICAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFwOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1hcC5tX3dpZHRoKSkKQEAgLTczMywyMiArNzMzLDIyIEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV93aWR0
aDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX2hlaWdodDsKLSAgICBPcHRpb25hbDxJ
bnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4g
bV9zYW1wbGVTaXplOwotCi0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9hc3BlY3RS
YXRpbzsKLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX2ZyYW1lUmF0ZTsKLSAgICBP
cHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX3ZvbHVtZTsKLQotICAgIE9wdGlvbmFsPEJvb2xl
YW5Db25zdHJhaW50PiBtX2VjaG9DYW5jZWxsYXRpb247Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNv
bnN0cmFpbnQ+IG1fZGlzcGxheVN1cmZhY2U7Ci0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFp
bnQ+IG1fbG9naWNhbFN1cmZhY2U7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBt
X2ZhY2luZ01vZGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsK
LSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBtX2dyb3VwSWQ7CisgICAgc3RkOjpvcHRp
b25hbDxJbnRDb25zdHJhaW50PiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3Ry
YWludD4gbV9oZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBs
ZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVNpemU7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1fYXNwZWN0UmF0aW87CisgICAg
c3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX2ZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1fdm9sdW1lOworCisgICAgc3RkOjpvcHRpb25hbDxC
b29sZWFuQ29uc3RyYWludD4gbV9lY2hvQ2FuY2VsbGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZGlzcGxheVN1cmZhY2U7CisgICAgc3RkOjpvcHRpb25hbDxC
b29sZWFuQ29uc3RyYWludD4gbV9sb2dpY2FsU3VyZmFjZTsKKworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4gbV9mYWNpbmdNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
Q29uc3RyYWludD4gbV9kZXZpY2VJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFp
bnQ+IG1fZ3JvdXBJZDsKIH07CiAKIGNsYXNzIEZsYXR0ZW5lZENvbnN0cmFpbnQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaAppbmRleCA1OWQ1ZmEzZjM3MmU0YWU3MTg1NTA4NDI1N2FkNDY0Y2JiMzFkMjkzLi42
ODUwYWRiMGQyMThjZGFjYzM3ZTFkMmQ0N2E4YjE4MjdlMjY4MjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3Qu
aApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgTWVkaWFTdHJlYW1SZXF1ZXN0IHsKICAgICAgICAg
ZW5jb2RlciA8PCBpc1VzZXJHZXN0dXJlUHJpdmlsZWRnZWQ7CiAgICAgfQogCi0gICAgdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxNZWRpYVN0cmVhbVJlcXVlc3Q+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxNZWRpYVN0cmVhbVJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIHsKICAgICAgICAgTWVkaWFTdHJlYW1SZXF1ZXN0IHJlcXVlc3Q7CiAgICAgICAg
IGlmIChkZWNvZGVyLmRlY29kZShyZXF1ZXN0LnR5cGUpICYmIGRlY29kZXIuZGVjb2RlKHJlcXVl
c3QuYXVkaW9Db25zdHJhaW50cykgJiYgZGVjb2Rlci5kZWNvZGUocmVxdWVzdC52aWRlb0NvbnN0
cmFpbnRzKSAmJiBkZWNvZGVyLmRlY29kZShyZXF1ZXN0LmlzVXNlckdlc3R1cmVQcml2aWxlZGdl
ZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDFlOTUxNDE2MDAzMzY0ZWRhYmEwNGViY2I1
ZjdiYWZlNzRiMWU3ZDIuLmRmZTk2ZTEyOTlkMGUyZDNkODlmNTY0YTM0MDAwNzc1NDU0MWJhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0zNSwxOCArMzUsMTggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IFJUQ0RhdGFDaGFubmVsSW5pdCB7Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gb3JkZXJlZDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRp
bWU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRzOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gb3JkZXJlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNo
b3J0PiBtYXhQYWNrZXRMaWZlVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBtYXhSZXRyYW5zbWl0czsKICAgICBTdHJpbmcgcHJvdG9jb2w7Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gbmVnb3RpYXRlZDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gaWQ7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBuZWdvdGlhdGVkOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQg
c2hvcnQ+IGlkOwogICAgIFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSB7IFJUQ1ByaW9yaXR5VHlw
ZTo6TG93IH07CiAKICAgICBSVENEYXRhQ2hhbm5lbEluaXQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJUQ0RhdGFD
aGFubmVsSW5pdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENEYXRhQ2hhbm5lbEluaXQ+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiBpbmxpbmUgUlRDRGF0YUNoYW5uZWxJbml0IFJUQ0RhdGFDaGFubmVsSW5pdDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAgLTYxLDE5ICs2MSwxOSBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIFJUQ0RhdGFDaGFubmVsSW5pdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkIDw8IG1heFBhY2tldExpZmVUaW1lIDw8IG1h
eFJldHJhbnNtaXRzIDw8IHByb3RvY29sIDw8IG5lZ290aWF0ZWQgPDwgaWQgPDwgcHJpb3JpdHk7
CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSW5p
dD4gUlRDRGF0YUNoYW5uZWxJbml0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJbml0PiBSVENEYXRh
Q2hhbm5lbEluaXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGJv
b2w+IG9yZGVyZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29k
ZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9yZGVyZWQpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRpbWU7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbWF4UGFja2V0TGlmZVRpbWU7CiAgICAgZGVjb2Rl
ciA+PiBtYXhQYWNrZXRMaWZlVGltZTsKICAgICBpZiAoIW1heFBhY2tldExpZmVUaW1lKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJh
bnNtaXRzOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heFJldHJhbnNtaXRz
OwogICAgIGRlY29kZXIgPj4gbWF4UmV0cmFuc21pdHM7CiAgICAgaWYgKCFtYXhSZXRyYW5zbWl0
cykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgyLDE3ICs4MiwxNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxSVENEYXRhQ2hhbm5lbEluaXQ+IFJUQ0RhdGFDaGFubmVsSW5p
dDo6ZGVjb2RlKAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvdG9jb2wpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gbmVnb3RpYXRlZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG5lZ290aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBuZWdvdGlhdGVkOwogICAg
IGlmICghbmVnb3RpYXRlZCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIE9wdGlvbmFsPHVu
c2lnbmVkIHNob3J0PiBpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBpZDsK
ICAgICBkZWNvZGVyID4+IGlkOwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBPcHRpb25hbDxSVENQcmlvcml0eVR5cGU+IHByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9u
YWw8UlRDUHJpb3JpdHlUeXBlPiBwcmlvcml0eTsKICAgICBkZWNvZGVyID4+IHByaW9yaXR5Owog
ICAgIGlmICghcHJpb3JpdHkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRl
bnRpZmllci5oCmluZGV4IGY2M2Q4ZjY2MGRlNDI1ZTk1OWU3MzI2NzBkNzk3MzU5ZTU2NjE5ODQu
LmYwNzA0MDM1NmZiMmI2NmI5MGRjNzM0YjNiYzQ0NmY3MDllNDZhNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllci5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBSVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIgewogICAgIFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyIGNoYW5uZWxJZGVu
dGlmaWVyOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTQ2LDE0ICs0NiwxNCBAQCBpbmxpbmUgdm9pZCBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgotaW5saW5lIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcj4gUlRDRGF0YUNoYW5u
ZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcj4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmll
cj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmll
cj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsK
ICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJ
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZp
ZXI+IGNoYW5uZWxJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2hhbm5lbElkZW50aWZpZXI7
CiAgICAgaWYgKCFjaGFubmVsSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1J0
cENvZGVjQ2FwYWJpbGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKaW5kZXggZGE5ZDRkNzk5ZTAzMzMyNTM1YjQ5N2NiZGY5
MTNlNTY3OWM2Y2E2MS4uZDE1YTQ1NjViODQzMWUzOWM0NDA0YjQxZjY4Mzc4ODNkY2IxNjlkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUnRwQ29k
ZWNDYXBhYmlsaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUnRwQ29kZWNDYXBhYmlsaXR5LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFJUQ1J0cENvZGVjQ2FwYWJpbGl0eSB7CiAgICAgU3RyaW5nIG1pbWVUeXBl
OwogICAgIHVuc2lnbmVkIGxvbmcgY2xvY2tSYXRlIHsgMCB9OwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkIHNob3J0PiBjaGFubmVsczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBj
aGFubmVsczsKICAgICBTdHJpbmcgc2RwRm10cExpbmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oCmluZGV4IGYzYTNhNmJmOTc2Y2I5YzE2NzA4YTY5ZmRiODEwMjE3YWQ5
ZWQyNWQuLjY4YmMwZjdjOTFlYjBmNTI2MjBhNzkyMTdjMjQxMTQxYTdlYTRhMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gd2VicnRjOjpPYnNlcnZlckludGVyZmFjZSBBUEkKICAgICB2b2lkIE9uQ2hhbmdlZCgp
IGZpbmFsOwogCi0gICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1
cnJlbnRTZXR0aW5nczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9UcmFja0ludGVyZmFjZT4gbV92aWRlb1RyYWNrOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDk0MTZkZDgzZjM0ODZkNzcxNjlmMTdk
NjZiMjYyYWZhYmYwYWM5MGEuLjIwMzVjNjc1ZWY3MmM3MWUyNWQ3MGM4YzEzYTIyMDk0YjU3MjFk
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0yOTYsMTMgKzI5NiwxMyBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVGYWlsZWQoKQogICAgIH0pOwogfQogCi1ib29sIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+
LCBPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxkb3VibGU+KQorYm9vbCBSZWFsdGltZU1lZGlhU291
cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9w
dGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikKIHsKICAgICAvLyBUaGUgc2l6ZSBh
bmQgZnJhbWUgcmF0ZSBhcmUgd2l0aGluIHRoZSBjYXBhYmlsaXR5IGxpbWl0cywgc28gdGhleSBh
cmUgc3VwcG9ydGVkLgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3
aWR0aENvbnN0cmFpbnQsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodENvbnN0cmFpbnQs
IE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNvbnN0cmFpbnQsIFN0cmluZyYg
YmFkQ29uc3RyYWludCwgZG91YmxlJiBkaXN0YW5jZSkKK2Jvb2wgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4g
d2lkdGhDb25zdHJhaW50LCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodENvbnN0
cmFpbnQsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWlu
dCwgU3RyaW5nJiBiYWRDb25zdHJhaW50LCBkb3VibGUmIGRpc3RhbmNlKQogewogICAgIGlmICgh
d2lkdGhDb25zdHJhaW50ICYmICFoZWlnaHRDb25zdHJhaW50ICYmICFmcmFtZVJhdGVDb25zdHJh
aW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMSw3ICszMTEsNyBAQCBib29sIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25z
dHJhaW50PiB3aWR0aAogCiAgICAgZGlzdGFuY2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiB3aWR0aDsKICAgICBpZiAod2lkdGhDb25zdHJhaW50ICYmIGNhcGFiaWxpdGll
cy5zdXBwb3J0c1dpZHRoKCkpIHsKICAgICAgICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9
IGZpdG5lc3NEaXN0YW5jZSgqd2lkdGhDb25zdHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNp
bmYoY29uc3RyYWludERpc3RhbmNlKSkgewpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPEludENvbnN0
cmFpbnQ+IHdpZHRoCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGhlaWdo
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0OwogICAgIGlmIChoZWlnaHRDb25zdHJh
aW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdodCgpKSB7CiAgICAgICAgIGRvdWJsZSBj
b25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNzRGlzdGFuY2UoKmhlaWdodENvbnN0cmFpbnQpOwog
ICAgICAgICBpZiAoc3RkOjppc2luZihjb25zdHJhaW50RGlzdGFuY2UpKSB7CkBAIC0zNDUsNyAr
MzQ1LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICAgICAgfQogICAgIH0KIAotICAg
IE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBm
cmFtZVJhdGU7CiAgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1
cHBvcnRzRnJhbWVSYXRlKCkpIHsKICAgICAgICAgZG91YmxlIGNvbnN0cmFpbnREaXN0YW5jZSA9
IGZpdG5lc3NEaXN0YW5jZSgqZnJhbWVSYXRlQ29uc3RyYWludCk7CiAgICAgICAgIGlmIChzdGQ6
OmlzaW5mKGNvbnN0cmFpbnREaXN0YW5jZSkpIHsKQEAgLTUxMiw3ICs1MTIsNyBAQCBkb3VibGUg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCYgY29uc3RyYWludCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRp
YyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFs
dWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIE9wdGlvbmFsPFZlY3RvcjxW
YWx1ZVR5cGU+PiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMsIFZhbHVlVHlwZSBjYXBhYmlsaXR5
TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNl
LCB2b2lkIChSZWFsdGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRp
YyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFs
dWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFi
aWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlJiBz
b3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVkaWFTb3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQog
ewogICAgIGlmIChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IGNvbnN0cmFpbnQudmFsdWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMoY3VycmVudCwg
KmRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyk7CkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIHZv
aWQgYXBwbHlOdW1lcmljQ29uc3RyYWludChjb25zdCBOdW1lcmljQ29uc3RyYWludDxWYWx1ZVR5
cGU+JiBjb25zdHJhaW4KICAgICAgICAgKHNvdXJjZS4qYXBwbGllcikodmFsdWUpOwogfQogCi12
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50
PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
KQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0
aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAgICBJbnRTaXplIHNpemU7CiAgICAgaWYgKHdpZHRo
KQpAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25z
dHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAKICAgICBhdXRv
JiBjYXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBhYmlsaXRpZXMoKTsKIAotICAgIE9wdGlvbmFsPGlu
dD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoOwogICAgIGlmIChjb25zdCBN
ZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50cy5maW5kKE1lZGlhQ29uc3Ry
YWludFR5cGU6OldpZHRoKSkgewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNJbnQoKSk7
CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNXaWR0aCgpKSB7CkBAIC05MDAsNyAr
OTAwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0
IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAgICAgICAgfQogICAgIH0KIAotICAg
IE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CiAg
ICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZp
bmQoTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0KSkgewogICAgICAgICBBU1NFUlQoY29uc3Ry
YWludC0+aXNJbnQoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQo
KSkgewpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwogICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQq
IGNvbnN0cmFpbnQgPSBjb25zdHJhaW50cy5maW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1l
UmF0ZSkpIHsKICAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQtPmlzRG91YmxlKCkpOwogICAgICAg
ICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpIHsKQEAgLTkzMSw3ICs5MzEs
NyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxh
dHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWludAogICAgIGNvbW1pdENvbmZpZ3VyYXRpb24oKTsK
IH0KIAotT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXBwbHlDb25zdHJhaW50c0Vycm9y
PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzKQorc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlOjpB
cHBseUNvbnN0cmFpbnRzRXJyb3I+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWlu
dHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNv
bnN0cmFpbnRzLmlzVmFsaWQpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiAgICAgbm90aWZ5U2V0dGluZ3NE
aWRDaGFuZ2VPYnNlcnZlcnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1w
bGVSYXRlKTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTEwNzIsNyArMTA3Miw3IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZShpbnQgc2l6ZSkKICAgICBub3RpZnlTZXR0aW5n
c0RpZENoYW5nZU9ic2VydmVycyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNh
bXBsZVNpemUpOwogfQogCi1PcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6ZGlzY3JldGVTYW1wbGVTaXplcygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+
PiBSZWFsdGltZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDdjZGEzMzJk
ZDcyMDAyNjQ3ZmFjMDA4OWM1MGRhMDk0MmJmOGJlM2EuLjYxMjkyNmM1MWMwY2FjOWNmNGMxOTNk
ODQ4MTNmYWIzYWQ4ZTVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE2NiwxMSArMTY2LDEx
IEBAIHB1YmxpYzoKIAogICAgIGludCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGVSYXRlOyB9CiAgICAgdm9pZCBzZXRTYW1wbGVSYXRlKGludCk7Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0OworICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0
OwogCiAgICAgaW50IHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7IH0K
ICAgICB2b2lkIHNldFNhbXBsZVNpemUoaW50KTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZlY3Rv
cjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3Q7CiAKICAgICBi
b29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247
IH0KICAgICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCk7CkBAIC0xODIsOSArMTgyLDkg
QEAgcHVibGljOgogICAgICAgICBTdHJpbmcgYmFkQ29uc3RyYWludDsKICAgICAgICAgU3RyaW5n
IG1lc3NhZ2U7CiAgICAgfTsKLSAgICB1c2luZyBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8QXBwbHlDb25zdHJhaW50c0Vycm9yPiYmKT47
CisgICAgdXNpbmcgQXBwbHlDb25zdHJhaW50c0hhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8QXBwbHlDb25zdHJhaW50c0Vycm9yPiYmKT47CiAgICAgdmlydHVh
bCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIEFwcGx5Q29u
c3RyYWludHNIYW5kbGVyJiYpOwotICAgIE9wdGlvbmFsPEFwcGx5Q29uc3RyYWludHNFcnJvcj4g
YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CisgICAgc3RkOjpvcHRp
b25hbDxBcHBseUNvbnN0cmFpbnRzRXJyb3I+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYpOwogCiAgICAgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmLCBTdHJpbmcmKTsKICAgICBib29sIHN1cHBvcnRzQ29uc3RyYWludChjb25z
dCBNZWRpYUNvbnN0cmFpbnQmKTsKQEAgLTIzMSwxMCArMjMxLDEwIEBAIHByb3RlY3RlZDoKICAg
ICBkb3VibGUgZml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOwogICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOwogICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50Jik7Ci0gICAgYm9vbCBzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgsIE9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4sIFN0
cmluZyYsIGRvdWJsZSYgZml0bmVzc0Rpc3RhbmNlKTsKKyAgICBib29sIHN1cHBvcnRzU2l6ZUFu
ZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50
PiwgU3RyaW5nJiwgZG91YmxlJiBmaXRuZXNzRGlzdGFuY2UpOwogCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxp
bnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemVB
bmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9w
dGlvbmFsPGRvdWJsZT4pOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4pOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAogICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZlcnMo
KTsKICAgICB2b2lkIG5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGIyNjhiMmI1NTI3ZGZlMjUyZTYxZWY0ZTJlOGYz
MDZhOTczYjcxMDMuLjAzMWQ1YTZkOGJiYzM5ZWNhMGI5YzEyMmRjY2IxMTZmMjM1ZjY4NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2
b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjp1cGRhdGVDYXBhYmlsaXRpZXMoUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdAogICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoeyBt
aW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJhbWVSYXRlIH0pOwogfQogCi1ib29sIFJlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50
PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
KQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAgICBpZiAoIXdpZHRoICYmICFo
ZWlnaHQgJiYgIWZyYW1lUmF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTIsNyArMjEy
LDcgQEAgYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJlc2V0U3VwcG9ydHNGcmFt
ZVJhdGUoUmVmUHRyPFZpZGVvUHJlc2V0PiBwcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9u
YWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgSW50U2l6ZSYpPiYmIGZ1bmN0aW9uKQorYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZTo6c3VwcG9ydHNDYXB0dXJlU2l6ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgSW50U2l6ZSYp
PiYmIGZ1bmN0aW9uKQogewogICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCiAgICAgICAgIHJldHVy
biBmdW5jdGlvbih7IHdpZHRoLnZhbHVlKCksIGhlaWdodC52YWx1ZSgpIH0pOwpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIGZyYW1lUmF0ZUZyb21QcmVzZXQoY29uc3Qg
VmlkZW9QcmVzZXQmIHByZXNldCwgZG91YmxlIGN1cnJlCiAgICAgcmV0dXJuIGN1cnJlbnRGcmFt
ZVJhdGUgPj0gbWluRnJhbWVSYXRlICYmIGN1cnJlbnRGcmFtZVJhdGUgPD0gbWF4RnJhbWVSYXRl
ID8gY3VycmVudEZyYW1lUmF0ZSA6IG1heEZyYW1lUmF0ZTsKIH0KIAotT3B0aW9uYWw8UmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFN1cHBvcnRlZFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8
aW50PiByZXF1ZXN0ZWRXaWR0aCwgT3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQsIE9wdGlv
bmFsPGRvdWJsZT4gcmVxdWVzdGVkRnJhbWVSYXRlKQorc3RkOjpvcHRpb25hbDxSZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Q2FwdHVyZVNpemVBbmRGcmFtZVJhdGU+IFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gcmVxdWVzdGVkV2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiByZXF1ZXN0ZWRIZWlnaHQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXF1ZXN0ZWRGcmFtZVJhdGUpCiB7CiAgICAgaWYgKCFy
ZXF1ZXN0ZWRXaWR0aCAmJiAhcmVxdWVzdGVkSGVpZ2h0ICYmICFyZXF1ZXN0ZWRGcmFtZVJhdGUp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0zNjEsNyArMzYxLDcgQEAgT3B0aW9uYWw8UmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZp
ZGVvQ2FwdHUKICAgICByZXR1cm4gQ2FwdHVyZVNpemVBbmRGcmFtZVJhdGUgeyBXVEZNb3ZlKHJl
c2l6ZVByZXNldCksIHJlc2l6ZVNpemUsIGNhcHR1cmVGcmFtZVJhdGUgfTsKIH0KIAotdm9pZCBS
ZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxp
bnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJh
dGUpCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dl
clB0cigpLCBMT0dJREVOVElGSUVSLCBTaXplQW5kRnJhbWVSYXRlIHsgd2lkdGgsIGhlaWdodCwg
ZnJhbWVSYXRlIH0pOwogCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBz
YW0KICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUpOwogfQogCi12b2lkIFJlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25h
bDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFt
ZVJhdGUpCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgLy8gRklY
TUU6IFdlIG9ubHkgY2hhbmdlIHNldHRpbmdzIGlmIGNhcHR1cmUgcmVzb2x1dGlvbiBpcyBiZWxv
dyByZXF1ZXN0ZWQgb25lLiBXZSBzaG91bGQgZ2V0IHRoZSBiZXN0IHByZXNldCBmb3IgYWxsIGNs
aWVudHMuCiAgICAgYXV0byYgc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMjc3MjE5ZTFlYTM2ZjA0MTFhMWEzZTY2N2EwNWMy
NGNlNzBiMzg3NS4uZDAzNGE4MDM1MDk1NDMxOTJlY2E4NjAwNTE5ZWJkY2UyMGUyYzRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlKCk7CiAKLSAgICB2b2lkIGNsaWVudFVwZGF0ZWRTaXplQW5kRnJhbWVSYXRlKE9wdGlv
bmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZy
YW1lUmF0ZSk7CisgICAgdm9pZCBjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBmcmFtZVJhdGUpOwogCi0gICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRv
dWJsZT4pIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6
b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRp
b25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVQcmVzZXRz
KCkgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQogCkBAIC01NSw3ICs1NSw3IEBAIHByb3RlY3RlZDoKICAgICBSZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZShTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNhbHQpOwog
CiAgICAgdm9pZCBwcmVwYXJlVG9Qcm9kdWNlRGF0YSgpOwotICAgIHZvaWQgc2V0U2l6ZUFuZEZy
YW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9u
YWw8ZG91YmxlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6
b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRp
b25hbDxkb3VibGU+KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwcmVmZXJzUHJlc2V0
KFZpZGVvUHJlc2V0JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFt
ZVJhdGVXaXRoUHJlc2V0KGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0PikgeyB9OwpAQCAtNzks
OCArNzksOCBAQCBwcml2YXRlOgogICAgICAgICBJbnRTaXplIHJlcXVlc3RlZFNpemU7CiAgICAg
ICAgIGRvdWJsZSByZXF1ZXN0ZWRGcmFtZVJhdGUgeyAwIH07CiAgICAgfTsKLSAgICBib29sIHN1
cHBvcnRzQ2FwdHVyZVNpemUoT3B0aW9uYWw8aW50PiwgT3B0aW9uYWw8aW50PiwgY29uc3QgRnVu
Y3Rpb248Ym9vbChjb25zdCBJbnRTaXplJik+JiYpOwotICAgIE9wdGlvbmFsPENhcHR1cmVTaXpl
QW5kRnJhbWVSYXRlPiBiZXN0U3VwcG9ydGVkU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+
IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgYm9v
bCBzdXBwb3J0c0NhcHR1cmVTaXplKHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxp
bnQ+LCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IEludFNpemUmKT4mJik7CisgICAgc3RkOjpv
cHRpb25hbDxDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZT4gYmVzdFN1cHBvcnRlZFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwogICAgIGJvb2wgcHJlc2V0U3VwcG9ydHNGcmFtZVJh
dGUoUmVmUHRyPFZpZGVvUHJlc2V0PiwgZG91YmxlKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRApAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFNpemVBbmRGcmFt
ZVJhdGUgewotICAgIE9wdGlvbmFsPGludD4gd2lkdGg7Ci0gICAgT3B0aW9uYWw8aW50PiBoZWln
aHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKIAogICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKaW5kZXggZDE2NmM4YmY1ZmU5ODQwMjc2YTJhODg0N2I3NjdkNTQwY2ViNDdk
OS4uODZhOWJlMTVmMDE2NGE0ZTZmODNjNWIxNmE1ZGY5ZTM2NmNiMWM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTczLDEyICs3MywxMiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCi1ib29sIFJl
YWx0aW1lVmlkZW9Tb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+
IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUp
Citib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6
Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgcmV0dXJuIG1fc291cmNlLT5zdXBwb3J0
c1NpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlKTsKIH0KIAotdm9pZCBS
ZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lk
dGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3Zv
aWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7CiAgICAgICAg
IHdpZHRoID0gc2l6ZSgpLndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMDYyYWE4ZmI1
ZDhlODgzY2UzM2FiNzVlMWQyYzIxMDdhNzY4YzZjNC4uM2UxOGNlNWZmNTc1OGEyZDA2Njc1YzJi
Zjk3ZTY2M2Y1OTlkZTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDksOCArNDksOCBAQCBw
cml2YXRlOgogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICB2b2lkIHN0YXJ0UHJvZHVj
aW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRp
b25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpIGZpbmFsOwotICAg
IHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxp
bnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpIGZpbmFsOworICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkgZmlu
YWw7CisgICAgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1l
UmF0ZSkgZmluYWw7CiAgICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNsb25lKCkgZmluYWw7
CiAgICAgdm9pZCByZXF1ZXN0VG9FbmQoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIGNh
bGxpbmdPYnNlcnZlcikgZmluYWw7CiAgICAgdm9pZCBzdG9wQmVpbmdPYnNlcnZlZCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9Q
cmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0
LmgKaW5kZXggYTg0OWM0YzZlYWFhMjllZGMwNGYwMTQ5NzFlOGUzZDlkMGQ5MTkxZC4uZjgwY2Nl
ZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC00MCw3ICs0MCw3IEBA
IHN0cnVjdCBGcmFtZVJhdGVSYW5nZSB7CiAgICAgZG91YmxlIG1heGltdW07CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KQEAgLTUxLDE0ICs1MSwxNCBAQCB2b2lkIEZyYW1lUmF0ZVJhbmdlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1PcHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFu
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbWlu
aW11bTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+
IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBtYXhpbXVtOwogICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0p
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBW
aWRlb1ByZXNldERhdGEgewogICAgIFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4gZnJhbWVSYXRlUmFu
Z2VzOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxWaWRl
b1ByZXNldERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmlkZW9QcmVzZXREYXRhPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTgyLDE0ICs4MiwxNCBAQCB2b2lk
IFZpZGVvUHJlc2V0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VmlkZW9QcmVzZXREYXRhPiBWaWRlb1By
ZXNldERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxWaWRlb1By
ZXNldERhdGE+IFZpZGVvUHJlc2V0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNp
emU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+IGZy
YW1lUmF0ZVJhbmdlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGcmFtZVJhdGVSYW5nZT4+
IGZyYW1lUmF0ZVJhbmdlczsKICAgICBkZWNvZGVyID4+IGZyYW1lUmF0ZVJhbmdlczsKICAgICBp
ZiAoIWZyYW1lUmF0ZVJhbmdlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCAzNTIw
ZDVjMzgxNmE4YTFiM2U0MzYyOWRiYzczMjQ1OGIwYWJiZDQ4Li43YzQyZmY5YmI1MDczNzBkOGQy
NTBlMWZkN2IwOGFkNmEyODhlYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC00OSw4ICs0OSw4IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZTsgfQogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBtdXRhYmxl
IE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7
CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogCiBwcml2YXRlOgogICAgIGJv
b2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDA4NWJiMDc5MDM0MTgzNzU5
YzI5NGJjNWM1NjBmZWJkOTcwMTRlNzEuLjNmOWRkNThhOTBmOTdlOGFlM2IwM2UzMmJkM2Y0YjUy
ZWEzMzhkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBHU3RyZWFtZXJDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6fkdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKICAgICAgICAgZ3N0X2Rl
dmljZV9tb25pdG9yX3N0b3AobV9kZXZpY2VNb25pdG9yLmdldCgpKTsKIH0KIAotT3B0aW9uYWw8
R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6Omdz
dHJlYW1lckRldmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9u
YWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdzdHJlYW1lckRldmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKICAgICBj
YXB0dXJlRGV2aWNlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0
dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGE2MDM2M2IzYTEwYWM3NzdjOGM0Y2FkZjJhY2IzYjVl
ODNlMTU0NzguLjhjZTFiYTk0YjdhMDZjMjhlMmNkNmI4MGViZGZiZGY5NTkxMWRlYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lckNhcHR1
cmVEZXZpY2VNYW5hZ2VyIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoK
ICAgICB+R1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLSAgICBPcHRpb25hbDxHU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlPiBnc3RyZWFtZXJEZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYp
OworICAgIHN0ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gZ3N0cmVhbWVyRGV2
aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCBhNjU1MDRkOWI4NjA2MzNjNTMxMWM5NGIy
YmI3NWM5MjMwMGI1ZWFjLi4yZjA3NGZhZjE0NDM1NDAxMGJjYWI3ZTU0Y2RiOWVjMDVmMWQyOWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5o
CkBAIC01Myw4ICs1Myw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygp
IG92ZXJyaWRlOwogCiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRp
ZXM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6Q2FtZXJhOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5oCmluZGV4IDM2N2EwZjg2ZGQwODdlZDY1M2Rm
OGFhNmIwN2RkZTg5NmY4MjIyNjcuLmRlNTU2MTNiZjgyZjRlMGRhNmRjNzc3MWEzNTEwYzI3M2U2
MDNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZUdTdHJlYW1lci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnRl
cnJ1cHRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNJbnRlcnJ1cHRlZDsgfTsKICAgICB2
b2lkIHNldEludGVycnVwdGVkRm9yVGVzdGluZyhib29sKSBmaW5hbDsKIAotICAgIE9wdGlvbmFs
PEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fc3RyZWFtRm9ybWF0OworICAgIHN0
ZDo6b3B0aW9uYWw8R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9zdHJlYW1Gb3Jt
YXQ7CiAgICAgVmVjdG9yPGZsb2F0PiBtX2JpcEJvcEJ1ZmZlcjsKICAgICB1aW50MzJfdCBtX21h
eGltaXVtRnJhbWVDb3VudDsKICAgICB1aW50NjRfdCBtX3NhbXBsZXNFbWl0dGVkIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5k
ZXggN2FiOTUwZDY1ZDVmODA2NjZmMWY0MGQzZDA4Njc5ZjNhODFjMDg1OC4uMzc0M2ZkODJjZjI1
ZmE3ZjgwYzJhM2UzOGI4ZWZjMTIzODdjNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWw7
CiAgICAgdm9pZCBjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHNwZWFrZXJEZXZp
Y2VzKCkgY29uc3QgeyByZXR1cm4gbV9zcGVha2VyRGV2aWNlczsgfQotICAgIE9wdGlvbmFsPENh
cHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZSwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBPcHRpb25hbDxBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRldmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7CisgICAg
c3RkOjpvcHRpb25hbDxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IGF1ZGlvU2Vzc2lvbkRl
dmljZVdpdGhVSUQoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0
ZUNhcHR1cmVEZXZpY2VzKCk7CiAKQEAgLTcwLDkgKzcwLDkgQEAgcHJpdmF0ZToKIAogICAgIGVu
dW0gY2xhc3MgQXVkaW9TZXNzaW9uU3RhdGUgeyBOb3ROZWVkZWQsIEluYWN0aXZlLCBBY3RpdmUg
fTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxDYXB0dXJlRGV2aWNlPj4gbV9kZXZpY2VzOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENhcHR1cmVEZXZpY2U+PiBtX2RldmljZXM7CiAgICAgVmVj
dG9yPENhcHR1cmVEZXZpY2U+IG1fc3BlYWtlckRldmljZXM7Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4+IG1fYXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZXM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
Pj4gbV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlczsKICAgICBSZXRhaW5QdHI8V2ViQVZBdWRp
b1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lcj4gbV9saXN0ZW5lcjsKICAgICBSZXRhaW5Q
dHI8QVZBdWRpb1Nlc3Npb24+IG1fYXVkaW9TZXNzaW9uOwogICAgIEdlbmVyaWNUYXNrUXVldWU8
VGltZXI+IG1fdXBkYXRlRGV2aWNlU3RhdGVRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYWU2YWQ4ZmE1MGEzOGJiM2Iw
N2Y5YTZkYjQyM2E5MTJkYmQyMTdjZC4uYzcwNzk5N2M4M2FjNjM1NTU4MTMxNDIyNTVjYjUzOTJl
YzU3MTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzKAog
ICAgIHJldHVybiBtX2RldmljZXMudmFsdWUoKTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1p
Y3JvcGhvbmUpOwogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgewpA
QCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjphdWRpb1Nlc3Npb25EZXZpY2VXaXRo
VUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCitzdGQ6Om9wdGlvbmFsPEFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9T
ZXNzaW9uRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQogewogICAgIGlmICgh
bV9hdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcykKICAgICAgICAgcmVmcmVzaEF1ZGlvQ2FwdHVy
ZURldmljZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcAppbmRleCA1Y2NlOWYxYTU4ZjEyNjRhMWY5YmYxZWRlYjlkMWMyNDljMjFl
YzNhLi5jNjQ0ODFkZDE5NGRkN2Q5OTI2MzgxOWQ2OGFkMDg4ZWY4MjQ0YjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbWFwcGVkQnVmZmVyLT5zaXplKCk7IH0KIAogICAgIGNvbnN0IEdzdEJ1ZmZlciogZ2V0
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdl
dCgpKTsgfQotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uKCkgY29u
c3QgeyByZXR1cm4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZ3N0X3NhbXBsZV9nZXRfY2Fw
cyhtX3NhbXBsZS5nZXQoKSkpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGdldFZp
ZGVvUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBz
KGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpKTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgR1N0cmVhbWVyRW5jb2RlZEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggZTg2NGNkM2U3MjlkNDFiZDM1MGFkMTYxNDFh
OGRmM2M0MjY5N2I4NC4uN2JhN2YyMmQ3MjBjNWM5NjMwNGU5M2JjNzE4ODlmYTFmYjZhOTRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcg
QEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6cHJlcGFyZUNlcnRpZmljYXRlR2VuZXJhdG9yKEZ1
bmN0aW9uPHZvaWQocnRjOjpSVENDZXJ0aWYKICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBP
cHRpb25hbDxjcmlja2V0OjpNZWRpYVR5cGU+IHR5cGVGcm9tS2luZChjb25zdCBTdHJpbmcmIGtp
bmQpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Y3JpY2tldDo6TWVkaWFUeXBlPiB0eXBl
RnJvbUtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIGlmIChraW5kID09ICJhdWRpbyJf
cykKICAgICAgICAgcmV0dXJuIGNyaWNrZXQ6Ok1lZGlhVHlwZTo6TUVESUFfVFlQRV9BVURJTzsK
QEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBmcm9tU3RkU3RyaW5nKGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh2YWx1
ZS5kYXRhKCksIHZhbHVlLmxlbmd0aCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDx1
aW50MTZfdD4gdG9DaGFubmVscyhhYnNsOjpvcHRpb25hbDxpbnQ+IG51bUNoYW5uZWxzKQorc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB0b0NoYW5uZWxzKGFic2w6Om9wdGlv
bmFsPGludD4gbnVtQ2hhbm5lbHMpCiB7CiAgICAgaWYgKCFudW1DaGFubmVscykKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cENhcGFi
aWxpdGllcyB0b1JUQ1J0cENhcGFiaWxpdGllcyhjb25zdCB3ZWJydGM6OlJ0cENhcGFiaWxpdAog
ICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CiAKLU9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGll
cz4gTGliV2ViUlRDUHJvdmlkZXI6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYg
a2luZCkKK3N0ZDo6b3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRl
cjo6cmVjZWl2ZXJDYXBhYmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIGF1dG8g
bWVkaWFUeXBlID0gdHlwZUZyb21LaW5kKGtpbmQpOwogICAgIGlmICghbWVkaWFUeXBlKQpAQCAt
NDI3LDcgKzQyNyw3IEBAIE9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gTGliV2ViUlRDUHJv
dmlkZXI6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHRvUlRD
UnRwQ2FwYWJpbGl0aWVzKGZhY3RvcnktPkdldFJ0cFJlY2VpdmVyQ2FwYWJpbGl0aWVzKCptZWRp
YVR5cGUpKTsKIH0KIAotT3B0aW9uYWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92
aWRlcjo6c2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKK3N0ZDo6b3B0aW9u
YWw8UlRDUnRwQ2FwYWJpbGl0aWVzPiBMaWJXZWJSVENQcm92aWRlcjo6c2VuZGVyQ2FwYWJpbGl0
aWVzKGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICBhdXRvIG1lZGlhVHlwZSA9IHR5cGVGcm9t
S2luZChraW5kKTsKICAgICBpZiAoIW1lZGlhVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmgKaW5kZXggNTA1YWM3ZjIwMGY5MTViMWE5YzZlODRkNTYxY2E0MjBjMGUzMzUwNi4u
MjM1Njc4OGQ1MWZlZDRiNWZmYTdiMGMzOTNlMzQ4ZmE0NWZiODFlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgLy8g
Q2FsbGJhY2sgaXMgZXhlY3V0ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICB2b2lkIHBy
ZXBhcmVDZXJ0aWZpY2F0ZUdlbmVyYXRvcihGdW5jdGlvbjx2b2lkKHJ0Yzo6UlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3ImKT4mJik7CiAKLSAgICBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IHJl
Y2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCk7Ci0gICAgT3B0aW9uYWw8UlRD
UnRwQ2FwYWJpbGl0aWVzPiBzZW5kZXJDYXBhYmlsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxpdGllcz4gcmVjZWl2ZXJDYXBhYmlsaXRp
ZXMoY29uc3QgU3RyaW5nJiBraW5kKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJUQ1J0cENhcGFiaWxp
dGllcz4gc2VuZGVyQ2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCk7CiAKICAgICB2b2lk
IGNsZWFyRmFjdG9yeSgpIHsgbV9mYWN0b3J5ID0gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IDBlNDFjYzQxM2Y4NDNmYTAzOThhMWExNzI0NDBkMWUyNjc3YjI3
ZTQuLjNjNjYyMzNmNTk0MTU5ZWQ1MWY3N2I2MmQ0ZGEzMjdhY2I5ZjcwZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0xMjYsOCArMTI2LDggQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biBtX3NhbXBsZVJvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsK
IAotICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0
dGluZ3M7Ci0gICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9j
YXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKICAgICBSZXRhaW5Q
dHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVE
ZXZpY2U+IG1fZGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4
IDYzOTYwYzQ1N2I1YTkzMmY5ZDc5ZTNiYTFjZWNlYTdkMTExNWQ1NDkuLjZlMjZjOGZhNGVjZDMw
YWMxZTUyZmVjMzhhZjU3ZDBlMzNkOWJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBnZXREZXZpY2VJbmZvKHVp
bnQzMl90IGRldmljZUlELCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIFN0cgogICAg
IHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSUQsIERldmljZVR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElEKQorc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNl
SUQsIERldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBncm91cElEKQogewogICAgIEFTU0VS
VCh0eXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUgfHwgdHlwZSA9
PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTcGVha2VyKTsKICAgICBTdHJpbmcgcGVyc2lz
dGVudElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgKaW5kZXggY2RlOTFjMTg0NjEw
MTQ1OGIxZTFkZWZlYjRiNzMxMmU0YTE1MzI5Ni4uMjAzNDQ3OWY0ZTczYTE3OTYwNzFmZjFhODdh
ODFkYTc1Njg2ZjIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3B0aW9u
YWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gY3JlYXRlKHVpbnQzMl90LCBEZXZpY2VUeXBlLCBj
b25zdCBTdHJpbmcmIGdyb3VwSUQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50MzJfdCwgRGV2aWNlVHlwZSwgY29uc3QgU3RyaW5n
JiBncm91cElEKTsKICAgICB2aXJ0dWFsIH5Db3JlQXVkaW9DYXB0dXJlRGV2aWNlKCkgPSBkZWZh
dWx0OwogCiAgICAgdWludDMyX3QgZGV2aWNlSUQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRl
eCBlZWI3MDA4ZjViMDk3N2ViNjMyMDE3YTNmYmMwODE2N2FjZjljZTBmLi40ZGUwMGM5MDU3NThk
MjQ2NWZhYjNhZTVlMTkwZjI1NzhiOThiYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgVmVjdG9yPENh
cHR1cmVEZXZpY2U+JiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmlj
ZXMoKQogICAgIHJldHVybiBtX2NhcHR1cmVEZXZpY2VzOwogfQogCi1PcHRpb25hbDxDYXB0dXJl
RGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGRldmljZUlEKQogewogICAgIEFTU0VS
VF9VTlVTRUQodHlwZSwgdHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bo
b25lKTsKICAgICBmb3IgKGF1dG8mIGRldmljZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKQEAgLTI0
OCw3ICsyNDgsNyBAQCBWZWN0b3I8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4mIENvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJlRAogICAgIHJldHVybiBtX2NvcmVB
dWRpb0NhcHR1cmVEZXZpY2VzOwogfQogCi1PcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
PiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJRChj
b25zdCBTdHJpbmcmIGRldmljZUlEKQorc3RkOjpvcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGV2aWNlV2l0aFVJ
RChjb25zdCBTdHJpbmcmIGRldmljZUlEKQogewogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY29y
ZUF1ZGlvQ2FwdHVyZURldmljZXMoKSkgewogICAgICAgICBpZiAoZGV2aWNlLnBlcnNpc3RlbnRJ
ZCgpID09IGRldmljZUlEICYmIGRldmljZS5lbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDZhYWMxNTQ1NmM5MGE2YWJkOTFhNDMyZTg3
ZDhjY2ZjMjk5YTI0YTYuLmIzMjA5NjUwYzA1YTQ0MmI5MmQyOGNiMzRmNjdhM2NiNGY3MDFlMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC00Myw5
ICs0Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXImIHNpbmdsZXRvbigpOwogCiAgICAgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0
dXJlRGV2aWNlcygpIGZpbmFsOwotICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVE
ZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0
cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdp
dGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBPcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBjb3JlQXVkaW9EZXZpY2VX
aXRoVUlEKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVy
ZURldmljZT4gY29yZUF1ZGlvRGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmKTsKICAgICBjb25z
dCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHNwZWFrZXJEZXZpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9zcGVha2VyRGV2aWNlczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCmluZGV4IDQyZTE4NDU2NjJmNmIyMDFlNWNhYjY5YjlkMDhmMTExMzdiNzEzMmEu
LjAzZjNlNjJhMjYzN2MzZTkwMWJhZjY5NGQzYzUyNjVlZmE3NGFlYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pb1VuaXRTdGFydGVkIHsgZmFsc2UgfTsKIAogICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwot
ICAgIG11dGFibGUgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJl
bnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICB2
b2lkIGNoZWNrVGltZXN0YW1wcyhjb25zdCBBdWRpb1RpbWVTdGFtcCYsIHVpbnQ2NF90LCBkb3Vi
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggNGI1NTVkNGM3Y2UzM2Ew
NTNkMjQzN2MzNmRlYzk5MWYxNmQyODU0Yy4uNWVjM2Q4ZWM5YjdlZTNlYjU1MWQwYzA5ZWE5MzEw
NWE2ZDg3OGIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Niw3ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxheVNhbXBsZXMoU2Vjb25kcykgZmluYWw7CiAg
ICAgdm9pZCBzZXRJbnRlcnJ1cHRlZEZvclRlc3RpbmcoYm9vbCkgZmluYWw7CiAKLSAgICBPcHRp
b25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgOTYw
MDAgfSB9OyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIHNldHRpbmdzKCkgZmluYWw7CkBAIC05NCw4ICs5NCw4IEBAIHByaXZhdGU6CiAKICAgICB1
aW50MzJfdCBtX2NhcHR1cmVEZXZpY2VJRCB7IDAgfTsKIAotICAgIE9wdGlvbmFsPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIE9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CisgICAgc3RkOjpv
cHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50
U2V0dGluZ3M7CiAKICAgICBib29sIG1faXNSZWFkeVRvU3RhcnQgeyBmYWxzZSB9OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3Bs
YXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKaW5kZXggZTIwOWMxNjk5
YmFjMzkyMjczZTNiYWQ3MGVmNjNhZGZmYWMxODEzYy4uMmZlZjhiYjE3MzdjZjllMTVlZTJlMDM1
N2QyOGViMjAyZjJmMjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29j
b2EuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6
OnVwZGF0ZVdpbmRvd0NhcHR1cmVEZXZpY2VzKCkKICNlbmRpZgogfQogCi1PcHRpb25hbDxDYXB0
dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6c2NyZWVuQ2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8
Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVE
ZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHJldHVybiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OnNjcmVlbkNh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmljZUlEKTsKQEAgLTgyLDcgKzgyLDcgQEAg
T3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICNlbmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVy
ZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHJldHVybiBXaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVE
ZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmljZUlEKTsKQEAgLTkyLDcgKzkyLDcgQEAgT3B0aW9u
YWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OndpbmRvd0NhcHR1
cmVEZXZpY2VXaXRoUGVyc2kKICNlbmRpZgogfQogCi1PcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBE
aXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQo
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGlkKQorc3RkOjpv
cHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6Y2FwdHVy
ZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGlkKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuaAppbmRleCBlNjdjOGVlNDgyZTVlM2I2ZmFiOTcxZGQ5NTM2MTc4OWI0MmMwODBj
Li4yOGZmZjQwYTc5NzEzNzA2OTY2OTA0ODU3NDMzMmQ4ZWIyMmVmM2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5h
Z2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaApAQCAtNDUsOSArNDUsOSBAQCBwcml2YXRlOgog
CiAgICAgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFs
OwogCi0gICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQZXJzaXN0
ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0
ZW50SUQoY29uc3QgU3RyaW5nJik7Ci0gICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpv
cHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CiAKICAgICBWZWN0
b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oCmluZGV4IDBiNmIyNDRhNDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4
ZGMuLjdkZWY2Y2YxN2JjOGQ1ODFjM2U2YjkzYWJhOTE5ZDRjNmEzOGE2ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIAogICAgIFVuaXF1ZVJlZjxDYXB0dXJlcj4gbV9jYXB0
dXJlcjsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2Nh
cGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1f
Y3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogCiAgICAg
TW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLmgKaW5kZXggYjYwNzllODM2YjhlM2ExYWU5ZTky
NjBmYTIzMDI2YjM2NjY3ZDk5ZS4uODU0Y2FiZDZmOWFkYTYzN2M4MTk2NjMwMjg5NTZhZmFlODdl
NmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjKHVpbnQz
Ml90KTsKICAgICB+U2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjKCk7CiAKLSAgICBzdGF0aWMgT3B0
aW9uYWw8Q2FwdHVyZURldmljZT4gc2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQo
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7CiAgICAg
c3RhdGljIHZvaWQgc2NyZWVuQ2FwdHVyZURldmljZXMoVmVjdG9yPENhcHR1cmVEZXZpY2U+Jik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCA4
ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4ZjA1NTI4NjMxMmUyLi4yZGNlNTQxY2NmNzgwMmJj
YWEzYTM3MTZiNTJhMTA0YmNkMTZhZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgc2l6ZV90IENHRGlzcGxheU1vZGVHZXRQaXhlbHNI
aWdoKENHRGlzcGxheU1vZGVSZWYpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBP
cHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxh
eUlEIGRpc3BsYXlJRCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENHRGlyZWN0RGlzcGxheUlEPiB1
cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIHVpbnQz
Ml90IGRpc3BsYXlDb3VudCA9IDA7CiAgICAgYXV0byBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlM
aXN0KDAsIG51bGxwdHIsICZkaXNwbGF5Q291bnQpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQg
U2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpuZXdGcmFtZShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0
YXR1cyBzdGF0dXMsIERpc3BsCiAgICAgbV9jdXJyZW50RnJhbWUgPSBXVEZNb3ZlKG5ld0ZyYW1l
KTsKIH0KIAotT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFj
OjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRldmlj
ZUlEKQorc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJN
YWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2
aWNlSUQpCiB7CiAgICAgYXV0byBkaXNwbGF5SUQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRl
dmljZUlEKTsKICAgICBpZiAoIWRpc3BsYXlJRCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNl
UHJvdmlkZXJDb2NvYS5oCmluZGV4IGI2NGVjN2Y4MTRiMjZiNmJkZjEwMTc4NWJiNGNmY2Y1NDg3
NzdjOWIuLjdmYzA3MjVmYmJmYTNmYTZlYjIyYzdmNGQxYTA5ZWRkYTk1NzRmMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmgKQEAgLTc3LDggKzc3LDggQEAgcHJp
dmF0ZToKICAgICBMb2NrIG1fbG9jazsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBt
X2NsaWVudCB7IG51bGxwdHIgfTsKIAotICAgIE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwotICAgIE9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OwogICAgIFJl
ZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRv
d0Rpc3BsYXlDYXB0dXJlck1hYy5oCmluZGV4IGRlY2I2MmIzODg2YzBlN2U2Njc5OWJiZjk5ZmM3
ZmUxMzVjZDlhYWMuLmVmOWY0MjhmYWZmYjljMTljY2QyNzhmYWJjYjJjOTdkMGIzYmI5M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dE
aXNwbGF5Q2FwdHVyZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFdpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYyh1aW50MzJfdCk7CiAg
ICAgdmlydHVhbCB+V2luZG93RGlzcGxheUNhcHR1cmVyTWFjKCkgPSBkZWZhdWx0OwogCi0gICAg
c3RhdGljIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHdpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVy
c2lzdGVudElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1
cmVEZXZpY2U+IHdpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbmRvd0NhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMu
bW0KaW5kZXggNDE4ZjY5MzdkZTZjMTA3YWQ1ZDhhYmQwNGZkZGE0OTA1YjAxMGI5Zi4uNzhiYmNh
ZDEzOTk4NjJmNTViOTcwYmU0NzdmMjUxNGM0ZjM0ODQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlz
cGxheUNhcHR1cmVyTWFjLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBXaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OmdlbmVy
YXRlRnIKICAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1l
VHlwZSB7IFJldGFpblB0cjxDR0ltYWdlUmVmPiB7IHdpbmRvd0ltYWdlKCkgfSB9OwogfQogCi1P
cHRpb25hbDxDYXB0dXJlRGV2aWNlPiBXaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OndpbmRvd0Nh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgaWRTdHJpbmcpCitzdGQ6
Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFdpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZFN0cmluZykKIHsK
ICAgICBhdXRvIHdpbmRvd0lEID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90PihpZFN0cmluZyk7CiAg
ICAgaWYgKCF3aW5kb3dJRCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IGNiZDZhZDJmM2VlZDExYWJlODAy
MTIyMzhkY2UzZTAwZjA4YjQzZjQuLjlkNWVmYzgzZjM0ZWIxOGQ1OTlkYzEwY2FhOGZjMGNhMzk5
ZGIwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAogfQogCi1PcHRpb25hbDxH
ZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRp
b24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCmluZGV4IDk5N2QxNTRkZGZmODRjZjQ0OGZjODQwMTYwNjgzOTUyOTkyYmVkNTUu
LmZlMzI3NTk2YTJmMGRiZTM2ZDFkNjgyZmZiOTQ0YjI0OTcxYjAwYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKGNvbnN0IFN0cmlu
ZyYgYXV0aG9yaXphdGlvblRva2VuKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0
UG9zaXRpb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2Nh
dGlvbiYpIG92ZXJyaWRlOwogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
bGVhckVycm9yKCk7CiAKICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsK
LSAgICBPcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247
CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBU
aW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tNZWRpYURldmljZS5oCmluZGV4IDVmYTc5YTlhYjUzOGJkNjQ5ZGE0ZTJkNTMyMThkODk4
NTQ3MjFjZTYuLjQ2N2Q5MTM5NDQ0M2VmYTI4MzYzYTg2YThkNTRmZDJjNDQ1ODUzY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtNDMs
OSArNDMsOSBAQCBzdHJ1Y3QgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8TW9ja01pY3Jv
cGhvbmVQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAg
ICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdFNh
bXBsZVJhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjMsMTQgKzYz
LDE0IEBAIHN0cnVjdCBNb2NrU3BlYWtlclByb3BlcnRpZXMgewogICAgIH0KIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxNb2NrU3BlYWtlclByb3Bl
cnRpZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1vY2tTcGVha2VyUHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewot
ICAgICAgICBPcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0U2FtcGxlUmF0ZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0U2FtcGxlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+
PiBkZWZhdWx0U2FtcGxlUmF0ZTsKICAgICAgICAgaWYgKCFkZWZhdWx0U2FtcGxlUmF0ZSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiByZWxhdGVkTWljcm9waG9uZUlkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVs
YXRlZE1pY3JvcGhvbmVJZDsKICAgICAgICAgZGVjb2RlciA+PiByZWxhdGVkTWljcm9waG9uZUlk
OwogICAgICAgICBpZiAoIXJlbGF0ZWRNaWNyb3Bob25lSWQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtOTQsMjQgKzk0LDI0IEBAIHN0cnVjdCBNb2NrQ2FtZXJhUHJvcGVy
dGllcyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPE1vY2tDYW1lcmFQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ2FtZXJhUHJvcGVydGllcz4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxkb3VibGU+IGRlZmF1bHRG
cmFtZVJhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJhbWVSYXRl
OwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRGcmFtZVJhdGU7CiAgICAgICAgIGlmICghZGVm
YXVsdEZyYW1lUmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+
IGZhY2luZ01vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZhY2luZ01vZGU7CiAgICAgICAgIGRlY29kZXIgPj4g
ZmFjaW5nTW9kZTsKICAgICAgICAgaWYgKCFmYWNpbmdNb2RlKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRh
Pj4gcHJlc2V0czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VmlkZW9QcmVzZXREYXRh
Pj4gcHJlc2V0czsKICAgICAgICAgZGVjb2RlciA+PiBwcmVzZXRzOwogICAgICAgICBpZiAoIXBy
ZXNldHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPENvbG9yPiBmaWxsQ29sb3I7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGZpbGxD
b2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENv
bG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEzNSwxOCArMTM1LDE4
IEBAIHN0cnVjdCBNb2NrRGlzcGxheVByb3BlcnRpZXMgewogICAgIH0KIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxNb2NrRGlzcGxheVByb3BlcnRp
ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1v
Y2tEaXNwbGF5UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlPiB0eXBlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gdHlwZTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb2xv
cj4gZmlsbENvbG9yOwogICAgICAgICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKICAgICAgICAgaWYg
KCFmaWxsQ29sb3IpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+IGRlZmF1bHRTaXplOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRTaXplOwogICAg
ICAgICBpZiAoIWRlZmF1bHRTaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTIxNyw5ICsyMTcsOSBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUHJvcGVydGllcywgdHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBz
dGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBkZWNvZGVNb2NrTWVkaWFEZXZpY2UoRGVj
b2RlciYgZGVjb2RlciwgU3RyaW5nJiYgcGVyc2lzdGVudElkLCBTdHJpbmcmJiBsYWJlbCkKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IGRlY29kZU1vY2tNZWRpYURl
dmljZShEZWNvZGVyJiBkZWNvZGVyLCBTdHJpbmcmJiBwZXJzaXN0ZW50SWQsIFN0cmluZyYmIGxh
YmVsKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAgICAgICBkZWNv
ZGVyID4+IHByb3BlcnRpZXM7CiAgICAgICAgIGlmICghcHJvcGVydGllcykKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMjcsMTkgKzIyNywxOSBAQCBzdHJ1Y3QgTW9ja01l
ZGlhRGV2aWNlIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBz
dGF0aWMgT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0ZW50SWQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gcGVyc2lzdGVudElkOwogICAgICAgICBpZiAoIXBlcnNpc3RlbnRJZCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBs
YWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNv
ZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDx1aW50OF90PiBpbmRleDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50OF90PiBpbmRleDsKICAgICAgICAgZGVjb2RlciA+PiBpbmRleDsK
ICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmgKaW5kZXggZDdlZGFlZmI4NWEyMzMzMDllNzUxZmE2MzAwODgxMzg2OWQ1MDI0YS4u
ZjBkYWRmNzFkMmQwMzUzNWE2ODJlNTBjNzliOTQyNDJkMDg2OGZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApA
QCAtNzUsOCArNzUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9jaGFubmVsQ291bnQg
eyAyIH07CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgT3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJh
aW50czsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBtX3Rp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCAyMmU0YTE3N2M3NTA0YWU3NzZl
MjhjYTY0NWZkZjU0M2QxZWRhOTI1Li4zNjZhMTc4NTczZmYwMGQxNmRjODc3NzExNzM4Y2M4OGQz
N2M4MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBA
IHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnJlbW92ZURldmljZShjb25zdCBT
dHJpbmcmIHBlcnNpc3RlbnRJZCkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5jYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKIH0KIAotT3B0aW9uYWw8TW9ja01lZGlh
RGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJz
aXN0ZW50SUQoY29uc3QgU3RyaW5nJiBpZCkKK3N0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNl
PiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CiAKQEAg
LTM0OCw3ICszNDgsNyBAQCBPcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNlV2l0aFBlcnNpc3RlbgogICAgIHJldHVybiBpdGVy
YXRvci0+dmFsdWU7CiB9CiAKLU9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpCitzdGQ6Om9wdGlvbmFsPENh
cHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNl
V2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKCFpZC5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmgKaW5kZXggYzM3YzJhYzY3MDAzYzBmNGY5OGMyMGY1OWIxMjgyODlmMDg1NWJkYS4u
Yjc4ZGZjYWE0YWQ1ZDdiMTVkMjI0M2ZmNmUzYWZmZjZhNTFhOGVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaApAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiYgdmlkZW9EZXZpY2VzKCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgZGlzcGxheURldmljZXMoKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxNb2NrTWVk
aWFEZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3Rl
bnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IG1vY2tEZXZpY2VXaXRoUGVyc2lzdGVu
dElEKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVybiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7
IH0KICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigp
IHsgcmV0dXJuIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQpAQCAtNzUsMTcgKzc1LDE3
IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgTW9ja0F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgZmlu
YWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogICAgIHByaXZhdGU6CiAgICAgICAg
IGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJl
dHVybiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bWljcm9waG9uZURldmljZXMoKTsg
fQotICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNp
c3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQp
IGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRCh0eXBlLCBpZCk7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDxD
YXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgaWQpIGZpbmFsIHsgcmV0dXJuIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRCh0
eXBlLCBpZCk7IH0KICAgICB9OwogICAgIGNsYXNzIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmlu
YWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZpZGVvRGV2aWNlcygp
OyB9Ci0gICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVy
c2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBp
ZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVE
ZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KHR5cGUsIGlkKTsgfQogICAgIH07CiAgICAgY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlRGV2aWNl
TWFuYWdlciBmaW5hbCA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygp
IGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2
aWNlcygpOyB9Ci0gICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBpZCkgZmluYWwgeyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQorICAgICAgICBzdGQ6Om9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwgeyByZXR1
cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07CiAKICAgICBNb2NrQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlciBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4
IDIwNzNhNmMzYzJmZGE4NjQyZTVmY2Y1NWE1M2I3OWQ2MjJmZGEzNzcuLjU5NGVjMmIyNTg4MTQz
ZjY3Y2FkYjM2Zjk0NWY2MzI5N2Y0NDU3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC05Myw3ICs5
Myw3IEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtCiAgICAgbV9maWxsQ29sb3IgPSBwcm9wZXJ0
aWVzLmZpbGxDb2xvcjsKIH0KIAotYm9vbCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9y
dHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVp
Z2h0LCBPcHRpb25hbDxkb3VibGU+IHJhdGUpCitib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6
Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKIHsKICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgc3BsaXR0aW5nIG1vY2sgZGlzcGxheSBpbnRvIGFub3RoZXIg
Y2xhc3Mgc28gd2UgZG9uJ3QgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIHNpbGx5IGRhbmNlCiAgICAg
Ly8gYmVjYXVzZSBvZiB0aGUgUmVhbHRpbWVWaWRlb1NvdXJjZSBpbmhlcml0YW5jZS4KQEAgLTEw
Myw3ICsxMDMsNyBAQCBib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0c1NpemVB
bmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aQogICAgIHJldHVybiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUod2lkdGgsIGhlaWdodCwgcmF0
ZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFtZVJh
dGUoT3B0aW9uYWw8aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRv
dWJsZT4gcmF0ZSkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemVBbmRGcmFt
ZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmF0ZSkKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIg
c3BsaXR0aW5nIG1vY2sgZGlzcGxheSBpbnRvIGFub3RoZXIgY2xhc3Mgc28gd2UgZG9uJ3QgZG9u
J3QgaGF2ZSB0byBkbyB0aGlzIHNpbGx5IGRhbmNlCiAgICAgLy8gYmVjYXVzZSBvZiB0aGUgUmVh
bHRpbWVWaWRlb1NvdXJjZSBpbmhlcml0YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBmYTAxMGMwMzc2
NGJhYjgwOGFmMDFmNGM5YjkwM2Y3YTBlOTFmMjlkLi5mMDVlNWEzMjZlYzJkMzQwNWYyOWVlZmFh
MGVhYjUyMWIxYjU0NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJl
U291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQotICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxk
b3VibGU+KSBmaW5hbDsKLSAgICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50
PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5h
bDsKKyAgICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFs
OwogICAgIHZvaWQgc2V0RnJhbWVSYXRlV2l0aFByZXNldChkb3VibGUsIFJlZlB0cjxWaWRlb1By
ZXNldD4pIGZpbmFsOwogCiAKQEAgLTExMyw4ICsxMTMsOCBAQCBwcml2YXRlOgogCiAgICAgdW5z
aWduZWQgbV9mcmFtZU51bWJlciB7IDAgfTsKICAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZT4gbV9lbWl0RnJhbWVUaW1lcjsKLSAgICBPcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBPcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNl
dHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIENvbG9yIG1fZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNr
IH07CiAgICAgTW9ja01lZGlhRGV2aWNlIG1fZGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA4NjY3N2FlZmY2ODJkODNhYTIzOGUwODlmYjg2
YzFmMDk3YzY4ZmNkLi5iMzMxZWYxMjk1NTdjMDBjOTkzM2QzYTA0ZDI0NWE0OTYwZWY5N2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQo
KQogICAgICAgICB9KTsKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
PiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
KCkKK3N0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+dmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKaW5kZXggMzI1NGRhNWZiZjUzYzUyMDc5OGNkYTgw
YmM5NDc4OTAyYWIxYzYyYS4uNjM4ODBmYjYwYWY5ODFkMmJjYTE4NTk2ZjY1YmI4NmRkZTk4ODVh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaApAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKLSAgICBP
cHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcygpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBvdmVycmlkZTsKIAogICAg
IE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAgICBSZWZQdHI8TW9ja01lZGlhU291cmNlUHJpdmF0
ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmNwcAppbmRleCA3NDI4MDJjNmM1OWRkMzE0MmM0MDZmOWM3MmZjN2Y3OGI4YWM4N2VlLi42Yzkx
N2U0MzVhYWE0NDVmODY4OWJlYWVlNDQ1OGUxMmYyNDljMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBNZWRpYVRpbWUgTW9ja01l
ZGlhU291cmNlUHJpdmF0ZTo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGxheWVyLmN1cnJlbnRNZWRpYVRpbWUoKTsKIH0KIAotT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1
YWxpdHlNZXRyaWNzPiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjp2aWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3MoKQorc3RkOjpvcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGU6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCiB7CiAg
ICAgcmV0dXJuIFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyB7CiAgICAgICAgIG1fdG90YWxW
aWRlb0ZyYW1lcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKaW5kZXggMTIzYjY4
MzhkY2Y1ZTRlZmQ1YTU1MzQ0YWJhM2YxYWZjNDI5MzMwNS4uYmY5ZmRlMWYzODE4YTAwMjIxZDI2
ZDk2YTlhYWUyYThhZWY2NmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBzZWVrVG9UaW1lKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1l
ZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFU
aW1lKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+
IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKTsKIAog
ICAgIHZvaWQgaW5jcmVtZW50VG90YWxWaWRlb0ZyYW1lcygpIHsgKyttX3RvdGFsVmlkZW9GcmFt
ZXM7IH0KICAgICB2b2lkIGluY3JlbWVudERyb3BwZWRGcmFtZXMoKSB7ICsrbV9kcm9wcGVkVmlk
ZW9GcmFtZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXgg
ODhjZjFiZjJhYWE4NjkzNGNjYTgyYzRmY2FhNDkxZDc1YTA2Yzg4NS4uNDM4NDBhM2Q2MWU5N2Vj
ZDFhYzE5ZmU3MzY1Yjk4YWNkN2YxNjY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmIG9mZnNldCkgb3ZlcnJpZGUgeyBtX2JveC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zmc2V0KTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IDI4YTJiNTYyMTgyYWE1
ODAzMTkyZjdjYzEzY2NhYWUxY2NlOTczNTcuLmRmYmYzNmExZWM2NzRmM2JkODBiMjhhYWU4MDE5
ODllNTllNjE0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTkx
LDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAg
IE1lZGlhVGltZSBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4
UXVldWVEZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7
CiAgICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA3NDY3MzcwYTY0MjdmMTZhYzVjMjM2MDcxMDYw
YThiNDI5OTM5YTlhLi5lYzgwNzlhZWY3YTRkN2VkZWU3MzhkNzFlN2JlMThkNTY1ZGU1ZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLU9w
dGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSgpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1F
TlQpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBn
ZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgK
aW5kZXggOGZjYmU4YzExZjIxMzQ4Y2VmZTQ4ZWQwMjY2NWM1NWQ2MzY5Njc3Mi4uNWE4NjM5NzRh
ZjNlNTE0MmI5M2RmMTBlZmFlZTk0NzM4NzBmOGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpOwogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBzaXplKCk7Ci0gICAgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JGaWxlQWNjZXNz
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUZpbGVBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaAppbmRleCA2M2JlZTFkZDYxZWFmZmVlY2IwYzZmMzc3NjU5OWU2YTAyYzM4
NGNiLi5hZDMwYzY5MTBhMTJjOTgxZjgwYjQ3MTMyYTk3MGNmMTRkZjMxN2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAgICBVUkwgZmlyc3RQYXJ0eTsKICAgICBTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIFVSTCB1cmw7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CisgICAgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFVSTCBmaXJzdFBhcnR5OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkpCkBAIC03MSwxMiArNzEsMTIgQEAgT3B0aW9uYWw8Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
OjpkZWNvZGUoRGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYg
KCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaAppbmRleCBlNjNhN2IwYTkxNjc3ZGY3NGZhMmNkNWE2YzcwNzJmZDE3
Njc5ZmQzLi40MzJmZDMwOTE3ZGZjYTg1ZTY4ZDVhY2QxMjkzYTQyMzgxNTUxNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJUEFkZHJlc3MgewogcHVibGljOgotICAgIHN0YXRpYyBPcHRp
b25hbDxJUEFkZHJlc3M+IGZyb21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBmcm9tU29ja0FkZHJJbjYo
Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luNiYpOwogICAgIGV4cGxpY2l0IElQQWRkcmVzcyhjb25z
dCBzdHJ1Y3QgaW5fYWRkciYgYWRkcmVzcykKICAgICAgICAgOiBtX2FkZHJlc3MoYWRkcmVzcykK
ICAgICB7CkBAIC03MCw3ICs3MCw3IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImJik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90
IGlkZW50aWZpZXIpOwogCi1pbmxpbmUgT3B0aW9uYWw8SVBBZGRyZXNzPiBJUEFkZHJlc3M6OmZy
b21Tb2NrQWRkckluNihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42JiBhZGRyZXNzKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBJUEFkZHJlc3M6OmZyb21Tb2NrQWRkckluNihjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW42JiBhZGRyZXNzKQogewogICAgIGlmIChhZGRyZXNzLnNpbjZf
ZmFtaWx5ID09IEFGX0lORVQ2KQogICAgICAgICByZXR1cm4gSVBBZGRyZXNzIHsgYWRkcmVzcy5z
aW42X2FkZHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKaW5kZXggNzFlZTZhZWVmMmMzMzEwZTFmNTg2YTgwZTE5NWMxMTVjNmVk
NTJkYS4uOTk1OWVhNjYzYzAxNTA0YmZhYjMxMWVmOTgxMzBhZTQ5YWNiNzNjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgc3RhdGljIFdvcmtRdWV1ZSYgZGVjb2RlUXVldWUoKQogCiBzdGF0aWMg
UmVzdWx0IHBhcnNlTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIGlm
IChPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRD
b250ZW50VHlwZTo6Y3JlYXRlKG1lZGlhVHlwZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8UGFy
c2VkQ29udGVudFR5cGU+IHBhcnNlZENvbnRlbnRUeXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNy
ZWF0ZShtZWRpYVR5cGUpKQogICAgICAgICByZXR1cm4geyBwYXJzZWRDb250ZW50VHlwZS0+bWlt
ZVR5cGUoKSwgcGFyc2VkQ29udGVudFR5cGUtPmNoYXJzZXQoKSwgcGFyc2VkQ29udGVudFR5cGUt
PnNlcmlhbGl6ZSgpLCB7IH0gfTsKICAgICByZXR1cm4geyAidGV4dC9wbGFpbiJfcywgIlVTLUFT
Q0lJIl9zLCAidGV4dC9wbGFpbjtjaGFyc2V0PVVTLUFTQ0lJIl9zLCB7IH0gfTsKIH0KQEAgLTE0
OCw3ICsxNDgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURl
Y29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdQogICAgICk7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVUYXNr
JiB0YXNrLCBNb2RlIG1vZGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlY29kZUJhc2U2NChjb25zdCBEZWNvZGVUYXNrJiB0YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAg
c3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBNb2RlOjpGb3JnaXZpbmdCYXNlNjQ6CkBAIC0xNzIs
NyArMTcyLDcgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBkZWNvZGVFc2NhcGVkKGNvbnN0IERl
Y29kZVRhc2smIHRhc2spCiAgICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0FzRGF0
YSh0YXNrLmVuY29kZWREYXRhLCBlbmNvZGluZyk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXN1
bHQ+IGRlY29kZVN5bmNocm9ub3VzbHkoRGVjb2RlVGFzayYgdGFzaywgTW9kZSBtb2RlKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiBkZWNvZGVTeW5jaHJvbm91c2x5KERlY29kZVRhc2sm
IHRhc2ssIE1vZGUgbW9kZSkKIHsKICAgICBpZiAoIXRhc2sucHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgZGVjb2RlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgTW9kZSBt
b2RlLCBECiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYg
dXJsLCBNb2RlIG1vZGUpCitzdGQ6Om9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYg
dXJsLCBNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmlu
ZGV4IGE0NzY5ODVhNzM5NDRmMDZhNWE1MGZhMGVkOGQ4MTczMzQ5ZmYyNWQuLjk0NzI4NjNiM2Iw
MWYwOTMxYzFjOTQ0NDU3YmI0YjRjZmU4NGNmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0
IFJlc3VsdCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiB9OwogCi11c2luZyBEZWNvZGVD
b21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8UmVzdWx0Pik+
OwordXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKHN0
ZDo6b3B0aW9uYWw8UmVzdWx0Pik+Owogc3RydWN0IFNjaGVkdWxlQ29udGV4dCB7CiAjaWYgVVNF
KENPQ09BX0VWRU5UX0xPT1ApCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRQYWly
czsKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFNjaGVkdWxlQ29udGV4dCB7CiAKIGVudW0gY2xh
c3MgTW9kZSB7IExlZ2FjeSwgRm9yZ2l2aW5nQmFzZTY0IH07CiB2b2lkIGRlY29kZShjb25zdCBV
UkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBNb2RlLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlKGNvbnN0IFVSTCYs
IE1vZGUpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxSZXN1bHQ+IGRlY29kZShjb25z
dCBVUkwmLCBNb2RlKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCmluZGV4IDBmZTk0ZjQyOWQ3Y2M0MDRjM2U1ZDIxYTgzYjI1MmQ2YjE4YzZi
NzIuLmI3N2Y5MDA3ODE5ZmZlYzI5NWI2MDUyOTQ4YWU5OTRkYWUyNDYxZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xOTIsNyArMTkyLDcg
QEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAg
IG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChG
b3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSkpOwogICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA5ZGFjNjBlN2FkM2JlNDk1
MGY2OTc5YmM2ZjQzYjZjNzYwOWY0Y2ViLi44ZjIyMTAyZmJjM2FmMmEwYTA3YThjYTVjMjkxMWUx
MDViYmRjNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3Rv
cjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAg
IEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFy
dCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZSkKKyAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0X3QgZmlsZUxlbmd0aCwgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgOiBkYXRhKEVu
Y29kZWRGaWxlRGF0YSB7IGZpbGVuYW1lLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVk
RmlsZU1vZGlmaWNhdGlvblRpbWUgfSkgeyB9CiAgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50
KGNvbnN0IFVSTCYgYmxvYlVSTCkKICAgICAgICAgOiBkYXRhKEVuY29kZWRCbG9iRGF0YSB7IGJs
b2JVUkwgfSkgeyB9CkBAIC01OSw5ICs1OSw5IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewog
ICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBkYXRhOwogICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Rm9ybURhdGFFbGVtZW50PiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxGb3JtRGF0YUVsZW1lbnQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHsKLSAgICAgICAgT3B0aW9uYWw8RGF0YT4gZGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxE
YXRhPiBkYXRhOwogICAgICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC03Miw3ICs3Miw3IEBAIHN0cnVj
dCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgICAgIGlu
dDY0X3QgZmlsZVN0YXJ0IHsgMCB9OwogICAgICAgICBpbnQ2NF90IGZpbGVMZW5ndGggeyAwIH07
Ci0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lOwogCiAgICAgICAgIGJvb2wgZmlsZU1vZGlmaWNhdGlvblRpbWVNYXRjaGVzRXhwZWN0
YXRpb24oKSBjb25zdDsKIApAQCAtOTIsMjQgKzkyLDI0IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1l
bnQgewogICAgICAgICB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZpbGVuYW1lIDw8IGZpbGVT
dGFydCA8PCBmaWxlTGVuZ3RoIDw8IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAg
ICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEVuY29kZWRGaWxlRGF0YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVuY29kZWRGaWxlRGF0
YT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gZmlsZW5hbWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
ZmlsZW5hbWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGZpbGVuYW1lOwogICAgICAgICAgICAg
aWYgKCFmaWxlbmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBmaWxlU3RhcnQ7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZpbGVTdGFydDsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gZmlsZVN0YXJ0OwogICAgICAgICAgICAgaWYgKCFmaWxlU3RhcnQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
T3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4gZmlsZUxlbmd0aDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZUxlbmd0aDsK
ICAgICAgICAgICAgIGlmICghZmlsZUxlbmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxX
YWxsVGltZT4+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CisgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lOwogICAgICAgICAgICAgZGVjb2RlciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMzUsOSArMTM1LDkgQEAgc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwg
dXJsOwogICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxFbmNvZGVkQmxvYkRhdGE+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbmNv
ZGVkQmxvYkRhdGE+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1
cmw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAgICAgIGlmICghdXJsKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTIsNyArMjEyLDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgT3B0aW9uYWw8
V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25z
dCBVUkwmIGJsb2JVUkwpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPGNoYXI+IGZsYXR0
ZW4oKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKQEAgLTI3MSw3ICsyNzEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9hbHdheXNTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX2Jv
dW5kYXJ5OwogICAgIGJvb2wgbV9jb250YWluc1Bhc3N3b3JkRGF0YSB7IGZhbHNlIH07Ci0gICAg
bXV0YWJsZSBPcHRpb25hbDx1aW50NjRfdD4gbV9sZW5ndGhJbkJ5dGVzOworICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9sZW5ndGhJbkJ5dGVzOwogfTsKIAogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGY0
NDIxNzA4ZTE1NjQ5ZWIxMDBlZDk4YTJjNDc0ZTQ3OGFmYTQ0YzMuLmZhMDM3ZmNmOTY4MTczYzBj
YTkzZDQ3MWMzZGQ0MWRjNDg3MGIwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBDb21tb25IZWFkZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBrZXkgLCB2
YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29tbW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29t
bW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb21tb25IZWFkZXImIG90aGVyKSBjb25zdCB7IHJldHVybiBrZXkgPT0gb3RoZXIua2V5
ICYmIHZhbHVlID09IG90aGVyLnZhbHVlOyB9CiAgICAgfTsKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIFVuY29tbW9uSGVhZGVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpICwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVuY29t
bW9uSGVhZGVyPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VW5jb21tb25IZWFkZXI+IGRlY29kZShEZWNvZGVy
Jik7CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuY29tbW9uSGVhZGVyJiBvdGhl
cikgY29uc3QgeyByZXR1cm4ga2V5ID09IG90aGVyLmtleSAmJiB2YWx1ZSA9PSBvdGhlci52YWx1
ZTsgfQogICAgIH07CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBzdHJ1Y3Qg
S2V5VmFsdWUgewogICAgICAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgICAgIE9wdGlvbmFs
PEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBIZWFkZXJOYW1lOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDxIVFRQSGVhZGVyTmFtZT4ga2V5QXNIVFRQSGVhZGVyTmFtZTsKICAgICAgICAgICAg
IFN0cmluZyB2YWx1ZTsKICAgICAgICAgfTsKIApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSFRU
UEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1hdXRvIEhUVFBIZWFkZXJNYXA6OkNvbW1v
bkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPENvbW1vbkhlYWRl
cj4KK2F1dG8gSFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikgLT4gc3RkOjpvcHRpb25hbDxDb21tb25IZWFkZXI+CiB7CiAgICAgSFRUUEhlYWRlck5h
bWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQpAQCAtMjQ1LDcgKzI0NSw3
IEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLWF1dG8gSFRUUEhl
YWRlck1hcDo6VW5jb21tb25IZWFkZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRp
b25hbDxVbmNvbW1vbkhlYWRlcj4KK2F1dG8gSFRUUEhlYWRlck1hcDo6VW5jb21tb25IZWFkZXI6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFVuY29tbW9uSGVhZGVy
PgogewogICAgIFN0cmluZyBuYW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4
IGEzMmFkNzc0ODZmNjA3ZmVkN2Q4NjVlMGNkNDliYzYzOTNiYTA5ODEuLjFiYzhhZDRjYjA0MGFm
ZTJmMzQ4MzY1MGY5ZmM5NmExZTY4YjE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIFN0
cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbmd0aCkKICAgICBy
ZXR1cm4gczsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBkb3VibGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9j
aCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnModmFsdWUudXRmOCgpLmRh
dGEoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmlu
ZGV4IDcxMDI1NTdlZDEzYmYxOGVlNGU0ODBmYmRlMDkzZDI5NDQ4MTVkOGEuLmE4NjllZjc5YmI1
ZDIxYmEzOWJiMmMwNmU5Y2U4Y2YzZDM4Zjk4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTc3LDcgKzc3LDcgQEAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiAjZW5k
aWYKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhU
VFBUb2tlbihTdHJpbmdWaWV3KTsKLU9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNv
bnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25z
dCBTdHJpbmcmKTsKIFN0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNv
bnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21N
ZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgYWRkVG9BY2Nlc3ND
b250cm9sQWxsb3dMaXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSGFzaFR5cGUgPSBEZWZhdWx0SGFzaDxTdHJpbmc+
PgotT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcsIEhhc2hUeXBlPj4gcGFyc2VBY2Nlc3NDb250cm9s
QWxsb3dMaXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0
cmluZywgSGFzaFR5cGU+PiBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3QoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgSGFzaFNldDxTdHJpbmcsIEhhc2hUeXBlPiBzZXQ7CiAgICAgdW5z
aWduZWQgc3RhcnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaAppbmRleCA2MTk1OWNjZDE0MDNhODcyNjZh
NjA2YThmNzdjMDg1MmQ1NjVmYTU3Li45MjEyM2FiZTlmZTQ1M2JlOTU3ODg5MDI4ZGQ2ZGQzNDNk
MWIyODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtMb2FkSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgTmV0d29y
a1RyYW5zYWN0aW9uSW5mb3JtYXRpb24gewogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtZXRyaWNz
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOZXR3b3Jr
VHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZv
cm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHN0cnVjdCBOZXR3b3JrTG9hZEluZm9y
bWF0aW9uIHsKQEAgLTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5l
IHZvaWQgTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb246OmVuY29kZShFbmNvZGUKICAgICBl
bmNvZGVyIDw8IG1ldHJpY3M7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBP
cHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gTmV0d29ya1RyYW5zYWN0aW9u
SW5mb3JtYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+
IE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3Rp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3Rp
Zmllci5oCmluZGV4IDg3OTMwMDQ4ZjRmZDE4ZDYwOThhZjdkZTRkYTI1YmU1MzJkZjU5MzEuLjNm
YzI1OTg2OGI2Y2I0ODZmNzQxNGZkYjJhMWQwZjI2ZWNmMTVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAg
LTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrQ2hhbmdlZENh
bGxiYWNrKE5ldHdvcmtTdGF0ZU5vdGlmaWVyKik7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPGJv
b2w+IG1faXNPbkxpbmU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzT25MaW5lOwogICAg
IFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX2xpc3RlbmVyczsKICAgICBUaW1l
ciBtX3VwZGF0ZVN0YXRlVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBkZjBmYWU5ZTBk
NDRiZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5NzFlLi4wMzI0MDg4YjA0NWZmODE2M2ZmM2MzZjQ2
MmRmZjc1MzY0ZTc2NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0xMjYsMTIgKzEyNiwxMiBA
QCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJz
dFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVz
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlE
LCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAgICAgCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2Us
IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIGlmIChz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9PSBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZzo6WWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzgsMTQg
KzE3OCwxNCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWlu
UGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoYwogICAgIHJldHVybiB0b3BGcmFtZURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbiB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnModG9w
RnJhbWVEb21haW4pICYmIG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKHJlc291cmNlRG9tYWlu
KSk7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykp
CiAgICAgICAgIHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRz
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykKIHsKICAgICBtX2FnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzID0gc2Vjb25kczsKICAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzU2hvcnQgPSBzZWNvbmRzID8gU2Vjb25kcyB7IHNlY29uZHMtPnNlY29uZHMoKSAvIDcuIH0g
OiBzZWNvbmRzOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpncmFudENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvCiAg
ICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNv
bnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRl
cmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKQEAgLTI2
NSw3ICsyNjUsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmllczsKIH0KICAg
ICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYg
KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFp
bihmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikpIHsKICAgICAgICAgZ3JhbnRDcm9z
c1BhZ2VTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKQEAg
LTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRBcHBCb3Vu
ZERvbWFpbnMoKQogfQogI2VuZGlmCiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGllbnRTaWRlQ29va2llQ2Fw
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5
UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JD
bGllbnRTaWRlQ29va2llczsKQEAgLTQxMCw3ICs0MTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1
cnBvcwogICAgIHJldHVybiBsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKHRvcEZy
YW1lRG9tYWluLCByZXNvdXJjZURvbWFpbik7CiB9CiAKLU9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0lu
TmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluKQorc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJSZXNvdXJjZURvbWFpbnNJbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbikKIHsKICAgICBhdXRvIGl0ID0gc3RvcmFnZUFjY2Vzc1F1aXJrcygpLmZpbmQodG9wRnJh
bWVEb21haW4pOwogICAgIGlmIChpdCAhPSBzdG9yYWdlQWNjZXNzUXVpcmtzKCkuZW5kKCkpCkBA
IC00MTgsNyArNDE4LDcgQEAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVzb3VyY2VEb21haW5zSW4KICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiB0b3BEb21haW4sIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiBzdWJEb21haW4pCitzdGQ6Om9w
dGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRp
dGlvbmFsTG9naW5Eb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcERvbWFpbiwgY29uc3Qg
U3ViUmVzb3VyY2VEb21haW4mIHN1YkRvbWFpbikKIHsKICAgICBpZiAoc3ViRG9tYWluLnN0cmlu
ZygpID09ICJzb255LmNvbSJfcyAmJiB0b3BEb21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0aW9u
LmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5j
b20iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggOTliNTMxZjk3YTlhYjIyNWVhOTQyMGM1MWZiN2Vm
MzkyNDA5MGM2ZS4uYjc2ZDMxYWI1Y2ExZTJhM2NkNTAyY2JjNWQ4ZDlkZWM4NmIyNzc0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWUoY29uc3QgQ29va2llJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYsIFNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTE2NywxMSArMTY3LDEx
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29r
aWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25z
dCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpOwpAQCAtMTg3LDggKzE4
Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdMb2dnaW5nRW5hYmxlZChib29sKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3Io
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwMSwyNSArMjAxLDI1IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5KGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25z
dCBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4mKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50Q3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFy
dHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8U3RyaW5nPiBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlE
b21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZp
ZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdENyb3Nz
U2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1
cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0
aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YlJlc291cmNlRG9tYWluc0luTmVl
ZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPj4gc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmly
c3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4oY29uc3QgVG9wRnJh
bWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZmluZEFkZGl0aW9uYWxMb2dpbkRv
bWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+
IGZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYpOwogCiAjZW5kaWYKICAgICAKQEAgLTIzMSwxMCArMjMxLDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRl
SFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5
T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgY29uc3Q7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGh0dHBDb29raWVzKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBodHRwQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
T3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIFJldGFpblB0cjxO
U0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gaHR0cENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OworICAgIFJldGFpblB0cjxO
U0FycmF5PiBjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVS
TChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VS
TCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mKSBjb25zdDsKICAgICB2b2lk
IGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICop
IGNvbnN0OwogI2VuZGlmCkBAIC0yNzMsNyArMjczLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJvb2wgbV9pc1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkID0gZmFsc2U7CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTG9nZ2luZ0VuYWJsZWQgPSBmYWxzZTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29r
aWVDYXAoY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFeGVtcHREb21haW5QYWlyRnJvbVRoaXJkUGFydHlD
b29raWVCbG9ja2luZyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9t
YWluJikgY29uc3Q7CiAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJs
ZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsK
QEAgLTI4MSw5ICsyODEsOSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IEhhc2hNYXA8RnJhbWVJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fZnJhbWVzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0b3Jh
Z2VBY2Nlc3M7CiAgICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgSGFzaFNldDxTdWJSZXNvdXJj
ZURvbWFpbj4+IG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzczsKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsK
LSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsK
LSAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQg
eyB9OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyB7IH07CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX2FnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzIHsgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fYWdl
Q2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9ydCB7IH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVnaXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0Rl
Y29yYXRpb25CeVByZXZhbGVudFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExp
bmtEZWNvcmF0aW9uVGVzdE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbCB9OwpAQCAtMzAxLDcgKzMwMSw3IEBAIHByaXZhdGU6CiB9OwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCi1XRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCk7CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAppbmRleCA4NjMxNGM0NjQzZWQ5Yjc0MjFk
Mzg2Y2U1ZTRiNjMyNDliM2UyNjM3Li40ZWU2MjcyNDQwMDJiN2RjNDY3N2YzOWU5NGEyOGE2OTIz
NDRiNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZENvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Bh
cnNlZENvbnRlbnRUeXBlLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIGJvb2wgUGFyc2VkQ29udGVu
dFR5cGU6OnBhcnNlQ29udGVudFR5cGUoTW9kZSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1PcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBNb2RlIG1vZGUpCitzdGQ6Om9wdGlvbmFsPFBhcnNl
ZENvbnRlbnRUeXBlPiBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIE1vZGUgbW9kZSkKIHsKICAgICBQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250
ZW50VHlwZShtb2RlID09IE1vZGU6OlJmYzIwNDUgPyBjb250ZW50VHlwZSA6IHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhjb250ZW50VHlwZSkpOwogICAgIGlmICghcGFyc2VkQ29u
dGVudFR5cGUucGFyc2VDb250ZW50VHlwZShtb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaAppbmRleCA5NWVkYTJmYzEyNTk5
ODcyMjQzZTZkYjg3YzE4MjQ2ZWM2NGVkNDk0Li5kMjJiOTcyNTJlOWNiM2ZkMjFiOGQ1OTRhNWJh
OGQ0NDNiYTUwYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZENvbnRlbnRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5oCkBAIC00NSw3ICs0NSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNWYWxpZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25p
ZmYpOwogLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBjb21tZW50cy4KIGNsYXNzIFBhcnNlZENv
bnRlbnRUeXBlIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGFyc2VkQ29udGVudFR5cGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBNb2RlID0gTW9kZTo6TWlt
ZVNuaWZmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXJzZWRD
b250ZW50VHlwZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIE1vZGUgPSBNb2RlOjpNaW1lU25pZmYp
OwogICAgIFBhcnNlZENvbnRlbnRUeXBlKFBhcnNlZENvbnRlbnRUeXBlJiYpID0gZGVmYXVsdDsK
IAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJh
bmdlLmNwcAppbmRleCBjMTk0MmFmZDc4NGY5ODJiZDJkYTFjZWMwYjJiNmQxZjVkNGY4M2E3Li42
ZGRmODllMzUxODk2ZGZiYzNlMzQxZjk0MDNlMWI1ZmU4MjBmZTM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGFyc2Vk
UmVxdWVzdFJhbmdlPiBQYXJzZWRSZXF1ZXN0UmFuZ2U6OnBhcnNlKFN0cmluZ1ZpZXcgaW5wdXQp
CitzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVlc3RSYW5nZT4gUGFyc2VkUmVxdWVzdFJhbmdlOjpw
YXJzZShTdHJpbmdWaWV3IGlucHV0KQogewogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM3MjMzI3NlY3Rpb24tMi4xIGJ1dCBhc3N1bWluZyB0aGVyZSB3aWxsIGFsd2F5cyBi
ZSBhIGJlZ2luIGFuZCBhbiBlbmQgb3IgcGFyc2luZyB3aWxsIGZhaWwKICAgICBpZiAoIWlucHV0
LnN0YXJ0c1dpdGgoU3RyaW5nVmlldygiYnl0ZXM9Il9zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuaAppbmRleCAxMTVjZmMy
ZWQ4ZDYyMWI1NDhmYWZjMTAwOTM0NmQ1Zjk5YmMwZWZiLi4zODU1MzRmNTFmM2FjZDJiZDk0MTZj
YWU1NzM1NjY1YWY0MjdhNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgUGFyc2VkUmVxdWVzdFJhbmdlIHsKIHB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJzZShT
dHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBwYXJz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gcGFyc2UoU3RyaW5nVmlldyhzdHJpbmcp
KTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhcnNlZFJlcXVl
c3RSYW5nZT4gcGFyc2UoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFy
c2VkUmVxdWVzdFJhbmdlPiBwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gcGFy
c2UoU3RyaW5nVmlldyhzdHJpbmcpKTsgfQogCiAgICAgY29uc3Qgc2l6ZV90IGJlZ2luIHsgMCB9
OwogICAgIGNvbnN0IHNpemVfdCBlbmQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGU1MTQ3ZDJhYTdkNjE2NjZk
Y2VkN2MyNjE4YzIxYWMwZjUyNjA3NjAuLjk3Zjg1MzAwMTViMGEyM2FhZGFhNjVhMGYxOGM5ZTJl
ZmEzZWJmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlv
bkgKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9
IHJlc3BvbnNlLnVybCgpOwotICAgICAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5w
b3J0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgp
OwogICAgICAgICBpZiAocG9ydCAmJiAhV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9y
dC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAg
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcg
SFRUUC8wLjkuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAppbmRleCBmYzMzNDNmMmZlMDRmMmFkZDM1OGIxZWQzYjFjNmJiNTM4Y2NiOTY0
Li45YjA0YmEyYzQ4OGQyZTk1NDgwOTY2YTI2MjQ0ODNkOWRhOTQ2ZmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0yNDksNyAr
MjQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIGNyb3NzT3JpZ2luKTsKIAotICAgIE9wdGlvbmFsPENyZWRl
bnRpYWw+IGdldENyZWRlbnRpYWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCk7CisgICAg
c3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBnZXRDcmVkZW50aWFsKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wpOwogICAgIHZvaWQgcmVzdGFydFJlcXVlc3RXaXRoQ3JlZGVudGlhbChjb25z
dCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2b2lkIGhhbmRs
ZURhdGFVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggZWFlMDU2OTk5MTRjNTI0YjcwNTkxOTQ4M2Y3M2Rk
NjBkZDUzN2UyNS4uMjcwZmFkMDRmZDFlNWIzZWE2Mjk0MWNlODA5NTNhZWZlNTlmM2RiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWF0
b3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgeyBtX2luaXRpYXRvcklkZW50
aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAgICAvLyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZv
ciB0aGUgSW5zcGVjdG9yIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIG5vZGUgdGhhdCBpbml0
aWF0ZWQgdGhpcyByZXF1ZXN0LgotICAgIGNvbnN0IE9wdGlvbmFsPGludD4mIGluc3BlY3Rvcklu
aXRpYXRvck5vZGVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JJbml0aWF0
b3JOb2RlSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8aW50PiYgaW5zcGVj
dG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3Rvcklu
aXRpYXRvck5vZGVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JJbml0aWF0b3JO
b2RlSWRlbnRpZmllcihpbnQgaW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXIpIHsgbV9p
bnNwZWN0b3JJbml0aWF0b3JOb2RlSWRlbnRpZmllciA9IGluc3BlY3RvckluaXRpYXRvck5vZGVJ
ZGVudGlmaWVyOyB9CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCkBAIC0yNTAsNyArMjUwLDcg
QEAgcHJvdGVjdGVkOgogICAgIFNhbWVTaXRlRGlzcG9zaXRpb24gbV9zYW1lU2l0ZURpc3Bvc2l0
aW9uIHsgU2FtZVNpdGVEaXNwb3NpdGlvbjo6VW5zcGVjaWZpZWQgfTsKICAgICBSZXNvdXJjZUxv
YWRQcmlvcml0eSBtX3ByaW9yaXR5IHsgUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdyB9OwogICAg
IFJlcXVlc3RlciBtX3JlcXVlc3RlciB7IFJlcXVlc3Rlcjo6VW5zcGVjaWZpZWQgfTsKLSAgICBP
cHRpb25hbDxpbnQ+IG1faW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IG1faW5zcGVjdG9ySW5pdGlhdG9yTm9kZUlkZW50aWZpZXI7CiAgICAg
Ym9vbCBtX2FsbG93Q29va2llcyA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1
ZXN0VXBkYXRlZCA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRl
ZCA6IDE7CkBAIC0yNjAsNyArMjYwLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc1RvcFNp
dGUgOiAxOwogICAgIGJvb2wgbV9pc0FwcEJvdW5kIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCi0gICAgT3B0aW9uYWw8U3lzdGVtUHJldmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87
CisgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2aWV3SW5m
bzsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMzAwLDc5ICszMDAsNzkgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+
PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3VybCA9
IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IHRpbWVvdXRJbnRlcnZhbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdGltZW91dEludGVydmFsOwogICAgIGRlY29kZXIg
Pj4gdGltZW91dEludGVydmFsOwogICAgIGlmICghdGltZW91dEludGVydmFsKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBXVEZNb3ZlKCp0aW1lb3V0SW50
ZXJ2YWwpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2Rl
ciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFVS
TCh7IH0sICpmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGh0
dHBNZXRob2Q7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGh0dHBNZXRob2Q7CiAgICAgZGVj
b2RlciA+PiBodHRwTWV0aG9kOwogICAgIGlmICghaHR0cE1ldGhvZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1faHR0cE1ldGhvZCA9IFdURk1vdmUoKmh0dHBNZXRob2QpOwogCi0gICAg
T3B0aW9uYWw8SFRUUEhlYWRlck1hcD4gZmllbGRzOworICAgIHN0ZDo6b3B0aW9uYWw8SFRUUEhl
YWRlck1hcD4gZmllbGRzOwogICAgIGRlY29kZXIgPj4gZmllbGRzOwogICAgIGlmICghZmllbGRz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9odHRwSGVhZGVyRmllbGRzID0gV1RGTW92
ZSgqZmllbGRzKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhcnJheTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhcnJheTsKICAgICBkZWNvZGVyID4+IGFycmF5
OwogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3Jlc3BvbnNl
Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5ID0gV1RGTW92ZSgqYXJyYXkp
OwogCi0gICAgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9saWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IGNhY2hlUG9s
aWN5OwogICAgIGRlY29kZXIgPj4gY2FjaGVQb2xpY3k7CiAgICAgaWYgKCFjYWNoZVBvbGljeSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fY2FjaGVQb2xpY3kgPSAqY2FjaGVQb2xpY3k7
CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxvd0Nvb2tpZXM7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBhbGxvd0Nvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBhbGxvd0Nvb2tpZXM7CiAgICAgaWYg
KCFhbGxvd0Nvb2tpZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2FsbG93Q29va2ll
cyA9ICphbGxvd0Nvb2tpZXM7CiAKLSAgICBPcHRpb25hbDxTYW1lU2l0ZURpc3Bvc2l0aW9uPiBz
YW1lU2l0ZURpc3Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2FtZVNpdGVEaXNwb3NpdGlv
bj4gc2FtZVNpdGVEaXNwb3NpdGlvbjsKICAgICBkZWNvZGVyID4+IHNhbWVTaXRlRGlzcG9zaXRp
b247CiAgICAgaWYgKCFzYW1lU2l0ZURpc3Bvc2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgbV9zYW1lU2l0ZURpc3Bvc2l0aW9uID0gKnNhbWVTaXRlRGlzcG9zaXRpb247CiAKLSAg
ICBPcHRpb25hbDxib29sPiBpc1RvcFNpdGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1Rv
cFNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1RvcFNpdGU7CiAgICAgaWYgKCFpc1RvcFNpdGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2lzVG9wU2l0ZSA9ICppc1RvcFNpdGU7CiAKLSAg
ICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CisgICAgc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlv
cml0eTsKICAgICBpZiAoIXByaW9yaXR5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9w
cmlvcml0eSA9ICpwcmlvcml0eTsKIAotICAgIE9wdGlvbmFsPFJlcXVlc3Rlcj4gcmVxdWVzdGVy
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiByZXF1ZXN0ZXI7CiAgICAgZGVjb2RlciA+
PiByZXF1ZXN0ZXI7CiAgICAgaWYgKCFyZXF1ZXN0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBtX3JlcXVlc3RlciA9ICpyZXF1ZXN0ZXI7CiAKLSAgICBPcHRpb25hbDxib29sPiBpc0Fw
cEJvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNBcHBCb3VuZDsKICAgICBkZWNvZGVy
ID4+IGlzQXBwQm91bmQ7CiAgICAgaWYgKCFpc0FwcEJvdW5kKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDUyNjUzMjMzMDE3MGUxNmYxOTAyOGFkOTM5M2JjNGIw
NjQ0ODdlZDQuLjE5ZjI0MGEyZTAwZTk4ZDMzOTA2MDI4ZjdiNWYzZDE3MGNiNGM0ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCkBAIC02NzksMjEgKzY3OSwyMSBAQCBib29sIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpoYXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2h0dHBI
ZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpLmlzRW1wdHkoKSB8
fCAhbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6RVRhZykuaXNFbXB0eSgp
OwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhdmVQYXJz
ZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAgICAgIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZl
cygpOwogICAgIHJldHVybiBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXMubWF4QWdlOwogfQogCi1P
cHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3RhbGVX
aGlsZVJldmFsaWRhdGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sU3RhbGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdAogewog
ICAgIGlmICghbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNh
Y2hlQ29udHJvbERpcmVjdGl2ZXMoKTsKICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3Rp
dmVzLnN0YWxlV2hpbGVSZXZhbGlkYXRlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+
IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSFRU
UEhlYWRlck5hbWUgaGVhZGVyTmFtZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBw
YXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBI
ZWFkZXJOYW1lIGhlYWRlck5hbWUpCiB7CiAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gaGVhZGVy
cy5nZXQoaGVhZGVyTmFtZSk7CiAgICAgaWYgKGhlYWRlclZhbHVlLmlzRW1wdHkoKSkKQEAgLTcw
NSw3ICs3MDUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5I
ZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSAogICAgIHJldHVybiBwYXJzZUhU
VFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNl
UmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNP
bmx5KTsKIApAQCAtNzE2LDcgKzcxNiw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0ZTsKIH0KIAotT3B0aW9u
YWw8U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFnZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAogewogICAgIGxh
enlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC03MzEsNyArNzMxLDcgQEAgT3B0aW9uYWw8
U2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
YWdlOwogfQogCi1PcHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGly
ZXMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBA
IC03NDIsNyArNzQyLDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjpleHBpcmVzKCkgY29uc3QKICAgICByZXR1cm4gbV9leHBpcmVzOwogfQogCi1PcHRpb25hbDxX
YWxsVGltZT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZCgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkg
Y29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmlu
ZGV4IDBlOTdmZWU5YzZkNjVhMzgyZDZiYzU2MTZmZmE5MWRlNzc2Yjc3MWIuLmY1YzA5NzBiMDMx
YTJlOWUyYTE3NmFmODFlNmNmNTEwYWNlNGNiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgaHR0cFN0YXR1c1RleHQ7CiAgICAgICAgIFN0
cmluZyBodHRwVmVyc2lvbjsKICAgICAgICAgSFRUUEhlYWRlck1hcCBodHRwSGVhZGVyRmllbGRz
OwotICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IG5ldHdvcmtMb2FkTWV0cmlj
czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IG5ldHdvcmtMb2Fk
TWV0cmljczsKICAgICAgICAgVHlwZSB0eXBlOwogICAgICAgICBUYWludGluZyB0YWludGluZzsK
ICAgICAgICAgYm9vbCBpc1JlZGlyZWN0ZWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBt
X2NlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUoaW5mbyk7IH0KLSAgICBjb25zdCBPcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRp
ZmljYXRlSW5mbzsgfTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4m
IGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9Owog
ICAgIGJvb2wgdXNlZExlZ2FjeVRMUygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZExlZ2FjeVRMUyA9
PSBVc2VkTGVnYWN5VExTOjpZZXM7IH0KICAgICB2b2lkIHNldFVzZWRMZWdhY3lUTFMoVXNlZExl
Z2FjeVRMUyB1c2VkKSB7IG1fdXNlZExlZ2FjeVRMUyA9IHVzZWQ7IH0KICAgICAKQEAgLTE1MSwx
MiArMTUxLDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJv
bENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNhY2hlQ29udHJvbENvbnRhaW5zSW1tdXRhYmxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFNlY29uZHM+IGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29uZHM+IGNhY2hlQ29udHJvbFN0YWxlV2hpbGVSZXZh
bGlkYXRlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2FsbFRpbWU+IGRh
dGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZWNvbmRzPiBhZ2UoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXYWxsVGltZT4gZXhwaXJlcygpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdhbGxUaW1lPiBsYXN0TW9kaWZpZWQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhY2hl
Q29udHJvbE1heEFnZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gY2FjaGVDb250cm9sU3RhbGVXaGlsZVJldmFsaWRhdGUoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRlKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBpcmVzKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbGFzdE1vZGlmaWVkKCkg
Y29uc3Q7CiAgICAgY29uc3QgUGFyc2VkQ29udGVudFJhbmdlJiBjb250ZW50UmFuZ2UoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIDogdWludDhfdCB7IFVua25vd24sIE5ldHdvcmss
IERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uLCBNZW1vcnlDYWNoZSwgTWVtb3J5
Q2FjaGVBZnRlclZhbGlkYXRpb24sIFNlcnZpY2VXb3JrZXIsIEFwcGxpY2F0aW9uQ2FjaGUsIERP
TUNhY2hlLCBJbnNwZWN0b3JPdmVycmlkZSB9OwpAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIAotICAgIG11dGFibGUgT3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIAogcHJpdmF0ZToK
ICAgICBtdXRhYmxlIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBt
X2FnZTsKQEAgLTMyMCw3ICszMjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVz
cG9uc2VCYXNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQocmVzcG9uc2UubV9pc051bGwpOwot
ICAgIE9wdGlvbmFsPGJvb2w+IHJlc3BvbnNlSXNOdWxsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gcmVzcG9uc2VJc051bGw7CiAgICAgZGVjb2RlciA+PiByZXNwb25zZUlzTnVsbDsKICAgICBp
ZiAoIXJlc3BvbnNlSXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjksNDMgKzMy
OSw0MyBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUmVzb3VyY2VSZXNwb25zZUJhc2UmIHJlc3BvbgogCiAgICAgcmVzcG9uc2UubV9pc051bGwg
PSBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJM
PiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXNwb25zZS5tX3VybCA9IFdURk1vdmUoKnVybCk7CiAKLSAgICBPcHRp
b25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZTsKICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOwogICAgIGlmICghbWltZVR5cGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX21pbWVUeXBlID0gV1RGTW92ZSgqbWltZVR5
cGUpOwogCi0gICAgT3B0aW9uYWw8aW50NjRfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAg
IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIGRlY29k
ZXIgPj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV9leHBlY3RlZENvbnRl
bnRMZW5ndGggPSAqZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogCi0gICAgT3B0aW9uYWw8QXRvbVN0
cmluZz4gdGV4dEVuY29kaW5nTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IHRl
eHRFbmNvZGluZ05hbWU7CiAgICAgZGVjb2RlciA+PiB0ZXh0RW5jb2RpbmdOYW1lOwogICAgIGlm
ICghdGV4dEVuY29kaW5nTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNl
Lm1fdGV4dEVuY29kaW5nTmFtZSA9IFdURk1vdmUoKnRleHRFbmNvZGluZ05hbWUpOwogCi0gICAg
T3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0cFN0YXR1c1RleHQ7CisgICAgc3RkOjpvcHRpb25hbDxB
dG9tU3RyaW5nPiBodHRwU3RhdHVzVGV4dDsKICAgICBkZWNvZGVyID4+IGh0dHBTdGF0dXNUZXh0
OwogICAgIGlmICghaHR0cFN0YXR1c1RleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXNwb25zZS5tX2h0dHBTdGF0dXNUZXh0ID0gV1RGTW92ZSgqaHR0cFN0YXR1c1RleHQpOwogCi0g
ICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaHR0cFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxB
dG9tU3RyaW5nPiBodHRwVmVyc2lvbjsKICAgICBkZWNvZGVyID4+IGh0dHBWZXJzaW9uOwogICAg
IGlmICghaHR0cFZlcnNpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5t
X2h0dHBWZXJzaW9uID0gV1RGTW92ZSgqaHR0cFZlcnNpb24pOwogCi0gICAgT3B0aW9uYWw8SFRU
UEhlYWRlck1hcD4gaHR0cEhlYWRlckZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhUVFBIZWFk
ZXJNYXA+IGh0dHBIZWFkZXJGaWVsZHM7CiAgICAgZGVjb2RlciA+PiBodHRwSGVhZGVyRmllbGRz
OwogICAgIGlmICghaHR0cEhlYWRlckZpZWxkcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzczLDU2ICszNzMsNTYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNwb24KIAogICAgIC8vIFRoZSBu
ZXR3b3JrTG9hZE1ldHJpY3MgaW5mbyBpcyBvbmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9y
ZWQgaW4gZGlzayBjYWNoZS4KICAgICBpZiBjb25zdGV4cHIgKERlY29kZXI6OmlzSVBDRGVjb2Rl
cikgewotICAgICAgICBPcHRpb25hbDxCb3g8TmV0d29ya0xvYWRNZXRyaWNzPj4gbmV0d29ya0xv
YWRNZXRyaWNzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
PiBuZXR3b3JrTG9hZE1ldHJpY3M7CiAgICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0xvYWRNZXRy
aWNzOwogICAgICAgICBpZiAoIW5ldHdvcmtMb2FkTWV0cmljcykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBXVEZNb3Zl
KCpuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHNob3J0PiBodHRw
U3RhdHVzQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNob3J0PiBodHRwU3RhdHVzQ29kZTsKICAg
ICBkZWNvZGVyID4+IGh0dHBTdGF0dXNDb2RlOwogICAgIGlmICghaHR0cFN0YXR1c0NvZGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlID0gV1RG
TW92ZSgqaHR0cFN0YXR1c0NvZGUpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8Q2VydGlmaWNh
dGVJbmZvPj4gY2VydGlmaWNhdGVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0
aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUoKmNlcnRpZmlj
YXRlSW5mbyk7CiAKLSAgICBPcHRpb25hbDxTb3VyY2U+IHNvdXJjZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNvdXJjZT4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291
cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV9zb3VyY2UgPSBXVEZN
b3ZlKCpzb3VyY2UpOwogCi0gICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1fdHlwZSA9IFdURk1vdmUoKnR5cGUp
OwogCi0gICAgT3B0aW9uYWw8VGFpbnRpbmc+IHRhaW50aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
VGFpbnRpbmc+IHRhaW50aW5nOwogICAgIGRlY29kZXIgPj4gdGFpbnRpbmc7CiAgICAgaWYgKCF0
YWludGluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcg
PSBXVEZNb3ZlKCp0YWludGluZyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0ZWQ7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1JlZGlyZWN0ZWQ7CiAgICAgZGVjb2RlciA+PiBp
c1JlZGlyZWN0ZWQ7CiAgICAgaWYgKCFpc1JlZGlyZWN0ZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IFdURk1vdmUoKmlzUmVkaXJlY3RlZCk7
CiAKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiB1c2VkTGVnYWN5VExTOworICAgIHN0ZDo6
b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRMUzsKICAgICBkZWNvZGVyID4+IHVz
ZWRMZWdhY3lUTFM7CiAgICAgaWYgKCF1c2VkTGVnYWN5VExTKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmVzcG9uc2UubV91c2VkTGVnYWN5VExTID0gV1RGTW92ZSgqdXNlZExlZ2FjeVRM
Uyk7CiAKLSAgICBPcHRpb25hbDxib29sPiBpc1JhbmdlUmVxdWVzdGVkOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNSYW5nZVJlcXVlc3RlZDsKICAgICBkZWNvZGVyID4+IGlzUmFuZ2VSZXF1
ZXN0ZWQ7CiAgICAgaWYgKCFpc1JhbmdlUmVxdWVzdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAKaW5kZXggYjAzZjJkMjE4ODY1MTRjMjhlYjA5Mzc0ODFiYzBhOTM1M2QwY2Q2
MC4uZDZjOGNiOTAxNzBmZWRmYzFiNTVjZTVkN2VjZDgyZjVjZjgwYTM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNw
cApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZAogICAgIHBsYXRmb3Jt
U2VuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
ZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hha2UsIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5PiYmIGhlYWRlckZpZWxkUHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwg
Ym9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRI
YW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVsZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2ws
IGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0
aW5nIHx8IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA0MTZlNTlhOTM0YTJiNGFhMTMzNTIwYTQ0
M2YwYTEwNjExZGY3NzFhLi5jYTExYTYxM2E2OTEwZDg2NmI4NTk3ZTJhMjgyMzQ0ZGQyZTBlNzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIFNvY2tldFN0cmVhbVN0
YXRlIHN0YXRlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKLSAgICB2b2lkIHNlbmRIYW5k
c2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHk+JiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+KTsKKyAgICB2b2lkIHNlbmRI
YW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eT4mJiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4pOwogICAgIHZv
aWQgY2xvc2UoKTsgLy8gRGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNl
bnQuCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgdmlydHVhbCBzaXplX3QgYnVmZmVyZWRB
bW91bnQoKSA9IDA7CkBAIC02Myw3ICs2Myw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rp
b248dm9pZChib29sLCBib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNs
b3NlKCkgPSAwOwogCiAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAKaW5kZXggNzBm
ZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRmYWM4NzgzYTVjMi4uYzVmMmVhNzgwY2I3YmY1ODBi
NmMwYzYwODhhZDBmYjUxM2JiNWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHN0YXRpYyBzaXplX3QgcmVtb3ZlVGVybWluYXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoCiAgICAgcmV0dXJuIGRhdGFMZW5ndGggLSAy
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+
IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBo
ZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1
aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtOTcsNyArOTcsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tp
ZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTgogICAgIHJldHVybiBzdGQ6OnBhaXI8VmVjdG9yPHVp
bnQ4X3Q+LCBib29sPiB7IGRhdGEsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCB9OwogfQogCi12b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxkUHJveHksIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBs
YXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVy
RmllbGRQcm94eSwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29va2llRGF0YTsKICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvLmgKaW5kZXggY2VkYjBkMDJiNDJlZTEyZDg3OTJm
Mzk5YmIyMDVmNjlhOThjZTQwNi4uOTE5MzcwYTBiY2RlNjAyNjM0MTI4YzkyZGVhOGJiMzQyZDE2
NmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0
aWZpY2F0ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nl
cnRpZmljYXRlSW5mby5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5z
Tm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Q2Vy
dGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDZXJ0
aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpOb25lOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwotICAgIHN0
YXRpYyBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGOjpQZXJzaXN0ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAppbmRleCAyMDFm
YmQ5N2VmYmYzYTkwYzQ4OTAxOWE3NWQ2OWUyODllYjE5ZTU5Li5kMDZhODUwYWVlMGNkMGVhYjk0
OTQ1ZTk0ZTQ5MjVkMGQyZjRkNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIGJvb2wgQ2VydGlmaWNhdGVJbmZvOjpjb250YWluc05vblJvb3RTSEExU2lnbmVk
Q2VydGlmaWNhdGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8Q2Vy
dGlmaWNhdGVTdW1tYXJ5PiBDZXJ0aWZpY2F0ZUluZm86OnN1bW1hcnkoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNv
bnN0CiB7CiAgICAgYXV0byBjaGFpbiA9IGNlcnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNo
YWluKQpAQCAtMjAxLDkgKzIwMSw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZUNGRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkKICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShieXRlUHRyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNv
ZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNG
RGF0YShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaXplOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwog
CiAgICAgaWYgKFVOTElLRUxZKCFpc0luQm91bmRzPHNpemVfdD4oKnNpemUpKSkKQEAgLTIyOSw5
ICsyMjksOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTZWNUcnVzdFJlZihFbmNvZGVyJiBlbmNvZGVy
LCBTZWNUcnVzdFJlZiB0cnVzdCkKICAgICBlbmNvZGVDRkRhdGEoZW5jb2RlciwgZGF0YS5nZXQo
KSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVT
ZWNUcnVzdFJlZihEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPFNlY1RydXN0UmVmPj4gZGVjb2RlU2VjVHJ1c3RSZWYoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBPcHRpb25hbDxib29sPiBoYXNUcnVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhh
c1RydXN0OwogICAgIGRlY29kZXIgPj4gaGFzVHJ1c3Q7CiAgICAgaWYgKCFoYXNUcnVzdCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2OCw5ICsyNjgsOSBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKEVuY29kZXImIGVuY29kZXIsIENGQXJyYXlSZWYgY2Vy
dGlmaWNhdGVDaGFpbgogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxDRkFy
cmF5UmVmPj4gZGVjb2RlQ2VydGlmaWNhdGVDaGFpbihEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBkZWNvZGVDZXJ0aWZpY2F0ZUNo
YWluKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAg
ICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzEyLDkgKzMx
Miw5IEBAIHZvaWQgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNlCiAgICAgfQogfQogCi1PcHRpb25hbDxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8+IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4g
Y2VydGlmaWNhdGVJbmZvVHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZvVHlwZTsKICAgICBkZWNvZGVyID4+IGNlcnRp
ZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm9UeXBlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNw
cAppbmRleCBhNTFiZGI4ZTMyNWIzMzc2ZDE0YzZmNGY1ZTgwN2QzODFkYmI4ZDZlLi44MjcyZjc2
ZDM4N2QxOWYxNWY5MzliM2I3Y2E0NGVhYmMwYzk3MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgQ0ZIVFRQQ29va2ll
U3RvcmFnZUFjY2VwdFBvbGljeSB0b0NGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3koSFRU
UENvbwogICAgIHJldHVybiBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwog
fQogCi1SZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2Nl
cHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBjb29raWVBY2NlcHRQb2xp
Y3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJM
U3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVy
dHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVJlZj4gcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tp
ZVN0cmluZywgQ0ZVUkxSZWYgdQogICAgIHJldHVybiBjb29raWU7CiB9CiAKLXZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0
ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIGF1dG8gdXJsQ0YgPSB1cmwu
Y3JlYXRlQ0ZVUkwoKTsKICAgICBhdXRvIGNvb2tpZSA9IHBhcnNlRE9NQ29va2llKGNvb2tpZVN0
cmluZywgdXJsQ0YuZ2V0KCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBib29sIGNvbnRh
aW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVmIGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yODQsNyArMjg0LDcgQEAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNv
b2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2VJRCk7CkBAIC0zMTYsNyArMzE2LDcgQEAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZUFjY2VwdFBvbGljeSgpIGNvbnN0CiAgICAgfQogfQog
Ci1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBkNjc3MjgwZDJiNWU3YjA1M2Ey
NDBjMTU1ZDY0YmM4ODFmMTczN2JiLi43MzMwYWE5MzM5MjQ3OTFmMTI5MmMwODQ3OTIxZTNiMzY3
NDkzZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTQsMTEgKzU0LDExIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMZWdhY3lUTFNFbmFibGVkKGJv
b2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKIHByaXZhdGU6CiAg
ICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBw
bGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBlNjdlODNjNmIxNmVm
YmNjMjU4MmMzYTg2MjQyZjU1ZjljNGI1MmUxLi42MjU0ODViZjFjMGU4ZTU4MTliZjY1NDA1NWJk
Mzg2NDM3MTgzYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03
MTQsNyArNzE0LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoKQogICAgIEFTU0VSVCghbV9wYWNSdW5Mb29wU291cmNlKTsKIH0KIAotT3B0aW9uYWw8
c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX3dyaXRlU3RyZWFtKQogICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0Nvb2tpZUNvY29hLm1tCmluZGV4IDhhNTA2NTBjZWE4NjJlMTU1ZjI1MzNiNGZkZDczOWY3
YjgzYzE2ZDkuLjEwZWM3NWE3ZWVlODc4NDFjZTAxMmI5YWYxOWI0NjcwYjBjMTkyMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2Nv
YS5tbQpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgZG91YmxlIGNvb2tpZUNyZWF0ZWQoTlNIVFRQ
Q29va2llICpjb29raWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3Vi
bGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29raWUgKmNvb2tpZSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gY29va2llRXhwaXJ5KE5TSFRUUENvb2tpZSAqY29va2llKQogewogICAgIE5T
RGF0ZSAqZXhwaXJ5RGF0ZSA9IGNvb2tpZS5leHBpcmVzRGF0ZTsKICAgICBpZiAoIWV4cGlyeURh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBkOTc4MmJiMTA3
MDQ2NjI1YWQwOTJjZGFmNTIxMTlmNDE0YTkyY2RiLi41OWM1NjI3YzQ2ZGE5NmM2NjliZjM4MDA4
M2Y2Yjc3YzdlNmExZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
QEAgLTE3NSw3ICsxNzUsNyBAQCBDb29raWVTdG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llU3RvcmFnZU9ic2VydmVyKCkgY29uc3QKICAgICByZXR1cm4gKm1fY29v
a2llU3RvcmFnZU9ic2VydmVyOwogfQogCi1SZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJl
Zj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9w
dGlvbmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IGNvb2tpZUFjY2VwdFBvbGljeSkKK1JldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9s
aWN5PiBjb29raWVBY2NlcHRQb2xpY3kpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3Bl
cnR5S2V5c1tdID0geyBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25z
dCB2b2lkKiBzZXNzaW9uUHJvcGVydHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKQEAg
LTI1MSwxMCArMjUxLDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwb2xpY3lQ
cm9wZXJ0aWVzKGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvCiB9CiAjZW5kaWYKIAot
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IE9w
dGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNTdHJpbmcgKnBhcnRpdGlvbiA9
IG51bGxwdHIpCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGNvb2tpZXNGb3JVUkwoTlNIVFRQ
Q29va2llU3RvcmFnZSAqc3RvcmFnZSwgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVS
TCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TU3Ry
aW5nICpwYXJ0aXRpb24gPSBudWxscHRyKQogewotICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVS
TDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1
c2UgT3B0aW9uYWw8PiB0byBlbnN1cmUgdGhpcyBpbnZhcmlhbnQuCi0gICAgT3B0aW9uYWw8UmV0
YWluUHRyPE5TQXJyYXk+PiBjb29raWVzUHRyOworICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVS
TDogbWV0aG9kIGNhbGxzIHRoZSBjb21wbGV0aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LiBXZSB1
c2Ugc3RkOjpvcHRpb25hbDw+IHRvIGNoZWNrIHRoaXMgaW52YXJpYW50IGFuZCBjcmFzaCBpZiBp
dCdzIG5vdCBtZXQuCisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvb2tp
ZXNQdHI7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJy
YXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsK
ICAgICB9OwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0CiAjZW5k
aWYKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAq
Zmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBO
U1VSTCAqdXJsKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdl
LCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBz
YW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewpAQCAtMzMxLDcg
KzMzMSw3IEBAIE5TSFRUUENvb2tpZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlP
ZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29va2llICpjCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0K
IAotUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVS
TChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHNob3VsZEFza0lUUCA9
PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkK
QEAgLTM0NCw3ICszNDQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgYwogICAgIHJldHVybiBo
dHRwQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKIApAQCAtMzkyLDEyICszOTIsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRU
UENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRU
UENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5j
bHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIHJldHVybiBj
b29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJ
VFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KQEAgLTQwNyw3ICs0
MDcsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgogICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNp
dGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBo
ZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKIH0KIAotc3RhdGljIE5TSFRUUENvb2tpZSAqcGFy
c2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgTlNVUkwqIGNvb2tpZVVSTCwgT3B0aW9u
YWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUpCitzdGF0aWMgTlNIVFRQQ29va2llICpwYXJzZURP
TUNvb2tpZShTdHJpbmcgY29va2llU3RyaW5nLCBOU1VSTCogY29va2llVVJMLCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81
NjMyODgzPiBPbiAxMC41LCBOU0hUVFBDb29raWVTdG9yYWdlIHdvdWxkIHN0b3JlIGFuIGVtcHR5
IGNvb2tpZSwKICAgICAvLyB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgpAQCAt
NDM5LDcgKzQzOSw3IEBAIHN0YXRpYyBOU0hUVFBDb29raWUgKnBhcnNlRE9NQ29va2llKFN0cmlu
ZyBjb29raWVTdHJpbmcsIE5TVVJMKiBjb29raWVVUkwsIE9wdGlvCiAgICAgcmV0dXJuIGNvb2tp
ZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTCiAKICAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOwogCi0gICAgT3B0aW9u
YWw8U2Vjb25kcz4gY29va2llQ2FwOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY29va2ll
Q2FwOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgY29va2llQ2Fw
ID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwg
cGFnZUlEKTsKICNlbmRpZgpAQCAtNDkwLDcgKzQ5MCw3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVBY2NlcHRQb2xpY3koKSBjb25zdAogICAg
IHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpOZXZlcjsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCmluZGV4IDBkYjg3NzRmODVhMzYz
Y2M1YTMyNWYyZjkzZWJiZGU3NWE4ZmM5MjYuLjAwYzIwMDAyNTE1OTkxYWMwZGQ0ZWQzMDkxM2Iy
MmRkYzY4YWNlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4
IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERhdGE7CiAgICAgY2xhc3MgTWVkaWFSZXNvdXJjZUNs
aWVudDsKICAgICB2b2lkIGdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoRGF0
YSYpOwotICAgIHZvaWQgZ2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKiwgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiwg
T3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShj
b25zdCBEYXRhJik7CisgICAgdm9pZCBnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJl
Y2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqLCBjb25zdCBQYXJzZWRSZXF1ZXN0
UmFuZ2UmLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25z
dCBEYXRhJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRl
bnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPERhdGE+PiBtX21hcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0KaW5kZXggZmRlMGZmY2RiZjRkYWZhOWIyY2IwNDUwYzU5MDRlNWM4ZWNmZWM2Zi4uNDIxOWJi
NTNjMjA1Njk3NTNiMGIxOTJjM2I5M2YxZDVhZjdkZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQpAQCAtNzMsNyArNzMsNyBAQCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjp+UmFu
Z2VSZXNwb25zZUdlbmVyYXRvcigpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAot
c3RhdGljIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZUZvclJhbmdlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIGNvbnN0IFBhcnNlZFJlcXVlc3RS
YW5nZSYgcGFyc2VkUmVxdWVzdFJhbmdlLCBPcHRpb25hbDxzaXplX3Q+IHRvdGFsQ29udGVudExl
bmd0aCkKK3N0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2VGb3JSYW5n
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBjb25zdCBQYXJzZWRS
ZXF1ZXN0UmFuZ2UmIHBhcnNlZFJlcXVlc3RSYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHRv
dGFsQ29udGVudExlbmd0aCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1
dG8gYmVnaW4gPSBwYXJzZWRSZXF1ZXN0UmFuZ2UuYmVnaW47CkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayAqdGFzaykKICAgICBkYXRhLT50YXNrRGF0YS5yZW1vdmUodGFzayk7CiB9CiAK
LXZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBh
cnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIE9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50
TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQordm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gYnVmZmVyID0gZGF0YS5i
dWZmZXI7CkBAIC0xNjMsMTMgKzE2MywxMyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAg
IH0KIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3Rl
ZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXRhJiBkYXRhKQorc3RkOjpvcHRpb25hbDxz
aXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21E
YXRhKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1
bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCiAgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6
ZSgpOwogCi0gICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRl
bnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIE9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBk
b2luZyB0aGlzIGNoZWNrIGhlcmUuCisgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNl
OjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVj
dGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKTsKICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VV
bmtub3duTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaAppbmRleCBjNjBmMWI0MGUyYjEzNDIxMTEyZjU4MGZhMDNkNTEwY2FmNGNk
OGI3Li44MTNkMmI1NDkxYTU1NDg5OGEzZjQ5NGM4YTM1NmEzZTQyYTBjOTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIFByb3Rl
Y3Rpb25TcGFjZVNlcnZlclR5cGUgcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkoY29u
c3QgVVJMJiwgYm9vbCBpc0ZvclByb3h5KTsKICAgICBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlv
blNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25zdCBDdXJsUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZUZvclNlcnZl
clRydXN0KGNvbnN0IFVSTCYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYpOwotICAgIE9wdGlvbmFs
PHVpbnQxNl90PiBkZXRlcm1pbmVQcm94eVBvcnQoY29uc3QgVVJMJik7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZGV0ZXJtaW5lUHJveHlQb3J0KGNvbnN0IFVSTCYpOwogICAgIFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lRnJvbUN1
cmxBdXRoKGxvbmcpOwogICAgIFN0cmluZyBwYXJzZVJlYWxtKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2b2lkIHJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKaW5kZXggOTNjZDg4ZjMwYTY3
OTc2NGE5ODhjNDhlM2VmOWY4M2VmMjQ4N2I5Yi4uMGZmOTFiYjRmOTQxN2M3OTI3OTM5YTcxMzFi
NzIzOTBkYzBiODE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ojpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJUcnVzdChjb25zdCBVUkwKICAgICByZXR1cm4gUHJv
dGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0
LnZhbHVlX29yKDApKSwgc2VydmVyVHlwZSwgU3RyaW5nKCksIGF1dGhlbnRpY2F0aW9uU2NoZW1l
LCBjZXJ0aWZpY2F0ZUluZm8pOwogfQogCi1PcHRpb25hbDx1aW50MTZfdD4gQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6OmRldGVybWluZVByb3h5UG9ydChjb25zdCBVUkwmIHVybCkKK3N0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpkZXRlcm1pbmVQcm94eVBv
cnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHNvY2tzUG9y
dCA9IDEwODA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRleCBkY2EyMGJhM2M1NDIxNjBhMzE4NTcwYzY3ZGE1
MjBkN2YzY2YyYTcwLi5mMjY4ZTNiOTE1MThhYzFjM2ZkZjA1YmRlNzNlOGFmNTY2NThmYjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNh
dGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRp
ZmljYXRlSW5mby5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFp
bnNOb25Sb290U0hBMVNpZ25lZENlcnRpZmljYXRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gZmFsc2U7IH0KIAotICAgIE9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3Vt
bWFyeSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1t
YXJ5KCkgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NlcnRp
ZmljYXRlQ2hhaW4uaXNFbXB0eSgpOyB9CiAKQEAgLTgyLDIxICs4MiwyMSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICAgICAgICAgIGVu
Y29kZXIgPDwgY2VydGlmaWNhdGU7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gdmVyaWZpY2F0aW9uRXJyb3I7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB2ZXJpZmljYXRpb25FcnJvcjsKICAgICAgICAg
ZGVjb2RlciA+PiB2ZXJpZmljYXRpb25FcnJvcjsKICAgICAgICAgaWYgKCF2ZXJpZmljYXRpb25F
cnJvcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8c2l6ZV90PiBudW1PZkNlcnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVt
T2ZDZXJ0czsKICAgICAgICAgZGVjb2RlciA+PiBudW1PZkNlcnRzOwogICAgICAgICBpZiAoIW51
bU9mQ2VydHMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVDaGFpbiBjZXJ0aWZpY2F0ZUNoYWlu
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9mQ2VydHMudmFsdWUoKTsgaSsr
KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRp
ZmljYXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGU7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IGNlcnRpZmljYXRlOwogICAgICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
CmluZGV4IGVjMGY0YmEwY2JlNDFmZDFlY2U4YWI4ZmYyZjgzNjVmYjZhMGE5YjguLmUwZWVmNjg4
MGYyYjY3ZTA5ZTIzM2RlYzc0NWJkMDgzNDg3OWFhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZp
Y2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWYKICAgICByZXR1cm4g
Y2VydGlmaWNhdGU7CiB9CiAKLU9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gQ2VydGlmaWNh
dGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5
PiBDZXJ0aWZpY2F0ZUluZm86OnN1bW1hcnkoKSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZp
Y2F0ZUNoYWluLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmlu
ZGV4IGRiYjA1ODM4NWRhYjdiNmUzOTVlMTU5ZDU4MWNmOTA3NDdiZDE2MGEuLjNjNGFkYTNlNTBi
YmM3N2Q4YmRkZWQwMmYwMWUyYzdlNjYwMDBmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzY5LDcgKzM2OSw3
IEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVzsKIH0KIAotT3B0aW9uYWw8VmVjdG9y
PENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHks
IGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNz
aW9uKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHJlcXVlc3RVcmwsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiBzZWN1cmUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHNlc3Npb24pCiB7CiAgICAgaWYg
KCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTUzMCw3ICs1MzAsNyBAQCBib29sIENvb2tpZUphckRCOjpzZXRDb29r
aWUoY29uc3QgQ29va2llJiBjb29raWUpCiAgICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29k
ZShzdGF0ZW1lbnQuc3RlcCgpKTsKIH0KIAotYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwg
Q29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0
aW1lKQorYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBz
b3VyY2UsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUpCiB7CiAgICAgaWYg
KCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuaAppbmRleCAwOTFlOTQ3NzcxODZkYjljNjA0OGYxNzc0YTc0ZmNmMTU5YWU0NTY3Li5j
NGViNjdkNmY3YzMzNDA3NmIzMmI3OThkY2VhNDBiNTcwNjgxZTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNTgsOSAr
NTgsOSBAQCBwdWJsaWM6CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWNjZXB0UG9saWN5OyB9CiAKICAgICBIYXNoU2V0PFN0cmluZz4gYWxs
RG9tYWlucygpOwotICAgIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25h
bDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb29raWU+
PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0
VXJsLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBodHRwT25seSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsK
ICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwg
U291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBl
ZExpZmV0aW1lID0gc3RkOjpudWxsb3B0KTsKICAgICBib29sIHNldENvb2tpZShjb25zdCBDb29r
aWUmKTsKIAogICAgIGJvb2wgZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IGUzNTA0NDgyMDYyMWZiZjc5MmNlZDcwNmQxZDAxNGZj
ZTNkMzUwZGMuLjM5ZDMyNWJkMDY5MmI0NmY2NTQzNTY2ZTk1YjRhZTg5MTZjOTIyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5j
cHAKQEAgLTgxLDEzICs4MSwxMyBAQCBib29sIGRvbWFpbk1hdGNoKGNvbnN0IFN0cmluZyYgY29v
a2llRG9tYWluLCBjb25zdCBTdHJpbmcmIGhvc3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZUV4cGlyZXNNUyhjb25zdCBjaGFyKiBleHBpcmVz
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZUV4cGlyZXNNUyhjb25zdCBjaGFy
KiBleHBpcmVzKQogewogICAgIGRvdWJsZSB0bXAgPSBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoZXhwaXJlcyk7CiAgICAgaWYgKGlzbmFuKHRtcCkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8ZG91YmxlPiB7dG1wfTsKKyAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxkb3VibGU+IHt0bXB9OwogfQogCiBzdGF0aWMgdm9pZCBwYXJz
ZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGJvb2wmIGhhc01heEFn
ZSwgQ29va2llJiByZXN1bHQpCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VD
b29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2Us
IENvb2sKICAgICB9CiB9CiAKLU9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29u
c3QgU3RyaW5nJiBjb29raWVMaW5lKQorc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2ll
SGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5s
ZW5ndGgoKSA+PSBNQVhfQ09PS0lFX0xJTkUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwu
aAppbmRleCA5NTZjMTUzYTkzYmYzMDE3NDNiOGVlYWRjMTE5MDAwMTdmNTEyM2VjLi44NGQzOGRm
N2UwYmVjNzM0YTgzNDMyMDkzNDVjZmU4ZDdmODUwZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKQEAgLTM0LDcgKzM0LDcgQEAg
c3RydWN0IENvb2tpZTsKIAogbmFtZXNwYWNlIENvb2tpZVV0aWwgewogCi1PcHRpb25hbDxDb29r
aWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxDb29r
aWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiBib29sIGlzSVBBZGRyZXNz
KGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCBmZmU3NzBhZGI4ZjJiMWNmMDYwMGVjZDMx
M2I4M2Y5MDk0NjU3ODgxLi5jMzY4NTViNWFjN2U5ZjgzYzdiYmUyZDYyZDY4OTI1NDY0ZjgxYjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIHJl
YWQoY29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gOjpnZXRlbnYobmFtZSk7IH0KICAgICBib29s
IGRlZmluZWQoY29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gcmVhZChuYW1lKSAhPSBudWxscHRy
OyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25hbDxUPiByZWFkQXMoY29uc3Qg
Y2hhciogbmFtZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFQ+IHJl
YWRBcyhjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHZh
bHVlU3RyID0gcmVhZChuYW1lKSkgewogICAgICAgICAgICAgVCB2YWx1ZTsKQEAgLTY3Miw3ICs2
NzIsNyBAQCB2b2lkIEN1cmxIYW5kbGU6OmVuYWJsZUNvbm5lY3Rpb25Pbmx5KCkKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KG1faGFuZGxlLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZF
UlNJT05fMV8xKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBDdXJsSGFuZGxlOjpnZXRQcm94eVVy
bCgpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogewog
ICAgIGF1dG8mIHByb3h5ID0gQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnByb3h5U2V0dGluZ3Mo
KTsKICAgICBpZiAocHJveHkubW9kZSgpID09IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZh
dWx0KQpAQCAtNjgxLDcgKzY4MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybEhhbmRsZTo6Z2V0
UHJveHlVcmwoKQogICAgIHJldHVybiBwcm94eS51cmwoKTsKIH0KIAotT3B0aW9uYWw8bG9uZz4g
Q3VybEhhbmRsZTo6Z2V0UmVzcG9uc2VDb2RlKCkKK3N0ZDo6b3B0aW9uYWw8bG9uZz4gQ3VybEhh
bmRsZTo6Z2V0UmVzcG9uc2VDb2RlKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjk0LDcgKzY5NCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1
cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgpCiAgICAgcmV0dXJuIHJlc3BvbnNlQ29kZTsKIH0K
IAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKK3N0ZDo6
b3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKIHsKICAgICBp
ZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzA3LDcgKzcw
Nyw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldEh0dHBDb25uZWN0Q29kZSgpCiAg
ICAgcmV0dXJuIGh0dHBDb25uZWN0Q29kZTsKIH0KIAotT3B0aW9uYWw8bG9uZyBsb25nPiBDdXJs
SGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKK3N0ZDo6b3B0aW9uYWw8bG9uZyBsb25nPiBDdXJs
SGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNzIxLDcgKzcyMSw3IEBAIE9wdGlvbmFsPGxvbmcg
bG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVudExlbmd0aCgpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oY29udGVudExlbmd0aCk7CiB9CiAKLU9wdGlvbmFsPGxvbmc+IEN1cmxI
YW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQorc3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxl
OjpnZXRIdHRwQXV0aEF2YWlsKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtNzM0LDcgKzczNCw3IEBAIE9wdGlvbmFsPGxvbmc+IEN1cmxI
YW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQogICAgIHJldHVybiBodHRwQXV0aEF2YWlsYWJsZTsK
IH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQorc3Rk
OjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAg
aWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc0Nyw3ICs3
NDcsNyBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiAg
ICAgcmV0dXJuIHByb3h5QXV0aEF2YWlsYWJsZTsKIH0KIAotT3B0aW9uYWw8bG9uZz4gQ3VybEhh
bmRsZTo6Z2V0SHR0cFZlcnNpb24oKQorc3RkOjpvcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpn
ZXRIdHRwVmVyc2lvbigpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTc2MCw3ICs3NjAsNyBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxl
OjpnZXRIdHRwVmVyc2lvbigpCiAgICAgcmV0dXJuIHZlcnNpb247CiB9CiAKLU9wdGlvbmFsPE5l
dHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0
IFdURjo6U2Vjb25kcyYgZG9tYWluTG9va3VwU3RhcnQpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtM
b2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6
U2Vjb25kcyYgZG9tYWluTG9va3VwU3RhcnQpCiB7CiAgICAgZG91YmxlIG5hbWVMb29rdXAgPSAw
LjA7CiAgICAgZG91YmxlIGNvbm5lY3QgPSAwLjA7CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBD
dXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmkKICAgICB9CiB9CiAKLU9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
Q3VybEhhbmRsZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiBDdXJsSGFuZGxlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIGlm
ICghbV9zc2xWZXJpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXgg
ZjFkMTVkNWY1YjMzZjU5MTdlYWI1YzExZDYwYmM5NGJlNGIwODYwNi4uMmQ2NTNjYTNmZjk4M2Rm
YWM4YWEzZTNkNGMyZTkzMWU3Yjk1MWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4OSwxOCArMjg5LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERlYnVnQ2FsbGJhY2tGdW5jdGlvbihjdXJsX2RlYnVnX2NhbGxi
YWNrLCB2b2lkKik7CiAKICAgICAvLyBTdGF0dXMKLSAgICBPcHRpb25hbDxTdHJpbmc+IGdldFBy
b3h5VXJsKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0UmVzcG9uc2VDb2RlKCk7Ci0gICAgT3B0
aW9uYWw8bG9uZz4gZ2V0SHR0cENvbm5lY3RDb2RlKCk7Ci0gICAgT3B0aW9uYWw8bG9uZyBsb25n
PiBnZXRDb250ZW50TGVuZ3RoKCk7Ci0gICAgT3B0aW9uYWw8bG9uZz4gZ2V0SHR0cEF1dGhBdmFp
bCgpOwotICAgIE9wdGlvbmFsPGxvbmc+IGdldFByb3h5QXV0aEF2YWlsKCk7Ci0gICAgT3B0aW9u
YWw8bG9uZz4gZ2V0SHR0cFZlcnNpb24oKTsKLSAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJp
Y3M+IGdldE5ldHdvcmtMb2FkTWV0cmljcyhjb25zdCBXVEY6OlNlY29uZHMmIGRvbWFpbkxvb2t1
cFN0YXJ0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZ2V0UHJveHlVcmwoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGxvbmc+IGdldFJlc3BvbnNlQ29kZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8
bG9uZz4gZ2V0SHR0cENvbm5lY3RDb2RlKCk7CisgICAgc3RkOjpvcHRpb25hbDxsb25nIGxvbmc+
IGdldENvbnRlbnRMZW5ndGgoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldEh0dHBBdXRo
QXZhaWwoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGxvbmc+IGdldFByb3h5QXV0aEF2YWlsKCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxsb25nPiBnZXRIdHRwVmVyc2lvbigpOworICAgIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya0xvYWRNZXRyaWNzPiBnZXROZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgV1RGOjpT
ZWNvbmRzJiBkb21haW5Mb29rdXBTdGFydCk7CiAgICAgdm9pZCBhZGRFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmKTsKIAogICAgIGludCBzc2xFcnJvcnMoKSBjb25z
dDsKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbygpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdDsKIAogICAgIHN0YXRpYyBsb25nIGxvbmcgbWF4Q3VybE9mZlQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmNwcAppbmRleCA3OWRkYzM5OTI4YTgzOWNjYTc1NmQ4MjBjNGJlMWNlNGFkZWUzZGRj
Li4yODk1OGE5Y2RiZWRiZWRlMjIyYWQ3ZjdiOGVkODBkOTkyNTgzYTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpj
b21wdXRlQ29udGVudExlbmd0aCgpCiAgICAgICAgIG1fdG90YWxTaXplICs9IGVsZW1lbnQubGVu
Z3RoSW5CeXRlcygpOwogfQogCi1PcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6
cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1
cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAg
IGlmICghbV9mb3JtRGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBPcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFy
KiBidWZmZXIsIHNpemVfdCBzaXplKQogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemUg
LSB0b3RhbFJlYWRCeXRlczsKICAgICAgICAgY2hhciogYnVmZmVyUG9zaXRpb24gPSBidWZmZXIg
KyB0b3RhbFJlYWRCeXRlczsKIAotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHJlYWRCeXRlcyA9
IHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJl
YWRCeXRlcyA9IHN3aXRjaE9uKGVsZW1lbnQuZGF0YSwKICAgICAgICAgICAgIFsmXSAoY29uc3Qg
VmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbURh
dGEoYnl0ZXMsIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFsm
XSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJl
YWQoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gdG90YWxSZWFkQnl0ZXM7
CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbUZpbGUo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhLCBjaGFyKiBi
dWZmZXIsIHNpemVfdCBzaXplKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0
cmVhbTo6cmVhZEZyb21GaWxlKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
JiBmaWxlRGF0YSwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAobV9maWxl
SGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAg
IG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVEYXRhLmZpbGVuYW1lLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwpAQCAtMTczLDcgKzE3Myw3IEBAIE9wdGlv
bmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURh
dGFFbGVtZW50OjpFbmNvZGVkCiAgICAgcmV0dXJuIHJlYWRCeXRlczsKIH0KIAotT3B0aW9uYWw8
c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWRGcm9tRGF0YShjb25zdCBWZWN0b3I8Y2hh
cj4mIGRhdGEsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCitzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiBk
YXRhLCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCBlbGVtZW50U2l6
ZSA9IGRhdGEuc2l6ZSgpIC0gbV9kYXRhT2Zmc2V0OwogICAgIGNvbnN0IGNoYXIqIGVsZW1lbnRC
dWZmZXIgPSBkYXRhLmRhdGEoKSArIG1fZGF0YU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uaAppbmRl
eCAwOTNiMjk3MTQ0NjhlZDQzYWQ3NDgyZWJkMDJmZmY3YzI4OTBmMDE0Li5iOWExMDBkYzhkZjVh
ZGEzZmVjMWQ0NDE1OWE5MTJhOWEwMzdhNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5oCkBAIC00NSwx
NCArNDUsMTQgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkVXNlQ2h1bmtUcmFuc2ZlcigpOwog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbFNpemUoKTsKIAotICAgIE9wdGlvbmFsPHNpemVf
dD4gcmVhZChjaGFyKiwgc2l6ZV90KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcmVhZChj
aGFyKiwgc2l6ZV90KTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxSZWFkU2l6ZSgpIHsg
cmV0dXJuIG1fdG90YWxSZWFkU2l6ZTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUNv
bnRlbnRMZW5ndGgoKTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gcmVhZEZyb21GaWxlKGNvbnN0
IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiwgY2hhciosIHNpemVfdCk7Ci0gICAg
T3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hhcios
IHNpemVfdCk7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHJlYWRGcm9tRmlsZShjb25zdCBG
b3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYsIGNoYXIqLCBzaXplX3QpOworICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiByZWFkRnJvbURhdGEoY29uc3QgVmVjdG9yPGNoYXI+JiwgY2hh
ciosIHNpemVfdCk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcAppbmRleCA3MDI0ZWM3YzFlYjgyYjVjYjIzZGE1ODBiMmUzNmJhYjEw
ZGVkM2IwLi5mZTQxMDc2ZDc2YmFhZDIxYmNkZGM0YTBlMmFkM2I3NjdkNTIxNTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJs
TXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJs
TXVsCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAq
Ym91bmRhcnkpOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4
dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJs
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGZvciAoYXV0byBoZWFkZXIgOiByZXNwb25zZS5o
ZWFkZXJzKSB7CiAgICAgICAgIGF1dG8gc3BsaXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIp
OwpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbgogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5k
YXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJsZW4oImJvdW5kYXJ5PSIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuaAppbmRleCA3MjBjNjk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAx
Li42ZWQ1NTZmNDJhMDU5MDFiMTliMGYxMDNiMjJjNmE0OWYzMjYyMWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmgKQEAgLTU3LDggKzU3LDggQEAgcHJpdmF0ZToKICAgICAgICAgRW5kCiAgICAgfTsK
IAotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJs
UmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnlG
cm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBleHRyYWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJik7CiAKICAgICBib29sIHByb2Nlc3NDb250ZW50KCk7CiAgICAgYm9vbCBjaGVj
a0ZvckJvdW5kYXJ5KHNpemVfdCYgYm91bmRhcnlTdGFydFBvc2l0aW9uLCBzaXplX3QmIGxhc3RQ
YXJ0aWFsTWF0Y2hQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRleCBkZTA5MjdmZTFh
M2E2ZGEzMTc4MGM1ODQ5NTNhMGE5NjBkNGUxYzk3Li5kNzQyM2IyOTBhMjhjNWUwMThjY2QyZmM5
NWIzZWNmNWQ2YTAwMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJv
eHlQb3J0ID0gMTA4MDsKIAotc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwo
Y29uc3QgVVJMJik7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJs
KGNvbnN0IFVSTCYpOwogCiBDdXJsUHJveHlTZXR0aW5nczo6Q3VybFByb3h5U2V0dGluZ3MoVVJM
JiYgcHJveHlVcmwsIFN0cmluZyYmIGlnbm9yZUhvc3RzKQogICAgIDogbV9tb2RlKE1vZGU6OkN1
c3RvbSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseShjb25z
dCBVUkwmIHVybCkKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXMoInNvY2tzNCIpIHx8IHVybC5w
cm90b2NvbElzKCJzb2NrczRhIikgfHwgdXJsLnByb3RvY29sSXMoInNvY2tzNSIpIHx8IHVybC5w
cm90b2NvbElzKCJzb2NrczVoIik7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0
UHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IGdldFByb3h5UG9ydChjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHBvcnQgPSB1cmwucG9y
dCgpOwogICAgIGlmIChwb3J0KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBPcHRpb25hbDx1
aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0
IFVSTCAmdXJsKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChj
b25zdCBVUkwgJnVybCkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCB1cmwuaG9zdCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcAppbmRleCA2
OWVjMjYyZGNiMmJlODI2YTg4YjgwMDk3ZmQwOTdmNDRkYTM2NGM4Li42M2Y4MTRhNWJkOGE0MWE0
YmFjMmEwNzkxMzA1MTg1YWQxMWRiNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgQ3VybFNTTEhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFN0cmlu
ZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluCiAgICAgbV9hbGxvd2VkQ2xpZW50SG9zdHMuc2V0KGhv
c3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7IGNlcnRpZmljYXRlLCBrZXkgfSk7CiB9CiAKLU9w
dGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVudENlcnRpZmljYXRlPiBDdXJsU1NMSGFuZGxlOjpn
ZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpDbGllbnRDZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRs
ZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkgY29uc3QK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRs
ZS5oCmluZGV4IDIyNjlkOTViYWNhODdhYjVmMTM4ZGRiNjU3YmVkYjZiNDZmN2M1OTkuLmUwNzY4
YTEyZTcyOGQzMjcwYWVmNDIxZmUwNzMwN2RmYzYwMmM0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuaApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5JZ25vcmVBbnlIVFRQU0NlcnRpZmljYXRlc0Zv
ckhvc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKLSAgICBPcHRpb25hbDxDbGllbnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50
Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGll
bnRDZXJ0aWZpY2F0ZT4gZ2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAKIHByaXZhdGU6CiAjaWYgTkVFRF9PUEVOU1NMX1RIUkVBRF9TVVBQT1JUCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggYjI0ZTliNmVkOWQ0NTAzY2M0MDU4MjAw
NDU5ZTc5MWQwMTc4N2Y1OS4uNzYxOGRjYTQ0ZDAwNDFkM2YzNzY0NTg3ZTE1ZjQwYzVjZTNjOGVj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNTcsOCArNTcsOCBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogewogICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsK
IAotICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSBmb3JIVFRQSGVhZGVyID8gc3RkOjpudWxsb3B0
IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OwotICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3Rv
Y29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07
CisgICAgYXV0byBzZWFyY2hIVFRQT25seSA9IGZvckhUVFBIZWFkZXIgPyBzdGQ6Om51bGxvcHQg
OiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNlY3VyZSA9IHVybC5w
cm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7
IGZhbHNlIH07CiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNl
KCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUs
IHN0ZDo6bnVsbG9wdCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiAqcmVz
dWx0KSB7CkBAIC05NSwxMyArOTUsMTMgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNl
OwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIE9wdGlvbmFsPFNlY29uZHM+
IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7
IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGNhcHBl
ZExpZmV0aW1lID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0
UGFydHkgfSwgcGFnZUlEKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0gICAg
T3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdDsKICNlbmRp
ZgogICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUs
IENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCwgY2FwcGVkTGlmZXRpbWUpOwogfQpAQCAtMTMz
LDcgKzEzMyw3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVBY2NlcHRQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0
UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxl
ciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmly
c3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLWJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBhdXRvIGNvb2tpZXMgPSBj
b29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICBpZiAoIWNvb2tpZXMpCkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3Rv
cmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBp
dC4KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJs
LCB0cnVlKSwgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCA4MTY0MjdiMGViNmUyODEwOWVhMjM3
YjEyYWJkMzdiNjM3MzVlYjhhLi5mMTdmOGNiZjhkZmVhYTk2MDcxM2FkOGE0MDRiYzMxOGYxN2Q4
NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3Bl
blNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L09wZW5TU0xIZWxwZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgOjpCSU9fZnJlZShtX2Jpbyk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnZXREYXRhQXNWZWN0b3IoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDhfdCog
ZGF0YSB7IG51bGxwdHIgfTsKICAgICAgICAgYXV0byBsZW5ndGggPSA6OkJJT19nZXRfbWVtX2Rh
dGEobV9iaW8sICZkYXRhKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGU+IHBlbURhdGFGcm9tQ3R4KFg1MDlfU1RP
UkVfQwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCitzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY3JlYXRlQ2VydGlmaWNhdGVJbmZv
KFg1MDlfU1RPUkVfQ1RYKiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIFN0cmluZyBnZXRTdWJqZWN0
TmFtZShjb25zdCBYNTA5KiB4NTA5KQogICAgIHJldHVybiBiaW8uZ2V0RGF0YUFzU3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTZWNvbmRzPiBjb252ZXJ0QVNOMVRpbWVUb1NlY29uZHMo
Y29uc3QgQVNOMV9USU1FKiBhbnMxVGltZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+
IGNvbnZlcnRBU04xVGltZVRvU2Vjb25kcyhjb25zdCBBU04xX1RJTUUqIGFuczFUaW1lKQogewog
ICAgIGlmICghYW5zMVRpbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yOTcs
NyArMjk3LDcgQEAgc3RhdGljIHZvaWQgZ2V0U3ViamVjdEFsdE5hbWUoY29uc3QgWDUwOSogeDUw
OSwgVmVjdG9yPFN0cmluZz4mIGRuc05hbWVzLCBWZWN0b3IKICAgICB9CiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBwZW0pCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3Vt
bWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZW0pCiB7CiAg
ICAgQklPIGJpbyB7IHBlbSB9OwogICAgIGF1dG8geDUwOSA9IGJpby5yZWFkWDUwOSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVy
LmgKaW5kZXggZWZjZGU5ODdiNjAwZDQxOGMzOTkwMDVmNmNjNTI4NTI1YjZkYzA4MC4uNjhjNTU2
MWY0ZTM3NmIzMGZlYTNlNmM4ODRjZTk2ZGVkOTUwOTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5oCkBAIC0zMiw3ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBPcGVuU1NMIHsKIAotT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvPiBjcmVhdGVDZXJ0aWZpY2F0ZUluZm8oWDUwOV9TVE9SRV9DVFgqKTsKLU9wdGlv
bmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBwZW0pOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8+IGNyZWF0ZUNlcnRpZmljYXRlSW5mbyhYNTA5X1NUT1JFX0NUWCopOworc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnk+IGNyZWF0ZVN1bW1hcnlJbmZvKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGVtKTsKIAogfSAvLyBuYW1lc3BhY2UgT3BlblNTTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcAppbmRleCBiNzE1ODYzNzJhYjY2YjhmMWFhZjU4MzQwMTVmOWQ3NDhmYThl
ZWYyLi4yZTE4YTI3OTY0ZmQ4MTkxZTQ2ZThkN2IzNTY2N2I5YTMzOTAxNjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8Q3JlZGVudGlhbD4gUmVz
b3VyY2VIYW5kbGU6OmdldENyZWRlbnRpYWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBib29sIHJlZGlyZWN0KQorc3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRs
ZTo6Z2V0Q3JlZGVudGlhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcmVk
aXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2ZW4gbWFu
dWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1MSHR0cFJl
cXVlc3Qub3BlbigpLgogICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+
bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmgKaW5kZXggZmFkNGVmOTE5ODExOGY1ZTZlNWVkN2QzYzE0Yjk5ZTU3NDU5MzQ1MS4u
MmQwNTg0ZGFiNWNmZjZkMTQ5MDYyOTY0MmJhZWE2NTJmYWVhMDAzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oCkBAIC00OSwxNCArNDksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNv
Y2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZv
cm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFu
ZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFs
PENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9v
bCk+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNo
YWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBi
b29sKT4mJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNsb3NlKCkg
ZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBjb25zdCBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKik7CiAKICAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsK
LSAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5h
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwog
CiAgICAgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA4YmViM2I1M2I5ZGJlNGE2NDdjYmIzMTczMWQxNmE5
NTMwZmZkMzRjLi4yZmVjZTAyOGVmZmRiZTg4NTE4ZWM3YjhiZTI1OWIwYTA5MDg2Y2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRsZUltcGwoKQogICAgIGRlc3Ry
dWN0U3RyZWFtKCk7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9y
bVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IGlmIChpc1N0cmVhbUludmFsaWRhdGVkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oCmluZGV4IGI0ZTUzZWRlNTAxZDQ4MWM1NDIwYmQyODNhMmQwYTc1MTEwODBm
MjEuLmU2YzU2Y2Y4MGUyMzEzMjg3MWM4MTQwNzk1YzUxMjFhYWQ3M2IxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVl
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gbV9t
ZXNzYWdlUXVldWU7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9yZXF1ZXN0UmVzdWx0
OwogICAgIFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBtX2NhY2hlZFJlc3BvbnNlUmVz
dWx0OwotICAgIE9wdGlvbmFsPFNjaGVkdWxlUGFpckhhc2hTZXQ+IG1fc2NoZWR1bGVkUGFpcnM7
CisgICAgc3RkOjpvcHRpb25hbDxTY2hlZHVsZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFBhaXJz
OwogICAgIEJPT0wgbV9ib29sUmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGIxMWZh
NzdkMWJmNDdhNGMwNDAzMmY1MWZkNGRmOTQ2N2YyMTllMS4uNGJkM2ZlOWZkZGVkMGE5ZWVhZGNm
NWUyNzBiYTM1OTUyOGYxZDFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIGJvb2wgc2NoZWR1bGVkV2l0aEN1
c3RvbVJ1bkxvb3BNb2RlKGNvbnN0IE9wdGlvbmFsPFNjaGVkdWxlUGFpckhhc2hTZXQ+JiBwYWly
cykKK3N0YXRpYyBib29sIHNjaGVkdWxlZFdpdGhDdXN0b21SdW5Mb29wTW9kZShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNjaGVkdWxlUGFpckhhc2hTZXQ+JiBwYWlycykKIHsKICAgICBpZiAoIXBhaXJz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgKaW5kZXggY2IyNjA4NDY2NmI3MmU5
YzhhZWY3ZTQwMjZkZGRmZTdlYjViYjg4Yy4uNDkwZDk2NzY1NDg4NGUwODhkODAwOWU0ZWNhMDlm
M2JjMTYyOTFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0NlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgbm90
SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0
ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gc3VtbWFy
eSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fY2VydGlmaWNhdGU7IH0KIApAQCAt
NzgsOSArNzgsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyYXk+
PiB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0
YSwgYnl0ZUFycmF5LT5sZW4pOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRy
PEdCeXRlQXJyYXk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzaXplOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBzaXplOwogICAgICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgIGlm
ICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDQsOSArMTQ0
LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7
CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5m
by50bHNFcnJvcnMoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pj4g
Y2VydGlmaWNhdGVzRGF0YUxpc3Q7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEdSZWZQ
dHI8R0J5dGVBcnJheT4+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAgICAgICAgZGVjb2RlciA+
PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZXNEYXRhTGlz
dCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0
Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0KCkpOwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiB0bHNFcnJvcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHRsc0Vycm9y
czsKICAgICAgICAgZGVjb2RlciA+PiB0bHNFcnJvcnM7CiAgICAgICAgIGlmICghdGxzRXJyb3Jz
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBlMGU4ODJhMzhiYjk5MTZhZWZmNDljOTFkZWEyYmViNTNjZGU5
MmIwLi5kNDAxNmY4NmI0OTAzYTI1ODg2MjkxNDQ5MDY1YmFiZDU0NjgyNjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29u
c3QgZ2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSkKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0
aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdD
b29raWVzLmNsZWFyKCk7CiAKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykKK3N0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
U2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRC
bG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSkKQEAgLTYyOCwxMiArNjI4LDEyIEBAIHN0YXRpYyBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0
KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsK
ICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2Ft
ZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcywg
c2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIC8vIFNl
Y3VyZSBjb29raWVzIHdpbGwgc3RpbGwgb25seSBiZSBpbmNsdWRlZCBpZiB1cmwncyBwcm90b2Nv
bCBpcyBodHRwcy4KICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFy
dHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDNlY2Y4NjYwMDVkYTZkYTljZWM3Yzc5MzBl
NmE0ZjkzY2IzOWQ2ZTAuLjg4ZGYzNzQ4ZTk4MGEyMmU3MWJkODM1ODY0Y2FmMjRiNmI3ZWE1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdm9pZCBw
bGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgT3B0aW9u
YWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBi
b29sKT4mJikgZmluYWwKKyAgICB2b2lkIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsCiAgICAgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKaW5kZXggZTcyOTIxYzM2NjdlMDUwZTJkZWJiNDRhMTc3MDRiOGQ3OTg2MDI0MS4uNWI5
MTFkNzQyMGU2ZTg1ZWM4ZWFjYjcxNmZlODRmZDJhYTcyNDY3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SWdu
b3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIG1faWdub3JlVExTRXJyb3Jz
ID0gaWdub3JlVExTRXJyb3JzOwogfQogCi1PcHRpb25hbDxSZXNvdXJjZUVycm9yPiBTb3VwTmV0
d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgR1Rsc0Nl
cnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQor
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExT
RXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0
ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzKQogewogICAgIGlmIChtX2lnbm9yZVRM
U0Vycm9ycyB8fCAhdGxzRXJyb3JzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IDVhNDg0OTM2YzA3NmRhZTYzZjM0N2JlNWRhZGQyMmQzYzhlZmY3
YjEuLjhjMzMyMmE2M2RjZDRjM2FlNTlmNDBlZjlmOTg4YTRiZjU2OTVhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0TGFu
Z3VhZ2VzKGNvbnN0IENTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWdu
b3JlVExTRXJyb3JzKGJvb2wpOwotICAgIE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExT
RXJyb3JzKGNvbnN0IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdz
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IGNoZWNrVExTRXJyb3JzKGNvbnN0
IFVSTCYsIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBzdGF0
aWMgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKIAogICAgIHZvaWQgZ2V0SG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShIYXNoU2V0PFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA2YzNkM2E4ZGY2MDgwZWEzOWVi
NzJmNTFjYzdlYTc0MzQwYWM1YzY3Li4yMzc4ZGM4MWVlODcyZjg1NGI5MzIzMDg4NmE1ZTNjMWZm
N2NiZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB1aW50NjRfdCBTUUxpdGVGaWxlU3lzdGVt
OjpkYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFi
YXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdh
bGxUaW1lPiBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKQogewogICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlQ3JlYXRpb25UaW1l
KGZpbGVOYW1lKTsKIH0KIAotT3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRh
dGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQorc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVN
b2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmluZGV4IGVhMmYxNjk5MzBkNTRmM2RiYTk5MDdkODhm
MmJjY2Y3NjNjZGJiYzYuLmM2OGQ5YzdlN2FmOTg5NzZhMWVkM2RjYjZmMmFjZmU0YjZjZjVjMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaApA
QCAtOTAsOCArOTAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNl
Q3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBPcHRpb25hbDxXYWxsVGltZT4gZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGF0
YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCiBwcml2YXRl
OgogICAgIC8vIGRvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwCmluZGV4IDY1NWRmNTYyMmUxYzMw
NTJkYzUxY2U4ZDFiYzc1OTViN2E0NDRmZTMuLjExNTI2N2Y5NGY2YWNlNTMxZjcwODk3MDcwMzY4
NGRkZGU3N2Y0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5j
b2RpbmdUYWJsZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2Rp
bmdUYWJsZXMuY3BwCkBAIC03MDc0LDcgKzcwNzQsNyBAQCBjb25zdCBzdGQ6OmFycmF5PHN0ZDo6
cGFpcjx1aW50MTZfdCwgVUNoYXI+LCAxNzA0OD4mIGV1Y0tSKCkKICAgICAgICAgVUVycm9yQ29k
ZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICAgICAgYXV0byBpY3VDb252ZXJ0ZXIgPSBJQ1VD
b252ZXJ0ZXJQdHIgeyB1Y252X29wZW4oIndpbmRvd3MtOTQ5IiwgJmVycm9yKSB9OwogICAgICAg
ICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7Ci0gICAgICAgIGF1dG8gZ2V0UGFpciA9IFtpY3VD
b252ZXJ0ZXIgPSBXVEZNb3ZlKGljdUNvbnZlcnRlcildICh1aW50MTZfdCBwb2ludGVyKSAtPiBP
cHRpb25hbDxzdGQ6OnBhaXI8dWludDE2X3QsIFVDaGFyPj4geworICAgICAgICBhdXRvIGdldFBh
aXIgPSBbaWN1Q29udmVydGVyID0gV1RGTW92ZShpY3VDb252ZXJ0ZXIpXSAodWludDE2X3QgcG9p
bnRlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDE2X3QsIFVDaGFyPj4gewogICAg
ICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyPiBpY3VJbnB1dCB7IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHBvaW50ZXIgLyAxOTB1ICsgMHg4MSksIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHBvaW50
ZXIgJSAxOTB1ICsgMHg0MSkgfTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaWN1SW5wdXQuZGF0YSgpKTsKICAgICAgICAgICAg
IFVDaGFyIGljdU91dHB1dFsyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvRW5jb2RpbmdUYWJsZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5j
b2RpbmdUYWJsZXMuaAppbmRleCBlNWJkNTIyZjhhNjhkY2VmOGViZGY0ODk2ZTliMTI2NzA3NmIx
ZTA3Li5kN2FiNjg3ZDRmYWFlNTkzYjJhMDQ0NzNhMDQ5NzQwOWFkMjFjODk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5oCkBAIC00OCw3ICs0OCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIHNvcnRCeUZpcnN0KENv
bGxlY3Rpb25UeXBlJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBz
dGFibGVTb3J0QnlGaXJzdChDb2xsZWN0aW9uVHlwZSYpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ29s
bGVjdGlvblR5cGU+IGJvb2wgaXNTb3J0ZWRCeUZpcnN0KGNvbnN0IENvbGxlY3Rpb25UeXBlJik7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gYm9vbCBzb3J0ZWRGaXJzdHNBcmVV
bmlxdWUoY29uc3QgQ29sbGVjdGlvblR5cGUmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rp
b25UeXBlLCB0eXBlbmFtZSBLZXlUeXBlPiBzdGF0aWMgYXV0byBmaW5kRmlyc3RJblNvcnRlZFBh
aXJzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBjb25zdCBLZXlUeXBlJikgLT4g
T3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKS0+c2Vjb25kKT47Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1
dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWlycyhjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlv
biwgY29uc3QgS2V5VHlwZSYpIC0+IHN0ZDo6b3B0aW9uYWw8ZGVjbHR5cGUoc3RkOjpiZWdpbihj
b2xsZWN0aW9uKS0+c2Vjb25kKT47CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwg
dHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmluZEluU29ydGVkUGFpcnMoY29uc3QgQ29s
bGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNvbnN0IEtleVR5cGUmKSAtPiBzdGQ6OnBhaXI8ZGVj
bHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9uKSksIGRlY2x0eXBlKHN0ZDo6YmVnaW4oY29sbGVj
dGlvbikpPjsKIAogI2lmICFBU1NFUlRfRU5BQkxFRApAQCAtMTEyLDcgKzExMiw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiBib29sIHNvcnRlZEZpcnN0c0FyZVVuaXF1ZShj
b25zdCBDb2xsZWN0aW9uVHlwCiAgICAgcmV0dXJuIHN0ZDo6YWRqYWNlbnRfZmluZChzdGQ6OmJl
Z2luKGNvbGxlY3Rpb24pLCBzdGQ6OmVuZChjb2xsZWN0aW9uKSwgRXF1YWxGaXJzdCB7IH0pID09
IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
VHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmluZEZpcnN0SW5Tb3J0ZWRQYWly
cyhjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgY29uc3QgS2V5VHlwZSYga2V5KSAt
PiBPcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJlZ2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgordGVt
cGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGUsIHR5cGVuYW1lIEtleVR5cGU+IHN0YXRpYyBh
dXRvIGZpbmRGaXJzdEluU29ydGVkUGFpcnMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rp
b24sIGNvbnN0IEtleVR5cGUmIGtleSkgLT4gc3RkOjpvcHRpb25hbDxkZWNsdHlwZShzdGQ6OmJl
Z2luKGNvbGxlY3Rpb24pLT5zZWNvbmQpPgogewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19p
bnRlZ3JhbF92PEtleVR5cGU+KSB7CiAgICAgICAgIGlmIChrZXkgIT0gZGVjbHR5cGUoc3RkOjpi
ZWdpbihjb2xsZWN0aW9uKS0+Zmlyc3QpKGtleSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCA0ZjZjM2U3OTMwODI4ZTE2NmY1Y2E3Yzg5NmFmNDg2
YTY4ZjM2MmM0Li44ZjZjOGMwOWY5NzFkNTNmNDJmOGNjYWUzMTI4MGMxNzNmZjk0ZDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTg4LDcgKzg4
LDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdERhdGEgewogICAgIGZyaWVuZCBjbGFzcyBT
cGVsbENoZWNrUmVxdWVzdDsgLy8gRm9yIGFjY2VzcyB0byBtX2lkZW50aWZpZXIuCiBwdWJsaWM6
CiAgICAgVGV4dENoZWNraW5nUmVxdWVzdERhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dENoZWNr
aW5nUmVxdWVzdERhdGEoT3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZpZXI+IGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQorICAg
IFRleHRDaGVja2luZ1JlcXVlc3REYXRhKHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVz
dElkZW50aWZpZXI+IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uU2V0PFRl
eHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMsIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlKQogICAgICAgICA6IG1fdGV4dCB7IHRleHQgfQogICAgICAgICAsIG1faWRlbnRp
ZmllciB7IGlkZW50aWZpZXIgfQogICAgICAgICAsIG1fcHJvY2Vzc1R5cGUgeyBwcm9jZXNzVHlw
ZSB9CkBAIC05NiwxNCArOTYsMTQgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxUZXh0Q2hlY2tpbmdSZXF1ZXN0SWRlbnRpZmllcj4gaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nUmVx
dWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAg
ICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hlY2tpbmdUeXBlczsgfQogICAgIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzVHlwZTsgfQogCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX3RleHQ7Ci0gICAgT3B0aW9uYWw8VGV4dENoZWNraW5nUmVxdWVzdElkZW50aWZp
ZXI+IG1faWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVlc3RJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiAgICAgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgbV9w
cm9jZXNzVHlwZSB7IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCB9OwogICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiBtX2NoZWNraW5nVHlwZXM7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwCmluZGV4IDIxMTdlMWE0YjkwNTIz
MzFjZGNkNjQxMjI0ZTc2MzUwYjJlOWVkMTkuLmZmOWY4ZWNiM2E3YjcxNDE3YmNjNzY2OTlmZWFm
YjUyMWQwNGMxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjQ0pLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0NKSy5jcHAKQEAgLTIxOSwxMiArMjE5LDEyIEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmRlY29k
ZUNvbW1vbihjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzCiAg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNoYXI+
IGNvZGVQb2ludEpJUzAyMDgodWludDE2X3QgcG9pbnRlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFVDaGFyPiBjb2RlUG9pbnRKSVMwMjA4KHVpbnQxNl90IHBvaW50ZXIpCiB7CiAgICAgcmV0dXJu
IGZpbmRGaXJzdEluU29ydGVkUGFpcnMoamlzMDIwOCgpLCBwb2ludGVyKTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPFVDaGFyPiBjb2RlUG9pbnRKSVMwMjEyKHVpbnQxNl90IHBvaW50ZXIpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxVQ2hhcj4gY29kZVBvaW50SklTMDIxMih1aW50MTZfdCBwb2ludGVy
KQogewogICAgIHJldHVybiBmaW5kRmlyc3RJblNvcnRlZFBhaXJzKGppczAyMTIoKSwgcG9pbnRl
cik7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6aXNvMjAyMkpQ
RGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGYKICAgICAg
ICAgICAgIHJldHVybiBTYXdFcnJvcjo6WWVzOwogICAgICAgICBjYXNlIElTTzIwMjJKUERlY29k
ZXJTdGF0ZTo6RXNjYXBlOiB7CiAgICAgICAgICAgICB1aW50OF90IGxlYWQgPSBzdGQ6OmV4Y2hh
bmdlKG1fbGVhZCwgMHgwMCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxJU08yMDIySlBEZWNvZGVy
U3RhdGU+IHN0YXRlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJU08yMDIySlBEZWNvZGVy
U3RhdGU+IHN0YXRlOwogICAgICAgICAgICAgaWYgKGxlYWQgPT0gMHgyOCkgewogICAgICAgICAg
ICAgICAgIGlmIChieXRlID09IDB4NDIpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gSVNP
MjAyMkpQRGVjb2RlclN0YXRlOjpBU0NJSTsKQEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTxzdGQ6OnBhaXI8dWludDMyX3QsIFVDaGFyMzI+LCAyMDc+JiBnYjE4MDMw
UmFuZ2VzKCkKIH0KIAogLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI2luZGV4
LWdiMTgwMzAtcmFuZ2VzLWNvZGUtcG9pbnQKLXN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBnYjE4
MDMwUmFuZ2VzQ29kZVBvaW50KHVpbnQzMl90IHBvaW50ZXIpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29kZVBvaW50KHVpbnQzMl90IHBvaW50ZXIpCiB7CiAg
ICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYgcG9pbnRlciA8IDE4OTAwMCkgfHwgcG9pbnRlciA+
IDEyMzc1NzUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuaAppbmRleCBiZmJlYzVhMDI0NTlmN2Q5N2NkMGM1
ZTQ4NzM1ZDgyZjY3NWUzMTY5Li44YjcwNjZhZjUzYTA3NGI2MTViODI5NjYwZWZhZDNhMmZkYzQ4
MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NK
Sy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmgKQEAg
LTYxLDE0ICs2MSwxNCBAQCBwcml2YXRlOgogICAgIElTTzIwMjJKUERlY29kZXJTdGF0ZSBtX2lz
bzIwMjJKUERlY29kZXJTdGF0ZSB7IElTTzIwMjJKUERlY29kZXJTdGF0ZTo6QVNDSUkgfTsKICAg
ICBJU08yMDIySlBEZWNvZGVyU3RhdGUgbV9pc28yMDIySlBEZWNvZGVyT3V0cHV0U3RhdGUgeyBJ
U08yMDIySlBEZWNvZGVyU3RhdGU6OkFTQ0lJIH07CiAgICAgYm9vbCBtX2lzbzIwMjJKUE91dHB1
dCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQcmVw
ZW5kZWRCeXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbV9pc28yMDIySlBTZWNvbmRQ
cmVwZW5kZWRCeXRlOwogCiAgICAgdWludDhfdCBtX2diMTgwMzBGaXJzdCB7IDB4MDAgfTsKICAg
ICB1aW50OF90IG1fZ2IxODAzMFNlY29uZCB7IDB4MDAgfTsKICAgICB1aW50OF90IG1fZ2IxODAz
MFRoaXJkIHsgMHgwMCB9OwogCiAgICAgdWludDhfdCBtX2xlYWQgeyAweDAwIH07Ci0gICAgT3B0
aW9uYWw8dWludDhfdD4gbV9wcmVwZW5kZWRCeXRlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhf
dD4gbV9wcmVwZW5kZWRCeXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5oCmluZGV4IGQ4Y2QxZTY2
M2MwM2IwYmU4ZDkzMDgyMTg3OGEzYjkwMjA5NDI0NzkuLjkwODc3ZmIyNWQ3ZWFkNDE2ZGEzYzc3
OGM5ZGI0MjAwMGM2NzY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGMTYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmgKQEAgLTQzLDggKzQzLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWlu
dDhfdD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcpIGNvbnN0IGZpbmFs
OwogCiAgICAgYm9vbCBtX2xpdHRsZUVuZGlhbjsKLSAgICBPcHRpb25hbDx1aW50OF90PiBtX2xl
YWRCeXRlOwotICAgIE9wdGlvbmFsPFVDaGFyPiBtX2xlYWRTdXJyb2dhdGU7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50OF90PiBtX2xlYWRCeXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+IG1f
bGVhZFN1cnJvZ2F0ZTsKICAgICBib29sIG1fc2hvdWxkU3RyaXBCeXRlT3JkZXJNYXJrIHsgZmFs
c2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4
IDgxZDIyZjJkMzA1YmQ4ZWNiNGEwOTA2YTMxZTBhZGYyYjE3MTNlYjQuLjI5YWJhYmE0MTIwZmY1
ZmZlYTNmN2U0NzAyNzRhYzUyYzU1N2Q1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RmxhZ3MuaApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPEZvbnRWYXJpYW50U2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4g
ZGVjb2RlKERlY29kZXImKTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHdvdWxkIGJlIG11Y2ggbW9y
ZSBjb21wYWN0IHdpdGggYml0ZmllbGRzLgogICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1v
bkxpZ2F0dXJlczsKQEAgLTMwOSw3OSArMzA5LDc5IEBAIHZvaWQgRm9udFZhcmlhbnRTZXR0aW5n
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudFNldHRpbmdzPiBGb250VmFyaWFudFNldHRpbmdz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0
aW5ncz4gRm9udFZhcmlhbnRTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBjb21tb25MaWdhdHVyZXM7CiAgICAg
ZGVjb2RlciA+PiBjb21tb25MaWdhdHVyZXM7CiAgICAgaWYgKCFjb21tb25MaWdhdHVyZXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4g
ZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAoIWRpc2NyZXRpb25hcnlMaWdhdHVyZXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFu
dExpZ2F0dXJlcz4gaGlzdG9yaWNhbExpZ2F0dXJlczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRW
YXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlz
dG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIWhpc3RvcmljYWxMaWdhdHVyZXMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJl
cz4gY29udGV4dHVhbEFsdGVybmF0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFs
QWx0ZXJuYXRlczsKICAgICBpZiAoIWNvbnRleHR1YWxBbHRlcm5hdGVzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRQb3NpdGlvbj4gcG9z
aXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiBwb3NpdGlvbjsK
ICAgICBkZWNvZGVyID4+IHBvc2l0aW9uOwogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudENhcHM+IGNhcHM7
CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudENhcHM+IGNhcHM7CiAgICAgZGVjb2RlciA+
PiBjYXBzOwogICAgIGlmICghY2FwcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gbnVtZXJpY0ZpZ3VyZTsK
ICAgICBkZWNvZGVyID4+IG51bWVyaWNGaWd1cmU7CiAgICAgaWYgKCFudW1lcmljRmlndXJlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRO
dW1lcmljU3BhY2luZz4gbnVtZXJpY1NwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFy
aWFudE51bWVyaWNTcGFjaW5nPiBudW1lcmljU3BhY2luZzsKICAgICBkZWNvZGVyID4+IG51bWVy
aWNTcGFjaW5nOwogICAgIGlmICghbnVtZXJpY1NwYWNpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gbnVt
ZXJpY0ZyYWN0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRnJhY3Rp
b24+IG51bWVyaWNGcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IG51bWVyaWNGcmFjdGlvbjsKICAg
ICBpZiAoIW51bWVyaWNGcmFjdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw+IG51bWVyaWNPcmRpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4gbnVtZXJpY09yZGlu
YWw7CiAgICAgZGVjb2RlciA+PiBudW1lcmljT3JkaW5hbDsKICAgICBpZiAoIW51bWVyaWNPcmRp
bmFsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZh
cmlhbnROdW1lcmljU2xhc2hlZFplcm8+IG51bWVyaWNTbGFzaGVkWmVybzsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvPiBudW1lcmljU2xhc2hlZFplcm87
CiAgICAgZGVjb2RlciA+PiBudW1lcmljU2xhc2hlZFplcm87CiAgICAgaWYgKCFudW1lcmljU2xh
c2hlZFplcm8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxG
b250VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVybmF0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxGb250
VmFyaWFudEFsdGVybmF0ZXM+IGFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBhbHRlcm5hdGVz
OwogICAgIGlmICghYWx0ZXJuYXRlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gZWFzdEFzaWFuVmFyaWFu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudD4gZWFzdEFz
aWFuVmFyaWFudDsKICAgICBkZWNvZGVyID4+IGVhc3RBc2lhblZhcmlhbnQ7CiAgICAgaWYgKCFl
YXN0QXNpYW5WYXJpYW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gZWFzdEFzaWFuV2lkdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiBlYXN0QXNpYW5XaWR0aDsKICAg
ICBkZWNvZGVyID4+IGVhc3RBc2lhbldpZHRoOwogICAgIGlmICghZWFzdEFzaWFuV2lkdGgpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudEVh
c3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1Ynk7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFu
dEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1Ynk7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNpYW5S
dWJ5OwogICAgIGlmICghZWFzdEFzaWFuUnVieSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTQxOSw3ICs0MTksNyBAQCBzdHJ1Y3QgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVy
ZXNWYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBj
b21tb25MaWdhdHVyZXM7CiAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxp
Z2F0dXJlczsKQEAgLTQzNywyNCArNDM3LDI0IEBAIHZvaWQgRm9udFZhcmlhbnRMaWdhdHVyZXNW
YWx1ZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZvbnRWYXJp
YW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRM
aWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGNvbW1vbkxpZ2F0dXJl
czsKICAgICBpZiAoIWNvbW1vbkxpZ2F0dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGln
YXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRp
b25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwog
ICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGln
YXR1cmVzOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGhpc3Rvcmlj
YWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGlm
ICghaGlzdG9yaWNhbExpZ2F0dXJlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJuYXRlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBjb250ZXh0dWFsQWx0ZXJu
YXRlczsKICAgICBkZWNvZGVyID4+IGNvbnRleHR1YWxBbHRlcm5hdGVzOwogICAgIGlmICghY29u
dGV4dHVhbEFsdGVybmF0ZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00Nzgs
NyArNDc4LDcgQEAgc3RydWN0IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxGb250VmFyaWFudE51
bWVyaWNWYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzPiBkZWNvZGUo
RGVjb2RlciYpOwogCiAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZTsKICAgICBG
b250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7CkBAIC00OTgsMjkgKzQ5OCwyOSBAQCB2
b2lkIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxGb250VmFyaWFudE51
bWVyaWNWYWx1ZXM+IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcz4gRm9udFZhcmlh
bnROdW1lcmljVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+IGZpZ3VyZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZv
bnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gZmlndXJlOwogICAgIGRlY29kZXIgPj4gZmlndXJlOwog
ICAgIGlmICghZmlndXJlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gc3BhY2luZzsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc+IHNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBz
cGFjaW5nOwogICAgIGlmICghc3BhY2luZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKICAg
ICBkZWNvZGVyID4+IGZyYWN0aW9uOwogICAgIGlmICghZnJhY3Rpb24pCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFs
PiBvcmRpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4g
b3JkaW5hbDsKICAgICBkZWNvZGVyID4+IG9yZGluYWw7CiAgICAgaWYgKCFvcmRpbmFsKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1l
cmljU2xhc2hlZFplcm8+IHNsYXNoZWRaZXJvOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlh
bnROdW1lcmljU2xhc2hlZFplcm8+IHNsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4gc2xhc2hl
ZFplcm87CiAgICAgaWYgKCFzbGFzaGVkWmVybykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdHJ1Y3QgRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXMg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
Rm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNp
YW5WYWx1ZXM+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBGb250VmFyaWFudEVhc3RBc2lhblZh
cmlhbnQgdmFyaWFudDsKICAgICBGb250VmFyaWFudEVhc3RBc2lhbldpZHRoIHdpZHRoOwpAQCAt
NTU2LDE5ICs1NTYsMTkgQEAgdm9pZCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1P
cHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcz4gRm9udFZhcmlhbnRFYXN0QXNpYW5W
YWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGb250VmFyaWFu
dEVhc3RBc2lhblZhbHVlcz4gRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFu
dD4gdmFyaWFudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFu
dD4gdmFyaWFudDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnQ7CiAgICAgaWYgKCF2YXJpYW50KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRF
YXN0QXNpYW5XaWR0aD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RB
c2lhbldpZHRoPiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxGb250VmFyaWFu
dEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CisgICAgc3RkOjpvcHRpb25hbDxGb250VmFyaWFudEVhc3RB
c2lhblJ1Ynk+IHJ1Ynk7CiAgICAgZGVjb2RlciA+PiBydWJ5OwogICAgIGlmICghcnVieSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0RhdGFXaW4uY3BwCmluZGV4IDllMjg3ODNlNmUxYWMxMzU5NzBiMDZkNDIwZjVlYzY0YTZi
OTlmYTEuLjU3OWExMTI1NzlhZjM5ZmMxMmVmMDI0OTc5ZDgxZmM1NWFmMzZjMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDAsNyArNDAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFn
RGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+IGZsYWdzLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdE
YXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MsIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xp
ZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAg
ICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggOWNkYTM0OTJiNjk2NTY4MjhkNjFlNTYzODRlYzE2NWI2
ZDE5ZWM2Yy4uYzU1YTljYTFkYjc3MDY5NmY0ZDJlMDVkMDM2MDhlNWY2OWNlYzVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjQ2LDcg
KzI0Niw3IEBAIHN0YXRpYyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxT
dHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmCiAgICAgICAgIHJlc3VsdHMuYWRkKCJ0
ZXh0L3BsYWluIik7CiB9CiAKLU9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJv
YXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKQorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKIHsKICAg
ICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDdXN0b21EYXRhQ2xpcGJvYXJkRm9y
bWF0KSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBj
YkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ3VzdG9tRGF0YUNsaXBib2FyZEZvcm1hdCkpIHsK
QEAgLTI2OSw3ICsyNjksNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBMaXN0SGFzaFNldDxTdHJp
bmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKIAotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21E
YXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CisgICAgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJlYWRQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSgpOwogCiAgICAgaWYgKGN1c3RvbURhdGEgJiYgY3VzdG9tRGF0YS0+b3JpZ2lu
KCkgPT0gb3JpZ2luKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHlwZSA6IGN1c3RvbURh
dGEtPm9yZGVyZWRUeXBlcygpKQpAQCAtMzE3LDcgKzMxNyw3IEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogCiBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZE9yaWdpbigpCiB7Ci0gICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+
IGN1c3RvbURhdGEgPSByZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0
b21EYXRhKCk7CiAKICAgICBpZiAoY3VzdG9tRGF0YSkKICAgICAgICAgcmV0dXJuIGN1c3RvbURh
dGEtPm9yaWdpbigpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIE9wdGlvbmFsPFBhc3Rl
Ym9hcmRDdXN0b21EYXRhPiBjdXN0b21EYXRhID0gcmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7
CisgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gY3VzdG9tRGF0YSA9IHJl
YWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwogCiAgICAgaWYgKGN1c3RvbURhdGEpCiAgICAgICAg
IHJldHVybiBjdXN0b21EYXRhLT5yZWFkU3RyaW5nSW5DdXN0b21EYXRhKHR5cGUpOwpAQCAtMzcw
LDcgKzM3MCw3IEBAIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6Zmls
ZUNvbnRlbnRTdGF0ZSgpCiAgICAgcmV0dXJuIHJlYWRlci5jb3VudCA/IEZpbGVDb250ZW50U3Rh
dGU6Ok1heUNvbnRhaW5GaWxlUGF0aHMgOiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdl
RGF0YTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiBy
ZWFkZXIsIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewogI2lmIFVTRShD
RikKICAgICBpZiAobV9kYXRhT2JqZWN0KSB7CkBAIC04MzQsNyArODM0LDcgQEAgYm9vbCBQYXN0
ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogICAgIHJldHVybiA6OklzQ2xpcGJvYXJkRm9ybWF0
QXZhaWxhYmxlKFdlYlNtYXJ0UGFzdGVGb3JtYXQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5U
ZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiB7CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVU5JQ09ERVRF
WFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBpZiAoSEFORExFIGNi
RGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShDRl9VTklDT0RFVEVYVCkpIHsKQEAgLTExMTksNyAr
MTExOSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAyZmMyMTExNTdkYTNlMWJmZTBkZjFhNWZi
MGM2MjliY2E4MDgzN2UxLi41NWY2ZDVkOWIxYTViYjEyZDMyNzMyMDdhMGZiNjMyNmFmZjFlZDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHVibGljOgogICAgIC8vIHdoZW4gdGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0ZWQgYWxs
IHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIgc2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3Bh
Y2VUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMYXllckhhbmRsZT4gY3JlYXRlTGF5
ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVy
UHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxheWVyKExheWVySGFuZGxlKSA9IDA7CiAKICAg
ICBzdHJ1Y3QgRnJhbWVEYXRhIHsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBmbG9hdCB3IHsgMS4wZiB9OwogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRRdWF0ZXJuaW9uPiBkZWNvZGUoRGVj
b2RlciYpOworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RmxvYXRRdWF0ZXJuaW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9Owog
CiAgICAgICAgIHN0cnVjdCBQb3NlIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBGbG9hdFF1YXRlcm5pb24gb3JpZW50YXRpb247CiAKICAgICAgICAgICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQb3NlPiBkZWNvZGUo
RGVjb2RlciYpOworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UG9zZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAg
ICBzdHJ1Y3QgRm92IHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBm
bG9hdCByaWdodCB7IDAuMGYgfTsKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEZvdj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvdj4g
ZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBwcm9qZWN0aW9uTWF0cml4U2l6ZSA9IDE2OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFByb2plY3Rpb24gcHJvamVjdGlvbiA9IHsgbnVsbHB0ciB9Owog
CiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8Vmlldz4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZpZXc+IGRlY29kZShEZWNvZGVyJik7CiAg
ICAgICAgIH07CiAKICAgICAgICAgc3RydWN0IFN0YWdlUGFyYW1ldGVycyB7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQ+
IGJvdW5kczsKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFN0YWdlUGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0YWdl
UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1
Y3QgTGF5ZXJEYXRhIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PExheWVyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheWVyRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKICAgICAgICAgfTsKIAogICAgICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2VCdXR0b24gewpAQCAt
MTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFhSVGFyZ2V0UmF5TW9kZSB0YXJn
ZXRSYXlNb2RlIHsgWFJUYXJnZXRSYXlNb2RlOjpHYXplIH07CiAgICAgICAgICAgICBWZWN0b3I8
U3RyaW5nPiBwcm9maWxlczsKICAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb2ludGVyT3Jp
Z2luOwotICAgICAgICAgICAgT3B0aW9uYWw8SW5wdXRTb3VyY2VQb3NlPiBncmlwT3JpZ2luOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJbnB1dFNvdXJjZVBvc2U+IGdyaXBPcmlnaW47CiAg
ICAgICAgICAgICBWZWN0b3I8SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbnM7CiAgICAgICAgICAg
ICBWZWN0b3I8ZmxvYXQ+IGF4ZXM7CiAgICAgICAgIH07CkBAIC0yMDgsNyArMjA4LDcgQEAgcHVi
bGljOgogICAgICAgICBib29sIHNob3VsZFJlbmRlciB7IGZhbHNlIH07CiAgICAgICAgIGxvbmcg
cHJlZGljdGVkRGlzcGxheVRpbWUgeyAwIH07CiAgICAgICAgIFBvc2Ugb3JpZ2luOwotICAgICAg
ICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQ
b3NlPiBmbG9vclRyYW5zZm9ybTsKICAgICAgICAgU3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1l
dGVyczsKICAgICAgICAgVmVjdG9yPFZpZXc+IHZpZXdzOwogICAgICAgICBIYXNoTWFwPExheWVy
SGFuZGxlLCBMYXllckRhdGE+IGxheWVyczsKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEZyYW1lRGF0YSBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RnJhbWVEYXRhPiBkZWNvZGUoRGVjb2RlciYp
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxG
cmFtZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclZp
ZXcgewpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVh
dGVybmlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9u
PiBEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbj4g
RGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRl
cm5pb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24ueCkpCkBAIC0z
MTUsNyArMzE1LDcgQEAgdm9pZCBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25h
bDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9z
ZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHBvc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwb3NlLnBvc2l0aW9uKSkKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIERldmljZTo6RnJhbWVE
YXRhOjpGb3Y6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkZvdj4gRGV2aWNlOjpG
cmFtZURhdGE6OkZvdjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERl
dmljZTo6RnJhbWVEYXRhOjpGb3Y+IERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZm92LnVwKSkKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIERldmlj
ZTo6RnJhbWVEYXRhOjpWaWV3OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpWaWV3
PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpWaWV3PiBEZXZpY2U6OkZyYW1lRGF0YTo6Vmll
dzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlZpZXcgdmlldzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZpZXcub2Zmc2V0
KSkKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFt
ZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz4g
RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM+IERl
dmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMg
c3RhZ2VQYXJhbWV0ZXJzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJz
LmlkKSkKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRGV2aWNlOjpG
cmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXll
ckRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5ZXJEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGF5ZXJEYXRhLm9wYXF1ZVRleHR1cmUpKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRGV2
aWNlOjpGcmFtZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE+IERldmljZTo6
RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3Bw
CmluZGV4IDU1NTEyYWNlMDAzMjA1ZTY1M2JhMTgxOWQ5YjAzNjhhNTUxZjZkYmUuLjU2ZDczOTJl
NzdiZTUxMjVjMmI0YjY0YjVhNWMwOTRmYTU3YjgyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIFhyUmVzdWx0IE9wZW5YUklucHV0U291cmNlOjpzdWdnZXN0QmluZGluZ3Mo
U3VnZ2VzdGVkQmluZGluZ3MmIGJpbmRpbmdzKSBjb25zdAogICAgIHJldHVybiBYUl9TVUNDRVNT
OwogfQogCi1PcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklu
cHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShYclNwYWNlIGxvY2FsU3BhY2UsIGNvbnN0IFhyRnJh
bWVTdGF0ZSYgZnJhbWVTdGF0ZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0SW5wdXRTb3VyY2UoWHJTcGFj
ZSBsb2NhbFNwYWNlLCBjb25zdCBYckZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpIGNvbnN0CiB7CiAg
ICAgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlIGRhdGE7CiAgICAgZGF0YS5oYW5kZW5l
c3MgPSBtX2hhbmRlbmVzczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShY
clNwYQogICAgICAgICBkYXRhLmdyaXBPcmlnaW4gPSBncmlwUG9zZTsKIAogICAgIC8vIEJ1dHRv
bnMuCi0gICAgVmVjdG9yPE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1
dHRvbj4+IGJ1dHRvbnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlQnV0dG9uPj4gYnV0dG9uczsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBv
cGVuWFJCdXR0b25UeXBlcykgCiAgICAgICAgIGJ1dHRvbnMuYXBwZW5kKGdldEJ1dHRvbih0eXBl
KSk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShYclNwYQogICAgIH0K
IAogICAgIC8vIEF4ZXMuCi0gICAgVmVjdG9yPE9wdGlvbmFsPFhyVmVjdG9yMmY+PiBheGVzOwor
ICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFhyVmVjdG9yMmY+PiBheGVzOwogICAgIGZvciAoYXV0
byYgdHlwZSA6IG9wZW5YUkF4aXNUeXBlcykgCiAgICAgICAgIGF4ZXMuYXBwZW5kKGdldEF4aXMo
dHlwZSkpOwogCkBAIC0yODksNyArMjg5LDcgQEAgWHJSZXN1bHQgT3BlblhSSW5wdXRTb3VyY2U6
OmdldFBvc2UoWHJTcGFjZSBzcGFjZSwgWHJTcGFjZSBiYXNlU3BhY2UsIGNvbnN0IFhyRnIKICAg
ICByZXR1cm4gWFJfU1VDQ0VTUzsKIH0KIAotT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlQnV0dG9uPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1dHRv
blR5cGUgYnV0dG9uVHlwZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW5YUkJ1
dHRvblR5cGUgYnV0dG9uVHlwZSkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9idXR0b25BY3Rp
b25zLmZpbmQoYnV0dG9uVHlwZSk7CiAgICAgaWYgKGl0ID09IG1fYnV0dG9uQWN0aW9ucy5lbmQo
KSkKQEAgLTMxMyw3ICszMTMsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRT
b3VyY2VCdXR0b24+IE9wZW5YUklucHV0U291cmNlOjpnZXRCdXR0b24oT3BlbgogICAgIHJldHVy
biBoYXNWYWx1ZSA/ICBzdGQ6Om1ha2Vfb3B0aW9uYWwocmVzdWx0KSA6IHN0ZDo6bnVsbG9wdDsK
IH0KIAotT3B0aW9uYWw8WHJWZWN0b3IyZj4gT3BlblhSSW5wdXRTb3VyY2U6OmdldEF4aXMoT3Bl
blhSQXhpc1R5cGUgYXhpc1R5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFhyVmVjdG9yMmY+IE9w
ZW5YUklucHV0U291cmNlOjpnZXRBeGlzKE9wZW5YUkF4aXNUeXBlIGF4aXNUeXBlKSBjb25zdAog
ewogICAgIGF1dG8gaXQgPSBtX2F4aXNBY3Rpb25zLmZpbmQoYXhpc1R5cGUpOwogICAgIGlmIChp
dCA9PSBtX2F4aXNBY3Rpb25zLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuaAppbmRleCAxYmRjMWJiY2YzOGExY2Mx
M2EyZjJhZTU4ODE0MjhlOWQ3MDUwOGJkLi43N2M3NzllZmJkOWZkZTc5ZTllMDU2ZDExYzc5N2E4
MDA1NDdhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
T3BlblhSSW5wdXRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvT3BlblhSSW5wdXRTb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgfk9w
ZW5YUklucHV0U291cmNlKCk7CiAKICAgICBYclJlc3VsdCBzdWdnZXN0QmluZGluZ3MoU3VnZ2Vz
dGVkQmluZGluZ3MmKSBjb25zdDsKLSAgICBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U+IGdldElucHV0U291cmNlKFhyU3BhY2UsIGNvbnN0IFhyRnJhbWVTdGF0ZSYpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBn
ZXRJbnB1dFNvdXJjZShYclNwYWNlLCBjb25zdCBYckZyYW1lU3RhdGUmKSBjb25zdDsKICAgICBY
ckFjdGlvblNldCBhY3Rpb25TZXQoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvblNldDsgfQogICAg
IFhyUmVzdWx0IHVwZGF0ZUludGVyYWN0aW9uUHJvZmlsZSgpOwogCkBAIC01OCw4ICs1OCw4IEBA
IHByaXZhdGU6CiAgICAgWHJSZXN1bHQgY3JlYXRlQmluZGluZyhjb25zdCBjaGFyKiBwcm9maWxl
UGF0aCwgWHJBY3Rpb24sIGNvbnN0IFN0cmluZyYgYmluZGluZ1BhdGgsIFN1Z2dlc3RlZEJpbmRp
bmdzJikgY29uc3Q7CiAKICAgICBYclJlc3VsdCBnZXRQb3NlKFhyU3BhY2UsIFhyU3BhY2UsIGNv
bnN0IFhyRnJhbWVTdGF0ZSYsIERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UmKSBj
b25zdDsKLSAgICBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+
IGdldEJ1dHRvbihPcGVuWFJCdXR0b25UeXBlKSBjb25zdDsKLSAgICBPcHRpb25hbDxYclZlY3Rv
cjJmPiBnZXRBeGlzKE9wZW5YUkF4aXNUeXBlKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbj4gZ2V0QnV0dG9uKE9wZW5YUkJ1dHRv
blR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8WHJWZWN0b3IyZj4gZ2V0QXhpcyhPcGVu
WFJBeGlzVHlwZSkgY29uc3Q7CiAgICAgWHJSZXN1bHQgZ2V0QWN0aW9uU3RhdGUoWHJBY3Rpb24s
IGJvb2wqKSBjb25zdDsKICAgICBYclJlc3VsdCBnZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgZmxv
YXQqKSBjb25zdDsKICAgICBYclJlc3VsdCBnZXRBY3Rpb25TdGF0ZShYckFjdGlvbiwgWHJWZWN0
b3IyZiopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUkxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJMYXllci5jcHAKaW5kZXggYWZlMzQ3M2EwZWYwZDBkNjFjZDRkZmRmYmY4NDc1ZGJkZTNm
NWJkZi4uODk2NzExYzBhY2MyM2E5NWVlYTAyYmE1YjI4MDg4NzVkM2RmMzQzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIE9wZW5YUkxheWVyUHJvamVjdGlvbjo6T3BlblhSTGF5ZXJQcm9qZWN0aW9u
KFVuaXF1ZVJlZjxPcGVuWFJTd2FwY2hhaW4+JiYgc3dhcGNoCiB7CiB9CiAKLU9wdGlvbmFsPERl
dmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRG
cmFtZSgpCitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IE9wZW5Y
UkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgpCiB7CiAgICAgYXV0byB0ZXh0dXJlID0gbV9z
d2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOwogICAgIGlmICghdGV4dHVyZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmgKaW5kZXggODg1ZWExZTVj
MGE0ZTUxNjM3Nzc5Yzg5NjkwOTA1ODk5ZjFmNmU5Zi4uNjJmOTExODQwNzJhODUzYTVmZTllMTBh
MzExNTAzODcyZDFjNDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL09wZW5YUkxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUkxheWVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgT3BlblhSTGF5ZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgfk9wZW5YUkxheWVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmly
dHVhbCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBzdGFydEZyYW1lKCkg
PSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJE
YXRhPiBzdGFydEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgWHJDb21wb3NpdGlvbkxheWVyQmFz
ZUhlYWRlciogZW5kRnJhbWUoY29uc3QgRGV2aWNlOjpMYXllciYsIFhyU3BhY2UsIGNvbnN0IFZl
Y3RvcjxYclZpZXc+JikgPSAwOwogCiBwcm90ZWN0ZWQ6CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgT3BlblhSTGF5ZXJQcm9qZWN0aW9uKFVuaXF1ZVJlZjxPcGVuWFJT
d2FwY2hhaW4+JiYpOwogCi0gICAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0
YT4gc3RhcnRGcmFtZSgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURh
dGE6OkxheWVyRGF0YT4gc3RhcnRGcmFtZSgpIGZpbmFsOwogICAgIFhyQ29tcG9zaXRpb25MYXll
ckJhc2VIZWFkZXIqIGVuZEZyYW1lKGNvbnN0IERldmljZTo6TGF5ZXImLCBYclNwYWNlLCBjb25z
dCBWZWN0b3I8WHJWaWV3PiYpIGZpbmFsOwogCiAgICAgVW5pcXVlUmVmPE9wZW5YUlN3YXBjaGFp
bj4gbV9zd2FwY2hhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvT3BlblhSU3dhcGNoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwCmluZGV4IGZlOWRhYzkxYWZmZTJiNjM2N2MyZmJiOTc5
NzA0MTNmNjA2NDk5OWEuLmI3MmMxNjZmNmZlOTZhNDRjOGIzODNiODU0NzQ1MzA5MzlkMWNjNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2Fw
Y2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJT
d2FwY2hhaW4uY3BwCkBAIC03Niw3ICs3Niw3IEBAIE9wZW5YUlN3YXBjaGFpbjo6fk9wZW5YUlN3
YXBjaGFpbigpCiAgICAgICAgIHhyRGVzdHJveVN3YXBjaGFpbihtX3N3YXBjaGFpbik7CiB9CiAK
LU9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IE9wZW5YUlN3YXBjaGFpbjo6YWNxdWlyZUltYWdl
KCkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1HTE9iamVjdD4gT3BlblhSU3dhcGNoYWluOjphY3F1
aXJlSW1hZ2UoKQogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9hY3F1aXJl
ZFRleHR1cmUgLCAiRXhwZWN0ZWQgbm8gYWNxdWlyZWQgaW1hZ2VzLiBSZWxlYXNlSW1hZ2Ugbm90
IGNhbGxlZD8iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUlN3YXBjaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlN3YXBjaGFpbi5oCmluZGV4IGJkOGQzMTcyZTVkMzA0YWM0NGFmYmM2ZmExN2E1M2Q2
ZDNiYzE3YTMuLjZlNTAyMDA1MzhjZDNiYmVlZTMzNWI0OGMzZjg5Njc1YmZjZTIyODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2FwY2hhaW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWlu
LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
T3BlblhSU3dhcGNoYWluPiBjcmVhdGUoWHJJbnN0YW5jZSwgWHJTZXNzaW9uLCBjb25zdCBYclN3
YXBjaGFpbkNyZWF0ZUluZm8mKTsKICAgICB+T3BlblhSU3dhcGNoYWluKCk7CiAKLSAgICBPcHRp
b25hbDxQbGF0Zm9ybUdMT2JqZWN0PiBhY3F1aXJlSW1hZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtR0xPYmplY3Q+IGFjcXVpcmVJbWFnZSgpOwogICAgIHZvaWQgcmVsZWFzZUltYWdl
KCk7CiAgICAgWHJTd2FwY2hhaW4gc3dhcGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zd2FwY2hh
aW47IH0KICAgICBpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVJbmZvLndp
ZHRoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggMDhlYjdiMDg1MzIyZTQ1YzdkODQwM2E0MDdjYjRjMDEx
YzhmYTE5Yy4uZGUxZWNlYWUwY2M2ZjgwYmUyMGVkYWU5OGI3NTViOTFhNzI4MWUzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmNwcApAQCAtMzA2LDkgKzMwNiw5IEBAIFZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVu
WFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXdz
OwogfQogCi1PcHRpb25hbDxMYXllckhhbmRsZT4gT3BlblhSRGV2aWNlOjpjcmVhdGVMYXllclBy
b2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3N0
ZDo6b3B0aW9uYWw8TGF5ZXJIYW5kbGU+IE9wZW5YUkRldmljZTo6Y3JlYXRlTGF5ZXJQcm9qZWN0
aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGJvb2wgYWxwaGEpCiB7Ci0gICAg
T3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheWVySGFu
ZGxlPiBoYW5kbGU7CiAKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIG1fcXVl
dWUuZGlzcGF0Y2goW3RoaXMsIHdpZHRoLCBoZWlnaHQsIGFscGhhLCAmaGFuZGxlLCAmc2VtYXBo
b3JlXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5kZXggY2RiNjM2NmU5MTk2MzFiYWI1NmE5YThlNWFj
NjU5ZWExMWU5OGE1YS4uM2JmN2YwOGQ2NmQ2OWVmYjk1NzhmMTliNzBiN2QxZjU4NTdmZDlkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzdWJtaXRGcmFtZShW
ZWN0b3I8RGV2aWNlOjpMYXllcj4mJikgZmluYWw7CiAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3
cyhTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGF5ZXJIYW5kbGU+IGNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29s
IGFscGhhKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheWVySGFuZGxlPiBjcmVhdGVMYXll
clByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkg
ZmluYWw7CiAgICAgdm9pZCBkZWxldGVMYXllcihMYXllckhhbmRsZSkgZmluYWw7CiAKICAgICAv
LyBDdXN0b20gbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCBkY2Iw
ZTUzYzI3Mzc5MGY2MTMyZmFhNzJjNGQ2YjY3ZmY5NTI4N2NjLi5iN2YzOTllMTkyODhiODAzZDA5
MjQ3NzQzZDQ1NjRkN2QyNWRjNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApA
QCAtODksNyArODksNyBAQCBzdHJ1Y3QgU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllciB7CiAgICAg
U3RyaW5nIHBsdWdpbklkZW50aWZpZXI7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIC8vIEZJWE1F
OiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKQEAgLTEyMCwxMSArMTIw
LDExIEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIFZlY3Rv
cjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX3N1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXJzOwogCiAgICAgc3RydWN0IENhY2hlZFZpc2libGVQbHVnaW5zIHsKICAg
ICAgICAgVVJMIHBhZ2VVUkw7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxQbHVnaW5JbmZvPj4g
cGx1Z2luTGlzdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGx1Z2luSW5mbz4+IHBs
dWdpbkxpc3Q7CiAgICAgfTsKICAgICBtdXRhYmxlIENhY2hlZFZpc2libGVQbHVnaW5zIG1fY2Fj
aGVkVmlzaWJsZVBsdWdpbnM7CiB9OwpAQCAtMTM2LDE0ICsxMzYsMTQgQEAgaW5saW5lIGJvb2wg
aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgVmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
JiBwbHVnaW5JZGUKICAgICB9KSAhPSBub3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIE9wdGlvbmFsPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+IFN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4gU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtYXRjaGluZ0RvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbWF0Y2hpbmdEb21haW47CiAgICAgZGVjb2RlciA+PiBtYXRjaGluZ0RvbWFpbjsK
ICAgICBpZiAoIW1hdGNoaW5nRG9tYWluKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcGx1Z2luSWRlbnRp
ZmllcjsKICAgICBpZiAoIXBsdWdpbklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRl
eCAyNTZlMTUyYmU2YTRmNGNhZDVjOTRkYWFjMWI1YzE3YzY1ZTVjZWNhLi41MGYzODhmNTNhY2Jm
MzljNDg2ZDc5YzhhNDgzNjVhZGU1NDU4Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlUGFnZShQYWdlJik7CiAgICAgdm9pZCBjbGVhclBhZ2VzUGx1Z2luRGF0YSgpOwogCi0g
ICAgdmlydHVhbCBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8
VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpID0gMDsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxT
dXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8UGx1
Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYsIGNvbnN0IFVSTCYpID0gMDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAK
aW5kZXggZDY4NmZhYzk3MDc4MGVmNzk4MjA2Y2M5MGY1NzAwM2FiZDAxM2NkZC4uM2FhZTVhODY4
NTU0ZTYyOTgwMTUwODk3NGQ0OGMyOTBiMDljY2QwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6bGF5b3V0KCkKICAgICBmbG9hdCB0b3RhbFJlbGF0aXZlID0gMDsKICAgICBp
bnQgbnVtRml4ZWQgPSAwOwogICAgIHNpemVfdCBudW1iZXJPZk5vbkVtcHR5QXV0byA9IDA7Ci0g
ICAgT3B0aW9uYWw8ZmxvYXQ+IHRvdGFsQXV0bzsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB0
b3RhbEF1dG87CiAgICAgZmxvYXQgdG90YWxGaXhlZCA9IDA7CiAgICAgZmxvYXQgdG90YWxQZXJj
ZW50ID0gMDsKICAgICBmbG9hdCBhbGxvY0F1dG8gPSAwOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZv
aWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgIGlmIChhdmFpbGFibGUgPiAwICYmIG51
bWJlck9mTm9uRW1wdHlBdXRvKSB7CiAgICAgICAgIEFTU0VSVCh0b3RhbEF1dG8pOwogICAgICAg
ICBhdmFpbGFibGUgKz0gYWxsb2NBdXRvOyAvLyB0aGlzIGdldHMgcmVkaXN0cmlidXRlZC4KLSAg
ICAgICAgYXV0byBlcXVhbFdpZHRoRm9yWmVyb0xlbmd0aENvbHVtbnMgPSBPcHRpb25hbDxmbG9h
dD4geyB9OworICAgICAgICBhdXRvIGVxdWFsV2lkdGhGb3JaZXJvTGVuZ3RoQ29sdW1ucyA9IHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsgfTsKICAgICAgICAgaWYgKCEqdG90YWxBdXRvKSB7CiAgICAg
ICAgICAgICAvLyBBbGwgY29sdW1ucyBpbiB0aGlzIHRhYmxlIGFyZSAobm9uLWVtcHR5KXplcm8g
bGVuZ3RoIHdpdGggJ3dpZHRoOiBhdXRvJy4KICAgICAgICAgICAgIGVxdWFsV2lkdGhGb3JaZXJv
TGVuZ3RoQ29sdW1ucyA9IGF2YWlsYWJsZSAvIG51bWJlck9mTm9uRW1wdHlBdXRvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKaW5kZXggYWZiNzAwNDY4OGM0MTJlNjI2NGFhZmIy
ZGUxZThjZTE0MjQ2ZDIyNC4uZjAzY2QxODE3YzU5MDI5NWNhNzg1OTRkYTA5M2NjOWZkOGUxMjE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCkBAIC05MCw3ICs5MCw3IEBA
IGlubGluZSBib29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5v
bkJyZWFraW5nU3BhY2VCZWhhdmlvciwgQ2FuVXNlU2hvcnRjdXQgY2FuVXNlU2hvcnRjdXQ+CiBp
bmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRv
ciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWs7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwog
CiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAx
ID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+
KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFzdENoYXJhY3RlcigpKTsKICAgICBDaGFyYWN0
ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBv
c2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRv
ci5sYXN0Q2hhcmFjdGVyKCkpOwpAQCAtMTk0LDExICsxOTQsMTEgQEAgaW5saW5lIHVuc2lnbmVk
IG5leHRCcmVha2FibGVQb3NpdGlvbkJyZWFrQ2hhcmFjdGVyKExhenlMaW5lQnJlYWtJdGVyYXRv
ciYgbGF6eUIKICAgICAvLyBGSVhNRTogQ2FuL1Nob3VsZCB3ZSBpbXBsZW1lbnQgdGhpcyB1c2lu
ZyBhIFNoYXJlZCBJdGVyYXRvciAocGVyZm9ybWFuY2UgaXNzdWUpCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzg3NgogICAgIE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IgaXRlcmF0b3Ioc3RyaW5nVmlldyk7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IG5leHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dCA9IHVicmtfZm9sbG93aW5nKGl0ZXJhdG9y
LCBzdGFydFBvc2l0aW9uKTsKICAgICByZXR1cm4gbmV4dC52YWx1ZV9vcihzdHJpbmdWaWV3Lmxl
bmd0aCgpKTsKIH0KIAotaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJh
dG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgT3B0aW9uYWw8
dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBjYW5Vc2VTaG9y
dGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkKK2lubGluZSBib29s
IGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVu
c2lnbmVkIHN0YXJ0UG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWth
YmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBjYW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29y
ZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkKIHsKICAgICBpZiAobmV4dEJyZWFrYWJsZSAmJiBuZXh0
QnJlYWthYmxlLnZhbHVlKCkgPj0gc3RhcnRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIHN0YXJ0
UG9zaXRpb24gPT0gbmV4dEJyZWFrYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NWYWx1ZUtleS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVl
S2V5LmgKaW5kZXggMTc2OTQ3MjJlNzE2MDEwMmI3YTAyYzIzMzFiYWY0ZDZmN2M5ODg1ZC4uNzUy
NjE3NzA4ZjE2Zjg5MjJmZDAwYWU5NzkxYjljZGFmNjAzMDlhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU1ZhbHVlS2V5LmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IENTU1ZhbHVlS2V5
IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPENTU1ZhbHVlS2V5PiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlS2V5
PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdW5zaWduZWQgY3NzVmFsdWVJRDsKICAgICBib29s
IHVzZURhcmtBcHBlYXJhbmNlOwpAQCAtNTUsMTcgKzU1LDE3IEBAIHZvaWQgQ1NTVmFsdWVLZXk6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgotT3B0aW9uYWw8Q1NTVmFsdWVLZXk+IENTU1ZhbHVlS2V5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVLZXk+IENTU1ZhbHVlS2V5OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gY3NzVmFsdWVJRDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjc3NWYWx1ZUlEOwogICAgIGRlY29kZXIgPj4g
Y3NzVmFsdWVJRDsKICAgICBpZiAoIWNzc1ZhbHVlSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gdXNlRGFya0FwcGVhcmFuY2U7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiB1c2VEYXJrQXBwZWFyYW5jZTsKICAgICBkZWNvZGVyID4+IHVzZURhcmtB
cHBlYXJhbmNlOwogICAgIGlmICghdXNlRGFya0FwcGVhcmFuY2UpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNl
TGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VM
ZXZlbDsKICAgICBkZWNvZGVyID4+IHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsOwogICAg
IGlmICghdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IGM2MmE2
Zjk3MjlmMDJkZTU5ZTM0NzE4NDEwNGQ5Nzk2YmUwYzViMWQuLjcyOThiOWE1OWY4NTM1NzQ0ZTM3
NmQ5MTk2MzE5ZThiZTdiYjkwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FdmVudFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lv
bi5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxFdmVudFJlZ2lvbj4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFdmVu
dFJlZ2lvbj4gZGVjb2RlKERlY29kZXImKTsKICAgICAvLyBGSVhNRTogUmVtb3ZlIGxlZ2FjeSBk
ZWNvZGUuCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgRXZlbnRSZWdpb24mKTsKIApAQCAtMTE1LDcgKzEx
NSw3IEBAIHByaXZhdGU6CiAgICAgUmVnaW9uIG1fbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5l
clJlZ2lvbjsKICNlbmRpZgogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgT3B0aW9u
YWw8UmVnaW9uPiBtX2VkaXRhYmxlUmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiBt
X2VkaXRhYmxlUmVnaW9uOwogI2VuZGlmCiB9OwogCkBAIC0xMzgsOSArMTM4LDkgQEAgdm9pZCBF
dmVudFJlZ2lvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlZ2lvbj4gcmVn
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8UmVnaW9uPiByZWdpb247CiAgICAgZGVjb2RlciA+PiBy
ZWdpb247CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xNDksMTQgKzE0OSwxNCBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGV2ZW50UmVnaW9uLm1fcmVnaW9uID0gV1RGTW92
ZSgqcmVnaW9uKTsKIAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlv
bmFsPFJlZ2lvbj4gd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVnaW9uPiB3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgZGVjb2RlciA+PiB3aGVlbEV2
ZW50TGlzdGVuZXJSZWdpb247CiAgICAgaWYgKCF3aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBldmVudFJlZ2lvbi5tX3doZWVsRXZl
bnRMaXN0ZW5lclJlZ2lvbiA9IFdURk1vdmUoKndoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CiAK
LSAgICBPcHRpb25hbDxSZWdpb24+IG5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb247
CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+IG5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJS
ZWdpb247CiAgICAgZGVjb2RlciA+PiBub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9u
OwogICAgIGlmICghbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2NSw3ICsxNjUsNyBAQCBPcHRpb25hbDxFdmVudFJl
Z2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMpCi0gICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lv
bj4+IHRvdWNoQWN0aW9uUmVnaW9uczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWdpb24+
PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAgZGVjb2RlciA+PiB0b3VjaEFjdGlvblJlZ2lvbnM7
CiAgICAgaWYgKCF0b3VjaEFjdGlvblJlZ2lvbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9u
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVESVRBQkxF
X1JFR0lPTikKLSAgICBPcHRpb25hbDxPcHRpb25hbDxSZWdpb24+PiBlZGl0YWJsZVJlZ2lvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UmVnaW9uPj4gZWRpdGFibGVSZWdpb247
CiAgICAgZGVjb2RlciA+PiBlZGl0YWJsZVJlZ2lvbjsKICAgICBpZiAoIWVkaXRhYmxlUmVnaW9u
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlv
bmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIEV2ZW50UmVnaW9uJiBldmVudFJlZ2lvbikKIHsKLSAgICBPcHRpb25hbDxFdmVu
dFJlZ2lvbj4gZGVjb2RlZEV2ZW50UmVnaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRSZWdp
b24+IGRlY29kZWRFdmVudFJlZ2lvbjsKICAgICBkZWNvZGVyID4+IGRlY29kZWRFdmVudFJlZ2lv
bjsKICAgICBpZiAoIWRlY29kZWRFdmVudFJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0Mjlj
MGE5MjZmNzlhZWE2MjQ1NjBjNmExZWEzYmQwZTUyOTI2Mjg0Li4zM2UxNzZlMzFiNDkxYjQ0ZDU5
NGU5ODQwMTgzYmU4MTVjNDc2M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmNwcApAQCAtMjI4LDggKzIyOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+IG1fcmVuZGVyZXI7CiAgICAgTGF5b3V0
VW5pdCBtX2JlbG93TG9naWNhbEhlaWdodDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX25l
eHRMb2dpY2FsQm90dG9tOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fbmV4dFNoYXBlTG9n
aWNhbEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fbmV4dExvZ2ljYWxC
b3R0b207CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX25leHRTaGFwZUxvZ2ljYWxC
b3R0b207CiB9OwogCiBpbmxpbmUgdm9pZCBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0
ZXI6OmNvbGxlY3RJZk5lZWRlZChjb25zdCBJbnRlcnZhbFR5cGUmIGludGVydmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDll
YzNmNTI5NWY4OGIyMWFlNjQ0Y2IwNWRkOGFkOWYxNDk1ZWMyYTYuLjRhNTYyNDI3OWU4YjQ0OTRk
MDFkOGUwZjg3YTFkMzBkZTk1MDA2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBoYXNPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmkKICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5o
YXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQu
aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAK
LU9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6
ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRM
YXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVu
Y3Rpb25zLmgKaW5kZXggM2I0MmE1Y2Y3Y2UyNjYyNjFlM2RjNzkyM2M4NGI4ZWIxM2M5Y2E5MC4u
ZDc1NzhkOWZhMzAyMzliYTZjNzZkMTE0Y2Q1NDNmMjBhMjdiNGYzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBA
IExheW91dFVuaXQgbWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uCiBib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJl
bmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmKTsKIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBm
bG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiwgY29uc3QgUmVuZGVy
Qm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKTsKLU9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbik7CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAppbmRleCAzMTQyNjUzMWUyOWE4ZWY0
OTBiMmNhMzg0ZWQ5NTU4Yzc0OGRkYmFlLi5kYTg5MTNkYmU3YmJjOTQ1YWM1YzVkYzk3NmE5MzY3
ZWE5MTFjMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEdyaWRUcmFjazo6
Z3Jvd1RlbXBTaXplKGNvbnN0IExheW91dFVuaXQmIHRlbXBTaXplKQogICAgIG1fdGVtcFNpemUg
Kz0gdGVtcFNpemU7CiB9CiAKLXZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChPcHRp
b25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKK3ZvaWQgR3JpZFRyYWNrOjpzZXRHcm93
dGhMaW1pdENhcChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQogewog
ICAgIEFTU0VSVCghZ3Jvd3RoTGltaXRDYXAgfHwgZ3Jvd3RoTGltaXRDYXAudmFsdWUoKSA+PSAw
KTsKICAgICBtX2dyb3d0aExpbWl0Q2FwID0gZ3Jvd3RoTGltaXRDYXA7CkBAIC0xMjUsNyArMTI1
LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xlYXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXIKICAgICByZXR1cm4gaGFzUmVsYXRpdmVPcklu
dHJpbnNpY1NpemVGb3JDaGlsZChjaGlsZCwgZGlyZWN0aW9uKSB8fCBoYXNSZWxhdGl2ZU1hcmdp
bk9yUGFkZGluZ0ZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBz
ZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlv
dXRVbml0PiBzaXplKQorc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQogewogICAgIGlm
IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc2l6ZSk7CkBAIC0xMzUsNyArMTM1LDcg
QEAgc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3IKIAogLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
IHByaXZhdGUuCiAKLXZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXRGcmVlU3BhY2Uo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
ZnJlZVNwYWNlKQordm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNldEZyZWVTcGFjZShH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGZyZWVTcGFjZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAg
ICAgIG1fZnJlZVNwYWNlQ29sdW1ucyA9IGZyZWVTcGFjZTsKQEAgLTE0MywxMyArMTQzLDEzIEBA
IHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAgbV9mcmVlU3BhY2VSb3dzID0gZnJlZVNw
YWNlOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmF2YWlsYWJsZVNwYWNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjphdmFpbGFibGVTcGFjZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHdhc1NldHVwKCkpOwogICAgIHJldHVybiBhdmFpbGFibGVTcGFjZShtX2RpcmVjdGlvbik7CiB9
CiAKLXZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXRBdmFpbGFibGVTcGFjZShHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXRBdmFpbGFibGVT
cGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29s
dW1ucykKICAgICAgICAgbV9hdmFpbGFibGVTcGFjZUNvbHVtbnMgPSBhdmFpbGFibGVTcGFjZTsK
QEAgLTU1MSwxMiArNTUxLDEyIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpkaXN0
cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrCiAgICAgICAgIHRy
YWNrLT5zZXRQbGFubmVkU2l6ZSh0cmFjay0+cGxhbm5lZFNpemUoKSA9PSBpbmZpbml0eSA/IHRy
YWNrLT50ZW1wU2l6ZSgpIDogc3RkOjptYXgodHJhY2stPnBsYW5uZWRTaXplKCksIHRyYWNrLT50
ZW1wU2l6ZSgpKSk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRH
cmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewogICAgIGNvbnN0IEdyaWRTcGFuJiBz
cGFuID0gbV9ncmlkLmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0aW9uKTsKICAgICBMYXlvdXRV
bml0IGdyaWRBcmVhU2l6ZTsKICAgICBib29sIGdyaWRBcmVhSXNJbmRlZmluaXRlID0gZmFsc2U7
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSA9IGF2YWlsYWJsZVNwYWNl
KGRpcmVjdGlvbik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXpl
ID0gYXZhaWxhYmxlU3BhY2UoZGlyZWN0aW9uKTsKICAgICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlv
biA6IHNwYW4pIHsKICAgICAgICAgLy8gV2UgbWF5IG5lZWQgdG8gZXN0aW1hdGUgdGhlIGdyaWQg
YXJlYSBzaXplIGJlZm9yZSBydW5uaW5nIHRoZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtIGluIG9y
ZGVyIHRvIHBlcmZvcm0gdGhlIHByZS1sYXlvdXQgb2Ygb3J0aG9nb25hbCBpdGVtcy4KICAgICAg
ICAgLy8gV2UgY2Fubm90IHVzZSB0cmFja3MoZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9uXS5jYWNo
ZWRUcmFja1NpemUoKSBiZWNhdXNlIHRyYWNrcyhkaXJlY3Rpb24pIGlzIGVtcHR5LCBzaW5jZSB3
ZSBhcmUgZWl0aGVyIHBlcmZvcm1pbmcgcHJlLWxheW91dApAQCAtNTc3LDcgKzU3Nyw3IEBAIE9w
dGlvbmFsPExheW91dFVuaXQ+IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3Jp
ZEFyZWFCcmVhZHRoRm9yQ2hpbGQoCiAgICAgcmV0dXJuIGdyaWRBcmVhU2l6ZTsKIH0KIAotT3B0
aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpncmlkQXJlYUJyZWFk
dGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG06OmdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAg
Ym9vbCBhZGRDb250ZW50QWxpZ25tZW50T2Zmc2V0ID0KICAgICAgICAgZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgJiYgKG1fc2l6aW5nU3RhdGUgPT0gUm93U2l6aW5nRmlyc3RJdGVyYXRpb24gfHwg
bV9zaXppbmdTdGF0ZSA9PSBSb3dTaXppbmdFeHRyYUl0ZXJhdGlvbkZvclNpemVDb250YWlubWVu
dCk7CkBAIC04MjYsNyArODI2LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG1TdHJhdGVneTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAgICAgICAg
cmV0dXJuIG1pblNpemU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3JpZEFy
ZWFTaXplID0gbV9hbGdvcml0aG0uZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY2hpbGQsIGNoaWxk
SW5saW5lRGlyZWN0aW9uKTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyaWRBcmVh
U2l6ZSA9IG1fYWxnb3JpdGhtLmdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNoaWxkLCBjaGlsZElu
bGluZURpcmVjdGlvbik7CiAgICAgcmV0dXJuIG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQs
IGNoaWxkTWluU2l6ZSwgZ3JpZEFyZWFTaXplKSArIGJhc2VsaW5lU2hpbTsKIH0KIApAQCAtODk4
LDcgKzg5OCw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb3B5QmFzZWxpbmVJ
dGVtc0NhY2hlKGNvbnN0IEdyaWRUcmFja1NpemluZ0FsZ29yCiAgICAgICAgIG1fcm93QmFzZWxp
bmVJdGVtc01hcCA9IHNvdXJjZS5tX3Jvd0Jhc2VsaW5lSXRlbXNNYXA7CiB9CiAKLWJvb2wgR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6OnVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlU2l6ZSkg
Y29uc3QKK2Jvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6OnVwZGF0ZU92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQs
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3ZlcnJpZGVTaXplKSBjb25zdAogewogICAgIGlmICghb3ZlcnJpZGVTaXplKQogICAg
ICAgICBvdmVycmlkZVNpemUgPSBtX2FsZ29yaXRobS5ncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChj
aGlsZCwgZGlyZWN0aW9uKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobVN0cmF0ZWd5Ojp1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpegogICAgIHJldHVybiB0cnVlOwogfQogCi1MYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQs
IGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVTaXplKSBjb25zdAorTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVn
eTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgm
IGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBj
b25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlv
biA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5k
ZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVj
dGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0aW9uOwpAQCAtOTI4LDggKzkyOCw4IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0
aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFs
PExheW91dFVuaXQ+JiBmcmVlU3BhY2UpIG92ZXJyaWRlOwotICAgIGRvdWJsZSBmaW5kVXNlZEZs
ZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+
Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiYgZnJlZVNwYWNlKSBvdmVycmlkZTsKKyAgICBk
b3VibGUgZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaXpl
ZFRyYWNrc0luZGV4LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlY29tcHV0ZVVz
ZWRGbGV4RnJhY3Rpb25JZk5lZWRlZChkb3VibGUmIGZsZXhGcmFjdGlvbiwgTGF5b3V0VW5pdCYg
dG90YWxHcm93dGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgZnJlZVNwYWNlRm9y
U3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0NvbXB1
dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNob3VsZEFwcGx5
U2l6ZUNvbnRhaW5tZW50KCpyZW5kZXJHcmlkKCkpOyB9CkBAIC05NDIsNyArOTQyLDcgQEAgdm9p
ZCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpsYXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRh
dGlvbihSZW5kZXJCb3gmIGNoaWwKICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwogfQogCi12
b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJh
Y2s+JiB0cmFja3MsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lkIEluZGVm
aW5pdGVTaXplU3RyYXRlZ3k6Om1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFj
a3MsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4mIGZyZWVTcGFjZSkKIHsKICAgICBVTlVTRURf
UEFSQU0oZnJlZVNwYWNlKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogdHJhY2tzKQpAQCAtOTU2
LDcgKzk1Niw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24o
Y29uc3QgR3JpZFRyYWNrJiB0cmFjaykKICAgICByZXR1cm4gdHJhY2suYmFzZVNpemUoKSAvIHN0
ZDo6bWF4PGRvdWJsZT4oMSwgZmxleEZhY3Rvcik7CiB9CiAKLWRvdWJsZSBJbmRlZmluaXRlU2l6
ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJs
ZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9w
dGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkgY29uc3QKK2RvdWJsZSBJbmRlZmluaXRlU2l6
ZVN0cmF0ZWd5OjpmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJs
ZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmcmVlU3BhY2UpOwogICAgIGF1dG8gYWxsVHJhY2tzID0gbV9hbGdvcml0aG0udHJhY2tz
KGRpcmVjdGlvbik7CkBAIC0xMDI1LDEyICsxMDI1LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYs
IGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBt
YXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBm
cmVlU3BhY2UpIG92ZXJyaWRlOwotICAgIGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0
b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIG1heGltaXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+Jiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiYgZnJlZVNwYWNlKSBvdmVycmlkZTsKKyAgICBkb3VibGUgZmluZFVzZWRG
bGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNw
YWNlKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlY29tcHV0ZVVzZWRGbGV4RnJhY3Rpb25J
Zk5lZWRlZChkb3VibGUmIGZsZXhGcmFjdGlvbiwgTGF5b3V0VW5pdCYgdG90YWxHcm93dGgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgZnJlZVNwYWNlRm9yU3RyZXRjaEF1dG9UcmFj
a3NTdGVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBtaW5Db250ZW50Rm9yQ2hp
bGQoUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2Fs
U2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIGNvbnN0IExlbmd0aCYgY2hpbGRNaW5TaXplLCBPcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlv
dXRVbml0IG1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiwgY29uc3QgTGVuZ3RoJiBj
aGlsZE1pblNpemUsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0NvbXB1dGluZ1NpemVDb250YWlubWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBM
YXlvdXRVbml0IEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6OmZyZWVTcGFjZUZvclN0cmV0Y2hBdXRv
VHJhY2tzU3RlcCgpIGNvbnN0CiAgICAgcmV0dXJuIG1pblNpemUudmFsdWUoKSAtIGNvbXB1dGVU
cmFja0Jhc2VkU2l6ZSgpOwogfQogCi1MYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5Ojpt
aW5Mb2dpY2FsU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IExlbmd0aCYgY2hp
bGRNaW5TaXplLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAorTGF5
b3V0VW5pdCBEZWZpbml0ZVNpemVTdHJhdGVneTo6bWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5k
ZXJCb3gmIGNoaWxkLCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6ZSwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdAogewogICAgIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dB
d2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsK
ICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uID0gR3JpZExh
eW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwg
Y2hpbGQsIGRpcmVjdGlvbigpKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIExheW91dFVuaXQgRGVm
aW5pdGVTaXplU3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGls
ZCwgY29uc3QKICAgICByZXR1cm4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1p
bkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZSk7
CiB9CiAKLXZvaWQgRGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGltaXplVHJhY2tzKFZlY3RvcjxH
cmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpCit2b2lk
IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYg
dHJhY2tzLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpCiB7CiAgICAgc2l6
ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgpOwogICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0
cmFja3NGb3JEaXN0cmlidXRpb24odHJhY2tzU2l6ZSk7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2
b2lkIERlZmluaXRlU2l6ZVN0cmF0ZWd5OjpsYXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21wdXRh
dGlvbihSZW5kZXJCb3gmIGNoaWxkLAogICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7CiB9CiAK
LWRvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9y
PHVuc2lnbmVkPiYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFs
PExheW91dFVuaXQ+IGZyZWVTcGFjZSkgY29uc3QKK2RvdWJsZSBEZWZpbml0ZVNpemVTdHJhdGVn
eTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24oVmVjdG9yPHVuc2lnbmVkPiYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNl
KSBjb25zdAogewogICAgIEdyaWRTcGFuIGFsbFRyYWNrc1NwYW4gPSBHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbV9hbGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbikuc2l6
ZSgpKTsKICAgICBBU1NFUlQoZnJlZVNwYWNlKTsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQg
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpyZXNvbHZlSW50cmluc2ljVHJhY2tTaXplcygpCiAg
ICAgaGFuZGxlSW5maW5pdHlHcm93dGhMaW1pdCgpOwogfQogCi12b2lkIEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6c3RyZXRjaEZsZXhpYmxlVHJhY2tzKE9wdGlvbmFsPExheW91dFVuaXQ+IGZy
ZWVTcGFjZSkKK3ZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzdHJldGNoRmxleGlibGVU
cmFja3Moc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpCiB7CiAgICAgaWYgKG1f
ZmxleGlibGVTaXplZFRyYWNrc0luZGV4LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTI4Miw3ICsxMjgyLDcgQEAgYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmlzVmFsaWRU
cmFuc2l0aW9uKCkgY29uc3QKIAogLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIEFQSS4KIAot
dm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNrcywgU2l6aW5nT3BlcmF0aW9uIHNpemlu
Z09wZXJhdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UpCit2b2lkIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgdW5zaWduZWQgbnVtVHJhY2tzLCBTaXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKQogewogICAgIEFT
U0VSVChtX25lZWRzU2V0dXApOwogICAgIG1fZGlyZWN0aW9uID0gZGlyZWN0aW9uOwpAQCAtMTM0
MCw3ICsxMzQwLDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJ1bigpCiAgICAg
U3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSgqdGhpcyk7CiAKICAgICAvLyBTdGVwIDEuCi0gICAg
Y29uc3QgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSA9IGZyZWVTcGFjZSht
X2RpcmVjdGlvbik7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbml0aWFs
RnJlZVNwYWNlID0gZnJlZVNwYWNlKG1fZGlyZWN0aW9uKTsKICAgICBpbml0aWFsaXplVHJhY2tT
aXplcygpOwogCiAgICAgLy8gU3RlcCAyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCmluZGV4IDg5NjA4MTg1ODFlZmJjZGVkMmIz
M2VjMDE2YTFmNmI4NGI5ZWE2MTYuLjZlNGNmODNmNjBhN2I1Y2VlMTI1YWU1OGM0OTBmZTdmMjgz
NjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtLmgKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogICAgIGJvb2wgaW5maW5p
dGVseUdyb3dhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmZpbml0ZWx5R3Jvd2FibGU7IH0KICAg
ICB2b2lkIHNldEluZmluaXRlbHlHcm93YWJsZShib29sIGluZmluaXRlbHlHcm93YWJsZSkgeyBt
X2luZmluaXRlbHlHcm93YWJsZSA9IGluZmluaXRlbHlHcm93YWJsZTsgfQogCi0gICAgdm9pZCBz
ZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxMYXlvdXRVbml0Pik7Ci0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gZ3Jvd3RoTGltaXRDYXAoKSBjb25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2Fw
OyB9CisgICAgdm9pZCBzZXRHcm93dGhMaW1pdENhcChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3Qg
eyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsgfQogCiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYg
Y2FjaGVkVHJhY2tTaXplKCkgY29uc3QgeyByZXR1cm4gKm1fY2FjaGVkVHJhY2tTaXplOyB9CiAg
ICAgdm9pZCBzZXRDYWNoZWRUcmFja1NpemUoY29uc3QgR3JpZFRyYWNrU2l6ZSYpOwpAQCAtODUs
OSArODUsOSBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV9ncm93dGhMaW1pdCB7IDAgfTsK
ICAgICBMYXlvdXRVbml0IG1fcGxhbm5lZFNpemUgeyAwIH07CiAgICAgTGF5b3V0VW5pdCBtX3Rl
bXBTaXplIHsgMCB9OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fZ3Jvd3RoTGltaXRDYXA7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX2dyb3d0aExpbWl0Q2FwOwogICAgIGJv
b2wgbV9pbmZpbml0ZWx5R3Jvd2FibGUgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPEdyaWRUcmFj
a1NpemU+IG1fY2FjaGVkVHJhY2tTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8R3JpZFRyYWNrU2l6
ZT4gbV9jYWNoZWRUcmFja1NpemU7CiB9OwogCiBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0gZmluYWwgewpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRyYWNr
cywgU2l6aW5nT3BlcmF0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSk7
CisgICAgdm9pZCBzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIG51bVRy
YWNrcywgU2l6aW5nT3BlcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZVNwYWNlKTsKICAgICB2b2lkIHJ1bigpOwogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTE1LDcg
KzExNSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IG1heENvbnRlbnRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhDb250ZW50U2l6ZTsgfTsKIAogICAgIExheW91dFVuaXQgYmFzZWxpbmVP
ZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkQXhpcykgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3Qg
UmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0
IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICB2b2lk
IGNhY2hlQmFzZWxpbmVBbGlnbmVkSXRlbShjb25zdCBSZW5kZXJCb3gmLCBHcmlkQXhpcyk7CiAg
ICAgdm9pZCBjb3B5QmFzZWxpbmVJdGVtc0NhY2hlKGNvbnN0IEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSYsIEdyaWRBeGlzKTsKQEAgLTEyNCwxMSArMTI0LDExIEBAIHB1YmxpYzoKICAgICBWZWN0
b3I8R3JpZFRyYWNrPiYgdHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
IHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9jb2x1bW5zIDogbV9yb3dzOyB9
CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IG1fY29sdW1ucyA6IG1fcm93czsgfQogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNw
YWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIGRp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9mcmVlU3BhY2VDb2x1bW5zIDogbV9mcmVlU3BhY2VS
b3dzOyB9Ci0gICAgdm9pZCBzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBP
cHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVl
U3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QgeyByZXR1cm4g
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBtX2ZyZWVTcGFjZUNvbHVtbnMgOiBtX2ZyZWVTcGFj
ZVJvd3M7IH0KKyAgICB2b2lkIHNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4pOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
YXZhaWxhYmxlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3Qg
eyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBtX2F2YWlsYWJsZVNwYWNlQ29sdW1u
cyA6IG1fYXZhaWxhYmxlU3BhY2VSb3dzOyB9Ci0gICAgdm9pZCBzZXRBdmFpbGFibGVTcGFjZShH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
bV9hdmFpbGFibGVTcGFjZUNvbHVtbnMgOiBtX2F2YWlsYWJsZVNwYWNlUm93czsgfQorICAgIHZv
aWQgc2V0QXZhaWxhYmxlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+KTsKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXpl
KCkgY29uc3Q7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdDsKICAgICBi
b29sIGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNBdXRvKGNvbnN0IEdyaWRMZW5ndGgmLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIEdyaWRUcmFja1NpemUgY2FsY3VsYXRlR3Jp
ZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJ
bmRleCkgY29uc3Q7CiAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgcmF3R3JpZFRyYWNrU2l6ZShH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7
CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8VHJhY2tTaXplQ29t
cHV0YXRpb25QaGFzZSBwaGFzZT4gdm9pZCBpbmNyZWFzZVNpemVzVG9BY2NvbW1vZGF0ZVNwYW5u
aW5nSXRlbXMoY29uc3QgR3JpZEl0ZW1zU3Bhbkdyb3VwUmFuZ2UmIGdyaWRJdGVtc1dpdGhTcGFu
KTsKICAgICBMYXlvdXRVbml0IGl0ZW1TaXplRm9yVHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZShU
cmFja1NpemVDb21wdXRhdGlvblBoYXNlLCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICB0ZW1wbGF0
ZSA8VHJhY2tTaXplQ29tcHV0YXRpb25QaGFzZSBwaGFzZT4gdm9pZCBkaXN0cmlidXRlU3BhY2VU
b1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPEdyaWRUcmFjayo+KiBn
cm93QmV5b25kR3Jvd3RoTGltaXRzVHJhY2tzLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2Fs
U3BhY2UpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGdyaWRBcmVhQnJlYWR0aEZv
ckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZChj
b25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAg
dm9pZCBjb21wdXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KCk7CiAgICAgdm9pZCB1cGRhdGVC
YXNlbGluZUFsaWdubWVudENvbnRleHQoY29uc3QgUmVuZGVyQm94JiwgR3JpZEF4aXMpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gbWV0aG9kIGF0IHRoaXNlIGxldmVsLgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKTsKICAgICB2b2lkIHJlc29sdmVJbnRyaW5z
aWNUcmFja1NpemVzKCk7Ci0gICAgdm9pZCBzdHJldGNoRmxleGlibGVUcmFja3MoT3B0aW9uYWw8
TGF5b3V0VW5pdD4gZnJlZVNwYWNlKTsKKyAgICB2b2lkIHN0cmV0Y2hGbGV4aWJsZVRyYWNrcyhz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSk7CiAgICAgdm9pZCBzdHJldGNoQXV0
b1RyYWNrcygpOwogCiAgICAgLy8gU3RhdGUgbWFjaGluZS4KQEAgLTE4NywxMSArMTg3LDExIEBA
IHByaXZhdGU6CiAgICAgYm9vbCB3YXNTZXR1cCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJhdGVn
eTsgfQogICAgIGJvb2wgbV9uZWVkc1NldHVwIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9oYXNQZXJj
ZW50U2l6ZWRSb3dzSW5kZWZpbml0ZUhlaWdodCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZVJvd3M7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bV9hdmFpbGFibGVTcGFjZUNvbHVtbnM7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBt
X2F2YWlsYWJsZVNwYWNlUm93czsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZh
aWxhYmxlU3BhY2VDb2x1bW5zOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9mcmVlU3Bh
Y2VDb2x1bW5zOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fZnJlZVNwYWNlUm93czsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fZnJlZVNwYWNlQ29sdW1uczsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fZnJlZVNwYWNlUm93czsKIAogICAgIC8vIFdlIG5lZWQg
dG8ga2VlcCBib3RoIGFsaXZlIGluIG9yZGVyIHRvIHByb3Blcmx5IHNpemUgZ3JpZHMgd2l0aCBv
cnRob2dvbmFsCiAgICAgLy8gd3JpdGluZyBtb2Rlcy4KQEAgLTI1NCw4ICsyNTQsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5HcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneSgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRy
YWNrPiYsIE9wdGlvbmFsPExheW91dFVuaXQ+JiBmcmVlU3BhY2UpID0gMDsKLSAgICB2aXJ0dWFs
IGRvdWJsZSBmaW5kVXNlZEZsZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNp
emVkVHJhY2tzSW5kZXgsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXhp
bWl6ZVRyYWNrcyhWZWN0b3I8R3JpZFRyYWNrPiYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4m
IGZyZWVTcGFjZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGZpbmRVc2VkRmxleEZyYWN0aW9u
KFZlY3Rvcjx1bnNpZ25lZD4mIGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleCwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2Up
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVjb21wdXRlVXNlZEZsZXhGcmFjdGlvbklm
TmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0aW9uLCBMYXlvdXRVbml0JiB0b3RhbEdyb3d0aCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBmcmVlU3BhY2VGb3JTdHJldGNoQXV0b1Ry
YWNrc1N0ZXAoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29tcHV0aW5nU2l6ZUNv
bnRhaW5tZW50KCkgY29uc3QgPSAwOwpAQCAtMjY0LDExICsyNjQsMTEgQEAgcHJvdGVjdGVkOgog
ICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5KEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSYgYWxnb3JpdGhtKQogICAgICAgICA6IG1fYWxnb3JpdGhtKGFsZ29yaXRobSkgeyB9CiAK
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gm
LCBjb25zdCBMZW5ndGgmIGNoaWxkTWluU2l6ZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlU2l6ZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbkxvZ2ljYWxTaXplRm9y
Q2hpbGQoUmVuZGVyQm94JiwgY29uc3QgTGVuZ3RoJiBjaGlsZE1pblNpemUsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJp
ZGVTaXplSGFzQ2hhbmdlZCkgY29uc3QgPSAwOwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Q7Ci0gICAgYm9vbCB1cGRhdGVPdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+ID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKKyAgICBib29sIHVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZv
ckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICAvLyBHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0gYWNjZXNzb3JzIGZvciBzdWJjbGFzc2VzLgogICAgIExheW91dFVuaXQg
Y29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbGdvcml0aG0uY29tcHV0
ZVRyYWNrQmFzZWRTaXplKCk7IH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ZG91YmxlIGZpbmRGclVuaXRTaXplKGNvbnN0IEdyaWRTcGFuJiB0cmFja3NTcGFuLCBMYXlvdXRV
bml0IGxlZnRPdmVyU3BhY2UpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmZpbmRGclVuaXRT
aXplKHRyYWNrc1NwYW4sIGxlZnRPdmVyU3BhY2UpOyB9CiAgICAgdm9pZCBkaXN0cmlidXRlU3Bh
Y2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgTGF5b3V0VW5pdCYgYXZhaWxh
YmxlTG9naWNhbFNwYWNlKSBjb25zdCB7IG1fYWxnb3JpdGhtLmRpc3RyaWJ1dGVTcGFjZVRvVHJh
Y2tzPE1heGltaXplVHJhY2tzPih0cmFja3MsIG51bGxwdHIsIGF2YWlsYWJsZUxvZ2ljYWxTcGFj
ZSk7IH0KICAgICBjb25zdCBSZW5kZXJHcmlkKiByZW5kZXJHcmlkKCkgY29uc3QgeyByZXR1cm4g
bV9hbGdvcml0aG0ubV9yZW5kZXJHcmlkOyB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZh
aWxhYmxlU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2FsZ29yaXRobS5hdmFpbGFibGVTcGFjZSgp
OyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmF2YWlsYWJsZVNwYWNlKCk7IH0KIAogICAgIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobSYgbV9hbGdvcml0aG07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBmZjkwNDUw
YjgxZTIxN2RhOTA1MjU5YTg5NDhmMGMxZDZhOGM2OTE4Li42MzE2YjNhODJmNzg2Y2M0M2E2Yzkw
ODMyNDEyNGJlNmYyZWRjM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhp
dFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbigpCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2Ug
PSB0LmludmVyc2UoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0
cml4PiBpbnZlcnNlID0gdC5pbnZlcnNlKCkpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQg
PSBpbnZlcnNlLnZhbHVlKCkucHJvamVjdFBvaW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAg
ICAgbV9sYXN0UGxhbmFyUXVhZCA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQ
bGFuYXJRdWFkKTsKICAgICAgICAgbV9sYXN0UGxhbmFyQXJlYSA9IGludmVyc2UudmFsdWUoKS5w
cm9qZWN0UXVhZChtX2xhc3RQbGFuYXJBcmVhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA4OWFiY2E5YTRmMTA0ZDQ1
NTc4Mjg3ZDkxZDg3OGI1YjA2NmRhZWVkLi43ZmM2ZDZkMzRmZmE3MTNlYjBlZGY5ZWJkNGI1ZmVl
ZTBlMTU3MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChsb3dRdWFs
aXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLU9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5
PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZS5pbWFnZVJlbmRl
cmluZygpKSB7CiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZzo6T3B0aW1pemVTcGVlZDoKQEAgLTEy
MCw3ICsxMjAsNyBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljcwogICAgIGlmICghKGltYWdlLmlz
Qml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6
RGVmYXVsdDsKIAotICAgIGlmIChPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJ
bnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHls
ZSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJ
bnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHls
ZSgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlSW50ZXJwb2xhdGlvbi52YWx1ZSgpOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHRvIHVzZSB0aGUgdW56b29tZWQgaW1hZ2Ugc2l6ZSwgc2luY2UgaWYgYSBm
dWxsIHBhZ2Ugem9vbSBpcyBpbiBlZmZlY3QsIHRoZSBpbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgKaW5kZXggY2Q5N2NjN2MyNDQx
ZGQ5ZmYzMmNiNjNlMjQwYmIwMTM1YmQ0ZWMyYS4uMTlhY2Q1ZTU2OTk3OTcyY2YyNjQyZDk4ZjA5
N2RlYjRhMzFkZTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIo
Y29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEludGVycG9sYXRpb25R
dWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIEludGVycG9s
YXRpb25RdWFsaXR5IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYs
IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3Qg
TGF5b3V0U2l6ZSYpOwogCiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJC
b3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCBkNjRjNzIzNDUyZmMzN2I3MzdhYzlh
MDgxZjliZjE3MjhhZDVmMjk4Li5iMzMzZmNhODg4Njk0OTM5ZjE5NjIxYTE3ZjU0YTI2MmQ3M2Vm
M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMzAsNyArMjMwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVBhcmVudENoaWxkTGlzdCgpOwogI2VuZGlm
CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+
IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAorICAgIGJvb2wgdmlzaWJsZVRv
SGl0VGVzdGluZyhzdGQ6Om9wdGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9
IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5k
ZXggYTNjZGRjNjRhOGRhMzMwZjQ3NmQyZDIwMzM4OTk1NmExOGQ1NWQzNS4uOGUzOGJjZjA5ZWQ0
YjA1MzBjNDNmMmRmYTdhYWExNzkwM2M5ZmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcApAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQg
bWF4SGVpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9u
YWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pigq
Y2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJv
dmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgqbWFy
a0V4aXN0c0FuZElzQWJvdmUgIT0gY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC05MzEsNyArOTMxLDcgQEAgaW5saW5l
IHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRC
b3gmIHRleHRCb3gsIEdseXAKICAgICBpbnQgbGVmdEdseXBoT3ZlcmZsb3cgPSAtc3Ryb2tlT3Zl
cmZsb3cgLSBsZWZ0R2x5cGhFZGdlOwogICAgIGludCByaWdodEdseXBoT3ZlcmZsb3cgPSBzdHJv
a2VPdmVyZmxvdyArIHJpZ2h0R2x5cGhFZGdlOwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IG1h
cmtFeGlzdHNBbmRJc0Fib3ZlID0gdGV4dEJveC5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3Zl
KGxpbmVTdHlsZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiBtYXJrRXhpc3RzQW5k
SXNBYm92ZSA9IHRleHRCb3guZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUp
KSB7CiAgICAgICAgIGludCBlbXBoYXNpc01hcmtIZWlnaHQgPSBsaW5lU3R5bGUuZm9udENhc2Nh
ZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQobGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmco
KSk7CiAgICAgICAgIGlmICgqbWFya0V4aXN0c0FuZElzQWJvdmUgPT0gIWxpbmVTdHlsZS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICB0b3BHbHlwaE92ZXJmbG93ID0g
c3RkOjptaW4odG9wR2x5cGhPdmVyZmxvdywgLWVtcGhhc2lzTWFya0hlaWdodCk7CkBAIC0xNjE5
LDcgKzE2MTksNyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3Rh
dGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaQogCiAgICAgICAgIGlmIChpczxJ
bmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
Y2hpbGRMaW5lU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBPcHRpb25h
bDxib29sPiBtYXJrRXhpc3RzQW5kSXNBYm92ZSA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpj
aGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSk7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZG93bmNh
c3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNo
aWxkTGluZVN0eWxlKTsKICAgICAgICAgICAgIGlmIChtYXJrRXhpc3RzQW5kSXNBYm92ZSAmJiAq
bWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0
eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBp
bnQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjaGlsZC0+bG9naWNhbFRvcCgpIC0gY2hpbGRMaW5lU3R5
bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVt
cGhhc2lzTWFya1N0cmluZygpKTsKQEAgLTE2NjcsNyArMTY2Nyw3IEBAIExheW91dFVuaXQgSW5s
aW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBh
bGxvd2VkUG9zCiAKICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpjaGlsZCkpIHsKICAg
ICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5l
U3R5bGUoKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3Zl
ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJ
c0Fib3ZlKGNoaWxkTGluZVN0eWxlKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bWFya0V4aXN0c0FuZElzQWJvdmUgPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVt
cGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUpOwogICAgICAgICAgICAg
aWYgKG1hcmtFeGlzdHNBbmRJc0Fib3ZlICYmICEqbWFya0V4aXN0c0FuZElzQWJvdmUpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNN
YXJrIHsgY2hpbGQtPmxvZ2ljYWxCb3R0b20oKSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRl
KCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJp
bmcoKSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXgg
MTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZS4uNjhlM2FjMmZmYzkxZTZm
NDNhNmNiMzk5NDZhNGJhOTNlMGRhZmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlVG8o
b2JqZWN0LCAwKTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVj
dCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9u
YWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVu
c2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAgIHNldFJlbmRlcmVyKCZvYmplY3Qp
OwogICAgICAgICBzZXRPZmZzZXQob2Zmc2V0KTsKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgdm9pZCBz
ZXRPZmZzZXQodW5zaWduZWQgcG9zaXRpb24pOwogICAgIFJlbmRlckVsZW1lbnQqIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247IH0K
LSAgICB2b2lkIHNldE5leHRCcmVha2FibGVQb3NpdGlvbihPcHRpb25hbDx1bnNpZ25lZD4gcG9z
aXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9z
aXRpb24oc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxl
UG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIGJvb2wgcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZTsgfQogICAgIHZv
aWQgc2V0UmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAg
cHJpdmF0ZToKICAgICBSZW5kZXJFbGVtZW50KiBtX3Jvb3QgeyBudWxscHRyIH07CiAgICAgUmVu
ZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVsbHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOwogICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAg
ICAgLy8gVGhlcmUgYXJlIGEgY291cGxlIHBsYWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVu
dCBhbiBJbmxpbmVJdGVyYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAppbmRleCA1YTc0OTI2MDc0YmQxYzEyNzI2ZjcwYWIxMzM2M2FjZWZhNGU1M2E2Li44
ZTk4NzZiYjNjNDUyYWE2YWY0ZDFhNzkxNzcwMTE0YWNkNjMwMzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBJ
bmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPGJvb2w+
IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94Ojpl
bXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4
dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBhcmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAg
ICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25l
KQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRl
eHRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFIKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAKICAgICBmbG9h
dCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwotICAgIE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNB
bmRJc0Fib3ZlID0gZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSBlbXBoYXNpc01hcmtF
eGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSk7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgZW1waGFz
aXNNYXJrID0gbWFya0V4aXN0c0FuZElzQWJvdmUgPyBsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFy
a1N0cmluZygpIDogbnVsbEF0b20oKTsKICAgICBpZiAoIWVtcGhhc2lzTWFyay5pc0VtcHR5KCkp
CiAgICAgICAgIGVtcGhhc2lzTWFya09mZnNldCA9ICptYXJrRXhpc3RzQW5kSXNBYm92ZSA/IC1m
b250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgLSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1w
aGFzaXNNYXJrKSA6IGZvbnQuZm9udE1ldHJpY3MoKS5kZXNjZW50KCkgKyBmb250LmVtcGhhc2lz
TWFya0FzY2VudChlbXBoYXNpc01hcmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKaW5kZXggNjU0ZDg3N2FkOGYwM2U3YzVlNWQ4NTg3NWEyMGEzMjk0YzBhZDQ2Ni4u
YTRlZWE4OWUzNzBiMDU5OTBhZDU2ODhlZWU1YjgwMWEzOTdmYTcyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lKSBjb25zdCBmaW5hbDsK
ICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoKSBjb25zdCBmaW5hbDsKIAotICAgIE9wdGlvbmFs
PGJvb2w+IGVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJv
dmUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIExheW91dFJlY3QgbG9naWNhbE92
ZXJmbG93UmVjdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9naWNhbE92ZXJmbG93UmVjdChjb25z
dCBMYXlvdXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
ZXJGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyRnJhZ21lbnQuaApp
bmRleCAyMjgyYTRlY2U5ODgyZmU4OWM4YmVkMmVjOTZiYWEzYjMxNjlkMjI2Li4wYmFlODAwNTMy
OWVlYTg4NTcyMWQyYzllNTQ0NzcyYjk0ZGIwOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5ZXJGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MYXllckZyYWdtZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgTGF5ZXJGcmFnbWVudCB7
CiBwdWJsaWM6CiAgICAgTGF5ZXJGcmFnbWVudCgpID0gZGVmYXVsdDsKICAgICAKLSAgICB2b2lk
IHNldFJlY3RzKGNvbnN0IExheW91dFJlY3QmIGJvdW5kcywgY29uc3QgQ2xpcFJlY3QmIGJhY2tn
cm91bmQsIGNvbnN0IENsaXBSZWN0JiBmb3JlZ3JvdW5kLCBjb25zdCBPcHRpb25hbDxMYXlvdXRS
ZWN0PiYgYmJveCkKKyAgICB2b2lkIHNldFJlY3RzKGNvbnN0IExheW91dFJlY3QmIGJvdW5kcywg
Y29uc3QgQ2xpcFJlY3QmIGJhY2tncm91bmQsIGNvbnN0IENsaXBSZWN0JiBmb3JlZ3JvdW5kLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+JiBiYm94KQogICAgIHsKICAgICAgICAgbGF5
ZXJCb3VuZHMgPSBib3VuZHM7CiAgICAgICAgIGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZDsK
QEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkUGFpbnRD
b250ZW50ID0gZmFsc2U7Ci0gICAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gYm91bmRpbmdCb3g7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBib3VuZGluZ0JveDsKIAogICAgIExheW91dFJl
Y3QgbGF5ZXJCb3VuZHM7CiAgICAgQ2xpcFJlY3QgYmFja2dyb3VuZFJlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAKaW5kZXggZGI4NDlhNGZiY2JmZWM0ODA4MDRlNDdj
ZDkyZWU3YWZjZjEyZjZmYS4uYmI0NmY3YTY3OTQ1ZjVmZjUxZjc0NTcxN2Q3ZmJiNmUxZmY0MzA0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmNwcApAQCAtNjgsNyArNjgs
NyBAQCBWZWN0b3I8TWFya2VkVGV4dD4gc3ViZGl2aWRlKGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0
PiYgbWFya2VkVGV4dHMsIE92ZXJsYXBTdHJhdAogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBudW1iZXJPZk9mZnNldHM7ICsraSkgewogICAgICAgICBpZiAob2Zmc2V0c1tpXS52YWx1ZSA+
IG9mZnNldHNbaSAtIDFdLnZhbHVlKSB7CiAgICAgICAgICAgICBpZiAob3ZlcmxhcFN0cmF0ZWd5
ID09IE92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KSB7Ci0gICAgICAgICAgICAgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IGZyb250bW9zdDsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBmcm9udG1vc3Q7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IGk7ICsraikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZE1hcmtlZFRl
eHRzLmNvbnRhaW5zKG9mZnNldHNbal0ubWFya2VkVGV4dCkgJiYgKCFmcm9udG1vc3QgfHwgb2Zm
c2V0c1tqXS5tYXJrZWRUZXh0LT50eXBlID4gb2Zmc2V0c1sqZnJvbnRtb3N0XS5tYXJrZWRUZXh0
LT50eXBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250bW9zdCA9IGo7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dFN0eWxlLmgKaW5kZXggYjkyZDJlMDE0NWNmMzAz
YzU3M2ZiYjAxNzk5YzU1MWFiMTA5YzU2OC4uYWYxYTY1ZjJhZmUyZjY3MjdmOTRjY2ZkZmExZDRl
MmFkODY1MGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRl
eHRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0U3R5bGUu
aApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgTWFya2VkVGV4dFN0eWxlIHsKICAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3I7CiAgICAgVGV4dFBhaW50U3R5bGUgdGV4dFN0eWxlczsKICAgICBUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyB0ZXh0RGVjb3JhdGlvblN0eWxlczsKLSAgICBPcHRp
b25hbDxTaGFkb3dEYXRhPiB0ZXh0U2hhZG93OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhZG93RGF0
YT4gdGV4dFNoYWRvdzsKICAgICBmbG9hdCBhbHBoYTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDcxMGMxMDFmMjNkMWQwNjg4OGZjYTNmNDIzNGI3
NGU3MjFiOTRmNGIuLjNhYjYyNjcwZjA1YzYxYzllODBjYTA0YThhYjBiYTY2NWZiYThlMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjYxLDcgKzI2MSw3
IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IG1fcGFnZUxvZ2ljYWxPZmZzZXQ7CiAgICAgTGF5
b3V0VW5pdCBtX2ludHJpbnNpY0JvcmRlckZvckZpZWxkc2V0OwogICAgIAotICAgIE9wdGlvbmFs
PFdlYWtQdHI8UmVuZGVyRnJhZ21lbnRlZEZsb3c+PiBtX2VuY2xvc2luZ0ZyYWdtZW50ZWRGbG93
OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vha1B0cjxSZW5kZXJGcmFnbWVudGVkRmxvdz4+IG1fZW5j
bG9zaW5nRnJhZ21lbnRlZEZsb3c7CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVy
QmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tSYXJlRGF0YT4+IFJlbmRlckJsb2Nr
UmFyZURhdGFNYXA7CkBAIC0yNDQwLDE2ICsyNDQwLDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNv
bXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoUmVuZGVyT2JqZWN0JiBjaGlsZCwgTGF5
b3V0CiAgICAgCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3aWR0aHMgb2YgZmxleGJveCBjaGlsZHJl
biBzaG91bGQgbmV2ZXIgZGVwZW5kIG9uIG92ZXJyaWRpbmcgc2l6ZXMuIFRoZXkgc2hvdWxkCiAg
ICAgLy8gYWx3YXlzIGJlIGNvbXB1dGVkIHdpdGhvdXQgcmVnYXJkIGZvciBhbnkgb3ZlcnJpZGVz
IHRoYXQgYXJlIHByZXNlbnQuCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0hl
aWdodDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nV2lkdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nSGVpZ2h0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ1dpZHRoOwogICAgIAogICAgIGlmIChjaGlsZC5pc0Jv
eCgpKSB7CiAgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQpOwog
ICAgICAgICBpZiAoYm94LmlzRmxleEl0ZW0oKSkgewogICAgICAgICAgICAgaWYgKGJveC5oYXNP
dmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICAgICAgICAgIG92ZXJyaWRpbmdIZWln
aHQgPSBPcHRpb25hbDxMYXlvdXRVbml0Pihib3gub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7
CisgICAgICAgICAgICAgICAgb3ZlcnJpZGluZ0hlaWdodCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4oYm94Lm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKGJv
eC5oYXNPdmVycmlkaW5nTG9naWNhbFdpZHRoKCkpCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGlu
Z1dpZHRoID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4oYm94Lm92ZXJyaWRpbmdMb2dpY2FsV2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgb3ZlcnJpZGluZ1dpZHRoID0gc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0Pihib3gub3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgpKTsKICAgICAgICAgICAgIGJveC5j
bGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU0MSw3
ICsyNTQxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5z
Y3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgYXV0byBiYXNlbGluZVBv
cyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxMYXlvdXRVbml0PigpIDogaW5saW5lQmxv
Y2tCYXNlbGluZShkaXJlY3Rpb24pOworICAgICAgICBhdXRvIGJhc2VsaW5lUG9zID0gaWdub3Jl
QmFzZWxpbmUoKSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKSA6IGlubGluZUJsb2NrQmFz
ZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlcHJlY2F0ZWRGbGV4
aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBIaXN0b3JpY2FsbHksIHdlIGRpZCB0aGlzIGNo
ZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQgd2UgY2FuJ3QKQEAgLTI1NTEsNyArMjU1MSw3IEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpCiAgICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwg
d2UgdXNlIHRoaXMgZm9yIGFsbCB1c2VzIG9mIGRlcHJlY2F0ZWQgZmxleGJveC4KICAgICAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tT2ZDb250ZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxM
aW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVpZ2h0KCkgOiBib3Jk
ZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBjb250ZW50V2lkdGgoKTsKICAgICAgICAgICAg
IGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGluZVBvcy52YWx1ZSgpID4gYm90dG9tT2ZDb250ZW50
KQotICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsK
KyAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4o
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmFzZWxpbmVQb3MpCiAgICAgICAgICAgICByZXR1
cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGluZVBv
cy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSArIGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0yNTc2
LDEzICsyNTc2LDEzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JS
ZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6
bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUs
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAg
IGlmIChzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlS
dW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCog
Y3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94
KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpIHsKQEAgLTI1OTEsMTYgKzI1OTEsMTYgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKHNo
b3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQogICAgICAgICByZXR1cm4gc3ludGhl
c2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKnRoaXMsIGxpbmVEaXJlY3Rpb24pICsgKGxpbmVE
aXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Cb3R0b20oKSA6IG1hcmdpbkxlZnQo
KSk7CiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgYm9vbCBoYXZlTm9ybWFsRmxvd0NoaWxkID0g
ZmFsc2U7CiAgICAgZm9yIChhdXRvKiBib3ggPSBsYXN0Q2hpbGRCb3goKTsgYm94OyBib3ggPSBi
b3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7CkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSBsaW5lRGlyZQogICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9u
dGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBh
ZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxM
YXlvdXRVbml0PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKFJl
bmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQpCkBAIC0zMjIyLDkgKzMyMjIsOSBAQCBib29sIFJl
bmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiAo
Ym9vbClhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCk7CiB9
CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVp
Z2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyQmxvY2s6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29t
cHV0YXRpb24oKSBjb25zdAogewotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhl
aWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKICAg
ICAKICAgICAvLyBGb3IgYW5vbnltb3VzIGJsb2NrcyB0aGF0IGFyZSBza2lwcGVkIGR1cmluZyBw
ZXJjZW50YWdlIGhlaWdodCBjYWxjdWxhdGlvbiwKICAgICAvLyB3ZSBjb25zaWRlciB0aGVtIHRv
IGhhdmUgYW4gaW5kZWZpbml0ZSBoZWlnaHQuCkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNl
bnRhZ2VDb21wdXRhdGlvbgogICAgICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29t
cHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIDBfbHUp
OwogICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgfSBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSkgewotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Ny
b2xsYmFyID0gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNh
bEhlaWdodCgpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRo
U2Nyb2xsYmFyID0gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9n
aWNhbEhlaWdodCgpKTsKICAgICAgICAgaWYgKGhlaWdodFdpdGhTY3JvbGxiYXIpIHsKICAgICAg
ICAgICAgIExheW91dFVuaXQgY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgPSBhZGp1c3RD
b250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRXaXRoU2Nyb2xsYmFyLnZh
bHVlKCkpOwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgZm9yIG1pbi9tYXggaGVp
Z2h0IGJlY2F1c2UgdGhpcyBtZXRob2QgZG9lcyBub3QKQEAgLTM1MDMsNyArMzUwMyw3IEBAIExh
eW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hT
aXppbmcoTGF5b3V0VW5pdCBoZWlnCiAgICAgcmV0dXJuIHN0ZDo6bWF4KGhlaWdodCwgYm9yZGVy
c1BsdXNQYWRkaW5nKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0Q29udGVu
dEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxI
ZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IFdlJ3JlIGRvaW5nIHRoaXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3Nl
cnMgZXZlbiB0aG91Z2ggaXQncyBxdWVzdGlvbmFibGUuCiAgICAgLy8gU2hvdWxkbid0IGhlaWdo
dDoxMDBweCBtZWFuIHRoZSBmaWVsZHNldCBjb250ZW50IGdldHMgMTAwcHggb2YgaGVpZ2h0IGV2
ZW4gaWYgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGVmYzAx
NTRkYjg2ODc5ZGYzMzcwYWY5NzNmNjI5ZTA0Zjg1YjY4NjEuLmJlZDU4ZjNlOThlOWNkZGI3ZmY3
NjNjYjcyMzQ2NTljN2FhYjlhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgYm9yZGVyUmln
aHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGJvcmRlckJlZm9yZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZv
ckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0
VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxM
YXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYWRqdXN0
Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRFeGNsdWRlZENoaWxk
cmVuSW5Cb3JkZXIoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAKICAgICAv
LyBBY2Nlc3NvcnMgZm9yIGxvZ2ljYWwgd2lkdGgvaGVpZ2h0IGFuZCBtYXJnaW5zIGluIHRoZSBj
b250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdyBkaXJlY3Rpb24uCkBAIC0zMTMsNyArMzEzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxv
d05lZWRzVXBkYXRlKCkgY29uc3Q7CiAgICAgdm9pZCByZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRG
bG93QW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cq
ID0gbnVsbHB0cikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVM
b2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNv
bXB1dGF0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNldENoaWxkTG9naWNhbEhlaWdodEJl
Zm9yZUxheW91dChjb25zdCBSZW5kZXJCb3gmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVw
ZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAog
ICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBt
dWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91
dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggNjJkZTQxNjViNjEzZWMzY2YwOTM4ZGQxYzA3Y2Y1OWNjNDE0MWU5MC4uYTIw
Yzg1Zjg4NDAwZTM2MTI3NWVlZTRhY2QzOGZkNDFmZGM1ZmEzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNvbHVtbkNvdW50QW5kV2lkdGgoKQogICAgIHNldENv
bXB1dGVkQ29sdW1uQ291bnRBbmRXaWR0aChkZXNpcmVkQ29sdW1uQ291bnQsIGRlc2lyZWRDb2x1
bW5XaWR0aCk7CiB9CiAKLWJvb2wgUmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1ucyhP
cHRpb25hbDx1bnNpZ25lZD4gZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdAorYm9vbCBSZW5kZXJC
bG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1bW5zKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlc2ly
ZWRDb2x1bW5Db3VudCkgY29uc3QKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBu
b3Qgc3VwcG9zZWQgdG8gY3JlYXRlIG11bHRpY29sIGNvbnRleHQuCiAgICAgaWYgKGlzRmlsZVVw
bG9hZENvbnRyb2woKSB8fCBpc1RleHRDb250cm9sKCkgfHwgaXNMaXN0Qm94KCkpCkBAIC0zMTMw
LDcgKzMxMzAsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2Nr
UmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbgogICAgIH0KIH0KIAotT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlS
dW4oKSAmJiAhaXNHcmlkSXRlbSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
MzE1NSw3ICszMTU1LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93Ojpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBmaXJzdFJv
b3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFz
Y2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpIH07CiB9CiAKLU9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGlu
ZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNS
dWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNmE0MmFhYWQ0MWM1NWQ0NWE1MzFiYTVh
MDBmNjA1MTBhZWEzY2JiMi4uY2QwMDk2NWRhZWY5Yzk3M2FhNWFjZDY0NjA4NjIwODJmMGIyODhh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjcz
LDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3cqIG11bHRpQ29s
dW1uRmxvd1Nsb3dDYXNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3coUmVu
ZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAgICAgdm9pZCBjbGVhck11bHRpQ29sdW1uRmxvdygpOwot
ICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMoT3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1
bW5Db3VudCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgYm9vbCB3aWxsQ3JlYXRlQ29sdW1u
cyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBkZXNpcmVkQ29sdW1uQ291bnQgPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbHVtbnMoaW50KSBjb25zdDsK
IAogICAgIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zs
b2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKTsgfQpA
QCAtNDUyLDggKzQ1Miw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdP
YmplY3RzKCk7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc011bHRpQ29sdW1uQmxvY2tGbG93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbXVsdGlDb2x1bW5GbG93KCk7IH0KICAgICAKQEAg
LTUzNiw3ICs1MzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJ
bmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIG92ZXJy
aWRlOwogCiBwdWJsaWM6Ci0gICAgdmlydHVhbCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVy
cmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25N
b2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJl
YWsgKi8pIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxp
bmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCAvKiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICov
LCBmbG9hdCYgLyogbG9naWNhbExlZnQgKi8sIGZsb2F0JiAvKiBsb2dpY2FsV2lkdGggKi8pIGNv
bnN0IHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCA3Njk1YjEyY2UxZTNkMTQ5ZmFhNGQ5YTVhNGJhMmY5MTA1OGVlM2RjLi41Njc0OWFhMDdj
YzUzYzJiZDIwOTZhM2Y1OWFiYjdiZWM2ZWJkNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBPdmVycmlkZVNpemVNYXAq
IGdPdmVycmlkaW5nTG9naWNhbEhlaWdodE1hcCA9IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVT
aXplTWFwKiBnT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aE1hcCA9IG51bGxwdHI7CiAKIC8vIEZJWE1F
OiBXZSBzaG91bGQgc3RvcmUgdGhlc2UgYmFzZWQgb24gcGh5c2ljYWwgZGlyZWN0aW9uLgotdHlw
ZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4+
IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVN
YXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRl
T3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGhNYXAgPSBudWxscHRyOwogCkBAIC02NzEsMTEgKzY3MSwxMSBAQCBMYXlvdXRVbml0IFJl
bmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVu
aXQgbG9naWNhbAogICAgIHJldHVybiBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIGNvbXB1dGVMb2dp
Y2FsV2lkdGhJbkZyYWdtZW50VXNpbmcoTWluU2l6ZSwgbWluTGVuZ3RoLCBhdmFpbGFibGVXaWR0
aCwgY2IsIGZyYWdtZW50KSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxM
YXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkg
Y29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAg
ICAgaWYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhIID0gY29tcHV0ZUxvZ2ljYWxIZWln
aHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2lj
Q29udGVudEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1h
eEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUsIHN0eWxlVG9Vc2UubG9naWNh
bE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgICAgIGxvZ2lj
YWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0LCBtYXhILnZhbHVlKCkpOwogICAgIH0K
ICAgICBhdXRvIGxvZ2ljYWxNaW5IZWlnaHQgPSBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5IZWlnaHQo
KTsKQEAgLTY4MywxOSArNjgzLDE5IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPCiAgICAgICAg
IGxvZ2ljYWxNaW5IZWlnaHQgPSBMZW5ndGgoKmludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExlbmd0
aFR5cGU6OkZpeGVkKTsKICAgICBpZiAobG9naWNhbE1pbkhlaWdodC5pc01pbkNvbnRlbnQoKSB8
fCBsb2dpY2FsTWluSGVpZ2h0LmlzTWF4Q29udGVudCgpKQogICAgICAgICBsb2dpY2FsTWluSGVp
Z2h0ID0gTGVuZ3RoKCk7Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTG9n
aWNhbEhlaWdodCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgbG9naWNhbE1p
bkhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhNaW5TaXplLCBsb2dpY2FsTWluSGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkTG9naWNhbEhl
aWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVU
b1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhT
aXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdo
dCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRl
Q29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0
KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9
IHN0ZDo6bWluKGxvZ2ljYWxIZWlnaHQsIG1heEgudmFsdWUoKSk7CiAgICAgfQotICAgIGlmIChP
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdo
dCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQs
IGNvbXB1dGVkQ29udGVudExvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIGxvZ2lj
YWxIZWlnaHQ7CiB9CkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudFdpZHRoKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpKTsKICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrKCkt
PnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKQpAQCAtMTIxMCw3ICsxMjEwLDcgQEAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFdpZHRoKCkgY29uc3QKICAgICAgICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwLT5nZXQodGhpcyk7CiB9CiAKLU9wdGlvbmFsPExheW91
dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRh
aW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkKQEAgLTEyNDAs
MTMgKzEyNDAsMTMgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50SGVpZ2h0KCkgY29uc3QKICAgICAgICAgOiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAgJiYgZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbFdpZHRoTWFwLT5jb250YWlucyh0aGlzKTsKIH0KIAotT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxXaWR0aCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdAogewogICAg
IEFTU0VSVChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgp
KTsKICAgICByZXR1cm4gZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdp
ZHRoTWFwLT5nZXQodGhpcyk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGdP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlz
KTsKQEAgLTEyNjIsMTQgKzEyNjIsMTQgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGdP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhp
cyk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxXaWR0aChPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCit2b2lk
IFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lk
dGgoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCiB7CiAgICAgaWYgKCFn
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXApCiAgICAgICAg
IGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aE1hcCA9IG5ldyBP
dmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKICAgICBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGhNYXAtPnNldCh0aGlzLCBsb2dpY2FsV2lkdGgpOwogfQogCi12b2lk
IFJlbmRlckJveDo6c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQpCit2b2lkIFJlbmRlckJveDo6
c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCkKIHsKICAgICBpZiAoIWdPdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXApCiAgICAgICAgIGdPdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAgPSBuZXcgT3ZlcnJpZGVP
cHRpb25hbFNpemVNYXA7CkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IGNv
bXB1dAogICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5n
KHsgY29tcHV0ZWRMb2dpY2FsV2lkdGgsIG9yaWdpbmFsVHlwZSwgZmFsc2UgfSk7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNp
emluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKCFoZWlnaHQpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMjMzNyw3ICsyMzM3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmNvbXB1dGVWaXNpYmxlUmVjdFVzaW5nUGFpbnRPZmZzZXQoY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCkKICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogfQogCi1PcHRpb25hbDxMYXlvdXRSZWN0PiBS
ZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJl
Y3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
ckJveDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENv
bnRleHQgY29udGV4dCkgY29uc3QKIHsKICAgICAvLyBUaGUgcmVjdCB3ZSBjb21wdXRlIGF0IGVh
Y2ggc3RlcCBpcyBzaGlmdGVkIGJ5IG91ciB4L3kgb2Zmc2V0IGluIHRoZSBwYXJlbnQgY29udGFp
bmVyJ3MgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAvLyBPbmx5IHdoZW4gd2UgY3Jvc3MgYSB3cml0
aW5nIG1vZGUgYm91bmRhcnkgd2lsbCB3ZSBoYXZlIHRvIHBvc3NpYmx5IGZsaXBGb3JXcml0aW5n
TW9kZSAodG8gY29udmVydCBpbnRvIGEgbW9yZSBhcHByb3ByaWF0ZQpAQCAtMjk0OSw3ICsyOTQ5
LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpj
b21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbmkKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVp
Z2h0KSB7CiAgICAgICAgICAgICAvLyBDYWxsZXJzIHBhc3NpbmcgTGF5b3V0VW5pdDo6bWF4KCkg
Zm9yIGxvZ2ljYWxIZWlnaHQgbWVhbnMgYW4gaW5kZWZpbml0ZSBoZWlnaHQsIHNvCiAgICAgICAg
ICAgICAvLyB0cmFuc2xhdGUgdGhpcyB0byBhIG51bGxvcHQgaW50cmluc2ljIGhlaWdodCBmb3Ig
ZnVydGhlciBsb2dpY2FsIGhlaWdodCBjb21wdXRhdGlvbnMuCi0gICAgICAgICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbnRyaW5zaWNIZWlnaHQ7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGludHJpbnNpY0hlaWdodDsKICAgICAgICAgICAgIGlmIChjb21wdXRlZFZh
bHVlcy5tX2V4dGVudCAhPSBMYXlvdXRVbml0OjptYXgoKSkKICAgICAgICAgICAgICAgICBpbnRy
aW5zaWNIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKICAgICAgICAgICAgIGlmIChz
aG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpKSB7CkBAIC0zMDA2LDIx
ICszMDA2LDIxIEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFdp
dGhvdXRMYXlvdXQoKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5
cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9n
aWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdo
dCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNv
bXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhl
aWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RCb3Jk
ZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYg
aGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQp
IGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Nj
cm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhl
aWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNv
bnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBp
bnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVu
aXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodElu
Y2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWln
aHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExh
eW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhM
ZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRy
aW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdp
bmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29udGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAv
LyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgpAQCAtMzAz
NSwxMCArMzAzNSwxMCBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aAogICAgIHJldHVybiAwX2x1
OwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExl
bmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250
ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNv
bnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0Nv
bnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAg
cmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDog
c3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSA6IHN0ZDo6bnVsbG9wdDsKICAgICAvLyBGSVhNRTog
VGhlIENTUyBzaXppbmcgc3BlYyBpcyBjb25zaWRlcmluZyBjaGFuZ2luZyB3aGF0IG1pbi1jb250
ZW50L21heC1jb250ZW50IHNob3VsZCByZXNvbHZlIHRvLgogICAgIC8vIElmIHRoYXQgaGFwcGVu
cywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCiAgICAgaWYgKGhlaWdodC5pc0ludHJp
bnNpYygpIHx8IGhlaWdodC5pc01pbkludHJpbnNpYygpKQpAQCAtMzEwMiw5ICszMTAyLDkgQEAg
c3RhdGljIGJvb2wgdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZShjb25zdCBSZW5k
ZXJCbG9jayYgYmxvY2ssIGNvbnN0IFIKICAgICByZXR1cm4gc2Nyb2xsc092ZXJmbG93WSAmJiAh
Y2hpbGQuc2hvdWxkVHJlYXRDaGlsZEFzUmVwbGFjZWRJblRhYmxlQ2VsbHMoKSAmJiAoIWNlbGwu
c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkgfHwgIWNlbGwudGFibGUoKS0+c3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhl
aWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzIHVwZGF0ZURlc2NlbmRhbnRz
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFn
ZUhlaWdodERlc2NlbmRhbnRzIHVwZGF0ZURlc2NlbmRhbnRzKSBjb25zdAogewotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKIAogICAgIGJvb2wgc2tpcHBlZEF1dG9IZWlnaHRDb250
YWluaW5nQmxvY2sgPSBmYWxzZTsKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxv
Y2soKTsKQEAgLTMxMzQsNyArMzEzNCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJv
eDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAgICAg
ICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBvciBu
b3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBhIHBl
cmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICAg
ICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBz
Y3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlh
bFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdo
dCA9IGNiLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGlu
Z0JlZm9yZSgpIC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgLSBjYi0+Ym9yZGVyQmVm
b3JlKCkgLSBjYi0+Ym9yZGVyQWZ0ZXIoKTsKICAgICAgICAgfQpAQCAtMzIyMCw3ICszMjIwLDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5n
KFNpemVUeXBlIHdpZHRoVHlwZSwgTGVuZ3QKICAgICByZXR1cm4gMDsKIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0
VW5pdD4pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KSBjb25zdAogewogICAgIHJldHVybiBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5s
b2dpY2FsSGVpZ2h0KCkpKTsKIH0KQEAgLTMzMDQsNyArMzMwNCw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0
VHlwZSwgTGVuCiB7CiAgICAgQVNTRVJUKGhlaWdodFR5cGUgPT0gTWluU2l6ZSB8fCBoZWlnaHRU
eXBlID09IE1haW5PclByZWZlcnJlZFNpemUgfHwgIWxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpOwog
ICAgIGlmIChoZWlnaHRUeXBlID09IE1pblNpemUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8oKSkK
LSAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5n
KE9wdGlvbmFsPExheW91dFVuaXQ+KDApKTsKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkp
OwogCiAgICAgc3dpdGNoIChsb2dpY2FsSGVpZ2h0LnR5cGUoKSkgewogICAgIGNhc2UgTGVuZ3Ro
VHlwZTo6Rml4ZWQ6CkBAIC0zMzE5LDcgKzMzMTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExl
bgogICAgICAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKTsK
ICAgICAgICAgfQogICAgICAgICBib29sIGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sg
PSBjb250YWluZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSGVpZ2h0
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHN0cmV0Y2hlZEhlaWdodDsKICAg
ICAgICAgaWYgKGlzPFJlbmRlckJsb2NrPihjb250YWluZXIpKSB7CiAgICAgICAgICAgICBhdXRv
KiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihjb250YWluZXIpOwogICAgICAgICAgICAg
YmxvY2stPmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KCpjb25zdF9jYXN0PFJlbmRlckJveCo+
KHRoaXMpKTsKQEAgLTM0MDgsNyArMzQwOCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFp
bGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpCiAg
ICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2
YWx1ZUZvckxlbmd0aChoLCBhdmFpbGFibGVIZWlnaHQpKTsKICAgICB9CiAKLSAgICBpZiAoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRl
bnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwg
c3RkOjpudWxsb3B0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJ
bmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWln
aHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBzdGQ6Om51bGxvcHQpKQogICAgICAgICBy
ZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWln
aHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyKSAtIHNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgbG9naWNhbFRvcC9sb2dpY2FsQm90
dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRsZSB2ZXJ0aWNhbCB3cml0aW5nLW1vZGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMWRkNjg4ODQxZmYxYTMyMjQyNjJhNDNh
OGVhZDM4N2ExNjFjNTllYi4uNzJmNDQ5MzRlZjQ3NzUxYjcwZDE0ZWI2ODFjZDhjMWY2YjVmMGU5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtODcsOCArODcsOCBAQCBw
dWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIEFsbG93SW50cmluc2ljIHsgWWVzLCBObyB9OwogICAg
IExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91
dFVuaXQsIExheW91dFVuaXQsIFJlbmRlckJsb2NrJiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIq
LCBBbGxvd0ludHJpbnNpYyA9IEFsbG93SW50cmluc2ljOjpZZXMpIGNvbnN0OwotICAgIExheW91
dFVuaXQgY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7
Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4
KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2lj
Q29udGVudEhlaWdodCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Mb2dpY2FsSGVp
Z2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIExheW91dFVuaXQgY29u
c3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQgbGVmdCkKICAgICB7
CkBAIC0zMjMsMTYgKzMyMywxNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5n
Q29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KExheW91dFVuaXQo
KSwgb3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0
aCgpIC0gc2Nyb2xsYmFyTG9naWNhbFdpZHRoKCkpOyB9CiAgICAgTGF5b3V0VW5pdCBvdmVycmlk
aW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heChMYXlvdXRV
bml0KCksIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsgfQogCi0gICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzT3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0Owog
ICAgIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgo
KSBjb25zdDsKICAgICBib29sIGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbEhlaWdodCgpIGNvbnN0OwotICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsV2lkdGgoT3B0aW9uYWw8TGF5b3V0VW5pdD4pOwotICAgIHZvaWQgc2V0
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExh
eW91dFVuaXQ+KTsKKyAgICB2b2lkIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbFdpZHRoKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4pOworICAgIHZvaWQgc2V0T3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4pOwogICAgIHZvaWQgY2xlYXJPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFNpemUoKTsKICAgICB2b2lkIGNsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBPdmVycmlkZGVuIGJ5IGZpZWxkc2V0cyB0byBzdWJ0cmFjdCBvdXQgdGhlIGludHJpbnNpYyBi
b3JkZXIuCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWln
aHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25h
bDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMg
ewogICAgICAgICBMYXlvdXRVbml0IG1fYmVmb3JlOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hXcmFwcGVyKCk7CiAKICAgICBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlz
aWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0CiBvdmVycmlk
ZTsKICAgICB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3Qm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRB
bGxEZXNjZW5kYW50cyk7CkBAIC00NDAsOSArNDQwLDkgQEAgb3ZlcnJpZGU7CiAgICAgTGF5b3V0
VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJn
aW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1hcmdpbkVuZCwgY29uc3QgUmVuZGVyQmxvY2smIGNi
LCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb21w
dXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudFVzaW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2sm
IGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBjb25zdDsKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBj
b25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVu
dEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6
ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0
KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRy
aW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlLCBMZW5ndGggd2lkdGgpIGNvbnN0OwogICAgIExh
eW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRo
KExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1
dGVBY3R1YWwpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFVzaW5nKFNpemVUeXBlLCBMZW5ndGggaGVpZ2h0KSBjb25zdDsKQEAgLTQ1MiwxMCArNDUy
LDEwIEBAIG92ZXJyaWRlOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExheW91dFVuaXQgY29t
cHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoVCBsb2dpY2Fs
SGVpZ2h0KSBjb25zdCB7IHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVj
dGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQpKTsgfQogCiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRl
UHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGlt
YXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRV
bml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgZW51bSBj
bGFzcyBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMgeyBZZXMgLCBObyB9OwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25z
dCBMZW5ndGgmIGhlaWdodCwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzID0gVXBk
YXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzOjpZZXMpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExl
bmd0aCYgaGVpZ2h0LCBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMgPSBVcGRhdGVQ
ZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHM6OlllcykgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsV2lk
dGgoKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2
YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlKSBjb25zdDsKQEAgLTU0Miw4ICs1NDIsOCBAQCBvdmVy
cmlkZTsKICAgICAKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVy
KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0KLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0gLy8g
UmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0
aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVy
biBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBz
aG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5s
aW5lLWJsb2NrLgogCiAgICAgYm9vbCBzaHJpbmtUb0F2b2lkRmxvYXRzKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwpAQCAtNjg4LDcgKzY4OCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiA9IG51bGxwdHIp
IGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNp
bmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRV
c2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50
cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29t
cHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lu
bGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDg3MTFiYjk1ZWUzZGM2Nzk0N2Uz
Mjk3MWIxYmU5ZWI3ZWViMmMzM2YuLmQ2YWQ2OGQ1MzE1YmVlMGYwMmUyYTAyNjM0YzRhOTFjNjUw
YzQ5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtMTg3Niw3ICsxODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0Jgog
ICAgIGJvb2wgaGF2ZUFsbERvdWJsZUVkZ2VzID0gdHJ1ZTsKICAgICBpbnQgbnVtRWRnZXNWaXNp
YmxlID0gNDsKICAgICBib29sIGFsbEVkZ2VzU2hhcmVDb2xvciA9IHRydWU7Ci0gICAgT3B0aW9u
YWw8Qm94U2lkZT4gZmlyc3RWaXNpYmxlU2lkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+
IGZpcnN0VmlzaWJsZVNpZGU7CiAgICAgQm94U2lkZVNldCBlZGdlc1RvRHJhdzsKIAogICAgIGZv
ciAoYXV0byBzaWRlIDogYWxsQm94U2lkZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVj
NWQ4YjcwODMwZjFmNWMwMC4uOWIxNWViOTc0MzdjOGU3Njk3ZTQ3ODZmNTY1ZmUyNzY1M2Y4YjUz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKQEAgLTIzOCw4ICsyMzgsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1J1bm5pbmdBY2Nl
bGVyYXRlZEFuaW1hdGlvbnMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gLTFfbHU7IH0KKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRX
aWR0aCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAtMV9sdTsgfQorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudEhlaWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAt
MV9sdTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFz
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0
LmNwcAppbmRleCA0NDBiNzljZDAzMjQ4OGUxYjdhNzQ2ZjdiNjE4Yzk5MzFlZThhNjhjLi42ZWNj
MGRlMzk3MmQyNzkwNjNmM2M1ZTczN2E3NTg4MTNmNzQzYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgZmxv
YXQgUmVuZGVyQ29tYmluZVRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgRm9udENhc2NhZGUKICAgICByZXR1cm4gUmVuZGVyVGV4dDo6d2lkdGgoZnJvbSwg
bGVuZ3RoLCBmb250LCB4UG9zaXRpb24sIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwog
fQogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRP
cmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9h
dFBvaW50PiBSZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRS
ZWN0JiBib3hSZWN0KSBjb25zdAogewogICAgIGlmICghbV9pc0NvbWJpbmVkKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29t
YmluZVRleHQuaAppbmRleCA4M2I4NDc1MzJmNDUwZmVlY2UyNDQ1M2VmZTA3ODQ2MTU2ODI0ZjQ5
Li4xNTg1MGYxNWEzNWYxMzJjYzZmZWUyYTk4YmFiZTMwYjFiMWE1NzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAtMzQsNyArMzQsNyBAQCBw
dWJsaWM6CiAgICAgVGV4dCYgdGV4dE5vZGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKICAgICB2b2lkIGNvbWJpbmVUZXh0SWZOZWVk
ZWQoKTsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4g
Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdDsKICAgICBT
dHJpbmcgY29tYmluZWRTdHJpbmdGb3JSZW5kZXJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQ29t
YmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5l
ZFRleHRXaWR0aChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5z
aXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRl
eCBkM2FjMGMzNjFlMGNmNWUwNThkNzg0Y2YyMTAyY2M2OWI2ZjRlNThjLi42MzFmYzFkNDVlNDE1
OGU4OTAxM2IwMjM0ODI1NjU2YzI0MWFjYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RydWN0IENvdW50ZXJQbGFu
IHsKICAgICBpbnQgdmFsdWU7CiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8Q291bnRlclBsYW4+IHBs
YW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpZGVu
dGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q291bnRlclBsYW4+IHBsYW5Db3VudGVyKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKQogewog
ICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9kZSBvciBlbHNlIHdlIGNhbm5vdCBo
YXZlIGEgY291bnRlci4KICAgICBFbGVtZW50KiBnZW5lcmF0aW5nRWxlbWVudCA9IHJlbmRlcmVy
LmdlbmVyYXRpbmdFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAppbmRleCBiYmNjYjcxN2E1N2JkM2E1ZGMwMjE4ODZmMTJhOWVkM2QzYjE0MmU5Li5jMmUw
NGJlOTYxYzExNWU1ZDA5MDVmMTJiMzhlMmQyZTE1NjJjNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5vcGFjaXR5KCkgPCAx
LjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0
eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJl
cXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAorICAgIGJvb2wgdmlz
aWJsZVRvSGl0VGVzdGluZyhzdGQ6Om9wdGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVx
dWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
aW5kZXggNTk2YTNhZjlhYWY4NjdiM2FjNDE2YTA3MjZlNzNkMmRiMGZlZDQ5OS4uYzQ0NjA1ODM4
NzNmMGQwNmU3OTEyOGMzNDExOWViMGRlYjg1M2U4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0xNjIsMTAgKzE2MiwxMCBAQCBMYXlv
dXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCwgTGluZURpcmVjdGlvbgogICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVj
dGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9J
bnQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxl
eGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5n
TW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwIHx8
IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGlu
dCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0
ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsK
QEAgLTE4NCwxNCArMTg0LDE0IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxl
Qm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGlu
ZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIGlmICghaXNDb2x1bW5G
bG93KCkgJiYgIW1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoKmJhc2VsaW5lQ2hpbGQpKQogICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxp
bmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkgfTsKICAgICBp
ZiAoaXNDb2x1bW5GbG93KCkgJiYgbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVD
aGlsZCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgKG1haW5BeGlzRXh0ZW50Rm9yQ2hp
bGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKS50b0ludCgp
IH07CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQt
PmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBiYXNl
bGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNl
bGluZSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50
byBmaXJzdExpbmVCb3hCYXNlbGluZSBhbmQgc3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdy
aXRpbmcgbW9kZSByb290LgogICAgICAgICAvLyBUaGlzIHdvdWxkIGFsc28gZml4IHNvbWUgY2Fz
ZXMgd2hlcmUgdGhlIGZsZXhib3ggaXMgb3J0aG9nb25hbCB0byBpdHMgY29udGFpbmVyLgpAQCAt
MjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyAoYmFzZWxp
bmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkudG9JbnQoKSB9OwogfQog
Ci1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CkBAIC00OTUsNyAr
NDk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y2hpbGRJbnRyaW5zaWNMb2dp
Y2FsV2lkdGgoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICBpZiAoY2hpbGRDcm9zc1NpemVJ
c0RlZmluaXRlKGNoaWxkLCBjaGlsZC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAgICAgICAg
cmV0dXJuIGNoaWxkLmxvZ2ljYWxXaWR0aCgpOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y2hpbGRPdmVycmlkaW5nV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjaGls
ZE92ZXJyaWRpbmdXaWR0aDsKICAgICBpZiAoY2hpbGQuaGFzT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0
aCgpKSB7CiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IGNsZWFyIHBvdGVudGlhbCBvdmVycmlkZXMg
dG8gY29tcHV0ZSB0aGUgbG9naWNhbCB3aWR0aCBvdGhlcndpc2UgaXQnbGwgcmV0dXJuIHRoZSBv
dmVycmlkZSBzaXplLgogICAgICAgICBjaGlsZE92ZXJyaWRpbmdXaWR0aCA9IGNoaWxkLm92ZXJy
aWRpbmdMb2dpY2FsV2lkdGgoKTsKQEAgLTU1Niw3ICs1NTYsNyBAQCBzdGF0aWMgYm9vbCBjaGls
ZEhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgcmV0dXJuIGNoaWxk
Lmhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgfHwgY2hpbGQuc3R5bGUoKS5oYXNBc3BlY3RSYXRp
bygpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0
ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUgc2l6ZVR5
cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSkKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
RmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hp
bGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNpemUpCiB7CiAgICAgLy8gSWYg
d2UgaGF2ZSBhIGhvcml6b250YWwgZmxvdywgdGhhdCBtZWFucyB0aGUgbWFpbiBzaXplIGlzIHRo
ZSB3aWR0aC4KICAgICAvLyBUaGF0J3MgdGhlIGxvZ2ljYWwgd2lkdGggZm9yIGhvcml6b250YWwg
d3JpdGluZyBtb2RlcywgYW5kIHRoZSBsb2dpY2FsCkBAIC01NzIsNyArNTcyLDcgQEAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZv
ckNoaWxkKFJlbmRlckJveCYKICAgICAgICAgLy8gaWYgbmVjZXNzYXJ5IChzZWUgQ29tcHV0ZU5l
eHRGbGV4TGluZSBhbmQgdGhlIGNhbGwgdG8KICAgICAgICAgLy8gY2hpbGRIYXNJbnRyaW5zaWNN
YWluQXhpc1NpemUpIHNvIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhlIHR3byBoZWlnaHQKICAgICAg
ICAgLy8gY2FsbHMgaGVyZSB3aWxsIHJldHVybiB1cC10by1kYXRlIGRhdGEuCi0gICAgICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhl
aWdodChjaGlsZCkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9
IGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2FjaGVk
Q2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodChjaGlsZCkpOwogICAgICAgICBpZiAo
IWhlaWdodCkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAgICAgICAgIHJldHVybiBoZWln
aHQudmFsdWUoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKQEAgLTgwMiw3ICs4
MDIsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1c2VDaGlsZEFzcGVjdFJhdGlvKGNvbnN0
IFJlbmRlckJveCYgY2hpbGQpCiAgICAgcmV0dXJuIGNoaWxkQ3Jvc3NTaXplSXNEZWZpbml0ZShj
aGlsZCwgY3Jvc3NTaXplTGVuZ3RoRm9yQ2hpbGQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgY2hpbGQp
KTsKIH0KIAotLy8gRklYTUU6IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nIG1h
eSBuZWVkIHRvIHJldHVybiBhbiBPcHRpb25hbDxMYXlvdXRVbml0PiBpbiB0aGUgZnV0dXJlCisv
LyBGSVhNRTogY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcgbWF5IG5lZWQgdG8g
cmV0dXJuIGFuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW4gdGhlIGZ1dHVyZQogLy8gcmF0
aGVyIHRoYW4gcmV0dXJuaW5nIGluZGVmaW5pdGUgc2l6ZXMgYXMgMC8tMS4KIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0CiB7CkBA
IC04MTksNyArODE5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1h
aW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVuZGVyQm8KICAgICAgICAgcmV0dXJu
IHZhbHVlOwogICAgIH07CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjcm9zc1NpemU7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjcm9zc1NpemU7CiAgICAgaWYgKGNyb3NzU2l6
ZUxlbmd0aC5pc0ZpeGVkKCkpCiAgICAgICAgIGNyb3NzU2l6ZSA9IGFkanVzdEZvckJveFNpemlu
ZyhjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoKTsKICAgICBlbHNlIGlmIChjcm9zc1NpemVMZW5ndGgu
aXNBdXRvKCkpIHsKQEAgLTEyMDksNyArMTIwOSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lucygpCiBMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVuZGVyQm94JiBjaGlsZCwgTGF5
b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAgTGVuZ3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9y
Q2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVu
dCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVu
dCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkg
ewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGls
ZCwgTWF4U2l6ZSwgbWF4KTsKICAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXpl
LCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDY0YmE4Njc5MmVhMmI5NjM3OTQ3MGUxNTE1
MDBlMzE2MTg5MjliZDAuLmZjY2I0MDdiNzExNDRlYTA0NGZmY2U0ZWNmYzE4MjAzMWM3NjNmZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01
Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwogCiAg
ICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVk
TG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHBy
aXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudCgpIGNvbnN0OwogICAgIExheW91
dFVuaXQgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFp
bkF4aXNDb250ZW50RXh0ZW50KExheW91dFVuaXQgY29udGVudExvZ2ljYWxIZWlnaHQpOwotICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKFJlbmRl
ckJveCYgY2hpbGQsIFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNpemUpOworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94
JiBjaGlsZCwgU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSk7CiAgICAgV3JpdGluZ01vZGUg
dHJhbnNmb3JtZWRXcml0aW5nTW9kZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJl
Qm9yZGVyU3RhcnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckVuZCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDhiZmFj
YzZlZjBhNjk0MWUzNDBhZWQ4OTZkM2Y2ZTE4MjVjOGMxZjQuLjIwOTljNGJkNWQ1NjYyYzI3ZjZh
NGJjOTE1NGE1NmRmODgxYmI4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFJlbmRlckdyaWQ6Om5hbWVkR3JpZExpbmVz
RGVmaW5pdGlvbkRpZENoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUpCiAKIC8vIFRo
aXMgbWV0aG9kIG9wdGltaXplcyB0aGUgZ3V0dGVycyBjb21wdXRhdGlvbiBieSBza2lwaW5nIHRo
ZSBhdmFpbGFibGUgc2l6ZQogLy8gY2FsbCBpZiBnYXBzIGFyZSBmaXhlZCBzaXplIChpdCdzIG9u
bHkgbmVlZGVkIGZvciBwZXJjZW50YWdlcykuCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJH
cmlkOjphdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6YXZh
aWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsK
ICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExlbmd0aCA9IGlzUm93QXhpcyA/IHN0eWxlKCkuY29s
dW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQog
ICAgIG1fYmFzZWxpbmVJdGVtc0NhY2hlZCA9IGZhbHNlOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
ckdyaWQ6OmdyaWRHYXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyR3Jp
ZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdmFp
bGFibGVTaXplIHx8ICphdmFpbGFibGVTaXplID49IDApOwogICAgIGNvbnN0IEdhcExlbmd0aCYg
Z2FwTGVuZ3RoID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM/IHN0eWxlKCkuY29sdW1uR2FwKCkg
OiBzdHlsZSgpLnJvd0dhcCgpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIExheW91dFVuaXQgUmVuZGVy
R3JpZDo6Z3JpZEl0ZW1PZmZzZXQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvclJvd3MgPyBtX29mZnNldEJldHdlZW5S
b3dzLmRpc3RyaWJ1dGlvbk9mZnNldCA6IG1fb2Zmc2V0QmV0d2VlbkNvbHVtbnMuZGlzdHJpYnV0
aW9uT2Zmc2V0OwogfQogCi1MYXlvdXRVbml0IFJlbmRlckdyaWQ6Omd1dHRlcnNTaXplKGNvbnN0
IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVk
IHN0YXJ0TGluZSwgdW5zaWduZWQgc3BhbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
U2l6ZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3V0dGVyc1NpemUoY29uc3QgR3Jp
ZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgc3Rh
cnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZVNpemUpIGNvbnN0CiB7CiAgICAgaWYgKHNwYW4gPD0gMSkKICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVUcmFja1NpemVzRm9y
SW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbAogICAgIEFTU0VSVChh
bGdvcml0aG0udHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkpOwogfQogCi11bnNp
Z25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNp
emUpIGNvbnN0Cit1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0Nv
dW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gYXZhaWxhYmxlU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF2YWlsYWJsZVNp
emUgfHwgYXZhaWxhYmxlU2l6ZS52YWx1ZSgpICE9IC0xKTsKICAgICBib29sIGlzUm93QXhpcyA9
IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAtNDcwLDggKzQ3MCw4IEBAIHVuc2lnbmVkIFJl
bmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjCiAgICAgYm9vbCBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0gZmFsc2U7
CiAgICAgaWYgKCFhdmFpbGFibGVTaXplKSB7CiAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4U2l6
ZSA9IGlzUm93QXhpcyA/IHN0eWxlKCkubG9naWNhbE1heFdpZHRoKCkgOiBzdHlsZSgpLmxvZ2lj
YWxNYXhIZWlnaHQoKTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Js
b2NrQXZhaWxhYmxlU2l6ZTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
TWF4U2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tBdmFpbGFibGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWls
YWJsZU1heFNpemU7CiAgICAgICAgIGlmIChtYXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAg
ICAgICAgIGlmIChtYXhTaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAg
ICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVp
Z2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7CkBAIC00ODMsNyArNDgz
LDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICAgICAgaWYgKCFhdmFpbGFibGVNYXhT
aXplICYmICFtaW5TaXplLmlzU3BlY2lmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gYXV0b1Jl
cGVhdFRyYWNrTGlzdExlbmd0aDsKIAotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVNaW5TaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZU1pblNpemU7CiAgICAgICAgIGlmIChtaW5TaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAg
ICAgIGlmICghY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSAmJiBtaW5TaXplLmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJs
ZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZyk7CkBAIC01OTIsNyArNTkyLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6
Y2xhbXBBdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24s
IHUKIC8vIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGRvZXMgYWx3YXlzIHJldHVybiBhIHZhbHVl
IGV2ZW4gaWYgd2UgY2Fubm90IHJlc29sdmUgaXQgbGlrZSB3aGVuCiAvLyBjb21wdXRpbmcgdGhl
IGludHJpbnNpYyBzaXplIChwcmVmZXJyZWQgd2lkdGhzKS4gVGhhdCdzIHdoeSB3ZSBwYXNzIHRo
ZSByZXNwb25zaWJpbGl0eSB0byB0aGUKIC8vIGNhbGxlciB3aG8gZG9lcyBrbm93IHdoZXRoZXIg
dGhlIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoIGlzIGluZGVmaW5pdGUgb3Igbm90Lgotdm9pZCBS
ZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxn
b3JpdGhtLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0
Cit2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTG9naWNh
bFdpZHRoKSBjb25zdAogewogICAgIEdyaWQmIGdyaWQgPSBhbGdvcml0aG0ubXV0YWJsZUdyaWQo
KTsKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyA9IGNvbXB1dGVBdXRvUmVwZWF0VHJh
Y2tzQ291bnQoRm9yQ29sdW1ucywgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKQEAgLTkwOSw3ICs5
MDksNyBAQCBzdGF0aWMgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgY29udGVudEFs
aWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgpCiAgICAgcmV0dXJuIG5vcm1hbEJlaGF2aW9yOwog
fQogCi1zdGF0aWMgYm9vbCBvdmVycmlkZVNpemVDaGFuZ2VkKGNvbnN0IFJlbmRlckJveCYgY2hp
bGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVu
aXQ+IHdpZHRoLCBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpCitzdGF0aWMgYm9vbCBvdmVy
cmlkZVNpemVDaGFuZ2VkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucykKICAgICAgICAgcmV0dXJuICFjaGlsZC5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIHx8IGNoaWxkLm92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbFdpZHRoKCkgIT0gd2lkdGg7CkBAIC05MjEsNyArOTIxLDcgQEAgc3Rh
dGljIGJvb2wgaGFzUmVsYXRpdmVCbG9ja0F4aXNTaXplKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQs
IGNvbnN0IFJlbmRlckJveCYgY2gKICAgICByZXR1cm4gR3JpZExheW91dEZ1bmN0aW9uczo6aXNP
cnRob2dvbmFsQ2hpbGQoZ3JpZCwgY2hpbGQpID8gY2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsV2lk
dGgoKSB8fCBjaGlsZC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpIDogY2hpbGQuaGFz
UmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKLXZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlR3Jp
ZEFyZWFMb2dpY2FsU2l6ZShSZW5kZXJCb3gmIGNoaWxkLCBPcHRpb25hbDxMYXlvdXRVbml0PiB3
aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAordm9pZCBSZW5kZXJHcmlk
Ojp1cGRhdGVHcmlkQXJlYUxvZ2ljYWxTaXplKFJlbmRlckJveCYgY2hpbGQsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBj
b25zdAogewogICAgIC8vIEJlY2F1c2UgdGhlIGdyaWQgYXJlYSBjYW5ub3QgYmUgc3R5bGVkLCB3
ZSBkb24ndCBuZWVkIHRvIGFkanVzdAogICAgIC8vIHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3Vu
dCBmb3IgJ2JveC1zaXppbmcnLgpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlv
bk1vZGUgZGkKICAgICByZXR1cm4gYmFzZWxpbmUudmFsdWUoKSArIChkaXJlY3Rpb24gPT0gSG9y
aXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CiB9CiAK
LU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8ICFtX2dyaWQuaGFz
R3JpZEl0ZW1zKCkgfHwgc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkudG9JbnQo
KTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QK
IHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KQEAgLTE1NjgsNyArMTU2OCw3
IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hp
bGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwKICAgICBlbHNlIHsKICAgICAgICAgZW5kID0gcG9z
aXRpb25zW2VuZExpbmVdOwogICAgICAgICAvLyBUaGVzZSB2ZWN0b3JzIHN0b3JlIGxpbmUgcG9z
aXRpb25zIGluY2x1ZGluZyBnYXBzLCBidXQgd2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoZW0gZm9y
IHRoZSBlZGdlcyBvZiB0aGUgZ3JpZC4KLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZh
aWxhYmxlU2l6ZUZvckd1dHRlcnMgPSBhdmFpbGFibGVTcGFjZUZvckd1dHRlcnMoZGlyZWN0aW9u
KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplRm9yR3V0
dGVycyA9IGF2YWlsYWJsZVNwYWNlRm9yR3V0dGVycyhkaXJlY3Rpb24pOwogICAgICAgICBpZiAo
ZW5kTGluZSA+IDAgJiYgZW5kTGluZSA8IGxhc3RMaW5lKSB7CiAgICAgICAgICAgICBBU1NFUlQo
IW1fZ3JpZC5uZWVkc0l0ZW1zUGxhY2VtZW50KCkpOwogICAgICAgICAgICAgZW5kIC09IGd1dHRl
cnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCBlbmRMaW5lIC0gMSwgMiwgYXZhaWxhYmxlU2l6ZUZv
ckd1dHRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZWZiMTA2
NDMzYjQ3MzUwZjFiMzE5YzgzZjA2YWY0ZDRmMjBlYWM4OS4uOGMxMTExMjNmOTM4YTM5ZmVmZDRj
ODMwOTRmNDliNmUzYzI5MmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFN0
YXJ0Rm9yRGlyZWN0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0
IHsgcmV0dXJuIG1fZ3JpZC5leHBsaWNpdEdyaWRTdGFydChkaXJlY3Rpb24pOyB9CiAKICAgICAv
LyBSZXF1aXJlZCBieSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uIEtlZXAgdGhlbSB1bmRlciBj
b250cm9sLgotICAgIExheW91dFVuaXQgZ3V0dGVyc1NpemUoY29uc3QgR3JpZCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBPcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGd1
dHRlcnNTaXplKGNvbnN0IEdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVk
IHN0YXJ0TGluZSwgdW5zaWduZWQgc3Bhbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVTaXplKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGdyaWRJdGVtT2Zmc2V0KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUdyaWRBcmVhTG9naWNh
bFNpemUoUmVuZGVyQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVHcmlkQXJlYUxvZ2ljYWxT
aXplKFJlbmRlckJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGln
bm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBib29sIGlzQmFzZWxp
bmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcywgQWxs
b3dlZEJhc2VMaW5lID0gQm90aExpbmVzKSBjb25zdDsKIApAQCAtOTYsMTIgKzk2LDEyIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBzZWxmQWxpZ25tZW50Q2hhbmdlZFRvU3RyZXRjaChHcmlkQXhpcywg
Y29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUs
IGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogICAgIGJvb2wgc2VsZkFsaWdubWVudENoYW5nZWRG
cm9tU3RyZXRjaChHcmlkQXhpcywgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2VGb3JHdXR0ZXJzKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAg
IGJvb2wgZXhwbGljaXRHcmlkRGlkUmVzaXplKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAg
ICAgYm9vbCBuYW1lZEdyaWRMaW5lc0RlZmluaXRpb25EaWRDaGFuZ2UoY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdDsKIAotICAgIHVuc2lnbmVkIGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVT
aXplKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVTaXplKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MpIGNvbnN0Owog
CkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGVyZm9ybUdyaWRJdGVt
c1ByZUxheW91dChjb25zdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mKSBjb25zdDsKIAotICAg
IHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mLCBPcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0OworICAgIHZvaWQgcGxh
Y2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0
ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYpIGNvbnN0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25z
T3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFq
b3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0
OwpAQCAtMTcwLDE1ICsxNzAsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJn
aW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVyQm94Jik7CiAKICAgICBMYXlvdXRVbml0IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZp
bmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0lubGluZUJhc2VsaW5lQWxpZ25lZENoaWxkKGNvbnN0IFJlbmRlckJv
eCYpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb2x1bW5BeGlzQmFzZWxpbmVPZmZzZXRGb3JD
aGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHJvd0F4aXNCYXNl
bGluZU9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0
VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgTGF5b3V0
VW5pdCBncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlU2l6ZSkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBncmlkR2FwKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXpl
KSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG5vbkNvbGxhcHNlZFRyYWNrcyhHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIGNvbnN0IEdyaWQmKSBjb25zdDsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2
YXRlOgogICAgIENvbnRlbnRBbGlnbm1lbnREYXRhIG1fb2Zmc2V0QmV0d2VlbkNvbHVtbnM7CiAg
ICAgQ29udGVudEFsaWdubWVudERhdGEgbV9vZmZzZXRCZXR3ZWVuUm93czsKIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBPcHRpb25hbDxzaXplX3Q+PiBPdXRPZkZsb3dQ
b3NpdGlvbnNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90Pj4gT3V0T2ZGbG93UG9zaXRpb25zTWFwOwogICAgIE91dE9mRmxvd1Bv
c2l0aW9uc01hcCBtX291dE9mRmxvd0l0ZW1Db2x1bW47CiAgICAgT3V0T2ZGbG93UG9zaXRpb25z
TWFwIG1fb3V0T2ZGbG93SXRlbVJvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKaW5kZXggYmVhNDYzYjk5ZWY3MjgzNDA0MTI5MGRmM2EzOWM0OWE2YjI4MTQ2Yi4u
NmRiNGU5ZGFmOWRlYzJiZGIzMWI1NWMyNDE4ZTNlYzFjOTM2NTdjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQ
cmVmZXJyZWQgc2hvdWwKICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aChzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKIH0KIAotTGF5b3V0VW5pdCBS
ZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRV
bml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckltYWdlOjpj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0
aW1hdGVkVXNlZFdpZHRoKSBjb25zdAogewogICAgIGlmIChzaG91bGRDb2xsYXBzZVRvRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKaW5kZXggYmFkMGFkZDA0NmJiOTI1YTlmMmZjYmJkNjU3ZTA1YThiNmFlMTAyMS4uOGNkYTRm
ZjJiMWNlMjY0OGZlOGIyMjQ3Mzk2YjZiOTE0NTQ3MjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHMgfHwg
bV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBv
dmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxv
cHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1
MjliMWM2NzA4OTQ4MDllMjc4Yzc1ZjZlZjNkYmQ0Zjc0NzI5Mjk1Li42NWZkNzc4ODc3YWJhYWVi
NGI1ZDAyNTc4MjhmNTk2ZjUyZWYxZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcApAQCAtOTI5LDcgKzkyOSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5l
Ojpjb21wdXRlVmlzaWJsZVJlY3RVc2luZ1BhaW50T2Zmc2V0KGNvbnN0IExheW91dFJlY3QmIHJl
CiAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVu
ZGVySW5saW5lOjpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0
JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVS
ZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5k
ZXJJbmxpbmU6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJl
Y3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gUmVwYWludCBvZmZzZXQgY2FjaGUg
aXMgb25seSB2YWxpZCBmb3Igcm9vdC1yZWxhdGl2ZSByZXBhaW50aW5nCiAgICAgaWYgKHZpZXco
KS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgp
ICYmICFjb250YWluZXIgJiYgIWNvbnRleHQub3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENv
bnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGEyZmM4MTNhM2Q3YWM5ZTg3NDc4OGY5YmVh
YTEyZjRjNDUxYTdjMjguLjI1MmUxOTg4ODE5YjJkN2M0MDExNGI2NjBlOWNiY2Y3ZTc2ZmZjZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTEyOSw3ICsxMjks
NyBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRl
eHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRVbml0IG91dGxpbmVXaWR0aCkgY29uc3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRS
ZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQp
IGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2li
bGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAg
ICBMYXlvdXRSZWN0IGNvbXB1dGVWaXNpYmxlUmVjdFVzaW5nUGFpbnRPZmZzZXQoY29uc3QgTGF5
b3V0UmVjdCYpIGNvbnN0OwogCiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwg
TWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMTg1ZjZjZjZhOWE5M2Zl
ODA3OWVjNDM1YzZlYTQ2YjE2Zjc4YjhiZC4uYzEzMzRlZWE4MGZkMmNhNjEzYWU1YjVkY2NiMGIx
OWE1ZjVkYjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC00MDczLDcgKzQwNzMsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXll
cihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogCiAgICAgLy8gQ2hl
Y2sgZm9yIGhpdCB0ZXN0IG9uIGJhY2tmYWNlIGlmIGJhY2tmYWNlLXZpc2liaWxpdHkgaXMgJ2hp
ZGRlbicKICAgICBpZiAobG9jYWxUcmFuc2Zvcm1TdGF0ZSAmJiByZW5kZXJlcigpLnN0eWxlKCku
YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5OjpIaWRkZW4pIHsKLSAg
ICAgICAgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVydGVkTWF0cml4ID0gbG9j
YWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVydGVkTWF0cml4ID0g
bG9jYWxUcmFuc2Zvcm1TdGF0ZS0+bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS5pbnZlcnNlKCk7CiAg
ICAgICAgIC8vIElmIHRoZSB6LXZlY3RvciBvZiB0aGUgbWF0cml4IGlzIG5lZ2F0aXZlLCB0aGUg
YmFjayBpcyBmYWNpbmcgdG93YXJkcyB0aGUgdmlld2VyLgogICAgICAgICBpZiAoaW52ZXJ0ZWRN
YXRyaXggJiYgaW52ZXJ0ZWRNYXRyaXgudmFsdWUoKS5tMzMoKSA8IDApCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NzIsNyArNDY3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJl
cGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKQogICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRSZWN0
YW5nbGUocmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0
KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRGcm9tUm9vdCwgY29uc3QgT3B0aW9uYWw8TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94
KSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCkgY29u
c3QKIHsKICAgICAvLyBBbHdheXMgZXhhbWluZSB0aGUgY2FudmFzIGFuZCB0aGUgcm9vdC4KICAg
ICAvLyBGSVhNRTogQ291bGQgZWxpbWluYXRlIHRoZSBpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVy
KCkgY2hlY2sgaWYgd2UgZml4IGJhY2tncm91bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVy
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA5NTJhZTRkM2Y3
ZWE2MGE5Y2JjYjY4MWQ2NzJmZjUwMjkwZGUxNmJhLi5jOWFmYzFlMWJkMjEwOTkwYjAzMTY5MTUw
NDRmNDJlMmQ2NzBhOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApA
QCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlckxheWVyKiBwYWludE9yZGVy
UGFyZW50KCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXllclJlcGFpbnRSZWN0cz4gcmVwYWlu
dFJlY3RzKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPExheWVyUmVwYWludFJlY3RzPiByZXBh
aW50UmVjdHMoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcmVwYWludFJlY3RzVmFsaWQp
CiAgICAgICAgICAgICByZXR1cm4gbV9yZXBhaW50UmVjdHM7CkBAIC02NzIsNyArNjcyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgY2xpcENyb3NzZXNQYWludGluZ0JvdW5kYXJ5KCkgY29uc3Q7CiAK
ICAgICAvLyBQYXNzIG9mZnNldEZyb21Sb290IGlmIGtub3duLgotICAgIGJvb2wgaW50ZXJzZWN0
c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBPcHRpb25hbDxMYXlvdXRSZWN0PiYgY2FjaGVk
Qm91bmRpbmdCb3ggPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgaW50ZXJzZWN0c0Rh
bWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFNp
emUmIG9mZnNldEZyb21Sb290LCBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNo
ZWRCb3VuZGluZ0JveCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBlbnVtIENhbGN1bGF0
ZUxheWVyQm91bmRzRmxhZyB7CiAgICAgICAgIEluY2x1ZGVTZWxmVHJhbnNmb3JtICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKQEAgLTc5Niw4ICs3OTYsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0OwogCiAgICAgLy8gTGF5ZXJzIHdpdGgg
dGhlIHNhbWUgU2Nyb2xsaW5nU2NvcGUgYXJlIHNjcm9sbGVkIGJ5IHNvbWUgY29tbW9uIGFuY2Vz
dG9yIHNjcm9sbGVyLiBVc2VkIGZvciBhc3luYyBzY3JvbGxpbmcuCi0gICAgT3B0aW9uYWw8U2Ny
b2xsaW5nU2NvcGU+IGJveFNjcm9sbGluZ1Njb3BlKCkgY29uc3QgeyByZXR1cm4gbV9ib3hTY3Jv
bGxpbmdTY29wZTsgfQotICAgIE9wdGlvbmFsPFNjcm9sbGluZ1Njb3BlPiBjb250ZW50c1Njcm9s
bGluZ1Njb3BlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1Njcm9sbGluZ1Njb3BlOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdTY29wZT4gYm94U2Nyb2xsaW5nU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX2JveFNjcm9sbGluZ1Njb3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTY3Jv
bGxpbmdTY29wZT4gY29udGVudHNTY3JvbGxpbmdTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNTY3JvbGxpbmdTY29wZTsgfQogCiAgICAgYm9vbCBwYWludHNXaXRoVHJhbnNwYXJlbmN5
KE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yKSBjb25zdAogICAgIHsKQEAg
LTExNjgsNyArMTE2OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGNo
aWxkIGxheWVycyB0aGF0IGNhbm5vdCBjcmVhdGUgc3RhY2tpbmcgY29udGV4dHMgYW5kIGFwcGVh
ciBpbiBub3JtYWwgZmxvdyBvcmRlci4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+IG1fbm9ybWFsRmxvd0xpc3Q7CiAKLSAgICAvLyBPbmx5IHZhbGlkIGlmIG1fcmVw
YWludFJlY3RzVmFsaWQgaXMgc2V0IChPcHRpb25hbDw+IG5vdCB1c2VkIHRvIGF2b2lkIHBhZGRp
bmcpLgorICAgIC8vIE9ubHkgdmFsaWQgaWYgbV9yZXBhaW50UmVjdHNWYWxpZCBpcyBzZXQgKHN0
ZDo6b3B0aW9uYWw8PiBub3QgdXNlZCB0byBhdm9pZCBwYWRkaW5nKS4KICAgICBMYXllclJlcGFp
bnRSZWN0cyBtX3JlcGFpbnRSZWN0czsKIAogICAgIC8vIE91ciBjdXJyZW50IHJlbGF0aXZlIHBv
c2l0aW9uIG9mZnNldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggZmRkZTA0MGVmMWVkMjEzZDNiMTUzZjNjMGVmMjE4NDI0NmJhYTBj
Mi4uOGNiZWJkMzJhMTgwNDVhZWU5NDE1NWJlOWQ5YmYwNzJhYzAwZmNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTExOTYsOSAr
MTE5Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2Zyb21BbmNlc3RvckdyYXBoaWNz
TGF5ZXIudmFsdWUoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21B
bmNlc3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFy
ZW50R3JhcGhpY3NMYXllcjsKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5
R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbUFuY2Vz
dG9yR3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbVBh
cmVudEdyYXBoaWNzTGF5ZXI7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21Q
cmltYXJ5R3JhcGhpY3NMYXllcjsKICAgICAKICAgICBjb25zdCBSZW5kZXJMYXllciYgbV9yZW5k
ZXJMYXllcjsKICAgICBjb25zdCBSZW5kZXJMYXllciogbV9jb21wb3NpdGluZ0FuY2VzdG9yOwpA
QCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21l
dHJ5KGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGVkQW5jZXN0b3IpCiAgICAgICAgIG1fY29u
dGVudHNDb250YWlubWVudExheWVyLT5zZXRTaXplKHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC5z
aXplKCkpOwogICAgIH0KIAotICAgIGF1dG8gY29tcHV0ZUFuaW1hdGlvbkV4dGVudCA9IFsmXSAo
KSAtPiBPcHRpb25hbDxGbG9hdFJlY3Q+IHsKKyAgICBhdXRvIGNvbXB1dGVBbmltYXRpb25FeHRl
bnQgPSBbJl0gKCkgLT4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHsKICAgICAgICAgTGF5b3V0
UmVjdCBhbmltYXRlZEJvdW5kczsKICAgICAgICAgaWYgKGlzUnVubmluZ0FjY2VsZXJhdGVkVHJh
bnNmb3JtQW5pbWF0aW9uICYmIG1fb3duaW5nTGF5ZXIuZ2V0T3ZlcmxhcEJvdW5kc0luY2x1ZGlu
Z0NoaWxkcmVuQWNjb3VudGluZ0ZvclRyYW5zZm9ybUFuaW1hdGlvbnMoYW5pbWF0ZWRCb3VuZHMs
IFJlbmRlckxheWVyOjpJbmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRzKSkKICAgICAgICAgICAg
IHJldHVybiBGbG9hdFJlY3QoYW5pbWF0ZWRCb3VuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0MTNhNmUwZjA0Zjg1
YzdkNmMwZWQ3ODJhZTJiZGI3ZjU0OTMxZTM2Li5jMDM2ZDg1ODNiMzNiY2Q3OTU2MjAyMzUxZTM0
ZTkxZDdmMDE3ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBjb25zdCBpbnQg
Y2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdHJ1Y3QgU2Nyb2xsaW5nVHJlZVN0YXRlIHsKLSAg
ICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IHBhcmVudE5vZGVJRDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNjcm9sbGluZ05vZGVJRD4gcGFyZW50Tm9kZUlEOwogICAgIHNpemVfdCBuZXh0Q2hpbGRJ
bmRleCB7IDAgfTsKICAgICBib29sIG5lZWRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNVcGRh
dGUgeyBmYWxzZSB9OwogfTsKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlRXZlbnRSZWdpb25zKCkKICNlbmRpZgogfQogCi1zdGF0aWMgT3B0aW9u
YWw8U2Nyb2xsaW5nTm9kZUlEPiBmcmFtZUhvc3RpbmdOb2RlRm9yRnJhbWUoRnJhbWUmIGZyYW1l
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBmcmFtZUhvc3RpbmdOb2Rl
Rm9yRnJhbWUoRnJhbWUmIGZyYW1lKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSB8fCAh
ZnJhbWUudmlldygpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjMzNiw3ICsyMzM2LDcgQEAg
U3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZs
YWdzIGZsYWdzKQogICAgIHJldHVybiBsYXllclRyZWVUZXh0OwogfQogCi1PcHRpb25hbDxTdHJp
bmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1MYXllclRyZWVBc1RleHQoRWxlbWVu
dCYgZWxlbWVudCwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+IGZsYWdz
KQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1M
YXllclRyZWVBc1RleHQoRWxlbWVudCYgZWxlbWVudCwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJU
cmVlQXNUZXh0RmxhZ3M+IGZsYWdzKQogewogICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGlu
Zywgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNvbXBvc2l0b3IgIiA8PCB0aGlzIDw8ICIgcGxhdGZv
cm1MYXllclRyZWVBc1RleHQiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDU3M2Q1YjAxOGVlOTllNjM1M2VmYTU5NzdiMmYz
MTA4MzY0ZDg5MDQuLmQ2YmJmMmYzODc5ZTFlOTUzOTMzNGM5OWFiMWJiOTE4YWU1ZTJkZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
QEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAwKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0KEVsZW1lbnQmLCBP
cHRpb25TZXQ8UGxhdGZvcm1MYXllclRyZWVBc1RleHRGbGFncz4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9ybUxheWVyVHJlZUFzVGV4dChFbGVtZW50
JiwgT3B0aW9uU2V0PFBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M+KTsKIAogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZmxvYXQgY29udGVudHNT
Y2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5jcHAKaW5kZXggOWQyZDY4ODMzMDkxOWY0ZmU4YjFmMzNlNDcyZTcwZGVlNzAwZDZl
NC4uOTlkYjY2NjYxMGY3Nzg1YzY0ZWU1OWViZjRhMmJkZTM4NTZiNjIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VW
ZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8TGF5
ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3Rz
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVjdHM+IFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3RzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5
ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0cygpIDogc3RkOjpudWxsb3B0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXgg
NDlmMThhMTE5OWEyZDc4YTUzZGRkNWM2YWYzZDdmZjhkYzViMTkzZC4uZDExOGRjODFhNmE3YzYw
YmI0M2IyNzFjNzM1YjIxZDY2OThjODcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0Owog
Ci0gICAgT3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVjdHM+IGxheWVyUmVwYWludFJlY3RzKCkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXllclJlcGFpbnRSZWN0cz4gbGF5ZXJSZXBhaW50UmVj
dHMoKSBjb25zdDsKIAogICAgIGJvb2wgc3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQs
IGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IEtleWZyYW1lTGlzdCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgYW5pbWF0aW9uUGF1c2VkKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBTdHJpbmcmIG5hbWUp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGNkZTQ1NzFmZDQ5NjRlY2Y1YTc1OGU4YmEwOTAx
ZDc3ZjAxYzI3ZWEuLmI0MGQwYjg5MWQyNGM5YmJkMWZjYTkzZjQ0NzdmN2VkNThlYzNmMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIFJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OnVzZXNBc3luY1Njcm9sbGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuY29t
cG9zaXRvcigpLnVzZUNvb3JkaW5hdGVkU2Nyb2xsaW5nRm9yTGF5ZXIobV9sYXllcik7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0UG9zdExheW91dFNjcm9sbFBvc2l0
aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPiBwb3NpdGlvbikKK3ZvaWQgUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYTo6c2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8
U2Nyb2xsUG9zaXRpb24+IHBvc2l0aW9uKQogewogICAgIG1fcG9zdExheW91dFNjcm9sbFBvc2l0
aW9uID0gcG9zaXRpb247CiB9CkBAIC00ODIsNyArNDgyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbGluZ05vZGVJRCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fbGF5ZXIuYmFja2luZygpLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3Jk
aW5hdGlvblJvbGU6OlNjcm9sbGluZyk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJl
U3RhdGUpCitib29sIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRG
b3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgaWYg
KCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3MzgsNyArMTczOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6cGFu
U2Nyb2xsRnJvbVBvaW50KGNvbnN0IEludFBvaW50JiBzb3VyY2VQb2ludCkKICAgICBzY3JvbGxC
eVJlY3Vyc2l2ZWx5KGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEpKTsKIH0KIAotT3B0aW9uYWw8
TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRp
b24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zLCBjb25zdCBMYXlv
dXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpCitz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxF
eHBvc2VSZWN0KQogewogICAgIEFTU0VSVChtX2xheWVyLmFsbG93c0N1cnJlbnRTY3JvbGwoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5oCmluZGV4IGFlNDcxOTkzNzIzZGY4YWYwOTdmZDUwOTc2OTg5OGI4N2U3NTZiNDAu
LjE4MDBkOGZkMzI5YzI0N2U0ZTA1ZTMyYjc1OGIxOGExMzg2OTVjYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAt
NzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNUb3VjaEV2ZW50TGlz
dGVuZXJGb3JTY3JvbGxpbmcoKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRQb3N0TGF5b3V0U2Ny
b2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldFBvc3RM
YXlvdXRTY3JvbGxQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAg
dm9pZCBhcHBseVBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbklmTmVlZGVkKCk7CiAKICAgICBpbnQg
c2Nyb2xsV2lkdGgoKSBjb25zdDsKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgU2Ny
b2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdkJhci5n
ZXQoKTsgfQogICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNv
bnN0IGZpbmFsOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikg
ZmluYWw7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBm
aW5hbDsKICAgICBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKICAg
ICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKICAg
ICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgZmluYWw7CkBAIC0yNTIsNyArMjUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlck92ZXJmbG93U2Ny
b2xsKCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwo
KTsKIAotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IHVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJl
Y3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbkNo
YW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRS
ZWN0JiBsb2NhbEV4cG9zZVJlY3QpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBi
b29sIGFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWRq
dXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nOyB9CkBAIC0yODUsNyArMjg1LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogICAgIFNjcm9sbFBvc2l0aW9uIG1fc2Ny
b2xsUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExheW91dFNj
cm9sbFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+IG1fcG9zdExh
eW91dFNjcm9sbFBvc2l0aW9uOwogCiAgICAgLy8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3
ZSBoYXZlIGEgcGFpciBvZiBzY3JvbGxiYXJzLgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJh
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyNmJi
M2NiZTJmODlmOTM2NDA2NzA3M2JkOGUwYWE1MDNjOTk3ZmQ4Li4xZGU2OWQ2OTM2ZWE1MDg5ZThl
MGU2YzJkMWFjMGQ1ZDQ3NjkxZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRh
dGVGcm9tRWxlbWVudCgpCiAgICAgaWYgKG1fb3B0aW9uc0NoYW5nZWQpIHsKICAgICAgICAgZmxv
YXQgd2lkdGggPSAwOwogICAgICAgICBhdXRvJiBub3JtYWxGb250ID0gc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOwotICAgICAgICBPcHRpb25hbDxGb250Q2FzY2FkZT4gYm9sZEZvbnQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+IGJvbGRGb250OwogICAgICAgICBmb3IgKGF1dG8q
IGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAgIFN0
cmluZyB0ZXh0OwogICAgICAgICAgICAgV1RGOjpGdW5jdGlvbjxjb25zdCBGb250Q2FzY2FkZSYo
KT4gc2VsZWN0Rm9udCA9IFsmbm9ybWFsRm9udF0gKCkgLT4gY29uc3QgRm9udENhc2NhZGUmIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDlmOTNkMThlNDFk
YzljNzNiOWU1OTYyOTU5ZTYwNmE1NWVmMGFkMDEuLmNhYmVjMjg4MzkyZTcxZDFmMjFkOWVkZGI2
YTZjNjQxZWMyOWIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aApAQCAtMTgwLDggKzE4MCw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fb3B0aW9uc1dpZHRoOwog
ICAgIGludCBtX2luZGV4T2Zmc2V0OwogCi0gICAgT3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWE7Ci0gICAgT3B0aW9uYWw8aW50PiBtX2lu
ZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWE7CisgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJl
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lk
ZVBhZGRpbmdCb3R0b21BcmVhOwogCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCmluZGV4IGRkOWM5
ZDNlMDIzYjc4NWZmN2NhNTcwNzU4ODNjMDcxNmM4OTEzZTkuLmJhMjJhNDJmZWM3MTllY2IxZmRm
MWNlODU2MWMwOGNkZDRlNThjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmV4
cGxpY2l0VmFsdWVDaGFuZ2VkKCkKICAgICAgICAgaXRlbS0+dXBkYXRlVmFsdWUoKTsKIH0KIAot
dm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0RXhwbGljaXRWYWx1ZShPcHRpb25hbDxpbnQ+IHZhbHVl
KQordm9pZCBSZW5kZXJMaXN0SXRlbTo6c2V0RXhwbGljaXRWYWx1ZShzdGQ6Om9wdGlvbmFsPGlu
dD4gdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICBpZiAoIW1fdmFsdWVXYXNT
ZXRFeHBsaWNpdGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApp
bmRleCBkNmQ5YjNlNzJiMTAwYzFkMjZmOTNhZDNmYTBiMWI3ZjFlYjcxZGU5Li44NGMyMmEwMTgy
YzQyYjIwZjljOGViODVhMjE2MTFmNjZiZGQzODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgaW50IHZh
bHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpOwogCi0gICAgT3B0aW9uYWw8aW50
PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4cGxpY2l0bHkg
PyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9Ci0gICAgdm9pZCBzZXRFeHBsaWNpdFZhbHVlKE9w
dGlvbmFsPGludD4pOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxs
b3B0OyB9CisgICAgdm9pZCBzZXRFeHBsaWNpdFZhbHVlKHN0ZDo6b3B0aW9uYWw8aW50Pik7CiAK
ICAgICB2b2lkIHNldE5vdEluTGlzdChib29sIG5vdEluTGlzdCkgeyBtX25vdEluTGlzdCA9IG5v
dEluTGlzdDsgfQogICAgIGJvb2wgbm90SW5MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ub3RJbkxp
c3Q7IH0KQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4cGxpY2l0VmFsdWVD
aGFuZ2VkKCk7CiAKICAgICBXZWFrUHRyPFJlbmRlckxpc3RNYXJrZXI+IG1fbWFya2VyOwotICAg
IG11dGFibGUgT3B0aW9uYWw8aW50PiBtX3ZhbHVlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxpbnQ+IG1fdmFsdWU7CiAgICAgYm9vbCBtX3ZhbHVlV2FzU2V0RXhwbGljaXRseSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX25vdEluTGlzdCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBhNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUw
Yzg3OTFhMWRlMWIyM2JjLi4zYzAyYzkwMmFmNmIzNTIzZWY4Zjc5ZjM3OTUzMjFlZjIyMzUxYWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI5LDgg
KzEyOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJh
c2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7
CiAgICAgfQotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0K
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6Omlu
bGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJC
bG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVj
dGlvbik7IH0KIAogICAgIHZvaWQgZ2V0SXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0
SW5kZXgsIENvbG9yJiwgYm9vbCYgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7
CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc09wdGlvbnNX
aWR0aFVwZGF0ZTsKICAgICBpbnQgbV9vcHRpb25zV2lkdGg7CiAKLSAgICBPcHRpb25hbDxpbnQ+
IG1fbGFzdEFjdGl2ZUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2xhc3RBY3RpdmVJ
bmRleDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9vcHRpb25TdHlsZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmUwZWRm
M2M1YjMzNjgwMjBiMWIwNTI0NjFjN2FiNWJjMDc0NmVhLi4wZGNmYmNmNjAxZDM3OGUyODZjODE4
MmM0ZmRjODZhMDJkYTM5OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtOTk0LDcgKzk5NCw3IEBAIEZsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QKICAgICBy
ZXR1cm4gKmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIocmVjdCwgcmVwYWludENv
bnRhaW5lciwgdmlzaWJsZVJlY3RDb250ZXh0Rm9yUmVwYWludCgpKTsKIH0KIAotT3B0aW9uYWw8
TGF5b3V0UmVjdD4gUmVuZGVyT2JqZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0PiBSZW5kZXJPYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNv
bnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRh
aW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm4gcmVjdDsKQEAgLTEwMTUsNyArMTAxNSw3IEBA
IE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjCiAgICAgcmV0dXJuIHBhcmVudC0+Y29tcHV0ZVZpc2li
bGVSZWN0SW5Db250YWluZXIoYWRqdXN0ZWRSZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQog
Ci1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJl
Y3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiwgVmlzaWJsZVJlY3RDb250
ZXh0KSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBGbG9h
dFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiZmE4
NDhjNjIzZjEwMzJiODg4OGRlMzdkY2JiN2M1NWNmZDAwYjFmLi5hYzIyN2I3MzgwNTc2MGRiMGQw
MjYwYWNhNTcwOWE4YjFjNjAzMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCkBAIC02NDYsOCArNjQ2LDggQEAgcHVibGljOgogICAgIC8vIEdpdmVuIGEgcmVjdCBp
biB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSB0aGUgbG9jYXRpb24gaW4g
Y29udGFpbmVyIHNwYWNlIHdoZXJlIHRoaXMgcmVjdCBpcyB2aXNpYmxlLAogICAgIC8vIHdoZW4g
Y2xpcHBpbmcgYW5kIHNjcm9sbGluZyBhcyBzcGVjaWZpZWQgYnkgdGhlIGNvbnRleHQuIFdoZW4g
dXNpbmcgZWRnZS1pbmNsdXNpdmUgaW50ZXJzZWN0aW9uLCByZXR1cm4gc3RkOjpudWxsb3B0CiAg
ICAgLy8gcmF0aGVyIHRoYW4gYW4gZW1wdHkgcmVjdCBpZiB0aGUgcmVjdCBpcyBjb21wbGV0ZWx5
IGNsaXBwZWQgb3V0IGluIGNvbnRhaW5lciBzcGFjZS4KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPExh
eW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxl
UmVjdENvbnRleHQpIGNvbnN0OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21w
dXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4
dCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0
OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2li
bGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzTm9uRW1wdHlWaXNpYmxlUmVjdFJlc3BlY3RpbmdQ
YXJlbnRGcmFtZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKaW5kZXggNTFkN2M1Yzc4MzYyYjNhYWUzNzBjZDExZTBhMWY5MjFiNDdiOWUy
OC4uYzQwMWNhNTI3ODgyMGZkZDVjYWJkYmMxM2FlZjE2MzZlODNjN2RhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC01NjMsNyArNTYzLDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNo
b3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAgICAgIC8vIG9mICd3aWR0aCcgaXM6ICh1
c2VkIGhlaWdodCkgKiAoaW50cmluc2ljIHJhdGlvKQogICAgICAgICAgICAgaWYgKGludHJpbnNp
Y1JhdGlvICYmICgoY29tcHV0ZWRIZWlnaHRJc0F1dG8gJiYgIWhhc0ludHJpbnNpY1dpZHRoICYm
IGhhc0ludHJpbnNpY0hlaWdodCkgfHwgIWNvbXB1dGVkSGVpZ2h0SXNBdXRvKSkgewogICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgZXN0aW1hdGVkVXNlZFdpZHRoID0gaGFzSW50cmluc2ljV2lk
dGggPyBMYXlvdXRVbml0KGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpKSA6IGNvbXB1dGVDb25zdHJh
aW5lZExvZ2ljYWxXaWR0aChzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKLSAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KE9wdGlvbmFsPExheW91dFVuaXQ+KGVzdGltYXRlZFVzZWRXaWR0aCkpOworICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pihlc3RpbWF0ZWRVc2VkV2lkdGgpKTsKICAgICAg
ICAgICAgICAgICBCb3hTaXppbmcgYm94U2l6aW5nID0gQm94U2l6aW5nOjpDb250ZW50Qm94Owog
ICAgICAgICAgICAgICAgIGlmIChzdHlsZSgpLmhhc0FzcGVjdFJhdGlvKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJveFNpemluZyA9IHN0eWxlKCkuYm94U2l6aW5nRm9yQXNwZWN0UmF0aW8oKTsK
QEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUhlaWdo
dEZvclJhdGlvKExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYQogICAgIHJldHVybiBM
YXlvdXRVbml0KHJvdW5kKGxvZ2ljYWxXaWR0aCAvIGFzcGVjdFJhdGlvKSk7CiB9CiAKLUxheW91
dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9u
YWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCkgY29uc3QKIHsKICAgICAvLyAxMC41IENvbnRl
bnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJvcGVydHk6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NT
UzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhlaWdodAogICAgIGlmIChoYXNSZXBsYWNlZExvZ2lj
YWxIZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5k
ZXggNTJjZTY0OWIxM2Y0ZGQyOWRiMGExMjU3MzgyNjMxMDdmYWZjNmNkNy4uMWM3ZDM1NDdmZDRh
ZWJiMTk2MmYzZWM3MmY0MTYzNTY3MmZkOGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmgKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclJlcGxhY2VkKCk7CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlv
bmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChj
b25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHJl
cGxhY2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiByZXBsYWNlZENvbnRlbnRSZWN0KGlu
dHJpbnNpY1NpemUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJh
c2UuY3BwCmluZGV4IDFkZjY3ZDA5NzgzZjdmY2M1N2MyNmMxNGZkYTAyNjk1YTMzMzZjZTkuLjI1
OGJkZTgyMjAyZjc3NDQ3M2Y4NmY5ODJlODY2NWFiNzgxYmU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZW5kZXJS
dWJ5UnVuKiBSZW5kZXJSdWJ5QmFzZTo6cnVieVJ1bigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlclJ1YnlSdW4+KHBhcmVudCgpKTsKIH0KIAotT3B0aW9uYWw8VGV4dEFsaWduTW9k
ZT4gUmVuZGVyUnVieUJhc2U6Om92ZXJyaWRlVGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBl
bmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VGV4dEFsaWduTW9kZT4g
UmVuZGVyUnVieUJhc2U6Om92ZXJyaWRlVGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRz
V2l0aFNvZnRCcmVhayAqLykgY29uc3QKIHsKICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVz
dGlmeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKaW5kZXgg
NmYzMmViODJiZTc3ZDk1ZWI5YmZlMWZhNzc2YzRhYmY5MTNhNjllZS4uMTIyMTY3ZmFjOTk1MTkz
MWNiMTg5OTMyMzIzODU2MTQwZWRkYjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBi
b29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9v
bCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFRleHRBbGlnbk1vZGU+IG92ZXJyaWRlVGV4
dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRBbGlnbm1lbnRG
b3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGZsb2F0IG1faW5pdGlhbE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCmluZGV4IGU2NDc0NWI3ODNlMjM3NGY5OTUxOWM1Nzk2
ZGUzNDUwNGYwMWZlNzIuLmU0MzkzNzE0YTUwOGM4ZGNlY2IyNDY4MGNjZjAzODRkZGI2ODQ0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcApAQCAtNTcs
NyArNTcsNyBAQCBib29sIFJlbmRlclJ1YnlUZXh0Ojppc0NoaWxkQWxsb3dlZChjb25zdCBSZW5k
ZXJPYmplY3QmIGNoaWxkLCBjb25zdCBSZW5kZXJTdHlsZQogICAgIHJldHVybiBjaGlsZC5pc0lu
bGluZSgpOwogfQogCi1PcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6b3Zl
cnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShib29sKSBjb25zdAorc3RkOjpvcHRpb25hbDxUZXh0
QWxpZ25Nb2RlPiBSZW5kZXJSdWJ5VGV4dDo6b3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShi
b29sKSBjb25zdAogewogICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0
QWxpZ24oKTsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBib2d1cyBzaW5jZSB1c2VyIGNh
biBzZXQgdGhlIGluaXRpYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCmluZGV4IDQ2NzI2OTRlNzNmODdiZTQ0NTMyOTIzOWJmN2E3Y2YyMTAzYTI0OWIu
LjYyYzVlZTZlYmI0NmY1MTBlYTFiMjc4M2IwYjhhMWM4YTUxNzczZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9u
YWw8VGV4dEFsaWduTW9kZT4gb3ZlcnJpZGVUZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNX
aXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRBbGln
bk1vZGU+IG92ZXJyaWRlVGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVh
aykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91
bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZs
b2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggZjkyYzkzMTcxZWI5YzJiMDIxOTQxMjY5Zjcw
OTQ1YmMzODZjNzkzOS4uZjQ2Zjk4OTIyYjI0Nzg0MGVjOTY0ZWU2NGYzYTZkNzIzZWRlMjkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xNDk4LDMyICsx
NDk4LDMyIEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZTo6aW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBUYWJs
ZXMgYXJlIHNraXBwZWQgd2hlbiBjb21wdXRpbmcgYW4gaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUu
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFi
bGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmFz
ZWxpbmUgb2YgYSAndGFibGUnIGlzIHRoZSBzYW1lIGFzIHRoZSAnaW5saW5lLXRhYmxlJyBiYXNl
bGluZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NTIDIuMQogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRo
ZSBiYXNlbGluZSBvZiBhICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8g
VGhpcyBpcyBhbHNvIG5lZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9m
IGEgY2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBjaGlsZC4KIAogICAgIGlmIChpc1dyaXRpbmdNb2Rl
Um9vdCgpIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAogICAg
IGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiogdG9wTm9uRW1wdHlTZWN0aW9uID0gdGhpcy0+dG9w
Tm9uRW1wdHlTZWN0aW9uKCk7CiAgICAgaWYgKCF0b3BOb25FbXB0eVNlY3Rpb24pCi0gICAgICAg
IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgaWYgKGF1dG8gYmFzZWxpbmUgPSB0b3BOb25FbXB0
eVNlY3Rpb24tPmZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxM
YXlvdXRVbml0Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZh
bHVlKCkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pih0b3BOb25F
bXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOwogCiAgICAgLy8g
RklYTUU6IEEgdGFibGUgcm93IGFsd2F5cyBoYXMgYSBiYXNlbGluZSBwZXIgQ1NTIDIuMS4gV2ls
bCB0aGlzIHJldHVybiB0aGUgcmlnaHQgdmFsdWU/Ci0gICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAog
TGF5b3V0UmVjdCBSZW5kZXJUYWJsZTo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2lu
dCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCwgT3ZlcmxheVNj
cm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5LCBQYWludFBoYXNlIHBoYXNlKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBhZjU3MzI3Y2ZmYjBjODA5
M2I2YjBkYmFhYzM1ZDMwNzI1ZDM2NDhkLi42M2IxNzk4MGE0YTJkNGM1MTVhY2RjNzlhZjRkMmY5
MzdmMDJmNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjk2
LDggKzI5Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlv
bk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAKICAg
ICBSZW5kZXJUYWJsZUNvbCogc2xvd0NvbEVsZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFy
dEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDBlM2Q1ODRmNmE0ZGExYjEwODk3Y2Q2MDkyOWQx
NWIzMGQ1MzQ1MjIuLjRlM2ZmZThjMTQ1NTE1Nzg3OTA5MjJiMjczODRhMmJkZThjNDQ4ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0zOTUs
NyArMzk1LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1Jl
Y3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmUKICAgICByZXR1cm4gY29tcHV0ZVJl
Y3QociwgcmVwYWludENvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFJl
Y3Q+IFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVy
LCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
UmVjdD4gUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAgIGlmIChjb250YWlu
ZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuIHJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNzIwYjQ0YWY5NmU3MTc5YmU3YTk1Yjk0OWI1ZTJk
ZDhiNWFmNWUwNy4uOTA4YjRjNTI0ZGI5NDQ2MjViOWUyYmNlNDJmMDcxNDdiY2UxN2EwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTU0LDcgKzE1
NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUg
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBi
b29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91
dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVS
ZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0
PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBib3JkZXJIYWxmTGVmdChib29sIG91dGVy
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckhhbGZSaWdodChib29sIG91dGVyKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAK
aW5kZXggYzNhMDEzOTZhMmJlZjMxMDZlYTk3NzFiZGZiOTBmMWY2NGRiNWYwOS4uOTcxMmFlYmEx
MzA4YjdjMmJmODAxODk3ZGFkMTk3MWFlZjViZDRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTg2NywxNiArODY3LDE2IEBAIHZv
aWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJv
cmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVuZCgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2dyaWQuc2l6ZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8TGF5b3V0VW5pdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4oKTsKIAogICAgIExheW91dFVuaXQgZmlyc3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFz
ZWxpbmU7CiAgICAgaWYgKGZpcnN0TGluZUJhc2VsaW5lKQogICAgICAgICByZXR1cm4gZmlyc3RM
aW5lQmFzZWxpbmUgKyBtX3Jvd1Bvc1swXTsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHJl
c3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHJlc3VsdDsKICAgICBjb25zdCBS
b3cmIGZpcnN0Um93ID0gbV9ncmlkWzBdLnJvdzsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpcnN0Um93LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QmIGNzID0g
Zmlyc3RSb3cuYXQoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmgKaW5kZXggZjk2NjdmZmFlYzI4MDA2YTQyZjg0YWQxY2M1MTA4YjM0YWFiMmYzZi4u
ODVjYjEyZGI5M2JiMTkyYWZiNjU2YjE2MTRkMjlmMmRkNjNlZTE0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgUmVuZGVyVGFibGVSb3cqIGZpcnN0Um93KCkgY29uc3Q7CiAgICAgUmVuZGVy
VGFibGVSb3cqIGxhc3RSb3coKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBh
ZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCosIFJlbmRlclRhYmxlUm93KiByb3cpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNjQ1YTNlYjVjZTQ5YWQ1YjYyYzI0
YzYwZmEzYWQ3ZDQxNjU1MTY3OS4uMTJkM2VmZmNhYTVmZDA2YmFjNmYyMTczZGY1NGUwN2MyNGUw
NDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtOTg5LDcg
Kzk4OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
ZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgYm9vbCBpc1NwYWNlID0gZmFs
c2U7CiAgICAgYm9vbCBmaXJzdFdvcmQgPSB0cnVlOwogICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1
ZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlOwogICAgIHVuc2lnbmVkIGxhc3RXb3JkQm91bmRh
cnkgPSAwOwogCiAgICAgV29yZFRyYWlsaW5nU3BhY2Ugd29yZFRyYWlsaW5nU3BhY2Uoc3R5bGUp
OwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAg
bWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVyIDwgMCA/IDIgOiBhZnRlcjsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3c7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3c7CiAKICAgICBib29sIGJyZWFrTkJTUCA9IHN0
eWxlLmF1dG9XcmFwKCkgJiYgc3R5bGUubmJzcE1vZGUoKSA9PSBOQlNQTW9kZTo6U3BhY2U7CiAg
ICAgCkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAg
ICAgICAgZmxvYXQgY3Vyck1pbldpZHRoID0gMDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9
IChqIDwgbGVuZ3RoKSAmJiBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CiAgICAg
ICAgICAgICBmbG9hdCB3OwotICAgICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGlu
Z1NwYWNlV2lkdGg7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoOwogICAgICAgICAgICAgaWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAg
d29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNr
Rm9udHMpOwogICAgICAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC0xMTAz
LDcgKzExMDMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgICAgICAgICAg
aWYgKHN1ZmZpeFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFdpZHRo
OwotICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VX
aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWls
aW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3BhY2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3Bh
Y2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JkVHJh
aWxpbmdTcGFjZVdpZHRoKQpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpt
b21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxh
c3RUeXAKICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRD
aGFyYWN0ZXIpOwogfQogCi1TdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWdu
ZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAorU3RyaW5nVmlldyBSZW5k
ZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wKSBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9v
cih0ZXh0KCkubGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCAxYjJiZDNlZTQ2NmNiNjU2ZjYzZjkw
YzIxNmVmYzlkOWJiNjVmNGVjLi45ZDYxN2M0N2IxYjZkNzNjZTBhZjEzODFiYWEwYzgzNDA1NjU4
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTE2OSw3ICsxNjks
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIHVzZXNDb21wbGV4TGluZUxheW91dFBhdGgoKSBjb25z
dDsKIAotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlv
bmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBTdHJpbmdWaWV3
IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBz
dG9wID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICAKICAgICBib29sIGNvbnRhaW5zT25seUhU
TUxXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDZh
MzdiMGIzZTdkNjYwMmQ1N2U2NWY2NjY1ZTdjN2E1NTMwYjJhZTEuLjJlOTA1MzRmZmQ4ZGE4M2I3
ZGM1NGQ0NmZhN2RlZjE2MzE5YmJiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5oCkBAIC05OCw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9j
azo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6
OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wg
aXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMTE4MDc5NGM2M2E4
MmUyMGFmZjVlZDM3OTAzMmQyMTBkMWMzYmFkYy4uZjJkYTY5ZGM4NjFlODcyOWUzYzRjMmE5OTIy
YmYxMzM3YzI1NTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQpAQCAtMTIyOSw5ICsxMjI5LDkgQEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnBsYXRmb3Jt
SW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ28KICAgICBy
ZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxDb2xv
cj4mIGNhY2hlZEZvY3VzUmluZ0NvbG9yKCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiYg
Y2FjaGVkRm9jdXNSaW5nQ29sb3IoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRp
b25hbDxDb2xvcj4+IGNvbG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlv
bmFsPENvbG9yPj4gY29sb3I7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCkBAIC0xMzQwLDcgKzEz
NDAsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPENTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlv
bj4mIGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdAogICAgIHJldHVybiBjc3NWYWx1ZVN5c3Rl
bUNvbG9ySW5mb3JtYXRpb25MaXN0OwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPENvbG9y
PiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24oQ1NTVmFsdWVT
eXN0ZW1Db2xvckluZm9ybWF0aW9uIHN5c3RlbUNvbG9ySW5mb3JtYXRpb24sIGJvb2wgdXNlRGFy
a0FwcGVhcmFuY2UpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNv
bG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbihDU1NWYWx1ZVN5c3RlbUNvbG9y
SW5mb3JtYXRpb24gc3lzdGVtQ29sb3JJbmZvcm1hdGlvbiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5j
ZSkKIHsKICAgICBpZiAoYXV0byBjb2xvciA9IHd0Zk9iakNNc2dTZW5kPFVJQ29sb3IgKj4oUEFM
OjpnZXRVSUNvbG9yQ2xhc3MoKSwgc3lzdGVtQ29sb3JJbmZvcm1hdGlvbi5zZWxlY3RvcikpIHsK
ICAgICAgICAgQ29sb3Igc3lzdGVtQ29sb3IgPSB7IGNvbG9yLkNHQ29sb3IsIENvbG9yOjpGbGFn
czo6U2VtYW50aWMgfTsKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbihD
U1NWCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENvbG9y
PiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1
c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1Zh
bHVlSUQgY3NzVmFsdWVJRCwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRl
ZFVzZXJJbnRlcmZhY2VMZXZlbCkKIHsKICAgICBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24g
bG9jYWxUcmFpdENvbGxlY3Rpb24odXNlRGFya0FwcGVhcmFuY2UsIHVzZUVsZXZhdGVkVXNlcklu
dGVyZmFjZUxldmVsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmlu
ZGV4IDIzNjQxZmRmZDE3ZDZlMzBmMTE3YThkNDU4NmMyYjdjMzMwZGE3MDQuLjM1ZTNmNDgxOTJi
ZDhhNzNjZmI5OWE4YmZkZWVlN2JlNzQ2NjU4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFp
bnRWaWV3QW5kQ29tcG9zaXRlZExheWVycygpCiAgICAgICAgIGNvbXBvc2l0b3IucmVwYWludENv
bXBvc2l0ZWRMYXllcnMoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6
Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQg
Y29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyVmlldzo6Y29t
cHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29u
dGV4dCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQg
d2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxk
IGhhdmUgZm91bmQgaXQgYnkgbm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
aW5kZXggNDE2NzMxYmJkNTZjNDY2MDA4Yzk1MjRhY2EyMzgxZTI3ZTJjZTk4Mi4uNmY0ZWFiYWMy
MWFhZTFiNTBhZmVlZTA2NGQ4MzQ4NWRkMWNkNmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzRXZl
bnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWU7IH0KICAgICB2b2lkIHNl
dE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoYm9vbCB2YWx1ZSA9
IHRydWUpIHsgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lID0g
dmFsdWU7IH0KIAotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdElu
Q29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBW
aXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludFJvb3RD
b250ZW50cygpOwogICAgIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVj
dCYpIGNvbnN0OwogICAgIHZvaWQgcmVwYWludFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJlbmRlckJveCo+IG1fcmVu
ZGVyZXJzTmVlZGluZ0xhenlSZXBhaW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI+IG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKLSAgICBPcHRpb25hbDxM
YXlvdXRTaXplPiBtX3BhZ2VMb2dpY2FsU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNp
emU+IG1fcGFnZUxvZ2ljYWxTaXplOwogICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXllckNvbXBvc2l0b3I+
IG1fY29tcG9zaXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmNwcAppbmRleCAwMDgyNmFhMzJiMzg4YWMwOGZkMjZhMDdhMDAxMDgy
Njk5MGZiZjcyLi41ZDk4YTk2MWVhNWVmOTJjNWU5MDNmNzI2YmJmZGY5ZTZlYWVlZTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNw
cApAQCAtMTk4LDcgKzE5OCw3IEBAIGJvb2wgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6
Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgdW5kZXJs
aW5lU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5lU3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhl
ci5vdmVybGluZVN0eWxlICYmIGxpbmV0aHJvdWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hT
dHlsZTsKIH0KIAotVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29y
YXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIE9wdGlvbmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29y
YXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiBzdHlsZXMpCiAgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0
IH0KICAgICAsIG1fZGVjb3JhdGlvbnMgeyBkZWNvcmF0aW9ucyB9CiAgICAgLCBtX3dhdnlPZmZz
ZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggMTIzNjZmODVmZTg2ZTg2YzRj
N2ZjMzgxZTc3ZjQwMGJmODJiNDZmYi4uMjYyZGVkYzdhNWJmYTYwZmI4MTZhMjMxMDM2NjhjNmMx
NzM0MjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlv
blBhaW50ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERl
Y29yYXRpb25QYWludGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29u
c3QgRm9udENhc2NhZGUmLCBPcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBU
ZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUs
IGNvbnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0
KTsKICAgICAKICAgICB2b2lkIHNldElubGluZVRleHRCb3goY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lVGV4dEJveCkgeyBtX2lubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94OyB9CiAgICAg
dm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwg
PSBpc0hvcml6b250YWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5
bGUuY3BwCmluZGV4IGNhMTIzZDQ4MzQ2NTJhOWE0Y2FjMWFiMGY3ODdmMGZkNzY0NDk1NGIuLmE3
OTRkNGVkZjAyYjQzYTAxZWI3NDBlYzcwMTBjZjkyNzIwYzAxODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFRleHRQ
YWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lCiAgICAgcmV0dXJuIHBhaW50U3R5bGU7CiB9CiAKLVRleHRQYWlu
dFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHls
ZSYgdGV4dFBhaW50U3R5bGUsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgT3B0aW9uYWw8
U2hhZG93RGF0YT4mIHNlbGVjdGlvblNoYWRvdykKK1RleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0
U2VsZWN0aW9uUGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUs
IGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxl
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgc3RkOjpvcHRpb25hbDxTaGFkb3dEYXRhPiYg
c2VsZWN0aW9uU2hhZG93KQogewogICAgIFRleHRQYWludFN0eWxlIHNlbGVjdGlvblBhaW50U3R5
bGUgPSB0ZXh0UGFpbnRTdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuaAppbmRleCA4YTUwMmI4OGYyZTJmOTM3ZDk2MjkzZjI3YTMxMDFhYjQxYzYzOTUxLi44
YmRmNjU3MjNlM2VmZGRlZjQzMjBkNjNiMzllNWQ2ODcwNmMyZmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaApAQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgVGV4
dFBhaW50U3R5bGUgewogCiBib29sIHRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cik7CiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFBhaW50SW5mbyYpOwotVGV4dFBhaW50U3R5bGUgY29t
cHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiwgY29uc3Qg
UmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUGFpbnRJbmZvJiwgT3B0aW9u
YWw8U2hhZG93RGF0YT4mIHNlbGVjdGlvblNoYWRvdyk7CitUZXh0UGFpbnRTdHlsZSBjb21wdXRl
VGV4dFNlbGVjdGlvblBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmLCBjb25zdCBSZW5k
ZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBQYWludEluZm8mLCBzdGQ6Om9wdGlv
bmFsPFNoYWRvd0RhdGE+JiBzZWxlY3Rpb25TaGFkb3cpOwogCiBlbnVtIEZpbGxDb2xvclR5cGUg
eyBVc2VOb3JtYWxGaWxsQ29sb3IsIFVzZUVtcGhhc2lzTWFya0NvbG9yIH07CiB2b2lkIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UGFpbnRTdHlsZSYs
IEZpbGxDb2xvclR5cGUgPSBVc2VOb3JtYWxGaWxsQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCBmMzM5ZWY4OTIwYzA0M2Yy
MjRlMDRlNjk2Y2QyZDcyZDcxZTQ0MzExLi4zY2RlNzM2ODVjNDEwZWVhMjdkOWMyMzE1MTQyMjQ1
MzA0YjI0NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVh
a2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2Ugewog
ICAgICAgICAgICAgbV9zdGF0ZSA9IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVk
OwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQq
PiYgZmFsbGJhY2tGb250cykKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0
PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cykKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRl
ID09IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OkluaXRpYWxpemVkKQogICAgICAgICAgICAgcmV0
dXJuIG1fd2lkdGg7CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBX
b3JkVHJhaWxpbmdTcGFjZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdGlhbGl6ZWQgfTsKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsKICAgICBXb3JkVHJhaWxpbmdTcGFjZVN0YXRl
IG1fc3RhdGUgeyBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpVbmluaXRpYWxpemVkIH07Ci0gICAg
T3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0
aDsKIH07CiAKIGNsYXNzIEJyZWFraW5nQ29udGV4dCB7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHVi
bGljOgogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGNv
bW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25l
ZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5z
aWduZWQ+KCkpCisgICAgdm9pZCBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJP
YmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAg
IG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAgIG1fbGluZUJyZWFrLm1vdmVUbyhvYmplY3QsIG9m
ZnNldCwgbmV4dEJyZWFrKTsKQEAgLTU2OSw3ICs1NjksNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVD
aGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdo
aXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNl
cyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFyYWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRl
eHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlw
aGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVu
YXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXNMaW1pdCwgaW50IG1pbmlt
dW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1TdWZmaXhMaW1pdCwgdW5zaWduZWQgbGFzdFNwYWNl
LCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3MsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGlz
Rml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3Bh
Y2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVCcmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRC
cmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhS
ZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMs
IGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQgbWluaW11bVByZWZpeExp
bWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2lnbmVk
IHBvcywgZmxvYXQgeFBvcywgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNo
LCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxp
bmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWth
YmxlLCBib29sJiBoeXBoZW5hdGVkKQogewogICAgIC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXti
ZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVu
Z3RoOwpAQCAtNjQyLDcgKzY0Miw3IEBAIGlubGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNv
bXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29y
ZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0gbGFzdFNwYWNlOwogICAgIAogICAgIGZsb2F0IGFk
ZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAgIE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lk
dGg7CiAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJyAnKQogICAgICAgICB3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoID0gd29yZFRyYWlsaW5nU3BhY2Uud2lkdGgoZmFsbGJhY2tGb250cyk7CiAg
ICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC03ODIsNyArNzgyLDcgQEAgaW5saW5l
IGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRN
ZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgIG1pZFdvcmRCcmVhayA9IG1fd2lkdGguY29t
bWl0dGVkV2lkdGgoKSArIHdyYXBXICsgY2hhcldpZHRoID4gbV93aWR0aC5hdmFpbGFibGVXaWR0
aCgpOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2Fi
bGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50
Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOwogICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMg
PT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0gV2hpdGVTcGFjZTo6UHJlICYmICFtX2F0U3RhcnQgJiYg
aXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50
Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJy
ZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3JkcywgYnJlYWtBbnl3aGVyZSkKICAgICAgICAgICAgICYm
IChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3Vz
SW5TYW1lTm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0
QnJlYWthYmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKQEAgLTg4NCw3ICs4ODQs
NyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVt
ZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlz
IGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAgICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBz
dHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RCcmVha2luZ1Bvc2l0aW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRpb247
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQXRC
cmVha2luZ1Bvc2l0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2xpbmVCcmVhay5vZmZzZXQoKSB8fCBtX2xpbmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24o
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2luZ1Bvc2l0aW9uID0g
bV9saW5lQnJlYWsub2Zmc2V0KCk7CkBAIC04OTUsNyArODk1LDcgQEAgaW5saW5lIGJvb2wgQnJl
YWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMsIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlckF0QnJlYWtpbmdQ
b3NpdGlvbiA9ICZyZW5kZXJlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsYXN0QnJlYWtpbmdQb3NpdGlvbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9wdGlvbmFsPFVDaGFyPiBjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bv
c2l0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXI+
IGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2hlbiBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIHBvaW50cyB0byB0aGUgc3RhcnQg
b2YgdGhlIGN1cnJlbnQgY29udGV4dCwgd2UgbmVlZCB0byBsb29rIGF0IHRoZSBsYXN0IGNoYXJh
Y3RlciBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByZXZpb3VzIG5v
bi1lbXB0eSB0ZXh0IHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
bGFzdEJyZWFraW5nUG9zaXRpb24udmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggZjE2NmYzYjlhYmIyYjNmN2E5NDUyNDE2
ZmIwNTYyYjg4YWI0NmI4OS4uYzMzM2Q1ZmM3Njg5MGI5NjJhMjlmNDlmZTFiZmIzYjEyODIzOTNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5
bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAvLyBUaGUgbWF0aHZhcmlhbnQgYXR0cmli
dXRlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4KICAgICBhdXRvKiBlbGVtZW50ID0g
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLT5lbGVtZW50KCk7CiAgICAgaWYgKGlz
PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgIE9wdGlvbmFsPE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50PiBtYXRoVmFyaWFudCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGVs
ZW1lbnQpLT5zcGVjaWZpZWRNYXRoVmFyaWFudCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1h
dGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBtYXRoVmFyaWFudCA9IGRvd25jYXN0PE1hdGhNTEVs
ZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWRNYXRoVmFyaWFudCgpOwogICAgICAgICBpZiAobWF0
aFZhcmlhbnQpCiAgICAgICAgICAgICBtX21hdGhWYXJpYW50ID0gbWF0aFZhcmlhbnQudmFsdWUo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGNkOTZiZDVhN2NjZDFkYjY5Yjg0OWQ2MDcwY2YxMjBm
NWZmM2M0N2EuLjE5NTJhZjFhZjkzZmMzNzI3YzAwZjE4NzEyNDUwODUwYjgzMjQ2ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgTGF5b3V0VW5pdCB0b1VzZXJVbml0cyhjb25zdCBN
YXRoTUxFbGVtZW50OjpMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICB9
CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRh
YmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gQnkgZGVmYXVsdCB0aGUg
dmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+IGlzIGFsaWduZWQgb24gdGhlIG1hdGggYXhpcy4K
ICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hC
YXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBh
IDx0YWJsZT4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmgKaW5kZXggMzVmNjdhOTI4Y2U1MjQxNmFkMGVkYTI1OWM3ZGJmOTVlZjli
ZDQzZi4uMmZjOGExNmIxM2IwMDRlOWExZGU1Y2U0ZDk3N2Y0MjI2Y2RhMTNhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApA
QCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1h
dGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAppbmRleCBhZjM3NDk0NjFlZTI0NjU0NDE4MzUxZDcyMzljMDgzZTZmNTI4Yzdk
Li5iM2I0MzcyMzRlNTc0OGU2OGQyOGQ3NDE4ZmVlOTQ4YmE4YWRhYWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50
KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgaW5m
by5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50
KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgbG9naWNhbFdpZHRoKCksIExh
eW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSkpOwogfQogCi1PcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBM
YXlvdXRVbml0IHsgcm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihmcmFjdGlvbkFzY2VudCgpKSkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uaAppbmRleCAyN2YxNGQ3NWYwZTI4ODgzZWNhM2YwMTIxOTdmMTc2YWY5ZTFj
YmUxLi5mODc1NjI3ZjQ4YTI1NWRkMTcxY2U5MTM4NjgzYWE2MTc5ZDE5MjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
ZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigp
IGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IGE0MTlhOWQyZmI3NDE4MDE2Yzg1
NmViMjRlMDdmY2QyM2VkNjg1NTEuLmZmNDFjNTA4MTBjNmM5OTAwOTY0NjIyMTYwMTUwNTM1ZDAw
YzkyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29u
c3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhl
aWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVy
YXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRo
TUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAog
ewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3IoKSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQg
eyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRoT3BlcmF0
b3IuYXNjZW50KCkgLSB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSkpKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oCmluZGV4IGZlODlhYTFhZjI2YTA3YzAxNjAzZmUxNzljNzJlODlmNjk3Mjc4NjkuLjUy
MTgxYjQ2ZDBjZGJlN2I0NWNmZDdmOWYzMWZiYWEyNzEyZTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3Io
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ludmlzaWJsZU9wZXJh
dG9yKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJl
bGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJN
YXRoTUxPcGVyYXRvcio+KHRoaXMpOyB9CiAKICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRj
aGVkT3BlcmF0b3JTaGlmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCmluZGV4IDc5MGFmN2FhMzZkZWE2
MjE0OGNhMzllN2U1MDNlM2NhMzJiYzJjYTguLjFkNGYwYTVhNTBhN2E1M2QxZmU2Nzc2MjljNjlj
OWNlODdmZjUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTFBhZGRlZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogewogICAgIC8vIFdlIHRyeSBhbmQgY2FsY3VsYXRlIHRoZSBiYXNlbGluZSBmcm9tIHRo
ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hpbGQuCiAgICAgTGF5b3V0VW5pdCBhc2NlbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBh
ZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRk
ZWQuaAppbmRleCA5M2IzNjZlY2ZlNjJhZTcwZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2Li43NDg4
NWYzNGEzYTZhMDVmYTk3Yzk5MzlkM2VhNWM4NGM2YTFhNzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAg
TGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggODk3NTc4MjRlMzA5YjIxMDNh
ZGM3YWI5YTg3ZWE2Nzk2ODFhNTgzMS4uYTE2NTBhMThiYmNmMWQ3YjcxZGIzNmVlMjg1NGYwZjEw
MzRjNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTEgKzUyLDExIEBAIE1hdGhNTFJvd0VsZW1lbnQmIFJl
bmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCi1PcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJNYXRoTUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsK
ICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRV
bml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9y
Q2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oCmluZGV4IDE2OTU2NDI5MDUzZWQ2NGZjN2Y4NzA4OTA0YzA5OGQyNGQyMzA0NDIuLjM3YmI2
MGFhNzY3NTJkZTEyNjQwNjE5OTgxNDk3NjgzMDFlODk1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHJldGNoVmVydGljYWxPcGVyYXRvcnNBbmRM
YXlvdXRDaGlsZHJlbigpOwogICAgIHZvaWQgZ2V0Q29udGVudEJvdW5kaW5nQm94KExheW91dFVu
aXQmIHdpZHRoLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHAKaW5kZXggNGIwMWVjMjI2YWUzNmNjNTk1NDhjZjkyN2NlOGZjMTZhM2Vj
MWIzNy4uNjA5NDM4OGEzMWIyYzFkMWE5MjU4OTIyOTcyZTBmMTFkOGM5YThhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJNYXRo
TUxTY3JpcHRzOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdAogICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJNYXRoTUxCbG9jaz4oYmFzZSktPnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwog
fQogCi1PcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVu
ZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpCitzdGQ6
Om9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJN
YXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCkKIHsKICAgICAv
LyBBbGwgc2NyaXB0ZWQgZWxlbWVudHMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjaGlsZC4KICAg
ICAvLyBUaGUgZmlyc3QgY2hpbGQgaXMgdGhlIGJhc2UuCkBAIC0xNDYsNyArMTQ2LDcgQEAgT3B0
aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhN
TFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9m
U2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2NyaXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVu
PihyZWZlcmVuY2UpIDogc3RkOjpudWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgorICAgICAgICBy
ZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxk
cmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgogICAgIH0K
ICAgICB9CiAKQEAgLTQ2NiwxMSArNDY2LDExIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFy
TmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU2Ny
aXB0czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAg
YXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJl
dHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PigpOwogICAgIHJldHVybiBMYXlvdXRVbml0IHsgcm91bmRmKGFzY2VudEZv
ckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRl
eCA5ZDIzYWJlMzk0MGY1MmZmNmVjNjRmM2RlNzhiZjFkM2I2Mzk3MmY2Li5hZGI5MmZlNDg0YmYy
MGIwZWRjZmE4YmRiZDE1YzBhMDk5ODQ1MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAtNTAsMTQgKzUwLDE0
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAg
ICAgICAgIFJlbmRlckJveCogYmFzZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxp
bWl0ZXI7CiAgICAgICAgIFJlbmRlckJveCogZmlyc3RQb3N0U2NyaXB0OwogICAgICAgICBSZW5k
ZXJCb3gqIGZpcnN0UHJlU2NyaXB0OwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVmZXJlbmNlQ2hp
bGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJlbmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2YWxpZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCk7
CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFmdGVyU2NyaXB0KCk7CiAgICAgTGF5b3V0VW5pdCBpdGFs
aWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVyZW5jZUNoaWxkcmVuJik7CiAgICAgc3RydWN0IFZlcnRp
Y2FsUGFyYW1ldGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4IGY5MjQ2NTcxMmRiNzhkZjY0NjEzMTI0MWJl
NGMwMGNmZGY4ZDI2M2IuLmY0YTNjZDhhZTBkZTIyNmNiZGZkMzQwODVkZDY4MGRkZmNhZGNlN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3BhY2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6Omxh
eW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5l
ZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNl
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0
VW5pdCBoZWlnaHQsIGRlcHRoOwogICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBk
ZXB0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNwYWNlLmgKaW5kZXggNzI1ZDRmMjBhMzI1YWJjYTFmZGM4NGMwNzM1NWIxMzJkNTY1NmIx
NC4uMTk1OTI4NjQ5YTUxOWEwOWYxMmZjYmQ2ZTg1YzU0Y2FjNTE2NTU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAt
NDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBz
cGFjZVdpZHRoKCkgY29uc3Q7CiAgICAgdm9pZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91
dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYgZGVwdGgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA1
ZjljZmIzYzk3ODhkZDZhM2FjMTQwNjE0MWRlYjM0NDA1M2JkMTllLi43Y2M5YjdkNDE2MjQ5NTQw
MGE1ODVjMTQ1YzQyNzRiZTQ3MzBlNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtNTU0LDcgKzU1NCw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBzZXRNYXRo
VmFyaWFudEdseXBoRGlydHkoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0
aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2ludCkgewogICAgICAgICBhdXRvIG1hdGhWYXJpYW50
R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKG1fbWF0
aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwgbV9tYXRoVmFyaWFudElzTWlycm9yZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5o
CmluZGV4IDhjYjIxZWZlZmNkMTM4NTY4ZGQ1YWQ1MDEzNmZmMmM0ZDk5Yjg0MmIuLmY4MzllZWMw
MzUxMjk1ZDg2YzE0MjYyNDMyMDQyODA3Mjg2Yjc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZv
JiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wg
dXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9
IDBfbHUpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KSBvdmVycmlkZTsKIApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgICAgICBtX21hdGhW
YXJpYW50R2x5cGhEaXJ0eSA9IHRydWU7CiAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldp
ZHRoc1JlY2FsYygpOwogICAgIH0KLSAgICBPcHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50
Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBt
X21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07CiAgICAgYm9vbCBtX21hdGhW
YXJpYW50SXNNaXJyb3JlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21hdGhWYXJpYW50R2x5cGhE
aXJ0eSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ291bnRlckRpcmVjdGl2ZXMuaAppbmRleCAxNDAyNDkxZTA4YWY5NzA0MTI4ZjcxMmUyYThk
ZGYyMjhkOTMzZWRkLi4wZTMyYmYyNDg2OWJkYmE4Y2YwYzg1YWVkODM4YjAyY2JlZTlhMDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2
ZXMuaApAQCAtMjYsOCArMjYsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ291
bnRlckRpcmVjdGl2ZXMgewotICAgIE9wdGlvbmFsPGludD4gcmVzZXRWYWx1ZTsKLSAgICBPcHRp
b25hbDxpbnQ+IGluY3JlbWVudFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXNldFZh
bHVlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmNyZW1lbnRWYWx1ZTsKIH07CiAKIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENv
dW50ZXJEaXJlY3RpdmVzJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uLmNwcAppbmRleCBkMjA0MTg5ODY3MTkzYzllNDE1ZDc5NWUxMmVjYjQwYzE5
MDRlNDY0Li5lNmNjOTYxN2I5MDFiNDJhMGVhMzQzMjU3YmYxZjhkMTUxZGVlYmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPGludD4gR3JpZFBv
c2l0aW9uOjpnTWF4UG9zaXRpb25Gb3JUZXN0aW5nOworc3RkOjpvcHRpb25hbDxpbnQ+IEdyaWRQ
b3NpdGlvbjo6Z01heFBvc2l0aW9uRm9yVGVzdGluZzsKIHN0YXRpYyBjb25zdCBpbnQga0dyaWRN
YXhQb3NpdGlvbiA9IDEwMDAwMDA7CiAKIHZvaWQgR3JpZFBvc2l0aW9uOjpzZXRFeHBsaWNpdFBv
c2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBuYW1lZEdyaWRMaW5lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oCmluZGV4IDEwYTg5OWJj
Njc4ODNmNGQ2MTA2NWFiYzMyZjhiZDg0NGQ1OWM0MjMuLjI1MjdmN2M3M2Y3ZTQzMDY5NTY3ODZi
NWU1MThiNjRkZWE0YmFiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldE1heFBvc2l0aW9uRm9yVGVzdGluZyh1bnNpZ25lZCk7CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIE9wdGlvbmFsPGludD4gZ01heFBvc2l0aW9uRm9yVGVzdGluZzsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ+IGdNYXhQb3NpdGlvbkZvclRlc3Rpbmc7CiAK
ICAgICB2b2lkIHNldEludGVnZXJQb3NpdGlvbihpbnQgaW50ZWdlclBvc2l0aW9uKSB7IG1faW50
ZWdlclBvc2l0aW9uID0gY2xhbXBUbyhpbnRlZ2VyUG9zaXRpb24sIG1pbigpLCBtYXgoKSk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApp
bmRleCAxNDEzNzllZGE0ZjBmYTZkNmUzY2RmZmZmN2FiOTE0ZjViNDIwNTc0Li4zYjdkOWYxZDk2
NDkyODRiNzVmODk4ZGYwYzgyY2YyOWQyNTNmYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtODIsNyArODIsNyBAQCBpbmxpbmUg
Ym9vbCBpc1ZlcnRpY2FsUGllY2UoSW1hZ2VQaWVjZSBwaWVjZSkKICAgICByZXR1cm4gcGllY2Ug
PT0gTGVmdFBpZWNlIHx8IHBpZWNlID09IFJpZ2h0UGllY2UgfHwgcGllY2UgPT0gTWlkZGxlUGll
Y2U7CiB9CiAKLWlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlSG9yaXpvbnRhbFNp
ZGUoSW1hZ2VQaWVjZSBwaWVjZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGltYWdl
UGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQogewogICAgIGlmIChwaWVjZSA9
PSBUb3BMZWZ0UGllY2UgfHwgcGllY2UgPT0gVG9wUGllY2UgfHwgcGllY2UgPT0gVG9wUmlnaHRQ
aWVjZSkKICAgICAgICAgcmV0dXJuIEJveFNpZGU6OlRvcDsKQEAgLTkzLDcgKzkzLDcgQEAgaW5s
aW5lIE9wdGlvbmFsPEJveFNpZGU+IGltYWdlUGllY2VIb3Jpem9udGFsU2lkZShJbWFnZVBpZWNl
IHBpZWNlKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBPcHRpb25hbDxC
b3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2Ug
cGllY2UpCiB7CiAgICAgaWYgKHBpZWNlID09IFRvcExlZnRQaWVjZSB8fCBwaWVjZSA9PSBMZWZ0
UGllY2UgfHwgcGllY2UgPT0gQm90dG9tTGVmdFBpZWNlKQogICAgICAgICByZXR1cm4gQm94U2lk
ZTo6TGVmdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCmluZGV4IDI2YTc3YmEwOTQ1Yjk4MGEzOGNjM2Y1ZGE1OTI0MzA5YzQwNTBmOTIuLmFjZGRm
ZDAzMWYyYjI5N2U5NTM1YjI2MmI4NWFiYTdhNzQ4ZmJmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIGJv
b2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3Zl
cmZsb3cgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OwogfQog
Ci1ib29sIFJlbmRlclN0eWxlOjppc0lkZW1wb3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShP
cHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3ZlcnJpZGVTdGF0dXMpIGNvbnN0Citib29sIFJlbmRl
clN0eWxlOjppc0lkZW1wb3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShzdGQ6Om9wdGlvbmFs
PEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1cykgY29uc3QKIHsKICAgICAvLyBSZWZlciB0
byA8cmRhcjovL3Byb2JsZW0vNTE4MjYyNjY+IGZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGlu
ZyBob3cgdGhpcyBmdW5jdGlvbiB3YXMgZ2VuZXJhdGVkLgogICAgIGF1dG8gZmllbGRzID0gT3B0
aW9uU2V0PEF1dG9zaXplU3RhdHVzOjpGaWVsZHM+Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3Mu
YXV0b3NpemVTdGF0dXMpOwpAQCAtMTkyOCw3ICsxOTI4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Rm9udFN0cmV0Y2goRm9udFNlbGVjdGlvblZhbHVlIHZhbHVlKQogICAgIGZvbnRDYXNjYWRl
KCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0b3IpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpz
ZXRGb250SXRhbGljKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gdmFsdWUpCit2b2lkIFJl
bmRlclN0eWxlOjpzZXRGb250SXRhbGljKHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiB2YWx1ZSkKIHsKICAgICBGb250U2VsZWN0b3IqIGN1cnJlbnRGb250U2VsZWN0b3IgPSBmb250
Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBmb250RGVz
Y3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggMWE3NTYzZDA2MWNlZWI5ZmEzNmRiNzVhODVkMzhmYjI5ODNjNDAyZi4uOTNkOTU3
MWU2ZGU1NTU3YTc2Y2QwNDk1ZDQyNTU5MGI2YTBmZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6
CiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdzIGZvbnRWYXJpYXRpb25TZXR0aW5ncygpIGNvbnN0
IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnZhcmlhdGlvblNldHRpbmdzKCk7IH0KICAgICBG
b250U2VsZWN0aW9uVmFsdWUgZm9udFdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlw
dGlvbigpLndlaWdodCgpOyB9CiAgICAgRm9udFNlbGVjdGlvblZhbHVlIGZvbnRTdHJldGNoKCkg
Y29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuc3RyZXRjaCgpOyB9Ci0gICAgT3B0aW9u
YWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250SXRhbGljKCkgY29uc3QgeyByZXR1cm4gZm9udERl
c2NyaXB0aW9uKCkuaXRhbGljKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gZm9udEl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLml0YWxp
YygpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGln
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbk1vZGU+KG1faW5oZXJpdGVk
RmxhZ3MudGV4dEFsaWduKTsgfQpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9
CiAgICAgQXV0b3NpemVTdGF0dXMgYXV0b3NpemVTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlz
SWRlbXBvdGVudFRleHRBdXRvc2l6aW5nQ2FuZGlkYXRlKE9wdGlvbmFsPEF1dG9zaXplU3RhdHVz
PiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW1w
b3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3RhdHVz
PiBvdmVycmlkZVN0YXR1cyA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIFRl
eHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
U2VjdXJpdHk+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0KQEAgLTk3MSw3
ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250VmFyaWF0aW9uU2V0dGluZ3MoRm9u
dFZhcmlhdGlvblNldHRpbmdzKTsKICAgICB2b2lkIHNldEZvbnRXZWlnaHQoRm9udFNlbGVjdGlv
blZhbHVlKTsKICAgICB2b2lkIHNldEZvbnRTdHJldGNoKEZvbnRTZWxlY3Rpb25WYWx1ZSk7Ci0g
ICAgdm9pZCBzZXRGb250SXRhbGljKE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOworICAg
IHZvaWQgc2V0Rm9udEl0YWxpYyhzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4pOwog
CiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VGV4dEluZGVu
dChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQs
IFdURk1vdmUobGVuZ3RoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcAppbmRleCA0NDBmNGEzZDUyMzJhYWQwMDY2MGQ4YjI4NDE3MTFmM2VhYWNh
MmE2Li5iYTU4NGI0MmRmNjM2NjczY2VkNzg0NzUyNGNhMjg1ZGU3MGY2YmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykKIHsKIH0KIAot
T3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0YSog
ZGF0YSkKK3N0ZDo6b3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUoY29uc3Qg
U2hhZG93RGF0YSogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaApp
bmRleCBhZjU5YTQxYWM0NGNjODhjNmNjMjk1MTIyOWQzMGUzYjE4OGZhMGU3Li5kY2NhMzI1MTM0
NGRiMTA0Mjg5MTA5MTgzYTE0Yzg5M2E5ODFlY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIFNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxTaGFkb3dEYXRhPiBjbG9uZShjb25zdCBTaGFkb3dEYXRhKik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U2hhZG93RGF0YT4gY2xvbmUoY29uc3QgU2hhZG93RGF0YSopOwogCiAgICAgU2hh
ZG93RGF0YSYgb3BlcmF0b3I9KFNoYWRvd0RhdGEmJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFNpemVBZGp1c3RtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuY3BwCmlu
ZGV4IDJkZjNiZTA3MjA0MGZkMjAwZDVjNmY2NzAxNDJlMTEyNWJlZjczZjIuLjA0ZjJiYWZjM2Yz
OTQzMGI2NWNmM2VlNGM5NjRiNDhkZjlmMTRjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIGJvb2wgQXV0b3NpemVTdGF0dXM6OnByb2JhYmx5Q29udGFpbnNBU21hbGxGaXhlZE51bWJl
ck9mTGluZXMoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGF1dG8mIG1heEhlaWdodCA9IHN0eWxlLm1heEhlaWdodCgpOwotICAgIE9wdGlvbmFsPExlbmd0
aD4gaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4g
aGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0aDsKICAgICBpZiAobWF4SGVpZ2h0LmlzRml4ZWQoKSkK
ICAgICAgICAgaGVpZ2h0T3JNYXhIZWlnaHRBc0xlbmd0aCA9IHN0eWxlLm1heEhlaWdodCgpOwog
ICAgIGVsc2UgaWYgKHN0eWxlLmhlaWdodCgpLmlzRml4ZWQoKSAmJiAoIW1heEhlaWdodC5pc1Nw
ZWNpZmllZCgpIHx8IG1heEhlaWdodC5pc1VuZGVmaW5lZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNldC5oCmluZGV4IDgwN2U0
ZGI4Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4MGFmOTI0OTkuLjk2MWU3YjJkOTMxMmQyYTE5OTBk
OGVhYjU2NjkwMzBkYzkzMjVhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9sZW5ndGggPSAwOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0
PiBtX2xlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX2xlbmd0aDsKIH07CiAKIGlu
bGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUZXh0VW5k
ZXJsaW5lT2Zmc2V0JiBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCA0MzBiNGI5MDM3Y2ZjYmNi
NmY3ZjNhZTU5YzViMTNhN2UxYmU0OWQxLi5jZDMwOWIyZDkzOWJkNDg1Mjg0NDBkOWRiNWZiMDkx
M2ZhMGZiODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTk4LDE0ICs5OCwxNCBAQCBMYXlvdXRSZWN0
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iagogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UmVjdD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJl
Y3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZs
b2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZp
c2libGVSZWN0SW5Db250YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiB9
CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0
IGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3Qg
PSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29u
dGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1
dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsK
ICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAgICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVj
dCgqYWRqdXN0ZWRSZWN0KTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRl
eCAzMzUzMmQ5YmVmMDY2OTg2ZWEzZTVmN2RlMWUxNmIwZjM5ZGVhZTY1Li4zY2YwNTk5OTZhNTMy
NTYyNTA5OTdlZWZhMzlkYzU1NDUxNDJlMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4
dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5l
cihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJs
ZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJl
Y3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggMzA0
OTY5ZGFlZjY5ZGEzZDdmOTVmYmMzNjk1ZjdjNDQwNjYwNmZhYy4uNTc1M2UzYjlhM2NiYzIwYWEx
NmVlMTcyMjgxNThkODlkNGFhNDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNzUsNyArNzUsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlclNWR0lubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZQogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPEZs
b2F0UmVjdD4gUmVuZGVyU1ZHSW5saW5lOjpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewogICAg
IHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFp
bmVyKCp0aGlzLCByZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggZmQ3MmRlODY3OTczZDBm
OGE1YWU5ZDcyMzNlZjQ3OWQ5YzcwNzI5Mi4uYTllOWY5NjZmMWUwN2QxZGU1MWU1ZjdjM2E1ZDk1
YTdlNjVkY2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IHJlcGFp
bnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRSZWN0
IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxl
UmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29v
cmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggYzk1ZTFhMWFmOTRiZWI4YzE5MjA3ZjBm
OWM3MWU2YWQ2OTQ3NTNkZi4uZTI4OTczMjQ4NGNiNWYwMmFhMTliYmIyNmI1NzNhNDM3NmY2MTZj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdN
b2RlbE9iamVjdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWMK
ICAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoKnRoaXMsIHJlcGFpbnRDb250YWluZXIpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJl
bmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNv
bnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKaW5kZXggMWViODY0
NjM5YzgyMGRmMDAyMDMwNDExMDNiODM2Mjg1ZDM3ZDRhMy4uNjI2MjE4NDQzYzMxZDE3Y2JkNzEz
ZGViMTM3YmJjNDE5YWU3ZGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZW5k
ZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJFbGVtZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFJlbmRlclNWR01vZGVsT2JqZWN0KTsKIHB1YmxpYzoKICAgICBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBW
aXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250
ZXh0KSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJl
bmRlckdlb21ldHJ5TWFwKikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCmluZGV4IDQ3YjI1YTEwYTcyODY0OTBiYjUxMTg1NGExYmM0NzJmOGUyOGJhODAuLjNm
OTg3MjkxODhhMDE4ODkxOTIxMmNmYjQ4NmZkZTkzODFiMGQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0
U2l6ZSYgaW50cmluc2ljU2l6ZSwgZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBpbnRyaW5zaWNSYXRpb1ZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBpbnRyaW5zaWNSYXRpb1ZhbHVlOwogICAgIGlmICghaW50cmluc2ljU2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIGludHJpbnNpY1JhdGlvVmFsdWUgPSBpbnRyaW5zaWNTaXplLndpZHRoKCkg
LyBzdGF0aWNfY2FzdDxkb3VibGU+KGludHJpbnNpY1NpemUuaGVpZ2h0KCkpOwogICAgIGVsc2Ug
ewpAQCAtMTQwLDcgKzE0MCw3IEBAIExheW91dFVuaXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvCiAgICAgcmV0dXJu
IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoc2hvdWxkQ29tcHV0
ZVByZWZlcnJlZCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgp
IGNvbnN0CitMYXlvdXRVbml0IFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGgpIGNvbnN0
CiB7CiAgICAgLy8gV2hlbiB3ZSdyZSBlbWJlZGRlZCB0aHJvdWdoIFNWR0ltYWdlIChib3JkZXIt
aW1hZ2UvYmFja2dyb3VuZC1pbWFnZS88aHRtbDppbWc+Ly4uLikgd2UncmUgZm9yY2VkIHRvIHJl
c2l6ZSB0byBhIHNwZWNpZmljIHNpemUuCiAgICAgaWYgKCFtX2NvbnRhaW5lclNpemUuaXNFbXB0
eSgpKQpAQCAtMzY4LDcgKzM2OCw3IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVjdChlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRS
ZWN0KSwgcmVwYWludENvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVj
dD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5l
ciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gQXBwbHkg
b3VyIGxvY2FsIHRyYW5zZm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBv
dXIgc2hhZG93LCAKICAgICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBo
YW5kbGUgYWxsIHRoZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCkBAIC0zOTQsNyArMzk0LDcg
QEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2EKICAgICAgICAgYWRqdXN0ZWRSZWN0LnVuaXRlKGRl
Y29yYXRlZFJlcGFpbnRSZWN0KTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0UmVj
dD4gcmVjdEluQ29udGFpbmVyID0gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVWaXNpYmxlUmVjdElu
Q29udGFpbmVyKGVuY2xvc2luZ0ludFJlY3QoYWRqdXN0ZWRSZWN0KSwgY29udGFpbmVyLCBjb250
ZXh0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0SW5Db250YWluZXIg
PSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoZW5jbG9zaW5n
SW50UmVjdChhZGp1c3RlZFJlY3QpLCBjb250YWluZXIsIGNvbnRleHQpKQogICAgICAgICByZXR1
cm4gRmxvYXRSZWN0KCpyZWN0SW5Db250YWluZXIpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4
IDNkZmQyNTdkMjU1NGE2N2MwNDAxZDU1OThmNGJhOWRlMjJlZDQ2MmEuLmQ0ZTVlMWU0OTViOGI4
MmIzZWQxYWNkZGI5NWU2NzI0NjVhZDBkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
b290IjsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hv
dWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0
VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uKSBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENv
bnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZs
b2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVS
ZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3Ms
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggMmEz
NTMwOTg3ZjQwZGE5N2RhZTQyMWQ1MGVkM2Q0NjcyNTdkNTA0ZC4uNjRhZmVhNjRiOGFiNjBkMWI2
OWU0NmE2ZmVhY2Q3YTA5OTNhZTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBQYXRoKiBSZW5kZXJT
VkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVBhdGgoY29uc3QgUGF0aCogcGF0aCwgY29uc3QgQWZm
aW5lVHJhbnNmbwogCiBib29sIFJlbmRlclNWR1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJva2VD
b250ZXh0KEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlVHJhbnNmb3JtLCBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyJiBzdGF0ZVNhdmVyKQogewotICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4g
aW52ZXJzZSA9IHN0cm9rZVRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAgc3RkOjpvcHRpb25hbDxB
ZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBzdHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpOwogICAg
IGlmICghaW52ZXJzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MjAsNyArNDIwLDcg
QEAgRmxvYXRSZWN0IFJlbmRlclNWR1NoYXBlOjpjYWxjdWxhdGVTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0CiAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSkgewogICAgICAg
ICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKSB7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKLSAg
ICAgICAgICAgIGlmIChPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBub25TY2Fs
aW5nVHJhbnNmb3JtLmludmVyc2UoKSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gbm9uU2NhbGluZ1RyYW5zZm9ybS5pbnZlcnNlKCkp
IHsKICAgICAgICAgICAgICAgICBQYXRoKiB1c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgo
bV9wYXRoLmdldCgpLCBub25TY2FsaW5nVHJhbnNmb3JtKTsKICAgICAgICAgICAgICAgICBGbG9h
dFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0ID0gdXNlUGF0aC0+c3Ryb2tlQm91bmRpbmdSZWN0KEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+IHsgW3RoaXNdIChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlT
dHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSgpLCAqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmYmU5ZjRmYTlk
NjgwYTM3YWU2ZmQzOGNiNjIzMTg0MGQ5YmE2YmQ5Li4wZjI4MzU4NTc3ZWIwMTY0MTQ2ZGU4ZmRj
OWU0YzMwYmE4YjRlYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKQEAgLTkyLDE1ICs5MiwxNSBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR1Rl
eHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YQogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7CiB9CiAKLU9wdGlvbmFsPExheW91dFJlY3Q+
IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91
dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlz
aWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+
IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91
dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlz
aWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3Qs
IGNvbnRhaW5lciwgY29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFkanVz
dGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIocmVjdCwgY29udGFp
bmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAgICAgICByZXR1cm4gZW5j
bG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZp
c2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBj
b25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9h
dFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0
KSBjb25zdAogewogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNp
YmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCAzMzg4
MzFmNDk4ZGY5YTBmYmM0M2YyZWQxM2I3NzlkNjcxZDk4NTY0Li41ZTk1Y2IxOTM3MmE3NzUxZjU3
NWJjM2RlOThjZGI2ODIwNDQ4NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaApAQCAtNzgsOCArNzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29u
dGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1
dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENv
b3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCmluZGV4IDcxODUzMjZiNjBjNDM4MjZjZTUwZmMyNWM0NGQ4OGU1ZDBjMjhiOGUu
LjE1NGY1M2Q1MjZlOWZkMjE0MGYxYTAwOTY4ZjljNWIyMTJlNGJkNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBMYXlvdXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91
dFJlY3QocmVuZGVyZXIuY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQocmVwYWludFJlY3QsIHJl
cGFpbnRDb250YWluZXIpKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdSZW5kZXJTdXBw
b3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29u
dGV4dCkKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNv
bnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkKIHsKICAg
ICAvLyBFbnN1cmUgb3VyIHBhcmVudCBpcyBhbiBTVkcgb2JqZWN0LgogICAgIEFTU0VSVChyZW5k
ZXJlci5wYXJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oCmluZGV4IGU4MTU3MDU4ZDdjNWM0YWE5ODdjYzE0NGVlYjY3M2JlMTY5NmZl
OGQuLmY2ZWYyOGYwNzQ5Y2M2ZGMwODExZjQyNTBjMzI1ZTZiMTY2ZDc3MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltcG9ydGFudCBmdW5jdGlvbnMgdXNlZCBieSBuZWFy
bHkgYWxsIFNWRyByZW5kZXJlcnMgY2VudHJhbGl6aW5nIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRp
b25zIC8gcmVwYWludCByZWN0IGNhbGN1bGF0aW9ucwogICAgIHN0YXRpYyBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIpOwotICAgIHN0YXRpYyBPcHRpb25hbDxG
bG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgUmVuZGVy
RWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBSZW5kZXJPYmplY3Q6OlZpc2libGVSZWN0Q29u
dGV4dCk7CiAgICAgc3RhdGljIGNvbnN0IFJlbmRlckVsZW1lbnQmIGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oY29uc3QgUmVuZGVyRWxlbWVudCYsIEFmZmluZVRyYW5zZm9ybSAmKTsKICAgICBzdGF0
aWMgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBib29sKiB3YXNGaXhlZCk7CiAgICAgc3RhdGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggZDNhZjI5
Mzk5N2Q4Mzc4NmVjZWM1YmU4MTc3MzZhMDk3Yjg3YmY0Yi4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4
NmY1N2FiYTY0NGI2ZTAzZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojpt
b2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRh
LCB1CiAgICAgYm9vbCBhbHRlclN0YXJ0UG9zaXRpb24gPSB0cnVlOwogICAgIGJvb2wgYWx0ZXJF
bmRQb3NpdGlvbiA9IHRydWU7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGFzdFBvc2l0aW9u
T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RQb3NpdGlvbk9mZnNldDsK
ICAgICBmb3IgKDsgdGV4dE1ldHJpY3NPZmZzZXQgPCB0ZXh0TWV0cmljc1NpemUgJiYgcG9zaXRp
b25PZmZzZXQgPCBwb3NpdGlvblNpemU7ICsrdGV4dE1ldHJpY3NPZmZzZXQpIHsKICAgICAgICAg
U1ZHVGV4dE1ldHJpY3MmIG1ldHJpY3MgPSB0ZXh0TWV0cmljc1ZhbHVlc1t0ZXh0TWV0cmljc09m
ZnNldF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGEzNDdkMzE1NTMzYzhhYjliMjg1YzBmNzAwYzJk
MGIyMjc2YTQ3NDUuLjNkY2Q3ZGZjMTkyMmE5NjFjM2RlMDk0NmM4OGUxMGE2MjFiNmVjNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmNwcApAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRlZChSZW5kZXJF
CiAgICAgLy8gb3RoZXJ3aXNlIHdlIGNhbiBwcm9jZWVkIHRvIHN0cmlwcGluZyBzb2xpdGFyeSBh
bm9ueW1vdXMgd3JhcHBlcnMgZnJvbSB0aGUgaW5saW5lcy4KICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFsc28gaGFuZGxlIHNwbGl0IGlubGluZXMgaGVyZSAtIHdlIGV4Y2x1ZGUgdGhlbSBhdCB0
aGUgbW9tZW50IGJ5IHJldHVybmluZwogICAgIC8vIGlmIHdlIGZpbmQgYSBjb250aW51YXRpb24u
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQWxsQ2hpbGRyZW5CZUlubGluZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENoaWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChhdXRv
KiBjdXJyZW50ID0gYmxvY2tQYXJlbnQuZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY3VycmVudC0+c3R5bGUoKS5p
c0Zsb2F0aW5nKCkgfHwgY3VycmVudC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCB2b2lkIFJlbmRlclRy
ZWVCdWlsZGVyOjpyZXBvcnRWaXN1YWxseU5vbkVtcHR5Q29udGVudChjb25zdCBSZW5kZXJFbGVt
ZW50JiBwYXJlbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpczxSZW5kZXJTVkdS
b290PihjaGlsZCkpIHsKLSAgICAgICAgYXV0byBmaXhlZFNpemUgPSBbXSAoY29uc3QgYXV0byYg
cmVuZGVyZXIpIC0+IE9wdGlvbmFsPEludFNpemU+IHsKKyAgICAgICAgYXV0byBmaXhlZFNpemUg
PSBbXSAoY29uc3QgYXV0byYgcmVuZGVyZXIpIC0+IHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gewog
ICAgICAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgICAgICAgICAg
aWYgKCFzdHlsZS53aWR0aCgpLmlzRml4ZWQoKSB8fCAhc3R5bGUuaGVpZ2h0KCkuaXNGaXhlZCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCmluZGV4IGI3ZjBhZGViMTc1
YWU4NTI3MGI0OGUyMmQyZTEzNTdiNmNjNDYyMmEuLjlkNGYzZDVmMDY3MTEwZTRmODJhZTdiZmI2
ODVlNjQ3YjMzZmEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RydWN0IFBhcmVudCB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07
CiAgICAgICAgIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcyB7IG51bGxwdHIg
fTsKLSAgICAgICAgT3B0aW9uYWw8UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRp
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVl
UG9zaXRpb247CiAKICAgICAgICAgYm9vbCBkaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVy
IHsgZmFsc2UgfTsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c0NoaWxkUmVuZGVyZXIg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VR
dW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5h
Z2VyLmNwcAppbmRleCAzNzFkMzNiNmYxNTY3N2I3MWNiOTUwMGU5MmVlMjA5MzIzZTIzNmI0Li43
MTgyNTk2NGE4NGExNDU2NjM0YWZjOTFkMDQ3ODQwYTVlOGMzNzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVz
dFNwYWNlT25CYWNrZ3JvdW5kVGhyZWEKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc3BhY2VSZXF1ZXN0ZWQsICZzZW1hcGhvcmVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKFN0b3JhZ2UsICIlcCAtIFN0b3JhZ2VRdW90YU1hbmFnZXIgYXNrcyBmb3IgcXVvdGEg
aW5jcmVhc2UgJSIgUFJJdTY0LCB0aGlzLCBzcGFjZVJlcXVlc3RlZCk7Ci0gICAgICAgIG1fcXVv
dGFJbmNyZWFzZVJlcXVlc3RlcihtX3F1b3RhLCBtX3VzYWdlLCBzcGFjZVJlcXVlc3RlZCwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCAmc2VtYXBob3JlXShP
cHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIG11dGFibGUgeworICAgICAgICBtX3F1b3RhSW5j
cmVhc2VSZXF1ZXN0ZXIobV9xdW90YSwgbV91c2FnZSwgc3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgJnNlbWFwaG9yZV0oc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIG11dGFibGUgewogICAgICAgICAgICAgUkVMRUFT
RV9MT0coU3RvcmFnZSwgIiVwIC0gU3RvcmFnZVF1b3RhTWFuYWdlciByZWNlaXZlcyBxdW90YSBp
bmNyZWFzZSByZXNwb25zZSAlIiBQUkl1NjQsIHRoaXMsIG5ld1F1b3RhID8gKm5ld1F1b3RhIDog
MCk7CiAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oCmluZGV4IDViMzU2NTcyZDQ4YmI0Mjc1
OWNhMWVmNWE0NTkwYzhjMDIzNjRlNzguLjFlNzU0ZTM0MGZiMDBhYTY5MWQzNzQ5MjQ4NTg0ZDkw
NzZjYzgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3Rh
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFN0b3JhZ2VRdW90YU1hbmFnZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVF1b3RhTWFuYWdlcj4sIHB1CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgVXNhZ2VHZXR0ZXIgPSBGdW5j
dGlvbjx1aW50NjRfdCgpPjsKLSAgICB1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdGVyID0gRnVu
Y3Rpb248dm9pZCh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwg
dWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8dWludDY0X3Q+KT4mJik+OworICAgIHVzaW5nIFF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBG
dW5jdGlvbjx2b2lkKHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFVzYWdl
LCB1aW50NjRfdCByZXF1ZXN0ZWRJbmNyZWFzZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFN0b3JhZ2VRdW90YU1hbmFnZXI+IGNyZWF0ZSh1aW50NjRfdCBxdW90YSwgVXNhZ2VHZXR0ZXIm
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RlciYmKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YUZyb21QZXJPcmlnaW5RdW90YSh1aW50NjRfdCBx
dW90YSkgeyByZXR1cm4gcXVvdGEgLyAxMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1ZTI4NDNkYzFmMTYxZDJhMWM0YTlhNWUzNTky
ZDJiNjY0MDU4MGYuLjdjNjU0NmNlOWEzM2JmYTAwMmM4MGEzMmRkZGY0M2ZiYzczZWVhMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTE4
Myw3ICsxODMsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJN
YXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYQogICAgIHRyYW5zZmVyTWF0Y2hl
ZFJ1bGVzKGRlY2xhcmF0aW9uT3JpZ2luKTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25Pcmln
aW4sIE9wdGlvbmFsPFNjb3BlT3JkaW5hbD4gZnJvbVNjb3BlKQordm9pZCBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRp
b25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2NvcGVPcmRpbmFsPiBmcm9tU2NvcGUpCiB7CiAgICAg
aWYgKG1fbW9kZSAhPSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcykKICAg
ICAgICAgZGVjbGFyYXRpb25zRm9yT3JpZ2luKG1fcmVzdWx0LCBkZWNsYXJhdGlvbk9yaWdpbiku
cmVzZXJ2ZUNhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRleCAxYjMzMmZkYzAxMjYxODcwN2IwM2I3
MDkxNzBjMGZmYWYyZDgxMmZjLi4yMzkyZTBiNzQ0MjE0YWUyZTc1MTZmZTVmZDhhMmY0ZGQ5ODk2
NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAg
LTQwLDcgKzQwLDcgQEAgY2xhc3MgU2NvcGVSdWxlU2V0czsKIAogY2xhc3MgUHNldWRvRWxlbWVu
dFJlcXVlc3QgewogcHVibGljOgotICAgIFBzZXVkb0VsZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBz
ZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0
ZDo6bnVsbG9wdCkKKyAgICBQc2V1ZG9FbGVtZW50UmVxdWVzdChQc2V1ZG9JZCBwc2V1ZG9JZCwg
c3RkOjpvcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6
bnVsbG9wdCkKICAgICAgICAgOiBwc2V1ZG9JZChwc2V1ZG9JZCkKICAgICAgICAgLCBzY3JvbGxi
YXJTdGF0ZShzY3JvbGxiYXJTdGF0ZSkKICAgICB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBQc2V1ZG9JZCBwc2V1ZG9JZDsKLSAgICBPcHRpb25hbDxTdHlsZVNjcm9s
bGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlU2Nyb2xs
YmFyU3RhdGU+IHNjcm9sbGJhclN0YXRlOwogICAgIEF0b21TdHJpbmcgaGlnaGxpZ2h0TmFtZTsK
IH07CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGVjbGFy
YXRpb25PcmlnaW4geyBVc2VyQWdlbnQsIFVzZXIsIEF1dGhvciB9OwogICAgIHN0YXRpYyBWZWN0
b3I8TWF0Y2hlZFByb3BlcnRpZXM+JiBkZWNsYXJhdGlvbnNGb3JPcmlnaW4oTWF0Y2hSZXN1bHQm
LCBEZWNsYXJhdGlvbk9yaWdpbik7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVs
ZXMoRGVjbGFyYXRpb25PcmlnaW4pOwotICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVj
bGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFNjb3BlT3JkaW5hbD4gZm9yU2NvcGUgPSB7IH0pOwor
ICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0
aW9uYWw8U2NvcGVPcmRpbmFsPiBmb3JTY29wZSA9IHsgfSk7CiAKICAgICB2b2lkIGFkZE1hdGNo
ZWRSdWxlKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5h
bCk7CiAgICAgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaGVkUHJvcGVydGllcyYmLCBE
ZWNsYXJhdGlvbk9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
RmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5kZXgg
ZTNmZWM1Y2Q1NzAyMmFlYjNlOGU4OGFkZjVhY2QwYzZhZjNlYWY3ZS4uMTI0MDI3YTFjYjc3MTE1
NDM1M2QwOGRhZDAzY2RiNDQxMTY0M2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9vbCBpc1NpYmxpbmdPclN1YmplY3QoTWF0
Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVGZWF0
dXJlOjpSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIE9wdGlvbmFsPE1hdGNo
RWxlbWVudD4gbWF0Y2hFbGVtZW50KQorUnVsZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSwgc3RkOjpvcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVu
dCkKICAgICA6IHN0eWxlUnVsZSgmcnVsZURhdGEuc3R5bGVSdWxlKCkpCiAgICAgLCBzZWxlY3Rv
ckluZGV4KHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSkKICAgICAsIHNlbGVjdG9yTGlzdEluZGV4
KHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
aAppbmRleCAxY2QyZTNmZjU3YzBiZTlhYzczZmIxOGFjNjVkYjc5NTc0OTE2NGFhLi5jYTU2M2Fl
NzZjNDNiM2I5ZTJkYWJjMGViZGM2ZTQzODI1Zjk0MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVG
ZWF0dXJlLmgKQEAgLTQwLDE3ICs0MCwxNyBAQCBlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCA6IHVp
bnQ4X3QgeyBTdWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbgogY29u
c3RleHByIHVuc2lnbmVkIG1hdGNoRWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KE1hdGNoRWxlbWVudDo6SG9zdCkgKyAxOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmUgewotICAgIFJ1
bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgUnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEmLCBzdGQ6Om9wdGlvbmFs
PE1hdGNoRWxlbWVudD4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgUmVmUHRyPGNvbnN0IFN0eWxl
UnVsZT4gc3R5bGVSdWxlOwogICAgIHVpbnQxNl90IHNlbGVjdG9ySW5kZXg7IC8vIEtlZXAgaW4g
c3luYyB3aXRoIFJ1bGVEYXRhJ3Mgc2VsZWN0b3JJbmRleCBzaXplLgogICAgIHVpbnQxNl90IHNl
bGVjdG9yTGlzdEluZGV4OyAvLyBLZWVwIGluIHN5bmMgd2l0aCBSdWxlRGF0YSdzIHNlbGVjdG9y
TGlzdEluZGV4IHNpemUuCi0gICAgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQg
eyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgeyB9Owog
fTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJ1bGVGZWF0dXJlKSA8PSAxNiwgIlJ1bGVGZWF0dXJl
IGlzIGEgZnJxdWVudGx5IGFsb2NhdGVkIG9iamVjdC4gS2VlcCBpdCBzbWFsbC4iKTsKIAogc3Ry
dWN0IFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yIDogcHVibGljIFJ1bGVGZWF0
dXJlIHsKLSAgICBSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcihjb25zdCBSdWxl
RGF0YSYgZGF0YSwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51
bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIp
CisgICAgUnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3IoY29uc3QgUnVsZURhdGEm
IGRhdGEsIHN0ZDo6b3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51
bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIp
CiAgICAgICAgIDogUnVsZUZlYXR1cmUoZGF0YSwgV1RGTW92ZShtYXRjaEVsZW1lbnQpKQogICAg
ICAgICAsIGludmFsaWRhdGlvblNlbGVjdG9yKGludmFsaWRhdGlvblNlbGVjdG9yKQogICAgIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA2MjU4Y2Q2NDRmZDU0YjhhMzM4NTZhODMz
Njg5NjcxOGE4MGM2MjgyLi40ZGU3M2E2MjgxZGQ5NzA2N2E0MTlmYWRlZWZhM2UwNDg2NWRhYjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgUnVs
ZVNldDo6dHJhdmVyc2VSdWxlRGF0YXMoRnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICB0cmF2ZXJz
ZVZlY3RvcihtX3VuaXZlcnNhbFJ1bGVzKTsKIH0KIAotT3B0aW9uYWw8RHluYW1pY01lZGlhUXVl
cnlFdmFsdWF0aW9uQ2hhbmdlcz4gUnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1
bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikKK3N0ZDo6b3B0aW9uYWw8
RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gUnVsZVNldDo6ZXZhbHVhdGVEeW5h
bWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIGV2YWx1YXRvcikK
IHsKICAgICBhdXRvIGNvbGxlY3RlZENoYW5nZXMgPSBldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5
UnVsZXMoZXZhbHVhdG9yLCAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IGRjOTIyNDIx
NjExN2EwYjJkNWM4ODBkOTU1ZTJiNTNlN2M0YzJhNWQuLjZmMzcwYWE2ZWE0MzY1YWM5YjM0NDI2
ZWUyNGE5YzEzNWM0ODQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVT
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKQEAgLTEyMCw3ICsxMjAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllczsgfQog
Ci0gICAgT3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVh
dGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJik7CiAK
ICAgICBjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaAppbmRleCBhYzg0MTI1
MGM0NTkyZGI2NDY2Zjc0MmIzOTJkZTFmODNlYjE1NGQyLi4xOTEzMWU1ODBmNTY0NWFlYTIyMzI4
Mjk0ZTlkNzYxZWJmODM1ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUFkanVzdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCkBA
IC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgc3RydWN0IEFkanVzdG1lbnRGb3JUZXh0QXV0b3NpemluZyB7Ci0gICAgICAgIE9wdGlvbmFs
PGZsb2F0PiBuZXdGb250U2l6ZTsKLSAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IG5ld0xpbmVIZWln
aHQ7Ci0gICAgICAgIE9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBuZXdTdGF0dXM7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG5ld0ZvbnRTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBuZXdMaW5lSGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF1dG9zaXplU3Rh
dHVzPiBuZXdTdGF0dXM7CiAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBuZXdGb250U2l6ZSB8fCBuZXdMaW5lSGVpZ2h0IHx8IG5ld1N0YXR1czsgfQogICAg
IH07CiAgICAgc3RhdGljIEFkanVzdG1lbnRGb3JUZXh0QXV0b3NpemluZyBhZGp1c3RtZW50Rm9y
VGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDFkNDRhZWRi
NjVjMzAyNWU2MWE2MTYxNmQ2OWRjZjE1MDQ2ZmMyYWMuLmJmNTI3NDRhMzg0MDMyZjBjNjM1OGYw
NzQxYmJhZThiYmYxZWJiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCkBAIC0xMTcsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBz
dGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0R3JpZFRyYWNrU2l6ZShCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29udmVy
dEdyaWRUcmFja1NpemVMaXN0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyaWRQ
b3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNv
bnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxmbG9hdD4gY29udmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1
ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5n
dGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5n
dGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZp
bHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIGNvbnZlcnRUb3VjaENhbGxvdXQoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgpAQCAtMTM3LDcgKzEzNyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0U21vb3RoU2Nyb2xsaW5nKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBj
b252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBG
b250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZv
bnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRXZWln
aHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRm9udFNlbGVj
dGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRjaChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHlsZShCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdu
bWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgR2x5
cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9y
aWVudGF0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBsaWVyID0gMS5mKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CiAgICAgc3RhdGljIEZvbnRTeW50aGVz
aXMgY29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICAKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC0xMTQxLDcgKzExNDEsNyBAQCBpbmxp
bmUgR3JpZFRyYWNrU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIHJldHVybiBjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVl
LCBidWlsZGVyU3RhdGUpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgR3JpZFBvc2l0aW9uIGdyaWRQb3NpdGlvbjsKICAgICBpZiAo
Y3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBncmlkUG9zaXRpb24pKQpAQCAtMTIwNSw5ICsxMjA1
LDkgQEAgaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgQnVpbGRlckNvbnZlcnRlcjo6
Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGgKICAgICByZXR1cm4gYnVpbGRlclN0YXRlLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSh6b29tKTsKIH0K
IAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRT
cGFjaW5nKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRX
b3JkU3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0aD4gd29yZFNwYWNpbmc7CisgICAgc3RkOjpvcHRp
b25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICB3b3JkU3BhY2luZyA9IFJlbmRl
clN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKQEAgLTEyMjEsNyArMTIyMSw3IEBAIGlubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhC
dWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQogCi1pbmxpbmUg
T3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKQEAg
LTEyMzUsMTAgKzEyMzUsMTAgQEAgaW5saW5lIE9wdGlvbmFsPGZsb2F0PiBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoQnVpbGRlclN0YXRlJiBidWlsZGUKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwg
MCA/IE9wdGlvbmFsPGZsb2F0PihzdGQ6Om51bGxvcHQpIDogT3B0aW9uYWw8ZmxvYXQ+KHBlcnNw
ZWN0aXZlKTsKKyAgICByZXR1cm4gcGVyc3BlY3RpdmUgPCAwID8gc3RkOjpvcHRpb25hbDxmbG9h
dD4oc3RkOjpudWxsb3B0KSA6IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0K
IAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1
ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8
IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwog
ICAgIGlmIChsZW5ndGguaXNVbmRlZmluZWQoKSkKQEAgLTEyNDYsNyArMTI0Niw3IEBAIGlubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVt
ZW50KEJ1aWxkZXJTdGF0ZSYKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgT3B0aW9u
YWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJh
dGlvbnMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwog
ICAgIGlmIChidWlsZGVyU3RhdGUuY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3BlcmF0
aW9ucykpCkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDUwogfQog
CiAvLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMgdG8gcGFyc2VkIGFuZCB2YWxpZCwgdGhpcyBmdW5j
dGlvbiByZXR1cm5zIHN0ZDo6bnVsbG9wdCBpZiB0aGUgaW5wdXQgd2FzICJub3JtYWwiLgotaW5s
aW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxD
U1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsKICAgICBjb25zdCBhdXRvJiBmb250U3R5bGVWYWx1
ZSA9IGRvd25jYXN0PENTU0ZvbnRTdHlsZVZhbHVlPih2YWx1ZSk7CkBAIC0xNTMxLDcgKzE1MzEs
NyBAQCBpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5
cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVyUwogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmll
bnRhdGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0
aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxv
YXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKaW5kZXggN2YwMWY5Y2JhNTA5YzNjN2Q5YThlNGM3OTE3Njc0MDE0M2U4ZDU4OC4uZjZl
NmY3YTgyNzA3OWQ2NGY3M2U4MTYwNmMxYzY3ZDgzNjRmOWRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTcyNyw3ICs3MjcsNyBAQCBzdGF0aWMgaW5s
aW5lIGZsb2F0IGNvbXB1dGVMaW5lSGVpZ2h0TXVsdGlwbGllckR1ZVRvRm9udFNpemUoY29uc3Qg
RG9jdW1lbnQmIGRvYwogCiBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGlu
ZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewot
ICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhlaWdodCA9IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwgdmFsdWUsIDEpOworICAgIHN0ZDo6b3B0aW9uYWw8
TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQo
YnVpbGRlclN0YXRlLCB2YWx1ZSwgMSk7CiAgICAgaWYgKCFsaW5lSGVpZ2h0KQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckZvbnRSYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJh
dy5jcHAKaW5kZXggNDM2ODcwOTI1NDcwNWVhMDljMjliZjlhZTI5ZmJiZWU5MTIxN2RlMS4uNzFj
NzRjYjA2MjQ1MmJkYzAxOWEwMDc3NDlhOTQ4MzZkNDZhM2FiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
c3RhdGljIGJvb2wgdXNlRml4ZWREZWZhdWx0U2l6ZShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24pCiAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbi5mYW1pbHlD
b3VudCgpID09IDEgJiYgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkgPT0gZmFtaWx5TmFt
ZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpNb25vc3BhY2VGYW1pbHkpOwogfQogCi1PcHRp
b25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJh
dywgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmIGZvbnREZXNjcmlwdGlvbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKK3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+IHJlc29sdmVG
b3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
JiBmb250RGVzY3JpcHRpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgQVNTRVJUKGNvbnRleHQuY3NzRm9udFNlbGVjdG9yKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmgKaW5kZXggMmJjZmNiZmFkZDQ1MjdjM2Ex
YjJlYjY4ZjJjOGViNWZlOWU5ZmEzNi4uNGZiM2NmODAyOTZiMGQxNGRhNGVjODE3ZmUzMmQ1ZGE2
NjRjMmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRS
YXcuaApAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgRm9udFJhdzsKIAogbmFtZXNwYWNlIFN0eWxl
IHsKIAotT3B0aW9uYWw8Rm9udENhc2NhZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IENTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJhdyYsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZT4gcmVz
b2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3Jiwg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYzFkYmZmY2RjNDZj
MDY5YTQ5NTFkYzA3ZjQ5OWE4M2E2YTRjMDY2My4uM2RjMzU1OTA2NmZkMGE4ODliZmQ3MWVlNmYx
ZDBiNjA3NzM4OGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTU3Niw3ICs1NzYsNyBAQCBib29sIFJlc29sdmVyOjpoYXNWaWV3cG9ydERlcGVuZGVudE1lZGlh
UXVlcmllcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcnVsZVNldHMuaGFzVmlld3BvcnREZXBlbmRl
bnRNZWRpYVF1ZXJpZXMoKTsKIH0KIAotT3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0
aW9uQ2hhbmdlcz4gUmVzb2x2ZXI6OmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcmllcygpCitzdGQ6
Om9wdGlvbmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IFJlc29sdmVyOjpl
dmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJpZXMoKQogewogICAgIHJldHVybiBtX3J1bGVTZXRzLmV2
YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCmluZGV4IDY5NzdjYzdhM2U3ZjBkY2FiYmFk
NDg4YjY2NzM0NDM2MmVhMDQzYzkuLmIyZGU5ZmVkNDczZDY1ZTU1YWI3YTBhOWI3N2NhNWEzZjVk
MmVkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKQEAgLTEyOCw3ICsxMjgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVt
ZW50JiwgY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNWaWV3cG9ydERl
cGVuZGVudE1lZGlhUXVlcmllcygpIGNvbnN0OwotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRpYVF1
ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1YXRlRHluYW1pY01lZGlhUXVlcmllcygpOworICAg
IHN0ZDo6b3B0aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVh
dGVEeW5hbWljTWVkaWFRdWVyaWVzKCk7CiAKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVm
PFN0eWxlUnVsZUtleWZyYW1lcz4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRl
eCBiYTc2NzJkZDA4NDA3ZjRkNWRiODVmM2E0MjY3Y2NkNDYyMDIwNmEwLi5jOWI2OTYzZWJiNDgx
Nzc5YTgwMzc3ZmVkMjViZmNmODY1MGI3OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5o
CkBAIC0xODIsNyArMTgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0
eWxlc2hlZXRTZXROYW1lOwogCi0gICAgT3B0aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5nVXBk
YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOwogCiAg
ICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggZTdmNjI0MzY0YjY2YjczYmMz
ZjY2MmU1NjYzNWMzZGZhMWQyZjk4NS4uYTliYTY3MzIzNmNlNDU1OGJjNzU0NDQwNzY2ZDk0YjMz
OWRhNmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3Bw
CkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBTY29wZVJ1bGVTZXRzOjpoYXNWaWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1PcHRpb25h
bDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBTY29wZVJ1bGVTZXRzOjpldmFs
dWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgZXZh
bHVhdG9yKQorc3RkOjpvcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2Vz
PiBTY29wZVJ1bGVTZXRzOjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYgZXZhbHVhdG9yKQogewotICAgIE9wdGlvbmFsPER5bmFtaWNNZWRp
YVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IGV2YWx1YXRpb25DaGFuZ2VzOworICAgIHN0ZDo6b3B0
aW9uYWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGlvbkNoYW5n
ZXM7CiAKICAgICBhdXRvIGV2YWx1YXRlID0gWyZdKGF1dG8qIHJ1bGVTZXQpIHsKICAgICAgICAg
aWYgKCFydWxlU2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZVJ1bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApp
bmRleCA3OWJiZGQxZjJlMWU3ZTA2MWRmMjc1NWQxMGFlMTQzM2E3YWE2MWQ2Li44N2E3ODllZmJi
OTQ3OTZlODEwZTdhYTM2YjRjOTFmYmM0YzQyNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBldmFsdWF0ZUR5bmFtaWNNZWRp
YVF1ZXJ5UnVsZXMoY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYpOworICAgIHN0ZDo6b3B0aW9u
YWw8RHluYW1pY01lZGlhUXVlcnlFdmFsdWF0aW9uQ2hhbmdlcz4gZXZhbHVhdGVEeW5hbWljTWVk
aWFRdWVyeVJ1bGVzKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsKIAogICAgIFJ1bGVGZWF0
dXJlU2V0JiBtdXRhYmxlRmVhdHVyZXMoKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4+PiBtX2F0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzOwog
ICAgIG11dGFibGUgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiwgV1RGOjpJbnRIYXNoPENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBtX3BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNl
dHM7CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVj
dG9yc0ZvclN0eWxlQXR0cmlidXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBt
X2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZTsKIAogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9kZWZhdWx0U3R5bGVWZXJzaW9uT25GZWF0dXJlQ29sbGVjdGlvbiB7IDAg
fTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fdXNlckFnZW50TWVkaWFRdWVyeVJ1bGVDb3VudE9u
VXBkYXRlIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3Bw
CmluZGV4IGRiYzAzM2VlMGM1NTdmYWE5YWRmNDUzMmY3MDAyZmU2NzdlNjU1MTYuLmNlZjhmMGMz
Zjg5NzA1ZDIyNzA3OTNjZGY1OGNlYmMxYTc1ZmFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBFbGVtZW50VXBkYXRl
cyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0
dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1
ZG9VcGRhdGVzKSB9OwogfQogCi1PcHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6
OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRl
JiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVu
dFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQp
CiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpNYXJrZXIgJiYgZWxlbWVudFVwZGF0
ZS5zdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpMaXN0SXRlbSkKICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IDlh
ZDZiMGQ1NWEzNGJmNDFmZmMyMjIyYmQ0NTAyYWZmZjI1N2Q5MmQuLjY3ZWExNzcyMTdjMzRhOWIw
NTJhODAyZWUyNmNmMjlhNWUyNjkwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRVcGRhdGVz
IHJlc29sdmVFbGVtZW50KEVsZW1lbnQmKTsKIAogICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNy
ZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBj
b25zdCBTdHlsZWFibGUmLCBDaGFuZ2UsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKTsKLSAgICBPcHRpb25hbDxFbGVtZW50
VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUm
LCBQc2V1ZG9JZCk7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNl
dWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAg
ICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVkPFNjb3BlPiB7CiAgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihUcmVlUmVzb2x2ZXJTY29w
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAppbmRleCA5OWNlMTNmNjE3YjBlZjVhMDFk
ZTEzNGU4NDQxMWJlZWM5MzlmYmRkLi4wMmM2NTMzODNjZDQ4ZWRmN2RhMDI5MDJmNDJhN2Q0NWVl
ZDJiZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKQEAgLTYwLDcgKzYwLDcgQEAg
c3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKIHN0cnVjdCBUZXh0VXBkYXRlIHsKICAgICB1bnNpZ25l
ZCBvZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbGVuZ3RoIHsgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIH07Ci0gICAgT3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPj4gaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGU7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+PiBpbmhlcml0ZWREaXNwbGF5Q29udGVudHNT
dHlsZTsKIH07CiAKIGNsYXNzIFVwZGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApp
bmRleCBiNjQ1ODM4YTUwOWM5NDk4MjVjNjhlMzlmYjE2YWU0MGVmMjEyMmFlLi4wZDdjN2Q1YTA1
OWJhZGI4ODE0N2Y5YTVhMWQyOTcyZGEyNDdkYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFN0eWxlYWJsZTo6dXBkYXRlQ1NTVHJhbnNp
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZAogICAgIGlm
ICh0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpIHsKICAgICAgICAgYXV0byBudW1iZXJP
ZlByb3BlcnRpZXMgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOwog
ICAgICAgICBmb3IgKGludCBwcm9wZXJ0eUluZGV4ID0gMDsgcHJvcGVydHlJbmRleCA8IG51bWJl
ck9mUHJvcGVydGllczsgKytwcm9wZXJ0eUluZGV4KSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxi
b29sPiBpc1Nob3J0aGFuZDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNTaG9y
dGhhbmQ7CiAgICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246
OmdldFByb3BlcnR5QXRJbmRleChwcm9wZXJ0eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAg
ICAgICBpZiAoaXNTaG9ydGhhbmQgJiYgKmlzU2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAppbmRleCA2NGMxMWE5NTZlMmQ2OWE3OTdm
YzBiZTYwOTA1YjEyZDNlZWU3ZjNiLi5mMzE4YTE3OGNiMTdkN2E5MzM3YzYzYTMyYjlmNTE0ODlj
YjAwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1
Y3QgU3R5bGVhYmxlIHsKICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZShlbGVtZW50LCBlbGVtZW50
LnBzZXVkb0lkKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBPcHRpb25hbDxjb25zdCBT
dHlsZWFibGU+IGZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAg
ICBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJl
cihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICB7CiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZyb21F
bGVtZW50KCplbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKaW5kZXggOGU3YzE5ZDlk
ZmYyNWZkY2IyNGRiYjQ0ZDQ1NmIyMWYzODBlZjg5MS4uYjZhNGU4YzUyNzY4NWZmMjY2MTE2NGJm
OTMxODdmZmExNDU5OTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1fdGFyZ2V0IHsgU1ZH
QW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogCiAgICAgLy8gVGhpcyBpcyBjb21wdXRl
ZCBvbmx5IG9uY2UgYW5kIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHN1YnNlcXVlbnQgVVJMIGNo
YW5nZXMuCi0gICAgbXV0YWJsZSBPcHRpb25hbDxTaGFyZWRTdHJpbmdIYXNoPiBtX3N0b3JlZFZp
c2l0ZWRMaW5rSGFzaDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8U2hhcmVkU3RyaW5nSGFz
aD4gbV9zdG9yZWRWaXNpdGVkTGlua0hhc2g7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NVG9r
ZW5MaXN0PiBtX3JlbExpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcAppbmRleCBjOTI0ZTVkNzQyM2FmYTY4NWVmZTU0YzQ2MTIyZGY0MDRhOTJm
NmYxLi4wYjM5ZjAyNjMxMzEwMGI4ZmU3ZmUwMjk3NmZiOGNhNTk2Y2U3MzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMTg5LDcgKzE4OSw3
IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpCiAgICAgICAgIGFuaW1hdG9yLT5zdG9wKHRhcmdldEVsZW1lbnQpOwog
fQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0
YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsK
ICAgICAvLyBGSVhNRTogQSByZXR1cm4gdmFsdWUgb2YgZmxvYXQgaXMgbm90IGVub3VnaCB0byBz
dXBwb3J0IHBhY2VkIGFuaW1hdGlvbnMgb24gbGlzdHMuCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggZDEz
M2U2MTIzMzM0MTQ2ZDUxNWY5NjZkODNlZTk4YjJiMDIyOTk0ZS4uYjUxYzZiMDc2YTU1OTI2MmYy
YzAzNmUyNzQ3ZjU3MGNmZmFjOGFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuaApAQCAtNTcsMTIgKzU3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsK
LSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBoYXNJbnZhbGlkQ1NT
QXR0cmlidXRlVHlwZSgpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQXR0cmlidXRl
QW5pbWF0b3I+IG1fYW5pbWF0b3I7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2hhc0lu
dmFsaWRDU1NBdHRyaWJ1dGVUeXBlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBt
X2hhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5k
ZXggZGU0MThkMzFkM2RjOTQxOGU5Yjc0ZWRlMDBhNzYwOWI3M2IwMWEwMS4uMzc3ZDc5YTBkMzFl
MGFmYjViYzhkODJlNGZkMGU2MTI2ZGNkM2Q4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBTVkdB
bmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIH0KIH0KIAot
T3B0aW9uYWw8ZmxvYXQ+IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5j
ZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCitzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFu
Y2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogewog
ICAgIGF1dG8gZnJvbSA9IHBhcnNlUG9pbnQoZnJvbVN0cmluZyk7CiAgICAgaWYgKCFmcm9tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRleCA3YjAy
NGYyOGZhNDI3MzUyNjZiM2ZhNTcxMjZhM2JkMmRhNzAwY2JmLi5mZWI4ZTBkODQ1Mjg1ZTgwZWFl
ODY1MjRjYTBkMzRjMzlkMDg3NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBvdmVycmlkZTsKICAgICB2
b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRl
RGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KSBvdmVycmlkZTsKIAogICAgIGVudW0gUm90YXRlTW9kZSB7CiAgICAgICAgIFJvdGF0ZUFuZ2xl
LApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIE5vdGU6IHdlIGRvIG5vdCBzdXBw
b3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0by9mcm9tIGNvb3JkcyBhcyB0aGUgc3BlYyBpbXBs
aWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24ndCBlaXRoZXIpCiAgICAgRmxvYXRQb2ludCBtX2Zy
b21Qb2ludDsKICAgICBGbG9hdFBvaW50IG1fdG9Qb2ludDsKLSAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb247CiAKICAgICBQYXRoIG1fcGF0aDsKICAgICBQ
YXRoIG1fYW5pbWF0aW9uUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcAppbmRleCA2OTIzYTBiYjg1ZWM3OWFhY2NiNDlkZjlmNDljZTllNGRjMmU2NzNlLi5m
YjkxYWQyNTRmNDEzZWRlNGE4NTRiMjFhYTdmMzZhN2VlY2Q4OGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC03OSwxMiArNzksMTIgQEAgZmFpbDoK
ICAgICByZXN1bHQuY2xlYXIoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6
aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFVuaXRCZXppZXI+PiBwYXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJp
bmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgWyZd
KGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxWZWN0b3I8VW5pdEJlemllcj4+IHsKKyAgICByZXR1
cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gewogICAgICAgICBza2lwT3B0aW9uYWxT
VkdTcGFjZXMoYnVmZmVyKTsKIAogICAgICAgICBWZWN0b3I8VW5pdEJlemllcj4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKaW5kZXggZmNmOGFmNjUyYjVj
YTQyZTMxMGI1YTQ1ZTIzMTU1ODk1ZWJhOGIyOS4uNTU1N2QzZmE4OGExMDIxOWFiZTVjODdiZjg5
OGJjNzVkMDZjMDVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5o
CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRl
RnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudCwgdW5z
aWduZWQgcmVwZWF0Q291bnQpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZsb2F0PiBjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIC8qZnJvbVN0cmluZyovLCBjb25zdCBTdHJpbmcm
IC8qdG9TdHJpbmcqLykgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5n
JiAvKnRvU3RyaW5nKi8pID0gMDsKIAogICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtleVRpbWVz
KCkgY29uc3Q7CiAgICAgdm9pZCBjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKGZsb2F0
IHBlcmNlbnQsIGZsb2F0JiBlZmZlY3RpdmVQZXJjZW50LCBTdHJpbmcmIGZyb20sIFN0cmluZyYg
dG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDdkMmI5ZGE3ZTQwMzE4MjgwMGY0
NTkwNjhjZjEwOTNjMTdkOTYzMzkuLmEwMjA2NDlmMTg3YzZmZDc0ODJkOGJjNTQ3ZDc5NDY0NmE3
ZmM1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBj
b25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgU1ZHRWxlbWVudDo6aW5zdGFuY2VzKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0YS0+aW5zdGFuY2VzKCk7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UmVjdD4gU1ZHRWxlbWVudDo6Z2V0Qm91bmRpbmdCb3goKSBjb25zdAorc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6OmdldEJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAg
ICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PigqdGhpcykpIHsKICAgICAgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU1ZH
RWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxldGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCiAgICAgcHJvcGVydHlBbmltYXRvckZhY3RvcnkoKS5hbmltYXRvcldpbGxCZURl
bGV0ZWQoYXR0cmlidXRlTmFtZSk7CiB9CiAKLU9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+
IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQogewogICAgIC8vIElmIHRoZSBlbGVtZW50
IGlzIGluIGEgPHVzZT4gdHJlZSB3ZSBnZXQgdGhlIHN0eWxlIGZyb20gdGhlIGRlZmluaXRpb24g
dHJlZS4KICAgICBpZiAoYXV0byBzdHlsZUVsZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA5YzRkYmE3
NjdhZDdjM2MzNjU1ODAzYzAxM2YzMmYwYmNhMTU3ZTc5Li45MjgwNWZhOTJlZjlkNjllYjc0NTFi
ZmE5ZDE4ZTAzM2U2NmQyNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTkxLDcgKzkx
LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBpbnN0YW5jZXMgb2YgYW4gZWxlbWVudCBhcmUgY2xv
bmVzIG1hZGUgaW4gc2hhZG93IHRyZWVzIHRvIGltcGxlbWVudCA8dXNlPi4KICAgICBjb25zdCBX
ZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgaW5zdGFuY2VzKCkgY29uc3Q7CiAKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGdldEJvdW5kaW5nQm94KCkgY29uc3Q7CiAKICAgICBWZWN0b3I8UmVmPFNWR0Vs
ZW1lbnQ+PiByZWZlcmVuY2luZ0VsZW1lbnRzKCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSZWZlcmVu
Y2luZ0VsZW1lbnQoU1ZHRWxlbWVudCYpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCopOwogCi0gICAgT3B0
aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBRdWFsaWZpZWRO
YW1lIGFuaW1hdGFibGVBdHRyaWJ1dGVGb3JOYW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCmluZGV4IGU2MWU2
MWFmZWVkYWEzYTU2YTQ3NWJjYTU5NTFiMGNhZTAwZjA1MDEuLmUwYTAzMTJjMzc0ZmE3MGJiNDQw
NDk2MTMzZDNkN2EyMGI0OWZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
Y3BwCkBAIC04NSwyNCArODUsMjQgQEAgYm9vbCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJz
ZVZpZXdCb3goU3RyaW5nVmlldyB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTVkdG
aXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcodmFsdWUsIFsmXShhdXRvIGJ1ZmZlcikgewogICAg
ICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2VuZXJpYyhidWZmZXIpOwogICAgIH0pOwogfQogCi1P
cHRpb25hbDxGbG9hdFJlY3Q+IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KFN0cmluZ1Bh
cnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIsIGJvb2wgdmFsaWRhdGUpCitzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1
ZmZlcjxMQ2hhcj4mIGJ1ZmZlciwgYm9vbCB2YWxpZGF0ZSkKIHsKICAgICByZXR1cm4gcGFyc2VW
aWV3Qm94R2VuZXJpYyhidWZmZXIsIHZhbGlkYXRlKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0
PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFy
PiYgYnVmZmVyLCBib29sIHZhbGlkYXRlKQorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0Zp
dFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZm
ZXIsIGJvb2wgdmFsaWRhdGUpCiB7CiAgICAgcmV0dXJuIHBhcnNlVmlld0JveEdlbmVyaWMoYnVm
ZmVyLCB2YWxpZGF0ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9w
dGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3hHZW5lcmljKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgYm9vbCB2YWxpZGF0ZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveEdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBib29sIHZhbGlkYXRlKQogewogICAgIFN0cmluZ1Zp
ZXcgc3RyaW5nVG9QYXJzZSA9IGJ1ZmZlci5zdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5n
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAppbmRleCBhZTg4Y2IwNWVhYWU5
NGExMzhlZTg0ZjZhYmZiMWE0Y2FhMzgwNDZiLi5lYjUyM2VkN2ZkY2MxZjdiNWJiOGRhMmFkMzg2
YjhhNzNkZTZhMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC02NCwx
MiArNjQsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJpbmdWaWV3KTsKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYs
IGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmll
d0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VWaWV3Qm94KFN0cmluZ1ZpZXcpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1
ZmZlcjxMQ2hhcj4mLCBib29sIHZhbGlkYXRlID0gdHJ1ZSk7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IHBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIGJvb2wg
dmFsaWRhdGUgPSB0cnVlKTsKIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlVmlld0JveEdlbmVyaWMoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gcGFyc2VWaWV3Qm94R2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
JiwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwogCiAgICAgUmVmPFNWR0FuaW1hdGVkUmVjdD4gbV92
aWV3Qm94OwogICAgIFJlZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2Vy
dmVBc3BlY3RSYXRpbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAKaW5kZXgg
NjgwN2Y2YmI0YjJkODQ0MDAxNTQ5MGRkZWUzZTljMWY0ZWQ1MDgyZi4uZDBlMzY4ZmE3NTQwYjMz
MTQzNTUyOTgwYzY3YTcwNWMyMTU3MzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0hLZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxl
bWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFNWR0hLZXJuRWxlbWVudD4gU1ZHSEtlcm5F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdIS2VybkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotT3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR0hLZXJuRWxlbWVudDo6YnVpbGRIb3Jp
em9udGFsS2VybmluZ1BhaXIoKSBjb25zdAorc3RkOjpvcHRpb25hbDxTVkdLZXJuaW5nUGFpcj4g
U1ZHSEtlcm5FbGVtZW50OjpidWlsZEhvcml6b250YWxLZXJuaW5nUGFpcigpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IENhbiB0aGlzIGJlIHNoYXJlZCB3aXRoIFNWR1ZLZXJuRWxlbWVudDo6YnVp
bGRWZXJ0aWNhbEtlcm5pbmdQYWlyPwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSEtlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgK
aW5kZXggOTA4OTBiMjMwNTFmN2Q1NTMwOTY2ZmFiNjMyMWNkMjJmMjdmNjdkNy4uNTk3MTJlYjM1
ZDFlN2QzMzdkZTQxY2M4NTJlOWU0N2I0NjUwZDhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2Vy
bkVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBTVkdIS2VybkVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdIS2VybkVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIE9w
dGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBidWlsZEhvcml6b250YWxLZXJuaW5nUGFpcigpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IGJ1aWxkSG9yaXpvbnRhbEtlcm5p
bmdQYWlyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1ZHSEtlcm5FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5j
cHAKaW5kZXggNzc0ZjQzZWRkNGExZTY0NWRkYTYzNDA4NTMyM2E3NzJhYWQyMmUzNC4uMzkwNjEz
MzJjYzJmZWE2OWEyZTliOTRhNWU5NDkwMDBkNjk4YmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoVmFsdWUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgU1ZHTGVuZ3RoVmFsdWU6OlNWR0xl
bmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBT
VkcKICAgICBzZXRWYWx1ZShjb250ZXh0LCB2YWx1ZSk7CiB9CiAKLU9wdGlvbmFsPFNWR0xlbmd0
aFZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9k
ZSwgU3RyaW5nVmlldyB2YWx1ZUFzU3RyaW5nKQorc3RkOjpvcHRpb25hbDxTVkdMZW5ndGhWYWx1
ZT4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIFN0
cmluZ1ZpZXcgdmFsdWVBc1N0cmluZykKIHsKICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGggeyBs
ZW5ndGhNb2RlIH07CiAgICAgaWYgKGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJp
bmcpLmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAppbmRleCAz
N2ZhMjUyZTBiZDY0ODlhNWIxY2EyYzA2ZGQ5ZWFkYjdkYjNmNGE5Li40NDhiOTRmYzY1ODg0NDE0
NGVlOGMzNDhlMTZlZTZmNGNhMWNhOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUu
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFs
dWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVu
Z3RoTW9kZTo6T3RoZXIpOwogICAgIFNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRl
eHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSA9IFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgU1ZHTGVu
Z3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxT
VkdMZW5ndGhWYWx1ZT4gY29uc3RydWN0KFNWR0xlbmd0aE1vZGUsIFN0cmluZ1ZpZXcpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR0xlbmd0aFZhbHVlPiBjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZSwgU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlLCBTdHJpbmdWaWV3LCBTVkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdh
dGl2ZVZhbHVlc01vZGUgPSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkFsbG93KTsKICAg
ICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgYmxlbmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20s
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCmluZGV4IGU1NDY1MzVmZjgwYjRkMWYxZTg2
M2VmZDBjOGIyYzQxN2U5YWU1ZDcuLjdmMGU0NTk5YTQwOTVmYTA0MmJiM2RlNTFmZjljZWU3ZDJm
ZjY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdFR5cGU+IHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmFuZ2UoY29uc3QgRmxvYXRUeXBlJiB4CiAvLyBhdCBhIGhpZ2hlciBwcmVj
aXNpb24gaW50ZXJuYWxseSwgd2l0aG91dCBhbnkgdW5uZWNlc3NhcnkgcnVudGltZSBjb3N0IG9y
IGNvZGUKIC8vIGNvbXBsZXhpdHkuCiAvLyBGSVhNRTogQ2FuIHRoaXMgYmUgc2hhcmVkL3JlcGxh
Y2VkIHdpdGggbnVtYmVyIHBhcnNpbmcgaW4gV1RGPwotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8Rmxv
YXRUeXBlPiBnZW5lcmljUGFyc2VOdW1iZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJU
eXBlPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwID0gU3VmZml4U2tpcHBpbmdQ
b2xpY3k6OlNraXApCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUg
RmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0VHlwZT4gZ2VuZXJp
Y1BhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwg
U3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCA9IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKQog
ewogICAgIEZsb2F0VHlwZSBudW1iZXIgPSAwOwogICAgIEZsb2F0VHlwZSBpbnRlZ2VyID0gMDsK
QEAgLTEzOSwxOSArMTM5LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0
eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAgICAgcmV0dXJu
IG51bWJlcjsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TENoYXI+JiBidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5IHNraXApCitzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQogewogICAgIHJldHVybiBnZW5lcmljUGFy
c2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVy
KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5
IHNraXApCitzdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVm
ZmVyPFVDaGFyPiYgYnVmZmVyLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQogewogICAgIHJl
dHVybiBnZW5lcmljUGFyc2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKIH0KIAotT3B0aW9uYWw8Zmxv
YXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQ
b2xpY3kgc2tpcCkKK3N0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKIHsKLSAgICByZXR1cm4g
cmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW3NraXBdKGF1dG8gYnVmZmVyKSAtPiBP
cHRpb25hbDxmbG9hdD4geworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3Ry
aW5nLCBbc2tpcF0oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBnZW5lcmljUGFyc2VOdW1iZXIoYnVmZmVyLCBza2lwKTsKICAgICAg
ICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0xNjEsNyArMTYxLDcgQEAgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0
cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKIAogLy8gb25seSB1
c2VkIHRvIHBhcnNlIGxhcmdlQXJjRmxhZyBhbmQgc3dlZXBGbGFnIHdoaWNoIG11c3QgYmUgYSAi
MCIgb3IgIjEiCiAvLyBhbmQgbWlnaHQgbm90IGhhdmUgYW55IHdoaXRlc3BhY2UvY29tbWEgYWZ0
ZXIgaXQKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBn
ZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1
ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTE4MiwyMiArMTgyLDIyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNp
CiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJp
bmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxib29sPiBwYXJz
ZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1
cm4gZ2VuZXJpY1BhcnNlQXJjRmxhZyhidWZmZXIpOwogfQogCi1PcHRpb25hbDxib29sPiBwYXJz
ZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZUFyY0ZsYWcoYnVmZmVyKTsKIH0KIAotT3B0aW9u
YWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZs
b2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcp
CiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0
byBidWZmZXIpIC0+IE9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CisgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAgICAgICAgIGF1dG8geCA9
IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICgheCkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0yMTYsMTIgKzIxNiwxMiBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8
ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3
JiBzdAogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZVBvaW50KGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VQb2lu
dChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gcmVhZENoYXJhY3Rl
cnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEZsb2F0UG9p
bnQ+IHsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0
byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gewogICAgICAgICBpZiAoIXNr
aXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApAQCAtMjM2LDkgKzIzNiw5IEBAIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9p
bnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQogICAgIH0pOwogfQogCi1PcHRpb25hbDxGbG9h
dFJlY3Q+IHBhcnNlUmVjdChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKIHsKLSAgICBy
ZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+
IE9wdGlvbmFsPEZsb2F0UmVjdD4geworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNp
bmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHsK
ICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGJ1ZmZlcik7CiAgICAgICAgIAogICAgICAg
ICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIE9wdGlv
bmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKICAgICB9
KTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBT
dHJpbmdWaWV3JiBzdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gcGFyc2VH
bHlwaE5hbWUoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQYXJz
aW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNzaW5nLgogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0
aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmdWaWV3JiBz
dHJpbmcpCiAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKTsKICAgICBpZiAobGVuZ3RoIDwgMiB8
fCBidWZmZXJbMF0gIT0gJ1UnIHx8IGJ1ZmZlclsxXSAhPSAnKycpCkBAIC0zNjEsNyArMzYxLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNv
ZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLU9wdGlv
bmFsPHN0ZDo6cGFpcjxVbmljb2RlUmFuZ2VzLCBIYXNoU2V0PFN0cmluZz4+PiBwYXJzZUtlcm5p
bmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1Vu
aWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBQ
YXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNzaW5nLgogCkBAIC0zOTMsNyArMzkzLDcgQEAg
T3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNl
S2VybmluZ1VuaWNvZGVTdHJpbmcoY28KICAgICB9KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VG
bG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9h
dFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwog
ICAgIGlmICgheCkKQEAgLTQwNiwxMiArNDA2LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRQb2ludD4gZ2VuZXJpY1BhcnNlRmxvYXRQ
CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQgeyAqeCwgKnkgfTsKIH0KIAotT3B0aW9uYWw8RmxvYXRQ
b2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5n
QnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VGbG9hdFBv
aW50KGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChT
dHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBwYXJzZUZsb2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlRmxvYXRQb2ludChidWZmZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCmluZGV4IDI3ZmE5ZDRkMTk3ZDc3NzQ0MjY4
ZDVjNGE4Mzg3YzAzODFlODQxN2QuLmFiZGMwYjk2ZjRiODc5YjExM2U1ZmNkMzIxNGJiM2I1ODBi
Nzg1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgKQEAgLTM3LDIz
ICszNywyMyBAQCBlbnVtIGNsYXNzIFN1ZmZpeFNraXBwaW5nUG9saWN5IHsKICAgICBTa2lwCiB9
OwogCi1PcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hh
cj4mLCBTdWZmaXhTa2lwcGluZ1BvbGljeSA9IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKTsK
LU9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYs
IFN1ZmZpeFNraXBwaW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwotT3B0
aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmLCBTdWZmaXhTa2lwcGlu
Z1BvbGljeSA9IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKTsKK3N0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiwgU3VmZml4U2tpcHBp
bmdQb2xpY3kgPSBTdWZmaXhTa2lwcGluZ1BvbGljeTo6U2tpcCk7CitzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYsIFN1ZmZpeFNraXBw
aW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOworc3RkOjpvcHRpb25hbDxm
bG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYsIFN1ZmZpeFNraXBwaW5nUG9saWN5
ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwogCi1PcHRpb25hbDxzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3Jik7
CitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlv
bmFsTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmKTsKIAotT3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNG
bGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Ci1PcHRpb25hbDxib29sPiBwYXJzZUFy
Y0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4g
cGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFs
PGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOwogCi1PcHRp
b25hbDxGbG9hdFBvaW50PiBwYXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmKTsKLU9wdGlvbmFs
PEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4gcGFyc2VQb2ludChjb25zdCBTdHJpbmdWaWV3Jik7CitzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmKTsKIAotT3B0aW9uYWw8Rmxv
YXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Ci1P
cHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZsb2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mKTsKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7CitzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNl
RmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOwogCi1PcHRpb25hbDxzdGQ6
OnBhaXI8VW5pY29kZVJhbmdlcywgSGFzaFNldDxTdHJpbmc+Pj4gcGFyc2VLZXJuaW5nVW5pY29k
ZVN0cmluZyhjb25zdCBTdHJpbmdWaWV3Jik7Ci1PcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBh
cnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1ZpZXcmKTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PFVuaWNvZGVSYW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nVmlldyYpOworc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IHBh
cnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZ1ZpZXcmKTsKIAogCiAvLyBTVkcgYWxsb3dzIHNldmVy
YWwgZGlmZmVyZW50IHdoaXRlc3BhY2UgY2hhcmFjdGVyczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJsZW5kZXIuY3BwCmluZGV4IDUxNTBjODI3ZDU0NjNjOTYyMDE3OTFhZjk0NGU3Y2VlN2FiODll
ZTguLjM0NzgxZDAzZmQ5YjJmMjUyODMzZmM2MWI1NjI0NTQ1NThjOGUzNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIEZsb2F0UG9pbnQg
U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IGZyb21Qb2ludCwKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHVzaW5nIEludm9rZVJl
c3VsdCA9IHR5cGVuYW1lIHN0ZDo6aW52b2tlX3Jlc3VsdF90PEZ1bmN0aW9uLCBTVkdQYXRoU291
cmNlPjo6dmFsdWVfdHlwZTsKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB1c2luZyBSZXN1
bHRQYWlyID0gc3RkOjpwYWlyPEludm9rZVJlc3VsdDxGdW5jdGlvbj4sIEludm9rZVJlc3VsdDxG
dW5jdGlvbj4+OwotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBPcHRpb25hbDxS
ZXN1bHRQYWlyPEZ1bmN0aW9uPj4gcHVsbEZyb21Tb3VyY2VzKFNWR1BhdGhTb3VyY2UmIGZyb21T
b3VyY2UsIFNWR1BhdGhTb3VyY2UmIHRvU291cmNlLCBGdW5jdGlvbiYmIGZ1bmN0aW9uKQordGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdFBhaXI8
RnVuY3Rpb24+PiBwdWxsRnJvbVNvdXJjZXMoU1ZHUGF0aFNvdXJjZSYgZnJvbVNvdXJjZSwgU1ZH
UGF0aFNvdXJjZSYgdG9Tb3VyY2UsIEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgSW52b2tl
UmVzdWx0PEZ1bmN0aW9uPiBmcm9tUmVzdWx0OwogICAgIGlmIChmcm9tU291cmNlLmhhc01vcmVE
YXRhKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Uu
Y3BwCmluZGV4IGRmNTY3YTYzYTlkOWFkODNhMGNjNjU0ZTNkYjljZWU2OTU4N2E4OTguLjk0NmVl
MDQ3Y2UwOTAzODVjNzM5Y2NhY2RkMzQ3ZjVhNzhlZWE0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcApAQCAtMzksNDAgKzM5LDQwIEBAIFNW
R1BhdGhTZWdUeXBlIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRo
U2VnVHlwZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdT
ZWdtZW50VHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhCeXRl
U3RyZWFtU291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKCkK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KHJlYWRTVkdTZWdtZW50
VHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZH
UGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlTW92ZVRvU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpw
YXJzZU1vdmVUb1NlZ21lbnQoKQogewogICAgIE1vdmVUb1NlZ21lbnQgc2VnbWVudDsKICAgICBz
ZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZsb2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVu
dDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudD4gU1ZHUGF0aEJ5
dGVTdHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRvU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1Bh
dGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxp
bmVUb1NlZ21lbnQoKQogewogICAgIExpbmVUb1NlZ21lbnQgc2VnbWVudDsKICAgICBzZWdtZW50
LnRhcmdldFBvaW50ID0gcmVhZEZsb2F0UG9pbnQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0K
IAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1Bh
dGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKK3N0ZDo6
b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKIHsKICAgICBM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCBzZWdtZW50OwogICAgIHNlZ21lbnQueCA9IHJlYWRGbG9h
dCgpOwogICAgIHJldHVybiBzZWdtZW50OwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpM
aW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJzZUxpbmVU
b1ZlcnRpY2FsU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1Zl
cnRpY2FsU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlTGluZVRvVmVydGlj
YWxTZWdtZW50KCkKIHsKICAgICBMaW5lVG9WZXJ0aWNhbFNlZ21lbnQgc2VnbWVudDsKICAgICBz
ZWdtZW50LnkgPSByZWFkRmxvYXQoKTsKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpwYXJz
ZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogewogICAgIEN1cnZlVG9DdWJpY1NlZ21lbnQgc2VnbWVu
dDsKICAgICBzZWdtZW50LnBvaW50MSA9IHJlYWRGbG9hdFBvaW50KCk7CkBAIC04MSw3ICs4MSw3
IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZlCiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9w
dGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhC
eXRlU3RyZWFtU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKQorc3RkOjpv
cHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRo
Qnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkKIHsKICAg
ICBDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHNlZ21lbnQ7CiAgICAgc2VnbWVudC5wb2ludDIg
PSByZWFkRmxvYXRQb2ludCgpOwpAQCAtODksNyArODksNyBAQCBPcHRpb25hbDxTVkdQYXRoU291
cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6
cGFycwogICAgIHJldHVybiBzZWdtZW50OwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3Vy
dmVUb1F1YWRyYXRpY1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OnBhcnNlQ3VydmVU
b1F1YWRyYXRpY1NlZ21lbnQoKQogewogICAgIEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50IHNlZ21l
bnQ7CiAgICAgc2VnbWVudC5wb2ludDEgPSByZWFkRmxvYXRQb2ludCgpOwpAQCAtOTcsMTQgKzk3
LDE0IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDCiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAK
LU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVu
dCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50PiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21v
b3RoU2VnbWVudCgpCiB7CiAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgc2VnbWVu
dDsKICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gcmVhZEZsb2F0UG9pbnQoKTsKICAgICByZXR1
cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZTo6cGFyc2VBcmNUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25h
bDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IFNWR1BhdGhCeXRlU3RyZWFtU291cmNlOjpw
YXJzZUFyY1RvU2VnbWVudCgpCiB7CiAgICAgQXJjVG9TZWdtZW50IHNlZ21lbnQ7CiAgICAgc2Vn
bWVudC5yeCA9IHJlYWRGbG9hdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UuaAppbmRleCAyNjRkZmYyNTU4ZTQwMzViZmQ5MWRiMDdkMThlNGM1NmRjZGJj
NmExLi5iNWU5NDMzOTlmMmRkZTNkODEzOGE3YWEwNGNiNmUwZTIxZjEzYmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuaApAQCAtMzQsMTYgKzM0LDE2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3ZlVG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUpIGZp
bmFsOwogCi0gICAgT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUo
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQo
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5lVG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQo
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5l
VG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVUb1ZlcnRpY2Fs
U2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25h
bDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSBmaW5hbDsK
LSAgICBPcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJp
Y1Ntb290aFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2Vn
bWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFs
PEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9v
dGhTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1Rv
U2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNl
U1ZHU2VnbWVudFR5cGUoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+
IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRvU2Vn
bWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5l
VG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRvVmVydGljYWxTZWdtZW50PiBwYXJzZUxpbmVUb1Zl
cnRpY2FsU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1YmljU2Vn
bWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25h
bDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21l
bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
U2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFy
Y1RvU2VnbWVudCgpIGZpbmFsOwogCiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NzAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAppbmRleCBjZTg3
YjBiNjJlNjY5Zjg3ZDMzOTQzNGM0NGYwNzQ1YjVkOWM1NzBkLi4xNmIzNTRlMjkxYzc4ZWQxYmU3
OTQ0YzM4MjMxNDAxNjU4ODUxODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaApA
QCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU1ZHUGF0aEJ5dGVTdHJl
YW0gbV9wYXRoQnl0ZVN0cmVhbTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFBhdGg+IG1fcGF0aDsK
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UGF0aD4gbV9wYXRoOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAKaW5kZXggNjY0NWM2NzNjZjY0
N2Q0ZDJjNTMwNDBiNTVjNTU2NDA3YzNkNmZiNC4uZWJmOTM3YjhkZTllNThmYWM5MWQzMTU0ODY1
MWMyMzU5MjE5Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNWR1BhdGhTZWdUeXBlIFNWR1BhdGhTZWdMaXN0U291
cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkKICAgICByZXR1cm4gcGF0aFNlZ1R5cGU7
CiB9CiAKLU9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFy
c2VTVkdTZWdtZW50VHlwZSgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBTVkdQYXRo
U2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSgpCiB7CiAgICAgbV9zZWdtZW50ID0g
bV9wYXRoU2VnTGlzdC5hdChtX2l0ZW1DdXJyZW50KTsKICAgICBTVkdQYXRoU2VnVHlwZSBwYXRo
U2VnVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdUeXBlPihtX3NlZ21lbnQtPnBhdGhTZWdU
eXBlKCkpOwpAQCAtNTYsNyArNTYsNyBAQCBPcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gU1ZHUGF0
aFNlZ0xpc3RTb3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQogICAgIHJldHVybiBwYXRoU2Vn
VHlwZTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0
aFNlZ0xpc3RTb3VyY2U6OnBhcnNlTW92ZVRvU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1Bh
dGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZU1vdmVU
b1NlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21l
bnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ01vdmVUb0FicyB8fCBtX3NlZ21lbnQtPnBhdGhT
ZWdUeXBlKCkgPT0gUGF0aFNlZ01vdmVUb1JlbCk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJz
ZU1vdmVUb1NlZ21lbnQoCiAgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKLU9wdGlvbmFsPFNWR1Bh
dGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUxpbmVU
b1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBT
VkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIHsKICAgICBBU1NFUlQo
bV9zZWdtZW50KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhT
ZWdMaW5lVG9BYnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9S
ZWwpOwpAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdt
ZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VMaW5lVG9TZWdtZW50KAogICAgIHJldHVy
biBzZWdtZW50OwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21l
bnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVu
dD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQog
ewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdU
eXBlKCkgPT0gUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnMgfHwgbV9zZWdtZW50LT5wYXRoU2Vn
VHlwZSgpID09IFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsKTsKQEAgLTg5LDcgKzg5LDcgQEAg
T3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IFNWR1BhdGhT
ZWdMaXN0U291cmNlOjpwYXJzZUxpbmUKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9u
YWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNv
dXJjZTo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJz
ZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7CiAgICAgQVNTRVJUKG1fc2VnbWVudCk7CiAgICAg
QVNTRVJUKG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnTGluZVRvVmVydGljYWxB
YnMgfHwgbV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpID09IFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJl
bCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVy
dGljYWxTZWdtZW50PiBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VMaW5lVG8KICAgICByZXR1
cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2Vn
bWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpCitz
dGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhT
ZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogewogICAgIEFTU0VSVCht
X3NlZ21lbnQpOwogICAgIEFTU0VSVChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNl
Z0N1cnZlVG9DdWJpY0FicyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1
cnZlVG9DdWJpY1JlbCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb0N1YmljU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVU
b0MKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3VydmVU
b0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9D
dWJpY1Ntb290aFNlZ21lbnQoKQogewogICAgIEFTU0VSVChtX3NlZ21lbnQpOwogICAgIEFTU0VS
VChtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFi
cyB8fCBtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkgPT0gUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aFJlbCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVU
b0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OnBhcnNlQ3UKICAgICBy
ZXR1cm4gc2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRy
YXRpY1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Nl
Z21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5wYXRo
U2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzIHx8IG1fc2VnbWVudC0+cGF0
aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbCk7CkBAIC0xMzcsNyArMTM3
LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnYKICAgICByZXR1cm4gc2VnbWVudDsKIH0KIAot
T3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNW
R1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkK
K3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21l
bnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdt
ZW50KCkKIHsKICAgICBBU1NFUlQobV9zZWdtZW50KTsKICAgICBBU1NFUlQobV9zZWdtZW50LT5w
YXRoU2VnVHlwZSgpID09IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoQWJzIHx8IG1fc2Vn
bWVudC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRy
YXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXIKICAgICByZXR1cm4g
c2VnbWVudDsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQ
YXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VBcmNUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZUFyY1Rv
U2VnbWVudCgpCiB7CiAgICAgQVNTRVJUKG1fc2VnbWVudCk7CiAgICAgQVNTRVJUKG1fc2VnbWVu
dC0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2VnQXJjQWJzIHx8IG1fc2VnbWVudC0+cGF0aFNlZ1R5
cGUoKSA9PSBQYXRoU2VnQXJjUmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
U291cmNlLmgKaW5kZXggOTA2NzUyMDczMmVhMjkyZWRjNGUxMWYyN2ZhNDgwMDkxZjgyMjY4Ny4u
MTFkZGJmZTc5OTAzNzE4ZThkNWQxYzU4N2U2NDZhMDM5ZjhkOTgzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKQEAgLTM4LDE2ICszOCwxNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlKSBmaW5hbDsKIAotICAg
IE9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8TGluZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBh
cnNlTGluZVRvVmVydGljYWxTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb0N1
YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9u
YWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdt
ZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgp
IGZpbmFsOwotICAgIE9wdGlvbmFsPEFyY1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBm
aW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRU
eXBlKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVU
b1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHBhcnNl
TGluZVRvU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21l
bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb0N1
YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRv
UXVhZHJhdGljU2VnbWVudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRy
YXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBm
aW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFyY1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQo
KSBmaW5hbDsKIAogICAgIGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBtX3BhdGhTZWdMaXN0OwogICAg
IFJlZlB0cjxTVkdQYXRoU2VnPiBtX3NlZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTb3VyY2Uu
aAppbmRleCA2MDJhNThhODhjZTczY2Q4MDlmN2VhZGE4OTU4Y2UxMmIwNzNkM2ZhLi43OTY2MDM0
YzY2YTNmNmVmYjZhYjM5NjhkNDk2Nzg5MWY3ZjYwNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U291cmNlLmgKQEAgLTM1LDUxICszNSw1MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG1v
dmVUb05leHRUb2tlbigpID0gMDsKICAgICB2aXJ0dWFsIFNWR1BhdGhTZWdUeXBlIG5leHRDb21t
YW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkgPSAwOwogCi0gICAgdmlydHVhbCBP
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUo
KSA9IDA7CiAKICAgICBzdHJ1Y3QgTW92ZVRvU2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQg
dGFyZ2V0UG9pbnQ7CiAgICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+
IHBhcnNlTW92ZVRvU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TW92
ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdtZW50KCkgPSAwOwogCiAgICAgc3RydWN0IExpbmVU
b1NlZ21lbnQgewogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxMaW5lVG9TZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2Vn
bWVudCgpID0gMDsKIAogICAgIHN0cnVjdCBMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCB7CiAgICAg
ICAgIGZsb2F0IHggPSAwOwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMaW5lVG9Ib3Jp
em9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQoKSA9IDA7CiAKICAgICBzdHJ1Y3QgTGluZVRvVmVydGljYWxTZWdt
ZW50IHsKICAgICAgICAgZmxvYXQgeSA9IDA7CiAgICAgfTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VM
aW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1YmljU2Vn
bWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQxOwogICAgICAgICBGbG9hdFBvaW50IHBv
aW50MjsKICAgICAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKICAgICB9OwotICAgIHZpcnR1
YWwgT3B0aW9uYWw8Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50
KCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBw
YXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQyOwogICAgICAgICBGbG9h
dFBvaW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRv
Q3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSA9IDA7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBh
cnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpID0gMDsKIAogICAgIHN0cnVjdCBDdXJ2ZVRv
UXVhZHJhdGljU2VnbWVudCB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQxOwogICAgICAgICBG
bG9hdFBvaW50IHRhcmdldFBvaW50OwogICAgIH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2
ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpID0gMDsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSA9IDA7CiAKICAgICBzdHJ1Y3QgQ3VydmVUb1F1YWRy
YXRpY1Ntb290aFNlZ21lbnQgewogICAgICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwogICAg
IH07Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4g
cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1
YWRyYXRpY1Ntb290aFNlZ21lbnQoKSA9IDA7CiAKICAgICBzdHJ1Y3QgQXJjVG9TZWdtZW50IHsK
ICAgICAgICAgZmxvYXQgcnggPSAwOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGJvb2wgc3dlZXAgPSBmYWxzZTsKICAgICAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKICAg
ICB9OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVu
dCgpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8QXJjVG9TZWdtZW50PiBwYXJzZUFy
Y1RvU2VnbWVudCgpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcAppbmRleCA5YmJlOTMzOWQ2MmE1ZjIz
MmJjZmEwODlmOGY2NzMwMWJhNGUyZTg0Li5mZjFiZjJhOTE2MDU4M2Q5ZjNmNDQ1MmY0Y2M2YTE2
ZWEyZjZjMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1Nv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZHUGF0aFN0cmluZ1NvdXJjZTo6bW92ZVRvTmV4dFRv
a2VuKCkKICAgICByZXR1cm4gc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKG1fYnVmZmVyMTYpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1Bh
dGhTZWdUeXBlPiBuZXh0Q29tbWFuZEhlbHBlcihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+JiBidWZmZXIsIFNWR1BhdGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2Vn
VHlwZT4gbmV4dENvbW1hbmRIZWxwZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyLCBTVkdQYXRoU2VnVHlwZSBwcmV2aW91c0NvbW1hbmQpCiB7CiAgICAgLy8gQ2hl
Y2sgZm9yIHJlbWFpbmluZyBjb29yZGluYXRlcyBpbiB0aGUgY3VycmVudCBjb21tYW5kLgogICAg
IGlmICgoKmJ1ZmZlciA9PSAnKycgfHwgKmJ1ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAnLicg
fHwgaXNBU0NJSURpZ2l0KCpidWZmZXIpKQpAQCAtODYsNyArODYsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBGPiBkZWNsdHlwZShhdXRvKSBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZShGJiYgZnVu
Y3RvcikKICAgICByZXR1cm4gZnVuY3RvcihtX2J1ZmZlcjE2KTsKIH0KIAotT3B0aW9uYWw8U1ZH
UGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQor
c3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VT
VkdTZWdtZW50VHlwZSgpCiB7CiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4g
U1ZHUGF0aFNlZ1R5cGUgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0x
MzcsOSArMTM3LDkgQEAgT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IFNWR1BhdGhTdHJpbmdTb3Vy
Y2U6OnBhcnNlU1ZHU2VnbWVudFR5cGUoKQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRo
U291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1Nl
Z21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJz
ZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHsKKyAgICByZXR1
cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+
IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwog
ICAgICAgICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTE1MCw5ICsxNTAsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdt
ZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogICAgIH0pOwog
fQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5n
U291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNl
OjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1NlZ21lbnQo
KQogewotICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPExpbmVU
b1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9w
dGlvbmFsPExpbmVUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNl
RmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE2Myw5ICsxNjMsOSBAQCBPcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVU
b1NlZ21lbnQoKQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9I
b3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVG9Ib3Jpem9u
dGFsU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250
YWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdt
ZW50KCkKIHsKLSAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudD4geworICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZm
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHsKICAgICAgICAg
YXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCF4KQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE3Niw5ICsxNzYsOSBAQCBPcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6
cGFyc2VMaW5lVAogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVmVydGljYWxT
ZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdt
ZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpCiB7
Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvVmVy
dGljYWxTZWdtZW50PiB7CisgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB5ID0gcGFy
c2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTE4OSw5ICsxODksOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpM
aW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVgog
ICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50
PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQorc3RkOjpv
cHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5n
U291cmNlOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogewotICAgIHJldHVybiBwYXJzZShb
XShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKKyAgICBy
ZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9DdWJp
Y1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byBwb2ludDEgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVy
KTsKICAgICAgICAgaWYgKCFwb2ludDEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMjEyLDkgKzIxMiw5IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJp
Y1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb0N1CiAgICAgfSk7CiB9
CiAKLU9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNW
R1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpCitzdGQ6
Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpCiB7Ci0gICAg
cmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVUb0N1YmljU21v
b3RoU2VnbWVudD4geworICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gewogICAgICAgICBhdXRvIHBvaW50
MiA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50MikKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMzAsOSArMjMwLDkgQEAgT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1Nv
dXJjZTo6cGFyc2VDdXIKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb1F1YWRyYXRpY1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoKQorc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVh
ZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9u
YWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHsKKyAgICByZXR1cm4gcGFyc2UoW10oYXV0byYg
YnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiB7CiAgICAg
ICAgIGF1dG8gcG9pbnQxID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
cG9pbnQxKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI0OCw5ICsyNDgs
OSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gU1ZH
UGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZQogICAgIH0pOwogfQogCi1PcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1Nv
dXJjZTo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpCitzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKIHsKLSAgICBy
ZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxDdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoU2VnbWVudD4geworICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0
byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRh
cmdldFBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2MSw5ICsy
NjEsOSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2Vn
bWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFycwogICAgIH0pOwogfQogCi1PcHRpb25hbDxT
VkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQXJj
VG9TZWdtZW50KCkKK3N0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBT
VkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBh
cnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8QXJjVG9TZWdtZW50PiB7CisgICAgcmV0
dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxBcmNUb1NlZ21lbnQ+
IHsKICAgICAgICAgYXV0byByeCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
cngpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nU291cmNlLmgKaW5kZXggZjg4YjFhM2MzM2IyYzA4ZGJlNjU3NzBiZDY3Nzgy
MWU2MzUyN2JjYS4uZDFmMzhmMTQ1ODYxMzQzZTRkZmFlZDQ0ZDMxMDk3MDM5Nzg4ZDM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCkBAIC0zNSwxNiArMzUsMTYg
QEAgcHJpdmF0ZToKICAgICBib29sIG1vdmVUb05leHRUb2tlbigpIGZpbmFsOwogICAgIFNWR1Bh
dGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkgZmlu
YWw7CiAKLSAgICBPcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgp
IGZpbmFsOwotICAgIE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgp
IGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgp
IGZpbmFsOwotICAgIE9wdGlvbmFsPExpbmVUb0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVU
b0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8TGluZVRvVmVydGljYWxT
ZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFs
PEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsOwot
ICAgIE9wdGlvbmFsPEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudCgpIGZpbmFsOwotICAgIE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdt
ZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkgZmluYWw7Ci0gICAgT3B0aW9uYWw8
Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290
aFNlZ21lbnQoKSBmaW5hbDsKLSAgICBPcHRpb25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJjVG9T
ZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VT
VkdTZWdtZW50VHlwZSgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TW92ZVRvU2VnbWVudD4g
cGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9TZWdt
ZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmVU
b0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVy
dGljYWxTZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxDdXJ2ZVRvQ3ViaWNTZWdt
ZW50PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBh
cnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEN1
cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxBcmNUb1NlZ21lbnQ+IHBhcnNlQXJj
VG9TZWdtZW50KCkgZmluYWw7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gZGVj
bHR5cGUoYXV0bykgcGFyc2UoRnVuY3Rpb24mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaAppbmRleCA3NmM4ODgzOTc2NzYxM2UzOTFl
OGRmNDE1ZDY0YWJkYmI2ODQ5YzAxLi41MTQwZjY5ZGY4Mjc2YjVlNzQzNmIyOGZkNTRjODMxN2My
OTlhYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZS5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTw+IHN0cnVjdCBT
VkdQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHsKICAgICBzdGF0
aWMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSgpOyB9CiAgICAgc3RhdGljIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUoc3RyaW5nKTsgfQotICAgIHN0YXRpYyBPcHRpb25h
bDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZh
bHVlKCk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdHlwZSkgeyBy
ZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBlNWI4ZmVkZDAyZjM0ZWYxOWJkN2Nl
YzZiYTc4MmU4MDk3NjM5NzA0Li4xOGMzM2I3Y2M5YzNmZmIyN2E0ZGNmMWYwYWZjZDlkMjgwYmQ3
YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
CkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQzMl90IGNhbGN1bGF0ZUNo
ZWNrc3VtKHNpemVfdCBzdGFydGluZ09mZnNldCwgc2l6ZV90IGVuZGluZ09mZnNldCkgY29uc3Q7
CiAKLSAgICB2b2lkIHByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhP
ck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCosIGZsb2F0IGRlZmF1
bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29uc3Qg
U3RyaW5nJiBjb2RlcG9pbnRzLCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7Cisg
ICAgdm9pZCBwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNz
aW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1lbnQqLCBmbG9hdCBkZWZhdWx0SG9y
aXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmlu
ZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCk7CiAK
ICAgICB0eXBlZGVmIHZvaWQgKFNWR1RvT1RGRm9udENvbnZlcnRlcjo6KkZvbnRBcHBlbmRpbmdG
dW5jdGlvbikoKTsKICAgICB2b2lkIGFwcGVuZFRhYmxlKGNvbnN0IGNoYXIgaWRlbnRpZmllcls0
XSwgRm9udEFwcGVuZGluZ0Z1bmN0aW9uKTsKQEAgLTIyNCwxMyArMjI0LDEzIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGFwcGVuZFZhbGlkQ0ZGU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAg
VmVjdG9yPGNoYXI+IHRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0Vs
ZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBi
b3VuZGluZ0JveCkgY29uc3Q7CisgICAgVmVjdG9yPGNoYXI+IHRyYW5zY29kZUdseXBoUGF0aHMo
ZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50
LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KSBjb25zdDsKIAogICAgIHZv
aWQgYWRkQ29kZXBvaW50UmFuZ2VzKGNvbnN0IFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PEdseXBo
PiYgZ2x5cGhTZXQpIGNvbnN0OwogICAgIHZvaWQgYWRkQ29kZXBvaW50cyhjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGNvZGVwb2ludHMsIEhhc2hTZXQ8R2x5cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAg
ICAgdm9pZCBhZGRHbHlwaE5hbWVzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgZ2x5cGhOYW1lcywg
SGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBjb25zdDsKICAgICB2b2lkIGFkZEtlcm5pbmdQYWly
KFZlY3RvcjxLZXJuaW5nRGF0YT4mLCBTVkdLZXJuaW5nUGFpciYmKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzaXplX3QgYXBwZW5kS0VSTlN1YnRhYmxlKE9wdGlvbmFsPFNWR0tl
cm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVy
YWdlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzaXplX3QgYXBwZW5kS0VSTlN1YnRhYmxl
KHN0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IChUOjoqYnVpbGRLZXJuaW5nUGFpcikoKSBj
b25zdCwgdWludDE2X3QgY292ZXJhZ2UpOwogICAgIHNpemVfdCBmaW5pc2hBcHBlbmRpbmdLRVJO
U3VidGFibGUoVmVjdG9yPEtlcm5pbmdEYXRhPiwgdWludDE2X3QgY292ZXJhZ2UpOwogCiAgICAg
dm9pZCBhcHBlbmRMaWdhdHVyZVN1YnRhYmxlKHNpemVfdCBzdWJ0YWJsZVJlY29yZExvY2F0aW9u
KTsKQEAgLTEwNTMsNyArMTA1Myw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphZGRL
ZXJuaW5nUGFpcihWZWN0b3I8S2VybmluZ0RhdGE+JiBkYXRhLCBTVkdLZXJuaW5nCiAgICAgfQog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgc2l6ZV90IFNWR1RvT1RGRm9udENvbnZl
cnRlcjo6YXBwZW5kS0VSTlN1YnRhYmxlKE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1
aWxkS2VybmluZ1BhaXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVyYWdlKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5T
dWJ0YWJsZShzdGQ6Om9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiAoVDo6KmJ1aWxkS2VybmluZ1Bh
aXIpKCkgY29uc3QsIHVpbnQxNl90IGNvdmVyYWdlKQogewogICAgIFZlY3RvcjxLZXJuaW5nRGF0
YT4ga2VybmluZ0RhdGE7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8
VD4obV9mb250RWxlbWVudCkpIHsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9jZmZEYXRhLmFwcGVuZChyTW92ZVRvKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGJvdW5kaW5nQm94KCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
Ym91bmRpbmdCb3goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYm91bmRpbmdCb3g7
CiAgICAgfQpAQCAtMTIyNywxMSArMTIyNywxMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxjaGFy
PiYgbV9jZmZEYXRhOwogICAgIEZsb2F0UG9pbnQgbV9zdGFydGluZ1BvaW50OwogICAgIEZsb2F0
UG9pbnQgbV9jdXJyZW50OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9ib3VuZGluZ0JveDsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9ib3VuZGluZ0JveDsKICAgICBmbG9hdCBt
X3VuaXRzUGVyRW1TY2FsYXI7CiB9OwogCi1WZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVy
dGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25zdCBTVkdFbGVtZW50JiBn
bHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgT3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdC
b3gpIGNvbnN0CitWZWN0b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVH
bHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0ds
eXBoRWxlbWVudCwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3QK
IHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBWZWN0
b3I8Y2hhcj4gU1ZHVG9PVEZGb250Q29udmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0
IHdpZHRoLCBjb25zdCBTVkdFbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1ZHVG9P
VEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGds
eXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1lbnQqIGdseXBoRWxl
bWVudCwgZmxvYXQgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBmbG9hdCBkZWZhdWx0VmVydGlj
YWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNvZGVwb2ludHMsIE9wdGlvbmFsPEZsb2F0UmVjdD4m
IGJvdW5kaW5nQm94KQordm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0
IFNWR0dseXBoRWxlbWVudCogZ2x5cGhFbGVtZW50LCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFk
dmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBv
aW50cywgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkKIHsKICAgICBib29s
IG9rOwogICAgIGZsb2F0IGhvcml6b250YWxBZHZhbmNlID0gc2NhbGVVbml0c1BlckVtKGdseXBo
T3JNaXNzaW5nR2x5cGhFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6Omhvcml6X2Fkdl94QXR0cikudG9GbG9hdCgmb2spKTsKQEAgLTEyNzksNyArMTI3OSw3
IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nCiAgICAgICAgIHZlcnRpY2FsQWR2YW5jZSA9IGRl
ZmF1bHRWZXJ0aWNhbEFkdmFuY2U7CiAgICAgbV9hZHZhbmNlSGVpZ2h0TWF4ID0gc3RkOjptYXgo
bV9hZHZhbmNlSGVpZ2h0TWF4LCB2ZXJ0aWNhbEFkdmFuY2UpOwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbHlwaEJvdW5kaW5nQm94OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBn
bHlwaEJvdW5kaW5nQm94OwogICAgIGF1dG8gcGF0aCA9IHRyYW5zY29kZUdseXBoUGF0aHMoaG9y
aXpvbnRhbEFkdmFuY2UsIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBnbHlwaEJvdW5kaW5n
Qm94KTsKICAgICBpZiAoIXBhdGguc2l6ZSgpKSB7CiAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRv
IHVzZSBhIGZhbGxiYWNrIGZvbnQgcmF0aGVyIHRoYW4gdXNlIGEgZm9udCB3aXRob3V0IGFsbCBp
dHMgZ2x5cGhzLgpAQCAtMTQwMiw3ICsxNDAyLDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQog
CiAgICAgcG9wdWxhdGVFbXB0eUdseXBoQ2hhclN0cmluZyhtX2VtcHR5R2x5cGhDaGFyU3RyaW5n
LCBzX291dHB1dFVuaXRzUGVyRW0pOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGlu
Z0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3g7CiAgICAgaWYg
KG1fbWlzc2luZ0dseXBoRWxlbWVudCkKICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9t
aXNzaW5nR2x5cGhFbGVtZW50LCBudWxscHRyLCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRl
ZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIFN0cmluZygpLCBib3VuZGluZ0JveCk7CiAgICAgZWxzZSB7
CkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBib29sIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29udmVy
dFNWR1RvT1RGRm9udCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFZlY3Rvcjxj
aGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNW
R0ZvbnRFbGVtZW50JiBlbGVtZW50KQogewogICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252
ZXJ0ZXIoZWxlbWVudCk7CiAgICAgaWYgKGNvbnZlcnRlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKaW5kZXggMzhiOTFkZDM1NmVmMTNmYTY1
MDkxZTg0MWRiNWVhODA3Mzk2MjkzOS4uODc1MTkxMzRiNzI2ODYzZDA5Y2QxM2NjMjg3YWJjMzg1
NTJhNGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5o
CkBAIC0zMSw2ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVs
ZW1lbnQ7CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25z
dCBTVkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRT
VkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCmluZGV4IDg5Y2JkNzk2
MzNiNzYwYjEwN2MwMDRhNGYyYTVjMjBjNmM0Mjg3ZjYuLjUxMzJiYmVkNzVkMTFlZTBhZDU5ZmM1
MGU3ZThiMWRlZWM3M2NmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1hYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIGludCBwYXJzZVRyYW5zZm9ybVBhcmFtTGlzdChTdHJpbmdQYXJzaW4KIHN0YXRpYyBjb25z
dGV4cHIgaW50IHJlcXVpcmVkVmFsdWVzRm9yVHlwZVtdID0gIHsgMCwgNiwgMSwgMSwgMSwgMSwg
MSB9Owogc3RhdGljIGNvbnN0ZXhwciBpbnQgb3B0aW9uYWxWYWx1ZXNGb3JUeXBlW10gPSAgeyAw
LCAwLCAxLCAxLCAyLCAwLCAwIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZUdl
bmVyaWMoU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU+IHBhcnNl
VHJhbnNmb3JtVmFsdWVHZW5lcmljKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBl
IHR5cGUsIFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAg
ICBpZiAodHlwZSA9PSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZh
bHVlPiBwYXJzZVRyYW5zZm8KICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCi1PcHRpb25hbDxT
VkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVm
ZmVyPExDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZH
VHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVZhbHVlR2VuZXJpYyh0eXBlLCBidWZmZXIpOwog
fQogCi1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VU
cmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBT
dHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxTVkdUcmFu
c2Zvcm1WYWx1ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFu
c2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBTdHJpbmdQYXJzaW5nQnVmZmVyPFVD
aGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVZhbHVlR2VuZXJpYyh0
eXBlLCBidWZmZXIpOwogfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSB0cmFuc2xhdGVEZXNj
W10KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hh
cmFjdGVyVHlwZSByb3RhdGVEZXNjW10gPSAgeydyJywgJ28nLCAndCcsICdhJywgJ3QnLCAnZSd9
OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFy
YWN0ZXJUeXBlIG1hdHJpeERlc2NbXSA9ICB7J20nLCAnYScsICd0JywgJ3InLCAnaScsICd4J307
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdU
cmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJp
YyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQ
YXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5h
dEVuZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTg4LDE5ICsxODgsMTkg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm0KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
Ci1PcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNm
b3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRp
b25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiBy
ZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgewogICAgICAg
ICByZXR1cm4gcGFyc2VUcmFuc2Zvcm1UeXBlKGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKLU9wdGlv
bmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBTVkdUcmFuc2Zvcm1hYmxl
OjpwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1Ry
YW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFy
PiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKGJ1ZmZl
cik7CiB9CiAKLU9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBT
VkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxV
Q2hhcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5z
Zm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJz
aW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVR5
cGVHZW5lcmljKGJ1ZmZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaApp
bmRleCBiNWIzYWFkOWEzMWU1NTRmMGY0NWQ0M2RjMmJhMGVlYTg1MDk2NTFkLi5iMDVkN2QzMzAz
NTEwNDQ3MmZjOWI0OTRjZjkzMWE4NTQzM2Q0OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1hYmxlLmgKQEAgLTMxLDEyICszMSwxMiBAQCBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDog
cHVibGljIFNWR0xvY2F0YWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3Jt
YWJsZSgpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlPiBwYXJzZVRy
YW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBTdHJpbmdQ
YXJzaW5nQnVmZmVyPExDaGFyPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1W
YWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
VHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1W
YWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwgU3RyaW5nUGFyc2luZ0J1
ZmZlcjxVQ2hhcj4mKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6
U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VU
cmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+Jik7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9y
bVR5cGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1U
eXBlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR1RyYW5zZm9ybVZh
bHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8VUNoYXI+Jik7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VU
cmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyB9CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0g
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5jcHAKaW5kZXggZGQxYjg5MjBjZDZmMGMwYjg1NmM4ZjJiNDYzNGJhZGE4Y2Jh
YTA3ZC4uYjQzZTFmMzk0NTUyMTcwMzMxNDNhMDE3OTg3YjA0MDM3OTBiOWI2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNWR1ZL
ZXJuRWxlbWVudD4gU1ZHVktlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdWS2VybkVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZL
ZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U1ZHS2VybmluZ1BhaXI+IFNWR1ZLZXJuRWxlbWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQ
YWlyKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQ2FuIHRoaXMgYmUgc2hhcmVkIHdpdGggU1ZH
SEtlcm5FbGVtZW50OjpidWlsZFZlcnRpY2FsS2VybmluZ1BhaXI/CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWS2VybkVsZW1lbnQuaAppbmRleCA0NjIyN2RkNjQxMmJkMGQ3ZTYwMWUwNTc1ZjBmOTI4ZGFm
ZDVjNzE5Li40NTExMGJhMGMyZWM3ZGQ0NGFiYzJmMDJmOTg0OGZhZWFlNTBiMzhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIFNWR1ZL
ZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFNWR1ZLZXJuRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgT3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IGJ1aWxkVmVydGljYWxLZXJu
aW5nUGFpcigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IGJ1aWxk
VmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR1ZLZXJuRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkda
b29tQW5kUGFuLmNwcAppbmRleCBkMjdmOGU1MjJkNzQ2MWU2ZGY5MTc4MGM1Yzk3OTdkMDg5MWEx
MjI1Li5lMTBlNjg4Mzc4YTg1ZjQzYzRmZWFjZDNkNTdlNmIwZDJmMDEwOThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIg
Q2hhcmFjdGVyVHlwZSBkaXNhYmxlW10gPSB7ICdkJywgJ2knLCAncycsICdhJywgJ2InLCAnbCcs
ICdlJyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhw
ciBDaGFyYWN0ZXJUeXBlIG1hZ25pZnlbXSA9IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdm
JywgJ3knIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Va
b29tQW5kUGFuR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIpCiB7CiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShidWZmZXIsIGRpc2FibGU8Q2hh
cmFjdGVyVHlwZT4pKQogICAgICAgICByZXR1cm4gU1ZHWm9vbUFuZFBhbkRpc2FibGU7CkBAIC00
MSwxMiArNDEsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBwYXJzZVpvb21BbmQKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1PcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gU1ZHWm9vbUFuZFBhbjo6
cGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQ
YW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFy
c2Vab29tQW5kUGFuR2VuZXJpYyhidWZmZXIpOwogfQogCi1PcHRpb25hbDxTVkdab29tQW5kUGFu
VHlwZT4gU1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8
VUNoYXI+JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBTVkdab29t
QW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZl
cikKIHsKICAgICByZXR1cm4gcGFyc2Vab29tQW5kUGFuR2VuZXJpYyhidWZmZXIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKaW5kZXggMzI2ODMyMTE4NTE0YWU5YjcyM2NiYzc0NmZm
YTA5MWU4MGQ5Y2UzYi4uYTEyYjQ2YzI3ZjZiM2FmNTI5Mzc4NWFjMjUzNmNiMTliNDE0YzBkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBTVkdab29tQW5kUGFuKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxMQ2hhcj4mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+
IHBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBwYXJzZVpvb21BbmRQYW4oU3RyaW5n
UGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdab29t
QW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+Jik7
CiAKIHByaXZhdGU6CiAgICAgU1ZHWm9vbUFuZFBhblR5cGUgbV96b29tQW5kUGFuIHsgU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHWm9vbUFuZFBhblR5cGU+Ojppbml0aWFsVmFsdWUoKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCmluZGV4IDkwZDUyODY4YWNjMzIxNzcyNTk4NGViYWY0ZDFjNDY2NGMw
ZWE1MTIuLjVlZGYxYjU1OTk0YjJiMzVhNWRiNzYzMDExNmVkZDA0MDYwZGQyZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIE1hbmFn
aW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3duZXIuCiAgICAgdm9pZCBzZXREaXJ0eSgp
IG92ZXJyaWRlIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgYm9v
bCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0
eVN0YXRlOjpEaXJ0eTsgfQotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVy
cmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKaW5k
ZXggZWUxMWU2ZThiNjMxNGNkYjA4OWI4YjMyZGI2OWUwMzU5NWFlMGM0ZS4uZDMxY2RlMzY3NGYw
OWM2MjlmOWFiY2UxYzA2OTkwNTAxMWQyMTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaApA
QCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hp
cCB3aXRoIHRoZSBvd25lci4KICAgICB2b2lkIHNldERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VW
YWwtPnNldERpcnR5KCk7IH0KICAgICBib29sIGlzRGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsgfQotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hy
b25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KIAogICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxl
bWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgogICAgIGNvbnN0IFByb3BlcnR5VHlwZSYgY3VycmVu
dFZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHkuaAppbmRleCBkMDFjYTRmYmRkODY0ZmIxNDE5NDE4OTcyMTMxY2I4
YzNlMTFkZDM3Li43MWRkNDJhOWVjN2E0NDIzOWJhZjBmOGI4MTc0YTM3MTBjODVjNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBDb250cm9sIHRoZSBzeW5jaHJv
bml6YXRpb24gYmV0d2VlbiB0aGUgYXR0cmlidXRlIGFuZCBpdHMgcmVmbGVjdGlvbiBpbiBiYXNl
VmFsLgogICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0
cmluZz4gc3luY2hyb25pemUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIAogICAgIC8vIENvbnRyb2wgdGhlIGFuaW1hdGlvbiBsaWZlIGN5Y2xlLgogICAg
IGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdG9ycy5jb21wdXRlU2l6
ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDNlZDllZjAwN2M4MTZkNjYwY2Q1YWIx
MDE2YWIyMTI3MTMzN2VmODAuLmNiMDcwZDBiNTI0YzIzZTE5YTEzMzRhM2I2ZjAzYzNhMjFiZGUx
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGluc3RhbmNlLT5pbnN0YW5jZVN0b3BBbmltYXRpb24oKnRoaXMpOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92
ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRv
KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24uY2FsY3Vs
YXRlRGlzdGFuY2UodGFyZ2V0RWxlbWVudCwgZnJvbSwgdG8pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5o
CmluZGV4IDgyNGFiNDk2N2FhNmIxN2ZhOWQ4NjNkZWUwZmJkZjZlYThmYjU2MTUuLmY1NDY2MDhl
NWU2NmU0YjUwYjBjODg3MDMzMmMzOGY4MjdlMjhmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRo
IHRoZSBvd25lci4KICAgICB2b2lkIHNldERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNl
dERpcnR5KCk7IH0KICAgICBib29sIGlzRGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2Jhc2VWYWwtPmlzRGlydHkoKTsgfQotICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUo
KSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VW
YWwtPnN5bmNocm9uaXplKCk7IH0KIAogICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMg
YW5kIER1bXBSZW5kZXJUcmVlLgogICAgIGNvbnN0IExpc3RUeXBlJiBjdXJyZW50VmFsdWUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmgKaW5kZXggOTM0YWMxZDNk
YTJhOTZkNWQ2ODk3ZTVjOTQ3NDk2NGVkOGM3ODc4MC4uYzczMGQ3ZTg5YjUzMDQ2MzE3NTc0YjEz
YWIyYWQ0YzExMzYyN2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5o
CkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFuaW1hdGVkUHJvcGVydHkuc2V0
RGlydHkoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0
IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAgewog
ICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAg
ICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3duZXIpLT5pc0RpcnR5KCk7CkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vz
c29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmds
ZXRvbjxTVkdBbmltYXRlZEludGVnZXJQYWlyQWNjZXNzb3IsIHByb3BlcnR5MSwgcHJvcGVydHky
PigpOyB9CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25z
dCBPd25lclR5cGUmIG93bmVyKSBjb25zdCBmaW5hbAorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmIG93bmVyKSBjb25zdCBmaW5hbAogICAgIHsK
ICAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9wZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAg
ICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHkyKG93bmVyKS0+aXNEaXJ0eSgpOwpAQCAtMTMwLDcg
KzEzMCw3IEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFj
Y2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNp
bmdsZXRvbjxTVkdBbmltYXRlZE51bWJlclBhaXJBY2Nlc3NvciwgcHJvcGVydHkxLCBwcm9wZXJ0
eTI+KCk7IH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNv
bnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKICAg
ICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3duZXIpLT5pc0RpcnR5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFZhbHVlUHJvcGVy
dHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9w
ZXJ0eS5oCmluZGV4IDg4MWM0ZDBhNTEwZGI0NWRlODg0MGExMzQ3NzYwZTJkMmI5NjdiMDUuLjMy
MjA1N2RlMDQ0MDZmZjdlZTVmOTUwMjgxYjE5NmUyZDBlYmJkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5o
CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAvLyBNYW5hZ2luZyB0aGUgcmVsYXRpb25z
aGlwIHdpdGggdGhlIG93bmVyLgogICAgIHZvaWQgc2V0RGlydHkoKSBvdmVycmlkZSB7IG1fYmFz
ZVZhbC0+c2V0RGlydHkoKTsgfQogICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYmFzZVZhbC0+aXNEaXJ0eSgpOyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5j
aHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fYmFzZVZhbC0+c3luY2hyb25pemUoKTsgfQogCiAgICAgLy8gVXNlZCBieSBSZW5kZXJTVkdF
bGVtZW50cyBhbmQgRHVtcFJlbmRlclRyZWUuCiAgICAgY29uc3QgVmFsdWVUeXBlJiBjdXJyZW50
VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaAppbmRleCAyZWMy
M2QzNzQ1MTEzZDEwMWVkODJjOGE4YWEwOGYxZjIwNzIzNWJkLi44NTgxOGI4MzdjMWFlYzhmZmU0
NjkxZjM0MTViY2ZiYTEyN2FjMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24u
aApAQCAtMzksNyArMzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBWYWx1ZVR5cGUgbV9mcm9tOwog
ICAgIFZhbHVlVHlwZSBtX3RvOwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZE
dXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV90b0F0RW5kT2ZEdXJhdGlv
bjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAK
aW5kZXggNTQ4YjkzOWYxOGE2YzczZjdjYjFhYmM3Y2Y3ZDU4M2I3MmJlOTBkMC4uMDAyYTI4MTY2
NzNkYjMwMzQwOTdhMmYyY2M5ZTUxYzYwNjM2MjA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQ29sb3IgU1ZHQW5pbWF0
aW9uQ29sb3JGdW5jdGlvbjo6Y29sb3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQsIGNvbnMKICAgICByZXR1cm4geyB9OwogfQogCi1PcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0
aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdAorc3RkOjpvcHRpb25hbDxmbG9h
dD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdAogewogICAg
IHJldHVybiBzdGQ6OmFicyhwYXJzZUludGVnZXI8aW50Pih0bykudmFsdWVfb3IoMCkgLSBwYXJz
ZUludGVnZXI8aW50Pihmcm9tKS52YWx1ZV9vcigwKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25J
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXggOTY5Nzk5YmIwMGI1ZmRkOTk2NTE4NGJmYjdlMmY2
NzI0MDQwMTUyMC4uMDM3ZDcyMjgyZTA0NjExMWNkZTBlNDQyYWUwNGZjNWUzMWVmN2NkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtOTQsNyArOTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGFuaW1hdGVkID0gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8
U1JHQkE8dWludDhfdD4+KHN0ZDo6bHJvdW5kKHJlZCksIHN0ZDo6bHJvdW5kKGdyZWVuKSwgc3Rk
Ojpscm91bmQoYmx1ZSksIHN0ZDo6bHJvdW5kKGFscGhhKSk7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwg
Y29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIENvbG9yIGZy
b21Db2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihmcm9tLnN0cmlwV2hpdGVTcGFjZSgpKTsK
ICAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgpKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgYW5pbWF0ZWQgPSBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihCYXNlOjph
bmltYXRlKHByb2dyZXNzLCByZXBlYXRDb3VudCwgbV9mcm9tLCBtX3RvLCB0b0F0RW5kT2ZEdXJh
dGlvbigpLCBhbmltYXRlZCkpKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3Vs
YXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNW
R0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KikgZmluYWwK
QEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFuaW1hdGVkID0geyBsZW5ndGhD
b250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwgbV9sZW5ndGhNb2RlIH07CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUK
KyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
dGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGF1dG8gZnJvbUxlbmd0aCA9IFNWR0xlbmd0aFZhbHVl
KG1fbGVuZ3RoTW9kZSwgZnJvbSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAg
ICBhbmltYXRlZCA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCBt
X3RvLCB0b0F0RW5kT2ZEdXJhdGlvbigpLCBhbmltYXRlZCk7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwg
Y29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBz
dGQ6OmFicyhwYXJzZU51bWJlcih0bykudmFsdWVfb3IoMCkgLSBwYXJzZU51bWJlcihmcm9tKS52
YWx1ZV9vcigwKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgKaW5kZXggOTAwNThhNTJhNmNmMGMxOTdjM2ZiZWMz
OGM5NTcxNzc5ZGVkZDBmOS4uZTNjMjgxOTlmZTg0YTI3YmNjMzkwZTJjNzNhOGRlYzEwNGIxNzRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRp
b25GdW5jdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9BdEVuZE9mRHVy
YXRpb25WYWx1ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZs
b2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5p
bWF0aW9uRnVuY3Rpb24oQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKQogICAgICAgICA6IG1f
YW5pbWF0aW9uTW9kZShhbmltYXRpb25Nb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggZDliMjAzNjAyYzZmOWY1
NTk3NTgwZWU0Y2ZlOWQ0ZTBjNTA5YjQ4MS4uZTY5ZTE4YzEwMDJjMGIwNmM2M2I0NTQ3Y2ZjNGM1
ZWY4N2QxNTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGZs
b2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKIHByb3RlY3RlZDoKICAgICBib29s
IGlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IoY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNj
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29y
LmgKaW5kZXggMzNhZjViZWY5MjMwYTZmZTU0OWY3YjE3OTVhMDJiYzVmODUzY2UwZC4uMTYzN2Y3
ZTI0MDJiYTQwZWVlYjA0MzMxZGFkMDFjYzI2Nzk0YzBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhjb25zdCBPd25lclR5cGUmLCBjb25z
dCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERpcnR5KGNvbnN0IE93
bmVyVHlwZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpIGNvbnN0IHsg
YW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxTdHJp
bmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNv
bnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmly
dHVhbCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlw
ZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBBbmltYXRpb25Nb2RlLCBDYWxjTW9kZSwgYm9vbCwg
Ym9vbCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRB
bmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJikgY29uc3Qg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQb2ludGVy
TWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50
ZXJNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IDhlMmY3NmRjYWI0ZTkwZmIzOGViMzM5NjllYTY1YzA3
MDIyNDUzODcuLjM3NjA3NTBkMmQ3NGIyNDMyZGNiMDE5YWE5NzdhZWUwMjBlMTIzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1iZXJBY2Nl
c3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BvaW50ZXJNZW1i
ZXJBY2Nlc3Nvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcHJvcGVydHko
b3duZXIpLT5kZXRhY2goKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9u
aXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYgb3duZXIpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gcHJvcGVydHkob3duZXIpLT5zeW5jaHJvbml6
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5o
CmluZGV4IGNlM2MyYjI3MWQ5YTIzMGI0ZWQwMGMwOWVmMWU3MThlNTk5NTYwN2MuLjZlY2JkODQ1
MDVhODU4MTJhYTFmMjJjMTUzYjc2YjFmNGQ5YTdlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
Ly8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaGVy
ZS4KICAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNWR1Byb3Bl
cnR5U3RhdGU6OkRpcnR5OyB9CiAgICAgdm9pZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNWR1By
b3BlcnR5U3RhdGU6OkRpcnR5OyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgp
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAg
IGlmIChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QW5pbWF0b3IuaAppbmRleCBkOGU4ZWMxNzYzYzkyMDI5YTE5Njg5YmU1N2U2
NTFlYjhhYjUwZTgyLi5kYjliN2VmNjNmOWRmZDExNzgwMGEyNTFmN2M1OTM5MzM1MTVlNzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1h
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmlt
YXRvci5oCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmVtb3ZlQW5pbWF0
ZWRTdHlsZVByb3BlcnR5KHRhcmdldEVsZW1lbnQpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZs
b2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBT
dHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24uY2FsY3VsYXRlRGlzdGFuY2UodGFyZ2V0
RWxlbWVudCwgZnJvbSwgdG8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKaW5kZXggZDQyY2IxNTVj
MDVhNTc4NzQzZGM2M2MxMmE5MmNmYTcwNDFjNDI4Yy4uMzg4YmZkMGIwYWU1NmMyYTNmN2UzYTk4
MWYxYjYyZGE3MzVjYzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKQEAgLTIyMyw5ICsyMjMsOSBAQCBw
dWJsaWM6CiAKICAgICAvLyBGaW5kcyB0aGUgcHJvcGVydHkgd2hvc2UgbmFtZSBpcyBhdHRyaWJ1
dGVOYW1lIGFuZCByZXR1cm5zIHRoZSBzeW5jaHJvbml6ZQogICAgIC8vIHN0cmluZyB0aHJvdWdo
IHRoZSBhc3NvY2lhdGVkIFNWR01lbWJlckFjY2Vzc29yLgotICAgIE9wdGlvbmFsPFN0cmluZz4g
c3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3Zl
cnJpZGUKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWx1
ZTsKICAgICAgICAgZW51bWVyYXRlUmVjdXJzaXZlbHkoWyZdKGNvbnN0IGF1dG8mIGVudHJ5KSAt
PiBib29sIHsKICAgICAgICAgICAgIGlmICghZW50cnkua2V5Lm1hdGNoZXMoYXR0cmlidXRlTmFt
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKaW5kZXggZmVhOTNjZmZmN2Iy
ZTEzZjE4NDBjM2ZlY2VkZDc2YTEwZDBkMWU4OS4uNzNmMmU4YWYyNTYyYzdiODI3NWE5ZGY2OWRk
YzBkZjQyOTI3ODI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5UmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBRdWFsaWZpZWROYW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0
eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0
eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRQcm9wZXJ0RGlydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwg
U3RyaW5nPiBzeW5jaHJvbml6ZUFsbEF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlUcmFpdHMuaAppbmRleCA2MzMwYzNjNDRhMDJhYTg1NTRkMWYyNzZlNTk3MTY1MmRmNmI2
Y2NiLi4xMTA0ZDkzYTcxM2I5ZDUwYjMxYWM3ZDQyZmI5NTY1NjI0ZjVhOWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTM4
LDcgKzM4LDcgQEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+IHsK
ICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0
YXRpYyBib29sIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmlu
ZyA9PSAidHJ1ZSI7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gcGFyc2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBpbml0aWFsVmFsdWUoKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBhcnNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGJvb2wgdHlwZSkgeyByZXR1cm4gdHlwZSA/ICJ0cnVlIiA6ICJmYWxzZSI7IH0KIH07CiAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9y
PiB7CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIENvbG9yKCk7IH0K
ICAgICBzdGF0aWMgQ29sb3IgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1
cm4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7IH0KLSAg
ICBzdGF0aWMgT3B0aW9uYWw8Q29sb3I+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2Uo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAg
ICAgQ29sb3IgY29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RyaW5nLnN0cmlwV2hpdGVT
cGFjZSgpKTsKICAgICAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCkBAIC01OSw3ICs1OSw3IEBA
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxDb2xvcj4gewogdGVtcGxhdGU8Pgogc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPHVuc2lnbmVkPiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxW
YWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcodW5zaWduZWQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlw
ZSk7IH0KIH07CiAKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPGludD4gewogICAgIHN0YXRpYyBpbnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4g
MDsgfQogICAgIHN0YXRpYyBpbnQgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8aW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5n
JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgp
OyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhpbnQgdHlwZSkgeyByZXR1cm4gU3RyaW5n
OjpudW1iZXIodHlwZSk7IH0KIH07CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPHN0ZDo6cGFpcjxpbnQsIGludD4+IHsKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6cm91
bmQocmVzdWx0LT5maXJzdCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6cm91bmQocmVzdWx0LT5z
ZWNvbmQpKSk7CiAgICAgfQotICAgIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8aW50LCBpbnQ+
PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPGludCwgaW50Pj4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUo
KTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoc3RkOjpwYWlyPGludCwgaW50PikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIH07CiAKQEAgLTky
LDcgKzkyLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGZsb2F0PiB7CiAgICAgewogICAg
ICAgICByZXR1cm4gcGFyc2VOdW1iZXIoc3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICB9Ci0gICAg
c3RhdGljIE9wdGlvbmFsPGZsb2F0PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHBhcnNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAg
IHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcpOwogICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHsKICAgICB7
CiAgICAgICAgIHJldHVybiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVf
b3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4geyB9KTsKICAgICB9Ci0gICAgc3RhdGljIE9wdGlv
bmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1
ZSgpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+
IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogfTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBT
VkdQcm9wZXJ0eVRyYWl0czxGbG9hdFBvaW50PiB7CiAgICAgewogICAgICAgICByZXR1cm4gcGFy
c2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKICAgICB9Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewog
ICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpOwogICAgIH0KQEAgLTEzNCw3ICsxMzQs
NyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0PiB7CiAgICAgewogICAgICAg
ICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZykudmFsdWVfb3IoRmxvYXRSZWN0IHsgfSk7CiAgICAg
fQotICAgIHN0YXRpYyBPcHRpb25hbDxGbG9hdFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZVJlY3Qoc3RyaW5nKTsKICAgICB9CkBAIC0xNDgs
NyArMTQ4LDcgQEAgdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFN0cmluZz4g
ewogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0
dXJuIHN0cmluZzsgfQotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHBhcnNlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gc3RyaW5nOyB9Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQogICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZzsgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJWaWV3SW5pdC5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJWaWV3SW5pdC5oCmluZGV4IDY0YTYzNGM0
MzBiNGFhNjEzOTM0Y2Y1YmMwYzkxOGJhN2M3M2QyMTcuLjE0OWNlZWQ5MzFlMTM3NmZhMGEzOGEz
NzAzYTBjNjFjOTk2ZDRiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFr
ZVhSVmlld0luaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0
LmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IEZha2VYUlZpZXdJbml0IHsKICAgICBWZWN0b3I8
ZmxvYXQ+IHByb2plY3Rpb25NYXRyaXg7CiAgICAgRGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9u
OwogICAgIEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCB2aWV3T2Zmc2V0OwotICAgIE9wdGlvbmFs
PEZpZWxkT2ZWaWV3SW5pdD4gZmllbGRPZlZpZXc7CisgICAgc3RkOjpvcHRpb25hbDxGaWVsZE9m
Vmlld0luaXQ+IGZpZWxkT2ZWaWV3OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwYTNlMjBjZGYxYjgxYTc4NjhiOWU3
NGQ0MDE0ZjcxMjE5YTJjM2UuLmY1NjJiMWVlM2E3ZmU5NGMwMGFkNGY4YmQyMjQ5ODRjZGJmOGI2
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEzNzgsNyArMTM3OCw3
IEBAIGJvb2wgSW50ZXJuYWxzOjphcmVUaW1lcnNUaHJvdHRsZWQoKSBjb25zdAogICAgIHJldHVy
biBjb250ZXh0RG9jdW1lbnQoKS0+aXNUaW1lclRocm90dGxpbmdFbmFibGVkKCk7CiB9CiAKLXZv
aWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFs
PEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB2YWx1ZSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFdmVu
dFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3I+IHZhbHVlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCkBAIC0xMzk5
LDcgKzEzOTksNyBAQCB2b2lkIEludGVybmFsczo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JP
dmVycmlkZShPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdgogICAgIH0KIH0KIAotT3B0aW9u
YWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRo
cm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50ZXJuYWxz
OjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhh
dmlvck92ZXJyaWRlKCkgY29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQpAQCAt
MTkxOCw3ICsxOTE4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3SXNU
cmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICBP
cHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+
IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAodHJhbnNwYXJlbnQpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICBkb2N1bWVudC0+
dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKQEAg
LTM1ODYsNyArMzU4Niw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OnJlbmRl
cmluZ1VwZGF0ZUNvdW50KCkKICAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5n
VXBkYXRlQ291bnQoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRDb21w
b3NpdGluZ1BvbGljeU92ZXJyaWRlKE9wdGlvbmFsPENvbXBvc2l0aW5nUG9saWN5PiBwb2xpY3lP
dmVycmlkZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Q29tcG9zaXRpbmdQb2xp
Y3lPdmVycmlkZShzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW5nUG9saWN5PiBwb2xpY3lPdmVycmlk
ZSkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQpAQCAtMzYwOSw3ICszNjA5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpzZXRDb21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKE9wdGlvbmFsPENvbXBvc2l0aW5n
UG8KICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25PcjxPcHRpb25hbDxJbnRlcm5hbHM6
OkNvbXBvc2l0aW5nUG9saWN5Pj4gSW50ZXJuYWxzOjpjb21wb3NpdGluZ1BvbGljeU92ZXJyaWRl
KCkgY29uc3QKK0V4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8SW50ZXJuYWxzOjpDb21wb3NpdGlu
Z1BvbGljeT4+IEludGVybmFsczo6Y29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZSgpIGNvbnN0CiB7
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCkKQEAgLTQ5NzIsNyArNDk3Miw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc01lZGlhRWxl
bWVudEhpZGRlbihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYSkKIH0KICNlbmRpZgogCi1F
eGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoT3B0aW9uYWw8Ym9vbD4gaXNQbGF5aW5nKQorRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxz
OjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNQ
bGF5aW5nKQogewogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoaXNQ
bGF5aW5nKTsKQEAgLTUwNTgsNyArNTA1OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpwb3N0VGFzayhS
ZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8VGFza1NvdXJjZT4gdGFza1NvdXJjZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB0YXNr
U291cmNlTmFtZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFRhc2tTb3VyY2U+IHRhc2tTb3VyY2VG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFza1NvdXJjZU5hbWUpCiB7CiAgICAgaWYgKHRhc2tT
b3VyY2VOYW1lID09ICJET01NYW5pcHVsYXRpb24iKQogICAgICAgICByZXR1cm4gVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uOwpAQCAtNTc0OCwxMiArNTc0OCwxMiBAQCBib29sIEludGVybmFs
czo6Y2Fwc0xvY2tJc09uKCkKICAgICByZXR1cm4gV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpOwogfQogCi1hdXRvIEludGVybmFsczo6cGFyc2VI
RVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBPcHRpb25hbDxIRVZDUGFy
YW1ldGVyU2V0PgorYXV0byBJbnRlcm5hbHM6OnBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJp
bmdWaWV3IHN0cmluZykgLT4gc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0PgogewogICAg
IHJldHVybiBXZWJDb3JlOjpwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoc3RyaW5nKTsKIH0KIAot
YXV0byBJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmlu
ZykgLT4gT3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4KK2F1dG8gSW50ZXJuYWxzOjpwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBzdHJpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8RG9W
aVBhcmFtZXRlclNldD4KIHsKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gV2ViQ29yZTo6cGFyc2VE
b1ZpQ29kZWNQYXJhbWV0ZXJzKHN0cmluZyk7CiAgICAgaWYgKCFwYXJzZVJlc3VsdCkKQEAgLTU3
NzgsNyArNTc3OCw3IEBAIGF1dG8gSW50ZXJuYWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMo
U3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlvbmFsPERvVmlQYXJhCiAgICAgcmV0dXJuIGNvbnZl
cnRlZFJlc3VsdDsKIH0KIAotT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IElu
dGVybmFsczo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6
b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IEludGVybmFsczo6cGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
cGFyc2VWUENvZGVjUGFyYW1ldGVycyhzdHJpbmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggNGY4ODE2NmIyODUzZjBlMzFlNDBjYjQyZGI0Mjg3Yzk0ZGU0MzQ0Yy4uMWRi
NjRiZjViMjk0M2U2Yjg2YTJlYWNmY2M2MmUxZTBhMTE4ODI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0yMzMsOCArMjMzLDggQEAgcHVibGljOgogICAgIGJvb2wgYXJlVGlt
ZXJzVGhyb3R0bGVkKCkgY29uc3Q7CiAKICAgICBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
IHsgUmVzcG9uc2l2ZSwgVW5yZXNwb25zaXZlIH07Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxp
bmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPik7Ci0g
ICAgT3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yT3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
T3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4pOworICAgIHN0
ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yT3ZlcnJpZGUoKSBjb25zdDsKIAogICAgIC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5n
LgogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRh
dGVDb3VudCgpIGNvbnN0OwpAQCAtNTc2LDggKzU3Niw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gcmVuZGVyaW5nVXBkYXRlQ291bnQoKTsKIAogICAgIGVudW0gQ29tcG9z
aXRpbmdQb2xpY3kgeyBOb3JtYWwsIENvbnNlcnZhdGl2ZSB9OwotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xp
Y3k+KTsKLSAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxDb21wb3NpdGluZ1BvbGljeT4+IGNvbXBv
c2l0aW5nUG9saWN5T3ZlcnJpZGUoKSBjb25zdDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRD
b21wb3NpdGluZ1BvbGljeU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Q29tcG9zaXRpbmdQb2xpY3k+
KTsKKyAgICBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW5nUG9saWN5Pj4gY29t
cG9zaXRpbmdQb2xpY3lPdmVycmlkZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVMYXlvdXRB
bmRTdHlsZUZvckFsbEZyYW1lcygpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhOb2RlKik7CkBA
IC02NjAsNyArNjYwLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE92ZXJy
aWRlUHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShIVE1MTWVkaWFFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJik7CiAjZW5kaWYKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldElzUGxheWluZ1RvQmx1
ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAKICAg
ICBib29sIGlzU2VsZWN0UG9wdXBWaXNpYmxlKEhUTUxTZWxlY3RFbGVtZW50Jik7CiAKQEAgLTk3
NywxNyArOTc3LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGNhcHNMb2NrSXNPbigpOwogICAgICAg
ICAKICAgICB1c2luZyBIRVZDUGFyYW1ldGVyU2V0ID0gV2ViQ29yZTo6SEVWQ1BhcmFtZXRlcnM7
Ci0gICAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJz
KFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gcGFyc2VI
RVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwogCiAgICAgc3RydWN0IERvVmlQYXJhbWV0
ZXJTZXQgewogICAgICAgICBTdHJpbmcgY29kZWNOYW1lOwogICAgICAgICB1aW50MTZfdCBiaXRz
dHJlYW1Qcm9maWxlSUQ7CiAgICAgICAgIHVpbnQxNl90IGJpdHN0cmVhbUxldmVsSUQ7CiAgICAg
fTsKLSAgICBPcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7CisgICAgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJz
ZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CiAKICAgICB1c2luZyBWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZCA9IFdlYkNvcmU6OlZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkOwot
ICAgIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJh
bWV0ZXJzKFN0cmluZ1ZpZXcpOworICAgIHN0ZDo6b3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7CiAKICAgICBzdHJ1
Y3QgQ29va2llRGF0YSB7CiAgICAgICAgIFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCAzZWIxMWYwMGI0OTRkZjAyNzU5YjJiZTBhNjIx
Nzc5YjNhMTJkMTE0Li45OTJlNGMxM2E3ZWU4ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2VlMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjI0LDcgKzIy
NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHko
KTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RN
OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2Vzc2lvbklkLCAidmFsaWQtbG9h
ZGVkLXNlc3Npb24iKSkKICAgICAgICAgcmV0dXJuIHNlc3Npb25JZDsKQEAgLTMzOCw3ICszMzgs
NyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5czsKKyAgICBzdGQ6Om9wdGlv
bmFsPEtleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXM7CiAgICAgaWYgKHJlc3BvbnNlVmVjdG9y
LmNvbnRhaW5zKFN0cmluZygia2V5cy1jaGFuZ2VkIl9zKSkpIHsKICAgICAgICAgY29uc3QgYXV0
byoga2V5cyA9IGZhY3RvcnktPmtleXNGb3JTZXNzaW9uV2l0aElEKHNlc3Npb25JRCk7CiAgICAg
ICAgIGlmIChrZXlzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5k
ZXggMzcwYjZlMjgwZDkxZGJhNjc5YWI0MGM1YzY0NjRjY2JjMzkwMjZjMS4uZjVjZGE1MDVjZjJh
MzNjMTA1ZjAyNWM5N2M5MzUwYTk2ODY5OGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxN
b2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MDE0ZDBiZThm
NjRmMWNlY2UzMTY4NGU3ZjQ5NDZlODg5N2Q5NDY0Li4wOGY0NWU2ZTcyZmM0YmI4ZDkxZDQxYTc0
NmU5NTNjODFmYWQ5YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE1vY2tNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmCiB7CiB9CiAKLU9wdGlvbmFsPEV4Y2VwdGlvbj4gTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpyZXN1bHQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+
IE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAo
bV9mYWlsQ29tbWFuZHMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwpAQCAtNTksNyArNTksNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IE1vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cmVzdWx0KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi12b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCit2b2lkIE1v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2NvbnRleHQt
PnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhyZXN1bHQoKSk7CkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpsZWF2ZSgp
CiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91Ymxl
IHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBj
YWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91Ymxl
IHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgdGltZSk7CiAgICAgbV9jb250ZXh0LT5wb3N0VGFzayhbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKQEAgLTc4
LDcgKzc4LDcgQEAgdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3Vi
bGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHQKICAgICB9KTsKIH0KIAotdm9pZCBN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewpA
QCAtODYsNyArODYsNyBAQCB2b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbgogICAgIH0pOwogfQogCi12
b2lkIE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9jb250ZXh0LT5wb3N0VGFzayhbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW8KICAgICB9KTsK
IH0KIAotdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBj
YWxsYmFjaykKK3ZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIpOwogICAgIG1fY29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CkBAIC0xMDIs
NyArMTAyLDcgQEAgdm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICB9KTsKIH0KIAotdm9pZCBN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9w
dGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKQordm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFQb3Np
dGlvblN0YXRlPiYpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
KTsKICAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXItPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0
LmdldCgpLCAicG9zaXRpb25TdGF0ZUNoYW5nZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvci5oCmluZGV4IGQzYjg2MzBiYjQ4
MDYyN2RjYzQ2NzEwNjNiY2VmN2NlMTAxOWRjZmEuLmIyYzAwOWI4OGEwMDc2NmFkNzFhNThkNGQ4
MzkyOTczYzVjODAyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaApAQCAtNDksMTUgKzQ5LDE1IEBAIHByaXZhdGU6CiAK
ICAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNb2NrIENvb3Jk
aW5hdG9yIjsgfQogCi0gICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lk
IGxlYXZlKCkgZmluYWw7CiAKLSAgICB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7
Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1
c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYp
IGZpbmFsOworICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9p
ZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+
JikgZmluYWw7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlv
bmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgcGxheWJhY2tTdGF0
ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB0cmFj
a0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uPiByZXN1bHQoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gcmVzdWx0KCkgY29uc3Q7CiAKICAgICBS
ZWY8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogICAgIFJlZlB0cjxTdHJpbmdD
YWxsYmFjaz4gbV9zdGF0ZUNoYW5nZUxpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOGQ3M2IxY2E4NWFlNTY0OTU1
ZTg0YTg2OWJlOGZkZjNhNGFjOWRiZS4uMTVkMzk2ZTc2Njk3OTQ5NmQzN2ExYjFhYWU5OTU5NzRl
NzgzMDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuY3BwCkBAIC02NCw3ICs2NCw3IEBAIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6Ok1v
Y2tQYXltZW50Q29vcmRpbmF0b3IoUGFnZSYgcGFnZSkKICAgICBtX2F2YWlsYWJsZVBheW1lbnRO
ZXR3b3Jrcy5hZGQoInZpc2EiKTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBNb2NrUGF5bWVudENv
b3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmIHBheW1lbnRO
ZXR3b3JrKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnZh
bGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYgcGF5bWVudE5ldHdvcmspCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5maW5kKHBheW1lbnRO
ZXR3b3JrKTsKICAgICBpZiAocmVzdWx0ID09IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLmVu
ZCgpKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2VzCiAgICAgfSk7
CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHNoaXBw
aW5nTWV0aG9kVXBkYXRlKQordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mJiBzaGlwcGluZ01ldGhvZFVwZGF0ZSkKIHsKICAgICBpZiAoIXNoaXBwaW5nTWV0
aG9kVXBkYXRlKQogICAgICAgICByZXR1cm47CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIFZl
Y3RvcjxNb2NrUGF5bWVudEVycm9yPiBjb252ZXJ0KFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJv
cj4+JiYgZXJyb3JzKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTW9ja1BheW1lbnRD
b29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8QXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYgc2hpcHBpbmdDb250YWN0VXBkYXRlKQordm9p
ZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHNoaXBwaW5n
Q29udGFjdFVwZGF0ZSkKIHsKICAgICBpZiAoIXNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRv
cjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTCiAj
ZW5kaWYKIH0KIAotdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRN
ZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHBh
eW1lbnRNZXRob2RVcGRhdGUpCit2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhv
ZFVwZGF0ZT4mJiBwYXltZW50TWV0aG9kVXBkYXRlKQogewogICAgIGlmICghcGF5bWVudE1ldGhv
ZFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTW9ja1Bh
eW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFs
PEFwcGxlUGF5UGF5CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUp
CiAKLXZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9k
ZUNoYW5nZShPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmIHBheW1l
bnRNZXRob2RNb2RlVXBkYXRlKQordm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0
ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0
aG9kTW9kZVVwZGF0ZT4mJiBwYXltZW50TWV0aG9kTW9kZVVwZGF0ZSkKIHsKICAgICBpZiAoIXBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlKQogICAgICAgICByZXR1cm47CkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjYW5jZWxQYXltZW50KCkKICAgICB9KTsK
IH0KIAotdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9u
KE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmIHJlc3VsdCkKK3ZvaWQgTW9j
a1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFs
PFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmIHJlc3VsdCkKIHsKICAgICBhdXRvIGlzRmlu
YWxTdGF0ZSA9IGlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpOwogICAgIG1fZXJyb3JzID0gY29u
dmVydChXVEZNb3ZlKHJlc3VsdC0+ZXJyb3JzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDJkZTUxMzI4YTc2MDY3OWZhM2I2MmQ4
ZThkNWY2OWM4ZTI2YmUwNGEuLmFmOWRhZTRlNWUxMWE4MTM2ZWZkMzY0NDQzNmNmNWRmY2IwNmJm
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5oCkBAIC04MSwxOSArODEsMTkgQEAgcHVibGljOgogICAgIHZvaWQgZGVyZWYoKSBjb25zdCB7
IH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3
b3JrKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxp
ZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIGNhbk1h
a2VQYXltZW50cygpIGZpbmFsOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwog
ICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNv
bnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgZmluYWw7CiAgICAgdm9pZCBjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgZmlu
YWw7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPEFw
cGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RV
cGRhdGU+JiYpIGZpbmFsOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgZmluYWw7CisgICAgdm9p
ZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlT
aGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgZmluYWw7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBk
YXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgZmluYWw7CiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29tcGxldGVQ
YXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFu
Z2Uoc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBmaW5h
bDsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAg
dm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpv
cHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgZmluYWw7CiAgICAgdm9pZCBh
Ym9ydFBheW1lbnRTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lv
bigpIGZpbmFsOwogICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRFcnJvci5oCmluZGV4IDViYzFjYTEx
OTYzMTNiMzgwODQxYjQ1ZGQ3M2M1MDQzMmYwNjJiNTUuLjZhNWI3MmY0MmI5Yjg0NThkZWE0ZWYy
MWM5ZWY1OGQwYmQyYjZmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRF
cnJvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNb2Nr
UGF5bWVudEVycm9yIHsKICAgICBBcHBsZVBheUVycm9yQ29kZSBjb2RlOwogICAgIFN0cmluZyBt
ZXNzYWdlOwotICAgIE9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRhY3RG
aWVsZDsKKyAgICBzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ+IGNvbnRh
Y3RGaWVsZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKaW5kZXggMGM1MjVhZmZmM2M0NzA4ZGEzNTA4ZDBiYWYxY2NjODE0YzkyNTJlZS4uNTA1NTFm
OTY0MGRjNmQ4NTFiYTY3MzNjNjgzOWVkYzQzNzYxNzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24gewogICAgICAgICBTdHJpbmcgcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OwogCiAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExvY2Fs
Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPiBkZWNvZGUo
RGVjb2RlciYpOwogICAgIH07CiAKICAgICBzdHJ1Y3QgSGlkQ29uZmlndXJhdGlvbiB7CkBAIC05
NCw3ICs5NCw3IEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsK
ICAgICAgICAgYm9vbCBzdXBwb3J0Q2xpZW50UGluIHsgZmFsc2UgfTsKIAogICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxIaWRDb25maWd1cmF0aW9u
PiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIaWRDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogICAg
IH07CiAKICAgICBzdHJ1Y3QgTmZjQ29uZmlndXJhdGlvbiB7CkBAIC0xMDQsMTYgKzEwNCwxNiBA
QCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIGJv
b2wgbXVsdGlwbGVQaHlzaWNhbFRhZ3MgeyBmYWxzZSB9OwogCiAgICAgICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAog
ICAgIGJvb2wgc2lsZW50RmFpbHVyZSB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8TG9jYWxDb25m
aWd1cmF0aW9uPiBsb2NhbDsKLSAgICBPcHRpb25hbDxIaWRDb25maWd1cmF0aW9uPiBoaWQ7Ci0g
ICAgT3B0aW9uYWw8TmZjQ29uZmlndXJhdGlvbj4gbmZjOworICAgIHN0ZDo6b3B0aW9uYWw8TG9j
YWxDb25maWd1cmF0aW9uPiBsb2NhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhpZENvbmZpZ3VyYXRp
b24+IGhpZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+IG5mYzsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTEyMyw0MSArMTIzLDQxIEBAIHZvaWQgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jCiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29u
ZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25m
aWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24gcmVzdWx0OwogCi0gICAg
T3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvbj4gdXNlclZlcmlmaWNhdGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFVzZXJWZXJpZmljYXRpb24+IHVzZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2RlciA+
PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlmICghdXNlclZlcmlmaWNhdGlvbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9ICp1c2Vy
VmVyaWZpY2F0aW9uOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gYWNjZXB0QXR0ZXN0YXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBhY2NlcHRBdHRlc3RhdGlvbjsKICAgICBkZWNvZGVyID4+
IGFjY2VwdEF0dGVzdGF0aW9uOwogICAgIGlmICghYWNjZXB0QXR0ZXN0YXRpb24pCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmFjY2VwdEF0dGVzdGF0aW9uID0gKmFj
Y2VwdEF0dGVzdGF0aW9uOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwcml2YXRlS2V5QmFzZTY0OwogICAgIGRlY29k
ZXIgPj4gcHJpdmF0ZUtleUJhc2U2NDsKICAgICBpZiAoIXByaXZhdGVLZXlCYXNlNjQpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnByaXZhdGVLZXlCYXNlNjQgPSBX
VEZNb3ZlKCpwcml2YXRlS2V5QmFzZTY0KTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckNl
cnRpZmljYXRlQmFzZTY0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2VyQ2VydGlmaWNh
dGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYg
KCF1c2VyQ2VydGlmaWNhdGVCYXNlNjQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKnVzZXJDZXJ0aWZpY2F0
ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFz
ZTY0OwogICAgIGlmICghaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0
ZUJhc2U2NCA9IFdURk1vdmUoKmludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpOwogCi0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBkZWNv
ZGVyID4+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBpZiAoIXByZWZlcnJlZENy
ZWRlbnRpYWxJZEJhc2U2NCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE3Myw3
ICsxNzMsNyBAQCB2b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENv
bmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgotT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlk
Q29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29u
ZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb24+IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZENvbmZpZ3VyYXRpb246OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnBheWxvYWRCYXNlNjQpKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
TmZjQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZj
Q29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29uZmlndXJhdGlvbiByZXN1bHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQpAQCAtMjI5LDI5ICsyMjksMjkgQEAg
dm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uIHJlc3VsdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNpbGVu
dEZhaWx1cmU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaWxlbnRGYWlsdXJlOwogICAgIGRl
Y29kZXIgPj4gc2lsZW50RmFpbHVyZTsKICAgICBpZiAoIXNpbGVudEZhaWx1cmUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNpbGVudEZhaWx1cmUgPSAqc2lsZW50
RmFpbHVyZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPExvY2FsQ29uZmlndXJhdGlvbj4+IGxv
Y2FsOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxMb2NhbENvbmZpZ3VyYXRpb24+
PiBsb2NhbDsKICAgICBkZWNvZGVyID4+IGxvY2FsOwogICAgIGlmICghbG9jYWwpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmxvY2FsID0gV1RGTW92ZSgqbG9jYWwp
OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKICAgICBk
ZWNvZGVyID4+IGhpZDsKICAgICBpZiAoIWhpZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQuaGlkID0gV1RGTW92ZSgqaGlkKTsKIAotICAgIE9wdGlvbmFsPE9wdGlv
bmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7CiAgICAgZGVjb2RlciA+PiBuZmM7CiAgICAgaWYg
KCFuZmMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggYTBhMzljZmI1YzY0ZDU2NGY2ZDE3NmU5Zjkz
NGRkZjU5N2U1MDZlOC4uMDRmNDBlOTZjZDhhZGU4NDhiMDBlMGY5Y2VkMDZiZjFkNzk1YmI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtNzMsNyAr
NzMsNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShj
b25zdCBWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JgogICAgICAgICBtX2ZyYW1lRGF0YS5zdGFn
ZVBhcmFtZXRlcnMuYm91bmRzLmFwcGVuZCh7IHN0YXRpY19jYXN0PGZsb2F0Pihwb2ludC54KSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50LnopIH0pOwogfQogCi12b2lkIFNpbXVsYXRlZFhSRGV2
aWNlOjpzZXRWaWV3ZXJPcmlnaW4oY29uc3QgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYgb3Jp
Z2luKQordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2V0Vmlld2VyT3JpZ2luKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYgb3JpZ2luKQogewogICAgIGlmIChvcmlnaW4pIHsK
ICAgICAgICAgbV9mcmFtZURhdGEub3JpZ2luID0gKm9yaWdpbjsKQEAgLTE2Myw3ICsxNjMsNyBA
QCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICAgICAgbV9mcmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJG
cmFtZVRpbWUpOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxh
dGVkWFJEZXZpY2U6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMy
X3QgaGVpZ2h0LCBib29sIGFscGhhKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhh
bmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQogewogICAgIHVzaW5nIEdMID0gR3Jh
cGhpY3NDb250ZXh0R0w7CiAgICAgaWYgKCFtX2dsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSRGV2aWNlLmgKaW5kZXggZjU5N2IzZDkxOTJjN2Y2MjcyMTU3ODM2NTYzM2EyNzY0MDYw
Y2U3ZS4uYzA4NmQ5Y2ZkYzczN2IxZDJjMTk0NWIxMWE2ZTYwY2Y4YTVjOTRmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBYUkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQogICAgIGNvbnN0IFBv
c2UmIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgY29uc3Qgc3RkOjph
cnJheTxmbG9hdCwgMTY+JiBwcm9qZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9u
OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8Rm92PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVy
biBtX2Zvdjt9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxGb3Y+JiBmaWVsZE9mVmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fZm92O30KIAogICAgIHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJWaWV3
SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJlc29s
dXRpb247IH0KICAgICB2b2lkIHNldE9mZnNldChQb3NlJiYgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0g
V1RGTW92ZShvZmZzZXQpOyB9CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgRmFrZVhS
Vmlld0luaXQ6OkRldmljZVJlc29sdXRpb24gbV9yZXNvbHV0aW9uOwogICAgIFBvc2UgbV9vZmZz
ZXQ7CiAgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IG1fcHJvamVjdGlvbjsKLSAgICBPcHRpb25h
bDxGb3Y+IG1fZm92OworICAgIHN0ZDo6b3B0aW9uYWw8Rm92PiBtX2ZvdjsKIH07CiAKIGNsYXNz
IFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CkBA
IC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2
b2lkIHNldFZpZXdzKFZlY3RvcjxGcmFtZURhdGE6OlZpZXc+JiYpOwogICAgIHZvaWQgc2V0TmF0
aXZlQm91bmRzR2VvbWV0cnkoY29uc3QgVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYpOwotICAg
IHZvaWQgc2V0Vmlld2VyT3JpZ2luKGNvbnN0IE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mKTsK
LSAgICB2b2lkIHNldEZsb29yT3JpZ2luKE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mJiBvcmln
aW4pIHsgbV9mcmFtZURhdGEuZmxvb3JUcmFuc2Zvcm0gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAg
ICB2b2lkIHNldFZpZXdlck9yaWdpbihjb25zdCBzdGQ6Om9wdGlvbmFsPEZyYW1lRGF0YTo6UG9z
ZT4mKTsKKyAgICB2b2lkIHNldEZsb29yT3JpZ2luKHN0ZDo6b3B0aW9uYWw8RnJhbWVEYXRhOjpQ
b3NlPiYmIG9yaWdpbikgeyBtX2ZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSA9IFdURk1vdmUob3Jp
Z2luKTsgfQogICAgIHZvaWQgc2V0RW11bGF0ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7IG1f
ZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCA9IGVtdWxhdGVkOyB9CiAgICAgdm9pZCBzZXRT
dXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNh
dGlvbikgeyBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3du
Tm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KICAgICBWZWN0b3I8
UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1v
ZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVh
dGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBh
bHBoYSkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4g
Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGJv
b2wgYWxwaGEpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJI
YW5kbGUpIGZpbmFsOwogCiAgICAgdm9pZCBzdG9wVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IDUzOTU5ZTU1YTk4
MmMyYmRlMTg2ZmIyODhmMTVmYTkwMWMyZDU5MTQuLmU1OWRjMDIxZGNlYTM5N2MzMWM2MzQ1YTVm
ODYyMzNlMTM5ZDNhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNjQsOCArNjQsOCBAQCBwcml2YXRlOgogICAgIFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9ybVhSOjpJbnB1dFNvdXJjZUhhbmRsZSwgY29uc3Qg
RmFrZVhSSW5wdXRTb3VyY2VJbml0Jik7CiAKICAgICBzdHJ1Y3QgQnV0dG9uT3JQbGFjZWhvbGRl
ciB7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8ZmxvYXQ+PiBh
eGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUJ1dHRvbj4gYnV0dG9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxmbG9hdD4+IGF4ZXM7CiAgICAgfTsKICAgICBCdXR0b25PclBsYWNlaG9sZGVyIGdldEJ1dHRv
bk9yUGxhY2Vob2xkZXIoRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlKSBjb25zdDsKIApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIFhSVGFyZ2V0UmF5TW9kZSBtX3RhcmdldFJheU1v
ZGUgeyBYUlRhcmdldFJheU1vZGU6OkdhemUgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2Zp
bGVzOwogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2Ug
bV9wb2ludGVyT3JpZ2luOwotICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3JpcE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3JpcE9yaWdp
bjsKICAgICBIYXNoTWFwPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZSwgRmFrZVhSQnV0dG9u
U3RhdGVJbml0LCBXVEY6OkludEhhc2g8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RG
OjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1
dHRvbnM7CiAgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpbWFy
eVNlbGVjdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViWFJUZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5oCmluZGV4IDhl
OTU3NWJjNGU5OWQyYjYzMDI3NzQ2YjNiZjRkNjcyNmM5Mzc1ZWYuLjc5ODRkMjE2ODdmM2Q3NGY2
NGUwMDEzZGE0Yjg2NTU0MmRjYmRhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViWFJUZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaApA
QCAtNDMsMTUgKzQzLDE1IEBAIGNsYXNzIFdlYlhSVGVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlhSVGVzdD4gewogcHVibGljOgogICAgIHN0cnVjdCBGYWtlWFJEZXZpY2VJbml0IHsK
ICAgICAgICAgYm9vbCBzdXBwb3J0c0ltbWVyc2l2ZSB7IGZhbHNlIH07Ci0gICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxYUlNlc3Npb25Nb2RlPj4gc3VwcG9ydGVkTW9kZXM7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFhSU2Vzc2lvbk1vZGU+PiBzdXBwb3J0ZWRNb2RlczsKICAgICAgICAg
VmVjdG9yPEZha2VYUlZpZXdJbml0PiB2aWV3czsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8
SlNDOjpKU1ZhbHVlPj4gc3VwcG9ydGVkRmVhdHVyZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEpTQzo6SlNWYWx1ZT4+IHN1cHBvcnRlZEZlYXR1cmVzOwogCi0gICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IGJvdW5kc0Nvb3JkaW5hdGVzOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IGJvdW5kc0Nvb3JkaW5h
dGVzOwogCi0gICAgICAgIE9wdGlvbmFsPEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gZmxvb3JP
cmlnaW47Ci0gICAgICAgIE9wdGlvbmFsPEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4gdmlld2Vy
T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdD4g
Zmxvb3JPcmlnaW47CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFrZVhSUmlnaWRUcmFuc2Zvcm1J
bml0PiB2aWV3ZXJPcmlnaW47CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2ViWFJUZXN0PiBj
cmVhdGUoV2Vha1B0cjxXZWJYUlN5c3RlbT4mJiBzeXN0ZW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJUZXN0KFdURk1vdmUoc3lzdGVtKSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0g
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlv
bk92ZXJsYXkubW0KaW5kZXggOGJiMTAxZTFjZTk4ZGE3YzA0MWM1MmExNWE4ZWYxNDVmOTExNjA2
NS4uMTZjMzQ4NjNkY2MzZDUxYjE1ZGQ3ZjkzNDBlZTI3YTYwY2ZiNDc5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25P
dmVybGF5Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3Vh
bElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQpAQCAtNTMsNyArNTMsNyBAQCBAaW1wbGVtZW50YXRp
b24gV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSB7CiAKICsgKEJPT0wpc2hvdWxk
SWRlbnRpZnlXZWJWaWV3cwogewotICAgIHN0YXRpYyBPcHRpb25hbDxCT09MPiBzaG91bGRJZGVu
dGlmeVdlYlZpZXdzOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJPT0w+IHNob3VsZElkZW50
aWZ5V2ViVmlld3M7CiAgICAgaWYgKCFzaG91bGRJZGVudGlmeVdlYlZpZXdzKQogICAgICAgICBz
aG91bGRJZGVudGlmeVdlYlZpZXdzID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gYm9vbEZvcktleTpAIldlYktpdERlYnVnSWRlbnRpZnlXZWJWaWV3cyJdOwogICAgIHJl
dHVybiAqc2hvdWxkSWRlbnRpZnlXZWJWaWV3czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4
IDUzOTU2OGY1OTEzYjRiNWMyODZlNzM2MDRlNjUzMjEyNDk5NzViYzkuLjg4MWRiYmViYTEyODUy
ODQ4ZDIwYTdjYzQ3ODJkNzZhMjBkNDIzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAt
MTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV9pZGVudGlmaWVyOwogICAgIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIG1fY29udGV4dFByb3h5
OyAvLyBUaGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0
ZG93bi4KLSAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+
IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9u
YWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKICAgICBNb25vdG9uaWNUaW1lIG1fd29ya2VyQ3JlYXRp
b25UaW1lOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2Fj
aGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMmNkYjc1NTc5NThiYzg5M2Uy
NjZkNmZiOWMwY2VjMTc2NzBmMjkwYS4uMTNkZjE3MzZmYTNlYThiMGQ2MTNiYWI3OGRjMmZjNmJk
ZGI3ZWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29y
a2VyU2NyaXB0RmV0Y2hlciYKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25z
dCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscyBjcmVkZW50aWFscywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yIH0pOwpA
QCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMCiAgICAgewogICAgICAg
ICBhdXRvJiBwcm9taXNlID0gSlNFeGVjU3RhdGU6OmxvYWRNb2R1bGUoZ2xvYmFsT2JqZWN0LCBt
b2R1bGVVUkwuc3RyaW5nKCksIEpTQzo6SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZSh2
bSwgbWFrZVJlZihzY3JpcHRGZXRjaGVyLT5wYXJhbWV0ZXJzKCkpKSwgSlNDOjpKU1NjcmlwdEZl
dGNoZXI6OmNyZWF0ZSh2bSwgeyBzY3JpcHRGZXRjaGVyLnB0cigpIH0pKTsKIAotICAgICAgICBh
dXRvIHRhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4o
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICBhdXRvIHRhc2sgPSBj
cmVhdGVTaGFyZWRUYXNrPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPihbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5o
CmluZGV4IGE1YzFhMWRkYTVkNmQwMmU4NTZmZjVhNjBiZDc5YTRhNjg1NDU0YTcuLjMwNGFjNDAz
MzRjMDYyZjdlYjRiZmU1OWUzNTg3NjljYjc0Yzk2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0x
MDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgbGlua0FuZEV2YWx1YXRlTW9kdWxlKFdv
cmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IGxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJik7CiAKLSAgICB2b2lkIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25z
dCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFscywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKKyAgICB2b2lkIGxvYWRBbmRF
dmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+
JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2Jh
bFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxTY29wZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDBmMTk0NTQ0OGM0NWNiMTEx
ZGNjNGEyNWE2YzlhYmY2ZjE2NDRkZWEuLmZiMDcyY2MxOGM5MWZlMTEwZTRhZGVlYTgzMzI4OWMy
ODNiYjZkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRM
b2FkZXIoKQogCiBXb3JrZXJTY3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRl
ZmF1bHQ7CiAKLU9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6
Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50
aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2Fk
U3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9u
czo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIGF1
dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oCmluZGV4IGJkZDYwMTdkZjQ2Y2M5ZjQ2ZGUwZGFhZGE3ZDM1YzlmODZiMzRjYmQu
LmQzMzdjNTAzNmRhYzBmNjc1YTFjOTIzZDhkZTY0M2ZmMTM1MzNjYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclNjcmlwdExvYWRlcik7CiAg
ICAgfQogCi0gICAgT3B0aW9uYWw8RXhjZXB0aW9uPiBsb2FkU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgRmV0Y2hPcHRpb25zOjpNb2RlLCBGZXRjaE9w
dGlvbnM6OkNhY2hlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3Ry
aW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4g
bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIEZl
dGNoT3B0aW9uczo6TW9kZSwgRmV0Y2hPcHRpb25zOjpDYWNoZSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAg
dm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc291cmNl
UmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQsIFNlcnZpY2VXb3JrZXJzTW9kZSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50JiwgU3RyaW5n
JiYgdGFza01vZGUpOwogCiAgICAgdm9pZCBub3RpZnlFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDQ0MmQyZGQyZDhhYjc3NzE2NzYxYWEzOWUyYTJi
MmMwNDE5OTVkMTIuLmY3YjJhNTBkZTk3Nzg2MWJiZTZiYTI4OWQ1MjliZDhiODExMTA2MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEzNyw4ICsxMzcsOCBA
QCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4
Y2VwdGlvbk1lc3NhZ2UpCiAgICAgICAgIHNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3Rh
dGljX2Nhc3Q8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVy
KCkpKTsKICAgICAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBnbG9iYWxTY29w
ZSgpLT5zY3JpcHQoKS0+bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQo
KSwgc291cmNlQ29kZSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWlu
YXRlZCkgewotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4g
ZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJvcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5j
b25zb2xlTWVzc2FnZSkKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2Ny
aXB0OjpFcnJvcj4gZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJvcigpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBt
ZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25NZXNzYWdlID0gbWVzc2FnZS0+bWVzc2FnZTsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSAiSW1wb3J0aW5nIGEgbW9kdWxl
IHNjcmlwdCBmYWlsZWQuIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwCmluZGV4IGU2YWJiMTQ1MDQ0M2Yy
ZWQ4NDRiMjlhODM5YjYzMzgwNWI5NmI1YTUuLmJmZjI3MmNmMTZjMDZhZjNlMTEwZTg5N2FiYmM0
MjNiZmQ5MjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudCk7CiAKLVJlZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZl
bnRTb3VyY2U+JiYgc291cmNlKQorUmVmPEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ+IEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0
cywgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50
SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpKTsKIH0KQEAgLTUwLDcgKzUwLDcg
QEAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgY29uc3QKIHsKIH0KIAotRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dDo6RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBP
cHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0
aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogICAgIDogRXh0ZW5kYWJsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAg
LCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oCmluZGV4IDllNmNiZjJlY2QzMzBlOTU0NDgzYTFjMzgyYTIyY2Q4NzIyMzlmZmMuLmY2NzQ1
MjQ0NTQ4NmIzYWRhYzY2ZDUxMjM1MWQ1ZDcyZGY4OGNkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAg
ICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBTdHJpbmcgbGFzdEV2ZW50SWQ7Ci0gICAgICAgIE9w
dGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+IHNvdXJjZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiBzb3VyY2U7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAgICB9OwogCkBAIC02MywyNiAr
NjMsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50KHN0YXRlLCB0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9y
PFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYs
IGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0g
eyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVh
dGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+
JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKIAogICAgIH5FeHRlbmRhYmxlTWVzc2FnZUV2ZW50
KCk7CiAKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdEV2ZW50SWQ7IH0KLSAgICBjb25zdCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50U291cmNlPiYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzOyB9CiAKICAgICBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6CiAgICAgRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IEluaXQmLCBJc1RydXN0ZWQpOwotICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNv
dXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJik7CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fb3JpZ2luOwogICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwotICAgIE9wdGlvbmFs
PEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+IG1fc291cmNlOworICAgIHN0ZDo6b3B0aW9u
YWw8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZT4gbV9zb3VyY2U7CiAgICAgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+IG1fcG9ydHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDc4ZDBhMzMy
MGI3MWY1MDU1YzYzYzIyYWM0ZWUzNTRmNjZlNTlmMGIuLmY5NTNjYWUzMjcwMTUxNDFkMzQwZGYz
NzVhOGI2NWZmZTM1NjRmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBT
V0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3Vt
ZW50SWRlbnRpZmllciBkZXMKICAgICAgICAgY29udGFpbmVyLT5wb3N0TWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURhdGEpLCBXVEZNb3ZlKHNvdXJjZU9yaWdpbikpOwog
fQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVJl
Z2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAzY2I1YjBjYmJhY2E1NDhjYzgyMzU2
Y2JhMjFhOGE2NTgwMTIwOWUzLi41ZDBiZGYzZDE5ZmIwOWI4MjE1OGNhZThiM2ViOTI5MjM3Mjll
MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlvbigpOwogCi0gICAgdXNpbmcg
UmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKT47CisgICAgdXNpbmcgUmVnaXN0cmF0aW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3Ry
YXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVS
TCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgR2V0UmVnaXN0cmF0
aW9uc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJS
ZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0ID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRl
bnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgPSAwOwpAQCAtOTYsNyArOTYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JS
ZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIEZldGNoT3B0
aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50
aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291
cmNlLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25T
dGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZWdpc3RyYXRpb25MYXN0VXBkYXRlVGlt
ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2FsbFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dERhdGEuaAppbmRleCAwMzMwYjQ5YmRjMTQ0MGE0NzI4OGUzNWY5MjAyNzdlZjZhYjUzM2E2Li4z
M2Q5ODM4NDI0Y2I4ZjJjMWFlMWRhZDVmOGFmYmUxNDkwMTkyM2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEu
aApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAg
IHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBTV0NsaWVudENvbm5lY3Rpb24mKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgpAQCAtNjEsMjkgKzYxLDI5IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVu
dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBp
ZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBp
ZiAoIXR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlPiBmcmFtZVR5cGU7CisgICAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlPiBmcmFtZVR5cGU7CiAgICAgZGVjb2RlciA+
PiBmcmFtZVR5cGU7CiAgICAgaWYgKCFmcmFtZVR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4g
dXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4g
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgZGVjb2RlciA+
PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIuY3BwCmluZGV4IDM1NTg0YjhhZjA0YzUyYjc2ODBjZDZiODc5NDVhNzY0ODhmMmE0
ZWEuLmJjZjMzMzQzOTE5ZjYwNjZlNzQyNjM3ZGMxM2U5MmQxYzNkZGZmYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKK3N0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXI7CiAgICAgdW5zaWdu
ZWQgY291bnRlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCmluZGV4IGQ2MzgxZDdk
NWJjOTJmZWI3ZjllMDY4YzM3YTNhNGU0MjE4ODE2MDMuLmJjZTI3Y2NlMzA2OTY4M2E4OWVkNDFm
NmE3NDZmNjQ0YmIyMmRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC00MCwx
MCArNDAsMTAgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsKICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtYWtlU3RyaW5nKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCksICct
JywgY29udGV4dElkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGZy
b21TdHJpbmcoU3RyaW5nVmlldyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
YSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGIpCkBAIC01OCwxNCArNTgs
MTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXI+IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIXNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8RG9jdW1lbnRJZGVudGlmaWVyPiBjb250ZXh0SWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPERvY3VtZW50SWRlbnRpZmllcj4gY29udGV4dElkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBjb250ZXh0SWRlbnRpZmllcjsKICAgICBpZiAoIWNvbnRleHRJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zLmgKaW5kZXggZDAxODdjOTg3M2EyODFhNGUyYjcyOThjYzJjMzU5YzAzOGRkZDQ0Yy4uMzk0
ZDlhZjg2MTVkNmU1MmM2MDE1NTM0MDg2YmE2YjBhYzFkM2RiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9ucy5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlIHsgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBk
ZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNDcsMTQgKzQ3LDE0IEBAIHZv
aWQgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25z
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucz4gU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9uczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaW5jbHVkZVVuY29udHJv
bGxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAg
ZGVjb2RlciA+PiBpbmNsdWRlVW5jb250cm9sbGVkOwogICAgIGlmICghaW5jbHVkZVVuY29udHJv
bGxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IGJhNDJlYTIz
OGRjNmY4NTY0OTc3ZGUzODgwMjIzMDVlNmZmNWEwNjQuLmM4MjcyMGVhNzY0MTA5ZWQzYjIwZWI0
ZDY2NjQ2NTI4YzFkY2FmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1
ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJv
bWlzZSwgRXhjZXB0aW9uT3I8T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmIGNs
aWVudERhdGEpCitzdGF0aWMgaW5saW5lIHZvaWQgZGlkRmluaXNoR2V0UmVxdWVzdChTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIEV4Y2Vw
dGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERh
dGEpCiB7CiAgICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcHJv
bWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCmluZGV4IGE1ODBkYjdmMmI2NjZiNmMxM2I4OTRlYTQwMzlmNDJhMzM3M2MxY2EuLjY4NmI0
ZWRhN2M2NjI1OGY1OTI4ZmJhMGIzZGQzMDY4NzdlYzYxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
QEAgLTI2OSwxMiArMjY5LDEyIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVn
aXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfSk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1
cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsK
ICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbdGhp
cywgaWRlbnRpZmllciwgc3RhdGUsIHNlcnZpY2VXb3JrZXJEYXRhID0gT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+IHsgc2VydmljZVdvcmtlckRhdGEgfV0oKSBtdXRhYmxlIHsKKyAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3RoaXMsIGlkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSA9IHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsgc2VydmljZVdvcmtlckRhdGEgfV0oKSBtdXRhYmxl
IHsKICAgICAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXI+IHNlcnZpY2VXb3JrZXI7CiAgICAgICAg
IGlmIChzZXJ2aWNlV29ya2VyRGF0YSkKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXIgPSBTZXJ2
aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KCpzZXJ2aWNlV29ya2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggMzRhMGViZjc3MzU2Y2Rm
ODY2Y2E2MjNmMWIwMjBiODA2M2YxNWViNS4uMWUyMDU5ODliMzI3MjAyYTRlYTZjNWMyYjgxZWNj
Y2JkYzI1ZDEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAg
ICB2b2lkIGdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7Ci0gICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0
YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKKyAgICB2b2lkIHVwZGF0
ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+Jik7CiAgICAgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmly
ZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwog
ICAgIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaENvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCmluZGV4IDJkYTJkYmIxNTM2ZTk4MDA1NWJmOTRjMDZiNmNiMjRkMjU3YzEy
NTUuLjNkN2NkMTdhOGJjMDlkYWVhYTZlMGViZjkwYTA1OWE3YzcwOWEzMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKQEAgLTUyLDE5ICs1MiwxOSBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgc2NyaXB0IDw8IHJlc3BvbnNlVVJMIDw8IG1p
bWVUeXBlOwogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1wb3J0
ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNjcmlwdDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsK
ICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBkZWNvZGVy
ID4+IHJlc3BvbnNlVVJMOwogICAgICAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IG1pbWVUeXBlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBl
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKICAgICAgICAgICAgIGlmICghbWlt
ZVR5cGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc5LDcgKzc5
LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgICAgIEltcG9ydGVk
U2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29w
eSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogICAgIH07CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSByZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKQEAgLTg5
LDExICs4OSwxMSBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwg
c2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZy
b21EaXNrOwotICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIEhhc2hNYXA8VVJMLCBJbXBv
cnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwpAQCAtMTA2LDE0
ICsxMDYsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4g
am9iRGF0YUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVnaXN0cmF0aW9uOwogICAgIGRlY29kZXIgPj4gcmVn
aXN0cmF0aW9uOwogICAgIGlmICghcmVnaXN0cmF0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMTIyLDcgKzEyMiw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAg
aWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPFNjcmlwdEJ1ZmZlcj4gc2NyaXB0OworICAgIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CiAgICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgaWYg
KCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDcsNyArMTQ3LDcg
QEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRl
ZEZyb21EaXNrKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFs
PExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTE1NSw3ICsxNTUs
NyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2Ny
aXB0UmVzb3VyY2VNYXApKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CisgICAgc3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRp
ZmljYXRlSW5mbzsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJEYXRhLmgKaW5kZXggYmM1NmU5YjAzZGQwYmZmYTAyYzZhZjNhMGY2NjQ2YWVmODA0
Y2JhYS4uY2UzNjFkM2YzZDBmMzg3M2E4NmRjOGE5MzhiYWYwM2YxZDE2NGE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJEYXRhIHsKICAgICBTZXJ2aWNlV29y
a2VyRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVyJik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgpAQCAtNTQsMjkgKzU0LDI5IEBAIHZvaWQgU2VydmljZVdvcmtlckRhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0
aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IFNlcnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IFNlcnZpY2VXb3Jr
ZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNl
V29ya2VySWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxVUkw+IHNjcmlwdFVSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gc2NyaXB0
VVJMOwogICAgIGRlY29kZXIgPj4gc2NyaXB0VVJMOwogICAgIGlmICghc2NyaXB0VVJMKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclN0
YXRlPiBzdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJTdGF0ZT4gc3RhdGU7
CiAgICAgZGVjb2RlciA+PiBzdGF0ZTsKICAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V29ya2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlm
ICghdHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiByZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb25JZGVu
dGlmaWVyOwogICAgIGlmICghcmVnaXN0cmF0aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAppbmRleCAzYmQwN2IzY2Y2MTUwZjNiNjIy
NmVhMzQ0OTc2ZWYwZmZiODdkMmJmLi5kMzRiNTI4MTNlMWE3NzE4MWJlYjVjMjJmNGU2ZDNhZmYx
M2I4ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewot
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CiAg
ICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUs
NyArODUsNyBAQCBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnNjcmlwdEVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAgIHN0ZDo6b3B0
aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBj
ZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggYjZjOTU2MzM4ZTFkZmQyMTFkYWMxN2MyYjMxMDU5NTMy
OWY4MTg2Yi4uMDI1MTBjZGEyZWNiN2UyNDU1NTZmMzYxYjViZTJhMDYyMDA1ZmZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmgKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAg
ICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+
IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEoKSA9IGRlZmF1bHQ7CkBAIC04Niw5ICs4
Niw5IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBp
ZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4g
U2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9y
aWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwog
ICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTE4LDcgKzExOCw3IEBAIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAKICAgICBzd2l0Y2ggKGpvYkRhdGEudHlwZSkgewogICAgIGNhc2UgU2VydmljZVdvcmtl
ckpvYlR5cGU6OlJlZ2lzdGVyOiB7Ci0gICAgICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25PcHRpb25zPiByZWdpc3RyYXRpb25PcHRpb25zOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiByZWdpc3RyYXRpb25PcHRpb25z
OwogICAgICAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAgICAgICAgIGlmICgh
cmVnaXN0cmF0aW9uT3B0aW9ucykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgKaW5kZXggN2E3ZDY0ODUzZGRjNDcxNmRlMjVkZTA3
YTdmMGY3MWEwN2NkMGQyZC4uNzI1YTgzYWMyMTBhZmZiMTI5YzBlNTg2MTg2ZTE5YmUyZDA3ODE1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBiKQpAQCAtNTYsMTQgKzU2LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4g
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IGNvbm5lY3Rpb25JZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gY29ubmVj
dGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsKICAg
ICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXI+IGpvYklkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcj4gam9iSWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IGpvYklkZW50aWZpZXI7CiAgICAgaWYgKCFqb2JJZGVu
dGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YS5jcHAKaW5kZXggZDQwNjY5ZDNmNjMyNjlkMGZhY2I3NWJmZWU0MGI1NzYzMDQzM2Mx
My4uMGNhNTg1MGI1Y2NlZDUxN2Q0MzZjYjc4MGFlY2RlZGYwOTc4MzIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEuY3BwCkBAIC0zOCw5ICszOCw5IEBAIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOjppc29sYXRlZENvcHko
KSBjb25zCiAgICAgICAgIHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICB1cGRhdGVW
aWFDYWNoZSwKICAgICAgICAgbGFzdFVwZGF0ZVRpbWUsCi0gICAgICAgIGluc3RhbGxpbmdXb3Jr
ZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0
ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAotICAgICAgICB3YWl0aW5nV29ya2VyID8gT3B0aW9u
YWw8U2VydmljZVdvcmtlckRhdGE+KHdhaXRpbmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0
ZDo6bnVsbG9wdCwKLSAgICAgICAgYWN0aXZlV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+KGFjdGl2ZVdvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAg
ICAgICBpbnN0YWxsaW5nV29ya2VyID8gc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4o
aW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAg
ICB3YWl0aW5nV29ya2VyID8gc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4od2FpdGlu
Z1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICBhY3RpdmVX
b3JrZXIgPyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPihhY3RpdmVXb3JrZXItPmlz
b2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9wdCwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YS5oCmluZGV4IDlmNTNmYWQyYWI1YWVjYTY2YjIyNmQ1Njk2MzMyMjIwYjViNGM1
ZjQuLjNmZjQwNDlmNTJkNGIzMTM3ZTJhNDdjZGQyMzE0ZTc3NjkzYjhjOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YS5oCkBAIC00NSwxNCArNDUsMTQgQEAgc3RydWN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBk
YXRlVmlhQ2FjaGU7CiAgICAgV2FsbFRpbWUgbGFzdFVwZGF0ZVRpbWU7CiAKLSAgICBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyRGF0YT4gaW5zdGFsbGluZ1dvcmtlcjsKLSAgICBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyRGF0YT4gd2FpdGluZ1dvcmtlcjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4gYWN0aXZlV29ya2VyOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
IGluc3RhbGxpbmdXb3JrZXI7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4g
d2FpdGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBhY3Rp
dmVXb3JrZXI7CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBpc29sYXRlZENv
cHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAKQEAgLTYzLDQ0ICs2
Myw0NCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT4ga2V5OworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleT4ga2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFVSTD4gc2NvcGVVUkw7CisgICAgc3RkOjpvcHRpb25h
bDxVUkw+IHNjb3BlVVJMOwogICAgIGRlY29kZXIgPj4gc2NvcGVVUkw7CiAgICAgaWYgKCFzY29w
ZVVSTCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBkYXRlVmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29k
ZXIgPj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgaWYgKCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gcmF3V2FsbFRpbWU7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJhd1dhbGxUaW1lOwogICAgIGRlY29kZXIgPj4g
cmF3V2FsbFRpbWU7CiAgICAgaWYgKCFyYXdXYWxsVGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gaW5z
dGFsbGluZ1dvcmtlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+PiBpbnN0YWxsaW5nV29ya2VyOwogICAgIGRlY29kZXIgPj4gaW5zdGFsbGluZ1dv
cmtlcjsKICAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IHdhaXRp
bmdXb3JrZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJE
YXRhPj4gd2FpdGluZ1dvcmtlcjsKICAgICBkZWNvZGVyID4+IHdhaXRpbmdXb3JrZXI7CiAgICAg
aWYgKCF3YWl0aW5nV29ya2VyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+PiBhY3RpdmVXb3JrZXI7CisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gYWN0aXZlV29y
a2VyOwogICAgIGRlY29kZXIgPj4gYWN0aXZlV29ya2VyOwogICAgIGlmICghYWN0aXZlV29ya2Vy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwCmluZGV4IDcwNWIyZWY1NjAzNGZjNGNhNjNmNWJlNzBjYTcwZmNhMTllODk4MjUuLjQ4ZTg0
MzBmMDY3MWYyMjUyNTE3ZmZkMzYwNjVkZTA2Mjc5MjZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXk6OnRvRGF0YWJhc2VLZXkoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKG1f
dG9wT3JpZ2luLnByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIG1fdG9wT3JpZ2luLmhvc3Qs
IHNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBtX3Njb3BlLnN0cmluZygp
KTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KGNvbnN0IFN0cmluZyYga2V5KQor
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAg
ICAgYXV0byBmaXJzdCA9IGtleS5maW5kKHNlcGFyYXRvckNoYXJhY3RlciwgMCk7CiAgICAgYXV0
byBzZWNvbmQgPSBrZXkuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIsIGZpcnN0ICsgMSk7CkBAIC0x
MDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXMKICAgICBpZiAoZmlyc3QgPT0g
c2Vjb25kIHx8IHNlY29uZCA9PSB0aGlyZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBzaG9ydFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gc2hvcnRQb3J0OwogCiAgICAgLy8gSWYgdGhlcmUncyBhIGdhcCBiZXR3ZWVuIHRo
aXJkIGFuZCBzZWNvbmQsIHdlIGV4cGVjdCB0byBoYXZlIGEgcG9ydCB0byBkZWNvZGUKICAgICBp
ZiAodGhpcmQgLSBzZWNvbmQgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCBk
MGY5YjQ0NWI1MjQzZTkzMDkwMzA4ZDdhMWUzN2FkNGJkZWYxMDdjLi5jNWM0OTUxNDg0MDY5ZTk1
YjZiYzc2MDg4YmQzMDc0Y2NlNjJmOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAg
LTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgU3Ry
aW5nIHRvRGF0YWJhc2VLZXkoKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleT4gZnJvbURhdGFiYXNlS2V5KGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IGZyb21E
YXRhYmFzZUtleShjb25zdCBTdHJpbmcmKTsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBTdHJp
bmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OwpAQCAtODEsOSArODEsOSBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOworICAgIHN0ZDo6b3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmln
aW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCmluZGV4IGZlMDJiZjdmY2Q1ZjE1ODllMTJi
NWJhMjY5MDYyMjU3Yzc0ZDU4OTIuLmM4ZDc3MThkZWU3NWFkYTBiMjU2ZTk1ZjU4Nzc5OTEyMzhl
ZDNhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCkBAIC00Miw3ICs0Miw3
IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucyB7CiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25PcHRpb25zPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRp
b25zPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTUyLDE5ICs1MiwxOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zPiBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2NvcGU7CiAgICAg
ZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V29ya2VyVHlwZT4gdHlwZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlw
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBkYXRlVmlhQ2FjaGU7CisgICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIg
Pj4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgaWYgKCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggZWVkM2Y5Mjk3Y2Qy
MzBhNDJlOTZlMmNlMjc0ZTk4YjA2M2JkOTcyNy4uMmUyNGYyNjQ3ZmViMmMwZTAxNjVmNTk5OTk2
NWU3ZjVlYTAwMGEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBib29sIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
JiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RvcE9yaWdpbiA9IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGNyb3Nz
VGhyZWFkQ29weShkYXRhKSwgaWRlbnRpZmllciwgdXNlckFnZW50ID0gY3Jvc3NUaHJlYWRDb3B5
KHVzZXJBZ2VudCldIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb24uaAppbmRleCBiNDE3OTEzMjA2OGE4MTBhNDk1NGIzMmEzMDMyMGY0Yjc2MmU4MDc5Li5j
ODZlZTQ1NWQzMTMyOTU3ZjI5NzlmZGZkZDhiMDJlODkxZTBjMjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYg
c291cmNlKSBmaW5hbDsKICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBtYXlIYXZlU2Vydmlj
ZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2
b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApp
bmRleCAxOGM4MjljNDhlNzhjMzkzZDNmMWY1ZDhmOTA0ZDE4MTM1YTI1YjRiLi5hN2RhMDBkOTZj
MDBkZGQ4OTA2ZDgyNzVmNmRhMmRjNDg5YjM2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2VydmljZVdv
cmtlclRocmVhZEZvckluc3RhbGwoUmVmPFNlcnZpY2VXb3JrZXJUaAogICAgIH0pOwogfQogCi12
b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0ZWRTZXJ2aWNlV29ya2VyKE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2Vw
dGlvbk1lc3NhZ2UsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQordm9pZCBTV0NvbnRleHRNYW5hZ2Vy
OjpzdGFydGVkU2VydmljZVdvcmtlcihzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJv
b2wgZG9lc0hhbmRsZUZldGNoKQogewogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDcmVhdGlvbkNh
bGxiYWNrKQogICAgICAgICBtX3NlcnZpY2VXb3JrZXJDcmVhdGlvbkNhbGxiYWNrKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDRkMDhl
NzZiYzlkNjA2MzljZTBkOWFmNGM5OWEwN2E5ZTExYmU0ODIuLjE5MTA1MjdhY2QwOTJiNjIzOGUw
YjkwZWE4MjAzOGYyMjJkZDMyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTUyLDE2ICs1Miwx
NiBAQCBwdWJsaWM6CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdGFy
dGVkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoSW5zdGFsbChPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2
aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgPSAw
OwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+PiYmKT47CisgICAgICAgIHVzaW5nIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGll
bnRCeUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01h
dGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9p
ZD4mJik+JiYpID0gMDsKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHN0YXJ0ZWRTZXJ2aWNl
V29ya2VyKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UsIGJvb2wgZG9l
c0hhbmRsZUZldGNoKTsKKyAgICB2b2lkIHN0YXJ0ZWRTZXJ2aWNlV29ya2VyKHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gp
OwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9U
ZXJtaW5hdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9wV29ya2Vy
KFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYsIFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA2Yjk0NzJkMDAzN2Y2MWZlOWI3NTJkNDY0
YWMxNTljNzdlMjk2NzM3Li5kMjI1MzY1MDU5MDVhYWRmMWQ0ODJlOTA1Njg1MjVmY2Q2YWI5Yjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiAKIC8vIGh0dHBzOi8v
ZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLWZldGNoIHN0ZXAgMy4zCi1zdGF0aWMgaW5saW5l
IE9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6
OlJlZGlyZWN0IHJlZGlyZWN0KQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJlc291cmNl
RXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0
KQogewogICAgIGlmIChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6
RXJyb3IpCiAgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3
b3JrZXIgaXMgYW4gZXJyb3IiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKQEAg
LTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4m
JiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgUgogICAgIH0pOwogfQogCi12
b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiBy
ZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50
KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNj
b3BlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJ
ZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0
aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgYXV0byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVy
czo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7
IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpIH0pOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBBU1NFUlQoZ2xvYmFsU2NvcGUucmVnaXN0cmF0aW9u
KCkuYWN0aXZlKCktPnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOwog
CiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1ZXN0Lmh0dHBCb2R5KCk7Ci0gICAgT3B0aW9uYWw8
RmV0Y2hCb2R5PiBib2R5OworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiBib2R5OwogICAg
IGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkgewogICAgICAgICBib2R5ID0g
RmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFsU2NvcGUsICpmb3JtRGF0YSk7CiAgICAgICAg
IGlmICghYm9keSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCAzMTU1ZDU2ZTlmZDZlOTJi
ZDYyMDgwYTc2YTQ3NDViMzg3ZWE0OTFiLi5jMjczNWRlODdmOGJlZDE4NTc3YmZjYzZjODliYWJm
NDM2Y2YyZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgPSAwOwog
fTsKIAotdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBS
ZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKK3Zv
aWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+LCBSZXNv
dXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXgg
NTAxZDJlZDhiOGE4ODNjMTBmNTg2NTFiZDg4NmRkZDQzMDY4YzIxMS4uMWUyNzc2Zjg4M2UxMTNi
NDMyZDk4N2VkOGM1ZjZkNjZhNDE5YWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9v
cCgpCiAgICAgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2Vy
RmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiBy
ZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKK3ZvaWQgU2VydmljZVdvcmtlclRocmVh
ZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGll
bnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJl
ciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqZ2xv
YmFsU2NvcGUoKSkpOwogICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCku
cXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBX
VEZNb3ZlKG9wdGlvbnMpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4
IGJlMTdiMmI4NTM5MTY5NWUxYTkwZjY3NTUwMTc3Mjc1NDg1ZjY1ZWIuLmZjMmIxN2E1N2U5NjNj
NDcxMzMwY2EyNmVhNWI2MmNjNzI0Yjk0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAg
LTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVBY3Rp
dmF0ZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsK
IAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZl
dGNoOjpDbGllbnQ+JiYsIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYm
LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsK
KyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRj
aDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYm
KTsKICAgICB2b2lkIHF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQg
cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVB
Y3RpdmF0ZUV2ZW50KCk7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQotICAgIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2pvYkRhdGFJZGVudGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9qb2JEYXRhSWRlbnRpZmllcjsgfQogICAgIGJvb2wgZG9lc0hhbmRsZUZldGNo
KCkgY29uc3QgeyByZXR1cm4gbV9kb2VzSGFuZGxlRmV0Y2g7IH0KIAogICAgIHZvaWQgc3RhcnRG
ZXRjaEV2ZW50TW9uaXRvcmluZygpOwpAQCAtOTQsOCArOTQsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5zdGFsbEV2ZW50VGltZXJGaXJlZCgpOwogCiAgICAgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IG1fam9iRGF0YUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBtX2RhdGE7IC8vIEJlY29tZXMgc3RkOjpudWxsb3B0IGFm
dGVyIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gbV9qb2JEYXRhSWRl
bnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9k
YXRhOyAvLyBCZWNvbWVzIHN0ZDo6bnVsbG9wdCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQuCiAgICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2Vy
T2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGY3NzNhY2QzNWNiMDI1ZjY2
Yzc2YzYzZGJhMTU4MjIwYTFmODM2MTkuLjcyMjg1ZmRjODM5OWZjMzRiNTRlOTM2MDQ5MTNmYTFh
M2ZjNTQ5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjEz
LDcgKzIxMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2go
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50
PiYmIGNsaWVudCwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xp
ZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRj
aE9wdGlvbnMmJiBvcHRpb25zKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6
Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaCAlbGx1IiwgZmV0
Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oCmluZGV4IDFmZDVkYWIzNjExMmE2NjFlNjEyZDhiNGIxNjg1ZWMxZDJmYzE4YzAuLmM5ZjFk
N2VmNzJiYjNmMzVhYWNkMWMzMDUxNThjMzhlMjAwYzEwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYm
LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNo
SWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwg
U3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNhbmNlbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRl
eCBjOWVjYjM1NTBmMDk3OTg1ZTA2YWRkYmQ5ODY4ZDkwZDk0OTM5OTQ1Li4zMWY1ODVmN2I3Y2Mx
NTJiODYzMmI4ODcyMmQ0MjA4Y2M4NDMxODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cApAQCAtMTEwLDE0ICsxMTAsMTQgQEAgc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7
CiAgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0
QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFVSTD4gcmVz
cG9uc2VVUkw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKICAgICAg
ICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKICAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5n
PiBtaW1lVHlwZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAg
ICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOwogICAgICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgU3Ry
aW5nIHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmcoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVw
ZGF0ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hl
KGNvbnN0IFN0cmluZyYgdXBkYXRlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlPiBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hlKGNvbnN0IFN0cmluZyYgdXBk
YXRlKQogewogICAgIGlmICh1cGRhdGUgPT0gIkltcG9ydHMiKQogICAgICAgICByZXR1cm4gU2Vy
dmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpJbXBvcnRzOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0
YXRpYyBTdHJpbmcgd29ya2VyVHlwZVRvU3RyaW5nKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V29y
a2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdvcmtlclR5cGU+IHN0cmluZ1RvV29ya2VyVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0gIkNsYXNzaWMiKQogICAgICAgICByZXR1cm4gV29y
a2VyVHlwZTo6Q2xhc3NpYzsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V29y
a2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwdXNoQ2hh
bmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFuZ2VkUmVnaXN0cmF0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6cHVzaENoYW5nZXMoY29uc3QgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFu
Z2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHVwZGF0ZWRS
ZWdpc3RyYXRpb25zOwogICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBy
ZW1vdmVkUmVnaXN0cmF0aW9uczsKQEAgLTUxNCw3ICs1MTQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVS
TCB7IFVSTCgpLCBzcWwtPmNvbHVtblRleHQoNikgfTsKICAgICAgICAgYXV0byB3b3JrZXJUeXBl
ID0gc3RyaW5nVG9Xb3JrZXJUeXBlKHNxbC0+Y29sdW1uVGV4dCg3KSk7CiAKLSAgICAgICAgT3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGF1dG8gY29udGVu
dFNlY3VyaXR5UG9saWN5RGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDgpOwogICAgICAg
ICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuc2l6ZSgpKSB7CiAgICAgICAgICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9s
aWN5RGF0YVZpZXcuZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhVmlldy5zaXplKCkp
OwpAQCAtNTMxLDcgKzUzMSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkcygpCiAgICAgICAgIGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBEYXRhVmlldyA9IHNxbC0+
Y29sdW1uQmxvYlZpZXcoMTApOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhVmll
dy5zaXplKCkpIHsKICAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0
UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVZpZXcuZGF0YSgpLCBzY3Jp
cHRSZXNvdXJjZU1hcERhdGFWaWV3LnNpemUoKSk7Ci0gICAgICAgICAgICBPcHRpb25hbDxIYXNo
TWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRo
b3V0U2NyaXB0czsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxVUkwsIEltcG9y
dGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAg
ICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXBX
aXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIGlmICghc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0
U2NyaXB0cykgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3Jr
ZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29k
ZSBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzIik7CkBAIC01NDEsNyArNTQxLDcgQEAg
U3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGVJbmZvRGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JW
aWV3KDExKTsKLSAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUlu
Zm87CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUlu
Zm87CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9E
ZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFWaWV3LmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YVZpZXcuc2l6ZSgpKTsKICAgICAgICAgY2VydGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZp
Y2F0ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKaW5kZXggNTcwNzUyNjY5NjIxZGIzNDI4
NzdhZjM0YzcxZTQ1Yjk4YjkwYTE5ZC4uNmIxY2YwYjJjMDg0NTNhZjYyZTU5MmU0ZTcwYTU3YWM2
NDgwYTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAKICAgICB+UmVnaXN0cmF0aW9uRGF0YWJhc2UoKTsKIAotICAgIHZvaWQgcHVzaENoYW5n
ZXMoY29uc3QgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBwdXNoQ2hhbmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJBbGwoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAppbmRleCBiYTExMzExNWE2NTQxMmZkZTJkZmRhYjYx
NjZlNWY2ZTA4NzIzOTZkLi4zYjNjZDk4N2I3MWU0MjQ3MWYxZTIyNjY3NTA3MDU5NDkxZTJjYjNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25TdG9yZS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU1dT
ZXJ2ZXImIG1fc2VydmVyOwogICAgIFJlZjxSZWdpc3RyYXRpb25EYXRhYmFzZT4gbV9kYXRhYmFz
ZTsKIAotICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV91cGRhdGVkUmVnaXN0cmF0aW9uczsKKyAgICBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhPj4gbV91cGRhdGVkUmVnaXN0cmF0aW9uczsKICAgICBUaW1lciBt
X2RhdGFiYXNlUHVzaFRpbWVyOwogCiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggZjdhZjA3ZDFiNGE5Yzc1NDM3OGRlMjM2ZTRhNGZiOWZlMWYyZGIyMS4uN2I5YjVm
YmZmMTM0NWMxMmYzMTExYjU4Y2I2N2U2YmNhYWFlNjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyOjp3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiAgICAgcmV0dXJuIHdvcmtlcjsKIH0KIAotT3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjpzZXJ2aWNlV29ya2VyQ2xpZW50
V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3Jr
ZXJDbGllbnRXaXRoT3JpZ2luQnlJRChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpIGNv
bnN0CiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4u
ZmluZChjbGllbnRPcmlnaW4pOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2NsaWVudElkZW50aWZp
ZXJzUGVyT3JpZ2luLmVuZCgpKQpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNj
cmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQp
CiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29y
a2VyJiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3Jr
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm47CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGUKICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKmpvYkRhdGFJ
ZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3Jr
ZXIpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBT
V1NlcnZlcldvcmtlciYgd29ya2VyKQogewogICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybjsKQEAgLTUzNyw3ICs1MzcsNyBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5h
dGVQcmVpbnN0YWxsYXRpb25Xb3JrZXIoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAg
cmVnaXN0cmF0aW9uLT5zZXRQcmVJbnN0YWxsYXRpb25Xb3JrZXIobnVsbHB0cik7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3
b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3Rh
bGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBq
b2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgYm9vbCB3YXNTdWNjZXNz
ZnVsKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpk
aWRGaW5pc2hJbnN0YWxsOiBGaW5pc2hlZCBpbnN0YWxsIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1
LCBzdWNjZXNzIGlzICVkIiwgdGhpcywgd29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB3
YXNTdWNjZXNzZnVsKTsKIApAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmZvckVh
Y2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdURjo6
RnVuCiAgICAgfQogfQogCi1PcHRpb25hbDxFeGNlcHRpb25EYXRhPiBTV1NlcnZlcjo6Y2xhaW0o
U1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3N0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4gU1dT
ZXJ2ZXI6OmNsYWltKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7CiAgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gd29ya2VyLnJlZ2lzdHJhdGlvbigpOwogICAgIGlmICghcmVnaXN0cmF0aW9uIHx8
ICZ3b3JrZXIgIT0gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKSkKQEAgLTg5NCw3ICs4OTQs
NyBAQCB2b2lkIFNXU2VydmVyOjp1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29ya2Vycyhjb25zdCBD
bGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTAogICAgIH0KIH0KIAotdm9pZCBTV1NlcnZlcjo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwg
U2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKK3ZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNs
aWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiYTM3Y2VhOTEyOTdkNjQ5
OWFhMmE5ZWJkODgyODZjNDk0ZjY5NjFlLi5jZDYyMjY2MzdhMjUxNmJmM2ZjNTAxZWM2MWEyNjFk
MjkzNmZiMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCByZXNv
bHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAg
ICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25z
dCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclN0YXRlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlVXBkYXRlRm91bmRF
dmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVnaXN0cmF0aW9uTGFzdFVwZGF0ZVRpbWUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIFdhbGxUaW1lKSA9IDA7CkBAIC0xNTcsNyArMTU3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3b3JrZXJCeUlEKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0
IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdp
biYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoY29uc3QgQ2xpZW50T3JpZ2luJikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21S
ZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKQEAg
LTE3MiwxNyArMTcyLDE3IEBAIHB1YmxpYzoKIAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0
b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQogCi0gICAgdm9pZCBzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2VyJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZl
cldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9p
ZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0
VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgbWF0Y2hBbGwoU1dTZXJ2ZXJX
b3JrZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdv
cmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRh
dGE+IGNsYWltKFNXU2VydmVyV29ya2VyJik7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25E
YXRhPiBjbGFpbShTV1NlcnZlcldvcmtlciYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEhhc2hTZXQ8U1dTZXJ2ZXIqPiYgYWxsU2VydmVycygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdp
biYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIHVzaW5nIFJ1blNlcnZp
Y2VXb3JrZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDNmMjg1N2M1MDU0
ODNkMmE3MzBlMmEwOTczMzZhYmE2ZWM4NTBkYmQuLjEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5
N2Q1MDRhNTM2Njc3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC05Nyw3ICs5
Nyw3IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRl
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0CiAgICAgICAgIGJyZWFrOwogICAgIH07CiAK
LSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gc2VydmljZVdvcmtlckRhdGE7CisgICAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gc2VydmljZVdvcmtlckRhdGE7CiAgICAg
aWYgKHdvcmtlcikKICAgICAgICAgc2VydmljZVdvcmtlckRhdGEgPSB3b3JrZXItPmRhdGEoKTsK
IApAQCAtMTQ2LDE1ICsxNDYsMTUgQEAgdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Zm9yRWFj
aENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNXU2VydmVyOjoKIAogU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmRhdGEoKSBjb25z
dAogewotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2VyRGF0
YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBpbnN0YWxsaW5nV29ya2Vy
RGF0YTsKICAgICBpZiAobV9pbnN0YWxsaW5nV29ya2VyKQogICAgICAgICBpbnN0YWxsaW5nV29y
a2VyRGF0YSA9IG1faW5zdGFsbGluZ1dvcmtlci0+ZGF0YSgpOwogCi0gICAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3JrZXJEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+IHdhaXRpbmdXb3JrZXJEYXRhOwogICAgIGlmIChtX3dhaXRpbmdXb3Jr
ZXIpCiAgICAgICAgIHdhaXRpbmdXb3JrZXJEYXRhID0gbV93YWl0aW5nV29ya2VyLT5kYXRhKCk7
CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gYWN0aXZlV29ya2VyRGF0YTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBhY3RpdmVXb3JrZXJEYXRhOwogICAg
IGlmIChtX2FjdGl2ZVdvcmtlcikKICAgICAgICAgYWN0aXZlV29ya2VyRGF0YSA9IG1fYWN0aXZl
V29ya2VyLT5kYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAppbmRleCBiMDU2MjhmNDAwZWE5ZDljNjM3ZmMzYWI0NTdmMDA0ZmRjNWYyODA1Li44NTAyNjA0
MWQ4OTdmYzE2Y2I0MmQwMjE5ZDg4NmM3N2M3OWJkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01MCwxOSArNTAsMTkgQEAgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKIH0KIAotdm9p
ZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dv
cmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQogICAgICAgICB3b3Jr
ZXItPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCBtZXNzYWdl
KTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRT
dGFydGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpv
YkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNo
KQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3Jr
ZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKICAgICAgICAgd29ya2Vy
LT5zY3JpcHRDb250ZXh0U3RhcnRlZChqb2JEYXRhSWRlbnRpZmllciwgZG9lc0hhbmRsZUZldGNo
KTsKIH0KICAgICAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hJ
bnN0YWxsKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpv
YkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAg
ICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRl
bnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCiAgICAgICAgIHdvcmtlci0+ZGlkRmlu
aXNoSW5zdGFsbChqb2JEYXRhSWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCk7CkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV28KICAgICB9CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNl
cHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlz
dGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGF1
dG8qIHNlcnZlciA9IHdvcmtlciA/IHdvcmtlci0+c2VydmVyKCkgOiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggYThiYjA3MGVjZGY2ZjY1ZWRhMjRl
NTgyNmQ4NmQ3M2NkZDI3ZjZjYS4uN2Q1YzhmMTQ5YjczMzFkNDBhNGEyZWFjYWQ5ZDY0YjQyMDAx
YzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NywyMCAr
NTcsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZp
bmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNT
ZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JikgPSAwOwogCiAgICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHBy
b2Nlc3MKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2Vz
SGFuZGxlRmV0Y2gpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRl
eHRTdGFydGVkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmlu
aXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlv
bnMmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFy
dEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5k
ZXggMjQwNTI5ODc4YjdiYmEyZDVjOGRlMjVjY2FjMTZmNDYwMGNmOWNmZC4uNjU5MmRiNDEzZjc5
NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTE3Niwx
NCArMTc2LDE0IEBAIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6
OmNvbnRleHRDb25uZWN0aW9uKCkKICAgICByZXR1cm4gbV9zZXJ2ZXIgPyBtX3NlcnZlci0+Y29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA6
IG51bGxwdHI7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpv
YkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyV29y
a2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc2VydmVyKTsKICAgICBpZiAobV9zZXJ2ZXIp
CiAgICAgICAgIG1fc2VydmVyLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRl
bnRpZmllciwgKnRoaXMsIG1lc3NhZ2UpOwogfQogCi12b2lkIFNXU2VydmVyV29ya2VyOjpzY3Jp
cHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpCit2b2lkIFNX
U2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIGRv
ZXNIYW5kbGVGZXRjaCkKIHsKICAgICBtX3Nob3VsZFNraXBIYW5kbGVGZXRjaCA9ICFkb2VzSGFu
ZGxlRmV0Y2g7CiAgICAgQVNTRVJUKG1fc2VydmVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lk
IFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZQogICAgICAgICBtX3NlcnZlci0+c2NyaXB0Q29udGV4dFN0YXJ0
ZWQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6
ZGlkRmluaXNoSW5zdGFsbChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1Nl
cnZlcldvcmtlcjo6ZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpCiB7CiAgICAgYXV0byBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgaWYgKHN0YXRl
ID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZv
aWQgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRUZXJtaW5hdGVkKCkKICAgICAgICAgbV9zZXJ2ZXIt
PndvcmtlckNvbnRleHRUZXJtaW5hdGVkKCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBjbGllbnRJZCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xp
ZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBjbGll
bnRJZCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zZXJ2ZXIpOwogICAgIGlmICghbV9zZXJ2ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKaW5kZXggZDg2M2UyNTI0MDlmZDI3NWMwNzM1YzZlMGQ3OWQwODk0YTMzNzc0
ZS4uYmU1NWVlYjFhYTJmZTYyYjYxNzIxZTkzMzEwYjBjYTRkYTEyOWRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aApAQCAtOTUsMTIgKzk1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdFdmVudHM7IH0KICAgICB2b2lkIHNldEhhc1Bl
bmRpbmdFdmVudHMoYm9vbCk7CiAKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgT3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIGJvb2wgZG9lc0hhbmRsZUZl
dGNoKTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI+JiwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpOworICAgIHZvaWQgZGlkRmlu
aXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4mLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlv
bigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihj
b25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRC
eUlkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsK
ICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMm
LCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1h
aW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
QEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5
OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZlbnRzIHsgZmFsc2UgfTsKICAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6Ok5vdFJ1bm5pbmcgfTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPENsaWVudE9y
aWdpbj4gbV9vcmlnaW47CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4g
bV9vcmlnaW47CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAg
ICBib29sIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4gbV93aGVuQWN0aXZhdGVkSGFuZGxlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCmluZGV4IDJkYzhlODc3NmU3MTQxN2Y1Nzc1ODg4YThk
OTIyYTExYzFlNzg3NzAuLjc0NTZiZTQzNjdkMmQzNmJlMTQwM2QzNjQ1M2JlMGFlYzY3Y2I0OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQg
V29ya2xldDo6YWRkTW9kdWxlKGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMU3RyaW5nLCBXb3JrbGV0
T3B0aW9ucyYmIG9wdGlvbnMsCiAKICAgICBmb3IgKGF1dG8mIHByb3h5IDogbV9wcm94aWVzKSB7
CiAgICAgICAgIHByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbcGVu
ZGluZ1Rhc2tzID0gcGVuZGluZ1Rhc2tzLmNvcHlSZWYoKSwgbW9kdWxlVVJMID0gbW9kdWxlVVJM
Lmlzb2xhdGVkQ29weSgpLCBjcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMsIHBlbmRp
bmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRvd25jYXN0PFdvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkuZmV0Y2hBbmRJbnZva2VTY3JpcHQobW9kdWxlVVJMLCBjcmVk
ZW50aWFscywgW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0Fj
dGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpXShPcHRpb25hbDxFeGNlcHRpb24+JiYg
ZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkuZmV0Y2hBbmRJbnZva2VTY3JpcHQobW9kdWxlVVJMLCBjcmVkZW50aWFs
cywgW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGluZ1Rhc2tzKSwgcGVuZGluZ0FjdGl2aXR5
ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpXShzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBl
eGNlcHRpb24pIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Bl
bmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGluZ1Rhc2tzKSwgZXhjZXB0aW9uID0gY3Jvc3NUaHJl
YWRDb3B5KGV4Y2VwdGlvbiksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2
aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy0+YWJvcnQoV1RGTW92ZSgqZXhjZXB0
aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAppbmRleCAyYWUwZTMzODkxZGJjODlmMTQ2ODdkNDE0ODAyYWFhMTJkMGQ4NGZmLi5hODIyMDVh
YmJkN2U3YTgwM2M1Y2FkZWI2NzNiYmY5MWY1NWQzMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBSZWZl
cnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAg
ICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI7CiB9CiAKLXZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0
Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIHNjcmlwdCgpLT5sb2FkQW5kRXZhbHVh
dGVNb2R1bGUobW9kdWxlVVJMLCBjcmVkZW50aWFscywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRl
eCA2NTJhM2I2YmRkOWY1NTE4NDc5YTNmYThlYjlhZjljOWU2ZGRiZDcxLi43ZWUzOGIyNjgzNmVj
YWRjYzg3NzNkYjBmZWViZjczMTQxZWNkYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBmZXRjaEFu
ZEludm9rZVNjcmlwdChjb25zdCBVUkwmLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKKyAgICB2b2lkIGZl
dGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAK
ICAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KICAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRl
OgogCiAgICAgVVJMIG1fdXJsOwogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxh
Z3M7Ci0gICAgT3B0aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdv
cmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYw
MzgxNTI0MjhjNzFhYTgyNy4uYWZjOTAwMWE3NjE2M2I2NWM4ZDNiY2E3M2UxN2Q4OTk2YzMzNmY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgaW50IG1fZXJyb3JDb3VudCB7IDAgfTsKLSAg
ICBPcHRpb25hbDxUZXh0UG9zaXRpb24+IG1fbGFzdEVycm9yUG9zaXRpb247CisgICAgc3RkOjpv
cHRpb25hbDxUZXh0UG9zaXRpb24+IG1fbGFzdEVycm9yUG9zaXRpb247CiAgICAgU3RyaW5nQnVp
bGRlciBtX2Vycm9yTWVzc2FnZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCBkODUyNDRjYTcyMDViMmFmNzBhY2UyOTE1YjQ1YTU1N2M4Njc1MjA5Li4xN2Y2
ZjQ2MGE4M2U5ZjJmNDQ0ZDU4MTQzNjVmYzFkNDQ5NzgyZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBY
TUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1
cmwsCiAgICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jKTsK
IH0KIAotT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJl
VG9TZW5kKCkKK3N0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0
OjpwcmVwYXJlVG9TZW5kKCkKIHsKICAgICAvLyBBIHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIHN0
ZDo6bnVsbG9wdCBtZWFucyB3ZSBzaG91bGQgbm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxk
IHJldHVybiB0aGF0IHZhbHVlIHRvIHRoZSBjYWxsZXIuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1l
YW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFuZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2Vu
ZCBhbGdvcml0aG0uCkBAIC00MzksNyArNDM5LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9p
ZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChPcHRpb25h
bDxTZW5kVHlwZXM+JiYgc2VuZFR5cGUpCitFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVz
dDo6c2VuZChzdGQ6Om9wdGlvbmFsPFNlbmRUeXBlcz4mJiBzZW5kVHlwZSkKIHsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCB1cmwoKS5zdHJpbmcoKSk7CiAgICAgbV91c2VyR2VzdHVyZVRva2VuID0g
VXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAppbmRleCA1NzZhMmVkNDhlYzI1Y2FmMmVjMjdhYTQyYTg5YjMxOTc0
MzFhY2VjLi41Njg3YjhiOTQ2MWQyMDcxOWI5NDE0NjZlOGU2YTljNTJlY2IxNjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5n
JiB1cmwpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG9wZW4oY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCk7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQo
c3RkOjpvcHRpb25hbDxTZW5kVHlwZXM+JiYpOwogICAgIHZvaWQgYWJvcnQoKTsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gb3ZlcnJpZGVNaW1lVHlwZShj
b25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBu
b3RpZnlJc0RvbmUoYm9vbCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lk
Pj4gcHJlcGFyZVRvU2VuZCgpOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+
IHByZXBhcmVUb1NlbmQoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKERvY3VtZW50Jik7
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChjb25zdCBTdHJpbmcmID0geyB9KTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZW5kKEJsb2ImKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3RlZFRoaXM7IC8vIEtlZXAgb2Jq
ZWN0IGFsaXZlIHdoaWxlIGxvYWRpbmcgZXZlbiBpZiB0aGVyZSBpcyBubyBsb25nZXIgYSBKUyB3
cmFwcGVyLgogICAgICAgICBSZWY8VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyOwogICAgIH07Ci0g
ICAgT3B0aW9uYWw8TG9hZGluZ0FjdGl2aXR5PiBtX2xvYWRpbmdBY3Rpdml0eTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExvYWRpbmdBY3Rpdml0eT4gbV9sb2FkaW5nQWN0aXZpdHk7CiAKICAgICBTdHJp
bmcgbV9yZXNwb25zZUVuY29kaW5nOwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIE1vbm90b25pY1RpbWUgbV9zZW5kaW5nVGltZTsKIAotICAgIE9wdGlvbmFsPEV4Y2VwdGlv
bkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+
IG1fZXhjZXB0aW9uQ29kZTsKICAgICBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2Vz
dHVyZVRva2VuOwogICAgIGJvb2wgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaApp
bmRleCAwMjdkZGUzOGUwOTU3Y2M0MWNiODZiNjYyYmM3Y2ZmYzM0MmQzZDU1Li4xY2RhOTdjMTc2
NTA2ZDk1ZDZiMjExZTEyMTE2ZmUyNjg3ZjFkYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xOTAsNiArMTkwLDYgQEAgcHJpdmF0ZToK
IHhtbERvY1B0ciB4bWxEb2NQdHJGb3JTdHJpbmcoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogI2VuZGlmCiAKLU9wdGlvbmFs
PEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJik7
CitzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCAxMTVhYmIxYmJlNDJiOThiOWU0MGI3YjEzN2FlZDQ2YzRmM2Y3ZDI1Li4xZDhkYWRiZTQ2NzYx
OTJmNjVhZThlMDhjNTY4MWM2YjBjY2U5NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xNDU2LDcgKzE0
NTYsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmRGcmFnbWVudFNvdXJjZShjb25z
dCBTdHJpbmcmIGNodW5rKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci11c2luZyBBdHRyaWJ1dGVQYXJzZVN0YXRlID0gT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4+OwordXNpbmcgQXR0cmlidXRlUGFyc2VTdGF0ZSA9IHN0ZDo6b3B0aW9uYWw8SGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4+OwogCiBzdGF0aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVtZW50
TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29u
c3QgeG1sQ2hhciogLyp4bWxQcmVmaXgqLywgY29uc3QgeG1sQ2hhciogLyp4bWxVUkkqLywgaW50
IC8qbnVtTmFtZXNwYWNlcyovLCBjb25zdCB4bWxDaGFyKiogLypuYW1lc3BhY2VzKi8sIGludCBu
dW1BdHRyaWJ1dGVzLCBpbnQgLypudW1EZWZhdWx0ZWQqLywgY29uc3QgeG1sQ2hhcioqIGxpYnht
bEF0dHJpYnV0ZXMpCiB7CkBAIC0xNDc5LDcgKzE0NzksNyBAQCBzdGF0aWMgdm9pZCBhdHRyaWJ1
dGVzU3RhcnRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHht
bExvYwogICAgIH0KIH0KIAotT3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IHBhcnNl
QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4+IHBhcnNlQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz48YXR0cnMg
IiArIHN0cmluZyArICIgLz4iOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0FjdGlv
bnMuaCBiL1NvdXJjZS9XZWJEcml2ZXIvQWN0aW9ucy5oCmluZGV4IDMwMjRmMmQwMGNkZWY2YzE0
YzJjNzM4YzRkMTI2ZmExYjRhODcwY2IuLmJhYmI1NGVmMjI2NTZhN2UwNjllYzk3MDAwZWZhZTUy
NGQzNWExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQWN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvQWN0aW9ucy5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBJbnB1dFNv
dXJjZSB7CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgS2V5LCBQb2ludGVyLCBXaGVlbCB9
OwogCiAgICAgVHlwZSB0eXBlOwotICAgIE9wdGlvbmFsPFBvaW50ZXJUeXBlPiBwb2ludGVyVHlw
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJUeXBlPiBwb2ludGVyVHlwZTsKIH07CiAKIHN0
cnVjdCBQb2ludGVyUGFyYW1ldGVycyB7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBQb2ludGVy
T3JpZ2luIHsKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBWaWV3cG9ydCwgUG9pbnRlciwgRWxlbWVu
dCB9OwogCiAgICAgVHlwZSB0eXBlOwotICAgIE9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElEOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQ7CiB9OwogCiBzdHJ1Y3QgQWN0aW9u
IHsKQEAgLTY0LDE3ICs2NCwxNyBAQCBzdHJ1Y3QgQWN0aW9uIHsKICAgICBTdHJpbmcgaWQ7CiAg
ICAgVHlwZSB0eXBlOwogICAgIFN1YnR5cGUgc3VidHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gZHVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZHVyYXRpb247CiAKLSAg
ICBPcHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5cGU7Ci0gICAgT3B0aW9uYWw8TW91c2VC
dXR0b24+IGJ1dHRvbjsKLSAgICBPcHRpb25hbDxQb2ludGVyT3JpZ2luPiBvcmlnaW47Ci0gICAg
T3B0aW9uYWw8aW50NjRfdD4geDsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiB5OwotICAgIE9wdGlv
bmFsPGludDY0X3Q+IGRlbHRhWDsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7CisgICAg
c3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5cGU7CisgICAgc3RkOjpvcHRpb25h
bDxNb3VzZUJ1dHRvbj4gYnV0dG9uOworICAgIHN0ZDo6b3B0aW9uYWw8UG9pbnRlck9yaWdpbj4g
b3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4geDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+IHk7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBkZWx0YVg7CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBkZWx0YVk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGtleTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4ga2V5OwogfTsKIAogfSAvLyBXZWJEcml2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2ViRHJp
dmVyL0NhcGFiaWxpdGllcy5oCmluZGV4IDBiNmYzYjM4N2JiODI5YzFiNGM2MjNmMWE3MDU1ZTFh
YzFkMjhiMjQuLjc1Y2NiYTFhNTVkMWY2MzNkNTdhOWI3YzA4MzA5YzRjZWQ1ZjlhMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkRy
aXZlci9DYXBhYmlsaXRpZXMuaApAQCAtMzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkRyaXZl
ciB7CiAKIHN0cnVjdCBUaW1lb3V0cyB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzY3JpcHQ7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiBwYWdlTG9hZDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGltcGxp
Y2l0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzY3JpcHQ7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHBhZ2VMb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbXBsaWNpdDsK
IH07CiAKIGVudW0gY2xhc3MgUGFnZUxvYWRTdHJhdGVneSB7CkBAIC01NSwzNyArNTUsMzcgQEAg
ZW51bSBjbGFzcyBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvciB7CiAKIHN0cnVjdCBQcm94eSB7CiAg
ICAgU3RyaW5nIHR5cGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBhdXRvY29uZmlnVVJMOwotICAg
IE9wdGlvbmFsPFVSTD4gZnRwVVJMOwotICAgIE9wdGlvbmFsPFVSTD4gaHR0cFVSTDsKLSAgICBP
cHRpb25hbDxVUkw+IGh0dHBzVVJMOwotICAgIE9wdGlvbmFsPFVSTD4gc29ja3NVUkw7Ci0gICAg
T3B0aW9uYWw8dWludDhfdD4gc29ja3NWZXJzaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBhdXRvY29uZmlnVVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBmdHBVUkw7CisgICAgc3Rk
OjpvcHRpb25hbDxVUkw+IGh0dHBVUkw7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzVVJM
OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBzb2Nrc1VSTDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ4X3Q+IHNvY2tzVmVyc2lvbjsKICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmVBZGRyZXNzTGlz
dDsKIH07CiAKIHN0cnVjdCBDYXBhYmlsaXRpZXMgewotICAgIE9wdGlvbmFsPFN0cmluZz4gYnJv
d3Nlck5hbWU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBicm93c2VyVmVyc2lvbjsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsKLSAgICBPcHRpb25hbDxib29sPiBhY2NlcHRJbnNl
Y3VyZUNlcnRzOwotICAgIE9wdGlvbmFsPGJvb2w+IHN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHk7
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc2V0V2luZG93UmVjdDsKLSAgICBPcHRpb25hbDxUaW1lb3V0
cz4gdGltZW91dHM7Ci0gICAgT3B0aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gcGFnZUxvYWRTdHJh
dGVneTsKLSAgICBPcHRpb25hbDxVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I7Ci0gICAgT3B0aW9uYWw8UHJveHk+IHByb3h5OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBicm93c2VyTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYnJvd3Nl
clZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtTmFtZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGFjY2VwdEluc2VjdXJlQ2VydHM7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc2V0V2luZG93UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVvdXRzPiB0aW1lb3V0czsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+IHBhZ2VMb2FkU3RyYXRlZ3k7Cisg
ICAgc3RkOjpvcHRpb25hbDxVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcj4gdW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I7CisgICAgc3RkOjpvcHRpb25hbDxQcm94eT4gcHJveHk7CiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBicm93c2VyQmluYXJ5
OwotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBicm93c2VyQXJndW1lbnRzOwotICAgIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4gY2VydGlmaWNhdGVzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBicm93c2VyQmluYXJ5OworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFN0cmluZz4+IGJyb3dzZXJBcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4+IGNlcnRpZmljYXRlczsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdUSykKLSAgICBPcHRpb25hbDxib29sPiB1c2VPdmVybGF5U2Nyb2xsYmFy
czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVzZU92ZXJsYXlTY3JvbGxiYXJzOwogI2VuZGlm
CiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQotICAgIE9wdGlvbmFsPFN0cmluZz4g
dGFyZ2V0QWRkcjsKLSAgICBPcHRpb25hbDxpbnQ+IHRhcmdldFBvcnQ7CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHRhcmdldEFkZHI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRhcmdldFBv
cnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDA4MzFh
ZjcxMjFhMWY5MGIwN2M2YzhjYWM0ODE3NmQ1OTA1YTI2NDMuLjM1M2RhMGMzZjIzMzMzM2JkNjM0
NTI2ZjhjOGRiMzQyOTY1ZmQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBlbnVtIFByb3RvY29sRXJyb3JDb2RlIHsKICAgICBTZXJ2ZXJFcnJvciA9
IC0zMjAwMAogfTsKIAotQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6
VmFsdWU+JiYgcmVzdWx0LCBPcHRpb25hbDxFcnJvckNvZGU+IGVycm9yQ29kZSkKK0NvbW1hbmRS
ZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpv
cHRpb25hbDxFcnJvckNvZGU+IGVycm9yQ29kZSkKICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29k
ZSkKIHsKICAgICBpZiAoIW1fZXJyb3JDb2RlKSB7CkBAIC0xMTksNyArMTE5LDcgQEAgQ29tbWFu
ZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBPcHRp
b25hbDxFcnJvckNvZGU+IGUKICAgICB9CiB9CiAKLUNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1
bHQoRXJyb3JDb2RlIGVycm9yQ29kZSwgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UpCitD
b21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KEVycm9yQ29kZSBlcnJvckNvZGUsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UpCiAgICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUp
CiAgICAgLCBtX2Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5oCmluZGV4IDViNDM1NWQ3MzUyZjkxNjQ4YmZjMjQ1ZDgwNjUwMTJiYWI2ODk0YWQuLjI5
ZGRhNzU5MzA5ZTYxMjdlNjJkNzFkMDQ5N2ZiMTU2OTM1NDgxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvbW1h
bmRSZXN1bHQoV1RGTW92ZShyZXN1bHQpLCBDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25v
d25FcnJvcik7CiAgICAgfQogCi0gICAgc3RhdGljIENvbW1hbmRSZXN1bHQgZmFpbChFcnJvckNv
ZGUgZXJyb3JDb2RlLCBPcHRpb25hbDxTdHJpbmc+IGVycm9yTWVzc2FnZSA9IHN0ZDo6bnVsbG9w
dCkKKyAgICBzdGF0aWMgQ29tbWFuZFJlc3VsdCBmYWlsKEVycm9yQ29kZSBlcnJvckNvZGUsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQpCiAgICAgewog
ICAgICAgICByZXR1cm4gQ29tbWFuZFJlc3VsdChlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAg
ICAgfQpAQCAtODIsMTYgKzgyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXJyb3IoKSBjb25z
dCB7IHJldHVybiAhIW1fZXJyb3JDb2RlOyB9CiAgICAgRXJyb3JDb2RlIGVycm9yQ29kZSgpIGNv
bnN0IHsgQVNTRVJUKGlzRXJyb3IoKSk7IHJldHVybiBtX2Vycm9yQ29kZS52YWx1ZSgpOyB9CiAg
ICAgU3RyaW5nIGVycm9yU3RyaW5nKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJv
ck1lc3NhZ2UoKSBjb25zdCB7IEFTU0VSVChpc0Vycm9yKCkpOyByZXR1cm4gbV9lcnJvck1lc3Nh
Z2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JNZXNzYWdlKCkgY29uc3QgeyBB
U1NFUlQoaXNFcnJvcigpKTsgcmV0dXJuIG1fZXJyb3JNZXNzYWdlOyB9CiAgICAgY29uc3QgUmVm
UHRyPEpTT046Ok9iamVjdD4mIGFkZGl0aW9uYWxFcnJvckRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yQWRkaXRpb25hbERhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb21tYW5k
UmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiwgT3B0aW9uYWw8RXJyb3JDb2RlPiA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgZXhwbGljaXQgQ29tbWFuZFJlc3VsdChFcnJvckNvZGUsIE9wdGlvbmFs
PFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0IENvbW1hbmRSZXN1bHQoUmVm
UHRyPEpTT046OlZhbHVlPiYmLCBzdGQ6Om9wdGlvbmFsPEVycm9yQ29kZT4gPSBzdGQ6Om51bGxv
cHQpOworICAgIGV4cGxpY2l0IENvbW1hbmRSZXN1bHQoRXJyb3JDb2RlLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiBtX3Jl
c3VsdDsKLSAgICBPcHRpb25hbDxFcnJvckNvZGU+IG1fZXJyb3JDb2RlOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gbV9lcnJvck1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvckNvZGU+IG1f
ZXJyb3JDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2Vycm9yTWVzc2FnZTsKICAg
ICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBtX2Vycm9yQWRkaXRpb25hbERhdGE7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0hUVFBTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJEcml2ZXIv
SFRUUFNlcnZlci5oCmluZGV4IDRiNGEyZTIyN2YzNDg5NzZlZmI5NmE3OGI5YzA1MWI2NWM3Mzc4
MzEuLjg0NzMyMzY1MDA0YTc2MTBjZGZiMTEzMGNkYzg4ZTJkN2MyZGJiYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJEcml2ZXIvSFRUUFNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvSFRU
UFNlcnZlci5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklELCBWZWN0b3I8dWlu
dDhfdD4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludCYsIENvbm5lY3Rpb25JRCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxDb25uZWN0aW9u
SUQ+IG1fY2xpZW50OworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudDsK
ICAgICBIVFRQUGFyc2VyIG1fcGFyc2VyOwogI2VuZGlmCiB9OwpAQCAtODksMTIgKzg5LDEyIEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBIVFRQU2VydmVyKEhUVFBSZXF1ZXN0SGFuZGxlciYpOwog
ICAgIH5IVFRQU2VydmVyKCkgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBsaXN0ZW4oY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCk7CisgICAgYm9vbCBsaXN0ZW4oY29u
c3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBob3N0LCB1bnNpZ25lZCBwb3J0KTsKICAgICB2b2lk
IGRpc2Nvbm5lY3QoKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJW
RVIpCi0gICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludCYsIFBsYXRmb3JtU29ja2V0VHlwZSkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxDb25uZWN0aW9uSUQ+IGRvQWNjZXB0KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
JiwgUGxhdGZvcm1Tb2NrZXRUeXBlKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVN0YXR1cyhS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCwgUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ6Okxpc3RlbmVyOjpTdGF0dXMpIGZpbmFsOwogI2VuZGlmCiAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0UoSU5TUEVDVE9SX1NP
Q0tFVF9TRVJWRVIpCi0gICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX3NlcnZlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPENvbm5lY3Rpb25JRD4gbV9zZXJ2ZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCmluZGV4IDIwZmM5ODdhNGE4YmY3YmY0YTFlY2IwODQ5YTNkYjYyMzU3YjE4OTUu
Ljc4NGYyMWYzMDA0OGJiZmVlZTRjMTk4ZmQ2MzMyMDY3MDE0Y2JmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9u
LmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIFNlc3Npb246OmlzQ29ubmVjdGVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9ob3N0LT5pc0Nvbm5lY3RlZCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBmaXJzdFdpbmRvd0hhbmRsZUluUmVzdWx0KEpTT046OlZhbHVlJiByZXN1bHQpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZpcnN0V2luZG93SGFuZGxlSW5SZXN1bHQoSlNP
Tjo6VmFsdWUmIHJlc3VsdCkKIHsKICAgICBhdXRvIGhhbmRsZXMgPSByZXN1bHQuYXNBcnJheSgp
OwogICAgIGlmIChoYW5kbGVzICYmIGhhbmRsZXMtPmxlbmd0aCgpKSB7CkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBTZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dCwgRnVuY3Rpb248dm8KICAgICB9KTsKIH0KIAotT3B0aW9uYWw8U3Ry
aW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkgY29uc3QKIHsKICAg
ICBpZiAoIWNhcGFiaWxpdGllcygpLnBhZ2VMb2FkU3RyYXRlZ3kpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBTZXNzaW9uOjphY2NlcHRBbmRO
b3RpZnlBbGVydChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb24K
IHZvaWQgU2Vzc2lvbjo6cmVwb3J0VW5leHBlY3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lkIChD
b21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGdldEFsZXJ0VGV4
dChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFu
ZFJlc3VsdCYmIHJlc3VsdCkgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGFsZXJ0VGV4dDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFsZXJ0VGV4dDsKICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBhdXRvIHZhbHVlU3RyaW5nID0gcmVzdWx0
LnJlc3VsdCgpLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCEhdmFsdWVTdHJpbmcpCkBA
IC02MjUsNyArNjI1LDcgQEAgdm9pZCBTZXNzaW9uOjpnZXRXaW5kb3dIYW5kbGVzKEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAot
dm9pZCBTZXNzaW9uOjpuZXdXaW5kb3coT3B0aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vz
c2lvbjo6bmV3V2luZG93KHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0eXBlSGludCwgRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
IW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6Ok5vU3VjaFdpbmRv
dykpOwpAQCAtODMxLDcgKzgzMSw3IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0V2luZG93UmVjdChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7
CiB9CiAKLXZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChPcHRpb25hbDxkb3VibGU+IHgsIE9w
dGlvbmFsPGRvdWJsZT4geSwgT3B0aW9uYWw8ZG91YmxlPiB3aWR0aCwgT3B0aW9uYWw8ZG91Ymxl
PiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+
IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gd2lkdGgs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3RvcGxldmVsQnJvd3Np
bmdDb250ZXh0KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZh
aWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpOb1N1Y2hXaW5kb3cpKTsKQEAgLTEwMDMsNyAr
MTAwMyw3IEBAIFN0cmluZyBTZXNzaW9uOjpleHRyYWN0RWxlbWVudElEKEpTT046OlZhbHVlJiB2
YWx1ZSkKICAgICByZXR1cm4gZWxlbWVudElEOwogfQogCi12b2lkIFNlc3Npb246OmNvbXB1dGVF
bGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVudExh
eW91dE9wdGlvbj4gb3B0aW9ucywgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8UmVjdD4mJiwgT3B0
aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMsIEZ1
bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVjdD4mJiwgc3RkOjpvcHRpb25hbDxQb2ludD4m
JiwgYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAKQEAgLTEw
MjUsOCArMTAyNSw4IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3Qg
U3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1lbnRYOwotICAgICAg
ICBPcHRpb25hbDxpbnQ+IGVsZW1lbnRZOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxl
bWVudFg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbGVtZW50WTsKICAgICAgICAgYXV0
byBlbGVtZW50UG9zaXRpb24gPSByZWN0T2JqZWN0LT5nZXRPYmplY3QoIm9yaWdpbiJfcyk7CiAg
ICAgICAgIGlmIChlbGVtZW50UG9zaXRpb24pIHsKICAgICAgICAgICAgIGVsZW1lbnRYID0gZWxl
bWVudFBvc2l0aW9uLT5nZXRJbnRlZ2VyKCJ4Il9zKTsKQEAgLTEwMzcsOCArMTAzNyw4IEBAIHZv
aWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBPcHRpb25hbDxpbnQ+IGVsZW1lbnRXaWR0aDsKLSAgICAgICAgT3B0aW9uYWw8aW50
PiBlbGVtZW50SGVpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudFdpZHRo
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZWxlbWVudEhlaWdodDsKICAgICAgICAgYXV0
byBlbGVtZW50U2l6ZSA9IHJlY3RPYmplY3QtPmdldE9iamVjdCgic2l6ZSJfcyk7CiAgICAgICAg
IGlmIChlbGVtZW50U2l6ZSkgewogICAgICAgICAgICAgZWxlbWVudFdpZHRoID0gZWxlbWVudFNp
emUtPmdldEludGVnZXIoIndpZHRoIl9zKTsKQEAgLTEzNTksNyArMTM1OSw3IEBAIHZvaWQgU2Vz
c2lvbjo6Z2V0RWxlbWVudFJlY3QoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZv
aWQgKENvbW1hbmRSZXN1CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbXB1dGVF
bGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgeyB9LCBbcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8UmVjdD4mJiByZWN0
LCBPcHRpb25hbDxQb2ludD4mJiwgYm9vbCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikg
eworICAgICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIHsgfSwgW3Byb3RlY3Rl
ZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0
ZDo6b3B0aW9uYWw8UmVjdD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmLCBib29sLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoIXJlY3QgfHwg
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0
OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY3
Miw3ICsxNjcyLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICB9KTsKIH0KIAotT3B0
aW9uYWw8U2Vzc2lvbjo6RmlsZVVwbG9hZFR5cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElzRmls
ZVVwbG9hZFJlc3VsdChjb25zdCBSZWZQdHI8SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkKK3N0
ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVwbG9hZFR5cGU+IFNlc3Npb246OnBhcnNlRWxlbWVu
dElzRmlsZVVwbG9hZFJlc3VsdChjb25zdCBSZWZQdHI8SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1
ZSkKIHsKICAgICBpZiAoIXJlc3VsdFZhbHVlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTczMCw3ICsxNzMwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50Q2xpY2soY29uc3Qg
U3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBPcHRpb25TZXQ8RWxl
bWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IHsgRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGlu
YXRlcyB9OwotICAgICAgICAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRp
b25zLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgZWxlbWVudElELCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxSZWN0PiYmIHJlY3QsIE9wdGlv
bmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBpc09ic2N1cmVkLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXB1dGVFbGVtZW50TGF5
b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRp
b25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBi
b29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGlmICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudENsZWFyKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE9wdGlvblNl
dDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpT
Y3JvbGxJbnRvVmlld0lmTmVlZGVkIH07Ci0gICAgICAgICAgICBjb21wdXRlRWxlbWVudExheW91
dChlbGVtZW50SUQsIG9wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBlbGVtZW50SUQsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFJl
Y3Q+JiYgcmVjdCwgT3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBib29sLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXB1dGVFbGVt
ZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGVsZW1l
bnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3Rk
OjpvcHRpb25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2Vu
dGVyLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTUzLDEzICsyMTUzLDEzIEBAIHZvaWQgU2Vz
c2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJp
bmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHN0aWNreSBtb2Rp
ZmllcnMgaWYgbmVlZGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJz
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9k
aWZpZXI6OlNoaWZ0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5h
cHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0
LCBPcHRpb25hbDxTdHJpbmc+KCJTaGlmdCJfcykgfSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlS
ZWxlYXNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPigiU2hpZnQiX3MpIH0p
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0aWNreU1vZGlmaWVycyAmIEtleU1vZGlm
aWVyOjpDb250cm9sKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5h
cHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0
LCBPcHRpb25hbDxTdHJpbmc+KCJDb250cm9sIl9zKSB9KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlcmFjdGlvbnMuYXBwZW5kKHsgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Oktl
eVJlbGVhc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KCJDb250cm9sIl9z
KSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGlja3lNb2RpZmllcnMgJiBLZXlN
b2RpZmllcjo6QWx0ZXJuYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0
aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpu
dWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJBbHRlcm5hdGUiX3MpIH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIkFs
dGVybmF0ZSJfcykgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZp
ZXJzICYgS2V5TW9kaWZpZXI6Ok1ldGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBz
dGQ6Om51bGxvcHQsIE9wdGlvbmFsPFN0cmluZz4oIk1ldGEiX3MpIH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4oIk1l
dGEiX3MpIH0pOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAg
cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKFdURk1vdmUoaW50ZXJhY3Rpb25zKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMjM4MCw3ICsyMzgwLDcgQEAgdm9pZCBTZXNzaW9u
OjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoVmVjdG9yPEtleWJvYXJkSW50ZXJhY3Rpb24+
JiYgaW50ZXJhY3QKICAgICB9KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNlc3Npb246OkNvb2tp
ZT4gcGFyc2VBdXRvbWF0aW9uQ29va2llKGNvbnN0IEpTT046Ok9iamVjdCYgY29va2llT2JqZWN0
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6Q29va2llPiBwYXJzZUF1dG9tYXRpb25D
b29raWUoY29uc3QgSlNPTjo6T2JqZWN0JiBjb29raWVPYmplY3QpCiB7CiAgICAgU2Vzc2lvbjo6
Q29va2llIGNvb2tpZTsKIApAQCAtMjU5OCw3ICsyNTk4LDcgQEAgdm9pZCBTZXNzaW9uOjpkZWxl
dGVBbGxDb29raWVzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlv
bkhhbmQKICAgICB9KTsKIH0KIAotSW5wdXRTb3VyY2UmIFNlc3Npb246OmdldE9yQ3JlYXRlSW5w
dXRTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgSW5wdXRTb3VyY2U6OlR5cGUgdHlwZSwgT3B0aW9u
YWw8UG9pbnRlclR5cGU+IHBvaW50ZXJUeXBlKQorSW5wdXRTb3VyY2UmIFNlc3Npb246OmdldE9y
Q3JlYXRlSW5wdXRTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgSW5wdXRTb3VyY2U6OlR5cGUgdHlw
ZSwgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5cGUpCiB7CiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2FjdGl2ZUlucHV0U291cmNlcy5hZGQoaWQsIElucHV0U291cmNlKCkpOwog
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTI5MjQsNyArMjkyNCw3IEBAIHZvaWQg
U2Vzc2lvbjo6c2VuZEFsZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+CiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vzc2lvbjo6dGFrZVNjcmVl
bnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQsIE9wdGlvbmFsPGJvb2w+IHNjcm9sbElu
dG9WaWV3LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
ZWxlbWVudElELCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNjcm9sbEludG9WaWV3LCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgo
ZWxlbWVudElEICYmICFtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQpIHx8ICghZWxlbWVudElEICYm
ICFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6Tm9TdWNoV2lu
ZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5oCmluZGV4IDQ1ZDIwM2Q2NmRiMmMyODEwZmMyODY0ODhjNTY2ODBh
NzIzZWY5NTYuLmFmNjUxNTY5MGFmNDU5NmNhZWZmNDk1ODhiNTI0YzE0OTI2ZDNlYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbi5oCkBAIC02MiwxNSArNjIsMTUgQEAgcHVibGljOgogICAgIHN0cnVjdCBDb29raWUg
ewogICAgICAgICBTdHJpbmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHBhdGg7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZG9tYWluOwot
ICAgICAgICBPcHRpb25hbDxib29sPiBzZWN1cmU7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGh0
dHBPbmx5OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZXhwaXJ5OwotICAgICAgICBPcHRp
b25hbDxTdHJpbmc+IHNhbWVTaXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGF0
aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRvbWFpbjsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBzZWN1cmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaHR0cE9u
bHk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGV4cGlyeTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbWVTaXRlOwogICAgIH07CiAKLSAgICBJbnB1dFNvdXJjZSYg
Z2V0T3JDcmVhdGVJbnB1dFNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBJbnB1dFNvdXJjZTo6VHlw
ZSwgT3B0aW9uYWw8UG9pbnRlclR5cGU+KTsKKyAgICBJbnB1dFNvdXJjZSYgZ2V0T3JDcmVhdGVJ
bnB1dFNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBJbnB1dFNvdXJjZTo6VHlwZSwgc3RkOjpvcHRp
b25hbDxQb2ludGVyVHlwZT4pOwogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxl
dGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBjcmVhdGVU
b3BMZXZlbEJyb3dzaW5nQ29udGV4dChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
KTsKQEAgLTg4LDExICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZVdpbmRvdyhGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHN3aXRjaFRvV2luZG93
KGNvbnN0IFN0cmluZyYgd2luZG93SGFuZGxlLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0
JiYpPiYmKTsKICAgICB2b2lkIGdldFdpbmRvd0hhbmRsZXMoRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9pZCBuZXdXaW5kb3coT3B0aW9uYWw8U3RyaW5nPiB0eXBl
SGludCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBuZXdX
aW5kb3coc3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50LCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHN3aXRjaFRvRnJhbWUoUmVmUHRyPEpTT046OlZh
bHVlPiYmLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHN3
aXRjaFRvUGFyZW50RnJhbWUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAg
ICAgdm9pZCBnZXRXaW5kb3dSZWN0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYp
OwotICAgIHZvaWQgc2V0V2luZG93UmVjdChPcHRpb25hbDxkb3VibGU+IHgsIE9wdGlvbmFsPGRv
dWJsZT4geSwgT3B0aW9uYWw8ZG91YmxlPiB3aWR0aCwgT3B0aW9uYWw8ZG91YmxlPiBoZWlnaHQs
IEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgc2V0V2luZG93
UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlaWdodCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBtYXhpbWl6ZVdp
bmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIG1pbmlt
aXplV2luZG93KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQg
ZnVsbHNjcmVlbldpbmRvdyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAg
LTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY2NlcHRBbGVydChGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGdldEFsZXJ0VGV4dChGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIHNlbmRBbGVydFRleHQoY29u
c3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9p
ZCB0YWtlU2NyZWVuc2hvdChPcHRpb25hbDxTdHJpbmc+IGVsZW1lbnRJRCwgT3B0aW9uYWw8Ym9v
bD4gc2Nyb2xsSW50b1ZpZXcsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwor
ICAgIHZvaWQgdGFrZVNjcmVlbnNob3Qoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVsZW1lbnRJRCwg
c3RkOjpvcHRpb25hbDxib29sPiBzY3JvbGxJbnRvVmlldywgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgU2Vzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8
U2Vzc2lvbkhvc3Q+JiYpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmKTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gcGFnZUxvYWRTdHJhdGVneVN0cmlu
ZygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwYWdlTG9hZFN0cmF0ZWd5U3Ry
aW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQgaGFuZGxlVW5leHBlY3RlZEFsZXJ0T3Bl
bihGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKQEAgLTE3MCwxMSArMTcwLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIFNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSAxIDw8IDAsCiAg
ICAgICAgIFVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgPSAxIDw8IDEsCiAgICAgfTsKLSAgICB2b2lk
IGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8
RWxlbWVudExheW91dE9wdGlvbj4sIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFJlY3Q+JiYsIE9w
dGlvbmFsPFBvaW50PiYmLCBib29sLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmKT4mJik7CisgICAg
dm9pZCBjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9u
U2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+LCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJl
Y3Q+JiYsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYsIGJvb2wsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYpPiYmKTsKIAogICAgIHZvaWQgZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgZW51bSBj
bGFzcyBGaWxlVXBsb2FkVHlwZSB7IFNpbmdsZSwgTXVsdGlwbGUgfTsKLSAgICBPcHRpb25hbDxG
aWxlVXBsb2FkVHlwZT4gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KGNvbnN0IFJlZlB0
cjxKU09OOjpWYWx1ZT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZpbGVVcGxvYWRUeXBlPiBwYXJz
ZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQoY29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYpOwog
ICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBzZXRJbnB1dEZpbGVV
cGxvYWRGaWxlcyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIG11bHRpcGxlLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2
b2lkIGRpZFNldElucHV0RmlsZVVwbG9hZEZpbGVzKGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE4
NSw4ICsxODUsOCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgS2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGUgeyBLZXlQcmVzcywgS2V5UmVsZWFzZSwgSW5zZXJ0QnlLZXkgfTsKICAgICBzdHJ1Y3Qg
S2V5Ym9hcmRJbnRlcmFjdGlvbiB7CiAgICAgICAgIEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlIHR5
cGUgeyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXkgfTsKLSAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiB0ZXh0OwotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGtleTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBrZXk7CiAgICAgfTsKICAgICBlbnVtIEtleU1vZGlmaWVyIHsKICAgICAgICAgTm9uZSA9
IDAsCkBAIC0yMDMsOCArMjAzLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBUeXBlIHR5cGU7CiAg
ICAgICAgIFN0cmluZyBzdWJ0eXBlOwotICAgICAgICBPcHRpb25hbDxNb3VzZUJ1dHRvbj4gcHJl
c3NlZEJ1dHRvbjsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVzc2VkS2V5OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2VkQnV0dG9uOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gcHJlc3NlZEtleTsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IHBy
ZXNzZWRWaXJ0dWFsS2V5czsKICAgICB9OwogICAgIElucHV0U291cmNlU3RhdGUmIGlucHV0U291
cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCk7CkBAIC0yMTMsOSArMjEzLDkgQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgbV9zY3JpcHRUaW1lb3V0OwogICAgIGRvdWJsZSBtX3BhZ2VMb2FkVGltZW91
dDsKICAgICBkb3VibGUgbV9pbXBsaWNpdFdhaXRUaW1lb3V0OwotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY3Vy
cmVudEJyb3dzaW5nQ29udGV4dDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fY3VycmVudFBhcmVu
dEJyb3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV90b3BsZXZlbEJy
b3dzaW5nQ29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9jdXJyZW50QnJvd3Np
bmdDb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2N1cnJlbnRQYXJlbnRCcm93
c2luZ0NvbnRleHQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIElucHV0U291cmNlPiBtX2FjdGl2ZUlu
cHV0U291cmNlczsKICAgICBIYXNoTWFwPFN0cmluZywgSW5wdXRTb3VyY2VTdGF0ZT4gbV9pbnB1
dFN0YXRlVGFibGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9z
dC5oIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCmluZGV4IGFmYzBiYWE4MGRjZWMw
NmM1ZDA2OTE4MWM4Y2JmMTJmZDY3OWE2OGIuLjY4OGYzZjljZmM4NjE1MDc3ZjQ5NDUyYWVkYWFm
YzBmMWY5M2M3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmgKQEAgLTY1LDggKzY1LDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uSUQ7IH0KICAgICBjb25zdCBDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAKLSAgICB2b2lkIGNvbm5lY3RUb0Jyb3dzZXIoRnVu
Y3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYpOwotICAgIHZvaWQgc3RhcnRB
dXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4m
Jik7CisgICAgdm9pZCBjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBlcnJvcik+JiYpOworICAgIHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihG
dW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIHN0
cnVjdCBDb21tYW5kUmVzcG9uc2UgewogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiByZXNw
b25zZU9iamVjdDsKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoR0xJQikKICAg
ICBzdGF0aWMgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzJiBtZXNzYWdl
SGFuZGxlcnMoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwotICAgIHZvaWQgbGF1
bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJik7Cisg
ICAgdm9pZCBsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBlcnJvcik+JiYpOwogICAgIHZvaWQgY29ubmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8
Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJik7CiAgICAgYm9vbCBtYXRjaENhcGFiaWxpdGll
cyhHVmFyaWFudCopOwogICAgIGJvb2wgYnVpbGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJpYW50
QnVpbGRlciopIGNvbnN0OwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWNlaXZlZFNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKICAgICB2
b2lkIHJlY2VpdmVkU3RhcnRBdXRvbWF0aW9uU2Vzc2lvblJldHVybihjb25zdCBzdHJ1Y3QgRXZl
bnQmKTsKIAotICAgIE9wdGlvbmFsPFZlY3RvcjxUYXJnZXQ+PiBwYXJzZVRhcmdldExpc3QoY29u
c3Qgc3RydWN0IEV2ZW50Jik7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VGFyZ2V0Pj4gcGFy
c2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVudCYpOwogICAgIHZvaWQgc2V0VGFyZ2V0TGlz
dCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYpOwogI2VuZGlmCiAKQEAg
LTExOCwxNSArMTE4LDE1IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxsb25nLCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzcG9uc2UmJik+PiBtX2NvbW1hbmRSZXF1ZXN0czsKIAogI2lmIFVTRShH
TElCKQotICAgIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIE9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0
U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
R1JlZlB0cjxHU3VicHJvY2Vzcz4gbV9icm93c2VyOwogICAgIFJlZlB0cjxTb2NrZXRDb25uZWN0
aW9uPiBtX3NvY2tldENvbm5lY3Rpb247CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2Fu
Y2VsbGFibGU7CiAjZWxpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5n
IG1fdGFyZ2V0SXA7CiAgICAgdWludDE2X3QgbV90YXJnZXRQb3J0IHsgMCB9OwotICAgIEZ1bmN0
aW9uPHZvaWQoYm9vbCwgT3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlv
bkhhbmRsZXI7Ci0gICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50
SUQ7CisgICAgRnVuY3Rpb248dm9pZChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBtX3N0
YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dl
YkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDQ2OGM4ODk3MzMwNWFhNTQyZTFhODI2ZTkwNDIzNjVm
NmViZGNmMDMuLjNiNTQ1MTM0MzAyMDM1ZTgxMTk2MzlhYjBjYTRiMjJkNjk3NDM1NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNl
L1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMg
dm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGNvbnN0IGNoYXIqIHByb2dyYW1OYW1lKQogaW50IFdl
YkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgU3RyaW5n
IHBvcnRTdHJpbmc7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBob3N0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBob3N0OwogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBT
dHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBn
ZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQpAQCAtMjEzLDcgKzIxMyw3IEBAIGNvbnN0
IFdlYkRyaXZlclNlcnZpY2U6OkNvbW1hbmQgV2ViRHJpdmVyU2VydmljZTo6c19jb21tYW5kc1td
ID0gewogICAgIHsgSFRUUE1ldGhvZDo6R2V0LCAiL3Nlc3Npb24vJHNlc3Npb25JZC9lbGVtZW50
LyRlbGVtZW50SWQvZGlzcGxheWVkIiwgJldlYkRyaXZlclNlcnZpY2U6OmlzRWxlbWVudERpc3Bs
YXllZCB9LAogfTsKIAotT3B0aW9uYWw8V2ViRHJpdmVyU2VydmljZTo6SFRUUE1ldGhvZD4gV2Vi
RHJpdmVyU2VydmljZTo6dG9Db21tYW5kSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhvZCkK
K3N0ZDo6b3B0aW9uYWw8V2ViRHJpdmVyU2VydmljZTo6SFRUUE1ldGhvZD4gV2ViRHJpdmVyU2Vy
dmljZTo6dG9Db21tYW5kSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhvZCkKIHsKICAgICBh
dXRvIGxvd2VyQ2FzZU1ldGhvZCA9IG1ldGhvZC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwog
ICAgIGlmIChsb3dlckNhc2VNZXRob2QgPT0gImdldCIpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9p
ZCBXZWJEcml2ZXJTZXJ2aWNlOjpzZW5kUmVzcG9uc2UoRnVuY3Rpb248dm9pZCAoSFRUUFJlcXVl
c3RIYW5kbGVyOjpSZXNwb25zZSYKICAgICByZXBseUhhbmRsZXIoeyByZXN1bHQuaHR0cFN0YXR1
c0NvZGUoKSwgcmVzcG9uc2VPYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKSwgImFwcGxpY2F0
aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiX3MgfSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxkb3Vi
bGU+IHZhbHVlQXNOdW1iZXJJblJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2YWx1ZSwgZG91Ymxl
IG1pbkFsbG93ZWQgPSAwLCBkb3VibGUgbWF4QWxsb3dlZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJ
blJhbmdlKGNvbnN0IEpTT046OlZhbHVlJiB2YWx1ZSwgZG91YmxlIG1pbkFsbG93ZWQgPSAwLCBk
b3VibGUgbWF4QWxsb3dlZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiB7CiAg
ICAgYXV0byBudW1iZXIgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGlmICghbnVtYmVyKQpAQCAt
MzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHZhbHVlQXNOdW1iZXJJblJh
bmdlKGNvbnN0IEpTT046OlZhbHVlJiB2YWx1ZSwgZG91YmxlIG1pCiAgICAgcmV0dXJuICpudW1i
ZXI7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpW
YWx1ZSYgdmFsdWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1
ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byBudW1iZXIgPSB2YWx1ZUFzTnVtYmVy
SW5SYW5nZSh2YWx1ZSwgMCwgbWF4U2FmZUludGVnZXIpOwogICAgIGlmICghbnVtYmVyKQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShK
U09OOjpWYWx1ZSYgdmFsdWUpCiAKIGVudW0gY2xhc3MgSWdub3JlVW5rbm93blRpbWVvdXQgeyBO
bywgWWVzIH07CiAKLXN0YXRpYyBPcHRpb25hbDxUaW1lb3V0cz4gZGVzZXJpYWxpemVUaW1lb3V0
cyhKU09OOjpPYmplY3QmIHRpbWVvdXRzT2JqZWN0LCBJZ25vcmVVbmtub3duVGltZW91dCBpZ25v
cmVVbmtub3duVGltZW91dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFRpbWVvdXRzPiBkZXNlcmlh
bGl6ZVRpbWVvdXRzKEpTT046Ok9iamVjdCYgdGltZW91dHNPYmplY3QsIElnbm9yZVVua25vd25U
aW1lb3V0IGlnbm9yZVVua25vd25UaW1lb3V0KQogewogICAgIC8vIMKnOC41IFNldCBUaW1lb3V0
cy4KICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyL3dlYmRyaXZlci1zcGVj
Lmh0bWwjZGZuLWRlc2VyaWFsaXplLWFzLWEtdGltZW91dApAQCAtMzg5LDcgKzM4OSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxUaW1lb3V0cz4gZGVzZXJpYWxpemVUaW1lb3V0cyhKU09OOjpPYmplY3Qm
IHRpbWVvdXRzT2JqZWN0LCBJZ25vCiAgICAgcmV0dXJuIHRpbWVvdXRzOwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVj
dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9i
amVjdCYgcHJveHlPYmplY3QpCiB7CiAgICAgLy8gwqc3LjEgUHJveHkuCiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8jcHJveHkKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9i
amVjdCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGFn
ZUxvYWRTdHJhdGVneT4gZGVzZXJpYWxpemVQYWdlTG9hZFN0cmF0ZWd5KGNvbnN0IFN0cmluZyYg
cGFnZUxvYWRTdHJhdGVneSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+
IGRlc2VyaWFsaXplUGFnZUxvYWRTdHJhdGVneShjb25zdCBTdHJpbmcmIHBhZ2VMb2FkU3RyYXRl
Z3kpCiB7CiAgICAgaWYgKHBhZ2VMb2FkU3RyYXRlZ3kgPT0gIm5vbmUiKQogICAgICAgICByZXR1
cm4gUGFnZUxvYWRTdHJhdGVneTo6Tm9uZTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8UGFnZUxvYWRTdHJhdGVneT4gZGVzZXJpYWxpemVQYWdlTG9hZFN0cmF0ZWd5KGNvbnN0
IFN0cmluZyYgcGFnZQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcj4gZGVzZXJpYWxpemVVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcihjb25zdCBTdHJpbmcmIHVuaGFuZGxlZFByb21wdEJlaGF2aW9yKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I+IGRlc2VyaWFsaXplVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IoY29uc3QgU3RyaW5nJiB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcikKIHsK
ICAgICBpZiAodW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IgPT0gImRpc21pc3MiKQogICAgICAgICBy
ZXR1cm4gVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M7CkBAIC04MjUsNyArODI1LDcg
QEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmls
aXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJW
RVIpCiAgICAgc2Vzc2lvbkhvc3RQdHItPnNldEhvc3RBZGRyZXNzKG1fdGFyZ2V0QWRkcmVzcywg
bV90YXJnZXRQb3J0KTsKICNlbmRpZgotICAgIHNlc3Npb25Ib3N0UHRyLT5jb25uZWN0VG9Ccm93
c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0ID0gV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwg
c2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJs
ZSB7CisgICAgc2Vzc2lvbkhvc3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxp
dGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1v
dmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpTZXNzaW9uTm90Q3JlYXRlZCwgbWFrZVN0
cmluZygiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYnJvd3NlcjogIiwgZXJyb3IudmFsdWUoKSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkRyaXZlclNl
cnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRp
ZXNMaXN0LAogdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBh
YmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25Ib3N0
PiYmIHNlc3Npb25Ib3N0LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3Qu
Z2V0KCk7Ci0gICAgc2Vzc2lvbkhvc3RQdHItPnN0YXJ0QXV0b21hdGlvblNlc3Npb24oW3RoaXMs
IGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9z
dCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShib29sIGNhcGFiaWxpdGllc0RpZE1hdGNoLCBPcHRpb25hbDxTdHJp
bmc+IGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgc2Vzc2lvbkhvc3RQdHItPnN0YXJ0QXV0
b21hdGlvblNlc3Npb24oW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGNhcGFiaWxpdGllc0Rp
ZE1hdGNoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJv
ciwgZXJyb3JNZXNzYWdlLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwOTUs
NyArMTA5NSw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c2V0V2luZG93UmVjdChSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1bmN0aW9uCiB7CiAgICAgLy8gwqcxMC43LjIg
U2V0IFdpbmRvdyBSZWN0LgogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIv
d2ViZHJpdmVyLXNwZWMuaHRtbCNzZXQtd2luZG93LXJlY3QKLSAgICBPcHRpb25hbDxkb3VibGU+
IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0aDsKICAgICBpZiAoYXV0byB2
YWx1ZSA9IHBhcmFtZXRlcnMtPmdldFZhbHVlKCJ3aWR0aCJfcykpIHsKICAgICAgICAgaWYgKGF1
dG8gbnVtYmVyID0gdmFsdWVBc051bWJlckluUmFuZ2UoKnZhbHVlKSkKICAgICAgICAgICAgIHdp
ZHRoID0gbnVtYmVyOwpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNl
OjpzZXRXaW5kb3dSZWN0KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rp
b24KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBPcHRpb25hbDxk
b3VibGU+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0OwogICAgIGlm
IChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+Z2V0VmFsdWUoImhlaWdodCJfcykpIHsKICAgICAg
ICAgaWYgKGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJlckluUmFuZ2UoKnZhbHVlKSkKICAgICAg
ICAgICAgIGhlaWdodCA9IG51bWJlcjsKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQgV2ViRHJp
dmVyU2VydmljZTo6c2V0V2luZG93UmVjdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRl
cnMsIEZ1bmN0aW9uCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiB4OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB4OwogICAgIGlm
IChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+Z2V0VmFsdWUoIngiX3MpKSB7CiAgICAgICAgIGlm
IChhdXRvIG51bWJlciA9IHZhbHVlQXNOdW1iZXJJblJhbmdlKCp2YWx1ZSwgSU5UX01JTikpCiAg
ICAgICAgICAgICB4ID0gbnVtYmVyOwpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdm9pZCBXZWJEcml2
ZXJTZXJ2aWNlOjpzZXRXaW5kb3dSZWN0KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVy
cywgRnVuY3Rpb24KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBP
cHRpb25hbDxkb3VibGU+IHk7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHk7CiAgICAgaWYg
KGF1dG8gdmFsdWUgPSBwYXJhbWV0ZXJzLT5nZXRWYWx1ZSgieSJfcykpIHsKICAgICAgICAgaWYg
KGF1dG8gbnVtYmVyID0gdmFsdWVBc051bWJlckluUmFuZ2UoKnZhbHVlLCBJTlRfTUlOKSkKICAg
ICAgICAgICAgIHkgPSBudW1iZXI7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCB2b2lkIFdlYkRyaXZl
clNlcnZpY2U6Om5ld1dpbmRvdyhSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFtZXRlcnMsIEZ1
bmN0aW9uPHZvaQogICAgIGlmICghZmluZFNlc3Npb25PckNvbXBsZXRlV2l0aEVycm9yKCpwYXJh
bWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlv
bmFsPFN0cmluZz4gdHlwZUhpbnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHR5cGVIaW50
OwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyYW1ldGVycy0+Z2V0VmFsdWUoInR5cGUiX3MpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAg
aWYgKCEhdmFsdWVTdHJpbmcpIHsKQEAgLTEyOTMsNyArMTI5Myw3IEBAIHZvaWQgV2ViRHJpdmVy
U2VydmljZTo6c3dpdGNoVG9QYXJlbnRGcmFtZShSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHBhcmFt
ZXRlcnMsIEZ1CiAgICAgfSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRFbGVt
ZW50T3JDb21wbGV0ZVdpdGhFcnJvcihKU09OOjpPYmplY3QmIHBhcmFtZXRlcnMsIEZ1bmN0aW9u
PHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiBjb21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZmluZEVsZW1lbnRPckNvbXBsZXRlV2l0aEVycm9yKEpTT046Ok9i
amVjdCYgcGFyYW1ldGVycywgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gZWxlbWVudElEID0gcGFyYW1ldGVycy5nZXRTdHJp
bmcoImVsZW1lbnRJZCJfcyk7CiAgICAgaWYgKGVsZW1lbnRJRC5pc0VtcHR5KCkpIHsKQEAgLTE3
MTgsNyArMTcxOCw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Z2V0TmFtZWRDb29raWUoUmVm
UHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdGlvCiAgICAgfSk7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxTZXNzaW9uOjpDb29raWU+IGRlc2VyaWFsaXplQ29va2llKEpTT046Ok9i
amVjdCYgY29va2llT2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vzc2lvbjo6Q29va2ll
PiBkZXNlcmlhbGl6ZUNvb2tpZShKU09OOjpPYmplY3QmIGNvb2tpZU9iamVjdCkKIHsKICAgICBT
ZXNzaW9uOjpDb29raWUgY29va2llOwogCkBAIC0xODM2LDcgKzE4MzYsNyBAQCB2b2lkIFdlYkRy
aXZlclNlcnZpY2U6OmRlbGV0ZUFsbENvb2tpZXMoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJh
bWV0ZXJzLCBGdW5jdAogICAgIH0pOwogfQogCi1zdGF0aWMgYm9vbCBwcm9jZXNzUGF1c2VBY3Rp
b24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgT3B0aW9uYWw8U3Ry
aW5nPiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIGJvb2wgcHJvY2Vzc1BhdXNlQWN0aW9uKEpTT046
Ok9iamVjdCYgYWN0aW9uSXRlbSwgQWN0aW9uJiBhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgZXJyb3JNZXNzYWdlKQogewogICAgIGF1dG8gZHVyYXRpb25WYWx1ZSA9IGFjdGlvbkl0ZW0u
Z2V0VmFsdWUoImR1cmF0aW9uIl9zKTsKICAgICBpZiAoIWR1cmF0aW9uVmFsdWUpCkBAIC0xODUy
LDcgKzE4NTIsNyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzUGF1c2VBY3Rpb24oSlNPTjo6T2JqZWN0
JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgT3B0aW9uYQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzTnVsbEFjdGlvbihjb25zdCBTdHJp
bmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlvbkl0ZW0sIE9wdGlvbmFsPFN0cmluZz4mIGVycm9y
TWVzc2FnZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rpb24o
Y29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVt
LmdldFN0cmluZygidHlwZSJfcyk7CiAgICAgaWYgKHN1YnR5cGUgIT0gInBhdXNlIikgewpAQCAt
MTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIE9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc051bGxBY3Rp
b24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3Rpb24KICAgICByZXR1cm4gYWN0
aW9uOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzS2V5QWN0aW9uKGNvbnN0
IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgT3B0aW9uYWw8U3RyaW5nPiYg
ZXJyb3JNZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzS2V5QWN0
aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpTT046Ok9iamVjdCYgYWN0aW9uSXRlbSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgQWN0aW9uOjpTdWJ0eXBlIGFjdGlv
blN1YnR5cGU7CiAgICAgYXV0byBzdWJ0eXBlID0gYWN0aW9uSXRlbS5nZXRTdHJpbmcoInR5cGUi
X3MpOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgc3RhdGljIE1vdXNlQnV0dG9uIGFjdGlvbk1vdXNl
QnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAgICByZXR1cm4gTW91c2VCdXR0b246Ok5vbmU7CiB9
CiAKLXN0YXRpYyBib29sIHByb2Nlc3NQb2ludGVyTW92ZUFjdGlvbihKU09OOjpPYmplY3QmIGFj
dGlvbkl0ZW0sIEFjdGlvbiYgYWN0aW9uLCBPcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2Up
CitzdGF0aWMgYm9vbCBwcm9jZXNzUG9pbnRlck1vdmVBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rp
b25JdGVtLCBBY3Rpb24mIGFjdGlvbiwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3Nh
Z2UpCiB7CiAgICAgaWYgKGF1dG8gZHVyYXRpb25WYWx1ZSA9IGFjdGlvbkl0ZW0uZ2V0VmFsdWUo
ImR1cmF0aW9uIl9zKSkgewogICAgICAgICBhdXRvIGR1cmF0aW9uID0gdW5zaWduZWRWYWx1ZSgq
ZHVyYXRpb25WYWx1ZSk7CkBAIC0xOTg2LDcgKzE5ODYsNyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNz
UG9pbnRlck1vdmVBY3Rpb24oSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBBY3Rpb24mIGFjdGlv
biwgTwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9j
ZXNzUG9pbnRlckFjdGlvbihjb25zdCBTdHJpbmcmIGlkLCBQb2ludGVyUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBPcHRpb25hbDxTdHJpbmc+JiBlcnJv
ck1lc3NhZ2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxBY3Rpb24+IHByb2Nlc3NQb2ludGVyQWN0
aW9uKGNvbnN0IFN0cmluZyYgaWQsIFBvaW50ZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBKU09O
OjpPYmplY3QmIGFjdGlvbkl0ZW0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdl
KQogewogICAgIEFjdGlvbjo6U3VidHlwZSBhY3Rpb25TdWJ0eXBlOwogICAgIGF1dG8gc3VidHlw
ZSA9IGFjdGlvbkl0ZW0uZ2V0U3RyaW5nKCJ0eXBlIl9zKTsKQEAgLTIwNDMsNyArMjA0Myw3IEBA
IHN0YXRpYyBPcHRpb25hbDxBY3Rpb24+IHByb2Nlc3NQb2ludGVyQWN0aW9uKGNvbnN0IFN0cmlu
ZyYgaWQsIFBvaW50ZXJQYXJhbWV0ZXJzCiAgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc1doZWVsQWN0aW9uKGNvbnN0IFN0cmluZyYgaWQsIEpT
T046Ok9iamVjdCYgYWN0aW9uSXRlbSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JNZXNzYWdlKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3Ry
aW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3Rpb25JdGVtLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
IGVycm9yTWVzc2FnZSkKIHsKICAgICBBY3Rpb246OlN1YnR5cGUgYWN0aW9uU3VidHlwZTsKICAg
ICBhdXRvIHN1YnR5cGUgPSBhY3Rpb25JdGVtLmdldFN0cmluZygidHlwZSJfcyk7CkBAIC0yMDk3
LDcgKzIwOTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24o
Y29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0JiBhY3RpbwogICAgIHJldHVybiBhY3Rpb247
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQb2ludGVyUGFyYW1ldGVycz4gcHJvY2Vzc1BvaW50ZXJQ
YXJhbWV0ZXJzKEpTT046Ok9iamVjdCYgYWN0aW9uU2VxdWVuY2UsIE9wdGlvbmFsPFN0cmluZz4m
IGVycm9yTWVzc2FnZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvaW50ZXJQYXJhbWV0ZXJzPiBw
cm9jZXNzUG9pbnRlclBhcmFtZXRlcnMoSlNPTjo6T2JqZWN0JiBhY3Rpb25TZXF1ZW5jZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgUG9pbnRlclBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKIApAQCAtMjEyOSw3ICsyMTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBv
aW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9pbnRlclBhcmFtZXRlcnMoSlNPTjo6T2JqZWN0JiBh
Y3Rpb24KICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxBY3Rpb24+PiBwcm9jZXNzSW5wdXRBY3Rpb25TZXF1ZW5jZShTZXNzaW9uJiBzZXNzaW9uLCBK
U09OOjpWYWx1ZSYgYWN0aW9uU2VxdWVuY2VWYWx1ZSwgT3B0aW9uYWw8U3RyaW5nPiYgZXJyb3JN
ZXNzYWdlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEFjdGlvbj4+IHByb2Nlc3NJbnB1
dEFjdGlvblNlcXVlbmNlKFNlc3Npb24mIHNlc3Npb24sIEpTT046OlZhbHVlJiBhY3Rpb25TZXF1
ZW5jZVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVycm9yTWVzc2FnZSkKIHsKICAgICBh
dXRvIGFjdGlvblNlcXVlbmNlID0gYWN0aW9uU2VxdWVuY2VWYWx1ZS5hc09iamVjdCgpOwogICAg
IGlmICghYWN0aW9uU2VxdWVuY2UpIHsKQEAgLTIxNTgsOCArMjE1OCw4IEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8QWN0aW9uPj4gcHJvY2Vzc0lucHV0QWN0aW9uU2VxdWVuY2UoU2Vzc2lvbiYg
c2Vzc2lvbiwgSlNPCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgT3B0aW9uYWw8UG9p
bnRlclR5cGU+IHBvaW50ZXJUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8UG9pbnRlclBhcmFtZXRl
cnM+IHBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxQb2ludGVyVHlwZT4gcG9pbnRlclR5
cGU7CiAgICAgaWYgKGlucHV0U291cmNlVHlwZSA9PSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRl
cikgewogICAgICAgICBwYXJhbWV0ZXJzID0gcHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKCphY3Rp
b25TZXF1ZW5jZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQpAQCAt
MjE5NCw3ICsyMTk0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9jZXNz
SW5wdXRBY3Rpb25TZXF1ZW5jZShTZXNzaW9uJiBzZXNzaW9uLCBKU08KICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxBY3Rpb24+
IGFjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBY3Rpb24+IGFjdGlvbjsKICAgICAgICAg
aWYgKGlucHV0U291cmNlVHlwZSA9PSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZSkKICAgICAgICAg
ICAgIGFjdGlvbiA9IHByb2Nlc3NOdWxsQWN0aW9uKGlkLCAqYWN0aW9uSXRlbSwgZXJyb3JNZXNz
YWdlKTsKICAgICAgICAgZWxzZSBpZiAoaW5wdXRTb3VyY2VUeXBlID09IElucHV0U291cmNlOjpU
eXBlOjpLZXkpCkBAIC0yMjI1LDcgKzIyMjUsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OnBl
cmZvcm1BY3Rpb25zKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3Nh
Z2U7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yTWVzc2FnZTsKICAgICBWZWN0b3I8
VmVjdG9yPEFjdGlvbj4+IGFjdGlvbnNCeVRpY2s7CiAgICAgdW5zaWduZWQgYWN0aW9uc0FycmF5
TGVuZ3RoID0gYWN0aW9uc0FycmF5LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYWN0aW9uc0FycmF5TGVuZ3RoOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5oIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmgKaW5kZXggMGYzOGNiMDI5MDg3OTY3MjQzM2E0Mzc3YWZkMTk3NjdiZGExMmI5NC4uZTQy
ZDI3ZjcxZmZjMDVkZjRlNjI4MmFlNDczZTljMDE5NTY2OTRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0
YXRpYyBjb25zdCBDb21tYW5kIHNfY29tbWFuZHNbXTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxI
VFRQTWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIVFRQTWV0aG9kPiB0b0NvbW1hbmRIVFRQTWV0aG9kKGNv
bnN0IFN0cmluZyYgbWV0aG9kKTsKICAgICBzdGF0aWMgYm9vbCBmaW5kQ29tbWFuZChIVFRQTWV0
aG9kLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbW1hbmRIYW5kbGVyKiwgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBuZXdTZXNzaW9uKFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAppbmRleCAyNjQxMGJmZTdhZTMzZjFi
NTZmNzdmYTk5OTUxMDZlZjg0N2MxMmQwLi5lNjI2YTE3YTQxZTVlNDMyYTA3OWVhNGNlNDcwZTZm
OWFkZjVjNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMm
IFNlc3Npb25Ib3N0OjptZXNzYWdlSGFuZGxlcnMoKQogICAgIHJldHVybiBtZXNzYWdlSGFuZGxl
cnM7CiB9CiAKLXZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNl
c3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbGF1bmNoQnJvd3Nl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgYm9v
bCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQoKSBjb25zdAogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJv
d3NlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAg
IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEoU2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5p
cXVlUHRyPGNoYXI+JiYgaW5zcGVjdG9yQWRkcmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJs
ZSwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhKFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9zdCwg
R1VuaXF1ZVB0cjxjaGFyPiYmIGluc3BlY3RvckFkZHJlc3MsIEdDYW5jZWxsYWJsZSogY2FuY2Vs
bGFibGUsIEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChzZXNzaW9uSG9zdCkKICAgICAgICAgLCBp
bnNwZWN0b3JBZGRyZXNzKFdURk1vdmUoaW5zcGVjdG9yQWRkcmVzcykpCiAgICAgICAgICwgY2Fu
Y2VsbGFibGUoY2FuY2VsbGFibGUpCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RydWN0IENvbm5lY3RU
b0Jyb3dzZXJBc3luY0RhdGEgewogICAgIFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9zdDsKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGluc3BlY3RvckFkZHJlc3M7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFi
bGU+IGNhbmNlbGxhYmxlOwotICAgIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJy
b3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIHN0YXRpYyBndWludDE2
IGZyZWVQb3J0KCkKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgZ3VpbnQxNiBmcmVlUG9ydCgp
CiAgICAgcmV0dXJuIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VU
X0FERFJFU1MoYWRkcmVzcy5nZXQoKSkpOwogfQogCi12b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hC
cm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lk
IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIG1fY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CiAgICAg
R1JlZlB0cjxHU3VicHJvY2Vzc0xhdW5jaGVyPiBsYXVuY2hlciA9IGFkb3B0R1JlZihnX3N1YnBy
b2Nlc3NfbGF1bmNoZXJfbmV3KEdfU1VCUFJPQ0VTU19GTEFHU19OT05FKSk7CkBAIC0zMDEsNyAr
MzAxLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6YnVpbGRTZXNzaW9uQ2FwYWJpbGl0aWVzKEdWYXJp
YW50QnVpbGRlciogYnVpbGRlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBT
ZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBP
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6
OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oRnVuY3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9zb2NrZXRD
b25uZWN0aW9uKTsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA4
MTFiMWY2OWRiZDFhYzE3ZTJhNjRlZWQ3ZmM5YWFmYzZlMmY0MDM2Li43OWI3Y2E0YjJkMTMzMjJi
MGRlODgzMmEyMzgyMTgwZTMyYTA0MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9I
VFRQU2VydmVyU29ja2V0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViRHJp
dmVyIHsKIAotYm9vbCBIVFRQU2VydmVyOjpsaXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
aG9zdCwgdW5zaWduZWQgcG9ydCkKK2Jvb2wgSFRUUFNlcnZlcjo6bGlzdGVuKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKIHsKICAgICBhdXRvJiBlbmRw
b2ludCA9IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzaW5nbGV0b24oKTsKIApAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIEhUVFBTZXJ2ZXI6OmRpc2Nvbm5lY3QoKQogICAgIGVuZHBvaW50
LmRpc2Nvbm5lY3QobV9zZXJ2ZXIudmFsdWUoKSk7CiB9CiAKLU9wdGlvbmFsPENvbm5lY3Rpb25J
RD4gSFRUUFNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmIGVu
ZHBvaW50LCBQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQorc3RkOjpvcHRpb25hbDxDb25uZWN0
aW9uSUQ+IEhUVFBTZXJ2ZXI6OmRvQWNjZXB0KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
JiBlbmRwb2ludCwgUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKIHsKICAgICBpZiAoYXV0byBp
ZCA9IGVuZHBvaW50LmNyZWF0ZUNsaWVudChzb2NrZXQsIG1fcmVxdWVzdEhhbmRsZXIpKSB7CiAg
ICAgICAgIG1fcmVxdWVzdEhhbmRsZXIuY29ubmVjdChpZC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCAzMTMwNWE0ZDQ3NDY4
NzQwZDE4OGE5YzdmN2I3YThmZjc0ZDRmMzdjLi4wZjY1NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3
YmYxZDYxMjBjYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9u
SG9zdFNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RT
b2NrZXQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRXZWJJbnNw
ZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogICAgIHNlbmQobV9jbGllbnRJRC52YWx1
ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZXNzYWdlLmRhdGEoKSksIG1l
c3NhZ2UubGVuZ3RoKCkpOwogfQogCi12b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2Vy
KEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFN0cmluZyB0YXJnZXRJcDsKICAgICB1aW50MTZfdCB0YXJnZXRQb3J0ID0gMDsKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6ZGlkQ2xvc2UoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludCYsIEluc3BlY3RvcjoKICAgICBtX2NsaWVudElEID0gc3RkOjpu
dWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0b3I8U2Vzc2lvbkhvc3Q6OlRhcmdldD4+IFNlc3Np
b25Ib3N0OjpwYXJzZVRhcmdldExpc3QoY29uc3Qgc3RydWN0IEV2ZW50JiBldmVudCkKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPFNlc3Npb25Ib3N0OjpUYXJnZXQ+PiBTZXNzaW9uSG9zdDo6cGFyc2VU
YXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVudCYgZXZlbnQpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBwYXJzZVRhcmdldExpc3RKU09OKCpldmVudC5tZXNzYWdlKTsKICAgICBpZiAoIXJlc3VsdCkK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpyZWNlaXZlZFN0YXJ0QXV0b21h
dGlvblNlc3Npb25SZXR1cm4oY29uc3Qgc3RydWN0IEV2ZW50JikKICAgICBtX2NhcGFiaWxpdGll
cy5icm93c2VyVmVyc2lvbiA9IFN0cmluZzo6ZnJvbVVURjgoIlRPRE8vYnJvd3NlclZlcnNpb24i
KTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlv
bjx2b2lkIChib29sLCBPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oRnVuY3Rpb248dm9pZCAoYm9v
bCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRTZXNz
aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc291cC9IVFRQU2VydmVyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL3NvdXAvSFRUUFNlcnZlclNvdXAuY3BwCmluZGV4IGQ5NTViNTc3ZTMyODBlYTFh
ZGFhNmRjOTEwMTNhMmFjMjFkYjk1MDcuLjQzOTRjZjFhMDEyNGM2ZjgxMTA4YjAwOTZhNTdkNTQ1
YTQxNzQ2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc291cC9IVFRQU2VydmVyU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb3VwL0hUVFBTZXJ2ZXJTb3VwLmNwcApAQCAt
MzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIAotc3RhdGljIGJvb2wgc291
cFNlcnZlckxpc3RlbihTb3VwU2VydmVyKiBzZXJ2ZXIsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IGhvc3QsIHVuc2lnbmVkIHBvcnQsIEdFcnJvcioqIGVycm9yKQorc3RhdGljIGJvb2wgc291cFNl
cnZlckxpc3RlbihTb3VwU2VydmVyKiBzZXJ2ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgaG9zdCwgdW5zaWduZWQgcG9ydCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGF1dG8gb3B0aW9ucyA9IHN0YXRpY19jYXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigw
KTsKICAgICBpZiAoIWhvc3QgfHwgaG9zdC52YWx1ZSgpID09ICJsb2NhbCIpCkBAIC01MCw3ICs1
MCw3IEBAIHN0YXRpYyBib29sIHNvdXBTZXJ2ZXJMaXN0ZW4oU291cFNlcnZlciogc2VydmVyLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiBob3N0LCB1CiAgICAgcmV0dXJuIHNvdXBfc2VydmVyX2xp
c3RlbihzZXJ2ZXIsIGFkZHJlc3MuZ2V0KCksIG9wdGlvbnMsIGVycm9yKTsKIH0KIAotYm9vbCBI
VFRQU2VydmVyOjpsaXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwgdW5zaWduZWQg
cG9ydCkKK2Jvb2wgSFRUUFNlcnZlcjo6bGlzdGVuKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgaG9zdCwgdW5zaWduZWQgcG9ydCkKIHsKICAgICBtX3NvdXBTZXJ2ZXIgPSBhZG9wdEdSZWYo
c291cF9zZXJ2ZXJfbmV3KCJzZXJ2ZXItaGVhZGVyIiwgIldlYktpdFdlYkRyaXZlciIsIG51bGxw
dHIpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXggMDE2ODcyODNmYWUzZTNmMzE0YzkyM2EzZjMxZTgx
ZmZhZjBkM2E2NC4uMTM5OTYxZGU2MWU2NWU5ZWM4YWY0ZWQwYzRhOGE4MmE0MmY1YTA2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBH
UFVQcm9jZXNzOjp+R1BVUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRl
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2ht
ZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgR1BVUHJvY2Vzczo6Y3JlYXRlR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFj
aG1lbnQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3MsICIlcCAtIEdQVVByb2Nlc3M6OmNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6IHBy
b2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgdGhpcywgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
ICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggYmQyMmZmZTczMGNhNzUzZDgxYWE3
NzZiOTRlY2YxMjcwYjU5M2JhMS4uNGY1ZGZmNzQ4NmJjYTNkM2I1MjYwOTkwYzAyNTE4MTMwNjRh
YjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC0xMTQsNyArMTE0
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGluaXRp
YWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9p
ZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7Cisg
ICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+
JiYpPiYmKTsKICAgICB2b2lkIGFkZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIEdQVVByb2Nlc3NT
ZXNzaW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IGEyOWJlOGRlOGMzMzc0NzcwYjdlNTYxZWNmMmYwYTQ5NTRiNDFiNmYuLmJhYTkx
N2M0NTU2MGNkMTQxNDVkMTE1ZmQ4MmU0Y2ZjZDE2MjBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBt
ZXNzYWdlcyAtPiBHUFVQcm9jZXNzIHsKICAgICBJbml0aWFsaXplR1BVUHJvY2VzcyhzdHJ1Y3Qg
V2ViS2l0OjpHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMpCiAKLSAgICBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikg
QXN5bmMKKyAgICBDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJz
KSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVy
KSBBc3luYwogCiAgICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogICAgIFBy
b2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBi
NDk3MTJjZjk0YjNhNWM4YzcwYWYwNWNmNzliN2JkMjVjNGI2NGM2Li5kZjRiYTIwZGEyNWQ1MGJk
NmYyNzU1NjAwMTEyMzlkNDZlNmQ0Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03NywzMiAr
NzcsMzIgQEAgYm9vbCBHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBHUFVQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAjaWYgVVNFKFNBTkRCT1hfRVhURU5TSU9OU19GT1JfQ0FDSEVfQU5EX1RFTVBfRElSRUNUT1JZ
X0FDQ0VTUykKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5l
ckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRhaW5lckNhY2hlc0RpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNv
bnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRh
aW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvbnRhaW5l
clRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRs
ZXM7CiAgICAgZGVjb2RlciA+PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogICAg
IGlmICghY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3VsdC5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92
ZSgqY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWlj
SU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0ZW5z
aW9uSGFuZGxlczsKICAgICBpZiAoIWR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxl
cyA9IFdURk1vdmUoKmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpOwogCi0gICAgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFu
ZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBk
eW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBkeW5hbWljTWFjaEV4
dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMuaAppbmRleCAxMmFlZDZjYTNhMmExOWMxYWRk
YWExZjM1NWY5NDRkNTgzZTY4ZjczLi5kYWQ3ZmNhZjA2MjQ5MmE3ODk1MzQ5M2IxYjVlNmRlZTkw
ZjgwZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nl
c3Npb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3NTZXNzaW9uUGFyYW1ldGVycy5oCkBAIC01MSwyNSArNTEsMjUgQEAgc3RydWN0IEdQVVByb2Nl
c3NTZXNzaW9uUGFyYW1ldGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycz4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R1BVUHJvY2Vz
c1Nlc3Npb25QYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4g
bWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5KQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
bWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAg
IGlmICghbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICAg
ICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlm
ICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKaW5k
ZXggOWNlNDU2NTk0ZDU3ZmRiYTIwMGNkMTBiMTE3NzYxYjcyYzQzMGFlOS4uZmRmZjM4OGE5MTc5
YzJjYTczMDk2YmQ5MjU1Yjk3YjZkYmU5MDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3Bw
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1PcHRpb25hbDxzaXplX3Q+IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZh
bmNlKHNpemVfdCBhbW91bnQpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKICAgICBhdXRvIHByZXZpb3VzVW5y
ZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5nZVN1YihhbW91bnQpOwogICAg
IGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwgYW1vdW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlLmgKaW5kZXggZWE3NjRmZGY3ZDY2OGU1MDdjMzdmZjM1OWQ5OTlmMWFhZGJhZTQwMC4u
N2U5N2U0OGU3ZGY0NGRiM2QxOWJkYThmMmNkN2UwYjBjYzk4ZDM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVk
TWVtb3J5KSkpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHNpemVfdD4gYWR2YW5jZShzaXplX3Qg
YW1vdW50KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gYWR2YW5jZShzaXplX3QgYW1vdW50
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBkaXNwbGF5TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKIAog
ICAgIHZvaWQgc3RhcnRXYWl0aW5nKCkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIGVudW0gY2xhc3MgU3RvcFdhaXRpbmdGYWlsdXJlUmVhc29uIDogdWludDhfdCB7IElu
dmFsaWRXYWl0aW5nU3RhdHVzIH07Ci0gICAgRXhwZWN0ZWQ8T3B0aW9uYWw8U2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5nRmFpbHVy
ZVJlYXNvbj4gc3RvcFdhaXRpbmcoKQorICAgIEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OlJlc3VtZVJlYWRpbmdJbmZvcm1hdGlvbj4sIFN0b3BXYWl0aW5n
RmFpbHVyZVJlYXNvbj4gc3RvcFdhaXRpbmcoKQogICAgIHsKICAgICAgICAgYXV0byYgaGVhZGVy
ID0gdGhpcy0+aGVhZGVyKCk7CiAgICAgICAgIGF1dG8gcHJldmlvdXNTdGF0dXMgPSBoZWFkZXIu
d2FpdGluZ1N0YXR1cy5leGNoYW5nZShzdGF0aWNfY2FzdDxTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6V2FpdGluZ1N0YXR1c1N0b3JhZ2VUeXBlPihTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2Fp
dGluZ1N0YXR1czo6Tm90V2FpdGluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXgg
MTU1M2RlZjAyNWZmZjkwZjEzNzVmNTEwZDUwY2E0NWQyYzUxMzU0ZS4uN2QyYTU3MjMzZWQ2MTI0
NTA2MTc4OTU1NzFkMjUwMjI3N2FlNTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1IKICAgICBwYWludFBpeGVs
QnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBh
aW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVm
ZmVyKE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBp
eGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICAvLyBGSVhN
RTogV2UgZG8gbm90IGhhdmUgZnVuY3Rpb25pbmcgcmVhZC93cml0ZSBmZW5jZXMgaW4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC4gVGh1cyB0aGlzIGlzIHN5bmNocm9ub3VzLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaAppbmRleCA1NjJjMmViODM0NTY5OGUyYmE1OTY3NDU1MWZlMDM0NDE1ZTA1ZjlmLi4w
MjNlYTA5NjZiZDM1MzJkOGVmNTRiNWVmNDUwZGZkNDJjNzVjMzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKIAogI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCi0gICAg
dm9pZCBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihPcHRpb25hbDxXZWJDb3JlOjpQaXhl
bEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VC
dWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgUmVmUHRyPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3RyZWFtQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA5M2I0ODY3NDNmZjFlY2M1NGJkMWViYzZm
MGI3OTE4ZWIyN2M3ZmVkLi4xNmIzZTllODI2ZWE0MTdkYmUyYzczZTJkZWM3MTM4MzliN2Y2NzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yODQsNyAr
Mjg0LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCBTdHJlYW0gewogICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUodWludDMy
X3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBmaXJzdHMsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGlu
c3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKICAgICB2b2lkIE11bHRpRHJhd0VsZW1l
bnRzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3Vu
dHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gb2Zmc2V0cywg
aW50MzJfdCBkcmF3Y291bnQpCiAgICAgdm9pZCBNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCB1
aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IG9mZnNldHMsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5zdGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2NvdW50
KQotICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIC0+IChPcHRp
b25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgLT4gKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmgKaW5kZXggZGVmMjY2MTVhY2Y3MTcyZTI1YTI3MGQyNGQ4ZjQ3NjlkMWMzZDMzOC4uZDFj
MzI5MDUxN2QyOTZjNTFlMzU2ZThiNGU1NzBjMDY3YmI3NzU4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rp
b25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzNzksOSArMTM3
OSw5IEBACiAgICAgICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgICAg
IG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwg
Y291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSksIG9mZnNldHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5zdGFuY2VDb3VudHMuZGF0YSgp
KSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKICAgICB9Ci0gICAgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZm
ZXI+IHJldHVyblZhbHVlID0geyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBp
eGVsQnVmZmVyPiByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KG1f
c3RyZWFtVGhyZWFkKTsKICAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXR1cm5WYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGI5OTJj
NzZkZjRiN2QzYjg2NTMwY2I4YWJmM2NiYTllN2E2NTY4OGMuLmNiNTAxMTY3YjRkZDU3MmM0YzVj
Mjk4MTM4MmYxMjZjYjI5NzhmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMzMSw3
ICszMzEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVy
VG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbgogICAgIG1fcGVuZGluZ1dha2V1cElu
Zm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUo
KSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNp
ZmllZCB9LCBzdGQ6Om51bGxvcHQgfX07CiB9CiAKLU9wdGlvbmFsPFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQ
aXhlbEJ1ZmZlckhlbHBlcihzaXplX3QgYnl0ZUNvdW50KQorc3RkOjpvcHRpb25hbDxTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hhcmVkTWVt
b3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCkKIHsKICAgICBNRVNT
QUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5
IHx8IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgc3Rk
OjpudWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNobWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFs
cmVhZHkgYmlnIGVub3VnaCB0byBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKIApAQCAtMzc5LDcgKzM3
OSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVzdHJveUdldFBpeGVsQnVmZmVy
U2hhcmVkTWVtb3J5KCkKICAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0
cjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVm
ZmVyU2hhcmVkTWVtb3J5KE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVm
ZmVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVy
U2hhcmVkTWVtb3J5KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxC
dWZmZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5
LCAiV2UgY2FuJ3QgcnVuIGdldFBpeGVsQnVmZmVyIHdpdGhvdXQgYSBidWZmZXIgdG8gd3JpdGUg
aW50byIpOwogCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Ojpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KE9wdGlvbmFsPFdlYkNvcmUKICAg
ICBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3JlLnNpZ25hbCgpOwogfQogCi12b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3AKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmluZykpOwogfQogCi12b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC01MDgsNyArNTA4LDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcigpCiAg
ICAgbV9jdXJyZW50TWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERp
c3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK3N0ZDo6
b3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2Nh
dGlvbikKIHsKICAgICAvKiBUaGlzIG5lZWRzIHRvIG1hdGNoICgxKSBpc0lubGluZUl0ZW0oKSBp
biBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmVu
Y29kZUl0ZW0oKSwKICAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKaW5kZXggNThkY2Y4OGJkMDFmYWVhNGM5ODlmZTIwMWMyODA2MDU1ZWVm
YWQwNi4uNzM0MjdhOTY0Zjc0NTEyMWJhZmExMTllZWY0ZmViMzMzYjRjOTM5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0
ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUmVz
ZXRNYXNrSW1hZ2VCdWZmZXIoKTsKIAotICAgIHZvaWQgcG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNo
YXJlZE1lbW9yeShPcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJik7CisgICAgdm9pZCBw
b3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGl4ZWxCdWZmZXI+JiYpOwogCiAgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0OwogCkBAIC05OCwxMCArOTgsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJ
UEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxv
Y2F0aW9uKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVp
bnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFu
ZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5k
bGVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6
OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBsZW5ndGgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5lZWQgdG8ga25vdyB0aGF0IHRoZSBmaXJzdCA4IGJ5
dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2VydmVkIGZvciB0aGUgdHlwZS4KQEAgLTExNSw3ICsx
MTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQg
c3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxP
ZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7
CiAKLSAgICBPcHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVt
b3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CisgICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0
UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCk7CiAgICAgdm9pZCB1cGRhdGVSZW5k
ZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KQEAg
LTEzMyw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VtYXBob3JlRm9yR2V0UGl4ZWxC
dWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmKTsK
ICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVy
KHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IElQQzo6U2VtYXBob3JlJik+JiYpOwogICAgIHZvaWQg
ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCk7Ci0gICAgdm9pZCBnZXREYXRhVVJM
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwot
ICAgIHZvaWQgZ2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJik7CisgICAg
dm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8dWludDhfdD4mJik+JiYpOwogICAgIHZvaWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VC
dWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmJik+JiYpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwpAQCAtMTQ0LDcgKzE0NCw3
IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsKICAg
ICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzOwotICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyOwogCiAgICAgICAgIGJvb2wgc2hvdWxkUGVyZm9ybVdha2V1cChXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKICAgICAgICAgewpAQCAtMTYz
LDcgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKLSAgICBPcHRpb25hbDxQZW5k
aW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CisgICAgc3RkOjpvcHRp
b25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CiAgICAg
SVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKICAgICBJUEM6OlNl
bWFwaG9yZSBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCmluZGV4IGExZTM1YWQ1MDM5YTRiNTQ5NDI5YmI0ZTg5YWM5M2Y2YWNk
ZTUzMDguLjRiM2ZlOWEwMjYyZThhNTQ5MTg1MmM2ZDZhMDQwNDVkNmE2OTYzOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yOSw4ICsyOSw4IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewogICAgIFNlbWFwaG9yZUZvckdldFBpeGVs
QnVmZmVyKCkgLT4gKElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkgU3luY2hyb25vdXMKICAgICBV
cGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBi
eXRlQ291bnQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgSVBD
OjpTZW1hcGhvcmUgc2VtYXBob3JlKSBTeW5jaHJvbm91cwogICAgIERlc3Ryb3lHZXRQaXhlbEJ1
ZmZlclNoYXJlZE1lbW9yeSgpCi0gICAgR2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0cmluZyBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKFN0cmlu
ZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzCi0gICAgR2V0RGF0YUZvckltYWdlQnVmZmVyKFN0cmlu
ZyBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3VzCisgICAgR2V0RGF0YVVSTEZvckltYWdlQnVmZmVy
KFN0cmluZyBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMKKyAgICBHZXREYXRhRm9ySW1h
Z2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgLT4gKFZlY3Rvcjx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIEdldFNo
YXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIENhY2hlRm9udChJUEM6
OkZvbnRSZWZlcmVuY2UgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDhhYWI3OGY2NWJhNGUwN2ViYzg4NjkwZTgwZjRhMWRh
OTZkOGVlYjMuLjQ0YTI3ODI2NTJhOGZlYjEzZDVkNGNhNzU1MTAxZjBmM2ViZWRlOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
NDUsMjQgKzQ1LDI0IEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHJlc3VtZURpc3BsYXlM
aXN0U2VtYXBob3JlIDw8IHBhZ2VQcm94eUlEIDw8IHBhZ2VJRDsKICAgICB9CiAKLSAgICBzdGF0
aWMgT3B0aW9uYWw8UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycz4gZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXI+IGlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxJUEM6OlNlbWFwaG9yZT4gcmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTZW1hcGhvcmU+IHJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAgICBkZWNvZGVyID4+IHJlc3VtZURpc3BsYXlMaXN0
U2VtYXBob3JlOwogICAgICAgICBpZiAoIXJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYWdl
UHJveHlJRDsKICAgICAgICAgaWYgKCFwYWdlUHJveHlJRCkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEOwogICAgICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICAgICAgaWYgKCFwYWdlSUQp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9uU2VnbWVudEluZm8uaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9Jbml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKaW5k
ZXggZDEyNzlhNDU0ZmVlODRlMDU3ZWQzYWZiMTBiNmI1Y2RiMjUzODg0Ni4uYjEzMDkwN2UxOWY2
YzE5NzUzZjJhNWM2ZmNiODYwYTA1ZjIyZWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9uU2VnbWVudEluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oCkBAIC01
MiwxNCArNTIsMTQgQEAgc3RydWN0IEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gewogICAgICAg
ICB9CiAKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgICAgIHN0YXRpYyBP
cHRpb25hbDxUcmFja0luZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHJhY2tJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9wdGlvbmFsPE1lZGlhRGVzY3JpcHRp
b25JbmZvPiBtZWRpYURlc2NyaXB0aW9uOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRp
YURlc2NyaXB0aW9uSW5mbz4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAgICAgICAgIGRlY29kZXIg
Pj4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAgICAgICAgIGlmICghbWVkaWFEZXNjcmlwdGlvbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBPcHRp
b25hbDxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBpZGVudGlmaWVy
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NSwy
NCArODUsMjQgQEAgc3RydWN0IEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gewogICAgIH0KIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxJbml0aWFs
aXphdGlvblNlZ21lbnRJbmZvPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKICAgICAgICAgZGVjb2Rl
ciA+PiBkdXJhdGlvbjsKICAgICAgICAgaWYgKCFkdXJhdGlvbikKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRp
b24+PiBhdWRpb1RyYWNrczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZv
cm1hdGlvbj4+IGF1ZGlvVHJhY2tzOwogICAgICAgICBkZWNvZGVyID4+IGF1ZGlvVHJhY2tzOwog
ICAgICAgICBpZiAoIWF1ZGlvVHJhY2tzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZvcm1hdGlvbj4+IHZpZGVvVHJh
Y2tzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdmlk
ZW9UcmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGlmICgh
dmlkZW9UcmFja3MpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdGV4dFRyYWNrczsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZvcm1hdGlvbj4+IHRleHRUcmFja3M7CiAgICAg
ICAgIGRlY29kZXIgPj4gdGV4dFRyYWNrczsKICAgICAgICAgaWYgKCF0ZXh0VHJhY2tzKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
Y3BwCmluZGV4IDEzNjg5M2EwY2QzOTBkNDkwNmMwOGNhNjI2OGMzYWIyMTQxYTJmNWEuLjgwNjE0
NjE3NzBmM2VlODc0M2FhNjIxYjdhOGQwMzM1ZjExMTYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0cmluZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnVwZGF0ZUxpY2Vuc2Uoc2Vz
c2lvbklkLCB0eXBlLCBzYW5pdGl6ZWRSZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxl
dGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChib29sIHNlc3Npb25DbG9zZWQsIE9wdGlvbmFs
PENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtleVN0YXR1c2VzLCBPcHRp
b25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+dXBkYXRlTGljZW5zZShzZXNzaW9u
SWQsIHR5cGUsIHNhbml0aXplZFJlc3BvbnNlLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGJvb2wgc2Vzc2lvbkNsb3NlZCwgc3RkOjpvcHRpb25h
bDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrZXlTdGF0dXNlcywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvblRpbWUsIHN0ZDo6b3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oc2Vzc2lv
bkNsb3NlZCwgV1RGTW92ZShrZXlTdGF0dXNlcyksIFdURk1vdmUoZXhwaXJhdGlvblRpbWUpLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVk
ZWQpOwogICAgIH0pOwogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNz
aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPmxvYWRTZXNzaW9u
KHR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9uVGltZSwgT3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNz
aW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5sb2FkU2Vz
c2lvbih0eXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFtjb21wbGV0aW9uID0gV1RG
TW92ZShjb21wbGV0aW9uKV0gKHN0ZDo6b3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+JiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGV4cGly
YXRpb25UaW1lLCBzdGQ6Om9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBt
ZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAg
ICAgICBjb21wbGV0aW9uKFdURk1vdmUoa2V5U3RhdHVzZXMpLCBXVEZNb3ZlKGV4cGlyYXRpb25U
aW1lKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkLCBmYWlsdXJlKTsKICAgICB9KTsKIH0KQEAgLTExNSw4ICsxMTUsOCBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUg
dHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9z
ZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
JiYga2V5U3RhdHVzZXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNz
aW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0
YWJsZSB7Ci0gICAgICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNl
c3Npb25EYXRhUmVmZXJlbmNlOworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vz
c2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7
CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNl
c3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGly
ZWRTZXNzaW9uc0RhdGEpKTsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGtleVN0YXR1c2Vz
KSwgV1RGTW92ZShleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UpLCBzdWNjZWVkZWQgPT0gQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApp
bmRleCA1MThmY2FjZDFhZDIxYjk1MjA2ZDFjOTkyNzVkMWJkYTYxNzJmNmVlLi44YTYxZjlkNWZh
YmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaApAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdXNpbmcgTWVzc2FnZSA9IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZTsKICAgICB1c2luZyBTZXNzaW9uTG9h
ZEZhaWx1cmUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVy
ZTsKICAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYmLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCwgYm9v
bCk+OwotICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgT3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBPcHRpb25hbDxkb3VibGU+
JiYsIE9wdGlvbmFsPE1lc3NhZ2U+JiYsIGJvb2wpPjsKLSAgICB1c2luZyBMb2FkU2Vzc2lvbkNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiwgT3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCwgU2Vzc2lv
bkxvYWRGYWlsdXJlKT47CisgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiwg
c3RkOjpvcHRpb25hbDxkb3VibGU+JiYsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiwgYm9vbCk+
OworICAgIHVzaW5nIExvYWRTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4m
Jiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmLCBib29sLCBTZXNzaW9uTG9hZEZhaWx1cmUpPjsK
ICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT47Ci0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4mJiwgYm9vbCk+OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyQ29weT4mJiwgYm9vbCk+OwogICAgIHVzaW5nIFN0b3JlUmVjb3JkQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogCiAgICAgLy8gTWVzc2FnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAxNjE4NzJlYjBj
NmYwM2M0M2I5YTgwMGU0OTViNzE1NmI2YzM0NmM0Li42MTJlYWEzOGFkZDI2NDNjZDYxOTgyYTBh
N2RlZjU4ZTM0NTBmOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yNywxMCArMjcsMTAgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgUmVxdWVzdExpY2Vuc2UoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGlu
aXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGluaXREYXRhKSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IG1lc3NhZ2UsIFN0cmluZyBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlk
dWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCi0gICAgVXBkYXRlTGljZW5zZShTdHJp
bmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSByZXNwb25zZSkgLT4gKGJvb2wgc2Vzc2lvbldhc0Ns
b3NlZCwgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+IGNoYW5nZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+IGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wg
c3VjY2VlZGVkKSBBc3luYwotICAgIExvYWRTZXNzaW9uKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbikg
LT4gKE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
PiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9u
YWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1
Y2NlZWRlZCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lv
bkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJlKSBBc3luYworICAgIFVwZGF0ZUxpY2Vuc2UoU3RyaW5n
IHNlc3Npb25JZCwgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgcmVzcG9uc2UpIC0+IChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3I+IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY2hhbmdlZEV4cGlyYXRp
b24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBt
ZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBMb2FkU2Vzc2lvbihXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uSWQsIFN0
cmluZyBvcmlnaW4pIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNo
YW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQsIGVudW06dWludDhfdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBsb2FkRmFpbHVyZSkgQXN5
bmMKICAgICBDbG9zZVNlc3Npb24oU3RyaW5nIHNlc3Npb25JZCkgLT4gKCkgQXN5bmMKLSAgICBS
ZW1vdmVTZXNzaW9uRGF0YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246OkxpY2Vuc2VUeXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKKyAgICBSZW1vdmVTZXNzaW9uRGF0
YShTdHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VU
eXBlIHR5cGUpIC0+IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1lc3Nh
Z2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwogICAgIFN0b3JlUmVjb3JkT2ZLZXlVc2FnZShTdHJp
bmcgc2Vzc2lvbklkKQogICAgIERpc3BsYXlJRENoYW5nZWQodWludDMyX3QgZGlzcGxheUlEKQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5j
cHAKaW5kZXggZTg1ZTAxMzhhODg2NzA0OGI1MTJjYTRkOWUxZTJmNmRlMDc5ZjA1OS4uNWU1NGU4
MjNkN2U3N2NiYjYwN2Q1NjEyNmEyOTI2ZTI0NmFmYzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVS
ZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gUmVtb3RlQ0RNUHJveHk6
OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChz
ZXNzaW9uSWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaAppbmRleCA4NjYwYWRjN2IwOTBiNWJjNmQzOTg4YWIzMGIwMDZjNThiNmEzZjBh
Li42OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiByZXNwb25zZSk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDY2
ZjJjMTg0MGE3MzZlYmRhMzAyMzgxMDY2N2U2Nzg4MjU1Yzg0ZTQuLjEyMTQxZDEyYjZiYmJiYTMy
NzA4ZGE0ZjNlYWI4OGM3NjNjM2E4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2
LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNETVByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIEdldFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oc3RydWN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZh
dGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pIEFzeW5jCisg
ICAgR2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6
Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFjY2VzcykgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uKSBBc3luYwogICAgIENyZWF0ZUluc3RhbmNlKCkgLT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cwogICAgIExvYWRBbmRJ
bml0aWFsaXplKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCmluZGV4IGQ3NmZjZjFhNmZj
ODE2NmU1MzRhOTVkZjIyNTM2MGViNjRmODRjMWQuLjk2ODNlZGUwOWY5NmZjZDlkMTkzZjM0MmZi
NWYwOGNiYWFiMjlmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcApAQCAtNDUsMTEgKzQ1
LDExIEBAIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiB7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFW
Rk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKIAotICAgIE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50
aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZURl
Y29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VE
ZWNvZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpbWFnZURl
Y29kZXJJZGVudGlmaWVyKSk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShJbWFnZURlY29kZXJJZGVudGlm
aWVyIGkKICAgICBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpLT5zZXRFeHBlY3RlZENv
bnRlbnRTaXplKGV4cGVjdGVkQ29udGVudFNpemUpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBo
YXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhp
ZGVudGlmaWVyKSkgewpAQCAtMTA2LDE4ICsxMDYsMTggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnMKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwog
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZv
czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZy
YW1lSW5mb3M7CiAgICAgaWYgKGZyYW1lQ291bnQpCiAgICAgICAgIGZyYW1lSW5mb3MgPSBpbWFn
ZURlY29kZXItPmZyYW1lSW5mb3MoKTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lQ291
bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBpbWFnZURlY29kZXItPmhhc1RyYWNrKCksIFdURk1v
dmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Ojpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Ojpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6
TWFjaFNlbmRSaWdodD4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVj
b2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRS
aWdodD4gc2VuZFJpZ2h0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4g
c2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwg
V1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
LmgKaW5kZXggMTFiM2FlMTllNjRiOTNkN2Y0NGY1ZmE2ZTg3Y2EyYzQ3ZTRlOGMzNi4uZTJjMTEx
YzQwYTRkMzQyOTExZGY0YTE5YWYxYWIwZjU3MTgxYWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
LmgKQEAgLTUyLDExICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlRGVjb2Rl
cihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAg
dm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKLSAgICB2b2lkIHNldERhdGEoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1l
Q291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAg
ICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+
JiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJik7
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFu
Z2VkKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDI4NDdjNTYyYzNmY2NiYmMzOWRlOWZkZjk3NDRk
NTJmZjdkZGZhMTguLjE5OGIyYjIzY2U2ZmMwZjRmZjMyMzgzNjUzODZhODZmYzk0ZGFjYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDExICsyOCwx
MSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAg
ICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBTdHJp
bmcgbWltZVR5cGUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
PiBpZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25v
dXMKICAgICBEZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0g
ICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
LT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJh
Y2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZy
YW1lSW5mb3MpIFN5bmNocm9ub3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChP
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKKyAgICBTZXREYXRhKFdl
YkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZy
YW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9z
KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KSAtPiAoc3RkOjpvcHRp
b25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHNpemVfdCBpbmRleCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAwZThh
ODFjNjU2ZGM4NTAxNDgzOTY2YzBmYWIwZDEwZDhiN2QwYWM4Li42YWE0ZDFlNzJhOGNlMjllYTdl
ZmEyOGRkYjliMzc0ZjE4ZjNkNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAt
NTgsNyArNTgsNyBAQCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkoKQogICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcHJveHkua2V5LnRvVUludDY0
KCkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+JiYg
b3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFsPE1l
ZGlhUGxheWVySWRlbnRpZmllcj4mJiBvcHRpb25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYgY29tcGxldGlvbikKIHsKICAg
ICBhdXRvIHByaXZhdGVDRE0gPSBMZWdhY3lDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOwogICAgIGlm
ICghcHJpdmF0ZUNETSkgewpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxN
ZQogICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uKQordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbikKIHsKICAgICBpZiAobWltZVR5cGUpCiAgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RN
OjprZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmgKaW5kZXggMTEzZmE5NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5
MWQxNTNiMi4uZDg3NDlkZTEwMWE5NjhlYWEwMDFjN2IxYmRlZTE4ODY3MzhmODI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZv
aWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciYmKT4mJik7Ci0gICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+
JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4+IG1fcHJveGllczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJjZWQzYzFh
MmI4NzJkMDY0MzFkY2Q3OTljMzQyNGRkODQxMDE5MTEuLmUxYTZjM2NkMGEyYzZiZmE5ZjYwZTNk
YmUzZDQ4MTU1NzMzMTA1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjQsOCArMjQsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5
c3RlbSwgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkg
LT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJv
bm91cwotICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0
cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVD
RE0oU3RyaW5nIGtleVN5c3RlbSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklk
ZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtl
eVN5c3RlbSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKaW5kZXggYzc0NWY3MTdmMjMz
NDZiZGZmZjA1ZWQyNDM3ZjZhMWM1NTIxMTQ2Zi4uYmY1MTc1OTJhMDFlMGVlYWM3YzJjOGM5NTg5
NWJjMmZhOGUzNzY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVt
b3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IENyZWF0ZVNlc3Npb25DCiAgICAgY2FsbGJhY2soV1RGTW92ZShpZGVudGlmaWVyKSk7CiB9CiAK
LXZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKE9wdGlvbmFsPE1lZGlhUGxh
eWVySWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNl
dFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmIHBsYXllcklk
KQogewogICAgIGlmICghcGxheWVySWQpCiAgICAgICAgIG1fcGxheWVySWQgPSB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oCmluZGV4IDQyZDA5NDE1ODZiNThiMTRhMzAyMmRjYzBjYTY1YmVlMjBlNzYwZTYuLmUyY2Qw
NWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC02Myw3
ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKICAgICB1c2luZyBDcmVhdGVTZXNzaW9u
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJiYpPjsKICAgICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ3Jl
YXRlU2Vzc2lvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgc2V0UGxheWVySWQoT3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKKyAgICB2b2lkIHNldFBsYXllcklkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8v
IExlZ2FjeUNETUNsaWVudAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVk
aWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVnYWN5Q0RNKikgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYzRjZjQ1ZDMyZTkwMzJiZWQzODY3ZjMyM2FkMDVl
MzU5OTFhY2JiNS4uOGVjNmIzYjdhYWVmNmIxYjVmZDZmMGUzODU3ZmRjNTFhMmFmNjYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMg
LT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU3VwcG9ydHNNSU1F
VHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cwogICAg
IENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9u
b3VzCi0gICAgU2V0UGxheWVySWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlm
aWVyPiBwbGF5ZXJJZCkKKyAgICBTZXRQbGF5ZXJJZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVySWQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcAppbmRleCA4ZWU5ZWU4ZTEzMjI0MjQxNDY2NmU4YmVkYzk4ZmQ2NGUyMjFk
MDBmLi45M2IyZmY3NDFiMWY4MzY5YjIwNTg0ZTQ5N2U0YTAyMWI5Y2NmNTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4
QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVy
KQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGM5MGY1ZGExMzIx
MDAxNzU1ZjQwYWFlNDU2ZDk3ZGZhODVjMGJlOTMuLmYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTky
YjNjNDFiMjIyYzdmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTc3LDEyICs3Nywx
MiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3QgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4mJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdXNp
bmcgR2VuZXJhdGVLZXlDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNo
b3J0LCB1aW50MzJfdCk+OwogICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBHZW5lcmF0ZUtl
eUNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKTsKLSAgICB1c2luZyBVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiYmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKKyAgICB1c2luZyBV
cGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYsIHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+Owog
ICAgIHZvaWQgdXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQ2Fs
bGJhY2smJik7Ci0gICAgdXNpbmcgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmKT47CisgICAg
dXNpbmcgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYpPjsKICAgICB2b2lkIGNhY2hl
ZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmKTsK
IAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhNmNjNzZhMWJh
ZmIyYWM0OTM1MzRiNzE0OWI5NWMyOTU0MGI3NTRmLi41YWUwYzVmMjVhOWYzMDA4NGQ4NDc4ZWQw
MzkwNDZlOGZmZmIyMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTI0LDEwICsyNCwxMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3Ry
aW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgaW5pdERhdGEpIC0+IChPcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25V
UkwsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgU3luY2hy
b25vdXMKKyAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgaW5pdERhdGEpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4gbmV4dE1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBTeW5jaHJvbm91cwogICAgIFJlbGVhc2VL
ZXlzKCkKLSAgICBVcGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHVwZGF0ZSkgLT4gKGJvb2wg
c3VjY2VlZGVkLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNzYWdlLCB1
bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3Vz
Ci0gICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkKSAtPiAoT3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJDb3B5PiBrZXkpIFN5bmNocm9ub3VzCisgICAgVXBkYXRlKElQQzo6U2hhcmVk
QnVmZmVyQ29weSB1cGRhdGUpIC0+IChib29sIHN1Y2NlZWRlZCwgc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk+IG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUs
IHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCisgICAgQ2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGtl
eSkgU3luY2hyb25vdXMKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRGVzY3JpcHRpb24uaAppbmRleCBhMzkwMDFmZmI3
OTk1OWJhNzU3OGJiNjAzYmYwZjg4OWE4ZTMxY2ZjLi44ZDk5MGM0M2VhNjU4NjFkMDFjN2FmNzY2
OGUwMjU1OTU3NGE0NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0aW9uLmgKQEAgLTY4LDI0ICs2OCwyNCBAQCBzdHJ1
Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm8gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPgotICAgIHN0YXRpYyBPcHRpb25hbDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFEZXNjcmlw
dGlvbkluZm8+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBjb2RlYzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvZGVjOwog
ICAgICAgICBkZWNvZGVyID4+IGNvZGVjOwogICAgICAgICBpZiAoIWNvZGVjKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc1ZpZGVv
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzVmlkZW87CiAgICAgICAgIGRlY29kZXIg
Pj4gaXNWaWRlbzsKICAgICAgICAgaWYgKCFpc1ZpZGVvKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0F1ZGlvOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXVkaW87CiAgICAgICAgIGRlY29kZXIgPj4gaXNBdWRpbzsK
ICAgICAgICAgaWYgKCFpc0F1ZGlvKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBPcHRpb25hbDxib29sPiBpc1RleHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNUZXh0OwogICAgICAgICBkZWNvZGVyID4+IGlzVGV4dDsKICAgICAgICAgaWYgKCFp
c1RleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CmluZGV4IGIwMDc3ZWQxZjZlNDY5MGRhZGVjNDgxYTU4ZDBjMDliOWVmMWI3MTUuLjRmNThlZDFj
NTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQwNjY4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmdldENvbmZpZ3Vy
YXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiBjbwogICAgIH0pOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29uc3QgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJs
LCBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICAgICBpZiAoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkgewpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
c2VuZENhY2hlZFN0YXRlKCkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKE9wdGlv
bmFsPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyPiYmIGluc3RhbmNlSWQpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldExlZ2FjeUNETVNlc3Npb24oc3RkOjpvcHRpb25h
bDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4mJiBpbnN0YW5jZUlkKQogewogICAg
IEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkpOwogICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKSkKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHRhc2tUaW1lLCBN
CiAgICAgfSwgYWRqdXN0ZWRUYXNrVGltZSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6d291bGRUYWludE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IG9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8Ym9vbD4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp3b3VsZFRhaW50
T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihtX3BsYXllci0+d291bGRUYWludE9yaWdp
bihvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZi
MGViYjMwOTFkZDA1NGYwZjUwMDNlZDkwZDkxM2QxM2E0NjE4NzUuLjg2NGUyZTM4YmExZGNhNTlk
ZDlmZTEzZTlhYmYxMjY4NTQ2YzAyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTEwLDEwICsxMTAs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxh
eWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBw
cml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVz
ZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRT
Y2FsZSwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4
dElkKT4mJik7CisgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwg
Ym9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2ViQ29y
ZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYm
KTsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIAotICAgIHZvaWQgbG9hZChVUkwm
JiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpD
b250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIGxvYWQoVVJMJiYsIHN0
ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpD
b250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQogICAgIHZvaWQgbG9hZE1lZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50
VHlwZSYsIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24m
Jik+JiYpOwogI2VuZGlmCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICB2b2lkIHNldExlZ2FjeUNETVNl
c3Npb24oT3B0aW9uYWw8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI+JiYgaW5zdGFu
Y2VJZCk7CisgICAgdm9pZCBzZXRMZWdhY3lDRE1TZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI+JiYgaW5zdGFuY2VJZCk7CiAgICAgdm9pZCBrZXlB
ZGRlZCgpOwogI2VuZGlmCiAKQEAgLTE4Niw5ICsxODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB2
aWRlb1RyYWNrU2V0U2VsZWN0ZWQoY29uc3QgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciYs
IGJvb2wpOwogICAgIHZvaWQgdGV4dFRyYWNrU2V0TW9kZShjb25zdCBUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSk7CiAK
LSAgICB1c2luZyBQZXJmb3JtVGFza0F0TWVkaWFUaW1lQ29tcGxldGlvbkhhbmRsZXIgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPE1lZGlhVGltZT4sIE9wdGlvbmFsPE1vbm90b25p
Y1RpbWU+KT47CisgICAgdXNpbmcgUGVyZm9ybVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5k
bGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4sIHN0
ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4pPjsKICAgICB2b2lkIHBlcmZvcm1UYXNrQXRNZWRp
YVRpbWUoY29uc3QgTWVkaWFUaW1lJiwgTW9ub3RvbmljVGltZSwgUGVyZm9ybVRhc2tBdE1lZGlh
VGltZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgd291bGRUYWludE9yaWdpbihzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPGJvb2w+KT4mJik7CisgICAgdm9pZCB3b3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxib29sPik+JiYpOwogCiAgICAgdm9pZCBzZXRWaWRlb1BsYXliYWNrTWV0cmljc1VwZGF0
ZUludGVydmFsKGRvdWJsZSk7CiAKQEAgLTI5Niw4ICsyOTYsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3VycmVudFRpbWVDaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdm9pZCBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJik7Ci0gICAgdm9pZCBw
aXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJik7CisgICAgdm9pZCBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5k
UmlnaHQ+JiYpPiYmKTsKKyAgICB2b2lkIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYp
OwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0Myw3ICszNDMsNyBA
QCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVk
ZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyPiBtX2xlZ2FjeVNlc3Npb247CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllcj4gbV9sZWdhY3lTZXNzaW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggNWNkMTE2OTkwZjdjNzJhODVmNzU2ZTkzNDdiOTAwNDg3MzA4YmZhMi4uNzJl
OTU0NjlhZDEyMGRiYTc1YjFhYjlkZTlkYWE3OTc1ZGI4ZDU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDkgKzI0LDkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7
Ci0gICAgUHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUs
IGVudW06dWludDhfdCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlIG1vZGUpIC0+IChPcHRpb25h
bDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4
dElkKSBBc3luYworICAgIFByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29s
IHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29u
dGVudFNjYWxlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSBtb2RlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5
ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCi0gICAgTG9hZChVUkwgdXJsLCBPcHRpb25hbDxX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29y
ZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlv
bikgQXN5bmMKKyAgICBMb2FkKFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBl
IGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29y
ZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQsIFdlYktp
dDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4g
KHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25m
aWd1cmF0aW9uKSBBc3luYwogI2VuZGlmCkBAIC03Niw3ICs3Niw3IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIFNldExlZ2FjeUNETVNlc3Npb24oT3B0aW9u
YWw8V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gaW5zdGFuY2VJZCkK
KyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllcj4gaW5zdGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5k
aWYKIApAQCAtMTA1LDggKzEwNSw4IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJv
eHkgTm90UmVmQ291bnRlZCB7CiAgICAgVmlkZW9UcmFja1NldFNlbGVjdGVkKFdlYktpdDo6VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHNlbGVjdGVkKQogICAg
IFRleHRUcmFja1NldE1vZGUoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpN
b2RlIG1vZGUpCiAKLSAgICBQZXJmb3JtVGFza0F0TWVkaWFUaW1lKE1lZGlhVGltZSBtZWRpYVRp
bWUsIE1vbm90b25pY1RpbWUgbWVzc2FnZVRpbWUpIC0+IChPcHRpb25hbDxNZWRpYVRpbWU+IG1l
ZGlhVGltZSwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbW9ub3RvbmljVGltZSkgQXN5bmMKLSAg
ICBXb3VsZFRhaW50T3JpZ2luKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3Jp
Z2luKSAtPiAoT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludCkgU3luY2hyb25vdXMKKyAgICBQZXJm
b3JtVGFza0F0TWVkaWFUaW1lKE1lZGlhVGltZSBtZWRpYVRpbWUsIE1vbm90b25pY1RpbWUgbWVz
c2FnZVRpbWUpIC0+IChzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gbWVkaWFUaW1lLCBzdGQ6Om9w
dGlvbmFsPE1vbm90b25pY1RpbWU+IG1vbm90b25pY1RpbWUpIEFzeW5jCisgICAgV291bGRUYWlu
dE9yaWdpbihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gd291bGRUYWludCkgU3luY2hyb25vdXMKIAogICAgIFNldFZpZGVv
UGxheWJhY2tNZXRyaWNzVXBkYXRlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogCkBAIC0xMjMs
OCArMTIzLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNo
cm9ub3VzCi0gICAgUGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIC0+IChPcHRpb25hbDxNYWNo
U2VuZFJpZ2h0PiBzZW5kUmlnaHQpIFN5bmNocm9ub3VzCisgICAgTmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIC0+IChzdGQ6Om9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCkgU3lu
Y2hyb25vdXMKKyAgICBQaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0KSBTeW5jaHJvbm91cwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKaW5kZXggMmVmYTE0ZWI3NTMxNGRk
OGQ2OWVmNzhhODE0ZjIzYzViNjc0MzY0Ny4uYWUxZDk5ZmQ2NjEzMDM4ZWY5OGZhN2IyNTViNDlh
ODVkMTdlM2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgKQEAg
LTY4LDYxICs2OCw2MSBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRp
b24gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBP
cHRpb25hbDxSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAg
ICAgT3B0aW9uYWw8U3RyaW5nPiByZWZlcnJlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHJlZmVycmVyOwogICAgICAgICBkZWNvZGVyID4+IHJlZmVycmVyOwogICAgICAgICBpZiAo
IXJlZmVycmVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHVzZXJBZ2VudDsKICAgICAgICAgZGVjb2RlciA+PiB1c2VyQWdlbnQ7CiAgICAgICAgIGlmICgh
dXNlckFnZW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKICAgICAgICAg
ZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtJbnRlcmZhY2VOYW1lOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAg
IGRlY29kZXIgPj4gbmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAgIGlmICghbmV0d29ya0lu
dGVyZmFjZU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IG1lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpDb250ZW50VHlwZT4+IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVT
dXBwb3J0OwogICAgICAgICBkZWNvZGVyID4+IG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0OwogICAgICAgICBpZiAoIW1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gcHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3M7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHByZWZlcnJlZEF1ZGlvQ2hh
cmFjdGVyaXN0aWNzOwogICAgICAgICBkZWNvZGVyID4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVy
aXN0aWNzOwogICAgICAgICBpZiAoIXByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFja0RhdGE+
PiBvdXRPZkJhbmRUcmFja0RhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlBsYXRmb3JtVGV4dFRyYWNrRGF0YT4+IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAgICAg
ZGVjb2RlciA+PiBvdXRPZkJhbmRUcmFja0RhdGE7CiAgICAgICAgIGlmICghb3V0T2ZCYW5kVHJh
Y2tEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAg
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZG9jdW1lbnRTZWN1cml0
eU9yaWdpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4gZG9jdW1lbnRT
ZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYgKCFkb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gbG9nSWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG9nSWRl
bnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBsb2dJZGVudGlmaWVyOwogICAgICAgICBpZiAo
IWxvZ0lkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gc2hvdWxkVXNlUGVyc2lzdGVudENhY2hlOwogICAgICAgICBpZiAoIXNob3VsZFVzZVBl
cnNpc3RlbnRDYWNoZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaXNWaWRlbzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBp
c1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGlzVmlkZW87CiAgICAgICAgIGlmICghaXNWaWRl
bykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5k
ZXggZTYyMGEwNWZlZGI1MTZlMTg5NmNmZWVlM2U2MzI0MTFlMmQwOTQzMS4uNjMwZWJmY2FjMjAw
MWMwNjZiOTViNjIyM2QyNjkyMGRhNzkyNmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50CiAgICAgUmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGU+IHNvdXJjZUJ1ZmZlclByaXZhdGU7CiAgICAgTWVkaWFTb3VyY2VQcml2YXRl
OjpBZGRTdGF0dXMgc3RhdHVzID0gbV9wcml2YXRlLT5hZGRTb3VyY2VCdWZmZXIoY29udGVudFR5
cGUsIG1fd2ViTVBhcnNlckVuYWJsZWQsIHNvdXJjZUJ1ZmZlclByaXZhdGUpOwogCi0gICAgT3B0
aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4gcmVtb3RlU291cmNlSWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90
ZVNvdXJjZUlkZW50aWZpZXI7CiAgICAgaWYgKHN0YXR1cyA9PSBNZWRpYVNvdXJjZVByaXZhdGU6
OkFkZFN0YXR1czo6T2spIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlU291cmNl
QnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byByZW1vdGVTb3VyY2VC
dWZmZXJQcm94eSA9IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpjcmVhdGUoKm1fY29ubmVjdGlv
blRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgc291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNlTm9u
TnVsbCgpLCAqbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDRk
YTZiNWFiMmQ2OTQ1ZDdkMjg5NjVlZjE0YWExOWI4ZWE4Mzg5ZWYuLmMzZGRmZmE0NGFlNzI0ZDE5
MjdlMmU4ZDAxNWFhN2Y1NDdmMzljZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBm
aW5hbDsKIAotICAgIHVzaW5nIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cywgT3B0aW9u
YWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4pPjsKKyAgICB1c2luZyBBZGRTb3VyY2VC
dWZmZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcj4pPjsKICAgICB2b2lkIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYsIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNrJiYpOwogICAgIHZvaWQgZHVyYXRpb25D
aGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgYnVmZmVyZWRDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA4MGQ2NjIwZWJjNWI4YTMzZmY1ZWY4MjU1NTZiOTEzOWQ5Y2JjMmI2Li5l
ZDgxMmYyNWIzNGY0NTgxZWQ2ZTY2OWE0ZjIxYzA0NTZkNTAxOWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFT
b3VyY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBBZGRTb3VyY2VCdWZmZXIoV2ViQ29yZTo6
Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3RhdHVzLCBPcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNo
cm9ub3VzCisgICAgQWRkU291cmNlQnVmZmVyKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRU
eXBlKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3Rh
dHVzIHN0YXR1cywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRHVy
YXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikKICAgICBCdWZmZXJlZENoYW5nZWQoV2Vi
Q29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIGJ1ZmZlcmVkKQogICAgIFNldFJlYWR5U3RhdGUoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBlOWZkZjcwMTQwMDQwOTk0ZmUwNWRm
MWU3OGFiNGU2YjVjM2VmOTRiLi44ZDYzYzNhMzJhNTJjNTUzOWIzMTE5YjVmMWYyY2MwYmY3YTY5
NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtNzEsNzQg
KzcxLDc0IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJp
bmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKICAgICAgICAgaWYgKCF0
cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5n
PiBsYWJlbDsKICAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKICAgICAgICAgaWYgKCFsYWJlbCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXRv
bVN0cmluZz4gbGFuZ3VhZ2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbGFu
Z3VhZ2U7CiAgICAgICAgIGRlY29kZXIgPj4gbGFuZ3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3Vh
Z2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PEF0b21TdHJpbmc+IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsK
ICAgICAgICAgZGVjb2RlciA+PiBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwogICAg
ICAgICBpZiAoIWluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRU
aW1lVmFyaWFuY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWVW
YXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAg
aWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiB0cmFja0luZGV4OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gdHJhY2tJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiB0cmFja0luZGV4OwogICAg
ICAgICBpZiAoIXRyYWNrSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZv
cm1hdD4gY3VlRm9ybWF0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4gY3VlRm9ybWF0OwogICAgICAgICBkZWNvZGVyID4+
IGN1ZUZvcm1hdDsKICAgICAgICAgaWYgKCFjdWVGb3JtYXQpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OktpbmQ+IGtpbmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZD4ga2luZDsKICAgICAgICAgZGVjb2RlciA+PiBraW5k
OwogICAgICAgICBpZiAoIWtpbmQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzQ2xvc2VkQ2FwdGlvbnM7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaXNDbG9zZWRDYXB0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBpc0Ns
b3NlZENhcHRpb25zOwogICAgICAgICBpZiAoIWlzQ2xvc2VkQ2FwdGlvbnMpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzU0RIOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzU0RIOwogICAgICAgICBkZWNvZGVyID4+IGlz
U0RIOwogICAgICAgICBpZiAoIWlzU0RIKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXM7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
OwogICAgICAgICBkZWNvZGVyID4+IGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAg
ICAgaWYgKCFjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTWFpblByb2dyYW1Db250
ZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50Owog
ICAgICAgICBkZWNvZGVyID4+IGlzTWFpblByb2dyYW1Db250ZW50OwogICAgICAgICBpZiAoIWlz
TWFpblByb2dyYW1Db250ZW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDxib29sPiBpc0Vhc3lUb1JlYWQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXNFYXN5VG9SZWFkOwogICAgICAgICBkZWNvZGVyID4+IGlzRWFzeVRvUmVhZDsK
ICAgICAgICAgaWYgKCFpc0Vhc3lUb1JlYWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNEZWZhdWx0Owog
ICAgICAgICBpZiAoIWlzRGVmYXVsdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Ry
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCAyOWRmMjM1ZmYxZDMxZTZkZTky
M2JhZWE0YWM3N2Q2MjgxOTg1OThlLi44MzFlYmE0Mjc4MGI2ZTZjMWMyOGRjZjM1YmJkYzJmZTFi
MTVlNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTYxLDQ5ICs2MSw0
OSBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4g
dHJhY2tJZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwogICAg
ICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAgICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4g
bGFiZWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CiAgICAgICAg
IGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhbmd1YWdl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEF0b21TdHJpbmc+IGxhbmd1YWdlOwogICAgICAgICBk
ZWNvZGVyID4+IGxhbmd1YWdlOwogICAgICAgICBpZiAoIWxhbmd1YWdlKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0
VGltZVZhcmlhbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1l
VmFyaWFuY2U7CiAgICAgICAgIGRlY29kZXIgPj4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAg
IGlmICghc3RhcnRUaW1lVmFyaWFuY2UpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPGludD4gdHJhY2tJbmRleDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHRyYWNrSW5kZXg7CiAgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKICAg
ICAgICAgaWYgKCF0cmFja0luZGV4KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVkOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYg
KCFlbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZD4gYXVkaW9LaW5kOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kPiBhdWRp
b0tpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9LaW5kOwogICAgICAgICBpZiAoIWF1ZGlv
S2luZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gc2VsZWN0ZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gc2VsZWN0ZWQ7CiAgICAgICAgIGlmICghc2VsZWN0ZWQpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlOjpLaW5kPiB2aWRlb0tpbmQ7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGU6OktpbmQ+IHZpZGVvS2luZDsKICAgICAg
ICAgZGVjb2RlciA+PiB2aWRlb0tpbmQ7CiAgICAgICAgIGlmICghdmlkZW9LaW5kKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
Y29hLm1tCmluZGV4IDMxMTQ4NmFlNWFkNzY2NzJmZWIxNDFkNTI5NWU5MDVmNmE4MzNkNTAuLmI4
NWJlNmM3YWJmZjVlMzIzNTIwOTIyOGNmMDZkODkxNWIzOTM5NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBzZXRW
aWRlb0lubGluZVNpemVJZlBvc3NpYmxlKExheWVySG9zdGluZ0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFdlYgogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRj
aCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgV2Vi
Q29yZTo6RHluYW1pY1JhbmdlTW9kZSBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVM
YXllckhvc3RpbmdDb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1Bp
dGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBX
ZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlIHByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYg
aW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAgICAgbV9w
bGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9JbmxpbmVTaXplRmVuY2VkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYKICAgICBzZXRWaWRlb0lubGluZVNpemVJZlBvc3NpYmxlKCptX2lubGluZUxh
eWVySG9zdGluZ0NvbnRleHQsIHNpemUpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9wbGF5ZXIpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1cmZhY2UtPmNyZWF0ZVNlbmRS
aWdodCgpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2Vu
ZFJpZ2h0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiAhVVNFKEFWRk9VTkRBVElPTikKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dzdHJl
YW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9nc3RyZWFtZXIvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUdTdHJlYW1l
ci5jcHAKaW5kZXggMDk1ZmU1ZGJjZWRmNjhhMDQyNzFlMzg0YzA0NTg1ZTUzYWY5YmRhYS4uOWVk
MGJjODdhNzZlN2U5Njk1YWNiMDA1NzAyMzA1MTU2NWYxNjUxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2dzdHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvZ3N0cmVh
bWVyL1JlbW90ZU1lZGlhUGxheWVyUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnBy
ZXBhcmVGb3JQbGF5YmFjayhib29sLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2Fk
LCBib29sLCBib29sLCBmbG9hdCwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5
ZXJIb3N0aW5nQ29udGV4dElkKT4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJl
cGFyZUZvclBsYXliYWNrKGJvb2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
IGJvb2wsIGJvb2wsIGZsb2F0LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGlu
ZUxheWVySG9zdGluZ0NvbnRleHRJZCk+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9wbGF5c3RhdGlvbi9S
ZW1vdGVNZWRpYVBsYXllclByb3h5UGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlv
bi5jcHAKaW5kZXggNjdlMzljNjMyYjdiMDYyMmM4ZmE2Njk4MjYyN2VmZGNhYTBkMDE3OC4uYTIx
OWE4NDI1MjQyZWZlMTNlNGJmYTVjNDllMTFjZjY0MzU4NmUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3BsYXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHlQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3Bs
YXlzdGF0aW9uL1JlbW90ZU1lZGlhUGxheWVyUHJveHlQbGF5U3RhdGlvbi5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBp
bmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpPiYmKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCwgYm9vbCwgYm9vbCwgZmxvYXQsIFdlYkNvcmU6OkR5bmFtaWNSYW5nZU1vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+
JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL3dpbi9S
ZW1vdGVNZWRpYVBsYXllclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS93aW4vUmVtb3RlTWVkaWFQbGF5ZXJQcm94eVdpbi5jcHAKaW5kZXggZGE1YmI5ZTc2NmVh
YTBkNTMzMTkzZjA2YTViZjk5ZWEzODY5ODE0ZC4uOThlZDg3NmI5MTFiNDdmYTVhYzE5Nzk1N2Fj
ZDFhMWU2ZWQwNDZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvd2luL1JlbW90ZU1lZGlhUGxheWVyUHJveHlXaW4uY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpQcmVsb2FkLCBib29sLCBib29sLCBmbG9hdCwgV2ViQ29yZTo6RHluYW1pY1JhbmdlTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYg
aW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlByZWxvYWQsIGJvb2wsIGJvb2wsIGZsb2F0LCBXZWJDb3JlOjpEeW5hbWljUmFuZ2VNb2RlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElE
PiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCk+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggMzhhMDU2ODdiNGRjMjA0
YjNjZjFiMGRiMjZlYTRhNGU0NjkyYTNlYi4uZjBiZmM4ZmE1ZDMzMDBmNGQwMjI4NDUyNjVjOWEz
ZDJhY2YyZTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlbW90ZU1lZGlh
UmVjb3JkZXJNZXNzYWdlKElQQzo6Q29ubmUKICAgICAgICAgcmVjb3JkZXItPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8RXhjZXB0aW9uRGF0YT4mJiwgU3RyaW5nJiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVS
ZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlY29yZEF1
ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMm
IG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25E
YXRhPiYmLCBTdHJpbmcmJiwgdW5zaWduZWQsIHVuc2lnbmVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIW1fcmVjb3JkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBhdXRvIHJlY29yZGVyID0gUmVtb3RlTWVkaWFSZWNvcmRlcjo6Y3JlYXRlKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgcmVjb3JkQXVkaW8sIHJlY29yZFZpZGVvLCBv
cHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAppbmRleCA4MThiMDE4ZDJkNjgwMWIwN2Vl
YTdkNTM3YTg3ODM1Yzg5MjgyZWVlLi4yZjI5ZmVmMmFmMmQzYzM2MTA5NmIzM2Y5ZjA5ZWUwNzc4
NzMwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAg
IHZvaWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3Jk
QXVkaW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4mJiwgU3RyaW5nJiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk+JiYpOworICAgIHZv
aWQgY3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIsIGJvb2wgcmVjb3JkQXVk
aW8sIGJvb2wgcmVjb3JkVmlkZW8sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmLCBTdHJpbmcmJiwgdW5zaWduZWQsIHVuc2lnbmVkKT4mJik7CiAgICAg
dm9pZCByZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIpOwogCiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNjcwNGI3MzM4OGU0
ODZjNzU4N2E0NWM4NjllODE4ZDMxNDUwYjYwNy4uYjQzYjNmNDRlZjIxMWU3ZTdkZWIyZTQ0YTg3
NGVlYjI2YWFhYWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewotICAgIENyZWF0ZVJlY29yZGVyKFdlYktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZp
ZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIHN0cnVjdCBXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMgb3B0aW9ucykgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+IGNyZWF0aW9uRXJyb3IsIFN0cmluZyBtaW1lVHlwZSwgdW5zaWduZWQgYXVk
aW9CaXRSYXRlLCB1bnNpZ25lZCB2aWRlb0JpdFJhdGUpIEFzeW5jCisgICAgQ3JlYXRlUmVjb3Jk
ZXIoV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZCwgYm9vbCBoYXNBdWRpbywgYm9v
bCBoYXNWaWRlbywgc3RydWN0IFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyBv
cHRpb25zKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlv
bkVycm9yLCBTdHJpbmcgbWltZVR5cGUsIHVuc2lnbmVkIGF1ZGlvQml0UmF0ZSwgdW5zaWduZWQg
dmlkZW9CaXRSYXRlKSBBc3luYwogICAgIFJlbGVhc2VSZWNvcmRlcihXZWJLaXQ6Ok1lZGlhUmVj
b3JkZXJJZGVudGlmaWVyIGlkKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCA3YjY3YWZlMjY2NmMwMWI4ZGRiNmE3NzAwYzMwYTg2ZTE5N2FiODkwLi43YjAxNWU3N2U4
YjZkZjA3NDc2OGM1Yzc3ZDQ4NTA2N2YzZjE4Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICB1c2lu
ZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGll
bnQ6OldlYWtWYWx1ZVR5cGU7CiAKLSAgICB1c2luZyBMYXllckluaXRpYWxpemF0aW9uQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJ
RD4pPjsKKyAgICB1c2luZyBMYXllckluaXRpYWxpemF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPik+OwogICAg
IHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIExh
eWVySW5pdGlhbGl6YXRpb25DYWxsYmFjayYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCmluZGV4IGU4
NDM2ZDQ2M2QyNjM3ZTY3MDk5NmM5YzFjZDk2YTAxMmRhZGVhMTguLjhlNjYyNjdkYzUwMjdmNjIy
NmEzY2UzNzZlMjdkZmY1MDQxMzVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAg
ICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
IAotICAgIHVzaW5nIExheWVyQ3JlYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPik+JiY7CisgICAgdXNpbmcgTGF5ZXJD
cmVhdGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPExh
eWVySG9zdGluZ0NvbnRleHRJRD4pPiYmOwogICAgIHZvaWQgY3JlYXRlTGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJ
bnRTaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2spOwogICAgIHZvaWQgcmVsZWFzZUxheWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZWQ1OWQy
YjMwY2RmM2QyYjQwYzIwNjgyYzM0Yjk0NDFiZmU5ZmEwMS4uOWQxZWM3N2YyMTFmMTg2ZTU4NGEy
MWQ2MWI0ZGNmODE5NWVkYzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIg
V2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZSB7Ci0gICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdl
YkNvcmU6OkludFNpemUgc2l6ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29u
dGV4dElEPiBjb250ZXh0SUQpIEFzeW5jCisgICAgQ3JlYXRlTGF5ZXIoV2ViS2l0OjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNv
cmU6OkludFNpemUgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0SUQ+IGNvbnRleHRJRCkgQXN5bmMKICAgICBSZWxlYXNlTGF5ZXIoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkKQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAyMjVmNzFl
MjQzZDYzMjM1MTE4YzliYzVjMWE3Yzg0ZmUzZTE1YjQ0Li44NDNhY2RjYjRhNGY0NDk3NDkwMmMz
Y2ZiNWYzNzAyMmZhODY2ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMwNSwyMSArMzA1LDIxIEBAIHN0YXRpYyBT
dHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdp
bmFsUXVlcnkpCiBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhR
dWVyaWVzKCkKIHsKICAgICBzdGF0aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiB7Ci0gICAgICAgIHsgIk9ic2VydmVkRG9t
YWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVP
YnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAotICAgICAgICB7ICJUb3BMZXZlbERvbWFp
bnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9w
TGV2ZWxEb21haW5zLCBzdGQ6Om51bGxvcHQpIH0sCi0gICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxT
dHJpbmc+PihjcmVhdGVTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5k
ZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0gICAg
ICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCi0g
ICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8
U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zy
b20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0
Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSkpIH0sCi0gICAgICAgIHsgIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3MsIHN0
ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0cywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0sCi0gICAg
ICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
cywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykpIH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3Ry
aW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1
ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucykpIH0sCi0gICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCi0g
ICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJ
bmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkpIH0sCi0gICAgICAgIHsgIk9wZXJh
dGluZ0RhdGVzIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNy
ZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3Jl
YXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIH0sCi0gICAgICAgIHsgIlVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlv
bmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCi0gICAgICAgIHsgIkF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25h
bDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlw
SW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0KKyAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9z
LCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT2Jz
ZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKKyAgICAgICAgeyAiVG9wTGV2ZWxEb21haW5z
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
VG9wTGV2ZWxEb21haW5zLCBzdGQ6Om51bGxvcHQpIH0sCisgICAgICAgIHsgIlN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucywg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKSkgfSwKKyAgICAgICAgeyAiVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4+KGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8pKSB9LAorICAgICAgICB7ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudCkpIH0sCisgICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKKyAg
ICAgICAgeyAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5k
ZXhUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20pKSB9LAorICAgICAgICB7ICJUb3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cywgc3Ry
aXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cykpIH0sCisgICAgICAgIHsgIlN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJp
bmc+PihjcmVhdGVTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLCBzdHJpcEluZGV4UXVlcnlU
b01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zKSkgfSwKKyAgICAgICAgeyAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJf
cywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9y
ZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMp
KSB9LAorICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1h
a2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0
ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCisgICAgICAgIHsg
IlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5n
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKKyAgICAgICAgeyAiT3BlcmF0aW5n
RGF0ZXMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVPcGVyYXRpbmdEYXRlcywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB9LAorICAgICAgICB7ICJVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCisgICAgICAgIHsgIkF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfQogICAgIH0pOwogICAgIAogICAg
IHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwpAQCAtMzk4LDcgKzM5OCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5JVFBEYXRhYmFz
ZSgpCiAgICAgfQogfQogCi1PcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gbWlzc2luZ1RhYmxlczsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudCgiU0VMRUNUIDEgZnJvbSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3Rh
YmxlJyBhbmQgdGJsX25hbWU9PyJfcyk7CkBAIC00NzAsMTQgKzQ3MCwxNCBAQCBUYWJsZUFuZElu
ZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gaW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluZGV4OwogICAgIGlm
IChnZXRJbmRleFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgYXV0
byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAg
ICAgICAgIGlmICghcmF3SW5kZXguaXNFbXB0eSgpKQogICAgICAgICAgICAgaW5kZXggPSByYXdJ
bmRleDsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25h
bDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihX
VEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50U2NoZW1hKCkKQEAgLTk5Miw3ICs5OTIsNyBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNv
dXJjZUxvYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoU1FMaXRlU3RhdGVtZW50QXV0b1Jl
c2V0U2NvcGUmIHN0YXRlbWVudCwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0Citib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUmIHN0YXRlbWVudCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Zmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29u
c3QKIHsKICAgICBpZiAoIWZpcnN0RG9tYWluSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhTUUxpdGVTdGF0ZW1lbnRBdXRvCiAgICAgcmV0dXJuICEh
c3RhdGVtZW50LT5jb2x1bW5JbnQoMCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0xNDUwLDcgKzE0NTAsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJgogICAgIHJldHVybiBy
ZWxhdGlvbnNoaXBFeGlzdHMoc2NvcGVkU3RhdGVtZW50LCBkb21haW5JRChzdWJGcmFtZURvbWFp
biksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNTg1LDcg
KzE1ODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIGdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlu
KSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgU3RvcmFnZUFjY2Vzc1Nj
b3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgU3RvcmFn
ZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMjA2Nyw4ICsyMDY3LDggQEAgU2Vjb25kcyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChj
b24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBzdWJGcmFtZURvbWFpbklEID0gZG9tYWluSUQoc3ViRG9tYWluKTsKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gdG9wRnJhbWVEb21haW5JRCA9IGRvbWFpbklEKHRvcEZyYW1lRG9tYWlu
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdWJGcmFtZURvbWFpbklEID0gZG9tYWlu
SUQoc3ViRG9tYWluKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BGcmFtZURvbWFp
bklEID0gZG9tYWluSUQodG9wRnJhbWVEb21haW4pOwogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFp
bklEIHx8ICF0b3BGcmFtZURvbWFpbklEKQogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgfTsKQEAgLTIxODAsNyArMjE4
MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvCiAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwTGlzdCh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSwgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4oeyByZWRpcmVjdERvbWFpbiB9KSwgKnJlc3VsdC5zZWNvbmQpOwogfQogCi1z
dGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3Jk
LCBPcHRpb25hbDx1bnNpZ25lZD4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKQorc3RkOjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRFbmZvcmNlU2Ft
ZVNpdGVTdHJpY3RGb3IoRG9tYWluRAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8
V2FsbFRpbWU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZShjb25zdCBEb21haW5EYXRhJiBzdGF0aXN0aWMpCitzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYgc3RhdGlzdGljKQog
ewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0zMDkyLDggKzMwOTIsOCBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2YXRlQ2xpY2tNZQogICAgICAgICBp
ZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSAhPSAtMSkKICAgICAgICAgICAgIGF0dHJpYnV0aW9u
LnNldEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhIHsgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJpb3Jp
dHkpIH0pOwogCi0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBzb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQ7Ci0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVhcmxpZXN0VGlt
ZVRvU2VuZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gc291cmNlRWFybGllc3RU
aW1lVG9TZW5kOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgCiAgICAgICAgIC8vIEEgdmFsdWUgb2YgMC4wIGlu
ZGljYXRlcyB0aGF0IHRoZSByZXBvcnQgaGFzIGJlZW4gc2VudCB0byB0aGUgcmVzcGVjdGl2ZSBz
aXRlLgogICAgICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPiAwLjApCkBA
IC0zMTEwLDcgKzMxMTAsNyBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2YXRlQ2xpY2tNZQogICAgIHJldHVybiBh
dHRyaWJ1dGlvbjsKIH0KIAotc3RkOjpwYWlyPE9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUpCitzdGQ6OnBh
aXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0
ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChj
b25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYgc291cmNl
U2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUpCiB7CiAgICAgYXV0byBzb3VyY2VTaXRl
RG9tYWluSUQgPSBkb21haW5JRChzb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBh
dXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGluYXRpb25TaXRlLnJl
Z2lzdHJhYmxlRG9tYWluKTsKQEAgLTMxMzQsMTEgKzMxMzQsMTEgQEAgc3RkOjpwYWlyPE9wdGlv
bmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmli
dXRlZFByaXYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHN0ZDo6b3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
OwogICAgIGlmIChmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykKICAgICAgICAgdW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBi
dWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlKGZpbmRVbmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
eXBlOjpVbmF0dHJpYnV0ZWQpOwogCi0gICAgT3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBhdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBpZiAoZmluZEF0dHJpYnV0ZWRTY29wZWRTdGF0
ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQogICAgICAgICBhdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgPSBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNl
KGZpbmRBdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7CiAKQEAgLTMyMjcsNyArMzIyNyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZVVuYXR0cmli
dXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlCiAgICAgfQogfQogCi1PcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50KGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKQorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFNv
dXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBk
ZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKQogewogICAgIC8vIFdlIHNob3VsZCBhbHdheXMgY2xlYXIgZXhwaXJlZCBjbGlja3Mg
ZnJvbSB0aGUgZGF0YWJhc2UgYmVmb3JlIHNjaGVkdWxpbmcgYW4gYXR0cmlidXRpb24uCiAgICAg
Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKQEAgLTMzMTgsNyArMzMxOCw3
IEBAIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsCiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uczsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW4pCiB7CiAg
ICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lm
aWVkLgogICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOwpAQCAtMzQzOSw3ICszNDM5LDcg
QEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwog
fQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiwgT3B0aW9u
YWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24pCitzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxT
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGll
c3RUaW1lVG9TZW5kPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVhcmxp
ZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0
dHJpYnV0aW9uKQogewogICAgIGF1dG8gc291cmNlU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0
cmlidXRpb24uc291cmNlU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBhdXRvIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRl
KCkucmVnaXN0cmFibGVEb21haW4pOwpAQCAtMzQ1Nyw4ICszNDU3LDggQEAgc3RkOjpwYWlyPE9w
dGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4sIE9wdGlvbmFsPERlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG8KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5kPiBlYXJsaWVzdFRpbWVUb1NlbmRUb1Nv
dXJjZTsKLSAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGll
c3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2U7CisgICAgc3RkOjpvcHRp
b25hbDxEZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZD4gZWFybGllc3RUaW1lVG9TZW5kVG9E
ZXN0aW5hdGlvbjsKICAgICAKICAgICAvLyBBIHZhbHVlIG9mIDAuMCBpbmRpY2F0ZXMgdGhhdCB0
aGUgcmVwb3J0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgc2l0ZS4KICAgICBpZiAo
c2NvcGVkU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoMCkgPiAwLjApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGZkNzFjYzVlN2I5
NjA0Yzc4MThmMWI2YWU5YmE1ZDMxNmUyODE4M2EuLjUxMzM3NmUzMzM2NDgyYWU1ZGE5MWVhYmUw
ZWQ1NWMwNWZkYjUwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC02OSw3ICs2OSw3IEBAIHVzaW5nIERlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kID0gZG91YmxlOwogdXNpbmcgU291cmNlRG9tYWluSUQgPSB1bnNpZ25l
ZDsKIHVzaW5nIERlc3RpbmF0aW9uRG9tYWluSUQgPSB1bnNpZ25lZDsKIAotdHlwZWRlZiBzdGQ6
OnBhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKK3R5cGVk
ZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4
UGFpcjsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVk
IG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVl
LgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJs
aWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRp
cmVjdERvbWFpbiYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIApAQCAtMTM3LDE2
ICsxMzcsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gYWxsRG9tYWlucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRh
dGFiYXNlKGludCk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNoZWNrRm9yTWlzc2lu
Z1RhYmxlc0luU2NoZW1hKCk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY2hl
Y2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVy
T2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGludGVycnVwdCgpOwogCiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudC4KICAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZTsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4gYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
KSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1dGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gYWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBv
dmVycmlkZTsKICAgICB2b2lkIGNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50KSBvdmVycmlkZTsKQEAgLTE4OSw4ICsxODksOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgaW5zZXJ0T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0
aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYsIHVuc2lnbmVkKTsKLSAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYsIE9wdGlvbmFsPHVuc2lnbmVk
PiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBj
b25zdDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0
RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7CiAgICAgYm9vbCBkb21haW5FeGlzdHMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgV2FsbFRpbWUpOwogICAgIHZvaWQgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgaW50KTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwg
RGVzdGluYXRpb25Eb21haW5JRCk7CiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2Uo
U291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQpOwotICAgIHN0ZDo6cGFpcjxPcHRp
b25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBPcHRpb25hbDxEZXN0aW5hdGlvbkVhcmxp
ZXN0VGltZVRvU2VuZD4+IGVhcmxpZXN0VGltZXNUb1NlbmQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmKTsKKyAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQ+LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kPj4gZWFybGllc3RUaW1lc1RvU2VuZChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYpOwogCiAgICAgc3RydWN0IERvbWFpbkRhdGEgewogICAgICAgICB1bnNpZ25l
ZCBkb21haW5JRDsKQEAgLTIzOCwxMyArMjM4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFJlc291cmNlTG9hZFBy
ZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFp
bnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbih1bnNpZ25lZCBwcmltYXJ5RG9tYWluSUQsIFN0
ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291cmNlcywgdW5zaWduZWQg
bnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAgICAgdm9pZCBzZXREb21haW5zQXNQcmV2YWxlbnQo
U3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFs
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwor
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9w
RnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1By
ZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIGVu
dW0gY2xhc3MgQWRkZWRSZWNvcmQgeyBObywgWWVzIH07Ci0gICAgc3RkOjpwYWlyPEFkZGVkUmVj
b3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVUVVJO
OworICAgIHN0ZDo6cGFpcjxBZGRlZFJlY29yZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxs
V2Vic2l0ZURhdGFGb3IoY29uc3QgRG9tYWluRGF0YSYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFu
ZGZhdGhlcmluZyk7CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKGNvbnN0
IERvbWFpbkRhdGEmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwogICAgIGJv
b2wgc2hvdWxkRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKERvbWFpbkRhdGEmLCBib29sIHNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpOwpAQCAtMjU0LDEyICsyNTQsMTIgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKTsKICAgICBib29sIGNyZWF0ZVNjaGVtYSgp
OwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYpOwotICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uVGltZShjb25zdCBEb21haW5EYXRhJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwog
ICAgIAogICAgIHZvaWQgcmVtb3ZlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50Jik7CiAgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQqLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7CiAgICAgU3RyaW5n
IGF0dHJpYnV0aW9uVG9TdHJpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4+IGZpbmRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25z
dCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZSYpOworICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Piwgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+PiBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmKTsKIAogICAgIGNvbnN0
IFN0cmluZyBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoOwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKQEAgLTMxOSw4ICszMTksOCBAQCBwcml2YXRlOgogICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIGJvb2wgbV9pc05ld1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fb3BlcmF0
aW5nRGF0ZXNTaXplIHsgMCB9OwotICAgIE9wdGlvbmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dp
bmRvd09wZXJhdGluZ0RhdGU7Ci0gICAgT3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdp
bmRvd09wZXJhdGluZ0RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxPcGVyYXRpbmdEYXRlPiBtX2xv
bmdXaW5kb3dPcGVyYXRpbmdEYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4g
bV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7CiAgICAgT3BlcmF0aW5nRGF0ZSBtX21vc3RSZWNl
bnRPcGVyYXRpbmdEYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA5MzBlMmI0NTUxYWZlMjE5YWQwMTdhZDU0MTUy
NTY0NzU4ZmI3MjM1Li5hZDRhM2JiNDdlMGNmYTI3Mjk3NmFjMzFkNDgxZTU1MDFkZjY0MWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cApAQCAtMjQxLDcgKzI0MSw3IEBAIENvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBSZXNvdXJjZUxvYWRTCiAgICAgcmV0dXJu
IENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRlZDsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM1
Miw3ICszNTIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRgogICAgIGdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9t
YWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIFN0b3JhZ2VBY2Nlc3NT
Y29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBTdG9yYWdl
QWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC05MjksNyArOTI5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcihSZXNvdXJjZUwK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykKK3N0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKQogewog
ICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXgg
NmRjMTRhYWFjMDdjNGFiYjRhMGE0YjZjNDM1NTliNmQxZjU1OGQ0YS4uNDlkM2Q4MjMyOTE1NTVj
NjRiMDQ0YmY4MjNkM2IwMmE2YTNmZWU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsKLSAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
IG92ZXJyaWRlOwogCkBAIC0xMTEsOSArMTExLDkgQEAgcHVibGljOgogICAgIC8vIFByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0
b3JlLgogICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKSBvdmVycmlkZSB7IH07Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vj
b25kc1VudGlsU2VuZERhdGE+YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUm
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0
YT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpIG92ZXJyaWRlIHsg
cmV0dXJuIHsgfTsgfTsKICAgICBWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ+IGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIHsgfTsgfTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9u
YWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+KSBvdmVy
cmlkZSB7IH07CiAgICAgdm9pZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
IG92ZXJyaWRlIHsgfTsKICAgICBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
ZygpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9OwogICAgIHZvaWQgY2xlYXJTZW50QXR0
cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIG92ZXJyaWRl
IHsgfTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50UmVj
b3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZl
bHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNpZ25l
ZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBjb25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2
b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlzUHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJl
UHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CkBAIC0xNDcsNyArMTQ3
LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc01lbW9yeVN0b3JlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpOwogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgVW5pcXVlUmVmPFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+PiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKICAgICBWZWN0
b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5ZWUxMWM5MTc1ZjE0MTdkYWY5OGUxNjBlN2JjMjkz
NzgyZTViYmRlLi42YTU2MDU2Y2M1OTQ2Mjg0MjFjZmNjYThmZmQ5MTU2NWY4YWE4NjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNzIsNyArMTcyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlD
b29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKSA9IDA7CiAKQEAgLTIwNiw5ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVk
Rm9yVGVzdGluZygpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBhdHRyaWJ1
dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlU2l0ZSYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYpID0gMDsKKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
U2Vjb25kc1VudGlsU2VuZERhdGE+IGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoT3B0aW9uYWw8UmVn
aXN0cmFibGVEb21haW4+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQpID0gMDsKQEAgLTIzOCw3ICsyMzgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewogICAgICAgICBzaXplX3QgcHJ1bmVFbnRyaWVzRG93
blRvIHsgODAwIH07CiAgICAgICAgIHNpemVfdCBtYXhTdGF0aXN0aWNzRW50cmllcyB7IDEwMDAg
fTsKLSAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbjsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9u
OwogICAgICAgICBTZWNvbmRzIG1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7
IDFfaCB9OwogICAgICAgICBTZWNvbmRzIGdyYW5kZmF0aGVyaW5nVGltZSB7IDI0X2ggKiA3IH07
CiAgICAgICAgIFNlY29uZHMgY2FjaGVNYXhBZ2VDYXBUaW1lIHsgMjRfaCAqIDcgfTsKQEAgLTI5
Miw3ICsyOTIsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fZGVidWdNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFRpbWVEYXRhUmVj
b3Jkc1dlcmVSZW1vdmVkOwogICAgIHVpbnQ2NF90IG1fbGFzdFN0YXRpc3RpY3NQcm9jZXNzaW5n
UmVxdWVzdElkZW50aWZpZXIgeyAwIH07Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcGVuZGlu
Z1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmll
cjsKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiBtX2RlYnVnU3RhdGljUHJldmFsZW50UmVz
b3VyY2UgeyBVUkwgeyBVUkwoKSwgImh0dHBzOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyJfcyB9
IH07CiAgICAgYm9vbCBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9kZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZmEwZjk3MmQwZTc2OTY1ZDQwNGRhZjMzNjY1
ZjBhMDkwYmY4ZWU4NC4uZDNkZTYwOWFmMjE1OThlY2VjODk1ZjMyZjBkYWQyYzMwNDFiM2QwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cgogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3Vi
RnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkpOwogCkBAIC01NjksNyArNTY5
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzc0VwaGVtZXJhbChjb25zdCBSZWdpc3RyYWIKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFt
ZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW5TdG9y
YWdlU2Vzc2lvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Njb3Bl
IHNjb3BlKQorU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3JhZ2VTZXNzaW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC01ODYsNyArNTg2LDcgQEAgU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NJblN0b3IKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZCA/IFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm87CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTUzMiw3ICsxNTMyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEEKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTaXRlJiBzb3VyY2VTaXRlLCBjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgZGVzdGluYXRpb25TaXRlLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTE2OTMsMTkgKzE2OTMsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjplbmNvZGUKICAgICBl
bmNvZGVyIDw8IHRpbWVMYXN0VXBkYXRlZDsKIH0KIAotYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eT4KK2F1dG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eT4KIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERv
bWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNv
ZGVkRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29k
ZWREb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxi
b29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRlY29k
ZWRTdG9yYWdlQWNjZXNzOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAg
ICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPFNlY29uZHM+IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CisgICAg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOwogICAgIGRlY29k
ZXIgPj4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsKICAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVw
ZGF0ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzM0LDE0ICsxNzM0LDE0
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlCiAgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFy
dGllczsKIH0KIAotYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBh
cnR5RGF0YT4KK2F1dG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxUaGly
ZFBhcnR5RGF0YT4KIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZGVjb2RlZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBp
ZiAoIWRlY29kZWREb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBkZWNv
ZGVkRmlyc3RQYXJ0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKICAgICBkZWNvZGVy
ID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CiAgICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0aWVzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGIxZTdjMjMzYTg0NGUwNGJlNzM0OTAzZjI5ODZlYmZh
MzU5OWY1NjMuLmM3NmE2YWNhNDg0NTE1MTA1YjY0OTFlMTNkOGUwNWU0NTczYzQxYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTEyMiw3ICsx
MjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0
aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAgICAvLyBG
SVhNRTogU2luY2UgdGhpcyBpZ25vcmVzIGRpZmZlcmVuY2VzIGluIGRlY29kZWRUaW1lTGFzdFVw
ZGF0ZWQgaXQgcHJvYmFibHkgc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRv
cj09LgogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHkmKSBjb25zdDsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGhp
cmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAgICAvLyBGSVhNRTog
VGhpcyBzb3J0cyBieSBudW1iZXIgb2YgdW5kZXJGaXJzdFBhcnRpZXMsIHNvIGl0IHByb2JhYmx5
IHNob3VsZCBiZSBhIG5hbWVkIGZ1bmN0aW9uLCBub3Qgb3BlcmF0b3I8LgogICAgICAgICBib29s
IG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5RGF0YSYpIGNvbnN0OwpAQCAtMTYwLDkgKzE2MCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzc0luU3RvcmFnZVNlc3Npb24oY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUpOworICAgIFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzc0luU3RvcmFnZVNlc3Npb24oY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VB
Y2Nlc3NTY29wZSk7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wg
aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdG9yYWdlQWNj
ZXNzU2NvcGUsICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
dWx0KT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMTAsNyArMjEwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFn
ZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIGJvb2wgbmVlZHNVc2VySW50
ZXJhY3Rpb25RdWlyayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQg
Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3Qg
UmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICAvLyBQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50LgogICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpOwogICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotICAgIHZvaWQgYXR0cmlidXRl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNl
Y29uZHNVbnRpbFNlbmREYXRhPik+JiYpOworICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNpdGUmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25EZXN0aW5hdGlvblNpdGUmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1Vu
dGlsU2VuZERhdGE+KT4mJik7CiAgICAgdm9pZCBhbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3Ry
YWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwpAQCAtMjYyLDcg
KzI2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1EYWlseVRhc2tzKCk7CiAKLSAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1Jlc3VsdCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckVwaGVtZXJhbChEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKICAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCmluZGV4IDgxN2Y5Y2Q3N2M5NTBkZTRkN2FkZmRjZWM4MDU3NTEyODdl
NzYyZTkuLmE4Yjk0M2E1MjEwOTRjZDEzN2NlOThkZmJmNGViYmY3MDM0YzI5ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2Fk
TWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2Fk
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkTmFtZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkTmFtZSkKIHsKICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IGNsaWVudCgpLm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgKaW5kZXggMDFlNTMxYTM4YzA0ZDRhMjkzY2YyNDlhNTBhOThlYjg2MDA5MDdiZC4uNmNmODhj
YzIzN2ZmYzA2ZDI2M2ZjOGM5NzczNjRmMGJmMWJlOWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENs
aWVudCYpOwogCi0gICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7Cisg
ICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lk
IGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxE
b3dubG9hZD4mJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xv
YWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGI0OGM4NDNiY2E0OGVhNTk3YTUwZTE5OTU2M2RmMmExYTk4YTA1ZTYuLjJkMTkx
OTBhMzQ3MGRmYjUyMzU4NWYyMmY3ZjQ2NTA1MGRmMzM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlUlRDUHJvdmlkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKIH0K
IAogI2lmIEVOQUJMRShXRUJfUlRDKQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8Ym9vbD4pPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxib29sPik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byogY29ubmVjdGlvblRvV2Vi
UHJvY2VzcyA9IG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHJlbW90ZUlk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIGlmICghY29ubmVjdGlvblRvV2ViUHJv
Y2VzcykgewpAQCAtNjAzLDcgKzYwMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNlbmRIMlBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwCiAjZW5k
aWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRv
KE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmVj
b25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2Fk
UGFyYW1ldGVycykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJwcmVj
b25uZWN0VG86IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdl
SUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0
ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJv
eHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9h
ZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKIApAQCAtNjU0LDEyICs2NTQsMTIgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcmFnZVNlc3Npb24oKQogICAgIHJldHVybiBz
ZXNzaW9uOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChEb3dubG9hZElEIGRvd25sb2Fk
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2Fk
TWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9zZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3Qs
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3RlZE5hbWUpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbgogI2VuZGlmCiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFn
ZVNlc3Npb24pCkBAIC03MjIsNyArNzIyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXIKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
KTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKQEAgLTk4NSw3ICs5ODUsNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93
TGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMo
KTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNv
dXJjZSkKK3N0ZDo6b3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BS
ZXNvdXJjZSkKIHsKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5NDY1YjY4
ZjM2YzRlNTllZWFhYzY3NDgxOTA2YTNlMTk1YzliNDdlLi4zMGI4ZGFlMWI2M2Y2MmFmNzA3N2Q5
NTY2Y2IxY2ZjNmZlZDdkYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogICAgICAgICBtX25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJl
bW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSk7
CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5n
UmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BSZXNvdXJjZSk7CiAgICAgdm9pZCBzdG9wVHJhY2tp
bmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25z
dCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwpAQCAtMjEwLDIyICsyMTAsMjIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxvYWRQaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYpOwogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZW5k
SDJQaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4m
Jik7Ci0gICAgdm9pZCBwcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lk
IHByZWNvbm5lY3RUbyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBpc1Jlc291
cmNlTG9hZEZpbmlzaGVkKHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBicm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnRE
b3dubG9hZChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSA9IHsgfSk7Ci0gICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
dWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOworICAgIHZvaWQgc3RhcnRE
b3dubG9hZChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWROYW1lID0geyB9KTsKKyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKIAogICAg
IHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNj
aGVtZXMpOwogCiAgICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7Ci0gICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAg
ICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAg
IHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxk
QXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdl
YkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSk7CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBjcmVhdGVSVENQcm92aWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2lmIEVOQUJMRShXRUJfUlRDKQotICAgIHZvaWQgY29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1v
dGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8Ym9vbD4pPiYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFDaGFubmVs
UmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBjcmVh
dGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0Mik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjNjNhNmJh
NzFmYWU0MzBiOWQyYTMyNmVjZmI4NmExNGRkZDMxOTkzLi4wNjNlZTZhNDYxYmI2OGViZGU3MGM2
ZjllZTRlODM5NjFkMDMzNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTMxLDE2ICszMSwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQnJvd3NpbmdDb250ZXh0UmVtb3Zl
ZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHdlYkZy
YW1lSUQpCiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogICAgIFNlbmRIMlBpbmco
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoRXhw
ZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAg
IFByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIs
IFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwor
ICAgIFByZWNvbm5lY3RUbyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1l
dGVycyk7CiAgICAgSXNSZXNvdXJjZUxvYWRGaW5pc2hlZCh1aW50NjRfdCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKSAtPiAoYm9vbCBpc0ZpbmlzaGVkKSBBc3luYwogCi0gICAgU3RhcnREb3dubG9h
ZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFt
ZSkKLSAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCisgICAgU3RhcnREb3dubG9hZChX
ZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRO
YW1lKQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlLCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogCiAgICAgQ29va2ll
c0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3lu
Y2hyb25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3Ry
aW5nLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCi0gICAgQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVz
KFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMK
KyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3lu
Y2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgU2V0UmF3Q29va2llKHN0
cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llKQogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKICAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9v
bCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwpAQCAtODgsNyArODgsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAg
ICBDcmVhdGVSVENQcm92aWRlcigpIC0+ICgpIEFzeW5jCiAjaWYgRU5BQkxFKFdFQl9SVEMpCi0g
ICAgQ29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uoc3RydWN0IFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIgaGFuZGxlcikgLT4gKE9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMK
KyAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoc3RkOjpvcHRpb25hbDxib29sPiByZXN1bHQp
IEFzeW5jCiAjZW5kaWYKIAogICAgIFVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0
aW5nKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IDFjOTA1ZDlhOTM1
MjcwZDMxYmY1MjQxNTRlY2QzNGFkZjI1MzAwYzIuLjM4YTYyNTE0OTM5OTZlYzMxNTc3OWYxNGVm
MTBjN2QzMDg0ZjVkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3Rp
YXRlZAogewogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJs
ID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJs
LnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0
KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRl
eCA2NjUzZWI4YzFhMzM5ZWU2MWQ0OTAxNDY5NGNiOWViMTI0MWNjYmQzLi5jZjExNzE4Zjc5ZmFm
NWQ2M2I5OThkMGI0YjBlZTY2YWY3M2NmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVy
cyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQot
ICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50
VVJMLCBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
KQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3Vt
ZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFp
bkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
ID0gaWRlbnRpZmllcjsKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHByaXZhdGU6CiAgICAgRG9jdW1l
bnRVUkwgbV9kb2N1bWVudFVSTDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV90b3BPcmln
aW47Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gbV9jc3BSZXNwb25zZUhlYWRl
cnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBVUkwgbV9tYWluRG9jdW1l
bnRVUkw7Ci0gICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyPiBtX2NvcnNQcmVmbGlnaHRDaGVja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggOGI2MmExZjg0ZTQx
ODJhZjcxYzRhNjg2ZTkzYTY3NmFkOTUzNGI5YS4uZjhkNjE3YWU5M2YwZGFhOWU4ZWJlOWI5NzA1
NmVmMDAzNmU0ZDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbjsKICAgICBXVEY6OlByb2Nl
c3NJRCBwYXJlbnRQSUQgeyAwIH07CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBPcHRpb25h
bDxhdWRpdF90b2tlbl90PiBuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW47CisgICAgc3RkOjpvcHRp
b25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW47CiAjZW5kaWYKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBXZWJDb3JlOjpDb250ZW50
U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5IHsgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgfTsKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgog
ICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAgUHJlY29ubmVjdE9u
bHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKLSAgICBPcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyOwotICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21E
YXRhQ2FycmllZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI7CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpObyB9OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCBmZjBmZjRhZjFjZmNjNzMyMDA5ZjBmOWE2YmQxMWI3NDVh
YjBjZjdjLi5iMGYwYzUwMTFiZDQzODU1MzZjOTBmNDdjNzFmZTc1MDIwZGExOWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzc4
LDcgKzM3OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6
ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpB
dHRhY2htZW50PiYmLCBIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0aW9uUGFpcigp
OwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VD
YXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFs
PFNlY29uZHM+IHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMoc2Vjb25kcyk7CkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXAKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxX
YWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3Vs
ZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9k
aWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJJc29sYXRlZFNlc3Npb25zKCk7CkBA
IC0xMzYwLDcgKzEzNjAsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3Rp
bmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTIwODYs
NyArMjA4Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNhY2hlRW5naW5lKGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiAgICAgbV9jYWNoZUVuZ2luZXMucmVtb3ZlKHNl
c3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3du
bG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRG
aWxlbmFtZSk7CiB9CkBAIC0yNDg3LDcgKzI0ODcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
ZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJv
YwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBz
cGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+KT4mJiBjYWxsYmFjaykKIHsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlcXVlc3RTdG9y
YWdlU3BhY2UgeyBzZXNzaW9uSUQsIG9yaWdpbiwgcXVvdGEsIGN1cnJlbnRTaXplLCBzcGFjZVJl
cXVpcmVkIH0sIFdURk1vdmUoY2FsbGJhY2spLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwODMzODJjOTlhMDdiMjZmZDU4OTIx
YzVjODdlMmE2MWIyMTA3NjFjLi5iOGE3YWQ0OWNhMTBlZDBmMzNlNjAxN2NkNGQzNmIwMmZlYmQ5
OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZGly
ZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5k
ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViUmVzb3Vy
Y2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNp
bmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBA
IC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhD
YWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7
CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiAgICAg
dm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBi
b29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNz
aW9uSUQpIGNvbnN0OwpAQCAtMzMxLDcgKzMzMSw3IEBAIHB1YmxpYzoKICAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZSogZmluZENhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmUmIGVuc3VyZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiwgRnVuY3Rpb248UmVmPENhY2hlU3RvcmFnZTo6RW5naW5lPigpPiYmKTsKICAgICB2b2lk
IHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgdm9pZCByZXF1
ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNl
UmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7
CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4pPiYmKTsKIAogICAgIHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7
CiAgICAgdm9pZCBkdW1wUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CkBAIC00MjEsNyArNDIxLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05l
dHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNo
bWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4m
Jik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVsZXRl
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAt
NDM1LDcgKzQzNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2Ug
YSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVudGlmeSB3aGljaCBkaXNrIGNhY2hlIHRvIGRlbGV0
ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6
OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpOwogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwog
ICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA0MGVhMTJhMGQ0NGFlZGEyMTQ5MmU4NTI0NzlkNmE4ZGMyMmQ4M2M4
Li45MDQ2M2QyNWJkNmE0ODk0YTJlNmU5YzE1ZjE1ZTJjODI4ODRmMTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykK
IAotICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xp
Y3kpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRl
bnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5KSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExT
RXJyb3JzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBpZ25vcmVUTFNFcnJvcnMpCkBA
IC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJp
bmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWlucykgLT4g
KCkgQXN5bmMKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCi0gICAgRG93
bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wg
T3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQorICAgIERvd25sb2Fk
UmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpi
b29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiAg
ICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkg
QXN5bmMKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJp
bmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBl
bnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOworICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJL
aXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFs
ZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKQEAgLTg5LDcgKzg5LDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIElzR3JhbmRmYXRo
ZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRhcmdldERvbWFpbikgLT4gKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSBBc3luYwogICAgIElzUHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzUHJldmFsZW50KSBBc3luYwogICAg
IElzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKSAtPiAoYm9vbCBpc1ZlcnlQcmV2YWxl
bnQpIEFzeW5jCi0gICAgU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKSAtPiAoKSBBc3luYworICAg
IFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RT
ZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VEb21haW4sIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBNZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4xLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFp
bjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJl
dmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdWludDY0X3QgZGF0YVJlY29yZHNSZW1vdmVk
KSAtPiAoKSBBc3luYwogICAgIEluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VE
b21haW4sIHVpbnQ2NF90IG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
Ym9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5bmMKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgTG9nRnJhbWVOYXZpZ2F0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9h
ZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcikKICAgICBMb2dVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0b3BGcmFtZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgZW51bTpib29sIFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyKSAtPiAoKSBBc3luYworICAg
IFNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBlbnVtOmJvb2wgV2Vi
S2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIpIC0+ICgp
IEFzeW5jCiAgICAgU2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBT
dGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoYm9vbCBoYXNBbGxUYWJsZXMpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCmluZGV4IDY0NTAyYmUwNDE3MWJkNzM0ZDZhM2UzN2Q0MGZiMTg3OGFiMTBkZDAuLjNkNGQ3
MGYzY2YxN2JlY2U0ZDdhNGI1NWZiMmNlM2UxNzA5ZTZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC04NCwyNSArODQsMjUgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1By
b2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJlc3VsdC5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAg
ICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmVzdWx0LmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHBhcmVudEJ1bmRsZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICgh
cGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmVzdWx0LnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHRlbXBEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiB0ZW1wRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwogICAgIGlmICghdGVtcERpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQ
cm9jCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZW5hYmxlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25h
bDxWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycz4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gd2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRl
eCBjZjExN2FhOTc1N2YyZjBiZTRlMTUyNTlhYWI5OGJiMjkxYTFkMGU4Li4wMGVmYzVmMDUwMGJi
YmI3MzIxODFkZmI5NjYzMWY3MDJjOGFlZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cApAQCAtMTI2LDIwICsxMjYsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHBj
bURhdGFDYXJyaWVkOwogfQogCi1PcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXN1bHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgCi0gICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
d2ViUGFnZVByb3h5SUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PiB3ZWJQYWdlUHJveHlJRDsKICAgICBkZWNvZGVyID4+IHdlYlBhZ2VQcm94eUlEOwogICAgIGlm
ICghd2ViUGFnZVByb3h5SUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LndlYlBhZ2VQcm94eUlEID0gKndlYlBhZ2VQcm94eUlEOwogCi0gICAgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiB3ZWJQYWdlSUQ7CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlSUQ7CiAgICAgaWYgKCF3ZWJQYWdl
SUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjQsNyArMTY0LDcgQEAgT3B0
aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKIAot
ICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
czsKICAgICAgICAgZGVjb2RlciA+PiByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVz
OwogICAgICAgICBpZiAoIXJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVyczo6ZGVjb2RlKElQCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5yZXF1ZXN0LnVybCgpLmlz
TG9jYWxGaWxlKCkpIHsKLSAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7
CiAgICAgICAgIGRlY29kZXIgPj4gcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBpZiAoIXJlc291cmNlU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMjMsNyArMjIzLDcgQEAgT3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUoSVAKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8RmV0Y2hPcHRpb25zPiBvcHRpb25zOworICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hPcHRp
b25zPiBvcHRpb25zOwogICAgIGRlY29kZXIgPj4gb3B0aW9uczsKICAgICBpZiAoIW9wdGlvbnMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMzQsNyArMjM0LDcgQEAgT3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5h
bFJlcXVlc3RIZWFkZXJzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPGJvb2w+IHNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzOworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAgICAgZGVj
b2RlciA+PiBzaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzczsKICAgICBpZiAoIXNob3Vs
ZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMjQzLDcgKzI0Myw3IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmxpZ2h0UG9saWN5KSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZEVuYWJsZUNyb3NzT3JpZ2lu
UmVzb3VyY2VQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRFbmFibGVDcm9z
c09yaWdpblJlc291cmNlUG9saWN5OwogICAgIGRlY29kZXIgPj4gc2hvdWxkRW5hYmxlQ3Jvc3NP
cmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBpZiAoIXNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVz
b3VyY2VQb2xpY3kpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNTIsNDQgKzI1
Miw0NCBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmZyYW1lQW5jZXN0b3JPcmlnaW5zKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29k
ZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICBpZiAoIXBhZ2VIYXNSZXNvdXJj
ZUxvYWRDbGllbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBh
Z2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAqcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAg
ICAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJl
bnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVu
dEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhcmVu
dEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRGcmFtZUlEKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVy
ID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0g
KmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICAKLSAgICBPcHRpb25h
bDxVUkw+IGRvY3VtZW50VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBkb2N1bWVudFVSTDsK
ICAgICBkZWNvZGVyID4+IGRvY3VtZW50VVJMOwogICAgIGlmICghZG9jdW1lbnRVUkwpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3Vt
ZW50VVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJzTW9kZT4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2
aWNlV29ya2Vyc01vZGU7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2Vyc01vZGUpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2
aWNlV29ya2Vyc01vZGU7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYg
KCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgPSAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25TZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9tQ2xlYW5pbmc+PiBodHRwSGVhZGVyc1Rv
S2VlcDsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21D
bGVhbmluZz4+IGh0dHBIZWFkZXJzVG9LZWVwOwogICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CiAgICAgaWYgKCFodHRwSGVhZGVyc1RvS2VlcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTMwMCwyMCArMzAwLDIwIEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+
IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
c3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+PiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIGRlY29kZXIgPj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSAqaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKIAotICAgIE9w
dGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRh
Q2FycmllZD4+IHBjbURhdGFDYXJyaWVkOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+PiBwY21E
YXRhQ2FycmllZDsKICAgICBkZWNvZGVyID4+IHBjbURhdGFDYXJyaWVkOwogICAgIGlmICghcGNt
RGF0YUNhcnJpZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgKaW5kZXggMjA0MTJlMjU2ODQ4MDgyZDNmZTM0Njg0YjQ2MThlOTYyZWRkZjY5Yi4u
ZjBlNDIwZjUxMDNlYmQ1MWFmZDdjZTg5Y2JiN2IzNWY5NjI1YTM1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaApAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9h
ZElkZW50aWZpZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyA6IHB1Ymxp
YyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CiAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgeyAwIH07CiAgICAgVmVj
dG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
czsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2VuZGVyLgpAQCAtNTQsMjkgKzU0
LDI5IEBAIHB1YmxpYzoKICAgICBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc291cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyBvcHRpb25zOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBj
c3BSZXNwb25zZUhlYWRlcnM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBvcmlnaW5hbFJl
cXVlc3RIZWFkZXJzOwogICAgIGJvb2wgc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3Mg
eyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3kg
eyBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3k6OkNvbnNpZGVyIH07CiAgICAgYm9vbCBzaG91bGRF
bmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CiAgICAgYm9vbCBjcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgVVJMIGRvY3Vt
ZW50VVJMOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdv
cmtlcnNNb2RlOjpOb25lIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIE9wdGlv
blNldDxXZWJDb3JlOjpIVFRQSGVhZGVyc1RvS2VlcEZyb21DbGVhbmluZz4gaHR0cEhlYWRlcnNU
b0tlZXA7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgVVJM
IG1haW5Eb2N1bWVudFVSTDsKLSAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9u
YWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICNlbmRpZgogICAgIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW46Ok5vIH07CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggY2NiZTMxYzRmMjA1MzA3YjkzNjMzOTlkMDE5N2E3ZmUwMDMwZDE3Ni4uMDg0YmRlMWIz
ZmMxYmU2NWM4ZmQ3NDBkYjBiNDIyNTBkY2E2ODNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzI1LDcg
KzMyNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxv
YkZpbGVSZWZlcmVuY2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5C
bG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFn
ZUhhc1Jlc291cmNlTG9hZENsaWVudCkgewotICAgICAgICBPcHRpb25hbDxJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlPiBodHRwQm9keTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlPiBodHRwQm9keTsKICAgICAgICAgaWYgKGF1dG8qIGZvcm1EYXRhID0gcmVxdWVz
dC5odHRwQm9keSgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbWF4U2Vy
aWFsaXplZFJlcXVlc3RTaXplID0gMTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICBpZiAoZm9ybURh
dGEtPmxlbmd0aEluQnl0ZXMoKSA8PSBtYXhTZXJpYWxpemVkUmVxdWVzdFNpemUpCkBAIC03OTMs
NyArNzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGMKICAgICAgICAgbV9jb25uZWN0aW9u
LT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2Uo
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvKCksIGNoYWxsZW5n
ZSksIDApOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZh
bGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3N0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VD
YXBWYWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBib29sIGV4aXN0aW5nQ2FjaGVFbnRyeU1hdGNoZXNOZXdSZXNwb25zZSA9IGZhbHNlOwpAQCAt
ODIxLDcgKzgyMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgKyttX3JlZGlyZWN0
Q291bnQ7CiAgICAgbV9yZWRpcmVjdFJlc3BvbnNlID0gcmVkaXJlY3RSZXNwb25zZTsKIAotICAg
IE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgc3Rk
OjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0
YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlm
ICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJl
Y3RSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwpAQCAtODc5LDcgKzg3OSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQog
ewogICAgIHJlZGlyZWN0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgp
KTsKIApAQCAtOTE4LDcgKzkxOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hXaXRoUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlCiAgICAgY2xl
YW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2FuaXRp
emVSZXNwb25zZShjb25zdCBOZXR3b3JrUHJvY2VzcyYgcHJvY2VzcywgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFVSTCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkU2FuaXRpemVSZXNwb25zZShjb25zdCBO
ZXR3b3JrUHJvY2VzcyYgcHJvY2Vzcywgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlkZW50aWZpZXIsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllciB8fCBvcHRpb25zLmRlc3RpbmF0aW9uICE9IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIHx8IG9wdGlvbnMubW9kZSAhPSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjk0
LDE3ICsxMjk0LDE3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlRm9ySlNPTihTdHJpbmcgcykKICAg
ICByZXR1cm4gcy5yZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CiB9
CiAKLXN0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90
PiYgdmFsdWUpCitzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfQogCi1zdGF0aWMgU3RyaW5n
IGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIo
dmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5nKCJOb25lIl9zKTsKIH0KIAotc3RhdGljIFN0cmlu
ZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+JiB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2
YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfQpAQCAtMTMxOSw3ICsxMzE5
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkg
Y29uc3QKICAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVz
b3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVl
c3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwg
cGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRp
b24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2
b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgp
KSk7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAjdW5k
ZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJ
bmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9y
bWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBmYTBhYjg3YTA3NTZkZGVmMThmYTgwNGI4YTgxNjgzMjM2ZTBjMzM5Li5l
YzQ0ZTFiNTUyMjNmNzJmZjQ2NDI2NWFkNDQwODc5MzAyOTVhNjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEy
OSw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFBB
TDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBPcHRpb25hbDx1
aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRp
b24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAg
IHZvaWQgZGlzYWJsZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZTsgfQpAQCAtMTkzLDcgKzE5Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0OwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmKTsKKyAgICB2
b2lkIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYpOwogICAgIHZvaWQgZGlk
RmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHNhbml0aXplUmVz
cG9uc2VJZlBvc3NpYmxlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZSk7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbnZlcnNp
b24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAg
ICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JN
YXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9h
ZEluZm8oKTsKIApAQCAtMjQ1LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
S2VwdEFsaXZlIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+
IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAxNDM5NjI0Yjc5MjhkMmJlMjFh
ZTcwM2E4MGFhMzkyMGY1OTBiMmQwLi45ZDI1NjdhYTJmNTA4Mjg4MjY2MGJkNDBkOTYzNWE5ZTQ5
Njk5MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW4oU3RyaW5nJiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvCiAjZW5k
aWYKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTZXNz
aW9uOjpmaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhv
c3QpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU2Vz
c2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlI
b3N0KQogewogI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQ
SSkKICAgICBpZiAoIWRlY2x0eXBlKG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMpOjppc1Zh
bGlkS2V5KGZpcnN0UGFydHlIb3N0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAppbmRleCAxNzU0MGQ0NTU0ZmU1YzkzYTMxMDIwYTZmZWNhNzg4ZGQ3
NWEwMGE0Li43YWYzZjM2ZjFlNjFjNGMyYjIzNThlN2Q2ZjhmN2UzN2I5ZTczMWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMDcsOSAr
MTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNldFNo
b3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZCk7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluKFN0cmluZyYmIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IGNuYW1lRG9tYWluKTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBmaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpOwogICAgIHZvaWQg
c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbikgeyBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEZN
b3ZlKGRvbWFpbik7IH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJk
UGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiB0aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkgY29u
c3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nOyB9CiAgICAgdm9p
ZCByZXNldENOQU1FRG9tYWluRGF0YSgpOwogICAgIHZvaWQgZGVzdHJveVJlc291cmNlTG9hZFN0
YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMTY2LDcg
KzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0
d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRl
cnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KICAgICB2b2lkIHJlbW92ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlcihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXIqIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcnMucmVt
b3ZlKGxvYWRlcik7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURh
dGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmV0
d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICBIYXNoTWFwPFN0
cmluZywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbnM7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5k
aWYKICAgICBib29sIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+IG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IDZmOGFjMzk2ODI4ZjE4ZmY5MDE4MmQxYmNmZDUyMjA3YzQyYTMzZDMuLjgyNGMwNjVmYTBm
ODFhNzYzMWZhZDUyNTRmODc2YjZhMGU2ZjRjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC04OSwxOSArODksMTkgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOwogfQogCi1PcHRpb25hbDxO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IHNlc3Npb25JRDsKICAgICBkZWNvZGVyID4+IHNlc3Npb25JRDsKICAgICBpZiAoIXNlc3Np
b25JRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxT
dHJpbmc+IGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gYm91bmRJbnRlcmZh
Y2VJZGVudGlmaWVyOwogICAgIGlmICghYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPEFsbG93c0NlbGx1bGFy
QWNjZXNzPiBhbGxvd3NDZWxsdWxhckFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPEFsbG93c0Nl
bGx1bGFyQWNjZXNzPiBhbGxvd3NDZWxsdWxhckFjY2VzczsKICAgICBkZWNvZGVyID4+IGFsbG93
c0NlbGx1bGFyQWNjZXNzOwogICAgIGlmICghYWxsb3dzQ2VsbHVsYXJBY2Nlc3MpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTEsMTg0ICsxMTEsMTg0IEBAIE9wdGlvbmFsPE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm94eUNvbmZpZ3VyYXRpb24p
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4g
YXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGF0
dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gYXR0cmlidXRlZEJ1bmRs
ZUlkZW50aWZpZXI7CiAgICAgaWYgKCFhdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uOwogICAgIGRlY29kZXIgPj4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b247CiAgICAgaWYgKCFzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFVSTD4gaHR0cFByb3h5OworICAgIHN0ZDo6
b3B0aW9uYWw8VVJMPiBodHRwUHJveHk7CiAgICAgZGVjb2RlciA+PiBodHRwUHJveHk7CiAgICAg
aWYgKCFodHRwUHJveHkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxVUkw+IGh0dHBzUHJveHk7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IGh0dHBzUHJveHk7
CiAgICAgZGVjb2RlciA+PiBodHRwc1Byb3h5OwogICAgIGlmICghaHR0cHNQcm94eSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxU
RVJOQVRJVkVfU0VSVklDRSkKLSAgICBPcHRpb25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYWx0ZXJuYXRpdmVTZXJ2aWNl
RGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5Owog
ICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhbHRl
cm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBP
cHRpb25hbDxib29sPiBodHRwM0VuYWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBodHRw
M0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBodHRwM0VuYWJsZWQ7CiAgICAgaWYgKCFodHRwM0Vu
YWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAotICAgIE9wdGlv
bmFsPFN0cmluZz4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0
c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBVU0UoU09VUCkKLSAgICBPcHRpb25hbDxTdHJp
bmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGRlY29kZXIgPj4gY29va2llUGVy
c2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRo
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U291cENvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlVHlwZT4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOworICAg
IHN0ZDo6b3B0aW9uYWw8U291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZT4gY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VUeXBlOwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVudENyZWRl
bnRpYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRD
cmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50Q3JlZGVu
dGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGlmICghcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdl
RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJv
b2w+IGlnbm9yZVRMU0Vycm9yczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZVRMU0Vy
cm9yczsKICAgICBkZWNvZGVyID4+IGlnbm9yZVRMU0Vycm9yczsKICAgICBpZiAoIWlnbm9yZVRM
U0Vycm9ycykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5n
czsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkK
LSAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGRl
Y29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGlmICghY29va2llUGVy
c2lzdGVudFN0b3JhZ2VGaWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M+IHByb3h5U2V0dGluZ3M7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsK
ICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxTdHJp
bmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV0
d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5
OwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0
d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBkZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkOwogICAgIGRlY29kZXIgPj4gZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgaWYgKCFkZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPGJvb2w+IGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxMb2Fkc0Jsb2NrZWRCeURldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nOwogICAgIGRlY29kZXIgPj4gYWxsTG9h
ZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKICAgICBp
ZiAoIWFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rp
bmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+
IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRh
dGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiAgICAgZGVjb2RlciA+PiBkYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwogICAgIGlmICghZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBmYXN0U2VydmVy
VHJ1c3RFdmFsdWF0aW9uRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZhc3RTZXJ2
ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOwogICAgIGRlY29kZXIgPj4gZmFzdFNlcnZlclRydXN0
RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgaWYgKCFmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxi
b29sPiBuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsK
ICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7
CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVRlc3Rp
bmdOZXR3b3JrU2Vzc2lvbjsKICAgICBpZiAoIXNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IHN0
YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IHN0YWxlV2hpbGVSZXZhbGlk
YXRlRW5hYmxlZDsKICAgICBpZiAoIXN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0ZXN0U3Bl
ZWRNdWx0aXBsaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRlc3RTcGVlZE11bHRp
cGxpZXI7CiAgICAgZGVjb2RlciA+PiB0ZXN0U3BlZWRNdWx0aXBsaWVyOwogICAgIGlmICghdGVz
dFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDxib29sPiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1D
aGFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1p
bmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAgZGVjb2RlciA+PiBzdXBwcmVzc2VzQ29ubmVjdGlv
blRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAgaWYgKCFzdXBwcmVzc2VzQ29ubmVjdGlv
blRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxib29sPiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gYWxsb3dzU2VydmVyUHJlY29ubmVjdDsKICAgICBkZWNvZGVyID4+IGFs
bG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgaWYgKCFhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gcmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHJl
cXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247CiAgICAgZGVjb2RlciA+PiByZXF1aXJl
c1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOwogICAgIGlmICghcmVxdWlyZXNTZWN1cmVIVFRQ
U1Byb3h5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDxib29sPiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNh
dGlvbjsKICAgICBkZWNvZGVyID4+IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRp
b247CiAgICAgaWYgKCFwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IGFwcEhh
c1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsK
ICAgICBkZWNvZGVyID4+IGFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlz
c2lvbjsKICAgICBpZiAoIWFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlz
c2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+
IHVzZU5ldHdvcmtMb2FkZXI7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VOZXR3b3JrTG9h
ZGVyOwogICAgIGRlY29kZXIgPj4gdXNlTmV0d29ya0xvYWRlcjsKICAgICBpZiAoIXVzZU5ldHdv
cmtMb2FkZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycz4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGE2OGJiNTMwNzdhMjkwYTBiMjAwNjFkMGZiODc0
M2JkZmVjMGFkMTIuLjY2YjFlNDg4MDJhYjE1NmUyOWEzNDgxY2NmZDE2OWVlODQ0MGUyZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTUxLDcgKzUxLDcgQEAgZW51bSBjbGFz
cyBBbGxvd3NDZWxsdWxhckFjY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNv
ZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgeyBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpIH07CiAgICAgU3RyaW5nIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuaAppbmRleCBkYTQwNWQ5YTU5YWVjODExMTQwZjlkNTA5MTIxNmNlMzdjOTU3MmMxLi4x
ZTdiMmNlMTkyZTNhODMwYTk3Y2Y5OTVmMWE0ODFhZWJiYjIzOGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpPcGVuIH07CiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRpbWVyOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZTsKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xv
c2VJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJp
bmc+PiBtX2Nsb3NlSW5mbzsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVBy
b3h5SUQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCA0OGM4ODNiZmMwZmM3ZDUwMWM4YTRhNGU3Njg0Y2Nj
MzNlMzhjMTRkLi4xNWE5OWVjZTM0YWMxNjAzNGQ2YmJjOGU0N2MyODllMzhiNmM5MmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIHVpbnQ2NF90IGlkZW4KICAgICB9KTsK
IH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFuZHNoYWtlKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5LCB1aW50NjRfdCBpZGVudGlmaWVyKQordm9pZCBO
ZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFuZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eT4mIGhlYWRlckZpZWxkUHJveHksIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgbV9pbXBs
LT5wbGF0Zm9ybVNlbmRIYW5kc2hha2UoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBoZWFkZXJG
aWVsZFByb3h5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlm
aWVyXSAoYm9vbCBzdWNjZXNzLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIHsKICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRTZW5kSGFuZHNoYWtlKGlkZW50
aWZpZXIsIHN1Y2Nlc3MsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggNzM0Mjlh
MDI3OTA2YjQxNmEzOGMwYzZiMzk0NmEwZGI5ZmIyMDZmYS4uNjAwNmIyZTFiN2M2MzIxMjNkZjA4
OWI5MjI3YjI2Zjc5MDY4Y2UwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKICAgICB2b2lkIHNlbmREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHNlbmRIYW5kc2hha2UoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgdWlu
dDY0X3QpOworICAgIHZvaWQgc2VuZEhhbmRzaGFrZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5PiYsIHVpbnQ2NF90KTsKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgCiAgICAgLy8gU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KaW5kZXggMDA5NTYyYmE1
MDI4NWU4YzhjMzNmZDZiODEyZTkxYWM1MDI3NjJlNC4uMDJlODUxOGIwMWIwMzBmNmViYzdkNjZm
MDFlYTI1MDYxMGNhYWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMjIsNiArMjIs
NiBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrU29ja2V0U3RyZWFtIHsKICAgICBTZW5kRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgdWludDY0X3QgaWRlbnRpZmllcikKLSAgICBTZW5kSGFu
ZHNoYWtlKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gaGVhZGVyRmllbGRQcm94eSwgdWludDY0X3QgaWRlbnRp
ZmllcikKKyAgICBTZW5kSGFuZHNoYWtlKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBoZWFkZXJGaWVs
ZFByb3h5LCB1aW50NjRfdCBpZGVudGlmaWVyKQogICAgIENsb3NlKCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA4N2YxMzc0Y2FhNmY1NDgwYjBmMWVjYTk5ZWQyMjg3NTgw
MTc3NjRjLi5jYzg3NWExNzhmYmE3Y2FhYzkxZTYzNmUyNmE4YzJmODQwNTJhZjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0zODgsOCArMzg4LDggQEAgdm9pZCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0cygp
CiAgICAgICAgIGJvb2wgaGFzU2VudEF0dHJpYnV0aW9uID0gZmFsc2U7CiAKICAgICAgICAgZm9y
IChhdXRvJiBhdHRyaWJ1dGlvbiA6IGF0dHJpYnV0aW9ucykgewotICAgICAgICAgICAgT3B0aW9u
YWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5k
KCkuZWFybGllc3RUaW1lVG9TZW5kKCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludD4gYXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCA9IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCgpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4g
ZWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5lYXJsaWVzdFRp
bWVUb1NlbmQoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ+IGF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQoKTsKIAogICAgICAgICAgICAgaWYgKCFlYXJsaWVzdFRpbWVUb1NlbmQgfHwgIWF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGRhNDE1N2JmODZhYTRkNmUw
MmFmOTZmZTkzMTQxZTY4ZjkxYWVjOTguLjM5MWRmNjNhNjIwNTk1NDlmMGM5ODU1NDNjMGNmNGQ3
YjNlNGY4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtODIsOCArODIsOCBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVx
dWVzdHNUaW1lcjsKICAgICBib29sIG1faXNSdW5uaW5nVGVzdCB7IGZhbHNlIH07Ci0gICAgT3B0
aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxV
Ukw+IG1fdG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8VVJM
PiBtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4g
bV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lv
bj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CkBAIC05NCw3ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFVSTCBhdHRyaWJ1dGlvblJlcG9ydEF0dHJpYnV0ZU9uVVJMOwog
ICAgIH07CiAKLSAgICBPcHRpb25hbDxBdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWc+IG1fYXR0
cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnOworICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25S
ZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZzsKIAogICAgIHN0
cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9uVmFsdWVzIHsKICAgICAgICAgU3RyaW5nIHVubGlu
a2FibGVUb2tlbjsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcg
a2V5SUQ7CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1
ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFs
PFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9y
VGVzdGluZzsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZjNjYzY3MDMyMmMwZWVkZDA3ZTNlODcxY2Zi
YjFiZjdiY2ZjOWFhNi4uMmNkYTk5NWRlY2ZmZmYyZmMxNmU3YjczZWZjOTg3MjM4ZjA1OTAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIsIHJl
Z2lzdHJhdGlvbktleSwgY2FjaGVQb2xpY3kpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0
YXRlIHN0YXRlLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VXb3Jr
ZXJEYXRhKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0
YXRlSW5DbGllbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYgc2VydmljZVdvcmtlckRhdGEpCiB7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShp
ZGVudGlmaWVyLCBzdGF0ZSwgc2VydmljZVdvcmtlckRhdGEpKTsKIH0KQEAgLTE1OSw3ICsxNTks
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgIGlmICghc2VydmVyKCkuY2FuSGFuZGxl
U2NoZW1lKGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJz
KCkub3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAg
ICAgYXV0byB0b3BPcmlnaW4gPSBsb2FkZXIucGFyYW1ldGVycygpLmlzTWFpbkZyYW1lTmF2aWdh
dGlvbiA/IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChyZXF1ZXN0LnVybCgpKSA6IGxvYWRl
ci5wYXJhbWV0ZXJzKCkudG9wT3JpZ2luLT5kYXRhKCk7CiAgICAgICAgIGF1dG8qIHJlZ2lzdHJh
dGlvbiA9IGRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcodG9wT3JpZ2luLCByZXF1ZXN0LnVybCgpKTsK
QEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgIGlmICghZGVz
dGluYXRpb25Xb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJPckNsaWVudERhdGE+IHNvdXJjZURhdGE7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyT3JDbGllbnREYXRhPiBzb3VyY2VEYXRhOwogICAgIFdURjo6c3dpdGNoT24oc291cmNl
SWRlbnRpZmllciwgWyZdKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHNvdXJjZVdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoaWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBzb3VyY2VEYXRhID0gU2VydmljZVdvcmtlck9yQ2xpZW50RGF0
YSB7IHNvdXJjZVdvcmtlci0+ZGF0YSgpIH07CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9u
TWF0Y2hSZXF1ZXN0SWQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OkRpZEdldFJlZ2lzdHJhdGlvbnMgeyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25zIH0pOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwg
U2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRh
JiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTdHJpbmcmJiB1c2VyQWdlbnQp
CiB7CiAgICAgYXV0byBjb250ZXh0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJM
KGRhdGEudXJsKTsKICAgICBib29sIGlzTmV3T3JpZ2luID0gV1RGOjphbGxPZihtX2NsaWVudE9y
aWdpbnMudmFsdWVzKCksIFsmY29udGV4dE9yaWdpbl0oYXV0byYgb3JpZ2luKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjA5NWFmZDA3ZDgyY2Q3YmM0OTBmNjFm
NGQyNDlkYThkYTRhMzAxMy4uMjY0ZTViMzA0MzhlZDE2ZDBkMWQyMGIyMzdlMzkzNTY2MTk2ZGIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtODUsNyArODUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkg
ZmluYWw7CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFsOwogICAg
IHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jiwg
V2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVSZWdp
c3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0
YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiYpIGZp
bmFsOwogICAgIHZvaWQgdXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlKSBmaW5hbDsKICAg
ICB2b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRh
dGVUaW1lKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxs
VGltZSkgZmluYWw7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNo
UmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCk7CiAgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJh
dGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CiAKLSAgICB2b2lkIHJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYm
IHVzZXJBZ2VudCk7CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyRnJvbUNsaWVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHdoZW5TZXJ2aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDRjMTg2Mzc3ZjhlNWZlMmYwM2IxMzQwMmE5YjM5MDYwMWUzM2I1OTAuLjFjOTQ2
YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMyNTlhYWU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0
Y2hSZWdpc3RyYXRpb24odWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBV
UkwgY2xpZW50VVJMKQogICAgIFdoZW5SZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBzZXJ2aWNl
UmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCiAgICAgR2V0UmVnaXN0cmF0
aW9ucyh1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRV
UkwpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGEgZGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXI+IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIFN0cmluZyB1c2VyQWdlbnQpCisgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU3RyaW5nIHVzZXJBZ2VudCkKICAgICBVbnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKIAogICAgIFRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgd29ya2VySWRlbnRpZmllcikgLT4gKCkg
QXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggODRkN2I0NjlhNzNlNzE4MDc5MmZlYjNmN2VkZDZmNmUxZGNlMDc1ZC4uM2Zh
MGU5OTcwZjI1NTVjYzgwNGI5Mjc0YjBmN2VkZDE5NTcyNTUyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9V
bnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwg
Ym9vbCBoYXNTZWN1cml0eUVycm9yKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRh
LCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQgeyBy
ZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBkODk4NmFh
Njc4MGQ0NmExNjRmZGFlNzVhZjZlYWFjYmQyYzEyZGNmLi5iMDExNGQyZjhkNzYxMTdiZDk2MDg5
NjU5NjA5M2Q0NTg3YWEwMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
aXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7
CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhh
c2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFs
OwotICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRDbGll
bnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBo
YXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JikgZmluYWw7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkOGQ5NDM0MDg0NWRkODViMzZkYzg5
MjlhYjFlNjI3MTg4OTMyODlhLi41NTJjYWU1ZTIyNDQyNDJkZjUwMzJhMDI4NmYwZmJhZTk5MjQ2
NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDE2ICsyNSwxNiBAQAogbWVzc2FnZXMgLT4g
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgICMgV2hl
biBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMgY2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGJ5
IFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCi0gICAgU2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKQotICAgIFNjcmlwdENv
bnRleHRTdGFydGVkKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkKLSAgICBEaWRG
aW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCisgICAgU2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3RyaW5nIG1lc3NhZ2UpCisg
ICAgU2NyaXB0Q29udGV4dFN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxl
RmV0Y2gpCisgICAgRGlkRmluaXNoSW5zdGFsbChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1
Y2Nlc3NmdWwpCiAgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGFz
UGVuZGluZ0V2ZW50cykKICAgICBTa2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBBc3luYwogICAgIFdvcmtlclRlcm1pbmF0ZWQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBGaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0
Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwotICAgIENsYWltKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAt
PiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYworICAgIENs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFz
eW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVz
c2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291
cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAppbmRl
eCBiYjEyZjM0MjgxNmUyMjcwMzAyZjFkNTE0YjMxZGU4NGE5ZDA5M2E2Li5hYTA1YzU5OWNjNTQz
ZWJkZWY1ZjY5OGZlMGExMzE0Y2JlOGU1NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2UgbV9kYXRhYmFzZTsKICAgICBjb25zdCB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlcyB7
IDAgfTsKICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBtX2RhdGFiYXNlU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX2RhdGFi
YXNlU2l6ZTsKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9jbGVhclN0YXRlbWVudDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0U3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDNiNmI0MWQxNjUyNzQ0MWNkODM0ZWEz
NWRhMTg0YzI4ZWJhMzQ4NjEuLjg2YTVlZGU0YjM2ODhkYjI2MzYzNDFmMmRkZGNhZGYyZTFiODcz
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTUxLDEx
ICs1MSwxMSBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgT3JpZ2luRGV0YWlscyB7CiAgICAgICAg
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOwotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gY3Jl
YXRpb25UaW1lOwotICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lOwogCiAgICAgICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE9yaWdpbkRldGFpbHM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE9yaWdpbkRldGFpbHM+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICAgICAg
T3JpZ2luRGV0YWlscyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IG9yaWdpbklkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNyZWF0aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9
CiAgICAgfTsKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpPcmlnaW5EZXRhaWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6T3JpZ2luRGV0YWlsczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzIHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmlu
ZGV4IDYxMzM1YTc5M2UzNTY4YTNiNWRmZThjYjU5MDJkNjgxMTAwOTQ3YWMuLjhjNTNmNjY1N2Jh
MzllMmZkNDIzYTFlNWQ2OTZhZWYzMDVmNzhiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMTkwLDcg
KzE5MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhSW1wbElEKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyPiBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gKml0ID09IHNvdXJjZUNvbm5l
Y3Rpb24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoc3RvcmFnZUFyZWFJbXBsSUQpIDogc3RkOjpudWxs
b3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IG9w
dGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSAqaXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6
bWFrZV9vcHRpb25hbChzdG9yYWdlQXJlYUltcGxJRCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0
aW9uU3RvcmFnZUFyZWFJRCA9IG1faWRlbnRpZmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgp
LCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVl
Lmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIG9w
dGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSBXVEZNb3ZlKG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBs
SUQpXSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCA3
MGE2NWE0YmE2OGY3NzI1YjkwZjUyZjRkN2E5YzU1ZmQ5NmJjZmVkLi40MjQzZjMyNTczYmRhZDE0
NTIxMDdmNTVjODIzMjg5NjFjZDViMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsK
IAotdXNpbmcgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYpPjsKK3VzaW5nIENv
bm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYpPjsKIHVzaW5nIEdldFZhbHVl
c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYpPjsKIHVzaW5nIEdldE9yaWdpbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPjsKIHVzaW5nIEdl
dE9yaWdpbkRldGFpbHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmluCmluZGV4IDRlYjljYmM5YmJiZmYyYTAwZDEy
N2M2YTJmYWZkNWRlM2U0YWY3OGMuLjZkMDZjMWQyZGQ3M2RlNTcxZWNhOTZmMDkwYzUwODZhODZj
N2NkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KQEAgLTIx
LDkgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3RvcmFnZU1hbmFnZXJT
ZXQgewotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEp
IC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJ
RCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29ubmVjdFRvVHJhbnNpZW50TG9j
YWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KLSAgICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0
eU9yaWdpbkRhdGEpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4g
c3RvcmFnZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRh
dGEpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9y
YWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0RnJv
bVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIHN0b3JhZ2VBcmVhSUQp
IFdhbnRzQ29ubmVjdGlvbgogICAgIEdldFZhbHVlcyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBzdG9yYWdlQXJlYUlEKSAtPiAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBT
eW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlv
bi5jcHAKaW5kZXggNTlhZTQzM2RhNzA3NDFhNzlmOGMzODE5ZGYzOWFkMTQ0ZGU1MDMzMC4uYWU1
ODNhYzllODJjNDkwYmU0MzgzNzI1OTA1NmQ2Y2ZiYTcyN2I0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBBc3luY1JldmFsaWRhdGlvbjo6c3RhbGVXaGlsZVJldmFs
aWRhdGVFbmRpbmcoKQogICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKFJlc3VsdDo6VGltZW91
dCk7CiB9CiAKLUFzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlvbihDYWNoZSYgY2Fj
aGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYg
ZW50cnksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYgaGFuZGxl
cikKK0FzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnks
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5kbGVy
KQogICAgIDogbV90aW1lcigqdGhpcywgJkFzeW5jUmV2YWxpZGF0aW9uOjpzdGFsZVdoaWxlUmV2
YWxpZGF0ZUVuZGluZykKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVy
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5
bmNSZXZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5
bmNSZXZhbGlkYXRpb24uaAppbmRleCBlODk3NzEwYjY1ZTQ1ZThjODZiNTlhZDJkYjk3OWViY2Zi
ODAwNmY1Li5hY2Q2YjdhNmVlZTU3MDBmNTI5YTg5MTg5ZmYxOWY3N2JmODNkNzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0FzeW5jUmV2YWxpZGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRh
dGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgVGltZW91dCwKICAgICAg
ICAgU3VjY2VzcywKICAgICB9OwotICAgIEFzeW5jUmV2YWxpZGF0aW9uKENhY2hlJiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJik7CisgICAgQXN5
bmNSZXZhbGlkYXRpb24oQ2FjaGUmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
JiYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBjb25z
dCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQoKSBjb25zdCB7IHJldHVybiAqbV9sb2FkOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKaW5kZXggY2Q2ODBmMDNkZjI2MTZlZTljYWEzZmVjYTVjZGE3OTQ0ODk5ZjQ0
NS4uNTUwMTkwOTYzNzY0M2Q2MDdjM2E2MTMyYmM4ZGNhMmViZDEwYTMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogCiB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21E
aXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYm
IGNhbGxiYWNrKQogewotICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAg
IGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
c3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
cikgewogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgRW5naW5lOjpy
ZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENh
Y2hlc0NhbGxiCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWNo
ZXMtPmluaXRpYWxpemUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oT3B0
aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWNoZXMtPmluaXRpYWxp
emUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlc10oc3RkOjpvcHRpb25hbDxF
cnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgRW5naW5lOjpyZWFk
Q2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUNhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFjYWNoZS0+aXNPcGVuZWQoKSkgewot
ICAgICAgICBjYWNoZS0+b3BlbihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFs
PEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2FjaGUtPm9wZW4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1h
a2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC01NTAsNyArNTUwLDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICB9KTsKIH0KIAot
T3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQx
LDcgKzc0MSw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rv
cmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiB7CiAgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogZm9sZGVyUGF0aHMpIHsK
LSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwg
Km1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2lu
LCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRlclBhdGhdIChPcHRpb25hbDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpyZXRy
aWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xk
ZXJPcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFmb2xkZXJPcmlnaW4pCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKGZvbGRlck9yaWdpbi0+dG9wT3Jp
Z2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmlnaW4tPmNsaWVudE9yaWdpbiAhPSBvcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaAppbmRleCA0NDA5ZTdiNDk2YWI4Y2Y2NDZjOWEwZmZhZWRmNTczNGMwZmYxZTg4
Li42ZDQ0ODgxMjc5ZDFiOTYyN2E5YTllN2E5OWIwNWYzZGY2Y2FkMDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6
OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKICAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSk7CiAgICAgdm9pZCB3cml0ZVNpemVGaWxlKGNvbnN0IFN0cmluZyYsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPHVpbnQ2NF90PiByZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHJlYWRTaXplRmlsZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgcm9vdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RQYXRoOyB9CiAg
ICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0
LnZhbHVlKCk7IH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1f
bmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBS
ZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7Ci0gICAgT3B0aW9uYWw8TmV0d29ya0NhY2hlOjpT
YWx0PiBtX3NhbHQ7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2Fs
dDsKICAgICBIYXNoTWFwPENhY2hlSWRlbnRpZmllciwgTG9ja0NvdW50PiBtX2NhY2hlTG9ja3M7
CiAgICAgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2s+
IG1faW5pdGlhbGl6YXRpb25DYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjaz4gbV9wZW5kaW5nV3JpdGVDYWxs
YmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDFmZWY1ZTYxNmQ3NWM3MDQ3
NWNkM2Q3M2MzOTNlY2E5NzczMDhlMzYuLjY0MDE2YjBjZTIwOTA4OWE5ODFiY2UyMjQ5Nzc4Zjgy
YWQ2NDhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC0yMDQsNyArMjA0LDcg
QEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9
KTsKIH0KIAotdm9pZCBDYWNoZTo6ZmluaXNoT3BlbmluZyhDb21wbGV0aW9uQ2FsbGJhY2smJiBj
YWxsYmFjaywgT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpCit2b2lkIENhY2hlOjpmaW5pc2hPcGVu
aW5nKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPEVycm9yPiYm
IGVycm9yKQogewogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlY29yZEluZm9y
bWF0aW9uPj4gcmVjb3JkczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV9yZWNvcmRzLnZhbHVl
cygpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8RXJyb3I+IG1fZXJyb3I7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJv
cjsKICAgICBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrIG1fY2FsbGJhY2s7CiAgICAgVmVjdG9y
PHVpbnQ2NF90PiBtX3JlY29yZElkZW50aWZpZXJzOwogfTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2
b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nh
Y2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZC51bnNhZmVHZXQoKSwgW2NhY2hlcyA9IG1h
a2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0gV1RG
TW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8RE9N
Q2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlcy5yZXF1
ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZC51bnNhZmVHZXQoKSwgW2NhY2hlcyA9IG1ha2VSZWYobV9j
YWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNv
cmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxET01DYWNo
ZUVuZ2luZTo6RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIENhY2hlOjpyZW1vdmVG
cm9tUmVjb3JkTGlzdChjb25zdCBWZWN0b3I8dWludDY0X3Q+JiByZWNvcmRJZGVudGlmaWVycykK
IAogdm9pZCBDYWNoZTo6d3JpdGVSZWNvcmRUb0Rpc2soY29uc3QgUmVjb3JkSW5mb3JtYXRpb24m
IHJlY29yZEluZm9ybWF0aW9uLCBSZWNvcmQmJiByZWNvcmQsIFJlZjxBc3luY2hyb25vdXNQdXRU
YXNrQ291bnRlcj4mJiB0YXNrQ291bnRlciwgdWludDY0X3QgcHJldmlvdXNSZWNvcmRTaXplKQog
ewotICAgIG1fY2FjaGVzLndyaXRlUmVjb3JkKCp0aGlzLCByZWNvcmRJbmZvcm1hdGlvbiwgV1RG
TW92ZShyZWNvcmQpLCBwcmV2aW91c1JlY29yZFNpemUsIFt0YXNrQ291bnRlciA9IFdURk1vdmUo
dGFza0NvdW50ZXIpXShPcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgeworICAgIG1fY2FjaGVzLndy
aXRlUmVjb3JkKCp0aGlzLCByZWNvcmRJbmZvcm1hdGlvbiwgV1RGTW92ZShyZWNvcmQpLCBwcmV2
aW91c1JlY29yZFNpemUsIFt0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShzdGQ6
Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAg
ICAgIHRhc2tDb3VudGVyLT5zZXRFcnJvcihlcnJvci52YWx1ZSgpKTsKICAgICB9KTsKQEAgLTU3
Nyw5ICs1NzcsOSBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJ
bmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgcmV0dXJuIHsgcmVjb3Jk
SW5mb3JtYXRpb24ua2V5LCB7IH0sIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBkZWNvZGVET01DYWNoZVJl
Y29yZChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gZGVjb2RlRE9NQ2FjaGVSZWNv
cmQoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxG
ZXRjaEhlYWRlcnM6Okd1YXJkPiByZXF1ZXN0SGVhZGVyc0d1YXJkOworICAgIHN0ZDo6b3B0aW9u
YWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVxdWVzdEhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVy
ID4+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAgICAgaWYgKCFyZXF1ZXN0SGVhZGVyc0d1YXJkKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTkyLDEyICs1OTIsMTIgQEAgc3RhdGlj
IE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hl
UmVjb3JkKFdURjo6UGVyc2kKICAgICBpZiAoIUZldGNoT3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVu
dChkZWNvZGVyLCBvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHJlZmVycmVyOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiByZWZlcnJlcjsKICAgICBkZWNvZGVyID4+IHJlZmVycmVyOwogICAgIGlmICghcmVmZXJyZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8RmV0Y2hI
ZWFkZXJzOjpHdWFyZD4gcmVzcG9uc2VIZWFkZXJzR3VhcmQ7CisgICAgc3RkOjpvcHRpb25hbDxG
ZXRjaEhlYWRlcnM6Okd1YXJkPiByZXNwb25zZUhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+
IHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGlmICghcmVzcG9uc2VIZWFkZXJzR3VhcmQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVj
b3JkKFdURjo6UGVyc2kKICAgICBpZiAoIVJlc291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVy
LCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlQm9keVNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcmVzcG9uc2VCb2R5U2l6ZTsKICAgICBkZWNvZGVyID4+IHJlc3BvbnNlQm9keVNpemU7
CiAgICAgaWYgKCFyZXNwb25zZUJvZHlTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtNjI4LDIxICs2MjgsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6UGVyc2kKICAgICB9fTsK
IH0KIAotT3B0aW9uYWw8Q2FjaGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRI
ZWFkZXIoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQorc3RkOjpvcHRpb25hbDxDYWNo
ZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9yYWdl
OjpSZWNvcmQmIHN0b3JhZ2UpCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKHN0b3JhZ2UuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZS5oZWFkZXIuc2l6ZSgpKTsKIAotICAg
IE9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gaW5zZXJ0aW9uVGltZTsKICAgICBkZWNvZGVyID4+IGluc2VydGlvblRpbWU7CiAgICAgaWYg
KCFpbnNlcnRpb25UaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsK
ICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4gcmVjb3JkID0gZGVjb2RlRE9NQ2FjaGVSZWNvcmQoZGVjb2Rlcik7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQgPSBkZWNvZGVET01D
YWNoZVJlY29yZChkZWNvZGVyKTsKICAgICBpZiAoIXJlY29yZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtNjUzLDcgKzY1Myw3IEBAIE9wdGlvbmFsPENhY2hlOjpEZWNvZGVk
UmVjb3JkPiBDYWNoZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYK
ICAgICB9fTsKIH0KIAotT3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3Jh
Z2U6OlJlY29yZCYgc3RvcmFnZSkKK3N0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2Rl
KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRl
Y29kZVJlY29yZEhlYWRlcihzdG9yYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4
IDhmNzhkNzcwZGMzMDA2MjMyYTViOTA0MzM5YzE0MTlmODlmMmExNTIuLmIyMGRjZjdiYzcwY2E2
YzNmYjFkYjQ5MTQ1ZmRkZTU2MjU5NzcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAg
LTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcG9zZSgpOwogICAgIHZvaWQgY2xl
YXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3Jh
Z2U6OlJlY29yZCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+IGRlY29kZShjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29y
ZCYpOwogICAgIHN0YXRpYyBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCBlbmNvZGUoY29u
c3QgUmVjb3JkSW5mb3JtYXRpb24mLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVj
b3JkJik7CiAKICAgICBzdHJ1Y3QgRGVjb2RlZFJlY29yZCB7CkBAIC05NSw3ICs5NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKICAgICAgICAgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZCByZWNvcmQ7CiAgICAgfTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8
RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6UmVjb3JkJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGVjb2RlZFJlY29yZD4g
ZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7
CiAKICAgICBib29sIGhhc1BlbmRpbmdPcGVuaW5nQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4g
IW1fcGVuZGluZ09wZW5pbmdDYWxsYmFja3MuaXNFbXB0eSgpOyB9CiAKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVjb3JkSW5mb3JtYXRpb24gdG9SZWNvcmRJbmZvcm1hdGlv
bihjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkJik7CiAKLSAgICB2b2lkIGZp
bmlzaE9wZW5pbmcoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
LCBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYpOworICAgIHZvaWQg
ZmluaXNoT3BlbmluZyhXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNr
JiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmKTsKICAg
ICB2b2lkIHJldHJpZXZlUmVjb3JkKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiwgUmVmPFJlYWRS
ZWNvcmRUYXNrQ291bnRlcj4mJik7CiAKICAgICB2b2lkIHJlYWRSZWNvcmRzTGlzdChXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwCmluZGV4IDg3NTUxNTNhYzgzYTk0Yjk1MjJjYjNkZGU4NjI2MzRjMzdkYWY3
OTkuLjFhNjgwMDYwZmUzNmJkMmExOGVkMzYyZWUyYjllMjJmMWE1NWU2ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ2FjaGVzOjp+Q2FjaGVzKCkK
ICAgICBBU1NFUlQobV9wZW5kaW5nV3JpdGluZ0NhY2hlc1RvRGlza0NhbGxiYWNrcy5pc0VtcHR5
KCkpOwogfQogCi12b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxl
bmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGZpbGVuYW1lKSkgewpAQCAtMTA1LDIxICsxMDUsMjEgQEAgdm9pZCBDYWNoZXM6
OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
IGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50T3JpZ2luLnByb3RvY29sOwogICAgIGVuY29kZXIg
PDwgbV9vcmlnaW4uY2xpZW50T3JpZ2luLmhvc3Q7CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbi5j
bGllbnRPcmlnaW4ucG9ydDsKLSAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZp
bGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZm
ZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSBtdXRhYmxlIHsKKyAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVu
YW1lKG1fcm9vdFBhdGgpLCBEYXRhIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYg
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9y
KSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVz
OjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNs
aWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdp
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3Jp
Z2luOwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBjbGllbnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9y
aWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgbV9zdG9y
YWdlID0gc3RvcmFnZS5yZWxlYXNlTm9uTnVsbCgpOwogICAgIG1fc3RvcmFnZS0+d3JpdGVXaXRo
b3V0V2FpdGluZygpOwogCi0gICAgc3RvcmVPcmlnaW4oW3RoaXNdIChPcHRpb25hbDxFcnJvcj4m
JiBlcnJvcikgbXV0YWJsZSB7CisgICAgc3RvcmVPcmlnaW4oW3RoaXNdIChzdGQ6Om9wdGlvbmFs
PEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6OmluaXRpYWxpemUg
ZmFpbGVkIHN0b3Jpbmcgb3JpZ2luIHdpdGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KCpl
cnJvcikpOwogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBDYWNoZXM6Om9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAog
ICAgIGlmIChhdXRvKiBjYWNoZSA9IGZpbmQobmFtZSkpIHsKLSAgICAgICAgY2FjaGUtPm9wZW4o
W2NhY2hlSWRlbnRpZmllciA9IGNhY2hlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FjaGUtPm9wZW4oW2NhY2hlSWRlbnRpZmllciA9IGNhY2hlLT5pZGVudGlmaWVyKCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIENhY2hlczo6b3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyID0gbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKTsKICAgICBtX2Nh
Y2hlcy5hcHBlbmQoQ2FjaGUgeyAqdGhpcywgY2FjaGVJZGVudGlmaWVyLCBDYWNoZTo6U3RhdGU6
Ok9wZW4sIFN0cmluZyB7IG5hbWUgfSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpIH0pOwog
Ci0gICAgd3JpdGVDYWNoZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNh
Y2hlSWRlbnRpZmllcl0oT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgIHdy
aXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNoZUlkZW50
aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBj
YWxsYmFjayhDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQgeyBjYWNoZUlkZW50aWZpZXIs
ICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBDYWNoZXM6
OnJlbW92ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIG1fcmVtb3ZlZENhY2hlcy5hcHBlbmQoV1RGTW92ZShtX2NhY2hlc1twb3Np
dGlvbl0pKTsKICAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOwogCi0gICAgd3JpdGVDYWNo
ZXNUb0Rpc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXJdKE9wdGlv
bmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICB3cml0ZUNhY2hlc1RvRGlzayhbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllcl0oc3RkOjpvcHRpb25hbDxFcnJv
cj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrKENhY2hlSWRlbnRpZmllck9w
ZXJhdGlvblJlc3VsdCB7IGlkZW50aWZpZXIsICEhZXJyb3IgfSk7CiAgICAgfSk7CiB9CkBAIC00
MTAsNyArNDEwLDcgQEAgc3RhdGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29uc3Qg
VmVjdG9yPENhY2hlPiYgY2FjaGVzKQogc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBjb3VudDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb3VudDsKICAgICBkZWNvZGVyID4+IGNvdW50Owog
ICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcjo6UmVh
ZERpc2spOwpAQCAtNDIwLDExICs0MjAsMTEgQEAgc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW0KICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7CiAKICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgKmNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7
CiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFkRGlzayk7Ci0gICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gdW5pcXVlTmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVu
aXF1ZU5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gdW5pcXVlTmFtZTsKICAgICAgICAgaWYgKCF1
bmlxdWVOYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yOjpSZWFk
RGlzayk7CkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNr
KENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAogICAgIG1faXNXcml0aW5n
Q2FjaGVzVG9EaXNrID0gdHJ1ZTsKLSAgICBtX2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc0xpc3RG
aWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyhtX2NhY2hlcyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKE9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2VuZ2luZS0+d3Jp
dGVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSwgZW5jb2RlQ2FjaGVOYW1lcyht
X2NhY2hlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgewogICAgICAgICBtX2lzV3JpdGluZ0NhY2hlc1RvRGlzayA9IGZhbHNlOwogICAgICAgICBp
ZiAoZXJyb3IpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJD
YWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrIGZhaWxlZCB3cml0aW5nIGNhY2hlcyB0byBkaXNrIHdp
dGggZXJyb3IgJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KCplcnJvcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmgKaW5kZXggMDYwMWVlNmIyZDc0ZWMxYmY4NzFiMTRlYmE5ZDFhMjU2ZTQ2OGRlNS4u
N2ZmMjFjZTA0MTc5NTg3ZmM0ZmIxNTE5ZWM4ZWEyYWUxZTg4MWVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENh
Y2hlcz4gY3JlYXRlKEVuZ2luZSYsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBTdHJpbmcmJiBy
b290UGF0aCk7CiAgICAgfkNhY2hlcygpOwogCi0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmln
aW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4m
Jik+JiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYpOwogCiAgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJh
Y2smJik7CiAgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwpAQCAtOTAsNyArOTAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKIAogICAgIHZvaWQgc3RvcmVPcmlnaW4oV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtDYWNo
ZTo6RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdp
bj4gcmVhZE9yaWdpbihjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmKTsKIAogICAgIENhY2hlKiBm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdXcml0aW5nQ2Fj
aGVzVG9EaXNrQ2FsbGJhY2tzKCk7CkBAIC0xMTAsMTAgKzExMCwxMCBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxDYWNoZT4gbV9yZW1vdmVkQ2FjaGVzOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6
OlN0b3JhZ2U+IG1fc3RvcmFnZTsKICAgICBIYXNoTWFwPE5ldHdvcmtDYWNoZTo6S2V5LCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+IG1fdm9sYXRpbGVT
dG9yYWdlOwotICAgIG11dGFibGUgT3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBtX3ZvbGF0
aWxlU2FsdDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0NhY2hlOjpTYWx0PiBt
X3ZvbGF0aWxlU2FsdDsKICAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjaz4gbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3M7CiAgICAgYm9v
bCBtX2lzV3JpdGluZ0NhY2hlc1RvRGlzayB7IGZhbHNlIH07Ci0gICAgRGVxdWU8Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+KT4+
IG1fcGVuZGluZ1dyaXRpbmdDYWNoZXNUb0Rpc2tDYWxsYmFja3M7CisgICAgRGVxdWU8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpF
cnJvcj4pPj4gbV9wZW5kaW5nV3JpdGluZ0NhY2hlc1RvRGlza0NhbGxiYWNrczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5jcHAKaW5kZXggZjk4ZTNiZTE2OWM1MWExOGM5MDVlMTA3ZDk3MjE3MWFmMjUwMzhmZC4uNzk2
OGI2YzM1OTRjZjkyMTQ5M2Q0M2E2OGYwMDU1NGFmYjE0ZjJjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIp
CiAgICAgbV9jYWNoZXNMb2Nrcy5yZW1vdmUocmVmZXJlbmNlUmVzdWx0KTsKIH0KIAotdm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJy
b3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEVuZ2luZTo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCks
IFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCA1NjA2MGRiZDc2ZjU1YzFkZDE2YWVlMDYx
YTNjOTc3ZDg1N2M2YzUxLi5kODRkMDUyYjIzNTAxNzE3ZDRkZjUwNWQwNWE0ZmM4YjJiN2E5ZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJv
cj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4mJik+JiYpOwogICAgIHZvaWQgZW5naW5lUmVwcmVz
ZW50YXRpb24oIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICAKICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA1OTkyMDBhNjIwMGQxZWFiZThh
MjYwNTJiN2EzOTMzMzEyOTUyZDA5Li41ZDIxZWVlMzA4MTBhMDU0ODdmMDdhM2UwMzgwYTFjZTNh
N2YyNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0zMiw2ICszMiw2IEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24gewogICAgIERlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6
Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucykgLT4gKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpS
ZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgcmVzdWx0KSBBc3luYwogICAgIFB1dFJlY29yZHModWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD4gcmVjb3JkKSAtPiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzT3JFcnJvciByZXN1bHQpIEFzeW5jCiAKLSAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBDbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+IGVycm9yKSBBc3luYwog
ICAgIEVuZ2luZVJlcHJlc2VudGF0aW9uKCkgLT4gKFN0cmluZyByZXByZXNlbnRhdGlvbikgQXN5
bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCBmNzdmZDExMmEyZGEwYjJkZDhkNDY3YjNkNWUzODRmZTk0ZjA4ZGMw
Li4xYTU2OGYyZDllNzFhNDU4ZGE1MDdlMGQ5YTNlZDI3NzUxZmM1NDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0x
NzgsNyArMTc4LDcgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiByZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKE5ldHdv
cmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgT3B0aW9uYWw8U2Vjb25kcz4gbWF4U3Rh
bGUpCitzdGF0aWMgVXNlRGVjaXNpb24gcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihOZXR3b3Jr
U2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4
U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgp
KQogICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246OlZhbGlkYXRlOwpAQCAtMzM5LDcgKzMzOSw3
IEBAIHN0YXRpYyBib29sIGlubGluZSBjYW5SZXF1ZXN0VXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFX1NUQUxFX1dISUxFX1JFVkFMSURBVEUpCi12b2lkIENhY2hlOjpzdGFydEFzeW5jUmV2
YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+JiYg
ZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQordm9pZCBDYWNo
ZTo6c3RhcnRBc3luY1JldmFsaWRhdGlvbklmTmVlZGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmV0d29ya0NhY2hlOjpLZXkmIGtleSwgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiYmIGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQogewogICAgIG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9ucy5lbnN1cmUoa2V5
LCBbJl0gewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0
aW9uQnlQYWdlLmVuc3VyZShmcmFtZUlELCBbXSB7CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBD
YWNoZTo6YnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBXZWJDb3IKICNlbmRpZgogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC01
MDgsNyArNTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24KICAgICByZXR1cm4gY2FjaGVF
bnRyeTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCwgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKQorc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwg
IihOZXR3b3JrUHJvY2Vzcykgc3RvcmluZyByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNjAxNjAzYzg5ZWJjNzkyZWUzYTc3YTZlNmFh
MjVkMzc0MGIxNDg1OS4uNGJlYzBhYjUzOTQ1MzY4YjJkYmY2Y2UxMTI3YTliZWU1MDFjNTkwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCkBAIC0xNjUsOSArMTY1LDkgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBG
dW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYp
PjsKLSAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYg
PSBudWxscHRyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBP
cHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
c3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlk
YXRpbmdSZXNwb25zZSk7CiAKICAgICBzdHJ1Y3QgVHJhdmVyc2FsRW50cnkgewpAQCAtMTk3LDcg
KzE5Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RB
TEVfV0hJTEVfUkVWQUxJREFURSkKLSAgICB2b2lkIHN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5l
ZWRlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6
OktleSYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBzdGFydEFzeW5j
UmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgTmV0d29ya0NhY2hlOjpLZXkmLCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+JiYsIGNvbnN0IEds
b2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7
CiAjZW5kaWYKIAogICAgIHZvaWQgYnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkdW1wRmlsZVBh
dGgoKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUR1bXBGaWxlKCk7CiAKLSAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtYXhBZ2VDYXAoRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAo
RW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCk7
CiAKICAgICBSZWY8U3RvcmFnZT4gbV9zdG9yYWdlOwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4g
bV9uZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcAppbmRleCAyY2RjNDIyZjMwOGZhMDBl
NjY2NmVhODc1ZWRlZjZmYTViMDM2ZmNmLi5jMjMwZmI0YmUwMzQ2NDk2NWE1OTU0Y2YyNzMwODYy
ZWYzNjAyZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUNvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuY3BwCkBAIC00MCwyMCArNDAsMjAgQEAgdm9pZCBD
b2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OkhUVFAKICAgICB9CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXA+IENvZGVyPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gQ29kZXI8V2ViQ29y
ZTo6SFRUUEhlYWRlck1hcD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBoZWFkZXJzU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBo
ZWFkZXJzU2l6ZTsKICAgICBkZWNvZGVyID4+IGhlYWRlcnNTaXplOwogICAgIGlmICghaGVhZGVy
c1NpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpIVFRQ
SGVhZGVyTWFwIGhlYWRlcnM7CiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8ICpoZWFkZXJz
U2l6ZTsgKytpKSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICAg
ICAgaWYgKCFuYW1lKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZh
bHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCmluZGV4IDAwNWIxNTNl
MmI3NDVmZDU1N2Y1ZDlhM2E4YzAzYmNlYzlmNThlYTUuLjg5MjI2ZmE2ZGMxZWYwMTIzNTQ3MzJk
MDQzNjg5ZGZiOWFmMjlkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgUGVyc2lzdGVuY2UgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpIVFRQSGVhZGVyTWFwJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkhU
VFBIZWFkZXJNYXA+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKaW5kZXggNzU4ZTQ1YzQ2OGQ3NGZjZmZmZTlhNTE5NjA5MmYwNjFjYTA0N2FkMi4u
ZmZhOTEwNGNkNWNkNjFhZjE2ZDRjYzA4MjJhMDdkNzMyYjIwZjAxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKQEAgLTExOCwyMCArMTE4LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRl
Y29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlCiAgICAgZW50
cnktPm1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKICAgICBlbnRyeS0+bV9yZXNwb25z
ZS5zZXRTb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUp
OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogICAgIGRlY29kZXIg
Pj4gaGFzVmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogICAgIGlmICghaGFzVmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICgqaGFzVmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKSB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RIZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4gdmFyeWluZ1JlcXVlc3RIZWFkZXJz
OwogICAgICAgICBkZWNvZGVyID4+IHZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKICAgICAgICAgaWYg
KCF2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgZW50cnktPm1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzID0gV1RGTW92ZSgqdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVk
aXJlY3Q7CiAgICAgaWYgKCFpc1JlZGlyZWN0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE0Miw3ICsxNDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2Vjb25kcz4+IG1h
eEFnZUNhcDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4+IG1heEFn
ZUNhcDsKICAgICBkZWNvZGVyID4+IG1heEFnZUNhcDsKICAgICBpZiAoIW1heEFnZUNhcCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggMTNlNzA5MGIwNThhYzI1MmM0
MTdlM2QyYWYyNTQ4OTQ0ODkwYTk3Yy4uZGVkYTg2YTQ0YjYxODQ5ZDZkYmIzZDAxZDM0MjAxOTJl
NzcyOTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRl
cnMoKSBjb25zdCB7IHJldHVybiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCiAgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdDsKLSAgICBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlZGlyZWN0UmVxdWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRp
cmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKSBjb25zdDsK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFy
eWluZ1JlcXVlc3RIZWFkZXJzOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291
cmNlSGFuZGxlOwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgU3RvcmFnZTo6UmVj
b3JkIG1fc291cmNlU3RvcmFnZVJlY29yZCB7IH07CiAgICAgCi0gICAgT3B0aW9uYWw8U2Vjb25k
cz4gbV9tYXhBZ2VDYXA7CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX21heEFnZUNhcDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCmluZGV4IDFkMWVhZGEzYzM1OTQwZTY2ZTc1YTRl
ZjRhZDZjOGM4NjZjNDE3OTMuLjgzZmZjZjY5NjRlNTU1NzEyZGU5NDQxMzQ3YTEzOGNkZjE3ODU4
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgTmV0
d29ya0NhY2hlIHsKIGNsYXNzIElPQ2hhbm5lbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxJT0NoYW5uZWw+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZWFkLCBXcml0
ZSwgQ3JlYXRlIH07Ci0gICAgc3RhdGljIFJlZjxJT0NoYW5uZWw+IG9wZW4oY29uc3QgU3RyaW5n
JiBmaWxlLCBUeXBlIHR5cGUsIE9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPiBxb3MgPSB7IH0pIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFubmVsKGZpbGUsIHR5cGUsIHFvcykpOyB9CisgICAg
c3RhdGljIFJlZjxJT0NoYW5uZWw+IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlLCBUeXBlIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+IHFvcyA9IHsgfSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJT0NoYW5uZWwoZmlsZSwgdHlwZSwgcW9zKSk7IH0KIAogICAgIC8vIFVzaW5nIG51
bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBtYWluIHF1ZXVlLgogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIFdvcmtRdWV1ZTo6bWFpbigpIGluc3RlYWQuCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+SU9DaGFubmVsKCk7CiAKIHByaXZhdGU6Ci0gICAg
SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIElPQ2hhbm5lbDo6VHlwZSwgT3B0aW9u
YWw8V29ya1F1ZXVlOjpRT1M+KTsKKyAgICBJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgSU9DaGFubmVsOjpUeXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7CiAKICNp
ZiBVU0UoR0xJQikKICAgICB2b2lkIHJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90LCBXb3JrUXVldWUmLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCA4OTc5YjE0MzQ0NGFkYzFiNTBmY2I4
ZTZlOTE2OGY4NzQyZGZkOTFhLi5hNGU2ODZjY2E3NDFkMWFkYWQ3NDI4YTE2MTdlYzkxNjAzY2Mx
MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTUxLDcgKzUxLDcgQEAg
c3RhdGljIGxvbmcgZGlzcGF0Y2hRdWV1ZUlkZW50aWZpZXIoV29ya1F1ZXVlOjpRT1MgcW9zKQog
ICAgIH0KIH0KIAotSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
VHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVldWU6OlFPUz4gcW9zKQorSU9DaGFubmVsOjpJT0No
YW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdv
cmtRdWV1ZTo6UU9TPiBxb3MpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUo
dHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmluZGV4IDFiZDViZjc0Y2Zh
ZmQyMTA3OWQzMDVlZGI1MWUxODkzNTllMmVlM2QuLjNiZjE2NjM1MTQ4YjRmYzQxMDRkZTdlMTBh
NWYzNmE5MzA1MGQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcApAQCAtMzEs
NyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IAotSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBl
LCBPcHRpb25hbDxXb3JrUXVldWU6OlFPUz4pCitJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+
KQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxHTGliLmNwcAppbmRleCBmNTQ2YjM4OGE4ZTdiZDBjOTYyM2I1ZDFlYTdj
MmY4Mjg5YmQ5NTI2Li40NjFkODFhNGQ2MTI3NGYxNDdjNTVkZmYwZWJmNzcwMTkwN2QxMTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgZ0RlZmF1bHRSZWFkQnVm
ZmVyU2l6ZSA9IDQwOTY7CiAKLUlPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIFR5cGUgdHlwZSwgT3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+KQorSU9DaGFubmVsOjpJ
T0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFs
PFdvcmtRdWV1ZTo6UU9TPikKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0
eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVLZXkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4IDU4ZGQzZTczMzJjYjA5NzhhZDk2Y2I2ZGNiOWFjMGIw
Njk1ZTg5N2QuLmY4ZjM0MTBkY2EwNWFhMTk0MTZjYmM0ODUxNWZhMGVlMzRiY2NlMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUtleS5jcHAKQEAgLTE3Myw0MSArMTczLDQxIEBAIHZvaWQgS2V5OjplbmNvZGUoV1RGOjpQZXJz
aXN0ZW5jZTo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fcGFydGl0
aW9uSGFzaDsKIH0KIAotT3B0aW9uYWw8S2V5PiBLZXk6OmRlY29kZShXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxLZXk+IEtleTo6ZGVjb2RlKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgS2V5IGtleTsKICAgICAKLSAg
ICBPcHRpb25hbDxTdHJpbmc+IHBhcnRpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
cGFydGl0aW9uOwogICAgIGRlY29kZXIgPj4gcGFydGl0aW9uOwogICAgIGlmICghcGFydGl0aW9u
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtleS5tX3BhcnRpdGlvbiA9IFdU
Rk1vdmUoKnBhcnRpdGlvbik7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICgh
dHlwZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV90eXBlID0gV1RG
TW92ZSgqdHlwZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBrZXkubV9pZGVudGlmaWVyID0gV1RGTW92ZSgqaWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25h
bDxTdHJpbmc+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiByYW5nZTsKICAgICBk
ZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAga2V5Lm1fcmFuZ2UgPSBXVEZNb3ZlKCpyYW5nZSk7CiAKLSAgICBPcHRpb25h
bDxIYXNoVHlwZT4gaGFzaDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hUeXBlPiBoYXNoOwogICAg
IGRlY29kZXIgPj4gaGFzaDsKICAgICBpZiAoIWhhc2gpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAga2V5Lm1faGFzaCA9IFdURk1vdmUoKmhhc2gpOwogCi0gICAgT3B0aW9uYWw8
SGFzaFR5cGU+IHBhcnRpdGlvbkhhc2g7CisgICAgc3RkOjpvcHRpb25hbDxIYXNoVHlwZT4gcGFy
dGl0aW9uSGFzaDsKICAgICBkZWNvZGVyID4+IHBhcnRpdGlvbkhhc2g7CiAgICAgaWYgKCFwYXJ0
aXRpb25IYXNoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggZjUx
MTFiZTgzMzI1YTQxNGMyMTJhNWFiOGI0NDhmOTAzZDJmYWFjNS4uYTEwYTE2MGQ1YTQ2OWU0NTJm
ZjNkNjc1MGRjNjFmOWZmN2NhODdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgcGFydGl0aW9uSGFzaEFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaGFz
aEFzU3RyaW5nKG1fcGFydGl0aW9uSGFzaCk7IH0KIAogICAgIHZvaWQgZW5jb2RlKFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8S2V5PiBkZWNv
ZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEtleT4gZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImKTsKIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBLZXkmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA0Yjk4ZDVjMTRjMDhjMTE3YThhNjVjYzQxZjVm
Y2QxNzIzNGQ3MDk2Li40MDM3NGJhMDhmZTUxZGI0ZTQ2ZDNkZDRhODkzOTk4OTUzMGQ3NjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotU3Bl
Y3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxG
cmFtZUlEJiBnbG9iYWxGcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBjYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
biwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCitTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50cnlG
b3JWYWxpZGF0aW9uLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdp
bmFsUmVxdWVzdChyZXF1ZXN0KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9h
ZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBS
ZXNvdQogewogICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJTcGVj
dWxhdGl2ZSByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FwOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1fY2FjaGUtPm5ldHdvcmtQcm9j
ZXNzKCkuc3RvcmFnZVNlc3Npb24obV9jYWNoZS0+c2Vzc2lvbklEKCkpKQogICAgICAgICBtYXhB
Z2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggZGI1ZGRkYjhlNmZlNGQ1MWQyZWY5
MDA4NWE0YjI0YjEzNmI5NGM5YS4uYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFm
OGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC00Niw3ICs0Niw3IEBA
IGNsYXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmV2YWxp
ZGF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik+OwotICAgIFNwZWN1bGF0aXZlTG9hZChDYWNo
ZSYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4sIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgU3BlY3VsYXRpdmVMb2FkKENhY2hlJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5Piwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldmFsaWRh
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdmlydHVhbCB+U3BlY3VsYXRpdmVMb2Fk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmlu
ZGV4IDk5NTU3ZGEyMjUyYWVlZWY4NjFiNzQ0MzNiNWIwMTE3M2I2YWE1ODguLmUxYmRmNjlkNjU0
NzUwMGUyZTNiNzAzODY4ZWUxM2ZkMTA3NDQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiBj
bGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUgRXhw
aXJpbmdFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
UHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgT3B0aW9uYWw8UmVz
b3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCisgICAgUHJlbG9hZGVkRW50cnko
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVl
c3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikKICAgICAgICAgOiBFeHBpcmluZ0VudHJ5KFdURk1v
dmUobGlmZXRpbWVSZWFjaGVkSGFuZGxlcikpCiAgICAgICAgICwgbV9lbnRyeShXVEZNb3ZlKGVu
dHJ5KSkKICAgICAgICAgLCBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QoV1RGTW92ZShz
cGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0KSkKQEAgLTE1MywxMiArMTUzLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9lbnRyeSk7CiAgICAgfQogCi0gICAgY29uc3Qg
T3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogICAgIGJvb2wgd2FzUmV2
YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVz
dDsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAg
ICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVz
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlk
YXRpb25SZXF1ZXN0OwogfTsKIAogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGlu
Z0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTM0
NSw3ICszNDUsNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNob3VsZFJlZ2lzdGVy
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2Jh
bEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
S2V5JiByZXNvdXJjZUtleSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXksIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVxdWVzdC51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVzcG9uc2Uo
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtNYWluUmVz
b3VyY2VSZXNwb25zZUFzUmVjZWl2ZWQoKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2
YWxpZGF0aW9uUmVxdWVzdCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9h
ZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJ
RCYgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9u
UmVxdWVzdCkKIHsKICAgICBBU1NFUlQoZW50cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRz
VmFsaWRhdGlvbigpKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRy
eQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnBy
ZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNl
SW5mbywgRW50cnkqIGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNl
KGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBFbnRyeSogZW50cnksIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxF
KFNFUlZFUl9QUkVDT05ORUNUKQogICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9jYWNoZS5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKG1fY2FjaGUuc2Vzc2lvbklEKCkpOwpAQCAt
NDc3LDcgKzQ3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEZv
clN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3ViCiAjZW5kaWYKIH0KIAotdm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3Vi
cmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQordm9pZCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJ
bmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKCFl
bnRyeSB8fCBlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAg
c3RhdGljIGJvb2wgY2FuUmV2YWxpZGF0ZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291
cmNlSW5mbywgY29uc3QgRW50cnkqIGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBT
dWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJh
bWVJRCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pCit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRy
eShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8s
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYg
KG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKGtleSkpCiAgICAgICAgIHJldHVybjsKQEAgLTU5
Miw3ICs1OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeShj
b25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJgogICAgIH0pOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgU3VicmVzb3VyY2VzRW50cnkmIGVudHJ5LCBib29s
IHJlcXVlc3RJc0FwcEJvdW5kLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFt
ZUlELCBTdWJyZXNvdXJjZXNFbnRyeSYgZW50cnksIGJvb2wgcmVxdWVzdElzQXBwQm91bmQsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pCiB7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZUluZm8gOiBlbnRyeS5z
dWJyZXNvdXJjZXMoKSkgewogICAgICAgICBhdXRvJiBrZXkgPSBzdWJyZXNvdXJjZUluZm8ua2V5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IGVm
NzZhOWFiYmU2ZGM5ODVjN2M2MDZmZGVlNzU0NmU1ZDdlNjU3ZWUuLjE0NjA4MzYxYWIyNmY3MGY5
NGM0YWRjYjJmMzMzZTQ1YTU2NjFlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKENhY2hlJiwgU3RvcmFnZSYpOwogICAgIH5TcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJj
ZUtleSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHJl
Z2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4pOwogICAgIHZvaWQgcmVnaXN0ZXJNYWluUmVzb3VyY2VMb2FkUmVz
cG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHR5cGVkZWYgRnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXI7CkBAIC02MiwxNCArNjIsMTQgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBQcmVsb2FkZWRF
bnRyeTsKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
Pik7CisgICAgdm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBwcmVs
b2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFs
RnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAg
ICB2b2lkIHJldHJpZXZlRW50cnlGcm9tU3RvcmFnZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgcmV2YWxpZGF0ZVN1YnJlc291
cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwot
ICAgIHZvaWQgcHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYs
IEVudHJ5KiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPik7CisgICAgdm9pZCByZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVz
b3VyY2VJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICB2b2lkIHBy
ZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBFbnRyeSosIGNv
bnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPik7CiAgICAgYm9vbCBzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYsIEVudHJ5
Kik7CiAgICAgdm9pZCByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFn
ZUtleSwgV1RGOjpGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50
cnk+KT4mJik7Ci0gICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEds
b2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNFbnRyeSYsIGJvb2wsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNFbnRyeSYsIGJvb2wsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKIAogICAgIHN0YXRpYyBib29s
IGNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0IFByZWxvYWRlZEVudHJ5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KTsKICAgICBzdGF0aWMgYm9vbCBjYW5V
c2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVjdWxhdGl2ZUxvYWQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
NzRjZGI3ZDEyNTQ3Nzg3ZDA0MWVhZGZjODg0YWE1ODgwNDY4MmI2MC4uNDZlNTk1MjI5Y2Q4ZmE0
YWM1Y2UwNTY4NGE3ZjY1YjMwNjAxYTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC00NTcs
NDkgKzQ1Nyw0OSBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVjb3Jk
TWV0YURhdGEoUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhLCBjbwogICAgIGZpbGVEYXRhLmFwcGx5
KFsmbWV0YURhdGEsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7
CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lv
bjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsK
ICAgICAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VWZXJzaW9uOwogICAgICAgICBpZiAoIWNh
Y2hlU3RvcmFnZVZlcnNpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1l
dGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb24gPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VWZXJzaW9u
KTsKIAotICAgICAgICBPcHRpb25hbDxLZXk+IGtleTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxL
ZXk+IGtleTsKICAgICAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgIGlmICgha2V5KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5rZXkgPSBXVEZNb3ZlKCpr
ZXkpOwogCi0gICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiB0aW1lU3RhbXA7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVTdGFtcDsKICAgICAgICAgZGVjb2RlciA+PiB0aW1l
U3RhbXA7CiAgICAgICAgIGlmICghdGltZVN0YW1wKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAgPSBXVEZNb3ZlKCp0aW1lU3RhbXApOwogCi0g
ICAgICAgIE9wdGlvbmFsPFNIQTE6OkRpZ2VzdD4gaGVhZGVySGFzaDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTSEExOjpEaWdlc3Q+IGhlYWRlckhhc2g7CiAgICAgICAgIGRlY29kZXIgPj4gaGVh
ZGVySGFzaDsKICAgICAgICAgaWYgKCFoZWFkZXJIYXNoKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBtZXRhRGF0YS5oZWFkZXJIYXNoID0gV1RGTW92ZSgqaGVhZGVySGFzaCk7
CiAKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlclNpemU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlclNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gaGVhZGVy
U2l6ZTsKICAgICAgICAgaWYgKCFoZWFkZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBtZXRhRGF0YS5oZWFkZXJTaXplID0gV1RGTW92ZSgqaGVhZGVyU2l6ZSk7CiAK
LSAgICAgICAgT3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBib2R5SGFzaDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlIYXNoOwogICAgICAgICBkZWNvZGVyID4+IGJvZHlI
YXNoOwogICAgICAgICBpZiAoIWJvZHlIYXNoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBtZXRhRGF0YS5ib2R5SGFzaCA9IFdURk1vdmUoKmJvZHlIYXNoKTsKIAotICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gYm9keVNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGJvZHlTaXplOwogICAgICAgICBkZWNvZGVyID4+IGJvZHlTaXplOwogICAgICAgICBp
ZiAoIWJvZHlTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0
YS5ib2R5U2l6ZSA9IFdURk1vdmUoKmJvZHlTaXplKTsKIAotICAgICAgICBPcHRpb25hbDxib29s
PiBpc0JvZHlJbmxpbmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNCb2R5SW5saW5l
OwogICAgICAgICBkZWNvZGVyID4+IGlzQm9keUlubGluZTsKICAgICAgICAgaWYgKCFpc0JvZHlJ
bmxpbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01ODksNyArNTg5LDcgQEAgc3Rh
dGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUmVjb3JkTWV0YURhdGEmIG1ldGFE
YXRhKQogICAgIHJldHVybiBEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAotT3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9k
eUFzQmxvYihXcml0ZU9wZXJhdGlvbiYgd3JpdGVPcGVyYXRpb24pCitzdGQ6Om9wdGlvbmFsPEJs
b2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24m
IHdyaXRlT3BlcmF0aW9uKQogewogICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleSh3
cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIApAQCAtNjE0LDcgKzYxNCw3IEBAIE9wdGlvbmFs
PEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRp
b24mIHdyaXRlT3BlcmF0CiAgICAgcmV0dXJuIGJsb2I7CiB9CiAKLURhdGEgU3RvcmFnZTo6ZW5j
b2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6Qmxv
Yj4gYmxvYikKK0RhdGEgU3RvcmFnZTo6ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3Jk
LCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBibG9iKQogewogICAgIEFTU0VSVCgh
YmxvYiB8fCBieXRlc0VxdWFsKGJsb2IudmFsdWUoKS5kYXRhLCByZWNvcmQuYm9keSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oCmluZGV4IGQyZjAwN2U4MmJiNDA4OTU5ZWM0MDUyNjYwNGVjYzMzMTNkMTVj
ZmIuLjM4NWI1M2Y4ZWYwN2I3MGM1YjYwMjZmMjc2OWEyZjdmMDQ3MWQyMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgdGltZVN0
YW1wOwogICAgICAgICBEYXRhIGhlYWRlcjsKICAgICAgICAgRGF0YSBib2R5OwotICAgICAgICBP
cHRpb25hbDxTSEExOjpEaWdlc3Q+IGJvZHlIYXNoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNI
QTE6OkRpZ2VzdD4gYm9keUhhc2g7CiAKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgfTsKQEAgLTE0NCw4ICsxNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoV3Jp
dGVPcGVyYXRpb24oV3JpdGVPcGVyYXRpb24mLCBpbnQgZXJyb3IgPSAwKTsKIAogICAgIGJvb2wg
c2hvdWxkU3RvcmVCb2R5QXNCbG9iKGNvbnN0IERhdGEmIGJvZHlEYXRhKTsKLSAgICBPcHRpb25h
bDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVCb2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJik7Ci0g
ICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3QgUmVjb3JkJiwgT3B0aW9uYWw8QmxvYlN0b3JhZ2U6
OkJsb2I+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBzdG9yZUJvZHlB
c0Jsb2IoV3JpdGVPcGVyYXRpb24mKTsKKyAgICBEYXRhIGVuY29kZVJlY29yZChjb25zdCBSZWNv
cmQmLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPik7CiAgICAgdm9pZCByZWFkUmVj
b3JkKFJlYWRPcGVyYXRpb24mLCBjb25zdCBEYXRhJik7CiAKICAgICB2b2lkIHVwZGF0ZUZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IGRmNGYxNjgxMGY5MzE0YThhZGEzMDBkNDA4MTdkYzc1
YTJiNmZkODUuLjRiNWUyZDg3YjdjZDQ2NmQ3NTdmMDE3YTk1ODVjMWQxNzI4YmRkZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC01MiwyOSArNTIsMjkgQEAg
dm9pZCBTdWJyZXNvdXJjZUluZm86OmVuY29kZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9wcmlvcml0eTsKIH0KIAotT3B0aW9uYWw8
U3VicmVzb3VyY2VJbmZvPiBTdWJyZXNvdXJjZUluZm86OmRlY29kZShXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IFN1YnJl
c291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgU3VicmVzb3VyY2VJbmZvIGluZm87CiAKLSAgICBPcHRpb25hbDxLZXk+IGtleTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEtleT4ga2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgh
a2V5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9rZXkgPSBXVEZN
b3ZlKCprZXkpOwogCi0gICAgT3B0aW9uYWw8V2FsbFRpbWU+IGxhc3RTZWVuOworICAgIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IGxhc3RTZWVuOwogICAgIGRlY29kZXIgPj4gbGFzdFNlZW47CiAg
ICAgaWYgKCFsYXN0U2VlbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZv
Lm1fbGFzdFNlZW4gPSBXVEZNb3ZlKCpsYXN0U2Vlbik7CiAKLSAgICBPcHRpb25hbDxXYWxsVGlt
ZT4gZmlyc3RTZWVuOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpcnN0U2VlbjsKICAg
ICBkZWNvZGVyID4+IGZpcnN0U2VlbjsKICAgICBpZiAoIWZpcnN0U2VlbikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fZmlyc3RTZWVuID0gV1RGTW92ZSgqZmlyc3RT
ZWVuKTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlzVHJhbnNpZW50OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAgICAgZGVjb2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBp
ZiAoIWlzVHJhbnNpZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsMjUg
KzgzLDI1IEBAIE9wdGlvbmFsPFN1YnJlc291cmNlSW5mbz4gU3VicmVzb3VyY2VJbmZvOjpkZWNv
ZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjCiAgICAgaWYgKGluZm8ubV9pc1RyYW5z
aWVudCkKICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShpbmZvKSB9OwogCi0gICAgT3B0aW9uYWw8
Ym9vbD4gaXNTYW1lU2l0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzU2FtZVNpdGU7CiAg
ICAgZGVjb2RlciA+PiBpc1NhbWVTaXRlOwogICAgIGlmICghaXNTYW1lU2l0ZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1faXNTYW1lU2l0ZSA9IFdURk1vdmUoKmlz
U2FtZVNpdGUpOwogCi0gICAgT3B0aW9uYWw8VVJMPiBmaXJzdFBhcnR5Rm9yQ29va2llczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFVSTD4gZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZGVjb2RlciA+
PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBpZiAoIWZpcnN0UGFydHlGb3JDb29raWVzKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9maXJzdFBhcnR5Rm9yQ29v
a2llcyA9IFdURk1vdmUoKmZpcnN0UGFydHlGb3JDb29raWVzKTsKIAotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXA+IHJlcXVlc3RIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gcmVxdWVzdEhlYWRlcnM7CiAgICAgZGVjb2RlciA+PiBy
ZXF1ZXN0SGVhZGVyczsKICAgICBpZiAoIXJlcXVlc3RIZWFkZXJzKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9yZXF1ZXN0SGVhZGVycyA9IFdURk1vdmUoKnJlcXVl
c3RIZWFkZXJzKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
PiBwcmlvcml0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9y
aXR5PiBwcmlvcml0eTsKICAgICBkZWNvZGVyID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3Jp
dHkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdAogICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291
cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVy
LnNpemUoKSk7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFN1YnJlc291cmNlSW5mbz4+IHN1YnJlc291
cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdWJyZXNvdXJjZUluZm8+PiBzdWJyZXNv
dXJjZXM7CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFzdWJyZXNvdXJj
ZXMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5oCmluZGV4IDIzZTczNTBlOTU4ZDYxNjRkMzdiZTAyYTEyOTQxMmI1YWI4NDkxOGMuLjYw
YTQwNjNiMjM0NWQ5MjVlMmM3ODc4NDU5OTIwZTEwZjI3ODIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VJ
bmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGVu
Y29kZShXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFN1YnJlc291cmNlSW5mbz4gZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IGRlY29kZShXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJik7CiAKICAgICBTdWJyZXNvdXJjZUluZm8oKSA9IGRlZmF1bHQ7
CiAgICAgU3VicmVzb3VyY2VJbmZvKGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnJlc291cmNlSW5mbyogcHJldmlvdXNJbmZvKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAppbmRleCBkOTE4MTlmYzE0YzNkNjVmOTkzOTE3YTRhM2U4OGJkMzZiMDljNmMxLi44
NjkyODRjMzZlMTE1YTVlNTU0ZjQ1MmRmYmE1OGRlZTcyNTAxMzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0
d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0
YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNv
dXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tl
cj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNh
cnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBj
cmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xp
ZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25p
ZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2Nv
YShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgd2ViUGFnZVByb3h5
SUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIG5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBwY21EYXRhQ2FycmllZCkpOwogICAgIH0KQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkUHJpb3JpdHkpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRh
VGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5h
dmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0
aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPik7
CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXI+LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQ
b2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChSZXRhaW5QdHI8TlNVUkxS
ZXF1ZXN0PiYsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDZhZWVhYTFmMGQxYzQ0YjQwY2Y0
MDZhNjgxOWM0N2U5NWFhYmY5ZGMuLjU0NzkwYmRiOGZhYjgyYmM2MDEwZjE5OGE1MDU4ZTUyYTA1
NTU2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uKQogICAgIHJldHVybiBzZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xp
ZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlh
bHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwg
Ym9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0
T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZy
YW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFj
a2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQp
CitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25u
ZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBzdGQ6Om9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCiAg
ICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBt
X3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29j
b2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVl
c3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKSkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQppbmRleCBkNDJmNjYzZjVhZmIwMGE4Mjc2NWVjNTI3YjAxZDVjZGI2ZjUxNmQ0Li4wYjY3
MWMyOGEyNGJiM2ZhMGUwYWU1M2I1MWQzNWZjYTdjZGJmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CkBAIC0xMTIsNyArMTEyLDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6
OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKICAgICBBU1NFUlQocGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKSk7CiAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAg
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIWF1ZGl0VG9rZW4pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCAoY29uc3QgVUludDgqKSYqYXVkaXRUb2tlbiwgc2l6ZW9mKCphdWRpdFRva2VuKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAppbmRleCAzMGZlNTJmY2JhM2RjYmE1ZDFhZmZkODAwMWFkZjNjN2E3OWJj
ODEzLi4yNDlmMTBmMjEyODVlMDYzM2NhYTIxZDkxZWZjNDVjM2Y4MzMxZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaApAQCAtMTAxLDEyICsxMDEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBcHBC
b3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU2Vzc2lvbldyYXBwZXImIHNl
c3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYg
c2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAgICAgYm9vbCBwcmV2
ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2
ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOyB9CiAgICAgCiAgICAgX05TSFNUU1N0
b3JhZ2UgKmhzdHNTdG9yYWdlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlbW92ZU5ldHdvcmtXZWJz
aXRlRGF0YShPcHRpb25hbDxXYWxsVGltZT4sIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDcyNjE1YWM5Y2ZjNjdkNTg4Zjg3MWUzN2E1NDM0OTU5OGJjMzc0YjAuLjg5NDk1ZmYzODU3
MTRhOTI1MDgzN2NhZjAzM2EwYmY4YzczYjUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTY2
LDcgKzY2LDcgQEAKICNkZWZpbmUgTkVUV09SS19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiAj
ZGVmaW5lIE5FVFdPUktfU0VTU0lPTl9DT0NPQV9BRERJVElPTlNfMgogI2RlZmluZSBORVRXT1JL
X1NFU1NJT05fQ09DT0FfQURESVRJT05TXzMKLXZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoT3B0aW9uYWw8V2FsbFRpbWU+LCBPcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0K
K3ZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURh
dGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAjZW5kaWYKIAogI2ltcG9y
dCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCkBAIC0xMzU3LDcgKzEzNTcsNyBAQCBTZXNz
aW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6U2Vzc2lvblNldDo6aW5pdGlhbGl6ZUVw
aGVtZXJhbFN0YXRlbGVzc1NlcwogICAgIHJldHVybiBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9u
OwogfQogCi1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorU2Vzc2lvbldyYXBw
ZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGF1dG8gc2hvdWxkQmVDb25zaWRl
cmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID8gKmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOwogICAg
IGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAppbmRleCBh
OGJlMmYzZDM1ZTBkZDcyYjI0MWM3ZTNkOTU2NDE3MzljYmUwY2RkLi41OTA0MDBjOWM0YzVlZDAz
YzI3MjVhOTQ3MjQyYzk0Y2QyZGVhZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgRE5TQ2FjaGU6OkROU0Nh
Y2hlTWFwJiBETlNDYWNoZTo6bWFwRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgcmV0dXJuIG1fZG5z
TWFwOwogfQogCi1PcHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2Fj
aGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBUeXBlIHR5cGUpCitzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENT
dHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgYXV0byYgbWFwID0gbWFwRm9yVHlwZSh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKaW5kZXggNWU3MDcyZGQwNWZmOWMxZjE0MDcwNDZi
MjE1NmZiMjUzNjM5Njg0NS4uYjM2NjM3ZDg2ZWI5OTljM2Y4MTM0MDJlODBmNzcwMmNiZTc2N2U1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIH5ETlNDYWNoZSgpID0gZGVmYXVsdDsKIAogICAg
IGVudW0gY2xhc3MgVHlwZSB7IERlZmF1bHQsIElQdjRPbmx5LCBJUHY2T25seSB9OwotICAgIE9w
dGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+PiBsb29rdXAoY29uc3QgQ1N0cmlu
ZyYgaG9zdCwgVHlwZSA9IFR5cGU6OkRlZmF1bHQpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IGxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBUeXBl
ID0gVHlwZTo6RGVmYXVsdCk7CiAgICAgdm9pZCB1cGRhdGUoY29uc3QgQ1N0cmluZyYgaG9zdCwg
VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4mJiwgVHlwZSA9IFR5cGU6OkRlZmF1bHQpOwog
ICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGEyNGUyNzk5MWEzOWU0
ZjQ2M2NkZjNhZTMzODA2ZTc3MDZhZDFlZDEuLmYxMzYxZmQxMWU0ZGJlZWQzOTRmOTdkOTA0ODMx
YzRhMzYxMjZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJlYW0+
JiYgaW5wdXRTdHJlYW0pCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAot
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChPcHRpb25hbDxEYXRhVVJM
RGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmIHJlc3Vs
dCkKIHsKICAgICBpZiAoZ19jYW5jZWxsYWJsZV9pc19jYW5jZWxsZWQobV9jYW5jZWxsYWJsZS5n
ZXQoKSkpIHsKICAgICAgICAgZGlkRmFpbChjYW5jZWxsZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuaAppbmRleCA1ZGFkOGJjMGZjMjI1YWQzOTJlZGIyN2I3ZDgwNTQ3NDY0
MzRmZWNlLi5lZTk2ZTdkMDliZGRkMDFhOTI5ODBmMTU0YTBkZTJmYjc1NDAzYjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGVu
dW1lcmF0ZUZpbGVDaGlsZHJlbkNhbGxiYWNrKEdGaWxlKiwgR0FzeW5jUmVzdWx0KiwgTmV0d29y
a0RhdGFUYXNrU291cCopOwogICAgIHZvaWQgZGlkUmVhZEZpbGUoR1JlZlB0cjxHSW5wdXRTdHJl
YW0+JiYpOwogCi0gICAgdm9pZCBkaWRSZWFkRGF0YVVSTChPcHRpb25hbDxXZWJDb3JlOjpEYXRh
VVJMRGVjb2Rlcjo6UmVzdWx0PiYmKTsKKyAgICB2b2lkIGRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJik7CiAKICAgICBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG1fcGFnZUlEOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxTb3Vw
TXVsdGlwYXJ0SW5wdXRTdHJlYW0+IG1fbXVsdGlwYXJ0SW5wdXRTdHJlYW07CiAgICAgR1JlZlB0
cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7CiAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+
IG1fcGVuZGluZ1Jlc3VsdDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6
UmVzdWx0PiBtX3BlbmRpbmdEYXRhVVJMUmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RGF0YVVSTERlY29kZXI6OlJlc3VsdD4gbV9wZW5kaW5nRGF0YVVSTFJlc3VsdDsKICAgICBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgbV9wcm90ZWN0aW9uU3BhY2VGb3JQZXJzaXN0ZW50U3Rv
cmFnZTsKICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG1fY3JlZGVudGlhbEZvclBlcnNpc3RlbnRT
dG9yYWdlOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IGQyOGEwMzFh
ODUzZTQ3OTAwNzk4ZDE5NzkwNDhhNGZkM2FjZWM3ODcuLmNjYTBkNjUwNDIzNjJmZTgwMDhlMDRh
ZjVkODU2ZWM4YjA4MmE1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIp
OwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwcihIYXNNb2Rlcm5EZWNvZGVyVjxUPikKICAgICAg
ICAgICAgIHJldHVybiBUOjpkZWNvZGUoZGVjb2Rlcik7CkBAIC02Niw3ICs2Niw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewog
ICAgICAgICBpZiBjb25zdGV4cHIoSGFzTGVnYWN5RGVjb2RlclY8VD4pCiAgICAgICAgICAgICBy
ZXR1cm4gVDo6ZGVjb2RlKGRlY29kZXIsIHQpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IE9wdGlvbmFsPFQ+IG9wdGlvbmFsID0gVDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxUPiBvcHRpb25hbCA9IFQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAg
ICAgIGlmICghb3B0aW9uYWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgdCA9IFdURk1vdmUoKm9wdGlvbmFsKTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IEFy
Z3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0
aWNfdjxUPj4+IHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewogICAgICAgICBUIHJlc3VsdDsKICAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZyZXN1bHQpLCBzaXplb2Yo
VCksIGFsaWdub2YoVCkpKQpAQCAtMTAxLDkgKzEwMSw5IEBAIHN0cnVjdCBBcmd1bWVudENvZGVy
PFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAg
ICAgIGVuY29kZXIgPDwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPj4gdmFsdWU7CiAgICAg
ICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRF
bnVtPFQ+KCp2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oKnZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCA2YTg1NmFlZmY0MzRmNDAzNjg2YjgxYjdkNGE0OWMzNGYyYzhmYTIzLi43NDY0MjgxM2Y0Nzgx
OTZjMGM3OGNlYjc4N2UzNjZkYzI4ZGM5MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00OCw5ICs0OCw5IEBAIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgV2FsbFRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVdBUk5fVU5VU0VEX1JFVFVSTiBPcHRp
b25hbDxXYWxsVGltZT4gQXJndW1lbnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3Vt
ZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRp
b25hbDxkb3VibGU+IHRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRpbWU7CiAgICAg
ZGVjb2RlciA+PiB0aW1lOwogICAgIGlmICghdGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCB0ZW1wbGF0ZQogdm9pZCBBcmd1bWVudENvZGVyPFN0
cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNv
ZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxl
bmd0aCkKIHsKICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUg
dGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIu
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJp
bmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0CiAgICAgcmV0dXJuIHN0cmlu
ZzsKIH0KIAotV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2Rl
cjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK1dBUk5fVU5VU0VEX1JFVFVSTiBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICB1aW50MzJfdCBsZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShsZW5ndGgpKQpAQCAtMTcxLDcgKzE3MSw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBPcHRp
b25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFN0cmluZyYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2Rl
ciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8TW9ub3N0YXRlPjo6ZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBNb25vc3RhdGUmKQogewogfQogCi1XQVJOX1VOVVNFRF9SRVRVUk4gT3B0
aW9uYWw8TW9ub3N0YXRlPiBBcmd1bWVudENvZGVyPE1vbm9zdGF0ZT46OmRlY29kZShEZWNvZGVy
JikKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPE1vbm9zdGF0ZT4gQXJndW1lbnRD
b2RlcjxNb25vc3RhdGU+OjpkZWNvZGUoRGVjb2RlciYpCiB7CiAgICAgcmV0dXJuIE1vbm9zdGF0
ZSB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggZmZl
M2YyMzk5OTNlOTBhMTgwMGIxZjYxNTcwNTlhYTIxZWUxOWZmOC4uOTI5MTM0MjFmODZkN2U1ZWVk
ODdlY2M4NGQ1ZDJiZDA1NWVmNzhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaApAQCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRpYyBi
b29sIGlkZW50aWZpZXJJc1ZhbGlkKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gTUFD
SF9QT1JUX1ZBTElEKGlkZW50aWZpZXIucG9ydCk7IH0KICAgICB4cGNfY29ubmVjdGlvbl90IHhw
Y0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3hwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAg
ICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBnZXRBdWRpdFRva2VuKCk7CisgICAgc3RkOjpvcHRp
b25hbDxhdWRpdF90b2tlbl90PiBnZXRBdWRpdFRva2VuKCk7CiAgICAgcGlkX3QgcmVtb3RlUHJv
Y2Vzc0lEKCkgY29uc3Q7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExFIElk
ZW50aWZpZXI7CkBAIC01NzksNyArNTc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIERlY29kZSB0aGUgcmVwbHkuCi0gICAgT3B0aW9u
YWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOworICAgIHN0ZDo6
b3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOwogICAg
ICpyZXBseURlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7CiAgICAgaWYgKCFyZXBseUFyZ3VtZW50
cykKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApp
bmRleCA3ZWJjYWVmM2ZjMjM0MTVjNTQyOTFhM2ZhNjZmZjY5ZTA0ZTZlNzc1Li41ZjRlMmE2YWEz
YzRkNzM2MThkZGY0ZTkwMzA1ZTdmOTFhMTY3MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBP
cHRpb25hbDxUPiBvcHRpb25hbDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gb3B0aW9u
YWw7CiAgICAgICAgICAgICAqdGhpcyA+PiBvcHRpb25hbDsKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghb3B0aW9uYWwpKSB7CiAgICAgICAgICAgICAgICAgbWFya0ludmFsaWQoKTsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB0KQorICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxUPiYgdCkKICAgICB7CiAgICAgICAgIHVzaW5nIEltcGwg
PSBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+LCB2b2lkPjsKICAgICAgICAgaWYgY29uc3RleHByKEhhc01vZGVybkRlY29kZXI8VCwg
SW1wbD46OnZhbHVlKSB7CkBAIC0xNDAsOSArMTQwLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzSVBDRGVjb2RlciA9IHRydWU7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgICBzdGF0aWMgT3B0aW9uYWw8VD4gZGVjb2RlU2luZ2xlT2JqZWN0KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VD4gZGVjb2RlU2luZ2xlT2JqZWN0KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IG51
bWJlck9mQnl0ZXMpCiAgICAgewotICAgICAgICBPcHRpb25hbDxUPiByZXN1bHQ7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8VD4gcmVzdWx0OwogICAgICAgICBEZWNvZGVyIGRlY29kZXIoc291cmNl
LCBudW1iZXJPZkJ5dGVzLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCBlYzY4
ZGZhZGQ5YjdlNGQ3OGFkNzYzZmU2NTg2MTM1OTQwMDgyMzU1Li5jMGQ0MzdhZTcxN2FiOTJjZGQz
NGNhOWVlY2FmMDdiZWRiY2JhN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBl
bmNvZGVyIDw8IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIH0KIAotICAgIHN0YXRpYyBP
cHRpb25hbDxGb3JtRGF0YVJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9ybURhdGFSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzRm9ybURhdGE7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzRm9ybURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4g
aGFzRm9ybURhdGE7CiAgICAgICAgIGlmICghaGFzRm9ybURhdGEpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
Zm9ybURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9w
dGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRl
bnNpb25IYW5kbGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBkZWNv
ZGVyID4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAoIXNhbmRib3hFeHRl
bnNpb25IYW5kbGVzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCAzMTc0ZDQyYTljNTZiNDU0
OTBlMTRiZWViNDI5NzYzZjdkMTNjMmIwLi4yYWIwZmMyNjUzMWM3NzNmNTFkNmQyZDU1ODY4NGJk
YTEzNmJiNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IENvZGluZ1R5cGU8c3RkOjp0dXBsZTxUcy4uLj4+
IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBo
YW5kbGVNZXNzYWdlKERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7
Ci0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+
OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBl
PHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+
IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0
aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBh
cmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50
czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEz
Miw3ICsxMzIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
cyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICBPcHRp
b25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFy
Z3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUg
VDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRz
OwogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KIGJvb2wgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1
bmN0aW9uKQogewotICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6
QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUg
Q29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAg
ZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29k
ZXImIGQKICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBl
bmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50
czsKICAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50
cykpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MCwxMiArMTgwLDEyIEBAIHZvaWQgaGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBE
ZWNvZGVyJiBkCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4K
IHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXIm
IGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0
X3Q+IGxpc3RlbmVySUQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsK
ICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgaWYgKCFsaXN0ZW5lcklEKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1l
IENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAg
IGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5j
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKLSAgICBPcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50
czsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJn
dW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAg
IGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAppbmRleCAxNmQwNTY2MzQxMjQwOWNhODhkYTZi
NGYyMTgyNDM0MDExMDZmZDhiLi5kMmY0ODM5NGI0M2NhN2YxY2I5MjA4NmMyNjI1ZDUzYzM4YjYz
YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU2VtYXBob3JlJiBvcGVyYXRvcj0oU2VtYXBob3JlJiYp
OwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25h
bDxTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U2VtYXBob3JlPiBkZWNvZGUoRGVjb2RlciYpOwogCiAgICAgdm9pZCBzaWduYWwoKTsKICAgICBi
b29sIHdhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBD
QmluZGluZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKaW5k
ZXggMmRjZDk1YTdkYTY0ZmU1M2RlYmFlNTlhZWU3YzdlNmRlMTU4NTMyNi4uZWQxNjQ0MmNiOTY2
ZjAzNDRiYjEwYzFmM2U5MDZiYjhiZTZjZWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvSlNJUENCaW5kaW5nLmgKQEAgLTExOCwxOSArMTE4LDE5IEBAIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBPCiBib29sIHB1dEpTVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRBdEluZGV4T3JBcnJheUJ1
ZmZlcklmVW5kZWZpbmVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTQXJyYXkqLCB1bnNp
Z25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlLCBjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBs
ZW5ndGgpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6
SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSVBDOjpEZWNvZGVyJiwgSlNDOjpKU0FycmF5Kiwgc2l6ZV90IGN1cnJlbnRJbmRl
eCwgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4qKTsKK3N0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVl
PiBwdXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBJUEM6OkRlY29kZXImLCBKU0M6OkpTQXJyYXkqLCBzaXplX3QgY3VycmVudEluZGV4LCBzdGQ6
OnR1cGxlPEVsZW1lbnRzLi4uPiopOwogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgT3B0aW9uYWw8SlND
OjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBKU0M6OkpTQXJy
YXkqIGFycmF5LCBzaXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxlPD4qKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBwdXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFy
cmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBKU0M6OkpTQXJyYXkqIGFycmF5LCBzaXplX3QgY3VycmVudEluZGV4LCBzdGQ6OnR1cGxl
PD4qKQogewogICAgIHJldHVybiBKU0M6OkpTVmFsdWUgeyBhcnJheSB9OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KLU9wdGlvbmFsPEpTQzo6SlNWYWx1
ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIElQQzo6RGVjb2RlciYgZGVjb2RlciwgSlNDOjpKU0FycmF5KiBhcnJh
eSwgc2l6ZV90IGN1cnJlbnRJbmRleCwgc3RkOjp0dXBsZTxULCBFbGVtZW50cy4uLj4qKQorc3Rk
OjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1dEpTVmFsdWVGb3JEZWNvZGVBcmd1bWVudEluQXJy
YXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIEpTQzo6SlNBcnJheSogYXJyYXksIHNpemVfdCBjdXJyZW50SW5kZXgsIHN0ZDo6dHVwbGU8
VCwgRWxlbWVudHMuLi4+KikKIHsKICAgICBhdXRvIHN0YXJ0aW5nQnVmZmVyUG9zaXRpb24gPSBk
ZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpOwotICAgIE9wdGlvbmFsPFQ+IHZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5B
cnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1z
dGF0aWMgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50cyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckRlY29kZWRBcmd1
bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKICAgICBhdXRvKiBhcnJheSA9IEpTQzo6Y29uc3RydWN0RW1wdHlBcnJheShn
bG9iYWxPYmplY3QsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaAppbmRleCA1YWJiODczMjY2ODY2
NzU5ZWQ5ZjE4NDZlNGQxOGFhNmNjMDg0OWRlLi42YjcwYTNhNzE4NGQyNjVmYjAxMGU3OWM3Mzg2
MGFmMjZlMjQxMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3Bh
Y2UgSVBDIHsKIAogY2xhc3MgRGVjb2RlcjsKIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1Zh
bHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBNZXNzYWdlTmFtZSwgRGVjb2Rl
ciYpOwotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlND
OjpKU0dsb2JhbE9iamVjdCosIE1lc3NhZ2VOYW1lLCBEZWNvZGVyJik7CitzdGQ6Om9wdGlvbmFs
PEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
TWVzc2FnZU5hbWUsIERlY29kZXImKTsKK3N0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1Zh
bHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCosIE1lc3NhZ2VOYW1lLCBE
ZWNvZGVyJik7CiAKIHN0cnVjdCBBcmd1bWVudERlc2NyaXB0aW9uIHsKICAgICBjb25zdCBjaGFy
KiBuYW1lOwpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgQXJndW1lbnREZXNjcmlwdGlvbiB7CiAg
ICAgYm9vbCBpc09wdGlvbmFsOwogfTsKIAotT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3Jp
cHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUpOwotT3B0aW9u
YWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2Ny
aXB0aW9ucyhNZXNzYWdlTmFtZSk7CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2Ny
aXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lKTsKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlUmVwbHlBcmd1bWVu
dERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKaW5kZXggZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFh
M2YxMmFkNzVjOWNjOC4uNWJmOWI5M2VmNDQyYTNmZDgxZTA1MjU2ZmI4NmY2YjIyZDMxNWEzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAgbmFtZXNwYWNlIElQQyB7CiAKIE1lc3NhZ2VTZW5kZXI6On5NZXNzYWdlU2Vu
ZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIE1lc3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKFVuaXF1
ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9u
cywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIE1lc3NhZ2VTZW5kZXI6OnNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucywgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsK
ICAgICBhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKICAgICBB
U1NFUlQoY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2Vu
ZGVyLmgKaW5kZXggMGU1YWQzZDk0ODBmZWU5MzA1NGJkMWNlNDU3ZDAyODM5OWM0ZmZmYS4uYmY2
MWZhODc2NzliZDA3NjM3NTNiNDc5NzcwOWFiMTQ4ODJmZWQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGxpc3RlbmVySUQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4sIE9w
dGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwg
dWludDY0X3Q+PiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3Nh
Z2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiwgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggMDYxNjAxZjcy
MTAyOTM0NjBmMjk2NDQ4ZjNlNDE4MDhiM2U4ZmRjNS4uODM0NmUzOWU4N2E0ZDA1ODI1M2ZlY2Vh
NjcxYzEzMmU0NzY5ZTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJDb3B5
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CiB9CiAKLU9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IGYxYzE4ZDY0Mjc2ZTZhMzE5MDExYWNj
NDEyYjE2ODExNjVlYzNmZDEuLmMzZjE4M2IyZGI1YmI1OTRjMzA5Y2Q4OWI3MjAyMGVhMDFhZDIx
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIAogICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShE
ZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggZDgxZTU0NmNiNjJiZmI1Y2EwNmE3YTAwYWM2MDhjNjljODRj
ZTIyYS4uM2UyYzI0YWM5NDc3ZTg0ZTBiYTM3MTE0NjQ4MjdiYWFlOGUzOWQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApA
QCAtNzAsMTIgKzcwLDEyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBib29sIHRyeVNlbmRTdHJlYW0oVCYgbWVzc2FnZSwgU3BhbiYpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHRyeVNlbmRTeW5jU3RyZWFt
KFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiwgVGltZW91dCwgU3BhbiYpOworICAgIHN0
ZDo6b3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiwgVGltZW91dCwgU3BhbiYpOwogICAgIGJvb2wgdHJ5U2VuZERl
c3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBUaW1lb3V0KTsKICAg
ICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJik7CiAKLSAgICBPcHRp
b25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVvdXQpOwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFj
cXVpcmVBbGwoVGltZW91dCk7CisgICAgc3RkOjpvcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRp
bWVvdXQpOworICAgIHN0ZDo6b3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsK
IAogICAgIGVudW0gY2xhc3MgV2FrZVVwU2VydmVyIDogYm9vbCB7CiAgICAgICAgIE5vLApAQCAt
MTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQgeyAw
IH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKLSAgICBPcHRpb25hbDxT
ZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3Jl
PiBtX3dha2VVcFNlbWFwaG9yZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+CkBAIC0xNTYsNyArMTU2LDcgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3MKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLU9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbShUJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHksIFRpbWVvdXQgdGltZW91dCwgU3BhbiYg
c3BhbikKK3N0ZDo6b3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwgVGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQog
ewogICAgIC8vIEluIHRoaXMgZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJv
ciBoYXBwZW5lZCBhbmQgY2FsbGVyIHNob3VsZCBzdG9wIHByb2Nlc3NpbmcuCiAgICAgLy8gc3Rk
OjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0
cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgpAQCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjp0cnlTZW5kCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24ucHVzaFBlbmRpbmdTeW5jUmVxdWVz
dElEKHN5bmNSZXF1ZXN0SUQpKQogICAgICAgICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9Owog
Ci0gICAgYXV0byByZXN1bHQgPSBbJl0oKSAtPiBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gewor
ICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4g
ewogICAgICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5h
bWUoKSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKICAgICAgICAgaWYgKCEobWVzc2FnZUVuY29k
ZXIgPDwgc3luY1JlcXVlc3RJRCA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODgsNyArMTg4LDcgQEAgT3B0aW9uYWw8U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmQKICAgICBtX2Nvbm5lY3Rpb24ucG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1Jl
cXVlc3RJRCk7CiAgICAgaWYgKHJlc3VsdCAmJiAqcmVzdWx0KSB7CiAgICAgICAgIGF1dG8mIGRl
Y29kZXIgPSAqKnJlc3VsdDsKLSAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlBcmd1
bWVudHM+IHJlcGx5QXJndW1lbnRzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIFQ6
OlJlcGx5QXJndW1lbnRzPiByZXBseUFyZ3VtZW50czsKICAgICAgICAgZGVjb2RlciA+PiByZXBs
eUFyZ3VtZW50czsKICAgICAgICAgaWYgKCFyZXBseUFyZ3VtZW50cykKICAgICAgICAgICAgIHJl
dHVybiBTZW5kU3luY1Jlc3VsdCB7IH07CkBAIC0yMjMsNyArMjIzLDcgQEAgaW5saW5lIHZvaWQg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3Bh
biYmIHNwYW4pCiAgICAgYXV0byByZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKICAg
ICBVTlVTRURfVkFSSUFCTEUocmVzdWx0KTsKIH0KLWlubGluZSBPcHRpb25hbDxTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRp
bWVvdXQgdGltZW91dCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoVGltZW91dCB0aW1l
b3V0KQogewogICAgIENsaWVudExpbWl0IGNsaWVudExpbWl0ID0gc2hhcmVkQ2xpZW50TGltaXQo
KS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogICAgIC8vIFRoaXMgd291bGQgbWVh
biB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEgcHJvZ3Jh
bW1pbmcgZXJyb3IuCkBAIC0yNTMsNyArMjUzLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1pbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFs
bChUaW1lb3V0IHRpbWVvdXQpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKFRpbWVv
dXQgdGltZW91dCkKIHsKICAgICAvLyBUaGlzIHdvdWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVz
c2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9yLgogICAgIC8v
IFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVkLCB3ZSBvbmx5IGFzc2VydC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKaW5k
ZXggMDIxMDJmODIyNmQ5Mzc0YTZkNjhhYjA3MjNlOWVlYjk5MzE3YjcwNS4uZGM2NTU4NjYyNWRm
YWE0NjQ4NTNmNjBjZDU5OThkZGI2YmQyYTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTc3LDEzICs3Nywx
MyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9jbGllbnRXYWl0U2VtYXBob3JlOwogfQogCi1PcHRp
b25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFu
ZGxlOwogICAgIGRlY29kZXIgPj4gaXBjSGFuZGxlOwogICAgIGlmICghaXBjSGFuZGxlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gc2VtYXBo
b3JlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7CiAgICAgZGVjb2Rl
ciA+PiBzZW1hcGhvcmU7CiAgICAgaWYgKCFzZW1hcGhvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmgKaW5kZXggZTUyY2FiMjk4OGRkOGIzOWZmMzM4MDVmNGQzNjliMWI1NGRl
MTFiNy4uYmNjZWMwMTgyZDYwNjE3NDUxYTFmMzY5ZDc4OWE5YTZiNmU3ODcxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApA
QCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihDbGll
bnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENsaWVu
dE9mZnNldDo6c2VydmVySXNTbGVlcGluZ1RhZykpIC0gMTsgfQogICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5
U2l6ZSwgU2VtYXBob3JlJiYgY2xpZW50V2FpdFNlbWFwaG9yZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDhk
M2ZmYjQ3YTIwZWQ5ZmVjMjI0NmYxYTU2NmZmNGMyYjQwMGZiNjcuLjY5NzEyMDk1ZDk2ZGQ3MzAy
NTkyNTQ1ODI4Y2U1YzIyMTVmZTExNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZv
aWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24m
LCBzdGQ6OnVuaXF1ZV9wdHI8RGVjCiAgICAgbV93b3JrUXVldWUud2FrZVVwKCk7CiB9CiAKLU9w
dGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCitzdGQ6Om9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgp
CiB7CiAgICAgU2VydmVyTGltaXQgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxv
YWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNl
cnZlckxpbWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDM5ODRhMDc4NTI2Nzkz
NDEzZjIwMWU1MjUwNzFlNTZkOGY2MTc0MmQuLjNhOGU3YTU2NWU4NDc3YTQ3MDNkZDY3OTFhNWE2
MmI3MzVmM2QxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB1aW50OF90KiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICB9OwotICAgIE9wdGlv
bmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwYW4+IHRyeUFjcXVp
cmUoKTsKICAgICBTcGFuIGFjcXVpcmVBbGwoKTsKIAogICAgIHZvaWQgcmVsZWFzZShzaXplX3Qg
cmVhZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tCmluZGV4IDVlYzhmZjMzY2FkZjlkMmY0ZTYxZjZmYmFjZTJkN2RiZjE4
YTU4MWUuLjEyZDg2MzJhOTZlMzM3ZGU1ZDUzNTJiMTMxMmE3ODM5YmFiNjBmNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0K
QEAgLTU5NSw3ICs1OTUsNyBAQCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlv
bjo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIElkZW50aWZpZXIobV9pc1NlcnZlciA/
IG1fcmVjZWl2ZVBvcnQgOiBtX3NlbmRQb3J0LCBtX3hwY0Nvbm5lY3Rpb24pOwogfQogCi1PcHRp
b25hbDxhdWRpdF90b2tlbl90PiBDb25uZWN0aW9uOjpnZXRBdWRpdFRva2VuKCkKK3N0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4gQ29ubmVjdGlvbjo6Z2V0QXVkaXRUb2tlbigpCiB7CiAgICAg
aWYgKCFtX3hwY0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFy
d2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVE
YXJ3aW4uY3BwCmluZGV4IGJjMDhmNjAxYTcxNTAwN2U1YTcwNzcwYWI4NTM5ODZkMTU5ZTliYjcu
LmU0MWE0OTJlZWJjYmJiMjE0YzdlZGY2NTIxMGFmN2M3YTczZGU3N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4u
Y3BwCkBAIC05OCwxMiArOTgsMTIgQEAgdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY3JlYXRlU2VuZFJpZ2h0KCk7CiB9CiAKLU9w
dGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4g
T3B0aW9uYWw8U2VtYXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9
OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBX
VEZNb3ZlKHNlbmRSaWdodCkgfTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVVbml4LmNwcAppbmRleCBmYTZjOTM2ZmY4MmYwZDY1
Y2ViOTdiZmFhZTI3ODhmOGRkODA0ODZiLi4zYTg4ZmZjMmRmOTlkZWViZDEyNDI0M2Y5MDc3NWY3
OTdjZWMxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQ
Q1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
SVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBTZW1hcGhvcmU6OmVu
Y29kZShFbmNvZGVyJikgY29uc3QKIHsKIH0KIAotT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhv
cmU6OmRlY29kZShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6
OmRlY29kZShEZWNvZGVyJikKIHsKICAgICByZXR1cm4gU2VtYXBob3JlIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKaW5k
ZXggYzllNjU2ZDI2MTY0NTJmNDY1ZWM0OWMwYWVjMjQxOGJhMzU3ZTY2MS4uMzZkYTQ0Y2Q0Zjg1
ZGVjMDI5YTUzZTNiZmI3MzRlMzkxYTYyMGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9p
ZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZUhhbmRsZShlbmNvZGVyLCBkdXBsaWNhdGVkSGFu
ZGxlKTsKIH0KIAotT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVjb2Rlcik7CiAgICAgaWYgKCFoYW5kbGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmgKaW5kZXggYzk5OGY5Nzk2MWIx
ODQ0YTZiMGZhYmZmZGU5Y2MyMDRmNDY3NjI3ZC4uMjU2YTQ1OTczMThkMTFhZGVkZTA3NWIxZTEy
MTVmZDYzY2ZlYWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRp
b24uaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBpbml0
aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxs
b3B0KTsKK3ZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnkoc3RkOjpvcHRpb25h
bDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDQx
ZDg2ZGMyZGU1YWJhZjlmMGM4MTczOWE5YmExODJlOGUzZGZiZjIuLjg1MWYyNTYzM2VjY2EwODI1
YjAyYjRmOGM0NzRlN2JiMWJjNmVkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBjb25zdCBzaXplX3Qg
bG9nQ2hhbm5lbENvdW50ID0gV1RGX0FSUkFZX0xFTkdUSChsb2dDaGFubmVscyk7CiBzdGF0aWMg
Ym9vbCBsb2dDaGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CiAKLXZvaWQgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5nPiBsb2dDaGFubmVsU3Ry
aW5nKQordm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gbG9nQ2hhbm5lbFN0cmluZykKIHsKICAgICBpZiAoIWxvZ0NoYW5uZWxzTmVlZElu
aXRpYWxpemF0aW9uICYmICFsb2dDaGFubmVsU3RyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBjNDZiNWQ1NjU0ZGE2YjM1MWUyNmM2
NzcxZWU1MTlmMjRmOGJjMGRmLi5iZTI1YTkxMGE0ZjRjMmZkMWFiNzg1YTQ0MjZjNTI1ZjMzMDI5
NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTkwLDcgKzkwLDcg
QEAgcHVibGljOgogI2VuZGlmCiAjaWYgT1MoV0lORE9XUykKICAgICAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlSGFuZGxlKElQQzo6RW5jb2RlciYsIEhBTkRMRSk7Ci0gICAgICAgIHN0YXRpYyBPcHRp
b25hbDxIQU5ETEU+IGRlY29kZUhhbmRsZShJUEM6OkRlY29kZXImKTsKKyAgICAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SEFORExFPiBkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJik7CiAjZW5k
aWYKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkTWVtb3J5OwpAQCAt
MTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQotICAgIE9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRvcjsKICAgICBib29sIG1faXNXcmFwcGluZ01hcCB7
IGZhbHNlIH07CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wb3J0IHsgTUFD
SF9QT1JUX05VTEwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllckNvY29hLmNwcAppbmRleCAwM2NhMzYzMTc2YmQ4YWUxYmE5ZWIyNTAyYjhj
ZmI4ZTI3OGY1ZGY2Li5kYTZiYmFlNGY1ZGNhZGJhYjA4ZmQ2ZWU0ZTk5N2JlMzc4YWFlZmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllckNvY29hOjpjYW5Vc2VDb3JlUHJlZGljdGlvbigpCiAKIGNvbnN0IHN0cnVjdCBz
dm1fbW9kZWwqIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2E6OnNpbmdsZXRv
blByZWRpY3Rpb25Nb2RlbCgpCiB7Ci0gICAgc3RhdGljIE9wdGlvbmFsPHN0cnVjdCBzdm1fbW9k
ZWwqPiBjb3JlUHJlZGljdGlvbk1vZGVsOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0cnVj
dCBzdm1fbW9kZWwqPiBjb3JlUHJlZGljdGlvbk1vZGVsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAg
ICAgYXV0byBwYXRoID0gc3RvcmFnZVBhdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaAppbmRl
eCAwNjk3ZjkxOTlmZjMyZDg0YzYxY2NiMTZiYTM0YjU0MjQ1MmRiNzMwLi4yMmM2YjY1NmNjYWJi
MWY3N2VhOTczZjU0NzQ4Y2FhNmY2YWM3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBA
IC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgIENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KIAogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3Qg
V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwotICAgIHZvaWQgY29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhv
ZFVwZGF0ZT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYpOwotICAgIHZvaWQgY29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRl
PiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBj
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+Jik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0
VXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsKICNp
ZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0
ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZE1vZGVVcGRhdGU+JiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9k
ZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVV
cGRhdGU+JiYpOwogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9E
RSkKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0KaW5kZXggNzkyZGI3MTA3ZjczMzg2MjcxNzEwYzI2Mjc2NWJkZGZlNTdiNzFmYS4uMDQ1
NDFmZjM1MTg5NWFhOGE3OTlmM2Y0ZThkOWEzZTgyMGJmYzBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLm1tCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGEKICAg
ICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOm1lcmNoYW50
U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBlcnJvcjpuaWxdOwogfQogCi12b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVw
ZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7
CiAgICAgaWYgKCF1cGRhdGUpIHsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9u
YWw8V2ViQwogICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uOnBheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCldOwogfQogCi12b2lkIFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQordm9pZCBQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0
KQogewogICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwogICAgIGF1dG8gc3RhdHVzID0g
cmVzdWx0ID8gdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHJlc3VsdC0+c3RhdHVzKSA6
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwpAQCAtMjI0LDcgKzIyNCw3IEBA
IHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Np
b24oY29uc3QgT3B0aW9uYWw8V2ViQ29yCiAgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0
ZVBheW1lbnRTZXNzaW9uOnN0YXR1cyBlcnJvcnM6ZXJyb3JzLmdldCgpXTsKIH0KIAotdm9pZCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYg
dXBkYXRlKQordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdh
dGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihPcHRpb25hbDxXZQogICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246c2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpXTsKIH0KIAotdm9pZCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVw
ZGF0ZSkKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5n
TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBBU1NFUlQocGxhdGZvcm1EZWxlZ2F0ZSgp
KTsKICAgICBpZiAoIXVwZGF0ZSkgewpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAK
LXZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhv
ZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVw
ZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21w
bGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQ
YXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRm
b3JtRGVsZWdhdGUoKSk7CiAgICAgaWYgKCF1cGRhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKaW5kZXggOGRmNjY4ZDBlMzAz
NWYwMmY0OWYyYmU2YTFlODczNzBhNzY0ZTlkNC4uNTBjZjZjYmQxYzdjNGQwNzU3OTgyYmFlZWJj
MmI1ZjRjYWI4NDcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9T
aGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9T
aGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGludCB0b1ZNTWVt
b3J5TGVkZ2VyKE1lbW9yeUxlZGdlciBtZW1vcnlMZWRnZXIpCiB9CiAjZW5kaWYKIAotc3RhdGlj
IGlubGluZSBPcHRpb25hbDxzaXplX3Q+IHNhZmVSb3VuZFBhZ2Uoc2l6ZV90IHNpemUpCitzdGF0
aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzYWZlUm91bmRQYWdlKHNpemVfdCBzaXpl
KQogewogICAgIHNpemVfdCByb3VuZGVkU2l6ZTsKICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVy
ZmxvdyhzaXplLCBzdGF0aWNfY2FzdDxzaXplX3Q+KFBBR0VfTUFTSyksICZyb3VuZGVkU2l6ZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4u
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRl
eCAxNWI5ZTQyNTY0MjVkNzY4ZGE0YWI5NTQ5ODNhZmI2YTE2NDNhOTkwLi5jNTUxZmRkMmZmODIw
NjNkMWY0ZGY2NzRmNDVmMGQwNjI3ZGNmZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgYm9v
bCBnZXREdXBsaWNhdGVkSGFuZGxlKEhBTkRMRSBzb3VyY2VIYW5kbGUsIERXT1JEIHNvdXJjZVBJ
RCwgSEFORExFJiBkdQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1PcHRpb25hbDxIQU5ETEU+
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxIQU5ETEU+IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5k
bGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZUhhbmRsZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4ZjEzMTdiYzg4NTNmZGVhZTIyNzZkMDc4Yzk4
MWQ1ZTZlMjJjZmM1Li4zMWU0OTU3ZWFhYzc0OGE1ZmIxNzc0Y2QxMzNjYzA3Y2NlZjBhYzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0Myw4ICsxNDMs
OCBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUodHlwZSwga2luZCk6CiBkZWYgcmVwbHlf
dHlwZSh0eXBlKToKICAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UnOgogICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09
ICdPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JzoKLSAgICAgICAgcmV0
dXJuICdPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JworICAgIGlmIHR5cGUgPT0gJ3N0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6CisgICAgICAgIHJldHVy
biAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwogICAgIHJldHVybiB0eXBlCiAK
IApAQCAtNjAxLDkgKzYwMSw5IEBAIGRlZiBjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKHRlbXBsYXRl
X3N0cmluZyk6CiAgICAgICAgICdFeHBlY3RlZCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9FeHBlY3Rl
ZC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119
LAogICAgICAgICAnSGFzaE1hcCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAg
ICdIYXNoU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL0hhc2hTZXQuaD4nXSwgJ2FyZ3VtZW50X2Nv
ZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKLSAgICAgICAgJ09wdGlvbmFs
JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFk
ZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdPcHRpb25TZXQnOiB7J2hl
YWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7J2hlYWRlcnMnOiBb
Jzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRD
b2RlcnMuaCInXX0sCisgICAgICAgICdzdGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8b3B0
aW9uYWw+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCIn
XX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAn
SVBDOjpBcnJheVJlZmVyZW5jZSc6IHsnaGVhZGVycyc6IFsnIkFycmF5UmVmZXJlbmNlLmgiJ10s
ICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAg
ICAgICdSZWZQdHInOiB7J2hlYWRlcnMnOiBbJzx3dGYvUmVmQ291bnRlZC5oPiddLCAnYXJndW1l
bnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LApAQCAtOTA3LDcgKzkw
Nyw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5
cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBseShJUEM6
OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICBmb3Ig
eCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7XG4nICUgKHJlcGx5X3R5cGUoeC50eXBlKSwg
eC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0
aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVzO1xuJyAlIHgubmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmICghJXMpIHtcbiAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbicgJSB4Lm5hbWUp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKCcp
CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1l
bnRhdGlvbihyZWNlaXZlcnMpOgogCiAKIGRlZiBnZW5lcmF0ZV9qc192YWx1ZV9jb252ZXJzaW9u
X2Z1bmN0aW9uKHJlc3VsdCwgcmVjZWl2ZXJzLCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF90eXBl
LCBwcmVkaWNhdGU9bGFtYmRhIG1lc3NhZ2U6IFRydWUpOgotICAgIHJlc3VsdC5hcHBlbmQoJ09w
dGlvbmFsPEpTQzo6SlNWYWx1ZT4gJXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIGZ1bmN0aW9uX25hbWUp
CisgICAgcmVzdWx0LmFwcGVuZCgnc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+ICVzKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZU5hbWUgbmFtZSwgRGVjb2RlciYg
ZGVjb2RlcilcbicgJSBmdW5jdGlvbl9uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3aXRjaCAobmFtZSkge1xuJykKICAgICBmb3IgcmVjZWl2
ZXIgaW4gcmVjZWl2ZXJzOgpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgZGVmIGdlbmVyYXRlX2pzX3Zh
bHVlX2NvbnZlcnNpb25fZnVuY3Rpb24ocmVzdWx0LCByZWNlaXZlcnMsIGZ1bmN0aW9uX25hbWUs
IGFyZ3UKIAogZGVmIGdlbmVyYXRlX2pzX2FyZ3VtZW50X2Rlc2NyaXB0aW9ucyhyZWNlaXZlcnMs
IGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50c19mcm9tX21lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtd
Ci0gICAgcmVzdWx0LmFwcGVuZCgnT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+
PiAlcyhNZXNzYWdlTmFtZSBuYW1lKVxuJyAlIGZ1bmN0aW9uX25hbWUpCisgICAgcmVzdWx0LmFw
cGVuZCgnc3RkOjpvcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+ICVzKE1lc3Nh
Z2VOYW1lIG5hbWUpXG4nICUgZnVuY3Rpb25fbmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzd2l0Y2ggKG5hbWUpIHtcbicpCiAgICAgZm9yIHJl
Y2VpdmVyIGluIHJlY2VpdmVyczoKQEAgLTExOTYsNyArMTE5Niw3IEBAIGRlZiBnZW5lcmF0ZV9q
c19hcmd1bWVudF9kZXNjcmlwdGlvbnMocmVjZWl2ZXJzLCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVu
dHNfZnJvbV9tCiAgICAgICAgICAgICAgICAgaWYgYXJndW1lbnQua2luZC5zdGFydHN3aXRoKCdl
bnVtOicpOgogICAgICAgICAgICAgICAgICAgICBlbnVtX3R5cGUgPSAnIiVzIicgJSBhcmd1bWVu
dF90eXBlCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50X3R5cGUgPSBhcmd1bWVudC5raW5k
WzU6XQotICAgICAgICAgICAgICAgIGlmIGFyZ3VtZW50X3R5cGUuc3RhcnRzd2l0aCgnT3B0aW9u
YWw8JykgYW5kIGFyZ3VtZW50X3R5cGUuZW5kc3dpdGgoJz4nKToKKyAgICAgICAgICAgICAgICBp
ZiBhcmd1bWVudF90eXBlLnN0YXJ0c3dpdGgoJ3N0ZDo6b3B0aW9uYWw8JykgYW5kIGFyZ3VtZW50
X3R5cGUuZW5kc3dpdGgoJz4nKToKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRfdHlwZSA9
IGFyZ3VtZW50X3R5cGVbOTotMV0KICAgICAgICAgICAgICAgICAgICAgaXNfb3B0aW9uYWwgPSBU
cnVlCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICAgICAgeyIlcyIsICIl
cyIsICVzLCAlc30sXG4nICUgKGFyZ3VtZW50Lm5hbWUsIGFyZ3VtZW50X3R5cGUsIGVudW1fdHlw
ZSBvciAnbnVsbHB0cicsICd0cnVlJyBpZiBpc19vcHRpb25hbCBlbHNlICdmYWxzZScpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9wYXJzZXJfdW5pdHRlc3QucHkg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5weQppbmRleCBm
ODZlZDgxZDVjNzY5MTMyYjhkNDQ0OWRkNDgxNjdiOTNkMjIyNjA0Li5lOTVjM2VjOGYzNGE0ODcy
YTYxMDIzNmE1OGM4ZWMxMjMzYWZmNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3BhcnNlcl91bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3BhcnNlcl91bml0dGVzdC5weQpAQCAtMjkwLDcgKzI5MCw3IEBAIF9leHBlY3RlZF9t
b2RlbF90ZXN0X3dpdGhfc3VwZXJjbGFzcyA9IHsKICAgICAgICAgICAgICAgICAoJ2Jvb2wnLCAn
dmFsdWUnKSwKICAgICAgICAgICAgICksCiAgICAgICAgICAgICAncmVwbHlfcGFyYW1ldGVycyc6
ICgKLSAgICAgICAgICAgICAgICAoJ09wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4nLCAn
b3B0aW9uYWxSZXBseScpLAorICAgICAgICAgICAgICAgICgnc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JywgJ29wdGlvbmFsUmVwbHknKSwKICAgICAgICAgICAgICksCiAgICAg
ICAgICAgICAnY29uZGl0aW9ucyc6IChOb25lKSwKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRp
b25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3Vt
ZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCAwODZhZDk5ZmFmNTMxMTEyNGQ2MGVjMjg3MTk1NzY1
YWMyYWNkZGY1Li5mNmFiZmY2NmJmNDAyYTk3ODEyMTNjMDFhODEyOTUwNWExZGU5YmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVu
dERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsdWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx1dGlsaXR5Pgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03MywxNCAr
NzQsMTMgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2VuZGlmCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCi1PcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFs
dWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdl
TmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+
IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBN
ZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN3aXRjaCAobmFtZSkg
ewogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgpAQCAt
MjU1LDcgKzI1NSw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50
cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lCiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1
bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1l
LCBEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVG
b3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lc3Nh
Z2VOYW1lIG5hbWUsIERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3dpdGNoIChuYW1lKSB7CiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTI5MCw3ICsyOTAsNyBAQCBPcHRpb25hbDxKU0M6
OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFZlY3Rv
cjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3Nh
Z2VOYW1lIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4g
bWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hbWUpCiB7CiAgICAgc3dp
dGNoIChuYW1lKSB7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xv
YWRVUkw6CkBAIC01OTIsNyArNTkyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3Jp
cHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlw
dGlvbj4+IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hbWUp
CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZVJlcGx5
QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkKIHsKICAgICBzd2l0Y2ggKG5h
bWUpIHsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtNjE4LDcgKzYxOCw3IEBAIE9wdGlv
bmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNj
cmlwdGlvbnMoTWVzc2FnZU5hCiAgICAgICAgIH07CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CiAgICAgICAgIHJldHVybiBW
ZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4gewotICAgICAgICAgICAgeyJvcHRpb25hbFJlcGx5
IiwgIldlYktpdDo6VGVzdENsYXNzTmFtZSIsIG51bGxwdHIsIHRydWV9LAorICAgICAgICAgICAg
eyJvcHRpb25hbFJlcGx5IiwgIm9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lIiwgbnVsbHB0ciwg
dHJ1ZX0sCiAgICAgICAgIH07CiAjaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3VwZXJjbGFzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdXBlcmNsYXNzLm1lc3NhZ2VzLmluCmluZGV4IDU1NGFiMDFhYTYwMzM0ZWE3
ODllMWU4OGM0Yzg1YjExMTEzOTg2ZTYuLjYzYzZiMGZiZDYzYWMyNjI2YTc1NjU0NzQ0ZTM5NTRj
MTQ5M2E0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdXBlcmNsYXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzLm1lc3NhZ2VzLmluCkBAIC0yOSw1ICsy
OSw1IEBAIG1lc3NhZ2VzIC0+IFRlc3RXaXRoU3VwZXJjbGFzcyA6IFdlYlBhZ2VCYXNlIHsKICAg
ICBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb24oaW50IHZhbHVlKSAtPiAoYm9vbCBmbGFn
KSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KICNlbmRpZgogICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50
MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5bmNocm9ub3VzCi0gICAgVGVzdFN5bmNo
cm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NO
YW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cworICAgIFRlc3RTeW5jaHJvbm91c01lc3Nh
Z2UoYm9vbCB2YWx1ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiBv
cHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDZkMzMwYmU0NGJhODgwYTczMDNjZjY1YmQ1ZjA5NTVi
NzZhNjVjZmEuLmZmYWY5NWZlY2YzMjBjNGY0MGM1MWM0NmY4YTlmOTIzMzZmOTkyNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNs
YXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlICJUZXN0VHdvU3RhdGVFbnVtLmgiCiAjZW5kaWYKICNpbmNsdWRlICJU
ZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgTWVzc2FnZXMgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgVGVzdFdpdGhT
dXBlcmNsYXNzIHsKIAogdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcmVzdWx0OwogICAgIGRlY29kZXIgPj4gcmVzdWx0OwogICAg
IGlmICghcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTAsMTQg
KzkwLDE0IEBAIHZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQCiAKIHZvaWQgVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIE9wdGlvbmFsPGJvb2w+IGZsYWc7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBmbGFnOwogICAgIGRlY29kZXIgPj4gZmxhZzsKICAgICBpZiAoIWZsYWcpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdmFsdWU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAg
ZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhN
dWx0aXBsZUFyZ3VtZW50czo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kCiAK
IHZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOjpjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGZsYWc7CiAgICAgZGVjb2RlciA+PiBmbGFnOwogICAgIGlmICghZmxhZykgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFRlc3RT
eW5jTWVzc2FnZTo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgYwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKIH0KIAotdm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQordm9pZCBU
ZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCiB7CiAgICAgZW5jb2Rlci5nZXQo
KSA8PCBvcHRpb25hbFJlcGx5OwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAppbmRleCAzZGYxYzY4ZTk3
NmIxOTI1NWIzZmQyYjgzZDcxYmI4NzFlMGFkNWUxLi5kYmViOGVjMjIyZTQ4OGZiNjVjOTlhYWJl
MjY0MmI0MTRhMDU5OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCkBAIC0yOSw4
ICsyOSw4IEBACiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiVGVzdENsYXNz
TmFtZS5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oIgor
I2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIxNiw5ICsyMTYsOSBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVs
YXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAg
c3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5
KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xh
c3NOYW1lPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxPcHRpb25h
bDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+PjsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OworICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
VGVzdENsYXNzTmFtZT4+OwogICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9v
bCB2YWx1ZSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaAppbmRleCA0ODIyZTZjZDZhOWY1ZWFmZWYw
MDFlYTExNjRiZGVhYWQ2ZTAyMzgyLi4yM2NiZjQwZjYxYjIxNmNlOTc2N2IxMzU5N2Y2MGNjZjZl
NmU5YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgKQEAg
LTUxLDcgKzUxLDcgQEAgdXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uQXN5bmNS
ZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGEKIAogdXNpbmcgVGVzdFN5bmNN
ZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90IHJlcGx5
KT47CiAKLXVzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpPjsKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk+OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN1
cGVyY2xhc3MKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJUGFnZUdyb3VwSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCmluZGV4IGM0MTg4MDI3M2YyNGMyZGE3YzNj
MDM1ZmE3MTJmZjY0N2Q3NDllYTUuLjY0ZTAwZGE5ZjY5OWU4OTYyZGNkNWM3NDYwMjkxYjA3MmFk
MzVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5k
bGUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUGFnZUdyb3VwSGFuZGxlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICBP
cHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VHcm91cERhdGE+IHdlYlBhZ2VHcm91cERhdGE7
CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlR3JvdXBEYXRhOwogICAgIGlmICghd2ViUGFnZUdyb3Vw
RGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVBhZ2VIYW5kbGUuY3BwCmluZGV4IGFjYTc1NzUxNTMxNWM5YWM0YzQ0MzZhNDQ0OTc4MzZkM2Q5
NGQ0NjEuLjljYjg4NzJjYzZhZDU5Zjc5OTg3YmNkYTRiMDBmOTI5MTYzYWVjNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAgLTYyLDEyICs2MiwxMiBA
QCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAK
IGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9i
amVjdD4mIHJlc3VsdCkKIHsKLSAgICBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXI+IHBhZ2VQcm94eUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VQcm94eUlEOwog
ICAgIGlmICghcGFnZVByb3h5SUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOwogICAgIGRlY29kZXIgPj4gd2Vi
UGFnZUlEOwogICAgIGlmICghd2ViUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCmluZGV4IDQ3MWJmZDI3
Njg0ZDkyYjVlMjYzMjc1NTQ1MTNmN2M4OTI3ZjgwOTEuLmYxMzkzMDdlYjllN2NjNDBiM2E1YWYw
M2JhMmUwNDk3ZGY4ZTY3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElTZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1
cml0eU9yaWdpbi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tVVJMKFdURjo6VVJMKFdURjo6VVJMKCksIHN0cmluZykpKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJv
dG9jb2wsIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBw
b3J0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW4o
eyBwcm90b2NvbCwgaG9zdCwgcG9ydCB9KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCA0YTE3YzI3YzBhYzI5
YTk4MjdlMmQ3NzEyNDdjYmQxYzcxOGRjYThkLi5iMDMyMjVjMzQ3ZGQzNWZkZjRkZjAyNGMxZjZl
YjYxMWIwNjVhN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJp
bmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIE9wdGlv
bmFsPHVpbnQxNl90PiB2YWxpZFBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gdmFs
aWRQb3J0OwogICAgIGlmIChwb3J0ICYmIHBvcnQgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MTZfdD46Om1heCgpKQogICAgICAgICB2YWxpZFBvcnQgPSBwb3J0OwogICAgIGF1dG8gc2VjdXJp
dHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwocHJv
dG9jb2wpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpLCB2YWxpZFBv
cnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0Fw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KaW5kZXggMmQ0MDhkODUxMzBiYWMzNzI2NTg2
NGJiNmJjNGIxOTRjZTE0OWM3Yy4uZGE2MWNhZWEwMzNjMzY5OGYxNjU3YzVjODVkYTc3NTkzOGJl
MWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQg
UGF5bWVudFNldHVwRmVhdHVyZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCBtX3BsYXRmb3JtRmVhdHVyZXM7CiB9CiAKLU9wdGlvbmFsPFBheW1l
bnRTZXR1cEZlYXR1cmVzPiBQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRT
ZXR1cEZlYXR1cmVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGFsbG93ZWRDbGFzc2VzOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVy
ZXNXZWJLaXQuaAppbmRleCAyOWM1YjkyZWU0ODFhMDgzMDM3NDM5OTBkYzQ5MmRkYzI1OTM5ZmE5
Li42MGUyNDk4MDgwNzY1MDYzZDAxODc2NjQ4MGY1YzZiYzIyMzAxN2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVz
V2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXlt
ZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBQ
YXltZW50U2V0dXBGZWF0dXJlcyhSZXRhaW5QdHI8TlNBcnJheT4mJiA9IG51bGxwdHIpOwogCiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFBheW1lbnRTZXR1cEZlYXR1cmVzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIAogICAgIE5TQXJyYXkgKnBsYXRmb3JtRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtRmVhdHVyZXMuZ2V0KCk7IH0KICAgICBvcGVyYXRvciBWZWN0b3I8UmVmPFdlYkNvcmU6
OkFwcGxlUGF5U2V0dXBGZWF0dXJlPj4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4
IDUwY2RkYTUxMWJiOGQwMjVhOGMzZjFiYzBjMjUzMTAxY2FmMzllNDUuLjFhM2E2OTFiODY1ZTMx
OTY3YTk0NjIxZGQzNDdjMWY0NWExNTFhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtODIs
NyArODIsNyBAQCB2b2lkIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2NvbmZpZ3VyYXRpb247CiB9
CiAKLU9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU0FycmF5Pj4gYWxsb3dlZENsYXNzZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oCmluZGV4IDM0ZTlhOTU1
YWNlODVmZTg2MWIzODU5YmY0ZDQ2ZmI3YmE1Y2I1ZmMuLmMwZTU1ZThiMzYxNmQ0MjZmNmNhMWU1
NzdmYTBkMzFiNzY5NjZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiAgICAgUEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uICpwbGF0Zm9ybUNv
bmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDkwNWRlYzM1Y2RlZTc4NDA1MWQ4YjcxZjViZDYx
MDkyMzc5NWJiMzIuLjY5YjcwOGQ2Mjk1YmEwYWZkZGQ2MDgwZjMwNzZmOTIzNDc3ZjE2NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJD
b3JlOjpQYXltZQogICAgIG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlk
YXRpb25TdGF0ZTo6VmFsaWRhdGlvbkNvbXBsZXRlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBk
YXRlKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBj
YW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yCiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpBY3RpdmU7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0
J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5Lgog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKE9wdGlvbmFsPFdlYkNvCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+JiYgdXBk
YXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBheW1l
bnQgaGFzIGJlZW4gY2FuY2VsZWQgYWxyZWFkeS4KICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
SWRsZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZQogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBkYXRlKQordm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNo
YW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRh
dGU+JiYgdXBkYXRlKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBo
YXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxl
KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNv
bXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29yCiAKICNlbmRpZiAv
LyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7
CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXltZW50IGhhcyBiZWVuIGNhbmNlbGVk
IGFscmVhZHkuCiAgICAgaWYgKCFjYW5Db21wbGV0ZVBheW1lbnQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCmluZGV4IDJjZDM5ZDc1NDA2ZTI0M2NiMjA1OTg1MWRiOGZkYmNhZTQxYzAzODYuLmFiN2Ri
OGZiYzhlM2M0MWIzMTM0Y2MxZDFkMmE3Mjg0NjY4NDBkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aApAQCAtMTMxLDEzICsxMzEsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGF5
bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNo
YW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0g
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU+JiYpOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJik7CisgICAg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJik7CisgICAgdm9pZCBjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hp
cHBpbmdDb250YWN0VXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZT4mJik7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRN
ZXRob2RNb2RlVXBkYXRlPiYmKTsKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRf
TUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYpOworICAgIHZvaWQgY29t
cGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uUmVzdWx0PiYpOwogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwog
ICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKTsKIApAQCAtMTU5LDIwICsxNTksMjAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1T
aG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+
JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBwbGF0Zm9y
bUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFu
dFNlc3Npb24mKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKTsK
LSAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpOwotICAgIHZvaWQg
cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5
U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpOworICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYmKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9k
VXBkYXRlPiYmKTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0g
ICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJik7CisgICAgdm9pZCBw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKTsKICNlbmRpZiAvLyBFTkFC
TEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBwbGF0Zm9ybUNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQ+Jik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24o
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4m
KTsKICAgICB2b2lkIHBsYXRmb3JtSGlkZVBheW1lbnRVSSgpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0
KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVS
THMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAjZW5k
aWYKIAogICAgIENsaWVudCYgbV9jbGllbnQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG1fZGVzdGluYXRpb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0aW9uSUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsK
ICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcncyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM4NzdkMmQxZmQ0NzIyMTFmYzA1ZWY0N2YyOWU0
NmQ1MWE1NzAxYWQuLjI3NDBjOTFmMTIxYzFjMzEyOGY1NzBhOTllMzEyYzYxOGZhMjJlM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiwxMyArMzIsMTMg
QEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgTm90UmVmQ291bnRlZCB7
CiAKICAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
SUQsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25V
UkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50
UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hh
bnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNo
YW50U2Vzc2lvbikKLSAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+IHVwZGF0ZSkKLSAgICBDb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNo
aXBwaW5nQ29udGFjdFVwZGF0ZT4gdXBkYXRlKQotICAgIENvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IHVw
ZGF0ZSkKKyAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4gdXBkYXRlKQorICAgIENvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQ
YXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVwZGF0ZSkKKyAgICBDb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RV
cGRhdGU+IHVwZGF0ZSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUp
Ci0gICAgQ29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiB1cGRhdGUpCisgICAgQ29tcGxldGVQYXlt
ZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dE1ldGhvZE1vZGVVcGRhdGU+IHVwZGF0ZSkKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1BB
WU1FTlRfTUVUSE9EX01PREUpCi0gICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gcmVzdWx0KQorICAgIENvbXBsZXRl
UGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdD4gcmVzdWx0KQogICAgIEFib3J0UGF5bWVudFNlc3Npb24oKQogICAgIENhbmNlbFBh
eW1lbnRTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOGQ3
YjVjMzMzNzEwYTZjMmUwNmNmNDJkNzIzNWZkMTIwNTM2YmYzMC4uNzJhNGZhMWIyZjc5YjczYjA3
YjFiMmIyMDY5MDI4MWYzMDNmODhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1t
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fY29uZmlndXJh
dGlvbjsKIH0KIAotT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNl
dHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBhbGxvd2VkQ2xhc3NlczsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQppbmRleCA3ZTJkZmU2NDZmMjQxYTJkMjZkZWQxZDNiOTg1NGQzMTMxNjM0NGMyLi4z
NzQ1YzBlMDMzNTZjZjhmOWNmNzUyMTcyOWY5NjgyYTI4MmY3MjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZXRhaW5Q
dHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
UGF5bWVudFJlcXVlc3QoYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vz
c2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQogewogICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQ
YXltZW50U2Vzc2lvbihyZXN1bHQpOwogfQpAQCAtMjgyLDI0ICsyODIsMjQgQEAgdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlv
bihjb25zdCBXZWJDb3IKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwogfQogCi12b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJiB1
cGRhdGUpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNo
aXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYgdXBkYXRlKQogewogICAg
IG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oV1RGTW92ZSh1cGRhdGUpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmIHVw
ZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVwZGF0ZSkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJiB1cGRhdGUpCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVD
aGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBk
YXRlPiYmIHVwZGF0ZSkKIHsKICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRl
UGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoV1RGTW92ZSh1cGRhdGUpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDc1ZjIyODNlNWQzMjA1YjlhMmFiMDA0YjdjMWQ2ZTEwN2ZjMjlm
NWUuLmUzZmVmMmExNWY5MzdhYTE4YmM3MTA5MjRlOTE4NjM1NzNhZTNhYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQg
c2VzCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW5EYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8
U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW5EYXRhOwogICAgIGlmICh0b3BPcmlnaW4pCiAg
ICAgICAgIHRvcE9yaWdpbkRhdGEgPSAqdG9wT3JpZ2luOwogICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Uoc2Vzc2lvbklELCBwYWdlSUQsIHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6Olllcywg
Y2hhbGxlbmdlSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAK
aW5kZXggYjgxOGMwN2I3MmU3MWRmZTA4YTRjYWJiNmJhMzM1M2I4ZTFlMmNlYy4uOTQ4Njk3ZDdh
OTFiNTQ2MjhiNDE3NzQ4YjQ5MmVmYTFmMjgxMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV4aWxpYXJ5UHJvY2Vzcy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEF1eGlsaWFyeVBy
b2Nlc3M6OnNodXREb3duKCkKICAgICB0ZXJtaW5hdGUoKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gQXV4aWxp
YXJ5UHJvY2Vzczo6Y3JlYXRlSVBDQ29ubmVjdGlvblBhaXIoKQorc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBBdXhp
bGlhcnlQcm9jZXNzOjpjcmVhdGVJUENDb25uZWN0aW9uUGFpcigpCiB7CiAjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBh
aXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDI3MGM2NjlkYzFhNjJmMDA5ZDM3
OWViNGM3M2ZhM2M3OTE5NzdlYmYuLmVkNTIxYmY1ZGVhZTY5MTkxZmE1ZTkzMmQ0OTY2YThmMmM4
MWI3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKQEAgLTEyMCw3
ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVtb3J5UHJlc3N1cmVF
dmVudChib29sIGlzQ3JpdGljYWwpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4gY3Jl
YXRlSVBDQ29ubmVjdGlvblBhaXIoKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBJUEM6OkF0dGFjaG1lbnQ+PiBjcmVhdGVJ
UENDb25uZWN0aW9uUGFpcigpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRP
dmVycmlkZVF1YXJhbnRpbmUoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNjUsNyArMTY1LDcgQEAg
c3RydWN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewogICAgIFN0
cmluZyBjbGllbnRJZGVudGlmaWVyOwogICAgIFN0cmluZyBjbGllbnRCdW5kbGVJZGVudGlmaWVy
OwogICAgIHVpbnQzMl90IGNsaWVudFNES1ZlcnNpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBleHRyYUluaXRpYWxpemF0aW9uRGF0YTsKICAgICBXZWJDb3JlOjpB
dXhpbGlhcnlQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NhbGxiYWNrSUQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQu
aAppbmRleCBlOGZjZmRjYWNhNzNhMDI2NTQzNmNlMzdiYjU0OTMxYzMxNmM3YzQ2Li4wYWQzMjEz
ZjE3ZjQwZTkwOGRiNmM2ZTRlYzk1NzE4ZTdmZjJmMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9DYWxsYmFja0lELmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJh
Y2tJRC5oCkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICAgICAgZW5jb2RlciA8PCBtX2lk
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxD
YWxsYmFja0lEPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYWxsYmFja0lEPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgICAgICBkZWNv
ZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLmgKaW5kZXggNzExZGZiZTYwMjViOWI0NzBiODk1OWY4YjJmNWYz
ZDg1NmIyOTRjZS4uNTBkNDA5NmY3MTRjYWU0ZGM4MWYzZTZiY2IzZWIyNjI1ZDZlZDJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApA
QCAtMzIsMTQgKzMyLDE0IEBACiBuYW1lc3BhY2UgSVBDIHsKIAogdm9pZCBlbmNvZGVPYmplY3Qo
RW5jb2RlciYsIGlkKTsKLU9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNv
ZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKTsKK3N0ZDo6b3B0aW9uYWw8UmV0
YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dl
ZENsYXNzZXMpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBJc09iakNPYmplY3QgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGU8VCAqLCBpZD46OnZhbHVlLCBUICo+
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIFQgKik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9
IElzT2JqQ09iamVjdDxUPj4gV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBSZXRhaW5QdHI8VD4mLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBj
bGFzc10gXSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxU
Pj4gT3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYsIE5TQXJyYXk8Q2xhc3M+
ICphbGxvd2VkQ2xhc3NlcyA9IEBbIFtUIGNsYXNzXSBdKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0PFQ+PiBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29k
ZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dlZENsYXNzKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gSXNPYmpDT2JqZWN0PFQ+PiBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVj
b2RlKERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFz
c10gXSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4g
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiwgQ2xhc3MgYWxsb3dl
ZENsYXNzKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPFQ+JiByZXN1bHQsIE5TQXJyYXk8Q2xh
c3M+ICphbGxvd2VkQ2xhc3MKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWU+Ci1P
cHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENs
YXNzPiAqYWxsb3dlZENsYXNzZXMpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IGRlY29kZU9iamVjdChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAg
ICAgaWYgKCFyZXN1bHQpCkBAIC04Miw3ICs4Miw3IEBAIE9wdGlvbmFsPFJldGFpblB0cjxUPj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWU+Ci1PcHRpb25hbDxSZXRhaW5QdHI8
VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDbGFzcyBhbGxvd2VkQ2xhc3MpCitzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENsYXNzIGFsbG93
ZWRDbGFzcykKIHsKICAgICByZXR1cm4gZGVjb2RlPFQ+KGRlY29kZXIsIGFsbG93ZWRDbGFzcyA/
IEBbIGFsbG93ZWRDbGFzcyBdIDogQFsgXSk7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFQ+PiB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQsIHR5cGVuYW1lID0gSXNPYmpDT2JqZWN0
PFU+PgotICAgIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8VT4+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxVPj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICByZXR1cm4gSVBDOjpkZWNvZGU8VT4oZGVj
b2Rlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50
Q29kZXJzQ29jb2EubW0KaW5kZXggYzU0YjUzYjZmYjYxNDNiYmVkMGI3MDAxYjE3ZDdhMDkyNDhh
MDhlOC4uYzg1MTc0OTcwYjllNjA2YTQwYjAyNGQyNGU1NjRlNDIyYTkyMGFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0y
NTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlQXJyYXlJbnRlcm5hbChFbmNvZGVyJiBl
bmNvZGVyLCBOU0FycmF5ICphcnJheSkKICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXRh
aW5QdHI8aWQ+PiBkZWNvZGVBcnJheUludGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxp
ZD4+IGRlY29kZUFycmF5SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4g
KmFsbG93ZWRDbGFzc2VzKQogewogICAgIHVpbnQ2NF90IHNpemU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzaXplKSkKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW5j
b2RlQ29sb3JJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9yICpjb2xvcikKICAgICBl
bmNvZGVyIDw8IGNvbG9yRnJvbU5TQ29sb3IoY29sb3IpOwogfQogCi1zdGF0aWMgaW5saW5lIE9w
dGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2Rl
cikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xv
ckludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb2xvcikpCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgVUlDb2xvciAqY29s
b3IpCiAgICAgZW5jb2RlciA8PCBjb2xvckZyb21VSUNvbG9yKGNvbG9yKTsKIH0KIAotc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29k
ZXImIGRlY29kZXIpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4g
ZGVjb2RlQ29sb3JJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENvbG9yIGNvbG9y
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3IpKQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVEYXRhSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgTlNE
YXRhICpkYXRhKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhOwogfQog
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURhdGFJbnRlcm5h
bChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0
cjxpZD4+IGRlY29kZURhdGFJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKQEAg
LTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlRGF0ZUludGVybmFsKEVu
Y29kZXImIGVuY29kZXIsIE5TRGF0ZSAqZGF0ZSkKICAgICBlbmNvZGVyIDw8IChfX2JyaWRnZSBD
RkRhdGVSZWYpZGF0ZTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+
PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKK3N0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEYXRlSW50ZXJuYWwoRGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiBkYXRlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0ZSkpCkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRGlj
dGlvbmFyeUludGVybmFsKEVuY29kZXImIGVuY29kZXIsIE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSkKICAgICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEaWN0
aW9uYXJ5SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRD
bGFzc2VzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlv
bmFyeUludGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xh
c3NlcykKIHsKICAgICB1aW50NjRfdCBzaXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRl
cm5hbChFbmNvZGVyJiBlbmNvZGVyLCBDb2NvYUZvbnQgKmZvbnQpCiAgICAgZW5jb2RlKGVuY29k
ZXIsIGZvbnQuZm9udERlc2NyaXB0b3IuZm9udEF0dHJpYnV0ZXMpOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRm9udEludGVybmFsKERlY29kZXImIGRlY29kZXIp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVGb250SW50ZXJuYWwo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0
cmlidXRlczsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBmb250QXR0cmlidXRlcykpCkBAIC00
MTcsNyArNDE3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29kZU51bWJlckludGVybmFsKEVu
Y29kZXImIGVuY29kZXIsIE5TTnVtYmVyICpudW1iZXIpCiAgICAgZW5jb2RlciA8PCAoX19icmlk
Z2UgQ0ZOdW1iZXJSZWYpbnVtYmVyOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFp
blB0cjxpZD4+IGRlY29kZU51bWJlckludGVybmFsKERlY29kZXImIGRlY29kZXIpCitzdGF0aWMg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlTnVtYmVySW50ZXJuYWwo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG51bWJlcjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG51bWJlcikpCkBAIC00NDEsNyArNDQxLDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQg
PE5TT2JqZWN0LCBOU1NlY3VyZUMKICAgICBlbmNvZGVyIDw8IChfX2JyaWRnZSBDRkRhdGFSZWYp
W2FyY2hpdmVyIGVuY29kZWREYXRhXTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxp
ZD4+IGRlY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxp
ZD4+IGRlY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBBU1NFUlQoYWxsb3dlZENsYXNzZXMgJiYg
YWxsb3dlZENsYXNzZXMuY291bnQpOwogICAgIGlmICghYWxsb3dlZENsYXNzZXMgfHwgIWFsbG93
ZWRDbGFzc2VzLmNvdW50KQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBl
bmNvZGVTdHJpbmdJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBOU1N0cmluZyAqc3RyaW5nKQog
ICAgIGVuY29kZXIgPDwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZzsKIH0KIAotc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVTdHJpbmdJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxpZD4+
IGRlY29kZVN0cmluZ0ludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzdHJpbmc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQpA
QCAtNDk1LDcgKzQ5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVVUkxJbnRlcm5hbChF
bmNvZGVyJiBlbmNvZGVyLCBOU1VSTCAqVVJMKQogICAgIGVuY29kZXIgPDwgKF9fYnJpZGdlIENG
VVJMUmVmKVVSTDsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBk
ZWNvZGVVUkxJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQorc3RhdGljIGlubGluZSBzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVVSTEludGVybmFsKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShVUkwpKQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgZW5jb2RlT2JqZWN0KEVuY29kZXImIGVu
Y29kZXIsIGlkIG9iamVjdCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9u
YWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8
Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVj
b2RlT2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3Nl
cykKIHsKICAgICBib29sIGlzTnVsbDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgK
aW5kZXggNzM2ZjkwZTEwOGE2MGY3ZTU1YzlkODgxNDE3N2NjNTYxNjNiYWJjMC4uYTA4ODhmOTE4
OTZiNDk1ZGE4MmY5NzBiODZhZDUxMGNmNWFkM2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1
Y3QgRGF0YURldGVjdGlvblJlc3VsdCB7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHJlc3VsdHM7
CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8RGF0YURldGVjdGlvblJlc3VsdD4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1bHQ+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rh
dGFEZXRlY3Rpb25SZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0
ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IDRlNjA4YjhhYWY1Njg5YjFjMWYwMmRkM2Q3NmE2ZGE2MTk0
ZDJmMDMuLjlmOGNjMGM1OTI0NTczYzQxMjZjMmRhMzFhYzUyODIzODhhN2RjM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAt
NDMsNyArNDMsNyBAQCB2b2lkIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCByZXN1bHRzOwogfQogCi1PcHRpb25h
bDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBEYXRh
RGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1
dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0FycmF5IGNs
YXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKSBdKTsKICAgICBpZiAoIXJlc3VsdHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNo
ZWNrcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVj
a3MuaAppbmRleCA5YWMwNTEyZDBkNGU3ZTljNGZmZTc5MTA0NDk1NGY1ZGI4MWNlMTQ4Li44YjU4
OGRkZTFhZGRhZTRlNzU3YzA4MTVjOWM2MDlmZWQ4MmIxNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgQXV4aWxpYXJ5UHJvY2VzczsKIAogYm9vbCBoYXNSZXF1ZXN0ZWRDcm9z
c1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24oKTsKIGJvb2wgaGFzUHJvaGliaXRlZFVzYWdlU3Ry
aW5ncygpOwotT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0
QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGlu
Zyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlEKTsKIHZvaWQgZGV0ZXJtaW5lSVRQU3RhdGUoKTsKIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFi
bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2Vi
QnJvd3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJC
cm93c2VyQ2hlY2tzLm1tCmluZGV4IGYzMWJjYTFhMDJjMTNhZGY1OTUyN2NjN2JmZGZjY2FhM2Y2
ZDJhOWQuLjI5YThkMjhhZjE4ODAwZDI3MjdhMGI0ZmY5YzUwNDU1ODZmMzA4MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tz
Lm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1
bmRsZUlEKQogICAgIHJldHVybiBidW5kbGVJRCA9PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2Vi
S2l0QVBJIl9zIHx8IGJ1bmRsZUlEID09ICJjb20uYXBwbGUuV2ViS2l0LldlYktpdFRlc3RSdW5u
ZXIiX3MgfHwgYnVuZGxlSUQgPT0gIm9yZy53ZWJraXQuV2ViS2l0VGVzdFJ1bm5lckFwcCJfczsK
IH0KIAotT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBw
Qm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNU
ZXN0aW5nKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCiB7CiAgICAgaWYgKGJ1bmRsZUlELmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCmluZGV4IDhmMGI3Njk2ZGM0YWZlMjA2
YzcxY2UzZTNjZDlhMmVjMTc0YjE0MzYuLmM1ZDM2NzJmMThhMTVlNDI4Y2VjNmRhNDU4ZTNjOWMw
NTA3NmUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRl
eHRPcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0
T3B0aW9ucy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6
SW5zZXJ0VGV4dE9wdGlvbnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2UKICAg
ICBlbmNvZGVyIDw8IG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOwogfQogCi1PcHRp
b25hbDxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPiBBcmd1bWVudENvZGVyPFdlYktpdDo6SW5z
ZXJ0VGV4dE9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRl
eHRPcHRpb25zPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5y
ZWdpc3RlclVuZG9Hcm91cCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9JbnNlcnRUZXh0T3B0aW9ucy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0
VGV4dE9wdGlvbnMuaAppbmRleCA2MzZlOTA0ZTMzMjk5NjQ3YTRkOTRjNzc0MzI3YzU4ZjZjZjgy
YzM2Li43MmZmZDM1MmZlNzNhM2E2NTQyNDQ2NjFhYTdiOGEyMDUwOTA0MDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmgKQEAgLTQzLDYgKzQz
LDYgQEAgc3RydWN0IEluc2VydFRleHRPcHRpb25zIHsKIG5hbWVzcGFjZSBJUEMgewogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJLaXQ6Okluc2VydFRleHRP
cHRpb25zJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Mb2FkUGFyYW1ldGVyc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvTG9hZFBhcmFtZXRlcnNDb2NvYS5tbQppbmRleCA2ZmY4Mzc4ZGJi
NzQ4ZjNkOTAwM2QwYzNiNzgwMWY1YTRiNDUxNmMzLi5lMjYzZmE4M2ExYTM2OGRmYjE4YTBmYTY5
NmQ5MWY0MzdhY2Q2ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9M
b2FkUGFyYW1ldGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xv
YWRQYXJhbWV0ZXJzQ29jb2EubW0KQEAgLTQ5LDIwICs0OSwyMCBAQCBib29sIExvYWRQYXJhbWV0
ZXJzOjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJz
JiBwYXJhbQogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcGFyYW1ldGVycy5kYXRhRGV0
ZWN0aW9uQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVu
c2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29k
ZXIgPj4gbmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICgh
bmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhh
bmRsZXMgPSBXVEZNb3ZlKCpuZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMp
OwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBjb250
ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29udGVudEZpbHRlckV4
dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpjb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZyb250Ym9hcmRT
ZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogICAg
IGlmICghZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQppbmRleCAxMTBjM2YxZmQyYjBjOGZhMzU0YTVhNzMzMzRjZDVhYjljMDIyNzZh
Li5jYTM3ODBiYzg2ZjljMGQ2MjA4ODI3MjJhZDkzMmMzZmQzMzMyNTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC00
MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2FuZGJveEV4dGVuc2lvbklt
cGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
IGF1ZGl0VG9rZW4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpG
bGFncz4gZmxhZ3MgPSBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hh
ciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0
ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkK
ICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1w
bCB7IG5ldyBTYW5kYm94RXh0ZW5zaW9uSW1wbChwYXRoLCB0eXBlLCBhdWRpdFRva2VuLCBmbGFn
cykgfTsKICAgICAgICAgaWYgKCFpbXBsLT5tX3Rva2VuKQpAQCAtODksNyArODksNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNoYXIqIHNhbmRib3hFeHRlbnNpb25Gb3JUeXBl
KGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZs
YWdzPiBmbGFncykKKyAgICBjaGFyKiBzYW5kYm94RXh0ZW5zaW9uRm9yVHlwZShjb25zdCBjaGFy
KiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBm
bGFncykKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGV4dGVuc2lvbkZsYWdzID0gMDsKICAgICAg
ICAgaWYgKGZsYWdzICYgU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6Ok5vUmVwb3J0KQpAQCAtMTE5
LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTYW5kYm94RXh0
ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUs
IE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxTYW5kYm94RXh0
ZW5zaW9uOjpGbGFncz4gZmxhZ3MpCisgICAgU2FuZGJveEV4dGVuc2lvbkltcGwoY29uc3QgY2hh
ciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4g
ZmxhZ3MpCiAgICAgICAgIDogbV90b2tlbiB7IHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKHBhdGgs
IHR5cGUsIGF1ZGl0VG9rZW4sIGZsYWdzKSB9CiAgICAgewogICAgIH0KQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBtX3NhbmRib3hFeHRlbnNpb24gPSAwOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4g
T3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YVJlZmVyZW5jZSkpCkBAIC0yMTksMTYgKzIxOSwxNiBAQCB2b2lkIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
ICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXpl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgaGFuZGxlczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyAr
K2kpIHsKLSAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7
CiAgICAgICAgIGRlY29kZXIgPj4gaGFuZGxlOwogICAgICAgICBpZiAoIWhhbmRsZSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJh
bCBleHRlbnNpb25DbGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRsZSwgT3B0aW9uU2V0
PEZsYWdzPiBmbGFncykKK2Jvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsK
ICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogICAgIApAQCAtMzkxLDcg
KzM5MSw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChBU0NJSUxpdGVyYWwgc2VydmljZSwgT3B0aW9uYWw8CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywg
T3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFn
cykKK1NhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNl
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKQogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZp
Y2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IEFTQ0lJTGl0ZXJhbCYsIEhhbmRsZSYpPihbYXVkaXRU
b2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIHNlcnZpY2UsIEhhbmRsZSYgaGFuZGxl
KSB7CiAgICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBoYW5kbGUsIGZsYWdzKSkgewpAQCAtNDE1LDcgKzQx
NSw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRU
b2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihB
U0NJSUxpdGVyYWwgaW9LaXRDbGFzcywgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCitib29sIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFs
IGlvS2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFu
ZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiAgICAgQVNTRVJUKCFoYW5k
bGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIApAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVy
YWwgaW9LaXRDbGFzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0
ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBPcHRpb25h
bDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQorU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tp
dENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykKIHsKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNl
cyhpb2tpdENsYXNzZXMsIEZ1bmN0aW9uPGJvb2woY29uc3QgQVNDSUlMaXRlcmFsJiwgSGFuZGxl
Jik+KFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcywg
SGFuZGxlJiBoYW5kbGUpIHsKICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGhhbmRs
ZSwgZmxhZ3MpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRl
dmljZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmlu
ZGV4IDQ1NzZiMWY3ZmUxYWM2ZTE0ZjkxMGE4NDU4NTJkZTRkYTY1YTllNjAuLjk1ODdhMmNlZjJl
YmVlZGFmM2RjZGIwYmZjMzFiODBjZTgwZWIwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlSW5mby5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBYUkRldmljZUluZm8g
ewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CiAKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8WFJE
ZXZpY2VJbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8WFJEZXZpY2VJbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2
aWNlSW5mby5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQpp
bmRleCBiNzY3M2JkMjdlZjAwOTdkNjEwNTAzMzk3ZWQ5MjMwZDQ1NjJlYTU4Li5jZjA0MWRiOTE5
MmJkNTc2MGY5NjU3ZWUzZDFjYmVkN2M4YmIxM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgWFJEZXZpY2VJbmZv
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaWRl
bnRpZmllciA8PCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9S
ZW5kZXJpbmcgPDwgZmVhdHVyZXM7CiB9CiAKLU9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZp
Y2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlUHJveHkuaAppbmRleCA4MDFjZTE4NTU0ZDFkZTlmZTIwYzAyZTBhMzI3YTFiNDgw
YjYxNTBmLi5iZGE2OTQ5MGJlMGU1NmFjYmQzZTdkOGNkZDgxMDhlZjVlZDg1MzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6
UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KICAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2
aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1l
Q2FsbGJhY2smJikgZmluYWw7Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+
IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJv
amVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRl
TGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIHN1
Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KaW5kZXggNmJhMDJm
YTA0ZDljMTBkMjdhYjI4NDQ0ZGM0MTE0MWMwZWJjZmU5ZS4uNDcwZDQwZjkzMTkyODI1YzNlMGYx
OGZmZWVhNjZmYTUyNmU5OGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvWFJEZXZpY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRl
dmljZVByb3h5Lm1tCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgWFJEZXZpY2VQcm94eTo6cmVxdWVz
dEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsCiAg
ICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
LU9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVM
YXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBo
YSkKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6
OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBi
b29sIGFscGhhKQogewogICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRl
TGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCUmVzdWx0LmNwcAppbmRleCBmZWM2NGMzNzA5NzNiZWE5ZjkzNjBhY2FkYmE1YzQ2NTcy
YTJkMTczLi5kMDY0ZGFlMWE1OWQ1ZjhlZTVhY2IxZTBjZmRhYjFjMjAxMGM2YTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlJlc3Vs
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJSZXN1bHQuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAgdm9pZCBXZWJJREJSZXN1bHQ6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgV2ViSURCUmVzdWx0OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJJREJSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpJREJSZXN1bHREYXRhPiByZXN1bHREYXRhOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6SURCUmVzdWx0RGF0YT4gcmVzdWx0RGF0YTsKICAgICBkZWNvZGVyID4+
IHJlc3VsdERhdGE7CiAgICAgaWYgKCFyZXN1bHREYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzdWx0Lm1fcmVzdWx0RGF0YSA9IFdURk1vdmUoKnJlc3VsdERhdGEpOwogCi0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGhhbmRsZXM7CisgICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKICAgICBk
ZWNvZGVyID4+IGhhbmRsZXM7CiAgICAgaWYgKCFoYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcAppbmRleCBm
NjA2ZmY0YjgxNGVhNjk0ZDliMjczZGY0YTNjZDQ0OTZiYjE4ZThhLi42YTVjOGU3NjljNjc2MWI0
OTc1ZDgwNDI3MDFiYmZmOWU4OTUwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RlYnVn
Z2FibGVJbmZvRGF0YS5jcHAKQEAgLTUxLDI5ICs1MSwyOSBAQCB2b2lkIERlYnVnZ2FibGVJbmZv
RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IHRhcmdldElzU2ltdWxhdG9yOwogfQogCi1PcHRpb25hbDxEZWJ1Z2dhYmxlSW5mb0RhdGE+IERl
YnVnZ2FibGVJbmZvRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBEZWJ1Z2dhYmxlSW5mb0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpEZWJ1Z2dhYmxl
VHlwZT4gZGVidWdnYWJsZVR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVn
Z2FibGVUeXBlPiBkZWJ1Z2dhYmxlVHlwZTsKICAgICBkZWNvZGVyID4+IGRlYnVnZ2FibGVUeXBl
OwogICAgIGlmICghZGVidWdnYWJsZVR5cGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRhcmdldFBsYXRmb3JtTmFtZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gdGFyZ2V0UGxhdGZvcm1OYW1lOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0
UGxhdGZvcm1OYW1lOwogICAgIGlmICghdGFyZ2V0UGxhdGZvcm1OYW1lKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRCdWlsZFZlcnNp
b247CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldEJ1aWxkVmVyc2lvbjsKICAgICBk
ZWNvZGVyID4+IHRhcmdldEJ1aWxkVmVyc2lvbjsKICAgICBpZiAoIXRhcmdldEJ1aWxkVmVyc2lv
bikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4g
dGFyZ2V0UHJvZHVjdFZlcnNpb247CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldFBy
b2R1Y3RWZXJzaW9uOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0UHJvZHVjdFZlcnNpb247CiAgICAg
aWYgKCF0YXJnZXRQcm9kdWN0VmVyc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPGJvb2w+IHRhcmdldElzU2ltdWxhdG9yOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gdGFyZ2V0SXNTaW11bGF0b3I7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRJc1NpbXVs
YXRvcjsKICAgICBpZiAoIXRhcmdldElzU2ltdWxhdG9yKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9E
YXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAppbmRleCA3
YWI3NTdhMzhhYmM4YzdjYzA0ZjZjYWU5YTJiODQzNGVhMDI3ODYxLi5iNjk2YmQzODNmYjQyZjI2
NDg3NzQwY2MyZTMyM2NlYTMzZTZhMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dh
YmxlSW5mb0RhdGEuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRGVidWdnYWJsZUluZm9EYXRh
IHsKICAgICBzdGF0aWMgRGVidWdnYWJsZUluZm9EYXRhIGVtcHR5KCk7CiAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RGVidWdnYWJs
ZUluZm9EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RGVidWdnYWJsZUluZm9EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3Vt
ZW50RWRpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGlu
Z0NvbnRleHQuaAppbmRleCA5YjlmZDYwYzMxMDQwOWU1NTFkNDczNzI5YWEyMDdkNWFhMTMzNGFm
Li5lMWI1YWExYmE1NWRiZjNlZGVjOTRhNzM2NWM0MTJhZWZkNzdiNjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCkBAIC01OCw3ICs1OCw3IEBA
IHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCB7CiAKICAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgcmVjdDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiB0
ZXh0SW5wdXRDb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+IHRleHRJbnB1dENvbnRleHQ7CiB9OwogCiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4
dCB7CkBAIC05MCwyMiArOTAsMjIgQEAgc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQgewog
bmFtZXNwYWNlIElQQyB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2UmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5n
ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQ6OlRleHRSZWN0QW5kUmFuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4dFJlY3RBbmRSYW5nZSYp
OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRl
eHRSZWN0QW5kUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCYpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250
ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0PiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHRSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRp
dGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250
ZXh0Lm1tCmluZGV4IDQxYjkyYWI0NjZiMzYwYWZhYWJiMTAyNjJhYTAyZDY1YjE2ODMyNWEuLjQ5
MDEyZjg0MTlhZjVmNWMzNGMwYTI4NWQwMzU0M2YwOWMzZmVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQpAQCAtODAsNyArODAsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZAogICAgIGVuY29kZXIgPDwgcmFuZ2UubGVuZ3RoOwogfQog
Ci1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiBBcmd1bWVu
dENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250
ZXh0OjpSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6
OlJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVu
dEVkaXRpbmdDb250ZXh0OjpSYW5nZSByYW5nZTsKIApAQCAtOTgsMTQgKzk4LDE0IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5k
UmFuZ2U+OjplbmNvZGUoRW5jCiAgICAgZW5jb2RlciA8PCByZWN0LnJhbmdlOwogfQogCi1PcHRp
b25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IEFy
Z3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJh
bmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4dFJlY3RBbmRSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRl
eHRSZWN0QW5kUmFuZ2UgcmVjdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjdC5yZWN0
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gcmFuZ2U7CiAgICAgZGVjb2Rl
ciA+PiByYW5nZTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTI3LDQxICsxMjcsNDEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1l
bnRFZGl0aW5nQ29udGV4dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb24KICAgICBlbmNv
ZGVyIDw8IGNvbnRleHQudGV4dFJlY3RzOwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvbnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250
ZXh0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQgY29udGV4dDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZvcmU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpB
dHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0QmVmb3JlOwogICAgIGRlY29kZXIgPj4gY29udGV4dEJl
Zm9yZTsKICAgICBpZiAoIWNvbnRleHRCZWZvcmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlID0gKmNvbnRleHRCZWZvcmU7CiAKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CiAgICAg
ZGVjb2RlciA+PiBzZWxlY3RlZFRleHQ7CiAgICAgaWYgKCFzZWxlY3RlZFRleHQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSAqc2VsZWN0
ZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4
dEFmdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29u
dGV4dEFmdGVyOwogICAgIGRlY29kZXIgPj4gY29udGV4dEFmdGVyOwogICAgIGlmICghY29udGV4
dEFmdGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4
dEFmdGVyID0gKmNvbnRleHRBZnRlcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmc+IG1hcmtlZFRleHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nPiBtYXJrZWRUZXh0OwogICAgIGRlY29kZXIgPj4gbWFya2VkVGV4dDsKICAgICBp
ZiAoIW1hcmtlZFRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4
dC5tYXJrZWRUZXh0ID0gKm1hcmtlZFRleHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nPiBhbm5vdGF0ZWRUZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZz4gYW5ub3RhdGVkVGV4dDsKICAgICBkZWNvZGVyID4+IGFubm90YXRl
ZFRleHQ7CiAgICAgaWYgKCFhbm5vdGF0ZWRUZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNvbnRleHQuYW5ub3RhdGVkVGV4dCA9ICphbm5vdGF0ZWRUZXh0OwogCi0gICAg
T3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gc2VsZWN0ZWRS
YW5nZUluTWFya2VkVGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0
aW5nQ29udGV4dDo6UmFuZ2U+IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ7CiAgICAgZGVjb2Rl
ciA+PiBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0OwogICAgIGlmICghc2VsZWN0ZWRSYW5nZUlu
TWFya2VkVGV4dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4Miw3ICsxODIs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZAogICAgIGVuY29kZXIgPDwgcmVxdWVzdC50ZXh0
SW5wdXRDb250ZXh0OwogfQogCi1PcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHRSZXF1ZXN0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJl
cXVlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViS2l0OjpE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0OwogCkBAIC0x
OTgsNyArMTk4LDcgQEAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWQKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlcXVlc3QucmVjdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4+IG9wdGlvbmFsVGV4
dElucHV0Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVjb2RlciA+
PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJbnB1dENv
bnRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRp
dGluZ1JhbmdlLmNwcAppbmRleCBjNDQ3OWUxYTYwNDEzODg5NjQ5OWU5NDkxMWU0MTNjZDQzYTli
ZDdkLi5kNjNkYzUzOWI0N2ZkMTJmNmQyZDkyMTdjY2U3NjhiYzY5NjNhZWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6
OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRp
bmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIGJhc2UpCitzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUm
IGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgRWRpdGluZ1JhbmdlSXNS
ZWxhdGl2ZVRvIGJhc2UpCiB7CiAgICAgQVNTRVJUKGVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBu
b3RGb3VuZCk7CiAgICAgV2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgeyBlZGl0aW5nUmFu
Z2UubG9jYXRpb24sIGVkaXRpbmdSYW5nZS5sZW5ndGggfTsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3Jl
OjpGcmFtZSYgZnJhbWUsIGNvbnMKICAgICByZXR1cm4gV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3Rl
clJhbmdlKHsgV1RGTW92ZSgqcGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCBy
YW5nZSk7CiB9CiAKLUVkaXRpbmdSYW5nZSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShXZWJDb3Jl
OjpGcmFtZSYgZnJhbWUsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFu
Z2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCitF
ZGl0aW5nUmFuZ2UgRWRpdGluZ1JhbmdlOjpmcm9tUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVkaXRp
bmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgQVNT
RVJUKGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9PSBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86
OkVkaXRhYmxlUm9vdCk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdl
YktpdDo6RWRpdGluZ1JhbmdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktp
dDoKICAgICBlbmNvZGVyIDw8IGVkaXRpbmdSYW5nZS5sZW5ndGg7CiB9CiAKLU9wdGlvbmFsPFdl
YktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1Jh
bmdlPiBBcmd1bWVudENvZGVyPFdlYktpdDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgZWRpdGluZ1JhbmdlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCmluZGV4IGYxOWI0NDNmMGRjNzE5YTc0ODM1Yzc4
Yzc0YjE2NTNkOTQxMWExNDAuLjIwNWZmMjYxNzcwYjM1ZWJkNWI5NGY4OWM5NzU4MDAwZmQ0OGFi
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5oCkBAIC00MSw3ICs0MSw3IEBAIGVu
dW0gY2xhc3MgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvIDogdWludDhfdCB7CiAgICAgUGFyYWdy
YXBoLAogfTsKIAotLy8gRklYTUU6IFJlcGxhY2UgdGhpcyB3aXRoIE9wdGlvbmFsPENoYXJhY3Rl
clJhbmdlPi4KKy8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgd2l0aCBzdGQ6Om9wdGlvbmFsPENoYXJh
Y3RlclJhbmdlPi4KIHN0cnVjdCBFZGl0aW5nUmFuZ2UgewogICAgIEVkaXRpbmdSYW5nZSgpCiAg
ICAgICAgIDogbG9jYXRpb24obm90Rm91bmQpCkBAIC01OCw4ICs1OCw4IEBAIHN0cnVjdCBFZGl0
aW5nUmFuZ2UgewogICAgIC8vIChub3RGb3VuZCwgMCkgaXMgbm90YWJseSB2YWxpZC4KICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbiArIGxlbmd0aCA+PSBsb2NhdGlv
bjsgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiB0b1Jhbmdl
KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgRWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvID0gRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOwotICAgIHN0
YXRpYyBFZGl0aW5nUmFuZ2UgZnJvbVJhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRp
dGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiB0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgRWRpdGluZ1JhbmdlJiwgRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gRWRpdGluZ1Jhbmdl
SXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QpOworICAgIHN0YXRpYyBFZGl0aW5nUmFuZ2UgZnJv
bVJhbmdlKFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mLCBFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSBFZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG86OkVkaXRhYmxlUm9vdCk7CiAKICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogICAgIEVkaXRp
bmdSYW5nZShOU1JhbmdlIHJhbmdlKQpAQCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgRWRpdGluZ1Jh
bmdlIHsKIG5hbWVzcGFjZSBJUEMgewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6OkVkaXRpbmdSYW5nZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViS2l0
OjpFZGl0aW5nUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CiB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggODlmZWRlOTdiODA2ZjIzNzMxMWJkY2Y2
NDQ5YjkzNjNhNDIwMTVhNS4uZmRkODdlZjhmMmIzMDI3MjM3NDczMTI1ZjQxMmFmZjM0ZmMzNTc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBA
IGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAK
LSAgICBPcHRpb25hbDxPcHRpb25hbDxGb250QXR0cmlidXRlcz4+IG9wdGlvbmFsRm9udEF0dHJp
YnV0ZXM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPj4g
b3B0aW9uYWxGb250QXR0cmlidXRlczsKICAgICBkZWNvZGVyID4+IG9wdGlvbmFsRm9udEF0dHJp
YnV0ZXM7CiAgICAgaWYgKCFvcHRpb25hbEZvbnRBdHRyaWJ1dGVzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBlMThmZDA3Y2ZlNjNmYTRl
ZjI5ZmE1M2U1ZjkwMGFlNWI0ZDdiYjA2Li40ODgwNTM4ZDU2NGQzMWVmMTZmOTNjOTA2N2RjODZj
Y2VhNzM4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTEzNCw3ICsxMzQs
NyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICB1aW50NjRfdCBzdXJyb3VuZGluZ0Nv
bnRleHRTZWxlY3Rpb25Qb3NpdGlvbiB7IDAgfTsKICNlbmRpZgogCi0gICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBmb250QXR0cmlidXRlczsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gZm9udEF0dHJpYnV0ZXM7CiAKICAgICAg
ICAgYm9vbCBjYW5DdXQgeyBmYWxzZSB9OwogICAgICAgICBib29sIGNhbkNvcHkgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmNwcAppbmRleCAwNzY0ZGE4YTYwZWNiYzg4N2UzNTE3MjFlZDUzODI1MTBkYWI1NzBkLi45Njkw
NjYxYjUxMzczMzI2OGIyNmRkN2Q5ZjVlODJkY2U0MDY1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcApAQCAtNDAsNyArNDAs
NyBAQCB2b2lkIE9wdGlvbkl0ZW06OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCBwYXJlbnRHcm91cElEOwogfQogCi1PcHRpb25hbDxPcHRpb25JdGVt
PiBPcHRpb25JdGVtOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxPcHRpb25JdGVtPiBPcHRpb25JdGVtOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIE9wdGlvbkl0ZW0gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5oCmluZGV4IDlkMDE2NDlkZTI5NTg1OWIyMjMwMTI5N2M4NWJiYzE5MmZjZWY0NzIuLjRk
YjhlMzUyNDhiODg5MGYxYzIxOWI4YWJjOGFmMTAwMjZmOGY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmgKQEAgLTg0LDcgKzg0LDcg
QEAgc3RydWN0IE9wdGlvbkl0ZW0gewogICAgIGludCBwYXJlbnRHcm91cElEIHsgMCB9OwogCiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PE9wdGlvbkl0ZW0+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxPcHRpb25JdGVtPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiB9OwogCiB1c2luZyBGb2N1
c2VkRWxlbWVudElkZW50aWZpZXIgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJ
bmZvRGF0YS5jcHAKaW5kZXggOGRjZjdkNzQ3YjQwODI3NDlmNTE3ZDg5YmMyMTgzYWY5ZThiNDYw
Ni4uODUxNmY2MjA5MjM1MjE5MjU5OWQzZTJmZmIwNDNmYjY1MTNkODgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTM5LDI5ICszOSwyOSBAQCB2b2lkIEZyYW1l
SW5mb0RhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBwYXJlbnRGcmFtZUlEOwogfQogCi1PcHRpb25hbDxGcmFtZUluZm9EYXRhPiBGcmFtZUlu
Zm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGcmFt
ZUluZm9EYXRhPiBGcmFtZUluZm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPGJvb2w+IGlzTWFpbkZyYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNNYWluRnJhbWU7CiAgICAgZGVjb2RlciA+PiBpc01haW5GcmFtZTsKICAgICBpZiAoIWlz
TWFpbkZyYW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0OwogICAgIGRlY29kZXIgPj4gcmVxdWVzdDsK
ICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdp
bjsKICAgICBkZWNvZGVyID4+IHNlY3VyaXR5T3JpZ2luOwogICAgIGlmICghc2VjdXJpdHlPcmln
aW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRl
Y29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+PiBwYXJlbnRGcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFy
ZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRh
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmgKaW5kZXggZmViODAwNDU1
YTdmNDNjNDQxNWU1ODBlYjk2ZjFlYjhlMDVjZDQ5My4uZjQ5ZjNhMWRlNDEzMDIzMWVhMTE0NmNm
MjI5NThlOTg3MDg5MmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJ
bmZvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaApAQCAt
MzgsMTMgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRnJhbWVJbmZvRGF0
YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPEZyYW1lSW5mb0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxGcmFtZUluZm9EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAg
ICBib29sIGlzTWFpbkZyYW1lIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdDsKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmln
aW47Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZVRyZWVOb2RlRGF0YS5oCmluZGV4IDliN2ZiNjUy
MTlkOWY5NDc2NGJhNzFkN2I3Y2QxMDcxOTdmN2FhN2UuLmYzOTFmODcxOTc3ZTAzNjhmODIyNTg2
YmQ1NDg5NjNlYjRmZjhiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1l
VHJlZU5vZGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURh
dGEuaApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0cnVjdCBGcmFtZVRyZWVOb2RlRGF0YSB7CiAgICAg
ICAgIGVuY29kZXIgPDwgY2hpbGRyZW47CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZy
YW1lVHJlZU5vZGVEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gaW5mbzsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxGcmFtZUluZm9EYXRhPiBpbmZvOwogICAgICAgICBkZWNvZGVy
ID4+IGluZm87CiAgICAgICAgIGlmICghaW5mbykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURh
dGE+PiBjaGlsZHJlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9k
ZURhdGE+PiBjaGlsZHJlbjsKICAgICAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICAgICAg
aWYgKCFjaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5o
CmluZGV4IGJiZDIwZTJmNzhjNzg0N2VlOTVkODFkZDNmOTI3Njk2MGE5NDQzN2EuLmYwY2JhZWU5
ZWFmYmFiYTc2NzQ1ZDA4MDU2ZDM1MDFjMjMxNWMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCkBAIC01MSwyMiAr
NTEsMjIgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYK
ICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0
ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKICAgICB7CiAjaWYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQotICAgICAgICBP
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKICAg
ICAgICAgZGVjb2RlciA+PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbjsKICAgICAgICAgaWYgKCF3
ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKIAotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGVMYW5n
dWFnZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlTGFu
Z3VhZ2VzOwogICAgICAgICBkZWNvZGVyID4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBp
ZiAoIW92ZXJyaWRlTGFuZ3VhZ2VzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGln
bm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaWdu
b3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOwogICAgICAgICBpZiAoIWlnbm9yZUludmFsaWRN
ZXNzYWdlRm9yVGVzdGluZykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1
bWVudHMuaAppbmRleCBjNWI3ZDE3MTg2Yjg3MjliY2M5NWE4MDAzNDI1YzY1N2E0MjMwYWRiLi42
ZDQyYmViMTAyNmI2MjYxMmY3ZWQxN2JiMTU3NjUwYzNjN2ZjNGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRz
IHsKICAgICBHUFVQcm9jZXNzV2FrZXVwUmVhc29uIHJlYXNvbiB7IEdQVVByb2Nlc3NXYWtldXBS
ZWFzb246OlVuc3BlY2lmaWVkIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTU3LDI0ICs1NywyNCBAQCB2b2lkIEdQVVBy
b2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPEdQVVByb2Nlc3NXYWtl
dXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNz
YWdlQXJndW1lbnRzPiBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50czo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyPiBpdGVtQnVmZmVySWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gaXRlbUJ1ZmZl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBp
ZiAoIWl0ZW1CdWZmZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBvZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVy
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1
ZmZlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxHUFVQcm9jZXNzV2FrZXVwUmVhc29uPiByZWFzb247CisgICAgc3RkOjpvcHRpb25hbDxH
UFVQcm9jZXNzV2FrZXVwUmVhc29uPiByZWFzb247CiAgICAgZGVjb2RlciA+PiByZWFzb247CiAg
ICAgaWYgKCFyZWFzb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCmluZGV4IDQ3NGE1NDNkMjZiZmM5
ZWFkYmIxM2JlNGUwNmIyZjE5YTRjYzc3ODkuLmZlY2Q2MThlNTJlOWJlNGVhZDg4ZWMwNzkwMjEz
MGM0YWIxMzY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2Ft
ZXBhZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERh
dGEuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgR2FtZXBhZERhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2luZGV4IDw8IG1faWQgPDwg
bV9tYXBwaW5nIDw8IG1fYXhpc1ZhbHVlcyA8PCBtX2J1dHRvblZhbHVlcyA8PCBtX2xhc3RVcGRh
dGVUaW1lOwogfQogCi1PcHRpb25hbDxHYW1lcGFkRGF0YT4gR2FtZXBhZERhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdhbWVwYWREYXRhPiBHYW1lcGFk
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBHYW1lcGFkRGF0YSBk
YXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2lzTnVsbCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmgKaW5kZXggNzk5MmMxODBhNTMwOWFhYTNi
MjA2NTkwMTI0MmEyYTlkZDJiYzQ4MS4uMWFiYmIzOGQ0MTczOTBlOTczOGMxOTFkMmQwZWM4OTcz
NDE5NWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFk
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuaApA
QCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgR2FtZXBhZERhdGEodW5zaWduZWQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgbWFwcGluZywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNoYXJlZEdhbWVwYWRWYWx1ZT4mIGF4aXNWYWx1ZXMsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTaGFyZWRHYW1lcGFkVmFsdWU+JiBidXR0b25WYWx1ZXMsIE1vbm90b25pY1RpbWUgbGFz
dFVwZGF0ZVRpbWUpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPEdhbWVwYWREYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2FtZXBhZERhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDlmMGY3MzNhMDBhYjg2MWM4
Yzc2NTJmNmQ1MGQxMGM4YTU2NzRjY2YuLmUzZGQ4MDFmZDI0MTlmZDhmOTZiMzE1ODM4NmNlMTVi
OTMzODE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAKICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKICAg
ICAgICAgLy8gRm9ybURhdGFSZWZlcmVuY2UgZW5jb2RlciAvIGRlY29kZXIgdGFrZXMgY2FyZSBv
ZiBwYXNzaW5nIGFuZCBjb25zdW1pbmcgdGhlIG5lZWRlZCBzYW5kYm94IGV4dGVuc2lvbnMuCi0g
ICAgICAgIE9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+IGZvcm1EYXRhUmVmZXJlbmNl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+IGZvcm1EYXRh
UmVmZXJlbmNlOwogICAgICAgICBkZWNvZGVyID4+IGZvcm1EYXRhUmVmZXJlbmNlOwogICAgICAg
ICBpZiAoIWZvcm1EYXRhUmVmZXJlbmNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODMsNyArODMsNyBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICAgICAgZGF0YS5yZXF1ZXN0LnNldEhU
VFBCb2R5KGZvcm1EYXRhUmVmZXJlbmNlLT50YWtlRGF0YSgpKTsKICAgICB9CiAKLSAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+PiB3ZWJzaXRlUG9s
aWNpZXM7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+PiB3ZWJzaXRlUG9saWNpZXM7CiAgICAgZGVjb2RlciA+PiB3ZWJzaXRlUG9saWNpZXM7CiAg
ICAgaWYgKCF3ZWJzaXRlUG9saWNpZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyOCw3
ICsxMjgsNyBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEu
bG9ja0JhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlv
bmFsPFN0cmluZz4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OworICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZGVjb2Rl
ciA+PiBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgaWYgKCFjbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IGRlNTQ5ZTg0NTQ1MGIxOGQ1NGY1NjU5MTNhMzk1
NDNjMTczNzMwNjkuLjJmMGRmZDIzMWY1ZWU2M2FmODUyNzg3MmU1OGIxMzhkYTJmZTdhYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNjIsNyArNjIsNyBAQCBzdHJ1
Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFN0cmluZyB1bnJlYWNoYWJsZVVSTFN0cmluZzsKICAg
ICBTdHJpbmcgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7CiAKLSAgICBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXM7CiAKICAgICBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9Owog
ICAgIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHsgZmFsc2UgfTsKQEAgLTcwLDE1
ICs3MCwxNSBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0
b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29u
dGV4dDsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBuZXR3b3JrRXh0ZW5zaW9u
U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250ZW50RmlsdGVyRXh0ZW5zaW9u
SGFuZGxlOwotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZnJvbnRib2Fy
ZFNlcnZpY2VFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXRpdmVXZWJLZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJL
ZXlib2FyZEV2ZW50LmgKaW5kZXggZmQyYjU1ZjQwZmRkM2Q4MmQ2ZDY5NDdkYzMzYWQzMWYyNGY0
YzFjNy4uZWU4Y2FjMWM5ODAwMzljNGEzNmRlNTUwMWFiN2YxMzVlNzEwZDA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaApAQCAtNjgsMTQgKzY4
LDE0IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KEdka0V2ZW50KiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mJiBjb21t
YW5kcyk7Ci0gICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBTdHJpbmcmLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYpOworICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgU3RyaW5nJiwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBz
dGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dChUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIGNvZGUsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFs
S2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1h
bmRzLCBib29sIGlzS2V5cGFkLCBPcHRpb25TZXQ8TW9kaWZpZXI+KTsKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZW51bSBjbGFzcyBIYW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICosIEhh
bmRsZWRCeUlucHV0TWV0aG9kKTsKICNlbGlmIFVTRShMSUJXUEUpCiAgICAgZW51bSBjbGFzcyBI
YW5kbGVkQnlJbnB1dE1ldGhvZCA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5n
JiwgSGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJik7CisgICAgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3Qg
U3RyaW5nJiwgSGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+
JiYpOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoSFdO
RCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgVmVjdG9yPE1TRz4mJiBwZW5kaW5nQ2hh
ckV2ZW50cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2
ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZl
bnQuaAppbmRleCA5YjhkZDQyYjJlM2NjMmU2ZjZjMjRiMjEwNGM2ODJjYjhmOThlYTczLi4wMDE1
NThkZDU4ZjRkODVmMzYwZDU3MTFjYWEwM2RiMzM4ODkwMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCkBAIC02NCw5ICs2NCw5IEBAIHB1YmxpYzoKICAg
ICBOYXRpdmVXZWJNb3VzZUV2ZW50KE5TRXZlbnQgKiwgTlNFdmVudCAqbGFzdFByZXNzdXJlRXZl
bnQsIE5TVmlldyAqKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJNb3VzZUV2
ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
KEdka0V2ZW50KiwgaW50LCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKLSAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBpbnQs
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
VHlwZSwgQnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
aW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBPcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFNpemU+LCBXZWJDb3JlOjpQb2ludGVySUQsIGNvbnN0IFN0cmluZyYgcG9p
bnRlclR5cGUpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChH
ZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0U2l6ZT4pOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291
bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0U2l6ZT4sIFdlYkNvcmU6OlBvaW50ZXJJRCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlw
ZSk7CiAgICAgZXhwbGljaXQgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOYXRpdmVXZWJNb3VzZUV2
ZW50KDo6V2ViRXZlbnQgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4uaAppbmRleCBjZmU4ZjNlMzRmM2E4OTdmMjhjMTYyZjBhNjdmYjY2
ZDc3YTE1Y2UzLi5lMzRhYzVlNTdmNDExZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgK
QEAgLTcwLDI0ICs3MCwyNCBAQCBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ewogICAgICAgICBlbmNvZGVyIDw8IGNvbnRleHREYXRhOwogICAgIH0KIAotICAgIHN0YXRpYyBP
cHRpb25hbDxBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAg
IE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAg
ICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAg
ICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFw
cEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZE5vbkFw
cEJvdW5kUmVxdWVzdFRlc3RpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAg
IGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAgIGlmICghZGlkUGVyZm9y
bVNvZnRVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHRE
YXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4
dERvbWFpbj4+IGNvbnRleHREYXRhOwogICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRhOwog
ICAgICAgICBpZiAoIWNvbnRleHREYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAppbmRl
eCA4MDQxNDE0ZWI1MDBiNmRjMDM2NWM1OWU4NzMxYzAwZDQzNTljNThlLi5mYTBjYTM3NGJlNWJk
YTg0NTA0NGQzM2JjYTFlM2YzZGRkNDJiZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
TmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmF2aWdhdGlv
bkFjdGlvbkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIH0KIAotT3B0aW9uYWw8TmF2aWdhdGlv
bkFjdGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFj
dGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6
TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShu
YXZpZ2F0aW9uVHlwZSkpCkBAIC03NSwxMiArNzUsMTIgQEAgT3B0aW9uYWw8TmF2aWdhdGlvbkFj
dGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bnRoZXRpY0NsaWNrVHlwZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHVzZXJH
ZXN0dXJlVG9rZW5JZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVzZXJH
ZXN0dXJlVG9rZW5JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXI7CiAgICAgaWYgKCF1c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBjYW5IYW5kbGVS
ZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FuSGFuZGxlUmVxdWVzdDsKICAgICBk
ZWNvZGVyID4+IGNhbkhhbmRsZVJlcXVlc3Q7CiAgICAgaWYgKCFjYW5IYW5kbGVSZXF1ZXN0KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODksNyArODksNyBAQCBPcHRpb25hbDxO
YXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8U3RyaW5nPiBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgZGVjb2RlciA+PiBkb3dubG9hZEF0dHJpYnV0ZTsK
ICAgICBpZiAoIWRvd25sb2FkQXR0cmlidXRlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtOTgsMzcgKzk4LDM3IEBAIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZp
Z2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBpc1JlZGly
ZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNSZWRpcmVjdDsKICAgICBkZWNvZGVyID4+
IGlzUmVkaXJlY3Q7CiAgICAgaWYgKCFpc1JlZGlyZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwog
ICAgIGRlY29kZXIgPj4gdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGlmICghdHJl
YXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gaGFzT3BlbmVkRnJhbWVzOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaGFzT3BlbmVkRnJhbWVzOwogICAgIGRlY29kZXIgPj4gaGFzT3BlbmVkRnJhbWVzOwog
ICAgIGlmICghaGFzT3BlbmVkRnJhbWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gb3BlbmVkQnlET01XaXRoT3BlbmVyOworICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gb3BlbmVkQnlET01XaXRoT3BlbmVyOwogICAgIGRlY29kZXIgPj4gb3BlbmVk
QnlET01XaXRoT3BlbmVyOwogICAgIGlmICghb3BlbmVkQnlET01XaXRoT3BlbmVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiByZXF1ZXN0ZXJPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IHJlcXVlc3Rlck9yaWdpbjsKICAgICBkZWNvZGVyID4+IHJlcXVl
c3Rlck9yaWdpbjsKICAgICBpZiAoIXJlcXVlc3Rlck9yaWdpbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI+PiB0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyPj4gdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRh
cmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCF0YXJnZXRCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4+IHNvdXJj
ZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiBzb3VyY2VCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllcjsKICAgICBpZiAoIXNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNDEsMTIgKzE0MSwxMiBAQCBPcHRpb25hbDxO
YXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9ja0JhY2tGb3J3YXJkTGlz
dCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+
IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGRlY29kZXIgPj4gY2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8
T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBkZWNv
ZGVyID4+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgIGlmICghcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAppbmRleCAzMTlmMmY5ODJmYzUwYWIzNDBiNGM2
Mjg1Zjc5MWUwZTRlNTNiYzYxLi4yOTE2MTk3ZWIxY2JlMjI2YTY1YjUwNjRiMzE5OWQ3MjNlOWY1
NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgKQEAg
LTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25U
eXBlIHsgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6Ok90aGVyIH07CiAgICAgT3B0aW9uU2V0PFdl
YkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzOwpAQCAtNTcsMTIgKzU3LDEyIEBAIHN0cnVjdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgYm9vbCBoYXNPcGVuZWRGcmFtZXMgeyBmYWxzZSB9
OwogICAgIGJvb2wgb3BlbmVkQnlET01XaXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2luOwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4g
c291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyPiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkxvY2tI
aXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2Vi
Q29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6
TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAgICBXVEY6OlN0cmluZyBjbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3Rvcnk7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHByaXZhdGVDbGlja01lYXN1cmVtZW50Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHAKaW5kZXggM2U0MjcwZGNhZjMwZjg2MzllZmUxMjYyNTM2YmE5ZTZmNWRkMGI5Zi4uNWY5M2Rj
NTRjMjU2NTg3NjI5NGJkMWM2YmIxM2Q1OGZlMmQyODQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQbGF0
Zm9ybVBvcHVwTWVudURhdGEmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFBsYXRm
b3JtUG9wdXBNZW51RGF0YT4gUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IFBsYXRm
b3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0YTsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXgg
MDY2NGYyYzViMmJlZjdiZDQ3ZTJiM2Q5MjE1ZTY2NWE0MmU4MDkwNS4uMjg5NDQyZWU1MmU4ZjM0
ZmUxMTI1MjlhNDRlMWY4YzFkMDBiYThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSB7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9ybVBvcHVw
TWVudURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIEZvbnRJbmZvIGZvbnRJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKaW5kZXggMjY2ODhlOTkxN2Rl
ZTVkZGE1NjM0ODQ3NzJkMjUyZjExNGFkOWQxMS4uYTI5Yjg0YzQxNzRhNjUxOGJiNThlYzYzNGE2
Y2IxOTY4MmRmMzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
UElkZW50aWZpZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05Q
SWRlbnRpZmllckRhdGEuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTlBJZGVudGlmaWVyRGF0
YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8
PCBtX251bWJlcjsKIH0KIAotT3B0aW9uYWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVy
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TlBJZGVu
dGlmaWVyRGF0YT4gTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBOUElkZW50aWZpZXJEYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2lzU3RyaW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OUElkZW50aWZpZXJEYXRhLmgKaW5kZXggMDhlYTc0NjNmOGFhODVlZGJkYjIxMjhhZTI2YTBi
NzdkY2EyZGM4ZS4uYzRhYTI0ZjExMDE2ZmExNmNlMTljZTU0MzgwYzRkNzk0NDRmYWY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIE5QSWRlbnRpZmllciBjcmVhdGVOUElkZW50aWZp
ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAg
IHN0YXRpYyBPcHRpb25hbDxOUElkZW50aWZpZXJEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TlBJZGVudGlmaWVyRGF0YT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCmluZGV4IGUwZGViMzYwMjY4
MGI5ODRlYzVhOTBhMzRmYzRlNzhjZjBhNzM4MTQuLjNkYjkyYmRjOTQwNjdhMTJmZDY4NTJhNjE3
OTZkMWVhYWEwMTA0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMv
TlBWYXJpYW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZh
cmlhbnREYXRhLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgTlBWYXJpYW50RGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB9CiB9CiAKLU9wdGlvbmFsPE5Q
VmFyaWFudERhdGE+IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPE5QVmFyaWFudERhdGE+IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTlBWYXJpYW50RGF0YSByZXN1bHQ7CiAgICAgdWlu
dDMyX3QgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBW
YXJpYW50RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRh
LmgKaW5kZXggNjFlOTRkMjk4NWEzNTQxOTQ4ZWYwZDUwNjVhY2U3NGI1Y2JlNGYxNC4uYzU4ZTJk
NTA0YmFkOWI3NDZkNjM3NDI1NzkwNWNjZTM4ZmI3M2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRp
YyBPcHRpb25hbDxOUFZhcmlhbnREYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TlBWYXJpYW50RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
CiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lE
ZWNpc2lvbi5oCmluZGV4IDE5MDExMjIxZGNmYjVhNDNmOWJkMDNiOWRmMmUwYjg1YjE0OWUzNTAu
LmMzZTZlMGE5ZDgxOTE1NmQ2NTQyZTc1NmFlYTdmOTc1M2U1NjJmYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyIHsgfTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHN0ZDo6bnVsbG9wdCB9
OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4geyBzdGQ6Om51bGxvcHQgfTsKICAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsK
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJ
RD4gZG93bmxvYWRJRCB7IHN0ZDo6bnVsbG9wdCB9OwotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGEgeyBzdGQ6Om51bGxvcHQgfTsKLSAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgeyBz
dGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQg
eyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
IHdlYnNpdGVQb2xpY2llc0RhdGEgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSB7IHN0ZDo6
bnVsbG9wdCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNTUsMzkgKzU1LDM5IEBAIHN0cnVjdCBQb2xp
Y3lEZWNpc2lvbiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBz
dGF0aWMgT3B0aW9uYWw8UG9saWN5RGVjaXNpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvbGljeURlY2lzaW9uPiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllcj4gZGVjb2RlZElkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgZGVj
b2RlciA+PiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFkZWNvZGVkSWRlbnRpZmll
cikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAotICAgICAgICBP
cHRpb25hbDxPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4+IGRlY29kZWRJc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKICAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUFjdGlvbj4gZGVjb2RlZFBvbGljeUFjdGlv
bjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBpZiAo
IWRlY29kZWRQb2xpY3lBY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkTmF2aWdhdGlvbklEOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkTmF2aWdhdGlvbklEOwogICAgICAgICBk
ZWNvZGVyID4+IGRlY29kZWROYXZpZ2F0aW9uSUQ7CiAgICAgICAgIGlmICghZGVjb2RlZE5hdmln
YXRpb25JRCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8T3B0aW9uYWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3dubG9hZElEOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3dubG9hZElE
OwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb3dubG9hZElEOwogICAgICAgICBpZiAoIWRl
Y29kZWREb3dubG9hZElEKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPj4gZGVjb2RlZFdlYnNp
dGVQb2xpY2llc0RhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGRl
Y29kZXIgPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGlmICghZGVjb2Rl
ZFdlYnNpdGVQb2xpY2llc0RhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBkZWNvZGVyID4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCmluZGV4IGI4NGFmMzdiNzE4ZmFlOGFhYjAzZDUw
ZWM2ZjJmZGFkMzIxODljOTguLjE4OTNiYzdmZWRiZGE1MWI2OTljMzIwNjVjYjA2YTRjM2M3YTdk
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHJ0
Yzo6TmV0d29yayBSVENOZXR3b3JrOjp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcms7
CiB9CiAKLWF1dG8gUlRDTmV0d29yazo6SVBBZGRyZXNzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKSAtPiBPcHRpb25hbDxJUEFkZHJlc3M+CithdXRvIFJUQ05ldHdvcms6OklQQWRkcmVz
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxJUEFkZHJl
c3M+CiB7CiAgICAgSVBBZGRyZXNzIHJlc3VsdDsKICAgICBpbnQgZmFtaWx5OwpAQCAtMTIwLDcg
KzEyMCw3IEBAIHJ0Yzo6U29ja2V0QWRkcmVzcyBSVENOZXR3b3JrOjppc29sYXRlZENvcHkoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiB2YWx1ZSkKICAgICByZXR1cm4gcnRjOjpTb2NrZXRBZGRy
ZXNzKGNvcHkpOwogfQogCi1hdXRvIFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3M6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFNvY2tldEFkZHJlc3M+CithdXRvIFJU
Q05ldHdvcms6OlNvY2tldEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+
IHN0ZDo6b3B0aW9uYWw8U29ja2V0QWRkcmVzcz4KIHsKICAgICBTb2NrZXRBZGRyZXNzIHJlc3Vs
dDsKICAgICB1aW50MTZfdCBwb3J0OwpAQCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8gUlRDTmV0d29y
azo6U29ja2V0QWRkcmVzczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9u
YWw8U29ja2V0CiAgICAgaWYgKGlzVW5yZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gaXBBZGRyZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8
SVBBZGRyZXNzPiBpcEFkZHJlc3M7CiAgICAgZGVjb2RlciA+PiBpcEFkZHJlc3M7CiAgICAgaWYg
KCFpcEFkZHJlc3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgUlRDTmV0d29yazo6SVBBZGRyZXNzKHZh
bHVlLmlwYWRkcigpKTsKIH0KIAotT3B0aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UlRDTmV0d29yaz4gUlRD
TmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSVENOZXR3b3Jr
IHJlc3VsdDsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbmFtZSwgZGVzY3JpcHRpb247CkBAIC0x
NzcsNyArMTc3LDcgQEAgT3B0aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc2NyaXB0aW9u
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZGVzY3JpcHRpb24g
PSBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkZXNjcmlwdGlvbi5k
YXRhKCkpLCBkZXNjcmlwdGlvbi5zaXplKCkpOwotICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gcHJl
Zml4OworICAgIHN0ZDo6b3B0aW9uYWw8SVBBZGRyZXNzPiBwcmVmaXg7CiAgICAgZGVjb2RlciA+
PiBwcmVmaXg7CiAgICAgaWYgKCFwcmVmaXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC0yMDIsNyArMjAyLDcgQEAgT3B0aW9uYWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXN1bHQuaXBzLnJlc2VydmUobGVuZ3RoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7Ci0gICAgICAgIE9wdGlvbmFsPElQQWRkcmVz
cz4gYWRkcmVzczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+IGFkZHJlc3M7CiAg
ICAgICAgIGRlY29kZXIgPj4gYWRkcmVzczsKICAgICAgICAgaWYgKCFhZGRyZXNzKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuaAppbmRl
eCBmOWNlOWFiNzk4NWM5MGVkOTVjZWI4YjMyYzBjMjNlMjZkMGQ4MzJhLi4yNDg5NDFhOTcwMWQy
NDI1MjhmN2U3ODBlMDMyMGY5YmNiNGQ3YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SVENOZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDTmV0d29yay5o
CkBAIC00NiwxNCArNDYsMTQgQEAgc3RydWN0IFJUQ05ldHdvcmsgewogICAgIHJ0Yzo6TmV0d29y
ayB2YWx1ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJUQ05ldHdvcms+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENOZXR3b3JrPiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CiAKICAgICBzdHJ1Y3QgSVBBZGRyZXNzIHsKICAgICAgICAgSVBBZGRyZXNzKCkgPSBkZWZh
dWx0OwogICAgICAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmIGFk
ZHJlc3MpOiB2YWx1ZShhZGRyZXNzKSB7IH0KIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPElQQWRkcmVzcz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEFkZHJlc3M+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAgICBydGM6OklQQWRkcmVzcyB2YWx1ZTsK
ICAgICB9OwpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgUlRDTmV0d29yayB7CiAgICAgICAgIGV4
cGxpY2l0IFNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzKTog
dmFsdWUoYWRkcmVzcykgeyB9CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxTb2NrZXRBZGRyZXNzPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNvY2tldEFkZHJlc3M+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAgICBydGM6OlNvY2tldEFkZHJlc3MgdmFs
dWU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9w
dGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKaW5k
ZXggOWUyOTgzMDEyZDMzNTQ2M2VkZjUyNzdjMmI1N2UyOWM0MzgwYmQ4OC4uMzU2ZjEwZDRhMmU4
ODVmZTIwMzMxYmJhNDI2NGRlODkwMDc1ZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRD
UGFja2V0T3B0aW9ucy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBSVENQYWNrZXRPcHRpb25z
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgb3B0
aW9ucy5wYWNrZXRfdGltZV9wYXJhbXMuc3J0cF9wYWNrZXRfaW5kZXg7CiB9CiAKLU9wdGlvbmFs
PFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1BhY2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1BhY2tldE9wdGlv
bnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgcnRjOjpQYWNrZXRUaW1l
VXBkYXRlUGFyYW1zIHBhcmFtczsKICAgICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsKQEAg
LTU4LDE5ICs1OCwxOSBAQCBPcHRpb25hbDxSVENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRp
b25zOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIG9wdGlvbnMuZHNjcCA9IGRzY3A7CiAKLSAgICBPcHRpb25hbDxpbnQzMl90
PiBwYWNrZXRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IHBhY2tldElkOwogICAgIGRl
Y29kZXIgPj4gcGFja2V0SWQ7CiAgICAgaWYgKCFwYWNrZXRJZCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBvcHRpb25zLnBhY2tldF9pZCA9IHBhY2tldElkLnZhbHVlKCk7CiAK
LSAgICBPcHRpb25hbDxpbnQ+IHJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQ7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQ7CiAgICAgZGVjb2RlciA+PiBydHBTZW5k
dGltZUV4dGVuc2lvbklkOwogICAgIGlmICghcnRwU2VuZHRpbWVFeHRlbnNpb25JZCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbXMucnRwX3NlbmR0aW1lX2V4dGVuc2lv
bl9pZCA9IHJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQudmFsdWUoKTsKIAotICAgIE9wdGlvbmFsPGlu
dDY0X3Q+IHNydHBBdXRoVGFnTGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gc3J0
cEF1dGhUYWdMZW5ndGg7CiAgICAgZGVjb2RlciA+PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBp
ZiAoIXNydHBBdXRoVGFnTGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAt
ODUsNyArODUsNyBAQCBPcHRpb25hbDxSVENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25z
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBtZW1jcHkocGFyYW1zLnNy
dHBfYXV0aF9rZXkuZGF0YSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcnRwQXV0
aEtleS5kYXRhKCkpLCBzcnRwQXV0aEtleS5zaXplKCkgKiBzaXplb2YoY2hhcikpOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPGludDY0X3Q+IHNydHBQYWNrZXRJbmRleDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludDY0X3Q+IHNydHBQYWNrZXRJbmRleDsKICAgICBkZWNvZGVyID4+IHNydHBQYWNrZXRJ
bmRleDsKICAgICBpZiAoIXNydHBQYWNrZXRJbmRleCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuaAppbmRleCA1ZWY2ZDlm
ZDVhNmE2Zjk5N2UxZjNiMjNjYmIxYmJmZTFiNDAzNzdhLi5kYjNiZGM2ZTI0M2UyYTUyNzY4ZDU3
ODM0NWU5YWIzYzBjZTcyMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQ
YWNrZXRPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9u
cy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUlRDUGFj
a2V0T3B0aW9ucyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSVENQYWNrZXRPcHRpb25zPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiAKICAgICBydGM6OlBhY2tldE9wdGlvbnMgb3B0aW9uczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYjEyMzZkMjNhMGNm
YjJhOGRjOGFkYjFmY2M5YmE5MjQ5MTI2MWRlNi4uMWMxMmU5ODRlZWY0OTAwZDg5N2IxNThhMTg0
YmM4ZWZjYWI2ZmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcApAQCAtOTksNyArOTksNyBAQCBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6
UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5oCmluZGV4IDFmMTkwNDNhYWE0YWE4OWEwOGY0MzU3ZDQ5MzRhNWZiNzczOGE3NDQuLjhj
NmRiZTEwYmFhNjg0YzU2Zjc1NjI4NjExNzNmMjU4MGRmZDViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91
dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBv
aW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRl
OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3NTIzY2I3OWI4OWEzMjQy
NTFiMWM4ODMyZjNlYjUwNmJiOGU4YTU5Li5hZTlkMmY4ODY1MDVjMjA1ZmMxYWFmY2QyMjAwZGM2
ZTZlNDMwZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtMTMzLDcgKzEzMyw3
IEBAIHByaXZhdGU6CiAgICAgQnVmZmVyIG1fZnJvbnRCdWZmZXI7CiAgICAgQnVmZmVyIG1fYmFj
a0J1ZmZlcjsKICAgICBCdWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOwotICAgIE9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9idWZmZXJIYW5kbGU7CisgICAgc3RkOjpvcHRp
b25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxlOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IG1fZnJv
bnRCdWZmZXJGbHVzaGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggYjdh
MjhkZDc1NzRhNTczODMzNmY2NjFlNDgzNzBkZWJjYTJmOTUwMi4uZDBkYWRjNzIyNmIxYTI0ZWU2
Mzc5ZDIxNThhOTc4Mzc3ZDI5MjQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAg
IGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKIAotICAgIE9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZT4gaGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlPiBoYW5kbGU7CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKICAgICAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IDhhZTJkYWJkYjc5ZDdlM2U2ZDM5ZDYw
YjM5YmJkNWM1ZTIwMzA4MzAuLjljZjI3ZTFmNGM0ODVmOTI1YWUyZDhkZjFhNzcxYTFkMTgyODU3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICBMYXllckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9u
YWw8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKIAogICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQgbGF5ZXJJRDsKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGUgdHlwZTsKQEAgLTMwNSw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRWRpdG9y
U3RhdGUmIGVkaXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0ZS52YWx1ZSgp
OyB9CiAgICAgdm9pZCBzZXRFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3Rh
dGUpIHsgbV9lZGl0b3JTdGF0ZSA9IGVkaXRvclN0YXRlOyB9CiAKLSAgICBPcHRpb25hbDxEeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlSUQ+IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9CisgICAgc3RkOjpv
cHRpb25hbDxEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ+IGR5bmFtaWNWaWV3cG9ydFNpemVV
cGRhdGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEOyB9
CiAgICAgdm9pZCBzZXREeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQoRHluYW1pY1ZpZXdwb3J0
U2l6ZVVwZGF0ZUlEIHJlc2l6ZUlEKSB7IG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0g
cmVzaXplSUQ7IH0KICAgICAKIHByaXZhdGU6CkBAIC0zNDUsOCArMzQ1LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdmlld3BvcnRNZXRhVGFnQ2FtZUZyb21JbWFnZURvY3VtZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIG1faXNJblN0YWJsZVN0YXRlIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFs
PEVkaXRvclN0YXRlPiBtX2VkaXRvclN0YXRlOwotICAgIE9wdGlvbmFsPER5bmFtaWNWaWV3cG9y
dFNpemVVcGRhdGVJRD4gbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxFZGl0b3JTdGF0ZT4gbV9lZGl0b3JTdGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPER5
bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRD4gbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbQppbmRleCAwZmZjODJiNDk3ZTU2YTJlZjFlOWI0MjkxOWE2MGMwYjVlMDVkNGM1Li4z
MDYxNGVmMjJlYWMzZTczOGIxNTgzOTFjNDVjZTM4YmY4MWM4YmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlCiAjZW5kaWYKIH0KIAotYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9w
dGlvbmFsPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPgorYXV0byBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+CiB7CiAgICAg
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmxheWVySUQpKQpAQCAtNTU0LDcgKzU1NCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRXZlbnRSZWdp
b25DaGFuZ2VkKSB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkV2ZW50UmVnaW9uPiBldmVu
dFJlZ2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFdmVudFJlZ2lvbj4gZXZl
bnRSZWdpb247CiAgICAgICAgIGRlY29kZXIgPj4gZXZlbnRSZWdpb247CiAgICAgICAgIGlmICgh
ZXZlbnRSZWdpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NjMsNyArNzYzLDcg
QEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX2lzSW5TdGFibGVTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlv
bmFsPFZlY3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+PiBjYWxsYmFja0lEczsKICAg
ICBkZWNvZGVyID4+IGNhbGxiYWNrSURzOwogICAgIGlmICghY2FsbGJhY2tJRHMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAppbmRleCA1ZDRhOTc4OGY0MzZkNjg3NmY0YWRjZWM4YTJjMmIyYjli
YzExNTdmLi5iZTBlMjhiOTI1ZmU3MTRhYTZlMjE1N2ZhNDlmYTc4NDI5NWU2ZmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBA
IC0zNjgsNyArMzY4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFMKICAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQs
IEZsb2F0UmVjdCwgc2V0TGF5b3V0Vmlld3BvcnQpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RF
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luLCBG
bG9hdFBvaW50LCBzZXRNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbikKICAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRP
cmlnaW4sIEZsb2F0UG9pbnQsIHNldE1heExheW91dFZpZXdwb3J0T3JpZ2luKQotICAgIFNDUk9M
TElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpPdmVycmlkZVZp
c3VhbFZpZXdwb3J0U2l6ZSwgT3B0aW9uYWw8RmxvYXRTaXplPiwgc2V0T3ZlcnJpZGVWaXN1YWxW
aWV3cG9ydFNpemUpCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6Ok92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplLCBzdGQ6Om9wdGlvbmFsPEZs
b2F0U2l6ZT4sIHNldE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKQogCiAgICAgaWYgKG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvdW50ZXJT
Y3JvbGxpbmdMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
IGxheWVySUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKaW5kZXggZThlYTM4Nzk1YjVk
OTE3MWFjMGNjZTM2MTYzNmY0Yzk1ZmNjNmNiNS4uNzA0MzVhOThlZTg0ODRkOGI1ZGVhNDc2Yzhm
NzBkOWNkMDI0OGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1VJU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgICAgIGVuY29kZXIgPDwgbV9ub2Rlc1dpdGhBY3RpdmVVc2Vy
U2Nyb2xsczsKIH0KIAotT3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gUmVtb3RlU2Ny
b2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlIHVp
U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5oCmluZGV4IDU0NWJmYzUzOWIyMjMxMDk5
ZmMxNjVmYjMyYzg0Mzc0NzIyNjZiMmUuLjdiNTZkYjdiNzdlOGFlNWFkMDVkYTRkNzQxNzAwNjQ3
YjkwYTI1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owot
ICAgIHN0YXRpYyBPcHRpb25hbDxSZW1vdGVTY3JvbGxpbmdVSVN0YXRlPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlU2Nyb2xsaW5nVUlTdGF0
ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgT3B0aW9uU2V0PENoYW5nZXM+IGNoYW5n
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZXM7IH0KICAgICB2b2lkIGNsZWFyQ2hhbmdlcygp
IHsgbV9jaGFuZ2VzID0geyB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZv
LmgKaW5kZXggMDA4NjVjNjlkYmJkNjI0Y2Q1Mjc0Yjk1M2UzZmVlMDdhMmVmMThjNC4uNGFhZTEz
NDhjOGNhNzZiY2Q5MDZiMDE0ZGMzZDNlMzdiZTBkNDJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Jlc291cmNlTG9hZEluZm8uaApAQCAtNTQsOCArNTQsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
SW5mbyB7CiAgICAgfTsKICAgICAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUxvYWRJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFt
ZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFt
ZUlEOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICBTdHJpbmcgb3JpZ2luYWxIVFRQTWV0aG9k
OwogICAgIFdhbGxUaW1lIGV2ZW50VGltZXN0YW1wOwpAQCAtNzQsNDQgKzc0LDQ0IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRJbmZvIHsKICAgICAgICAgZW5jb2RlciA8PCB0eXBlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUxvYWRJbmZvPiBkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZEluZm8+IGRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSUQ7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IHJlc291cmNlTG9hZElEOwog
ICAgICAgICBkZWNvZGVyID4+IHJlc291cmNlTG9hZElEOwogICAgICAgICBpZiAoIXJlc291cmNl
TG9hZElEKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPj4g
ZnJhbWVJRDsKICAgICAgICAgZGVjb2RlciA+PiBmcmFtZUlEOwogICAgICAgICBpZiAoIWZyYW1l
SUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
PiBwYXJlbnRGcmFtZUlEOwogICAgICAgICBkZWNvZGVyID4+IHBhcmVudEZyYW1lSUQ7CiAgICAg
ICAgIGlmICghcGFyZW50RnJhbWVJRCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICAgICAgT3B0aW9uYWw8VVJMPiBvcmlnaW5hbFVSTDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxVUkw+IG9yaWdpbmFsVVJMOwogICAgICAgICBkZWNvZGVyID4+IG9yaWdpbmFsVVJMOwog
ICAgICAgICBpZiAoIW9yaWdpbmFsVVJMKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsSFRUUE1ldGhvZDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsSFRUUE1ldGhvZDsKICAgICAgICAgZGVj
b2RlciA+PiBvcmlnaW5hbEhUVFBNZXRob2Q7CiAgICAgICAgIGlmICghb3JpZ2luYWxIVFRQTWV0
aG9kKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25h
bDxXYWxsVGltZT4gZXZlbnRUaW1lc3RhbXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IGV2ZW50VGltZXN0YW1wOwogICAgICAgICBkZWNvZGVyID4+IGV2ZW50VGltZXN0YW1wOwog
ICAgICAgICBpZiAoIWV2ZW50VGltZXN0YW1wKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBsb2FkZWRGcm9tQ2FjaGU7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9hZGVkRnJvbUNhY2hlOwogICAgICAgICBkZWNvZGVyID4+
IGxvYWRlZEZyb21DYWNoZTsKICAgICAgICAgaWYgKCFsb2FkZWRGcm9tQ2FjaGUpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0
eXBlOwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmgKaW5kZXggZjNmOWU2ZjUxM2FkMmZkODQxZGE5OTE1MTg0OGVjZWMzNzE0
NjgxNC4uOTdkNTE0ODc0ZGQ2MGQ1OTdjZmY3ODM4Y2Q4MzY5NzJmYTlhZDMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5oCkBAIC03MCw3MSArNzAsNzEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzIHsKICAgICAgICAgZW5jb2RlciA8PCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsKICAgICAgICAgZGVjb2Rl
ciA+PiBkaXJlY3Rvcnk7CiAgICAgICAgIGlmICghZGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogICAgICAgICBkZWNvZGVyID4+IGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAg
aWYgKCFkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJs
ZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAg
ICAgIGRlY29kZXIgPj4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGlmICghaXNJ
dHBTdGF0ZUV4cGxpY2l0bHlTZXQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVMb2dUZXN0aW5nRXZlbnQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gZW5hYmxlTG9nVGVzdGluZ0V2ZW50OwogICAgICAgICBpZiAoIWVuYWJsZUxvZ1Rlc3Rp
bmdFdmVudCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgICAgICBkZWNvZGVyID4+IHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgICAgIGlmICghc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gZW5hYmxlRGVidWdNb2RlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZURl
YnVnTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVEZWJ1Z01vZGU7CiAgICAgICAgIGlm
ICghZW5hYmxlRGVidWdNb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZGVj
b2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICBpZiAoIXRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRF
bmFibGVkPiBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZD4gc2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAgICAgICAgIGlmICghc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlm
CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGU+IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlPiBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgaWYgKCFmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHN0YW5kYWxvbmVBcHBsaWNh
dGlvbkRvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogICAgICAgICBkZWNvZGVyID4+IHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERv
bWFpbnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKICAgICAgICAgZGVjb2RlciA+PiBhcHBCb3VuZERv
bWFpbnM7CiAgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAg
ICBkZWNvZGVyID4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVh
bFByZXZhbGVudFJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCAyNjVhZjhkM2YxNTdjMWFk
NDUxZmVhOTIyY2RjNmI3ZjAzNmVlM2UyLi42NGVhZDgyMzI5YzZhMWMzYzEyZGZiYjY1ZTJhMTUx
ZDg1NTBjNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5z
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgfkhhbmRsZSgpOwogCiAgICAgICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8SGFu
ZGxlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNhbmRib3hFeHRlbnNpb247CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBIYW5kbGUqIGVuZCgpIGNvbnN0OwogICAgICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAg
ICAgICAgc3RhdGljIE9wdGlvbmFsPEhhbmRsZUFycmF5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZUFycmF5PiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiAKICAgICBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMp
CkBAIC0xMTksMTEgKzExOSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlLCBIYW5kbGUm
KTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJ
TGl0ZXJhbCBleHRlbnNpb25DbGFzcywgSGFuZGxlJik7CiAjaWYgSEFWRShBVURJVF9UT0tFTikK
LSAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBz
ZXJ2aWNlLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdz
PiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgSGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsK
KyAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBz
ZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8
RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVI
YW5kbGVzRm9yTWFjaExvb2t1cChjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMs
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6
RGVmYXVsdCk7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tl
bihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOwotICAgIHN0YXRp
YyBib29sIGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlv
a2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8Rmxh
Z3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5k
bGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlv
a2l0Q2xhc3NlcywgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBG
bGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFz
c0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAg
ICBzdGF0aWMgSGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5k
aWYKICAgICB+U2FuZGJveEV4dGVuc2lvbigpOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0
ZToKIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5l
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9Ci1p
bmxpbmUgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgeyB9OyB9CitpbmxpbmUgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsg
cmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheTo6SGFuZGxlQXJyYXkoKSB7IH0KIGlubGluZSBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUoc2l6ZV90KSB7IH0KQEAgLTE2MCw3
ICsxNjAsNyBAQCBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZW5kKCkgeyByZXR1cm4gJgogaW5saW5lIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gJm1fZW1wdHlIYW5kbGU7IH0KIGlubGluZSBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUqIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25z
dCB7IHJldHVybiAmbV9lbXB0eUhhbmRsZTsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6OmVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBh
dXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikg
LT4gT3B0aW9uYWw8SGFuZGxlQXJyYXk+IHsgcmV0dXJuIHsgSGFuZGxlQXJyYXkoKSB9OyB9Citp
bmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlQXJyYXk+IHsgcmV0dXJuIHsgSGFuZGxlQXJy
YXkoKSB9OyB9CiBpbmxpbmUgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShIYW5kbGUmJikgeyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUsIEhhbmRsZSYp
IHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVy
YWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4geyB9OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3Bw
CmluZGV4IGZjMzBlNTg4YzM0OTgyN2IzYmZiZWRiZjY5Y2JhNmU3Y2FmYTYzYWMuLjc3MzIxOWY3
ZWUwMGI2N2IzYjVkMTViNzk0YTI1MWRiMzk1ZjMyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCkBAIC00
MSwxNSArNDEsMTUgQEAgdm9pZCBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKICAgICBkZWNvZGVyID4+IGNvbnRl
bnRSdWxlTGlzdHM7CiAgICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YS5oCmluZGV4IDZkNTA5N2RkZWI5NWE5OTU5ZDg1ZDZkYjMz
Mjc5ZTBkY2E5NGJjZTkuLjQxNzNiM2JlMzFhMGZhM2JlMzk0MmNkYTVlNmE0OWRkOTUwN2E2M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgewog
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Np
b25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmluZGV4
IDZhYmM4NGRhY2QxMDZhYjVlNzkzMmY0M2Y0ZTZjOGQxNDZhZjU5MzQuLmEwOGRkMTVkMzUxNzc2
ZjM1NDlmMzQxYmQxMWZiZGRiZjI5Mzk4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0
YXRlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkRW51bShIVFRQQm9k
eTo6RWxlbWVudDo6VHlwZSB0eXBlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYXV0byBIVFRQ
Qm9keTo6RWxlbWVudDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
RWxlbWVudD4KK2F1dG8gSFRUUEJvZHk6OkVsZW1lbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RWxlbWVudD4KIHsKICAgICBFbGVtZW50IHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSB8fCAhaXNWYWxpZEVudW0ocmVz
dWx0LnR5cGUpKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRnJhbWVTdGF0ZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGNoaWxkcmVuOwogfQog
Ci1PcHRpb25hbDxGcmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGcmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEZyYW1lU3RhdGUgcmVzdWx0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFN0cmluZykpCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9v
bCBQYWdlU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVz
dWx0KQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRpdGxlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPEZyYW1lU3RhdGU+IG1haW5GcmFtZVN0YXRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVTdGF0ZT4gbWFpbkZyYW1lU3RhdGU7CiAgICAgZGVjb2Rl
ciA+PiBtYWluRnJhbWVTdGF0ZTsKICAgICBpZiAoIW1haW5GcmFtZVN0YXRlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMTAsNyArMjEwLDcgQEAgYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVzdWx0KQogICAgICAgICByZXN1bHQu
c2Vzc2lvblN0YXRlT2JqZWN0ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZUJ5dGVzKFdURk1vdmUod2lyZUJ5dGVzKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeT4gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OwogICAgIGlmICghc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgaGFzQ2FjaGVkUGFnZTsKIH0KIAotT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
PiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSByZXN1bHQ7CiAKQEAgLTI1MCwxNCArMjUwLDE0IEBAIHZvaWQgQmFj
a0ZvcndhcmRMaXN0U3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBjdXJyZW50SW5kZXg7CiB9CiAKLU9wdGlvbmFsPEJhY2tGb3J3YXJkTGlz
dFN0YXRlPiBCYWNrRm9yd2FyZExpc3RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3N0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0U3RhdGU+IEJhY2tGb3J3YXJkTGlzdFN0
YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFZlY3Rv
cjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+PiBpdGVtczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+PiBpdGVtczsKICAgICBkZWNvZGVyID4+IGl0
ZW1zOwogICAgIGlmICghaXRlbXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBPcHRpb25hbDx1aW50MzJfdD4gY3VycmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGN1cnJlbnRJbmRleDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRJbmRl
eCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKaW5kZXggMDM2MDIzNjk4NzVmOGM1NzkyYWQ5MWRlMmI2ZDQxYTEyNDIxM2IzZi4u
NGU2ZDYyNTlhY2E1NGE0YTYwOGIzNzFjMTdlMWVjMzkyNGU5MDRhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBz
dHJ1Y3QgSFRUUEJvZHkgewogICAgIHN0cnVjdCBFbGVtZW50IHsKICAgICAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50
PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgICAgICBlbnVtIGNsYXNzIFR5cGUg
ewogICAgICAgICAgICAgRGF0YSwKQEAgLTY1LDggKzY1LDggQEAgc3RydWN0IEhUVFBCb2R5IHsK
ICAgICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZpbGVQYXRoOwogICAgICAgICBpbnQ2
NF90IGZpbGVTdGFydDsKLSAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKLSAg
ICAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gZmlsZUxlbmd0aDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAg
ICAvLyBCbG9iLgogICAgICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKQEAgLTgyLDcgKzgyLDcg
QEAgc3RydWN0IEhUVFBCb2R5IHsKIGNsYXNzIEZyYW1lU3RhdGUgewogcHVibGljOgogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxGcmFt
ZVN0YXRlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RnJhbWVTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgLy8gVGhlc2UgYXJlIHVz
ZWQgdG8gaGVscCBkZWJ1ZyA8cmRhcjovL3Byb2JsZW0vNDg2MzQ1NTM+LgogICAgIEZyYW1lU3Rh
dGUoKSB7IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgfQpAQCAtOTcsNyArOTcs
NyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIFN0cmluZyB0YXJnZXQ7CiAK
LSAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHN0YXRlT2JqZWN0RGF0YTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gc3RhdGVPYmplY3REYXRhOwogCiAgICAgaW50NjRf
dCBkb2N1bWVudFNlcXVlbmNlTnVtYmVyIHsgMCB9OwogICAgIGludDY0X3QgaXRlbVNlcXVlbmNl
TnVtYmVyIHsgMCB9OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3Vs
ZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiB7IHRydWUgfTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IgeyAwIH07CiAKLSAgICBPcHRpb25hbDxIVFRQQm9keT4gaHR0cEJvZHk7CisgICAgc3RkOjpv
cHRpb25hbDxIVFRQQm9keT4gaHR0cEJvZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxk
IG5vdCBiZSBwZXIgZnJhbWUuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEzNiw3ICsx
MzYsNyBAQCBzdHJ1Y3QgUGFnZVN0YXRlIHsKIAogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gZGVj
b2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciBpZGVudGlmaWVyOwogCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBzdHJ1Y3QgQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlIHsKIAogc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8QmFj
a0ZvcndhcmRMaXN0U3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxCYWNrRm9yd2FyZExpc3RTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
CiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbXM7Ci0gICAgT3B0aW9u
YWw8dWludDMyX3Q+IGN1cnJlbnRJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
dXJyZW50SW5kZXg7CiB9OwogCiBzdHJ1Y3QgU2Vzc2lvblN0YXRlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IDA0NjRhMjBkNDBkZGIzMGFlYTIwMWM2NGVk
MGUyMjJhYmExNGJjNzYuLmY2YTVjNzU2ZTJmMjdmY2EwNTE0OGY2NmM2MWFiZDc0NGU2OGEwMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtODcsMTIgKzg3
LDEyIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJh
dGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgcmVzdWx0
KQogewotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4+IGNvbG9yU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xv
clNwYWNlOwogICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFxdWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc09w
YXF1ZTsKICAgICBkZWNvZGVyID4+IGlzT3BhcXVlOwogICAgIGlmICghaXNPcGFxdWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5k
ZXggMDM2MjFiNDIxZTliZGQzOTZjNTBmNWZhOTM3YmM1ZGU2Zjg1OThhZC4uZTYzOGU4NjgxMWQ0
NzlmZjdlNzk5NGUzMzk0ZTZhZDU0MzRhNmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmgKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBT
aGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0
bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewotICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
OwogICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKICNpZiBVU0UoRElSRUNUMkQpCiAg
ICAgICAgIG11dGFibGUgSEFORExFIHNoYXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IGJh
OTkzN2E5ZGM4MTMzODUyYzFmYzM1Zjg4OWNjMTFhZjZmYmM4YmUuLmI1NzQzNTRhNTQ5MmRjYWE3
ZDExOGJmMTQ2N2Y0NWU5MTRiOGZmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3Vj
aEJhck1lbnVJdGVtRGF0YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUb3VjaEJhck1lbnVJ
dGVtRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IHByaW9yaXR5OwogfQogCi1PcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hC
YXJNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBUb3VjaEJhck1lbnVJdGVtRGF0YSByZXN1bHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaAppbmRleCBiMzBmODJiODU0MDRmNzEyY2JkMDc3
MWVhZWMyMTllOWY4MWU5NTNkLi40OTgxMzJhMGEzNWVkZjNkM2NmNTkzZDA2Yjg2MTQxNjdhNGY2
YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAg
LTUzLDcgKzUzLDcgQEAgc3RydWN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhIHsKICAgICBleHBsaWNp
dCBUb3VjaEJhck1lbnVJdGVtRGF0YShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpID0gZGVm
YXVsdDsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBz
dGF0aWMgT3B0aW9uYWw8VG91Y2hCYXJNZW51SXRlbURhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOwogICAgIAogICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0
dG9uIH07CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9UcmFuc2FjdGlvbklELmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlv
bklELmgKaW5kZXggNTM2NDA4OTQwOGUxNjFjZmIzYzAwNmE0MjMzMmZjNjgzZTMyNDY2OS4uZDlm
N2NhZGQ0ZDE1YTk2MDkzNGExNzMxNGNmNTk5NTI2OWRiMDY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvVHJhbnNhY3Rpb25JRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RyYW5zYWN0aW9uSUQuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChpc1ZhbGlkSWRlbnRpZmllcihtX2lkZW50aWZpZXIpKTsKICAgICAgICAgZW5jb2RlciA8PCBt
X2lkZW50aWZpZXI7CiAgICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50
aWZpZXI7CiAgICAgICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNr
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1l
dGVycy5jcHAKaW5kZXggYWNjMmViODkzNGFjMWM3OGFiMDgxYjJkMjE2NWI4ZDU0OTc2NDI0MC4u
ZDVjYTNiYmZlMDgwYmU3ZTg3MDJjNTIyNTViOTViOWI4ZWI5OWViNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcApAQCAtNDUsMTQgKzQ1
LDE0IEBAIHZvaWQgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUluZm87CiB9CiAKLU9wdGlvbmFs
PFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzPiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+
IGhhbmRsZXJJZGVudGlmaWVyOwogICAgIGlmICghaGFuZGxlcklkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHRhc2tJ
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gdGFza0lkZW50aWZpZXI7CiAgICAgaWYgKCF0YXNrSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8
VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBoYXNIVFRQQm9keTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0hUVFBCb2R5OwogICAgIGRlY29kZXIgPj4gaGFz
SFRUUEJvZHk7CiAgICAgaWYgKCFoYXNIVFRQQm9keSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9CiAgICAgCi0gICAg
T3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8RnJh
bWVJbmZvRGF0YT4gZnJhbWVJbmZvOwogICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOwogICAgIGlm
ICghZnJhbWVJbmZvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgKaW5kZXggNTczNmQ4MmNkMWRh
NjQwMDQyZWRiMTZjYzg4MWM5MDNiMzk2ZWY3Yi4uNjc4MjM5NmIwZjlkMDliM2JlZDJlZjQ5YmNi
ZDVjYzk1M2M2ZDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNr
UGFyYW1ldGVycy5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyB7CiAgICAgRnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAgICAgCiAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcAppbmRleCBlM2M5Y2RiYjZi
N2ZjMDJmMzNkOGZiYjhjZGI5ODVhZjFhMGNkNWRjLi5mMDcwYTY0OWRjMjZhNmViOWMxZjc1NDE1
YjM4NWRjM2M3ZjdkMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29u
dGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9V
c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcApAQCAtNDQsMzUgKzQ0LDM1IEBAIHZv
aWQgVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICNlbmRpZgogfQogCi1PcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJQYXJhbWV0ZXJzPiBVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQ
YXJhbWV0ZXJzPiBVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+Pj4gdXNlckNvbnRlbnRXb3JsZHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
OjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+PiB1c2VyQ29udGVudFdvcmxk
czsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50V29ybGRzOwogICAgIGlmICghdXNlckNvbnRl
bnRXb3JsZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxW
ZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+PiB1c2VyU2NyaXB0czsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4+IHVzZXJTY3JpcHRzOwogICAgIGRlY29kZXIgPj4g
dXNlclNjcmlwdHM7CiAgICAgaWYgKCF1c2VyU2NyaXB0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRh
Pj4gdXNlclN0eWxlU2hlZXRzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlVzZXJTdHls
ZVNoZWV0RGF0YT4+IHVzZXJTdHlsZVNoZWV0czsKICAgICBkZWNvZGVyID4+IHVzZXJTdHlsZVNo
ZWV0czsKICAgICBpZiAoIXVzZXJTdHlsZVNoZWV0cykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJE
YXRhPj4gbWVzc2FnZUhhbmRsZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGF0YT4+IG1lc3NhZ2VIYW5kbGVyczsKICAgICBkZWNvZGVyID4+IG1l
c3NhZ2VIYW5kbGVyczsKICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVycykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVu
dFJ1bGVMaXN0czsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFj
b250ZW50UnVsZUxpc3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5o
CmluZGV4IGFlOTE4YjllNzYzOTRmNGUyOWM1N2U5NTdkNjI2NTU4NmYxNjBjYjIuLjAzMGZkZGQ3
YmE2MTUzYWQ2NDc4YTU5ZTM2NDVlYmZhY2Y4NWFlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgc3RydWN0IFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgewogI2VuZGlm
CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFt
ZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IDFiNmRiZmFlNDMwODQ3YzNkZTEwYWZj
ODBiZTJjOGI2ZWQ4MjI0MzkuLjNiNTQwNDU1ZTYyMDFmNDM1Yzk1ZDJmYmJkYzM0Y2Y5Mjg1ODA0
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29s
IFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiByZXN1bHQpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlw
ZTo6Q2VydGlmaWNhdGVJbmZvOiB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBkZWNvZGVyID4+IGNl
cnRpZmljYXRlSW5mbzsKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdENvdW50cy5oCmluZGV4IDZiNmUxZWVhOTE0NDFlOTgwODUwYWQxZTNjNGM2N2FkYTc0YWYx
OWEuLjdhYTY1YWUwZjJjZmMyNDgyNWNmMmYzOWI2MDkzNmYzNWQ2YTEwM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCkBAIC00MSwxNCAr
NDEsMTQgQEAgc3RydWN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyB7CiAgICAgICAgIGVuY29k
ZXIgPDwgZm9yd2FyZENvdW50OwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGJhY2tD
b3VudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYmFja0NvdW50OwogICAgICAg
ICBkZWNvZGVyID4+IGJhY2tDb3VudDsKICAgICAgICAgaWYgKCFiYWNrQ291bnQpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBm
b3J3YXJkQ291bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3Vu
dDsKICAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291bnQ7CiAgICAgICAgIGlmICghZm9yd2Fy
ZENvdW50KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmlu
ZGV4IDkyYzg2MzcwNGQ5N2ZhYWZjMjgxYTM5NzQxNjExMjM1ZGEwYjMxMzAuLmFjMDJkNmQ0YWNm
MjJhNzU4YTNjNjgyOGJjNmMwMWE2OWFmOWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtNTgsNTQg
KzU4LDU0IEBAIHZvaWQgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5
dGVjb2RlU2l6ZTsKIH0KIAotT3B0aW9uYWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
PiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gZGF0YSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7
CiAgICAgZGVjb2RlciA+PiBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAg
aWYgKCFjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gYWN0aW9uc09mZnNldDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhY3Rpb25zT2Zmc2V0OwogICAgIGRlY29kZXIgPj4g
YWN0aW9uc09mZnNldDsKICAgICBpZiAoIWFjdGlvbnNPZmZzZXQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gYWN0aW9uc1NpemU7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aW9uc1NpemU7CiAgICAgZGVjb2RlciA+PiBhY3Rp
b25zU2l6ZTsKICAgICBpZiAoIWFjdGlvbnNTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCFmaWx0ZXJzV2l0aG91dENvbmRpdGlv
bnNCeXRlY29kZU9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVTaXplOwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVT
aXplOwogICAgIGlmICghZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4g
ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCFmaWx0ZXJzV2l0
aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNp
emU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVT
aXplOwogICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvcFVSTEZp
bHRlcnNCeXRlY29kZU9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxG
aWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgaWYgKCF0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9wVVJMRmls
dGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0
ZXJzQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6
ZTsKICAgICBpZiAoIXRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0RGF0YS5oCmluZGV4IDFmMDMxMzEwMWI3YWVjMGZmNmFjZDg0MGRhMzEx
ZTI0ZTZmNGFlNmQuLmE0YTI0MmI5N2M1MDVlZTgxNTE2ZWVlMzliNTNjMDBhNDQ5YzczOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVM
aXN0RGF0YS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBkYXRhOwogICAgIHVuc2ln
bmVkIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggNjRjMTU3Y2U0
N2M5ZGIwNDFjMzE4OTdkODFiY2E2YjA3N2I3ZmE3YS4uNTk4YTg3N2U5ZjYxNjhlMWFmNDgyZmU3
ODcwY2VkNWExZDQ0MzI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4
dE1lbnVJdGVtRGF0YS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51
SXRlbURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBtX3N1Ym1lbnU7CiB9CiAKLU9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdl
YkNvbnRleHRNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCkBAIC0xMzks
NyArMTM5LDcgQEAgT3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gV2ViQ29udGV4dE1l
bnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGUKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGluZGVudGF0aW9uTGV2ZWwpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OworICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51Owog
ICAgIGRlY29kZXIgPj4gc3VibWVudTsKICAgICBpZiAoIXN1Ym1lbnUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgKaW5kZXggMTU0Mjc4MmEyNzIwNzAxYTlkM2JkYTQ5ZWVlMGM1NDAzYzVjMDFmYy4u
YmViOTljZjkxNWZmOTM3ODNkNmE2MjRjNThlZTI3ZDFkYzhhZDk5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyRGF0YShBUEk6Ok9iamVjdCopOwogICAgIAogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgbV90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
MTI5ZWZlZjFkNzI5OTFkMTRjZTVhYjE5ZTM2MzExMmEwOTE4OTE4YS4uZjBjOGVlZjUzZDM1OTdl
MGVhOGExMWRiMTAxZWE5NDYwMTQxOWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxs
OwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwogICAgIGlmICghaXNOdWxsKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNzgsMTQgKzI3OCwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2hhcmFj
dGVyUmFuZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2hhcmFjdGVyUmFuZwog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJhbmdlLmxlbmd0aCk7CiB9CiAK
LU9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBB
cmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGxvY2F0aW9uOwogICAgIGRlY29kZXIgPj4gbG9jYXRpb247CiAgICAgaWYgKCFsb2Nh
dGlvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBsZW5ndGg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOwogICAgIGRl
Y29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMjk5LDE0ICsyOTksMTQgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE8KICAg
ICBlbmNvZGVyIDw8IGluZm8ubmFtZTsKIH0KIAotYXV0byBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4KK2F1dG8gQXJndW1lbnRDb2RlcjxET01DYWNoZUVu
Z2luZTo6Q2FjaGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IHN0ZDo6b3B0aW9u
YWw8RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4KIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBp
ZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNDEsNyArMzQxLDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpZGVudGlmaWVyKSkKQEAgLTM1NSw3ICszNTUsNyBAQCBPcHRpb25hbDxET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+
IG9wdGlvbnM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlv
bnM7CiAgICAgZGVjb2RlciA+PiBvcHRpb25zOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
RXZlbnRUcgogCiBib29sIEFyZ3VtZW50Q29kZXI8RXZlbnRUcmFja2luZ1JlZ2lvbnM+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgRXZlbnRUcmFja2luZ1JlZ2lvbnMmIGV2ZW50VHJhY2tpbmdS
ZWdpb25zKQogewotICAgIE9wdGlvbmFsPFJlZ2lvbj4gYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdp
b247CisgICAgc3RkOjpvcHRpb25hbDxSZWdpb24+IGFzeW5jaHJvbm91c0Rpc3BhdGNoUmVnaW9u
OwogICAgIGRlY29kZXIgPj4gYXN5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb247CiAgICAgaWYgKCFh
c3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc0
LDcgKzU3NCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTdGVwc1RpbWluZ0Z1bmN0aW9uPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFN0ZXBzVGltaW5nRnVuCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShudW1TdGVwcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFN0
ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbj4gc3RlcFBvc2l0aW9uOworICAgIHN0ZDo6
b3B0aW9uYWw8U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uPiBzdGVwUG9zaXRpb247
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGVwUG9zaXRpb24pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2lu
dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogICAg
IHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2Rlciwg
ZmxvYXRQb2ludCk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UG9pbnQ+IEFyZ3VtZW50Q29kZXI8Rmxv
YXRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQ7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENv
ZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludCkpCkBAIC02NTcsNyAr
NjU3LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBGbG9hdFJlY3QmIGZsb2F0UmVjdCkKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRD
b2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRSZWN0KTsKIH0KIAotT3B0aW9u
YWw8RmxvYXRSZWN0PiBBcmd1bWVudENvZGVyPEZsb2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IEFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0UmVjdDsK
ICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIs
IGZsb2F0UmVjdCkpCkBAIC03MDksNyArNzA5LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFZpZXdw
b3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZpZXdwb3J0QXJndW1lbnQK
ICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxWaWV3cG9ydEFyZ3VtZW50cz46OmRlY29k
ZShkZWNvZGVyLCB2aWV3cG9ydEFyZ3VtZW50cyk7CiB9CiAKLU9wdGlvbmFsPFZpZXdwb3J0QXJn
dW1lbnRzPiBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVy
PFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgVmll
d3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHM7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVu
dENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKGRlY29kZXIsIHZpZXdwb3J0QXJndW1l
bnRzKSkKQEAgLTczOSw3ICs3MzksNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW50UG9pbnQmIGludFBvaW50KQogICAgIHJldHVybiBT
aW1wbGVBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGludFBvaW50KTsK
IH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBJbnRQb2ludCBpbnRQb2ludDsKICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8SW50
UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgaW50UG9pbnQpKQpAQCAtNzU3LDcgKzc1Nyw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxJbnRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEludFJl
Y3QmIGludFJlY3QpCiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRl
Y29kZShkZWNvZGVyLCBpbnRSZWN0KTsKIH0KIAotT3B0aW9uYWw8SW50UmVjdD4gQXJndW1lbnRD
b2RlcjxJbnRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPElu
dFJlY3Q+IEFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIEludFJlY3QgcmVjdDsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCByZWN0KSkKQEAg
LTc4MSw3ICs3ODEsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBJbnRTaXplJiBpbnRTaXplKQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVu
dENvZGVyPEludFNpemU+OjpkZWNvZGUoZGVjb2RlciwgaW50U2l6ZSk7CiB9CiAKLU9wdGlvbmFs
PEludFNpemU+IEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxJbnRTaXplPiBBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRTaXplIGludFNpemU7CiAgICAgaWYgKCFTaW1w
bGVBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUoZGVjb2RlciwgaW50U2l6ZSkpCkBAIC04
MTUsMTQgKzgxNSwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlY2VudFNlYXJjaCYgcgogICAgIGVuY29kZXIgPDwg
cmVjZW50U2VhcmNoLnN0cmluZyA8PCByZWNlbnRTZWFyY2gudGltZTsKIH0KIAotT3B0aW9uYWw8
UmVjZW50U2VhcmNoPiBBcmd1bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVj
ZW50U2VhcmNoPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBzdHJpbmc7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNv
ZGVyID4+IHN0cmluZzsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gdGltZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiB0aW1lOwogICAgIGRlY29kZXIgPj4gdGltZTsKICAgICBpZiAoIXRpbWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgTWltZUNsYXNzSW5mbyYKICAgICBlbmNvZGVyIDw8IG1pbWVDbGFzc0luZm8udHlwZSA8PCBt
aW1lQ2xhc3NJbmZvLmRlc2MgPDwgbWltZUNsYXNzSW5mby5leHRlbnNpb25zOwogfQogCi1PcHRp
b25hbDxNaW1lQ2xhc3NJbmZvPiBBcmd1bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8TWltZUNsYXNzSW5mbz4gQXJndW1lbnRD
b2RlcjxNaW1lQ2xhc3NJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTWlt
ZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNs
YXNzSW5mby50eXBlKSkKQEAgLTkwNCw3ICs5MDQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGx1
Z2luSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbHVnaW5JbmZvJiBwbHVn
aQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkluZm8+IEFyZ3VtZW50Q29k
ZXI8UGx1Z2luSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBBcmd1bWVudENvZGVyPFBsdWdpbkluZm8+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBQbHVnaW5JbmZvIHBsdWdpbkluZm87CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLm5hbWUpKQpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogCiBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiB7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRl
R3JhcGhpY3NDb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhp
Y3NDb250ZXh0OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAg
IGlmICghZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0IHx8ICEqZGlkQ3JlYXRlR3JhcGhpY3NDb250
ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTE3LDI5ICsxMTE3LDI5IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmPFdlYkNvcmU6OkZvbnQ+CiAgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIGZvbnQp
OwogfQogCi1PcHRpb25hbDxSZWY8Rm9udD4+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZjxGb250Pj4gQXJndW1lbnRD
b2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxGb250OjpPcmlnaW4+IG9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6Ok9yaWdpbj4g
b3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2luOwogICAgIGlmICghb3JpZ2luKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Rm9udDo6SW50ZXJzdGl0aWFs
PiBpc0ludGVyc3RpdGlhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnQ6OkludGVyc3RpdGlhbD4g
aXNJbnRlcnN0aXRpYWw7CiAgICAgZGVjb2RlciA+PiBpc0ludGVyc3RpdGlhbDsKICAgICBpZiAo
IWlzSW50ZXJzdGl0aWFsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8Rm9udDo6VmlzaWJpbGl0eT4gdmlzaWJpbGl0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZv
bnQ6OlZpc2liaWxpdHk+IHZpc2liaWxpdHk7CiAgICAgZGVjb2RlciA+PiB2aXNpYmlsaXR5Owog
ICAgIGlmICghdmlzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPEZvbnQ6Ok9yaWVudGF0aW9uRmFsbGJhY2s+IGlzVGV4dE9yaWVudGF0aW9uRmFs
bGJhY2s7CisgICAgc3RkOjpvcHRpb25hbDxGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrPiBpc1Rl
eHRPcmllbnRhdGlvbkZhbGxiYWNrOwogICAgIGRlY29kZXIgPj4gaXNUZXh0T3JpZW50YXRpb25G
YWxsYmFjazsKICAgICBpZiAoIWlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2spCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwogICAgIGlmICghcmVu
ZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTMyMyw3ICsxMzIzLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkdlb21ldHJ5
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkcKICAgICBlbmNvZGVy
IDw8IHNlbGVjdGlvbkdlb21ldHJ5LmlzSG9yaXpvbnRhbCgpOwogfQogCi1PcHRpb25hbDxTZWxl
Y3Rpb25HZW9tZXRyeT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25HZW9tZXRyeT4gQXJndW1l
bnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIFNlbGVjdGlvbkdlb21ldHJ5IHNlbGVjdGlvbkdlb21ldHJ5OwogICAgIEZsb2F0UXVhZCBx
dWFkOwpAQCAtMTMzMSw3ICsxMzMxLDcgQEAgT3B0aW9uYWw8U2VsZWN0aW9uR2VvbWV0cnk+IEFy
Z3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+OjpkZWNvZGUoRGVjb2RlciYgZGUKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRRdWFkKHF1
YWQpOwogCi0gICAgT3B0aW9uYWw8U2VsZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9y
OworICAgIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2aW9y
OwogICAgIGRlY29kZXIgPj4gYmVoYXZpb3I7CiAgICAgaWYgKCFiZWhhdmlvcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1
MDEsNyArMTUwMSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb21wb3NpdGlvblVuZGVybGluZT46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb21wb3NpCiAgICAgZW5jb2RlciA8PCB1
bmRlcmxpbmUuY29sb3I7CiB9CiAKLU9wdGlvbmFsPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBBcmd1
bWVudENvZGVyPENvbXBvc2l0aW9uVW5kZXJsaW5lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CitzdGQ6Om9wdGlvbmFsPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBv
c2l0aW9uVW5kZXJsaW5lPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29tcG9z
aXRpb25VbmRlcmxpbmUgdW5kZXJsaW5lOwogCkBAIC0xNTQ3LDExICsxNTQ3LDExIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxEYXRhYmFzZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
RGF0YWJhc2VEZXRhaWxzJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjdXJyZW50VXNhZ2Up
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRp
b25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGNyZWF0aW9uVGltZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNyZWF0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lOworICAgIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWNhdGlvblRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODA1LDE0
ICsxODA1LDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEaWN0YXRpCiAgICAgZW5jb2RlciA8PCBhbHRl
cm5hdGl2ZS5yYW5nZSA8PCBhbHRlcm5hdGl2ZS5jb250ZXh0OwogfQogCi1PcHRpb25hbDxEaWN0
YXRpb25BbHRlcm5hdGl2ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwog
ICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxEaWN0YXRpb25Db250ZXh0PiBjb250ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8RGljdGF0
aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBkZWNvZGVyID4+IGNvbnRleHQ7CiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTkxMCwxOSArMTkxMCwx
OSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBHcmFtbWFyRGV0YWlsJgogICAgIGVuY29kZXIgPDwgZGV0YWlsLnVzZXJE
ZXNjcmlwdGlvbjsKIH0KIAotT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxH
cmFtbWFyRGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEdy
YW1tYXJEZXRhaWw+IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdl
OwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ3Vlc3NlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiBndWVzc2VzOwogICAgIGRlY29kZXIgPj4gZ3Vlc3NlczsKICAgICBpZiAoIWd1
ZXNzZXMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJp
bmc+IHVzZXJEZXNjcmlwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckRlc2Ny
aXB0aW9uOwogICAgIGRlY29kZXIgPj4gdXNlckRlc2NyaXB0aW9uOwogICAgIGlmICghdXNlckRl
c2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk0MCw3ICsxOTQw
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRhPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHQKIAogYm9vbCBBcmd1bWVudENvZGVyPFRleHRD
aGVja2luZ1JlcXVlc3REYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhJiByZXF1ZXN0KQogewotICAgIE9wdGlvbmFsPFRleHRDaGVja2luZ1JlcXVl
c3RJZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5n
UmVxdWVzdElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShp
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTY4LDIzICsxOTY4LDIz
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNrCiAgICAgZW5jb2RlciA8PCByZXN1bHQucmVwbGFj
ZW1lbnQ7CiB9CiAKLU9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jlc3VsdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAotICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwog
ICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRldGFpbHM7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8R3JhbW1hckRldGFpbD4+IGRldGFpbHM7CiAgICAgZGVjb2RlciA+PiBkZXRhaWxzOwog
ICAgIGlmICghZGV0YWlscykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPFN0cmluZz4gcmVwbGFjZW1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJl
cGxhY2VtZW50OwogICAgIGRlY29kZXIgPj4gcmVwbGFjZW1lbnQ7CiAgICAgaWYgKCFyZXBsYWNl
bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwMjksNyArMjAyOSw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZXZlbCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPj4gcGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJ
RCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGMKIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiYgdmFsdWUpCiB7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gaXNOdWxsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRl
Y29kZXIgPj4gaXNOdWxsOwogICAgIGlmICghaXNOdWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNDAyLDE2ICsyNDAyLDE2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxCbG9iUGFydD46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBCbG9iUGFydCYgYmxvYlBhcnQpCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEJsb2JQYXJ0PiBBcmd1bWVudENvZGVy
PEJsb2JQYXJ0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEJsb2JQ
YXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgT3B0aW9uYWw8QmxvYlBhcnQ6OlR5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxC
bG9iUGFydDo6VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoICgqdHlwZSkgewog
ICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6OkRhdGE6IHsKLSAgICAgICAgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBkYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
ZGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjQ0NSw3ICsyNDQ1LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFRleHRJbmRpY2EKICAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIHRleHRJ
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCkpOwogfQogCi1P
cHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0
YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9y
RGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3JEYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEuc2VsZWN0aW9uUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcykpCkBAIC0yNTUwLDcgKzI1NTAsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RGljdGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERp
Y3Rpb25hcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5k
aWNhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0
b3I7CiAgICAgZGVjb2RlciA+PiB0ZXh0SW5kaWNhdG9yOwogICAgIGlmICghdGV4dEluZGljYXRv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYzNywxMCArMjYzNywxMCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBXZWJDbwogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFJlc291cmNlTG9hZFN0YXRp
c3RpY3M+IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1
bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3M7Ci0gICAgT3B0aW9u
YWw8UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWluOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4g
cmVnaXN0cmFibGVEb21haW47CiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI2NjQsNTIgKzI2NjQsNTIgQEAgT3B0aW9uYWw8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Pjo6ZGVjb2RlKEQKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFN0b3Jh
Z2UgYWNjZXNzCi0gICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+PiBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAg
ICAgZGVjb2RlciA+PiBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgaWYg
KCFzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFp
bnMgPSBXVEZNb3ZlKCpzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAg
Ly8gVG9wIGZyYW1lIHN0YXRzCi0gICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBkZWNv
ZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3Rp
Y3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8pOwogCi0gICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+PiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2Rl
ciA+PiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c0Zyb20pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlz
dGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSBXVEZNb3ZlKCp0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c0Zyb20pOwogCi0gICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CisgICAgc3RkOjpvcHRpb25hbDxI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0
czsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CiAgICAg
aWYgKCF0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0
cyA9IFdURk1vdmUoKnRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAgLy8g
U3ViZnJhbWUgc3RhdHMKLSAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4g
c3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluczsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+PiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGRl
Y29kZXIgPj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBpZiAoIXN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
c3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgqc3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwotICAg
IE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW5zOworICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGlmICghc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0
aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOworICAgIHN0ZDo6b3B0aW9u
YWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG87CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGlm
ICghc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBXVEZN
b3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKIAotICAgIE9wdGlvbmFsPEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb207Cisg
ICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGRlY29kZXIgPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tOwogICAgIGlmICghc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjc1OCw3ICsyNzU4LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPE1lZGlhQ29uc3RyYWludHM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6TWUKIAogYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhQ29uc3RyYWludHM+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyYgY29uc3Ry
YWludHMpCiB7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXRNYXA+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIGRlY29k
ZXIgPj4gbWFuZGF0b3J5Q29uc3RyYWludHM7CiAgICAgaWYgKCFtYW5kYXRvcnlDb25zdHJhaW50
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgxNCwxNCArMjgxNCwxNCBAQCBib29sIEFy
Z3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTZXJ2aWNlVwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNTZXJ2aWNlV29ya2Vy
RGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyRGF0
YSkgewotICAgICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4gd29ya2VyRGF0YTsKICAgICAg
ICAgZGVjb2RlciA+PiB3b3JrZXJEYXRhOwogICAgICAgICBpZiAoIXdvcmtlckRhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZGF0YSA9IFdURk1vdmUoKndvcmtlckRh
dGEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiBjbGllbnREYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBjbGllbnREYXRhOwogICAgICAgICBkZWNvZGVyID4+IGNsaWVudERhdGE7CiAgICAg
ICAgIGlmICghY2xpZW50RGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NDcs
MTQgKzI4NDcsMTQgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElk
ZW50aWZpZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2UKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlzU2VydmljZVdvcmtlcklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGlzU2VydmljZVdvcmtlcklkZW50aWZpZXIpIHsKLSAgICAgICAgT3B0aW9uYWw8
U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHdvcmtlcklkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHdvcmtlcklkZW50aWZpZXI7CiAgICAg
ICAgIGRlY29kZXIgPj4gd29ya2VySWRlbnRpZmllcjsKICAgICAgICAgaWYgKCF3b3JrZXJJZGVu
dGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKCp3b3JrZXJJZGVudGlmaWVyKTsKICAgICB9IGVsc2UgewotICAgICAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50SWRlbnRpZmllcjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gY2xpZW50
SWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgICAg
ICBpZiAoIWNsaWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
ODcyLDE0ICsyODcyLDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlv
bj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBNZWRpYVNlCiAgICAgZW5jb2RlciA8
PCBvcHRpb24udHlwZTsKIH0KIAotT3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb24+IEFyZ3Vt
ZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb24+IEFyZ3VtZW50Q29kZXI8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGRpc3BsYXlOYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkaXNwbGF5
TmFtZTsKICAgICBkZWNvZGVyID4+IGRpc3BsYXlOYW1lOwogICAgIGlmICghZGlzcGxheU5hbWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8TWVkaWFT
ZWxlY3Rpb25PcHRpb246OlR5cGU+IHR5cGU7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVNlbGVj
dGlvbk9wdGlvbjo6VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0
eXBlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjkxMyw3ICsyOTEzLDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmUHQKICAgICBlbmNvZGVyIDw8ICpvcmlnaW47CiB9CiAgICAg
Ci1PcHRpb25hbDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBvcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghb3JpZ2luKQpAQCAtMjkzNCw3
ICsyOTM0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEZvbnRBdHRyaWJ1dGUKICAgICB9CiB9CiAKLU9wdGlvbmFs
PEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENv
ZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRm9u
dEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKIApAQCAtMjk3OCw3ICsyOTc4LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIsIGNvbnMKICAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRhLm1p
bWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5nZXQo
KSB9OwogfQogCi1PcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkKQEAgLTMwMDgsNyArMzAwOCw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNv
ZGUoRW5jb2RlciYgZW5jCiAgICAgICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCB2YWx1
ZSk7CiB9CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGhh
c1BsYXRmb3JtRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1BsYXRmb3JtRGF0YSkp
CkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQpAQCAt
MzA0NSw3ICszMDQ1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKIH0KIAotT3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQpAQCAtMzA3NCw3
ICszMDc0LDcgQEAgc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRv
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXAKICAgICByZXR1cm4gc2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGU7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVj
b2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFuZGxlKSB8fCBoYW5kbGUuaXNOdWxsKCkpCkBAIC0zMTAwLDEwICszMTAw
LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yCiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIHNjcmlwdC5idWZmZXIoKSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotICAg
IE9wdGlvbmFsPGJvb2w+IGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXNT
aGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zMTI3LDcgKzMxMjcsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZQogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAK
LU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlw
ZSkpCkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogI2VuZGlm
CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5hbHBoYSkpCkBAIC0zMjExLDcgKzMyMTEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGU8RW5jb2Rlcj4oRW5j
bwogdGVtcGxhdGUKIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZl
SW5mbyYpOwogCi1PcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
bz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQpAQCAtMzIzMywxMyArMzIzMywxMyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIGVuY29kZXIgPDwgaW5mby5ub3JtYWxpemVk
UXVhZHM7CiB9CiAKLU9wdGlvbmFsPEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IEFy
Z3VtZW50Q29kZXI8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJ
bmZvPiBBcmd1bWVudENvZGVyPEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJ
bmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCByZXN1bHQp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPEZs
b2F0UXVhZD4+IG5vcm1hbGl6ZWRRdWFkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9h
dFF1YWQ+PiBub3JtYWxpemVkUXVhZHM7CiAgICAgZGVjb2RlciA+PiBub3JtYWxpemVkUXVhZHM7
CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFi
MGMyNjM2MzI3M2ZhMjE0MGVhNjU5Yzg2Y2ZjNTA4ZDMyOGRiYWQuLmRhZTgwZmY3ZGQyNTQyODkx
MjFiNDEzNDBiNzdkMGY5YzRmNTA2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0yMzAsNyArMjMwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRl
ZFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnM+IHsKQEAgLTI0MCwyMiArMjQwLDIy
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnM+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDaGFy
YWN0ZXJSYW5nZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6Q2hhcmFjdGVyUmFuZ2UmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2hh
cmFjdGVyUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Q2hhcmFjdGVyUmFuZ2U+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlu
Zm8+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUluZm8mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvPiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkJik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZShEZWNvZGVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6VG91Y2hBY3Rpb25EYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpUb3VjaEFjdGlvbkRhdGEmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6VG91Y2hBY3Rpb25EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRvdWNoQWN0aW9uRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
RXZlbnRUcmFja2luZ1JlZ2lvbnM+IHsKQEAgLTI5Niw3ICsyOTYsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gewogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9hdFBvaW50PiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
RmxvYXRQb2ludCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBk
ZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZsb2F0UG9pbnQzRD4gewpAQCAtMzA3LDcgKzMwNyw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRQb2ludDNEPiB7CiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UmVjdD4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6RmxvYXRSZWN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogICAgIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9hdEJveEV4dGVudD4gewpAQCAtMzI5LDcgKzMyOSw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVj
dD4gewogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4g
ZGVjb2RlKERlY29kZXImKTsKIH07CiAKICNlbmRpZgpAQCAtMzQyLDIwICszNDIsMjAgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXM+
IHsKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW50UG9pbnQ+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkludFJlY3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW50U2l6ZT4gewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkxheW91dFNpemU+
IHsKQEAgLTM4MCwxMiArMzgwLDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6VmVsb2NpdHlEYXRhPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWltZUNsYXNzSW5mbz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6TWltZUNsYXNzSW5mbyYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpNaW1lQ2xhc3NJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1pbWVDbGFzc0luZm8+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBsdWdpbkluZm8+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsdWdp
bkluZm8mKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luSW5mbz4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5JbmZv
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gewpAQCAtNDE0LDkgKzQxNCw5IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vyc29yPiB7CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZvbnQ+PiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGb250Pj4gZGVjb2RlKERl
Y29kZXImKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpGb250PiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhPiBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpAQCAtNDU0LDM0ICs0NTQsMzQgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6Ok1hY2hTZW5kUmlnaHQ+IHsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OktleXByZXNzQ29tbWFu
ZCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGRlY29k
ZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxDR1BvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR1Bv
aW50KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dQb2ludD4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDR1BvaW50PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDR1NpemU+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIENHU2l6ZSk7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENHU2l6ZT4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDR1NpemU+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHUmVj
dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgQ0dSZWN0KTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8Q0dSZWN0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPENHUmVjdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8Q0dBZmZpbmVUcmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIENHQWZmaW5lVHJhbnNmb3JtKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q0dB
ZmZpbmVUcmFuc2Zvcm0+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZWxlY3Rpb25HZW9tZXRyeT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnkmKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IGRlY29kZShEZWNvZGVyJik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uR2VvbWV0cnk+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodD4gewpAQCAtNTI3LDEzICs1MjcsMTMgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dD4gewogI2lmIFVTRShDVVJMKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDdXJsUHJveHlTZXR0aW5ncz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M+IGRlY29kZShEZWNv
ZGVyJik7CiB9OwogI2VuZGlmCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lJik7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKQEAgLTU0Myw3ICs1NDMsNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscz4gewogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0
aXZlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEaWN0
YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJT
ZXR0aW5ncz4gewpAQCAtNTY4LDcgKzU2OCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD4gewogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT4gewpAQCAtNTc4LDcgKzU3OCw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERh
dGE+IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldD4gewpAQCAtNjI1LDcgKzYyNSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4+IHsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpCbG9iUGFydD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QmxvYlBhcnQmKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6QmxvYlBhcnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QmxvYlBhcnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtNjM3LDcgKzYzNyw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyPiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dElu
ZGljYXRvckRhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEaWN0aW9uYXJ5UG9w
dXBJbmZvPiB7CkBAIC02NTgsNyArNjU4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD4gewogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVjZW50U2VhcmNoJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+IHsKQEAgLTY2OCwzNCArNjY4LDM0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gewogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdD4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudENvbnRhY3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRDb250YWN0PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNz
aW9uPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dE1ldGhvZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6UGF5bWVudE1ldGhvZCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
TWV0aG9kPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRNZXRob2Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
PiB7CkBAIC03MTQsMTIgKzcxNCwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudAogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpBcHBsZVBheUVycm9y
Pj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkFwcGxlUGF5RXJyb3I+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpBcHBsZVBheUVycm9yPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWZQdHI8V2ViQ29yZTo6QXBwbGVQYXlFcnJvcj4+IGRlY29kZShEZWNvZGVyJik7CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRTZXNz
aW9uRXJyb3I+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRTZXNzaW9uRXJyb3ImKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudFNlc3Npb25FcnJvcj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50U2Vzc2lvbkVycm9yPiBkZWNvZGUoRGVjb2RlciYpOwog
fTsKIAogI2VuZGlmCkBAIC03NTIsNyArNzUyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRp
b24+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uT3B0aW9uJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm9taXNlZEF0dGFj
aG1lbnRJbmZvPiB7CkBAIC03NjIsMjEgKzc2MiwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8+IHsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0
ZXM+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVzJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1
dGVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKTsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZVBsYXRm
b3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImLCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYpOwogfTsKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKICNlbmRpZiAvLyBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtNzg0LDMyICs3ODQsMzIgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsK
ICNpZiBFTkFCTEUoVklERU8pCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVWYWx1ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjb2RlciYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6
UGxhdGZvcm1UeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUpOwogfTsK
ICNlbmRpZgogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogI2lmIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEYXRh
RGV0ZWN0b3JFbGVtZW50SW5mbz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8mKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudEluZm8+IGRlY29kZShEZWNvZGVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxlbWVudElu
Zm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjZW5kaWYKQEAgLTgxNywxNCArODE3LDE0IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGF0YURldGVjdG9yRWxl
bWVudEluZm8+IHsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKICNlbmRpZgogCiAjaWYgSEFWRShQQVNTS0lUX0lOU1RBTExNRU5UUykK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAK
QEAgLTgzMiwxMyArODMyLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4gewogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKICNlbmRpZgogCkBAIC04NDYsNyArODQ2
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFE
ZXRlY3RvckluZm8mKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFdl
YkNvcmU6OkltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IGRlY29kZShEZWNvZGVyJik7
CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8+IGRlY29kZShEZWNvZGVyJik7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VFeHRy
YWN0aW9uRGF0YURldGVjdG9ySW5mbyYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCBhOTY4Zjg0ZjlhYmVmZjU1ZWI0ZGNhNWRhM2E0
MDZlMjlkNWI3MTA5Li5mMTI4MWIwYTkxYmZjMzk1NzgxMzIzZjdiOWM4YjYwNjUyMWU5M2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00
NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9CiAgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxvbmdpdHVkZTsgfQogICAgIGRvdWJsZSBhY2N1
cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFs
dGl0dWRlOyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9jb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIE9wdGlvbmFs
PGRvdWJsZT4gaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmhlYWRpbmc7
IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9z
aXRpb24uc3BlZWQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24u
YWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uaGVhZGluZzsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLnNwZWVkOyB9
CiAKICAgICBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYgY29yZVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGI2MmRiMzdmMTY4ZjY3ODc1
Nzc4NTJlYTJjNjQ5MmJhYTVlOGRiODMuLjAyYWY3M2VmM2I3MzYxNzRhNmJmNDUzYTVlYzZiYmEw
NzNkY2MwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzTGlua1RleHRJbmRpY2F0b3IpIHsKLSAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRv
ckRhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgaWYgKCFp
bmRpY2F0b3JEYXRhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAppbmRleCBiYzQzMjIyODY0ODRlNmFmZGQ0OTM1M2Zh
ZTZhOGZiM2NkNWU2NmYyLi5hNzBlYjc2YzVjMjJhMmM3NzljMzA4NzQ0MzNhYzE5MDM2YjVmMWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmCiAKICNlbGlmIFBMQVRGT1JNKEdUSykKIAot
V2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3Ry
aW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZl
VmlydHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9w
dGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiYgY29tbWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZp
ZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2
ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJ
bnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRl
cmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4m
JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wg
aXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3Rh
bXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1f
dGV4dCh0ZXh0KQogICAgICwgbV91bm1vZGlmaWVkVGV4dCh0ZXh0KQpAQCAtMTAzLDcgKzEwMyw3
IEBAIFdlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYKIAogI2VsaWYgVVNFKExJQldQRSkKIAotV2ViS2V5
Ym9hcmRFdmVudDo6V2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBr
ZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVh
bEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgcHJlZWRpdFVuZGVybGluZXMsIE9wdGlvbmFs
PEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNLZXlwYWQsIE9w
dGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCitXZWJLZXli
b2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtl
eUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFs
S2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBzdGQ6
Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UsIGJvb2wgaXNL
ZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAp
CiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fdGV4
dCh0ZXh0KQogICAgICwgbV91bm1vZGlmaWVkVGV4dCh0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViS2V5Ym9hcmRFdmVudC5oCmluZGV4IGNiODAyOWRjNDZkYzI1MzFmNWNjMjM0MDlkYzZkMmYx
MWQ1YTNiNDkuLjdhNTg5M2ViNjhhZDI0Y2Y5MmM4MzIwNzA0ODU0ODliN2NmYWZhMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBw
dWJsaWM6CiAjaWYgVVNFKEFQUEtJVCkKICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBp
bnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBt
YWNDaGFyQ29kZSwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4mLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwg
Ym9vbCBpc1N5c3RlbUtleSwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1w
KTsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29u
c3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQg
bmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPEVkaXRp
bmdSYW5nZT4mJiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgT3B0
aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKKyAgICBXZWJLZXlib2FyZEV2
ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgY29kZSwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1
YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+JiYgY29t
bWFuZHMsIGJvb2wgaXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVz
dGFtcCk7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYktleWJvYXJkRXZlbnQo
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHVubW9kaWZpZWRUZXh0LCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlk
ZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5
Q29kZSwgaW50IG1hY0NoYXJDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBib29sIGlz
QXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwgT3B0aW9uU2V0PE1v
ZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbGlmIFVTRShMSUJXUEUpCi0gICAgV2Vi
S2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdp
bmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBib29sIGhhbmRs
ZWRCeUlucHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRl
cmxpbmU+PiYmLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYsIGJvb2wgaXNLZXlwYWQsIE9wdGlv
blNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CisgICAgV2ViS2V5Ym9hcmRFdmVu
dChUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIGNvZGUsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFs
S2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0
aG9kLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+
JiYsIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmLCBib29sIGlzS2V5cGFkLCBPcHRpb25T
ZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOwogI2Vsc2UKICAgICBXZWJLZXlib2Fy
ZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVk
VGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5n
JiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmly
dHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNL
ZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXksIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRp
bWVzdGFtcCk7CiAjZW5kaWYKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFu
ZGxlZEJ5SW5wdXRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZWRCeUlucHV0TWV0aG9k
OyB9CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCi0gICAgY29uc3Qg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mIHByZWVkaXRV
bmRlcmxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVlZGl0VW5kZXJsaW5lczsgfQotICAgIGNv
bnN0IE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mIHByZWVkaXRTZWxlY3Rpb25SYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlZWRpdFNlbGVjdGlvblJhbmdlOyB9CisgICAgY29uc3Qgc3RkOjpvcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYgcHJlZWRpdFVuZGVy
bGluZXMoKSBjb25zdCB7IHJldHVybiBtX3ByZWVkaXRVbmRlcmxpbmVzOyB9CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2UoKSBjb25z
dCB7IHJldHVybiBtX3ByZWVkaXRTZWxlY3Rpb25SYW5nZTsgfQogI2VuZGlmCiAjaWYgVVNFKEFQ
UEtJVCkKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYgY29tbWFu
ZHMoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRzOyB9CkBAIC05NSw4ICs5NSw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kIHsgZmFsc2UgfTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKLSAgICBPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9w
dGlvbmFsPEVkaXRpbmdSYW5nZT4gbV9wcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBtX3ByZWVkaXRV
bmRlcmxpbmVzOworICAgIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiBtX3ByZWVkaXRTZWxl
Y3Rpb25SYW5nZTsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgVmVjdG9yPFdlYkNvcmU6
OktleXByZXNzQ29tbWFuZD4gbV9jb21tYW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYWI4NjliNDEwNzdiMmRiYTI4
MWQ0MmMxNDYxZDllZTNkOWFlODgzMS4uOWU3YjdmMmZiZGExMDdkMWNkOTAwMjQ4YTVkOWI2YWM2
YmE3MjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKIH0K
IAotT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CiAKQEAgLTE5OSwxNyArMTk5LDE3IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgT3B0aW9uYWw8RHJhd2luZ0FyZWFJZGVudGlmaWVyPiBkcmF3aW5nQXJlYUlkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxEcmF3aW5nQXJlYUlkZW50aWZpZXI+IGRyYXdpbmdB
cmVhSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAg
ICBpZiAoIWRyYXdpbmdBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciA9ICpkcmF3aW5nQXJlYUlk
ZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFnZVBy
b3h5SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IHdlYlBhZ2VQcm94eUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlUHJveHlJZGVu
dGlmaWVyOwogICAgIGlmICghd2ViUGFnZVByb3h5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBX
VEZNb3ZlKCp3ZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKLSAgICBPcHRpb25hbDxXZWJQYWdlR3Jv
dXBEYXRhPiBwYWdlR3JvdXBEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0
YT4gcGFnZUdyb3VwRGF0YTsKICAgICBkZWNvZGVyID4+IHBhZ2VHcm91cERhdGE7CiAgICAgaWYg
KCFwYWdlR3JvdXBEYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM5LDE5
ICsyMzksMTkgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50OwogICAgIGRlY29kZXIgPj4gdXNlckFnZW50
OwogICAgIGlmICghdXNlckFnZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMudXNlckFnZW50ID0gV1RGTW92ZSgqdXNlckFnZW50KTsKIAotICAgIE9wdGlv
bmFsPGJvb2w+IGl0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpdGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0OwogICAgIGRl
Y29kZXIgPj4gaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdDsKICAgICBpZiAoIWl0
ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pdGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0
ID0gKml0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3Q7CiAKLSAgICBPcHRpb25hbDxW
ZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPj4gaXRlbVN0YXRlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+PiBpdGVtU3RhdGVzOwogICAg
IGRlY29kZXIgPj4gaXRlbVN0YXRlczsKICAgICBpZiAoIWl0ZW1TdGF0ZXMpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFWb2x1bWUpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzPiBtdXRlZFN0YXRlRmxhZ3M7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3M+IG11dGVkU3Rh
dGVGbGFnczsKICAgICBkZWNvZGVyID4+IG11dGVkU3RhdGVGbGFnczsKICAgICBpZiAoIW11dGVk
U3RhdGVGbGFncykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zY3JvbGxQaW5uaW5nQmVoYXZpb3IpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBzY3JvbGxiYXJPdmVybGF5
U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPHVpbnQzMl90Pj4gc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlOwogICAgIGRlY29kZXIgPj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwog
ICAgIGlmICghc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMzE4LDE0ICszMTgsMTQgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2
ZWwpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4g
aGFzUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50OwogICAgIGRlY29kZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAg
IGlmICghaGFzUmVzb3VyY2VMb2FkQ2xpZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVz
b3VyY2VMb2FkQ2xpZW50KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOwogICAg
IGRlY29kZXIgPj4gY29sb3JTcGFjZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0zNDUsNyArMzQ1LDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2QKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld1NpemUpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzPj4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+PiBvdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50
czsKICAgICBpZiAoIW92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0zNTMsNyArMzUzLDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBPcHRpb25hbDxP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IGF0dGFjaG1lbnRFbGVtZW50
RXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRs
ZXM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgaWYgKCFhdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0zODgsMjYgKzM4OCwyNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUUoMjA3NzE2
KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBp
cyBjb21wbGV0ZS4KLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4g
bWVkaWFFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IG1lZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IG1l
ZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIW1lZGlhRXh0ZW5zaW9uSGFuZGxlcykKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9u
SGFuZGxlcyA9IFdURk1vdmUoKm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRs
ZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVk
aWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBtZWRpYUlPS2l0RXh0ZW5z
aW9uSGFuZGxlczsKICAgICBpZiAoIW1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lv
bkhhbmRsZXMgPSBXVEZNb3ZlKCptZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAgICAgLy8g
RklYTUUoMjA3NzE2KTogRW5kIHJlZ2lvbiB0byByZW1vdmUuCiAKLSAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAg
IHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGdwdUlPS2l0RXh0
ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsK
ICAgICBpZiAoIWdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1v
dmUoKmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhh
bmRsZXM7CiAgICAgZGVjb2RlciA+PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAo
IWdwdU1hY2hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtNDE1LDcgKzQxNSw3IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAjZW5kaWYKIAogI2lm
IEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZvbnRNYWNo
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7
CiAgICAgaWYgKCFmb250TWFjaEV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxkb3VibGU+PiBjcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPj4gY3B1TGltaXQ7CiAgICAgZGVjb2RlciA+PiBjcHVMaW1pdDsKICAgICBpZiAoIWNw
dUxpbWl0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDU3LDE0ICs0NTcsMTQg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB1cmxTY2hlbWVzV2l0aExlZ2FjeUN1
c3RvbVByb3RvY29sSGFuZGxlcnM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
dXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGRlY29kZXIg
Pj4gdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGlmICgh
dXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0
b21Qcm90b2NvbEhhbmRsZXJzID0gV1RGTW92ZSgqdXJsU2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Q
cm90b2NvbEhhbmRsZXJzKTsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAg
ICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Pj4gYXBwbGlj
YXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAgICAgZGVjb2RlciA+
PiBhcHBsaWNhdGlvbk1hbmlmZXN0OwogICAgIGlmICghYXBwbGljYXRpb25NYW5pZmVzdCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ3OSwxOSArNDc5LDE5IEBAIE9wdGlvbmFs
PFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmVudW1l
cmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+
IHVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxVc2Vy
Q29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiB1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0
ZXJzOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVyczsKICAg
ICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0
ZXJzID0gV1RGTW92ZSgqdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycyk7CiAKLSAgICBP
cHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+PiBiYWNrZ3JvdW5kQ29s
b3I7CiAgICAgZGVjb2RlciA+PiBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKCFiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNr
Z3JvdW5kQ29sb3IgPSBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgT3B0aW9uYWw8
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBvbGRQYWdlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlE
OwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNTAwLDM3ICs1MDAsMzcgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRl
bk1lZGlhVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFN0cmluZz4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBkZWNvZGVyID4+
IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBpZiAoIWNvcnNEaXNhYmxpbmdQYXR0ZXJucykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxp
bmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7CiAKLSAgICBPcHRp
b25hbDxib29sPiBsb2Fkc1N1YnJlc291cmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxv
YWRzU3VicmVzb3VyY2VzOwogICAgIGRlY29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAg
aWYgKCFsb2Fkc1N1YnJlc291cmNlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOwogCi0g
ICAgT3B0aW9uYWw8T3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0
czsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+Pj4gYWxs
b3dlZE5ldHdvcmtIb3N0czsKICAgICBkZWNvZGVyID4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAg
ICAgaWYgKCFhbGxvd2VkTmV0d29ya0hvc3RzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0cyA9ICphbGxvd2VkTmV0d29ya0hv
c3RzOwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRV
bnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVu
dGlsTm90aWZpY2F0aW9uOwogICAgIGlmICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICAKLSAgICBPcHRpb25hbDxib29sPiBjcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBj
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIAotICAgIE9wdGlvbmFsPFN0
cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwcm9j
ZXNzRGlzcGxheU5hbWU7CiAgICAgZGVjb2RlciA+PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAg
aWYgKCFwcm9jZXNzRGlzcGxheU5hbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggMTNmYTMwZWYxNjZiMDhhNTJhMzk0OTVhMWNmNjcxMDEwNjRkMzBkYS4uZDViMTNkMmIwOTE1
YjQ4ZWNlOWJmNmRlOTZlODdiYTU5MDk0ZWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVj
b2RlciYpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZTsKIApAQCAtODIsNyArODIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhl
ZExheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29sIGFs
d2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyOwogICAgIGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyOwpAQCAtMTIwLDEzICsxMjAsMTMgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkludFNpemUgbWluaW11bVNpemVGb3JBdXRvTGF5b3V0
OwogICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7
CiAgICAgYm9vbCBhdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzOwogICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3Jv
bGxQaW5uaW5nQmVoYXZpb3I7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgT3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiwgYnV0IHdlIHdvdWxkIG5lZWQgdG8K
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+LCBidXQgd2Ugd291bGQgbmVlZCB0bwogICAgIC8vIGNvcnJlY3Rs
eSBoYW5kbGUgZW51bXMgaW5zaWRlIE9wdGlvbmFscyB3aGVuIGVuY29kaW5nIGFuZCBkZWNvZGlu
Zy4gCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhck92ZXJsYXlTdHlsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAKICAgICBib29s
IGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZUVsZXZhdGVkVXNlcklu
dGVyZmFjZUxldmVsIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAg
Ym9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BP
UlQpCkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgZG91YmxlIHZpZXdwb3J0Q29uZmlndXJhdGlvbkxheW91dFNpemVTY2FsZUZhY3Rv
cjsKICAgICBkb3VibGUgdmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmlj
ZVdpZHRoOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3
U2l6ZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzPiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOworICAgIHN0ZDo6b3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5z
aW9uSGFuZGxlczsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIHNjcmVlblNpemU7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlmCiAjaWYgSEFWRShTVEFUSUNfRk9OVF9S
RUdJU1RSWSkKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGZvbnRNYWNo
RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKICNlbmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VO
VF9DT0xPUlMpCiAgICAgV2ViQ29yZTo6Q29sb3IgYWNjZW50Q29sb3I7CkBAIC0xOTQsMTMgKzE5
NCwxMyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgT3B0aW9uU2V0
PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogCiAg
ICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gY3B1TGltaXQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0OwogCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiB1cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0
b3I8U3RyaW5nPiB1cmxTY2hlbWVzV2l0aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7CiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4gYXBwbGljYXRpb25NYW5pZmVzdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAj
ZW5kaWYKIAogICAgIGJvb2wgbmVlZHNGb250QXR0cmlidXRlcyB7IGZhbHNlIH07CkBAIC0yMTEs
MTUgKzIxMSwxNSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzIHVzZXJDb250ZW50Q29udHJvbGxlclBhcmFt
ZXRlcnM7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvbGRQYWdlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb2xkUGFnZUlEOwogCiAgICAgU3RyaW5n
IG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24g
eyB0cnVlIH07CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKLSAgICBPcHRp
b25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBib29sIGNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBTdHJpbmcg
cHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcAppbmRleCBiMDlmMWMyOWE3MjEwNTk1MDMzNzFjOWFlZGNhYTBhNzM1ZDRjNTljLi42NDhk
MDIzMGNmOWQ1MWNiYTk2ZjZkNjIzYjAzYTM4OGQ4MjRiNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBAIHZvaWQgV2ViUGFn
ZUdyb3VwRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHBhZ2VHcm91cElEOwogfQogCi1PcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQ
YWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25h
bDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7
CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlR3JvdXBJRDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlR3JvdXBJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VHcm91cElEOwogICAg
IGlmICghcGFnZUdyb3VwSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKaW5kZXggYzJjYjYyMTljNDAxMzc0YTg4MWUw
Yjk4NmM4NWM3NGQ4YTJkYWI0YS4uOGNmODViMzQwYzExMzQ3ZmE4Mzg1MDUyNzM2ZmI0OWJmMzAw
MGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlBhZ2VHcm91cERhdGEgewog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJQYWdlR3JvdXBEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAg
ICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcAppbmRleCA5ZDQ0MDZh
NDBhNGZhZGRmYjMwYzJlNjAxODVmMjhmM2FhMzJmODc5Li41OTA0ZjEyNmFlOWJmNzE2NWNmMDA0
YzYzYzE3ZGNkMDczMGU4NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRm
b3JtVG91Y2hQb2ludC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBtX2ZvcmNlOwogfQogCi1PcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3Vs
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lkKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQb3B1cEl0ZW0uY3BwCmluZGV4IDEzODE2NWEzNTA0NTRhNWUzNjJmN2FiNjkwMDRiMzJl
OGZlMzkzMmIuLmYwMDQ1NGViNzI5NjM3MDBjMTIzY2JkMTQ0ODZlM2YyOWFmMzhkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdl
YlBvcHVwSXRlbTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IG1faXNTZWxlY3RlZDsKIH0KIAotT3B0aW9uYWw8V2ViUG9wdXBJdGVtPiBXZWJQb3B1
cEl0ZW06OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYlBv
cHVwSXRlbT4gV2ViUG9wdXBJdGVtOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIFR5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRleCA0ZjEyYzRiNWM5YmVhNmJhMTUxNjY1OWJiZDBmOGYx
NzM1N2FjZDViLi4yYzM3NTQ1ZWNjNmM3MmY4ZGZmYjNiMDgxYWU1OWVlNmI3OTI1N2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgV2Vi
UG9wdXBJdGVtIHsKICAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29u
c3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29s
IGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYlBvcHVw
SXRlbT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YlBvcHVwSXRlbT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5jcHAKaW5kZXggY2U1NmY5Y2Q0NjI4NjA5NGM2ZTQxNDEwZWViYjRmOTQ5ZDdlZmU3OS4u
OWQ2ZmQxOWVlYTdkNjA2MjNiMmE0NjBjMWM5YjcyYWZiODQ4Njg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQCB2
b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPFZhbHVl
TWFwPiB2YWx1ZXM7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZU1hcD4gdmFsdWVzOwogICAgIGRl
Y29kZXIgPj4gdmFsdWVzOwogICAgIGlmICghdmFsdWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmVzdWx0Lm1fdmFsdWVzID0gV1RGTW92ZSgqdmFsdWVzKTsKIAotICAgIE9wdGlvbmFs
PFZhbHVlTWFwPiBvdmVycmlkZGVuRGVmYXVsdHM7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZU1h
cD4gb3ZlcnJpZGRlbkRlZmF1bHRzOwogICAgIGRlY29kZXIgPj4gb3ZlcnJpZGRlbkRlZmF1bHRz
OwogICAgIGlmICghb3ZlcnJpZGRlbkRlZmF1bHRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDIyOTdiZWUyOTc3ODVhOThiMWIyNTk4YTZhZmQ0MjcwNTA4YmNhMWIuLjJm
YzBlMGE1MDliNzRmY2QxMmIyY2ExMmE2NDlkZTVlMDE2YmNjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0y
MDksMTMgKzIwOSwxMyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBpbmpl
Y3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAg
ICBkZWNvZGVyID4+IGluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBhZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lv
bkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gYWRk
aXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghYWRkaXRpb25hbFNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjUsMTkgKzIy
NSwxOSBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAgICAgZGVjb2RlciA+PiBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
ICAgIGlmICghY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250YWluZXJD
YWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIWNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
Y29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb250YWluZXJUZW1wb3JhcnlEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjb250YWluZXJUZW1wb3JhcnlEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjb250YWluZXJUZW1wb3JhcnlEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0NSw3ICsyNDUs
NyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGVuYWJsZVJlbW90ZVdl
Ykluc3BlY3RvckV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGVuYWJsZVJlbW90ZVdl
Ykluc3BlY3RvckV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWVuYWJsZVJlbW90ZVdlYkluc3Bl
Y3RvckV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjU5LDcgKzI1
OSw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhdWRpb0NhcHR1cmVF
eHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IGF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGF1ZGlvQ2Fw
dHVyZUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vi
UHJvY2Vzc0NyZWF0CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHVpUHJvY2Vzc0J1bmRsZVJlc291cmNl
UGF0aEV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAg
IGRlY29kZXIgPj4gdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwog
ICAgIGlmICghdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDUsNyArNDA1LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNz
Q3JlYXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5Q
cm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHNjcmVl
blByb3BlcnRpZXM7CiAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MjYsNTIgKzQyNiw1MiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiB3ZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVyczsKICAgICBpZiAoIXdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyA9IFdURk1vdmUoKndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKIAogI2lm
IFBMQVRGT1JNKElPUykKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eT4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5k
bGVzOwogICAgIGRlY29kZXIgPj4gY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlczsKICAg
ICBpZiAoIWNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBX
VEZNb3ZlKCpjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgogCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gY29udGFpbmVyTWFu
YWdlckV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gY29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZTsK
ICAgICBkZWNvZGVyID4+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYg
KCFjb250YWluZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcGFyYW1ldGVycy5jb250YWluZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqY29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFu
ZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+PiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbW9i
aWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW1vYmlsZUdlc3RhbHRFeHRlbnNp
b25IYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdl
c3RhbHRFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCptb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFu
ZGxlKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+
IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lv
bkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwog
ICAgIGlmICghbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkaWFnbm9z
dGljc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBkaWFnbm9zdGljc0V4dGVuc2lv
bkhhbmRsZXM7CiAgICAgaWYgKCFkaWFnbm9zdGljc0V4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLmRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxl
cyA9IFdURk1vdmUoKmRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcyk7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
PiBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAg
IGRlY29kZXIgPj4gZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZHluYW1p
Y01hY2hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1l
dGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljTWFjaEV4
dGVuc2lvbkhhbmRsZXMpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgc3RkOjpvcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBkZWNvZGVyID4+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYg
KCFkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NzksMTMgKzQ3OSwxMyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5Owor
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3lzdGVtSGFzQmF0dGVyeTsKICAgICBkZWNvZGVyID4+
IHN5c3RlbUhhc0JhdHRlcnk7CiAgICAgaWYgKCFzeXN0ZW1IYXNCYXR0ZXJ5KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNCYXR0ZXJ5ID0gV1RGTW92ZSgq
c3lzdGVtSGFzQmF0dGVyeSk7CiAKLSAgICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNBQzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN5c3RlbUhhc0FDOwogICAgIGRlY29kZXIgPj4gc3lzdGVt
SGFzQUM7CiAgICAgaWYgKCFzeXN0ZW1IYXNBQykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDk5LDEzICs0OTksMTMgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OkNT
U1ZhbHVlVG9TeXN0ZW1Db2xvck1hcD4gY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OkNTU1ZhbHVlVG9TeXN0ZW1Db2xv
ck1hcD4gY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwOwogICAgIGRlY29kZXIgPj4gY3NzVmFsdWVU
b1N5c3RlbUNvbG9yTWFwOwogICAgIGlmICghY3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFyYW1ldGVycy5jc3NWYWx1ZVRvU3lzdGVtQ29sb3JN
YXAgPSBXVEZNb3ZlKCpjc3NWYWx1ZVRvU3lzdGVtQ29sb3JNYXApOwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q29sb3I+IGZvY3VzUmluZ0NvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGZvY3VzUmluZ0NvbG9yOwogICAgIGRlY29kZXIgPj4gZm9jdXNSaW5nQ29sb3I7
CiAgICAgaWYgKCFmb2N1c1JpbmdDb2xvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIw
LDcgKzUyMCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKLSAgICBPcHRpb25hbDxPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFu
ZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+
PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFwcmVmZXJlbmNlc0V4dGVu
c2lvbkhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAg
T3B0aW9uYWw8Ym9vbD4gdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiB1c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsKICAgICBk
ZWNvZGVyID4+IHVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzOwogICAgIGlmICghdXNl
U3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTUzNyw3ICs1MzcsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogI2VuZGlmCiAKICNpZiBI
QVZFKENBVEFMWVNUX1VTRVJfSU5URVJGQUNFX0lESU9NX0FORF9TQ0FMRV9GQUNUT1IpCi0gICAg
T3B0aW9uYWw8c3RkOjpwYWlyPGludDY0X3QsIGRvdWJsZT4+IG92ZXJyaWRlVXNlckludGVyZmFj
ZUlkaW9tQW5kU2NhbGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8aW50NjRfdCwgZG91
YmxlPj4gb3ZlcnJpZGVVc2VySW50ZXJmYWNlSWRpb21BbmRTY2FsZTsKICAgICBkZWNvZGVyID4+
IG92ZXJyaWRlVXNlckludGVyZmFjZUlkaW9tQW5kU2NhbGU7CiAgICAgaWYgKCFvdmVycmlkZVVz
ZXJJbnRlcmZhY2VJZGlvbUFuZFNjYWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggNjk1NGFjMjYxYmMzODMzNWU3ZDFmZDJiYTRlMzU0NTllYTdlZTg4Yy4uNmRhNjM0ZWE3ODM2
YzY3NWVkODcyYjc0N2E4Y2M3Yzk1MmJkZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTk2LDE1ICsxOTYsMTUg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIENTdHJpbmcgaW1w
bGVtZW50YXRpb25MaWJyYXJ5TmFtZTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8V2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzOwogI2VuZGlm
CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lck1hbmFn
ZXJFeHRlbnNpb25IYW5kbGU7Ci0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBtb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlOwotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpv
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvbnRhaW5lck1hbmFnZXJFeHRlbnNp
b25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1v
YmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgRU5B
QkxFKENGUFJFRlNfRElSRUNUX01PREUpCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+IHByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBwcmVmZXJlbmNlc0V4dGVuc2lvbkhh
bmRsZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCAxZGE1ZTMwYTI0MzZlOWYwZmI1
YzAwMzkwMDIxZTlmNDNlMDhkN2ZhLi5mZjZhZjdiNmVjNDExN2I2MWI3NDA5MTRjNzJjNzdjMTY4
YzcxZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
IHsgZmFsc2UgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgpAQCAtODAsOSArODAsOSBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPiBzZXNzaW9uSUQ7CiAgICAgZGVjb2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNz
aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05MSw3ICs5MSw3IEBAIE9w
dGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNv
ZGVyID4+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYg
KCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpAQCAtMTA0LDcgKzEwNCw3IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2Rl
KERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUNhY2hlRGlyZWN0b3J5KSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTEzLDcgKzExMyw3IEBAIE9wdGlvbmFsPFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
czo6ZGVjb2RlKERlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTEyMiwyMyArMTIyLDIzIEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBqYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICgh
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OwogICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbjsKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAg
IGlmICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8SGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVz
b3VyY2VEb21haW4+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKKyAgICBzdGQ6Om9w
dGlvbmFsPEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJlc291cmNlRG9tYWluPj4gZG9tYWlu
c1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CiAgICAgZGVjb2RlciA+PiBkb21haW5zV2l0aFN0b3Jh
Z2VBY2Nlc3NRdWlyazsKICAgICBpZiAoIWRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1aXJrKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVG91Y2hFdmVu
dC5oCmluZGV4IDM3OWIwNDljNWVkN2MwMzdiYzgzZTM1NjZhMWY0NzBiNGE1ODc2YzYuLjhjMWNj
YzE3OGYyZWQxMjA4MDg0NWNmODMxMTZhMzRkNDA3OTkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlRvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJUb3VjaEV2ZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
UGxhdGZvcm1Ub3VjaFBvaW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pZGVudGlmaWVyIHsgMCB9OwpAQCAtMTc1LDcg
KzE3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRlKFRvdWNoUG9pbnRTdGF0ZSBzdGF0
ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IGRlY29k
ZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICB1aW50MzJf
dCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKaW5kZXggNjgwYjYyZjIxNjcwOTBkMDgzMGQ4NTlh
NmRlZmM2Yzk3MTcyOGRhYi4uMDhmOTAxNTBkYWJiM2VjNTlhY2I1NjJjZmVjYzA4YzFhZDQ4OWY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCkBAIC0zNywxOSArMzcsMTkgQEAgdm9pZCBXZWJVc2Vy
U2NyaXB0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHVzZXJTY3JpcHQ7CiB9CiAKLU9wdGlvbmFsPFdlYlVzZXJTY3JpcHREYXRhPiBXZWJV
c2VyU2NyaXB0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8V2ViVXNlclNjcmlwdERhdGE+IFdlYlVzZXJTY3JpcHREYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVu
dGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKLSAgICBPcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50
aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElk
ZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3Js
ZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiB1c2VyU2Ny
aXB0OwogICAgIGlmICghdXNlclNjcmlwdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lkIFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNoZWV0
OwogfQogCi1PcHRpb25hbDxXZWJVc2VyU3R5bGVTaGVldERhdGE+IFdlYlVzZXJTdHlsZVNoZWV0
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViVXNl
clN0eWxlU2hlZXREYXRhPiBXZWJVc2VyU3R5bGVTaGVldERhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAotICAgIE9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxk
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTkxLDE5ICs5MSwx
OSBAQCB2b2lkIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG5hbWU7CiB9CiAKLU9wdGlvbmFsPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckRhdGE+IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4g
aWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJ
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29y
bGRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gd29ybGRJZGVudGlmaWVyOwogICAgIGlmICgh
d29ybGRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAg
IE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsK
ICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaAppbmRleCBkMTU0ZjIwYTkxYzE4MGRlMjQwZmI1NDg4
ZDRkNzg3YzIxNTU1M2NhLi5kYWYxYWFkMjFhNWM3ZmIxYzQzYjM5NTIwMzAzYzM1NzVlYjU5NzYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RydWN0IFdlYlVzZXJTY3JpcHREYXRhIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IGRlY29k
ZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJVc2VyU2NyaXB0
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcjsK
ICAgICBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllcjsKQEAgLTQ3LDcgKzQ3
LDcgQEAgc3RydWN0IFdlYlVzZXJTY3JpcHREYXRhIHsKIAogc3RydWN0IFdlYlVzZXJTdHlsZVNo
ZWV0RGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKICAgICBDb250ZW50
V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllcjsKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0
IFdlYlVzZXJTdHlsZVNoZWV0RGF0YSB7CiAKIHN0cnVjdCBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ckRhdGEgewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+IGRlY29kZShJUEM6OkRlY29k
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRh
dGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAg
ICAgQ29udGVudFdvcmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCmluZGV4IGM0ZjgzZWMyNjlm
N2Y3YzFjZjI2MTEyODk2Yzg0Yjc5ZGRlMjE5YjMuLjJkNDQ3NzE4NzljYzA1YzEzYTEzNTEyMzA3
MmJkYTYzNTYyYzQyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVs
RXZlbnRDb2FsZXNjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnRDb2FsZXNjZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyOjpzaG91bGREaXNwYXRjaEV2ZW50Tm93KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50
KQogICAgIHJldHVybiBtX3doZWVsRXZlbnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVl
U2l6ZVRocmVzaG9sZDsKIH0KIAotT3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gV2ViV2hlZWxFdmVu
dENvYWxlc2Nlcjo6bmV4dEV2ZW50VG9EaXNwYXRjaCgpCitzdGQ6Om9wdGlvbmFsPFdlYldoZWVs
RXZlbnQ+IFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQogewog
ICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50
Q29hbGVzY2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
LmgKaW5kZXggMzVjZGM3NjAwNTlkODc5YTg5NmU1MzRlYjI2ZDhlNzZhNjRmYjQ3NS4uZGYxMDlm
Y2QwZTcyZDRlMWJhYTMwY2QxY2Q4MjE3MmE0M2YzN2QxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBX
ZWJXaGVlbEV2ZW50Q29hbGVzY2VyIHsKIHB1YmxpYzoKICAgICAvLyBJZiB0aGlzIHJldHVybnMg
dHJ1ZSwgdXNlIG5leHRFdmVudFRvRGlzcGF0Y2goKSB0byBnZXQgdGhlIGV2ZW50IHRvIGRpc3Bh
dGNoLgogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2
ZW50Jik7Ci0gICAgT3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgp
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgp
OwogCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudCB0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3Nl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAKaW5kZXggOGRmYWEzZGM5MDkwNGEyYmMxZjFhYjNhMjIxNzRiZDFiNTBlOWU4MS4uZDhh
NDU4NDM5MzhkNzgzMGJkNzAzZGZjZTg1ZjU0Y2M4MWY4NzhkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtNDIsMTEgKzQyLDEx
IEBAIHZvaWQgV2Vic2l0ZURhdGE6OkVudHJ5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc2l6ZTsKIH0KIAotYXV0byBXZWJzaXRlRGF0YTo6RW50
cnk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEVudHJ5PgorYXV0
byBXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8RW50cnk+CiB7CiAgICAgRW50cnkgcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdpbkRhdGE7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luRGF0
YTsKICAgICBkZWNvZGVyID4+IHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBpZiAoIXNlY3VyaXR5
T3JpZ2luRGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oCmluZGV4IDZmZmQ0MmNkZWQ5MGVh
YWRjYzY0NmNjNDMwMzE4MDI1Mzc0YmFkZDQuLjY0OTE0MjY2ZTRhZjY4NzZkYjBjZTU0ZWRlZTJl
MDMxYTk1ZTJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAg
ICBFbnRyeSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpF
bnRyeT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJzaXRlRGF0YTo6RW50cnk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKICAgICB9OwogCiAg
ICAgV2Vic2l0ZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggY2IyZTY3MGYx
NTc0NTUxMzFkM2VkYTUyZTNiYzMzZjg0YjE4MDJjNy4uNDkxMjE2NmM5Yzk4OGMzOTk0Njg1Mjlh
ZTk3YjUwN2Y0Njc4OTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNTQsOTEgKzU0LDkxIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfQogCi1P
cHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwogCi0gICAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM+IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAg
ICAgZGVjb2RlciA+PiBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgaWYgKCFuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBXVEZNb3ZlKCpuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpOwogCi0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1aVBy
b2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBpZiAoIXVpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIgPSBXVEZNb3ZlKCp1aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6
b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb29raWVTdG9yYWdlUGF0aEV4dGVu
c2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxl
KTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZGVj
b2RlciA+PiBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnkpOwogICAgIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIE9wdGlvbmFsPFN0cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnk7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOwogICAgIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+
IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQ7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
OwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZDsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gV1RGTW92ZSgqc2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIE9wdGlv
bmFsPFN0cmluZz4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBX
VEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IGNh
Y2hlU3RvcmFnZURpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FjaGVTdG9y
YWdlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAg
IGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqY2FjaGVT
dG9yYWdlRGlyZWN0b3J5KTsKIAotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIHN0ZDo6b3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBlck9yaWdpblN0b3Jh
Z2VRdW90YTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdlUXVv
dGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJP
cmlnaW5TdG9yYWdlUXVvdGEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAqcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwog
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VR
dW90YTsKICAgICBkZWNvZGVyID4+IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiAg
ICAgaWYgKCFwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgKaW5kZXggYTQ5YmFmOGEyYTIyNGYyN2JlZjBhNmZiZDNlZmQ0YTBkMmE3
MzExYy4uMmEyMmQ5NGUxMGJkNWNiZGEzOTQwZDJhNGJiYWUyYTdlNzRhNGI0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgfldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKCk7CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKaW5kZXggNGE1ZmUx
NGYyZWE0Zjg1OGZkYTJjN2RlYTljZGY3OGJmMWEzYWVmNC4uMzhhZmJiNmE4OTZkNDVmOTdmNTY0
NWIzMmZjNDdmMmFiY2MyNzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBv
bGljaWVzRGF0YS5jcHAKQEAgLTU2LDkxICs1Niw5MSBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0Rh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBp
ZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXM7CiB9CiAKLU9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdl
YnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkOwogICAgIGlmICghY29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDxXZWJzaXRlQXV0b3BsYXlQ
b2xpY3k+IGF1dG9wbGF5UG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5
UG9saWN5PiBhdXRvcGxheVBvbGljeTsKICAgICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5Owog
ICAgIGlmICghYXV0b3BsYXlQb2xpY3kpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU+IGRldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlPiBkZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc1N0YXRlOwogICAgIGRlY29kZXIgPj4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NTdGF0ZTsKICAgICBpZiAoIWRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
U3RhdGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKLSAgICBP
cHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlR
dWlya3M7CisgICAgc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+
PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiAgICAgZGVjb2RlciA+PiBhbGxvd2VkQXV0b3BsYXlR
dWlya3M7CiAgICAgaWYgKCFhbGxvd2VkQXV0b3BsYXlRdWlya3MpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhl
YWRlckZpZWxkcz4+IGN1c3RvbUhlYWRlckZpZWxkczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+PiBjdXN0b21IZWFkZXJGaWVsZHM7CiAgICAg
ZGVjb2RlciA+PiBjdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgaWYgKCFjdXN0b21IZWFkZXJGaWVs
ZHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJzaXRl
UG9wVXBQb2xpY3k+IHBvcFVwUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvcFVw
UG9saWN5PiBwb3BVcFBvbGljeTsKICAgICBkZWNvZGVyID4+IHBvcFVwUG9saWN5OwogICAgIGlm
ICghcG9wVXBQb2xpY3kpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRp
b25hbDxTdHJpbmc+IGN1c3RvbVVzZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y3VzdG9tVXNlckFnZW50OwogICAgIGRlY29kZXIgPj4gY3VzdG9tVXNlckFnZW50OwogICAgIGlm
ICghY3VzdG9tVXNlckFnZW50KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
T3B0aW9uYWw8U3RyaW5nPiBjdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWly
a3M7CiAgICAgZGVjb2RlciA+PiBjdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczsK
ICAgICBpZiAoIWN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0
b3JQbGF0Zm9ybTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm07CiAgICAgZGVjb2RlciA+PiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKICAgICBpZiAo
IWN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgT3B0aW9uYWw8V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9s
aWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeT4gbWV0YVZp
ZXdwb3J0UG9saWN5OwogICAgIGRlY29kZXIgPj4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGlm
ICghbWV0YVZpZXdwb3J0UG9saWN5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8V2Vic2l0ZU1lZGlhU291cmNlUG9saWN5PiBtZWRpYVNvdXJjZVBvbGljeTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeT4gbWVkaWFTb3VyY2VQ
b2xpY3k7CiAgICAgZGVjb2RlciA+PiBtZWRpYVNvdXJjZVBvbGljeTsKICAgICBpZiAoIW1lZGlh
U291cmNlUG9saWN5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIE9w
dGlvbmFsPFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5PiBzaW11bGF0
ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVNp
bXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k+IHNpbXVsYXRlZE1vdXNlRXZlbnRzRGlz
cGF0Y2hQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNo
UG9saWN5OwogICAgIGlmICghc2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPFdlYnNpdGVMZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNo
UG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5n
VG91Y2hQb2xpY3k+IGxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k7CiAgICAgZGVj
b2RlciA+PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5OwogICAgIGlmICghbGVn
YWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVp
cms7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBhbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1
aXJrOwogICAgIGRlY29kZXIgPj4gYWxsb3dDb250ZW50Q2hhbmdlT2JzZXJ2ZXJRdWlyazsKICAg
ICBpZiAoIWFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmspCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNj
cmlwdD4gYWxsb3dzQ29udGVudEphdmFTY3JpcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdD4gYWxsb3dzQ29udGVudEphdmFTY3JpcHQ7CiAgICAg
ZGVjb2RlciA+PiBhbGxvd3NDb250ZW50SmF2YVNjcmlwdDsKICAgICBpZiAoIWFsbG93c0NvbnRl
bnRKYXZhU2NyaXB0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6TW91c2VFdmVudFBvbGljeT4gbW91c2VFdmVudFBvbGljeTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3k+IG1vdXNlRXZlbnRQb2xpY3k7CiAg
ICAgZGVjb2RlciA+PiBtb3VzZUV2ZW50UG9saWN5OwogICAgIGlmICghbW91c2VFdmVudFBvbGlj
eSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGlk
ZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdl
czsKICAgICBkZWNvZGVyID4+IGlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJj
ZW50YWdlczsKICAgICBpZiAoIWlkZW1wb3RlbnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJj
ZW50YWdlcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaAppbmRleCAzYThjODUwYWI1MTkzODdlOGJiZTA2YTkw
NDA4MTIxNDY2ODRjNmZhLi5lMGY2Nzk0NWU3NWM2YTMzNTVjMWQ0OTMxYzlhMGRhMThhYmFmZTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCkBAIC03Myw3
ICs3Myw3IEBAIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhIHsKICAgICBib29sIGlkZW1wb3Rl
bnRNb2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlcyB7IGZhbHNlIH07CiAKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcAppbmRleCA1Yzk5M2U3MjQ5NDMxNjczODBhOGQ1ZjMzNTdmMDhiZGYx
NWEyMzg3Li4zZGYzMjM5NzE5YjVjNGEwMDIxM2M2MDU4N2FmMTk5YjBjMDg1NjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMTk1LDcgKzE5
NSw3IEBAIHRlbXBsYXRlIHZvaWQgQXJndW1lbnRDb2RlcjxDRlR5cGVSZWY+OjplbmNvZGU8U3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXRh
aW5QdHI8Q0ZUeXBlUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZU
eXBlUmVmPiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPENGVHlwZT4gdHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENGVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0
eXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHNp
emVfdCBzaXplRm9yTnVtYmVyVHlwZShDRk51bWJlclR5cGUgbnVtYmVyVHlwZSkKIAogYm9vbCBB
cmd1bWVudENvZGVyPFJldGFpblB0cjxDRk51bWJlclJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUmV0YWluUHRyPENGTnVtYmVyUmVmPiYgcmVzdWx0KQogewotICAgIE9wdGlvbmFsPHVp
bnQ4X3Q+IG51bWJlclR5cGVGcm9tSVBDOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gbnVt
YmVyVHlwZUZyb21JUEM7CiAgICAgZGVjb2RlciA+PiBudW1iZXJUeXBlRnJvbUlQQzsKICAgICBp
ZiAoIW51bWJlclR5cGVGcm9tSVBDIHx8ICpudW1iZXJUeXBlRnJvbUlQQyA+IGtDRk51bWJlck1h
eFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMCw3ICs2MTAsNyBAQCB0ZW1wbGF0
ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZTdHJpbmdSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlv
bkVuY29kZXI+KFN0cmVhbQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5n
UmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+JiBy
ZXN1bHQpCiB7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGVuY29kaW5nRnJvbUlQQzsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBlbmNvZGluZ0Zyb21JUEM7CiAgICAgZGVjb2RlciA+PiBl
bmNvZGluZ0Zyb21JUEM7CiAgICAgaWYgKCFlbmNvZGluZ0Zyb21JUEMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVB
cmd1bWVudENvZGVyc0N1cmwuY3BwCmluZGV4IGFlOWM5NjllZjg5YjQ1YjFlZWM3MzYyNTNlMGFm
ZTQzOTI0ZDdhY2MuLjZiNGMwNmFlMWZmNjY3ZGFmZTExZDdkODZkMjUwMmYyMDI2ZTI1NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDdXJsLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJs
UHJveHlTZXR0aW5ncz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJsUHJveHlT
CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5pZ25vcmVIb3N0cygpOwogfQogCi1PcHRpb25hbDxD
dXJsUHJveHlTZXR0aW5ncz4gQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJn
dW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIEN1cmxQcm94eVNldHRpbmdzOjpNb2RlIG1vZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtb2RlKSkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0
ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2Rl
cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQ
bGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGli
L0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKaW5kZXggMThmZWJiOGIzODJmNjY0Njc3MjJkNjNmODI2
ZTBmZDVkMzFjMjk3NS4uYmUyN2M2NTQyZWQ3NGIwZTg3MjQ4Y2ExM2U2Mzk2YzVjYmEyYTYzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNw
cApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgR1JlZlB0cjxHVmFyaWFudAogICAgIGVuY29kZXIg
PDwgRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ192YXJpYW50X2dl
dF9kYXRhKHZhcmlhbnQuZ2V0KCkpKSwgZ192YXJpYW50X2dldF9zaXplKHZhcmlhbnQuZ2V0KCkp
KTsKIH0KIAotT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0
cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8R1Jl
ZlB0cjxHVmFyaWFudD4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBDU3RyaW5nIHZhcmlhbnRUeXBlU3RyaW5nOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodmFyaWFudFR5cGVTdHJpbmcpKQpAQCAtNjIsNyArNjIsNyBA
QCBPcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJp
YW50Pj46OmRlY29kZShEZWNvZGVyJiBkZQogCiAgICAgR1VuaXF1ZVB0cjxHVmFyaWFudFR5cGU+
IHZhcmlhbnRUeXBlKGdfdmFyaWFudF90eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkp
KTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXcoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPEdSZWZQdHI8R1Zh
cmlhbnQ+ID4oZ192YXJpYW50X25ld19mcm9tX2J5dGVzKHZhcmlhbnRUeXBlLmdldCgpLCBieXRl
cy5nZXQoKSwgRkFMU0UpKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJp
YW50PiA+KGdfdmFyaWFudF9uZXdfZnJvbV9ieXRlcyh2YXJpYW50VHlwZS5nZXQoKSwgYnl0ZXMu
Z2V0KCksIEZBTFNFKSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdUbHNDZXJ0
aWZpY2F0ZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgR1JlZlB0cjxHVGxzQ2VydGlmaWNh
dGU+IGNlcnRpZmljYXRlKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R1Jl
ZlB0cjxHVGxzQ2VydGlmaWNhdGU+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIEdSZWZQdHI8
RwogICAgIH0KIH0KIAotT3B0aW9uYWw8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiBBcmd1bWVu
dENvZGVyPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgdWludDMyX3QgY2hhaW5MZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFpbkxl
bmd0aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29k
ZXJzR0xpYi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIu
aAppbmRleCA0M2QwZWM0MWIwYjQ2YWVlNjgwMGVhNDliZGI5MmY4YzJhODI3Nzc3Li42YjA2YWM4
MmJlZjVkZDk0N2EzYTI4YzA5ZmQxMGM5Y2QzMjQ4MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmgKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1l
c3BhY2UgSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdW
YXJpYW50Pj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgR1JlZlB0cjxHVmFy
aWFudD4pOwotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVjb2RlKERl
Y29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8R1Jl
ZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4pOwotICAgIHN0YXRpYyBPcHRpb25hbDxHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGli
L0lucHV0TWV0aG9kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1l
dGhvZFN0YXRlLmNwcAppbmRleCA0MTBmOGZhMzhjOGYwYTM3OTNlZGRmNDAxYzFlNThjMGVkMWNi
YmJjLi5hYTIzNDk4MmNiMzQzYjA0NmJlZWQ1YWE0N2QxZGU2NWM5YzljNzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAKQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIElucHV0TWV0aG9kU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoaW50czsKIH0KIAotT3B0aW9uYWw8SW5wdXRNZXRo
b2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUucHVycG9zZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCmluZGV4IDY4YzEyYzk0Yzc0YmVjYmQ5OTY2
MmNmYmNiOGEwYzg4ODZkZTNhZmIuLmFjN2EzOWZkZGRkMThlMWVjNWM0NDk1OTczYmQwMGJiMWMw
YmU3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5o
CkBAIC02OCw3ICs2OCw3IEBAIHN0cnVjdCBJbnB1dE1ldGhvZFN0YXRlIHsKICAgICB2b2lkIGFk
ZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKFdlYkNvcmU6OkF1dG9jYXBpdGFsaXplVHlwZSk7
CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsK
IAogICAgIFB1cnBvc2UgcHVycG9zZSB7IFB1cnBvc2U6OkZyZWVGb3JtIH07CiAgICAgT3B0aW9u
U2V0PEhpbnQ+IGhpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9V
c2VyTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNw
cAppbmRleCBhNzM5ZTgyNmJlNDg5MjczZWRmYTlhMjEwNzZhMDU1NmY5YTM2NDhlLi4zMGY2MDFi
NDI0ZjUwMjE1NGQxMzI5ODliMzU0ZjdkYzNkNTgwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9nbGliL1VzZXJNZXNzYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFVzZXJNZXNzYWdl
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXR0
YWNobWVudHM7CiB9CiAKLU9wdGlvbmFsPFVzZXJNZXNzYWdlPiBVc2VyTWVzc2FnZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJN
ZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFVzZXJNZXNzYWdl
IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKQEAgLTY5LDcg
KzY5LDcgQEAgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHJlc3VsdC50eXBlID09IFR5cGU6OkVycm9yKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBlcnJvckNvZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGVycm9yQ29kZTsK
ICAgICAgICAgZGVjb2RlciA+PiBlcnJvckNvZGU7CiAgICAgICAgIGlmICghZXJyb3JDb2RlKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc4LDEzICs3OCwxMyBAQCBPcHRp
b25hbDxVc2VyTWVzc2FnZT4gVXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8R1JlZlB0
cjxHVmFyaWFudD4+IHBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdWYXJp
YW50Pj4gcGFyYW1ldGVyczsKICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCFw
YXJhbWV0ZXJzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJh
bWV0ZXJzID0gV1RGTW92ZSgqcGFyYW1ldGVycyk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8SVBD
OjpBdHRhY2htZW50Pj4gYXR0YWNobWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SVBD
OjpBdHRhY2htZW50Pj4gYXR0YWNobWVudHM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50czsK
ICAgICBpZiAoIWF0dGFjaG1lbnRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5oCmluZGV4IDk1OTVlMjFlYjNmMDlkZmZm
MjY3MTczM2Q1YjdlM2UzZmMyN2JiY2QuLmE5NmIwNGM4YjFkZDhlNzEwZDUzOTE1YzFmNzhiNTUy
MWRlNGRiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3Nh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmgKQEAgLTU2
LDcgKzU2LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlIHsKICAgICB9CiAKICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgT3B0aW9uYWw8VXNlck1lc3NhZ2U+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxVc2VyTWVz
c2FnZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6TnVs
bCB9OwogICAgIENTdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDczNTI4ODlhZjNkZDgzNmIwZmMwOTg1NWIzZTQ2Y2Nh
YzFjMTJjMmQuLjI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkRhdGEmCiAgICAgZW5jb2RlciA8PCBjYW5T
bWFydFJlcGxhY2U7CiB9CiAKLU9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxT
ZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuaAppbmRleCAyYTE3NWU2ZWY1NGYz
YzNmMTM3MTAxMzE0MTg2NzE0ZWQxOTVkZTgyLi5kZTJhMGZlNjI0NGI4NTUyMWI3NjM2ZGIwZGM5
MjNjOWVlNGM3MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuaApAQCAtNDUsNyArNDUsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIEdSZWZQdHI8R3RrUGFnZVNldHVwPiYpOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKaW5kZXggODNjYjQx
YTRiMGJmY2Y5MjA2ZWJjMjI3NGE1MTNhM2UwYTUxNWQ5Zi4uYzIwNDYzNzc3NGVlODAzZWFjNDJh
MzRjZGU3OWFhNTU2ZjE0M2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcApAQCAtMzksNyArMzksNyBAQCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiBldmVu
dCwgY29uc3QgU3RyaW5nJiB0ZQogewogfQogCi1OYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgT3B0aW9u
YWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rpb25SYW5nZSkKK05hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgcHJlZWRp
dFVuZGVybGluZXMsIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHByZWVkaXRTZWxlY3Rp
b25SYW5nZSkKICAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleURvd24sIHRleHQs
ICJVbmlkZW50aWZpZWQiX3MsICJVbmlkZW50aWZpZWQiX3MsICJVKzAwMDAiX3MsIDIyOSwgR0RL
X0tFWV9Wb2lkU3ltYm9sLCB0cnVlLCBXVEZNb3ZlKHByZWVkaXRVbmRlcmxpbmVzKSwgV1RGTW92
ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpLCB7IH0sIGZhbHNlLCB7IH0sIFdhbGxUaW1lOjpub3co
KSkKIHsKIH0KQEAgLTUwLDcgKzUwLDcgQEAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY28KIH0KIAog
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoZXZlbnQu
dHlwZSgpLCBldmVudC50ZXh0KCksIGV2ZW50LmtleSgpLCBldmVudC5jb2RlKCksIGV2ZW50Lmtl
eUlkZW50aWZpZXIoKSwgZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksIGV2ZW50Lm5hdGl2
ZVZpcnR1YWxLZXlDb2RlKCksIGV2ZW50LmhhbmRsZWRCeUlucHV0TWV0aG9kKCksIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+KGV2ZW50LnByZWVkaXRVbmRl
cmxpbmVzKCkpLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+KGV2ZW50LnByZWVkaXRTZWxlY3Rpb25S
YW5nZSgpKSwgVmVjdG9yPFN0cmluZz4oZXZlbnQuY29tbWFuZHMoKSksIGV2ZW50LmlzS2V5cGFk
KCksIGV2ZW50Lm1vZGlmaWVycygpLCBldmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYktleWJv
YXJkRXZlbnQoZXZlbnQudHlwZSgpLCBldmVudC50ZXh0KCksIGV2ZW50LmtleSgpLCBldmVudC5j
b2RlKCksIGV2ZW50LmtleUlkZW50aWZpZXIoKSwgZXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCksIGV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCksIGV2ZW50LmhhbmRsZWRCeUlucHV0TWV0
aG9kKCksIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4oZXZlbnQucHJlZWRpdFVuZGVybGluZXMoKSksIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1Jhbmdl
PihldmVudC5wcmVlZGl0U2VsZWN0aW9uUmFuZ2UoKSksIFZlY3RvcjxTdHJpbmc+KGV2ZW50LmNv
bW1hbmRzKCkpLCBldmVudC5pc0tleXBhZCgpLCBldmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGlt
ZXN0YW1wKCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtf
ZXZlbnRfY29weShldmVudC5uYXRpdmVFdmVudCgpKSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5k
ZXggOGRiZTdhZDcxYzNkZDBmOWJjYWExYzc0YzE0YjFjYWVhNGEzMGY5Ni4uN2NjNjU3MzljMzIw
Y2I0MzEyZDlkNzA1Mjg0MjIwYTM4M2EwMjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJN
b3VzZUV2ZW50KEdka0V2ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdl
Yk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gZGVsdGEpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50
LCBkZWx0YSkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKIHsK
IH0KIAotTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCog
ZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgaW50IGV2ZW50Q2xpY2tD
b3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSkKK05hdGl2ZVdlYk1vdXNl
RXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24sIGludCBldmVudENsaWNrQ291bnQsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbiwgcG9zaXRpb24sIGV2
ZW50Q2xpY2tDb3VudCwgZGVsdGEpKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29w
eShldmVudCkpCiB7CkBAIC00OCw3ICs0OCw3IEBAIE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKQogewogfQog
Ci1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgQnV0
dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGlu
dCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9kaWZpZXI+IG1vZGlmaWVycywgT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRTaXplPiBkZWx0YSwgV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCwgY29u
c3QgU3RyaW5nJiBwb2ludGVyVHlwZSkKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4g
bW9kaWZpZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gZGVsdGEsIFdlYkNv
cmU6OlBvaW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUpCiAgICAg
OiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBkZWx0YS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUoKSkud2lkdGgoKSwgZGVs
dGEudmFsdWVfb3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0NvdW50
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXAsIHBvaW50ZXJJZCwgcG9pbnRl
clR5cGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
Y3BwCmluZGV4IGRlYjM2OTM4NjVjMTc3NWQ5M2QwNDFhYTQyMzkzMzc2YzhjN2RlY2MuLjhkNjI2
OTBmNDNjZjVmZWE2OWI4ZjkwYzg3Y2FmNmQ1MTA2NWFkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGlj
IGlubGluZSBzaG9ydCBwcmVzc2VkTW91c2VCdXR0b25zKEdka01vZGlmaWVyVHlwZSBzdGF0ZSkK
ICAgICByZXR1cm4gYnV0dG9uczsKIH0KIAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3VycmVudENs
aWNrQ291bnQsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gZGVsdGEpCitXZWJNb3VzZUV2ZW50IFdlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGlu
dCBjdXJyZW50Q2xpY2tDb3VudCwgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQogewog
ICAgIGRvdWJsZSB4LCB5OwogICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkp
OwpAQCAtMTc5LDcgKzE3OSw3IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50IGN1CiAgICAgcmV0dXJu
IGNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9J
bnRlZ2VyKHkpIH0sIHsgY2xhbXBUb0ludGVnZXIoeFJvb3QpLCBjbGFtcFRvSW50ZWdlcih5Um9v
dCkgfSwgY3VycmVudENsaWNrQ291bnQsIGRlbHRhKTsKIH0KIAotV2ViTW91c2VFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
aW50IGN1cnJlbnRDbGlja0NvdW50LCBPcHRpb25hbDxGbG9hdFNpemU+IGRlbHRhKQorV2ViTW91
c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnQqIGV2ZW50LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgaW50IGN1cnJlbnRDbGlja0NvdW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6
ZT4gZGVsdGEpCiB7CiAjaWYgVVNFKEdUSzQpCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4g
YSBOYXRpdmVXZWJNb3VzZUV2ZW50IHJlcHJlc2VudGluZyBhIGNyb3NzaW5nIGV2ZW50IGlzIGNv
cGllZC4KQEAgLTI2NCw3ICsyNjQsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIFdlYldoZQogCiBXZWJX
aGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtF
dmVudCogZXZlbnQsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBwaGFzZSwgV2ViV2hlZWxFdmVudDo6
UGhhc2UgbW9tZW50dW1QaGFzZSkKIHsKLSAgICBPcHRpb25hbDxGbG9hdFNpemU+IHdoZWVsVGlj
a3M7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IHdoZWVsVGlja3M7CiAgICAgR2RrU2Ny
b2xsRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAoIWdka19ldmVudF9nZXRfc2Nyb2xsX2Rp
cmVjdGlvbihldmVudCwgJmRpcmVjdGlvbikpIHsKICAgICAgICAgZGlyZWN0aW9uID0gR0RLX1ND
Uk9MTF9TTU9PVEg7CkBAIC0zMzQsNyArMzM0LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdAog
ICAgICAgICB3YWxsVGltZUZvckV2ZW50KGV2ZW50KSk7CiB9CiAKLVdlYktleWJvYXJkRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBl
dmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBPcHRp
b25hbDxWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBP
cHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYmIGNvbW1hbmRzKQorV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBTdHJpbmcmIHRl
eHQsIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgc3RkOjpvcHRpb25hbDxFZGl0
aW5nUmFuZ2U+JiYgcHJlZWRpdFNlbGVjdGlvblJhbmdlLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1h
bmRzKQogewogICAgIGd1aW50IGtleXZhbDsKICAgICBnZGtfZXZlbnRfZ2V0X2tleXZhbChldmVu
dCwgJmtleXZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgK
aW5kZXggMTlmODg2YWQ1NmM5NzY2ZDdlYmQ5OTg5YzVjYWRhOTZhMDllNjBmOS4uNzliYTc0ZTc5
MTRhNzQ3ZjlhYWE4MDc5NDA3NDZmNTNlOWFiZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuaApAQCAtNDQsMTUgKzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJN
b3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0
ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgaW50LCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNp
emU+KTsKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0
IEdka0V2ZW50KiwgaW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAg
IHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQq
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgaW50
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIHN0YXRpYyBXZWJNb3Vz
ZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAg
ICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50
Kik7CiAgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBH
ZGtFdmVudCosIFdlYldoZWVsRXZlbnQ6OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21l
bnR1bVBoYXNlKTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50
KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHN0YXRpYyBXZWJX
aGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViV2hlZWxFdmVudDo6
UGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UpOwogICAgIHN0YXRpYyBX
ZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwgV2ViV2hlZWxF
dmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZSk7Ci0gICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQg
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFN0cmluZyYsIGJv
b2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiwgVmVjdG9yPFN0cmlu
Zz4mJiBjb21tYW5kcyk7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5
Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5k
ZXJsaW5lPj4mJiwgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYsIFZlY3RvcjxTdHJpbmc+
JiYgY29tbWFuZHMpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIFdlYlRv
dWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIFZlY3RvcjxXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ+JiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4
IDVjMTk5NTgyODVmZmE2NWI3Y2ZiN2JjMjA1YTg5MzE4MDgwYWEwNTYuLmJiMDBjNDYxZDEyMjJm
ZDVmYWFlNzMyNjRmYmZiNTRhMWUyMzE5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01
Miw3ICs1Miw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAg
ICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdDsKIAogICAgIGJvb2wgY2Fu
QmVWYWxpZCB7IHRydWUgfTsKLSAgICBPcHRpb25hbDxib29sPiBub2RlQXRQb3NpdGlvbkhhc0Rv
dWJsZUNsaWNrSGFuZGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5vZGVBdFBvc2l0aW9u
SGFzRG91YmxlQ2xpY2tIYW5kbGVyOwogICAgIGJvb2wgaXNTZWxlY3RhYmxlIHsgZmFsc2UgfTsK
ICAgICBib29sIGlzU2VsZWN0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJlZmVyc0RyYWdnaW5n
T3ZlclRleHRTZWxlY3Rpb24geyBmYWxzZSB9OwpAQCAtODgsNyArODgsNyBAQCBzdHJ1Y3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogICAgIGZsb2F0IGNhcmV0SGVpZ2h0IHsg
MCB9OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBsaW5lQ2FyZXRFeHRlbnQ7CiAKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpDdXJzb3I+IGN1cnNvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkN1cnNvcj4gY3Vyc29yOwogCiAgICAgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgbGlua0lu
ZGljYXRvcjsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC05Niw4ICs5Niw4IEBAIHN0
cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAgICAgUmV0YWluUHRyPE5T
QXJyYXk+IGRhdGFEZXRlY3RvclJlc3VsdHM7CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0PiBlbGVtZW50Q29udGV4dDsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dD4gaW1hZ2VFbGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVtZW50Q29udGV4dDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBpbWFnZUVsZW1lbnRDb250ZXh0OwogCiAgICAg
Ly8gQ29weSBjb21wYXRpYmxlIG9wdGlvbmFsIGJpdHMgZm9yd2FyZCAoZm9yIGV4YW1wbGUsIGlm
IHdlIGhhdmUgYSBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbgogICAgIC8vIHdpdGgg
c25hcHNob3RzIGluIGl0LCBhbmQgcGVyZm9ybSBhbm90aGVyIHJlcXVlc3QgZm9yIHRoZSBzYW1l
IHBvaW50IHdpdGhvdXQgcmVxdWVzdGluZyB0aGUgc25hcHNob3RzLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uLm1tCmluZGV4IDE1NzI1YmM2YWRjNzEwODdlMjA1ZTEwM2RmZThjMWJkMzY1YzNhYzUuLmU0
ZDA5NDIzYjgyN2FjNjYzNzYzM2E1Y2ZiYWI1ZWIwNGRhZTEwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24ubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmN1cnNvcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gbGlua0lu
ZGljYXRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBs
aW5rSW5kaWNhdG9yOwogICAgIGRlY29kZXIgPj4gbGlua0luZGljYXRvcjsKICAgICBpZiAoIWxp
bmtJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaAppbmRleCA5NGE5YzUwYzRi
NDc1YWU4ODNkODdkMjk5MWIwNjhlZDBmMTBhZjQ0Li4xMDE2M2ZlN2RlOGYyY2YxMGIyN2MyZTM0
N2YxNDBmNWFlNzI5MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dl
YkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQgewogICAgIEVkaXRpbmdSYW5nZSBtYXJrZWRUZXh0UmFuZ2U7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01Myw3
ICs1Myw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikKICAgICBlbmNvZGVyIDw8IG1hcmtlZFRl
eHRSYW5nZTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8V2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0PiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxXZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQ+IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvcnJlY3Rpb247
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLmNvbnRleHRCZWZvcmUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oCmluZGV4
IGQ3NDAxNGQ1NzM4OWE1YjBiMmJlNGNjZTYxN2I4OTQ2YTAxNjkxOTguLjZiODFkMzE3OGIwYTJk
NWE4YTRlMjE3MmQ4MzBmYzY0OTFlNjc5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IFdl
YkF1dG9jb3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKIAogICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJBdXRvY29ycmVjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW0KaW5kZXggYzEyODdkMWI3NjEwZmY1YjIy
NTBlNTNmNzBkN2Q1MGU1YWMzZmVjMi4uOGE5ZmUzMWM1NzgzODNmYjczMTc2ZWEwOThhMzFjYTg3
ODJjOGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJl
Y3Rpb25EYXRhLm1tCkBAIC00NCw5ICs0NCw5IEBAIHZvaWQgV2ViQXV0b2NvcnJlY3Rpb25EYXRh
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIGZvbnQuZ2V0KCkpOwogfQogCi1PcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+
IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rpb25EYXRhPiBXZWJBdXRvY29ycmVjdGlvbkRhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEZs
b2F0UmVjdD4+IHRleHRSZWN0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+
PiB0ZXh0UmVjdHM7CiAgICAgZGVjb2RlciA+PiB0ZXh0UmVjdHM7CiAgICAgaWYgKCF0ZXh0UmVj
dHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmgKaW5kZXggMjYxMGMxMTRhNzI2N2U1ZWZjZTJiNjlm
OTFiYjgyZWY5ZjE4YmE2Yy4uOTA3NTFkODdkODJiZDYwMzhmNTcxMGNjM2I1MzBhMTBhNWJkMWEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVu
dCBjcmVhdGVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiAKICNpZiBIQVZFKFVJU0NST0xM
VklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQotICAgIHN0YXRpYyBXZWJL
aXQ6OldlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJ
VmlldyAqY29udGVudFZpZXcsIE9wdGlvbmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+
IG92ZXJyaWRlUGhhc2UgPSBzdGQ6Om51bGxvcHQpOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYldo
ZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29u
dGVudFZpZXcsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3Zl
cnJpZGVQaGFzZSA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBVSUtleU1v
ZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlmaWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVyPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
SU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50
RmFjdG9yeS5tbQppbmRleCBhZGJkNTE1OGUzM2ZmNDg2ZGRjNDE0MmI2ZTZhMWYzNjk2M2I4M2Q4
Li4yZTM5MzNiY2JlMzY3MmQyNzNiZmZjMzkxMTMzZGNlMTJjMjIyNDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KQEAgLTE1NCw3ICsxNTQs
NyBAQCBzdGF0aWMgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZSB0b1dlYlBoYXNlKFVJU2Ny
b2xsUGhhc2UgcGhhc2UpCiAgICAgfQogfQogCi1XZWJLaXQ6OldlYldoZWVsRXZlbnQgV2ViSU9T
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZW50LCBV
SVZpZXcgKmNvbnRlbnRWaWV3LCBPcHRpb25hbDxXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNl
PiBvdmVycmlkZVBoYXNlKQorV2ViS2l0OjpXZWJXaGVlbEV2ZW50IFdlYklPU0V2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICpldmVudCwgVUlWaWV3ICpjb250
ZW50Vmlldywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlPiBvdmVy
cmlkZVBoYXNlKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KFtldmVudCBsb2NhdGlvbkluVmlldzpjb250ZW50Vmlld10p
OwogICAgIENHVmVjdG9yIGRlbHRhVmVjdG9yID0gW2V2ZW50IF9hZGp1c3RlZEFjY2VsZXJhdGVk
RGVsdGFJblZpZXc6Y29udGVudFZpZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAppbmRleCBlNGM4MTFiMTdjYzBiOGE4
MzIxYzc3NDYwZDVhMWQ1MzQ4YjEyN2ExLi4wM2UxMTgxNTRmNmJiNWI3MDRiNGVjYjgzZDNkOTU0
M2Y4YzVhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZv
cm1Ub3VjaFBvaW50SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxh
dGZvcm1Ub3VjaFBvaW50SU9TLmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFdlYlBsYXRmb3Jt
VG91Y2hQb2ludDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgog
fQogCi1PcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViUGxhdGZv
cm1Ub3VjaFBvaW50PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW0K
aW5kZXggNGNlZWUwM2Q3YjAwMzk3Y2MxMTZjMGM2NGJlNWM1ZmI2ZWI4MDdiMC4uYWFmY2E2NWU0
Y2VlMjEzOGJiMDJkODJkMmNjMjE3ZWY0ZTM1MDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCkBA
IC00NCw5ICs0NCw5IEBAIGJvb2wgZGVmYXVsdFRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRN
b2RlKCkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0o
V0FUQ0hPUykKLXN0YXRpYyBPcHRpb25hbDxib29sPiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiYgY2FjaGVkQWxsb3dzUmVxdWVzdCgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0OworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiBhbGxvd3NSZXF1ZXN0
OwogICAgIHJldHVybiBhbGxvd3NSZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9saWJ3cGUvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudExpYldQRS5jcHAK
aW5kZXggNDE5MmVhNGEzMDBjZWMzMzlkNDVmMGE3NWZmY2I3NjNjM2E2OWY4Yy4uODJiYzZjYTFi
ZTkwYTkxYmI2MTg5M2ZlNDRlNWRiMzQ1NWIzYmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbGlid3BlL05hdGl2ZVdlYktleWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2xpYndwZS9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TGliV1BFLmNw
cApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tleWJv
YXJkX2V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBIYW5kbGVkQnlJbnB1dE1ldGhv
ZCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lPj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1Jhbmdl
PiYmIHByZWVkaXRTZWxlY3Rpb25SYW5nZSkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2
ZVdlYktleWJvYXJkRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgSGFuZGxlZEJ5SW5wdXRNZXRob2QgaGFuZGxlZEJ5SW5wdXRN
ZXRob2QsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiBwcmVlZGl0VW5kZXJsaW5lcywgc3RkOjpvcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJl
ZWRpdFNlbGVjdGlvblJhbmdlKQogICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHRleHQsIGhhbmRsZWRCeUlucHV0TWV0
aG9kID09IEhhbmRsZWRCeUlucHV0TWV0aG9kOjpZZXMsIFdURk1vdmUocHJlZWRpdFVuZGVybGlu
ZXMpLCBXVEZNb3ZlKHByZWVkaXRTZWxlY3Rpb25SYW5nZSkpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCAyMTIyNjllMzAy
OWMwZTAzMGQ2YjdkNTc0ZGJkMDQ5Y2IwMjdmNDE2Li5hMzM5MmVmMmVjYWVmMWNjNDdjZjkwOWI1
MzkwYzgwMGZlMjE5ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
V2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2Vi
RXZlbnRGYWN0b3J5LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIFdhbGxUaW1lIHdhbGxUaW1lRm9y
RXZlbnRUaW1lKHVpbnQ2NF90IG1zVGltZVN0YW1wKQogICAgIHJldHVybiBmaXJzdEV2ZW50V2Fs
bFRpbWUgKyBTZWNvbmRzKGRlbHRhIC8gMTAwMC4pOwogfQogCi1XZWJLZXlib2FyZEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2tl
eWJvYXJkX2V2ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIGhhbmRsZWRCeUlu
cHV0TWV0aG9kLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
PiYmIHByZWVkaXRVbmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgcHJlZWRpdFNl
bGVjdGlvblJhbmdlKQorV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmIHByZWVkaXRVbmRlcmxp
bmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2Up
CiB7CiAgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQoZXZlbnQtPnByZXNzZWQgPyBXZWJFdmVu
dDo6S2V5RG93biA6IFdlYkV2ZW50OjpLZXlVcCwKICAgICAgICAgdGV4dC5pc051bGwoKSA/IFdl
YkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50
LT5rZXlfY29kZSkgOiB0ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGli
d3BlL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2
ZW50RmFjdG9yeS5oCmluZGV4IGVkZTFkM2ViMTMxZTkxYTJkOTQ4N2UzMTgwMTQzMGMwNDJlMzBl
NGMuLjZlZDY5ZmJkYTY0NjdmMmFhZDU1NGM3MWExMTU4NDUwY2Q4NDhkNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xpYndwZS9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChzdHJ1
Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPj4mJiwgT3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmKTsKKyAgICBzdGF0aWMgV2ViS2V5Ym9h
cmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRf
ZXZlbnQqLCBjb25zdCBTdHJpbmcmLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIHN0ZDo6b3B0
aW9uYWw8RWRpdGluZ1JhbmdlPiYmKTsKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVX
ZWJNb3VzZUV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfcG9pbnRlcl9ldmVudCosIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2
ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
LCBXZWJXaGVlbEV2ZW50OjpQaGFzZSwgV2ViV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFz
ZSk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggMWM4NTU3MWJkZGQ4Y2Q1NGEwMTI2NTZl
YjcwMGRiZDQyOTE2MDVjYS4uNGQyZmM0NDUzN2MwYjYwMGYyNWEwOTJmZjc5YjUzNDY3MTllMjdk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBzZXROb3RpZnlPcHRpb25zKCkKIH0K
IAogI2lmIFVTRShDQUNIRV9DT01QSUxFRF9TQU5EQk9YKQotc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxjaGFyPj4gZmlsZUNvbnRlbnRzKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRMb2Nr
ID0gZmFsc2UsIE9wdGlvblNldDxGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGU+IGxvY2tNb2RlID0g
RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8Y2hhcj4+IGZpbGVDb250ZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hv
dWxkTG9jayA9IGZhbHNlLCBPcHRpb25TZXQ8RmlsZVN5c3RlbTo6RmlsZUxvY2tNb2RlPiBsb2Nr
TW9kZSA9IEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKQogewogICAgIEZpbGVI
YW5kbGUgZmlsZSA9IHNob3VsZExvY2sgPyBGaWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZCwgbG9ja01vZGUpIDogRmlsZUhhbmRsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGZpbGUub3BlbigpOwpAQCAtMjQwLDcgKzI0MCw3
IEBAIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm9jZXNzU3RvcmFnZUNsYXNzKFdlYkNvcmU6OkF1
eGlsaWFyeVByb2Nlc3NUeXBlIHR5cGUpCiB9CiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIAotc3RhdGljIE9wdGlvbmFsPENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRib3hQ
YXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIGluaXRpYWxp
emF0aW9uUGFyYW1ldGVycywgY29uc3QgU2FuZGJveFBhcmFtZXRlcnNQdHImIHNhbmRib3hQYXJh
bWV0ZXJzLCBjb25zdCBTdHJpbmcmIHByb2ZpbGVPclByb2ZpbGVQYXRoLCBib29sIGlzUHJvZmls
ZVBhdGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDU3RyaW5nPiBzZXRBbmRTZXJpYWxpemVTYW5k
Ym94UGFyYW1ldGVycyhjb25zdCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBpbml0
aWFsaXphdGlvblBhcmFtZXRlcnMsIGNvbnN0IFNhbmRib3hQYXJhbWV0ZXJzUHRyJiBzYW5kYm94
UGFyYW1ldGVycywgY29uc3QgU3RyaW5nJiBwcm9maWxlT3JQcm9maWxlUGF0aCwgYm9vbCBpc1By
b2ZpbGVQYXRoKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5jb3VudCgpOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggY2Y0YjQ3YTYzY2E4ZmY2MGY4M2M0NmY5ZGQx
Mzg0YTc5MThhMmM4OC4uMzdlNGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICBDb25kaXRpb24gbV9wYXJzZVRyYWNrc0NvbmRpdGlvbjsKICAgICBMb2NrIG1fcGFyc2VU
cmFja3NMb2NrOwogICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9wYXJzZVRyYWNrc0xvY2spOwotICAgIE9wdGlvbmFsPE9TU3RhdHVzPiBtX3BhcnNlVHJhY2tz
U3RhdHVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wYXJzZVRyYWNrc0xvY2spOworICAgIHN0ZDo6
b3B0aW9uYWw8T1NTdGF0dXM+IG1fcGFyc2VUcmFja3NTdGF0dXMgV1RGX0dVQVJERURfQllfTE9D
SyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4g
bV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAg
ICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBlNGJlZjIz
YzZlZWFkNzA2NzVhNDRkNDQzMWY5MWQwNTgyZDU4MDk5Li4wMDM0NjhiZTBiMzcxN2ZkMGY1NGMy
OWFmNGNiYzE0NjNiODlkODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRp
b25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAg
U2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAg
T3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5
dGVSYW5nZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQogCiAgICAgQXRvbVN0cmluZyB0cmFja0lE
KCkgY29uc3QgZmluYWw7CiAgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCmluZGV4IGU1NDNlMDNlMmY0ZWYwNDU3
YzIxN2VmYzYwMzAzODMxYzY2OWZmMzkuLmYyNDk3NWIxOWEwOTVlZGE3MGM3NGEyM2NlOTM3Nzdm
NWU2NTBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMTM4LDEyICsx
MzgsMTIgQEAgTWVkaWFTYW1wbGVDdXJzb3I6Ok1lZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYm
IGFsbG9jYXRvciwgY29uc3QgTWVkaWFTYW1wbGVDdXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3JkZXJlZE1hcD4KLU9wdGlvbmFsPHR5cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yPiBNZWRp
YVNhbXBsZUN1cnNvcjo6bG9jYXRlSXRlcmF0b3IoT3JkZXJlZE1hcCYgc2FtcGxlcywgYm9vbCBo
YXNBbGxTYW1wbGVzKSBjb25zdAorc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjpp
dGVyYXRvcj4gTWVkaWFTYW1wbGVDdXJzb3I6OmxvY2F0ZUl0ZXJhdG9yKE9yZGVyZWRNYXAmIHNh
bXBsZXMsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3QKIHsKICAgICBBU1NFUlQobV9sb2NhdG9y
TG9jay5pc0xvY2tlZCgpKTsKICAgICB1c2luZyBJdGVyYXRvciA9IHR5cGVuYW1lIE9yZGVyZWRN
YXA6Oml0ZXJhdG9yOwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fbG9jYXRvciwKLSAgICAg
ICAgWyZdKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSkgLT4gT3B0aW9uYWw8SXRl
cmF0b3I+IHsKKyAgICAgICAgWyZdKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSkg
LT4gc3RkOjpvcHRpb25hbDxJdGVyYXRvcj4gewogICAgICAgICAgICAgYXNzZXJ0SXNIZWxkKG1f
bG9jYXRvckxvY2spOwogICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IHVwcGVyQm91bmQoc2Ft
cGxlcywgcHJlc2VudGF0aW9uVGltZSk7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gc2Ft
cGxlcy5iZWdpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuaAppbmRleCBiNzU2ZTI2ZDg3
YWYzNWE5MzU3MWEyZGI0OGNhMzFiM2NkOTliYmY3Li42NjVkMDAzNWRiMGVmYTIzYTgxY2ZiNThk
MDExNjZjZDA4MDFkODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhU2FtcGxlQ3Vyc29yKEFsbG9jYXRvciYmLCBNZWRp
YVRyYWNrUmVhZGVyJiwgTG9jYXRvcik7CiAgICAgTWVkaWFTYW1wbGVDdXJzb3IoQWxsb2NhdG9y
JiYsIGNvbnN0IE1lZGlhU2FtcGxlQ3Vyc29yJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cmRlcmVkTWFwPiBPcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRl
SXRlcmF0b3IoT3JkZXJlZE1hcCYsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3JkZXJlZE1h
cD4gc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gbG9jYXRlSXRl
cmF0b3IoT3JkZXJlZE1hcCYsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3QgV1RGX1JFUVVJUkVT
X0xPQ0sobV9sb2NhdG9yTG9jayk7CiAgICAgV2ViQ29yZTo6TWVkaWFTYW1wbGUqIGxvY2F0ZU1l
ZGlhU2FtcGxlKFdlYkNvcmU6OlNhbXBsZU1hcCYsIGJvb2wgaGFzQWxsU2FtcGxlcykgY29uc3Qg
V1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NhdG9yTG9jayk7CiAgICAgVGltaW5nIGxvY2F0ZVRpbWlu
ZyhXZWJDb3JlOjpTYW1wbGVNYXAmLCBib29sIGhhc0FsbFNhbXBsZXMpIGNvbnN0IFdURl9SRVFV
SVJFU19MT0NLKG1fbG9jYXRvckxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAK
aW5kZXggOWFlM2QwNTAyYWRiZGVjZmVkYjJlNmNiYmY3YWQ2MmVlM2ZiOGUzNC4uNTRiMzEyOTli
MzhhM2FiNzRiMmMwODFmMjlkOTFiOGIwNzM4OGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVh
ZGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBDb3JlTWVkaWFXcmFwcGVkPE1lZGlhVHJhY2tSZWFk
ZXI+KiBNZWRpYVRyYWNrUmVhZGVyOjp1bndyYXAoQ01CYXNlT2JqZWN0UmVmIG9iagogICAgIHJl
dHVybiB1bndyYXAoY2hlY2tlZF9jZl9jYXN0PFdyYXBwZXJSZWY+KG9iamVjdCkpOwogfQogCi1S
ZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4gTWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlKEFsbG9jYXRv
ciYmIGFsbG9jYXRvciwgY29uc3QgTWVkaWFGb3JtYXRSZWFkZXImIGZvcm1hdFJlYWRlciwgQ01N
ZWRpYVR5cGUgbWVkaWFUeXBlLCB1aW50NjRfdCB0cmFja0lELCBPcHRpb25hbDxib29sPiBlbmFi
bGVkKQorUmVmUHRyPE1lZGlhVHJhY2tSZWFkZXI+IE1lZGlhVHJhY2tSZWFkZXI6OmNyZWF0ZShB
bGxvY2F0b3ImJiBhbGxvY2F0b3IsIGNvbnN0IE1lZGlhRm9ybWF0UmVhZGVyJiBmb3JtYXRSZWFk
ZXIsIENNTWVkaWFUeXBlIG1lZGlhVHlwZSwgdWludDY0X3QgdHJhY2tJRCwgc3RkOjpvcHRpb25h
bDxib29sPiBlbmFibGVkKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgKGFsbG9jYXRvcikg
TWVkaWFUcmFja1JlYWRlcihXVEZNb3ZlKGFsbG9jYXRvciksIGZvcm1hdFJlYWRlciwgbWVkaWFU
eXBlLCB0cmFja0lELCBlbmFibGVkKSk7CiB9CkBAIC03MCw3ICs3MCw3IEBAIFdvcmtRdWV1ZSYg
TWVkaWFUcmFja1JlYWRlcjo6c3RvcmFnZVF1ZXVlKCkKICAgICByZXR1cm4gcXVldWU7CiB9CiAK
LU1lZGlhVHJhY2tSZWFkZXI6Ok1lZGlhVHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYgYWxsb2NhdG9y
LCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYgZm9ybWF0UmVhZGVyLCBDTU1lZGlhVHlwZSBtZWRp
YVR5cGUsIHVpbnQ2NF90IHRyYWNrSUQsIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCitNZWRpYVRy
YWNrUmVhZGVyOjpNZWRpYVRyYWNrUmVhZGVyKEFsbG9jYXRvciYmIGFsbG9jYXRvciwgY29uc3Qg
TWVkaWFGb3JtYXRSZWFkZXImIGZvcm1hdFJlYWRlciwgQ01NZWRpYVR5cGUgbWVkaWFUeXBlLCB1
aW50NjRfdCB0cmFja0lELCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCiAgICAgOiBDb3Jl
TWVkaWFXcmFwcGVkKFdURk1vdmUoYWxsb2NhdG9yKSkKICAgICAsIG1fdHJhY2tJRCh0cmFja0lE
KQogICAgICwgbV9tZWRpYVR5cGUobWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmgK
aW5kZXggOTIwYmJhMWI5Y2M2OGRmZTY3ODIzMzJjMGJlMTY1OWI4NzkwZDhjNi4uMTIwNWJjMjZk
YWZlZTdkZDRmZGNhN2M4NjYzODE4ZmQ4Zjg5NzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29yZU1lZGlhV3JhcHBl
ZDxNZWRpYVRyYWNrUmVhZGVyPiogdW53cmFwKENNQmFzZU9iamVjdFJlZik7CiAgICAgc3RhdGlj
IFdURjo6V29ya1F1ZXVlJiBzdG9yYWdlUXVldWUoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TWVk
aWFUcmFja1JlYWRlcj4gY3JlYXRlKEFsbG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRl
ciYsIENNTWVkaWFUeXBlLCB1aW50NjRfdCwgT3B0aW9uYWw8Ym9vbD4pOworICAgIHN0YXRpYyBS
ZWZQdHI8TWVkaWFUcmFja1JlYWRlcj4gY3JlYXRlKEFsbG9jYXRvciYmLCBjb25zdCBNZWRpYUZv
cm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxib29sPik7
CiAKICAgICB1aW50NjRfdCB0cmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CiAg
ICAgQ01NZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0K
QEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1c2luZyBDb3JlTWVkaWFX
cmFwcGVkPE1lZGlhVHJhY2tSZWFkZXI+Ojp1bndyYXA7CiAKLSAgICBNZWRpYVRyYWNrUmVhZGVy
KEFsbG9jYXRvciYmLCBjb25zdCBNZWRpYUZvcm1hdFJlYWRlciYsIENNTWVkaWFUeXBlLCB1aW50
NjRfdCwgT3B0aW9uYWw8Ym9vbD4pOworICAgIE1lZGlhVHJhY2tSZWFkZXIoQWxsb2NhdG9yJiYs
IGNvbnN0IE1lZGlhRm9ybWF0UmVhZGVyJiwgQ01NZWRpYVR5cGUsIHVpbnQ2NF90LCBzdGQ6Om9w
dGlvbmFsPGJvb2w+KTsKIAogICAgIC8vIENNQmFzZUNsYXNzCiAgICAgU3RyaW5nIGRlYnVnRGVz
Y3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViS2l0OjpNZWRpYVRyYWNrUmVhZGVy
Il9zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdy
YXBoLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRl
eCA3MGE1YzgwNDQ2Y2VjOGVlZTQ3MzU2OTNlMWM4NmU0YjYzMTU4M2NjLi4zYmNlMDE0MDY3ZWRk
YzhjNTI0ZGY4ZjA4OTZmZjEzM2FmYjVmOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBlbnVtIGNsYXNzIE9iakNU
eXBlIDogdWludDhfdCB7CiAgICAgV0tUeXBlUmVmV3JhcHBlciwKIH07CiAKLXN0YXRpYyBPcHRp
b25hbDxPYmpDVHlwZT4gdHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKIHsKICAgICBBU1NFUlQo
b2JqZWN0KTsKIApAQCAtMzA3LDExICszMDcsMTEgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9
CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAg
ICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsKICAgICAg
ICAgZGVjb2RlciA+PiBwYWdlUHJveHlJRDsKICAgICAgICAgaWYgKCFwYWdlUHJveHlJRCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gd2ViUGFnZUlEOwogICAgICAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKICAg
ICAgICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUERGQ29udGV4dE1lbnUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCmluZGV4IDgxY2RiZTgwMWMyZmNjNzZj
Yjk4YmQzMzYxMzNhMjdkNWFjOWMwZjcuLjVmYTkwZDM2OGM1ODM4NWRjNWVlNDBmYTE5ODg5ZmM0
YjNhMTkyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0
TWVudS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCkBA
IC00MSwzNCArNDEsMzQgQEAgc3RydWN0IFBERkNvbnRleHRNZW51SXRlbSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgdGl0bGUgPDwgZW5hYmxlZCA8PCBzZXBhcmF0b3IgPDwgc3RhdGUgPDwgaGFzQWN0
aW9uIDw8IHRhZzsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFBERkNvbnRleHRNZW51SXRlbT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UERGQ29u
dGV4dE1lbnVJdGVtPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gdGl0bGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0aXRs
ZTsKICAgICAgICAgZGVjb2RlciA+PiB0aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5h
YmxlZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNv
ZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2VwYXJhdG9yOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNlcGFyYXRvcjsKICAgICAgICAgZGVjb2RlciA+PiBz
ZXBhcmF0b3I7CiAgICAgICAgIGlmICghc2VwYXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxpbnQ+IHN0YXRlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGludD4gc3RhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gc3RhdGU7CiAgICAgICAg
IGlmICghc3RhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IE9wdGlvbmFsPGJvb2w+IGhhc0FjdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBo
YXNBY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQWN0aW9uOwogICAgICAgICBpZiAoIWhh
c0FjdGlvbikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0
aW9uYWw8aW50PiB0YWc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0YWc7CiAgICAgICAg
IGRlY29kZXIgPj4gdGFnOwogICAgICAgICBpZiAoIXRhZykKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC04MCwyNiArODAsMjYgQEAgc3RydWN0IFBERkNvbnRleHRNZW51SXRl
bSB7CiBzdHJ1Y3QgUERGQ29udGV4dE1lbnUgewogICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50
OwogICAgIFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+IGl0ZW1zOwotICAgIE9wdGlvbmFsPGlu
dD4gb3BlbkluUHJldmlld0luZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcGVuSW5QcmV2
aWV3SW5kZXg7CiAgICAgCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgcG9pbnQg
PDwgaXRlbXMgPDwgb3BlbkluUHJldmlld0luZGV4OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UERGQ29udGV4dE1lbnU+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFBERkNvbnRleHRNZW51PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7
Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBwb2ludDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gcG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4g
cG9pbnQ7CiAgICAgICAgIGlmICghcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxQREZDb250ZXh0TWVudUl0ZW0+PiBpdGVt
czsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UERGQ29udGV4dE1lbnVJdGVtPj4gaXRl
bXM7CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbXM7CiAgICAgICAgIGlmICghaXRlbXMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFs
PGludD4+IG9wZW5JblByZXZpZXdJbmRleDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPGludD4+IG9wZW5JblByZXZpZXdJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiBvcGVu
SW5QcmV2aWV3SW5kZXg7CiAgICAgICAgIGlmICghb3BlbkluUHJldmlld0luZGV4KQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcAppbmRleCBkOGJhZjlmZWM5YTE3MzM0MjczMWIwZDRm
MzBhYmVjMGFiOTE2ZWE4Li5lYzE3M2EyYzVkYzJiNTRmOWYyYTRlOWI5YzVjN2M2ODI5ZjYyMWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8PCBtX3Jlc3VsdE9i
amVjdDsKIH0KIAotT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJlc3BvbnNl
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8U2VjSXRl
bVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJlc3BvbnNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBpbnQ2NF90IHJlc3VsdENvZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHRDb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9T
ZWNJdGVtUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJl
c3BvbnNlRGF0YS5oCmluZGV4IGUzNzFjMTc1MzIxY2JjYjdjNjc2OWY5YTk5NzZhODVlZDVkODkx
ODEuLjk5NzEzMjRkOWU4YmJlZjk5ZWQ3MGU3MzJhYzBhYzRiOTdhZmNlYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgU2VjSXRlbVJlc3BvbnNlRGF0YShPU1N0YXR1cywgUmV0YWluUHRy
PENGVHlwZVJlZj4mJiByZXN1bHQpOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IGRlY29kZShJ
UEM6OkRlY29kZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VE
YXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYg
cmVzdWx0T2JqZWN0KCkgeyByZXR1cm4gbV9yZXN1bHRPYmplY3Q7IH0KICAgICBPU1N0YXR1cyBy
ZXN1bHRDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2RlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAppbmRleCBlZmUyZjIyMzc3ZWViYTkyM2VlYWFlNzI4
YjFhODZkYTk1ZTkxMzEyLi41MTllZGMyZGQ5MGJjZThlZGVmYTFjMGU4ZDliNTA4NzZmZGM5YThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTYzLDkgKzYz
LDkgQEAgc3RhdGljIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3M+JiBnbG9iYWxOZXR3b3JrUHJvY2Vz
cygpCiAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLmdldCgpOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0
RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjSXRl
bVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlw
ZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0
cmlidXRlc1RvTWF0Y2ggPSAwKQogewotICAgIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+
IHJlc3BvbnNlOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9u
c2U7CiAKICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgaWYgKCFnbG9iYWxO
ZXR3b3JrUHJvY2VzcygpLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6U2VjSXRlbVJlcXVlc3RTeW5jKFNlY0l0ZW1SZXF1ZXN0
RGF0YShyZXF1ZXN0VHlwZSwgcXVlcnksIGF0dHJpYnV0ZXNUb01hdGNoKSksIE1lc3NhZ2VzOjpT
ZWNJdGVtU2hpbVByb3h5OjpTZWNJdGVtUmVxdWVzdFN5bmM6OlJlcGx5KHJlc3BvbnNlKSwgMCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQppbmRleCA1NmI1OGY4MzQ1YmVmMmIyNzZmNDM4ZGQ4NzMxM2Q4YmYyZGI5ZGNhLi4x
ZGRjOTE4ZWYxMWU2YjJlZWMzOTExNjU3OGY2M2YxYTIxOTFlMTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTI4
MCwxNCArMjgwLDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViCiAgICAgZW5jb2RlciA8PCBr
ZXlwcmVzc0NvbW1hbmQuY29tbWFuZE5hbWUgPDwga2V5cHJlc3NDb21tYW5kLnRleHQ7CiB9CiAg
ICAgCi1PcHRpb25hbDxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGNvbW1hbmROYW1lOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb21tYW5k
TmFtZTsKICAgICBkZWNvZGVyID4+IGNvbW1hbmROYW1lOwogICAgIGlmICghY29tbWFuZE5hbWUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgT3B0aW9uYWw8U3RyaW5n
PiB0ZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4g
dGV4dDsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0z
MDMsMTQgKzMwMywxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dSZWN0Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIENHUmVjdCByZWN0KQogICAgIGVuY29kZXIgPDwgcmVjdC5vcmlnaW4gPDwg
cmVjdC5zaXplOwogfQogCi1PcHRpb25hbDxDR1JlY3Q+IEFyZ3VtZW50Q29kZXI8Q0dSZWN0Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPENHUmVjdD4gQXJndW1lbnRD
b2RlcjxDR1JlY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxD
R1BvaW50PiBvcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxDR1BvaW50PiBvcmlnaW47CiAgICAg
ZGVjb2RlciA+PiBvcmlnaW47CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBPcHRpb25hbDxDR1NpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+
IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dTaXplPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENHU2l6ZSBzaXplKQogICAgIGVuY29kZXIgPDwgc2l6
ZS53aWR0aCA8PCBzaXplLmhlaWdodDsKIH0KIAotT3B0aW9uYWw8Q0dTaXplPiBBcmd1bWVudENv
ZGVyPENHU2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxDR1Np
emU+IEFyZ3VtZW50Q29kZXI8Q0dTaXplPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgQ0dTaXplIHNpemU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplLndpZHRoKSkKQEAg
LTMzOCw3ICszMzgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dQb2ludD46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBDR1BvaW50IHBvaW50KQogICAgIGVuY29kZXIgPDwgcG9pbnQueCA8PCBw
b2ludC55OwogfQogCi1PcHRpb25hbDxDR1BvaW50PiBBcmd1bWVudENvZGVyPENHUG9pbnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8Q0dQb2ludD4gQXJndW1lbnRD
b2RlcjxDR1BvaW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ0dQb2ludCBw
b2ludDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50LngpKQpAQCAtMzUzLDcgKzM1Myw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5zZm9ybT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBDR0FmZmluZVRyYW5zZm9yCiAgICAgZW5jb2RlciA8PCB0cmFuc2Zvcm0uYSA8
PCB0cmFuc2Zvcm0uYiA8PCB0cmFuc2Zvcm0uYyA8PCB0cmFuc2Zvcm0uZCA8PCB0cmFuc2Zvcm0u
dHggPDwgdHJhbnNmb3JtLnR5OwogfQogCi1PcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gQXJn
dW1lbnRDb2RlcjxDR0FmZmluZVRyYW5zZm9ybT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRy
YW5zZm9ybT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENHQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybS5hKSkKQEAg
LTQwNSw3ICs0MDUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKAogICAgICAgICBlbmNvZGVP
YmplY3QoZW5jb2RlciwgdmFsdWUubmF0aXZlVmFsdWUoKS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFs
PFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0
Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQogewogICAgIEFTU0VSVChwbGF0Zm9ybVR5cGUgPT0gV2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGU6Ok9iakMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3Vs
dERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEu
bW0KaW5kZXggYjRlMDUxNTk0NzU1N2YyMDQyN2M5OTEyMmIzOWUwMDcyNDc1YTQ4Mi4uODgzYmJh
ZDJkODYzN2RmZTVmMjQwN2E2YTQ4YWUyMTQ4OWZiNDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQpAQCAtODMsNyArODMsNyBAQCBi
b29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybURlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFdlYkhpdFRlc3RSZXN1bAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aGFzRGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcikgewotICAgICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5kaWNhdG9yRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5kaWNhdG9yRGF0YTsKICAgICAgICAgZGVj
b2RlciA+PiBpbmRpY2F0b3JEYXRhOwogICAgICAgICBpZiAoIWluZGljYXRvckRhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9w
bGF5c3RhdGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlv
bi5jcHAKaW5kZXggY2JlYjQwMGRhY2U1NmI4ODJkMmU3YzQ0M2FlZGRiN2JlNDlkOWZmNy4uMDU0
M2JjNjYzNGU2MzgzMWNmOWYyMThkYWI3ZWUzZGVmNDZhOWUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1
bWVudENvZGVyc1BsYXlTdGF0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0
IEZvbnRBdHRyaQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDxGb250
QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiwgRm9udEF0dHJpYnV0ZXMmKQorc3RkOjpvcHRpb25hbDxGb250QXR0cmli
dXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiwgRm9udEF0dHJpYnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPEZvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwCmluZGV4IDk4N2Y4YjU1NTIxODFhMjg4M2IxYTY0NDQ1ZDhmYTY4MWMwZTk3
ZmIuLmY5MTYyMjBjNDNmOGUxM2EwNjQzOGVkNDM4N2Y5NmM0MjY1NjdiYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZv
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENlcnRpZmljYXRlSQogCiBib29sIEFy
Z3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIE9wdGlvbmFsPEdSZWZQdHI8
R1Rsc0NlcnRpZmljYXRlPj4gY2VydGlmaWNhdGU7CisgICAgc3RkOjpvcHRpb25hbDxHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4+IGNlcnRpZmljYXRlOwogICAgIGRlY29kZXIgPj4gY2VydGlmaWNh
dGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgRm9udEF0dHJpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLU9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRB
dHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBGb250QXR0cmlidXRlcyYp
CitzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1
dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBGb250QXR0cmlidXRlcyYpCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIx
OSw3ICsyMTksNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKEVuY29kZXImLCBjb25zdCBSZWY8Rm9udD4mKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1PcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
RGVjb2RlciYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVl
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSkKK3N0ZDo6
b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0
Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N3aWZ0T3Zl
cmxheS9Td2lmdE92ZXJsYXkvT2JqZWN0aXZlQ0Jsb2NrQ29udmVyc2lvbnMuc3dpZnQgYi9Tb3Vy
Y2UvV2ViS2l0L1N3aWZ0T3ZlcmxheS9Td2lmdE92ZXJsYXkvT2JqZWN0aXZlQ0Jsb2NrQ29udmVy
c2lvbnMuc3dpZnQKaW5kZXggNTUyYWM2ZmQ5YmU4NjJiYzc0ODg0MWUzZTczM2FmNzZlMjUwM2E5
OS4uZjZlZTQzYTU3OTdlYzYwMDRiYThlYTJhNmQ0OGU4N2QzNDI1Y2Q4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Td2lmdE92ZXJsYXkvU3dpZnRPdmVybGF5L09iamVjdGl2ZUNCbG9ja0Nv
bnZlcnNpb25zLnN3aWZ0CisrKyBiL1NvdXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1N3aWZ0T3Zl
cmxheS9PYmplY3RpdmVDQmxvY2tDb252ZXJzaW9ucy5zd2lmdApAQCAtNzAsNyArNzAsNyBAQCBl
bnVtIE9iakNCbG9ja0NvbnZlcnNpb24gewogICAgIC8vLyBDb252ZXJ0cyBhIGJsb2NrIGZyb20g
YChSZXN1bHQ8VmFsdWUsIEVycm9yPikgLT4gVm9pZGAgdG8gYChWYWx1ZT8sIEVycm9yKSAtPiBW
b2lkYC4KICAgICAvLy8KICAgICAvLy8gVGhpcyBwZXJmb3JtcyB0aGUgc2FtZSBjb252ZXJzaW9u
IGFzIGBTZWxmLmV4Y2x1c2l2ZShfOilgLCBidXQgaWYgdGhlIHJlc3VsdCBibG9jayBpcyBjYWxs
ZWQKLSAgICAvLy8gd2l0aCBgKG5pbCwgbmlsKWAgdGhlbiBgaGFuZGxlcmAgaXMgY2FsbGVkIHdp
dGggYC5zdWNjZXNzKE9wdGlvbmFsPEFueT4ubm9uZSBhcyBBbnkpYC4gVGhpcworICAgIC8vLyB3
aXRoIGAobmlsLCBuaWwpYCB0aGVuIGBoYW5kbGVyYCBpcyBjYWxsZWQgd2l0aCBgLnN1Y2Nlc3Mo
c3RkOjpvcHRpb25hbDxBbnk+Lm5vbmUgYXMgQW55KWAuIFRoaXMKICAgICAvLy8gaXMgYSBjb21w
YXRpYmlsaXR5IGJlaGF2aW9yIGZvciBodHRwOi8vd2Via2l0Lm9yZy9iLzIxNjE5OCwgYW5kIHNo
b3VsZCBub3QgYmUgYWRvcHRlZCBieQogICAgIC8vLyBuZXcgY29kZS4KICAgICBzdGF0aWMgZnVu
YyBib3hpbmdOaWxBc0FueUZvckNvbXBhdGliaWxpdHkoXyBoYW5kbGVyOiBAZXNjYXBpbmcgKFJl
c3VsdDxBbnksIEVycm9yPikgLT4gVm9pZCkgLT4gKEFueT8sIEVycm9yPykgLT4gVm9pZCB7CkBA
IC04MCw3ICs4MCw3IEBAIGVudW0gT2JqQ0Jsb2NrQ29udmVyc2lvbiB7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgbGV0IHN1Y2Nlc3MgPSB2YWx1ZSB7CiAgICAgICAgICAgICAgICAgaGFuZGxlcigu
c3VjY2VzcyhzdWNjZXNzKSkKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aGFuZGxlciguc3VjY2VzcyhPcHRpb25hbDxBbnk+Lm5vbmUgYXMgQW55KSkKKyAgICAgICAgICAg
ICAgICBoYW5kbGVyKC5zdWNjZXNzKHN0ZDo6b3B0aW9uYWw8QW55Pi5ub25lIGFzIEFueSkpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N3aWZ0T3ZlcmxheS9UZXN0cy9XZWJLaXRUZXN0cy5zd2lmdCBiL1NvdXJjZS9XZWJLaXQvU3dp
ZnRPdmVybGF5L1Rlc3RzL1dlYktpdFRlc3RzLnN3aWZ0CmluZGV4IDcwNTA0MmNkM2U5ZDQ3ZDNh
OWNjZDRmNzcyOWNjZjJhMDMwOTkxZDguLmVjMWNhZjhhZWIwNGE2YzRiZjQ1OWRjOGRlYTJkZTg3
NTZlMzczN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dl
YktpdFRlc3RzLnN3aWZ0CisrKyBiL1NvdXJjZS9XZWJLaXQvU3dpZnRPdmVybGF5L1Rlc3RzL1dl
YktpdFRlc3RzLnN3aWZ0CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYktpdFRlc3RzOiBYQ1Rl
c3RDYXNlIHsKICAgICBmdW5jIHRlc3RXS1BERkNvbmZpZ3VyYXRpb25SZWN0KCkgewogICAgICAg
ICBsZXQgY29uZmlndXJhdGlvbiA9IFdLUERGQ29uZmlndXJhdGlvbigpCiAKLSAgICAgICAgWENU
QXNzZXJ0KHR5cGUob2Y6IGNvbmZpZ3VyYXRpb24ucmVjdCkgPT0gT3B0aW9uYWw8Q0dSZWN0Pi5z
ZWxmKQorICAgICAgICBYQ1RBc3NlcnQodHlwZShvZjogY29uZmlndXJhdGlvbi5yZWN0KSA9PSBz
dGQ6Om9wdGlvbmFsPENHUmVjdD4uc2VsZikKIAogICAgICAgICBjb25maWd1cmF0aW9uLnJlY3Qg
PSBuaWwKICAgICAgICAgWENUQXNzZXJ0RXF1YWwoY29uZmlndXJhdGlvbi5yZWN0LCBuaWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYTI3
ZDEyNTRiZTc2NTgyZGVjODE2ZmUzYmQ5MzY2YjY3MzNmMDBkYi4uNmUyMWY2ZjljZDQ2OTVkYTVl
OTM3Yzk0YWM2ZmQyMzY1YzYyZTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcApAQCAtOTMsNyArOTMsNyBAQCBXVEY6OlN0cmluZyBBdHRhY2ht
ZW50OjpmaWxlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8dWlu
dDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogewog
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAppbmRleCA3YmE0NGZhYzg5MjlkODU2MWY4NGE4ODhjOWVmNmM2ODc1
NmU2MTYzLi5hZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTgzLDcgKzgzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRI
YXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5n
SW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmlu
ZGV4IGY0NjkxMTY3NmNkOThhNmExNzQ3ZTgwMWU4OGRiMjhjZjFmYzlhMDMuLjA5NGE4N2QxMTI5
NDU5MzllYzE2YTA2MzkyOWUwNmNkNGI2ODQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0Q3VycmVudEphdmFTY3Jp
cHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBtZXNzYWdlT2ZDdXJyZW50
SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxKYXZhU2NyaXB0RGlhbG9nVHlw
ZT4gdHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEphdmFTY3JpcHREaWFsb2dUeXBlPiB0eXBl
T2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICB2aXJ0dWFsIEJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiBjdXJyZW50UHJlc2VudGF0aW9u
T2ZQYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgcmV0dXJuIEJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbjo6V2luZG93OyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcAppbmRleCA4ZGJlNzk1ZWQ5ZWEzNGJmZWUzZjEyOTY1ZTVmMDMzMDBkYmZh
OTIyLi5mZmVlMDYxMTQ2MGJjMWVkYmFkYWFkYTc5ZDhkZWY4NmRmMjk5NDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woYwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIE9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1ldGFE
YXRhPiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zdCBUJiBmaWxlRGF0YSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50
UnVsZUxpc3RNZXRhRGF0YShjb25zdCBUJiBmaWxlRGF0YSkKIHsKICAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBtZXRhRGF0YTsKQEAgLTE1OCw0
MyArMTU4LDQzIEBAIHN0YXRpYyBPcHRpb25hbDxDb250ZW50UnVsZUxpc3RNZXRhRGF0YT4gZGVj
b2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoY29uc3QgVCYKIAogICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7CiAgICAgICAgIAotICAgICAgICBP
cHRpb25hbDx1aW50MzJfdD4gdmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gdmVyc2lvbjsKICAgICAgICAgZGVjb2RlciA+PiB2ZXJzaW9uOwogICAgICAgICBpZiAoIXZl
cnNpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLnZlcnNp
b24gPSBXVEZNb3ZlKCp2ZXJzaW9uKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc291
cmNlU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc291cmNlU2l6ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBzb3VyY2VTaXplOwogICAgICAgICBpZiAoIXNvdXJjZVNpemUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1ldGFEYXRhLnNvdXJjZVNpemUgPSBX
VEZNb3ZlKCpzb3VyY2VTaXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gYWN0aW9u
c1NpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGFjdGlvbnNTaXplOwogICAg
ICAgICBkZWNvZGVyID4+IGFjdGlvbnNTaXplOwogICAgICAgICBpZiAoIWFjdGlvbnNTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXRhRGF0YS5hY3Rpb25zU2l6ZSA9
IFdURk1vdmUoKmFjdGlvbnNTaXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgICAg
IGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgICAg
ICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVT
aXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmlsdGVyc1dpdGhDb25kaXRpb25z
Qnl0ZWNvZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWx0ZXJzV2l0
aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWV0YURh
dGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4g
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemU7CiAgICAgICAgIGRlY29kZXIg
Pj4gY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgICAgICBpZiAoIWNvbmRpdGlv
bmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgbWV0YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqY29u
ZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKIAotICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW47CiAgICAgICAgIGRlY29kZXIgPj4g
Y29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICBpZiAoIWNvbmRpdGlvbnNBcHBs
eU9ubHlUb0RvbWFpbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsyMTMs
NyBAQCBzdHJ1Y3QgTWFwcGVkRGF0YSB7CiAgICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEg
ZGF0YTsKIH07CiAKLXN0YXRpYyBPcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVu
dFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TWFwcGVkRGF0YT4gb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
cGF0aCkKIHsKICAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChw
YXRoKTsKICAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBmaWxlRGF0YSA9IG1hcEZpbGUo
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCmluZGV4IDJh
MjAzNzY1NDU4ZGI1NGI3YmRkMzk5MmY1OTE5OWJhZTI2YmE4NWYuLjMzODE5NzgzMjYzMmVmMTMy
NmEzOWFkMjI3M2Q4MTI4YjYyOWQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZv
aWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5h
bWUsIGNvbnN0IFdURjo6VVJMJiB0CiAgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmNy
ZWF0ZVRhYkZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIHRhYk5hbWUsIHRhYkljb25VUkwsIHNv
dXJjZVVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rv
ckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJj
ZSwgY29uc3QgT3B0aW9uYWw8V1RGOjpVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8V1RG
OjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiB1c2VD
b250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IEluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNj
cmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CkBAIC03MCw3ICs3MCw3IEBAIHZv
aWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPCiAgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKG1faWRlbnRpZmllciwgc2NyaXB0U291cmNlLCBmcmFt
ZVVSTCwgY29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6
cmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBPcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNv
bnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxXVEY6
OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVj
dGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVk
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmgKaW5kZXggNWRiNDMxY2ZiMjQyOTRhOTRmYjIzNDBlYjI0MjQwOWQ5NzFiYzlmNS4u
NWVlMDk2ZGMyMWY2MjAyNjdjN2YwNDg5NjAzZjEyOWFkNzY1OGZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtNDgs
OCArNDgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0
IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3Qg
V1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4m
Jik7Ci0gICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291
cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxX
VEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVj
dG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCByZWxvYWRJZ25v
cmluZ0NhY2hlKGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9u
YWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFdURjo6U3RyaW5nPiYg
aW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChj
b25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6
VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25F
dmFsdWF0aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdU
Rjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYg
aW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAKICAgICBJbnNwZWN0b3JFeHRlbnNpb25D
bGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRDbGllbnQoVW5pcXVlUmVmPEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAppbmRleCBjZGFkOTc4MmRh
YjY2N2UwYjdkM2NjMmIxYTljYzI2ODVmYTljZDNiLi5iMDM3ZTY1NjBjNjliYmIyOTUwMGFlZjcw
NWViYWI0ZTQ1NmQ3ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmgKQEAgLTEwNSwxMyArMTA1LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luYWxSZXF1ZXN0OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50UmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRSZXF1ZXN0OyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IGN1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyPiBjdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyOyB9CiAKICAg
ICBib29sIGN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5h
dmlnYXRpb25BY3Rpb24uaXNSZWRpcmVjdDsgfQogCiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiB0YXJnZXRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRJdGVtLmdldCgp
OyB9CiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJvbUl0ZW0uZ2V0KCk7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHJlbG9hZEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX3JlbG9hZEl0ZW0uZ2V0KCk7IH0K
IAogICAgIHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmKTsKQEAgLTE2
MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3Rp
dHV0ZURhdGE+JiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURh
dGE7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZp
Z2F0aW9uQWN0aW9uLnByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbkFjdGlvbi5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsgfQogCiAgICAgdm9pZCBzZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZp
dHkoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQmJiBhY3Rpdml0eSkg
eyBtX2NsaWVudE5hdmlnYXRpb25BY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpOyB9CiAKQEAg
LTE3OSwxMyArMTc5LDEzIEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwotICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZp
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gbV9jdXJy
ZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyOwogICAgIFZlY3RvcjxXVEY6OlVSTD4gbV9yZWRp
cmVjdENoYWluOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
bV90YXJnZXRJdGVtOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IG1fZnJvbUl0ZW07CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
bV9yZWxvYWRJdGVtOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IG1fYmFj
a0ZvcndhcmRGcmFtZUxvYWRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVM
b2FkVHlwZT4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN1YnN0aXR1dGVEYXRhPiBtX3N1YnN0aXR1dGVEYXRhOwogICAgIFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbV9sYXN0TmF2aWdhdGlvbkFjdGlvbjsKICAgICBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgbV9vcmlnaW5hdGluZ0ZyYW1lSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGEwMThlNzQ1NDJiN2RiMTEzZTMy
MTRkZDU2MWU4NmI1ZWM4OThlODQuLmVmZGVhMmQyNDdiYTNkZWI3ZDlhOTllYzFiYjZjYTBiOWEw
MzgwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25BY3Rpb24uaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZUluZm8qIHNv
dXJjZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VGcmFtZS5nZXQoKTsgfQogICAgIEZy
YW1lSW5mbyogdGFyZ2V0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEZyYW1lLmdldCgp
OyB9Ci0gICAgT3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0RnJhbWVOYW1lOyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmlu
Zz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0K
IAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNv
bnN0IHsgcmV0dXJuICFtX29yaWdpbmFsVVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1f
cmVxdWVzdC51cmwoKTsgfQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGE7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6
RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3Bl
bkFwcExpbmtzLCBSZWZQdHI8VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0
aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24pCisgICAgTmF2aWdhdGlv
bkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZy
YW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwg
Ym9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVz
ZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikK
ICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQogICAgICAgICAsIG1fdGFyZ2V0
RnJhbWUodGFyZ2V0RnJhbWUpCiAgICAgICAgICwgbV90YXJnZXRGcmFtZU5hbWUodGFyZ2V0RnJh
bWVOYW1lKQpAQCAtODcsMTQgKzg3LDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZv
KiB0YXJnZXRGcmFtZSwgT3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFs
VVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+
JiYgdXNlckluaXRpYXRlZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8q
IHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8
V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBM
aW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikK
ICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1
ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aW9uKSwgbnVsbHB0cikKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPEZyYW1lSW5m
bz4gbV9zb3VyY2VGcmFtZTsKICAgICBSZWZQdHI8RnJhbWVJbmZvPiBtX3RhcmdldEZyYW1lOwot
ICAgIE9wdGlvbmFsPFdURjo6U3RyaW5nPiBtX3RhcmdldEZyYW1lTmFtZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdURjo6U3RyaW5nPiBtX3RhcmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgV1RGOjpVUkwgbV9vcmlnaW5hbFVSTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgK
aW5kZXggYTk5NTdhYTc1YzY3ODdkZGNmYTA1MmExMjNkOWJhYzRiYzZkNzNlMi4uODE1ZjdmZDA3
NDQ3OGM3N2RhMzQ5NzY0NjUyN2JhNWMyNGZlNDA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTEwMyw3ICsxMDMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkKCkgeyByZXR1
cm4gbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRJbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkKGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCkg
eyBtX2luaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQgPSBpbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkOyB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0KCkgY29uc3QgeyByZXR1
cm4gbV9jcHVMaW1pdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3B1TGltaXQ7IH0KICAgICB2b2lkIHNldENQVUxpbWl0KGRvdWJsZSBj
cHVMaW1pdCkgeyBtX2NwdUxpbWl0ID0gY3B1TGltaXQ7IH0KIAogICAgIGJvb2wgd2FpdHNGb3JQ
YWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdHNGb3JQ
YWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdzsgfQpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N1
YnJlc291cmNlczsgfQogICAgIHZvaWQgc2V0TG9hZHNTdWJyZXNvdXJjZXMoYm9vbCBsb2Fkcykg
eyBtX2xvYWRzU3VicmVzb3VyY2VzID0gbG9hZHM7IH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPEhh
c2hTZXQ8V1RGOjpTdHJpbmc+PiYgYWxsb3dlZE5ldHdvcmtIb3N0cygpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dlZE5ldHdvcmtIb3N0czsgfQotICAgIHZvaWQgc2V0QWxsb3dlZE5ldHdvcmtIb3N0
cyhPcHRpb25hbDxIYXNoU2V0PFdURjo6U3RyaW5nPj4mJiBob3N0cykgeyBtX2FsbG93ZWROZXR3
b3JrSG9zdHMgPSBXVEZNb3ZlKGhvc3RzKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGFz
aFNldDxXVEY6OlN0cmluZz4+JiBhbGxvd2VkTmV0d29ya0hvc3RzKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd2VkTmV0d29ya0hvc3RzOyB9CisgICAgdm9pZCBzZXRBbGxvd2VkTmV0d29ya0hvc3Rz
KHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXVEY6OlN0cmluZz4+JiYgaG9zdHMpIHsgbV9hbGxvd2Vk
TmV0d29ya0hvc3RzID0gV1RGTW92ZShob3N0cyk7IH0KIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBib29sIGlnbm9yZXNBcHBCb3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVy
biBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnM7IH0KQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93IHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9j
cHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAogICAgIFdU
Rjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKQEAgLTIwNiw3ICsy
MDYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7
CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwotICAgIE9wdGlvbmFsPEhh
c2hTZXQ8V1RGOjpTdHJpbmc+PiBtX2FsbG93ZWROZXR3b3JrSG9zdHM7CisgICAgc3RkOjpvcHRp
b25hbDxIYXNoU2V0PFdURjo6U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5k
RG9tYWlucyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggYmZkNzVkYmViODNmN2I0
Y2JiODMzNTg3NDM5ODQ0OTM2ZGFmZTM2NS4uOWZiMmQ2M2Y2MTRlMWVkNzlkYTNmYmExODI2ZTg5
ZmM1YmQ3MzdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTY1LDExICsxNjUsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbiB7IHRydWUg
fTsKICAgICBib29sIG1fc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcyB7IERFRkFVTFRf
Q0FQVFVSRV9ESVNQTEFZX0lOX1VJX1BST0NFU1MgfTsKICAgICBQcm9jZXNzSUQgbV9wcmVzZW50
aW5nQXBwbGljYXRpb25QSUQgeyBnZXRDdXJyZW50UHJvY2Vzc0lEKCkgfTsKLSAgICBPcHRpb25h
bDxib29sPiBtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQ7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQ7CiAgICAg
Ym9vbCBtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0dXJlcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVy
IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkQnlDbGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzQXV0b21hdGlj
UHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CiAgICAgYm9vbCBtX3VzZXNXZWJQcm9jZXNz
Q2FjaGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VzQmFja0ZvcndhcmRDYWNoZSB7IHRydWUg
fTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3
YXJtaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElSZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkSW5mby5oCmluZGV4IGViMDIzMzc1YjY0NGZlOGI4MTk5OTA2YmM4ODNlMGJi
NDhlNWE0ODcuLjkzOGFiOWQ0YmVmNDY1YTM3MmZmMDQ4MDQ0OTFhODYwNTc2NGFkNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8uaApA
QCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9pbmZvKFdURk1vdmUoaW5mbykp
IHsgfQogCiAgICAgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJj
ZUxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5yZXNvdXJjZUxvYWRJRDsgfQotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5mcmFtZUlEOyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBwYXJlbnRGcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLnBhcmVudEZyYW1lSUQ7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5mcmFtZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8u
cGFyZW50RnJhbWVJRDsgfQogICAgIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5mby5vcmlnaW5hbFVSTDsgfQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBv
cmlnaW5hbEhUVFBNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2luZm8ub3JpZ2luYWxIVFRQTWV0
aG9kOyB9CiAgICAgV2FsbFRpbWUgZXZlbnRUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2lu
Zm8uZXZlbnRUaW1lc3RhbXA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCmluZGV4IDdiMjY5YWIwNzQyNjczMGM4NTI1NjkyMTZlMmE5MGM5MmU2MDEzODcuLmI3YmQw
OTg1NDgxY2VhODFmM2U5YzQ2ZjhmZDU4YjJiNmMzZTcxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMzAyOCw3ICszMDI4LDcgQEAgdm9pZCBXS1BhZ2VH
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdldEFwcGxp
Y2F0aW9uTWFuaWYKIHsKICAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5p
ZmVzdChbYmxvY2tdKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBtYW5pZmVzdCkgeworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVz
dChbYmxvY2tdKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dD4mIG1hbmlmZXN0KSB7CiAgICAgICAgIGJsb2NrKCk7CiAgICAgfSk7CiAjZWxzZSAvLyBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlT
dGF0aW9uLmNwcAppbmRleCAzNTVmZmNkOTJlZDQ3OGNiZDExNzg0MmUxY2JiY2U3NzFjZmNkM2I5
Li5jODcyZTY4NjMzYzBkZjgzMGVjNmMyZDM2NGJjN2ZmMjAyYmI5Y2RhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxh
eVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0
aW9uL1dLUGFnZVByaXZhdGVQbGF5U3RhdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPHdwZS93cGUuaD4KIAotc3RhdGljIHZvaWQgZHJhd1Bh
Z2VCYWNrZ3JvdW5kKGNhaXJvX3QqIGN0eCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
JiBiYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitzdGF0aWMg
dm9pZCBkcmF3UGFnZUJhY2tncm91bmQoY2Fpcm9fdCogY3R4LCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KQogewogICAgIGlmICghYmFja2dyb3VuZENvbG9yIHx8IGJhY2tncm91bmRDb2xvci52
YWx1ZSgpLmlzVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC03MSw4ICs3MSw4IEBAIHZv
aWQgV0tQYWdlSGFuZGxlS2V5Ym9hcmRFdmVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tLZXlib2Fy
ZEV2ZW50IGV2ZW50KQogICAgIH0KIAogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRs
ZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRCeUlucHV0TWV0aG9kID0gTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IHByZWVkaXRVbmRlcmxpbmVzOwotICAgIE9wdGlv
bmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBwcmVlZGl0U2VsZWN0aW9uUmFuZ2U7CisgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiBwcmVlZGl0
VW5kZXJsaW5lczsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBwcmVl
ZGl0U2VsZWN0aW9uUmFuZ2U7CiAgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPmhhbmRsZUtl
eWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCgmd3BlRXZlbnQsICIiLCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCwgV1RGTW92ZShwcmVlZGl0VW5kZXJsaW5lcyksIFdURk1vdmUocHJlZWRp
dFNlbGVjdGlvblJhbmdlKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCAyMzdmYjdlZmFmNTdm
ZWQyNzQ2Yjg2N2JjZDQwODM1NzNkMjljZDRhLi5jZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMw
NzkxZThkNGUxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBzZXRGaWxlV3JhcHBlcihmaWxlV3JhcHBl
cik7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3Bs
YXkoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVG
b3JEaXNwbGF5KCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdy
YXBwZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggYWRiYjJkYTI3MWMzMWUwNTU0OTQ3MjU3MDMzOTBjYWRjOTUzNmFhOS4uZTYw
NDBjZTAyNGQwYmFiZjQ0ZGNhNmMxMTRmZDE2MmMyMTQ1M2IwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDk5LDcgKzEwOTksNyBA
QCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYQogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSk7CiAKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzTWFwOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50c01h
cDsKICAgICBpZiAoYXNBc3luY0Z1bmN0aW9uKQogICAgICAgICBhcmd1bWVudHNNYXAgPSBXZWJD
b3JlOjpBcmd1bWVudFdpcmVCeXRlc01hcCB7IH07CiAgICAgTlNTdHJpbmcgKmVycm9yTWVzc2Fn
ZSA9IG5pbDsKQEAgLTExMzAsNyArMTEzMCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlEOwogICAgIGlmIChmcmFtZSkgewogICAgICAgICBpZiAodWludDY0X3Qg
aWRlbnRpZmllciA9IGZyYW1lLl9oYW5kbGUuZnJhbWVJRCkKICAgICAgICAgICAgIGZyYW1lSUQg
PSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPihpZGVu
dGlmaWVyKTsKQEAgLTE1ODEsNyArMTU4MSw3IEBAIC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+
KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiAgICAg
cmV0dXJuIGhhbmRsZXIgPyBoYW5kbGVyLT5hcGlIYW5kbGVyKCkgOiBuaWw7CiB9CiAKLS0gKE9w
dGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25G
b3JUZXN0aW5nCistIChzdGQ6Om9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0aW9uRm9yU2hhcmVTaGVl
dEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nCiB7CiAgICAgcmV0dXJuIF9yZXNvbHV0aW9u
Rm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nOwogfQpAQCAtMTU5Nyw3
ICsxNTk3LDcgQEAgLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25m
aWd1cmF0aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CiAgICAgaWYgKHBkZkNv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChwZGZDb25maWd1cmF0aW9uLnJlY3QpKQogICAg
ICAgICBmbG9hdFJlY3QgPSBXZWJDb3JlOjpGbG9hdFJlY3QocGRmQ29uZmlndXJhdGlvbi5yZWN0
KTsKIApAQCAtMTk3Niw3ICsxOTc2LDcgQEAgLSAodm9pZClfc2V0VGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlOihpZCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogICAgIF90
ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIH0KIAotc3RhdGljIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+PiBjcmVhdGVVc2VySW5mbyhjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9r
ZW5JbmZvPiYgaW5mbykKK3N0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPj4gY3JlYXRlVXNlckluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiYgaW5mbykKIHsKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yOTUwLDcgKzI5NTAsNyBAQCAt
ICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShfV0tBcHBsaWNhdGlvbk1hbgogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFu
aWZlc3QoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0
KSB7CisgICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpIHsKICAgICAgICAgaWYgKGNv
bXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICBpZiAobWFuaWZlc3QpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGFwaU1hbmlmZXN0ID0gQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVh
dGUoKm1hbmlmZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNDU2MWM1Njg2ODJhNTI3
NzQ3ZDZhNTE1ZWEzZjg4ZTc5MjkzYTAyNi4uZGI3Mzg2OWYzNTc1MzE4MTE5ZjRlNjA0OWEyMDFj
M2FmNGYwOTdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTEyNiw3ICsxMjYsNyBAQCBA
aW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7CiAgICAgV2Vha09iakNQdHI8
V0tXZWJWaWV3PiBfcmVsYXRlZFdlYlZpZXc7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBf
YWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlczsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IF9ncm91cElkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TU3RyaW5n
Pj4gX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxOU1N0cmluZz4+IF9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CiAgICAgTlNUaW1l
SW50ZXJ2YWwgX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0OwogICAgIEJP
T0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbjsKICAgICBCT09MIF9wcmludHNCYWNrZ3JvdW5k
czsKQEAgLTk1Miw3ICs5NTIsNyBAQCAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0ZXJucwogCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21O
ZXR3b3JrOihCT09MKWxvYWRzCiB7Ci0gICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2Vk
TmV0d29ya0hvc3RzKGxvYWRzID8gc3RkOjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJp
bmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5z
ZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxvYWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25h
bDxIYXNoU2V0PFN0cmluZz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKIH0KIAogLSAoQk9P
TClfbG9hZHNGcm9tTmV0d29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3MWU2OTY5NjIwZWY3OWMxNGU2MjYw
ZmUyMWVkNmQ1YmU0YTVhNmQyLi5iOTE5ZGQ5NzhmZDZiNDVlMjI4MDk0ZjE5YTc0N2UwOGU3ZmM5
NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaApAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjsKIAogICAgIFJldGFpblB0cjxXS1NhZmVCcm93c2luZ1dhcm5pbmc+IF9zYWZlQnJv
d3NpbmdXYXJuaW5nOwogCi0gICAgT3B0aW9uYWw8Qk9PTD4gX3Jlc29sdXRpb25Gb3JTaGFyZVNo
ZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25hbDxCT09M
PiBfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsK
IAogICAgIF9XS1NlbGVjdGlvbkF0dHJpYnV0ZXMgX3NlbGVjdGlvbkF0dHJpYnV0ZXM7CiAgICAg
X1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgX29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHM7CkBAIC0xNTMsMTAgKzE1MywxMCBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAK
ICAgICBSZXRhaW5QdHI8X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdp
c3RyeTsKIAotICAgIE9wdGlvbmFsPENHU2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7Ci0g
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZTsK
LSAgICBPcHRpb25hbDxDR1NpemU+IF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVk
U2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENHU2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudFZpZXdMYXlv
dXRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8Q0dTaXplPiBfbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2Vu
dE1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBDR1JlY3QgX2lucHV0Vmlld0JvdW5kc0luV2lu
ZG93OwogCiAgICAgQ0dGbG9hdCBfdmlld3BvcnRNZXRhVGFnV2lkdGg7CkBAIC0xNzgsNyArMTc4
LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogCiAgICAgVUlJbnRlcmZhY2VPcmll
bnRhdGlvbiBfaW50ZXJmYWNlT3JpZW50YXRpb25PdmVycmlkZTsKICAgICBCT09MIF9vdmVycmlk
ZXNJbnRlcmZhY2VPcmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxpbnQzMl90PiBfbGFzdFNlbnRE
ZXZpY2VPcmllbnRhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IF9sYXN0U2VudERl
dmljZU9yaWVudGF0aW9uOwogCiAgICAgQk9PTCBfYWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdDsK
IApAQCAtMTk2LDE1ICsxOTYsMTUgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAg
IFVJRWRnZUluc2V0cyBfYW5pbWF0ZWRSZXNpemVPbGRPYnNjdXJlZEluc2V0czsKICAgICBSZXRh
aW5QdHI8VUlWaWV3PiBfcmVzaXplQW5pbWF0aW9uVmlldzsKICAgICBDR0Zsb2F0IF9sYXN0QWRq
dXN0bWVudEZvclNjcm9sbGVyOwotICAgIE9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblZpc2libGVD
b250ZW50UmVjdDsKLSAgICBPcHRpb25hbDxDR1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVu
dFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxDR1JlY3Q+IF9mcm96ZW5WaXNpYmxlQ29udGVudFJl
Y3Q7CisgICAgc3RkOjpvcHRpb25hbDxDR1JlY3Q+IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJl
Y3Q7CiAKICAgICBCT09MIF9jb21taXREaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb247Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gX3Njcm9sbE9mZnNldFRvUmVzdG9yZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmU7
CiAgICAgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQgX29ic2N1cmVkSW5zZXRzV2hlblNhdmVkOwog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gX3Vub2JzY3VyZWRDZW50ZXJUb1Jl
c3RvcmU7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpUcmFuc2FjdGlvbklEPiBfZmlyc3RUcmFuc2Fj
dGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UG9pbnQ+IF91bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpUcmFuc2FjdGlvbklEPiBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZTsK
ICAgICBkb3VibGUgX3NjYWxlVG9SZXN0b3JlOwogCiAgICAgQk9PTCBfYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXM7CkBAIC0yNDEsNyArMjQxLDcgQEAgY2xhc3MgVmlld0dlc3R1
cmVDb250cm9sbGVyOwogICAgIEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OlZpZXdTdGFiaWxpdHlGbGFnPiBfdmlld1N0YWJpbGl0eVdo
ZW5WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQ7CiAKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gX2N1
cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGU7CiAgICAgdWludDY0X3QgX3doZWVsRXZlbnRDb3VudElu
Q3VycmVudFNjcm9sbEdlc3R1cmU7CiAKICAgICBfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgX2Ry
YWdJbnRlcmFjdGlvblBvbGljeTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBjbGFzcyBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI7CiAgICAgTW9ub3RvbmljVGltZSBfdGltZU9mUmVxdWVzdEZvclZpc2libGVD
b250ZW50UmVjdFVwZGF0ZTsKICAgICBNb25vdG9uaWNUaW1lIF90aW1lT2ZMYXN0VmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlOwogCi0gICAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gX3RpbWVPZkZp
cnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdDb21taXQ7CisgICAgc3RkOjpv
cHRpb25hbDxNb25vdG9uaWNUaW1lPiBfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVXaXRoUGVuZGluZ0NvbW1pdDsKIAogICAgIE5TVUludGVnZXIgX2ZvY3VzUHJlc2VydmF0aW9u
Q291bnQ7CiAgICAgTlNVSW50ZWdlciBfYWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7CkBA
IC0yNzYsNyArMjc2LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogLSAodm9pZClf
Y2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nOwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJu
aW5nSWZGb3JNYWluRnJhbWVOYXZpZ2F0aW9uOwogCi0tIChPcHRpb25hbDxCT09MPilfcmVzb2x1
dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKKy0gKHN0ZDo6
b3B0aW9uYWw8Qk9PTD4pX3Jlc29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlv
bkZvclRlc3Rpbmc7CiAKIC0gKFdLUGFnZVJlZilfcGFnZUZvclRlc3Rpbmc7CiAtIChOYWtlZFB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4pX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IGY2ZmI1YTE1NjY2
MGU2YjBiNWZkYWU1YTJhY2Y1ZDRkNzFkNmM5MWIuLmQwM2ViNTFkMTZkYTMyMjdmZDU2YzcyNDky
ZWIyYTM0YTJmYWI0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC00MjAsNyArNDIwLDcgQEAgLSAodm9pZClf
Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IKICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBP
cHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB2b2lkIHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKICAgICAgICAgICAg
ICAgICBjb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24oV1RGTW92ZShhdFRpbWUpLCBXVEZN
b3ZlKGhvc3RUaW1lKSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIC0g
KHZvaWQpX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwog
ICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVz
dWx0KGJvb2wgc3VjY2VzcykgY29uc3QKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiByZXN1bHQoYm9vbCBzdWNjZXNzKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0gfTsKQEAgLTUyMiw3
ICs1MjIsNyBAQCAtICh2b2lkKV9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rp
bmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcgogICAgICAgICAgICAgfSkuZ2V0KCld
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICAg
ICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1lZGlhUG9zaXRpb25TdGF0ZT4mIHN0YXRlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9z
aXRpb25TdGF0ZUNoYW5nZWQ6bmlsXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRl
eCA2Y2ZlYjllY2M0ZGI4MTFkNzVjM2NiY2YzN2NiZTJiZTRkNTlhM2I5Li4yZjdhNjlkZmRhZjdl
MTExMTBjNzc1NTY4YTNhY2IzYzdmMGRhNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oCkBAIC0zNiw3ICszNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWJzaXRlRGF0YVJlY29yZD4gewogICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLV2Vic2l0
ZURhdGFSZWNvcmQ7CiB9OwogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlw
ZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKK3N0YXRpYyBp
bmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5T
U3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUpCiB7CiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNF
cXVhbFRvU3RyaW5nOldLV2Vic2l0ZURhdGFUeXBlQ29va2llc10pCiAgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCBmZWVhNmUyOTVmZThk
YjE2MmNkODdiZTQxN2ViMmExMTVkYWRhYWRhLi42MTQ3ZDQwMzQyMTlhYzMyYTljOGY4NmNiZmQ1
ODdmY2FmOTE4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVPcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VTcGFjZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRv
cE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZU9yaWdpbiwg
dWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVp
cmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7CiAgICAgICAgIGlmICghbV9oYXNSZXF1ZXN0
U3RvcmFnZVNwYWNlU2VsZWN0b3IgfHwgIW1fZGVsZWdhdGUpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQppbmRleCAzYmFiZWJmODE1N2Ez
YWY5ZmU5OTE0NzNjZWUwNzkyZTg0YTkwMjY0Li40NjU2MWQzNDMxNGE3OWQ0MmM1N2U1OWJmNzky
N2FkMWZhNDUxMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTgzLDggKzgzLDggQEAgLSAo
dm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5T
VVJMICopdGFiSWNvblVSTCBzb3UKIAogLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5
T3JpZ2luOihOU1VSTCAqKWNvbnRleHRTZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICosIE5TRGljdGlvbmFyeSAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxGcmFtZVVSTCA9IGZyYW1lVVJMID8gc3RkOjptYWtlX29w
dGlvbmFsKFVSTChmcmFtZVVSTCkpIDogc3RkOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFVSTD4g
b3B0aW9uYWxDb250ZXh0U2VjdXJpdHlPcmlnaW4gPSBjb250ZXh0U2VjdXJpdHlPcmlnaW4gPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwoVVJMKGNvbnRleHRTZWN1cml0eU9yaWdpbikpIDogc3RkOjpudWxs
b3B0OworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwg
PyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAg
c3RkOjpvcHRpb25hbDxVUkw+IG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4
dFNlY3VyaXR5T3JpZ2luID8gc3RkOjptYWtlX29wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlP
cmlnaW4pKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChz
Y3JpcHRTb3VyY2UsIG9wdGlvbmFsRnJhbWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3Jp
Z2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxv
Y2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVj
dG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwpAQCAt
MTA0LDggKzEwNCw4IEBAIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
U291cmNlIGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRlCiAKIC0gKHZvaWQpcmVsb2Fk
SWdub3JpbmdDYWNoZTooQk9PTClpZ25vcmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICopdXNl
ckFnZW50IGluamVjdGVkU2NyaXB0OihOU1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8gc3RkOjptYWtl
X29wdGlvbmFsKFN0cmluZyh1c2VyQWdlbnQpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBPcHRpb25h
bDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IHN0ZDo6
bWFrZV9vcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRTY3JpcHQpKSA6IHN0ZDo6bnVsbG9wdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5nKHVzZXJBZ2VudCkpIDogc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRT
Y3JpcHQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5nKGluamVjdGVkU2NyaXB0KSkgOiBzdGQ6
Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lvbi0+cmVsb2FkSWdub3JpbmdDYWNoZShpZ25vcmVDYWNo
ZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9wdGlvbmFsSW5qZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAg
ICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29u
RXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3Io
KSkgfV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDBlMzQ5NGIzNzFhNWZmYmQ2Yzk4N2VlYTRkOTZkMDAw
YTc0ZTk2YTUuLjFlODI3MDEzYzYwM2FlOGJkNDNkNzk4MTcwZGViOThmYzMxNTM4NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KQEAgLTU3LDcgKzU3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNl
OihOU1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlYKIAogICAg
IFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBzb3VyY2UsIGJhc2VVUkwsIG1ha2VWZWN0b3I8U3RyaW5nPihpbmNsdWRlTWF0Y2hQ
YXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0b3I8U3RyaW5nPihleGNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5ncyksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRvV2ViQ29yZVVzZXJTdHlsZUxldmVsKGxl
dmVsKSwgd2ViVmlldyA/IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPihbd2ViVmll
dyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6IHN0ZDo6bnVsbG9wdCB9LCBjb250ZW50V29ybGQgPyAq
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkIDogQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250
ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgYmFz
ZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+KGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzKSwgbWFr
ZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzKSwgZm9yTWFpbkZyYW1l
T25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxG
cmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2ZWwobGV2ZWwpLCB3ZWJWaWV3ID8gc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4oW3dlYlZpZXcgX3BhZ2VdLT53ZWJQ
YWdlSUQoKSkgOiBzdGQ6Om51bGxvcHQgfSwgY29udGVudFdvcmxkID8gKmNvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCA6IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGIy
MGNjMjljOGQ0Y2RkNDRhZGEwODU0N2RiNzJiNTc3NjQ3ZTY0ZjYuLmMwMTE4MjBkZGRmMGNiMjc4
MzFkZGFmMmM4ZWUyM2RkOGNiNjlhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBA
IC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsRGVzY3JpcHRvcj4gcHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXAKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1l
bnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50KF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0
dGFjaG1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0
YWNobWVudD4gYXV0aGVudGljYXRvckF0dGFjaG1lbnQoX1dLQXV0aGVudGljYXRvckF0dGFjaG1l
bnQgYXR0YWNobWVudCkKIHsKICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIF9X
S0F1dGhlbnRpY2F0b3JBdHRhY2htZW50QWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZDY0YTE4MzgwMjJmYWMwMjQ0YmJm
NTZhODc2YzkzOWEyY2I2NmRhZi4uMmY0ODkzODc1MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5
YzdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnN0YXJ0Q2xl
YXJMb2FkZWRJY29uc1RpbWVyKCkKICAgICBtX2NsZWFyTG9hZGVkSWNvbnNUaW1lci5zdGFydE9u
ZVNob3QobG9hZGVkSWNvbkV4cGlyYXRpb25UaW1lKTsKIH0KIAotT3B0aW9uYWw8aW50NjRfdD4g
SWNvbkRhdGFiYXNlOjppY29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9v
bCYgZXhwaXJlZCkKK3N0ZDo6b3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjppY29uSURG
b3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9vbCYgZXhwaXJlZCkKIHsKICAgICBB
U1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgQVNTRVJUKG1fZGIuaXNPcGVuKCkpOwpAQCAt
MzA0LDcgKzMwNCw3IEBAIE9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFzZTo6aWNvbklERm9y
SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGJvb2wmIGV4CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50NjRfdD4gcmVzdWx0OworICAg
IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcmVzdWx0OwogICAgIGlmIChtX2ljb25JREZvckljb25V
UkxTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIHJlc3VsdCA9IG1f
aWNvbklERm9ySWNvblVSTFN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCk7CiAgICAgICAgIGV4cGly
ZWQgPSBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDEpIDw9IGZsb29y
KChXYWxsVGltZTo6bm93KCkgLSBpY29uRXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpKTsKQEAgLTM2Niw3ICszNjYsNyBAQCBWZWN0b3I8dWludDhfdD4gSWNvbkRh
dGFiYXNlOjppY29uRGF0YShpbnQ2NF90IGljb25JRCkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1PcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBp
Y29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRhKQorc3RkOjpvcHRpb25hbDxpbnQ2
NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGljb25EYXRhKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
ICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBJY29u
RGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93
RGF0YWJhc2VXcml0ZQogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCiAgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBh
Z2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBhbGxvd0RhdGFiYXNlV3JpdGUsIHRpbWVz
dGFtcCA9IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBP
cHRpb25hbDxpbnQ2NF90PiBpY29uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
aWNvbklEOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNvbkRhdGE7CiAgICAgICAgIFN0cmlu
ZyBpY29uVVJMOwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0ljb25EYXRhYmFzZS5oCmluZGV4IDZkZGQ4YWE4ZWY1NTZlYjZmNDE4MzM1Y2RlOTZmZTI3
M2U5NmNmZDIuLjBlN2JjYzdlYzYzZGYyNTI3MmZjYzUxMzg2MWZjYjk4MWM4NGVjNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC01
OSwxMCArNTksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyU3RhdGVtZW50cygpOwogICAg
IHZvaWQgY2xlYXJMb2FkZWRJY29uc1RpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0Q2xlYXJM
b2FkZWRJY29uc1RpbWVyKCk7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVS
TChjb25zdCBTdHJpbmcmLCBib29sJiBleHBpcmVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IGljb25JREZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgYm9vbCYgZXhwaXJlZCk7CiAgICAg
Ym9vbCBzZXRJY29uSURGb3JQYWdlVVJMKGludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiBpY29uRGF0YShpbnQ2NF90KTsKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBh
ZGRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxjaGFyPiYpOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4gYWRkSWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4m
KTsKICAgICB2b2lkIHVwZGF0ZUljb25UaW1lc3RhbXAoaW50NjRfdCBpY29uSUQsIGludDY0X3Qg
dGltZXN0YW1wKTsKICAgICB2b2lkIGRlbGV0ZUljb24oaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4
IDMzYTQ1YmNiZmYwYTY2MWUxOTY0NjkwM2E2ZjViNTk4MjU4M2Q0YTIuLjFlZTZhZDI3OTkzYTk3
MjMyZmI1Yjk1ODAzZjMxMDFjMThhMThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwog
ICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhv
ZFN0YXRlPiYmKTsKKyAgICB2b2lkIHNldFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdXNpbmcgUGxhdGZvcm1FdmVudEtl
eSA9IEdka0V2ZW50OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBwbGF0Zm9ybVRyYW5zZm9ybUN1cnNvclJlY3RUb1ZpZXdDb29yZGluYXRlcyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgYm9vbCBwbGF0Zm9ybUV2ZW50S2V5SXNLZXlQcmVz
cyhQbGF0Zm9ybUV2ZW50S2V5KikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxJbnB1dE1ldGhvZFN0
YXRlPiBtX3N0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9zdGF0
ZTsKICAgICBHUmVmUHRyPFdlYktpdElucHV0TWV0aG9kQ29udGV4dD4gbV9jb250ZXh0OwogCiAg
ICAgc3RydWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IDUwMWE3MDgx
ZjlmNzI5Njc2ZmNkY2IyNjkxYmJiYjMyNDZkMjBlMGYuLmUyMDJmMGVlMGM4NDZhOTU2Zjc4ZmRk
ZDg3MmY3ZTQ4ZDljOTg0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAt
NzAsOSArNzAsOSBAQCBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUg
ewogICAgIGJvb2wgaGFuZGxlZFJlcXVlc3Q7CiAgICAgQ1N0cmluZyBob3N0OwogICAgIENTdHJp
bmcgcmVhbG07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Q3JlZGVudGlhbD4gcHJvcG9zZWRDcmVk
ZW50aWFsOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNyZWRlbnRpYWw+IGFjY2VwdGVkQ3JlZGVu
dGlhbDsKLSAgICBPcHRpb25hbDxib29sPiBjYW5TYXZlQ3JlZGVudGlhbHM7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiBwcm9wb3NlZENyZWRlbnRpYWw7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDcmVkZW50aWFsPiBhY2NlcHRlZENyZWRlbnRpYWw7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBjYW5TYXZlQ3JlZGVudGlhbHM7CiB9OwogCiBzdGF0aWMgZ3Vp
bnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
aW5kZXggNmZmZmU1OWRkZDYyNzRjMDQxZDkyMGNhMzI5Njc3ODRhZTBjZWMzNS4uZDU5ZjIzODM5
OWE4NjI5YjYyMTUwODkzZjU3MjgzN2U3NGNlNDYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRD
dXJyZW50U2NyaXB0RGlhbG9nVXNlcklucHV0KHdlYlZpZXcsIHVzZXJJbnB1dCk7CiAgICAgfQog
Ci0gICAgT3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERp
YWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRp
b25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9u
YWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5
cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwg
V2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byogd2ViVmll
dyA9IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndl
YkNvbnRleHQsICZwYWdlKTsKICAgICAgICAgaWYgKCF3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggZGIxMzhiYTg0NWYxNzJjZGVhYjQyZTQ2MGM0ZjM0YWRmYThiOTkyMS4u
NGZlZGZhZmE4OWY0YzQ5MDE1NDU3ZmI1OTNiYTA3YmE3NDBjNWI3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0R2VvbG9j
YXRpb25NYW5hZ2VyU3RhcnQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQogICAg
ICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVH
ZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJv
dmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lF
bmFibGVkKTsKICAgICB9Ci0gICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFy
dChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24sIE9wdGlv
bmFsPENTdHJpbmc+IGVycm9yKSB7CisgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVy
LT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGEmJiBjb3JlUG9zaXRpb24s
IHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICB3ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdlcl9mYWlsZWQobWFuYWdlciwgZXJy
b3ItPmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
NjY1ZTBlZTc2MWQ0MjI5ZGI4MGVjODQxOGQyNzgxZTU2MDNjYzRmNS4uMjQwZGMyYzMxNDI3Y2U1
NWQzYTg5NDk2N2U1OWU2Y2NkMzFmMWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBXZWJLaXRTZWN1cml0eU9yaWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXco
Y29uc3QgZ2NoYXIqIHByb3RvY29sLCBjb25zdCBnYwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHByb3RvY29sLCBudWxscHRyKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChob3N0LCBudWxs
cHRyKTsKIAotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBvcHRpb25hbFBvcnQ7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gb3B0aW9uYWxQb3J0OwogICAgIGlmIChwb3J0ICYmICFXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCBwcm90b2NvbCkpCiAgICAgICAgIG9wdGlvbmFs
UG9ydCA9IHBvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjczZDk1NGM3ZWExZWEwZWY4NDNhZTUzNDZkNTAxNWRm
YzNlMDE3ZC4uZDQ2ZTAzMzhmNjMzNWZhNGU1ODFhZTNmZTgzMmM0NDVlYjAwYmQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI1NjEsNyArMjU2MSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50U2Ny
aXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIHdlYmtpdFNjcmlwdERp
YWxvZ0Rpc21pc3Mod2ViVmlldy0+cHJpdi0+Y3VycmVudFNjcmlwdERpYWxvZyk7CiB9CiAKLU9w
dGlvbmFsPFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2Ny
aXB0RGlhbG9nVHlwZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorc3RkOjpvcHRpb25hbDxXZWJL
aXRTY3JpcHREaWFsb2dUeXBlPiB3ZWJraXRXZWJWaWV3R2V0Q3VycmVudFNjcmlwdERpYWxvZ1R5
cGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBpZiAoIXdlYlZpZXctPnByaXYtPmN1
cnJlbnRTY3JpcHREaWFsb2cpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yODIw
LDcgKzI4MjAsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29u
c3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25hbDxWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYm
IHVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKK3N0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTeW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVk
aXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAg
d2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhXRUJLSVRfV0VC
X1ZJRVdfQkFTRSh3ZWJWaWV3KSwgdGV4dCwgV1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RGTW92ZShz
ZWxlY3Rpb25SYW5nZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggM2YxMzc1MzhiYWExYTM0MzM3Nzky
YTVhYzA4YmEwZWM4ZTVlMGIwNy4uMGQ5OGE5ZWQ2MDYxNmM3YTg5MzczNmI3OTVhZGY5MGYyYjdi
MzNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyB3ZWJraXRXZWJW
aWV3R2V0Q3VycmVudFNjcmlwdERpYWxvZ01lc3NhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3
ZWJraXRXZWJWaWV3U2V0Q3VycmVudFNjcmlwdERpYWxvZ1VzZXJJbnB1dChXZWJLaXRXZWJWaWV3
KiwgY29uc3QgU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdBY2NlcHRDdXJyZW50U2NyaXB0
RGlhbG9nKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Rpc21pc3NDdXJyZW50
U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqKTsKLU9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxv
Z1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJW
aWV3Kik7CitzdGQ6Om9wdGlvbmFsPFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+IHdlYmtpdFdlYlZp
ZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtp
dFdlYlZpZXdNYWtlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdFBlcm1p
c3Npb25SZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24oV2Vi
S2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSwgV2ViS2l0UG9saWN5RGVjaXNp
b24qKTsKIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3
KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlvblNldDxXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9EcmFnU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2UuaAppbmRleCBiNWZjYmYwOWQ5OTNkMjM4NjFjNmI4OTJiNDcyMDJiNDdjN2Qy
NGQzLi45MmZjMDFhOGNlYWI1NDM0YzZmM2FmNDI2ZDFlNzhjOTQyM2EyNTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaApAQCAtNjEsNyArNjEsNyBA
QCBwcml2YXRlOgogI2Vsc2UKICAgICBHUmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2RyYWc7CiAj
ZW5kaWYKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRh
dGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlv
bkRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKaW5kZXggZTllNDhmYjA4N2ZlYjdkOWE2M2IyNzk4
N2YyOWRmY2I2YWUwMzg3MS4uMDY4Mjk1OTBjZmRmMmZlM2RiMWE2MmMyMzc4OGUwN2ZmODA1NjRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUFjdGlvbigpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgYWNjZXB0KFBsYXRmb3JtRHJvcENvbnRleHQqLCBPcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gPSBzdGQ6Om51bGxvcHQsIHVuc2lnbmVkID0gMCk7CisgICAgdm9p
ZCBhY2NlcHQoUGxhdGZvcm1Ecm9wQ29udGV4dCosIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+ID0gc3RkOjpudWxsb3B0LCB1bnNpZ25lZCA9IDApOwogICAgIHZvaWQgZW50ZXIoV2Vi
Q29yZTo6SW50UG9pbnQmJiwgdW5zaWduZWQgPSAwKTsKICAgICB2b2lkIHVwZGF0ZShXZWJDb3Jl
OjpJbnRQb2ludCYmLCB1bnNpZ25lZCA9IDApOwogICAgIHZvaWQgbGVhdmUoKTsKQEAgLTc5LDEw
ICs3OSwxMCBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBHUmVmUHRyPEdka0RyYWdDb250ZXh0PiBt
X2Ryb3A7CiAjZW5kaWYKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbV9wb3NpdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBtX3Bvc2l0aW9uOwogICAg
IHVuc2lnbmVkIG1fZGF0YVJlcXVlc3RDb3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gbV9vcGVyYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRy
PEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IDhjZmE3MGI4Mjhh
MjA0NTNiNzkzMzhkZDBiNGNmNDViMzlmN2MwYmEuLjVhMjE5YWUzOWY0ZDFmMmZhOWRlYWEyZTZm
Y2RlNGQ1NTAzMGQ1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC05NSw3ICs5NSw3IEBAIERyb3BUYXJnZXQ6On5Ecm9w
VGFyZ2V0KCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV93ZWJW
aWV3LCB0aGlzKTsKIH0KIAotdm9pZCBEcm9wVGFyZ2V0OjphY2NlcHQoR2RrRHJhZ0NvbnRleHQq
IGRyb3AsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQgdGlt
ZSkKK3ZvaWQgRHJvcFRhcmdldDo6YWNjZXB0KEdka0RyYWdDb250ZXh0KiBkcm9wLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKIHsKICAg
ICBpZiAobV9sZWF2ZVRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgbV9sZWF2ZVRpbWVyLnN0
b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrNC5jcHAKaW5kZXggMjQwNmUwZjg2NzM2ZTVkOTAyZWFlMTNhMGI5MTA0MTNjYjEwZjdiZC4u
YWJiYWNhMjljNzQxMTFkY2MwOTM1NzM5NDkzYjkzYzc0NDUyNTBkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCBEcm9wVGFyZ2V0Ojp+RHJvcFRhcmdldCgpCiAgICAgZ19jYW5jZWxsYWJsZV9j
YW5jZWwobV9jYW5jZWxsYWJsZS5nZXQoKSk7CiB9CiAKLXZvaWQgRHJvcFRhcmdldDo6YWNjZXB0
KEdka0Ryb3AqIGRyb3AsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5z
aWduZWQpCit2b2lkIERyb3BUYXJnZXQ6OmFjY2VwdChHZGtEcm9wKiBkcm9wLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGlvbiwgdW5zaWduZWQpCiB7CiAgICAgbV9kcm9w
ID0gZHJvcDsKICAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDJmYmNiMzI3NDBk
ZmQ3MjhjZTM5YWJjN2MzMzkwNWNlMTlmNGU5MzMuLmNiMWFkODM4MWZlYTNiZGY0NDA5MjZlYTQ2
ODViZDE1NThiZDE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICAgICAgd2Via2l0V2ViVmlld1NlbGVjdGlv
bkRpZENoYW5nZShXRUJLSVRfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVJlZlB0cjxW
aWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdl
YkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xp
ZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+
JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFw
c2hvdChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKGNsaXBSZWN0
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmgKaW5kZXggMjg0NWVkODc3ZTk5ZWIyMmVjYjJjOWExNDRlNzMzNDg2ZDVhNGE3MC4uNTZm
NTk0ZmFhNmI2NDljYWJkMjk4NzU0ZDdkYTJmMjU4YmYzNzBkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4g
Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFJlY3Q+JiYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25h
cHNob3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmNwcAppbmRleCBiZWY4MzRiZjQ2Yjc4M2E2
OGM4Yjc5NWQ4YjE1N2M3NDJiZDYzYmFhLi4yMDJkZDA5YzIyYWJjY2Q3YTYyZDUxZjU2ZTZjMjA5
Y2NjODExODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQb3B1cE1lbnUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51
OjpjYW5jZWxUcmFja2luZygpCiAgICAgbV9tZW51ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJL
aXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KQor
dm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBpdGVtSW5kZXgpCiB7CiAgICAgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbShp
dGVtSW5kZXgpOwogICAgIGlmIChtX21lbnUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5oCmluZGV4IDUyMmMyYzZmZDNlYmEwOTdkMGYy
YzU5YWEyMDE4NmYyODMwYzg4NjcuLjQ5MDdhOTZhZTk1OGVlYTliMDBhNmEzNWE2ZTIxZjRjYjg5
ODhjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
b3B1cE1lbnUuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJLaXRQ
b3B1cE1lbnUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFjdGl2YXRlSXRlbShPcHRpb25hbDx1
bnNpZ25lZD4gaXRlbUluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2YXRlSXRlbShzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFdlYktpdFBvcHVwTWVudShHdGtXaWRnZXQqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCmluZGV4IGY1NzM3ZWQ5YjMyNDk5MTViYjQ0MTZhOTI1NjNlNGI1OGFhNjVkMmEu
Ljk4N2YyNGZiMTIyY2ZmY2I5ZWU4NDFkOGEzYjEwMGI3MTkyYzZkNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC0yODIsNyArMjgyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAg
IEtleUJpbmRpbmdUcmFuc2xhdG9yIGtleUJpbmRpbmdUcmFuc2xhdG9yOwogICAgIFRvdWNoRXZl
bnRzTWFwIHRvdWNoRXZlbnRzOwogICAgIEludFNpemUgY29udGVudHNTaXplOwotICAgIE9wdGlv
bmFsPE1vdGlvbkV2ZW50PiBsYXN0TW90aW9uRXZlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxNb3Rp
b25FdmVudD4gbGFzdE1vdGlvbkV2ZW50OwogICAgIGJvb2wgaXNCbGFuazsKICAgICBib29sIHNo
b3VsZE5vdGlmeUZvY3VzRXZlbnRzIHsgdHJ1ZSB9OwogCkBAIC0xMTIzLDcgKzExMjMsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBHZAogICAgIEFTU0VSVCghcHJpdi0+ZGlhbG9nKTsKIAogICAg
IGludCBjbGlja0NvdW50ID0gMDsKLSAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1vdmVtZW50RGVs
dGE7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1vdmVtZW50RGVsdGE7CiAgICAgR2Rr
RXZlbnRUeXBlIGV2ZW50VHlwZSA9IGdka19ldmVudF9nZXRfZXZlbnRfdHlwZShldmVudCk7CiAg
ICAgc3dpdGNoIChldmVudFR5cGUpIHsKICAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CkBAIC0x
MjU5LDcgKzEyNTksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRJbnZlcnREaXJlY3Rpb25Gb3JTY3Jv
bGxFdmVudChXZWJIaXRUZXN0UmVzdWx0RGF0YTo6SXNTY3JvbGxiYQogfQogCiAjaWYgIVVTRShH
VEs0KQotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJX
aGVlbEV2ZW50OjpQaGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVs
RXZlbnQ6OlBoYXNlPiBtb21lbnR1bSA9IHN0ZDo6bnVsbG9wdCkKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIEdka0V2ZW50KiBldmVudCwgc3RkOjpvcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4g
cGhhc2UgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+
IG1vbWVudHVtID0gc3RkOjpudWxsb3B0KQogewogICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciog
Y29udHJvbGxlciA9IHdlYmtpdFdlYlZpZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZp
ZXdCYXNlKTsKICAgICBpZiAoY29udHJvbGxlciAmJiBjb250cm9sbGVyLT5pc1N3aXBlR2VzdHVy
ZUVuYWJsZWQoKSkgewpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dFdlYlZpZXdCYXNlTW90aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZG91Ymxl
IHgKICAgICB9CiAKICAgICBhdXRvKiBldmVudCA9IGd0a19ldmVudF9jb250cm9sbGVyX2dldF9j
dXJyZW50X2V2ZW50KGNvbnRyb2xsZXIpOwotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1l
bnREZWx0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAg
ICBNb3Rpb25FdmVudCBtb3Rpb25FdmVudChGbG9hdFBvaW50KHgsIHkpLCBGbG9hdFBvaW50KHgs
IHkpLCBnZGtfZXZlbnRfZ2V0X21vZGlmaWVyX3N0YXRlKGV2ZW50KSk7CiAgICAgaWYgKHByaXYt
Pmxhc3RNb3Rpb25FdmVudCkKICAgICAgICAgbW92ZW1lbnREZWx0YSA9IG1vdGlvbkV2ZW50LnBv
c2l0aW9uIC0gcHJpdi0+bGFzdE1vdGlvbkV2ZW50LT5wb3NpdGlvbjsKQEAgLTIzODIsNyArMjM4
Miw3IEBAIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSkKICAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3Rh
dGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKLXZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSwgc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQog
ewogICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRTdGF0
ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CkBAIC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlUGFnZUNsb3NlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2Up
CiAgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS0+dXBkYXRlKHsgfSk7CiB9CiAKLVJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0
V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmFzZSwgT3B0aW9uYWw8SW50UmVjdD4mJiBjbGlwUmVjdCkKK1JlZlB0cjxXZWJLaXQ6OlZp
ZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiYmIGNsaXBS
ZWN0KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
LT5wYWdlUHJveHkuZ2V0KCk7CiAKQEAgLTI2MzEsNyArMjYzMSw3IEBAIFdlYktpdElucHV0TWV0
aG9kQ29udGV4dCogd2Via2l0V2ViVmlld0Jhc2VHZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0
V2ViVmlld0JhCiAgICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZpbHRl
ci5jb250ZXh0KCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplQ29tcG9z
aXRpb25LZXlQcmVzcyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxp
bmVzLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgc2VsZWN0aW9uUmFuZ2UpCit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlLCBjb25zdCBTdHJpbmcmIHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBzdGQ6Om9wdGlvbmFsPEVkaXRp
bmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKIHsKICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFn
ZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGV4dCwg
V1RGTW92ZSh1bmRlcmxpbmVzKSwgV1RGTW92ZShzZWxlY3Rpb25SYW5nZSkpKTsKIH0KQEAgLTI2
OTgsNyArMjY5OCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplTW91c2VFdmVu
dChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIE1vdXNlCiAgICAgaWYgKGJ1dHRvbnMg
JiBHREtfQlVUVE9OM19NQVNLKQogICAgICAgICB3ZWJFdmVudEJ1dHRvbnMgfD0gMjsKIAotICAg
IE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAgICBXZWJFdmVudDo6VHlwZSB3ZWJFdmVudFR5cGU7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBNb3VzZUV2ZW50VHlwZTo6UHJlc3M6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUuaAppbmRleCAxMTUwZGI2NWUwMGVjZjZmYjI0ZjYyMTNhMGZiYjY1MjZl
MDU5ZTk4Li5hNDg1MzkzOTliMDdmYzYzNDUwM2NkZTU4YzJhZWM2NGFiMGIzY2RlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dEluc3BlY3RvclZpZXdTaXplKFdlYktpdFdlYlZpZXdCYXNlKiwgdW5zaWduZWQgc2l6ZSk7CiB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJW
aWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51
UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRh
a2VDb250ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSosIE9wdGlvbmFsPFdl
YktpdDo6SW5wdXRNZXRob2RTdGF0ZT4mJik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5w
dXRNZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJ
bnB1dE1ldGhvZFN0YXRlPiYmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5w
dXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldENv
bnRlbnRzU2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
IApAQCAtODcsNyArODcsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktp
dFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcAogdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJWaWV3QmFz
ZSopOwogI2VuZGlmCiAKLVJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmll
d0Jhc2VUYWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50UmVjdD4mJik7CitSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZp
ZXdCYXNlVGFrZVZpZXdTbmFwc2hvdChXZWJLaXRXZWJWaWV3QmFzZSosIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW50UmVjdD4mJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RW5hYmxlQmFj
a0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZShXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZW5hYmxl
ZCk7CiBXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlciogd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIApAQCAtMTEyLDcgKzExMiw3
IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRMb3NlUG9pbnRlckxvY2soV2ViS2l0V2ViVmll
d0Jhc2UqKTsKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kQ29udGV4dChX
ZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwogV2ViS2l0SW5w
dXRNZXRob2RDb250ZXh0KiB3ZWJraXRXZWJWaWV3QmFzZUdldElucHV0TWV0aG9kQ29udGV4dChX
ZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVDb21w
b3NpdGlvbktleVByZXNzKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25h
bDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4mJik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhl
c2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBTdHJpbmcm
IHRleHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4mJik7CiAKIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VNYWtlQmxhbmsoV2ViS2l0V2ViVmlld0Jhc2UqLCBib29sKTsKIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VQYWdlR3JhYmJlZFRvdWNoKFdlYktpdFdlYlZpZXdCYXNlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAppbmRleCBi
NGQ2YjgzYjc1YzQzNmEyMzUwZTk1YmZjZTBjMTg4YmNhNDUxNmQ1Li4yODRkOWU2MDg0ZThkN2Rk
M2VkZWYzM2Q2OWI0NGVlNDRkYzk2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKQEAgLTU3LDggKzU3LDggQEAKIC0gKHZvaWQpX2xheWVy
VHJlZUNvbW1pdENvbXBsZXRlOwogCiAtICh2b2lkKV9jb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGU7
Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFBvaW50PilzY3JvbGxQb3NpdGlvbiBzY3JvbGxPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9p
bnQpc2Nyb2xsT3JpZ2luIHByZXZpb3VzT2JzY3VyZWRJbnNldDooV2ViQ29yZTo6RmxvYXRCb3hF
eHRlbnQpaW5zZXRzIHNjYWxlOihkb3VibGUpc2NhbGU7Ci0tICh2b2lkKV9yZXN0b3JlUGFnZVN0
YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiljZW50
ZXIgc2NhbGU6KGRvdWJsZSlzY2FsZTsgLy8gRklYTUU6IG5lZWRzIHNjcm9sbCBvcmlnaW4/Cist
ICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQ
b2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJv
eEV4dGVudClpbnNldHMgc2NhbGU6KGRvdWJsZSlzY2FsZTsKKy0gKHZvaWQpX3Jlc3RvcmVQYWdl
U3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGU7IC8vIEZJWE1FOiBuZWVkcyBzY3JvbGwgb3Jp
Z2luPwogCiAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CmluZGV4IDNmNTQxNzUzNjM2ZWRjOGY3NjNmZDIyNzEwNTUyOGNiMmQ0NmJkNTAuLjM5NGVlZjkx
Y2E5YTEzZWRhYmZmN2Q3ZTVlNzc4NGZmZGY0ZWE4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC05NTYsNyArOTU2LDcgQEAgLSAo
dm9pZClfY291bGROb3RSZXN0b3JlUGFnZVN0YXRlCiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxl
ci0+ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKLS0gKHZvaWQpX3Jlc3RvcmVQYWdl
U2Nyb2xsUG9zaXRpb246KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0
aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlv
dXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpGbG9hdEJveEV4dGVudClvYnNjdXJlZEluc2V0cyBz
Y2FsZTooZG91YmxlKXNjYWxlCistICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9y
aWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZElu
c2V0OihXZWJDb3JlOjpGbG9hdEJveEV4dGVudClvYnNjdXJlZEluc2V0cyBzY2FsZTooZG91Ymxl
KXNjYWxlCiB7CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICE9IFdlYktpdDo6
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpIHsKICAgICAgICAgLy8gRGVm
ZXIgc2Nyb2xsIHBvc2l0aW9uIHJlc3RvcmF0aW9uIHVudGlsIGFmdGVyIHRoZSBjdXJyZW50IHJl
c2l6ZSBjb21wbGV0ZXMuCkBAIC05ODAsNyArOTgwLDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VT
Y3JvbGxQb3NpdGlvbjooT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pc2Nyb2xsUG9zaXRp
b24KICAgICBfc2NhbGVUb1Jlc3RvcmUgPSBzY2FsZTsKIH0KIAotLSAodm9pZClfcmVzdG9yZVBh
Z2VTdGF0ZVRvVW5vYnNjdXJlZENlbnRlcjooT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4p
Y2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGUKKy0gKHZvaWQpX3Jlc3RvcmVQYWdlU3RhdGVUb1Vu
b2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pY2VudGVy
IHNjYWxlOihkb3VibGUpc2NhbGUKIHsKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1v
ZGUgIT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewog
ICAgICAgICAvLyBEZWZlciBzY3JvbGwgcG9zaXRpb24gcmVzdG9yYXRpb24gdW50aWwgYWZ0ZXIg
dGhlIGN1cnJlbnQgcmVzaXplIGNvbXBsZXRlcy4KQEAgLTE0NjAsNyArMTQ2MCw3IEBAIC0gKHZv
aWQpX3NldE9wYXF1ZUludGVybmFsOihCT09MKW9wYXF1ZQogICAgIGlmICghX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwog
ICAgIGlmICghb3BhcXVlKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xv
cihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgX3BhZ2UtPnNldEJhY2tn
cm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwpAQCAtMTY3NCw3ICsxNjc0LDcgQEAgLSAodm9p
ZClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhh
bmRsZVNjcm9sbEV2ZW50OigKICAgICBib29sIGhhc0FjdGl2ZVdoZWVsSGFuZGxlcnMgPSBldmVu
dExpc3RlbmVycy5jb250YWlucyhXZWJDb3JlOjpFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6Tm9u
UGFzc2l2ZVdoZWVsKTsKICAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGhhc0FjdGl2ZVdoZWVsSGFu
ZGxlcnMgJiYgKCFfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSB8fCBfY3VycmVudFNjcm9sbEdl
c3R1cmVTdGF0ZSA9PSBXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcp
OwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQ
aGFzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92
ZXJyaWRlUGhhc2U7CiAgICAgLy8gVGhlIGZpcnN0IGV2ZW50IHdpdGggbm9uLXplcm8gZGVsdGEg
aW4gYSBnaXZlbiBnZXN0dXJlIHNob3VsZCBiZSBjb25zaWRlcmVkIHRoZQogICAgIC8vICJCZWdh
biIgZXZlbnQgaW4gdGhlIFdlYkNvcmUgc2Vuc2UgKGUuZy4gZm9yIGRlY2lkaW5nIGNhbmNlbGFi
aWxpdHkpLiBOb3RlIHRoYXQKICAgICAvLyB0aGlzIG1heSBub3QgYmUgYSBVSVNjcm9sbFBoYXNl
QmVnaW4gZXZlbnQsIG5vciBldmVuIG5lY2Vzc2FyaWx5IHRoZSBmaXJzdCBVSVNjcm9sbFBoYXNl
Q2hhbmdlZCBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tXZWJWaWV3TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2Vi
Vmlld01hYy5oCmluZGV4IDcxZGIxMWNlYmFkNjVmYWU2NWY5Y2NiMzc4OGUxMzA2YzhiYzc0NWIu
LjIwYmIzNWY4MGUzNTYwYzU0NzljMzUzNDI5MDk5MzU1M2I3ZGJkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMuaApAQCAtMzIsOCArMzIsOCBA
QAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgogCi1fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElT
Y3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+KTsK
LU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFy
U3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKTsKK19XS092ZXJsYXlTY3JvbGxiYXJTdHls
ZSB0b0FQSVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKTsKIAogQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKFdLSW50ZXJuYWxNYWMpIDxXZWJWaWV3SW1wbERlbGVnYXRlLCBX
S1Njcm9sbFZpZXdEZWxlZ2F0ZT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
bWFjL1dLV2ViVmlld01hYy5tbQppbmRleCBhNmUyMGE1MzllMGI3NzI5MmFhMGRlYzNkYTg5ZjBm
NjE2NWFkOWNjLi4zNWU1YjViOWMzNjhjMmUzYWEzN2M0NDJiOTFkNTJhMTFjMzJjZTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQpAQCAt
NDMsNyArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU1RleHRGaW5kZXJTUEkuaD4KIAotX1dLT3ZlcmxheVNjcm9sbGJhclN0
eWxlIHRvQVBJU2Nyb2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5bGUpCitfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9B
UElTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlT
dHlsZT4gY29yZVNjcm9sbGJhclN0eWxlKQogewogICAgIGlmICghY29yZVNjcm9sbGJhclN0eWxl
KQogICAgICAgICByZXR1cm4gX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlQXV0b21hdGljOwpAQCAt
NjAsNyArNjAsNyBAQCBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHls
ZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5UwogICAgIHJldHVybiBfV0tPdmVy
bGF5U2Nyb2xsYmFyU3R5bGVBdXRvbWF0aWM7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlIHNjcm9sbGJhclN0eWxlKQorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IHRvQ29yZVNjcm9sbGJhclN0eWxlKF9XS092ZXJsYXlTY3JvbGxiYXJTdHls
ZSBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBzd2l0Y2ggKHNjcm9sbGJhclN0eWxlKSB7CiAgICAg
Y2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBlYjNiZTY1N2RlODIx
ODEyOTZhNmFmYzU1MDcyNTQ4ZDZiMmVhMzNlLi43ZGZlM2VmNDAxYWEyMGQ2MzM3NzE1MmM4Nzlm
YmQ0NGQ4M2QxN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlv
bkhhbmRsCiAgICAgbV92aWV3LmRpZFJlY2VpdmVVc2VyTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJ
bnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIG1fdmlldy5zZXRJbnB1dE1ldGhvZFN0
YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuaAppbmRleCBhMjVhMWNiMTdmNDUxNjUwMzk2ZjM4YTBlMGZi
MmZiMmVmZjY0NTJmLi44YWI4ZGI3MTVkYjY0NjE2YTE1YTA2YmIyYjQ3NjBhNDBhZDVmMjU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNz
YWdlJiYpPiYmKTsKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRN
ZXRob2RTdGF0ZT4mJik7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9u
YWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKIHByaXZhdGU6CiAgICAgLy8gUGFnZUNsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggZGMyYjhh
OGE2NTYwYmY0OTE1ZTBkMDU1NjEzOTFiMDJmYTBjN2Y3Ny4uMjI2ODY3NGYyMTc5ZmUwOTk0Zjgw
YzM3NDgyYjBjNmU3NmFmMmQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
KiBWaWV3OjppbnB1dE1ldGhvZENvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0TWV0
aG9kRmlsdGVyLmNvbnRleHQoKTsKIH0KIAotdm9pZCBWaWV3OjpzZXRJbnB1dE1ldGhvZFN0YXRl
KE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCit2b2lkIFZpZXc6OnNldElucHV0
TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewog
ICAgIG1faW5wdXRNZXRob2RGaWx0ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQpAQCAt
MzM4LDcgKzMzOCw3IEBAIHZvaWQgVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3Bl
X2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCkKICAgICBwYWdlKCkuaGFuZGxlS2V5Ym9hcmRF
dmVudChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIGV2ZW50LT5wcmVzc2Vk
ID8gZmlsdGVyUmVzdWx0LmtleVRleHQgOiBTdHJpbmcoKSwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCi12b2lkIFZpZXc6OnN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0
cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
Pj4mJiB1bmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFuZ2U+JiYgc2VsZWN0aW9uUmFuZ2Up
Cit2b2lkIFZpZXc6OnN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYg
dGV4dCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
PiYmIHVuZGVybGluZXMsIHN0ZDo6b3B0aW9uYWw8RWRpdGluZ1JhbmdlPiYmIHNlbGVjdGlvblJh
bmdlKQogewogICAgIC8vIFRoZSBXaW5kb3dzIGNvbXBvc2l0aW9uIGtleSBldmVudCBjb2RlIGlz
IDI5OSBvciBWS19QUk9DRVNTS0VZLiBXZSBuZWVkIHRvCiAgICAgLy8gZW1pdCB0aGlzIGNvZGUg
Zm9yIHdlYiBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2hlbiBrZXkgZXZlbnRzIHRyaWdnZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKaW5kZXggYjk0ODUyNTU0MzEz
ZWNlZGMwZWFkZWUwNjFjNGRmNmY2NzU1NmM1MC4uNGFlMGNhOGE3YmJjMGZkODMzMWQ0ZThlYjIz
Mjk1YWVmZDBhZjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3
LmgKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbnB1dE1ldGhvZENv
bnRleHQoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Kik7CiAgICAgV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0KiBpbnB1dE1ldGhvZENvbnRleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldElucHV0TWV0
aG9kU3RhdGUoT3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKLSAgICB2b2lk
IHN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPFdlYktpdDo6
RWRpdGluZ1JhbmdlPiYmKTsKKyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+JiYpOworICAgIHZvaWQgc3ludGhlc2l6ZUNv
bXBvc2l0aW9uS2V5UHJlc3MoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RWRp
dGluZ1JhbmdlPiYmKTsKIAogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNwcApp
bmRleCA5OTE2ZjNkN2EwNzg3YmMxZTMzNmIzNDU4ZTY0MDQxYzE3ODY0MmRkLi44Y2RiZmYzMTE2
N2VhYTczYzE3NTEzNGFmYTdmYTE5MmRkYWUzMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgV2ViS2l0UG9wdXBNZW51OjpzZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRleCkKICAg
ICBtX3NlbGVjdGVkSXRlbSA9IGl0ZW1JbmRleDsKIH0KIAotdm9pZCBXZWJLaXRQb3B1cE1lbnU6
OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KQordm9pZCBXZWJLaXRQ
b3B1cE1lbnU6OmFjdGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgp
CiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9y
UG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRleC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9v
cigtMSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBv
cHVwTWVudS5oCmluZGV4IGNmYjliY2I4YWNlM2NlN2I5NjMwZWJhZWFjZGIzY2U5YTIxMjBkYmIu
LmYzZjVlYjkyN2MzNDI1MmUxZGI2YThhNGNhMDA3MWEyODhlMjYyOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuaApAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAgICAgfldlYktpdFBvcHVwTWVudSgpID0gZGVmYXVsdDsKIAogICAg
IHZvaWQgc2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtSW5kZXgpOwotICAgIHZvaWQgYWN0aXZhdGVJ
dGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpOworICAgIHZvaWQgYWN0aXZhdGVJdGVt
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCk7CiAKIHByaXZhdGU6CiAgICAgV2Vi
S2l0UG9wdXBNZW51KFdLV1BFOjpWaWV3JiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYpOwpA
QCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsKICAg
ICBHUmVmUHRyPFdlYktpdE9wdGlvbk1lbnU+IG1fbWVudTsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbV9zZWxlY3RlZEl0ZW07CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rl
ZEl0ZW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyLmNwcAppbmRleCBlMzVlNTE0YjMzMmJkM2UwYjM5MWMyNWEzYWY3MDY0NWQ5YzliMjdiLi5i
NDEwNGI5MmU1ODVmNDY1Yzk4MzZkYTZmNGEzMTVhYmE2YzYyMzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZy
YW1lSW5kZXggLSAxXSwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKKyAgICB0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhtX2tleWZyYW1lc1tt
X2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
IGZpbmlzaERpc3BhdGNoaW5nKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3Niw3
ICsxNzYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4
dElucHV0U291cmNlU3RhdGUoKQogICAgIGF1dG8mIHBvc3RTdGF0ZUVudHJ5ID0gbmV4dEtleUZy
YW1lLnN0YXRlc1ttX2lucHV0U291cmNlU3RhdGVJbmRleF07CiAgICAgU2ltdWxhdGVkSW5wdXRT
b3VyY2UmIGlucHV0U291cmNlID0gcG9zdFN0YXRlRW50cnkuZmlyc3Q7CiAKLSAgICB0cmFuc2l0
aW9uSW5wdXRTb3VyY2VUb1N0YXRlKGlucHV0U291cmNlLCBwb3N0U3RhdGVFbnRyeS5zZWNvbmQs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKE9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0
ZShpbnB1dFNvdXJjZSwgcG9zdFN0YXRlRW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgYXV0byBmaW5pc2gg
PSBzdGQ6OmV4Y2hhbmdlKG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51
bGxwdHIpOwogICAgICAgICAgICAgZmluaXNoKGVycm9yKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMo
Y29uc3QgU2ltdWxhdGVkSW5wdXRLZQogICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0
YXRlKCk7CiB9CiAKLXZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpyZXNvbHZlTG9jYXRp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2Vi
Q29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4gb3JpZ2luLCBPcHRpb25h
bDxTdHJpbmc+IG5vZGVIYW5kbGUsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJlc29sdmVMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY3VycmVudExvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgTW91c2VNb3ZlT3JpZ2luIG9yaWdpbiwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5vZGVIYW5kbGUsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+LCBzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRMb2NhdGlvbiwgc3RkOjpudWxsb3B0KTsKQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6cmVzb2x2ZUxvY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjdXJyZW50TAogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBNb3VzZU1vdmVPcmlnaW46OkVsZW1lbnQ6IHsKLSAgICAgICAgbV9jbGll
bnQudmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudChtX3BhZ2UsIG1fZnJhbWVJRCwg
bm9kZUhhbmRsZS52YWx1ZSgpLCBbZGVzdGluYXRpb24gPSBsb2NhdGlvbi52YWx1ZSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIE9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZp
ZXdDZW50ZXJQb2ludE9mRWxlbWVudChtX3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1
ZSgpLCBbZGVzdGluYXRpb24gPSBsb2NhdGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiBpblZpZXdDZW50ZXJQb2ludCwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGVycm9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3Vy
Y2UKIAogICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTog
dHJhbnNpdGlvbiBzdGFydGVkIGJldHdlZW4gaW5wdXQgc291cmNlIHN0YXRlczogWyVkLiVkXSAt
LT4gJWQuJWQiLCB0aGlzLCBtX2tleWZyYW1lSW5kZXggLSAxLCBtX2lucHV0U291cmNlU3RhdGVJ
bmRleCwgbV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291cmNlU3RhdGVJbmRleCk7CiAKLSAgICBB
dXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gW3RoaXMs
ICZpbnB1dFNvdXJjZSwgJm5ld1N0YXRlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZCA9IFt0aGlzLCAmaW5wdXRTb3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0
aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShX
RUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFs
dWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29y
KE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIs
IGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0g
V1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2lu
dD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29y
ZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9y
aWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNl
ID0gaW5wdXRTb3VyY2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVu
dERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2Nh
dGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3Bh
dGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNiw3ICsz
MTYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291
cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1RP
VUNIX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNv
cmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVP
cmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3Bh
dGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52
YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVf
b3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAm
YiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
XShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3Ip
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0
ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJl
c29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBi
LmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwg
Yi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZN
b3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBs
b2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUg
eworICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJ
bnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2lu
OjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZp
bmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAg
IH0KIH0KIAotdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZy
YW1lPiYmIGtleUZyYW1lcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1
dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgVmVjdG9yPFNpbXVs
YXRlZElucHV0S2V5RnJhbWU+JiYga2V5RnJhbWVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgUmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFpc0FjdGl2ZSgp
KTsKICAgICBpZiAoaXNBY3RpdmUoKSkgewpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpjYW5jZWwoKQogICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhB
VVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKIH0KIAot
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKQordm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpCiB7CiAgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0
b3AoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKaW5kZXggNjk4MjIyMmU2YjlmYTI1ZGFi
YTM0NDc3MDZkMTBlYmQ5ZjQ4M2E4MS4uNzgwMmVkMTMwZjgyNzY1YzQ3ZTE1ZTUzYTk0ZDIwYThk
MWI3ZTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCkBAIC01MCw3ICs1MCw3IEBAIGVu
dW0gY2xhc3MgVmlydHVhbEtleTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0
aW9uQ29tbWFuZEVycm9yOwotdXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
KT47Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OwogCiBj
bGFzcyBXZWJQYWdlUHJveHk7CiAKQEAgLTgxLDEyICs4MSwxMiBAQCBlbnVtIGNsYXNzIFRvdWNo
SW50ZXJhY3Rpb24gewogc3RydWN0IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgewogICAgIENo
YXJLZXlTZXQgcHJlc3NlZENoYXJLZXlzOwogICAgIFZpcnR1YWxLZXlNYXAgcHJlc3NlZFZpcnR1
YWxLZXlzOwotICAgIE9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247Ci0g
ICAgT3B0aW9uYWw8TW91c2VNb3ZlT3JpZ2luPiBvcmlnaW47Ci0gICAgT3B0aW9uYWw8U3RyaW5n
PiBub2RlSGFuZGxlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsK
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBzY3JvbGxEZWx0YTsKLSAgICBPcHRpb25h
bDxTZWNvbmRzPiBkdXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVz
c2VkTW91c2VCdXR0b247CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZU1vdmVPcmlnaW4+IG9yaWdp
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbm9kZUhhbmRsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkludFNpemU+IHNjcm9sbERlbHRhOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVy
YXRpb247CiAKICAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRl
Rm9yU291cmNlVHlwZShTaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGUpOwogfTsKQEAgLTEzMyw3ICsx
MzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJh
Y3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgTW91c2VCdXR0b24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29uc3QgU3RyaW5nJiBwb2ludGVy
VHlwZSwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25k
cz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91
Y2hJbnRlcmFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBz
dGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFD
VElPTlMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24o
V2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxL
ZXksIENoYXJLZXk+JiYsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CkBAIC0x
NDEsNyArMTQxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJB
Q1RJT05TKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVsdGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7CiAjZW5kaWYKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0SW5WaWV3Q2VudGVy
UG9pbnRPZkVsZW1lbnQoV2ViUGFnZVByb3h5JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4m
JikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9m
RWxlbWVudChXZWJQYWdlUHJveHkmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OkNsaWVudCYgY2xpZW50KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAg
IH5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoKTsKIAotICAgIHZvaWQgcnVuKE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYm
IGtleUZyYW1lcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
b2lkIHJ1bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFZlY3RvcjxT
aW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwpAQCAtMTY0LDE3ICsxNjQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJh
bnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKTsKICAgICB2b2lkIHRyYW5zaXRpb25JbnB1
dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJj
ZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZv
aWQgZmluaXNoRGlzcGF0Y2hpbmcoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pOwor
ICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPik7CiAKICAgICB2b2lkIGtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJl
ZCgpOwogICAgIGJvb2wgaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0OwogCi0g
ICAgdm9pZCByZXNvbHZlTG9jYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1cnJlbnRM
b2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVP
cmlnaW4sIE9wdGlvbmFsPFN0cmluZz4gbm9kZUhhbmRsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+
JiYpOworICAgIHZvaWQgcmVzb2x2ZUxvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
dXJyZW50TG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9u
LCBNb3VzZU1vdmVPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlLCBGdW5j
dGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Piwgc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYpOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3Bh
Z2U7CiAgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OwogCi0g
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBtX2ZyYW1lSUQ7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG1fZnJhbWVJRDsKICAgICBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgbV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKICAgICBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFu
ZGxlcjsKICAgICBSdW5Mb29wOjpUaW1lcjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IG1fa2V5
RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
YjUwMDU4NTk0Y2Q3OTA1NTIyM2UyN2U3ZjU1ZTAzNDIyMDY5YjUyNi4uNjU5NDBiZjg4ZDA0ZjZj
NTMwZTc1MDI2MmFmYWJkMWY3YzNkMGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWREZXN0cm95RnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgICAgIG1faGFuZGxlV2ViRnJhbWVNYXAucmVt
b3ZlKGhhbmRsZSk7CiB9CiAKLU9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlv
blNlc3Npb246OndlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wm
IGZyYW1lTm90Rm91bmQpCitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21h
dGlvblNlc3Npb246OndlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJv
b2wmIGZyYW1lTm90Rm91bmQpCiB7CiAgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMTgsNyArMjE4LDcgQEAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZShjb25z
dCBTdHJpbmcKICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiB9CiAKLVN0cmluZyBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRChPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQpCitTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1l
SUQoc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpCiB7CiAgICAgaWYgKCFm
cmFtZUlEIHx8ICEqZnJhbWVJRCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC0z
MjksNyArMzI5LDcgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJy
b3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiB0b1Byb3RvY29sKEEKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjcmVhdGVC
cm93c2luZ0NvbnRleHQoT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uPiYmIHByZXNlbnRhdGlvbkhpbnQsIFJlZjxDcmVh
dGVCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmNyZWF0ZUJyb3dzaW5nQ29udGV4dChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiBwcmVz
ZW50YXRpb25IaW50LCBSZWY8Q3JlYXRlQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBpZiAoIW1fY2xpZW50KQpAQCAtMzgy
LDggKzM4Miw4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdD
b250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAKIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgb3JpZ2luLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNpemUs
IFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB4OwotICAgIE9wdGlvbmFsPGRvdWJsZT4geTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geTsK
ICAgICBpZiAob3JpZ2luKSB7CiAgICAgICAgIHggPSBvcmlnaW4tPmdldERvdWJsZSgieCJfcyk7
CiAgICAgICAgIGlmICgheCkKQEAgLTM5NCw4ICszOTQsOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdAogICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAneScgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQg
b3IgaW52YWxpZC4iKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOwotICAg
IE9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB3aWR0
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0OwogICAgIGlmIChzaXplKSB7CiAg
ICAgICAgIHdpZHRoID0gc2l6ZS0+Z2V0RG91YmxlKCJ3aWR0aCJfcyk7CiAgICAgICAgIGlmICgh
d2lkdGgpCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0
V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3QKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0Nv
bXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgT3B0aW9u
YWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3ksIE9wdGlvbmFsPGRvdWJsZT4mJiBvcHRpb25hbFBhZ2VM
b2FkVGltZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZUNhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0Nv
bXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYgb3B0aW9uYWxGcmFtZUhhbmRsZSwgc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5
PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0
aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxXYWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVDYWxs
YmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJv
eHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC02
OTIsNyArNjkyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYpCiAgICAgICAgIG1fd2luZG93U3RhdGVUcmFu
c2l0aW9uQ2FsbGJhY2soV2luZG93VHJhbnNpdGlvbmVkVG9TdGF0ZTo6VW5mdWxsc2NyZWVuKTsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFu
ZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgdXJsLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJh
dGVneSwgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8TmF2
aWdhdGVCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246Om5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dz
aW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTcw
NSw3ICs3MDUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5n
Q29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdQogICAgIHdhaXRGb3JOYXZpZ2F0
aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFnZSwgcGFnZUxvYWRTdHJhdGVneSwgcGFnZUxvYWRUaW1l
b3V0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBPcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFnZUxv
YWRTdHJhdGVneSwgT3B0aW9uYWw8ZG91YmxlPiYmIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBS
ZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgaGFuZGxlLCBz
dGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3Ry
YXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4m
JiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVBy
b3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNzE4LDcgKzcxOCw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
T25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5C
cm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJv
d3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5
LCBPcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0Zvcndh
cmRJbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBoYW5kbGUsIHN0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eT4mJiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIG9w
dGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJv
eHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCkBAIC03MzEsNyArNzMxLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVP
blBhZ2UoKnBhZ2UsIHBhZ2VMb2FkU3RyYXRlZ3ksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2lu
Z0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdD
b250ZXh0SGFuZGxlJiBoYW5kbGUsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYgb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LCBPcHRp
b25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxSZWxvYWRCcm93c2lu
Z0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnJlbG9hZEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGhhbmRsZSwgc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmIG9wdGlvbmFsUGFn
ZUxvYWRTdHJhdGVneSwgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgb3B0aW9uYWxQYWdlTG9hZFRp
bWVvdXQsIFJlZjxSZWxvYWRCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsK
ICAgICBpZiAoIXBhZ2UpCkBAIC05NDIsNyArOTQyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6aGFuZGxlUnVuT3BlblBhbmVsKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
V2UKICAgICBtX2RvbWFpbk5vdGlmaWVyLT5maWxlQ2hvb3NlckRpc21pc3NlZChicm93c2luZ0Nv
bnRleHRIYW5kbGUsIGZhbHNlLCBXVEZNb3ZlKHNlbGVjdGVkRmlsZXMpKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93
c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgUmVmPEpT
T046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0LCBSZWY8
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3Np
bmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpG
cmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxKU09O
OjpBcnJheT4mJiBhcmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1RpbWVv
dXQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQog
ewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2lu
Z0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50
NjRfdCBjYWxsYmFja0lELCBjbwogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0
KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5k
bGUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0
SGFuZGxlJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwgT3B0aW9uYWw8aW50PiYmIG9w
dGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nJiBvcHRpb25hbE5hbWUsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG9wdGlvbmFsTm9kZUhhbmRsZSwg
UmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5n
Q29udGV4dEhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJh
bWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBvcHRpb25hbE9yZGlu
YWwsIGNvbnN0IFN0cmluZyYgb3B0aW9uYWxOYW1lLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZl
Q2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghb3B0aW9u
YWxPcmRpbmFsICYmICFvcHRpb25hbE5hbWUgJiYgIW9wdGlvbmFsTm9kZUhhbmRsZSkKICAgICAg
ICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIkNvbW1hbmQgbXVzdCBzcGVjaWZ5IGEgY2hpbGQgZnJhbWUgYnkgb3JkaW5hbCwg
bmFtZSwgb3IgZWxlbWVudCBoYW5kbGUuIik7CkBAIC05OTEsNyArOTkxLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXUKICAgICBpZiAoZnJhbWVOb3RGb3VuZCkKICAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY2FsbGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHN0
ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGVycm9yVHlwZSkgewogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklO
R19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBCiAg
ICAgaWYgKGZyYW1lTm90Rm91bmQpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
XShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlEKSBtdXRhYmxlIHsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4pPiBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURf
RVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQx
LDcgKzEwNDEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJh
bWVIYW5kbGUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QQogICAgIHBhZ2UtPnByb2Nlc3Mo
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OlJlc29sdmVQYXJlbnRGcmFtZShwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0
ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRl
U3lzdGVtKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0g
Y29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBzd2l0Y2ggKGNvb3JkaW5hdGVTeXN0ZW0pIHsKICAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW06
OlBhZ2U6CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29vcmRpbmF0ZVN5
c3RlbT4gcHJvdG9jb2xTdHJpbmdUb0Nvb3JkaW5hdGVTeXN0ZW0oSW5zcGVjdG9yOjpQcgogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNv
bXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUsIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5k
bGUsIE9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVT
eXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
b3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1
dGVFbGVtZW50TGF5b3V0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CiAg
ICAgaWYgKCFwYWdlKQpAQCAtMTA2NywxMSArMTA2NywxMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbQogICAgIGlmIChmcmFtZU5vdEZvdW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPENvb3JkaW5hdGVT
eXN0ZW0+IGNvb3JkaW5hdGVTeXN0ZW0gPSBwcm90b2NvbFN0cmluZ1RvQ29vcmRpbmF0ZVN5c3Rl
bShjb29yZGluYXRlU3lzdGVtVmFsdWUpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29vcmRpbmF0ZVN5
c3RlbT4gY29vcmRpbmF0ZVN5c3RlbSA9IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVt
KGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSk7CiAgICAgaWYgKCFjb29yZGluYXRlU3lzdGVtKQogICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlk
UGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnY29vcmRpbmF0ZVN5c3RlbScgaXMgaW52YWxpZC4i
KTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBX
ZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBjb21w
bGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0Nl
bnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIG11dGFibGUgeworICAgIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVy
UG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MTIwLDcgKzExMjAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25F
bGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYQogICAgIGlmIChmcmFtZU5v
dEZvdW5kKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5v
dEZvdW5kKTsKIAotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKE9wdGlvbmFsPFN0cmluZz4gZXJy
b3JUeXBlKSBtdXRhYmxlIHsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxTdHJpbmc+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBl
KSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTI1NSw3ICsxMjU1LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0RmlsZXNUb1NlbGVjdEYKICAgICAgICAgaWYgKCFm
aWxlRGF0YSkKICAgICAgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIlRoZSBwYXJhbWV0ZXIgJ2ZpbGVDb250ZW50cycgY29u
dGFpbnMgYSBub24tc3RyaW5nIHZhbHVlLiIpOwogCi0gICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
bG9jYWxGaWxlUGF0aCA9IHBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmls
ZShmaWxlbmFtZSwgZmlsZURhdGEpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbG9j
YWxGaWxlUGF0aCA9IHBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShm
aWxlbmFtZSwgZmlsZURhdGEpOwogICAgICAgICBpZiAoIWxvY2FsRmlsZVBhdGgpCiAgICAgICAg
ICAgICBTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFs
RXJyb3IsICJUaGUgcmVtb3RlIGZpbGUgY291bGQgbm90IGJlIHNhdmVkIHRvIGEgbG9jYWwgdGVt
cG9yYXJ5IGRpcmVjdG9yeS4iKTsKIApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6c2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDoKICAgICAgICAgbmV3RmlsZUxpc3QuYXBwZW5kKGZpbGVuYW1lKTsKICAgICB9
CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0
aW9uSGFuZGxlciA9IFtjYWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFi
bGUgeworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4g
Y29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tdKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBj
YWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
KmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjoKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrXShPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgbXV0YWJsZSB7CisgICAg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja10oc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJy
b3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtj
YWxsYmFja10oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIG11dGFibGUgeworICAgIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBjb21wbGV0aW9u
SGFuZGxlciA9IFtjYWxsYmFja10oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBl
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTY2LDkgKzE1NjYsOSBAQCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXImIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQ
YWdlKFdlYlBhZ2VQcgogfQogCiAvLyBNQVJLOiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNs
aWVudCBBUEkKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnZpZXdwb3J0SW5WaWV3Q2VudGVy
UG9pbnRPZkVsZW1lbnQoV2ViUGFnZVByb3h5JiBwYWdlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVI
YW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50
T2ZFbGVtZW50KFdlYlBhZ2VQcm94eSYgcGFnZSwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVI
YW5kbGUmIG5vZGVIYW5kbGUsIEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4s
IGJvb2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdD
ZW50ZXJQb2ludCwgYm9vbCkgbXV0YWJsZSB7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRs
ZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wpIG11dGFibGUg
ewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX01FU1NBR0UoKmVy
cm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzZXRDbGlja0NvdW50KCkKICAgICBtX2xhc3RDbGlj
a1Bvc2l0aW9uID0geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0
aW9uLCBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxv
Y2F0aW9uSW5WaWV3cG9ydCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFj
dGlvbiwgbW91c2VCdXR0b24sIGxvY2F0aW9uSW5WaWV3cG9ydCwgcG9pbnRlclR5cGVdKFdlYkNv
cmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY2xpcHBl
ZFggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXdwb3J0Lngo
KSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIE1vdXNlSW50CiAgICAgICAgIH0KIAogICAgICAgICAvLyBCcmlkZ2UgdGhl
IGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0aW9uIGhhbmRsZXIuCi0g
ICAgICAgIGF1dG8gbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hl
ZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwogICAgICAgICB9OwogCkBA
IC0xNjQyLDcgKzE2NDIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1v
dXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludAogI2VuZGlmIC8vIEVO
QUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQogCiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9UT1VDSF9JTlRFUkFDVElPTlMpCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBP
cHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc3VhbFZpZXdwb3J0Qm91bmRzID0gV2ViQ29yZTo6
RmxvYXRSZWN0KHsgfSwgcGFnZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5zaXplKCkpOwpAQCAt
MTY1Myw3ICsxNjUzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVUb3Vj
aEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgVG91Y2hJbnQKICNlbmRpZgogCiAgICAg
bV9zaW11bGF0aW5nVG91Y2hJbnRlcmFjdGlvbiA9IHRydWU7Ci0gICAgcGxhdGZvcm1TaW11bGF0
ZVRvdWNoSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIGxvY2F0aW9uSW5WaWV3cG9ydCwg
ZHVyYXRpb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICBwbGF0Zm9ybVNpbXVsYXRlVG91
Y2hJbnRlcmFjdGlvbihwYWdlLCBpbnRlcmFjdGlvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBkdXJh
dGlvbiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIG1fc2ltdWxhdGluZ1Rv
dWNoSW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3Ip
OwogICAgIH0pOwpAQCAtMTY2MSwxMCArMTY2MSwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBUb3VjaElu
dAogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQogCiAjaWYg
RU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXVEY6OlZhcmlhbnQ8VmlydHVhbEtl
eSwgQ2hhcktleT4mJiBrZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxL
ZXksIENoYXJLZXk+JiYga2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8v
IEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBsZXRpb24g
aGFuZGxlci4KLSAgICBhdXRvIGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICBhdXRvIGtleWJvYXJkRXZl
bnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CiAgICAgfTsKIApA
QCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVX
aGVlbEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2UKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdz
IGNvbXBsZXRpb24gaGFuZGxlci4KLSAgICAgICAgYXV0byB3aGVlbEV2ZW50c0ZsdXNoZWRDYWxs
YmFjayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShP
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gd2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
cnJvcik7CiAgICAgICAgIH07CiAKQEAgLTE3ODEsNyArMTc4MSw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1CiAKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25JblZpZXdwb3J0
ID0gV2ViQ29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihmbG9hdFgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGZsb2F0WSkpOwogCi0gICAgICAgIGF1dG8gbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2sgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHBhZ2UsIGZsb2F0WCwgZmxvYXRZXShPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hl
ZENhbGxiYWNrID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlLCBmbG9hdFgsIGZsb2F0WV0oc3RkOjpvcHRp
b25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgewogICAgICAgICAgICAgaWYgKGVy
cm9yKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgp
LnRvUHJvdG9jb2xTdHJpbmcoKSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTE4NDAsNyArMTg0
MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0
aW9ucyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sCiAKICAgICAgICAgYXV0byB2aXJ0dWFsS2V5
U3RyaW5nID0gaW50ZXJhY3Rpb25PYmplY3QtPmdldFN0cmluZygia2V5Il9zKTsKICAgICAgICAg
aWYgKCEhdmlydHVhbEtleVN0cmluZykgewotICAgICAgICAgICAgT3B0aW9uYWw8VmlydHVhbEtl
eT4gdmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleT4odmlydHVhbEtleVN0cmluZyk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZpcnR1YWxLZXk+IHZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk+KHZpcnR1YWxLZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYg
KCF2aXJ0dWFsS2V5KQogICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnRlcmFjdGlvbiBpbiB0
aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICdrZXknIHZhbHVlLiIp
OwogCkBAIC0xODczLDcgKzE4NzMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJm
b3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbAogICAgIGlm
ICghYWN0aW9uc1RvUGVyZm9ybS5zaXplKCkpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJObyBhY3Rpb25zIHRvIHBl
cmZvcm0uIik7CiAKLSAgICBhdXRvIGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpXShPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikgeworICAgIGF1dG8ga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBwYWdlID0gbWFrZVJlZigqcGFnZSldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJhY2st
PnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAgICAg
ZWxzZQpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgc3RhdGljIFZpcnR1YWxLZXkgbm9ybWFsaXplZFZp
cnR1YWxLZXkoVmlydHVhbEtleSBrZXkpCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VUNo
YXIzMj4gcHJlc3NlZENoYXJLZXkoY29uc3QgU3RyaW5nJiBwcmVzc2VkQ2hhcktleVN0cmluZykK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXNzZWRDaGFyS2V5KGNvbnN0IFN0cmlu
ZyYgcHJlc3NlZENoYXJLZXlTdHJpbmcpCiB7CiAgICAgc3dpdGNoIChwcmVzc2VkQ2hhcktleVN0
cmluZy5sZW5ndGgoKSkgewogICAgIGNhc2UgMToKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAgICAgICAgICAgICAgICAgIGlmICghcHJlc3NlZFZpcnR1
YWxLZXlTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQg
YSBub24tc3RyaW5nIHZpcnR1YWwga2V5IHZhbHVlLiIpOwogCi0gICAgICAgICAgICAgICAgICAg
IE9wdGlvbmFsPFZpcnR1YWxLZXk+IHBhcnNlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3Ry
aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiBwYXJz
ZWRWaXJ0dWFsS2V5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5PihwcmVzc2VkVmlydHVhbEtleVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghcGFyc2VkVmlydHVhbEtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJF
bmNvdW50ZXJlZCBhbiB1bmtub3duIHZpcnR1YWwga2V5IHZhbHVlLiIpOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlCkBAIC0yMTUxLDcgKzIxNTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OgogICAgIH0KIAogICAgIC8vIERlbGVnYXRlIHRoZSByZXN0IG9mIMKnMTcuNCBEaXNwYXRjaGlu
ZyBBY3Rpb25zIHRvIHRoZSBkaXNwYXRjaGVyLgotICAgIGlucHV0RGlzcGF0Y2hlci5ydW4oZnJh
bWVJRCwgV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICBpbnB1dERpc3BhdGNoZXIucnVu
KGZyYW1lSUQsIFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6
b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAgaWYgKGVy
cm9yKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Q
cm90b2NvbFN0cmluZygpKTsKICAgICAgICAgZWxzZQpAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjoKICAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0
RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOwogICAgIGlucHV0RGlz
cGF0Y2hlci5jYW5jZWwoKTsKICAgICAKLSAgICBpbnB1dERpc3BhdGNoZXIucnVuKGZyYW1lSUQs
IFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgaW5wdXREaXNwYXRjaGVyLnJ1
bihmcmFtZUlELCBXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CiAgICAgICAg
IGlmIChlcnJvcikKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1
ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CiAgICAgICAgIGVsc2UKQEAgLTIxOTAsNyArMjE5MCw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2Uo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9B
Q1RJT05TX0FQSSkKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNo
b3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0
SGFuZGxlJiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZy
YW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6Tm9kZUhhbmRsZSYgbm9kZUhhbmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBvcHRpb25hbFNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIE9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDbGlwVG9WaWV3
cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGhhbmRsZSwgY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3Jl
ZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMjIwNSw3
ICsyMjA1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAgICBib29sIGNsaXBUb1ZpZXdw
b3J0ID0gb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCA/ICpvcHRpb25hbENsaXBUb1ZpZXdwb3J0IDog
ZmFsc2U7CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJv
eHkmLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxs
YmFjaz4mJik+IHRha2VWaWV3U25hcHNvdCA9IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UmVjdD4mJiByZWN0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4m
JiBjYWxsYmFjaykgeworICAgIEZ1bmN0aW9uPHZvaWQoV2ViUGFnZVByb3h5Jiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+
IHRha2VWaWV3U25hcHNvdCA9IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpJbnRSZWN0PiYmIHJlY3QsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmIGNh
bGxiYWNrKSB7CiAgICAgICAgIHBhZ2UuY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShb
cGFnZSA9IG1ha2VSZWYocGFnZSksIHJlY3QgPSBXVEZNb3ZlKHJlY3QpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQogICAgICAg
ICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3Ip
OwpAQCAtMjIxNCw3ICsyMjE0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAgICAgICAg
ICAgIGlmICghc25hcHNob3QpCiAgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1IoSW50ZXJuYWxFcnJvcik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4gYmFzZTY0RW5jb2RlZERhdGEgPSBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKCpz
bmFwc2hvdCk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2Rl
ZERhdGEgPSBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKCpzbmFwc2hvdCk7CiAgICAg
ICAgICAgICBpZiAoIWJhc2U2NEVuY29kZWREYXRhKQogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwogCkBAIC0yMjI3LDcgKzIy
MjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJ
bnRSZWN0JiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtwYWdlID0gbWFrZVJlZigqcGFnZSksIGNh
bGxiYWNrLCB0YWtlVmlld1NuYXBzb3QgPSBXVEZNb3ZlKHRha2VWaWV3U25hcHNvdCldKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0JiYgcmVjdCkgbXV0YWJsZSB7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNv
cmU6OkludFJlY3QmJik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3BhZ2UgPSBtYWtlUmVmKCpwYWdl
KSwgY2FsbGJhY2ssIHRha2VWaWV3U25hcHNvdCA9IFdURk1vdmUodGFrZVZpZXdTbmFwc290KV0o
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCYmIHJlY3Qp
IG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CiAgICAgICAgICAgICBjYWxsYmFj
ay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoKmVycm9y
VHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU2hhcmVhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gYmFzZTY0RW5jb2RlZERhdGEgPSBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGltYWdlRGF0YUhhbmRsZSk7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVu
Y29kZWREYXRhID0gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShpbWFnZURhdGFIYW5k
bGUpOwogICAgIGlmICghYmFzZTY0RW5jb2RlZERhdGEpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOwogCkBAIC0yMjY0LDE5ICsyMjY0LDE5
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0FJUk8pCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0
Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1H
ZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpCiB7
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3
U25hcHNob3QmKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpw
bGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpCiB7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0FJUk8pCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1PcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90
ZUZpbGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JS
ZW1vdGVGaWxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA4YjcxYTg4M2U4MzVmNWJjMjY0
MjA2YmYxNTFjY2ZkMzViOWM0ZWFkLi4xYzcyODFjYWIwMDM5OGNlY2I4NGU1ZTI2YTA0OWM5ODhk
NjY3MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3NQb29sOwogY2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7CiBwdWJsaWM6CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlIHR5cGU7Ci0gICAg
T3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgc3RkOjpudWxsb3B0IH07CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICBBdXRvbWF0
aW9uQ29tbWFuZEVycm9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZSB0eXBlKQogICAgICAgICA6IHR5cGUodHlwZSkgeyB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZygpOwogfTsKIAotdXNpbmcgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlv
bkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRv
bWF0aW9uQ29tbWFuZEVycm9yPik+OwogCiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5h
bCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25T
ZXNzaW9uPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVN
b3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIE1vdXNlQnV0
dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIGNvbnN0IFN0cmlu
ZyYgcG9pbnRlclR5cGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQotICAgIHZvaWQgc2ltdWxh
dGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgT3B0aW9uYWw8U2Vjb25kcz4gZHVy
YXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHNpbXVsYXRl
VG91Y2hJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBUb3VjaEludGVyYWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
ZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIHZvaWQgc2ltdWxhdGVL
ZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIFdU
Rjo6VmFyaWFudDxWaXJ0dWFsS2V5LCBDaGFyS2V5PiYmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhh
bmRsZXImJik7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJEUklW
RVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgIHZvaWQgc2ltdWxhdGVXaGVlbEludGVyYWN0aW9u
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVsdGEsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxl
ciYmKTsKICNlbmRpZgotICAgIHZvaWQgdmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVu
dChXZWJQYWdlUHJveHkmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiwgRnVuY3Rpb248
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+KT4mJik7CisgICAgdm9pZCB2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVt
ZW50KFdlYlBhZ2VQcm94eSYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIEZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIHN0ZDo6b3B0aW9u
YWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmKTsKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJE
UklWRVJfQUNUSU9OU19BUEkpCiAKQEAgLTE2OSwyNiArMTY5LDI2IEBAIHB1YmxpYzoKICAgICAv
LyBQbGF0Zm9ybTogR2VuZXJpYwogICAgIHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0cyhSZWY8R2V0
QnJvd3NpbmdDb250ZXh0c0NhbGxiYWNrPiYmKTsKICAgICB2b2lkIGdldEJyb3dzaW5nQ29udGV4
dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBSZWY8R2V0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgY3Jl
YXRlQnJvd3NpbmdDb250ZXh0KE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbj4mJiwgUmVmPENyZWF0ZUJyb3dzaW5nQ29u
dGV4dENhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUJyb3dzaW5nQ29udGV4dChzdGQ6Om9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dFBy
ZXNlbnRhdGlvbj4mJiwgUmVmPENyZWF0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGNsb3NlQnJvd3NpbmdD
b250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSYpOwogICAgIHZvaWQgc3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmLCBSZWY8U3dp
dGNoVG9Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFt
ZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3JpZ2luLCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiYmIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0Q2FsbGJhY2s+JiYpOwogICAgIHZvaWQgbWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29u
dGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmLCBSZWY8TWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYm
KTsKICAgICB2b2lkIGhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBSZWY8SGlkZVdp
bmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgbmF2aWdhdGVCcm93
c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3Np
bmdDb250ZXh0SGFuZGxlJiwgY29uc3QgU3RyaW5nJiB1cmwsIE9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJs
ZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNr
PiYmKTsKLSAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+
JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQsIFJlZjxHb0JhY2tJbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lkIGdvRm9yd2FyZEluQnJvd3NpbmdDb250
ZXh0KGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYsIE9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVv
dXQsIFJlZjxHb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKLSAgICB2b2lk
IHJlbG9hZEJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmLCBPcHRpb25hbDxkb3Vi
bGU+JiYgcGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYpOwotICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgT3B0aW9u
YWw8ZG91YmxlPiYmIHBhZ2VMb2FkVGltZW91dCwgUmVmPFdhaXRGb3JOYXZpZ2F0aW9uVG9Db21w
bGV0ZUNhbGxiYWNrPiYmKTsKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRs
ZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgUmVmPEpTT046OkFycmF5PiYmIGFyZ3VtZW50cywgT3B0
aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxk
b3VibGU+JiYgY2FsbGJhY2tUaW1lb3V0LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25D
YWxsYmFjaz4mJik7CisgICAgdm9pZCBuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25z
dCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpQYWdlTG9hZFN0cmF0ZWd5PiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9h
ZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2
b2lkIGdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgcGFnZUxvYWRUaW1lb3V0LCBSZWY8R29CYWNrSW5Ccm93c2lu
Z0NvbnRleHRDYWxsYmFjaz4mJik7CisgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4
dChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k+JiYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIHBhZ2VM
b2FkVGltZW91dCwgUmVmPEdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwor
ICAgIHZvaWQgcmVsb2FkQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneT4mJiwg
c3RkOjpvcHRpb25hbDxkb3VibGU+JiYgcGFnZUxvYWRUaW1lb3V0LCBSZWY8UmVsb2FkQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2s+JiYpOworICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBs
ZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFu
ZGxlJiwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdl
TG9hZFN0cmF0ZWd5PiYmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBwYWdlTG9hZFRpbWVvdXQs
IFJlZjxXYWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVDYWxsYmFjaz4mJik7CisgICAgdm9pZCBl
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFJlZjxK
U09OOjpBcnJheT4mJiBhcmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjYWxsYmFja1Rp
bWVvdXQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKTsKICAgICB2
b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIFJlZjxKU09OOjpPYmplY3Q+JiYgcmVx
dWVzdGVkUG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBS
ZWY8SlNPTjo6QXJyYXk+JiYga2V5TW9kaWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b25DYWxsYmFjaz4mJik7CiAgICAgdm9pZCBwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxl
JiwgUmVmPEpTT046OkFycmF5PiYmIGludGVyYWN0aW9ucywgUmVmPFBlcmZvcm1LZXlib2FyZElu
dGVyYWN0aW9uc0NhbGxiYWNrPiYmKTsKICAgICB2b2lkIHBlcmZvcm1JbnRlcmFjdGlvblNlcXVl
bmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFu
ZGxlJiwgUmVmPEpTT046OkFycmF5PiYmIHNvdXJjZXMsIFJlZjxKU09OOjpBcnJheT4mJiBzdGVw
cywgUmVmPFBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQg
Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNl
Q2FsbGJhY2s+JiYpOwotICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiwgY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RnJhbWVIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiwgT3B0aW9uYWw8Ym9vbD4mJiBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCBPcHRpb25hbDxib29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBSZWY8
VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhh
bmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhh
bmRsZSYsIE9wdGlvbmFsPGludD4mJiBvcmRpbmFsLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBSZWY8UmVzb2x2
ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5k
bGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYs
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGNsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik7Cisg
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8aW50PiYmIG9y
ZGluYWwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6Tm9kZUhhbmRsZSYsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNr
PiYmKTsKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmLCBjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRsZSYsIFJlZjxSZXNvbHZlUGFy
ZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJik7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91
dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRI
YW5kbGUmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpGcmFtZUhhbmRs
ZSYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok5vZGVIYW5kbGUmLCBP
cHRpb25hbDxib29sPiYmIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0sIFJlZjxDb21wdXRlRWxlbWVudExheW91
dENhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpDb29yZGluYXRlU3lzdGVtLCBSZWY8Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFj
az4mJik7CiAgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYsIGNvbnN0IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiwgY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYsIFJlZjxTZWxlY3RPcHRpb25FbGVtZW50
Q2FsbGJhY2s+JiYpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8Ym9v
bD4gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmKTsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5k
bGUmKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRTZXNzaW9uUGVybWlzc2lvbnMoUmVmPEpTT046OkFy
cmF5PiYmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGluc3BlY3RCcm93c2luZ0Nv
bnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250
ZXh0SGFuZGxlJiwgT3B0aW9uYWw8Ym9vbD4mJiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBSZWY8SW5z
cGVjdEJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGluc3BlY3RCcm93c2lu
Z0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdD
b250ZXh0SGFuZGxlJiwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0dXJpbmcs
IFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpOwogI2VuZGlmCiAKICAgICAv
LyBFdmVudCBTaW11bGF0aW9uIFN1cHBvcnQuCkBAIC0yMjcsOCArMjI3LDggQEAgcHJpdmF0ZToK
ICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0
PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHdpbmRvd0ZyYW1lKTsKICAgICB2b2lkIGdldE5leHRDb250ZXh0KFJlZjxXZWJBdXRv
bWF0aW9uU2Vzc2lvbj4mJiwgVmVjdG9yPFJlZjxXZWJQYWdlUHJveHk+PiYmLCBSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ+
PiwgUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uOjpHZXRCcm93c2luZ0NvbnRleHRzQ2FsbGJhY2s+
JiYpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlE
Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYsIGJvb2wmIGZyYW1lTm90Rm91bmQpOwotICAgIFN0cmlu
ZyBoYW5kbGVGb3JXZWJGcmFtZUlEKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4p
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB3ZWJGcmFtZUlE
Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYsIGJvb2wmIGZyYW1lTm90Rm91bmQpOworICAgIFN0cmlu
ZyBoYW5kbGVGb3JXZWJGcmFtZUlEKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2ViRnJhbWVQ
cm94eSYpOwogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2Vi
UGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJh
dGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4mJik7CkBAIC0yNTgsNyArMjU4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQogICAgIC8vIFNpbXVsYXRlcyBhIHNpbmds
ZSB0b3VjaCBwb2ludCBiZWluZyBwcmVzc2VkLCBtb3ZlZCwgYW5kIHJlbGVhc2VkLgotICAgIHZv
aWQgcGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgVG91Y2hJ
bnRlcmFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwg
T3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYm
KTsKKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYsIFRvdWNoSW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbklu
Vmlld3BvcnQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRf
SU5URVJBQ1RJT05TKQogICAgIC8vIFNpbXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIg
a2V5IGJlaW5nIHByZXNzZWQvcmVsZWFzZWQsIHN1Y2ggYXMgJ2EnLCBDb250cm9sLCBGLWtleXMs
IE51bXBhZCBrZXlzLCBldGMuIGFzIGFsbG93ZWQgYnkgdGhlIHByb3RvY29sLgpAQCAtMjcxLDE5
ICsyNzEsMTkgQEAgcHJpdmF0ZToKICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lO
VEVSQUNUSU9OUykKIAogICAgIC8vIEdldCBiYXNlNjQtZW5jb2RlZCBQTkcgZGF0YSBmcm9tIGEg
Yml0bWFwLgotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtR2V0QmFzZTY0RW5j
b2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8U3RyaW5nPiBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZp
ZXdTbmFwc2hvdCYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1H
ZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVk
UE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmKTsKIAogICAgIC8vIFNhdmUgYmFzZTY0LWVuY29k
ZWQgZmlsZSBjb250ZW50cyB0byBhIGxvY2FsIGZpbGUgcGF0aCBhbmQgcmV0dXJuIHRoZSBwYXRo
LgogICAgIC8vIFRoaXMgcmV1c2VzIHRoZSBiYXNlbmFtZSBvZiB0aGUgcmVtb3RlIGZpbGUgcGF0
aCBzbyB0aGF0IHRoZSBmaWxlbmFtZSBleHBvc2VkIHRvIERPTSBBUEkgcmVtYWlucyB0aGUgc2Ft
ZS4KLSAgICBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9y
UmVtb3RlRmlsZShjb25zdCBTdHJpbmcmIHJlbW90ZUZpbGVQYXRoLCBjb25zdCBTdHJpbmcmIGJh
c2U2NEVuY29kZWRGaWxlQ29udGVudHMpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbGF0
Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5nJiByZW1v
dGVGaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFRoZSB0eXBlIHBhcmFtZXRlciBvZiB0aGUgTlNB
cnJheSBhcmd1bWVudCBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQuCiAgICAgdm9pZCBzZW5kU3ludGhl
c2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiwgTlNBcnJheSAqZXZlbnRzVG9TZW5kKTsK
IAotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KSBjb25zdDsKLSAgICBPcHRpb25hbDx1
bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVuaWNoYXI+IGNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWJQcm9j
ZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7IG51bGxwdHIgfTsKQEAgLTMwNywxMyArMzA3LDEzIEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdl
ck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNr
c1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGdW5jdGlvbjx2
b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5
Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShX
RUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+
PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxi
YWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNU
SU9OUykKLSAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQo
T3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nV2hlZWxFdmVudHNG
bHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+
PiBtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAK
ICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggOWY2YmQwMTkw
ODk5NzgxMzg4ODMzMjgzMWMxNzBlYTBkMzRlOWE3Yi4uYmMxNjE4M2I4NzA4YTIxOTkxNjExMDNl
N2Q5ZmNmNDQ2NTZkNjk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fp
cm8uY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBiYXNlNjRFbmNvZGVkUE5H
RGF0YShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKIHsKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC01Miw3ICs1
Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcocG5n
RGF0YSk7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxh
dGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgaGFuZGxlKQogewogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJp
dG1hcCkKQEAgLTYyLDcgKzYyLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGEKICAgICByZXR1
cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEoc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25z
dCBWaWV3U25hcHNob3QmIHNuYXBzaG90KQogewogI2lmIFBMQVRGT1JNKEdUSykKICAgICByZXR1
cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEoc25hcHNob3Quc3VyZmFjZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2Ev
V2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCA4YTE1ZmU2Y2Y1NDQ0MzFlOWM2NDVk
N2Q4YWNlMzAyY2RjMGQxN2E5Li45ZDE1NTkyMWJiMDg4MDFhZDJiYzY4ZmU5YjdkNDhjMmNlZDc3
ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29h
L1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3
ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFI
YW5kbGUpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGltYWdlRGF0YUhhbmRsZSkKIHsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCkBAIC01OSw3ICs1OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBTdHJpbmcoW2ltYWdlRGF0YSBiYXNlNjRFbmNv
ZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUo
Y29uc3QgU3RyaW5nJiByZW1vdGVGaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBiYXNlNjRFbmNvZGVk
RmlsZUNvbnRlbnRzKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbGUoY29uc3QgU3RyaW5n
JiByZW1vdGVGaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBiYXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRz
KQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGZpbGVDb250ZW50cyA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpiYXNlNjRFbmNvZGVkRmlsZUNv
bnRlbnRzIG9wdGlvbnM6MF0pOwogICAgIGlmICghZmlsZUNvbnRlbnRzKSB7CkBAIC04MSw3ICs4
MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2Vu
ZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsCiAgICAgcmV0dXJuIFN0cmluZyhsb2NhbEZp
bGVQYXRoKTsKIH0KIAotT3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNo
YXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNl
c3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5IGtleSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGtleSkgewogICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CkBA
IC0xOTcsNyArMTk3LDcgQEAgT3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246
OmNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY28KICAgICB9CiB9CiAKLU9w
dGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjaGFyQ29kZUlnbm9yaW5nTW9k
aWZpZXJzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5IGtleSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNl
c3Npb246OmNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KSBjb25zdAogewogICAgIHN3aXRj
aCAoa2V5KSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1Mu
bW0KaW5kZXggYjg1NDRmZmE0NWQ4MmIxMDI5MTkyOTNmYWNlYTY3MTYxZTE3ZmMzYy4uNmY1MjVk
YTBiYTI1NWMyYjE1MzM2MDMzOWZiNTAyYWRlNTJiM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlv
blNlc3Npb25JT1MubW0KQEAgLTc2LDggKzc2LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWcK
ICAgICAvLyBVSUtpdCBkb2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2
ZW4gZm9yIGEgaGFyZHdhcmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2lu
Z2xlIHVuaWNoYXJzIGFuZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rl
cy4KICAgICAvLyBTeW50aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3Jy
ZWN0IGtleSBjb2RlIGlzIGluZmVycmVkLgotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2Rl
OwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CisgICAg
c3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNo
YXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CiAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSBl
ZmZlY3RzIG9mIHN0aWNreSBtb2RpZmllcnMuCiAgICAgV1RGOjpzd2l0Y2hPbihrZXksCkBAIC0x
OTQsNyArMTk0LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24pCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNB
QkxFRAogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIE9wdGlvbmFs
PFNlY29uZHM+IGR1cmF0aW9uLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVU
b3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgVG91Y2hJbnRlcmFjdGlvbiBpbnRl
cmFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25P
blNjcmVlbiA9IHBhZ2Uuc3luY1Jvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChsb2NhdGlvbkluVmll
d3BvcnQsIEludFNpemUoKSkpLmxvY2F0aW9uKCk7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEF1dG9t
YXRpb25JbnRlcmFjdGlvbnMsIHN0cmVhbSA8PCAicGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJh
Y3Rpb246IGludGVyYWN0aW9uPSIgPDwgaW50ZXJhY3Rpb24gPDwgIiwgbG9jYXRpb25JblZpZXdw
b3J0PSIgPDwgbG9jYXRpb25JblZpZXdwb3J0IDw8ICIsIGxvY2F0aW9uT25TY3JlZW49IiA8PCBs
b2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1cmF0aW9uPSIgPDwgZHVyYXRpb24udmFsdWVfb3IoMF9z
KS5zZWNvbmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQppbmRleCA3OGFk
ZmM2MGQwMmMxNTg3ODFjMWJjYWMyNzg1MGNmOWQxMWNlMjY5Li41ZmNkODFkMTRmZjI2YzFmNGRh
Yzc2NTg3ZDhiYjc1YjQ0NzY1ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5t
bQpAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI3ByYWdtYSBt
YXJrIENvbW1hbmRzIGZvciAnUExBVEZPUk0oTUFDKScKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGhhbmRsZSwgT3B0aW9uYWw8Ym9vbD4m
JiBlbmFibGVBdXRvQ2FwdHVyaW5nLCBSZWY8SW5zcGVjdEJyb3dzaW5nQ29udGV4dENhbGxiYWNr
PiYmIGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5n
Q29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0Nv
bnRleHRIYW5kbGUmIGhhbmRsZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVuYWJsZUF1dG9DYXB0
dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7
CiAgICAgaWYgKCFwYWdlKQpAQCAtNjMzLDggKzYzMyw4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnCiAgICAgYm9vbCBpc1N0aWNreU1vZGlmaWVyID0gZmFsc2U7CiAgICAgTlNFdmVudE1vZGlm
aWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CiAgICAgaW50IGtleUNvZGUgPSAwOwotICAg
IE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOwotICAgIE9wdGlvbmFsPHVuaWNoYXI+IGNoYXJD
b2RlSWdub3JpbmdNb2RpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29k
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnM7
CiAKICAgICBXVEY6OnN3aXRjaE9uKGtleSwKICAgICAgICAgWyZdIChWaXJ0dWFsS2V5IHZpcnR1
YWxLZXkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDI3ZDZhNmNlNjA2NWY3ZjIyZTkxMDU5ZTM2ZGRkNDQwNTYxN2E1NWUu
LjExNDBkNmM4MWUzN2YyYzhjZmNmMzYxNzgxZjNiOTkyNzBlODhjYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTU4LDcg
KzE1OCw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29u
c3QKICNlbmRpZgogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2Uo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5KQorYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2Vu
ZE9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHVybiB0aGlzIGludG8gYSBSRUxFQVNF
X0FTU0VSVCgpLgogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCAxMjI0N2NlYTlhNTVh
ODdkOWU4ZjgzZTkzZmM5ODIwZDE5ODU1ZjhlLi45YWI2MjhhNmZkMWM5YzRjZTM0NGZkNThjNTFi
NzlhYzc3ZDBjZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzSUQg
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlciA/IG1f
cHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpIDogMDsgfQogCiAgICAgYm9vbCBj
YW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6OlRlcm1pbmF0
ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0g
c3RkOjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3Vs
ZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOworICAgIGJvb2wgc2VuZE1lc3Nh
Z2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4s
IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBzdGQ6Om51bGxvcHQsIFNob3Vs
ZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHk6Olllcyk7CiAKICAgICB2b2lkIHJlcGx5VG9QZW5kaW5nTWVzc2FnZXMoKTsK
IApAQCAtMTQzLDcgKzE0Myw3IEBAIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgUGVuZGluZ01lc3Nh
Z2UgewogICAgICAgICBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOwogICAgICAgICBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9uczsKLSAgICAgICAgT3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+IGFzeW5jUmVwbHlJbmZvOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiBhc3luY1JlcGx5
SW5mbzsKICAgICB9OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFNlbmRQZW5kaW5nTWVzc2Fn
ZShjb25zdCBQZW5kaW5nTWVzc2FnZSYpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmlu
ZGV4IGRlNDBmYzhmMzE3Njk3NWIxNTJjNGVmYWE0MDE1N2M5NGYyZmE5ZjIuLjljYWI5MjY4ZDAw
OTU5YzFiYmQ4NjUyYzk2OTk2ZTI0MTYyNjNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dP
blBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgbWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21h
dGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFVzZXJJ
bnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9u
JiwgV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVP
ZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2Vi
UGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxBUEk6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVudEphdmFTY3Jp
cHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmKSBvdmVy
cmlkZTsKICAgICBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQ
cmVzZW50YXRpb24gY3VycmVudFByZXNlbnRhdGlvbk9mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lv
biYsIFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1
dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRl
eCBkZjE2MTM4YzU0NjBjZTViMTVkYWVhOGU4YmE4MjA4YmE5MjJkYmE3Li4zNzE0NGExOWJjMGZk
NDQxMDhiYjlmOWM2OTEwZWFkNjkxYmZlOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZvckN1
cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYkF1CiAgICAgICAgIFttX2RlbGVnYXRlLmdl
dCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHNldFVzZXJJbnB1dDp2YWx1
ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2Ny
aXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9XS0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlwdERpYWxv
Z1R5cGUgdHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiB0b0ltcGwoX1dLQXV0b21hdGlvblNlc3Npb25K
YXZhU2NyaXB0RGlhbG9nVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgX1dLQXV0b21hdGlvblNlc3Npb25KYXZhU2NyaXB0RGlhbG9nVHlwZU5vbmU6CkBAIC0xNzEs
NyArMTcxLDcgQEAgc3RhdGljIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkJyb3dzaW5n
Q29udGV4dFByZXNlbnRhdGlvbiB0b0ltcGwoX1dLQXV0b20KICAgICB9CiB9CiAKLU9wdGlvbmFs
PEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiBBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2Uo
V2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3N0ZDo6
b3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5
cGU+IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojp0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxv
Z09uUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBwYWdl
KQogewogICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYm
IG1fZGVsZWdhdGVNZXRob2RzLnR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmll
dykKICAgICAgICAgcmV0dXJuIHRvSW1wbChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNl
c3Npb246d3JhcHBlcihzZXNzaW9uKSB0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0Zvcldl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaAppbmRleCBhMmQzNjZjYTM1OGY4ZmFhMjg5
MmU1NTUwNDRhY2UxNGUzMDYzZmM0Li42ZDk2NzEzMTA1ZjFhYTRlNWU0OTA0Y2FjYWM3NWQwZDkx
MDM5NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9y
bVhSQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklY
TUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KICAgICBzdGF0aWMgUGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQogCi0g
ICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChPcHRpb25hbDxYUkRl
dmljZUluZm8+KT47CisgICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJp
bWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKIAogICAgIC8vIFNlc3Np
b24gY3JlYXRpb24vdGVybWluYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tbQppbmRleCBmYzI4NmI5ODU2NmQ4YjA1NjZjNjlmNmY3
ZjZjYTI0ZTQ3YWQ0Mzk1Li5iN2YzZDdmNDk4YzZiYzMxZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0ubW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJ
bW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3IKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZv
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25h
bDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11dGFibGUgeworICAgIHhyQ29vcmRpbmF0b3It
PmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykgbXV0
YWJsZSB7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUoZGV2
aWNlSW5mbyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWRldmljZUluZm8pIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCmluZGV4IGU1ZjcxYzU2
NDBiMzliNGVlMzJlNTQwYjkwMGRiMTQ3NzM2YTk3ZGQuLmU0YTYyODVmYTA3MDBjNTE0MTg5NTI5
NTFjOWU5YjVkMzkyZWY3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KQEAgLTE3Niw3ICsxNzYsNyBAQCAtICh2b2lkKXBy
ZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9tYWluIGtleTooTlNTdHJpbmcgKilrZXkg
ZW5jb2RlZFZhbHVlOgogewogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG9tYWluID0gcmV0YWluUHRyKGRvbWFpbiksIGtleSA9
IHJldGFpblB0cihrZXkpLCBlbmNvZGVkVmFsdWUgPSByZXRhaW5QdHIoZW5jb2RlZFZhbHVlKV0g
ewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGVuY29kZWRTdHJpbmc7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkU3RyaW5nOwogICAgICAgICBpZiAoZW5jb2RlZFZhbHVl
KQogICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFN0cmluZyhlbmNvZGVkVmFsdWUuZ2V0KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBk
NTdjY2FhNzU5NmFkN2M2ZTU0YmRhYTZlYTQ5OWQ1MzQ0NzlmODZlLi5lY2Y3MjEzODU4YjhkN2Iz
ZWIyYTU0ZjNiM2E4YzEyZWVkNGJkZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogCi0gICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRDsKICAgICAgICAgaWYgKGF1
dG8qIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCkg
OiBudWxscHRyKQogICAgICAgICAgICAgbWFpbkZyYW1lSUQgPSBtYWluRnJhbWUtPmZyYW1lSUQo
KTsKICAgICAgICAgRnJhbWVJbmZvRGF0YSBmcmFtZUluZm8geyBmcmFtZS5pc01haW5GcmFtZSgp
LCB7IH0sIHVzZXJNZWRpYU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBmcmFtZS5mcmFtZUlEKCks
IG1haW5GcmFtZUlEIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNDYyZDVmMTlkNGMz
OTAwZDE1NzI3ZDQ3MGZmY2YxNDRhODU3NWE4Zi4uYjU3MDVkOGJiYjc5Yzc1Njk2YTM5OGViZjNm
ZDJjOTYyZjM3ZWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtODA4LDcgKzgwOCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgT3B0
aW9uYWw8RmxvYXRTaXplPiBvcHRpb25hbFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IG9wdGlvbmFsU2l6ZTsKICAgICBpZiAoIXNpemUuaXNFbXB0eSgpKQogICAgICAgICBvcHRp
b25hbFNpemUgPSBzaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS0NvbnRhY3RQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
Q29udGFjdFBpY2tlci5oCmluZGV4IDQ0ZmUzNWU4NTRjZDUzZDBjYTBhYzk1NTE3YmQzYjgzMTZm
NjlhMjMuLjdhMThhNjE4NGEwNGFhMzdiYjZkMzI4YTgxN2IwYTBhM2UwM2NiNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5oCkBAIC00MSw3
ICs0MSw3IEBAIHN0cnVjdCBDb250YWN0c1JlcXVlc3REYXRhOwogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhWaWV3OihXS1dlYlZpZXcgKil2aWV3OwogCi0tICh2b2lkKXByZXNlbnRXaXRoUmVx
dWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRh
IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7Cist
ICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVx
dWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYm
KT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlk
PFdLQ29udGFjdFBpY2tlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tCmluZGV4IDI3Y2ZlNTY0NWIzNmJm
MDlhMzVlMzZiZmI3NzY0YTk2ZDdjMTJhODAuLjAxOTYzMWY2OTkzMjMxMTcxNDQ4ZjFmZmVkZTBi
Njk0NDgzMWFiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
Q29udGFjdFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0Nv
bnRhY3RQaWNrZXIubW0KQEAgLTEyMyw3ICsxMjMsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250
YWN0UGlja2VyIHsKICAgICBXZWFrT2JqQ1B0cjxpZDxXS0NvbnRhY3RQaWNrZXJEZWxlZ2F0ZT4+
IF9kZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250YWN0UHJvcGVydHk+IF9wcm9w
ZXJ0aWVzOwotICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4gX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250
YWN0SW5mbz4+JiYpPiBfY29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8V0tDTkNv
bnRhY3RQaWNrZXJEZWxlZ2F0ZT4gX2NvbnRhY3RQaWNrZXJEZWxlZ2F0ZTsKICNpZiBIQVZFKENO
Q09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVSKQpAQCAtMTUxLDcgKzE1MSw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFZpZXc6KFdLV2ViVmlldyAqKXZpZXcKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAodm9pZClwcmVzZW50V2l0aFJlcXVlc3REYXRhOihjb25zdCBXZWJDb3JlOjpDb250
YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+
JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXByZXNlbnRXaXRoUmVxdWVzdERhdGE6
KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXBsZXRp
b25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IF9wcm9wZXJ0aWVzID0gcmVxdWVzdERhdGEucHJvcGVydGllczsKICAgICBfY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZTc4ZWViZTcwNTVk
YjA4MDdiN2Q3ZDI3NTRlNTdlMjU0ZmVkYzI5Mi4uN2Y1MzkwMzY1MDMwZmJmMmI0NWQyMTA2NmZl
OThjOGFhMzhhOWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdHcm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0lu
ZGV4KGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGln
aGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYg
aGlnaGxpZ2h0cywgY29uc3Qgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA1
ZmFjNjYyYzkyYmVhNjZiNWRkZWQ5YzdmZTU0Y2I0YjAwNTIyODJiLi42Y2QwYzAxMzZlMWY4ZDli
YjI0Njc5YWYyMjU1MWFhN2Q2NmU5MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTczMCw3ICs3MzAsNyBAQCBi
b29sIFdlYlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpIGNvbnN0CiB9CiAKICNpZiBIQVZFKENWRElTUExBWUxJTkspCi1PcHRpb25hbDx1bnNp
Z25lZD4gV2ViUHJvY2Vzc1Bvb2w6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IFdlYlByb2Nlc3NQb29sOjpub21pbmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAgICAgZm9yIChhdXRvJiBkaXNw
bGF5TGluayA6IG1fZGlzcGxheUxpbmtzKSB7CiAgICAgICAgIGlmIChkaXNwbGF5TGluay0+ZGlz
cGxheUlEKCkgPT0gZGlzcGxheUlEKQpAQCAtODg4LDcgKzg4OCw3IEBAIE5TU2V0ICpXZWJQcm9j
ZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcoKSBjb25zdAogfQogCiAj
aWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpCi12b2lkIFdlYlByb2Nlc3NQb29sOjpub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1
ZSkKIHsKICAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQo
ZG9tYWluLCBrZXksIGVuY29kZWRWYWx1ZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNzJmNTAxN2VkMDQ2ZDhlNGQxOWI2NzRlNTJiN2Ni
YmEyNzcxNDkwYy4uN2ViN2IyM2Y0NDQyNTU2ZGI4NWZkMDU3NzNlMjQ2ZGE4Yjk5YmE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMjYsOCAr
MzI2LDggQEAgcHVibGljOgogICAgIF9XS1JlY3RFZGdlIHJ1YmJlckJhbmRpbmdFbmFibGVkKCk7
CiAgICAgdm9pZCBzZXRSdWJiZXJCYW5kaW5nRW5hYmxlZChfV0tSZWN0RWRnZSk7CiAKLSAgICB2
b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OworICAgIHZv
aWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0
OwogCiAgICAgdm9pZCBiZWdpbkRlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXMoKTsKICAgICAv
LyBGSVhNRTogTWVyZ2UgdGhlc2UgdHdvPwpAQCAtODU3LDcgKzg1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZFVSTDsK
IAotICAgIE9wdGlvbmFsPE5TSW50ZWdlcj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdlcj4gbV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZzsKIAog
ICAgIENHRmxvYXQgbV90b3RhbEhlaWdodE9mQmFubmVycyB7IDAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAxNmZiZjhmOGNiNWU4ZjQ2
MzE3OWU3NDYyZDE5N2I4ZWM1YmMyZDFiLi5iZTY3YjBmNDRmY2EyOTcyYzZjNTA0Y2NjMjY2MGZm
ODA4MzRkNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJh
d3NCYWNrZ3JvdW5kKQogewotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5k
Q29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9y
OwogICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBX
ZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgbV9w
YWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKQEAgLTIwMDEsNyArMjAw
MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVZpZXdFeHBvc2VkUmVjdCgpCiAgICAgaWYg
KG1fdXNlQ29udGVudFByZXBhcmF0aW9uUmVjdEZvclZpc2libGVSZWN0KQogICAgICAgICBleHBv
c2VkUmVjdCA9IENHUmVjdFVuaW9uKG1fY29udGVudFByZXBhcmF0aW9uUmVjdCwgZXhwb3NlZFJl
Y3QpOwogCi0gICAgbV9wYWdlLT5zZXRWaWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJl
Y3QgPyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KGV4cG9zZWRSZWN0KSA6IHN0ZDo6bnVs
bG9wdCk7CisgICAgbV9wYWdlLT5zZXRWaWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJl
Y3QgPyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogc3Rk
OjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Q2xpcHNUb1Zpc2libGVSZWN0
KGJvb2wgY2xpcHNUb1Zpc2libGVSZWN0KQpAQCAtMjU1MSwxMiArMjU1MSwxMiBAQCBOU0NvbG9y
ICpXZWJWaWV3SW1wbDo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICBy
ZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihjb2xvcik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNl
dE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5
U3R5bGU+IHNjcm9sbGJhclN0eWxlKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNjcm9s
bGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBz
Y3JvbGxiYXJTdHlsZSkKIHsKICAgICBtX3BhZ2UtPnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShz
Y3JvbGxiYXJTdHlsZSk7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlT
dHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJs
YXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+b3ZlcmxheVNj
cm9sbGJhclN0eWxlKCk7CiB9CkBAIC00MTE0LDcgKzQxMTQsNyBAQCBOU0RyYWdPcGVyYXRpb24g
V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKIH0KIAotc3RhdGljIE5TRHJh
Z09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbikKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoIWRyYWdPcGVyYXRpb24p
CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBkZWM5ZjFjOGJhYWE4ZTI5ODcyNzJj
MmRmNWEyM2FjM2RlMjk3YzRmLi5lNDlhNGQ3ZWViODNhNmI3ZjI1NmRmZGM1YjJjYWU2YTViM2Q0
ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApA
QCAtODUsNyArODUsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIERyYXdpbmdBcmVhUHJveHk6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gcHJvY2VzcygpLmNvbm5lY3Rp
b24oKTsKIH0KIAotYm9vbCBEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRP
cHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRl
Y29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgRHJhd2luZ0FyZWFQ
cm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRp
b25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBh
c3luY1JlcGx5SW5mbykKIHsKICAgICByZXR1cm4gcHJvY2VzcygpLnNlbmRNZXNzYWdlKFdURk1v
dmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMDgyYjBjMDEx
ZDFlMzhhNzkxNTU0MGRlMTBjMTNjNzExOGNlOGE2Zi4uODI2YzQxN2M2YzliYTFjN2U2YzJjMzJh
NmFiMGYzYWI4ZDcyZjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAKICAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50
aWZpZXIudG9VSW50NjQoKTsgfQotICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFp
cjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBm
aW5hbDsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBw
dXJlIHZpcnR1YWwuCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJlYVByb3h5PiBtX3ZpZXdFeHBvc2Vk
UmVjdENoYW5nZWRUaW1lcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFz
dFNlbnRWaWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0
YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFj
a2VyLmgKaW5kZXggMGFjNDdiZDMxNGE5OGJiY2M1MGY2ZTJiY2RkOWI3ODgxYmRiOWZkMi4uNDFl
ZGQwZjkwNWZlZDQ0ZTQ1ZGRhODFmN2RlOWMzOWZlMzk1ZTUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLmgKQEAgLTczLDcgKzczLDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYWtIYXNoU2V0PENsaWVudD4gbV9jbGllbnRzOwogICAgIFJldGFp
blB0cjxSQlNQcm9jZXNzTW9uaXRvcj4gbV9wcm9jZXNzTW9uaXRvcjsKLSAgICBtdXRhYmxlIE9w
dGlvbmFsPFN0YXRlPiBtX3N0YXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTdGF0ZT4g
bV9zdGF0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNr
LmgKaW5kZXggZTI3M2FmYzZlZjY2YjViYzJiMDk1MzNhYjhkYTI0NDkwY2U1YjAzYy4uNDc5OGQ3
NzdiZTZjZmU3NTdmYmRkY2FkMDk5ZjkwZGU4Y2I0ZTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gJnRhZzsKICAgICB9CiAKLSAgICBPcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9u
PiBtX2NhbGxiYWNrOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FsbGJhY2tGdW5jdGlvbj4gbV9jYWxs
YmFjazsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJl
YWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggM2UyNjRmZDc2MTdmYTFjZTc4YjNmZTE3NWE0
MTU3MDJiMDcyM2Y3Zi4uMjM1MTJhZjBmMWQ1ZWFmMWZlYThlZmMzYjg1Yzk0MmM2YmY1MzZmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6Y3JlYXRlVGFiRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVT
Y3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4m
IGZyYW1lVVJMLCBjb25zdCBPcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdp
biwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29udGV4dFNlY3Vy
aXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2Ny
aXB0Rm9yRXh0ZW5zaW9uIHtleHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCBmcmFtZVVSTCwgY29u
dGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0Q29udGV4dH0sIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+JiBkZXRhaWxzLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpFdmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiB7ZXh0ZW5zaW9uSUQsIHNjcmlwdFNvdXJj
ZSwgZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlwdENvbnRl
eHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVsb2FkRm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBPcHRpb25h
bDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVu
c2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0
ZW5zaW9uSUQsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgewpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRlbnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2Vu
dCwgaW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJy
b3IpIG11dGFibGUgeworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
UmVsb2FkRm9yRXh0ZW5zaW9uIHtleHRlbnNpb25JRCwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwg
aW5qZWN0ZWRTY3JpcHR9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaAppbmRleCBhNWZiM2U1YjlmZjhmODk4OGJlNGEwYmYzYWI3NDBmNTBjYmFl
Yjk5Li5mMjk0NzgxNTQ2NWZhMDVlMzNmMDBlZDVmZTY0M2EyODk3MGRkYTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtNTgsOCArNTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAg
ICB2b2lkIGNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklE
JiwgY29uc3QgU3RyaW5nJiB0YWJOYW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVj
dG9yOjpFeHRlbnNpb25UYWJJRCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKLSAg
ICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYg
ZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29u
c3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7
Ci0gICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25J
RCYsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3Ry
aW5nPiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlv
blJlc3VsdCk+JiYpOworICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4m
IGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29u
dGVudFNjcmlwdENvbnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlbG9hZEZvckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxi
b29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4m
Jik7CiAKICAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMg
bWVzc2FnZXMuCiAgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQ
cm94eS5jcHAKaW5kZXggMmE0YmM4ZmYxMmVmYmVkOTgzMjZjMGM2MDZhNDQyZjE3OWE3ZjJhZC4u
NTcyZDIzNWM2ZDFmMTRkY2UyMTIyODkxOTM1M2I3MzQ0YTkwM2NlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5
LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6dGltZWxp
bmVSZWNvcmRpbmdDaGFuZ2VkKGJvb2wgYWN0aXZlKQogICAgIG1faXNQcm9maWxpbmdQYWdlID0g
YWN0aXZlOwogfQogCi12b2lkIFdlYkluc3BlY3RvclVJUHJveHk6OnNldERldmVsb3BlclByZWZl
cmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVu
Y2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwgT3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKK3Zv
aWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9wZXJQcmVm
ZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgc3dpdGNo
IChkZXZlbG9wZXJQcmVmZXJlbmNlKSB7CiAgICAgY2FzZSBJbnNwZWN0b3JDbGllbnQ6OkRldmVs
b3BlclByZWZlcmVuY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlQcm94eS5oCmluZGV4IDQxZDliYTRhNDhlMTNiZTk3MTgxM2ZjMTgyM2MyMmQzMWQ0YTI5
NDUuLjI5MjE0ZDU2ZGZiNmZjYjkwMGY5OWUyNmRkOTVlODcxZGY2ZmJkM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJv
eHkuaApAQCAtMjU3LDcgKzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93Q2VydGlmaWNh
dGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAgICAgdm9pZCBlbGVtZW50U2Vs
ZWN0aW9uQ2hhbmdlZChib29sKTsKICAgICB2b2lkIHRpbWVsaW5lUmVjb3JkaW5nQ2hhbmdlZChi
b29sKTsKLSAgICB2b2lkIHNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UsIE9wdGlvbmFsPGJvb2w+KTsKKyAg
ICB2b2lkIHNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAg
dm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKICAgICB2b2lkIGFwcGVuZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmNDg4NjQ2NmNhYzJkYTAyOTAxZjNiMTQ3MTE1
YjdjM2I0ZjVmNjdkLi4wNjE3MWIyN2NkNGEzN2ZkNjQxZjM3NWUwYzVhOTAzZmE5M2Y5NmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JVSVByb3h5IHsKICAgICBTaG93Q2VydGlmaWNhdGUoV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbykKICAgICBFbGVtZW50U2VsZWN0aW9u
Q2hhbmdlZChib29sIGFjdGl2ZSkKICAgICBUaW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBh
Y3RpdmUpCi0gICAgU2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudDo6RGV2ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRp
b25hbDxib29sPiBvdmVycmlkZVZhbHVlKQorICAgIFNldERldmVsb3BlclByZWZlcmVuY2VPdmVy
cmlkZShXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2UgZGV2ZWxv
cGVyUHJlZmVyZW5jZSwgc3RkOjpvcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKQogCiAgICAg
U2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpCiAgICAgQXBwZW5kKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNv
bnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaAppbmRleCA3OWVhYzFhYmY5ODA0
ODIxYTcwM2NjZmMyYmNhNzlhY2FjOGFjYWE3Li5iNDRkMjE0ZjE3NzUzMDc1ZDQwNDAwNTU5YTlj
YTZkYmY0ZGZhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTg5LDcg
Kzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKICAg
ICBSZW1vdGVJbnNwZWN0b3JPYnNlcnZlciYgbV9vYnNlcnZlcjsKLSAgICBPcHRpb25hbDxDb25u
ZWN0aW9uSUQ+IG1fY29ubmVjdGlvbklEOworICAgIHN0ZDo6b3B0aW9uYWw8Q29ubmVjdGlvbklE
PiBtX2Nvbm5lY3Rpb25JRDsKICAgICBIYXNoTWFwPENvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdl
dD4+IG1fdGFyZ2V0czsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdl
dElEPiwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclByb3h5Pj4gbV9pbnNwZWN0b3JQ
cm94eU1hcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKaW5kZXggNDE4ODc4NjUzOTM2ZDQyYWZmMWQ0ZDllMDEyMzcxZDE0MGMwMzlhNi4u
YTBhYzkyYWI5OTliYzYxM2U0MjA1ODg2MzYxMDk2NGNhZDEzNmNjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBwcml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9sb2FkZWRDYWxsYmFjazsKIH07CiAK
LXN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBwYXJzZURlYnVnZ2Fi
bGVUeXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGRlYnVnZ2FibGVUeXBlU3RyaW5nKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZT4gcGFyc2VEZWJ1Z2dh
YmxlVHlwZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkZWJ1Z2dhYmxlVHlwZVN0cmluZykKIHsK
ICAgICBpZiAoZGVidWdnYWJsZVR5cGVTdHJpbmcgPT0gIml0bWwiX3MpCiAgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlOjpJVE1MOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5j
cHAKaW5kZXggNDJmNGQ4MzQ0MTFjOWI0MWZkMjQ5MTFhYzY4NGQzOTUxNTljYzhhZi4uYjBkMDc5
ZmRkNjJmYTRmYTJkOWVjOGVkOWFlNjRjNWNiYWE5NWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdM
aWIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2lmIE9TKExJTlVY
KQogc3RhdGljIGJvb2wgaXNGbGF0cGFrU3Bhd25Vc2FibGUoKQogewotICAgIHN0YXRpYyBPcHRp
b25hbDxib29sPiByZXQ7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAg
IGlmIChyZXQpCiAgICAgICAgIHJldHVybiAqcmV0OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBib29sIGlzRmxhdHBha1NwYXduVXNhYmxlKCkKICNpZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5E
Qk9YKQogc3RhdGljIGJvb2wgaXNJbnNpZGVEb2NrZXIoKQogewotICAgIHN0YXRpYyBPcHRpb25h
bDxib29sPiByZXQ7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlm
IChyZXQpCiAgICAgICAgIHJldHVybiAqcmV0OwogCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBi
b29sIGlzSW5zaWRlRG9ja2VyKCkKIAogc3RhdGljIGJvb2wgaXNJbnNpZGVGbGF0cGFrKCkKIHsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gcmV0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHJldDsKICAgICBpZiAocmV0KQogICAgICAgICByZXR1cm4gKnJldDsKIApAQCAtODcs
NyArODcsNyBAQCBzdGF0aWMgYm9vbCBpc0luc2lkZUZsYXRwYWsoKQogCiBzdGF0aWMgYm9vbCBp
c0luc2lkZVNuYXAoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmV0OwogICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVy
biAqcmV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmdOb25lLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNl
c3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCmluZGV4IDFkNTJkNDMwMDhhYTMyMmU3NWJjNDQ5ZjAz
N2RiYTUxYjJmNmM2ZjguLmVkMTQ0NDljYmYzZTQ3YzU5MDJmOWM5ZTRlYzVkYTlhZmJkMjgwMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZ05vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZ05vbmUuY3BwCkBAIC01MiwxOSArNTIsMTkgQEAgYm9vbCBkZWNvZGVMZWdhY3lT
ZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9u
U3RhdGUKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE9w
dGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsK
ICAgICAqZGVjb2RlciA+PiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICBpZiAoIWJhY2tGb3J3
YXJkTGlzdFN0YXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2Vzc2lvblN0YXRlLmJh
Y2tGb3J3YXJkTGlzdFN0YXRlID0gV1RGTW92ZSgqYmFja0ZvcndhcmRMaXN0U3RhdGUpOwogCi0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlbmRlclRyZWVTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHJlbmRlclRyZWVTaXplOwogICAgICpkZWNvZGVyID4+IHJlbmRlclRyZWVTaXpl
OwogICAgIGlmICghcmVuZGVyVHJlZVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBz
ZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNpemUgPSAqcmVuZGVyVHJlZVNpemU7CiAKLSAgICBPcHRp
b25hbDxVUkw+IHByb3Zpc2lvbmFsVVJMOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBwcm92aXNp
b25hbFVSTDsKICAgICAqZGVjb2RlciA+PiBwcm92aXNpb25hbFVSTDsKICAgICBpZiAoIXByb3Zp
c2lvbmFsVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eVByaXZhdGUuaAppbmRleCBlMDJhNGY1ODlmNGM2NWRiYTEyNmIxNDgwYjAyNTE1ZmNhMjA2
NmQzLi5lY2EyMGYyNjJiMmIyYzZlNDdmZjY4ZjkxMGE1YzQ3YTE4ZjIwZDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEV4
Y2VwdGlvbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi11c2luZyBNZWRpYVNlc3Npb25D
b21tYW5kQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPjsKK3VzaW5nIE1lZGlhU2Vzc2lvbkNvbW1hbmRD
b21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHlQcml2YXRlCiAgICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eVByaXZhdGU+CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcGF1c2UoTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgTWVkaWFTZXNz
aW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBw
b3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9u
U3RhdGU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5
U3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFj
a0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjJhMmNlYzc2ZDRkYzBmZWYwMDQ1ZTA4Yjk4ODRm
ZGVmN2EzNmIyZS4uMDkxY2I4ZmQ2MWI2OTQzODczMzMwMTcwZDcxZjc0MDhiODdlMWY5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEv
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpqb2luKE1lZGlhU2Vzc2lv
bkNvbW1hbmRDb21wbGV0aW9uSGFuZGwKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElG
SUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29yZGlu
YXRvci0+am9pbihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlm
aWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0
aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0
ZUNvb3JkaW5hdG9yLT5qb2luKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5h
dGVTZWVrVG8oZG91YmxlIHRpbWUsIE1lZGlhU2VzcwogICAgIGF1dG8gaWRlbnRpZmllciA9IExP
R0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCB0aW1lKTsKIAotICAgIG1f
cHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVrVG8odGltZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bkRhdGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlm
aWVyLCAiY29tcGxldGlvbiIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4
Y2VwdGlvbikpOwogICAgIH0pOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBsYXkoTWVkaWFTZXNzaW9uQ29tbWFu
ZENvbXBsCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNf
TE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnBsYXkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE9wdGlvbmFsPEV4Y2VwdGlvbkRh
dGE+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxh
eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25h
bDxFeGNlcHRpb25EYXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIEFMV0FZU19M
T0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZShNZWRpYVNl
c3Npb25Db21tYW5kQ29tcAogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAg
ICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5w
YXVzZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8
RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5wYXVzZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVu
dGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
c3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAg
ICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKQEAgLTEyNCwxMyArMTI0
LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0
ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9H
SURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPnNldFRyYWNrKHRyYWNrLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJiBleGNlcHRpb24pIG11dGFi
bGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
RGF0YT4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZp
ZXIsICJjb21wbGV0aW9uIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhj
ZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cG9zaXRpb25TdGF0ZUNoYW5nZWQo
c3RhdGUpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6c2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpCiAgICAg
bV93ZWJQYWdlUHJveHkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6U2Vla1Nlc3Npb25Ub1RpbWUgeyB0aW1lIH0sIGNhbGxiYWNrKTsK
IH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpwbGF5U2Vzc2lv
bihPcHRpb25hbDxkb3VibGU+IGF0VGltZSwgT3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+
IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBsYXlT
ZXNzaW9uIHsgV1RGTW92ZShhdFRpbWUpLCBXVEZNb3ZlKGhvc3RUaW1lKSB9LCBjYWxsYmFjayk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmgKaW5kZXggMTA1NGJhODZhNzBm
NjljNWI0MDNiZTdmNjEzMDJiZjFhYjFjOWZhNy4uODQ4OGY4OGI5YTllMjBjYzZlZjRiZDgwMDYw
ODUwODllYjUxNzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEv
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaApAQCAt
NzAsMTQgKzcwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb29yZGluYXRlUGxheShNZWRpYVNl
c3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBjb29yZGluYXRlUGF1
c2UoTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgY29v
cmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYsIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0
aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKTsKKyAgICB2b2lkIHBvc2l0aW9uU3Rh
dGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRl
PiYpOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVh
ZHlTdGF0ZSk7CiAgICAgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNl
c3Npb25QbGF5YmFja1N0YXRlKTsKICAgICB2b2lkIHRyYWNrSWRlbnRpZmllckNoYW5nZWQoY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAg
IHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBsYXlTZXNzaW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRU
aW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBsYXlTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBhdFRpbWUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBob3N0VGltZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2so
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29y
ZGluYXRvclN0YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQ1Njk4MTVmYWJmNWU1Y2MwZmI0OTNjZTliOTdmZmE1
MDY3MjA3YjguLjQ1OTUzYmU4ZDJhNzk5MjFmN2VhMWIyNTczNTQzMjg4ZDdhODI5Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjYsMTkgKzI2LDE5IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHkgTm90UmVmQ291bnRlZCB7CiAKLSAgICBKb2luKCkgLT4gKE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGE+IGVycm9yKSBBc3luYworICAgIEpvaW4oKSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKIAogICAgIExlYXZlKCkK
IAotICAgIENvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRpbWUpIC0+IChPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMKKyAgICBDb29yZGluYXRlU2Vla1RvKGRvdWJs
ZSB0aW1lKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikg
QXN5bmMKIAotICAgIENvb3JkaW5hdGVQbGF5KCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+IGVycm9yKSBBc3luYworICAgIENvb3JkaW5hdGVQbGF5KCkgLT4gKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5jCiAKLSAgICBDb29yZGlu
YXRlUGF1c2UoKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gZXJyb3IpIEFz
eW5jCisgICAgQ29vcmRpbmF0ZVBhdXNlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4gZXJyb3IpIEFzeW5jCiAKLSAgICBDb29yZGluYXRlU2V0VHJhY2soU3RyaW5n
IHRyYWNrSWRlbnRpZmllcikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IGVy
cm9yKSBBc3luYworICAgIENvb3JkaW5hdGVTZXRUcmFjayhTdHJpbmcgdHJhY2tJZGVudGlmaWVy
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBlcnJvcikgQXN5bmMK
IAotICAgIFBvc2l0aW9uU3RhdGVDaGFuZ2VkKE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRp
b25TdGF0ZT4gc3RhdGUpOworICAgIFBvc2l0aW9uU3RhdGVDaGFuZ2VkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiBzdGF0ZSk7CiAKICAgICBSZWFkeVN0YXRlQ2hh
bmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29hL01lZGlh
VXNhZ2VNYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL2NvY29h
L01lZGlhVXNhZ2VNYW5hZ2VyQ29jb2EuaAppbmRleCAyNzk1YTBlNGE3MGJmODVlNWExNGU5NDA0
Y2MyNzFkNjlmZjhmYTQ5Li5kODljMTZjZTY2NjE0MGEzOGYwYzhjYTE5NTcwN2VkZDE1YTRiNjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9jb2NvYS9NZWRpYVVz
YWdlTWFuYWdlckNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvY29j
b2EvTWVkaWFVc2FnZU1hbmFnZXJDb2NvYS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICAg
ICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXI7CiAgICAgICAgIFVSTCBwYWdlVVJMOwotICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVVzYWdlSW5mbz4gbWVkaWFVc2FnZUluZm87CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFVc2FnZUluZm8+IG1lZGlhVXNhZ2VJbmZv
OwogICAgICAgICBSZXRhaW5QdHI8VVNWaWRlb1VzYWdlPiB1c2FnZVRyYWNrZXI7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggOTg2MmVmMjU5NTlkYTFjMjZmNWE0MmNjOTNmODg0Njk2ODRk
NmFiYy4uOGU2NjA2N2I3ZjU1YzQyNTYwYzQyOTk0MjY1MGRjY2I3ODY4ZGFlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICBz
dG9yZS0+Y2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdURk1vdmUo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgT3B0aW9uYWw8U2VjdXJp
dHlPcmlnaW5EYXRhPiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmIGNvcmVDaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgdWludDY0X3QgY2hh
bGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHRv
cE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdl
LCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lm
IEhBVkUoU0VDX0tFWV9QUk9YWSkKICAgICBXZWFrUHRyPFNlY0tleVByb3h5U3RvcmU+IHNlY0tl
eVByb3h5U3RvcmU7CkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHAK
ICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShtZXNzYWdlLCBkZXNjcmlw
dGlvbiwgdmFsdWUsIHNpZ25pZmljYW50RmlndXJlcywgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlPiYmIGh0dHBCb2R5KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxv
YWREaWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VM
b2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBz
dGQ6Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+JiYgaHR0cEJvZHkpCiB7CiAgICAg
YXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICgh
cGFnZSkKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGUoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9k
aWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNp
bmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTczOSw3
ICs3MzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0xvY2FsU3RvcmFnZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdAogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0xvY2FsU3RvcmFnZShzZXNzaW9uSUQsIHJl
c291cmNlRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0kKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50
NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVv
dGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKICAg
ICBhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCk7
CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2Fs
U3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgaWYgKCF1cmwu
aXNWYWxpZCgpIHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IDA1ZGM4ZjIxZDAzZjY0MzFiMGJlMmEwMDI2YWI4ZDI1YjQ0MGFj
YjkuLjZiY2ZlMWVlM2ZjYzNlZTYxY2RhYWI2NjI0ZTIzYjdjMjgxYTA3Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VE
ZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAotICAgIHZv
aWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCBwcmVjb25uZWN0
VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJh
c2VDb2x1bW5zRm9yVGFibGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0
aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2Vk
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBT
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lv
bklELCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNDIsNyArMjQyLDcgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkU2VuZFJl
cXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgT3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4mJik7
CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBzdGQ6
Om9wdGlvbmFsPElQQzo6Rm9ybURhdGFSZWZlcmVuY2U+JiYpOwogICAgIHZvaWQgcmVzb3VyY2VM
b2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNv
dXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5n
ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9j
ZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0
X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBib29sLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBu
ZWdvdGlhdGVkTGVnYWN5VExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlk
TmVnb3RpYXRlTW9kZXJuVExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgc2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIGJvb2wpOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRlcm1p
bmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNw
YWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1
b3RhKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKIAogICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAt
MzQ4LDcgKzM0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNz
QXNzZXJ0aW9uPiBuZXR3b3JrQXNzZXJ0aW9uOwogICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4+IHdlYlBy
b2Nlc3NBc3NlcnRpb25zOwogICAgIH07Ci0gICAgT3B0aW9uYWw8VXBsb2FkQWN0aXZpdHk+IG1f
dXBsb2FkQWN0aXZpdHk7CisgICAgc3RkOjpvcHRpb25hbDxVcGxvYWRBY3Rpdml0eT4gbV91cGxv
YWRBY3Rpdml0eTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNsYXNzIFhQQ0V2ZW50SGFu
ZGxlciA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0V2ZW50SGFuZGxlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggOTA0MWMxMWFmNWIzMWMzMDNjYWExODEyZjIwYWUxNjE3YjczNTRl
Zi4uM2RlOTM1NmQ5MThiMzRjZjIwYzdkNWQxOWFmN2ExYjBhZGE0N2U2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50
ZWQgewotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luLCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywg
dWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRv
cE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogICAgIE5lZ290aWF0
ZWRMZWdhY3lUTFMoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBE
aWROZWdvdGlhdGVNb2Rlcm5UTFMoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgVVJMIHVybCkKIApAQCAtNjcsOSArNjcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIEdldEFwcEJvdW5kRG9t
YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAotICAgIFJlcXVl
c3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXpl
LCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3Rh
KSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCi0gICAgUmVzb3VyY2VMb2FkRGlk
U2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBPcHRpb25hbDxJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlPiBodHRwQm9keSkKKyAgICBSZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291
cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpGb3JtRGF0YVJlZmVyZW5jZT4gaHR0cEJvZHkpCiAg
ICAgUmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9h
ZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNvdXJj
ZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBSZXNvdXJj
ZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJbmZvLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiAgICAg
UmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNv
dXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0KaW5kZXggMWE2NDY2MDViYjU5
N2M4ODU5NmE3MmZiOGI2Mjk5ZmU0NWEyZTRhMy4uNmM0NjUwM2Y5ODdiMGYxMjY1ZTkzOGIxZTBi
NWY4MjQ1NWEzMzZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dL
UERGSFVEVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURW
aWV3Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZl
bnQKICAgICBfYWN0aXZlQ29udHJvbCA9IG5pbDsKIH0KIAotLSAoT3B0aW9uYWw8TlNVSW50ZWdl
cj4pX2NvbnRyb2xJbmRleEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9u
YWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJbmRleEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKIHsK
ICAgICBDR1BvaW50IGluaXRpYWxQb2ludCA9IE5TUG9pbnRUb0NHUG9pbnQoZXZlbnQubG9jYXRp
b25JbldpbmRvdyk7CiAgICAgaW5pdGlhbFBvaW50LnggLT0gW19sYXllciBmcmFtZV0ub3JpZ2lu
Lng7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMzFiODA4MDA5YjA3Nzdh
MWJhMDZkNTI4NmVhZDdmMmYwMDI3M2QxMi4uZTcyMmI0MDNhNzdkM2ZhZmQ4MzZjMjhkZGZjZTZh
ZThiMzRiNWQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjY4LDcg
KzI2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvd1NoYXJlU2hlZXQoY29uc3Qg
V2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dD
b250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3Jl
OjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7
CiAKQEAgLTMxNSw3ICszMTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCBSZWZQdHI8Vmlld1NuYXBzaG90PiB0
YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRSZWN0PiYmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCkBA
IC00NTAsOCArNDUwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXllclRyZWVDb21t
aXRDb21wbGV0ZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb3VsZE5vdFJlc3RvcmVQYWdl
U3RhdGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3RvcmVQYWdlU3RhdGUoT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1
cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
dG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBjZW50
ZXIsIGRvdWJsZSBzY2FsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlUGFnZVN0YXRl
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRC
b3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91YmxlIHNjYWxlKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mLCBi
b29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlucHV0Q29udGV4
dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudCgpID0gMDsKQEAgLTU4Nyw3ICs1ODcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Qo
Ym9vbCBzdGFydGVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxE
cmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRkZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJl
Y2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3Qoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0Nh
cmV0UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2FyZXRSZWN0KSA9IDA7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCmluZGV4IDc5ZjMxYzYwNDE0ZmZiNDY1MDFjZDI1YTY0YTZiZTc2NjM1ZTQ2ZTcuLjBi
ZjBiZjRkNDE3OTg0Mjg5N2IzZjU4NzgyZDJlOTUwODI4NDNjODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTIyMiw3
ICsyMjIsNyBAQCBib29sIFBsdWdpbkluZm9TdG9yZTo6aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBwbHVnaQogICAgIH0pICE9IG5vdEZvdW5kOwog
fQogCi1PcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbklu
Zm9TdG9yZTo6c3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcnMoKQogewogICAgIGlmICghbV9zdXBwb3J0ZWRQbHVnaW5zKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggNzVhZTZiYjYyZDg0Y2E0MTlkMjhmZmRm
NjgwMDJmMGZmMmVkZDRmOC4uMzA5YjgwNTZiNTIwZmRiYWZhMmUzMjM1NTBlOGJiMzZjNWNlZDhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luTW9kdWxl
TG9hZFBvbGljeSBkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJik7CiAKICAgICBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBVUkwmIHBhZ2VVUkwpOwotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0
ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4g
c3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdp
bihTdHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxT
dHJpbmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9p
ZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVs
bG9wdDsgfQogCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMKTsKIAotICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdXBwb3J0ZWRQbHVnaW4+PiBtX3N1cHBvcnRlZFBsdWdpbnM7CisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luPj4gbV9zdXBwb3J0ZWRQbHVnaW5zOwogfTsKICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5oCmluZGV4IGE4YzAyODc1ZTNjYWU5NDMzODA1ZGY4OTRjNmU2MTk2M2JhZjll
MDMuLmJkNjg1ZTdjY2IxN2NmMmQ4M2I1MmQ0NmQ3MjBmYTZjNTllZmI0MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBw
cml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVyPFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRv
U3VzcGVuZFRpbWVvdXRUaW1lcjsKICAgICBIYXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1f
Zm9yZWdyb3VuZEFjdGl2aXRpZXM7CiAgICAgSGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBt
X2JhY2tncm91bmRBY3Rpdml0aWVzOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3BlbmRpbmdS
ZXF1ZXN0VG9TdXNwZW5kSUQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5n
UmVxdWVzdFRvU3VzcGVuZElEOwogICAgIGJvb2wgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNz
ZXJ0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IGFjZmY5MGM4OGZkYWU3NmIyOWM0N2VlODIyNjQzNWNjYzBjZDZk
NDUuLjBmZTYyZGM5Yzk2OWVjZTg1OGExMGZjOGEwMDA4MTdiZWI0YzZkYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE2Miwx
NCArMTYyLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdl
KFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzCiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZyZWV6ZUxheWVyVHJlZUR1ZVRvU3dpcGVBbmltYXRpb24oKSk7CiB9CiAK
LXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERh
dGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6
Iik7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29k
aW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkUmVxdWVzdDoiKTsKIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBX
ZWJCCiAgICAgICAgIHJldHVybiAmaXRlbSAhPSB0YXJnZXRJdGVtOwogICAgIH0pOwogICAgIAot
ICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGE7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRh
OwogICAgIGlmICh3ZWJzaXRlUG9saWNpZXMpCiAgICAgICAgIHdlYnNpdGVQb2xpY2llc0RhdGEg
PSB3ZWJzaXRlUG9saWNpZXMtPmRhdGEoKTsKICAgICAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgV2ViQgogICAgIG1fcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1Rp
bWVyKCk7CiB9CiAKLWlubGluZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlu
cHV0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDx1aW50NjRfdD4mIG5h
dmlnYXRpb25JRCkKK2lubGluZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlu
cHV0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiYgbmF2aWdhdGlvbklEKQogewogICAgIC8vIElmIHRoZSBwcmV2aW91cyBwcm92aXNpb25hbCBs
b2FkIHVzZWQgYW4gZXhpc3RpbmcgcHJvY2Vzcywgd2UgbWF5IHJlY2VpdmUgbGVmdG92ZXIgSVBD
IGZvciBhIHByZXZpb3VzIG5hdmlnYXRpb24sIHdoaWNoIHdlIG5lZWQgdG8gaWdub3JlLgogICAg
IGlmICghbV9tYWluRnJhbWUgfHwgbV9tYWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFtZUlEKQpA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJCiAgICAgbV9wYWdlLmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBm
cmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25J
RCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7
IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2
ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3Zv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRU
eXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0lu
c2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZy
YW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMyw3ICszMTMsNyBA
QCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdp
bmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8s
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAg
ICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM1OCw3ICsz
NTgsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0Rh
dGEsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTU5MCw3ICs1OTAs
NyBAQCB1aW50NjRfdCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1i
b29sIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBP
cHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4s
IHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNS
ZXBseUluZm8pCiB7CiAgICAgLy8gU2VuZCBtZXNzYWdlcyB2aWEgdGhlIFdlYlByb2Nlc3NQcm94
eSBpbnN0ZWFkIG9mIHRoZSBJUEM6OkNvbm5lY3Rpb24gc2luY2UgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5IGltcGxlbWVudHMgcXVldWVpbmcgb2YgbWVzc2FnZXMKICAgICAvLyB3aGlsZSB0aGUgcHJv
Y2VzcyBpcyBzdGlsbCBsYXVuY2hpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA1YzNiNmZiMGQxNjEzMWNiOTcyMDcwYjMxMGQxMDI1
ZGY3ZjA1NzAxLi44MzFjNzljMTgyYjcxZmE2OWRlNWNhMTIxNWExZDRiYmQ2NTAzMWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk4
LDggKzk4LDggQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEo
QVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2Vs
KCk7CiAKQEAgLTExNSwxMCArMTE1LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWw7Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAg
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sCi0gICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVp
bnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xMjksNyArMTI5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYm
IHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVz
ZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29y
ZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6
Ok1vdXNlRXZlbnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRM
b2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIFdlYkNv
cmU6OkZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wg
dXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBX
ZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5
RnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMm
Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwg
RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5
ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CkBAIC0xNTMsNyArMTUz
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZShSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwotICAgIGJvb2wgdmFsaWRhdGVJbnB1dChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlv
bklEID0gc3RkOjpudWxsb3B0KTsKKyAgICBib29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklE
ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDlkZjkxNGQ1ZGFjNTk1NGJmM2MyYmM1
ZTBiZWNmYTYxOTUzMzMxODguLjhkMzM3Y2UxNzM3ZDZhNzk0N2IyYzI4MzJiODE5YjY3MTUzNjEz
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5j
cHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OgogfQogCiAvLyBU
aGlzIGNvbWVzIGZyb20gdGhlIHNjcm9sbGluZyB0cmVlLgotdm9pZCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2Rl
SUQgc2Nyb2xsZWROb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBj
b25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3Jv
bGwoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGVkTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBuZXdT
Y3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmll
d3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbikKIHsKICAgICAvLyBTY3JvbGwgdXBkYXRlcyBmb3IgdGhlIG1haW4gZnJh
bWUgYXJlIHNlbnQgdmlhIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygp
CiAgICAgLy8gc28gZG9uJ3Qgc2VuZCB0aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCAwZTU2ZTQ5YWE3MmQzYzhlYzU2NTQyYzQ1
MjAzNjQzMTFjNTBiMTgyLi4wMzE2NzVkZDk2NjliYmQyNDZkNThmMDk2OGQzMWM4ODkxOTBiMTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkoKTsKIAogICAgIC8vIEluZm9ybSB0aGUgd2ViIHByb2Nlc3MgdGhhdCB0aGUg
c2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQgKGNhbGxlZCBmcm9tIHRoZSBzY3JvbGxpbmcgdHJlZSkK
LSAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05v
ZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2Vi
Q29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3Rz
U2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24sIFdlYkNvcmU6OlNjcm9sbFR5cGUsIFdlYkNvcmU6OlNjcm9sbENs
YW1waW5nKTsKIAogICAgIFdlYkNvcmU6OlRyYWNraW5nVHlwZSBldmVudFRyYWNraW5nVHlwZUZv
clBvaW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgV2ViQ29yZTo6SW50UG9pbnQpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDU0ZDQwZjhmZTIxN2VmY2Fm
OTU1Njg0YWQ5ODBkMTBjMzRhMTljN2EuLjU0MjNkYzZlNmNkMDczYjkwNTM2YTUwM2VlMGU2MmFk
ZDlkMmQ3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9s
bChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OnNj
cm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBub2Rl
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pCiB7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBp
ZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAgIGxh
eW91dFZpZXdwb3J0T3JpZ2luID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZT4obm9kZSkubGF5b3V0Vmlld3BvcnQoKS5sb2NhdGlvbigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1h
Yy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxl
clBhaXJNYWMuaAppbmRleCBiMzEwYjEwOGQyMDcyZDBhNmUyNGM5NTc5ZTM1YjNkMzUyOTJhYmRh
Li4zMTY4OTFkOTM4MzU2Zjg3M2M2MmJlMjZkMjcwNTdkNTk0ZDJmOWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Ny
b2xsZXJQYWlyTWFjLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBt
X2xhc3RLbm93bk1vdXNlUG9zaXRpb247Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gbV9sYXN0U2Nyb2xsUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFBvaW50PiBtX2xhc3RTY3JvbGxQb3NpdGlvbjsKIAogICAgIFJldGFpblB0cjxOU1Njcm9sbGVy
SW1wUGFpcj4gbV9zY3JvbGxlckltcFBhaXI7CiAgICAgUmV0YWluUHRyPFdLU2Nyb2xsZXJJbXBQ
YWlyRGVsZWdhdGU+IG1fc2Nyb2xsZXJJbXBQYWlyRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuY3BwCmluZGV4IDkyZGM0ODhkNDhkZTIyZmQ5NThkOWFhOThjN2JhOTFkMDJiMjU5YjMu
LjJlMGI1OGU1YjkzNTNkZWE1NTAzNjBkZDZiMzRjMTQ4NDVlMjJhOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKICAgICBjb21w
bGV0ZUN1cnJlbnRSZXF1ZXN0KCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdChPcHRpb25hbDxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yPiYmIGVycm9yKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIW1fcmVx
dWVzdHMuaXNFbXB0eSgpKTsKICAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50
YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAppbmRleCA0MGE5ZjI5MDdlNTE4YmMx
NzhmMjg2OTRhYThkZjlkNWZlZTRjNTQxLi4xMDRhYjQ1ZWMxNTFmNzNiMGZkNTQ4NmJjMzY5NjM4
ZDM2YzA3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC00OCw3ICs0OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0KCk7CiAgICAgdm9pZCBzdGFydFByb2Nl
c3NpbmdSZXF1ZXN0KCk7CiAgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Ci0g
ICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+
JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsK
ICAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKICAgICB2
b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QmIHJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IDkyNjVkZmFjN2QwZGNi
MDNkZGNhY2YzNjRlNGU2Nzg5MTIyOTg5NjUuLjI4YWViNTg3YWMxMzlkOTI1ODQzYmU3NmYyNDE2
MTU3NmJlYWRjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJik+OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPjsKIAogY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6
Ok5vdEFsbG93ZWQsICJSZXF1ZXN0IGlzIGNhbmNlbGxlZCJfcyB9KTsKICAgICB9CiAKLSAgICB2
b2lkIGNvbXBsZXRlKE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYg
ZXJyb3IpCisgICAgdm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3I+JiYgZXJyb3IpCiAgICAgewogICAgICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggNWQ5NjJkNzNk
ZTRlZDAzMzZhY2E1MzU2NzMxYzQ1Njg5ZWJiOWVmYS4uOTY3ZmM2NWM5ZTAyMzExMTI4YzUxYjFi
NTM2NmVmN2E5YjJiMDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpCiAgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgdHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiBlcnJvciwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQogewogICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCB0eXBlKTsK
ICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVy
cm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmgKaW5kZXggNTA2MTE5YWViZjgyYjNkZGM5ZTQzMTZlZjQxOTdiOTc2N2M2YjA0ZC4uZGUy
MGQ0ZWEyNTNkY2E3MmI2YjU3ZGY3Njc5OTc0NjFlMjk4NGIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVS
ZXF1ZXN0KFVuaXF1ZVJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwot
ICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gc3RkOjpudWxsb3B0LCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBz
dGQ6Om51bGxvcHQpOworICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YT4+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRh
dGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKaW5kZXggYzdjMWNhYzlkNWE4MTQxZTVlYWI4M2I1ZWRhNDRkMWNiOWRm
ZWIxYy4uM2I2ODFlNWU5MWJiZmU1MDkzZWU4N2M4ZjU3ZjQ5ZDJhZGFhYWU0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdWludDY0X3QgU3VzcGVuZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAK
LWJvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBP
cHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4s
IHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5Ojpz
ZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvKQogewogICAgIC8vIFNlbmQgbWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkg
aW5zdGVhZCBvZiB0aGUgSVBDOjpDb25uZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94
eSBpbXBsZW1lbnRzIHF1ZXVlaW5nIG9mIG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nl
c3MgaXMgc3RpbGwgbGF1bmNoaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuaAppbmRleCBlOGMwOTUzMzE2NWQ3Y2RlZTliOGU5ZDA4ODkxODBjZmFiZmMx
OTZiLi5mNDRhYjNhZjU4OTcwOGNkYjlmMjQ5ZWRiNWI0MWM0ZmJkMDE3NjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMTAwLDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggNzRkMmUxMWU1NzZiYTc4YmMzODk3MGM1OTcxMTlmOWQ4NDVkMzY5
ZS4uYmY2NWQzNjQ2NDJiNTZmZjhlM2Y0YjdiZTllMjkzNGQ5NDQwNDU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChV
c2VyTWVkaWFQZXJtCiAgICAgfSk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnJlc2V0QWNjZXNzKE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlc2V0
QWNjZXNzKHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKQogewogICAgIGlm
IChmcmFtZUlEKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgZnJhbWVJRCA/
IGZyYW1lSUQtPmxvZ2dpbmdTdHJpbmcoKSA6IFN0cmluZyB7IH0pOwpAQCAtODQyLDcgKzg0Miw3
IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0
ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKEZyYW1lCiAjZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJp
ZGUoc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkKQogewogICAgIG1fbW9ja0RldmljZXNFbmFi
bGVkT3ZlcnJpZGUgPSBlbmFibGVkOwogICAgIHN5bmNXaXRoV2ViQ29yZVByZWZzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBjMTQyZTM1NWI3YzY5ZjA1OGE4ZDllZGNh
NzE4ZDY2NDZjZWU1OTVhLi5hYjgxOWRiOTZiOGYzYjMxMjkxZWU1ZDRmZmViOGU1NjUzYzFiYTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiAgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVJlcXVlc3QmJik7CiAKLSAgICB2b2lkIHJlc2V0QWNjZXNzKE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQgPSB7IH0pOworICAgIHZvaWQgcmVzZXRBY2Nl
c3Moc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlEID0g
eyB9KTsKICAgICB2b2lkIHZpZXdJc0JlY29taW5nVmlzaWJsZSgpOwogCiAgICAgdm9pZCBncmFu
dFJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYpOwpAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFByb21wdAogICAgIH07CiAKLSAgICB2b2lkIHNldE1vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBz
ZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPik7
CiAgICAgYm9vbCBoYXNQZW5kaW5nQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGlu
Z0NhcHR1cmU7IH0KIAogICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yU3BlZWNo
UmVjb2duaXRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29y
ZTo6Q2FwdHVyZURldmljZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0
ZW5zaW9uRm9yVENDRCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICB1aW50NjRfdCBtX2hhc1BlbmRp
bmdDYXB0dXJlIHsgMCB9OwotICAgIE9wdGlvbmFsPGJvb2w+IG1fbW9ja0RldmljZXNFbmFibGVk
T3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX21vY2tEZXZpY2VzRW5hYmxlZE92
ZXJyaWRlOwogfTsKIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpSZXF1ZXN0QWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA4MzQ0ZmRkNDEyYzU5NjdmYzI1NDg0YmJh
N2NmMzA1ZWJhMzM1OTEzLi40NjIzYmE4MzVlYWQ5YzljOTcxNDVmYzJiMTFkYWZhOGVjMTA1OTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IG5hbWVzcGFjZSB7CiBjb25zdCB1bnNpZ25lZCBtYXhUaW1lT3V0VmFsdWUgPSAxMjAwMDA7CiAK
IC8vIEZJWE1FKDE4ODYyNSk6IFN1cHBvcnQgQkxFIGF1dGhlbnRpY2F0b3JzLgotc3RhdGljIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRyYW5zcG9ydHMoY29uc3Qg
T3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRv
clNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0aGVudGljYXRvclNlbGVjdGlvbikKK3N0YXRpYyBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGlj
YXRvclNlbGVjdGlvbkNyaXRlcmlhPiYgYXV0aGVudGljYXRvclNlbGVjdGlvbikKIHsKICAgICBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoIWF1dGhl
bnRpY2F0b3JTZWxlY3Rpb24gfHwgIWF1dGhlbnRpY2F0b3JTZWxlY3Rpb24tPmF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KSB7CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBBdXRoZW50aWNhdG9yTWFu
YWdlcjo6VHJhbnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IE9wdGlvbmFsPFB1Ymxp
CiAvLyBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkIG9yIGFueSBvZiBpdHMgY3JlZGVudGlhbHMgZG9l
c24ndCBzcGVjaWZ5IGl0cyBvd24uIFdlIHNob3VsZCBkaXNjb3ZlciBhbGwuCiAvLyBUaGlzIGlz
IGEgdmFyaWFudCBvZiBTdGVwLiAxOC4qLjQgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2Vi
YXV0aG4vI2Rpc2NvdmVyLWZyb20tZXh0ZXJuYWwtc291cmNlCiAvLyBhcyBvZiA3IEF1Z3VzdCAy
MDE4Lgotc3RhdGljIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQgY29sbGVjdFRy
YW5zcG9ydHMoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiYgYWxs
b3dDcmVkZW50aWFscywgY29uc3QgT3B0aW9uYWw8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+JiBh
dXRoZW50aWNhdG9yQXR0YWNobWVudCkKK3N0YXRpYyBBdXRoZW50aWNhdG9yTWFuYWdlcjo6VHJh
bnNwb3J0U2V0IGNvbGxlY3RUcmFuc3BvcnRzKGNvbnN0IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50
aWFsRGVzY3JpcHRvcj4mIGFsbG93Q3JlZGVudGlhbHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QXV0
aGVudGljYXRvckF0dGFjaG1lbnQ+JiBhdXRoZW50aWNhdG9yQXR0YWNobWVudCkKIHsKICAgICBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6VHJhbnNwb3J0U2V0IHJlc3VsdDsKICAgICBpZiAoYWxsb3dD
cmVkZW50aWFscy5pc0VtcHR5KCkpIHsKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgQXV0aGVu
dGljYXRvck1hbmFnZXI6OlRyYW5zcG9ydFNldCBjb2xsZWN0VHJhbnNwb3J0cyhjb25zdCBWZWN0
b3I8UHVibGljSwogfQogCiAvLyBPbmx5IHJvYW1pbmcgYXV0aGVudGljYXRvcnMgYXJlIHN1cHBv
cnRlZCBmb3IgR29vZ2xlIGxlZ2FjeSBBcHBJRCBzdXBwb3J0Lgotc3RhdGljIHZvaWQgcHJvY2Vz
c0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBPcHRpb25hbDxBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM+JiBleHRlbnNpb25zLCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6VHJhbnNwb3J0U2V0JiB0cmFuc3BvcnRzKQorc3RhdGljIHZvaWQgcHJvY2Vzc0dv
b2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPEF1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4mIGV4dGVuc2lvbnMsIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpUcmFuc3BvcnRTZXQmIHRyYW5zcG9ydHMpCiB7CiAgICAgaWYgKCFleHRlbnNp
b25zKSB7CiAgICAgICAgIC8vIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlIHNob3Vs
ZCBhbHdheXMgc2V0IGl0LgpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEs
IENhCiAgICAgcnVuUHJlc2VudGVyKCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3QgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiYgZnJhbWVJRCkKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwgY29uc3Qgc3RkOjpv
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+JiBmcmFtZUlEKQogewogICAgIGlmICghbV9wZW5kaW5n
Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTQyNCw3ICs0MjQsNyBAQCB2
b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzdGFydERpc2NvdmVyeShjb25zdCBUcmFuc3BvcnRT
ZXQmIHRyYW5zcG9ydHMpCiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmluaXRUaW1lT3V0
VGltZXIoKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lT3V0SW5NczsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lT3V0SW5NczsKICAgICBXVEY6OnN3aXRjaE9uKG1fcGVu
ZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMsIFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiBvcHRpb25zKSB7CiAgICAgICAgIHRpbWVPdXRJbk1zID0gb3B0aW9ucy50
aW1lb3V0OwogICAgIH0sIFsmXShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmIG9wdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGY3ZjM0
MzBjYWFkN2I3MjA5OGM4MjFhZjczMjQ5NTM0N2QxZTQyZWIuLjRkYjFkOWI1ZWVlMWVhNmZjNDNj
ZWM0NjQ3YTVhNTc4MjcxZDAyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvck1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRp
b25SZXF1ZXN0RGF0YSYmLCBDYWxsYmFjayYmKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXImLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+Jik7IC8vIENhbGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJv
eHkuCisgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENh
bGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHkuCiAgICAgdm9pZCBjYW5jZWxS
ZXF1ZXN0KGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYpOyAvLyBDYWxsZWQgZnJv
bSBwYW5lbCBjbGllbnRzLgogICAgIHZvaWQgY2FuY2VsKCk7IC8vIENhbGxlZCBmcm9tIHRoZSBw
cmVzZW50ZXIuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRl
eCAxYWFjMWNhMjYxZWMzYTljMjk3YjFjOTNiMzM0MDgzMjJmN2RiZWQ2Li5jOGEzNmMxMjM5OTE4
Zjg0NzRhZGMyMjRlYTRkM2Q5ZjIxYTljODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBSZWY8QXJy
YXlCdWZmZXI+IHRvQXJyYXlCdWZmZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogICAg
IHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgcnBJZCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4+IGdldEV4aXN0aW5nQ3JlZGVudGlhbHMoY29uc3QgU3RyaW5nJiBycElkKQogewogICAgIC8v
IFNlYXJjaCBLZXljaGFpbiBmb3IgZXhpc3RpbmcgY3JlZGVudGlhbCBtYXRjaGVkIHRoZSBSUCBJ
RC4KICAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggODQ4
ZjUzMTljODY3YzczOGU0NmUxN2U5NjE2ZTE2Mzg2ZGQxOTEyMi4uMDA2NTRlNDI1ZWI5M2Y0NGE1
YjEzNjYxZjgxOGM0MTJlNWM5YmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVk
UmVwb3J0cygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGaWRvSGlk
TWVzc2FnZT4gbWVzc2FnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNz
YWdlOwogICAgIGlmIChtX3N0YWdlID09IE1vY2s6OkhpZFN0YWdlOjpJbmZvICYmIG1fc3ViU3Rh
Z2UgPT0gTW9jazo6SGlkU3ViU3RhZ2U6Ok1zZykgewogICAgICAgICAvLyBGSVhNRSgyMDU4Mzkp
OgogICAgICAgICBWZWN0b3I8dWludDhfdD4gaW5mb0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmgKaW5kZXggODhiMjg0ZjU0YWIwZDhmM2ZjMzE4ODlmMDM5Y2Y5OTNiMzYw
NzRjNC4uNWI4ODI0YzQxNDFmOTgwNDM4NTQ2MWU2NzMyMmQ4YmM2MjFiZDZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29udGludWVGZWVkUmVwb3J0cygpOwogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247Ci0gICAgT3B0aW9uYWw8
Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25h
bDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKICAgICBXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRTdGFnZSBtX3N0YWdlIHsgV2Vi
Q29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2U6OkluZm8g
fTsKICAgICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRT
dWJTdGFnZSBtX3N1YlN0YWdlIHsgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkU3ViU3RhZ2U6OkluaXQgfTsKICAgICB1aW50MzJfdCBtX2N1cnJlbnRDaGFu
bmVsIHsgZmlkbzo6a0hpZEJyb2FkY2FzdENoYW5uZWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRE
cml2ZXIuY3BwCmluZGV4IGRiZmJlNjM5N2ZjMTIwMTU5OTQwMjk3NmNjNzdjNGMzZjU1MWViODMu
LjVjYmE0YmUzZjJmZDljNGU4YTFjZDUwZjkxZDBiOTRkZjZlYjE0ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgQ3RhcEhpZERyaXZl
cjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNh
bGxiYWNrCiAKICAgICBhdXRvIGluaXRDb21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSht
X2NoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBtX25vbmNlKTsKICAgICBB
U1NFUlQoaW5pdENvbW1hbmQpOwotICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0
Q29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hp
ZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChX
VEZNb3ZlKCppbml0Q29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oc3Rk
OjpvcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjp0
cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJh
Y2sKICAgICB9KTsKIH0KIAotdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5l
bEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQordm9pZCBDdGFw
SGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChzdGQ6Om9wdGlvbmFsPEZp
ZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkFs
bG9jYXRlQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQg
Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlk
b0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAgLy8gRklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc3Qg
b2YgdGhlIHBheWxvYWQuCiAgICAgYXV0byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1f
Y2hhbm5lbElkLCBwcm90b2NvbCgpID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgPyBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IgOiBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgbV9yZXF1
ZXN0RGF0YSk7CiAgICAgQVNTRVJUKGNtZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1v
dmUoKmNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hp
ZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgIG1fd29ya2VyLT50cmFuc2FjdChX
VEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHN0ZDo6b3B0aW9u
YWw8Rmlkb0hpZE1lc3NhZ2U+JiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVB
ZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzCiAgICAg
fSk7CiB9CiAKLXZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2
ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkKK3ZvaWQgQ3RhcEhp
ZERyaXZlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoc3RkOjpvcHRpb25hbDxmaWRv
OjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpSZWFkeSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRl
eCBiZmIyMTNkNzQ0ZDJlMTYwOWQzYmEzYjRiZDM2NzQxMWZkMzcyMTM3Li41OTNmYTk4ODBkOTUw
NTBlZGI3MzRkNTkzOTE0MWU5YjlkZWU1YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIu
aApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyKTsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHVzaW5nIE1lc3NhZ2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpPjsKKyAgICAgICAgdXNpbmcgTWVzc2FnZUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKT47
CiAKICAgICAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgIHsKICAgICAgICAgICAgIElk
bGUsCkBAIC04MiwxMyArODIsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBVbmlxdWVSZWY8SGlk
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OklkbGUgfTsKLSAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVz
dE1lc3NhZ2U7Ci0gICAgICAgIE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3Jlc3Bv
bnNlTWVzc2FnZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4g
bV9yZXF1ZXN0TWVzc2FnZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVz
c2FnZT4gbV9yZXNwb25zZU1lc3NhZ2U7CiAgICAgICAgIE1lc3NhZ2VDYWxsYmFjayBtX2NhbGxi
YWNrOwogICAgIH07CiAKLSAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9w
dGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKKyAgICB2
b2lkIGNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKHN0ZDo6b3B0aW9uYWw8Zmlkbzo6Rmlk
b0hpZE1lc3NhZ2U+JiYpOworICAgIHZvaWQgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
c3RkOjpvcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7CiAgICAgdm9pZCByZXR1cm5S
ZXNwb25zZShWZWN0b3I8dWludDhfdD4mJik7CiAgICAgdm9pZCByZXNldCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA0YzU0YzZh
ZjA3MDFjYzliM2YyNmNkYTM1NTE2MGQzNWQzNTFjNDA0Li5lMGU5NDRkMTJkZmMxMmJjNmNlY2Yw
Mzk2MjE5ZjUzMzQzNDJiNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExp
c3RTdAogICAgICAgICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IHsgUHJv
Y2Vzczo6aWRlbnRpZmllcigpLCBPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT46OmdlbmVyYXRlKCkgfTsKICAgICAgICAgaXRlbXMu
dW5jaGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKSk7CiAgICAgfQot
ICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8g
T3B0aW9uYWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0
ZDo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1
cnJlbnRJbmRleCA/IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUu
Y3VycmVudEluZGV4KSA6IHN0ZDo6bnVsbG9wdDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0
ZW1zKTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3
YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9tIHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhpcywg
bV9lbnRyaWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5oCmluZGV4IGRmMWIxODUxZDQyZTZiMjQyOGE3Y2M4MTM4ZWM2YWU3MGJmMmI4MGIu
LjQxY2YzZTIwNDRkYWZiOWMzNjM4M2YyOWE5ZDAxNGM0MjNhOTJkNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCkBAIC04OCw3ICs4OCw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBCYWNrRm9yd2FyZExpc3RJ
dGVtVmVjdG9yIG1fZW50cmllczsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fY3VycmVudEluZGV4
OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2N1cnJlbnRJbmRleDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggZGFiMzJlMDQ5M2U2YTZlYzdhMTU1
NjU5MDQyMzBhZDVjY2Q5NjMwNC4uZjhmMmZkMDNjZDFhZTIyZTk4OTgwOGUxZTAzYWNmMThhMTQy
NjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eTo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KFJlcGx5JiYgcmVwbHksIFNo
b3VsZEV4CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6fldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eSgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk6OmRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5OjpkaWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
CmluZGV4IDg5NTgzMGM4ZTM2OTU3MzRiYmJmMWJhYWM1NTRjOTM0NjNiYjA1MzEuLjg5ZTI3ZmI1
M2YwZjU1YTA1MzFjYjdkMTgzMzYyMjFlYmMzNGNmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCkBAIC00Niw3ICs0
Niw3IEBAIGVudW0gY2xhc3MgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgOiBib29s
IHsgTm8sIFllcyB9OwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWVQb2xpY3lMaXN0ZW5lcj4g
ewogcHVibGljOgogCi0gICAgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KT47CisgICAgdXNpbmcgUmVwbHkgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2Fy
bmluZz4mJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pPjsKICAg
ICBzdGF0aWMgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFJlcGx5JiYg
cmVwbHksIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBlY3RTYWZlQnJvd3NpbmdS
ZXN1bHQsIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0IGV4cGVjdEFwcEJvdW5kRG9t
YWluUmVzdWx0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5KFdURk1vdmUocmVwbHkpLCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1
bHQsIGV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KSk7CkBAIC01OCwxNCArNTgsMTQgQEAgcHVi
bGljOgogICAgIHZvaWQgaWdub3JlKCk7CiAgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZlU2FmZUJy
b3dzaW5nUmVzdWx0cyhSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAKIHByaXZhdGU6CiAgICAg
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KFJlcGx5JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93
c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwogCi0gICAgT3B0
aW9uYWw8c3RkOjpwYWlyPFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4sIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQ+PiBtX3BvbGljeVJlc3VsdDsKLSAgICBPcHRpb25hbDxSZWZQdHI8
U2FmZUJyb3dzaW5nV2FybmluZz4+IG1fc2FmZUJyb3dzaW5nV2FybmluZzsKLSAgICBPcHRpb25h
bDxPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4+IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSZWZQdHI8QVBJOjpX
ZWJzaXRlUG9saWNpZXM+LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50Pj4gbV9wb2xpY3lS
ZXN1bHQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4+IG1f
c2FmZUJyb3dzaW5nV2FybmluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+PiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47
CiAgICAgUmVwbHkgbV9yZXBseTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAKaW5kZXggNWVmMDI5MWI1NjRlYjczNmFmNDYwNTlmOWEwYTU1MWEyMWNiNTUy
YS4uMzU3NWFhMzE5NDMyODVhMzc3NTFmNGIyMTNmYTBkYTFlOTNiMGYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTE5MiwxMSArMTkyLDExIEBAIHZv
aWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLVdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2Vi
RnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBTaG91bGRFeHBl
Y3RTYWZlQnJvd3NpbmdSZXN1bHQgZXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBTaG91bGRFeHBl
Y3RBcHBCb3VuZERvbWFpblJlc3VsdCBleHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCkKK1dlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQ
b2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3Np
bmdXYXJuaW5nPiYmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+
JiYgY29tcGxldGlvbkhhbmRsZXIsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCBleHBl
Y3RTYWZlQnJvd3NpbmdSZXN1bHQsIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0IGV4
cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KQogewogICAgIGlmIChtX2FjdGl2ZUxpc3RlbmVyKQog
ICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyLT5pZ25vcmUoKTsKLSAgICBtX2FjdGl2ZUxpc3RlbmVy
ID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBw
b2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgbV9hY3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9s
aWNpZXMsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5n
V2FybmluZyksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBtX2FjdGl2
ZUxpc3RlbmVyID0gbnVsbHB0cjsKICAgICB9LCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4
cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAppbmRleCA4MWNlYTIxNjg5MDVhNGM3NDIzN2Y1MTVlYzA5OTNiZjU2ODA3ZDRkLi4z
OTFiMDI3MzYyODM0MWVkYWE4ODMwYjM3NGYwZmIxMzEyNDAxNzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hv
ciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRp
dGxlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBz
ZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPik+JiYsIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwg
U2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOworICAgIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eSYgc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik+JiYsIFNob3VsZEV4cGVjdFNh
ZmVCcm93c2luZ1Jlc3VsdCwgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJs
b2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92
ZShjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBmZjQ3NmY1NDIx
MTg4OWY3MTc4MGQ5ZTIzZWUzMzI5ZjIxYzNjYzMxLi43NDkzNmU0NWEwZDgzODNhOGI0YjNkNmQ1
NzhjOWJkMjJiZTNmYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CiAjZW5k
aWYKLSAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4m
IGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4mIGxhc3RQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOyB9CiAKICAgICB1c2luZyBB
UEk6Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKQEAgLTg1LDcg
Kzg1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50Kj4gbV9oaWdoQWNjdXJhY3lSZXF1ZXN0ZXJzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6R2VvbG9jYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbV9sYXN0UG9zaXRpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGFmZDc2MjdjOTAwN2M3NDRkNjI1MDA3ZTE1MmE2ZjYxYWMxZmJkZDIu
LmUzZjgwMTQ3MTU2ZjUzN2U3ZDYyYjlmY2ZiMjJkMmQyZWE1ZjVkY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbiwgUHJvCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmpl
Y3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZS5tZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2Vzcygp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZS5tZXNzYWdlQm9keS5nZXQoKSkuZ2V0
KCkpKSk7CiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkKK2Jvb2wgV2ViUGFnZVByb3h5
OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERl
bGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKQogewogICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGlu
ZyA9IG51bGxwdHI7CiAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CkBAIC0xMzI4
LDcgKzEzMjgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0
aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApA
QCAtMTQ0OCw3ICsxNDQ4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICByZXR1cm4g
bmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFX
aXRoTmF2aWdhdGlvbiIpOwogCkBAIC0xODc0LDcgKzE4NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKQogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+
JiBjb2xvcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qgc3Rk
OjpvcHRpb25hbDxDb2xvcj4mIGNvbG9yKQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9
PSBjb2xvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwMCw3ICsyNjAwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
biBhY3Rpb24sIERyYWcKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRo
b2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQsIGNvbnN0IEludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVk
aXRhYmxlRWxlbWVudFJlY3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwg
Ym9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2Nl
cHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFi
bGVFbGVtZW50UmVjdCkKIHsKICAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJhZ09wZXJh
dGlvbjsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRo
b2Q7CkBAIC0yNzQ3LDcgKzI3NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRR
dWV1ZWRNb3VzZUV2ZW50KCkKICAgICAgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheT4gc2FuZGJveEV4dGVuc2lvbnM7CisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheT4gc2FuZGJveEV4dGVuc2lvbnM7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYm
IGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CkBAIC0zMjgxLDcgKzMyODEsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRUcmVhdFVSTFByb3RvY29sQXNBcHBCb3VuZChjb25zdCBVUkwmIHJlcXVl
c3RVUkwpCiAgICAgcmV0dXJuIHJlcXVlc3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVz
dFVSTC5wcm90b2NvbElzRGF0YSgpIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCBy
ZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlw
dCgpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1
ZXN0VVJMLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKK2Jvb2wgV2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKGlzRnVsbFdlYkJyb3dz
ZXIoKSkgewogICAgICAgICBpZiAoaGFzUHJvaGliaXRlZFVzYWdlU3RyaW5ncygpKQpAQCAtMzQx
NCw3ICszNDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2
aWdhdGlvbiwgcmVhc29uPSUiIFBVQkxJQ19MT0dfU1RSSU5HLCBwcm9jZXNzSWRlbnRpZmllcigp
LCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBvcHRpb25hbEhhbmRsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IG9wdGlvbmFsSGFuZGxlOwogICAgICAgICBpZiAoc2hvdWxk
UHJvY2Vzc1N3YXApIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvY2VzcyB0byBi
ZSB1c2VkIGZvciB0aGUgbmF2aWdhdGlvbiBkb2VzIG5vdCBnZXQgc2h1dERvd24gbm93IGR1ZSB0
byBkZXN0cm95aW5nIFN1c3BlbmRlZFBhZ2VQcm94eSBvciBQcm92aXNpb25hbFBhZ2VQcm94eSBv
YmplY3RzLgogICAgICAgICAgICAgYXV0byBwcmV2ZW50TmF2aWdhdGlvblByb2Nlc3NTaHV0ZG93
biA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLT5zaHV0ZG93blByZXZlbnRpbmdTY29wZSgpOwpAQCAt
MzQ0Miw3ICszNDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9s
aWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBWYXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+PiYmIG5hdmlnYXRpb25BY3Rpb25PclJl
c3BvbnNlLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51
ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
IHdlYnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgc3RkOjpvcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lz
aW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0p
OwpAQCAtMzQ1NCw3ICszNDU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmIChh
Y3Rpb24gPT0gUG9saWN5QWN0aW9uOjpJZ25vcmUgJiYgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2VzcyA9PSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyAmJiBuYXZpZ2F0aW9uICYm
IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpID09IG1fcGFnZUxvYWRTdGF0ZS5wZW5kaW5nQVBJ
UmVxdWVzdCgpLm5hdmlnYXRpb25JRCkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVu
ZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24pOwogCi0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4g
ZG93bmxvYWRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPERvd25sb2FkSUQ+IGRvd25sb2FkSUQ7CiAg
ICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwg
bV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOwpAQCAt
MzQ4MSwxOSArMzQ4MSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgICAgIG1fZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9OwogICAgIH0KICAgICAKLSAgICBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhOworICAgIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YTsKICAgICBp
ZiAod2Vic2l0ZVBvbGljaWVzKQogICAgICAgICB3ZWJzaXRlUG9saWNpZXNEYXRhID0gd2Vic2l0
ZVBvbGljaWVzLT5kYXRhKCk7CiAKICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBz
ZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rp
b24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2Fk
SUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBh
Z2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZl
bnRQb2xpY3ksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
b21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYkNvcmU6Ok1v
dXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQogewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3By
b3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9t
YWluRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBz
dGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFt
ZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCht
X21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChtX3By
b2Nlc3MucHRyKCkgIT0gJm1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkpOwogCkBAIC0zNTU5
LDcgKzM1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRl
bUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUo
KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4g
d2Vic2l0ZVBvbGljaWVzRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhOwogICAgICAgICBpZiAod2Vic2l0ZVBvbGljaWVz
KQogICAgICAgICAgICAgd2Vic2l0ZVBvbGljaWVzRGF0YSA9IHdlYnNpdGVQb2xpY2llcy0+ZGF0
YSgpOwogCkBAIC0zODgzLDcgKzM4ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmlu
c2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgICAgIG1fZHJhd2lu
Z0FyZWEtPmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBP
cHRpb25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewogICAgIG1f
ZGlzcGxheUlEID0gZGlzcGxheUlEOwogCkBAIC0zOTYxLDcgKzM5NjEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3RXhwb3Nl
ZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkK
IHsKICAgICBpZiAobV92aWV3RXhwb3NlZFJlY3QgPT0gdmlld0V4cG9zZWRSZWN0KQogICAgICAg
ICByZXR1cm47CkBAIC00MjUxLDcgKzQyNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycwog
ICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBzdGQ6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVm
UHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJ
OjpDb250ZW50V29ybGQmIHdvcmxkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJl
ZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBh
dGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5v
dCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3Nh
cnkoKTsKQEAgLTQyNjUsNyArNDI2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAgICAg
ICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKICNl
bmRpZgogCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29y
bGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0
YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29y
bGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UsIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4mJiBkZXRhaWxz
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICByZXR1cm4gY2Fs
bGJhY2tGdW5jdGlvbihtYWtlVW5leHBlY3RlZChXVEZNb3ZlKCpkZXRhaWxzKSkpOwogICAgICAg
ICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCkBAIC00MzE5LDkgKzQzMTksOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4mIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQorc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElE
YXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBP
cHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKKyAgICByZXR1cm4g
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
RGF0YVJlZmVyZW5jZT4mIGRhdGEpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhkYXRhID8g
QVBJOjpEYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpIDogbnVs
bHB0cik7CiAgICAgfTsKIH0KQEAgLTQ3NjAsNyArNDc2MCw3IEBAIHN0YXRpYyBPcHRpb25TZXQ8
Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRpb25D
b250YWluCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJD
b3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3Vy
ZUNvbnRlbnQsIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBX
ZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9s
aWN5LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICIoTG9h
ZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBu
YXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIG5hdmlnYXRpb25J
RCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21t
aXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dn
aW5nU3RyaW5nKCkpOwpAQCAtNDgxNiw3ICs0ODE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1lVHlwZSwgd2ViQ2VydGlmaWNhdGVJbmZv
LCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSkgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4g
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgICAg
ICBpZiAobV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKICAgICAgICAgICAgIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50ID0gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICAgICAgZWxzZSBp
ZiAobmF2aWdhdGlvbiAmJiBuYXZpZ2F0aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpKQpA
QCAtNTE3MiwxNCArNTE3MiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3Np
bmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZN
b3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVl
c3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0Rh
dGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBAIC01MTk1LDcgKzUxOTUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOiBmcmFtZUlEPSVsbHUsIG5hdmlnYXRpb25JRD0lbGx1IiwgZnJhbWUuZnJhbWVJ
RCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CkBAIC01Mjk0LDcgKzUyOTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
ID0gU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgogCi0gICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFt
ZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlv
biwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3Np
bmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICBhdXRvIGxpc3Rl
bmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVy
ID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUlu
Zm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxp
c3RlbmVyIGNhbGxlZDogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9saWN5QWN0
aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJuaW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVkIiwgZnJh
bWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5p
bmcsICEhaXNBcHBCb3VuZERvbWFpbik7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIp
LCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
KSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBv
bGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewpAQCAtNTQ0Nyw3
ICs1NDQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTU0NjMsNyArNTQ2Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Y1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBpc01haW5GcmFtZSwgV1RGTW92
ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQ
YWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0
Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBXVEZNb3ZlKHJlcGx5
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9E
YXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXll
ZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lE
ZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFdURk1vdmUocmVwbHkpKTsKIApAQCAt
NTQ5Miw3ICs1NDkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkg
IT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5p
dGlhdGVkQWN0aXZpdHkpKTsKICAgICAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFt
ZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rp
b25dIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pIG11dGFibGUgeworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBv
bGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVy
VXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8p
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3Np
bmdXYXJuaW5nKTsKQEAgLTU1MzEsNyArNTUzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
CiAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6
Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5n
ZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1
dGUpOwogCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlz
dGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdl
SUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3Zl
KG5hdmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFi
bGUgeworICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2lu
Z1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBu
dWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQ
b2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2Fybmlu
Zyk7CkBAIC02MDgxLDcgKzYwODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hl
ZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbAogICAgIHBh
Z2VDbGllbnQoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNvbnN0
IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250YWN0UGlja2VyKGNv
bnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IG1fcHJlZmVyZW5jZXMtPmNvbnRhY3RQaWNrZXJBUElFbmFibGVkKCkpOwogICAgIHBhZ2VDbGll
bnQoKS5zaG93Q29udGFjdFBpY2tlcihyZXF1ZXN0RGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwpAQCAtNjUyNCw3ICs2NTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3
YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb24KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2JhY2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
SXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4
KGluZGV4KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlEKCkpOwpAQCAt
NjYzMiw3ICs2NjMyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0ZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9maW5kQ2xpZW50LT5kaWRGYWlsVG9GaW5kU3Ry
aW5nKHRoaXMsIHN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRp
b24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgV2Vi
UGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmRNZXNzYWdl
KFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7
CiB9CkBAIC02Nzg1LDcgKzY3ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICAgICAg
U3RyaW5nIHVybDsKICAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwogICAgIH07Ci0g
ICAgT3B0aW9uYWw8RG93bmxvYWRJbmZvPiBkb3dubG9hZEluZm87CisgICAgc3RkOjpvcHRpb25h
bDxEb3dubG9hZEluZm8+IGRvd25sb2FkSW5mbzsKIAogICAgIHN3aXRjaCAoaXRlbS5hY3Rpb24o
KSkgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzQ3Myw3ICs3NDczLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmxvZ1Njcm9sbGluZ0V2ZW50KHVpbnQzMl90IGV2ZW50VHlwZSwgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c2VkRnJh
bWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCit2b2lk
IFdlYlBhZ2VQcm94eTo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAg
IG1fZm9jdXNlZEZyYW1lID0gbnVsbHB0cjsKQEAgLTgxMDQsNyArODEwNCw3IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKLSAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uTWFuaWZlc3QoKSA/IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+KG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpLT5hcHBsaWNhdGlv
bk1hbmlmZXN0KCkpIDogc3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25N
YW5pZmVzdCA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihtX2NvbmZpZ3VyYXRpb24tPmFw
cGxpY2F0aW9uTWFuaWZlc3QoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpKSA6IHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbV9uZWVk
c0ZvbnRBdHRyaWJ1dGVzOwpAQCAtODM1Miw3ICs4MzUyLDcgQEAgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQcm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QKICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJy
aWRlKE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZE92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZCkK
IHsKICAgICB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS5zZXRNb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkT3ZlcnJpZGUoZW5hYmxlZCk7CiB9CkBAIC04NzczLDcgKzg3NzMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
LXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CkBAIC04OTgyLDcgKzg5ODIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50
SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspCi1SZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJveHk6OnRh
a2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiBjbGlwUmVjdCkKK1Jl
ZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7CiAgICAgcmV0dXJuIHBhZ2VD
bGllbnQoKS50YWtlVmlld1NuYXBzaG90KFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KQEAgLTkwMjUs
NyArOTAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Io
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQogewogICAgIGlmICghbV9zY3JvbGxiYXJPdmVy
bGF5U3R5bGUgJiYgIXNjcm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm47CkBAIC05MDM1LDcg
KzkwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdAogCiAgICAgbV9zY3JvbGxiYXJPdmVy
bGF5U3R5bGUgPSBzY3JvbGxiYXJTdHlsZTsKIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzY3Jv
bGxiYXJTdHlsZUZvck1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xs
YmFyU3R5bGVGb3JNZXNzYWdlOwogICAgIGlmIChzY3JvbGxiYXJTdHlsZSkKICAgICAgICAgc2Ny
b2xsYmFyU3R5bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKIApAQCAtMTAwODksNyArMTAwODksNyBAQCBSZWY8
QVBJOjpBdHRhY2htZW50PiBXZWJQYWdlUHJveHk6OmVuc3VyZUF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJiBjYWxs
YmFjaykKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFw
cGxpY2F0aW9uTWFuaWZlc3QoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtMTA1ODAsNyAr
MTA1ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRl
Rm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQogICAgICAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggNTA0ODVhM2Q2Y2ZjOTY1ZGQ0ZDkwMmQ0MWJlMzZiOTE4OTI4MzJj
NC4uNzFmZTU4NWNiNTdlZjM4ZThlNDI5OTE1YzBlM2M4YjlmMjcwNzRhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY5NSw4ICs2OTUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcpIHsg
bV9kZWxlZ2F0ZXNTY3JvbGxpbmcgPSBkZWxlZ2F0ZXNTY3JvbGxpbmc7IH0KICAgICBib29sIGRl
bGVnYXRlc1Njcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOyB9
CiAKLSAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50KE9wdGlvbmFsPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIG1lYXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVtZW50KTsgfQotICAgIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CisgICAgdm9p
ZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50PiYmIG1lYXN1cmVtZW50KSB7IG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgPSBXVEZNb3ZlKG1lYXN1cmVtZW50KTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7IH0KIAogICAgIGVu
dW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSA6IGJvb2wgeyBEZWZlcnJh
YmxlLCBJbW1lZGlhdGUgfTsKICAgICBlbnVtIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VSZXBs
eU1vZGUgOiBib29sIHsgQXN5bmNocm9ub3VzLCBTeW5jaHJvbm91cyB9OwpAQCAtNzMwLDcgKzcz
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV2ViQ29y
ZTo6V3JpdGluZ0RpcmVjdGlvbik7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmli
dXRlcz4gY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQ7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBjYWNoZWRGb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydDsgfQogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgY29uc3QgVG91Y2hCYXJN
ZW51RGF0YSYgdG91Y2hCYXJNZW51RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hCYXJNZW51
RGF0YTsgfQpAQCAtNzYxLDcgKzc2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBz
ZXRTY3JlZW5Jc0JlaW5nQ2FwdHVyZWQoYm9vbCk7CiAKLSAgICB2b2lkIGluc2VydFRleHRQbGFj
ZWhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJik7CisgICAgdm9pZCBp
bnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
KT4mJik7CiAgICAgdm9pZCByZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgZG91Ymxl
IGRpc3BsYXllZENvbnRlbnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZS5zY2FsZSgpOyB9CkBAIC03OTEsNyArNzkxLDcgQEAgcHVibGljOgogICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVy
biBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsgfQogICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRp
b24oaW50MzJfdCk7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KLSAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7Cisg
ICAgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJU
cmVlKFRyYW5zYWN0aW9uSUQpOwogCiAgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXpl
clN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+KT4mJik7CkBAIC04NjgsOSArODY4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3Qo
Ym9vbCBhZGRlZCk7CiAgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlv
bnNNYXNrKTsKICAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGFsbG93ZWRBY3Rpb25zTWFzayk7Ci0gICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKKyAgICB2b2lkIGluc2VydERyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBseSk7CiAgICAgdm9pZCB3
aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPik7CiAgICAgdm9pZCBkaWRDb25jbHVkZURyb3AoKTsKICNlbmRpZgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC04ODcsNyArODg3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmlu
Zyk7CiAgICAgdm9pZCBkZWxldGVTdXJyb3VuZGluZyhpbnQ2NF90IG9mZnNldCwgdW5zaWduZWQg
Y2hhcmFjdGVyQ291bnQpOwogCi0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFs
PElucHV0TWV0aG9kU3RhdGU+JiYpOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6
Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShH
VEspCkBAIC05NTUsOCArOTU1LDggQEAgcHVibGljOgogICAgIHZvaWQgdGhlbWVEaWRDaGFuZ2Uo
KTsKICNlbmRpZgogCi0gICAgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgUGxhdGZvcm1WaWV3V2lkZ2V0IHZpZXdXaWRnZXQoKTsKQEAgLTEwNDcs
NyArMTA0Nyw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
OwogICAgIHZvaWQgc2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZv
aWQgc2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwotICAgIHZvaWQgd2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25l
ZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCk7CisgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5v
bWluYWxGcmFtZXNQZXJTZWNvbmQpOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlk
Q2hhbmdlKCk7CiAKICAgICB2b2lkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2wpOwpAQCAtMTA1NSw4
ICsxMDU1LDggQEAgcHVibGljOgogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBtX3VzZUZpeGVkTGF5b3V0OyB9OwogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZp
eGVkTGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplOyB9OwogCi0g
ICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQorICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRS
ZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0V4cG9zZWRSZWN0OyB9CiAKICAgICB2b2lkIHNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
cm9sbGVyKGJvb2wpOwogICAgIHZvaWQgc2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJv
b2wpOwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdv
cmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CisgICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVm
UHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mJik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMTE5
OCw3ICsxMTk4LDcgQEAgcHVibGljOgogCiAgICAgY2xhc3MgUG9saWN5RGVjaXNpb25TZW5kZXI7
CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIDogYm9vbCB7IE5v
LCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYs
IFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlv
bkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lv
blNlbmRlcj4mJiwgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9
LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOwogICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9u
QWN0aW9uPiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5Jiwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+
JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3Bl
cmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgV2ViQ29yZTo6RHJhZ0hh
bmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJP
Zkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KTsKKyAgICB2b2lk
IGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+LCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVk
aXRhYmxlRWxlbWVudFJlY3QpOwogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZvaWQgZGlk
U3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CkBAIC0xMjg4LDcgKzEyODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGN1cnJlbnREcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
RHJhZ09wZXJhdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3Bl
cmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFu
ZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7
IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFn
TnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdO
dW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RUb0ltYWdlKFdlYkZy
YW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRfdCBkcmF3UGFnZXNU
b1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKLSAg
ICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKT4mJik7CiAjZW5kaWYKQEAgLTEzNjYsNyArMTM2Niw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCi0gICAgdm9pZCBzaG93UERGQ29udGV4
dE1lbnUoY29uc3QgV2ViS2l0OjpQREZDb250ZXh0TWVudSYsIFBERlBsdWdpbklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8aW50MzJfdD4mJik+JiYpOworICAgIHZv
aWQgc2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmLCBQREZQ
bHVnaW5JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8aW50
MzJfdD4mJik+JiYpOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6SW50UmVjdCB2aXNpYmxlU2Nyb2xs
ZXJUaHVtYlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsg
fQogCkBAIC0xNDQ4LDggKzE0NDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5u
aW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3Jl
OjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KIAotICAgIHZvaWQgc2V0T3ZlcmxheVNj
cm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwot
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gb3ZlcmxheVNjcm9s
bGJhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAg
ICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4pOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5U2Nyb2xsYmFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGJhck92ZXJsYXlTdHlsZTsgfQogCiAgICAgLy8gV2hlbiB0aGUgc3RhdGUgb2YgdGhl
IHdpbmRvdyBjaGFuZ2VzIHN1Y2ggdGhhdCB0aGUgV2ViUGFnZSBuZWVkcyBpbW1lZGlhdGUgdXBk
YXRlLCB0aGUgVUlQcm9jZXNzIHNlbmRzIGEgbmV3CiAgICAgLy8gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEIHRvIHRoZSBXZWJQcm9jZXNzIHRocm91Z2ggdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2Fn
ZS4gVGhlIFVJUHJvY2VzcyB3aWxsIHdhaXQgdGlsbCBpdApAQCAtMTQ2MSwxMCArMTQ2MSwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QoKTsK
ICAgICB2b2lkIHN1cHByZXNzTmV4dEF1dG9tYXRpY05hdmlnYXRpb25TbmFwc2hvdCgpIHsgbV9z
aG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3QgPSB0cnVlOyB9CiAg
ICAgdm9pZCByZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
OwotICAgIHZvaWQgcmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
PiYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgUmVm
UHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRS
ZWN0PiYmKTsKKyAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4mKT4mJik7CisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PiYpPiYmKTsKICNlbmRpZgogCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVm
ZXJlbmNlc1N0b3JlKCkgY29uc3Q7CkBAIC0xNzE5LDcgKzE3MTksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgpOwogCiAgICAgUHJvdmlzaW9uYWxQYWdl
UHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25h
bFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBj
b25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBv
bGljeSwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIC8vIExvZ2ljIHNoYXJlZCBiZXR3ZWVuIHRo
ZSBXZWJQYWdlUHJveHkgYW5kIHRoZSBQcm92aXNpb25hbFBhZ2VQcm94eS4KICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3MjksMTMgKzE3MjksMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBP
cHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYs
IHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywg
c3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hl
bWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24m
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmKT4mJik7Ci0gICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmln
aW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0
YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hh
cmVkKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpOwogI2VuZGlmCkBAIC0xNzg3LDcgKzE3ODcsNyBAQCBwdWJsaWM6CiAgICAg
VVJMIGN1cnJlbnRSZXNvdXJjZURpcmVjdG9yeVVSTCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICB2b2lkIHNldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRPdmVycmlk
ZShPcHRpb25hbDxib29sPik7CisgICAgdm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
T3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPik7CiAgICAgdm9pZCB3aWxsU3RhcnRDYXB0dXJl
KGNvbnN0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKQEAgLTE4MzAsMTIgKzE4MzAsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpOwogCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogICAgIHZvaWQgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc0ZvcmNlZEludG9BcHBCb3VuZE1vZGVUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJl
dHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzVG9wRnJhbWVOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNUb3BGcmFtZU5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOyB9CiAjZWxzZQotICAgICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTg5
OCw3ICsxODk4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICB2
b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cCk7CiAgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGln
aHQmKTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25z
dCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBo
aWdobGlnaHRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAgICAgdm9p
ZCBzZXRBcHBIaWdobGlnaHRzVmlzaWJpbGl0eShjb25zdCBXZWJDb3JlOjpIaWdobGlnaHRWaXNp
YmlsaXR5KTsKICNlbmRpZgogCkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlSGlkZGVuUGFnZVRocm90
dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAKLSAgICBib29sIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9z
c2libGUoQVBJOjpOYXZpZ2F0aW9uJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpOworICAgIGJvb2wgc3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsKIAogICAgIGVudW0gY2xhc3Mg
UmVzZXRTdGF0ZVJlYXNvbiB7CiAgICAgICAgIFBhZ2VJbnZhbGlkYXRlZCwKQEAgLTE5NjgsNyAr
MTk2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOwogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3Rk
OjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+
JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFs
OwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwogCkBAIC0xOTk0LDcgKzE5OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0
YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1l
SW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiwgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQs
IE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5LCBjb25zdCBVc2VyRGF0YSYpOworICAg
IHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0lu
c2VjdXJlQ29udGVudCwgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSwgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0yMDE3LDEzICsyMDE3LDEzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
OwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdp
bmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5
RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAot
ICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAotICAgICAgICBP
cHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0y
MDc4LDcgKzIwNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hv
b3NlclNldHRpbmdzJik7CiAgICAgYm9vbCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJ
bWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpOwogICAgIHZvaWQgc2hvd1NoYXJlU2hlZXQo
Y29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29y
ZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2hvd0NvbnRh
Y3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYm
KT4mJik7CiAgICAgdm9pZCBwcmludEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJy
ZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERh
dGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFE
ZWxheWVkUmVwbHkmJik7CkBAIC0yMTc1LDcgKzIxNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIEJh
Y2svRm9yd2FyZCBsaXN0IG1hbmFnZW1lbnQKICAgICB2b2lkIGJhY2tGb3J3YXJkQWRkSXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVt
KGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKLSAgICB2b2lk
IGJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7
CisgICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyPiYmKT4mJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZExpc3RDb3VudHMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRMaXN0Q291bnRzRGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgYmFja0ZvcndhcmRDbGVhcigpOwogCkBAIC0yMjY0LDcgKzIyNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlU3RyaW5nRm9yRmluZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
Ci0gICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4mKTsKKyAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCkBAIC0yMzA0LDgg
KzIzMDQsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKIAog
ICAgIHZvaWQgY291bGROb3RSZXN0b3JlUGFnZVN0YXRlKCk7Ci0gICAgdm9pZCByZXN0b3JlUGFn
ZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKTsKLSAgICB2b2lk
IHJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4s
IGRvdWJsZSBzY2FsZSk7CisgICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHNjcm9sbE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1
cmVkSW5zZXRzT25TYXZlLCBkb3VibGUgc2NhbGUpOworICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50
ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBkb3VibGUgc2Nh
bGUpOwogCiAgICAgdm9pZCBkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRRdWFkPiYgZ2VvbWV0cmllcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJvdHRvbVJpZ2h0UmFkaXVzLCBib29sIG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZyk7CiAK
QEAgLTI0NzcsNyArMjQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNl
UmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgICAgICAKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOworICAgIGJvb2wgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFt
ZSwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4p
OwogI2VuZGlmCiAKICAgICBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3Jl
YXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmKTsK
QEAgLTI1NjIsNyArMjU2Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW5wdXRNb2RlPiBtX3BlbmRpbmdJbnB1
dE1vZGVDaGFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnB1dE1vZGU+IG1fcGVu
ZGluZ0lucHV0TW9kZUNoYW5nZTsKICAgICBUcmFuc2FjdGlvbklEIG1fZmlyc3RMYXllclRyZWVU
cmFuc2FjdGlvbklkQWZ0ZXJEaWRDb21taXRMb2FkOwogICAgIGludDMyX3QgbV9kZXZpY2VPcmll
bnRhdGlvbiB7IDAgfTsKICAgICBib29sIG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQg
eyBmYWxzZSB9OwpAQCAtMjYyOCw3ICsyNjI4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX29wZW5pbmdBcHBM
aW5rQWN0aXZpdHk7CiAjZW5kaWYKICAgICBib29sIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5h
YmxlZCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBtX2NwdUxpbWl0OworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2NwdUxpbWl0OwogICAgIFJlZjxXZWJCYWNrRm9yd2FyZExp
c3Q+IG1fYmFja0ZvcndhcmRMaXN0OwogICAgICAgICAKICAgICBib29sIG1fbWFpbnRhaW5zSW5h
Y3RpdmVTZWxlY3Rpb24geyBmYWxzZSB9OwpAQCAtMjY1Miw3ICsyNjUyLDcgQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgbV9wbHVnaW5TY2FsZUZhY3RvciB7IDEgfTsKICAgICBkb3VibGUgbV92aWV3
U2NhbGVGYWN0b3IgeyAxIH07CiAgICAgZmxvYXQgbV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rv
ciB7IDEgfTsKLSAgICBPcHRpb25hbDxmbG9hdD4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX2N1c3RvbURldmljZVNjYWxlRmFjdG9yOwogICAg
IGZsb2F0IG1fdG9wQ29udGVudEluc2V0IHsgMCB9OwogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBt
X2xheWVySG9zdGluZ01vZGUgeyBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3MgfTsKQEAgLTI2
NjcsNyArMjY2Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQgeyBm
YWxzZSB9OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9maXhlZExheW91dFNpemU7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CiAKICAgICBib29s
IG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
bHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIgeyBmYWxzZSB9OwpAQCAtMjcwNiw3ICsyNzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
PiBtX3doZWVsRXZlbnRDb2FsZXNjZXI7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlJRD4gbV9kaXNwbGF5SUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRD4gbV9kaXNwbGF5SUQ7CiAjaWYgSEFWRShDVkRJU1BMQVlMSU5LKQogICAg
IFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IG1fd2hlZWxFdmVudEFjdGl2aXR5SHlzdGVyZXNpczsK
ICNlbmRpZgpAQCAtMjc3NSw3ICsyNzc1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdM
ZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCB7IDAgfTsKIApAQCAtMjc4NCw3ICsyNzg0LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJh
ZyBkZXN0aW5hdGlvbiBkZXRhaWxzIGFyZSBkZWxpdmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJl
c3BvbnNlLAogICAgIC8vIHNvIHdlIHByZXNlcnZlIHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBu
ZXh0IGRyYWdnaW5nIGRlbGVnYXRlIGNhbGwgaXMgbWFkZS4KLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsg
V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnRE
cmFnSXNPdmVyRmlsZUlucHV0IHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFn
TnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCB7IDAgfTsKQEAgLTI4MzYsNyArMjgzNiw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX21pbmltdW1TaXplRm9yQXV0b0xheW91dDsK
ICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3ZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM7CiAKICAgICAvLyBWaXN1YWwgdmlld3BvcnRzCiAg
ICAgV2ViQ29yZTo6TGF5b3V0U2l6ZSBtX2Jhc2VMYXlvdXRWaWV3cG9ydFNpemU7CkBAIC0yODcx
LDcgKzI4NzEsNyBAQCBwcml2YXRlOgogICAgIFZpc2libGVXZWJQYWdlVG9rZW4gbV92aXNpYmxl
UGFnZVRva2VuOwogICAgICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
bV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpEb05vdFBpbiB9OwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1f
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fY3Vy
cmVudEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25v
dXMgfTsKIApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZTsKICAgICBkb3VibGUg
bV92aWV3cG9ydENvbmZpZ3VyYXRpb25MYXlvdXRTaXplU2NhbGVGYWN0b3IgeyAxIH07CiAgICAg
ZG91YmxlIG1fdmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
IHsgMCB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBtX292ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cz4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjkxMyw3ICsyOTEzLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kIHsgZmFsc2UgfTsKICNlbmRpZgog
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZXM+IG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0OwogCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBib29sIG1faXNQb2ludGVyTG9ja1BlbmRpbmcgeyBm
YWxzZSB9OwpAQCAtMjkzOCw5ICsyOTM4LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUGFnZURlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKICNlbmRpZgogCi0g
ICAgT3B0aW9uYWw8U3BlbGxEb2N1bWVudFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOworICAgIHN0
ZDo6b3B0aW9uYWw8U3BlbGxEb2N1bWVudFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOwogCi0gICAg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9wYWdlTG9hZFN0YXJ0OworICAgIHN0ZDo6b3B0aW9u
YWw8TW9ub3RvbmljVGltZT4gbV9wYWdlTG9hZFN0YXJ0OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3ByZXZpb3VzbHlWaXNpdGVkUGF0aHM7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJv
eHk+IG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXI7CkBAIC0yOTc3LDcgKzI5NzcsNyBAQCBw
cml2YXRlOgogICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IHNwZWFraW5nUGF1c2Vk
Q29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc3Bl
YWtpbmdSZXN1bWVkQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKLSAgICBPcHRpb25hbDxTcGVl
Y2hTeW50aGVzaXNEYXRhPiBtX3NwZWVjaFN5bnRoZXNpc0RhdGE7CisgICAgc3RkOjpvcHRpb25h
bDxTcGVlY2hTeW50aGVzaXNEYXRhPiBtX3NwZWVjaFN5bnRoZXNpc0RhdGE7CiAjZW5kaWYKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPiBt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CkBAIC0zMDEyLDggKzMwMTIsOCBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW47CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
bV9pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgYm9vbCBtX2lnbm9y
ZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMzAyOCw3ICszMDI4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJT
eXN0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggYjM0MmMwZTY5NjRlMWMxZmEzYjMzYjU2OTg3NWEyMjIwNDkwOTVkYS4uOWIw
NGFhMzMxYmIwN2JhYjYyOGNmYjFjNTJlNzg5MGM5NDA4ZGNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBA
QAogCiBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBD
cmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdl
KHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMg
d2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gbmV3UGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAg
IENsb3NlUGFnZSgpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgU3Ry
aW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC00NCw3ICs0NCw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2V0U3RhdHVzVGV4dChTdHJpbmcgc3RhdHVzVGV4dCkK
ICAgICBTZXRGb2N1cyhib29sIGZvY3VzZWQpCiAgICAgVGFrZUZvY3VzKHVpbnQ4X3QgZGlyZWN0
aW9uKQotICAgIEZvY3VzZWRGcmFtZUNoYW5nZWQoT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlEKQorICAgIEZvY3VzZWRGcmFtZUNoYW5nZWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpCiAgICAgU2V0UmVuZGVyVHJlZVNpemUo
dWludDY0X3QgdHJlZVNpemUpCiAgICAgU2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wgdG9vbGJh
cnNBcmVWaXNpYmxlKQogICAgIEdldFRvb2xiYXJzQXJlVmlzaWJsZSgpIC0+IChib29sIHRvb2xi
YXJzQXJlVmlzaWJsZSkgU3luY2hyb25vdXMKQEAgLTY5LDcgKzY5LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBQYWdlRGlkU2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHNjcm9s
bFBvc2l0aW9uKQogICAgIFJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIHN0cnVjdCBXZWJD
b3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBhcmFtZXRlcnMpCiAgICAgU2hvd1NoYXJlU2hlZXQo
c3RydWN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhKSAtPiAoYm9v
bCBncmFudGVkKSBBc3luYwotICAgIFNob3dDb250YWN0UGlja2VyKHN0cnVjdCBXZWJDb3JlOjpD
b250YWN0c1JlcXVlc3REYXRhIHJlcXVlc3REYXRhKSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OkNvbnRhY3RJbmZvPj4gaW5mbykgQXN5bmMKKyAgICBTaG93Q29udGFjdFBpY2tlcihzdHJ1
Y3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSkgLT4gKHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4gaW5mbykgQXN5bmMKICAgICBQcmlu
dEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgdGl0bGUsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBwZGZGaXJzdFBhZ2VTaXplKSAtPiAoKSBTeW5jaHJvbm91cwogICAg
IFJ1bk1vZGFsKCkKICAgICBOb3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KFdlYkNv
cmU6OkludFJlY3Qgc2Nyb2xsZXJUaHVtYikKQEAgLTEwOCw4ICsxMDgsOCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVk
aXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJL
aXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lzaW9uKSBTeW5jaHJvbm91cworICAgIERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
c3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3Vz
CiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCkBAIC0xMzMsNyAr
MTMzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKICAgICBEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkws
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIGVudW06Ym9vbCBXZWJDb3JlOjpXaWxsQ29u
dGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1p
bWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0
aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VF
dmVudFBvbGljeSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBsb2Fk
VHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2Vk
TGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGVudW06
dWludDhfdCBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xpY3ksIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBEaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCi0gICAgU2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0
aG9kU3RhdGU+IHN0YXRlKTsKKyAgICBTZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiBzdGF0ZSk7CiAjZW5kaWYKIAogICAgICMgQmFja0Zv
cndhcmQgbWVzc2FnZXMKICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0oc3RydWN0IFdlYktpdDo6QmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0ZW1TdGF0ZSkKICAgICBCYWNrRm9yd2FyZEdvVG9JdGVt
KHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9ub3Vz
Ci0gICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKE9wdGlv
bmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkgU3luY2hyb25v
dXMKKyAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQpIFN5
bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0Zv
cndhcmRDbGVhcigpCiAgICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJk
Q2FjaGUpCkBAIC0zMDQsNyArMzA0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAog
ICAgICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0g
ICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxp
bmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1
bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2Vy
dGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5z
aWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRp
b25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAgICAgRGlkRW5k
RHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtMzIzLDcgKzMyMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgRGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpCiAgICAgRGlkSGFuZGxl
QWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKICAgICBXaWxsUmVjZWl2ZUVk
aXREcmFnU25hcHNob3QoKQotICAgIERpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKQorICAgIERpZFJlY2Vp
dmVFZGl0RHJhZ1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRh
dGE+IHRleHRJbmRpY2F0b3IpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzkw
LDggKzM5MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIENvdWxkTm90UmVzdG9yZVBhZ2VTdGF0ZSgpCi0gICAgUmVzdG9yZVBh
Z2VTdGF0ZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBzY3JvbGxPcmlnaW4sIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4g
b2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKLSAgICBSZXN0b3JlUGFnZUNlbnRl
ckFuZFNjYWxlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHVub2JzY3VyZWRDZW50ZXIs
IGRvdWJsZSBzY2FsZSkKKyAgICBSZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xs
T3JpZ2luLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IG9ic2N1cmVkSW5zZXRzT25TYXZlLCBk
b3VibGUgc2NhbGUpCisgICAgUmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHVub2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKICAg
ICBEaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29y
ZTo6Q29sb3IgY29sb3IsIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+IGdlb21ldHJpZXMsIFdl
YkNvcmU6OkludFNpemUgdG9wTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJh
ZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21MZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXpl
IGJvdHRvbVJpZ2h0UmFkaXVzLCBib29sIG5vZGVIYXNCdWlsdEluQ2xpY2tIYW5kbGluZykKIAog
ICAgIEVsZW1lbnREaWRGb2N1cyhzdHJ1Y3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91
c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0
YXRlQ2hhbmdlcywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTQzMiw3ICs0MzIsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoUERGS0lU
X1BMVUdJTikKLSAgICBTaG93UERGQ29udGV4dE1lbnUoc3RydWN0IFdlYktpdDo6UERGQ29udGV4
dE1lbnUgY29udGV4dE1lbnUsIFdlYktpdDo6UERGUGx1Z2luSWRlbnRpZmllciBpZGVudGlmaWVy
KSAtPiAoT3B0aW9uYWw8aW50MzJfdD4gc2VsZWN0ZWRJdGVtKSBTeW5jaHJvbm91cworICAgIFNo
b3dQREZDb250ZXh0TWVudShzdHJ1Y3QgV2ViS2l0OjpQREZDb250ZXh0TWVudSBjb250ZXh0TWVu
dSwgV2ViS2l0OjpQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IHNlbGVjdGVkSXRlbSkgU3luY2hyb25vdXMKICNlbmRpZgogCiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmNwcAppbmRleCA0YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAzMWQ5
NTA2MWY5MGNjLi4xNjg2MTc0ZGMwODM4ODBlMGI2NTU5NjI2NDY2YWEyNTMyOGE1ZTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTgw
LDYyICs4MCw2MiBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBhc3RlYm9hcmRQcm94eTo6d2ViUHJv
Y2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3RpbwogI2lmICFQTEFURk9STShDT0NP
QSkKIAogI2lmICFQTEFURk9STShHVEspCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhPiYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmlu
ZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKDApOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgaW50NjRf
dCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3Qs
IGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
JiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAogI2lmICFVU0UoTElC
V1BFKQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90LCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAogI2VuZGlmIC8vICFV
U0UoTElCV1BFKQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZl
Rm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojpjb250YWluc1VSTFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
ZyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Y29udGFpbnNVUkxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwog
fQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5n
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1
cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCAyNTEyNGIyZmE3NzdlYzBk
YjEwZjZlMWIxM2VlNGIyMGFhOGY1ZDEyLi5iOTNmZGM3NjBlNjQ0ZDBmZWIxNWI1OWVhMjNjMTgx
YzU4ZWE1ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaApAQCAtODQsNDIgKzg0LDQyIEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3
ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpIGNvbnN0OwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHdyaXRlVVJMVG9QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwot
ICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KTsKLSAgICB2b2lkIHdy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+KTsKLSAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJk
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPik7Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOworICAgIHZvaWQgd3Jp
dGVVUkxUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVi
b2FyZChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4p
OworICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwor
ICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdm9pZCBnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFR5cGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVz
Rm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYp
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkQ29sb3IoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKLSAgICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVz
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBz
ZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwotICAg
IHZvaWQgc2V0UGFzdGVib2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQ2NF90KT4mJik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
Jik7CisgICAgdm9pZCBnZXROdW1iZXJPZkZpbGVzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZv
aWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJik+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENo
YW5nZUNvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpD
b2xvciYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
KyAgICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0
UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwor
ICAgIHZvaWQgc2V0UGFzdGVib2FyZENvbG9yKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQg
c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQ2NF90KT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
Jik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKElQ
Qzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiYpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZv
aWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7CisgICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiwg
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
JiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoSVBDOjpDb25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCk+JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5l
Y3Rpb24mLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiYmKT4mJik7CisgICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
Pj4mJik+JiYpOwogCi0gICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAg
ICB2b2lkIGNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKLSAgICB2b2lkIGNvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUp
PiYmKTsKKyAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsK
KyAgICB2b2lkIGNvbnRhaW5zU3RyaW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgY29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRp
bmcoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVy
bCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGdl
dFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgcHJldmlvdXNDaGFuZ2VDb3Vu
dCwgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCk7CiAKICAgICBlbnVtIGNsYXNzIFBhc3RlYm9hcmRB
Y2Nlc3NUeXBlIDogdWludDhfdCB7IFR5cGVzLCBUeXBlc0FuZERhdGEgfTsKLSAgICBPcHRpb25h
bDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3Rl
Ym9hcmRBY2Nlc3NUeXBlPiBhY2Nlc3NUeXBlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIGNvbnN0OwogICAgIHZvaWQgZ3JhbnRBY2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzdGVib2FyZEFjY2Vzc1R5
cGUpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGF0YU93bmVyVHlwZT4gZGV0ZXJtaW5lRGF0
YU93bmVyKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgUGFzdGVib2FyZEFjY2Vzc0ludGVudCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEYXRhT3duZXJUeXBlPiBkZXRlcm1p
bmVEYXRhT3duZXIoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFBhc3RlYm9hcmRBY2Nl
c3NJbnRlbnQpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+IG1fd2ViUHJvY2Vzc1Byb3h5U2V0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgdm9pZCBncmFudEFjY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBQYXN0ZWJvYXJkQWNj
ZXNzVHlwZSk7CiAgICAgICAgIHZvaWQgcmV2b2tlQWNjZXNzKFdlYlByb2Nlc3NQcm94eSYpOwot
ICAgICAgICBPcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gYWNjZXNzVHlwZShXZWJQcm9j
ZXNzUHJveHkmKSBjb25zdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQWNjZXNz
VHlwZT4gYWNjZXNzVHlwZShXZWJQcm9jZXNzUHJveHkmKSBjb25zdDsKICAgICB9OwogICAgIEhh
c2hNYXA8U3RyaW5nLCBQYXN0ZWJvYXJkQWNjZXNzSW5mb3JtYXRpb24+IG1fcGFzdGVib2FyZE5h
bWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDdiMzdj
MGVlZTEwOTQ1ZjYzNWMzYjI1ZWM1MWQzM2IzNWIxNGYzMi4uMmY4NjdlMTAyMTUwMmFkMjk3ZTc2
NTliMzdhMjQ2MTg2OTgwYmYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNDIgKzIyLDQyIEBACiAK
IG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIFdyaXRlVVJMVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCkgV2FudHNDb25uZWN0aW9uCi0gICAgV3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAg
IFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVy
cywgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQorICAgIFdyaXRlVVJMVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkVVJMIHVybCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlV2Vi
Q29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQg
Y29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIFdyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2Us
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2Fy
ZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgV2FudHND
b25uZWN0aW9uCisgICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJp
bmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKICNlbmRpZgogCi0gICAgV3JpdGVDdXN0b21E
YXRhKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gZGF0YSwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
VHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcgb3JpZ2luLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
VmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChPcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoT3B0aW9uYWw8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KLSAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50NjRfdCBpdGVt
c0NvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBSZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgUmVhZFVS
TEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBT
dHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3luY2hyb25v
dXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9y
VHlwZShTdHJpbmcgdHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgorICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3Vu
dCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0
eXBlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQWxsUGFzdGVib2FyZEl0ZW1J
bmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCisgICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbykgU3luY2hyb25vdXMgV2FudHNDb25u
ZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+ICh1aW50
NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBSZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KKyAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGhhbmRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29udGFpbnNT
dHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZShTdHJpbmcgdHlwZSwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVtYmVyT2ZGaWxl
cyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gdHlwZXMpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRQ
YXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9y
PFN0cmluZz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IHNhbmRib3hFeHRlbnNpb25zKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3Rl
Ym9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZl
Y3RvcjxTdHJpbmc+IHN0cmluZ3MpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpIFN5bmNocm9ub3VzIFdh
bnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChp
bnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQ
YXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoV2ViQ29yZTo6Q29sb3IgY29sb3IpIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9hcmRVUkwoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoU3Ry
aW5nIHVybFN0cmluZykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQWRkUGFzdGVi
b2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2Fy
ZFR5cGVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50
NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFz
dGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVi
b2FyZFR5cGVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgU2V0
UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJM
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJD
b3JlOjpDb2xvciBjb2xvciwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgot
ICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgc3RyaW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaGFuZGxlLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9u
Ci0gICAgQ29udGFpbnNVUkxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoYm9v
bCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFVSTFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
KyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8U3RyaW5nPiB0
eXBlcykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFBhdGhu
YW1lc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3Rv
cjxTdHJpbmc+IHBhdGhuYW1lcywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBzYW5kYm94RXh0ZW5zaW9ucykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIEdl
dFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKSAtPiAoVmVjdG9yPFN0cmluZz4gc3RyaW5ncykgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCisgICAgR2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxl
KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291
bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50
c0Nvbm5lY3Rpb24KKyAgICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChXZWJD
b3JlOjpDb2xvciBjb2xvcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFz
dGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgorICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcywgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0
cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAg
U2V0UGFzdGVib2FyZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBTdHJpbmcgc3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVj
dGlvbgorICAgIENvbnRhaW5zVVJMU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIFVSTFN0
cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFN0cmluZyB1cmwsIFN0cmlu
ZyB0aXRsZSkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBiNTI0YzI0ZDE4OWE1ZDA3M2M2ZTMwOWY1YTEyOWI2NjAxODEzMzY5Li5jMTMzMGU3NDM3ZWY5
MzJiNmQ1MzJhMDFiNDU0NTZkNjEwMzY4ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBEb3dubG9hZFByb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
YWdlUHJveAogewogICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5
KGRhdGFTdG9yZSwgcmVxdWVzdCwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7CiAKLSAgICBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpObzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAg
IGlmIChpbml0aWF0aW5nUGFnZSkgewogICAgICAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZmYjIyNzRm
ZTk4MGY0MWM0OWE2MTQ4NDc3ZTc2ZjUyODYwMmM1ODQuLjg0N2VlMDJkMjc1ZjIxNWE4NzNlZTVj
MjU0YjQ5MzFlZmNiNmJkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMjM4LDcgKzIzOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgSEFWRShDVkRJ
U1BMQVlMSU5LKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZD4gbm9taW5h
bEZyYW1lc1BlclNlY29uZEZvckRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVz
UGVyU2Vjb25kRm9yRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9p
ZCBzdGFydERpc3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJ
RCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCk7
CiAgICAgdm9pZCBzdG9wRGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxpbmtP
YnNlcnZlcklELCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgdm9pZCBzZXREaXNw
bGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNlY29uZChJUEM6OkNvbm5lY3Rpb24mLCBEaXNwbGF5
TGlua09ic2VydmVySUQsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQpOwpAQCAtNDk4LDcgKzQ5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgeyByZXR1cm4gc191c2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOyB9CiAKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9E
RSkKLSAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1
ZSk7CisgICAgdm9pZCBub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGVuY29k
ZWRWYWx1ZSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQpAQCAtNjA2LDcg
KzYwNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94
eT4mIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKICAgICBib29sIG1fd2FpdGluZ0Zvcldvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fc2Vydmlj
ZVdvcmtlclVzZXJBZ2VudDsKLSAgICBPcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3Nl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2Vz
U3RvcmU+IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwogICAgIFJlZlB0cjxXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JTZXJ2aWNlV29y
a2VyOwogI2VuZGlmCiAKQEAgLTc3MCw3ICs3NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvY2Vzc0Fzc2VydGlvbj4gZ3B1UHJvY2Vzc01lZGlhUGxheWJhY2tBc3Nl
cnRpb247CiAjZW5kaWYKICAgICB9OwotICAgIE9wdGlvbmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5
PiBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlh
QWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7CiAKICNpZiBQTEFURk9STShQTEFZU1RB
VElPTikKICAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ2YmIzMzczN2JiZjk5ZGM3NDNhNzc3NzZm
MzUxMDhmMzllNmM2ZWEuLjQ0NzIxNmI1YzlmYTQyODY2MGYwMzBkN2E5NTk5YTJlMmM3OGZjNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzQy
LDcgKzc0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0o
Y29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtCiB9CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKGJvb2wg
cmVmcmVzaCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGx1Z2luSW5mbz4mJiBwbHVn
aW5zLCBWZWN0b3I8UGx1Z2luSW5mbz4mJiBhcHBsaWNhdGlvblBsdWdpbnMsIE9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVn
aW5JZGVudGlmaWVycyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFBsdWdpbkluZm8+JiYgcGx1Z2lucywgVmVjdG9yPFBsdWdpbkluZm8+JiYgYXBwbGljYXRpb25Q
bHVnaW5zLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVu
dGlmaWVyPj4mJiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKHJlZnJlc2gpCiAgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBsdWdpbklu
Zm9TdG9yZSgpLnJlZnJlc2goKTsKQEAgLTE5MzYsNyArMTkzNiw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4gY29udGVudFJ1bGVMaXN0c0Zyb21JZGVudGlmaWVyKGNvbnN0
IE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+JiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKQorc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzRnJvbUlkZW50aWZp
ZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiYg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKICAgICBpZiAoIXVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGUyNTM4NzY2MWI0
NjM2OTBhYjQ4OGFhZThkYTM2NDkwYTljOWZhNTMuLjU1YzU4YzQzY2E3YTk2YTdjOTM2ODE2MTZl
MzgyODY2MGIxMDZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC00NTUsNyArNDU1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsdWdpbnMKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICB2b2lkIGdldFBsdWdpbnMoYm9vbCByZWZy
ZXNoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYm
IHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYmIGFwcGxpY2F0aW9uUGx1Z2lu
cywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYm
KT4mJik7CisgICAgdm9pZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4mJiBhcHBsaWNhdGlvblBsdWdpbnMsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYmKT4mJik7CiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHByaXZhdGU6
CiAKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFw
OwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFi
bGVEb21haW47CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKICAgICBib29sIG1faXNJblByb2Nlc3NDYWNoZSB7IGZhbHNl
IH07CiAKICAgICBlbnVtIGNsYXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNSZXNwb25z
aXZlOwpAQCAtNjI0LDcgKzYyNCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IGJvb2wgbV9oYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MgeyBmYWxzZSB9OwogI2VuZGlm
Ci0gICAgT3B0aW9uYWw8VXNlTGF6eVN0b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1Rp
bWVyV2hlbkxhdW5jaGVkOworICAgIHN0ZDo6b3B0aW9uYWw8VXNlTGF6eVN0b3A+IG1fc2hvdWxk
U3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkOwogCiAjaWYgUExBVEZPUk0oV0FU
Q0hPUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5PiBtX2JhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CkBA
IC02NDIsNyArNjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0
aXZpdHlWYXJpYW50IGFjdGl2aXR5OwogICAgICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJv
eHk+IGNsaWVudFByb2Nlc3NlczsKICAgICB9OwotICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwog
CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI+PiBtX3NsZWVwRGlzYWJsZXJzOwogCkBAIC02
NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgVW5pcXVlUmVmPFByb2Nlc3NBc3NlcnRp
b24+IGFzc2VydGlvbjsKICAgICAgICAgV2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFUb2tlbiB0
b2tlbjsKICAgICB9OwotICAgIE9wdGlvbmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1ZGli
bGVNZWRpYUFjdGl2aXR5OworICAgIHN0ZDo6b3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+
IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7CiAKICAgICBTaHV0ZG93blByZXZlbnRpbmdTY29wZUNv
dW50ZXIgbV9zaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50ZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYTY0
MjNjYWI1OWJlMDAzYzI2ZDg4YTlmYjg1ODRkNTdmNGFjNTkxLi4wY2FmNjExNjQzOGZlZDUxOGQ1
Y2JkZjdiZDk2MjhjNThjODY1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMyw3ICszMyw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICAjIFBsdWdpbiBtZXNz
YWdlcy4KICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBHZXRQbHVnaW5zKGJv
b2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gYXBwbGljYXRpb25QbHVnaW5zLCBzdHJ1Y3QgT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQ
bHVnaW5JZGVudGlmaWVycykgU3luY2hyb25vdXMKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVz
aCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4gYXBwbGljYXRpb25QbHVnaW5zLCBzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdp
bklkZW50aWZpZXJzKSBTeW5jaHJvbm91cwogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIFN5bmNo
cm9ub3VzCiAjZW5kaWYKICAgICBHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoc3Ry
dWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0aW9uSW5mbykg
U3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBiMzk3
OGYyNGU0YWI5NDY5ODI0NTc0OGQxYTdiY2FmNWM2MWNjZTNjLi4wNGM4NWViZGQyMzM1NGM3NDVi
OTZmZDZkMTM0YmI4NmNkM2ZhYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3Vu
ZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFMKICAgICB9KTsK
IH0KIAotT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdlYnNp
dGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKQorc3RkOjpvcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6
YXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBpZiAoIWhhc0luaXRpYWxpemVkQXBwQm91bmREb21haW5zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmgKaW5kZXggYzM1MjYxMmZmYzk5ZTQwOWI1MzUzZThkOWViZWRlYzdjMTA3OWQ1MC4uZjdh
MDkzM2FkY2IyOTU1NWIzMDUxMDczZTczMWFkNDBkMWY3YmUwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBA
IC03MSw3ICs3MSw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgICAgIHVpbnQ2
NF90IHRvdGFsU2l6ZTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdWludDY0X3Q+IHR5cGVT
aXplczsKICAgICB9OwotICAgIE9wdGlvbmFsPFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25h
bDxTaXplPiBzaXplOwogCiAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IG9yaWdpbnM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCAwMzRiY2E1NDI5OTE1NTdmZDc2MGFiYTIwNTJjODY3ODI1YWU2ZjVkLi4xN2FhZDA1
N2EzNDE0ZmI5ODQ1ZTk5MmEzYTcyMDUxMmJiOGI2MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zOTAs
NyArMzkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyV2l0aFNlc3Npb25JRE1hcCgp
OwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIHN0YXRpYyBPcHRpb25hbDxI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zSWZJbml0
aWFsaXplZCgpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+PiBhcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCk7CiAgICAgY29u
c3RleHByIHN0YXRpYyBjb25zdCBzdGQ6OmF0b21pYzxib29sPiBpc0FwcEJvdW5kSVRQUmVsYXhh
dGlvbkVuYWJsZWQgPSBmYWxzZTsKICAgICBzdGF0aWMgdm9pZCBmb3J3YXJkQXBwQm91bmREb21h
aW5zVG9JVFBJZkluaXRpYWxpemVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JJVFAoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNDUyLDcg
KzQ1Miw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5h
dG9yPiBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgorICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7IC8vIExhemlseSBjb21wdXRlZC4KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNs
aWVudC5oCmluZGV4IDFiNTdkNmI3MTE2MzEwNzJlNjUxMTRkOGQxYTQ1NDFlMTZkNDExZDYuLmY3
YzY4M2ZmNzE2M2ZhMjYzOTgyMDA3ZmIwZjA2MjZlYWRiMmRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgZnJhbWVPcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50
NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3Rv
cmFnZVNwYWNlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lT3JpZ2luLCB1aW50NjRfdCBx
dW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2Nh
dGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVH
ZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggMzFkMjkwOTE5ODVmMzRhNjUxMzRhMmIwZTdjYjNh
Y2UxZGFlNDQxZC4uYjVlNDhlNmM2MWE4YTNmNGI0MGI4NDExMmM0MDEwMTAxYzRkNWY0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRp
b25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1
ZUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgR2Vv
Y2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIoKTsKICAgICB+R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlk
ZXIoKTsKIAotICAgIHVzaW5nIFVwZGF0ZU5vdGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJv
cik+OworICAgIHVzaW5nIFVwZGF0ZU5vdGlmeUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IGVy
cm9yKT47CiAgICAgdm9pZCBzdGFydChVcGRhdGVOb3RpZnlGdW5jdGlvbiYmKTsKICAgICB2b2lk
IHN0b3AoKTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlHTGliLmNwcAppbmRleCA2NWU1Yjdl
NWFiNzYzNTAzYjJlN2FhMDU4YWMzNjBhOWZlZmEwZGVjLi4wMDNiMDIxNTYwY2IyMmE2ZDlhZDg5
MDJmZmFhZWFiNTNkYTkxODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5R0xpYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eUdMaWIuY3BwCkBAIC0yOSw3ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwbGF0
Zm9ybVZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OlZhbGlkQ29uc3RyYWludHNIYW5kbGVyJiYgdmFsaWRIYW5kbGVyLCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpJbnZhbGlkQ29uc3RyYWludHNIYW5kbGVyJiYgaW52YWxpZEhh
bmRsZXIsIFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXI6OlZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzKG1fY3VycmVu
dFVzZXJNZWRpYVJlcXVlc3QtPnVzZXJSZXF1ZXN0KCksIGRldmljZUlESGFzaFNhbHQpLCBbdmFs
aWRIYW5kbGVyID0gV1RGTW92ZSh2YWxpZEhhbmRsZXIpLCBpbnZhbGlkSGFuZGxlciA9IFdURk1v
dmUoaW52YWxpZEhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFp
bnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiBhdWRpb0RldmljZXMsIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXMsIE9wdGlvbmFsPFN0cmluZz4gZGV2
aWNlSWRlbnRpZmllckhhc2hTYWx0KSBtdXRhYmxlIHsKKyAgICBtX3BhZ2UucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6VmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3RyYWludHMobV9jdXJyZW50VXNl
ck1lZGlhUmVxdWVzdC0+dXNlclJlcXVlc3QoKSwgZGV2aWNlSURIYXNoU2FsdCksIFt2YWxpZEhh
bmRsZXIgPSBXVEZNb3ZlKHZhbGlkSGFuZGxlciksIGludmFsaWRIYW5kbGVyID0gV1RGTW92ZShp
bnZhbGlkSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpbnZhbGlkQ29uc3RyYWludCwg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+IHZpZGVvRGV2aWNlcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpbnZhbGlkQ29u
c3RyYWludCkKICAgICAgICAgICAgIGludmFsaWRIYW5kbGVyKCppbnZhbGlkQ29uc3RyYWludCk7
CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMDdmZTI5Njhj
OTY2YzUyMzhiMjExNTQ2YTZkMWNlMGU4NTg4NDE3Yy4uODE3MWVmNjJjYzc3YzBiMTEyZmRlNjFj
OTM2Y2YzYjBkZmQ3YTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
ZW51bSBjbGFzcyBXYXlsYW5kSW1wbCB7IFVuc3VwcG9ydGVkLCBFR0wsIFNITSB9Owotc3RhdGlj
IE9wdGlvbmFsPFdheWxhbmRJbXBsPiBzX3dheWxhbmRJbXBsOworc3RhdGljIHN0ZDo6b3B0aW9u
YWw8V2F5bGFuZEltcGw+IHNfd2F5bGFuZEltcGw7CiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQog
c3RhdGljIGJvb2wgaXNFR0xJbWFnZUF2YWlsYWJsZShib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcAppbmRleCA2MGJhMDcyNmNkZjVkNWU0NmU5ZWE5NDhiMGUyZjFl
NDBhNzRmYzEzLi5iZDI0OGY4NzQzODBhM2FmYmEzZjY3YmE4NTBkOWYyYzgxNTQ3MjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHAKQEAgLTUzLDEwICs1MywxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7Ci1zdGF0aWMgT3B0
aW9uYWw8aW50PiBzX2RhbWFnZUVycm9yQmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4g
c19kYW1hZ2VFdmVudEJhc2U7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ+IHNfZGFtYWdlRXJy
b3JCYXNlOwogI2lmIFVTRShHTFgpCi1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2dseEVycm9yQmFz
ZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gc19nbHhFcnJvckJhc2U7CiAjZW5kaWYKIAog
Y2xhc3MgWERhbWFnZU5vdGlmaWVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJEYXRlVGltZVBpY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuY3BwCmluZGV4IDQzYTkwNDU3NzgzNjJiNDRmZTQ3
MWI1NGQ0MzhjNjJlYjhiY2M4MTQuLjJhYzE1YzlkN2YxZjE5OTQ3YjQ0OTc5NDg2MjU1NWU5MTNl
MjExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRlVGlt
ZVBpY2tlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGVU
aW1lUGlja2VyR3RrLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgU3RyaW5nIHRpbWVUb1N0
cmluZyhjb25zdCBXZWJDb3JlOjpEYXRlQ29tcG9uZW50cyYgdGltZSwgV2ViQ29yZTo6U2Vjb25k
RgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBTdHJpbmcgY2FsZW5kYXJEYXRlVG9TdHJp
bmcoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
RGF0ZUNvbXBvbmVudHM+JiBkYXRlLCBXZWJDb3JlOjpTZWNvbmRGb3JtYXQgc2Vjb25kRm9ybWF0
KQorc3RhdGljIFN0cmluZyBjYWxlbmRhckRhdGVUb1N0cmluZyhpbnQgeWVhciwgaW50IG1vbnRo
LCBpbnQgZGF5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRhdGVDb21wb25lbnRzPiYg
ZGF0ZSwgV2ViQ29yZTo6U2Vjb25kRm9ybWF0IHNlY29uZEZvcm1hdCkKIHsKICAgICBhdXRvIHR5
cGUgPSBkYXRlID8gZGF0ZS0+dHlwZSgpIDogV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHNUeXBlOjpE
YXRlOwogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkRhdGVUaW1lUGlja2VyR3RrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViRGF0ZVRpbWVQaWNrZXJHdGsuaAppbmRleCBmN2VhMGQyZTRmZjdjODVjYTk0Y2Yy
ZjQ3ZTc0NTBmZTQ2NzViZTQzLi40ZjczNzk2ZTE3NDkwZmVkZmYxY2NlZTNkMjc5OTcxNDNkODRh
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQ
aWNrZXJHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0ZVRpbWVQ
aWNrZXJHdGsuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgR3RrV2lkZ2V0KiBt
X3BvcG92ZXIgeyBudWxscHRyIH07CiAgICAgR3RrV2lkZ2V0KiBtX2NhbGVuZGFyIHsgbnVsbHB0
ciB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRhdGVDb21wb25lbnRzPiBtX2N1cnJlbnREYXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM+IG1fY3VycmVudERh
dGU7CiAgICAgV2ViQ29yZTo6U2Vjb25kRm9ybWF0IG1fc2Vjb25kRm9ybWF0IHsgV2ViQ29yZTo6
U2Vjb25kRm9ybWF0OjpOb25lIH07CiAgICAgYm9vbCBtX2luVXBkYXRlIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmlu
ZGV4IGVhOTE2YTdkMThiNTJjZmNmYzI3OWNhYWQxOTViYTY5YWNmMTgxMjEuLjVjMGVlZjI3NzZl
ODNmYjZkMWViMjNkNmU2MzY1ZmZjMDg0MzAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYsIGNvbnN0
IEVkaXRvclN0YXRlJiBuCiAgICAgcGFnZUNsaWVudCgpLnNlbGVjdGlvbkRpZENoYW5nZSgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1
dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9k
U3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewogICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2
aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCmluZGV4IDY3ZGNhNDcy
Mzc0YWYwODMyYWNiNWQwODkzNGY3YjM4ZWU1OTFiN2MuLjJmMWMzYjVlNzEyMmMzNmViMmFhMGVl
ZDUwNDFjZTg0NzI2MzMyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpkaWREZXN0cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAg
ICAgICAgIG1fcHJpbWFyeVNlbGVjdGlvbk93bmVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8m
IGNsaXBib2FyZCA9IENsaXBib2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKTsKICAgICBjbGlwYm9h
cmQucmVhZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2Fy
ZCwgb3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewpAQCAtMTE0LDcgKzEx
NCw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFz
dGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgVmVj
dG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBWZWN0b3I8UGFz
dGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoZGF0YS5pc0Vt
cHR5KCkgfHwgZGF0YS5zaXplKCkgPiAxKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQg
bW9yZSB0aGFuIG9uZSBjdXN0b20gaXRlbSBpbiB0aGUgY2xpcGJvYXJkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKaW5kZXgg
NGEzZGEyZDU2YzUzMzZjM2Y0ODA1MTQ5M2ZlMTNkYmQxMzRkMjA3Mi4uNmRhNjIyMTc3OWY3MDZm
NjllZmZiNmM0ZTFjOTFmYTEzYWE0MjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OnNlbGVjdEl0ZW0odW5zaWduZWQgaXRlbUluZGV4KQog
ICAgIG1fc2VsZWN0ZWRJdGVtID0gaXRlbUluZGV4OwogfQogCi12b2lkIFdlYlBvcHVwTWVudVBy
b3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKK3ZvaWQg
V2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRleC52YWx1ZV9vcihtX3NlbGVjdGVk
SXRlbS52YWx1ZV9vcigtMSkpKTsKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5R3RrOjpjYW5jZWxUcmFja2luZygpCiAgICAgaGlkZVBvcHVwTWVudSgpOwogfQogCi1P
cHRpb25hbDx1bnNpZ25lZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRl
eCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQzMl90IHRpbWUpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBXZWJQb3B1cE1lbnVQcm94eUd0azo6dHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVkIGtleXZh
bCwgdWludDMyX3QgdGltZSkKIHsKICAgICBndW5pY2hhciBrZXljaGFyID0gZ2RrX2tleXZhbF90
b191bmljb2RlKGtleXZhbCk7CiAgICAgaWYgKCFnX3VuaWNoYXJfaXNwcmludChrZXljaGFyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94
eUd0ay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3Rr
LmgKaW5kZXggOTYzNTZkOGM5ZGZmOTBkYzZiY2M5NzdiMDgzZjc2ZmIzNjJhM2Q3OS4uMzk2ZjM3
M2NkNzU3NjFhMmEyYjMzNTIzNGUzNzhlZmIyNjcxNjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsVHJhY2tpbmcoKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRleCk7Ci0gICAgdmlydHVhbCB2
b2lkIGFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNpZ25lZD4gaXRlbUluZGV4KTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWN0aXZhdGVJdGVtKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCk7
CiAKICAgICBib29sIGhhbmRsZUtleVByZXNzKHVuc2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGlt
ZXN0YW1wKTsKICAgICB2b2lkIGFjdGl2YXRlU2VsZWN0ZWRJdGVtKCk7CkBAIC03MCw3ICs3MCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQb3B1cE1lbnUoY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZvaWQgc2hvdygpOwogICAg
IGJvb2wgYWN0aXZhdGVJdGVtQXRQYXRoKEd0a1RyZWVQYXRoKik7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHR5cGVBaGVhZEZpbmRJbmRleCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQzMl90IHRpbWVz
dGFtcCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdHlwZUFoZWFkRmluZEluZGV4KHVu
c2lnbmVkIGtleXZhbCwgdWludDMyX3QgdGltZXN0YW1wKTsKICAgICBib29sIHR5cGVBaGVhZEZp
bmQodW5zaWduZWQga2V5dmFsLCB1aW50MzJfdCB0aW1lc3RhbXApOwogCiAjaWYgIVVTRShHVEs0
KQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBWZWN0b3I8R1VuaXF1
ZVB0cjxHdGtUcmVlUGF0aD4+IG1fcGF0aHM7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2Vs
ZWN0ZWRJdGVtOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0ZWRJdGVtOwog
CiAgICAgLy8gVHlwZWFoZWFkIGZpbmQuCiAgICAgZ3VuaWNoYXIgbV9yZXBlYXRpbmdDaGFyYWN0
ZXIgeyAnXDAnIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKaW5kZXggNDkyYjAwNDQ0ZjQyZjg4NmZiZjhmYjk3MWZk
NDJkZWJkMWZkOWM2YS4uMjI4NzI5MjkyZGY5ZTNhYjA1YzU3MDE0YTFiYzQ1NjI3NjNhMDU3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUuaApAQCAtNTAsOCArNTAsOCBAQCBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsK
ICAgICBDR1BvaW50IGFkanVzdGVkT3JpZ2luIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1JlY3Qg
ZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcyB7IENHUmVjdFplcm8gfTsKICAg
ICBSZXRhaW5QdHI8VUlJbWFnZT4gaW1hZ2U7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dElu
ZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGF0aD4g
dmlzaWJsZVBhdGg7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YT4gaW5kaWNhdG9yRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhdGg+IHZpc2li
bGVQYXRoOwogICAgIFN0cmluZyBsaW5rVGl0bGU7CiAgICAgVVJMIGxpbmtVUkw7CiAgICAgYm9v
bCBwb3NzaWJseU5lZWRzRHJhZ1ByZXZpZXdVcGRhdGUgeyB0cnVlIH07CkBAIC0xMTEsNyArMTEx
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHJldmlld3NGb3JBY3Rp
dmVEcmFnU291cmNlcygpOwotICAgIE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJh
Z1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERy
YWdTb3VyY2VTdGF0ZT4gYWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqKSBjb25z
dDsKICAgICBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmRlZmF1bHREcm9wUHJldmlldyhVSURyYWdJ
dGVtICopIGNvbnN0OwogICAgIEJsb2NrUHRyPHZvaWQoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICop
PiBkcm9wUHJldmlld1Byb3ZpZGVyKFVJRHJhZ0l0ZW0gKik7CiAKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIEJsb2NrUHRyPHZvaWQoKT4gbV9kcmFnQ2FuY2VsU2V0RG93bkJsb2Nr
OwogICAgIEJsb2NrUHRyPHZvaWQoTlNBcnJheTxVSURyYWdJdGVtICo+ICopPiBtX2FkZERyYWdJ
dGVtQ29tcGxldGlvbkJsb2NrOwogCi0gICAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBtX3N0
YWdlZERyYWdTb3VyY2U7CisgICAgc3RkOjpvcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IG1fc3Rh
Z2VkRHJhZ1NvdXJjZTsKICAgICBWZWN0b3I8RHJhZ1NvdXJjZVN0YXRlPiBtX2FjdGl2ZURyYWdT
b3VyY2VzOwogICAgIFZlY3RvcjxJdGVtQW5kUHJldmlld1Byb3ZpZGVyPiBtX2RlbGF5ZWRJdGVt
UHJldmlld1Byb3ZpZGVyczsKICAgICBWZWN0b3I8SXRlbUFuZFByZXZpZXc+IG1fZGVmYXVsdERy
b3BQcmV2aWV3czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3
Y2RhYTdlZDRkZWZiODguLjc0MDNiMzU2ZGYyNzQxZjAxOGUzMGVhNTIxYjRlOGFlNzBhMTM5MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBib29sIGNhblVwZGF0
ZVByZXZpZXdGb3JBY3RpdmVEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNl
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGU6OmFjdGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHJhZ0l0ZW0g
Kml0ZW0pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlOjphY3RpdmVEcmFnU291cmNlRm9ySXRlbShVSURyYWdJdGVtICppdGVtKSBj
b25zdAogewogICAgIGlmICghW2l0ZW0ucHJpdmF0ZUxvY2FsQ29udGV4dCBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkNjM4
OGMwODUwMTc5ZDk2YWEzMGM3Mjc0ZTU5MGMzZWNlMTVhNTMyLi4yNmI3NDEyNmVmM2M4MDM2ZDE5
MzA4YzY3MWFiYTUwODk5YTA5YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIG1ha2VWaWV3QmxhbmsoYm9vbCkgZmluYWw7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBz
aG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRX
YXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7CkBAIC0x
NzUsOCArMTc1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGVmZmVjdGl2ZVVzZXJJbnRlcmZhY2VM
ZXZlbElzRWxldmF0ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY291bGROb3RSZXN0
b3JlUGFnZVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmLCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50Piwg
ZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3RvcmVQYWdlU3RhdGUoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFBvaW50PiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
c3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50
PiwgZG91YmxlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24mLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJs
dXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBh
Y3Rpdml0eVN0YXRlQ2hhbmdlcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVu
dCgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGhhbmRs
ZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICBib29sIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3Qg
V2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVl
c3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQg
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVx
dWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9y
bWF0aW9uRm9yUG90ZW50aWFsVGFwKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBib29sIG5vZGVJc1Jv
b3RMZXZlbCkgb3ZlcnJpZGU7CkBAIC0yNzMsNyArMjczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRkZWQpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXRE
cmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZURy
YWdDYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4
IGU0MjhkYWMwYTBiNDJmZmQ2ZDgyYzI5ZDY3YzM3NzFiNWY2NTE4ZWMuLmJhZGJlZmI2Y2NiNTYz
NGFmZWJlOGExMjZiOWE3ODlhNWIyMzdhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTU2OSw3ICs1NjksNyBAQCBDQUxheWVy
ICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGll
bnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpCitS
ZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpCiB7CiAgICAgcmV0dXJuIFttX3dlYlZpZXcg
X3Rha2VWaWV3U25hcHNob3RdOwogfQpAQCAtNjA0LDEyICs2MDQsMTIgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6Y291bGROb3RSZXN0b3JlUGFnZVN0YXRlKCkKICAgICBbbV93ZWJWaWV3IF9jb3Vs
ZE5vdFJlc3RvcmVQYWdlU3RhdGVdOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0b3Jl
UGFnZVN0YXRlKE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZs
b2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0c09uU2F2ZSwgZG91YmxlIHNjYWxlKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cmVzdG9yZVBhZ2VTdGF0ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3Jv
bGxPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0c09u
U2F2ZSwgZG91YmxlIHNjYWxlKQogewogICAgIFttX3dlYlZpZXcgX3Jlc3RvcmVQYWdlU2Nyb2xs
UG9zaXRpb246c2Nyb2xsUG9zaXRpb24gc2Nyb2xsT3JpZ2luOnNjcm9sbE9yaWdpbiBwcmV2aW91
c09ic2N1cmVkSW5zZXQ6b2JzY3VyZWRJbnNldHNPblNhdmUgc2NhbGU6c2NhbGVdOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UG9pbnQ+IGNlbnRlciwgZG91YmxlIHNjYWxlKQordm9pZCBQYWdlQ2xpZW50
SW1wbDo6cmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IGNlbnRlciwgZG91YmxlIHNjYWxlKQogewogICAgIFttX3dlYlZpZXcgX3Jlc3Rv
cmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6Y2VudGVyIHNjYWxlOnNjYWxlXTsKIH0KQEAg
LTY3Niw3ICs2NzYsNyBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVldChjb25z
dCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzaGFyZURhdGEsIFdURgogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJD
b3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0NvbnRhY3RQaWNrZXIo
Y29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0
SW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9z
aG93Q29udGFjdFBpY2tlcjpyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV07CiB9CkBAIC05MjIsNyArOTIyLDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkKICAgICBbbV9jb250ZW50VmlldyBf
d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90XTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRh
dGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChzdGQ6
Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQogewogICAgIFttX2NvbnRlbnRWaWV3
IF9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDpkYXRhXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCmluZGV4IDZhODg1
Njk1MzFhODNiMWRkNmY3MWUxMDU4MDRhZmZkMmY2N2MyNDMuLjQzYTQ3MzQ1OTAzOGY3MjBkOThh
ZjMwMTFjNDAxZTkyMTMxZjk5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaApAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tFbGVtZW50QWN0aW9uVHlwZSk7CiAKIEBwcm90b2NvbCBX
S0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUgPE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tIChP
cHRpb25hbDxXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlv
bkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgKilhc3Npc3RhbnQ7CistIChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lz
dGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudDsKIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgcGVyZm9y
bUFjdGlvbjooV2ViS2l0OjpTaGVldEFjdGlvbilhY3Rpb247CiAtICh2b2lkKWFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50
QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbjsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3Rh
bnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVS
TDooTlNVUkwgKil1cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXgg
YjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUxNjQwMzRhZDhjZjBlYWQ3YS4uMjUyN2UwZWZlNDc5YzNj
Njk1ODc3OTU1YTlkMWY0MTQ5YjcxMjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KQEAgLTk4LDcgKzk4LDcgQEAg
QGltcGxlbWVudGF0aW9uIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgewogICAgIFdlYWtPYmpDUHRy
PGlkIDxXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAgUmV0
YWluUHRyPFdLQWN0aW9uU2hlZXQ+IF9pbnRlcmFjdGlvblNoZWV0OwogICAgIFJldGFpblB0cjxf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gX2VsZW1lbnRJbmZvOwotICAgIE9wdGlvbmFsPFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+IF9wb3NpdGlvbkluZm9ybWF0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbj4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFJldGFpblB0cjxVSUNvbnRleHRNZW51SW50ZXJh
Y3Rpb24+IF9kYXRhRGV0ZWN0b3JDb250ZXh0TWVudUludGVyYWN0aW9uOwpAQCAtMzMzLDcgKzMz
Myw3IEBAIC0gKHZvaWQpaW50ZXJhY3Rpb25EaWRTdGFydFdpdGhQb3NpdGlvbkluZm9ybWF0aW9u
Oihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mCiAjZW5kaWYKIH0KIAotLSAoT3B0aW9uYWw8
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4pY3VycmVudFBvc2l0aW9u
SW5mb3JtYXRpb24KKy0gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbj4pY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KIHsKICAgICByZXR1cm4g
X3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggN2M3ZjU4OGQyMDBhZWNh
NmVmNGQxNGE2YmU1M2I5NjZkOTlmNDQzOS4uYWViNDQ0MjkwZGI2NzY1Mjg4M2RhMDBlNTUzZmZh
MWM2ZTQ3OWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMjk4LDcgKzI5OCw3IEBAIHVzaW5nIEltYWdl
RXh0cmFjdGlvblJlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUV4dHJh
Y3Rpb25SZXF1ZXN0CiAjaWYgSEFWRShVSV9QT0lOVEVSX0lOVEVSQUNUSU9OKQogICAgIFJldGFp
blB0cjxVSVBvaW50ZXJJbnRlcmFjdGlvbj4gX3BvaW50ZXJJbnRlcmFjdGlvbjsKICAgICBCT09M
IF9oYXNPdXRzdGFuZGluZ1BvaW50ZXJJbnRlcmFjdGlvblJlcXVlc3Q7Ci0gICAgT3B0aW9uYWw8
c3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEJsb2NrUHRy
PHZvaWQoVUlQb2ludGVyUmVnaW9uICopPj4+IF9kZWZlcnJlZFBvaW50ZXJJbnRlcmFjdGlvblJl
cXVlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8V2ViS2l0OjpJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCwgQmxvY2tQdHI8dm9pZChVSVBvaW50ZXJSZWdpb24gKik+Pj4gX2Rl
ZmVycmVkUG9pbnRlckludGVyYWN0aW9uUmVxdWVzdDsKICNlbmRpZgogCiAgICAgUmV0YWluUHRy
PFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ7
CkBAIC0zODIsMTAgKzM4MiwxMCBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAogICAgIFdlYktp
dDo6V0tTZWxlY3Rpb25EcmF3aW5nSW5mbyBfbGFzdFNlbGVjdGlvbkRyYXdpbmdJbmZvOwogICAg
IFJldGFpblB0cjxXS1RleHRSYW5nZT4gX2NhY2hlZFNlbGVjdGVkVGV4dFJhbmdlOwogCi0gICAg
T3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdD4gX2xhc3RPdXRz
dGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdD4gX2xhc3RPdXRzdGFuZGluZ1Bvc2l0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0OwogCiAgICAgdWludDY0X3QgX3Bvc2l0aW9uSW5mb3JtYXRp
b25DYWxsYmFja0RlcHRoOwotICAgIFZlY3RvcjxPcHRpb25hbDxJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdEFuZENhbGxiYWNrPj4gX3BlbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uSGFuZGxl
cnM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3RBbmRDYWxsYmFjaz4+IF9wZW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvbkhhbmRsZXJzOwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPiBf
aW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI7CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB1c2luZyBJbWFn
ZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VFeHRy
YWN0aW9uUmVxdWVzdAogCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxD
b250ZXh0Rm9yU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOwogCi0gICAgT3B0aW9uYWw8VUNoYXIz
Mj4gX2xhc3RJbnNlcnRlZENoYXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rp
b247CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9P
dmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUgX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTsKQEAgLTQ4Niw4ICs0ODYsOCBAQCB1c2luZyBJbWFnZUV4dHJhY3Rpb25SZXF1
ZXN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdAog
I2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogICAgIFJldGFpblB0cjxXS0ltYWdlRXh0cmFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyPiBfaW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI7
CiAgICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9pbWFnZUV4dHJh
Y3Rpb25UaW1lb3V0R2VzdHVyZVJlY29nbml6ZXI7Ci0gICAgT3B0aW9uYWw8V2ViS2l0OjpJbWFn
ZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25SZXF1
ZXN0SWRlbnRpZmllcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gX2Vs
ZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJ
bWFnZUV4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcj4gX3BlbmRpbmdJbWFnZUV4dHJhY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0PiBfZWxlbWVudFBlbmRpbmdJbWFnZUV4dHJhY3Rpb247CiAgICAgVmVjdG9yPEJsb2NrUHRy
PHZvaWQoV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbik+PiBfYWN0aW9uc1RvUGVy
Zm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjsKICNpZiBVU0UoVUlDT05URVhUTUVOVSkK
ICAgICBSZXRhaW5QdHI8VUlNZW51PiBfaW1hZ2VFeHRyYWN0aW9uQ29udGV4dE1lbnU7CkBAIC02
MDcsNyArNjA3LDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNM
QVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpX3Nob3dQbGF5
YmFja1RhcmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpZWxlbWVudFJlY3Qgcm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3kpcG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOihOU1N0cmluZyAqKWNvbnRleHRV
SUQ7CiAtICh2b2lkKV9zaG93UnVuT3BlblBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMq
KXBhcmFtZXRlcnMgZnJhbWVJbmZvOihjb25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmKWZyYW1l
SW5mbyByZXN1bHRMaXN0ZW5lcjooV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5KilsaXN0ZW5lcjsKIC0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJilzaGFyZURhdGEgaW5SZWN0OihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfc2hvd0Nv
bnRhY3RQaWNrZXI6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3RE
YXRhIGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpY29tcGxldGlvbkhhbmRsZXI7
CistICh2b2lkKV9zaG93Q29udGFjdFBpY2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1
ZXN0RGF0YSYpcmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWZpbGVQaWNr
ZXJBY2NlcHRlZFR5cGVJZGVudGlmaWVyczsKIC0gKHZvaWQpZGlzbWlzc0ZpbGVQaWNrZXI7CiAt
ICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50IGV2ZW50V2FzSGFu
ZGxlZDooQk9PTClldmVudFdhc0hhbmRsZWQ7CkBAIC02NjUsNyArNjY1LDcgQEAgRk9SX0VBQ0hf
UFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpX2RpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1
ZXN0OihCT09MKWFkZGVkOwogLSAodm9pZClfc3RhcnREcmFnOihSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4paW1hZ2UgaXRlbTooY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mKWl0ZW07CiAtICh2b2lkKV93
aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3Q7Ci0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdT
bmFwc2hvdDooT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CistICh2
b2lkKV9kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YT4pZGF0YTsKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdDYXJldFJlY3Q6
KENHUmVjdClwcmV2aW91c1JlY3QgY3VycmVudFJlY3Q6KENHUmVjdClyZWN0OwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDQ0NTczNDA0ZGNkMGJlNzNmYmI4ZWUwODI0NTJmNTIzZDAwNGNh
OTcuLmE4NGU4ZDY5NWE4ZmUxMjg1YjMyZWU4OGExMmRkNjIzOTM0NDlkNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClzaGFyZVNoZWV0OihXS1NoYXJlU2hl
ZXQgKilzaGFyZVNoZWV0IHdpbGxTaG93QWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWEKIAogI2Vu
ZGlmCiAKLS0gKHZvaWQpX3Nob3dDb250YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpDb250YWN0
c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYp
PiYmKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9zaG93Q29udGFjdFBpY2tlcjooY29uc3Qg
V2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYpcmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRs
ZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgSEFWRShD
T05UQUNUU1VJKQogICAgIF9jb250YWN0UGlja2VyID0gYWRvcHROUyhbW1dLQ29udGFjdFBpY2tl
ciBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGYud2ViVmlld10pOwpAQCAtNzQwMCw3ICs3NDAwLDcg
QEAgLSAoQk9PTClpc0FueVRvdWNoT3ZlckFjdGl2ZUFyZWE6KE5TU2V0ICopdG91Y2hlcwogCiAj
cHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVs
ZWdhdGUuCiAKLS0gKE9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24+KXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rp
b25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudAorLSAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uPilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsK
ICAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QoX3Bvc2l0
aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CiAgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNo
b3QgPSB0cnVlOwpAQCAtODAxNyw3ICs4MDE3LDcgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5k
R2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8K
ICAgICAgICAgKm91dEdsb2JhbFBvaW50ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1z
dGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlv
bihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgVUlE
cm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKICAgICBpZiAob3Bl
cmF0aW9uKSB7CiAgICAgICAgIGlmICgqb3BlcmF0aW9uID09IFdlYkNvcmU6OkRyYWdPcGVyYXRp
b246Ok1vdmUpCkBAIC04MDI4LDcgKzgwMjgsNyBAQCBzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRy
b3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcgog
ICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5jZWw7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlv
bihVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9u
KFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uKQogewogICAgIHN3aXRjaCAoZHJvcE9wZXJh
dGlvbikgewogICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgpAQCAtODExMiw3ICs4MTEy
LDcgQEAgLSAodm9pZClfd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90CiAgICAgX3dhaXRpbmdG
b3JFZGl0RHJhZ1NuYXBzaG90ID0gWUVTOwogfQogCi0tICh2b2lkKV9kaWRSZWNlaXZlRWRpdERy
YWdTbmFwc2hvdDooT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGEKKy0g
KHZvaWQpX2RpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCiB7CiAgICAgX3dhaXRpbmdGb3JFZGl0RHJhZ1NuYXBz
aG90ID0gTk87CiAKQEAgLTgxMjMsNyArODEyMyw3IEBAIC0gKHZvaWQpX2RpZFJlY2VpdmVFZGl0
RHJhZ1NuYXBzaG90OihPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQog
ICAgICAgICBhY3Rpb24oKTsKIH0KIAotLSAodm9pZClfZGVsaXZlckRlbGF5ZWREcm9wUHJldmll
d0lmUG9zc2libGU6KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhCist
ICh2b2lkKV9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTooc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pZGF0YQogewogICAgIGlmICghX3Zpc2libGVD
b250ZW50Vmlld1NuYXBzaG90KQogICAgICAgICByZXR1cm47CkBAIC04NTgzLDcgKzg1ODMsNyBA
QCAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCB3aXRoQ29udGV4
dFJlcXVlc3Q6KFVJV0tEb2N1bWVudFJlcQogCiAtICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRl
cldpdGhTaXplOihDR1NpemUpc2l6ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlUZXh0
UGxhY2Vob2xkZXIgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0PiYgcGxhY2Vob2xkZXIpIHsKKyAgICBfcGFnZS0+aW5zZXJ0VGV4dFBsYWNlaG9sZGVy
KFdlYkNvcmU6OkludFNpemUgeyBzaXplIH0sIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29u
dGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+
JiBwbGFjZWhvbGRlcikgewogICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQo
KTsKICAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8ICFbc3Ryb25nU2VsZiB3ZWJWaWV3XSB8fCAh
cGxhY2Vob2xkZXIpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5tbQppbmRleCA3YjY1MDVmYTc4ZTY2MzE0Njc5ZDQ4ZjY2ZWMyZDkwZGFkNzE0
NGMzLi4zOTI3ZTJjY2QxY2ExMTViMDA2ZTY2MTI1NDMwMTFkYmU2ZDg3ODY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IubW0KQEAgLTk3LDcgKzk3LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvciB7CiAgICAgaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlSW50ZXJuYWw+
IF9zY3JvbGxhYmxlOwogICAgIFJldGFpblB0cjxDQURpc3BsYXlMaW5rPiBfZGlzcGxheUxpbms7
CiAKLSAgICBPcHRpb25hbDxXZWJLaXQ6OktleWJvYXJkU2Nyb2xsPiBfY3VycmVudFNjcm9sbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRTY3JvbGw+IF9jdXJyZW50U2Nyb2xs
OwogCiAgICAgQk9PTCBfc2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZDsKIApAQCAtMTc3LDcg
KzE3Nyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpCb3hTaWRlIGJveFNpZGUoV2ViS2l0OjpTY3JvbGxp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIH0KIH0KIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpL
ZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50
CistIChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xs
Rm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQppbmRleCAyODFjMmZjOGEwZDA5
ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRkNTdhLi45NDg0MzlhN2MyYTY1MGNjMzlhMzdhYWY3ZWEy
NDdhMmFkZjM2MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTY5LDggKzY5LDggQEAgQGltcGxlbWVu
dGF0aW9uIFdLTW91c2VHZXN0dXJlUmVjb2duaXplciB7CiAgICAgQk9PTCBfdG91Y2hpbmc7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50PiBfbGFzdEV2
ZW50OwotICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9sYXN0TG9jYXRpb247Ci0gICAgT3B0aW9uYWw8
VUlFdmVudEJ1dHRvbk1hc2s+IF9wcmVzc2VkQnV0dG9uTWFzazsKKyAgICBzdGQ6Om9wdGlvbmFs
PENHUG9pbnQ+IF9sYXN0TG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxVSUV2ZW50QnV0dG9u
TWFzaz4gX3ByZXNzZWRCdXR0b25NYXNrOwogfQogCiAtICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wp
ZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggZDAx
MDJiYzhlNjQ4MWYyNDQ1NjUyYWI2Mjg4NTcxNDQwMTE5N2E4Ny4uYjllNTBhOWMzMjgzY2U3YWZk
MTMxOTU4ZWY2ZDBkYWNjMWE0MDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tCkBAIC02MSw3ICs2MSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcgewog
ICAgIE5TVUludGVnZXIgX2ZpbmRTdHJpbmdDb3VudDsKICAgICBOU1VJbnRlZ2VyIF9maW5kU3Ry
aW5nTWF4Q291bnQ7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gX2ZpeGVkT3ZlcmxheVZpZXc7Ci0g
ICAgT3B0aW9uYWw8TlNVSW50ZWdlcj4gX2ZvY3VzZWRTZWFyY2hSZXN1bHRJbmRleDsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5TVUludGVnZXI+IF9mb2N1c2VkU2VhcmNoUmVzdWx0SW5kZXg7CiAgICAg
TlNJbnRlZ2VyIF9mb2N1c2VkU2VhcmNoUmVzdWx0UGVuZGluZ09mZnNldDsKICAgICBSZXRhaW5Q
dHI8UERGSG9zdFZpZXdDb250cm9sbGVyPiBfaG9zdFZpZXdDb250cm9sbGVyOwogICAgIENHU2l6
ZSBfb3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0OwpAQCAtNTE4LDcgKzUxOCw3IEBAIC0gKHZv
aWQpcGRmSG9zdFZpZXdDb250cm9sbGVyRXh0ZW5zaW9uUHJvY2Vzc0RpZENyYXNoOihQREZIb3N0
Vmlld0NvbnRyb2xsZXIgKiljCiAKICNwcmFnbWEgbWFyayBXS0FjdGlvblNoZWV0QXNzaXN0YW50
RGVsZWdhdGUKIAotLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbj4pcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CistIChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JB
Y3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudAog
ewogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkuaAppbmRleCBkZGI2YzBjZmFmOGNlMzA2YjQyODM5MGU1M2Nm
ZmRlZjlkY2RhZTMzLi43MGIxZjk0YTc2OWFlN2NmMmMwMDg3NzdiNzI4ODUwZDA1MjVmYjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6V2ViQ29yZU1vdGlvbk1hbmFn
ZXJDbGllbnQKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUsIGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBtb3Rpb25DaGFuZ2VkKGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIE9wdGlvbmFsPGRvdWJs
ZT4sIE9wdGlvbmFsPGRvdWJsZT4sIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQg
bW90aW9uQ2hhbmdlZChkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgc3RkOjpv
cHRpb25hbDxkb3VibGU+KSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tCmlu
ZGV4IDJjNjA3M2I3YjQ1YjI4M2VkN2FmYmQ5MjI4NjFhNGM4YzczOWYxZjUuLjEzNjc3NjNhNGM2
NTkyNzRiM2QwNTUwMGQxYmI2NDExMzVmOTM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tbQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eTo6b3JpZW50YXRpb25DaGFuZ2VkKGRvdWJsZSBhbHBo
YSwgZAogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyOjpEZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQoYWxwaGEsIGJldGEsIGdhbW1hLCBj
b21wYXNzSGVhZGluZywgY29tcGFzc0FjY3VyYWN5KSk7CiB9CiAKLXZvaWQgV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Ojptb3Rpb25DaGFuZ2VkKGRvdWJsZSB4QWNjZWxl
cmF0aW9uLCBkb3VibGUgeUFjY2VsZXJhdGlvbiwgZG91YmxlIHpBY2NlbGVyYXRpb24sIGRvdWJs
ZSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHlBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5LCBkb3VibGUgekFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIE9wdGlv
bmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRl
LCBPcHRpb25hbDxkb3VibGU+IHpSb3RhdGlvblJhdGUpCit2b2lkIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eTo6bW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlv
biwgZG91YmxlIHlBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHlSb3RhdGlv
blJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25SYXRlKQogewogICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOjpEZXZp
Y2VNb3Rpb25DaGFuZ2VkKHhBY2NlbGVyYXRpb24sIHlBY2NlbGVyYXRpb24sIHpBY2NlbGVyYXRp
b24sIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwgekFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIHhSb3RhdGlvblJhdGUsIHlS
b3RhdGlvblJhdGUsIHpSb3RhdGlvblJhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDgxMGJlMTdjMWM5NmQ2OWMyZTQ5ZTll
MzdhOGFmOWU5NmZlNjRjN2UuLjIwZjIwMzNmOWQ3NDFlNzE1YTRiYzNjZTE0ZjIwZGE5NGVjMjc4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJv
bVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+
JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gY2FsbGJhY2soeyB9KTsKQEAgLTMxOCw3ICsz
MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBk
ZXZpY2VPcmllbnRhdGlvbikKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYg
dmlld3BvcnRBcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3Bv
cnRBcmd1bWVudHMpCiB7CiAgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRzID09IG1fb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXBsYWNlU2VsZWN0ZWRUZXh0KG9sZFRleHQsIG5ld1RleHQpLCBtX3dlYlBhZ2VJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxFbGVtZW50
Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNl
cnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtODYwLDEyICs4NjAsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvdWxkTm90UmVzdG9yZVBhZ2VTdGF0ZSgpCiAgICAgcGFnZUNsaWVudCgpLmNvdWxkTm90
UmVzdG9yZVBhZ2VTdGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVBhZ2VT
dGF0ZShPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJv
eEV4dGVudCYgb2JzY3VyZWRJbnNldHNPblNhdmUsIGRvdWJsZSBzY2FsZSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN0b3JlUGFnZVN0YXRlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2lu
dD4gc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbE9yaWdp
biwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzT25TYXZlLCBk
b3VibGUgc2NhbGUpCiB7CiAgICAgcGFnZUNsaWVudCgpLnJlc3RvcmVQYWdlU3RhdGUoc2Nyb2xs
UG9zaXRpb24sIHNjcm9sbE9yaWdpbiwgb2JzY3VyZWRJbnNldHNPblNhdmUsIHNjYWxlKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRQb2ludD4gY2VudGVyLCBkb3VibGUgc2NhbGUpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UG9pbnQ+IGNlbnRlciwgZG91YmxlIHNjYWxlKQogewogICAgIHBhZ2VDbGllbnQoKS5yZXN0
b3JlUGFnZUNlbnRlckFuZFNjYWxlKGNlbnRlciwgc2NhbGUpOwogfQpAQCAtMTE4Nyw3ICsxMTg3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vz
c2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG8KICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhv
bGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VT
aXplcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJz
KGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMjAwLDcgKzEy
MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCkK
ICAgICBwYWdlQ2xpZW50KCkud2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxUZXh0
SW5kaWNhdG9yRGF0YT4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRWRpdERy
YWdTbmFwc2hvdChzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQogewogICAg
IHBhZ2VDbGllbnQoKS5kaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChkYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3Lm1tCmluZGV4IDQ3ZjA0NTkzM2ZkMTY3NWJjYTViMjkwZmJjOWEwMjNm
YzgzOGUyNmIuLmZhMDQxNmI3NTU0MTg2Y2Q3NmM1ODU4NWYzYmI0MjI0MWM3NDFlZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29u
dHJvbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9j
dXNlZEZvcm1Db250cm9sVmlldy5tbQpAQCAtNzgsNyArNzgsNyBAQCBAaW1wbGVtZW50YXRpb24g
V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3RGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBfc3VibWl0QWN0aW9uTmFtZTsKICAgICBSZXRhaW5QdHI8UFVJQ0Nyb3duSW5wdXRTZXF1
ZW5jZXI+IF9jcm93bklucHV0U2VxdWVuY2VyOwotICAgIE9wdGlvbmFsPENHUG9pbnQ+IF9pbml0
aWFsU2Nyb2xsVmlld0NvbnRlbnRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDxDR1BvaW50PiBf
aW5pdGlhbFNjcm9sbFZpZXdDb250ZW50T2Zmc2V0OwogICAgIEJPT0wgX2hhc1BlbmRpbmdGb2N1
c1JlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpYndw
ZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKaW5kZXggOWE1NzZhMmM5NmJiNTlm
ZjlkMGIzYjk5MjM5Y2VkNTUyZjU4YzdmOC4uMDZjYzlhNmExNzRhMTMzMjNlNWQ1YTRlODY2OTQ0
MGNlNjIxZmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlid3BlL1dl
YlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bGlid3BlL1dlYlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmcKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3Rl
Ym9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYsIHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoSVBDOjpD
b25uZWN0aW9uJiwgc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVi
b2FyZFR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9E
aXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsu
Y3BwCmluZGV4IDBlN2Q0OTQxMGNkNjcxOWQ0MmYwMTE3ODJjYWRhZThlMGU0ZjE2NDUuLjk3MTM0
NDk2ZjYxNzE0ZjRhNDEwYzlkM2JhOWM4NDg0MzNjMzJhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRGlz
cGxheUxpbms6Om5vdGlmeU9ic2VydmVyc0Rpc3BsYXlXYXNSZWZyZXNoZWQoKQogICAgIExvY2tl
ciBsb2NrZXIgeyBtX29ic2VydmVyc0xvY2sgfTsKIAogICAgIGF1dG8gbWF4RnJhbWVzUGVyU2Vj
b25kID0gW10oY29uc3QgVmVjdG9yPE9ic2VydmVySW5mbz4mIG9ic2VydmVycykgewotICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1Bl
clNlY29uZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+
IG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBv
YnNlcnZlciA6IG9ic2VydmVycykKICAgICAgICAgICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNl
Y29uZCA9IHN0ZDo6bWF4KG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwg
b2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKICAgICAgICAgcmV0dXJuIG9ic2Vy
dmVyc01heEZyYW1lc1BlclNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggZWFkYWQ0ZThmYTMz
NjY1ODQ3ZTE3MmZmNWU5MmMwZTQ2YjlhMTU2MS4uMmVhN2VkYjRjNWJhYWRmOTY3MDZmZmIxZjI3
MjViNjljNWY1MmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRv
cj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1
dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXIm
Pjo6dHlwZQogICAgIHsKICAgICAgICAgdWludDMyX3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAg
ICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1WYWx1ZTsKQEAgLTc5OCw3ICs3OTgsNyBAQCBw
cml2YXRlOgogCiBzdGF0aWMgdm9pZCBkZWNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5
RGF0YURlY29kZXImIGRlY29kZXIsIEhUVFBCb2R5OjpFbGVtZW50JiBmb3JtRGF0YUVsZW1lbnQp
CiB7Ci0gICAgT3B0aW9uYWw8Rm9ybURhdGFFbGVtZW50VHlwZT4gZWxlbWVudFR5cGU7CisgICAg
c3RkOjpvcHRpb25hbDxGb3JtRGF0YUVsZW1lbnRUeXBlPiBlbGVtZW50VHlwZTsKICAgICBkZWNv
ZGVyID4+IGVsZW1lbnRUeXBlOwogICAgIGlmICghZWxlbWVudFR5cGUpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
aW5kZXggOWQ0YTAxMzE0ODk0M2Y5YmQzOWFiN2Q3MmQyODNjMDM4ZDM0YzM1My4uODk0NDJjZDky
MzMyNjRkMDliZTBlMzgwY2M2NjAxM2YzZGQ5MjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2hlZWxFdmVudFdh
c05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRl
OwogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCiAgICAgdm9pZCBnZXN0dXJlRXZlbnRX
YXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCmluZGV4IDMzNjQyYzJmMzUyM2Y2YTBjYWZhMTM3MzNkY2E2OTdlNGM1NTJkNDYuLmM0YzA1
NGZkNWRiM2Y3YWM4NzhmOThkMzFlZDk5MmY0NThhMDEyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTYyNSw3ICs2MjUsNyBA
QCBDQUxheWVyICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cigpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RM
YXllcigpOwogfQogCi1SZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZp
ZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKQorUmVmUHRyPFZpZXdTbmFw
c2hvdD4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3Qoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKQogewogICAgIHJldHVybiBtX2ltcGwtPnRha2VWaWV3U25hcHNob3Qo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hp
bVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5
LmNwcAppbmRleCA0OTQxOTA4NThiN2I0NzliZmE3OWQ5MzAxYmYzYWE5MDIwN2M4MjNjLi5hZjhi
ZDlhZDYyYTllYjM3NzY4OWY0NjYyMmY5NzYxZGMzOTFjNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24uYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpTZWNJdGVtU2hpbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cXVldWUuZ2V0KCksIHRoaXMpOwogfQogCi12b2lkIFNlY0l0ZW1TaGltUHJveHk6OnNlY0l0ZW1S
ZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYmKT4mJiByZXNwb25zZSkKK3Zv
aWQgU2VjSXRlbVNoaW1Qcm94eTo6c2VjSXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJlcXVlc3RE
YXRhJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VjSXRl
bVJlc3BvbnNlRGF0YT4mJik+JiYgcmVzcG9uc2UpCiB7CiAgICAgc3dpdGNoIChyZXF1ZXN0LnR5
cGUoKSkgewogICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgpAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIFNlY0l0ZW1TaGltUHJveHk6OnNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0
ZW1SZXF1ZXN0RGF0YSYgcmVxdWVzdCwgQ29tcGxldAogICAgIH0KIH0KIAotdm9pZCBTZWNJdGVt
U2hpbVByb3h5OjpzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiBk
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZWNJdGVtU2hpbVByb3h5OjpzZWNJdGVt
UmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiBkYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgc2VjSXRlbVJlcXVlc3QoZGF0YSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1NlY0l0ZW1TaGltUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVt
U2hpbVByb3h5LmgKaW5kZXggODFlNDIxYzZhYzk0MDE5NGI3MWIxYzliOTc4MzBhMzg1M2UzYTgy
Ni4uYjQ2YjU4OWFlMDNjMmRmNzVjOWI1ZDk5M2MzYjE0Nzc3MjkxN2Q4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5oCkBAIC00OSw4ICs0OSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZWNJdGVtUmVxdWVzdChjb25zdCBTZWNJdGVtUmVx
dWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25z
ZURhdGE+JiYpPiYmKTsKLSAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0U3luYyhjb25zdCBTZWNJdGVt
UmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFNlY0l0ZW1SZXNw
b25zZURhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1S
ZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZWNJdGVt
UmVzcG9uc2VEYXRhPiYmKT4mJik7CisgICAgdm9pZCBzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3Qg
U2VjSXRlbVJlcXVlc3REYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFNlY0l0ZW1SZXNwb25zZURhdGE+JiYpPiYmKTsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVl
dWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1T
aGltUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAwZmI1NzA5OGM0NzViNGRhZGNlYTJmN2JkY2Rl
MWMxYjgzOWNjOWNlLi5kOTc1NmEzMDllYjE4NGIzYWYwNGRhNzQxM2Q1NTNhZTUwMzE2ZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Q
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogbWVzc2FnZXMgLT4gU2VjSXRlbVNo
aW1Qcm94eSB7CiAKICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJTSkKLSAgICBTZWNJdGVtUmVxdWVz
dFN5bmMoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlvbmFsPFdl
YktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCi0gICAgU2Vj
SXRlbVJlcXVlc3QoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKE9wdGlv
bmFsPFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UpIEFzeW5jCisgICAgU2Vj
SXRlbVJlcXVlc3RTeW5jKFdlYktpdDo6U2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3QpIC0+IChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2UpIFN5bmNo
cm9ub3VzCisgICAgU2VjSXRlbVJlcXVlc3QoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVx
dWVzdCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VEYXRhPiByZXNw
b25zZSkgQXN5bmMKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IGQ1ZDljODA0OGM0NzUxODBi
MjVmMWUyYTMxYTVlODdkNmM1YzhkYTAuLjMyM2JkMzU5N2Y0OTQ2ZWI3MWUwNDYyZDE5NzIyZWFl
NWJhYjA3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnUKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gcmV2ZWFsSW1hZ2VJdGVtOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4gcmV2ZWFsSW1hZ2VJdGVtOwogCiAjaWYgRU5BQkxFKElNQUdFX0VYVFJB
Q1RJT04pCiAgICAgZmlsdGVyZWRJdGVtcy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoYXV0byYg
aXRlbSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggMjE3ZTlkY2Y4MDk0MmY3MmY5YzYyOTY0YjUxMmY2ZDM5YmM0ZTRmNi4uNjU3ZWM0
MDJjYmQxNTA3NWIxZjgyNDRiOTM4MzQ4ZmViY2EzOWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC01MTIsNyArNTEyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKEZyYW1lSW5mb0RhdGEKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4p
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERG
Q29udGV4dE1lbnUmIGNvbnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdl
YktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxpbnQzMl90PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Lml0ZW1zLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4
IDc5ZDA1YWE5MTkwYWVjMDM2YzUyOTU1MWY4MDdmNmE5Y2Q4ODg2MDEuLmRjZWE5YzFkY2VkMWQx
NDBmYTAxYTg1ZGU4OWJmZmRkN2Y1YjU3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAg
c2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1l
c3NhZ2UmJikgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3Rh
dGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBz
dGF0ZSkKIHsKICAgICBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSku
c2V0SW5wdXRNZXRob2RTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNwcAppbmRleCBkMmUwZTk5MjUy
MTQ2ZjY0NDE5MjQzYWYyMWYwOTNkZWFlNDk5NzFiLi5iMzU1ODVmYjU4NjFiNTkyNDM2Mjc3ZGYy
NDRkMTEyNGYwMDYwMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRoblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNz
L1dlYkF1dGhuUHJvY2Vzcy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViQXV0aG5Qcm9jZXNzOjp+
V2ViQXV0aG5Qcm9jZXNzKCkKIHsKIH0KIAotdm9pZCBXZWJBdXRoblByb2Nlc3M6OmNyZWF0ZVdl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dGhuUHJvY2Vzczo6Y3JlYXRlV2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaXBjQ29ubmVjdGlvbiA9IGNyZWF0ZUlQQ0Nv
bm5lY3Rpb25QYWlyKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5oCmluZGV4IGVlMWVkZmM1MDdi
MjQzNjQzNTczNDNkM2I1Y2I3Nzk0ODI3ZjE1NTAuLjVhYzlmYzgyOWE1YzA0NGFiZTZjOGNjMzYz
N2M2NjdmYTI5YTQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNz
L1dlYkF1dGhuUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuUHJvY2Vzcy5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNz
YWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplV2ViQXV0aG5Qcm9jZXNzKFdlYkF1dGhu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGNyZWF0ZVdlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lk
IGNyZWF0ZVdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNo
bWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3Vu
ZCgpOwogICAgIHZvaWQgcHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA5YTA5MjEyNTJiZmM4OGY3YWViNzM2MTk0YmViZTZiZDI2MDc0YWEz
Li4yNjc3Y2FmODNmNmU0Y2NmZjY1ZTVhN2ExYmU5NmE5MDEwMGQ1ZTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dGhuUHJvY2VzcyB7CiAg
ICAgSW5pdGlhbGl6ZVdlYkF1dGhuUHJvY2VzcyhzdHJ1Y3QgV2ViS2l0OjpXZWJBdXRoblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMg
Q3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MK
LSAgICBDcmVhdGVXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1l
bnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYworICAgIENyZWF0ZVdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRp
ZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRp
ZmllcikgQXN5bmMKIAogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKICAg
ICBQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CmluZGV4IGE0YjNmYzU0YmUwY2YxNWZlNWMyOWY0YjEwNDRiZGU2MTE2ZWEyNjEuLmNlYzIzNGFm
YTI4MTgyNWVkYzlmOTExZjE4YTE1NDkzNDM0MzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpuZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25DbG9zZWQoKQogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gV2Vi
UGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcm
IHBheW1lbnROZXR3b3JrKQorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGlu
YXRvcjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29y
aykKIHsKICAgICBpZiAoIW1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzKQogICAgICAgICBtX2F2
YWlsYWJsZVBheW1lbnROZXR3b3JrcyA9IHBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtz
KCk7CkBAIC0xMTMsMzEgKzExMywzMSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRTZXNzaW9uKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYgdXBkYXRlKQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmIHVwZGF0ZSkK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVwZGF0ZSkpKTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmIHVwZGF0ZSkK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmIHVwZGF0ZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6Q29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKSk7
CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYm
IHVwZGF0ZSkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RV
cGRhdGU+JiYgdXBkYXRlKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUp
KSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCiAKLXZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdl
KE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYgdXBk
YXRlKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1v
ZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlPiYmIHVwZGF0ZSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Q29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShXVEZNb3ZlKHVwZGF0
ZSkpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9E
RSkKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24o
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQor
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJiByZXN1bHQpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRl
UGF5bWVudFNlc3Npb24ocmVzdWx0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggNTNmMWQ4
MjAwZDA3Mzk0MGQ3NjI3YTA3ZWZjOTJlNzE3Njg1M2FjNy4uYzgxZjJiNGM0ZTUxNWJkZWYwMTMy
YjJiMTcxMTlkZjUyYTFkNjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTksMTkgKzU5LDE5
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRh
dGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5N
YWtlUGF5bWVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3Rp
dmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBvdmVycmlkZTsKICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJD
b3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQ
YXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBw
aW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9k
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXltZW50TWV0aG9kVXBk
YXRlPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01P
REUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIG92ZXJyaWRlOwogI2VuZGlm
IC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2FuY2VsUGF5bWVudFNlc3Npb24oKSBvdmVycmlkZTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCi0gICAgT3B0aW9uYWw8QXZhaWxhYmxl
UGF5bWVudE5ldHdvcmtzU2V0PiBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3JrczsKKyAgICBzdGQ6
Om9wdGlvbmFsPEF2YWlsYWJsZVBheW1lbnROZXR3b3Jrc1NldD4gbV9hdmFpbGFibGVQYXltZW50
TmV0d29ya3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKaW5kZXggMTNmYzU2NTRiYTM5NmM5MTJkNTkzYzU2OTdkOTIwNzUxZDQ4
MjNlYy4uYWZkY2UzZTdjYzAyZDI4Njc0MDliOTY3ZWZhNWUwZmI5ZmYxNmYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJv
clR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gb3B0aW9uYWxGcmFtZUlELCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxp
Y2l0Q2FsbGJhY2tBcmd1bWVudCwgT3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9wdGlvbmFsRnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjYWxsYmFj
a1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsK
QEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbgogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxs
YmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
V2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsK
ICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlk
ZW50aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJh
bWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hp
bGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5k
bGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkgewpAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdl
SWRlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50
LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBA
IC01MzgsNyArNTM4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0
aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RW
aWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+LCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBw
YWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICgh
cGFnZSkgewpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAg
V2ViQ29yZTo6RnJhbWVWaWV3KiBtYWluVmlldyA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bWFpbkZy
YW1lKCkudmlldygpOwogCiAgICAgV2ViQ29yZTo6SW50UmVjdCByZXN1bHRFbGVtZW50Qm91bmRz
OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50ZXJQb2lu
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiByZXN1bHRJblZpZXdDZW50
ZXJQb2ludDsKICAgICBib29sIGlzT2JzY3VyZWQgPSBmYWxzZTsKIAogICAgIHN3aXRjaCAoY29v
cmRpbmF0ZVN5c3RlbSkgewpAQCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91
bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc5
LDcgKzc3OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9u
RWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpz
ZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIFZlY3RvcjxTdHJpbmc+JiYgZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVjdG9yPFN0cmluZz4mJiBmaWxlbmFtZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtODQxLDkgKzg0MSw5IEBA
IHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90
KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlw
VG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90
KHBhZ2VJRCwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xp
cFRvVmlld3BvcnQsIFtwYWdlSUQsIGZyYW1lSUQsIGNhbGxiYWNrSURdIChPcHRpb25hbDxTdHJp
bmc+IGVycm9yU3RyaW5nLCBXZWJDb3JlOjpJbnRSZWN0JiYgcmVjdCkgeworICAgIHNuYXBzaG90
UmVjdEZvclNjcmVlbnNob3QocGFnZUlELCBmcmFtZUlELCBub2RlSGFuZGxlLCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3cG9ydCwgW3BhZ2VJRCwgZnJhbWVJRCwgY2FsbGJhY2tJ
RF0gKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclN0cmluZywgV2ViQ29yZTo6SW50UmVjdCYm
IHJlY3QpIHsKICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgICAg
ICBpZiAoZXJyb3JTdHJpbmcpIHsKICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsICplcnJvclN0cmlu
ZyksIDApOwpAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPCiAgICAg
fSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c25hcHNob3RSZWN0Rm9y
U2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Ny
b2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RG
b3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MTIs
NyArOTEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RG
b3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQsIFdlYkNvcmU6OkludFJlY3QoZnJhbWUtPmNvcmVGcmFtZSgpLT5tYWlu
RnJhbWUoKS52aWV3KCktPmRvY3VtZW50VG9DbGllbnRSZWN0KHNuYXBzaG90UmVjdCkpKTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQog
Ci12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgY29v
a2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggYzU5ZTI0NzQ0ZTVhZGVjNjg0OGQ5ZmFjMmExYjc2YWYw
ZjgwZWIxZC4uMDFiMWM0MjkyNzkwZDAyNzRiMDliNGMyYjFmMGY2NjRkZTRkOGVhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtNzAsMTggKzcwLDE4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
IG1lc3NhZ2VzCi0gICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJ
bXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIE9wdGlvbmFsPGRvdWJsZT4gY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9y
ZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOwotICAg
IHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiBu
b2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGls
ZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
Pik+JiYpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBub2RlSGFu
ZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRp
b25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJik7Ci0gICAgdm9pZCBzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9h
ZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIFZlY3RvcjxTdHJpbmc+JiYgZmlsZW5hbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VT
Y3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCYmKT4mJik7Ci0gICAg
dm9pZCBnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRz
LCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCB1aW50MzJfdCBvcmRpbmFsLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4pPiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJik7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExh
eW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4sIGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
U3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxT
dHJpbmc+KT4mJik7CisgICAgdm9pZCBzZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVjdG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0YWtl
U2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJl
Y3QmJik+JiYpOworICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFN0cmluZyBjb29raWVO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYpOwog
CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7CiAgICAgSlNDOjpQcml2YXRlTmFtZSBt
X3NjcmlwdE9iamVjdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbgppbmRleCA1OWUzMDhmNmI4YjU5YWFjNzdkZmRkOGQ5NGFiMmFhM2Zk
OGRlYzA3Li5hOGQ5ZGRlNzU1NTlkNWE4OWE1YTI2YzFhMzQ5ZDEwMTY5YmZkMGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIzICsy
MSwyMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBPcHRpb25hbDxkb3VibGU+
IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZl
Y3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3Vt
ZW50LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKSBBc3luYwotICAgIFJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4gKHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQp
IEFzeW5jCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+
IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgQXN5bmMKIAotICAgIENvbXB1dGVFbGVtZW50TGF5
b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50
UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQs
IGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKKyAgICBDb21wdXRlRWxlbWVudExheW91dChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVT
eXN0ZW0pIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBv
aW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJy
b3JUeXBlKSBBc3luYwogCi0gICAgU2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZXRGaWxlc0ZvcklucHV0
RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVj
dG9yPFN0cmluZz4gZmlsZW5hbWVzKSAtPiAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSkgQXN5bmMKIAotICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdw
b3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBTbmFw
c2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0KSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCkgQXN5bmMK
KyAgICBTbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRv
Vmlld3BvcnQpIC0+IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QpIEFzeW5jCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IFN0cmluZyBjb29raWVOYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5j
CisgICAgR2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQpIC0+IChzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBBc3luYworICAgIERlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJp
bmcgY29va2llTmFtZSkgLT4gKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5j
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKaW5kZXggYTA3MDE3NzNhNGE4YmY5YzljNzViY2M0MWJjMGViYTgwOWE4YWY5NC4u
M2FmNjA5NTljN2YzOGY4Nzc4NzE5Nzk1NDkwNWY0NWUwNTMyZmE1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjcs
OCArNjcsOCBAQCBwdWJsaWM6CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VS
ZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CiAKICNpZiBIQVZF
KEFVRElUX1RPS0VOKQotICAgIHZvaWQgc2V0QXVkaXRUb2tlbihPcHRpb25hbDxhdWRpdF90b2tl
bl90PiBhdWRpdFRva2VuKSB7IG1fYXVkaXRUb2tlbiA9IGF1ZGl0VG9rZW47IH0KLSAgICBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpdFRv
a2VuOyB9CisgICAgdm9pZCBzZXRBdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbikgeyBtX2F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CisgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdWRp
dFRva2VuOyB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIAogI2lmIEhBVkUo
QVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRva2VuOwor
ICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRva2VuOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCmluZGV4IDI3MzNlZTFkZGFhY2ZjMTM5MTVm
NGExYzkxMjEyZDdlNmRlZDAwNGMuLmNmMzk5MzgxMzY1MGM4NzZiMWQxMGExZjI2YWI2YzQ3Y2E0
NmM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbkluZm8uaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW47CiAjZW5kaWYKIAogICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcAppbmRleCA0ZmE3YzI4MmZiZDA4MmNmOGI2N2U4MTQwZjRlNTU2NjAzZTFmNTcx
Li5lM2IzZjdkY2U1OGYzMjcxMzQzOGRmYmJiZTA0YjcwOGYwOWMxNmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xNTQsNyArMTU0
LDcgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNv
cHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmUKICAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0
ZUltYWdlKCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBv
dXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0
UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX2JpdG1hcC0+ZGF0YSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IGI2
YTk0ZjEwMzExMDQ3ZjkyMTg5M2I2NzRlMTE3MmUyNzNlMzY0NjcuLjE4NDdmYTZmYmRlNDA2ZWQ2
YTZhZDA2MDQ5OGI4ODVjNWUzNmJiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNv
cHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhl
bEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVz
dFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApp
bmRleCBkNDdjOTNiNDFjZDExODU2MDA3YzM2OGEzZDFkM2JkZGFkNTA0ZjQxLi5kZDJlODBiNjVk
MjM0ZDY5OGU5MGM4M2EwYzVkYzM5OTU4N2RkN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaApAQCAtMzE1LDcgKzMxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG11
bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQp
IGZpbmFsOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAg
dm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291
bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
aXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdl
bmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcAppbmRleCBkYjlhMTkxYzcyM2QwMWZlOGM3NGQxNjNmYTlhYWUzMTk5MjYwMDdiLi43ODFk
ZjE4ODgyOWQ0YjNiMzk1NzJhZjYwMDdmMTVjMWVmNDI4MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAKQEAgLTIzNjYsOSArMjM2Niw5IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlCiAgICAg
fQogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkKIHsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUgPSB7IH07CiAgICAgaWYgKCFpc0Nv
bnRleHRMb3N0KCkpIHsKICAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpKTsKICAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA4MzFkZWEyZWJi
ZTViNmI5NmYxNmM5M2RkM2M0ODQ1OTFiM2U1NDgyLi42ZGNmMWQ1MmYxYThhMTk4MTdmNWE1MWMw
YmQwMzk3MzQ5YzkxNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTYxLDcg
KzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAg
ICB9CiAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhVVJM
Rm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90
PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
ID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0Rh
dGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkg
PSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoVU5MSUtF
TFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CkBAIC0yMDEsNyArMjAxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gYml0bWFw
LT5jcmVhdGVJbWFnZSgpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVm
ZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVz
dGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92
ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxC
dWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCmluZGV4IDE3YTYyZTNjOTBhMTcwZjUzMDZkY2E1ZTU5MzNjOTk1N2Mz
ZmZiZGEuLjAxNDU4NzE2ODdjNDliMGIxNTZiZWM4NjIwOTgyZTNiYzA1NmRmYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hh
cmVkTWVtb3J5KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpE
ZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOwogfQogCi1TdHJpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpn
ZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
U3RyaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmREZWZl
cnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwogCkBAIC0yMTEsNyArMjExLDcgQEAgU3RyaW5n
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNv
bnN0IFN0cmluZyYgbWltZVQKICAgICByZXR1cm4gdXJsU3RyaW5nOwogfQogCi1WZWN0b3I8dWlu
dDhfdD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorVmVjdG9y
PHVpbnQ4X3Q+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0RGF0YUZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAxZTJmYzNmZTM3Y2ZhZTkxMjBkYzE4
ZTBkYWZjZTlmNjlkMDJkYzBiLi42MzE0OTY3MGEzNTk0ZTI1YTJkYTVjZDE5NzYxMTQ2MWM2MTc5
NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTk3LDggKzk3
LDggQEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Y29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQpOwotICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CisgICAgU3RyaW5nIGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2Vy
dmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZ2V0U2hhcmVhYmxlQml0bWFwKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKTsK
ICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMTQwLDExICsxNDAs
MTEgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBEZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlczsKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3VycmVudERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwotICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzPiBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50czsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
bV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgc3RkOjpvcHRp
b25hbDxHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cz4gbV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHM7CiAgICAgdW5zaWduZWQgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVm
b3JlU2VuZGluZ1dha2V1cCB7IDAgfTsKIAotICAgIE9wdGlvbmFsPElQQzo6U2VtYXBob3JlPiBt
X2dldFBpeGVsQnVmZmVyU2VtYXBob3JlOworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTZW1hcGhv
cmU+IG1fZ2V0UGl4ZWxCdWZmZXJTZW1hcGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
bV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeTsKICAgICB1aW50NjRfdCBtX2dldFBpeGVsQnVm
ZmVyU2hhcmVkTWVtb3J5TGVuZ3RoIHsgMCB9OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZGVzdHJv
eUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5VGltZXIgeyAqdGhpcywgJlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5jcHAKaW5kZXggNGNmMzlhMWM0NjA0YmQxMTZlMDM5OGY4YTU1ZjlmNTU1ZmJmNTI4Ni4u
NjBlODllMTQ2MDlkZmNlMGRmMWRhZDM2ODVkYWZkODQ4ODUyYzIzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTAyLDE5ICsxMDIsMTkgQEAgdm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEYKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91
YmxlPiwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+
IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6dG9EYXRhKGNvbnN0IFN0cmlu
ZyYsIE9wdGlvbmFsPGRvdWJsZT4pIGNvbnN0CitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjp0b0RhdGEoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRp
b25hbDxkb3VibGU+KSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmLCBjb25zdCBJbnRSZWN0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRSZWN0JikgY29uc3QKIHsKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApp
bmRleCAzNzBiZTFmMjE0ZjgxNDU2ZmFhMjU1MDcxNzNmYzVkM2QwYTMzNWFkLi43MzkzNWUyYjM3
MDhmMDZlYTc4Nzc1NTBmYTEzMWQ5YjliODBlN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTU3LDkgKzU3
LDkgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJy
aWRlOwotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRl
c3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nLmgKaW5kZXggMWRjNTkwYTU1NzhlNDdjYmViODMxNTNhYmQ3MzRjZGFhYjlk
NzA3Zi4uZGI3OWMxNTk1MjJkZGY0ODExMmI2ZTg0NWUwNzZmMjE2ZDdhMWNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRl
c3RpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3Zl
cnJpZGVzRm9yVGVzdGluZy5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdHJ1Y3QgTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nIHsKLSAgICBPcHRpb25hbDxib29s
PiBzeXN0ZW1IYXNBQzsKLSAgICBPcHRpb25hbDxib29sPiBzeXN0ZW1IYXNCYXR0ZXJ5OworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3lzdGVtSGFzQUM7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzeXN0ZW1IYXNCYXR0ZXJ5OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdhcmVEZWNv
ZGVyRGlzYWJsZWQ7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92ZXJyaWRlcz4g
dnA5U2NyZWVuU2l6ZUFuZFNjYWxlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdnA5SGFyZHdh
cmVEZWNvZGVyRGlzYWJsZWQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5EYXRh
T3ZlcnJpZGVzPiB2cDlTY3JlZW5TaXplQW5kU2NhbGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00OCwy
NCArNDgsMjQgQEAgc3RydWN0IE1lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZyB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhT3Zl
cnJpZGVzRm9yVGVzdGluZz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNB
QzsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiBzeXN0ZW1IYXNB
QzsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0ZW1IYXNBQzsKICAgICAgICAgaWYgKCFzeXN0ZW1I
YXNBQykKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8Ym9vbD4+IHN5c3RlbUhhc0JhdHRlcnk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpvcHRpb25hbDxib29sPj4gc3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2Rl
ciA+PiBzeXN0ZW1IYXNCYXR0ZXJ5OwogICAgICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlv
bmFsPGJvb2w+PiB2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPGJvb2w+PiB2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKICAg
ICAgICAgZGVjb2RlciA+PiB2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKICAgICAgICAgaWYg
KCF2cDlIYXJkd2FyZURlY29kZXJEaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuRGF0YU92
ZXJyaWRlcz4+IHZwOVNjcmVlblNpemVBbmRTY2FsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmVlbkRhdGFPdmVycmlkZXM+PiB2cDlTY3JlZW5TaXpl
QW5kU2NhbGU7CiAgICAgICAgIGRlY29kZXIgPj4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxlOwogICAg
ICAgICBpZiAoIXZwOVNjcmVlblNpemVBbmRTY2FsZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNzc1NWU1YjY4OTg3
YzYzZTRhMWUxMzUzMTk4MjVkMzQ3M2VlZDJkZC4uMDA1OTU5NjJkYWYwZjMzOGZhZWQ1MDY0NWI3
YTQxMTQ4MTJhYjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJh
Y2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAg
ICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGhhbmRsZTsKICAgICAgICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVt
UGF0aCgpOwpAQCAtOTc2LDcgKzk3Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTdGF0
ZS5kaWRQYXNzQ09SU0FjY2Vzc0NoZWNrOwogfQogCi1PcHRpb25hbDxib29sPiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7
CiAgICAgaWYgKG9yaWdpbi5kYXRhKCkgPT0gbV9kb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAg
ICAgICByZXR1cm4gbV9jYWNoZWRTdGF0ZS53b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdp
bjsKQEAgLTk4NCw3ICs5ODQsNyBAQCBPcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gbV93b3VsZFRhaW50T3JpZ2luQ2FjaGUuZ2V0KG9yaWdpbi5kYXRhKCkpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnQ7CiAgICAgaWYgKCFjb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OldvdWxkVGFpbnRP
cmlnaW4ob3JpZ2luLmRhdGEoKSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpX
b3VsZFRhaW50T3JpZ2luOjpSZXBseSh3b3VsZFRhaW50KSwgbV9pZCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTExODQsNyArMTE4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjp1cGRhdGVWaWRlb1BsYXliYWNrTWV0cmljc1VwZGF0ZUludGVydmFsKGNv
bnN0IFNlCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OlNldFZpZGVvUGxheWJhY2tNZXRyaWNzVXBkYXRlSW50ZXJ2YWwobV92aWRlb1BsYXli
YWNrTWV0cmljc1VwZGF0ZUludGVydmFsLnZhbHVlKCkpLCBtX2lkKTsKIH0KIAotT3B0aW9uYWw8
VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCitzdGQ6Om9wdGlvbmFsPFZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3MoKQogewogICAgIGNvbnN0IFNlY29uZHMgbWF4aW11bVBsYXliYWNrUXVhbGl0
eU1ldHJpY3NTYW1wbGVUaW1lRGVsdGEgPSAwLjI1X3M7CiAKQEAgLTEyNDEsNyArMTI0MSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VN
b2RlKER5bmFtaWNSYW5nZU1vZGUgbW9kCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyLCBjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKIHsKLSAgICBhdXRvIGFzeW5j
UmVwbHlIYW5kbGVyID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxNZWRp
YVRpbWU+IGN1cnJlbnRUaW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiBxdWVyeVRpbWUpIG11
dGFibGUgeworICAgIGF1dG8gYXN5bmNSZXBseUhhbmRsZXIgPSBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBjdXJyZW50VGltZSwgc3RkOjpvcHRp
b25hbDxNb25vdG9uaWNUaW1lPiBxdWVyeVRpbWUpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFjdXJyZW50VGltZSB8fCAhcXVlcnlUaW1lKQogICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCBkMTY5NDRlNDU4ODc1MDQ5MGQ0MjVk
NWI0MDhkMDEzN2ZlYzJkNDU2Li45NDI4ZDk4MGI0ZWFhNjEzODU5N2U5MzFmNmI0NDVlNDM4MjYw
OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTMxNyw3ICszMTcsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlv
bmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
KSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBmaW5h
bDsKIApAQCAtMzcwLDcgKzM3MCw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgZXh0cmFNZW1v
cnlDb3N0KCkgY29uc3QgZmluYWw7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVZpZGVv
UGxheWJhY2tNZXRyaWNzVXBkYXRlSW50ZXJ2YWwoY29uc3QgU2Vjb25kcyYpOwogCiAjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKQEAgLTQyMCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPFRleHRUcmFja1ByaXZhdGVSZW1v
dGU+PiBtX3RleHRUcmFja3M7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9k
b2N1bWVudFNlY3VyaXR5T3JpZ2luOwotICAgIG11dGFibGUgSGFzaE1hcDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEsIE9wdGlvbmFsPGJvb2w+PiBtX3dvdWxkVGFpbnRPcmlnaW5DYWNoZTsK
KyAgICBtdXRhYmxlIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+PiBtX3dvdWxkVGFpbnRPcmlnaW5DYWNoZTsKIAogICAgIE1lZGlhVGltZSBt
X2NhY2hlZE1lZGlhVGltZTsKICAgICBNb25vdG9uaWNUaW1lIG1fY2FjaGVkTWVkaWFUaW1lUXVl
cnlUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uLmgKaW5kZXggZjU4NjE3ZjliOTlmNzI3YTgwY2Y1NzJhZmE4ZDg1
ZmFmMTRiZDE2YS4uOWU2YmNlYjA2YmU5MDQzYmU2ZTZjNjhhZjA2MmMwYTMxMTU1NzkwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvbi5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBDYXRlZ29yeVR5
cGUgbV9jYXRlZ29yeSB7IENhdGVnb3J5VHlwZTo6Tm9uZSB9OwogICAgIFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSBtX3JvdXRlU2hhcmluZ1BvbGljeSB7IFdlYkNvcmU6OlJvdXRlU2hhcmlu
Z1BvbGljeTo6RGVmYXVsdCB9OwotICAgIE9wdGlvbmFsPFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUF1ZGlv
U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKICAgICBXZWFrUHRyPEdQVVBy
b2Nlc3NDb25uZWN0aW9uPiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25D
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaAppbmRleCBhYjU2ZDYzYWMzODFlNGJhOWFkYmVk
ODUwYzJkODk2MTMxZDU5MzhmLi4xNzZlMjc5YmU4MGMzNTM0OWVhMjgwYTI3ZmRhYjJhNWZmOWIw
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaApAQCAtNTUsNDQg
KzU1LDQ0IEBAIHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIHsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVt
b3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbj4g
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IHJvdXRpbmdDb250ZXh0VUlEOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcm91dGlu
Z0NvbnRleHRVSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAg
ICAgIGlmICghcm91dGluZ0NvbnRleHRVSUQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IHNhbXBsZVJh
dGU7CiAgICAgICAgIGlmICghc2FtcGxlUmF0ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBidWZmZXJTaXplOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gYnVmZmVyU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBidWZm
ZXJTaXplOwogICAgICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZPdXRwdXRDaGFu
bmVsczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHM7CiAgICAgICAgIGRlY29kZXIgPj4gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKICAgICAgICAg
aWYgKCFudW1iZXJPZk91dHB1dENoYW5uZWxzKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1heGltdW1OdW1iZXJPZk91dHB1dENo
YW5uZWxzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWF4aW11bU51bWJlck9mT3V0
cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hh
bm5lbHM7CiAgICAgICAgIGlmICghbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4g
cHJlZmVycmVkQnVmZmVyU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHByZWZl
cnJlZEJ1ZmZlclNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVyU2l6ZTsK
ICAgICAgICAgaWYgKCFwcmVmZXJyZWRCdWZmZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBpc011dGVkOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzTXV0ZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNdXRlZDsK
ICAgICAgICAgaWYgKCFpc011dGVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBPcHRpb25hbDxib29sPiBpc0FjdGl2ZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0FjdGl2ZTsKICAgICAgICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAg
aWYgKCFpc0FjdGl2ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggNDIy
NDQ2YjlhODEyNWM0YWY2ZjlkMzAzZDE1MGI1MmRmOTcwNTEzNy4uZGFlNDk1YmY2ZGRkM2YyY2Zk
ZGJiNjhlODFmNTI3ZWI1ZDg4ODRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KIAotT3B0aW9uYWw8
U3RyaW5nPiBSZW1vdGVDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKSBjb25zdAorc3RkOjpvcHRpb25hbDxTdHJpbmc+IFJlbW90ZUNETTo6c2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVj
ayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OmxvYWRTZXNzaW9uKCkuCiAgICAgcmV0dXJuIHNlc3Npb25JZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDI2ZDZmMzY5NzliMDQ1
MmNmOTZhNTJkMThmNmFkMGI3ZjMzNDhlOGYuLjBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUz
ZGFmNDY4Y2QzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJ
bml0aWFsaXplKCkgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkUm9idXN0bmVzc2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZFJvYnVzdG5lc3NlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaAppbmRleCBkY2I0MWJh
YTE5YmYxNjVlMWQzYjY0MjAxNmI5OWE0YTA5NzI1N2MzLi43OTkwMmRiODVmMGY1OTA1YTczMmE0
NTk4NjczNzFlODJmYTVjMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaApAQCAtNDcsMjQgKzQ3
LDI0IEBAIHN0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlQ0RNQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZEluaXREYXRh
VHlwZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZEluaXREYXRhVHlw
ZXM7CiAgICAgICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcykKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+
PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEF0
b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3Vw
cG9ydGVkUm9idXN0bmVzc2VzOwogICAgICAgICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNTZXNzaW9uczsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOwog
ICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKaW5kZXggZTg4OTYx
MmFlZDA5YzEzOWQyZTY5MDZiOGNkNTI5NjVhMmZjODgzNi4uNDAzM2QzNWY3MDNkMTZjZjAyODA4
MmE3Y2M4OTc3ZGUxNjE5YjY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oCkBAIC00MSw5ICs0MSw5IEBAIHN0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24gewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBP
cHRpb25hbDxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25h
bDxTdHJpbmc+IGtleVN5c3RlbTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGtleVN5
c3RlbTsKICAgICAgICAgZGVjb2RlciA+PiBrZXlTeXN0ZW07CiAgICAgICAgIGlmICgha2V5U3lz
dGVtKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmNwcAppbmRleCA5MWFkNGY5MjljYTVkZmZkOWMxYjJlNjM2NGUzODliOTc5NGU5NTlk
Li44MmY0NzUzYTNhODNjN2I0NTBhZTBkNzdmNzNiZjEwNWVmN2Y3YzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBl
LCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9v
bCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtl
eXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8TWVzc2Fn
ZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Np
b25JZCwgdHlwZSwgV1RGTW92ZShyZXNwb25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0
b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5n
ZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1
Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0K
QEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxNZXNz
YWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZh
aWx1cmUpIG11dGFibGUgeworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6TG9hZFNlc3Npb24odHlwZSwgc2Vzc2lvbklkLCBvcmlnaW4pLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmUgbG9hZEZhaWx1cmUpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUo
bWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCwgbG9hZEZhaWx1cmUpOwog
ICAgIH0sIG1faWRlbnRpZmllcik7CiB9CkBAIC0xMDksOCArMTA5LDggQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vz
c2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNW
ZWN0b3ImJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1l
c3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgT3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEo
c2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0
dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAg
ICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwo
KTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1l
c3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwCmluZGV4IDBlZGQ4YjJmZDY2MzMwOGI4MzQ3MjJmMzgzNDAyNWIwOWQ0YzdlMWEuLjUz
ZDAxNTc4MWM0ZGI2NmFhNjQ5MTIwYTdjOGRhYWFmYjM4NDA4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKQEAgLTE2Niw4ICsxNjYsOCBAQCBQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAg
ICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZpZXIsIGlu
ZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUlt
YWdlQXRJbmRleDo6UmVwbHkoc2VuZFJpZ2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
IHNpemVfdCBmcmFtZUNvdW50OwogICAgIEludFNpemUgc2l6ZTsKICAgICBib29sIGhhc1RyYWNr
OwotICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5m
b3M7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBm
cmFtZUluZm9zOwogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YSht
X2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6
ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaAppbmRleCBkZTlkYzMzZjA5ZDU2ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0
Li5lNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkg
Y29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWw7
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAg
U3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0
cmluZygpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCkgY29uc3QgZmluYWw7CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxpbnQsIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIsIFdURjo6SW50SGFzaDxpbnQ+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fZnJhbWVJbWFnZXM7CiAg
ICAgVmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPiBtX2ZyYW1lSW5mb3M7CiAgICAgc2l6
ZV90IG1fZnJhbWVDb3VudCB7IDAgfTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBt
X3NpemU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBtX3NpemU7CiAgICAg
Ym9vbCBtX2hhc1RyYWNrIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwCmluZGV4IDZkMWFmZDg0ODM4NzcxYjYxNjliNzBkZTgzNWIyOWQ4YjI4MjI3
ZWYuLjc2ZTk3MzRlZDEwNzU0YzI2YTNjNjgyYzVhOGY2NjkyNDg2OWM3ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewotICAg
IE9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7
CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJ
ZGVudGlmaWVyOwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlIHsgZGF0YSB9OwogICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpD
cmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVu
dGlmaWVyKSwgMCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4IDE3
ODg2MjViYjc2MDRkZTkwNWJhZTRlZWMxMjUzMjIxOGU4MDNkNDUuLjc1NmY4Zjk5ZjE2MjY5MzM4
N2YwOTNkZDZmMmIwNTRhOGY3OTlmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBSZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKE1lZGlhUGxheWVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIGlmICghbV9mYWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBP
cHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgc3RkOjpvcHRp
b25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CiAgICAgaWYgKGlkZW50aWZp
ZXIpCiAgICAgICAgIG9wdGlvbmFsSWQgPSBpZGVudGlmaWVyOwogICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNUHJveHk6OlNldFBsYXllcklkKG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5kZXggOGExOTdlMWRhNmRiOWNjZTY3Y2M3NWE3ZmUzYmMx
NWZjZGJlY2M2Ni4uZGZmNzZkMTllOTE1MDhjMzljYmU0ZWNkYWU2ODUyM2FkODY5ZGViMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENETVByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNE
TShXZWJDb3JlOjoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1l
ZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVySWQ7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gY2Rt
LT5tZWRpYVBsYXllcigpKQogICAgICAgICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9u
KCkubWVkaWFQbGF5ZXJNYW5hZ2VyKCkuZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVy
UHJpdmF0ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggZTZmNjdhY2Y0ODVi
NmQxZmQzZmU3YTMxMDQxMDc3MmQ3NGE5NWZhOC4uMjdhZTk2YjNiMmY1NmIyMjE3YTM4NzlkNWRm
MmQwZDMzMTExYzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC04Miw3ICs4Miw3
IEBAIFJlZlB0cjxVaW50OEFycmF5PiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgYXV0byBpcGNJbml0RGF0YSA9IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoaW5pdERhdGEp
OwotICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGlwY05leHRNZXNzYWdlOwog
ICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1
ZXN0KG1pbWVUeXBlLCBpcGNJbml0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OkdlbmVyYXRlS2V5UmVxdWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3Rp
bmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOwogCiAgICAg
aWYgKCFpcGNOZXh0TWVzc2FnZSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXlEYXRhLCBSZWZQdHI8VWludDhBcnJh
eT4mIG5leAogCiAgICAgYXV0byBpcGNLZXlEYXRhID0gY29udmVydFRvU2hhcmVkQnVmZmVyQ29w
eShXVEZNb3ZlKGtleURhdGEpKTsKICAgICBib29sIHN1Y2NlZWRlZCB7IGZhbHNlIH07Ci0gICAg
T3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gaXBjTmV4dE1lc3NhZ2U7CiAgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2Vl
ZGVkLCBpcGNOZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVy
KTsKIAogICAgIGlmIChpcGNOZXh0TWVzc2FnZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8
QXJyYXlCdWZmZXI+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNhY2hlZEtleUZvcktleUlEKGNv
bnN0IFN0cmluZyYga2V5SQogICAgIGlmIChmb3VuZEluQ2FjaGUgIT0gbV9jYWNoZWRLZXlDYWNo
ZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZvdW5kSW5DYWNoZS0+dmFsdWU7CiAKLSAgICBPcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGlwY0tleTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gaXBjS2V5OwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eTo6Q2FjaGVkS2V5Rm9yS2V5SUQoa2V5SWQpLCBNZXNzYWdlczo6UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpDYWNoZWRLZXlGb3JLZXlJRDo6UmVwbHkoaXBjS2V5KSwg
bV9pZGVudGlmaWVyKTsKIAogICAgIGlmICghaXBjS2V5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5
SUQoY29uc3QgU3RyaW5nJiBrZXlJCiAgICAgcmV0dXJuIGlwY0tleUJ1ZmZlcjsKIH0KIAotdm9p
ZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKK3Zv
aWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCkKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oCmluZGV4IDRkNWJlY2UwNTkxMTVlNTJmMDM0ZTBhNTE0NWQwMjQ5ZWViMjFiYjMuLjQ4
MzRiNDZlZDBmY2QyNTliMzA4NWExZWE3NDZjMzkyMjA4YjRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIC8v
IE1lc3NhZ2VzCi0gICAgdm9pZCBzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9p
ZCBzZW5kTWVzc2FnZShzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKTsKICAgICB2b2lkIHNlbmRFcnJvcihX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdWludDMy
X3Qgc3lzdGVtQ29kZSk7CiAKICAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IG1f
ZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCAx
MmY2ODc4YTgzMzcwMjIwNDlmMDU1MDcxZTkzZGE0ZWMyYjE0ZWZkLi4zZTczMGExMGVlMGQ3M2Fm
NWYxZjYzZmY3ZjU5NjEyZjZlZWI5ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogbWVzc2FnZXMgLT4gUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKLSAgICBTZW5kTWVzc2FnZShPcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+IG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKKyAg
ICBTZW5kTWVzc2FnZShzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gbWVzc2Fn
ZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKQogICAgIFNlbmRFcnJvcihlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2Rl
LCB1aW50MzJfdCBzeXN0ZW1Db2RlKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24uaAppbmRleCAwZGU5NWVkNWVkMjZjZjhhNmQwNzA0NmY2NjRjZjE1OGVkMWQ4YmQ2Li5h
ZWI0ZjEzYjM2MDM4NjU1YzJmOTg1ODdkMGZmMzQyYzE1MjU5NTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uLmgKQEAgLTU3LDQ0ICs1Nyw0NCBAQCBzdHJ1Y3QgUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4KLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlbmdpbmVEZXNjcmlwdGlvbjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBkZWNv
ZGVyID4+IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBpZiAoIWVuZ2luZURlc2NyaXB0aW9u
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxk
b3VibGU+IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAgICAgICBk
ZWNvZGVyID4+IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAgIGlmICgh
bWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTY2FubmluZzsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBzdXBwb3J0c1NjYW5uaW5nOwogICAgICAgICBkZWNv
ZGVyID4+IHN1cHBvcnRzU2Nhbm5pbmc7CiAgICAgICAgIGlmICghc3VwcG9ydHNTY2FubmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gc3VwcG9ydHNGdWxsc2NyZWVuOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHN1cHBv
cnRzRnVsbHNjcmVlbjsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c0Z1bGxzY3JlZW47CiAg
ICAgICAgIGlmICghc3VwcG9ydHNGdWxsc2NyZWVuKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1
cmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJl
OwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzUGljdHVyZUluUGljdHVyZTsKICAgICAgICAg
aWYgKCFzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmc7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZzsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
OwogICAgICAgICBpZiAoIXN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGNhblBsYXlU
b1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsKICAgICAgICAgZGVjb2RlciA+PiBjYW5QbGF5
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OwogICAgICAgICBpZiAoIWNhblBsYXlUb1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZElnbm9yZUludHJpbnNpY1NpemU7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZTsKICAgICAgICAgZGVj
b2RlciA+PiBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplOwogICAgICAgICBpZiAoIXNob3VsZEln
bm9yZUludHJpbnNpY1NpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmgKaW5kZXggMDgxYzljYzRiZGY4Y2YyNGZm
MjlmNzcxOTIwODE0YjJiOWRjYWNiNi4uMTJjODgyM2FiOTVmMDhiZjgwNjBhYTliMmIxNmVmMGQ2
ZTllYjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5oCkBAIC01Nyw4
ICs1Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIG1fZW5naW5lSWRlbnRpZmllcjsKIAogICAgIHVzaW5nIFN1cHBvcnRl
ZFR5cGVzQW5kQ29kZWNzS2V5ID0gc3RkOjp0dXBsZTxTdHJpbmcsIGJvb2wsIGJvb2w+OwotICAg
IE9wdGlvbmFsPEhhc2hNYXA8U3VwcG9ydGVkVHlwZXNBbmRDb2RlY3NLZXksIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZT4+IG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2Fj
aGU7Ci0gICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4+IG1fc3VwcG9ydGVkVHlwZXNDYWNoZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3Vw
cG9ydGVkVHlwZXNBbmRDb2RlY3NLZXksIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZT4+IG1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGU7CisgICAgc3RkOjpvcHRpb25h
bDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gbV9zdXBwb3J0ZWRU
eXBlc0NhY2hlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0
ZS5oCmluZGV4IGE2MjdhNzM3MGMyYmMxZjI1MzkxYzBiZWIyMTA4ZWJkZWFiMTI5OWEuLmRiMzQ4
YTE4ZWFlYTdkOTliZjNjMTcyZWJkZjY4ZmRkM2ExYmFjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJTdGF0
ZS5oCkBAIC01NSw4ICs1NSw4IEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclN0YXRlIHsKICAg
ICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSB7IDAgfTsKICAgICBk
b3VibGUgbGl2ZVVwZGF0ZUludGVydmFsIHsgMCB9OwogICAgIHVpbnQ2NF90IHRvdGFsQnl0ZXMg
eyAwIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
PiB2aWRlb01ldHJpY3M7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludERvY3VtZW50U2Vj
dXJpdHlPcmlnaW4geyB0cnVlIH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWRlb1Bs
YXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvTWV0cmljczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHdvdWxkVGFpbnREb2N1bWVudFNlY3VyaXR5T3JpZ2luIHsgdHJ1ZSB9OwogICAgIGJvb2wg
cGF1c2VkIHsgdHJ1ZSB9OwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBoYXNBdWRpbyB7IGZhbHNlIH07CkBAIC0xMDIsNDQgKzEwMiw0NCBAQCBzdHJ1Y3Qg
UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+Ci0gICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZU1lZGlhUGxheWVyU3RhdGU+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbW90ZU1lZGlh
UGxheWVyU3RhdGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0
aW9uYWw8TWVkaWFUaW1lPiBkdXJhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRp
bWU+IGR1cmF0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAo
IWR1cmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBP
cHRpb25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxNZWRpYVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5UaW1l
U2Vla2FibGU7CiAgICAgICAgIGlmICghbWluVGltZVNlZWthYmxlKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVT
ZWVrYWJsZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IG1heFRpbWVTZWVrYWJs
ZTsKICAgICAgICAgZGVjb2RlciA+PiBtYXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGlmICghbWF4
VGltZVNlZWthYmxlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAg
ICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0RGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxN
ZWRpYVRpbWU+IHN0YXJ0RGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydERhdGU7CiAgICAg
ICAgIGlmICghc3RhcnREYXRlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7
CiAgICAgICAgIGlmICghc3RhcnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
azsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9U
cmFjazsKICAgICAgICAgZGVjb2RlciA+PiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAg
ICAgICAgIGlmICghbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHdpcmVsZXNzUGxh
eWJhY2tUYXJnZXROYW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gd2lyZWxlc3NQ
bGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gd2lyZWxlc3NQbGF5YmFja1Rh
cmdldE5hbWU7CiAgICAgICAgIGlmICghd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWRSYW5nZXM7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZFJhbmdlczsKICAgICAgICAg
ZGVjb2RlciA+PiBidWZmZXJlZFJhbmdlczsKICAgICAgICAgaWYgKCFidWZmZXJlZFJhbmdlcykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNjAsODcgKzE2MCw4NyBAQCBz
dHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUod2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IG5hdHVyYWxT
aXplOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gbmF0dXJhbFNp
emU7CiAgICAgICAgIGRlY29kZXIgPj4gbmF0dXJhbFNpemU7CiAgICAgICAgIGlmICghbmF0dXJh
bFNpemUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gbWF4RmFzdEZvcndhcmRSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWF4RmFzdEZvcndhcmRSYXRlOwogICAgICAgICBkZWNvZGVyID4+IG1heEZhc3RGb3J3
YXJkUmF0ZTsKICAgICAgICAgaWYgKCFtYXhGYXN0Rm9yd2FyZFJhdGUpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJl
dmVyc2VSYXRlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWluRmFzdFJldmVyc2VS
YXRlOwogICAgICAgICBkZWNvZGVyID4+IG1pbkZhc3RSZXZlcnNlUmF0ZTsKICAgICAgICAgaWYg
KCFtaW5GYXN0UmV2ZXJzZVJhdGUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVk
VGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNlZWthYmxlVGltZVJhbmdlc0xh
c3RNb2RpZmllZFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gc2Vla2FibGVUaW1lUmFuZ2VzTGFz
dE1vZGlmaWVkVGltZTsKICAgICAgICAgaWYgKCFzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IGxpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGxpdmVVcGRhdGVJbnRlcnZhbDsKICAgICAgICAgZGVjb2RlciA+PiBsaXZlVXBkYXRl
SW50ZXJ2YWw7CiAgICAgICAgIGlmICghbGl2ZVVwZGF0ZUludGVydmFsKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdG90YWxC
eXRlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKICAgICAg
ICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVzOwogICAgICAgICBpZiAoIXRvdGFsQnl0ZXMpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYkNvcmU6OlZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0cmljczsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4+IHZpZGVvTWV0cmljczsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb01l
dHJpY3M7CiAgICAgICAgIGlmICghdmlkZW9NZXRyaWNzKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gd291bGRUYWlu
dERvY3VtZW50U2VjdXJpdHlPcmlnaW47CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRp
b25hbDxib29sPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRl
Y29kZXIgPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGlmICgh
d291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBwYXVzZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGF1c2VkOwogICAg
ICAgICBpZiAoIXBhdXNlZCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gY2FuU2F2ZU1lZGlhRGF0YTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBjYW5TYXZlTWVkaWFEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGNhblNhdmVN
ZWRpYURhdGE7CiAgICAgICAgIGlmICghY2FuU2F2ZU1lZGlhRGF0YSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXVkaW87Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzQXVkaW87CiAgICAgICAgIGRlY29kZXIgPj4g
aGFzQXVkaW87CiAgICAgICAgIGlmICghaGFzQXVkaW8pCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1ZpZGVvOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGhhc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZpZGVv
OwogICAgICAgICBpZiAoIWhhc1ZpZGVvKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgICAgICBPcHRpb25hbDxib29sPiBoYXNDbG9zZWRDYXB0aW9uczsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBoYXNDbG9zZWRDYXB0aW9uczsKICAgICAgICAgZGVjb2RlciA+
PiBoYXNDbG9zZWRDYXB0aW9uczsKICAgICAgICAgaWYgKCFoYXNDbG9zZWRDYXB0aW9ucykKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aGFzQXZhaWxhYmxlVmlkZW9GcmFtZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lOwogICAgICAgICBkZWNvZGVyID4+IGhhc0F2YWlsYWJsZVZpZGVv
RnJhbWU7CiAgICAgICAgIGlmICghaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gd2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gd2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQ7CiAgICAgICAgIGlmICghd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlv
bmFsPGJvb2w+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOwogICAgICAgICBkZWNvZGVyID4+IGhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luOwogICAgICAgICBpZiAoIWhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBPcHRpb25hbDxi
b29sPiBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2s7CiAgICAgICAgIGRlY29kZXIgPj4gZGlkUGFzc0NPUlNB
Y2Nlc3NDaGVjazsKICAgICAgICAgaWYgKCFkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUNvY29hLm1tCmluZGV4IDRkZWRlMzA4MWUyNGI0OTA3OGZkYTE1NzQwM2NiNDlm
NzAwNDYyMDkuLmQ0NGViMzlmODM5MzE4NTRhYmIzMGY1NjBhOThhYjI4MjFmZWFlZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQpAQCAtNjQsNyAr
NjQsNyBAQCBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAg
T3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TWFj
aFNlbmRSaWdodD4gc2VuZFJpZ2h0OwogICAgIGlmICghY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpOYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lOjpSZXBseShzZW5kUmlnaHQpLCBtX2lkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTg0LDcgKzg0LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogCiBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCkKIHsKLSAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7CisgICAg
c3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7CiAgICAgaWYgKCFjb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVm
ZmVyRm9yQ3VycmVudFRpbWUoKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Ok5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWU6OlJlcGx5KHNlbmRSaWdodCksIG1faWQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKaW5kZXggNDYwYjc1MmZm
ZTIzZjQ1NjJkYjk4YzNkYWM2MGZjYWE5NmI2ZTYzZC4uYmQ4N2ZkMTMwMzI1MTg4OTk2Y2E0MzZm
NTMxNDZkMjQ0YWE0NWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgYm9vbCBtX2lzUGxheWlu
ZyB7IGZhbHNlIH07CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+IG1fZGVzY3JpcHRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+IG1fZGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwogICAgIGludDY0X3QgbV93cml0
ZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggOWM3YmIzNTU2OTllNzAzMmU3M2E5ODg5MjY5
NmVlNDk4Y2IxM2E1Zi4uZWJlNjIzY2JkN2I3YTg1ZDI4OWU2YWM4MmQzMTk1ZDZiZTEzNWZiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAgICBSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgICAgICB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIGNv
ZGVjVHlwZSB7IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNHZW5lcmljIH07CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzOwotICAgICAgICBPcHRpb25hbDxF
bmNvZGVySW5pdGlhbGl6YXRpb25EYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RW5jb2RlckluaXRpYWxpemF0aW9uRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRh
OwogICAgICAgICB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NL
KGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jaykgeyBudWxscHRyIH07CiAgICAgICAgIExvY2sgZW5j
b2RlZEltYWdlQ2FsbGJhY2tMb2NrOwogICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBj
b25uZWN0aW9uOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fcGl4
ZWxCdWZmZXJQb29sV2lkdGggeyAwIH07CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sSGVp
Z2h0IHsgMCB9OwogICAgIGJvb2wgbV9zdXBwb3J0VlA5VlRCIHsgZmFsc2UgfTsKLSAgICBPcHRp
b25hbDxXVEZMb2dMZXZlbD4gbV9sb2dnaW5nTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxXVEZM
b2dMZXZlbD4gbV9sb2dnaW5nTGV2ZWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAy
YzgwODI5YTQ2YmJmYmE2YjdlNzc1YzRiNzBiYmZmZDZlYzIxM2NkLi4wNjczZjc0ZGRmYjQ4ZTVi
ZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC01MywxNyArNTMsMTcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5kRWRpdGluZyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0
Tm9kZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkFmZmluaXR5LCBib29sKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJ
bnNlcnROb2RlKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlv
bikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6
OkFmZmluaXR5LCBib29sKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEFwcGx5U3R5bGUoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0
aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0
aW5nKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikg
eyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2Um
LCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
LCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9k
ZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQppbmRleCBjOGI1ZTQ5N2M1MGUw
YmE1Y2MzN2M2NjhjMjFjMzc3ZWY3MTc0NTUzLi4zNTJiNjYyYTQ5MTk1MzQwMmI3NGEzZjFmNGM0
NGFmYjZmNmE2NzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCkBAIC02NSw3ICs2NSw3IEBAIC0gKENvY29hSW1hZ2Ug
KilyZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMKIAog
LSAoQ29jb2FJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlv
bnMpb3B0aW9ucyB3aWR0aDooTlNOdW1iZXIgKil3aWR0aAogewotICAgIE9wdGlvbmFsPGZsb2F0
PiBvcHRpb25hbFdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9wdGlvbmFsV2lkdGg7
CiAgICAgaWYgKHdpZHRoKQogICAgICAgICBvcHRpb25hbFdpZHRoID0gd2lkdGguZmxvYXRWYWx1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2YTA4ZWU2MWM0MmY4OWI2NzM5
MWRkNGQxNGM0NzM4N2ZkMmYzZmU2Li42OTM4MjAzZTg4NjExZjYzNWVkNjE2N2Q2YWYxYTczOTdm
MjM5MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtODYzLDcgKzg2Myw3IEBA
IFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFdmVudFRocm90dGxp
bmdCZWhhdmlvck92ZXJyaWRlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0V2ZW50VGhyb3R0bGlu
Z0JlaGF2aW9yKiBiZWhhdmlvcikKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpFdmVudFRocm90
dGxpbmdCZWhhdmlvcj4gYmVoYXZpb3JWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBiZWhhdmlvclZhbHVlOwogICAgIGlmIChiZWhhdmlv
cikgewogICAgICAgICBzd2l0Y2ggKCpiZWhhdmlvcikgewogICAgICAgICBjYXNlIGtXS0V2ZW50
VGhyb3R0bGluZ0JlaGF2aW9yUmVzcG9uc2l2ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcAppbmRleCA4MjM4ZTY0MzBlZDdmOTQ3ODkyMWM2MGI3MWMzYjViNDgwODYy
YmJhLi5kODU0MmEyYjEwYjFiM2UxNTM2MTQxNTQxMTVlZjdlY2VjNDRlYjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpX
ZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9p
bnQoV2ViS2l0OjpXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIFdlYkNvcmU6OkZsb2F0UG9p
bnQgbG9jYXRpb24pIGZpbmFsCisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VPdmVy
bGF5OjpBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJLaXQ6
OldlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlv
bikgZmluYWwKICAgICB7CiAgICAgICAgIGlmICghbV9jbGllbnQuYWN0aW9uQ29udGV4dEZvclJl
c3VsdEF0UG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGM1NTA4YTYwOGQ4OTUxZTNhZTIyMzNiZDkwZTIz
ZDhjNDI3ZTEwODUuLmNiZjM5NTU4MWY0NTUwZDU0MGFiZWZiNjk1NTBkYzk5ZDFlMWQzMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTU4Myw3ICs1ODMsNyBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBi
b29sIHNob3VsZEluc2VydFRleHQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcm
IHRleHQsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxh
Y2UsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pIGZpbmFsCisgICAgICAgIGJv
b2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYg
dGV4dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9S
ZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKSBmaW5hbAogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnNob3VsZEluc2VydFRleHQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01OTEsNyArNTkxLDcgQEAgLSAodm9p
ZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVn
YXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIHJldHVybiBbbV9jb250cm9sbGVyLT5fZWRp
dGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOm1fY29udHJvbGxlciBzaG91bGRJbnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nUmFuZ2U6d3Jh
cHBlcigqV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2VUb1JlcGxhY2UpKSBnaXZlbkFjdGlvbjp0
b1dLKGFjdGlvbildOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxl
Y3RlZFJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
IHRvUmFuZ2UsIFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5n
KSBmaW5hbAorICAgICAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21S
YW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHRvUmFuZ2Us
IFdlYkNvcmU6OkFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MTUsNyAr
NjE1LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1
Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXJEaWRDaGFuZ2VCeUVkaXRpbmc6bV9jb250cm9sbGVyXTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UpIGZpbmFsCisgICAgICAg
IHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSkgZmluYWwKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy53aWxsV3JpdGVUb1Bhc3RlYm9hcmQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDcgKzYyMyw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcAppbmRleCAwZWNjMmRjODhkZDY1ZmEyMWRlNjZmN2Q1NGRlNzZiY2M1M2QxOTJmLi5j
ODkwYzU3YWFmNDBkMjc0ZDliZGVlNjI3NzI3OTI3MjI5NWIzNWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgSW50
UmVjdCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNl
ZCkKICAgICByZXR1cm4gbV9ub2RlLT5waXhlbFNuYXBwZWRSZW5kZXJSZWN0KGlzUmVwbGFjZWQp
OwogfQogCi1zdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHBhaW50aW5nUmVjdCwgY29uc3QgT3B0aW9uYWw8Zmxv
YXQ+JiBiaXRtYXBXaWR0aCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitzdGF0aWMgUmVmUHRy
PFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJl
Y3QmIHBhaW50aW5nUmVjdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRo
LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdSZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGlj
IFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25z
dCBJbnRSZWN0JiBwYWludGkKICAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKLVJlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0aW9uYWw8
ZmxvYXQ+JiBiaXRtYXBXaWR0aCkKK1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBib29sIHNob3Vs
ZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3Qgc3RkOjpvcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRo
KQogewogICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCmluZGV4IDg5YjYzZmY4NjE5MDRiMDM1
YWFlYmM0MWUzMzBmMmI2Yzk5N2JhYjIuLjUyMDQzOTY1MzMwMjAyOTQxNTEzMjllNDM2YjcxMWNk
YWVkMmE1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZTogVGhlc2Ugc2hvdWxkIG9ubHkg
YmUgb3BlcmF0aW9ucyB0aGF0IGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFdl
YkNvcmU6OkludFJlY3QgZWxlbWVudEJvdW5kcygpOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVu
ZGVyUmVjdChib29sKik7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBz
aG90T3B0aW9ucywgYm9vbCBzaG91bGRFeGNsdWRlT3ZlcmZsb3csIGNvbnN0IE9wdGlvbmFsPGZs
b2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIFJlZlB0cjxXZWJJbWFnZT4g
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiYgYml0bWFwV2lkdGggPSBzdGQ6Om51bGxvcHQp
OwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiB2aXNpYmxlUmFuZ2UoKTsK
ICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRFbGVtZW50U3BlbGxjaGVja0VuYWJsZWQoYm9vbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA1YTI2
ZTUzM2ZjMTVmZWZmMjVlZDgwYzcyN2QxM2UwYTc0ZWNkYmFhLi42NDk5MWJiMmRhMjhkZjdlYTYy
OWIwOGVlMWJjNmI1MmFhMTRjZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6dGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSk7
CiB9CiAKLVJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBjcmVhdGVIYW5kbGUoY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSkKK1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlPiBjcmVhdGVIYW5kbGUoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLmdldCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggNWU4YmVl
ZGExMDBkMjVmMDkxZTdlMGMxZjc2YTRmMGNiMTRjMjQ5Ni4uMzM1ZjNmYWRmYWFlZWUzZWI2MjUx
ZWZiOTg5OTUzOTE0ZDYwMTYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmgKQEAgLTY0LDYgKzY0LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6
UmFuZ2U+IG1fcmFuZ2U7CiB9OwogCi1SZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4g
Y3JlYXRlSGFuZGxlKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOworUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZUhhbmRsZShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXgg
NGFiODJkMTI1Y2RmM2JkMTkwMWY2ZjEyNGNiNDIzZmY5YWZlYzQyMS4uY2JjMjRkNjFiNWJjOTg0
MjYzMWI0Yjg2MWM4YmQ5NGM2NGNmZTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAgLTM3LDIxICszNywyMSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvbiBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnREYXRhKGNvbnN0IE9wdGlvbmFsPE5hdmln
YXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhPiYgbW91c2VFdmVudERhdGEpCitzdGF0aWMgV2Vi
TW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnRE
YXRhKQogewogICAgIGlmIChtb3VzZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9u
RG93biAmJiBtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKTsKICAg
ICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CiB9CiAKLXN0YXRpYyBXZWJNb3VzZUV2
ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudERh
dGEoY29uc3QgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBtb3Vz
ZUV2ZW50RGF0YSkKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3lu
dGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewogICAgIGlm
IChtb3VzZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2
ZW50RGF0YS0+aXNUcnVzdGVkKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VF
dmVudDo6U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50RGF0YS0+c3ludGhldGljQ2xpY2tU
eXBlKTsKICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9UYXA7CiB9CiAgICAgCi1zdGF0aWMg
RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVu
dERhdGEoY29uc3QgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+JiBt
b3VzZUV2ZW50RGF0YSkKK3N0YXRpYyBGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
b25BY3Rpb246Ok1vdXNlRXZlbnREYXRhPiYgbW91c2VFdmVudERhdGEpCiB7CiAgICAgaWYgKG1v
dXNlRXZlbnREYXRhICYmIG1vdXNlRXZlbnREYXRhLT5idXR0b25Eb3duICYmIG1vdXNlRXZlbnRE
YXRhLT5pc1RydXN0ZWQpCiAgICAgICAgIHJldHVybiBtb3VzZUV2ZW50RGF0YS0+bG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IGI1NTQxOGRlZGNmODJlMTE4OWZhNjQyMGVjYzBkZTA1ODMy
ZGVlZTUuLjM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0
aW5nKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFNpbXBsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKFdlYlBh
Z2UmIHBhZ2UsIE5vZGUmIG5vZGUsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VU
b1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCitib29sIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShXZWJQYWdlJiBwYWdlLCBOb2RlJiBu
b2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVk
aXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2Vy
dE5vZGUpIHsKICAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhh
bmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUobm9kZSk7CkBAIC03
NywyOCArNzcsMjggQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3Vs
ZEluc2VydE5vZGUoV2ViUGFnZSYgcGFnZSwgTm9kZSYgbm9kZSwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRl
eHQoV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQorYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAg
aWYgKG1fY2xpZW50LnNob3VsZEluc2VydFRleHQpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC5z
aG91bGRJbnNlcnRUZXh0KHRvQVBJKCZwYWdlKSwgdG9BUEkodGV4dC5pbXBsKCkpLCB0b0FQSShj
cmVhdGVIYW5kbGUocmFuZ2VUb1JlcGxhY2UpLmdldCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UpCitib29sIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYgcGFn
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQogewog
ICAgIGlmIChtX2NsaWVudC5zaG91bGREZWxldGVSYW5nZSkKICAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LnNob3VsZERlbGV0ZVJhbmdlKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
ZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5
IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxs
U2VsZWN0aW5nKQogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KQogICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShmcm9tUmFuZ2UpLmdldCgpKSwgdG9BUEkoY3Jl
YXRlSGFuZGxlKHRvUmFuZ2UpLmdldCgpKSwgdG9BUEkoYWZmaW5pdHkpLCBzdGlsbFNlbGVjdGlu
ZywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpz
aG91bGRBcHBseVN0eWxlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5
bGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICBpZiAo
bV9jbGllbnQuc2hvdWxkQXBwbHlTdHlsZSkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3Vs
ZEFwcGx5U3R5bGUodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUoc3R5bGUpLmdldCgp
KSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CkBAIC0xMjksMTMgKzEyOSwxMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6ZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFN0cgogICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VTZWxlY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShub3Rp
ZmljYXRpb25OYW1lLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViUGFnZSYgcGFnZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewog
ICAgIGlmIChtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQpCiAgICAgICAgIG1fY2xpZW50
LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xp
ZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBl
cyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKaW5kZXggY2MwNmIxYWY5NDUxNWRjZTE1Y2JkNDNhZWU2ZmUxMGE2MDQ1ZTMyYi4uMzFlMTM5
NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNTQsMTcgKzU0LDE3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hv
dWxkSW5zZXJ0Tm9kZShXZWJQYWdlJiwgV2ViQ29yZTo6Tm9kZSYsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbikgZmluYWw7Ci0gICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9S
ZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOwotICAgIGJvb2wgc2hv
dWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJQYWdl
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5p
dHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkQXBwbHlTdHls
ZShXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRJbnNlcnRO
b2RlKFdlYlBhZ2UmLCBXZWJDb3JlOjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9SZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rp
b24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlVG9S
ZXBsYWNlLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hv
dWxkRGVsZXRlUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgZnJvbVJh
bmdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwg
V2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wg
c2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVz
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEJlZ2luRWRpdGluZyhXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoV2ViUGFnZSYsIGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFn
ZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7Ci0gICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQg
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAKaW5k
ZXggOGFlZWEzZTRjYjIwOGY1NjgwODIyZTkxMTVhYjBmMjMyOWFjYzc0Zi4uMjQ2YjIzYWMyMDkx
M2Y5OTYzZmIxMjhkZjdjZDU1NmU1OWM2NDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjp0aW1lbGluZVJlY29yZGluZ0NoYW5nZWQoYm9vbCBhY3RpdmUp
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlQcm94eTo6VGltZWxpbmVSZWNvcmRpbmdDaGFu
Z2VkKGFjdGl2ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3I6OnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVs
b3BlclByZWZlcmVuY2UgZGV2ZWxvcGVyUHJlZmVyZW5jZSwgT3B0aW9uYWw8Ym9vbD4gb3ZlcnJp
ZGVWYWx1ZSkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJp
ZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVu
Y2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkKIHsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSVByb3h5OjpTZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoZGV2ZWxv
cGVyUHJlZmVyZW5jZSwgb3ZlcnJpZGVWYWx1ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5o
CmluZGV4IDFiZWRjMmUzODk1NTRmY2Q4Mjg3ZDFlMWI4ZmY2MDUwOTdmMWIzMTUuLmMyODA3OTNk
YzI4YTVlYzFjOTM3Y2ZlZWUyY2FkYWYzOGYzZDkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdG9wRWxlbWVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgZWxlbWVu
dFNlbGVjdGlvbkNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCB0aW1lbGluZVJlY29yZGluZ0NoYW5n
ZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBPcHRpb25hbDxib29sPik7
CisgICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAog
ICAgIHZvaWQgc2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcAppbmRleCBlODE0N2JmNWUzNDk4YjU5OWMxZDU2MzVjZGViNGJhMGIyYWU2MWFj
Li5lZTZiYTI1ZDA3NjY3NGU3MTZmNDJhZjQ0MGNiN2QxZGNjZTcxNmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRpbWVs
aW5lUmVjb3JkaW5nQ2hhbmdlZChib29sIGFjdGl2ZSkKICAgICAgICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+dGltZWxpbmVSZWNvcmRpbmdDaGFuZ2VkKGFjdGl2ZSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlIGRldmVsb3BlclByZWZlcmVuY2UsIE9w
dGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0
RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6RGV2
ZWxvcGVyUHJlZmVyZW5jZSBkZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCiAgICAgICAg
IG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShkZXZl
bG9wZXJQcmVmZXJlbmNlLCBvdmVycmlkZVZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDE5YWYw
NjIwMGFmMmVmNzc2MDE3Yzg5ZDM5MjNiOTdjYTI0YWVmNGMuLmEwNWFlNzUwZjM2YTEzMDY2ZDA4
M2ZlYmE3YWY1MTBkZmZlNTAwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNzMsNyArNzMsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzaG93UGFpbnRSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNl
T3ZlcnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBP
cHRpb25hbDxib29sPikgZmluYWw7CisgICAgdm9pZCBzZXREZXZlbG9wZXJQcmVmZXJlbmNlT3Zl
cnJpZGUoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKIAogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAg
ICB2b2lkIHdpbGxNb3ZlVG9QYWdlKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFn
ZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGFjOTRjYzBiODJlODEyOGY3NzdhMTA5NjYwMjczY2IyNzg1MjUwOGYuLjE3M2Iy
MTg0MmQxYmZkNzJjMWQxNzBjYjI5YWU5OGRhNzhiNWMwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKIH0KIAotT3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpwYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpwYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICBzd2l0Y2ggKHJlc3VsdC5lcnJvcigpKSB7CkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZVRh
YkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkUKICAgICB9KTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlv
bmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRl
bnNpb25JRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFJlcXVlc3QpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxv
YWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQs
IGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgdXNlckFnZW50LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
bklEJiBleHRlbnNpb25JRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggMWJjNDQxODI4
MGM0ZjA2NjgzYmYwMTJmZmIwMTA4YmIwOGE4MTk0Yi4uMThlYThmZmMyYWY4MDIzYmIyOWM3Y2Rh
MTk0NGZiZTU1ZDA2M2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5oCkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJv
b2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjcmVhdGVUYWJG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
dGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9u
YWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNl
Q29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
LCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmKTsKLSAgICB2
b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29u
c3QgT3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB1
c2VyQWdlbnQsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
Jik+JiYpOworICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFVSTD4mIGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRl
eHRTZWN1cml0eU9yaWdpbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNj
cmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisgICAg
dm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBpbmplY3Rl
ZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOwogCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhl
IGZyb250ZW5kLgogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1
YXRpb25SZXN1bHRBc09iamVjdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OkV2YWx1YXRpb25SZXN1bHQpOwotICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IHBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpOworICAgIHN0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcGFyc2VFeHRlbnNpb25FcnJv
ckZyb21FdmFsdWF0aW9uUmVzdWx0KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CiAKICAgICBXZWFrUHRyPFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ5MmI0Y2E2NThi
NWU4ODBkZGM5ZjI1YjJmNzIxZDE4OTcxNGU4ZGUuLjk0ODE5ZmIwOWIwMTZkMTNmZTlmYTIwM2Jj
MDgzMDJmNjY0ZmM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNyw4ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBVbnJl
Z2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKEV4cGVjdGVkPGJvb2wsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAogICAgIENyZWF0ZVRhYkZv
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyB0YWJOYW1lLCBVUkwgdGFiSWNv
blVSTCwgVVJMIHNvdXJjZVVSTCkgLT4gKEV4cGVjdGVkPFN0cmluZywgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgT3B0aW9uYWw8VVJMPiBm
cmFtZVVSTCwgT3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIE9wdGlvbmFsPGJv
b2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIE9wdGlv
bmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwotICAgIFJlbG9hZEZv
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIE9wdGlvbmFsPGJvb2w+IGlnbm9yZUNhY2hl
LCBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudCwgT3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNj
cmlwdCkgLT4gKE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3lu
YworICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3Ry
aW5nIHNjcmlwdFNvdXJjZSwgc3RkOjpvcHRpb25hbDxVUkw+IGZyYW1lVVJMLCBzdGQ6Om9wdGlv
bmFsPFVSTD4gY29udGV4dFNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVzZUNv
bnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICBSZWxvYWRG
b3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9y
ZUNhY2hlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50LCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gaW5qZWN0ZWRTY3JpcHQpIC0+IChzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I+IGVycm9yKSBBc3luYwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vz
c2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApp
bmRleCBiZWZkMzU2NzkxYTYzNzNjMjExOGRhNzQzYTVkMzA5ZmEwMDE0YmQ2Li4wNzZiZWRlZjMx
ZmM4YzBhMWU0NWZjNTViYTZkMDE3Y2QzMWI1ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6flJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCkKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5p
ZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpq
b2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYm
KT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4m
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSKTsKICAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5OjpKb2luIHsgfSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleGNlcHRpb24p
IG11dGFibGUgewpAQCAtODUsNyArODUsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpsZWF2ZSgpCiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OkxlYXZlIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBj
YWxsYmFjaykKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHRp
bWUpOwogICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdGVTZWVrVG8geyB0aW1lIH0sIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShh
dXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTwogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKICAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpDb29yZGluYXRlUGxheSB7IH0sIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZQogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdGVQYXVzZSB7
IH0sIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKQEAgLTEzOSw3ICsxMzksNyBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcgogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYm
IGNhbGxiYWNrKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2so
Y29uc3QgU3RyaW5nJiB0cmFja0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFM
V0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9wYWdlLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
Q29vcmRpbmF0ZVNldFRyYWNrIHsgdHJhY2tJZGVudGlmaWVyIH0sIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0
aW9uKSBtdXRhYmxlIHsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29t
cAogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3Np
dGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3Rh
dGU+JiBzdGF0ZSkKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9u
U3RhdGVDaGFuZ2VkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0
YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
KTsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKQEAgLTE5MCw3ICsxOTAs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrU2Vzc2lvblRvVGlt
ZShkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXlTZXNz
aW9uKE9wdGlvbmFsPGRvdWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxk
b3VibGU+IGF0VGltZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JD
bGllbnQgPSBjbGllbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
aAppbmRleCA1YTdjM2EzODZmZGIzOThhNzU3ZTVjZmNmZDg4NTY2ZjEzMDMzNDgyLi5iZTVlZjA4
ZGQwZWU2OTkwYWRmMWIzZTAzYjM5MmZlMDQyOGJmMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5oCkBAIC01NSwyMSArNTUsMjEgQEAgcHJpdmF0ZToKIAogICAg
IC8vIE1lc3NhZ2VSZWNlaXZlcnMuCiAgICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShkb3VibGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgcGxheVNlc3Npb24o
T3B0aW9uYWw8ZG91YmxlPiwgT3B0aW9uYWw8ZG91YmxlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBwbGF5U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPGRvdWJsZT4s
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJD
b3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKTsKIAogICAgIC8vIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZSBvdmVycmlkZXMuCiAgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB2b2lkIGpvaW4oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbGVhdmUoKSBmaW5hbDsK
LSAgICB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwbGF5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJikgZmluYWw7
Ci0gICAgdm9pZCBwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAg
IHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBw
b3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9u
U3RhdGU+JikgZmluYWw7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSBmaW5hbDsKICAgICB2b2lk
IHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpIGZpbmFs
OwogICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxh
eWJhY2tTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB0cmFja0lkZW50aWZpZXJDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IubWVzc2FnZXMuaW4KaW5kZXggZWE0NTk5NDBiOWJlZjlhNDNhYzlkMjhlM2EzZDkz
Y2VjNGVkNTg0NC4uMTlkMzdkZGViNDlhMGUyMTI0MmMzMGJjNmMzMzc4YmY1OTgyMDcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLm1lc3NhZ2Vz
LmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIE5vdFJlZkNvdW50ZWQgewogCiAgICAgU2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRp
bWUpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAotICAgIFBsYXlTZXNzaW9uKE9wdGlvbmFsPGRv
dWJsZT4gYXRUaW1lLCBPcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lKSAtPiAoYm9vbCByZXN1bHQp
IEFzeW5jCisgICAgUGxheVNlc3Npb24oc3RkOjpvcHRpb25hbDxkb3VibGU+IGF0VGltZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGhvc3RUaW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKICAg
ICBQYXVzZVNlc3Npb24oKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRl
bnNpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAppbmRleCAyMWE2Nzg5MmQ0ZjU0NWFmYzIwYjA5OWEz
MDM1ZmZjZjZmODdiZjQ5Li43NDIwN2EzNjQ1YTdjNWQ4YjA4YTkxMGYzNTkzMTY0MGRkNTRmZGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIGJvb2wgTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9uczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTWVkaWFEZXZpY2VTYW5kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQubV9pZHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gaGFuZGxlczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBoYW5kbGVzOwogICAgIGRlY29kZXIgPj4gaGFu
ZGxlczsKICAgICBpZiAoIWhhbmRsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDJmYTQ1YzRmY2JlY2NiODA0OGEyYzBjZmRiNmMwYzc3M2Ux
NTM5OTMuLjU0Mzc2ZWExZTI2ZjQwMGZiNWI3N2M2NTc2YzhmMWNlYjk3YWU5MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzCiB9CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbElkZW50aWZpZXIgbG9jYWxJZGVudGlmaWVyLCBXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXIgcmVtb3RlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxib29sPik+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6Y29ubmVjdFRvUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2UoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGxvY2FsSWRlbnRpZmllciwgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJ
ZGVudGlmaWVyIHJlbW90ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxib29sPik+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbGJhY2soUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY29ubmVjdFRvUmVtb3RlU291cmNlKGxv
Y2FsSWRlbnRpZmllciwgcmVtb3RlSWRlbnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aAppbmRleCAyY2YzNTVjOTlhNjFlYzYyOGU5MGZiNThlMjUwZDFkMWEzZjEwZmZhLi42NDZkMWRm
MjdiZTdkNDYxNmQ3MzkzNjA5MjUxNWRkYThlYWQ1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aApAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoQVVESVRfVE9L
RU4pCi0gICAgdm9pZCBzZXROZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0
VG9rZW47IH0KLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBuZXR3b3JrUHJvY2Vzc0F1ZGl0
VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbjsgfQorICAg
IHZvaWQgc2V0TmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbikgeyBtX25ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IGF1ZGl0VG9r
ZW47IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG5ldHdvcmtQcm9jZXNzQXVk
aXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuOyB9CiAj
ZW5kaWYKIAogICAgIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVBY2NlcHRQb2xpY3k7IH0KQEAgLTEwOSw3
ICsxMDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICB2b2lkIGNvbm5lY3RUb1JUQ0RhdGFD
aGFubmVsUmVtb3RlU291cmNlKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3Vy
Y2UsIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPGJvb2w+KT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9SVENE
YXRhQ2hhbm5lbFJlbW90ZVNvdXJjZShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
c291cmNlLCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaGFuZGxlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+KT4mJik7CiAjZW5kaWYKIAogICAg
IHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4KICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKLSAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX25ldHdvcmtQcm9j
ZXNzQXVkaXRUb2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fbmV0d29y
a1Byb2Nlc3NBdWRpdFRva2VuOwogI2VuZGlmCiAKICAgICBSZWZQdHI8V2ViSURCQ29ubmVjdGlv
blRvU2VydmVyPiBtX3dlYklEQkNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KaW5kZXggZWEyYTg2NzNjYzIwOWE1ODRiNjRjMGY4ODVlZmE4NmViZDg1
ZTI1My4uYzhiNGExOGY3ZTk0MjQ1NGIwYWE5NjY2MTJmMTkzYWNmZGFjODY0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzgsNyArMzgsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICBDb25uZWN0VG9SVENEYXRhQ2hhbm5lbFJlbW90
ZVNvdXJjZShzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwg
c3RydWN0IFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBoYW5kbGVyKSAtPiAoT3B0
aW9uYWw8Ym9vbD4gcmVzdWx0KSBBc3luYworICAgIENvbm5lY3RUb1JUQ0RhdGFDaGFubmVsUmVt
b3RlU291cmNlKHN0cnVjdCBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBzdHJ1Y3QgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGhhbmRsZXIpIC0+IChz
dGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCkgQXN5bmMKICNlbmRpZgogCiAgICAgQ2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5IGhhc0FjdGl2aXR5KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oCmlu
ZGV4IDlmNDY4NWQxM2FiZDJiNGFjOGM1Mzc4YjhlNTEyZjljMDI5ZGIzYjAuLjAzNzYzYWE1ZmI4
ZWJkM2JjMjQyNGU3Njk5ZWIxMmI1Zjc4ZmM2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbklu
Zm8gewogICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uOwogICAgIFdlYkNvcmU6OkhUVFBD
b29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5OwogI2lmIEhBVkUoQVVESVRfVE9L
RU4pCi0gICAgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CiAjZW5kaWYKIAogICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA1
MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZmMDQ0NDQxNGI3NmJhZDA2Li40YjBiNjZiZWJiZjc2MDli
Y2E0MGY5MjhlNjQwMThhMzEwZDk5YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01NTksNyArNTU5LDcg
QEAgV2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVzdWx0IFdlYkxvYWRlclN0cmF0ZWd5Ojps
b2FkRGF0YVVSTFN5bmNocm9ub3VzbHkoY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRp
b25hbDxXZWJMb2FkZXJTdHJhdGVneTo6U3luY0xvYWRSZXN1bHQ+IFdlYkxvYWRlclN0cmF0ZWd5
Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlcihGcmFtZUxvYWRl
ciYgZnJhbWVMb2FkZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorc3RkOjpvcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVn
eTo6U3luY0xvYWRSZXN1bHQ+IFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25v
dXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlcihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291
cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJG
cmFtZUxvYWRlckNsaWVudCA/ICZ3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51
bGxwdHI7CkBAIC03NzQsNyArNzc0LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29u
bmVjdFRvKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2UKICAgICAg
ICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQoKSk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyOwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciA9IFdlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVy
KCk7CiAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRs
ZXJzLmFkZCgqcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCmluZGV4IDZlNTZmYzQwNjdiM2U4OTQ1ZjY1OTgzMTRhMjZmOGJkMmExZmI3
NWMuLmNhMjM0OTk1ODY2NmE4MDFiMGUwYTZiZDc2N2RiYmNjY2ZiNzE2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApA
QCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIH07Ci0gICAgT3B0
aW9uYWw8U3luY0xvYWRSZXN1bHQ+IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hl
bWVIYW5kbGVyKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTeW5j
TG9hZFJlc3VsdD4gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIo
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBTeW5jTG9hZFJlc3VsdCBsb2FkRGF0YVVSTFN5
bmNocm9ub3VzbHkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIo
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBiYzBi
Y2Q5ZGVmZDIwZWUyY2I4Mjk4ODcyYzg5MTk3ODI5Mjk1YWQyLi4zYjRhYzI5YjBkZjc2NWMyNDlm
NzcyNTcxZjQ5NDY2YzU4OWU3MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IFdlYlNvY2tldFN0cmVhbTo6cGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIEZ1bmN0aW9uPAogICAgIG1fc2VuZERhdGFDYWxsYmFja3MuYWRkKGRhdGFJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0
U3RyZWFtOjpwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBo
ZWFkZXJGaWVsZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJTb2NrZXRTdHJlYW06OnBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rpb248dm9p
ZChib29sLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0
X3QgbmV4dERhdGFJZGVudGlmaWVyID0gMTsKICAgICB1aW50NjRfdCBkYXRhSWRlbnRpZmllciA9
IG5leHREYXRhSWRlbnRpZmllcisrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCBiNDNjYjJlZmFkMWUxMDFlZTI2NWI5M2Rk
ZTliMDYxMjczNmEwOTc4Li40NmQwNDc2NWJlNjcxZWEzNGQ3MWExYTNkMDEzOTliZDIwN2ZhOTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gU29ja2V0U3Ry
ZWFtSGFuZGxlCiAgICAgdm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCwg
RnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5k
c2hha2UoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4m
Jik7CisgICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCosIHNpemVf
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eT4mLCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmKTsKICAgICB2b2lkIHBsYXRmb3Jt
Q2xvc2UoKSBmaW5hbDsKICAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1NvY2tldC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldC5oCmluZGV4IDMyM2YyNWVlOGZkODFiMDI2MzBkMmYyNTlhMWFmYjg4NGI0Y2Y1
ZTQuLmM1OGI1OTkzZDMwYTY1NDBjNjRjZDlkNWQxMDNjNTFiZjA0ZTU3NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U1RBVEVfQklORElORyB9OwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1BWF9TT0NLRVRf
T1BUSU9OIHsgcnRjOjpTb2NrZXQ6Ok9QVF9SVFBfU0VORFRJTUVfRVhUTl9JRCArIDEgfTsKLSAg
ICBPcHRpb25hbDxpbnQ+IG1fb3B0aW9uc1tNQVhfU09DS0VUX09QVElPTl07CisgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IG1fb3B0aW9uc1tNQVhfU09DS0VUX09QVElPTl07CiAKICAgICBEZXF1ZTxz
aXplX3Q+IG1fYmVpbmdTZW50UGFja2V0U2l6ZXM7CiAgICAgc2l6ZV90IG1fYXZhaWxhYmxlU2Vu
ZGluZ0J5dGVzIHsgNjU1MzYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGZhYjAwZGFkYzY2NDYzNTNjNjgyZjkxOWIwNWUx
ZWFhYzJiMzFiYzAuLmMwMmY4NDBjNDA3NDgwMWJkODc0ZjZjZjgzMmU5N2I4ODQxZjVjNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtMjM0Miw3ICsyMzQyLDcgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFuc01lbnUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBPcHRpb25hbDxpbnQ+IG9wZW5JblByZXZpZXdJ
bmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gb3BlbkluUHJldmlld0luZGV4OwogICAgIFZl
Y3RvcjxQREZDb250ZXh0TWVudUl0ZW0+IGl0ZW1zOwogICAgIGF1dG8gaXRlbUNvdW50ID0gW25z
TWVudSBudW1iZXJPZkl0ZW1zXTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1Db3VudDsg
aSsrKSB7CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4
dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICB9CiAgICAgUERGQ29u
dGV4dE1lbnUgY29udGV4dE1lbnUgeyBwb2ludCwgV1RGTW92ZShpdGVtcyksIFdURk1vdmUob3Bl
bkluUHJldmlld0luZGV4KSB9OwogCi0gICAgT3B0aW9uYWw8aW50PiBzZWxlY3RlZEluZGV4ID0g
LTE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNlbGVjdGVkSW5kZXggPSAtMTsKICAgICB3ZWJQ
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UERGQ29udGV4dE1lbnUo
Y29udGV4dE1lbnUsIG1faWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQ
REZDb250ZXh0TWVudTo6UmVwbHkoc2VsZWN0ZWRJbmRleCkpOwogCiAgICAgaWYgKHNlbGVjdGVk
SW5kZXggJiYgKnNlbGVjdGVkSW5kZXggPj0gMCAmJiAqc2VsZWN0ZWRJbmRleCA8IGl0ZW1Db3Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggYjZmZDQ0NDA3YzI5Nzc1NGJiMjFiZDQwNmVlYTIwZGRlN2M2ZDFjZS4uYjY0YWNhYmRm
NzUzYWE4OWU3YjcwZTRkNTZlNTVkNzcwZWQzMjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVx
dWVzdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nl
c3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxs
b3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3Qt
PmFsbG93UG9wdXBzKCkgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0
LCB0cnkgdG8gZmluZCBhIHRhcmdldCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBm
cmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7
CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0
KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHBy
b3RlY3QgdGhlIHBsdWctaW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9i
amVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmpl
Y3RNYXApOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxv
d1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNl
ckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmV2YWx1YXRlKG5wT2JqZWN0LCBzY3JpcHRT
dHJpbmcsIHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IGM2YWYzZmI4YzQ3
YjgxZDZlZTg2NzUwM2Y5ZDVmZjlkMzI2N2Q4YTguLmE4NWQ2YjdhNzY3NGExOWZlNjc3MzJjMTZi
NTYxMzk2YzQxZWRlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cmVmcmVzaFBsdWdpbnMoKQogI2VuZGlmCiB9CiAK
LVZlY3RvcjxQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oUGFn
ZSYgcGFnZSwgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYgc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpCitWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpCiB7
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgcG9wdWxhdGVQbHVnaW5DYWNo
ZShwYWdlKTsKQEAgLTg4LDcgKzg4LDcgQEAgVmVjdG9yPFBsdWdpbkluZm8+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3IKIAogVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJs
ZVBsdWdpbkluZm8oUGFnZSYgcGFnZSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVn
aW5JZGVudGlmaWVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0
ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnM7CiAgICAgYXV0
byBwbHVnaW5zID0gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7
CiAKICAgICBwbHVnaW5zLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoYXV0byYgcGx1Z2luKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oCmluZGV4IDQ4MzgzYjM2M2Y1OTJlYTQwMDk4NjkxZTRiODk5ODA4MWY2MGQ0
MzIuLjk3MDY2NmVhYzAwZGEwODhhZGJkZGQyZGEwZDBiYzNlZDkyZWRlNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyKCk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0
IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIApAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyB7
IGZhbHNlIH07CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2lu
czsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRBcHBsaWNhdGlvblBs
dWdpbnM7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXI+PiBtX2NhY2hlZFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBtX2NhY2hl
ZFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAppbmRleCBhYjU3MGJmZTI5M2Y2NGFjNzI3MzAzYzlhZWY2ZjA3ODQ0M2YzNjliLi5lNGQ3
MWZkMjNkZWJhNGRlYWQxYjEwZmRiOTQyM2JjMGI2ZTA0NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50
aWZpZXIgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
Cit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1c2VyQWdlbnQgfSk7CiB9CkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVJc0ltcG9y
dGVkKCkKICAgICAgICAgbV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQudGFrZUZpcnN0KCkoKTsK
IH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmRpZE1hdGNoUmVnaXN0cmF0aW9uKHVp
bnQ2NF90IG1hdGNoaW5nUmVxdWVzdCwgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE+JiYgcmVzdWx0KQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmRpZE1hdGNoUmVn
aXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoaW5nUmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNjk3OGExZTUzNzY4MDc1MmE3YzA2MTE5
YzQ2YWM0ZjVkM2Q4NDJlYy4uMWI1NTRjOTQ0OWRhNGVhYTI0NjE3ZjExYTExZmE3NTNiNWQ2ZWFm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTczLDEyICs3MywxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBm
aW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKKyAgICB2
b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIHNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2VydmVyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudE9yV29y
a2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25P
cjxib29sPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkws
IFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3Ry
YXRpb24odWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOworICAgIHZvaWQgZGlkTWF0Y2hSZWdp
c3RyYXRpb24odWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCBkaWRH
ZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik7CiAgICAgdm9pZCB3aGVu
UmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BP
cmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNr
SUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGI3ODE4Njg2OGJlMDg2NDAzMGQwYTEyNGI1
Njc1MmNmNWE2MTY3MTEuLmQyMmQ2ZmQ2OGEyN2ZhM2NhOGQxNzQ1ZjA2NmYyZDI3MGQxYmZmZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAg
bWVzc2FnZXMgLT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBKb2JSZWplY3RlZEluU2Vy
dmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0
aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
ciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgU3RhcnRTY3JpcHRGZXRj
aEZvclNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRp
b25LZXksIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCi0gICAgVXBk
YXRlUmVnaXN0cmF0aW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRh
dGE+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgIFVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IGVudW06dWludDhfdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3Rh
dGUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQogICAgIFVwZGF0ZVdvcmtlclN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQogICAgIEZpcmVVcGRhdGVGb3VuZEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgU2V0UmVnaXN0cmF0aW9uTGFzdFVwZGF0ZVRpbWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2FsbFRpbWUgbGFzdFVwZGF0ZVRpbWUp
CkBAIC0zOCw3ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAg
ICAgU2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGhhbmRsZSkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyRGF0YSBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAKLSAg
ICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBP
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gZGF0YSkKKyAg
ICBEaWRNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBkYXRh
KQogICAgIERpZEdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmll
ciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3Ry
YXRpb25zKQogICAgIFJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSBkYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MDkwMDU0ZjAxNjA2NTlmMDZmYjU3ZTEzMjNhYWYzYmQwY2EzODE2MS4uNjM4NDExN2NkNWUxNTUx
NmQwOThjZWFiMDZkM2M1NDliN2QxYzhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcApAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKICAgICBtX3VzZXJBZ2Vu
dCA9IFdURk1vdmUodXNlckFnZW50KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKQordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlclN0YXJ0ZWQoc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2Vz
SGFuZGxlRmV0Y2gpCiB7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3Rh
cnRlZCB7IGpvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZG9lc0hh
bmRsZUZldGNoIH0sIDApOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQor
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckZhaWxlZFRv
U3RhcnQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRh
dGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKQogewogICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6U2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQgeyBqb2JEYXRhSWRlbnRpZmllciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UgfSwgMCk7CiB9CkBAIC0y
NDIsNyArMjQyLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRG
ZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnYKICAgICB9CiAKICAgICBhdXRv
IGNsaWVudCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNyZWF0ZShtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzLmNvcHlSZWYoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QucmVx
dWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4pOwotICAgIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZDsKICAgICBpZiAo
b3B0aW9ucy5jbGllbnRJZGVudGlmaWVyKQogICAgICAgICBjbGllbnRJZCA9IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG9wdGlvbnMu
Y2xpZW50SWRlbnRpZmllci52YWx1ZSgpIH07CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZXJ2aQogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nl
c3NmdWwpCiB7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxsKGpvYkRh
dGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1bCksIDAp
OwogfQpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlCiAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyIHsgcmVxdWVzdElkZW50aWZp
ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOwogfQog
Ci12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikK
IHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChoYXNTZWN1cml0eUVy
cm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA5NWQ4MTgxZjIzNTM2
ZjBlYjMyYWFkZDhiN2U3ZWQ2ZjdlNjY1MjYyLi4zMzE0MzM5ZTA5M2JjNjVjNzJkYmE1MmNlYWRh
YWM3NDUyZjFjZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLgogICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOworICAg
IHZvaWQgZGlkRmluaXNoSW5zdGFsbChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2
aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCi0gICAgdm9pZCBzZXJ2aWNlV29y
a2VyU3RhcnRlZChPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0
Y2gpIGZpbmFsOwotICAgIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7
CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJB
Z2VudCk7CiAgICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKICAgICB2
b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKQEAgLTk3LDcgKzk3LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogI2VuZGlmCi0gICAgdm9pZCBm
aW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNT
ZWN1cml0eUVycm9yKTsKKyAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBt
YXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNl
ckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTMxLDgg
KzEzMSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cGFnZUlEOyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mcmFtZUlEOyB9CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
YWdlSUQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCiAgICAgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzU2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4NGIxNjhhMDQw
ZWNkYmM4NTI2NThmN2Q2Y2FkMTA1MWJjMzZhZTNiLi5mNjY0YTRlOTEyMmMxNTFlMmM1Njc1NTA5
MDVlYzk1MDI1NzdiYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsKICNlbmRpZgotICAgIEZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlF
cnJvcikKKyAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENv
bXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudHNEYXRhKQogICAgIFNldFVzZXJBZ2Vu
dChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaAppbmRleCBlMGY0N2Q4NmE5NjhmYzhjZjk1Y2VmM2EzZTE1MDQzNTRiYjFlZjU1
Li45ZGFhYmUxNGEzNGIzYzA5ZjI3ZGM4ZGY1NDMwNGVlNzUzMTY5NWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1fZmV0Y2hJ
ZGVudGlmaWVyOwotICAgIE9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93
YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAg
ICBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBt
X3Jlc3BvbnNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggZmI2
MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0OThlODBkMGVmNTYxNy4uNzJlZTliYTRhNTJhMDA4OTMx
OWYyZGYwMjVmYzBmYmZmNWYxYzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJiB3b3JsZCwgY29uc3QgT3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU2NyaXB0SWRlbnRpZmll
ciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBp
bW1lZGlhdGVseSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+JiB1c2VyU2NyaXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJT
Y3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKICAgICBp
ZiAoaW1tZWRpYXRlbHkgPT0gSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpZZXMpIHsKICAg
ICAgICAgUGFnZTo6Zm9yRWFjaFBhZ2UoWyZdIChhdXRvJiBwYWdlKSB7CkBAIC00MjMsNyArNDIz
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJbnRlcm5h
bChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBh
dXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgW10geyBy
ZXR1cm4gVmVjdG9yPHN0ZDo6cGFpcjxPcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJT
Y3JpcHQ+PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQg
PSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHVzZXJTY3JpcHRJZGVudGlmaWVyICYmIHNjcmlwdHNJ
bldvcmxkLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgcGFpcikgeyByZXR1cm4gcGFpci5maXJzdCA9
PSB1c2VyU2NyaXB0SWRlbnRpZmllcjsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDcwLDkgKzQ3MCw5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1v
dmVVc2VyU2NyaXB0cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsCiAgICAgbV91c2Vy
U2NyaXB0cy5yZW1vdmUoJndvcmxkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYg
d29ybGQsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVy
LCBVc2VyU3R5bGVTaGVldCYmIHVzZXJTdHlsZVNoZWV0KQordm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYgd29ybGQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiB1c2VyU3R5bGVTaGVl
dElkZW50aWZpZXIsIFVzZXJTdHlsZVNoZWV0JiYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgYXV0
byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwg
W10geyByZXR1cm4gVmVjdG9yPHN0ZDo6cGFpcjxPcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxl
U2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0
dXJuIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Pj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICh1c2VyU3R5bGVT
aGVldElkZW50aWZpZXIgJiYgc3R5bGVTaGVldHNJbldvcmxkLmZpbmRNYXRjaGluZyhbJl0oYXV0
byYgcGFpcikgeyByZXR1cm4gcGFpci5maXJzdCA9PSB1c2VyU3R5bGVTaGVldElkZW50aWZpZXI7
IH0pICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaAppbmRleCBjZTkwYTlkOTNlNDEwODIyYmQzNDZlZDI2MjQ4Njk1OTM3NmEwZjMxLi4y
MGZmODUxNWIxMmIxOWIxZmRkYjkwYWI3ODdmMGE4MTFjNjRiNzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oCkBAIC0xMDgsOSArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRVc2VyU2Ny
aXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFsPHVp
bnQ2NF90PiYgdXNlclNjcmlwdElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTY3JpcHQmJiwgSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHRJbnRlcm5h
bChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4mIHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYsIEluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0SW50ZXJuYWwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdXNlclN0eWxlU2hlZXRJZGVudGlm
aWVyLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYmKTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0JiYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsK
ICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogICAgIHZvaWQgYWRkVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVySW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIHVpbnQ2
NF90IHVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CkBAIC0xMTksMTAgKzExOSwxMCBAQCBwcml2YXRlOgogCiAgICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPE9wdGlvbmFs
PHVpbnQ2NF90PiwgV2ViQ29yZTo6VXNlclNjcmlwdD4+PiBXb3JsZFRvVXNlclNjcmlwdE1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBW
ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+LCBXZWJDb3JlOjpVc2VyU2Ny
aXB0Pj4+IFdvcmxkVG9Vc2VyU2NyaXB0TWFwOwogICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1f
dXNlclNjcmlwdHM7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ+LCBWZWN0b3I8c3RkOjpwYWlyPE9wdGlvbmFsPHVpbnQ2NF90PiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQ+Pj4gV29ybGRUb1VzZXJTdHlsZVNoZWV0TWFwOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4sIFZlY3RvcjxzdGQ6
OnBhaXI8c3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4+
IFdvcmxkVG9Vc2VyU3R5bGVTaGVldE1hcDsKICAgICBXb3JsZFRvVXNlclN0eWxlU2hlZXRNYXAg
bV91c2VyU3R5bGVTaGVldHM7CiAKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJl
YWJsZUJpdG1hcFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAppbmRleCA3OWEwNDYyOWM5YzIy
NzFmNTk0NWE0NTFhMmFhYTMxYTU0NjA4MjRkLi42NDdhNzc1MDFjZDljMjRkMDlmYTVjMWU3OTg2
ZDY5OWFlYmMwNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJl
bmRlckltYWdlJiByZW5kZXJJbWFnZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBzY3JlZW5TaXplSW5Q
aXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFnZXMgYWxsb3dBbmltYXRlZEltYWdlcykKK1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVy
SW1hZ2UsIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93
QW5pbWF0ZWRJbWFnZXMgYWxsb3dBbmltYXRlZEltYWdlcykKIHsKICAgICBhdXRvKiBjYWNoZWRJ
bWFnZSA9IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8
fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5oCmluZGV4IGFmM2Q5ZThhZDRiNmU2ZDQxNGQ0MjM1NDhhMzI5NDcyMmYxNzE3NTMu
LjAwOGNmZDc4MmQwN2VmZGJlNzhiMmI2NjQ0YmU1ODFiMTJkM2VjNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hh
cmVhYmxlQml0bWFwVXRpbGl0aWVzLmgKQEAgLTM4LDYgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGVudW0gY2xhc3MgQWxsb3dBbmltYXRlZElt
YWdlcyA6IGJvb2wgeyBObywgWWVzIH07Ci1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFNpemU+IHNjcmVlblNpemVJblBpeGVscyA9IHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRl
ZEltYWdlcyA9IEFsbG93QW5pbWF0ZWRJbWFnZXM6Olllcyk7CitSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxs
b3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKIAog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMThjMTc1OTJkNGM0OTM5YjkzZWUzNTI5Y2I1
Y2ZiNjA1OThiNDkwOC4uZTlmNDZkOTFmMDEwNDM3ZDliOWFkZDhmYjI4NzZkMDhjNGU5NDMxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBQYWdlKiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiB3aW5kb3dGZQogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3Jl
RnJhbWUoZnJhbWUpOwogCi0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsK
LSAgICBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAg
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQ
cm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2Uo
KS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVx
dWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFtZXRlcnMp
LCBtX3BhZ2UuaWRlbnRpZmllcigpLCBJUEM6OlRpbWVvdXQ6OmluZmluaXR5KCksIElQQzo6U2Vu
ZFN5bmNPcHRpb246Ok1haW50YWluT3JkZXJpbmdXaXRoQXN5bmNNZXNzYWdlcykpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC01MzEsNyArNTMxLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OmhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGFnZS5ob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZp
Y2UoKTsKIH0KIAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViQ2hyb21lQ2xp
ZW50Ojpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJDaHJvbWVDbGllbnQ6
OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcGFnZS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRp
bmdEZXZpY2UoKTsKIH0KQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBDb21wbGV0
aQogICAgIG1fcGFnZS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dDb250YWN0UGlja2VyKGNvbnN0IFdl
YkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYg
Y2FsbGJhY2spCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd0NvbnRhY3RQaWNrZXIoY29uc3Qg
V2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIG1fcGFnZS5zaG93Q29udGFjdFBpY2tlcihyZXF1ZXN0
RGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xs
YmFyU3R5bGUgbmV3U3R5bGUKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+
KG5ld1N0eWxlKSkpOwogfQogCi1PcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNo
cm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkKK3N0ZDo6b3B0aW9u
YWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBXZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS5zY3JvbGxiYXJPdmVybGF5
U3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4NzhhNTg2Yjk3NGY4NDE5Mzc0ZWYy
ZmMzYmY4NGRkNDU5YTk3MzhhLi41N2QzMjhmZTY4Zjg1NGJkODk1MzM5ZDQzNWJlZWE2ZDJkNmEy
N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNl
KCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3Rlcmlz
dGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29u
c3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25z
dCBmaW5hbDsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4g
cG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkgY29u
c3QgZmluYWw7CiAKICAgICAvLyBIb3N0V2luZG93IG1lbWJlciBmdW5jdGlvbiBmaW5hbHMuCkBA
IC0yMDEsNyArMjAxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNv
cmU6OkZyYW1lJiwgV2ViQ29yZTo6RmlsZUNob29zZXImKSBmaW5hbDsKICAgICB2b2lkIHNob3dT
aGFyZVNoZWV0KFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZvaWQgc2hvd0NvbnRhY3RQaWNr
ZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJikg
ZmluYWw7CisgICAgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0
c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9h
ZGVyJikgZmluYWw7CiAKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3Im
KSBmaW5hbDsKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5U2Ny
b2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7
CiAgICAgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKFdlYkNvcmU6OlNj
cm9sbGJhclN0eWxlIG5ld1N0eWxlKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHBy
ZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6Q29s
b3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAKaW5kZXggNzczZjIwNTU5N2RkMDg3
YjRkODMxYTU3ODNjYTM0YzdmNjQwYzFjZS4uYTEzMDIyY2I4ZjZlZTY2MzkzM2RkODRiNjdmOGY2
ZjA0NDA4Y2VkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXI6OmRldmljZU9yaWVudGF0aW9uQ2hhbmdlZChkb3VibGUgYWxwaGEs
CiAgICAgfQogfQogCi12b2lkIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI6OmRl
dmljZU1vdGlvbkNoYW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0
aW9uLCBkb3VibGUgekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdH
cmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgT3B0aW9uYWw8ZG91YmxlPiB4Um90YXRpb25SYXRl
LCBPcHRpb25hbDxkb3VibGU+IHlSb3RhdGlvblJhdGUsIE9wdGlvbmFsPGRvdWJsZT4gelJvdGF0
aW9uUmF0ZSkKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjo6ZGV2aWNl
TW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24s
IGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geFJvdGF0aW9uUmF0
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHlSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB6Um90YXRpb25SYXRlKQogewogICAgIFZlY3RvcjxXZWFrUHRyPFdlYkNvcmU6Ok1vdGlv
bk1hbmFnZXJDbGllbnQ+PiBjbGllbnRzOwogICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9kZXZp
Y2VNb3Rpb25DbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmgKaW5kZXggMmZiZWJiNGI1YTNjOGY0MTAyY2YxYjMzMzdjOWI4Mzk3YzY3
NGNlMy4uMzJkNTIxNjg5YWMwODg3NGVhMDVjNjExZDc3MzliYjNmMzNkZGM0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oCkBAIC01MSw3
ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nRGV2aWNlTW90aW9uKFdl
YkNvcmU6Ok1vdGlvbk1hbmFnZXJDbGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGlu
Z0RldmljZU1vdGlvbihXZWJDb3JlOjpNb3Rpb25NYW5hZ2VyQ2xpZW50JikgZmluYWw7CiAgICAg
dm9pZCBkZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUpIGZpbmFsOwotICAgIHZvaWQgZGV2aWNlTW90aW9uQ2hhbmdlZChkb3VibGUs
IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBPcHRpb25hbDxkb3VibGU+
LCBPcHRpb25hbDxkb3VibGU+LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIGRl
dmljZU1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgppbmRleCBhOTk1NDdjMjZkMjc2NjJh
ODIxMTQwY2Q0NDJhNWQyMGQyMmZlMDQxLi4zMzljZDIxNWQ4NTU1MzIyNGJiNjY4NjdlN2E5NjU3
MTY5YTVjNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNiBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiBtZXNzYWdl
cyAtPiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIHsKICAgICBEZXZpY2VPcmll
bnRhdGlvbkNoYW5nZWQoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hLCBk
b3VibGUgY29tcGFzc0hlYWRpbmcsIGRvdWJsZSBjb21wYXNzQWNjdXJhY3kpCi0gICAgRGV2aWNl
TW90aW9uQ2hhbmdlZChkb3VibGUgeEFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24s
IGRvdWJsZSB6QWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVy
YXRpb25JbmNsdWRpbmdHcmF2aXR5LCBPcHRpb25hbDxkb3VibGU+IHhSb3RhdGlvblJhdGUsIE9w
dGlvbmFsPGRvdWJsZT4geVJvdGF0aW9uUmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiB6Um90YXRpb25S
YXRlKQorICAgIERldmljZU1vdGlvbkNoYW5nZWQoZG91YmxlIHhBY2NlbGVyYXRpb24sIGRvdWJs
ZSB5QWNjZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRp
b25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHks
IGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHhSb3RhdGlvblJhdGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5Um90YXRpb25SYXRlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gelJvdGF0aW9uUmF0ZSkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCAwMDVmN2JlMGU1NWU4MTQzZGQwNjdjYmE0MzMzNDEwYjYwMDdiMWJh
Li45MzBjYjMzMzYxZGQzOGQ3Y2E2MzBmNDUxMmVkZjExMTVhMmM3ZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVUZXh0
Q2hlY2tpbmdSZXF1ZXN0SUQoKQogICAgIHJldHVybiB1bmlxdWVUZXh0Q2hlY2tpbmdSZXF1ZXN0
SUQrKzsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hv
dWxkRGVsZXRlUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQog
ewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxk
RGVsZXRlUmFuZ2UoKm1fcGFnZSwgcmFuZ2UpOwogfQpAQCAtMTI2LDIyICsxMjYsMjIgQEAgYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hv
dWxkRW5kRWRpdGluZygqbV9wYWdlLCByYW5nZSk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzaG91bGRJbnNlcnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCitib29sIFdlYkVk
aXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlJiBub2RlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rp
b24pCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5z
aG91bGRJbnNlcnROb2RlKCptX3BhZ2UsIG5vZGUsIHJhbmdlVG9SZXBsYWNlLCBhY3Rpb24pOwog
fQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2VUb1JlcGxhY2UsIEVkaXRv
ckluc2VydEFjdGlvbiBhY3Rpb24pCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiByYW5nZVRvUmVwbGFjZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKIHsKICAgICByZXR1
cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEluc2VydFRleHQo
Km1fcGFnZSwgdGV4dCwgcmFuZ2VUb1JlcGxhY2UsIGFjdGlvbik7CiB9CiAKLWJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2Us
IEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRv
UmFuZ2UsIEFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIHJl
dHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZSgqbV9wYWdlLCBmcm9tUmFuZ2UsIHRvUmFuZ2UsIGFmZmluaXR5LCBzdGlsbFNl
bGVjdGluZyk7CiB9CiAgICAgCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHls
ZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJhbmdlKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCBzdHlsZSwgcmFuZ2UpOwogfQpAQCAtMjY2LDEy
ICsyNjYsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1f
cGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0
ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYmFkMGNiMzcxMmE0Mzg1MjBi
NThlMTZiMjA0MzZkZWE4NGQ1NTAzNi4uMzBlNTZmNzM4ZGQ4ZTVjMTA1MDhmY2FjMDdlNjU1OTY1
ZjdiNDlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVS
YW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgZmluYWw7CiAgICAgYm9vbCBpc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgZmluYWw7CkBAIC01NiwxMSArNTYsMTEg
QEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBXZWJD
b3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9k
ZShXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
V2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2Vy
dFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAgICBib29sIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBm
cm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgdG9SYW5nZSwg
V2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOworICAgIGJvb2wg
c2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikg
ZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwgYm9v
bCBzdGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxl
KGNvbnN0IFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBX
ZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOwogICAg
IGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFu
Z2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCkBAIC04NSw5ICs4NSw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxlZENvbXBvc2l0aW9uKCkgZmluYWw7CiAgICAg
dm9pZCBkaWRVcGRhdGVDb21wb3NpdGlvbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRW5kRWRpdGlu
ZygpIGZpbmFsOwotICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOworICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9T
dGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzZWExY2EwNjcw
YmNjMDQ0NGQxMDQxMjE3NGU2OGVmMDk4YzllMmIyLi41ZWQyMzFjODU1YzA1OWVkYWY3MzQ4MWQ1
MGI5MzE4ZTRlZTYyMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50
KCkKICAgICBtX2ZyYW1lLT5pbnZhbGlkYXRlKCk7CiB9CiAKLU9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigp
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpwYWdlSUQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUtPnBh
Z2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwpAQCAt
MTM3LDcgKzEzNyw3IEBAIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cGFnZUlEKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPmZyYW1lSUQoKTsKIH0KQEAg
LTU1NSw3ICs1NTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCB0cnVuY2F0ZWRUaXRsZS5zdHJpbmcsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIE9w
dGlvbmFsPFVzZWRMZWdhY3lUTFM+IHVzZWRMZWdhY3lUTFNGcm9tUGFnZUNhY2hlKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIHN0ZDo6b3B0aW9uYWw8VXNl
ZExlZ2FjeVRMUz4gdXNlZExlZ2FjeVRMU0Zyb21QYWdlQ2FjaGUpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC05NDksOCAr
OTQ5LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBhdXRvIHJlcXVlc3RlciA9IG5h
dmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkudmFsdWUoKTsKIAogICAgIGF1dG8qIHJlcXVlc3Rp
bmdGcmFtZSA9IHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEID8gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRp
ZmllcigpLmZyYW1lSUQpIDogbnVsbHB0cjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nRnJhbWVJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nRnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAocmVxdWVzdGlu
Z0ZyYW1lKSB7CiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJRCA9IHJlcXVlc3RpbmdGcmFtZS0+
ZnJhbWVJRCgpOwogICAgICAgICBpZiAoYXV0byogcGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJh
bWUtPnBhcmVudEZyYW1lKCkpCkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5h
dmlnYXQKICAgICAgICAgV1RGTW92ZShwYXJlbnRGcmFtZUlEKSwKICAgICB9OwogCi0gICAgT3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKICAg
ICBpZiAoYXV0byYgcGFnZUlEID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLnBh
Z2VJRCkgewogICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UocGFnZUlEKSkKICAgICAgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gd2Vi
UGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93
KQogfQogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+JiBtYW5pZmVzdCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkK
IHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2Vi
UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTczNmRmNWJlNzJhY2NmMjVj
OWYzZGQxZGMzNzE4MzJkNjc0NjUwYi4uOTM4NmVmYTU5YTU1NTU2NWUxYTQ2NGJiZDc4MmI3NTRj
ZWQ4MTk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDkgKzQ4LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVz
RGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQ
cm94eUlEKCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gd2ViUGFnZVByb3h5SUQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIGhhc0ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWwgeyByZXR1cm4gISFtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllcjsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIGZpbmFsOwotICAgIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lUTFM+KSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKQEAg
LTI3MSw3ICsyNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93KFdlYkNv
cmU6OkRPTVdpbmRvdyYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKICNl
bmRpZgogCiAgICAgUmVmPFdlYkZyYW1lPiBtX2ZyYW1lOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZyYW1lQ2FtZUZyb21CYWNrRm9yd2FyZENhY2hlIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fdXNlSWNvbkxvYWRpbmdDbGllbnQgeyBmYWxzZSB9OwogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgT3B0aW9uYWw8RnJhbWVTcGVjaWZpY1N0
b3JhZ2VBY2Nlc3NJZGVudGlmaWVyPiBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRp
Zmllcj4gbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwCmluZGV4IDVjOGMwOWQ3ZmU2MzFkMWQ0MGY1Mzg5Y2VhMDdmNjEwMTYyMTczZWUuLmVhMDJm
MmFjMTZmNzMxYmY1NjQyZjg2NzhkODZhNDk4MTFkOGMzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFnZSwgZW5hYmxlZCk7CiB9CiAKLU9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb25EYXRhPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkK
K3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGVjODMwY2ViMDNhZmEzZTAxM2ZkYTA2ZjE0MGU1
NDQ2NGQxZGUzNjkuLmIxNjgxNjc0ODk2MjI1NDdlYzk0ZTY3OThmYjY5ZGQ4ZmE2ZDAxMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXZva2VBdXRob3JpemF0aW9uVG9rZW4oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
RGF0YT4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNz
aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJt
aXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBhNjlkZDY1MjNiMWNmNmRjOWY1YWQ1OGM2OWQ5
ZDNjYzViMTVjYzE2Li4wMjhlOGM2ZTNlODg2NGNjMTY1NTkwYTQ5Y2JhZWU3ZDhiYjZhNWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEJs
b2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQog
ICAgIHJldHVybiBuZXcgQmxvYlJlZ2lzdHJ5UHJveHk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIoY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZp
ZXIoY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFpczxQYWdl
UGFzdGVib2FyZENvbnRleHQ+KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMzkzLDE2ICszOTMsMTYgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1
cm4gaXRlbXNDb3VudDsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVt
SW5mbz4+IGFsbEluZm87CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsSW5mbzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQ
YXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50LCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9h
cmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQog
Ci1PcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewotICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
aW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mbzsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleDo6UmVwbHkoaW5mbyksIDApOwogICAgIHJldHVybiBpbmZvOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCmluZGV4IGIzOGEwYjFkMGU1ZjlmODFiNTFlZjk2MjM5N2Y3NDhmYzg0
YzhkMDIuLmUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTkyLDggKzkyLDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8o
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBib29sIGNvbnRhaW5zU3Ry
aW5nU2FmZUZvckRPTVRvUmVhZEZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjQ3NWNiMzNlYTg5NzQy
Y2E0ZTMzN2VjZDU2MGM4ZmM5MDM5NDYxNC4uYmI0NzA5OTM2MDE4ZTQ5MTFlNDA3ODUyZGRkMTRi
YTlhMDJlNzY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTM3LDcg
KzM3LDcgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKICAgICBib29sIGRlZmF1
bHRMYW5nIHsgZmFsc2UgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgpAQCAtNTEsMjkgKzUxLDI5IEBAIHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgotT3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZvaWNlVVJJOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiB2b2ljZVVSSTsKICAgICBkZWNvZGVyID4+IHZvaWNlVVJJOwogICAgIGlmICgh
dm9pY2VVUkkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxT
dHJpbmc+IG5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2Rl
ciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIE9wdGlvbmFsPFN0cmluZz4gbGFuZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bGFuZzsKICAgICBkZWNvZGVyID4+IGxhbmc7CiAgICAgaWYgKCFsYW5nKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gbG9jYWxTZXJ2aWNlOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9jYWxTZXJ2aWNlOwogICAgIGRlY29kZXIgPj4gbG9jYWxT
ZXJ2aWNlOwogICAgIGlmICghbG9jYWxTZXJ2aWNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4gZGVmYXVsdExhbmc7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBkZWZhdWx0TGFuZzsKICAgICBkZWNvZGVyID4+IGRlZmF1bHRMYW5nOwogICAgIGlm
ICghZGVmYXVsdExhbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCmluZGV4IGNiMjM4OWZjMGRiMGZiMTgwMGY2MWFk
OWY0MGY4MWEyNDkzMWU1YjMuLjdjYTNlZDBkZjU4ZjAxZTY1MThkOGU0Y2YwYWNiOGY2NGFiNjFj
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC02Myw3ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OlNpbXBsZVJhbmdlIHJhbmdlOwogICAg
ICAgICBzaXplX3QgbG9jYXRpb25JblJvb3Q7ICAgIAogICAgIH07Ci0gICAgT3B0aW9uYWw8UmFu
Z2VBbmRPZmZzZXQ+IHJhbmdlQW5kT2Zmc2V0UmVsYXRpdmVUb1NlbGVjdGlvbihpbnQ2NF90IG9m
ZnNldCwgdWludDY0X3QgbGVuZ3RoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJhbmdlQW5kT2Zmc2V0
PiByYW5nZUFuZE9mZnNldFJlbGF0aXZlVG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2
NF90IGxlbmd0aCk7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgcmVwbGFj
ZVJlbGF0aXZlVG9TZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYsIGlu
dDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90IHJlbGF0aXZl
UmVwbGFjZW1lbnRMb2NhdGlvbiwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExlbmd0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KaW5kZXggNGVkM2VmOTUw
NWY1MWYzMjg1NTQzMDE0OTJhYzVhNGU2OTI0ZGNiZC4uNzBkMWFiYjIwYTY0ZmVhMzkwMGY0Yzcy
OGRkZWFjNWUxYWU1M2VmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94
eS5tbQpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlPiByZWxldmFudE1hcmtlclR5cGVzKCkKICAgICByZXR1cm4geyBEb2N1bWVudE1h
cmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmcsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXIgfTsKIH0KIAotT3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojpy
YW5nZUFuZE9mZnNldFJlbGF0aXZlVG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpSYW5n
ZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyYW5nZUFuZE9mZnNldFJl
bGF0aXZlVG9TZWxlY3Rpb24oaW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAg
ICBhdXRvJiBmcmFtZVNlbGVjdGlvbiA9IG1fcGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKTsKICAgICBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGQ5Y2QyMTI2YmUxNWY1YTViNjIyNmI0
MmI5ZGI3Yzc5ZjE5NWQzMDIuLmJkYzNkYmVlN2U1OGJkY2NhNTUxYjg1ZDkyNThmNzBkYzM0ZGRh
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aApAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNv
bnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4pID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSA9
IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5p
bWF0aW9uRGlkU3RhcnQodWludDY0X3QgLypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkq
LywgTW9ub3RvbmljVGltZSAvKnN0YXJ0VGltZSovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNj
ZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgLypsYXllcklEKi8sIGNvbnN0IFN0cmlu
ZyYgLyprZXkqLykgeyB9CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgog
ICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2Uoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRl
eCBmMmY5OTczMDgzNGFiYjZjY2Q5ZjgzNjNhZmY3MWY4ZjliNTQ3OWNmLi5hOGZmNGY1YTc5NDdk
ODkwZDdhOTczNWRkNjhkYjVjNDgxMDE3Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzEsOCAr
MzEsOCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBV
c2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5
KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNo
U2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBPcHRpb25hbDxXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCi0gICAgU2V0Vmlld0V4cG9zZWRS
ZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQorICAgIFNl
dENvbG9yU3BhY2Uoc3RydWN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiBjb2xvclNwYWNlKQorICAgIFNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAKaW5kZXggYjYyOThkNWRkN2Y0NmE3ZjhhNWY0MjEzNzAyMDdhYTU3YzNkYzU5OS4uMzY2
ZWZkYjliNTI2YjRiMTFkMDY0MGRlZmE1N2JlYTc0ZTIwMjJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwOSw3ICsy
MDksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjcmVhdGVUeXBlRXJyb3IoSlNDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICByZXR1cm4gdG9SZWYoSlNDOjpjcmVh
dGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgbWVzc2FnZSkpOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8dWludDY0X3Q+IGNvbnZlcnRUb1VpbnQ2NChKU0M6OkpTVmFsdWUganNWYWx1ZSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpz
VmFsdWUpCiB7CiAgICAgaWYgKGpzVmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICBkb3VibGUg
dmFsdWUgPSBqc1ZhbHVlLmFzTnVtYmVyKCk7CkBAIC02NjUsNyArNjY1LDcgQEAgSlNWYWx1ZVJl
ZiBKU0lQQzo6YWRkT3V0Z29pbmdNZXNzYWdlTGlzdGVuZXIoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmLAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPHVpbnQ2NF90PiBkZXN0aW5hdGlvbklERnJvbUFyZ3VtZW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZVJlZiwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRl
c3RpbmF0aW9uSURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlUmVmIHZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgYXV0
byBqc1ZhbHVlID0gdG9KUyhnbG9iYWxPYmplY3QsIHZhbHVlUmVmKTsKICAgICBhdXRvIHJlc3Vs
dCA9IGNvbnZlcnRUb1VpbnQ2NChqc1ZhbHVlKTsKQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8dWludDY0X3Q+IGRlc3RpbmF0aW9uSURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsTwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDx1aW50NjRfdD4gbWVzc2FnZUlERnJvbUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWYgdmFsdWVSZWYsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVj
dCwgdmFsdWVSZWYpOwogICAgIGF1dG8gcmVzdWx0ID0gY29udmVydFRvVWludDY0KGpzVmFsdWUp
OwpAQCAtNzQ0LDcgKzc0NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4gYm9v
bCBlbmNvZGVOdW1lcmljVHlwZShJUEM6OkVuY29kZXImIGVuY29kZXIsIEpTCiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclR5cGU+
Ci1PcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0T2Jq
ZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1lLCBK
U0M6OkNhdGNoU2NvcGUmIHNjb3BlKQorc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPE9i
amVjdElkZW50aWZpZXJUeXBlPj4gZ2V0T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0LCBB
U0NJSUxpdGVyYWwgcHJvcGVydHlOYW1lLCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQogewogICAg
IGF1dG8ganNQcm9wZXJ0eVZhbHVlID0ganNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksIHByb3BlcnR5TmFtZSkp
OwogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKQEAgLTEyNzAsNyArMTI3MCw3IEBAIEpTVmFs
dWVSZWYgSlNJUEM6OmNyZWF0ZVNoYXJlZE1lbW9yeShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYsIEpTT2JqZWN0CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBhdXRvIHNpemUgPSBhcmd1bWVu
dENvdW50ID8gY29udmVydFRvVWludDY0KHRvSlMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHNbMF0p
KSA6IE9wdGlvbmFsPHVpbnQ2NF90PiB7IH07CisgICAgYXV0byBzaXplID0gYXJndW1lbnRDb3Vu
dCA/IGNvbnZlcnRUb1VpbnQ2NCh0b0pTKGdsb2JhbE9iamVjdCwgYXJndW1lbnRzWzBdKSkgOiBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB7IH07CiAgICAgaWYgKCFzaXplKSB7CiAgICAgICAgICpl
eGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIk11c3Qgc3BlY2lmeSB0aGUgc2l6
ZSJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAg
LTEzNDIsNyArMTM0Miw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnJldHJpZXZlSUQoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTVmFsCiAgICAgcmV0dXJuIHRv
UmVmKHZtLCBqc1ZhbHVlKTsKIH0KIAotc3RhdGljIEpTQzo6SlNWYWx1ZSBjcmVhdGVKU0FycmF5
Rm9yQXJndW1lbnREZXNjcmlwdGlvbnMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBPcHRpb25hbDxWZWN0b3I8SVBDOjpBcmd1bWVudERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERl
c2NyaXB0aW9ucykKK3N0YXRpYyBKU0M6OkpTVmFsdWUgY3JlYXRlSlNBcnJheUZvckFyZ3VtZW50
RGVzY3JpcHRpb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8SVBDOjpBcmd1bWVudERlc2NyaXB0aW9uPj4mJiBhcmd1bWVudERlc2NyaXB0
aW9ucykKIHsKICAgICBpZiAoIWFyZ3VtZW50RGVzY3JpcHRpb25zKQogICAgICAgICByZXR1cm4g
SlNDOjpqc051bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5oCmluZGV4IDc5MWYxZDA2ZmMyYjA3YjkwYWZlZGI4MmQ5MTY5ZWJlODY4NmFm
YTkuLjZhMjhhZTk3Zjg2MWY0ZjViY2IxYzkzNGFiZjAyODlmYjBhMDBiNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMTUxLDcg
KzE1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8UHJvcGVydGllcz4gZGVj
b2RlKElQQzo6RGVjb2RlciYpOworICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0
aWVzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKICAgICAgICAgU3RyaW5nIGtleVBhdGg7CiAg
ICAgICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0K
aW5kZXggZTI1NTEwMTA2ZTkxMDhhNzgxYzY0ODMyZmVkZjgyMWEyY2I1NzYwNy4uNmQ4NjYxN2Ux
YTE3ZDgzZDA0N2IxMzkyMzE1ZWY5OTUxNTFiOWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTExOSw3ICsxMTksNyBAQCBz
dGF0aWMgdm9pZCBlbmNvZGVUaW1pbmdGdW5jdGlvbihJUEM6OkVuY29kZXImIGVuY29kZXIsIFRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFJlZlB0
cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29kZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IGRlY29k
ZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBUaW1pbmdGdW5j
dGlvbjo6VGltaW5nRnVuY3Rpb25UeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlKSkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OlByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBhbmltYXRpb25zOwogfQogCi1PcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpQcm9wZXJ0aWVzPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxQbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHByb3BlcnRpZXMua2V5UGF0aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggMDEw
MTgxMzU4OGY4NTAwZWZmNmY0NzY4MWY3NjFiMzNjMTcyZGJhNy4uNWVhNmM3MjJiNjk3YmE0ZmE3
MmRjOTVjMjMzMjdkODA5ZjcyYjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtNTAsNyAr
NTAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzdGFydE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5p
c20oKSBmaW5hbCB7IH0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IGRp
c3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkg
ZmluYWw7CiAKICAgICB2b2lkIGFkanVzdFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJDb3Jl
OjpGcmFtZXNQZXJTZWNvbmQpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJl
ZnJlc2hNb25pdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQppbmRleCA5
MmI5YTQzNmRlOGIyMTMzYTUyODcxZTg5YTgwNDliYjcyNjNiMTg0Li5jYzM5ZTNkMTYyNGY5N2M4
ODljYmRjY2VlNjRlNjkwZjdkYTc1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0KQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnVw
ZGF0ZURyYXdpbmdBcmVhKFJlbW90ZUxheWVyVHJlZURyYXcKICAgICBtX2RyYXdpbmdBcmVhID0g
bWFrZVdlYWtQdHIoZHJhd2luZ0FyZWEpOwogfQogCi1PcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheU5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQoKQorc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IFJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQo
KQogewogICAgIHJldHVybiBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNzMw
YTJkNjkwODg0OWIyMjUyNmRjNDIzODBmNjk3YTlmY2JjYzViYy4uZjMwYjExMzRlMjNkNTEwM2Qy
MDNhYzU5OWNkMmY3MTFjYTEyOTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5
bmMoV2ViUGFnZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBv
dmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CisgICAgdm9p
ZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9z
ZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KIAog
ICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBj
b25zdCBTdHJpbmcmIGtleSwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3Qg
U3RyaW5nJiBrZXkpIG92ZXJyaWRlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2VkUmVjdDsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fdXBk
YXRlUmVuZGVyaW5nVGltZXI7CiAgICAgYm9vbCBtX2lzUmVuZGVyaW5nU3VzcGVuZGVkIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQppbmRleCBjYmVkNGFiZWUwMDE0M2E2ZTBiYjYwODFhZDNmNzhjOWFhZmNlODU4Li5h
MThiMzE1ZTZhZDAwZjBlNGYwOWVmYWFiMTYzY2Y1MjUzNTg5OWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY28KICAgICBtX3JlbW90ZUxheWVyVHJlZUNv
bnRleHQtPmFuaW1hdGlvbkRpZEVuZChsYXllcklELCBrZXkpOwogfQogCi12b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAgICBtX3ZpZXdFeHBvc2VkUmVjdCA9IHZpZXdFeHBvc2Vk
UmVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBkNmEwMDdmZWYw
ZmNmN2VhY2ViMmExYWVjYjhkY2IzMzNmNjg2MmE2Li4zZmRkZWI4MDQ1ZTJiODk2NWQ4ODY3NGZj
NmE2MzBlM2QyNzI2MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAt
MTM3LDcgKzEzNyw3IEBAIHN0cnVjdCBGb250U2l6ZUFuZENvdW50IHsKICAgICB1bnNpZ25lZCBj
b3VudDsKIH07CiAKLU9wdGlvbmFsPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVUZXh0TGVnaWJpbGl0eVNjYWxlcyhkb3VibGUm
IHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQorc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1p
bmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZm9udFNpemVCaW5uaW5nSW50ZXJ2YWwgPSAyOwogICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgbWF4aW11bU51bWJlck9mVGV4dFJ1bnNUb0NvbnNpZGVyID0gMjAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMx
YjI0ODVkMjcwNzgyZGYuLmY3Zjk5OGFhYzAxNjk3Y2Q0NzdmOTVmNTM2ZWM2YjgyNTM4ZDIxMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbXB1dGVNaW5pbXVtQW5kTWF4aW11bVZpZXdwb3J0U2NhbGVzKGRvdWJs
ZSYgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSYgdmlld3BvcnRNYXhpbXVtU2NhbGUpIGNv
bnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8
ZG91YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMoZG91YmxlJiB2aWV3
cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBjb21wdXRlVGV4dExlZ2liaWxp
dHlTY2FsZXMoZG91YmxlJiB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlJiB2aWV3cG9ydE1h
eGltdW1TY2FsZSk7CiAjZW5kaWYKIAogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKQEAgLTc2LDcg
Kzc2LDcgQEAgcHJpdmF0ZToKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50NjRf
dCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkOwogI2Vsc2UKLSAgICBPcHRp
b25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBtX2NhY2hlZFRleHRMZWdpYmlsaXR5U2Nh
bGVzOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gbV9jYWNo
ZWRUZXh0TGVnaWJpbGl0eVNjYWxlczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwCmluZGV4IGVhMzVlNDllZmI1MjQyZWI3NzEwNDEzNmEyNmFmMzYxM2RjMWRiOTMuLjIzZmVm
Y2VhNWJmNDRjYTIwMGI3NjlkZmY4NTNkZThiMjk5Y2NmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleChpbnQgaXRlbUluZGV4KQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXI+IGl0ZW1JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI+IGl0ZW1JRDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJh
Y2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRlbUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5pZGVudGlmaWVy
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXgg
YTYwN2YyMzhkNzVhYjY2YWUzNGY5ZTNlMTExYjY3OGJiNzg5ZDU1Yy4uNzFjOGY0MWI2MzcwZGMy
YjllNjk4NTM1NGNkYWM0MzE5YTQzMmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC02OCw3
ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgV2Vi
UGFnZSogbV9wYWdlOwotICAgIG11dGFibGUgT3B0aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENv
dW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggNGU1NDU5NTFmODJmMjQ5
YzFjZTcxNjhiZTdlZjc4MGRlNDFkZGM2Mi4uNjMzODI4OTgzZWY3NzYzMjM5MmQwZGJjMmU0YTkw
NDg5ZTM0MGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29va2llc0VuYWJsZWQoKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJv
Y2VzcyA9IFNob3VsZEFza0lUUDo6Tm87CiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKQEAg
LTIzOCw4ICsyMzgsOCBAQCBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogICAgICAgICByZXR1cm4g
eyB9OwogI2VuZGlmCiAKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3
ZWJGcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6
bnVsbG9wdDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUg
JiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgp
LT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwod2ViRnJh
bWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0ZDo6bWFr
ZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0
OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNzBmODdhYzhiMTk0YjIyMGMyODVjZGIyMGVkOGNl
ZmZkN2VjYTI4Yy4uYmM3ODUwMmIxOGI5OTRhM2ZmYTQ3YjkzMzI3M2ViZGI4NGZhZmRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiwgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNv
cmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIGZp
bmFsOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBj
b25zdCBmaW5hbDsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVz
QWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3Rk
OjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiwgY29uc3QgV2ViQ29yZTo6Q29va2llJikgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGI3MmZkOTIwNjY1N2NlN2JmMjQ3ODI0Yjc0YzE3
YjI2MGQ5NjAyMmUuLjE1NDE1NmJkYjQ2ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5Y2E3MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTE5
NCw3ICsxOTQsNyBAQCBGcmFtZUluZm9EYXRhIFdlYkZyYW1lOjppbmZvKCkgY29uc3QKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0KHVybCgpKSwKICAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUobV9jb3JlRnJhbWUuZ2V0KCkpLAogICAgICAgICBtX2ZyYW1lSUQsCi0gICAgICAg
IHBhcmVudCA/IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZy
YW1lSUQoKSB9IDogc3RkOjpudWxsb3B0LAorICAgICAgICBwYXJlbnQgPyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpu
dWxsb3B0LAogICAgIH07CiAKICAgICByZXR1cm4gaW5mbzsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2
b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaQogICAgIH0KICAgICBhdXRvIHBvbGljeURvd25sb2FkSUQg
PSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25sb2FkSUQsIHN0ZDo6bnVsbG9wdCk7CiAKLSAg
ICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZCA9IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Ok5vOwogICAgIGlzQXBwQm91bmQgPSBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpTdGFydERvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsICBpc0FwcEJvdW5k
LCBzdWdnZXN0ZWROYW1lKSwgMCk7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBXZWJGcmFt
ZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciwKICAgICBlbHNlCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
ID0gMDsKIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJv
dW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOworICAgIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6Tm87CiAgICAgaXNBcHBCb3VuZCA9IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsKICAgICB3ZWJQcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSwgaXNBcHBCb3VuZCks
IDApOwogfQpAQCAtODgxLDcgKzg4MSw3IEBAIGJvb2wgV2ViRnJhbWU6OnNob3VsZEVuYWJsZUlu
QXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpCiAgICAgcmV0dXJuIHRyZWVIYXNOb25BcHBC
b3VuZEZyYW1lOwogfQogCi1PcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gV2Vi
RnJhbWU6OmlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBXZWJGcmFtZTo6aXNUb3BGcmFt
ZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJvbUNv
cmVGcmFtZShtX2NvcmVGcmFtZS0+bWFpbkZyYW1lKCkpLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAppbmRleCAxYmYwZTY4MDgxNmM4NTg4M2ZiZTMyYmM0YTEyNWM2MDZiMzYzYjI4Li42OWZlN2Jl
ZjczMTA2MjQ5MTkxMzM2Njg3NDhmMDk4YjM5NjEyNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgYm9vbCBzaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKLSAgICB2b2lkIHNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQotICAgIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSBjb25zdDsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikgeyBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9OworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7
IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjAxLDExICsyMDEs
MTEgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYkNvcmU6OkZyYW1lPiBtX2NvcmVGcmFtZTsK
IAogICAgIHVpbnQ2NF90IG1fcG9saWN5TGlzdGVuZXJJRCB7IDAgfTsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI+IG1fcG9saWN5SWRlbnRpZmllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllcj4gbV9wb2xpY3lJZGVu
dGlmaWVyOwogICAgIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gbV9wb2xpY3lGdW5jdGlv
bjsKICAgICBGb3JOYXZpZ2F0aW9uQWN0aW9uIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9u
QWN0aW9uIHsgRm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8gfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3dpbGxTdWJtaXRGb3JtQ29tcGxldGlvbkhh
bmRsZXJzOwotICAgIE9wdGlvbmFsPERvd25sb2FkSUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERvd25sb2FkSUQ+IG1fcG9saWN5RG93bmxvYWRJRDsKIAogICAgIFdl
YWtQdHI8TG9hZExpc3RlbmVyPiBtX2xvYWRMaXN0ZW5lcjsKICAgICAKQEAgLTIxNCw3ICsyMTQs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVHJhbnNhY3Rpb25J
RCBtX2ZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0TG9hZDsKICNlbmRp
ZgotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47CisgICAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA2NmQ3MDk3MmY5
MmUzMzRlZWE5N2IzMjhhNDFlNTY0NWNjNTlhMGYuLjczM2QzZjA1ZTg1ZjdiYzNlYzI4MzYxY2M3
ZGM5YmVjZmUxZDc3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03NTIsNyArNzUyLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
IGlmIChwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgbV9zY3JvbGxi
YXJPdmVybGF5U3R5bGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFt
ZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlLnZhbHVlKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+
KCk7CisgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+KCk7CiAKICAgICBzZXRUb3BDb250ZW50SW5zZXQocGFyYW1ldGVy
cy50b3BDb250ZW50SW5zZXQpOwogCkBAIC0xNzAxLDcgKzE3MDEsNyBAQCBOT19SRVRVUk4gdm9p
ZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0
ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkws
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0x
ODU3LDcgKzE4NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRib3hFeHRlbgogICAgIH0KIH0KIAotdm9p
ZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9h
ZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGJhY2tGb3J3
YXJkSXRlbUlELCBGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBTZW5kU3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAtMTg4Nyw5ICsxODg3LDkgQEAgV2ViUGFn
ZSYgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNocm9tZUNsaWVudCY+KHBhZ2UuY2hyb21lKCkuY2xpZW50KCkpLnBhZ2UoKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPEZyYW1lVHJlZU5vZGVEYXRhPiBmcmFtZVRyZWVOb2RlRGF0YShG
cmFtZSYgZnJhbWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGcmFtZVRyZWVOb2RlRGF0YT4gZnJh
bWVUcmVlTm9kZURhdGEoRnJhbWUmIGZyYW1lKQogewotICAgIE9wdGlvbmFsPEZyYW1lVHJlZU5v
ZGVEYXRhPiBpbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVUcmVlTm9kZURhdGE+IGluZm87
CiAgICAgaWYgKGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUp
KSB7CiAgICAgICAgIFZlY3RvcjxGcmFtZVRyZWVOb2RlRGF0YT4gY2hpbGRyZW47CiAgICAgICAg
IGZvciAoYXV0byogY2hpbGRGcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxk
RnJhbWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewpA
QCAtMjE1Niw3ICsyMTU2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmEKICAgICByZXR1cm4g
ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhZ2Va
b29tRmFjdG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleHRab29tRmFjdG9yKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit2b2lkIFdl
YlBhZ2U6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7CiAgICAg
bV9wYWdlLT5jaHJvbWUoKS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFs
RnJhbWVzUGVyU2Vjb25kKTsKIApAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBw
YWdlKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
PiYmIHNhbmRib3hFeHRlbnNpb25zKQordm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdl
Yk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+JiYgc2FuZGJveEV4dGVuc2lvbnMpCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gdXNlcklzSW50ZXJhY3RpbmdDaGFuZ2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0cnVlIH07
CiAKQEAgLTMzMzQsNyArMzMzNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29s
IGluZGljYXRpbmcpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCit2b2lk
IFdlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNvbG9yPiYgYmFja2dyb3VuZENvbG9yKQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9
PSBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NjksNyArMzY2OSw3IEBA
IEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5
Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3Mg
PyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBy
dW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAv
LyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCkBAIC0zNzA2LDcgKzM3MDYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZh
bHVlKQogICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+
ZGF0YSgpOwogCi0gICAgICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKICAgICAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAKQEAg
LTM3MTYsNyArMzcxNiw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSog
ZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgZnJhbWUtPmNv
cmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5X
b3JsZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVz
b2x2ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYg
d29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3Ms
ICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBm
cmFtZUlELnZhbHVlX29yKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkp
OwogICAgIGF1dG8gd2ViRnJhbWUgPSBtYWtlUmVmUHRyKGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmbWFpbldlYkZyYW1lKCkpOwpAQCAtMzcy
Nyw3ICszNzI3LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShjb3JlV29y
bGQpOwogICAgIH0KIAotICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUuZ2V0KCksIFdURk1vdmUo
cGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+JiBleGNlcHRpb24pIG11dGFibGUgeworICAgIHJ1bkphdmFT
Y3JpcHQod2ViRnJhbWUuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJz
dCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bHQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
IGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5G
cmFtZUluU2NyaXB0V29ybGQ6IFJlcXVlc3QgdG8gcnVuIEphdmFTY3JpcHQgZmFpbGVkIHdpdGgg
ZXJyb3IgJXtwcml2YXRlfXMiLCBleGNlcHRpb24tPm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGVsc2UKQEAgLTM3NzQsNyArMzc3NCw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNr
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
CkBAIC0zODA4LDcgKzM4MDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxi
YWNrKHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxi
YWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODM5LDcgKzM4
MzksNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2Ut
PmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VV
UkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiByZQogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTUyNzMsNyAr
NTI3Myw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdl
OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBmcmFtZVZpZXcg
PSAqbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7
CkBAIC02MTMyLDcgKzYxMzIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEF1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBzaG91bGRFeHBhbmQpCiAgICAgY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpLT5zZXRBdXRvU2l6ZUZpeGVkTWluaW11bUhlaWdodChzaG91bGRFeHBh
bmQgPyBtX3ZpZXdTaXplLmhlaWdodCgpIDogMCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Vmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiB2
aWV3cG9ydFNpemUpCit2b2lkIFdlYlBhZ2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiB2aWV3cG9ydFNpemUpCiB7CiAg
ICAgaWYgKG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyA9PSB2aWV3cG9ydFNpemUp
CiAgICAgICAgIHJldHVybjsKQEAgLTY0MjAsNyArNjQyMCw3IEBAIHZvaWQgV2ViUGFnZTo6dGVz
dFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KE1lc3Nh
Z2VzOjpXCiAgICAgcmVwbHkodHJ1ZSk7CiB9CiAKLU9wdGlvbmFsPFNpbXBsZVJhbmdlPiBXZWJQ
YWdlOjpjdXJyZW50U2VsZWN0aW9uQXNSYW5nZSgpCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBXZWJQYWdlOjpjdXJyZW50U2VsZWN0aW9uQXNSYW5nZSgpCiB7CiAgICAgYXV0byogZnJhbWUg
PSBmcmFtZVdpdGhTZWxlY3Rpb24obV9wYWdlLmdldCgpKTsKICAgICBpZiAoIWZyYW1lKQpAQCAt
NjU4MSwxMiArNjU4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cih1aW50MzJfdCBwaW5uaW5nKQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IobV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShPcHRpb25hbDx1aW50MzJfdD4gc2Ny
b2xsYmFyU3R5bGUpCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBpZiAoc2Nyb2xsYmFy
U3R5bGUpCiAgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0g
ICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gT3B0aW9uYWw8U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPigpOworICAgICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0ZDo6b3B0aW9u
YWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmll
dygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogfQogCkBAIC03MDMxLDcg
KzcwMzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmIHNoYXJlRGF0YSwgV1RGOjpDb21wbGV0aW9uSAogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93U2hhcmVTaGVldChXVEZNb3ZlKHNoYXJlRGF0
YSkpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2hvd0NvbnRhY3RQ
aWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZv
Pj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnNob3dDb250YWN0UGlja2VyKGNvbnN0
IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+
JiYgY2FsbGJhY2spCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNob3dDb250YWN0UGlja2VyKHJlcXVlc3REYXRhKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQpAQCAtNzA5OCwxNCArNzA5OCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnZvaWNlc0RpZENoYW5n
ZSgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6Omlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQ
YWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
KQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50
aWZpZXIsIFdURk1vdmUoZmlsZVNpemUpLCBmaWxlTmFtZSwgY29udGVudFR5cGUpOwogICAgIGNh
bGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvIGF0dGFjaG1l
bnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAgICAg
ICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CkBAIC03MTM2LDcgKzcx
MzYsNyBAQCBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50
RWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cgogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdl
YlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIERvY3VtZW50KiBtYWluRnJhbWVE
b2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBEb2N1
bWVudExvYWRlciogbG9hZGVyID0gbWFpbkZyYW1lRG9jdW1lbnQgPyBtYWluRnJhbWVEb2N1bWVu
dC0+bG9hZGVyKCkgOiBudWxscHRyOwpAQCAtNzE1MCw3ICs3MTUwLDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0
aW9uYWw8V2ViQ28KICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLmFk
ZChjb3JlQ2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNv
cmVDYWxsYmFja0lELCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
PiYgbWFuaWZlc3QpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKIHsKICAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAudGFrZShjb3JlQ2Fs
bGJhY2tJRCkpCiAgICAgICAgIGNhbGxiYWNrKG1hbmlmZXN0KTsKQEAgLTcxOTcsNyArNzE5Nyw3
IEBAIFJlZlB0cjxFbGVtZW50PiBXZWJQYWdlOjplbGVtZW50Rm9yQ29udGV4dChjb25zdCBFbGVt
ZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5zZWFyY2hG
b3JFbGVtZW50QnlJZGVudGlmaWVyKGVsZW1lbnRDb250ZXh0LmVsZW1lbnRJZGVudGlmaWVyKTsK
IH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRG
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gZWxl
bWVudC5kb2N1bWVudCgpOwogICAgIGlmICghbV9wYWdlIHx8IGRvY3VtZW50LnBhZ2UoKSAhPSBt
X3BhZ2UuZ2V0KCkpCkBAIC03NTAwLDcgKzc1MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFuaW1hdGlv
bkRpZEZpbmlzaEZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLXZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViRnJhbWUqIGZyYW1lKQordm9pZCBXZWJQ
YWdlOjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkZy
YW1lKiBmcmFtZSkKIHsKICAgICBmcmFtZS0+c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAKQEAgLTc1NjYsNyArNzU2Niw3
IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3Rv
cjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiBtZW1vcnlIYW5kbGVzLCBjb25zdCBPcHRpb25h
bDx1bnNpZ25lZD4gaW5kZXgpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5k
U2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVt
b3J5SGFuZGxlcywgY29uc3Qgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAg
YXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGRlMzVhZTE5NWFhNGQ2NjI1OWYwMDVkNTQ0NGMxOTk0
ZWFhNDcwNDQuLmZhM2NkNmMxOTQ4Mjg1ZGJiNzZmMzlkNzcwMzg0MWVkODVjMTM3YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdE
ZXZpY2UoKSBjb25zdDsKICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2lu
dGluZ0RldmljZSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0
ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGlj
cz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3Q7
CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0OwogCiAg
ICAgdm9pZCBkaWRJbnNlcnRNZW51RWxlbWVudChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsK
QEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFt
ZSgpIGNvbnN0OyAvLyBNYXkgcmV0dXJuIG51bGxwdHIuCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3
KiBtYWluRnJhbWVWaWV3KCkgY29uc3Q7IC8vIE1heSByZXR1cm4gbnVsbHB0ci4KIAotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBjdXJyZW50U2VsZWN0aW9uQXNSYW5nZSgpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb25B
c1JhbmdlKCk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8
UGx1Z2luPiBjcmVhdGVQbHVnaW4oV2ViRnJhbWUqLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCosIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYsIFN0cmluZyYgbmV3TUlNRVR5cGUpOwpAQCAt
NTczLDcgKzU3Myw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcGFnZVpvb21GYWN0b3IoKSBjb25z
dDsKICAgICB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdl
QW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29t
RmFjdG9yKTsKLSAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOwor
ICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKICAgICBT
dHJpbmcgZHVtcEhpc3RvcnlGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKICAg
ICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCkBAIC03MjEsNyArNzIxLDcgQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb247IH0K
ICAgICB2b2lkIHNldFNob3VsZFJldmVhbEN1cnJlbnRTZWxlY3Rpb25BZnRlckluc2VydGlvbihi
b29sKTsKIAotICAgIHZvaWQgaW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0PiYpPiYmKTsKKyAgICB2b2lkIGluc2VydFRleHRQbGFjZWhvbGRlcihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmKTsKICAgICB2b2lkIHJlbW92ZVRl
eHRQbGFjZWhvbGRlcihjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NyZWVuU2l6ZSgp
IGNvbnN0OwpAQCAtNzUzLDcgKzc1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3Rvck5v
ZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAg
ICAgdm9pZCBibHVyRm9jdXNlZEVsZW1lbnQoKTsKLSAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4mKT4mJik7CisgICAgdm9pZCByZXF1ZXN0Rm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4mKT4mJik7CiAgICAgdm9pZCBzZWxlY3RXaXRo
R2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVj
b2duaXplclN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPik+JiYpOwog
ICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBTZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8
U2VsZWN0aW9uRmxhZ3M+KT4mJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBH
ZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXpl
clN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+KT4mJik7CkBAIC03NzcsNyArNzc3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogICAg
IHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mJik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJh
Y3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0PiYmLCBXZWJDb3JlOjpJbnRQb2ludCYmKTsKKyAgICB2b2lkIHN0YXJ0SW50ZXJh
Y3Rpb25XaXRoRWxlbWVudENvbnRleHRPclBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RWxlbWVudENvbnRleHQ+JiYsIFdlYkNvcmU6OkludFBvaW50JiYpOwogICAgIHZvaWQgc3RvcElu
dGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFj
dGlvbik7CiAgICAgdm9pZCBmb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQ
cmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1Jl
cGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9y
UHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJik7CkBA
IC0xMDg1LDcgKzEwODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkK
ICAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZl
Y3RpdmVEZXZpY2VXaWR0aCk7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOworICAgIHZvaWQg
c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzPiYpOwogICAgIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0Q29uZmln
dXJhdGlvbiYgdmlld3BvcnRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9y
dENvbmZpZ3VyYXRpb247IH0KIAogICAgIHZvaWQgc2V0VXNlVGVzdGluZ1ZpZXdwb3J0Q29uZmln
dXJhdGlvbihib29sIHVzZVRlc3RpbmdWaWV3cG9ydCkgeyBtX3VzZVRlc3RpbmdWaWV3cG9ydENv
bmZpZ3VyYXRpb24gPSB1c2VUZXN0aW5nVmlld3BvcnQ7IH0KQEAgLTEwOTMsNyArMTA5Myw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFVJX1NJREVfQ09NUE9TSVRJTkcpCi0gICAg
T3B0aW9uYWw8ZmxvYXQ+IHNjYWxlRnJvbVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gc2NhbGVGcm9t
VUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKSBjb25zdDsKICAg
ICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyYsIE1vbm90b25pY1RpbWUgb2xkZXN0VGltZXN0YW1wKTsKICNlbmRpZgogCkBA
IC0xMTM5LDggKzExMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6aW5nU2hvdWxk
RXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wgc2hvdWxkRXhwYW5kKTsKICAgICBib29sIGF1dG9TaXpp
bmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoKSB7IHJldHVybiBtX2F1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQ7IH0KIAotICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cyhPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPik7Ci0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6SW50U2l6ZT4gdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0czsgfQorICAgIHZvaWQgc2V0
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklu
dFNpemU+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHM7IH0KIAogICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUpIGNvbnN0OwogICAgIGJvb2wgY2FuU2hvd1Jlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKQEAgLTExNjIsOCArMTE2Miw4IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgKi8gcGlubmluZyk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8
dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlICovPiBzY3JvbGxiYXJT
dHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+
IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
OyB9CisgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50
MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxl
KTsKIAogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1l
bnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImLCBXZWJDb3JlOjpGcmFtZSYpOwpAQCAtMTI0Myw3
ICsxMjQzLDcgQEAgcHVibGljOgogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogdXJsU2No
ZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0b3BBbGxVUkxT
Y2hlbWVUYXNrcygpOwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1pdCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3B1TGltaXQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1TGltaXQo
KSBjb25zdCB7IHJldHVybiBtX2NwdUxpbWl0OyB9CiAKICAgICBzdGF0aWMgUGx1Z2luVmlldyog
cGx1Z2luVmlld0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CiAKQEAgLTEyNzYsMTcgKzEyNzYs
MTcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKTsKLSAgICB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNv
bnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYmKTsKKyAgICB2b2lkIHNob3dDb250YWN0UGlj
a2VyKGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYp
OwogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgT3B0aW9uYWw8dWludDY0X3Q+JiYg
ZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIE9wdGlvbmFsPHVpbnQ2NF90
PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFs
VGh1bWJuYWlsSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQotICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYpOwot
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisgICAgdm9pZCBn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CiAjZW5kaWYKIAogI2lmIFVT
RShXUEVfUkVOREVSRVIpCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVt
ZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9uKCkgY29uc3Q7CiAKLSAgICBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZENvbG9yOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKICAg
ICB2b2lkIHN1c3BlbmRBbGxNZWRpYUJ1ZmZlcmluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVk
aWFCdWZmZXJpbmcoKTsKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bmZpZ3VyZUxvZ2dpbmdDaGFubmVsKGNvbnN0IFN0cmluZyYsIFdURkxvZ0NoYW5uZWxTdGF0ZSwg
V1RGTG9nTGV2ZWwpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnRGb3JD
b250ZXh0KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JikgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
PiBjb250ZXh0Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JikgY29uc3Q7CiAKICAgICB2b2lk
IHN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpFeGNsdXNpb25SdWxlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxsRmFpbGVkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+JiYpOwpAQCAt
MTM5Miw3ICsxMzkyLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwotICAgIHZvaWQgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIFdlYkZyYW1lKik7CisgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJGcmFt
ZSopOwogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgeyByZXR1cm4g
bV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7IH0KICNlbmRpZgogCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKCkgY29uc3QgeyByZXR1cm4g
bV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOyB9CiAKICAgICBib29sIGNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9p
ZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlPiYmLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOwor
ICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3Rv
cjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiwgY29uc3Qgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gaW5kZXgpOwogICAgIHZvaWQgc2V0QXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoY29uc3QgV2Vi
Q29yZTo6SGlnaGxpZ2h0VmlzaWJpbGl0eSk7CiAjZW5kaWYKIApAQCAtMTQ5NCwxNCArMTQ5NCwx
NCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCB1cGRhdGVW
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAKLSAgICBPcHRpb25hbDxGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uPiBmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CisgICAgc3Rk
OjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKCk7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAg
ICAgdm9pZCBnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZSk7CiAgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2Rl
JiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0
aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpQb2lu
dGVySUQgPSBXZWJDb3JlOjptb3VzZVBvaW50ZXJJRCk7CiAgICAgdm9pZCBjb21wbGV0ZVN5bnRo
ZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpN
b2RpZmllcj4sIFdlYkNvcmU6OlN5bnRoZXRpY0NsaWNrVHlwZSwgV2ViQ29yZTo6UG9pbnRlcklE
ID0gV2ViQ29yZTo6bW91c2VQb2ludGVySUQpOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZv
ck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAg
ICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZv
clBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFt
ZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRG
b2N1c2VkRnJhbWVCZWZvcmVTZWxlY3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVj
dGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAK
QEAgLTE1MzEsNyArMTUzMSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBh
bGxvd2VkQWN0aW9uc01hc2spOwogICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRy
YWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKLSAgICB2b2lkIGluc2VydERyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpOworICAgIHZvaWQgaW5z
ZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRTaXpl
PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsK
ICAgICB2b2lkIGNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgpOwogI2VuZGlmCiAKQEAg
LTE1NTUsNyArMTU1NSw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUo
V2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkws
IGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyk7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKQEAgLTE1NjgsNyArMTU2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwg
V2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVu
UG9pbnQpOwogICAgIHZvaWQgZ2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRTaXplKT4mJik7CiAg
ICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRp
b25zLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7Ci0gICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7Cisg
ICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5
cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpOwogICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJv
YXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3Rh
dGUgPSBmYWxzZSk7CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wpOwogCi0gICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4m
JiBzYW5kYm94RXh0ZW5zaW9ucyk7CisgICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiYmIHNh
bmRib3hFeHRlbnNpb25zKTsKICAgICB2b2lkIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtMTYyOCw3ICsxNjI4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYp
OworICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldFRvcENvbnRl
bnRJbnNldEZlbmNlZChmbG9hdCwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CkBAIC0xNjQ1
LDE1ICsxNjQ1LDE1IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHZvaWQgZ2V0
Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKICNlbmRpZgotICAgIHZvaWQg
Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJik7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmKT4mJik7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpEYXRh
UmVmZXJlbmNlPiYpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFp
cjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgcnVu
SmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYs
IENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYpPiYmKTsKIApAQCAtMTc5Niw3ICsxNzk2LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihX
ZWJDb3JlOjpGbG9hdFBvaW50KTsKLSAgICBPcHRpb25hbDxzdGQ6OnR1cGxlPFdlYkNvcmU6OlNp
bXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6
OkZsb2F0UG9pbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1w
bGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50KTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZv
aWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25E
aWRDb21wbGV0ZSgpOwpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5
YmFjayB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1fc3Rh
cnRpbmdHZXN0dXJlUmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4gbV9zdGFydGluZ0dlc3R1cmVSYW5nZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgSGFzaFNldDxSZWZQdHI8V2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudD4+IG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25h
cHNob3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1fcmFuZ2VGb3JEcm9w
U25hcHNob3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9yYW5n
ZUZvckRyb3BTbmFwc2hvdDsKICNlbmRpZgogCiAgICAgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUlz
UGlubmVkVG9MZWZ0U2lkZSB7IHRydWUgfTsKQEAgLTIxMzksNyArMjEzOSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX21pbmltdW1TaXplRm9yQXV0b0xheW91dDsKICAgICBX
ZWJDb3JlOjpJbnRTaXplIG1fc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemU7CiAgICAg
Ym9vbCBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQgeyBmYWxzZSB9OwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0czsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IG1fdmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0czsKIAogICAgIGJvb2wgbV91c2VySXNJbnRlcmFjdGluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0
aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB7IGZhbHNlIH07CkBAIC0yMTczLDcgKzIxNzMsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtX2N1cnJlbnRXb3JkUmFuZ2U7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9jdXJyZW50V29yZFJhbmdlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpOb2RlPiBtX2ludGVyYWN0aW9uTm9kZTsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCkBAIC0yMjAyLDcgKzIyMDIsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2F2YWlsYWJsZVNjcmVlblNpemU7CiAgICAg
V2ViQ29yZTo6RmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCi0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1faW5pdGlhbFNlbGVjdGlvbjsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtX2luaXRpYWxTZWxlY3Rpb247CiAgICAgV2ViQ29y
ZTo6VmlzaWJsZVNlbGVjdGlvbiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkgeyBX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCkgfTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9t
YXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBtX2RldmljZU9yaWVudGF0aW9uIHsg
MCB9OwpAQCAtMjIxNiwxMiArMjIxNiwxMiBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxXZWJL
aXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbV9wZW5kaW5nU3ludGhldGljQ2xpY2tNb2RpZmllcnM7
CiAgICAgV2ViQ29yZTo6UG9pbnRlcklEIG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrUG9pbnRlcklk
IHsgMCB9OwogICAgIEZvY3VzZWRFbGVtZW50SWRlbnRpZmllciBtX2N1cnJlbnRGb2N1c2VkRWxl
bWVudElkZW50aWZpZXIgeyAwIH07Ci0gICAgT3B0aW9uYWw8RHluYW1pY1ZpZXdwb3J0U2l6ZVVw
ZGF0ZUlEPiBtX3BlbmRpbmdEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ7CisgICAgc3RkOjpv
cHRpb25hbDxEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQ+IG1fcGVuZGluZ0R5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGVJRDsKICAgICBkb3VibGUgbV9sYXN0VHJhbnNhY3Rpb25QYWdlU2NhbGVG
YWN0b3IgeyAwIH07CiAgICAgVHJhbnNhY3Rpb25JRCBtX2xhc3RUcmFuc2FjdGlvbklEV2l0aFNj
YWxlQ2hhbmdlOwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYmKT4gbV9wZW5kaW5nU3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0
aW9uUmVwbHk7Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFRyYW5zYWN0aW9uSUQsIGRvdWJsZT4+
IG1fbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBbmRQYWdlU2NhbGVCZWZvcmVTY2FsaW5nUGFn
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxUcmFuc2FjdGlvbklELCBkb3VibGU+PiBt
X2xhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2U7
CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fbGF5ZXJWb2xhdGlsaXR5VGltZXI7CkBA
IC0yMjI5LDEzICsyMjI5LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkVW5k
ZXJMb2NrIHsgZmFsc2UgfTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6
OndoaXRlIH07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5k
Q29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+
IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbiB7IDAgfTsKICAgICAKICAgICBXZWJDb3JlOjpT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IgeyBXZWJDb3JlOjpE
b05vdFBpbiB9OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4g
bV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBt
X3VzZUFzeW5jU2Nyb2xsaW5nIHsgZmFsc2UgfTsKIApAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgcHJp
dmF0ZToKICAgICBVc2VyQWN0aXZpdHkgbV91c2VyQWN0aXZpdHk7CiAKICAgICB1aW50NjRfdCBt
X3BlbmRpbmdOYXZpZ2F0aW9uSUQgeyAwIH07Ci0gICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4gbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4gbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX21h
aW5GcmFtZVByb2dyZXNzQ29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzIHsgdHJ1ZSB9OwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAg
cHJpdmF0ZToKICAgICBtdXRhYmxlIFRyYW5zYWN0aW9uSUQgbV9sYXN0RWRpdG9yU3RhdGVUcmFu
c2FjdGlvbklEOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgT3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9pbnB1dE1ldGhvZFN0YXRlOworICAgIHN0ZDo6b3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9pbnB1dE1ldGhvZFN0YXRlOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSIH07CiAKICAgICBjb25zdCBTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeTsKLSAgICBjb25zdCBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CisgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CiAKICNpZiBVU0UoV1BFX1JF
TkRFUkVSKQogICAgIElQQzo6QXR0YWNobWVudCBtX2hvc3RGaWxlRGVzY3JpcHRvcjsKQEAgLTIy
ODIsNyArMjI4Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248
dm9pZChib29sIGdyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jik+PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPj4gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0RmV0Y2hDYWxsYmFja01hcDsKICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PExheWVyVHJl
ZUZyZWV6ZVJlYXNvbj4gbV9sYXllclRyZWVGcmVlemVSZWFzb25zOwpAQCAtMjI5Myw3ICsyMjkz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5PiBtX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OwogI2VuZGlmCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBt
X3dlYlBhZ2VQcm94eUlkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4g
bV9wZW5kaW5nSW50cmluc2ljQ29udGVudFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRTaXplPiBtX3BlbmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZTsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fbGFzdFNlbnRJbnRyaW5zaWNDb250ZW50U2l6ZTsKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9jb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmYz
Y2ZlNTFkNTI0YzI4YTVhOTc0YjFmMGEwYTBlNzZkZWMwYjBlZC4uZTE1NzkzZDVhNGQyNDEzYTVi
OTRlYjIwNDljYTU3YmEwOTljMDBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktp
dDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkgLT4gKCkgQXN5
bmMKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAotICAgIFNldEJhY2tncm91bmRDb2xvcihPcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2Uo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGVudW06dWludDhfdCBKU0M6Ok1lc3Nh
Z2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZUxldmVsIG1l
c3NhZ2VMZXZlbCwgU3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZW5k
Q1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBVUkwg
cmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCkBAIC00NiwxMiAr
NDYsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBFeGVj
dXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVudCkg
LT4gKCkgQXN5bmMKICAgICBLZXlFdmVudChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQp
Ci0gICAgTW91c2VFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQsIE9wdGlvbmFsPFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25zKQor
ICAgIE1vdXNlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNhbmRib3hFeHRlbnNpb25z
KQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0aW9u
Vmlld0xheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGRvdWJsZSBzY2FsZUZhY3Rv
ciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICBTZXRNYXhpbXVtVW5v
YnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAgICAgU2V0RGV2aWNlT3JpZW50
YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKLSAgICBTZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzKE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1bWVudHMp
CisgICAgU2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1bWVudHMpCiAgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVw
ZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgdmlld0xheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2Vk
Q29udGVudFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2Vi
Q29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0
ZXMsIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gdGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJsZSBtaW5p
bXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgsIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGVJRCkKICAgICAKICAgICBTZXRTY3JlZW5Jc0JlaW5nQ2FwdHVyZWQoYm9vbCBjYXB0dXJlZCkK
QEAgLTg5LDcgKzg5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHJlY3RzKSBBc3luYwogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3Ry
dWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9u
KSBTeW5jaHJvbm91cwogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJL
aXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCi0gICAgU3RhcnRJbnRl
cmFjdGlvbldpdGhFbGVtZW50Q29udGV4dE9yUG9zaXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RWxl
bWVudENvbnRleHQ+IGVsZW1lbnRDb250ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKKyAg
ICBTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQpCiAgICAgU3RvcEludGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25F
bGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICBGb2N1c05leHRGb2N1c2VkRWxlbWVudChib29s
IGlzRm9yd2FyZCkgLT4gKCkgQXN5bmMKQEAgLTExNCwxNCArMTE0LDE0IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJp
bGl0eShib29sIHNob3VsZFN0b3JlKQogICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBwb3NpdGlvbkluV2luZG93KQogICAgIENhbmNlbEF1dG9zY3JvbGwo
KQotICAgIFJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkgLT4gKE9wdGlvbmFsPFdl
YktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gaW5mbykgQXN5bmMKKyAgICBSZXF1ZXN0
Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbigpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gaW5mbykgQXN5bmMKICAgICBIYXJkd2FyZUtleWJvYXJk
QXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGtleWJvYXJkSXNBdHRhY2hlZCkKICAgICBTZXRJc1No
b3dpbmdJbnB1dFZpZXdGb3JGb2N1c2VkRWxlbWVudChib29sIHNob3dpbmdJbnB1dFZpZXcpCiAg
ICAgVXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRf
dCBsZW5ndGhEZWx0YSkgLT4gKCkgQXN5bmMKICAgICBSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29u
dGV4dChzdHJ1Y3QgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0
KSAtPiAoc3RydWN0IFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCByZXNwb25zZSkgQXN5
bmMKIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbmQpCiAgICAgU2V0U2hvdWxkUmV2ZWFs
Q3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKGJvb2wgc2hvdWxkUmV2ZWFsQ3VycmVudFNl
bGVjdGlvbkFmdGVySW5zZXJ0aW9uKQotICAgIEluc2VydFRleHRQbGFjZWhvbGRlcihXZWJDb3Jl
OjpJbnRTaXplIHNpemUpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gcGxh
Y2Vob2xkZXIpIEFzeW5jCisgICAgSW5zZXJ0VGV4dFBsYWNlaG9sZGVyKFdlYkNvcmU6OkludFNp
emUgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHBsYWNl
aG9sZGVyKSBBc3luYwogICAgIFJlbW92ZVRleHRQbGFjZWhvbGRlcihzdHJ1Y3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQgcGxhY2Vob2xkZXIpIC0+ICgpIEFzeW5jCiAgICAgVGV4dElucHV0Q29u
dGV4dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIC0+IChWZWN0b3I8c3RydWN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0PiBjb250ZXh0cykgQXN5bmMKICAgICBGb2N1c1RleHRJbnB1
dENvbnRleHRBbmRQbGFjZUNhcmV0KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250
ZXh0LCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKQEAg
LTE3Miw3ICsxNzIsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWlu
dDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNjcm9sbEJ5KHVp
bnQzMl90IHNjcm9sbERpcmVjdGlvbiwgdWludDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpCiAgICAg
Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAKLSAgICBHb1RvQmFja0ZvcndhcmRJdGVt
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGcmFtZUxv
YWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYktp
dDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQorICAgIEdvVG9CYWNrRm9y
d2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykKICAg
ICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiAgICAgTG9hZFVSTEluRnJhbWUoVVJMIHVy
bCwgU3RyaW5nIHJlZmVycmVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKQEAg
LTIxNSwxNSArMjE1LDE1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKE1I
VE1MKQogICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBH
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAg
IEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAgICAgR2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAg
ICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKE9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkg
LT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhKSBBc3luYwogICAgIEdl
dFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3Ry
aW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0
YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNl
PiBkYXRhUmVmZXJlbmNlKSBBc3luYwogCi0gICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlw
dFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJz
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxX
ZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRh
dGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4gZGV0YWlscykgQXN5bmMKKyAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQo
c3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4gZGV0YWlscykgQXN5bmMKIAogICAgIEZvcmNlUmVwYWludCgpIC0+ICgpIEFzeW5jCiAg
ICAgU2VsZWN0QWxsKCkKQEAgLTI3OCw3ICsyNzgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogICAgIFNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBk
b3VibGUgdGV4dFpvb21GYWN0b3IpCiAgICAgU2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21G
YWN0b3IpCiAgICAgU2V0VGV4dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCi0gICAgV2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQzMl90IGRpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+
IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCisgICAgV2luZG93U2NyZWVuRGlkQ2hhbmdlKHVpbnQz
Ml90IGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNl
Y29uZCkKIAogICAgIEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAKQEAgLTMzMiw3
ICszMzIsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUmVxdWVzdERyYWdTdGFydChXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01h
c2spCiAgICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykK
LSAgICBJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6OkludFNp
emU+IGltYWdlU2l6ZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJldmlld1Jl
Y3RzLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvcikg
QXN5bmMKKyAgICBJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoVmVjdG9yPFdlYkNvcmU6
OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBkcm9wUHJl
dmlld1JlY3RzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0
SW5kaWNhdG9yKSBBc3luYwogICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKIApAQCAtNDA4
LDcgKzQwOCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91
cwogICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYwogI2VuZGlmCi0gICAgRHJhd1RvUERGKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCiAjZW5k
aWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8pIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKSBBc3luYwpAQCAtNDc3LDcgKzQ3
Nyw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2V0U2l6ZVRvQ29udGVudEF1dG9T
aXplTWF4aW11bVNpemUoV2ViQ29yZTo6SW50U2l6ZSBzaXplKQogICAgIFNldEF1dG9TaXppbmdT
aG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCBzaG91bGRFeHBhbmQpCiAKLSAgICBTZXRWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKE9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHZp
ZXdwb3J0U2l6ZSkKKyAgICBTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gdmlld3BvcnRTaXplKQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgSGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoU3RyaW5nIHJlc3VsdCkK
QEAgLTQ4OCw3ICs0ODgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAKICAg
ICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKLSAgICBTZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQorICAg
IFNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxi
YXJTdHlsZSkKIAogICAgIEdldEJ5dGVjb2RlUHJvZmlsZSgpIC0+IChTdHJpbmcgc3RyaW5nKSBB
c3luYwogCkBAIC01NjksMTMgKzU2OSwxMyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKLSAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBPcHRpb25h
bDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBl
KSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVu
dGlmaWVyLCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5n
SW1hZ2VEYXRhKSAtPiAoKSBBc3luYworICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUs
IFN0cmluZyBjb250ZW50VHlwZSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVwZGF0
ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCi0gICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpIC0+IChPcHRpb25h
bDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCkgQXN5bmMKKyAgICBHZXRB
cHBsaWNhdGlvbk1hbmlmZXN0KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4gbWFuaWZlc3QpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldERlZmVyc0xvYWRp
bmcoYm9vbCBkZWZlcnNMb2FkaW5nKQpAQCAtNjI5LDcgKzYyOSw3IEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJl
cXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKKyAgICBSZXN0b3Jl
QXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4
KQogICAgIFNldEFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KGVudW06Ym9vbCBXZWJDb3JlOjpIaWdo
bGlnaHRWaXNpYmlsaXR5IGhpZ2hsaWdodFZpc2liaWxpdHkpCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwCmluZGV4
IDFiYmZlNWI5YjgzNjYzNzFjYzA0M2ViMjZmNDcwYmM3NDU4YmMxZWMuLmNlMjNmN2ZmOGYzNDIx
M2YyNDNhZjhjMWMyZjFlZmI5M2IyZmMzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFdlYlBhZ2VPdmVybGF5OjpkaWRTY3JvbGxGcmFtZShQYWdlT3ZlcmxheSYsIEZyYW1lJiBm
cmFtZSkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLWF1dG8gV2ViUGFnZU92ZXJsYXk6OmFjdGlv
bkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KEZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IE9wdGlvbmFs
PEFjdGlvbkNvbnRleHQ+CithdXRvIFdlYlBhZ2VPdmVybGF5OjphY3Rpb25Db250ZXh0Rm9yUmVz
dWx0QXRQb2ludChGbG9hdFBvaW50IGxvY2F0aW9uKSAtPiBzdGQ6Om9wdGlvbmFsPEFjdGlvbkNv
bnRleHQ+CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LT5hY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQ
b2ludCgqdGhpcywgbG9jYXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmgKaW5kZXggZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVk
ZTcyYWZlNGEzNzNlNzQyMS4uNDJkNjMwMWM5NDEwNzRmZDYwNjM5NjQ1YWQ0NTIzNmM4NmRiNzVk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92
ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3Zl
cmxheS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFNjcm9sbEZyYW1lKFdlYlBhZ2VPdmVybGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICAgICAgdmlydHVhbCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25D
b250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9p
bnQpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViUGFnZU92
ZXJsYXkmLCBXZWJDb3JlOjpGbG9hdFBvaW50KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViUGFnZU92ZXJs
YXkmKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShX
ZWJQYWdlT3ZlcmxheSYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YURldGVjdG9yc0Rp
ZEhpZGVVSShXZWJQYWdlT3ZlcmxheSYpIHsgfQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgICAgIFdlYkNv
cmU6OlNpbXBsZVJhbmdlIHJhbmdlOwogICAgIH07Ci0gICAgT3B0aW9uYWw8QWN0aW9uQ29udGV4
dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViQ29yZTo6RmxvYXRQb2ludCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQ
b2ludChXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVz
ZW50VUkoKTsKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VVSSgpOwogICAgIHZvaWQg
ZGF0YURldGVjdG9yc0RpZEhpZGVVSSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAppbmRleCAzNzgzYjQ3YTAzNDQwNzRh
YjdmNzk3ODAxOTA4NzFkMzA4OThkOTU3Li41ZWU4YjA1NjExOThjYTI0YTM2OGU0NGRkOTFjOGQy
YjExZmNiMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
bGliL1dlYlBhZ2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gaW5w
dXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gaW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+c2hvdWxkVXNlSW5w
dXRNZXRob2QoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCAwYmMw
MzBkMGYwODkyZTQ0NDY2MGIzZjY4NmM1MTMxMjdjMjk0MzczLi5lZGI5ZDQ0MWI1N2ZiMmZhNDZm
OGNmMWY5ZDZjMzAwNTIxMzUwYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBX
ZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdEZXZpY2UoKSBjb25z
dAogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6
OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBpZiAoc2NyZWVuSXNUb3VjaFByaW1hcnlJbnB1dERldmljZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCA1OThkNjBiOGI4NDE3MjY5MDMxMWM5NzRlY2QxOTc5Njk0MDYxMGIxLi5kNWE1
MDE3NmZmNGIyYmZiZGI1MjMxYzU1YjgxYzU3NDlkMzRkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTY2LDcgKzE2
Niw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yQ29udGV4dChjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShyYW5nZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yQ29udGV4dChjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorc3RhdGljIFN0cmluZyBwbGFpblRleHRG
b3JDb250ZXh0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAg
ICByZXR1cm4gcmFuZ2UgPyBwbGFpblRleHRGb3JDb250ZXh0KCpyYW5nZSkgOiBlbXB0eVN0cmlu
ZygpOwogfQpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yRGlz
cGxheShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yLCB0cnVlKTsKIH0KIAotc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JEaXNwbGF5KGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCitzdGF0aWMgU3RyaW5nIHBsYWluVGV4dEZv
ckRpc3BsYXkoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAg
IHJldHVybiByYW5nZSA/IHBsYWluVGV4dEZvckRpc3BsYXkoKnJhbmdlKSA6IGVtcHR5U3RyaW5n
KCk7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICB9CiAK
ICAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KTsKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0ZWRSYW5nZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBzZWxlY3RlZFJhbmdlOwogICAgIHBvc3RMYXlvdXREYXRhLmlz
U3RhYmxlU3RhdGVVcGRhdGUgPSBtX2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9k
ZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRl
Rml4ZWRQb3NpdGlvbiA9IGZhbHNlOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAgICAgICAg
IGJvdW5kZWRTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5t
YXhpbXVtU2NhbGUoKSwgc3RkOjptYXg8ZmxvYXQ+KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZSgpLCBib3VuZGVkU2NhbGUpKTsKICAgICAgICAgc2NhbGVQYWdlKGJvdW5kZWRT
Y2FsZSwgSW50UG9pbnQoKSk7CiAKLSAgICAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xs
UG9zaXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRp
b247CiAgICAgICAgIGlmIChoaXN0b3J5SXRlbS5zaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KSkgewogICAgICAgICAgICAgbV9kcmF3aW5nQXJlYS0+c2V0RXhwb3NlZENvbnRlbnRSZWN0KGhp
c3RvcnlJdGVtLmV4cG9zZWRDb250ZW50UmVjdCgpKTsKICAgICAgICAgICAgIG1faGFzUmVzdG9y
ZWRFeHBvc2VkQ29udGVudFJlY3RBZnRlckRpZENvbW1pdExvYWQgPSB0cnVlOwpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBIaXN0b3J5SXRl
bSYgaGlzdG9yeUl0ZW0pCiAKICAgICAgICAgZG91YmxlIG5ld1NjYWxlID0gc2NhbGVBZnRlclZp
ZXdwb3J0V2lkdGhDaGFuZ2UoaGlzdG9yeUl0ZW0ucGFnZVNjYWxlRmFjdG9yKCksICFoaXN0b3J5
SXRlbS5zY2FsZUlzSW5pdGlhbCgpLCBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbiwgY3VycmVudE1p
bmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMud2lkdGgoKSwgbmV3Q29udGVu
dFNpemUsIG9sZENvbnRlbnRTaXplLCB2aXNpYmxlSG9yaXpvbnRhbEZyYWN0aW9uKTsKIAotICAg
ICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBuZXdDZW50ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8RmxvYXRQb2ludD4gbmV3Q2VudGVyOwogICAgICAgICBpZiAoaGlzdG9yeUl0ZW0uc2hvdWxk
UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkpIHsKICAgICAgICAgICAgIGlmICghb2xkQ29udGVudFNp
emUuaXNFbXB0eSgpICYmICFuZXdDb250ZW50U2l6ZS5pc0VtcHR5KCkgJiYgbmV3Q29udGVudFNp
emUgIT0gb2xkQ29udGVudFNpemUpCiAgICAgICAgICAgICAgICAgbmV3Q2VudGVyID0gcmVsYXRp
dmVDZW50ZXJBZnRlckNvbnRlbnRTaXplQ2hhbmdlKGhpc3RvcnlJdGVtLnVub2JzY3VyZWRDb250
ZW50UmVjdCgpLCBvbGRDb250ZW50U2l6ZSwgbmV3Q29udGVudFNpemUpOwpAQCAtOTcxLDkgKzk3
MSw5IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlRG91YmxlVGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50
KGNvbnN0IEludFBvaW50JiBwb2ludCwgT3B0aW9uCiAgICAgbm9kZVJlc3BvbmRpbmdUb0RvdWJs
ZUNsaWNrLT5kb2N1bWVudCgpLmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudChyb3VuZGVkQWRqdXN0ZWRQb2ludCwgcm91bmRl
ZEFkanVzdGVkUG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQs
IDIsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwg
MCwgV2ViQ29yZTo6T25lRmluZ2VyVGFwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBPcHRpb25hbDxGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uPiBpbmZvcm1hdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24+IGluZm9ybWF0aW9uOwogICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KQog
ICAgICAgICBpbmZvcm1hdGlvbiA9IGZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKTsKIApAQCAt
MTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9y
RHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRp
ZEhhbmRsZURyYWcpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFn
ZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KQogewogICAgIG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5pbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGltYWdlU2l6
ZXMpOwogICAgIGF1dG8gcGxhY2Vob2xkZXJSZWN0cyA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoKS5tYXAoWyZdIChhdXRvJiBlbGVtZW50KSB7CkBA
IC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERyb3BwZWRJbWFnZVBsYWNl
aG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRv
ckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRv
ckRhdGE7CiAgICAgY29uc3RleHByIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiB0ZXh0
SW5kaWNhdG9yT3B0aW9ucyB7CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVT
bmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uLAogICAgICAgICBUZXh0
SW5kaWNhdG9yT3B0aW9uOjpFeHBhbmRDbGlwQmV5b25kVmlzaWJsZVJlY3QsCkBAIC0xMDc1LDcg
KzEwNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudAogCiB2b2lkIFdlYlBhZ2U6OmNvbXB1
dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgpCiB7Ci0gICAgT3B0aW9uYWw8VGV4dEluZGljYXRv
ckRhdGE+IHRleHRJbmRpY2F0b3JEYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRv
ckRhdGE+IHRleHRJbmRpY2F0b3JEYXRhOwogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8VGV4dElu
ZGljYXRvck9wdGlvbj4gZGVmYXVsdFRleHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERyYWcgewog
ICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpJbmNsdWRlU25hcHNob3RPZkFsbFZpc2libGVD
b250ZW50V2l0aG91dFNlbGVjdGlvbiwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbjo6RXhw
YW5kQ2xpcEJleW9uZFZpc2libGVSZWN0LApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgc3RhdGljIGJv
b2wgaW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAg
ICAgcmV0dXJuIGNvbnRhaW5lciAmJiBIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXko
KmNvbnRhaW5lcik7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZXhwYW5kRm9y
SW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBleHBhbmRGb3JJbWFnZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQogewogICAgIFZpc2libGVQb3NpdGlvbiBleHBhbmRlZFN0YXJ0KG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSwgcmFuZ2Uuc3RhcnRPZmZz
ZXQoKSkpOwogICAgIFZpc2libGVQb3NpdGlvbiBleHBhbmRlZEVuZChtYWtlQ29udGFpbmVyT2Zm
c2V0UG9zaXRpb24oJnJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpOwpA
QCAtMTQzNCw3ICsxNDM0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiBmbGFnczsKICAgICBHZXN0dXJlUmVjb2duaXplclN0YXRlIHdrR2VzdHVyZVN0
YXRlID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKTsK
ICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdlc3R1cmVUeXBlPihnZXN0dXJlVHlwZSkpIHsKQEAg
LTE1NTQsNyArMTU1NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3Qg
SW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAgICBjb21wbGV0aW9u
SGFuZGxlcihwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VGb3JQb2ludEluUm9vdFZpZXdDb29yZGluYXRlcyhGcmFtZSYgZnJhbWUsIGNvbnN0
IEludFBvaW50JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgYm9vbCBiYXNlSXNTdGFydCkK
IHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIGV4aXN0aW5nU2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0g
ZXhpc3RpbmdTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoRnJhbWUmIGZyYW1lLCBjbwogICAgIGlmICh0YXJnZXROb2RlICYmICFIVE1MRWxlbWVu
dDo6c2hvdWxkRXh0ZW5kU2VsZWN0aW9uVG9UYXJnZXROb2RlKCp0YXJnZXROb2RlLCBleGlzdGlu
Z1NlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKIAogICAgIGlmICh0YXJnZXROb2RlKQpA
QCAtMTYyNSw3ICsxNjI1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZv
clBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKEZyYW1lJiBmcmFtZSwgY28KICAgICByZXR1cm4g
cmFuZ2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VBdFdvcmRCb3Vu
ZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9z
aXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29s
IGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIFNlbGVj
dGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIFNlbGVj
dGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKQEAgLTE3
OTIsNyArMTc5Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25Ub3VjaCBzCiAgICAgaWYgKHNob3VsZERp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAg
ICAgIGRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVj
dGlvblRvdWNoLCBwb2ludCk7CiAKLSAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2U7CiAgICAgT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiBmbGFnczsKIAogICAgIHN3aXRjaCAoc2VsZWN0aW9uVG91Y2gpIHsKQEAgLTIw
NzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViUGFnZTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmls
aXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBtYXRjaFRleHQsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU5l
YXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGNv
bnN0IFN0cmluZyYgbWF0Y2hUZXh0LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
CiB7CiAgICAgYXV0byBsaXZlUmFuZ2UgPSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIGlm
ICghbGl2ZVJhbmdlKQpAQCAtMjE1NSw3ICsyMTU1LDcgQEAgdm9pZCBXZWJQYWdlOjptb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdy
YW4KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1PcHRpb25hbDxTaW1wbGVSYW5nZT4g
V2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQorc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUm
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
KQogewogICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9y
UG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC0yNDcxLDcgKzI0NzEsNyBAQCBib29sIFdlYlBh
Z2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24s
IGNvbnN0IFN0cmluZwogICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2Uo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgIFN0cmluZyB0
ZXh0Rm9yUmFuZ2U7CiAgICAgYXV0byBvcmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcyA9
IGZvbGRRdW90ZU1hcmtzKG9yaWdpbmFsVGV4dCk7CiAKQEAgLTI3NjQsNyArMjc2NCw3IEBAIHN0
YXRpYyB2b2lkIGRhdGFEZXRlY3RvckxpbmtQb3NpdGlvbkluZm9ybWF0aW9uKEVsZW1lbnQmIGVs
ZW1lbnQsIEludGVyYWN0aW9uSW5mCiAKICNlbmRpZgogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpw
YWlyPFJlbmRlckltYWdlJiwgSW1hZ2UmPj4gaW1hZ2VSZW5kZXJlckFuZEltYWdlKEVsZW1lbnQm
IGVsZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJ
bWFnZSY+PiBpbWFnZVJlbmRlcmVyQW5kSW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBp
ZiAoIWlzPFJlbmRlckltYWdlPihlbGVtZW50LnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpAQCAtMzA5MSw3ICszMDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYg
cmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbklu
Zm9ybWF0aW9uKHBvc2l0aW9uSW5mb3JtYXRpb24ocmVxdWVzdCkpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRDb250ZXh0T3JQb3NpdGlvbihPcHRpb25h
bDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50
UG9pbnQmJiBwb2ludCkKK3ZvaWQgV2ViUGFnZTo6c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
Q29udGV4dE9yUG9zaXRpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4m
JiBlbGVtZW50Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQmJiBwb2ludCkKIHsKICAgICBpZiAo
ZWxlbWVudENvbnRleHQpIHsKICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUgPSBlbGVtZW50Rm9y
Q29udGV4dCgqZWxlbWVudENvbnRleHQpOwpAQCAtMzE3OCw3ICszMTc4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpmb2N1c05leHRGb2N1c2VkRWxlbWVudChib29sIGlzRm9yd2FyZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1PcHRpb25hbDxG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uKCkKK3N0ZDo6b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1
bWVudCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQpAQCAtMzQw
OCw3ICszNDA4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3
TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGRvdWIKICAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50aWZpZXIgPDwg
IiBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNpemUgPDwgIiBz
Y2FsZUZhY3RvciAiIDw8IHNjYWxlRmFjdG9yIDw8ICIgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoICIgPDwgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKIAogICAgIGF1dG8gcHJldmlv
dXNMYXlvdXRTaXplU2NhbGVGYWN0b3IgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRT
aXplU2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNl
ID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3Bv
cnQoKSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURl
dmljZVdpZHRoKTsKKyAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92
aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/
IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPihtaW5pbXVtRWZmZWN0aXZlRGV2
aWNlV2lkdGgpOwogICAgIGlmICghbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld0xheW91
dFNpemUoc2l6ZSwgc2NhbGVGYWN0b3IsIFdURk1vdmUoY2xhbXBlZE1pbmltdW1FZmZlY3RpdmVE
ZXZpY2UpKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDM3LDcgKzM0MzcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldERldmljZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24pCiAg
ICAgbV9wYWdlLT5tYWluRnJhbWUoKS5vcmllbnRhdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzPiYgYXJndW1lbnRzKQordm9pZCBXZWJQYWdlOjpzZXRPdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHM+JiBhcmd1bWVudHMpCiB7CiAgICAgbV9wYWdlLT5zZXRPdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7CiB9CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgYWRqdXN0VmVsb2NpdHlEYXRhRm9yQm91bmRlZFNjYWxlKFZlbG9jaXR5RGF0
YSYgdmVsb2NpdHlEYXRhLAogICAgICAgICB2ZWxvY2l0eURhdGEuc2NhbGVDaGFuZ2VSYXRlID0g
MDsKIH0KIAotT3B0aW9uYWw8ZmxvYXQ+IFdlYlBhZ2U6OnNjYWxlRnJvbVVJUHJvY2Vzcyhjb25z
dCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvKSBjb25zdAorc3RkOjpvcHRpb25hbDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9j
ZXNzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8pIGNvbnN0CiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbklERm9yTGFzdFNjYWxl
RnJvbVVJUHJvY2VzcyA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8ubGFzdExheWVyVHJl
ZVRyYW5zYWN0aW9uSUQoKTsKICAgICBpZiAobV9sYXN0VHJhbnNhY3Rpb25JRFdpdGhTY2FsZUNo
YW5nZSA+IHRyYW5zYWN0aW9uSURGb3JMYXN0U2NhbGVGcm9tVUlQcm9jZXNzKQpAQCAtNDIzOSw3
ICs0MjM5LDcgQEAgYm9vbCBXZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9p
bnRpbmdEZXZpY2UoKSBjb25zdAogICAgIHJldHVybiBoYXNBY2Nlc3NvcnlNb3VzZVBvaW50aW5n
RGV2aWNlKCk7CiB9CiAKLU9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6
OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlzTW91c2VQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA/IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6
OkZpbmUgOiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2U7CiB9CkBAIC00Mjc2LDcgKzQy
NzYsNyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRa
b29tU2NhbGluZygpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0
UGxhY2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUm
IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBJbnNl
cnRpbmcgdGhlIHBsYWNlaG9sZGVyIG1heSBydW4gSmF2YVNjcmlwdCwgd2hpY2ggY2FuIGRvIGFu
eXRoaW5nLCBpbmNsdWRpbmcgZnJhbWUgZGVzdHJ1Y3Rpb24uCiAgICAgUmVmPEZyYW1lPiBmcmFt
ZSA9IGNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCAxYmI5OGNjZDg0NzZl
MzhiMGU3NmRjMzYzZjY1MWIzYjJhMjYwMjMxLi43ZjRiN2JkNGZiMTVjNTJiNzM5NTJkYzAwNzdh
MWI0ZmI5M2JhOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApA
QCAtNzAsOCArNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFpbkZyYW1lQ29u
dGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lk
IHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3Nl
ZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0RXhwb3NlZENvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpIG92ZXJyaWRlOwpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVu
ZFBhaW50aW5nKCk7CiAgICAgdm9pZCByZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5
ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENv
bG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRDb2xvclNwYWNlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRGZW5jZShjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxs
YmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RMYXllcjsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xh
c3RWaWV3U2l6ZUZvclNjYWxlVG9GaXQ7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3REb2N1
bWVudFNpemVGb3JTY2FsZVRvRml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCmluZGV4IDU2ZTgzZGNlZTljZTA3MmMzYmExOTI1MTU3Y2Q1MDNiMWY1OWQ0ZWEuLjc2
NjA0YjVkNTBjN2ZlNjc2YjA1YTlhYjY2NGU1NGVhZDEzYzgxNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZygpCiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FW
aWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOkB7IEAi
bGF5ZXIiOiBtX2hvc3RpbmdMYXllci5nZXQoKSB9XTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4g
dmlld0V4cG9zZWRSZWN0KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Qp
CiB7CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhwb3NlZFJlY3Q7CiAKQEAgLTY1MSw3
ICs2NTEsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMYXllckhv
c3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0Fy
ZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29u
dGV4dCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xv
clNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFj
ZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2Uoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7
CiAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UgPyBj
b2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1
NzljNGU4OTQ5MWQyYWE0NWZmZWVlMDQ5YWIwZTI1NjQxMjE5Y2M5Li5hMmI3OGZiZjViYTczM2Y0
YmRlYzdmZjgzOGJmOWNlMTJmYTM3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIGJvb2wg
V2ViUGFnZTo6aG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGlj
cz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNl
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6
cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KQEAgLTk1Niw3ICs5
NTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoaW1tZWRpYXRlQWN0aW9u
UmVzdWx0LCBpbW1lZGlhdGVBY3Rpb25IaXRUZXN0UHJldmVudHNEZWZhdWx0LCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKTsKIH0KIAotT3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1w
bGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihG
bG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6
dHVwbGU8V2ViQ29yZTo6U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gV2ViUGFnZTo6bG9v
a3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzKQog
ewogICAgIGF1dG8mIG1haW5GcmFtZSA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlm
ICghbWFpbkZyYW1lLnZpZXcoKSB8fCAhbWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24v
V2ViUGFnZVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3BsYXlzdGF0aW9uL1dlYlBhZ2VQbGF5U3RhdGlvbi5jcHAKaW5kZXggZjllNTllYjk5Y2RhZjlm
OWFlYTBhODYzMTMxM2FjNGEzMWQ0ZTFlZi4uMmJjZTI1ZWNkNjAzMzIwZGIxNjRlMjUwNDYyYTAy
Y2RiYTNmMDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cGxheXN0YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9wbGF5c3RhdGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3BwCkBAIC03
Niw3ICs3Niw3IEBAIGJvb2wgV2ViUGFnZTo6aG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBv
aW50aW5nRGV2aWNlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8UG9p
bnRlckNoYXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJp
bWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3Rl
cmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5n
RGV2aWNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Rmlu
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJQYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQ
YWdlV2luLmNwcAppbmRleCBmYmZjMWZkM2VjZTA5ZGMzZGZkOTMwMGRjMWQ2N2YwNDU5NDIwNTNi
Li44ZTk0NTQ1OTdiYjIzYjIyYzUwNmY5MjkwMjBmYzNjMzdmZmFhNzFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0x
MjYsNyArMTI2LDcgQEAgYm9vbCBXZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxl
UG9pbnRpbmdEZXZpY2UoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQYWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQ
cmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxQb2ludGVyQ2hhcmFj
dGVyaXN0aWNzPiBXZWJQYWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRp
bmdEZXZpY2UoKSBjb25zdAogewogICAgIHJldHVybiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpG
aW5lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3Bl
L1dlYlBhZ2VXUEUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dl
YlBhZ2VXUEUuY3BwCmluZGV4IDI4MzZhZWI5Mzg1ODExN2ZkZjY1MzdjNTY0MDhkYWE1MWEzOTFl
MzEuLjU4NWQ5MDZiMDk3NWVkODZiN2Y3ODQxZjQ3YTk1NzA2YzU5NjQ4NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKQEAg
LTg3LDcgKzg3LDcgQEAgYm9vbCBXZWJQYWdlOjpob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxl
UG9pbnRpbmdEZXZpY2UoKSBjb25zdAogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2lu
dGluZ0RldmljZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+
IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSgp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoc2NyZWVuSXNUb3Vj
aFByaW1hcnlJbnB1dERldmljZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGJiZTIwMDVhZDZkYzFmNmMzZGNiMDdlYmM4MWQ2ZTRmNDNiYmVmOTMuLjc4ODI3
ODk0M2E4MTdmM2M0ZGVmNGFkMDhlNjg1ZmUzYTYzOTkwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0TmVlZE1hY2hTYW5kYm94RXh0ZW5zaW9uKHRydWUpOwogI2VuZGlmCi0gICAgaWYgKE9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5nZXRBdWRpdFRva2VuKCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiBhdWRpdFRva2VuID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bigpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIChjb25zdCBVSW50OCopJiphdWRpdFRva2VuLCBzaXplb2Yo
KmF1ZGl0VG9rZW4pKSk7CiAgICAgICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5n
bGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oV2ViQ29yZTo6cHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKCksIGF1ZGl0RGF0YSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggMjMwN2M3MGIyMGMyYTdkNTE1YTlmNWY2NjBlZDNhNmJiNmE0ZDUy
My4uZjhkODE5Yzk3MTE2NGU4NWQwZDk2MzU5NDZjZWMzZGFlYmJiNGEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNDgsNyArMzQ4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgdm9pZCB1bmJsb2NrU2VydmljZXNSZXF1aXJlZEJ5QWNjZXNzaWJpbGl0eShjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwogI2lmIEVOQUJMRShDRlBSRUZTX0RJ
UkVDVF9NT0RFKQotICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgZW5j
b2RlZFZhbHVlKTsKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiYgZW5jb2RlZFZhbHVlKTsKICAgICB2b2lkIHVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNlbmRpZgogICAgIHZvaWQgcG93ZXJTb3Vy
Y2VEaWRDaGFuZ2UoYm9vbCk7CkBAIC02OTIsNyArNjkyLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9jcHVNb25p
dG9yOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbV9jcHVMaW1pdDsKIAogICAgIFN0cmluZyBtX3VpUHJvY2Vzc05hbWU7CiAgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKQEAgLTczMiw3
ICs3MzIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMg
ZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhp
cyBpcyBhbiBvcHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRz
IGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgotICAgIE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBB
TDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpBbGwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggNDFlNjc5ZDc5Y2IxZjhhMmY5ZmU4MzE5ODM1NWNiZjUwNDI0
OTFlYy4uMTQ0MTEzNjQ4NDY5NWYxZTI5NTc3MTI4NWQ5ZmNiYWJlMGIyNzgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3NSw3
ICsxNzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNv
dW50ZWQgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVuYmxvY2tTZXJ2aWNlc1JlcXVpcmVk
QnlBY2Nlc3NpYmlsaXR5KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFu
ZGxlQXJyYXkpCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpCi0gICAgTm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBkb21haW4sIFN0cmluZyBrZXksIE9wdGlvbmFsPFN0cmlu
Zz4gZW5jb2RlZFZhbHVlKQorICAgIE5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9t
YWluLCBTdHJpbmcga2V5LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQogICAg
IFVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IGhhbmRsZUFycmF5KQogI2VuZGlmCiAgICAgUG93ZXJTb3VyY2VEaWRDaGFuZ2UoYm9v
bCBoYXNBQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCBlYTBmZGMxZDUyNjc1YWJhMjYwZTY5NjIwZTdmMTdj
ODY4YTRkNGRlLi45NzNkNjg5ZjM5NDg2NDZlNTZmM2I5ZjczNTYyMjAxYzI4YmQyYjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlD
aGFuZ2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9t
YXAtPnNldEl0ZW1JZ25vcmluZ1F1b3RhKGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJl
YUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VB
cmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgaWYg
KCFzdG9yYWdlQXJlYUltcGxJRCkgewogICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3Jp
Z2luYXRlcyBmcm9tIGFub3RoZXIgcHJvY2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFu
Z2UgdG8gb3VyIHN0b3JhZ2UgYXJlYSBtYXAuCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIAotc3RhdGlj
IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBh
Z2UsIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25z
dCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQp
CitzdGF0aWMgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hpbmco
UGFnZSYgcGFnZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5
cGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3Jh
Z2VBcmVhSW1wbElEKQogewogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CiAgICAg
cGFnZS5mb3JFYWNoRG9jdW1lbnQoWyZdKGF1dG8mIGRvY3VtZW50KSB7CkBAIC0zMTMsNyArMzEz
LDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNo
aW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2kKICAgICByZXR1cm4gZnJhbWVzOwogfQogCi12
b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3QgT3B0
aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKIHsKICAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2Ug
bmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBj
YW4gZ2V0IHRoZSByaWdodCBwYWdlIGhlcmUuCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0
b3JhZ2VBcmVhSW1wbEkKICAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Np
b25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3
VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAotdm9pZCBT
dG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBPcHRpb25hbDxT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9j
YWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKIHsKICAgICBBU1NFUlQoaXNMb2NhbFN0b3JhZ2UodHlwZSgpKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4
IDlmNDdhOGZlNDUxNTAzNDQ3Mjg0OGJhNmFmMjhiZDcwOWU2YWIxZDEuLjA2ZTYzNTZjYjEzMzky
NjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0K
LSAgICBjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUlkZW50aWZpZXI+JiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXBJRDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFn
ZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0K
IAogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNw
YXRjaFN0b3JhZ2VFdmVudChjb25zdCBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVy
PiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KTsKKyAgICB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9pZCBjbGVhckNhY2hlKCk7CiAKICAgICB2
b2lkIHJlc2V0VmFsdWVzKCk7CkBAIC04NywxNSArODcsMTUgQEAgcHJpdmF0ZToKICAgICBib29s
IHNob3VsZEFwcGx5Q2hhbmdlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICB2
b2lkIGFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
KTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKTsKLSAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9u
YWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOworICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAogICAgIHZvaWQgY29ubmVjdCgpOwogCiAgICAg
U3RvcmFnZU5hbWVzcGFjZUltcGwmIG1fbmFtZXNwYWNlOwogICAgIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0gICAgT3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVy
PiBtX21hcElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21h
cElEOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwog
ICAgIHVpbnQ2NF90IG1fY3VycmVudFNlZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUlu
Qnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCmluZGV4IDNiNTMwM2MwOTQ1NDQ1Mjlj
OWFmNWY0NDE0MWY3NGIxMzExNWY0MjUuLjJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3
YmU5YmE5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBA
IG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVhTWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92
ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIo
dWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChPcHRp
b25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElE
LCBTdHJpbmcga2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVy
bFN0cmluZykKKyAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXks
IFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQogICAg
IENsZWFyQ2FjaGUoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGExNDIwYTE4ZWE2
YmE4YjVlNGE0NTMwOGQxNzQ5N2NmMjJlNTM3MGEuLjAxOTAxZWE3ZmE4N2VmODY4YjA2OThmYjVl
YzIyMWEzMzUxMjkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTY3LDcgKzY3LDcg
QEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIs
IHN0ZDo6bnVsbG9wdCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgY29uc3QgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3Rv
cmFnZVR5cGUsIElkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogICAgIDogbV9zdG9y
YWdlVHlwZShzdG9yYWdlVHlwZSkKICAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZUlEKHN0b3JhZ2VO
YW1lc3BhY2VJRCkKICAgICAsIG1fc2Vzc2lvblBhZ2VJRChwYWdlSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oCmluZGV4IGM2ZjlmOGExYTA2MDc3OGU0NmFhMzA1Y2NhNTIxYzc0NDdmZmEx
OGIuLmIwYWI5ZTczMGIzMTcyYzc3ZmIyMjRjNjM4MTI4YzU3MDAwODM2OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9u
SURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBT
dG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgSWRlbnRpZmllciwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAogICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CiAgICAgdWludDY0X3Qgc3RvcmFnZUFyZWFNYXBDb3Vu
dEZvclRlc3RpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5zaXpl
KCk7IH0KQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0
b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgSWRlbnRpZmllciBtX3N0b3JhZ2VO
YW1lc3BhY2VJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9zZXNz
aW9uUGFnZUlEOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1f
c2Vzc2lvblBhZ2VJRDsKIAogICAgIC8vIE9ubHkgdXNlZCBmb3IgdHJhbnNpZW50IGxvY2FsIHN0
b3JhZ2UgbmFtZXNwYWNlcy4KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+IG1fdG9wTGV2ZWxPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgKaW5kZXggNmE4YWJmMjFiOTRkNGQ4M2Rh
NjIzOTMyYjczY2Y3MTJkMDZjMDg0Ni4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5
NmVkNDA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKICAgICB2b2lkIHNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpE
ZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6
OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBi
b29sKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVM
YXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKTsKICAgICB2b2lkIHN1Ym1p
dEZyYW1lKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQppbmRleCBlZjBiZDlhZTFjY2M4ZTcy
ODc2MGEzYjlmZjU0ODBiZjgxNGE3OGI0Li5hM2VmYTViODgyZmU2ZDk3ZjMxZTc4ZTUxYzNkMzBm
ZmVhNzMzZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
dGZvcm1YUlN5c3RlbVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWMKICAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi1P
cHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpj
cmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQorc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVh
dGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhhbmRsZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1
ZGlvU291cmNlLmgKaW5kZXggMDcwNWY1MzI2N2Y1ZTQ3YTk4Y2ExZWNiMDRjYzljYjIxNDkwYTNm
NS4uYmEzNDg2NzI3YzAwYjJhY2E2Zjg2ZTM2YjI4Y2UyOTczNGNhM2RhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRp
b1NvdXJjZS5oCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYg
bV9tYW5hZ2VyOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1fY29u
c3RyYWludHM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBt
X2NvbnN0cmFpbnRzOwogICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMgbV9jYXBhYmlsaXRpZXM7CiAgICAgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzIG1fc2V0dGluZ3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggZjJmNjE4ZjZjNmMx
M2IwZjYzNzc3YTU0ZmU4MGQzYWRkMDc4YzgwYy4uNmFiMDFlZWNkZWY1ZTgzOGNjMWMwNmFkZjQ4
M2NhNDdhZTQxODgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlUHJveHkgbV9wcm94eTsKICAg
ICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbV9tYW5hZ2VyOwogCi0gICAgT3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9zaXplQ29uc3RyYWludHM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBtX3NpemVDb25zdHJhaW50czsKICAgICBX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVzOwog
ICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX3NldHRpbmdzOwogICAg
IFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBX
ZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgK
aW5kZXggYjVhYzIzMDM3NzYxZmM5YWJlNWJkM2ZlYTIyNzlkNjc4NDkwNzNhMi4uMDM4ZjNmOGIw
Nzc4MDlmZmZiYjMwMzIyMWM0OGRmODNhYjIwZDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNTcs
NyArMTU3LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1
bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+KTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywg
Y29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiZDdiYmE1NzIxZGQxNDJi
YWM1NDJiYzg5MWQ3NWMyYmU0YjE5YWI0Li43ZGViMjUyYjgzNDIzODM3MzE2OTRiNTU4ZGFlMWY5
Mzg4NjI2YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzEsNyAr
MzEsNyBAQCBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICNlbmRpZgogICAg
IFdpbGxFeGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKICAgICBEaWRFeGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLSAgICBEaWRFbnRlckZ1bGxzY3JlZW4o
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVu
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAg
IFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgTWFjaFNlbmRS
aWdodCBtYWNoU2VuZFJpZ2h0KQogICAgIFNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jh
dml0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggYjYyMWE2MmJiNTdhMmMyYjcxM2NjNTNhNmE5Njk2
NmNmY2NkMzU2My4uZTJlMWQyMjQzYWZhYzhhMDEwNzFkMTYwMWYzZDk2NDRkMDlhMDNkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cgogICAgIH0pOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAg
TE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDFhN2IxNzJiMDc5ZGE5NTc2
YWJjYTYxZmNmOWI3M2E2ODYwNjliMjkuLjM1ZTFhNTVlMmUzMjgzYzNkYWZlOTA5OWUwZTdlNzg1
Mjg4ODM4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNzA0LDcgKzcwNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdl
YlByb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKICAgICBBU1NFUlQo
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBPcHRpb25hbDxhdWRpdF90b2tl
bl90PiBhdWRpdFRva2VuID0gcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bigpOworICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIWF1ZGl0VG9r
ZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNy
ZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSYqYXVkaXRUb2tlbiwgc2l6ZW9mKCphdWRpdFRv
a2VuKSkpOwpAQCAtODExLDcgKzgxMSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0QWN0aXZlUGFn
ZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTCiB2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUNQVUxpbWl0KCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
T3B0aW9uYWw8ZG91YmxlPiBjcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY3B1
TGltaXQ7CiAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3Jr
ZXIpCiAgICAgICAgIGNwdUxpbWl0ID0gc2VydmljZVdvcmtlckNQVUxpbWl0OwogICAgIGVsc2Ug
ewpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgc3RhdGljIHZvaWQgc2V0UHJlZmVyZW5jZVZhbHVlKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgaWQgdmFsdWUKICNlbmRpZgog
fQogCi12b2lkIFdlYlByb2Nlc3M6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVu
Y29kZWRWYWx1ZSkKK3ZvaWQgV2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpCiB7CiAgICAgaWYgKCFlbmNvZGVkVmFsdWUpIHsKICAg
ICAgICAgc2V0UHJlZmVyZW5jZVZhbHVlKGRvbWFpbiwga2V5LCBuaWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgK
aW5kZXggNDA1ZDcyNjMwYTAxNDYyYzdkZDdhZTNiNDVmNGFhZjQ0NDg2YzQ3NC4uMjhlMjFjNWRm
ZDM2NzAxOTE4YzgzN2FhNTcxZTU5NjliNDVhYjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC01NCw3
ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzOjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlcgotICAgIHVzaW5nIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0
cmFpbnRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4g
aW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9E
ZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcywgT3B0
aW9uYWw8U3RyaW5nPiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpPjsKKyAgICB1c2luZyBWYWxp
ZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25zdHJhaW50c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4mIHZpZGVvRGV2aWNlcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRldmljZUlk
ZW50aWZpZXJIYXNoU2FsdCk+OwogICAgIHZvaWQgdmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29u
c3RyYWludHMoV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0LCBTdHJpbmcgaGFzaFNhbHQsIFZh
bGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJhY2smJik7CiAgICAgVmFsaWRh
dGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3RyYWludHNDYWxsYmFjayBtX3ZhbGlkYXRlVXNlck1lZGlh
UmVxdWVzdENvbnN0cmFpbnRzQ2FsbGJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggNTEzNjkxMjAwNjczOTFmZjM2NjI5YWE2YzlhYmIwODkyZjY2OWI3OS4uNGVi
OGMxMmEyOTliODg0ZWE4MGRiZmQ3OTNhYzFkMWZkYWQ5ZGNlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiBtZXNzYWdlcyAtPiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBOb3RSZWZDb3VudGVk
IHsKLSAgICBWYWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25zdHJhaW50cyhzdHJ1Y3QgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1SZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBoYXNoU2FsdCkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gaW52YWxpZENvbnN0cmFpbnQsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2
aWNlPiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiB2aWRlb0Rl
dmljZXMsIE9wdGlvbmFsPFN0cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBBc3luYwor
ICAgIFZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzKHN0cnVjdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGhhc2hTYWx0KSAtPiAoc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGludmFsaWRDb25zdHJhaW50LCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZT4gYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gdmlkZW9E
ZXZpY2VzLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBB
c3luYwogICAgIEdldE1lZGlhU3RyZWFtRGV2aWNlcygpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q2Fw
dHVyZURldmljZT4gZGV2aWNlcykgQXN5bmMKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRl
eCBhMmY1M2JlMDNmNDMwMzQwYjQ3YzU0YWM2ZTBhMTQxM2EwOTFlYTM0Li4wMjhmOWQ2Y2IxYjdk
ODIxYjVmMWI3NWUzM2QzY2Q2ZTYzYjI4OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAt
NTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5UHJpbWFy
eVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3Rl
cmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29h
cnNlOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNz
PiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpDb2Fyc2U7IH0K
ICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNo
YXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9pbnRpbmdEZXZpY2VzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gV2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlOyB9CiAKICAg
ICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLm1tCmluZGV4IDAzMjk5MTYzYzQwNWQwZTJmYThlYTVmNGJhZTQ2YjE5NjFlNDcwZTcuLjc3
YzA4ZDg1NzAzMDI1OGMxNWU4OWYyMjVlMjlhMzhlOGZiNzQzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpA
QCAtOTAsNyArOTAsNyBAQCAtICh2b2lkKWFkZDooRE9NSFRNTE9wdGlvbkVsZW1lbnQgKilvcHRp
b24gaW5kZXg6KHVuc2lnbmVkKWluZGV4CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIGlmICghb3B0aW9uKQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpOwotICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBPcHRp
b25hbDxXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+IHsg
c3RhdGljX2Nhc3Q8aW50PihpbmRleCkgfSkpOworICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5h
ZGQoY29yZShvcHRpb24pLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6SFRNTEVsZW1lbnRPckludD4geyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4KSB9KSk7CiB9
CiAKIC0gKHZvaWQpcmVtb3ZlOih1bnNpZ25lZClpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVJhbmdlLm1tCmluZGV4IDE0ZjQ4OWRhYTUxMjY1NTNhZWYxZTdiMzgzMmIyN2Q5MTFi
ODc0OTguLjQxMTVhNjRkNjVhY2Y3NzlmZWVlMmEwNTNiOGY1M2Y2OTM2ZjhlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBET01S
YW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdlKiB2YWx1ZSkKICAgICByZXR1cm4gd3JhcHBlci5hdXRv
cmVsZWFzZSgpOwogfQogCi1ET01SYW5nZSAqa2l0KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgdmFsdWUpCitET01SYW5nZSAqa2l0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiB2YWx1ZSkKIHsKICAgICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVS
YW5nZSh2YWx1ZSkuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01SYW5nZUludGVybmFsLmgKaW5kZXggZjgwNGU3ZWM5MmMyODUwYmQxYzMwNzNiMjZjNmJmM2Zj
MmFlMzNhYS4uMDdhMjFiNGIzMzE5MDNmNWE4OTNjMjRmNzlmNzQzNDE4ZjBhMmIzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2VJbnRlcm5hbC5oCkBAIC0zMyw0
ICszMyw0IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIAogV2ViQ29yZTo6UmFuZ2UqIGNvcmUoRE9N
UmFuZ2UgKik7CiBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdlKik7Ci1ET01SYW5nZSAqa2l0
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOworRE9NUmFuZ2UgKmtpdChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDliMTAyZjFlNDJiZGUwNTE5MGU5NWVj
NWU5NzA0YTk5ZmE5YWZhYmUuLjc1NDI2OTM4MTJlNzhiN2Y4OWE4ZTM0NDAzNzMzMDA4YWZjM2Yy
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg4Myw3
ICs4ODMsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWlu
dDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogCiAgICAgU3Ryb25nPEpTR2xvYmFs
T2JqZWN0PiBnbG9iYWxPYmplY3Qodm0sIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1
Z2luV29ybGQoKSkpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9j
ZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNz
aW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9w
dCk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVj
dC5nZXQoKSwgSlNDOjptYWtlU291cmNlKHNjcmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCmluZGV4IGU0OTRmYzdkZmI2YjliYTQ2Mjc4ODczOTM0YjA4YjUwZDA4MjNkY2UuLjMzYmE1
N2MxNTVmMThhNzIwY2ZjNzlkNDZhZjM1NWQ3OGUwOTVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBA
IC0zNjMsNyArMzYzLDcgQEAgLSAoQk9PTClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1Jl
Y3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAg
IHsKICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9u
Vk0oKSk7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2
ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxv
cHQpOworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVu
dEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IHN0ZDo6b3B0aW9uYWw8UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51
bGxvcHQpOwogICAgICAgICBhY2NlcHRlZEV2ZW50ID0gW19wbHVnaW5QYWNrYWdlLmdldCgpIHBs
dWdpbkZ1bmNzXS0+ZXZlbnQocGx1Z2luLCBldmVudCk7CiAgICAgfQogICAgIFtzZWxmIGRpZENh
bGxQbHVnSW5GdW5jdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGJhZDUxZjBiMjEyZGFlN2I2
NzEwMWEwYWFhNjNlNDk0OWRlN2QzNDkuLjQ0ZjQwNGZkZjViODkyNDI5MjI1MzRiODFhYjM3MjJj
MTExNzFiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlBbnlB
dmFpbGFibGVQb2ludGluZ0RldmljZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hh
cmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOyB9CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVy
aXN0aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBX
ZWJDb3JlOjpQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOyB9CiAgICAgT3B0aW9uU2V0PFdl
YkNvcmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFs
bEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYkNv
cmU6OlBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7IH0KIAogICAgIE5TUmVzcG9uZGVyICpm
aXJzdFJlc3BvbmRlcigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAzNDAyZjM5MWU1MjZh
YWE3NjIwZGNmMWUzNDgyODRlMzQzZWJjMjU3Li40NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2
YzMyZmQ2MjY3NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjMsMjQgKzYzLDI0IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBmaW5hbDsKICAgICBib29s
IGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogCi0gICAg
Ym9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKKyAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAKICAgICBib29sIHNob3VsZEJlZ2lu
RWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogICAgIGJvb2wgc2hv
dWxkRW5kRWRpdGluZyhjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwotICAgIGJv
b2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKLSAg
ICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsK
LSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2UsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgdG9SYW5nZSwgV2ViQ29yZTo6QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3Rpbmcp
IGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNl
cnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFdlYkNvcmU6OkVk
aXRvckluc2VydEFjdGlvbikgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJh
bmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFuZ2Us
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJD
b3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CiAKLSAgICBib29sIHNo
b3VsZEFwcGx5U3R5bGUoY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGRBcHBs
eVN0eWxlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRBcHBseVN0eWxl
KCkgZmluYWw7CiAKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdl
YkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIHJhbmdlVG9C
ZVJlcGxhY2VkKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CisgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJl
dHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMGRmYWU4NDlmMGQ3NzQ0ZTg3ZmQyODlkZDY2MWE1MGYx
NDBjNDI5Ny4uNDE4NmY1NTVkMThjZjZhMGVmNDAzYmUyZjlhMTJjYmVjZTdkNDBmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6OnNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKIAogI2VuZGlmCiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzaG91bGREZWxldGVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQor
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKIHsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX2VkaXRp
bmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgc2hvdWxkRGVsZXRlRE9NUmFu
Z2U6a2l0KHJhbmdlKV07CiB9CkBAIC0yNTcsNyArMjU3LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IHBhZ2UtPnNldHRpbmdzKCkuc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwogfQog
Ci1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3Bl
cnRpZXMmIHN0eWxlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBz
dHlsZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJl
dHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2Vi
VmlldwogICAgICAgICBzaG91bGRBcHBseVN0eWxlOmtpdCgmc3R5bGUubXV0YWJsZUNvcHkoKS0+
ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKQpAQCAtMjk2LDEzICsyOTYsMTMgQEAgYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
KQogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3Om1fd2ViVmlldyBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTpraXQocmFuZ2UpXTsKIH0K
IAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rp
b24gYWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIEVk
aXRvckluc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2Vi
VmlldzsKICAgICByZXR1cm4gW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdl
YlZpZXc6d2ViVmlldyBzaG91bGRJbnNlcnRUZXh0OnRleHQgcmVwbGFjaW5nRE9NUmFuZ2U6a2l0
KHJhbmdlKSBnaXZlbkFjdGlvbjpraXQoYWN0aW9uKV07CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xp
ZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgZnJvbVJhbmdlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHRvUmFuZ2UsIEFmZmlu
aXR5IHNlbGVjdGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKQorYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHRvUmFuZ2UsIEFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5n
KQogewogICAgIHJldHVybiBbbV93ZWJWaWV3IF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OmtpdChmcm9tUmFuZ2UpIHRvRE9NUmFuZ2U6a2l0KHRvUmFuZ2UpIGFmZmluaXR5OmtpdChzZWxl
Y3Rpb25BZmZpbml0eSkgc3RpbGxTZWxlY3Rpbmc6c3RpbGxTZWxlY3RpbmddOwogfQpAQCAtNDA4
LDEyICs0MDgsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCkKICNlbmRpZgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2Vi
S2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkg
V2ViS2l0Mi4KIH0KQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9n
Z2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkKIAogI2VuZGlmIC8vIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2Vy
dE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdS
YW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYgbm9kZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJlcGxhY2luZ1JhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rpb24p
CiB7IAogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3Om1fd2ViVmlldyBzaG91bGRJbnNlcnROb2RlOmtpdCgmbm9kZSkgcmVwbGFjaW5nRE9N
UmFuZ2U6a2l0KHJlcGxhY2luZ1JhbmdlKSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlv
bilnaXZlbkFjdGlvbl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2MzUxYzJl
YTA2NjU3MzljZDcxZTBjNDdlMzdhNDdhZDA2MTE0Mzc4Li5iZDUyMjNhMGNlMTUwY2YzNWEyOGI3
NTUwNDgwMDRjMWZjYjU0YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTY1LDgg
KzY1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBm
aW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25zdCBm
aW5hbDsKIAogICAgIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKikgZmluYWw7CiAgICAgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IGZpbmFsOwpAQCAtMTE3
LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdh
Y3lUTFM+KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
VXNlZExlZ2FjeVRMUz4pIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGlu
dWVMb2FkaW5nKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzJh
NTI4OWQwZjZhZGZiMDU5NTRlMGFkYWRmM2E4ZmZhNDU3MWZmOS4uNjM0MjIwMDVmZWY0ZmIwOWNm
NjdjYTIzZGYxMDJjYTc0YzVmZjk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTIwNSwxMiArMjA1LDEyIEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNs
aWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdl
SUQoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSUQoKSBj
b25zdAorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQpAQCAtNjk0LDcgKzY5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlCiAgICAgfQogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiwgT3B0aW9uYWw8V2ViQ29yZTo6VXNlZExl
Z2FjeVRMUz4pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+LCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lUTFM+KQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3
ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwuCiAgICAgQVNTRVJUKFttX3dlYkZyYW1lLT5fcHJpdmF0
ZS0+d2ViRnJhbWVWaWV3IGRvY3VtZW50Vmlld10gIT0gbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCmluZGV4IDMzYjI4YTFmMDgzZWQzNjZiMjc0ZGU5ZDYzM2QyM2JkMDA3ZDZkNWQuLjc3
YzI4MjhkODU5NTM2MzViNjRjNGM4OTk5OTBhMGE2NDgxNzFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBsYXN0
UG9zaXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29y
ZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbQppbmRleCAxZWQxNDM4YWM2NmUwNTVhMTJlZmYxODY3NTM5Y2I1MWQ5MmMxNzA0
Li5lNzg4YTU3ZGQ2ZjgwN2U3YjI1Yzc0MmJhODAxOTM1N2EyNzM0ZDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRp
b25EYXRhPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9u
YWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9z
aXRpb24oKQogewogICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3Zp
ZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50LmgKaW5kZXggNmQ5NjZkODIxYzAwMWM2M2U2NGM5YmI0N2VlMzkwMjlhYTRhNDU1MS4uNjEz
NTdlYWM2MWM5ZTI5YmI4MDYwZTc1MGYzYjA4MWI2NTZiNTU3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM2LDE5ICszNiwxOSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKTsKIAotICAgIE9wdGlvbmFs
PFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFs
aWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQ
YXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZT4mJikgb3Zl
cnJpZGU7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKSBvdmVycmlkZTsKICNlbmRpZiAvLyBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50
U2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KaW5k
ZXggNGExYmEzYzY3YWVmNzY1MTAwZmNhMTIzNTIxYzk4ZGRhMWY1MGUyNi4uNDA3OTJhMDk3NTkz
YmIwMDM0M2E2ZjIyYmY4Y2E5MWU2MjZkOTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudC5tbQpAQCAtMzksNyArMzksNyBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6On5XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewogfQogCi1PcHRpb25hbDxT
dHJpbmc+IFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6dmFsaWRhdGVkUGF5bWVudE5ldHdv
cmsoY29uc3QgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQ6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTcyLDI3ICs3MiwyNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3Qg
V2ViQ29yZTo6UGF5bQogewogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBh
eVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKQogewogfQogCi12b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpCit2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4m
JikKIHsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRNZXRo
b2RVcGRhdGU+JiYpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlPiYmKQogewogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5U
X01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxl
dGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShPcHRpb25hbDxXZWJDb3JlOjpBcHBsZVBheVBheW1l
bnRNZXRob2RNb2RlVXBkYXRlPiYmKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6
OmNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiYmKQogewogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQogCi12b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50Ojpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggMzc4ZDRkNjI1NTNhYzIzMDM4ZWU2OThkNDA5MDY0ODdiYzM1NWYxZC4uMjRi
Njk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU4LDggKzU4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBjMjM3MjgxMWNmMTM5YmFiNDhjNjg4
MTI3YmYwYzM5ZmU1NmRkMTU4Li5iZGM4NjVkMWUzNmU1ZDM1OGRlMWNlZmQ5YmZiMzc1MjllYjRi
MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xOTIsMTIgKzE5MiwxMiBA
QCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9S
ZWFkRm9yVHlwZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuY29udGFpbnNTdHJpbmdTYWZlRm9yRE9NVG9SZWFkRm9yVHlwZSh0eXBl
KTsKIH0KIAotT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNo
YW5nZUNvdW50KTsKIH0KIAotT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCAwZTkxOGQ1NTQxYWMzMjZiZmFlZTkwN2U3Y2YwNTEw
NjE5NGEyNDc4Li41MjVlZTJmY2RlZWExNmM1YzZmOWRmZTgxMzVlZDdkMWM1ZWJiZDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7CisgICAg
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYp
IGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBXZWJQbHVnaW5J
bmZvUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBkNjVkYWM5
ZDBlMmYxZTFlMjA1OThhNzE5ODFmMjg1ZWNmY2E2MGIwLi42NjVhODAyNmU5ZGIwZmVlNTQ2MGNi
YWJkM2E1MGI5MGE2MDY5MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC01
NCw3ICs1NCw3IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygp
CiAgICAgW1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZUlmRXhpc3RzXSByZWZyZXNo
XTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBPcHRpb25hbDxWZWN0b3I8U3VwcG9y
dGVkUGx1Z2luSWRlbnRpZmllcj4+JikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikKIHsKICAgICBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luczsKIApAQCAtNzUsNiArNzUsNiBAQCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZv
KFdlYkNvcmU6OlBhZ2UmIHBhZwogCiBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdl
LCBjb25zdCBVUkwmKQogewotICAgIE9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVu
dGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnM7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXJzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXJzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IDdkMTJiZTY2YmM1ZDI4MTNhNjBjY2JhYmNmZDlj
MDVlOTk5MjFiNDEuLjE3MGMzNTIzYzdjMTU1MzZjMjhlN2I1Zjk4YTMzYTM2OTk0ODBmOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvbi5tbQpAQCAtNjAsNyArNjAsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIGNv
cmUoV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQogICAgIHJldHVybiBvcmllbnRh
dGlvbiA/IG9yaWVudGF0aW9uLT5tX2ludGVybmFsLT5tX29yaWVudGF0aW9uLmdldCgpIDogMDsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRv
dWJsZSB2YWx1ZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNh
blByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBpZiAoIWNhblByb3ZpZGUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA2MTk5YThjNDdiNGIwZmVmNGU5YjIzNTA0YjI0OTIzNTQ1YjJjZGUz
Li40MTM5YmI1YTkxNjgzZTY1YWNjMDgyNTNiZWNiM2ZkZDBhYmM2M2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgwNCwxMiArODA0LDEyIEBA
IC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdl
JilyYW5nZQogICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9y
ZU5vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKTsKIH0KIAotLSAoT3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCistIChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5T
UmFuZ2UpbnNyYW5nZQogewogICAgIHJldHVybiBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6bnNy
YW5nZSByYW5nZUlzUmVsYXRpdmVUbzpXZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290
XTsKIH0KIAotLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01S
YW5nZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZl
VG8pcmFuZ2VJc1JlbGF0aXZlVG8KKy0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzoo
V2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8KIHsKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgK
aW5kZXggNjlhODEyZGFmMjRjMmY2Yzc2NDg4ZThkMzhmMzFmMDA2ZTNlMjdhZS4uYWYxZjE1MTM0
ODZiYTM3MzMzZGJjMzU5ZWNmZWM1NmRmYjdhNzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTE2Niw4ICsxNjYsOCBA
QCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7CiAjZW5kaWYKIAogLSAo
TlNSYW5nZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKXJh
bmdlOwotLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5n
ZTooTlNSYW5nZSlyYW5nZTsKLS0gKE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPilfY29u
dmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86KFdlYlJhbmdl
SXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvOworLSAoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlOworLSAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jh
bmdlKXJhbmdlIHJhbmdlSXNSZWxhdGl2ZVRvOihXZWJSYW5nZUlzUmVsYXRpdmVUbylyYW5nZUlz
UmVsYXRpdmVUbzsKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50
V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzoo
TlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nOwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1
bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOihOU0FycmF5ICopbm9kZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9z
aXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24ubW0KaW5kZXggNDNjNDdjZTFjNTQ1OWZhMGU3OTAyNTFiYjJjOWM4NDNhZDVhODYy
OS4uZmU2YzQzZmQ4ODRjZjM0MzZjM2NiMGQyZWNhNWM5MDQ0Yjk1MDUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5tbQpAQCAtNTYsNyArNTYsNyBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uCiAKLU9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3Jl
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikK
IHsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKaW5kZXggN2VhYWE5YzBlY2M1MGE4ODgxYzI4OGNk
ZjY5ZWM4Zjk0NGQ4NzJlNC4uZmZhYTYyMGE3NmVhMjdiNWYxOGY2Mjc3ZjMzYzcyNGEwNWE1YWYz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCkBAIC0zMCw1ICszMCw1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhOwogfQogCi1P
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uICopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YT4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAwODRhYjczMTRmOTQz
NmVmMTM0ODE0MTgzN2VhMmU2OWNkZjY2MTJkLi4zODg5ZDI2NzA5YzY3ZGE0MDQyNzUyNWFjY2Zm
NDcyMmMyMGIzNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KQEAgLTI1MSw3ICsyNTEsNyBAQCAtICh2b2lkKXNldE1lbnVDb250cm9sbGVy
OihOYWtlZFB0cjxXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI+KW1lbnVDb250cm9sbAog
LSAodm9pZClmb3J3YXJkQ29udGV4dE1lbnVBY3Rpb246KGlkKXNlbmRlcjsKIEBlbmQKIAotc3Rh
dGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVn
ZXIgdGFnKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+
IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgaWYgKHRhZyA+PSBDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICYmIHRhZyA8PSBD
b250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnKSB7CkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIg
dGFnKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxOU0lu
dGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24g
YWN0aW9uKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHN3aXRjaCAoYWN0
aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMmQ2NjJlYzk0ZjRmM2U4
M2M4OGNkMjNiYmU0NWY0OGFjNWJjMWZhZC4uNDY0N2Y2Y2RlYTU5M2E0YWM4ZjI2MTMwY2Y5YTIw
ZmMzNzM4MDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNDI3LDcgKzQy
Nyw3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkCiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGli
cmFyeSgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGV0
ZWN0ZWRJdGVtPiBkZXRlY3RlZEl0ZW07CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXRl
Y3RlZEl0ZW0+IGRldGVjdGVkSXRlbTsKIAogICAgIGlmIChbW193ZWJWaWV3IFVJRGVsZWdhdGVd
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YWN0aW9uQ29udGV4dEZvckhp
dFRlc3RSZXN1bHQ6cmFuZ2U6KV0pIHsKICAgICAgICAgRE9NUmFuZ2UgKmN1c3RvbURhdGFEZXRl
Y3RvcnNSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCAxYmFkM2Y4YWY2OTYyMGJjZDUzMGMwZWJmOTczMmJiMzVjM2IzZGMyLi44YTRlYzg5MTBj
YTJmNDEwNGU0YjU5YjIyZjEwODEyMDBmMjgwZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02NDIsNyArNjQyLDcgQEAgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRp
b24gb3BlcmEKIH0KIAogI2lmIFVTRShBUFBLSVQpCi1zdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtp
dChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQorc3RhdGlj
IE5TRHJhZ09wZXJhdGlvbiBraXQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmICghZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIE5TRHJh
Z09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbikKICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKIH0KICNlbHNlCi1zdGF0aWMg
X1VJRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbikKK3N0YXRpYyBfVUlEcmFnT3BlcmF0aW9uIGtpdChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFkcmFnT3Bl
cmF0aW9uKQogICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC02OTEsNyAr
NjkxLDcgQEAgc3RhdGljIF9VSURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCiB9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKIAot
V2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4gYWN0aW9uKQorV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uPiBhY3Rpb24pCiB7CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAg
IHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGJhZDVmZDhhMTUwYWNmMmMz
N2E1N2MzNjRmODIxOWRjZDQzNzMwYjMuLmFlY2EwOWRkNmI2MzJiNDcyZTM3OGViMGU4MWI0ZWU2
Nzk2NzkxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHVzaW5nIENvY29hRHJhZ09wZXJhdGlv
biA9IHVpbnQ2NF90OwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURy
YWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbik7CiAKLVdlYkRyYWdTb3VyY2VBY3Rp
b24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+KTsKK1dlYkRyYWdTb3Vy
Y2VBY3Rpb24ga2l0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOwog
I2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNv
cmVPcHRpb25zKFdlYkZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNv
cmVDbGFzc2VzLmNwcAppbmRleCA1ZGZhZDhkYTU1ZThmMjg3ZWExOTljOWViZDk4NjFlNjNkNDUx
ODlhLi42MmI1OTM0ZjY2MmI3ZWE0M2EyYzk3YjBmYzEyNWFlZTMyZDU1ZTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xNjIxLDcgKzE2MjEsNyBA
QCBJRE9NUmFuZ2UqIERPTVJhbmdlOjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpSYW5nZSogcmFu
Z2UpCiAgICAgcmV0dXJuIG5ld1JhbmdlOwogfQogCi1JRE9NUmFuZ2UqIERPTVJhbmdlOjpjcmVh
dGVJbnN0YW5jZShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQor
SURPTVJhbmdlKiBET01SYW5nZTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlKQogewogICAgIHJldHVybiBjcmVhdGVJbnN0YW5j
ZShjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9ET01Db3JlQ2xhc3Nlcy5oCmluZGV4IDU2ZjhjZjA3Y2Y4ZmZiODI1ZWM1MzNiMmFjM2RhNjQ5
ZGE0NDE5YjEuLmU1ZDYxOThhMDFjMjAyZGJmNTdlZmQ3YzFiYTY3NmE2ZjA0MGUzN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuaApAQCAtODIzLDcgKzgyMyw3IEBA
IHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIHN0YXRpYyBJRE9NUmFuZ2UqIGNyZWF0ZUluc3Rh
bmNlKFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgc3RhdGljIElET01SYW5nZSogY3JlYXRlSW5zdGFu
Y2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jik7CisgICAgc3RhdGljIElE
T01SYW5nZSogY3JlYXRlSW5zdGFuY2UoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKTsKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBjMGM0MDU3ZjZiZWY4M2M4
MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcyLi5hMjI0NThmZTgwNDVhNmM0ZjIxYjM1ZTdmYTkzNmFi
NzM2YzU4MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1
ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0
LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5n
IGpzU3RyaW5nID0gc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0g
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRB
bGxvd1BvcHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IHN0ZDo6
b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgOiBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKGpzU3RyaW5nLmlzTnVsbCgpKSB7CiAgICAg
ICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3RyZWFt
IGZvciBpdC4gb3RoZXJ3aXNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4NWYyMjQ2NDAzZGYxNGE1
MGJiYzljNjczMGYwNDA4YjIwYWUyNGUxLi4wOTlhZTljNzA5ZDE1N2VhMGFhOTBmNjJjOGJiZTRl
MGU4MzI0NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhvdmVyU3VwcG9ydGVkQnlQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxh
YmxlUG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgT3B0
aW9uYWw8V2ViQ29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3Rlcmlz
dGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29y
ZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJp
bWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6UG9pbnRl
ckNoYXJhY3RlcmlzdGljczo6RmluZTsgfQogICAgIE9wdGlvblNldDxXZWJDb3JlOjpQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2lu
dGluZ0RldmljZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpQb2ludGVyQ2hhcmFj
dGVyaXN0aWNzOjpGaW5lOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVSb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzMzA0NTRl
YWE0ZDVjZmE0NTZmMzY1YzNiM2QzODJkOGQyMTBhZGIwLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQw
Njc5MDZlMmI4Njg1N2VlZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI1NywxNiArMjU3
LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKQogewogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRl
UmFuZ2UoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSkKK2Jvb2wg
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVs
ZWdhdGU+IGVkOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVk
KSkgfHwgIWVkLmdldCgpKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBXZWJWaWV3SW5zZXJ0
QWN0aW9uIGtpdChFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQogICAgIHJldHVybiBXZWJWaWV3
SW5zZXJ0QWN0aW9uVHlwZWQ7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNl
cnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYg
aW5zZXJ0aW5nUmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBnaXZlbkFjdGlvbikKK2Jvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUmIG5vZGUsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uIGdpdmVuQWN0aW9uKQogeyAKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4g
ZWRpdGluZ0RlbGVnYXRlOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdh
dGUoJmVkaXRpbmdEZWxlZ2F0ZSkpIHx8ICFlZGl0aW5nRGVsZWdhdGUuZ2V0KCkpCkBAIC0zMjAs
NyArMzIwLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSYg
bm9kZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGwKICAgICByZXR1cm4gc2hvdWxkSW5z
ZXJ0OwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcmIHN0ciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBpbnNlcnRp
bmdSYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9uKQorYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBpbnNlcnRpbmdSYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uIGdpdmVuQWN0aW9uKQogewogICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBl
ZGl0aW5nRGVsZWdhdGU7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmVkaXRpbmdEZWxlZ2F0
ZSgmZWRpdGluZ0RlbGVnYXRlKSkgfHwgIWVkaXRpbmdEZWxlZ2F0ZS5nZXQoKSkKQEAgLTM0NSw3
ICszNDUsNyBAQCBzdGF0aWMgV2ViU2VsZWN0aW9uQWZmaW5pdHkgdG9XZWJTZWxlY3Rpb25BZmZp
bml0eShXZWJDb3JlOjpBZmZpbml0eSBhZmZpbml0eSkKICAgICByZXR1cm4gV2ViU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGN1
cnJlbnRSYW5nZSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBwcm9wb3Nl
ZFJhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSBzZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBmbGFnKQor
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGN1cnJlbnRSYW5nZSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHByb3Bvc2VkUmFuZ2UsIFdlYkNvcmU6
OkFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBib29sIGZsYWcpCiB7CiAgICAgQ09NUHRyPElX
ZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5lZGl0aW5n
RGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdldCgpKQpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhCiAgICAgcmV0dXJuIHNob3VsZENoYW5nZTsKIH0KIAotYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRB
cHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
ZTAwNTk3MDNlY2ZhMmQwZmU5ZDA4NzcxNjRkODI1MjNlZTU3ZmU2YS4uYzE2N2NhMjkyMjNlZWE5
OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ5LDEzICs0
OSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoY29u
c3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKLSAgICBib29sIHNob3VsZEluc2VydFRl
eHQoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxk
SW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMo
KSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpA
QCAtNjUsMTAgKzY1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlv
bihXZWJDb3JlOjpGcmFtZSopIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24o
KSBmaW5hbCB7IH0KIAotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5n
ZShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogCi0g
ICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUmLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJlcGxhY2luZ1JhbmdlLCBXZWJDb3JlOjpFZGl0b3JJbnNl
cnRBY3Rpb24pIGZpbmFsOwotICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShjb25zdCBXZWJDb3Jl
OjpTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByZXBsYWNpbmdSYW5nZSwgV2Vi
Q29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5
bGUoY29uc3QgV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBm
aW5hbDsKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6
OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIApAQCAt
ODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5kbygpIGZpbmFsOwogICAgIHZvaWQg
cmVkbygpIGZpbmFsOwogICAgIAotICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIGZyb21SYW5nZSwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBXZWJDb3JlOjpBZmZpbml0eSwg
Ym9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBmcm9tUmFu
Z2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiB0b1JhbmdlLCBX
ZWJDb3JlOjpBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgZmluYWw7CiAgICAgdm9pZCB0
ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwogICAgIHZv
aWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CiAgICAg
dm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE3MzE5NjgyMTBjZDcwOWM1MzhiYjIz
MWYzYTU1MWU1NmJhNzRmNDQuLjJhN2Q1YjBhNjVjMzcwZGM2N2IzNWIxOTA4MWE5YzFiZDk1ZjBk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExOCwxMiArMTE4LDEyIEBA
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogewogfQogCi1P
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBh
Z2VJRCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCi1PcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdl
YlZpZXcsIEJTdHJpbmcodGl0bGUuc3RyaW5nKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNl
Y3VyZUNvbnRlbnQ+LCBPcHRpb25hbDxVc2VkTGVnYWN5VExTPikKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJl
Q29udGVudD4sIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pCiB7CiAgICAgV2ViVmlldyog
d2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9h
ZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAog
ICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAgIHZpZXctPmZyYW1lUmVjdCgmcGl4ZWxSZWN0KTsKLSAg
ICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkKICAgICAg
ICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAg
IEZsb2F0UmVjdCBsb2dpY2FsRnJhbWUocGl4ZWxSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDQ1OWNlMjc4NWE1ZTQzMGU5OWI4YjNhZWJiYjQ0NmYzNmYyNDNjZmYuLjBhZGJm
OTdjM2YwMGJkM2ZhZTBlMmY5ZGU1YjY0NjEyNjIzNDkyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFs
OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCgpIGNvbnN0
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25z
dCBvdmVycmlkZTsKIApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRj
aFdpbGxDbG9zZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4s
IE9wdGlvbmFsPFdlYkNvcmU6OlVzZWRMZWdhY3lUTFM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29u
dGVudD4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VXNlZExlZ2FjeVRMUz4pIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAzOGNhMTcxY2M2Yjg4MmE0
ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1Li5lMWZjYTI3NzI0OTYxNTRhNGUwNzBlNGRmZGE3ZTc3
ZTk3MzU4MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJvdmlk
ZXItPnVucmVnaXN0ZXJXZWJWaWV3KG1fd2ViVmlldy5nZXQoKSk7CiB9CiAKLU9wdGlvbmFsPEdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9u
KCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92
aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJv
dmlkZXIoJnByb3ZpZGVyKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3Njk1NTQ0
MmZmYmQzMTY0MGMxZTk2NTRjOTdhZTY1NDk5MTQxZTAwLi4xOTU3NDE3YjU1ZDdlNWQyZjliNzFl
NWM5ZDljMzAzZGZlZjRlMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRVcGRhdGluZyhjb25zdCBTdHJpbmcmIGF1
dGhvcml6YXRpb25Ub2tlbikgZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4gbGFzdFBvc2l0aW9uKCkgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uRGF0YT4g
bGFzdFBvc2l0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNv
cmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVz
dChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92
aWRlci5jcHAKaW5kZXggODI3MWNlNzFkNTE5ZDZiYzBkNDBiMTAxZjY0MTkwYThiZjA5MGJhYy4u
ZDMxMGQyOTEwMDg3MDA5ZTg5YmFmZWY1ZjBlMDEyNzYxOTRkZGU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1By
b3ZpZGVyOjpyZWZyZXNoUGx1Z2lucygpCiAgICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBs
dWdpbnMoKS0+cmVmcmVzaCgpOwogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIE9wdGlv
bmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQorVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhX
ZWJDb3JlOjpQYWdlJiBwYWdlLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0
ZWRQbHVnaW5JZGVudGlmaWVyPj4mKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiBvdXRQbHVnaW5zOwogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4mIHBsdWdpbnMg
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5wbHVnaW5zKCk7CkBAIC04Niw2
ICs4Niw2IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAKIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNv
cmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5OYW1lczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
Pj4gc3VwcG9ydGVkUGx1Z2luTmFtZXM7CiAgICAgcmV0dXJuIHBsdWdpbkluZm8ocGFnZSwgc3Vw
cG9ydGVkUGx1Z2luTmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCA3
Nzg4MDRmYmQ1MzM2NzRmMTIwOThjOTgwZTJmYjQxYWEzMzJiZWFlLi45MzQ4MGY0YWY3YjY2Mjcy
NjlkZTVkODdhZWViMzIyNTMzZmE5ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApA
QCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1
Z2lucygpIGZpbmFsOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZv
KFdlYkNvcmU6OlBhZ2UmLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcj4+JikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJmksIGNvbnN0IFVS
TCYpIGZpbmFsOwogCiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOGRhOTE5NDgzYjBkYWE3MTBkNjIzNjJlOWIzYTA0Njlk
NTAyYmRjZi4uMWZiN2UzYmNiN2Y0MmE1YmM4YTkyZWQ4MTAwNjc5ZWMyN2M1MDg1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA2Miw3ICsyMDYyLDcgQEAgdm9pZCBX
ZWJGcmFtZTo6dXBkYXRlQmFja2dyb3VuZCgpCiAgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVG
cmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcHRpb25hbDxDb2xvcj4gYmFj
a2dyb3VuZENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsK
ICAgICBpZiAod2ViVmlldygpLT50cmFuc3BhcmVudCgpKQogICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgY29yZUZyYW1lLT52aWV3
KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRl
eCBkNjRlNzZhODU2NTkyMDQyMWExOGI0NmRhOGQxNTRlMmEwMDFlZDYyLi45MjRjNDhiMTNjNDE2
NWZmZThmMDg4Yzg3ZDA2ZGY0OWM2MDM0NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBIUkVT
VUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdAogICAgIHJldHVybiBTX09LOwogfQogCi1PcHRpb25hbDxHZW9s
b2NhdGlvblBvc2l0aW9uRGF0YT4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRp
b24pCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9s
b2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDk3NmIzMmFhMmNmZWQwODAxYWM5ZThkOGVhZmZk
NTM5ZTk5MTg2ZDguLjBkMGQ2ODBjN2Q2OTM2ZTYyOTI3MzJmMTA3NjdjNGE5NjQzZDIxMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgK
QEAgLTQ1LDEzICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRp
b24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3Rh
bXAoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpOwogCi0gICAgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+JiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVMT05H
IG1fcmVmQ291bnQgeyAwIH07Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbkRhdGE+IG1fcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gbV9wb3NpdGlvbjsKIH07CiAKLU9wdGlvbmFsPFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7Citz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKik7CiAKICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggN2UxN2Y3MWQxNDJjMTZkYTUz
ZmU3MjY2ZjQ0Yzg4OWNkNDM4MmUyZS4uYWFlMDljODIyNzA0MzljMTFiNzQ0OWZjZTM5OTcwYmU2
NjYzMDE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU4MzgsNyArNTgz
OCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KF9PdXRfIExQUkVDVCBy
ZWN0KQogICAgIHJldHVybiBTX09LOwogfQogCi1zdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRv
RHJhZ0N1cnNvcihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCitzdGF0aWMgRFdP
UkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihzdGQ6Om9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbikKIHsKICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIERST1BF
RkZFQ1RfTk9ORTsKQEAgLTY0NDYsNyArNjQ0Niw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVS
ZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9OKiBj
CiAgICAgaWYgKGNoYXJQb3MtPmR3Q2hhclBvcyAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhh
c0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFJlY3QgY2FyZXQ7Ci0g
ICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlOwogICAgIGlmICh0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRp
b24oKSkKICAgICAgICAgcmFuZ2UgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25S
YW5nZSgpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBmMmJkOTNhMTVjODAzMzFlMDJlODc1YWM4OWNmZGY0NTUwNzY1MTc1Li5h
NzQ0YWMxOGNlZGY3ZWE3YTg5ZDRiYjY2ZWIxMTBlZmZhZWIzNThjIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEt
MDUtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBX
VEY6Ok9wdGlvbmFsIHN5bm9ueW0gZm9yIHN0ZDo6b3B0aW9uYWwsIHVzaW5nIHRoYXQgY2xhc3Mg
dGVtcGxhdGUgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IExldCB0aGUgZG8td2ViY29yZS1yZW5hbWUg
c2NyaXB0IHJlbmFtZSBPcHRpb25hbDw+IHRvIHN0ZDo6b3B0aW9uYWw8Pi4KKwogMjAyMS0wNS0y
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IGNsYW5n
IHRocmVhZCBzYWZldHkgYW5ub3RhdGlvbnMgaW4gV1RGOjpEYXRhTXV0ZXgKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggNWM1ZjMxYWFlODgxMDhiNDZjOTkxNWE4ZTdiOGJjMWY4N2E3ODNkMi4uMzAxYzlmOGFhYWJm
YzFjYWUzMWJmYjY0ODQwMmQ3YWY0ZmI2N2JkNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTgxLDEyICs4MSwx
MiBAQCAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2Nyb2xsVG9HbG9iYWxQb2ludDooTlNQb2ludClw
b2ludDsKIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmli
dXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZTsKIEBlbmQKIAotc3RhdGljIE9wdGlvbmFsPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqLCBpZCBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCosIGlkIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IG1ha2VWZWN0b3JF
bGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqLCBpZCBlbGVtZW50KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gbWFrZVZl
Y3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSosIGlkIGVsZW1l
bnQpCiB7CiAgICAgcmV0dXJuIHsgeyBlbGVtZW50IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzMjUzYWM3MjYwMjU2NWM0ZDllZDQ5N2Mw
OGViM2NkZDNjZGJmYmQ2Li43ZjYxY2UwMTQ2YjM2MGMxY2ZhMzYwMjg2NzMwMGUyZGU0OWQ3OTgz
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xOTgs
NyArMTk4LDcgQEAgdm9sYXRpbGUgYm9vbCBkb25lOwogUmV0YWluUHRyPE5hdmlnYXRpb25Db250
cm9sbGVyPiBnTmF2aWdhdGlvbkNvbnRyb2xsZXI7CiBSZWZQdHI8VGVzdFJ1bm5lcj4gZ1Rlc3RS
dW5uZXI7CiAKLU9wdGlvbmFsPFdUUjo6VGVzdE9wdGlvbnM+IG1haW5GcmFtZVRlc3RPcHRpb25z
Oworc3RkOjpvcHRpb25hbDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsK
IFdlYkZyYW1lICptYWluRnJhbWUgPSBuaWw7CiAvLyBUaGlzIGlzIHRoZSB0b3Btb3N0IGZyYW1l
IHRoYXQgaXMgbG9hZGluZywgZHVyaW5nIGEgZ2l2ZW4gbG9hZCwgb3IgbmlsIHdoZW4gbm8gbG9h
ZCBpcyAKIC8vIGluIHByb2dyZXNzLiAgVXN1YWxseSB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBt
YWluIGZyYW1lLCBidXQgbm90IGFsd2F5cy4gIEluIHRoZSBjYXNlCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21t
b24uY3BwCmluZGV4IDQ2ZWY4NTkyOTI4MjZlMGI1OGQwMmM0MGExZWEwMzEwYzY5MjllYjguLmQ1
MmU1Mzk1OGRjZWIwYmQzZDUyZWJjNGJmNmEwMmRmZTIxODE3YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9D
b21tb24uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBhc2tQcm94eVNldHRpbmdzKEhXTkQg
aHduZCwgUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgcmV0dXJuIGRpYWxvZy5ydW4oaElu
c3QsIGh3bmQsIElERF9QUk9YWSk7CiB9CiAKLU9wdGlvbmFsPENyZWRlbnRpYWw+IGFza0NyZWRl
bnRpYWwoSFdORCBod25kLCBjb25zdCBzdGQ6OndzdHJpbmcmIHJlYWxtKQorc3RkOjpvcHRpb25h
bDxDcmVkZW50aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5n
JiByZWFsbSkKIHsKICAgICBzdHJ1Y3QgQXV0aERpYWxvZyA6IHB1YmxpYyBEaWFsb2cgewogICAg
ICAgICBzdGQ6OndzdHJpbmcgcmVhbG07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93
aW4vQ29tbW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKaW5kZXggNmM0MjFj
ZWU2NmE5MDdiODY1ZTc4NTI1OGQwNmQ5MTIyYjA1MDM3YS4uOTk2NGQ1ZTUwNDMxOWQ3NzgzMzY4
M2RkZjU4MDliYzdmN2Y0ZGMwYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Nv
bW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtNjUsNyArNjUs
NyBAQCB2b2lkIGNvbXB1dGVGdWxsRGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFwcERhdGFGb2xk
ZXIoX2JzdHJfdCYgZGlyZWN0b3J5KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1hbmRM
aW5lKCk7CiB2b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwotT3B0
aW9uYWw8Q3JlZGVudGlhbD4gYXNrQ3JlZGVudGlhbChIV05ELCBjb25zdCBzdGQ6OndzdHJpbmcm
IHJlYWxtKTsKK3N0ZDo6b3B0aW9uYWw8Q3JlZGVudGlhbD4gYXNrQ3JlZGVudGlhbChIV05ELCBj
b25zdCBzdGQ6OndzdHJpbmcmIHJlYWxtKTsKIGJvb2wgYXNrUHJveHlTZXR0aW5ncyhIV05ELCBQ
cm94eVNldHRpbmdzJik7CiAKIGJvb2wgYXNrU2VydmVyVHJ1c3RFdmFsdWF0aW9uKEhXTkQsIGNv
bnN0IHN0ZDo6d3N0cmluZyYgdGV4dCk7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2RvLXdl
YmNvcmUtcmVuYW1lIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQppbmRleCA5MGNk
MzBlNzU2MTAyYWViZWNhNWQzNGE4N2JkNmU4MjY1NmJkMjYxLi5mYzcxYmEwZjkzODFlNWMyNTVm
MGYwMjVkZjI4ODNkZWQzYzQ5NmVkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNv
cmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKQEAgLTExMiw2
ICsxMTIsNyBAQCBteSAlcmVuYW1lcyA9ICgKICAgICAiV1RGOjpPcHRpb25hbCIgPT4gInN0ZDo6
b3B0aW9uYWwiLAogICAgICJXVEY6Om1ha2VPcHRpb25hbCIgPT4gInN0ZDo6bWFrZV9vcHRpb25h
bCIsCiAgICAgIm1ha2VPcHRpb25hbCIgPT4gInN0ZDo6bWFrZV9vcHRpb25hbCIsCisgICAgIk9w
dGlvbmFsPCIgPT4gInN0ZDo6b3B0aW9uYWw8IiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxh
dGVkRm9yVGhlRnV0dXJlID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRleCAwNDIzNWNkOGVkOWMxMDBkODNmYjc0
YjA5YzlkYWRhMzgzZWU3MGQ3Li5kMGU3MGNjNmFhY2U4MzZlMjg2Yzk2ZjNlMDgxMzExZjE4YTI3
ZmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcF91bml0dGVzdC5weQpAQCAtMzA0Myw3ICszMDQzLDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0
KENwcFN0eWxlVGVzdEJhc2UpOgogCiAgICAgICAgIHNlbGYucGVyZm9ybV9mdW5jdGlvbl9kZWZp
bml0aW9uX2NoZWNrKAogICAgICAgICAgICAgJ1NvdXJjZS9XVEYvd3RmL2Zvby5oJywKLSAgICAg
ICAgICAgICcgICAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6dHVwbGU8Pj4gZGVjb2RlKERlY29kZXIm
KVxuJworICAgICAgICAgICAgJyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPD4+
IGRlY29kZShEZWNvZGVyJilcbicKICAgICAgICAgICAgICcgICAgeycsCiAgICAgICAgICAgICB3
YXJuaW5nX25vbmUpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGlu
Z3MvSlNCYXNpY3MuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2lj
cy5jcHAKaW5kZXggNTYzZDA5MDI4NjQzMTY3MDdmYzE2ZDU1NjFmNjY1YTQ4YWIzMDVjOC4uNjM1
NDEzNGE4OTk2NWY2ZjJiZGNkMjAwZjM4YTYxZGFiNmJkODQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiBu
YW1lc3BhY2UgV1RSIHsKIAotT3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IHRvT3B0
aW9uYWxCb29sKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQogewogICAg
IHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEpT
VmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiB0
b09wdGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQor
c3RkOjpvcHRpb25hbDxkb3VibGU+IHRvT3B0aW9uYWxEb3VibGUoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChj
b250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBzdGQ6Om51
bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVl
LCBudWxscHRyKSk7CiB9CiAKLUpTVmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBPcHRpb25hbDxib29sPiB2YWx1ZSkKK0pTVmFsdWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHZhbHVlKQogewogICAgIHJldHVybiB2
YWx1ZSA/IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB2YWx1ZS52YWx1ZSgpKSA6IEpTVmFs
dWVNYWtlTnVsbChjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvQmluZGluZ3MvSlNCYXNpY3MuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3Mv
SlNCYXNpY3MuaAppbmRleCA4ZDExYmM0OGM4MmQ3NzRhNGMwY2FhODU2MjYwZDA4OWUyMTU5MTkx
Li45MDJiZjc1OWY1MDE2MTMxNGY4NDQ5NjlkZGNkZjgyODhjMmY3YmJhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTQmFzaWNzLmgKKysrIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAog
bmFtZXNwYWNlIFdUUiB7CiAKLU9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7Ci1PcHRpb25hbDxkb3VibGU+IHRvT3B0aW9uYWxEb3VibGUoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJv
b2woSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b09w
dGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBjcmVhdGVKU1N0cmluZyhjb25zdCBjaGFyKiA9ICIiKTsKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBjcmVhdGVKU1N0cmluZyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwog
CiBKU1ZhbHVlUmVmIG1ha2VWYWx1ZShKU0NvbnRleHRSZWYsIGNvbnN0IGNoYXIqKTsKLUpTVmFs
dWVSZWYgbWFrZVZhbHVlKEpTQ29udGV4dFJlZiwgT3B0aW9uYWw8Ym9vbD4pOworSlNWYWx1ZVJl
ZiBtYWtlVmFsdWUoSlNDb250ZXh0UmVmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIEpTVmFsdWVS
ZWYgbWFrZVZhbHVlKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYpOwogCiBKU1ZhbHVlUmVmIHBy
b3BlcnR5KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIGNvbnN0IGNoYXIqIG5hbWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaAppbmRleCA4NDFlNTMwZTU1Zjk5NzMwNjg1MTFjOTRlOWFiZDFkMWY3
ODcxYjE0Li4xYjU5NWUxN2M5ZGY4ZTU2MjMzZmVmOTViNzdkMzAwNjU1YmUzODgxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaApAQCAtOTgsOCArOTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE1pbmltdW1FZmZlY3RpdmVXaWR0aChkb3VibGUpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRBbGxvd3NWaWV3cG9ydFNocmlua1RvRml0KGJvb2wpIHsg
bm90SW1wbGVtZW50ZWQoKTsgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBzdGFibGVT
dGF0ZU92ZXJyaWRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8
Ym9vbD4pIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxi
b29sPiBzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJp
ZGUoc3RkOjpvcHRpb25hbDxib29sPikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKICAgICB2aXJ0
dWFsIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVENQU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcApp
bmRleCA2NmQ3ZWFlMzkyZjA1OTEwYjcwOTRhYzk0NjNmYWIwYThlOTIyZDMzLi45YzdmODU2YmVh
YzhjNWQwODMzZDFjMDA2ZDQ4M2U4ZWFhOTVkNmMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1RDUFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9p
ZChTb2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGkKIH0KIAogI2lm
IEhBVkUoU1NMKQotdm9pZCBUQ1BTZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQg
c29ja2V0LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBi
b29sIHJlcXVlc3RDbGllbnRDZXJ0aWZpY2F0ZSwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1Zl
cnNpb24pCit2b2lkIFRDUFNlcnZlcjo6c3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCBzb2Nr
ZXQsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wg
cmVxdWVzdENsaWVudENlcnRpZmljYXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNW
ZXJzaW9uKQogewogICAgIFNTTF9saWJyYXJ5X2luaXQoKTsKIApAQCAtMjA2LDcgKzIwNiw3IEBA
IHZvaWQgVENQU2VydmVyOjpzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0IHNvY2tldCwgRnVu
Y3Rpb248dm9pZChTU0wqKT4mJiBzZWN1CiAgICAgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIoYWNj
ZXB0UmVzdWx0ID4gMCA/IHNzbC5nZXQoKSA6IG51bGxwdHIpOwogfTsKIAotVENQU2VydmVyOjpU
Q1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJl
Q29ubmVjdGlvbkhhbmRsZXIsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uLCBzaXpl
X3QgY29ubmVjdGlvbnMpCitUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwg
RnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiwgc2l6ZV90IGNvbm5lY3Rpb25zKQogewogICAg
IHN3aXRjaCAocHJvdG9jb2wpIHsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQUzoKQEAgLTI1OSw3
ICsyNTksNyBAQCBUQ1BTZXJ2ZXI6On5UQ1BTZXJ2ZXIoKQogICAgICAgICBjb25uZWN0aW9uVGhy
ZWFkcy5qb2luKCk7CiB9CiAKLWF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVf
dCBjb25uZWN0aW9ucykgLT4gT3B0aW9uYWw8U29ja2V0PgorYXV0byBUQ1BTZXJ2ZXI6OnNvY2tl
dEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBzdGQ6Om9wdGlvbmFsPFNvY2tldD4K
IHsKICAgICBTb2NrZXQgbGlzdGVuaW5nU29ja2V0ID0gc29ja2V0KFBGX0lORVQsIFNPQ0tfU1RS
RUFNLCAwKTsKICAgICBpZiAobGlzdGVuaW5nU29ja2V0ID09IC0xKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2Vy
dmVyLmgKaW5kZXggMzM2NGFjZDNlMTg2NTYwMmFjZGMwNWFlY2JmMjVjYjY3Y2QxNzA0MS4uYjBh
YWJiMTFhYzAzNGEyYzBjMDgzNzk1OTIzNzNkY2Y5YmJjNWY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNl
cnZlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFByb3RvY29s
IDogdWludDhfdCB7CiAgICAgICAgIEhUVFBTLCBIVFRQU1Byb3h5LCBIVFRQU1dpdGhDbGllbnRD
ZXJ0aWZpY2F0ZVJlcXVlc3QKICAgICB9OwotICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rp
b248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6
Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9IDEpOworICAgIFRDUFNlcnZlcihQcm90b2Nv
bCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExT
VmVyc2lvbiA9IHN0ZDo6bnVsbG9wdCwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7CiAjZW5kaWYg
Ly8gSEFWRShTU0wpCiAgICAgflRDUFNlcnZlcigpOwogICAgIApAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgCiAjaWYgSEFWRShTU0wpCiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhP
SyhTU0wqKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0LCBG
dW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVl
c3RDbGllbnRDZXJ0aWZpY2F0ZSA9IGZhbHNlLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVy
c2lvbiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0
aW9uKFNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxl
ciwgYm9vbCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gbWF4VExTVmVyc2lvbiA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAgICBzdGF0
aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQpOwogCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0
ZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0
ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNvY2tldD4gc29ja2V0
QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpOwogICAgIHZvaWQgbGlzdGVuRm9yQ29ubmVj
dGlvbnMoc2l6ZV90IGNvbm5lY3Rpb25zKTsKIAogICAgIFBvcnQgbV9wb3J0IHsgSW52YWxpZFBv
cnQgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhy
ZWFkQ29waWVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
Q29waWVyLmNwcAppbmRleCA3ODYzMmVjZmZkOWI4MmFlYWNmNjRlNjY5OThmMjI3ZmNiYzdiNzlk
Li4wMmU0MGUwNTE0MDMwMDg4NzM5YjY3NWIwZTNlZDE1NjkxY2JiZTQ5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5UlZTdHJpbmdIYXZp
bmdUd29SZWYpCiAKIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBDb3B5TFZPcHRpb25hbFN0
cmluZykKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsIHsgIjEyMzQiIH07CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsIHsgIjEyMzQiIH07CiAgICAgYXV0byBjb3B5
ID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbmFsKTsKICAgICBFWFBFQ1RfVFJVRShvcmlnaW5hbC0+
aW1wbCgpLT5oYXNPbmVSZWYoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29weS0+aW1wbCgpLT5oYXNP
bmVSZWYoKSk7CkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkQ29waWVyLCBD
b3B5TFZPcHRpb25hbFN0cmluZykKIAogVEVTVChXVEZfQ3Jvc3NUaHJlYWRDb3BpZXIsIE1vdmVS
Vk9wdGlvbmFsU3RyaW5nKQogewotICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWwgeyAiMTIz
NCIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWwgeyAiMTIzNCIgfTsKICAg
ICBhdXRvIGNvcHkgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcmlnaW5hbCkpOwogICAgIEVY
UEVDVF9UUlVFKGNvcHktPmltcGwoKS0+aGFzT25lUmVmKCkpOwogICAgIEVYUEVDVF9OVUxMKG9y
aWdpbmFsLT5pbXBsKCkpOwpAQCAtNzksNyArNzksNyBAQCBURVNUKFdURl9Dcm9zc1RocmVhZENv
cGllciwgTW92ZVJWT3B0aW9uYWxTdHJpbmcpCiBURVNUKFdURl9Dcm9zc1RocmVhZENvcGllciwg
Q29weVJWT3B0aW9uYWxTdHJpbmdIYXZpbmdUd29SZWYpCiB7CiAgICAgU3RyaW5nIHN0cmluZyB7
ICIxMjM0IiB9OwotICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWwgeyBzdHJpbmcgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWwgeyBzdHJpbmcgfTsKICAgICBhdXRvIGNv
cHkgPSBjcm9zc1RocmVhZENvcHkob3JpZ2luYWwpOwogICAgIEVYUEVDVF9FUShvcmlnaW5hbC0+
aW1wbCgpLT5yZWZDb3VudCgpLCAyKTsKICAgICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWwtPmltcGwo
KSA9PSBjb3B5LT5pbXBsKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcAppbmRleCA5ZGZhYmE3MDRlZmExYzQ3ODBmZDlkNDkxNjg1YjQ2NGZkYTFkZDUx
Li44NTgzYjI5YWQ5OTBjMjJiNDcyYzg2OWVjY2Q4NjgyOTYyMWJiMGI0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNjI2LDcgKzYyNiw3IEBA
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgaGFyZExpbmtDb3VudCkKICAgICBFWFBFQ1RfVFJVRSgh
bGlua0NvdW50KTsKIH0KIAotc3RhdGljIHZvaWQgcnVuR2V0RmlsZU1vZGlmaWNhdGlvblRpbWVU
ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248T3B0aW9uYWw8V2FsbFRpbWU+KGNvbnN0
IFN0cmluZyYpPiYmIGZpbGVNb2RpZmljYXRpb25UaW1lKQorc3RhdGljIHZvaWQgcnVuR2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWVUZXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248c3RkOjpv
cHRpb25hbDxXYWxsVGltZT4oY29uc3QgU3RyaW5nJik+JiYgZmlsZU1vZGlmaWNhdGlvblRpbWUp
CiB7CiAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gZmlsZU1vZGlmaWNhdGlvblRpbWUocGF0
aCk7CiAgICAgRVhQRUNUX1RSVUUoISFtb2RpZmljYXRpb25UaW1lKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcAppbmRleCAwZDU5ZDNlYmI0MDMyZTgwYjk4NDc1
Y2ZiNTE3YTEwYjllNmRlYTRjLi43OTM1N2M1M2I4OTIxZGZiYjhmZGQ1MmQ4YmYyMGYyZmZlMTRl
NDBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbi5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCkBAIC0x
OTAsMTIgKzE5MCwxMiBAQCBzdHJ1Y3QgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXIgewogICAg
IH0KIAogICAgIEZ1bmN0aW9uPHVuc2lnbmVkKCk+JiBmdW5jdGlvbjsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8Ym9vbD4gZnVuY3Rpb25Bc0Jvb2w7Ci0gICAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVk
PiBmdW5jdGlvblJlc3VsdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBmdW5jdGlv
bkFzQm9vbDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnVuY3Rpb25SZXN1
bHQ7CiB9OwogCi1PcHRpb25hbDxib29sPiBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVu
Y3Rpb25Bc0Jvb2w7Ci1PcHRpb25hbDx1bnNpZ25lZD4gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNr
ZXI6OmZ1bmN0aW9uUmVzdWx0Oworc3RkOjpvcHRpb25hbDxib29sPiBGdW5jdGlvbkRlc3RydWN0
aW9uQ2hlY2tlcjo6ZnVuY3Rpb25Bc0Jvb2w7CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBGdW5j
dGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQ7CiAKIFRFU1QoV1RGX0Z1bmN0
aW9uLCBBc3NpZ25CZWZvcmVEZXN0cm95KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hlci5jcHAKaW5kZXggMGU3NzAzZTZmMzBkZDAyNWM3NTBmNTM1OGM4MmUyNTQxYzg4NjYx
ZC4uZTA3YTdiM2I2NGJlYmZjM2VkOTE0YjRlOTdlZDA4NWU5NDc5NTMyZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChX
VEYsIEhhc2hlcl9tdWx0aXBsZSkKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0
ZUhhc2goc3RkOjphcnJheTxpbnQsIDE+IHsgeyAwIH0gfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJv
MzJCaXRIYXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50PiB7IDAgfSkpOwogICAgIEVYUEVDVF9F
USh6ZXJvMzJCaXRIYXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50LCAxPiB7IDAgfSkpOwotICAg
IEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgc3Rk
OjpudWxsb3B0IH0pKTsKKyAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2go
c3RkOjpvcHRpb25hbDxpbnQ+IHsgc3RkOjpudWxsb3B0IH0pKTsKICAgICBFWFBFQ1RfRVEoemVy
bzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjptYWtlX3R1cGxlKDApKSk7CiAKICAgICBFWFBF
Q1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaCgxLCAwKSk7CkBAIC0xNzYsNyArMTc2LDcg
QEAgVEVTVChXVEYsIEhhc2hlcl9tdWx0aXBsZSkKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNo
LCBjb21wdXRlSGFzaChzdGQ6Om1ha2VfcGFpcigxLCAwKSkpOwogICAgIEVYUEVDVF9FUShvbmU2
NEJpdEhhc2gsIGNvbXB1dGVIYXNoKHN0ZDo6YXJyYXk8aW50LCAyPiB7IHsgMSwgMCB9IH0pKTsK
ICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaCh7IDEsIDAgfSkpOwotICAg
IEVYUEVDVF9FUShvbmU2NEJpdEhhc2gsIGNvbXB1dGVIYXNoKE9wdGlvbmFsPGludD4geyAwIH0p
KTsKKyAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaChzdGQ6Om9wdGlvbmFs
PGludD4geyAwIH0pKTsKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaChW
ZWN0b3I8aW50PiB7IHsgMSwgMCB9IH0pKTsKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBj
b21wdXRlSGFzaChWZWN0b3I8aW50LCAxPiB7IHsgMSwgMCB9IH0pKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWFya2FibGUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWFya2FibGUuY3BwCmluZGV4IDViN2UxNTMxN2NiZmU5YjYzZGUz
OGY0YWQwNzlkZGU4NzVjNGI4MjguLjFmNmQwOTU1M2ZlNDM1MDY0OGY1YTFjYTJiZGNhZTRhMTY4
NTc3ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxl
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKQEAg
LTEyMSw0MCArMTIxLDQwIEBAIFRFU1QoV1RGX01hcmthYmxlLCBEZXN0cnVjdG9yKQogVEVTVChX
VEZfTWFya2FibGUsIEZyb21PcHRpb25hbCkKIHsKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGlu
dD4gZnJvbTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb207CiAgICAgICAgIEVYUEVD
VF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxlPGludCwg
SW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOwogICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CiAgICAg
ewotICAgICAgICBPcHRpb25hbDxpbnQ+IGZyb20geyA0MiB9OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZnJvbSB7IDQyIH07CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJv
b2w+KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRz
PGludCwgNDI+PiBvcHRpb25hbCA9IGZyb207CiAgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0
byBudWxsb3B0LgogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9u
YWwpKTsKICAgICB9CiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGZyb20geyA0MyB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQzIH07CiAgICAgICAgIEVYUEVDVF9U
UlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRl
Z3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCA9IGZyb207CiAgICAgICAgIEVY
UEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgICAgIEVYUEVDVF9F
UShvcHRpb25hbC52YWx1ZSgpLCA0Myk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8
aW50PiBmcm9tOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKICAgICAgICAgTWFya2FibGU8aW50
LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJv
bSkgfTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7
CiAgICAgfQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBmcm9tIHsgNDIgfTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb20geyA0MiB9OwogICAgICAgICBFWFBFQ1RfVFJVRShz
dGF0aWNfY2FzdDxib29sPihmcm9tKSk7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxN
YXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CiAgICAg
ICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgogICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CiAgICAgewotICAgICAgICBPcHRp
b25hbDxpbnQ+IGZyb20geyA0MyB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7
IDQzIH07CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKICAg
ICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRp
b25hbCB7IFdURk1vdmUoZnJvbSkgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8
Ym9vbD4ob3B0aW9uYWwpKTsKQEAgLTE2Nyw0MCArMTY3LDQwIEBAIFRFU1QoV1RGX01hcmthYmxl
LCBUb09wdGlvbmFsKQogICAgIHsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmth
YmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbDsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gdG8gPSBvcHRp
b25hbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CiAgICAgICAg
IEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgIH0KICAgICB7CiAgICAg
ICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9u
YWwgeyA0MiB9OwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9u
YWwpKTsKICAgICAgICAgLy8gV2UgY29udmVydCB0aGlzIHRvIG51bGxvcHQuCi0gICAgICAgIE9w
dGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRv
ID0gb3B0aW9uYWw7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykp
OwogICAgIH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRy
YWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MyB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvID0gb3B0
aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOwogICAgICAg
ICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgICAgICBFWFBFQ1RfRVEo
dG8udmFsdWUoKSwgNDMpOwogICAgIH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50
ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWw7CiAgICAgICAgIEVYUEVDVF9G
QUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+
IHRvIHsgV1RGTW92ZShvcHRpb25hbCkgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRv
IHsgV1RGTW92ZShvcHRpb25hbCkgfTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KHRvKSk7CiAgICAgfQogICAgIHsKICAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3Jh
bE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDQyIH07CiAgICAgICAgIEVYUEVD
VF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgICAgICAvLyBXZSBjb252
ZXJ0IHRoaXMgdG8gbnVsbG9wdC4KLSAgICAgICAgT3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUo
b3B0aW9uYWwpIH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0
aW9uYWwpIH07CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOwog
ICAgIH0KICAgICB7CiAgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0
czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MyB9OwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxib29sPihvcHRpb25hbCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92
ZShvcHRpb25hbCkgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShv
cHRpb25hbCkgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsK
ICAgICAgICAgRVhQRUNUX0VRKHRvLnZhbHVlKCksIDQzKTsKICAgICB9CkBAIC0yNDcsMTMgKzI0
NywxMyBAQCBURVNUKFdURl9NYXJrYWJsZSwgTW92ZU9wdGlvbmFsKQogICAgICAgICBpbnQgbV92
YWx1ZTsKICAgICB9OwogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8T25seU1vdmFibGU+IGZyb20g
eyBzdGQ6OmluX3BsYWNlLCAyMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPE9ubHlNb3ZhYmxl
PiBmcm9tIHsgc3RkOjppbl9wbGFjZSwgMjAgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGlj
X2Nhc3Q8Ym9vbD4oZnJvbSkpOwogICAgICAgICBFWFBFQ1RfRVEoZnJvbS52YWx1ZSgpLnZhbHVl
KCksIDIwKTsKICAgICAgICAgTWFya2FibGU8T25seU1vdmFibGUsIE9ubHlNb3ZhYmxlPiBjb21w
YWN0ID0gV1RGTW92ZShmcm9tKTsKICAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9v
bD4oY29tcGFjdCkpOwogICAgICAgICBFWFBFQ1RfRVEoY29tcGFjdC52YWx1ZSgpLnZhbHVlKCks
IDIwKTsKLSAgICAgICAgT3B0aW9uYWw8T25seU1vdmFibGU+IHRvID0gV1RGTW92ZShjb21wYWN0
KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPbmx5TW92YWJsZT4gdG8gPSBXVEZNb3ZlKGNvbXBh
Y3QpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPih0bykpOwogICAgICAg
ICBFWFBFQ1RfRVEodG8udmFsdWUoKS52YWx1ZSgpLCAyMCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggZmRhYmE5NDcwMzk1ZWE4MDE5ODUwZThm
YjhhZWEwOWFmZTM3YWY4Ny4uMTFmY2IxMWU5ZGMyMGIwZmVhNzczZTIwOGM2MWY5NjAyMDRlMjc4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC05MTAsNyAr
OTEwLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5P
cHRpb25hbCkKICAgICBWZWN0b3I8aW50PiB2ZWN0b3IgeyAxLCAyLCAzLCA0IH07CiAKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9y
LCBldmVuTXVsdGlwbGllZEJ5Rml2ZSkpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxpbnQ+Pjo6dmFs
dWUsCi0gICAgICAgICJXVEY6OmNvbXBhY3RNYXAgcmV0dXJucyBWZWN0b3I8UmVmPD4+IHdoZW4g
dGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5zIE9wdGlvbmFsPD4iKTsKKyAgICAgICAgIldURjo6
Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxSZWY8Pj4gd2hlbiB0aGUgbWFwcGVkIGZ1bmN0aW9u
IHJldHVybnMgc3RkOjpvcHRpb25hbDw+Iik7CiAgICAgYXV0byBtYXBwZWQgPSBXVEY6OmNvbXBh
Y3RNYXAodmVjdG9yLCBldmVuTXVsdGlwbGllZEJ5Rml2ZSk7CiAKICAgICBFWFBFQ1RfRVEoMlUs
IG1hcHBlZC5zaXplKCkpOwpAQCAtOTUzLDcgKzk1Myw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29t
cGFjdE1hcFN0YXRpY0Z1bmN0aW9uUmV0dXJuUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVj
dDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBjcmVhdGVSZWZDb3VudGVkRm9yT2RkKSks
IHR5cGVuYW1lIFdURjo6VmVjdG9yPFJlZjxSZWZDb3VudGVkT2JqZWN0Pj4+Ojp2YWx1ZSwKLSAg
ICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxpbnQ+IHdoZW4gdGhlIG1hcHBl
ZCBmdW5jdGlvbiByZXR1cm5zIE9wdGlvbmFsPGludD4iKTsKKyAgICAgICAgIldURjo6Y29tcGFj
dE1hcCByZXR1cm5zIFZlY3RvcjxpbnQ+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1cm5z
IHN0ZDo6b3B0aW9uYWw8aW50PiIpOwogICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFw
KHZlY3RvciwgY3JlYXRlUmVmQ291bnRlZEZvck9kZCk7CiAKICAgICBFWFBFQ1RfRVEoMFUsIFJl
ZkNvdW50ZWRPYmplY3Q6OnNfdG90YWxSZWZDb3VudCk7CkBAIC05NjIsNyArOTYyLDcgQEAgVEVT
VChXVEZfVmVjdG9yLCBDb21wYWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5SZWZQdHIpCiAgICAg
RVhQRUNUX0VRKDMsIG1hcHBlZFsxXS0+dmFsdWUpOwogfQogCi1PcHRpb25hbDxSZWY8UmVmQ291
bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRGb3JFdmVuKGludCBpbnB1dCkKK3N0ZDo6b3B0
aW9uYWw8UmVmPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVSZWZDb3VudGVkRm9yRXZlbihpbnQg
aW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTk4NCw3ICs5ODQsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBTdGF0aWNG
dW5jdGlvblJldHVybk9wdGlvbmFsUmVmKQogICAgIEVYUEVDVF9FUSg0LCBtYXBwZWRbMV0tPnZh
bHVlKTsKIH0KIAotT3B0aW9uYWw8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVSZWZD
b3VudGVkV2hlbkRpdmlzaWJsZUJ5VGhyZWUoaW50IGlucHV0KQorc3RkOjpvcHRpb25hbDxSZWZQ
dHI8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRXaGVuRGl2aXNpYmxlQnlUaHJl
ZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTk5OSw3ICs5OTksNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBT
dGF0aWNGdW5jdGlvblJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVj
dDo6c190b3RhbFJlZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAodmVjdG9yLCBjcmVhdGVSZWZDb3VudGVkV2hlbkRpdmlz
aWJsZUJ5VGhyZWUpKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8UmVmUHRyPFJlZkNvdW50ZWRPYmpl
Y3Q+Pj46OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJl
ZlB0cjw+PiB3aGVuIHRoZSBtYXBwZWQgZnVuY3Rpb24gcmV0dXJucyBPcHRpb25hbDxSZWZQdHI8
Pj4iKTsKKyAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxSZWZQdHI8Pj4g
d2hlbiB0aGUgbWFwcGVkIGZ1bmN0aW9uIHJldHVybnMgc3RkOjpvcHRpb25hbDxSZWZQdHI8Pj4i
KTsKICAgICBhdXRvIG1hcHBlZCA9IFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGNyZWF0ZVJlZkNv
dW50ZWRXaGVuRGl2aXNpYmxlQnlUaHJlZSk7CiAKICAgICBFWFBFQ1RfRVEoMFUsIFJlZkNvdW50
ZWRPYmplY3Q6OnNfdG90YWxSZWZDb3VudCk7CkBAIC0xMDEzLDEzICsxMDEzLDEzIEBAIFRFU1Qo
V1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsKQogewogICAgIFZlY3Rv
cjxTdHJpbmc+IHZlY3RvciB7ICJhIiwgImIiLCAiaGVsbG8iLCAiY2lhbyIsICJ3b3JsZCIsICJ3
ZWJraXQiIH07CiAKLSAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3QgU3RyaW5nJiB2YWx1ZSkg
LT4gT3B0aW9uYWw8U3RyaW5nPiB7CisgICAgYXV0byBmdW5jdGlvbiA9IFtdKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIC0+IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7CiAgICAgICAgIGlmICh2YWx1ZS5s
ZW5ndGgoKSA8IDUpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gdmFsdWUuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKICAgICB9OwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1
bmN0aW9uKSksIHR5cGVuYW1lIFdURjo6VmVjdG9yPFN0cmluZz4+Ojp2YWx1ZSwKLSAgICAgICAg
IldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3RvcjxTdHJpbmc+IHdoZW4gdGhlIG1hcHBlZCBm
dW5jdGlvbiByZXR1cm5zIE9wdGlvbmFsPFN0cmluZz4iKTsKKyAgICAgICAgIldURjo6Y29tcGFj
dE1hcCByZXR1cm5zIFZlY3RvcjxTdHJpbmc+IHdoZW4gdGhlIG1hcHBlZCBmdW5jdGlvbiByZXR1
cm5zIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiIpOwogICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21w
YWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VRKDNVLCBtYXBwZWQuc2l6
ZSgpKTsKQEAgLTEwNjAsMTQgKzEwNjAsMTQgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFw
TGFtYmRhQ29weVZlY3RvclJldHVybk9wdGlvbmFsQ291bnRlZE9iamVjdCkKIAogICAgIENvdW50
ZWRPYmplY3Q6OmNvdW50KCkgPSAwOwogCi0gICAgYXV0byBmdW5jdGlvbiA9IFtdKGNvbnN0IENv
dW50ZWRPYmplY3QmIG9iamVjdCkgLT4gT3B0aW9uYWw8Q291bnRlZE9iamVjdD4geworICAgIGF1
dG8gZnVuY3Rpb24gPSBbXShjb25zdCBDb3VudGVkT2JqZWN0JiBvYmplY3QpIC0+IHN0ZDo6b3B0
aW9uYWw8Q291bnRlZE9iamVjdD4gewogICAgICAgICBpZiAob2JqZWN0LnZhbHVlKCkgJSAyKQog
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9OwogCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoV1RGOjpj
b21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8Q291bnRl
ZE9iamVjdD4+Ojp2YWx1ZSwKLSAgICAgICAgIldURjo6Y29tcGFjdE1hcCByZXR1cm5zIFZlY3Rv
cjxDb3VudGVkT2JqZWN0PiB3aGVuIHRoZSBsYW1iZGEgcmV0dXJucyBPcHRpb25hbDxDb3VudGVk
T2JqZWN0PiIpOworICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPENvdW50
ZWRPYmplY3Q+IHdoZW4gdGhlIGxhbWJkYSByZXR1cm5zIHN0ZDo6b3B0aW9uYWw8Q291bnRlZE9i
amVjdD4iKTsKICAgICBhdXRvIG1hcHBlZCA9IFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1bmN0
aW9uKTsKIAogICAgIEVYUEVDVF9FUSgyVSwgQ291bnRlZE9iamVjdDo6Y291bnQoKSk7CkBAIC0x
MDgzLDcgKzEwODMsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVj
dG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0KQogCiAgICAgQ291bnRlZE9iamVjdDo6Y291
bnQoKSA9IDA7CiAKLSAgICBhdXRvIGZ1bmN0aW9uID0gW10oQ291bnRlZE9iamVjdCYmIG9iamVj
dCkgLT4gT3B0aW9uYWw8Q291bnRlZE9iamVjdD4geworICAgIGF1dG8gZnVuY3Rpb24gPSBbXShD
b3VudGVkT2JqZWN0JiYgb2JqZWN0KSAtPiBzdGQ6Om9wdGlvbmFsPENvdW50ZWRPYmplY3Q+IHsK
ICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSgpICUgMikKICAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKG9iamVjdCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDkxLDcgKzEw
OTEsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJu
T3B0aW9uYWxDb3VudGVkT2JqZWN0KQogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6c190b3RhbFJl
ZkNvdW50ID0gMDsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6
OmNvbXBhY3RNYXAoV1RGTW92ZSh2ZWN0b3IpLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZl
Y3RvcjxDb3VudGVkT2JqZWN0Pj46OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0TWFwIHJl
dHVybnMgVmVjdG9yPENvdW50ZWRPYmplY3Q+IHdoZW4gdGhlIGxhbWJkYSByZXR1cm5zIE9wdGlv
bmFsPENvdW50ZWRPYmplY3Q+Iik7CisgICAgICAgICJXVEY6OmNvbXBhY3RNYXAgcmV0dXJucyBW
ZWN0b3I8Q291bnRlZE9iamVjdD4gd2hlbiB0aGUgbGFtYmRhIHJldHVybnMgc3RkOjpvcHRpb25h
bDxDb3VudGVkT2JqZWN0PiIpOwogICAgIGF1dG8gbWFwcGVkID0gV1RGOjpjb21wYWN0TWFwKFdU
Rk1vdmUodmVjdG9yKSwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VRKDBVLCBDb3VudGVkT2Jq
ZWN0Ojpjb3VudCgpKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29t
cGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAgUmVmQ291bnRlZE9iamVj
dDo6c190b3RhbFJlZkNvdW50ID0gMDsKIAotICAgIGF1dG8gZnVuY3Rpb24gPSBbJl0oaW50IHZh
bHVlKSAtPiBPcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IHsKKyAgICBhdXRvIGZ1
bmN0aW9uID0gWyZdKGludCB2YWx1ZSkgLT4gc3RkOjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRl
ZE9iamVjdD4+IHsKICAgICAgICAgaWYgKCEodmFsdWUgJSAyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghKHZhbHVlICUgMykpCkBAIC0xMTY0LDcgKzEx
NjQsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFSZXR1cm5PcHRpb25hbFJl
ZlB0cikKICAgICB9OwogCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
V1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8
UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+Pj46OnZhbHVlLAotICAgICAgICAiV1RGOjpjb21wYWN0
TWFwIHJldHVybnMgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0Pj4gd2hlbiB0aGUgbGFt
YmRhIHJldHVybnMgT3B0aW9uYWw8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiIpOworICAgICAg
ICAiV1RGOjpjb21wYWN0TWFwIHJldHVybnMgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0
Pj4gd2hlbiB0aGUgbGFtYmRhIHJldHVybnMgc3RkOjpvcHRpb25hbDxSZWZQdHI8UmVmQ291bnRl
ZE9iamVjdD4+Iik7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0Pj4gbWFwcGVk
ID0gV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pOwogCiAgICAgRVhQRUNUX0VRKDBV
LCBSZWZDb3VudGVkT2JqZWN0OjpzX3RvdGFsUmVmQ291bnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ci5jcHAKaW5kZXggNzUwNTllOWUwNzJiNWZiZDcy
NzAwYmYyOGM2NDBjZGExOWVhNWI2YS4uNjE4MGQyMTk2NjU0MmMwNGY1OGI3N2RlYzc0MzUyNDU0
ZTNhNmM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0
YWluUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9jZi9SZXRhaW5Q
dHIuY3BwCkBAIC0xMzIsMTMgKzEzMiwxMyBAQCBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxSZXRh
aW5QdHJDRikKIHsKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdENGKCkuCiAgICAg
ZmxvYXQgdmFsdWUgPSAzLjE0MTU5MjY1MzU7Ci0gICAgT3B0aW9uYWw8UmV0YWluUHRyPENGTnVt
YmVyUmVmPj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIHN0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2
YWx1ZSkpOwogICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KG9wdGlvbmFsT2JqZWN0
MS52YWx1ZSgpLmdldCgpKSk7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBvYmplY3QxID0g
b3B0aW9uYWxPYmplY3QxLnZhbHVlKCk7CiAgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52
YWx1ZSgpLCBvYmplY3QxKTsKIAogICAgIC8vIFRlc3QgYXNzaWdubWVudCBmcm9tIHJldGFpblB0
cigpLgotICAgIE9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+IG9wdGlvbmFsT2JqZWN0
MiA9IHJldGFpblB0cihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGTnVt
YmVyUmVmPj4gb3B0aW9uYWxPYmplY3QyID0gcmV0YWluUHRyKENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CiAgICAgQ0ZSZWxl
YXNlKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpLmdldCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgQ0ZH
ZXRSZXRhaW5Db3VudChvcHRpb25hbE9iamVjdDIudmFsdWUoKS5nZXQoKSkpOwogICAgIFJldGFp
blB0cjxDRk51bWJlclJlZj4gb2JqZWN0MiA9IG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpOwpAQCAt
MTQ2LDcgKzE0Niw3IEBAIFRFU1QoUmV0YWluUHRyLCBPcHRpb25hbFJldGFpblB0ckNGKQogCiAg
ICAgRVhQRUNUX05FKG9iamVjdDEsIG9iamVjdDIpOwogCi0gICAgLy8gVGVzdCBhc3NpZ25tZW50
IGZyb20gT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4uCisgICAgLy8gVGVzdCBhc3Np
Z25tZW50IGZyb20gc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4KICAgICBv
cHRpb25hbE9iamVjdDEgPSBvcHRpb25hbE9iamVjdDI7CiAgICAgRVhQRUNUX1RSVUUob3B0aW9u
YWxPYmplY3QxLnZhbHVlKCkpOwogICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52YWx1
ZSgpLmdldCgpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxS
ZXRhaW5QdHJDRikKICAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVj
dDEpOwogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CiAK
LSAgICAvLyBUZXN0IG1vdmUgZnJvbSBPcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4K
KyAgICAvLyBUZXN0IG1vdmUgZnJvbSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRk51bWJlclJl
Zj4+LgogICAgIEVYUEVDVF9FUSgyLCBDRkdldFJldGFpbkNvdW50KG9iamVjdDIuZ2V0KCkpKTsK
ICAgICBvcHRpb25hbE9iamVjdDEgPSBXVEZNb3ZlKG9wdGlvbmFsT2JqZWN0Mik7CiAgICAgRVhQ
RUNUX0VRKDIsIENGR2V0UmV0YWluQ291bnQob2JqZWN0Mi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tCmluZGV4IDcyNWQyOWNmYmU5NmMy
ZTBmMDYzZjZiMjgzODIyMWIzYzNlMDkwMGYuLjE2ZWFiMTQ3ZGMwM2JhNDE5MmJlZGQ2NWU5NDE5
MGM3MzgxNjU4MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL25z
L1JldGFpblB0ci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9SZXRh
aW5QdHIubW0KQEAgLTIxNSwxMyArMjE1LDEzIEBAIFRFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdu
bWVudEZyb21TaW1pbGFyTlNUeXBlUmV2ZXJzZWQpCiBURVNUKFJldGFpblB0ciwgT3B0aW9uYWxS
ZXRhaW5QdHJOUykKIHsKICAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdE5TKCkuCi0g
ICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TT2JqZWN0Pj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRO
UyhbTlNPYmplY3QgbmV3XSk7CisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+
PiBvcHRpb25hbE9iamVjdDEgPSBhZG9wdE5TKFtOU09iamVjdCBuZXddKTsKICAgICBFWFBFQ1Rf
RVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvcHRpb25hbE9iamVjdDEudmFsdWUoKS5nZXQoKSkpOwog
ICAgIFJldGFpblB0cjxOU09iamVjdD4gb2JqZWN0MSA9IG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgp
OwogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7CiAKICAg
ICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSByZXRhaW5QdHIoKS4KLSAgICBPcHRpb25hbDxSZXRh
aW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDI7CisgICAgc3RkOjpvcHRpb25hbDxSZXRh
aW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDI7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CiAgICAgICAgIG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihbW05TT2JqZWN0IG5ld10gYXV0
b3JlbGVhc2VdKTsKICAgICB9CkBAIC0yMzEsNyArMjMxLDcgQEAgVEVTVChSZXRhaW5QdHIsIE9w
dGlvbmFsUmV0YWluUHRyTlMpCiAKICAgICBFWFBFQ1RfTkUob2JqZWN0MSwgb2JqZWN0Mik7CiAK
LSAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+
Pi4KKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxO
U09iamVjdD4+LgogICAgIG9wdGlvbmFsT2JqZWN0MSA9IG9wdGlvbmFsT2JqZWN0MjsKICAgICBF
WFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDEudmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUob3B0
aW9uYWxPYmplY3QxLnZhbHVlKCkuZ2V0KCkpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIFRFU1QoUmV0
YWluUHRyLCBPcHRpb25hbFJldGFpblB0ck5TKQogICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVj
dDEudmFsdWUoKSwgb2JqZWN0MSk7CiAgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0Mi52YWx1
ZSgpLCBvYmplY3QyKTsKIAotICAgIC8vIFRlc3QgbW92ZSBmcm9tIE9wdGlvbmFsPFJldGFpblB0
cjxOU09iamVjdD4+LgorICAgIC8vIFRlc3QgbW92ZSBmcm9tIHN0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPE5TT2JqZWN0Pj4uCiAgICAgRVhQRUNUX0VRKDIsIENGR2V0UmV0YWluQ291bnQob2JqZWN0
Mi5nZXQoKSkpOwogICAgIG9wdGlvbmFsT2JqZWN0MSA9IFdURk1vdmUob3B0aW9uYWxPYmplY3Qy
KTsKICAgICBFWFBFQ1RfRVEoMiwgQ0ZHZXRSZXRhaW5Db3VudChvYmplY3QyLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFz
a1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVU
YXNrUXVldWUuY3BwCmluZGV4IDk3NmQ2ODMyNjhmYTQyNWU1NzY3OTkwYTE1NTU2ZTllYzJiMWNh
MTUuLjhlYWJjODIyOGZkMWI4ZGM5YTRiNGQwMzdiMTVhNDA0ZGJlYTA3NWQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVl
dWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIFN5bmNU
YXNrcykKIAogICAgIGF1dG8gYmFja2dyb3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgewogICAg
ICAgICBFWFBFQ1RfRkFMU0UoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBPcHRpb25hbDxGYW5j
eVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lS
ZXNwb25zZT4oWyZdKCkgLT4gRmFuY3lSZXNwb25zZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
RmFuY3lSZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUuZW5xdWV1ZVRhc2tBbmRXYWl0PEZh
bmN5UmVzcG9uc2U+KFsmXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAgICAgY3VycmVudFN0ZXArKzsKICAgICAg
ICAgICAgIEVYUEVDVF9FUSgxLCBjdXJyZW50U3RlcCk7CkBAIC0yMDMsNyArMjAzLDcgQEAgVEVT
VChBYm9ydGFibGVUYXNrUXVldWUsIEFib3J0KQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoZmFs
c2UpOwogICAgICAgICB9KTsKICAgICAgICAgLy8gVGhpcyBjYWxsIG11c3QgcmV0dXJuIGltbWVk
aWF0ZWx5IGJlY2F1c2Ugd2UgYXJlIGFib3J0aW5nLgotICAgICAgICBPcHRpb25hbDxGYW5jeVJl
c3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNw
b25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGYW5j
eVJlc3BvbnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lS
ZXNwb25zZT4oW10oKSAtPiBGYW5jeVJlc3BvbnNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgdGFz
ayBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHJ1biB1bmRlciB0aGUgc2NoZWR1bGluZyBv
ZiB0aGlzIHRlc3QuCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CiAgICAgICAgICAg
ICByZXR1cm4gRmFuY3lSZXNwb25zZSgxMDApOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIFRFU1QoQWJv
cnRhYmxlVGFza1F1ZXVlLCBBYm9ydEJlZm9yZVN5bmNUYXNrUnVuKQogICAgIGF1dG8gYmFja2dy
b3VuZFRocmVhZEZ1bmN0aW9uID0gWyZdKCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgICAgIE9wdGlvbmFsPEZhbmN5UmVzcG9uc2U+IHJlc3BvbnNlID0g
dGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxGYW5jeVJlc3BvbnNlPihbXSgpIC0+IEZhbmN5
UmVzcG9uc2UgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZhbmN5UmVzcG9uc2U+IHJlc3BvbnNl
ID0gdGFza1F1ZXVlLmVucXVldWVUYXNrQW5kV2FpdDxGYW5jeVJlc3BvbnNlPihbXSgpIC0+IEZh
bmN5UmVzcG9uc2UgewogICAgICAgICAgICAgLy8gVGhpcyB0YXNrIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGFibGUgdG8gcnVuIHVuZGVyIHRoZSBzY2hlZHVsaW5nIG9mIHRoaXMgdGVzdC4KICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBGYW5jeVJlc3Bv
bnNlKDEwMCk7CkBAIC0yODQsNyArMjg0LDcgQEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIEFi
b3J0ZWRCeVN5bmNUYXNrSGFuZGxlcikKICAgICAgICAgY3VycmVudFN0ZXArKzsKICAgICAgICAg
RVhQRUNUX0VRKDEsIGN1cnJlbnRTdGVwKTsKIAotICAgICAgICBPcHRpb25hbDxGYW5jeVJlc3Bv
bnNlPiByZXNwb25zZSA9IHRhc2tRdWV1ZS5lbnF1ZXVlVGFza0FuZFdhaXQ8RmFuY3lSZXNwb25z
ZT4oWyZdKCkgLT4gRmFuY3lSZXNwb25zZSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RmFuY3lS
ZXNwb25zZT4gcmVzcG9uc2UgPSB0YXNrUXVldWUuZW5xdWV1ZVRhc2tBbmRXYWl0PEZhbmN5UmVz
cG9uc2U+KFsmXSgpIC0+IEZhbmN5UmVzcG9uc2UgewogICAgICAgICAgICAgY3VycmVudFN0ZXAr
KzsKICAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjdXJyZW50U3RlcCk7CiAgICAgICAgICAgICB0
YXNrUXVldWUuc3RhcnRBYm9ydGluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAppbmRleCA4MDlhOTBhYThh
Zjk1MjM1ZGVlNGU5Y2RmZjNkY2MyMmJhYjliZGQ4Li40MjYyZGU3MjY0NTNhNTM4M2M5MzNmNWQz
YTU5YzkyNTEzMGYzYzA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBURVNU
KEFuaW1hdGlvbkZyYW1lUmF0ZSwgZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCkKIFRF
U1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZUludGVydmFsV2l0aFVuc3BlY2lm
aWVkTm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKICAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1Jl
YXNvbj4gbm9UaHJvdHRsaW5nOwotICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gdW5zcGVj
aWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiB1bnNwZWNpZmllZE5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7CiAgICAgCiAgICAgYm9v
bCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMgPSBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nOwogICAgIEFTU0VSVF9FUShwcmVmZXJy
ZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVy
U2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmROZWFyNjBGUFMpLCBGdWxsU3BlZWRBbmlt
YXRpb25JbnRlcnZhbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYmM3YTg0OWFkNzRlNGE2NDM1ODgxOTQ3
OGZlNDM4MzU3MWU4NzUyYS4uMGZkZWRmZTc2YjQ3YTU3NmMyZWI4MTc3Yzg4MWJhY2UxMTAxZGM2
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0
cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
T3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3Qq
IGhhbmRsZUxvY2F0aW9uKSBmaW5hbAorICAgICAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5kbGU+
IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJv
a2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJz
ZWRDb250ZW50UmFuZ2UuY3BwCmluZGV4IDY0ZmUwMTc0MWEzODJiMTc1ZjgyODIzMjMyOWMzZmFl
ZmI0Njg5OGIuLjJlNmExNWQ0OWRlNGI2MWU3MDdmZjU3ODZkZmQzMGFjOTNkMDJhN2IgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250
ZW50UmFuZ2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgVEVTVChXZWJDb3JlLCBQYXJzZWRSZXF1
ZXN0UmFuZ2UpCiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnB1dCA6IGZhaWx1cmVDYXNlcykKICAg
ICAgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShp
bnB1dCkpOwogCi0gICAgYXV0byBjb21wYXJlID0gW10gKGNvbnN0IFN0cmluZyYgaW5wdXQsIE9w
dGlvbmFsPHNpemVfdD4gYmVnaW4sIE9wdGlvbmFsPHNpemVfdD4gZW5kKSB7CisgICAgYXV0byBj
b21wYXJlID0gW10gKGNvbnN0IFN0cmluZyYgaW5wdXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBi
ZWdpbiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGVuZCkgewogICAgICAgICBhdXRvIHJhbmdlID0g
UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCk7CiAgICAgICAgIEVYUEVDVF9ORShzdGQ6
Om51bGxvcHQsIHJhbmdlKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRUeXBlLmNwcAppbmRleCAzYzMxYTNhODAy
ZjMzZjMyMjAzZTQ1ZWY5Y2E4ZTRmMGYxNmViZGVkLi40MTM1YjIyYTlmMzcxZWQ0OWU0OWNmNzFm
NzY3YzM2YmY2YjIwNmE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvUGFyc2VkQ29udGVudFR5cGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogCiBzdGF0aWMgY29uc3QgY2hhciogc2VyaWFsaXplSWZWYWxpZChjb25zdCBT
dHJpbmcmIGlucHV0KQogewotICAgIGlmIChPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gcGFy
c2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGlucHV0KSkKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gcGFyc2VkQ29udGVudFR5cGUgPSBQ
YXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGlucHV0KSkKICAgICAgICAgcmV0dXJuIGVzY2FwZU5v
bkFTQ0lJUHJpbnRhYmxlQ2hhcmFjdGVycyhwYXJzZWRDb250ZW50VHlwZS0+c2VyaWFsaXplKCkp
OwogICAgIHJldHVybiAiTk9UVkFMSUQiOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCA0ODE4ZjNmODEzZjMyZTFiNWNlY2NjZjA4
MDk3ODk4ZmY4YWU4ODcyLi5kMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFw
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNw
cApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251
bGxwdHJ9fTsgfQotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+
IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDE2
YmYyODkyYWRkN2FhMzFkOTlhYzJiYmRhZTgyMDI1NTYyOGFiMzIuLmUyMmQyYWY2MDczNWYzMzI0
MDQ2ZjUzOGQwZjE2YzM1OWViMDM2NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNzcsOCArNzcsOCBAQCBwcml2
YXRlOgogCiBURVNUX0YoU2VjdXJpdHlPcmlnaW5UZXN0LCBTZWN1cml0eU9yaWdpbkNvbnN0cnVj
dG9ycykKIHsKLSAgICBhdXRvIG8xID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJl
eGFtcGxlLmNvbSIsIE9wdGlvbmFsPHVpbnQxNl90Pig4MCkpOwotICAgIGF1dG8gbzIgPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImV4YW1wbGUuY29tIiwgT3B0aW9uYWw8dWludDE2
X3Q+KCkpOworICAgIGF1dG8gbzEgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImV4
YW1wbGUuY29tIiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4oODApKTsKKyAgICBhdXRvIG8yID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJleGFtcGxlLmNvbSIsIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+KCkpOwogICAgIGF1dG8gbzMgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZygiaHR0cDovL2V4YW1wbGUuY29tIik7CiAgICAgYXV0byBvNCA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKCJodHRwOi8vZXhhbXBsZS5jb206ODAiKTsKICAgICBhdXRv
IG81ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksICJodHRwOi8vZXhhbXBsZS5j
b20iKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgVEVTVF9GKFNlY3VyaXR5T3JpZ2luVGVzdCwgU2Vj
dXJpdHlPcmlnaW5Db25zdHJ1Y3RvcnMpCiAgICAgRVhQRUNUX0ZBTFNFKG80LT5wb3J0KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShvNS0+cG9ydCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobzYtPnBvcnQo
KSk7Ci0gICAgRVhQRUNUX0VRKG83LT5wb3J0KCksIE9wdGlvbmFsPHVpbnQxNl90Pig4MSkpOwor
ICAgIEVYUEVDVF9FUShvNy0+cG9ydCgpLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90Pig4MSkpOwog
ICAgIEVYUEVDVF9GQUxTRShvOC0+cG9ydCgpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBF
WFBFQ1RfRkFMU0UobzktPnBvcnQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDBlMGU0
MDQ3NjY4NWI2OTI3MzMwOWE1Nzg2OGQ3ZTZhZmQyOTllZmEuLmY2NWUwZDAwNGU1NWNjOGYzOTI5
OWRmOTE4ZDJhNmI4NDdmZDdiMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC04Nyw3ICs4
Nyw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJZGVudGlmaWVy
ID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdDbGllbnQgOiBw
dWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwg
c2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAgICBzdGQ6Om9wdGlvbmFs
PEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAogICAgIHsKICAgICAgICAg
RVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbQppbmRleCA0NGFiODRiZmI5N2NmOTgzZDU3OGQzMzhhMTgxNWFmMjQ4YjE2ZGQ0
Li4wMmZiY2JkMWRhMGI3Y2FmODZkN2FmNGZkNjJmNjFmM2Q1NjA3MGM0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTE3MTAs
NyArMTcxMCw3IEBAIFRFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKIAogVEVTVChX
S0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQogewotICAgIE9wdGlvbmFs
PFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rpb247CisgICAgc3RkOjpv
cHRpb25hbDxUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOwogICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlv
bl0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQppbmRleCA2MTExZjZiMzY3YWMzNjZhMzUyZGNmNjU2OWQzYjkyYjgw
NGI1MTRlLi5iMjkzOGU3M2M2ZjZhZTY2NmY3YjBmZjM3OWM2MzhlYzgzZGRjMWExIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTExMTEsOCArMTExMSw4IEBAIFRFU1QoVVJMU2NoZW1l
SGFuZGxlciwgTG9hZHNGcm9tTmV0d29yaykKICAgICAgICAgY29ubmVjdGlvbi53ZWJTb2NrZXRI
YW5kc2hha2UoKTsKICAgICB9KTsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRTdWNjZXNzOwot
ICAgIE9wdGlvbmFsPGJvb2w+IHdlYlNvY2tldFN1Y2Nlc3M7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBsb2FkU3VjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdlYlNvY2tldFN1Y2Nl
c3M7CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKQEAgLTEyMDIsNyArMTIwMiw3IEBAIFRFU1Qo
VVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0c1JlZGlyZWN0KQogICAgICAgICB9
fX0sCiAgICAgfSk7CiAKLSAgICBPcHRpb25hbDxib29sPiBsb2FkU3VjY2VzczsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGxvYWRTdWNjZXNzOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogCiAg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQ
b2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZVBvbGljaWVzLm1tCmluZGV4IDY2NGQ5NTczYWJkZTkyMDcxM2ZkOWRmMGJlNTdlZTU2MDQzYjE5
NjUuLjU4MjUwYjZmN2QyYzc0NTQ0ZWIwMGI1M2QzNmNlNzI1MWJmYWVjMzIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGlj
aWVzLm1tCkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyBib29sIGRvbmVDb21waWxpbmc7CiBzdGF0
aWMgYm9vbCByZWNlaXZlZEFsZXJ0Owogc3RhdGljIGJvb2wgZmluaXNoZWROYXZpZ2F0aW9uOwog
Ci1zdGF0aWMgT3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudD4gcmVjZWl2ZWRBdXRvcGxheUV2ZW50
Owotc3RhdGljIE9wdGlvbmFsPF9XS0F1dG9wbGF5RXZlbnRGbGFncz4gcmVjZWl2ZWRBdXRvcGxh
eUV2ZW50RmxhZ3M7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50PiByZWNl
aXZlZEF1dG9wbGF5RXZlbnQ7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50
RmxhZ3M+IHJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzOwogCiBzdGF0aWMgc2l6ZV90IGFsZXJ0
Q291bnQ7CiAKQEAgLTY1NSw3ICs2NTUsNyBAQCBzdHJ1Y3QgUGFyc2VkUmFuZ2UgewogICAgICAg
ICBpZiAobWluIDw9IG1heCkKICAgICAgICAgICAgIHJhbmdlID0gc3RkOjptYWtlX3BhaXIobWlu
LCBtYXgpOwogICAgIH0KLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+PiBy
YW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4+IHJhbmdl
OwogfTsKIAogQGludGVyZmFjZSBUZXN0U2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNj
aGVtZUhhbmRsZXI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWJlMGI4NzAy
ZGIxN2JlZmM5NDk1ZGZjODYyMjJmNzNiYzkyMGQ1Ni4uZWE4ZDdmMDNkZDQzYzVkN2Y0ZTU5NjI2
NzIyMGRiMGMzNTFlYjcxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMzMs
MTAgKzMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgZG91YmxlIGxvbmdpdHVkZSB7IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKICAgICAgICAgZG91YmxlIGFjY3Vy
YWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAg
ICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
YWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOwotICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYWx0aXR1ZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3Vy
YWN5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZzsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHNwZWVkOwogICAgIH07CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
c3RhcnRDYWxsYmFjayhXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIsIEdlb2xvY2F0
aW9uVGVzdCogdGVzdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5kZXgg
YjkyODYyYTc2MDczNWU0YzUxOGZmYzk5Nzc3YmM1MTdkYzY3NjcwYy4uNWIwZGU4Y2M0NGIwOWRh
YzVkZjQ0MGNkMjc2NzY3MWQwMTdlNzAzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUHJvdG9j
b2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUywgSHR0cDIgfTsK
ICAgICB1c2luZyBDZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9j
b2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVf
dCk+OwogCi0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0
cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmlj
YXRlVmVyaWZpZXImJiA9IG51bGxwdHIsIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4mJiA9IG51
bGxwdHIsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0geyB9KTsKKyAgICBIVFRQU2VydmVyKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJv
dG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgQ2VydGlmaWNhdGVWZXJpZmllciYmID0gbnVsbHB0ciwg
UmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiYmID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gcG9ydCA9IHsgfSk7CiAgICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rp
b24pPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwog
ICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgcGFyc2VQYXRoKGNvbnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCk7CiAK
IHByaXZhdGU6Ci0gICAgc3RhdGljIFJldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IGxpc3RlbmVy
UGFyYW1ldGVycyhQcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYmLCBSZXRhaW5QdHI8U2Vj
SWRlbnRpdHlSZWY+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KTsKKyAgICBzdGF0aWMgUmV0
YWluUHRyPG53X3BhcmFtZXRlcnNfdD4gbGlzdGVuZXJQYXJhbWV0ZXJzKFByb3RvY29sLCBDZXJ0
aWZpY2F0ZVZlcmlmaWVyJiYsIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4mJiwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCk7CiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMo
Q29ubmVjdGlvbiwgUmVmPFJlcXVlc3REYXRhPik7CiAKICAgICBSZWY8UmVxdWVzdERhdGE+IG1f
cmVxdWVzdERhdGE7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXgg
Nzk2ZmEwMWVjNzY5Yjc0ZGYyOTZmNzAzMDJkZjZlNDQzOGNkYzk1Mi4uZTlkYmFhMTNiNGEyNTg3
NzJkYzY1MjYxYjJiMWZiMjVhNmM4YzE3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5tbQpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6UmVxdWVzdERh
dGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVxdWVzdERhdGEsIFdURjo6RAogICAg
IFZlY3RvcjxDb25uZWN0aW9uPiBjb25uZWN0aW9uczsKIH07CiAKLVJldGFpblB0cjxud19wYXJh
bWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6Omxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCBwcm90b2Nv
bCwgQ2VydGlmaWNhdGVWZXJpZmllciYmIHZlcmlmaWVyLCBSZXRhaW5QdHI8U2VjSWRlbnRpdHlS
ZWY+JiYgY3VzdG9tVGVzdElkZW50aXR5LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKK1JldGFp
blB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6Omxpc3RlbmVyUGFyYW1ldGVycyhQcm90
b2NvbCBwcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYmIHZlcmlmaWVyLCBSZXRhaW5QdHI8
U2VjSWRlbnRpdHlSZWY+JiYgY3VzdG9tVGVzdElkZW50aXR5LCBzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0KQogewogICAgIGlmIChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cCAmJiAhY3Vz
dG9tVGVzdElkZW50aXR5KQogICAgICAgICBjdXN0b21UZXN0SWRlbnRpdHkgPSB0ZXN0SWRlbnRp
dHkoKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEhUVFBTZXJ2ZXI6OmNhbmNlbCgpCiAgICAg
ICAgIGNvbm5lY3Rpb24uY2FuY2VsKCk7CiB9CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3Rk
Ojppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3Bv
bnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllciwg
UmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiYmIGlkZW50aXR5LCBPcHRpb25hbDx1aW50MTZfdD4g
cG9ydCkKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2ws
IENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllciwgUmV0YWluUHRyPFNlY0lkZW50aXR5UmVm
PiYmIGlkZW50aXR5LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgIDogbV9yZXF1
ZXN0RGF0YShhZG9wdFJlZigqbmV3IFJlcXVlc3REYXRhKHJlc3BvbnNlcykpKQogICAgICwgbV9s
aXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJv
dG9jb2wsIFdURk1vdmUodmVyaWZpZXIpLCBXVEZNb3ZlKGlkZW50aXR5KSwgcG9ydCkuZ2V0KCkp
KSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQuaAppbmRleCA2MzlmNmEwZmE2NmU4YTRmMmNiMmJjMDJkYTQwZWRl
NjgyNTgwMmFmLi40ZDcwN2ZjNzA2ODQ5YzgyZjFjZjJjOWE1ODVmYzY3ZmY4ZTA3NTdiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTY4LDggKzY4
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXN0UERGUGFnZShQREZQYWdlICopOwogICAg
IFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQREZB
bm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPFN0cmluZz4g
bV90ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hpdGVzcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxUZXN0UERGQW5ub3RhdGlvbj4+IG1fYW5ub3RhdGlvbnM7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbV90ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hpdGVzcGFjZTsKIH07
CiAKIGNsYXNzIFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1
bWVudD4gewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29u
dGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9k
ZS5tbQppbmRleCA5NmYyNDU1NjUyN2FmNjkzMmE0ZmExNThmNzRhN2Y0ODkwNDc5NGQ5Li5mMjJj
MzcyMjc5Njk0NGI1NmZhZjQ1YzgwNTBkNzQ0ZGI4NmEyOWY0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBA
IEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoT3B0aW9uYWw8V0tDb250
ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBPcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Vmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3RpbmcoT3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2Rl
ID0geyB9LCBPcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsg
IlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQor
c3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZp
Z2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJU
ZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsK
ICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRN
b2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RpY3Rpb25h
cnlGdW5jdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9u
cy5oCmluZGV4IDg0YzlkOTEzMTkxMWViNjc3MTY4MjY3NDVmYmNlZGJhYWVhN2Q3YmEuLjE1YmZh
NzNhZWE4YzYwZjAwMDFjYWYwYmRiYjIyMjkwMjE4OWNjOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIGJvb2wgYm9v
bGVhblZhbHVlKFdLVHlwZVJlZik7CiBib29sIGJvb2xlYW5WYWx1ZShjb25zdCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+Jik7CiAKIGRvdWJsZSBkb3VibGVWYWx1ZShXS1R5cGVSZWYpOwotT3B0aW9u
YWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZhbHVlKFdLVHlwZVJlZik7CitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS1R5cGVSZWYpOwogCiBXS1N0cmluZ1JlZiBz
dHJpbmdWYWx1ZShXS1R5cGVSZWYpOwogV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoV0tUeXBlUmVm
KTsKQEAgLTUwLDcgKzUwLDcgQEAgZG91YmxlIGRvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwg
Y29uc3QgY2hhcioga2V5KTsKIFdLU3RyaW5nUmVmIHN0cmluZ1ZhbHVlKFdLRGljdGlvbmFyeVJl
ZiwgY29uc3QgY2hhcioga2V5KTsKIHVpbnQ2NF90IHVpbnQ2NFZhbHVlKFdLRGljdGlvbmFyeVJl
ZiwgY29uc3QgY2hhcioga2V5KTsKIAotT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbERvdWJsZVZh
bHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5KTsKK3N0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBvcHRpb25hbERvdWJsZVZhbHVlKFdLRGljdGlvbmFyeVJlZiwgY29uc3QgY2hhcioga2V5
KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0
cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgY29uc3QgV0tSZXRh
aW5QdHI8VD4mIHZhbHVlKTsKIHZvaWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5QdHI8V0tNdXRh
YmxlRGljdGlvbmFyeVJlZj4mLCBjb25zdCBjaGFyKiBrZXksIGJvb2wgdmFsdWUpOwpAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rp
b25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBkb3VibAogdm9pZCBzZXRWYWx1ZShjb25zdCBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgV0tT
dHJpbmdSZWYgdmFsdWUpOwogdm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFi
bGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwog
dm9pZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYs
IGNvbnN0IGNoYXIqIGtleSwgY29uc3QgV1RGOjpTdHJpbmcmIHZhbHVlKTsKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlv
bmFyeVJlZj4mLCBjb25zdCBjaGFyKiBrZXksIGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFQ+JiB2YWx1ZSk7CiB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURp
Y3Rpb25hcnlSZWY+JiwgY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpID0gZGVsZXRlOwogdm9p
ZCBzZXRWYWx1ZShjb25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNv
bnN0IGNoYXIqIGtleSwgdW5zaWduZWQgdmFsdWUpID0gZGVsZXRlOwogdm9pZCBzZXRWYWx1ZShj
b25zdCBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiYsIGNvbnN0IGNoYXIqIGtl
eSwgY29uc3Qgdm9pZCogdmFsdWUpID0gZGVsZXRlOwpAQCAtODUsNyArODUsNyBAQCBpbmxpbmUg
ZG91YmxlIGRvdWJsZVZhbHVlKFdLVHlwZVJlZiB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYg
V0tHZXRUeXBlSUQodmFsdWUpID09IFdLRG91YmxlR2V0VHlwZUlEKCkgPyBXS0RvdWJsZUdldFZh
bHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPih2YWx1ZSkpIDogMDsKIH0KIAotaW5saW5lIE9w
dGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS1R5cGVSZWYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tUeXBlUmVmIHZh
bHVlKQogewogICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEb3Vi
bGVHZXRUeXBlSUQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChXS0RvdWJsZUdldFZhbHVlKHN0YXRp
Y19jYXN0PFdLRG91YmxlUmVmPih2YWx1ZSkpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KQEAgLTEzNSw3
ICsxMzUsNyBAQCBpbmxpbmUgdWludDY0X3QgdWludDY0VmFsdWUoV0tEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKICAgICByZXR1cm4gdWludDY0VmFsdWUodmFsdWUo
ZGljdGlvbmFyeSwga2V5KSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxkb3VibGU+IG9wdGlvbmFs
RG91YmxlVmFsdWUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3B0aW9uYWxEb3VibGVWYWx1ZShXS0RpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSwgY29uc3QgY2hhcioga2V5KQogewogICAgIHJldHVybiBvcHRp
b25hbERvdWJsZVZhbHVlKHZhbHVlKGRpY3Rpb25hcnksIGtleSkpOwogfQpAQCAtMTgwLDcgKzE4
MCw3IEBAIGlubGluZSB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURp
Y3Rpb25hcnlSZWY+JiBkaWN0aW9uYXJ5LCBjb25zCiAgICAgc2V0VmFsdWUoZGljdGlvbmFyeSwg
a2V5LCBhZG9wdFdLKFdLRG91YmxlQ3JlYXRlKHZhbHVlKSkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIHNldFZhbHVlKGNvbnN0IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+JiBkaWN0aW9uYXJ5LCBjb25zdCBjaGFyKiBrZXksIGNvbnN0IE9wdGlvbmFsPFQ+JiB2
YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2V0VmFsdWUoY29uc3QgV0tSZXRhaW5Q
dHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4mIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlKQogICAgICAg
ICBzZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXksICp2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggOWJmNjMzODRhZTI3ZGIy
OGM1ZjU0MDU2ODViODhmNzViZWQ3YjUxNi4uOGU3OWZkNTZjMjVjNDEwNzdmMzViYjU0NTgxNGU4
MDE2MmU2YjU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlv
blByb3ZpZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Q
cm92aWRlck1vY2suaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Q
cm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92aWRlck1vY2so
KTsKIAotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9wdGlvbmFs
PGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBPcHRp
b25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGFsdGl0dWRlQWNjdXJhY3ksIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmbG9vckxl
dmVsKTsKICAgICB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXS1N0cmluZ1JlZiBl
cnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKFdLR2VvbG9jYXRpb25NYW5h
Z2VyUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKaW5kZXggNzgx
ODJlZTkwYzRlMjc5NzU2ZmM2OTU4YTQxMmUxY2FiMjQwZTI2MC4uMjE5NGNhM2UwYjg3NTc0ZTFi
OGM4Mjc0ZmYxNGY1Y2E4NWYyYjEzNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlLmgKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIGJvb2wgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZTo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKICNlbmRp
ZgogICAgIAogI2lmZGVmIF9fT0JKQ19fCi1pbmxpbmUgT3B0aW9uYWw8UmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+PiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4qLCBpZCByYW5nZSkgeyByZXR1cm4geyB7IEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZShyYW5nZSkgfSB9OyB9CitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4+IG1ha2VWZWN0
b3JFbGVtZW50KGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiosIGlk
IHJhbmdlKSB7IHJldHVybiB7IHsgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRl
KHJhbmdlKSB9IH07IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKaW5kZXggY2FjNjE4MjZlYmFmODJlMzZlNmY3OTg5NTc2N2U0MzcyY2Q1
Yjg5NS4uYWQ2MzEzYjA1MzM5ZTE1ZmZhNTc1ZDcxZjkyNDc4ZmRmMjgzZmYyMCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTQxMyw3ICs0MTMsNyBAQCBwcml2YXRlOgogfTsKICAg
ICAKICNpZmRlZiBfX09CSkNfXwotaW5saW5lIE9wdGlvbmFsPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+KiwgaWQgZWxlbWVudCkgeyByZXR1cm4geyB7IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSB9IH07IH0KICNlbmRpZgogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA2MTBlMjI0MzA0NWU4ZWJmMTFkMjU3
MmUyYjEzZmE4NTAwODdkY2YxLi42N2IzNTNmMzAwZmZiZjY1ZDM0NDZjMmU0ZDgyMTIwNWU2M2Ux
N2E3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGVuYWJsZWQpCiAgICAgcG9zdFBh
Z2VNZXNzYWdlKCJTZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShlbmFibGVkKSkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRp
dHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4g
c3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gaGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZmxvb3JMZXZlbCkKIHsKICAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSk7CiAgICAgc2V0VmFsdWUoYm9keSwgImxhdGl0dWRlIiwgbGF0aXR1
ZGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oCmluZGV4IGJmNzE1NTNiNzVlYzg2NjM4ODIwZWYzMWEzNGUyZmY3Nzc1
MjQ4M2IuLjM1OWQ4OTY3Y2Y5YzBhMzM3NjcyNTIzMWRjMGY2MjFmMTVlMWUyMWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAg
ICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91Ymxl
PiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRv
dWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhl
YWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGZsb29yTGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKFdLU3RyaW5nUmVmIGVycm9yTWVzc2FnZSk7CiAgICAgYm9vbCBpc0dlb2xvY2F0
aW9uUHJvdmlkZXJBY3RpdmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNGM1MDk4ZGU1N2U0ZjAy
YzgwODkyYTZiYzExZTBiZjU5N2NlMjViNC4uM2I5NWZkZTJlM2RhOTI4ZTExYWE1NDk0MzcxY2M0
YjFmYWNiY2I2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBUZXN0UnVubmVy
OjpleGVjQ29tbWFuZChKU1N0cmluZ1JlZiBuYW1lLCBKU1N0cmluZ1JlZiBzaG93VUksIEpTU3Ry
aW5nUmVmIHYKICAgICBXS0J1bmRsZVBhZ2VFeGVjdXRlRWRpdGluZ0NvbW1hbmQocGFnZSgpLCB0
b1dLKG5hbWUpLmdldCgpLCB0b1dLKHZhbHVlKS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxXS0ZpbmRPcHRpb25zPiBmaW5kT3B0aW9uc0Zyb21BcnJheShKU1ZhbHVlUmVmIG9wdGlvbnNB
cnJheUFzVmFsdWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXS0ZpbmRPcHRpb25zPiBmaW5kT3B0
aW9uc0Zyb21BcnJheShKU1ZhbHVlUmVmIG9wdGlvbnNBcnJheUFzVmFsdWUpCiB7CiAgICAgYXV0
byBjb250ZXh0ID0gbWFpbkZyYW1lSlNDb250ZXh0KCk7CiAgICAgYXV0byBvcHRpb25zQXJyYXkg
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgb3B0aW9uc0FycmF5QXNWYWx1ZSwgbnVsbHB0cik7
CkBAIC04NTksNyArODU5LDcgQEAgYm9vbCBUZXN0UnVubmVyOjppc0dlb2xvY2F0aW9uUHJvdmlk
ZXJBY3RpdmUoKQogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuaXNHZW9s
b2NhdGlvblByb3ZpZGVyQWN0aXZlKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4g
YWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nLCBPcHRpb25hbDxkb3Vi
bGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCit2b2lkIFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gaGVhZGluZywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gZmxvb3JMZXZlbCkKIHsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFs
dGl0dWRlLCBhbHRpdHVkZUFjY3VyYWN5LCBoZWFkaW5nLCBzcGVlZCwgZmxvb3JMZXZlbCk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IDYzMzE4YzZhNzVhNmQ4YTM4ZWE3ZDI1ODcxZTM2NTQ5MDc5Mzk3NWUuLjFiZTY2
M2Q4ZWQ4MWMzOTBjMWQ4YjljNmNiNjEwMGRiYTg0NTE0MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0yOTAsNyArMjkw
LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0
aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlv
bmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0
aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5n
UmVmIG1lc3NhZ2UpOwogICAgIGJvb2wgaXNHZW9sb2NhdGlvblByb3ZpZGVyQWN0aXZlKCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTgxNzczYzQ1
MTgwZDRkMTUyNDNiYThlMmQwNzY1Yzk4NzdlNGZjOC4uY2ZjOWM0NDgzYzgyNWQ5MTNlZDI3YTRk
NTU4ODRmMjQyZDc2ZjAwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTIyNDksNyArMjI0OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihib29sIGVuYWJsZWQpCiAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGUsIE9w
dGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5n
LCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVl
ZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29yTGV2ZWwpCiB7CiAgICAgbV9nZW9sb2NhdGlv
blByb3ZpZGVyLT5zZXRQb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgYWx0
aXR1ZGUsIGFsdGl0dWRlQWNjdXJhY3ksIGhlYWRpbmcsIHNwZWVkLCBmbG9vckxldmVsKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBjMTQ5NWEyMDBiZmI4
N2Y0ZDYxZTdjZWMzOWQ5M2FmMTEyYWUxYzBjLi5iYzBlYzUyNjkzNDczNjFjMzE1ZTZlNGQwN2Ri
ODFhYmI2YjQ3YzZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9p
ZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRp
dHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4g
c3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CisgICAgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZsb29y
TGV2ZWwpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKFdLU3RyaW5nUmVmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBoYW5kbGVHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAg
ICAgYm9vbCBpc0dlb2xvY2F0aW9uUHJvdmlkZXJBY3RpdmUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMWU0YjI2MDFi
ZTkzNGMxYjVmOTQ5OWMxNTQ5ZDg1ZjFmOGJhOWE5Yy4uMDQ1YWZhNzhlODFhMzk5MGM5NzJjZDY2
NmExODI3MTg4ODQ4NmNhYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
SElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElE
RXZlbnRHZW5lcmF0b3IubW0KQEAgLTgyNCw3ICs4MjQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKE5TU3RyaW5nICprZXkpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGtleUNvZGVG
b3JET01GdW5jdGlvbktleShOU1N0cmluZyAqa2V5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0cmluZyAqa2V5KQogewogICAgIC8v
IENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVm
aW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgogICAgIC8vIElmIHRo
ZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4g
T24gaU9TIHRoZSBrZXkgY29kZXMgZm9yIHRoZSBmaXJzdCAxMgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaAppbmRleCBiN2JmNzcyNDVl
NDkyYTkxMjMzMTE2YjcyZWRmZGI0NTM0OTU2YzIwLi45ODA3OTQ5NTQ0NTE2YzgwNDQxNDJlNjc0
N2Q5MWU4Y2Q5NGY4ZDE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MuaApAQCAtMTA2LDggKzEwNiw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKEpTU3RyaW5nUmVmIG5ld1N0cmluZywgSlNTdHJpbmdS
ZWYgb2xkU3RyaW5nLCBKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBkb3VibGUgbWluaW11bVpv
b21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBtYXhpbXVtWm9vbVNjYWxlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25h
bDxib29sPiBvdmVycmlkZVZhbHVlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN0YWJs
ZVN0YXRlT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKSBvdmVycmlk
ZTsKICAgICBKU09iamVjdFJlZiBjb250ZW50VmlzaWJsZVJlY3QoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBKU09iamVjdFJlZiB0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIEpTT2JqZWN0UmVmIHRleHRTZWxlY3Rpb25DYXJldFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQppbmRleCBiY2Y0YmJjNjUzZTYzM2ExNWU0MTFmZjExNzg1OGU4NzJhNzk4ODI5Li5h
ZGFlMzAyMTc4NDJmNmVmZDRkZDZhOWJmNTE3YTNjNzI3NzFiMGU1IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC03NTIs
NyArNzUyLDcgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWF4aW11bVpvb21TY2Fs
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYlZpZXcoKS5zY3JvbGxWaWV3Lm1heGltdW1ab29tU2Nh
bGU7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c3RhYmxlU3Rh
dGVPdmVycmlkZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxl
cklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2Vi
VmlldyAqd2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKICAgICBpZiAod2ViVmlldy5fc3RhYmxl
U3RhdGVPdmVycmlkZSkKQEAgLTc2MSw3ICs3NjEsNyBAQCBPcHRpb25hbDxib29sPiBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRTdGFibGVT
dGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCit2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcklPUzo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+
IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHRo
aXMtPndlYlZpZXcoKTsKICAgICBpZiAob3ZlcnJpZGVWYWx1ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>